Index: /qPingTool/branches/plone-3.1/PingInfo.py
===================================================================
--- /qPingTool/branches/plone-3.1/PingInfo.py	(revision 184)
+++ /qPingTool/branches/plone-3.1/PingInfo.py	(revision 185)
@@ -1,12 +1,10 @@
+from Globals import DTMLFile
+from AccessControl import ClassSecurityInfo
 from Products.Archetypes.public import *
 from Products.Archetypes.BaseContent import BaseContentMixin
-from Products.CMFCore.ActionInformation import ActionInformation
-from Products.CMFCore.Expression import Expression, createExprContext
+from Products.CMFCore.permissions import ModifyPortalContent
 from Products.CMFCore.utils import getToolByName
-from Acquisition import aq_inner, aq_parent
 from Products.CMFDefault.utils import _dtmldir
 from config import *
-from AccessControl import ClassSecurityInfo
-from Globals import InitializeClass, DTMLFile
 
 schema = BaseContentMixin.schema +  Schema((
@@ -55,13 +53,7 @@
         return self.contributors
 
-    try:
-	from Products.CMFCore import permissions
-	security.declareProtected(permissions.ModifyPortalContent, 'manage_metadata' )
-    except:
-	from Products.CMFCore.CMFCorePermissions import ModifyPortalContent
-	security.declareProtected(ModifyPortalContent, 'manage_metadata' )
-
+    security.declareProtected(ModifyPortalContent, 'manage_metadata' )
     manage_metadata = DTMLFile('zmi_metadata', _dtmldir)
 
 
-registerType(PingInfo)
+registerType(PingInfo, PROJECTNAME)
Index: /qPingTool/branches/plone-3.1/PingTool.py
===================================================================
--- /qPingTool/branches/plone-3.1/PingTool.py	(revision 184)
+++ /qPingTool/branches/plone-3.1/PingTool.py	(revision 185)
@@ -1,21 +1,27 @@
 #from Globals import InitializeClass
 import os
+from Acquisition import aq_base
+
+from zope.interface import implements
+from AccessControl import ClassSecurityInfo
+
+from Products.Archetypes.public import *
+
+from Products.CMFPlone.interfaces.OrderedContainer import IOrderedContainer
+from Products.CMFPlone.PloneFolder import PloneFolder
+
+from Products.PageTemplates.PageTemplateFile import PageTemplateFile
+
+from Products.CMFCore.permissions import ManagePortal
+from Products.CMFCore.utils import getToolByName
 from Products.CMFCore.ActionProviderBase import ActionProviderBase
-from Products.CMFPlone.PloneFolder import PloneFolder
-from config import TOOL_ID, PROJECTNAME
-from Products.Archetypes.public import *
+
 from Products.ATContentTypes.content.folder import ATFolder
-from Products.ATContentTypes.content.base import updateActions, updateAliases
-from Products.CMFPlone.interfaces.OrderedContainer import IOrderedContainer
-from Products.CMFCore.ActionInformation import ActionInformation
-from Products.CMFCore.Expression import Expression
-from Products.CMFCore.CMFCorePermissions import ManageProperties
-from Acquisition import aq_base
-from Products.CMFCore.utils import _getViewFor
-from Products.PageTemplates.PageTemplateFile import PageTemplateFile
+
 from Products.XMLRPCMethod.XMLRPCMethod import RPCThread, XMLRPCMethod
-from Products.CMFCore.utils import getToolByName
+
 from util import getCanonicalURL
 from zLOG import LOG
+from config import TOOL_ID, PROJECTNAME
 
 _marker = []
@@ -33,47 +39,9 @@
     """This tool serve for operation with ActionInfo objects
     """
+    security = ClassSecurityInfo()
 
-    #schema = BaseSchema
-    filter_content_types = 1
-    allowed_content_types = ('PingInfo',)
-    global_allowed = 0
+    archetype_name = portal_type = 'PingTool'
 
-    meta_type = archetype_name = portal_type = 'PingTool'
-
-    ########
-    content_icon   = 'tool.gif'
-    immediate_view = 'view'
-    default_view   = 'view'
-
-    ########
     __implements__ = (IOrderedContainer,)
-    _actions = ( ActionInformation(
-                    id='ping'
-                  , title='Ping setup'
-                  , action=Expression(
-                        text='string:${folder_url}/ping_setup')
-                  , condition=Expression(
-                        text='python: folder is object and portal.portal_syndication.isSyndicationAllowed(object)')
-                  , permissions=(ManageProperties,)
-                  , category='folder'
-                  , visible=1
-                  ),
-               )
-
-    actions = updateActions(ATFolder,
-        ({'id'         : 'view' \
-         ,'name'       : 'View' \
-         ,'action'     : 'string:folder_contents' \
-         ,'permissions': ('Manage portal',) \
-         ,'category'   :'object' \
-         },
-        )
-    )
-    
-    aliases = updateAliases(ATFolder,
-        {'(Default)'   : 'folder_listing' \
-        ,'view'        : 'folder_contents' \
-        },
-    )
 
     manage_options =  (
@@ -81,8 +49,23 @@
         ) + ATFolder.manage_options
 
+    security.declareProtected(ManagePortal, 'manage_overview')
     manage_overview = PageTemplateFile(os.path.join('www','overview'), globals())
     manage_overview.__name__ = 'manage_overview'
     manage_overview._need__name__ = 0
 
+    def om_icons(self):
+        """ Checking on ZMI for canonical_url setting."""
+        icons = ({'path':'misc_/qPingTool/tool.gif' \
+                    ,'alt':self.meta_type \
+                    ,'title':self.meta_type \
+                },)
+        if not getCanonicalURL(self):
+            icons = icons + ({'path':'misc_/PageTemplates/exclamation.gif' \
+                                ,'alt':'Error' \
+                                ,'title':'PingTool needs setting canonical_url' \
+                                },)
+        return icons
+
+    security.declareProtected(ManagePortal, 'pingFeedReader')
     def pingFeedReader(self,context):
         """ ping """
@@ -129,5 +112,5 @@
         return status, message
 
-
+    security.declareProtected(ManagePortal, 'setupPing')
     def setupPing(self,context,
                   enable_ping=0,
@@ -149,4 +132,5 @@
         return status, message
 
+    security.declareProtected(ManagePortal, 'getPingProperties')
     def getPingProperties(self, context):
         """ """
@@ -159,16 +143,3 @@
         return  pingPropeties
 
-    def om_icons(self):
-        """ Checking on ZMI for canonical_url setting."""
-        icons = ({'path':'misc_/qPingTool/tool.gif' \
-                    ,'alt':self.meta_type \
-                    ,'title':self.meta_type \
-                },)
-        if not getCanonicalURL(self):
-            icons = icons + ({'path':'misc_/PageTemplates/exclamation.gif' \
-                                ,'alt':'Error' \
-                                ,'title':'PingTool needs setting canonical_url' \
-                                },)
-        return icons
-
-registerType(PingTool)
+registerType(PingTool, PROJECTNAME)
Index: /qPingTool/branches/plone-3.1/__init__.py
===================================================================
--- /qPingTool/branches/plone-3.1/__init__.py	(revision 184)
+++ /qPingTool/branches/plone-3.1/__init__.py	(revision 185)
@@ -1,24 +1,7 @@
-from Globals import package_home
 from Products.Archetypes.public import process_types, listTypes
 from Products.CMFCore import utils
-from Products.CMFCore.DirectoryView import registerDirectory
-import os, os.path
 import PingInfo, PingTool
 from config import *
 
-try:
-    from adapter import registerAdapter
-    registerAdapter()
-except:
-    from Products.CMFCore.utils import getToolByName
-    from Products.CMFPlone.URLTool import URLTool
-    def getCanonicalURL(self):
-        portal = getToolByName(self, 'portal_url').getPortalObject()
-        return portal.getProperty('canonical_url', None)
-    #URLTool.security.declarePublic('getCanonicalURL')
-    URLTool.getCanonicalURL = getCanonicalURL
-
-
-registerDirectory(SKINS_DIR, GLOBALS)
 tools = ( PingTool.PingTool, )
 
@@ -27,5 +10,5 @@
     allow_module('Products.qPingTool.util')
 
-    utils.ToolInit("PingTool", tools=tools, product_name=PROJECTNAME, icon=TOOL_ICON,
+    utils.ToolInit("PingTool", tools=tools, icon=TOOL_ICON,
                   ).initialize(context)
 
Index: /qPingTool/branches/plone-3.1/adapter.py
===================================================================
--- /qPingTool/branches/plone-3.1/adapter.py	(revision 184)
+++ /qPingTool/branches/plone-3.1/adapter.py	(revision 185)
@@ -1,3 +1,6 @@
 from zope.interface import Interface, implements #, Attribute
+from zope.component import adapts
+
+from Products.CMFPlone.interfaces import IPloneBaseTool
 from Products.CMFCore.utils import getToolByName
 
@@ -21,4 +24,5 @@
     """ CanonicalURL adapter
     """
+    adapts(IPloneBaseTool)
     implements(ICanonicalURL)
 
@@ -58,6 +62,6 @@
 # Register adapter
 
-def registerAdapter():
-    from Products.CMFPlone.interfaces import IPloneBaseTool
-    from zope.component import provideAdapter
-    provideAdapter(CanonicalURL, adapts=[IPloneBaseTool,], provides=ICanonicalURL )
+#def registerAdapter():
+#    from Products.CMFPlone.interfaces import IPloneBaseTool
+#    from zope.component import provideAdapter
+#    provideAdapter(CanonicalURL, adapts=[IPloneBaseTool,], provides=ICanonicalURL )
Index: /qPingTool/branches/plone-3.1/config.py
===================================================================
--- /qPingTool/branches/plone-3.1/config.py	(revision 184)
+++ /qPingTool/branches/plone-3.1/config.py	(revision 185)
@@ -1,10 +1,9 @@
-from Products.CMFCore import CMFCorePermissions
 from Products.Archetypes.utils import DisplayList
+from Products.CMFCore.permissions import ManagePortal
 
-SKINS_DIR = 'skins'
 GLOBALS = globals()
 PROJECTNAME = 'qPingTool'
 
-ADD_PERMISSION = CMFCorePermissions.ManagePortal
+ADD_PERMISSION = ManagePortal
 
 TOOL_ID = 'portal_pingtool'
@@ -12,5 +11,5 @@
 TOOL_ICON = 'skins/qpingtool/tool.gif'
 
-RSS_LIST = DisplayList((('Blog','Blog'),('RSS','RSS1'),('RSS2','RSS2')))
+RSS_LIST = DisplayList((('Weblog','Weblog'),('RSS','RSS1'),('RSS2','RSS2')))
 
 CONFIGURATION_CONFIGLET = 'pingtool_config'
Index: /qPingTool/branches/plone-3.1/configure.zcml
===================================================================
--- /qPingTool/branches/plone-3.1/configure.zcml	(revision 185)
+++ /qPingTool/branches/plone-3.1/configure.zcml	(revision 185)
@@ -0,0 +1,11 @@
+<configure
+    xmlns="http://namespaces.zope.org/zope"
+    xmlns:five="http://namespaces.zope.org/five"
+    i18n_domain="qPingTool">
+
+   <adapter factory=".adapter.CanonicalURL" />
+
+   <include file="profiles.zcml" />
+   <include file="skins.zcml" />
+
+</configure>
Index: /qPingTool/branches/plone-3.1/profiles.zcml
===================================================================
--- /qPingTool/branches/plone-3.1/profiles.zcml	(revision 185)
+++ /qPingTool/branches/plone-3.1/profiles.zcml	(revision 185)
@@ -0,0 +1,15 @@
+<configure
+    xmlns="http://namespaces.zope.org/zope"
+    xmlns:genericsetup="http://namespaces.zope.org/genericsetup"
+    i18n_domain="qPingTool">
+
+  <genericsetup:registerProfile
+      name="qPingTool"
+      title="qPingTool"
+      directory="profiles/default"
+      description='Extension profile for the type of qPingTool.'
+      provides="Products.GenericSetup.interfaces.EXTENSION"
+      for="Products.CMFPlone.interfaces.IPloneSiteRoot"
+      />
+
+</configure>
Index: /qPingTool/branches/plone-3.1/profiles/default/actionicons.xml
===================================================================
--- /qPingTool/branches/plone-3.1/profiles/default/actionicons.xml	(revision 185)
+++ /qPingTool/branches/plone-3.1/profiles/default/actionicons.xml	(revision 185)
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<action-icons xmlns:i18n="http://xml.zope.org/namespaces/i18n"
+    i18n:domain="qPingTool">
+ <action-icon category="controlpanel"
+              action_id="portal_pingtool"
+              title="Ping Tool" priority="0"
+              icon_expr="group.gif"
+              i18n:attributes="title"/>
+</action-icons>
Index: /qPingTool/branches/plone-3.1/profiles/default/actions.xml
===================================================================
--- /qPingTool/branches/plone-3.1/profiles/default/actions.xml	(revision 185)
+++ /qPingTool/branches/plone-3.1/profiles/default/actions.xml	(revision 185)
@@ -0,0 +1,19 @@
+<?xml version="1.0"?>
+<!-- Install our custom portal_actions. Plone's defaults are in CMFPlone/profiles/default/actions.xml -->
+
+<!-- PORTAL ACTIONS -->
+<object name="portal_actions" meta_type="Plone Actions Tool"
+   xmlns:i18n="http://xml.zope.org/namespaces/i18n">
+ <object name="object" meta_type="CMF Action Category">
+  <object name="ping" meta_type="CMF Action">
+   <property name="title">Ping setup</property>
+   <property name="description" i18n:translate=""></property>
+   <property name="url_expr">string:${folder_url}/ping_setup</property>
+   <property name="available_expr">python: folder==object and portal.portal_syndication.isSyndicationAllowed(object)</property>
+   <property name="permissions">
+    <element value="Manage properties"/>
+   </property>
+   <property name="visible">True</property>
+  </object>
+ </object>
+</object>
Index: /qPingTool/branches/plone-3.1/profiles/default/archetype_tool.xml
===================================================================
--- /qPingTool/branches/plone-3.1/profiles/default/archetype_tool.xml	(revision 185)
+++ /qPingTool/branches/plone-3.1/profiles/default/archetype_tool.xml	(revision 185)
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<archetypetool>
+ <catalogmap>
+  <type portal_type="PingTool">
+   <catalog value="portal_catalog"/>
+  </type>
+  <type portal_type="PingInfo">
+   <catalog value="portal_catalog"/>
+  </type>
+ </catalogmap>
+</archetypetool>
Index: /qPingTool/branches/plone-3.1/profiles/default/controlpanel.xml
===================================================================
--- /qPingTool/branches/plone-3.1/profiles/default/controlpanel.xml	(revision 185)
+++ /qPingTool/branches/plone-3.1/profiles/default/controlpanel.xml	(revision 185)
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<object name="portal_controlpanel" meta_type="Plone Control Panel Tool"
+    xmlns:i18n="http://xml.zope.org/namespaces/i18n"
+    i18n:domain="qPingTool">
+ <configlet title="Ping Tool"
+    action_id="portal_pingtool" appId="PingTool"
+    category="Products" condition_expr=""
+    url_expr="string:${portal_url}/portal_pingtool/folder_contents"
+    visible="True" i18n:attributes="title">
+  <permission>Manage portal</permission>
+ </configlet>
+</object>
Index: /qPingTool/branches/plone-3.1/profiles/default/factorytool.xml
===================================================================
--- /qPingTool/branches/plone-3.1/profiles/default/factorytool.xml	(revision 185)
+++ /qPingTool/branches/plone-3.1/profiles/default/factorytool.xml	(revision 185)
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<object name="portal_factory" meta_type="Plone Factory Tool">
+ <factorytypes>
+  <type portal_type="PingInfo"/>
+  <type portal_type="PingTool"/>
+ </factorytypes>
+</object>
Index: /qPingTool/branches/plone-3.1/profiles/default/import_steps.xml
===================================================================
--- /qPingTool/branches/plone-3.1/profiles/default/import_steps.xml	(revision 185)
+++ /qPingTool/branches/plone-3.1/profiles/default/import_steps.xml	(revision 185)
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<import-steps>
+  <import-step id="qPingTool.various"
+               version="20080903-01"
+               handler="Products.qPingTool.setuphandlers.setupVarious"
+               title="qPingTool miscellaneous import steps">
+    <dependency step="typeinfo"/>
+    <dependency step="toolset"/>
+    Various import steps that are not handled by GS import/export
+    handlers.
+  </import-step>
+</import-steps>
Index: /qPingTool/branches/plone-3.1/profiles/default/metadata.xml
===================================================================
--- /qPingTool/branches/plone-3.1/profiles/default/metadata.xml	(revision 185)
+++ /qPingTool/branches/plone-3.1/profiles/default/metadata.xml	(revision 185)
@@ -0,0 +1,4 @@
+<?xml version="1.0"?>
+<metadata>
+  <version>1.0.0</version>
+</metadata>
Index: /qPingTool/branches/plone-3.1/profiles/default/properties.xml
===================================================================
--- /qPingTool/branches/plone-3.1/profiles/default/properties.xml	(revision 185)
+++ /qPingTool/branches/plone-3.1/profiles/default/properties.xml	(revision 185)
@@ -0,0 +1,4 @@
+<?xml version="1.0"?>
+<site>
+  <property name="canonical_url" type="string">www.contentmanagementsoftware.info/</property>
+</site>
Index: /qPingTool/branches/plone-3.1/profiles/default/propertiestool.xml
===================================================================
--- /qPingTool/branches/plone-3.1/profiles/default/propertiestool.xml	(revision 185)
+++ /qPingTool/branches/plone-3.1/profiles/default/propertiestool.xml	(revision 185)
@@ -0,0 +1,22 @@
+<?xml version="1.0"?>
+<!-- Install our custom portal_properties. Plone's defaults are in CMFPlone/profiles/default/propertiestool.xml -->
+
+<object name="portal_properties" meta_type="Plone Properties Tool">
+ <object name="navtree_properties" meta_type="Plone Property Sheet">
+  <property name="metaTypesNotToList" type="lines" purge="False">
+    <element value="PingTool"/>
+    <element value="PingInfo"/>
+  </property>
+ </object>
+ <object name="site_properties" meta_type="Plone Property Sheet">
+  <property name="use_folder_tabs" type="lines" purge="False"> 
+    <element value="PingTool"/>
+  </property> 
+  <property name="typesLinkToFolderContentsInFC" type="lines" purge="False">
+    <element value="PingTool"/>
+  </property>
+  <property name="typesUseViewActionInListings" type="lines" purge="False">
+    <element value="PingTool"/>
+  </property>
+ </object>
+</object>
Index: /qPingTool/branches/plone-3.1/profiles/default/qPingTool_various.txt
===================================================================
--- /qPingTool/branches/plone-3.1/profiles/default/qPingTool_various.txt	(revision 185)
+++ /qPingTool/branches/plone-3.1/profiles/default/qPingTool_various.txt	(revision 185)
@@ -0,0 +1,1 @@
+This file is used as a marker in setuphandlers.py.
Index: /qPingTool/branches/plone-3.1/profiles/default/skins.xml
===================================================================
--- /qPingTool/branches/plone-3.1/profiles/default/skins.xml	(revision 185)
+++ /qPingTool/branches/plone-3.1/profiles/default/skins.xml	(revision 185)
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<object name="portal_skins" allow_any="False" cookie_persistence="False">
+ <object name="qpingtool"
+    meta_type="Filesystem Directory View"
+    directory="Products.qPingTool:skins/qpingtool"/>
+ <skin-path>
+  <layer name="qpingtool"
+     insert-after="custom"/>
+ </skin-path>
+</object>
Index: /qPingTool/branches/plone-3.1/profiles/default/toolset.xml
===================================================================
--- /qPingTool/branches/plone-3.1/profiles/default/toolset.xml	(revision 185)
+++ /qPingTool/branches/plone-3.1/profiles/default/toolset.xml	(revision 185)
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<tool-setup>
+ <required tool_id="portal_pingtool"
+           class="Products.qPingTool.PingTool.PingTool"/>
+</tool-setup>
Index: /qPingTool/branches/plone-3.1/profiles/default/types.xml
===================================================================
--- /qPingTool/branches/plone-3.1/profiles/default/types.xml	(revision 185)
+++ /qPingTool/branches/plone-3.1/profiles/default/types.xml	(revision 185)
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<object name="portal_types" meta_type="Plone Types Tool">
+ <object name="PingInfo"
+    meta_type="Factory-based Type Information"/>
+ <object name="PingTool"
+    meta_type="Factory-based Type Information with dynamic views"/>
+</object>
Index: /qPingTool/branches/plone-3.1/profiles/default/types/PingInfo.xml
===================================================================
--- /qPingTool/branches/plone-3.1/profiles/default/types/PingInfo.xml	(revision 185)
+++ /qPingTool/branches/plone-3.1/profiles/default/types/PingInfo.xml	(revision 185)
@@ -0,0 +1,56 @@
+<?xml version="1.0"?>
+<object name="PingInfo" meta_type="Factory-based Type Information"
+   xmlns:i18n="http://xml.zope.org/namespaces/i18n">
+ <property name="title">Ping Info</property>
+ <property name="description">Ping Info container
+  id - name of the server to ping
+  url - server ping url
+  method_name - ping method
+  rss_version - rss version supported by the server</property>
+ <property name="content_icon">document_icon.gif</property>
+ <property name="content_meta_type">PingInfo</property>
+ <property name="product">qPingTool</property>
+ <property name="factory">addPingInfo</property>
+ <property name="immediate_view">base_edit</property>
+ <property name="global_allow">True</property>
+ <property name="filter_content_types">False</property>
+ <property name="allowed_content_types"/>
+ <property name="allow_discussion">False</property>
+ <action title="View"
+         action_id="view"
+         category="object"
+         condition_expr=""
+         url_expr="string:${object_url}/view"
+         visible="True"
+         i18n:attributes="title">
+  <permission value="View"/>
+ </action>
+ <action title="Edit"
+         action_id="edit"
+         category="object"
+         condition_expr=""
+         url_expr="string:${object_url}/edit"
+         visible="True"
+         i18n:attributes="title">
+  <permission value="View"/>
+ </action>
+ <action title="Properties"
+         action_id="metadata"
+         category="object"
+         condition_expr=""
+         url_expr="string:${object_url}/properties"
+         visible="True"
+         i18n:attributes="title">
+  <permission value="Modify portal content"/>
+ </action>
+ <action title="References"
+         action_id="references"
+         category="object"
+         condition_expr="object/archetype_tool/has_graphviz"
+         url_expr="string:${object_url}/reference_graph"
+         visible="True"
+         i18n:attributes="title">
+  <permission value="Modify portal content"/>
+  <permission value="Review portal content"/>
+ </action>
+</object>
Index: /qPingTool/branches/plone-3.1/profiles/default/types/PingTool.xml
===================================================================
--- /qPingTool/branches/plone-3.1/profiles/default/types/PingTool.xml	(revision 185)
+++ /qPingTool/branches/plone-3.1/profiles/default/types/PingTool.xml	(revision 185)
@@ -0,0 +1,31 @@
+<?xml version="1.0"?>
+<object name="PingTool" meta_type="Factory-based Type Information with dynamic views"
+   i18n:domain="qPingTool" xmlns:i18n="http://xml.zope.org/namespaces/i18n">
+ <property name="title" i18n:translate="">PingTool</property>
+ <property name="description"
+      i18n:translate="">This tool serve for operation with ActionInfo objects.</property>
+ <property name="content_icon">folder_icon.gif</property>
+ <property name="content_meta_type">PingTool</property>
+ <property name="product">qPingTool</property>
+ <property name="factory">addPingTool</property>
+ <property name="immediate_view">base_edit</property>
+ <property name="global_allow">True</property>
+ <property name="filter_content_types">True</property>
+ <property name="allowed_content_types">
+  <element value="PingInfo"/></property>
+ <property name="allow_discussion">False</property>
+ <alias from="(Default)" to="base_view"/>
+ <alias from="edit" to="base_edit"/>
+ <alias from="index.html" to="(Default)"/>
+ <alias from="properties" to="base_metadata"/>
+ <alias from="view" to="(Default)"/>
+ <action title="View"
+         action_id="view"
+         category="object"
+         condition_expr=""
+         url_expr="string:folder_contents"
+         visible="True"
+         i18n:attributes="title">
+  <permission value="Manage portal"/>
+ </action>
+</object>
Index: /qPingTool/branches/plone-3.1/setuphandlers.py
===================================================================
--- /qPingTool/branches/plone-3.1/setuphandlers.py	(revision 185)
+++ /qPingTool/branches/plone-3.1/setuphandlers.py	(revision 185)
@@ -0,0 +1,19 @@
+from Products.qPingTool.config import SITES_LIST
+
+def setupVarious(context):
+
+    # Ordinarily, GenericSetup handlers check for the existence of XML files.
+    # Here, we are not parsing an XML file, but we use this text file as a
+    # flag to check that we actually meant for this import step to be run.
+    # The file is found in profiles/default.
+
+    if context.readDataFile('qPingTool_various.txt') is None:
+        return
+
+    # Add additional setup code here
+    portal = context.getSite()
+    existent_sites = portal.portal_pingtool.objectIds()
+    for site in SITES_LIST:
+        if not site[0] in existent_sites:
+            portal.portal_pingtool.invokeFactory(id = site[0], type_name = "PingInfo", title = site[1],url = site[2])
+
Index: /qPingTool/branches/plone-3.1/skins.zcml
===================================================================
--- /qPingTool/branches/plone-3.1/skins.zcml	(revision 185)
+++ /qPingTool/branches/plone-3.1/skins.zcml	(revision 185)
@@ -0,0 +1,10 @@
+<configure
+    xmlns="http://namespaces.zope.org/zope"
+    xmlns:cmf="http://namespaces.zope.org/cmf"
+    i18n_domain="qPloneTool">
+
+   <!-- File System Directory Views registration -->
+   <cmf:registerDirectory
+       name="qpingtool" />
+
+</configure>
Index: /qPingTool/branches/plone-3.1/version.txt
===================================================================
--- /qPingTool/branches/plone-3.1/version.txt	(revision 184)
+++ /qPingTool/branches/plone-3.1/version.txt	(revision 185)
@@ -1,1 +1,1 @@
-0.3.1
+1.0.0
