Browse Source

修改部分bug,会议,邮件,列表作者信息

夏海 1 year ago
parent
commit
fe20f6cd2d
33 changed files with 588 additions and 137 deletions
  1. BIN
      .DS_Store
  2. BIN
      application/.DS_Store
  3. BIN
      application/admin/.DS_Store
  4. 42 1
      application/admin/controller/cms/Conference.php
  5. 117 1
      application/admin/controller/cms/Manuscript.php
  6. 1 1
      application/admin/controller/general/Profile.php
  7. 1 0
      application/admin/controller/user/RoleLog.php
  8. 4 0
      application/admin/lang/zh-cn/cms/conference.php
  9. 9 3
      application/admin/lang/zh-cn/cms/manuscript.php
  10. 4 0
      application/admin/lang/zh-cn/general/profile.php
  11. BIN
      application/admin/model/.DS_Store
  12. 19 0
      application/admin/model/EmailContent.php
  13. 31 20
      application/admin/view/cms/archives/add.html
  14. 29 18
      application/admin/view/cms/archives/edit.html
  15. 7 2
      application/admin/view/cms/channel/add.html
  16. 7 2
      application/admin/view/cms/channel/edit.html
  17. 23 0
      application/admin/view/cms/manuscript/email.html
  18. 1 1
      application/admin/view/cms/special_issue/edit.html
  19. 20 0
      application/admin/view/general/profile/index.html
  20. 48 0
      application/api/controller/User.php
  21. 38 2
      application/index/controller/User.php
  22. 4 0
      application/index/view/user/conference_participate.html
  23. 19 32
      application/index/view/user/inbox.html
  24. 33 1
      application/index/view/user/profile.html
  25. 3 0
      application/index/view/user/reviewer_information.html
  26. 4 3
      application/index/view/user/submit_conference.html
  27. 16 33
      application/index/view/user/unread.html
  28. BIN
      public/.DS_Store
  29. BIN
      public/assets/.DS_Store
  30. BIN
      public/assets/img/.DS_Store
  31. 41 1
      public/assets/js/backend/cms/conference.js
  32. 17 5
      public/assets/js/backend/cms/manuscript.js
  33. 50 11
      public/assets/js/frontend/user.js

BIN
.DS_Store


BIN
application/.DS_Store


BIN
application/admin/.DS_Store


+ 42 - 1
application/admin/controller/cms/Conference.php

@@ -4,6 +4,10 @@ namespace app\admin\controller\cms;
 
 use app\admin\model\cms\Participate;
 use app\common\controller\Backend;
+use app\common\model\UserRoleLog;
+use think\Db;
+use think\exception\PDOException;
+use think\exception\ValidateException;
 
 /**
  * 会议管理
@@ -19,7 +23,7 @@ class Conference extends Backend
      */
     protected $model = null;
     protected $searchFields = 'id';
-    protected $noNeedRight = ['detail'];
+    protected $noNeedRight = ['detail', 'is_adopt'];
 
     public function _initialize()
     {
@@ -92,4 +96,41 @@ class Conference extends Backend
         }
         return $this->view->fetch();
     }
+
+    /**
+     * 会议申请操作
+     *
+     * @param $ids
+     * @param $status
+     * @return void
+     * @throws \think\db\exception\DataNotFoundException
+     * @throws \think\db\exception\ModelNotFoundException
+     * @throws \think\exception\DbException
+     */
+    public function is_adopt($ids = null, $status = null)
+    {
+        $row = $this->model->get($ids);
+        if (!$row) {
+            $this->error(__('No Results were found'));
+        }
+        $result = false;
+        Db::startTrans();
+        try {
+            //是否采用模型验证
+            if ($this->modelValidate) {
+                $name = str_replace("\\model\\", "\\validate\\", get_class($this->model));
+                $validate = is_bool($this->modelValidate) ? ($this->modelSceneValidate ? $name . '.edit' : $name) : $this->modelValidate;
+                $row->validateFailException()->validate($validate);
+            }
+            $result = $row->allowField(true)->save(['status' => $status]);
+            Db::commit();
+        } catch (ValidateException|PDOException|Exception $e) {
+            Db::rollback();
+            $this->error($e->getMessage());
+        }
+        if (false === $result) {
+            $this->error(__('No rows were updated'));
+        }
+        $this->success();
+    }
 }

+ 117 - 1
application/admin/controller/cms/Manuscript.php

@@ -4,8 +4,10 @@ namespace app\admin\controller\cms;
 
 use addons\cms\library\Service;
 use app\admin\model\cms\Comments;
+use app\admin\model\EmailContent;
 use app\admin\model\User;
 use app\common\controller\Backend;
+use app\common\library\Email;
 use think\Db;
 use think\Exception;
 use think\exception\PDOException;
@@ -24,7 +26,7 @@ class Manuscript extends Backend
      */
     protected $model = null;
     protected $searchFields = '';
-    protected $noNeedRight = ['add_editor', 'comments', 'comments_detail'];
+    protected $noNeedRight = ['add_editor', 'comments', 'comments_detail', 'send_user_list'];
 
     public function _initialize()
     {
@@ -203,4 +205,118 @@ class Manuscript extends Backend
             return $this->view->fetch();
         }
     }
+
+    /**
+     * 发送邮件
+     *
+     * @param $ids
+     * @return string
+     * @throws \think\Exception
+     * @throws \think\db\exception\DataNotFoundException
+     * @throws \think\db\exception\ModelNotFoundException
+     * @throws \think\exception\DbException
+     */
+    public function email($ids = null)
+    {
+        $row = $this->model->get($ids);
+
+        $typeList = ['author' => __('Author'), 'editor' => __('Editor'), 'reviewer' => __('Reviewer')];
+
+        if ($this->request->isPost()) {
+            $params = $this->request->post("row/a");
+
+            $user = User::where(['email' => $params['send_user_email']])->find();
+            if (empty($user)) $this->error(__('No corresponding user found'));
+
+            $option = [
+                'mail_smtp_host' => $this->auth->mail_smtp_host,
+                'mail_smtp_port' => $this->auth->mail_smtp_port,
+                'mail_smtp_user' => $this->auth->mail_smtp_user,
+                'mail_smtp_pass' => $this->auth->mail_smtp_pass,
+                'mail_from' => $this->auth->mail_smtp_user,
+            ];
+
+            $email = new Email($option);
+            $result = $email
+                ->to($user->email)
+                ->subject($row->title)
+                ->message('<div style="min-height:550px; padding: 100px 55px 200px;">' . $params['send_content'] . '</div>')
+                ->send();
+
+            if ($result) {
+                $email_content_model = new EmailContent();
+                // 数据库记录发送信息
+                Db::startTrans();
+                try {
+                    $email_content_param['user_id'] = $this->auth->id;
+                    $email_content_param['email'] = $params['send_user_email'];
+                    $email_content_param['content'] = $params['send_content'];
+                    $model_result = $email_content_model->allowField(true)->save($email_content_param);
+                    Db::commit();
+                } catch (ValidateException|PDOException|Exception $e) {
+                    Db::rollback();
+                    $this->error($e->getMessage());
+                }
+                if ($model_result) {
+                    $this->success();
+                }
+            } else {
+                $this->error(__('Sending failed. Please check whether the SMTP settings are correct'));
+            }
+        }
+
+        $this->view->assign('row', $row);
+        $this->view->assign('typeList', $typeList);
+        return $this->view->fetch();
+    }
+
+    /**
+     * 对应手稿内相关人员
+     *
+     * @return \think\response\Json
+     * @throws \think\exception\DbException
+     */
+    public function send_user_list()
+    {
+        $manuscript_id = $this->request->request('manuscript_id');
+        $sendUserList = [];
+        $row = $this->model->get($manuscript_id);
+        if (!$row) {
+            $this->error(__('No Results were found'));
+        }
+
+        $email_arr = [];
+
+        // 整合作者邮箱
+        $author_email_arr = json_decode($row['author_content'], true);
+        foreach ($author_email_arr as $author_email) {
+            $email_arr[] = $author_email['email'];
+        }
+
+        // 整合编辑邮箱
+        $editor_email_arr = User::where(['id' => ['in', explode(',', $row['editor_ids'])]])->column('email');
+        foreach ($editor_email_arr as $editor_email) {
+            $email_arr[] = $editor_email;
+        }
+
+        // 整合审稿人邮箱
+        $reviewer_email_arr = User::where(['id' => ['in', explode(',', $row['editor_ids'])]])->column('email');
+        foreach ($reviewer_email_arr as $reviewer_email) {
+            $email_arr[] = $reviewer_email;
+        }
+
+        // 去重数组
+        $unique_email_arr = array_filter(array_unique($email_arr));
+
+        foreach ($unique_email_arr as $key => $item) {
+            $sendUserList[] = [
+                'id' => $item,
+                'name' => $item,
+            ];
+        }
+
+        $result = array("total" => count($sendUserList), "rows" => $sendUserList);
+
+        return json($result);
+    }
 }

+ 1 - 1
application/admin/controller/general/Profile.php

@@ -52,7 +52,7 @@ class Profile extends Backend
             $params = $this->request->post("row/a");
             $params = array_filter(array_intersect_key(
                 $params,
-                array_flip(array('email', 'nickname', 'password', 'avatar'))
+                array_flip(array('email', 'nickname', 'password', 'avatar', 'mail_smtp_host', 'mail_smtp_port', 'mail_smtp_user', 'mail_smtp_pass'))
             ));
             unset($v);
             if (!Validate::is($params['email'], "email")) {

+ 1 - 0
application/admin/controller/user/RoleLog.php

@@ -21,6 +21,7 @@ class RoleLog extends Backend
     protected $model = null;
     protected $role_list = ['author' => '作者', 'review' => '审稿人', 'editor' => '编辑'];
     protected $adopt_list = ['review' => '审核中', 'fault' => '拒绝', 'correct' => '通过'];
+    protected $noNeedRight = ['detail', 'is_adopt'];
 
     public function _initialize()
     {

+ 4 - 0
application/admin/lang/zh-cn/cms/conference.php

@@ -14,4 +14,8 @@ return [
     'Telephone'                     => '电话',
     'Fax'                           => '传真',
     'Vat'                           => '增值税',
+    'Review'                        => '未审核',
+    'Correct'                       => '通过',
+    'Fault'                         => '拒绝',
+    'Meeting Participation Details' => '参与会议详情',
 ];

+ 9 - 3
application/admin/lang/zh-cn/cms/manuscript.php

@@ -11,7 +11,13 @@ return [
     'Address'                       => '地址',
     'Zip code'                      => '邮政编码',
     'City'                          => '城市',
-    'Telephone'                     => '电话',
-    'Fax'                           => '传真',
-    'Vat'                           => '增值税',
+    'Send email'                    => '发送邮件',
+    'Assign editors'                => '指派编辑',
+    'Manuscript comments'           => '手稿意见',
+    'Send content'                  => '发送内容',
+    'Addressee'                     => '收件人',
+    'Author'                        => '作者',
+    'Editor'                        => '编辑',
+    'Reviewer'                      => '审稿人',
+    'No corresponding user found'   => '未找到对应用户',
 ];

+ 4 - 0
application/admin/lang/zh-cn/general/profile.php

@@ -11,4 +11,8 @@ return [
     'Please input correct password'               => '密码长度必须在6-30位之间,不能包含空格',
     'Password must be 6 to 30 characters'         => '密码长度必须在6-30位之间,不能包含空格',
     'Email already exists'                        => '邮箱已经存在',
+    'Wrong configuration will cause server timeout when sending mail'   => '错误的配置发送邮件会导致服务器超时',
+    'The default is 25 without encryption, 465 for SSL, and 587 for TLS' => '不加密默认25,SSL默认465,TLS默认587',
+    'Fill in the full user name'                  => '填写完整用户名',
+    'Fill in your password or authorization code' => '填写您的密码或授权码',
 ];

BIN
application/admin/model/.DS_Store


+ 19 - 0
application/admin/model/EmailContent.php

@@ -0,0 +1,19 @@
+<?php
+
+namespace app\admin\model;
+
+use think\Model;
+use think\Session;
+
+class EmailContent extends Model
+{
+// 表名
+    protected $name = 'email_content';
+
+    // 开启自动写入时间戳字段
+    protected $autoWriteTimestamp = 'int';
+    // 定义时间戳字段名
+    protected $createTime = 'createtime';
+    protected $updateTime = 'updatetime';
+
+}

+ 31 - 20
application/admin/view/cms/archives/add.html

@@ -80,12 +80,15 @@
                                     <div class="input-group">
                                         <input id="c-image" class="form-control" size="50" name="row[image]" type="text" value="" placeholder="缩略图可以直接从正文进行提取,可以为空">
                                         <div class="input-group-addon no-border no-padding">
-                                            <span><button type="button" id="plupload-image" class="btn btn-danger plupload" data-input-id="c-image" data-mimetype="image/gif,image/jpeg,image/png,image/jpg,image/bmp,image/webp" data-multiple="false" data-preview-id="p-image"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
-                                            <span><button type="button" id="fachoose-image" class="btn btn-primary fachoose" data-input-id="c-image" data-mimetype="image/*" data-multiple="false"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
+                                            <span><button type="button" id="plupload-image" class="btn btn-danger plupload" data-maxsize="2M" data-input-id="c-image" data-mimetype="image/gif,image/jpeg,image/png,image/jpg,image/bmp,image/webp" data-multiple="false" data-preview-id="p-image"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
+                                            <span><button type="button" id="fachoose-image" class="btn btn-primary fachoose" data-maxsize="2M" data-input-id="c-image" data-mimetype="image/*" data-multiple="false"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
                                         </div>
                                         <span class="msg-box n-right" for="c-image"></span>
                                     </div>
                                     <ul class="row list-inline plupload-preview" id="p-image"></ul>
+                                    <span class="msg-box" style="color: #f00;line-height: 25px">Top size:565*570px</span>
+                                    <p class="m-0"><span class="msg-box" style="color: #f00;line-height: 25px">Normal size:282*280px</span></p>
+                                    <p class="m-0"><span class="msg-box" style="color: #f00;line-height: 25px">File size:Not greater than 2M</span></p>
                                 </div>
                             </div>
 
@@ -95,8 +98,8 @@
                                     <div class="input-group">
                                         <input id="c-images" class="form-control" size="50" name="row[images]" type="text" value="" placeholder="组图可以直接从正文进行提取,可以为空">
                                         <div class="input-group-addon no-border no-padding">
-                                            <span><button type="button" id="plupload-images" class="btn btn-danger plupload" data-input-id="c-images" data-mimetype="image/gif,image/jpeg,image/png,image/jpg,image/bmp,image/webp" data-multiple="true" data-preview-id="p-images"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
-                                            <span><button type="button" id="fachoose-images" class="btn btn-primary fachoose" data-input-id="c-images" data-mimetype="image/*" data-multiple="true"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
+                                            <span><button type="button" id="plupload-images" class="btn btn-danger plupload" data-maxsize="2M" data-input-id="c-images" data-mimetype="image/gif,image/jpeg,image/png,image/jpg,image/bmp,image/webp" data-multiple="true" data-preview-id="p-images"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
+                                            <span><button type="button" id="fachoose-images" class="btn btn-primary fachoose" data-maxsize="2M" data-input-id="c-images" data-mimetype="image/*" data-multiple="true"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
                                         </div>
                                         <span class="msg-box n-right" for="c-images"></span>
                                     </div>
@@ -166,10 +169,11 @@
                                     <div class="input-group">
                                         <input id="c-pdf" class="form-control" size="50" name="row[pdf]" type="text" value="" placeholder="可以为空">
                                         <div class="input-group-addon no-border no-padding">
-                                            <span><button type="button" id="plupload-image" class="btn btn-danger plupload" data-input-id="c-pdf" data-mimetype="*" data-multiple="false" data-preview-id="p-pdf"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
-                                            <span><button type="button" id="fachoose-image" class="btn btn-primary fachoose" data-input-id="c-pdf" data-mimetype="*" data-multiple="false"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
+                                            <span><button type="button" id="plupload-image" class="btn btn-danger plupload" data-maxsize="10M" data-input-id="c-pdf" data-mimetype="*" data-multiple="false" data-preview-id="p-pdf"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
+                                            <span><button type="button" id="fachoose-image" class="btn btn-primary fachoose" data-maxsize="10M" data-input-id="c-pdf" data-mimetype="*" data-multiple="false"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
                                         </div>
                                         <span class="msg-box n-right" for="c-pdf"></span>
+                                        <span  class="msg-box" style="color: #f00;line-height: 25px">File size:Not greater than 10M</span>
                                     </div>
                                     <ul class="row list-inline plupload-preview" id="p-pdf"></ul>
                                 </div>
@@ -180,12 +184,13 @@
                                     <div class="input-group">
                                         <input id="c-pdf_cover" class="form-control" size="50" name="row[pdf_cover]" type="text" value="" placeholder="可以为空">
                                         <div class="input-group-addon no-border no-padding">
-                                            <span><button type="button" id="plupload-image" class="btn btn-danger plupload" data-input-id="c-pdf_cover" data-mimetype="*" data-multiple="false" data-preview-id="p-pdf_cover"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
-                                            <span><button type="button" id="fachoose-image" class="btn btn-primary fachoose" data-input-id="c-pdf_cover" data-mimetype="*" data-multiple="false"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
+                                            <span><button type="button" id="plupload-image" class="btn btn-danger plupload" data-maxsize="10M" data-input-id="c-pdf_cover" data-mimetype="*" data-multiple="false" data-preview-id="p-pdf_cover"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
+                                            <span><button type="button" id="fachoose-image" class="btn btn-primary fachoose" data-maxsize="10M" data-input-id="c-pdf_cover" data-mimetype="*" data-multiple="false"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
                                         </div>
                                         <span class="msg-box n-right" for="c-pdf_cover"></span>
                                     </div>
                                     <ul class="row list-inline plupload-preview" id="p-pdf_cover"></ul>
+                                    <span  class="msg-box" style="color: #f00;line-height: 25px">File size:Not greater than 10M</span>
                                 </div>
                             </div>
                             <div class="form-group" data-field="image">
@@ -194,10 +199,11 @@
                                     <div class="input-group">
                                         <input id="c-xml" class="form-control" size="50" name="row[xml]" type="text" value="" placeholder="可以为空">
                                         <div class="input-group-addon no-border no-padding">
-                                            <span><button type="button" id="plupload-image" class="btn btn-danger plupload" data-input-id="c-xml" data-mimetype="*" data-multiple="false" data-preview-id="p-xml"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
-                                            <span><button type="button" id="fachoose-image" class="btn btn-primary fachoose" data-input-id="c-xml" data-mimetype="*" data-multiple="false"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
+                                            <span><button type="button" id="plupload-image" class="btn btn-danger plupload" data-maxsize="10M" data-input-id="c-xml" data-mimetype="*" data-multiple="false" data-preview-id="p-xml"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
+                                            <span><button type="button" id="fachoose-image" class="btn btn-primary fachoose" data-maxsize="10M" data-input-id="c-xml" data-mimetype="*" data-multiple="false"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
                                         </div>
                                         <span class="msg-box n-right" for="c-xml"></span>
+                                        <span  class="msg-box" style="color: #f00;line-height: 25px">File size:Not greater than 10M</span>
                                     </div>
                                     <ul class="row list-inline plupload-preview" id="p-xml"></ul>
                                 </div>
@@ -208,12 +214,13 @@
                                     <div class="input-group">
                                         <input id="c-epub" class="form-control" size="50" name="row[epub]" type="text" value="" placeholder="可以为空">
                                         <div class="input-group-addon no-border no-padding">
-                                            <span><button type="button" id="plupload-image" class="btn btn-danger plupload" data-input-id="c-epub" data-mimetype="*" data-multiple="false" data-preview-id="p-epub"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
-                                            <span><button type="button" id="fachoose-image" class="btn btn-primary fachoose" data-input-id="c-epub" data-mimetype="*" data-multiple="false"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
+                                            <span><button type="button" id="plupload-image" class="btn btn-danger plupload" data-maxsize="10M" data-input-id="c-epub" data-mimetype="*" data-multiple="false" data-preview-id="p-epub"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
+                                            <span><button type="button" id="fachoose-image" class="btn btn-primary fachoose" data-maxsize="10M" data-input-id="c-epub" data-mimetype="*" data-multiple="false"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
                                         </div>
                                         <span class="msg-box n-right" for="c-epub"></span>
                                     </div>
                                     <ul class="row list-inline plupload-preview" id="p-epub"></ul>
+                                    <span  class="msg-box" style="color: #f00;line-height: 25px">File size:Not greater than 10M</span>
                                 </div>
                             </div>
                             <div class="form-group" data-field="image">
@@ -222,12 +229,13 @@
                                     <div class="input-group">
                                         <input id="c-endnote" class="form-control" size="50" name="row[endnote]" type="text" value="" placeholder="可以为空">
                                         <div class="input-group-addon no-border no-padding">
-                                            <span><button type="button" id="plupload-image" class="btn btn-danger plupload" data-input-id="c-endnote" data-mimetype="*" data-multiple="false" data-preview-id="p-endnote"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
-                                            <span><button type="button" id="fachoose-image" class="btn btn-primary fachoose" data-input-id="c-endnote" data-mimetype="*" data-multiple="false"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
+                                            <span><button type="button" id="plupload-image" class="btn btn-danger plupload" data-maxsize="10M" data-input-id="c-endnote" data-mimetype="*" data-multiple="false" data-preview-id="p-endnote"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
+                                            <span><button type="button" id="fachoose-image" class="btn btn-primary fachoose" data-maxsize="10M" data-input-id="c-endnote" data-mimetype="*" data-multiple="false"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
                                         </div>
                                         <span class="msg-box n-right" for="c-endnote"></span>
                                     </div>
                                     <ul class="row list-inline plupload-preview" id="p-endnote"></ul>
+                                    <span  class="msg-box" style="color: #f00;line-height: 25px">File size:Not greater than 10M</span>
                                 </div>
                             </div>
                             <div class="form-group" data-field="image">
@@ -236,12 +244,13 @@
                                     <div class="input-group">
                                         <input id="c-reference_manager" class="form-control" size="50" name="row[reference_manager]" type="text" value="" placeholder="可以为空">
                                         <div class="input-group-addon no-border no-padding">
-                                            <span><button type="button" id="plupload-image" class="btn btn-danger plupload" data-input-id="c-reference_manager" data-mimetype="*" data-multiple="false" data-preview-id="p-reference_manager"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
-                                            <span><button type="button" id="fachoose-image" class="btn btn-primary fachoose" data-input-id="c-reference_manager" data-mimetype="*" data-multiple="false"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
+                                            <span><button type="button" id="plupload-image" class="btn btn-danger plupload" data-maxsize="10M" data-input-id="c-reference_manager" data-mimetype="*" data-multiple="false" data-preview-id="p-reference_manager"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
+                                            <span><button type="button" id="fachoose-image" class="btn btn-primary fachoose" data-maxsize="10M" data-input-id="c-reference_manager" data-mimetype="*" data-multiple="false"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
                                         </div>
                                         <span class="msg-box n-right" for="c-reference_manager"></span>
                                     </div>
                                     <ul class="row list-inline plupload-preview" id="p-reference_manager"></ul>
+                                    <span  class="msg-box" style="color: #f00;line-height: 25px">File size:Not greater than 10M</span>
                                 </div>
                             </div>
                             <div class="form-group" data-field="image">
@@ -250,12 +259,13 @@
                                     <div class="input-group">
                                         <input id="c-simple_text_file" class="form-control" size="50" name="row[simple_text_file]" type="text" value="" placeholder="可以为空">
                                         <div class="input-group-addon no-border no-padding">
-                                            <span><button type="button" id="plupload-image" class="btn btn-danger plupload" data-input-id="c-simple_text_file" data-mimetype="*" data-multiple="false" data-preview-id="p-simple_text_file"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
-                                            <span><button type="button" id="fachoose-image" class="btn btn-primary fachoose" data-input-id="c-simple_text_file" data-mimetype="*" data-multiple="false"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
+                                            <span><button type="button" id="plupload-image" class="btn btn-danger plupload" data-maxsize="10M" data-input-id="c-simple_text_file" data-mimetype="*" data-multiple="false" data-preview-id="p-simple_text_file"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
+                                            <span><button type="button" id="fachoose-image" class="btn btn-primary fachoose" data-maxsize="10M" data-input-id="c-simple_text_file" data-mimetype="*" data-multiple="false"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
                                         </div>
                                         <span class="msg-box n-right" for="c-simple_text_file"></span>
                                     </div>
                                     <ul class="row list-inline plupload-preview" id="p-simple_text_file"></ul>
+                                    <span  class="msg-box" style="color: #f00;line-height: 25px">File size:Not greater than 10M</span>
                                 </div>
                             </div>
                             <div class="form-group" data-field="image">
@@ -264,12 +274,13 @@
                                     <div class="input-group">
                                         <input id="c-bibtex" class="form-control" size="50" name="row[bibtex]" type="text" value="" placeholder="可以为空">
                                         <div class="input-group-addon no-border no-padding">
-                                            <span><button type="button" id="plupload-image" class="btn btn-danger plupload" data-input-id="c-bibtex" data-mimetype="*" data-multiple="false" data-preview-id="p-bibtex"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
-                                            <span><button type="button" id="fachoose-image" class="btn btn-primary fachoose" data-input-id="c-bibtex" data-mimetype="*" data-multiple="false"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
+                                            <span><button type="button" id="plupload-image" class="btn btn-danger plupload" data-maxsize="10M" data-input-id="c-bibtex" data-mimetype="*" data-multiple="false" data-preview-id="p-bibtex"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
+                                            <span><button type="button" id="fachoose-image" class="btn btn-primary fachoose" data-maxsize="10M" data-input-id="c-bibtex" data-mimetype="*" data-multiple="false"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
                                         </div>
                                         <span class="msg-box n-right" for="c-bibtex"></span>
                                     </div>
                                     <ul class="row list-inline plupload-preview" id="p-bibtex"></ul>
+                                    <span  class="msg-box" style="color: #f00;line-height: 25px">File size:Not greater than 10M</span>
                                 </div>
                             </div>
 <!--                            <div id="extend"></div>-->

+ 29 - 18
application/admin/view/cms/archives/edit.html

@@ -82,12 +82,15 @@
                                     <div class="input-group">
                                         <input id="c-image" class="form-control" size="50" name="row[image]" type="text" value="{$row.image|htmlentities}" placeholder="缩略图可以直接从正文进行提取">
                                         <div class="input-group-addon no-border no-padding">
-                                            <span><button type="button" id="plupload-image" class="btn btn-danger plupload" data-input-id="c-image" data-mimetype="image/gif,image/jpeg,image/png,image/jpg,image/bmp,image/webp" data-multiple="false" data-preview-id="p-image"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
-                                            <span><button type="button" id="fachoose-image" class="btn btn-primary fachoose" data-input-id="c-image" data-mimetype="image/*" data-multiple="false"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
+                                            <span><button type="button" id="plupload-image" class="btn btn-danger plupload" data-maxsize="2M" data-input-id="c-image" data-mimetype="image/gif,image/jpeg,image/png,image/jpg,image/bmp,image/webp" data-multiple="false" data-preview-id="p-image"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
+                                            <span><button type="button" id="fachoose-image" class="btn btn-primary fachoose" data-maxsize="2M" data-input-id="c-image" data-mimetype="image/*" data-multiple="false"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
                                         </div>
                                         <span class="msg-box n-right" for="c-image"></span>
                                     </div>
                                     <ul class="row list-inline plupload-preview" id="p-image"></ul>
+                                    <span class="msg-box" style="color: #f00;line-height: 25px">Top size:565*570px</span>
+                                    <p class="m-0"><span class="msg-box" style="color: #f00;line-height: 25px">Normal size:282*280px</span></p>
+                                    <p class="m-0"><span class="msg-box" style="color: #f00;line-height: 25px">File size:Not greater than 2M</span></p>
                                 </div>
                             </div>
                             <div class="form-group" data-field="images">
@@ -167,12 +170,13 @@
                                     <div class="input-group">
                                         <input id="c-pdf" class="form-control" size="50" name="row[pdf]" type="text" value="{$row.pdf|htmlentities}" placeholder="">
                                         <div class="input-group-addon no-border no-padding">
-                                            <span><button type="button" id="plupload-image" class="btn btn-danger plupload" data-input-id="c-pdf" data-mimetype="*" data-multiple="false" data-preview-id="p-pdf"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
-                                            <span><button type="button" id="fachoose-image" class="btn btn-primary fachoose" data-input-id="c-pdf" data-mimetype="*" data-multiple="false"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
+                                            <span><button type="button" id="plupload-image" class="btn btn-danger plupload" data-maxsize="10M" data-input-id="c-pdf" data-mimetype="*" data-multiple="false" data-preview-id="p-pdf"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
+                                            <span><button type="button" id="fachoose-image" class="btn btn-primary fachoose" data-maxsize="10M" data-input-id="c-pdf" data-mimetype="*" data-multiple="false"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
                                         </div>
                                         <span class="msg-box n-right" for="c-pdf"></span>
                                     </div>
                                     <ul class="row list-inline plupload-preview" id="p-pdf"></ul>
+                                    <span  class="msg-box" style="color: #f00;line-height: 25px">File size:Not greater than 10M</span>
                                 </div>
                             </div>
                             <div class="form-group" data-field="image">
@@ -181,12 +185,13 @@
                                     <div class="input-group">
                                         <input id="c-pdf_cover" class="form-control" size="50" name="row[pdf_cover]" type="text" value="{$row.pdf_cover|htmlentities}" placeholder="">
                                         <div class="input-group-addon no-border no-padding">
-                                            <span><button type="button" id="plupload-image" class="btn btn-danger plupload" data-input-id="c-pdf_cover" data-mimetype="*" data-multiple="false" data-preview-id="p-pdf_cover"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
-                                            <span><button type="button" id="fachoose-image" class="btn btn-primary fachoose" data-input-id="c-pdf_cover" data-mimetype="*" data-multiple="false"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
+                                            <span><button type="button" id="plupload-image" class="btn btn-danger plupload" data-maxsize="10M" data-input-id="c-pdf_cover" data-mimetype="*" data-multiple="false" data-preview-id="p-pdf_cover"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
+                                            <span><button type="button" id="fachoose-image" class="btn btn-primary fachoose" data-maxsize="10M" data-input-id="c-pdf_cover" data-mimetype="*" data-multiple="false"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
                                         </div>
                                         <span class="msg-box n-right" for="c-pdf_cover"></span>
                                     </div>
                                     <ul class="row list-inline plupload-preview" id="p-pdf_cover"></ul>
+                                    <span  class="msg-box" style="color: #f00;line-height: 25px">File size:Not greater than 10M</span>
                                 </div>
                             </div>
                             <div class="form-group" data-field="image">
@@ -195,12 +200,13 @@
                                     <div class="input-group">
                                         <input id="c-xml" class="form-control" size="50" name="row[xml]" type="text" value="{$row.xml|htmlentities}" placeholder="">
                                         <div class="input-group-addon no-border no-padding">
-                                            <span><button type="button" id="plupload-image" class="btn btn-danger plupload" data-input-id="c-xml" data-mimetype="*" data-multiple="false" data-preview-id="p-xml"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
-                                            <span><button type="button" id="fachoose-image" class="btn btn-primary fachoose" data-input-id="c-xml" data-mimetype="*" data-multiple="false"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
+                                            <span><button type="button" id="plupload-image" class="btn btn-danger plupload" data-maxsize="10M" data-input-id="c-xml" data-mimetype="*" data-multiple="false" data-preview-id="p-xml"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
+                                            <span><button type="button" id="fachoose-image" class="btn btn-primary fachoose" data-maxsize="10M" data-input-id="c-xml" data-mimetype="*" data-multiple="false"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
                                         </div>
                                         <span class="msg-box n-right" for="c-xml"></span>
                                     </div>
                                     <ul class="row list-inline plupload-preview" id="p-xml"></ul>
+                                    <span  class="msg-box" style="color: #f00;line-height: 25px">File size:Not greater than 10M</span>
                                 </div>
                             </div>
                             <div class="form-group" data-field="image">
@@ -209,12 +215,13 @@
                                     <div class="input-group">
                                         <input id="c-epub" class="form-control" size="50" name="row[epub]" type="text" value="{$row.epub|htmlentities}" placeholder="">
                                         <div class="input-group-addon no-border no-padding">
-                                            <span><button type="button" id="plupload-image" class="btn btn-danger plupload" data-input-id="c-epub" data-mimetype="*" data-multiple="false" data-preview-id="p-epub"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
-                                            <span><button type="button" id="fachoose-image" class="btn btn-primary fachoose" data-input-id="c-epub" data-mimetype="*" data-multiple="false"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
+                                            <span><button type="button" id="plupload-image" class="btn btn-danger plupload" data-maxsize="10M" data-input-id="c-epub" data-mimetype="*" data-multiple="false" data-preview-id="p-epub"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
+                                            <span><button type="button" id="fachoose-image" class="btn btn-primary fachoose" data-maxsize="10M" data-input-id="c-epub" data-mimetype="*" data-multiple="false"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
                                         </div>
                                         <span class="msg-box n-right" for="c-epub"></span>
                                     </div>
                                     <ul class="row list-inline plupload-preview" id="p-epub"></ul>
+                                    <span  class="msg-box" style="color: #f00;line-height: 25px">File size:Not greater than 10M</span>
                                 </div>
                             </div>
                             <div class="form-group" data-field="image">
@@ -223,12 +230,13 @@
                                     <div class="input-group">
                                         <input id="c-endnote" class="form-control" size="50" name="row[endnote]" type="text" value="{$row.endnote|htmlentities}" placeholder="">
                                         <div class="input-group-addon no-border no-padding">
-                                            <span><button type="button" id="plupload-image" class="btn btn-danger plupload" data-input-id="c-endnote" data-mimetype="*" data-multiple="false" data-preview-id="p-endnote"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
-                                            <span><button type="button" id="fachoose-image" class="btn btn-primary fachoose" data-input-id="c-endnote" data-mimetype="*" data-multiple="false"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
+                                            <span><button type="button" id="plupload-image" class="btn btn-danger plupload" data-maxsize="10M" data-input-id="c-endnote" data-mimetype="*" data-multiple="false" data-preview-id="p-endnote"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
+                                            <span><button type="button" id="fachoose-image" class="btn btn-primary fachoose" data-maxsize="10M" data-input-id="c-endnote" data-mimetype="*" data-multiple="false"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
                                         </div>
                                         <span class="msg-box n-right" for="c-endnote"></span>
                                     </div>
                                     <ul class="row list-inline plupload-preview" id="p-endnote"></ul>
+                                    <span  class="msg-box" style="color: #f00;line-height: 25px">File size:Not greater than 10M</span>
                                 </div>
                             </div>
                             <div class="form-group" data-field="image">
@@ -237,12 +245,13 @@
                                     <div class="input-group">
                                         <input id="c-reference_manager" class="form-control" size="50" name="row[reference_manager]" type="text" value="{$row.reference_manager|htmlentities}" placeholder="">
                                         <div class="input-group-addon no-border no-padding">
-                                            <span><button type="button" id="plupload-image" class="btn btn-danger plupload" data-input-id="c-reference_manager" data-mimetype="*" data-multiple="false" data-preview-id="p-reference_manager"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
-                                            <span><button type="button" id="fachoose-image" class="btn btn-primary fachoose" data-input-id="c-reference_manager" data-mimetype="*" data-multiple="false"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
+                                            <span><button type="button" id="plupload-image" class="btn btn-danger plupload" data-maxsize="10M" data-input-id="c-reference_manager" data-mimetype="*" data-multiple="false" data-preview-id="p-reference_manager"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
+                                            <span><button type="button" id="fachoose-image" class="btn btn-primary fachoose" data-maxsize="10M" data-input-id="c-reference_manager" data-mimetype="*" data-multiple="false"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
                                         </div>
                                         <span class="msg-box n-right" for="c-reference_manager"></span>
                                     </div>
                                     <ul class="row list-inline plupload-preview" id="p-reference_manager"></ul>
+                                    <span  class="msg-box" style="color: #f00;line-height: 25px">File size:Not greater than 10M</span>
                                 </div>
                             </div>
                             <div class="form-group" data-field="image">
@@ -251,12 +260,13 @@
                                     <div class="input-group">
                                         <input id="c-simple_text_file" class="form-control" size="50" name="row[simple_text_file]" type="text" value="{$row.simple_text_file|htmlentities}" placeholder="">
                                         <div class="input-group-addon no-border no-padding">
-                                            <span><button type="button" id="plupload-image" class="btn btn-danger plupload" data-input-id="c-simple_text_file" data-mimetype="*" data-multiple="false" data-preview-id="p-simple_text_file"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
-                                            <span><button type="button" id="fachoose-image" class="btn btn-primary fachoose" data-input-id="c-simple_text_file" data-mimetype="*" data-multiple="false"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
+                                            <span><button type="button" id="plupload-image" class="btn btn-danger plupload" data-maxsize="10M" data-input-id="c-simple_text_file" data-mimetype="*" data-multiple="false" data-preview-id="p-simple_text_file"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
+                                            <span><button type="button" id="fachoose-image" class="btn btn-primary fachoose" data-maxsize="10M" data-input-id="c-simple_text_file" data-mimetype="*" data-multiple="false"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
                                         </div>
                                         <span class="msg-box n-right" for="c-simple_text_file"></span>
                                     </div>
                                     <ul class="row list-inline plupload-preview" id="p-simple_text_file"></ul>
+                                    <span  class="msg-box" style="color: #f00;line-height: 25px">File size:Not greater than 10M</span>
                                 </div>
                             </div>
                             <div class="form-group" data-field="image">
@@ -265,12 +275,13 @@
                                     <div class="input-group">
                                         <input id="c-bibtex" class="form-control" size="50" name="row[bibtex]" type="text" value="{$row.bibtex|htmlentities}" placeholder="">
                                         <div class="input-group-addon no-border no-padding">
-                                            <span><button type="button" id="plupload-image" class="btn btn-danger plupload" data-input-id="c-bibtex" data-mimetype="*" data-multiple="false" data-preview-id="p-bibtex"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
-                                            <span><button type="button" id="fachoose-image" class="btn btn-primary fachoose" data-input-id="c-bibtex" data-mimetype="*" data-multiple="false"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
+                                            <span><button type="button" id="plupload-image" class="btn btn-danger plupload" data-maxsize="10M" data-input-id="c-bibtex" data-mimetype="*" data-multiple="false" data-preview-id="p-bibtex"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
+                                            <span><button type="button" id="fachoose-image" class="btn btn-primary fachoose" data-maxsize="10M" data-input-id="c-bibtex" data-mimetype="*" data-multiple="false"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
                                         </div>
                                         <span class="msg-box n-right" for="c-bibtex"></span>
                                     </div>
                                     <ul class="row list-inline plupload-preview" id="p-bibtex"></ul>
+                                    <span  class="msg-box" style="color: #f00;line-height: 25px">File size:Not greater than 10M</span>
                                 </div>
                             </div>
 <!--                            <div id="extend"></div>-->

+ 7 - 2
application/admin/view/cms/channel/add.html

@@ -70,12 +70,17 @@
             <div class="input-group">
                 <input id="c-image" data-rule="" class="form-control" size="50" name="row[image]" type="text">
                 <div class="input-group-addon no-border no-padding">
-                    <span><button type="button" id="plupload-image" class="btn btn-danger plupload" data-input-id="c-image" data-mimetype="image/gif,image/jpeg,image/png,image/jpg,image/bmp,image/webp" data-multiple="false" data-preview-id="p-image"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
-                    <span><button type="button" id="fachoose-image" class="btn btn-primary fachoose" data-input-id="c-image" data-mimetype="image/*" data-multiple="false"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
+                    <span><button type="button" id="plupload-image" class="btn btn-danger plupload" data-maxsize="2M" data-input-id="c-image" data-mimetype="image/gif,image/jpeg,image/png,image/jpg,image/bmp,image/webp" data-multiple="false" data-preview-id="p-image"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
+                    <span><button type="button" id="fachoose-image" class="btn btn-primary fachoose" data-maxsize="2M" data-input-id="c-image" data-mimetype="image/*" data-multiple="false"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
                 </div>
                 <span class="msg-box n-right" for="c-image"></span>
             </div>
             <ul class="row list-inline plupload-preview" id="p-image"></ul>
+            <span class="msg-box tf tf-home_button" style="color: #f00;line-height: 25px">Home menu image size:88*88px</span>
+            <span class="msg-box tf tf-list" style="color: #f00;line-height: 25px">Home menu image size:18*18px</span>
+            <p>
+                <span class="msg-box tf tf-home_button tf-list" style="color: #f00;line-height: 25px">File size:Not greater than 2M</span>
+            </p>
         </div>
     </div>
     <div class="form-group">

+ 7 - 2
application/admin/view/cms/channel/edit.html

@@ -71,12 +71,17 @@
             <div class="input-group">
                 <input id="c-image" data-rule="" class="form-control" size="50" name="row[image]" type="text" value="{$row.image|htmlentities}">
                 <div class="input-group-addon no-border no-padding">
-                    <span><button type="button" id="plupload-image" class="btn btn-danger plupload" data-input-id="c-image" data-mimetype="image/gif,image/jpeg,image/png,image/jpg,image/bmp,image/webp" data-multiple="false" data-preview-id="p-image"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
-                    <span><button type="button" id="fachoose-image" class="btn btn-primary fachoose" data-input-id="c-image" data-mimetype="image/*" data-multiple="false"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
+                    <span><button type="button" id="plupload-image" class="btn btn-danger plupload" data-maxsize="2M" data-input-id="c-image" data-mimetype="image/gif,image/jpeg,image/png,image/jpg,image/bmp,image/webp" data-multiple="false" data-preview-id="p-image"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
+                    <span><button type="button" id="fachoose-image" class="btn btn-primary fachoose" data-maxsize="2M" data-input-id="c-image" data-mimetype="image/*" data-multiple="false"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
                 </div>
                 <span class="msg-box n-right" for="c-image"></span>
             </div>
             <ul class="row list-inline plupload-preview" id="p-image"></ul>
+            <span class="msg-box tf tf-home_button" style="color: #f00;line-height: 25px">Home menu image size:88*88px</span>
+            <span class="msg-box tf tf-list" style="color: #f00;line-height: 25px">Home menu image size:18*18px</span>
+            <p>
+                <span class="msg-box tf tf-home_button tf-list" style="color: #f00;line-height: 25px">File size:Not greater than 2M</span>
+            </p>
         </div>
     </div>
     <div class="form-group">

+ 23 - 0
application/admin/view/cms/manuscript/email.html

@@ -0,0 +1,23 @@
+<form id="edit-form" class="form-horizontal" role="form" data-toggle="validator" method="POST" action="">
+    {:token()}
+    <input type="hidden" id="c-id" value="{$row.id}">
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Send content')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <textarea id="c-send_content" data-rule="required" class="form-control editor" rows="5" name="row[send_content]" cols="50"></textarea>
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Addressee')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-send_user_email" data-params='{"manuscript_id":"{$row.id}"}' data-field="name" data-rule="required" class="form-control selectpage" data-source="cms/manuscript/send_user_list" name="row[send_user_email]" type="text"/>
+        </div>
+    </div>
+    <div class="form-group layer-footer">
+        <label class="control-label col-xs-12 col-sm-2"></label>
+        <div class="col-xs-12 col-sm-8">
+            <button type="submit" class="btn btn-primary btn-embossed disabled">{:__('OK')}</button>
+            <button type="reset" class="btn btn-default btn-embossed">{:__('Reset')}</button>
+        </div>
+    </div>
+</form>

+ 1 - 1
application/admin/view/cms/special_issue/edit.html

@@ -19,7 +19,7 @@
     <div class="form-group">
         <label for="c-proposal_text" class="control-label col-xs-12 col-sm-2">Proposal text:</label>
         <div class="col-xs-12 col-sm-7">
-            <textarea id="c-proposal_text" class="form-control editor" name="row[proposal_text]" rows="15" placeholder="Type here...">{$orw.proposal_text}</textarea>
+            <textarea id="c-proposal_text" class="form-control editor" name="row[proposal_text]" rows="15" placeholder="Type here...">{$row.proposal_text}</textarea>
         </div>
     </div>
     <div class="form-group">

+ 20 - 0
application/admin/view/general/profile/index.html

@@ -78,6 +78,26 @@
                             <label for="password" class="control-label">{:__('Password')}:</label>
                             <input type="password" class="form-control" id="password" placeholder="{:__('Leave password blank if dont want to change')}" autocomplete="new-password" name="row[password]" value="" data-rule="password"/>
                         </div>
+
+                        <!-- 新增邮箱配置开始 -->
+                        <div class="form-group">
+                            <label for="mail_smtp_host" class="control-label">{:__('SMTP服务器')}:</label>
+                            <input type="text" class="form-control" id="mail_smtp_host" placeholder="{:__('Wrong configuration will cause server timeout when sending mail')}" name="row[mail_smtp_host]" value="{$admin.mail_smtp_host|htmlentities}"/>
+                        </div>
+                        <div class="form-group">
+                            <label for="mail_smtp_port" class="control-label">{:__('SMTP端口')}:</label>
+                            <input type="text" class="form-control" id="mail_smtp_port" placeholder="{:__('The default is 25 without encryption, 465 for SSL, and 587 for TLS')}" name="row[mail_smtp_port]" value="{$admin.mail_smtp_port ? $admin.mail_smtp_port : 465}"/>
+                        </div>
+                        <div class="form-group">
+                            <label for="mail_smtp_user" class="control-label">{:__('SMTP用户名')}:</label>
+                            <input type="text" class="form-control" id="mail_smtp_user" placeholder="{:__('Fill in the full user name')}" name="row[mail_smtp_user]" value="{$admin.mail_smtp_user|htmlentities}"/>
+                        </div>
+                        <div class="form-group">
+                            <label for="mail_smtp_pass" class="control-label">{:__('SMTP密码')}:</label>
+                            <input type="text" class="form-control" id="mail_smtp_pass" placeholder="{:__('Fill in your password or authorization code')}" name="row[mail_smtp_pass]" value="{$admin.mail_smtp_pass|htmlentities}"/>
+                        </div>
+                        <!-- 新增邮箱配置结束 -->
+
                         <div class="form-group">
                             <button type="submit" class="btn btn-primary">{:__('Submit')}</button>
                             <button type="reset" class="btn btn-default">{:__('Reset')}</button>

+ 48 - 0
application/api/controller/User.php

@@ -10,6 +10,7 @@ use app\admin\model\cms\Email;
 use app\admin\model\cms\InviteReviewer;
 use app\admin\model\cms\Issue;
 use app\admin\model\cms\Participate;
+use app\admin\model\EmailContent;
 use app\common\controller\Api;
 use app\common\library\Ems;
 use app\common\library\Sms;
@@ -192,6 +193,10 @@ class User extends Api
         $zip_code = $this->request->post('zip_code');
         $city = $this->request->post('city');
         $country = $this->request->post('country');
+        $mail_smtp_host = $this->request->post('mail_smtp_host');
+        $mail_smtp_port = $this->request->post('mail_smtp_port');
+        $mail_smtp_user = $this->request->post('mail_smtp_user');
+        $mail_smtp_pass = $this->request->post('mail_smtp_pass');
         if ($username) {
             $exists = \app\common\model\User::where('username', $username)->where('id', '<>', $this->auth->id)->find();
             if ($exists) {
@@ -222,6 +227,10 @@ class User extends Api
         $user->zip_code = $zip_code;
         $user->city = $city;
         $user->country = $country;
+        $user->mail_smtp_host = $mail_smtp_host;
+        $user->mail_smtp_port = $mail_smtp_port;
+        $user->mail_smtp_user = $mail_smtp_user;
+        $user->mail_smtp_pass = $mail_smtp_pass;
         $user->save();
 
         // 查询用户是否已有申请角色记录表
@@ -560,6 +569,11 @@ class User extends Api
         $this->success('Submit Success');
     }
 
+    /**
+     * 提交特刊
+     *
+     * @return void
+     */
     public function submit_issue()
     {
         $params = $this->request->post('row/a');
@@ -780,4 +794,38 @@ class User extends Api
 
         $this->success('Submit Success');
     }
+
+    /**
+     * 已读邮件
+     *
+     * @return void
+     * @throws \think\db\exception\DataNotFoundException
+     * @throws \think\db\exception\ModelNotFoundException
+     * @throws \think\exception\DbException
+     */
+    public function read_email()
+    {
+        $params = $this->request->post();
+        if ($params['email_id']) {
+
+            $email_content = EmailContent::where(['id' => $params['email_id']])->find();
+            Db::startTrans();
+            try {
+                if ($email_content) {
+                    $email_content->status = 'normal';
+                    $result = $email_content->save();;
+                }
+                Db::commit();
+            } catch (ValidateException|PDOException|Exception $e) {
+                Db::rollback();
+                $this->error($e->getMessage());
+            }
+        }
+
+        if ($result === false) {
+            $this->error('Submit Error');
+        }
+
+        $this->success('Success');
+    }
 }

+ 38 - 2
application/index/controller/User.php

@@ -3,15 +3,19 @@
 namespace app\index\controller;
 
 use addons\wechat\model\WechatCaptcha;
+use app\admin\model\Admin;
 use app\admin\model\cms\AuthorManuscript;
 use app\admin\model\cms\Channel;
 use app\admin\model\cms\Comments;
 use app\admin\model\cms\InviteReviewer;
+use app\admin\model\cms\Participate;
+use app\admin\model\EmailContent;
 use app\common\controller\Frontend;
 use app\common\library\Ems;
 use app\common\library\Sms;
 use app\common\model\Attachment;
 use app\common\model\UserRoleContent;
+use app\common\model\UserRoleLog;
 use think\Config;
 use think\Cookie;
 use think\Hook;
@@ -356,6 +360,21 @@ class User extends Frontend
      */
     public function inbox()
     {
+        // 获取当前用户的邮箱内容信息
+        $email_contents = EmailContent::where(['email' => $this->auth->email])->paginate();
+        foreach ($email_contents as $content) {
+            $content['user'] = \app\admin\model\User::where(['id' => $content['user_id']])->find();
+            if ($content['type'] == 'admin') {
+                $content['user'] = Admin::where(['id' => $content['user_id']])->find();
+            }
+            $content['createtime'] = date('Y-m-d', $content['createtime']);
+            if ($content['status'] == 'normal') {
+                $content['status'] = 'READ';
+            } else {
+                $content['status'] = 'Unread';
+            }
+        }
+        $this->view->assign('list', $email_contents);
         $this->view->assign('title', 'INBOX');
         return $this->view->fetch();
     }
@@ -365,6 +384,18 @@ class User extends Frontend
      */
     public function unread()
     {
+        // 获取当前用户的邮箱内容信息
+        $email_contents = EmailContent::where(['email' => $this->auth->email, 'status' => 'hidden'])->paginate();
+        foreach ($email_contents as $content) {
+            $content['user'] = \app\admin\model\User::where(['id' => $content['user_id']])->find();
+            if ($content['type'] == 'admin') {
+                $content['user'] = Admin::where(['id' => $content['user_id']])->find();
+            }
+            $content['createtime'] = date('Y-m-d', $content['createtime']);
+            $content['status'] = 'Unread';
+        }
+        $this->view->assign('list', $email_contents);
+
         $this->view->assign('title', 'Unread');
         return $this->view->fetch();
     }
@@ -467,8 +498,10 @@ class User extends Frontend
      */
     public function reviewer_information()
     {
+        $user_role_count = UserRoleLog::where(['user_id' => $this->auth->id, 'type' => 'review', 'is_adopt' => ['in', ['review', 'fault']]])->count();
         $user_content = UserRoleContent::where(['user_id' => $this->auth->id, 'type' => 'review'])->find();
         if (empty($user_content)) {
+            $user_content['field'] = '';
             $user_content['degree'] = '';
             $user_content['affiliation'] = '';
             $user_content['publication'] = '';
@@ -477,9 +510,10 @@ class User extends Frontend
             $user_content['review_journal'] = '';
             $user_content['interested_journal'] = '';
             $user_content['resume'] = '';
-            $user_content['journal_id'] = '';
+            $user_content['journal_ids'] = '';
         }
         $this->view->assign('row', $user_content);
+        $this->view->assign('user_role_count', $user_role_count);
         $this->view->assign('title', 'Reviewer Information');
         return $this->view->fetch();
     }
@@ -642,7 +676,7 @@ class User extends Frontend
             $user_content['review_journal'] = '';
             $user_content['interested_journal'] = '';
             $user_content['resume'] = '';
-            $user_content['journal_id'] = '';
+            $user_content['journal_ids'] = '';
         }
         $this->view->assign('row', $user_content);
         $this->view->assign('title', 'Apply to become an editor');
@@ -767,7 +801,9 @@ class User extends Frontend
     {
         $param = $this->request->param();
         $id = $param['id'];
+        $row = Participate::where(['id' => $id])->find();
         $this->view->assign('id', $id);
+        $this->view->assign('row', $row);
         $this->view->assign('title', 'Submit Conference');
         return $this->view->fetch();
     }

+ 4 - 0
application/index/view/user/conference_participate.html

@@ -93,6 +93,7 @@
                         <div class="panel panel-default">
                             <div class="panel-body pt-0">
                                 <h2 class="page-header">Participate in the conference</h2>
+                                {if condition="$row.user_id != $user.id"}
                                 <form id="conference-participate-form" class="form-horizontal" role="form" data-toggle="validator" method="POST" action="{:url('api/user/conference_participate')}">
                                     <input type="hidden" id="c-conference" name="row[conference_id]" value="{$id}">
                                     <div class="form-group">
@@ -230,6 +231,9 @@
                                         </div>
                                     </div>
                                 </form>
+                                {else}
+                                You have already participated in this meeting and do not need to participate again, <a href="{:url('/p/conference')}" style="color: #007bff;">Please click here</a>
+                                {/if}
                             </div>
                         </div>
                     </div>

+ 19 - 32
application/index/view/user/inbox.html

@@ -23,58 +23,45 @@
                             </li>
                         </ol>
                     </nav>
-                    {:token()}
 
                     <!-- 邮箱列表页 -->
                     <div class="table-responsive">
                         <table class="table inbox-table">
                             <thead style="background: #FAFAFA;" class="thead">
                             <tr>
-                                <th><input type="checkbox" id="check-all"></th>
                                 <th>Sender</th>
                                 <th>Content</th>
                                 <th>Creation time</th>
+                                <th>Status</th>
+                                <th>Operate</th>
                             </tr>
                             </thead>
                             <tbody class="tbody">
+                            {foreach name="list" item="vo"}
                             <tr>
+                                <td><a href="#">{$vo.user.nickname}</a></td>
+                                <td>{$vo.content}</td>
+                                <td>{$vo.createtime}</td>
+                                <td>{$vo.status}</td>
                                 <td>
-                                    <div class="inbox-checkbox">
-                                        <input type="checkbox" class="check-single">
-                                    </div>
+                                    {if condition="$vo.status == 'Unread'"}
+                                    <a href="javascript:;" data-id="{$vo.id}" id="read-button">READ</a>
+                                    {/if}
                                 </td>
-                                <td>
-                                    <a href="#">
-                                        John
-                                    </a>
-                                </td>
-                                <td>john@example.com</td>
-                                <td>2022-05-01</td>
-                            </tr>
-                            <tr>
-                                <td><input type="checkbox" class="check-single"></td>
-                                <td>
-                                    <a href="#">
-                                        Jane
-                                    </a>
-                                </td>
-                                <td>jane@example.com</td>
-                                <td>2022-05-05</td>
-                            </tr>
-                            <tr>
-                                <td><input type="checkbox" class="check-single"></td>
-                                <td>
-                                    <a href="#">
-                                        Bob
-                                    </a>
-                                </td>
-                                <td>bob@example.com</td>
-                                <td>2022-05-10</td>
                             </tr>
+                            {/foreach}
                             </tbody>
                         </table>
                     </div>
 
+                    <!--@formatter:off-->
+
+                    <!-- S 分页栏 -->
+                    <div class="pager">
+                        {$list->render()}
+                    </div>
+                    <!-- E 分页栏 -->
+                    <!--@formatter:on-->
                 </div>
             </div>
         </div>

+ 33 - 1
application/index/view/user/profile.html

@@ -175,7 +175,7 @@
                         </div>
                         <div class="form-group">
                             <label class="control-label col-xs-12 col-sm-3">
-                                City
+                                City
                             </label>
                             <div class="col-xs-12 col-sm-8">
                                 <input type="text" class="form-control" id="city" name="city" value="{$user.city}" placeholder="City">
@@ -194,6 +194,38 @@
                                 </select>
                             </div>
                         </div>
+                        <div class="form-group">
+                            <label class="control-label col-xs-12 col-sm-3">
+                                Mail Smtp Host:
+                            </label>
+                            <div class="col-xs-12 col-sm-8">
+                                <input type="text" class="form-control" id="mail_smtp_host" name="mail_smtp_host" value="{$user.mail_smtp_host}" placeholder="mail_smtp_host">
+                            </div>
+                        </div>
+                        <div class="form-group">
+                            <label class="control-label col-xs-12 col-sm-3">
+                                Mail Smtp Port:
+                            </label>
+                            <div class="col-xs-12 col-sm-8">
+                                <input type="text" class="form-control" id="mail_smtp_port" name="mail_smtp_port" value="{$user.mail_smtp_port}" placeholder="mail_smtp_port">
+                            </div>
+                        </div>
+                        <div class="form-group">
+                            <label class="control-label col-xs-12 col-sm-3">
+                                Mail Smtp User:
+                            </label>
+                            <div class="col-xs-12 col-sm-8">
+                                <input type="text" class="form-control" id="mail_smtp_user" name="mail_smtp_user" value="{$user.mail_smtp_user}" placeholder="mail_smtp_user">
+                            </div>
+                        </div>
+                        <div class="form-group">
+                            <label class="control-label col-xs-12 col-sm-3">
+                                Mail Smtp Pass:
+                            </label>
+                            <div class="col-xs-12 col-sm-8">
+                                <input type="text" class="form-control" id="mail_smtp_pass" name="mail_smtp_pass" value="{$user.mail_smtp_pass}" placeholder="mail_smtp_pass">
+                            </div>
+                        </div>
                         <div class="form-group normal-footer">
                             <label class="control-label col-xs-12 col-sm-3"></label>
                             <div class="col-xs-12 col-sm-8">

+ 3 - 0
application/index/view/user/reviewer_information.html

@@ -13,6 +13,7 @@
             <div class="panel panel-default">
                 <div class="panel-body">
                     <h2 class="page-header">Personal information of edit and reviewer</h2>
+                    {if condition="$user_role_count == 0"}
                     <form id="reviewer-information-form" class="form-horizontal" role="form" data-toggle="validator" method="POST" action="{:url('api/user/apply_role?type=review')}">
                         {:token()}
 
@@ -112,6 +113,8 @@
                             </div>
                         </div>
                     </form>
+                    {else}
+                    {/if}
                 </div>
             </div>
         </div>

+ 4 - 3
application/index/view/user/submit_conference.html

@@ -1,4 +1,4 @@
-<link rel="shortcut icon" href="__CDN__/assets/img/favicon.ico" type="image/x-icon"/>
+ d<link rel="shortcut icon" href="__CDN__/assets/img/favicon.ico" type="image/x-icon"/>
 <link href="__CDN__/assets/css/frontend{$Think.config.app_debug?'':'.min'}.css?v={$Think.config.site.version|htmlentities}" rel="stylesheet">
 <link href="__CDN__/assets/css/user.css?v={$Think.config.site.version|htmlentities}" rel="stylesheet">
 <link rel="stylesheet" media="screen" href="__CDN__/assets/css/bootstrap{$Think.config.app_debug?'':'.min'}.css?v={$site.version}"/>
@@ -107,12 +107,13 @@
                                             <div class="input-group">
                                                 <input id="c-image" data-rule="required" class="form-control" name="row[image]" type="text">
                                                 <div class="input-group-addon no-border no-padding">
-                                                    <span><button type="button" id="plupload-images" class="btn btn-danger plupload" data-input-id="c-image" data-multiple="true" data-preview-id="p-image"><i class="fa fa-upload"></i> Upload</button></span>
-                                                    <span><button type="button" id="fachoose-images" class="btn btn-primary fachoose" data-input-id="c-image" data-preview-id="p-manuscript-zip" data-mimetype="image/*" data-multiple="true"><i class="fa fa-list"></i> Choose</button></span>
+                                                    <span><button type="button" id="plupload-images" class="btn btn-danger plupload" data-maxsize="4M" data-input-id="c-image" data-multiple="true" data-preview-id="p-image"><i class="fa fa-upload"></i> Upload</button></span>
+                                                    <span><button type="button" id="fachoose-images" class="btn btn-primary fachoose" data-maxsize="4M" data-input-id="c-image" data-preview-id="p-manuscript-zip" data-mimetype="image/*" data-multiple="true"><i class="fa fa-list"></i> Choose</button></span>
                                                     <span class="msg-box n-right" for="c-image"></span>
                                                 </div>
                                             </div>
                                             <ul class="row list-inline plupload-preview" id="p-image"></ul>
+                                            <span class="msg-box tf tf-home_button" style="color: #f00;line-height: 25px">Image size:375*655px</span>
                                         </div>
                                     </div>
                                     <div class="form-group">

+ 16 - 33
application/index/view/user/unread.html

@@ -70,51 +70,34 @@
                         <table class="table inbox-table">
                             <thead style="background: #FAFAFA;" class="thead">
                             <tr>
-                                <th><input type="checkbox" id="check-all"></th>
                                 <th>Sender</th>
                                 <th>Content</th>
                                 <th>Creation time</th>
+                                <th>Operate</th>
                             </tr>
                             </thead>
                             <tbody class="tbody">
+                            {foreach name="list" item="vo"}
                             <tr>
-                                <td>
-                                    <div class="inbox-checkbox">
-                                        <input type="checkbox" class="check-single">
-                                    </div>
-                                </td>
-                                <td>
-                                    <a href="#">
-                                        John
-                                    </a>
-                                </td>
-                                <td>john@example.com</td>
-                                <td>2022-05-01</td>
-                            </tr>
-                            <tr>
-                                <td><input type="checkbox" class="check-single"></td>
-                                <td>
-                                    <a href="#">
-                                        Jane
-                                    </a>
-                                </td>
-                                <td>jane@example.com</td>
-                                <td>2022-05-05</td>
-                            </tr>
-                            <tr>
-                                <td><input type="checkbox" class="check-single"></td>
-                                <td>
-                                    <a href="#">
-                                        Bob
-                                    </a>
-                                </td>
-                                <td>bob@example.com</td>
-                                <td>2022-05-10</td>
+                                <td><a href="#">{$vo.user.nickname}</a></td>
+                                <td>{$vo.content}</td>
+                                <td>{$vo.createtime}</td>
+                                <td><a href="javascript:;" data-id="{$vo.id}" id="read-button">READ</a></td>
                             </tr>
+                            {/foreach}
                             </tbody>
                         </table>
                     </div>
 
+                    <!--@formatter:off-->
+
+                    <!-- S 分页栏 -->
+                    <div class="pager">
+                        {$list->render()}
+                    </div>
+                    <!-- E 分页栏 -->
+                    <!--@formatter:on-->
+
                 </div>
             </div>
         </div>

BIN
public/.DS_Store


BIN
public/assets/.DS_Store


BIN
public/assets/img/.DS_Store


+ 41 - 1
public/assets/js/backend/cms/conference.js

@@ -43,6 +43,7 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
                         {field: 'name', title: __('Name'), formatter: Table.api.formatter.search, operate: 'like'},
                         {field: 'email', title: __('Email'), formatter: Table.api.formatter.search, operate: 'like'},
                         {field: 'affiliation_address', title: __('Affiliation address'), formatter: Table.api.formatter.search, operate: 'like'},
+                        {field: 'status', title: __('Status'), searchList: {"review": __('Review'), "Fault": __('Fault'), "Correct": __('Correct')}, formatter: Table.api.formatter.status},
                         {field: 'createtime', title: __('Createtime'), sortable: true, operate: 'RANGE', addclass: 'datetimerange', formatter: Table.api.formatter.datetime},
                         {
                             field: 'operate',
@@ -61,13 +62,52 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
                                     name: 'detail',
                                     classname: 'btn btn-xs btn-warning btn-dialog',
                                     icon: 'fa fa-list',
-                                    title: __('参与会议详情'),
+                                    title: __('Meeting Participation Details'),
+                                    text: __('Meeting Participation Details'),
                                     url: function (row) {
                                         return 'cms/conference/detail?ids=' + row.id;
                                     },
                                     callback: function (data) {
                                         Layer.alert("接收到回传数据:" + JSON.stringify(data), {title: "回传数据"});
                                     },
+                                },
+                                {
+                                    name: 'pass',
+                                    text: __('Correct'),
+                                    title: __('Correct'),
+                                    classname: 'btn btn-xs btn-success btn-view btn-ajax',
+                                    icon: 'fa fa-check',
+                                    url: function (row) {
+                                        return 'cms/conference/is_adopt?status=correct&ids=' + row.id;
+                                    },
+                                    visible: function(row){
+                                        if(row.status == 'fault' || row.status == 'review'){
+                                            return true; //显示
+                                        } else {
+                                            return false; //隐藏
+                                        }
+                                    },
+                                    refresh: true
+                                },
+                                {
+                                    name: 'fault',
+                                    text: __('Fault'),
+                                    title: __('Fault'),
+                                    classname: 'btn btn-xs btn-danger btn-view btn-ajax',
+                                    icon: 'fa fa-times',
+                                    url: function (row) {
+                                        return 'cms/conference/is_adopt?status=fault&ids=' + row.id;
+                                    },
+                                    visible: function(row){
+                                        if(row.status == 'fault'){
+                                            return false; //不显示
+                                        } else if (row.status == 'review') {
+                                            return true;
+                                        } else {
+                                            return true;
+                                        }
+                                    },
+                                    refresh: true
                                 }
                             ]
                         }

+ 17 - 5
public/assets/js/backend/cms/manuscript.js

@@ -16,6 +16,7 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
                     add_url: '',
                     edit_url: 'cms/manuscript/edit',
                     del_url: 'cms/manuscript/del',
+                    email_url: 'cms/manuscript/email',
                     multi_url: 'cms/manuscript/multi',
                     table: 'cms_manuscript',
                 }
@@ -45,9 +46,6 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
                         {field: 'address', title: __('Address'), operate: 'like'},
                         {field: 'zip_code', title: __('Zip code'), operate: 'like'},
                         {field: 'city', title: __('City'), operate: 'like'},
-                        {field: 'telephone', title: __('Telephone'), operate: 'like'},
-                        {field: 'fax', title: __('Fax'), operate: 'like'},
-                        {field: 'vat', title: __('Vat'), operate: 'like'},
                         {field: 'createtime', title: __('Createtime'), operate: 'RANGE', addclass: 'datetimerange', formatter: Table.api.formatter.datetime},
                         {field: 'status', title: __('Status'), searchList: Config.site_manuscript_status , formatter: Table.api.formatter.status},
                         {
@@ -64,10 +62,19 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
                             },
                             buttons:[
                                 {
+                                    name: 'email',
+                                    title: __('Send email'),
+                                    text: __('Send email'),
+                                    classname: 'btn btn-xs btn-info btn-dialog',
+                                    icon: 'fa fa-envelope',
+                                    url: $.fn.bootstrapTable.defaults.extend.email_url,
+                                },
+                                {
                                     name: 'editor',
                                     classname: 'btn btn-xs btn-primary btn-dialog',
                                     icon: 'fa fa-user-circle-o',
-                                    title: __('指派编辑'),
+                                    title: __('Assign editors'),
+                                    text: __('Assign editors'),
                                     url: function (row) {
                                         return 'cms/manuscript/add_editor?ids=' + row.id;
                                     },
@@ -79,7 +86,8 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
                                     name: 'comments',
                                     classname: 'btn btn-xs btn-warning btn-dialog',
                                     icon: 'fa fa-list',
-                                    title: __('手稿意见'),
+                                    title: __('Manuscript comments'),
+                                    text: __('Manuscript comments'),
                                     url: function (row) {
                                         return 'cms/manuscript/comments?ids=' + row.id;
                                     },
@@ -343,6 +351,10 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
                 Fast.api.close();
             });
         },
+        email: function () {
+            Form.api.bindevent($("form[role=form]"));
+            Controller.api.bindevent();
+        },
         api: {
             bindevent: function () {
 

+ 50 - 11
public/assets/js/frontend/user.js

@@ -201,18 +201,57 @@ define(['jquery', 'bootstrap', 'frontend', 'form', 'template'], function ($, und
         },
         inbox: function () {
             $(document).ready(function () {
-                // 全选/反选
-                $("#check-all").click(function () {
-                    $(".check-single").prop('checked', $(this).prop('checked'));
+                $(document).on('click', '#read-button', function () {
+                    let email_id = $(this).attr('data-id');
+                    $.ajax({
+                        url: '/api/user/read_email', // 后台处理数据请求的接口地址
+                        type: 'POST',
+                        dataType: 'json',
+                        data: {
+                            email_id: email_id,
+                        },
+                        success: function(res) {
+                            if (res.code === 1) {
+                                layer.msg(res.msg, {
+                                    icon: 1,
+                                    time: 2000,
+                                }, function () {
+                                    location.reload();
+                                });
+                            }
+                        },
+                        error: function(xhr, status, error) {
+                            console.error(error);
+                        }
+                    });
                 });
-
-                // 单选
-                $(".check-single").click(function () {
-                    if ($(".check-single:checked").length == $(".check-single").length) {
-                        $("#check-all").prop('checked', true);
-                    } else {
-                        $("#check-all").prop('checked', false);
-                    }
+            });
+        },
+        unread: function () {
+            $(document).ready(function () {
+                $(document).on('click', '#read-button', function () {
+                    let email_id = $(this).attr('data-id');
+                    $.ajax({
+                        url: '/api/user/read_email', // 后台处理数据请求的接口地址
+                        type: 'POST',
+                        dataType: 'json',
+                        data: {
+                            email_id: email_id,
+                        },
+                        success: function(res) {
+                            if (res.code === 1) {
+                                layer.msg(res.msg, {
+                                    icon: 1,
+                                    time: 2000,
+                                }, function () {
+                                    location.reload();
+                                });
+                            }
+                        },
+                        error: function(xhr, status, error) {
+                            console.error(error);
+                        }
+                    });
                 });
             });
         },