Index: /quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/__init__.py
===================================================================
--- /quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/__init__.py	(revision 391)
+++ /quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/__init__.py	(revision 392)
@@ -1,4 +1,4 @@
 from AccessControl import allow_module
 
-allow_module('Products.qSEOptimizer.util')
+allow_module('quintagroup.seoptimizer.util')
 qSEO_globals = globals()
Index: /quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/browser/configure.zcml
===================================================================
--- /quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/browser/configure.zcml	(revision 391)
+++ /quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/browser/configure.zcml	(revision 392)
@@ -41,3 +41,11 @@
         />
 
+    <!--Views-->
+    <browser:page
+        name="seo-controlpanel"
+        for="Products.CMFPlone.interfaces.IPloneSiteRoot"
+        class=".views.SEOControlPanel"
+        permission="cmf.ManagePortal"
+        />
+
 </configure>
Index: /quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/browser/templates/seo_controlpanel.pt
===================================================================
--- /quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/browser/templates/seo_controlpanel.pt	(revision 392)
+++ /quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/browser/templates/seo_controlpanel.pt	(revision 392)
@@ -0,0 +1,118 @@
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US"
+      xmlns:metal="http://xml.zope.org/namespaces/metal"
+      xmlns:tal="http://xml.zope.org/namespaces/tal"
+      lang="en-US"
+      metal:use-macro="here/prefs_main_template/macros/master"
+      i18n:domain="quintagroup.seoptimizer">
+  <body>
+    <div metal:fill-slot="prefs_configlet_main"
+        tal:define="errors python:request.get('errors', {})">
+      <h1>Search Engine Optimizer configuration</h1>
+        <a href=""
+           class="link-parent"
+           tal:attributes="href string: $portal_url/plone_control_panel"
+           i18n:translate="label_up_to_plone_setup">
+           Up to Plone Setup
+        </a>
+        <div class="documentDescription">
+           You can select what content types are
+           qSEOptimizer-enabled, and control if Dublin Core metatags
+           are exposed in the header of content pages.
+        </div>
+
+        <form name="edit_form"
+              action="."
+              method="post"
+              enctype="multipart/form-data"
+                tal:attributes="action string:${here_url}/${template/getId}" >
+
+                    <div class="field">
+                        <input type="checkbox"
+                               id="exposeDCMetaTags"
+                               name="exposeDCMetaTags"
+                               tal:define="exposeDCMetaTags portal/portal_properties/site_properties/exposeDCMetaTags"
+                               tal:attributes="checked exposeDCMetaTags"/>
+                        <label for="exposeDCMetaTags">Expose <abbr title="Dublin Core">DC</abbr> meta tags</label>
+                        <div class="formHelp" i18n:translate="description_seo_dc_metatags">
+                           Controls if <abbr title="Dublin Core">DC</abbr> metatags are exposed to page
+                           header. They include DC.description, DC.type,
+                           DC.format, DC.creator and others.
+                        </div>
+                    </div>
+
+                    <div class="field"
+                         tal:define="default_custom_metatags portal/portal_properties/seo_properties/default_custom_metatags|python:[]">
+                        <label for="default_custom_metatags" i18n:translate="label_default_custom_metatags">
+                            Default custom metatags.
+                        </label>
+                        <div class="formHelp" i18n:translate="help_default_custom_metatags">
+                            Fill in custom metatag names (one per line) which will appear on qseo_properties
+                            edit tab.
+                        </div>
+                        <div class="widget">
+                            <textarea cols="60" id="default_custom_metatags" name="default_custom_metatags" rows="15"
+                                      tal:content="python:'\n'.join(default_custom_metatags)"></textarea>
+                        </div>
+                    </div>
+
+                    <div class="field"
+                         tal:define="additionalKeywords portal/portal_properties/seo_properties/additional_keywords">
+                        <label for="additionalKeywords" i18n:translate="label_additional_keywords">
+                            Additional keywords that should be added to the content types.
+                        </label>
+                        <div class="formHelp" i18n:translate="help_additional_keywords">
+                            Use this field when you want that your content types receive
+                            additional keywords from the ones you manually specify. Enter
+                            one keyword per line.
+                        </div>
+                        <div class="widget">
+                            <textarea cols="60" id="additionalKeywords" name="additionalKeywords" rows="15"
+                                      tal:content="python:'\n'.join(additionalKeywords)"></textarea>
+                        </div>
+                    </div>
+
+                    <fieldset class="portalTypes"
+                              tal:define="portal_types    portal/portal_types;
+                                          allTypes        portal_types/listContentTypes;
+                                          typeLists       python:modules['quintagroup.seoptimizer.util'].createMultiColumnList(context, allTypes, numCols=3, sort_on='title_or_id')">
+                        <legend i18n:translate="label_content_type_title">Content Types</legend>
+
+                        <div class="formHelp" i18n:translate="description_seo_content_types">
+                            Select content types that will have SEO properties
+                            enabled.
+                        </div>
+                        <div style="float:left; margin-right: 2em;" tal:repeat="sublist typeLists">
+                            <ul class="configlets">
+                                <li tal:repeat="ptypeInfo sublist">
+                                    <tal:type define="type python:portal_types.getTypeInfo(ptypeInfo);
+                                                      name type/getId;">
+
+                                        <input  type="checkbox"
+                                                name="portalTypes:list"
+                                                tal:attributes="id name;
+                                                                value name;
+                                                                checked python:test(filter(lambda x:x.id == 'seo_properties', type.listActions()), True, None)"/>
+                                        <label tal:attributes="for python:type.getId()"
+                                               tal:content="type/Title"/>
+                                    </tal:type>
+                                </li>
+                            </ul>
+                        </div>
+                    </fieldset>
+
+                    <div class="formControls"
+                         tal:define="process_creation request/process_creation|nothing;"
+                         i18n:domain="plone">
+                         <input class="context"
+                             tabindex=""
+                             type="submit"
+                             name="form.button.Save"
+                             value="Save"
+                             i18n:attributes="value"
+                             tal:attributes="tabindex tabindex/next;" />
+                    </div>
+                    <input type="hidden" name="form.submitted" value="1" />
+                </form>
+    </div>
+ </body>
+</html>
Index: /quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/browser/views.py
===================================================================
--- /quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/browser/views.py	(revision 392)
+++ /quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/browser/views.py	(revision 392)
@@ -0,0 +1,7 @@
+from plone.app.controlpanel.form import ControlPanelView
+
+class SEOControlPanel( ControlPanelView ):
+    """
+    """
+
+
Index: intagroup.seoptimizer/trunk/quintagroup/seoptimizer/profiles/default/actions.xml
===================================================================
--- /quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/profiles/default/actions.xml	(revision 391)
+++ 	(revision )
@@ -1,19 +1,0 @@
-<?xml version="1.0"?>
-<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="seo_properties" meta_type="CMF Action" i18n:domain="plone">
-   <property name="title" i18n:translate="">SEO Properties</property>
-   <property name="description" i18n:translate=""></property>
-   <property
-      name="url_expr">string:${object_url}/qseo_properties_edit_form</property>
-   <property name="icon_expr"></property>
-   <property
-      name="available_expr"></property>
-   <property name="permissions">
-    <element value="Modify portal content"/>
-   </property>
-   <property name="visible">True</property>
-  </object>
- </object>
-</object>
Index: /quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/profiles/default/controlpanel.xml
===================================================================
--- /quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/profiles/default/controlpanel.xml	(revision 392)
+++ /quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/profiles/default/controlpanel.xml	(revision 392)
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<object name="portal_controlpanel" meta_type="Plone Control Panel Tool"
+    xmlns:i18n="http://xml.zope.org/namespaces/i18n" i18n:domain="plone">
+ <configlet title="Search Engine Optimizer" action_id="qSEOptimizer"
+    appId="qSEOptimizer" category="Products" condition_expr=""
+    url_expr="string:${portal_url}/prefs_qseo_setup_form"
+    visible="True" i18n:attributes="">
+  <permission>ManagePortal</permission>
+ </configlet>
+</object>
Index: /quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/profiles/default/propertiestool.xml
===================================================================
--- /quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/profiles/default/propertiestool.xml	(revision 392)
+++ /quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/profiles/default/propertiestool.xml	(revision 392)
@@ -0,0 +1,73 @@
+<?xml version="1.0"?>
+<object name="portal_properties" meta_type="Plone Properties Tool">
+ <object name="seo_properties" meta_type="Plone Property Sheet">
+  <property name="title">SEO Properties</property>
+  <property name="stop_words" type="lines">
+   <element value="a"/>
+   <element value="amp"/>
+   <element value="and"/>
+   <element value="are"/>
+   <element value="arial"/>
+   <element value="as"/>
+   <element value="at"/> 
+   <element value="be"/>
+   <element value="but"/>
+   <element value="by"/>
+   <element value="can"/>
+   <element value="com"/>
+   <element value="do"/>
+   <element value="font"/>
+   <element value="for"/>
+   <element value="from"/>
+   <element value="gif"/>
+   <element value="had"/>
+   <element value="has"/>
+   <element value="have"/>
+   <element value="he"/>
+   <element value="helvetica"/>
+   <element value="her"/>
+   <element value="his"/>
+   <element value="how"/>
+   <element value="href"/>
+   <element value="i"/>
+   <element value="if"/>
+   <element value="in"/>
+   <element value="is"/>
+   <element value="it"/>
+   <element value="javascript"/>
+   <element value="jpg"/>
+   <element value="made"/>
+   <element value="net"/>
+   <element value="of"/>
+   <element value="on"/>
+   <element value="or"/>
+   <element value="org"/>
+   <element value="our"/>
+   <element value="sans"/>
+   <element value="see"/>
+   <element value="serif"/>
+   <element value="she"/>
+   <element value="that"/>
+   <element value="the"/>
+   <element value="this"/>
+   <element value="to"/>
+   <element value="us"/>
+   <element value="we"/>
+   <element value="with"/>
+   <element value="you"/>
+   <element value="your"/>
+  </property>
+  <property name="fields" type="lines">
+   <element value="seo_title"/>
+   <element value="seo_description"/>
+   <element value="seo_keywords"/>
+  </property>
+  <property name="additional_keywords" type="lines">
+  </property>
+  <property name="default_custom_metatags" type="lines">
+  </property>
+ </object>
+ <object name="site_properties" meta_type="Plone Property Sheet">
+  <property name="exposeDCMetaTags" type="boolean">True</property>
+ </object>
+</object>
Index: /quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/profiles/default/types.xml
===================================================================
--- /quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/profiles/default/types.xml	(revision 392)
+++ /quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/profiles/default/types.xml	(revision 392)
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<object name="portal_types" meta_type="Plone Types Tool">
+ <property name="title">Controls the available content types in your portal</property>
+ <object name="Document" meta_type="Factory-based Type Information with dynamic views"/>
+ <object name="File" meta_type="Factory-based Type Information with dynamic views"/>
+ <object name="News Item" meta_type="Factory-based Type Information with dynamic views"/>
+</object>
Index: /quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/profiles/default/types/Document.xml
===================================================================
--- /quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/profiles/default/types/Document.xml	(revision 392)
+++ /quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/profiles/default/types/Document.xml	(revision 392)
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<object name="Document" meta_type="Factory-based Type Information with dynamic views"
+   i18n:domain="plone" xmlns:i18n="http://xml.zope.org/namespaces/i18n">
+ <action title="SEO Properties" action_id="seo_properties" category="object" condition_expr=""
+    url_expr="string:${object_url}/qseo_properties_edit_form" visible="True"
+    i18n:attributes="">
+  <permission value="Modify portal content"/>
+ </action>
+</object>
Index: /quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/profiles/default/types/File.xml
===================================================================
--- /quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/profiles/default/types/File.xml	(revision 392)
+++ /quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/profiles/default/types/File.xml	(revision 392)
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<object name="File" meta_type="Factory-based Type Information with dynamic views"
+   i18n:domain="plone" xmlns:i18n="http://xml.zope.org/namespaces/i18n">
+ <action title="SEO Properties" action_id="seo_properties" category="object" condition_expr=""
+    url_expr="string:${object_url}/qseo_properties_edit_form" visible="True"
+    i18n:attributes="">
+  <permission value="Modify portal content"/>
+ </action>
+</object>
Index: /quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/profiles/default/types/News_Item.xml
===================================================================
--- /quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/profiles/default/types/News_Item.xml	(revision 392)
+++ /quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/profiles/default/types/News_Item.xml	(revision 392)
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<object name="News Item" meta_type="Factory-based Type Information with dynamic views"
+   i18n:domain="plone" xmlns:i18n="http://xml.zope.org/namespaces/i18n">
+ <action title="SEO Properties" action_id="seo_properties" category="object" condition_expr=""
+    url_expr="string:${object_url}/qseo_properties_edit_form" visible="True"
+    i18n:attributes="">
+  <permission value="Modify portal content"/>
+ </action>
+</object>
Index: /quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/skins/quintagroup.seoptimizer/prefs_qseo_setup_form.cpt
===================================================================
--- /quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/skins/quintagroup.seoptimizer/prefs_qseo_setup_form.cpt	(revision 391)
+++ /quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/skins/quintagroup.seoptimizer/prefs_qseo_setup_form.cpt	(revision 392)
@@ -76,5 +76,5 @@
                               tal:define="portal_types    portal/portal_types;
                                           allTypes        portal_types/listContentTypes;
-                                          typeLists       python:modules['Products.qSEOptimizer.util'].createMultiColumnList(context, allTypes, numCols=3, sort_on='title_or_id')">
+                                          typeLists       python:modules['quintagroup.seoptimizer.util'].createMultiColumnList(context, allTypes, numCols=3, sort_on='title_or_id')">
                         <legend i18n:translate="label_content_type_title">Content Types</legend>
 
