Selaa lähdekoodia

修改bug,以及新填部分新功能

Xiahai 11 kuukautta sitten
vanhempi
commit
d7de48a141

BIN
.DS_Store


BIN
application/.DS_Store


+ 23 - 0
application/admin/model/cms/ManuscriptInvite.php

@@ -0,0 +1,23 @@
+<?php
+
+namespace app\admin\model\cms;
+
+use think\Model;
+
+class ManuscriptInvite extends Model
+{
+    // 表名
+    protected $name = 'cms_manuscript_invite';
+
+    // 自动写入时间戳字段
+    protected $autoWriteTimestamp = 'int';
+
+    // 定义时间戳字段名
+    protected $createTime = 'createtime';
+    protected $updateTime = 'updatetime';
+
+    public function manuscript()
+    {
+        return $this->belongsTo("\app\admin\model\cms\AuthorManuscript", 'manuscript_id', 'id', [], 'LEFT')->setEagerlyType(0);
+    }
+}

+ 4 - 4
application/admin/view/cms/archives/add.html

@@ -126,10 +126,10 @@
                                     <div style="margin-top:5px;">
                                         <a href="javascript:" class="btn btn-xs btn-primary btn-legal"><i class="fa fa-magic"></i> {:__('Check content is legal')}</a>
                                         <a href="javascript:" class="btn btn-xs btn-danger btn-keywords"><i class="fa fa-file"></i> {:__('Get the keyword and description')}</a>
-                                        <a href="javascript:" class="btn btn-xs btn-info btn-getimage" data-toggle="tooltip" data-title="将提取内容第一张图作为缩略图"><i class="fa fa-camera"></i> {:__('提取缩略图')}</a>
-                                        <a href="javascript:" class="btn btn-xs btn-info btn-getimages" data-toggle="tooltip" data-title="将提取内容前4张图作为组图"><i class="fa fa-camera"></i> {:__('提取组图')}</a>
-                                        <a href="javascript:" class="btn btn-xs btn-success btn-paytag" data-toggle="tooltip" data-title="只针对付费文章有效"><i class="fa fa-cny"></i> {:__('付费可见标签')}</a>
-                                        <button type="button" class="btn btn-xs btn-success btn-pagertag"><i class="fa fa-list"></i> {:__('文章分页标签')}</button>
+<!--                                        <a href="javascript:" class="btn btn-xs btn-info btn-getimage" data-toggle="tooltip" data-title="将提取内容第一张图作为缩略图"><i class="fa fa-camera"></i> {:__('提取缩略图')}</a>-->
+<!--                                        <a href="javascript:" class="btn btn-xs btn-info btn-getimages" data-toggle="tooltip" data-title="将提取内容前4张图作为组图"><i class="fa fa-camera"></i> {:__('提取组图')}</a>-->
+<!--                                        <a href="javascript:" class="btn btn-xs btn-success btn-paytag" data-toggle="tooltip" data-title="只针对付费文章有效"><i class="fa fa-cny"></i> {:__('付费可见标签')}</a>-->
+<!--                                        <button type="button" class="btn btn-xs btn-success btn-pagertag"><i class="fa fa-list"></i> {:__('文章分页标签')}</button>-->
                                     </div>
                                 </div>
                             </div>

+ 4 - 4
application/admin/view/cms/archives/edit.html

@@ -127,10 +127,10 @@
                                     <div style="margin-top:5px;">
                                         <a href="javascript:" class="btn btn-xs btn-primary btn-legal"><i class="fa fa-magic"></i> {:__('Check content is legal')}</a>
                                         <a href="javascript:" class="btn btn-xs btn-danger btn-keywords"><i class="fa fa-file"></i> {:__('Get the keyword and description')}</a>
-                                        <a href="javascript:" class="btn btn-xs btn-info btn-getimage" data-toggle="tooltip" data-title="将提取内容第一张图作为缩略图"><i class="fa fa-camera"></i> {:__('提取缩略图')}</a>
-                                        <a href="javascript:" class="btn btn-xs btn-info btn-getimages" data-toggle="tooltip" data-title="将提取内容前4张图作为组图"><i class="fa fa-camera"></i> {:__('提取组图')}</a>
-                                        <a href="javascript:" class="btn btn-xs btn-success btn-paytag" data-toggle="tooltip" data-title="只针对付费文章有效"><i class="fa fa-cny"></i> {:__('付费可见标签')}</a>
-                                        <button type="button" class="btn btn-xs btn-success btn-pagertag"><i class="fa fa-list"></i> {:__('文章分页标签')}</button>
+<!--                                        <a href="javascript:" class="btn btn-xs btn-info btn-getimage" data-toggle="tooltip" data-title="将提取内容第一张图作为缩略图"><i class="fa fa-camera"></i> {:__('提取缩略图')}</a>-->
+<!--                                        <a href="javascript:" class="btn btn-xs btn-info btn-getimages" data-toggle="tooltip" data-title="将提取内容前4张图作为组图"><i class="fa fa-camera"></i> {:__('提取组图')}</a>-->
+<!--                                        <a href="javascript:" class="btn btn-xs btn-success btn-paytag" data-toggle="tooltip" data-title="只针对付费文章有效"><i class="fa fa-cny"></i> {:__('付费可见标签')}</a>-->
+<!--                                        <button type="button" class="btn btn-xs btn-success btn-pagertag"><i class="fa fa-list"></i> {:__('文章分页标签')}</button>-->
                                     </div>
                                 </div>
                             </div>

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

@@ -543,6 +543,34 @@ class User extends Api
                     }
                 }
 
+                if (!empty($params['is_become_review'])) {
+                    if ($params['is_become_review'] == 'normal') {
+                        // 查询是否有对应的申请角色数据信息
+                        $user_content = UserRoleContent::where(['user_id' => $this->auth->id, 'type' => 'review'])->find();
+                        if ($user_content) {
+                            $user_content->field = $params['field'];
+                            $user_content->save();
+                        }
+
+                        // 查询用户是否已有申请角色记录表
+                        $user_role_log = UserRoleLog::where(['user_id' => $this->auth->id, 'type' => 'review', 'is_adopt' => ['in', ['review', 'fault', 'correct']]])->find();
+                        if (empty($user_role_log)) {
+                            $new_user_role = new UserRoleLog();
+                            $new_user_role->user_id = $this->auth->id;
+                            $new_user_role->type = 'review';
+                            if ($new_user_role->save()) {
+                                // 创建对应的信息
+                                $new_user_content = new UserRoleContent();
+                                $new_user_content->field = $params['field'];
+                                $new_user_content->user_id = $this->auth->id;
+                                $new_user_content->log_id = $new_user_role->id;
+                                $new_user_content->type = 'review';
+                                $new_user_content->save();
+                            }
+                        }
+                    }
+                }
+
                 // 手稿状态日志
                 $log = ManuscriptLog::where(['manuscript_id' => $params['id'], 'user_id' => $this->auth->id, 'type' => 'user', 'status' => $params['status']])->find();
                 if (!$log) {

+ 17 - 1
application/extra/site.php

@@ -197,11 +197,27 @@ return array (
   ),
   'author_edit_status' => 
   array (
-    'incomplete_submission' => 'Incomplete submission',
+    'incomplete_submission' => 'incomplete_submission',
     'processing' => 'processing',
   ),
   'author_comments_status' => 
   array (
     'accept' => 'accept',
   ),
+  'manuscript_invite_status' => 
+  array (
+    'audit' => 'Audit',
+    'accept' => 'Accept',
+    'refuse' => 'Refuse',
+  ),
+  'author_view_comments_status' => 
+  array (
+    'rejected' => 'rejected',
+  ),
+  'review_field' => 
+  array (
+    'chinese_journal_of_analytical_chemistry' => 'Chinese Journal of Analytical Chemistry',
+    'science_china-chemistry' => 'Science China-Chemistry',
+    'chinese_journal_of_catalysis' => 'Chinese Journal of Catalysis',
+  ),
 );

BIN
application/index/.DS_Store


+ 192 - 6
application/index/controller/User.php

@@ -10,6 +10,7 @@ use app\admin\model\cms\Comment;
 use app\admin\model\cms\Comments;
 use app\admin\model\cms\InviteReviewer;
 use app\admin\model\cms\Issue;
+use app\admin\model\cms\ManuscriptInvite;
 use app\admin\model\cms\Participate;
 use app\admin\model\EmailContent;
 use app\common\controller\Frontend;
@@ -22,6 +23,8 @@ use app\manytenant\model\Manytenant;
 use think\Config;
 use think\Cookie;
 use think\Db;
+use think\exception\PDOException;
+use think\exception\ValidateException;
 use think\Hook;
 use think\Session;
 use think\Validate;
@@ -444,6 +447,8 @@ class User extends Frontend
             'telephone' => '',
             'fax' => '',
             'vat' => '',
+            'is_become_review' => '',
+            'field' => '',
         ];
         $id = $this->request->param('id');
         if ($id) {
@@ -480,14 +485,20 @@ class User extends Frontend
 
         foreach ($manuscripts as $manuscript) {
             $manuscript['journal'] = Channel::where(['id' => $manuscript['journal']])->value('name');
-            $manuscript['is_edit'] = false;
-            $manuscript['is_comments'] = false;
+            $manuscript['is_edit'] = false; // 是否可修改手稿信息按钮状态
+            $manuscript['is_comments'] = false; // 回复审稿意见按钮状态
+            $manuscript['is_view_comments'] = false; // 查看审稿意见按钮状态
             if (in_array($manuscript['status'], $author_edit_status)) {
                 $manuscript['is_edit'] = true;
             }
             if (in_array($manuscript['status'], $author_comments_status)) {
                 $manuscript['is_comments'] = true;
             }
+            // 查询当前手稿下是否有可查看的审稿意见数量
+            $comment_count = Comments::where(['manuscript_id' => $manuscript['id'], 'type' => 'reviewer', 'is_send' => 'normal'])->count();
+            if ($comment_count > 0) {
+                $manuscript['is_view_comments'] = true;
+            }
         }
         if ($this->request->isAjax()) {
             $keyword = $this->request->param('keyword');
@@ -507,12 +518,18 @@ class User extends Frontend
                 $manuscript['journal'] = Channel::where(['id' => $manuscript['journal']])->value('name') ?? '';
                 $manuscript['is_edit'] = false;
                 $manuscript['is_comments'] = false;
+                $manuscript['is_view_comments'] = false;
                 if (in_array($manuscript['status'], $author_edit_status)) {
                     $manuscript['is_edit'] = true;
                 }
                 if (in_array($manuscript['status'], $author_comments_status)) {
                     $manuscript['is_comments'] = true;
                 }
+                // 查询当前手稿下是否有可查看的审稿意见数量
+                $comment_count = Comments::where(['manuscript_id' => $manuscript['id'], 'type' => 'reviewer', 'is_send' => 'normal'])->count();
+                if ($comment_count > 0) {
+                    $manuscript['is_view_comments'] = true;
+                }
             }
             $this->success('', '', $manuscripts);
         }
@@ -548,6 +565,48 @@ class User extends Frontend
     }
 
     /**
+     * 审稿邀请函
+     *
+     * @return string
+     * @throws \think\Exception
+     */
+    public function invitation_letter()
+    {
+        $limit = $this->request->param('limit', 10);
+        $status = $this->request->param('status', 'audit');
+        $where = ['status' => $status];
+
+        // 根据用户的审稿角色id查询对应的邀请审稿信息
+        $role_id = UserRoleContent::where(['user_id' => $this->auth->id, 'type' => 'review'])->order('createtime', 'DESC')->value('id');
+        $manuscript_id_arr = InviteReviewer::where(['role_id' => $role_id])->where($where)->order('createtime', 'DESC')->column('manuscript_id');
+        // 查询当前用户手稿
+        $manuscripts = AuthorManuscript::where(['id' => ['in', $manuscript_id_arr]])
+            ->field('id,title,image,createtime,journal')
+            ->order('createtime', 'DESC')
+            ->paginate($limit);
+        foreach ($manuscripts as $manuscript) {
+            $manuscript['journal'] = Channel::where(['id' => $manuscript['journal']])->value('name');
+        }
+        if ($this->request->isAjax()) {
+            $keyword = $this->request->param('keyword');
+            $manuscripts = AuthorManuscript::where(['title' => ['like', '%'. $keyword .'%']])
+                ->where(['id' => ['in', $manuscript_id_arr]])
+                ->field('id,title,image,createtime,journal')
+                ->order('createtime', 'DESC')
+                ->paginate($limit);
+            foreach ($manuscripts as $manuscript) {
+                $manuscript['createtime'] = date('Y-m-d', $manuscript['createtime']);
+                $manuscript['journal'] = Channel::where(['id' => $manuscript['journal']])->value('name') ?? '';
+            }
+            $this->success('', '', $manuscripts);
+        }
+        $this->view->assign('status', $status);
+        $this->view->assign('list', $manuscripts);
+        $this->view->assign('title', 'Invitation Letter for Review');
+        return $this->view->fetch();
+    }
+
+    /**
      * 审阅的手稿
      */
     public function show_reviewed_manuscripts()
@@ -555,9 +614,12 @@ class User extends Frontend
         $limit = $this->request->param('limit', 10);
         $status = $this->request->param('status', 'comment_submission');
         $where = ['status' => $status];
+
+        $role_id = UserRoleContent::where(['user_id' => $this->auth->id, 'type' => 'review'])->order('createtime', 'DESC')->value('id');
+        $manuscript_id_arr = InviteReviewer::where(['role_id' => $role_id, 'status' => 'accept'])->order('createtime', 'DESC')->column('manuscript_id');
         // 查询当前用户手稿
-        $manuscripts = AuthorManuscript::whereRaw("FIND_IN_SET(". $this->auth->id .", `reviewer_ids`)")
-            ->where($where)
+        $manuscripts = AuthorManuscript::where($where)
+            ->where(['id' => ['in', $manuscript_id_arr]])
             ->field('id,title,image,createtime,journal')
             ->order('createtime', 'DESC')
             ->paginate($limit);
@@ -567,7 +629,8 @@ class User extends Frontend
         if ($this->request->isAjax()) {
             $keyword = $this->request->param('keyword');
             $manuscripts = AuthorManuscript::where(['title' => ['like', '%'. $keyword .'%'], 'status' => $status])
-                ->whereRaw("FIND_IN_SET(". $this->auth->id .", `reviewer_ids`)")
+//                ->whereRaw("FIND_IN_SET(". $this->auth->id .", `reviewer_ids`)")
+                ->where(['id' => ['in', $manuscript_id_arr]])
                 ->field('id,title,image,createtime,journal')
                 ->order('createtime', 'DESC')
                 ->paginate($limit);
@@ -601,7 +664,7 @@ class User extends Frontend
         if ($type == 'reviewer') {
             $comments = Comments::where(['manuscript_id' => $row['id'], 'type' => 'reviewer'])->select();
         }
-        if ($type == 'editor') {
+        if ($type == 'editor' || $type == 'author') {
             $reviewers = InviteReviewer::where(['manuscript_id' => $row['id']])->select();
             // 邀请的审稿人信息
             if ($status == 'reviewer_details') {
@@ -655,9 +718,12 @@ class User extends Frontend
                     $reviewer['recommendation'] = $reviewer_comment['recommendation'];
                     $reviewer['comment'] = $reviewer_comment['comments'];
                     $reviewer['createtime'] = date('Y-m-d', $reviewer_comment['createtime']);
+                    $reviewer['comment_id'] = $reviewer_comment['id'];
+                    $reviewer['is_send'] = $reviewer_comment['is_send'];
                 }
             }
 
+            // 作者回复意见
             if ($status == 'author_report') {
                 // 查询作者提交意见信息回复
                 $author_comment = Comments::where(['user_id' => $row['user_id'], 'manuscript_id' => $row['id'], 'type' => 'author'])
@@ -1114,4 +1180,124 @@ class User extends Frontend
         $data['total'] = count($arr);
         return json($data);
     }
+
+    /**
+     * 邀请函操作
+     *
+     * @return void
+     * @throws \think\db\exception\DataNotFoundException
+     * @throws \think\db\exception\ModelNotFoundException
+     * @throws \think\exception\DbException
+     */
+    public function invitation_letter_operate()
+    {
+        $params = $this->request->request();
+        $manuscript_id = $params['id'];
+        $status = $params['status'];
+        Db::startTrans();
+        try {
+            $role_id = UserRoleContent::where(['user_id' => $this->auth->id, 'type' => 'review'])->order('createtime', 'DESC')->value('id');
+            $invite_content = InviteReviewer::where(['role_id' => $role_id, 'manuscript_id' => $manuscript_id])->order('createtime', 'DESC')->find();
+            if ($invite_content) {
+                $invite_content->status = $status;
+                $invite_content->save();
+            }
+            Db::commit();
+        } catch (ValidateException|PDOException|Exception $e) {
+            Db::rollback();
+            $this->error($e->getMessage());
+        }
+
+        $this->success('Successful');
+    }
+
+    /**
+     * 意见转呈
+     *
+     * @return void
+     * @throws \think\db\exception\DataNotFoundException
+     * @throws \think\db\exception\ModelNotFoundException
+     * @throws \think\exception\DbException
+     */
+    public function send_author_comments()
+    {
+        $params = $this->request->request();
+        $comment_id = $params['comment_id'];
+        Db::startTrans();
+        try {
+            $comment = Comments::where(['id' => $comment_id])->find();
+            if ($comment) {
+                $comment->is_send = 'normal';
+                $comment->save();
+            }
+            Db::commit();
+        } catch (ValidateException|PDOException|Exception $e) {
+            Db::rollback();
+            $this->error($e->getMessage());
+        }
+        $this->success('Successful');
+    }
+
+    /**
+     * 获取擅长领域
+     *
+     * @return \think\response\Json
+     */
+    public function choose_field()
+    {
+        $info = config('site.review_field');
+
+        $params = $this->request->request();
+        if (array_key_exists('name', $params) && $params['name']) {
+            $new_info = [];
+            foreach ($info as $key => $value) {
+                if (strstr(mb_strtolower($value), $params['name'])) {
+                    $new_info[$key] = $value;
+                }
+            }
+
+            $arr = [];
+            foreach ($new_info as $key => $item) {
+                $v['id'] = $key;
+                $v['name'] = $item;
+                $arr[] = $v;
+            }
+            $data['list'] = $arr;
+            $data['total'] = count($arr);
+            return json($data);
+        }
+
+        if ($this->request->request("keyValue")) {
+            $id_arr = $this->request->request('keyValue');
+            $new_info = [];
+            foreach ($info as $key => $value) {
+                if (!is_array($id_arr)) {
+                    $id_arr = explode(',', $id_arr);
+                }
+                if (in_array($key, $id_arr)) {
+                    $new_info[$key] = $value;
+                }
+            }
+
+            $arr = [];
+            foreach ($new_info as $key => $item) {
+                $v['id'] = $key;
+                $v['name'] = $item;
+                $arr[] = $v;
+            }
+            $data['list'] = $arr;
+            $data['total'] = count($arr);
+            return json($data);
+        }
+
+        $arr = [];
+        foreach ($info as $key => $item) {
+            $v['id'] = $key;
+            $v['name'] = $item;
+            $arr[] = $v;
+        }
+        $data['list'] = $arr;
+        $data['total'] = count($arr);
+        return json($data);
+    }
 }

BIN
application/index/view/.DS_Store


+ 6 - 0
application/index/view/common/sidenav.html

@@ -79,6 +79,12 @@
                 <img src="__CDN__/assets/img/index/arrow_right_icon.png" alt="">
             </a>
         </li>
+        <li class="list-group-item {:check_nav_active('user/invitation_letter')}">
+            <a href="{:url('user/invitation_letter')}">
+                Invitation Letter for Review
+                <img src="__CDN__/assets/img/index/arrow_right_icon.png" alt="">
+            </a>
+        </li>
         {if condition="$user.is_review == 'correct'"}
         <li class="list-group-item {:check_nav_active('user/show_reviewed_manuscripts')}">
             <a href="{:url('user/show_reviewed_manuscripts')}">

BIN
application/index/view/user/.DS_Store


+ 237 - 222
application/index/view/user/article_details.html

@@ -1,5 +1,10 @@
 <link href="__CDN__/assets/css/user/article_details.css?v={$Think.config.site.version|htmlentities}" rel="stylesheet">
 <link href="__CDN__/assets/css/user/display_submitted.css?v={$Think.config.site.version|htmlentities}" rel="stylesheet">
+<style>
+    .breadcrumb-item {
+        padding: 20px 20px !important;
+    }
+</style>
 <div class="common-bg">
     <div class="common-font">
         Article Details
@@ -73,272 +78,282 @@
 
                             <hr style="width: 92%;">
 
-                            <div class="form-group mt-4">
-                                <div class="col-xs-12 col-sm-12 article-details-content">
-                                    <p class="detail-title">Document</p>
+                            {if condition="$type != 'invita_review'"}
+                                <div class="form-group mt-4">
+                                    <div class="col-xs-12 col-sm-12 article-details-content">
+                                        <p class="detail-title">Document</p>
+                                    </div>
                                 </div>
-                            </div>
 
-                            <div class="form-group">
-                                <div class="col-xs-12 col-sm-12 article-details-content pr-0">
-                                    <div class="input-group" style="width: 100%;">
-                                        <input id="c-manuscript-zip" data-rule="required" class="form-control" name="row[manuscript_zip]" type="text" value="{$row.manuscript_zip|htmlentities}" readonly>
-                                        <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-manuscript-zip" data-multiple="true" data-preview-id="p-manuscript-zip"><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-manuscript-zip" 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-manuscript-zip"></span>
+                                <div class="form-group">
+                                    <div class="col-xs-12 col-sm-12 article-details-content pr-0">
+                                        <div class="input-group" style="width: 100%;">
+                                            <input id="c-manuscript-zip" data-rule="required" class="form-control" name="row[manuscript_zip]" type="text" value="{$row.manuscript_zip|htmlentities}" readonly>
+                                            <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-manuscript-zip" data-multiple="true" data-preview-id="p-manuscript-zip"><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-manuscript-zip" 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-manuscript-zip"></span>
+                                            </div>
                                         </div>
+                                        <ul class="row list-inline plupload-preview" id="p-manuscript-zip"></ul>
                                     </div>
-                                    <ul class="row list-inline plupload-preview" id="p-manuscript-zip"></ul>
                                 </div>
-                            </div>
 
-                            {if condition="$row.manuscript_pdf"}
-                            <div class="form-group">
-                                <div class="col-xs-12 col-sm-12 article-details-content pr-0">
-                                    <div class="input-group" style="width: 100%;">
-                                        <input id="c-manuscript-pdf" class="form-control" name="row[manuscript_pdf]" type="text" value="{$row.manuscript_pdf|htmlentities}" readonly>
-                                        <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-manuscript-pdf" data-multiple="true" data-preview-id="p-manuscript-pdf"><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-manuscript-pdf" data-preview-id="p-manuscript-pdf" data-mimetype="image/*" data-multiple="true"><i class="fa fa-list"></i> Choose</button></span>
-                                            <span class="msg-box n-right" for="c-manuscript-pdf"></span>
+                                {if condition="$row.manuscript_pdf"}
+                                <div class="form-group">
+                                    <div class="col-xs-12 col-sm-12 article-details-content pr-0">
+                                        <div class="input-group" style="width: 100%;">
+                                            <input id="c-manuscript-pdf" class="form-control" name="row[manuscript_pdf]" type="text" value="{$row.manuscript_pdf|htmlentities}" readonly>
+                                            <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-manuscript-pdf" data-multiple="true" data-preview-id="p-manuscript-pdf"><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-manuscript-pdf" data-preview-id="p-manuscript-pdf" data-mimetype="image/*" data-multiple="true"><i class="fa fa-list"></i> Choose</button></span>
+                                                <span class="msg-box n-right" for="c-manuscript-pdf"></span>
+                                            </div>
                                         </div>
+                                        <ul class="row list-inline plupload-preview" id="p-manuscript-pdf"></ul>
                                     </div>
-                                    <ul class="row list-inline plupload-preview" id="p-manuscript-pdf"></ul>
                                 </div>
-                            </div>
-                            {/if}
+                                {/if}
 
-                            <hr style="width: 92%;">
+                                <hr style="width: 92%;">
 
 
-                            <div class="form-group mt-4">
-                                <div class="col-xs-12 col-sm-12 article-details-content">
-                                    <p class="detail-title">Edit comments</p>
-                                    {if condition="$row.comments"}
-                                    {foreach name="$row.comments" item="comment"}
-                                    <div class="col-xs-12 col-sx-12 mt-4 p-0">
-                                        <div class="article-detail-edit-comments" style="padding-right: 40px;">
-                                            <label class="control-label col-xs-12 col-sm-6">
-                                                {if condition="$comment.type == 'editor'"}Editor Recommendation:{/if}
-                                                {if condition="$comment.type == 'reviewer'"}Reviewer Recommendation:{/if}
-                                            </label>
-                                            <div class="col-xs-12 col-sm-12 article-detail-edit-comments-item pt-1 pl-0">{$comment.recommendation}</div>
+                                <div class="form-group mt-4">
+                                    <div class="col-xs-12 col-sm-12 article-details-content">
+                                        <p class="detail-title">Edit comments</p>
+                                        {if condition="$row.comments"}
+                                        {foreach name="$row.comments" item="comment"}
+                                        <div class="col-xs-12 col-sx-12 mt-4 p-0">
+                                            <div class="article-detail-edit-comments" style="padding-right: 40px;">
+                                                <label class="control-label col-xs-12 col-sm-6">
+                                                    {if condition="$comment.type == 'editor'"}Editor Recommendation:{/if}
+                                                    {if condition="$comment.type == 'reviewer'"}Reviewer Recommendation:{/if}
+                                                </label>
+                                                <div class="col-xs-12 col-sm-12 article-detail-edit-comments-item pt-1 pl-0">{$comment.recommendation}</div>
+                                            </div>
                                         </div>
-                                    </div>
-                                    <div class="col-xs-12 col-sx-12 mt-4 p-0">
-                                        <div class="article-detail-edit-comments" style="padding-right: 40px;">
-                                            <label class="control-label col-xs-12 col-sm-6">
-                                                {if condition="$comment.type == 'editor'"}Editorial comments:{/if}
-                                                {if condition="$comment.type == 'reviewer'"}Review comments:{/if}
-                                            </label>
-                                            <div class="col-xs-12 col-sm-12 article-detail-edit-comments-item pt-1 pl-0">{$comment.comments}</div>
+                                        <div class="col-xs-12 col-sx-12 mt-4 p-0">
+                                            <div class="article-detail-edit-comments" style="padding-right: 40px;">
+                                                <label class="control-label col-xs-12 col-sm-6">
+                                                    {if condition="$comment.type == 'editor'"}Editorial comments:{/if}
+                                                    {if condition="$comment.type == 'reviewer'"}Review comments:{/if}
+                                                </label>
+                                                <div class="col-xs-12 col-sm-12 article-detail-edit-comments-item pt-1 pl-0">{$comment.comments}</div>
+                                            </div>
                                         </div>
-                                    </div>
-                                    <div class="col-xs-12 col-sx-12 mt-4 p-0">
-                                        <div class="article-detail-edit-comments" style="padding-right: 40px;">
-                                            <label class="control-label col-xs-12 col-sm-6">
-                                                {if condition="$comment.type == 'editor'"}Editing report:{/if}
-                                                {if condition="$comment.type == 'reviewer'"}Attachment upload:{/if}
-                                            </label>
-                                            <div class="col-xs-12 col-sm-12 article-detail-edit-comments-item pt-1 pl-0">
-                                                <input id="c-file" class="form-control" name="row[file]" type="text" value="{$comment.file|htmlentities}">
-                                                <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-file" data-multiple="true" data-preview-id="p-file"><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-file" data-preview-id="p-file" data-mimetype="image/*" data-multiple="true"><i class="fa fa-list"></i> Choose</button></span>
-                                                    <span class="msg-box n-right" for="c-file"></span>
+                                        <div class="col-xs-12 col-sx-12 mt-4 p-0">
+                                            <div class="article-detail-edit-comments" style="padding-right: 40px;">
+                                                <label class="control-label col-xs-12 col-sm-6">
+                                                    {if condition="$comment.type == 'editor'"}Editing report:{/if}
+                                                    {if condition="$comment.type == 'reviewer'"}Attachment upload:{/if}
+                                                </label>
+                                                <div class="col-xs-12 col-sm-12 article-detail-edit-comments-item pt-1 pl-0">
+                                                    <input id="c-file" class="form-control" name="row[file]" type="text" value="{$comment.file|htmlentities}">
+                                                    <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-file" data-multiple="true" data-preview-id="p-file"><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-file" data-preview-id="p-file" data-mimetype="image/*" data-multiple="true"><i class="fa fa-list"></i> Choose</button></span>
+                                                        <span class="msg-box n-right" for="c-file"></span>
+                                                    </div>
+                                                    <ul class="row list-inline plupload-preview" id="p-file"></ul>
                                                 </div>
-                                                <ul class="row list-inline plupload-preview" id="p-file"></ul>
                                             </div>
                                         </div>
-                                    </div>
-                                    <div class="col-xs-12 col-sx-12 mt-4 p-0">
-                                        <div class="article-detail-edit-comments" style="padding-right: 40px;">
-                                            <label class="control-label col-xs-12 col-sm-6">
-                                                {if condition="$comment.type == 'editor'"}Editorial Submit Time:{/if}
-                                                {if condition="$comment.type == 'reviewer'"}Review Subimt Time:{/if}
-                                            </label>
-                                            <div class="col-xs-12 col-sm-12 article-detail-edit-comments-item pt-1 pl-0">{$comment.createtime|date='Y-m-d H:i',###}</div>
+                                        <div class="col-xs-12 col-sx-12 mt-4 p-0">
+                                            <div class="article-detail-edit-comments" style="padding-right: 40px;">
+                                                <label class="control-label col-xs-12 col-sm-6">
+                                                    {if condition="$comment.type == 'editor'"}Editorial Submit Time:{/if}
+                                                    {if condition="$comment.type == 'reviewer'"}Review Subimt Time:{/if}
+                                                </label>
+                                                <div class="col-xs-12 col-sm-12 article-detail-edit-comments-item pt-1 pl-0">{$comment.createtime|date='Y-m-d H:i',###}</div>
+                                            </div>
                                         </div>
+                                        {/foreach}
+                                        {/if}
                                     </div>
-                                    {/foreach}
-                                    {/if}
                                 </div>
-                            </div>
 
-                            <hr style="width: 92%;">
+                                <hr style="width: 92%;">
 
-                            {if condition="$type == 'editor'"}
+                                {if condition="$type == 'editor' || $type == 'author'"}
 
-                            <div class="form-group mt-4">
-                                <div class="col-xs-12 col-sm-12 article-details-content">
-                                    <p class="detail-title">Suggested Reviewer Information</p>
+                                <div class="form-group mt-4">
+                                    <div class="col-xs-12 col-sm-12 article-details-content">
+                                        <p class="detail-title">Suggested Reviewer Information</p>
+                                    </div>
                                 </div>
-                            </div>
 
-                            <div class="form-group">
-                                <div class="col-xs-12 col-sm-12 article-details-content">
-                                    <div class="table-responsive">
-                                        <table class="table inbox-table">
-                                            <thead style="background: #FAFAFA;" class="thead">
-                                            <tr>
-                                                <th>Name</th>
-                                                <th>E-mail Address</th>
-                                                <th>First Name</th>
-                                                <th width="100px">Last Name</th>
-                                                <th>Affiliation</th>
-                                                <th>Field</th>
-                                            </tr>
-                                            </thead>
-                                            <tbody class="tbody">
-                                            {foreach name="row.review_content" item="review"}
-                                            <tr>
-                                                <td><?php echo $review['reviewer-name'] ?></td>
-                                                <td><?php echo $review['reviewer-email'] ?></td>
-                                                <td><?php echo $review['reviewer-first-name'] ?></td>
-                                                <td><?php echo $review['reviewer-last-name'] ?></td>
-                                                <td><?php echo $review['reviewer-affiliation'] ?></td>
-                                                <td><?php echo $review['reviewer-field'] ?></td>
-                                            </tr>
-                                            {/foreach}
-                                            </tbody>
-                                        </table>
+                                <div class="form-group">
+                                    <div class="col-xs-12 col-sm-12 article-details-content">
+                                        <div class="table-responsive">
+                                            <table class="table inbox-table">
+                                                <thead style="background: #FAFAFA;" class="thead">
+                                                <tr>
+                                                    <th>Name</th>
+                                                    <th>E-mail Address</th>
+                                                    <th>First Name</th>
+                                                    <th width="100px">Last Name</th>
+                                                    <th>Affiliation</th>
+                                                    <th>Field</th>
+                                                </tr>
+                                                </thead>
+                                                <tbody class="tbody">
+                                                {foreach name="row.review_content" item="review"}
+                                                <tr>
+                                                    <td><?php echo $review['reviewer-name'] ?></td>
+                                                    <td><?php echo $review['reviewer-email'] ?></td>
+                                                    <td><?php echo $review['reviewer-first-name'] ?></td>
+                                                    <td><?php echo $review['reviewer-last-name'] ?></td>
+                                                    <td><?php echo $review['reviewer-affiliation'] ?></td>
+                                                    <td><?php echo $review['reviewer-field'] ?></td>
+                                                </tr>
+                                                {/foreach}
+                                                </tbody>
+                                            </table>
+                                        </div>
                                     </div>
                                 </div>
-                            </div>
 
-                            <hr style="width: 92%;">
+                                <hr style="width: 92%;">
 
-                            <div class="form-group mt-4">
-                                <div class="col-xs-12 col-sm-12 article-details-content">
-                                    <p class="detail-title">Reviewer Information Report</p>
+                                <div class="form-group mt-4">
+                                    <div class="col-xs-12 col-sm-12 article-details-content">
+                                        <p class="detail-title">Reviewer Information Report</p>
+                                    </div>
                                 </div>
-                            </div>
 
-                            <div class="form-group">
-                                <div class="col-xs-12 col-sm-12 article-details-content">
-                                    <nav aria-label="breadcrumb" class="breadcrumb-content">
-                                        <ol class="breadcrumb">
-                                            {foreach name="$site.article_detail_report" item="item"}
-                                            <li class="breadcrumb-item <?php if($status == $key) echo 'active'; ?>"><a href="?id={$row.id}&type=editor&status={$key}">{$item}</a></li>
-                                            {/foreach}
-                                        </ol>
-                                    </nav>
+                                <div class="form-group">
+                                    <div class="col-xs-12 col-sm-12 article-details-content">
+                                        <nav aria-label="breadcrumb" class="breadcrumb-content">
+                                            <ol class="breadcrumb" style="width: 750px;">
+                                                {foreach name="$site.article_detail_report" item="item"}
+                                                <li class="breadcrumb-item <?php if($status == $key) echo 'active'; ?>"><a href="?id={$row.id}&type=editor&status={$key}">{$item}</a></li>
+                                                {/foreach}
+                                            </ol>
+                                        </nav>
+                                    </div>
                                 </div>
-                            </div>
 
-                            {if condition="$status == 'reviewer_details'"}
-                            <div class="form-group">
-                                <div class="col-xs-12 col-sm-12 article-details-content">
-                                    <div class="table-responsive">
-                                        <table class="table inbox-table">
-                                            <thead style="background: #FAFAFA;" class="thead">
-                                            <tr>
-                                                <th style="width: 100px">Name</th>
-                                                <th style="width: 100px">Invited time</th>
-                                                <th style="width: 100px">Reply time</th>
-                                                <th style="width: 150px">Submission time</th>
-                                                <th style="width: 200px">Status</th>
-                                            </tr>
-                                            </thead>
-                                            <tbody class="tbody">
-                                            {foreach name="$row.reviewer" item="reviewer"}
-                                            <tr>
-                                                <td>{$reviewer.nickname}</td>
-                                                <td>{$reviewer.invited_time}</td>
-                                                <td>{$reviewer.reply_time ?? ''}</td>
-                                                <td>{$reviewer.submission_time ?? ''}</td>
-                                                <td>{$reviewer.status ?? ''}</td>
-                                            </tr>
-                                            {/foreach}
-                                            </tbody>
-                                        </table>
+                                {if condition="$status == 'reviewer_details'"}
+                                <div class="form-group">
+                                    <div class="col-xs-12 col-sm-12 article-details-content">
+                                        <div class="table-responsive">
+                                            <table class="table inbox-table">
+                                                <thead style="background: #FAFAFA;" class="thead">
+                                                <tr>
+                                                    <th style="width: 100px">Name</th>
+                                                    <th style="width: 100px">Invited time</th>
+                                                    <th style="width: 100px">Reply time</th>
+                                                    <th style="width: 150px">Submission time</th>
+                                                    <th style="width: 200px">Status</th>
+                                                </tr>
+                                                </thead>
+                                                <tbody class="tbody">
+                                                {foreach name="$row.reviewer" item="reviewer"}
+                                                <tr>
+                                                    <td>{$reviewer.nickname}</td>
+                                                    <td>{$reviewer.invited_time}</td>
+                                                    <td>{$reviewer.reply_time ?? ''}</td>
+                                                    <td>{$reviewer.submission_time ?? ''}</td>
+                                                    <td>{$reviewer.status ?? ''}</td>
+                                                </tr>
+                                                {/foreach}
+                                                </tbody>
+                                            </table>
+                                        </div>
                                     </div>
                                 </div>
-                            </div>
-                            {/if}
+                                {/if}
 
-                            {if condition="$status == 'reviewer_suggestion'"}
-                            <div class="form-group">
-                                <div class="col-xs-12 col-sm-12 article-details-content">
-                                    <div class="table-responsive">
-                                        <table class="table inbox-table">
-                                            <thead style="background: #FAFAFA;" class="thead">
-                                            <tr>
-                                                <th style="width: 100px">Full Name</th>
-                                                <th style="width: 100px">Affiliation</th>
-                                                <th style="width: 100px">Number Of Comments</th>
-                                            </tr>
-                                            </thead>
-                                            <tbody class="tbody">
-                                            {foreach name="$row.reviewer" item="reviewer"}
-                                            <tr>
-                                                <td>{$reviewer.nickname}</td>
-                                                <td>{$reviewer.affiliation}</td>
-                                                <td>{$reviewer.comment_num}</td>
-                                            </tr>
-                                            {/foreach}
-                                            </tbody>
-                                        </table>
+                                {if condition="$status == 'reviewer_suggestion'"}
+                                <div class="form-group">
+                                    <div class="col-xs-12 col-sm-12 article-details-content">
+                                        <div class="table-responsive">
+                                            <table class="table inbox-table">
+                                                <thead style="background: #FAFAFA;" class="thead">
+                                                <tr>
+                                                    <th style="width: 100px">Full Name</th>
+                                                    <th style="width: 100px">Affiliation</th>
+                                                    <th style="width: 100px">Number Of Comments</th>
+                                                </tr>
+                                                </thead>
+                                                <tbody class="tbody">
+                                                {foreach name="$row.reviewer" item="reviewer"}
+                                                <tr>
+                                                    <td>{$reviewer.nickname}</td>
+                                                    <td>{$reviewer.affiliation}</td>
+                                                    <td>{$reviewer.comment_num}</td>
+                                                </tr>
+                                                {/foreach}
+                                                </tbody>
+                                            </table>
+                                        </div>
                                     </div>
                                 </div>
-                            </div>
-                            {/if}
+                                {/if}
 
-                            {if condition="$status == 'review_report'"}
-                            <div class="form-group">
-                                <div class="col-xs-12 col-sm-12 article-details-content">
-                                    <div class="table-responsive">
-                                        <table class="table inbox-table">
-                                            <thead style="background: #FAFAFA;" class="thead">
-                                            <tr>
-                                                <th style="width: 100px">Name</th>
-                                                <th style="width: 100px">Recommendation</th>
-                                                <th style="width: 100px">Comment</th>
-                                                <th style="width: 150px">Submission time</th>
-                                            </tr>
-                                            </thead>
-                                            <tbody class="tbody">
-                                            {foreach name="$row.reviewer" item="reviewer"}
-                                            <tr>
-                                                <td>{$reviewer.nickname}</td>
-                                                <td>{$reviewer.recommendation}</td>
-                                                <td>{$reviewer.comment}</td>
-                                                <td>{$reviewer.createtime}</td>
-                                            </tr>
-                                            {/foreach}
-                                            </tbody>
-                                        </table>
+                                {if condition="$status == 'review_report'"}
+                                <div class="form-group">
+                                    <div class="col-xs-12 col-sm-12 article-details-content">
+                                        <div class="table-responsive">
+                                            <table class="table inbox-table">
+                                                <thead style="background: #FAFAFA;" class="thead">
+                                                <tr>
+                                                    <th style="width: 100px">Name</th>
+                                                    <th style="width: 100px">Recommendation</th>
+                                                    <th style="width: 100px">Comment</th>
+                                                    <th style="width: 150px">Submission time</th>
+                                                    <th style="width: 150px">Operate</th>
+                                                </tr>
+                                                </thead>
+                                                <tbody class="tbody">
+                                                {foreach name="$row.reviewer" item="reviewer"}
+                                                <tr>
+                                                    <td>{$reviewer.nickname}</td>
+                                                    <td>{$reviewer.recommendation}</td>
+                                                    <td>{$reviewer.comment}</td>
+                                                    <td>{$reviewer.createtime}</td>
+                                                    <td>
+                                                        {if condition="$row.user_id != $user->id"}
+                                                            {if condition="$reviewer.is_send == 'hidden'"}
+                                                            <a href="javascript:;" id="send-button" data-id="{$reviewer.comment_id}">SEND</a>
+                                                            {/if}
+                                                        {/if}
+                                                    </td>
+                                                </tr>
+                                                {/foreach}
+                                                </tbody>
+                                            </table>
+                                        </div>
                                     </div>
                                 </div>
-                            </div>
-                            {/if}
+                                {/if}
 
-                            {if condition="$status == 'author_report'"}
-                            <div class="form-group">
-                                <div class="col-xs-12 col-sm-12 article-details-content">
-                                    <div class="table-responsive">
-                                        <table class="table inbox-table">
-                                            <thead style="background: #FAFAFA;" class="thead">
-                                            <tr>
-                                                <th style="width: 100px">Name</th>
-                                                <th style="width: 100px">Recommendation</th>
-                                                <th style="width: 150px">Submission time</th>
-                                            </tr>
-                                            </thead>
-                                            <tbody class="tbody">
-                                            {if condition="$row.author"}
-                                            <tr>
-                                                <td>{$row.author.nickname}</td>
-                                                <td>{$row.author.comment}</td>
-                                                <td>{$row.author.createtime}</td>
-                                            </tr>
-                                            {/if}
-                                            </tbody>
-                                        </table>
+                                {if condition="$status == 'author_report'"}
+                                <div class="form-group">
+                                    <div class="col-xs-12 col-sm-12 article-details-content">
+                                        <div class="table-responsive">
+                                            <table class="table inbox-table">
+                                                <thead style="background: #FAFAFA;" class="thead">
+                                                <tr>
+                                                    <th style="width: 100px">Name</th>
+                                                    <th style="width: 100px">Recommendation</th>
+                                                    <th style="width: 150px">Submission time</th>
+                                                </tr>
+                                                </thead>
+                                                <tbody class="tbody">
+                                                {if condition="$row.author"}
+                                                <tr>
+                                                    <td>{$row.author.nickname}</td>
+                                                    <td>{$row.author.comment}</td>
+                                                    <td>{$row.author.createtime}</td>
+                                                </tr>
+                                                {/if}
+                                                </tbody>
+                                            </table>
+                                        </div>
                                     </div>
                                 </div>
-                            </div>
+                                {/if}
                             {/if}
                         </div>
 

+ 12 - 4
application/index/view/user/display_submitted.html

@@ -66,7 +66,7 @@
                                     <article class="article-item">
                                         <div class="media">
                                             <div class="media-left">
-                                                <a href="#">
+                                                <a href="javascript:;">
                                                     <div class="embed-responsive embed-responsive-4by3 img-zoom p-0">
                                                         <img src="{$vo.image}">
                                                     </div>
@@ -74,7 +74,7 @@
                                             </div>
                                             <div class="media-body">
                                                 <h3 class="article-title">
-                                                    <a href="#">{$vo.title}</a>
+                                                    <a href="javascript:;">{$vo.title}</a>
                                                     <div class="article-title-id">
                                                         ID:{$vo.id}
                                                     </div>
@@ -83,7 +83,7 @@
                                                     <span class="label label-info article-intro-label">{$vo.journal}</span>
                                                 </div>
                                                 <div class="article-tag">
-                                                    <div itemprop="date">Submission date:{$vo.createtime}</div>
+                                                    <div itemprop="date">Submission date:{$vo.createtime|date="Y-m-d", ###}</div>
                                                 </div>
                                                 <div class="article-tag">
                                                     {if condition="$vo.is_edit"}
@@ -98,7 +98,7 @@
                                                     <div class="article-read">
                                                         <a href="review_comments.html?id={$vo.id}&type=author" style="color: #007bff;" target="_blank">
                                                             <img src="__CDN__/assets/img/index/reply.png" alt="">
-                                                            Reply to review comments
+                                                            Reply review comments
                                                         </a>
                                                     </div>
                                                     {/if}
@@ -108,6 +108,14 @@
                                                             Send Email
                                                         </a>
                                                     </div>
+                                                    {if condition="$vo.is_view_comments"}
+                                                    <div class="article-read">
+                                                        <a href="article_details.html?id={$vo.id}&type=author" style="color: #007bff;" target="_blank">
+                                                            <img src="__CDN__/assets/img/index/view_comments.png" alt="">
+                                                            View's comments
+                                                        </a>
+                                                    </div>
+                                                    {/if}
                                                 </div>
                                             </div>
                                         </div>

+ 107 - 0
application/index/view/user/invitation_letter.html

@@ -0,0 +1,107 @@
+<style>
+    .breadcrumb-item {
+        padding: 15px 15px !important;
+    }
+</style>
+<link href="__CDN__/assets/css/user/display_submitted.css?v={$Think.config.site.version|htmlentities}" rel="stylesheet">
+<div class="common-bg">
+    <div class="common-font">
+        Invitation Letter for Review
+    </div>
+</div>
+<div id="content-container" class="container">
+    <div class="row">
+        <div class="col-md-3">
+            {include file="common/sidenav" /}
+        </div>
+        <div class="col-md-9">
+            <div class="panel panel-default">
+                <div class="panel-body">
+                    <h2 class="page-header">
+                        Invitation Letter for Review
+                        <div class="col-xs-12 col-sm-4" style="float:right">
+                            <input type="text" class="form-control" id="c-search" name="search" value="" placeholder="Enter content for search">
+                        </div>
+                    </h2>
+
+                    <input type="hidden" id="manuscript_invite_status" value="{$status}">
+
+                    <nav aria-label="breadcrumb" class="breadcrumb-content">
+                        <ol class="breadcrumb">
+                            {foreach name="$site.manuscript_invite_status" item="item"}
+                            <li class="breadcrumb-item <?php if($status == $key) echo 'active'; ?>"><a href="?status={$key}">{$item}</a></li>
+                            {/foreach}
+                        </ol>
+                    </nav>
+
+                    <div class="row">
+                        <div class="col-md-12 col-sm-12">
+                            <div class="tab-inner" style="background:#fff;">
+                                <div class="article-list">
+                                    {foreach name="list" item="vo"}
+                                    <article class="article-item">
+                                        <div class="media">
+                                            <div class="media-left">
+                                                <a href="article_details?id={$vo.id}&type=invita_review">
+                                                    <div class="embed-responsive embed-responsive-4by3 img-zoom p-0">
+                                                        <img src="{$vo.image}">
+                                                    </div>
+                                                </a>
+                                            </div>
+                                            <div class="media-body">
+                                                <h3 class="article-title">
+                                                    <a href="article_details?id={$vo.id}&type=invita_review">{$vo.title}</a>
+                                                    <div class="article-title-id">
+                                                        ID:{$vo.id}
+                                                    </div>
+                                                </h3>
+                                                <div class="article-intro">
+                                                    <span class="label label-success article-intro-label">{$vo.journal}</span>
+                                                </div>
+                                                <div class="article-tag">
+                                                    <div itemprop="date">Submission date:{$vo.createtime|date="Y-m-d", ###}</div>
+                                                </div>
+                                                <div class="article-tag">
+                                                    {if condition="$status == 'audit' || $status == 'refuse'"}
+                                                    <div class="article-read">
+                                                        <a href="javascript:;" class="invite-letter" data-id="{$vo.id}" data-status="accept" style="color: #007bff;">
+                                                            <img src="__CDN__/assets/img/index/accept.png" alt="">
+                                                            Accept
+                                                        </a>
+                                                    </div>
+                                                    {/if}
+                                                    {if condition="$status == 'audit' || $status == 'accept'"}
+                                                    <div class="article-read">
+                                                        <a href="javascript:;" class="invite-letter" data-id="{$vo.id}" data-status="refuse" style="color: #007bff;">
+                                                            <img src="__CDN__/assets/img/index/refuse.png" alt="">
+                                                            Refuse
+                                                        </a>
+                                                    </div>
+                                                    {/if}
+                                                </div>
+                                            </div>
+                                        </div>
+                                    </article>
+                                    {/foreach}
+
+                                    {if $list->isEmpty()}
+                                    <div class="loadmore loadmore-line loadmore-nodata"><span class="loadmore-tips">There is currently no data available</span></div>
+                                    {/if}
+                                </div>
+
+                                <!--@formatter:off-->
+
+                                <!-- S 分页栏 -->
+                                <div class="pager">
+                                    {$list->render()}
+                                </div>
+                                <!--@formatter:on-->
+
+                            </div>
+                        </div>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>

+ 41 - 2
application/index/view/user/submit_manuscript.html

@@ -348,7 +348,8 @@
                                     <span style="color:#ed534b;margin-right: 10px;">*</span>Keywords:
                                 </label>
                                 <div class="col-xs-12 col-sm-8">
-                                    <input type="text" data-rule="required" data-role="tagsinput" class="form-control" id="c-keywords" name="row[keywords]" value="{$row.keywords|htmlentities}" placeholder="Type here...">
+<!--                                    <input type="text" data-rule="required" data-role="tagsinput" class="form-control" id="c-keywords" name="row[keywords]" value="{$row.keywords|htmlentities}" placeholder="Type here...">-->
+                                    <textarea id="c-keywords" data-rule="required" class="form-control editor" name="row[keywords]" rows="15" placeholder="Type here...">{$row.keywords|htmlentities}</textarea>
                                     <div class="input-group-addon no-border no-padding">
                                         <span class="msg-box n-right" for="c-keywords"></span>
                                     </div>
@@ -367,7 +368,10 @@
                             {if condition="!$row.id"}
                             <div class="add-author-item pt-4">
                                 <div class="form-group author-content-button-item">
-                                    <div class="author-delete-button text-delete-button">
+                                    <div class="author-sort-button text-sort-button text-button">
+                                        <i class="fa fa-sort"></i> Sort
+                                    </div>
+                                    <div class="author-delete-button text-delete-button text-button">
                                         <i class="fa fa-trash"></i> Delete
                                     </div>
                                 </div>
@@ -739,6 +743,41 @@
                             </div>
                         </div>
 
+                        <hr>
+
+                        {if condition="$user->is_review == 'fault'"}
+                        <div class="become-review" style="display: none">
+                            <div class="form-group">
+                                <label class="control-label col-xs-12 col-sm-12" style="text-align: left">
+                                    Are you willing to become a reviewer
+                                </label>
+                            </div>
+
+                            <div class="form-group">
+                                <label class="control-label col-xs-12 col-sm-3">
+                                    choose:
+                                </label>
+                                <div class="col-xs-12 col-sm-8">
+                                    <div class="input-group mb-3">
+                                        <div class="radio radio-inline pl-0">
+                                            <label for="is-become-review"><input id="is-become-review" name="row[is_become_review]" type="radio" value="normal" {if condition="$row.is_become_review == 'normal'"}checked{/if} />Yes</label>
+                                            <label for="is-become-review"><input id="is-become-review" name="row[is_become_review]" type="radio" value="hidden" {if condition="$row.is_become_review == 'hidden'"}checked{/if} />No</label>
+                                        </div>
+                                    </div>
+                                </div>
+                            </div>
+
+                            <div class="form-group field_content" {if condition="$row.is_become_review == 'hidden' || $row.is_become_review == ''"}style="display: none;"{/if} {if condition="$row.is_become_review == 'normal'"}style="display: show;"{/if} >
+                                <label class="control-label col-xs-12 col-sm-3">
+                                    Field:
+                                </label>
+                                <div class="col-xs-12 col-sm-8">
+                                    <input id="c-field" data-source="user/choose_field" data-primary-key="id" data-search-field="name" class="form-control selectpage" name="row[field]" type="text" value="{$row.field}">
+                                </div>
+                            </div>
+                        </div>
+                        {/if}
+
                         <div class="form-group normal-footer">
                             <label class="control-label col-xs-12 col-sm-4"></label>
                             <div class="col-xs-12 col-sm-8">

+ 2 - 2
public/assets/css/user/submit_manuscript.css

@@ -144,7 +144,7 @@
     letter-spacing: 0.2px;
     font-weight: 600;
 }
-.text-delete-button {
+.text-button {
     z-index: 50;
     padding-left: 30px;
     font-size: 14px;
@@ -163,7 +163,7 @@
 .dash {
     width: 700px;
     height: 520px;
-    border: 1px dashed #f00;
+    /*border: 1px dashed #f00;*/
 }
 .author-content-button-item {
     padding-right:20px;

BIN
public/assets/img/index/accept.png


BIN
public/assets/img/index/author_sort.png


BIN
public/assets/img/index/refuse.png


BIN
public/assets/img/index/view_comments.png


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

@@ -370,6 +370,7 @@ define(['jquery', 'bootstrap', 'frontend', 'form', 'template'], function ($, und
                             $(".journal-content").show();
                             $(".add-author-content").show();
                             $('.recommended-button').hide();
+                            $('.become-review').show();
 
                             // 最后一步设置鼠标移动时div的x与y轴的减少距离
                             custom_mousemove_x = 500;
@@ -377,10 +378,12 @@ define(['jquery', 'bootstrap', 'frontend', 'form', 'template'], function ($, und
                         } else if (index == 4) {
                             $('.recommended-button').show();
                             $(".form-item").hide();
+                            $('.become-review').hide();
                             $(".form-item:eq(" + index + ")").show();
                         } else if (index == 2) {
                             $(".author-button").show();
                             $(".form-item").hide();
+                            $('.become-review').hide();
                             $(".form-item:eq(" + index + ")").show();
                             $(".recommended-button").hide();
                         } else {
@@ -388,6 +391,7 @@ define(['jquery', 'bootstrap', 'frontend', 'form', 'template'], function ($, und
                             $(".author-item").hide();
                             $('.author-button').hide();
                             $(".form-item").hide();
+                            $('.become-review').hide();
                             $(".form-item:eq(" + index + ")").show();
                         }
 
@@ -415,6 +419,7 @@ define(['jquery', 'bootstrap', 'frontend', 'form', 'template'], function ($, und
                             $(".journal-content").show();
                             $(".add-author-content").show();
                             $('.recommended-button').hide();
+                            $('.become-review').show();
 
                             // 最后一步设置鼠标移动时div的x与y轴的减少距离
                             custom_mousemove_x = 500;
@@ -440,6 +445,7 @@ define(['jquery', 'bootstrap', 'frontend', 'form', 'template'], function ($, und
                         if (li_index != 5) {
                             $('.next-button').css('display', 'block');
                             $('.submit-button').css('display', 'none');
+                            $('.become-review').hide();
                         }
                     } else {
                         if (button_next) {
@@ -459,6 +465,7 @@ define(['jquery', 'bootstrap', 'frontend', 'form', 'template'], function ($, und
                                 $(".journal-content").show();
                                 $(".add-author-content").show();
                                 $('.recommended-button').hide();
+                                $('.become-review').show();
 
                                 // 最后一步设置鼠标移动时div的x与y轴的减少距离
                                 custom_mousemove_x = 500;
@@ -484,6 +491,7 @@ define(['jquery', 'bootstrap', 'frontend', 'form', 'template'], function ($, und
                             if (li_index != 5) {
                                 $('.next-button').css('display', 'block');
                                 $('.submit-button').css('display', 'none');
+                                $('.become-review').hide();
                             }
                         }
                     }
@@ -959,7 +967,10 @@ define(['jquery', 'bootstrap', 'frontend', 'form', 'template'], function ($, und
                 let str = `<div class="add-author-item div">
                                 <hr style="background: #B8B8B8;">
                                 <div class="form-group author-content-button-item">
-                                    <div class="author-delete-button text-delete-button">
+                                    <div class="author-sort-button text-sort-button text-button">
+                                        <i class="fa fa-sort"></i> Sort
+                                    </div>
+                                    <div class="author-delete-button text-delete-button text-button">
                                         <i class="fa fa-trash"></i> Delete
                                     </div>
                                 </div>
@@ -1297,6 +1308,13 @@ define(['jquery', 'bootstrap', 'frontend', 'form', 'template'], function ($, und
                 } else {
                     $('.interest_content').hide();
                 }
+
+                let is_become_review = $("input[name='row[is_become_review]']:checked").val();
+                if (is_become_review == 'normal') {
+                    $('.field_content').show();
+                } else {
+                    $('.field_content').hide();
+                }
             })
 
             Form.api.bindevent($("#submit-manuscript-form"), function () {
@@ -1389,6 +1407,7 @@ define(['jquery', 'bootstrap', 'frontend', 'form', 'template'], function ($, und
                                     let rowData = tableData[i];
                                     let edit_str = '';
                                     let comments_str = '';
+                                    let view_comments_str = '';
                                     if (rowData.is_edit) {
                                         edit_str = '<div class="article-read">\n' +
                                             '                                                        <a href="submit_manuscript?id='+ rowData.id +'" style="color: #007bff;" target="_blank">\n' +
@@ -1401,14 +1420,22 @@ define(['jquery', 'bootstrap', 'frontend', 'form', 'template'], function ($, und
                                         comments_str = '<div class="article-read">\n' +
                                             '                                                        <a href="review_comments.html?id='+ rowData.id +'&type=author" style="color: #007bff;" target="_blank">\n' +
                                             '                                                            <img src="/assets/img/index/reply.png" alt="">\n' +
-                                            '                                                            Reply to review comments\n' +
+                                            '                                                            Reply review comments\n' +
+                                            '                                                        </a>\n' +
+                                            '                                                    </div>';
+                                    }
+                                    if (rowData.is_view_comments) {
+                                        view_comments_str = '<div class="article-read">\n' +
+                                            '                                                        <a href="article_details.html?id={$vo.id}&type=author" style="color: #007bff;" target="_blank">\n' +
+                                            '                                                            <img src="/assets/img/index/view_comments.png" alt="">\n' +
+                                            '                                                            View\'s comments\n' +
                                             '                                                        </a>\n' +
                                             '                                                    </div>';
                                     }
                                     let html = '<article class="article-item">\n' +
                                         '                                        <div class="media">\n' +
                                         '                                            <div class="media-left">\n' +
-                                        '                                                <a href="#">\n' +
+                                        '                                                <a href="javascript:;">\n' +
                                         '                                                    <div class="embed-responsive embed-responsive-4by3 img-zoom p-0">\n' +
                                         '                                                        <img src="'+ rowData.image +'">\n' +
                                         '                                                    </div>\n' +
@@ -1416,7 +1443,7 @@ define(['jquery', 'bootstrap', 'frontend', 'form', 'template'], function ($, und
                                         '                                            </div>\n' +
                                         '                                            <div class="media-body">\n' +
                                         '                                                <h3 class="article-title">\n' +
-                                        '                                                    <a href="#">'+ rowData.title +'</a>\n' +
+                                        '                                                    <a href="javascript:;">'+ rowData.title +'</a>\n' +
                                         '                                                    <div class="article-title-id">\n' +
                                         '                                                        ID:'+ rowData.id +'\n' +
                                         '                                                    </div>\n' +
@@ -1570,53 +1597,50 @@ define(['jquery', 'bootstrap', 'frontend', 'form', 'template'], function ($, und
                             keyword: keyword,
                         },
                         success: function(res) {
-                            console.log(res);
                             if (res.code === 1) {
-                                // if (res.data.total > 0) {
-                                    $('.article-list').html('');
-                                    var tableData = res.data.data;
-                                    for (var i = 0; i < tableData.length; i++) {
-                                        let rowData = tableData[i];
-                                        let html = '<article class="article-item">\n' +
-                                            '                                        <div class="media">\n' +
-                                            '                                            <div class="media-left">\n' +
-                                            '                                                <a href="article_details?id='+ rowData.id +'&type=review">\n' +
-                                            '                                                    <div class="embed-responsive embed-responsive-4by3 img-zoom">\n' +
-                                            '                                                        <img src="'+ rowData.image +'">\n' +
-                                            '                                                    </div>\n' +
-                                            '                                                </a>\n' +
-                                            '                                            </div>\n' +
-                                            '                                            <div class="media-body">\n' +
-                                            '                                                <h3 class="article-title">\n' +
-                                            '                                                    <a href="article_details?id='+ rowData.id +'&type=review">'+ rowData.title +'</a>\n' +
-                                            '                                                    <div class="article-title-id">\n' +
-                                            '                                                        ID:'+ rowData.id +'\n' +
-                                            '                                                    </div>\n' +
-                                            '                                                </h3>\n' +
-                                            '                                                <div class="article-intro">\n' +
-                                            '                                                    <span class="label label-success article-intro-label">'+ rowData.journal +'</span>\n' +
-                                            '                                                </div>\n' +
-                                            '                                                <div class="article-tag">\n' +
-                                            '                                                    <span itemprop="date">Submission date:'+ rowData.createtime +'</span>\n' +
-                                            '                                                    <span class="article-read">\n' +
-                                            '                                                        <a href="conduct_review?id='+ rowData.id +'&type=reviewer" style="color: #007bff;" target="_blank">\n' +
-                                            '                                                            <img src="/assets/img/index/review_button.png" alt="">\n' +
-                                            '                                                            Review\n' +
-                                            '                                                        </a>\n' +
-                                            '                                                    <span/>\n' +
-                                            '                                                    <div class="article-read">\n' +
-                                            '                                                        <a href="send_email.html?id='+ rowData.id +'&type=reviewer" style="color: #007bff;" target="_blank">\n' +
-                                            '                                                            <img src="/assets/img/index/email.png" alt="">\n' +
-                                            '                                                            Send Email\n' +
-                                            '                                                        </a>\n' +
-                                            '                                                    </div>'
-                                            '                                                </div>\n' +
-                                            '                                            </div>\n' +
-                                            '                                        </div>\n' +
-                                            '                                    </article>';
-                                        $('.article-list').append(html);
-                                    }
-                                // }
+                                $('.article-list').html('');
+                                var tableData = res.data.data;
+                                for (var i = 0; i < tableData.length; i++) {
+                                    let rowData = tableData[i];
+                                    let html = '<article class="article-item">\n' +
+                                        '                                        <div class="media">\n' +
+                                        '                                            <div class="media-left">\n' +
+                                        '                                                <a href="article_details?id='+ rowData.id +'&type=review">\n' +
+                                        '                                                    <div class="embed-responsive embed-responsive-4by3 img-zoom">\n' +
+                                        '                                                        <img src="'+ rowData.image +'">\n' +
+                                        '                                                    </div>\n' +
+                                        '                                                </a>\n' +
+                                        '                                            </div>\n' +
+                                        '                                            <div class="media-body">\n' +
+                                        '                                                <h3 class="article-title">\n' +
+                                        '                                                    <a href="article_details?id='+ rowData.id +'&type=review">'+ rowData.title +'</a>\n' +
+                                        '                                                    <div class="article-title-id">\n' +
+                                        '                                                        ID:'+ rowData.id +'\n' +
+                                        '                                                    </div>\n' +
+                                        '                                                </h3>\n' +
+                                        '                                                <div class="article-intro">\n' +
+                                        '                                                    <span class="label label-success article-intro-label">'+ rowData.journal +'</span>\n' +
+                                        '                                                </div>\n' +
+                                        '                                                <div class="article-tag">\n' +
+                                        '                                                    <span itemprop="date">Submission date:'+ rowData.createtime +'</span>\n' +
+                                        '                                                    <span class="article-read">\n' +
+                                        '                                                        <a href="conduct_review?id='+ rowData.id +'&type=reviewer" style="color: #007bff;" target="_blank">\n' +
+                                        '                                                            <img src="/assets/img/index/review_button.png" alt="">\n' +
+                                        '                                                            Review\n' +
+                                        '                                                        </a>\n' +
+                                        '                                                    <span/>\n' +
+                                        '                                                    <div class="article-read">\n' +
+                                        '                                                        <a href="send_email.html?id='+ rowData.id +'&type=reviewer" style="color: #007bff;" target="_blank">\n' +
+                                        '                                                            <img src="/assets/img/index/email.png" alt="">\n' +
+                                        '                                                            Send Email\n' +
+                                        '                                                        </a>\n' +
+                                        '                                                    </div>'
+                                        '                                                </div>\n' +
+                                        '                                            </div>\n' +
+                                        '                                        </div>\n' +
+                                        '                                    </article>';
+                                    $('.article-list').append(html);
+                                }
                             }
                         },
                         error: function(xhr, status, error) {
@@ -1626,6 +1650,107 @@ define(['jquery', 'bootstrap', 'frontend', 'form', 'template'], function ($, und
                 }
             });
         },
+        invitation_letter: function () {
+            // 初始化分页参数
+            var currentPage = 1;
+            var pageSize = 10;
+            var status = $('#manuscript_invite_status').val();
+            $('#c-search').on("keyup", function (e) {
+                if (e.keyCode === 13) {
+                    let keyword = $(this).val();
+                    // 点击回车后进行搜索
+                    $.ajax({
+                        url: 'user/invitation_letter',
+                        type: 'GET',
+                        dataType: 'json',
+                        data: {
+                            status: status,
+                            page: currentPage,
+                            limit: pageSize,
+                            keyword: keyword,
+                        },
+                        success: function(res) {
+                            if (res.code === 1) {
+                                $('.article-list').html('');
+                                var tableData = res.data.data;
+                                for (var i = 0; i < tableData.length; i++) {
+                                    let rowData = tableData[i];
+                                    let html = '<article class="article-item">\n' +
+                                        '                                        <div class="media">\n' +
+                                        '                                            <div class="media-left">\n' +
+                                        '                                                <a href="article_details?id='+ rowData.id +'&type=invita_review">\n' +
+                                        '                                                    <div class="embed-responsive embed-responsive-4by3 img-zoom p-0">\n' +
+                                        '                                                        <img src="'+ rowData.image +'">\n' +
+                                        '                                                    </div>\n' +
+                                        '                                                </a>\n' +
+                                        '                                            </div>\n' +
+                                        '                                            <div class="media-body">\n' +
+                                        '                                                <h3 class="article-title">\n' +
+                                        '                                                    <a href="article_details?id='+ rowData.id +'&type=invita_review">'+ rowData.title +'</a>\n' +
+                                        '                                                    <div class="article-title-id">\n' +
+                                        '                                                        ID:'+ rowData.id +'\n' +
+                                        '                                                    </div>\n' +
+                                        '                                                </h3>\n' +
+                                        '                                                <div class="article-intro">\n' +
+                                        '                                                    <span class="label label-success article-intro-label">'+ rowData.journal +'</span>\n' +
+                                        '                                                </div>\n' +
+                                        '                                                <div class="article-tag">\n' +
+                                        '                                                    <div itemprop="date">Submission date:'+ rowData.createtime +'</div>\n' +
+                                        '                                                </div>\n' +
+                                        '                                                <div class="article-tag">\n' +
+                                        '                                                    <div class="article-read">\n' +
+                                        '                                                        <a href="javascript:;" class="invite-letter" data-id="'+ rowData.id +'" data-status="accept" style="color: #007bff;">\n' +
+                                        '                                                            <img src="/assets/img/index/accept.png" alt="">\n' +
+                                        '                                                            Accept\n' +
+                                        '                                                        </a>\n' +
+                                        '                                                    </div>\n' +
+                                        '                                                    <div class="article-read">\n' +
+                                        '                                                        <a href="javascript:;" class="invite-letter" data-id="'+ rowData.id +'" data-status="refuse" style="color: #007bff;">\n' +
+                                        '                                                            <img src="/assets/img/index/refuse.png" alt="">\n' +
+                                        '                                                            Refuse\n' +
+                                        '                                                        </a>\n' +
+                                        '                                                    </div>\n' +
+                                        '                                                </div>\n' +
+                                        '                                            </div>\n' +
+                                        '                                        </div>\n' +
+                                        '                                    </article>';
+                                    $('.article-list').append(html);
+                                }
+                            }
+                        },
+                        error: function(xhr, status, error) {
+                            console.error(error);
+                        }
+                    });
+                }
+            });
+
+            // 接受/拒绝操作
+            $(document).on('click', '.invite-letter', function () {
+                let id = $(this).attr('data-id');
+                let status = $(this).attr('data-status');
+                $.ajax({
+                    url: '/index/user/invitation_letter_operate',
+                    type: 'POST',
+                    dataType: 'json',
+                    data: {
+                        id: id,
+                        status: status,
+                    },
+                    success: function(res) {
+                        if (res.code === 1) {
+                            Toastr.success(res.msg);
+                            setTimeout(function () {
+                                location.reload();
+                            }, 2000);
+                        }
+                    },
+                    error: function(xhr, status, error) {
+                        console.error(error);
+                    }
+                });
+            });
+        },
         special_issue: function () {
             // 自定义添加作者按钮
             $(document).on('click', '.add-editor-button', function () {
@@ -1877,6 +2002,33 @@ define(['jquery', 'bootstrap', 'frontend', 'form', 'template'], function ($, und
             });
         },
         article_details: function () {
+            // 意见转呈给作者
+            $(document).on('click', '#send-button', function () {
+                let comment_id = $(this).attr('data-id');
+                Layer.confirm("Are you sure you want to forward it to the author?", {title: "Tips", icon: 0, btn: ["Confirm", "Cancel"]}, function () {
+                    $.ajax({
+                        url: 'user/send_author_comments',
+                        type: 'POST',
+                        dataType: 'json',
+                        data: {
+                            comment_id: comment_id
+                        },
+                        success: function(res) {
+                            console.log(res);
+                            if (res.code === 1) {
+                                Toastr.success(res.msg);
+                                setTimeout(function () {
+                                    location.reload();
+                                }, 2000);
+                            }
+                        },
+                        error: function(xhr, status, error) {
+                            console.error(error);
+                        }
+                    });
+                });
+            })
+
             setTimeout(function () {
                 $('.btn-delete').remove();
                 $('.input-group-addon').remove();