1Drupal.locale = { 'pluralFormula': function ($n) { return Number(($n!=1)); }, 'strings': {"":{"An AJAX HTTP error occurred.":"Egy AJAX HTTP hiba k\u00f6vetkezett be.","HTTP Result Code: !status":"HTTP eredm\u00e9nyk\u00f3d: !status","An AJAX HTTP request terminated abnormally.":"Az AJAX HTTP k\u00e9r\u00e9s rendellenesen megszakadt.","Debugging information follows.":"A hibakeres\u00e9si inform\u00e1ci\u00f3k k\u00f6vetkeznek.","Path: !uri":"\u00datvonal: !uri","StatusText: !statusText":"\u00c1llapot\u00fczenet: !statusText","ResponseText: !responseText":"V\u00e1lasz\u00fczenet: !responseText","ReadyState: !readyState":"K\u00e9sz\u00fclts\u00e9g: !readyState","CustomMessage: !customMessage":"Egy\u00e9ni \u00fczenet: !customMessage","Loading":"Bet\u00f6lt\u00e9s","(active tab)":"(akt\u00edv f\u00fcl)","No results":"Nincs eredm\u00e9ny","clear":"t\u00f6rl\u00e9s","All":"Mind","New":"\u00daj","Modules installed within the last week.":"Az elm\u00falt h\u00e9ten telep\u00edtett modulok.","No modules added within the last week.":"Az elm\u00falt h\u00e9ten nem voltak modulok telep\u00edtve.","Recent":"Friss","Modules enabled\/disabled within the last week.":"Az elm\u00falt h\u00e9ten telep\u00edtett vagy elt\u00e1vol\u00edtott modulok.","No modules were enabled or disabled within the last week.":"Az elm\u00falt h\u00e9ten nem voltak modulok telep\u00edtve vagy elt\u00e1vol\u00edtva.","@enabled of @total":"@enabled \/ @total","@title dialog":"@title p\u00e1rbesz\u00e9dablak","Resume":"Folytat\u00e1s","Pause":"Sz\u00fcnet","There was no action specified.":"Nem lett m\u0171velet meghat\u00e1rozva.","This slideshow is forced paused.":"A diavet\u00edt\u00e9s sz\u00fcneteltet\u00e9se k\u00e9nyszer\u00edtett.","An invalid integer was specified for slideNum.":"Egy \u00e9rv\u00e9nytelen eg\u00e9sz sz\u00e1m lett megadva \u003Cem\u003EslideNum\u003C\/em\u003E-nak.","An invalid action \u0022!action\u0022 was specified.":"\u00c9rv\u00e9nytelen \u201e!action\u201d m\u0171velet lett megadva.","Please wait...":"Egy pillanat...","The response failed verification so will not be processed.":"A v\u00e1laszt nem siker\u00fclt hiteles\u00edteni, ez\u00e9rt nem lesz feldolgozva.","The callback URL is not local and not trusted: !url":"!url visszah\u00edv\u00e1si URL nem e webhelyr\u0151l val\u00f3, ez\u00e9rt nem megb\u00edzhat\u00f3.","Configure":"Be\u00e1ll\u00edt\u00e1s","Re-order rows by numerical weight instead of dragging.":"A sorok \u00fajrarendez\u00e9se h\u00faz\u00e1s helyett numerikus s\u00falyuk alapj\u00e1n.","Show row weights":"Sorok s\u00faly\u00e1nak mutat\u00e1sa","Hide row weights":"A sorok s\u00faly\u00e1nak elrejt\u00e9se","Drag to re-order":"\u00c1trendez\u00e9s h\u00faz\u00e1ssal","Changes made in this table will not be saved until the form is submitted.":"A t\u00e1bl\u00e1zaton v\u00e9grehajtott v\u00e1ltoztat\u00e1sok az \u0171rlap bek\u00fcld\u00e9s\u00e9ig nem lesznek elmentve.","Hide":"Elrejt\u00e9s","Show":"Megjelen\u00edt\u00e9s","Also allow !name role to !permission?":"!name szerepk\u00f6rt is enged\u00e9lyezze !permission jogosults\u00e1ghoz?","Edit":"Szerkeszt\u00e9s","Add":"Hozz\u00e1ad\u00e1s","Upload":"Felt\u00f6lt\u00e9s","Done":"K\u00e9sz","Breadcrumbs":"Morzs\u00e1k","Tooltips":"Eszk\u00f6ztippek","@number comments per page":"@number hozz\u00e1sz\u00f3l\u00e1s egy oldalon","The selected file %filename cannot be uploaded. Only files with the following extensions are allowed: %extensions.":"%filename kiv\u00e1lasztott f\u00e1jl nem t\u00f6lthet\u0151 fel. Csak a k\u00f6vetkez\u0151 kiterjeszt\u00e9sek egyik\u00e9vel rendelkez\u0151 f\u00e1jlok t\u00f6lthet\u0151ek fel: %extensions.","Autocomplete popup":"Automatikusan kieg\u00e9sz\u00edt\u0151 felugr\u00f3 ablak","Searching for matches...":"Egyez\u00e9sek keres\u00e9se...","Responsive Images":"Alkalmazkod\u00f3 k\u00e9pek","Anchors":"Horgonyok","Responsive Tables":"Reszponz\u00edv t\u00e1bl\u00e1zatok","Inverse":"Ford\u00edtott","Popovers":"Felugr\u00f3 \u00fczenetek","@size Buttons":"@size Gombok","@shape Images":"@shape K\u00e9pek","CDN provider: %provider":"CDN sz\u00e1ll\u00edt\u00f3: %provider","Preview of the Bootstrap theme":"A \u003Cem\u003EBootstrap\u003C\/em\u003E smink el\u0151n\u00e9zete","Preview of the @title Bootswatch theme":"@title \u003Cem\u003EBootswatch\u003C\/em\u003E smink el\u0151n\u00e9zete","Disabled":"Tiltott","Enabled":"Enged\u00e9lyezett","Other":"Egy\u00e9b","@count year from now":"@count \u00e9v mostant\u00f3l","@count years from now":"@count \u00e9v mostant\u00f3l","Next":"K\u00f6vetkez\u0151","Sunday":"vas\u00e1rnap","Monday":"h\u00e9tf\u0151","Tuesday":"kedd","Wednesday":"szerda","Thursday":"cs\u00fct\u00f6rt\u00f6k","Frid
1ay":"p\u00e9ntek","Saturday":"szombat","This field is required.":"Sz\u00fcks\u00e9ges mez\u0151.","Prev":"El\u0151z\u0151","Mon":"h","Tue":"k","Wed":"sze","Thu":"cs","Fri":"p","Sat":"szo","Sun":"v","January":"janu\u00e1r","February":"febru\u00e1r","March":"m\u00e1rcius","April":"\u00e1prilis","May":"m\u00e1j","June":"j\u00fanius","July":"j\u00falius","August":"augusztus","September":"szeptember","October":"okt\u00f3ber","November":"november","December":"december","Select all rows in this table":"A t\u00e1bl\u00e1zat minden sor\u00e1nak kiv\u00e1laszt\u00e1sa","Deselect all rows in this table":"A kiv\u00e1laszt\u00e1s megsz\u00fcntet\u00e9se a t\u00e1bl\u00e1zat minden sor\u00e1ban","Today":"Ma","Jan":"jan","Mar":"m\u00e1r","Apr":"\u00e1pr","Jun":"j\u00fan","Jul":"j\u00fal","Aug":"aug","Sep":"szep","Oct":"okt","Nov":"nov","Dec":"dec","Su":"Va","Mo":"H\u00e9","Tu":"Ke","We":"Sz","Th":"Cs","Fr":"P\u00e9","Sa":"Sz","Not published":"Rejtett","mm\/dd\/yy":"hh\/nn\/\u00e9\u00e9","Only files with the following extensions are allowed: %files-allowed.":"Csak a k\u00f6vetkez\u0151 kiterjeszt\u00e9sek egyik\u00e9vel rendelkez\u0151 f\u00e1jlok t\u00f6lthet\u0151ek fel: %files-allowed.","By @name on @date":"Szerz\u0151: @name (@date)","By @name":"Szerz\u0151: @name","Not in menu":"Nincs men\u00fcben","Alias: @alias":"\u00c1ln\u00e9v: @alias","No alias":"Nincs \u00e1ln\u00e9v","New revision":"\u00daj v\u00e1ltozat","The changes to these blocks will not be saved until the \u003Cem\u003ESave blocks\u003C\/em\u003E button is clicked.":"A blokkok v\u00e1ltoz\u00e1sai nem lesznek elmentve a \u003Cem\u003EBlokk ment\u00e9se\u003C\/em\u003E nyom\u00f3gombra kattint\u00e1sig.","This permission is inherited from the authenticated user role.":"Ezt a szerepk\u00f6rt minden azonos\u00edtott felhaszn\u00e1l\u00f3 megkapja.","No revision":"Nincs v\u00e1ltozat","Requires a title":"Sz\u00fcks\u00e9ges egy c\u00edm","Not restricted":"Nem korl\u00e1tozott","Not customizable":"Nem testreszabhat\u00f3","Restricted to certain pages":"Bizonyos oldalakra korl\u00e1tozva","The block cannot be placed in this region.":"A blokk nem helyezhet\u0151 el ebbe a r\u00e9gi\u00f3ba.","Customize dashboard":"Ir\u00e1ny\u00edt\u00f3pult testreszab\u00e1sa","Hide summary":"\u00d6sszefoglal\u00f3 elrejt\u00e9se","Edit summary":"\u00d6sszefoglal\u00f3 szerkeszt\u00e9se","Don\u0027t display post information":"Ne jelen\u00edtse meg a bek\u00fcld\u00e9si inform\u00e1ci\u00f3t","Show description":"Le\u00edr\u00e1s megjelen\u00edt\u00e9se","Hide description":"Le\u00edr\u00e1s elrejt\u00e9se","Ignored from settings":"Friss\u00edt\u00e9s figyel\u00e9s letiltva","Remove group":"Csoport t\u00f6rl\u00e9se","Apply (all displays)":"Alkalmaz\u00e1s (minden megjelen\u00edt\u00e9sre)","Apply (this display)":"Alkalmaz\u00e1s (erre a megjelen\u00edt\u00e9sre)","Revert to default":"Visszat\u00e9r\u00e9s az alap\u00e9rtelmez\u00e9shez","Update Advanced Option":"Halad\u00f3 lehet\u0151s\u00e9gek friss\u00edt\u00e9se","Applied Options":"Felhaszn\u00e1lt lehet\u0151s\u00e9gek","Select None":"Kijel\u00f6l\u00e9s megsz\u00fcntet\u00e9se","List additional actions":"Tov\u00e1bbi akci\u00f3k list\u00e1z\u00e1sa","Available tokens":"El\u00e9rhet\u0151 vez\u00e9rjelek","Insert this token into your form":"A vez\u00e9rjel besz\u00far\u00e1sa az \u0171rlapba","First click a text field to insert your tokens into.":"El\u0151sz\u00f6r r\u00e1 kell kattintani egy sz\u00f6veges mez\u0151re, ahov\u00e1 a vez\u00e9rjelet be kell sz\u00farni.","Loading token browser...":"Vez\u00e9rjel b\u00f6ng\u00e9sz\u0151 bet\u00f6lt\u00e9se...","Translatable":"Ford\u00edthat\u00f3","Not translatable":"Nem ford\u00edthat\u00f3","Restricted to certain languages":"Bizonyos nyelvekre korl\u00e1tozva","Inclusion: @value":"Bele\u00e9rtve: @value","Priority: @value":"Fontoss\u00e1g: @value","Automatic alias":"Automatikus \u00e1ln\u00e9v","required":"sz\u00fcks\u00e9ges","Insert Teaser Break":"Bevezet\u0151 elv\u00e1laszt\u00f3 besz\u00far\u00e1sa","Insert Page Break":"Oldalt\u00f6r\u00e9s besz\u00far\u00e1sa","Please select a file.":"Ki kell v\u00e1lasztani egy f\u00e1jlt.","You are not allowed to operate on more than %num files.":"Egyidej\u0171leg maximum %num f\u00e1jllal v\u00e9gezhet\u0151 el a m\u0171velet.","Please specify dimensions within the allowed range that is from 1x1 to @dimensions.":"M\u00e9retek be\u00e1ll\u00edt\u00e1sa az enged\u00e9lyezett tartom\u00e1nyon bel\u00fcl (1x1 - @dimensions).","%filename is not an image.":"%filename nem k\u00e9p.","Insert file":"F\u00e1jl beilleszt\u00e9se","Change view":"N\u00e9zetv\u00e1lt\u00e1s","Directory":"K\u00f6nyvt\u00e1r","%dirname is not a valid directory name. It should contain only alphanumeric characters, hyphen and underscore.":"%dirname nem \u00e9rv\u00e9nyes k\u00f6nyvt\u00e1rn\u00e9v. A k\u00f6nyvt\u00e1rn\u00e9v csak bet\u0171ket, sz\u00e1mokat \u00e9s al\u00e1h\u00faz\u00e1s jelet tartalmazhat.","Subdirectory %dir already exists.":"%dir alk\u00f6nyvt\u00e1r m\u00e1r l\u00e9tezik.","Subdirectory %dir does not exist.":"%dir alk\u00f6nyvt\u00e1r nem l\u00e9tezik.","You are not alllowed to create more than %num directories.":"Legfeljebb %num k\u00f6nyvt\u00e1r l\u00e9trehoz\u00e1sa enged\u00e9lyezett.","Are you sure want to delete this subdirectory with all directories and files in it?":"Biztosan t\u00f6r\u00f6lhet\u0151 ez az alk\u00f6nyvt\u00e1r \u00e9s az \u00f6sszes benne tal\u00e1lhat\u00f3 k\u00f6nyvt\u00e1r \u00e9s f\u00e1jl?","Close":"Bez\u00e1r","Colorbox":"Colorbox","show":"megjelen\u00edt\u00e9s"}} };; 2jQuery(document).ready(function($) { 3 var state = $.cookie('themekey_redirect_state'); 4 if (state === null) { 5 // Cookie not set => state 0. 6 state = 0; 7 } 8 if (state == 0) { 9 // Check if the user has to be redirected. 10 $.ajax({ 11 // add the current path and query to the url for ThemeKey's rule matching 12 url: Drupal.settings.basePath.replace(/\/$/, "") + '/index.php?q=themekey/redirect_callback' + window.location.pathname + window.location.search.replace(/^\?/, "&"), 13 dataType: 'json', 14 type: 'GET', 15 success: function(target) { 16 if (target) { 17 if (Drupal.settings.ThemeKeyRedirect.redirectOnce) { 18 // Set Domain A state to 2. 19 $.cookie('themekey_redirect_state', 2, { path: '/'}); 20 } 21 window.location.href = target; 22 // If the targeted page runs ThemeKey Redirect it sets the 23 // state to 1 or 2. 24 } 25 } 26 }); 27 if (Drupal.settings.ThemeKeyRedirect.checkOnce) { 28 // Set Domain A state to 2. 29 $.cookie('themekey_redirect_state', 2, { path: '/'}); 30 } 31 } 32 else if (state == 1) { 33 // The user has been redirected but is optionally allowed once to switch 34 // back manually. 35 $('#block-themekey-redirect-domain-selector').show(); 36 // Set Domain B state to 2. 37 $.cookie('themekey_redirect_state', 2, { path: '/'}); 38 } 39 // State 2 indicates that the user has been redirected and no further redirects will happen. 40}); 41; 42/** 43 * @file 44 * Some basic behaviors and utility functions for Views. 45 */ 46(function ($) { 47 48 Drupal.Views = {}; 49 50 /** 51 * JQuery UI tabs, Views integration component. 52 */ 53 Drupal.behaviors.viewsTabs = { 54 attach: function (context) { 55 if ($.viewsUi && $.viewsUi.tabs) { 56 $('#views-tabset').once('views-processed').viewsTabs({ 57 selectedClass: 'active' 58 }); 59 } 60 61 $('a.views-remove-link').once('views-processed').click(function(event) { 62 var id = $(this).attr('id').replace('views-remove-link-', ''); 63 $('#views-row-' + id).hide(); 64 $('#views-removed-' + id).attr('checked', true); 65 event.preventDefault(); 66 }); 67 /** 68 * Here is to handle display deletion 69 * (checking in the hidden checkbox and hiding out the row). 70 */ 71 $('a.display-remove-link') 72 .addClass('display-processed') 73 .click(function() { 74 var id = $(this).attr('id').replace('display-remove-link-', ''); 75 $('#display-row-' + id).hide(); 76 $('#display-removed-' + id).attr('checked', true); 77 return false;
78 }); 79 } 80 }; 81 82 /** 83 * Helper function to parse a querystring. 84 */ 85 Drupal.Views.parseQueryString = function (query) { 86 var args = {}; 87 var pos = query.indexOf('?'); 88 if (pos != -1) { 89 query = query.substring(pos + 1); 90 } 91 var pairs = query.split('&'); 92 for (var i in pairs) { 93 if (typeof(pairs[i]) == 'string') { 94 var pair = pairs[i].split('='); 95 // Ignore the 'q' path argument, if present. 96 if (pair[0] != 'q' && pair[1]) { 97 args[decodeURIComponent(pair[0].replace(/\+/g, ' '))] = decodeURIComponent(pair[1].replace(/\+/g, ' ')); 98 } 99 } 100 } 101 return args; 102 }; 103 104 /** 105 * Helper function to return a view's arguments based on a path. 106 */ 107 Drupal.Views.parseViewArgs = function (href, viewPath) { 108 109 // Provide language prefix. 110 if (Drupal.settings.pathPrefix) { 111 var viewPath = Drupal.settings.pathPrefix + viewPath; 112 } 113 var returnObj = {}; 114 var path = Drupal.Views.getPath(href); 115 // Ensure we have a correct path. 116 if (viewPath && path.substring(0, viewPath.length + 1) == viewPath + '/') { 117 var args = decodeURIComponent(path.substring(viewPath.length + 1, path.length)); 118 returnObj.view_args = args; 119 returnObj.view_path = path; 120 } 121 return returnObj; 122 }; 123 124 /** 125 * Strip off the protocol plus domain from an href. 126 */ 127 Drupal.Views.pathPortion = function (href) { 128 // Remove e.g. http://example.com if present. 129 var protocol = window.location.protocol; 130 if (href.substring(0, protocol.length) == protocol) { 131 // 2 is the length of the '//' that normally follows the protocol. 132 href = href.substring(href.indexOf('/', protocol.length + 2)); 133 } 134 return href; 135 }; 136 137 /** 138 * Return the Drupal path portion of an href. 139 */ 140 Drupal.Views.getPath = function (href) { 141 href = Drupal.Views.pathPortion(href); 142 href = href.substring(Drupal.settings.basePath.length, href.length); 143 // 3 is the length of the '?q=' added to the url without clean urls. 144 if (href.substring(0, 3) == '?q=') { 145 href = href.substring(3, href.length); 146 } 147 var chars = ['#', '?', '&']; 148 for (var i in chars) { 149 if (href.indexOf(chars[i]) > -1) { 150 href = href.substr(0, href.indexOf(chars[i])); 151 } 152 } 153 return href; 154 }; 155 156})(jQuery); 157; 158(function ($) { 159 160/** 161 * A progressbar object. Initialized with the given id. Must be inserted into 162 * the DOM afterwards through progressBar.element. 163 * 164 * method is the function which will perform the HTTP request to get the 165 * progress bar state. Either "GET" or "POST". 166 * 167 * e.g. pb = new progressBar('myProgressBar'); 168 * some_element.appendChild(pb.element); 169 */ 170Drupal.progressBar = function (id, updateCallback, method, errorCallback) { 171 var pb = this; 172 this.id = id; 173 this.method = method || 'GET'; 174 this.updateCallback = updateCallback; 175 this.errorCallback = errorCallback; 176 177 // The WAI-ARIA setting aria-live="polite" will announce changes after users 178 // have completed their current activity and not interrupt the screen reader. 179 this.element = $('<div class="progress-wrapper" aria-live="polite"></div>'); 180 this.element.html('<div id ="' + id + '" class="progress progress-striped active">' + 181 '<div class="progress-bar" role="progressbar" aria-valuemin="0" aria-valuemax="100" aria-valuenow="0">' + 182 '<div class="percentage sr-only"></div>' + 183 '</div></div>' + 184 '</div><div class="percentage pull-right"></div>' + 185 '<div class="message"> </div>'); 186}; 187 188/** 189 * Set the percentage and status message for the progressbar. 190 */ 191Drupal.progressBar.prototype.setProgress = function (percentage, message) { 192 if (percentage >= 0 && percentage <= 100) { 193 $('div.progress-bar', this.element).css('width', percentage + '%'); 194 $('div.progress-bar', this.element).attr('aria-valuenow', percentage); 195 $('div.percentage', this.element).html(percentage + '%'); 196 } 197 $('div.message', this.element).html(message); 198 if (this.updateCallback) { 199 this.updateCallback(percentage, message, this); 200 } 201}; 202 203/** 204 * Start monitoring progress via Ajax. 205 */ 206Drupal.progressBar.prototype.startMonitoring = function (uri, delay) { 207 this.delay = delay; 208 this.uri = uri; 209 this.sendPing(); 210}; 211 212/** 213 * Stop monitoring progress via Ajax. 214 */ 215Drupal.progressBar.prototype.stopMonitoring = function () { 216 clearTimeout(this.timer); 217 // This allows monitoring to be stopped from within the callback. 218 this.uri = null; 219}; 220 221/** 222 * Request progress data from server. 223 */ 224Drupal.progressBar.prototype.sendPing = function () { 225 if (this.timer) { 226 clearTimeout(this.timer); 227 } 228 if (this.uri) { 229 var pb = this; 230 // When doing a post request, you need non-null data. Otherwise a 231 // HTTP 411 or HTTP 406 (with Apache mod_security) error may result. 232 $.ajax({ 233 type: this.method, 234 url: this.uri, 235 data: '', 236 dataType: 'json', 237 success: function (progress) { 238 // Display errors. 239 if (progress.status == 0) { 240 pb.displayError(progress.data); 241 return; 242 } 243 // Update display. 244 pb.setProgress(progress.percentage, progress.message); 245 // Schedule next timer.
246 pb.timer = setTimeout(function () { pb.sendPing(); }, pb.delay); 247 }, 248 error: function (xmlhttp) { 249 pb.displayError(Drupal.ajaxError(xmlhttp, pb.uri)); 250 } 251 }); 252 } 253}; 254 255/** 256 * Display errors on the page. 257 */ 258Drupal.progressBar.prototype.displayError = function (string) { 259 var error = $('<div class="alert alert-block alert-error"><a class="close" data-dismiss="alert" href="#">×</a><h4>Error message</h4></div>').append(string); 260 $(this.element).before(error).hide(); 261 262 if (this.errorCallback) { 263 this.errorCallback(this); 264 } 265}; 266 267})(jQuery); 268; 269(function ($) { 270 271 Drupal.form_placeholder = {}; 272 273 Drupal.form_placeholder.elementIsSupported = function ($element) { 274 return $element.is('input[type=text], input[type=date], input[type=email], input[type=url], input[type=tel], input[type=password], textarea'); 275 }; 276 277 Drupal.form_placeholder.placeholderIsSupported = function () { 278 // Opera Mini v7 doesnât support placeholder although its DOM seems to 279 // indicate so. 280 var isOperaMini = Object.prototype.toString.call(window.operamini) == '[object OperaMini]'; 281 return 'placeholder' in document.createElement('input') && !isOperaMini; 282 }; 283 284 Drupal.behaviors.form_placeholder = { 285 attach: function (context, settings) { 286 // In some cases settings after ajax form submit could contain only 287 // settings from response but not all Drupal.settings data. 288 if (!settings.hasOwnProperty('form_placeholder')) { 289 settings = Drupal.settings; 290 } 291 var include = settings.form_placeholder.include; 292 if (include) { 293 include += ', '; 294 } 295 include += '.form-placeholder-include-children *'; 296 include += ', .form-placeholder-include'; 297 var exclude = settings.form_placeholder.exclude; 298 if (exclude) { 299 exclude += ', '; 300 } 301 exclude += '.form-placeholder-exclude-children *'; 302 exclude += ', .form-placeholder-exclude'; 303 exclude += ', .form-placeholder-processed'; 304 305 var required_indicator = settings.form_placeholder.required_indicator; 306 307 $(include).not(exclude).each(function () { 308 var $textfield = $(this); 309 var elementSupported = Drupal.form_placeholder.elementIsSupported($textfield); 310 var placeholderSupported = Drupal.form_placeholder.placeholderIsSupported(); 311 312 // Check if element support placeholder attribute. 313 if (!elementSupported) { 314 return; 315 } 316 // Placeholder is supported. 317 else if (placeholderSupported || settings.form_placeholder.fallback_support) { 318 var $form = $textfield.closest('form'); 319 var $label = $form.find('label[for=' + this.id + ']'); 320 321 if (required_indicator === 'append') { 322 $label.find('.form-required').insertAfter($textfield).prepend(' '); 323 } 324 else if (required_indicator === 'remove') { 325 $label.find('.form-required').remove(); 326 } 327 else if (required_indicator === 'text') { 328 $label.find('.form-required').text('(' + Drupal.t('required') + ')'); 329 } 330 331 if (!$textfield.attr('placeholder')) { 332 $textfield.attr('placeholder', $.trim($label.text())); 333 $label.addClass('element-invisible'); 334 } 335 336 // Fallback support for older browsers. 337 if (!placeholderSupported && settings.form_placeholder.fallback_support) { 338 $textfield.placeholder(); 339 } 340 $textfield.addClass('form-placeholder-processed'); 341 } 342 }); 343 } 344 }; 345 346})(jQuery); 347; 348/** 349 * @file views_load_more.js 350 * 351 * Handles the AJAX pager for the view_load_more plugin. 352 */ 353(function ($) { 354 355 /** 356 * Provide a series of commands that the server can request the client perform. 357 */ 358 Drupal.ajax.prototype.commands.viewsLoadMoreAppend = function (ajax, response, status) { 359 // Get information from the response. If it is not there, default to 360 // our presets. 361 var wrapper = response.selector ? $(response.selector) : $(ajax.wrapper); 362 var method = response.method || ajax.method; 363 var targetList = response.targetList || ''; 364 var effect = ajax.getEffect(response); 365 var pager_selector = response.options.pager_selector ? response.options.pager_selector : '.pager-load-more'; 366
367 // We don't know what response.data contains: it might be a string of text 368 // without HTML, so don't rely on jQuery correctly iterpreting 369 // $(response.data) as new HTML rather than a CSS selector. Also, if 370 // response.data contains top-level text nodes, they get lost with either 371 // $(response.data) or $('<div></div>').replaceWith(response.data). 372 var new_content_wrapped = $('<div></div>').html(response.data); 373 var new_content = new_content_wrapped.contents(); 374 375 // For legacy reasons, the effects processing code assumes that new_content 376 // consists of a single top-level element. Also, it has not been 377 // sufficiently tested whether attachBehaviors() can be successfully called 378 // with a context object that includes top-level text nodes. However, to 379 // give developers full control of the HTML appearing in the page, and to 380 // enable Ajax content to be inserted in places where DIV elements are not 381 // allowed (e.g., within TABLE, TR, and SPAN parents), we check if the new 382 // content satisfies the requirement of a single top-level element, and 383 // only use the container DIV created above when it doesn't. For more 384 // information, please see http://drupal.org/node/736066. 385 if (new_content.length != 1 || new_content.get(0).nodeType != 1) { 386 new_content = new_content_wrapped; 387 } 388 // If removing content from the wrapper, detach behaviors first. 389 var settings = response.settings || ajax.settings || Drupal.settings; 390 Drupal.detachBehaviors(wrapper, settings); 391 if ($.waypoints != undefined) { 392 $.waypoints('refresh'); 393 } 394 395 // Set up our default query options. This is for advance users that might 396 // change there views layout classes. This allows them to write there own 397 // jquery selector to replace the content with. 398 // Provide sensible defaults for unordered list, ordered list and table 399 // view styles. 400 var content_query = targetList && !response.options.content ? '> .view-content ' + targetList : response.options.content || '> .view-content'; 401 402 // If we're using any effects. Hide the new content before adding it to the DOM. 403 if (effect.showEffect != 'show') { 404 new_content.find(content_query).children().hide(); 405 } 406 407 // Update the pager 408 // Find both for the wrapper as the newly loaded content the direct child 409 // .item-list in case of nested pagers 410 wrapper.find(pager_selector).replaceWith(new_content.find(pager_selector)); 411 412 // Add the new content to the page. 413 wrapper.find(content_query)[method](new_content.find(content_query).children()); 414 415 // Re-class the loaded content. 416 // @todo this is faulty in many ways. first of which is that user may have configured view to not have these classes at all. 417 wrapper.find(content_query).children() 418 .removeClass('views-row-first views-row-last views-row-odd views-row-even') 419 .filter(':first') 420 .addClass('views-row-first') 421 .end() 422 .filter(':last') 423 .addClass('views-row-last') 424 .end() 425 .filter(':even') 426 .addClass('views-row-odd') 427 .end() 428 .filter(':odd') 429 .addClass('views-row-even') 430 .end(); 431 432 if (effect.showEffect != 'show') { 433 wrapper.find(content_query).children(':not(:visible)')[effect.showEffect](effect.showSpeed); 434 } 435 436 // Additional processing over new content 437 wrapper.trigger('views_load_more.new_content', new_content.clone()); 438 439 // Attach all JavaScript behaviors to the new content 440 // Remove the Jquery once Class, TODO: There needs to be a better 441 // way of doing this, look at .removeOnce() :-/ 442 var classes = wrapper.attr('class'); 443 var onceClass = classes.match(/jquery-once-[0-9]*-[a-z]*/); 444 wrapper.removeClass(onceClass[0]); 445 settings = response.settings || ajax.settings || Drupal.settings; 446 Drupal.attachBehaviors(wrapper, settings); 447 }; 448 449 /** 450 * Attaches the AJAX behavior to Views Load More waypoint support. 451 */ 452 Drupal.behaviors.ViewsLoadMore = { 453 attach: function (context, settings) { 454 var default_opts = { 455 offset: '100%' 456 }; 457 458 if (settings && settings.viewsLoadMore && settings.views && settings.views.ajaxViews) { 459 $.each(settings.viewsLoadMore, function(i, setting) { 460 var view = '.view-id-' + setting.view_name + '.view-display-id-' + setting.view_display_id + ' .pager-next a', 461 opts = {}; 462 463 $.extend(opts, default_opts, settings.viewsLoadMore[i].opts); 464 465 $(view).waypoint('destroy'); 466 $(view).waypoint(function(event, direction) { 467 $(view).click(); 468 }, opts); 469 }); 470 } 471 }, 472 detach: function (context, settings, trigger) { 473 if (settings && settings.viewsLoadMore && settings.views && settings.views.ajaxViews) { 474 $.each(settings.viewsLoadMore, function(i, setting) { 475 var view = '.view-id-' + setting.view_name + '.view-display-id-' + setting.view_display_id; 476 if ($(context).is(view)) { 477 $('.pager-next a', view).waypoint('destroy'); 478 } 479 else { 480 $(view, context).waypoint('destroy'); 481 } 482 }); 483 } 484 } 485 }; 486})(jQuery); 487; 488/** 489 * @file 490 * Handles AJAX fetching of views, including filter submission and response. 491 */ 492(function ($) { 493 494 /**
495 * Attaches the AJAX behavior to exposed filter forms and key views links. 496 */ 497 Drupal.behaviors.ViewsAjaxView = {}; 498 Drupal.behaviors.ViewsAjaxView.attach = function() { 499 if (Drupal.settings && Drupal.settings.views && Drupal.settings.views.ajaxViews) { 500 $.each(Drupal.settings.views.ajaxViews, function(i, settings) { 501 Drupal.views.instances[i] = new Drupal.views.ajaxView(settings); 502 }); 503 } 504 }; 505 506 Drupal.views = {}; 507 Drupal.views.instances = {}; 508 509 /** 510 * JavaScript object for a certain view. 511 */ 512 Drupal.views.ajaxView = function(settings) { 513 var selector = '.view-dom-id-' + settings.view_dom_id; 514 this.$view = $(selector); 515 516 // Retrieve the path to use for views' ajax. 517 var ajax_path = Drupal.settings.views.ajax_path; 518 519 // If there are multiple views this might've ended up showing up multiple 520 // times. 521 if (ajax_path.constructor.toString().indexOf("Array") != -1) { 522 ajax_path = ajax_path[0]; 523 } 524 525 // Check if there are any GET parameters to send to views. 526 var queryString = window.location.search || ''; 527 if (queryString !== '') { 528 // Remove the question mark and Drupal path component if any. 529 var queryString = queryString.slice(1).replace(/q=[^&]+&?|&?render=[^&]+/, ''); 530 if (queryString !== '') { 531 // If there is a '?' in ajax_path, clean url are on and & should be 532 // used to add parameters. 533 queryString = ((/\?/.test(ajax_path)) ? '&' : '?') + queryString; 534 } 535 } 536 537 this.element_settings = { 538 url: ajax_path + queryString, 539 submit: settings, 540 setClick: true, 541 event: 'click', 542 selector: selector, 543 progress: { 544 type: 'throbber' 545 } 546 }; 547 548 this.settings = settings; 549 550 // Add the ajax to exposed forms. 551 this.$exposed_form = $('#views-exposed-form-' + settings.view_name.replace(/_/g, '-') + '-' + settings.view_display_id.replace(/_/g, '-')); 552 this.$exposed_form.once(jQuery.proxy(this.attachExposedFormAjax, this)); 553 554 // Store Drupal.ajax objects here for all pager links. 555 this.links = []; 556 557 // Add the ajax to pagers. 558 this.$view 559 .once(jQuery.proxy(this.attachPagerAjax, this)); 560 561 // Add a trigger to update this view specifically. In order to trigger a 562 // refresh use the following code. 563 // 564 // @code 565 // jQuery('.view-name').trigger('RefreshView'); 566 // @endcode 567 // Add a trigger to update this view specifically. 568 var self_settings = this.element_settings; 569 self_settings.event = 'RefreshView'; 570 var self = this; 571 this.$view.once('refresh', function () { 572 self.refreshViewAjax = new Drupal.ajax(self.selector, self.$view, self_settings); 573 }); 574 }; 575 576 Drupal.views.ajaxView.prototype.attachExposedFormAjax = function() { 577 var button = $('input[type=submit], button[type=submit], input[type=image]', this.$exposed_form); 578 button = button[0]; 579 580 // Call the autocomplete submit before doing AJAX. 581 $(button).click(function () { 582 if (Drupal.autocompleteSubmit) { 583 Drupal.autocompleteSubmit(); 584 } 585 }); 586 587 this.exposedFormAjax = new Drupal.ajax($(button).attr('id'), button, this.element_settings); 588 }; 589 590 /** 591 * Attach the ajax behavior to each link. 592 */ 593 Drupal.views.ajaxView.prototype.attachPagerAjax = function() { 594 this.$view.find('ul.pager > li > a, ol.pager > li > a, th.views-field a, .attachment .views-summary a') 595 .each(jQuery.proxy(this.attachPagerLinkAjax, this)); 596 }; 597 598 /** 599 * Attach the ajax behavior to a single link. 600 */ 601 Drupal.views.ajaxView.prototype.attachPagerLinkAjax = function(id, link) { 602 var $link = $(link); 603 var viewData = {}; 604 var href = $link.attr('href'); 605 // Don't attach to pagers inside nested views. 606 if ($link.closest('.view')[0] !== this.$view[0] && 607 $link.closest('.view').parent().hasClass('attachment') === false) { 608 return; 609 } 610 611 // Provide a default page if none has been set. This must be done 612 // prior to merging with settings to avoid accidentally using the 613 // page landed on instead of page 1. 614 if (typeof(viewData.page) === 'undefined') { 615 viewData.page = 0; 616 } 617 618 // Construct an object using the settings defaults and then overriding 619 // with data specific to the link. 620 $.extend( 621 viewData, 622 this.settings, 623 Drupal.Views.parseQueryString(href), 624 // Extract argument data from the URL. 625 Drupal.Views.parseViewArgs(href, this.settings.view_base_path) 626 ); 627
628 // For anchor tags, these will go to the target of the anchor rather 629 // than the usual location. 630 $.extend(viewData, Drupal.Views.parseViewArgs(href, this.settings.view_base_path)); 631 632 this.element_settings.submit = viewData; 633 this.pagerAjax = new Drupal.ajax(false, $link, this.element_settings); 634 this.links.push(this.pagerAjax); 635 }; 636 637 Drupal.ajax.prototype.commands.viewsScrollTop = function (ajax, response, status) { 638 // Scroll to the top of the view. This will allow users 639 // to browse newly loaded content after e.g. clicking a pager 640 // link. 641 var offset = $(response.selector).offset(); 642 // We can't guarantee that the scrollable object should be 643 // the body, as the view could be embedded in something 644 // more complex such as a modal popup. Recurse up the DOM 645 // and scroll the first element that has a non-zero top. 646 var scrollTarget = response.selector; 647 while ($(scrollTarget).scrollTop() == 0 && $(scrollTarget).parent()) { 648 scrollTarget = $(scrollTarget).parent(); 649 } 650 // Only scroll upward. 651 if (offset.top - 10 < $(scrollTarget).scrollTop()) { 652 $(scrollTarget).animate({scrollTop: (offset.top - 10)}, 500); 653 } 654 }; 655 656})(jQuery); 657; 658/** 659 * Timepicker plugin & override helper. 660 * Adds attach behaviour to drupal settings for timepicker plugin. 661 */ 662 663Drupal.settings.stanfordDateTimepicker = typeof(Drupal.settings.stanfordDateTimepicker) == 'undefined' ? [] : Drupal.settings.stanfordDateTimepicker; 664 665(function($){ 666 667 Drupal.behaviors.stanford_date_timepicker = { 668 attach: function (context, settings) { 669 670 // @todo: Attach the timepicker to configured selector. 671 // $(".stanford-timepicker").timepicker({ 672 // controlType: 'select', 673 // timeFormat: 'hh:mm tt' 674 // }); 675 676 // Each time the page changes the field array is rebild as well as 677 // Drupal.settings... We need to add the pop up functionality back to 678 // those elements. 679 $.each(Drupal.settings.stanfordDateTimepicker, function(i, opts) { 680 681 // Add the timepicker to the time field. 682 var elem = $('#' + opts.id + ' ' + opts.selector, context).filter(":not(.su-proccessed)"); 683 elem.timepicker(opts.opt_settings); 684 elem.addClass('su-proccessed'); 685 686 // Add a yellow highlight to the time field on change. 687 elem.change(function(e) { 688 $(this).highlight(); 689 }); 690 691 }); 692 693 // Add a yellow highlight to the date field on change. 694 $('.stanford-datepicker', context) 695 .filter(":not(.su-proccessed)") 696 .change(function(e){ 697 $(this).highlight(); 698 }) 699 .addClass('su-proccessed'); 700 701 } 702 }; 703 704/** 705 * A quick yellow highlight that fades out. 706 */ 707$.fn.highlight = function() { 708 709 $(this).each(function () { 710 711 var el = $(this); 712 el.css({position:"relative",zIndex:'1',background:"transparent"}); 713 714 $("<div/>") 715 .width(el.outerWidth()) 716 .height(el.outerHeight()) 717 .css({ 718 "position": "absolute", 719 "left": el.offset().left, 720 "top": el.offset().top, 721 "background-color": "#ffff99", 722 "opacity": ".7", 723 "z-index": "0" 724 }).appendTo('body').fadeOut(1000).queue(function () { $(this).remove(); }); 725 el.focus(); 726 }); 727 728}; 729 730})(jQuery); 731;
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.