Просмотр исходного кода

Fixes - New Alerts

Fixed #84 - Display Version Error
Edits and Fixes - Added new alerts, new strings, more icons, translation
bug, new CSS edits, added check for sessions on check.php
causefx 9 лет назад
Родитель
Сommit
65614faaf7

+ 1 - 1
ajax_upload_file.php

@@ -5,7 +5,7 @@
     $data = $uploader->upload($_FILES['files'], array(
         'limit' => 10, //Maximum Limit of files. {null, Number}
         'maxSize' => 1, //Maximum Size of files {null, Number(in MB's)}
-        'extensions' => array('jpg', 'png'), //Whitelist for file extension. {null, Array(ex: array('jpg', 'png'))}
+        'extensions' => array('jpg', 'png', 'svg'), //Whitelist for file extension. {null, Array(ex: array('jpg', 'png'))}
         'required' => false, //Minimum one file is required for upload {Boolean}
         'uploadDir' => 'images/', //Upload directory {String}
         'title' => array('name'), //New file name {null, String, Array} *please read documentation in README.md

+ 2 - 2
bower_components/datatables-tabletools/js/dataTables.tableTools.js

@@ -2908,7 +2908,7 @@ TableTools.BUTTONS = {
 		"sMessage": null,
 		"bShowAll": true,
 		"sToolTip": "View print view",
-		"sButtonClass": "DTTT_button_print",
+		"sButtonClass": "btn waves btn-success text-uppercase waves-effect waves-float",
 		"sButtonText": "Print",
 		"fnClick": function ( nButton, oConfig ) {
 			this.fnPrint( true, oConfig );
@@ -3037,7 +3037,7 @@ TableTools.buttons = TableTools.BUTTONS;
 TableTools.classes = {
 	"container": "DTTT_container",
 	"buttons": {
-		"normal": "DTTT_button",
+		"normal": "",
 		"disabled": "DTTT_disabled"
 	},
 	"collection": {

+ 326 - 0
bower_components/html5shiv/dist/html5shiv.js

@@ -0,0 +1,326 @@
+/**
+* @preserve HTML5 Shiv 3.7.3 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed
+*/
+;(function(window, document) {
+/*jshint evil:true */
+  /** version */
+  var version = '3.7.3';
+
+  /** Preset options */
+  var options = window.html5 || {};
+
+  /** Used to skip problem elements */
+  var reSkip = /^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i;
+
+  /** Not all elements can be cloned in IE **/
+  var saveClones = /^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i;
+
+  /** Detect whether the browser supports default html5 styles */
+  var supportsHtml5Styles;
+
+  /** Name of the expando, to work with multiple documents or to re-shiv one document */
+  var expando = '_html5shiv';
+
+  /** The id for the the documents expando */
+  var expanID = 0;
+
+  /** Cached data for each document */
+  var expandoData = {};
+
+  /** Detect whether the browser supports unknown elements */
+  var supportsUnknownElements;
+
+  (function() {
+    try {
+        var a = document.createElement('a');
+        a.innerHTML = '<xyz></xyz>';
+        //if the hidden property is implemented we can assume, that the browser supports basic HTML5 Styles
+        supportsHtml5Styles = ('hidden' in a);
+
+        supportsUnknownElements = a.childNodes.length == 1 || (function() {
+          // assign a false positive if unable to shiv
+          (document.createElement)('a');
+          var frag = document.createDocumentFragment();
+          return (
+            typeof frag.cloneNode == 'undefined' ||
+            typeof frag.createDocumentFragment == 'undefined' ||
+            typeof frag.createElement == 'undefined'
+          );
+        }());
+    } catch(e) {
+      // assign a false positive if detection fails => unable to shiv
+      supportsHtml5Styles = true;
+      supportsUnknownElements = true;
+    }
+
+  }());
+
+  /*--------------------------------------------------------------------------*/
+
+  /**
+   * Creates a style sheet with the given CSS text and adds it to the document.
+   * @private
+   * @param {Document} ownerDocument The document.
+   * @param {String} cssText The CSS text.
+   * @returns {StyleSheet} The style element.
+   */
+  function addStyleSheet(ownerDocument, cssText) {
+    var p = ownerDocument.createElement('p'),
+        parent = ownerDocument.getElementsByTagName('head')[0] || ownerDocument.documentElement;
+
+    p.innerHTML = 'x<style>' + cssText + '</style>';
+    return parent.insertBefore(p.lastChild, parent.firstChild);
+  }
+
+  /**
+   * Returns the value of `html5.elements` as an array.
+   * @private
+   * @returns {Array} An array of shived element node names.
+   */
+  function getElements() {
+    var elements = html5.elements;
+    return typeof elements == 'string' ? elements.split(' ') : elements;
+  }
+
+  /**
+   * Extends the built-in list of html5 elements
+   * @memberOf html5
+   * @param {String|Array} newElements whitespace separated list or array of new element names to shiv
+   * @param {Document} ownerDocument The context document.
+   */
+  function addElements(newElements, ownerDocument) {
+    var elements = html5.elements;
+    if(typeof elements != 'string'){
+      elements = elements.join(' ');
+    }
+    if(typeof newElements != 'string'){
+      newElements = newElements.join(' ');
+    }
+    html5.elements = elements +' '+ newElements;
+    shivDocument(ownerDocument);
+  }
+
+   /**
+   * Returns the data associated to the given document
+   * @private
+   * @param {Document} ownerDocument The document.
+   * @returns {Object} An object of data.
+   */
+  function getExpandoData(ownerDocument) {
+    var data = expandoData[ownerDocument[expando]];
+    if (!data) {
+        data = {};
+        expanID++;
+        ownerDocument[expando] = expanID;
+        expandoData[expanID] = data;
+    }
+    return data;
+  }
+
+  /**
+   * returns a shived element for the given nodeName and document
+   * @memberOf html5
+   * @param {String} nodeName name of the element
+   * @param {Document|DocumentFragment} ownerDocument The context document.
+   * @returns {Object} The shived element.
+   */
+  function createElement(nodeName, ownerDocument, data){
+    if (!ownerDocument) {
+        ownerDocument = document;
+    }
+    if(supportsUnknownElements){
+        return ownerDocument.createElement(nodeName);
+    }
+    if (!data) {
+        data = getExpandoData(ownerDocument);
+    }
+    var node;
+
+    if (data.cache[nodeName]) {
+        node = data.cache[nodeName].cloneNode();
+    } else if (saveClones.test(nodeName)) {
+        node = (data.cache[nodeName] = data.createElem(nodeName)).cloneNode();
+    } else {
+        node = data.createElem(nodeName);
+    }
+
+    // Avoid adding some elements to fragments in IE < 9 because
+    // * Attributes like `name` or `type` cannot be set/changed once an element
+    //   is inserted into a document/fragment
+    // * Link elements with `src` attributes that are inaccessible, as with
+    //   a 403 response, will cause the tab/window to crash
+    // * Script elements appended to fragments will execute when their `src`
+    //   or `text` property is set
+    return node.canHaveChildren && !reSkip.test(nodeName) && !node.tagUrn ? data.frag.appendChild(node) : node;
+  }
+
+  /**
+   * returns a shived DocumentFragment for the given document
+   * @memberOf html5
+   * @param {Document} ownerDocument The context document.
+   * @returns {Object} The shived DocumentFragment.
+   */
+  function createDocumentFragment(ownerDocument, data){
+    if (!ownerDocument) {
+        ownerDocument = document;
+    }
+    if(supportsUnknownElements){
+        return ownerDocument.createDocumentFragment();
+    }
+    data = data || getExpandoData(ownerDocument);
+    var clone = data.frag.cloneNode(),
+        i = 0,
+        elems = getElements(),
+        l = elems.length;
+    for(;i<l;i++){
+        clone.createElement(elems[i]);
+    }
+    return clone;
+  }
+
+  /**
+   * Shivs the `createElement` and `createDocumentFragment` methods of the document.
+   * @private
+   * @param {Document|DocumentFragment} ownerDocument The document.
+   * @param {Object} data of the document.
+   */
+  function shivMethods(ownerDocument, data) {
+    if (!data.cache) {
+        data.cache = {};
+        data.createElem = ownerDocument.createElement;
+        data.createFrag = ownerDocument.createDocumentFragment;
+        data.frag = data.createFrag();
+    }
+
+
+    ownerDocument.createElement = function(nodeName) {
+      //abort shiv
+      if (!html5.shivMethods) {
+          return data.createElem(nodeName);
+      }
+      return createElement(nodeName, ownerDocument, data);
+    };
+
+    ownerDocument.createDocumentFragment = Function('h,f', 'return function(){' +
+      'var n=f.cloneNode(),c=n.createElement;' +
+      'h.shivMethods&&(' +
+        // unroll the `createElement` calls
+        getElements().join().replace(/[\w\-:]+/g, function(nodeName) {
+          data.createElem(nodeName);
+          data.frag.createElement(nodeName);
+          return 'c("' + nodeName + '")';
+        }) +
+      ');return n}'
+    )(html5, data.frag);
+  }
+
+  /*--------------------------------------------------------------------------*/
+
+  /**
+   * Shivs the given document.
+   * @memberOf html5
+   * @param {Document} ownerDocument The document to shiv.
+   * @returns {Document} The shived document.
+   */
+  function shivDocument(ownerDocument) {
+    if (!ownerDocument) {
+        ownerDocument = document;
+    }
+    var data = getExpandoData(ownerDocument);
+
+    if (html5.shivCSS && !supportsHtml5Styles && !data.hasCSS) {
+      data.hasCSS = !!addStyleSheet(ownerDocument,
+        // corrects block display not defined in IE6/7/8/9
+        'article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}' +
+        // adds styling not present in IE6/7/8/9
+        'mark{background:#FF0;color:#000}' +
+        // hides non-rendered elements
+        'template{display:none}'
+      );
+    }
+    if (!supportsUnknownElements) {
+      shivMethods(ownerDocument, data);
+    }
+    return ownerDocument;
+  }
+
+  /*--------------------------------------------------------------------------*/
+
+  /**
+   * The `html5` object is exposed so that more elements can be shived and
+   * existing shiving can be detected on iframes.
+   * @type Object
+   * @example
+   *
+   * // options can be changed before the script is included
+   * html5 = { 'elements': 'mark section', 'shivCSS': false, 'shivMethods': false };
+   */
+  var html5 = {
+
+    /**
+     * An array or space separated string of node names of the elements to shiv.
+     * @memberOf html5
+     * @type Array|String
+     */
+    'elements': options.elements || 'abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video',
+
+    /**
+     * current version of html5shiv
+     */
+    'version': version,
+
+    /**
+     * A flag to indicate that the HTML5 style sheet should be inserted.
+     * @memberOf html5
+     * @type Boolean
+     */
+    'shivCSS': (options.shivCSS !== false),
+
+    /**
+     * Is equal to true if a browser supports creating unknown/HTML5 elements
+     * @memberOf html5
+     * @type boolean
+     */
+    'supportsUnknownElements': supportsUnknownElements,
+
+    /**
+     * A flag to indicate that the document's `createElement` and `createDocumentFragment`
+     * methods should be overwritten.
+     * @memberOf html5
+     * @type Boolean
+     */
+    'shivMethods': (options.shivMethods !== false),
+
+    /**
+     * A string to describe the type of `html5` object ("default" or "default print").
+     * @memberOf html5
+     * @type String
+     */
+    'type': 'default',
+
+    // shivs the document according to the specified `html5` object options
+    'shivDocument': shivDocument,
+
+    //creates a shived element
+    createElement: createElement,
+
+    //creates a shived documentFragment
+    createDocumentFragment: createDocumentFragment,
+
+    //extends list of elements
+    addElements: addElements
+  };
+
+  /*--------------------------------------------------------------------------*/
+
+  // expose html5
+  window.html5 = html5;
+
+  // shiv the document
+  shivDocument(document);
+
+  if(typeof module == 'object' && module.exports){
+    module.exports = html5;
+  }
+
+}(typeof window !== "undefined" ? window : this, document));

Разница между файлами не показана из-за своего большого размера
+ 3 - 0
bower_components/html5shiv/dist/html5shiv.min.js


+ 224 - 0
bower_components/respondJs/dest/respond.min.js

@@ -0,0 +1,224 @@
+/*! matchMedia() polyfill - Test a CSS media type/query in JS. Authors & copyright (c) 2012: Scott Jehl, Paul Irish, Nicholas Zakas. Dual MIT/BSD license */
+/*! NOTE: If you're already including a window.matchMedia polyfill via Modernizr or otherwise, you don't need this part */
+(function(w) {
+  "use strict";
+  w.matchMedia = w.matchMedia || function(doc, undefined) {
+    var bool, docElem = doc.documentElement, refNode = docElem.firstElementChild || docElem.firstChild, fakeBody = doc.createElement("body"), div = doc.createElement("div");
+    div.id = "mq-test-1";
+    div.style.cssText = "position:absolute;top:-100em";
+    fakeBody.style.background = "none";
+    fakeBody.appendChild(div);
+    return function(q) {
+      div.innerHTML = '&shy;<style media="' + q + '"> #mq-test-1 { width: 42px; }</style>';
+      docElem.insertBefore(fakeBody, refNode);
+      bool = div.offsetWidth === 42;
+      docElem.removeChild(fakeBody);
+      return {
+        matches: bool,
+        media: q
+      };
+    };
+  }(w.document);
+})(this);
+
+/*! Respond.js v1.4.0: min/max-width media query polyfill. (c) Scott Jehl. MIT Lic. j.mp/respondjs  */
+(function(w) {
+  "use strict";
+  var respond = {};
+  w.respond = respond;
+  respond.update = function() {};
+  var requestQueue = [], xmlHttp = function() {
+    var xmlhttpmethod = false;
+    try {
+      xmlhttpmethod = new w.XMLHttpRequest();
+    } catch (e) {
+      xmlhttpmethod = new w.ActiveXObject("Microsoft.XMLHTTP");
+    }
+    return function() {
+      return xmlhttpmethod;
+    };
+  }(), ajax = function(url, callback) {
+    var req = xmlHttp();
+    if (!req) {
+      return;
+    }
+    req.open("GET", url, true);
+    req.onreadystatechange = function() {
+      if (req.readyState !== 4 || req.status !== 200 && req.status !== 304) {
+        return;
+      }
+      callback(req.responseText);
+    };
+    if (req.readyState === 4) {
+      return;
+    }
+    req.send(null);
+  };
+  respond.ajax = ajax;
+  respond.queue = requestQueue;
+  respond.regex = {
+    media: /@media[^\{]+\{([^\{\}]*\{[^\}\{]*\})+/gi,
+    keyframes: /@(?:\-(?:o|moz|webkit)\-)?keyframes[^\{]+\{(?:[^\{\}]*\{[^\}\{]*\})+[^\}]*\}/gi,
+    urls: /(url\()['"]?([^\/\)'"][^:\)'"]+)['"]?(\))/g,
+    findStyles: /@media *([^\{]+)\{([\S\s]+?)$/,
+    only: /(only\s+)?([a-zA-Z]+)\s?/,
+    minw: /\([\s]*min\-width\s*:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/,
+    maxw: /\([\s]*max\-width\s*:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/
+  };
+  respond.mediaQueriesSupported = w.matchMedia && w.matchMedia("only all") !== null && w.matchMedia("only all").matches;
+  if (respond.mediaQueriesSupported) {
+    return;
+  }
+  var doc = w.document, docElem = doc.documentElement, mediastyles = [], rules = [], appendedEls = [], parsedSheets = {}, resizeThrottle = 30, head = doc.getElementsByTagName("head")[0] || docElem, base = doc.getElementsByTagName("base")[0], links = head.getElementsByTagName("link"), lastCall, resizeDefer, eminpx, getEmValue = function() {
+    var ret, div = doc.createElement("div"), body = doc.body, originalHTMLFontSize = docElem.style.fontSize, originalBodyFontSize = body && body.style.fontSize, fakeUsed = false;
+    div.style.cssText = "position:absolute;font-size:1em;width:1em";
+    if (!body) {
+      body = fakeUsed = doc.createElement("body");
+      body.style.background = "none";
+    }
+    docElem.style.fontSize = "100%";
+    body.style.fontSize = "100%";
+    body.appendChild(div);
+    if (fakeUsed) {
+      docElem.insertBefore(body, docElem.firstChild);
+    }
+    ret = div.offsetWidth;
+    if (fakeUsed) {
+      docElem.removeChild(body);
+    } else {
+      body.removeChild(div);
+    }
+    docElem.style.fontSize = originalHTMLFontSize;
+    if (originalBodyFontSize) {
+      body.style.fontSize = originalBodyFontSize;
+    }
+    ret = eminpx = parseFloat(ret);
+    return ret;
+  }, applyMedia = function(fromResize) {
+    var name = "clientWidth", docElemProp = docElem[name], currWidth = doc.compatMode === "CSS1Compat" && docElemProp || doc.body[name] || docElemProp, styleBlocks = {}, lastLink = links[links.length - 1], now = new Date().getTime();
+    if (fromResize && lastCall && now - lastCall < resizeThrottle) {
+      w.clearTimeout(resizeDefer);
+      resizeDefer = w.setTimeout(applyMedia, resizeThrottle);
+      return;
+    } else {
+      lastCall = now;
+    }
+    for (var i in mediastyles) {
+      if (mediastyles.hasOwnProperty(i)) {
+        var thisstyle = mediastyles[i], min = thisstyle.minw, max = thisstyle.maxw, minnull = min === null, maxnull = max === null, em = "em";
+        if (!!min) {
+          min = parseFloat(min) * (min.indexOf(em) > -1 ? eminpx || getEmValue() : 1);
+        }
+        if (!!max) {
+          max = parseFloat(max) * (max.indexOf(em) > -1 ? eminpx || getEmValue() : 1);
+        }
+        if (!thisstyle.hasquery || (!minnull || !maxnull) && (minnull || currWidth >= min) && (maxnull || currWidth <= max)) {
+          if (!styleBlocks[thisstyle.media]) {
+            styleBlocks[thisstyle.media] = [];
+          }
+          styleBlocks[thisstyle.media].push(rules[thisstyle.rules]);
+        }
+      }
+    }
+    for (var j in appendedEls) {
+      if (appendedEls.hasOwnProperty(j)) {
+        if (appendedEls[j] && appendedEls[j].parentNode === head) {
+          head.removeChild(appendedEls[j]);
+        }
+      }
+    }
+    appendedEls.length = 0;
+    for (var k in styleBlocks) {
+      if (styleBlocks.hasOwnProperty(k)) {
+        var ss = doc.createElement("style"), css = styleBlocks[k].join("\n");
+        ss.type = "text/css";
+        ss.media = k;
+        head.insertBefore(ss, lastLink.nextSibling);
+        if (ss.styleSheet) {
+          ss.styleSheet.cssText = css;
+        } else {
+          ss.appendChild(doc.createTextNode(css));
+        }
+        appendedEls.push(ss);
+      }
+    }
+  }, translate = function(styles, href, media) {
+    var qs = styles.replace(respond.regex.keyframes, "").match(respond.regex.media), ql = qs && qs.length || 0;
+    href = href.substring(0, href.lastIndexOf("/"));
+    var repUrls = function(css) {
+      return css.replace(respond.regex.urls, "$1" + href + "$2$3");
+    }, useMedia = !ql && media;
+    if (href.length) {
+      href += "/";
+    }
+    if (useMedia) {
+      ql = 1;
+    }
+    for (var i = 0; i < ql; i++) {
+      var fullq, thisq, eachq, eql;
+      if (useMedia) {
+        fullq = media;
+        rules.push(repUrls(styles));
+      } else {
+        fullq = qs[i].match(respond.regex.findStyles) && RegExp.$1;
+        rules.push(RegExp.$2 && repUrls(RegExp.$2));
+      }
+      eachq = fullq.split(",");
+      eql = eachq.length;
+      for (var j = 0; j < eql; j++) {
+        thisq = eachq[j];
+        mediastyles.push({
+          media: thisq.split("(")[0].match(respond.regex.only) && RegExp.$2 || "all",
+          rules: rules.length - 1,
+          hasquery: thisq.indexOf("(") > -1,
+          minw: thisq.match(respond.regex.minw) && parseFloat(RegExp.$1) + (RegExp.$2 || ""),
+          maxw: thisq.match(respond.regex.maxw) && parseFloat(RegExp.$1) + (RegExp.$2 || "")
+        });
+      }
+    }
+    applyMedia();
+  }, makeRequests = function() {
+    if (requestQueue.length) {
+      var thisRequest = requestQueue.shift();
+      ajax(thisRequest.href, function(styles) {
+        translate(styles, thisRequest.href, thisRequest.media);
+        parsedSheets[thisRequest.href] = true;
+        w.setTimeout(function() {
+          makeRequests();
+        }, 0);
+      });
+    }
+  }, ripCSS = function() {
+    for (var i = 0; i < links.length; i++) {
+      var sheet = links[i], href = sheet.href, media = sheet.media, isCSS = sheet.rel && sheet.rel.toLowerCase() === "stylesheet";
+      if (!!href && isCSS && !parsedSheets[href]) {
+        if (sheet.styleSheet && sheet.styleSheet.rawCssText) {
+          translate(sheet.styleSheet.rawCssText, href, media);
+          parsedSheets[href] = true;
+        } else {
+          if (!/^([a-zA-Z:]*\/\/)/.test(href) && !base || href.replace(RegExp.$1, "").split("/")[0] === w.location.host) {
+            if (href.substring(0, 2) === "//") {
+              href = w.location.protocol + href;
+            }
+            requestQueue.push({
+              href: href,
+              media: media
+            });
+          }
+        }
+      }
+    }
+    makeRequests();
+  };
+  ripCSS();
+  respond.update = ripCSS;
+  respond.getEmValue = getEmValue;
+  function callMedia() {
+    applyMedia(true);
+  }
+  if (w.addEventListener) {
+    w.addEventListener("resize", callMedia, false);
+  } else if (w.attachEvent) {
+    w.attachEvent("onresize", callMedia);
+  }
+})(this);

+ 1 - 0
check.php

@@ -164,6 +164,7 @@ $folder = USER_HOME;
                 check("PDO");
                 check("Zip");
                 check("openssl");
+                check("session");
                 checkFunction("MAIL");
                 checkFunction("fopen");
 

+ 12 - 4
css/style.css

@@ -2010,7 +2010,7 @@ table.dataTable > tbody > tr.child span.dtr-title {
 }
 
 .dataTables_wrapper {
-  margin-top: 30px;
+  /*margin-top: 30px;*/
 }
 
 .dataTables_wrapper table {
@@ -3260,12 +3260,13 @@ ul.inbox-pagination li {
 .ns-box {
   position: fixed;
   background: #368fe5;
-  padding: 22px;
+  /*padding: 22px;*/
+  padding: 19px 22px 19px 22px;
   line-height: 1.4;
   z-index: 4000;
   pointer-events: none;
   color: #fff;
-  font-size: 90%;
+  font-size: 80%;
 }
 
 .ns-box a {
@@ -3283,7 +3284,7 @@ ul.inbox-pagination li {
 }
 
 .ns-box .fa {
-  margin-left: -5px;
+  margin-left: -7px;
 }
 
 .ns-box.ns-show,
@@ -5903,6 +5904,13 @@ label {
           transition: all, 1s;
 }
 
+.mini-nav .members-sidebar {
+  width: calc(100% - 50px);
+  width: -webkit-calc(100% - 50px);
+  right: calc(-100%);
+  right: -webkit-calc(-100%); 
+}
+
 .members-sidebar .messages {
   margin-top: 30px;
 }

+ 77 - 0
images/default.svg

@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 viewBox="0 0 250 50" enable-background="new 0 0 250 50" xml:space="preserve">
+<rect fill="#333433" width="250" height="50"/>
+<g id="qRRne1_1_">
+	<g>
+		<path fill="#72CEE6" d="M26.5,41.6c-2.8,0-5.4-0.7-7.8-2c-2.7-1.4-4.8-3.5-6.3-6.1c-1.6-2.7-2.3-5.6-2.3-8.7c0-4.2,2-8.8,4.9-11.6
+			c3.3-3.2,7.2-4.7,11.8-4.8c2.1,0,4.1,0.4,6,1.2c2.1,0.9,4,2.1,5.7,3.8c1.5,1.5,2.6,3.2,3.4,5.1c0.9,2.1,1.4,4.3,1.4,6.6
+			c-0.1,4.5-1.7,8.5-5,11.7C35,40,31.1,41.5,26.5,41.6z M18.2,21.4c0.4,0.2,0.6,0.3,0.9,0.4c1.4,0.5,2.7,1.1,4,1.6
+			c1.1,0.4,2.2,0.9,3.3,1.3c0.4,0.2,0.8,0.2,1.2,0c0.5-0.2,1-0.4,1.5-0.6c2.1-0.8,4.2-1.7,6.3-2.5c0.1,0,0.2-0.1,0.3-0.3
+			c-0.2-0.1-0.3-0.2-0.5-0.3c-1-0.5-2-0.9-2.9-1.3c-1.5-0.6-3-1.3-4.5-1.9c-0.8-0.4-1-0.4-1.8,0c-1,0.4-2,0.9-3,1.3
+			c-1.1,0.5-2.3,0.9-3.4,1.4C19.3,20.7,18.8,20.9,18.2,21.4z M18.1,25.1c0.3,0.2,0.3,0.2,0.4,0.3c0.7,0.3,1.3,0.5,2,0.8
+			c1.8,0.7,3.7,1.5,5.5,2.2c0.9,0.4,1,0.4,1.9,0c0.1,0,0.2-0.1,0.3-0.1c1.7-0.7,3.4-1.4,5.1-2c0.7-0.3,1.5-0.6,2.2-0.9
+			c0.1-0.1,0.2-0.1,0.2-0.3c-1-0.4-1.9-0.8-2.9-1.3c-0.3-0.1-0.6-0.1-1,0c-0.6,0.2-1.1,0.4-1.7,0.7c-0.8,0.3-1.7,0.6-2.5,1
+			c-0.4,0.2-0.8,0.2-1.3,0c-0.2-0.1-0.5-0.2-0.7-0.3c-1.1-0.4-2.3-0.9-3.4-1.4c-0.3-0.1-0.6-0.2-0.9-0.1
+			C20.4,24.1,19.4,24.6,18.1,25.1z M32.4,27.4c-0.8,0.3-1.6,0.7-2.4,1c-0.8,0.3-1.7,0.6-2.5,1c-0.3,0.1-0.6,0.1-0.9,0
+			c-0.5-0.2-1-0.4-1.5-0.6c-1.1-0.4-2.2-0.9-3.3-1.3c-0.6,0.2-1.1,0.5-1.7,0.7c-0.6,0.3-1.2,0.4-1.7,0.9c0.1,0.1,0.2,0.2,0.3,0.2
+			c0.4,0.2,0.8,0.3,1.2,0.5c2.3,0.9,4.6,1.8,6.8,2.7c0.4,0,0.7,0,0.9,0c0.6-0.2,1-0.4,1.5-0.6c1.4-0.6,2.8-1.1,4.2-1.7
+			c0.8-0.3,1.5-0.6,2.3-0.9c0.1-0.1,0.2-0.2,0.3-0.3c-0.1-0.1-0.1-0.1-0.2-0.2C34.6,28.3,33.5,27.9,32.4,27.4z"/>
+		<path fill="#72CEE6" d="M165.6,36.7c-0.2,0.1-0.3,0.2-0.5,0.2c-0.2,0-0.4,0-0.7,0c-3.6,0-7.1,0-10.7,0c-0.2,0-0.3,0-0.4,0
+			c-0.3-0.2-0.5-0.4-0.6-0.7c-0.2-0.5-0.3-0.9-0.5-1.4c-0.8-2.2-1.6-4.5-2.4-6.7c-0.6-1.6-1.1-3.2-1.7-4.8c0-0.1-0.2-0.2-0.3-0.4
+			c0,0.3,0,0.4,0,0.6c0.2,0.4,0.1,0.9,0.2,1.4c0.1,0.9,0.1,1.7,0.2,2.6c0,0.9-0.1,1.8,0.1,2.6c0.2,1.1,0.1,2.2,0.1,3.2
+			c0,1.1,0,2.1,0,3.2c0,0.1,0,0.1-0.1,0.2c-0.3,0.1-0.6,0.1-1,0.1c-1.6,0-3.2,0-4.8,0c-0.8,0-1.6,0-2.4,0c-0.3,0-0.6,0-0.9,0
+			c-0.2-0.4-0.3-0.9-0.3-1.3c0-7.3,0-14.7,0-22c0.1-0.1,0.2-0.3,0.4-0.5c4,0,8,0,11.9,0c0.4,0.3,0.5,0.7,0.7,1.2
+			c0.8,2.1,1.5,4.3,2.3,6.4c0.7,2,1.5,4,2.2,5.9c0.1,0.1,0.2,0.2,0.3,0.4c0-0.1,0.1-0.2,0.1-0.2c-0.2-0.6-0.1-1.3-0.2-1.9
+			c-0.2-1.1-0.1-2.2-0.2-3.2c-0.2-1.4-0.1-2.8-0.1-4.2c0-1.4,0-2.7,0-4.1c0.4-0.2,0.8-0.3,1.3-0.3c2.4,0,4.8,0,7.2,0
+			c0.3,0,0.6-0.1,0.8,0.3c0,0.1,0,0.3,0,0.5c0,0.6,0,1.2,0,1.9c0,6.7,0,13.5,0,20.2C165.6,36.1,165.6,36.4,165.6,36.7z"/>
+		<path fill="#72CEE6" d="M69,28.2c1.4,2.6,2.9,5.2,4.3,7.8c-0.1,0.1-0.2,0.3-0.4,0.4c-3,0-6.1,0-9.1,0c-0.5-0.3-0.8-0.8-1.1-1.3
+			c-0.8-1.6-1.6-3.3-2.4-4.9c-0.1-0.2-0.3-0.5-0.4-0.7c-0.7,0-1.3,0-1.9,0c0,0.2-0.1,0.3-0.1,0.5c0,1.9,0,3.7,0,5.6
+			c-0.1,0.3-0.1,0.6-0.4,0.7c-0.3,0.1-6,0.2-8.8,0c-0.1-0.1-0.2-0.1-0.3-0.2c0-0.1-0.1-0.2-0.1-0.2c0-2.3-0.2-4.6-0.2-6.9
+			c0-3.8,0-7.5,0-11.3c0-0.8,0.1-1.7,0.1-2.5c0-0.8,0-1.7,0-2.5c0-0.1,0-0.1,0.1-0.2c0.3-0.1,0.6-0.1,1-0.1c2.3,0,4.5,0,6.8,0
+			c2.4,0,4.8,0,7.3,0c1.4,0,2.8,0.3,4.2,0.6c0.5,0.1,1.1,0.3,1.6,0.5c1.2,0.5,2.2,1.3,2.8,2.6c0.6,1.2,0.9,2.4,0.9,3.6
+			c0,0.7,0.1,1.5,0,2.2c-0.1,1.3-0.4,2.6-1.2,3.7c-0.5,0.8-1.2,1.3-2,1.8C69.5,27.9,69.2,28.1,69,28.2z M57.9,19.2
+			c-0.1,1-0.1,3.8,0,4.4c1.1,0,2.3,0.1,3.4,0c1-0.1,1.8-0.5,2.1-1.6c0-0.4,0-0.9,0-1.3c-0.4-0.8-0.4-0.8-1.3-1.2
+			C60.6,19.1,59.3,19.2,57.9,19.2z"/>
+		<path fill="#72CEE6" d="M224.5,36.6c-0.1,0.1-0.2,0.2-0.3,0.3c-0.9,0.1-8.1,0.1-9,0c-0.1-0.1-0.1-0.2-0.2-0.3c0-1.1,0-2.2,0-3.3
+			c0-6.2,0-12.4,0-18.5c0-0.4,0-0.8,0-1.2c0-0.1,0.1-0.3,0.2-0.4c0.3,0,0.6,0,0.9,0c4.7,0,9.3,0,14,0c2,0,3.9,0.4,5.8,1.1
+			c1.9,0.7,3.1,2.1,3.5,4.1c0.3,1.2,0.5,2.5,0.3,3.8c-0.1,1.2-0.3,2.5-0.9,3.6c-0.5,1-1.3,1.9-2.3,2.5c-0.2,0.1-0.5,0.3-0.7,0.5
+			c0.1,0.3,0.2,0.5,0.3,0.7c0.6,1.2,1.3,2.3,1.9,3.5c0.6,1.2,1.3,2.3,1.9,3.5c0,0.1,0,0.2,0.1,0.3c-0.1,0.3-0.3,0.4-0.5,0.4
+			c-0.2,0-0.3,0-0.5,0c-2.6,0-5.2,0-7.8,0c-0.3,0-0.7,0-1,0c-0.5-0.7-0.8-1.5-1.2-2.3c-0.4-0.7-0.7-1.5-1.1-2.2
+			c-0.4-0.8-0.8-1.5-1.2-2.4c-0.6,0-1.3,0-1.9,0c-0.3,0.2-0.2,0.5-0.2,0.7c0,1.4,0,2.7,0,4.1C224.5,35.4,224.5,36,224.5,36.6z
+			 M229.3,23.7c0.5-0.3,0.7-0.9,0.9-1.5c0-0.3,0-0.7,0-0.9c-0.2-0.7-0.6-1-1-1.4c-0.3-0.1-0.5-0.2-0.7-0.2c-0.2,0-0.5,0-0.7,0
+			c-0.9,0-1.7,0-2.6,0c-0.2,0-0.3,0.1-0.5,0.1c0,1.4,0,2.7,0,4c0,0.1,0,0.2,0.1,0.3c0.3,0,0.6,0.1,0.8,0c0.7-0.2,1.5-0.1,2.2-0.1
+			C228.2,24,228.7,24,229.3,23.7z"/>
+		<path fill="#72CEE6" d="M104.4,21.4c-0.2,0.2-0.3,0.3-0.5,0.4c-1.1,0-2.2,0-3.3,0c-1.5,0-3,0-4.5,0c-0.5,0-1-0.1-1.4-0.1
+			c-0.3-0.3-0.3-0.7-0.4-1c-0.1-0.3-0.3-0.6-0.4-0.8c-0.5-0.5-1-0.6-1.5-0.6c-0.8-0.1-1.5-0.1-2.3,0.1c-0.7,0.2-1.2,0.6-1.5,1.1
+			c-0.3,0.5-0.5,1.1-0.6,1.6c-0.3,1.5-0.1,3-0.1,4.5c0.2,0.8,0.1,1.7,0.4,2.4c0.3,0.8,0.7,1.4,1.6,1.7c0.1,0,0.2,0.1,0.3,0.1
+			c0.7,0,1.5,0,2.2,0c0.8,0,1.6-0.2,2.3-0.7c0.1-0.2,0.2-0.4,0.3-0.6c0-0.4,0-0.8,0-1.2c-0.2,0-0.4-0.1-0.6-0.1c-0.7,0-1.5,0-2.2,0
+			c-0.2,0-0.5,0-0.7-0.4c-0.1-0.3,0-0.7,0-1.1c0-0.4,0-0.9,0-1.3c0-0.4,0-0.9,0-1.3c0-0.1,0.1-0.1,0.1-0.1c0.2-0.1,0.3-0.2,0.5-0.3
+			c1.4,0,2.8,0,4.2,0c2.4,0,4.8,0,7.2,0c0.3,0,0.7,0,1,0c0.1,0,0.3,0.1,0.4,0.2c0,0.2,0.1,0.4,0.1,0.6c0,0.8,0,1.6,0,2.3
+			c-0.1,1.3-0.2,2.5-0.6,3.7c-0.2,0.7-0.4,1.5-0.8,2.2c-0.7,1.2-1.5,2.1-2.7,2.8c-1,0.7-2.2,1-3.3,1.3c-1.1,0.3-2.2,0.3-3.3,0.4
+			c-1.5,0.1-2.9,0.1-4.4,0.1c-2-0.1-4-0.3-6-1.1c-2.1-0.8-3.6-2.2-4.7-4.1c-0.7-1.3-1.1-2.6-1.3-4c-0.2-1.1-0.3-2.1-0.2-3.2
+			c0-1,0.1-2,0.2-3c0.3-1.7,0.8-3.3,1.8-4.7c1.2-1.6,2.6-2.8,4.5-3.5c1-0.3,1.9-0.6,2.9-0.8c0.6-0.1,1.3-0.2,1.9-0.2
+			c2,0,3.9-0.1,5.9,0c1.8,0.1,3.7,0.4,5.4,1.1c2,0.8,3.3,2.3,3.8,4.4c0.1,0.5,0.3,1.1,0.3,1.6c0,0.2,0.1,0.5,0.1,0.7
+			C104.4,20.8,104.4,21,104.4,21.4z"/>
+		<path fill="#72CEE6" d="M114,13.2c0.4-0.1,0.7-0.2,1.1-0.2c4.2,0,8.4,0,12.7,0c0.1,0,0.1,0,0.2,0c0.3,0.2,0.4,0.4,0.5,0.7
+			c0.6,1.9,1.3,3.8,1.8,5.7c0.3,1.1,0.7,2.2,1,3.3c0.7,2.2,1.4,4.4,2.1,6.7c0.6,2,1.2,3.9,1.8,5.9c0.1,0.5,0.2,0.9,0.3,1.5
+			c-0.2,0-0.3,0.1-0.4,0.1c-3.3,0-6.6,0-9.9,0c-0.3-0.6-0.4-1.2-0.5-1.9c-0.1-0.6-0.3-1.2-0.4-1.8c-1-0.1-2.1,0-3.1-0.1
+			c-1.1,0-2.1,0-3.2,0c-0.3,1.2-0.6,2.5-0.9,3.7c-0.3,0-0.6,0.1-0.9,0.1c-2.9,0-5.8,0-8.8,0c-0.1,0-0.2,0-0.4,0
+			c-0.1-0.1-0.2-0.2-0.3-0.3c0-0.2,0-0.4,0.1-0.6c0.5-1.8,1.1-3.5,1.7-5.3c0.7-2.4,1.5-4.7,2.2-7.1c0.7-2.4,1.5-4.7,2.2-7.1
+			c0.3-0.9,0.6-1.8,0.9-2.7C113.8,13.6,113.9,13.5,114,13.2z M121.2,19.3c0,0-0.1,0-0.1,0c-0.1,0.3-0.2,0.6-0.2,0.9
+			c-0.2,0.8-0.4,1.7-0.6,2.5c-0.3,1.3-0.5,2.7-0.9,4c-0.1,0.2-0.1,0.5,0,0.7c1.2,0.1,2.7,0.1,3.4,0c0-0.1,0-0.2,0-0.3
+			C122.3,24.5,121.7,21.9,121.2,19.3z"/>
+		<path fill="#72CEE6" d="M186.3,36.9c-0.1-0.1-0.2-0.2-0.2-0.2c0-1.6,0-3.2,0-4.9c0.6-0.8,1.3-1.7,2-2.6c1-1.2,1.9-2.4,2.9-3.6
+			c0.6-0.8,1.3-1.6,1.9-2.4c0.9-1.1,1.9-2.1,2.9-3c0.1-0.1,0.2-0.2,0.4-0.4c-0.2-0.1-0.3-0.2-0.4-0.2c-0.2,0-0.5,0-0.7,0
+			c-2.3,0-4.7,0-7,0c-0.5,0-1,0-1.5,0c-0.1-0.2-0.2-0.3-0.3-0.5c0-1.9,0-3.7,0-5.5c0-0.1,0.1-0.2,0.2-0.3c0.4-0.1,0.8-0.2,1.2-0.2
+			c7.1,0,14.1,0,21.2,0c0.1,0.1,0.3,0.3,0.5,0.4c0,1.4,0,2.9,0,4.4c-0.2,0.3-0.4,0.7-0.7,1.1c-0.6,0.8-1.3,1.5-1.9,2.3
+			c-1,1.2-2,2.5-3,3.7c-1.4,1.7-2.7,3.5-4.4,5c-0.1,0.1-0.2,0.2-0.3,0.4c3.4,0,6.7,0,10,0c0.3,0.5,0.3,0.9,0.3,1.4c0,1.3,0,2.7,0,4
+			c0,0.4-0.1,0.7-0.3,1C208.2,36.9,188,37,186.3,36.9z"/>
+		<path fill="#72CEE6" d="M170.6,13.8c0.1-0.2,0.2-0.4,0.2-0.6c0.4-0.1,0.8-0.2,1.2-0.2c2.8,0,5.6,0,8.4,0c0.1,0,0.2,0,0.5,0
+			c0.1,0.1,0.2,0.2,0.3,0.4c0.1,1.1,0.2,16.7,0.1,23c-0.1,0.1-0.3,0.3-0.5,0.5c-3.3,0-6.6,0-9.8,0c-0.1-0.1-0.1-0.2-0.1-0.2
+			c-0.1-1.8-0.2-3.5-0.2-5.3c0-5.4,0-10.9,0-16.3C170.6,14.7,170.6,14.2,170.6,13.8z"/>
+	</g>
+</g>
+</svg>

BIN
images/gitter.png


BIN
images/pvr.png


BIN
images/pydio.png


BIN
images/pydio2.png


BIN
images/vmware.png


+ 130 - 20
index.php

@@ -126,6 +126,8 @@ if($action == "createLocation") :
         
             if(substr($postValue, -1) == "/") : $postValue = rtrim($postValue, "/"); endif;
         
+                $postValue = str_replace("\\","/", $postValue);
+        
             $databaseData .= $postName . " = \"" . $postValue . "\"\r\n";
         
         endif;
@@ -250,10 +252,21 @@ else :
 endif;
 
 ?>
+<!--
+
+    ___       ___       ___       ___       ___       ___       ___       ___   
+   /\  \     /\  \     /\  \     /\  \     /\__\     /\  \     /\  \     /\  \  
+  /::\  \   /::\  \   /::\  \   /::\  \   /:| _|_   _\:\  \   _\:\  \   /::\  \ 
+ /:/\:\__\ /::\:\__\ /:/\:\__\ /::\:\__\ /::|/\__\ /\/::\__\ /::::\__\ /::\:\__\
+ \:\/:/  / \;:::/  / \:\:\/__/ \/\::/  / \/|::/  / \::/\/__/ \::;;/__/ \;:::/  /
+  \::/  /   |:\/__/   \::/  /    /:/  /    |:/  /   \:\__\    \:\__\    |:\/__/ 
+   \/__/     \|__|     \/__/     \/__/     \/__/     \/__/     \/__/     \|__|  
+
 
+-->
 <!DOCTYPE html>
 
-<html lang="en" class="no-js">
+<html lang="<?php echo $getLanguage; ?>" class="no-js">
 
     <head>
         
@@ -473,6 +486,10 @@ endif;
                 }.mini-nav .splitRight {
                     margin-left: calc(50% + 25px) !important;
                     width: calc(50% - 25px);
+                }.form-control.material {
+                    background-image: -webkit-gradient(linear, left top, left bottom, from(<?=$topbartext;?>), to(<?=$topbartext;?>)), -webkit-gradient(linear, left top, left bottom, from(#d2d2d2), to(#d2d2d2));
+                    background-image: -webkit-linear-gradient(<?=$topbartext;?>, <?=$topbartext;?>), -webkit-linear-gradient(#d2d2d2, #d2d2d2);
+                    background-image: linear-gradient(<?=$topbartext;?>, <?=$topbartext;?>), linear-gradient(#d2d2d2, #d2d2d2);
                 }
 
             </style>
@@ -504,13 +521,13 @@ endif;
                         
                         <div class="gn-scroller" id="gn-scroller">
                             
-                            <ul class="gn-menu metismenu">
+                            <ul id="tabList" class="gn-menu metismenu">
 
                                 <!--Start Tab List-->
                                 
-                                <?php if($tabSetup == "No") : foreach($result as $row) : 
+                                <?php if($tabSetup == "No") : $tabCount = 1; foreach($result as $row) : 
                                 
-                                if($row['defaultz'] == "true") : $defaultz = "active"; else : $defaultz = ""; endif;?>
+                                if($row['defaultz'] == "true") : $defaultz = "active"; else : $defaultz = ""; endif; ?>
                                 
                                 <li window="<?=$row['window'];?>" class="tab-item <?=$defaultz;?>" id="<?=$row['url'];?>x" data-title="<?=$row['name'];?>" name="<?php echo strtolower($row['name']);?>">
                                     
@@ -534,7 +551,7 @@ endif;
 
                                 </li>
                                 
-                                <?php endforeach; endif;?>
+                                <?php $tabCount++; endforeach; endif;?>
                                 
                                 <?php if($configReady == "Yes") : if($USER->authenticated && $USER->role == "admin") :?>
                                 <li class="tab-item <?=$settingsActive;?>" id="settings.phpx" data-title="Settings" name="settings">
@@ -588,7 +605,7 @@ endif;
                     
                         else : 
                     
-                            echo "<img height='50px' width='250px' src='" . TITLELOGO . "'>";
+                            echo "<img style='max-width: 250px; max-height: 50px;' src='" . TITLELOGO . "'>";
                     
                         endif;
                     
@@ -644,6 +661,15 @@ endif;
                             </a>
                         
                         </li>
+                        
+                        <li style="display: none" id="splitView" class="dropdown some-btn">
+                            
+                            <a class="spltView">
+                                
+                                <i class="mdi mdi-window-close"></i>
+                            
+                            </a>
+                        </li>
                     
                     </ul>
                 
@@ -1150,6 +1176,35 @@ endif;
             
         };
             
+        function notify(notifyString, notifyIcon, notifyType, notifyLength) {
+            
+            var notifyString = notifyString;
+            var notifyIcon = notifyIcon;
+            var notifyType = notifyType;
+            var notifyLength = notifyLength;
+
+            setTimeout(function () {
+
+                var notification = new NotificationFx({
+
+                    message: '<span class="fa fa-' + notifyIcon + ' fa-2x"></span><p>' + notifyString + '</p>',
+
+                    layout: 'bar',
+
+                    effect: 'slidetop',
+                    
+                    ttl: notifyLength,
+
+                    type: notifyType // notice, warning, success or error
+
+                });
+
+                notification.show();
+
+            }, 300);
+
+        }
+            
         $('#loginSubmit').click(function() {
             
             if ($('#login').smkValidate()) {
@@ -1295,22 +1350,49 @@ endif;
         }); 
             
         $(function () {
+
             <?php if(!empty($USER->info_log)) : ?>
-            $.smkAlert({
-                position: 'top-left',
-                text: '<?php echo printArray($USER->info_log);?>',
-                type: 'info'
-                
-            });
+            
+            setTimeout(function () {
+
+                var notification = new NotificationFx({
+
+                    message: '<span class="fa fa-info-circle fa-2x"></span><p><?php echo printArray($USER->info_log);?></p>',
+
+                    layout: 'bar',
+
+                    effect: 'slidetop',
+
+                    type: 'notice', // notice, warning, success or error
+
+                });
+
+                notification.show();
+
+            }, 1200);
+
             <?php endif; ?>
             
             <?php if(!empty($USER->error_log)) : ?>
-            $.smkAlert({
-                position: 'top-left',
-                text: '<?php echo printArray($USER->error_log); ?>',
-                type: 'warning'
-                
-            });
+
+            setTimeout(function () {
+
+                var notification = new NotificationFx({
+
+                    message: '<span class="fa fa-exclamation-triangle fa-2x"></span><p><?php echo printArray($USER->error_log); ?></p>',
+
+                    layout: 'bar',
+
+                    effect: 'slidetop',
+
+                    type: 'warning', // notice, warning, success or error
+
+                });
+
+                notification.show();
+
+            }, 1200);
+            
             <?php endif; ?>
 
         });
@@ -1369,6 +1451,15 @@ endif;
 
         });
             
+        $('#splitView').on('click tap', function(){
+
+            $('#splitView').hide();
+            $("#content").attr("class", "content");
+            $("li[class^='tab-item rightActive']").attr("class", "tab-item");
+            $("#contentRight").html('');
+
+        });
+            
         $("li[id^='settings.phpx']").on('click tap', function(){
 
             $("img[id^='settings-icon']").attr("class", "fa-spin");
@@ -1441,7 +1532,7 @@ endif;
 
                     $("#content div[class^='iframe active']").attr("class", "iframe hidden");
 
-                    $( '<div class="iframe active" data-content-url="'+thisid+'"><iframe scrolling="auto" sandbox="allow-forms allow-same-origin allow-pointer-lock allow-scripts allow-popups allow-modals" allowfullscreen="true" webkitallowfullscreen="true" frameborder="0" style="width:100%; height:100%;" src="'+thisid+'"></iframe></div>' ).appendTo( "#content" );
+                    $( '<div class="iframe active" data-content-url="'+thisid+'"><iframe scrolling="auto" sandbox="allow-forms allow-same-origin allow-pointer-lock allow-scripts allow-popups allow-modals allow-top-navigation" allowfullscreen="true" webkitallowfullscreen="true" frameborder="0" style="width:100%; height:100%;" src="'+thisid+'"></iframe></div>' ).appendTo( "#content" );
                     
                     document.title = thistitle;
                     
@@ -1463,6 +1554,8 @@ endif;
             
             e.stopPropagation();
             
+            $('#splitView').show();
+            
             $("#content").attr("class", "content split");
             
             var thisidfull = $(this).attr("id");
@@ -1509,7 +1602,7 @@ endif;
 
                     $("#contentRight div[class^='iframe active']").attr("class", "iframe hidden");
 
-                    $( '<div class="iframe active" data-content-url="'+thisid+'"><iframe scrolling="auto" sandbox="allow-forms allow-same-origin allow-pointer-lock allow-scripts allow-popups allow-modals" allowfullscreen="true" webkitallowfullscreen="true" frameborder="0" style="width:100%; height:100%;" src="'+thisid+'"></iframe></div>' ).appendTo( "#contentRight" );
+                    $( '<div class="iframe active" data-content-url="'+thisid+'"><iframe scrolling="auto" sandbox="allow-forms allow-same-origin allow-pointer-lock allow-scripts allow-popups allow-modals allow-top-navigation" allowfullscreen="true" webkitallowfullscreen="true" frameborder="0" style="width:100%; height:100%;" src="'+thisid+'"></iframe></div>' ).appendTo( "#contentRight" );
                     
                     document.title = thistitle;
                     
@@ -1530,21 +1623,38 @@ endif;
         });
             
         Mousetrap.bind('ctrl+shift+up', function(e) {
+            
             var getCurrentTab = $("li[class^='tab-item active']");
             var previousTab = getCurrentTab.prev().attr( "class", "tab-item" );
             previousTab.trigger("click");
             return false;
+            
         }); 
             
         Mousetrap.bind('ctrl+shift+down', function(e) {
+            
             var getCurrentTab = $("li[class^='tab-item active']");
             var nextTab = getCurrentTab.next().attr( "class", "tab-item" );
             nextTab.trigger("click");
             return false;
+            
         });     
 
         Mousetrap.bind('s s', function() { $("li[id^='settings.phpx']").trigger("click");  });
         
+        Mousetrap.bind('p p', function() { $("a[class^='fix-nav']").trigger("click");  });
+            
+        Mousetrap.bind('m m', function() { $("div[class^='hamburger']").trigger("click");  });
+            
+        Mousetrap.bind('r r', function() { $("a[id^='reload']").trigger("click");  });
+            
+        Mousetrap.bind('f f', function() { $("a[class^='fullscreen']").trigger("click");  });
+            
+        <?php if($tabSetup == "No") : foreach(range(1,$tabCount) as $index) : if ($index == 10) : break; endif;?>
+            
+        Mousetrap.bind('ctrl+shift+<?php echo $index; ?>', function() { $("ul[id^='tabList'] li:nth-child(<?php echo $index; ?>)").trigger("click"); });    
+        <?php endforeach; endif; ?>
+        
         Mousetrap.bind('esc esc', function() {
             
             $("#content").attr("class", "content");

+ 29 - 27
lang/de.ini

@@ -108,30 +108,32 @@ SEARCH = "Suchen"
 SHOW = "Zeige"
 ENTRIES = "Einträge"
 SHOW_ENTRY_CURRENT = "Zeige|bis|von|Einträgen"
-HELP = "Help"
-ADDING_TABS = "Adding Tabs"
-QUICK_ACCESS = "Quick Access Tabs [Bookmarks/Hash]"
-START_ADDING_TABS = "To start adding tabs, all you need to do is type the Tab Name and hit ENTER. The following information is then needed:"
-TAB_URL_ABOUT = "The URL of the Tab"
-ICON_URL_ABOUT = "You may either use an icon from the box, or you may upload or use an image provided that is listed in the View Icons section"
-DEFAULT_ABOUT = "You may have one tab that will be loaded upon webpage launch"
-ACTIVE_ABOUT = "This option allows the tab to be loaded on the list of  tabs"
-USER_ABOUT = "This option allows the tab to loaded on a users lists if they are signed in"
-GUEST_ABOUT = "This option allows the tab to loaded on the list of anyone accessing the webpage"
-NO_IFRAME_ABOUT = "This option will open the tab in a new window and not inside the webpage"
-QUICK_ACCESS_ABOUT = "For easy access we have made it so you can use [#] along with the Tab Name to access your tab easily.  Just type in the hash into the URL and you are good to go.  You can use this for straight access to a tab or for a bookmark.  i.e."
-SIDE_BY_SIDE = "Side by Side View"
-SIDE_BY_SIDE_ABOUT = "For multi-taskers we have setup an easy way for you to work on two things at once.  To get started, here are the basics:"
-SIDE_BY_SIDE_INSTRUCTIONS1 = "Right-Click on any tab to enable side by side"
-SIDE_BY_SIDE_INSTRUCTIONS2 = "If you would like to refresh the right side, Right-Click on this icon"
-SIDE_BY_SIDE_INSTRUCTIONS3 = "Once you are done with side by side, use the [esc] + [esc] Keyboard Shortcut listed below"
-KEYBOARD_SHORTCUTS = "Keyboard Shortcuts"
-KEYBOARD_SHORTCUTS_ABOUT = "Organizr has some bulit-in keyboard shortcuts for ease of use.  The following is useable if Organizr has focus and not the iFrame."
-KEYBOARD_INSTRUCTIONS1 = "will take you to the settings menu"
-KEYBOARD_INSTRUCTIONS2 = "will take you to the next tab"
-KEYBOARD_INSTRUCTIONS3 = "will take you to the previous tab"
-KEYBOARD_INSTRUCTIONS4 = "will exit Side by Side View"
-CLOSE = "Close"
-NO_ENTRIES = "No entries to show"
-FILTERED = "(filtered from|total entries)"
-NO_MATCHING = "No matching records found"
+HELP = "Hilfe"
+ADDING_TABS = "Tabs hinzufügen"
+QUICK_ACCESS = "Schnellzugriff Tabs [Lesezeichen/Raute]"
+START_ADDING_TABS = "Um Tabs hinzuzufügen, müssen Sie nur einen Namen eingeben und ENTER drücken. Die Folgenden Informationen werden danach benötigt:"
+TAB_URL_ABOUT = "Die URL des Tabs"
+ICON_URL_ABOUT = "Sie können entweder ein Icon aus der Box nutzen, selbst eins hochladen oder eines der im Icons ansehen Bereich aufgelisteten nutzen"
+DEFAULT_ABOUT = "Sie können einen Tab festlegen, der beim Laden der Seite angezeigt wird"
+ACTIVE_ABOUT = "Diese Option erlaubt den Tab in der Tabliste anzuzeigen"
+USER_ABOUT = "Diese Option erlaubt den Tab nach der Anmeldung eines Benutzers anzuzeigen"
+GUEST_ABOUT = "Diese Option erlaubt den Tab jedem Besucher dieser Seite anzuzeigen"
+NO_IFRAME_ABOUT = "Mit dieser Option wird der Tab in einem neuen Fenster, statt innerhalb der Seite geladen"
+QUICK_ACCESS_ABOUT = "Zum einfachen Aufrufen wurde [#] so angelegt, dass es neben dem Namen des Tabs genutzt werden kann. Tippen Sie einfach die Raute in die URL und es kann losgehen. Sie können dies für direkte Zugriffe, sowie Lesezeichen nutzen.  bspw."
+SIDE_BY_SIDE = "Geteilte Ansicht"
+SIDE_BY_SIDE_ABOUT = "Für Multitasker wurde ein einfacher Weg angelegt, zwei Dinge gleichzeitig zu erledigen. Um loszulegen, hier die Grundlagen:"
+SIDE_BY_SIDE_INSTRUCTIONS1 = "Rechtsklick auf beliebigen Tab um Geilte Ansicht zu aktivieren"
+SIDE_BY_SIDE_INSTRUCTIONS2 = "Um die rechte Seite neu zu laden, auf dieses Symbol rechtsklicken"
+SIDE_BY_SIDE_INSTRUCTIONS3 = "Wenn Sie mit der Geteilten Ansicht fertig sind, nutzen Sie das [esc] + [esc] Tastaturkürzel, wie unten aufgeführt"
+KEYBOARD_SHORTCUTS = "Tastaturkürzel"
+KEYBOARD_SHORTCUTS_ABOUT = "Organizr enthält einige Tastaturkürzel zur einfachen Handhabung. Folgendes ist nutzbar, wenn der Focus auf Organizr und nicht dem iFrame liegt."
+KEYBOARD_INSTRUCTIONS1 = "öffnet die Einstellungen"
+KEYBOARD_INSTRUCTIONS2 = "öffnet den nächsten Tab"
+KEYBOARD_INSTRUCTIONS3 = "öffnet den vorherigen Tab"
+KEYBOARD_INSTRUCTIONS4 = "beendet die geteilte Ansicht"
+CLOSE = "Schließen"
+NO_ENTRIES = "Keine anzuzeigenden Einträge"
+FILTERED = "(gefiltert aus|Gesamteinträgen)"
+NO_MATCHING = "Keine passenden Einträge gefunden"
+TAB_NOT_LOADING = "Tab not loading?"
+TAB_NOT_LOADING_ABOUT = "Some websites block their website from displaying inside an iFrame.  To circumvent this, we can install a plugin to ignore the headers sent by these webpages thus allowing us to load the website.  Here is the download for your browser:"

+ 3 - 1
lang/en.ini

@@ -134,4 +134,6 @@ KEYBOARD_INSTRUCTIONS4 = "will exit Side by Side View"
 CLOSE = "Close"
 NO_ENTRIES = "No entries to show"
 FILTERED = "(filtered from|total entries)"
-NO_MATCHING = "No matching records found"
+NO_MATCHING = "No matching records found"
+TAB_NOT_LOADING = "Tab not loading?"
+TAB_NOT_LOADING_ABOUT = "Some websites block their website from displaying inside an iFrame.  To circumvent this, we can install a plugin to ignore the headers sent by these webpages thus allowing us to load the website.  Here is the download for your browser:"

+ 99 - 97
lang/es.ini

@@ -1,106 +1,106 @@
 WELCOME = "Bienvenido"
 OPTIONS = "Opciones"
-EDIT_INFO = "Editar Informacion"
+EDIT_INFO = "Editar Información"
 UPDATE = "Actualizar"
-GO_BACK = "Regresa"
-LOGOUT = "Cerrar Sesión"
-LOGIN = "Iniciar Sesión"
-DO_YOU_WANT_TO_LOGOUT = "¿Quieres salir?"
-YES_WORD = "Si"
+GO_BACK = "Regresar"
+LOGOUT = "Cerrar sesión"
+LOGIN = "Iniciar sesión"
+DO_YOU_WANT_TO_LOGOUT = "¿Quieres cerrar la sesión?"
+YES_WORD = "Sí"
 NO_WORD = "No"
-EMAIL_ADDRESS = "E-mail Address"
-EMAIL = "Correo Electrónico"
+EMAIL_ADDRESS = "Correo electrónico"
+EMAIL = "Correo electrónico"
 PASSWORD = "Contraseña"
-PASSWORD_AGAIN = "Contraseña de Nuevo"
-ADMIN = "Admin"
-USER = "User"
-HOLD_UP = "Un Momento!"
-LOOKS_LIKE_YOU_DONT_HAVE_ACCESS = "Parese que no tienes acesso."
-USERNAME = "Nombre de Usuario"
-REMEMBER_ME = "Recuérdame"
-FORGOT_PASSWORD = "Se te olvidó tu contraseña"
-RESET_PASSWORD = "Restablecer la contraseña"
-DATABASE_PATH = "Ruta de la Base de Datos"
-SPECIFY_LOCATION = "Especifique la ruta de acceso de la que desea guardar los archivos de base de datos."
-CURRENT_DIRECTORY = "Directorio Actual"
-PARENT_DIRECTORY = "Parent Directory"
-SET_DATABASE_LOCATION = "Set Database Location"
-SET_TIMEZONE = "Set Timezone"
-DONT_WORRY = "Don't worry, your database is still there. Just use the same location you have it in."
-SAVE_LOCATION = "Save Location"
-TIME_TO_LOGIN = "Now that you created an Admin account, time to sign and start making some tabs..."
-AWESOME = "Awesome!"
-REGISTER = "Register"
-CREATE_ADMIN = "Create Admin"
-CREATE_ACCOUNT = "Create an account for Admin Access"
-SETTINGS = "Settings"
-UPLOAD_ICONS = "Upload Icons"
-VIEW_ICONS = "View Icons"
-ALL_ICONS = "All Icons"
-CLICK_ICON = "Click icon to copy path to clipboard"
-TABS = "Tabs"
-TYPE_HIT_ENTER = "Type in new TAB Name and hit ENTER"
+PASSWORD_AGAIN = "Contraseña otra vez"
+ADMIN = "Administrador" 
+USER = "Usuario" 
+HOLD_UP = "¡Espera!" 
+LOOKS_LIKE_YOU_DONT_HAVE_ACCESS = "Parece que no tienes acceso." 
+USERNAME = "Nombre de usuario" 
+REMEMBER_ME = "Recuérdame" 
+FORGOT_PASSWORD = "¿Has olvidado tu contraseña?" 
+RESET_PASSWORD = "Restablecimiento de contraseña" 
+DATABASE_PATH = "Camino de la base de datos"
+SPECIFY_LOCATION = "¿Dónde quieres guardar los archivos de la base de datos?"
+CURRENT_DIRECTORY = "Directorio actual"
+PARENT_DIRECTORY = "Directorio matriz"
+SET_DATABASE_LOCATION = "Establecer la localización de la base de datos"
+SET_TIMEZONE = "Establecer zona horaria"
+DONT_WORRY = "No te preocupes, tu base de datos sigue ahí. Debes usar la misma localización que normalmente."
+SAVE_LOCATION = "Guardar localización"
+TIME_TO_LOGIN = "Ahora que creaste una cuenta de administrador, puedes empezar a hacer algunas pestañas."
+AWESOME = "¡Impresionante!"
+REGISTER = "Inscribirse"
+CREATE_ADMIN = "Crear administrador"
+CREATE_ACCOUNT = "Crear una cuenta para el acceso de administrador"
+SETTINGS = "Configuración"
+UPLOAD_ICONS = "Subir iconos"
+VIEW_ICONS = "Ver iconos"
+ALL_ICONS = "Todos los iconos"
+CLICK_ICON = "Haga clic en el icono para copiar la ruta al portapapeles"
+TABS = "Pestañas"
+TYPE_HIT_ENTER = "Escriba un nuevo nombre para la pestaña y pulse ENTER"
 ACTIVE = "Activo"
-GUEST = "Guest"
-NO_IFRAME = "No iFrame"
+GUEST = "Invitido"
+NO_IFRAME = "Sin iFrame"
 OR = "O"
-DEFAULT = "Default"
-NEW_TAB_NAME = "New Tab Name"
-TAB_URL = "Tab URL"
-ICON_URL = "Icon URL"
-SAVE_TABS = "Save Tabs"
-CHOOSE_THEME = "Choose Theme"
-SAVE_OPTIONS = "Save Options"
-TITLE = "Titulo"
-TITLE_TEXT = "Title Text"
-NAVIGATION_BARS = "Navigation Bars"
-TOP_BAR = "Top Bar"
-BOTTOM_BAR = "Bottom Bar"
-SIDE_BAR = "Side Bar"
-HOVER_BG = "Hover Background"
-ACTIVE_TAB = "Active Tab"
-ACTIVE_TAB_BG = "Active Tab BG"
-ACTIVE_TAB_ICON = "Active Tab Icon"
-ACTIVE_TAB_TEXT = "Active Tab Text"
-INACTIVE_TAB = "Inactive Tab"
-INACTIVE_ICON = "Inactive Icon"
-INACTIVE_TEXT = "Inactive Text"
-LOGIN_STATUS = "Login Status"
-LAST_SEEN = "Last Seen"
-USER_GROUP = "User Group"
-USER_ACTIONS = "User Actions"
-DELETE = "Delete"
-LOGGED_IN = "Logged In"
-LOGGED_OUT = "Logged Out"
-GOOD_LOGINS = "Good Logins"
-BAD_LOGINS = "Bad Logins"
-DATE = "Date"
-IP_ADDRESS = "IP Address"
-TYPE = "Type"
-NOTHING_LOG = "Nothing in log..........."
-PURGE_LOG = "Purge Log"
-LOGO_URL_TITLE = "Logo URL For Title"
-LOADING_ICON_URL = "Loading Icon URL"
-ABOUT = "About"
-INSTALLED_VERSION = "Installed Version"
-CURRENT_VERSION = "Current Version"
-DELETE_DATABASE = "Delete Database"
-DELETE_WARNING = "Only do this if an upgrade requires it. This will delete your database so there is no going back and you will need to set everything back up, including user accounts."
-SUBMIT_ISSUE = "Submit Issue Or Request"
-VIEW_ON_GITHUB = "View On GitHub"
-CHAT_WITH_US = "Chat With Us"
-TABS_SAVED = "Tabs Saved!"
-APPLY_CHANGES = "Apply Changes"
-APPLY_RELOAD = "Apply Changes To Reload The Page!"
-OK = "OK"
-COLORS_SAVED = "Colors Saved!"
-NEW_VERSION = "New Version Available"
-CLICK_INFO = "Click Info Tab"
-WHATS_NEW = "What's New in"
-CHANGES = "Changes"
-AUTO_UPGRADE = "Auto Upgrade"
-SOFTWARE_IS = "Software is"
-UP_TO_DATE = "Up-to-date!"
+DEFAULT = "Predeterminado"
+NEW_TAB_NAME = "Nombre de la nueva pestaña"
+TAB_URL = "URL de la pestaña"
+ICON_URL = "URL del icono"
+SAVE_TABS = "Guardar pestañas"
+CHOOSE_THEME = "Elegir Tema"
+SAVE_OPTIONS = "Guardar Opciones"
+TITLE = "Título"
+TITLE_TEXT = "Texto del título"
+NAVIGATION_BARS = "Barras de navegación"
+TOP_BAR = "Barra superior"
+BOTTOM_BAR = "Barra inferior"
+SIDE_BAR = "Barra lateral"
+HOVER_BG = "Puedes posar el cursor sobre el fondo"
+ACTIVE_TAB = "Pestaña activa"
+ACTIVE_TAB_BG = "Fondo de la pestaña activa"
+ACTIVE_TAB_ICON = "Icono de la pestaña activa"
+ACTIVE_TAB_TEXT = "Texto de la pestaña activa"
+INACTIVE_TAB = "Pestaña inactiva"
+INACTIVE_ICON = "Icono inactivo"
+INACTIVE_TEXT = "Texto inactivo"
+LOGIN_STATUS = "Estado del acceso"
+LAST_SEEN = "Visto por última vez"
+USER_GROUP = "Grupo de usuarios"
+USER_ACTIONS = "Acciones del usuario"
+DELETE = "Eliminar"
+LOGGED_IN = "Conectado"
+LOGGED_OUT = "Disconectado"
+GOOD_LOGINS = "Buen acceso"
+BAD_LOGINS = "Acceso defectuoso"
+DATE = "Fecha"
+IP_ADDRESS = "Dirección IP"
+TYPE = "Escribe"
+NOTHING_LOG = "Nada en el registro..........."
+PURGE_LOG = "Purgar el registro"
+LOGO_URL_TITLE = "URL del logotipo para el título"
+LOADING_ICON_URL = "Cargando la URL de los iconos"
+ABOUT = "Acerca de"
+INSTALLED_VERSION = "Versión instalada""
+CURRENT_VERSION = "Versión actual""
+DELETE_DATABASE = "Eliminar base de datos "
+DELETE_WARNING = "Haga esto solo si una actualización lo requiere. Esto eliminará su base de datos. No se pueda volver atrás y necesitará configurarlo todo, incluyendo las cuentas de usuario"
+SUBMIT_ISSUE = "Enviar un problema o una solicitud" 
+VIEW_ON_GITHUB = "Ver en GitHub" 
+CHAT_WITH_US = "Chatea con nosotros" T
+ABS_SAVED = "Pestañas guardadas" 
+APPLY_CHANGES = "Aplicar los cambios" 
+APPLY_RELOAD = "Aplicar cambios para actualizar la página" 
+OK = "OK" 
+COLORS_SAVED = "Colores guardados" 
+NEW_VERSION = "Nueva versión disponible" 
+CLICK_INFO = "Haga clic en la pestaña información" 
+WHATS_NEW = "Qué hay de nuevo en" 
+CHANGES = "Cambios" 
+AUTO_UPGRADE = "Actualización automática" 
+SOFTWARE_IS = "Software es" 
+UP_TO_DATE = "¡Actualizado!"
 PREVIOUS = "Previous"
 NEXT = "Next"
 PRINT = "Print"
@@ -134,4 +134,6 @@ KEYBOARD_INSTRUCTIONS4 = "will exit Side by Side View"
 CLOSE = "Close"
 NO_ENTRIES = "No entries to show"
 FILTERED = "(filtered from|total entries)"
-NO_MATCHING = "No matching records found"
+NO_MATCHING = "No matching records found"
+TAB_NOT_LOADING = "Tab not loading?"
+TAB_NOT_LOADING_ABOUT = "Some websites block their website from displaying inside an iFrame.  To circumvent this, we can install a plugin to ignore the headers sent by these webpages thus allowing us to load the website.  Here is the download for your browser:"

+ 37 - 35
lang/fr.ini

@@ -93,7 +93,7 @@ TABS_SAVED = "Onglets sauvegardés!"
 APPLY_CHANGES = "Appliquer les changements"
 APPLY_RELOAD = "Appliquer les changements pour rafraîchir la page"
 OK = "OK"
-COLORS_SAVED = "Couleurs sauvegardées!
+COLORS_SAVED = "Couleurs sauvegardées!"
 NEW_VERSION = "Nouvelle version disponible "
 CLICK_INFO = "Cliquer l'onglet Info"
 WHATS_NEW = "Quoi de neuf dans"
@@ -101,37 +101,39 @@ CHANGES = "Changements"
 AUTO_UPGRADE = "Mise à jour automatique"
 SOFTWARE_IS = "Software est"
 UP_TO_DATE = "Mis à jour!"
-PREVIOUS = "Previous"
-NEXT = "Next"
-PRINT = "Print"
-SEARCH = "Search"
-SHOW = "Show"
-ENTRIES = "Entries"
-SHOW_ENTRY_CURRENT = "Showing|to|of|entries"
-HELP = "Help"
-ADDING_TABS = "Adding Tabs"
-QUICK_ACCESS = "Quick Access Tabs [Bookmarks/Hash]"
-START_ADDING_TABS = "To start adding tabs, all you need to do is type the Tab Name and hit ENTER. The following information is then needed:"
-TAB_URL_ABOUT = "The URL of the Tab"
-ICON_URL_ABOUT = "You may either use an icon from the box, or you may upload or use an image provided that is listed in the View Icons section"
-DEFAULT_ABOUT = "You may have one tab that will be loaded upon webpage launch"
-ACTIVE_ABOUT = "This option allows the tab to be loaded on the list of  tabs"
-USER_ABOUT = "This option allows the tab to loaded on a users lists if they are signed in"
-GUEST_ABOUT = "This option allows the tab to loaded on the list of anyone accessing the webpage"
-NO_IFRAME_ABOUT = "This option will open the tab in a new window and not inside the webpage"
-QUICK_ACCESS_ABOUT = "For easy access we have made it so you can use [#] along with the Tab Name to access your tab easily.  Just type in the hash into the URL and you are good to go.  You can use this for straight access to a tab or for a bookmark.  i.e."
-SIDE_BY_SIDE = "Side by Side View"
-SIDE_BY_SIDE_ABOUT = "For multi-taskers we have setup an easy way for you to work on two things at once.  To get started, here are the basics:"
-SIDE_BY_SIDE_INSTRUCTIONS1 = "Right-Click on any tab to enable side by side"
-SIDE_BY_SIDE_INSTRUCTIONS2 = "If you would like to refresh the right side, Right-Click on this icon"
-SIDE_BY_SIDE_INSTRUCTIONS3 = "Once you are done with side by side, use the [esc] + [esc] Keyboard Shortcut listed below"
-KEYBOARD_SHORTCUTS = "Keyboard Shortcuts"
-KEYBOARD_SHORTCUTS_ABOUT = "Organizr has some bulit-in keyboard shortcuts for ease of use.  The following is useable if Organizr has focus and not the iFrame."
-KEYBOARD_INSTRUCTIONS1 = "will take you to the settings menu"
-KEYBOARD_INSTRUCTIONS2 = "will take you to the next tab"
-KEYBOARD_INSTRUCTIONS3 = "will take you to the previous tab"
-KEYBOARD_INSTRUCTIONS4 = "will exit Side by Side View"
-CLOSE = "Close"
-NO_ENTRIES = "No entries to show"
-FILTERED = "(filtered from|total entries)"
-NO_MATCHING = "No matching records found"
+PREVIOUS = "Précédent"
+NEXT = "Suivant"
+PRINT = "Imprimer"
+SEARCH = "Recherche"
+SHOW = "Voir"
+ENTRIES = "Entrées"
+SHOW_ENTRY_CURRENT = "Montrer|vers|de|entrées"
+HELP = "Aide"
+ADDING_TABS = "Ajouter un Onglets"
+QUICK_ACCESS = "Accés rapide aux Onglets[Favoris/Hash]"
+START_ADDING_TABS = "Pour commencer à ajouter des onglets, il vous suffit de taper le nom de l'onglet et de cliquer sur Entrée. Les informations suivantes sont alors nécessaires:"
+TAB_URL_ABOUT = "Adresse URL de L'onglet"
+ICON_URL_ABOUT = "Vous pouvez soit utiliser un icon provenant de la boite, ou vous pouvez uploadez ou utilisez une image deja fournie listé dans la Section Voir les icônes"
+DEFAULT_ABOUT = "Vous pouvez avoir un onglet qui sera chargé au lancement de la page Web"
+ACTIVE_ABOUT = "Cette option permet de charger l'onglet dans la liste des onglets"
+USER_ABOUT = "Cette option permet de charger l'onglet aux utilisateurs s'ils sont connectés"
+GUEST_ABOUT = "Cette option permet de charger l'onglet pour toute personne accédant à la page Web"
+NO_IFRAME_ABOUT = "Cette option ouvre l'onglet dans une nouvelle fenêtre et non à l'intérieur de la page Web"
+QUICK_ACCESS_ABOUT = "Pour un accès facile, nous avons fait en sorte que vous puissiez utiliser [#] avec le nom de l’onglet pour accéder à l’onglet facilement. Tapez uniquement le dièse dans l’URL et le tour est joué. Ceci peut être utilisé pour accéder directement à l’onglet ou pour un favori. C.à.d."
+SIDE_BY_SIDE = "Vue côte à côte"
+SIDE_BY_SIDE_ABOUT = "Pour ceux qui sont multi-tâches, nous avons configuré un moyen facile pour vous de travailler sur deux choses à la fois. Pour commencer, voici les bases:"
+SIDE_BY_SIDE_INSTRUCTIONS1 = "Cliquez avec le bouton droit de la souris sur n’importe quel onglet pour mettre côte à côte."
+SIDE_BY_SIDE_INSTRUCTIONS2 = "Si vous aimeriez rafraîchir le côté droit, cliquez avec le bouton droit de la souris sur cet icône"
+SIDE_BY_SIDE_INSTRUCTIONS3 = "Quand vous avez terminé du côte à côte, utilisez le [esc] + [esc] raccourci clavier listé ci-dessous" 
+KEYBOARD_SHORTCUTS = "Raccourcis clavier"
+KEYBOARD_SHORTCUTS_ABOUT = "Organizer dispose de certains raccourcis clavier intégrés pour une utilisation encore plus facile.  Ceci est utilisables si Organizr est fixé et non en iFrame."
+KEYBOARD_INSTRUCTIONS1 = "Allé au menu Paramètres"
+KEYBOARD_INSTRUCTIONS2 = "Allé a l'onglets Suivant"
+KEYBOARD_INSTRUCTIONS3 = "Allé a l'onglets Précedent"
+KEYBOARD_INSTRUCTIONS4 = "Fermera le mode Side by Side"
+CLOSE = "Fermer"
+NO_ENTRIES = "Aucune entrée à afficher"
+FILTERED = "(filtré de|entrées totales)"
+NO_MATCHING = "Aucun enregistrement correspondant trouvé"
+TAB_NOT_LOADING = "Tab not loading?"
+TAB_NOT_LOADING_ABOUT = "Some websites block their website from displaying inside an iFrame.  To circumvent this, we can install a plugin to ignore the headers sent by these webpages thus allowing us to load the website.  Here is the download for your browser:"

+ 3 - 1
lang/it.ini

@@ -134,4 +134,6 @@ KEYBOARD_INSTRUCTIONS4 = "will exit Side by Side View"
 CLOSE = "Close"
 NO_ENTRIES = "No entries to show"
 FILTERED = "(filtered from|total entries)"
-NO_MATCHING = "No matching records found"
+NO_MATCHING = "No matching records found"
+TAB_NOT_LOADING = "Tab not loading?"
+TAB_NOT_LOADING_ABOUT = "Some websites block their website from displaying inside an iFrame.  To circumvent this, we can install a plugin to ignore the headers sent by these webpages thus allowing us to load the website.  Here is the download for your browser:"

+ 31 - 2
lang/nl.ini

@@ -105,6 +105,35 @@ PREVIOUS = "Vorige"
 NEXT = "Volgende"
 PRINT = "Print"
 SEARCH = "Zoek"
-SHOW_ENTRYS = "Toon"
+SHOW = "Toon"
 ENTRIES = "INZENDINGEN"
-SHOW_ENTRY_CURRENT = "Laat %1 tot %2 tot %3 inzendingen zien"
+SHOW_ENTRY_CURRENT = "Laat|tot|tot|inzendingen zien"
+HELP = "Help"
+ADDING_TABS = "Adding Tabs"
+QUICK_ACCESS = "Quick Access Tabs [Bookmarks/Hash]"
+START_ADDING_TABS = "To start adding tabs, all you need to do is type the Tab Name and hit ENTER. The following information is then needed:"
+TAB_URL_ABOUT = "The URL of the Tab"
+ICON_URL_ABOUT = "You may either use an icon from the box, or you may upload or use an image provided that is listed in the View Icons section"
+DEFAULT_ABOUT = "You may have one tab that will be loaded upon webpage launch"
+ACTIVE_ABOUT = "This option allows the tab to be loaded on the list of  tabs"
+USER_ABOUT = "This option allows the tab to loaded on a users lists if they are signed in"
+GUEST_ABOUT = "This option allows the tab to loaded on the list of anyone accessing the webpage"
+NO_IFRAME_ABOUT = "This option will open the tab in a new window and not inside the webpage"
+QUICK_ACCESS_ABOUT = "For easy access we have made it so you can use [#] along with the Tab Name to access your tab easily.  Just type in the hash into the URL and you are good to go.  You can use this for straight access to a tab or for a bookmark.  i.e."
+SIDE_BY_SIDE = "Side by Side View"
+SIDE_BY_SIDE_ABOUT = "For multi-taskers we have setup an easy way for you to work on two things at once.  To get started, here are the basics:"
+SIDE_BY_SIDE_INSTRUCTIONS1 = "Right-Click on any tab to enable side by side"
+SIDE_BY_SIDE_INSTRUCTIONS2 = "If you would like to refresh the right side, Right-Click on this icon"
+SIDE_BY_SIDE_INSTRUCTIONS3 = "Once you are done with side by side, use the [esc] + [esc] Keyboard Shortcut listed below"
+KEYBOARD_SHORTCUTS = "Keyboard Shortcuts"
+KEYBOARD_SHORTCUTS_ABOUT = "Organizr has some bulit-in keyboard shortcuts for ease of use.  The following is useable if Organizr has focus and not the iFrame."
+KEYBOARD_INSTRUCTIONS1 = "will take you to the settings menu"
+KEYBOARD_INSTRUCTIONS2 = "will take you to the next tab"
+KEYBOARD_INSTRUCTIONS3 = "will take you to the previous tab"
+KEYBOARD_INSTRUCTIONS4 = "will exit Side by Side View"
+CLOSE = "Close"
+NO_ENTRIES = "No entries to show"
+FILTERED = "(filtered from|total entries)"
+NO_MATCHING = "No matching records found"
+TAB_NOT_LOADING = "Tab not loading?"
+TAB_NOT_LOADING_ABOUT = "Some websites block their website from displaying inside an iFrame.  To circumvent this, we can install a plugin to ignore the headers sent by these webpages thus allowing us to load the website.  Here is the download for your browser:"

Разница между файлами не показана из-за своего большого размера
+ 105 - 91
settings.php


+ 2 - 1
translate.php

@@ -42,7 +42,8 @@ class setLanguage {
         
         endif; 
         
-        $translatedWord = str_replace( array( "'","'" ),'', $translatedWord );
+        //$translatedWord = str_replace( array( "'","'" ),'', $translatedWord );
+        $translatedWord = htmlspecialchars($translatedWord, ENT_QUOTES);
         
         return vsprintf($translatedWord, $allWords);
         

Некоторые файлы не были показаны из-за большого количества измененных файлов