Changeset 31852 for extensions


Ignore:
Timestamp:
Jun 12, 2017, 9:31:38 PM (7 years ago)
Author:
romanf
Message:

New feature: Option to choose which categories to include in Random

Location:
extensions/MenuRandomPhoto
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • extensions/MenuRandomPhoto/admin.php

    r31780 r31852  
    77if (isset($_POST['submit']))
    88{
    9   $conf['MRP'] = array(
    10     'randompicture_preload' => $conf['MRP']['randompicture_preload'],
    11     'square' => isset($_POST['square']),
    12     );
    13   if (isset($_POST['height']))
    14     $conf['MRP']['height'] = $_POST['height'];
    15   else
    16     $conf['MRP']['height'] = 0;
    17   if (isset($_POST['title']))
    18     $conf['MRP']['title'] = $_POST['title'];
    19   else
    20     $conf['MRP']['title'] = '';
    21   if (isset($_POST['delay']))
    22     $conf['MRP']['delay'] = $_POST['delay']*1000;
    23   else
    24     $conf['MRP']['delay'] = 0;
     9        $conf['MRP'] = array(
     10                'randompicture_preload' => $conf['MRP']['randompicture_preload'],
     11                'square' => isset($_POST['square']),
     12                );
     13        if (isset($_POST['height']))
     14                $conf['MRP']['height'] = $_POST['height'];
     15        else
     16                $conf['MRP']['height'] = 0;
     17        if (isset($_POST['title']))
     18                $conf['MRP']['title'] = $_POST['title'];
     19        else
     20                $conf['MRP']['title'] = '';
     21        if (isset($_POST['delay']))
     22                $conf['MRP']['delay'] = $_POST['delay']*1000;
     23        else
     24                $conf['MRP']['delay'] = 0;
    2525
    26   conf_update_param('MRP', serialize($conf['MRP']));
    27   $page['infos'][] = l10n('Information data registered in database');
     26        if (isset($_POST['apply_to_albums']) and in_array($_POST['apply_to_albums'], array('all', 'list')))
     27        {
     28                $conf['MRP']['apply_to_albums'] = $_POST['apply_to_albums'];
     29                if ($_POST['apply_to_albums'] == 'list')
     30                {
     31                        check_input_parameter('albums', $_POST, true, PATTERN_ID);
     32       
     33                        if (empty($_POST['albums']))
     34                                $_POST['albums'][] = -1;
     35               
     36                        $query = 'UPDATE '.CATEGORIES_TABLE.' SET menurandomphoto_active=\'false\' WHERE id NOT IN ('.implode(',', $_POST['albums']).');';
     37                        pwg_query($query);
     38
     39                        $query = 'UPDATE '.CATEGORIES_TABLE.' SET menurandomphoto_active=\'true\' WHERE id IN ('.implode(',', $_POST['albums']).');';
     40                        pwg_query($query);
     41                }
     42        }
     43
     44        conf_update_param('MRP', serialize($conf['MRP']));
     45        $page['infos'][] = l10n('Information data registered in database');
    2846}
    2947
    30 $template->assign(array(
    31   'MRP' => $conf['MRP'],
    32   ));
     48// make sure we have the extra column (update vs copy new version over old one)
     49$result = pwg_query('SHOW COLUMNS FROM `'.CATEGORIES_TABLE.'` LIKE "menurandomphoto_active";');
     50if (!pwg_db_num_rows($result))
     51{
     52        $page['errors'][] = l10n('MenuRandomPhoto seems not to be installed/configured properly. Please remove and reinstall.');
     53        return;
     54}
     55
     56// associate to albums
     57$query = 'SELECT id FROM '.CATEGORIES_TABLE.' WHERE menurandomphoto_active=\'true\';';
     58$mrp_albums = array_from_query($query, 'id');
     59
     60$query = 'SELECT id,name,uppercats,global_rank FROM '.CATEGORIES_TABLE.';';
     61display_select_cat_wrapper($query, $mrp_albums, 'album_options');
     62       
     63$template->assign(array('MRP' => $conf['MRP']));
    3364
    3465$template->set_filename('plugin_admin_content', realpath(MRP_PATH . 'template/admin.tpl'));
    3566$template->assign_var_from_handle('ADMIN_CONTENT', 'plugin_admin_content');
    36 
    37 ?>
  • extensions/MenuRandomPhoto/language/de_DE/plugin.lang.php

    r30666 r31852  
    2828$lang['Use square'] = 'Quadrate verwenden';
    2929$lang['milliseconds'] = 'Millisekunden';
     30$lang['seconds'] = 'Sekunden';
     31$lang['Which albums to use'] = 'Welche Alben sollen verwendet werden';
     32$lang['all albums'] = 'Alle Alben';
     33$lang['a list of albums'] = 'Die Alben in der Liste';
     34$lang['Select albums...'] = 'Alben auswählen...';
     35$lang['Note: Only the selected albums/categories will be shown. Sub-categories must be selected if they are to be used!'] = 'Hinweis: Nur die ausgewählten Alben/Kategorien werden angezeigt. Unter-Kategorien müssen ausgewählt werden, wenn sie angezeigt werden sollen!';
     36$lang['No pictures for MenuRandomPhoto found.'] = 'Keine Bilder für MenuRandomPhoto gefunden.';
     37$lang['MenuRandomPhoto seems not to be installed/configured properly. Please remove and reinstall.'] = 'MenuRandomPhoto scheint nicht korrekt installiert/konfiguriert zu sein. Please entfernen und neu installieren.';
  • extensions/MenuRandomPhoto/language/en_UK/plugin.lang.php

    r30050 r31852  
    88$lang['Delay'] = 'Delay';
    99$lang['milliseconds'] = 'milliseconds';
    10 
    11 ?>
     10$lang['seconds'] = 'seconds';
     11$lang['Which albums to use'] = 'Which albums to use';
     12$lang['all albums'] = 'all albums';
     13$lang['a list of albums'] = 'a list of albums';
     14$lang['Select albums...'] = 'Select albums...';
     15$lang['Note: Only the selected albums/categories will be shown. Sub-categories must be selected if they are to be used!'] = 'Note: Only the selected albums/categories will be shown. Sub-categories must be selected if they are to be used!';
     16$lang['No pictures for MenuRandomPhoto found.'] = 'No pictures for MenuRandomPhoto found.';
     17$lang['MenuRandomPhoto seems not to be installed/configured properly. Please remove and reinstall.'] = 'MenuRandomPhoto seems not to be installed/configured properly. Please remove and reinstall.';
  • extensions/MenuRandomPhoto/main.inc.php

    r31780 r31852  
    22/*
    33Plugin Name: Menu Random Photo
    4 Version: 2.7.c
     4Version: 2.8.0
    55Description: Adds a random picture block into menu
    66Plugin URI: http://piwigo.org/ext/extension_view.php?eid=778
    7 Author: JanisV
    8 Fixes: romanf
     7Authors: JanisV, romanf
    98*/
    109
     
    2221if (defined('IN_ADMIN'))
    2322{
    24   add_event_handler('get_admin_plugin_menu_links', 'MRP_admin_menu');
     23        add_event_handler('get_admin_plugin_menu_links', 'MRP_admin_menu');
    2524}
    2625else
    2726{
    28   add_event_handler('blockmanager_apply', 'MRP_blockmanager_apply');
    29   add_event_handler('loc_end_page_header', 'MRP_end_page_header');
     27        add_event_handler('blockmanager_apply', 'MRP_blockmanager_apply');
     28        add_event_handler('loc_end_page_header', 'MRP_end_page_header');
    3029}
    3130
    3231function MRP_init()
    3332{
    34   global $conf, $user;
    35 
    36   load_language('plugin.lang', MRP_PATH);
    37 
    38   $conf['MRP'] = unserialize($conf['MRP']);
     33        global $conf, $user;
     34       
     35        load_language('plugin.lang', MRP_PATH);
     36       
     37        $conf['MRP'] = unserialize($conf['MRP']);
    3938}
    4039
    4140function MRP_register_menubar_blocks($menu_ref_arr)
    42 {
    43   $menu = & $menu_ref_arr[0];
    44   if ($menu->get_id() != 'menubar')
    45     return;
    46   $menu->register_block( new RegisteredBlock('mbRandomPhoto', 'Menu Random Photo', 'MRP'));
     41        {
     42        $menu = & $menu_ref_arr[0];
     43        if ($menu->get_id() != 'menubar')
     44                return;
     45        $menu->register_block( new RegisteredBlock('mbRandomPhoto', 'Menu Random Photo', 'MRP'));
    4746}
    4847
    4948function MRP_blockmanager_apply($menu_ref_arr)
    5049{
    51   global $user, $conf;
    52 
    53   $menu = & $menu_ref_arr[0];
    54  
    55   if((
    56       ($block=$menu->get_block('mbRandomPhoto'))!=null) and
    57       ($user['nb_total_images']>0)
    58     )
    59   {
    60     $block->set_title($conf['MRP']['title']);
    61     $block->template=realpath(MRP_PATH.'template/menu_random_photo.tpl');
    62   }
    63 }
    64 
    65   function MRP_end_page_header()
    66   {
    67     global $user, $template, $page, $conf;
    68 
    69     if(!array_key_exists('body_id', $page))
    70     {
    71       /*
    72        * it seems the error message reported on mantis:1476 is displayed because
    73        * the 'body_id' doesn't exist in the $page
    74        *
    75        * not abble to reproduce the error, but initializing the key to an empty
    76        * value if it doesn't exist may be a sufficient solution
    77        */
    78       $page['body_id']="";
    79     }
    80 
    81     if($page['body_id'] == 'theCategoryPage')
    82     {
    83       $randomPictProp = array(
    84         'delay' => $conf['MRP']['delay'],
    85         'blockHeight' => $conf['MRP']['height'],
    86 //        'showname' => $this->config['amm_randompicture_showname'],
    87 //        'showcomment' => $this->config['amm_randompicture_showcomment'],
    88         'pictures' => getRandomPictures($conf['MRP']['randompicture_preload']),
    89       );
    90 
    91       if (count($randomPictProp['pictures']) > 0)
    92       {
    93         $local_tpl = new Template(MRP_PATH.'/template', "");
    94         $local_tpl->set_filename('body_page', realpath(MRP_PATH.'/template/menu_random_photo.js.tpl'));
    95 
    96         $local_tpl->assign('data', $randomPictProp);
    97 
    98         $template->append('head_elements', $local_tpl->parse('body_page', true));
    99       }
    100     }
    101   }
    102 
    103   /**
    104    * return a list of thumbnails
    105    * each array items is an array
    106    *  'imageId'   => (integer)
    107    *  'imageFile' => (String)
    108    *  'comment'   => (String)
    109    *  'path'      => (String)
    110    *  'catId'     => (String)
    111    *  'name'      => (String)
    112    *  'permalink' => (String)
    113    *  'imageName' => (String)
    114    *
    115    * @param Integer $number : number of returned images
    116    * @return Array
    117    */
    118   function getRandomPictures($num=25)
    119   {
    120     global $user, $conf;
    121 
    122     $returned=array();
    123 
    124     if (preg_match('/(Googlebot|bingbot|Baiduspider|yandex|AhrefsBot|msnbot|NCollector)/', $_SERVER["HTTP_USER_AGENT"]))
    125     {
    126       return($returned);
    127     }
    128 
    129     $sql=array();
    130 
    131     // because ORDER BY RAND() can be very slow on a big database, let's
    132     // make a first query with no join and by security take 5 times
    133     // $num. We keep the result in session for 5 minutes.
    134     if (!isset($_SESSION['mrp_random_pics'])
    135         or !isset($_SESSION['mrp_random_pics_generated_on'])
    136         or $_SESSION['mrp_random_pics_generated_on'] < time() - 5*60) // 5 minutes ago
    137     {
    138       $query = '
    139 SELECT id
    140   FROM '.IMAGES_TABLE.'
    141   WHERE level <= '.$user['level'].'
    142   ORDER BY RAND() LIMIT '.($num*5).'
    143 ;';
    144       $_SESSION['mrp_random_pics'] = query2array($query, null, 'id');
    145       $_SESSION['mrp_random_pics_generated_on'] = time();
    146     }
    147    
    148     $sql['select'] = '
     50        global $user, $conf;
     51       
     52        $menu = & $menu_ref_arr[0];
     53       
     54        if((
     55                ($block=$menu->get_block('mbRandomPhoto'))!=null) and
     56                ($user['nb_total_images']>0)
     57                )
     58        {
     59                $block->set_title($conf['MRP']['title']);
     60                $block->template=realpath(MRP_PATH.'template/menu_random_photo.tpl');
     61        }
     62}
     63
     64function MRP_end_page_header()
     65{
     66        global $user, $template, $page, $conf;
     67
     68        if(!array_key_exists('body_id', $page))
     69        {
     70                /*
     71                * it seems the error message reported on mantis:1476 is displayed because
     72                * the 'body_id' doesn't exist in the $page
     73                *
     74                * not abble to reproduce the error, but initializing the key to an empty
     75                * value if it doesn't exist may be a sufficient solution
     76                */
     77                $page['body_id']="";
     78        }
     79
     80        if($page['body_id'] == 'theCategoryPage')
     81        {
     82                $randomPictProp = array(
     83                        'delay' => $conf['MRP']['delay'],
     84                        'blockHeight' => $conf['MRP']['height'],
     85        //        'showname' => $this->config['amm_randompicture_showname'],
     86        //        'showcomment' => $this->config['amm_randompicture_showcomment'],
     87                        'pictures' => getRandomPictures($conf['MRP']['randompicture_preload']),
     88                );
     89
     90                if (count($randomPictProp['pictures']) > 0)
     91                {
     92                        $local_tpl = new Template(MRP_PATH.'/template', "");
     93                        $local_tpl->set_filename('body_page', realpath(MRP_PATH.'/template/menu_random_photo.js.tpl'));
     94       
     95                        $local_tpl->assign('data', $randomPictProp);
     96       
     97                        $template->append('head_elements', $local_tpl->parse('body_page', true));
     98                }
     99        }
     100}
     101
     102/**
     103* return a list of thumbnails
     104* each array items is an array
     105*  'imageId'   => (integer)
     106*  'imageFile' => (String)
     107*  'comment'   => (String)
     108*  'path'      => (String)
     109*  'catId'     => (String)
     110*  'name'      => (String)
     111*  'permalink' => (String)
     112*  'imageName' => (String)
     113*
     114* @param Integer $number : number of returned images
     115* @return Array
     116*/
     117function getRandomPictures($num=25)
     118{
     119        global $user, $conf, $page, $header_msgs;
     120
     121        $returned=array();
     122
     123        if (preg_match('/(Googlebot|bingbot|Baiduspider|yandex|AhrefsBot|msnbot|NCollector)/', $_SERVER["HTTP_USER_AGENT"]))
     124        {
     125                return($returned);
     126        }
     127
     128        if (!isset($conf['MRP']['apply_to_albums']))
     129        {
     130                $page['errors'][] = l10n('MenuRandomPhoto seems not to be installed/configured properly. Please remove and reinstall.');
     131                return ($returned);
     132        }
     133
     134        $sql=array();
     135
     136        // If we use all pics for MRP, then we use the pre-fetch, if we only show
     137        // some, then we can't use the pre-fetch but will limit to (hopefully) a few albums.
     138
     139        // pre-fetch:
     140        // because ORDER BY RAND() can be very slow on a big database, let's
     141        // make a first query with no join and by security take 5 times
     142        // $num. We keep the result in session for 5 minutes.
     143        if ($conf['MRP']['apply_to_albums'] == "all" &&
     144                        (
     145                        !isset($_SESSION['mrp_random_pics'])
     146                        or !isset($_SESSION['mrp_random_pics_generated_on'])
     147                        or $_SESSION['mrp_random_pics_generated_on'] < time() - 5*60 // 5 minutes ago
     148                        )
     149                )
     150        {
     151                $query = 'SELECT id FROM '.IMAGES_TABLE.' WHERE level <= '.$user['level'].' ORDER BY RAND() LIMIT '.($num*5).';';
     152
     153                $mrp = query2array($query, null, 'id');
     154                if (!is_array($mrp) || count($mrp)<1)
     155                {
     156                        $page['errors'][] = l10n('No pictures for MenuRandomPhoto found.');
     157                        return ($returned);
     158                }
     159
     160                $_SESSION['mrp_random_pics'] = $mrp;
     161                $_SESSION['mrp_random_pics_generated_on'] = time();
     162        }
     163       
     164        $sql['select'] = '
    149165SELECT
    150     i.id as image_id,
    151     i.file as image_file,
    152     i.comment,
    153     i.path,
    154     c.id as catid,
    155     c.name,
    156     c.permalink,
    157     i.name as imgname
     166        i.id as image_id,
     167        i.file as image_file,
     168        i.comment,
     169        i.path,
     170        c.id as catid,
     171        c.name,
     172        c.permalink,
     173        i.name as imgname
    158174';
    159    
    160     $sql['from'] = '
    161   FROM '.CATEGORIES_TABLE.' c
    162     JOIN '.IMAGE_CATEGORY_TABLE.' ic ON ic.category_id = c.id
    163     JOIN '.IMAGES_TABLE.' i ON i.id = ic.image_id
     175       
     176        $sql['from'] = '
     177FROM '.CATEGORIES_TABLE.' c
     178        JOIN '.IMAGE_CATEGORY_TABLE.' ic ON ic.category_id = c.id
     179        JOIN '.IMAGES_TABLE.' i ON i.id = ic.image_id
    164180';
    165    
    166     $sql['where'] = '
    167   WHERE i.id IN ('.implode(',', $_SESSION['mrp_random_pics']).')
    168     AND i.level <= '.$user['level'].'
    169 ';
    170 
    171     if($user['forbidden_categories']!="")
    172     {
    173       $sql['where'].=" AND c.id NOT IN (".$user['forbidden_categories'].") ";
    174     }
     181       
     182        $sql['where'] = 'WHERE i.level<='.$user['level'];
     183
     184        if($user['forbidden_categories']!="")
     185                $sql['where'].=" AND c.id NOT IN (".$user['forbidden_categories'].") ";
     186
     187        if ($conf['MRP']['apply_to_albums'] == "all")
     188                $sql['where'].= " AND i.id IN (".implode(',', $_SESSION['mrp_random_pics']).")";
     189        else
     190                $sql['where'] .= " AND c.menurandomphoto_active='true' ";
     191
    175192/*
    176     switch($this->config['amm_randompicture_selectMode'])
    177     {
    178       case 'f':
    179         $sql['from'].=", ".USER_INFOS_TABLE." ui
    180           LEFT JOIN ".FAVORITES_TABLE." f ON ui.user_id=f.user_id ";
    181         $sql['where'].=" AND ui.status='webmaster'
    182                          AND f.image_id = i.id ";
    183         break;
    184       case 'c':
    185         $sql['where'].="AND (";
    186         foreach($this->config['amm_randompicture_selectCat'] as $key => $val)
    187         {
    188           $sql['where'].=($key==0?'':' OR ')." FIND_IN_SET($val, c.uppercats) ";
    189         }
    190         $sql['where'].=") ";
    191         break;
    192     }
     193        switch($this->config['amm_randompicture_selectMode'])
     194        {
     195        case 'f':
     196                $sql['from'].=", ".USER_INFOS_TABLE." ui
     197                LEFT JOIN ".FAVORITES_TABLE." f ON ui.user_id=f.user_id ";
     198                $sql['where'].=" AND ui.status='webmaster'
     199                                                AND f.image_id = i.id ";
     200                break;
     201        case 'c':
     202                $sql['where'].="AND (";
     203                foreach($this->config['amm_randompicture_selectCat'] as $key => $val)
     204                {
     205                $sql['where'].=($key==0?'':' OR ')." FIND_IN_SET($val, c.uppercats) ";
     206                }
     207                $sql['where'].=") ";
     208                break;
     209        }
    193210*/
    194     $sql = $sql['select'].$sql['from'].$sql['where']." ORDER BY RAND() LIMIT $num;";
    195 
    196     $result = pwg_query($sql);
    197     if($result)
    198     {
    199       if ($conf['MRP']['square'])
    200       {
    201         $height = $conf['MRP']['height'];
    202         if($height == 0)
    203           $derivative_params = ImageStdParams::get_by_type(IMG_SQUARE);
    204         else
    205           $derivative_params = ImageStdParams::get_custom($height, $height, 1, $height, $height);
    206       }
    207       else
    208       {
    209         $derivative_params = IMG_THUMB;
    210       }
    211 
    212       while($row=pwg_db_fetch_assoc($result))
    213       {
    214         $row['section']='categories';
    215         $row['category']=array(
    216           'id' => $row['catid'],
    217           'name' => $row['name'],
    218           'permalink' => $row['permalink']
    219         );
    220 
    221         $row['link']=make_picture_url($row);
    222         $infos = array('id'=>$row['image_id'], 'path'=>$row['path']);
    223         $row['thumb']=DerivativeImage::url($derivative_params, $infos);
    224 
    225         $returned[]=$row;
    226       }
    227     }
    228 
    229     return($returned);
    230   }
     211        $sql = $sql['select'].$sql['from'].$sql['where']." ORDER BY RAND() LIMIT $num;";
     212
     213        $result = pwg_query($sql);
     214        if($result)
     215        {
     216                if ($conf['MRP']['square'])
     217                {
     218                        $height = $conf['MRP']['height'];
     219                        if($height == 0)
     220                        $derivative_params = ImageStdParams::get_by_type(IMG_SQUARE);
     221                        else
     222                        $derivative_params = ImageStdParams::get_custom($height, $height, 1, $height, $height);
     223                }
     224                else
     225                {
     226                        $derivative_params = IMG_THUMB;
     227                }
     228       
     229                while($row=pwg_db_fetch_assoc($result))
     230                {
     231                        $row['section']='categories';
     232                        $row['category']=array(
     233                        'id' => $row['catid'],
     234                        'name' => $row['name'],
     235                        'permalink' => $row['permalink']
     236                        );
     237       
     238                        $row['link']=make_picture_url($row);
     239                        $infos = array('id'=>$row['image_id'], 'path'=>$row['path']);
     240                        $row['thumb']=DerivativeImage::url($derivative_params, $infos);
     241       
     242                        $returned[]=$row;
     243                }
     244        }
     245
     246        if (count($returned)<1)
     247                $page['errors'][] = l10n('No pictures for MenuRandomPhoto found.');
     248
     249        return($returned);
     250}
    231251
    232252function MRP_admin_menu($menu)
    233253{
    234   $menu[] = array(
    235     'NAME' => 'Menu Random Photo',
    236     'URL'  => MRP_ADMIN,
    237   );
    238 
    239   return $menu;
    240 }
     254        $menu[] = array(
     255                'NAME' => 'Menu Random Photo',
     256                'URL'  => MRP_ADMIN,
     257                );
     258
     259        return $menu;
     260}
  • extensions/MenuRandomPhoto/maintain.inc.php

    r30050 r31852  
    55class MenuRandomPhoto_maintain extends PluginMaintain
    66{
    7   private $installed = false;
     7        private $installed = false;
     8       
     9        private $default_conf = array(
     10                'height' => 150,
     11                'square' => true,
     12                'randompicture_preload' => 25,     // number preloaded random pictures
     13                'title' => 'A random photo',
     14                'delay' => 4000,
     15                'apply_to_albums' => 'all',
     16        );
     17       
     18        function __construct($plugin_id)
     19        {
     20                parent::__construct($plugin_id);
     21        }
     22       
     23        function install($plugin_version, &$errors=array())
     24        {
     25                global $conf;
     26       
     27                if (empty($conf['MRP']))
     28                {
     29                        $conf['MRP'] = serialize($this->default_conf);
     30                        conf_update_param('MRP', $conf['MRP']);
     31                }
     32                else
     33                {
     34                        $new_conf = is_string($conf['MRP']) ? unserialize($conf['MRP']) : $conf['MRP'];
     35               
     36                        $conf['MRP'] = serialize($new_conf);
     37                        conf_update_param('MRP', $conf['MRP']);
     38                }
    839
    9   private $default_conf = array(
    10     'height' => 150,
    11     'square' => true,
    12     'randompicture_preload' => 25,     // number preloaded random pictures
    13     'title' => 'A random photo',
    14     'delay' => 4000,
    15   );
    16 
    17   function __construct($plugin_id)
    18   {
    19     parent::__construct($plugin_id);
    20   }
    21 
    22   function install($plugin_version, &$errors=array())
    23   {
    24     global $conf;
    25 
    26     if (empty($conf['MRP']))
    27     {
    28       $conf['MRP'] = serialize($this->default_conf);
    29       conf_update_param('MRP', $conf['MRP']);
    30     }
    31     else
    32     {
    33       $new_conf = is_string($conf['MRP']) ? unserialize($conf['MRP']) : $conf['MRP'];
    34 
    35       $conf['MRP'] = serialize($new_conf);
    36       conf_update_param('MRP', $conf['MRP']);
    37     }
    38    
    39     $this->installed = true;
    40   }
    41 
    42   function activate($plugin_version, &$errors=array())
    43   {
    44     if (!$this->installed)
    45     {
    46       $this->install($plugin_version, $errors);
    47     }
    48   }
    49 
    50   function deactivate()
    51   {
    52   }
    53 
    54   function uninstall()
    55   {
    56     conf_delete_param('MRP');
    57   }
     40                // add a new column to existing CATEGORIES table, if it doesn't already exist
     41                $result = pwg_query('SHOW COLUMNS FROM `'.CATEGORIES_TABLE.'` LIKE "menurandomphoto_active";');
     42                if (!pwg_db_num_rows($result))
     43                {
     44                        pwg_query('ALTER TABLE `'.CATEGORIES_TABLE.'` ADD `menurandomphoto_active` enum(\'true\', \'false\') default \'false\';');
     45                }
     46       
     47                $this->installed = true;
     48        }
     49       
     50        function activate($plugin_version, &$errors=array())
     51        {
     52                if (!$this->installed)
     53                {
     54                        $this->install($plugin_version, $errors);
     55                }
     56        }
     57       
     58        function deactivate()
     59        {
     60        }
     61       
     62        function uninstall()
     63        {
     64                conf_delete_param('MRP');
     65            // delete field
     66        pwg_query('ALTER TABLE `'. CATEGORIES_TABLE .'` DROP COLUMN `menurandomphoto_active`;');
     67        }
    5868}
    5969
  • extensions/MenuRandomPhoto/template/admin.tpl

    r31792 r31852  
     1{combine_script id='jquery.chosen' load='footer' path='themes/default/js/plugins/chosen.jquery.min.js'}
     2{combine_css path="themes/default/js/plugins/chosen.css"}
     3
     4{footer_script}{literal}
     5jQuery(document).ready(function() {
     6  jQuery(".chzn-select").chosen();
     7
     8  function checkStatusOptions() {
     9    if (jQuery("input[name=apply_to_albums]:checked").val() == "list") {
     10      jQuery("#albumList").show();
     11    }
     12    else {
     13      jQuery("#albumList").hide();
     14    }
     15  }
     16
     17  checkStatusOptions();
     18
     19  jQuery("input[name=apply_to_albums]").change(function() {
     20    checkStatusOptions();
     21  });
     22});
     23{/literal}{/footer_script}
     24
    125<div class="titrePage">
    226<h2>Menu Random Photo</h2>
     
    4165</fieldset>
    4266
     67<fieldset>
     68  <legend>{'Which albums to use'|translate}</legend>
     69  <p>
     70    <label><input type="radio" name="apply_to_albums" value="all"{if $MRP.apply_to_albums eq 'all'} checked="checked"{/if}> <strong>{'all albums'|translate}</strong></label>
     71    <label><input type="radio" name="apply_to_albums" value="list"{if $MRP.apply_to_albums eq 'list'} checked="checked"{/if}> <strong>{'a list of albums'|translate}</strong></label>
     72  </p>
     73  <p id="albumList">
     74    <select data-placeholder="{'Select albums...'|translate}" class="chzn-select" multiple style="width:700px;" name="albums[]">
     75      {html_options options=$album_options selected=$album_options_selected}
     76    </select>
     77    <br>
     78    {'Note: Only the selected albums/categories will be shown. Sub-categories must be selected if they are to be used!'|translate}
     79  </p>
     80</fieldset>
     81
    4382<p class="formButtons">
    4483  <input type="hidden" name="pwg_token" value="{$PWG_TOKEN}">
Note: See TracChangeset for help on using the changeset viewer.