Hacking WP 3.5 gallery – use Galleriffic for default gallery output

So we all know that WordPress has created a new nice system for managing and displaying galleries eliminating need for third party plugins.

So how can we use it – let’s try to use nice Galleriffic jQuery plugin as an output. Our ambition here is minimally tweaking code and implementing everything in Javascript and css.

WordPress 3.5 gallery has currently several limitations. It’s main html generating function is not properly hookable and it uses <dt> and <dl> tags for organizing thumbnails.

But there is a solution and here is a quick howto

1. Download Galleriffic

http://www.twospy.com/galleriffic/. To get quick startup, download the one with examples, so you can make use of existing styles and graphics.

Note: you still should build your own css later.

2. Unpack it to your theme directory

In current example a galleriffic-2/ directory is created in theme directory root

3. Add following css to your style.css

div.content {
	/* The display of content is enabled using jQuery so that the slideshow content won't display unless javascript is enabled. */
	display: none;
	float: right;
	width: 550px; 
}
div.content a, div.navigation a {
	text-decoration: none;
	color: #777;
}
div.content a:focus, div.content a:hover, div.content a:active {
	text-decoration: underline;
}
div.controls {
	margin-top: 5px;
	height: 23px;
}
div.controls a {
	padding: 5px;
}
div.ss-controls {
	float: left;
}
div.nav-controls {
	float: right;
}
div.slideshow-container {
	position: relative;
	clear: both;
	height: 502px; /* This should be set to be at least the height of the largest image in the slideshow */
}
div.loader {
	position: absolute;
	top: 0;
	left: 0;
	background-image: url('loader.gif');
	background-repeat: no-repeat;
	background-position: center;
	width: 550px;
	height: 502px; /* This should be set to be at least the height of the largest image in the slideshow */
}
div#slideshow {
	position:relative;
	height:500px;
}
div#slideshow span.image-wrapper {
	display: block;
	position: absolute;
	top: 0;
	left: 0;
}
div.slideshow a.advance-link {
	display: block;
	width: 550px;
	height: 502px; /* This should be set to be at least the height of the largest image in the slideshow */
	line-height: 502px; /* This should be set to be at least the height of the largest image in the slideshow */
	text-align: center;
}
div.slideshow a.advance-link:hover, div.slideshow a.advance-link:active, div.slideshow a.advance-link:visited {
	text-decoration: none;
}
div.slideshow img {
	vertical-align: middle;
	border: 1px solid #ccc;
}
div.download {
	float: right;
}
div.caption-container {
	position: relative;
	clear: left;
	height: 75px;
}
span.image-caption {
	display: block;
	position: absolute;
	width: 550px;
	top: 0;
	left: 0;
}
div.caption {
	padding: 12px;
}
div.image-title {
	font-weight: bold;
	font-size: 1.4em;
}
div.image-desc {
	line-height: 1.3em;
	padding-top: 12px;
}
div.navigation {
	/* The navigation style is set using jQuery so that the javascript specific styles won't be applied unless javascript is enabled. */
}
ul.thumbs {
	clear: both;
	margin: 0;
	padding: 0;
}
ul.thumbs li {
	float: left;
	padding: 0;
	margin: 5px 10px 5px 0;
	list-style: none;
}
a.thumb {
	padding: 2px;
	display: block;
	border: 1px solid #ccc;
}
ul.thumbs li.selected a.thumb {
	background: #000;
}
a.thumb:focus {
	outline: none;
}
ul.thumbs img {
	border: none;
	display: block;
}
div.pagination {
	clear: both;
}
div.navigation div.top {
	margin-bottom: 12px;
	height: 11px;
}
div.navigation div.bottom {
	margin-top: 12px;
}
div.pagination a, div.pagination span.current, div.pagination span.ellipsis {
	display: block;
	float: left;
	margin-right: 2px;
	padding: 4px 7px 2px 7px;
	border: 1px solid #ccc;
}
div.pagination a:hover {
	background-color: #eee;
	text-decoration: none;
}
div.pagination span.current {
	font-weight: bold;
	background-color: #000;
	border-color: #000;
	color: #fff;
}
div.pagination span.ellipsis {
	border: none;
	padding: 5px 0 3px 2px;
}

 

Note: the styles above are based on official galleriffic example 2 and are required to make things look proper.

4. Create Javascript code

Now this is a tricky part, the Javascript is going to modify the DOM of the html generated by WordPress galleries and start Galleriffic.

Add following code to js/layout-control.php (or your prefered Javascript file)

(function($) {
    $.fn.changeElementType = function(newType) {
        var attrs = {};
 
        $.each(this[0].attributes, function(idx, attr) {
            attrs[attr.nodeName] = attr.nodeValue;
        });
 
        this.replaceWith(function() {
            return $("<" + newType + "/>", attrs).append($(this).contents());
        });
    };
})(jQuery);
 
jQuery(document).ready(function($) {
	$('div.navigation').css({'width' : '300px', 'float' : 'left'});
	$('div.content').css('display', 'block');
	$('#gallery-1').html("<ul class=\"thumbs noscript\">"+$('#gallery-1').html()+"</ul>");
	$('#gallery-1').before('<div id="controls"></div><div id="loading"></div><div id="slideshow"></div><div id="caption"></div>');
 
	$('.gallery dl').changeElementType("li");
	$('.gallery br').remove();
	$('.gallery dt').changeElementType("div");
	$('.gallery li a').addClass("thumb");
	jQuery(document).ready(function($) {
				$('div.navigation').css({'width' : '300px', 'float' : 'left'});
				$('div.content').css('display', 'block');
 
				var onMouseOutOpacity = 0.67;
				$('#thumbs ul.thumbs li').opacityrollover({
					mouseOutOpacity:   onMouseOutOpacity,
					mouseOverOpacity:  1.0,
					fadeSpeed:         'fast',
					exemptionSelector: '.selected'
				});
 
				// Initialize  Galleriffic Gallery
				var gallery = $('#gallery-1').galleriffic({
					delay:                     2500,
					numThumbs:                 15,
					preloadAhead:              10,
					enableTopPager:            true,
					enableBottomPager:         true,
					maxPagesToShow:            7,
					imageContainerSel:         '#slideshow',
					controlsContainerSel:      '#controls',
					captionContainerSel:       '#caption',
					loadingContainerSel:       '#loading',
					renderSSControls:          true,
					renderNavControls:         true,
					playLinkText:              'Play Slideshow',
					pauseLinkText:             'Pause Slideshow',
					prevLinkText:              '&lsaquo; Previous Photo',
					nextLinkText:              'Next Photo &rsaquo;',
					nextPageLinkText:          'Next &rsaquo;',
					prevPageLinkText:          '&lsaquo; Prev',
					enableHistory:             true,
					autoStart:                 false,
					syncTransitions:           true,
					defaultTransitionDuration: 900,
					onSlideChange:             function(prevIndex, nextIndex) {
						this.find('ul.thumbs').children()
							.eq(prevIndex).fadeTo('fast', onMouseOutOpacity).end()
							.eq(nextIndex).fadeTo('fast', 1.0);
					},
					onPageTransitionOut:       function(callback) {
						this.fadeTo('fast', 0.0, callback);
					},
					onPageTransitionIn:        function() {
						this.fadeTo('fast', 1.0);
					}
				});
 
				function pageload(hash) {
 
					if(hash) {
						$.galleriffic.gotoImage(hash);
					} else {
						gallery.gotoIndex(0);
					}
				}
 
				$("a[rel='history']").live('click', function(e) {
					if (e.button != 0) return true;
 
					var hash = this.href;
					hash = hash.replace(/^.*#/, '');
 
					$.historyLoad(hash);
 
					return false;
				});
 
			});
});

 

5. And now – pull it all together abd add to your functions.php file:

<?php
wp_register_script('galleriffic',get_stylesheet_directory_uri() . '/galleriffic-2.0/js/jquery.galleriffic.js',false, '2.0.0');
wp_register_script('jquery.opacityrollover',get_stylesheet_directory_uri() . '/galleriffic-2.0/js/jquery.opacityrollover.js',false, '2.0.0');
wp_register_script('layout-control', get_stylesheet_directory_uri() . '/js/layout-control.js',false,'2.0','all');
 
wp_enqueue_script('galleriffic');
wp_enqueue_script('jquery.opacityrollover');
wp_enqueue_script('layout-control');
 
wp_enqueue_style('galleriffic-style', get_stylesheet_directory_uri() . '/galleriffic-2.0/css/basic.css',false,'2.0','all');
 
?>

 

6. Job done! All your WordPress galleries should be using Galleriffic now!

7. Make proper stylesheets and integrate it nicely into theme also;)

Posted in Howto | Tagged , | Leave a comment

How to change user capabilities in WordPress themes?

In WordPress user role rights are organized by capabilities. Those rights are also managable in theme code. The whole list of different capabilities is listed here.

So let’s assume we want to add user with role “author” ability to read private pages, which is disabled by default. To achieve this we must add following code to theme’s functions.php file:

function add_theme_caps() {
    $role = get_role( 'author' );
 
    $role->add_cap( 'read_private_pages' ); 
}
add_action( 'admin_init', 'add_theme_caps');

The code should be pretty self-explanatory. If we want to change another role, change ‘author’ to the name of the role. If we want to add another capability, change ‘read_private_pages’ to required capability. The whole list is here.

Posted in Howto | Leave a comment

How to add featured image to the post text

Featured image is a very nice feature to use in lists of posts and also show it custom way on the posts page. Usually it is shown in the header of the page or somewhere outside the main content.

But sometimes it would be smart to enter featured image into post content, for example after first paragraph. Or in top of text while using two-column layout.

So how to do it? A very simple filter added to your functions.php file helps.

add_filter( 'the_content', insert_featured_image, 20 );

function insert_featured_image( $content ) {
    return get_the_post_thumbnail($post->ID, 'post-single').$content;
}

What the filter does, is to add featured image code as the start of the content. If you’d like to add image after first paragraph of the post:

add_filter( 'the_content', insert_featured_image, 20 );

function insert_featured_image( $content ) {
    return preg_replace( "/<\/p>/", "</p>" . get_the_post_thumbnail($post->ID, 'post-single'), $content, 1 ); }

 

Posted in Howto | Tagged , | Leave a comment

Test how web page looks on Android devices (on Ubuntu Linux).

Mobile web has been a hot topic for years now and every web page created should be at least usable on mobile devices. Or better – have a mobile optimized version for them.

With the rise of powerful tablet computers, mobile world is splitting into two: smartphones and tablets. Their user experience is very different, so is the software configuration.

To take into account all this messy market of different devices – a lot of testing has to be done. But nobody can buy all the available phones and tablets.

Fortunately a simple solution is at hand for testing Android devices. Current solution is described for Ubuntu Linux, but similar process is usable for other Linux’es, Windows and Mac.

1. You must make sure you have a JDK installed on your computer. If not, install it. If you are using Ubuntu Linux download and install one by:

sudo apt-get install openjdk-6-jdk

1. Download Android SDK from: http://developer.android.com/sdk/index.html

By default, a file for your operating system will be offered.

2. Unzip the file for example to android/ directory (change filename to match your’s):

unzip adt-bundle-linux-x86.zip -d android/

You can use any other directory also.

3. Run android emulator (android)

On ubuntu (change android/to your install directory):

android/adt-bundle-linux-x86/sdk/tools/android

4. Now things get more interesting – let’s try and create a test image for Samsung S5690 Galaxy XCover.

As the phone uses Android 2.3, we first need to install some packages to include Android 2.3

5. Select and install (“install packages”) Android version 2.3

6. Go to menu Tools->Manage AVD-s and create a virtual device.

Select Device definitions TAB, add new device:

Save device

Go to Android Virtual DEvice TAB and press “New” to create a new AVD:

Press OK.

7. Select the device from the list

and press Start.

Launching emulator takes some time – even quite a lot on slower computers, but try to be patient until the boot screen goes away.

Open the Android browser and navigate to the page you have to test. Now you can create several devices to try the compatibility of your web page to mobile devices. You need a fast computer though as emulation is relatively slow.

 

Posted in Howto, testing, ubuntu | Tagged , , , | Leave a comment

How to batch convert movie for HTML5 in Linux

Let’s assume you’re on ubuntu Linux and want to convert movies for displaying in HTML5 document. Let’s assume you have a bunch of Quicktime .mov files in a directory.

First you must be sure ffmpeg is installed.

If not:

sudo apt-get install ffmpeg

Also you might need to install:

sudo apt-get install libavcodec-extra-52

or

sudo apt-get install libavcodec-extra-53

 

Got to durectory where your movies are

cd directory

And run following command, which convert all your .mov files to web formats:

for f in *.mov;
do
ffmpeg -i $f -acodec libvorbis -ac 2 -ab 96k -ar 44100 -b 345k “${f%.mov}.ogv”;
ffmpeg -i $f -acodec libvorbis -ac 2 -ab 96k -ar 44100 -b 345k “${f%.mov}.webm”;
ffmpeg -i $f -acodec libfaac -ab 96k -vcodec libx264 -vpre slower -vpre main -level 21 -refs 2 -b 345k -bt 345k -threads 0 “${f%.mov}.mp4″;
done

Posted in Howto, ubuntu | Leave a comment

How to remove some plugin’s effects from specific page?

We often need to remove plugins’ effects from some specific page or page template.

For example user has a blog and Easy Fancybox  plugin is very nicely serving all the images on all the pages. But then there are specific pages with template “collections.php” where there is a more complex Galeriffic gallery. And then there is frontpage, which has it’s own special effects which would be spoiled by fancybox.

Then we have to open plugin code and check which actions need to be removed. Search for all enqueue_script, enqueue_style, add_action, add_filter, wp_register_script and wp_register_style functions. And add reverse functions into you page template.

On Linux commandline you can try searching in code:

$ cd plugin_directory
$ grep -ir ‘add_action’ .

etc… Or just open it in editor and do Ctrl-F

In case of Easy Fancybox we found following commands:

add_filter('embed_oembed_html', 'add_video_wmode_opaque', 10, 3);
add_action('wp_print_styles', 'easy_fancybox_enqueue_styles', 999);
add_action('wp_enqueue_scripts', 'easy_fancybox_enqueue_scripts', 999);
add_action('wp_head', 'easy_fancybox', 999);
 
add_action('admin_init','easy_fancybox_admin_init');
 
 wp_enqueue_script('jquery.fancybox', plugins_url(FANCYBOX_SUBDIR.'/fancybox/jquery.fancybox-'.FANCYBOX_VERSION.'.pack.js', __FILE__), array('jquery'), FANCYBOX_VERSION);
 
 wp_enqueue_script('jquery.easing', plugins_url(FANCYBOX_SUBDIR.'/fancybox/jquery.easing-'.EASING_VERSION.'.pack.js', __FILE__), array('jquery'), EASING_VERSION, true);
 
 wp_enqueue_script('jquery.mousewheel', plugins_url(FANCYBOX_SUBDIR.'/fancybox/jquery.mousewheel-'.MOUSEWHEEL_VERSION.'.pack.js', __FILE__), array('jquery'), MOUSEWHEEL_VERSION, true);
 
wp_enqueue_script('jquery.metadata',plugins_url(FANCYBOX_SUBDIR.'/jquery.metadata.js', __FILE__), array('jquery'), METADATA_VERSION, true);

 

You can also notice 3d parameter “priority”, which has to be used as third parameter of reverse action also.

The following is enough to add to your template file:

 

function remove_plugs() {
 
	remove_action('wp_print_styles', 'easy_fancybox_enqueue_styles',999);
	remove_action('wp_enqueue_scripts', 'easy_fancybox_enqueue_scripts',999);
	remove_action('wp_head', 'easy_fancybox',999);
	remove_action('admin_init', 'easy_fancybox_admin_init');
	remove_filter('embed_oembed_html', 'add_video_wmode_opaque', 10);
 
	wp_deregister_script( 'jquery.fancybox' );
	wp_deregister_script( 'jquery.easing' );
	wp_deregister_script( 'jquery.mousewheel' );
	wp_deregister_script( 'jquery.metadata' );
 
}
 
add_action('wp_head', 'remove_plugs', 1);

 

With the technique you can remove all unwanted plugin effects in different page templates.

 

Posted in Howto | Tagged , , | 5 Comments

How to create a web store – some plugins

Services or plugins?

Although this blog emphasizes on WordPress development I start with some words about other options. As running an web store is a business, it deals with earning money and it requires some investment. There are a lot of very nice services which allow to create a web store.

An interesting one among them is Shopify, which I would recommend. Before starting to build your own shop, it’s at least recommended to check out services like this and get an idea what do they have to offer. This could be even later the basis of building your own WP based webstore.

Anyway, there are a lot of reasons still why to create your own web-store based on WordPress. Keeping costs low is not one of them, but keeping complete control over you business certainly is.

WordPress plugins.

So you need to have an installation on WordPress. (http://codex.wordpress.org/Installing_WordPress)

After installing, there are several plugins available for easily creating and managing a web store.

1. Wp-Ecommerce is maybe the most prominent plugin in the area. The base of it is free, but you can buy a lot of different upgrades for it. Has a good usability and integration with themes. You can use several payments through Paypal, Google Checkout, Authorize.net etc.

Definitely recommended plugin.

3. EShop is another nice plugin we have been using for different smaller shops. The products are set up in the usual post/page environment. Setup and handling is easy and integrates well with usual WordPress experience. Accepts a lot of payment gateways although only Paypal has free support.

2. YAK for WordPress. YAK is an extensible, open source, shopping cart plugin for WordPress. It associates products with weblog entries (in other words, posts), so the post ID also becomes the product code. It supports both pages and posts as products, handles different types of product through categorisation, and provides customisable purchase options — cheque or deposit, basic credit card form (for manual credit card processing), accounts receivable, basic Google Checkout integration, standard PayPal integration, PayPal Payments Pro,Authorize.netStripe and MiGS (Mastercard Internet Gateway Service, add-on only)

4. wpStoreCart is a free, open source, and full featured e-commerce platform built atop of WordPress. It is easy to use, lightweight, heavily supported and constantly updated with new features.

 

Posted in Howto, money | Tagged , | 3 Comments

How to hide private pages from public WordPress menu?

WordPress has a builtin functionality to make pages private. Also it has a really nice menu design system. On a lot of occasions people would like to have different menus for logged-in users and for public users. Without doing anything the menu items remain, but clicking on item returns 404 error, which is unacceptable.

There is a simple way to hide the menus to keep the user experience clean. This time we are using only CSS for this.

1. First make sure, that your theme body tag has “logged-in” class attached to body in case user is logged in.

If not open your header.php and add:

<body <?php body_class(); ?>>

2. Open the menu editor, add private pages, but for them add CSS class “private-page”.

3. Open your style.css file and add following rows:

 

.private-page.menu-item, menu li.private-page {
display:none;
}
 
.logged-in .private-page, .logged-in menu li.private-page{
display:block;
}

Now your private pages should be hidden from the display – of course they remain in the source code, but the user experience is fixed now.

Posted in css, Howto | 3 Comments

Event management. Best WordPress events plugins vol 1

There exists surprising amount of WordPress events plugins. As events management is relevant to a lot of different blogs and bigger sites alike, we try to get an overview of the situation in summer 2012. We have taken into account only plugins, that have been updated recently – during 2012 and are working with WP 3.4.1. Another requirement is – I’m not looking for plugins that use external service, all data must be hosted in the WordPress installation.

In this article we check some key featuires and give some pro-s and con-s of different plugins. The key features taken into consideration are:

  • clear UI based on WP standards
  • overall integration with WordPress core (hooks, actions)
  • events as posts (useful in some cases)
  • event flexibility (multiple days, times)
  • recurring events (second tuesday of every month [except february])
  • registration management,  email notifications
  • payments (Paypal etc)
  • calendar UI
  • event location/venue administration
  • map output of events
  • user access managable
  • localization
  • multilanguage support, WPML (the de facto standard multilingual plugin) support or qTranslate (a free and elegant plugin for simpler web solutions) support
  • import/export features (eg iCal etc)
  • custom fields

WordPress event plugins

1. Events made Easy.

HOME: http://www.e-dynamics.be/wordpress/
DL: http://wordpress.org/extend/plugins/events-made-easy/

Events made easy is a full event management system for WP. It includes a lot of features from event locations to registration management and payments. The features:

+- UI – nice UI based on WP general standards. The functionality of the plugin makes a UI a bit heavy, some pieces could have a bit more elegant approach. A lot of options should be hidden by default.

+- Integration – flexibility. Uses it’s own database tables, policy is to keep them as different entity. There are some action hooks inserted, but only some. Design and user output can be extended with css and page templates.

- Events are not posts 

+ events have start-end date and also times

+ recurring events are there, second tuesday of every month work, [except February not]

+ registration management, registration emails, approval, persons

+ registration payment via Paypal

+ calendar UI

+ event locations administration with location name, link

+ Google maps for events/locations

+ User access is managable by assiging standard WP capabilities to plugin actions

+ Localization in different langages supported, available in Italian, Spanish, German, Swedish, French and Dutch

+- multilingual events supported by qTranslate, not WPML

+- Exports iCal/RSS

Total: 11pts

A nice plugin with large featureset. Has some problems with expandability, flexibility and  UI design. Overall really recommended for end-users for event management.

2. Event Espresso – Lite version | Pro version

DL: Lite: http://wordpress.org/extend/plugins/event-espresso-free/

Buy: Pro: http://eventespresso.com

Event Espresso is a classical event organizing plugin with a lot of effort put into registration/payment functionality.

- UI is not really using WP design standards using a lot of custom styles, which don’t really fit nativelly into admin interface.  But this is probably because of the wide functionality. Personally I don’t like a lot of buttons and links going to “buy premium” page.

+ integration with wordpress core is strong, several addons are available

- events are not posts – a complex database is installed

- recurring events are not available (+ in PRO)

+ registration is the main focus of the plugin

+ payments through Paypal (++ in PRO, additional )

- calendar missing (+ in PRO)

+- event location can be entered, no special venue management

+- map location is available but not without hacking

- no special access configuration (+ in PRO)

+ translatable and available in a lot of languages

- no multilanguage events (+- some WPML support in PRO)

+- import/export from files, no iCal, google calendar data moving

- no custom fields (+ in PRO version)

Total: 5,5 pts PRO: 11 pts 

In general a useful plugin which is a bit ladden by old codebase. The UI could be certainly a lot better. FREE versions limits make it more of a demo, as we have several events plugins with more features.

PRO version can be recommended for registration based event management. With it’s integration with several themes and add-ons you can turn your WordPress installation into event management system. And then there is support.

3. Events manager FREE | PRO

DL: http://wordpress.org/extend/plugins/events-manager/

This plugin is pretty similar to Events Made Easy, actually the latter is the fork of current plugin. Again this is a feature-rich plugin and shares also some weaknesses.

+ UI has been developed to meet WP norms and it seemlessly integrates into the system

+ Integration/flexibility is improved a lot, code has a lot of action hooks etc

+ Although there are several tables added, events and locations are kept also in posts table, so they can be used with WP core functionality

+ Events have start-end dates and times

+ Recurring events work, second tuesday of every month is ok [except February NOT]

+ registration management, booking, tickets are there

+ calendar widget

- no registration payment (+ in PRO version)

++ Events location management and possibility to create venues or enter just location

+ Google maps for location is there

+ user access management is very functional, though only for advanced users

+ plugin is translatable

+- multilanguage support is not complete currently, but partial support for WPML

+- import/export – can export iCal, CVS

+ custom fields can be managed via event attributes

Total: 14pts PRO 17pts

I gave PRO a special ++ for being totally unintrusive. It’s lately a norm, that FREE plugins are ads for PREMIUM ones. With this plugin I didn’t even notice there is a PRO one in WP admin interface. Thats nice, also I like the policy of giving software for free, but asking some, if money gets involved. And … this is a really good plugin.

 4. Event organizer

DL: http://wordpress.org/extend/plugins/event-organiser/

Event organizer is a slightly simpler plugin than previous ones, it’s mainly lacking the registration and payment options and stresses event infomation. Which is preferred in some cases.

+ UI – nothing to say – clear and kept simple

+ integration/flexibility is there, some action hooking should be added, extendable template system

+ events are kept as posts

+ events have start time and date + end time and date

+ recurring events are there, second tuesday of every month works [no except February]

- no registration management

- no payments

++ nice calendar UI with Google Calendar style event managing

+- nice venue administration, but can’t add just location to event, without defining venue first

+ Google maps view is there

+ nice and clear user access manager

+ plugin is localisable

+- multilanguage support is partially there, but has problems. No official support for WPML

+ import/export ICS

+ custom fields available

Total: 13pts

This plugin is special for it’s smart design and relative simplicity – I really like it. Definitely recommended, if you don’t need registration and payment functionality.

5. Ajax Event Calendar

DL: http://wordpress.org/extend/plugins/ajax-event-calendar/

Ajax event Calendar has a bit different focus, it’s more calendar than events manager. It has some similarities with Google calendar famous service.

++ UI is not really based on WP standards, but very intutive and clear nontheless, even a bonus here

+- The development hasn’t been really aimed towards flexibility in WP traditional means, it’s heavy usage of WP AJAX interface makes it a bit different

- events are not posts

+ events have start and end dates and times

+- recurring events are there, but not very flexible

- no registration

- no payments

++ very good calendar UI

+ event locations administration

+- there is only link to Google Maps

- no user access management

+ localization possible and done for a lot of languages

- no multilanguage support

- no import/export

- no custom fields

Total: 8,5 pts

While scoring low with features, the plugin is a worthy product. If you are in need of a good calendar plugin, it should be preferred to all other plugins here despite the score. It’s target is not a complicated event management.

 

More to come…

Posted in Top10 | Tagged , | 4 Comments