├── .env.example ├── .gitattributes ├── .gitignore ├── LICENSE.txt ├── README.md ├── application ├── .htaccess ├── command.php ├── common.php ├── handler │ └── Email.php ├── index │ ├── controller │ │ ├── Auth.php │ │ ├── Base.php │ │ ├── Bug.php │ │ ├── Dashboard.php │ │ ├── Error.php │ │ ├── Index.php │ │ ├── Profile.php │ │ ├── Project.php │ │ ├── Test.php │ │ └── User.php │ ├── model │ │ ├── BaseModel.php │ │ ├── Bug.php │ │ ├── BugLog.php │ │ ├── Project.php │ │ ├── ProjectModule.php │ │ ├── ProjectUser.php │ │ ├── ProjectVersion.php │ │ ├── User.php │ │ └── UserLog.php │ ├── service │ │ ├── Auth.php │ │ ├── Bug.php │ │ ├── BugEmailTemplate.php │ │ ├── Profile.php │ │ ├── Project.php │ │ ├── ProjectEmailTemplate.php │ │ ├── ProjectModule.php │ │ ├── ProjectVersion.php │ │ └── ServiceResult.php │ ├── validate │ │ ├── BaseValidate.php │ │ ├── Bug.php │ │ ├── Project.php │ │ ├── ProjectModule.php │ │ ├── ProjectVersion.php │ │ └── User.php │ └── view │ │ ├── bug │ │ ├── add.html │ │ ├── edit.html │ │ ├── handle.html │ │ └── index.html │ │ ├── dashboard │ │ └── index.html │ │ ├── extend │ │ ├── bootstrap.html │ │ └── main.html │ │ ├── index │ │ └── index.html │ │ ├── profile │ │ └── index.html │ │ ├── project │ │ ├── edit.html │ │ ├── index.html │ │ └── main.html │ │ ├── public │ │ ├── bootstrap_footer.html │ │ ├── footer.html │ │ └── header.html │ │ └── user │ │ ├── login.html │ │ └── register.html ├── job │ ├── BaseJob.php │ ├── BugJob.php │ └── ProjectJob.php ├── lang │ ├── en-us.php │ └── zh-cn.php └── tags.php ├── build.php ├── composer.json ├── config ├── app.php ├── cache.php ├── cookie.php ├── database.php ├── email.php ├── log.php ├── queue.php ├── session.php ├── template.php └── trace.php ├── extend └── .gitignore ├── public ├── .htaccess ├── favicon.ico ├── index.php ├── robots.txt ├── router.php └── static │ ├── .gitignore │ ├── css │ ├── bootstrap.min.css │ ├── demo.css │ └── material-dashboard-v=1.2.1.css │ ├── iconfont │ ├── MaterialIcons-Regular.eot │ ├── MaterialIcons-Regular.ijmap │ ├── MaterialIcons-Regular.svg │ ├── MaterialIcons-Regular.ttf │ ├── MaterialIcons-Regular.woff │ ├── MaterialIcons-Regular.woff2 │ ├── README.md │ ├── codepoints │ └── material-icons.css │ ├── img │ ├── apple-icon.png │ ├── card-1.jpeg │ ├── card-2.jpeg │ ├── card-3.jpeg │ ├── default-avatar.png │ ├── faces │ │ ├── avatar.jpg │ │ ├── card-profile1-square.jpg │ │ └── marc.jpg │ ├── favicon.png │ ├── flags │ │ ├── AU.png │ │ ├── BR.png │ │ ├── DE.png │ │ ├── GB.png │ │ ├── RO.png │ │ └── US.png │ ├── image_placeholder.jpg │ ├── placeholder.jpg │ ├── product1.jpg │ ├── product2.jpg │ ├── product3.jpg │ ├── sidebar-1.jpg │ ├── sidebar-2.jpg │ ├── sidebar-3.jpg │ └── sidebar-4.jpg │ ├── js │ ├── arrive.min.js │ ├── bootstrap-datetimepicker.js │ ├── bootstrap-notify.js │ ├── bootstrap.min.js │ ├── chartist.min.js │ ├── core.js │ ├── demo.js │ ├── fullcalendar.min.js │ ├── jasny-bootstrap.min.js │ ├── jquery-3.2.1.min.js │ ├── jquery-jvectormap.js │ ├── jquery.bootstrap-wizard.js │ ├── jquery.datatables.js │ ├── jquery.select-bootstrap.js │ ├── jquery.sharrre.js │ ├── jquery.tagsinput.js │ ├── jquery.validate.min.js │ ├── material-dashboard-v=1.2.1.js │ ├── material.min.js │ ├── moment.min.js │ ├── nouislider.min.js │ ├── perfect-scrollbar.jquery.min.js │ └── sweetalert2.js │ ├── kindeditor │ ├── kindeditor-all-min.js │ ├── kindeditor-all.js │ ├── lang │ │ ├── ar.js │ │ ├── en.js │ │ ├── ko.js │ │ ├── ru.js │ │ ├── zh-CN.js │ │ └── zh-TW.js │ ├── license.txt │ ├── php │ │ ├── JSON.php │ │ ├── demo.php │ │ ├── file_manager_json.php │ │ └── upload_json.php │ ├── plugins │ │ ├── anchor │ │ │ └── anchor.js │ │ ├── autoheight │ │ │ └── autoheight.js │ │ ├── baidumap │ │ │ ├── baidumap.js │ │ │ ├── index.html │ │ │ └── map.html │ │ ├── clearhtml │ │ │ └── clearhtml.js │ │ ├── code │ │ │ ├── code.js │ │ │ ├── prettify.css │ │ │ └── prettify.js │ │ ├── emoticons │ │ │ ├── emoticons.js │ │ │ └── images │ │ │ │ ├── 0.gif │ │ │ │ ├── 1.gif │ │ │ │ ├── 10.gif │ │ │ │ ├── 100.gif │ │ │ │ ├── 101.gif │ │ │ │ ├── 102.gif │ │ │ │ ├── 103.gif │ │ │ │ ├── 104.gif │ │ │ │ ├── 105.gif │ │ │ │ ├── 106.gif │ │ │ │ ├── 107.gif │ │ │ │ ├── 108.gif │ │ │ │ ├── 109.gif │ │ │ │ ├── 11.gif │ │ │ │ ├── 110.gif │ │ │ │ ├── 111.gif │ │ │ │ ├── 112.gif │ │ │ │ ├── 113.gif │ │ │ │ ├── 114.gif │ │ │ │ ├── 115.gif │ │ │ │ ├── 116.gif │ │ │ │ ├── 117.gif │ │ │ │ ├── 118.gif │ │ │ │ ├── 119.gif │ │ │ │ ├── 12.gif │ │ │ │ ├── 120.gif │ │ │ │ ├── 121.gif │ │ │ │ ├── 122.gif │ │ │ │ ├── 123.gif │ │ │ │ ├── 124.gif │ │ │ │ ├── 125.gif │ │ │ │ ├── 126.gif │ │ │ │ ├── 127.gif │ │ │ │ ├── 128.gif │ │ │ │ ├── 129.gif │ │ │ │ ├── 13.gif │ │ │ │ ├── 130.gif │ │ │ │ ├── 131.gif │ │ │ │ ├── 132.gif │ │ │ │ ├── 133.gif │ │ │ │ ├── 134.gif │ │ │ │ ├── 14.gif │ │ │ │ ├── 15.gif │ │ │ │ ├── 16.gif │ │ │ │ ├── 17.gif │ │ │ │ ├── 18.gif │ │ │ │ ├── 19.gif │ │ │ │ ├── 2.gif │ │ │ │ ├── 20.gif │ │ │ │ ├── 21.gif │ │ │ │ ├── 22.gif │ │ │ │ ├── 23.gif │ │ │ │ ├── 24.gif │ │ │ │ ├── 25.gif │ │ │ │ ├── 26.gif │ │ │ │ ├── 27.gif │ │ │ │ ├── 28.gif │ │ │ │ ├── 29.gif │ │ │ │ ├── 3.gif │ │ │ │ ├── 30.gif │ │ │ │ ├── 31.gif │ │ │ │ ├── 32.gif │ │ │ │ ├── 33.gif │ │ │ │ ├── 34.gif │ │ │ │ ├── 35.gif │ │ │ │ ├── 36.gif │ │ │ │ ├── 37.gif │ │ │ │ ├── 38.gif │ │ │ │ ├── 39.gif │ │ │ │ ├── 4.gif │ │ │ │ ├── 40.gif │ │ │ │ ├── 41.gif │ │ │ │ ├── 42.gif │ │ │ │ ├── 43.gif │ │ │ │ ├── 44.gif │ │ │ │ ├── 45.gif │ │ │ │ ├── 46.gif │ │ │ │ ├── 47.gif │ │ │ │ ├── 48.gif │ │ │ │ ├── 49.gif │ │ │ │ ├── 5.gif │ │ │ │ ├── 50.gif │ │ │ │ ├── 51.gif │ │ │ │ ├── 52.gif │ │ │ │ ├── 53.gif │ │ │ │ ├── 54.gif │ │ │ │ ├── 55.gif │ │ │ │ ├── 56.gif │ │ │ │ ├── 57.gif │ │ │ │ ├── 58.gif │ │ │ │ ├── 59.gif │ │ │ │ ├── 6.gif │ │ │ │ ├── 60.gif │ │ │ │ ├── 61.gif │ │ │ │ ├── 62.gif │ │ │ │ ├── 63.gif │ │ │ │ ├── 64.gif │ │ │ │ ├── 65.gif │ │ │ │ ├── 66.gif │ │ │ │ ├── 67.gif │ │ │ │ ├── 68.gif │ │ │ │ ├── 69.gif │ │ │ │ ├── 7.gif │ │ │ │ ├── 70.gif │ │ │ │ ├── 71.gif │ │ │ │ ├── 72.gif │ │ │ │ ├── 73.gif │ │ │ │ ├── 74.gif │ │ │ │ ├── 75.gif │ │ │ │ ├── 76.gif │ │ │ │ ├── 77.gif │ │ │ │ ├── 78.gif │ │ │ │ ├── 79.gif │ │ │ │ ├── 8.gif │ │ │ │ ├── 80.gif │ │ │ │ ├── 81.gif │ │ │ │ ├── 82.gif │ │ │ │ ├── 83.gif │ │ │ │ ├── 84.gif │ │ │ │ ├── 85.gif │ │ │ │ ├── 86.gif │ │ │ │ ├── 87.gif │ │ │ │ ├── 88.gif │ │ │ │ ├── 89.gif │ │ │ │ ├── 9.gif │ │ │ │ ├── 90.gif │ │ │ │ ├── 91.gif │ │ │ │ ├── 92.gif │ │ │ │ ├── 93.gif │ │ │ │ ├── 94.gif │ │ │ │ ├── 95.gif │ │ │ │ ├── 96.gif │ │ │ │ ├── 97.gif │ │ │ │ ├── 98.gif │ │ │ │ ├── 99.gif │ │ │ │ └── static.gif │ │ ├── filemanager │ │ │ ├── filemanager.js │ │ │ └── images │ │ │ │ ├── file-16.gif │ │ │ │ ├── file-64.gif │ │ │ │ ├── folder-16.gif │ │ │ │ ├── folder-64.gif │ │ │ │ └── go-up.gif │ │ ├── fixtoolbar │ │ │ └── fixtoolbar.js │ │ ├── flash │ │ │ └── flash.js │ │ ├── image │ │ │ ├── image.js │ │ │ └── images │ │ │ │ ├── align_left.gif │ │ │ │ ├── align_right.gif │ │ │ │ ├── align_top.gif │ │ │ │ └── refresh.png │ │ ├── insertfile │ │ │ └── insertfile.js │ │ ├── lineheight │ │ │ └── lineheight.js │ │ ├── link │ │ │ └── link.js │ │ ├── map │ │ │ ├── map.html │ │ │ └── map.js │ │ ├── media │ │ │ └── media.js │ │ ├── multiimage │ │ │ ├── images │ │ │ │ ├── image.png │ │ │ │ ├── select-files-en.png │ │ │ │ ├── select-files-zh-CN.png │ │ │ │ └── swfupload.swf │ │ │ └── multiimage.js │ │ ├── pagebreak │ │ │ └── pagebreak.js │ │ ├── plainpaste │ │ │ └── plainpaste.js │ │ ├── preview │ │ │ └── preview.js │ │ ├── quickformat │ │ │ └── quickformat.js │ │ ├── table │ │ │ └── table.js │ │ ├── template │ │ │ ├── html │ │ │ │ ├── 1.html │ │ │ │ ├── 2.html │ │ │ │ └── 3.html │ │ │ └── template.js │ │ └── wordpaste │ │ │ └── wordpaste.js │ └── themes │ │ ├── common │ │ ├── anchor.gif │ │ ├── blank.gif │ │ ├── flash.gif │ │ ├── loading.gif │ │ ├── media.gif │ │ └── rm.gif │ │ ├── default │ │ ├── background.png │ │ ├── default.css │ │ └── default.png │ │ ├── qq │ │ ├── editor.gif │ │ └── qq.css │ │ └── simple │ │ └── simple.css │ └── upload │ └── readme.md ├── resource ├── 1.png └── webbug.sql ├── route └── route.php ├── runtime └── .gitignore ├── think ├── thinkphp-README.md └── update-framework.sh /.env.example: -------------------------------------------------------------------------------- 1 | DB_PWD=root 2 | DB_NAME=webbug 3 | DB_USER=root 4 | DB_HOST=127.0.0.1 5 | DB_PREFIX=wb_ 6 | 7 | EMAIL_USER='test' 8 | EMAIL_PWD='test' 9 | EMAIL_PORT='25' 10 | EMAIL_HOST='test.com' -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | *.html linguist-language=PHP 2 | *.js linguist-language=PHP -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .idea 2 | vendor 3 | .DS_Store 4 | .env 5 | thinkphp 6 | composer.lock -------------------------------------------------------------------------------- /LICENSE.txt: -------------------------------------------------------------------------------- 1 | 2 | ThinkPHP遵循Apache2开源协议发布,并提供免费使用。 3 | 版权所有Copyright © 2006-2016 by ThinkPHP (http://thinkphp.cn) 4 | All rights reserved。 5 | ThinkPHP® 商标和著作权所有者为上海顶想信息科技有限公司。 6 | 7 | Apache Licence是著名的非盈利开源组织Apache采用的协议。 8 | 该协议和BSD类似,鼓励代码共享和尊重原作者的著作权, 9 | 允许代码修改,再作为开源或商业软件发布。需要满足 10 | 的条件: 11 | 1. 需要给代码的用户一份Apache Licence ; 12 | 2. 如果你修改了代码,需要在被修改的文件中说明; 13 | 3. 在延伸的代码中(修改和有源代码衍生的代码中)需要 14 | 带有原来代码中的协议,商标,专利声明和其他原来作者规 15 | 定需要包含的说明; 16 | 4. 如果再发布的产品中包含一个Notice文件,则在Notice文 17 | 件中需要带有本协议内容。你可以在Notice中增加自己的 18 | 许可,但不可以表现为对Apache Licence构成更改。 19 | 具体的协议参考:http://www.apache.org/licenses/LICENSE-2.0 20 | 21 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 22 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 23 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 24 | FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 25 | COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 26 | INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 27 | BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 28 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 29 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 30 | LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 31 | ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 32 | POSSIBILITY OF SUCH DAMAGE. 33 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

Welcome to WebBug 👋

2 |

3 | 4 |

5 | 6 | > WebBug 项目管理系统 7 | 8 | ![](resource/1.png) 9 | 10 | ## Install 11 | 12 | ``` 13 | - git clone 14 | - sh update-framework.sh 15 | - 安装数据库 resource/webbug.sql 16 | - 修改数据库配置 config/database.php 17 | - 复制.env.example到.env 修改数据库配置 18 | - 添加文件夹 public/static/upload 可写权限 19 | - 后台运行 php think queue:work 执行队列任务 发送通知邮件 可配合 supervisior 后台运行 20 | 21 | ``` 22 | 23 | ## Author 24 | 25 | 👤 **phpzc** 26 | 27 | * Github: [@phpzc](https://github.com/phpzc) 28 | 29 | ## Show your support 30 | 31 | Give a ⭐️ if this project helped you! 32 | 33 | *** 34 | _This README was generated with ❤️ by [readme-md-generator](https://github.com/kefranabg/readme-md-generator)_ 35 | -------------------------------------------------------------------------------- /application/.htaccess: -------------------------------------------------------------------------------- 1 | deny from all -------------------------------------------------------------------------------- /application/command.php: -------------------------------------------------------------------------------- 1 | 10 | // +---------------------------------------------------------------------- 11 | 12 | return []; 13 | -------------------------------------------------------------------------------- /application/common.php: -------------------------------------------------------------------------------- 1 | 10 | // +---------------------------------------------------------------------- 11 | 12 | // 应用公共文件 13 | if(!function_exists('captcha_img_strong')) 14 | { 15 | /** 16 | * 点击自动更换的验证码 17 | * 18 | * @param $id 验证码标识符 区分不同的验证码 19 | */ 20 | function captcha_img_strong($id = '',$className ='',$widthHeightArray = []) 21 | { 22 | 23 | if(!empty($widthHeightArray)){ 24 | $img=<< 26 | EOT; 27 | 28 | if($id == '') 29 | { 30 | return sprintf($img,'/index/base/verify','/index/base/verify',$className,$widthHeightArray['width'],$widthHeightArray['height']); 31 | }else{ 32 | return sprintf($img,'/index/base/verify/id/'.$id,'/index/base/verify/id/'.$id,$className,$widthHeightArray['width'],$widthHeightArray['height']); 33 | } 34 | }else{ 35 | $img=<< 37 | EOT; 38 | if($id == '') 39 | { 40 | return sprintf($img,'/index/base/verify','/index/base/verify',$className); 41 | }else{ 42 | return sprintf($img,'/index/base/verify/id/'.$id,'/index/auth/verify/id/'.$id,$className); 43 | } 44 | } 45 | 46 | 47 | 48 | 49 | } 50 | } 51 | 52 | /** 53 | * 判断是否SSL协议 54 | * @return boolean 55 | */ 56 | function is_ssl() { 57 | if(isset($_SERVER['HTTPS']) && ('1' == $_SERVER['HTTPS'] || 'on' == strtolower($_SERVER['HTTPS']))){ 58 | return true; 59 | }elseif(isset($_SERVER['SERVER_PORT']) && ('443' == $_SERVER['SERVER_PORT'] )) { 60 | return true; 61 | } 62 | return false; 63 | } 64 | 65 | /** 66 | * 生成网站地址 67 | * 68 | * @param string $requestUri 本站访问地址 69 | * 70 | * @return string 71 | */ 72 | function make_url($requestUri = '') 73 | { 74 | if (empty($requestUri)) 75 | $requestUri = strval($_SERVER['REQUEST_URI']); 76 | 77 | return (is_ssl() ? 'https://' : 'http://') . $_SERVER['HTTP_HOST'] . $requestUri; 78 | 79 | } 80 | 81 | 82 | /** 83 | * 构建邮件任务数组结构 topthink-queue 2.0队列 84 | * 85 | * @param $userIdArray 用户id数组 86 | * @param $title 邮件标题 87 | * @param $content 邮件内容 88 | * @return array 89 | */ 90 | function make_job($userIdArray,$title,$content) 91 | { 92 | return compact('userIdArray','title','content'); 93 | } -------------------------------------------------------------------------------- /application/handler/Email.php: -------------------------------------------------------------------------------- 1 | SMTPDebug = 0; 25 | $mail->CharSet ="UTF-8"; 26 | $mail->isSMTP(); // Set mailer to use SMTP 27 | $mail->Host = config('email.host'); // Specify main and backup SMTP servers 28 | $mail->SMTPAuth = true; // Enable SMTP authentication 29 | $mail->Username = config('email.username'); // SMTP username 30 | $mail->Password = config('email.password'); // SMTP password 31 | $mail->SMTPSecure = 'ssl'; // Enable TLS encryption, `ssl` also accepted 32 | $mail->Port = config('email.port'); // TCP port to connect to 33 | 34 | //Recipients 35 | $mail->setFrom(config('email.username'), 'WebBug'); 36 | $mail->addAddress($toUserEmail, $name); // Add a recipient 37 | 38 | 39 | // Attachments 40 | 41 | // Content 42 | $mail->isHTML(true); // Set email format to HTML 43 | $mail->Subject = $title; 44 | $mail->Body = $content; 45 | 46 | 47 | $mail->send(); 48 | 49 | return true; 50 | } catch (Exception $e) { 51 | 52 | Log::info("Message could not be sent. Mailer Error: {$mail->ErrorInfo}"); 53 | return false; 54 | } 55 | 56 | 57 | } 58 | } -------------------------------------------------------------------------------- /application/index/controller/Auth.php: -------------------------------------------------------------------------------- 1 | isLogin()) 21 | { 22 | if($this->request->isAjax()) 23 | { 24 | echo json(['status'=>0,'message'=>'请登录',]); 25 | exit; 26 | }else{ 27 | header('Location:'.$this->request->domain()); 28 | exit; 29 | } 30 | 31 | } 32 | 33 | 34 | $this->assign('menu_nav',''); 35 | $this->assign('priority_status',''); 36 | } 37 | 38 | } -------------------------------------------------------------------------------- /application/index/controller/Base.php: -------------------------------------------------------------------------------- 1 | user_id = $auth['id']; 31 | $this->username = $auth['username']; 32 | 33 | 34 | } 35 | 36 | public function verify() 37 | { 38 | $config = [ 39 | 'length' => 4, 40 | // 验证码字体大小 41 | 'fontSize' => 30, 42 | // 验证码字体大小(px) 43 | 'useCurve' => false, 44 | 45 | 'codeSet'=>'1234567890', 46 | ]; 47 | $captcha = new Captcha($config); 48 | 49 | $id = $this->request->param('id',''); 50 | return $captcha->entry($id); 51 | } 52 | 53 | 54 | public function login() 55 | { 56 | 57 | $login = AuthService::login($this->request->param('username'), 58 | $this->request->param('password') 59 | ); 60 | 61 | return $login; 62 | } 63 | 64 | public function register() 65 | { 66 | if(!captcha_check($this->request->param('code'))) 67 | { 68 | return ServiceResult::Error('验证码错误'); 69 | } 70 | 71 | 72 | 73 | $register = AuthService::register( 74 | $this->request->param('username'), 75 | $this->request->param('password'), 76 | $this->request->param('email') 77 | ); 78 | 79 | return $register; 80 | } 81 | 82 | public function logout() 83 | { 84 | session(null); 85 | cookie(null); 86 | 87 | return redirect('/'); 88 | } 89 | 90 | 91 | protected function isLogin() 92 | { 93 | return $this->user_id > 0; 94 | } 95 | 96 | 97 | } -------------------------------------------------------------------------------- /application/index/controller/Bug.php: -------------------------------------------------------------------------------- 1 | request->param('priority_status',0,'intval'); 27 | 28 | $this->assign('bugs',BugModel::all(['priority_status'=>$priority_status,'current_user_id'=>$this->user_id])); 29 | 30 | $this->assign('title',lang('Bug List')); 31 | $this->assign('menu_nav','bug/index'); 32 | $this->assign('priority_status',$priority_status + 1); 33 | 34 | return view('bug/index'); 35 | } 36 | 37 | public function add() 38 | { 39 | if($this->request->isGet()) 40 | { 41 | $this->assign('module',ProjectModuleModel::all(['project_id'=>$this->request->param('id')])); 42 | $this->assign('version',ProjectVersionModel::all(['project_id'=>$this->request->param('id')])); 43 | 44 | $this->assign('project_user',ProjectUserModel::all(['project_id'=>$this->request->param('id')])); 45 | 46 | $this->assign('id',$this->request->param('id')); 47 | 48 | 49 | return view('bug/add'); 50 | }else{ 51 | 52 | return BugService::create($this->request->param('id'),$this->user_id,$this->request->post()); 53 | } 54 | } 55 | 56 | /** 57 | * 处理Bug 58 | */ 59 | public function handle() 60 | { 61 | if($this->request->isGet()) 62 | { 63 | $id = $this->request->param('id'); 64 | 65 | $this->assign('bug',BugModel::get($id)); 66 | $this->assign('bug_log',BugLogModel::all(['bug_id'=>$id])); 67 | 68 | $this->assign('title',lang('Handle Bug')); 69 | return view('bug/handle'); 70 | 71 | }else{ 72 | 73 | $content = $this->request->param('content',''); 74 | $bug_id = $this->request->param('bug_id',0); 75 | $current_user_id = $this->request->param('current_user_id',0); 76 | $status = $this->request->param('status',0); 77 | $user_id = $this->user_id; 78 | 79 | //添加BugLog日志 修改Bug状态 80 | return BugService::handle($bug_id,$user_id,['content'=>$content,'current_user_id'=>$current_user_id,'status'=>$status]); 81 | 82 | } 83 | 84 | } 85 | 86 | 87 | /** 88 | * 获取项目的人员 89 | */ 90 | public function project_users() 91 | { 92 | $id = $this->request->param('id',0); 93 | 94 | $users = ProjectUserModel::all(['project_id'=>$id]); 95 | 96 | $data = []; 97 | 98 | foreach($users as $k=>$v) 99 | { 100 | $data[] = [ 101 | 'user_id'=>$v['user_id'], 102 | 'username'=>$v->user->username, 103 | ]; 104 | } 105 | 106 | if(empty($data)) 107 | { 108 | return ServiceResult::Error('项目人员数据为空'); 109 | }else{ 110 | 111 | 112 | return ServiceResult::Success($data); 113 | } 114 | } 115 | 116 | 117 | /** 118 | * 119 | */ 120 | public function edit() 121 | { 122 | if($this->request->isGet()) 123 | { 124 | 125 | $id = $this->request->param('id'); 126 | 127 | $bug = BugModel::get($id); 128 | $this->assign('bug',$bug); 129 | $this->assign('bug_log',BugLogModel::all(['bug_id'=>$id])); 130 | 131 | $this->assign('module',ProjectModuleModel::all(['project_id'=>$bug->project_id])); 132 | $this->assign('version',ProjectVersionModel::all(['project_id'=>$bug->project_id])); 133 | 134 | 135 | $this->assign('title',lang('Edit Bug')); 136 | 137 | return view('bug/edit'); 138 | }else{ 139 | 140 | return BugService::edit($this->request->param('id'),$this->user_id,$this->request->post()); 141 | } 142 | } 143 | 144 | 145 | } -------------------------------------------------------------------------------- /application/index/controller/Dashboard.php: -------------------------------------------------------------------------------- 1 | assign('project_count',ProjectUserModel::where(['user_id'=>$this->user_id])->count()); 28 | $this->assign('bug_count_no',BugModel::where(['current_user_id'=>$this->user_id,'bug_status'=>0])->count()); 29 | $this->assign('bug_count_yes',BugModel::where(['current_user_id'=>$this->user_id,])->where('bug_status','>',0)->count()); 30 | 31 | $projectIds = ProjectUserModel::all(['user_id'=>$this->user_id]); 32 | $projectIdArray = array_column($projectIds->toArray(),'project_id'); 33 | 34 | $this->assign('bug_count_all',BugModel::where(['current_user_id'=>$this->user_id,])->where('project_id','in',$projectIdArray)->count()); 35 | 36 | 37 | $this->assign('title',lang('Dashboard')); 38 | $this->assign('menu_nav','dashboard'); 39 | return view('dashboard/index'); 40 | } 41 | } -------------------------------------------------------------------------------- /application/index/controller/Error.php: -------------------------------------------------------------------------------- 1 | _empty(); 19 | } 20 | 21 | public function _empty() 22 | { 23 | return '404'; 24 | } 25 | } -------------------------------------------------------------------------------- /application/index/controller/Index.php: -------------------------------------------------------------------------------- 1 | request->isGet()) 19 | { 20 | $this->assign('title',lang('Edit Profile')); 21 | $this->assign('menu_nav','profile'); 22 | $this->assign('user',UserModel::get($this->user_id)); 23 | return view('profile/index'); 24 | }else{ 25 | 26 | return ProfileService::updateProfile($this->request->param('nickname'),$this->user_id); 27 | } 28 | } 29 | 30 | 31 | } -------------------------------------------------------------------------------- /application/index/controller/Test.php: -------------------------------------------------------------------------------- 1 | send('zhang5474jj@163.com','phpzc','test','

test

'); 14 | 15 | } 16 | } -------------------------------------------------------------------------------- /application/index/controller/User.php: -------------------------------------------------------------------------------- 1 | hasOne('Project','id','project_id'); 20 | } 21 | 22 | public function version() 23 | { 24 | return $this->hasOne('ProjectVersion','id','version_id'); 25 | } 26 | 27 | public function module() 28 | { 29 | return $this->hasOne('ProjectModule','id','module_id'); 30 | } 31 | 32 | 33 | public function createuser() 34 | { 35 | return $this->hasOne('User','id','create_user_id'); 36 | } 37 | 38 | public function currentuser() 39 | { 40 | return $this->hasOne('User','id','current_user_id'); 41 | } 42 | 43 | 44 | public function getBugStatusWord() 45 | { 46 | $status = [0=>'待处理',1=>'待审核',2=>'已解决']; 47 | return $status[$this->bug_status]; 48 | } 49 | } -------------------------------------------------------------------------------- /application/index/model/BugLog.php: -------------------------------------------------------------------------------- 1 | hasOne('User','id','old_user_id'); 20 | } 21 | 22 | public function newuser() 23 | { 24 | return $this->hasOne('User','id','new_user_id'); 25 | } 26 | 27 | 28 | public function getOldBugStatusAttr($value) 29 | { 30 | $status = [0=>'待处理',1=>'待审核',2=>'已解决']; 31 | return $status[$value]; 32 | } 33 | 34 | public function getNewBugStatusAttr($value) 35 | { 36 | $status = [0=>'待处理',1=>'待审核',2=>'已解决']; 37 | return $status[$value]; 38 | } 39 | } -------------------------------------------------------------------------------- /application/index/model/Project.php: -------------------------------------------------------------------------------- 1 | hasOne('User','id','user_id'); 20 | } 21 | } -------------------------------------------------------------------------------- /application/index/model/ProjectVersion.php: -------------------------------------------------------------------------------- 1 | getAttr('password')); 36 | } 37 | 38 | 39 | } -------------------------------------------------------------------------------- /application/index/model/UserLog.php: -------------------------------------------------------------------------------- 1 | 15 | 内容:{$content}
16 | 时间:{$date}
17 | EOT; 18 | 19 | } 20 | } -------------------------------------------------------------------------------- /application/index/service/Profile.php: -------------------------------------------------------------------------------- 1 | scene('update_profile')->check(['nickname'=>$nickname])) 27 | { 28 | return ServiceResult::Error($validate->getError()); 29 | } 30 | 31 | 32 | $save = $user->save(['nickname'=>$nickname]); 33 | 34 | if($save !== false) 35 | { 36 | return ServiceResult::Success([],'修改成功'); 37 | }else{ 38 | return ServiceResult::Error('修改失败'); 39 | } 40 | 41 | } 42 | } -------------------------------------------------------------------------------- /application/index/service/ProjectEmailTemplate.php: -------------------------------------------------------------------------------- 1 | 15 | 内容:{$content}
16 | 时间:{$date}
17 | EOT; 18 | 19 | } 20 | } -------------------------------------------------------------------------------- /application/index/service/ProjectModule.php: -------------------------------------------------------------------------------- 1 | startTrans(); 30 | try{ 31 | 32 | $validate = new ProjectModuleValidate(); 33 | 34 | if(!$validate->scene('add')->check([ 35 | 'module_name'=>$name, 36 | 37 | ])) 38 | { 39 | return ServiceResult::Error($validate->getError()); 40 | } 41 | 42 | $add = $model->save([ 43 | 'module_name'=>$name, 44 | 'project_id'=>$project_id, 45 | 'user_id'=>$user_id, 46 | ]); 47 | 48 | //创建其他 49 | 50 | $model->commit(); 51 | } 52 | catch(\Exception $e) 53 | { 54 | $model->rollback(); 55 | 56 | return ServiceResult::Error($e->getMessage()); 57 | } 58 | 59 | 60 | if($add) 61 | { 62 | return ServiceResult::Success(['id'=>$model->id],'添加成功'); 63 | 64 | }else{ 65 | 66 | return ServiceResult::Error($model->getError()); 67 | 68 | } 69 | 70 | } 71 | 72 | 73 | /** 74 | * 修改项目模块名称 75 | * @param $id 76 | * @param $user_id 77 | * @param $new_name 78 | * 79 | * @return ServiceResult 80 | */ 81 | public static function edit($id,$user_id,$new_name) 82 | { 83 | $data = ProjectModuleModel::get($id); 84 | 85 | if(!$data){ 86 | return ServiceResult::Error('项目版本数据不存在'); 87 | } 88 | 89 | if($data->user_id != $user_id) 90 | { 91 | return ServiceResult::Error('没有权限修改'); 92 | } 93 | 94 | $validate = new ProjectModuleValidate(); 95 | 96 | if(!$validate->scene('edit')->check([ 97 | 'module_name'=>$new_name, 98 | 99 | ])) 100 | { 101 | return ServiceResult::Error($validate->getError()); 102 | } 103 | 104 | 105 | $data->module_name = $new_name; 106 | 107 | $save = $data->save(); 108 | 109 | if($save !== false) 110 | { 111 | return ServiceResult::Success([],'修改成功'); 112 | }else{ 113 | return ServiceResult::Error('修改失败'); 114 | } 115 | 116 | } 117 | 118 | public static function delete($id,$user_id) 119 | { 120 | $data = ProjectModuleModel::get($id); 121 | 122 | if(!$data){ 123 | return ServiceResult::Error('项目版本数据不存在'); 124 | } 125 | 126 | if($data->user_id != $user_id) 127 | { 128 | return ServiceResult::Error('没有权限修改'); 129 | } 130 | 131 | if($data->delete()) 132 | { 133 | return ServiceResult::Success([],'删除成功'); 134 | }else{ 135 | return ServiceResult::Error('删除失败'); 136 | } 137 | } 138 | 139 | } -------------------------------------------------------------------------------- /application/index/service/ProjectVersion.php: -------------------------------------------------------------------------------- 1 | startTrans(); 29 | try{ 30 | 31 | $validate = new ProjectVersionValidate(); 32 | 33 | if(!$validate->scene('add')->check([ 34 | 'version_name'=>$name, 35 | 36 | ])) 37 | { 38 | return ServiceResult::Error($validate->getError()); 39 | } 40 | 41 | $add = $model->save([ 42 | 'version_name'=>$name, 43 | 'project_id'=>$project_id, 44 | 'user_id'=>$user_id, 45 | ]); 46 | 47 | //创建其他 48 | 49 | $model->commit(); 50 | } 51 | catch(\Exception $e) 52 | { 53 | $model->rollback(); 54 | 55 | return ServiceResult::Error($e->getMessage()); 56 | } 57 | 58 | 59 | if($add) 60 | { 61 | return ServiceResult::Success(['id'=>$model->id],'添加成功'); 62 | 63 | }else{ 64 | 65 | return ServiceResult::Error($model->getError()); 66 | 67 | } 68 | 69 | } 70 | 71 | 72 | /** 73 | * 修改项目版本名称 74 | * @param $id 75 | * @param $user_id 76 | * @param $new_name 77 | * 78 | * @return ServiceResult 79 | */ 80 | public static function edit($id,$user_id,$new_name) 81 | { 82 | $data = ProjectVersionModel::get($id); 83 | 84 | if(!$data){ 85 | return ServiceResult::Error('项目版本数据不存在'); 86 | } 87 | 88 | if($data->user_id != $user_id) 89 | { 90 | return ServiceResult::Error('没有权限修改'); 91 | } 92 | 93 | $validate = new ProjectVersionValidate(); 94 | 95 | if(!$validate->scene('edit')->check([ 96 | 'version_name'=>$new_name, 97 | 98 | ])) 99 | { 100 | return ServiceResult::Error($validate->getError()); 101 | } 102 | 103 | 104 | $data->version_name = $new_name; 105 | 106 | $save = $data->save(); 107 | 108 | 109 | if($save !== false) 110 | { 111 | return ServiceResult::Success([],'修改成功'); 112 | }else{ 113 | return ServiceResult::Error('修改失败'); 114 | } 115 | 116 | } 117 | 118 | public static function delete($id,$user_id) 119 | { 120 | $data = ProjectVersionModel::get($id); 121 | 122 | if(!$data){ 123 | return ServiceResult::Error('项目版本数据不存在'); 124 | } 125 | 126 | if($data->user_id != $user_id) 127 | { 128 | return ServiceResult::Error('没有权限修改'); 129 | } 130 | 131 | if($data->delete()) 132 | { 133 | return ServiceResult::Success([],'删除成功'); 134 | }else{ 135 | return ServiceResult::Error('删除失败'); 136 | } 137 | } 138 | } -------------------------------------------------------------------------------- /application/index/validate/BaseValidate.php: -------------------------------------------------------------------------------- 1 | 'require|max:255|min:1', 16 | 'bug_content' => 'require', 17 | 18 | ]; 19 | 20 | protected $message = [ 21 | 'bug_title.require'=>'Bug标题不为空', 22 | 'bug_title.max' => 'Bug标题不能超过255位', 23 | 'bug_title.min' => 'Bug标题不为空', 24 | 'bug_content.require'=>'Bug描述不为空', 25 | 26 | ]; 27 | 28 | 29 | protected $scene = [ 30 | 'add' => ['bug_title'], 31 | 'edit' => ['bug_title'], 32 | ]; 33 | } -------------------------------------------------------------------------------- /application/index/validate/Project.php: -------------------------------------------------------------------------------- 1 | 'unique:project|require|max:255|min:1', 16 | 17 | ]; 18 | 19 | protected $message = [ 20 | 'project_name.unique' => '项目名称已存在', 21 | 'project_name.require'=>'项目名称不为空', 22 | 'project_name.max' => '项目名称不能超过255位', 23 | 'project_name.min' => '项目名称不为空', 24 | 25 | 26 | ]; 27 | 28 | //场景验证 29 | protected $scene = [ 30 | 'add' => ['project_name'], 31 | 'edit' => ['project_name'], 32 | ]; 33 | } -------------------------------------------------------------------------------- /application/index/validate/ProjectModule.php: -------------------------------------------------------------------------------- 1 | 'require|max:64|min:1', 16 | 17 | ]; 18 | 19 | protected $message = [ 20 | 21 | 'module_name.require'=>'模块名称不为空', 22 | 'module_name.max' => '模块名称不能超过64位', 23 | 'module_name.min' => '模块名称不为空', 24 | 25 | 26 | ]; 27 | 28 | //场景验证 29 | protected $scene = [ 30 | 'add' => ['module_name'], 31 | 'edit' => ['module_name'], 32 | ]; 33 | } -------------------------------------------------------------------------------- /application/index/validate/ProjectVersion.php: -------------------------------------------------------------------------------- 1 | 'require|max:64|min:1', 16 | 17 | ]; 18 | 19 | protected $message = [ 20 | 21 | 'version_name.require'=>'版本名称不为空', 22 | 'version_name.max' => '版本名称不能超过64位', 23 | 'version_name.min' => '版本名称不为空', 24 | 25 | 26 | ]; 27 | 28 | //场景验证 29 | protected $scene = [ 30 | 'add' => ['version_name'], 31 | 'edit' => ['version_name'], 32 | ]; 33 | } -------------------------------------------------------------------------------- /application/index/validate/User.php: -------------------------------------------------------------------------------- 1 | 'unique:user|require|max:11|min:1', 19 | 'password' => 'require|max:255', 20 | 21 | 'email' => 'unique:user|require|max:60', 22 | 'nickname' => 'unique:user|require|max:32' 23 | ]; 24 | 25 | protected $message = [ 26 | 'username.unique' => '用户名已存在', 27 | 'username.require'=>'用户名不为空', 28 | 'username.max' => '用户名不能超过11位', 29 | 'username.min' => '用户名不为空', 30 | 'password.require'=>'密码不为空', 31 | 'password.max' => '密码最长255位', 32 | 33 | 'email.unique'=>'邮箱已存在', 34 | 'email.max'=>'邮箱不能超过60位', 35 | 'email.require'=>'邮箱不为空', 36 | 37 | 'nickname.unique'=>'昵称已存在', 38 | 'nickname.max'=>'昵称不能超过32位', 39 | 'nickname.require'=>'昵称不为空', 40 | 41 | ]; 42 | 43 | //场景验证 44 | protected $scene = [ 45 | 'add' => ['username','password'], 46 | 'edit_password' => ['password'], 47 | 'edit_email' => ['email'], 48 | 'update_profile'=>['nickname'], 49 | ]; 50 | } -------------------------------------------------------------------------------- /application/index/view/bug/index.html: -------------------------------------------------------------------------------- 1 | {extend name="extend/main" /} 2 | {block name="content"} 3 |
4 |
5 |
6 |
7 |
8 | assignment 9 |
10 |
11 |

{:lang('My Bug')}

12 |
13 | 14 |
15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | {volist name="bugs" id="bug"} 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 57 | 58 | {/volist} 59 | 60 | 61 |
#项目标题模块版本状态时间Actions
#项目标题模块版本状态时间Actions
{$bug.id}{$bug->project ? $bug->project->project_name:''}{$bug.bug_title}{$bug->module ? $bug->module->module_name : ''}{$bug->version ? $bug->version->version_name : ''}{$bug->getBugStatusWord()}{$bug->create_time} 53 | 54 | dvr 55 | edit 56 |
62 |
63 |
64 |
65 |
66 | 67 |
68 | {/block} 69 | {block name="footer"} 70 | 109 | {/block} -------------------------------------------------------------------------------- /application/index/view/dashboard/index.html: -------------------------------------------------------------------------------- 1 | {extend name="extend/main" /} 2 | {block name="content"} 3 | 4 |
5 |
6 |
7 |
8 |
9 | bug_report 10 |
11 |
12 |

待解决

13 |

{$bug_count_no}

14 |
15 | 16 |
17 |
18 |
19 |
20 |
21 | bug_report 22 |
23 |
24 |

已解决

25 |

{$bug_count_yes}

26 |
27 | 28 |
29 |
30 |
31 |
32 |
33 | bug_report 34 |
35 |
36 |

所有

37 |

{$bug_count_all}

38 |
39 | 40 |
41 |
42 | 43 |
44 | 45 |
46 |
47 |
48 |
49 | store 50 |
51 |
52 |

项目

53 |

{$project_count}

54 |
55 | 56 |
57 |
58 | 59 |
60 |
61 | 62 | {/block} -------------------------------------------------------------------------------- /application/index/view/index/index.html: -------------------------------------------------------------------------------- 1 | {extend name="extend/bootstrap" /} 2 | {block name="content"} 3 |
4 |
5 | 6 |
7 |
8 |
9 |

WebBug 项目管理系统

10 |
免费开源的BUG管理系统,使用PHP语言开发.
11 |
12 |
13 |
14 |
15 |
16 |
17 | 18 |
19 |
20 |
21 |
22 |
23 |
24 |
开源免费
25 |
26 | get_app 27 |
28 |

免费下载

29 |

30 | 31 |

32 | 下载 33 |
34 |
35 |
36 | 37 |
38 |
39 |
40 | 41 |
42 |
43 |
44 |
45 |
46 |
47 | 48 | {include file="public/bootstrap_footer" /} 49 |
50 | {/block} -------------------------------------------------------------------------------- /application/index/view/profile/index.html: -------------------------------------------------------------------------------- 1 | {extend name="extend/main" /} 2 | {block name="content"} 3 |
4 |
5 | 6 |
7 |
8 |
9 |
10 |

{:lang('Edit Profile')}

11 |
12 |
13 |
14 | 15 |
16 |
17 | 18 | 19 | {:lang('Username')}. 20 |
21 |
22 |
23 |
24 | 25 |
26 |
27 | 28 | 29 | {:lang('Nick Name')}. 30 |
31 |
32 |
33 |
34 | 35 |
36 |
37 | 38 | 39 | 40 |
41 |
42 |
43 | 44 |
45 |
46 |
47 |
48 | 49 |
50 |
51 | {/block} 52 | {block name="footer"} 53 | 76 | {/block} -------------------------------------------------------------------------------- /application/index/view/public/bootstrap_footer.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | 13 | 20 |
21 |
-------------------------------------------------------------------------------- /application/index/view/public/footer.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/application/index/view/public/footer.html -------------------------------------------------------------------------------- /application/index/view/public/header.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/application/index/view/public/header.html -------------------------------------------------------------------------------- /application/index/view/user/login.html: -------------------------------------------------------------------------------- 1 | {extend name="extend/bootstrap" /} 2 | {block name="content"} 3 | 55 | {/block} 56 | {block name="footer"} 57 | 94 | {/block} -------------------------------------------------------------------------------- /application/job/BaseJob.php: -------------------------------------------------------------------------------- 1 | attempts() > 1) { 22 | //通过这个方法可以检查这个任务已经重试了几次了 23 | return $job->delete(); 24 | } 25 | 26 | 27 | $email = new Email(); 28 | 29 | 30 | //读取用户id 挨个发送邮件 31 | foreach ($data['userIdArray'] as $v){ 32 | 33 | $user = User::where(['id'=>$v])->find(); 34 | 35 | $email->send($user->email,$user->username,$data['title'],$data['content']); 36 | 37 | } 38 | 39 | 40 | $job->delete(); 41 | 42 | 43 | 44 | } 45 | 46 | 47 | } -------------------------------------------------------------------------------- /application/job/ProjectJob.php: -------------------------------------------------------------------------------- 1 | attempts() > 1) { 21 | //通过这个方法可以检查这个任务已经重试了几次了 22 | return $job->delete(); 23 | } 24 | 25 | var_dump($data); 26 | 27 | 28 | 29 | 30 | //读取用户id 挨个发送邮件 31 | foreach ($data['userIdArray'] as $v){ 32 | 33 | $user = User::where(['id'=>$v])->find(); 34 | $email = new Email(); 35 | $email->send($user->email,$user->username,$data['title'],$data['content']); 36 | 37 | } 38 | 39 | 40 | $job->delete(); 41 | 42 | 43 | 44 | } 45 | } -------------------------------------------------------------------------------- /application/lang/en-us.php: -------------------------------------------------------------------------------- 1 | '背景颜色', 10 | 'Register'=>'注册', 11 | 'Login'=>'登录', 12 | 'Dashboard'=>'仪表板', 13 | 'Username'=>'用户名', 14 | 'Email'=>'邮箱', 15 | 'Password'=>'密码', 16 | 'Code'=>'验证码', 17 | 'My Profile'=>'我的简历', 18 | 'Settings'=>'设置', 19 | 'Project List'=>'项目列表', 20 | 'Bug List'=>'Bug列表', 21 | 'Project Name'=>'项目名称', 22 | 'Create Project'=>'创建项目', 23 | 'Edit Project'=>'修改项目', 24 | 'Submit'=>'提交', 25 | 'Edit Profile'=>'修改个人信息', 26 | 'Nick Name'=>'昵称', 27 | 'Project Version'=>'项目版本', 28 | 'Project Module'=>'项目模块', 29 | 'Edit Project Module'=>'修改项目模块名称', 30 | 'Edit Project Version'=>'修改项目版本名称', 31 | 'Delete Project Module'=>'删除项目模块名称', 32 | 'Delete Project Version'=>'删除项目版本名称', 33 | 'New Module'=>'新建模块', 34 | 'New Version'=>'新建版本', 35 | 'Default'=>'默认', 36 | 'AllocateToMyBug'=>'分配给我的Bug', 37 | 'Created Bug'=>'我创建的Bug', 38 | 'All Bug'=>'所有Bug', 39 | 'New Bug'=>'新建Bug', 40 | 'Project Users'=>'项目人员', 41 | 'New User'=>'添加人员', 42 | 'Owner'=>'拥有者', 43 | 'Delete Project User'=>'删除项目人员', 44 | 'Handle Bug'=>'处理Bug', 45 | 'My Bug'=>'我的Bug', 46 | 'Edit Bug'=>'修改Bug', 47 | 48 | ]; -------------------------------------------------------------------------------- /application/tags.php: -------------------------------------------------------------------------------- 1 | 10 | // +---------------------------------------------------------------------- 11 | 12 | // 应用行为扩展定义文件 13 | return [ 14 | // 应用初始化 15 | 'app_init' => [], 16 | // 应用开始 17 | 'app_begin' => [], 18 | // 模块初始化 19 | 'module_init' => [], 20 | // 操作开始执行 21 | 'action_begin' => [], 22 | // 视图内容过滤 23 | 'view_filter' => [], 24 | // 日志写入 25 | 'log_write' => [], 26 | // 应用结束 27 | 'app_end' => [], 28 | ]; 29 | -------------------------------------------------------------------------------- /build.php: -------------------------------------------------------------------------------- 1 | 10 | // +---------------------------------------------------------------------- 11 | 12 | return [ 13 | // 生成应用公共文件 14 | '__file__' => ['common.php'], 15 | 16 | // 定义demo模块的自动生成 (按照实际定义的文件名生成) 17 | 'demo' => [ 18 | '__file__' => ['common.php'], 19 | '__dir__' => ['behavior', 'controller', 'model', 'view'], 20 | 'controller' => ['Index', 'Test', 'UserType'], 21 | 'model' => ['User', 'UserType'], 22 | 'view' => ['index/index'], 23 | ], 24 | 25 | // 其他更多的模块定义 26 | ]; 27 | -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "topthink/think", 3 | "description": "the new thinkphp framework", 4 | "type": "project", 5 | "keywords": [ 6 | "framework", 7 | "thinkphp", 8 | "ORM" 9 | ], 10 | "homepage": "http://thinkphp.cn/", 11 | "license": "Apache-2.0", 12 | "authors": [ 13 | { 14 | "name": "liu21st", 15 | "email": "liu21st@gmail.com" 16 | } 17 | ], 18 | "require": { 19 | "php": ">=5.6.0", 20 | "topthink/framework": "5.1.*", 21 | "topthink/think-captcha": "^2.0", 22 | "phpmailer/phpmailer": "^6.0", 23 | "topthink/think-queue": "2.*" 24 | }, 25 | "autoload": { 26 | "psr-4": { 27 | "app\\": "application" 28 | } 29 | }, 30 | "extra": { 31 | "think-path": "thinkphp" 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /config/app.php: -------------------------------------------------------------------------------- 1 | 10 | // +---------------------------------------------------------------------- 11 | 12 | // +---------------------------------------------------------------------- 13 | // | 应用设置 14 | // +---------------------------------------------------------------------- 15 | 16 | return [ 17 | 18 | // 应用调试模式 19 | 'app_debug' => true, 20 | // 应用Trace 21 | 'app_trace' => false, 22 | // 应用模式状态 23 | 'app_status' => '', 24 | // 是否支持多模块 25 | 'app_multi_module' => true, 26 | // 入口自动绑定模块 27 | 'auto_bind_module' => false, 28 | // 注册的根命名空间 29 | 'root_namespace' => [], 30 | // 默认输出类型 31 | 'default_return_type' => 'html', 32 | // 默认AJAX 数据返回格式,可选json xml ... 33 | 'default_ajax_return' => 'json', 34 | // 默认JSONP格式返回的处理方法 35 | 'default_jsonp_handler' => 'jsonpReturn', 36 | // 默认JSONP处理方法 37 | 'var_jsonp_handler' => 'callback', 38 | // 默认时区 39 | 'default_timezone' => 'PRC', 40 | // 是否开启多语言 41 | 'lang_switch_on' => true, 42 | // 默认全局过滤方法 用逗号分隔多个 43 | 'default_filter' => '', 44 | // 默认语言 45 | 'default_lang' => 'zh-cn', 46 | // 应用类库后缀 47 | 'class_suffix' => false, 48 | // 控制器类后缀 49 | 'controller_suffix' => false, 50 | 51 | // 默认模块名 52 | 'default_module' => 'index', 53 | // 禁止访问模块 54 | 'deny_module_list' => ['common'], 55 | // 默认控制器名 56 | 'default_controller' => 'Index', 57 | // 默认操作名 58 | 'default_action' => 'index', 59 | // 默认验证器 60 | 'default_validate' => '', 61 | // 默认的空控制器名 62 | 'empty_controller' => 'Error', 63 | // 操作方法后缀 64 | 'action_suffix' => '', 65 | // 自动搜索控制器 66 | 'controller_auto_search' => false, 67 | 68 | // PATHINFO变量名 用于兼容模式 69 | 'var_pathinfo' => 's', 70 | // 兼容PATH_INFO获取 71 | 'pathinfo_fetch' => ['ORIG_PATH_INFO', 'REDIRECT_PATH_INFO', 'REDIRECT_URL'], 72 | // pathinfo分隔符 73 | 'pathinfo_depr' => '/', 74 | // URL伪静态后缀 75 | 'url_html_suffix' => 'html', 76 | // URL普通方式参数 用于自动生成 77 | 'url_common_param' => false, 78 | // URL参数方式 0 按名称成对解析 1 按顺序解析 79 | 'url_param_type' => 0, 80 | // 路由使用完整匹配 81 | 'route_complete_match' => false, 82 | // 是否强制使用路由 83 | 'url_route_must' => false, 84 | // 域名部署 85 | 'url_domain_deploy' => false, 86 | // 域名根,如thinkphp.cn 87 | 'url_domain_root' => '', 88 | // 是否自动转换URL中的控制器和操作名 89 | 'url_convert' => true, 90 | // 默认的访问控制器层 91 | 'url_controller_layer' => 'controller', 92 | // 表单请求类型伪装变量 93 | 'var_method' => '_method', 94 | // 表单ajax伪装变量 95 | 'var_ajax' => '_ajax', 96 | // 表单pjax伪装变量 97 | 'var_pjax' => '_pjax', 98 | // 是否开启请求缓存 true自动缓存 支持设置请求缓存规则 99 | 'request_cache' => false, 100 | // 请求缓存有效期 101 | 'request_cache_expire' => null, 102 | 103 | // 视图输出字符串内容替换 104 | 'view_replace_str' => [ 105 | '__CSS__'=>'/static/css', 106 | '__JS__'=>'/static/js', 107 | '__IMG__'=>'/static/img', 108 | 109 | ], 110 | // 默认跳转页面对应的模板文件 111 | 'dispatch_success_tmpl' => Env::get('think_path') . 'tpl/dispatch_jump.tpl', 112 | 'dispatch_error_tmpl' => Env::get('think_path') . 'tpl/dispatch_jump.tpl', 113 | 114 | // 异常页面的模板文件 115 | 'exception_tmpl' => Env::get('think_path') . 'tpl/think_exception.tpl', 116 | 117 | // 错误显示信息,非调试模式有效 118 | 'error_message' => '页面错误!请稍后再试~', 119 | // 显示错误信息 120 | 'show_error_msg' => false, 121 | // 异常处理handle类 留空使用 \think\exception\Handle 122 | 'exception_handle' => '', 123 | 124 | ]; 125 | -------------------------------------------------------------------------------- /config/cache.php: -------------------------------------------------------------------------------- 1 | 10 | // +---------------------------------------------------------------------- 11 | 12 | // +---------------------------------------------------------------------- 13 | // | 缓存设置 14 | // +---------------------------------------------------------------------- 15 | 16 | return [ 17 | // 驱动方式 18 | 'type' => 'File', 19 | // 缓存保存目录 20 | 'path' => '', 21 | // 缓存前缀 22 | 'prefix' => '', 23 | // 缓存有效期 0表示永久缓存 24 | 'expire' => 0, 25 | ]; 26 | -------------------------------------------------------------------------------- /config/cookie.php: -------------------------------------------------------------------------------- 1 | 10 | // +---------------------------------------------------------------------- 11 | 12 | // +---------------------------------------------------------------------- 13 | // | Cookie设置 14 | // +---------------------------------------------------------------------- 15 | return [ 16 | // cookie 名称前缀 17 | 'prefix' => '', 18 | // cookie 保存时间 19 | 'expire' => 0, 20 | // cookie 保存路径 21 | 'path' => '/', 22 | // cookie 有效域名 23 | 'domain' => '', 24 | // cookie 启用安全传输 25 | 'secure' => false, 26 | // httponly设置 27 | 'httponly' => '', 28 | // 是否使用 setcookie 29 | 'setcookie' => true, 30 | ]; 31 | -------------------------------------------------------------------------------- /config/database.php: -------------------------------------------------------------------------------- 1 | 10 | // +---------------------------------------------------------------------- 11 | use \think\Facade\Env; 12 | 13 | return [ 14 | // 数据库类型 15 | 'type' => 'mysql', 16 | // 服务器地址 17 | 'hostname' => Env::get('DB_HOST','127.0.0.1'), 18 | // 数据库名 19 | 'database' => Env::get('DB_NAME','webbug'), 20 | // 用户名 21 | 'username' => Env::get('DB_USER','root'), 22 | // 密码 23 | 'password' => Env::get('DB_PWD',''), 24 | // 端口 25 | 'hostport' => '', 26 | // 连接dsn 27 | 'dsn' => '', 28 | // 数据库连接参数 29 | 'params' => [], 30 | // 数据库编码默认采用utf8 31 | 'charset' => 'utf8', 32 | // 数据库表前缀 33 | 'prefix' => Env::get('DB_PREFIX',''), 34 | // 数据库调试模式 35 | 'debug' => true, 36 | // 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器) 37 | 'deploy' => 0, 38 | // 数据库读写是否分离 主从式有效 39 | 'rw_separate' => false, 40 | // 读写分离后 主服务器数量 41 | 'master_num' => 1, 42 | // 指定从服务器序号 43 | 'slave_no' => '', 44 | // 是否严格检查字段是否存在 45 | 'fields_strict' => true, 46 | // 数据集返回类型 47 | 'resultset_type' => 'array', 48 | // 自动写入时间戳字段 49 | 'auto_timestamp' => false, 50 | // 时间字段取出后的默认时间格式 51 | 'datetime_format' => 'Y-m-d H:i:s', 52 | // 是否需要进行SQL性能分析 53 | 'sql_explain' => false, 54 | // Query类 55 | 'query' => '\\think\\db\\Query', 56 | ]; 57 | -------------------------------------------------------------------------------- /config/email.php: -------------------------------------------------------------------------------- 1 | env('EMAIL_HOST',''), 5 | 'port' => env('EMAIL_PORT',''), 6 | 'is_ssl' => true, 7 | 'username' => env('EMAIL_USER',''), 8 | 'password' => env('EMAIL_PWD',''), 9 | ]; -------------------------------------------------------------------------------- /config/log.php: -------------------------------------------------------------------------------- 1 | 10 | // +---------------------------------------------------------------------- 11 | 12 | // +---------------------------------------------------------------------- 13 | // | 日志设置 14 | // +---------------------------------------------------------------------- 15 | return [ 16 | // 日志记录方式,内置 file socket 支持扩展 17 | 'type' => 'File', 18 | // 日志保存目录 19 | 'path' => '', 20 | // 日志记录级别 21 | 'level' => [], 22 | ]; 23 | -------------------------------------------------------------------------------- /config/queue.php: -------------------------------------------------------------------------------- 1 | 10 | // +---------------------------------------------------------------------- 11 | 12 | return [ 13 | 'connector' => 'database', 14 | 'table' => 'jobs',//队列表 不写前缀 15 | ]; 16 | -------------------------------------------------------------------------------- /config/session.php: -------------------------------------------------------------------------------- 1 | 10 | // +---------------------------------------------------------------------- 11 | 12 | // +---------------------------------------------------------------------- 13 | // | 会话设置 14 | // +---------------------------------------------------------------------- 15 | 16 | return [ 17 | 'id' => '', 18 | // SESSION_ID的提交变量,解决flash上传跨域 19 | 'var_session_id' => '', 20 | // SESSION 前缀 21 | 'prefix' => 'think', 22 | // 驱动方式 支持redis memcache memcached 23 | 'type' => '', 24 | // 是否自动开启 SESSION 25 | 'auto_start' => true, 26 | ]; 27 | -------------------------------------------------------------------------------- /config/template.php: -------------------------------------------------------------------------------- 1 | 10 | // +---------------------------------------------------------------------- 11 | 12 | // +---------------------------------------------------------------------- 13 | // | 模板设置 14 | // +---------------------------------------------------------------------- 15 | 16 | return [ 17 | // 模板引擎类型 支持 php think 支持扩展 18 | 'type' => 'Think', 19 | // 模板路径 20 | 'view_path' => '', 21 | // 模板后缀 22 | 'view_suffix' => 'html', 23 | // 模板文件名分隔符 24 | 'view_depr' => DIRECTORY_SEPARATOR, 25 | // 模板引擎普通标签开始标记 26 | 'tpl_begin' => '{', 27 | // 模板引擎普通标签结束标记 28 | 'tpl_end' => '}', 29 | // 标签库标签开始标记 30 | 'taglib_begin' => '{', 31 | // 标签库标签结束标记 32 | 'taglib_end' => '}', 33 | 34 | //模板替换 35 | 'tpl_replace_string' => [ 36 | '__CSS__'=>'/static/css', 37 | '__JS__'=>'/static/js', 38 | '__IMG__'=>'/static/img', 39 | '__UEDITOR__'=>'/static/UEditor', 40 | ], 41 | 42 | ]; 43 | -------------------------------------------------------------------------------- /config/trace.php: -------------------------------------------------------------------------------- 1 | 10 | // +---------------------------------------------------------------------- 11 | 12 | // +---------------------------------------------------------------------- 13 | // | Trace设置 开启 app_trace 后 有效 14 | // +---------------------------------------------------------------------- 15 | return [ 16 | // 内置Html Console 支持扩展 17 | 'type' => 'Html', 18 | ]; 19 | -------------------------------------------------------------------------------- /extend/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore -------------------------------------------------------------------------------- /public/.htaccess: -------------------------------------------------------------------------------- 1 | 2 | Options +FollowSymlinks -Multiviews 3 | RewriteEngine On 4 | 5 | RewriteCond %{REQUEST_FILENAME} !-d 6 | RewriteCond %{REQUEST_FILENAME} !-f 7 | RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L] 8 | 9 | -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/favicon.ico -------------------------------------------------------------------------------- /public/index.php: -------------------------------------------------------------------------------- 1 | 10 | // +---------------------------------------------------------------------- 11 | 12 | // [ 应用入口文件 ] 13 | namespace think; 14 | 15 | // 加载基础文件 16 | require __DIR__ . '/../thinkphp/base.php'; 17 | 18 | // 支持事先使用静态方法设置Request对象和Config对象 19 | 20 | // 执行应用并响应 21 | Container::get('app')->run()->send(); -------------------------------------------------------------------------------- /public/robots.txt: -------------------------------------------------------------------------------- 1 | User-agent: * 2 | Disallow: 3 | -------------------------------------------------------------------------------- /public/router.php: -------------------------------------------------------------------------------- 1 | 10 | // +---------------------------------------------------------------------- 11 | // $Id$ 12 | 13 | if (is_file($_SERVER["DOCUMENT_ROOT"] . $_SERVER["SCRIPT_NAME"])) { 14 | return false; 15 | } else { 16 | require __DIR__ . "/index.php"; 17 | } 18 | -------------------------------------------------------------------------------- /public/static/.gitignore: -------------------------------------------------------------------------------- 1 | !.gitignore -------------------------------------------------------------------------------- /public/static/iconfont/MaterialIcons-Regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/iconfont/MaterialIcons-Regular.eot -------------------------------------------------------------------------------- /public/static/iconfont/MaterialIcons-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/iconfont/MaterialIcons-Regular.ttf -------------------------------------------------------------------------------- /public/static/iconfont/MaterialIcons-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/iconfont/MaterialIcons-Regular.woff -------------------------------------------------------------------------------- /public/static/iconfont/MaterialIcons-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/iconfont/MaterialIcons-Regular.woff2 -------------------------------------------------------------------------------- /public/static/iconfont/README.md: -------------------------------------------------------------------------------- 1 | The recommended way to use the Material Icons font is by linking to the web font hosted on Google Fonts: 2 | 3 | ```html 4 | 6 | ``` 7 | 8 | Read more in our full usage guide: 9 | http://google.github.io/material-design-icons/#icon-font-for-the-web 10 | -------------------------------------------------------------------------------- /public/static/iconfont/material-icons.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: 'Material Icons'; 3 | font-style: normal; 4 | font-weight: 400; 5 | src: url(MaterialIcons-Regular.eot); /* For IE6-8 */ 6 | src: local('Material Icons'), 7 | local('MaterialIcons-Regular'), 8 | url(MaterialIcons-Regular.woff2) format('woff2'), 9 | url(MaterialIcons-Regular.woff) format('woff'), 10 | url(MaterialIcons-Regular.ttf) format('truetype'); 11 | } 12 | 13 | .material-icons { 14 | font-family: 'Material Icons'; 15 | font-weight: normal; 16 | font-style: normal; 17 | font-size: 24px; /* Preferred icon size */ 18 | display: inline-block; 19 | line-height: 1; 20 | text-transform: none; 21 | letter-spacing: normal; 22 | word-wrap: normal; 23 | white-space: nowrap; 24 | direction: ltr; 25 | 26 | /* Support for all WebKit browsers. */ 27 | -webkit-font-smoothing: antialiased; 28 | /* Support for Safari and Chrome. */ 29 | text-rendering: optimizeLegibility; 30 | 31 | /* Support for Firefox. */ 32 | -moz-osx-font-smoothing: grayscale; 33 | 34 | /* Support for IE. */ 35 | font-feature-settings: 'liga'; 36 | } 37 | -------------------------------------------------------------------------------- /public/static/img/apple-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/img/apple-icon.png -------------------------------------------------------------------------------- /public/static/img/card-1.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/img/card-1.jpeg -------------------------------------------------------------------------------- /public/static/img/card-2.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/img/card-2.jpeg -------------------------------------------------------------------------------- /public/static/img/card-3.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/img/card-3.jpeg -------------------------------------------------------------------------------- /public/static/img/default-avatar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/img/default-avatar.png -------------------------------------------------------------------------------- /public/static/img/faces/avatar.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/img/faces/avatar.jpg -------------------------------------------------------------------------------- /public/static/img/faces/card-profile1-square.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/img/faces/card-profile1-square.jpg -------------------------------------------------------------------------------- /public/static/img/faces/marc.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/img/faces/marc.jpg -------------------------------------------------------------------------------- /public/static/img/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/img/favicon.png -------------------------------------------------------------------------------- /public/static/img/flags/AU.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/img/flags/AU.png -------------------------------------------------------------------------------- /public/static/img/flags/BR.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/img/flags/BR.png -------------------------------------------------------------------------------- /public/static/img/flags/DE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/img/flags/DE.png -------------------------------------------------------------------------------- /public/static/img/flags/GB.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/img/flags/GB.png -------------------------------------------------------------------------------- /public/static/img/flags/RO.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/img/flags/RO.png -------------------------------------------------------------------------------- /public/static/img/flags/US.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/img/flags/US.png -------------------------------------------------------------------------------- /public/static/img/image_placeholder.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/img/image_placeholder.jpg -------------------------------------------------------------------------------- /public/static/img/placeholder.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/img/placeholder.jpg -------------------------------------------------------------------------------- /public/static/img/product1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/img/product1.jpg -------------------------------------------------------------------------------- /public/static/img/product2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/img/product2.jpg -------------------------------------------------------------------------------- /public/static/img/product3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/img/product3.jpg -------------------------------------------------------------------------------- /public/static/img/sidebar-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/img/sidebar-1.jpg -------------------------------------------------------------------------------- /public/static/img/sidebar-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/img/sidebar-2.jpg -------------------------------------------------------------------------------- /public/static/img/sidebar-3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/img/sidebar-3.jpg -------------------------------------------------------------------------------- /public/static/img/sidebar-4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/img/sidebar-4.jpg -------------------------------------------------------------------------------- /public/static/js/arrive.min.js: -------------------------------------------------------------------------------- 1 | /* 2 | * arrive.js 3 | * v2.4.1 4 | * https://github.com/uzairfarooq/arrive 5 | * MIT licensed 6 | * 7 | * Copyright (c) 2014-2017 Uzair Farooq 8 | */ 9 | 10 | var Arrive=function(e,t,n){"use strict";function r(e,t,n){l.addMethod(t,n,e.unbindEvent),l.addMethod(t,n,e.unbindEventWithSelectorOrCallback),l.addMethod(t,n,e.unbindEventWithSelectorAndCallback)}function i(e){e.arrive=f.bindEvent,r(f,e,"unbindArrive"),e.leave=d.bindEvent,r(d,e,"unbindLeave")}if(e.MutationObserver&&"undefined"!=typeof HTMLElement){var o=0,l=function(){var t=HTMLElement.prototype.matches||HTMLElement.prototype.webkitMatchesSelector||HTMLElement.prototype.mozMatchesSelector||HTMLElement.prototype.msMatchesSelector;return{matchesSelector:function(e,n){return e instanceof HTMLElement&&t.call(e,n)},addMethod:function(e,t,r){var i=e[t];e[t]=function(){return r.length==arguments.length?r.apply(this,arguments):"function"==typeof i?i.apply(this,arguments):n}},callCallbacks:function(e,t){t&&t.options.onceOnly&&1==t.firedElems.length&&(e=[e[0]]);for(var n,r=0;n=e[r];r++)n&&n.callback&&n.callback.call(n.elem,n.elem);t&&t.options.onceOnly&&1==t.firedElems.length&&t.me.unbindEventWithSelectorAndCallback.call(t.target,t.selector,t.callback)},checkChildNodesRecursively:function(e,t,n,r){for(var i,o=0;i=e[o];o++)n(i,t,r)&&r.push({callback:t.callback,elem:i}),i.childNodes.length>0&&l.checkChildNodesRecursively(i.childNodes,t,n,r)},mergeArrays:function(e,t){var n,r={};for(n in e)e.hasOwnProperty(n)&&(r[n]=e[n]);for(n in t)t.hasOwnProperty(n)&&(r[n]=t[n]);return r},toElementsArray:function(t){return n===t||"number"==typeof t.length&&t!==e||(t=[t]),t}}}(),c=function(){var e=function(){this._eventsBucket=[],this._beforeAdding=null,this._beforeRemoving=null};return e.prototype.addEvent=function(e,t,n,r){var i={target:e,selector:t,options:n,callback:r,firedElems:[]};return this._beforeAdding&&this._beforeAdding(i),this._eventsBucket.push(i),i},e.prototype.removeEvent=function(e){for(var t,n=this._eventsBucket.length-1;t=this._eventsBucket[n];n--)if(e(t)){this._beforeRemoving&&this._beforeRemoving(t);var r=this._eventsBucket.splice(n,1);r&&r.length&&(r[0].callback=null)}},e.prototype.beforeAdding=function(e){this._beforeAdding=e},e.prototype.beforeRemoving=function(e){this._beforeRemoving=e},e}(),a=function(t,r){var i=new c,o=this,a={fireOnAttributesModification:!1};return i.beforeAdding(function(n){var i,l=n.target;(l===e.document||l===e)&&(l=document.getElementsByTagName("html")[0]),i=new MutationObserver(function(e){r.call(this,e,n)});var c=t(n.options);i.observe(l,c),n.observer=i,n.me=o}),i.beforeRemoving(function(e){e.observer.disconnect()}),this.bindEvent=function(e,t,n){t=l.mergeArrays(a,t);for(var r=l.toElementsArray(this),o=0;o0?l.checkChildNodesRecursively(n,t,r,o):"attributes"===e.type&&r(i,t,o)&&o.push({callback:t.callback,elem:i}),l.callCallbacks(o,t)})}function r(e,t){return l.matchesSelector(e,t.selector)&&(e._id===n&&(e._id=o++),-1==t.firedElems.indexOf(e._id))?(t.firedElems.push(e._id),!0):!1}var i={fireOnAttributesModification:!1,onceOnly:!1,existing:!1};f=new a(e,t);var c=f.bindEvent;return f.bindEvent=function(e,t,r){n===r?(r=t,t=i):t=l.mergeArrays(i,t);var o=l.toElementsArray(this);if(t.existing){for(var a=[],s=0;s0&&l.checkChildNodesRecursively(n,t,r,i),l.callCallbacks(i,t)})}function r(e,t){return l.matchesSelector(e,t.selector)}var i={};d=new a(e,t);var o=d.bindEvent;return d.bindEvent=function(e,t,r){n===r?(r=t,t=i):t=l.mergeArrays(i,t),o.call(this,e,t,r)},d},f=new s,d=new u;t&&i(t.fn),i(HTMLElement.prototype),i(NodeList.prototype),i(HTMLCollection.prototype),i(HTMLDocument.prototype),i(Window.prototype);var h={};return r(f,h,"unbindAllArrive"),r(d,h,"unbindAllLeave"),h}}(window,"undefined"==typeof jQuery?null:jQuery,void 0); 11 | -------------------------------------------------------------------------------- /public/static/kindeditor/php/demo.php: -------------------------------------------------------------------------------- 1 | 11 | 12 | 13 | 14 | 15 | KindEditor PHP 16 | 17 | 18 | 19 | 20 | 21 | 43 | 44 | 45 | 46 |
47 | 48 |
49 | (提交快捷键: Ctrl + Enter) 50 |
51 | 52 | 53 | 54 | -------------------------------------------------------------------------------- /public/static/kindeditor/php/file_manager_json.php: -------------------------------------------------------------------------------- 1 | 2); //文件夹是否包含文件 78 | $file_list[$i]['filesize'] = 0; //文件大小 79 | $file_list[$i]['is_photo'] = false; //是否图片 80 | $file_list[$i]['filetype'] = ''; //文件类别,用扩展名判断 81 | } else { 82 | $file_list[$i]['is_dir'] = false; 83 | $file_list[$i]['has_file'] = false; 84 | $file_list[$i]['filesize'] = filesize($file); 85 | $file_list[$i]['dir_path'] = ''; 86 | $file_ext = strtolower(pathinfo($file, PATHINFO_EXTENSION)); 87 | $file_list[$i]['is_photo'] = in_array($file_ext, $ext_arr); 88 | $file_list[$i]['filetype'] = $file_ext; 89 | } 90 | $file_list[$i]['filename'] = $filename; //文件名,包含扩展名 91 | $file_list[$i]['datetime'] = date('Y-m-d H:i:s', filemtime($file)); //文件最后修改时间 92 | $i++; 93 | } 94 | closedir($handle); 95 | } 96 | 97 | //排序 98 | function cmp_func($a, $b) { 99 | global $order; 100 | if ($a['is_dir'] && !$b['is_dir']) { 101 | return -1; 102 | } else if (!$a['is_dir'] && $b['is_dir']) { 103 | return 1; 104 | } else { 105 | if ($order == 'size') { 106 | if ($a['filesize'] > $b['filesize']) { 107 | return 1; 108 | } else if ($a['filesize'] < $b['filesize']) { 109 | return -1; 110 | } else { 111 | return 0; 112 | } 113 | } else if ($order == 'type') { 114 | return strcmp($a['filetype'], $b['filetype']); 115 | } else { 116 | return strcmp($a['filename'], $b['filename']); 117 | } 118 | } 119 | } 120 | usort($file_list, 'cmp_func'); 121 | 122 | $result = array(); 123 | //相对于根目录的上一级目录 124 | $result['moveup_dir_path'] = $moveup_dir_path; 125 | //相对于根目录的当前目录 126 | $result['current_dir_path'] = $current_dir_path; 127 | //当前目录的URL 128 | $result['current_url'] = $current_url; 129 | //文件数 130 | $result['total_count'] = count($file_list); 131 | //文件列表数组 132 | $result['file_list'] = $file_list; 133 | 134 | //输出JSON字符串 135 | header('Content-type: application/json; charset=UTF-8'); 136 | $json = new Services_JSON(); 137 | echo $json->encode($result); 138 | -------------------------------------------------------------------------------- /public/static/kindeditor/php/upload_json.php: -------------------------------------------------------------------------------- 1 | array('gif', 'jpg', 'jpeg', 'png', 'bmp'), 22 | 'flash' => array('swf', 'flv'), 23 | 'media' => array('swf', 'flv', 'mp3', 'wav', 'wma', 'wmv', 'mid', 'avi', 'mpg', 'asf', 'rm', 'rmvb'), 24 | 'file' => array('doc', 'docx', 'xls', 'xlsx', 'ppt', 'htm', 'html', 'txt', 'zip', 'rar', 'gz', 'bz2'), 25 | ); 26 | //最大文件大小 27 | $max_size = 1000000; 28 | 29 | $save_path = realpath($save_path) . '/'; 30 | 31 | //PHP上传失败 32 | if (!empty($_FILES['imgFile']['error'])) { 33 | switch($_FILES['imgFile']['error']){ 34 | case '1': 35 | $error = '超过php.ini允许的大小。'; 36 | break; 37 | case '2': 38 | $error = '超过表单允许的大小。'; 39 | break; 40 | case '3': 41 | $error = '图片只有部分被上传。'; 42 | break; 43 | case '4': 44 | $error = '请选择图片。'; 45 | break; 46 | case '6': 47 | $error = '找不到临时目录。'; 48 | break; 49 | case '7': 50 | $error = '写文件到硬盘出错。'; 51 | break; 52 | case '8': 53 | $error = 'File upload stopped by extension。'; 54 | break; 55 | case '999': 56 | default: 57 | $error = '未知错误。'; 58 | } 59 | alert($error); 60 | } 61 | 62 | //有上传文件时 63 | if (empty($_FILES) === false) { 64 | //原文件名 65 | $file_name = $_FILES['imgFile']['name']; 66 | //服务器上临时文件名 67 | $tmp_name = $_FILES['imgFile']['tmp_name']; 68 | //文件大小 69 | $file_size = $_FILES['imgFile']['size']; 70 | //检查文件名 71 | if (!$file_name) { 72 | alert("请选择文件。"); 73 | } 74 | //检查目录 75 | if (@is_dir($save_path) === false) { 76 | alert("上传目录不存在。"); 77 | } 78 | //检查目录写权限 79 | if (@is_writable($save_path) === false) { 80 | alert("上传目录没有写权限。"); 81 | } 82 | //检查是否已上传 83 | if (@is_uploaded_file($tmp_name) === false) { 84 | alert("上传失败。"); 85 | } 86 | //检查文件大小 87 | if ($file_size > $max_size) { 88 | alert("上传文件大小超过限制。"); 89 | } 90 | //检查目录名 91 | $dir_name = empty($_GET['dir']) ? 'image' : trim($_GET['dir']); 92 | if (empty($ext_arr[$dir_name])) { 93 | alert("目录名不正确。"); 94 | } 95 | //获得文件扩展名 96 | $temp_arr = explode(".", $file_name); 97 | $file_ext = array_pop($temp_arr); 98 | $file_ext = trim($file_ext); 99 | $file_ext = strtolower($file_ext); 100 | //检查扩展名 101 | if (in_array($file_ext, $ext_arr[$dir_name]) === false) { 102 | alert("上传文件扩展名是不允许的扩展名。\n只允许" . implode(",", $ext_arr[$dir_name]) . "格式。"); 103 | } 104 | //创建文件夹 105 | if ($dir_name !== '') { 106 | $save_path .= $dir_name . "/"; 107 | $save_url .= $dir_name . "/"; 108 | if (!file_exists($save_path)) { 109 | mkdir($save_path); 110 | } 111 | } 112 | $ymd = date("Ymd"); 113 | $save_path .= $ymd . "/"; 114 | $save_url .= $ymd . "/"; 115 | if (!file_exists($save_path)) { 116 | mkdir($save_path); 117 | } 118 | //新文件名 119 | $new_file_name = date("YmdHis") . '_' . rand(10000, 99999) . '.' . $file_ext; 120 | //移动文件 121 | $file_path = $save_path . $new_file_name; 122 | if (move_uploaded_file($tmp_name, $file_path) === false) { 123 | alert("上传文件失败。"); 124 | } 125 | @chmod($file_path, 0644); 126 | $file_url = $save_url . $new_file_name; 127 | 128 | header('Content-type: text/html; charset=UTF-8'); 129 | $json = new Services_JSON(); 130 | echo $json->encode(array('error' => 0, 'url' => $file_url)); 131 | exit; 132 | } 133 | 134 | function alert($msg) { 135 | header('Content-type: text/html; charset=UTF-8'); 136 | $json = new Services_JSON(); 137 | echo $json->encode(array('error' => 1, 'message' => $msg)); 138 | exit; 139 | } 140 | -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/anchor/anchor.js: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * KindEditor - WYSIWYG HTML Editor for Internet 3 | * Copyright (C) 2006-2011 kindsoft.net 4 | * 5 | * @author Roddy 6 | * @site http://www.kindsoft.net/ 7 | * @licence http://www.kindsoft.net/license.php 8 | *******************************************************************************/ 9 | 10 | KindEditor.plugin('anchor', function(K) { 11 | var self = this, name = 'anchor', lang = self.lang(name + '.'); 12 | self.plugin.anchor = { 13 | edit : function() { 14 | var html = ['
', 15 | '
', 16 | '', 17 | '', 18 | '
', 19 | '
'].join(''); 20 | var dialog = self.createDialog({ 21 | name : name, 22 | width : 300, 23 | title : self.lang(name), 24 | body : html, 25 | yesBtn : { 26 | name : self.lang('yes'), 27 | click : function(e) { 28 | self.insertHtml('').hideDialog().focus(); 29 | } 30 | } 31 | }); 32 | var div = dialog.div, 33 | nameBox = K('input[name="name"]', div); 34 | var img = self.plugin.getSelectedAnchor(); 35 | if (img) { 36 | nameBox.val(unescape(img.attr('data-ke-name'))); 37 | } 38 | nameBox[0].focus(); 39 | nameBox[0].select(); 40 | }, 41 | 'delete' : function() { 42 | self.plugin.getSelectedAnchor().remove(); 43 | } 44 | }; 45 | self.clickToolbar(name, self.plugin.anchor.edit); 46 | }); 47 | -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/autoheight/autoheight.js: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * KindEditor - WYSIWYG HTML Editor for Internet 3 | * Copyright (C) 2006-2011 kindsoft.net 4 | * 5 | * @author Roddy 6 | * @site http://www.kindsoft.net/ 7 | * @licence http://www.kindsoft.net/license.php 8 | *******************************************************************************/ 9 | 10 | KindEditor.plugin('autoheight', function(K) { 11 | var self = this; 12 | 13 | if (!self.autoHeightMode) { 14 | return; 15 | } 16 | 17 | var minHeight; 18 | 19 | function hideScroll() { 20 | var edit = self.edit; 21 | var body = edit.doc.body; 22 | edit.iframe[0].scroll = 'no'; 23 | body.style.overflowY = 'hidden'; 24 | } 25 | 26 | function resetHeight() { 27 | var edit = self.edit; 28 | var body = edit.doc.body; 29 | edit.iframe.height(minHeight); 30 | self.resize(null, Math.max((K.IE ? body.scrollHeight : body.offsetHeight) + 76, minHeight)); 31 | } 32 | 33 | function init() { 34 | minHeight = K.removeUnit(self.height); 35 | 36 | self.edit.afterChange(resetHeight); 37 | hideScroll(); 38 | resetHeight(); 39 | } 40 | 41 | if (self.isCreated) { 42 | init(); 43 | } else { 44 | self.afterCreate(init); 45 | } 46 | }); 47 | 48 | /* 49 | * 如何实现真正的自动高度? 50 | * 修改编辑器高度之后,再次获取body内容高度时,最小值只会是当前iframe的设置高度,这样就导致高度只增不减。 51 | * 所以每次获取body内容高度之前,先将iframe的高度重置为最小高度,这样就能获取body的实际高度。 52 | * 由此就实现了真正的自动高度 53 | * 测试:chrome、firefox、IE9、IE8 54 | * */ 55 | -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/baidumap/baidumap.js: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * KindEditor - WYSIWYG HTML Editor for Internet 3 | * Copyright (C) 2006-2011 kindsoft.net 4 | * 5 | * @author Roddy 6 | * @site http://www.kindsoft.net/ 7 | * @licence http://www.kindsoft.net/license.php 8 | *******************************************************************************/ 9 | 10 | // Baidu Maps: http://dev.baidu.com/wiki/map/index.php?title=%E9%A6%96%E9%A1%B5 11 | 12 | KindEditor.plugin('baidumap', function(K) { 13 | var self = this, name = 'baidumap', lang = self.lang(name + '.'); 14 | var mapWidth = K.undef(self.mapWidth, 558); 15 | var mapHeight = K.undef(self.mapHeight, 360); 16 | self.clickToolbar(name, function() { 17 | var html = ['
', 18 | '
', 19 | // left start 20 | '
', 21 | lang.address + ' ', 22 | '', 23 | '', 24 | '', 25 | '
', 26 | // right start 27 | '
', 28 | ' ', 29 | '
', 30 | '
', 31 | '
', 32 | '
', 33 | '
'].join(''); 34 | var dialog = self.createDialog({ 35 | name : name, 36 | width : mapWidth + 42, 37 | title : self.lang(name), 38 | body : html, 39 | yesBtn : { 40 | name : self.lang('yes'), 41 | click : function(e) { 42 | var map = win.map; 43 | var centerObj = map.getCenter(); 44 | var center = centerObj.lng + ',' + centerObj.lat; 45 | var zoom = map.getZoom(); 46 | var url = [checkbox[0].checked ? self.pluginsPath + 'baidumap/index.html' : 'http://api.map.baidu.com/staticimage', 47 | '?center=' + encodeURIComponent(center), 48 | '&zoom=' + encodeURIComponent(zoom), 49 | '&width=' + mapWidth, 50 | '&height=' + mapHeight, 51 | '&markers=' + encodeURIComponent(center), 52 | '&markerStyles=' + encodeURIComponent('l,A')].join(''); 53 | if (checkbox[0].checked) { 54 | self.insertHtml(''); 55 | } else { 56 | self.exec('insertimage', url); 57 | } 58 | self.hideDialog().focus(); 59 | } 60 | }, 61 | beforeRemove : function() { 62 | searchBtn.remove(); 63 | if (doc) { 64 | doc.write(''); 65 | } 66 | iframe.remove(); 67 | } 68 | }); 69 | var div = dialog.div, 70 | addressBox = K('[name="address"]', div), 71 | searchBtn = K('[name="searchBtn"]', div), 72 | checkbox = K('[name="insertDynamicMap"]', dialog.div), 73 | win, doc; 74 | var iframe = K(''); 75 | function ready() { 76 | win = iframe[0].contentWindow; 77 | doc = K.iframeDoc(iframe); 78 | } 79 | iframe.bind('load', function() { 80 | iframe.unbind('load'); 81 | if (K.IE) { 82 | ready(); 83 | } else { 84 | setTimeout(ready, 0); 85 | } 86 | }); 87 | K('.ke-map', div).replaceWith(iframe); 88 | // search map 89 | searchBtn.click(function() { 90 | win.search(addressBox.val()); 91 | }); 92 | }); 93 | }); 94 | -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/baidumap/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 百度地图API自定义地图 8 | 9 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 83 | -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/baidumap/map.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Baidu Maps 6 | 10 | 11 | 39 | 40 | 41 |
42 | 43 | 44 | -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/clearhtml/clearhtml.js: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * KindEditor - WYSIWYG HTML Editor for Internet 3 | * Copyright (C) 2006-2011 kindsoft.net 4 | * 5 | * @author Roddy 6 | * @site http://www.kindsoft.net/ 7 | * @licence http://www.kindsoft.net/license.php 8 | *******************************************************************************/ 9 | 10 | KindEditor.plugin('clearhtml', function(K) { 11 | var self = this, name = 'clearhtml'; 12 | self.clickToolbar(name, function() { 13 | self.focus(); 14 | var html = self.html(); 15 | html = html.replace(/(]*>)([\s\S]*?)(<\/script>)/ig, ''); 16 | html = html.replace(/(]*>)([\s\S]*?)(<\/style>)/ig, ''); 17 | html = K.formatHtml(html, { 18 | a : ['href', 'target'], 19 | embed : ['src', 'width', 'height', 'type', 'loop', 'autostart', 'quality', '.width', '.height', 'align', 'allowscriptaccess'], 20 | img : ['src', 'width', 'height', 'border', 'alt', 'title', '.width', '.height'], 21 | table : ['border'], 22 | 'td,th' : ['rowspan', 'colspan'], 23 | 'div,hr,br,tbody,tr,p,ol,ul,li,blockquote,h1,h2,h3,h4,h5,h6' : [] 24 | }); 25 | self.html(html); 26 | self.cmd.selection(true); 27 | self.addBookmark(); 28 | }); 29 | }); 30 | -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/code/code.js: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * KindEditor - WYSIWYG HTML Editor for Internet 3 | * Copyright (C) 2006-2011 kindsoft.net 4 | * 5 | * @author Roddy 6 | * @site http://www.kindsoft.net/ 7 | * @licence http://www.kindsoft.net/license.php 8 | *******************************************************************************/ 9 | 10 | // google code prettify: http://google-code-prettify.googlecode.com/ 11 | // http://google-code-prettify.googlecode.com/ 12 | 13 | KindEditor.plugin('code', function(K) { 14 | var self = this, name = 'code'; 15 | self.clickToolbar(name, function() { 16 | var lang = self.lang(name + '.'), 17 | html = ['
', 18 | '
', 19 | '', 35 | '
', 36 | '', 37 | '
'].join(''), 38 | dialog = self.createDialog({ 39 | name : name, 40 | width : 450, 41 | title : self.lang(name), 42 | body : html, 43 | yesBtn : { 44 | name : self.lang('yes'), 45 | click : function(e) { 46 | var type = K('.ke-code-type', dialog.div).val(), 47 | code = textarea.val(), 48 | cls = type === '' ? '' : ' lang-' + type, 49 | html = '
\n' + K.escape(code) + '
'; 50 | if (K.trim(code) === '') { 51 | alert(lang.pleaseInput); 52 | textarea[0].focus(); 53 | return; 54 | } 55 | self.insertHtml(html).hideDialog().focus(); 56 | } 57 | } 58 | }), 59 | textarea = K('textarea', dialog.div); 60 | textarea[0].focus(); 61 | }); 62 | }); 63 | -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/code/prettify.css: -------------------------------------------------------------------------------- 1 | .pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun,.opn,.clo{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun,.opn,.clo{color:#440}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee} 2 | 3 | pre.prettyprint { 4 | border: 0; 5 | border-left: 3px solid rgb(204, 204, 204); 6 | margin-left: 2em; 7 | padding: 0.5em; 8 | font-size: 110%; 9 | display: block; 10 | font-family: "Consolas", "Monaco", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; 11 | margin: 1em 0px; 12 | white-space: pre; 13 | } 14 | -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/emoticons.js: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * KindEditor - WYSIWYG HTML Editor for Internet 3 | * Copyright (C) 2006-2011 kindsoft.net 4 | * 5 | * @author Roddy 6 | * @site http://www.kindsoft.net/ 7 | * @licence http://www.kindsoft.net/license.php 8 | *******************************************************************************/ 9 | 10 | KindEditor.plugin('emoticons', function(K) { 11 | var self = this, name = 'emoticons', 12 | path = (self.emoticonsPath || self.pluginsPath + 'emoticons/images/'), 13 | allowPreview = self.allowPreviewEmoticons === undefined ? true : self.allowPreviewEmoticons, 14 | currentPageNum = 1; 15 | self.clickToolbar(name, function() { 16 | var rows = 5, cols = 9, total = 135, startNum = 0, 17 | cells = rows * cols, pages = Math.ceil(total / cells), 18 | colsHalf = Math.floor(cols / 2), 19 | wrapperDiv = K('
'), 20 | elements = [], 21 | menu = self.createMenu({ 22 | name : name, 23 | beforeRemove : function() { 24 | removeEvent(); 25 | } 26 | }); 27 | menu.div.append(wrapperDiv); 28 | var previewDiv, previewImg; 29 | if (allowPreview) { 30 | previewDiv = K('
').css('right', 0); 31 | previewImg = K(''); 32 | wrapperDiv.append(previewDiv); 33 | previewDiv.append(previewImg); 34 | } 35 | function bindCellEvent(cell, j, num) { 36 | if (previewDiv) { 37 | cell.mouseover(function() { 38 | if (j > colsHalf) { 39 | previewDiv.css('left', 0); 40 | previewDiv.css('right', ''); 41 | } else { 42 | previewDiv.css('left', ''); 43 | previewDiv.css('right', 0); 44 | } 45 | previewImg.attr('src', path + num + '.gif'); 46 | K(this).addClass('ke-on'); 47 | }); 48 | } else { 49 | cell.mouseover(function() { 50 | K(this).addClass('ke-on'); 51 | }); 52 | } 53 | cell.mouseout(function() { 54 | K(this).removeClass('ke-on'); 55 | }); 56 | cell.click(function(e) { 57 | self.insertHtml('').hideMenu().focus(); 58 | e.stop(); 59 | }); 60 | } 61 | function createEmoticonsTable(pageNum, parentDiv) { 62 | var table = document.createElement('table'); 63 | parentDiv.append(table); 64 | if (previewDiv) { 65 | K(table).mouseover(function() { 66 | previewDiv.show('block'); 67 | }); 68 | K(table).mouseout(function() { 69 | previewDiv.hide(); 70 | }); 71 | elements.push(K(table)); 72 | } 73 | table.className = 'ke-table'; 74 | table.cellPadding = 0; 75 | table.cellSpacing = 0; 76 | table.border = 0; 77 | var num = (pageNum - 1) * cells + startNum; 78 | for (var i = 0; i < rows; i++) { 79 | var row = table.insertRow(i); 80 | for (var j = 0; j < cols; j++) { 81 | var cell = K(row.insertCell(j)); 82 | cell.addClass('ke-cell'); 83 | bindCellEvent(cell, j, num); 84 | var span = K('') 85 | .css('background-position', '-' + (24 * num) + 'px 0px') 86 | .css('background-image', 'url(' + path + 'static.gif)'); 87 | cell.append(span); 88 | elements.push(cell); 89 | num++; 90 | } 91 | } 92 | return table; 93 | } 94 | var table = createEmoticonsTable(currentPageNum, wrapperDiv); 95 | function removeEvent() { 96 | K.each(elements, function() { 97 | this.unbind(); 98 | }); 99 | } 100 | var pageDiv; 101 | function bindPageEvent(el, pageNum) { 102 | el.click(function(e) { 103 | removeEvent(); 104 | table.parentNode.removeChild(table); 105 | pageDiv.remove(); 106 | table = createEmoticonsTable(pageNum, wrapperDiv); 107 | createPageTable(pageNum); 108 | currentPageNum = pageNum; 109 | e.stop(); 110 | }); 111 | } 112 | function createPageTable(currentPageNum) { 113 | pageDiv = K('
'); 114 | wrapperDiv.append(pageDiv); 115 | for (var pageNum = 1; pageNum <= pages; pageNum++) { 116 | if (currentPageNum !== pageNum) { 117 | var a = K('
[' + pageNum + ']'); 118 | bindPageEvent(a, pageNum); 119 | pageDiv.append(a); 120 | elements.push(a); 121 | } else { 122 | pageDiv.append(K('@[' + pageNum + ']')); 123 | } 124 | pageDiv.append(K('@ ')); 125 | } 126 | } 127 | createPageTable(currentPageNum); 128 | }); 129 | }); 130 | -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/0.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/0.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/1.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/10.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/10.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/100.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/100.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/101.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/101.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/102.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/102.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/103.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/103.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/104.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/104.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/105.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/105.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/106.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/106.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/107.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/107.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/108.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/108.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/109.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/109.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/11.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/11.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/110.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/110.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/111.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/111.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/112.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/112.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/113.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/113.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/114.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/114.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/115.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/115.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/116.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/116.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/117.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/117.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/118.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/118.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/119.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/119.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/12.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/12.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/120.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/120.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/121.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/121.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/122.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/122.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/123.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/123.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/124.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/124.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/125.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/125.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/126.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/126.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/127.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/127.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/128.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/128.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/129.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/129.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/13.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/13.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/130.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/130.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/131.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/131.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/132.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/132.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/133.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/133.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/134.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/134.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/14.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/14.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/15.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/15.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/16.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/16.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/17.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/17.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/18.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/18.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/19.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/19.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/2.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/20.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/20.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/21.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/21.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/22.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/22.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/23.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/23.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/24.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/24.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/25.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/25.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/26.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/26.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/27.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/27.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/28.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/28.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/29.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/29.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/3.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/30.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/30.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/31.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/31.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/32.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/32.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/33.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/33.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/34.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/34.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/35.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/35.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/36.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/36.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/37.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/37.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/38.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/38.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/39.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/39.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/4.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/4.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/40.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/40.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/41.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/41.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/42.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/42.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/43.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/43.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/44.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/44.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/45.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/45.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/46.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/46.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/47.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/47.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/48.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/48.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/49.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/49.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/5.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/5.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/50.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/50.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/51.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/51.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/52.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/52.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/53.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/53.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/54.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/54.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/55.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/55.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/56.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/56.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/57.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/57.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/58.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/58.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/59.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/59.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/6.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/6.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/60.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/60.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/61.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/61.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/62.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/62.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/63.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/63.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/64.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/64.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/65.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/65.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/66.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/66.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/67.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/67.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/68.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/68.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/69.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/69.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/7.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/7.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/70.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/70.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/71.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/71.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/72.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/72.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/73.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/73.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/74.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/74.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/75.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/75.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/76.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/76.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/77.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/77.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/78.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/78.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/79.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/79.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/8.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/8.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/80.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/80.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/81.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/81.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/82.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/82.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/83.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/83.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/84.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/84.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/85.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/85.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/86.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/86.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/87.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/87.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/88.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/88.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/89.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/89.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/9.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/9.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/90.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/90.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/91.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/91.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/92.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/92.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/93.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/93.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/94.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/94.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/95.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/95.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/96.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/96.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/97.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/97.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/98.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/98.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/99.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/99.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/emoticons/images/static.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/emoticons/images/static.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/filemanager/images/file-16.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/filemanager/images/file-16.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/filemanager/images/file-64.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/filemanager/images/file-64.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/filemanager/images/folder-16.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/filemanager/images/folder-16.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/filemanager/images/folder-64.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/filemanager/images/folder-64.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/filemanager/images/go-up.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/filemanager/images/go-up.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/fixtoolbar/fixtoolbar.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by chenyihong on 14/12/4. 3 | */ 4 | 5 | KindEditor.plugin('fixtoolbar', function (K) { 6 | var self = this; 7 | if (!self.fixToolBar) { 8 | return; 9 | } 10 | 11 | function init() { 12 | var toolbar = K('.ke-toolbar'); 13 | var originY = toolbar.pos().y; 14 | K(window).bind('scroll', function () { 15 | if (toolbar.css('position') == 'fixed') { 16 | if(document.body.scrollTop - originY < 0){ 17 | toolbar.css('position', 'static'); 18 | toolbar.css('top', 'auto'); 19 | } 20 | } else { 21 | if (toolbar.pos().y - document.body.scrollTop < 0) { 22 | toolbar.css('position', 'fixed'); 23 | toolbar.css('top', 0); 24 | } 25 | } 26 | }); 27 | } 28 | 29 | if (self.isCreated) { 30 | init(); 31 | } else { 32 | self.afterCreate(init); 33 | } 34 | 35 | }); 36 | -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/image/images/align_left.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/image/images/align_left.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/image/images/align_right.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/image/images/align_right.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/image/images/align_top.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/image/images/align_top.gif -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/image/images/refresh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/image/images/refresh.png -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/insertfile/insertfile.js: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * KindEditor - WYSIWYG HTML Editor for Internet 3 | * Copyright (C) 2006-2011 kindsoft.net 4 | * 5 | * @author Roddy 6 | * @site http://www.kindsoft.net/ 7 | * @licence http://www.kindsoft.net/license.php 8 | *******************************************************************************/ 9 | 10 | KindEditor.plugin('insertfile', function(K) { 11 | var self = this, name = 'insertfile', 12 | allowFileUpload = K.undef(self.allowFileUpload, true), 13 | allowFileManager = K.undef(self.allowFileManager, false), 14 | formatUploadUrl = K.undef(self.formatUploadUrl, true), 15 | uploadJson = K.undef(self.uploadJson, self.basePath + 'php/upload_json.php'), 16 | extraParams = K.undef(self.extraFileUploadParams, {}), 17 | filePostName = K.undef(self.filePostName, 'imgFile'), 18 | lang = self.lang(name + '.'); 19 | self.plugin.fileDialog = function(options) { 20 | var fileUrl = K.undef(options.fileUrl, 'http://'), 21 | fileTitle = K.undef(options.fileTitle, ''), 22 | clickFn = options.clickFn; 23 | var html = [ 24 | '
', 25 | '
', 26 | '', 27 | '  ', 28 | '  ', 29 | '', 30 | '', 31 | '', 32 | '
', 33 | //title 34 | '
', 35 | '', 36 | '
', 37 | '
', 38 | //form end 39 | '', 40 | '
' 41 | ].join(''); 42 | var dialog = self.createDialog({ 43 | name : name, 44 | width : 450, 45 | title : self.lang(name), 46 | body : html, 47 | yesBtn : { 48 | name : self.lang('yes'), 49 | click : function(e) { 50 | var url = K.trim(urlBox.val()), 51 | title = titleBox.val(); 52 | if (url == 'http://' || K.invalidUrl(url)) { 53 | alert(self.lang('invalidUrl')); 54 | urlBox[0].focus(); 55 | return; 56 | } 57 | if (K.trim(title) === '') { 58 | title = url; 59 | } 60 | clickFn.call(self, url, title); 61 | } 62 | } 63 | }), 64 | div = dialog.div; 65 | 66 | var urlBox = K('[name="url"]', div), 67 | viewServerBtn = K('[name="viewServer"]', div), 68 | titleBox = K('[name="title"]', div); 69 | 70 | if (allowFileUpload) { 71 | var uploadbutton = K.uploadbutton({ 72 | button : K('.ke-upload-button', div)[0], 73 | fieldName : filePostName, 74 | url : K.addParam(uploadJson, 'dir=file'), 75 | extraParams : extraParams, 76 | afterUpload : function(data) { 77 | dialog.hideLoading(); 78 | if (data.error === 0) { 79 | var url = data.url; 80 | if (formatUploadUrl) { 81 | url = K.formatUrl(url, 'absolute'); 82 | } 83 | urlBox.val(url); 84 | if (self.afterUpload) { 85 | self.afterUpload.call(self, url, data, name); 86 | } 87 | alert(self.lang('uploadSuccess')); 88 | } else { 89 | alert(data.message); 90 | } 91 | }, 92 | afterError : function(html) { 93 | dialog.hideLoading(); 94 | self.errorDialog(html); 95 | } 96 | }); 97 | uploadbutton.fileBox.change(function(e) { 98 | dialog.showLoading(self.lang('uploadLoading')); 99 | uploadbutton.submit(); 100 | }); 101 | } else { 102 | K('.ke-upload-button', div).hide(); 103 | } 104 | if (allowFileManager) { 105 | viewServerBtn.click(function(e) { 106 | self.loadPlugin('filemanager', function() { 107 | self.plugin.filemanagerDialog({ 108 | viewType : 'LIST', 109 | dirName : 'file', 110 | clickFn : function(url, title) { 111 | if (self.dialogs.length > 1) { 112 | K('[name="url"]', div).val(url); 113 | if (self.afterSelectFile) { 114 | self.afterSelectFile.call(self, url); 115 | } 116 | self.hideDialog(); 117 | } 118 | } 119 | }); 120 | }); 121 | }); 122 | } else { 123 | viewServerBtn.hide(); 124 | } 125 | urlBox.val(fileUrl); 126 | titleBox.val(fileTitle); 127 | urlBox[0].focus(); 128 | urlBox[0].select(); 129 | }; 130 | self.clickToolbar(name, function() { 131 | self.plugin.fileDialog({ 132 | clickFn : function(url, title) { 133 | var html = '' + title + ''; 134 | self.insertHtml(html).hideDialog().focus(); 135 | } 136 | }); 137 | }); 138 | }); 139 | -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/lineheight/lineheight.js: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * KindEditor - WYSIWYG HTML Editor for Internet 3 | * Copyright (C) 2006-2011 kindsoft.net 4 | * 5 | * @author Roddy 6 | * @site http://www.kindsoft.net/ 7 | * @licence http://www.kindsoft.net/license.php 8 | *******************************************************************************/ 9 | 10 | KindEditor.plugin('lineheight', function(K) { 11 | var self = this, name = 'lineheight', lang = self.lang(name + '.'); 12 | self.clickToolbar(name, function() { 13 | var curVal = '', commonNode = self.cmd.commonNode({'*' : '.line-height'}); 14 | if (commonNode) { 15 | curVal = commonNode.css('line-height'); 16 | } 17 | var menu = self.createMenu({ 18 | name : name, 19 | width : 150 20 | }); 21 | K.each(lang.lineHeight, function(i, row) { 22 | K.each(row, function(key, val) { 23 | menu.addItem({ 24 | title : val, 25 | checked : curVal === key, 26 | click : function() { 27 | self.cmd.toggle('', { 28 | span : '.line-height=' + key 29 | }); 30 | self.updateState(); 31 | self.addBookmark(); 32 | self.hideMenu(); 33 | } 34 | }); 35 | }); 36 | }); 37 | }); 38 | }); 39 | -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/link/link.js: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * KindEditor - WYSIWYG HTML Editor for Internet 3 | * Copyright (C) 2006-2011 kindsoft.net 4 | * 5 | * @author Roddy 6 | * @site http://www.kindsoft.net/ 7 | * @licence http://www.kindsoft.net/license.php 8 | *******************************************************************************/ 9 | 10 | KindEditor.plugin('link', function(K) { 11 | var self = this, name = 'link'; 12 | self.plugin.link = { 13 | edit : function() { 14 | var lang = self.lang(name + '.'), 15 | html = '
' + 16 | //url 17 | '
' + 18 | '' + 19 | '
' + 20 | //type 21 | '
' + 22 | '' + 23 | '' + 24 | '
' + 25 | '
', 26 | dialog = self.createDialog({ 27 | name : name, 28 | width : 450, 29 | title : self.lang(name), 30 | body : html, 31 | yesBtn : { 32 | name : self.lang('yes'), 33 | click : function(e) { 34 | var url = K.trim(urlBox.val()); 35 | if (url == 'http://' || K.invalidUrl(url)) { 36 | alert(self.lang('invalidUrl')); 37 | urlBox[0].focus(); 38 | return; 39 | } 40 | self.exec('createlink', url, typeBox.val()).hideDialog().focus(); 41 | } 42 | } 43 | }), 44 | div = dialog.div, 45 | urlBox = K('input[name="url"]', div), 46 | typeBox = K('select[name="type"]', div); 47 | urlBox.val('http://'); 48 | typeBox[0].options[0] = new Option(lang.newWindow, '_blank'); 49 | typeBox[0].options[1] = new Option(lang.selfWindow, ''); 50 | self.cmd.selection(); 51 | var a = self.plugin.getSelectedLink(); 52 | if (a) { 53 | self.cmd.range.selectNode(a[0]); 54 | self.cmd.select(); 55 | urlBox.val(a.attr('data-ke-src')); 56 | typeBox.val(a.attr('target')); 57 | } 58 | urlBox[0].focus(); 59 | urlBox[0].select(); 60 | }, 61 | 'delete' : function() { 62 | self.exec('unlink', null); 63 | } 64 | }; 65 | self.clickToolbar(name, self.plugin.link.edit); 66 | }); 67 | -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/map/map.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 10 | 11 | 53 | 54 | 55 |
56 | 57 | -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/multiimage/images/image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/multiimage/images/image.png -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/multiimage/images/select-files-en.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/multiimage/images/select-files-en.png -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/multiimage/images/select-files-zh-CN.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/multiimage/images/select-files-zh-CN.png -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/multiimage/images/swfupload.swf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/plugins/multiimage/images/swfupload.swf -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/pagebreak/pagebreak.js: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * KindEditor - WYSIWYG HTML Editor for Internet 3 | * Copyright (C) 2006-2011 kindsoft.net 4 | * 5 | * @author Roddy 6 | * @site http://www.kindsoft.net/ 7 | * @licence http://www.kindsoft.net/license.php 8 | *******************************************************************************/ 9 | 10 | KindEditor.plugin('pagebreak', function(K) { 11 | var self = this; 12 | var name = 'pagebreak'; 13 | var pagebreakHtml = K.undef(self.pagebreakHtml, '
'); 14 | 15 | self.clickToolbar(name, function() { 16 | var cmd = self.cmd, range = cmd.range; 17 | self.focus(); 18 | var tail = self.newlineTag == 'br' || K.WEBKIT ? '' : ''; 19 | self.insertHtml(pagebreakHtml + tail); 20 | if (tail !== '') { 21 | var p = K('#__kindeditor_tail_tag__', self.edit.doc); 22 | range.selectNodeContents(p[0]); 23 | p.removeAttr('id'); 24 | cmd.select(); 25 | } 26 | }); 27 | }); 28 | -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/plainpaste/plainpaste.js: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * KindEditor - WYSIWYG HTML Editor for Internet 3 | * Copyright (C) 2006-2011 kindsoft.net 4 | * 5 | * @author Roddy 6 | * @site http://www.kindsoft.net/ 7 | * @licence http://www.kindsoft.net/license.php 8 | *******************************************************************************/ 9 | 10 | KindEditor.plugin('plainpaste', function(K) { 11 | var self = this, name = 'plainpaste'; 12 | self.clickToolbar(name, function() { 13 | var lang = self.lang(name + '.'), 14 | html = '
' + 15 | '
' + lang.comment + '
' + 16 | '' + 17 | '
', 18 | dialog = self.createDialog({ 19 | name : name, 20 | width : 450, 21 | title : self.lang(name), 22 | body : html, 23 | yesBtn : { 24 | name : self.lang('yes'), 25 | click : function(e) { 26 | var html = textarea.val(); 27 | html = K.escape(html); 28 | html = html.replace(/ {2}/g, '  '); 29 | if (self.newlineTag == 'p') { 30 | html = html.replace(/^/, '

').replace(/$/, '

').replace(/\n/g, '

'); 31 | } else { 32 | html = html.replace(/\n/g, '
$&'); 33 | } 34 | self.insertHtml(html).hideDialog().focus(); 35 | } 36 | } 37 | }), 38 | textarea = K('textarea', dialog.div); 39 | textarea[0].focus(); 40 | }); 41 | }); 42 | -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/preview/preview.js: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * KindEditor - WYSIWYG HTML Editor for Internet 3 | * Copyright (C) 2006-2011 kindsoft.net 4 | * 5 | * @author Roddy 6 | * @site http://www.kindsoft.net/ 7 | * @licence http://www.kindsoft.net/license.php 8 | *******************************************************************************/ 9 | 10 | KindEditor.plugin('preview', function(K) { 11 | var self = this, name = 'preview', undefined; 12 | self.clickToolbar(name, function() { 13 | var lang = self.lang(name + '.'), 14 | html = '

' + 15 | '' + 16 | '
', 17 | dialog = self.createDialog({ 18 | name : name, 19 | width : 750, 20 | title : self.lang(name), 21 | body : html 22 | }), 23 | iframe = K('iframe', dialog.div), 24 | doc = K.iframeDoc(iframe); 25 | doc.open(); 26 | doc.write(self.fullHtml()); 27 | doc.close(); 28 | K(doc.body).css('background-color', '#FFF'); 29 | iframe[0].contentWindow.focus(); 30 | }); 31 | }); 32 | -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/quickformat/quickformat.js: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * KindEditor - WYSIWYG HTML Editor for Internet 3 | * Copyright (C) 2006-2011 kindsoft.net 4 | * 5 | * @author Roddy 6 | * @site http://www.kindsoft.net/ 7 | * @licence http://www.kindsoft.net/license.php 8 | *******************************************************************************/ 9 | 10 | KindEditor.plugin('quickformat', function(K) { 11 | var self = this, name = 'quickformat', 12 | blockMap = K.toMap('blockquote,center,div,h1,h2,h3,h4,h5,h6,p'); 13 | function getFirstChild(knode) { 14 | var child = knode.first(); 15 | while (child && child.first()) { 16 | child = child.first(); 17 | } 18 | return child; 19 | } 20 | self.clickToolbar(name, function() { 21 | self.focus(); 22 | var doc = self.edit.doc, 23 | range = self.cmd.range, 24 | child = K(doc.body).first(), next, 25 | nodeList = [], subList = [], 26 | bookmark = range.createBookmark(true); 27 | while(child) { 28 | next = child.next(); 29 | var firstChild = getFirstChild(child); 30 | if (!firstChild || firstChild.name != 'img') { 31 | if (blockMap[child.name]) { 32 | child.html(child.html().replace(/^(\s| | )+/ig, '')); 33 | child.css('text-indent', '2em'); 34 | } else { 35 | subList.push(child); 36 | } 37 | if (!next || (blockMap[next.name] || blockMap[child.name] && !blockMap[next.name])) { 38 | if (subList.length > 0) { 39 | nodeList.push(subList); 40 | } 41 | subList = []; 42 | } 43 | } 44 | child = next; 45 | } 46 | K.each(nodeList, function(i, subList) { 47 | var wrapper = K('

', doc); 48 | subList[0].before(wrapper); 49 | K.each(subList, function(i, knode) { 50 | wrapper.append(knode); 51 | }); 52 | }); 53 | range.moveToBookmark(bookmark); 54 | self.addBookmark(); 55 | }); 56 | }); 57 | 58 | /** 59 | -------------------------- 60 | abcd
61 | 1234
62 | 63 | to 64 | 65 |

66 | abcd
67 | 1234
68 |

69 | 70 | -------------------------- 71 | 72 |   abcd1233 73 |

1234

74 | 75 | to 76 | 77 |

abcd1233

78 |

1234

79 | 80 | -------------------------- 81 | */ -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/template/html/1.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

8 | 在此处输入标题 9 |

10 |

11 | 在此处输入内容 12 |

13 | 14 | -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/template/html/2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

8 | 标题 9 |

10 | 11 | 12 | 13 | 16 | 19 | 20 | 21 | 24 | 27 | 28 | 29 | 32 | 35 | 36 | 37 |
14 |

标题1

15 |
17 |

标题1

18 |
22 | 内容1 23 | 25 | 内容2 26 |
30 | 内容3 31 | 33 | 内容4 34 |
38 |

39 | 表格说明 40 |

41 | 42 | -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/template/html/3.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

8 | 在此处输入内容 9 |

10 |
    11 |
  1. 12 | 描述1 13 |
  2. 14 |
  3. 15 | 描述2 16 |
  4. 17 |
  5. 18 | 描述3 19 |
  6. 20 |
21 |

22 | 在此处输入内容 23 |

24 |
    25 |
  • 26 | 描述1 27 |
  • 28 |
  • 29 | 描述2 30 |
  • 31 |
  • 32 | 描述3 33 |
  • 34 |
35 | 36 | -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/template/template.js: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * KindEditor - WYSIWYG HTML Editor for Internet 3 | * Copyright (C) 2006-2011 kindsoft.net 4 | * 5 | * @author Roddy 6 | * @site http://www.kindsoft.net/ 7 | * @licence http://www.kindsoft.net/license.php 8 | *******************************************************************************/ 9 | 10 | KindEditor.plugin('template', function(K) { 11 | var self = this, name = 'template', lang = self.lang(name + '.'), 12 | htmlPath = self.pluginsPath + name + '/html/'; 13 | function getFilePath(fileName) { 14 | return htmlPath + fileName + '?ver=' + encodeURIComponent(K.DEBUG ? K.TIME : K.VERSION); 15 | } 16 | self.clickToolbar(name, function() { 17 | var lang = self.lang(name + '.'), 18 | arr = ['
', 19 | '
', 20 | // left start 21 | '
', 22 | lang. selectTemplate + '
', 28 | // right start 29 | '
', 30 | ' ', 31 | '
', 32 | '
', 33 | '
', 34 | '', 35 | '
'].join(''); 36 | var dialog = self.createDialog({ 37 | name : name, 38 | width : 500, 39 | title : self.lang(name), 40 | body : html, 41 | yesBtn : { 42 | name : self.lang('yes'), 43 | click : function(e) { 44 | var doc = K.iframeDoc(iframe); 45 | self[checkbox[0].checked ? 'html' : 'insertHtml'](doc.body.innerHTML).hideDialog().focus(); 46 | } 47 | } 48 | }); 49 | var selectBox = K('select', dialog.div), 50 | checkbox = K('[name="replaceFlag"]', dialog.div), 51 | iframe = K('iframe', dialog.div); 52 | checkbox[0].checked = true; 53 | iframe.attr('src', getFilePath(selectBox.val())); 54 | selectBox.change(function() { 55 | iframe.attr('src', getFilePath(this.value)); 56 | }); 57 | }); 58 | }); 59 | -------------------------------------------------------------------------------- /public/static/kindeditor/plugins/wordpaste/wordpaste.js: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * KindEditor - WYSIWYG HTML Editor for Internet 3 | * Copyright (C) 2006-2011 kindsoft.net 4 | * 5 | * @author Roddy 6 | * @site http://www.kindsoft.net/ 7 | * @licence http://www.kindsoft.net/license.php 8 | *******************************************************************************/ 9 | 10 | KindEditor.plugin('wordpaste', function(K) { 11 | var self = this, name = 'wordpaste'; 12 | self.clickToolbar(name, function() { 13 | var lang = self.lang(name + '.'), 14 | html = '
' + 15 | '
' + lang.comment + '
' + 16 | '' + 17 | '
', 18 | dialog = self.createDialog({ 19 | name : name, 20 | width : 450, 21 | title : self.lang(name), 22 | body : html, 23 | yesBtn : { 24 | name : self.lang('yes'), 25 | click : function(e) { 26 | var str = doc.body.innerHTML; 27 | str = K.clearMsWord(str, self.filterMode ? self.htmlTags : K.options.htmlTags); 28 | self.insertHtml(str).hideDialog().focus(); 29 | } 30 | } 31 | }), 32 | div = dialog.div, 33 | iframe = K('iframe', div), 34 | doc = K.iframeDoc(iframe); 35 | if (!K.IE) { 36 | doc.designMode = 'on'; 37 | } 38 | doc.open(); 39 | doc.write('WordPaste'); 40 | doc.write(''); 41 | if (!K.IE) { 42 | doc.write('
'); 43 | } 44 | doc.write(''); 45 | doc.close(); 46 | if (K.IE) { 47 | doc.body.contentEditable = 'true'; 48 | } 49 | iframe[0].contentWindow.focus(); 50 | }); 51 | }); 52 | -------------------------------------------------------------------------------- /public/static/kindeditor/themes/common/anchor.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/themes/common/anchor.gif -------------------------------------------------------------------------------- /public/static/kindeditor/themes/common/blank.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/themes/common/blank.gif -------------------------------------------------------------------------------- /public/static/kindeditor/themes/common/flash.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/themes/common/flash.gif -------------------------------------------------------------------------------- /public/static/kindeditor/themes/common/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/themes/common/loading.gif -------------------------------------------------------------------------------- /public/static/kindeditor/themes/common/media.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/themes/common/media.gif -------------------------------------------------------------------------------- /public/static/kindeditor/themes/common/rm.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/themes/common/rm.gif -------------------------------------------------------------------------------- /public/static/kindeditor/themes/default/background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/themes/default/background.png -------------------------------------------------------------------------------- /public/static/kindeditor/themes/default/default.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/themes/default/default.png -------------------------------------------------------------------------------- /public/static/kindeditor/themes/qq/editor.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/public/static/kindeditor/themes/qq/editor.gif -------------------------------------------------------------------------------- /public/static/kindeditor/themes/qq/qq.css: -------------------------------------------------------------------------------- 1 | /* container */ 2 | .ke-container-qq { 3 | display: block; 4 | border: 1px solid #c3c3c3; 5 | background-color: #FFF; 6 | overflow: hidden; 7 | margin: 0; 8 | padding: 0; 9 | } 10 | /* toolbar */ 11 | .ke-container-qq .ke-toolbar { 12 | border-bottom: 1px solid #c3c3c3; 13 | background-color: #FFFFFF; 14 | padding: 2px 5px; 15 | text-align: left; 16 | overflow: hidden; 17 | zoom: 1; 18 | } 19 | .ke-toolbar-icon-url { 20 | background-image: url(editor.gif); 21 | width:18px; 22 | *xwidth:20px; 23 | height:18px; 24 | *xheight:20px; 25 | } 26 | .ke-icon-checked{ 27 | background-image: url(../default/default.png); 28 | width:16px; 29 | height:16px; 30 | } 31 | .ke-container-qq .ke-icon-bold{ 32 | background-position: 4px 1px; 33 | } 34 | .ke-container-qq .ke-icon-italic{ 35 | background-position: -27px 1px; 36 | } 37 | .ke-container-qq .ke-icon-italic{ 38 | background-position: -28px 1px; 39 | } 40 | .ke-container-qq .ke-icon-underline{ 41 | background-position: -60px 1px; 42 | } 43 | .ke-container-qq .ke-icon-fontname{ 44 | background-position: -95px 1px; 45 | } 46 | .ke-container-qq .ke-icon-fontsize{ 47 | background-position: -128px 1px; 48 | } 49 | .ke-container-qq .ke-icon-forecolor{ 50 | background-position: -159px 1px; 51 | } 52 | .ke-container-qq .ke-icon-hilitecolor{ 53 | background-position: -190px 1px; 54 | } 55 | .ke-container-qq .ke-icon-plug-align{ 56 | background-position: -223px 1px; 57 | } 58 | .plug-align-justifyleft{ 59 | background-position: -350px 1px; 60 | } 61 | .plug-align-justifycenter{ 62 | background-position: -382px 1px; 63 | } 64 | .plug-align-justifyright{ 65 | background-position: -414px 1px; 66 | } 67 | .plug-order-insertorderedlist{ 68 | background-position: -446px 1px; 69 | } 70 | .plug-order-insertunorderedlist{ 71 | background-position: -477px 1px; 72 | } 73 | .plug-indent-indent{ 74 | background-position: -513px 1px; 75 | } 76 | .plug-indent-outdent{ 77 | background-position: -545px 1px; 78 | } 79 | .ke-container-qq .ke-icon-plug-order{ 80 | background-position: -255px 1px; 81 | } 82 | .ke-container-qq .ke-icon-plug-indent{ 83 | background-position: -287px 1px; 84 | } 85 | .ke-container-qq .ke-icon-link{ 86 | background-position: -319px 1px; 87 | } 88 | 89 | .ke-container-qq .ke-toolbar .ke-outline { 90 | cursor: default; 91 | padding:0px; 92 | border:1px solid #fff; 93 | } 94 | .ke-container-qq .ke-toolbar .ke-on { 95 | border-left:1px solid white; 96 | border-top:1px solid white; 97 | border-right:1px solid gray; 98 | border-bottom:1px solid gray; 99 | background-color: #FFFFFF; 100 | } 101 | .ke-container-qq .ke-toolbar .ke-selected { 102 | border-left:1px solid gray; 103 | border-top:1px solid gray; 104 | border-right:1px solid white; 105 | border-bottom:1px solid white; 106 | background-color: #FFFFFF; 107 | } 108 | .ke-container-qq .ke-toolbar .ke-disabled { 109 | cursor: default; 110 | } 111 | 112 | .ke-colorpicker-qq{ 113 | background:#fff; 114 | } 115 | /* statusbar */ 116 | .ke-container-qq .ke-statusbar { 117 | display:none; 118 | } 119 | /* menu */ 120 | .ke-menu-qq { 121 | border:1px solid #a6a6a6; 122 | position:absolute; 123 | background:#fff; 124 | -moz-box-shadow:2px 2px 4px #DDDDDD; 125 | z-index:999; 126 | left:-400px; 127 | top:-386px; 128 | right:218px; 129 | width:130px; 130 | } 131 | .ke-menu-qq .ke-menu-item { 132 | padding:0px; 133 | background:#fff; 134 | } 135 | .ke-menu-qq .ke-menu-item-on { 136 | border:1px solid #000080;background:#FFEEC2;color:#036; 137 | } 138 | .ke-menu-qq .ke-toolbar .ke-selected { 139 | border:1px solid #9a9afb; 140 | } 141 | .ke-menu-qq .ke-menu-item-left{ 142 | width:auto; 143 | } 144 | -------------------------------------------------------------------------------- /public/static/kindeditor/themes/simple/simple.css: -------------------------------------------------------------------------------- 1 | /* container */ 2 | .ke-container-simple { 3 | display: block; 4 | border: 1px solid #CCC; 5 | background-color: #FFF; 6 | overflow: hidden; 7 | } 8 | /* toolbar */ 9 | .ke-container-simple .ke-toolbar { 10 | border-bottom: 1px solid #CCC; 11 | background-color: #FFF; 12 | padding: 2px 5px; 13 | overflow: hidden; 14 | } 15 | .ke-container-simple .ke-toolbar .ke-outline { 16 | border: 1px solid #FFF; 17 | background-color: transparent; 18 | margin: 1px; 19 | padding: 1px 2px; 20 | font-size: 0; 21 | line-height: 0; 22 | overflow: hidden; 23 | cursor: pointer; 24 | } 25 | .ke-container-simple .ke-toolbar .ke-on { 26 | border: 1px solid #5690D2; 27 | } 28 | .ke-container-simple .ke-toolbar .ke-selected { 29 | border: 1px solid #5690D2; 30 | background-color: #E9EFF6; 31 | } 32 | .ke-container-simple .ke-toolbar .ke-disabled { 33 | cursor: default; 34 | } 35 | /* statusbar */ 36 | .ke-container-simple .ke-statusbar { 37 | position: relative; 38 | background-color: #FFF; 39 | border-top: 1px solid #CCCCCC; 40 | font-size: 0; 41 | line-height: 0; 42 | *height: 12px; 43 | overflow: hidden; 44 | text-align: center; 45 | cursor: s-resize; 46 | } 47 | /* menu */ 48 | .ke-menu-simple { 49 | border: 1px solid #A0A0A0; 50 | background-color: #FFF; 51 | color: #222222; 52 | padding: 2px; 53 | font-family: "sans serif",tahoma,verdana,helvetica; 54 | font-size: 12px; 55 | text-align: left; 56 | overflow: hidden; 57 | } 58 | .ke-menu-simple .ke-menu-item { 59 | border: 1px solid #FFF; 60 | background-color: #FFF; 61 | color: #222222; 62 | height: 24px; 63 | overflow: hidden; 64 | cursor: pointer; 65 | } 66 | .ke-menu-simple .ke-menu-item-on { 67 | border: 1px solid #5690D2; 68 | background-color: #FFF; 69 | } 70 | /* colorpicker */ 71 | .ke-colorpicker-simple { 72 | border: 1px solid #A0A0A0; 73 | background-color: #FEFEFE; 74 | color: #222222; 75 | padding: 2px; 76 | } 77 | .ke-colorpicker-simple .ke-colorpicker-cell { 78 | font-size: 0; 79 | line-height: 0; 80 | border: 1px solid #FEFEFE; 81 | cursor: pointer; 82 | margin:3px; 83 | padding:0; 84 | } 85 | .ke-colorpicker-simple .ke-colorpicker-cell-top { 86 | font-family: "sans serif",tahoma,verdana,helvetica; 87 | font-size: 12px; 88 | line-height: 24px; 89 | border: 1px solid #FEFEFE; 90 | cursor: pointer; 91 | margin:0; 92 | padding:0; 93 | text-align: center; 94 | } 95 | .ke-colorpicker-simple .ke-colorpicker-cell-on { 96 | border: 1px solid #5690D2; 97 | } 98 | .ke-colorpicker-simple .ke-colorpicker-cell-selected { 99 | border: 1px solid #2446AB; 100 | } 101 | -------------------------------------------------------------------------------- /public/static/upload/readme.md: -------------------------------------------------------------------------------- 1 | 文件上传目录,保持可写状态即可 -------------------------------------------------------------------------------- /resource/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phpzc/WebBug/27421a87f7d8b38f8346a3fcba3ec27f941d54a3/resource/1.png -------------------------------------------------------------------------------- /route/route.php: -------------------------------------------------------------------------------- 1 | 10 | // +---------------------------------------------------------------------- 11 | 12 | Route::get('think', function () { 13 | return 'hello,ThinkPHP5!'; 14 | }); 15 | 16 | Route::get('hello/:name', 'index/hello'); 17 | 18 | Route::rule('user/login','index/user/login'); 19 | Route::rule('user/register','index/user/register'); 20 | Route::rule('base/register','index/base/register'); 21 | Route::rule('base/login','index/base/login'); 22 | Route::rule('dashboard','index/dashboard/index'); 23 | Route::rule('project/index','index/project/index'); 24 | Route::rule('project/main','index/project/main'); 25 | Route::rule('profile','index/profile/index'); 26 | Route::rule('logout','index/base/logout'); 27 | Route::rule('bug/index','index/bug/index'); 28 | return [ 29 | 30 | ]; 31 | -------------------------------------------------------------------------------- /runtime/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore -------------------------------------------------------------------------------- /think: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env php 2 | 11 | // +---------------------------------------------------------------------- 12 | 13 | namespace think; 14 | 15 | // 加载基础文件 16 | require __DIR__ . '/thinkphp/base.php'; 17 | 18 | // 执行应用 19 | Container::get('app', [__DIR__ . '/application/'])->initialize(); 20 | Console::init(); -------------------------------------------------------------------------------- /thinkphp-README.md: -------------------------------------------------------------------------------- 1 | ThinkPHP 5.1RC1 2 | =============== 3 | 4 | ThinkPHP5.1对底层架构做了进一步的改进,减少依赖,其主要特性包括: 5 | 6 | + 采用容器统一管理对象 7 | + 支持Facade 8 | + 配置和路由目录独立 9 | + 取消系统常量 10 | + 助手函数增强 11 | + 类库别名机制 12 | + 增加条件查询 13 | + 改进查询机制 14 | + 配置采用二级 15 | + 依赖注入完善 16 | 17 | 18 | > ThinkPHP5的运行环境要求PHP5.6以上。 19 | 20 | 21 | ## 目录结构 22 | 23 | 初始的目录结构如下: 24 | 25 | ~~~ 26 | www WEB部署目录(或者子目录) 27 | ├─application 应用目录 28 | │ ├─common 公共模块目录(可以更改) 29 | │ ├─module_name 模块目录 30 | │ │ ├─common.php 模块函数文件 31 | │ │ ├─controller 控制器目录 32 | │ │ ├─model 模型目录 33 | │ │ ├─view 视图目录 34 | │ │ └─ ... 更多类库目录 35 | │ │ 36 | │ ├─command.php 命令行定义文件 37 | │ ├─common.php 公共函数文件 38 | │ └─tags.php 应用行为扩展定义文件 39 | │ 40 | ├─config 应用配置目录 41 | │ ├─module_name 模块配置目录 42 | │ │ ├─database.php 数据库配置 43 | │ │ ├─cache 缓存配置 44 | │ │ └─ ... 45 | │ │ 46 | │ ├─app.php 应用配置 47 | │ ├─cache.php 缓存配置 48 | │ ├─cookie.php Cookie配置 49 | │ ├─database.php 数据库配置 50 | │ ├─log.php 日志配置 51 | │ ├─session.php Session配置 52 | │ ├─template.php 模板引擎配置 53 | │ └─trace.php Trace配置 54 | │ 55 | ├─route 路由定义目录 56 | │ ├─route.php 路由定义 57 | │ └─... 更多 58 | │ 59 | ├─public WEB目录(对外访问目录) 60 | │ ├─index.php 入口文件 61 | │ ├─router.php 快速测试文件 62 | │ └─.htaccess 用于apache的重写 63 | │ 64 | ├─thinkphp 框架系统目录 65 | │ ├─lang 语言文件目录 66 | │ ├─library 框架类库目录 67 | │ │ ├─think Think类库包目录 68 | │ │ └─traits 系统Trait目录 69 | │ │ 70 | │ ├─tpl 系统模板目录 71 | │ ├─base.php 基础定义文件 72 | │ ├─console.php 控制台入口文件 73 | │ ├─convention.php 框架惯例配置文件 74 | │ ├─helper.php 助手函数文件 75 | │ ├─phpunit.xml phpunit配置文件 76 | │ └─start.php 框架入口文件 77 | │ 78 | ├─extend 扩展类库目录 79 | ├─runtime 应用的运行时目录(可写,可定制) 80 | ├─vendor 第三方类库目录(Composer依赖库) 81 | ├─build.php 自动生成定义文件(参考) 82 | ├─composer.json composer 定义文件 83 | ├─LICENSE.txt 授权说明文件 84 | ├─README.md README 文件 85 | ├─think 命令行入口文件 86 | ~~~ 87 | 88 | > router.php用于php自带webserver支持,可用于快速测试 89 | > 切换到public目录后,启动命令:php -S localhost:8888 router.php 90 | > 上面的目录结构和名称是可以改变的,这取决于你的入口文件和配置参数。 91 | 92 | ## 升级指导 93 | 94 | 原有下面系统类库的命名空间需要调整: 95 | 96 | * think\App => think\facade\App (或者 App ) 97 | * think\Cache => think\facade\Cache (或者 Cache ) 98 | * think\Config => think\facade\Config (或者 Config ) 99 | * think\Cookie => think\facade\Cookie (或者 Cookie ) 100 | * think\Debug => think\facade\Debug (或者 Debug ) 101 | * think\Hook => think\facade\Hook (或者 Hook ) 102 | * think\Lang => think\facade\Lang (或者 Lang ) 103 | * think\Log => think\facade\Log (或者 Log ) 104 | * think\Request => think\facade\Request (或者 Request ) 105 | * think\Response => think\facade\Reponse (或者 Reponse ) 106 | * think\Route => think\facade\Route (或者 Route ) 107 | * think\Session => think\facade\Session (或者 Session ) 108 | * think\Url => think\facade\Url (或者 Url ) 109 | 110 | 原有的配置文件config.php 拆分为app.php cache.php 等独立配置文件 放入config目录。 111 | 原有的路由定义文件route.php 移动到route目录 112 | 113 | ## 命名规范 114 | 115 | `ThinkPHP5`遵循PSR-2命名规范和PSR-4自动加载规范,并且注意如下规范: 116 | 117 | ### 目录和文件 118 | 119 | * 目录不强制规范,驼峰和小写+下划线模式均支持; 120 | * 类库、函数文件统一以`.php`为后缀; 121 | * 类的文件名均以命名空间定义,并且命名空间的路径和类库文件所在路径一致; 122 | * 类名和类文件名保持一致,统一采用驼峰法命名(首字母大写); 123 | 124 | ### 函数和类、属性命名 125 | * 类的命名采用驼峰法,并且首字母大写,例如 `User`、`UserType`,默认不需要添加后缀,例如`UserController`应该直接命名为`User`; 126 | * 函数的命名使用小写字母和下划线(小写字母开头)的方式,例如 `get_client_ip`; 127 | * 方法的命名使用驼峰法,并且首字母小写,例如 `getUserName`; 128 | * 属性的命名使用驼峰法,并且首字母小写,例如 `tableName`、`instance`; 129 | * 以双下划线“__”打头的函数或方法作为魔法方法,例如 `__call` 和 `__autoload`; 130 | 131 | ### 常量和配置 132 | * 常量以大写字母和下划线命名,例如 `APP_PATH`和 `THINK_PATH`; 133 | * 配置参数以小写字母和下划线命名,例如 `url_route_on` 和`url_convert`; 134 | 135 | ### 数据表和字段 136 | * 数据表和字段采用小写加下划线方式命名,并注意字段名不要以下划线开头,例如 `think_user` 表和 `user_name`字段,不建议使用驼峰和中文作为数据表字段命名。 137 | 138 | ## 参与开发 139 | 请参阅 [ThinkPHP5 核心框架包](https://github.com/top-think/framework)。 140 | 141 | ## 版权信息 142 | 143 | ThinkPHP遵循Apache2开源协议发布,并提供免费使用。 144 | 145 | 本项目包含的第三方源码和二进制文件之版权信息另行标注。 146 | 147 | 版权所有Copyright © 2006-2017 by ThinkPHP (http://thinkphp.cn) 148 | 149 | All rights reserved。 150 | 151 | ThinkPHP® 商标和著作权所有者为上海顶想信息科技有限公司。 152 | 153 | 更多细节参阅 [LICENSE.txt](LICENSE.txt) 154 | -------------------------------------------------------------------------------- /update-framework.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | composer update topthink/framework 3 | --------------------------------------------------------------------------------