2011-12-27 8 views
1

Archetypes Folderを作成し、Titleフィールドに "My Folder"を入力すると、ID(略称)が "my-folder"として正規化されます。これは一般的に良いです。しかし、私は、アイテムが特定のフォルダや特定のフォルダのアイテム、または特定のタイプのアイテムから、レターケースを予約するようにします。ベストプラクティスは何ですか?Ploneノーマライザとレターケース

また、「MyFile.pdf」という名前のファイルをアップロードするだけで、「ファイル」(または「イメージ」)が追加されます。IDは「MyFile.pdf」になります。この場合、ノーマライザは何もしませんか?

最後に、collective.quickuploadを使用して「MyFile.pdf」という名前のファイルをアップロードすると、IDは「myfile.pdf」として正規化されます。予約された大文字小文字の場合、ここでベストプラクティスは何ですか?

答えて

2

アーキタイプは、作成時にIDを作成するためにgenerateNewIdメソッドを使用します。独自のタイプでこれをオーバーライドすることができます。場合

try: 
    from plone.i18n.normalizer.interfaces import IUserPreferredURLNormalizer 
    from plone.i18n.normalizer.interfaces import IURLNormalizer 
    URL_NORMALIZER = True 
except ImportError: 
    URL_NORMALIZER = False 

class BaseObject(Referenceable): 

    # ... 

    def generateNewId(self): 
     """Suggest an id for this object. 
     This id is used when automatically renaming an object after creation. 
     """ 
     title = self.Title() 
     # Can't work w/o a title 
     if not title: 
      return None 

     # Don't do anything without the plone.i18n package 
     if not URL_NORMALIZER: 
      return None 

     if not isinstance(title, unicode): 
      charset = self.getCharset() 
      title = unicode(title, charset) 

     request = getattr(self, 'REQUEST', None) 
     if request is not None: 
      return IUserPreferredURLNormalizer(request).normalize(title) 

     return queryUtility(IURLNormalizer).normalize(title) 

あなたが見ることができるように(要求が利用可能な場合)、デフォルトの実装がIUserPreferredURLNormalizerアダプタに延期とIURLNormalizerユーティリティ:ここではデフォルトの実装では、あなたは動作するようになっているか確認できるようですそうではない。これらの実装を独自に実装することもできます。これらの仕組みの詳細については、plone.18n.normalizer package on GitHubを参照してください。あなたはそれらとタイプや場所を区別することはできません。

敏捷含有量が同じplone.i18nインフラストラクチャを使用するためのplone.app.contentパッケージprovides an implementation、代わりINameChooserインターフェースを使用します。

0

通常のタイプ(フォルダとページ)では、ファイル名がそのまま使用されるファイルの種類(ファイルと画像)がサイトでの可読性と一貫性を保証するために正規化が常に行われます。

いずれにしても、いつでもActions - >Renameに移動し、タイトルとIDを変更できます。

関連する問題