├── .env.example ├── .gitattributes ├── .gitignore ├── README.md ├── app ├── Console │ └── Kernel.php ├── Dept.php ├── Emp.php ├── Entry.php ├── EntryData.php ├── Exceptions │ └── Handler.php ├── Flow.php ├── FlowType.php ├── Flowlink.php ├── Http │ ├── Controllers │ │ ├── Auth │ │ │ ├── ForgotPasswordController.php │ │ │ ├── LoginController.php │ │ │ ├── RegisterController.php │ │ │ └── ResetPasswordController.php │ │ ├── Controller.php │ │ ├── DeptController.php │ │ ├── EmpController.php │ │ ├── EntryController.php │ │ ├── FlowController.php │ │ ├── FlowlinkController.php │ │ ├── HomeController.php │ │ ├── ProcController.php │ │ ├── ProcessController.php │ │ ├── TemplateController.php │ │ └── TemplateFormController.php │ ├── Kernel.php │ └── Middleware │ │ ├── EncryptCookies.php │ │ ├── RedirectIfAuthenticated.php │ │ ├── TrimStrings.php │ │ └── VerifyCsrfToken.php ├── Notifications │ └── Flowfy.php ├── Proc.php ├── Process.php ├── ProcessVar.php ├── Providers │ ├── AppServiceProvider.php │ ├── AuthServiceProvider.php │ ├── BroadcastServiceProvider.php │ ├── EventServiceProvider.php │ ├── RouteServiceProvider.php │ └── WorkflowServiceProvider.php ├── Service │ └── Workflow │ │ ├── Facades │ │ └── Workflow.php │ │ ├── Traits │ │ └── WorkflowTrait.php │ │ ├── Workflow.php │ │ └── WorkflowInterface.php ├── Template.php ├── TemplateForm.php └── helpers.php ├── artisan ├── bootstrap ├── app.php ├── autoload.php └── cache │ └── .gitignore ├── composer.json ├── composer.lock ├── config ├── app.php ├── auth.php ├── broadcasting.php ├── cache.php ├── database.php ├── debugbar.php ├── filesystems.php ├── mail.php ├── queue.php ├── services.php ├── session.php └── view.php ├── database ├── .gitignore ├── factories │ └── ModelFactory.php ├── migrations │ ├── 2014_10_12_000000_create_users_table.php │ └── 2014_10_12_100000_create_password_resets_table.php ├── seeds │ └── DatabaseSeeder.php └── sql │ ├── workflow.sql │ └── workflow_data.sql ├── package.json ├── phpunit.xml ├── public ├── .htaccess ├── css │ └── app.css ├── favicon.ico ├── index.php ├── js │ └── app.js ├── robots.txt └── vendor │ ├── flowchart │ ├── .eslintignore │ ├── .eslintrc │ ├── .gitignore │ ├── .gitmodules │ ├── README.md │ ├── bower.json │ ├── devserver.js │ ├── example │ │ ├── index.html │ │ ├── loadFile.html │ │ └── test.txt │ ├── index.html │ ├── index.js │ ├── license │ ├── package.json │ ├── release │ │ ├── flowchart.js │ │ ├── flowchart.js.map │ │ ├── flowchart.min.js │ │ └── flowchart.min.js.map │ ├── releasenotes.md │ ├── src │ │ ├── flowchart.chart.js │ │ ├── flowchart.defaults.js │ │ ├── flowchart.functions.js │ │ ├── flowchart.helpers.js │ │ ├── flowchart.parse.js │ │ ├── flowchart.shim.js │ │ ├── flowchart.symbol.condition.js │ │ ├── flowchart.symbol.end.js │ │ ├── flowchart.symbol.inputoutput.js │ │ ├── flowchart.symbol.js │ │ ├── flowchart.symbol.operation.js │ │ ├── flowchart.symbol.start.js │ │ ├── flowchart.symbol.subroutine.js │ │ ├── jquery-plugin.js │ │ ├── raphael-min.js │ │ ├── svginnerhtml.min.js │ │ └── underscore-min.js │ └── webpack.config.js │ ├── flowdesign │ ├── .gitattributes │ ├── .gitignore │ ├── Public │ │ ├── css │ │ │ ├── bootstrap │ │ │ │ ├── css │ │ │ │ │ ├── bootstrap-ie6.css │ │ │ │ │ ├── bootstrap-ie6.min.css │ │ │ │ │ ├── bootstrap-responsive.css │ │ │ │ │ ├── bootstrap-responsive.min.css │ │ │ │ │ ├── bootstrap.css │ │ │ │ │ ├── bootstrap.min.css │ │ │ │ │ └── ie.css │ │ │ │ ├── img │ │ │ │ │ ├── glyphicons-halflings-white.png │ │ │ │ │ └── glyphicons-halflings.png │ │ │ │ └── js │ │ │ │ │ ├── bootstrap.js │ │ │ │ │ └── bootstrap.min.js │ │ │ ├── doc.css │ │ │ └── site.css │ │ ├── images │ │ │ └── grid.png │ │ └── js │ │ │ ├── flowdesign │ │ │ ├── flowdesign.css │ │ │ └── leipi.flowdesign.v2.js │ │ │ ├── jquery-1.7.2.min.js │ │ │ ├── jquery-ui │ │ │ └── jquery-ui-1.9.2-min.js │ │ │ ├── jquery.contextmenu.r2.js │ │ │ ├── jquery.multiselect2side │ │ │ ├── css │ │ │ │ ├── jquery.multiselect2side - 副本.css │ │ │ │ └── jquery.multiselect2side.css │ │ │ ├── img │ │ │ │ ├── close.gif │ │ │ │ ├── loading.gif │ │ │ │ └── search.gif │ │ │ ├── jmultiselect2side.html │ │ │ ├── jmultiselect2side.php │ │ │ └── js │ │ │ │ ├── jquery.js │ │ │ │ └── jquery.multiselect2side.js │ │ │ ├── jquery.pin.min.js │ │ │ └── jsPlumb │ │ │ ├── jquery.jsPlumb-1.3.16-all-min.js │ │ │ └── 各版本下载.txt │ ├── README.md │ └── favicon.ico │ ├── layer │ ├── LICENSE │ ├── README.md │ ├── bower.json │ ├── build │ │ ├── layer.js │ │ ├── mobile │ │ │ ├── layer.js │ │ │ └── need │ │ │ │ └── layer.css │ │ └── skin │ │ │ ├── default │ │ │ ├── icon-ext.png │ │ │ ├── icon.png │ │ │ ├── layer.css │ │ │ ├── loading-0.gif │ │ │ ├── loading-1.gif │ │ │ └── loading-2.gif │ │ │ └── moon │ │ │ ├── default.png │ │ │ └── style.css │ ├── gulpfile.js │ ├── package.json │ ├── src │ │ ├── README.md │ │ ├── layer.js │ │ ├── mobile │ │ │ ├── README.md │ │ │ ├── layer.js │ │ │ └── need │ │ │ │ └── layer.css │ │ └── skin │ │ │ └── default │ │ │ ├── icon-ext.png │ │ │ ├── icon.png │ │ │ ├── layer.css │ │ │ ├── loading-0.gif │ │ │ ├── loading-1.gif │ │ │ └── loading-2.gif │ └── test │ │ └── demo.html │ └── toastr │ ├── .gitattributes │ ├── .gitignore │ ├── .jscsrc │ ├── .jshintrc │ ├── .travis.yml │ ├── README.md │ ├── build │ ├── toastr.css │ ├── toastr.js.map │ ├── toastr.min.css │ └── toastr.min.js │ ├── demo.html │ ├── gulpfile.js │ ├── karma.conf.js │ ├── nuget │ ├── content │ │ ├── content │ │ │ ├── toastr.css │ │ │ ├── toastr.less │ │ │ ├── toastr.min.css │ │ │ └── toastr.scss │ │ └── scripts │ │ │ ├── toastr.js │ │ │ ├── toastr.min.js │ │ │ └── toastr.min.js.map │ ├── toastr.1.0.0.nupkg │ ├── toastr.1.0.0.nuspec │ ├── toastr.1.0.1.nupkg │ ├── toastr.1.0.1.nuspec │ ├── toastr.1.0.2.nupkg │ ├── toastr.1.0.2.nuspec │ ├── toastr.1.0.3.nupkg │ ├── toastr.1.0.3.nuspec │ ├── toastr.1.1.0.nupkg │ ├── toastr.1.1.0.nuspec │ ├── toastr.1.1.1.nupkg │ ├── toastr.1.1.1.nuspec │ ├── toastr.1.1.2.nupkg │ ├── toastr.1.1.2.nuspec │ ├── toastr.1.1.3.nupkg │ ├── toastr.1.1.4.1.nupkg │ ├── toastr.1.1.4.1.nuspec │ ├── toastr.1.1.4.2.nupkg │ ├── toastr.1.1.4.2.nuspec │ ├── toastr.1.1.4.nupkg │ ├── toastr.1.1.4.nuspec │ ├── toastr.1.1.5.nupkg │ ├── toastr.1.1.5.nuspec │ ├── toastr.1.2.0.nupkg │ ├── toastr.1.2.0.nuspec │ ├── toastr.1.2.1.nupkg │ ├── toastr.1.2.1.nuspec │ ├── toastr.1.2.2.nupkg │ ├── toastr.1.2.2.nuspec │ ├── toastr.1.3.0.nupkg │ ├── toastr.1.3.0.nuspec │ ├── toastr.1.3.1.nupkg │ ├── toastr.1.3.1.nuspec │ ├── toastr.2.0.0-rc1.nupkg │ ├── toastr.2.0.0-rc1.nuspec │ ├── toastr.2.0.1.nupkg │ ├── toastr.2.0.1.nuspec │ ├── toastr.2.0.2.nupkg │ ├── toastr.2.0.2.nuspec │ ├── toastr.2.0.3.nupkg │ └── toastr.2.0.3.nuspec │ ├── package.json │ ├── release checklist.md │ ├── tests │ ├── qunit │ │ ├── qunit.css │ │ └── qunit.js │ ├── toastr-tests.html │ └── unit │ │ ├── qunit-helper.js │ │ ├── toastr-tests.js │ │ └── x.js │ ├── toastr-icon.png │ ├── toastr.js │ ├── toastr.less │ └── toastr.scss ├── resources ├── assets │ ├── js │ │ ├── app.js │ │ ├── bootstrap.js │ │ └── components │ │ │ └── Example.vue │ └── sass │ │ ├── _variables.scss │ │ └── app.scss ├── lang │ └── en │ │ ├── auth.php │ │ ├── pagination.php │ │ ├── passwords.php │ │ └── validation.php └── views │ ├── auth │ ├── login.blade.php │ ├── passwords │ │ ├── email.blade.php │ │ └── reset.blade.php │ └── register.blade.php │ ├── dept │ ├── create.blade.php │ ├── edit.blade.php │ └── index.blade.php │ ├── emails │ └── notify.blade.php │ ├── emp │ ├── create.blade.php │ ├── edit.blade.php │ └── index.blade.php │ ├── entry │ ├── create.blade.php │ ├── edit.blade.php │ └── show.blade.php │ ├── flow │ ├── create.blade.php │ ├── design.blade.php │ ├── edit.blade.php │ ├── index.blade.php │ └── show.blade.php │ ├── flowlink │ ├── dept.blade.php │ ├── emp.blade.php │ └── role.blade.php │ ├── home.blade.php │ ├── layouts │ └── app.blade.php │ ├── partials │ ├── attribute.blade.php │ └── condition.blade.php │ ├── proc │ ├── index.blade.php │ └── show.blade.php │ ├── template │ ├── create.blade.php │ ├── edit.blade.php │ ├── index.blade.php │ └── tpl.blade.php │ ├── template_form │ ├── create.blade.php │ ├── edit.blade.php │ └── index.blade.php │ └── welcome.blade.php ├── routes ├── api.php ├── channels.php ├── console.php └── web.php ├── screenshots ├── .DS_Store ├── 1.jpg ├── 2.jpg ├── 3.jpg ├── 4.jpg └── 5.jpg ├── server.php ├── storage ├── app │ ├── .gitignore │ └── public │ │ └── .gitignore ├── debugbar │ └── .gitignore ├── framework │ ├── .gitignore │ ├── cache │ │ └── .gitignore │ ├── sessions │ │ └── .gitignore │ ├── testing │ │ └── .gitignore │ └── views │ │ └── .gitignore └── logs │ └── .gitignore ├── tests ├── CreatesApplication.php ├── Feature │ └── ExampleTest.php ├── TestCase.php └── Unit │ └── ExampleTest.php ├── webpack.mix.js └── yarn.lock /.env.example: -------------------------------------------------------------------------------- 1 | APP_NAME=PHP工作流 2 | APP_ENV=local 3 | APP_KEY=base64:QLdoVELWRtf46/bqu7g3Afkl7LJobRaQ/oyruzOIvNw= 4 | APP_DEBUG=true 5 | APP_LOG_LEVEL=debug 6 | APP_URL=http://localhost 7 | 8 | DB_CONNECTION=mysql 9 | DB_HOST=127.0.0.1 10 | DB_PORT=3306 11 | DB_DATABASE=workflow 12 | DB_USERNAME=root 13 | DB_PASSWORD=root 14 | 15 | BROADCAST_DRIVER=log 16 | CACHE_DRIVER=file 17 | SESSION_DRIVER=file 18 | QUEUE_DRIVER=sync 19 | 20 | REDIS_HOST=127.0.0.1 21 | REDIS_PASSWORD=null 22 | REDIS_PORT=6379 23 | 24 | MAIL_DRIVER=smtp 25 | MAIL_HOST=smtp.mailtrap.io 26 | MAIL_PORT=2525 27 | MAIL_USERNAME=null 28 | MAIL_PASSWORD=null 29 | MAIL_ENCRYPTION=null 30 | 31 | PUSHER_APP_ID= 32 | PUSHER_APP_KEY= 33 | PUSHER_APP_SECRET= 34 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | * text=auto 2 | *.css linguist-vendored 3 | *.scss linguist-vendored 4 | *.js linguist-vendored 5 | CHANGELOG.md export-ignore 6 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /node_modules 2 | /public/hot 3 | /public/storage 4 | /vendor 5 | /.idea 6 | /.vagrant 7 | Homestead.json 8 | Homestead.yaml 9 | .env 10 | /public/uploads 11 | .DS_Store 12 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## PHP工作流 2 | 3 | ![image](https://github.com/Clago/workflow/raw/master/screenshots/1.jpg) 4 | 5 | ![image](https://github.com/Clago/workflow/raw/master/screenshots/2.jpg) 6 | 7 | ## 功能 8 | - 1.绘制流程图 9 | - 2.条件流转支持 10 | - 3.子流程 11 | 12 | ## 使用 13 | `cp .env.example .env` 14 | 15 | `composer install` 16 | 17 | 导入数据库文件,文件地址:`database/sql/workflow_data.sql` 18 | 19 | 初始账号: 20 | `1@qq.com 2@qq.com 3@qq.com 4@qq.com 5@qq.com 6@qq.com 7@qq.com 8@qq.com 9@qq.com 10@qq.com 密码统一为:123456` 21 | 22 | 邮件发送配置(qq为例) 23 | ``` 24 | MAIL_DRIVER=smtp 25 | MAIL_HOST=smtp.qq.com 26 | MAIL_PORT=465 27 | MAIL_USERNAME=xxx@qq.com 28 | MAIL_PASSWORD=zzzz(在QQ邮箱设置-账户-POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务-生成授权码) 29 | MAIL_FROM_ADDRESS=xxx@qq.com 30 | MAIL_ENCRYPTION=ssl 31 | ``` 32 | 33 | ## 感谢 34 | [流程设计前端](https://github.com/payonesmile/flowdesign) -------------------------------------------------------------------------------- /app/Console/Kernel.php: -------------------------------------------------------------------------------- 1 | command('inspire') 28 | // ->hourly(); 29 | } 30 | 31 | /** 32 | * Register the Closure based commands for the application. 33 | * 34 | * @return void 35 | */ 36 | protected function commands() 37 | { 38 | require base_path('routes/console.php'); 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /app/Dept.php: -------------------------------------------------------------------------------- 1 | $v){ 19 | if($v['pid']==$pid){ 20 | $v['html']=str_repeat($html, $level); 21 | $v['level']=$level+1; 22 | $data[]=$v; 23 | unset($depts[$k]); 24 | $data=array_merge($data,self::recursion($depts,$html,$v['id'],$level+1)); 25 | } 26 | } 27 | 28 | return $data; 29 | } 30 | 31 | public function director(){ 32 | return $this->belongsTo('App\Emp','director_id'); 33 | } 34 | 35 | public function manager(){ 36 | return $this->belongsTo('App\Emp','manager_id'); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /app/Emp.php: -------------------------------------------------------------------------------- 1 | belongsTo('App\Dept','dept_id'); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /app/Entry.php: -------------------------------------------------------------------------------- 1 | belongsTo("App\Flow","flow_id"); 15 | } 16 | 17 | public function emp(){ 18 | return $this->belongsTo("App\Emp","emp_id"); 19 | } 20 | 21 | public function procs(){ 22 | return $this->hasMany("App\Proc","entry_id"); 23 | } 24 | 25 | public function process(){ 26 | return $this->belongsTo("App\Process","process_id"); 27 | } 28 | 29 | public function entry_data(){ 30 | return $this->hasMany("App\EntryData","entry_id"); 31 | } 32 | 33 | public function parent_entry(){ 34 | return $this->belongsTo('App\Entry','pid'); 35 | } 36 | 37 | public function children(){ 38 | return $this->hasMany('App\Entry','pid'); 39 | } 40 | 41 | public function enter_process(){ 42 | return $this->belongsTo('App\Process','enter_process_id'); 43 | } 44 | 45 | public function child_process(){ 46 | return $this->belongsTo('App\Process','child'); 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /app/EntryData.php: -------------------------------------------------------------------------------- 1 | expectsJson()) { 60 | return response()->json(['error' => 'Unauthenticated.'], 401); 61 | } 62 | 63 | return redirect()->guest(route('login')); 64 | } 65 | } 66 | -------------------------------------------------------------------------------- /app/Flow.php: -------------------------------------------------------------------------------- 1 | hasMany('App\Process','flow_id'); 15 | } 16 | 17 | public function process_var(){ 18 | return $this->hasMany('App\ProcessVar','flow_id'); 19 | } 20 | 21 | public function template(){ 22 | return $this->belongsTo('App\Template','template_id'); 23 | } 24 | 25 | public function flow_type(){ 26 | return $this->belongsTo('App\FlowType','type_id'); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /app/FlowType.php: -------------------------------------------------------------------------------- 1 | hasMany('App\Flow','type_id'); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /app/Flowlink.php: -------------------------------------------------------------------------------- 1 | belongsTo('App\Process','process_id'); 15 | } 16 | 17 | public function next_process(){ 18 | return $this->belongsTo('App\Process','next_process_id'); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /app/Http/Controllers/Auth/ForgotPasswordController.php: -------------------------------------------------------------------------------- 1 | middleware('guest'); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /app/Http/Controllers/Auth/LoginController.php: -------------------------------------------------------------------------------- 1 | middleware('guest', ['except' => 'logout']); 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /app/Http/Controllers/Auth/RegisterController.php: -------------------------------------------------------------------------------- 1 | middleware('guest'); 40 | } 41 | 42 | /** 43 | * Get a validator for an incoming registration request. 44 | * 45 | * @param array $data 46 | * @return \Illuminate\Contracts\Validation\Validator 47 | */ 48 | protected function validator(array $data) 49 | { 50 | return Validator::make($data, [ 51 | 'name' => 'required|string|max:255', 52 | 'email' => 'required|string|email|max:255|unique:emp', 53 | 'password' => 'required|string|min:6|confirmed', 54 | ]); 55 | } 56 | 57 | /** 58 | * Create a new user instance after a valid registration. 59 | * 60 | * @param array $data 61 | * @return User 62 | */ 63 | protected function create(array $data) 64 | { 65 | return Emp::create([ 66 | 'name' => $data['name'], 67 | 'email' => $data['email'], 68 | 'password' => bcrypt($data['password']), 69 | ]); 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /app/Http/Controllers/Auth/ResetPasswordController.php: -------------------------------------------------------------------------------- 1 | middleware('guest'); 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /app/Http/Controllers/Controller.php: -------------------------------------------------------------------------------- 1 | function($query){ 23 | $query->orderBy("id",'DESC')->take(1); 24 | },"process"])->where(['emp_id'=>Auth::id(),'pid'=>0])->orderBy('id','DESC')->get(); 25 | 26 | // dd($entries); 27 | 28 | //我的待办 29 | $procs=Proc::with(["emp","entry"=>function($query){ 30 | $query->with("emp"); 31 | }])->where(['emp_id'=>Auth::id(),'status'=>0])->orderBy("is_read","ASC")->orderBy("status","ASC")->orderBy("id","DESC")->get(); 32 | 33 | //工作流 分组TODO 34 | $flows=Flow::where(['is_publish'=>1,'is_show'=>1])->orderBy('id','ASC')->get(); 35 | $handle_procs=Proc::with(["emp","entry"=>function($query){ 36 | $query->with("emp"); 37 | }])->where(['emp_id'=>Auth::id()])->where('status','!=',0)->orderBy('entry_id','DESC')->orderBy("id","ASC")->get()->groupBy('entry_id'); 38 | 39 | // dd($handle_procs); 40 | 41 | return view('home')->with(compact("entries","procs","flows","handle_procs")); 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /app/Http/Kernel.php: -------------------------------------------------------------------------------- 1 | [ 30 | \App\Http\Middleware\EncryptCookies::class, 31 | \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, 32 | \Illuminate\Session\Middleware\StartSession::class, 33 | // \Illuminate\Session\Middleware\AuthenticateSession::class, 34 | \Illuminate\View\Middleware\ShareErrorsFromSession::class, 35 | \App\Http\Middleware\VerifyCsrfToken::class, 36 | \Illuminate\Routing\Middleware\SubstituteBindings::class, 37 | ], 38 | 39 | 'api' => [ 40 | 'throttle:60,1', 41 | 'bindings', 42 | ], 43 | ]; 44 | 45 | /** 46 | * The application's route middleware. 47 | * 48 | * These middleware may be assigned to groups or used individually. 49 | * 50 | * @var array 51 | */ 52 | protected $routeMiddleware = [ 53 | 'auth' => \Illuminate\Auth\Middleware\Authenticate::class, 54 | 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, 55 | 'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class, 56 | 'can' => \Illuminate\Auth\Middleware\Authorize::class, 57 | 'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, 58 | 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, 59 | ]; 60 | } 61 | -------------------------------------------------------------------------------- /app/Http/Middleware/EncryptCookies.php: -------------------------------------------------------------------------------- 1 | check()) { 21 | return redirect('/home'); 22 | } 23 | 24 | return $next($request); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /app/Http/Middleware/TrimStrings.php: -------------------------------------------------------------------------------- 1 | proc=$proc; 25 | } 26 | 27 | /** 28 | * Get the notification's delivery channels. 29 | * 30 | * @param mixed $notifiable 31 | * @return array 32 | */ 33 | public function via($notifiable) 34 | { 35 | return ['mail']; 36 | } 37 | 38 | /** 39 | * Get the mail representation of the notification. 40 | * 41 | * @param mixed $notifiable 42 | * @return \Illuminate\Notifications\Messages\MailMessage 43 | */ 44 | public function toMail($notifiable) 45 | { 46 | // return (new MailMessage)->view( 47 | // 'emails.name', ['invoice' => $this->invoice] 48 | // ); 49 | // 您的申请:xx 已经被审核人yy通过,进入下一步骤 50 | 51 | $entry=$this->proc->entry; 52 | 53 | $content="您的申请:{$entry->title} 已经结束,请注意查看。"; 54 | 55 | return (new MailMessage)->subject('工作流邮件消息提示')->view( 56 | 'emails.notify', ['content' => $content] 57 | ); 58 | } 59 | 60 | /** 61 | * Get the array representation of the notification. 62 | * 63 | * @param mixed $notifiable 64 | * @return array 65 | */ 66 | public function toArray($notifiable) 67 | { 68 | return [ 69 | // 70 | ]; 71 | } 72 | } 73 | -------------------------------------------------------------------------------- /app/Proc.php: -------------------------------------------------------------------------------- 1 | belongsTo("App\Emp","emp_id"); 15 | } 16 | 17 | public function entry(){ 18 | return $this->belongsTo("App\Entry","entry_id"); 19 | } 20 | 21 | public function process(){ 22 | return $this->belongsTo("App\Process","process_id"); 23 | } 24 | 25 | public function flow(){ 26 | return $this->belongsTo("App\Flow","flow_id"); 27 | } 28 | 29 | public function procs(){ 30 | return $this->hasMany('App\Proc','entry_id'); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /app/Process.php: -------------------------------------------------------------------------------- 1 | belongsTo('App\Flow','flow_id'); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /app/ProcessVar.php: -------------------------------------------------------------------------------- 1 | 'App\Policies\ModelPolicy', 17 | ]; 18 | 19 | /** 20 | * Register any authentication / authorization services. 21 | * 22 | * @return void 23 | */ 24 | public function boot() 25 | { 26 | $this->registerPolicies(); 27 | 28 | // 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /app/Providers/BroadcastServiceProvider.php: -------------------------------------------------------------------------------- 1 | [ 17 | 'App\Listeners\EventListener', 18 | ], 19 | ]; 20 | 21 | /** 22 | * Register any events for your application. 23 | * 24 | * @return void 25 | */ 26 | public function boot() 27 | { 28 | parent::boot(); 29 | 30 | // 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /app/Providers/RouteServiceProvider.php: -------------------------------------------------------------------------------- 1 | mapApiRoutes(); 39 | 40 | $this->mapWebRoutes(); 41 | 42 | // 43 | } 44 | 45 | /** 46 | * Define the "web" routes for the application. 47 | * 48 | * These routes all receive session state, CSRF protection, etc. 49 | * 50 | * @return void 51 | */ 52 | protected function mapWebRoutes() 53 | { 54 | Route::middleware('web') 55 | ->namespace($this->namespace) 56 | ->group(base_path('routes/web.php')); 57 | } 58 | 59 | /** 60 | * Define the "api" routes for the application. 61 | * 62 | * These routes are typically stateless. 63 | * 64 | * @return void 65 | */ 66 | protected function mapApiRoutes() 67 | { 68 | Route::prefix('api') 69 | ->middleware('api') 70 | ->namespace($this->namespace) 71 | ->group(base_path('routes/api.php')); 72 | } 73 | } 74 | -------------------------------------------------------------------------------- /app/Providers/WorkflowServiceProvider.php: -------------------------------------------------------------------------------- 1 | app->bind('workflow', function ($app) { 28 | return new Workflow(); 29 | }); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /app/Service/Workflow/Facades/Workflow.php: -------------------------------------------------------------------------------- 1 | flowlink($process_id); 10 | } 11 | 12 | public function unpass($proc_id){ 13 | $proc=Proc::where(['emp_id'=>Auth::id()])->where(["status"=>0])->findOrFail($proc_id); 14 | 15 | //驳回 16 | Proc::where(['entry_id'=>$proc->entry_id,'process_id'=>$proc->process_id,'circle'=>$proc->entry->circle,'status'=>0])->update([ 17 | 'status'=>-1, 18 | 'auditor_id'=>Auth::id(), 19 | 'auditor_name'=>Auth::user()->name, 20 | 'auditor_dept'=>Auth::user()->dept->dept_name, 21 | 'content'=>Request::input('content',''), 22 | ]); 23 | 24 | $proc->entry()->update([ 25 | 'status'=>-1 26 | ]); 27 | 28 | //判断是否存在父进程 29 | if($proc->entry->pid>0){ 30 | $proc->entry->parent_entry->update([ 31 | 'status'=>-1, 32 | 'child'=>$proc->process_id 33 | ]); 34 | } 35 | 36 | $proc->entry->emp->notify(new \App\Notifications\Flowfy(Proc::find($proc->id))); 37 | } 38 | } -------------------------------------------------------------------------------- /app/Service/Workflow/WorkflowInterface.php: -------------------------------------------------------------------------------- 1 | hasMany('App\TemplateForm','template_id'); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /app/TemplateForm.php: -------------------------------------------------------------------------------- 1 | belongsTo('App\Template','template_id'); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /app/helpers.php: -------------------------------------------------------------------------------- 1 | template_form()->orderBy('sort','asc')->orderBy('id','DESC')->get(); 8 | return view('template.tpl',['template_forms'=>$template_forms,'entry_data'=>$entry_data])->render(); 9 | } 10 | -------------------------------------------------------------------------------- /artisan: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env php 2 | make(Illuminate\Contracts\Console\Kernel::class); 32 | 33 | $status = $kernel->handle( 34 | $input = new Symfony\Component\Console\Input\ArgvInput, 35 | new Symfony\Component\Console\Output\ConsoleOutput 36 | ); 37 | 38 | /* 39 | |-------------------------------------------------------------------------- 40 | | Shutdown The Application 41 | |-------------------------------------------------------------------------- 42 | | 43 | | Once Artisan has finished running. We will fire off the shutdown events 44 | | so that any final work may be done by the application before we shut 45 | | down the process. This is the last thing to happen to the request. 46 | | 47 | */ 48 | 49 | $kernel->terminate($input, $status); 50 | 51 | exit($status); 52 | -------------------------------------------------------------------------------- /bootstrap/app.php: -------------------------------------------------------------------------------- 1 | singleton( 30 | Illuminate\Contracts\Http\Kernel::class, 31 | App\Http\Kernel::class 32 | ); 33 | 34 | $app->singleton( 35 | Illuminate\Contracts\Console\Kernel::class, 36 | App\Console\Kernel::class 37 | ); 38 | 39 | $app->singleton( 40 | Illuminate\Contracts\Debug\ExceptionHandler::class, 41 | App\Exceptions\Handler::class 42 | ); 43 | 44 | /* 45 | |-------------------------------------------------------------------------- 46 | | Return The Application 47 | |-------------------------------------------------------------------------- 48 | | 49 | | This script returns the application instance. The instance is given to 50 | | the calling script so we can separate the building of the instances 51 | | from the actual running of the application and sending responses. 52 | | 53 | */ 54 | 55 | return $app; 56 | -------------------------------------------------------------------------------- /bootstrap/autoload.php: -------------------------------------------------------------------------------- 1 | =5.6.4", 9 | "barryvdh/laravel-debugbar": "^2.3", 10 | "laravel/framework": "5.4.*", 11 | "laravel/tinker": "~1.0", 12 | "laravelcollective/html": "^5.4" 13 | }, 14 | "require-dev": { 15 | "fzaninotto/faker": "~1.4", 16 | "mockery/mockery": "0.9.*", 17 | "phpunit/phpunit": "~5.7" 18 | }, 19 | "autoload": { 20 | "classmap": [ 21 | "database" 22 | ], 23 | "files": [ 24 | "app/helpers.php" 25 | ], 26 | "psr-4": { 27 | "App\\": "app/", 28 | "Workflow\\":"app/Service/Workflow" 29 | } 30 | }, 31 | "autoload-dev": { 32 | "psr-4": { 33 | "Tests\\": "tests/" 34 | } 35 | }, 36 | "scripts": { 37 | "post-root-package-install": [ 38 | "php -r \"file_exists('.env') || copy('.env.example', '.env');\"" 39 | ], 40 | "post-create-project-cmd": [ 41 | "php artisan key:generate" 42 | ], 43 | "post-install-cmd": [ 44 | "Illuminate\\Foundation\\ComposerScripts::postInstall", 45 | "php artisan optimize" 46 | ], 47 | "post-update-cmd": [ 48 | "Illuminate\\Foundation\\ComposerScripts::postUpdate", 49 | "php artisan optimize" 50 | ] 51 | }, 52 | "config": { 53 | "preferred-install": "dist", 54 | "sort-packages": true, 55 | "optimize-autoloader": true 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /config/broadcasting.php: -------------------------------------------------------------------------------- 1 | env('BROADCAST_DRIVER', 'null'), 19 | 20 | /* 21 | |-------------------------------------------------------------------------- 22 | | Broadcast Connections 23 | |-------------------------------------------------------------------------- 24 | | 25 | | Here you may define all of the broadcast connections that will be used 26 | | to broadcast events to other systems or over websockets. Samples of 27 | | each available type of connection are provided inside this array. 28 | | 29 | */ 30 | 31 | 'connections' => [ 32 | 33 | 'pusher' => [ 34 | 'driver' => 'pusher', 35 | 'key' => env('PUSHER_APP_KEY'), 36 | 'secret' => env('PUSHER_APP_SECRET'), 37 | 'app_id' => env('PUSHER_APP_ID'), 38 | 'options' => [ 39 | // 40 | ], 41 | ], 42 | 43 | 'redis' => [ 44 | 'driver' => 'redis', 45 | 'connection' => 'default', 46 | ], 47 | 48 | 'log' => [ 49 | 'driver' => 'log', 50 | ], 51 | 52 | 'null' => [ 53 | 'driver' => 'null', 54 | ], 55 | 56 | ], 57 | 58 | ]; 59 | -------------------------------------------------------------------------------- /config/filesystems.php: -------------------------------------------------------------------------------- 1 | 'local', 17 | 18 | /* 19 | |-------------------------------------------------------------------------- 20 | | Default Cloud Filesystem Disk 21 | |-------------------------------------------------------------------------- 22 | | 23 | | Many applications store files both locally and in the cloud. For this 24 | | reason, you may specify a default "cloud" driver here. This driver 25 | | will be bound as the Cloud disk implementation in the container. 26 | | 27 | */ 28 | 29 | 'cloud' => 's3', 30 | 31 | /* 32 | |-------------------------------------------------------------------------- 33 | | Filesystem Disks 34 | |-------------------------------------------------------------------------- 35 | | 36 | | Here you may configure as many filesystem "disks" as you wish, and you 37 | | may even configure multiple disks of the same driver. Defaults have 38 | | been setup for each driver as an example of the required options. 39 | | 40 | | Supported Drivers: "local", "ftp", "s3", "rackspace" 41 | | 42 | */ 43 | 44 | 'disks' => [ 45 | 46 | 'local' => [ 47 | 'driver' => 'local', 48 | 'root' => storage_path('app'), 49 | ], 50 | 51 | 'public' => [ 52 | 'driver' => 'local', 53 | 'root' => storage_path('app/public'), 54 | 'url' => env('APP_URL').'/storage', 55 | 'visibility' => 'public', 56 | ], 57 | 58 | 's3' => [ 59 | 'driver' => 's3', 60 | 'key' => env('AWS_KEY'), 61 | 'secret' => env('AWS_SECRET'), 62 | 'region' => env('AWS_REGION'), 63 | 'bucket' => env('AWS_BUCKET'), 64 | ], 65 | 66 | ], 67 | 68 | ]; 69 | -------------------------------------------------------------------------------- /config/services.php: -------------------------------------------------------------------------------- 1 | [ 18 | 'domain' => env('MAILGUN_DOMAIN'), 19 | 'secret' => env('MAILGUN_SECRET'), 20 | ], 21 | 22 | 'ses' => [ 23 | 'key' => env('SES_KEY'), 24 | 'secret' => env('SES_SECRET'), 25 | 'region' => 'us-east-1', 26 | ], 27 | 28 | 'sparkpost' => [ 29 | 'secret' => env('SPARKPOST_SECRET'), 30 | ], 31 | 32 | 'stripe' => [ 33 | 'model' => App\User::class, 34 | 'key' => env('STRIPE_KEY'), 35 | 'secret' => env('STRIPE_SECRET'), 36 | ], 37 | 38 | ]; 39 | -------------------------------------------------------------------------------- /config/view.php: -------------------------------------------------------------------------------- 1 | [ 17 | resource_path('views'), 18 | ], 19 | 20 | /* 21 | |-------------------------------------------------------------------------- 22 | | Compiled View Path 23 | |-------------------------------------------------------------------------- 24 | | 25 | | This option determines where all the compiled Blade templates will be 26 | | stored for your application. Typically, this is within the storage 27 | | directory. However, as usual, you are free to change this value. 28 | | 29 | */ 30 | 31 | 'compiled' => realpath(storage_path('framework/views')), 32 | 33 | ]; 34 | -------------------------------------------------------------------------------- /database/.gitignore: -------------------------------------------------------------------------------- 1 | *.sqlite 2 | -------------------------------------------------------------------------------- /database/factories/ModelFactory.php: -------------------------------------------------------------------------------- 1 | define(App\User::class, function (Faker\Generator $faker) { 16 | static $password; 17 | 18 | return [ 19 | 'name' => $faker->name, 20 | 'email' => $faker->unique()->safeEmail, 21 | 'password' => $password ?: $password = bcrypt('secret'), 22 | 'remember_token' => str_random(10), 23 | ]; 24 | }); 25 | -------------------------------------------------------------------------------- /database/migrations/2014_10_12_000000_create_users_table.php: -------------------------------------------------------------------------------- 1 | increments('id'); 18 | $table->string('name'); 19 | $table->string('email')->unique(); 20 | $table->string('password'); 21 | $table->rememberToken(); 22 | $table->timestamps(); 23 | }); 24 | } 25 | 26 | /** 27 | * Reverse the migrations. 28 | * 29 | * @return void 30 | */ 31 | public function down() 32 | { 33 | Schema::dropIfExists('users'); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /database/migrations/2014_10_12_100000_create_password_resets_table.php: -------------------------------------------------------------------------------- 1 | string('email')->index(); 18 | $table->string('token'); 19 | $table->timestamp('created_at')->nullable(); 20 | }); 21 | } 22 | 23 | /** 24 | * Reverse the migrations. 25 | * 26 | * @return void 27 | */ 28 | public function down() 29 | { 30 | Schema::dropIfExists('password_resets'); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /database/seeds/DatabaseSeeder.php: -------------------------------------------------------------------------------- 1 | call(UsersTableSeeder::class); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "private": true, 3 | "scripts": { 4 | "dev": "npm run development", 5 | "development": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js", 6 | "watch": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --watch --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js", 7 | "watch-poll": "npm run watch -- --watch-poll", 8 | "hot": "cross-env NODE_ENV=development node_modules/webpack-dev-server/bin/webpack-dev-server.js --inline --hot --config=node_modules/laravel-mix/setup/webpack.config.js", 9 | "prod": "npm run production", 10 | "production": "cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js" 11 | }, 12 | "devDependencies": { 13 | "axios": "^0.21.1", 14 | "bootstrap-sass": "^3.3.7", 15 | "cross-env": "^3.2.3", 16 | "jquery": "^3.1.1", 17 | "laravel-mix": "0.*", 18 | "lodash": "^4.17.4", 19 | "vue": "^2.1.10" 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /phpunit.xml: -------------------------------------------------------------------------------- 1 | 2 | 11 | 12 | 13 | ./tests/Feature 14 | 15 | 16 | 17 | ./tests/Unit 18 | 19 | 20 | 21 | 22 | ./app 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /public/.htaccess: -------------------------------------------------------------------------------- 1 | 2 | 3 | Options -MultiViews 4 | 5 | 6 | RewriteEngine On 7 | 8 | # Redirect Trailing Slashes If Not A Folder... 9 | RewriteCond %{REQUEST_FILENAME} !-d 10 | RewriteRule ^(.*)/$ /$1 [L,R=301] 11 | 12 | # Handle Front Controller... 13 | RewriteCond %{REQUEST_FILENAME} !-d 14 | RewriteCond %{REQUEST_FILENAME} !-f 15 | RewriteRule ^ index.php [L] 16 | 17 | # Handle Authorization Header 18 | RewriteCond %{HTTP:Authorization} . 19 | RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] 20 | 21 | -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Clago/workflow/d443b2af05d87367154c5b2877cf0cd1f493cdee/public/favicon.ico -------------------------------------------------------------------------------- /public/index.php: -------------------------------------------------------------------------------- 1 | 8 | */ 9 | 10 | /* 11 | |-------------------------------------------------------------------------- 12 | | Register The Auto Loader 13 | |-------------------------------------------------------------------------- 14 | | 15 | | Composer provides a convenient, automatically generated class loader for 16 | | our application. We just need to utilize it! We'll simply require it 17 | | into the script here so that we don't have to worry about manual 18 | | loading any of our classes later on. It feels great to relax. 19 | | 20 | */ 21 | 22 | require __DIR__.'/../bootstrap/autoload.php'; 23 | 24 | /* 25 | |-------------------------------------------------------------------------- 26 | | Turn On The Lights 27 | |-------------------------------------------------------------------------- 28 | | 29 | | We need to illuminate PHP development, so let us turn on the lights. 30 | | This bootstraps the framework and gets it ready for use, then it 31 | | will load up this application so that we can run it and send 32 | | the responses back to the browser and delight our users. 33 | | 34 | */ 35 | 36 | $app = require_once __DIR__.'/../bootstrap/app.php'; 37 | 38 | /* 39 | |-------------------------------------------------------------------------- 40 | | Run The Application 41 | |-------------------------------------------------------------------------- 42 | | 43 | | Once we have the application, we can handle the incoming request 44 | | through the kernel, and send the associated response back to 45 | | the client's browser allowing them to enjoy the creative 46 | | and wonderful application we have prepared for them. 47 | | 48 | */ 49 | 50 | $kernel = $app->make(Illuminate\Contracts\Http\Kernel::class); 51 | 52 | $response = $kernel->handle( 53 | $request = Illuminate\Http\Request::capture() 54 | ); 55 | 56 | $response->send(); 57 | 58 | $kernel->terminate($request, $response); 59 | -------------------------------------------------------------------------------- /public/robots.txt: -------------------------------------------------------------------------------- 1 | User-agent: * 2 | Disallow: 3 | -------------------------------------------------------------------------------- /public/vendor/flowchart/.eslintignore: -------------------------------------------------------------------------------- 1 | **/node_modules/ 2 | -------------------------------------------------------------------------------- /public/vendor/flowchart/.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "defaults", 3 | 4 | "env": { 5 | "browser": true, 6 | "node": true 7 | }, 8 | 9 | "globals": { 10 | "$": true 11 | }, 12 | 13 | "rules": { 14 | "no-console": 0 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /public/vendor/flowchart/.gitignore: -------------------------------------------------------------------------------- 1 | $ cat .gitignore 2 | 3 | # Can ignore specific files 4 | .settings.xml 5 | .monitor 6 | .DS_Store 7 | .idea 8 | 9 | # Use wildcards as well 10 | *~ 11 | #*.swp 12 | 13 | # Can also ignore all directories and files in a directory. 14 | node_modules 15 | node_modules/**/* 16 | bin 17 | reports 18 | reports/**/* 19 | -------------------------------------------------------------------------------- /public/vendor/flowchart/.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "site"] 2 | path = site 3 | url = git@github.com:adrai/flowchart.js.git 4 | -------------------------------------------------------------------------------- /public/vendor/flowchart/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "flowchart", 3 | "version": "1.6.6", 4 | "main": "./release/flowchart.min.js", 5 | "dependencies": {}, 6 | "ignore": [ 7 | "src/", 8 | "buildtasks/", 9 | "example/", 10 | ".gitignore", 11 | "Gruntfile.js", 12 | "package.json", 13 | "**/*.zip" 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /public/vendor/flowchart/devserver.js: -------------------------------------------------------------------------------- 1 | var path = require('path'); 2 | var express = require('express'); 3 | var webpack = require('webpack'); 4 | var config = require('./webpack.config'); 5 | 6 | var port = 8000; 7 | var app = express(); 8 | var compiler = webpack(config); 9 | 10 | app.use(express.static(process.cwd())); 11 | 12 | app.use(require('webpack-dev-middleware')(compiler, { 13 | noInfo: true, 14 | publicPath: config.output.publicPath 15 | })); 16 | 17 | app.use(require('webpack-hot-middleware')(compiler)); 18 | 19 | app.get('/', function (req, res) { 20 | res.sendFile(path.join(__dirname, 'index.html')); 21 | }); 22 | 23 | app.listen(port, '0.0.0.0', function (err) { 24 | if (err) { 25 | console.log(err); 26 | return; 27 | } 28 | 29 | console.log('Listening at http://0.0.0.0:%s', port); 30 | }); 31 | -------------------------------------------------------------------------------- /public/vendor/flowchart/example/loadFile.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | flowchart.js · Playground 6 | 9 | 10 | 11 | 12 | 13 | 14 | 26 | 27 | 28 |
29 | 30 | 31 | -------------------------------------------------------------------------------- /public/vendor/flowchart/example/test.txt: -------------------------------------------------------------------------------- 1 | st=>start: Start:>http://www.google.com[blank] 2 | e=>end:>http://www.google.com 3 | op1=>operation: My Ooooperation 4 | sub1=>subroutine: My Subroutine 5 | cond=>condition: Yes 6 | or No?:>http://www.google.com 7 | io=>inputoutput: catch something... 8 | 9 | st->op1->cond 10 | cond(yes)->io->e 11 | cond(no)->sub1(right)->op1 -------------------------------------------------------------------------------- /public/vendor/flowchart/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Demo page 5 | 6 | 7 | 8 | 9 | 10 |
11 | st=>start: Start|past:>http://www.google.com[blank] 12 | e=>end: End:>http://www.google.com 13 | op1=>operation: My Operation|past 14 | op2=>operation: Stuff|current 15 | sub1=>subroutine: My Subroutine|invalid 16 | cond=>condition: Yes 17 | or No?|approved:>http://www.google.com 18 | c2=>condition: Good idea|rejected 19 | io=>inputoutput: catch something...|request 20 | 21 | st->op1(right)->cond 22 | cond(yes, right)->c2 23 | cond(no)->sub1(left)->op1 24 | c2(yes)->io->e 25 | c2(no)->op2->e 26 |
27 | 28 | 29 | 30 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /public/vendor/flowchart/index.js: -------------------------------------------------------------------------------- 1 | require('./src/flowchart.shim'); 2 | var parse = require('./src/flowchart.parse'); 3 | require('./src/jquery-plugin'); 4 | 5 | var FlowChart = { 6 | parse: parse 7 | }; 8 | 9 | if (typeof window !== 'undefined') { 10 | window.flowchart = FlowChart; 11 | } 12 | 13 | module.exports = FlowChart; 14 | -------------------------------------------------------------------------------- /public/vendor/flowchart/license: -------------------------------------------------------------------------------- 1 | Copyright (c) 2017 Adriano Raiano 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in 11 | all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. 20 | -------------------------------------------------------------------------------- /public/vendor/flowchart/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "author": "adrai", 3 | "name": "flowchart.js", 4 | "version": "1.6.6", 5 | "main": "./index", 6 | "private": false, 7 | "engines": { 8 | "node": ">=4.0.0" 9 | }, 10 | "dependencies": { 11 | "raphael": "2.2.7" 12 | }, 13 | "devDependencies": { 14 | "eslint": "^1.10.3", 15 | "eslint-config-defaults": "^8.0.2", 16 | "express": ">= 0.0.1", 17 | "jquery": "^2.2.0", 18 | "lodash": ">=0.2.1", 19 | "moment": "^2.11.1", 20 | "webpack": "^1.12.11", 21 | "webpack-dev-middleware": "^1.4.0", 22 | "webpack-hot-middleware": "^2.6.0" 23 | }, 24 | "scripts": { 25 | "start": "node devserver.js", 26 | "lint": "eslint src", 27 | "build:unminified": "NODE_ENV=production webpack -d --config webpack.config.js", 28 | "build:minified": "NODE_ENV=production MINIFIED=1 webpack -d --config webpack.config.js", 29 | "build": "npm run build:unminified && npm run build:minified && cp ./release/flowchart.js ./site/flowchart-latest.js", 30 | "test": "npm run lint" 31 | }, 32 | "repository": { 33 | "type": "git", 34 | "url": "https://github.com/adrai/flowchart.js.git" 35 | }, 36 | "keywords": [ 37 | "flowchart", 38 | "client", 39 | "script" 40 | ], 41 | "homepage": "http://flowchart.js.org/", 42 | "license": "MIT" 43 | } 44 | -------------------------------------------------------------------------------- /public/vendor/flowchart/src/flowchart.defaults.js: -------------------------------------------------------------------------------- 1 | // defaults 2 | module.exports = { 3 | 'x': 0, 4 | 'y': 0, 5 | 'line-width': 3, 6 | 'line-length': 50, 7 | 'text-margin': 10, 8 | 'font-size': 14, 9 | 'font-color': 'black', 10 | // 'font': 'normal', 11 | // 'font-family': 'calibri', 12 | // 'font-weight': 'normal', 13 | 'line-color': 'black', 14 | 'element-color': 'black', 15 | 'fill': 'white', 16 | 'yes-text': 'yes', 17 | 'no-text': 'no', 18 | 'arrow-end': 'block', 19 | 'class': 'flowchart', 20 | 'scale': 1, 21 | 'symbols': { 22 | 'start': {}, 23 | 'end': {}, 24 | 'condition': {}, 25 | 'inputoutput': {}, 26 | 'operation': {}, 27 | 'subroutine': {} 28 | }//, 29 | // 'flowstate' : { 30 | // 'past' : { 'fill': '#CCCCCC', 'font-size': 12}, 31 | // 'current' : {'fill': 'yellow', 'font-color': 'red', 'font-weight': 'bold'}, 32 | // 'future' : { 'fill': '#FFFF99'}, 33 | // 'invalid': {'fill': '#444444'} 34 | // } 35 | }; 36 | -------------------------------------------------------------------------------- /public/vendor/flowchart/src/flowchart.helpers.js: -------------------------------------------------------------------------------- 1 | function _defaults(options, defaultOptions) { 2 | if (!options || typeof options === 'function') { 3 | return defaultOptions; 4 | } 5 | 6 | var merged = {}; 7 | for (var attrname in defaultOptions) { 8 | merged[attrname] = defaultOptions[attrname]; 9 | } 10 | 11 | for (attrname in options) { 12 | if (options[attrname]) { 13 | if (typeof merged[attrname] === 'object') { 14 | merged[attrname] = _defaults(merged[attrname], options[attrname]); 15 | } else { 16 | merged[attrname] = options[attrname]; 17 | } 18 | } 19 | } 20 | return merged; 21 | } 22 | 23 | function _inherits(ctor, superCtor) { 24 | if (typeof(Object.create) === 'function') { 25 | // implementation from standard node.js 'util' module 26 | ctor.super_ = superCtor; 27 | ctor.prototype = Object.create(superCtor.prototype, { 28 | constructor: { 29 | value: ctor, 30 | enumerable: false, 31 | writable: true, 32 | configurable: true 33 | } 34 | }); 35 | } else { 36 | // old school shim for old browsers 37 | ctor.super_ = superCtor; 38 | var TempCtor = function () {}; 39 | TempCtor.prototype = superCtor.prototype; 40 | ctor.prototype = new TempCtor(); 41 | ctor.prototype.constructor = ctor; 42 | } 43 | } 44 | 45 | // move dependent functions to a container so that 46 | // they can be overriden easier in no jquery environment (node.js) 47 | module.exports = { 48 | defaults: _defaults, 49 | inherits: _inherits 50 | }; 51 | -------------------------------------------------------------------------------- /public/vendor/flowchart/src/flowchart.shim.js: -------------------------------------------------------------------------------- 1 | // add indexOf to non ECMA-262 standard compliant browsers 2 | if (!Array.prototype.indexOf) { 3 | Array.prototype.indexOf = function (searchElement /*, fromIndex */ ) { 4 | "use strict"; 5 | if (this === null) { 6 | throw new TypeError(); 7 | } 8 | var t = Object(this); 9 | var len = t.length >>> 0; 10 | if (len === 0) { 11 | return -1; 12 | } 13 | var n = 0; 14 | if (arguments.length > 0) { 15 | n = Number(arguments[1]); 16 | if (n != n) { // shortcut for verifying if it's NaN 17 | n = 0; 18 | } else if (n !== 0 && n != Infinity && n != -Infinity) { 19 | n = (n > 0 || -1) * Math.floor(Math.abs(n)); 20 | } 21 | } 22 | if (n >= len) { 23 | return -1; 24 | } 25 | var k = n >= 0 ? n : Math.max(len - Math.abs(n), 0); 26 | for (; k < len; k++) { 27 | if (k in t && t[k] === searchElement) { 28 | return k; 29 | } 30 | } 31 | return -1; 32 | }; 33 | } 34 | 35 | // add lastIndexOf to non ECMA-262 standard compliant browsers 36 | if (!Array.prototype.lastIndexOf) { 37 | Array.prototype.lastIndexOf = function(searchElement /*, fromIndex*/) { 38 | "use strict"; 39 | if (this === null) { 40 | throw new TypeError(); 41 | } 42 | var t = Object(this); 43 | var len = t.length >>> 0; 44 | if (len === 0) { 45 | return -1; 46 | } 47 | var n = len; 48 | if (arguments.length > 1) { 49 | n = Number(arguments[1]); 50 | if (n != n) { 51 | n = 0; 52 | } else if (n !== 0 && n != (1 / 0) && n != -(1 / 0)) { 53 | n = (n > 0 || -1) * Math.floor(Math.abs(n)); 54 | } 55 | } 56 | var k = n >= 0 ? Math.min(n, len - 1) : len - Math.abs(n); 57 | for (; k >= 0; k--) { 58 | if (k in t && t[k] === searchElement) { 59 | return k; 60 | } 61 | } 62 | return -1; 63 | }; 64 | } 65 | 66 | if (!String.prototype.trim) { 67 | String.prototype.trim = function() { 68 | return this.replace(/^\s+|\s+$/g, ''); 69 | }; 70 | } -------------------------------------------------------------------------------- /public/vendor/flowchart/src/flowchart.symbol.end.js: -------------------------------------------------------------------------------- 1 | var Symbol = require('./flowchart.symbol'); 2 | var inherits = require('./flowchart.helpers').inherits; 3 | 4 | function End(chart, options) { 5 | var symbol = chart.paper.rect(0, 0, 0, 0, 20); 6 | options = options || {}; 7 | options.text = options.text || 'End'; 8 | Symbol.call(this, chart, options, symbol); 9 | } 10 | inherits(End, Symbol); 11 | 12 | module.exports = End; 13 | -------------------------------------------------------------------------------- /public/vendor/flowchart/src/flowchart.symbol.inputoutput.js: -------------------------------------------------------------------------------- 1 | var Symbol = require('./flowchart.symbol'); 2 | var inherits = require('./flowchart.helpers').inherits; 3 | var drawAPI = require('./flowchart.functions'); 4 | var drawPath = drawAPI.drawPath; 5 | 6 | function InputOutput(chart, options) { 7 | options = options || {}; 8 | Symbol.call(this, chart, options); 9 | this.textMargin = this.getAttr('text-margin'); 10 | 11 | this.text.attr({ 12 | x: this.textMargin * 3 13 | }); 14 | 15 | var width = this.text.getBBox().width + 4 * this.textMargin; 16 | var height = this.text.getBBox().height + 2 * this.textMargin; 17 | var startX = this.textMargin; 18 | var startY = height/2; 19 | 20 | var start = {x: startX, y: startY}; 21 | var points = [ 22 | {x: startX - this.textMargin, y: height}, 23 | {x: startX - this.textMargin + width, y: height}, 24 | {x: startX - this.textMargin + width + 2 * this.textMargin, y: 0}, 25 | {x: startX - this.textMargin + 2 * this.textMargin, y: 0}, 26 | {x: startX, y: startY} 27 | ]; 28 | 29 | var symbol = drawPath(chart, start, points); 30 | 31 | symbol.attr({ 32 | stroke: this.getAttr('element-color'), 33 | 'stroke-width': this.getAttr('line-width'), 34 | fill: this.getAttr('fill') 35 | }); 36 | if (options.link) { symbol.attr('href', options.link); } 37 | if (options.target) { symbol.attr('target', options.target); } 38 | if (options.key) { symbol.node.id = options.key; } 39 | symbol.node.setAttribute('class', this.getAttr('class')); 40 | 41 | this.text.attr({ 42 | y: symbol.getBBox().height/2 43 | }); 44 | 45 | this.group.push(symbol); 46 | symbol.insertBefore(this.text); 47 | 48 | this.initialize(); 49 | } 50 | inherits(InputOutput, Symbol); 51 | 52 | InputOutput.prototype.getLeft = function() { 53 | var y = this.getY() + this.group.getBBox().height/2; 54 | var x = this.getX() + this.textMargin; 55 | return {x: x, y: y}; 56 | }; 57 | 58 | InputOutput.prototype.getRight = function() { 59 | var y = this.getY() + this.group.getBBox().height/2; 60 | var x = this.getX() + this.group.getBBox().width - this.textMargin; 61 | return {x: x, y: y}; 62 | }; 63 | 64 | module.exports = InputOutput; 65 | -------------------------------------------------------------------------------- /public/vendor/flowchart/src/flowchart.symbol.operation.js: -------------------------------------------------------------------------------- 1 | var Symbol = require('./flowchart.symbol'); 2 | var inherits = require('./flowchart.helpers').inherits; 3 | 4 | function Operation(chart, options) { 5 | var symbol = chart.paper.rect(0, 0, 0, 0); 6 | options = options || {}; 7 | Symbol.call(this, chart, options, symbol); 8 | } 9 | inherits(Operation, Symbol); 10 | 11 | module.exports = Operation; 12 | -------------------------------------------------------------------------------- /public/vendor/flowchart/src/flowchart.symbol.start.js: -------------------------------------------------------------------------------- 1 | var Symbol = require('./flowchart.symbol'); 2 | var inherits = require('./flowchart.helpers').inherits; 3 | 4 | function Start(chart, options) { 5 | var symbol = chart.paper.rect(0, 0, 0, 0, 20); 6 | options = options || {}; 7 | options.text = options.text || 'Start'; 8 | Symbol.call(this, chart, options, symbol); 9 | } 10 | inherits(Start, Symbol); 11 | 12 | module.exports = Start; 13 | 14 | // Start.prototype.render = function() { 15 | // if (this.next) { 16 | // var lineLength = this.chart.options.symbols[this.symbolType]['line-length'] || this.chart.options['line-length']; 17 | 18 | // var bottomPoint = this.getBottom(); 19 | // var topPoint = this.next.getTop(); 20 | 21 | // if (!this.next.isPositioned) { 22 | // this.next.shiftY(this.getY() + this.height + lineLength); 23 | // this.next.setX(bottomPoint.x - this.next.width/2); 24 | // this.next.isPositioned = true; 25 | 26 | // this.next.render(); 27 | // } 28 | // } 29 | // }; 30 | 31 | // Start.prototype.renderLines = function() { 32 | // if (this.next) { 33 | // this.drawLineTo(this.next); 34 | // } 35 | // }; 36 | -------------------------------------------------------------------------------- /public/vendor/flowchart/src/flowchart.symbol.subroutine.js: -------------------------------------------------------------------------------- 1 | var Symbol = require('./flowchart.symbol'); 2 | var inherits = require('./flowchart.helpers').inherits; 3 | 4 | function Subroutine(chart, options) { 5 | var symbol = chart.paper.rect(0, 0, 0, 0); 6 | options = options || {}; 7 | Symbol.call(this, chart, options, symbol); 8 | 9 | symbol.attr({ 10 | width: this.text.getBBox().width + 4 * this.getAttr('text-margin') 11 | }); 12 | 13 | this.text.attr({ 14 | 'x': 2 * this.getAttr('text-margin') 15 | }); 16 | 17 | var innerWrap = chart.paper.rect(0, 0, 0, 0); 18 | innerWrap.attr({ 19 | x: this.getAttr('text-margin'), 20 | stroke: this.getAttr('element-color'), 21 | 'stroke-width': this.getAttr('line-width'), 22 | width: this.text.getBBox().width + 2 * this.getAttr('text-margin'), 23 | height: this.text.getBBox().height + 2 * this.getAttr('text-margin'), 24 | fill: this.getAttr('fill') 25 | }); 26 | if (options.key) { innerWrap.node.id = options.key + 'i'; } 27 | 28 | var font = this.getAttr('font'); 29 | var fontF = this.getAttr('font-family'); 30 | var fontW = this.getAttr('font-weight'); 31 | 32 | if (font) innerWrap.attr({ 'font': font }); 33 | if (fontF) innerWrap.attr({ 'font-family': fontF }); 34 | if (fontW) innerWrap.attr({ 'font-weight': fontW }); 35 | 36 | if (options.link) { innerWrap.attr('href', options.link); } 37 | if (options.target) { innerWrap.attr('target', options.target); } 38 | this.group.push(innerWrap); 39 | innerWrap.insertBefore(this.text); 40 | 41 | this.initialize(); 42 | } 43 | inherits(Subroutine, Symbol); 44 | 45 | module.exports = Subroutine; 46 | -------------------------------------------------------------------------------- /public/vendor/flowchart/src/jquery-plugin.js: -------------------------------------------------------------------------------- 1 | if (typeof jQuery != 'undefined') { 2 | var parse = require('./flowchart.parse'); 3 | (function( $ ) { 4 | $.fn.flowChart = function( options ) { 5 | return this.each(function() { 6 | var $this = $(this); 7 | var chart = parse($this.text()); 8 | $this.html(''); 9 | chart.drawSVG(this, options); 10 | }); 11 | }; 12 | })(jQuery); // eslint-disable-line 13 | } 14 | -------------------------------------------------------------------------------- /public/vendor/flowchart/src/svginnerhtml.min.js: -------------------------------------------------------------------------------- 1 | (function(g){var b=["SVGSVGElement","SVGGElement"],d=document.createElement("dummy");if(!b[0]in g)return!1;if(Object.defineProperty){var e={get:function(){d.innerHTML="";Array.prototype.slice.call(this.childNodes).forEach(function(a){d.appendChild(a.cloneNode(!0))});return d.innerHTML},set:function(a){var b=this,e=Array.prototype.slice.call(b.childNodes),f=function(a,c){if(1!==c.nodeType)return!1;var b=document.createElementNS("http://www.w3.org/2000/svg",c.nodeName.toLowerCase());Array.prototype.slice.call(c.attributes).forEach(function(a){b.setAttribute(a.name, 2 | a.value)});"TEXT"===c.nodeName&&(b.textContent=c.innerHTML);a.appendChild(b);c.childNodes.length&&Array.prototype.slice.call(c.childNodes).forEach(function(a){f(b,a)})},a=a.replace(/<(\w+)([^<]+?)\/>/,"<$1$2>");e.forEach(function(a){a.parentNode.removeChild(a)});d.innerHTML=a;Array.prototype.slice.call(d.childNodes).forEach(function(a){f(b,a)})},enumerable:!0,configurable:!0};try{b.forEach(function(a){Object.defineProperty(window[a].prototype,"innerHTML",e)})}catch(h){}}else Object.prototype.__defineGetter__&& 3 | b.forEach(function(a){window[a].prototype.__defineSetter__("innerHTML",e.set);window[a].prototype.__defineGetter__("innerHTML",e.get)})})(window); -------------------------------------------------------------------------------- /public/vendor/flowchart/webpack.config.js: -------------------------------------------------------------------------------- 1 | var path = require('path'); 2 | var webpack = require('webpack'); 3 | var moment = require('moment'); 4 | 5 | var component = require('./package.json'); 6 | var banner = 7 | '// ' + component.name + ', v' + component.version + '\n' + 8 | '// Copyright (c)' + moment().format('YYYY') + ' Adriano Raiano (adrai).\n' + 9 | '// Distributed under MIT license\n' + 10 | '// http://adrai.github.io/flowchart.js\n'; 11 | 12 | var NODE_ENV = process.env.NODE_ENV || 'development'; 13 | var defines = new webpack.DefinePlugin({ 14 | 'process.env': { 15 | 'NODE_ENV': JSON.stringify(NODE_ENV) 16 | } 17 | }); 18 | 19 | var config = { 20 | devtool: 'source-map', // always build source map 21 | entry: [ 22 | 'webpack-hot-middleware/client', 23 | './index' 24 | ], 25 | output: { 26 | path: path.join(__dirname, 'release'), 27 | filename: component.name + '.js', 28 | publicPath: '/release/' 29 | }, 30 | plugins: [ 31 | new webpack.HotModuleReplacementPlugin(), 32 | new webpack.NoErrorsPlugin(), 33 | defines 34 | ], 35 | resolve: { 36 | extensions: ['', '.js'], 37 | modulesDirectories: ['src', 'node_modules'], 38 | alias: { 39 | 'dev/raphael.core.js': './dev/raphael.core.js', 40 | 'raphael.core': './raphael.core.js', 41 | 'raphael.svg': './dev/raphael.svg.js', 42 | 'raphael.vml': './dev/raphael.vml.js' 43 | } 44 | } 45 | }; 46 | 47 | if (NODE_ENV === 'production') { 48 | var minified = process.env.MINIFIED == '1'; 49 | var withoutJs = component.name; 50 | withoutJs = withoutJs.replace('.js', ''); 51 | var filename = minified ? withoutJs + '.min.js' : withoutJs + '.js'; 52 | var uglifyOptions = { 53 | sourceMap: true, 54 | compressor: { 55 | warnings: false, 56 | dead_code: true 57 | }, 58 | output: { 59 | preamble: banner, 60 | comments: false 61 | } 62 | }; 63 | if (!minified) { 64 | uglifyOptions.beautify = true; 65 | uglifyOptions.mangle = false; 66 | uglifyOptions.output.comments = 'all'; 67 | } 68 | config.entry = './index'; 69 | config.externals = { 70 | raphael: 'Raphael' 71 | }; 72 | config.output = { 73 | devtoolLineToLine: true, 74 | sourceMapFilename: filename + '.map', 75 | path: path.join(__dirname, 'release'), 76 | filename: filename, 77 | libraryTarget: 'umd' 78 | }; 79 | config.plugins = [ 80 | new webpack.optimize.OccurenceOrderPlugin(), 81 | defines, 82 | new webpack.optimize.UglifyJsPlugin(uglifyOptions) 83 | ]; 84 | } 85 | 86 | module.exports = config; 87 | -------------------------------------------------------------------------------- /public/vendor/flowdesign/.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | 4 | # Custom for Visual Studio 5 | *.cs diff=csharp 6 | *.sln merge=union 7 | *.csproj merge=union 8 | *.vbproj merge=union 9 | *.fsproj merge=union 10 | *.dbproj merge=union 11 | 12 | # Standard to msysgit 13 | *.doc diff=astextplain 14 | *.DOC diff=astextplain 15 | *.docx diff=astextplain 16 | *.DOCX diff=astextplain 17 | *.dot diff=astextplain 18 | *.DOT diff=astextplain 19 | *.pdf diff=astextplain 20 | *.PDF diff=astextplain 21 | *.rtf diff=astextplain 22 | *.RTF diff=astextplain 23 | -------------------------------------------------------------------------------- /public/vendor/flowdesign/.gitignore: -------------------------------------------------------------------------------- 1 | # Windows image file caches 2 | Thumbs.db 3 | ehthumbs.db 4 | 5 | # Folder config file 6 | Desktop.ini 7 | 8 | # Recycle Bin used on file shares 9 | $RECYCLE.BIN/ 10 | 11 | # Windows Installer files 12 | *.cab 13 | *.msi 14 | *.msm 15 | *.msp 16 | 17 | # ========================= 18 | # Operating System Files 19 | # ========================= 20 | 21 | # OSX 22 | # ========================= 23 | 24 | .DS_Store 25 | .AppleDouble 26 | .LSOverride 27 | 28 | # Icon must ends with two \r. 29 | Icon 30 | 31 | # Thumbnails 32 | ._* 33 | 34 | # Files that might appear on external disk 35 | .Spotlight-V100 36 | .Trashes 37 | -------------------------------------------------------------------------------- /public/vendor/flowdesign/Public/css/bootstrap/css/ie.css: -------------------------------------------------------------------------------- 1 | /* NAVBAR */ 2 | 3 | /* !CPU HIGH, fix for IE6 shake when scroll */ 4 | * html,* html body { 5 | _background-image:url(about:blank); 6 | _background-attachment:fixed; 7 | } 8 | /* !CPU HIGH, fix for IE6 not support fixed position */ 9 | .navbar-fixed-top { 10 | _position:absolute; 11 | _bottom:auto; 12 | _top:expression(eval(document.documentElement.scrollTop)); 13 | } 14 | /* !CPU HIGH, fix for IE6 not support fixed position */ 15 | .navbar-fixed-bottom { 16 | _position:absolute; 17 | _bottom:auto; 18 | _top:expression(eval(document.documentElement.scrollTop+document.documentElement.clientHeight-this.offsetHeight-(parseInt(this.currentStyle.marginTop,10)||0)-(parseInt(this.currentStyle.marginBottom,10)||0))); 19 | } 20 | 21 | /* DROPDOWN */ 22 | .dropup, 23 | .dropdown { 24 | *zoom:1; 25 | } 26 | 27 | /* CLOSE */ 28 | .close { 29 | _font-size: 15px; 30 | } 31 | 32 | .modal-header h3 { 33 | *display: inline; 34 | *zoom:1; 35 | } 36 | 37 | /* MODALS */ 38 | .modal-backdrop { 39 | _position: absolute; 40 | _top:0; 41 | _margin-top:0; 42 | _width:expression(eval(document.documentElement.scrollWidth)); 43 | _height:expression(eval(document.documentElement.scrollHeight)); 44 | } 45 | .modal { 46 | _position:absolute; 47 | _top:0; 48 | _margin-top:0; 49 | _top:expression(eval(document.documentElement.scrollTop)); 50 | } 51 | .modal.fade.in { 52 | _filter:alpha(opacity=100); 53 | } 54 | .modal-backdrop { 55 | _filter: alpha(opacity=80); 56 | } 57 | .modal-body { 58 | _height:expression(this.scrollHeight > 400 ? "400px" : "auto"); 59 | } 60 | -------------------------------------------------------------------------------- /public/vendor/flowdesign/Public/css/bootstrap/img/glyphicons-halflings-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Clago/workflow/d443b2af05d87367154c5b2877cf0cd1f493cdee/public/vendor/flowdesign/Public/css/bootstrap/img/glyphicons-halflings-white.png -------------------------------------------------------------------------------- /public/vendor/flowdesign/Public/css/bootstrap/img/glyphicons-halflings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Clago/workflow/d443b2af05d87367154c5b2877cf0cd1f493cdee/public/vendor/flowdesign/Public/css/bootstrap/img/glyphicons-halflings.png -------------------------------------------------------------------------------- /public/vendor/flowdesign/Public/css/site.css: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Main navigation 4 | */ 5 | .bs-docs-nav { 6 | text-shadow: 0 -1px 0 rgba(0,0,0,.15); 7 | /* background-color: #563d7c;*/ 8 | border-color: #463265; 9 | box-shadow: 0 1px 0 rgba(255,255,255,.1); 10 | } 11 | .bs-docs-nav .navbar-collapse { 12 | border-color: #463265; 13 | } 14 | .bs-docs-nav .navbar-brand { 15 | color: #fff; 16 | } 17 | .bs-docs-nav .navbar-nav > li > a { 18 | color: #cdbfe3; 19 | } 20 | .bs-docs-nav .navbar-nav > li > a:hover { 21 | color: #fff; 22 | } 23 | .bs-docs-nav .navbar-nav > .active > a, 24 | .bs-docs-nav .navbar-nav > .active > a:hover { 25 | color: #fff; 26 | background:none; 27 | } 28 | .bs-docs-nav .navbar-toggle { 29 | border-color: #563d7c; 30 | } 31 | .bs-docs-nav .navbar-toggle:hover { 32 | background-color: #463265; 33 | border-color: #463265; 34 | } 35 | 36 | /* Page headers */ 37 | .bs-header { 38 | padding: 40px 15px 20px; /* side padding builds on .container 15px, so 30px */ 39 | margin:20px 0; 40 | font-size: 16px; 41 | text-align: left; 42 | text-shadow: 0 1px 0 rgba(0,0,0,.15); 43 | background-color: #000; 44 | color: #fff; 45 | ;background-repeat:repeat-x; 46 | background-image:-webkit-linear-gradient(45deg, #020031, #563d7c); 47 | background-image:-moz-linear-gradient(45deg, #020031, #563d7c); 48 | background-image:linear-gradient(45deg, #020031, #563d7c) 49 | 50 | } 51 | .bs-header p { 52 | font-weight: 300; 53 | line-height: 1.5; 54 | } 55 | /* 56 | * Footer 57 | * 58 | * Separated section of content at the bottom of all pages, save the homepage. 59 | */ 60 | 61 | .bs-footer { 62 | padding-top: 40px; 63 | padding-bottom: 30px; 64 | margin-top: 40px; 65 | color: #777; 66 | text-align: left; 67 | border-top: 1px solid #e5e5e5; 68 | background-color:#f5f5f5 69 | } 70 | .footer-links { 71 | margin: 10px 0; 72 | padding-left: 0; 73 | } 74 | .footer-links li { 75 | display: inline; 76 | padding: 0 2px; 77 | } 78 | .footer-links li:first-child { 79 | padding-left: 0; 80 | } -------------------------------------------------------------------------------- /public/vendor/flowdesign/Public/images/grid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Clago/workflow/d443b2af05d87367154c5b2877cf0cd1f493cdee/public/vendor/flowdesign/Public/images/grid.png -------------------------------------------------------------------------------- /public/vendor/flowdesign/Public/js/jquery.multiselect2side/css/jquery.multiselect2side - 副本.css: -------------------------------------------------------------------------------- 1 | .ms2side__div { 2 | clear: left; 3 | width: 100%; 4 | padding: 1px; 5 | float: left; 6 | background : url('') repeat-x; /* HACK FOR CHROME */ 7 | } 8 | 9 | .ms2side__select { 10 | float: left; 11 | } 12 | 13 | .ms2side__header { 14 | color: #000088; 15 | background-color: #EEEEFF; 16 | margin-left: 3px; 17 | width: 220px; 18 | height: 20px; 19 | } 20 | 21 | .ms2side__options, .ms2side__updown { 22 | float: left; 23 | font-size: 10pt; 24 | margin: 0; 25 | padding: 0 8px; 26 | width: 40px; 27 | color: black; 28 | text-align: center; 29 | overflow: hidden; 30 | } 31 | 32 | .ms2side__updown { 33 | font-size: 9pt; 34 | } 35 | 36 | .ms2side__options p, .ms2side__updown p { 37 | margin: 2px 0; 38 | padding: 0; 39 | cursor: pointer; 40 | border: 1px solid black; 41 | } 42 | 43 | .ms2side__options p.ms2side_hover, .ms2side__updown p.ms2side_hover { 44 | background-color: #F0F0FF; 45 | border-color: #0000FF; 46 | cursor: pointer; 47 | } 48 | 49 | .ms2side__options p.ms2side__hide, .ms2side__updown p.ms2side__hide { 50 | cursor: default; 51 | color: gray; 52 | border: 1px solid gray; 53 | background-color: #F0F0F0; 54 | } 55 | 56 | .ms2side__div select { 57 | width: 220px; 58 | float: left; 59 | } 60 | 61 | 62 | /* INPUT FOR SEARCH */ 63 | .ms2side__header input { 64 | width: 80px; 65 | height: 12px; 66 | } 67 | 68 | .ms2side__header input.wait { 69 | width: 80px; 70 | height: 12px; 71 | background: #FFFFFF url(../img/loading.gif) no-repeat center right; 72 | } 73 | 74 | .ms2side__header input.small { 75 | width: 50px; 76 | height: 12px; 77 | } 78 | 79 | 80 | /* INPUT FOR SELECT SEARCH */ 81 | .ms2side__header select { 82 | width: 100px; 83 | font-size: 11px; 84 | height: 18px; 85 | float: none; 86 | } 87 | 88 | .ms2side__header select.small { 89 | width: 70px; 90 | } 91 | 92 | 93 | /* REMOVE FILTER OPTION FOR SEARCH */ 94 | .ms2side__header a { 95 | font-size: 10pt; 96 | padding: 0 8px; 97 | width: 16px; 98 | height: 16px; 99 | color: black; 100 | text-align: center; 101 | text-decoration: none; 102 | border: 1px solid gray; 103 | background: #FFFFFF url(../img/close.gif) no-repeat center center; 104 | margin: 0 0 0 3px; 105 | } 106 | 107 | .ms2side__header a:hover { 108 | background-color: #F0F0FF; 109 | border-color: gray; 110 | } -------------------------------------------------------------------------------- /public/vendor/flowdesign/Public/js/jquery.multiselect2side/css/jquery.multiselect2side.css: -------------------------------------------------------------------------------- 1 | .ms2side__div { 2 | clear: left; 3 | width: auto; 4 | padding: 1px; 5 | padding-top:14px; 6 | float: left; 7 | background : url('') repeat-x; /* HACK FOR CHROME */ 8 | } 9 | 10 | .ms2side__select { 11 | float: left; 12 | } 13 | 14 | .ms2side__header { 15 | /*color: #000088; 16 | background-color: #EEEEFF;*/ 17 | margin-left: 3px; 18 | margin-top:-20px; 19 | margin-bottom: 5px; 20 | width: 220px; 21 | height: 20px; 22 | } 23 | 24 | .ms2side__options, .ms2side__updown { 25 | float: left; 26 | font-size: 10pt; 27 | margin: 0; 28 | margin-top:8px; 29 | padding: 0 8px; 30 | width: 40px; 31 | color: black; 32 | text-align: center; 33 | overflow: hidden; 34 | } 35 | 36 | .ms2side__updown { 37 | font-size: 9pt; 38 | } 39 | 40 | .ms2side__options p, .ms2side__updown p { 41 | margin: 2px 0; 42 | padding: 0; 43 | cursor: pointer; 44 | border: 1px solid black; 45 | } 46 | 47 | .ms2side__options p.ms2side_hover, .ms2side__updown p.ms2side_hover { 48 | background-color: #F0F0FF; 49 | border-color: #0000FF; 50 | cursor: pointer; 51 | } 52 | 53 | .ms2side__options p.ms2side__hide, .ms2side__updown p.ms2side__hide { 54 | cursor: default; 55 | color: gray; 56 | border: 1px solid gray; 57 | background-color: #F0F0F0; 58 | } 59 | 60 | .ms2side__div select { 61 | width: 220px; 62 | float: left; 63 | } 64 | 65 | 66 | /* INPUT FOR SEARCH */ 67 | .ms2side__header input { 68 | width: 80px; 69 | height: 12px; 70 | } 71 | 72 | .ms2side__header input.wait { 73 | width: 80px; 74 | height: 12px; 75 | background: #FFFFFF url(../img/loading.gif) no-repeat center right; 76 | } 77 | 78 | .ms2side__header input.small { 79 | width: 50px; 80 | height: 12px; 81 | } 82 | 83 | 84 | /* INPUT FOR SELECT SEARCH */ 85 | .ms2side__header select { 86 | width: 100px; 87 | font-size: 11px; 88 | height: 18px; 89 | float: none; 90 | } 91 | 92 | .ms2side__header select.small { 93 | width: 70px; 94 | } 95 | 96 | 97 | /* REMOVE FILTER OPTION FOR SEARCH */ 98 | .ms2side__header a { 99 | font-size: 10pt; 100 | padding: 0 8px; 101 | width: 16px; 102 | height: 16px; 103 | color: black; 104 | text-align: center; 105 | text-decoration: none; 106 | border: 1px solid gray; 107 | background: #FFFFFF url(../img/close.gif) no-repeat center center; 108 | margin: 0 0 0 3px; 109 | } 110 | 111 | .ms2side__header a:hover { 112 | background-color: #F0F0FF; 113 | border-color: gray; 114 | } -------------------------------------------------------------------------------- /public/vendor/flowdesign/Public/js/jquery.multiselect2side/img/close.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Clago/workflow/d443b2af05d87367154c5b2877cf0cd1f493cdee/public/vendor/flowdesign/Public/js/jquery.multiselect2side/img/close.gif -------------------------------------------------------------------------------- /public/vendor/flowdesign/Public/js/jquery.multiselect2side/img/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Clago/workflow/d443b2af05d87367154c5b2877cf0cd1f493cdee/public/vendor/flowdesign/Public/js/jquery.multiselect2side/img/loading.gif -------------------------------------------------------------------------------- /public/vendor/flowdesign/Public/js/jquery.multiselect2side/img/search.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Clago/workflow/d443b2af05d87367154c5b2877cf0cd1f493cdee/public/vendor/flowdesign/Public/js/jquery.multiselect2side/img/search.gif -------------------------------------------------------------------------------- /public/vendor/flowdesign/Public/js/jquery.multiselect2side/jmultiselect2side.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/vendor/flowdesign/Public/js/jquery.pin.min.js: -------------------------------------------------------------------------------- 1 | (function(e){e.fn.pin=function(a){var g=0,h=[],n=!1,k=e(window),a=a||{},m=function(){for(var i=0,d=h.length;i"); 2 | var g=e.extend({top:0,bottom:0},a.padding||{});b.data("pin",{pad:g,from:(a.containerSelector?j.top:f.top)-g.top,to:j.top+c.height()-b.outerHeight()-g.bottom,end:j.top+c.height(),parentTop:l.top});b.css({width:b.outerWidth()});b.parent().css("height",b.outerHeight())}}},o=function(){if(!n){g=k.scrollTop();for(var i=[],d=0,b=h.length;df.end?c.css("position",""):jg?("fixed"!=c.css("position")&&c.css({left:c.offset().left, 3 | top:f.pad.top}).css("position","fixed"),a.activeClass&&c.addClass(a.activeClass)):g>=l?(c.css({left:"",top:l-f.parentTop+f.pad.top}).css("position","absolute"),a.activeClass&&c.addClass(a.activeClass)):(c.css({position:"",top:"",left:""}),a.activeClass&&c.removeClass(a.activeClass))}}h=i}},p=function(){m();o()};this.each(function(){var a=e(this),d=e(this).data("pin")||{};if(!d||!d.update)h.push(a),e("img",this).one("load",m),d.update=p,e(this).data("pin",d)});k.scroll(o);k.resize(function(){m()}); 4 | m();k.load(p);return this}})(jQuery); 5 | -------------------------------------------------------------------------------- /public/vendor/flowdesign/Public/js/jsPlumb/各版本下载.txt: -------------------------------------------------------------------------------- 1 | https://github.com/sporritt/jsPlumb/releases 2 | 3 | 4 | 1.4.0在IE8中有bug 5 | 使用 1.3.16 兼容性目前最理想。 -------------------------------------------------------------------------------- /public/vendor/flowdesign/README.md: -------------------------------------------------------------------------------- 1 | Jquery Web 在线流程设计器 Flowdesign.leipi.org 2 | ========== 3 | 4 | 官网:http://flowdesign.leipi.org 5 | 6 | 详情,请到官网了解。 7 | -------------------------------------------------------------------------------- /public/vendor/flowdesign/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Clago/workflow/d443b2af05d87367154c5b2877cf0cd1f493cdee/public/vendor/flowdesign/favicon.ico -------------------------------------------------------------------------------- /public/vendor/layer/LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2016 layui 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. -------------------------------------------------------------------------------- /public/vendor/layer/README.md: -------------------------------------------------------------------------------- 1 | 2 | ## 概要 3 | layer是一款近年来备受青睐的web弹层组件,这完全得益于她全方位的解决方案。她致力于服务各个水平段的开发人员,您的页面会轻松地拥有丰富友好的操作体验。在与同类组件的比较中,layer总是能轻易获胜。她尽可能地在以更少的代码展现更强健的功能,且格外注重性能的提升、易用和实用性,正因如此,越来越多的开发者将媚眼投上了layer。layer兼容了包括IE6在内的所有主流浏览器。 她数量可观的接口,使得您可以自定义太多您需要的风格,每一种弹层模式各具特色,皆广受欢迎。当然,这种“王婆卖瓜”的陈述听起来总是有点难受,因此你需要进一步了解她是否真的如你所愿。 4 | 5 | [文档与演示](http://layer.layui.com/) 6 | 7 | ## 愿景 8 | layer致力于打造国内最盛行的弹层组件,为web开发提供强劲动力。 9 | 10 | ## 现状 11 | 因着数年的坚持维护,截至到2017年03月21日,已运用在超过30万家Web平台,其中不乏众多知名大型网站。目前layer已经成为国内乃至全世界最多人使用的Web弹层解决方案,并且她仍在与Layui一并高速发展。 12 | 13 | 14 | ## 相关 15 | [官网](http://layer.layui.com/)、[社区](http://fly.layui.com) -------------------------------------------------------------------------------- /public/vendor/layer/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "layer", 3 | "main": "src/layer.js", 4 | "version": "3.0.3", 5 | "homepage": "https://github.com/sentsin/layer", 6 | "authors": [ 7 | "sentsin " 8 | ], 9 | "description": "弹窗组件", 10 | "moduleType": [ 11 | "amd", 12 | "globals" 13 | ], 14 | "keywords": [ 15 | "layer", 16 | "layui", 17 | "dialog" 18 | ], 19 | "license": "MIT" 20 | } 21 | -------------------------------------------------------------------------------- /public/vendor/layer/build/skin/default/icon-ext.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Clago/workflow/d443b2af05d87367154c5b2877cf0cd1f493cdee/public/vendor/layer/build/skin/default/icon-ext.png -------------------------------------------------------------------------------- /public/vendor/layer/build/skin/default/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Clago/workflow/d443b2af05d87367154c5b2877cf0cd1f493cdee/public/vendor/layer/build/skin/default/icon.png -------------------------------------------------------------------------------- /public/vendor/layer/build/skin/default/loading-0.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Clago/workflow/d443b2af05d87367154c5b2877cf0cd1f493cdee/public/vendor/layer/build/skin/default/loading-0.gif -------------------------------------------------------------------------------- /public/vendor/layer/build/skin/default/loading-1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Clago/workflow/d443b2af05d87367154c5b2877cf0cd1f493cdee/public/vendor/layer/build/skin/default/loading-1.gif -------------------------------------------------------------------------------- /public/vendor/layer/build/skin/default/loading-2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Clago/workflow/d443b2af05d87367154c5b2877cf0cd1f493cdee/public/vendor/layer/build/skin/default/loading-2.gif -------------------------------------------------------------------------------- /public/vendor/layer/build/skin/moon/default.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Clago/workflow/d443b2af05d87367154c5b2877cf0cd1f493cdee/public/vendor/layer/build/skin/moon/default.png -------------------------------------------------------------------------------- /public/vendor/layer/gulpfile.js: -------------------------------------------------------------------------------- 1 | /** 2 | layer构建 3 | */ 4 | 5 | var pkg = require('./package.json'); 6 | 7 | var gulp = require('gulp'); 8 | var uglify = require('gulp-uglify'); 9 | var minify = require('gulp-minify-css'); 10 | var rename = require('gulp-rename'); 11 | var header = require('gulp-header'); 12 | var del = require('del'); 13 | 14 | var task = { 15 | layer: function() { 16 | gulp.src('./src/**/*.css') 17 | .pipe(minify({ 18 | compatibility: 'ie7' 19 | })) 20 | .pipe(gulp.dest('./build')); 21 | 22 | return gulp.src('./src/layer.js').pipe(uglify()) 23 | .pipe(header('/*! <%= pkg.name %>-v<%= pkg.version %> <%= pkg.description %> <%= pkg.license %> License <%= pkg.homepage %> By <%= pkg.author %> */\n ;', {pkg: pkg})) 24 | .pipe(gulp.dest('./build')); 25 | 26 | } 27 | ,mobile: function() { 28 | return gulp.src('./src/mobile/layer.js').pipe(uglify()) 29 | .pipe(header('/*! <%= pkg.name %> mobile-v<%= pkg.mobile %> <%= pkg.description %> <%= pkg.license %> License <%= pkg.homepage %>mobile By <%= pkg.author %> */\n ;', {pkg: pkg})) 30 | .pipe(gulp.dest('./build/mobile')); 31 | } 32 | ,other: function(){ 33 | gulp.src('./src/**/*.{png,gif}').pipe(rename({})) 34 | .pipe(gulp.dest('./build')); 35 | } 36 | }; 37 | 38 | 39 | gulp.task('clear', function(cb){ //清理 40 | return del(['./build/*'], cb); 41 | }); 42 | gulp.task('layer', task.minjs); //压缩PC版本 43 | gulp.task('mobile', task.mincss); //压缩Mobile文件 44 | gulp.task('other', task.other); //移动一些配件 45 | 46 | //全部 47 | gulp.task('default', ['clear'], function(){ 48 | for(var key in task){ 49 | task[key](); 50 | } 51 | }); 52 | 53 | 54 | 55 | 56 | 57 | 58 | -------------------------------------------------------------------------------- /public/vendor/layer/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "layer", 3 | "version": "3.0.3", 4 | "mobile": "2.0.0", 5 | "description": "Web弹层组件", 6 | "main": "src/layer.js", 7 | "license": "MIT", 8 | "scripts": { 9 | "run": "gulp" 10 | }, 11 | "repository": { 12 | "type": "https", 13 | "url": "https://github.com/sentsin/layer.git" 14 | }, 15 | "author": "贤心", 16 | "homepage": "http://layer.layui.com/", 17 | "devDependencies": { 18 | "gulp": "^3.9.0", 19 | "gulp-minify-css": "^1.2.4", 20 | "gulp-uglify": "^1.5.4", 21 | "gulp-rename": "^1.2.2", 22 | "gulp-header": "^1.8.8", 23 | "del": "^2.2.2" 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /public/vendor/layer/src/README.md: -------------------------------------------------------------------------------- 1 | 2 | ## 注意 3 | 开发版源码随时可能会提交,因此生产环境更建议build目录中压缩后的layer.js。 -------------------------------------------------------------------------------- /public/vendor/layer/src/mobile/README.md: -------------------------------------------------------------------------------- 1 |  2 | ## layer mobile 3 | layer mobile是为移动设备(手机、平板等webkit内核浏览器/webview)量身定做的弹层支撑,采用Native JavaScript编写,完全独立于PC版的layer,您需要按照场景选择使用。 4 | 5 | [文档与演示](http://sentsin.com/layui/layer/) 6 | 7 | 1. 无需依赖任何库,只加载layer.m.js即可 8 | 2. 小巧玲珑,性能卓越、柔情似水… 9 | 3. 具备无以伦比的自适应功能 10 | 4. 灵活的皮肤自定义支撑,充分确保弹层风格多样化 11 | 5. 丰富、科学的接口,让弹弹弹层无所不能 12 | 13 | ## 备注 14 | [官网](http://sentsin.com/layui/layer/)、[有问必答](http://say.sentsin.com/home-48.html) 15 | -------------------------------------------------------------------------------- /public/vendor/layer/src/skin/default/icon-ext.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Clago/workflow/d443b2af05d87367154c5b2877cf0cd1f493cdee/public/vendor/layer/src/skin/default/icon-ext.png -------------------------------------------------------------------------------- /public/vendor/layer/src/skin/default/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Clago/workflow/d443b2af05d87367154c5b2877cf0cd1f493cdee/public/vendor/layer/src/skin/default/icon.png -------------------------------------------------------------------------------- /public/vendor/layer/src/skin/default/loading-0.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Clago/workflow/d443b2af05d87367154c5b2877cf0cd1f493cdee/public/vendor/layer/src/skin/default/loading-0.gif -------------------------------------------------------------------------------- /public/vendor/layer/src/skin/default/loading-1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Clago/workflow/d443b2af05d87367154c5b2877cf0cd1f493cdee/public/vendor/layer/src/skin/default/loading-1.gif -------------------------------------------------------------------------------- /public/vendor/layer/src/skin/default/loading-2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Clago/workflow/d443b2af05d87367154c5b2877cf0cd1f493cdee/public/vendor/layer/src/skin/default/loading-2.gif -------------------------------------------------------------------------------- /public/vendor/layer/test/demo.html: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | layer-更懂你的web弹窗解决方案 9 | 10 | 22 | 23 | 24 | 25 | 26 | 27 |
28 |
29 |  @Name:layer-v 弹层组件说明
30 |  @Author:贤心
31 |  @Site:http://layer.layui.com/
32 | 
33 | 
34 | 【注意事项】
35 | 一、使用时,请把文件夹layer整个放置在您站点的任何一个目录,只需引入layer.js即可,除jQuery外,其它文件无需再引入。
36 | 二、如果您的js引入是通过合并处理或者您不想采用layer自动获取的绝对路径,您可以通过layer.config()来配置(详见官网API页)
37 | 三、jquery需1.8+
38 | 四、更多使用说明与演示,请参见layer官网。
39 | 五、使用时请务必保留来源,请勿用于违反我国法律法规的web平台。
40 | 六、layer遵循MIT开源协议,将永久性提供无偿服务。
41 | 
42 |
43 | 44 |
45 | 更多示例 46 | 使用文档 47 | 交流反馈 48 | 关于 49 |
50 | 51 | 76 | 77 | -------------------------------------------------------------------------------- /public/vendor/toastr/.gitattributes: -------------------------------------------------------------------------------- 1 | # Set default behaviour, in case users don't have core.autocrlf set. 2 | * text=auto 3 | 4 | # Explicitly declare text files we want to always be normalized and converted 5 | # to native line endings on checkout. 6 | *.c text 7 | *.h text 8 | 9 | # Declare files that will always have CRLF line endings on checkout. 10 | *.sln text eol=crlf 11 | *.csproj text eol=crlf 12 | 13 | # Denote all files that are truly binary and should not be modified. 14 | *.png binary 15 | *.jpg binary -------------------------------------------------------------------------------- /public/vendor/toastr/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | bower_components 3 | 4 | # Ignore Visual Studio Project # 5 | ################### 6 | *.config 7 | *.user 8 | *.csproj 9 | *.gpState 10 | *.sln 11 | *.suo 12 | /bin 13 | /obj 14 | /packages 15 | /Properties 16 | /Scripts 17 | /report 18 | /tests/coverage 19 | 20 | 21 | # Compiled source # 22 | ################### 23 | *.com 24 | *.class 25 | *.dll 26 | *.exe 27 | *.o 28 | *.so 29 | 30 | # Packages # 31 | ############ 32 | # it's better to unpack these files and commit the raw source 33 | # git has its own built in compression methods 34 | *.7z 35 | *.dmg 36 | *.gz 37 | *.iso 38 | *.jar 39 | *.rar 40 | *.tar 41 | *.zip 42 | 43 | # Logs and databases # 44 | ###################### 45 | *.log 46 | *.sql 47 | *.sqlite 48 | 49 | # OS generated files # 50 | ###################### 51 | .DS_Store* 52 | ehthumbs.db 53 | Icon? 54 | Thumbs.db 55 | 56 | # WebStorm # 57 | ###################### 58 | .idea/ -------------------------------------------------------------------------------- /public/vendor/toastr/.jshintrc: -------------------------------------------------------------------------------- 1 | { 2 | "bitwise": true, 3 | "camelcase": true, 4 | "curly": true, 5 | "eqeqeq": true, 6 | "es3": false, 7 | "forin": true, 8 | "freeze": true, 9 | "immed": true, 10 | "indent": 4, 11 | "latedef": "nofunc", 12 | "newcap": true, 13 | "noarg": true, 14 | "noempty": true, 15 | "nonbsp": true, 16 | "nonew": true, 17 | "plusplus": false, 18 | "quotmark": "single", 19 | "undef": true, 20 | "unused": false, 21 | "strict": false, 22 | "maxparams": 10, 23 | "maxdepth": 5, 24 | "maxstatements": 40, 25 | "maxcomplexity": 8, 26 | "maxlen": 120, 27 | 28 | "asi": false, 29 | "boss": false, 30 | "debug": false, 31 | "eqnull": true, 32 | "esnext": false, 33 | "evil": false, 34 | "expr": false, 35 | "funcscope": false, 36 | "globalstrict": false, 37 | "iterator": false, 38 | "lastsemic": false, 39 | "laxbreak": false, 40 | "laxcomma": false, 41 | "loopfunc": true, 42 | "maxerr": false, 43 | "moz": false, 44 | "multistr": false, 45 | "notypeof": false, 46 | "proto": false, 47 | "scripturl": false, 48 | "shadow": false, 49 | "sub": true, 50 | "supernew": false, 51 | "validthis": false, 52 | "noyield": false, 53 | 54 | "browser": true, 55 | "node": true, 56 | 57 | "globals": { 58 | "angular": false, 59 | "$": false, 60 | "module": false, 61 | "require": false 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /public/vendor/toastr/.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | node_js: 3 | - "0.10" 4 | 5 | install: 6 | - npm install -g gulp karma-cli 7 | - npm install 8 | 9 | script: 10 | - npm test 11 | 12 | cache: 13 | directories: 14 | - node_modules 15 | 16 | branches: 17 | only: 18 | - develop 19 | - master 20 | -------------------------------------------------------------------------------- /public/vendor/toastr/karma.conf.js: -------------------------------------------------------------------------------- 1 | // Karma configuration 2 | // Generated on Thu Sep 04 2014 07:41:43 GMT-0400 (EDT) 3 | 4 | module.exports = function (config) { 5 | config.set({ 6 | 7 | // base path that will be used to resolve all patterns (eg. files, exclude) 8 | basePath: '', 9 | 10 | 11 | // frameworks to use 12 | // available frameworks: https://npmjs.org/browse/keyword/karma-adapter 13 | frameworks: ['qunit'], 14 | 15 | // list of files / patterns to load in the browser 16 | files: [ 17 | 'node_modules/jquery/dist/jquery.min.js', 18 | 'build/toastr.css', 19 | 'toastr.js', 20 | 'node_modules/qunitjs/qunit/qunit.js', 21 | 'tests/unit/qunit-helper.js', 22 | 'tests/unit/toastr-tests.js' 23 | ], 24 | 25 | 26 | // list of files to exclude 27 | exclude: [], 28 | 29 | 30 | // preprocess matching files before serving them to the browser 31 | // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor 32 | preprocessors: { 33 | 'toastr.js': 'coverage' 34 | }, 35 | 36 | 37 | // test results reporter to use 38 | // possible values: 'dots', 'progress' 39 | // available reporters: https://npmjs.org/browse/keyword/karma-reporter 40 | reporters: ['progress', 'coverage'], 41 | 42 | coverageReporter: { 43 | type: 'lcov', 44 | dir: 'tests/coverage' 45 | }, 46 | 47 | // web server port 48 | port: 9876, 49 | 50 | 51 | // enable / disable colors in the output (reporters and logs) 52 | colors: true, 53 | 54 | 55 | // level of logging 56 | // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG 57 | logLevel: config.LOG_INFO, 58 | 59 | 60 | // enable / disable watching file and executing tests whenever any file changes 61 | autoWatch: false, 62 | 63 | 64 | // start these browsers 65 | // available browser launchers: https://npmjs.org/browse/keyword/karma-launcher 66 | browsers: ['PhantomJS'], 67 | 68 | 69 | // Continuous Integration mode 70 | // if true, Karma captures browsers, runs the tests and exits 71 | singleRun: true 72 | }); 73 | }; 74 | -------------------------------------------------------------------------------- /public/vendor/toastr/nuget/toastr.1.0.0.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Clago/workflow/d443b2af05d87367154c5b2877cf0cd1f493cdee/public/vendor/toastr/nuget/toastr.1.0.0.nupkg -------------------------------------------------------------------------------- /public/vendor/toastr/nuget/toastr.1.0.0.nuspec: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 1.0.0 5 | John Papa,Hans Fjällemark 6 | John Papa,Hans Fjällemark 7 | http://www.opensource.org/licenses/mit-license.php 8 | https://github.com/CodeSeven/toastr 9 | 10 | 11 | 12 | toastr 13 | toastr 14 | false 15 | 3 Easy Steps: 16 | 17 | 1) Link to toastr.css and toastr-responsive.css 18 | 2) Link to toastr.js 19 | 3) Use toastr to display a toast for info, success, warning or error 20 | 21 | // Display an info toast with no title 22 | toastr.info('Are you the 6 fingered man?') 23 | 24 | *** For other API calls, see the demo 25 | toastr is a Javascript library for Gnome / Growl type non-blocking notifications. jQuery is required. The goal is to create a simple core library that can be customized and extended. 26 | Copyright © 2012 Hans Fjällemark & John Papa. 27 | en-US 28 | toastr, toast, notification, dialog, jquery 29 | 30 | 31 | 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /public/vendor/toastr/nuget/toastr.1.0.1.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Clago/workflow/d443b2af05d87367154c5b2877cf0cd1f493cdee/public/vendor/toastr/nuget/toastr.1.0.1.nupkg -------------------------------------------------------------------------------- /public/vendor/toastr/nuget/toastr.1.0.1.nuspec: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Clago/workflow/d443b2af05d87367154c5b2877cf0cd1f493cdee/public/vendor/toastr/nuget/toastr.1.0.1.nuspec -------------------------------------------------------------------------------- /public/vendor/toastr/nuget/toastr.1.0.2.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Clago/workflow/d443b2af05d87367154c5b2877cf0cd1f493cdee/public/vendor/toastr/nuget/toastr.1.0.2.nupkg -------------------------------------------------------------------------------- /public/vendor/toastr/nuget/toastr.1.0.2.nuspec: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Clago/workflow/d443b2af05d87367154c5b2877cf0cd1f493cdee/public/vendor/toastr/nuget/toastr.1.0.2.nuspec -------------------------------------------------------------------------------- /public/vendor/toastr/nuget/toastr.1.0.3.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Clago/workflow/d443b2af05d87367154c5b2877cf0cd1f493cdee/public/vendor/toastr/nuget/toastr.1.0.3.nupkg -------------------------------------------------------------------------------- /public/vendor/toastr/nuget/toastr.1.0.3.nuspec: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | toastr 5 | 1.0.2 6 | toastr 7 | John Papa,Hans Fjällemark 8 | John Papa,Hans Fjällemark 9 | http://www.opensource.org/licenses/mit-license.php 10 | https://github.com/CodeSeven/toastr 11 | false 12 | 3 Easy Steps: 13 | 14 | 1) Link to toastr.css and toastr-responsive.css 15 | 2) Link to toastr.js 16 | 3) Use toastr to display a toast for info, success, warning or error 17 | 18 | // Display an info toast with no title 19 | toastr.info('Are you the 6 fingered man?') 20 | 21 | *** For other API calls, see the demo 22 | toastr is a Javascript library for Gnome / Growl type non-blocking notifications. jQuery is required. The goal is to create a simple core library that can be customized and extended. 23 | Minor updates for long unbroken string going outside toast and new feature to keep the toast around after hover-off for an extended timeout. 24 | 25 | Set extendedTimeOut and timeOut to 0 to avoid toastr from fading away. 26 | Copyright © 2012 Hans Fjällemark & John Papa. 27 | en-US 28 | toastr, toast, notification, dialog, jquery 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /public/vendor/toastr/nuget/toastr.1.1.0.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Clago/workflow/d443b2af05d87367154c5b2877cf0cd1f493cdee/public/vendor/toastr/nuget/toastr.1.1.0.nupkg -------------------------------------------------------------------------------- /public/vendor/toastr/nuget/toastr.1.1.0.nuspec: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | toastr 5 | 1.1.0 6 | toastr 7 | John Papa,Hans Fjällemark 8 | John Papa,Hans Fjällemark 9 | http://www.opensource.org/licenses/mit-license.php 10 | https://github.com/CodeSeven/toastr 11 | false 12 | 3 Easy Steps: 13 | 14 | (1) Link to toastr.css 15 | (2) Link to toastr.js 16 | (3) Use toastr to display a toast for info, success, warning or error 17 | 18 | // Display an info toast with no title 19 | toastr.info('Are you the 6 fingered man?') 20 | 21 | *** For other API calls, see the demo 22 | toastr is a Javascript library for Gnome / Growl type non-blocking notifications. jQuery is required. The goal is to create a simple core library that can be customized and extended. 23 | Added AMD support (and backwards compat with non AMD), toastr.clear() method, optionsOverride API to be able to override options for each toast, added onclick callback option which fires when a user clicks the toast. Also cleaned CSS, merged CSS files into 1 file, and reduced jQuery dependency to v1.6.3 24 | Copyright © 2012 Hans Fjällemark & John Papa. 25 | en-US 26 | toastr, toast, notification, dialog, jquery 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /public/vendor/toastr/nuget/toastr.1.1.1.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Clago/workflow/d443b2af05d87367154c5b2877cf0cd1f493cdee/public/vendor/toastr/nuget/toastr.1.1.1.nupkg -------------------------------------------------------------------------------- /public/vendor/toastr/nuget/toastr.1.1.1.nuspec: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | toastr 5 | 1.1.1 6 | toastr 7 | John Papa,Hans Fjällemark 8 | John Papa,Hans Fjällemark 9 | http://www.opensource.org/licenses/mit-license.php 10 | https://github.com/CodeSeven/toastr 11 | false 12 | 3 Easy Steps: 13 | 14 | (1) Link to toastr.css 15 | (2) Link to toastr.js 16 | (3) Use toastr to display a toast for info, success, warning or error 17 | 18 | // Display an info toast with no title 19 | toastr.info('Are you the 6 fingered man?') 20 | 21 | *** For other API calls, see the demo 22 | toastr is a Javascript library for Gnome / Growl type non-blocking notifications. jQuery is required. The goal is to create a simple core library that can be customized and extended. 23 | Added AMD support (and backwards compat with non AMD), toastr.clear() method, optionsOverride API to be able to override options for each toast, added onclick callback option which fires when a user clicks the toast. Also cleaned CSS, merged CSS files into 1 file, and reduced jQuery dependency to v1.6.3 24 | Copyright © 2012 Hans Fjällemark & John Papa. 25 | en-US 26 | toastr, toast, notification, dialog, jquery 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /public/vendor/toastr/nuget/toastr.1.1.2.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Clago/workflow/d443b2af05d87367154c5b2877cf0cd1f493cdee/public/vendor/toastr/nuget/toastr.1.1.2.nupkg -------------------------------------------------------------------------------- /public/vendor/toastr/nuget/toastr.1.1.2.nuspec: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | toastr 5 | 1.1.2 6 | toastr 7 | John Papa,Hans Fjällemark 8 | John Papa,Hans Fjällemark 9 | http://www.opensource.org/licenses/mit-license.php 10 | https://github.com/CodeSeven/toastr 11 | false 12 | 3 Easy Steps: 13 | 14 | (1) Link to toastr.css 15 | (2) Link to toastr.js 16 | (3) Use toastr to display a toast for info, success, warning or error 17 | 18 | // Display an info toast with no title 19 | toastr.info('Are you the 6 fingered man?') 20 | 21 | *** For other API calls, see the demo 22 | toastr is a Javascript library for Gnome / Growl type non-blocking notifications. jQuery is required. The goal is to create a simple core library that can be customized and extended. 23 | Added AMD support (and backwards compat with non AMD), toastr.clear() method clears 1 or all toasts, optionsOverride API to be able to override options for each toast, added onclick callback option which fires when a user clicks the toast. Also cleaned CSS, merged CSS files into 1 file, and reduced jQuery dependency to v1.6.3 24 | Copyright © 2012 Hans Fjällemark & John Papa. 25 | en-US 26 | toastr, toast, notification, dialog, jquery 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /public/vendor/toastr/nuget/toastr.1.1.3.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Clago/workflow/d443b2af05d87367154c5b2877cf0cd1f493cdee/public/vendor/toastr/nuget/toastr.1.1.3.nupkg -------------------------------------------------------------------------------- /public/vendor/toastr/nuget/toastr.1.1.4.1.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Clago/workflow/d443b2af05d87367154c5b2877cf0cd1f493cdee/public/vendor/toastr/nuget/toastr.1.1.4.1.nupkg -------------------------------------------------------------------------------- /public/vendor/toastr/nuget/toastr.1.1.4.1.nuspec: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | toastr 5 | 1.1.4.1 6 | toastr 7 | John Papa,Hans Fjällemark 8 | John Papa,Hans Fjällemark 9 | http://www.opensource.org/licenses/mit-license.php 10 | https://github.com/CodeSeven/toastr 11 | http://johnpapa.net/wp-content/images/toastr-icon.png 12 | false 13 | 3 Easy Steps: 14 | 15 | (1) Link to toastr.css 16 | (2) Link to toastr.js 17 | (3) Use toastr to display a toast for info, success, warning or error 18 | 19 | // Display an info toast with no title 20 | toastr.info('Are you the 6 fingered man?') 21 | 22 | *** For other API calls, see the demo 23 | toastr is a Javascript library for Gnome / Growl type non-blocking notifications. jQuery is required. The goal is to create a simple core library that can be customized and extended. 24 | Added AMD support (and backwards compat with non AMD), toastr.clear() method clears 1 or all toasts, optionsOverride API to be able to override options for each toast, added onclick callback option which fires when a user clicks the toast. Also cleaned CSS, merged CSS files into 1 file, and reduced jQuery dependency to v1.6.3 25 | 26 | Fix to the toastr.min.js file 27 | Copyright © 2012 Hans Fjällemark & John Papa. 28 | en-US 29 | toastr, toast, notification, dialog, jquery 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /public/vendor/toastr/nuget/toastr.1.1.4.2.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Clago/workflow/d443b2af05d87367154c5b2877cf0cd1f493cdee/public/vendor/toastr/nuget/toastr.1.1.4.2.nupkg -------------------------------------------------------------------------------- /public/vendor/toastr/nuget/toastr.1.1.4.2.nuspec: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | toastr 5 | 1.1.4.2 6 | toastr 7 | John Papa,Hans Fjällemark 8 | John Papa,Hans Fjällemark 9 | http://www.opensource.org/licenses/mit-license.php 10 | https://github.com/CodeSeven/toastr 11 | http://johnpapa.net/wp-content/images/toastr-icon.png 12 | false 13 | 3 Easy Steps: 14 | 15 | (1) Link to toastr.css 16 | (2) Link to toastr.js 17 | (3) Use toastr to display a toast for info, success, warning or error 18 | 19 | // Display an info toast with no title 20 | toastr.info('Are you the 6 fingered man?') 21 | 22 | *** For other API calls, see the demo 23 | toastr is a Javascript library for Gnome / Growl type non-blocking notifications. jQuery is required. The goal is to create a simple core library that can be customized and extended. 24 | Added AMD support (and backwards compat with non AMD), toastr.clear() method clears 1 or all toasts, optionsOverride API to be able to override options for each toast, added onclick callback option which fires when a user clicks the toast. Also cleaned CSS, merged CSS files into 1 file, and reduced jQuery dependency to v1.6.3 25 | 26 | Fix to the toastr.min.js file 27 | Copyright © 2012 Hans Fjällemark & John Papa. 28 | en-US 29 | toastr, toast, notification, dialog, jquery 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /public/vendor/toastr/nuget/toastr.1.1.4.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Clago/workflow/d443b2af05d87367154c5b2877cf0cd1f493cdee/public/vendor/toastr/nuget/toastr.1.1.4.nupkg -------------------------------------------------------------------------------- /public/vendor/toastr/nuget/toastr.1.1.4.nuspec: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | toastr 5 | 1.1.4 6 | toastr 7 | John Papa,Hans Fjällemark 8 | John Papa,Hans Fjällemark 9 | http://www.opensource.org/licenses/mit-license.php 10 | https://github.com/CodeSeven/toastr 11 | http://johnpapa.net/wp-content/images/toastr-icon.png 12 | false 13 | 3 Easy Steps: 14 | 15 | (1) Link to toastr.css 16 | (2) Link to toastr.js 17 | (3) Use toastr to display a toast for info, success, warning or error 18 | 19 | // Display an info toast with no title 20 | toastr.info('Are you the 6 fingered man?') 21 | 22 | *** For other API calls, see the demo 23 | toastr is a Javascript library for Gnome / Growl type non-blocking notifications. jQuery is required. The goal is to create a simple core library that can be customized and extended. 24 | Added AMD support (and backwards compat with non AMD), toastr.clear() method clears 1 or all toasts, optionsOverride API to be able to override options for each toast, added onclick callback option which fires when a user clicks the toast. Also cleaned CSS, merged CSS files into 1 file, and reduced jQuery dependency to v1.6.3 25 | 26 | Fix to the toastr.min.js file 27 | Copyright © 2012 Hans Fjällemark & John Papa. 28 | en-US 29 | toastr, toast, notification, dialog, jquery 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /public/vendor/toastr/nuget/toastr.1.1.5.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Clago/workflow/d443b2af05d87367154c5b2877cf0cd1f493cdee/public/vendor/toastr/nuget/toastr.1.1.5.nupkg -------------------------------------------------------------------------------- /public/vendor/toastr/nuget/toastr.1.1.5.nuspec: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | toastr 5 | 1.1.5 6 | toastr 7 | John Papa,Hans Fjällemark 8 | John Papa,Hans Fjällemark 9 | http://www.opensource.org/licenses/mit-license.php 10 | https://github.com/CodeSeven/toastr 11 | http://johnpapa.net/wp-content/images/toastr-icon.png 12 | false 13 | 3 Easy Steps: 14 | 15 | (1) Link to toastr.css 16 | (2) Link to toastr.js 17 | (3) Use toastr to display a toast for info, success, warning or error 18 | 19 | // Display an info toast with no title 20 | toastr.info('Are you the 6 fingered man?') 21 | 22 | *** For other API calls, see the demo 23 | toastr is a Javascript library for Gnome / Growl type non-blocking notifications. jQuery is required. The goal is to create a simple core library that can be customized and extended. 24 | Now using SemVer for JavaScript files. 25 | Copyright © 2012 Hans Fjällemark & John Papa. 26 | en-US 27 | toastr, toast, notification, dialog, jquery 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /public/vendor/toastr/nuget/toastr.1.2.0.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Clago/workflow/d443b2af05d87367154c5b2877cf0cd1f493cdee/public/vendor/toastr/nuget/toastr.1.2.0.nupkg -------------------------------------------------------------------------------- /public/vendor/toastr/nuget/toastr.1.2.0.nuspec: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | toastr 5 | 1.2.0 6 | toastr 7 | John Papa,Hans Fjällemark 8 | John Papa,Hans Fjällemark 9 | http://www.opensource.org/licenses/mit-license.php 10 | https://github.com/CodeSeven/toastr 11 | http://johnpapa.net/wp-content/images/toastr-icon.png 12 | false 13 | 3 Easy Steps: 14 | 15 | (1) Link to toastr.css 16 | (2) Link to toastr.js 17 | (3) Use toastr to display a toast for info, success, warning or error 18 | 19 | // Display an info toast with no title 20 | toastr.info('Are you the 6 fingered man?') 21 | 22 | *** For other API calls, see the demo 23 | toastr is a Javascript library for Gnome / Growl type non-blocking notifications. jQuery is required. The goal is to create a simple core library that can be customized and extended. 24 | Added getContainer(). 25 | Fixed clear() bug. 26 | Removed semver from file name. 27 | Copyright © 2012 Hans Fjällemark & John Papa. 28 | en-US 29 | toastr, toast, notification, dialog, jquery 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /public/vendor/toastr/nuget/toastr.1.2.1.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Clago/workflow/d443b2af05d87367154c5b2877cf0cd1f493cdee/public/vendor/toastr/nuget/toastr.1.2.1.nupkg -------------------------------------------------------------------------------- /public/vendor/toastr/nuget/toastr.1.2.1.nuspec: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | toastr 5 | 1.2.1 6 | toastr 7 | John Papa,Hans Fjällemark 8 | John Papa,Hans Fjällemark 9 | http://www.opensource.org/licenses/mit-license.php 10 | https://github.com/CodeSeven/toastr 11 | http://johnpapa.net/wp-content/images/toastr-icon.png 12 | false 13 | 3 Easy Steps: 14 | 15 | (1) Link to toastr.css 16 | (2) Link to toastr.js 17 | (3) Use toastr to display a toast for info, success, warning or error 18 | 19 | // Display an info toast with no title 20 | toastr.info('Are you the 6 fingered man?') 21 | 22 | *** For other API calls, see the demo 23 | toastr is a Javascript library for Gnome / Growl type non-blocking notifications. jQuery is required. The goal is to create a simple core library that can be customized and extended. 24 | Added getContainer(). 25 | Fixed clear() bug. 26 | Removed semver from file name. 27 | Copyright © 2012 Hans Fjällemark & John Papa. 28 | en-US 29 | toastr, toast, notification, dialog, jquery 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /public/vendor/toastr/nuget/toastr.1.2.2.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Clago/workflow/d443b2af05d87367154c5b2877cf0cd1f493cdee/public/vendor/toastr/nuget/toastr.1.2.2.nupkg -------------------------------------------------------------------------------- /public/vendor/toastr/nuget/toastr.1.2.2.nuspec: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | toastr 5 | 1.2.2 6 | toastr 7 | John Papa,Hans Fjällemark 8 | John Papa,Hans Fjällemark 9 | http://www.opensource.org/licenses/mit-license.php 10 | https://github.com/CodeSeven/toastr 11 | http://johnpapa.net/wp-content/images/toastr-icon.png 12 | false 13 | 3 Easy Steps: 14 | 15 | (1) Link to toastr.css 16 | (2) Link to toastr.js 17 | (3) Use toastr to display a toast for info, success, warning or error 18 | 19 | // Display an info toast with no title 20 | toastr.info('Are you the 6 fingered man?') 21 | 22 | *** For other API calls, see the demo 23 | toastr is a Javascript library for Gnome / Growl type non-blocking notifications. jQuery is required. The goal is to create a simple core library that can be customized and extended. 24 | Added getContainer(). 25 | Fixed clear() bug. 26 | Removed semver from file name. 27 | Copyright © 2012 Hans Fjällemark & John Papa. 28 | en-US 29 | toastr, toast, notification, dialog, jquery 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /public/vendor/toastr/nuget/toastr.1.3.0.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Clago/workflow/d443b2af05d87367154c5b2877cf0cd1f493cdee/public/vendor/toastr/nuget/toastr.1.3.0.nupkg -------------------------------------------------------------------------------- /public/vendor/toastr/nuget/toastr.1.3.0.nuspec: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | toastr 5 | 1.3.0 6 | toastr 7 | John Papa,Hans Fjällemark 8 | John Papa,Hans Fjällemark 9 | http://www.opensource.org/licenses/mit-license.php 10 | https://github.com/CodeSeven/toastr 11 | http://johnpapa.net/wp-content/images/toastr-icon.png 12 | false 13 | 3 Easy Steps: 14 | 15 | (1) Link to toastr.css 16 | (2) Link to toastr.js 17 | (3) Use toastr to display a toast for info, success, warning or error 18 | 19 | // Display an info toast with no title 20 | toastr.info('Are you the 6 fingered man?') 21 | 22 | *** For other API calls, see the demo 23 | toastr is a Javascript library for Gnome / Growl type non-blocking notifications. jQuery is required. The goal is to create a simple core library that can be customized and extended. 24 | Added onFadeIn and onFadeOut callbacks. 25 | toastr.options.onFadeIn = function() { console.log('hello'); } 26 | Added option <code>newestOnTop</code> to show toasts in oldest or newest first order. 27 | toastr.options.newestOnTop = false; 28 | Fixed margins on full width toasts 29 | Added LESS file. 30 | Added min file for JS and CSS 31 | Added missing vendor prefixes in CSS. 32 | Various minor bug fixes. 33 | Added unit tests for new features. 34 | Copyright © 2012 Hans Fjällemark & John Papa. 35 | en-US 36 | toastr, toast, notification, dialog, jquery 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | -------------------------------------------------------------------------------- /public/vendor/toastr/nuget/toastr.1.3.1.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Clago/workflow/d443b2af05d87367154c5b2877cf0cd1f493cdee/public/vendor/toastr/nuget/toastr.1.3.1.nupkg -------------------------------------------------------------------------------- /public/vendor/toastr/nuget/toastr.2.0.0-rc1.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Clago/workflow/d443b2af05d87367154c5b2877cf0cd1f493cdee/public/vendor/toastr/nuget/toastr.2.0.0-rc1.nupkg -------------------------------------------------------------------------------- /public/vendor/toastr/nuget/toastr.2.0.1.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Clago/workflow/d443b2af05d87367154c5b2877cf0cd1f493cdee/public/vendor/toastr/nuget/toastr.2.0.1.nupkg -------------------------------------------------------------------------------- /public/vendor/toastr/nuget/toastr.2.0.1.nuspec: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | toastr 5 | 2.0.1 6 | toastr 7 | John Papa,Hans Fjällemark 8 | John Papa,Hans Fjällemark 9 | http://www.opensource.org/licenses/mit-license.php 10 | http://toastrjs.com/ 11 | http://johnpapa.net/wp-content/images/toastr-icon.png 12 | false 13 | 3 Easy Steps: 14 | 15 | (1) Link to toastr.css 16 | (2) Link to toastr.js 17 | (3) Use toastr to display a toast for info, success, warning or error 18 | 19 | // Display an info toast with no title 20 | toastr.info('Are you the 6 fingered man?') 21 | 22 | *** For other API calls, see the demo 23 | Toastr is a JavaScript library for non-blocking notifications. jQuery is required. The goal is to create a simple core library that can be customized and extended. 24 | The following animations options have been deprecated and should be replaced: 25 | 26 | Replace options.fadeIn with options.showDuration 27 | Replace options.onFadeIn with options.onShown 28 | Replace options.fadeOut with options.hideDuration 29 | Replace options.onFadeOut with options.onHidden 30 | 31 | Optional 'close' button, bug fixes, and improved responsive design. 32 | 33 | For other changes, see http://toastrjs.com 34 | Copyright © 2012 Hans Fjällemark & John Papa. 35 | en-US 36 | toastr, toast, notification, dialog, jquery 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | -------------------------------------------------------------------------------- /public/vendor/toastr/nuget/toastr.2.0.2.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Clago/workflow/d443b2af05d87367154c5b2877cf0cd1f493cdee/public/vendor/toastr/nuget/toastr.2.0.2.nupkg -------------------------------------------------------------------------------- /public/vendor/toastr/nuget/toastr.2.0.2.nuspec: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | toastr 5 | 2.0.2 6 | toastr 7 | John Papa,Hans Fjällemark 8 | John Papa,Hans Fjällemark 9 | http://www.opensource.org/licenses/mit-license.php 10 | http://toastrjs.com/ 11 | http://johnpapa.net/wp-content/images/toastr-icon.png 12 | false 13 | 3 Easy Steps: 14 | 15 | (1) Link to toastr.css 16 | (2) Link to toastr.js 17 | (3) Use toastr to display a toast for info, success, warning or error 18 | 19 | // Display an info toast with no title 20 | toastr.info('Are you the 6 fingered man?') 21 | 22 | *** For other API calls, see the demo 23 | Toastr is a JavaScript library for non-blocking notifications. jQuery is required. The goal is to create a simple core library that can be customized and extended. 24 | Change log: https://github.com/CodeSeven/toastr/blob/master/CHANGELOG.md 25 | Copyright © 2012-2014 Hans Fjällemark & John Papa. 26 | en-US 27 | toastr, toast, notification, dialog, jquery 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /public/vendor/toastr/nuget/toastr.2.0.3.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Clago/workflow/d443b2af05d87367154c5b2877cf0cd1f493cdee/public/vendor/toastr/nuget/toastr.2.0.3.nupkg -------------------------------------------------------------------------------- /public/vendor/toastr/nuget/toastr.2.0.3.nuspec: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | toastr 5 | 2.0.3 6 | toastr 7 | John Papa,Hans Fjällemark 8 | John Papa,Hans Fjällemark 9 | http://www.opensource.org/licenses/mit-license.php 10 | http://toastrjs.com/ 11 | http://johnpapa.net/wp-content/images/toastr-icon.png 12 | false 13 | 3 Easy Steps: 14 | 15 | (1) Link to toastr.css 16 | (2) Link to toastr.js 17 | (3) Use toastr to display a toast for info, success, warning or error 18 | 19 | // Display an info toast with no title 20 | toastr.info('Are you the 6 fingered man?') 21 | 22 | *** For other API calls, see the demo 23 | Toastr is a JavaScript library for non-blocking notifications. jQuery is required. The goal is to create a simple core library that can be customized and extended. 24 | Change log: https://github.com/CodeSeven/toastr/blob/master/CHANGELOG.md 25 | Copyright © 2012-2014 Hans Fjällemark & John Papa. 26 | en-US 27 | toastr, toast, notification, dialog, jquery 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /public/vendor/toastr/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "toastr", 3 | "filename": "build/toastr.min.js", 4 | "main": "toastr.js", 5 | "style": "build/toastr.min.css", 6 | "version": "2.1.3", 7 | "description": "ToastrJS is a JavaScript library for Gnome / Growl type non-blocking notifications. jQuery is required. The goal is to create a simple core library that can be customized and extended.", 8 | "homepage": "http://www.toastrjs.com", 9 | "keywords": [ 10 | "Toastr", 11 | "ToastrJS", 12 | "toastr.js" 13 | ], 14 | "maintainers": [ 15 | { 16 | "name": "John Papa", 17 | "web": "http://www.johnpapa.net", 18 | "twitter": "@john_papa" 19 | }, 20 | { 21 | "name": "Tim Ferrell", 22 | "web": "https://twitter.com/ferrell_tim", 23 | "twitter": "@ferrell_tim" 24 | } 25 | ], 26 | "repository": { 27 | "type": "git", 28 | "url": "git://github.com/CodeSeven/toastr.git" 29 | }, 30 | "bugs": "http://stackoverflow.com/questions/tagged/toastr", 31 | "licenses": [ 32 | { 33 | "type": "MIT", 34 | "url": "http://www.opensource.org/licenses/mit-license.php" 35 | } 36 | ], 37 | "dependencies": { 38 | "jquery": ">=1.12.0" 39 | }, 40 | "devDependencies": { 41 | "gulp": "^3.8.10", 42 | "gulp-bytediff": "^0.2.0", 43 | "gulp-jscs": "^1.3.0", 44 | "gulp-jshint": "^1.9.0", 45 | "gulp-less": "^3.0.3", 46 | "gulp-load-plugins": "^0.7.1", 47 | "gulp-load-utils": "0.0.4", 48 | "gulp-minify-css": "^0.3.11", 49 | "gulp-rename": "^1.2.0", 50 | "gulp-sourcemaps": "^1.2.8", 51 | "gulp-task-listing": "^0.3.0", 52 | "gulp-uglify": "^1.0.1", 53 | "gulp-util": "^3.0.1", 54 | "jquery": "^2.1.1", 55 | "jshint-stylish": "^1.0.0", 56 | "karma": "^0.12.25", 57 | "karma-coverage": "^0.2.6", 58 | "karma-phantomjs-launcher": "^0.1.4", 59 | "karma-qunit": "^0.1.3", 60 | "merge-stream": "^0.1.6", 61 | "phantomjs": "^1.9.7-15", 62 | "plato": "^1.2.2", 63 | "qunitjs": "~1.14.0" 64 | }, 65 | "scripts": { 66 | "test": "gulp test" 67 | } 68 | } 69 | -------------------------------------------------------------------------------- /public/vendor/toastr/release checklist.md: -------------------------------------------------------------------------------- 1 | Toastr Release Checklist 2 | 3 | 1. Update Toastr Version 4 | * toastr.js 5 | * bower.json (toastr-bower repo) 6 | * package.json 7 | * nuget versions and dependency versions 8 | * readme file for github repo 9 | * Consider HotTowel VSIX 10 | 2. Gulp 11 | * run main demo 12 | * `gulp analyze` 13 | * `gulp test` 14 | * `gulp` 15 | 3. Nuget 16 | * Copy new files in 17 | * Build 18 | * Test 19 | 4. CDNJS 20 | * Update CDNJS 21 | 5. Update Website with New Downloads 22 | 6. Publish Bower 23 | * Include License and Readme 24 | * Test Locally 25 | * Update Github repo toastr-bower 26 | * Github tag 27 | * Register with Bower 28 | 7. Publish Nugets 29 | 8. Release on Github 30 | * Tag with semver 31 | * Attach all artifacts 32 | 9. Blog post -------------------------------------------------------------------------------- /public/vendor/toastr/tests/toastr-tests.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | toastr QUnit Tests 5 | 6 | 7 | 8 | 9 |
10 |

toastr QUnit Tests

11 |

12 |
13 |

14 |
    15 |
    test markup, will be hidden
    16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /public/vendor/toastr/tests/unit/qunit-helper.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Hack to expose spec count from QUnit to Karma 3 | */ 4 | 5 | var testCount = 0; 6 | var qunitTest = QUnit.test; 7 | QUnit.test = window.test = function () { 8 | testCount += 1; 9 | qunitTest.apply(this, arguments); 10 | }; 11 | QUnit.begin(function (args) { 12 | args.totalTests = testCount; 13 | }); 14 | -------------------------------------------------------------------------------- /public/vendor/toastr/tests/unit/x.js: -------------------------------------------------------------------------------- 1 | test('test test', 1, function () { 2 | ok(1 === 1, '1 equals 1'); 3 | }); 4 | -------------------------------------------------------------------------------- /public/vendor/toastr/toastr-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Clago/workflow/d443b2af05d87367154c5b2877cf0cd1f493cdee/public/vendor/toastr/toastr-icon.png -------------------------------------------------------------------------------- /resources/assets/js/app.js: -------------------------------------------------------------------------------- 1 | 2 | /** 3 | * First we will load all of this project's JavaScript dependencies which 4 | * includes Vue and other libraries. It is a great starting point when 5 | * building robust, powerful web applications using Vue and Laravel. 6 | */ 7 | 8 | require('./bootstrap'); 9 | 10 | window.Vue = require('vue'); 11 | 12 | /** 13 | * Next, we will create a fresh Vue application instance and attach it to 14 | * the page. Then, you may begin adding components to this application 15 | * or customize the JavaScript scaffolding to fit your unique needs. 16 | */ 17 | 18 | Vue.component('example', require('./components/Example.vue')); 19 | 20 | const app = new Vue({ 21 | el: '#app' 22 | }); 23 | -------------------------------------------------------------------------------- /resources/assets/js/bootstrap.js: -------------------------------------------------------------------------------- 1 | 2 | window._ = require('lodash'); 3 | 4 | /** 5 | * We'll load jQuery and the Bootstrap jQuery plugin which provides support 6 | * for JavaScript based Bootstrap features such as modals and tabs. This 7 | * code may be modified to fit the specific needs of your application. 8 | */ 9 | 10 | try { 11 | window.$ = window.jQuery = require('jquery'); 12 | 13 | require('bootstrap-sass'); 14 | } catch (e) {} 15 | 16 | /** 17 | * We'll load the axios HTTP library which allows us to easily issue requests 18 | * to our Laravel back-end. This library automatically handles sending the 19 | * CSRF token as a header based on the value of the "XSRF" token cookie. 20 | */ 21 | 22 | window.axios = require('axios'); 23 | 24 | window.axios.defaults.headers.common['X-CSRF-TOKEN'] = window.Laravel.csrfToken; 25 | window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; 26 | 27 | /** 28 | * Echo exposes an expressive API for subscribing to channels and listening 29 | * for events that are broadcast by Laravel. Echo and event broadcasting 30 | * allows your team to easily build robust real-time web applications. 31 | */ 32 | 33 | // import Echo from 'laravel-echo' 34 | 35 | // window.Pusher = require('pusher-js'); 36 | 37 | // window.Echo = new Echo({ 38 | // broadcaster: 'pusher', 39 | // key: 'your-pusher-key' 40 | // }); 41 | -------------------------------------------------------------------------------- /resources/assets/js/components/Example.vue: -------------------------------------------------------------------------------- 1 | 16 | 17 | 24 | -------------------------------------------------------------------------------- /resources/assets/sass/_variables.scss: -------------------------------------------------------------------------------- 1 | 2 | // Body 3 | $body-bg: #f5f8fa; 4 | 5 | // Borders 6 | $laravel-border-color: darken($body-bg, 10%); 7 | $list-group-border: $laravel-border-color; 8 | $navbar-default-border: $laravel-border-color; 9 | $panel-default-border: $laravel-border-color; 10 | $panel-inner-border: $laravel-border-color; 11 | 12 | // Brands 13 | $brand-primary: #3097D1; 14 | $brand-info: #8eb4cb; 15 | $brand-success: #2ab27b; 16 | $brand-warning: #cbb956; 17 | $brand-danger: #bf5329; 18 | 19 | // Typography 20 | $icon-font-path: "~bootstrap-sass/assets/fonts/bootstrap/"; 21 | $font-family-sans-serif: "Raleway", sans-serif; 22 | $font-size-base: 14px; 23 | $line-height-base: 1.6; 24 | $text-color: #636b6f; 25 | 26 | // Navbar 27 | $navbar-default-bg: #fff; 28 | 29 | // Buttons 30 | $btn-default-color: $text-color; 31 | 32 | // Inputs 33 | $input-border: lighten($text-color, 40%); 34 | $input-border-focus: lighten($brand-primary, 25%); 35 | $input-color-placeholder: lighten($text-color, 30%); 36 | 37 | // Panels 38 | $panel-default-heading-bg: #fff; 39 | -------------------------------------------------------------------------------- /resources/assets/sass/app.scss: -------------------------------------------------------------------------------- 1 | 2 | // Fonts 3 | @import url(https://fonts.googleapis.com/css?family=Raleway:300,400,600); 4 | 5 | // Variables 6 | @import "variables"; 7 | 8 | // Bootstrap 9 | @import "node_modules/bootstrap-sass/assets/stylesheets/bootstrap"; 10 | -------------------------------------------------------------------------------- /resources/lang/en/auth.php: -------------------------------------------------------------------------------- 1 | 'These credentials do not match our records.', 17 | 'throttle' => 'Too many login attempts. Please try again in :seconds seconds.', 18 | 19 | ]; 20 | -------------------------------------------------------------------------------- /resources/lang/en/pagination.php: -------------------------------------------------------------------------------- 1 | '« Previous', 17 | 'next' => 'Next »', 18 | 19 | ]; 20 | -------------------------------------------------------------------------------- /resources/lang/en/passwords.php: -------------------------------------------------------------------------------- 1 | 'Passwords must be at least six characters and match the confirmation.', 17 | 'reset' => 'Your password has been reset!', 18 | 'sent' => 'We have e-mailed your password reset link!', 19 | 'token' => 'This password reset token is invalid.', 20 | 'user' => "We can't find a user with that e-mail address.", 21 | 22 | ]; 23 | -------------------------------------------------------------------------------- /resources/views/auth/passwords/email.blade.php: -------------------------------------------------------------------------------- 1 | @extends('layouts.app') 2 | 3 | @section('content') 4 |
    5 |
    6 |
    7 |
    8 |
    Reset Password
    9 |
    10 | @if (session('status')) 11 |
    12 | {{ session('status') }} 13 |
    14 | @endif 15 | 16 |
    17 | {{ csrf_field() }} 18 | 19 |
    20 | 21 | 22 |
    23 | 24 | 25 | @if ($errors->has('email')) 26 | 27 | {{ $errors->first('email') }} 28 | 29 | @endif 30 |
    31 |
    32 | 33 |
    34 |
    35 | 38 |
    39 |
    40 |
    41 |
    42 |
    43 |
    44 |
    45 |
    46 | @endsection 47 | -------------------------------------------------------------------------------- /resources/views/dept/create.blade.php: -------------------------------------------------------------------------------- 1 | @extends('layouts.app') 2 | 3 | @section('content') 4 |
    5 |
    6 |

    添加部门

    7 |
    8 |
    9 | 10 | 11 |
    12 | 13 |
    14 | 15 | 21 |
    22 | 23 |
    24 | 25 | 31 |
    32 | 33 |
    34 | 35 | 41 |
    42 | 43 |
    44 | 45 | 46 |
    47 | 48 | {{csrf_field()}} 49 | 50 | 51 |
    52 |
    53 |
    54 | @endsection 55 | -------------------------------------------------------------------------------- /resources/views/dept/edit.blade.php: -------------------------------------------------------------------------------- 1 | @extends('layouts.app') 2 | 3 | @section('content') 4 |
    5 |
    6 |

    编辑部门

    7 |
    8 |
    9 | 10 | 11 |
    12 | 13 |
    14 | 15 | 21 |
    22 | 23 |
    24 | 25 | 31 |
    32 | 33 |
    34 | 35 | 41 |
    42 | 43 |
    44 | 45 | 46 |
    47 | 48 | {{csrf_field()}} 49 | {{method_field('PUT')}} 50 | 51 | 52 |
    53 |
    54 |
    55 | @endsection 56 | -------------------------------------------------------------------------------- /resources/views/dept/index.blade.php: -------------------------------------------------------------------------------- 1 | @extends('layouts.app') 2 | 3 | @section('content') 4 |
    5 |
    6 |
    7 |

    8 | 添加部门 9 |

    10 | 11 |
    12 |
    部门列表
    13 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | @foreach($depts as $v) 28 | 29 | 32 | 39 | 46 | 47 | 51 | 52 | @endforeach 53 | 54 |
    部门部门主管部门经理创建时间操作
    30 | {{$v->html}}{{$v->dept_name}} 31 | 33 | @if($v->director) 34 | {{$v->director->name}} 35 | @else 36 | -- 37 | @endif 38 | 40 | @if($v->manager) 41 | {{$v->manager->name}} 42 | @else 43 | -- 44 | @endif 45 | {{$v->created_at}} 48 | 编辑 49 | 删除 50 |
    55 |
    56 |
    57 |
    58 |
    59 | @endsection 60 | -------------------------------------------------------------------------------- /resources/views/emails/notify.blade.php: -------------------------------------------------------------------------------- 1 | {{$content}} -------------------------------------------------------------------------------- /resources/views/emp/create.blade.php: -------------------------------------------------------------------------------- 1 | @extends('layouts.app') 2 | 3 | @section('content') 4 |
    5 |
    6 |

    添加员工

    7 |
    8 |
    9 | 10 | 11 |
    12 | 13 |
    14 | 15 | 16 |
    17 | 18 |
    19 | 20 | 21 |
    22 | 23 |
    24 | 25 | 31 |
    32 | 33 |
    34 | 35 | 36 |
    37 | 38 |
    39 | 40 | 43 | 46 |
    47 | 48 | {{csrf_field()}} 49 | 50 | 51 |
    52 |
    53 |
    54 | @endsection 55 | -------------------------------------------------------------------------------- /resources/views/emp/edit.blade.php: -------------------------------------------------------------------------------- 1 | @extends('layouts.app') 2 | 3 | @section('content') 4 |
    5 |
    6 |

    编辑员工

    7 |
    8 |
    9 | 10 | 11 |
    12 | 13 |
    14 | 15 | 16 |
    17 | 18 |
    19 | 20 | 21 |
    22 | 23 |
    24 | 25 | 26 |
    27 | 28 |
    29 | 30 | 36 |
    37 | 38 |
    39 | 40 | 43 | 46 |
    47 | 48 | {{csrf_field()}} 49 | {{method_field('PUT')}} 50 | 51 | 52 |
    53 |
    54 |
    55 | @endsection 56 | -------------------------------------------------------------------------------- /resources/views/emp/index.blade.php: -------------------------------------------------------------------------------- 1 | @extends('layouts.app') 2 | 3 | @section('content') 4 |
    5 |
    6 |

    7 | 添加员工 8 |

    9 |
    10 |
    11 |
    员工列表
    12 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | @foreach($emps as $v) 28 | 29 | 30 | 37 | 38 | 41 | 42 | 46 | 47 | @endforeach 48 | 49 |
    姓名部门邮箱是否离职创建时间操作
    {{$v->name}} 31 | @if($v->dept) 32 | {{$v->dept->dept_name}} 33 | @else 34 | 暂无部门 35 | @endif 36 | {{$v->email}} 39 | {{$v->leave?'离职':'在职'}} 40 | {{$v->created_at}} 43 | 编辑 44 | 删除 45 |
    50 |
    51 |
    52 |
    53 |
    54 | @endsection 55 | -------------------------------------------------------------------------------- /resources/views/entry/create.blade.php: -------------------------------------------------------------------------------- 1 | @extends('layouts.app') 2 | 3 | @section('content') 4 |
    5 |
    6 |

    {{$flow->flow_name}}

    7 |
    8 |
    9 | 10 | 11 |
    12 |
    13 | 14 | 17 |
    18 | 19 | {!! $form_html !!} 20 | 21 | {{csrf_field()}} 22 | 23 | 24 |
    25 |
    26 |
    27 | @endsection 28 | -------------------------------------------------------------------------------- /resources/views/entry/edit.blade.php: -------------------------------------------------------------------------------- 1 | @extends('layouts.app') 2 | 3 | @section('content') 4 |
    5 |
    6 |

    {{$entry->title}}

    7 |
    8 |
    9 | 10 | 11 |
    12 |
    13 | 14 | 17 |
    18 | 19 | {!! $form_html !!} 20 | 21 | {{csrf_field()}} 22 | {{method_field('PUT')}} 23 | 24 | 25 |
    26 |
    27 |
    28 | @endsection 29 | -------------------------------------------------------------------------------- /resources/views/entry/show.blade.php: -------------------------------------------------------------------------------- 1 | @extends('layouts.app') 2 | 3 | @section('content') 4 |
    5 |
    6 |

    {{$entry->title}}

    7 |
    8 |
    9 | 10 | 11 |
    12 |
    13 | 14 | 17 |
    18 | 19 | {!! $form_html !!} 20 | 21 | {{csrf_field()}} 22 | {{method_field('PUT')}} 23 | 24 | 25 |
    26 |
    27 |
    28 | 29 | 36 | @endsection 37 | -------------------------------------------------------------------------------- /resources/views/flow/create.blade.php: -------------------------------------------------------------------------------- 1 | @extends('layouts.app') 2 | 3 | @section('content') 4 |
    5 |
    6 |

    新建流程

    7 |
    8 |
    9 | 10 | 11 |
    12 | 13 |
    14 | 15 | 16 |
    17 | 18 |
    19 | 20 | 26 |
    27 | 28 |
    29 | 30 | 35 |
    36 | 37 |
    38 | 39 | 42 | 45 |
    46 | 47 | {{csrf_field()}} 48 | 49 |
    50 |
    51 |
    52 | @endsection 53 | -------------------------------------------------------------------------------- /resources/views/flow/edit.blade.php: -------------------------------------------------------------------------------- 1 | @extends('layouts.app') 2 | 3 | @section('content') 4 |
    5 |
    6 |

    编辑流程

    7 |
    8 |
    9 | 10 | 11 |
    12 | 13 |
    14 | 15 | 16 |
    17 | 18 |
    19 | 20 | 26 |
    27 | 28 |
    29 | 30 | 35 |
    36 | 37 |
    38 | 39 | 42 | 45 |
    46 | 47 | {{csrf_field()}} 48 | {{method_field('PUT')}} 49 | 50 |
    51 |
    52 |
    53 | @endsection 54 | -------------------------------------------------------------------------------- /resources/views/flow/index.blade.php: -------------------------------------------------------------------------------- 1 | @extends('layouts.app') 2 | 3 | @section('content') 4 |
    5 |

    6 | 创建流程 7 |

    8 |
    9 |
    10 |
    11 |
    工作流列表
    12 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | @foreach($flows as $v) 27 | 28 | 29 | 32 | 35 | 36 | 41 | 42 | @endforeach 43 | 44 |
    流程名称模板名称状态创建时间操作
    {{$v->flow_name}} 30 | {{$v->template?$v->template->template_name:'暂无模板'}} 31 | 33 | {{$v->is_publish?'已发布':'未发布'}} 34 | {{$v->created_at}} 37 | 流程图 38 | 编辑 39 | 删除 40 |
    45 |
    46 |
    47 |
    48 |
    49 | @endsection 50 | -------------------------------------------------------------------------------- /resources/views/flow/show.blade.php: -------------------------------------------------------------------------------- 1 | @extends('layouts.app') 2 | 3 | @section('content') 4 |
    5 |
    6 |
    7 |
    8 |
    9 | {{$flow->flow_name}} 工作流程图 10 | 11 | 返回流程列表 12 |
    13 | 14 |
    15 |
    16 |
    17 |
    18 |
    19 |
    20 |
    21 | 22 | 23 | 24 | 25 | 49 | @endsection 50 | -------------------------------------------------------------------------------- /resources/views/partials/condition.blade.php: -------------------------------------------------------------------------------- 1 | {"2":{"desc":"不符合条件时的提示","option":"