Drupal.locale = { 'pluralFormula': function ($n) { return Number(($n!=1)); }, 'strings': {"":{"An AJAX HTTP error occurred.":"\u53d1\u751f\u4e00\u4e2aAJAX HTTP\u9519\u8bef\u3002","HTTP Result Code: !status":"HTTP\u8fd4\u56de\u4ee3\u7801\uff1a!status","An AJAX HTTP request terminated abnormally.":"\u4e00\u4e2aAJAX HTTP\u8bf7\u6c42\u5f02\u5e38\u7ec8\u6b62\u3002","Debugging information follows.":"\u8c03\u8bd5\u4fe1\u606f\u5982\u4e0b\u3002","Path: !uri":"\u8def\u5f84\uff1a!uri","StatusText: !statusText":"\u72b6\u6001\u6587\u672c: !statusText","ResponseText: !responseText":"\u54cd\u5e94\u6587\u672c\uff1a !responseText","ReadyState: !readyState":"\u51c6\u5907\u72b6\u6001\uff1a !readyState","CustomMessage: !customMessage":"\u5b9a\u5236\u4fe1\u606f\uff1a !customMessage","Loading":"\u6b63\u5728\u52a0\u8f7d","(active tab)":"\uff08\u6d3b\u52a8\u6807\u7b7e\uff09","Translate Text":"\u7ffb\u8bd1\u6587\u672c","Please wait...":"\u8bf7\u7a0d\u7b49...","An HTTP error @status occured.":"\u51fa\u73b0\u4e00\u4e2aHTTP@status\u9519\u8bef","@title dialog":"@title \u5bf9\u8bdd\u6846","Configure":"\u914d\u7f6e","Show shortcuts":"\u663e\u793a\u5feb\u6377\u65b9\u5f0f","Hide shortcuts":"\u9690\u85cf\u5feb\u6377\u952e","Hide":"\u9690\u85cf","Show":"\u663e\u793a","Translatable":"\u53ef\u88ab\u7ffb\u8bd1","Not translatable":"\u4e0d\u80fd\u88ab\u7ffb\u8bd1","Restricted to certain languages":"\u9650\u5236\u4e3a\u67d0\u4e9b\u8bed\u8a00","Not restricted":"\u672a\u53d7\u9650\u5236","Restricted to certain pages":"\u9650\u5236\u5230\u7279\u5b9a\u7684\u533a\u5757","Not customizable":"\u4e0d\u53ef\u81ea\u5b9a\u4e49\u7684","The changes to these blocks will not be saved until the \u003Cem\u003ESave blocks\u003C\/em\u003E button is clicked.":"\u8fd9\u4e9b\u533a\u5757\u7684\u53d8\u66f4\u4e0d\u4f1a\u88ab\u50a8\u5b58\u8d77\u6765\uff0c\u9664\u975e\u60a8\u6309\u4e0b\u003Cem\u003E\u50a8\u5b58\u533a\u5757\u003C\/em\u003E\u7684\u6309\u94ae\u3002","The block cannot be placed in this region.":"\u6b64\u533a\u5757\u4e0d\u80fd\u653e\u7f6e\u5728\u6b64\u533a\u57df\u4e2d","Re-order rows by numerical weight instead of dragging.":"\u4e0d\u7528\u62d6\u653e\u64cd\u4f5c\uff0c\u800c\u7528\u6570\u5b57\u6743\u91cd\u65b9\u5f0f\u91cd\u65b0\u5bf9\u884c\u6392\u5e8f\u3002","Show row weights":"\u663e\u793a\u884c\u7684\u6743\u91cd","Hide row weights":"\u9690\u85cf\u884c\u7684\u6743\u91cd","Drag to re-order":"\u62d6\u653e\u91cd\u65b0\u6392\u5e8f","Changes made in this table will not be saved until the form is submitted.":"\u5728\u6b64\u8868\u683c\u4e2d\u7684\u4fee\u6539\u53ea\u6709\u5728\u6574\u4e2a\u8868\u5355\u63d0\u4ea4\u540e\u624d\u4f1a\u88ab\u4fdd\u5b58\u3002","Status":"\u72b6\u6001","Select None":"\u9009\u62e9\u65e0","Select All":"\u9009\u62e9\u6240\u6709","Disabled":"\u7981\u7528","Enabled":"\u542f\u7528","Content can only be inserted into CKEditor in the WYSIWYG mode.":"\u53ea\u6709\u5728WYSIWYG\u6a21\u5f0f\u4e0b\u624d\u80fd\u5728CKEditor\u4e2d\u63d2\u5165\u5185\u5bb9\u3002","Edit":"\u7f16\u8f91","Size":"\u5927\u5c0f","Add":"\u6dfb\u52a0","Other":"\u5176\u5b83","@count year from now":"@count \u5e74\u4ece\u73b0\u5728\u8d77","@count years from now":"@count \u5e74\u4ece\u73b0\u5728\u8d77","Next":"\u4e0b\u4e00\u4e2a","Sunday":"\u661f\u671f\u65e5","Monday":"\u661f\u671f\u4e00","Tuesday":"\u661f\u671f\u4e8c","Wednesday":"\u661f\u671f\u4e09","Thursday":"\u661f\u671f\u56db","Friday":"\u661f\u671f\u4e94","Saturday":"\u661f\u671f\u516d","Filename":"\u6587\u4ef6\u540d","Upload":"\u4e0a\u4f20","Done":"\u5b8c\u6210","N\/A":"N\/A","OK":"OK","Prev":"\u524d","Mon":"\u5468\u4e00","Tue":"\u5468\u4e8c","Wed":"\u5468\u4e09","Thu":"\u5468\u56db","Fri":"\u5468\u4e94","Sat":"\u5468\u516d","Sun":"\u5468\u65e5","January":"\u4e00\u6708","February":"\u4e8c\u6708","March":"\u4e09\u6708","April":"\u56db\u6708","May":"5\u6708","June":"\u516d\u6708","July":"\u4e03\u6708","August":"\u516b\u6708","September":"\u4e5d\u6708","October":"\u5341\u6708","November":"\u5341\u4e00\u6708","December":"\u5341\u4e8c\u6708","Select all rows in this table":"\u9009\u62e9\u6b64\u8868\u4e2d\u7684\u6240\u6709\u884c","Deselect all rows in this table":"\u53d6\u6d88\u5168\u9009\u6b64\u8868\u4e2d\u7684\u6240\u6709\u884c","Today":"\u4eca\u5929","Feb":"2\u6708","Mar":"3\u6708","Apr":"4\u6708","Jun":"6\u6708","Jul":"7\u6708","Aug":"8\u6708","Sep":"9\u6708","Oct":"10\u6708","Nov":"11\u6708","Dec":"12\u6708","Su":"\u5468\u65e5","Mo":"\u5468\u4e00","Tu":"\u5468\u4e8c","We":"\u5468\u4e09","Th":"\u5468\u56db","Fr":"\u5468\u4e94","Sa":"\u5468\u516d","Not published":"\u672a\u53d1\u8868","mm\/dd\/yy":"mm\/dd\/yy","Only files with the following extensions are allowed: %files-allowed.":"\u53ea\u5141\u8bb8\u4ee5\u4e0b\u6269\u5c55\u540d\u6587\u4ef6\uff1a%files-allowed\u3002","By @name on @date":"\u7531 @name \u5728 @date \u53d1\u5e03","By @name":"\u7531 @name \u53d1\u5e03","Not in menu":"\u4e0d\u5728\u83dc\u5355\u4e2d","Alias: @alias":"\u522b\u540d\uff1a@alias","No alias":"\u65e0\u522b\u540d","New revision":"\u65b0\u7684\u4fee\u8ba2\u7248\u672c","This permission is inherited from the authenticated user role.":"\u6b64\u6743\u9650\u7ee7\u627f\u81ea\u6ce8\u518c\u7528\u6237\u89d2\u8272\u3002","No revision":"\u6ca1\u6709\u4fee\u8ba2\u7248\u672c","Requires a title":"\u9700\u8981\u4e00\u4e2a\u6807\u9898","Hide summary":"\u9690\u85cf\u6458\u8981","Edit summary":"\u7f16\u8f91\u6458\u8981","Don\u0027t display post information":"\u4e0d\u8981\u663e\u793a\u53d1\u5e03\u4fe1\u606f\u3002","The selected file %filename cannot be uploaded. Only files with the following extensions are allowed: %extensions.":"\u9009\u62e9\u7684\u6587\u4ef6%filename\u65e0\u6cd5\u4e0a\u4f20\u3002\u53ea\u6709\u4ee5\u4e0b\u7c7b\u578b\u7684\u6587\u4ef6\u88ab\u5141\u8bb8\uff1a%extensions\u3002","Autocomplete popup":"\u81ea\u52a8\u5b8c\u6210\u7684\u5f39\u51fa\u7a97\u53e3","Searching for matches...":"\u6b63\u5728\u67e5\u627e\u5339\u914d\u9879...","The response failed verification so will not be processed.":"\u672a\u901a\u8fc7\u9a8c\u8bc1\u7684\u54cd\u5e94\u4e0d\u4f1a\u88ab\u5904\u7406\u3002","The callback URL is not local and not trusted: !url":"\u975e\u672c\u5730\u7684\u56de\u8c03\u5730\u5740\u4e0d\u4f1a\u88ab\u4fe1\u4efb\uff1a !url","Submit":"\u63d0\u4ea4","Start upload":"\u5f00\u59cb\u4e0a\u4f20","Associated with @name":"\u4e0e @name \u5173\u8054","Destination: @scheme":"\u76ee\u6807\uff1a @scheme","Close":"\u5173\u95ed","Log messages":"\u65e5\u5fd7\u6d88\u606f","Please select a file.":"\u8bf7\u9009\u62e91\u4e2a\u6587\u4ef6\u3002","You are not allowed to operate on more than %num files.":"\u60a8\u4e0d\u5f97\u64cd\u4f5c\u8d85\u8fc7%num\u4e2a\u6587\u4ef6\u3002","Please specify dimensions within the allowed range that is from 1x1 to @dimensions.":"\u8bf7\u57281x1 \u5230 @dimensions\u7684\u8bb8\u53ef\u8303\u56f4\u5185\u8bbe\u5b9a\u5c3a\u5bf8\u5927\u5c0f\u3002","%filename is not an image.":"%filename\u4e0d\u662f1\u4e2a\u56fe\u7247\u3002","Do you want to refresh the current directory?":"\u4f60\u60f3\u5237\u65b0\u5f53\u524d\u76ee\u5f55\uff1f","Delete selected files?":"\u5220\u9664\u6240\u9009\u6587\u4ef6\uff1f","Please select a thumbnail.":"\u8bf7\u9009\u62e9\u4e00\u4e2a\u7f29\u7565\u56fe\u3002","You must select at least %num files.":"\u4f60\u81f3\u5c11\u5f97\u9009\u62e9%num\u4e2a\u6587\u4ef6\u3002","You can not perform this operation.":"\u60a8\u4e0d\u80fd\u6267\u884c\u6b64\u64cd\u4f5c\u3002","Insert file":"\u63d2\u5165\u6587\u4ef6","Media browser":"\u5a92\u4f53\u6d4f\u89c8\u5668","Cannot continue, nothing selected":"\u5565\u4e5f\u6ca1\u9009\u4e2d","You have not selected anything!":"\u60a8\u672a\u9009\u62e9\u4efb\u4f55\u4e1c\u897f\uff01","Insert":"\u63d2\u5165","@label: @value":"@label: @value","Using defaults":"\u4f7f\u7528\u9ed8\u8ba4","An error occurred":"\u53d1\u751f\u4e86\u4e00\u4e2a\u9519\u8bef","No nodes in this queue.":"\u6b64\u961f\u5217\u4e2d\u65e0\u8282\u70b9\u3002","Automatic alias":"\u81ea\u52a8\u522b\u540d","Add files":"\u6dfb\u52a0\u6587\u4ef6","Select files":"\u9009\u62e9\u6587\u4ef6","Add files to the upload queue and click the start button.":"\u6dfb\u52a0\u6587\u4ef6\u5230\u4e0a\u4f20\u961f\u5217\uff0c\u7136\u540e\u70b9\u51fb\u5f00\u59cb\u6309\u94ae","Stop current upload":"\u505c\u6b62\u5f53\u524d\u4e0a\u4f20","Start uploading queue":"\u5f00\u59cb\u4e0a\u4f20","Drag files here.":"\u62d6\u653e\u6587\u4ef6\u5230\u8fd9\u91cc","Error: File too large: ":"\u9519\u8bef\uff1a\u6587\u4ef6\u592a\u5927\uff1a ","Uploaded %d\/%d files":"\u4e0a\u4f20 %d\/%d \u6587\u4ef6","File extension error.":"\u6587\u4ef6\u6269\u5c55\u540d\u9519\u8bef\u3002","File size error.":"\u6587\u4ef6\u5927\u5c0f\u9519\u8bef\uff0c","Init error.":"\u521d\u59cb\u5316\u9519\u8bef\u3002","HTTP Error.":"HTTP\u9519\u8bef\u3002","Security error.":"\u5b89\u5168\u9519\u8bef\u3002","Generic error.":"\u5e38\u89c4\u9519\u8bef\u3002","IO error.":"IO\u9519\u8bef\u3002","Stop upload":"\u505c\u6b62\u4e0a\u4f20","%d files queued":"%d \u6587\u4ef6\u5df2\u6392\u5165\u961f\u5217","Please wait while your files are being uploaded.":"\u60a8\u7684\u6587\u4ef6\u6b63\u5728\u4e0a\u4f20\uff0c\u8bf7\u8010\u5fc3\u7b49\u5f85\u3002","Available tokens":"\u53ef\u7528\u7684token","Insert this token into your form":"\u628a\u8fd9\u4e2aToken\uff08\u4ee4\u724c\uff09\u63d2\u5165\u5230\u8868\u5355","First click a text field to insert your tokens into.":"\u5148\u70b9\u51fb\u60a8\u9700\u8981\u63d2\u5165\u66ff\u6362\u7b26\u7684\u6587\u5b57\u5b57\u6bb5\u3002","Loading token browser...":"\u6b63\u5728\u8f7d\u5165token\u6d4f\u89c8\u5668...","Inclusion: @value":"\u5305\u542b\uff1a @value","Priority: @value":"\u4f18\u5148\u7ea7: @value"}} };; /** * @file * Some basic behaviors and utility functions for Views. */ (function ($) { Drupal.Views = {}; /** * JQuery UI tabs, Views integration component. */ Drupal.behaviors.viewsTabs = { attach: function (context) { if ($.viewsUi && $.viewsUi.tabs) { $('#views-tabset').once('views-processed').viewsTabs({ selectedClass: 'active' }); } $('a.views-remove-link').once('views-processed').click(function(event) { var id = $(this).attr('id').replace('views-remove-link-', ''); $('#views-row-' + id).hide(); $('#views-removed-' + id).attr('checked', true); event.preventDefault(); }); /** * Here is to handle display deletion * (checking in the hidden checkbox and hiding out the row). */ $('a.display-remove-link') .addClass('display-processed') .click(function() { var id = $(this).attr('id').replace('display-remove-link-', ''); $('#display-row-' + id).hide(); $('#display-removed-' + id).attr('checked', true); return false; }); } }; /** * Helper function to parse a querystring. */ Drupal.Views.parseQueryString = function (query) { var args = {}; var pos = query.indexOf('?'); if (pos != -1) { query = query.substring(pos + 1); } var pairs = query.split('&'); for (var i in pairs) { if (typeof(pairs[i]) == 'string') { var pair = pairs[i].split('='); // Ignore the 'q' path argument, if present. if (pair[0] != 'q' && pair[1]) { args[decodeURIComponent(pair[0].replace(/\+/g, ' '))] = decodeURIComponent(pair[1].replace(/\+/g, ' ')); } } } return args; }; /** * Helper function to return a view's arguments based on a path. */ Drupal.Views.parseViewArgs = function (href, viewPath) { // Provide language prefix. if (Drupal.settings.pathPrefix) { var viewPath = Drupal.settings.pathPrefix + viewPath; } var returnObj = {}; var path = Drupal.Views.getPath(href); // Ensure we have a correct path. if (viewPath && path.substring(0, viewPath.length + 1) == viewPath + '/') { var args = decodeURIComponent(path.substring(viewPath.length + 1, path.length)); returnObj.view_args = args; returnObj.view_path = path; } return returnObj; }; /** * Strip off the protocol plus domain from an href. */ Drupal.Views.pathPortion = function (href) { // Remove e.g. http://example.com if present. var protocol = window.location.protocol; if (href.substring(0, protocol.length) == protocol) { // 2 is the length of the '//' that normally follows the protocol. href = href.substring(href.indexOf('/', protocol.length + 2)); } return href; }; /** * Return the Drupal path portion of an href. */ Drupal.Views.getPath = function (href) { href = Drupal.Views.pathPortion(href); href = href.substring(Drupal.settings.basePath.length, href.length); // 3 is the length of the '?q=' added to the url without clean urls. if (href.substring(0, 3) == '?q=') { href = href.substring(3, href.length); } var chars = ['#', '?', '&']; for (var i in chars) { if (href.indexOf(chars[i]) > -1) { href = href.substr(0, href.indexOf(chars[i])); } } return href; }; })(jQuery); ; (function ($) { /** * A progressbar object. Initialized with the given id. Must be inserted into * the DOM afterwards through progressBar.element. * * method is the function which will perform the HTTP request to get the * progress bar state. Either "GET" or "POST". * * e.g. pb = new progressBar('myProgressBar'); * some_element.appendChild(pb.element); */ Drupal.progressBar = function (id, updateCallback, method, errorCallback) { var pb = this; this.id = id; this.method = method || 'GET'; this.updateCallback = updateCallback; this.errorCallback = errorCallback; // The WAI-ARIA setting aria-live="polite" will announce changes after users // have completed their current activity and not interrupt the screen reader. this.element = $('
').attr('id', id); this.element.html('
' + '
' + '
 
'); }; /** * Set the percentage and status message for the progressbar. */ Drupal.progressBar.prototype.setProgress = function (percentage, message) { if (percentage >= 0 && percentage <= 100) { $('div.filled', this.element).css('width', percentage + '%'); $('div.percentage', this.element).html(percentage + '%'); } $('div.message', this.element).html(message); if (this.updateCallback) { this.updateCallback(percentage, message, this); } }; /** * Start monitoring progress via Ajax. */ Drupal.progressBar.prototype.startMonitoring = function (uri, delay) { this.delay = delay; this.uri = uri; this.sendPing(); }; /** * Stop monitoring progress via Ajax. */ Drupal.progressBar.prototype.stopMonitoring = function () { clearTimeout(this.timer); // This allows monitoring to be stopped from within the callback. this.uri = null; }; /** * Request progress data from server. */ Drupal.progressBar.prototype.sendPing = function () { if (this.timer) { clearTimeout(this.timer); } if (this.uri) { var pb = this; // When doing a post request, you need non-null data. Otherwise a // HTTP 411 or HTTP 406 (with Apache mod_security) error may result. $.ajax({ type: this.method, url: this.uri, data: '', dataType: 'json', success: function (progress) { // Display errors. if (progress.status == 0) { pb.displayError(progress.data); return; } // Update display. pb.setProgress(progress.percentage, progress.message); // Schedule next timer. pb.timer = setTimeout(function () { pb.sendPing(); }, pb.delay); }, error: function (xmlhttp) { pb.displayError(Drupal.ajaxError(xmlhttp, pb.uri)); } }); } }; /** * Display errors on the page. */ Drupal.progressBar.prototype.displayError = function (string) { var error = $('
').html(string); $(this.element).before(error).hide(); if (this.errorCallback) { this.errorCallback(this); } }; })(jQuery); ; /** * @file * Handles AJAX fetching of views, including filter submission and response. */ (function ($) { /** * Attaches the AJAX behavior to exposed filter forms and key views links. */ Drupal.behaviors.ViewsAjaxView = {}; Drupal.behaviors.ViewsAjaxView.attach = function() { if (Drupal.settings && Drupal.settings.views && Drupal.settings.views.ajaxViews) { $.each(Drupal.settings.views.ajaxViews, function(i, settings) { Drupal.views.instances[i] = new Drupal.views.ajaxView(settings); }); } }; Drupal.views = {}; Drupal.views.instances = {}; /** * JavaScript object for a certain view. */ Drupal.views.ajaxView = function(settings) { var selector = '.view-dom-id-' + settings.view_dom_id; this.$view = $(selector); // Retrieve the path to use for views' ajax. var ajax_path = Drupal.settings.views.ajax_path; // If there are multiple views this might've ended up showing up multiple // times. if (ajax_path.constructor.toString().indexOf("Array") != -1) { ajax_path = ajax_path[0]; } // Check if there are any GET parameters to send to views. var queryString = window.location.search || ''; if (queryString !== '') { // Remove the question mark and Drupal path component if any. var queryString = queryString.slice(1).replace(/q=[^&]+&?|&?render=[^&]+/, ''); if (queryString !== '') { // If there is a '?' in ajax_path, clean url are on and & should be // used to add parameters. queryString = ((/\?/.test(ajax_path)) ? '&' : '?') + queryString; } } this.element_settings = { url: ajax_path + queryString, submit: settings, setClick: true, event: 'click', selector: selector, progress: { type: 'throbber' } }; this.settings = settings; // Add the ajax to exposed forms. this.$exposed_form = $('#views-exposed-form-' + settings.view_name.replace(/_/g, '-') + '-' + settings.view_display_id.replace(/_/g, '-')); this.$exposed_form.once(jQuery.proxy(this.attachExposedFormAjax, this)); // Store Drupal.ajax objects here for all pager links. this.links = []; // Add the ajax to pagers. this.$view .once(jQuery.proxy(this.attachPagerAjax, this)); // Add a trigger to update this view specifically. In order to trigger a // refresh use the following code. // // @code // jQuery('.view-name').trigger('RefreshView'); // @endcode // Add a trigger to update this view specifically. var self_settings = this.element_settings; self_settings.event = 'RefreshView'; var self = this; this.$view.once('refresh', function () { self.refreshViewAjax = new Drupal.ajax(self.selector, self.$view, self_settings); }); }; Drupal.views.ajaxView.prototype.attachExposedFormAjax = function() { var button = $('input[type=submit], button[type=submit], input[type=image]', this.$exposed_form); button = button[0]; // Call the autocomplete submit before doing AJAX. $(button).click(function () { if (Drupal.autocompleteSubmit) { Drupal.autocompleteSubmit(); } }); this.exposedFormAjax = new Drupal.ajax($(button).attr('id'), button, this.element_settings); }; /** * Attach the ajax behavior to each link. */ Drupal.views.ajaxView.prototype.attachPagerAjax = function() { this.$view.find('ul.pager > li > a, ol.pager > li > a, th.views-field a, .attachment .views-summary a') .each(jQuery.proxy(this.attachPagerLinkAjax, this)); }; /** * Attach the ajax behavior to a single link. */ Drupal.views.ajaxView.prototype.attachPagerLinkAjax = function(id, link) { var $link = $(link); var viewData = {}; var href = $link.attr('href'); // Don't attach to pagers inside nested views. if ($link.closest('.view')[0] !== this.$view[0] && $link.closest('.view').parent().hasClass('attachment') === false) { return; } // Provide a default page if none has been set. This must be done // prior to merging with settings to avoid accidentally using the // page landed on instead of page 1. if (typeof(viewData.page) === 'undefined') { viewData.page = 0; } // Construct an object using the settings defaults and then overriding // with data specific to the link. $.extend( viewData, this.settings, Drupal.Views.parseQueryString(href), // Extract argument data from the URL. Drupal.Views.parseViewArgs(href, this.settings.view_base_path) ); // For anchor tags, these will go to the target of the anchor rather // than the usual location. $.extend(viewData, Drupal.Views.parseViewArgs(href, this.settings.view_base_path)); this.element_settings.submit = viewData; this.pagerAjax = new Drupal.ajax(false, $link, this.element_settings); this.links.push(this.pagerAjax); }; Drupal.ajax.prototype.commands.viewsScrollTop = function (ajax, response, status) { // Scroll to the top of the view. This will allow users // to browse newly loaded content after e.g. clicking a pager // link. var offset = $(response.selector).offset(); // We can't guarantee that the scrollable object should be // the body, as the view could be embedded in something // more complex such as a modal popup. Recurse up the DOM // and scroll the first element that has a non-zero top. var scrollTarget = response.selector; while ($(scrollTarget).scrollTop() == 0 && $(scrollTarget).parent()) { scrollTarget = $(scrollTarget).parent(); } // Only scroll upward. if (offset.top - 10 < $(scrollTarget).scrollTop()) { $(scrollTarget).animate({scrollTop: (offset.top - 10)}, 500); } }; })(jQuery); ;