Changeset 175
- Timestamp:
- 01/12/06 07:21:30
- Files:
-
- qClickTrackingTool/trunk/ClickTracker.py (modified) (2 diffs)
- qClickTrackingTool/trunk/Extensions/Install.py (modified) (3 diffs)
- qClickTrackingTool/trunk/HISTORY.txt (modified) (1 diff)
- qClickTrackingTool/trunk/README.txt (modified) (4 diffs)
- qClickTrackingTool/trunk/__init__.py (modified) (2 diffs)
- qClickTrackingTool/trunk/config.py (modified) (1 diff)
- qClickTrackingTool/trunk/skins/qClickTrackingTool/portal_clicktracker_view.pt (modified) (1 diff)
- qClickTrackingTool/trunk/version.txt (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
qClickTrackingTool/trunk/ClickTracker.py
r174 r175 5 5 6 6 def modify_fti(fti): 7 fti['allowed_content_types'] = (' Link')7 fti['allowed_content_types'] = ('Campaign') 8 8 fti['filter_content_types'] = 1 9 9 fti['global_allow']=0 … … 19 19 20 20 schema=schema 21 archetype_name= 'qClickTrackingTool'22 id= UNIQUEID21 archetype_name=PROJECTNAME 22 id=TOOLID 23 23 24 24 def __init__(self): qClickTrackingTool/trunk/Extensions/Install.py
r174 r175 1 1 from Products.Archetypes.public import listTypes 2 2 from Products.Archetypes.Extensions.utils import installTypes, install_subskin 3 3 from Products.CMFCore.WorkflowTool import addWorkflowFactory 4 from Products.CMFCore import CMFCorePermissions 4 5 from Products.CMFCore.utils import getToolByName 5 from Products. qClickTrackingTool.config import *6 from Products.CMFDefault.Link import Link 6 7 from StringIO import StringIO 7 8 8 9 from Products.qClickTrackingTool.ClickTracker import ClickTracker 10 from Products.qClickTrackingTool.Workflow import createWorkflow 11 from Products.qClickTrackingTool.Campaign import Campaign 12 from Products.qClickTrackingTool.ClickTracker import ClickTracker 13 from Products.qClickTrackingTool.config import * 9 14 15 16 def tool_migration(self, out, oldVersion, newVersion): 17 #get tools 18 pc=getToolByName(self, 'portal_clicktracker') 19 20 for o in pc.listFolderContents()[:]: 21 #create temp link object 22 temp_link=Link(id=o.getId(), title=o.Title(), remote_url=o.getRemoteUrl(), description=o.Description()) 23 #remove old link 24 pc._delObject(o.getId()) 25 #create new Campaign 26 pc.invokeFactory(id=temp_link.id, type_name='Campaign') 27 campaign=getattr(pc, temp_link.id) 28 campaign.update(title=temp_link.title, description=temp_link.description, remoteUrl=temp_link.remote_url) 29 30 print >> out, "migration complete..." 31 32 33 def install_tool(self, out, tool='ClickTracker'): 34 portal=getToolByName(self, 'portal_url').getPortalObject() 35 if TOOLID not in portal.objectIds(): 36 addPloneTool=portal.manage_addProduct[PROJECTNAME].manage_addTool(tool) 37 else: 38 qi=getToolByName(self, 'portal_quickinstaller') 39 40 p=qi._getOb(PROJECTNAME, None) 41 oldVersion=p.getInstalledVersion() 42 newVersion= qi.getProductVersion(PROJECTNAME) 43 44 if oldVersion < newVersion: 45 tool_migration(self, out, oldVersion, newVersion) 46 47 print >> out, "Installed %s tool..." % tool 48 49 def install_configlet(self, out): 50 control_panel=getToolByName(self,'portal_controlpanel') 51 control_panel.registerConfiglet(PROJECTNAME, 52 'Click Tracking Tool', 53 'string:${portal_url}/%s/portal_clicktracker_view' % TOOLID, 54 permission=MANAGE_CLICKTRACKINGTOOL_PERMISSION, 55 imageUrl='link_icon.gif', 56 category='Products', 57 ) 58 print >> out, "Installed configlet.,," 59 60 def install_workflow(self, out): 61 portal_workflow=getToolByName(self, 'portal_workflow') 62 63 #register the workflow in the system 64 addWorkflowFactory(createWorkflow, 65 id=C_WORKFLOWID, 66 title='Campaign Workflow') 67 68 portal_workflow.manage_addWorkflow(id=C_WORKFLOWID, workflow_type=C_WORKFLOWID +' (Campaign Workflow)') 69 #set workflow for Campaign 70 portal_workflow.setChainForPortalTypes( ('Campaign'), C_WORKFLOWID) 71 print >> out, "Installed workflow..." 72 73 def fix_permissions(self, out): 74 portal_workflow=getToolByName(self, 'portal_workflow') 75 #remove worklow from tool 76 portal_workflow.setChainForPortalTypes( ('ClickTracker (qClickTrackingTool)'), '') 77 #set permission for portal_clicktracker 78 pc=getToolByName(self, 'portal_clicktracker') 79 pc.manage_permission(CMFCorePermissions.ListFolderContents, ('Manager', 'Owner', 'Anonymous'), 1) 80 81 print >> out, "Click Tracking Tool Permissions fixed..." 82 83 def remove_configlet(self, out): 84 # unregister Configlet 85 control_panel=getToolByName(self,'portal_controlpanel') 86 control_panel.unregisterConfiglet(PROJECTNAME) 10 87 11 88 def install(self): … … 14 91 15 92 installTypes(self, out, listTypes(PROJECTNAME), PROJECTNAME) 16 17 93 install_subskin(self, out, GLOBALS) 18 portal=getToolByName(self, 'portal_url').getPortalObject() 19 addPloneTool=portal.manage_addProduct['qClickTrackingTool'].manage_addTool('ClickTracker') 20 21 control_panel=getToolByName(self,'portal_controlpanel') 22 control_panel.registerConfiglet('qClickTrackingTool', 23 'Click Tracking Tool', 24 'string:${portal_url}/prefs_clicktrackingtool', 25 permission='ManagePortal', 26 imageUrl='link_icon.gif', 27 category='Products', 28 ) 29 30 94 install_workflow(self, out) 95 install_tool(self, out) 96 install_configlet(self, out) 97 fix_permissions(self, out) 98 31 99 print >> out, "Successfully installed %s." % PROJECTNAME 32 100 return out.getvalue() … … 35 103 out = StringIO() 36 104 37 control_panel=getToolByName(self,'portal_controlpanel') 38 control_panel.unregisterConfiglet('qClickTrackingTool') 39 40 105 remove_configlet(self, out) 106 41 107 print >> out, "Successfully uninstalled %s." % PROJECTNAME 42 108 return out.getvalue() qClickTrackingTool/trunk/HISTORY.txt
r174 r175 1 0.3.2+ -2005-08-22 2 ================== 3 4 - fixed install and migration scripts 5 6 0.3.2 - 2005-08-22 7 ================== 8 9 - cleaned up code 10 11 0.3.1 - 2005-08-07 12 ================== 13 14 - added migration script 15 16 - added new type (Campaign) 17 18 - added workflow for Campaign 19 1 20 0.3.0 - 2005-07-02 2 21 ================== 22 3 23 - added portal_clicktracker tool 4 24 5 25 0.2.0 - 2005-06-29 6 26 ================== 27 7 28 - added configlet 8 29 qClickTrackingTool/trunk/README.txt
r174 r175 13 13 support@quintagroup.com * quintessence of modern business 14 14 15 Requirements 16 17 * Archetypes-1.3 18 19 * ATContentTypes-0.2+ 20 15 21 Usage 16 22 … … 19 25 2. Go to Plone Setup -> Click Tracking Tool 20 26 21 3. Create your Campaigns (Links)there. Important are id (campaign Id) and27 3. Create your Campaigns there. Important are id (campaign Id) and 22 28 URL (the address tool should direct campaign to). 23 29 … … 33 39 MinHitExtra1=1 34 40 35 If you have ExtraSection 1 in your config, change 1 to next36 available number.41 If you have ExtraSection 1 in your config, change 1 in the lines aove 42 to next available number. 37 43 38 44 5. Add banners/tabs, links on the site to point your campaigns in the … … 42 48 data grouped per campaign. 43 49 50 Upgrading 51 52 The tool detects older versions installed and applies migration procedure 53 upon reinstallation. Do not Uninstall product, Reinstall it to preserve\ 54 Campaigns created in previos versions of product. 55 44 56 Authors 45 57 58 * Taras Melnychuk 59 46 60 * Myroslav Opyr 47 48 * Taras MelnychukqClickTrackingTool/trunk/__init__.py
r174 r175 17 17 ).initialize(context) 18 18 19 import Campaign 19 20 content_types, constructors, ftis = process_types( 20 21 listTypes(PROJECTNAME), … … 24 25 PROJECTNAME + ' Content', 25 26 content_types = content_types, 26 permission = ADD_C ONTENT_PERMISSION,27 permission = ADD_CAMPAIGN_PERMISSION, 27 28 extra_constructors = constructors, 28 29 fti = ftis, 29 30 ).initialize(context) 30 qClickTrackingTool/trunk/config.py
r174 r175 1 from Products.CMFCore.CMFCorePermissions import AddPortalContent 1 from Products.CMFCore.CMFCorePermissions import AddPortalContent, ManagePortal 2 2 3 3 PROJECTNAME = "qClickTrackingTool" 4 4 GLOBALS = globals() 5 UNIQUEID = "portal_clicktracker"5 TOOLID = "portal_clicktracker" 6 6 SKINS_DIR = 'skins' 7 ADD_CONTENT_PERMISSION = AddPortalContent 7 ADD_CAMPAIGN_PERMISSION = AddPortalContent 8 MANAGE_CLICKTRACKINGTOOL_PERMISSION = ManagePortal 9 C_WORKFLOWID='campaign_workflow' qClickTrackingTool/trunk/skins/qClickTrackingTool/portal_clicktracker_view.pt
r174 r175 1 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" 2 lang="en-US" 3 metal:use-macro="here/main_template/macros/master"> 4 <body> 5 <div metal:fill-slot="main" 6 tal:define="campaigns python:here.objectValues(); 7 Batch python:modules['Products.CMFPlone'].Batch; 8 b_start python:request.get('b_start', 0); 9 batch python:Batch(campaigns, 30, int(b_start), orphan=1)"> 10 11 <h1 tal:content="here/title_or_id">Title or id</h1> 12 13 <div metal:use-macro="here/document_actions/macros/document_actions"> 14 Document actions (print, sendto etc) 15 16 </div> 17 <div metal:use-macro="here/batch_macros/macros/navigation"></div> 18 <dl tal:repeat="link batch"> 19 <dt><span tal:content="string:${link/getId}: ${link/title}" /></dt> 20 <dt><a href="http://www.google.com/" 21 tal:define="url link/getRemoteUrl" 22 tal:attributes="href url" 23 tal:content="url" /></dt> 24 </dl> 1 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" 2 lang="en" 3 metal:use-macro="here/main_template/macros/master" 4 i18n:domain="plone"> 25 5 26 </div> 27 </body> 6 <body> 7 8 <div metal:fill-slot="main"> 9 10 <h1 class="documentFirstHeading"> 11 Click Tracking Tool 12 </h1> 13 14 <a href="" 15 class="link-parent" 16 tal:define="parent_url python:here.navigationParent(here, template.getId())" 17 tal:condition="parent_url" 18 tal:attributes="href parent_url" 19 i18n:translate="go_to_parent_url"> 20 Up one level 21 </a> 22 23 <div class="documentDescription" tal:content="here/Description"> 24 description 25 </div> 26 27 <metal:listingmacro define-macro="listing"> 28 <tal:foldercontents define="folderContents python:here.getFolderListingFolderContents(suppressHiddenFiles=1); 29 map here/getTrackMap"> 30 <tal:listing condition="folderContents" 31 define="global getObjSize nocall:here/getObjSize; 32 global toPortalTime nocall:here/toPortalTime;"> 33 34 <dl> 35 <tal:entry tal:repeat="obj folderContents"> 36 37 <dt metal:define-macro="listitem"> 38 39 <a href="#" 40 tal:attributes="href string:${obj/absolute_url}/atct_edit" 41 tal:content="obj/title_or_id" /> 42 (<a href="#" 43 class="link-external" 44 tal:define="id python:obj.id" 45 tal:attributes="href string:$portal_url/track/$id" 46 tal:content="python: map[id]" />) 47 48 </dt> 49 50 <dd tal:define="description obj/Description"> 51 <span tal:omit-tag="" tal:condition="not:description"> 52 53 </span> 54 <span tal:omit-tag="" tal:content="description"> 55 description 56 </span> 57 </dd> 58 </tal:entry> 59 </dl> 60 61 </tal:listing> 62 63 <p class="discreet" 64 tal:condition="not: folderContents" i18n:translate="description_no_items_in_folder"> 65 There are currently no items in this folder. 66 </p> 67 68 </tal:foldercontents> 69 </metal:listingmacro> 70 </div> 71 72 </body> 28 73 </html> qClickTrackingTool/trunk/version.txt
r174 r175 1 0.3. 01 0.3.2+
