[geeklog-devel] Geeklog New Scripts Class

Tom websitemaster at cogeco.net
Sat Mar 5 15:06:13 EST 2011

Thanks and yes it will. 

I was actually going to ask you if you could update one of your plugins that
use jQuery to use the new scripts class just to help me weed out any
potential bugs.

Hmmm, I just thought of an issue. Plugins that use JavaScript and not the
new Scripts class should be fine since most of the JavaScript for plugins
are based on their own JavaScript files. I see a problem happening though
jQuery could be set twice if the Scripts class sets it and then an older
plugin sets it using their own copy.

Should we just assume older plugins that use jQuery will need to be updated
to be used with 1.8.0 


Should I add in a config option to disable setting jQuery by the Scripts
class? If a config option is set to true then the plugin will have to make
sure jQuery is set all the time and is the proper version. The config option
doesn't really fix all cases so I wonder if we should just go with option 1.


-----Original Message-----
From: geeklog-devel-bounces at lists.geeklog.net
[mailto:geeklog-devel-bounces at lists.geeklog.net] On Behalf Of cordiste
Sent: March-05-11 1:29 PM
To: Geeklog Development
Subject: Re: [geeklog-devel] Geeklog New Scripts Class

Thank you Tom, this will be a nice feature.

Is this will be available with geeklog 1.8 ?


2011/3/4 Tom <websitemaster at cogeco.net>:
> Hi All,
> I just pushed an update that adds a script class to Geeklog. This 
> scripts class is meant to handle all CSS files and JavaScript in 
> Geeklog as we move forward. It is pretty much complete but will 
> probably need some tweaking here and there.
> I have also updated Geeklog Core to use this new class. Further work 
> needs to be done (like with the plugins) but for now the advance 
> editor for Comments and Articles uses the new class along with the 
> Configuration and My Account page. This also means in the header.thml 
> file, css_url and advanced_editor template variables are not needed 
> any more. JavaScript in general also needs a bit of cleanup in Geeklog 
> which I hope to get to in the future. Things like common.js is always 
> loaded. This now doesn't have to be the case with the new Scripts 
> class but I have not taken the time yet to find all the spots that use 
> the functions in this file. When I do (or someone else) all they would 
> have to do is tell it to load when needed in the php code.
> Here are some highlights of the class:
> -       When the class is used, only the JavaScript and CSS files that 
> are needed will load
> -       Admin can specify to use Google's CDN files for jQuery
> -       Class will fall back and use Google's CDN files if jQuery 
> files missing from Geeklog
> -       Will do away with inline scripting (ie scripts in template 
> files) as you will now pass the required Javascript to the class
> -       Can specify to load JavaScript in header or footer (defaults 
> to footer and jQuery always loads in the footer)
> -       Possible future feature includes Caching/Compressing of 
> regularly included JavaScript Files and CSS files (hence the unused 
> constant variable in some of the classes functions)
> (As I am writing this I just realized I forgot to add in the config 
> option in the Configuration to enable the use of Google's CDN files, I 
> will push this change later this week)
> The class is set near the beginning of lib-common.php as $_SCRIPTS. It 
> uses the template variable plg_headercode in COM_SiteHeader to put 
> information in the header and COM_SiteFooter with plg_footercode to 
> put JavaScript in the footer. Obviously all your JavaScript code (and 
> CSS files) needs to be set in the class before COM_SiteHeader is run 
> (at least for the CSS files and any JavaScript in the header). All 
> JavaScript must be set by the time you call COM_SiteFooter (this 
> shouldn't be a problem since this is one of the last functions you should
be calling anyways on a page).
> So how do you use the new class?
> To pass in some JavaScript code and a JavaScript file to the footer 
> you would do something like so:
>                // Add JavaScript
>                $js = 'geeklogEditorBasePath = "' . $_CONF['site_url'] .
> '/fckeditor/";';
>                $_SCRIPTS->setJavaScript($js, true);
>                $_SCRIPTS->setJavaScriptFile('submitcomment_fckeditor',
> '/javascript/submitcomment_fckeditor.js');
> Or if you wanted to tell Geeklog to include a jQuery library
>        $_SCRIPTS->setJavaScriptLibrary('jquery');
> Or to use a widget of the jquery ui plugin
>        $_SCRIPTS->setJavaScriptLibrary('jquery.ui.autocomplete');
> If you tell the script to use a widget there is no need to tell the 
> Scripts class to load jQuery as it will automatically add it in.
> To add a CSS file you would do something like this
>        $this->setCSSFile('theme', $theme_path . '/style.css');
> If JavaScript is included in any page a bunch of Core JavaScript 
> variables will automatically be inserted for use by any JavaScript 
> code that needs them. These variables are geeklogSiteUrl, 
> geeklogLayoutUrl, geeklogAdminUrl and geeklogThemeName.
> Finally, the order of placement for JavaScript in the footer is
> 1. Core JavaScript variables
> 2. JavaScript Library files (jQuery, etc..) 3. JavaScript Code (from 
> setJavaScript) 4. JavaScript Files (from setJavaScriptFile)
> Thanks
> Tom
> _______________________________________________
> geeklog-devel mailing list
> geeklog-devel at lists.geeklog.net
> http://eight.pairlist.net/mailman/listinfo/geeklog-devel
geeklog-devel mailing list
geeklog-devel at lists.geeklog.net

More information about the geeklog-devel mailing list