123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169 |
- /* The contents of this file are subject to the Mozilla Public
- * License Version 1.1 (the "License"); you may not use this file
- * except in compliance with the License. You may obtain a copy of
- * the License at http://www.mozilla.org/MPL/
- *
- * Software distributed under the License is distributed on an "AS
- * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
- * implied. See the License for the specific language governing
- * rights and limitations under the License.
- *
- * The Original Code is the Bugzilla Bug Tracking System.
- *
- * The Initial Developer of the Original Code is Netscape Communications
- * Corporation. Portions created by Netscape are
- * Copyright (C) 1998 Netscape Communications Corporation. All
- * Rights Reserved.
- *
- * Contributor(s): Dennis Melentyev <dennis.melentyev@infopulse.com.ua>
- */
- /* This file provides JavaScript functions to be included once one wish
- * to add a hide/reveal/collapse per-class functionality
- *
- *
- * This file contains hide/reveal API for customizable page views
- * TUI stands for Tweak UI.
- *
- * See bug 262592 for usage examples.
- *
- * Note: this interface is experimental and under development.
- * We may and probably will make breaking changes to it in the future.
- */
- var TUIClasses = new Array;
- var TUICookiesEnabled = -1;
- // Internal function to demangle cookies
- function TUI_demangle(value) {
- var pair;
- var pairs = value.split(",");
- for (i = 0; i < pairs.length; i++) {
- pair = pairs[i].split(":");
- if (pair[0] != null && pair[1] != null)
- TUIClasses[pair[0]] = pair[1];
- }
- }
- /* TUI_tweak: Function to redraw whole document.
- * Also, initialize TUIClasses array with defaults, then override it
- * with values from cookie
- */
- function TUI_tweak( cookiesuffix, classes ) {
- var dc = document.cookie;
- var begin = -1;
- var end = 0;
- // Register classes and their defaults
- TUI_demangle(classes);
- if (TUICookiesEnabled > 0) {
- // If cookies enabled, process them
- TUI_demangle(TUI_getCookie(cookiesuffix));
- }
- else if (TUICookiesEnabled == -1) {
- // If cookies availability not checked yet since browser does
- // not has navigator.cookieEnabled property, let's check it manualy
- var cookie = TUI_getCookie(cookiesuffix);
- if (cookie.length == 0)
- {
- TUI_setCookie(cookiesuffix);
- // Cookies are definitely disabled for JS.
- if (TUI_getCookie(cookiesuffix).length == 0)
- TUICookiesEnabled = 0;
- else
- TUICookiesEnabled = 1;
- }
- else {
- // Have cookie set, pretend to be able to reset them later on
- TUI_demangle(cookie);
- TUICookiesEnabled = 1;
- }
- }
-
- if (TUICookiesEnabled > 0) {
- var els = document.getElementsByTagName('*');
- for (i = 0; i < els.length; i++) {
- if (null != TUIClasses[els[i].className]) {
- TUI_apply(els[i], TUIClasses[els[i].className]);
- }
- }
- }
- return;
- }
- // TUI_apply: Function to draw certain element.
- // Receives element itself and style value: hide, reveal or collapse
- function TUI_apply(element, value) {
- if (TUICookiesEnabled > 0 && element != null) {
- switch (value)
- {
- case 'hide':
- element.style.visibility="hidden";
- break;
- case 'collapse':
- element.style.visibility="hidden";
- element.style.display="none";
- break;
- case 'reveal': // Shown item must expand
- default: // The default is to show & expand
- element.style.visibility="visible";
- element.style.display="";
- break;
- }
- }
- }
- // TUI_change: Function to process class.
- // Usualy called from onclick event of button
- function TUI_change(cookiesuffix, clsname, action) {
- if (TUICookiesEnabled > 0) {
- var els, i;
- els = document.getElementsByTagName('*');
- for (i=0; i<els.length; i++) {
- if (els[i].className.match(clsname)) {
- TUI_apply(els[i], action);
- }
- }
- TUIClasses[clsname]=action;
- TUI_setCookie(cookiesuffix);
- }
- }
-
- // TUI_setCookie: Function to set TUI cookie.
- // Used internally
- function TUI_setCookie(cookiesuffix) {
- var cookieval = "";
- var expireOn = new Date();
- expireOn.setYear(expireOn.getFullYear() + 25);
- for (clsname in TUIClasses) {
- if (cookieval.length > 0)
- cookieval += ",";
- cookieval += clsname+":"+TUIClasses[clsname];
- }
- document.cookie="Bugzilla_TUI_"+cookiesuffix+"="+cookieval+"; expires="+expireOn.toString();
- }
- // TUI_getCookie: Function to get TUI cookie.
- // Used internally
- function TUI_getCookie(cookiesuffix) {
- var dc = document.cookie;
- var begin, end;
- var cookiePrefix = "Bugzilla_TUI_"+cookiesuffix+"=";
- begin = dc.indexOf(cookiePrefix, end);
- if (begin != -1) {
- begin += cookiePrefix.length;
- end = dc.indexOf(";", begin);
- if (end == -1) {
- end = dc.length;
- }
- return unescape(dc.substring(begin, end));
- }
- return "";
- }
|