(function($){ $.clipbucket = $.clipbucket || { 'prefix' : 'cb-', 'version' : '1.0' }; $.clipbucket.photo_actions = { version : '1.0', prefix : 'photo-actions-', _this : null, options : { menu_items : null , menu_wrapper : "", menu_item : "
  • " } } function CBPhotoActions ( element, options ) { var _this = this; ActionsSelf( _this ); if ( options.menu_items == null ) { return false; // No menu items provided return } menu = $( options.menu_wrapper).attr({ id : getID('wrapper') }).addClass('cbphoto-actions-wrapper'); if ( element.attr('data-menu-class') ) { menu.addClass( element.attr('data-menu-class') ); } // Empty the element element.html(''); $.each( options.menu_items, function( index, val ) { if ( val.href && val.text ) { item = $( options.menu_item ).attr({ id : getID('item-'+index) }).addClass('cbphoto-actions-item'); link = $("").attr({ href : val.href, target : val.target || null, style : val.style || null }).html( val.text ); if ( val.icon ) { link.html(' '+link.html()); icon = $("").addClass('icon-'+val.icon).prependTo( link ); } if ( val.tags && typeof val.tags == 'object' ) { link.attr( val.tags ); } link.appendTo( item ); item.appendTo( menu ); if ( link.attr('data-add-divider') ) { add_divider = link.attr('data-add-divider'); var divider; if ( add_divider == 'before' ) { divider = $('
  • ').attr({ 'id' : getID('divider-item-'+index) }).addClass('divider'); item.before(divider) } else if ( add_divider == 'after' ) { divider = $('
  • ').attr({ 'id' : getID('divider-item-'+index) }).addClass('divider'); item.after(divider) } } } }); menu.appendTo( element ); /* href, target, style, name, class */ } function getPrefix() { return $.clipbucket.prefix+$.clipbucket.photo_actions.prefix; } function getID(id) { return getPrefix()+id; } function ActionsSelf( set ) { if ( set ) { $.clipbucket.photo_actions._this = set; } return $.clipbucket.photo_actions._this; } // jQuery $.fn.photoactions = function(options) { var actions = $(this).data("photoactions"); if ( actions ) { return actions; } options = $.extend( true, {}, $.clipbucket.photo_actions.options, options ); this.each(function(){ actions = new CBPhotoActions( $(this), options ); $(this).data("photoactions",actions); }); return options.actions ? actions : this; } })(jQuery);