Changeset 999

Show
Ignore:
Timestamp:
11/07/07 07:26:02
Author:
piv
Message:

release 0.8.0, see HISTORY.txt and TODO.txt

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • qPloneSkinDump/branches/plone_3.0/HISTORY.txt

    r836 r999  
     1qPloneSkinDump 0.8.0 
     2    - configlet form improvement 
     3    - fixed migration bugs to plone3 
     4    - added support for plone_view_customizations dump 
     5    - refactor old-style installer to portal_setup 
     6 
    17qPloneSkinDump 0.7.3 
    28    - Add support skins, generated under older qPloneSkinDump version. 
  • qPloneSkinDump/branches/plone_3.0/TODO.txt

    r503 r999  
    11*** Under consideration *** 
    22 
    3   - Create more usable interface. 
     3  - improvement portlets dumping 
     4  - improvements in resource dumping 
     5  - refactor portal_view_customizations dump 
     6  - add dump of portal_properties 
     7  - add dump of viewlets.xml and portlets.xml 
     8  - core refactorization, divide into small chunks all functionality (too difficult to upgrade current skindump structure) 
     9   
     10maybe in future: 
     11  - refactor qPloneSkinDump to work with python paster package, for use ZopeSkel templates styling 
  • qPloneSkinDump/branches/plone_3.0/qPloneSkinDump.py

    r935 r999  
    4949security.declarePublic('createProduct') 
    5050def createProduct(context, \ 
    51                   zmi_skin_name='custom', \ 
     51                  zmi_skin_names=['custom',], \ 
    5252                  zmi_base_skin_name='', \ 
    5353                  subdir=None,\ 
     
    6767                  dump_portlets=0, \ 
    6868                  dump_policy='root', \ 
    69                   dump_portlets_selection=[]): 
     69                  dump_portlets_selection=[], \ 
     70                  dump_custom_views=False): 
    7071    """ Main Skin Product creating procedure.""" 
    7172    makeNewProduct(context, fs_product_name, fs_skin_directory, \ 
    72                    zmi_skin_name, zmi_base_skin_name, subdir, \ 
     73                   zmi_skin_names, zmi_base_skin_name, subdir, \ 
    7374                   doesCustomizeSlots, left_slots, right_slots, slot_forming, main_column, \ 
    7475                   doesExportObjects, import_policy, \ 
    75                    dump_CSS, dump_JS, dump_portlets, dump_policy, dump_portlets_selection) 
    76     dumpSkin(context, zmi_skin_name, subdir, fs_skin_directory.lower(), 
    77              fs_product_name, erase_from_skin) 
     76                   dump_CSS, dump_JS, dump_portlets, dump_policy, dump_portlets_selection, dump_custom_views) 
     77    dumpSkin(context, zmi_skin_names, fs_product_name, erase_from_skin) 
    7878    result = exportObjects(context, doesExportObjects, exporting_objects, fs_product_name) 
    7979    return result 
  • qPloneSkinDump/branches/plone_3.0/skin_template/__init__.py

    r503 r999  
    1 from Products.CMFCore.DirectoryView import registerDirectory 
    2 from config import GLOBALS 
    3  
    4 registerDirectory('skins', GLOBALS) 
     1
  • qPloneSkinDump/branches/plone_3.0/skin_template/config.py

    r935 r999  
    105105SLOT_STRUCTURE = %(slot_structure)s 
    106106 
     107# portal_view_customization content 
     108CUSTOM_VIEWS = %(custom_views)s 
     109 
    107110# absolute file system path to product 
    108111from Globals import package_home 
  • qPloneSkinDump/branches/plone_3.0/skin_template/configure.zcml

    r935 r999  
    11<configure 
    2     xmlns="http://namespaces.zope.org/zope"> 
    3  
     2    xmlns="http://namespaces.zope.org/zope" 
     3    xmlns:cmf="http://namespaces.zope.org/cmf" 
     4    i18n_domain="%(product_name_lowercase)s"> 
    45 
    56 <include file="profiles.zcml" /> 
     7 
     8 <include file="skins.zcml" /> 
    69 
    710 <include package=".browser" /> 
  • qPloneSkinDump/branches/plone_3.0/skin_template/profiles/default/import_steps.xml

    r941 r999  
    11<?xml version="1.0"?> 
    22<import-steps> 
    3  <import-step id="%(skin_name)s_portlets" version="%(version1)s
     3 <import-step id="%(skin_name)s_portlets" version="%(version)s-1
    44              handler="Products.%(product_name)s.setuphandlers.importPortlets" 
    55              title="Customize %(skin_name)s portlets"> 
    66  <dependency step="content"/> 
    77  <dependency step="portlets"/> 
     8  <dependency step="%(skin_name)s_zexps"/> 
    89   Customize %(skin_name)s left and right portlets. 
    910 </import-step> 
    10  <import-step id="%(skin_name)s_old_install" version="%(version2)s" 
    11               handler="Products.%(product_name)s.setuphandlers.old_install" 
    12               title="Perform old installation steps (temporary)"> 
     11 <import-step id="%(skin_name)s_various" version="%(version)s-2" 
     12              handler="Products.%(product_name)s.setuphandlers.importVarious" 
     13              title="Perform various skin customizations"> 
     14  <dependency step="%(skin_name)s_portlets"/> 
     15  <dependency step="%(skin_name)s_customviews"/> 
     16  <dependency step="%(skin_name)s_zexps"/> 
     17   Perform various skin product customizations. 
     18 </import-step> 
     19 <import-step id="%(skin_name)s_customviews" version="%(version)s-3" 
     20              handler="Products.%(product_name)s.setuphandlers.importCustomViews" 
     21              title="Import customized views"> 
    1322  <dependency step="toolset"/> 
    14   <dependency step="cssregistry"/> 
    15   <dependency step="jsregistry"/> 
     23  <dependency step="portlets"/> 
     24  <dependency step="viewlets"/> 
     25   Import customized views to portal_view_customizations. 
     26 </import-step> 
     27 <import-step id="%(skin_name)s_zexps" version="%(version)s-4" 
     28              handler="Products.%(product_name)s.setuphandlers.importZexps" 
     29              title="Import zexp objects"> 
    1630  <dependency step="content"/> 
    17    Perform old installation steps (temporary) 
     31   Import zexp objects 
    1832 </import-step> 
    19  
    20  <import-step id="skins" version="20040630-01" 
    21               handler="Products.CMFCore.exportimport.skins.importSkinsTool" 
    22               title="Skins Tool"> 
    23      <dependency step="toolset"/> 
    24      <dependency step="%(skin_name)s_old_install"/> 
    25      Import skins tool's filesystem directory views and skin path definitions. 
    26  </import-step> 
    27  
    28  
    2933</import-steps> 
  • qPloneSkinDump/branches/plone_3.0/skin_template/profiles/default/skins.xml

    r941 r999  
    33   cookie_persistence="False" default_skin="%(skin_name)s" 
    44   request_varname="plone_skin"> 
    5  <object name="%(skin_name_lowercase)s" meta_type="Filesystem Directory View" 
    6          directory="Products/%(product_name)s/skins/%(skin_name_lowercase)s"/> 
    7  <skin-path name="%(skin_name_capital)s"> 
     5%(directory_views_xml)s 
     6 <skin-path name="%(skin_name)s"> 
    87%(skin_layers)s 
    98 </skin-path> 
  • qPloneSkinDump/branches/plone_3.0/skin_template/setuphandlers.py

    r941 r999  
    1 from zope.component import getUtility 
    2 from zope.component import getMultiAdapter 
     1from zope.component import getUtility, getSiteManager, getMultiAdapter 
    32 
    43from plone.portlets.interfaces import IPortletAssignmentMapping, IPortletManager, ILocalPortletAssignmentManager 
     4from plone.app.customerize.registration import * 
    55from plone.app.portlets import portlets 
    66 
     7from Products.CMFCore.utils import getToolByName 
     8 
    79from Products.%(product_name)s.config import * 
    8 from Products.%(product_name)s.Extensions.utils import * 
     10from Products.%(product_name)s.utils import * 
    911 
    1012import sys 
     
    6769            setupPortletsForContext(obj, info) 
    6870 
     71def importZexps(context): 
     72    site = context.getSite() 
     73    if checkIfImport(): 
     74        performImportToPortal(site) 
     75 
     76def importVarious(context): 
     77    site = context.getSite() 
     78    out = StringIO() 
     79    if FINAL_CUSTOMIZATION_FUNCTIONS: 
     80        dummy = [func(site, out) for func in FINAL_CUSTOMIZATION_FUNCTIONS] 
     81 
    6982def old_install(context): 
    7083    site = context.getSite() 
     
    7285 
    7386    # Checking base condition for installation 
    74     skinsTool = getToolByName(self, 'portal_skins') 
     87#    skinsTool = getToolByName(self, 'portal_skins') 
    7588    # Checking for absence of SKIN_NAME skin in site 
    76     skin_names = skinsTool.getSkinSelections() 
    77     if SKIN_NAME in skin_names: 
    78         raise AttributeError("Installation aborted due to '%%s' skin already present in your site." %% SKIN_NAME) 
     89#    skin_names = skinsTool.getSkinSelections() 
     90#    if SKIN_NAME in skin_names: 
     91#        raise AttributeError("Installation aborted due to '%%s' skin already present in your site." %% SKIN_NAME) 
    7992    # Checking for BASE_SKIN_NAME presenting in portal 
    80     skin_names = skinsTool.getSkinSelections() 
    81     if not BASE_SKIN_NAME in skin_names: 
    82         raise AttributeError("Impossible installation without %%s skin." %% BASE_SKIN_NAME) 
     93#    skin_names = skinsTool.getSkinSelections() 
     94#    if not BASE_SKIN_NAME in skin_names: 
     95#        raise AttributeError("Impossible installation without %%s skin." %% BASE_SKIN_NAME) 
    8396    # Checking for presenting lower_SKIN_NAME directory in portal skins 
    84     lower_SKIN_NAME = string.lower(SKIN_NAME) 
     97#    lower_SKIN_NAME = string.lower(SKIN_NAME) 
    8598    #if lower_SKIN_NAME in skinsTool.objectIds(): 
    8699    #    raise AttributeError("%%s skin layer already exist in portal skins. Installation Impossible." %% lower_SKIN_NAME) 
     
    89102 
    90103    # AFTER INSTALL 
    91     out=StringIO() 
     104    #out=StringIO() 
    92105    # get all needed tools and some portal's core objects 
    93     portal = getToolByName(self, 'portal_url').getPortalObject() 
    94     pp = getToolByName(portal, 'portal_properties') 
    95     portal_css = getToolByName(portal, 'portal_css', None) 
    96     portal_js = getToolByName(portal, 'portal_javascripts', None) 
     106    #portal = getToolByName(self, 'portal_url').getPortalObject() 
     107    #pp = getToolByName(portal, 'portal_properties') 
     108    #portal_css = getToolByName(portal, 'portal_css', None) 
     109    #portal_js = getToolByName(portal, 'portal_javascripts', None) 
    97110    # Make main prepare procedures 
    98     pp_up = prepareInstallation(portal, pp, out) # create 'uninstall_properties' propertySheet in portal_properties 
     111    #pp_up = prepareInstallation(portal, pp, out) # create 'uninstall_properties' propertySheet in portal_properties 
    99112    # Install skin 
    100113    #installSkin(portal, pp_up, out)    # performed with portal_setup 
    101     prepareUninstallSkin(portal, pp_up, out) 
     114    #prepareUninstallSkin(portal, pp_up, out) 
    102115 
    103116    # Register css resources 
    104     if portal_css and DOES_COSTOMIZE_CSS: 
    105         registerResource(pp_up, portal_css, portal_css.registerStylesheet, out \ 
    106                         ,CSS_LIST, SKIN_CSS_REGDATA, 'q_registered_css', CSS_REG_PROPS) 
    107         print >> out, "Completed tuning CSS registry for new skin needs." 
     117    #if portal_css and DOES_COSTOMIZE_CSS: 
     118        #registerResource(pp_up, portal_css, portal_css.registerStylesheet, out \ 
     119                        #,CSS_LIST, SKIN_CSS_REGDATA, 'q_registered_css', CSS_REG_PROPS) 
     120        #print >> out, "Completed tuning CSS registry for new skin needs." 
    108121    # Register js resources 
    109     if portal_js and DOES_COSTOMIZE_JS: 
    110         registerResource(pp_up, portal_js, portal_js.registerScript, out \ 
    111                         ,JS_LIST, SKIN_JS_REGDATA, 'q_registered_js', JS_REG_PROPS)#---installJS--- 
    112         print >> out, "Completed tuning JS registry for new skin needs." 
     122    #if portal_js and DOES_COSTOMIZE_JS: 
     123        #registerResource(pp_up, portal_js, portal_js.registerScript, out \ 
     124                        #,JS_LIST, SKIN_JS_REGDATA, 'q_registered_js', JS_REG_PROPS)#---installJS--- 
     125        #print >> out, "Completed tuning JS registry for new skin needs." 
    113126    # Customize slots     
    114127    #if LEFT_SLOTS or RIGHT_SLOTS: 
    115128        #customizeSlots(portal, pp_up, out) 
    116129    # Import object(s) to portal 
    117     if checkIfImport(): 
    118         res_import = performImportToPortal(portal) 
    119         print >> out, res_import 
     130    #if checkIfImport(): 
     131        #res_import = performImportToPortal(portal) 
     132        #print >> out, res_import 
    120133    # FINAL customization call additional functions from config  
    121     if FINAL_CUSTOMIZATION_FUNCTIONS: 
    122         dummy = [func(portal, out) for func in FINAL_CUSTOMIZATION_FUNCTIONS] 
     134    #if FINAL_CUSTOMIZATION_FUNCTIONS: 
     135        #dummy = [func(portal, out) for func in FINAL_CUSTOMIZATION_FUNCTIONS] 
    123136    print >> out, "%%s generated product." %% GENERATOR_PRODUCT 
    124137    print >> out, '=== Installation successfully completed. ===' 
     
    126139    #product._p_changed = 1 #XXX:NEED for stable writing 'out' log to qi on afterinstallation. 
    127140    return out.getvalue() 
     141 
     142def importCustomViews(context): 
     143    site = context.getSite() 
     144 
     145    for view in CUSTOM_VIEWS: 
     146        for_name = view['for_name'] 
     147        view_name = view['view_name'] 
     148        type_name = view['type_name'] 
     149        kwargs = view['kwargs'] 
     150 
     151        reg = findTemplateViewRegistration(for_name, type_name, view_name) 
     152        viewzpt_id = str(generateIdFromRegistration(reg)) 
     153 
     154        container = getUtility(IViewTemplateContainer) 
     155        if viewzpt_id in container.objectIds(): 
     156            continue 
     157 
     158        attr, pt = findViewletTemplate(reg.factory) 
     159        if pt: 
     160            ptname = basename(pt.filename) 
     161        else: 
     162            ptname = None 
     163        viewzpt = TTWViewTemplate( 
     164            id = viewzpt_id, 
     165            text = kwargs['text'], 
     166            encoding = kwargs['encoding'], 
     167            content_type = kwargs['content_type'], 
     168            view = getViewClassFromRegistration(reg), 
     169            permission = getViewPermissionFromRegistration(reg), 
     170            name = ptname) 
     171        container.addTemplate(viewzpt_id, viewzpt) 
     172 
     173        sm = getSiteManager(site) 
     174        sm.registerAdapter(viewzpt, required = reg.required, provided = reg.provided, name = reg.name) 
  • qPloneSkinDump/branches/plone_3.0/skins/qploneskindump/qploneskindump_config.cpt

    r935 r999  
    99    <div metal:define-macro="main" 
    1010         tal:define="errors options/state/getErrors | nothing;"> 
    11         <h1 class="QSDFirstHeading"> 
    12             <img tal:replace="structure here/product_icon.gif" /> 
    13             <span tal:replace="here/title_or_id">Title or id</span> 
    14         </h1> 
    15  
    16         <div metal:use-macro="here/document_actions/macros/document_actions"> 
    17             Document actions (print, sendto etc) 
     11 
     12        <div metal:use-macro="here/global_statusmessage/macros/portal_message"> 
     13            Portal status message 
    1814        </div> 
     15 
     16        <h1 class="documentFirstHeading" 
     17            i18n:translate="heading_addremove_products">Skin Dump</h1> 
    1918 
    2019        <a href="" 
    2120           class="link-parent" 
    22            i18n:translate="label_up_to_product_page" 
    23            tal:define="parent_url python:here.navigationParent(here, template.getId())" 
    24            tal:condition="parent_url" 
    25            tal:attributes="href parent_url"> 
    26             Up to Product page 
     21           tal:attributes="href string: $portal_url/plone_control_panel" 
     22           i18n:translate="label_up_to_plone_setup"> 
     23            Up to Site Setup 
    2724        </a> 
    2825 
    29         <h2 i18n:translate="heading_portalactions_lists"> 
    30             qPloneSkinDump input FORM 
    31         </h2> 
     26        <p class="documentDescription" 
     27            i18n:translate="description_addremove_products"> 
     28            This is a form for dumping your zmi skin to filesystem based product. 
     29        </p> 
     30 
     31        <p class="discreet" i18n:translate="description_product_location"> 
     32            Navigate through all form tabs to set needed configuration for dump. 
     33        </p> 
     34 
    3235        <form name="edit_form" 
    3336              action="href" 
    3437              method="post" 
     38              class="enableFormTabbing" 
    3539              enctype="multipart/form-data" 
    3640              tal:attributes="action string:$here_url/$template_id"> 
    37             <fieldset tal:define="error_zmiSN python:errors.get('ZMISkinName'); 
    38                                   error_zmiBSN python:errors.get('ZMIBaseSkinName')"> 
    39                 <legend> 
    40                   <label style="font-size: 110%" i18n:translate="legend_ZMI"> ZMI:</label> 
    41                 </legend> 
    42                 <div class="ZMISkinName" 
    43                      tal:attributes="class python: test(error_zmiSN, 'ZMISkinName error', 'ZMISkinName');"> 
    44                 <!-- folder in ZMI .../portal_skins, from which will be copyed content --> 
    45                     <label class="ZMISkinName_title" 
    46                            i18n:translate="label_ZMISkinName">Source ZMI skin folder</label> 
     41 
     42            <fieldset id="fieldset-product" 
     43                      tal:define="error_fsSkinDir python:errors.get('FSSkinDirectory'); 
     44                                  error_fsProdName python:errors.get('FSProductName')"> 
     45                <legend id="fieldsetlegend-product"> 
     46                  <label style="font-size: 110%" i18n:translate="label_product">Product</label> 
     47                </legend> 
     48                <p /> 
     49                <div class="FSProductName" 
     50                     tal:attributes="class python: test(error_fsProdName, 'FSProductName error', 'FSProductName');"> 
     51                    <label class="FSProductName_title" 
     52                          i18n:translate="label_FSProductName">Product name</label> 
    4753                    <span class="fieldRequired" 
    4854                           title="Required" 
    4955                           i18n:translate="label_required" 
    50                            i18n:attributes="title title_required;"> 
    51                                 (Required) 
    52                     </span> 
    53                     <div i18n:translate="help_ZMISkinName" 
    54                          class="formHelp"> 
    55                         Select folder from portal_skins, which content should by copyed to FS product. 
    56                     </div> 
    57                     <div tal:condition="error_zmiSN" 
    58                          tal:content="error_zmiSN" i18n:translate="">Validation Error</div> 
    59  
    60                     <select class="ZMISkinName_input" id="ZMISkinName"  
    61                             size="1" name="ZMISkinName" 
    62                             tal:define="value request/ZMISkinName|string:custom; 
    63                                         p_skins_ids python:portal.portal_skins.objectIds(spec='Folder')" 
    64                             tal:attributes="value value; 
    65                                             tabindex tabindex/next;"> 
    66                         <option selected="" 
    67                                 value="#" 
    68                                 tal:repeat="ps_folder p_skins_ids" 
    69                                 tal:attributes="value nocall:ps_folder; 
    70                                                 selected python:test(ps_folder==value, 'selected', None);" 
    71                                 tal:content="ps_folder"/> 
    72                          
    73                     </select> 
    74                 </div> 
    75                 <p/> 
     56                           i18n:attributes="title title_required;">(Required)</span> 
     57                    <div i18n:translate="help_FSProductName" 
     58                         class="formHelp"> 
     59                        Name for dumped product. This name should be unique in your Products directory of Plone's instance. The name must begin with alphabetical character, following with an alphanumeric combination, also underscore accepts, but not on boundaries. 
     60                    </div> 
     61                    <div tal:condition="error_fsProdName" 
     62                         tal:content="error_fsProdName" i18n:translate="">Validation Error</div> 
     63 
     64                    <input class="FSProductName_input" 
     65                           type="text" 
     66                           name="FSProductName" 
     67                           value="qPloneSkinTemplate" 
     68                           size="50" 
     69                           tal:attributes="value request/FSProductName|nothing" /> 
     70                </div> 
     71                <p /> 
     72                <div class="FSSkinDirectory" 
     73                     tal:attributes="class python: test(error_fsSkinDir, 'FSSkinDirectory error', 'FSSkinDirectory');"> 
     74                    <label class="FSSkinDirectory_title" 
     75                          i18n:translate="label_FSSkinDirectory">Skin name</label> 
     76                    <span class="fieldRequired" 
     77                           title="Required" 
     78                           i18n:translate="label_required" 
     79                           i18n:attributes="title title_required;">(Required)</span> 
     80                    <div i18n:translate="help_FSSkinDirectory" 
     81                         class="formHelp"> 
     82                         Skin name in dumped product. The name must begin with alphabetical character, following with an alphanumeric combination, also underscore accepts, but not on boundaries. 
     83                    </div> 
     84                    <div tal:condition="error_fsSkinDir" 
     85                         tal:content="error_fsSkinDir" i18n:translate="">Validation Error</div> 
     86 
     87                    <input class="FSSkinDirectory_input" 
     88                           type="text" 
     89                           name="FSSkinDirectory" 
     90                           value="" 
     91                           size="50" 
     92                           tal:attributes="value request/FSSkinDirectory|nothing" /> 
     93                </div> 
     94            </fieldset> 
     95 
     96            <fieldset id="fieldset-zmi" 
     97                      tal:define="error_zmiSN python:errors.get('ZMISkinName'); 
     98                                  error_zmiBSN python:errors.get('ZMIBaseSkinName')"> 
     99                <legend id="fieldsetlegend-zmi"> 
     100                  <label style="font-size: 110%" i18n:translate="legend_ZMI">Skin</label> 
     101                </legend> 
     102                <p /> 
    76103                <div class="ZMIBaseSkinName" 
    77104                     tal:attributes="class python: test(error_zmiBSN, 'ZMIBaseSkinName error', 'ZMIBaseSkinName');"> 
    78105                <!-- base for building layers list --> 
    79106                    <label class="ZMIBaseSkinName_title" 
    80                            i18n:translate="label_ZMIBaseSkinName">ZMI base skin name</label> 
     107                           i18n:translate="label_ZMIBaseSkinName">Skin selection</label> 
    81108                    <span class="fieldRequired" 
    82109                           title="Required" 
    83110                           i18n:translate="label_required" 
    84                            i18n:attributes="title title_required;"> 
    85                                 (Required) 
    86                     </span> 
     111                           i18n:attributes="title title_required;">(Required)</span> 
    87112                    <div i18n:translate="help_ZMIBaseSkinName" 
    88113                         class="formHelp"> 
    89                         Select Skin name, which layers list will be used for creating new skin. 
     114                        Select skin selection from portal_skins, which layers list will be used for creating new skin. 
    90115                    </div> 
    91116                    <div tal:condition="error_zmiBSN" 
     
    94119                    <select tal:define="value request/ZMIBaseSkinName|string:Plone Tableless; 
    95120                                        skin_names portal/portal_skins/getSkinSelections" 
    96                             tal:attributes="value value; 
    97                                             name string:ZMIBaseSkinName; 
     121                            tal:attributes="name string:ZMIBaseSkinName; 
    98122                                            id string:ZMIBaseSkinName; 
    99123                                            size string:1; 
     
    105129                                                selected python:test(skin_name==value, 'selected', None);" 
    106130                                tal:content="skin_name"/> 
    107                          
    108131                    </select> 
    109132                </div> 
    110                 <p/> 
     133                <p /> 
     134                <div class="ZMISkinName" 
     135                     tal:attributes="class python: test(error_zmiSN, 'ZMISkinName error', 'ZMISkinName');"> 
     136                <!-- folder in ZMI .../portal_skins, from which will be copyed content --> 
     137                    <label class="ZMISkinName_title" 
     138                           i18n:translate="label_ZMISkinName">Skin folders</label> 
     139                    <span class="fieldRequired" 
     140                           title="Required" 
     141                           i18n:translate="label_required" 
     142                           i18n:attributes="title title_required;">(Required)</span> 
     143                    <div i18n:translate="help_ZMISkinName" 
     144                         class="formHelp"> 
     145                        Select folders from portal_skins, which should be dumped to FS product's skins folder. 
     146                    </div> 
     147                    <div tal:condition="error_zmiSN" 
     148                         tal:content="error_zmiSN" i18n:translate="">Validation Error</div> 
     149 
     150                    <select class="ZMISkinName_input" id="ZMISkinName"  
     151                            size="5" name="ZMISkinName" multiple="1" 
     152                            tal:define="value request/ZMISkinName|string:custom; 
     153                                        p_skins_ids python:portal.portal_skins.objectIds(spec='Folder')" 
     154                            tal:attributes="tabindex tabindex/next;"> 
     155                        <option selected="" 
     156                                value="#" 
     157                                tal:repeat="ps_folder p_skins_ids" 
     158                                tal:attributes="value nocall:ps_folder; 
     159                                                selected python:test(ps_folder==value, 'selected', None);" 
     160                                tal:content="ps_folder"/> 
     161                    </select> 
     162                </div> 
     163                <p /> 
    111164                <div class="EraseFromSkin"> 
    112165                <!-- erase content of folder in ZMI .../portal_skins after copying --> 
    113                     <div i18n:translate="help_Erase" 
    114                          class="formHelp"> 
    115                         Select for erase content of skin's source folder. 
    116                     </div> 
    117  
    118166                    <input class="EraseFromSkin_input" 
    119167                           type="checkbox" 
    120168                           name="EraseFromSkin" 
     169                           id="EraseFromSkin" 
    121170                           value="0" 
    122171                           tal:attributes="checked python:test(request.has_key('EraseFromSkin'), 'checked', nothing)" 
    123172                           /> 
    124                     <label class="EraseFromSkin_title" 
    125                           i18n:translate="label_Erace">Erace </label> 
    126                 </div> 
    127             </fieldset> 
    128  
    129             <fieldset tal:define="error_fsSkinDir python:errors.get('FSSkinDirectory'); 
    130                                   error_fsProdName python:errors.get('FSProductName')"> 
    131                 <legend> 
    132                   <label style="font-size: 110%" i18n:translate="label_FS"> File system:</label> 
    133                 </legend> 
    134                 <div class="FSSkinDirectory" 
    135                      tal:attributes="class python: test(error_fsSkinDir, 'FSSkinDirectory error', 'FSSkinDirectory');"> 
    136                     <label class="FSSkinDirectory_title" 
    137                           i18n:translate="label_FSSkinDirectory">Skin's name for new prodct</label> 
    138                     <span class="fieldRequired" 
    139                            title="Required" 
    140                            i18n:translate="label_required" 
    141                            i18n:attributes="title title_required;"> 
    142                                 (Required) 
    143                     </span> 
    144                     <div i18n:translate="help_FSSkinDirectory" 
    145                          class="formHelp"> 
    146                          Input skin's name for new prodct. <br/> 
    147                          This name in lower case will be used as skin's folder name and as layer name too.<br/> 
    148                          The name must begin with alphabetical character, following with an alphanumeric combination, also underscore accepts, but not on boundaries.<br/> 
    149                     </div> 
    150                     <div tal:condition="error_fsSkinDir" 
    151                          tal:content="error_fsSkinDir" i18n:translate="">Validation Error</div> 
    152  
    153                     <input class="FSSkinDirectory_input" 
    154                            type="text" 
    155                            name="FSSkinDirectory" 
    156                            value="" 
    157                            size="50" 
    158                            tal:attributes="value request/FSSkinDirectory|nothing" /> 
    159                 </div> 
    160                 <p/> 
    161                 <div class="FSProductName" 
    162                      tal:attributes="class python: test(error_fsProdName, 'FSProductName error', 'FSProductName');"> 
    163                     <label class="FSProductName_title" 
    164                           i18n:translate="label_FSProductName">Product name</label> 
    165                     <span class="fieldRequired" 
    166                            title="Required" 
    167                            i18n:translate="label_required" 
    168                            i18n:attributes="title title_required;"> 
    169                                 (Required) 
    170                     </span> 
    171                     <div i18n:translate="help_FSProductName" 
    172                          class="formHelp"> 
    173                          Input name of new product.  <br/> 
    174                          This name can't be identical with other, presenting in your Products directory of Plone's instance. <br/> 
    175                          The name must begin with alphabetical character, following with an alphanumeric combination, also underscore accepts, but not on boundaries. 
    176                     </div> 
    177                     <div tal:condition="error_fsProdName" 
    178                          tal:content="error_fsProdName" i18n:translate="">Validation Error</div> 
    179  
    180                     <input class="FSProductName_input" 
    181                            type="text" 
    182                            name="FSProductName" 
    183                            value="qPloneSkinTemplate" 
    184                            size="50" 
    185                            tal:attributes="value request/FSProductName|nothing" /> 
    186                 </div> 
    187             </fieldset> 
    188  
    189             <fieldset> 
    190                 <legend class="DoesCustomizeSlots"> 
     173                    <label class="EraseFromSkin_title" for="EraseFromSkin" 
     174                          i18n:translate="label_Erase">Erase folders from portal_skins after dump</label> 
     175                </div> 
     176            </fieldset> 
     177 
     178            <fieldset id="fieldset-portlets"> 
     179                <legend id="fieldsetlegend-portlets" class="DoesCustomizeSlots"> 
     180                    <label style="font-size: 110%" i18n:translate="label_portlets">Portlets</label> 
     181                </legend> 
     182                <p /> 
     183                <div class="customize-portlets"> 
    191184                    <input class="noborder" 
    192185                           type="checkbox" 
     
    194187                           id="DoesCustomizeSlots" 
    195188                           value="0" 
    196                            tal:attributes="checked request/dump_portlets|nothing" 
    197                            /> 
     189                           tal:attributes="checked request/dump_portlets|nothing" /> 
    198190                    <label for="DoesCustomizeSlots" 
    199                            i18n:translate="label_dump_portlets">Dump porltets</label> 
    200                 </legend
     191                           i18n:translate="label_dump_portlets">Dump Portlets</label> 
     192                </div
    201193                <p/> 
    202194                <div class="SlotsCustomizing"> 
     
    206198                    <div i18n:translate="help_SlotsCustomizing" 
    207199                         class="formHelp"> 
    208                      
     200 
    209201                    </div> 
    210202 
     
    264256            </fieldset> 
    265257 
    266             <fieldset tal:define="exp_data python:modules['Products.qPloneSkinDump.qPloneSkinDump'].getExportingData(here);"> 
    267                 <legend class="DoesExportObjects"> 
     258            <fieldset id="fieldset-zexp" 
     259                      tal:define="exp_data python:modules['Products.qPloneSkinDump.qPloneSkinDump'].getExportingData(here);"> 
     260                <legend id="fieldsetlegend-zexp" class="DoesExportObjects"> 
     261                    <label style="font-size: 110%" i18n:translate="label_portlets">Objects Export</label> 
     262                </legend> 
     263                <p /> 
     264                <div class="objects-export"> 
    268265                    <input class="noborder" 
    269266                           type="checkbox" 
    270267                           name="DoesExportObjects" 
    271                            id="DoesExportObjects"  
     268                           id="DoesExportObjects" 
    272269                           value="DoesExportObjects" 
    273270                           tal:attributes="checked python:test(request.has_key('DoesExportObjects'), 'checked', nothing)" /> 
    274271                    <label for="DoesExportObjects" 
    275272                           style="font-size: 110%" 
    276                            i18n:translate="label_DoesExportObjects">Exporting objects from portal root</label> 
    277                 </legend> 
    278                 <div class="formHelp" 
    279                      i18n:translate="help_DoesExportObjects"> 
    280                   Selected below objects will be exported to New Skin Product. Then on installation generated Skin Product 
    281                   they will be imported to portal root, based on choosed policy. 
    282                 </div> 
    283  
     273                           i18n:translate="label_DoesExportObjects">Dump Objects</label> 
     274                    <div class="formHelp" 
     275                         i18n:translate="help_DoesExportObjects"> 
     276                      Selected below objects will be exported to New Skin Product. Then on installation generated Skin Product 
     277                      they will be imported to portal root, based on choosed policy. 
     278                    </div> 
     279                </div> 
    284280                <p/> 
    285281                <div class="ImportPolicy" 
     
    336332            </fieldset> 
    337333 
    338             <fieldset tal:define="isFirst python:not request.get('dump_registries', None); 
     334            <fieldset id="fieldset-resources" 
     335                      tal:define="isFirst python:not request.get('dump_registries', None); 
    339336                                  checked_css python:test(isFirst, 'checked', test(request.has_key('DumpCSSRegistry'), 'checked', nothing)); 
    340337                                  checked_js python:test(isFirst, 'checked', test(request.has_key('DumpJSRegistry'), 'checked', nothing));"> 
    341                 <legend class="DoesExportResources"> 
     338                <legend id="fieldsetlegend-resources" class="DoesExportResources"> 
    342339                    <label for="DoesExportResources" 
    343340                           style="font-size: 110%" 
    344                            i18n:translate="label_DoesExportResources">Exporting portal resources</label> 
    345                 </legend> 
     341                           i18n:translate="label_DoesExportResources">Resources</label> 
     342                </legend> 
     343                <p /> 
    346344                <div class="formHelp" 
    347345                     i18n:translate="help_DoesExportResources"> 
     
    377375                </div> 
    378376                <p/> 
     377            </fieldset> 
     378 
     379            <!-- dump views --> 
     380            <fieldset id="fieldset-views" 
     381                      tal:define="error_zmiSN python:errors.get('ZMISkinName'); 
     382                                  error_zmiBSN python:errors.get('ZMIBaseSkinName')"> 
     383                <legend id="fieldsetlegend-views"> 
     384                  <label style="font-size: 110%" i18n:translate="legend_viewlets">Views</label> 
     385                </legend> 
     386                <p /> 
     387                <div class="dump-viewlets-field"> 
     388                    <div i18n:translate="help_dumpviewlets" 
     389                         class="formHelp"> 
     390                        Check this field for dumping all customized objects in portal_view_customization tool. 
     391                    </div> 
     392 
     393                    <input class="dumpviewlets-input" 
     394                           type="checkbox" 
     395                           name="dump_viewlets" 
     396                           id="dump_viewlets" 
     397                           value="1" 
     398                           tal:attributes="checked python:test(request.has_key('dump_viewlets'), 'checked', nothing)" 
     399                           /> 
     400                    <label class="dumpviewlets-title" for="dump_viewlets" 
     401                          i18n:translate="label_dumpviewlets">Dump views, viewlets and portlets</label> 
     402                </div> 
    379403            </fieldset> 
    380404 
  • qPloneSkinDump/branches/plone_3.0/skins/qploneskindump/qploneskindump_config_script.cpy

    r935