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

Merge pull request #49 from huqi1980/master

20190828
huqi1980 6 лет назад
Родитель
Сommit
359f60febc
100 измененных файлов с 2603 добавлено и 503 удалено
  1. 1168 0
      o2web/source/o2_core/init.js
  2. 28 87
      o2web/source/o2_core/o2.js
  3. 11 9
      o2web/source/o2_core/o2/o2.core.js
  4. BIN
      o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/bg.png
  5. BIN
      o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/buttonbg.png
  6. 472 0
      o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/css.wcss
  7. BIN
      o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/icon/check.png
  8. BIN
      o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/icon/check_gray.png
  9. BIN
      o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/icon/closeOffice.png
  10. BIN
      o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/icon/closeOffice_gray.png
  11. BIN
      o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/icon/config.png
  12. BIN
      o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/icon/config_gray.png
  13. BIN
      o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/icon/config_single.png
  14. BIN
      o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/icon/config_single_over.png
  15. BIN
      o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/icon/createFolder.png
  16. BIN
      o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/icon/createFolder_gray.png
  17. BIN
      o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/icon/delete.png
  18. BIN
      o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/icon/delete_gray.png
  19. BIN
      o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/icon/delete_single.png
  20. BIN
      o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/icon/delete_single_over.png
  21. BIN
      o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/icon/download.png
  22. BIN
      o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/icon/downloadAll.png
  23. BIN
      o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/icon/downloadAll_gray.png
  24. BIN
      o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/icon/download_gray.png
  25. BIN
      o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/icon/download_single.png
  26. BIN
      o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/icon/download_single_over.png
  27. BIN
      o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/icon/icon.png
  28. BIN
      o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/icon/icon_gray.png
  29. BIN
      o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/icon/list.png
  30. BIN
      o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/icon/list_gray.png
  31. BIN
      o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/icon/max.png
  32. BIN
      o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/icon/max_gray.png
  33. BIN
      o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/icon/min.png
  34. BIN
      o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/icon/min_gray.png
  35. BIN
      o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/icon/office.png
  36. BIN
      o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/icon/office_gray.png
  37. BIN
      o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/icon/preview.png
  38. BIN
      o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/icon/preview_gray.png
  39. BIN
      o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/icon/property.png
  40. BIN
      o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/icon/property_gray.png
  41. BIN
      o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/icon/rename.png
  42. BIN
      o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/icon/rename_1.png
  43. BIN
      o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/icon/rename_1_gray.png
  44. BIN
      o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/icon/rename_gray.png
  45. BIN
      o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/icon/replace.png
  46. BIN
      o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/icon/replace_gray.png
  47. BIN
      o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/icon/send.png
  48. BIN
      o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/icon/send_gray.png
  49. BIN
      o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/icon/seq.png
  50. BIN
      o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/icon/seq_gray.png
  51. BIN
      o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/icon/share.png
  52. BIN
      o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/icon/share_gray.png
  53. BIN
      o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/icon/upload.png
  54. BIN
      o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/icon/upload_gray.png
  55. BIN
      o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/overbg.png
  56. BIN
      o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/selectedbg.png
  57. 459 391
      o2web/source/o2_core/o2/widget/$AttachmentController/cms/css.wcss
  58. BIN
      o2web/source/o2_core/o2/widget/$AttachmentController/cms/icon/config_single.png
  59. BIN
      o2web/source/o2_core/o2/widget/$AttachmentController/cms/icon/config_single_over.png
  60. BIN
      o2web/source/o2_core/o2/widget/$AttachmentController/cms/icon/delete_single.png
  61. BIN
      o2web/source/o2_core/o2/widget/$AttachmentController/cms/icon/delete_single_over.png
  62. BIN
      o2web/source/o2_core/o2/widget/$AttachmentController/cms/icon/download_single.png
  63. BIN
      o2web/source/o2_core/o2/widget/$AttachmentController/cms/icon/download_single_over.png
  64. 35 7
      o2web/source/o2_core/o2/widget/$AttachmentController/default/css.wcss
  65. BIN
      o2web/source/o2_core/o2/widget/$AttachmentController/default/icon/config_single.png
  66. BIN
      o2web/source/o2_core/o2/widget/$AttachmentController/default/icon/config_single2.png
  67. BIN
      o2web/source/o2_core/o2/widget/$AttachmentController/default/icon/config_single_over.png
  68. BIN
      o2web/source/o2_core/o2/widget/$AttachmentController/default/icon/delete_single.png
  69. BIN
      o2web/source/o2_core/o2/widget/$AttachmentController/default/icon/delete_single_over.png
  70. BIN
      o2web/source/o2_core/o2/widget/$AttachmentController/default/icon/download_single.png
  71. BIN
      o2web/source/o2_core/o2/widget/$AttachmentController/default/icon/download_single_over.png
  72. 92 0
      o2web/source/o2_core/o2/widget/$Dialog/cmcc_confirm/css.wcss
  73. 6 0
      o2web/source/o2_core/o2/widget/$Dialog/cmcc_confirm/dialog.html
  74. BIN
      o2web/source/o2_core/o2/widget/$Dialog/cmcc_confirm/img/bottom-bg.gif
  75. BIN
      o2web/source/o2_core/o2/widget/$Dialog/cmcc_confirm/img/bottom-left.gif
  76. BIN
      o2web/source/o2_core/o2/widget/$Dialog/cmcc_confirm/img/bottom-right.gif
  77. BIN
      o2web/source/o2_core/o2/widget/$Dialog/cmcc_confirm/img/close.png
  78. BIN
      o2web/source/o2_core/o2/widget/$Dialog/cmcc_confirm/img/resize.png
  79. BIN
      o2web/source/o2_core/o2/widget/$Dialog/cmcc_confirm/img/title-bg.gif
  80. BIN
      o2web/source/o2_core/o2/widget/$Dialog/cmcc_confirm/img/title-left.gif
  81. BIN
      o2web/source/o2_core/o2/widget/$Dialog/cmcc_confirm/img/title-right.gif
  82. 3 3
      o2web/source/o2_core/o2/widget/$Dialog/user/css.wcss
  83. 8 2
      o2web/source/o2_core/o2/widget/$Dialog/view/css.wcss
  84. 1 2
      o2web/source/o2_core/o2/widget/$Dialog/view/dialog.html
  85. 111 0
      o2web/source/o2_core/o2/widget/$Menu/cmcc/css.wcss
  86. BIN
      o2web/source/o2_core/o2/widget/$Menu/cmcc/submenu.png
  87. 5 2
      o2web/source/o2_core/o2/widget/$Tab/orgMobile/css.wcss
  88. BIN
      o2web/source/o2_core/o2/widget/$Tablet/default/icon/cancel.png
  89. BIN
      o2web/source/o2_core/o2/widget/$Tablet/default/icon/imageClipper_active.png
  90. BIN
      o2web/source/o2_core/o2/widget/$Tablet/default/icon/imageClipper_disable.png
  91. BIN
      o2web/source/o2_core/o2/widget/$Tablet/default/icon/imageClipper_normal.png
  92. BIN
      o2web/source/o2_core/o2/widget/$Tablet/default/icon/image_active.png
  93. BIN
      o2web/source/o2_core/o2/widget/$Tablet/default/icon/image_disable.png
  94. BIN
      o2web/source/o2_core/o2/widget/$Tablet/default/icon/image_normal.png
  95. BIN
      o2web/source/o2_core/o2/widget/$Tablet/default/icon/ok.png
  96. 100 0
      o2web/source/o2_core/o2/widget/$Toolbar/cmcc/css.wcss
  97. BIN
      o2web/source/o2_core/o2/widget/$Toolbar/cmcc/downicon.gif
  98. BIN
      o2web/source/o2_core/o2/widget/$Toolbar/cmcc/separatorbg.gif
  99. BIN
      o2web/source/o2_core/o2/widget/$Toolbar/cmcc/submenu.png
  100. 104 0
      o2web/source/o2_core/o2/widget/$Toolbar/documentEdit/css.wcss

+ 1168 - 0
o2web/source/o2_core/init.js

@@ -0,0 +1,1168 @@
+/** ***** BEGIN LICENSE BLOCK *****
+ * |------------------------------------------------------------------------------|
+ * | O2OA 活力办公 创意无限    o2.js                                                 |
+ * |------------------------------------------------------------------------------|
+ * | Distributed under the AGPL license:                                          |
+ * |------------------------------------------------------------------------------|
+ * | Copyright © 2018, o2oa.net, o2server.io O2 Team                              |
+ * | All rights reserved.                                                         |
+ * |------------------------------------------------------------------------------|
+ *
+ *  This file is part of O2OA.
+ *
+ *  O2OA is free software: you can redistribute it and/or modify
+ *  it under the terms of the GNU Affero General Public License as published by
+ *  the Free Software Foundation, either version 3 of the License, or
+ *  (at your option) any later version.
+ *
+ *  O2OA is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU Affero General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with Foobar.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ * ***** END LICENSE BLOCK ******/
+
+(function(){
+    var _href = window.location.href;
+    var _debug = (_href.indexOf("debugger")!==-1);
+    var _par = _href.substr(_href.lastIndexOf("?")+1, _href.length);
+    var _lp = "zh-cn";
+    if (_par){
+        var _parList = _par.split("&");
+        for (var i=0; i<_parList.length; i++){
+            var _v = _parList[i];
+            var _kv = _v.split("=");
+            if (_kv[0].toLowerCase()==="lg") _lp = _kv[1];
+        }
+    }
+    this.o2 = {
+        "version": {
+            "v": '2.1.0',
+            "build": "2018.11.22",
+            "info": "O2OA 活力办公 创意无限. Copyright © 2018, o2oa.net O2 Team All rights reserved."
+        },
+        "session": {
+            "isDebugger": _debug,
+            "path": "/o2_core/o2"
+        },
+        "language": _lp,
+        "splitStr": /\s*(?:,|;)\s*/
+    };
+
+    var _attempt = function(){
+        for (var i = 0, l = arguments.length; i < l; i++){
+            try {
+                arguments[i]();
+                return arguments[i];
+            } catch (e){}
+        }
+        return null;
+    };
+    var _typeOf = function(item){
+        if (item == null) return 'null';
+        if (item.$family != null) return item.$family();
+        if (item.constructor == window.Array) return "array";
+
+        if (item.nodeName){
+            if (item.nodeType == 1) return 'element';
+            if (item.nodeType == 3) return (/\S/).test(item.nodeValue) ? 'textnode' : 'whitespace';
+        } else if (typeof item.length == 'number'){
+            if (item.callee) return 'arguments';
+        }
+        return typeof item;
+    };
+    this.o2.typeOf = _typeOf;
+
+    var _addListener = function(dom, type, fn){
+        if (type == 'unload'){
+            var old = fn, self = this;
+            fn = function(){
+                _removeListener(dom, 'unload', fn);
+                old();
+            };
+        }
+        if (dom.addEventListener) dom.addEventListener(type, fn, !!arguments[2]);
+        else dom.attachEvent('on' + type, fn);
+    };
+    var _removeListener = function(dom, type, fn){
+        if (dom.removeEventListener) dom.removeEventListener(type, fn, !!arguments[2]);
+        else dom.detachEvent('on' + type, fn);
+    };
+
+    //http request class
+    var _request = (function(){
+        var XMLHTTP = function(){ return new XMLHttpRequest(); };
+        var MSXML2 = function(){ return new ActiveXObject('MSXML2.XMLHTTP'); };
+        var MSXML = function(){ return new ActiveXObject('Microsoft.XMLHTTP'); };
+        return _attempt(XMLHTTP, MSXML2, MSXML);
+    })();
+
+    var _returnBase = function(number, base) {
+        return (number).toString(base).toUpperCase();
+    };
+    var _getIntegerBits = function(val, start, end){
+        var base16 = _returnBase(val, 16);
+        var quadArray = new Array();
+        var quadString = '';
+        var i = 0;
+        for (i = 0; i < base16.length; i++) {
+            quadArray.push(base16.substring(i, i + 1));
+        }
+        for (i = Math.floor(start / 4); i <= Math.floor(end / 4); i++) {
+            if (!quadArray[i] || quadArray[i] == '')
+                quadString += '0';
+            else
+                quadString += quadArray[i];
+        }
+        return quadString;
+    };
+    var _rand = function(max) {
+        return Math.floor(Math.random() * (max + 1));
+    };
+    this.o2.addListener = _addListener;
+    this.o2.removeListener = _removeListener;
+
+    //uuid
+    var _uuid = function(){
+        var dg = new Date(1582, 10, 15, 0, 0, 0, 0);
+        var dc = new Date();
+        var t = dc.getTime() - dg.getTime();
+        var tl = _getIntegerBits(t, 0, 31);
+        var tm = _getIntegerBits(t, 32, 47);
+        var thv = _getIntegerBits(t, 48, 59) + '1';
+        var csar = _getIntegerBits(_rand(4095), 0, 7);
+        var csl = _getIntegerBits(_rand(4095), 0, 7);
+
+        var n = _getIntegerBits(_rand(8191), 0, 7)
+            + _getIntegerBits(_rand(8191), 8, 15)
+            + _getIntegerBits(_rand(8191), 0, 7)
+            + _getIntegerBits(_rand(8191), 8, 15)
+            + _getIntegerBits(_rand(8191), 0, 15);
+        return tl + tm + thv + csar + csl + n;
+    };
+    this.o2.uuid = _uuid;
+
+
+    var _runCallback = function(callback, key, par){
+        if (typeOf(callback).toLowerCase() === 'function'){
+            if (key.toLowerCase()==="success") callback.apply(callback, par);
+        }else{
+            if (typeOf(callback).toLowerCase()==='object'){
+                var name = ("on-"+key).camelCase();
+                if (callback[name]) callback[name].apply(callback, par);
+            }
+        }
+    };
+    this.o2.runCallback = _runCallback;
+
+
+    //load js, css, html adn all.
+    var _getAllOptions = function(options){
+        var doc = (options && options.doc) || document;
+        if (!doc.unid) doc.unid = _uuid();
+        return {
+            "noCache": !!(options && options.nocache),
+            "reload": !!(options && options.reload),
+            "sequence": !!(options && options.sequence),
+            "doc": doc,
+            "dom": (options && options.dom) || document.body,
+            "bind": (options && options.bind) || null,
+            "position": (options && options.position) || "beforeend" //'beforebegin' 'afterbegin' 'beforeend' 'afterend'
+        }
+    };
+    var _getCssOptions = function(options){
+        var doc = (options && options.doc) || document;
+        if (!doc.unid) doc.unid = _uuid();
+        return {
+            "noCache": !!(options && options.nocache),
+            "reload": !!(options && options.reload),
+            "sequence": !!(options && options.sequence),
+            "doc": doc,
+            "dom": (options && options.dom) || null
+        }
+    };
+    var _getJsOptions = function(options){
+        var doc = (options && options.doc) || document;
+        if (!doc.unid) doc.unid = _uuid();
+        return {
+            "noCache": !!(options && options.nocache),
+            "reload": !!(options && options.reload),
+            "sequence": (!(options && options.sequence == false)),
+            "doc": doc
+        }
+    };
+    var _getHtmlOptions = function(options){
+        var doc = (options && options.doc) || document;
+        if (!doc.unid) doc.unid = _uuid();
+        return {
+            "noCache": !!(options && options.nocache),
+            "reload": !!(options && options.reload),
+            "sequence": !!(options && options.sequence),
+            "doc": doc,
+            "dom": (options && options.dom) || null,
+            "bind": (options && options.bind) || null,
+            "position": (options && options.position) || "beforeend" //'beforebegin' 'afterbegin' 'beforeend' 'afterend'
+        }
+    };
+    var _xhr_get = function(url, success, failure, completed){
+        var xhr = new _request();
+        xhr.open("GET", url, true);
+
+        var _checkCssLoaded= function(_, err){
+            if (!(xhr.readyState == 4)) return;
+            if (err){
+                if (completed) completed(xhr);
+                return;
+            }
+
+            _removeListener(xhr, 'readystatechange', _checkCssLoaded);
+            _removeListener(xhr, 'load', _checkCssLoaded);
+            _removeListener(xhr, 'error', _checkCssErrorLoaded);
+
+            if (err) {failure(xhr); return}
+            var status = xhr.status;
+            status = (status == 1223) ? 204 : status;
+            if ((status >= 200 && status < 300))
+                success(xhr);
+            else if ((status >= 300 && status < 400))
+                failure(xhr);
+            else
+                failure(xhr);
+            if (completed) completed(xhr);
+        };
+        var _checkCssErrorLoaded= function(err){ _checkCssLoaded(err) };
+
+        if ("load" in xhr) _addListener(xhr, "load", _checkCssLoaded);
+        if ("error" in xhr) _addListener(xhr, "load", _checkCssErrorLoaded);
+        _addListener(xhr, "readystatechange", _checkCssLoaded);
+        xhr.send();
+    };
+
+    var _loadSequence = function(ms, cb, op, n, thisLoaded, loadSingle, uuid, fun){
+        loadSingle(ms[n], function(module){
+            if (module) thisLoaded.push(module);
+            n++;
+            if (fun) fun(module);
+            if (n===ms.length){
+                if (cb) cb(thisLoaded);
+            }else{
+                _loadSequence(ms, cb, op, n, thisLoaded, loadSingle, uuid, fun);
+            }
+        }, op, uuid);
+    };
+    var _loadDisarray = function(ms, cb, op, thisLoaded, loadSingle, uuid, fun){
+        var count=0;
+        for (var i=0; i<ms.length; i++){
+            loadSingle(ms[i], function(module){
+                if (module) thisLoaded.push(module);
+                count++;
+                if (fun) fun(module);
+                if (count===ms.length) if (cb) cb(thisLoaded);
+            }, op, uuid);
+        }
+    };
+
+    //load js
+    //use framework url
+    var _frameworks = {
+        "o2.core": ["/o2_core/o2/o2.core.js"],
+        "o2.more": ["/o2_core/o2/o2.more.js"],
+        "ie_adapter": ["/o2_lib/o2/ie_adapter.js"],
+        "jquery": ["/o2_lib/jquery/jquery.min.js"],
+        "mootools": ["/o2_lib/mootools/mootools-1.6.0_all.js"],
+        "ckeditor": ["/o2_lib/htmleditor/ckeditor4114/ckeditor.js"],
+        "ckeditor5": ["/o2_lib/htmleditor/ckeditor5-12-1-0/ckeditor.js"],
+        "raphael": ["/o2_lib/raphael/raphael.js"],
+        "d3": ["/o2_lib/d3/d3.min.js"],
+        "ace": ["/o2_lib/ace/src-noconflict/ace.js","/o2_lib/ace/src-noconflict/ext-language_tools.js"],
+        "JSBeautifier": ["/o2_lib/JSBeautifier/beautify.js"],
+        "JSBeautifier_css": ["/o2_lib/JSBeautifier/beautify-css.js"],
+        "JSBeautifier_html": ["/o2_lib/JSBeautifier/beautify-html.js"],
+        "JSONTemplate": ["/o2_lib/mootools/plugin/Template.js"],
+        "kity": ["/o2_lib/kityminder/kity/kity.min.js"],
+        "kityminder": ["/o2_lib/kityminder/core/dist/kityminder.core.js"]
+    };
+    var _loaded = {};
+    var _loadedCss = {};
+    var _loadedHtml = {};
+    var _loadCssRunning = {};
+    var _loadCssQueue = [];
+
+    var _loadSingle = function(module, callback, op){
+        var url = module;
+        var uuid = _uuid();
+        if (op.noCache) url = (url.indexOf("?")!==-1) ? url+"&v="+uuid : addr_uri+"?v="+uuid;
+        var key = encodeURIComponent(url+op.doc.unid);
+        if (!op.reload) if (_loaded[key]){
+            if (callback)callback(); return;
+        }
+
+        var head = (op.doc.head || op.doc.getElementsByTagName("head")[0] || op.doc.documentElement);
+        var s = op.doc.createElement('script');
+        head.appendChild(s);
+        s.id = uuid;
+        s.src = url;
+
+        var _checkScriptLoaded = function(_, isAbort, err){
+            if (isAbort || !s.readyState || s.readyState === "loaded" || s.readyState === "complete") {
+                var scriptObj = {"module": module, "id": uuid, "script": s, "doc": op.doc};
+                if (!err) _loaded[key] = scriptObj;
+                _removeListener(s, 'readystatechange', _checkScriptLoaded);
+                _removeListener(s, 'load', _checkScriptLoaded);
+                _removeListener(s, 'error', _checkScriptErrorLoaded);
+                if (!isAbort || err){
+                    if (err){
+                        if (s) head.removeChild(s);
+                        if (callback)callback();
+                    }else{
+                        //head.removeChild(s);
+                        if (callback)callback(scriptObj);
+                    }
+                }
+            }
+        };
+        var _checkScriptErrorLoaded = function(e, err){
+            console.log("Error: load javascript module: "+module);
+            _checkScriptLoaded(e, true, "error");
+        };
+
+        if ('onreadystatechange' in s) _addListener(s, 'readystatechange', _checkScriptLoaded);
+        _addListener(s, 'load', _checkScriptLoaded);
+        _addListener(s, 'error', _checkScriptErrorLoaded);
+    };
+
+    var _load = function(urls, options, callback){
+        var ms = (_typeOf(urls)==="array") ? urls : [urls];
+        var op =  (_typeOf(options)==="object") ? _getJsOptions(options) : _getJsOptions(null);
+        var cb = (_typeOf(options)==="function") ? options : callback;
+
+        var modules = [];
+        for (var i=0; i<ms.length; i++){
+            var url = ms[i];
+            var module = _frameworks[url] || url;
+            if (_typeOf(module)==="array"){
+                modules = modules.concat(module)
+            }else{
+                modules.push(module)
+            }
+        }
+        var thisLoaded = [];
+        if (op.sequence){
+            _loadSequence(modules, cb, op, 0, thisLoaded, _loadSingle);
+        }else{
+            _loadDisarray(modules, cb, op, thisLoaded, _loadSingle);
+        }
+    };
+    this.o2.load = _load;
+
+    //load css
+    var _loadSingleCss = function(module, callback, op, uuid){
+        var url = module;
+        var uid = _uuid();
+        if (op.noCache) url = (url.indexOf("?")!==-1) ? url+"&v="+uid : url+"?v="+uid;
+
+        var key = encodeURIComponent(url+op.doc.unid);
+        if (_loadCssRunning[key]){
+            _loadCssQueue.push(function(){
+                _loadSingleCss(module, callback, op, uuid);
+            });
+            return;
+        }
+
+        if (_loadedCss[key]) uuid = _loadedCss[key]["class"];
+        if (op.dom) _parseDom(op.dom, function(node){ if (node.className.indexOf(uuid) == -1) node.className += ((node.className) ? " "+uuid : uuid);}, op.doc);
+
+        var completed = function(){
+            if (_loadCssRunning[key]){
+                _loadCssRunning[key] = false;
+                delete _loadCssRunning[key];
+            }
+            if (_loadCssQueue && _loadCssQueue.length){
+                (_loadCssQueue.shift())();
+            }
+        };
+
+        if (_loadedCss[key])if (!op.reload){
+            if (callback)callback(_loadedCss[key]);
+            completed();
+            return;
+        }
+
+        var success = function(xhr){
+            var cssText = xhr.responseText;
+            try{
+                if (cssText){
+                    if (op.bind) cssText = cssText.bindJson(op.bind);
+                    if (op.dom){
+                        var rex = new RegExp("(.+)(?=\\{)", "g");
+                        var match;
+                        while ((match = rex.exec(cssText)) !== null) {
+                            var prefix = "." + uuid + " ";
+                            var rule = prefix + match[0];
+                            cssText = cssText.substring(0, match.index) + rule + cssText.substring(rex.lastIndex, cssText.length);
+                            rex.lastIndex = rex.lastIndex + prefix.length;
+                        }
+                    }
+                    var style = op.doc.createElement("style");
+                    style.setAttribute("type", "text/css");
+                    var head = (op.doc.head || op.doc.getElementsByTagName("head")[0] || op.doc.documentElement);
+                    head.appendChild(style);
+                    if(style.styleSheet){
+                        var setFunc = function(){
+                            style.styleSheet.cssText = cssText;
+                        };
+                        if(style.styleSheet.disabled){
+                            setTimeout(setFunc, 10);
+                        }else{
+                            setFunc();
+                        }
+                    }else{
+                        var cssTextNode = op.doc.createTextNode(cssText);
+                        style.appendChild(cssTextNode);
+                    }
+                }
+                style.id = uid;
+                var styleObj = {"module": module, "id": uid, "style": style, "doc": op.doc, "class": uuid};
+                _loadedCss[key] = styleObj;
+                if (callback) callback(styleObj);
+            }catch (e){
+                if (callback) callback();
+                return;
+            }
+        };
+        var failure = function(xhr){
+            console.log("Error: load css module: "+module);
+            if (callback) callback();
+        };
+
+        _loadCssRunning[key] = true;
+
+        _xhr_get(url, success, failure, completed);
+    };
+
+    var _parseDomString = function(dom, fn, sourceDoc){
+        var doc = sourceDoc || document;
+        var list = doc.querySelectorAll(dom);
+        if (list.length) for (var i=0; i<list.length; i++) _parseDomElement(list[i], fn);
+    };
+    var _parseDomElement = function(dom, fn){
+        if (fn) fn(dom);
+    };
+    var _parseDom = function(dom, fn, sourceDoc){
+        var domType = _typeOf(dom);
+        if (domType==="string") _parseDomString(dom, fn, sourceDoc);
+        if (domType==="element") _parseDomElement(dom, fn);
+        if (domType==="array") for (var i=0; i<dom.length; i++) _parseDom(dom[i], fn, sourceDoc);
+    };
+    var _loadCss = function(modules, options, callback){
+        var ms = (_typeOf(modules)==="array") ? modules : [modules];
+        var op =  (_typeOf(options)==="object") ? _getCssOptions(options) : _getCssOptions(null);
+        var cb = (_typeOf(options)==="function") ? options : callback;
+
+        var uuid = "css"+_uuid();
+        var thisLoaded = [];
+        if (op.sequence){
+            _loadSequence(ms, cb, op, 0, thisLoaded, _loadSingleCss, uuid);
+        }else{
+            _loadDisarray(ms, cb, op, thisLoaded, _loadSingleCss, uuid);
+        }
+    };
+    var _removeCss = function(modules, doc){
+        var thisDoc = doc || document;
+        var ms = (_typeOf(modules)==="array") ? modules : [modules];
+        for (var i=0; i<ms.length; i++){
+            var module = modules[i];
+
+            var k = encodeURIComponent(module+(thisDoc.unid||""));
+            var removeCss = _loadedCss[k];
+            if (!removeCss) for (key in _loadedCss){
+                if (_loadedCss[key].id==module){
+                    removeCss = _loadedCss[key];
+                    k = key;
+                    break;
+                }
+            }
+            if (removeCss){
+                delete _loadedCss[k];
+                var styleNode = removeCss.doc.getElementById(removeCss.id);
+                if (styleNode) styleNode.parentNode.removeChild(styleNode);
+                removeCss = null;
+            }
+        }
+    };
+    this.o2.loadCss = _loadCss;
+    this.o2.removeCss = _removeCss;
+    Element.prototype.loadCss = function(modules, options, callback){
+        var op =  (_typeOf(options)==="object") ? options : {};
+        var cb = (_typeOf(options)==="function") ? options : callback;
+        op.dom = this;
+        _loadCss(modules, op, cb);
+    };
+
+    //load html
+    _loadSingleHtml = function(module, callback, op){
+        var url = module;
+        var uid = _uuid();
+        if (op.noCache) url = (url.indexOf("?")!==-1) ? url+"&v="+uid : url+"?v="+uid;
+        var key = encodeURIComponent(url+op.doc.unid);
+        if (!op.reload) if (_loadedHtml[key]){ if (callback)callback(_loadedHtml[key]); return; }
+
+        var success = function(xhr){
+            var htmlObj = {"module": module, "id": uid, "data": xhr.responseText, "doc": op.doc};
+            _loadedHtml[key] = htmlObj;
+            if (callback) callback(htmlObj);
+        };
+        var failure = function(){
+            console.log("Error: load html module: "+module);
+            if (callback) callback();
+        };
+        _xhr_get(url, success, failure);
+    };
+
+    var _injectHtml = function(op, data){
+        if (op.bind) data = data.bindJson(op.bind);
+        if (op.dom) _parseDom(op.dom, function(node){ node.insertAdjacentHTML(op.position, data) }, op.doc);
+    };
+    var _loadHtml = function(modules, options, callback){
+        var ms = (_typeOf(modules)==="array") ? modules : [modules];
+        var op =  (_typeOf(options)==="object") ? _getHtmlOptions(options) : _getHtmlOptions(null);
+        var cb = (_typeOf(options)==="function") ? options : callback;
+
+        var thisLoaded = [];
+        if (op.sequence){
+            _loadSequence(ms, cb, op, 0, thisLoaded, _loadSingleHtml, null, function(html){ if (html) _injectHtml(op, html.data ); });
+        }else{
+            _loadDisarray(ms, cb, op, thisLoaded, _loadSingleHtml, null, function(html){ if (html) _injectHtml(op, html.data ); });
+        }
+    };
+    this.o2.loadHtml = _loadHtml;
+    Element.prototype.loadHtml = function(modules, options, callback){
+        var op =  (_typeOf(options)==="object") ? options : {};
+        var cb = (_typeOf(options)==="function") ? options : callback;
+        op.dom = this;
+        _loadHtml(modules, op, cb);
+    };
+
+    //load all
+    _loadAll = function(modules, options, callback){
+        //var ms = (_typeOf(modules)==="array") ? modules : [modules];
+        var op =  (_typeOf(options)==="object") ? _getAllOptions(options) : _getAllOptions(null);
+        var cb = (_typeOf(options)==="function") ? options : callback;
+
+        var ms, htmls, styles, sctipts;
+        var _htmlLoaded=(!modules.html), _cssLoaded=(!modules.css), _jsLoaded=(!modules.js);
+        var _checkloaded = function(){
+            if (_htmlLoaded && _cssLoaded && _jsLoaded) if (cb) cb(htmls, styles, sctipts);
+        };
+        if (modules.html){
+            _loadHtml(modules.html, op, function(h){
+                htmls = h;
+                _htmlLoaded = true;
+                _checkloaded();
+            });
+        }
+        if (modules.css){
+            _loadCss(modules.css, op, function(s){
+                styles = s;
+                _cssLoaded = true;
+                _checkloaded();
+            });
+        }
+        if (modules.js){
+            _load(modules.js, op, function(s){
+                sctipts = s;
+                _jsLoaded = true;
+                _checkloaded();
+            });
+        }
+    };
+    this.o2.loadAll = _loadAll;
+    Element.prototype.loadAll = function(modules, options, callback){
+        var op =  (_typeOf(options)==="object") ? options : {};
+        var cb = (_typeOf(options)==="function") ? options : callback;
+        op.dom = this;
+        _loadAll(modules, op, cb);
+    };
+
+    var _getIfBlockEnd = function(v){
+        var rex = /(\{\{if\s+)|(\{\{\s*end if\s*\}\})/gmi;
+        var rexEnd = /\{\{\s*end if\s*\}\}/gmi;
+        var subs = 1;
+        while ((match = rex.exec(v)) !== null) {
+            var fullMatch = match[0];
+            if (fullMatch.search(rexEnd)!==-1){
+                subs--;
+                if (subs==0) break;
+            }else{
+                subs++
+            }
+        }
+        if (match) return {"codeIndex": match.index, "lastIndex": rex.lastIndex};
+        return {"codeIndex": v.length-1, "lastIndex": v.length-1};
+    }
+    var _getEachBlockEnd = function(v){
+        var rex = /(\{\{each\s+)|(\{\{\s*end each\s*\}\})/gmi;
+        var rexEnd = /\{\{\s*end each\s*\}\}/gmi;
+        var subs = 1;
+        while ((match = rex.exec(v)) !== null) {
+            var fullMatch = match[0];
+            if (fullMatch.search(rexEnd)!==-1){
+                subs--;
+                if (subs==0) break;
+            }else{
+                subs++;
+            }
+        }
+        if (match) return {"codeIndex": match.index, "lastIndex": rex.lastIndex};
+        return {"codeIndex": v.length-1, "lastIndex": v.length-1};
+    }
+
+    var _parseHtml = function(str, json){
+        var v = str;
+        var rex = /(\{\{\s*)[\s\S]*?(\s*\}\})/gmi;
+
+        var match;
+        while ((match = rex.exec(v)) !== null) {
+            var fullMatch = match[0];
+            var offset = 0;
+
+            //if statement begin
+            if (fullMatch.search(/\{\{if\s+/i)!==-1){
+                //找到对应的end if
+                var condition = fullMatch.replace(/^\{\{if\s*/i, "");
+                condition = condition.replace(/\s*\}\}$/i, "");
+                var flag = _jsonText(json, condition, "boolean");
+
+                var tmpStr = v.substring(rex.lastIndex, v.length);
+                var endIfIndex = _getIfBlockEnd(tmpStr);
+                if (flag){ //if 为 true
+                    var parseStr = _parseHtml(tmpStr.substring(0, endIfIndex.codeIndex), json);
+                    var vLeft = v.substring(0, match.index);
+                    var vRight = v.substring(rex.lastIndex+endIfIndex.lastIndex, v.length);
+                    v = vLeft + parseStr + vRight;
+                    offset = parseStr.length - fullMatch.length;
+                }else{
+                    v = v.substring(0, match.index) + v.substring(rex.lastIndex+endIfIndex.lastIndex, v.length);
+                    offset = 0-fullMatch.length;
+                }
+            }else  if (fullMatch.search(/\{\{each\s+/)!==-1) { //each statement
+                var itemString = fullMatch.replace(/^\{\{each\s*/, "");
+                itemString = itemString.replace(/\s*\}\}$/, "");
+                var eachValue = _jsonText(json, itemString, "object");
+
+                var tmpEachStr = v.substring(rex.lastIndex, v.length);
+                var endEachIndex = _getEachBlockEnd(tmpEachStr);
+
+                var parseEachStr = tmpEachStr.substring(0, endEachIndex.codeIndex);
+                var eachResult = "";
+                if (eachValue && _typeOf(eachValue)==="array"){
+                    for (var i=0; i<eachValue.length; i++){
+                        eachValue[i]._ = json;
+                        eachResult += _parseHtml(parseEachStr, eachValue[i]);
+                    }
+                    var eLeft = v.substring(0, match.index);
+                    var eRight = v.substring(rex.lastIndex+endEachIndex.lastIndex, v.length);
+                    v = eLeft + eachResult + eRight;
+                    offset = eachResult.length - fullMatch.length;
+                }else{
+                    v = v.substring(0, match.index) + v.substring(rex.lastIndex+endEachIndex.lastIndex, v.length);
+                    offset = 0-fullMatch.length;
+                }
+
+            }else{ //text statement
+                var text = fullMatch.replace(/^\{\{\s*/, "");
+                text = text.replace(/\}\}\s*$/, "");
+                var value = _jsonText(json, text);
+                offset = value.length-fullMatch.length;
+                v = v.substring(0, match.index) + value + v.substring(rex.lastIndex, v.length);
+            }
+            rex.lastIndex = rex.lastIndex + offset;
+        }
+        return v;
+    };
+    var _jsonText = function(json, text, type){
+        try {
+            var $ = json;
+            var f = eval("(function($){\n return "+text+";\n})");
+            returnValue = f.apply(json, [$]);
+            if (returnValue===undefined) returnValue="";
+            if (type==="boolean") return (!!returnValue);
+            if (type==="object") return returnValue;
+            returnValue = returnValue.toString();
+            return returnValue || "";
+        }catch(e){
+            if (type==="boolean") return false;
+            if (type==="object") return null;
+            return "";
+        }
+    };
+
+    o2.bindJson = function(str, json){
+        return _parseHtml(str, json);
+    };
+    String.prototype.bindJson = function(json){
+        return _parseHtml(this, json);
+    };
+
+    //dom ready
+    var _dom = {
+        ready: false,
+        loaded: false,
+        checks: [],
+        shouldPoll: false,
+        timer: null,
+        testElement: document.createElement('div'),
+        readys: [],
+
+        domready: function(){
+            clearTimeout(_dom.timer);
+            if (_dom.ready) return;
+            _dom.loaded = _dom.ready = true;
+            _removeListener(document, 'DOMContentLoaded', _dom.checkReady);
+            _removeListener(document, 'readystatechange', _dom.check);
+            _dom.onReady();
+        },
+        check: function(){
+            for (var i = _dom.checks.length; i--;) if (_dom.checks[i]() && window.MooTools && o2.core && o2.more){
+                _dom.domready();
+                return true;
+            }
+            return false;
+        },
+        poll: function(){
+            clearTimeout(_dom.timer);
+            if (!_dom.check()) _dom.timer = setTimeout(_dom.poll, 10);
+        },
+
+        /*<ltIE8>*/
+        // doScroll technique by Diego Perini http://javascript.nwbox.com/IEContentLoaded/
+        // testElement.doScroll() throws when the DOM is not ready, only in the top window
+        doScrollWorks: function(){
+            try {
+                _dom.testElement.doScroll();
+                return true;
+            } catch (e){}
+            return false;
+        },
+        /*</ltIE8>*/
+
+        onReady: function(){
+            for (var i=0; i<_dom.readys.length; i++){
+                this.readys[i].apply(window);
+            }
+        },
+        addReady: function(fn){
+            if (_dom.loaded){
+                if (fn) fn.apply(window);
+            }else{
+                if (fn) _dom.readys.push(fn);
+            }
+            return _dom;
+        },
+        checkReady: function(){
+            _dom.checks.push(function(){return true});
+            _dom.check();
+        }
+    };
+    var _loadO2 = function(){
+        this.o2.load("o2.core", _dom.check);
+        this.o2.load("o2.more", _dom.check);
+    };
+
+    _addListener(document, 'DOMContentLoaded', _dom.checkReady);
+
+    /*<ltIE8>*/
+    // If doScroll works already, it can't be used to determine domready
+    //   e.g. in an iframe
+    if (_dom.testElement.doScroll && !_dom.doScrollWorks()){
+        _dom.checks.push(_dom.doScrollWorks);
+        _dom.shouldPoll = true;
+    }
+    /*</ltIE8>*/
+
+    if (document.readyState) _dom.checks.push(function(){
+        var state = document.readyState;
+        return (state == 'loaded' || state == 'complete');
+    });
+
+    if ('onreadystatechange' in document) _addListener(document, 'readystatechange', _dom.check);
+    else _dom.shouldPoll = true;
+
+    if (_dom.shouldPoll) _dom.poll();
+
+    if (!window.MooTools){
+        this.o2.load("mootools", function(){ _loadO2(); _dom.check(); });
+    }else{
+        _loadO2();
+    }
+    this.o2.addReady = function(fn){ _dom.addReady.call(_dom, fn); };
+})();
+
+layout = window.layout || {};
+layout.desktop = layout;
+var locate = window.location;
+layout.protocol = locate.protocol;
+layout.session = layout.session || {};
+layout.debugger = (locate.href.toString().indexOf("debugger")!==-1);
+o2.xApplication = o2.xApplication || {};
+
+o2.xDesktop = o2.xDesktop || {};
+o2.xDesktop.requireApp = function(module, clazz, callback, async){
+    o2.requireApp(module, clazz, callback, async);
+};
+o2.addReady(function(){
+    //兼容方法
+    Element.implement({
+        "makeLnk": function(options){}
+    });
+
+    //异步载入必要模块
+    layout.config = null;
+
+    var modules = [ "MWF.xDesktop.Common", "MWF.xAction.RestActions"];
+    MWF.require(modules, function(){
+        if (layout.config) _getDistribute(function(){ _load(); });
+    });
+    o2.getJSON("/x_desktop/res/config/config.json", function(config){
+        layout.config = config;
+        if (MWF.xDesktop.getServiceAddress) _getDistribute(function(){ _load(); });
+    });
+
+
+    var _getDistribute = function(callback){
+        if (layout.config.app_protocol==="auto"){
+            layout.config.app_protocol = window.location.protocol;
+        }
+        MWF.xDesktop.getServiceAddress(layout.config, function(service, center){
+            layout.serviceAddressList = service;
+            layout.centerServer = center;
+            if (callback) callback();
+        }.bind(this));
+    };
+
+    var _load = function(){
+        //先判断用户是否登录
+        MWF.Actions.get("x_organization_assemble_authentication").getAuthentication(function(json){
+            //用户已经登录
+            layout.user = json.data;
+            layout.session = {};
+            layout.session.user = json.data;
+
+            (function(layout){
+                var _loadResource = function(callback){
+                    var isLoadedA = false;
+                    var isLoadedB = false;
+                    //var isLoadedC = false;
+
+                    var lp = o2.session.path+"/lp/"+o2.language+".js";
+                    var modules = [
+                        "o2.xDesktop.Dialog",
+                        "MWF.xDesktop.UserData",
+                        "MWF.xDesktop.Access",
+                        "MWF.widget.UUID",
+                        "MWF.xDesktop.Menu",
+                        "MWF.xDesktop.shortcut",
+                        "MWF.widget.PinYin",
+                        "MWF.xDesktop.Access",
+                        "MWF.xDesktop.MessageMobile",
+                        "MWF.xScript.Macro"
+                    ];
+                    //MWF.xDesktop.requireApp("Common", "", null, false);
+                    var _check = function(){ if (isLoadedA && isLoadedB) if (callback) callback(); };
+
+                    o2.load(["../o2_lib/mootools/plugin/mBox.min.js",lp], function(){isLoadedA = true; _check();});
+                    o2.require("MWF.widget.Common", function(){
+                        o2.require(modules, function(){
+                            o2.requireApp("Common", "", function(){isLoadedB = true; _check();})
+                        });
+                    });
+                };
+
+                var _loadContent =function(){
+                    _loadResource(function(){
+                        //this.Macro = new MWF.Macro["PageContext"](this);
+                        for (var i=0; i<layout.readys.length; i++){
+                            layout.readys[i].apply(window);
+                        }
+                    });
+                };
+
+                _loadContent();
+            })(layout);
+        }, function(){
+            //用户未经登录
+            //打开登录页面
+            var _loadResource = function(callback){
+                var isLoadedA = false;
+                var isLoadedB = false
+                //var isLoadedC = false;
+
+                var lp = o2.session.path+"/lp/"+o2.language+".js";
+                var modules = [
+                    "o2.xDesktop.Dialog",
+                    "MWF.xDesktop.UserData",
+                    "MWF.xDesktop.Access",
+                    "MWF.widget.UUID",
+                    "MWF.xDesktop.Menu",
+                    "MWF.xDesktop.shortcut",
+                    "MWF.widget.PinYin",
+                    "MWF.xDesktop.Access",
+                    "MWF.xDesktop.MessageMobile"
+                ];
+                //MWF.xDesktop.requireApp("Common", "", null, false);
+                var _check = function(){ if (isLoadedA && isLoadedB) if (callback) callback(); };
+
+                o2.load(["../o2_lib/mootools/plugin/mBox.min.js",lp], function(){isLoadedA = true; _check();});
+                o2.require("MWF.widget.Common", function(){
+                    o2.require(modules, function(){
+                        o2.requireApp("Common", "", function(){isLoadedB = true; _check();})
+                    });
+                });
+            };
+            _loadResource(function(){
+                layout.openLogin();
+            });
+
+        });
+
+        layout.openLogin = function(){
+            MWF.require("MWF.widget.Common", null, false);
+            MWF.require("MWF.xDesktop.Authentication", function(){
+                var authentication = new MWF.xDesktop.Authentication({
+                    "onLogin": _load.bind(layout)
+                });
+                authentication.loadLogin(document.body);
+            });
+        };
+    };
+});
+
+(function(layout){
+    layout.readys = [];
+    layout.addReady = function(){
+        for (var i = 0; i<arguments.length; i++){
+            if (o2.typeOf(arguments[i])==="function") layout.readys.push(arguments[i]);
+        }
+    };
+    var _requireApp = function(appNames, callback, clazzName){
+        var appPath = appNames.split(".");
+        var baseObject = o2.xApplication;
+        appPath.each(function(path, i){
+            if (i<(appPath.length-1)){
+                baseObject[path] = baseObject[path] || {};
+            }else {
+                baseObject[path] = baseObject[path] || {"options": Object.clone(MWF.xApplication.Common.options)};
+            }
+            baseObject = baseObject[path];
+        }.bind(this));
+        if (!baseObject.options) baseObject.options = Object.clone(MWF.xApplication.Common.options);
+
+        var _lpLoaded = false;
+        MWF.xDesktop.requireApp(appNames, "lp."+o2.language, {
+            "failure": function(){
+                MWF.xDesktop.requireApp(appNames, "lp.zh-cn", null, false);
+            }.bind(this)
+        }, false);
+        MWF.xDesktop.requireApp(appNames, clazzName, function(){
+            if (callback) callback(baseObject);
+        });
+    };
+    var _createNewApplication = function(e, appNamespace, appName, options, statusObj){
+        var app = new appNamespace["Main"](this, options);
+        app.desktop = layout;
+        app.inBrowser = true;
+        app.status = statusObj;
+        app.load(true);
+
+        var appId = appName;
+        if (options.appId){
+            appId = options.appId;
+        }else{
+            if (appNamespace.options.multitask) appId = appId+"-"+(new MWF.widget.UUID());
+        }
+        app.appId = appId;
+        layout.app = app;
+        layout.desktop.currentApp = app;
+    };
+    var _openWorkAndroid = function(options){
+        if (window.o2android && window.o2android.openO2Work) {
+            if (options.workId) {
+                window.o2android.openO2Work(options.workId, "", title);
+            } else if (options.workCompletedId) {
+                window.o2android.openO2Work("", options.workCompletedId, title);
+            }
+            return true;
+        }
+        return false;
+    };
+    var _openWorkIOS = function(options){
+        if (window.webkit && window.webkit.messageHandlers && window.webkit.messageHandlers.openO2Work) {
+            if (options.workId) {
+                window.webkit.messageHandlers.openO2Work.postMessage({
+                    "work": options.workId,
+                    "workCompleted": "",
+                    "title": title
+                });
+            } else if (options.workCompletedId) {
+                window.webkit.messageHandlers.openO2Work.postMessage({
+                    "work": "",
+                    "workCompleted": options.workCompletedId,
+                    "title": title
+                });
+            }
+            return true;
+        }
+        return false;
+    };
+    var _openWorkHTML = function(options){
+        var uri = new URI(window.location.href);
+        var redirectlink = uri.getData("redirectlink");
+        if (!redirectlink) {
+            redirectlink = encodeURIComponent(locate.pathname + locate.search);
+        } else {
+            redirectlink = encodeURIComponent(redirectlink);
+        }
+        if (options.workId) {
+            window.location = "workmobilewithaction.html?workid=" + options.workId + "&redirectlink=" + redirectlink;
+        } else if (options.workCompletedId) {
+            window.location = "workmobilewithaction.html?workcompletedid=" + options.workCompletedId + "&redirectlink=" + redirectlink;
+        }
+    };
+    var _openWork = function(options){
+        if (!_openWorkAndroid(options)) if (!_openWorkIOS(options)) _openWorkHTML(options);
+    };
+    var _openDocument = function(appNames, options, statusObj){
+        var par = "app="+encodeURIComponent(appNames)+"&status="+encodeURIComponent((statusObj)? JSON.encode(statusObj) : "")+"&option="+encodeURIComponent((options)? JSON.encode(options) : "");
+        if (window.o2android && window.o2android.openO2CmsDocument){
+            window.o2android.openO2CmsDocument(options.documentId, title);
+        }else if (window.webkit && window.webkit.messageHandlers && window.webkit.messageHandlers.openO2CmsDocument){
+            window.webkit.messageHandlers.openO2CmsDocument.postMessage({"docId":options.documentId,"docTitle":title});
+        }else{
+            window.location = "appMobile.html?"+par;
+        }
+    };
+    var _openCms = function(appNames, options, statusObj){
+        var par = "app="+encodeURIComponent(appNames)+"&status="+encodeURIComponent((statusObj)? JSON.encode(statusObj) : "")+"&option="+encodeURIComponent((options)? JSON.encode(options) : "");
+        if (window.o2android && window.o2android.openO2CmsApplication){
+            window.o2android.openO2CmsApplication(options.columnId, title);
+        }else if (window.webkit && window.webkit.messageHandlers && window.webkit.messageHandlers.openO2CmsApplication){
+            window.webkit.messageHandlers.openO2CmsApplication.postMessage(options.columnId);
+        }else{
+            window.location = "appMobile.html?app="+par;
+        }
+    };
+    var _openMeeting = function(appNames, options, statusObj){
+        var par = "app="+encodeURIComponent(appNames)+"&status="+encodeURIComponent((statusObj)? JSON.encode(statusObj) : "")+"&option="+encodeURIComponent((options)? JSON.encode(options) : "");
+        if (window.o2android && window.o2android.openO2Meeting){
+            window.o2android.openO2Meeting("");
+        }else if (window.webkit && window.webkit.messageHandlers && window.webkit.messageHandlers.openO2Meeting){
+            window.webkit.messageHandlers.openO2Meeting.postMessage("");
+        }else{
+            window.location = "appMobile.html?app="+par;
+        }
+    };
+
+    var _openCalendar = function(appNames, options, statusObj){
+        var par = "app="+encodeURIComponent(appNames)+"&status="+encodeURIComponent((statusObj)? JSON.encode(statusObj) : "")+"&option="+encodeURIComponent((options)? JSON.encode(options) : "");
+        if (window.o2android && window.o2android.openO2Calendar){
+            window.o2android.openO2Calendar("");
+        }else if (window.webkit && window.webkit.messageHandlers && window.webkit.messageHandlers.openO2Calendar){
+            window.webkit.messageHandlers.openO2Calendar.postMessage("");
+        }else{
+            window.location = "appMobile.html?app="+par;
+        }
+    };
+    var _openTaskCenter = function(appNames, options, statusObj){
+        var par = "app="+encodeURIComponent(appNames)+"&status="+encodeURIComponent((statusObj)? JSON.encode(statusObj) : "")+"&option="+encodeURIComponent((options)? JSON.encode(options) : "");
+        var tab = ((options && options.navi) ? options.navi : "task").toLowerCase();
+        if (tab==="done") tab = "taskCompleted";
+        if (tab==="readed") tab = "readCompleted";
+
+        if (window.o2android && window.o2android.openO2WorkSpace){
+            window.o2android.openO2WorkSpace(tab);
+        }else if (window.webkit && window.webkit.messageHandlers && window.webkit.messageHandlers.openO2WorkSpace){
+            window.webkit.messageHandlers.openO2WorkSpace.postMessage(tab);
+        }else{
+            window.location = "appMobile.html?app="+par;
+        }
+    };
+
+    var _openApplicationMobile = function(appNames, options, statusObj){
+        switch (appNames) {
+            case "process.Work":
+                _openWork(options);
+                break;
+            case "cms.Document":
+                _openDocument(appNames, options, statusObj);
+                break;
+            case "cms.Module":
+                _openCms(appNames, options, statusObj);
+                break;
+            case "Meeting":
+                _openMeeting(appNames, options, statusObj);
+                break;
+            case "Calendar":
+                _openCalendar(appNames, options, statusObj);
+                break;
+            case "process.TaskCenter":
+                _openTaskCenter(appNames, options, statusObj);
+                break;
+            default:
+                window.location = "appMobile.html?app="+appNames+"&option="+(optionsStr || "")+"&status="+(statusStr || "");
+        }
+    };
+
+    layout.openApplication = function(e, appNames, options, statusObj){
+        if (layout.app){
+            if (layout.mobile){
+                _openApplicationMobile(appNames, options, statusObj);
+            }else{
+                var par = "app="+encodeURIComponent(appNames)+"&status="+encodeURIComponent((statusObj)? JSON.encode(statusObj) : "")+"&option="+encodeURIComponent((options)? JSON.encode(options) : "");
+                return window.open("app.html?"+par, "_blank");
+            }
+        }else{
+            var appPath = appNames.split(".");
+            var appName = appPath[appPath.length-1];
+
+            _requireApp(appNames, function(appNamespace){
+                _createNewApplication(e, appNamespace, appName, options, statusObj);
+            }.bind(this));
+        }
+    };
+
+    layout.refreshApp = function(app){
+        var status = app.recordStatus();
+
+        var uri = new URI(window.location.href);
+        var appNames = uri.getData("app");
+        var optionsStr = uri.getData("option");
+        var statusStr = uri.getData("status");
+        if (status) statusStr = JSON.encode(status);
+
+        var port = uri.get("port");
+        window.location = uri.get("scheme") + "://" + uri.get("host") + ((port) ? ":" + port + "/" : "") + uri.get("directory ") + "?app=" + encodeURIComponent(appNames) + "&status=" + encodeURIComponent(statusStr) + "&option=" + encodeURIComponent((options) ? JSON.encode(options) : "");
+    };
+
+    layout.load =function(appNames, options, statusObj){
+        layout.message = new MWF.xDesktop.MessageMobile();
+        layout.message.load();
+
+        layout.apps = [];
+        layout.node = $("layout");
+        var appName=appNames, m_status=statusObj, option=options;
+
+        var topWindow = window.opener;
+        if (topWindow){
+            try{
+                if (!appName) appName = topWindow.layout.desktop.openBrowserApp;
+                if (!m_status) m_status = topWindow.layout.desktop.openBrowserStatus;
+                if (!option)  option = topWindow.layout.desktop.openBrowserOption;
+            }catch(e){}
+        }
+        layout.openApplication(null, appName, option||{}, m_status);
+    }
+
+})(layout);

+ 28 - 87
o2web/source/o2_core/o2.js

@@ -53,8 +53,8 @@
     }
     this.o2 = {
         "version": {
-            "v": '2.0.9',
-            "build": "2018.11.22",
+            "v": '2.1.4',
+            "build": "2019.07.31",
             "info": "O2OA 活力办公 创意无限. Copyright © 2018, o2oa.net O2 Team All rights reserved."
         },
         "session": {
@@ -64,6 +64,7 @@
         "language": _lp,
         "splitStr": /\s*(?:,|;)\s*/
     };
+    this.wrdp = this.o2;
     
     var _attempt = function(){
         for (var i = 0, l = arguments.length; i < l; i++){
@@ -412,11 +413,28 @@
                     if (op.dom){
                         var rex = new RegExp("(.+)(?=\\{)", "g");
                         var match;
+                        var prefix = "." + uuid + " ";
+
                         while ((match = rex.exec(cssText)) !== null) {
-                            var prefix = "." + uuid + " ";
-                            var rule = prefix + match[0];
-                            cssText = cssText.substring(0, match.index) + rule + cssText.substring(rex.lastIndex, cssText.length);
-                            rex.lastIndex = rex.lastIndex + prefix.length;
+                            // var rule = prefix + match[0];
+                            // cssText = cssText.substring(0, match.index) + rule + cssText.substring(rex.lastIndex, cssText.length);
+                            // rex.lastIndex = rex.lastIndex + prefix.length;
+
+                            var rulesStr = match[0];
+                            if (rulesStr.indexOf(",")!=-1){
+                                var rules = rulesStr.split(/\s*,\s*/g);
+                                rules = rules.map(function(r){
+                                    return prefix + r;
+                                });
+                                var rule = rules.join(", ");
+                                cssText = cssText.substring(0, match.index) + rule + cssText.substring(rex.lastIndex, cssText.length);
+                                rex.lastIndex = rex.lastIndex + (prefix.length*rules.length);
+
+                            }else{
+                                var rule = prefix + match[0];
+                                cssText = cssText.substring(0, match.index) + rule + cssText.substring(rex.lastIndex, cssText.length);
+                                rex.lastIndex = rex.lastIndex + prefix.length;
+                            }
                         }
                     }
                     var style = op.doc.createElement("style");
@@ -600,85 +618,6 @@
         _loadAll(modules, op, cb);
     };
 
-    //json template
-    // _parseText = function(html, json){
-    //     var _ht = html;
-    //     var regexp = /(text\{).+?\}/g;
-    //     var r = _ht.match(regexp);
-    //     if(r) if (r.length){
-    //         for (var i=0; i<r.length; i++){
-    //             var text = r[i].substr(0,r[i].lastIndexOf("}"));
-    //             text = text.substr(text.indexOf("{")+1,text.length);
-    //             var value = _jsonText(json ,text);
-    //             _ht = _ht.replace(/(text\{).+?\}/,value);
-    //         }
-    //     }
-    //     return _ht;
-    // };
-    // _parseEach = function(html, json){
-    //     var _ht = html;
-    //     var regexp = /(\{each\([\s\S]+\)\})[\s\S]+?(\{endEach\})/g;
-    //     var r = _ht.match(regexp);
-    //     if(r){
-    //         if (r.length){
-    //             for (var i=0; i<r.length; i++){
-    //                 var eachItemsStr = r[i].substr(0,r[i].indexOf(")"));
-    //                 eachItemsStr = eachItemsStr.substr(eachItemsStr.indexOf("(")+1,eachItemsStr.length);
-    //                 var pars = eachItemsStr.split(/,[\s]*/g);
-    //                 eachItemsPar = pars[0];
-    //                 eachItemsCount = pars[1].toInt();
-    //
-    //                 var eachItems = _jsonText(json ,eachItemsPar);
-    //                 if (eachItems) if (eachItemsCount==0) eachItemsCount = eachItems.length;
-    //
-    //                 var eachContentStr = r[i].substr(0,r[i].lastIndexOf("{endEach}"));
-    //                 eachContentStr = eachContentStr.substr(eachContentStr.indexOf("}")+1,eachContentStr.length);
-    //
-    //                 var eachContent = [];
-    //                 if (eachItems){
-    //                     for (var n=0; n<Math.min(eachItems.length, eachItemsCount); n++){
-    //                         var item = eachItems[n];
-    //                         if (item){
-    //                             var tmpEachContentStr = eachContentStr;
-    //                             var textReg = /(eachText\{).+?\}/g;
-    //                             texts = tmpEachContentStr.match(textReg);
-    //                             if (texts){
-    //                                 if (texts.length){
-    //                                     for (var j=0; j<texts.length; j++){
-    //                                         var text = texts[j].substr(0,texts[j].lastIndexOf("}"));
-    //                                         text = text.substr(text.indexOf("{")+1,text.length);
-    //
-    //                                         var value = _jsonText(item ,text);
-    //                                         tmpEachContentStr = tmpEachContentStr.replace(/(eachText\{).+?\}/,value);
-    //                                     }
-    //                                 }
-    //                             }
-    //                             eachContent.push(tmpEachContentStr);
-    //                         }
-    //                     }
-    //                 }
-    //                 _ht = _ht.replace(/(\{each\([\s\S]+\)\})[\s\S]+?(\{endEach\})/,eachContent.join(""));
-    //             }
-    //         }
-    //     }
-    //     return _ht;
-    // };
-    // _jsonText = function(json, text){
-    //     var $ = json;
-    //     var f = eval("(x = function($){\n return "+text+";\n})");
-    //     returnValue = f.apply(json, [$]);
-    //     if (returnValue===undefined) returnValue="";
-    //     returnValue = returnValue.toString();
-    //     return returnValue || "";
-    // };
-    // var _bindJson = function(str, json){
-    //     return _parseEach(_parseText(str, json), json);
-    // };
-    // o2.bindJson = _bindJson;
-    // String.prototype.bindJson = function(json){
-    //     return _parseEach(_parseText(this, json), json);
-    // };
-
     var _getIfBlockEnd = function(v){
         var rex = /(\{\{if\s+)|(\{\{\s*end if\s*\}\})/gmi;
         var rexEnd = /\{\{\s*end if\s*\}\}/gmi;
@@ -784,6 +723,10 @@
             if (type==="boolean") return (!!returnValue);
             if (type==="object") return returnValue;
             returnValue = returnValue.toString();
+            returnValue = returnValue.replace(/\&/g, "&amp;");
+            returnValue = returnValue.replace(/>/g, "&gt;");
+            returnValue = returnValue.replace(/</g, "&lt;");
+            returnValue = returnValue.replace(/\"/g, "&quot;");
             return returnValue || "";
         }catch(e){
             if (type==="boolean") return false;
@@ -799,8 +742,6 @@
         return _parseHtml(this, json);
     };
 
-
-
     //dom ready
     var _dom = {
         ready: false,

+ 11 - 9
o2web/source/o2_core/o2/o2.core.js

@@ -55,9 +55,9 @@
 
     var _loaded = {};
 
-    var _requireJs = function(url, callback, async, compression){
+    var _requireJs = function(url, callback, async, compression, module){
         var key = encodeURIComponent(url);
-        if (_loaded[key]){o2.runCallback(callback, "success"); return "";}
+        if (_loaded[key]){o2.runCallback(callback, "success", [module]); return "";}
 
         var jsPath = (compression || !this.o2.session.isDebugger) ? url.replace(/\.js/, ".min.js") : url;
         jsPath = (jsPath.indexOf("?")!==-1) ? jsPath+"&v="+this.o2.version.v : jsPath+"?v="+this.o2.version.v;
@@ -66,8 +66,8 @@
             url: jsPath, async: async, method: "get",
             onSuccess: function(){
                 //try{
-                    _loaded[key] = true;
-                o2.runCallback(callback, "success");
+                _loaded[key] = true;
+                o2.runCallback(callback, "success", [module]);
                 //}catch (e){
                 //    o2.runCallback(callback, "failure", [e]);
                 //}
@@ -89,13 +89,14 @@
 
         var loadAsync = (async!==false);
 
-        _requireJs(jsPath, callback, loadAsync, compression);
+        _requireJs(jsPath, callback, loadAsync, compression, module);
     };
     var _requireSequence = function(fun, module, thisLoaded, thisErrorLoaded, callback, async, compression){
         var m = module.shift();
         fun(m, {
-            "onSuccess": function(){
-                thisLoaded.push(module[i]);
+            "onSuccess": function(m){
+                thisLoaded.push(m);
+                o2.runCallback(callback, "every", [m]);
                 if (module.length){
                     _requireSequence(module, thisLoaded, thisErrorLoaded, callback);
                 }else{
@@ -115,8 +116,9 @@
     var _requireDisarray = function(fun, module, thisLoaded, thisErrorLoaded, callback, async, compression){
         for (var i=0; i<module.length; i++){
             fun(module[i], {
-                "onSuccess": function(){
-                    thisLoaded.push(module[i]);
+                "onSuccess": function(m){
+                    thisLoaded.push(m);
+                    o2.runCallback(callback, "every", [m]);
                     if ((thisLoaded.length+thisErrorLoaded.length)===module.length){
                         if (thisErrorLoaded.length){
                             o2.runCallback(callback, "failure", [thisLoaded, thisErrorLoaded]);

BIN
o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/bg.png


BIN
o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/buttonbg.png


+ 472 - 0
o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/css.wcss

@@ -0,0 +1,472 @@
+{
+    "container": {
+        "border": "1px solid #b6b6b6",
+        //	"height": "180px",
+        "min-height": "180px",
+        "background": "#FFF",
+        "margin-top": "10px",
+        "overflow": "hidden"
+    },
+    "container_min": {
+        "border": "0px solid #b6b6b6",
+        "min-height": "30px",
+        "overflow": "hidden",
+        "background": "transparent",
+        "height": "auto"
+    },
+    "minActionAreaNode": {
+        "float": "right",
+        "height": "26px",
+        "margin": "2px",
+        "border": "1px solid #979797",
+        "border-radius": "3px",
+        "background-image": "url("+o2.session.path+"/widget/$AttachmentController/default/buttonbg.png)"
+    },
+    "minContentNode": {
+        "margin-right":"150px",
+        "min-height": "30px",
+        "overflow": "hidden"
+    },
+    "titleNode": {
+        "height": "30px",
+        "background-color": "#DDD",
+        "border-top": "1px solid #FFF",
+        "border-bottom": "1px solid #b6b6b6",
+        "line-height": "30px",
+        "font-weight": "bold",
+        "padding-left": "10px",
+        "text-align": "left"
+    },
+    "topNode": {
+        "height": "40px",
+        "background-image": "url("+o2.session.path+"/widget/$AttachmentController/default/bg.png)",
+        "border-top": "1px solid #FFF",
+        "border-bottom": "1px solid #b6b6b6"
+    },
+    "actionsBoxNode": {
+        "overflow": "hidden",
+        "border-bottom": "1px solid #eaebea",
+        "float": "left",
+        "margin-left": "10px",
+        "margin-top": "5px",
+        "border-radius": "3px",
+        "background-image": "url("+o2.session.path+"/widget/$AttachmentController/default/buttonbg.png)"
+    },
+    "actionsGroupNode": {
+        "height": "26px",
+        "border": "1px solid #979797",
+        "border-radius": "3px",
+        "background-image": "url("+o2.session.path+"/widget/$AttachmentController/default/buttonbg.png)"
+    },
+    "actionNode": {
+        "float": "left",
+        "width": "26px",
+        "height": "26px",
+        "cursor": "default"
+    },
+    "actionIconNode": {
+        "width": "26px",
+        "height": "26px",
+        "background-repeat": "no-repeat",
+        "background-position": "center center"
+    },
+    "separateNode": {
+        "width":"1px",
+        "height": "16px",
+        "margin-top": "5px",
+        "margin-left": "5px",
+        "margin-right": "5px",
+        "border-left": "1px solid #bcbcbc",
+        "background-color": "#f1f1f1",
+        "float": "left"
+    },
+    "contentScrollNode": {
+        "background-color": "#FFF",
+        "overflow": "hidden",
+        "min-height": "130px"
+    },
+    "contentNode": {
+        "background-color": "#FFF",
+        "overflow": "hidden",
+        "margin-right": "6px"
+    },
+    "bottomNode": {
+        "height": "7px",
+        "border-top": "1px solid #b6b6b6",
+        "background-color": "#e8e8e8"
+    },
+    "resizeNode": {
+        "height": "7px",
+        "cursor": "row-resize"
+    },
+    "attachmentNode_icon": {
+        "width": "90px",
+        "height": "100px",
+        "padding": "5px",
+        "float": "left",
+        "margin": "10px 0px 10px 10px",
+        "border-radius": "3px",
+        //"border": "2px solid #FFF",
+        "background": "transparent",
+        "-webkit-user-select": "text",
+        "-moz-user-select": "text"
+    },
+    "attachmentNode_icon_over": {
+        //"border": "2px solid #cdcfd1",
+        "background": "#eaf0f5"
+    },
+    "attachmentNode_icon_selected": {
+        //"border": "2px solid #d7e1e8",
+        "background": "#d7e1e8"
+    },
+    "attachmentIconNode": {
+        "width": "90px",
+        "height": "66px",
+        "text-align": "center"
+    },
+    "attachmentIconImgAreaNode": {
+        "width": "64px",
+        "height": "64px",
+        "margin": "auto"
+    },
+    "attachmentIconImgNode": {
+        "width": "64px",
+        "height": "64px"
+    },
+    "attachmentTextNode": {
+        "height": "34px",
+        "line-height": "17px",
+        "overflow": "hidden",
+        "word-break": "break-all",
+        "text-overflow": "ellipsis",
+        "text-align": "center"
+    },
+    "attachmentNode_sequence": {
+        "width": "auto",
+        "height": "30px",
+        "padding": "0px",
+        "float": "none",
+        "border-radius": "0px",
+        "border": "0px solid #FFF",
+        "background": "transparent",
+        "margin": "0px 10px",
+        "-webkit-user-select": "text",
+        "-moz-user-select": "text"
+    },
+    "attachmentNode_sequence_over": {
+        "border": "0px solid #cdcfd1",
+        "background": "#eaf0f5"
+    },
+    "attachmentNode_sequence_selected": {
+        "border": "0px solid #d7e1e8",
+        "background": "#d7e1e8"
+    },
+    "attachmentSeqNode_sequence": {
+        "width": "30px",
+        "height": "30px",
+        "line-height": "30px",
+        "color": "#666666",
+        "float": "left",
+        "text-align": "center"
+    },
+    "attachmentTextNode_sequence": {
+        "height": "30px",
+        "line-height": "30px",
+        "margin-left": "70px",
+        "overflow": "hidden",
+        "word-break": "break-all",
+        "text-overflow": "ellipsis",
+        "text-align": "left"
+    },
+
+    "attachmentNode_list": {
+        "width": "auto",
+        "height": "30px",
+        "padding": "0px",
+        "float": "none",
+        "border-radius": "0px",
+        "border": "0px solid #FFF",
+        "background": "transparent",
+        "margin": "0px 10px",
+        "-webkit-user-select": "text",
+        "-moz-user-select": "text"
+    },
+    "attachmentNode_list_over": {
+        "border": "0px solid #cdcfd1",
+        "background": "#eaf0f5"
+    },
+    "attachmentNode_list_selected": {
+        "border": "0px solid #d7e1e8",
+        "background": "#d7e1e8"
+    },
+
+
+
+    "attachmentIconNode_list": {
+        "width": "40px",
+        "height": "30px",
+        "float": "left"
+    },
+    "attachmentIconImgAreaNode_list": {
+        "width": "24px",
+        "height": "24px",
+        "margin": "3px 8px"
+    },
+    "attachmentIconImgNode_list": {
+        "width": "24px",
+        "height": "24px"
+    },
+    "attachmentTextNode_list": {
+        "height": "30px",
+        "line-height": "30px",
+        "margin-left": "40px",
+        "overflow": "hidden",
+        "word-break": "break-all",
+        "text-overflow": "ellipsis",
+        "text-align": "left"
+    },
+    "attachmentTextTitleNode_list": {
+        "height": "30px",
+        "float": "left",
+        "width": "30%"
+    },
+    "attachmentTextSizeNode_list": {
+        "height": "30px",
+        "float": "left",
+        "width": "15%"
+    },
+    "attachmentTextUploaderNode_list": {
+        "height": "30px",
+        "float": "left",
+        "width": "15%"
+    },
+    "attachmentTextTimeNode_list": {
+        "height": "30px",
+        "float": "left",
+        "width": "20%"
+    },
+    "attachmentTextActivityNode_list": {
+        "height": "30px",
+        "float": "left",
+        "width": "20%"
+    },
+
+    "attachmentNode_preview": {
+        "width": "180px",
+        "height": "160px",
+        "padding": "5px",
+        "float": "left",
+        "margin": "10px 5px 10px 5px",
+        "border-radius": "3px",
+        //"border": "2px solid #FFF",
+        "background": "transparent",
+        "-webkit-user-select": "text",
+        "-moz-user-select": "text"
+    },
+    "attachmentNode_preview_over": {
+        //"border": "2px solid #cdcfd1",
+        "background": "#eaf0f5"
+    },
+    "attachmentNode_preview_selected": {
+        //"border": "2px solid #d7e1e8",
+        "background": "#d7e1e8"
+    },
+    "attachmentPreviewIconNode": {
+        "width": "180px",
+        "height": "126px",
+        "text-align": "center"
+    },
+    "attachmentPreviewIconImgAreaNode": {
+        "width": "72px",
+        "height": "72px",
+        "margin": "auto"
+    },
+    "attachmentPreviewIconImgNode": {
+        "width": "72px",
+        "height": "72px",
+        "margin-top": "22px"
+    },
+    "attachmentPreviewAudioNode": {
+        "width": "180px",
+        "height": "30px",
+        "position": "relative",
+        "top": "-64px",
+        "opacity": "0.7"
+    },
+    "attachmentPreviewVideoNode": {
+        "width": "180px",
+        "height": "126px"
+    },
+    "attachmentPreviewTextNode": {
+        "height": "34px",
+        "line-height": "17px",
+        "overflow": "hidden",
+        "word-break": "break-all",
+        "text-overflow": "ellipsis",
+        "text-align": "center"
+    },
+
+    "minActionNode": {
+        "float": "left",
+        "width": "26px",
+        "height": "26px",
+        "margin" : "0px 5px",
+        "cursor": "default"
+    },
+    "minActionIconNode": {
+        "width": "26px",
+        "height": "26px",
+        "background-repeat": "no-repeat",
+        "background-position": "center center"
+    },
+    "minAttachmentNode_sequence": {
+        "width": "auto",
+        "height": "30px",
+        "padding": "0px",
+        "float": "none",
+        "border-radius": "0px",
+        "border": "0px solid #FFF",
+        "background": "transparent",
+        "margin": "0px 5px",
+        "-webkit-user-select": "text",
+        "-moz-user-select": "text"
+    },
+    "minAttachmentNode_sequence_over": {
+        "border": "0px solid #cdcfd1",
+        "background-color": "#eaf0f5"
+    },
+    "minAttachmentNode_sequence_selected": {
+        "border": "0px solid #d7e1e8",
+        "background-color": "#d7e1e8"
+    },
+    "minAttachmentNode_list": {
+        "width": "auto",
+        "height": "30px",
+        "padding": "13px 0px 13px 10px",
+        "float": "left",
+        "border-radius": "0px",
+        "border": "0px solid #FFF",
+        "background": "transparent",
+        "-webkit-user-select": "text",
+        "-moz-user-select": "text",
+        "width" : "48%",
+        "border-bottom" : "1px dashed #dcdcdc"
+    },
+    "minAttachmentSepNode_list" : {
+        "width" : "1px",
+        "height" : "30px",
+        "float" : "right",
+        "overflow" : "hidden",
+        "border-right" : "1px dashed #dcdcdc"
+    },
+    "minAttachmentNode_list_over": {
+        //"border": "0px solid #cdcfd1",
+        //"background-color": "#eaf0f5"
+    },
+    "minAttachmentNode_list_selected": {
+        //"border": "0px solid #d7e1e8",
+        "background-color": "#d7e1e8"
+    },
+    "minAttachmentIconNode_list": {
+        "width": "30px",
+        "height": "30px",
+        "float": "left"
+    },
+    "minAttachmentIconImgAreaNode_list": {
+        "width": "24px",
+        "height": "24px",
+        "margin": "3px 3px"
+    },
+    "minAttachmentIconImgNode_list": {
+        "width": "24px",
+        "height": "24px"
+    },
+    "minAttachmentTextNode_list": {
+        "height": "30px",
+        "cursor": "default",
+        "line-height": "30px",
+        "margin-left": "0px",
+        "margin-right": "0px",
+        "overflow": "hidden",
+        "word-break": "break-all",
+        "text-overflow": "ellipsis",
+        "text-align": "left",
+        "color" : "#0b82ff"
+    },
+    "minAttachmentSizeNode_list": {
+        "height": "30px",
+        "line-height": "30px",
+        "margin-left" : "0px",
+        "margin-right": "6px",
+        "display" : "inline",
+        "color" : "#555"
+    },
+    "minAttachmentActionAreaNode" : {
+        "float" : "right",
+        "overflow" : "hidden"
+    },
+    "inputUploadAreaNode": {
+        "width": "450px",
+        "height": "160px",
+        "border-radius": "5px",
+        "box-shadow": "0px 0px 10px #FFF",
+        "position": "absolute",
+        "border": "2px solid #999",
+        "border-top": "4px solid #5290e5",
+        "background-color": "#FFF",
+        "z-index": 100
+    },
+    "inputUploadAreaTitleNode": {
+        "height": "30px",
+        "line-height": "30px",
+        "text-align": "center",
+        "font-weight": "bold",
+        "font-family": "微软雅黑",
+        "font-size": "14px"
+    },
+    "inputUploadAreaInforNode": {
+        "height": "24px",
+        "line-height": "24px",
+        "text-align": "center",
+        "color": "#666",
+        "font-family": "微软雅黑",
+        "font-size": "12px",
+        "text-align": "left",
+        "margin": "10px 20px 0px 20px"
+    },
+    "inputUploadAreaInputAreaNode": {
+        "margin": "0px 20px 20px 20px",
+        "height": "24px"
+    },
+    "inputUploadAreaInputNode": {
+        "width": "407px",
+        "height": "23px",
+        "border": "1px solid #666",
+    },
+    "inputUploadActionNode": {
+        "margin": "0px 20px",
+        "border-top": "1px solid #999",
+    },
+    "inputUploadOkButton": {
+        "height": "24px",
+        "width": "80px",
+        "color": "#FFF",
+        "background-color": "#42699e",
+        "border": "1px solid #1e3d67",
+        "border-radius": "3px",
+        "float": "right",
+        "margin-top": "10px",
+        "margin-left": "10px"
+    },
+    "inputUploadCancelButton": {
+        "height": "24px",
+        "width": "80px",
+        "color": "#666",
+        "background-color": "#DFDFDF",
+        "border": "1px solid #666",
+        "border-radius": "3px",
+        "float": "right",
+        "margin-top": "10px",
+        "margin-left": "10px"
+    }
+}

BIN
o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/icon/check.png


BIN
o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/icon/check_gray.png


BIN
o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/icon/closeOffice.png


BIN
o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/icon/closeOffice_gray.png


BIN
o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/icon/config.png


BIN
o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/icon/config_gray.png


BIN
o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/icon/config_single.png


BIN
o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/icon/config_single_over.png


BIN
o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/icon/createFolder.png


BIN
o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/icon/createFolder_gray.png


BIN
o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/icon/delete.png


BIN
o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/icon/delete_gray.png


BIN
o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/icon/delete_single.png


BIN
o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/icon/delete_single_over.png


BIN
o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/icon/download.png


BIN
o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/icon/downloadAll.png


BIN
o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/icon/downloadAll_gray.png


BIN
o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/icon/download_gray.png


BIN
o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/icon/download_single.png


BIN
o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/icon/download_single_over.png


BIN
o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/icon/icon.png


BIN
o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/icon/icon_gray.png


BIN
o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/icon/list.png


BIN
o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/icon/list_gray.png


BIN
o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/icon/max.png


BIN
o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/icon/max_gray.png


BIN
o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/icon/min.png


BIN
o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/icon/min_gray.png


BIN
o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/icon/office.png


BIN
o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/icon/office_gray.png


BIN
o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/icon/preview.png


BIN
o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/icon/preview_gray.png


BIN
o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/icon/property.png


BIN
o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/icon/property_gray.png


BIN
o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/icon/rename.png


BIN
o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/icon/rename_1.png


BIN
o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/icon/rename_1_gray.png


BIN
o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/icon/rename_gray.png


BIN
o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/icon/replace.png


BIN
o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/icon/replace_gray.png


BIN
o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/icon/send.png


BIN
o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/icon/send_gray.png


BIN
o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/icon/seq.png


BIN
o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/icon/seq_gray.png


BIN
o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/icon/share.png


BIN
o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/icon/share_gray.png


BIN
o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/icon/upload.png


BIN
o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/icon/upload_gray.png


BIN
o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/overbg.png


BIN
o2web/source/o2_core/o2/widget/$AttachmentController/cmcc/selectedbg.png


+ 459 - 391
o2web/source/o2_core/o2/widget/$AttachmentController/cms/css.wcss

@@ -1,397 +1,465 @@
 {
-	"container": {
-		"border": "1px solid #b6b6b6",
-	//	"height": "180px",
-	    "min-height": "180px",
-	    "background": "#FFF",
-	    "margin-top": "10px",
-		"overflow": "hidden"
-	},
-	"container_min": {
-	    "border": "0px solid #b6b6b6",
-	    "min-height": "30px",
-        "overflow": "hidden",
-        "background": "transparent",
-        "height": "auto"
-	},
-	"minActionAreaNode": {
-	    "float": "right",
-	    "height": "26px",
-	    "margin": "2px",
-	    "border": "1px solid #979797",
-        "border-radius": "3px",
-        "background-color" : "#fff"
-       // "background-image": "url("+o2.session.path+"/widget/$AttachmentController/cms/buttonbg.png)"
-	},
-	"minContentNode": {
-        "margin-right":"108px",
-        "min-height": "30px"
-	},
-	"titleNode": {
-      "color" : "#3587d7",
-	    "height": "30px",
-        "background-color": "#DDD",
-        "border-top": "1px solid #FFF",
-        "border-bottom": "1px solid #b6b6b6",
-        "line-height": "30px",
-        "font-size": "14px",
-        "font-weight": "bold",
-        "padding-left": "10px",
-        "text-align": "left"
-	},
-	"topNode": {
-	    "height": "40px",
-	    //"background-image": "url("+o2.session.path+"/widget/$AttachmentController/cms/bg.png)",
-        "background-color" : "#eee",
-	    "border-top": "1px solid #FFF",
-	    "border-bottom": "1px solid #b6b6b6"
-	},
-	"actionsBoxNode": {
-        "overflow": "hidden",
-        "border-bottom": "1px solid #eaebea",
-        "float": "left",
-        "margin-left": "10px",
-        "margin-top": "5px",
-        "border-radius": "3px",
-        "background-color" : "#fff"
-        //"background-image": "url("+o2.session.path+"/widget/$AttachmentController/cms/buttonbg.png)"
-	},
-	"actionsGroupNode": {
-	    "height": "26px",
-	    "border": "1px solid #979797",
-	    "border-radius": "3px",
-        "background-color" : "#fff"
-	    //"background-image": "url("+o2.session.path+"/widget/$AttachmentController/cms/buttonbg.png)"
-	},
-	"actionNode": {
-	    "float": "left",
-        "width": "26px",
-        "height": "26px",
-        "cursor": "default"
-	},
-	"actionIconNode": {
-	    "width": "26px",
-	    "height": "26px",
-	    "background-repeat": "no-repeat",
-	    "background-position": "center center"
-	},
-	"separateNode": {
-	    "width":"1px",
-	    "height": "16px",
-        "margin-top": "5px",
-        "margin-left": "5px",
-        "margin-right": "5px",
-        "border-left": "1px solid #bcbcbc",
-        "background-color": "#f1f1f1",
-        "float": "left"
-	},
-	"contentScrollNode": {
-        "background-color": "#FFF",
-        "overflow": "hidden",
-        "min-height": "130px",
-   //     "height": "130px"
-	},
-	"contentNode": {
-        "background-color": "#FFF",
-        "overflow": "hidden",
-        "margin-right": "6px"
-	},
-	"bottomNode": {
-	    "height": "7px",
-	    "border-top": "1px solid #b6b6b6",
-	    "background-color": "#e8e8e8"
-	},
-	"resizeNode": {
-	    "height": "7px",
-	    "cursor": "row-resize"
-	},
-	"attachmentNode_icon": {
-	    "width": "90px",
-	    "height": "100px",
-	    "padding": "5px",
-	    "float": "left",
-	    "margin": "10px 10px 10px 10px",
-	    "border-radius": "3px",
-	    "border": "2px solid #FFF",
-	    "background-color": "#FFF",
-	    "-webkit-user-select": "text",
-        "-moz-user-select": "text"
-	},
-	"attachmentNode_icon_over": {
-        "border": "2px solid #cdcfd1",
-      "background-color" : "#e1edf7"
-        //"background-color": "#eaf0f5"
-    },
-    "attachmentNode_icon_selected": {
-        "border": "2px solid #d7e1e8",
-      "background-color" : "#92bce0"
-        //"background-color": "#d7e1e8"
-    },
-	"attachmentIconNode": {
-	    "width": "90px",
-        "height": "66px",
-        "text-align": "center"
-	},
-	"attachmentIconImgAreaNode": {
-	    "width": "64px",
-        "height": "64px",
-        "margin": "auto"
-	},
-	"attachmentIconImgNode": {
-	    "width": "64px",
-        "height": "64px"
-	},
-	"attachmentTextNode": {
-	    "height": "34px",
-	    "line-height": "17px",
-	    "font-size": "12px",
-	    "overflow": "hidden",
-	    "word-break": "break-all",
-	    "text-overflow": "ellipsis",
-	    "text-align": "center"
-	},
+  "container": {
+    "border": "1px solid #b6b6b6",
+    "min-height": "180px",
+    "background": "#FFF",
+    "margin-top": "10px",
+    "overflow": "hidden"
+  },
+  "container_min": {
+    "border": "0px solid #b6b6b6",
+    "min-height": "30px",
+    "overflow": "hidden",
+    "background": "transparent",
+    "height": "auto"
+  },
+  "minActionAreaNode": {
+    "float": "right",
+    "height": "26px",
+    "margin": "2px",
+    "border": "1px solid #979797",
+    "border-radius": "3px",
+    "background-color" : "#fff"
+  },
+  "minContentNode": {
+    "margin-right":"108px",
+    "min-height": "30px"
+  },
+  "titleNode": {
+    "color" : "#3587d7",
+    "height": "30px",
+    "background-color": "#DDD",
+    "border-top": "1px solid #FFF",
+    "border-bottom": "1px solid #b6b6b6",
+    "line-height": "30px",
+    "font-size": "14px",
+    "font-weight": "bold",
+    "padding-left": "10px",
+    "text-align": "left"
+  },
+  "topNode": {
+    "height": "40px",
+    "background-color" : "#eee",
+    "border-top": "1px solid #FFF",
+    "border-bottom": "1px solid #b6b6b6"
+  },
+  "actionsBoxNode": {
+    "overflow": "hidden",
+    "border-bottom": "1px solid #eaebea",
+    "float": "left",
+    "margin-left": "10px",
+    "margin-top": "5px",
+    "border-radius": "3px",
+    "background-color" : "#fff"
+  },
+  "actionsGroupNode": {
+    "height": "26px",
+    "border": "1px solid #979797",
+    "border-radius": "3px",
+    "background-color" : "#fff"
+  },
+  "actionNode": {
+    "float": "left",
+    "width": "26px",
+    "height": "26px",
+    "cursor": "default"
+  },
+  "actionIconNode": {
+    "width": "26px",
+    "height": "26px",
+    "background-repeat": "no-repeat",
+    "background-position": "center center"
+  },
+  "separateNode": {
+    "width":"1px",
+    "height": "16px",
+    "margin-top": "5px",
+    "margin-left": "5px",
+    "margin-right": "5px",
+    "border-left": "1px solid #bcbcbc",
+    "background-color": "#f1f1f1",
+    "float": "left"
+  },
+  "contentScrollNode": {
+    "background-color": "#FFF",
+    "overflow": "hidden",
+    "min-height": "130px"
+  },
+  "contentNode": {
+    "background-color": "#FFF",
+    "overflow": "hidden",
+    "margin-right": "6px"
+  },
+  "bottomNode": {
+    "height": "7px",
+    "border-top": "1px solid #b6b6b6",
+    "background-color": "#e8e8e8"
+  },
+  "resizeNode": {
+    "height": "7px",
+    "cursor": "row-resize"
+  },
+  "attachmentNode_icon": {
+    "width": "90px",
+    "height": "100px",
+    "padding": "5px",
+    "float": "left",
+    "margin": "10px 10px 10px 10px",
+    "border-radius": "3px",
+    "border": "2px solid #FFF",
+    "background-color": "#FFF",
+    "-webkit-user-select": "text",
+    "-moz-user-select": "text"
+  },
+  "attachmentNode_icon_over": {
+    "border": "2px solid #cdcfd1",
+    "background-color" : "#e1edf7"
+  },
+  "attachmentNode_icon_selected": {
+    "border": "2px solid #d7e1e8",
+    "background-color" : "#92bce0"
+  },
+  "attachmentIconNode": {
+    "width": "90px",
+    "height": "66px",
+    "text-align": "center"
+  },
+  "attachmentIconImgAreaNode": {
+    "width": "64px",
+    "height": "64px",
+    "margin": "auto"
+  },
+  "attachmentIconImgNode": {
+    "width": "64px",
+    "height": "64px"
+  },
+  "attachmentTextNode": {
+    "height": "34px",
+    "line-height": "17px",
+    "font-size": "12px",
+    "overflow": "hidden",
+    "word-break": "break-all",
+    "text-overflow": "ellipsis",
+    "text-align": "center"
+  },
 
-	attachmentNode_sequence: {
-        "width": "auto",
-        "height": "30px",
-        "padding": "0px",
-        "float": "none",
-        "border-radius": "0px",
-        "border": "0px solid #FFF",
-        "background-color": "#FFF",
-        "margin": "0px 10px",
-        "-webkit-user-select": "text",
-        "-moz-user-select": "text"
-    },
-    "attachmentNode_sequence_over": {
-        "border": "0px solid #cdcfd1",
-        "background-color": "#eaf0f5"
-    },
-    "attachmentNode_sequence_selected": {
-        "border": "0px solid #d7e1e8",
-        "background-color": "#d7e1e8"
-    },
-    "attachmentNode_sequence_selected": {
-        "border": "0px solid #d7e1e8",
-        "background-color": "#d7e1e8"
-    },
-    "attachmentSeqNode_sequence": {
-        "width": "30px",
-        "height": "30px",
-        "line-height": "30px",
-        "color": "#666666",
-        "float": "left",
-        "text-align": "center"
-    },
-    "attachmentTextNode_sequence": {
-        "height": "30px",
-        "line-height": "30px",
-        "margin-left": "70px",
-        "font-size": "12px",
-        "overflow": "hidden",
-        "word-break": "break-all",
-        "text-overflow": "ellipsis",
-        "text-align": "left"
-    },
+  "attachmentNode_sequence": {
+    "width": "auto",
+    "height": "30px",
+    "padding": "0px",
+    "float": "none",
+    "border-radius": "0px",
+    "border": "0px solid #FFF",
+    "background-color": "#FFF",
+    "margin": "0px 10px",
+    "-webkit-user-select": "text",
+    "-moz-user-select": "text"
+  },
+  "attachmentNode_sequence_over": {
+    "border": "0px solid #cdcfd1",
+    "background-color": "#eaf0f5"
+  },
+  "attachmentNode_sequence_selected": {
+    "border": "0px solid #d7e1e8",
+    "background-color": "#d7e1e8"
+  },
+  "attachmentSeqNode_sequence": {
+    "width": "30px",
+    "height": "30px",
+    "line-height": "30px",
+    "color": "#666666",
+    "float": "left",
+    "text-align": "center"
+  },
+  "attachmentTextNode_sequence": {
+    "height": "30px",
+    "line-height": "30px",
+    "margin-left": "70px",
+    "font-size": "12px",
+    "overflow": "hidden",
+    "word-break": "break-all",
+    "text-overflow": "ellipsis",
+    "text-align": "left"
+  },
 
-	attachmentNode_list: {
-	    "width": "auto",
-        "height": "30px",
-        "padding": "0px",
-        "float": "none",
-        "border-radius": "0px",
-        "border": "0px solid #FFF",
-        "background-color": "#FFF",
-        "margin": "0px 10px",
-        "-webkit-user-select": "text",
-        "-moz-user-select": "text"
-	},
-	"attachmentNode_list_over": {
-        "border": "0px solid #cdcfd1",
-      "background-color" : "#e1edf7"
-        //"background-color": "#eaf0f5"
-    },
-    "attachmentNode_list_selected": {
-        "border": "0px solid #d7e1e8",
-      "background-color" : "#92bce0"
-        //"background-color": "#d7e1e8"
-    },
-    "attachmentIconNode_list": {
-        "width": "40px",
-        "height": "30px",
-        "float": "left"
-    },
-    "attachmentIconImgAreaNode_list": {
-        "width": "24px",
-        "height": "24px",
-        "margin": "3px 8px"
-    },
-    "attachmentIconImgNode_list": {
-        "width": "24px",
-        "height": "24px"
-    },
-    "attachmentTextNode_list": {
-        "height": "30px",
-        "line-height": "30px",
-        "margin-left": "40px",
-        "font-size": "12px",
-        "overflow": "hidden",
-        "word-break": "break-all",
-        "text-overflow": "ellipsis",
-        "text-align": "left"
-    },
-	"attachmentTextTitleNode_list": {
-	    "height": "30px",
-	    "float": "left",
-	    "width": "30%"
-	},
-	"attachmentTextSizeNode_list": {
-	    "height": "30px",
-        "float": "left",
-        "width": "15%"
-	},
-	"attachmentTextUploaderNode_list": {
-	    "height": "30px",
-        "float": "left",
-        "width": "15%"
-	},
-	"attachmentTextTimeNode_list": {
-	    "height": "30px",
-        "float": "left",
-        "width": "20%"
-	},
-    "attachmentTextActivityNode_list": {
-        "height": "30px",
-         "float": "left",
-         "width": "20%"
-    },
+  "attachmentNode_list": {
+    "width": "auto",
+    "height": "30px",
+    "padding": "0px",
+    "float": "none",
+    "border-radius": "0px",
+    "border": "0px solid #FFF",
+    "background-color": "#FFF",
+    "margin": "0px 10px",
+    "-webkit-user-select": "text",
+    "-moz-user-select": "text"
+  },
+  "attachmentNode_list_over": {
+    "border": "0px solid #cdcfd1",
+    "background-color" : "#e1edf7"
+  },
+  "attachmentNode_list_selected": {
+    "border": "0px solid #d7e1e8",
+    "background-color" : "#92bce0"
+  },
+  "attachmentIconNode_list": {
+    "width": "40px",
+    "height": "30px",
+    "float": "left"
+  },
+  "attachmentIconImgAreaNode_list": {
+    "width": "24px",
+    "height": "24px",
+    "margin": "3px 8px"
+  },
+  "attachmentIconImgNode_list": {
+    "width": "24px",
+    "height": "24px"
+  },
+  "attachmentTextNode_list": {
+    "height": "30px",
+    "line-height": "30px",
+    "margin-left": "40px",
+    "font-size": "12px",
+    "overflow": "hidden",
+    "word-break": "break-all",
+    "text-overflow": "ellipsis",
+    "text-align": "left"
+  },
+  "attachmentTextTitleNode_list": {
+    "height": "30px",
+    "float": "left",
+    "width": "30%"
+  },
+  "attachmentTextSizeNode_list": {
+    "height": "30px",
+    "float": "left",
+    "width": "15%"
+  },
+  "attachmentTextUploaderNode_list": {
+    "height": "30px",
+    "float": "left",
+    "width": "15%"
+  },
+  "attachmentTextTimeNode_list": {
+    "height": "30px",
+    "float": "left",
+    "width": "20%"
+  },
+  "attachmentTextActivityNode_list": {
+    "height": "30px",
+    "float": "left",
+    "width": "20%"
+  },
 
-    "attachmentNode_preview": {
-        "width": "180px",
-        "height": "160px",
-        "padding": "5px",
-        "float": "left",
-        "margin": "10px 10px 10px 10px",
-        "border-radius": "3px",
-        "border": "2px solid #FFF",
-        "background-color": "#FFF",
-        "-webkit-user-select": "text",
-        "-moz-user-select": "text"
-    },
-    "attachmentNode_preview_over": {
-        "border": "2px solid #cdcfd1",
-        "background-color" : "#e1edf7"
-        //"background-color": "#eaf0f5"
-    },
-    "attachmentNode_preview_selected": {
-        "border": "2px solid #d7e1e8",
-      "background-color" : "#92bce0"
-        //"background-color": "#d7e1e8"
-    },
-    "attachmentPreviewIconNode": {
-        "width": "180px",
-        "height": "126px",
-        "text-align": "center"
-    },
-    "attachmentPreviewIconImgAreaNode": {
-        "width": "72px",
-        "height": "72px",
-        "margin": "auto"
-    },
-    "attachmentPreviewIconImgNode": {
-        "width": "72px",
-        "height": "72px",
-        "margin-top": "22px"
-    },
-    "attachmentPreviewAudioNode": {
-        "width": "180px",
-        "height": "30px",
-        "position": "relative",
-        "top": "-64px",
-        "opacity": "0.7"
-    },
-    "attachmentPreviewVideoNode": {
-        "width": "180px",
-        "height": "126px"
-    },
-    "attachmentPreviewTextNode": {
-        "height": "34px",
-        "line-height": "17px",
-        "font-size": "12px",
-        "overflow": "hidden",
-        "word-break": "break-all",
-        "text-overflow": "ellipsis",
-        "text-align": "center"
-    },
-
-
-    "minAttachmentNode_sequence": {
-        "width": "auto",
-        "height": "30px",
-        "padding": "0px",
-        "float": "none",
-        "border-radius": "0px",
-        "border": "0px solid #FFF",
-        "background": "transparent",
-        "margin": "0px 5px",
-        "-webkit-user-select": "text",
-        "-moz-user-select": "text"
-    },
-    "minAttachmentNode_sequence_over": {
-        "border": "0px solid #cdcfd1",
-        "background-color": "#eaf0f5"
-    },
-    "minAttachmentNode_sequence_selected": {
-        "border": "0px solid #d7e1e8",
-        "background-color": "#d7e1e8"
-    },
-    "minAttachmentNode_list": {
-        "width": "auto",
-        "height": "30px",
-        "padding": "0px",
-        "float": "left",
-        "border-radius": "0px",
-        "border": "0px solid #FFF",
-        "background": "transparent",
-        "margin": "0px 5px",
-        "-webkit-user-select": "text",
-        "-moz-user-select": "text"
-    },
-    "minAttachmentNode_list_over": {
-        "border": "0px solid #cdcfd1",
-        //"background-color": "#eaf0f5"
-        "background-color" : "#e1edf7"
-    },
-    "minAttachmentNode_list_selected": {
-        "border": "0px solid #d7e1e8",
-      "background-color" : "#92bce0"
-        //"background-color": "#d7e1e8"
-    },
-    "minAttachmentIconNode_list": {
-        "width": "30px",
-        "height": "30px",
-        "float": "left"
-    },
-    "minAttachmentIconImgAreaNode_list": {
-        "width": "24px",
-        "height": "24px",
-        "margin": "3px 3px"
-    },
-    "minAttachmentIconImgNode_list": {
-        "width": "24px",
-        "height": "24px"
-    },
-    "minAttachmentTextNode_list": {
-        "height": "30px",
-        "cursor": "default",
-        "line-height": "30px",
-        "margin-left": "0px",
-        "margin-right": "6px",
-        "font-size": "12px",
-        "overflow": "hidden",
-        "word-break": "break-all",
-        "text-overflow": "ellipsis",
-        "text-align": "left"
-    }
+  "attachmentNode_preview": {
+    "width": "180px",
+    "height": "160px",
+    "padding": "5px",
+    "float": "left",
+    "margin": "10px 10px 10px 10px",
+    "border-radius": "3px",
+    "border": "2px solid #FFF",
+    "background-color": "#FFF",
+    "-webkit-user-select": "text",
+    "-moz-user-select": "text"
+  },
+  "attachmentNode_preview_over": {
+    "border": "2px solid #cdcfd1",
+    "background-color" : "#e1edf7"
+  },
+  "attachmentNode_preview_selected": {
+    "border": "2px solid #d7e1e8",
+    "background-color" : "#92bce0"
+  },
+  "attachmentPreviewIconNode": {
+    "width": "180px",
+    "height": "126px",
+    "text-align": "center"
+  },
+  "attachmentPreviewIconImgAreaNode": {
+    "width": "72px",
+    "height": "72px",
+    "margin": "auto"
+  },
+  "attachmentPreviewIconImgNode": {
+    "width": "72px",
+    "height": "72px",
+    "margin-top": "22px"
+  },
+  "attachmentPreviewAudioNode": {
+    "width": "180px",
+    "height": "30px",
+    "position": "relative",
+    "top": "-64px",
+    "opacity": "0.7"
+  },
+  "attachmentPreviewVideoNode": {
+    "width": "180px",
+    "height": "126px"
+  },
+  "attachmentPreviewTextNode": {
+    "height": "34px",
+    "line-height": "17px",
+    "font-size": "12px",
+    "overflow": "hidden",
+    "word-break": "break-all",
+    "text-overflow": "ellipsis",
+    "text-align": "center"
+  },
 
+  "minActionNode": {
+    "float": "left",
+    "width": "26px",
+    "height": "26px",
+    "cursor": "default"
+  },
+  "minActionIconNode": {
+    "width": "26px",
+    "height": "26px",
+    "background-repeat": "no-repeat",
+    "background-position": "center center"
+  },
+  "minAttachmentNode_sequence": {
+    "width": "auto",
+    "height": "30px",
+    "padding": "0px",
+    "float": "none",
+    "border-radius": "0px",
+    "border": "0px solid #FFF",
+    "background": "transparent",
+    "margin": "0px 5px",
+    "-webkit-user-select": "text",
+    "-moz-user-select": "text"
+  },
+  "minAttachmentNode_sequence_over": {
+    "border": "0px solid #cdcfd1",
+    "background-color": "#eaf0f5"
+  },
+  "minAttachmentNode_sequence_selected": {
+    "border": "0px solid #d7e1e8",
+    "background-color": "#d7e1e8"
+  },
+  "minAttachmentNode_list": {
+    "height": "30px",
+    "padding": "0px 10px",
+    "float": "left",
+    "border-radius": "0px",
+    "border": "0px solid #FFF",
+    "background": "transparent",
+    "margin": "5px 5px",
+    "-webkit-user-select": "text",
+    "-moz-user-select": "text",
+    "width" : "47%",
+    "border-right" : "1px dashed #dcdcdc"
+  },
+  "minAttachmentSepNode_list" : {
+  },
+  "minAttachmentNode_list_over": {
+    "background-color": "#eaf0f5"
+  },
+  "minAttachmentNode_list_selected": {
+    "background-color": "#d7e1e8"
+  },
+  "minAttachmentIconNode_list": {
+    "width": "30px",
+    "height": "30px",
+    "float": "left"
+  },
+  "minAttachmentIconImgAreaNode_list": {
+    "width": "24px",
+    "height": "24px",
+    "margin": "3px 3px"
+  },
+  "minAttachmentIconImgNode_list": {
+    "width": "24px",
+    "height": "24px"
+  },
+  "minAttachmentTextNode_list": {
+    "height": "30px",
+    "cursor": "default",
+    "line-height": "30px",
+    "margin-left": "0px",
+    "margin-right": "0px",
+    "font-size": "12px",
+    "overflow": "hidden",
+    "word-break": "break-all",
+    "text-overflow": "ellipsis",
+    "text-align": "left"
+  },
+  "minAttachmentSizeNode_list": {
+    "height": "30px",
+    "font-size": "12px",
+    "line-height": "30px",
+    "margin-left" : "0px",
+    "margin-right": "6px",
+    "display" : "inline"
+  },
+  "minAttachmentActionAreaNode" : {
+    "float" : "right",
+    "overflow" : "hidden"
+  },
+  "inputUploadAreaNode": {
+    "width": "450px",
+    "height": "160px",
+    "border-radius": "5px",
+    "box-shadow": "0px 0px 10px #FFF",
+    "position": "absolute",
+    "border": "2px solid #999",
+    "border-top": "4px solid #5290e5",
+    "background-color": "#FFF",
+    "z-index": 100
+  },
+  "inputUploadAreaTitleNode": {
+    "height": "30px",
+    "line-height": "30px",
+    "text-align": "center",
+    "font-weight": "bold",
+    "font-family": "΢ÈíÑźÚ",
+    "font-size": "14px"
+  },
+  "inputUploadAreaInforNode": {
+    "height": "24px",
+    "line-height": "24px",
+    "color": "#666",
+    "font-family": "΢ÈíÑźÚ",
+    "font-size": "12px",
+    "text-align": "left",
+    "margin": "10px 20px 0px 20px"
+  },
+  "inputUploadAreaInputAreaNode": {
+    "margin": "0px 20px 20px 20px",
+    "height": "24px"
+  },
+  "inputUploadAreaInputNode": {
+    "width": "407px",
+    "height": "23px",
+    "border": "1px solid #666"
+  },
+  "inputUploadActionNode": {
+    "margin": "0px 20px",
+    "border-top": "1px solid #999"
+  },
+  "inputUploadOkButton": {
+    "height": "24px",
+    "width": "80px",
+    "color": "#FFF",
+    "background-color": "#42699e",
+    "border": "1px solid #1e3d67",
+    "border-radius": "3px",
+    "float": "right",
+    "margin-top": "10px",
+    "margin-left": "10px"
+  },
+  "inputUploadCancelButton": {
+    "height": "24px",
+    "width": "80px",
+    "color": "#666",
+    "background-color": "#DFDFDF",
+    "border": "1px solid #666",
+    "border-radius": "3px",
+    "float": "right",
+    "margin-top": "10px",
+    "margin-left": "10px"
+  }
 }

BIN
o2web/source/o2_core/o2/widget/$AttachmentController/cms/icon/config_single.png


BIN
o2web/source/o2_core/o2/widget/$AttachmentController/cms/icon/config_single_over.png


BIN
o2web/source/o2_core/o2/widget/$AttachmentController/cms/icon/delete_single.png


BIN
o2web/source/o2_core/o2/widget/$AttachmentController/cms/icon/delete_single_over.png


BIN
o2web/source/o2_core/o2/widget/$AttachmentController/cms/icon/download_single.png


BIN
o2web/source/o2_core/o2/widget/$AttachmentController/cms/icon/download_single_over.png


+ 35 - 7
o2web/source/o2_core/o2/widget/$AttachmentController/default/css.wcss

@@ -143,7 +143,7 @@
 	    "text-overflow": "ellipsis",
 	    "text-align": "center"
 	},
-    attachmentNode_sequence: {
+    "attachmentNode_sequence": {
         "width": "auto",
         "height": "30px",
         "padding": "0px",
@@ -312,6 +312,18 @@
     },
 
 
+    "minActionNode": {
+        "float": "left",
+        "width": "26px",
+        "height": "26px",
+        "cursor": "default"
+    },
+    "minActionIconNode": {
+        "width": "26px",
+        "height": "26px",
+        "background-repeat": "no-repeat",
+        "background-position": "center center"
+    },
     "minAttachmentNode_sequence": {
         "width": "auto",
         "height": "30px",
@@ -335,21 +347,25 @@
     "minAttachmentNode_list": {
         "width": "auto",
         "height": "30px",
-        "padding": "0px",
+        "padding": "0px 10px",
         "float": "left",
         "border-radius": "0px",
         "border": "0px solid #FFF",
         "background": "transparent",
-        "margin": "0px 5px",
+        "margin": "5px 5px",
         "-webkit-user-select": "text",
-        "-moz-user-select": "text"
+        "-moz-user-select": "text",
+        "width" : "47%",
+        "border-right" : "1px dashed #dcdcdc"
+    },
+    "minAttachmentSepNode_list" : {
     },
     "minAttachmentNode_list_over": {
-        "border": "0px solid #cdcfd1",
+        //"border": "0px solid #cdcfd1",
         "background-color": "#eaf0f5"
     },
     "minAttachmentNode_list_selected": {
-        "border": "0px solid #d7e1e8",
+        //"border": "0px solid #d7e1e8",
         "background-color": "#d7e1e8"
     },
     "minAttachmentIconNode_list": {
@@ -371,13 +387,25 @@
         "cursor": "default",
         "line-height": "30px",
         "margin-left": "0px",
-        "margin-right": "6px",
+        "margin-right": "0px",
         "font-size": "12px",
         "overflow": "hidden",
         "word-break": "break-all",
         "text-overflow": "ellipsis",
         "text-align": "left"
     },
+    "minAttachmentSizeNode_list": {
+        "height": "30px",
+        "font-size": "12px",
+        "line-height": "30px",
+        "margin-left" : "0px",
+        "margin-right": "6px",
+        "display" : "inline"
+    },
+    "minAttachmentActionAreaNode" : {
+      "float" : "right",
+        "overflow" : "hidden"
+    },
     "inputUploadAreaNode": {
         "width": "450px",
         "height": "160px",

BIN
o2web/source/o2_core/o2/widget/$AttachmentController/default/icon/config_single.png


BIN
o2web/source/o2_core/o2/widget/$AttachmentController/default/icon/config_single2.png


BIN
o2web/source/o2_core/o2/widget/$AttachmentController/default/icon/config_single_over.png


BIN
o2web/source/o2_core/o2/widget/$AttachmentController/default/icon/delete_single.png


BIN
o2web/source/o2_core/o2/widget/$AttachmentController/default/icon/delete_single_over.png


BIN
o2web/source/o2_core/o2/widget/$AttachmentController/default/icon/download_single.png


BIN
o2web/source/o2_core/o2/widget/$AttachmentController/default/icon/download_single_over.png


+ 92 - 0
o2web/source/o2_core/o2/widget/$Dialog/cmcc_confirm/css.wcss

@@ -0,0 +1,92 @@
+{
+	"from": {
+		"width": "1px",
+		"height": "1px",
+		"position": "absolute",
+		"top": $(document.body).getSize().y/2,
+		"left": $(document.body).getSize().x/2,
+		"border-style": "solid",
+		"border-color": "#3C76B7",
+		"border-width": "0px",
+	    "overflow": "hidden",
+		"background-color": "#fff",
+		"box-shadow": "0px 0px 20px #999999",
+		"z-index": "20000",
+
+		"padding": "3px" ,
+
+		"opacity": 0
+	},
+	"to": {
+		"background-color": "#fff",
+		"border-style": "solid",
+		"border-color": "#3C76B7",
+		"border-width": "0px",
+		"box-shadow": "0px 0px 20px #999999",
+		"z-index": "20000",
+		"overflow": "hidden",
+		"font-size": "14px",
+		"height": "60",
+		"padding": "0px",
+		"width": "300",
+		"position": "absolute",
+		"top": "0",
+		"left": "0",
+		"opacity": 1
+	},
+	"mark": {
+		"height": "0",
+		"width": "0",
+		"opacity": 0.5,
+		"position": "absolute",
+		"top": "0px",
+		"left": "0px",
+		"z-index": "19999",
+		"border-style": "none",
+		"border-width": "0",
+		"background-color": "#a1a1a1"
+	},
+	"button": {
+	  "border" : "1px solid #1E9FFF",
+	  "background-color" : "#1E9FFF",
+	  "color" : "#fff",
+	  "height" : "28px",
+	  "line-height" : "28px",
+	  "margin": "10px 5px",
+	  "padding" : "0px 15px",
+	  "border-radius" : "2px",
+	  "font-weight" : "400",
+	  "cursor" : "pointer"
+	},
+	"button": {
+	  "border" : "1px solid #1E9FFF",
+	  "background-color" : "#1E9FFF",
+	  "color" : "#fff",
+	  "height" : "28px",
+	  "line-height" : "28px",
+	  "margin": "10px 5px",
+	  "padding" : "0px 15px",
+	  "border-radius" : "2px",
+	  "font-weight" : "400",
+	  "cursor" : "pointer"
+	},
+  	"cancelButton" : {
+	  "border" : "1px solid #f1f4f9",
+	  "background-color" : "#f1f4f9",
+	  "color" : "#333",
+	  "height" : "28px",
+	  "line-height" : "28px",
+	  "margin": "10px 5px",
+	  "padding" : "0px 15px",
+	  "border-radius" : "2px",
+	  "font-weight" : "400",
+	  "cursor" : "pointer"
+	},
+	"closeAction": {
+	    "height": "32px",
+	    "width": "32px",
+	    "float": "right",
+	    "cursor": "pointer",
+	    "background": "url("+o2.session.path+"/widget/$Dialog/cmcc/img/close.png) center center no-repeat",
+	}
+}

Разница между файлами не показана из-за своего большого размера
+ 6 - 0
o2web/source/o2_core/o2/widget/$Dialog/cmcc_confirm/dialog.html


BIN
o2web/source/o2_core/o2/widget/$Dialog/cmcc_confirm/img/bottom-bg.gif


BIN
o2web/source/o2_core/o2/widget/$Dialog/cmcc_confirm/img/bottom-left.gif


BIN
o2web/source/o2_core/o2/widget/$Dialog/cmcc_confirm/img/bottom-right.gif


BIN
o2web/source/o2_core/o2/widget/$Dialog/cmcc_confirm/img/close.png


BIN
o2web/source/o2_core/o2/widget/$Dialog/cmcc_confirm/img/resize.png


BIN
o2web/source/o2_core/o2/widget/$Dialog/cmcc_confirm/img/title-bg.gif


BIN
o2web/source/o2_core/o2/widget/$Dialog/cmcc_confirm/img/title-left.gif


BIN
o2web/source/o2_core/o2/widget/$Dialog/cmcc_confirm/img/title-right.gif


+ 3 - 3
o2web/source/o2_core/o2/widget/$Dialog/user/css.wcss

@@ -11,7 +11,7 @@
 	    "overflow": "hidden",
 		"background-color": "#f3f3f3",
 		"box-shadow": "0px 0px 20px #999999",
-		"z-index": "20000",
+		"z-index": "1000",
 		
 		"padding": "3px",
 
@@ -24,7 +24,7 @@
 		"border-color": "#3C76B7",
 		"border-width": "1",
 		"box-shadow": "0px 0px 20px #999999",
-		"z-index": "20000",
+		"z-index": "1000",
 		"overflow": "hidden",
 		"font-size": "14px",
 		"height": "60",
@@ -43,7 +43,7 @@
 		"position": "absolute",
 		"top": "0px",
 		"left": "0px",
-		"z-index": "19999",
+		"z-index": "999",
 		"border-style": "none",
 		"border-width": "0",
 		"background-color": "#CCC"

+ 8 - 2
o2web/source/o2_core/o2/widget/$Dialog/view/css.wcss

@@ -49,8 +49,14 @@
 		"background-color": "#CCC"
 	},
 	"button": {
+//		"border": "1px solid #999",
+//		"color": "#333",
+//		"margin": "0px 5px",
 		"border": "1px solid #999",
-		"color": "#333",
-		"margin": "0px 5px"
+        "width": "80px",
+        "padding": "3px",
+        "border-radius": "5px",
+        "color": "#333",
+        "margin": "0px 5px"
 	}
 }

+ 1 - 2
o2web/source/o2_core/o2/widget/$Dialog/view/dialog.html

@@ -5,10 +5,9 @@
     <div style="margin-top: 0px; overflow-y:auto">
         <div class="MWF_dialod_content" style="text-align: left; padding: 0px 10px; line-height:20px;"></div>
     </div>
-	<div style="height:22px; text-align: right;padding-right:10px; margin-top: 20px;" class="MWF_dialod_button">
+	<div style="height:22px; text-align: right;padding-right:10px; margin-top: 10px;" class="MWF_dialod_button">
         
     </div>
     <div class="MWF_dialod_bottom" style="; margin: 5px 0px;">
-        <div style="height: 8px;"></div>
     </div>
 </div>

+ 111 - 0
o2web/source/o2_core/o2/widget/$Menu/cmcc/css.wcss

@@ -0,0 +1,111 @@
+{
+	"container": {
+		"border-top": "1px solid #738ab5",
+		"border-left": "1px solid #738ab5",
+		"border-right": "1px solid #3c5b94",
+		"border-bottom": "1px solid #3c5b94",
+		"background-color": "#f7f3f7",
+		"padding-top": "2px",
+		"padding-bottom": "2px",
+		"padding-left": "2px",
+		"padding-right": "2px",
+		"overflow": "hidden",
+		"font-size": "12px",
+		"display": "none",
+		"z-index": "999",
+		"opacity": 0,
+		"position": "absolute",
+		"float": "left",
+		"min-width": "120px",
+		"box-shadow": "3px 3px 10px #AAA", 
+		"cursor": "default"
+	},
+	"menuItem": {
+		"display":"block",
+		"position": "static",
+		"height": "24px",
+		"line-height": "24px",
+		"border": "1px solid #f7f3f7",
+		"background-color": "#f7f3f7"
+	},
+
+	"menuItemImgDiv": {
+		"display":"block",
+		"float": "left",
+		"width": "24px",
+		"height": "24px",
+		"text-align": "center"
+	},
+	"menuItemImg": {
+		"height": "16px",
+		"width": "16px",
+		"margin-top": "3px"
+	},
+	"menuItemSeparator": {
+		"display":"block",
+		"float": "left",
+		"height": "24px",
+		"width": "1px",
+		"background-color": "#CCCCCC",
+		"border-right": "1px solid #FFFFFF",
+		"overflow": "hidden"
+	},
+	"menuItemText": {
+		"display":"block",
+		"position": "static",
+		"height": "24px",
+		"margin-left": "35px",
+		"margin-right": "30px",
+		"line-height": "24px"
+	},
+	"menuLine": {
+		"position": "static",
+		"display":"block",
+		"height": "1px",
+		"overflow": "hidden",
+		"margin-left": "28px",
+		"margin-top": "3px",
+		"margin-bottom": "3px",
+		"background-color": "#CCCCCC",
+		"border-bottom": "1px solid #FFFFFF"
+	},
+	"menuItemDisable": {
+		"color": "#999"
+	},
+
+	"menuOver": {
+		"border": "1px solid #8d9cc3",
+		//"background-color": "#b5bed6"
+		"background-color": "#e3e7f1"
+	},
+	"menuOut": {
+		"border": "1px solid #f7f3f7",
+		"background-color": "#f7f3f7"
+	},
+	"menuDown": {
+		"border": "1px solid #000000",
+		"background-color": "#c6cde0"
+	},
+	"menuUp": {
+		"border": "1px solid #8d9cc3",
+		//"background-color": "#b5bed6"
+		"background-color": "#e3e7f1"
+	},
+	"toolbarButtonDownNode": {
+		"display":"block",
+		"float": "left",
+		"padding-left": "2px",
+		"padding-right": "2px",
+		"padding-top": "0px",
+		"height": "18px",
+		"color": "#ff0000",
+		"cursor": "pointer"
+	},
+	"menuItemSubmenuIcon":{
+		"background-image": "url("+o2.session.path+"/widget/$Menu/form/submenu.png)",
+		"height": "16px",
+		"width": "16px",
+		"margin-top": "4px",
+		"float": "right"
+	}
+}

BIN
o2web/source/o2_core/o2/widget/$Menu/cmcc/submenu.png


+ 5 - 2
o2web/source/o2_core/o2/widget/$Tab/orgMobile/css.wcss

@@ -13,6 +13,9 @@
 		"display": "none",
 		"opacity": 0
 	},
+    "tabNodeContainerArea" : {
+        "overflow" : "hidden"
+    },
 	"tabNode": {
         "position": "relative",
         "margin-left": "2px",
@@ -20,7 +23,7 @@
         "float": "left",
         "height": "40px",
         "cursor": "pointer",
-        "min-width": "60px",
+        //"min-width": "60px",
         "background": "#ffffff",
         "border": "0px"
     },
@@ -45,7 +48,7 @@
         "margin-right": "0px",
         "float": "left",
         "height": "40px",
-        "min-width": "60px",
+        //"min-width": "60px",
         "background": "#ffffff",
         "border-bottom": "2px solid #bf6364"
     },

BIN
o2web/source/o2_core/o2/widget/$Tablet/default/icon/cancel.png


BIN
o2web/source/o2_core/o2/widget/$Tablet/default/icon/imageClipper_active.png


BIN
o2web/source/o2_core/o2/widget/$Tablet/default/icon/imageClipper_disable.png


BIN
o2web/source/o2_core/o2/widget/$Tablet/default/icon/imageClipper_normal.png


BIN
o2web/source/o2_core/o2/widget/$Tablet/default/icon/image_active.png


BIN
o2web/source/o2_core/o2/widget/$Tablet/default/icon/image_disable.png


BIN
o2web/source/o2_core/o2/widget/$Tablet/default/icon/image_normal.png


BIN
o2web/source/o2_core/o2/widget/$Tablet/default/icon/ok.png


+ 100 - 0
o2web/source/o2_core/o2/widget/$Toolbar/cmcc/css.wcss

@@ -0,0 +1,100 @@
+{
+	"container": {
+		"background-color": "#fff",
+		"padding-top": "10px",
+		"padding-bottom": "10px",
+		"padding-left": "30px",
+		"padding-right": "2px",
+		"word-wrap" : "normal",
+		"word-break" : "keep-all",
+		"cursor": "pointer",
+		"overflow": "hidden",
+		"height": "auto",
+		"display":"block",
+		"font-size": "inherit",
+		"border-top": "0px",
+		"border-bottom": "2px solid #dcdcdc"
+	},
+	"toolbarSeparator": {
+		"display":"block",
+		"float": "left",
+		"margin-bottom": "5px",
+		"margin-top": "5px",
+		"height": "22px",
+		"width": "1px",
+		"background-color": "#888888",
+		"border-right": "1px solid #FFFFFF",
+		"overflow": "hidden"
+	},
+
+	"button": {
+		"display":"block",
+		"position": "static",
+		"float": "left",
+	  	"color" : "#fff",
+		"background-color": "#0b82ff",
+		"height": "34px",
+		"margin-right": "10px",
+		"padding-left": "15px",
+		"padding-right": "15px",
+		"cursor": "pointer",
+		"border-radius": "4px"
+	},
+	"buttonImgDiv": {
+		"display":"block",
+		"float": "left",
+		"padding-top": "9px",
+		"padding-bottom": "1px",
+		"padding-left": "1px",
+		"padding-right": "1px",
+		"cursor": "pointer"
+	},
+	"buttonImg": {
+		"height": "16px",
+		"width": "16px",
+		"cursor": "pointer",
+		"margin-top": "0px"
+	},
+	"buttonTextDiv": {
+		"display":"block",
+		"float": "left",
+		"height": "34px",
+		"padding-left": "2px",
+		"padding-right": "2px",
+		"line-height": "34px",
+		"cursor": "pointer"
+	},
+
+	"buttonDisable": {
+		"color": "#fff"
+	},
+	"buttonImgDivDisable": {
+		"color": "#fff"
+	},
+	"buttonTextDivDisable": {
+		"color": "#fff"
+	},
+
+	"buttonOver": {
+		"background-color": "#43ccf6"
+	},
+	"buttonOut": {
+		"background-color": "#0b82ff"
+	},
+	"buttonDown": {
+		"background-color": "#43ccf6"
+	},
+	"buttonUp": {
+		"background-color": "#0b82ff"
+	},
+	"toolbarButtonDownNode": {
+		"display":"block",
+		"float": "left",
+		"padding-left": "2px",
+		"padding-right": "2px",
+		"padding-top": "5px",
+		"height": "18px",
+		"color": "#fff",
+		"cursor": "pointer"
+	}
+}

BIN
o2web/source/o2_core/o2/widget/$Toolbar/cmcc/downicon.gif


BIN
o2web/source/o2_core/o2/widget/$Toolbar/cmcc/separatorbg.gif


BIN
o2web/source/o2_core/o2/widget/$Toolbar/cmcc/submenu.png


+ 104 - 0
o2web/source/o2_core/o2/widget/$Toolbar/documentEdit/css.wcss

@@ -0,0 +1,104 @@
+{
+	"container": {
+		"background-color": "#f9f9f9",
+		"padding-top": "6px",
+		"padding-bottom": "1px",
+		"padding-left": "10px",
+		"padding-right": "2px",
+		"word-wrap" : "normal",
+		"word-break" : "keep-all",
+		"cursor": "pointer",
+		"overflow": "hidden",
+		"height": "30px",
+		"display":"block",
+		"font-size": "14px"
+	},
+	"toolbarSeparator": {
+		"display":"block",
+		"float": "left",
+		"margin-bottom": "5px",
+		"margin-top": "3px",
+		"height": "18px",
+		"width": "1px",
+		"background-color": "#888888",
+		"border-right": "1px solid #FFFFFF",
+		"overflow": "hidden"
+	},
+
+	"button": {
+		"display":"block",
+		"position": "static",
+		"float": "left",
+		"border": "1px solid #f9f9f9",
+		"background-color": "#f9f9f9",
+		"height": "24px",
+		"margin-right": "8px",
+		"padding-left": "2px",
+		"padding-right": "2px",
+		"cursor": "pointer",
+		"color": "#333333",
+		"border-radius": "0px"
+	},
+	"buttonImgDiv": {
+		"display":"block",
+		"float": "left",
+		"padding-top": "4px",
+		"padding-bottom": "1px",
+		"padding-left": "1px",
+		"padding-right": "1px",
+		"cursor": "pointer"
+	},
+	"buttonImg": {
+		"height": "16px",
+		"width": "16px",
+		"cursor": "pointer",
+		"margin-top": "0px"
+	},
+	"buttonTextDiv": {
+		"display":"block",
+		"float": "left",
+		"height": "24px",
+		"padding-left": "2px",
+		"padding-right": "2px",
+		"line-height": "24px",
+		"cursor": "pointer"
+	},
+
+	"buttonDisable": {
+		"color": "#999"
+	},
+	"buttonImgDivDisable": {
+		"color": "#999"
+	},
+	"buttonTextDivDisable": {
+		"color": "#999"
+	},
+
+	"buttonOver": {
+		"background-color": "#e7e7e7",
+		"color": "#333333"
+	},
+	"buttonOut": {
+		"background-color": "#f9f9f9",
+		"color": "#333333"
+	},
+	"buttonDown": {
+		"background-color": "#dddddd",
+		//"background-color": "#1f77b4",
+		"color": "#333333"
+	},
+	"buttonUp": {
+		"background-color": "#e7e7e7",
+		"color": "#333333"
+	},
+	"toolbarButtonDownNode": {
+		"display":"block",
+		"float": "left",
+		"padding-left": "2px",
+		"padding-right": "2px",
+		"padding-top": "3px",
+		"height": "18px",
+		"color": "#ff0000",
+		"cursor": "pointer"
+	}
+}

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