Browse Source

Merge remote-tracking branch 'origin/dev_200331_multimedia' into dev_200331_multimedia

# Conflicts:
#	stmms-web/src/main/webapp/static/mark-new/js/mark-control.js
luoshi 5 years ago
parent
commit
edb2aec551
19 changed files with 458 additions and 338 deletions
  1. 82 46
      stmms-web/src/main/webapp/static/i18n/messages.properties
  2. 78 47
      stmms-web/src/main/webapp/static/i18n/messages_en.properties
  3. 78 47
      stmms-web/src/main/webapp/static/i18n/messages_zh.properties
  4. 23 11
      stmms-web/src/main/webapp/static/mark-json/js/mark-control.js
  5. 89 91
      stmms-web/src/main/webapp/static/mark-new/js/mark-control.js
  6. 11 11
      stmms-web/src/main/webapp/static/mark-new/js/modules/change-name.js
  7. 22 22
      stmms-web/src/main/webapp/static/mark-new/js/modules/mark-board.js
  8. 3 3
      stmms-web/src/main/webapp/static/mark-new/js/modules/mark-history.js
  9. 12 12
      stmms-web/src/main/webapp/static/mark-new/js/modules/mark-status.js
  10. 2 2
      stmms-web/src/main/webapp/static/mark-new/js/modules/problem-process.js
  11. 2 2
      stmms-web/src/main/webapp/static/mark-new/js/modules/sheet-view.js
  12. 3 3
      stmms-web/src/main/webapp/static/mark-new/js/modules/single-image-view.js
  13. 4 4
      stmms-web/src/main/webapp/static/mark-new/js/modules/specialTag.js
  14. 1 1
      stmms-web/src/main/webapp/static/mark-new/js/modules/thumbnail.js
  15. 9 9
      stmms-web/src/main/webapp/static/mark-new/js/modules/warning-info.js
  16. 24 12
      stmms-web/src/main/webapp/static/mark-track/js/mark-control.js
  17. 10 10
      stmms-web/src/main/webapp/static/mark-track/js/modules/mark-board.js
  18. 1 1
      stmms-web/src/main/webapp/static/mark-track/js/modules/sheet-view.js
  19. 4 4
      stmms-web/src/main/webapp/static/mark-track/js/modules/single-image-view.js

+ 82 - 46
stmms-web/src/main/webapp/static/i18n/messages.properties

@@ -5,74 +5,110 @@ user.login.marker=\u8bc4\u5377\u5458\u767b\u5f55
 user.login.name=\u7528\u6237\u540d
 user.login.password=\u5bc6\u7801
 user.login.submit=\u767b\u5f55
-user.logout=\u9000\u51fa
 #mark-control
-mark.assistant=<i class="icon-wrench"></i> \u5c0f\u52a9\u624b
-mark.mode.track=\u5207\u6362\u5230\u8f68\u8ff9\u6a21\u5f0f
-mark.mode.common=\u5207\u6362\u5230\u666e\u901a\u6a21\u5f0f
-mark.function=\u8bc4\u5377\u529f\u80fd
+mark.control.assistant=\u5c0f\u52a9\u624b
+mark.control.mode.track=\u5207\u6362\u5230\u8f68\u8ff9\u6a21\u5f0f
+mark.control.mode.common=\u5207\u6362\u5230\u666e\u901a\u6a21\u5f0f
+mark.control.function=\u8bc4\u5377\u529f\u80fd
+mark.control.logout=\u9000\u51fa
 #status
-mark.student.number=\u8003\u751f\u7f16\u53f7<em id="student-number"></em>
-mark.library.number=\u4efb\u52a1\u7f16\u53f7<em id="library-number"></em>
-mark.objective.score=\u5ba2\u89c2\u5f97\u5206<em id="objective-score"></em>
-mark.marked.count=\u5df2\u8bc4<em id="person-count"></em>
-mark.unmark.count=\u672a\u8bc4<em id="todo-count"></em>
-mark.top.count=\u5206\u914d<em id="top-count"></em>
-mark.progress=\u8fdb\u5ea6<em id="marked-percent"></em>
-mark.continue=\u7ee7\u7eed
-mark.top.count.finish=\u5206\u914d\u4efb\u52a1\u5df2\u8bc4\u5b8c\uff0c\u662f\u5426\u7ee7\u7eed\uff1f
-mark.loading=\u6b63\u5728\u52a0\u8f7d...
+mark.status.student.number=\u8003\u751f\u7f16\u53f7
+mark.status.library.number=\u4efb\u52a1\u7f16\u53f7
+mark.status.objective.score=\u5ba2\u89c2\u5f97\u5206
+mark.status.marked.count=\u5df2\u8bc4
+mark.status.unmark.count=\u672a\u8bc4
+mark.status.top.count=\u5206\u914d
+mark.status.progress=\u8fdb\u5ea6
+mark.status.continue=\u7ee7\u7eed
+mark.status.top.count.finish=\u5206\u914d\u4efb\u52a1\u5df2\u8bc4\u5b8c\uff0c\u662f\u5426\u7ee7\u7eed\uff1f
+mark.status.loading=\u6b63\u5728\u52a0\u8f7d...
+mark.status.logout=\u9000\u51fa
 #single-image-view
-mark.zoom.in=\u653e\u5927
-mark.zoom.out=\u7f29\u5c0f
-mark.zoom.fit=\u9002\u5e94
-mark.student.answer=\u7b54\u5377
+mark.single.zoom.in=\u653e\u5927
+mark.single.zoom.out=\u7f29\u5c0f
+mark.single.zoom.fit=\u9002\u5e94
+mark.single.student.answer=\u7b54\u5377
 #chang name
 mark.change.name=\u4fee\u6539\u4e2a\u4eba\u4fe1\u606f
-mark.name=\u8f93\u5165\u7528\u6237\u540d
-mark.password=\u8f93\u5165\u65b0\u5bc6\u7801
-mark.password.again=\u518d\u6b21\u8f93\u5165\u65b0\u5bc6\u7801
+mark.change.press.name=\u8f93\u5165\u7528\u6237\u540d
+mark.change.press.password=\u8f93\u5165\u65b0\u5bc6\u7801
+mark.change.press.password.again=\u518d\u6b21\u8f93\u5165\u65b0\u5bc6\u7801
+mark.change.confirm=\u786e\u5b9a
+mark.change.name.null=\u540d\u5b57\u4e0d\u80fd\u4e3a\u7a7a
+mark.change.name.length=\u957f\u5ea6\u4e0d\u80fd\u8d85\u8fc78\u4e2a\u5b57
+mark.change.password.same=\u4e24\u6b21\u5bc6\u7801\u8bf7\u4fdd\u6301\u4e00\u81f4
+mark.change.password.length=\u5bc6\u7801\u7684\u957f\u5ea6\u81f3\u5c114\u4f4d
+mark.change.network.error=\u7f51\u7edc\u901a\u4fe1\u9519\u8bef\uff0c\u8bf7\u7a0d\u540e\u91cd\u8bd5
+mark.change.error=\u4fee\u6539\u5931\u8d25\uff0c\u8bf7\u7a0d\u540e\u91cd\u8bd5
 #specialTag
 mark.special.tag=\u7279\u6b8a\u6807\u8bb0
-mark.back=\u56de\u9000
-mark.clear=\u5168\u90e8\u6e05\u9664
-mark.underline=\u4e0b\u5212\u7ebf
-mark.open=\u6253\u5f00
-mark.close=\u5173\u95ed
+mark.special.back=\u56de\u9000
+mark.special.clear=\u5168\u90e8\u6e05\u9664
+mark.special.underline=\u4e0b\u5212\u7ebf
+mark.special.open=\u6253\u5f00
+mark.special.close=\u5173\u95ed
 #problem-process
 mark.problem=\u95ee\u9898\u5377
 mark.problem.type=\u9009\u62e9\u95ee\u9898\u7c7b\u578b
-mark.confirm=\u786e\u5b9a
-mark.cancel=\u53d6\u6d88
+mark.problem.confirm=\u786e\u5b9a
+mark.problem.cancel=\u53d6\u6d88
 #thumbnail
 mark.thumbnail=\u7f29\u7565\u56fe
+mark.thumbnail.open=\u6253\u5f00
+mark.thumbnail.close=\u5173\u95ed
 #view-sidebar
 mark.sidebar=\u4fa7\u8fb9\u680f
 #mark-history
-mark.history=\u56de\u8bc4
-mark.history.time=\u65f6\u95f4<em class="up" id="time-sort"></em>
-mark.history.number=\u7f16\u53f7<em class="up" id="studentId-sort">
-mark.history.score=\u603b\u5206<em class="up" id="score-sort">
+mark.history.title=\u56de\u8bc4
+mark.history.time=\u65f6\u95f4
+mark.history.number=\u7f16\u53f7
+mark.history.score=\u603b\u5206
 mark.history.search=\u67e5\u627e\u8bd5\u5377
-mark.history.pre=\u524d<i class="yellow" id="history-start"></i>-\u524d<i class="yellow" id="history-end"></i>
+mark.history.pre=\u524d
 mark.history.success=\u56de\u8bc4\u6210\u529f\uff0c\u603b\u5206\uff1a
 mark.history.problem=\u56de\u8bc4\u6210\u529f\uff0c\u5df2\u63d0\u4ea4\u95ee\u9898\u5377
+mark.history.loading=\u6b63\u5728\u52a0\u8f7d\u8bf7\u7a0d\u5019
 #mark-board
-mark.submit=\u63d0\u4ea4
-mark.total.score.board=\u603b\u5206\uff1a<i class="yellow" id="score-board-total-score"></i>
-mark.total.score=\u603b\u5206 <i id="total-score">5</i>
-mark.score.zero=\u5168\u96f6\u5206
-mark.pass=\u8df3 \u8fc7
-mark.choose.result=\u9009\u505a\u7ed3\u679c
-mark.keyboard=\u952e\u76d8\u7ed9\u5206 >>
-mark.mouse=<< \u9f20\u6807\u7ed9\u5206
-mark.interval=\u95f4\u9694
-mark.score=\u5206
-mark.clear.question=\u6e05\u9664\u672c\u9898
+mark.board.submit=\u63d0\u4ea4
+mark.board.total.score=\u603b\u5206
+mark.board.score.zero=\u5168\u96f6\u5206
+mark.board.pass=\u8df3 \u8fc7
+mark.board.choose.result=\u9009\u505a\u7ed3\u679c
+mark.board.keyboard=\u952e\u76d8\u7ed9\u5206 >>
+mark.board.mouse=<< \u9f20\u6807\u7ed9\u5206
+mark.board.interval=\u95f4\u9694
+mark.board.score=\u5206
+mark.board.back=\u56de\u9000
+mark.board.clear.question=\u6e05\u9664\u672c\u9898
+mark.board.clear.question=\u6e05\u9664\u5168\u5377
+mark.board.question.not.mark=\u5f53\u524d\u4efb\u52a1\u8fd8\u6709\u672a\u7ed9\u5206\u7684\u9898\uff0c\u8bf7\u7ee7\u7eed\u7ed9\u5206
+mark.board.confirm=,\u786e\u8ba4\u63d0\u4ea4\u5417\uff1f
+mark.board.zero.confirm=\u786e\u8ba4\u8981\u63d0\u4ea4\u5168\u96f6\u5206\u5417\uff1f
+mark.board.null=\u65e0
+mark.board.interval.error=\u4e0d\u7b26\u5408\u5206\u503c\u95f4\u9694\u8981\u6c42
+mark.board.gt=\u4e0d\u80fd\u5927\u4e8e
+mark.board.lt=\u4e0d\u80fd\u5c0f\u4e8e
+mark.board.number.error=\u4e0d\u662f\u5408\u6cd5\u6570\u5b57
+mark.board.step.error=\u5fc5\u987b\u9009\u62e9\u4e00\u9898\u5206\u53d1\uff01
+mark.board.step.same=\u4e0d\u80fd\u91cd\u65b0\u5206\u53d1\u5230\u540c\u4e00\u9898\uff01
 #sheet-view
 mark.sheet=\u539f\u56fe
 mark.sheet.check=\u539f\u56fe\u5207\u6362
+mark.sheet.open=\u6253\u5f00
+mark.sheet.close=\u5173\u95ed
 #answer-view
 mark.answer=\u6807\u7b54
 #warning-info
-mark.try.again=\u8bf7\u70b9\u51fb\u91cd\u8bd5
+mark.warning.try.again=\u8bf7\u70b9\u51fb\u91cd\u8bd5
+mark.warning.force.special.tag=\u5f3a\u5236\u7279\u6b8a\u6807\u8bb0\u5df2\u5f00\u542f\uff0c\u81f3\u5c11\u4f7f\u7528\u4e00\u4e2a\u7279\u6b8a\u6807\u8bb0
+mark.warning.network.error=\u7f51\u7edc\u5f02\u5e38\uff0c\u4efb\u52a1\u63d0\u4ea4\u5931\u8d25
+mark.warning.task.error=\u9886\u53d6\u8bc4\u5377\u4efb\u52a1\u51fa\u9519
+mark.warning.task.finish=\u8bc4\u5377\u4efb\u52a1\u5df2\u5b8c\u6210
+mark.warning.task.loading=\u8bc4\u5377\u4efb\u52a1\u6b63\u5728\u52a0\u8f7d\u4e2d
+mark.warning.close=\u5173\u95ed
+#json-view
+mark.json.loading=\u6b63\u5728\u52a0\u8f7d\u4e2d
+mark.json.student.answer=\u8003\u751f\u7b54\u6848\uff1a
+mark.json.answer=\u6807\u7b54\uff1a
+mark.json.body=\u9898\u5e72\uff1a
+mark.json.question.number=\u9898\u53f7\uff1a

+ 78 - 47
stmms-web/src/main/webapp/static/i18n/messages_en.properties

@@ -5,51 +5,61 @@ user.login.marker=Marker
 user.login.name=username
 user.login.password=password
 user.login.submit=Login
-user.logout=logout
 #mark-control
-mark.assistant=Assistant
-mark.mode.track=Track Mode
-mark.mode.common=Common Mode
-mark.function=Marking function
+mark.control.assistant=Assistant
+mark.control.mode.track=Track Mode
+mark.control.mode.common=Common Mode
+mark.control.function=Marking function
+mark.control.logout=logout
 #status
-mark.student.number=student number
-mark.library.number=task number
-mark.objective.score=objective score
-mark.marked.count=marked
-mark.unmark.count=unmark
-mark.top.count=assigned
-mark.progress=progress
-mark.continue=continue
-mark.top.count.finish=The assigned task has been completed. Do you want to continue?
-mark.loading=loading...
+mark.status.student.number=student number
+mark.status.library.number=task number
+mark.status.objective.score=objective score
+mark.status.marked.count=marked
+mark.status.unmark.count=unmark
+mark.status.top.count=assigned
+mark.status.progress=progress
+mark.status.continue=continue
+mark.status.top.count.finish=The assigned task has been completed. Do you want to continue?
+mark.status.loading=loading...
+mark.status.logout=logout
 #single-image-view
-mark.zoom.in=Zoom in
-mark.zoom.out=Zoom out
-mark.zoom.fit=Zoom fit
-mark.student.answer=student answer
+mark.single.zoom.in=Zoom in
+mark.single.zoom.out=Zoom out
+mark.single.zoom.fit=Zoom fit
+mark.single.student.answer=student answer
 #chang name
 mark.change.name=change userInfo
-mark.name=press your name
-mark.password=press new password
-mark.password.again=press new password again
+mark.change.press.name=press your name
+mark.change.press.password=press new password
+mark.change.press.password.again=press new password again
+mark.change.confirm=ok
+mark.change.name.null=name cannot be empty
+mark.change.name.length=length cannot exceed 8 words
+mark.change.password.same=please keep the same password twice
+mark.change.password.length=password must be at least 4 word
+mark.change.network.error=network error.please try again later
+mark.change.error=change error.please try again later
 #specialTag
 mark.special.tag=Special tag
-mark.back=back
-mark.clear=clear all
-mark.underline=underline
-mark.open=open
-mark.close=close
+mark.special.back=back
+mark.special.clear=clear all
+mark.special.underline=underline
+mark.special.open=open
+mark.special.close=close
 #problem-process
 mark.problem=Problem
 mark.problem.type=check problem type
-mark.confirm=ok
-mark.cancel=cancel
+mark.problem.confirm=ok
+mark.problem.cancel=cancel
 #thumbnail
 mark.thumbnail=thumbnail
+mark.thumbnail.open=open
+mark.thumbnail.close=close
 #view-sidebar
 mark.sidebar=sidebar
 #mark-history
-mark.history=history
+mark.history.title=history
 mark.history.time=time
 mark.history.number=number
 mark.history.score=score
@@ -57,27 +67,48 @@ mark.history.search=search
 mark.history.pre=pre
 mark.history.success=successful,score: 
 mark.history.problem=submit problem successful 
+mark.history.loading=loading..
 #mark-board
-mark.submit=submit
-mark.total.score.board=Score\uff1a
-mark.total.score=Score
-mark.score.zero=all zero
-mark.pass=pass
-mark.choose.result=choose result
-mark.keyboard=mark by keyboard >>
-mark.mouse=<< mark by mouse
-mark.interval=interval:
-mark.score=
-mark.clear.question=clear
+mark.board.submit=submit
+mark.board.total.score=Score\uff1a
+mark.board.score.zero=all zero
+mark.board.pass=pass
+mark.board.choose.result=choose result
+mark.board.keyboard=mark by keyboard >>
+mark.board.mouse=<< mark by mouse
+mark.board.interval=interval:
+mark.board.score=
+mark.board.back=back
+mark.board.clear.question=clear
+mark.board.clear=clear all
+mark.board.question.not.mark=There are still questions not mark, please continue
+mark.board.confirm=,Are you sure to submit?
+mark.board.zero.confirm=Are you sure to submit all zero?
+mark.board.null=blank
+mark.board.interval.error=score interval error
+mark.board.gt=cannot be greater than
+mark.board.lt=cannot be less than
+mark.board.number.error=not a number
+mark.board.step.error=must be choose a question\uff01
+mark.board.step.same=Can't redistribute to the same question!
 #sheet-view
 mark.sheet=sheet
 mark.sheet.check=check sheet
+mark.sheet.open=open
+mark.sheet.close=close
 #answer-view
 mark.answer=answer
 #warning-info
-mark.try.again=please click try again
-mark.force.special.tag=Force special tag is onen, please use at least one special tag
-mark.network.error=network error,get task failed
-mark.task.error=get task failed
-mark.task.finish=marking task finished
-mark.task.loading=task loading
+mark.warning.try.again=please click try again
+mark.warning.force.special.tag=Force special tag is onen, please use at least one special tag
+mark.warning.network.error=network error,get task failed
+mark.warning.task.error=get task failed
+mark.warning.task.finish=marking task finished
+mark.warning.task.loading=task loading
+mark.warning.close=close
+#json-view
+mark.json.loading=loading...
+mark.json.student.answer=student answer:
+mark.json.answer=answer:
+mark.json.body=question:
+mark.json.question.number=question number:

+ 78 - 47
stmms-web/src/main/webapp/static/i18n/messages_zh.properties

@@ -5,51 +5,61 @@ user.login.marker=\u8bc4\u5377\u5458\u767b\u5f55
 user.login.name=\u7528\u6237\u540d
 user.login.password=\u5bc6\u7801
 user.login.submit=\u767b\u5f55
-user.logout=\u9000\u51fa
 #mark-control
-mark.assistant=\u5c0f\u52a9\u624b
-mark.mode.track=\u5207\u6362\u5230\u8f68\u8ff9\u6a21\u5f0f
-mark.mode.common=\u5207\u6362\u5230\u666e\u901a\u6a21\u5f0f
-mark.function=\u8bc4\u5377\u529f\u80fd
+mark.control.assistant=\u5c0f\u52a9\u624b
+mark.control.mode.track=\u5207\u6362\u5230\u8f68\u8ff9\u6a21\u5f0f
+mark.control.mode.common=\u5207\u6362\u5230\u666e\u901a\u6a21\u5f0f
+mark.control.function=\u8bc4\u5377\u529f\u80fd
+mark.control.logout=\u9000\u51fa
 #status
-mark.student.number=\u8003\u751f\u7f16\u53f7
-mark.library.number=\u4efb\u52a1\u7f16\u53f7
-mark.objective.score=\u5ba2\u89c2\u5f97\u5206
-mark.marked.count=\u5df2\u8bc4
-mark.unmark.count=\u672a\u8bc4
-mark.top.count=\u5206\u914d
-mark.progress=\u8fdb\u5ea6
-mark.continue=\u7ee7\u7eed
-mark.top.count.finish=\u5206\u914d\u4efb\u52a1\u5df2\u8bc4\u5b8c\uff0c\u662f\u5426\u7ee7\u7eed\uff1f
-mark.loading=\u6b63\u5728\u52a0\u8f7d...
+mark.status.student.number=\u8003\u751f\u7f16\u53f7
+mark.status.library.number=\u4efb\u52a1\u7f16\u53f7
+mark.status.objective.score=\u5ba2\u89c2\u5f97\u5206
+mark.status.marked.count=\u5df2\u8bc4
+mark.status.unmark.count=\u672a\u8bc4
+mark.status.top.count=\u5206\u914d
+mark.status.progress=\u8fdb\u5ea6
+mark.status.continue=\u7ee7\u7eed
+mark.status.top.count.finish=\u5206\u914d\u4efb\u52a1\u5df2\u8bc4\u5b8c\uff0c\u662f\u5426\u7ee7\u7eed\uff1f
+mark.status.loading=\u6b63\u5728\u52a0\u8f7d...
+mark.status.logout=\u9000\u51fa
 #single-image-view
-mark.zoom.in=\u653e\u5927
-mark.zoom.out=\u7f29\u5c0f
-mark.zoom.fit=\u9002\u5e94
-mark.student.answer=\u7b54\u5377
+mark.single.zoom.in=\u653e\u5927
+mark.single.zoom.out=\u7f29\u5c0f
+mark.single.zoom.fit=\u9002\u5e94
+mark.single.student.answer=\u7b54\u5377
 #chang name
 mark.change.name=\u4fee\u6539\u4e2a\u4eba\u4fe1\u606f
-mark.name=\u8f93\u5165\u7528\u6237\u540d
-mark.password=\u8f93\u5165\u65b0\u5bc6\u7801
-mark.password.again=\u518d\u6b21\u8f93\u5165\u65b0\u5bc6\u7801
+mark.change.press.name=\u8f93\u5165\u7528\u6237\u540d
+mark.change.press.password=\u8f93\u5165\u65b0\u5bc6\u7801
+mark.change.press.password.again=\u518d\u6b21\u8f93\u5165\u65b0\u5bc6\u7801
+mark.change.confirm=\u786e\u5b9a
+mark.change.name.null=\u540d\u5b57\u4e0d\u80fd\u4e3a\u7a7a
+mark.change.name.length=\u957f\u5ea6\u4e0d\u80fd\u8d85\u8fc78\u4e2a\u5b57
+mark.change.password.same=\u4e24\u6b21\u5bc6\u7801\u8bf7\u4fdd\u6301\u4e00\u81f4
+mark.change.password.length=\u5bc6\u7801\u7684\u957f\u5ea6\u81f3\u5c114\u4f4d
+mark.change.network.error=\u7f51\u7edc\u901a\u4fe1\u9519\u8bef\uff0c\u8bf7\u7a0d\u540e\u91cd\u8bd5
+mark.change.error=\u4fee\u6539\u5931\u8d25\uff0c\u8bf7\u7a0d\u540e\u91cd\u8bd5
 #specialTag
 mark.special.tag=\u7279\u6b8a\u6807\u8bb0
-mark.back=\u56de\u9000
-mark.clear=\u5168\u90e8\u6e05\u9664
-mark.underline=\u4e0b\u5212\u7ebf
-mark.open=\u6253\u5f00
-mark.close=\u5173\u95ed
+mark.special.back=\u56de\u9000
+mark.special.clear=\u5168\u90e8\u6e05\u9664
+mark.special.underline=\u4e0b\u5212\u7ebf
+mark.special.open=\u6253\u5f00
+mark.special.close=\u5173\u95ed
 #problem-process
 mark.problem=\u95ee\u9898\u5377
 mark.problem.type=\u9009\u62e9\u95ee\u9898\u7c7b\u578b
-mark.confirm=\u786e\u5b9a
-mark.cancel=\u53d6\u6d88
+mark.problem.confirm=\u786e\u5b9a
+mark.problem.cancel=\u53d6\u6d88
 #thumbnail
 mark.thumbnail=\u7f29\u7565\u56fe
+mark.thumbnail.open=\u6253\u5f00
+mark.thumbnail.close=\u5173\u95ed
 #view-sidebar
 mark.sidebar=\u4fa7\u8fb9\u680f
 #mark-history
-mark.history=\u56de\u8bc4
+mark.history.title=\u56de\u8bc4
 mark.history.time=\u65f6\u95f4
 mark.history.number=\u7f16\u53f7
 mark.history.score=\u603b\u5206
@@ -57,27 +67,48 @@ mark.history.search=\u67e5\u627e\u8bd5\u5377
 mark.history.pre=\u524d
 mark.history.success=\u56de\u8bc4\u6210\u529f\uff0c\u603b\u5206\uff1a
 mark.history.problem=\u56de\u8bc4\u6210\u529f\uff0c\u5df2\u63d0\u4ea4\u95ee\u9898\u5377
+mark.history.loading=\u6b63\u5728\u52a0\u8f7d\u8bf7\u7a0d\u5019
 #mark-board
-mark.submit=\u63d0\u4ea4
-mark.total.score.board=\u603b\u5206\uff1a
-mark.total.score=\u603b\u5206
-mark.score.zero=\u5168\u96f6\u5206
-mark.pass=\u8df3 \u8fc7
-mark.choose.result=\u9009\u505a\u7ed3\u679c
-mark.keyboard=\u952e\u76d8\u7ed9\u5206 >>
-mark.mouse=<< \u9f20\u6807\u7ed9\u5206
-mark.interval=\u95f4\u9694
-mark.score=\u5206
-mark.clear.question=\u6e05\u9664\u672c\u9898
+mark.board.submit=\u63d0\u4ea4
+mark.board.total.score=\u603b\u5206
+mark.board.score.zero=\u5168\u96f6\u5206
+mark.board.pass=\u8df3 \u8fc7
+mark.board.choose.result=\u9009\u505a\u7ed3\u679c
+mark.board.keyboard=\u952e\u76d8\u7ed9\u5206 >>
+mark.board.mouse=<< \u9f20\u6807\u7ed9\u5206
+mark.board.interval=\u95f4\u9694
+mark.board.score=\u5206
+mark.board.back=\u56de\u9000
+mark.board.clear.question=\u6e05\u9664\u672c\u9898
+mark.board.clear.question=\u6e05\u9664\u5168\u5377
+mark.board.question.not.mark=\u5f53\u524d\u4efb\u52a1\u8fd8\u6709\u672a\u7ed9\u5206\u7684\u9898\uff0c\u8bf7\u7ee7\u7eed\u7ed9\u5206
+mark.board.confirm=,\u786e\u8ba4\u63d0\u4ea4\u5417\uff1f
+mark.board.zero.confirm=\u786e\u8ba4\u8981\u63d0\u4ea4\u5168\u96f6\u5206\u5417\uff1f
+mark.board.null=\u65e0
+mark.board.interval.error=\u4e0d\u7b26\u5408\u5206\u503c\u95f4\u9694\u8981\u6c42
+mark.board.gt=\u4e0d\u80fd\u5927\u4e8e
+mark.board.lt=\u4e0d\u80fd\u5c0f\u4e8e
+mark.board.number.error=\u4e0d\u662f\u5408\u6cd5\u6570\u5b57
+mark.board.step.error=\u5fc5\u987b\u9009\u62e9\u4e00\u9898\u5206\u53d1\uff01
+mark.board.step.same=\u4e0d\u80fd\u91cd\u65b0\u5206\u53d1\u5230\u540c\u4e00\u9898\uff01
 #sheet-view
 mark.sheet=\u539f\u56fe
 mark.sheet.check=\u539f\u56fe\u5207\u6362
+mark.sheet.open=\u6253\u5f00
+mark.sheet.close=\u5173\u95ed
 #answer-view
 mark.answer=\u6807\u7b54
 #warning-info
-mark.try.again=\u8bf7\u70b9\u51fb\u91cd\u8bd5
-mark.force.special.tag=\u5f3a\u5236\u7279\u6b8a\u6807\u8bb0\u5df2\u5f00\u542f\uff0c\u81f3\u5c11\u4f7f\u7528\u4e00\u4e2a\u7279\u6b8a\u6807\u8bb0
-mark.network.error=\u7f51\u7edc\u5f02\u5e38\uff0c\u4efb\u52a1\u63d0\u4ea4\u5931\u8d25
-mark.task.error=\u9886\u53d6\u8bc4\u5377\u4efb\u52a1\u51fa\u9519
-mark.task.finish=\u8bc4\u5377\u4efb\u52a1\u5df2\u5b8c\u6210
-mark.task.loading=\u8bc4\u5377\u4efb\u52a1\u6b63\u5728\u52a0\u8f7d\u4e2d
+mark.warning.try.again=\u8bf7\u70b9\u51fb\u91cd\u8bd5
+mark.warning.force.special.tag=\u5f3a\u5236\u7279\u6b8a\u6807\u8bb0\u5df2\u5f00\u542f\uff0c\u81f3\u5c11\u4f7f\u7528\u4e00\u4e2a\u7279\u6b8a\u6807\u8bb0
+mark.warning.network.error=\u7f51\u7edc\u5f02\u5e38\uff0c\u4efb\u52a1\u63d0\u4ea4\u5931\u8d25
+mark.warning.task.error=\u9886\u53d6\u8bc4\u5377\u4efb\u52a1\u51fa\u9519
+mark.warning.task.finish=\u8bc4\u5377\u4efb\u52a1\u5df2\u5b8c\u6210
+mark.warning.task.loading=\u8bc4\u5377\u4efb\u52a1\u6b63\u5728\u52a0\u8f7d\u4e2d
+mark.warning.close=\u5173\u95ed
+#json-view
+mark.json.loading=\u6b63\u5728\u52a0\u8f7d\u4e2d
+mark.json.student.answer=\u8003\u751f\u7b54\u6848\uff1a
+mark.json.answer=\u6807\u7b54\uff1a
+mark.json.body=\u9898\u5e72\uff1a
+mark.json.question.number=\u9898\u53f7\uff1a

+ 23 - 11
stmms-web/src/main/webapp/static/mark-json/js/mark-control.js

@@ -656,9 +656,9 @@ MarkControl.prototype.center_dom = '<div class="center-content span12"></div>';
 
 MarkControl.prototype.center_header_dom = '<div class="row-fluid"><div class="header"><p class="tips">\
 <em>\
-<a href="javascript:void(0)" id="assistant-button" class="btn"><i class="icon-wrench"></i><span data-i18n-text="mark.assistant">小助手</span></a></em>\
+<a href="javascript:void(0)" id="assistant-button" class="btn"><i class="icon-wrench"></i><span data-i18n-text="mark.control.assistant">小助手</span></a></em>\
 <a class="useinfo" href="#"><i class="icon-user icon-white"></i><i id="mark-user-name"></i></a>\
-<a class="logout" id="logout-link" href="{logoutUrl}"><i class="icon-off icon-white"></i> <i id="logout-title" data-i18n-text="user.logout">退出</i></a>\
+<a class="logout" id="logout-link" href="{logoutUrl}"><i class="icon-off icon-white"></i> <i id="logout-title" data-i18n-text="mark.control.logout">退出</i></a>\
 </p></div></div>';
 
 MarkControl.prototype.center_content_dom = '<div class="row-fluid"></div>';
@@ -667,7 +667,7 @@ MarkControl.prototype.image_content_dom = '<div class="image-content span12"></d
 
 MarkControl.prototype.assistant_dom = '<div class="popover bottom assistant"><div class="arrow"></div></div>';
 
-MarkControl.prototype.mark_function_dom = '<h3 class="popover-title">评卷功能</h3>\
+MarkControl.prototype.mark_function_dom = '<h3 class="popover-title" data-i18n-text="mark.control.function">评卷功能</h3>\
 <div class="popover-content"><p id="function-list" class="popover-list">\
 </p></div>';
 
@@ -713,14 +713,26 @@ function getDom(content, markControl) {
         content = content.replace(/{logoutUrl}/g, markControl.option.logoutUrl);
     }
     var result = $(content);
-    result.find("[data-i18n-value]").each(function() {
-		$(this).val($.i18n.prop($(this).data("i18n-value")));
-	});
-    result.find("[data-i18n-text]").each(function() {
-		$(this).text($.i18n.prop($(this).data("i18n-text")));
-	});
-    result.find("[data-i18n-placeholder]").each(function() {
-		$(this).attr('placeholder',$.i18n.prop($(this).data("i18n-placeholder")));
+    result.each(function() {
+    	if($(this).data("i18n-value")!=undefined){
+    		$(this).val($.i18n.prop($(this).data("i18n-value")));
+    	}
+		if($(this).data("i18n-text")!=undefined){
+			$(this).text($.i18n.prop($(this).data("i18n-text")));
+		    	}
+		if($(this).data("i18n-placeholder")!=undefined){
+			$(this).attr('placeholder',$.i18n.prop($(this).data("i18n-placeholder")));
+		}
+    	
+    	$(this).find("[data-i18n-value]").each(function() {
+    		$(this).val($.i18n.prop($(this).data("i18n-value")));
+    	});
+    	$(this).find("[data-i18n-text]").each(function() {
+    		$(this).text($.i18n.prop($(this).data("i18n-text")));
+    	});
+    	$(this).find("[data-i18n-placeholder]").each(function() {
+    		$(this).attr('placeholder',$.i18n.prop($(this).data("i18n-placeholder")));
+    	});
 	});
     return result;
 }

+ 89 - 91
stmms-web/src/main/webapp/static/mark-new/js/mark-control.js

@@ -27,7 +27,7 @@ function MarkControl(option) {
     //}
 }
 
-MarkControl.prototype.initContainer = function () {
+MarkControl.prototype.initContainer = function() {
 
     var height = this.option.height;
     if (height == undefined) {
@@ -58,13 +58,13 @@ MarkControl.prototype.initContainer = function () {
     this.navNumber = 0;
 }
 
-MarkControl.prototype.initHeaderAndAssistant = function () {
+MarkControl.prototype.initHeaderAndAssistant = function() {
     var self = this;
     this.container.header.find('#mark-user-name').html(this.option.userName);
     if (this.option.logoutTitle != undefined) {
         this.container.header.find('#logout-title').html(this.option.logoutTitle);
     }
-    this.container.header.find('#logout-link').click(function () {
+    this.container.header.find('#logout-link').click(function() {
         self.trigger('logout.link.click');
         return true;
     })
@@ -73,7 +73,7 @@ MarkControl.prototype.initHeaderAndAssistant = function () {
     this.container.assistant.positionSet = false;
     this.container.assistantButton = this.container.header.find('#assistant-button');
 
-    this.container.assistantButton.click(this, function (event) {
+    this.container.assistantButton.click(this, function(event) {
         if (self.container.assistant.positionSet == false) {
             self.container.assistant.offset({
                 top: self.container.assistantButton.position().top + self.container.assistantButton.height() + 5,
@@ -86,7 +86,7 @@ MarkControl.prototype.initHeaderAndAssistant = function () {
 
 }
 
-MarkControl.prototype.initMarkFunction = function () {
+MarkControl.prototype.initMarkFunction = function() {
     var functionList = this.container.assistant.functionList;
     if (functionList == undefined) {
         functionList = getDom(this.mark_function_dom, this).appendTo(this.container.assistant).find('#function-list');
@@ -94,7 +94,7 @@ MarkControl.prototype.initMarkFunction = function () {
     }
 }
 
-MarkControl.prototype.initSetting = function (option) {
+MarkControl.prototype.initSetting = function(option) {
     this.userId = option.userId;
     this.settingSyncUrl = option.settingSyncUrl;
     this.settingSyncing = false;
@@ -117,7 +117,7 @@ MarkControl.prototype.initSetting = function (option) {
     this.trigger('mark.setting.init', this.setting);
 }
 
-MarkControl.prototype.localSettingSave = function () {
+MarkControl.prototype.localSettingSave = function() {
     if (this.localStore != undefined) {
         this.localStore.setItem('mark.setting', JSON.stringify({
             userId: this.userId,
@@ -126,7 +126,7 @@ MarkControl.prototype.localSettingSave = function () {
     }
 }
 
-MarkControl.prototype.updateSetting = function (item) {
+MarkControl.prototype.updateSetting = function(item) {
     if (item == undefined) {
         return;
     }
@@ -137,7 +137,7 @@ MarkControl.prototype.updateSetting = function (item) {
     if (this.settingSyncUrl != undefined && this.settingSyncing == false) {
         this.settingSyncing = true;
         var self = this;
-        setTimeout(function () {
+        setTimeout(function() {
             //同步个性化设置
             $.post(self.settingSyncUrl, {
                 setting: JSON.stringify(self.setting)
@@ -148,8 +148,8 @@ MarkControl.prototype.updateSetting = function (item) {
 }
 
 //增加某个事件的监听方法
-MarkControl.prototype.on = function (eventName, caller, callback, async) {
-    if (eventName && callback && eventName.length > 0 && typeof (callback) == 'function') {
+MarkControl.prototype.on = function(eventName, caller, callback, async) {
+    if (eventName && callback && eventName.length > 0 && typeof(callback) == 'function') {
         if (async) {
             this.container.bind(eventName, callback);
         } else {
@@ -165,7 +165,7 @@ MarkControl.prototype.on = function (eventName, caller, callback, async) {
 }
 
 //触发某个事件,并传递事件相关内容
-MarkControl.prototype.trigger = function (eventName, eventObject) {
+MarkControl.prototype.trigger = function(eventName, eventObject) {
     var result = true;
     if (eventName && eventName.length > 0) {
         var array = this.triggers[eventName];
@@ -183,7 +183,7 @@ MarkControl.prototype.trigger = function (eventName, eventObject) {
 }
 
 //初始化事件监听
-MarkControl.prototype.initTriggers = function (option) {
+MarkControl.prototype.initTriggers = function(option) {
     if (this.triggers == undefined) {
         this.triggers = {};
     }
@@ -194,7 +194,7 @@ MarkControl.prototype.initTriggers = function (option) {
     }
 
     var self = this;
-    this.on('view.sidebar.open', this, function (event, context, eventObject) {
+    this.on('view.sidebar.open', this, function(event, context, eventObject) {
         this.container.assistant.hide();
         if (this.container.center.hasClass('span12')) {
             this.container.center.removeClass('span12');
@@ -205,7 +205,7 @@ MarkControl.prototype.initTriggers = function (option) {
         }
         this.trigger('center.width.change');
     });
-    this.on('view.sidebar.close', this, function (event, context, eventObject) {
+    this.on('view.sidebar.close', this, function(event, context, eventObject) {
         this.container.assistant.hide();
         if (this.container.center.hasClass('span7')) {
             this.container.center.removeClass('span7');
@@ -216,7 +216,7 @@ MarkControl.prototype.initTriggers = function (option) {
         }
         this.trigger('center.width.change');
     });
-    this.on('mark.sidebar.open', this, function (event, context, eventObject) {
+    this.on('mark.sidebar.open', this, function(event, context, eventObject) {
         this.container.assistant.hide();
         if (this.container.center.hasClass('span12')) {
             this.container.center.removeClass('span12');
@@ -227,7 +227,7 @@ MarkControl.prototype.initTriggers = function (option) {
         }
         this.trigger('center.width.change');
     });
-    this.on('mark.sidebar.close', this, function (event, context, eventObject) {
+    this.on('mark.sidebar.close', this, function(event, context, eventObject) {
         this.container.assistant.hide();
         if (this.container.center.hasClass('span10')) {
             this.container.center.removeClass('span10');
@@ -238,70 +238,68 @@ MarkControl.prototype.initTriggers = function (option) {
         }
         this.trigger('center.width.change');
     });
-    this.on('task.load.finish', this, function (event, context, eventObject) {
+    this.on('task.load.finish', this, function(event, context, eventObject) {
         if (context.task != undefined) {
             context.task.spent = new Date().getTime();
         }
     });
-    this.on('mark.focus.change', this, function (event, context, eventObject) {
-    });
-    this.on('task.get.finish', this, function (event, context, eventObject) {
+    this.on('mark.focus.change', this, function(event, context, eventObject) {});
+    this.on('task.get.finish', this, function(event, context, eventObject) {
         context.prefetchCallback = undefined;
     });
-    this.on('task.get.none', this, function (event, context, eventObject) {
+    this.on('task.get.none', this, function(event, context, eventObject) {
         self.getStatus();
         if (context.task == undefined && self.option.clearUrl != undefined) {
-            $.post(self.option.clearUrl, {}, function () {
-            });
+            $.post(self.option.clearUrl, {}, function() {});
         }
-        context.prefetchCallback = function () {
+        context.prefetchCallback = function() {
             context.prefetchCallback = undefined;
             if (self.context.task == undefined && self.context.prefetchTask.length > 0) {
                 self.getTask();
             }
         }
     });
-    this.on('task.prefetch.success', this, function (event, context, eventObject) {
+    this.on('task.prefetch.success', this, function(event, context, eventObject) {
         if (context.prefetchCallback != undefined) {
             context.prefetchCallback();
         }
-        setTimeout(function () {
+        setTimeout(function() {
             self.prefetch();
         }, 500);
     });
-    this.on('task.prefetch.error', this, function (event, context, eventObject) {
-        setTimeout(function () {
+    this.on('task.prefetch.error', this, function(event, context, eventObject) {
+        setTimeout(function() {
             self.prefetch();
         }, 500);
     });
-    this.on('task.prefetch.none', this, function (event, context, eventObject) {
+    this.on('task.prefetch.none', this, function(event, context, eventObject) {
         if (context.prefetchCallback != undefined) {
             context.prefetchCallback();
         }
         if (context.isFinish != true) {
-            setTimeout(function () {
+            setTimeout(function() {
                 self.prefetch();
             }, 1000);
         }
     });
-    this.on('task.prefetch.finish', this, function (event, context, eventObject) {
+    this.on('task.prefetch.finish', this, function(event, context, eventObject) {
         self.getTask();
     });
-    this.on('task.submit.before', this, function (event, context, eventObject) {
+    this.on('task.submit.before', this, function(event, context, eventObject) {
         context.submitting = true;
     });
-    this.on('history.submit.success', this, function (event, context, eventObject) {
+    this.on('history.submit.success', this, function(event, context, eventObject) {
         context.submitting = false;
     });
-    this.on('task.submit.success', this, function (event, context, eventObject) {
+    this.on('task.submit.success', this, function(event, context, eventObject) {
         context.submitting = false;
         context.task = undefined;
         self.getTask();
     });
-    this.on('task.submit.error', this, function (event, context, eventObject) {
+    this.on('task.submit.error', this, function(event, context, eventObject) {
         context.submitting = false;
     });
-    this.on('task.pass.success', this, function (event, context, eventObject) {
+    this.on('task.pass.success', this, function(event, context, eventObject) {
         if (context.task != undefined && self.option.clearUrl != undefined) {
             $.post(self.option.clearUrl, {
                 libraryId: context.task.libraryId
@@ -310,26 +308,26 @@ MarkControl.prototype.initTriggers = function (option) {
         context.task = undefined;
         self.getTask();
     });
-    this.on('mark.setting.change', this, function (event, context, eventObject) {
+    this.on('mark.setting.change', this, function(event, context, eventObject) {
         self.updateSetting(eventObject);
     });
-    $(document).keypress(this, function (event) {
+    $(document).keypress(this, function(event) {
         if (self.context.listenKeyboard != false) {
             return self.trigger('key.press', event);
         }
     });
-    $(document).keydown(this, function (event) {
+    $(document).keydown(this, function(event) {
         if (self.context.listenKeyboard != false) {
             return self.trigger('key.down', event);
         }
     });
-    $(document).keyup(this, function (event) {
+    $(document).keyup(this, function(event) {
         if (self.context.listenKeyboard != false) {
             return self.trigger('key.up', event);
         }
     });
 
-    window.onbeforeunload = function (e) {
+    window.onbeforeunload = function(e) {
         if (self.option.clearUrl != undefined) {
             $.post(self.option.clearUrl);
         }
@@ -337,7 +335,7 @@ MarkControl.prototype.initTriggers = function (option) {
 }
 
 //初始化功能模块
-MarkControl.prototype.initModules = function (option) {
+MarkControl.prototype.initModules = function(option) {
     if (this.modules == undefined) {
         this.modules = {};
     }
@@ -363,18 +361,18 @@ MarkControl.prototype.initModules = function (option) {
 }
 
 //指定初始化某个名称的模块
-MarkControl.prototype.initModule = function (names, options, success) {
+MarkControl.prototype.initModule = function(names, options, success) {
     for (var i in names) {
         var name = names[i];
         var option = options[name];
         var moduleInit = name.replace(/-/g, '_');
-        if (option == undefined || typeof (option) != 'object') {
+        if (option == undefined || typeof(option) != 'object') {
             option = {};
         }
         option.markControl = this;
         eval('this.modules[name]=' + moduleInit + '(option, function(){})');
     }
-    if (success != undefined && typeof (success) == 'function') {
+    if (success != undefined && typeof(success) == 'function') {
         success();
     }
 }
@@ -387,12 +385,12 @@ function initModuleAsync(markControl, names, index, option) {
         var moduleInit = name.replace(/-/g, '_');
         var modules = markControl.modules;
         if (modules[name] == undefined) {
-            if (typeof (moduleOption) != 'object') {
+            if (typeof(moduleOption) != 'object') {
                 moduleOption = {};
             }
             moduleOption.markControl = markControl;
-            $.getScript(moduleUrl, function () {
-                var success = function () {
+            $.getScript(moduleUrl, function() {
+                var success = function() {
                     initModule(markControl, names, index + 1, option);
                 }
                 eval('modules[name]=' + moduleInit + '(moduleOption, success)');
@@ -401,27 +399,27 @@ function initModuleAsync(markControl, names, index, option) {
             initModule(markControl, names, index + 1, option);
         }
     } else {
-        if (markControl.option.success != undefined && typeof (markControl.option.success) == 'function') {
+        if (markControl.option.success != undefined && typeof(markControl.option.success) == 'function') {
             markControl.option.success();
         }
     }
 }
 
-MarkControl.prototype.start = function (taskOption) {
+MarkControl.prototype.start = function(taskOption) {
     taskOption.markControl = this;
     var markControl = this;
-    taskOption.success = function () {
-        markControl.context.prefetchCallback = function () {
+    taskOption.success = function() {
+        markControl.context.prefetchCallback = function() {
             markControl.context.prefetchCallback = undefined;
             markControl.getTask();
         }
-        markControl.context.statusCallback = function () {
+        markControl.context.statusCallback = function() {
             markControl.context.statusCallback = undefined;
             markControl.prefetch();
         }
         markControl.getStatus();
     };
-    taskOption.error = function (message) {
+    taskOption.error = function(message) {
         alert('初始化失败,请刷新页面重新加载');
     };
     this.taskControl = new TaskControl(taskOption);
@@ -429,7 +427,7 @@ MarkControl.prototype.start = function (taskOption) {
 }
 
 //task预加载
-MarkControl.prototype.prefetch = function () {
+MarkControl.prototype.prefetch = function() {
     var taskControl = this.taskControl;
     var markControl = this;
     var context = this.context;
@@ -444,9 +442,9 @@ MarkControl.prototype.prefetch = function () {
             context.prefetching = true;
             markControl.trigger('task.prefetch.before');
 
-            taskControl.fetch(function (task) {
+            taskControl.fetch(function(task) {
                 if (imageBuilder != undefined) {
-                    imageBuilder.build(task, function (error) {
+                    imageBuilder.build(task, function(error) {
                         if (error) {
                             context.prefetching = false;
                             markControl.trigger('task.prefetch.error');
@@ -463,11 +461,11 @@ MarkControl.prototype.prefetch = function () {
                     context.prefetching = false;
                     markControl.trigger('task.prefetch.success');
                 }
-            }, function (task) {
+            }, function(task) {
                 context.prefetchStatus = task.message;
                 context.prefetching = false;
                 markControl.trigger('task.prefetch.none');
-            }, function () {
+            }, function() {
                 context.prefetching = false;
                 markControl.trigger('task.prefetch.none');
             });
@@ -477,12 +475,12 @@ MarkControl.prototype.prefetch = function () {
     }
 }
 
-MarkControl.prototype.getStatus = function () {
+MarkControl.prototype.getStatus = function() {
     if (this.taskControl == undefined) {
         return;
     }
     var self = this;
-    this.taskControl.status(function (status) {
+    this.taskControl.status(function(status) {
         self.context.status = status;
         if (status != undefined) {
             self.context.isFinish = status.blockTotalCount > 0 && status.blockTotalCount == (status.blockMarkedCount + status.blockExceptionCount);
@@ -494,7 +492,7 @@ MarkControl.prototype.getStatus = function () {
     })
 }
 
-MarkControl.prototype.getTask = function () {
+MarkControl.prototype.getTask = function() {
     if (this.taskControl == undefined) {
         return;
     }
@@ -525,20 +523,20 @@ MarkControl.prototype.getTask = function () {
     }
 }
 
-MarkControl.prototype.getHistory = function (data) {
+MarkControl.prototype.getHistory = function(data) {
     if (this.taskControl == undefined) {
         return;
     }
-    this.taskControl.history(data, function (result) {
+    this.taskControl.history(data, function(result) {
         data.result = result;
         this.option.markControl.trigger('history.get.success', data);
-    }, function (message) {
+    }, function(message) {
         data.message = message;
         this.option.markControl.trigger('history.get.error', data);
     });
 }
 
-MarkControl.prototype.setTask = function (task) {
+MarkControl.prototype.setTask = function(task) {
     var imageBuilder = this.modules['image-builder'];
     var self = this;
 
@@ -547,7 +545,7 @@ MarkControl.prototype.setTask = function (task) {
     }
     this.trigger('task.get.before');
     if (imageBuilder != undefined && task != undefined) {
-        imageBuilder.build(task, function (error) {
+        imageBuilder.build(task, function(error) {
             self.context.task = task;
             self.trigger('task.get.success');
         });
@@ -559,7 +557,7 @@ MarkControl.prototype.setTask = function (task) {
     }
 }
 
-MarkControl.prototype.submitTask = function (submitUrl) {
+MarkControl.prototype.submitTask = function(submitUrl) {
     var task = this.context.task;
     var markControl = this;
     var submitUrl = submitUrl != undefined && submitUrl.length > 0 ? submitUrl : this.option.submitUrl;
@@ -582,15 +580,15 @@ MarkControl.prototype.submitTask = function (submitUrl) {
             trackList: [],
             tagList: task.tagList,
             spent: new Date().getTime() - task.spent,
-            problem: task.problem,
-            reason: task.reason
+            problem : task.problem,
+            reason : task.reason
         }
 
         this.trigger('task.submit.before');
 
         if (this.taskControl != undefined) {
             //已定义任务引擎
-            this.taskControl.submit(submitObj, function (status) {
+            this.taskControl.submit(submitObj, function(status) {
                 if (status != undefined && status.valid == true) {
                     markControl.context.status = status;
                     markControl.trigger('mark.status.change', status);
@@ -600,7 +598,7 @@ MarkControl.prototype.submitTask = function (submitUrl) {
                 } else {
                     markControl.trigger('task.submit.success');
                 }
-            }, function (message) {
+            }, function(message) {
                 markControl.trigger('task.submit.error', message);
             });
         } else if (submitUrl != undefined && submitUrl.length > 0) {
@@ -611,14 +609,14 @@ MarkControl.prototype.submitTask = function (submitUrl) {
                 data: JSON.stringify(submitObj),
                 dataType: "json",
                 contentType: 'application/json;charset=utf-8',
-                success: function (result) {
+                success: function(result) {
                     if (result.success == true) {
                         markControl.trigger('task.submit.success');
                     } else {
                         markControl.trigger('task.submit.error', result.message);
                     }
                 },
-                error: function (message) {
+                error: function(message) {
                     markControl.trigger('task.submit.error', message);
                 }
             });
@@ -627,13 +625,13 @@ MarkControl.prototype.submitTask = function (submitUrl) {
         }
     }
 }
-MarkControl.prototype.addNavGroup = function (title, content) {
+MarkControl.prototype.addNavGroup = function(title, content) {
     var self = this;
     self.navNumber++;
     var nav = $('<a href="#"><span>' + title + '</span></a>').appendTo(self.container.centerNavbar);
     nav.attr('data-number', self.navNumber);
     content.attr('data-number', self.navNumber);
-    nav.click(function () {
+    nav.click(function() {
         self.container.centerNavbar.find('a').removeClass('selected');
         $(this).addClass('selected');
 
@@ -679,15 +677,15 @@ MarkControl.prototype.mark_function_dom = '<h3 class="popover-title" data-i18n-t
 </p></div>';
 
 //其他通用方法
-String.prototype.startWith = function (prefix) {
+String.prototype.startWith = function(prefix) {
     return this.indexOf(prefix) === 0;
 }
-String.prototype.endWith = function (suffix) {
+String.prototype.endWith = function(suffix) {
     return this.match(suffix + "$") == suffix;
 };
 
 //日期格式化
-Date.prototype.format = function (fmt) { //author: meizz
+Date.prototype.format = function(fmt) { //author: meizz 
     var o = {
         "M+": this.getMonth() + 1, //月份 
         "d+": this.getDate(), //日 
@@ -720,15 +718,15 @@ function getDom(content, markControl) {
         content = content.replace(/{logoutUrl}/g, markControl.option.logoutUrl);
     }
     var result = $(content);
-    result.find("[data-i18n-value]").each(function () {
-        $(this).val($.i18n.prop($(this).data("i18n-value")));
-    });
-    result.find("[data-i18n-text]").each(function () {
-        $(this).text($.i18n.prop($(this).data("i18n-text")));
-    });
-    result.find("[data-i18n-placeholder]").each(function () {
-        $(this).attr('placeholder', $.i18n.prop($(this).data("i18n-placeholder")));
-    });
+    result.find("[data-i18n-value]").each(function() {
+		$(this).val($.i18n.prop($(this).data("i18n-value")));
+	});
+    result.find("[data-i18n-text]").each(function() {
+		$(this).text($.i18n.prop($(this).data("i18n-text")));
+	});
+    result.find("[data-i18n-placeholder]").each(function() {
+		$(this).attr('placeholder',$.i18n.prop($(this).data("i18n-placeholder")));
+	});
     return result;
 }
 
@@ -736,6 +734,6 @@ function isArray(obj) {
     return obj != undefined && Object.prototype.toString.call(obj) === '[object Array]';
 }
 
-function getMessage(message) {
-    return $.i18n.prop(message);
+function getMessage(message) { 
+	return $.i18n.prop(message);
 }

+ 11 - 11
stmms-web/src/main/webapp/static/mark-new/js/modules/change-name.js

@@ -37,24 +37,24 @@ function ChangeName(option) {
               var pw2Text = self.popover.password2Input.val();
                   pw2Text = pw2Text.replace(/(^\s*)|(\s*$)/g, "");
               if (nameText.length == 0) {
-                  self.popover.userNameMessage.html('姓名不能为空');
+                  self.popover.userNameMessage.html(getMessage("mark.change.name.null"));
                   return false;
               } else if (nameText.length > 8) {
-                  self.popover.userNameMessage.html('长度不能超过8个字');
+                  self.popover.userNameMessage.html(getMessage("mark.change.name.length"));
                   return false;
               }
               if(pwText.length > 0 || pw2Text.length > 0) {
                   logout = true;
                   if (!pw2Text) {
-                    self.popover.password2Message.html('请再次输入您的密码');
+                    self.popover.password2Message.html(getMessage("mark.change.press.password.again"));
                     return false;
                   }
                   if (pwText != pw2Text) {
-                    self.popover.password2Message.html('两次密码请保持一致');
+                    self.popover.password2Message.html(getMessage("mark.change.password.same"));
                     return false;
                   }
                   if(pw2Text.length < 4){
-                    self.popover.password2Message.html('密码的长度至少4位');
+                    self.popover.password2Message.html(getMessage("mark.change.password.length"));
                     return false;
                   }
               }
@@ -69,10 +69,10 @@ function ChangeName(option) {
                           window.location.href = '/mark/logout';
                         }
                     } else {
-                        self.popover.userNameMessage.html('修改失败,请稍后重试');
+                        self.popover.userNameMessage.html(getMessage("mark.change.error"));
                     }
                 }).error(function() {
-                    self.popover.userNameMessage.html('网络通信错误,请稍后重试');
+                    self.popover.userNameMessage.html(getMessage("mark.change.network.error"));
                 });
     });
 }
@@ -95,11 +95,11 @@ ChangeName.prototype.toggle = function(enable) {
 
 ChangeName.prototype.popover_dom = '<div class="message-popover" style="display:none"><div class="popover-header">\
 <p class="title" data-i18n-text="mark.change.name">修改个人信息</p><p class="image-close"><img src="{staticServer}/mark-new/images/images-close.png" /></p></div>\
-<div class="popover-cont"><span style="color: red;">*</span><input type="text" class="username-input" placeholder="请输入您的姓名" data-i18n-placeholder="mark.name"/>\
+<div class="popover-cont"><span style="color: red;">*</span><input type="text" class="username-input" placeholder="请输入您的姓名" data-i18n-placeholder="mark.change.press.name"/>\
 <i class="wrong username"></i></div>\
-<div class="popover-cont"><input type="password" class="password-input" placeholder="请输入新的密码" data-i18n-placeholder="mark.password"/>\
+<div class="popover-cont"><input type="password" class="password-input" placeholder="请输入新的密码" data-i18n-placeholder="mark.change.press.password"/>\
  <i class="wrong password"></i></div>\
- <div class="popover-cont"><input type="password" class="password2-input" placeholder="请再次输入您的密码" data-i18n-placeholder="mark.password.again"/> \
+ <div class="popover-cont"><input type="password" class="password2-input" placeholder="请再次输入您的密码" data-i18n-placeholder="mark.change.press.password.again"/> \
  <i class="wrong password2"></i></div>\
-<a href="#" class="btn btn-small btn-info text-userInfo" data-i18n-text="mark.confirm">确定</a>\
+<a href="#" class="btn btn-small btn-info text-userInfo" data-i18n-text="mark.change.confirm">确定</a>\
 </div>';

+ 22 - 22
stmms-web/src/main/webapp/static/mark-new/js/modules/mark-board.js

@@ -156,10 +156,10 @@ MarkBoard.prototype.init = function () {
         var selectedBlockId = $(".block-id-list  option:selected").val();
         if (markBoard.task != undefined) {
             if (markBoard.task.blockId == selectedBlockId) {
-                alert("不能重新分发到同一题!");
+                alert(getMessage("mark.board.step.same"));
                 return false;
             } else if (selectedBlockId == 0) {
-                alert("必须选择一题分发!");
+                alert(getMessage("mark.board.step.error"));
                 return false;
             } else {
                 markBoard.task.reset = true;
@@ -173,10 +173,10 @@ MarkBoard.prototype.init = function () {
         var selectedBlockId = $(".block-id-list  option:selected").val();
         if (markBoard.task != undefined) {
             if (markBoard.task.blockId == selectedBlockId) {
-                alert("不能重新分发到同一题!");
+                alert(getMessage("mark.board.step.same"));
                 return false;
             } else if (selectedBlockId == 0) {
-                alert("必须选择一题分发!");
+                alert(getMessage("mark.board.step.error"));
                 return false;
             } else {
                 markBoard.task.reset = true;
@@ -438,8 +438,8 @@ MarkBoard.prototype.onTaskSubmit = function () {
         finish = true;
     }
     if (!finish) {
-        alert('当前任务还有未给分的步骤,请继续给分');
-    } else if (!this.needConfirm || confirm('总分为' + totalScore + ', 确认要提交吗?')) {
+        alert(getMessage("mark.board.question.not.mark"));
+    } else if (!this.needConfirm || confirm(getMessage("mark.board.total.score") + totalScore + getMessage("mark.board.confirm"))) {
         this.task.totalScore = totalScore;
         this.task.scoreList = scoreList.join(',');
         this.markControl.submitTask();
@@ -449,18 +449,18 @@ MarkBoard.prototype.onTaskSubmit = function () {
 MarkBoard.prototype.validateScore = function (step, scoreString) {
     var stepDom = this.stepBoard.stepArray[this.currentStep.number - 1].find('.current-score');
     if (!$.isNumeric(scoreString)) {
-        this.togglePopover(true, '不是合法数字', stepDom);
+        this.togglePopover(true, getMessage("mark.board.number.error"), stepDom);
         //alert('当前分数不是合法数字');
         return false;
     }
     var score = new Number(scoreString);
     if (score < step.min) {
-        this.togglePopover(true, '不能小于' + step.min, stepDom);
+        this.togglePopover(true, getMessage("mark.board.lt") +" " + step.min, stepDom);
         //alert('当前分数不应小于' + step.min);
         return false;
     }
     if (score > step.max) {
-        this.togglePopover(true, '不能大于' + step.max, stepDom);
+        this.togglePopover(true, getMessage("mark.board.gt") +" " + step.max, stepDom);
         //alert('当前分数不应大于' + step.max);
         return false;
     }
@@ -473,7 +473,7 @@ MarkBoard.prototype.validateScore = function (step, scoreString) {
         }
     }
     if (!find) {
-        this.togglePopover(true, '不符合分值间隔要求', stepDom);
+        this.togglePopover(true, getMessage("mark.board.interval.error"), stepDom);
         //alert('当前分数不符合分值间隔要求');
         return false;
     }
@@ -509,7 +509,7 @@ MarkBoard.prototype.render = function (task) {
             var dom = getDom(this.step_dom, this.markControl);
             dom.attr('data-number', step.number);
             dom.find('.step-title').html(step.title);
-            dom.find('.interval-score').html($.i18n.prop("mark.interval") + step.interval + $.i18n.prop("mark.score"));
+            dom.find('.interval-score').html(getMessage("mark.board.interval") + step.interval + getMessage("mark.board.score"));
             dom.find('.max-score').html(step.max);
             dom.find('.min-score').html(step.min);
             if (step.markFinish === true) {
@@ -580,7 +580,7 @@ MarkBoard.prototype.initMarkBoardHeader = function () {
         if (group != undefined) {
             this.scoreBoard.header.empty();
             var blockSelect = (this.scoreBoard.header).append(this.scoreBoard_selective_dom).find('select');
-            blockSelect.append('<option value="0">无</option>');
+            blockSelect.append('<option value="0" data-i18n-text="mark.board.null">无</option>');
             if (group.blockList != undefined) {
                 for (var i = 0; i < group.blockList.length; i++) {
                     var block = group.blockList[i];
@@ -595,7 +595,7 @@ MarkBoard.prototype.initMarkBoardHeader = function () {
 
             blockSelect = this.stepBoard.selectiveHeader.find('select');
             blockSelect.empty();
-            blockSelect.append('<option value="0">无</option>');
+            blockSelect.append('<option value="0" data-i18n-text="mark.board.null">无</option>');
             if (group.blockList != undefined) {
                 for (var i = 0; i < group.blockList.length; i++) {
                     var block = group.blockList[i];
@@ -679,9 +679,9 @@ MarkBoard.prototype.onFocusChange = function () {
 }
 
 MarkBoard.prototype.step_board_dom = '<div class="span2 mark-steps" style="display:none"><div class="step-board">\
-<a href="#" class="header" id="show-score-board-button" data-i18n-text="mark.mouse"><< 鼠标给分</a>\
-<div class="sublist"><p class="fraction"><span data-i18n-text="mark.total.score">总分</span> <i id="total-score">5</i></p><div>\
-<a href="#" class="header all-zero-button" data-i18n-text="mark.score.zero">全零分</a>\
+<a href="#" class="header" id="show-score-board-button" data-i18n-text="mark.board.mouse"><< 鼠标给分</a>\
+<div class="sublist"><p class="fraction"><span data-i18n-text="mark.board.total.score">总分</span> <i id="total-score">5</i></p><div>\
+<a href="#" class="header all-zero-button" data-i18n-text="mark.board.score.zero">全零分</a>\
 <div class="step-list"></div>\
 </div></div>';
 
@@ -700,7 +700,7 @@ MarkBoard.prototype.scoreBoard_dom = '<div class="score-board score-board-popove
 MarkBoard.prototype.scoreBoard_header_dom = '<div class="header">\
 <p class="fl" id="score-board-header"></p>\
 <a class="header-close" id="score-board-close-button" href="#">\
-<i class="header-text" data-i18n-text="mark.keyboard">键盘给分 >></i></a>\
+<i class="header-text" data-i18n-text="mark.board.keyboard">键盘给分 >></i></a>\
 </div>';
 
 MarkBoard.prototype.scoreBoard_stepHolder_dom = '<div class="content"></div>';
@@ -713,15 +713,15 @@ MarkBoard.prototype.scoreBoard_step_dom = '<div class="sublist">\
 MarkBoard.prototype.scoreBoard_score_dom = '<a href="#" class="score-select"></a>';
 
 MarkBoard.prototype.scoreBoard_footer_dom = '<div class="footer">\
-<p class="font"><span data-i18n-text="mark.total.score.board">总分:</span><i class="yellow" id="score-board-total-score"></i></p>\
-<a id="task-submit-button" class="button" href="#" data-i18n-text="mark.submit">提 交</a>\
-<a class="button all-zero-button" href="##" data-i18n-text="mark.score.zero">全零分</a>\
-<a id="task-pass-button" class="button" href="#" style="display:none" data-i18n-text="mark.pass">跳 过</a>\
+<p class="font"><span data-i18n-text="mark.board.total.score">总分:</span><i class="yellow" id="score-board-total-score"></i></p>\
+<a id="task-submit-button" class="button" href="#" data-i18n-text="mark.board.submit">提 交</a>\
+<a class="button all-zero-button" href="##" data-i18n-text="mark.board.score.zero">全零分</a>\
+<a id="task-pass-button" class="button" href="#" style="display:none" data-i18n-text="mark.board.pass">跳 过</a>\
 </div>';
 
 MarkBoard.prototype.popover_dom = '<div class="popover left assistant">\
 <div class="arrow"></div>\
 <h3 class="popover-title"></h3></div>';
 
-MarkBoard.prototype.scoreBoard_selective_dom = '<i class="fl" data-i18n-text="mark.choose.result">选做结果</i>\
+MarkBoard.prototype.scoreBoard_selective_dom = '<i class="fl" data-i18n-text="mark.board.choose.result">选做结果</i>\
 <select class="block-id-list span1 mr-t"></select>';

+ 3 - 3
stmms-web/src/main/webapp/static/mark-new/js/modules/mark-history.js

@@ -289,10 +289,10 @@ MarkHistory.prototype.updateTaskScore = function(score) {
     });
 }
 
-MarkHistory.prototype.toggle_button_dom = '<a href="#" data-i18n-text="mark.history">回评</a>';
+MarkHistory.prototype.toggle_button_dom = '<a href="#" data-i18n-text="mark.history.title">回评</a>';
 
 MarkHistory.prototype.header_dom = '<div class="header">\
-<p class="fl" data-i18n-text="mark.history">回评</p>\
+<p class="fl" data-i18n-text="mark.history.title">回评</p>\
 <a href="#" id="close-history-button"><img src="{staticServer}/mark-new/images/hp-close.png" /></a>\
 </div>';
 
@@ -312,7 +312,7 @@ MarkHistory.prototype.history_list_dom = '<div class="sublist"><div class="c-tab
 <th id="studentId-sort-th"><span data-i18n-text="mark.history.number">编号</span><em class="up" id="studentId-sort"></th>\
 <th id="time-sort-th"><span data-i18n-text="mark.history.time">时间</span><em class="up" id="time-sort"></em></th>\
 <th id="score-sort-th"><span data-i18n-text="mark.history.score">总分</span><em class="up" id="score-sort"></th></tr></thead>\
-<tbody class="loding" id="history-loading"><tr><td colspan="3"><div><img src="{staticServer}/mark-new/images/loding.gif"/></div><p data-i18n-text="mark.loading">正在加载请稍候</p></td></tr></tbody>\
+<tbody class="loding" id="history-loading"><tr><td colspan="3"><div><img src="{staticServer}/mark-new/images/loding.gif"/></div><p data-i18n-text="mark.history.loading">正在加载请稍候</p></td></tr></tbody>\
 <tbody id="history-list"></tbody></table></div></div>';
 
 MarkHistory.prototype.history_row_dom = '<tr><td class="history-secret-number"></td>\

+ 12 - 12
stmms-web/src/main/webapp/static/mark-new/js/modules/mark-status.js

@@ -9,7 +9,7 @@ function MarkStatus(option) {
     this.markControl = option.markControl;
     this.init(option);
     this.markControl.on('task.get.before', this, function(event, context, statusInfo) {
-        this.changeStatus('正在加载');
+        this.changeStatus(getMessage('mark.status.loading'));
         this.clearTopTitle();
     });
     this.markControl.on('task.get.success', this, function(event, context, eventObject) {
@@ -148,21 +148,21 @@ MarkStatus.prototype.render = function(status) {
 
 MarkStatus.prototype.status_dom = '<p class="text">\
 <i id="subject-title" style="cursor:pointer"><em id="subject-name"></em></i>\
-<i id="status-title"><em id="status-name" data-i18n-text="mark.loading"></em></i>\
-<i id="library-title" style="display:none"><soan data-i18n-text="mark.library.number">任务编号</span><em id="library-number"></em></i>\
-<i id="student-title" style="display:none"><span data-i18n-text="mark.student.number">考生编号</span><em id="student-number"></em></i>\
-<i id="objective-area" style="display:none"><span data-i18n-text="mark.objective.score">客观得分</span><em id="objective-score"></em></i>\
-<i><span data-i18n-text="mark.marked.count">已评</span><em id="person-count"></em></i>\
+<i id="status-title"><em id="status-name" data-i18n-text="mark.status.loading"></em></i>\
+<i id="library-title" style="display:none"><span data-i18n-text="mark.status.library.number">任务编号</span><em id="library-number"></em></i>\
+<i id="student-title" style="display:none"><span data-i18n-text="mark.status.student.number">考生编号</span><em id="student-number"></em></i>\
+<i id="objective-area" style="display:none"><span data-i18n-text="mark.status.objective.score">客观得分</span><em id="objective-score"></em></i>\
+<i><span data-i18n-text="mark.status.marked.count">已评</span><em id="person-count"></em></i>\
 </p>';
 
 MarkStatus.prototype.progress_dom = '<p class="text">\
-<i id="top-count-area" style="display:none"><span data-i18n-text="mark.top.count">分配</span><em id="top-count"></em></i>\
-<i><span data-i18n-text="mark.unmark.count">未评</span><em id="todo-count"></em></i>\
-<i><span data-i18n-text="mark.progress">进度</span><em id="marked-percent"></em></i>\
+<i id="top-count-area" style="display:none"><span data-i18n-text="mark.status.top.count">分配</span><em id="top-count"></em></i>\
+<i><span data-i18n-text="mark.status.unmark.count">未评</span><em id="todo-count"></em></i>\
+<i><span data-i18n-text="mark.status.progress">进度</span><em id="marked-percent"></em></i>\
 </p>';
 
 MarkStatus.prototype.popover_dom = '<div class="warning-popover">\
-<p data-i18n-text="mark.top.count.finish">分配任务已评完,是否继续?</p>\
-<a href="#" class="btn btn-large btn-primary text-c" id="continue-button" data-i18n-text="mark.continue">继续</a>\
-<a href="{logoutUrl}" class="btn btn-large text-c" id="exit-button" data-i18n-text="user.logout">退出</a>\
+<p data-i18n-text="mark.status.top.count.finish">分配任务已评完,是否继续?</p>\
+<a href="#" class="btn btn-large btn-primary text-c" id="continue-button" data-i18n-text="mark.status.continue">继续</a>\
+<a href="{logoutUrl}" class="btn btn-large text-c" id="exit-button" data-i18n-text="mark.status.logout">退出</a>\
 </div>';

+ 2 - 2
stmms-web/src/main/webapp/static/mark-new/js/modules/problem-process.js

@@ -104,6 +104,6 @@ ProblemProcess.prototype.button_dom = '<input type="radio" class="problemId" nam
 ProblemProcess.prototype.popover_dom = '<div class="message-popover" style="display:none;"><div class="popover-header">\
 	<p class="title" data-i18n-text="mark.problem">问题卷</p><p class="image-close"><img src="{staticServer}/mark-new/images/images-close.png" /></p></div>\
 	<div id="problem-type-list" style="text-align:left;"></div>\
-	<a href="#" class="btn btn-small btn-info submit-btn" data-i18n-text="mark.confirm">确定</a>\
-	<a href="#" class="btn btn-small btn-info close-btn" data-i18n-text="mark.cancel">取消</a>\
+	<a href="#" class="btn btn-small btn-info submit-btn" data-i18n-text="mark.problem.confirm">确定</a>\
+	<a href="#" class="btn btn-small btn-info close-btn" data-i18n-text="mark.problem.cancel">取消</a>\
 	</div>';

+ 2 - 2
stmms-web/src/main/webapp/static/mark-new/js/modules/sheet-view.js

@@ -140,9 +140,9 @@ SheetView.prototype.toggle = function(show) {
     }
 }
 
-SheetView.prototype.control_dom = '<h3 class="popover-title" data-i18n-text="mark.sheet">查看原卷</h3>\
+SheetView.prototype.control_dom = '<h3 class="popover-title" data-i18n-text="mark.sheet">原卷</h3>\
 <div class="popover-content"><p id="sheet-list" class="popover-list">\
-<a href="#" id="show-sheet-button" data-i18n-text="mark.open">打开</a><a href="#" id="hide-sheet-button" data-i18n-text="mark.close">关闭</a>\
+<a href="#" id="show-sheet-button" data-i18n-text="mark.sheet.open">打开</a><a href="#" id="hide-sheet-button" data-i18n-text="mark.sheet.close">关闭</a>\
 </p></div>';
 
 SheetView.prototype.container_dom = '<div class="image-view-popover sheet" style=" width:100%; height:100vh;"></div>';

+ 3 - 3
stmms-web/src/main/webapp/static/mark-new/js/modules/single-image-view.js

@@ -161,7 +161,7 @@ SingleImageView.prototype.updateScrollTop = function(scrollTopPercent) {
 }
 
 SingleImageView.prototype.image_control_dom = '<em>\
-<a href="#" class="btn zoom-in-button" data-i18n-text="mark.zoom.in">放大</a>\
-<a href="#" class="btn zoom-out-button" data-i18n-text="mark.zoom.out">缩小</a>\
-<a href="#" class="btn zoom-fit-button" data-i18n-text="mark.zoom.fit">适应</a>\
+<a href="#" class="btn zoom-in-button" data-i18n-text="mark.single.zoom.in">放大</a>\
+<a href="#" class="btn zoom-out-button" data-i18n-text="mark.single.zoom.out">缩小</a>\
+<a href="#" class="btn zoom-fit-button" data-i18n-text="mark.single.zoom.fit">适应</a>\
 </em>';

+ 4 - 4
stmms-web/src/main/webapp/static/mark-new/js/modules/specialTag.js

@@ -149,11 +149,11 @@ SpecialTag.prototype.container_content_dom = '<div class="content popover-conten
     <a href="#" value="√">√</a>\
     <a href="#" value="X">×</a>\
     <a href="#" value="乄">乄</a>\
-	<a href="#" value="___" ><u data-i18n-text="mark.underline">下划线</u></a></p>\
-<p><a href="#" id="undo-button" style="margin-left: 20px;" data-i18n-text="mark.back">回&nbsp;&nbsp;&nbsp;退</a>\
-<a href="#" id="clear-button" data-i18n-text="mark.clear">全部清除</a></p></div>';
+	<a href="#" value="___" ><u data-i18n-text="mark.special.underline">下划线</u></a></p>\
+<p><a href="#" id="undo-button" style="margin-left: 20px;" data-i18n-text="mark.special.back">回&nbsp;&nbsp;&nbsp;退</a>\
+<a href="#" id="clear-button" data-i18n-text="mark.special.clear">全部清除</a></p></div>';
 
 SpecialTag.prototype.control_dom = '<h3 class="popover-title" data-i18n-text="mark.special.tag">特殊标记</h3>\
 <div class="popover-content"><p id="problem-list" class="popover-list">\
-<a href="#" id="show-SpecialTag-button" data-i18n-text="mark.open">打开</a><a href="#" id="hide-SpecialTag-button" data-i18n-text="mark.close">关闭</a>\
+<a href="#" id="show-SpecialTag-button" data-i18n-text="mark.special.open">打开</a><a href="#" id="hide-SpecialTag-button" data-i18n-text="mark.special.close">关闭</a>\
 </p></div>';

+ 1 - 1
stmms-web/src/main/webapp/static/mark-new/js/modules/thumbnail.js

@@ -136,5 +136,5 @@ Thumbnail.prototype.container_content_dom = '<div class="content" style="padding
 
 Thumbnail.prototype.control_dom = '<h3 class="popover-title" data-i18n-text="mark.thumbnail">缩略图</h3>\
 <div class="popover-content"><p id="problem-list" class="popover-list">\
-<a href="#" id="show-thumbnail-button" data-i18n-text="mark.open">打开</a><a href="#" id="hide-thumbnail-button" data-i18n-text="mark.close">关闭</a>\
+<a href="#" id="show-thumbnail-button" data-i18n-text="mark.thumbnail.open">打开</a><a href="#" id="hide-thumbnail-button" data-i18n-text="mark.thumbnail.close">关闭</a>\
 </p></div>';

+ 9 - 9
stmms-web/src/main/webapp/static/mark-new/js/modules/warning-info.js

@@ -15,7 +15,7 @@ function WarningInfo(option) {
         this.toggle(false);
     });
     this.markControl.on('task.get.none', this, function(event, context, message) {
-        this.toggle(true, message != undefined ? message : $.i18n.prop("mark.task.loading"), '', function() {
+        this.toggle(true, message != undefined ? message : getMessage("mark.warning.task.loading"), '', function() {
             self.markControl.getTask();
         });
         if (context.status != undefined && context.status.totalCount == 0) {
@@ -23,7 +23,7 @@ function WarningInfo(option) {
         }
     });
     this.markControl.on('task.get.finish', this, function(event, context, message) {
-        this.toggle(true, option.finishMessage != undefined ? option.finishMessage : $.i18n.prop("mark.task.finish"));
+        this.toggle(true, option.finishMessage != undefined ? option.finishMessage : getMessage("mark.warning.task.finish"));
         if (option.finishButtonUrl != undefined) {
             this.container.button.attr('href', option.finishButtonUrl);
             if (option.finishButtonText != undefined) {
@@ -35,7 +35,7 @@ function WarningInfo(option) {
         }
     });
     this.markControl.on('task.get.error', this, function(event, context, eventObject) {
-        this.toggle(true, option.errorMessage != undefined ? option.errorMessage : $.i18n.prop("mark.task.error"), '', function() {
+        this.toggle(true, option.errorMessage != undefined ? option.errorMessage : getMessage("mark.warning.task.error"), '', function() {
             self.markControl.getTask();
         });
     });
@@ -43,16 +43,16 @@ function WarningInfo(option) {
         //this.toggle(false);
     });
     this.markControl.on('task.submit.error', this, function(event, context, eventObject) {
-        this.toggle(true, eventObject || $.i18n.prop("mark.network.error"), $.i18n.prop("mark.close"));
+        this.toggle(true, eventObject || getMessage("mark.warning.network.error"), getMessage("mark.warning.close"));
     });
     this.markControl.on('task.submit.forceSpecialTag', this, function(event, context, eventObject) {
-        this.toggle(true, $.i18n.prop("mark.force.special.tag"), $.i18n.prop("mark.close"));
+        this.toggle(true, getMessage("mark.warning.force.special.tag"), getMessage("mark.warning.close"));
     });
     this.markControl.on('history.submit.success', this, function(event, context, task) {
     	if(task.problem==true){
-    		this.toggle(true,$.i18n.prop("mark.history.problem") ,$.i18n.prop("mark.close"));
+    		this.toggle(true,getMessage("mark.warning.problem") ,getMessage("mark.warning.close"));
     	}else if(task.previous==true){
-    		this.toggle(true, $.i18n.prop("mark.history.success") +task.totalScore, $.i18n.prop("mark.close"));
+    		this.toggle(true, getMessage("mark.warning.success") +task.totalScore, getMessage("mark.warning.close"));
     	}
     });
 }
@@ -75,7 +75,7 @@ WarningInfo.prototype.toggle = function(enable, message, buttonText, callback) {
         if (buttonText != undefined && buttonText != '') {
             this.container.button.html(buttonText);
         } else {
-            this.container.button.html($.i18n.prop("mark.try.again"));
+            this.container.button.html(getMessage("mark.warning.try.again"));
         }
 
         this.container.button.unbind();
@@ -95,4 +95,4 @@ WarningInfo.prototype.toggle = function(enable, message, buttonText, callback) {
 }
 
 WarningInfo.prototype.container_dom = '<div class="warning-popover"><p></p>\
-<a href="#" class="btn btn-large btn-primary text-c" data-i18n-text="mark.try.again">请点击重试</a></div>';
+<a href="#" class="btn btn-large btn-primary text-c" data-i18n-text="mark.warning.try.again">请点击重试</a></div>';

+ 24 - 12
stmms-web/src/main/webapp/static/mark-track/js/mark-control.js

@@ -656,17 +656,17 @@ MarkControl.prototype.sidebar_dom = '<div class="mark-sidebar span2 hide"></div>
 MarkControl.prototype.center_dom = '<div class="center-content span12"></div>';
 
 MarkControl.prototype.center_header_dom = '<div class="row-fluid"><div class="header"><p class="tips">\
-<em><a href="##" class="btn" id="switch-common-button" style="display:none" data-i18n-text="mark.mode.common">切换到普通模式</a>\
-<a href="javascript:void(0)" id="assistant-button" class="btn"><i class="icon-wrench"></i><span data-i18n-text="mark.assistant"> 小助手</span></a></em>\
+<em><a href="##" class="btn" id="switch-common-button" style="display:none" data-i18n-text="mark.control.mode.common">切换到普通模式</a>\
+<a href="javascript:void(0)" id="assistant-button" class="btn"><i class="icon-wrench"></i><span data-i18n-text="mark.control.assistant"> 小助手</span></a></em>\
 <a class="useinfo" href="#"><i class="icon-user icon-white"></i><i id="mark-user-name"></i></a>\
-<a class="logout" id="logout-link" href="{logoutUrl}"><i class="icon-off icon-white"></i> <i id="logout-title" data-i18n-text="user.logout">退出</i></a>\
+<a class="logout" id="logout-link" href="{logoutUrl}"><i class="icon-off icon-white"></i> <i id="logout-title" data-i18n-text="mark.control.logout">退出</i></a>\
 </p></div></div>';
 
 MarkControl.prototype.center_content_dom = '<div class="row-fluid"><div class="image-content span9"><nav></nav></div></div>';
 
 MarkControl.prototype.assistant_dom = '<div class="popover bottom assistant"><div class="arrow"></div></div>';
 
-MarkControl.prototype.mark_function_dom = '<h3 class="popover-title" data-i18n-text="mark.function">评卷功能</h3>\
+MarkControl.prototype.mark_function_dom = '<h3 class="popover-title" data-i18n-text="mark.control.function">评卷功能</h3>\
 <div class="popover-content"><p id="function-list" class="popover-list">\
 </p></div>';
 
@@ -712,14 +712,26 @@ function getDom(content, markControl) {
         content = content.replace(/{logoutUrl}/g, markControl.option.logoutUrl);
     }
     var result = $(content);
-    result.find("[data-i18n-value]").each(function() {
-		$(this).val($.i18n.prop($(this).data("i18n-value")));
-	});
-    result.find("[data-i18n-text]").each(function() {
-		$(this).text($.i18n.prop($(this).data("i18n-text")));
-	});
-    result.find("[data-i18n-placeholder]").each(function() {
-		$(this).attr('placeholder',$.i18n.prop($(this).data("i18n-placeholder")));
+    result.each(function() {
+    	if($(this).data("i18n-value")!=undefined){
+    		$(this).val($.i18n.prop($(this).data("i18n-value")));
+    	}
+		if($(this).data("i18n-text")!=undefined){
+			$(this).text($.i18n.prop($(this).data("i18n-text")));
+		    	}
+		if($(this).data("i18n-placeholder")!=undefined){
+			$(this).attr('placeholder',$.i18n.prop($(this).data("i18n-placeholder")));
+		}
+    	
+    	$(this).find("[data-i18n-value]").each(function() {
+    		$(this).val($.i18n.prop($(this).data("i18n-value")));
+    	});
+    	$(this).find("[data-i18n-text]").each(function() {
+    		$(this).text($.i18n.prop($(this).data("i18n-text")));
+    	});
+    	$(this).find("[data-i18n-placeholder]").each(function() {
+    		$(this).attr('placeholder',$.i18n.prop($(this).data("i18n-placeholder")));
+    	});
 	});
     return result;
 }

+ 10 - 10
stmms-web/src/main/webapp/static/mark-track/js/modules/mark-board.js

@@ -435,7 +435,7 @@ MarkBoard.prototype.updateTotalScore = function() {
 }
 
 MarkBoard.prototype.allZeroSubmit = function() {
-    if (this.task != undefined && this.stepList != undefined && this.stepList.length > 0 && confirm('确认要提交全零分吗?')) {
+    if (this.task != undefined && this.stepList != undefined && this.stepList.length > 0 && confirm(getMessage("mark.board.zero.confirm"))) {
         for (var i = 0; i < this.stepList.length; i++) {
             this.stepList[i].markFinish = true;
             this.stepList[i].markScore = 0;
@@ -478,9 +478,9 @@ MarkBoard.prototype.onTaskSubmit = function() {
         }
     }
     if (!finish) {
-        alert('当前任务还有未给分的题,请继续给分');
-    } else if (!this.needConfirm || confirm('总分为' + totalScore + ', 确认要提交吗?')) {
-        this.task.totalScore = totalScore;
+        alert(getMessage("mark.board.question.not.mark"));
+    } else if (!this.needConfirm || confirm(getMessage("mark.board.total.score") + totalScore + getMessage("mark.board.confirm") )) {
+        this.task.totalScore = totalScore;"mark.board.total.score"
         this.task.scoreList = scoreList.join(',');
         this.task.trackList = trackList;
         this.markControl.submitTask();
@@ -492,16 +492,16 @@ MarkBoard.prototype.onFocusChange = function() {
 }
 
 MarkBoard.prototype.step_board_dom = '<div class="span3 mark-steps"><div class="step-board">\
-    <div class="sublist"><p class="fraction"><span data-i18n-text="mark.total.score">总分</span> <i id="total-score">5</i></p></div>\
+    <div class="sublist"><p class="fraction"><span data-i18n-text="mark.board.total.score">总分</span> <i id="total-score">5</i></p></div>\
 <div class="button">\
-<input type="submit" value="全零分" class="btn1 all-zero-button" data-i18n-value="mark.score.zero"/>\
-<input type="submit" value="提&nbsp;交" class="btn2 task-submit-button" data-i18n-value="mark.submit"/></div>\
+<input type="submit" value="全零分" class="btn1 all-zero-button" data-i18n-value="mark.board.score.zero"/>\
+<input type="submit" value="提&nbsp;交" class="btn2 task-submit-button" data-i18n-value="mark.board.submit"/></div>\
 <div class="step-list"><div class="number"><ul></ul></div></div>\
 <div class="score_board"><div class="score"><ul></ul></div></div>\
 <div class="clear_button">\
-<input type="submit" value="回退" class="btn1 undo-last-track-button" data-i18n-value="mark.back"/>\
-<input type="submit" value="清除本题" class="btn1 clear-current-track-button" data-i18n-value="mark.clear.question"/>\
-<!--<input type="submit" value="清除全卷" class="btn1 clear-all-track-button" data-i18n-value="mark.clear"/></div>-->\
+<input type="submit" value="回退" class="btn1 undo-last-track-button" data-i18n-value="mark.board.back"/>\
+<input type="submit" value="清除本题" class="btn1 clear-current-track-button" data-i18n-value="mark.board.clear.question"/>\
+<!--<input type="submit" value="清除全卷" class="btn1 clear-all-track-button" data-i18n-value="mark.board.clear"/></div>-->\
 </div></div>';
 
 MarkBoard.prototype.step_dom = '<li><a href="#"><p></p><h2></h2></a></li>';

+ 1 - 1
stmms-web/src/main/webapp/static/mark-track/js/modules/sheet-view.js

@@ -37,7 +37,7 @@ SheetView.prototype.render = function(urls) {
 				var content = $(this.container_dom).appendTo(this.markControl.container.centerContent);
 				this.renderContent(content, url,i);
 				this.list.push({
-				    nav: this.markControl.addNavGroup($.i18n.prop("mark.sheet") + (i + 1), content),
+				    nav: this.markControl.addNavGroup(getMessage("mark.sheet") + (i + 1), content),
 				    content: content
 				});
 			} 

+ 4 - 4
stmms-web/src/main/webapp/static/mark-track/js/modules/single-image-view.js

@@ -50,7 +50,7 @@ SingleImageView.prototype.init = function() {
     //this.container.perfectScrollbar({
     //    wheelSpeed: 20
     //});
-    this.markControl.addNavGroup($.i18n.prop("mark.student.answer"), this.container);
+    this.markControl.addNavGroup(getMessage("mark.single.student.answer"), this.container);
 
     this.canvas = this.container.find('canvas')[0];
     this.ctx = this.canvas.getContext("2d");
@@ -136,7 +136,7 @@ SingleImageView.prototype.drawTag = function(tag) {
 SingleImageView.prototype.container_dom = '<div style="overflow: scroll; width: 100%"><canvas></canvas></div>';
 
 SingleImageView.prototype.image_control_dom = '<em>\
-<a href="#" class="btn zoom-in-button" data-i18n-text="mark.zoom.in">放大</a>\
-<a href="#" class="btn zoom-out-button" data-i18n-text="mark.zoom.out">缩小</a>\
-<a href="#" class="btn zoom-fit-button" data-i18n-text="mark.zoom.fit">适应</a>\
+<a href="#" class="btn zoom-in-button" data-i18n-text="mark.single.zoom.in">放大</a>\
+<a href="#" class="btn zoom-out-button" data-i18n-text="mark.single.zoom.out">缩小</a>\
+<a href="#" class="btn zoom-fit-button" data-i18n-text="mark.single.zoom.fit">适应</a>\
 </em>';