Commits

Vladimir Mihailenco committed fdbf0f4

Remove unused module

  • Participants
  • Parent commits 2be5b64

Comments (0)

Files changed (65)

www/system/init.php

 }
 
 // system pathes
-define('ROOT_DIR', realpath(dirname(__FILE__) . '/..'));
-define('WEB_DIR', ROOT_DIR);
-define('SYSTEM_DIR', ROOT_DIR . '/system');
-define('RESOURCES_DIR', SYSTEM_DIR . '/resources');
-define('LIBRARY_DIR', SYSTEM_DIR . '/library');
-define('MODULES_DIR', SYSTEM_DIR . '/modules');
+define('ROOT_PATH', realpath(dirname(__FILE__) . '/..'));
+define('WEB_PATH', ROOT_PATH);
+define('SYSTEM_PATH', ROOT_PATH . '/system');
+define('RESOURCES_PATH', SYSTEM_PATH . '/resources');
+define('LIBRARY_PATH', SYSTEM_PATH . '/library');
+define('MODULES_PATH', SYSTEM_PATH . '/modules');
 
 // application specific pathes
-define('APPLICATION_PATH', SYSTEM_DIR . '/application');
-define('CONFIGS_DIR', APPLICATION_PATH . '/configs');
-define('LOGS_DIR', APPLICATION_PATH . '/logs');
-define('CACHE_DIR', APPLICATION_PATH . '/cache/' . APPLICATION_ENV);
+define('APPLICATION_PATH', SYSTEM_PATH . '/application');
+define('CONFIGS_PATH', APPLICATION_PATH . '/configs');
+define('LOGS_PATH', APPLICATION_PATH . '/logs');
+define('CACHE_PATH', APPLICATION_PATH . '/cache/' . APPLICATION_ENV);
 
 // Zend Framework requires library dir to be on include_path
-set_include_path(LIBRARY_DIR);
+set_include_path(LIBRARY_PATH);
 
 // use our own much more simple and more flexible loader
-require_once LIBRARY_DIR . '/Neno/Loader.php';
+require_once LIBRARY_PATH . '/Neno/Loader.php';
 
 // setup loader
 Neno_Loader::getInstance()
         ->registerPrefixes(array(
-            'sfYaml' => LIBRARY_DIR . '/yaml',
+            'sfYaml' => LIBRARY_PATH . '/yaml',
         ));
 
 // load cache if exists
 //if ('prod' === APPLICATION_ENV) {
-//    $cacheFile = CACHE_DIR . '/include.php';
+//    $cacheFile = CACHE_PATH . '/include.php';
 //    if (file_exists($cacheFile)) {
 //        require $cacheFile;
 //    } else {
 //        Neno_Loader::getInstance()
 //                ->setTrackFiles(true)
-//                ->addTrackDir(LIBRARY_DIR)
-//                ->addIgnoreDir(LIBRARY_DIR . '/yaml')
+//                ->addTrackDir(LIBRARY_PATH)
+//                ->addIgnoreDir(LIBRARY_PATH . '/yaml')
 //                ->setCacheFile($cacheFile);
 //    }
 //} else {
-//    $cacheFile = CACHE_DIR . '/include.php';
+//    $cacheFile = CACHE_PATH . '/include.php';
 //    if (file_exists($cacheFile)) {
 //        require $cacheFile;
 //    }
 //    Neno_Loader::getInstance()
 //            ->setTrackFiles(true)
-//            ->addTrackDir(LIBRARY_DIR)
-//            ->addIgnoreDir(LIBRARY_DIR . '/yaml')
+//            ->addTrackDir(LIBRARY_PATH)
+//            ->addIgnoreDir(LIBRARY_PATH . '/yaml')
 //            ->setCacheFile($cacheFile);
 //}
 

www/system/library/Neno/Toolkit.php

         $cache = Zend_Registry::get('configCache');
         if (!($config = $cache->load('config'))) {
             $configDirs = array(
-                sprintf('%s/system/configs', MODULES_DIR),
-                CONFIGS_DIR
+                sprintf('%s/system/configs', MODULES_PATH),
+                CONFIGS_PATH
             );
             $loader = new Neno_ConfigLoader(APPLICATION_ENV);
 
 
             foreach ($config['application']['modules'] as $moduleName) {
                 if (in_array($moduleName, $this->systemModules)) { continue; }
-                $configDirs[] = MODULES_DIR . "/{$moduleName}/configs";
+                $configDirs[] = MODULES_PATH . "/{$moduleName}/configs";
             }
 
             if ($config['application']['log']) {
 
             foreach ($config['application']['modules'] as $moduleName) {
                 $config['application']['resources']['frontController']['controllerDirectory'][$moduleName]
-                        = MODULES_DIR . "/{$moduleName}/controllers";
+                        = MODULES_PATH . "/{$moduleName}/controllers";
             }
 
             $cache->save($config);

www/system/library/ZendY/Form.php

         $modulePrefix = ucfirst($module);
         $this->addElementPrefixPath(
             $modulePrefix . '_Validate',
-            MODULES_DIR . "/{$module}/library/Validate",
+            MODULES_PATH . "/{$module}/library/Validate",
             'validate'
         );
         $this->addElementPrefixPath(
             $modulePrefix . '_Filter',
-            MODULES_DIR . "/{$module}/library/Filter",
+            MODULES_PATH . "/{$module}/library/Filter",
             'filter'
         );
     }

www/system/library/ZendY/Tool/Provider/Clean.php

     {
         self::initialize();
 
-        if (!defined('LOGS_DIR')) {
+        if (!defined('LOGS_PATH')) {
             echo 'Can not found log dir... Aborting...';
             return;
         }
 
-        IO_File::emptyDir(LOGS_DIR);
+        IO_File::emptyDir(LOGS_PATH);
 
         return $this;
     }
     {
         self::initialize();
 
-        if (!defined('CACHE_DIR')) {
+        if (!defined('CACHE_PATH')) {
             echo 'Can not found cache dir... Aborting...';
             return;
         }
 
-        IO_File::emptyDir(CACHE_DIR);
+        IO_File::emptyDir(CACHE_PATH);
         foreach (Zend_Registry::get('envs') as $env) {
-            IO_File::createDir(sprintf('%s/%s', CACHE_DIR, $env));
+            IO_File::createDir(sprintf('%s/%s', CACHE_PATH, $env));
         }
 
         return $this;
     {
         self::initialize();
 
-        if (!defined('CONFIGS_DIR')) {
+        if (!defined('CONFIGS_PATH')) {
             echo 'Can not found configs dir... Aborting...';
             return;
         }
 
-        IO_File::emptyDir(CONFIGS_DIR);
+        IO_File::emptyDir(CONFIGS_PATH);
         foreach (Zend_Registry::get('envs') as $env) {
-            IO_File::createDir(sprintf('%s/config_%s.yml', CONFIGS_DIR, $env));
+            IO_File::createDir(sprintf('%s/config_%s.yml', CONFIGS_PATH, $env));
         }
 
         return $this;

www/system/library/ZendY/Tool/Provider/Doctrine.php

 {
     protected function getModuleDir($module)
     {
-        $moduleDir = MODULES_DIR . '/' . $module;
+        $moduleDir = MODULES_PATH . '/' . $module;
         if (!file_exists($moduleDir)) {
             echo "Can not find module dir at {$moduleDir}... Aborting...";
             return false;

www/system/library/ZendY/Tool/Provider/Modules.php

 
         $modules = $this->getModules($modules);
         foreach ($modules as $moduleName) {
-            $webDir = MODULES_DIR . "/{$moduleName}/web";
+            $webDir = MODULES_PATH . "/{$moduleName}/web";
             if (!file_exists($webDir)) {
                 continue;
             }
                      continue;
                  }
 
-                 $targetDir = WEB_DIR . '/' . $dir->getFilename() . '/' . $moduleName;
+                 $targetDir = WEB_PATH . '/' . $dir->getFilename() . '/' . $moduleName;
                  IO_File::copyDir($dir->getPathname(), $targetDir);
              }
         }
     {
         self::initialize();
 
-        $modelDir = IO_File::emptyDir(CACHE_DIR . '/model');
-        $configDir = IO_File::emptyDir(CACHE_DIR . '/config');
+        $modelDir = IO_File::emptyDir(CACHE_PATH . '/model');
+        $configDir = IO_File::emptyDir(CACHE_PATH . '/config');
         $modules = $this->getModules($modules);
 
         // collect all configs in one dir
         foreach ($modules as $moduleName) {
-            $moduleConfigDir = MODULES_DIR . "/$moduleName/configs/doctrine";
+            $moduleConfigDir = MODULES_PATH . "/$moduleName/configs/doctrine";
             if (!file_exists($moduleConfigDir)) {
                 continue;
             }
             $moduleBaseModelDir = $modelDir . "/Base{$modulePrefix}";
 
             if (file_exists($moduleModelDir) && file_exists($moduleBaseModelDir)) {
-                $targetDir = MODULES_DIR . "/{$moduleName}/library";
+                $targetDir = MODULES_PATH . "/{$moduleName}/library";
                 $it = new DirectoryIterator($moduleModelDir);
                 foreach ($it as $file) {
                     if (!$file->isFile()) {
                     }
                 }
 
-                $targetDir = IO_File::emptyDir(MODULES_DIR . "/{$moduleName}/library/Base");
+                $targetDir = IO_File::emptyDir(MODULES_PATH . "/{$moduleName}/library/Base");
                 $it = new DirectoryIterator($moduleBaseModelDir);
                 foreach ($it as $file) {
                     if (!$file->isFile()) {
     {
         self::initialize();
 
-        $modelDir = IO_File::emptyDir(CACHE_DIR . '/model');
+        $modelDir = IO_File::emptyDir(CACHE_PATH . '/model');
 
         $modules = $this->getModules($modules);
         foreach ($modules as $moduleName) {
-            $moduleModelDir = MODULES_DIR . "/{$moduleName}/library";
+            $moduleModelDir = MODULES_PATH . "/{$moduleName}/library";
             if (!file_exists($moduleModelDir)) {
                 continue;
             }
     {
         self::initialize();
 
-        $fixtureDir = IO_File::createDir(CACHE_DIR . '/fixtures');
+        $fixtureDir = IO_File::createDir(CACHE_PATH . '/fixtures');
         IO_File::emptyDir($fixtureDir);
 
         $modules = $this->getModules($modules);
         foreach ($modules as $moduleName) {
-            $moduleFixtureDir = MODULES_DIR . "/{$moduleName}/fixtures";
+            $moduleFixtureDir = MODULES_PATH . "/{$moduleName}/fixtures";
             if (!file_exists($moduleFixtureDir)) {
                 continue;
             }

www/system/library/ZendY/Toolkit.php

         $format = '%priorityName% (%priority%): %message%' . PHP_EOL;
         $formatter = new Zend_Log_Formatter_Simple($format);
 
-        $writer = new Zend_Log_Writer_Stream(LOGS_DIR . '/system.log');
+        $writer = new Zend_Log_Writer_Stream(LOGS_PATH . '/system.log');
         $writer->setFormatter($formatter);
         $logger->addWriter($writer);
 
             }
 
             $translator->addTranslation(array(
-                'content' => RESOURCES_DIR . '/language',
+                'content' => RESOURCES_PATH . '/language',
                 'locale' => null,
             ));
 
             $modules = Zend_Registry::get('applicationConfig')->modules;
             foreach ($modules as $moduleName) {
-                $translationDir = MODULES_DIR . "/{$moduleName}/i18n";
+                $translationDir = MODULES_PATH . "/{$moduleName}/i18n";
                 if (file_exists($translationDir)) {
                     $translator->addTranslation(array(
                         'content' => $translationDir,
     public function getZendCacheBackendFile()
     {
         return new Zend_Cache_Backend_File(array(
-            'cache_dir' => CACHE_DIR,
+            'CACHE_PATH' => CACHE_PATH,
         ));
     }
 

www/system/modules/blog/Bootstrap.php

         ));
 
         $view = Zend_Registry::get('zendView');
-        $view->addBasePath(MODULES_DIR . '/blog/views', 'Blog_View');
+        $view->addBasePath(MODULES_PATH . '/blog/views', 'Blog_View');
     }
 }

www/system/modules/collector/Bootstrap.php

-<?php
-class Collector_Bootstrap extends Zend_Application_Module_Bootstrap
-{
-    // disable ResourceLoader
-    protected $_resourceLoader = false;
-
-    protected function _initModule()
-    {
-        $baseDir = dirname(__FILE__);
-        Neno_Loader::getInstance()->registerPluginPrefixes(array(
-            'Collector_' => $baseDir . '/library',
-        ));
-
-        $view = Zend_Registry::get('zendView');
-        $view->addBasePath(MODULES_DIR . '/collector/views', 'Collector_View');
-    }
-}

www/system/modules/collector/configs/acl.yml

-guest:
-  Collector_Invite:
-    privileges:
-      index: true
-      confirm: true
-      confirmRegistration: true
-      registration: true
-      registrationConfirmed: true
-      enterInviteFirst: true
-      invite: true

www/system/modules/collector/configs/app.yml

-collector:
-  # emails will be sent from this user
-  mail:
-    email: no-reply@site.com
-    name: Test name
-
-  # confirmation link will be valid in this period
-  # in format php.net/strtotime
-  link_expiration_time: +3 days
-
-  # pathes to invites and form configs
-  invites_config_file: <?php echo MODULES_DIR; ?>/collector/configs/invites.yml
-  form_config_file: <?php echo MODULES_DIR; ?>/collector/configs/form.yml

www/system/modules/collector/configs/doctrine/registration.yml

-Collector_Registration:
-  columns: { email: { type: string(255), notnull: true }, company_name: { type: string(255), notnull: true }, site: { type: string(255), notnull: true }, contact_name: { type: string(255), notnull: true }, type: { type: string(255), notnull: true }, address1: { type: string(255), notnull: true }, address2: { type: string(255), notnull: true }, city: { type: string(255), notnull: true }, state: { type: string(255) }, zip: { type: string(255), notnull: true }, country: { type: string(255), notnull: true }, additional: { type: string, notnull: true }, confirm_agree1: { type: integer(1) }, confirm_agree2: { type: integer(1) } }

www/system/modules/collector/configs/form.yml

-elements:
-  # Mandatory email field
-  email:
-    type: text
-    options:
-      label: E-mail
-      attribs:
-        size: 80
-      required: true
-      # check that email is valid and it's unique
-      validators:
-        email: { validator: SimpleEmailAddress }
-        unique: { validator: Doctrine_NotExists, options: { model: Collector_Registration, field: email } }
-
-  company_name:
-    type: text
-    options:
-      label: Company name
-      attribs:
-        size: 80
-      required: true
-
-  site:
-    type: text
-    options:
-      label: Company/personal website
-      attribs:
-        size: 80
-      required: true
-
-  contact_name:
-    type: text
-    options:
-      label: Owner/contact name
-      attribs:
-        size: 80
-      required: true
-
-  type:
-    type: select
-    options:
-      label: Type
-      multiOptions:
-        '': Choose type
-        type1: Type 1
-        type2: Type 2
-        type3: Type 3
-      required: true
-
-  address1:
-    type: text
-    options:
-      label: Address line #1
-      attribs:
-        size: 80
-      required: true
-
-  address2:
-    type: text
-    options:
-      label: Address line #2
-      attribs:
-        size: 80
-      required: true
-
-  city:
-    type: text
-    options:
-      label: Town/City
-      attribs:
-        size: 80
-      required: true
-
-  state:
-    type: text
-    options:
-      label: State/Province
-      attribs:
-        size: 80
-
-  zip:
-    type: text
-    options:
-      label: Zip/Postal code
-      required: true
-      attribs:
-        size: 80
-
-  country:
-    type: countriesSelect
-    options:
-      label: Country
-      required: true
-
-  additional:
-    type: textarea
-    options:
-      label: Additional information
-      required: true
-      attribs:
-        cols: 60
-        rows: 5
-
-  # Confirm
-  confirm:
-    type: multiCheckbox
-    options:
-      label: Confirm
-      multiOptions:
-        agree1: Yes, I agree
-        agree2: Yes, I agree 2
-      required: true
-
-  # Submit form
-  submit:
-    type: mySubmit
-    options:
-      label: Submit
-
-displayGroups:
-    first_group:
-      name: first_group
-      elements: [ email, company_name, site, contact_name, type, address1, address2, city, state, zip, country, additional ]
-      options:
-        legend: This is first group
-        order: 0

www/system/modules/collector/configs/invites.yml

-'this is very secret invitation code': true
-'  this is another invitation code with spaces  ': true
-'this invite is used': false

www/system/modules/collector/configs/routes.yml

-index:
-  route: ''
-  defaults:
-    module: collector
-    controller: invite
-    action: index
-
-collector_invite_invite:
-  route: 
-  defaults:
-    module: collector
-    controller: invite
-    action: index
-
-collector_invite_registration:
-  route: registration
-  defaults:
-    module: collector
-    controller: invite
-    action: registration
-
-collector_invite_confirmRegistration:
-  route: confirm-registration
-  defaults:
-    module: collector
-    controller: invite
-    action: confirm-registration
-
-collector_invite_confirm:
-  route: confirm/:secret
-  defaults:
-    module: collector
-    controller: invite
-    action: confirm
-
-collector_invite_registrationConfirmed:
-  route: registration-confirmed
-  defaults:
-    module: collector
-    controller: invite
-    action: registration-confirmed
-
-collector_invite_regenerate:
-  route: regenerate
-  defaults:
-    module: collector
-    controller: invite
-    action: regenerate
-
-collector_invite_direct:
-  route: invite/:invite
-  defaults:
-    module: collector
-    controller: invite
-    action: invite

www/system/modules/collector/configs/view.yml

-default:
-  metas:
-    title: ForestOrange
-    description: ForestOrange
-    keywords: forest, orange

www/system/modules/collector/controllers/InviteController.php

-<?php
-class Collector_InviteController extends ZendY_Controller_Action
-{
-    public function indexAction()
-    {
-        $inviteService = new Collector_Service_Invite(
-                Zend_Registry::get('applicationConfig')->collector->invites_config_file);
-
-        $this->view->form = $form = $inviteService->getForm();
-
-        if ($this->_request->isPost()) {
-            if ($form->isValidAndPopulate($this->_request->getPost())) {
-                $this->getSession()->invite = $form->getValue('invite');
-
-                $this->_helper->redirector->gotoRoute(array(),
-                        'collector_invite_registration', true);
-                return;
-            }
-        }
-
-        $this->page(__METHOD__);
-    }
-
-    public function registrationAction()
-    {
-        $session = $this->getSession();
-        if (!$session->invite) {
-            $this->_forward('enter-invite-first');
-        }
-
-        $registrationService = new Collector_Service_Registration(
-                Zend_Registry::get('applicationConfig')->collector->form_config_file);
-        $this->view->form = $form = $registrationService->getForm();
-
-        if ($this->_request->isPost()) {
-            if ($form->isValidAndPopulate($this->_request->getPost())) {
-                $model = $registrationService->createModel();
-                $model->invite = $this->getSession()->invite;
-                $form->create($model);
-
-                unset($session->invite);
-
-                $this->_helper->redirector->gotoRoute(array(),
-                        'collector_invite_confirmRegistration', true);
-                return;
-            }
-        }
-
-        $this->page(__METHOD__);
-    }
-
-    public function confirmRegistrationAction()
-    {
-        $session = new Zend_Session_Namespace();
-        $this->view->mailBody = $session->mailBody;
-
-        $this->page(__METHOD__);
-    }
-
-    public function confirmAction()
-    {
-        $secret = $this->_getParam('secret');
-
-        $secretValidator = new Collector_Validate_Secret(array(
-            'expiration_time' => Zend_Registry::get('applicationConfig')->collector
-                    ->link_expiration_time,
-        ));
-
-        if ($secretValidator->isValid($secret)) {
-            $registrationService = new Collector_Service_Registration(
-                    Zend_Registry::get('applicationConfig')->collector->form_config_file);
-            $registration = $registrationService->getBySecret($secret);
-
-            $inviteService = new Collector_Service_Invite(
-                    Zend_Registry::get('applicationConfig')->collector->invites_config_file);
-
-            $inviteValidator = new Collector_Validate_Invite(array(
-                'invites' => $inviteService->getInvites()
-            ));
-            if ($inviteValidator->isValid($registration->getInvite())) {
-                $registration->confirm();
-
-                $this->_helper->redirector->gotoRoute(array(),
-                        'collector_invite_registrationConfirmed', true);
-            } else {
-                $this->flashError($inviteValidator->getMessages());
-            }
-        } else {
-            $this->flashError($secretValidator->getMessages());
-        }
-
-        $this->_helper->redirector->gotoRoute(array(), 'index', true);
-    }
-
-    public function registrationConfirmedAction()
-    {
-        $this->page(__METHOD__);
-    }
-
-    public function regenerateAction()
-    {
-        $registrationService = new Collector_Service_Registration(
-                Zend_Registry::get('applicationConfig')->collector->form_config_file);
-        $registrationService->generateTable();
-
-        $this->page(__METHOD__);
-    }
-
-    public function enterInviteFirstAction()
-    {
-        $inviteService = new Collector_Service_Invite(
-                Zend_Registry::get('applicationConfig')->collector->invites_config_file);
-
-        $this->view->form = $form = $inviteService->getForm();
-        $form->setAction($this->_helper->url->url(array(), 'collector_invite_invite', true));
-
-        $this->page(__METHOD__);
-    }
-
-    public function inviteAction()
-    {
-        $invite = $this->_getParam('invite');
-
-        $inviteService = new Collector_Service_Invite(
-                Zend_Registry::get('applicationConfig')->collector->invites_config_file);
-
-        $inviteValidator = new Collector_Validate_Invite(array(
-            'invites' => $inviteService->getInvites()
-        ));
-        if ($inviteValidator->isValid($invite)) {
-            $this->getSession()->invite = $invite;
-
-            $this->_helper->redirector->gotoRoute(array(),
-                    'collector_invite_registration', true);
-            return;
-        } else {
-            $this->flashError($inviteValidator->getMessages());
-            $this->_helper->redirector->gotoRoute(array(),
-                    'index', true);
-            return;
-        }
-    }
-}

www/system/modules/collector/fixtures/user.yml

-Identity_User:
-  admin:
-    login: admin
-    password: 06efa16e1b
-    role_id: admin

www/system/modules/collector/i18n/en/index/confirm-registration.php

-<?php
-return array(
-    'Collector_InviteController::confirmRegistrationAction' => 'Confirm your registration',
-);

www/system/modules/collector/i18n/en/index/enter-invite-first.php

-<?php
-return array(
-    'Collector_InviteController::enterInviteFirstAction' => 'Enter invite first',
-);

www/system/modules/collector/i18n/en/index/index.php

-<?php
-return array(
-    'Collector_InviteController::indexAction' => 'ForestOrange',
-);

www/system/modules/collector/i18n/en/index/regenerate.php

-<?php
-return array(
-    'Collector_InviteController::regenerateAction' => 'Regenerate form',
-);

www/system/modules/collector/i18n/en/index/registration-confirmed.php

-<?php
-return array(
-    'Collector_InviteController::registrationConfirmedAction' => 'Registration confirmed',
-);

www/system/modules/collector/i18n/en/index/registration.php

-<?php
-return array(
-    'Collector_InviteController::registrationAction' => 'Registration',
-);

www/system/modules/collector/library/Base/Registration.php

-<?php
-
-
-abstract class Collector_Base_Registration extends DoctrineX_Record
-{
-    public function setTableDefinition()
-    {
-        $this->setTableName('collector__registration');
-        $this->hasColumn('email', 'string', 255, array(
-             'type' => 'string',
-             'notnull' => true,
-             'length' => '255',
-             ));
-        $this->hasColumn('company_name', 'string', 255, array(
-             'type' => 'string',
-             'notnull' => true,
-             'length' => '255',
-             ));
-        $this->hasColumn('site', 'string', 255, array(
-             'type' => 'string',
-             'notnull' => true,
-             'length' => '255',
-             ));
-        $this->hasColumn('contact_name', 'string', 255, array(
-             'type' => 'string',
-             'notnull' => true,
-             'length' => '255',
-             ));
-        $this->hasColumn('type', 'string', 255, array(
-             'type' => 'string',
-             'notnull' => true,
-             'length' => '255',
-             ));
-        $this->hasColumn('address1', 'string', 255, array(
-             'type' => 'string',
-             'notnull' => true,
-             'length' => '255',
-             ));
-        $this->hasColumn('address2', 'string', 255, array(
-             'type' => 'string',
-             'notnull' => true,
-             'length' => '255',
-             ));
-        $this->hasColumn('city', 'string', 255, array(
-             'type' => 'string',
-             'notnull' => true,
-             'length' => '255',
-             ));
-        $this->hasColumn('state', 'string', 255, array(
-             'type' => 'string',
-             'length' => '255',
-             ));
-        $this->hasColumn('zip', 'string', 255, array(
-             'type' => 'string',
-             'notnull' => true,
-             'length' => '255',
-             ));
-        $this->hasColumn('country', 'string', 255, array(
-             'type' => 'string',
-             'notnull' => true,
-             'length' => '255',
-             ));
-        $this->hasColumn('additional', 'string', null, array(
-             'type' => 'string',
-             'notnull' => true,
-             ));
-        $this->hasColumn('confirm_agree1', 'integer', 1, array(
-             'type' => 'integer',
-             'length' => '1',
-             ));
-        $this->hasColumn('confirm_agree2', 'integer', 1, array(
-             'type' => 'integer',
-             'length' => '1',
-             ));
-    }
-
-    public function setUp()
-    {
-        parent::setUp();
-        
-    }
-}

www/system/modules/collector/library/Form/Invite.php

-<?php
-class Collector_Form_Invite extends ZendY_Form
-{
-    public function init()
-    {
-        parent::init();
-
-        $this->addElement('text', 'invite', array(
-            'label' => 'Please enter the code that was sent to you',
-            'attribs' => array(
-                'size' => 80,
-            ),
-            'required' => true,
-            'validators' => array(
-                array('Invite', true, array('invites' => $this->service->getInvites())),
-            ),
-        ));
-
-        $this->addElement('mySubmit', 'submit', array(
-            'label' => 'Confirm',
-        ));
-    }
-}

www/system/modules/collector/library/Form/Registration.php

-<?php
-class Collector_Form_Registration extends ZendY_Form_Doctrine
-{
-    public function init()
-    {
-        parent::init();
-
-        $this->addElement('hash', 'hash', array('salt' => __FILE__));
-    }
-
-    public function create(Doctrine_Record $model = null)
-    {
-        $data = $this->getValues();
-        foreach ($this->_elements as $element) {
-            switch ($element->getType()) {
-                case 'Zend_Form_Element_MultiCheckbox':
-                    foreach ($data[$element->getName()] as $n => $v) {
-                        $data[$element->getName() . '_' . $v] = 1;
-                    }
-                    break;
-            }
-        }
-        return $this->service->create($data, $model);
-    }
-
-    public function setModel(Doctrine_Record $model)
-    {
-        $this->model = $model;
-        $data = $model->toArray();
-        foreach ($this->_elements as $element) {
-            $name = $element->getName();
-            switch ($element->getType()) {
-                case 'Zend_Form_Element_MultiCheckbox':
-                    $data[$name] = array();
-                    $multiOptions = $element->getMultiOptions();
-                    foreach ($multiOptions as $n => $v) {
-                        if ($data[$name . '_' . $n]) {
-                            $data[$name][] = $n;
-                        }
-                    }
-                    break;
-            }
-        }
-        $this->populate($data);
-    }
-
-    public function asString()
-    {
-        $str = '';
-        foreach ($this->_elements as $element) {
-            $name = $element->getName();
-            switch ($element->getType()) {
-                case 'Zend_Form_Element_Text':
-                case 'Zend_Form_Element_Radio':
-                case 'Zend_Form_Element_Password':
-                case 'Zend_Form_Element_File':
-                case 'Zend_Form_Element_Image':
-                case 'Zend_Form_Element_Textarea':
-                    $str .= $element->getLabel() . ': ' . $element->getValue() . PHP_EOL;
-                    break;
-                case 'Zend_Form_Element_Select':
-                case 'ZendY_Form_Element_CountriesSelect':
-                    $options = $element->getMultiOptions();
-                    $value = $element->getValue();
-                    if ($value && isset($options[$value])) {
-                        $str .= $element->getLabel() . ': ' . $options[$value] . PHP_EOL;
-                    }
-                    break;
-                case 'Zend_Form_Element_Checkbox':
-                case 'ZendY_Form_Element_MyCheckbox':
-                    if ($element->isChecked()) {
-                        $str .= $element->getDescription() . PHP_EOL;
-                    }
-                    break;
-                case 'Zend_Form_Element_MultiCheckbox':
-                    $multiOptions = $element->getMultiOptions();
-                    foreach ($element->getValue() as $v) {
-                        $str .= $multiOptions[$v] . PHP_EOL;
-                    }
-                    break;
-                case 'Zend_Form_Element_MultiSelect':
-                    throw new Exception('MultiSelect not supported yet');
-            }
-        }
-        return $str;
-    }
-}

www/system/modules/collector/library/Registration.php

-<?php
-class Collector_Registration extends Collector_Base_Registration
-{
-    public function setTableDefinition()
-    {
-        $this->hasColumn('email', 'string', 255, array(
-            'type' => 'string',
-            'notnull' => true,
-            'length' => '255',
-        ));
-        $this->hasColumn('invite', 'string', 255, array(
-            'type' => 'string',
-            'notnull' => true,
-            'length' => '255',
-        ));
-        $this->hasColumn('secret', 'string', 32, array(
-            'type' => 'string',
-            'fixed' => 1,
-            'notnull' => true,
-            'unique' => true,
-            'length' => '32',
-        ));
-        $this->hasColumn('is_confirmed', 'boolean', null, array(
-            'type' => 'boolean',
-            'notnull' => true,
-            'default' => false,
-        ));
-
-        $this->actAs('Timestampable');
-
-        parent::setTableDefinition();
-    }
-
-    public function preInsert($event)
-    {
-        $this->secret = md5(mt_rand() . $this->email . mt_rand());
-    }
-
-    public function confirm()
-    {
-        $this->is_confirmed = 1;
-        $this->save();
-    }
-}

www/system/modules/collector/library/Service/Config.php

-<?php
-class Collector_Service_Config
-{
-    public static function getFormConfig($configFile)
-    {
-        return new Zend_Config(sfYaml::load($configFile), true);
-    }
-
-    public static function getInvitesConfig($configFile)
-    {
-        return sfYaml::load($configFile);
-    }
-
-    public static function saveInvitesConfig($configFile, $invites)
-    {
-        IO_File::set($configFile, sfYaml::dump($invites));
-    }
-}

www/system/modules/collector/library/Service/Invite.php

-<?php
-class Collector_Service_Invite extends Neno_Service
-{
-    protected $invites = array();
-    protected $configFile = '';
-
-    public function __construct($configFile)
-    {
-        $this->configFile = $configFile;
-        $this->invites = Collector_Service_Config::getInvitesConfig($this->configFile);
-    }
-
-    public function  __destruct()
-    {
-        $this->save();
-    }
-
-    public function getInvites()
-    {
-        return $this->invites;
-    }
-
-    public function getUnusedInvites()
-    {
-        return array_filter($this->invites);
-    }
-
-    public function filterUnusedValue($value)
-    {
-        return !$value;
-    }
-
-    public function getUsedInvites()
-    {
-        return array_filter($this->invites, array($this, 'filterUnusedValue'));
-    }
-
-    public function markUsed($invite)
-    {
-        $this->invites[$invite] = false;
-    }
-
-    public function markUnused($invite)
-    {
-        $this->invites[$invite] = true;
-    }
-
-    public function save()
-    {
-        Collector_Service_Config::saveInvitesConfig($this->configFile, $this->invites);
-    }
-}

www/system/modules/collector/library/Service/Registration.php

-<?php
-class Collector_Service_Registration extends Neno_Service_Doctrine
-{
-    protected $configCache = null;
-    protected $configFile = '';
-    protected $config = null;
-
-    public function __construct($configFile)
-    {
-        $this->configFile = $configFile;
-
-    }
-
-    public function getBySecret($secret)
-    {
-        return $this->createQuery('r')
-                ->addWhere('r.secret = ?', $secret)
-                ->fetchOne();
-    }
-
-    public function confirm($secret)
-    {
-        $this->createQuery('r')
-                ->update()
-                ->set('is_confirmed', 1)
-                ->addWhere('r.secret = ?', $secret)
-                ->execute();
-    }
-
-    /**
-     *
-     * @return Zend_Form
-     */
-    public function getForm($model = null)
-    {
-        if (null === $this->form) {
-            $cache = $this->getConfigCache();
-            $this->config = $cache->load('form_config');
-            if (!$this->config) {
-                $this->config = Collector_Service_Config
-                        ::getFormConfig($this->configFile);
-                $cache->save($this->config);
-
-                $this->config->service = $this;
-                $this->form = new Collector_Form_Registration($this->config);
-            } else {
-                $this->config->service = $this;
-                $this->form = new Collector_Form_Registration($this->config);
-            }
-        }
-        return parent::getForm($model);
-    }
-
-    public function getConfigCache()
-    {
-        if (null === $this->configCache) {
-            $this->configCache = Zend_Cache::factory(
-                'File',
-                Zend_Registry::get('zendCacheBackend'),
-                array(
-                    'caching' => true,
-                    'master_files' => array($this->configFile),
-                    'automatic_serialization' => true,
-                ),
-                array(),
-                false,
-                false,
-                true
-            );
-        }
-        return $this->configCache;
-    }
-
-    public function generateTable()
-    {
-        $form = $this->getForm();
-
-        $columns = array();
-        foreach ($form->getElements() as $element) {
-            $name = $element->getName();
-            $type = $element->getType();
-
-            $columns[$name] = array();
-            switch ($type) {
-                case 'Zend_Form_Element_Text':
-                case 'Zend_Form_Element_Select':
-                case 'ZendY_Form_Element_CountriesSelect':
-                case 'Zend_Form_Element_Radio':
-                case 'Zend_Form_Element_Password':
-                case 'Zend_Form_Element_File':
-                case 'Zend_Form_Element_Image':
-                    $columns[$name]['type'] = 'string(255)';
-                    break;
-                case 'Zend_Form_Element_Checkbox':
-                case 'ZendY_Form_Element_MyCheckbox':
-                    $columns[$name]['type'] = 'integer(1)';
-                    break;
-                case 'Zend_Form_Element_Textarea':
-                    $columns[$name]['type'] = 'string';
-                    break;
-                case 'Zend_Form_Element_MultiCheckbox':
-                    unset($columns[$name]);
-
-                    $multiOptions = $element->getMultiOptions();
-                    foreach ($multiOptions as $n => $v) {
-                        $columns[$name . '_' . $n] = array(
-                            'type' => 'integer(1)',
-                        );
-                    }
-
-                    continue 2;
-                case 'Zend_Form_Element_MultiSelect':
-                    throw new Exception('MultiSelect not supported yet');
-                default:
-                    unset($columns[$name]);
-                    continue 2;
-            }
-            if ($element->isRequired()) {
-                $columns[$name]['notnull'] = true;
-            }
-        }
-        $table = array(
-            $this->getModelClass() => array(
-                'columns' => $columns,
-            ),
-        );
-
-        IO_File::set(MODULES_DIR . "/collector/config/doctrine/registration.yml", sfYaml::dump($table));
-
-        $migration = new Doctrine_Migration(MODULES_DIR . '/collector/migration');
-        $migration->setCurrentVersion(0);
-        try {
-            $migration->migrate(1);
-        } catch (Doctrine_Migration_Exception $e) {}
-
-        $task = new ZendY_Tool_Provider_Modules();
-        $task
-            ->buildModels('collector')
-            ->createTables('collector');
-    }
-
-    public function create($data, $model = null)
-    {
-        $model = parent::create($data, $model);
-        if ($model) {
-            $config = Zend_Registry::get('applicationConfig')->collector;
-            $view = Zend_Registry::get('zendView');
-            $view->registration = $model;
-            $view->registrationForm = $this->getForm($model);
-            $mailBody = $view->render('invite/_registrationEmail.phtml');
-
-            $mail = new Zend_Mail();
-            $mail->setSubject('Confirm registration');
-            $mail->setFrom($config->mail->email, $config->mail->name);
-            $mail->setBodyText($mailBody);
-            $mail->addTo($model->getEmail());
-            $mail->send();
-        }
-    }
-}

www/system/modules/collector/library/Validate/Invite.php

-<?php
-class Collector_Validate_Invite extends Zend_Validate_Abstract
-{
-    const INVALID = 'inviteInvalid';
-    const NOT_EXISTS = 'inviteNotExists';
-    const IS_USED = 'inviteIsUsed';
-
-    /**
-     *
-     * @var Collector_Service_Invite
-     */
-    protected $invites = array();
-
-    protected $_messageTemplates = array(
-        self::INVALID => "Invalid type given, value should be string",
-        self::NOT_EXISTS => "Invite '%value%' does not exist",
-        self::IS_USED => "Invite '%value%' has already been used",
-    );
-
-    public function __construct($options = array())
-    {
-        $this->invites = $options['invites'];
-    }
-
-    public function isValid($value)
-    {
-        if (!is_string($value)) {
-            $this->_error(self::INVALID);
-            return false;
-        }
-
-        $this->_setValue($value);
-
-        if (!isset($this->invites[$value])) {
-            $this->_error(self::NOT_EXISTS);
-            return false;
-        }
-
-        if (!$this->invites[$value]) {
-            $this->_error(self::IS_USED);
-            return false;
-        }
-
-        return true;
-    }
-}

www/system/modules/collector/library/Validate/Secret.php

-<?php
-class Collector_Validate_Secret extends Zend_Validate_Abstract
-{
-    protected $expirationTime = '';
-
-    const INVALID = 'secretInvalid';
-    const NOT_EXISTS = 'secretNotExists';
-    const IS_CONFIRMED = 'secretIsConfirmed';
-    const IS_EXPIRED = 'secretExpired';
-
-    /**
-     *
-     * @var Collector_Service_Invite
-     */
-    protected $invites = array();
-
-    protected $_messageTemplates = array(
-        self::INVALID => "Invalid type given, value should be string",
-        self::NOT_EXISTS => "Registration '%value%' does not exist",
-        self::IS_CONFIRMED => "Registration '%value%' is already confirmed",
-        self::IS_EXPIRED => "Registration '%value%' is expired",
-    );
-
-    public function __construct($options)
-    {
-        $this->expirationTime = $options['expiration_time'];
-    }
-
-    public function isValid($value)
-    {
-        if (!is_string($value)) {
-            $this->_error(self::INVALID);
-            return false;
-        }
-
-        $this->_setValue($value);
-
-        $registration = Doctrine_Core::getTable('Collector_Registration')
-                ->createQuery('r')
-                ->select('r.id, r.is_confirmed, r.created_at')
-                ->addWhere('r.secret = ?', $value)
-                ->fetchOne();
-        if (!$registration) {
-            $this->_error(self::NOT_EXISTS);
-            return false;
-        }
-
-        if ($registration->getIsConfirmed()) {
-            $this->_error(self::IS_CONFIRMED);
-            return false;
-        }
-
-        $expireAt = strtotime($this->expirationTime, strtotime($registration->getCreatedAt()));
-        if (time() > $expireAt) {
-            $this->_error(self::IS_EXPIRED);
-            return false;
-        }
-
-        return true;
-    }
-}

www/system/modules/collector/migrations/1_backup_table.php

-<?php
-class Collector_Migration_BackupTable extends Doctrine_Migration_Base
-{
-    public function up()
-    {
-        $this->renameTable('collector__registration', 'collector__registration_' . time());
-    }
-}

www/system/modules/collector/readme.txt

-All project files done for this job are stored in separate module at path:
-
-system/module/collector
-
-All configs are stored at:
-
-system/module/collector/config
-
-and use YAML format.
-
-Form config
-===========
-
-system/module/collector/config/form.yml
-
-It uses standard Zend_Form format and you can add elements, decorators, validators etc. to your form. You can check both examples at that file and at offical Zend_Form documentation:
-
-http://framework.zend.com/manual/en/zend.form.forms.html
-
-Invites config
-==============
-
-system/module/collector/config/invites.yml
-
-Format:
-
-- one invite per line
-- not used invite:
-    invite name: true
-- used invite (it will be marked so by system when user registration will be completed; I don't delete used invites to not allow add used invite in list by mistake):
-    invite name: false
-
-Module specific application config
-==================================
-
-system/module/collector/config/app.yml
-
-Among other options in this file at line 10 you can set confirmation link expiration time.
-
-Database schema
-===============
-
-I use only 1 table named "collector__registration" to store registration info. It will always have these fields:
-
-    id: { type: integer, primary: true, autoincrement: true }
-    email: { type: string(255), notnull: true, unique: true }
-    # invite used with this registration
-    invite: { type: string(255), notnull: true, unique: true }
-    # randomly generated secret string (md5 hash), used to confirm registration
-    secret: { type: string(32), fixed: true, notnull: true, unique: true }
-    # flag, which indicates confirmed accounts
-    is_confirmed: { type: boolean, notnull: true, default: false }
-
-Other fields will be added to the table when you regenerate the form.
-
-Form regeneration
-=================
-
-When you edit the form and want to regenerate it, you should log in:
-
-uri: /login
-login: admin
-password: test
-
-After this you will see new action at main menu named "Regenerate form". When you click it, old table will be backuped (just renamed to somethink like "collector_registration111111111") and the new one generated.

www/system/modules/collector/views/scripts/invite/_registrationEmail.phtml

-Hello.
-
-To complete the registration process at <?php echo $this->serverUrl() . $this->baseUrl(); ?> please click the link:
-
-<?php echo $this->absoluteUrl(array('secret' => $this->registration->getSecret()), 'collector_invite_confirm', true) . PHP_EOL; ?>
-
-Your information:
-
-<?php echo $this->registrationForm->asString(); ?>
-
-With regards,
-Support team.

www/system/modules/collector/views/scripts/invite/confirm-registration.phtml

-<h1><?php echo $this->pageTitle(); ?></h1>
-
-<p>
-    Thank you. A message has been sent to the email address you provided. To complete the registration process please click the link included in the message.
-</p>

www/system/modules/collector/views/scripts/invite/confirm.phtml

Empty file removed.

www/system/modules/collector/views/scripts/invite/enter-invite-first.phtml

-<h1><?php echo $this->pageTitle(); ?></h1>
-
-<p>Thank you, but you already filled the form. Enter the invite to be able to continue registration:</p>
-
-<?php echo $this->form; ?>

www/system/modules/collector/views/scripts/invite/index.phtml

-<h1><?php echo $this->pageTitle(); ?></h1>
-
-<?php if ($this->user()->isAllowed('Collector_Invite', 'regenerate')): ?>
-    <p>
-        <a href="<?php echo $this->url(array(), 'collector_invite_regenerate', true); ?>" class="button"><span>Regenerate form</span></a>
-    </p>
-<?php else: ?>
-    <div id="invite-form">
-        <?php echo $this->form; ?>
-    </div>
-<?php endif; ?>

www/system/modules/collector/views/scripts/invite/regenerate.phtml

-<h1><?php echo $this->pageTitle(); ?></h1>
-
-<p>Form was regenerated successfully.</p>

www/system/modules/collector/views/scripts/invite/registration-confirmed.phtml

-<h1><?php echo $this->pageTitle(); ?></h1>
-
-<p>
-    Thank you. The registration has been confirmed. You will be noticed about the launch of our website.
-</p>

www/system/modules/collector/views/scripts/invite/registration.phtml

-<h1><?= $this->pageTitle(); ?></h1>
-
-<div id="registration-form">
-    <?php echo $this->form; ?>
-</div>

www/system/modules/collector/views/scripts/layout.phtml

-<?php echo $this->doctype(); ?>
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-
-<head>
-<?php echo
-$this->headMeta()
-        ->appendName('description', $this->metas['description'])
-        ->appendName('keywords', $this->metas['keywords']);
-?>
-<?php echo $this->headTitle()->setSeparator(' <- '); ?>
-<base href="<?php echo $this->serverUrl() . $this->baseUrl(); ?>/" />
-<?php
-$this->headLink()
-        ->prependStylesheet('css/collector/screen.css')
-        ->appendStylesheet('css/collector/print.css', 'print');
-$this->headScript()
-        ->appendFile('js/collector/cufon.js')
-        ->appendFile('js/collector/cufon-config.js')
-        ->appendFile('js/collector/font.js');
-$this->jQuery()->enable();
-?>
-<?php echo $this->bundleLink($this->headLink()); ?>
-<?php echo $this->headLink(); ?>
-<?php echo $this->headStyle(); ?>
-<?php echo $this->bundleScript($this->jQuery(), $this->headScript()); ?>
-<?php echo $this->jQuery(); ?>
-<?php echo $this->headScript(); ?>
-</head>
-
-<body>
-        <div class="wrap">
-            <p></p>
-            <?php if ($this->flashMessenger(ZendY_Controller_Action::FLASH_MESSAGE)->hasMessages()): ?>
-                <?php echo $this->render('flash.phtml'); ?>
-            <?php endif; ?>
-
-            <?php if ($this->flashMessenger(ZendY_Controller_Action::FLASH_ERROR)->hasMessages()): ?>
-                <?php echo $this->render('flash.phtml'); ?>
-            <?php endif; ?>
-
-            <div style="clear: both;">
-                <?php echo $this->layout()->content; ?>
-            </div>
-
-            <p style="clear: both;"></p>
-        </div>
-
-        <hr class="noscreen" />
-
-        <div id="header">
-            <div class="wrap">
-
-                <!-- Logo start -->
-                <a id="logo" href="<?php echo $this->url(array(), 'index', true); ?>"
-                        title="Forest Orange">Forest<strong>Orange</strong></a>
-                <!-- Logo end -->
-
-                <hr class="noscreen noprint" />
-
-                <!-- Navigation start -->
-                <strong class="noscreen noprint">Navigation:</strong>
-                <ul id="nav">
-                    <?php if ($this->user()->isLogged()): ?>
-                        <li><a href="<?php echo $this->url(array(), 'logout', true); ?>">Logout</a></li>
-                    <?php endif; ?>
-                </ul>
-                <!-- Navigation end -->
-            </div>
-
-        </div>
-
-<?php echo $this->inlineScript(); ?>
-
-</body>
-
-</html>

www/system/modules/collector/web/css/print.css

-* { margin:0; padding:0; }
-body, div, span, p, a, img, ul, ol, li, table, th, tr, td, form, fieldset, legend, dl, dt, dd, blockquote, applet, object { border:0; }
-ul, ol {list-style-type:none}
-body { padding: 0; font: normal 12px Arial,sans-serif; color: #000;}
-p {line-height: 1.9em;padding: 0 0 15px 0;}
-
-/* LINKS ---------------------------------------------------------------------------------------------------------- */
-a {color: #076fb0;text-decoration: underline;}
-a:link {color: #076fb0;}
-a:focus {color: #076fb0; outline: 0}
-a:visited {color: #063654}
-a:hover {color: #063654;text-decoration: none;}
-a.more {}
-
-
-/* H1 - H5 -------------------------------------------------------------------------------------------------------- */
-h1, h2, h3, h4, h5, h6 { margin:15px 0 15px 0; }
-h1 { font-size: 1.6em;  margin: 0; color: #000;}
-h2 { font-size: 1.45em; margin: 0 0 15px; color: #000;font-weight: normal;padding: 0;font-family: Georgia;}
-h3 { font-size:1.1em; margin: 0 0 15px; color: #000;  padding: 0 0 5px;}
-h4 { font-size:1.0em; color: #000 }
-h5 { font-size:1.0em; }
-
-/* LAYOUT --------------------------------------------------------------------------------------------------------- */
-
-    /* HEADER ----------------------------------------------------------------------------------------------------- */
-
-        /* logo */
-        h1 a { display: block; color: #000;text-decoration: none;}
-            h1 a span {display: none}
-
-        /* navigation */
-        ul#nav {display: none}
-
-        /* header box */
-        .box {background: #fff;border: 0;padding: 20px 0;margin: 20px 0;color: #000}
-            .box h2 {font-family: Arial; font-size: 1.2em;font-weight: bold; color: #000;margin: 0 0 5px;padding: 0; border: 0;}
-            .box p {margin: 0; padding: 0;}
-
-    .padding {padding: 0 0 20px;}
-
-    /* COLS ----------------------------------------------------------------------------------------------------------- */
-    ul.cols {margin: 15px 0;}
-        ul.cols li {}
-            ul.cols li.center {margin: 0;text-align: left;}
-                ul.cols li h3 {font-size: 1.2em;font-weight: bold;color: #000;padding: 10px 0 10px 0;color: #435b6a;border-bottom: 1px solid #d3dbdf}
-                ul.cols li p {padding: 0 0 10px 0}
-                ul.cols li a.more {padding-left: 0;}
-
-  	/* FOOTER ----------------------------------------------------------------------------------------------------- */
-    .footer {background: #fff;height: 50px; line-height: 50px;padding: 0;font-size: 0.9em; margin: 0;clear: both; overflow: hidden;}
-        .footer span {color: #7c7e7f;display: block; padding-top: 3px;}
-        .footer a {color: #7c7e7f;}
-        .footer a.pueblo-templates {display: inline-block;position: relative;width: 110px; height: 15px;line-height: 15px;margin-right: 20px;}
-            .footer a.pueblo-templates span {display: none}
-
-
-
-/* OTHER ----------------------------------------------------------------------------------------------------- */
-hr { display:block; height:1px; margin:10px 0; padding:0; border:0 solid #CCC; background:#CCC; color:#CCC;}
-.clear { clear:both; display: block; height:0;line-height:0;font-size:0; width: 100%;}
-.noscreen { display:none; }
-.flt-l {float: left;}
-.flt-r {float: right;}
-.bold {font-weight: bold;}
-.center {text-align: center;}
-.noborder {border: 0;}
-/* clearfix */
-.clearfix:after {content: ".";display: block;height: 0;clear: both;visibility: hidden}
-.clearfix {display: inline-block;}
-/* hidden for ie mac \*/
-* html .clearfix {height: 1%;}
-.clearfix {display: block;}

www/system/modules/collector/web/css/screen.css

-* { margin:0; padding:0; }
-body, div, span, p, a, img, ul, ol, li, table, th, tr, td, form, fieldset, legend, dl, dt, dd, blockquote, applet, object { border:0; }
-ul, ol {list-style-type:none}
-body {background: url('../../img/collector/bg-repeat.jpg') repeat-x;padding: 100px 0 0; font: normal 12px Arial,sans-serif; color: #303537;}
-p {line-height: 1.9em;padding: 0 0 25px 0;}
-
-/* LINKS ---------------------------------------------------------------------------------------------------------- */
-a {color: #c41477;text-decoration: underline;}
-a:link {color: #c41477;}
-a:focus {color: #c41477; outline: 0}
-a:visited {color: #c41477}
-a:hover {color: #000;text-decoration: none;}
-a.more {padding-right: 12px; background: url('../../img/collector/arrow.gif') no-repeat 100% 55%;}
-a.button, span.zend_form_submit {background: url('../../img/collector/button-start.gif') no-repeat;display: inline-block;text-decoration: none;color: #fff;font-weight: bold;}
-a.button span, span.zend_form_submit input {display: inline-block;height: 33px;line-height: 33px;padding: 0 20px;color: #fff;font-weight: bold;background: url('../../img/collector/button-end.gif') no-repeat 100% 0;}
-span.zend_form_submit input {border: none;font: normal 12px Arial,sans-serif;margin: 0 !important;}
-
-/* H1 - H5 -------------------------------------------------------------------------------------------------------- */
-h1, h2, h3, h4, h5, h6 { margin:15px 0 15px 0; }
-h1 { font-size: 2.4em;font-weight: normal;margin: 5px 0 10px 0; color: #303537;}
-h2 { font-size: 1.8em; margin: 0 0 20px; color: #303436;font-weight: normal;}
-h3 { font-size:1.2em;text-transform: uppercase;margin: 10px 0 15px;color: #303436;padding: 0 0 5px;}
-h4 { font-size:1.0em; color: #005e7c }
-h5 { font-size:1.0em; }
-
-/* LAYOUT --------------------------------------------------------------------------------------------------------- */
-.wrap {width: 875px;margin: 0 auto;position: relative}
-    /* HEADER ----------------------------------------------------------------------------------------------------- */
-    #header {background: url('../../img/collector/bg-header.jpg') no-repeat 0 50%;height: 99px;width: 100%;position: absolute;top: 0;left: 0}
-        /* logo */
-        a#logo {font-size: 2.5em;color: #fff;font-style: italic;padding: 0 10px;position: relative;top: 30px;text-decoration: none}
-
-        /* navigation */
-        ul#nav {position: relative;top: 30px;float: right;}
-            ul#nav li {float:left;}
-                ul#nav li a { padding: 0 15px;height: 32px; line-height: 32px;display: block;text-decoration: none;float: left;font-weight: bold;color: #fff; }
-                ul#nav li:hover {background: url('../../img/collector/nav-start.jpg') no-repeat;}
-                ul#nav li.active { color: #fff;background: url('../../img/collector/nav-start.jpg') no-repeat}
-                ul#nav li:hover a {background: url('../../img/collector/nav-end.jpg') no-repeat 100% 0}
-                ul#nav li.active a {background: url('../../img/collector/nav-end.jpg') no-repeat 100% 0}
-
-    #intro {background: url('../../img/collector/bg-intro.jpg') repeat-x bottom;padding: 30px 0;width: 100%}
-    #intro .floatRight {width: 545px}
-    #intro .photo {background: url('../../img/collector/macbook.jpg') no-repeat;width: 294px;height: 165px;float: left}
-    #intro .photo img {position: absolute;top: 11px;left:46px}
-    #intro p {font-size: 1.2em;padding-bottom: 20px;}
-
-    /* COLS ----------------------------------------------------------------------------------------------------------- */
-    ul.cols {margin: 25px 0 35px;background: url('../../img/collector/cols-bg.gif') repeat-y 50% 0;}
-        ul.cols li {float: left; width: 240px;padding: 5px 0; }
-            ul.cols li.center {margin: 0 70px;text-align: left;}
-                ul.cols li h2 {margin-bottom: 10px;text-transform: uppercase;font-size: 1.2em;font-weight: bold;color: #d11d6d;background: url('../../img/collector/arrow-down.gif') no-repeat 0 50%;padding: 0 0 0 25px}
-                ul.cols li p {padding: 0 0 10px 0}
-
-    .title {color: #8c959c; display: block;background: url('../../img/collector/dot.gif') repeat-x 0 50%;padding: 0 10px;margin:10px 0 25px}
-    .title span {padding: 0 10px;background: #fff}
-
-  	/* FOOTER ----------------------------------------------------------------------------------------------------- */
-    .footer {background: #e9e9e9 url('../../img/collector/bg-footer.jpg') no-repeat;height: 58px; line-height: 58px;padding: 0 20px;font-size: 0.9em; margin: 0 auto 20px;width: 890px;;clear: both; overflow: hidden;}
-        .footer span {color: #87898a;display: block;}
-        .footer a {color: #87898a;}
-        .footer a.tempixo {display: inline-block;position: relative;width: 110px; height: 28px;line-height: 28px;margin-right: 20px;}
-            .footer a.tempixo span {width: 110px; height: 28px;display: inline-block;cursor: pointer; background: url('../../img/collector/tempixo-com.gif') no-repeat;position: absolute; top: 0; left: 0}
-
-
-
-/* OTHER ----------------------------------------------------------------------------------------------------- */
-hr { display:block; height:1px; margin:10px 0; padding:0; border:0 solid #CCC; background:#CCC; color:#CCC;}
-.clear { clear:both; display: block; height:0;line-height:0;font-size:0; width: 100%;}
-.noscreen { display:none; }
-.floatLeft {float: left;}
-.floatRight {float: right;}
-img.floatLeft {margin-right: 20px}
-img.floatRight {margin-left: 20px}
-
-.bold {font-weight: bold;}
-.center {text-align: center;}
-.noborder {border: 0;}
-/* clearfix */
-.clearfix:after {content: ".";display: block;height: 0;clear: both;visibility: hidden}
-.clearfix {display: inline-block;}
-/* hidden for ie mac \*/
-* html .clearfix {height: 1%;}
-.clearfix {display: block;}
-
-
-/***************************/
-.zend_form input, .zend_form select, .zend_form textarea {
-    margin: 4px;
-    padding: 4px;
-}
-.zend_form fieldset {
-    padding: 10px;
-    border: 1px #3B3F42 solid;
-    background-color: #E9E9E9;
-}
-.zend_form legend {
-    padding: 6px;
-    color: #fff; font-weight: bold;
-    background-color: #3B3F42;
-}
-.zend_form dt, .zend_form dd {
-    margin: 5px 2px 5px 0;
-}
-.zend_form fieldset {
-    margin-left: -210px;
-}
-.zend_form dt, .zend_form fieldset dt {
-    clear: both;
-    width: 200px;
-    float: left;
-    margin: 5px 5px 5px 0;
-}
-.zend_form dd, .zend_form fieldset dd {
-    margin-left: 200px;
-    float: left;
-    margin: 5px 2px 5px 0;
-}
-#submit-label, #submit-element, #reset-label, #reset-element {
-    float: left;
-    margin: 5px 2px 5px 0;
-}
-.zend_form_checkbox p.description {
-    display: inline;
-}
-.zend_form .required {
-    font-weight: bold;
-}
-.zend_form .errors {
-    color: #f00;
-}
-
-.b-flash {
-    float: left;
-    width: 76%;