Metadata-Version: 1.1
Name: collective.plonefinder
Version: 1.0.6
Summary: A finder to search/select portal objects for Plone
Home-page: http://www.alterway.fr
Author: Jean-mat Grimaldi / Alter Way Solutions
Author-email: support@ingeniweb.com
License: GPL
Description: ======================
        collective.plonefinder
        ======================
        
        Ajax popup to browse and select plone contents, suitable to any
        ``plone.formilb`` form (portlets, control panels, ...)
        
        This code is an extraction with some refactoring, of PloneArticle explorer used
        for referencables proxies.
        
        The intent is to make it usable in various situations:
        
        - to store selected contents in ``plone.formlib`` based Plone forms (portlet or
          control panel forms as example)
        
        - for ``collective.ckeditor`` or any possible wysiwyg editor for referencing
          images or contents inside a rich text field, it's also possible to upload
          files / images and create folders with this product (dependency to
          ``collective.quickupload``)
        
        - for referencable fields inside AT edit forms (future)
        
        - for links fields (as remoteUrl in ATLink) to reference internal links (future)
        
        This work has been started at Ingeniweb in 2007 by Christophe Bosse (for the
        jQuery code) and Jean-Mat Grimaldi (everything else) for PloneArticle product.
        
        .. admonition::
           Plone add-ons developers only
        
           This is a component for Plone add-ons developers. Do not expect to add
           anything more in yous site if you install only this component to your Zope
           instance.
        
        Requirements
        ============
        
        * Plone (tested with Plone 3.3.5 and Plone 4)
        * collective.quickupload
        
        Installation
        ============
        
        * Nothing to do if you have installed ``collective.ckeditor`` (Plone 4 only
          today)
        
        * Otherwise install it as any Zope package using buildout :
        
          - add ``collective.plonefinder`` in your ``eggs`` section
        
          - add ``collective.plonefinder`` in your ``zcml`` section of the
            ``plone.recipe.zope2instance`` part definition if on Plone 3.0 or 3.1
        
          - Run ``bin/buildout``
        
        Nothing else.
        
        How to use it as a reference widget in formlib forms
        ====================================================
        
        Basic usage
        -----------
        
        A reference widget for zope3 forms (zope.app.form) is provided with this product.
        
        The widget can be used to store objects references in a sequence field.
        
        Example of use in a portlet form for a Tuple field named target_contents::
        
            from collective.plonefinder.widgets.referencewidget import FinderSelectWidget
        
            target_contents = schema.Tuple(title=u"Browse for contents",
                                           description=(u"Choose contents to display "
                                                        u"with a plone finder window."),
                                           default=()
                                           )
        
            form_fields['target_contents'].custom_widget = FinderSelectWidget
        
        Tweaking some properties
        ------------------------
        
        You can use the ``FinderSelectWidget`` with some properties set using the update
        method in your ``AddForm`` or ``EditForm``. In example for a portlet ``AddForm``::
        
            class AddForm(base.AddForm):
                """Portlet add form.
                """
                form_fields = form.Fields(IReferencesPortlet)
                form_fields['targets'].custom_widget = FinderSelectWidget
                label = u"Add References Portlet"
        
                def update(self):
                    super(AddForm, self).update()
                    self.widgets['targets'].typeview = 'image'
                    self.widgets['targets'].forcecloseoninsert = 1
        
                def create(self, data):
                    return Assignment(**data)
        
        If you want, you can also pass a context as base for the widget, to get the
        current or parent folder open in the finder. Example in a portlet using the
        ``update`` method::
        
                assignment = aq_parent(aq_inner(self.context))
                self.widgets['targets'].base = aq_parent(aq_inner(assignment))
        
        There are also two customized widgets for files and images. Look at the code to
        create your own specific widget.
        
        Example of code for files referencing with files upload support::
        
            from collective.plonefinder.widgets.referencewidget import FinderSelectFileWidget
        
            target_files = schema.Tuple(title=u"Browse for images",
                                        description=(u"Choose files to display "
                                                     u"with a plone finder window. "
                                                     u"You can upload new files."),
                                        default=()
                                        )
        
            form_fields['target_files'].custom_widget = FinderSelectFileWidget
        
        Example of code for images referencing with images upload support::
        
            from collective.plonefinder.widgets.referencewidget import FinderSelectImageWidget
        
            target_images = schema.Tuple (title=u"Browse for images",
                                          description=(u"Choose images to display "
                                                       u"with a plone finder window. "
                                                       u"You can select different image sizes. "
                                                       u"You can upload new images."),
                                          default= ()
                                          )
        
            form_fields['target_images'].custom_widget = FinderSelectImageWidget
        
        Note that in this last case the data store image uid and image thumb size like
        this::
        
            '%s/%s' % (image.UID(), thumb_size_extension)
        
        ``thumb_size_extension`` could be ``'image_thumb'`` or ``'image_preview'`` ...
        
        So use something like this to display a referenced image::
        
            uid, variant = data.split('/')
            '<img src="%s/resolveuid/%s/%s" />' % (portal_url, uid, variant)
        
        Full list of customization attributes
        -------------------------------------
        
        .. list-table::
           :widths: 20 20 60
           :header-rows: 1
        
           * - Attribute
             - Default value
             - Description
           * - ``finderlabel``
             - ``_(u'Browse for contents')``
             - Customize the title of the Browser window. i.e. ``"Find the pictures"``
           * - ``moveuplabel``
             - ``_(u'Move up')``
             - Label associated with the up arrow widget that raises the order of the
               reference. i.e. ``"Increase priority"``.
           * - ``movedownlabel``
             - ``_(u'Move down')``
             - Label associated with the down arrow widget that lowers the order of the
               reference. i.e. ``"Decrease priority"``.
           * - ``deleteentrylabel``
             - ``_(u'Remove item')``
             - Label associated with the "Remove from list" widget. i.e. ``"Remove this
               video"``.
           * - ``types``
             - ``() # All types``
             - List of selectable portal types to show in the selection
               panel. i.e. ``['Document']``
           * - ``typeview``
             - ``'file'``
             - Possible values are ``'file'``, ``'image'`` and ``'selection'``. Tuning
               on selection panel layout.
           * - ``imagetypes``
             - ``('Image', 'News Item')``
             - Sequence of portal types that can handle images (see `Todo`_)
           * - ``selectiontype``
             - ``'uid'``
             - Selected items are returned to the application (form) as UIDs. Other
               possible value is ``'url'``.
           * - ``allowupload``
             - ``False``
             - Do we enable upload files through our widget if the user has appropriate
               permission? See `Uploadding in custom folderish type`_
           * - ``allowaddfolder``
             - ``False``
             - Do we enable adding new folders through our widget if the user has
               appropriate permission?
           * - ``allowimagesizeselection``
             - ``False``
             - If the image has multiple sizes, do we enable the selection of a
               particular size? (See the above note)
           * - ``forcecloseoninsert``
             - ``False``
             - Do we close the finder when an element is selected?
           * - ``base``
             - ``None``
             - The folderish object used as root of the finder when opening. ``None``
               means the Plone site. **Note that** by nature, this attribute cannot be
               set statically, in a ``FinderSelectWidget`` personal subclass for example
               as other can be. See the example in simple customizations on how to
               change the widget ``base`` attribute dynamically from the form class
               code.
        
        
        Developer Howto
        ===============
        
        How to use it in a WYSIWYG editor
        ---------------------------------
        
        The more easy way is creating a specific view, because you will often need to
        override the javascript method to select objects, and because each editor has
        its specific negociations with the browser.
        
        See ``collective.ckeditor`` package as example.
        
        
        Uploadding in custom folderish type
        -----------------------------------
        
        If you want to let the plone finder users upload files in your custom or third
        party folderish content types, you need to mark these types with the
        ``IFinderUploadCapable`` marker interface. As in this self-speaking ZCML
        sample::
        
          <class class="my.content.folderish.MyFolderish">
            <implements
               interface="collective.plonefinder.browser.interfaces.IFinderUploadCapable" />
          </class>
        
        Out of the box, ``collective.plonefinder`` enables upload in the Plone site
        itself as well as in ``ATFolder`` and ``ATBTreeFolder``.
        
        Todo
        ====
        
        - Functional doctests
        
        - i18n support
        
        - Finder improvements:
        
          - Ajax opening/moving/resizing and all window effects inside the same browser
            window (in progress, need some js refactoring)
        
          - improve contextual actions menu (change workflow state, rename, delete,
            copy, paste ...)
        
          - add a finder menu action to show/hide the current selection list in right
            panel
        
          - remove items from selection list in finder window
        
        - Improve zope3 reference widget properties
        
          - add option to hide/show or just mark selected items in finder browsing
            results (just need to store the finder blacklist in session)
        
          - add option to set a specific catalog query stored in session
        
          - add option to change finder catalog.
        
        - New zope3 widget to store urls (for a string field)
        
        - Archetypes support:
        
          - ATPloneFinderWidget for Reference fields (not a big challenge, just need to
            use ATReferenceBrowserWidget as base to start the work)
        
          - ATLinkWidget to store internal links
        
        - Dexterity support (z3c.form)
        
        - Supplement ``types`` and ``imagetypes`` attributes with others uning
          interfaces for a better flexibility.
        
        - Provide as parameter a factory that provides the results in the desired
          format. i.e You need a particular attribute of the target or some computed
          value.
        
        - Componentize the code for more flexibility.
        
        Any contribution is welcome, contact support@ingeniweb.com.
        
        Authors
        =======
        
        Jean-mat Grimaldi - Alter Way Solutions
        
        Code repository
        ===============
        
        https://github.com/collective/collective.plonefinder
        
        Support
        =======
        
        - Questions and comments to support@ingeniweb.com
        
        Changelog
        =========
        
        1.0.6 (2014-03-05)
        ------------------
        
        - Fix bad quotted test.
          [bsuttor]
        
        
        1.0.5 (2014-03-05)
        ------------------
        
        * Fix scope container when a object is created. Container is first 
          non portal_factory object.
          [bsuttor]
        
        * Lots of code simplifications (yet not finished, grep for "FIXME:")
          [glenfant]
        
        * More doc in the README (explain all releavant usages)
          [glenfant]
        
        * SVN marker in all possible files
          [glenfant]
        
        * Lots of optims (yet not finished, grep for "FIXME:")
          [glenfant]
        
        * Commented obscure features in the code
          [glenfant]
        
        * Fix case where 'image' field is of the type 'reference'
          [toutpt]
        
        
        1.0.4 (2013-09-09)
        ------------------
        * Fix: with ckeditor, link to News item does not link to its image anymore.
          [gotcha]
        
        
        1.0.3 (2013-06-12)
        ------------------
        * Compatibility with Plone 4.3 
          [toutpt]
        
        
        1.0.2 (2011-08-19)
        ------------------
        * Always show full site structure in navigation column. 
          [spereverde, yulka, gotcha]
        
        * In breadcrumbs, avoid links to folders where the user does not have View permission. 
          [spereverde, yulka, gotcha]
        
        
        1.0.1
        -----
        
        * CSS IE7 fixes
          macadames - 2010/09/22
        
        * finder.pt : template fix
          doctype was missing
          macadames - 2010/09/22
        
        * finder.pt : Remove lang attribute on html tag- we don't need it
          and it's difficult to maintain between Plone3 / Plone4
          macadames - 2010/09/26
        
        1.0.0
        -----
        
        * use Plone Quick Upload as upload tool - new dependency to
          collective.quickupload added
          macadames - 2010/09
        
        1.0.0-b2
        --------
        
        * fix unauthorized error in edit forms using FinderSelectWidget when user
          don't have the permission to access some referenced contents. In this case
          object is not removed from list, but a message is displayed in place of object title :
          '%s : %s ' %(_(u"You don't have permission to access this object"),uid)
        
        * added : close window when self.multiselect = False or self.forcecloseonsinsert = False
        
        * fix selectItem when there were quotes in titles
        
        * added a base attribute to reference widget used for finder opening folder.
        
        * use unicode chars for up and down arrows in reference widget.
        
        * allow change imagetypes using request and referencewidget
        
        * added a generated css for plone3 content-types icons
        
        * added new property self.filestypes in browser
        
        * added mime-type icons for filestypes in finder
        
        * FinderSelectWidget : do not raise an error anymore when object is not found
          but just returns a message in place of title (object with uid doesn't exist)
        
        * Fix regression on allowupload (was never allowed)
          macadames - 2010/07/21
        
        * Fix enable/disable browsing using request or self.browse = False
          macadames - 2010/07/22
        
        * no search on another path, when browsing is disable
          macadames - 2010/07/22
        
        * title fields added to multiple upload using jquery.uploadify
          macadames - 2010/07/24
        
        * authentication for flash upload is done using cookie
          when possible (same method as collective.uploadify)
          otherwise using a ticket (method PloneFlashUpload)
          macadames - 2010/07/28
        
        * use standard archetypes method "invokeFactory", to
          create new objects using uploaded files, to respect
          the complete plone createObject process.
          macadames - 2010/07/28
        
        * added new mediaupload key in request to set content-type
          for upload (very useful with jquery.uploadify)
          macadames - 2010/07/28
        
        * improve jquery.uploadify process with errors handling
          macadames - 2010/07/29
        
        * added new css class required to show icons on plone4
          'icons-on'
          macadames - 2010/07/31
        
        * fix upload buttons styles on plone4
          macadames - 2010/07/31
        
        * fix some css styles on Plone3 or Plone4 + classic Theme
          macadames - 2010/07/31
        
        * design improvements
          macadames - 2010/07/31
        
        * french translation in progress
          macadames - 2010/07/31
        
        * use InavigationRoot for the finder root no more IPloneSiteRot
          macadames - 2010/08/01
        
        * design improvements
          blue is the new color
          macadames - 2010/08/01
        
        * added new view attributes root and rootpath
          used to change the browser root
          macadames - 2010/08/02
        
        * Added a real left navigation tree
          macadames - 2010/08/02
        
        * replace persistent objects in attribute views
          by a data dict ie self.data['root'] in place of self.root
          macadames - 2010/08/04
        
        * use topic queryCatalog when the scope is a topic
          macadames - 2010/08/04
        
        * added support for z3c.autoinclude
          macadames - 2010/08/20
        
        1.0.0-b
        -------
        
        * images sizes displayed in finder are taken from portal properties
          imaging properties when exists
        
        * choose image sizes : contextual menus added
        
        * many IE fixes and cosmetic changes
        
        * plone4 icons style used also under plone3
        
        * reference objects widget added for zope3 forms (can be used in portlets)
        
        1.0.0-a
        -------
        
        * Initial release
Keywords: Zope Plone Medias Finder
Platform: UNKNOWN
Classifier: Environment :: Web Environment
Classifier: License :: OSI Approved :: GNU General Public License (GPL)
Classifier: Operating System :: OS Independent
Classifier: Framework :: Zope2
Classifier: Framework :: Plone
Classifier: Framework :: Plone :: 4.0
Classifier: Framework :: Plone :: 4.1
Classifier: Framework :: Plone :: 4.2
Classifier: Framework :: Plone :: 4.3
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 2.6
Classifier: Programming Language :: Python :: 2.7
Classifier: Topic :: Software Development :: Libraries :: Python Modules
