提交 3e8b5042 编写于 作者: R roo00

o2web 升级

上级 a81ef1b6

要显示的变更太多。

To preserve performance only 1000 of 1000+ files are displayed.
......@@ -4,5 +4,4 @@
.project
/.settings/
/target/
*_.java
/.svn/
/.svn/
\ No newline at end of file
......@@ -2,7 +2,7 @@ O2OA
==========
## 简介
O2OA 是一套现代企业级的办公平台。有以下特点\:
O2OA 是一套现代企业级的办公平台。有以下特点\:
1. 核心代码开源
......
此差异已折叠。
# O2OA Web
[![Build Status](https://travis-ci.com/huqi1980/o2oa_client_web.svg?branch=master)](https://travis-ci.org/o2oa/o2oa)
[![AGPL](https://img.shields.io/badge/license-AGPL-blue.svg)](https://github.com/o2oa/o2oa)
[![code-size](https://img.shields.io/github/languages/code-size/o2oa/o2oa.svg)](https://github.com/o2oa/o2oa)
[![last-commit](https://img.shields.io/github/last-commit/o2oa/o2oa.svg)](https://github.com/o2oa/o2oa)
---
O2OA
==========
## 简介
O2OA 是一套现代企业级的办公平台。有以下特点\:
1. 核心代码开源
2. 全功能免费
3. 私有化部署,下载软件后可以安装在自己的服务器上
4. 随时随地办公,平台支持兼容HTML5的浏览器,并且开发了源生的IOS/Android应用
5. 高可扩展性,用户通过简单的学习后,可以自定义配置门户、流程应用、内容管理应用
更多的产品介绍、使用说明、下载、在线体验、API及讨论请移步至[http://o2oa.io/](http://www.o2oa.io/)
![o2oa](http://muliba.u.qiniudn.com/post/20180801-225850@2x.png)
## 官方网站\:
项目主页 : https://www.oschina.net/p/o2oa
下载地址 : http://www.o2oa.io
## 最新版本\:
## v4 build 11.02更新内容\:
新增功能\:
1、[内容管理]增加设计元素可以拷贝粘贴的功能。
2、[内容管理]增加组合框、子表单等设计元素组件。
3、[企业社区]增加导航浏览模式。
4、[服务管理]增加设计元素可以拷贝粘贴的功能。
更新优化\:
1、可以在配置中选择是否对office,pdf,text,image进行切词索引。
2、优化调整切词索引中对词性的判断。
3、优化钉钉,企业微信,政务钉钉中由于反复获取accessToken导致的页面响应缓慢的问题。
BUG修复\:
1、[内容管理]视图的分类标题无法保存的问题。
2、[内容管理]修复附件无法替换的问题。
3、修正office格式引起的:NoSuchMethodException: org.openxmlformats.schemas.wordprocessingml.x2006.main.impl.CTPictureBaseImpl"。
## v4 build 11.01更新内容\:
新增功能\:
1、企业微信,钉钉,政务钉钉组织同步,待办消息推送,通知消息群发,移动设备页面集成。
2、新增SqlServer支持,目前可以支持一下数据库:Oracle,DB2,MySQL,Postgresql,Informix,H2(内嵌),DM(达梦国产数据库),MS-SQLServer。
3、OAuth2客户端功能优化,支持浙江CA,微信,QQ等其他OAuth认证服务。
4、增加消息群发功能。
5、ISO,AndroidApp端增加语音处理功能。
6、ISO,AndroidApp端增加AI自动处理功能。
7、启用新域名o2oa.net。
8、增加登录页面定制功能,现在可以通过门户定制登录页面了。
更新优化\:
1、支持金山WPS。
2、统计中数据量导致的新能下降。
3、群组(Group)支持组织成员,可以统一翻译成人员。
4、增加个人的主身份设置,当不指名身份时可以自动取到主身份。
5、用户可以自行绑定微信,通过微信扫码登录。
6、[信息管理]对信息文档查询效率源码级优化。
BUG修复\:
1、会议管理字段超长导致的错误。
2、无标题流程消息提醒显示空字符串。
3、脚本编辑器在同时打开多个窗口情况无法正常保存。
4、修改组织同步触发机制,现在可以通过cron表达式定制运行时间。
5、[信息管理]修复数据字典无法复制的问题以及分类显示的错误。
6、Office控件代码修正。
## v4 build 09.21更新内容\:
新增功能\:
1、增加手写签批功能,支持在线手写签批,录音。
2、增加全文搜索功能。支持pdf,.doc,.docx,.ppt,.pptx,.xls,.xlsx内容的全文检索。
3、OAuth客户端功能,支持微信等其他OAuth认证服务。
4、[汇报管理]添加手工漏发检测功能。
更新优化\:
1、更新统计展现功能,支持饼图,柱状图,折线图,支持行列转换。
2、统计功能,可以源于不同试图的列进行合并统计。
3、优化日程管理提醒不及时的问题
BUG修复\:
1、流程重置处理人错误。
2、[信息管理]修复数据型文档类型保存不正确的问题。
3、[脑图]修复某些情况下脑图无法创建的问题。
## v4 build 09.04更新内容\:
新增功能\:
1、电子签章支持。
2、流程引擎增加定时节点。
3、政务钉钉支持,可以同步政务钉钉的人员,组织。
4、增加行政区划组件。
5、[社区应用]添加调整主贴版块的服务。
更新优化\:
1、视图统计代码优化,提升统计查询效率。
2、优化待办已办查询,TaskCompleted 增加 latest。
3、流程引擎底层优化,修改PorcessPlatform实现的aeiObjects。
BUG修复\:
1、应用导入导出错误。
2、[信息管理]修复CMS_Review自动同步更新的问题
3、[信息管理]修复序列保存时为空的问题
4、修正移动端APP信息管理会把数据类的信息读取出来的问题
## 授权协议
o2oa软件遵守双重协议,一个是AGPL授权协议,一个是商用授权协议。
1、o2oa是开源软件,您可以修改源码及免费使用;这时需遵守AGPL协议。
2、当使用者使用o2oa软件提供收费服务,或者对o2oa进行分发、销售时需进行商业授权。具体请查看:[http://www.o2oa.io/product.html](http://www.o2oa.io/product.html)
3、使用者下载本软件即表示愿遵守此项协议。
var gulp = require('gulp'),
//var deleted = require('gulp-deleted');
del = require('del'),
uglify = require('gulp-uglify'),
rename = require('gulp-rename'),
changed = require('gulp-changed'),
gulpif = require('gulp-if'),
minimist = require('minimist'),
ftp = require('gulp-ftp'),
sftp = require('gulp-sftp'),
JSFtp = require('jsftp'),
gutil = require('gulp-util'),
fs = require("fs");
var apps = [
{"folder": "o2_lib", "tasks": ["move", "clean"]},
{"folder": "o2_core", "tasks": ["move", "min", "clean", "watch"]},
{"folder": "x_desktop", "tasks": ["move", "min", "clean", "watch"]},
{"folder": "x_component_Common", "tasks": ["move", "min", "clean", "watch"]},
{"folder": "x_component_Template", "tasks": ["move", "min", "clean", "watch"]},
{"folder": "x_component_AppCenter", "tasks": ["move", "min", "clean", "watch"]},
{"folder": "x_component_AppMarket", "tasks": ["move", "min", "clean", "watch"]},
{"folder": "x_component_Attendance", "tasks": ["move", "min", "clean", "watch"]},
{"folder": "x_component_BAM", "tasks": ["move", "min", "clean", "watch"]},
{"folder": "x_component_Calendar", "tasks": ["move", "min", "clean", "watch"]},
{"folder": "x_component_Chat", "tasks": ["move", "min", "clean", "watch"]},
{"folder": "x_component_cms_Column", "tasks": ["move", "min", "clean", "watch"]},
{"folder": "x_component_cms_ColumnManager", "tasks": ["move", "min", "clean", "watch"]},
{"folder": "x_component_cms_DictionaryDesigner", "tasks": ["move", "min", "clean", "watch"]},
{"folder": "x_component_cms_Document", "tasks": ["move", "min", "clean", "watch"]},
{"folder": "x_component_cms_FormDesigner", "tasks": ["move", "min", "clean", "watch"]},
{"folder": "x_component_cms_Index", "tasks": ["move", "min", "clean", "watch"]},
{"folder": "x_component_cms_Module", "tasks": ["move", "min", "clean", "watch"]},
{"folder": "x_component_cms_QueryViewDesigner", "tasks": ["move", "min", "clean", "watch"]},
{"folder": "x_component_cms_ScriptDesigner", "tasks": ["move", "min", "clean", "watch"]},
{"folder": "x_component_cms_ViewDesigner", "tasks": ["move", "min", "clean", "watch"]},
{"folder": "x_component_cms_Xform", "tasks": ["move", "min", "clean", "watch"]},
{"folder": "x_component_Collect", "tasks": ["move", "min", "clean", "watch"]},
{"folder": "x_component_Console", "tasks": ["move", "min", "clean", "watch"]},
{"folder": "x_component_ControlPanel", "tasks": ["move", "min", "clean", "watch"]},
{"folder": "x_component_CRM", "tasks": ["move", "min", "clean", "watch"]},
{"folder": "x_component_Deployment", "tasks": ["move", "min", "clean", "watch"]},
{"folder": "x_component_DesignCenter", "tasks": ["move", "min", "clean", "watch"]},
{"folder": "x_component_Empty", "tasks": ["move", "min", "clean", "watch"]},
{"folder": "x_component_Execution", "tasks": ["move", "min", "clean", "watch"]},
{"folder": "x_component_ExeManager", "tasks": ["move", "min", "clean", "watch"]},
{"folder": "x_component_FaceSet", "tasks": ["move", "min", "clean", "watch"]},
{"folder": "x_component_File", "tasks": ["move", "min", "clean", "watch"]},
{"folder": "x_component_Forum", "tasks": ["move", "min", "clean", "watch"]},
{"folder": "x_component_ForumCategory", "tasks": ["move", "min", "clean", "watch"]},
{"folder": "x_component_ForumDocument", "tasks": ["move", "min", "clean", "watch"]},
{"folder": "x_component_ForumPerson", "tasks": ["move", "min", "clean", "watch"]},
{"folder": "x_component_ForumSearch", "tasks": ["move", "min", "clean", "watch"]},
{"folder": "x_component_ForumSection", "tasks": ["move", "min", "clean", "watch"]},
{"folder": "x_component_HotArticle", "tasks": ["move", "min", "clean", "watch"]},
{"folder": "x_component_IM", "tasks": ["move", "min", "clean", "watch"]},
{"folder": "x_component_LogViewer", "tasks": ["move", "min", "clean", "watch"]},
{"folder": "x_component_Meeting", "tasks": ["move", "min", "clean", "watch"]},
{"folder": "x_component_Message", "tasks": ["move", "min", "clean", "watch"]},
{"folder": "x_component_Minder", "tasks": ["move", "min", "clean", "watch"]},
{"folder": "x_component_MinderEditor", "tasks": ["move", "min", "clean", "watch"]},
{"folder": "x_component_Note", "tasks": ["move", "min", "clean", "watch"]},
{"folder": "x_component_OKR", "tasks": ["move", "min", "clean", "watch"]},
{"folder": "x_component_OnlineMeeting", "tasks": ["move", "min", "clean", "watch"]},
{"folder": "x_component_OnlineMeetingRoom", "tasks": ["move", "min", "clean", "watch"]},
{"folder": "x_component_Org", "tasks": ["move", "min", "clean", "watch"]},
{"folder": "x_component_portal_PageDesigner", "tasks": ["move", "min", "clean", "watch"]},
{"folder": "x_component_portal_Portal", "tasks": ["move", "min", "clean", "watch"]},
{"folder": "x_component_portal_PortalExplorer", "tasks": ["move", "min", "clean", "watch"]},
{"folder": "x_component_portal_PortalManager", "tasks": ["move", "min", "clean", "watch"]},
{"folder": "x_component_portal_ScriptDesigner", "tasks": ["move", "min", "clean", "watch"]},
{"folder": "x_component_portal_WidgetDesigner", "tasks": ["move", "min", "clean", "watch"]},
{"folder": "x_component_process_Application", "tasks": ["move", "min", "clean", "watch"]},
{"folder": "x_component_process_ApplicationExplorer", "tasks": ["move", "min", "clean", "watch"]},
{"folder": "x_component_process_DictionaryDesigner", "tasks": ["move", "min", "clean", "watch"]},
{"folder": "x_component_process_FormDesigner", "tasks": ["move", "min", "clean", "watch"]},
{"folder": "x_component_process_ProcessDesigner", "tasks": ["move", "min", "clean", "watch"]},
{"folder": "x_component_process_ProcessManager", "tasks": ["move", "min", "clean", "watch"]},
{"folder": "x_component_process_ScriptDesigner", "tasks": ["move", "min", "clean", "watch"]},
{"folder": "x_component_process_StatDesigner", "tasks": ["move", "min", "clean", "watch"]},
{"folder": "x_component_process_TaskCenter", "tasks": ["move", "min", "clean", "watch"]},
{"folder": "x_component_process_ViewDesigner", "tasks": ["move", "min", "clean", "watch"]},
{"folder": "x_component_process_Work", "tasks": ["move", "min", "clean", "watch"]},
{"folder": "x_component_process_Xform", "tasks": ["move", "min", "clean", "watch"]},
{"folder": "x_component_Profile", "tasks": ["move", "min", "clean", "watch"]},
{"folder": "x_component_query_Query", "tasks": ["move", "min", "clean", "watch"]},
{"folder": "x_component_query_QueryExplorer", "tasks": ["move", "min", "clean", "watch"]},
{"folder": "x_component_query_QueryManager", "tasks": ["move", "min", "clean", "watch"]},
{"folder": "x_component_query_StatDesigner", "tasks": ["move", "min", "clean", "watch"]},
{"folder": "x_component_query_ViewDesigner", "tasks": ["move", "min", "clean", "watch"]},
{"folder": "x_component_Report", "tasks": ["move", "min", "clean", "watch"]},
{"folder": "x_component_ReportDocument", "tasks": ["move", "min", "clean", "watch"]},
{"folder": "x_component_ReportMinder", "tasks": ["move", "min", "clean", "watch"]},
{"folder": "x_component_ScriptEditor", "tasks": ["move", "min", "clean", "watch"]},
{"folder": "x_component_Search", "tasks": ["move", "min", "clean", "watch"]},
{"folder": "x_component_SelecterTest", "tasks": ["move", "min", "clean", "watch"]},
{"folder": "x_component_Selector", "tasks": ["move", "min", "clean", "watch"]},
{"folder": "x_component_service_AgentDesigner", "tasks": ["move", "min", "clean", "watch"]},
{"folder": "x_component_service_InvokeDesigner", "tasks": ["move", "min", "clean", "watch"]},
{"folder": "x_component_service_ServiceManager", "tasks": ["move", "min", "clean", "watch"]},
{"folder": "x_component_Setting", "tasks": ["move", "min", "clean", "watch"]},
{"folder": "x_component_Strategy", "tasks": ["move", "min", "clean", "watch"]},
{"folder": "x_component_Weixin", "tasks": ["move", "min", "clean", "watch"]},
];
var uploadOptions = {
'location': 'E:/o2server/servers/webServer/',
'host': 'dev.o2oa.net',
'user': 'xadmin',
'pass': 'xadmin',
"remotePath": "/"
}
var options = minimist(process.argv.slice(2), {//upload: local ftp or sftp
string: ["upload", "location", "host", "user", "pass", "port", "remotePath"]
});
options.upload = options.upload || "";
options.location = options.location || uploadOptions.location;
options.host = options.host || uploadOptions.host;
options.user = options.user || uploadOptions.user;
options.pass = options.pass || uploadOptions.pass;
options.port = options.port || 0;
options.remotePath = options.remotePath || uploadOptions.remotePath;
var minTasks = []; //压缩修改过的js文件,更名为 *.min.js,并移动到编译目录(dest)
var moveTasks = []; //将修改过的文件移动到编译目录(dest)
var watchTasks = []; //监控任务
var cleanTasks = [];
function getMinTask(path){
return function(){
var src = 'source/'+path+'/**/*.js';
var dest = 'dest/'+path+'/';
return gulp.src(src)
.pipe(changed(dest))
.pipe(uglify())
.pipe(rename({ extname: '.min.js' }))
.pipe(gulpif((options.upload=='local'&&options.location!=''), gulp.dest(options.location+path+'/')))
.pipe(gulpif((options.upload=='ftp'&&options.host!=''), ftp({
host: options.host,
user: options.user || 'anonymous',
pass: options.pass || '@anonymous',
port: options.port || 21,
remotePath: (options.remotePath || '/')+path
})))
.pipe(gulpif((options.upload=='sftp'&&options.host!=''), ftp({
host: options.host,
user: options.user || 'anonymous',
pass: options.pass || null,
port: options.port || 22,
remotePath: (options.remotePath || '/')+path
})))
.pipe(gulp.dest(dest))
.pipe(gutil.noop());
}
}
function getMoveTask(path){
return function(){
var src = 'source/'+path+'/**/*';
var dest = 'dest/'+path+'/';
return gulp.src(src)
.pipe(changed(dest))
.pipe(gulpif((options.upload=='local'&&options.location!=''), gulp.dest(options.location+path+'/')))
.pipe(gulpif((options.upload=='ftp'&&options.host!=''), ftp({
host: options.host,
user: options.user || 'anonymous',
pass: options.pass || '@anonymous',
port: options.port || 21,
remotePath: (options.remotePath || '/')+path
})))
.pipe(gulpif((options.upload=='sftp'&&options.host!=''), ftp({
host: options.host,
user: options.user || 'anonymous',
pass: options.pass || null,
port: options.port || 22,
remotePath: (options.remotePath || '/')+path
})))
.pipe(gulp.dest(dest))
.pipe(gutil.noop());
}
}
function getCleanTask(path){
return function(cb){
var dest = 'dest/'+path+'/';
del(dest, cb);
}
}
function cleanRemoteFtp(f, cb){
var file = options.remotePath+f;
var ftp = new JSFtp({
host: options.host,
user: options.user || 'anonymous',
pass: options.pass || null,
port: options.port || 21,
});
ftp.raw('dele '+file, function(err) {
if (err){ cb(); return; }
if (file.substring(file.length-3).toLowerCase()==".js"){
file = file.replace('.js', ".min.js");
ftp.raw('dele '+file, function(err) {
if (err){ cb(); return; }
if (file.indexOf("/")!=-1){
var p = file.substring(0, file.lastIndexOf("/"));
ftp.raw('rmd '+p, function(err) {
if (err){ cb(); return; }
ftp.raw.quit();
cb();
});
}
});
}else{
if (file.indexOf("/")!=-1){
var pPath = file.substring(0, file.lastIndexOf("/"));
ftp.raw('rmd '+pPath, function(err) {
if (err){ cb(); return; }
ftp.raw.quit();
cb();
});
}
}
});
}
function cleanRemoteLocal(f, cb){
var file = options.location+f;
del(file, {force: true, dryRun: true}, function(){
if (file.substring(file.length-3).toLowerCase()==".js"){
var minfile = file.replace('.js', ".min.js");
del(minfile, {force: true, dryRun: true}, function(){
var p = file.substring(0, file.lastIndexOf("/"));
fs.rmdir(p,function(err){
if(err){}
cb();
})
});
}else{
var p = file.substring(0, file.lastIndexOf("/"));
fs.rmdir(p,function(err){
if(err){}
cb();
})
}
});
}
function getCleanRemoteTask(path){
return function(cb){
if (options.upload){
var file = path.replace(/\\/g, "/");
file = file.substring(file.indexOf("source/")+7);
if (options.upload=='local'&&options.location!='') cleanRemoteLocal(file, cb);
if (options.upload=='ftp'&&options.host!='') cleanRemoteFtp(file, cb);
}else{
if (cb) cb();
}
}
}
function getWatchTask(path, min){
return function(cb){
var moveTask = "move:"+path;
var minTask = "min:"+path;
var cleanTask = "clean:"+path;
if (min) gulp.watch('source/'+path+'/**/*.js', {"events": ['add','change']}, gulp.parallel(minTask));
gulp.watch('source/'+path+'/**/*', {"events": ['addDir', 'add','change']}, gulp.parallel(moveTask));
// gulp.watch('source/'+path+'/**/*', {"events": ['unlinkDir']}, function(file){
// console.log("into unlinkDir watch ......."+file);
// });
watcher = gulp.watch('source/'+path+'/**/*', {delay:500});
watcher.on('unlink', function(file, stats){
console.log("into unlink watch ......."+file);
gulp.task("cleanRemote", getCleanRemoteTask(file))
gulp.series(gulp.parallel(cleanTask, "cleanRemote"), gulp.parallel(minTask, moveTask))();
});
// watcher.on('unlinkDir', function(file, stats){
// console.log("into unlinkDir watch ......."+file);
// // gulp.task("cleanRemoteDir", getCleanRemoteTask(file))
// // gulp.series(gulp.parallel(cleanTask, "cleanRemoteDir"), gulp.parallel(minTask, moveTask))();
// });
}
}
apps.map(function(app){
var taskName = "";
if (app.tasks.indexOf("min")!==-1){
taskName = "min:"+app.folder;
minTasks.push(taskName);
gulp.task(taskName, getMinTask(app.folder));
}
if (app.tasks.indexOf("move")!==-1){
taskName = "move:"+app.folder;
moveTasks.push(taskName);
gulp.task(taskName, getMoveTask(app.folder));
}
if (app.tasks.indexOf("clean")!==-1){
taskName = "clean:"+app.folder;
cleanTasks.push(taskName);
gulp.task(taskName, getCleanTask(app.folder));
}
if (app.tasks.indexOf("watch")!==-1){
taskName = "watch:"+app.folder;
watchTasks.push(taskName);
gulp.task(taskName, getWatchTask(app.folder, (app.tasks.indexOf("min")!==-1)));
}
})
gulp.task("default", gulp.parallel(minTasks, moveTasks));
gulp.task("clean", gulp.series(cleanTasks));
gulp.task("sync", gulp.series(
gulp.series(cleanTasks),
gulp.parallel(minTasks, moveTasks)
));
gulp.task("watch", gulp.parallel(watchTasks));
// gulp.task("watch", function(){
// watcher = gulp.watch('source/x_desktop/**/*');
// var log = console.log.bind(console);
// watcher
// .on('add', function(path) { log('File', path, 'has been added'); })
// .on('addDir', function(path) { log('Directory', path, 'has been added'); })
// .on('change', function(path) { log('File', path, 'has been changed'); })
// .on('unlink', function(path) { log('File', path, 'has been removed'); })
// .on('unlinkDir', function(path) { log('Directory', path, 'has been removed'); })
// .on('error', function(error) { log('Error happened', error); })
// .on('ready', function() { log('Initial scan complete. Ready for changes.'); })
// //.on('raw', function(event, path, details) { log('Raw event info:', event, path, details); })
// });
gulp.task("upload", function(cb){
var dest = 'dest/**/*';
console.log(options.upload);
console.log(options.user);
console.log(options.pass);
console.log(options.host);
console.log(options.remotePath);
gulp.src(dest)
.pipe(gulpif((options.upload=='local'&&options.location!=''), gulp.dest(options.location+'/')))
.pipe(gulpif((options.upload=='ftp'&&options.host!=''), ftp({
host: options.host,
user: options.user || 'anonymous',
pass: options.pass || '@anonymous',
port: options.port || 21,
remotePath: (options.remotePath || '/')
})))
.pipe(gulpif((options.upload=='sftp'&&options.host!=''), ftp({
host: options.host,
user: options.user || 'anonymous',
pass: options.pass || null,
port: options.port || 22,
remotePath: (options.remotePath || '/')
})));
cb();
});
\ No newline at end of file
// Karma configuration
// Generated on Thu Dec 20 2018 15:16:19 GMT+0800 (中国标准时间)
module.exports = function(config) {
config.set({
basePath: '',
frameworks: ['jasmine'],
files: [
'source/*',
'test/**/*.js'
],
exclude: [
],
preprocessors: {
},
reporters: ['progress'],
port: 9876,
colors: true,
logLevel: config.LOG_INFO,
autoWatch: false,
browsers: ['PhantomJS'],
singleRun: false,
concurrency: Infinity
})
};
{
"name": "o2oa_web",
"version": "1.1.7",
"description": "a javascript library",
"main": "o2.js",
"scripts": {
"test": "gulp",
"report-coverage": "codecov"
},
"repository": {
"type": "git",
"url": "git+https://github.com/huqi1980/o2oa_client_web.git"
},
"keywords": [
"oa",
"office",
"workflow",
"process",
"cms",
"bpm",
"portal"
],
"author": "Tommy-O2OA",
"license": "AGPL-3.0",
"bugs": {
"url": "https://github.com/huqi1980/o2oa_client_web/issues"
},
"homepage": "https://github.com/huqi1980/o2oa_client_web#readme",
"devDependencies": {
"gulp": "^4.0.0",
"gulp-changed": "^3.2.0",
"gulp-deleted": "0.0.2",
"gulp-ftp": "^1.1.0",
"gulp-if": "^2.0.2",
"gulp-rename": "^1.4.0",
"gulp-sftp": "^0.1.5",
"gulp-uglify": "^3.0.1",
"karma": "^3.1.4",
"karma-jasmine": "^2.0.1",
"karma-phantomjs-launcher": "^1.0.4",
"merge-stream": "^1.0.1",
"minimist": "^1.2.0"
}
}
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8"/>
<meta property="qc:admins" content="1556771456600414672564530" />
<meta http-equiv="refresh" content="0;url=/x_desktop/index.html"/>
</head>
<body style="margin:0;font-size: 1.0em;font-family:Microsoft Yahei">
</body>
</html>
\ No newline at end of file
o2.addReady(function(){
COMMON = {
"setContentPath": function(path){
COMMON.contentPath = path;
},
"JSON": o2.json,
"Browser": Browser,
"Class": o2.Class,
"XML": o2.xml,
"AjaxModule": {
"load": function(urls, callback, async, reload){
o2.load(urls, callback, reload, document);
},
"loadDom": function(urls, callback, async, reload){
o2.load(urls, callback, reload, document);
},
"loadCss": function(urls, callback, async, reload, sourceDoc){
o2.loadCss(urls, document.body, callback, reload, sourceDoc);
}
},
"Request": Request,
"typeOf": o2.typeOf
};
MWF = o2;
MWF.getJSON = o2.JSON.get;
MWF.getJSONP = o2.JSON.getJsonp;
MWF.defaultPath = o2.session.path;
});
\ No newline at end of file
/** ***** 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 ******/
/* load o2 Core
* |------------------------------------------------------------------------------|
* |addReady: o2.addReady(fn), |
* |------------------------------------------------------------------------------|
* |load: o2.load(urls, callback, reload) |
* |loadCss: o2.loadCss(urls, dom, callback, reload, doc) |
* |------------------------------------------------------------------------------|
* |typeOf: o2.typeOf(o) |
* |------------------------------------------------------------------------------|
* |uuid: o2.uuid() |
* |------------------------------------------------------------------------------|
*/
(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.0.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*){1}|(;\s*){1}/g
};
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));
};
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;
//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.js"],
"ckeditor": ["/o2_lib/htmleditor/ckeditor/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"]
};
var _loaded = {};
var _loadedCss = {};
var _loadSingle = function(url, callback, reload){
var addr_uri = _frameworks[url] || url;
if (!_debug) if (addr_uri.indexOf("o2_lib")===-1) addr_uri = addr_uri.replace(/\.js/, ".min.js");
addr_uri = (addr_uri.indexOf("?")!==-1) ? addr_uri+"&v="+this.o2.version.v : addr_uri+"?v="+this.o2.version.v;
var key = encodeURIComponent(url);
if (!reload) if (_loaded[key]){ if (callback)callback(); return; }
var head = (document.head || document.getElementsByTagName("head")[0] || document.documentElement);
var s = document.createElement('script');
s.src = addr_uri;
head.appendChild(s);
var _checkScriptLoaded = function(_, isAbort){
if (isAbort || !s.readyState || s.readyState === "loaded" || s.readyState === "complete") {
_loaded[key] = true;
_removeListener(s, 'DOMContentLoaded', _checkScriptLoaded);
_removeListener(s, 'readystatechange', _checkScriptLoaded);
if (!isAbort) if (callback)callback();
}
};
if ('onreadystatechange' in s) _addListener(s, 'readystatechange', _checkScriptLoaded);
_addListener(s, 'load', _checkScriptLoaded);
};
var _load = function(urls, callback, reload, doc){
var urltype = _typeOf(urls);
var modules;
if (urltype==="array"){
modules = [];
for (var i=0; i<urls.length; i++){
var url = urls[i];
var module = _frameworks[url] || url;
if (_typeOf(module)==="array"){
modules.concat(module)
}else{
modules.push(url)
}
}
}else{
modules = _frameworks[urls] || urls;
}
var type = _typeOf(modules);
if (type==="array"){
var thisLoaded = [];
for (var i=0; i<modules.length; i++){
_loadSingle(modules[i], function(){
thisLoaded.push(modules[i]);
if (thisLoaded.length===modules.length){
if (callback) callback();
}
}, reload, doc);
}
}
if (type==="string"){
_loadSingle(modules, callback, reload);
}
};
this.o2.load = _load;
var _loadSingleCss = function(url, callback, uuid, reload, sourceDoc){
var key = encodeURIComponent(url);
if (!reload) if (_loadedCss[key]){ if (callback)callback(_loadedCss[key]); return; }
var cssurl = _frameworks[url] || url;
var xhr = new _request();
xhr.open("GET", cssurl, true);
var success = function(xhr){
var cssText = xhr.responseText;
try{
if (cssText){
if (uuid){
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 doc = sourceDoc || document;
var style = doc.createElement("style");
style.setAttribute("type", "text/css");
var head = (document.head || document.getElementsByTagName("head")[0] || document.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 = doc.createTextNode(cssText);
style.appendChild(cssTextNode);
}
style.sheet.cssRules[0].cssText = "#layout_xxx {\n" +
" width: 500px;\n" +
" height: 300px;\n" +
" background: #FFCCBA;\n" +
"}"
}
_loadedCss[key] = style;
if (callback) callback(style);
}catch (e){
if (callback) callback();
return;
}
};
var failure = function(xhr){
if (callback) callback();
};
var onreadystatechange= function(){
if (xhr.readyState != 4) return;
var status = xhr.status;
status = (status == 1223) ? 204 : status;
//var response = {text: xhr.responseText || '', xml: xhr.responseXML};
if ((status >= 200 && status < 300))
success(xhr);
else if ((status >= 300 && status < 400))
failure(xhr);
else
failure(xhr);
};
_addListener(xhr, "readystatechange", onreadystatechange);
//xhr.onreadystatechange = onreadystatechange;
xhr.send();
};
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(urls, dom, callback, reload, sourceDoc){
var uuid = "";
if (dom){
uuid = "css"+_uuid();
_parseDom(dom, function(node){ node.className += ((node.className) ? " "+uuid : uuid)}, sourceDoc);
}
modules = _frameworks[urls] || urls;
var type = _typeOf(modules);
if (type==="array"){
var thisLoaded = [];
var styleList = [];
for (var i=0; i<modules.length; i++){
_loadSingleCss(modules[i], function(style){
thisLoaded.push(modules[i]);
if (style) styleList.push(styleList);
if (thisLoaded.length===modules.length){
if (callback) callback(styleList);
}
}, uuid, reload, sourceDoc);
}
}
if (type==="string"){
_loadSingleCss(modules, callback, uuid, reload, sourceDoc);
}
};
this.o2.loadCss = _loadCss;
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(); });
this.o2.addReady = function(fn){ _dom.addReady.call(_dom, fn); };
})();
(function(){
if (Browser.iecomp){
if (!document.body.addEvent){
document.body.addEvent = function(type, fn){
if (window.attachEvent && !window.addEventListener){
collected[Slick.uidOf(this)] = this;
}
if (this.addEventListener) this.addEventListener(type, fn, !!arguments[2]);
else this.attachEvent('on' + type, fn);
return this;
};
}
var setStyleFun = Element.prototype.setStyle || null;
Element.implement({
"get": function(prop){
var property = Element.Properties[prop];
var p = (property && property.get) ? property.get.apply(this) : this.getProperty(prop);
if (!p){
property = Element.Properties[prop.toString().toLowerCase()];
p = (property && property.get) ? property.get.apply(this) : this.getProperty(prop.toString().toLowerCase());
}
return p;
}.overloadGetter(),
"setStyle": function(property, value){
if (setStyleFun){
try{
setStyleFun.apply(this, [property, value]);
}catch(e){}
}
return this;
},
// "addEventListener": function(e, listener, capture){
// this.addEvent(e, listener, capture);
// }
});
// var insertRow = HTMLTableElement.prototype.insertRow;
// var insertCell = HTMLTableRowElement.prototype.insertCell;
// HTMLTableElement.prototype.insertRow = function(n){ return $(insertRow.call(this,n))};
// HTMLTableRowElement.prototype.insertCell = function(n){ return $(insertCell.call(this,n))};
// if (!HTMLGenericElement.prototype.addEventListener){
// HTMLGenericElement.prototype.addEventListener = function(e, listener, capture){
// this.attachEvent("on"+e, listener);
// //$(this).addEvent(e, listener, capture)
// }
// }
if (!Object.create){
Object.create = function(o){
return Object.clone(o);
}
}
if (!document.createElementNS){
document.createElementNS = function(uri, tag){
var o = document.createElement(tag);
o.setAttribute("xmlns", uri);
return o;
}
}
if (!Array.isArray){
Array.isArray = function(o){
return (typeOf(o)==="array");
}
}
FormData = new Class({
initialize: function(){
this.items = [];
this.type = "o2_formdata";
},
append: function(key, d){
var o = {
"name": key,
"value": d
};
this.items.push(o);
}
});
FormData.expiredIE = true;
if (!Object.defineProperties){
Object.defineProperties = MWF.defineProperties;
}
if (!Object.defineProperty || (Browser.name=="ie" && Browser.version==8)){
Object.defineProperty = MWF.defineProperty;
}
MWF.defineProperties(HTMLInputElement.prototype, {"files": {
"get": function(){
MWF.require("MWF.widget.contentType", null, false);
var v = this.value;
var tmpv = v.replace(/\\/g, "/");
var i = tmpv.lastIndexOf("/");
var name = (i===-1) ? v : v.substr(i+1, tmpv.length-i);
var el = this;
var data = {
"path": v,
"name": name,
"size": 0,
"type": MWFContentType.get(v),
"el": el
};
return {
"length": (v) ? 1 : 0,
"data": data,
"item": function(){ return this.data; }
};
}
}});
WebSocket = window.WebSocket || function(){};
WebSocket.prototype = {
'readyState': 0,
'close': function(){}
};
HTMLCanvasElement = window.HTMLCanvasElement||function(){};
}
})();
//debugger;
// (function(){
//
// })();
//
//
//
// if (Browser.iecomp){
//
// }
\ No newline at end of file
o2.LP = window.LP || {
"name": "名称",
"description": "描述"
};
o2.LP.process={
"unnamed": "未命名",
"unknow": "未知",
"processConfig": "流程配置",
"formConfig": "表单配置",
"createCategory": "创建分类",
"searchCategory": "搜索分类",
"noCategoryNotice": "现在还没有流程分类,您可以点击此处创建一个流程分类",
"noProcessNoticeNode": "此分类现在还没有流程,您可以点击此处创建一个流程",
"activity": "活动",
"route": "路由",
"property": "属性",
"showJson": "查看JSON",
"unrealized": "此功能未实现",
"tools": "工具",
"repetitions": "重复的属性名称",
"repetitionsValue": "重复的内容项",
"repetitionsEvent": "重复的事件名称",
"repetitionsId": "重复的元素标识符",
"notNullId": "元素标识符不能为空",
"editCategory": "编辑分类",
"createProcess": "新建流程",
"deleteCategory": "删除分类",
"deleteProcess": "删除流程",
"editProcess": "编辑流程",
"createForm": "新建表单",
"deleteForm": "删除表单",
"editForm": "编辑表单",
"menu": {
"newRoute": "新建路由",
"newActivity": "新建活动",
"newActivityType": {
"manual": "人工活动",
"condition": "条件活动",
"auto": "自动活动",
"split": "拆分活动",
"merge": "合并活动",
"embed": "子流程活动",
"invoke": "调用活动",
"begin": "开始活动",
"end": "结束活动"
},
"copyActivity": "复制活动",
"deleteActivity": "删除活动",
"deleteRoute": "删除路由",
"saveProcess": "保存流程",
"saveProcessNew": "保存为新版本",
"checkProcess": "检查流程",
"exportProcess": "导出流程",
"printProcess": "打印流程",
"showGrid": "显示网格",
"hideGrid": "隐藏网格"
},
"notice": {
"save_success": "流程保存成功!",
"deleteForm_success": "表单已删除!",
"deleteProcess_success": "流程已删除!",
"one_begin": "每个流程只能有一个开始活动!",
"deleteRoute": "您确定要删除选中的路由吗?",
"deleteRouteTitle": "删除路由确认",
"deleteActivityTitle": "删除活动确认",
"deleteActivity": "删除活动将同时删除关联此活动的所有路由,您确定要删除选中的活动吗?",
"deleteDecisionTitle": "删除决策确认",
"deleteDecision": "您确定要删除选中的决策吗?",
"deleteScriptTitle": "删除脚本确认",
"deleteScript": "您确定要删除当前脚本吗?",
"deleteElementTitle": "删除表单元素确认",
"deleteElement": "是否确定删除当前元素,及其子元素吗?",
"deleteEventTitle": "删除事件确认",
"deleteEvent": "是否确定删除当前事件吗?",
"deleteActionTitle": "删除操作确认",
"deleteAction": "是否确定删除当前操作吗?",
"deleteRowTitle": "删除表格行确认",
"deleteRow": "删除当前行将删除该行所有单元格中的内容,是否确定删除当前选中的行?",
"deleteColTitle": "删除表格列确认",
"deleteCol": "删除当前行将删除该列所有单元格中的内容,是否确定删除当前选中的列?",
"deleteProcessTitle": "删除流程确认",
"deleteProcess": "是否确定要删除当前流程?",
"deleteFormTitle": "删除表单确认",
"deleteForm": "是否确定要删除当前表单?",
"deleteTreeNodeTitle": "删除节点确认",
"deleteTreeNode": "是否确定要删除当前节点?",
"inputScriptName": "请输入脚本名称!",
"inputCategoryName": "请输入分类名称!"
},
"button":{
"ok": "确定",
"cancel": "取消"
},
"formAction": {
"insertRow": "插入行",
"insertCol": "插入列",
"deleteRow": "删除行",
"deleteCol": "删除列",
"mergerCell": "合并单元格",
"splitCell": "拆分单元格",
"move": "移动",
"copy": "复制",
"delete": "删除",
"add": "添加",
"script": "脚本"
}
};
o2.LP.desktop = {
"menuAction": "菜单",
"configAction": "配置您的工作台",
"userMenu": "用户选项",
"userChat": "用户设置",
"styleAction": "切换主题",
"showDesktop": "显示桌面",
"showMessage": "消息",
"logout": "注销",
"userConfig": "个人设置",
"application": "组件",
"widget": "小工具",
"process": "应用",
"nosign": "未编辑个性签名",
"searchUser": "搜索:用户名",
"say": "",
"clearMessage": "清除消息",
"messsage": {
"appliction": "应用",
"process": "流程",
"taskMessage": "待办提醒",
"receiveTask": "您收到一条待办,标题为:",
"activity": "活动",
"readMessage": "待阅提醒",
"receiveRead": "您收到一条待阅,标题为:",
"reviewMessage": "阅读提醒",
"receiveReview": "您收到一条阅读提醒,标题为:",
"fileEditorMessage": "收到文件",
"receiveFileEditor": "发送给您一个文件:",
"fileShareMessage": "共享文件",
"receiveFileShare": "共享给您一个文件:",
"meetingInviteMessage": "会议邀请",
"meetingInvite": "<font style='color: #ea621f'>{person}</font> 邀请您 于<font style='color: #ea621f'>{date}</font>参加会议:“{subject}”,地点:<font style='color: #ea621f'>{addr}</font>",
"meetingCancelMessage": "会议取消",
"meetingCancel": "<font style='color: #ea621f'>{person}</font> 取消了原定于<font style='color: #ea621f'>{date}</font>在<font style='color: #ea621f'>{addr}</font>举行的会议: “{subject}”",
"meetingAcceptMessage": "会议邀请已被接受",
"meetingAccept": "<font style='color: #ea621f'>{person}</font> 已接受您的会议邀请,将于<font style='color: #ea621f'>{date}</font>到<font style='color: #ea621f'>{addr}</font>参加会议: “{subject}”",
"meetingRejectMessage": "会议邀请已被拒绝",
"meetingReject": "<font style='color: #ea621f'>{person}</font> 已拒绝您的会议邀请。会议时间:<font style='color: #ea621f'>{date}</font>;会议标题: “{subject}”",
"attendanceAppealInviteMessage" : "有考勤申述需要您审批",
"attendanceAppealInvite": "{subject}",
"attendanceAppealAcceptMessage" : "考勤申述通过",
"attendanceAppealAccept": "{subject}",
"attendanceAppealRejectMessage" : "考勤申述未通过",
"attendanceAppealReject": "{subject}"
},
"styleMenu": {
"default": "默认",
"color": "色彩",
"black": "酷黑",
"lotus": "荷花",
"crane": "仙鹤",
"peony": "牡丹",
"car": "老爷车",
"dock": "码头",
"panda": "熊猫",
"star": "星空"
},
"notice": {
"unload": "如果关闭或刷新当前页面,未保存的内容会丢失,请确定您的操作",
"changePassword": "您的密码已过期,请及时修改密码",
"errorConnectCenter1": "无法连接到应用中心服务器,请确保下列地址其中之一可以访问:",
"errorConnectCenter2": "如果以上地址都无法访问,请检查您的网络,或联系管理员!"
},
"login": {
"title": "用户登录",
"loginButton": "登 录",
"mobileDownload": "手机扫描二维码安装",
"inputUsernamePassword": "请输入用户名和密码...",
"loginWait": "登录中, 请稍候...",
"loginError": "用户名或密码输入有误, 请重新输入...",
"camera_logining": "正在为您登录,请正对摄像头 ...",
"camera_logining_1": "请保持微笑 ...",
"camera_logining_2": "请抬头 ...",
"camera_logining_3": "验证成功 ...",
"camera_logining2": "请移动不同角度,或变换表情 ...",
"camera_loginSuccess": "{name}您好,正在为您登录 ...",
"camera_loginError": "无法验证您的身份,请通过其他方式登录 ...",
"camera_loginError2": "登录失败,请通过其他方式登录 ...",
"camera_loginError_camera": "无法打开摄像头,可能已经在使用中 ..."
},
"action": {
"uploadTitle": "正在上传",
"uploadComplete": "上传完成",
"sendReady": "正在编码数据,准备传输 . . .",
"sendStart": "开始传输",
"sendError": "文件传输出现错误",
"sendAbort": "文件传输已被取消",
"speed": "速度",
"time": "耗时",
"hour": "",
"minute": "",
"second": "",
"cancelUploadTitle": "取消上传确认",
"cancelUpload": "您确定要取消上传文件“{name}”吗?"
},
"person": {
"personEmployee": "人员工号",
"personMobile": "手机",
"personMail": "邮件",
"personDuty": "职务",
"personQQ": "QQ号码",
"personWeixin": "微信",
"duty": "职务"
},
"collect": {
"collectNotConnected": "连接O2云失败",
"collectNotConnectedText": "无法连接到O2云,请检查服务器网络!"
}
};
o2.LP.widget = {
"upload": "上传",
"uploadTitle": "上传文件",
"uploadInfor": "请选择要上传的文件",
"delete": "删除",
"replace": "替换",
"select" : "选择",
"download": "下载",
"share": "分享",
"send": "发送",
"downloadAll": "全部下载",
"createFolder": "创建文件夹",
"rename": "重命名",
"property": "属性",
"list": "列表",
"sequence": "序列",
"icon": "图标",
"preview": "预览",
"min": "简洁模式",
"max": "完整模式",
"size": "大小",
"uploader": "上传人",
"uploadTime": "时间",
"modifyTime": "修改",
"uploadActivity": "活动",
"attCount": "文件",
"folderCount": "文件夹",
"pictureSize" : "图片显示宽{width}像素,高{height}像素",
"pictureRatio" : "图片宽高比为{ratio}",
"ok": "确定",
"cancel": "取消",
"refresh": "刷新",
"months": ["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],
"days_abbr": ["","","","","","",""],
"unknow": "未知",
"uploadImg": "上传图片",
"clearImg": "清除图片",
"clearImg_confirmTitle": "清除图片确认",
"clearImg_confirm": "您确定要清除图片吗?",
"office": "在文档控件中打开",
"closeOffice": "关闭附件",
"record": "录音",
"stop": "停止",
"play": "播放",
"save": "保存"
};
o2.LP.widget.SimpleEditor = {
"insertEmotion" : "插入表情",
"insertImage" : "插入图像",
"Emotions" : "regular_smile|微笑,teeth_smile|大笑,angry_smile|生气,confused_smile|迷惑,cry_smile|大哭,embaressed_smile|尴尬,omg_smile|吃惊,sad_smile|难过,shades_smile|装酷,tounge_smile|吐舌,wink_smile|眨眼,angel_smile|天使,devil_smile|魔鬼,heart|红心,broken_heart|心碎,thumbs_up|顶,thumbs_down|踩,cake|蛋糕,lightbulb|灯泡,envelope|信封"
};
o2.LP.authentication = {
"LoginFormTitle" : "欢迎登录",
"SignUpFormTitle" : "欢迎注册",
"ResetPasswordFormTitle" : "找回密码",
"userName" : "用户名",
"password" : "密码",
"verificationCode" : "验证码",
"loginAction" : "登录",
"autoLogin" : "下次自动登陆",
"signUp" : "注册",
"forgetPassword" : "忘记密码?",
"inputYourUserName" : "请输入用户名",
"inputYourPassword" : "请输入密码",
"inputYourMail" : "请输入您的邮箱地址",
"inputYourMobile" : "请输入您的手机号码",
"inputPicVerificationCode" : "请输入右侧的验证码",
"inputComfirmPassword" : "请确认您的密码",
"inputVerificationCode" : "请输入手机验证码",
"confirmPassword" : "确认密码",
"sendVerification" : "发送验证码",
"resendVerification" : "重新发送",
"passwordIsSimple" : "请使用数字字母混合且至少7位",
"mobileIsRegisted" : "手机号码已经被注册",
"hasAccount" : "已有账号?",
"gotoLogin" : "去登录",
"weak" : "",
"middle" : "",
"high" : "",
"userExist" : "用户已经存在",
"userNotExist" : "用户不存在",
"passwordNotEqual" : "密码与上面不一致,请重新输入",
"changeVerification" : "换一张",
"genderType" : "性别",
"genderTypeText" : ",男,女",
"genderTypeValue" : ",m,f",
"selectGenderType" : "请选择性别",
"registeSuccess" : "注册成功",
"codeLogin" : "短信验证登录",
"passwordLogin" : "密码登录",
"bindLogin" : "二维码登录",
"bingLoginTitle" : "手机扫码,安全登录",
"o2downloadLink" : "http://www.pgyer.com/ZhiHe_android",
"loginSuccess" : "登录成功!",
"userCheck" : "用户认证",
"shotMessageCheck" : "短信验证",
"setMewPassword" : "设置新密码",
"completed" : "完成",
"nextStep" : "下一步",
"mobile" : "手机",
"setNewPassword" : "设置新密码",
"confirmNewPassword" : "确认新密码",
"passwordIsWeak" : "密码太弱,请使用数字和字母,且长度大于7",
"resetPasswordSuccess" : "重置密码成功!",
"resetPasswordFail" : "重置密码失败!",
"resetPasswordSuccessWord" : "请牢记您新设置的密码。",
"resetPasswordFailWord" : "请核对您的用户名和短信验证码。",
"backtoModify" : "返回修改",
"pageNotFound" : "404错误,未找到服务或服务器已断开"
};
\ No newline at end of file
/** ***** BEGIN LICENSE BLOCK *****
* |------------------------------------------------------------------------------|
* | O2OA 活力办公 创意无限 o2.core.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 _Class = {
create: function(options) {
var newClass = function() {
this.initialize.apply(this, arguments);
};
_copyPrototype(newClass, options);
return newClass;
}
};
var _copyPrototype = function (currentNS, props){
if (!props){return currentNS;}
if (!currentNS){return currentNS;}
if ((typeof currentNS).toLowerCase()==="object"){
for (var prop in props){
currentNS[prop] = props[prop];
}
}
if ((typeof currentNS).toLowerCase()==="function"){
for (var prop in props){
currentNS.prototype[prop] = props[prop];
}
}
return currentNS;
};
var _loaded = {};
var _requireJs = function(url, callback, async, compression){
var key = encodeURIComponent(url);
if (_loaded[key]){o2.runCallback(callback, "success"); 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;
var xhr = new Request({
url: jsPath, async: async, method: "get",
onSuccess: function(){
//try{
_loaded[key] = true;
o2.runCallback(callback, "success");
//}catch (e){
// o2.runCallback(callback, "failure", [e]);
//}
},
onFailure: function(r){
o2.runCallback(callback, "failure", [r]);
}
});
xhr.send();
};
var _requireSingle = function(module, callback, async, compression){
module = module.replace("MWF", "o2");
var levels = module.split(".");
if (levels[levels.length-1]==="*") levels[levels.length-1] = "package";
levels.shift();
var jsPath = this.o2.session.path;
jsPath +="/"+levels.join("/")+".js";
var loadAsync = (async!==false);
_requireJs(jsPath, callback, loadAsync, compression);
};
var _require = function(module, callback, async, compression){
var type = typeOf(module);
if (type==="array"){
var thisLoaded = [];
var thisErrorLoaded = [];
for (var i=0; i<module.length; i++){
_requireSingle(modules[i], {
"onSuccess": function(){
thisLoaded.push(modules[i]);
if ((thisLoaded.length+thisErrorLoaded.length)===modules.length){
if (thisErrorLoaded.length){
o2.runCallback(callback, "failure", [thisLoaded, thisErrorLoaded]);
}else{
o2.runCallback(callback, "success", [thisLoaded, thisErrorLoaded]);
}
}
},
"onFailure": function(){
thisErrorLoaded.push(modules[i]);
o2.runCallback(callback, "failure", [thisLoaded, thisErrorLoaded]);
}
}, async, compression);
}
}
if (type==="string"){
_requireSingle(module, callback, async, compression);
}
};
var _requireApp = function(module, clazz, callback, async){
var levels = module.split(".");
//levels.shift();
var root = "x_component_"+levels.join("_");
var clazzName = clazz || "Main";
var path = "/"+root+"/"+clazzName.replace(/\./g, "/")+".js";
var loadAsync = (async!==false);
_requireJs(path, callback, loadAsync);
};
var _json = JSON;
_json.get = function(url, callback, async, nocache){
var loadAsync = (async !== false);
var noJsonCache = (nocache === true);
url = (url.indexOf("?")!==-1) ? url+"&v="+o2.version.v : url+"?v="+o2.version.v;
var json = null;
var res = new Request.JSON({
url: url,
secure: false,
method: "get",
noCache: noJsonCache,
async: loadAsync,
withCredentials: true,
onSuccess: function(responseJSON, responseText){
json = responseJSON;
if (typeOf(callback).toLowerCase() === 'function'){
callback(responseJSON, responseText);
}else{
o2.runCallback(callback, "success", [responseJSON, responseText]);
}
}.bind(this),
onFailure: function(xhr){
o2.runCallback(callback, "requestFailure", [xhr]);
}.bind(this),
onError: function(text, error){
o2.runCallback(callback, "error", [text, error]);
}.bind(this)
});
res.send();
return json;
};
_json.getJsonp = function(url, callback, async, callbackKey){
var loadAsync = (async !== false);
var callbackKeyWord = callbackKey || "callback";
url = (url.indexOf("?")!==-1) ? url+"&v="+o2.version.v : url+"?v="+o2.version.v;
var res = new Request.JSONP({
url: url,
secure: false,
method: "get",
noCache: true,
async: loadAsync,
callbackKey: callbackKeyWord,
onSuccess: function(responseJSON, responseText){
o2.runCallback(callback, "success",[responseJSON, responseText]);
}.bind(this),
onFailure: function(xhr){
o2.runCallback(callback, "requestFailure",[xhr]);
}.bind(this),
onError: function(text, error){
o2.runCallback(callback, "error",[text, error]);
}.bind(this)
});
res.send();
};
var _loadLP = function(name){
var jsPath = o2.session.path;
jsPath = jsPath+"/lp/"+name+".js";
var r = new Request({
url: jsPath,
async: false,
method: "get",
onSuccess: function(responseText){
try{
Browser.exec(responseText);
}catch (e){}
},
onFailure: function(xhr){
throw "loadLP Error: "+xhr.responseText;
}
});
r.send();
};
_restful = function(method, address, data, callback, async, withCredentials){
var loadAsync = (async !== false);
var credentials = (withCredentials !== false);
address = (address.indexOf("?")!==-1) ? address+"&v="+o2.version.v : address+"?v="+o2.version.v;
var res = new Request.JSON({
url: address,
secure: false,
method: method,
emulation: false,
noCache: true,
async: loadAsync,
withCredentials: credentials,
onSuccess: function(responseJSON, responseText){
var xToken = this.getHeader("x-token");
if (xToken){
if (layout){
if (!layout.session) layout.session = {};
layout.session.token = xToken;
}
}
o2.runCallback(callback, "success", [responseJSON])
},
onFailure: function(xhr){
o2.runCallback(callback, "requestFailure", [xhr]);
}.bind(this),
onError: function(text, error){
o2.runCallback(callback, "error", [text, error]);
}.bind(this)
});
res.setHeader("Content-Type", "application/json; charset=utf-8");
if (window.layout) {
if (layout["debugger"]){
res.setHeader("x-debugger", "true");
}
if (layout.session){
if (layout.session.token) {
res.setHeader("x-token", layout.session.token);
res.setHeader("authorization", layout.session.token);
}
}
}
//Content-Type application/x-www-form-urlencoded; charset=utf-8
res.send(data);
return res;
};
var _release = function(o){
var type = typeOf(o);
switch (type){
case "object":
for (var k in o){
o[k] = null;
}
break;
case "array":
for (var i=0; i< o.length; i++){
if (o[i]) o[i] = null;
}
break;
}
};
var _defineProperties = Object.defineProperties || function (obj, properties) {
function convertToDescriptor(desc) {
function hasProperty(obj, prop) {
return Object.prototype.hasOwnProperty.call(obj, prop);
}
function isCallable(v) {
// NB: modify as necessary if other values than functions are callable.
return typeof v === "function";
}
if (typeof desc !== "object" || desc === null)
throw new TypeError("bad desc");
var d = {};
if (hasProperty(desc, "enumerable"))
d.enumerable = !!desc.enumerable;
if (hasProperty(desc, "configurable"))
d.configurable = !!desc.configurable;
if (hasProperty(desc, "value"))
d.value = desc.value;
if (hasProperty(desc, "writable"))
d.writable = !!desc.writable;
if (hasProperty(desc, "get")) {
var g = desc.get;
if (!isCallable(g) && typeof g !== "undefined")
throw new TypeError("bad get");
d.get = g;
}
if (hasProperty(desc, "set")) {
var s = desc.set;
if (!isCallable(s) && typeof s !== "undefined")
throw new TypeError("bad set");
d.set = s;
}
if (("get" in d || "set" in d) && ("value" in d || "writable" in d))
throw new TypeError("identity-confused descriptor");
return d;
}
if (typeof obj !== "object" || obj === null)
throw new TypeError("bad obj");
properties = Object(properties);
var keys = Object.keys(properties);
var descs = [];
for (var i = 0; i < keys.length; i++)
descs.push([keys[i], convertToDescriptor(properties[keys[i]])]);
for (var i = 0; i < descs.length; i++){
if (Object.defineProperty && (Browser.name=="ie" && Browser.version!=8)){
Object.defineProperty(obj, descs[i][0], descs[i][1]);
}else{
if (descs[i][1].value) obj[descs[i][0]] = descs[i][1].value;
if (descs[i][1].get) obj["get"+descs[i][0].capitalize()] = descs[i][1].get;
if (descs[i][1].set) obj["set"+descs[i][0].capitalize()] = descs[i][1].set;
}
}
return obj;
};
this.o2.Class = _Class;
this.o2.require = _require;
this.o2.requireApp = _requireApp;
this.o2.JSON = _json;
this.o2.loadLP = _loadLP;
this.o2.restful = _restful;
this.o2.release = _release;
this.o2.defineProperties = _defineProperties;
})();
o2.core = true;
\ No newline at end of file
此差异已折叠。
{
"container": {
"border-top": "1px solid #999",
"border-bottom": "1px solid #999",
"overflow": "auto"
},
"titleNode": {
"height": "20px",
"line-height": "20px",
"background": "#EEE"
},
"titleActionNode": {
"float": "right",
"width": "20px",
"height": "20px",
"background": "url("+o2.session.path+"/widget/$ScriptArea/default/icon/add2.png) center center no-repeat",
"cursor": "pointer"
},
"titleTextNode": {
"line-height": "20px",
"font-size": "12px",
"padding-left": "5px"
},
"contentNode": {
"overflow": "hidden",
"font-size": "12px",
"cursor": "default",
"padding": "3px 3px"
},
"contentStartNode": {
"height": "18px",
"line-height": "18px",
"font-family": "Verdana, Geneva, sans-serif",
"cursor": "default",
"background": "transparent"
},
"contentStartNodeOver": {
"height": "18px",
"line-height": "18px",
"font-family": "Verdana, Geneva, sans-serif",
"cursor": "default",
"background": "#E9E9E9"
},
"contentItemsNode": {
"margin-left": "2px",
"overflow": "hidden",
"min-height": "12px"
},
"contentEndNode": {
"height": "18px",
"line-height": "18px",
"font-family": "Verdana, Geneva, sans-serif",
"cursor": "default",
"background": "transparent"
},
"contentEndNodeOver": {
"height": "18px",
"line-height": "18px",
"font-family": "Verdana, Geneva, sans-serif",
"cursor": "default",
"background": "#E9E9E9"
},
"contentItemNode": {
"height": "22px",
"line-height": "22px",
"background": "transparent"
},
"contentItemNodeOver": {
"height": "22px",
"line-height": "22px",
"background": "#E9E9E9"
},
"contentItemIconNode": {
"width": "16px",
"height": "22px",
"float": "left"
},
"contentItemKeyNode": {
"color": "#C80000",
"font-family": "Verdana, Geneva, sans-serif",
"cursor": "default"
},
"contentItemValueNode": {
"color": "#395cdf",
"margin-left": "3px",
"font-family": "Verdana, Geneva, sans-serif",
"cursor": "default"
},
"contentItemColonNode": {
"margin-left": "2px"
},
"editInputDiv": {
"border": "1px solid #999",
"height": "16px",
"line-height": "16px",
"overflow": "hidden",
"display": "inline",
"box-shadow": "0px 2px 5px #999"
},
"editInput": {
"border": "0px",
"font-size": "12px",
"font-family": "Verdana, Geneva, sans-serif"
}
}
\ No newline at end of file
{
"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"
},
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_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_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"
}
}
\ No newline at end of file
{
"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-size": "14px",
"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",
"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": "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",
"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": "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",
"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 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",
"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"
},
"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": "6px",
"font-size": "12px",
"overflow": "hidden",
"word-break": "break-all",
"text-overflow": "ellipsis",
"text-align": "left"
},
"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"
}
}
\ No newline at end of file
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册