1/* 2InfCloud - the open source CalDAV/CardDAV Web Client 3Copyright (C) 2011-2015 4 Jan Mate <[email protected]> 5 Andrej Lezo <[email protected]> 6 Matej Mihalik <[email protected]> 7 8This program is free software: you can redistribute it and/or modify 9it under the terms of the GNU Affero General Public License as 10published by the Free Software Foundation, either version 3 of the 11License, or (at your option) any later version. 12 13This program is distributed in the hope that it will be useful, 14but WITHOUT ANY WARRANTY; without even the implied warranty of 15MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16GNU Affero General Public License for more details. 17 18You should have received a copy of the GNU Affero General Public License 19along with this program. If not, see <http://www.gnu.org/licenses/>. 20*/ 21 22 23// NOTE: see readme.txt before you start to configure this client! 24 25 26// NOTE: do not forget to execute the cache_update.sh script every time you 27// update this configuration file or any other files (otherwise your browser 28// will use the previous version of files stored in HTML5 cache). Alternatively 29// you can update the cache.manifest manually - edit the second line beginning 30// with "#V 20" to anything else (this file simple needs "some" change) 31 32 33// Supported setup types (use ONE of them): 34// a.) globalAccountSettings => username and password is hardcoded 35// in config.js, automatic login without the login screen 36// - advantages: fast login process = no username/password is required 37// - disadvantages: username/password is visible in your config.js, so 38// this type of setup is recommended ONLY for intranet/home users 39// b.) globalNetworkCheckSettings => standard setup with login screen 40// - advantages: username/password is required (no visible 41// username/password in config.js) 42// - disadvantages: if a user enters wrong username/password then 43// the browser will show authentication popup window (it is NOT 44// possible to disable it in JavaScript; see the next option) 45// c.) globalNetworkAccountSettings => advanced setup with login screen 46// - advantages: no authentication popup if you enter wrong username/ 47// password, dynamic XML configuration generator (you can generate 48// different configurations for your users /by modifying the "auth" 49// module configuration or the PHP code itself/) 50// - disadvantages: requires PHP >= 5.3 and additional configuration, 51// only basic http authentication is supported => always use https! 52// 53// 54// What is a "principal URL"? => Check you server documentation! 55// - "principal URL" is NOT "collection URL" 56// - this client automatically detects collections for "principal URL" 57// - PROPER "principal URL" looks like: 58// https://server.com:8443/principals/users/USER/ 59// https://server.com:8443/caldav.php/USER/ 60// - INVALID principal URL looks like: 61// https://server.com:8443/principals/users/USER/collection/ 62// => this is a collection URL 63// https://server.com:8443/caldav.php/USER/collection/ 64// => this is a collection URL 65// https://server.com:8443/principals/users/USER 66// => missing trailing '/' 67// https://server.com:8443/caldav.php/USER 68// => missing trailing '/' 69// /caldav.php/USER/ 70// => relative URL instead of full URL 71// 72// 73// List of properties used in globalAccountSettings, globalNetworkCheckSettings 74// and globalNetworkAccountSettings variables (+ in the "auth" module): 75// - href 76// Depending on the setup type set the value to: 77// a.) globalAccountSettings: full "principal URL" 78// b.) globalNetworkCheckSettings: "principal URL" WITHOUT the "USER/" part 79// c.) globalNetworkAccountSettings: "full URL" to the "auth" directory 80// This property is supported in: 81// globalAccountSettings 82// globalNetworkCheckSettings 83// globalNetworkAccountSettings 84// - userAuth 85// - userName 86// Set the username you want to login. 87// - userPassword 88// Set the password for the given username. 89// This property is supported in: 90// globalAccountSettings 91// - timeOut 92// This option sets the timeout for jQuery .ajax call (in miliseconds). 93// Example: 94// timeOut: 90000 95// This property is supported in: 96// globalAccountSettings 97// globalNetworkCheckSettings 98// globalNetworkAccountSettings 99// - lockTimeOut
100// NOTE: used only if server supports LOCK requests 101// This option sets the LOCK timeout value if resource locking 102// is used (in miliseconds). 103// Example: 104// lockTimeOut: 10000 105// This property is supported in: 106// globalAccountSettings 107// globalNetworkCheckSettings 108// globalNetworkAccountSettings (available in auth module only) 109// - checkContentType 110// This option enables a content-type checking for server response. 111// If enabled then only objects with proper content-type are inserted 112// into the interface. 113// If you cannot see data in the interface you may try to disable it (useful 114// if your server returns wrong value in "propstat/prop/getcontenttype"). 115// If undefined then content-type checking is enabled. 116// Examples: 117// checkContentType: true 118// checkContentType: false 119// This property is supported in: 120// globalAccountSettings 121// globalNetworkCheckSettings 122// globalNetworkAccountSettings (available in auth module only) 123// - settingsAccount 124// NOTE: server support for custom DAV properties is REQUIRED! 125// This option sets the account where the client properties such as: 126// loaded collections, enabled collections, ... are saved during 127// the logout and resource/collection synchronisation 128// NOTE: set it to true ONLY for ONE account! 129// Examples: 130// settingsAccount: true 131// settingsAccount: false 132// This property is supported in: 133// globalAccountSettings 134// globalNetworkCheckSettings 135// globalNetworkAccountSettings (available in auth module only) 136// - delegation 137// NOTE: server support for this functionality is REQUIRED! 138// This option allows you to load delegated (shared) collections. 139// If set to true (default) then delegation functionality is enabled, 140// and the interface allows you to load delegated collections. 141// If false then delegation functionality is completely disabled. 142// Examples: 143// delegation: true 144// delegation: false 145// This property is supported in: 146// globalAccountSettings 147// globalNetworkCheckSettings 148// globalNetworkAccountSettings (available in auth module only) 149// - additionalResources 150// This options sets the list of additional resources (e.g. shared resources 151// accessible by all users). If the server supports delegation (see 152// the delegation option above) there is no reason to use this option! 153// Supported values: 154// - array of URL encoded resource names (not collections), such as: 155// 'company' 156// 'shared_resource' 157// If empty (default) or undefined then shared resources are not loaded 158// using this option, but may be loaded using the delegation option. 159// Examples: 160// additionalResources=[] 161// additionalResources=['public', 'shared_resource'] 162// This property is supported in: 163// globalNetworkCheckSettings 164// - hrefLabel 165// This option sets the server name in the resource header (useful if 166// you want to see custom resource header above the collections). 167// You can use the following variables in the value: 168// %H = full hostname (including the port number) 169// %h = full hostname (without the port number) 170// %D = full domain name 171// %d = only the first and second level domain 172// %P = principal name 173// %p = principal name without the @domain.com part (if present) 174// %U = logged user name 175// %u = logged user name without the @domain.com part (if present) 176// If undefined, empty or or null then '%d/%p [%u]' is used. 177// Examples: 178// hrefLabel: '%d/%p [%u]' 179// hrefLabel: '%D/%u' 180// This property is supported in: 181// globalAccountSettings 182// globalNetworkCheckSettings 183// globalNetworkAccountSettings (available in auth module only) 184// - forceReadOnly 185// This option sets the list of collections as "read-only". 186// Supported values: 187// - true 188// all collections will be "read-only" 189// - array of URL encoded 190// - collections, such as: 191// '/caldav.php/user/calendar/' 192// '/caldav.php/user%40domain.com/calendar/' 193// - regexes, such as: 194// new RegExp('^/caldav.php/user/calendar[0-9]/$', 'i') 195// specifies the list of collections marked as "read-only" 196// If null (default) or undefined then server detected privileges are used. 197// Examples: 198// forceReadOnly: null 199// forceReadOnly: true 200// forceReadOnly: ['/caldav.php/user/calendar/', 201// '/caldav.php/user/calendar2/'] 202// forceReadOnly: [new RegExp('^/.*/user/calendar[0-9]/$', 'i')] 203// This property is supported in: 204// globalAccountSettings 205// globalNetworkCheckSettings 206// globalNetworkAccountSettings (available in auth module only, with 207// different syntax for regexes)
208// - ignoreAlarms 209// This option sets list of calendar collections with disabled 210// alarm functionality. 211// Supported values: 212// - true 213// alarm functionality is disabled for all collections 214// - array of URL encoded 215// - collections, such as: 216// '/caldav.php/user/calendar/' 217// '/caldav.php/user%40domain.com/calendar/' 218// - regexes, such as: 219// new RegExp('^/caldav.php/user/calendar[0-9]/$', 'i') 220// specifies the list of collections with disabled alarm functionality. 221// If false (default) or undefined then alarm functionality is enabled 222// for all collections. 223// Examples: 224// ignoreAlarms: true 225// ignoreAlarms: ['/caldav.php/user/calendar/', 226// '/caldav.php/user/calendar2/'] 227// ignoreAlarms: [new RegExp('^/.*/user/calendar[0-9]/$', 'i')] 228// This property is supported in: 229// globalAccountSettings 230// globalNetworkCheckSettings 231// globalNetworkAccountSettings (available in auth module only, with 232// different syntax for regexes) 233// - backgroundCalendars 234// This options defines a list of background calendars. If there is 235// at least one event defined for the given day in a background calendar, 236// the background color for that day will be pink/light-red. 237// Supported values: 238// - array of URL encoded 239// - collections, such as: 240// '/caldav.php/user/calendar/' 241// '/caldav.php/user%40domain.com/calendar/' 242// - regexes, such as: 243// new RegExp('^/caldav.php/user/calendar[0-9]/$', 'i') 244// specifies the list of background calendar collections. 245// Examples: 246// backgroundCalendars: ['/caldav.php/user/calendar/', 247// '/caldav.php/user/calendar2/'] 248// backgroundCalendars: [new RegExp('^/.*/user/calendar[0-9]/$', 'i')] 249// This property is supported in: 250// globalAccountSettings 251// globalNetworkCheckSettings 252// globalNetworkAccountSettings (available in auth module only, with 253// different syntax for regexes) 254// Special options not present in configuration examples: 255// NOTE: use ONLY if you know what are you doing! 256// - crossDomain 257// This option sets the crossDomain for jQuery .ajax call. If null (default) 258// then the value is autodetected /and the result is shown in the console/ 259// - withCredentials 260// This option sets the withCredentials for jQuery .ajax call. The default 261// value is false and there is NO REASON to change it to true! 262// NOTE: if true, Access-Control-Allow-Origin "*" (CORS header) not works! 263 264 265// globalAccountSettings 266// Use this option if you want to use automatic login (without a login 267// screen) with hardcoded username/password in config.js. Otherwise use 268// globalNetworkCheckSettings or globalNetworkAccountSettings (see below). 269// NOTE: if this option is used the value must be an array of object(s). 270// List of properties used in globalAccountSettings variable: 271// - href 272// Set this option to the full "principal URL". 273// NOTE: the last character in the value must be '/' 274// - userAuth 275// - userName 276// Set the username you want to login. 277// - userPassword 278// Set the password for the given username. 279// NOTE: for description of other properties see comments at the beginning 280// of this file. 281// NOTE: for minimal/fast setup you need to set only the href and userAuth 282// options. It is safe/recommended to keep the remaining options unchanged! 283// Example: 284//var globalAccountSettings=[ 285// { 286// href: 'https://server1.com:8443/caldav.php/USERNAME1/', 287// userAuth: 288// { 289// userName: 'USERNAME1', 290// userPassword: 'PASSWORD1' 291// }, 292// timeOut: 90000, 293// lockTimeOut: 10000, 294// checkContentType: true, 295// settingsAccount: true, 296// delegation: true, 297// hrefLabel: null, 298// forceReadOnly: null, 299// ignoreAlarms: false, 300// backgroundCalendars: [] 301// }, 302// { 303// href: 'https://server2.com:8443/caldav.php/USERNAME2/', 304// ... 305// ... 306// } 307//]; 308 309 310// globalNetworkCheckSettings 311// Use this option if you want to use standard login screen without 312// hardcoded username/password in config.js (used by globalAccountSettings). 313// NOTE: if this option is used the value must be an object. 314// List of properties used in globalAccountSettings variable: 315// - href 316// Set this option to the "principal URL" WITHOUT the "USERNAME/" 317// part (this options uses the username from the login screen). 318// NOTE: the last character in the value must be '/' 319// NOTE: for description of other properties see comments at the beginning 320// of this file. 321// NOTE: for minimal/fast setup you need to set only the href option. It is 322// safe/recommended to keep the remaining options unchanged! 323// Example href values: 324// OS X server http example (see misc/readme_osx.txt for server setup): 325// href: 'http://osx.server.com:8008/principals/users/'
326// OS X server https example (see misc/readme_osx.txt for server setup): 327// href: 'https://osx.server.com:8443/principals/users/' 328// Cyrus server https example: 329// href: 'https://cyrus.server.com/dav/principals/user/' 330// Example: 331// Davical example which automatically detects the protocol, server name, 332// port, ... (client installed into Davical "htdocs" subdirectory; 333// works "out of the box", no additional setup required): 334var globalNetworkCheckSettings={ 335 href: location.protocol+'//'+location.hostname+ 336 (location.port ? ':'+location.port: '')+ 337 location.pathname.replace(RegExp('/+[^/]+/*(index\.html)?$'),'')+ 338 '/caldav.php/', 339 timeOut: 90000, 340 lockTimeOut: 10000, 341 checkContentType: true, 342 settingsAccount: true, 343 delegation: true, 344 additionalResources: [], 345 hrefLabel: null, 346 forceReadOnly: null, 347 ignoreAlarms: false, 348 backgroundCalendars: [] 349} 350 351 352// globalNetworkAccountSettings 353// Try this option ONLY if you have working setup using 354// globalNetworkCheckSettings and want to fix the authentication popup 355// window problem (if invalid username/password is entered)! 356// If you use this option then your browser sends username/password to the PHP 357// "auth" module ("auth" directory) instead of the DAV server itself. 358// The "auth" module then validates your username/password against your server, 359// and if the authentication is successful, then it sends back a configuration 360// XML (requires additional configuration). The resulting XML is handled 361// IDENTICALLY as the globalAccountSettings configuration option. 362// NOTE: for the "auth" module configuration see readme.txt! 363// NOTE: this option invokes a login screen and disallows access until 364// the client gets correct XML configuration file from the server! 365// List of properties used in globalNetworkAccountSettings variable: 366// - href 367// Set this option to the "full URL" of the "auth" directory 368// NOTE: the last character in the value must be '/' 369// NOTE: for description of other properties see comments at the beginning 370// of this file. 371// Example href values: 372// href: 'https://server.com/client/auth/' 373// Example: 374// Use this configuration if the "auth" module is located in the client 375// installation subdirectory (default): 376//var globalNetworkAccountSettings={ 377// href: location.protocol+'//'+location.hostname+ 378// (location.port ? ':'+location.port : '')+ 379// location.pathname.replace(RegExp('index\.html$'),'')+ 380// 'auth/', 381// timeOut: 30000 382//}; 383 384 385// globalUseJqueryAuth 386// Use jQuery .ajax() auth or custom header for HTTP basic auth (default). 387// Set this option to true if your server uses digest auth (note: you may 388// experience auth popups on some browsers). 389// If undefined (or empty), custom header for HTTP basic auth is used. 390// Example: 391//var globalUseJqueryAuth=false; 392 393 394// globalBackgroundSync 395// Enable background synchronization even if the browser window/tab has no 396// focus. 397// If false, synchronization is performed only if the browser window/tab 398// is focused. If undefined or not false, then background sync is enabled. 399// Example: 400var globalBackgroundSync=true; 401 402 403// globalSyncResourcesInterval 404// This option defines how often (in miliseconds) are resources/collections 405// asynchronously synchronized. 406// Example: 407var globalSyncResourcesInterval=120000; 408 409 410// globalEnableRefresh 411// This option enables or disables the manual synchronization button in 412// the interface. If this option is enabled then users can perform server 413// synchronization manually. Enabling this option may cause high server 414// load (even DDOS) if users will try to manually synchronize data too 415// often (instead of waiting for the automatic synchronization). 416// If undefined or false, the synchronization button is disabled. 417// NOTE: enable this option only if you really know what are you doing! 418// Example: 419var globalEnableRefresh=false; 420 421 422// globalEnableKbNavigation 423// Enable basic keyboard navigation using arrow keys? 424// If undefined or not false, keyboard navigation is enabled. 425// Example: 426var globalEnableKbNavigation=true; 427 428 429// globalSettingsType 430// Where to store user settings such as: active view, enabled/selected 431// collections, ... (the client store them into DAV property on the server). 432// NOTE: not all servers support storing DAV properties (some servers support 433// only subset /or none/ of these URLs). 434// Supported values: 435// - 'principal-URL', '', null or undefined (default) => settings are stored 436// to principal-URL (recommended for most servers)
437// - 'addressbook-home-set' => settings are are stored to addressbook-home-set 438// - 'calendar-home-set' => settings are stored to calendar-home-set 439// Example: 440//var globalSettingsType=''; 441 442 443// globalCrossServerSettingsURL 444// Settings such as enabled/selected collections are stored on the server 445// (see the previous option) in form of full URL 446// (e.g.: https://user@server:port/principal/collection/), but even if this 447// approach is "correct" (you can use the same principal URL with multiple 448// different logins, ...) it causes a problem if your server is accessible 449// from multiple URLs (e.g. http://server/ and https://server/). If you want 450// to store only the "principal/collection/" part of the URL (instead of the 451// full URL) then enable this option. 452// Example: 453//var globalCrossServerSettingsURL=false; 454 455 456// globalInterfaceLanguage 457// Default interface language (note: this option is case sensitive): 458// cs_CZ (ÄeÅ¡tina [Czech]) 459// da_DK (Dansk [Danish]; thanks Niels Bo Andersen) 460// de_DE (Deutsch [German]; thanks Marten Gajda and Thomas Scheel) 461// en_US (English [English/US]) 462// es_ES (Español [Spanish]; thanks Damián Vila) 463// fr_FR (Français [French]; thanks John Fischer) 464// it_IT (Italiano [Italian]; thanks Luca Ferrario) 465// ja_JP (æ¥æ¬èª [Japan]; thanks Muimu Nakayama) 466// hu_HU (Magyar [Hungarian]) 467// nl_NL (Nederlands [Dutch]; thanks Johan Vromans) 468// sk_SK (SlovenÄina [Slovak]) 469// tr_TR (Türkçe [Turkish]; thanks Selcuk Pultar) 470// ru_RU (Ð ÑÑÑкий [Russian]; thanks ÐлекÑÐ°Ð½Ð´Ñ Ð¡Ð¸Ð¼Ð¾Ð½Ð¾Ð²) 471// uk_UA (УкÑаÑнÑÑка [Ukrainian]; thanks Serge Yakimchuck) 472// zh_CN (ä¸å½ [Chinese]; thanks Fandy) 473// Example: 474var globalInterfaceLanguage='en_US'; 475 476 477// globalInterfaceCustomLanguages 478// If defined and not empty then only languages listed here are shown 479// at the login screen, otherwise (default) all languages are shown 480// NOTE: values in the array must refer to an existing localization 481// (see the option above) 482// Example: 483// globalInterfaceCustomLanguages=['en_US', 'sk_SK']; 484var globalInterfaceCustomLanguages=[]; 485 486 487// globalSortAlphabet 488// Use JavaScript localeCompare() or custom alphabet for data sorting. 489// Custom alphabet is used by default because JavaScript localeCompare() 490// not supports collation and often returns "wrong" result. If set to null 491// then localeCompare() is used. 492// Example: 493// var globalSortAlphabet=null; 494var globalSortAlphabet=' 0123456789'+ 495 'AÃÃÃÃÃÃà ÄBCÃÄÄDÄEÃÃÃÃÄÄÄÄFGÄHIÃÃÃİÃĪĮJKLÅĹĽMNÅÃÅOÃÃÃÃÅÅÃÃÅ'+ 496 'PQRÅÅSÅÅ ÈÈÅÅáºTŤÈÈŢţUÃÃÃÃŰŮŪVWXYßZŹŻŽ'+ 497 'aà áâäæãåÄbcçÄÄdÄeèéêëÄÄÄÄfgÄhiìÃîïīįıjklÅĺľmnÅñÅoòóôöÅÅøõÅ'+ 498 'pqrÅÅsÅÅ¡ÃtÅ¥uùúûüűůūvwxyýÿzźżžÐÐÐÐÒÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐРСТУФХЦЧШЩЮЯ'+ 499 'ЬабвгÒдеÑжзиÑÑйклмнопÑÑÑÑÑÑ ÑÑÑÑÑÑÑ'; 500 501 502// globalSearchTransformAlphabet 503// To support search without diacritics (e.g. search for 'd' will find: 'Ä', 'Ä') 504// it is required to define something like "character equivalence". 505// key = regex text, value = search character 506// Example: 507var globalSearchTransformAlphabet={ 508 '[Ãà ÃáÃâÃäÃæÃãà åÄÄ]': 'a', '[ÃçÄÄÄÄ]': 'c', '[ÄÄ]': 'd', 509 '[ÃèÃéÃêÃëÄÄÄÄÄÄÄÄ]': 'e', '[ÄÄ]': 'g', '[ÃìÃÃÃîİıÃïĪīĮį]': 'i', 510 '[ÅÅĹ弾]': 'l', '[ÅÅÃñÅÅ]': 'n', '[ÃòÃóÃôÃöÅÅÅÅÃøÃõÅÅ]': 'o', 511 '[ÅÅÅÅ]': 'r', '[ÅÅÅ Å¡ÈÈÅÅáºÃ]': 's', '[ŤťÈÈŢţ]': 't', 512 '[ÃùÃúÃûÃüŰűŮůŪū]': 'u', '[ÃýŸÿ]': 'y', '[ŹźŻżŽž]': 'z' 513}; 514 515// globalResourceAlphabetSorting 516// If more than one resource (server account) is configured, sort the 517// resources alphabetically? 518// Example: 519var globalResourceAlphabetSorting=true; 520 521 522// globalNewVersionNotifyUsers 523// Update notification will be shown only to users with login names defined 524// in this array. 525// If undefined (or empty), update notifications will be shown to all users. 526// Example: 527// globalNewVersionNotifyUsers=['admin', 'peter']; 528var globalNewVersionNotifyUsers=[]; 529 530 531// globalDatepickerFormat 532// Set the datepicker format (see 533// http://docs.jquery.com/UI/Datepicker/formatDate for valid values). 534// NOTE: date format is predefined for each localization - use this option 535// ONLY if you want to use custom date format (instead of the localization 536// predefined one). 537// Example: 538//var globalDatepickerFormat='dd.mm.yy'; 539 540 541// globalDatepickerFirstDayOfWeek 542// Set the datepicker first day of the week: Sunday is 0, Monday is 1, etc. 543// Example: 544var globalDatepickerFirstDayOfWeek=1; 545 546 547// globalHideInfoMessageAfter 548// How long are information messages (such as: success, error) displayed 549// (in miliseconds). 550// Example: 551var globalHideInfoMessageAfter=1800; 552 553 554// globalEditorFadeAnimation 555// Set the editor fade in/out animation duration when editing or saving data 556// (in miliseconds). 557// Example: 558var globalEditorFadeAnimation=666; 559 560 561 562 563// ******* CalDAV (CalDavZAP) related settings ******* // 564 565// globalEventStartPastLimit, globalEventStartFutureLimit, globalTodoPastLimit 566// Number of months pre-loaded from past/future in advance for calendars 567// and todo lists (if null then date range synchronization is disabled). 568// NOTE: interval synchronization is used only if your server supports 569// sync-collection REPORT (e.g. DAViCal). 570// NOTE: if you experience problems with data loading and your server has 571// no time-range filtering support set these variables to null. 572// Example: 573var globalEventStartPastLimit=3; 574var globalEventStartFutureLimit=3; 575var globalTodoPastLimit=1; 576 577 578// globalLoadedCalendarCollections 579// This option sets the list of calendar collections (down)loaded after login. 580// If empty then all calendar collections for the currently logged user are 581// loaded. 582// NOTE: settings stored on the server (see settingsAccount) overwrite this 583// option. 584// Example: 585var globalLoadedCalendarCollections=[]; 586 587 588// globalLoadedTodoCollections 589// This option sets the list of todo collections (down)loaded after login. 590// If empty then all todo collections for the currently logged user are loaded. 591// NOTE: settings stored on the server (see settingsAccount) overwrite this 592// option. 593// Example: 594var globalLoadedTodoCollections=[]; 595 596 597// globalActiveCalendarCollections 598// This options sets the list of calendar collections checked (enabled 599// checkbox => data visible in the interface) by default after login. 600// If empty then all loaded calendar collections for the currently logged 601// user are checked. 602// NOTE: only already (down)loaded collections can be checked (see 603// the globalLoadedCalendarCollections option). 604// NOTE: settings stored on the server (see settingsAccount) overwrite this 605// option. 606// Example: 607var globalActiveCalendarCollections=[]; 608 609 610// globalActiveTodoCollections 611// This options sets the list of todo collections checked (enabled 612// checkbox => data visible in the interface) by default after login. 613// If empty then all loaded todo collections for the currently logged 614// user are checked. 615// NOTE: only already (down)loaded collections can be checked (see 616// the globalLoadedTodoCollections option). 617// NOTE: settings stored on the server (see settingsAccount) overwrite this 618// option. 619// Example: 620var globalActiveTodoCollections=[]; 621 622 623// globalCalendarSelected 624// This option sets which calendar collection will be pre-selected 625// (if you create a new event) by default after login. 626// The value must be URL encoded path to a calendar collection, 627// for example: 'USER/calendar/' 628// If empty or undefined then the first available calendar collection 629// is selected automatically. 630// NOTE: only already (down)loaded collections can be pre-selected (see 631// the globalLoadedCalendarCollections option). 632// NOTE: settings stored on the server (see settingsAccount) overwrite this 633// option. 634// Example: 635//var globalCalendarSelected=''; 636 637 638// globalTodoCalendarSelected 639// This option sets which todo collection will be pre-selected 640// (if you create a new todo) by default after login. 641// The value must be URL encoded path to a todo collection, 642// for example: 'USER/todo_calendar/' 643// If empty or undefined then the first available todo collection 644// is selected automatically. 645// NOTE: only already (down)loaded collections can be pre-selected (see 646// the globalLoadedTodoCollections option). 647// NOTE: settings stored on the server (see settingsAccount) overwrite this 648// option. 649// Example: 650//var globalTodoCalendarSelected=''; 651 652 653// globalActiveView 654// This options sets the default fullcalendar view option (the default calendar 655// view after the first login). 656// Supported values: 657// - 'month' 658// - 'multiWeek' 659// - 'agendaWeek' 660// - 'agendaDay' 661// NOTE: we use custom and enhanced version of fullcalendar! 662// Example: 663var globalActiveView='multiWeek'; 664 665 666// globalOpenFormMode 667// Open new event form on 'single' or 'double' click. 668// If undefined or not 'double', then 'single' is used. 669// Example: 670var globalOpenFormMode='double'; 671 672 673// globalTodoListFilterSelected 674// This options sets the list of filters in todo list that are selected 675// after login. 676// Supported options: 677// - 'filterAction' 678// - 'filterProgress' (available only if globalAppleRemindersMode is disabled) 679// - 'filterCompleted' 680// - 'filterCanceled' (available only if globalAppleRemindersMode is disabled) 681// NOTE: settings stored on the server (see settingsAccount) overwrite this 682// option. 683// Example: 684var globalTodoListFilterSelected=['filterAction', 'filterProgress']; 685 686 687// globalCalendarStartOfBusiness, globalCalendarEndOfBusiness 688// These options set the start and end of business hours with 0.5 hour 689// precision. Non-business hours are faded out in the calendar interface. 690// If both variables are set to the same value then no fade out occurs. 691// Example: 692var globalCalendarStartOfBusiness=8; 693var globalCalendarEndOfBusiness=17; 694 695 696// globalDefaultEventDuration 697// This option sets the default duration (in minutes) for newly created events. 698// If undefined or null, globalCalendarEndOfBusiness value will be taken as 699// a default end time instead. 700// Example: 701var globalDefaultEventDuration=120; 702 703 704// globalAMPMFormat 705// This option enables to use 12 hours format (AM/PM) for displaying time. 706// NOTE: time format is predefined for each localization - use this option 707// ONLY if you want to use custom time format (instead of the localization 708// predefined one). 709// Example: 710//var globalAMPMFormat=false; 711 712 713// globalTimeFormatBasic 714// This option defines the time format information for events in month and 715// multiweek views. If undefined or null then default value is used. 716// If defined as empty string no time information is shown in these views. 717// See http://arshaw.com/fullcalendar/docs/utilities/formatDate/ for exact 718// formating rules. 719// Example: 720//var globalTimeFormatBasic=''; 721 722 723// globalTimeFormatAgenda 724// This option defines the time format information for events in day and 725// week views. If undefined or null then default value is used. 726// If defined as empty string no time information is shown in these views. 727// See http://arshaw.com/fullcalendar/docs/utilities/formatDate/ for exact 728// formating rules. 729// Example: 730//var globalTimeFormatAgenda=''; 731 732 733// globalDisplayHiddenEvents 734// This option defined whether events from unechecked calendars are displayed 735// with certain transparency (true) or completely hidden (false).
736// Example: 737var globalDisplayHiddenEvents=false; 738 739 740// globalTimeZoneSupport 741// This option enables timezone support in the client. 742// NOTE: timezone cannot be specified for all-day events because these don't 743// have start and end time. 744// If this option is disabled then local time is used. 745// Example: 746var globalTimeZoneSupport=true; 747 748 749// globalTimeZone 750// If timezone support is enabled, this option sets the default timezone. 751// See timezones.js or use the following command to get the list of supported 752// timezones (defined in timezones.js): 753// grep "'[^']\+': {" timezones.js | sed -Ee "s#(\s*'|':\s*\{)##g" 754// Example: 755var globalTimeZone='Europe/Berlin'; 756 757 758// globalTimeZonesEnabled 759// This option sets the list of available timezones in the interface (for the 760// list of supported timezones see the comment for the previous configuration 761// option). 762// NOTE: if there is at least one event/todo with a certain timezone defined, 763// that timezone is enabled (even if it is not present in this list). 764// Example: 765// var globalTimeZonesEnabled=['America/New_York', 'Europe/Berlin']; 766var globalTimeZonesEnabled=[]; 767 768 769// globalRewriteTimezoneComponent 770// This options sets whether the client will enhance/replace (if you edit an 771// event or todo) the timezone information using the official IANA timezone 772// database information (recommended). 773// Example: 774var globalRewriteTimezoneComponent=true; 775 776 777// globalRemoveUnknownTimezone 778// This options sets whether the client will remove all non-standard timezone 779// names from events and todos (if you edit an event or todo) 780// (e.g.: /freeassociation.sourceforge.net/Tzfile/Europe/Vienna) 781// Example: 782var globalRemoveUnknownTimezone=false; 783 784 785// globalShowHiddenAlarms 786// This option sets whether the client will show alarm notifications for 787// unchecked calendars. If this option is enabled and you uncheck a calendar 788// in the calendar list, alarm notifications will be temporary disabled for 789// unchecked calendar(s). 790// Example: 791var globalShowHiddenAlarms=false; 792 793 794// globalIgnoreCompletedOrCancelledAlarms 795// This options sets whether the client will show alarm notifications for 796// already completed or cancelled todos. If enabled then alarm notification 797// for completed and cancelled todos are disabled. 798// Example: 799var globalIgnoreCompletedOrCancelledAlarms=true; 800 801 802// globalMozillaSupport 803// Mozilla automatically treats custom repeating event calculations as if 804// the start day of the week is Monday, despite what day is chosen in settings. 805// Set this variable to true to use the same approach, ensuring compatible 806// event rendering in special cases. 807// Example: 808var globalMozillaSupport=false; 809 810 811// globalCalendarColorPropertyXmlns 812// This options sets the namespace used for storing the "calendar-color" 813// property by the client. 814// If true, undefined (or empty) "http://apple.com/ns/ical/" is used (Apple 815// compatible). If false, then the calendar color modification functionality 816// is completely disabled. 817// Example: 818//var globalCalendarColorPropertyXmlns=true; 819 820 821// globalWeekendDays 822// This option sets the list of days considered as weekend days (these 823// are faded out in the calendar interface). Non-weekend days are automatically 824// considered as business days. 825// Sunday is 0, Monday is 1, etc. 826// Example: 827var globalWeekendDays=[0, 6]; 828 829 830// globalAppleRemindersMode 831// If this option is enabled then then client will use the same approach 832// for handling repeating reminders (todos) as Apple. It is STRONGLY 833// recommended to enabled this option if you use any Apple clients for 834// reminders (todos). 835// Supported options: 836// - 'iOS6' 837// - 'iOS7' 838// - true (support of the latest iOS version - 'iOS8') 839// - false 840// If this option is enabled: 841// - RFC todo support is SEVERELY limited and the client mimics the behaviour 842// of Apple Reminders.app (to ensure maximum compatibility) 843// - when a single instance of repeating todo is edited, it becomes an 844// autonomous non-repeating todo with NO relation to the original repeating 845// todo 846// - capabilities of repeating todos are limited - only the first instance 847// is ever visible in the interface 848// - support for todo DTSTART attribute is disabled 849// - support for todo STATUS attribute other than COMPLETED and NEEDS-ACTION 850// is disabled 851// - [iOS6 only] support for LOCATION and URL attributes is disabled 852// Example: 853var globalAppleRemindersMode=true; 854 855 856// globalSubscribedCalendars 857// This option specifies a list of remote URLs to ics files (e.g.: used 858// for distributing holidays information). Subscribed calendars are 859// ALWAYS read-only. Remote servers where ics files are hosted MUST 860// return proper CORS headers (see readme.txt) otherwise this functionality 861// will not work! 862// NOTE: subsribed calendars are NOT "shared" calendars. For "shared" 863// calendars see the delegation option in globalAccountSettings, 864// globalNetworkCheckSettings and globalNetworkAccountSettings. 865// List of properties used in globalSubscribedCalendars variable: 866// - hrefLabel 867// This options defines the header string above the subcsribed calendars. 868// - calendars 869// This option specifies an array of remote calendar objects with the 870// following properties: 871// - href 872// Set this option to the "full URL" of the remote calendar 873// - userAuth 874// NOTE: keep empty if remote authentication is not required! 875// - userName 876// Set the username you want to login. 877// - userPassword 878// Set the password for the given username. 879// - typeList 880// Set the list of objects you want to process from remote calendars; 881// two options are available: 882// - 'vevent' (show remote events in the interface) 883// - 'vtodo' (show remote todos in the interface) 884// - ignoreAlarm 885// Set this option to true if you want to disable alarm notifications 886// from the remote calendar. 887// - displayName 888// Set this option to the name of the calendar you want to see
889// in the interface. 890// - color 891// Set the calendar color you want to see in the interface. 892// Example: 893//var globalSubscribedCalendars={ 894// hrefLabel: 'Subscribed', 895// calendars: [ 896// { 897// href: 'http://something.com/calendar.ics', 898// userAuth: { 899// userName: '', 900// userPassword: '' 901// }, 902// typeList: ['vevent', 'vtodo'], 903// ignoreAlarm: true, 904// displayName: 'Remote Calendar 1', 905// color: '#ff0000' 906// }, 907// { 908// href: 'http://calendar.com/calendar2.ics', 909// ... 910// ... 911// } 912// ] 913//}; 914 915 916 917// ******* CardDAV (CardDavMATE) related settings ******* // 918 919 920// globalLoadedAddressbookCollections 921// This option sets the list of addressbook collections (down)loaded after 922// login. If empty then all addressbook collections for the currently logged 923// user are loaded. 924// NOTE: settings stored on the server (see settingsAccount) overwrite this 925// option. 926// Example: 927var globalLoadedAddressbookCollections=[]; 928 929 930// globalActiveAddressbookCollections 931// This options sets the list of addressbook collections checked (enabled 932// checkbox => data visible in the interface) by default after login. 933// If empty then all loaded addressbook collections for the currently logged 934// user are checked. 935// NOTE: only already (down)loaded collections can be checked (see 936// the globalLoadedAddressbookCollections option). 937// NOTE: settings stored on the server (see settingsAccount) overwrite this 938// option. 939// Example: 940var globalActiveAddressbookCollections=[]; 941 942 943// globalAddressbookSelected 944// This option sets which addressbook collection will be pre-selected 945// (if you create a new contact) by default after login. 946// The value must be URL encoded path to an addressbook collection, 947// for example: 'USER/addressbook/' 948// If empty or undefined then the first available addressbook collection 949// is selected automatically. 950// NOTE: only already (down)loaded collections can be pre-selected (see 951// the globalLoadedAddressbookCollections option). 952// NOTE: settings stored on the server (see settingsAccount) overwrite this 953// option. 954// Example: 955//var globalAddressbookSelected=''; 956 957 958// globalCompatibility 959// This options is reserved for various compatibility settings. 960// NOTE: if this option is used the value must be an object. 961// Currently there is only one supported option: 962// - anniversaryOutputFormat 963// Different clients use different (and incompatible) approach 964// to store anniversary date in vCards. Apple stores this attribute as: 965// itemX.X-ABDATE;TYPE=pref:2000-01-01\r\n 966// itemX.X-ABLabel:_$!<Anniversary>!$_\r\n' 967// other clients store this attribute as: 968// X-ANNIVERSARY:2000-01-01\r\n 969// Choose 'apple' or 'other' (lower case) for your 3rd party client 970// compatibility. You can chose both: ['apple', 'other'], but it may 971// cause many problems in the future, for example: duplicate anniversary 972// dates, invalid/old anniversary date in your clients, ...) 973// Examples: 974// anniversaryOutputFormat: ['other'] 975// anniversaryOutputFormat: ['apple', 'other'] 976// Example: 977var globalCompatibility={anniversaryOutputFormat: ['apple']}; 978 979 980// globalUriHandler{Tel,Email,Url,Profile} 981// These options set the URI handlers for TEL, EMAIL, URL and X-SOCIALPROFILE 982// vCard attributes. Set them to null (or comment out) to disable. 983// NOTE: for globalUriHandlerTel is recommended to use 'tel:', 'callto:' 984// or 'skype:'. The globalUriHandlerUrl value is used only if no URI handler 985// is defined in the URL. 986// NOTE: it is safe to keep these values unchanged! 987// Example: 988var globalUriHandlerTel='tel:'; 989var globalUriHandlerEmail='mailto:'; 990var globalUriHandlerUrl='http://'; 991var globalUriHandlerProfile={ 992 'twitter': 'http://twitter.com/%u', 993 'facebook': 'http://www.facebook.com/%u', 994 'flickr': 'http://www.flickr.com/photos/%u', 995 'linkedin': 'http://www.linkedin.com/in/%u', 996 'myspace': 'http://www.myspace.com/%u', 997 'sinaweibo': 'http://weibo.com/n/%u' 998}; 999 1000 1001// globalDefaultAddressCountry 1002// This option sets the default country for new address fields. 1003// See common.js or use the following command to get the list of 1004// all supported country codes (defined in common.js): 1005// grep -E "'[a-z]{2}':\s+\[" common.js | sed -Ee 's#^\s+|\s+\[\s+# #g' 1006// Example: 1007var globalDefaultAddressCountry='us'; 1008 1009 1010// globalAddressCountryEquivalence 1011// This option sets the processing of the country field specified 1012// in the vCard ADR attribute. 1013// By default the address field in vCard looks like: 1014// ADR;TYPE=WORK:;;1 Waters Edge;Baytown;LA;30314;USA\r\n 1015// what cause a problem, because the country field is a plain 1016// text and can contain any value, e.g.: 1017// USA 1018// United States of America 1019// US 1020// and because the address format can be completely different for 1021// each country, e.g.: 1022// China address example: 1023// [China] 1024// [Province] [City] 1025// [Street] 1026// [Postal] 1027// Japan address example: 1028// [Postal] 1029// [Prefecture] [County/City] 1030// [Further Divisions] 1031// [Japan] 1032// the client needs to correctly detect the country from the ADR 1033// attribute. Apple solved this problem by using: 1034// item1.ADR;TYPE=WORK:;;1 Waters Edge;Baytown;LA;30314;USA\r\n 1035// item1.X-ABADR:us\r\n 1036// where the second "related" attribute defines the country code 1037// for the ADR attribute. This client uses the same approach, but
1038// if the vCard is created by 3rd party clients and the X-ABADR 1039// is missing, it is possible to define additional "rules" for 1040// country matching. These rules are specied by the country code 1041// (for full list of country codes see the comment for pre previous 1042// option) and a case insensitive regular expression (which matches 1043// the plain text value in the country field). 1044// NOTE: if X-ABADR is not present and the country not matches any 1045// country defined in this option, then globalDefaultAddressCountry 1046// is used by default. 1047// Example: 1048var globalAddressCountryEquivalence=[ 1049 {country: 'de', regex: '^\\W*Deutschland\\W*$'}, 1050 {country: 'sk', regex: '^\\W*Slovensko\\W*$'} 1051]; 1052 1053 1054// globalAddressCountryFavorites 1055// This option defines the list of countries which are shown at the top 1056// of the country list in the interface (for full list of country codes 1057// see the comment for pre globalDefaultAddressCountry option). 1058// Example: 1059// var globalAddressCountryFavorites=['de','sk']; 1060var globalAddressCountryFavorites=[]; 1061 1062 1063// globalAddrColorPropertyXmlns 1064// This options sets the namespace used for storing the "addressbook-color" 1065// property by the client. 1066// If true, undefined (or empty) "http://inf-it.com/ns/ab/" is used. 1067// If false, then the addressbook color modification functionality 1068// is completely disabled, and addressbook colors in the interface are 1069// generated automatically. 1070// Example: 1071//var globalAddrColorPropertyXmlns=true; 1072 1073 1074// globalContactStoreFN 1075// This option specifies how the FN (formatted name) is stored into vCard. 1076// The value for this options must be an array of strings, that can contain 1077// the following variables: 1078// prefix 1079// last 1080// middle 1081// first 1082// suffix 1083// The string element of the array can contain any other characters (usually 1084// space or colon). Elements are added into FN only if the there is 1085// a variable match, for example if: 1086// last='Lastname' 1087// first='Firstname' 1088// middle='' (empty) 1089// and this option is set to: 1090// ['last', ' middle', ' first'] (space in the second and third element) 1091// the resulting value for FN will be: 'Lastname Firstname' and not 1092// 'Lastname Firstname' (two spaces), because the middle name is empty (so 1093// the second element is completely ignored /not added into FN/). 1094// NOTE: this attribute is NOT used by this client, and it is also NOT 1095// possible to directly edit it in the interface. 1096// Examples: 1097// var globalContactStoreFN=[' last', ' middle', ' first']; 1098// var globalContactStoreFN=['last', ', middle', ' ,first']; 1099var globalContactStoreFN=['prefix',' last',' middle',' first',' suffix']; 1100 1101 1102// globalGroupContactsByCompanies 1103// This options specifies how contacts are grouped in the interface. 1104// By default the interface looks like (very simple example): 1105// A 1106// Adams Adam 1107// Anderson Peter 1108// B 1109// Brown John 1110// Baker Josh 1111// if grouped by company/deparment the result is: 1112// Company A [Department X] 1113// Adams Adam 1114// Brown John 1115// Company B [Department Y] 1116// Anderson Peter 1117// Baker Josh 1118// If this option is set to true contacts are grouped by company/department, 1119// otherwise (default) contacts are grouped by letters of the alphabet. 1120// If undefined or not true, grouping by alphabet letters is used. 1121// NOTE: see also the globalCollectionDisplay option below. 1122var globalGroupContactsByCompanies=false; 1123 1124 1125// globalCollectionDisplay 1126// This options specifies how data columns in the contact list are displayed. 1127// 1128// NOTE: columns are displayed ONLY if there is enought horizontal place in 1129// the browser window (e.g. if you define 5 columns here, but your browser 1130// window is not wide enough, you will see only first 3 columns instead of 5). 1131// 1132// NOTE: see the globalContactDataMinVisiblePercentage option which defines the 1133// width for columns. 1134// 1135// The value must be an array of columns, where each column is represented by 1136// an object with the following properties: 1137// label => the value of this option is a string used as column header 1138// You can use the following localized variables in the label string: 1139// - {Name} 1140// - {FirstName} 1141// - {LastName} 1142// - {MiddleName} 1143// - {NickName} 1144// - {Prefix} 1145// - {Suffix} 1146// - {BirthDay} 1147// - {PhoneticLastName} 1148// - {PhoneticFirstName} 1149// - {JobTitle} 1150// - {Company} 1151// - {Department} 1152// - {Categories} 1153// - {NoteText} 1154// - {Address}, {AddressWork}, {AddressHome}, {AddressOther} 1155// - {Phone}, {PhoneWork}, {PhoneHome}, {PhoneCell}, {PhoneMain}, 1156// {PhonePager}, {PhoneFax}, {PhoneIphone}, {PhoneOther} 1157// - {Email}, {EmailWork}, {EmailHome}, {EmailMobileme}, {EmailOther} 1158// - {URL}, {URLWork}, {URLHome}, {URLHomepage}, {URLOther} 1159// - {Dates}, {DatesAnniversary}, {DatesOther} 1160// - {Related}, {RelatedManager}, {RelatedAssistant}, {RelatedFather},
1161// {RelatedMother}, {RelatedParent}, {RelatedBrother}, {RelatedSister}, 1162// {RelatedChild}, {RelatedFriend}, {RelatedSpouse}, {RelatedPartner}, 1163// {RelatedOther} 1164// - {Profile}, {ProfileTwitter}, {ProfileFacebook}, {ProfileFlickr}, 1165// {ProfileLinkedin}, {ProfileMyspace}, {ProfileSinaweibo} 1166// - {IM}, {IMWork}, {IMHome}, {IMMobileme}, {IMOther}, {IMAim}, {IMIcq}, 1167// {IMIrc}, {IMJabber}, {IMMsn}, {IMYahoo}, {IMFacebook}, {IMGadugadu}, 1168// {IMGoogletalk}, {IMQq}, {IMSkype} 1169// value => the value of this option is an array of format strings, or 1170// an object with the following properties: 1171// - company (used for company contacts) 1172// - personal (used for user contacts) 1173// where the value of these properties is an array of format strings used 1174// for company or user contacts (you can have different values in the same 1175// column for personal and company contacts). 1176// You can use the following simple variables in the format string: 1177// - {FirstName} 1178// - {LastName} 1179// - {MiddleName} 1180// - {NickName} 1181// - {Prefix} 1182// - {Suffix} 1183// - {BirthDay} 1184// - {PhoneticLastName} 1185// - {PhoneticFirstName} 1186// - {JobTitle} 1187// - {Company} 1188// - {Department} 1189// - {Categories} 1190// - {NoteText} 1191// You can also use parametrized variables, where the parameter is enclosed 1192// in square bracket. Paramatrized variables are useful to extract data 1193// such as home phone {Phone[type=home]}, extract the second phone number 1194// {Phone[:1]} (zero based indexing) or extract the third home phone number 1195// {Phone[type=home][:2]} from the vCard. 1196// NOTE: if the parametrized variable matches multiple items, e.g.: 1197// {Phone[type=work]} (if the contact has multiple work phones) then the 1198// first one is used! 1199// 1200// The following parametrized variables are supported (note: you can use 1201// all of them also without parameters /the first one will be used/): 1202// - {Address[type=XXX]} or {Address[:NUM]} or {Address[type=XXX][:NUM]} 1203// where supported values for XXX are: 1204// - work 1205// - home 1206// - other 1207// - any other custom value 1208// - {Phone[type=XXX]} or {Phone[:NUM]} or {Phone[type=XXX][:NUM]} 1209// where supported values for XXX are: 1210// - work 1211// - home 1212// - cell 1213// - main 1214// - pager 1215// - fax 1216// - iphone 1217// - other 1218// - any other custom value 1219// - {Email[type=XXX]} or {Email[:NUM]} or {Email[type=XXX][:NUM]} 1220// where supported values for XXX are: 1221// - work 1222// - home 1223// - mobileme 1224// - other 1225// - any other custom value 1226// - {URL[type=XXX]} or {URL[:NUM]} or {URL[type=XXX][:NUM]} 1227// where supported values for XXX are: 1228// - work 1229// - home 1230// - homepage 1231// - other 1232// - any other custom value 1233// - {Dates[type=XXX]} or {Dates[:NUM]} or {Dates[type=XXX][:NUM]} 1234// where supported values for XXX are: 1235// - anniversary 1236// - other 1237// - any other custom value 1238// - {Related[type=XXX]} or {Related[:NUM]} or {Related[type=XXX][:NUM]} 1239// where supported values for XXX are: 1240// - manager 1241// - assistant 1242// - father 1243// - mother 1244// - parent 1245// - brother 1246// - sister 1247// - child 1248// - friend 1249// - spouse 1250// - partner 1251// - other 1252// - any other custom value 1253// - {Profile[type=XXX]} or {Profile[:NUM]} or {Profile[type=XXX][:NUM]} 1254// where supported values for XXX are: 1255// - twitter 1256// - facebook 1257// - flickr 1258// - linkedin 1259// - myspace 1260// - sinaweibo 1261// - any other custom value 1262// - {IM[type=XXX]} or {IM[service-type=YYY]} or {IM[:NUM]} 1263// where supported values for XXX are: 1264// - work 1265// - home 1266// - mobileme 1267// - other 1268// - any other custom value 1269// and supported values for YYY are: 1270// - aim 1271// - icq 1272// - irc 1273// - jabber 1274// - msn 1275// - yahoo 1276// - facebook 1277// - gadugadu 1278// - googletalk 1279// - qq
1280// - skype 1281// - any other custom value 1282// 1283// NOTE: if you want to use the "any other custom value" option (for XXX 1284// or YYY above) you MUST double escape the following characters: 1285// =[]{}\ 1286// for example: 1287// - for profile type "=XXX=" use: '{Profile[type=\\=XXX\\=]}' 1288// - for profile type "\XXX\" use: '{Profile[type=\\\\XXX\\\\]}' 1289// 1290// NOTE: if you want to use curly brackets in the format string you must 1291// double escape it, e.g.: ['{Company}', '\\{{Department}\\}'] 1292// 1293// The format string (for the value option) is an array to allow full 1294// customization of the interface. For example if: 1295// value: ['{LastName} {MiddleName} {FirstName}'] 1296// and the person has no middle name, then the result in the column 1297// will be (without quotes): 1298// "Parker Peter" (note: two space characters) 1299// but if you use: 1300// value: ['{LastName}', ' {MiddleName}', ' {FirstName}'] 1301// then the result will be (without quotes): 1302// "Parker Peter" (note: only one space character) 1303// The reason is that only those elements of the array are appended 1304// into the result where non-empty substitution was performed (so the 1305// ' {MiddleName}' element in this case is ignored, because the person 1306// in the example above has no /more precisely has empty/ middle name). 1307// 1308// Examples: 1309// To specify two columns (named "Company" and "Department / LastName"), 1310// where the first will display the company name, and the second will display 1311// department for company contacts (with "Dep -" prefix), and lastname for 1312// personal contacts (with "Name -" prefix) use: 1313// var globalCollectionDisplay=[ 1314// { 1315// label: 'Company', 1316// value: ['{Company}'] 1317// }, 1318// { 1319// label: 'Department / LastName', 1320// value: { 1321// company: ['Dep - {Department}'], 1322// personal: ['Name - {LastName}'] 1323// } 1324// } 1325// ]; 1326// To specify 3 columns (named "Categories", "URL" and "IM"), where the first 1327// will display categories, second will display the third work URL, and third 1328// will display ICQ IM use: 1329// var globalCollectionDisplay=[ 1330// { 1331// label: 'Categories', 1332// value: ['{Categories}'] 1333// }, 1334// { 1335// label: 'URL', 1336// value: ['{URL[type=WORK][:2]}'] 1337// }, 1338// { 1339// label: 'IM', 1340// value: ['{IM[service-type=ICQ]}'] 1341// } 1342// ]; 1343// 1344// Recommended settings if globalGroupContactsByCompanies 1345// is set to false: 1346// var globalCollectionDisplay=[ 1347// { 1348// label: '{Name}', 1349// value: ['{LastName}', ' {MiddleName}', ' {FirstName}'] 1350// }, 1351// { 1352// label: '{Company} [{Department}]', 1353// value: ['{Company}', ' [{Department}]'] 1354// }, 1355// { 1356// label: '{JobTitle}', 1357// value: ['{JobTitle}'] 1358// }, 1359// { 1360// label: '{Email}', 1361// value: ['{Email[:0]}'] 1362// }, 1363// { 1364// label: '{Phone} 1', 1365// value: ['{Phone[:0]}'] 1366// }, 1367// { 1368// label: '{Phone} 2', 1369// value: ['{Phone[:1]}'] 1370// }, 1371// { 1372// label: '{NoteText}', 1373// value: ['{NoteText}'] 1374// } 1375// ]; 1376// 1377// Recommended settings if globalGroupContactsByCompanies 1378// is set to true: 1379// var globalCollectionDisplay=[ 1380// { 1381// label: '{Name}', 1382// value: { 1383// personal: ['{LastName}', ' {MiddleName}', ' {FirstName}'], 1384// company: ['{Company}', ' [{Department}]'] 1385// } 1386// }, 1387// { 1388// label: '{JobTitle}', 1389// value: ['{JobTitle}'] 1390// }, 1391// { 1392// label: '{Email}', 1393// value: ['{Email[:0]}'] 1394// }, 1395// { 1396// label: '{Phone} 1', 1397// value: ['{Phone[:0]}'] 1398// }, 1399// { 1400// label: '{Phone} 2', 1401// value: ['{Phone[:1]}'] 1402// }, 1403// { 1404// label: '{NoteText}', 1405// value: ['{NoteText}'] 1406// } 1407// ]; 1408// 1409// NOTE: if left undefined, the recommended settings will be used. 1410 1411 1412// globalCollectionSort 1413// This options sets the ordering of contacts in the interface. In general 1414// contacts are ordered alphabetically by an internal "sort string" which 1415// is created for each contact. Here you can specify how this internal string 1416// is created. The value is a simple array holding only the values from the 1417// value property defined in the globalCollectionDisplay option. 1418// If undefined, the definition from globalCollectionDisplay is used. 1419// Example: 1420// var globalCollectionSort = [ 1421// ['{LastName}'], 1422// ['{FirstName}'], 1423// ['{MiddleName}'], 1424// { 1425// company: ['{Categories}'], 1426// personal: ['{Company}'] 1427// } 1428// ]; 1429 1430 1431// globalContactDataMinVisiblePercentage
1432// This option defines how the width for columns are computed. If you set 1433// it to 1 then 100% of all data in the column will be visible (the column 1434// width is determined by the longest string in the column). If you set it 1435// to 0.95 then 95% of data will fit into the column width, and the remaining 1436// 5% will be truncated (" ..."). 1437// Example: 1438var globalContactDataMinVisiblePercentage=0.95; 1439 1440
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.