rlang  Mon, 07 Mar 2011 21:22:59 +0000

Modified page: http://wiki.horde.org/Doc/Dev/SharesHowtoH4
New Revision:  1.2
Change log:  delegate share handling to a list page. add migration example

@@ -29,26 +29,163 @@

     }
 </code>

-+++ shares administration link in Application.php menu()
++++ List of safes in Application.php menu()

-
-Next we want to add a link to the shares administration screen in the menu.
+Next we want to add a page with a list of safes (shares) in the menu.
 Go to the menu() function in Application.php

 <code>
+        $menu->add(Horde::url('safes.php'), _("Password Safes"), 'user.png');
+</code>

- if (!empty($GLOBALS['hort_shares']) && empty($GLOBALS['conf']['share']['no_sharing'])) {
-            $menu->add('#', _("_Permissions"), 'perms.png', null, '',
- Horde::popupJs(Horde::url($GLOBALS['registry']->get('webroot', 'horde') . '/services/shares/edit.php', true),
-            array('params' => array('app' => 'ingo',
- 'share' => $GLOBALS['session']->get('ingo', 'backend/id') . ':' . $GLOBALS['registry']->getAuth()),
-                  'urlencode' => true)) . 'return false;');
+
++++ migrations script (database setup) for shares and sharesng driver tables
+Create a directory hort/migrations/ with a file 1_hort_tables.php
+
+
+<code>
+class HortBaseTables extends Horde_Db_Migration_Base
+{
+    /**
+     * Upgrade.
+     */
+    public function up()
+    {
+        $tableList = $this->tables();
+
+
+ $t = $this->createTable('hort_sharesng', array('primaryKey' => 'share_id')); + $t->column('share_name', 'string', array('limit' => 255, 'null' => false));
+        $t->column('share_owner', 'string', array('limit' => 255));
+ $t->column('share_flags', 'integer', array('default' => 0, 'null' => false)); + $t->column('perm_creator_' . Horde_Perms::SHOW, 'boolean', array('default' => false, 'null' => false)); + $t->column('perm_creator_' . Horde_Perms::READ, 'boolean', array('default' => false, 'null' => false)); + $t->column('perm_creator_' . Horde_Perms::EDIT, 'boolean', array('default' => false, 'null' => false)); + $t->column('perm_creator_' . Horde_Perms::DELETE, 'boolean', array('default' => false, 'null' => false)); + $t->column('perm_default_' . Horde_Perms::SHOW, 'boolean', array('default' => false, 'null' => false)); + $t->column('perm_default_' . Horde_Perms::READ, 'boolean', array('default' => false, 'null' => false)); + $t->column('perm_default_' . Horde_Perms::EDIT, 'boolean', array('default' => false, 'null' => false)); + $t->column('perm_default_' . Horde_Perms::DELETE, 'boolean', array('default' => false, 'null' => false)); + $t->column('perm_guest_' . Horde_Perms::SHOW, 'boolean', array('default' => false, 'null' => false)); + $t->column('perm_guest_' . Horde_Perms::READ, 'boolean', array('default' => false, 'null' => false)); + $t->column('perm_guest_' . Horde_Perms::EDIT, 'boolean', array('default' => false, 'null' => false)); + $t->column('perm_guest_' . Horde_Perms::DELETE, 'boolean', array('default' => false, 'null' => false)); + $t->column('attribute_name', 'string', array('limit' => 255, 'null' => false));
+        $t->column('attribute_desc', 'string', array('limit' => 255));
+        $t->column('attribute_params', 'text');
+        $t->column('share_parents','text');
+        $t->end();
+
+        $this->addIndex('hort_sharesng', array('share_name'));
+        $this->addIndex('hort_sharesng', array('share_owner'));
+ $this->addIndex('hort_sharesng', array('perm_creator_' . Horde_Perms::SHOW)); + $this->addIndex('hort_sharesng', array('perm_creator_' . Horde_Perms::READ)); + $this->addIndex('hort_sharesng', array('perm_creator_' . Horde_Perms::EDIT)); + $this->addIndex('hort_sharesng', array('perm_creator_' . Horde_Perms::DELETE)); + $this->addIndex('hort_sharesng', array('perm_default_' . Horde_Perms::SHOW)); + $this->addIndex('hort_sharesng', array('perm_default_' . Horde_Perms::READ)); + $this->addIndex('hort_sharesng', array('perm_default_' . Horde_Perms::EDIT)); + $this->addIndex('hort_sharesng', array('perm_default_' . Horde_Perms::DELETE)); + $this->addIndex('hort_sharesng', array('perm_guest_' . Horde_Perms::SHOW)); + $this->addIndex('hort_sharesng', array('perm_guest_' . Horde_Perms::READ)); + $this->addIndex('hort_sharesng', array('perm_guest_' . Horde_Perms::EDIT)); + $this->addIndex('hort_sharesng', array('perm_guest_' . Horde_Perms::DELETE));
+
+ $t = $this->createTable('hort_sharesng_groups', array('primaryKey' => false));
+        $t->column('share_id', 'integer', array('null' => false));
+ $t->column('group_uid', 'string', array('limit' => 255, 'null' => false)); + $t->column('perm_' . Horde_Perms::SHOW, 'boolean', array('default' => false, 'null' => false)); + $t->column('perm_' . Horde_Perms::READ, 'boolean', array('default' => false, 'null' => false)); + $t->column('perm_' . Horde_Perms::EDIT, 'boolean', array('default' => false, 'null' => false)); + $t->column('perm_' . Horde_Perms::DELETE, 'boolean', array('default' => false, 'null' => false));
+        $t->end();
+
+        $this->addIndex('hort_sharesng_groups', array('share_id'));
+        $this->addIndex('hort_sharesng_groups', array('group_uid'));
+ $this->addIndex('hort_sharesng_groups', array('perm_' . Horde_Perms::SHOW)); + $this->addIndex('hort_sharesng_groups', array('perm_' . Horde_Perms::READ)); + $this->addIndex('hort_sharesng_groups', array('perm_' . Horde_Perms::EDIT)); + $this->addIndex('hort_sharesng_groups', array('perm_' . Horde_Perms::DELETE));
+
+ $t = $this->createTable('hort_sharesng_users', array('primaryKey' => false));
+        $t->column('share_id', 'integer', array('null' => false));
+ $t->column('user_uid', 'string', array('limit' => 255, 'null' => false)); + $t->column('perm_' . Horde_Perms::SHOW, 'boolean', array('default' => false, 'null' => false)); + $t->column('perm_' . Horde_Perms::READ, 'boolean', array('default' => false, 'null' => false)); + $t->column('perm_' . Horde_Perms::EDIT, 'boolean', array('default' => false, 'null' => false)); + $t->column('perm_' . Horde_Perms::DELETE, 'boolean', array('default' => false, 'null' => false));
+        $t->end();
+
+        $this->addIndex('hort_sharesng_users', array('share_id'));
+        $this->addIndex('hort_sharesng_users', array('user_uid'));
+ $this->addIndex('hort_sharesng_users', array('perm_' . Horde_Perms::SHOW)); + $this->addIndex('hort_sharesng_users', array('perm_' . Horde_Perms::READ)); + $this->addIndex('hort_sharesng_users', array('perm_' . Horde_Perms::EDIT)); + $this->addIndex('hort_sharesng_users', array('perm_' . Horde_Perms::DELETE));
+
+
+        if (!in_array('hort_shares', $tableList)) {
+ $t = $this->createTable('hort_shares', array('primaryKey' => false));
+            $t->column('share_id', 'integer', array('null' => false));
+ $t->column('share_name', 'string', array('limit' => 255, 'null' => false)); + $t->column('share_owner', 'string', array('limit' => 255, 'null' => false)); + $t->column('share_flags', 'integer', array('default' => 0, 'null' => false)); + $t->column('perm_creator', 'integer', array('default' => 0, 'null' => false)); + $t->column('perm_default', 'integer', array('default' => 0, 'null' => false)); + $t->column('perm_guest', 'integer', array('default' => 0, 'null' => false)); + $t->column('attribute_name', 'string', array('limit' => 255, 'null' => false));
+            $t->column('attribute_desc', 'string', array('limit' => 255));
+            $t->primaryKey(array('share_id'));
+            $t->end();
+
+            $this->addIndex('hort_shares', array('share_name'));
+            $this->addIndex('hort_shares', array('share_owner'));
+            $this->addIndex('hort_shares', array('perm_creator'));
+            $this->addIndex('hort_shares', array('perm_default'));
+            $this->addIndex('hort_shares', array('perm_guest'));
         }

-</code>
+        if (!in_array('hort_shares_groups', $tableList)) {
+            $t = $this->createTable('hort_shares_groups');
+            $t->column('share_id', 'integer', array('null' => false));
+ $t->column('group_uid', 'string', array('limit' => 255, 'null' => false));
+            $t->column('perm', 'integer', array('null' => false));
+            $t->end();

+            $this->addIndex('hort_shares_groups', array('share_id'));
+            $this->addIndex('hort_shares_groups', array('group_uid'));
+            $this->addIndex('hort_shares_groups', 'perm');
+        }

-+++ migrations script (database setup) for shares and sharesng driver tables
+        if (!in_array('hort_shares_users', $tableList)) {
+            $t = $this->createTable('hort_shares_users');
+            $t->column('share_id', 'integer', array('null' => false));
+ $t->column('user_uid', 'string', array('limit' => 255, 'null' => false));
+            $t->column('perm', 'integer', array('null' => false));
+            $t->end();

+            $this->addIndex('hort_shares_users', array('share_id'));
+            $this->addIndex('hort_shares_users', array('user_uid'));
+            $this->addIndex('hort_shares_users', array('perm'));
+        }

+    }
+
+    /**
+     * Downgrade
+     *
+     */
+    public function down()
+    {
+        $this->dropTable('hort_shares');
+        $this->dropTable('hort_shares_groups');
+        $this->dropTable('hort_shares_users');
+        $this->dropTable('hort_sharesng');
+        $this->dropTable('hort_sharesng_groups');
+        $this->dropTable('hort_sharesng_users');
+    }
+
+}
+
+</code>

__
commits mailing list
Frequently Asked Questions: http://horde.org/faq/
To unsubscribe, mail: [email protected]

Reply via email to