Convert Ansel to new preferences UI code
authorMichael M Slusarz <slusarz@curecanti.org>
Tue, 6 Apr 2010 23:26:40 +0000 (17:26 -0600)
committerMichael M Slusarz <slusarz@curecanti.org>
Tue, 6 Apr 2010 23:26:40 +0000 (17:26 -0600)
ansel/config/prefs.php.dist
ansel/lib/Application.php
ansel/templates/prefs/default_category_select.inc [deleted file]
ansel/templates/prefs/default_gallerystyle_select.inc [deleted file]

index ee2891c..28f89da 100644 (file)
@@ -6,10 +6,11 @@ $prefGroups['display'] = array(
     'column' => _("General Options"),
     'label' => _("Display Options"),
     'desc' => _("Change display options such as which view to display by default, how many photos to display on a page, and the default gallery style to use."),
-    'members' => array('grouptitle', 'defaultview', 'tilesperrow',
-                       'tilesperpage', 'facesperpage', 'groupby',
-                       'groupsperpage',
-                       'default_gallerystyle_select', 'default_category_select')
+    'members' => array(
+        'grouptitle', 'defaultview', 'tilesperrow', 'tilesperpage',
+        'facesperpage', 'groupby', 'groupsperpage',
+        'default_gallerystyle_select', 'default_category_select'
+    )
 );
 
 $prefGroups['metadata'] = array(
@@ -23,62 +24,61 @@ $prefGroups['perms'] = array(
     'column' => _("General Options"),
     'label' => _("Permission Options"),
     'desc' => _("Change your user permission options such as who can download original photos, and what permissions newly created galleries should have by default."),
-    'members' => array('default_download', 'default_permissions', 'group_permissions', 'guest_permissions')
+    'members' => array(
+        'default_download', 'default_permissions', 'group_permissions',
+        'guest_permissions'
+    )
 );
 
 $prefGroups['watermark'] = array(
     'column' => _("General Options"),
     'label' => _("Watermark Options"),
     'desc' => _("Change your watermark options."),
-    'members' => array('watermark_text', 'watermark_vertical', 'watermark_horizontal',
-                       'watermark_font', 'watermark_auto')
+    'members' => array(
+        'watermark_text', 'watermark_vertical', 'watermark_horizontal',
+        'watermark_font', 'watermark_auto'
+    )
 );
 
 /* Note that for the following to work, your pref backend must support
    retrieving prefs for other users (such as the SQL backend) */
 $_prefs['grouptitle'] = array(
     'value' => '',
-    'locked' => false,
-    'shared' => false,
     'type' => 'text',
-    'desc' => _("Custom text to display describing your galleries. This will be displayed in place of your username when grouping galleries by username."));
+    'desc' => _("Custom text to display describing your galleries. This will be displayed in place of your username when grouping galleries by username.")
+);
 
 $_prefs['defaultview'] = array(
     'value' => 'galleries',
-    'locked' => false,
-    'shared' => false,
     'type' => 'enum',
-    'enum' => array('browse' => _("Browse"),
-                    'galleries' => _("Galleries"),
-                    'mygalleries' => _("My Galleries")
-                    ),
+    'enum' => array(
+        'browse' => _("Browse"),
+        'galleries' => _("Galleries"),
+        'mygalleries' => _("My Galleries")
+    ),
     'desc' => _("View to display by default")
 );
 
 $_prefs['groupby'] = array(
     'value' => 'none',
-    'locked' => false,
-    'shared' => false,
     'type' => 'enum',
-    'enum' => array('owner' => _("Owner"),
-                    'category' => _("Category"),
-                    'none' => _("None")),
+    'enum' => array(
+        'owner' => _("Owner"),
+        'category' => _("Category"),
+        'none' => _("None")
+    ),
     'desc' => _("Group galleries by")
 );
 
 // number of photos on each row in the gallery view
 $_prefs['tilesperrow'] = array(
     'value' => 3,
-    'locked' => false,
-    'shared' => false,
     'type' => 'number',
     'desc' => _("Number of tiles per row")
 );
 
 $_prefs['tilesperpage'] = array(
     'value' => 9,
-    'locked' => false,
-    'shared' => false,
     'type' => 'number',
     'desc' => _("Number of tiles per page")
 );
@@ -86,47 +86,34 @@ $_prefs['tilesperpage'] = array(
 $_prefs['facesperpage'] = array(
     'value' => '20',
     'locked' => !$GLOBALS['conf']['faces']['driver'],
-    'shared' => false,
     'type' => 'number',
     'desc' => _("Number of faces per page")
 );
 
 $_prefs['groupsperpage'] = array(
     'value' => 9,
-    'locked' => false,
-    'shared' => false,
     'type' => 'number',
     'desc' => _("Number of groups per page")
 );
 
 $_prefs['showexif'] = array(
     'value' => false,
-    'locked' => false,
-    'shared' => false,
     'type' => 'checkbox',
     'desc' => _("Show EXIF data")
 );
 
 $_prefs['watermark'] = array(
     'value' => '',
-    'locked' => false,
-    'shared' => false,
     'type' => 'text',
     'desc' => _("Custom watermark to use for photos")
 );
 
 $_prefs['myansel_layout'] = array(
-    'value' => 'a:1:{i:0;a:3:{i:0;a:4:{s:3:"app";s:5:"ansel";s:6:"height";i:1;s:5:"width";i:1;s:6:"params";a:2:{s:4:"type";s:5:"cloud";s:6:"params";a:1:{s:5:"count";s:2:"20";}}}i:1;a:4:{s:3:"app";s:5:"ansel";s:6:"height";i:1;s:5:"width";i:1;s:6:"params";a:2:{s:4:"type";s:12:"my_galleries";s:6:"params";a:0:{}}}i:2;a:4:{s:3:"app";s:5:"ansel";s:6:"height";i:1;s:5:"width";i:1;s:6:"params";a:2:{s:4:"type";s:14:"recently_added";s:6:"params";a:2:{s:7:"gallery";s:3:"all";s:5:"limit";s:2:"10";}}}}}',
-    'locked' => false,
-    'shared' => false,
-    'type' => 'implicit'
+    'value' => 'a:1:{i:0;a:3:{i:0;a:4:{s:3:"app";s:5:"ansel";s:6:"height";i:1;s:5:"width";i:1;s:6:"params";a:2:{s:4:"type";s:5:"cloud";s:6:"params";a:1:{s:5:"count";s:2:"20";}}}i:1;a:4:{s:3:"app";s:5:"ansel";s:6:"height";i:1;s:5:"width";i:1;s:6:"params";a:2:{s:4:"type";s:12:"my_galleries";s:6:"params";a:0:{}}}i:2;a:4:{s:3:"app";s:5:"ansel";s:6:"height";i:1;s:5:"width";i:1;s:6:"params";a:2:{s:4:"type";s:14:"recently_added";s:6:"params";a:2:{s:7:"gallery";s:3:"all";s:5:"limit";s:2:"10";}}}}}'
 );
 
 $_prefs['default_gallerystyle'] = array(
-    'value' => 'ansel_default',
-    'locked' => false,
-    'shared' => false,
-    'type' => 'implicit'
+    'value' => 'ansel_default'
 );
 $_prefs['default_gallerystyle_select'] = array(
     'type' => 'special'
@@ -134,10 +121,7 @@ $_prefs['default_gallerystyle_select'] = array(
 
 // Default category
 $_prefs['default_category'] = array(
-    'value' => '',
-    'locked' => false,
-    'shared' => false,
-    'type' => 'implicit'
+    'value' => ''
 );
 
 // Default category
@@ -146,135 +130,112 @@ $_prefs['default_category_select'] = array(
 );
 
 $_prefs['show_actions'] = array(
-    'value' => 0,
-    'locked' => false,
-    'shared' => false,
-    'type' => 'implicit',
+    'value' => 0
 );
 
 $_prefs['show_othergalleries'] = array(
-    'value' => 0,
-    'locked' => false,
-    'shared' => false,
-    'type' => 'implicit'
+    'value' => 0
 );
 
-
 $_prefs['watermark_text'] = array(
     'value' => '',
-    'locked' => false,
-    'shared' => false,
     'type' => 'text',
     'desc' => _("Custom watermark to use for photos")
 );
 
 $_prefs['watermark_horizontal'] = array(
     'value' => 'left',
-    'locked' => false,
-    'shared' => false,
     'type' => 'enum',
-    'enum' => array('left' => _("Left"),
-                    'center' => _("Center"),
-                    'right' => _("Right")),
+    'enum' => array(
+        'left' => _("Left"),
+        'center' => _("Center"),
+        'right' => _("Right")
+    ),
     'desc' => _("Horizontal Alignment")
 );
 
 $_prefs['watermark_vertical'] = array(
     'value' => 'bottom',
-    'locked' => false,
-    'shared' => false,
     'type' => 'enum',
-    'enum' => array('top' => _("Top"),
-                    'center' => _("Center"),
-                    'bottom' => _("Bottom")),
+    'enum' => array(
+        'top' => _("Top"),
+        'center' => _("Center"),
+        'bottom' => _("Bottom")
+    ),
     'desc' => _("Vertical Alignment")
 );
 
 $_prefs['watermark_font'] = array(
     'value' => 'bottom',
-    'locked' => false,
-    'shared' => false,
     'type' => 'enum',
-    'enum' => array('tiny' => _("Tiny"),
-                    'small' => _("Small"),
-                    'medium' => _("Medium"),
-                    'large' => _("Large"),
-                    'giant' => _("Giant")),
+    'enum' => array(
+        'tiny' => _("Tiny"),
+        'small' => _("Small"),
+        'medium' => _("Medium"),
+        'large' => _("Large"),
+        'giant' => _("Giant")
+    ),
     'desc' => _("Vertical Alignment")
 );
 
 $_prefs['watermark_auto'] = array(
     'value' => 0,
-    'locked' => false,
-    'shared' => false,
-    'type' => 'enum',
-    'enum' => array(_("No"), _("Yes")),
+    'type' => 'checkbox',
     'desc' => _("Automatically watermark photos?")
 );
 
 $_prefs['default_download'] = array(
     'value' => 'edit',
-    'locked' => false,
-    'shared' => false,
     'type' => 'enum',
-    'enum' => array('all' => _("Anyone"),
-                    'edit' => _("Authenticated users"),
-                    'authenticated' => _("Users with edit permissions")),
+    'enum' => array(
+        'all' => _("Anyone"),
+        'edit' => _("Authenticated users"),
+        'authenticated' => _("Users with edit permissions")
+    ),
     'desc' => _("Who should be allowed to download original photos")
 );
 
 $_prefs['default_permissions'] = array(
     'value' => 'read',
-    'locked' => false,
-    'shared' => false,
     'type' => 'enum',
-    'desc' => _("When a new gallery is created, what permissions should be given to authenticated users by default?"),
-    'enum' => array('none' => _("None"),
-                    'read' => _("Read-only"),
-                    'edit' => _("Read and write"))
+    'enum' => array(
+        'none' => _("None"),
+        'read' => _("Read-only"),
+        'edit' => _("Read and write")
+    ),
+    'desc' => _("When a new gallery is created, what permissions should be given to authenticated users by default?")
 );
 
 $_prefs['guest_permissions'] = array(
     'value' => 'read',
-    'locked' => false,
-    'shared' => false,
     'type' => 'enum',
-    'desc' => _("When a new gallery is created, what permissions should be given to guests by default?"),
-    'enum' => array('none' => _("None (Owner only)"),
-                    'read' => _("Read-only"))
+    'enum' => array(
+        'none' => _("None (Owner only)"),
+        'read' => _("Read-only")
+    ),
+    'desc' => _("When a new gallery is created, what permissions should be given to guests by default?")
 );
 
 $_prefs['group_permissions'] = array(
     'value' => 'none',
-    'locked' => false,
-    'shared' => false,
     'type' => 'enum',
-    'desc' => _("When a new gallery is created, what default permissions should be given to groups that the user is a member of?"),
-    'enum' => array('none' => _("None"),
-                    'read' => _("Read-only"),
-                    'edit' => _("Read and write"),
-                    'delete' => _("Read, write, and delete"))
+    'enum' => array(
+        'none' => _("None"),
+        'read' => _("Read-only"),
+        'edit' => _("Read and write"),
+        'delete' => _("Read, write, and delete")
+    ),
+    'desc' => _("When a new gallery is created, what default permissions should be given to groups that the user is a member of?")
 );
 
 $_prefs['exif_tags'] = array(
     'value' => 'a:0:{}',
-    'locked' => false,
-    'shared' => false,
     'type' => 'multienum',
     'desc' => _("Which metadata fields should we automatically add as image tags during upload?"),
-    'enum' => Horde_Image_Exif::getFields(array($GLOBALS['conf']['exif']['driver'],
-                                                !empty($GLOBALS['conf']['exif']['params']) ? $GLOBALS['conf']['exif']['params'] : array()),
-                                          true)
 );
 
 $_prefs['exif_title'] = array(
     'value' => '',
-    'locked' => false,
-    'shared' => false,
     'type' => 'enum',
-    'desc' => _("Should we automatically set the image title on upload if able? If so, choose the field to obtain the title from."),
-    'enum' => array_merge(array('none' => _("None")),
-                          Horde_Image_Exif::getFields(array($GLOBALS['conf']['exif']['driver'],
-                                                     !empty($GLOBALS['conf']['exif']['params']) ? $GLOBALS['conf']['exif']['params'] : array()),
-                                                     true))
-);
\ No newline at end of file
+    'desc' => _("Should we automatically set the image title on upload if able? If so, choose the field to obtain the title from.")
+);
index 5a50395..cbf48d0 100644 (file)
@@ -95,6 +95,52 @@ class Ansel_Application extends Horde_Registry_Application
     }
 
     /**
+     * Code to run on init when viewing prefs for this application.
+     *
+     * @param Horde_Core_Prefs_Ui $ui  The UI object.
+     */
+    public function prefsInit($ui)
+    {
+        global $conf, $prefs;
+
+        switch ($ui->group) {
+        case 'metadata':
+            if (!$prefs->isLocked('exif_tags')) {
+                $fields = Horde_Image_Exif::getFields(array($conf['exif']['driver'], !empty($conf['exif']['params']) ? $conf['exif']['params'] : array()), true);
+                $ui->override['exif_tags'] = $fields;
+                $ui->override['exif_title'] = array_merge(array(
+                    'none' => _("None")
+                ), $fields);
+            }
+            break;
+        }
+    }
+
+    /**
+     * Generate code used to display a special preference.
+     *
+     * @param Horde_Core_Prefs_Ui $ui  The UI object.
+     * @param string $item             The preference name.
+     *
+     * @return string  The HTML code to display on the options page.
+     */
+    public function prefsSpecial($ui, $item)
+    {
+        switch ($item) {
+        case 'default_category_select':
+            $cManager = new Horde_Prefs_CategoryManager();
+            return _("Default category for galleries") . $cManager->getSelect('default_category_select', $GLOBALS['prefs']->getValue('default_category'));
+
+        case 'default_gallerystyle_select':
+            return _("Default style for galleries") .
+                Ansel::getStyleSelect('default_gallerystyle_select', $GLOBALS['prefs']->getValue('default_gallerystyle')) .
+                '<br />';
+        }
+
+        return '';
+    }
+
+    /**
      * Special preferences handling on update.
      *
      * @param Horde_Core_Prefs_Ui $ui  The UI object.
@@ -119,6 +165,8 @@ class Ansel_Application extends Horde_Registry_Application
             }
             break;
         }
+
+        return false;
     }
 
     /**
diff --git a/ansel/templates/prefs/default_category_select.inc b/ansel/templates/prefs/default_category_select.inc
deleted file mode 100644 (file)
index ca804a9..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?php
-
-$cManager = new Horde_Prefs_CategoryManager();
-$categories = $cManager->getSelect('default_category_select', $GLOBALS['prefs']->getValue('default_category'));
-
-echo _("Default category for galleries");
-echo $categories;
diff --git a/ansel/templates/prefs/default_gallerystyle_select.inc b/ansel/templates/prefs/default_gallerystyle_select.inc
deleted file mode 100644 (file)
index 1305d2e..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?php
-$style_select = Ansel::getStyleSelect('default_gallerystyle_select', $GLOBALS['prefs']->getValue('default_gallerystyle'));
-echo _("Default style for galleries");
-echo $style_select . '<br />';
\ No newline at end of file