README.md 13.5 KB
Newer Older
caixiangyi's avatar
caixiangyi 已提交
1
O2OA
caixiangyi's avatar
caixiangyi 已提交
2 3
==========
## 简介
caixiangyi's avatar
caixiangyi 已提交
4 5
O2OA 是一套现代企业级的办公平台。她有以下特点\:

caixiangyi's avatar
caixiangyi 已提交
6 7 8 9 10 11 12 13 14
1. 核心代码开源

2. 全功能免费

3. 私有化部署,下载软件后可以安装在自己的服务器上

4. 随时随地办公,平台支持兼容HTML5的浏览器,并且开发了源生的IOS/Android应用

5. 高可扩展性,用户通过简单的学习后,可以自定义配置门户、流程应用、内容管理应用
caixiangyi's avatar
caixiangyi 已提交
15

caixiangyi's avatar
caixiangyi 已提交
16
更多的产品介绍、下载、在线体验、API及讨论请移步至[http://o2oa.io/](http://www.o2oa.io/)
caixiangyi's avatar
caixiangyi 已提交
17

caixiangyi's avatar
caixiangyi 已提交
18
## 安装
caixiangyi's avatar
caixiangyi 已提交
19
建议您在[http://o2oa.io/](http://www.o2oa.io/)中下载最新版本的O2 Server进行安装使用    
caixiangyi's avatar
caixiangyi 已提交
20
如果您要使用github的程序自行打包,可以`fork` 本仓库。  
caixiangyi's avatar
caixiangyi 已提交
21 22 23 24
`fork` 操作完成后,会在您的 github 账户下创建一个 o2oa 的副本。接下来可以克隆到本地。  
```bash  
cd {YOUR_WORKING_DIRECTORY}
git clone https://github.com/{YOUR_GITHUB_USERNAME}/o2oa.git  
caixiangyi's avatar
caixiangyi 已提交
25
```
caixiangyi's avatar
caixiangyi 已提交
26
## 扩展开发
caixiangyi's avatar
caixiangyi 已提交
27
在开发前,请先了解`mootools`, 我们基于 `mootools`[https://mootools.net/](https://mootools.net/) 架构创建了产品的js类库。
caixiangyi's avatar
caixiangyi 已提交
28 29

### 目录
caixiangyi's avatar
caixiangyi 已提交
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108
  前台程序位于github的x_desktop_web目录。  
 
#### 目录说明
```bash
x_desktop                                //桌面资源、平台基础资源和通用工具类
    config                                //系统配置目录
    css                                
    framework                            //系统用到的开源框架
        ace                                //脚本编辑器框架
        d3                                //图表框架
        echarts                            //考勤用到的图表框架
        htmleditor                        //富文本编辑器
        kityminder                        //脑图
        mootools                        //模块化、面对对象的JS Web应用框架
        raphael                            //矢量图形框架,在流程图配置中用到
    js                                
    mwf4                                //通用资源和工具
        package
            lp                            //系统桌面语言包
            widget                        //通用工具类
            xAction                        //登录页和桌面用到的后台交互类
            xDesktop                    //系统桌面工具类
            xScript                        //流程引擎和内容管理自定义脚本的运行环境
        MWF.js                            //底层方法JS库,对mootools的补充
    preview                                //预览界面模拟json
    common.js                            //底层方法、通用方法、框架引用JS库
    index.html                            //首页HTML
    app.html                            //在新窗口打开应用时的HTML
    forum.html                            //在新窗口打开论坛的HTML
    cmsdocMobile.html                    //手机端打开内容管理文档页面的HTML
    {NAME}.html                            //其他在新窗口打开的HTML
x_component_Attendance                    //考勤应用
x_component_Chat                        //在线交流应用
x_component_cms_Column                    //CMS(内容管理)栏目的列式、增删配置
x_component_cms_ColumnManager            //CMS栏目管理设置(分类、表单、脚本、数据字典的列式、增删)
x_component_cms_Document                //CMS文档
x_component_cms_FormDesigner            //CMS表单设计
x_component_cms_Index                    //CMS首页
x_component_cms_Module                    //CMS栏目页面
x_component_cms_QueryViewDesigner        //CMS查询视图设计(嵌入在文档中)
x_component_cms_ScriptDesigner            //CMS脚本设计
x_component_cms_ViewDesigner            //CMS列式视图设计
x_component_cms_Xform                    //CMS文档中表单的实现
x_component_Execution                    //OKR应用
x_component_ExeManager                    //OKR文档的管理界面
x_component_File                        //云文件
x_component_Forum                        //论坛首页
x_component_ForumCategory                //论坛分类页面
x_component_ForumDocument                //论坛帖子页面
x_component_ForumPerson                    //论坛个人中心
x_component_ForumSearch                    //论坛搜索结果页面
x_component_ForumSection                //论坛版块界面
x_component_HotArticle                    //热点图片管理界面
x_component_Meeting                        //会议室管理
x_component_Note                        //桌面记事本插件
x_component_OnlineMeeting                //在线会议应用
x_component_OnlineMeetingRoom            //在线会议室
x_component_Organization                //人员、部门、组织管理以及选择
x_component_portal_PageDesigner            //门户页面设计
x_component_portal_Portal                //门户展现
x_component_portal_portalExplorer
x_component_portal_PortalManager        //门户管理设置(页面、脚本的列式、增删)
x_component_portal_ScriptDesigner        //门户脚本设计
x_component_portal_XPage                //门户页面实现
x_component_process_Application            //流程应用
x_component_process_ApplicationExplorer    
x_component_process_DictionaryDesigner    //流程数据字典
x_component_process_FormDesigner        //流程表单设计
x_component_process_ProcessDesigner        //流程图设计
x_component_process_ProcessManager        //流程管理设置(流程图、表单、脚本、数据字典的列式、增删)
x_component_process_ScriptDesigner        //流程脚本设计
x_component_process_StatDesigner        //流程统计、流程监控设计
x_component_process_TaskCenter            //办公中心,普通用户发起流程和查看待办
x_component_process_ViewDesigner        //流程查询视图设计
x_component_process_Work                //流程任务的展现
x_component_process_Xfrom                //流程表单的实现
x_component_Profile                        //用户个人设置界面
x_component_Template                    //列式、弹出页接口类
```
caixiangyi's avatar
caixiangyi 已提交
109
### 规范:
caixiangyi's avatar
caixiangyi 已提交
110
*  每个应用都是以 `x_component_{APPLICATION_NAME}`方式来命名,如x_component_Attendance表示考勤的目录。         
caixiangyi's avatar
caixiangyi 已提交
111
*  应用中至少包括下列文件及目录\:
caixiangyi's avatar
caixiangyi 已提交
112
```bash
caixiangyi's avatar
caixiangyi 已提交
113
x_component_{APPLICATION_NAME}  //x_component_HelloWorld
caixiangyi's avatar
caixiangyi 已提交
114 115
    Main.js                 //应用主程序  
    $Main                   //主程序用到的资源包  
caixiangyi's avatar
caixiangyi 已提交
116
        appicon.png         //应用图标,在桌面上显示,尺寸为72*72
caixiangyi's avatar
caixiangyi 已提交
117 118
        default             //样式包,可以创建其他名称的样式包,并在options传入到Main.js以改变页面风格  
          css.wcss          //样式文件,以json格式编写
caixiangyi's avatar
caixiangyi 已提交
119
          icon.png          //打开应用时,桌面标签页的图标,图片尺寸为24*24
caixiangyi's avatar
caixiangyi 已提交
120
    lp                      //语言包,目前支持中文  
caixiangyi's avatar
caixiangyi 已提交
121
        zh-cn.js        
caixiangyi's avatar
caixiangyi 已提交
122 123 124 125
    Actions                  //如果没有后台交互,您可以忽略此目录           
        action.json         //后台服务的url和方法,本系统使用JAX-RS 方式的 RESTful Web Service
        RestAction.js       //应用程序中直接使用此类的方法进行后台交互
```
caixiangyi's avatar
caixiangyi 已提交
126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141
 
### 创建Hello World
本样例中,我们创建一个名为HelloWorld的应用,在应用窗口中显示“您好,这是我的第一个O2应用!”。

#### 创建目录:
在x_desktop_web目录下创建x_component_HelloWorld目录,并按照规范第2点创建目录和文件。

#### 编写css.wcss:
1. 打开$Main\default\css.wcss。
2. 输入json格式的样式文本。
```bash
{
    "contentStyle" : {
        "font-size" : "14px"
        "line-height" : "20px",
        "margin" : "20px",
caixiangyi's avatar
caixiangyi 已提交
142
        "padding" : "10px"
caixiangyi's avatar
caixiangyi 已提交
143 144 145
    }
}
```
caixiangyi's avatar
caixiangyi 已提交
146

caixiangyi's avatar
caixiangyi 已提交
147 148 149 150 151 152 153 154 155
#### 编写lp\zh-cn.js:
```bash
MWF.xApplication.HelloWorld.LP = {
    "title": "HelloWorld",
    "contentText": "您好,这是我的第一个O2应用!"
};
```

#### 编写Main.js:
caixiangyi's avatar
caixiangyi 已提交
156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180
```bash

//所有的应用类都扩展在MWF.xApplication对象下
//应用名称HelloWorld要和目录x_component_HelloWorld最后一段一致
//在执行时,平台会自动创建MWF.xApplication.HelloWorld类和MWF.xApplication.HelloWorld.options

MWF.xApplication.HelloWorld.options.multitask = true; //multitask表示应用可以在一个浏览器窗口重复打开
MWF.xApplication.HelloWorld.Main = new Class({          //应用入口类
    Extends: MWF.xApplication.Common.Main,              //MWF.xApplication.Common.Main类提供了平台桌面窗口创建和其他基本功能,比如展现、最大化、最小化等
    Implements: [Options, Events],                      //使用mootools的Options和Events类,请参考mootools的文档

    options: {                                          //应用选项
        "style": "default",                              //样式,和 目录$Main/default对应。应用初始化的时候会自动加载$Main/default/css.wcss文件,可以在this.css中使用定义的样式      
        "name": "HelloWorld",
        "icon": "icon.png",                              //打开应用时,桌面标签页的图标
        "width": "400",                                  //应用窗口宽度
        "height": "500",                              //应用窗口高度
        "isResize": false,                              //应用窗口是否允许拖动改变大小
        "isMax": false,                                  //应用窗口是否允许最大化
        "title": MWF.xApplication.HelloWorld.LP.title      //应用窗口标题,MWF.xApplication.HelloWorld.LP在 lp/zh-cn.js中定义
    },
    onQueryLoad: function(){                            //在应用加载前执行的程序
        this.lp = MWF.xApplication.HelloWorld.LP;        //设置应用的语言包
    },
    loadApplication: function(callback){
caixiangyi's avatar
caixiangyi 已提交
181
        //this.restActions = new MWF.xApplication.HelloWorld.Actions.RestActions();  //后台交互对象。和Actions/RestAction.js对应,如果没有后台交互可以忽略此代码
caixiangyi's avatar
caixiangyi 已提交
182
        var div = new Element("div", {                    //创建一个div
caixiangyi's avatar
caixiangyi 已提交
183
            styles : this.css.contentStyle,                    //样式为content。应用初始化的时候会自动加载$Main/default/css.wcss文件,可以在this.css中使用定义的样式
caixiangyi's avatar
caixiangyi 已提交
184 185 186 187
            text : this.lp.contentText                    //文本内容是zh-cn.js里定义的contentText
        }).inject( this.content )                        //插入到窗口内容中。this.content是应用窗口的内容DOM容器,您创建的DOM对象都是this.content的子对象
    }
});
caixiangyi's avatar
caixiangyi 已提交
188
```
caixiangyi's avatar
caixiangyi 已提交
189 190 191 192 193 194 195

#### 部署应用
1. 在web端进入系统  
2. 点击左上角的图标打开应用菜单,切换到“组件”界面。  
3. 打开“部署管理”,在打开的界面最下方找到“部署组件”并点击。  
4. 部署组件界面中,“组件名称”、“组件标题”、“组件路径”都填写"HelloWorld",然后点击“部署组件”,部署完成。  
5. 已部署的应用可以在“组件”界面找到,您可以拖动到桌面创建快捷方式。