Changeset 1940269
- Timestamp:
- 09/12/2018 08:06:04 PM (7 years ago)
- Location:
- add-to-any/trunk
- Files:
-
- 5 edited
-
README.txt (modified) (8 diffs)
-
add-to-any.php (modified) (9 diffs)
-
addtoany.admin.php (modified) (7 diffs)
-
addtoany.min.css (modified) (1 diff)
-
addtoany.min.js (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
add-to-any/trunk/README.txt
r1900886 r1940269 5 5 Tested up to: 5.0 6 6 Requires PHP: 5.2 7 Stable tag: 1.7.2 87 Stable tag: 1.7.2 8 8 9 9 Share buttons for WordPress including the AddToAny sharing button, Facebook, Twitter, Google+, Pinterest, WhatsApp, many more, and follow icons too. … … 11 11 == Description == 12 12 13 The AddToAny sharing plugin for WordPress increases traffic & engagement by helping people share your posts and pages to any service. Services include Facebook, Twitter, Pinterest, Google, WhatsApp, LinkedIn, Tumblr, Reddit, and over 100 more sharing and social media sites & apps. 14 15 AddToAny is the universal sharing platform, and the AddToAny plugin is the most popular share plugin for WordPress, making sites social media ready since 2006. 16 17 = Share Buttons & Follow Buttons = 18 19 * **Counters** — fast & official share counts in the same style 20 * **Floating** share buttons — responsive & customizable, vertical & horizontal 21 * **Vector** share & follow buttons (SVG icons) 22 * **Universal** Share Button and Smart Menu 23 * Individual share links and custom share icons 24 * Official buttons including the Facebook Like Button, Twitter Tweet Button, Pinterest Pin It Button, Google+ Share Button and Google +1 Button 25 * Universal email sharing makes it easy to share via Gmail, Yahoo! Mail, Outlook.com (Hotmail), AOL Mail, and any other web or native apps 26 * <a href="https://www.addtoany.com/">Share Buttons</a> demo 13 The AddToAny Share Buttons plugin for WordPress increases traffic & engagement by helping people share your posts and pages to any service. Services include Facebook, Twitter, Pinterest, Google, WhatsApp, LinkedIn, Tumblr, Reddit, and over 100 more sharing and social media sites & apps. 14 15 AddToAny is the home of universal sharing, and the AddToAny plugin is the most popular share plugin for WordPress, making sites social media ready since 2006. 16 17 = Share Buttons = 18 19 * [**Standard**](https://www.addtoany.com/buttons/customize/wordpress/standalone_services) share buttons — share each piece of content 20 * [**Floating**](https://www.addtoany.com/buttons/customize/wordpress/floating_share_buttons) share buttons — responsive & customizable, vertical & horizontal 21 * **Counters** — fast & official [share counts](https://www.addtoany.com/buttons/customize/wordpress/share_counters) in the same style 22 * **Follow** buttons** — [social media links](https://www.addtoany.com/buttons/customize/wordpress/follow_buttons) to your Instagram, YouTube, Snapchat 23 * **Image** sharing buttons - share buttons for [sharing images](https://www.addtoany.com/buttons/customize/wordpress/image_sharing) 24 * **Vector** share buttons & follow buttons — [custom color](https://www.addtoany.com/buttons/customize/wordpress/icon_color) SVG icons 25 * **Custom** share icons — use your own if you prefer 26 * Official buttons including the Facebook Like Button, Twitter Tweet Button, Pinterest Save Button, Google+ Share Button and Google +1 Button 27 * Universal email sharing makes it easy to share via Gmail, Yahoo Mail, Outlook.com (Hotmail), AOL Mail, and any other web or native apps 27 28 28 29 = Custom Placement & Appearance = … … 34 35 = Analytics Integration = 35 36 36 * AutomaticGoogle Analytics integration (<a href="https://www.addtoany.com/ext/google_analytics/">access guide</a>) for sharing analytics37 * Track shared links with Bitly , the Google URL Shortener,and custom URL shorteners37 * Google Analytics integration (<a href="https://www.addtoany.com/ext/google_analytics/">access guide</a>) for sharing analytics 38 * Track shared links with Bitly and custom URL shorteners 38 39 * Display share counts on posts and pages 39 40 … … 43 44 * Supports theme features such as HTML5, widgets, infinite scroll, post formats 44 45 * Supports WooCommerce, multilingual sites, multisite networks, and accessibility standards 45 * No signup, no login, no account necessary46 * 46 47 47 48 = Mobile Optimized & Retina Ready = … … 63 64 64 65 * Over 10 years of development 65 * Over 8million downloads66 * Over million downloads 66 67 * Translated into dozens of languages 67 68 * Ongoing support from the community … … 279 280 = How can I programmatically remove the button(s)? = 280 281 281 You can disable AddToAny sharing using [filter](https://developer.wordpress.org/plugins/hooks/filters/) (PHP code) that you can add to a "functionality" plugin such as the [Code Snippets](https://wordpress.org/plugins/code-snippets/) plugin.282 You can disable AddToAny sharing using [filter](https://developer.wordpress.org/plugins/hooks/filters/) (PHP code) that you can add to a "functionality" plugin such as the [Code Snippets](https://wordpress.org/plugins/code-snippets/) plugin. 282 283 283 284 Disable AddToAny sharing in specific categories, for example: … … 316 317 The Google+ Share Button width can be changed using CSS code, for instance: `.a2a_button_google_plus_share { width:57px !important; }` 317 318 319 320 321 322 318 323 = Does the plugin output W3C valid code? = 319 324 … … 345 350 346 351 == Changelog == 352 353 354 355 356 347 357 348 358 = 1.7.28 = -
add-to-any/trunk/add-to-any.php
r1900886 r1940269 4 4 Plugin URI: https://www.addtoany.com/ 5 5 Description: Share buttons for your pages including AddToAny's universal sharing button, Facebook, Twitter, Google+, Pinterest, WhatsApp and many more. 6 Version: 1.7.2 86 Version: 1.7.2 7 7 Author: AddToAny 8 8 Author URI: https://www.addtoany.com/ … … 504 504 505 505 if ( $special_service_code == 'facebook_like' ) { 506 $custom_attributes .= ( isset( $options['special_facebook_like_options']['verb'] ) && 507 'recommend' == $options['special_facebook_like_options']['verb'] ) ? ' data-action="recommend"' : ''; 506 $custom_attributes .= ( isset( $options['special_facebook_like_options']['verb'] ) 507 && 'recommend' == $options['special_facebook_like_options']['verb'] ) ? ' data-action="recommend"' : ''; 508 $custom_attributes .= ( isset( $options['special_facebook_like_options']['show_count'] ) 509 && $options['special_facebook_like_options']['show_count'] == '1' ) ? '' : ' data-layout="button"'; 508 510 $custom_attributes .= ' data-href="' . $linkurl . '"'; 509 511 $special_html = sprintf( $special_anchor_template, $special_service_code, $custom_attributes ); … … 527 529 528 530 elseif ( $special_service_code == 'pinterest_pin' ) { 529 $custom_attributes .= ( isset( $options['special_pinterest_pin_options']['show_count'] ) &&530 $options['special_pinterest_pin_options']['show_count'] == '1' ) ? '' : ' data-pin-config="none"';531 $custom_attributes .= ( isset( $options['special_pinterest_pin_options']['show_count'] ) 532 $options['special_pinterest_pin_options']['show_count'] == '1' ) ? '' : ' data-pin-config="none"'; 531 533 $custom_attributes .= ' data-url="' . $linkurl . '"'; 532 534 $custom_attributes .= ( ! empty( $linkmedia ) ) ? ' data-media="' . $linkmedia . '"' : ''; … … 776 778 777 779 // Use local cache? 778 $cache = ( isset( $options['cache'] ) && '1' == $options['cache'] )? true : false;780 $cache = ? true : false; 779 781 $upload_dir = wp_upload_dir(); 780 $static_server = ( $cache ) ? $upload_dir['baseurl'] . '/addtoany' : 'https://static.addtoany.com/menu'; 782 $cached_file = ! empty( $upload_dir['basedir'] ) && file_exists( $upload_dir['basedir'] . '/addtoany/page.js' ) ? $upload_dir['basedir'] . '/addtoany/page.js' : false; 783 $querystring = ''; 784 // Is page.js actually cached? 785 if ( $cache && $cached_file ) { 786 // Is page.js recently cached, within 2 days (172800 seconds)? 787 $modified_time = filemtime( $cached_file ); 788 $cache = $modified_time && time() - $modified_time < 172800 ? true : false; 789 // If cache is recent 790 if ( $cache ) { 791 // Set a "ver" parameter's value to the file's modified time for cache management 792 $querystring = '?ver=' . $modified_time; 793 } else { 794 // Revert the cache option 795 A2A_SHARE_SAVE_revert_cache(); 796 } 797 } 798 799 // Set static server 800 $static_server = $cache ? $upload_dir['baseurl'] . '/addtoany' : 'https://static.addtoany.com/menu'; 781 801 782 802 // Icon colors … … 846 866 . 'b=d.getElementsByTagName(s)[0];' 847 867 . 'a.async=1;' 848 . 'a.src="' . $static_server . '/page.js ";'868 . 'a.src="' . $static_server . '/page.js";' 849 869 . 'b.parentNode.insertBefore(a,b);' 850 870 . '})(document,"script");' … … 1013 1033 1014 1034 if ( ! is_admin() ) { 1015 wp_enqueue_style( 'addtoany', plugins_url('/addtoany.min.css', __FILE__ ), false, '1.1 4' );1035 wp_enqueue_style( 'addtoany', plugins_url('/addtoany.min.css', __FILE__ ), false, '1.1' ); 1016 1036 1017 1037 // Prepare inline CSS … … 1080 1100 function A2A_SHARE_SAVE_enqueue_script() { 1081 1101 if ( wp_script_is( 'jquery', 'registered' ) ) { 1082 wp_enqueue_script( 'addtoany', plugins_url('/addtoany.min.js', __FILE__ ), array( 'jquery' ), '1. 0' );1102 wp_enqueue_script( 'addtoany', plugins_url('/addtoany.min.js', __FILE__ ), array( 'jquery' ), '1.' ); 1083 1103 } 1084 1104 } 1085 1105 1086 1106 add_action( 'wp_enqueue_scripts', 'A2A_SHARE_SAVE_enqueue_script' ); 1087 1088 1107 1089 1108 /** … … 1096 1115 $upload_dir = wp_upload_dir(); 1097 1116 1098 // Make directory if needed1117 // 1099 1118 if ( ! wp_mkdir_p( dirname( $upload_dir['basedir'] . '/addtoany/foo' ) ) ) { 1100 $message = sprintf( __( 'Unable to create directory %s. Is its parent directory writable by the server?' ), dirname( $new_file ) ); 1101 return array( 'error' => $message ); 1119 // Handle directory creation issue 1120 // Revert cache option 1121 A2A_SHARE_SAVE_revert_cache(); 1102 1122 } 1103 1123 … … 1109 1129 1110 1130 // Place files in uploads/addtoany directory 1111 wp_remote_get( $file_url, array(1131 wp_remote_get( $file_url, array( 1112 1132 'filename' => $upload_dir['basedir'] . '/addtoany/' . $file_name, 1113 1133 'stream' => true, // Required to use `filename` arg 1114 1134 ) ); 1115 } 1116 } 1117 } 1135 1136 // Handle error 1137 if ( is_wp_error( $response ) ) { 1138 // Revert cache option 1139 A2A_SHARE_SAVE_revert_cache(); 1140 } 1141 } 1142 } 1143 } 1144 1145 add_action( 'addtoany_refresh_cache', 'A2A_SHARE_SAVE_refresh_cache' ); 1118 1146 1119 1147 function A2A_SHARE_SAVE_schedule_cache() { 1120 $timestamp = wp_next_scheduled( 'A2A_SHARE_SAVE_refresh_cache' ); 1121 if ( ! $timestamp) { 1122 // Only schedule if currently unscheduled 1123 wp_schedule_event( time(), 'daily', 'A2A_SHARE_SAVE_refresh_cache' ); 1148 // Unschedule if already scheduled 1149 A2A_SHARE_SAVE_unschedule_cache(); 1150 1151 // Try to schedule daily cache refreshes, running once now 1152 $result = wp_schedule_event( time(), 'daily', 'addtoany_refresh_cache' ); 1153 1154 // Revert cache option if the event didn't get scheduled 1155 if ( false === $result ) { 1156 A2A_SHARE_SAVE_revert_cache(); 1124 1157 } 1125 1158 } 1126 1159 1127 1160 function A2A_SHARE_SAVE_unschedule_cache() { 1128 $timestamp = wp_next_scheduled( 'A2A_SHARE_SAVE_refresh_cache' ); 1129 wp_unschedule_event( $timestamp, 'A2A_SHARE_SAVE_refresh_cache' ); 1130 } 1131 1132 1161 // Unschedule if scheduled 1162 wp_clear_scheduled_hook( 'addtoany_refresh_cache' ); 1163 } 1164 1165 function A2A_SHARE_SAVE_revert_cache() { 1166 // Unschedule 1167 A2A_SHARE_SAVE_unschedule_cache(); 1168 1169 // Get all existing AddToAny options 1170 $options = get_option( 'addtoany_options', array() ); 1171 1172 // Revert cache option 1173 $options['cache'] = '-1'; 1174 update_option( 'addtoany_options', $options ); 1175 } 1176 1177 /** 1178 * Activation hook 1179 */ 1180 1181 function addtoany_activation() { 1182 // Get all existing AddToAny options 1183 $options = get_option( 'addtoany_options', array() ); 1184 1185 // If the local cache option is enabled 1186 if ( isset( $options['cache'] ) && $options['cache'] == '1' ) { 1187 // Schedule and run the local cache refresh 1188 A2A_SHARE_SAVE_schedule_cache(); 1189 } 1190 } 1191 1192 register_activation_hook( __FILE__, 'addtoany_activation' ); 1193 1194 /** 1195 * Deactivation hook 1196 */ 1197 1198 function addtoany_deactivation() { 1199 // Unschedule if scheduled 1200 A2A_SHARE_SAVE_unschedule_cache(); 1201 } 1202 1203 register_deactivation_hook( __FILE__, 'addtoany_deactivation' ); 1133 1204 1134 1205 /** -
add-to-any/trunk/addtoany.admin.php
r1900886 r1940269 365 365 if ( isset( $_POST['A2A_SHARE_SAVE_cache'] ) && $_POST['A2A_SHARE_SAVE_cache'] == '1' ) { 366 366 A2A_SHARE_SAVE_schedule_cache(); 367 A2A_SHARE_SAVE_refresh_cache();368 367 } else { 369 368 A2A_SHARE_SAVE_unschedule_cache(); … … 393 392 // Store special service options 394 393 $new_options['special_facebook_like_options'] = array( 395 'verb' => ( ( isset( $_POST['addtoany_facebook_like_verb'] ) && $_POST['addtoany_facebook_like_verb'] == 'recommend') ? 'recommend' : 'like' ) 394 'show_count' => ( ( isset( $_POST['addtoany_facebook_like_show_count'] ) && $_POST['addtoany_facebook_like_show_count'] == '1' ) ? '1' : '-1' ), 395 'verb' => ( ( isset( $_POST['addtoany_facebook_like_verb'] ) && $_POST['addtoany_facebook_like_verb'] == 'recommend') ? 'recommend' : 'like' ), 396 396 ); 397 397 $new_options['special_twitter_tweet_options'] = array( … … 745 745 <label> 746 746 Attach to <input name="A2A_SHARE_SAVE_floating_vertical_attached_to" type="text" class="regular-text code" placeholder=".content-area" value="<?php if ( isset( $options['floating_vertical_attached_to'] ) ) echo esc_attr( $options['floating_vertical_attached_to'] ); else echo esc_attr( 'main, [role="main"], article, .status-publish' ); ?>" /> 747 <p class="description">Enter a <a href="https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Selectors" class="description" rel="noopener" target="_blank">CSS selector</a>, or group of selectors, that match the HTML element you want to attach to.</p>747 <p class="description">Enter a <a href="https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Selectors" class="description" rel="noopener" target="_blank">CSS selector</a>,or group of selectors, that match the HTML element you want to attach to.</p> 748 748 </label> 749 749 </div> … … 892 892 </div> 893 893 894 <script src="http <?php if ( is_ssl() ) echo 's'; ?>://static.addtoany.com/menu/page.js"></script>894 <script src="http://static.addtoany.com/menu/page.js"></script> 895 895 <script> 896 896 if ( window.a2a && a2a.svg_css ) a2a.svg_css(); … … 965 965 // Special service options? 966 966 service_name = services_array[i].substr(7); 967 if (service_name == 'facebook_like' || service_name == 'twitter_tweet' || service_name == 'pinterest_pin') { 968 if (service_name == 'pinterest_pin') { 969 show_count_value = (jQuery('#' + services_array[i] + '_show_count').is(':checked')) ? '1' : '-1' ; 970 jQuery('#addtoany_admin_form').append('<input class="addtoany_hidden_options" name="addtoany_' + service_name + '_show_count" type="hidden" value="' + show_count_value + '"/>'); 971 } 967 if (service_name == 'facebook_like' || service_name == 'pinterest_pin') { 968 show_count_value = (jQuery('#' + services_array[i] + '_show_count').is(':checked')) ? '1' : '-1' ; 969 jQuery('#addtoany_admin_form').append('<input class="addtoany_hidden_options" name="addtoany_' + service_name + '_show_count" type="hidden" value="' + show_count_value + '"/>'); 972 970 973 971 if (service_name == 'facebook_like') { … … 1007 1005 1008 1006 if (this_service_is_special) { 1009 if ('facebook_like' == this_service_name) { 1010 if (service_options[this_service_name] && service_options[this_service_name].verb) 1011 checked = ' selected="selected"'; 1012 special_options_html = '<select id="' + this_service.attr('id') + '_verb" name="' + this_service.attr('id') + '_verb">' 1013 + '<option value="like">Like</option>' 1014 + '<option' + checked + ' value="recommend">Recommend</option>' 1015 + '</select>'; 1016 } else { 1007 if ( jQuery.inArray( this_service_name, ['facebook_like', 'pinterest_pin'] ) > -1 ) { 1017 1008 // Common "Show count" for facebook, pinterest, pinterest_pin, etc. 1018 1009 if (service_options[this_service_name] && service_options[this_service_name].show_count) { 1019 1010 checked = ' checked="checked"'; 1020 1011 } 1021 special_options_html = '<label><input' + checked + ' id="' + this_service.attr('id') + '_show_count" name="' + this_service.attr('id') + '_show_count" type="checkbox" value="1"> Show count</label>'; 1012 special_options_html += '<label><input' + checked + ' id="' + this_service.attr('id') + '_show_count" name="' + this_service.attr('id') + '_show_count" type="checkbox" value="1"> Show count</label>'; 1013 } 1014 1015 if ('facebook_like' == this_service_name) { 1016 if (service_options[this_service_name] && service_options[this_service_name].verb) 1017 checked = ' selected="selected"'; 1018 special_options_html += '<br><select id="' + this_service.attr('id') + '_verb" name="' + this_service.attr('id') + '_verb">' 1019 + '<option value="like">Like</option>' 1020 + '<option' + checked + ' value="recommend">Recommend</option>' 1021 + '</select>'; 1022 1022 } 1023 1023 … … 1114 1114 echo $counters_enabled_js; 1115 1115 1116 1116 1117 if ( isset( $_POST['addtoany_facebook_like_verb'] ) && $_POST['addtoany_facebook_like_verb'] == 'recommend' 1117 1118 || ! isset( $_POST['addtoany_facebook_like_verb'] ) 1118 && isset( $options['special_facebook_like_options'] ) && $options['special_facebook_like_options']['verb'] == 'recommend' ) { 1119 ?>service_options.facebook_like = {verb: 'recommend'};<?php 1119 && isset( $options['special_facebook_like_options'] ) && isset( $options['special_facebook_like_options']['verb'] ) 1120 && $options['special_facebook_like_options']['verb'] == 'recommend' ) { 1121 ?>service_options.facebook_like.verb = 'recommend';<?php 1122 } 1123 if ( isset( $_POST['addtoany_facebook_like_show_count'] ) && $_POST['addtoany_facebook_like_show_count'] == '1' 1124 || ! isset( $_POST['addtoany_facebook_like_show_count'] ) 1125 && isset( $options['special_facebook_like_options'] ) && isset( $options['special_facebook_like_options']['show_count'] ) 1126 && $options['special_facebook_like_options']['show_count'] == '1' ) { 1127 ?>service_options.facebook_like.show_count = 1;<?php 1120 1128 } 1121 1129 if ( isset( $_POST['addtoany_pinterest_pin_show_count'] ) && $_POST['addtoany_pinterest_pin_show_count'] == '1' 1122 1130 || ! isset( $_POST['addtoany_pinterest_pin_show_count'] ) 1123 && isset( $options['special_pinterest_pin_options'] ) && $options['special_pinterest_pin_options']['show_count'] == '1' ) { 1131 && isset( $options['special_pinterest_pin_options'] ) && isset( $options['special_pinterest_pin_options']['show_count'] ) 1132 && $options['special_pinterest_pin_options']['show_count'] == '1' ) { 1124 1133 ?>service_options.pinterest_pin = {show_count: 1};<?php 1125 1134 } -
add-to-any/trunk/addtoany.min.css
r1793931 r1940269 1 .addtoany_content{clear:both;margin:16px 0}.addtoany_header{margin:0 0 16px}.addtoany_list{display:inline;line-height:16px}.addtoany_list a,.widget .addtoany_list a{border:0;box-shadow:none;display:inline-block;font-size:16px;padding:0 4px;vertical-align:middle}.addtoany_list a img{border:0;display:inline-block;opacity:1;overflow:hidden;vertical-align:baseline}.addtoany_list a span{display:inline-block;float:none}.addtoany_list.a2a_kit_size_32 a{font-size:32px}.addtoany_list.a2a_kit_size_32 a >span{height:32px;line-height:32px;width:32px}.addtoany_list a>span{border-radius:4px;display:inline-block;opacity:1}.addtoany_list a .a2a_count{position:relative;vertical-align:top}.addtoany_list a:hover,.widget .addtoany_list a:hover{border:0;box-shadow:none}.addtoany_list a:hover img,.addtoany_list a:hover span{opacity:.7}.addtoany_list a.addtoany_special_service:hover img,.addtoany_list a.addtoany_special_service:hover span{opacity:1}.addtoany_special_service{display:inline-block;vertical-align:middle}.addtoany_special_service a,.addtoany_special_service div,.addtoany_special_service div.fb_iframe_widget,.addtoany_special_service iframe,.addtoany_special_service span{margin:0;vertical-align:baseline!important}.addtoany_special_service iframe{display:inline;max-width:none}a.addtoany_share.addtoany_no_icon span.a2a_img_text{display:none}a.addtoany_share img{border:0;width:auto;height:auto}1 .addtoany_content{clear:both;margin:16px 0}.addtoany_header{margin:0 0 16px}.addtoany_list{display:inline;line-height:16px}.addtoany_list a,.widget .addtoany_list a{border:0;box-shadow:none;display:inline-block;font-size:16px;padding:0 4px;vertical-align:middle}.addtoany_list a img{border:0;display:inline-block;opacity:1;overflow:hidden;vertical-align:baseline}.addtoany_list a span{display:inline-block;float:none}.addtoany_list.a2a_kit_size_32 a{font-size:32px}.addtoany_list.a2a_kit_size_32 a>span{border-radius:4px;display:inline-block;opacity:1}.addtoany_list a .a2a_count{position:relative;vertical-align:top}.addtoany_list a:hover,.widget .addtoany_list a:hover{border:0;box-shadow:none}.addtoany_list a:hover img,.addtoany_list a:hover span{opacity:.7}.addtoany_list a.addtoany_special_service:hover img,.addtoany_list a.addtoany_special_service:hover span{opacity:1}.addtoany_special_service{display:inline-block;vertical-align:middle}.addtoany_special_service a,.addtoany_special_service div,.addtoany_special_service div.fb_iframe_widget,.addtoany_special_service iframe,.addtoany_special_service span{margin:0;vertical-align:baseline!important}.addtoany_special_service iframe{display:inline;max-width:none}a.addtoany_share.addtoany_no_icon span.a2a_img_text{display:none}a.addtoany_share img{border:0;width:auto;height:auto} -
add-to-any/trunk/addtoany.min.js
r1476156 r1940269 1 "function"==typeof jQuery&&jQuery(document).ready(function(a){a("body").on("post-load",function(){window.a2a&&a2a.init_all( "page")})});1 "function"==typeof jQuery&&jQuery(document).ready(function(a){a("body").on("post-load",function(){window.a2a&&a2a.init_all()})});
Note: See TracChangeset
for help on using the changeset viewer.