Roundcube Community Forum

Third Party Contributions => API Based Plugins => Topic started by: Jack! on September 21, 2010, 10:35:47 AM

Title: Calendar plugin (fork from Rosali) - problem with jqueryui plugin detection
Post by: Jack! on September 21, 2010, 10:35:47 AM
Hi,

I've updated my calendar plugin from Rosali's trunk version 3878.2 to the latest trunk version 3973. For some reason I get the following error all the time now: "jqueryui plugin is not installed. Get it here.". If I edit the file calendar.php and disable the jqueryui plugin check (line 199 and further) everything works fine. It doesn't help to disable all plugins but jqueryui and calendar in file main.inc.php. Any ideas how to fix this without touching calendar.php? Many thanks.

Regards,

Jack

Configuration: Windows 2008 R2 - IIS - hMailServer - Roundcube v4.0 stable

// List of active plugins
$rcmail_config['plugins'] = array(
'jqueryui',
'calendar',
'compose_addressbook',
'compose_newwindow',
'emoticons',
'globaladdressbook',
'keyboard_shortcuts',
'markasjunk',
'message_highlight',
'sticky_notes',
'zipdownload',
'contextmenu'
);
Title: Calendar plugin (fork from Rosali) - problem with jqueryui plugin detection
Post by: rosali on September 21, 2010, 01:28:15 PM
Hmm... It works for me just fine. I have added the check because people missed this requirements. Could you add some debug code ... Something like print_r ... Unfortunately I don't have access to my code at the moment to give more detailed advice.
Title: Calendar plugin (fork from Rosali) - problem with jqueryui plugin detection
Post by: Jack! on September 21, 2010, 04:21:54 PM
Hi Rosali,

Using trunk 3973 I've edited calendar.php as requested. I've added the line (without quotes) "print_r ($plugins);" after line 198 so the code snippet reads now:

  function startup($template = 'calendar.calendar') {
    $rcmail = rcmail::get_instance();
    $plugins = array_flip($rcmail->config->get('plugins'));
   print_r ($plugins);
    if(empty($plugins['jqueryui'])){
      die('jqueryui plugin is not installed. Get it here.');
    }    
    $temparr = explode(".", $template);


Output on screen if running the calendar plugin this way within Roundcube:

Array ( [jqueryui] => 0 [calendar] => 1 [compose_addressbook] => 2 [compose_newwindow] => 3 [emoticons] => 4 [globaladdressbook] => 5 [keyboard_shortcuts] => 6 [markasjunk] => 7 [message_highlight] => 8 [sticky_notes] => 9 [zipdownload] => 10 [contextmenu] => 11 ) jqueryui plugin is not installed. Get it here.

As you can see, it does mention the jqueryui plugin in variable $plugins. I assume there's something wrong with the plugin check itself (line   ... if(empty($plugins['jqueryui'])...)?

Having said that, I also installed the newest version of the sticky_notes plugin (trunk 3973). Same problem, same solution that works for me: disable the jqueryui plugin check in file sticky_notes.php.

Regards,

Jack!
Title: Calendar plugin (fork from Rosali) - problem with jqueryui plugin detection
Post by: Jack! on September 21, 2010, 04:55:30 PM
Hi Rosali,

Concerning file calendar.php, it needs some further testing (I don't know if the code change does make any sense) but if I change line 199

from: if(empty($plugins['jqueryui'])){

into: if(!array_key_exists('jqueryui', $plugins)){

everythings just works fine without disabling the plugin check anymore.

Regards,

Jack
Title: Calendar plugin (fork from Rosali) - problem with jqueryui plugin detection
Post by: rosali on September 21, 2010, 05:29:42 PM
My bad ... my check fails if jqueryui is fist plugin ... jqueryui => 0 ... and that's 'empty'. I didn't use 'array_key_exists' due to performance concerns. I'll modify the check asap.
Title: Calendar plugin (fork from Rosali) - problem with jqueryui plugin detection
Post by: Jack! on September 22, 2010, 02:54:26 AM
Thanks for your support!

Regards,

Jack
Title: Calendar plugin (fork from Rosali) - problem with jqueryui plugin detection
Post by: drewb0y on October 09, 2010, 10:13:29 PM
That check confused me too. I thought it would be best to have jqueryui be first in the array. But it kept saying not installed. I moved jqueryui to be the 3rd in the list and it worked fine.

Thanks!