Advertisement
Guest User

Untitled

a guest
May 25th, 2015
1,678
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 19.10 KB | None | 0 0
  1. $(function() {
  2.  
  3. //Wait for Pinegrow to wake-up
  4. $('body').one('pinegrow-ready', function(e, pinegrow) {
  5.  
  6. //Create new Pinegrow framework object
  7. var f = new PgFramework('fontawesome', 'Font Awesome');
  8.  
  9. //This will prevent activating multiple versions of the plugin, provided that other versions set the same type
  10. f.type = "fontawesome";
  11. f.allow_single_type = true;
  12.  
  13. //Don't show these files in CSS tab
  14. f.ignore_css_files = [/font\-awesome/i];
  15.  
  16. //Auto detect if font-awesome css is included
  17. f.detect = function(pgPage) {
  18. return pgPage.hasStylesheet(/font\-awesome/i);
  19. }
  20.  
  21. //Tell Pinegrow about the framework
  22. pinegrow.addFramework(f);
  23.  
  24. var icons = ['fa-glass' ,'fa-music' ,'fa-search' ,'fa-envelope-o' ,'fa-heart' ,'fa-star' ,'fa-star-o' ,'fa-user' ,'fa-film' ,'fa-th-large' ,'fa-th' ,'fa-th-list' ,'fa-check' ,'fa-remove','fa-close','fa-times' ,'fa-search-plus' ,'fa-search-minus' ,'fa-power-off' ,'fa-signal' ,'fa-gear','fa-cog' ,'fa-trash-o' ,'fa-home' ,'fa-file-o' ,'fa-clock-o' ,'fa-road' ,'fa-download' ,'fa-arrow-circle-o-down' ,'fa-arrow-circle-o-up' ,'fa-inbox' ,'fa-play-circle-o' ,'fa-rotate-right','fa-repeat' ,'fa-refresh' ,'fa-list-alt' ,'fa-lock' ,'fa-flag' ,'fa-headphones' ,'fa-volume-off' ,'fa-volume-down' ,'fa-volume-up' ,'fa-qrcode' ,'fa-barcode' ,'fa-tag' ,'fa-tags' ,'fa-book' ,'fa-bookmark' ,'fa-print' ,'fa-camera' ,'fa-font' ,'fa-bold' ,'fa-italic' ,'fa-text-height' ,'fa-text-width' ,'fa-align-left' ,'fa-align-center' ,'fa-align-right' ,'fa-align-justify' ,'fa-list' ,'fa-dedent','fa-outdent' ,'fa-indent' ,'fa-video-camera' ,'fa-photo','fa-image','fa-picture-o' ,'fa-pencil' ,'fa-map-marker' ,'fa-adjust' ,'fa-tint' ,'fa-edit','fa-pencil-square-o' ,'fa-share-square-o' ,'fa-check-square-o' ,'fa-arrows' ,'fa-step-backward' ,'fa-fast-backward' ,'fa-backward' ,'fa-play' ,'fa-pause' ,'fa-stop' ,'fa-forward' ,'fa-fast-forward' ,'fa-step-forward' ,'fa-eject' ,'fa-chevron-left' ,'fa-chevron-right' ,'fa-plus-circle' ,'fa-minus-circle' ,'fa-times-circle' ,'fa-check-circle' ,'fa-question-circle' ,'fa-info-circle' ,'fa-crosshairs' ,'fa-times-circle-o' ,'fa-check-circle-o' ,'fa-ban' ,'fa-arrow-left' ,'fa-arrow-right' ,'fa-arrow-up' ,'fa-arrow-down' ,'fa-mail-forward','fa-share' ,'fa-expand' ,'fa-compress' ,'fa-plus' ,'fa-minus' ,'fa-asterisk' ,'fa-exclamation-circle' ,'fa-gift' ,'fa-leaf' ,'fa-fire' ,'fa-eye' ,'fa-eye-slash' ,'fa-warning','fa-exclamation-triangle' ,'fa-plane' ,'fa-calendar' ,'fa-random' ,'fa-comment' ,'fa-magnet' ,'fa-chevron-up' ,'fa-chevron-down' ,'fa-retweet' ,'fa-shopping-cart' ,'fa-folder' ,'fa-folder-open' ,'fa-arrows-v' ,'fa-arrows-h' ,'fa-bar-chart-o','fa-bar-chart' ,'fa-twitter-square' ,'fa-facebook-square' ,'fa-camera-retro' ,'fa-key' ,'fa-gears','fa-cogs' ,'fa-comments' ,'fa-thumbs-o-up' ,'fa-thumbs-o-down' ,'fa-star-half' ,'fa-heart-o' ,'fa-sign-out' ,'fa-linkedin-square' ,'fa-thumb-tack' ,'fa-external-link' ,'fa-sign-in' ,'fa-trophy' ,'fa-github-square' ,'fa-upload' ,'fa-lemon-o' ,'fa-phone' ,'fa-square-o' ,'fa-bookmark-o' ,'fa-phone-square' ,'fa-twitter' ,'fa-facebook-f','fa-facebook' ,'fa-github' ,'fa-unlock' ,'fa-credit-card' ,'fa-rss' ,'fa-hdd-o' ,'fa-bullhorn' ,'fa-bell' ,'fa-certificate' ,'fa-hand-o-right' ,'fa-hand-o-left' ,'fa-hand-o-up' ,'fa-hand-o-down' ,'fa-arrow-circle-left' ,'fa-arrow-circle-right' ,'fa-arrow-circle-up' ,'fa-arrow-circle-down' ,'fa-globe' ,'fa-wrench' ,'fa-tasks' ,'fa-filter' ,'fa-briefcase' ,'fa-arrows-alt' ,'fa-group','fa-users' ,'fa-chain','fa-link' ,'fa-cloud' ,'fa-flask' ,'fa-cut','fa-scissors' ,'fa-copy','fa-files-o' ,'fa-paperclip' ,'fa-save','fa-floppy-o' ,'fa-square' ,'fa-navicon','fa-reorder','fa-bars' ,'fa-list-ul' ,'fa-list-ol' ,'fa-strikethrough' ,'fa-underline' ,'fa-table' ,'fa-magic' ,'fa-truck' ,'fa-pinterest' ,'fa-pinterest-square' ,'fa-google-plus-square' ,'fa-google-plus' ,'fa-money' ,'fa-caret-down' ,'fa-caret-up' ,'fa-caret-left' ,'fa-caret-right' ,'fa-columns' ,'fa-unsorted','fa-sort' ,'fa-sort-down','fa-sort-desc' ,'fa-sort-up','fa-sort-asc' ,'fa-envelope' ,'fa-linkedin' ,'fa-rotate-left','fa-undo' ,'fa-legal','fa-gavel' ,'fa-dashboard','fa-tachometer' ,'fa-comment-o' ,'fa-comments-o' ,'fa-flash','fa-bolt' ,'fa-sitemap' ,'fa-umbrella' ,'fa-paste','fa-clipboard' ,'fa-lightbulb-o' ,'fa-exchange' ,'fa-cloud-download' ,'fa-cloud-upload' ,'fa-user-md' ,'fa-stethoscope' ,'fa-suitcase' ,'fa-bell-o' ,'fa-coffee' ,'fa-cutlery' ,'fa-file-text-o' ,'fa-building-o' ,'fa-hospital-o' ,'fa-ambulance' ,'fa-medkit' ,'fa-fighter-jet' ,'fa-beer' ,'fa-h-square' ,'fa-plus-square' ,'fa-angle-double-left' ,'fa-angle-double-right' ,'fa-angle-double-up' ,'fa-angle-double-down' ,'fa-angle-left' ,'fa-angle-right' ,'fa-angle-up' ,'fa-angle-down' ,'fa-desktop' ,'fa-laptop' ,'fa-tablet' ,'fa-mobile-phone','fa-mobile' ,'fa-circle-o' ,'fa-quote-left' ,'fa-quote-right' ,'fa-spinner' ,'fa-circle' ,'fa-mail-reply','fa-reply' ,'fa-github-alt' ,'fa-folder-o' ,'fa-folder-open-o' ,'fa-smile-o' ,'fa-frown-o' ,'fa-meh-o' ,'fa-gamepad' ,'fa-keyboard-o' ,'fa-flag-o' ,'fa-flag-checkered' ,'fa-terminal' ,'fa-code' ,'fa-mail-reply-all','fa-reply-all' ,'fa-star-half-empty','fa-star-half-full','fa-star-half-o' ,'fa-location-arrow' ,'fa-crop' ,'fa-code-fork' ,'fa-unlink','fa-chain-broken' ,'fa-question' ,'fa-info' ,'fa-exclamation' ,'fa-superscript' ,'fa-subscript' ,'fa-eraser' ,'fa-puzzle-piece' ,'fa-microphone' ,'fa-microphone-slash' ,'fa-shield' ,'fa-calendar-o' ,'fa-fire-extinguisher' ,'fa-rocket' ,'fa-maxcdn' ,'fa-chevron-circle-left' ,'fa-chevron-circle-right' ,'fa-chevron-circle-up' ,'fa-chevron-circle-down' ,'fa-html5' ,'fa-css3' ,'fa-anchor' ,'fa-unlock-alt' ,'fa-bullseye' ,'fa-ellipsis-h' ,'fa-ellipsis-v' ,'fa-rss-square' ,'fa-play-circle' ,'fa-ticket' ,'fa-minus-square' ,'fa-minus-square-o' ,'fa-level-up' ,'fa-level-down' ,'fa-check-square' ,'fa-pencil-square' ,'fa-external-link-square' ,'fa-share-square' ,'fa-compass' ,'fa-toggle-down','fa-caret-square-o-down' ,'fa-toggle-up','fa-caret-square-o-up' ,'fa-toggle-right','fa-caret-square-o-right' ,'fa-euro','fa-eur' ,'fa-gbp' ,'fa-dollar','fa-usd' ,'fa-rupee','fa-inr' ,'fa-cny','fa-rmb','fa-yen','fa-jpy' ,'fa-ruble','fa-rouble','fa-rub' ,'fa-won','fa-krw' ,'fa-bitcoin','fa-btc' ,'fa-file' ,'fa-file-text' ,'fa-sort-alpha-asc' ,'fa-sort-alpha-desc' ,'fa-sort-amount-asc' ,'fa-sort-amount-desc' ,'fa-sort-numeric-asc' ,'fa-sort-numeric-desc' ,'fa-thumbs-up' ,'fa-thumbs-down' ,'fa-youtube-square' ,'fa-youtube' ,'fa-xing' ,'fa-xing-square' ,'fa-youtube-play' ,'fa-dropbox' ,'fa-stack-overflow' ,'fa-instagram' ,'fa-flickr' ,'fa-adn' ,'fa-bitbucket' ,'fa-bitbucket-square' ,'fa-tumblr' ,'fa-tumblr-square' ,'fa-long-arrow-down' ,'fa-long-arrow-up' ,'fa-long-arrow-left' ,'fa-long-arrow-right' ,'fa-apple' ,'fa-windows' ,'fa-android' ,'fa-linux' ,'fa-dribbble' ,'fa-skype' ,'fa-foursquare' ,'fa-trello' ,'fa-female' ,'fa-male' ,'fa-gittip','fa-gratipay' ,'fa-sun-o' ,'fa-moon-o' ,'fa-archive' ,'fa-bug' ,'fa-vk' ,'fa-weibo' ,'fa-renren' ,'fa-pagelines' ,'fa-stack-exchange' ,'fa-arrow-circle-o-right' ,'fa-arrow-circle-o-left' ,'fa-toggle-left','fa-caret-square-o-left' ,'fa-dot-circle-o' ,'fa-wheelchair' ,'fa-vimeo-square' ,'fa-turkish-lira','fa-try' ,'fa-plus-square-o' ,'fa-space-shuttle' ,'fa-slack' ,'fa-envelope-square' ,'fa-wordpress' ,'fa-openid' ,'fa-institution','fa-bank','fa-university' ,'fa-mortar-board','fa-graduation-cap' ,'fa-yahoo' ,'fa-google' ,'fa-reddit' ,'fa-reddit-square' ,'fa-stumbleupon-circle' ,'fa-stumbleupon' ,'fa-delicious' ,'fa-digg' ,'fa-pied-piper' ,'fa-pied-piper-alt' ,'fa-drupal' ,'fa-joomla' ,'fa-language' ,'fa-fax' ,'fa-building' ,'fa-child' ,'fa-paw' ,'fa-spoon' ,'fa-cube' ,'fa-cubes' ,'fa-behance' ,'fa-behance-square' ,'fa-steam' ,'fa-steam-square' ,'fa-recycle' ,'fa-automobile','fa-car' ,'fa-cab','fa-taxi' ,'fa-tree' ,'fa-spotify' ,'fa-deviantart' ,'fa-soundcloud' ,'fa-database' ,'fa-file-pdf-o' ,'fa-file-word-o' ,'fa-file-excel-o' ,'fa-file-powerpoint-o' ,'fa-file-photo-o','fa-file-picture-o','fa-file-image-o' ,'fa-file-zip-o','fa-file-archive-o' ,'fa-file-sound-o','fa-file-audio-o' ,'fa-file-movie-o','fa-file-video-o' ,'fa-file-code-o' ,'fa-vine' ,'fa-codepen' ,'fa-jsfiddle' ,'fa-life-bouy','fa-life-buoy','fa-life-saver','fa-support','fa-life-ring' ,'fa-circle-o-notch' ,'fa-ra','fa-rebel' ,'fa-ge','fa-empire' ,'fa-git-square' ,'fa-git' ,'fa-hacker-news' ,'fa-tencent-weibo' ,'fa-qq' ,'fa-wechat','fa-weixin' ,'fa-send','fa-paper-plane' ,'fa-send-o','fa-paper-plane-o' ,'fa-history' ,'fa-genderless','fa-circle-thin' ,'fa-header' ,'fa-paragraph' ,'fa-sliders' ,'fa-share-alt' ,'fa-share-alt-square' ,'fa-bomb' ,'fa-soccer-ball-o','fa-futbol-o' ,'fa-tty' ,'fa-binoculars' ,'fa-plug' ,'fa-slideshare' ,'fa-twitch' ,'fa-yelp' ,'fa-newspaper-o' ,'fa-wifi' ,'fa-calculator' ,'fa-paypal' ,'fa-google-wallet' ,'fa-cc-visa' ,'fa-cc-mastercard' ,'fa-cc-discover' ,'fa-cc-amex' ,'fa-cc-paypal' ,'fa-cc-stripe' ,'fa-bell-slash' ,'fa-bell-slash-o' ,'fa-trash' ,'fa-copyright' ,'fa-at' ,'fa-eyedropper' ,'fa-paint-brush' ,'fa-birthday-cake' ,'fa-area-chart' ,'fa-pie-chart' ,'fa-line-chart' ,'fa-lastfm' ,'fa-lastfm-square' ,'fa-toggle-off' ,'fa-toggle-on' ,'fa-bicycle' ,'fa-bus' ,'fa-ioxhost' ,'fa-angellist' ,'fa-cc' ,'fa-shekel','fa-sheqel','fa-ils' ,'fa-meanpath' ,'fa-buysellads' ,'fa-connectdevelop' ,'fa-dashcube' ,'fa-forumbee' ,'fa-leanpub' ,'fa-sellsy' ,'fa-shirtsinbulk' ,'fa-simplybuilt' ,'fa-skyatlas' ,'fa-cart-plus' ,'fa-cart-arrow-down' ,'fa-diamond' ,'fa-ship' ,'fa-user-secret' ,'fa-motorcycle' ,'fa-street-view' ,'fa-heartbeat' ,'fa-venus' ,'fa-mars' ,'fa-mercury' ,'fa-transgender' ,'fa-transgender-alt' ,'fa-venus-double' ,'fa-mars-double' ,'fa-venus-mars' ,'fa-mars-stroke' ,'fa-mars-stroke-v' ,'fa-mars-stroke-h' ,'fa-neuter' ,'fa-facebook-official' ,'fa-pinterest-p' ,'fa-whatsapp' ,'fa-server' ,'fa-user-plus' ,'fa-user-times' ,'fa-hotel','fa-bed' ,'fa-viacoin' ,'fa-train' ,'fa-subway' ,'fa-medium' ];
  25. var icons_options = [];
  26. for(var i = 0; i < icons.length; i++) {
  27. var g = icons[i];
  28. icons_options.push({key: g, name: g.replace('fa-',''), html: '<i class="fa ' + g + '"></i>'});
  29. }
  30.  
  31. var getFaClass = function(pgel) {
  32. var cls = pgel.attr('class');
  33. if(cls) {
  34. cls = cls.split(' ');
  35. for(var i = 0; i < cls.length; i++) {
  36. if(cls[i].indexOf('fa-') == 0) {
  37. for(var j = 0; j < icons.length; j++) {
  38. if(cls[i] == icons[j]) return cls[i];
  39. }
  40. }
  41. }
  42. }
  43. return null;
  44. }
  45.  
  46. var icons_def = new PgComponentType('fontawesome_icon', 'Font Awesome icon');
  47. icons_def.selector = '.fa';
  48. icons_def.code = '<i class="fa fa-glass"></i>';
  49. icons_def.sections = {
  50. 'fontawesome_options' : {
  51. name: "Icon options",
  52. fields: {
  53. fontawesome_icon: {
  54. type: 'select',
  55. name: 'Icon',
  56. options: icons_options,
  57. rich: {
  58. title: 'Select icon',
  59. modal: true,
  60. class: 'icon-grid'
  61. },
  62. action: 'custom',
  63. get_value: function(obj) {
  64. var $el = obj.data;
  65. var pgel = new pgQuery($el);
  66. return getFaClass(pgel);
  67. },
  68. set_value: function(obj, value, values) {
  69. var $el = obj.data;
  70. var pgel = new pgQuery($el);
  71. var cls = getFaClass(pgel);
  72. if(cls) pgel.removeClass(cls);
  73. pgel.addClass(value);
  74. return value;
  75. }
  76. },
  77. 'fontawesome_size' : {
  78. 'type' : 'select',
  79. 'name' : 'Size',
  80. 'action' : 'apply_class',
  81. 'show_empty' : true,
  82. 'options' : [
  83. {key: 'fa-lg', name: 'Large'},
  84. {key: 'fa-2x', name: '2x'},
  85. {key: 'fa-3x', name: '3x'},
  86. {key: 'fa-4x', name: '4x'},
  87. {key: 'fa-5x', name: '5x'}
  88. ]
  89. },
  90. 'fontawesome_stacked_size' : {
  91. 'type' : 'select',
  92. 'name' : 'Stacked size',
  93. 'action' : 'apply_class',
  94. 'show_empty' : true,
  95. 'options' : [
  96. {key: 'fa-stack-1x', name: '1x'},
  97. {key: 'fa-stack-2x', name: '2x'}
  98. ]
  99. },
  100. 'fontawesome_fixed_width' : {
  101. type: 'checkbox',
  102. name: 'Fixed width',
  103. action: 'apply_class',
  104. value: 'fa-fw'
  105. },
  106. fontawesome_li : {
  107. type: 'checkbox',
  108. name: 'List item',
  109. action: 'custom',
  110. value: '1',
  111. get_value: function(obj) {
  112. var $el = obj.data;
  113. var pgel = new pgQuery($el); //get source code node for DOM jQuery element that was passed through obj.data
  114. return pgel.hasClass('fa-li') ? '1' : null;
  115. },
  116. set_value: function(obj, value, values, oldValue, eventType) {
  117. var $el = obj.data;
  118. var pgel = new pgQuery($el);
  119. if(value) {
  120. pgel.addClass('fa-li');
  121. var pgul = pgel.closest('ul');
  122. if(!pgul.hasClass('fa-ul')) {
  123. pgul.addClass('fa-ul'); //add fa-ul to enclosing ul
  124. pinegrow.showQuickMessage('Class <b>.fa-ul</b> was added to enclosing <b>ul element</b>');
  125. }
  126. } else {
  127. pgel.removeClass('fa-li');
  128. //let user manually remove fa-ul class on enclosing ul
  129. }
  130. return value;
  131. }
  132. },
  133. 'fontawesome_border' : {
  134. type: 'checkbox',
  135. name: 'Border',
  136. action: 'apply_class',
  137. value: 'fa-border'
  138. },
  139. 'fontawesome_pull' : {
  140. 'type' : 'select',
  141. 'name' : 'Pull',
  142. 'action' : 'apply_class',
  143. 'show_empty' : true,
  144. 'options' : [
  145. {key: 'pull-left', name: 'Left'},
  146. {key: 'pull-right', name: 'Right'}
  147. ]
  148. },
  149. 'fontawesome_animation' : {
  150. 'type' : 'select',
  151. 'name' : 'Animation',
  152. 'action' : 'apply_class',
  153. 'show_empty' : true,
  154. 'options' : [
  155. {key: 'fa-spin', name: 'Spin'},
  156. {key: 'fa-pulse', name: 'pulse'}
  157. ]
  158. },
  159. 'fontawesome_rotate' : {
  160. 'type' : 'select',
  161. 'name' : 'Rotate',
  162. 'action' : 'apply_class',
  163. 'show_empty' : true,
  164. 'options' : [
  165. {key: 'fa-rotate-90', name: '90'},
  166. {key: 'fa-rotate-180', name: '180'},
  167. {key: 'fa-rotate-270', name: '270'}
  168. ]
  169. },
  170. 'fontawesome_flip' : {
  171. 'type' : 'select',
  172. 'name' : 'Flip',
  173. 'action' : 'apply_class',
  174. 'show_empty' : true,
  175. 'options' : [
  176. {key: 'fa-flip-horizontal', name: 'Horizontal'},
  177. {key: 'fa-flip-vertical', name: 'Vertical'}
  178. ]
  179. },
  180. 'fontawesome_inverse' : {
  181. type: 'checkbox',
  182. name: 'Inverse color',
  183. action: 'apply_class',
  184. value: 'fa-inverse'
  185. }
  186. }
  187. }
  188. }
  189.  
  190. f.addComponentType(icons_def);
  191.  
  192.  
  193. var stack_def = new PgComponentType('fontawesome_stack', 'Font Awesome stack');
  194. stack_def.selector = '.fa-stack';
  195. stack_def.code = '<span class="fa-stack fa-lg"><i class="fa fa-circle fa-stack-2x"></i><i class="fa fa-flag fa-stack-1x fa-inverse"></i></span>';
  196. stack_def.action_menu = {
  197. add: ['fontawesome_icon']
  198. };
  199. stack_def.sections = {
  200. fontawesome_options: {
  201. name: "Stack options",
  202. fields: {
  203. fontawesome_size: {
  204. type: 'select',
  205. name: 'Size',
  206. action: 'apply_class',
  207. show_empty: true,
  208. options: [
  209. {key: 'fa-lg', name: 'Large'},
  210. {key: 'fa-2x', name: '2x'},
  211. {key: 'fa-3x', name: '3x'},
  212. {key: 'fa-4x', name: '4x'},
  213. {key: 'fa-5x', name: '5x'}
  214. ]
  215. }
  216. }
  217. }
  218. }
  219. f.addComponentType(stack_def);
  220.  
  221.  
  222. //Now, lets define sections and elements shown in LIB tab
  223. var section = new PgFrameworkLibSection('fontawesome-icons', 'Icons');
  224. //Pass components in array
  225. section.setComponentTypes([icons_def, stack_def]);
  226. f.addLibSection(section);
  227.  
  228. f.on_plugin_activated = function(pgPage) {
  229. if(!f.detect(pgPage)) {
  230. //FA CSS is not included
  231. var url = '//maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css';
  232. pinegrow.showAlert('<p>Looks like that <b>Font Awesome CSS</b> is not included on the page.</p><p>Do you want to add Font Awesome CDN stylesheet to the page?</p><p><code><link rel="stylesheet" href="' + url + '"></code></p><p>You can also use <b>Page -> Manage stylesheets</b> to manually include local or remote CSS file.</p>', "Add Font Awesome stylesheet", "Don\'t add it", "Add the CSS", null, function() {
  233. pgPage.addStylesheet(url);
  234. pinegrow.showQuickMessage('Font Awesome CSS was added to the page');
  235. });
  236. }
  237. }
  238.  
  239. });
  240. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement