aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/css/color.less1
-rw-r--r--src/css/index.less36
-rw-r--r--src/css/mail.less1
-rw-r--r--src/css/manage_square.less2
-rw-r--r--src/css/square.less9
-rw-r--r--src/css/style.less30
-rw-r--r--src/html/index.html41
-rw-r--r--src/html/login.html10
-rw-r--r--src/html/mail.html82
-rw-r--r--src/html/manage_dash.html9
-rw-r--r--src/html/manage_problem.html98
-rw-r--r--src/html/manage_square.html154
-rw-r--r--src/html/register.html16
-rw-r--r--src/html/square.html6
-rw-r--r--src/js/com.js54
-rw-r--r--src/js/imc.js4
-rw-r--r--src/js/index.js10
-rw-r--r--src/js/mail.js29
-rw-r--r--src/js/manage.js30
-rw-r--r--src/js/notice.js6
-rw-r--r--src/js/square.js20
-rw-r--r--src/pmod/pmod_test/css/manage.less2
-rw-r--r--src/pmod/pmod_test/html/manage.html352
-rw-r--r--src/pmod/pmod_test/html/view.html28
-rw-r--r--src/pmod/pmod_test/js/pmod_test.js157
25 files changed, 699 insertions, 488 deletions
diff --git a/src/css/color.less b/src/css/color.less
index c1887c6..c476640 100644
--- a/src/css/color.less
+++ b/src/css/color.less
@@ -11,6 +11,7 @@
@SmallPad:6px;
@MediumPad:16px;
+@BigPad:32px;
@LargePad:64px;
@ExtraPad:128px;
diff --git a/src/css/index.less b/src/css/index.less
index 04f75eb..a384af7 100644
--- a/src/css/index.less
+++ b/src/css/index.less
@@ -8,23 +8,24 @@ body{
#index_header{
height:0px;
- z-index:1;
- position:fixed;
- top:0px;
- left:0px;
+ .pos_left(fixed,0px,0px,1);
opacity:0;
transition:opacity @fast;
overflow:hidden;
&.active{
- height:33px;
+ height:32px;
opacity:1;
display:block;
}
+
+ div.side{
+ .pos_right(fixed,0px,0px);
+ }
}
.index_tag{
- height:33px;
- line-height:33px;
+ height:32px;
+ line-height:32px;
opacity:0.2;
transition:opacity @fast;
@@ -46,7 +47,7 @@ body{
.pos_left(fixed,0px,0px,2);
div.menu{
- width:80px;
+ width:100px;
padding-left:32px;
background-color:@darkgray;
text-align:left;
@@ -82,17 +83,19 @@ body{
div.tagblock{
width:100%;
- height:33px;
- box-shadow:0px 3px 2px -2px fade(@black,10%);
+ height:32px;
}
div.menu{
+ margin-bottom:0px;
overflow-x:hidden;
- li > a{
- height:48px;
+
+ a{
padding-left:32px;
+ padding-top:(48 - @NormalFontSize) / 2;
+ padding-bottom:(48 - @NormalFontSize) / 2;
+ border-width:0px;
font-size:@NormalFontSize;
font-weight:bold;
- line-height:48px;
}
}
}
@@ -111,15 +114,16 @@ body{
div.tagblock{
width:100%;
- height:33px;
- box-shadow:0px 3px 2px -2px fade(@black,10%);
+ height:32px;
}
div.notice{
+ margin-bottom:0px;
overflow-y:auto;
- ul.nav > li > a{
+ a{
min-height:64px;
padding-left:@SmallPad;
+ border-width:0px;
font-size:@NormalFontSize;
p{
diff --git a/src/css/mail.less b/src/css/mail.less
index e0bd6e7..940ff28 100644
--- a/src/css/mail.less
+++ b/src/css/mail.less
@@ -5,6 +5,7 @@
div.newmail{
div.content{
width:100%;
+ height:256px;
}
}
div.readmail{
diff --git a/src/css/manage_square.less b/src/css/manage_square.less
index 87f1ca7..d373865 100644
--- a/src/css/manage_square.less
+++ b/src/css/manage_square.less
@@ -7,7 +7,7 @@
min-height:320px;
img.logo{
- width:96px;
+ width:100%;
}
}
}
diff --git a/src/css/square.less b/src/css/square.less
index ccd2e6a..9863235 100644
--- a/src/css/square.less
+++ b/src/css/square.less
@@ -2,8 +2,7 @@
@import 'mixin.less';
#index_page{
- div.catelist{
- position:fixed;
+ div.sidelist{
}
div.indexlist{
div.catebox{
@@ -19,7 +18,7 @@
div.box{
height:108px;
- margin-bottom:12px;
+ margin-bottom:@SmallPad * 2;
box-shadow:0px 0px 6px 0px fade(@black,30%);
position:relative;
@@ -46,8 +45,8 @@
&:hover{
box-shadow:0px 0px 6px 1px fade(@black,30%);
}
- &:nth-child(2n - 1){
- margin-left:0px;
+ &:nth-child(2n){
+ margin-left:@SmallPad * 2;
}
}
}
diff --git a/src/css/style.less b/src/css/style.less
index c03cec6..0a6fa80 100644
--- a/src/css/style.less
+++ b/src/css/style.less
@@ -7,17 +7,14 @@
src:url('/DejaVuSansMono.woff');
}
-div.tiny_modal{
+div.tiny-modal > div.modal-dialog{
width:270px;
- margin-left:-135px;
}
-div.small_modal{
+div.small-modal > div.modal-dialog{
width:570px;
- margin-left:-285px;
}
-div.medium_modal{
+div.medium-modal > div.modal-dialog{
width:970px;
- margin-left:-485px;
}
span.check{
width:14px;
@@ -31,27 +28,28 @@ span.check{
}
i{
+ font-size:10px;
position:absolute;
- top:-2px;
- left:0px;
+ top:1px;
+ left:1px;
}
}
span.check_bold{
- border:@darkgray 2px solid;
+ border:@darkgray 1px solid;
}
.time{
font-size:@SmallFontSize;
font-family:monospace;
}
-.uneditable-input{
- cursor:default;
-}
span.tag{
margin-right:@SmallPad;
font-size:13px;
+ position:relative;
i{
margin-left:@SmallPad;
+ position:relative;
+ top:2px;
cursor:pointer;
opacity:0.8;
@@ -61,20 +59,24 @@ span.tag{
}
}
div.tagbox{
+ width:100%;
position:relative;
div{
height:0px;
position:absolute;
- top:4px;
- left:7px;
+ top:9px;
+ left:11px;
z-index:1;
span.tag{
margin-bottom:3px;
+ float:left;
}
}
input{
+ padding-left:12px;
+ padding-top:8px;
z-index:0;
}
ul{
diff --git a/src/html/index.html b/src/html/index.html
index 1d2855a..f21f334 100644
--- a/src/html/index.html
+++ b/src/html/index.html
@@ -72,11 +72,17 @@ $(document).ready(function(){
<div id="index_header" class="navbar navbar-fixed-top navbar-inverse">
<div class="navbar-inner">
<div class="container">
- <p class="title offset1 span2 navbar-text"></p>
- <ul class="nav tabnav"></ul>
+ <div class="row">
+ <div class="col-lg-2 col-offset-1">
+ <p class="title navbar-text"></p>
+ </div>
+ <div class="col-lg-10">
+ <ul class="nav navbar-nav"></ul>
+ </div>
+ </div>
</div>
- <div style="position:absolute; top:0px; right:0px;">
- <ul class="nav">
+ <div class="side">
+ <ul class="nav navbar-nav">
<li class="nickname" style="display:none;"><a></a></li>
<li class="logout" style="display:none;"><a href="/toj/logout/">登出</a></li>
<li class="login"><a href="/toj/login/">登入</a></li>
@@ -91,16 +97,14 @@ $(document).ready(function(){
</div>
<div id="index_menu" exheight=true>
<div class="tagblock"></div>
- <div class="menu">
- <ul class="nav nav-list">
- <li><a href="/toj/home/">首頁</a></li>
- <li class="profile" style="display:none;"><a href="">個人</a></li>
- <li class="square" style="display:none;"><a href="/toj/square/user/">方塊</a></li>
- <li class="mail" style="display:none;"><a href="/toj/mail/inbox/">信箱</a></li>
- <li class="manage" style="display:none;"><a href="/toj/manage/dash/">管理</a></li>
- <li class="stat"><a href="/toj/stat/">狀態</a></li>
- <li><a href="#">關於</a></li>
- </ul>
+ <div class="list-group menu">
+ <a class="list-group-item" href="/toj/home/">首頁</a>
+ <a class="list-group-item profile" href="" style="display:none;">個人</a>
+ <a class="list-group-item square" href="/toj/square/">方塊</a>
+ <a class="list-group-item mail" href="/toj/mail/inbox/" style="display:none;">信箱</a>
+ <a class="list-group-item manage" href="/toj/manage/dash/" style="display:none;">管理</a>
+ <a class="list-group-item stat" href="/toj/stat/">狀態</a>
+ <a class="list-group-item" href="#">關於</a>
</div>
</div>
@@ -109,15 +113,14 @@ $(document).ready(function(){
</div>
<div id="index_panel" exheight=true>
<div class="tagblock"></div>
- <div class="notice" exheight=true extop=41px>
- <ul class="nav nav-list"></ul>
- </div>
+ <div class="list-group notice" exheight=true extop=32px></div>
</div>
<div id="index_alert" style="z-index:2000;"></div>
-<div id="index_page" class="container" exminheight=true extop=56px exbottom=62px></div>
+<div id="index_page" class="container" exminheight=true extop=48px exbottom=62px></div>
<div id="index_footer">
- <p class="muted">εpsilon team</p>
+ <p class="text-muted">εpsilon team</p>
</div>
+
</body>
</html>
diff --git a/src/html/login.html b/src/html/login.html
index 3f7b15d..79a7bd1 100644
--- a/src/html/login.html
+++ b/src/html/login.html
@@ -1,15 +1,15 @@
<div class="row">
- <div class="info span6">
+ <div class="info col-lg-6">
<h2>登入TOJ,開始你的解題</h2>
<p class="lead">沒有帳戶?&nbsp&nbsp&nbsp<a href="/toj/register/">註冊</a></p>
</div>
- <div class="input offset1 span3">
+ <div class="input col-lg-3 col-offset-1">
<h2>登入</h2>
- <div class="alert alert-error" style="display:none;"></div>
+ <div class="alert alert-danger" style="display:none;"></div>
- <input name="username" type="text" placeholder="使用者名稱"><br>
- <input name="password" type="password" placeholder="密碼"><br>
+ <input name="username" type="text" class="form-control" placeholder="使用者名稱"><br>
+ <input name="password" type="password" class="form-control" placeholder="密碼"><br>
<button class="btn btn-primary submit">登入</button>
</div>
</div>
diff --git a/src/html/mail.html b/src/html/mail.html
index f6a8aac..6471d93 100644
--- a/src/html/mail.html
+++ b/src/html/mail.html
@@ -1,56 +1,60 @@
-<div class="modal hide fade medium_modal newmail">
- <div class="modal-header">
- <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
- <h3>寫新郵件</h3>
- </div>
- <div class="modal-body container-fluid">
- <div class="row-fluid">
- <div class="span13">
- <div class="input-prepend">
- <span class="add-on">收件人</span>
- <input class="to_username" type="text" placeholder="使用者名稱">
- </div>
- <div class="input-prepend">
- <span class="add-on">標題</span>
- <input class="title" type="text">
+<div class="modal fade medium-modal newmail">
+ <div class="modal-dialog">
+ <div class="modal-content">
+ <div class="modal-header">
+ <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+ <h3>寫新郵件</h3>
+ </div>
+ <div class="modal-body row">
+ <div class="span13">
+ <div class="input-group">
+ <span class="input-group-addon">收件人</span>
+ <input class="form-control to_username" type="text" placeholder="使用者名稱">
+ </div><br>
+ <div class="input-group">
+ <span class="input-group-addon">標題</span>
+ <input class="form-control title" type="text">
+ </div><br>
+ <div class="content"></div>
</div>
- <div class="content" exheight=true exratio=38%></div>
+ </div>
+ <div class="modal-footer">
+ <button class="btn btn-primary submit">寄出</button>
+ <button class="btn cancel">取消</button>
</div>
</div>
</div>
- <div class="modal-footer">
- <button class="btn btn-primary submit">寄出</button>
- <button class="btn cancel">取消</button>
- </div>
</div>
-<div class="modal hide fade medium_modal readmail">
- <div class="modal-header">
- <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
- <h3 class="title"></h3>
- </div>
- <div class="modal-body container-fluid">
- <div class="row-fluid">
- <div class="span13">
- <div class="input-prepend">
- <span class="add-on username_label"></span>
- <span class="uneditable-input username" type="text"></span>
+<div class="modal fade medium-modal readmail">
+ <div class="modal-dialog">
+ <div class="modal-content">
+ <div class="modal-header">
+ <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+ <h3 class="title"></h3>
+ </div>
+ <div class="modal-body row">
+ <div class="span13">
+ <div class="input-group">
+ <span class="input-group-addon username_label"></span>
+ <input class="form-control username" type="text" disabled></input>
+ </div><br>
+ <div class="content"></div>
</div>
- <div class="content" exheight=true exratio=38%></div>
+ </div>
+ <div class="modal-footer">
+ <button class="btn reply">回信</button>
</div>
</div>
</div>
- <div class="modal-footer">
- <button class="btn reply">回信</button>
- </div>
</div>
<div class="row">
- <div class="offset1 span2 oper">
+ <div class="col-lg-2 col-offset-1 oper">
<button class="btn btn-primary newmail">寫新郵件</button><br><br>
- <button class="btn delmail">刪除所選</button>
+ <button class="btn btn-default delmail">刪除所選</button>
</div>
- <div class="span8 mail">
+ <div class="col-lg-8 mail">
<table class="table table-hover maillist">
<thead>
<tr>
@@ -62,6 +66,6 @@
</thead>
<tbody></tbody>
</table>
- <div class="pagination"></div>
+ <ul class="pagination"></ul>
</div>
</div>
diff --git a/src/html/manage_dash.html b/src/html/manage_dash.html
index e89c5b0..b7a8cb2 100644
--- a/src/html/manage_dash.html
+++ b/src/html/manage_dash.html
@@ -1,13 +1,10 @@
<div class="row">
- <div class="span3">
-
- </div>
- <div class="span6">
+ <div class="col-lg-10 col-offset-3">
<table class="table accesslist">
<thead>
<tr>
- <th class="span2">物件權限ID</th>
- <th class="span4">權限</th>
+ <th class="col-lg-1">物件權限ID</th>
+ <th class="col-lg-5">權限</th>
</tr>
</thead>
<tbody></tbody>
diff --git a/src/html/manage_problem.html b/src/html/manage_problem.html
index 15d4c1a..f2c7b0b 100644
--- a/src/html/manage_problem.html
+++ b/src/html/manage_problem.html
@@ -1,64 +1,68 @@
-<div class="modal hide fade tiny_modal create">
- <div class="modal-header">
- <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
- <h3>建立題目</h3>
- </div>
- <div class="modal-body container-fluid">
- <div class="row-fluid">
- <div class="span13">
- <label>題目名稱</label>
- <input name="title" type="text">
- <label>題目模組</label>
- <select name="pmod"></select>
- <label>公開狀態</label>
- <select name="hidden">
- <option value=0>顯示</option>
- <option value=1>隱藏</option>
- </select>
+<div class="modal fade tiny-modal create">
+ <div class="modal-dialog">
+ <div class="modal-content">
+ <div class="modal-header">
+ <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+ <h3>建立題目</h3>
+ </div>
+ <div class="modal-body row">
+ <div class="col-lg-13">
+ <label>題目名稱</label>
+ <input class="form-control" name="title" type="text"><br>
+ <label>題目模組</label>
+ <select class="form-control" name="pmod"></select><br>
+ <label>公開狀態</label>
+ <select class="form-control" name="hidden">
+ <option value=0>顯示</option>
+ <option value=1>隱藏</option>
+ </select>
+ </div>
+ </div>
+ <div class="modal-footer">
+ <button class="btn btn-primary submit">確定</button>
+ <button class="btn cancel">取消</button>
</div>
</div>
</div>
- <div class="modal-footer">
- <button class="btn btn-primary submit">確定</button>
- <button class="btn cancel">取消</button>
- </div>
</div>
-<div class="modal hide fade tiny_modal set">
- <div class="modal-header">
- <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
- <h3>題目設定</h3>
- </div>
- <div class="modal-body container-fluid">
- <div class="row-fluid">
- <div class="span13">
- <label>題目名稱</label>
- <input name="title" type="text">
- <label>公開狀態</label>
- <select name="hidden">
- <option value=0>顯示</option>
- <option value=1>隱藏</option>
- </select>
+<div class="modal fade tiny-modal set">
+ <div class="modal-dialog">
+ <div class="modal-content">
+ <div class="modal-header">
+ <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+ <h3>題目設定</h3>
+ </div>
+ <div class="modal-body row">
+ <div class="col-lg-13">
+ <label>題目名稱</label>
+ <input class="form-control" name="title" type="text"><br>
+ <label>公開狀態</label>
+ <select class="form-control" name="hidden">
+ <option value=0>顯示</option>
+ <option value=1>隱藏</option>
+ </select>
+ </div>
+ </div>
+ <div class="modal-footer">
+ <button class="btn btn-primary submit">確定</button>
+ <button class="btn cancel">取消</button>
</div>
</div>
</div>
- <div class="modal-footer">
- <button class="btn btn-primary submit">確定</button>
- <button class="btn cancel">取消</button>
- </div>
</div>
<div class="row">
- <div class="span2 offset1 oper">
- <button class="btn create" style="display:none;">建立題目</button>
+ <div class="col-lg-2 col-offset-1 oper">
+ <button class="btn btn-default create" style="display:none;">建立題目</button>
</div>
- <div class="span5">
+ <div class="col-lg-5">
<table class="table list">
<thead>
<tr>
- <th class="span1">#</th>
- <th class="span2">題目名稱</th>
- <th class="span1">公開狀態</th>
- <th class="span1"></th>
+ <th class="col-lg-1">#</th>
+ <th class="col-lg-2">題目名稱</th>
+ <th class="col-lg-1">公開狀態</th>
+ <th class="col-lg-1"></th>
</tr>
</thead>
<tbody></tbody>
diff --git a/src/html/manage_square.html b/src/html/manage_square.html
index 15cb48f..8bbc4f8 100644
--- a/src/html/manage_square.html
+++ b/src/html/manage_square.html
@@ -1,89 +1,97 @@
<link href="/toj/css/manage_square.css" rel="stylesheet">
-<div class="modal hide fade small_modal create">
- <div class="modal-header">
- <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
- <h3>建立方塊</h3>
- </div>
- <div class="modal-body container-fluid">
- <div class="row-fluid">
- <div class="span6">
- <label>方塊名稱</label>
- <input name="title" type="text">
- <label>方塊介紹</label>
- <input name="intro" type="text">
- <label>方塊圖片</label>
- <input name="logo" type="text">
- <img class="img-polaroid hide logo"></img>
+<div class="modal fade small-modal create">
+ <div class="modal-dialog">
+ <div class="modal-content">
+ <div class="modal-header">
+ <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+ <h3>建立方塊</h3>
+ </div>
+ <div class="modal-body row">
+ <div class="col-lg-6">
+ <label>方塊名稱</label>
+ <input class="form-control" name="title" type="text"><br>
+ <label>方塊介紹</label>
+ <input class="form-control" name="intro" type="text"><br>
+ <label>方塊圖片</label>
+ <input class="form-control" name="logo" type="text"><br>
+ <img class="thumbnail logo" style="display:none;"></img>
+ </div>
+ <div class="col-lg-7">
+ <label>方塊模組</label>
+ <select class="form-control" name="sqmod"></select><br>
+ <label>公開狀態</label>
+ <select class="form-control" name="hidden"><br>
+ <option value=0>顯示</option>
+ <option value=1>隱藏</option>
+ </select><br>
+ <label>分類</label>
+ <div class="catebox"></div>
+ </div>
</div>
- <div class="span7">
- <label>方塊模組</label>
- <select name="sqmod"></select>
- <label>公開狀態</label>
- <select name="hidden">
- <option value=0>顯示</option>
- <option value=1>隱藏</option>
- </select>
- <label>分類</label>
- <div class="catebox"></div>
+ <div class="modal-footer">
+ <button class="btn btn-primary submit">確定</button>
+ <button class="btn cancel">取消</button>
</div>
</div>
</div>
- <div class="modal-footer">
- <button class="btn btn-primary submit">確定</button>
- <button class="btn cancel">取消</button>
- </div>
</div>
-<div class="modal hide fade small_modal set">
- <div class="modal-header">
- <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
- <h3>方塊設定</h3>
- </div>
- <div class="modal-body container-fluid">
- <div class="row-fluid">
- <div class="span6">
- <label>方塊名稱</label>
- <input name="title" type="text">
- <label>方塊介紹</label>
- <input name="intro" type="text">
- <label>方塊圖片</label>
- <input name="logo" type="text">
- <img class="img-polaroid logo"></img>
+<div class="modal fade small_modal set">
+ <div class="modal-dialog">
+ <div class="modal-content">
+ <div class="modal-header">
+ <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+ <h3>方塊設定</h3>
</div>
- <div class="span7">
- <label>公開狀態</label>
- <select name="hidden">
- <option value=0>顯示</option>
- <option value=1>隱藏</option>
- </select>
- <label>分類</label>
- <div class="catebox"></div>
+ <div class="modal-body row">
+ <div class="row-fluid">
+ <div class="col-lg-6">
+ <label>方塊名稱</label>
+ <input class="form-control" name="title" type="text"><br>
+ <label>方塊介紹</label>
+ <input class="form-control" name="intro" type="text"><br>
+ <label>方塊圖片</label>
+ <input class="form-control" name="logo" type="text"><br>
+ <img class="img-thumbnail logo"></img>
+ </div>
+ <div class="col-lg-7">
+ <label>公開狀態</label>
+ <select class="form-control" name="hidden">
+ <option value=0>顯示</option>
+ <option value=1>隱藏</option>
+ </select><br>
+ <label>分類</label>
+ <div class="catebox"></div>
+ </div>
+ </div>
+ </div>
+ <div class="modal-footer">
+ <button class="btn btn-primary submit">確定</button>
+ <button class="btn cancel">取消</button>
</div>
</div>
</div>
- <div class="modal-footer">
- <button class="btn btn-primary submit">確定</button>
- <button class="btn cancel">取消</button>
- </div>
</div>
-<div class="row clearfix">
- <div class="span2 offset1 oper">
- <button class="btn create" style="display:none;">建立方塊</button>
+<div class="row">
+ <div class="col-lg-2 col-offset-1 oper">
+ <button class="btn btn-default create" style="display:none;">建立方塊</button>
+ </div>
+ <div class="col-lg-10">
+ <table class="table table-hover list">
+ <thead>
+ <tr>
+ <th class="col-lg-1">#</th>
+ <th class="col-lg-2">名稱</th>
+ <th class="col-lg-2">時間</th>
+ <th class="col-lg-1">公開狀態</th>
+ <th class="col-lg-3">分類</th>
+ <th class="col-lg-1"></th>
+ </tr>
+ </thead>
+ <tbody>
+ </tbody>
+ </table>
</div>
- <table class="span10 table table-hover list">
- <thead>
- <tr>
- <th class="span1">#</th>
- <th class="span2">名稱</th>
- <th class="span2">時間</th>
- <th class="span1">公開狀態</th>
- <th class="span3">分類</th>
- <th class="span1"></th>
- </tr>
- </thead>
- <tbody>
- </tbody>
- </table>
</div>
diff --git a/src/html/register.html b/src/html/register.html
index bb5a346..567699a 100644
--- a/src/html/register.html
+++ b/src/html/register.html
@@ -1,18 +1,18 @@
<div class="row">
- <div class="info span6">
+ <div class="info col-lg-6">
<h2>註冊TOJ,開始你的解題</h2>
<p class="lead">有帳戶?&nbsp&nbsp&nbsp<a href="/toj/login/">登入</a></p>
</div>
- <div class="input offset1 span3">
+ <div class="input col-lg-3 col-offset-1">
<h2>註冊</h2>
- <div class="alert alert-error" style="display:none;"></div>
+ <div class="alert alert-danger" style="display:none;"></div>
- <input name="username" type="text" placeholder="使用者名稱"><br>
- <input name="password" type="password" placeholder="密碼"><br>
- <input name="repeat" type="password" placeholder="重復密碼"><br>
- <input name="nickname" type="text" placeholder="暱稱"><br>
- <input name="email" type="text" placeholder="信箱"><br>
+ <input name="username" type="text" class="form-control" placeholder="使用者名稱"><br>
+ <input name="password" type="password" class="form-control" placeholder="密碼"><br>
+ <input name="repeat" type="password" class="form-control" placeholder="重復密碼"><br>
+ <input name="nickname" type="text" class="form-control" placeholder="暱稱"><br>
+ <input name="email" type="text" class="form-control" placeholder="信箱"><br>
<button class="btn btn-primary submit">註冊</button>
</div>
</div>
diff --git a/src/html/square.html b/src/html/square.html
index 9c8fd47..e594946 100644
--- a/src/html/square.html
+++ b/src/html/square.html
@@ -1,7 +1,7 @@
<div class="row">
- <div class="span3 catelist">
+ <div class="col-lg-2 sidelist">
<h3>分類</h3>
- <ul class="nav nav-tabs nav-stacked catelist"></ul>
+ <div class="list-group catelist"></div>
</div>
- <div class="span10 offset3 indexlist"></div>
+ <div class="col-lg-11 indexlist"></div>
</div>
diff --git a/src/js/com.js b/src/js/com.js
index 1a6d732..d19c8fd 100644
--- a/src/js/com.js
+++ b/src/js/com.js
@@ -19,11 +19,11 @@ var WebSocketConnection = function(link,ws,file_addr){
that.send_msg = function(data){
ws.send(new Blob([data],{'type':'application/octet-stream'}))
};
- that.send_file = function(filekey,blob,callback){
+ that.send_file = function(filekey,blob,callback,prog_callback){
var i;
- var file_ws = new Array(4);
+ var file_ws = new Array(8);
var filesize = blob.size;
- var partsize = Math.ceil(filesize / 4);
+ var partsize = Math.ceil(filesize / 8);
var count = 0;
function _callback(err){
@@ -33,7 +33,7 @@ var WebSocketConnection = function(link,ws,file_addr){
delete sendfile_filekeymap[filekey];
- for(i = 0;i < 4;i++){
+ for(i = 0;i < 8;i++){
if(file_ws[i] != undefined){
file_ws[i].close();
}
@@ -42,7 +42,7 @@ var WebSocketConnection = function(link,ws,file_addr){
callback(err);
}
- for(i = 0;i < 4;i++){
+ for(i = 0;i < 8;i++){
file_ws[i] = new WebSocket('ws://' + file_addr + '/conn');
file_ws[i].onopen = function(idx){return function(){
var ws = file_ws[idx];
@@ -52,7 +52,7 @@ var WebSocketConnection = function(link,ws,file_addr){
ws.onmessage = function(e){
if(off >= end){
count += 1;
- if(count == 4){
+ if(count == 8){
_callback();
}
}else{
@@ -195,7 +195,7 @@ var com = new function(){
j_e.empty();
j_e.attr('checked',null);
}else{
- j_e.append($('<i class="icon-ok"></i>'));
+ j_e.append($('<i class="glyphicon glyphicon-ok"></i>'));
j_e.attr('checked','checked');
}
@@ -240,6 +240,8 @@ var com = new function(){
$(document).on('click','span.check',function(e){
var j_e = $(e.target);
+ console.log('test');
+
if(!j_e.is('span.check')){
j_e = j_e.parent('span.check');
}
@@ -603,7 +605,7 @@ var com = new function(){
ex($('[exheight="true"]'),'height');
ex($('[exminheight="true"]'),'min-height');
- $('.modal-body').css('max-height',(winheight * 0.9 - 192) + 'px');
+ //$('.modal-body').css('max-height',(winheight * 0.9 - 192) + 'px');
};
that.get_cookie = function(){
var ret;
@@ -690,7 +692,7 @@ var com = new function(){
return codebox;
};
- that.create_pagination = function(j_div,start,end,curr,step){
+ that.create_pagination = function(j_ul,start,end,curr,step){
var i;
var j_ul;
var j_li;
@@ -701,11 +703,8 @@ var com = new function(){
end = Math.floor(Math.max(0,(end - 1)) / step);
curr = Math.floor(curr / step);
- j_div.empty();
-
- j_div.addClass('pagination');
- j_div.append('<ul></ul>');
- j_ul = j_div.find('ul')
+ j_ul.empty();
+ j_ul.addClass('pagination');
j_li = $('<li class="prev"><a href="">←</a></li>');
if(curr == 0){
@@ -783,25 +782,25 @@ var com = new function(){
var left;
var top;
- left = 6;
- top = 4;
+ left = 12;
+ top = 8;
if((j_tag = j_box.find('span.tag:last')).length == 1){
pos = j_tag.position();
- left += pos.left + j_tag.width() + 14;
+ left += pos.left + j_tag.width() + 20;
- top += pos.top + j_tag.height() + 1;
+ top += pos.top + j_tag.height() + 2;
if((inwidth - left) < 70){
- left = 6;
- top += 6;
+ left = 12;
+ top += 8;
}else{
top -= (j_tag.height() + 2);
}
}
- j_input.width(inwidth - left + 6);
j_input.css('padding-left',left);
j_input.css('padding-top',top);
+ j_input.css('height',top + 30);
}
function _match(value){
var i;
@@ -884,12 +883,11 @@ var com = new function(){
}
}
function _init(){
- j_input.css('width','');
- width = j_input.width() + 14;
- inwidth = width - 14;
+ j_div.css('width','100%');
+ width = j_div.width();
+ inwidth = width - 24;
- j_div.width(width);
- j_input.width(inwidth);
+ j_box.width(inwidth);
j_menu.width(width - 2);
}
function _set_words(new_words){
@@ -942,7 +940,7 @@ var com = new function(){
j_div.empty();
j_div.addClass('tagbox');
- j_div.append($('<div></div><input type="text"><ul class="dropdown-menu" role="menu" aria-labelledby="dropdownMenu"></ul>'));
+ j_div.append($('<div></div><input class="form-control" type="text"><ul class="dropdown-menu" role="menu" aria-labelledby="dropdownMenu"></ul>'));
j_box = j_div.find('div');
j_input = j_div.find('input');
@@ -1043,7 +1041,7 @@ var com = new function(){
}
j_span.text(text);
- j_i = $('<i class="icon-remove-circle icon-white"></i>');
+ j_i = $('<i class="glyphicon glyphicon-remove-circle"></i>');
j_span.append(j_i);
j_i.on('click',function(e){
j_span.remove();
diff --git a/src/js/imc.js b/src/js/imc.js
index 05ce6be..103e4cb 100644
--- a/src/js/imc.js
+++ b/src/js/imc.js
@@ -378,13 +378,15 @@ var imc = new function(){
that.sendfile = function(dst_link,
blob,
filekey_callback,
- result_callback){
+ result_callback,
+ prog_callback){
var filekey = self_link + '_' + Math.random();
info_filekeymap[filekey] = {
'blob':blob,
'result_callback':result_callback,
+ 'prog_callback':prog_callback,
'callback':function(err){
if(ret_sendfile(filekey,err) && err != undefined){
that.call(dst_link + 'imc/','abort_sendfile',65536,null,filekey,err);
diff --git a/src/js/index.js b/src/js/index.js
index 1058dc8..c18543a 100644
--- a/src/js/index.js
+++ b/src/js/index.js
@@ -130,8 +130,8 @@ var index = new function(){
j_li = j_menu.find('div.menu li.profile');
j_li.find('a').attr('href','/toj/user:' + user.uid + '/main/');
j_li.show();
- j_menu.find('div.menu li.mail').show();
- j_menu.find('div.menu li.manage').show();
+ j_menu.find('div.menu a.mail').show();
+ j_menu.find('div.menu a.manage').show();
}
});
@@ -150,17 +150,17 @@ var index = new function(){
j_a.text(text);
j_a.attr('href',link);
- j_header.find('ul.tabnav').append(j_li);
+ j_header.find('div.container ul.navbar-nav').append(j_li);
j_li.active = function(){
- j_header.find('ul.tabnav > li.active').removeClass('active');
+ j_header.find('div.container ul.navbar-nav > li.active').removeClass('active');
j_li.addClass('active');
};
return j_li;
};
that.clear_tabnav = function(){
- j_header.find('ul.tabnav').empty();
+ j_header.find('div.container ul.navbar-nav').empty();
};
that.add_alert = function(type,title,content,autofade){
var j_alert;
diff --git a/src/js/mail.js b/src/js/mail.js
index 8b1fc36..f6a9b83 100644
--- a/src/js/mail.js
+++ b/src/js/mail.js
@@ -59,7 +59,7 @@ var mail = new function(){
com.call_backend('core/mail/','get_mail_count',function(result){
var i;
- var j_div = j_index_page.find('div.pagination');
+ var j_ul = j_index_page.find('ul.pagination');
var offs;
var as;
var pfix;
@@ -73,8 +73,8 @@ var mail = new function(){
pfix = '/toj/mail/backup:';
}
- offs = com.create_pagination(j_div,0,result.data.tot_count,maillist_off,20);
- as = j_div.find('a');
+ offs = com.create_pagination(j_ul,0,result.data.tot_count,maillist_off,20);
+ as = j_ul.find('a');
for(i = 0;i < as.length;i++){
$(as[i]).attr('href',pfix + offs[i] + '/');
}
@@ -140,8 +140,10 @@ var mail = new function(){
j_maillist = j_index_page.find('table.maillist > tbody');
j_newmail = j_index_page.find('div.newmail');
j_readmail = j_index_page.find('div.readmail');
- newmail_content = com.create_codebox(j_newmail.find('div.content'),'text/html');
- readmail_content = com.create_codebox(j_readmail.find('div.content'),'text/html',true);
+ newmail_content = j_newmail.find('div.content').codebox(
+ {'mode':'text/html'});
+ readmail_content = j_readmail.find('div.content').codebox(
+ {'mode':'text/html','readonly':true});
inbox_tabnav = index.add_tabnav('收件匣','/toj/mail/inbox/');
backup_tabnav = index.add_tabnav('寄件備份','/toj/mail/backup/');
@@ -177,10 +179,11 @@ var mail = new function(){
}
});
- j_newmail.on('shown',function(e){
+ j_newmail.on('shown.bs.modal',function(e){
+ console.log('test');
newmail_content.refresh();
});
- j_newmail.on('hide',function(e){
+ j_newmail.on('hide.bs.modal',function(e){
j_newmail.find('input').val('');
newmail_content.setValue('');
});
@@ -219,7 +222,7 @@ var mail = new function(){
j_newmail.modal('hide');
});
- j_readmail.on('show',function(e){
+ j_readmail.on('show.bs.modal',function(e){
com.call_backend('core/mail/','recv_mail',function(result){
var data;
@@ -229,24 +232,24 @@ var mail = new function(){
data = result.data;
j_readmail.find('h3.title').text(data.title);
- j_readmail.find('span.username').text(data.from_username);
+ j_readmail.find('input.username').val(data.from_username);
readmail_content.setValue(data.content);
}
},readmail_mailid);
});
- j_readmail.on('shown',function(e){
+ j_readmail.on('shown.bs.modal',function(e){
readmail_content.refresh();
});
- j_readmail.on('hide',function(e){
+ j_readmail.on('hide.bs.modal',function(e){
j_readmail.find('h3.title').text('');
- j_readmail.find('span.from_username').text('');
+ j_readmail.find('input.username').val('');
readmail_content.setValue('');
readmail_mailid = null;
update_maillist();
});
j_readmail.find('button.reply').on('click',function(e){
- j_newmail.find('input.to_username').val(j_readmail.find('span.username').text());
+ j_newmail.find('input.to_username').val(j_readmail.find('input.username').val());
j_newmail.find('input.title').val('Re: ' + j_readmail.find('h3.title').text());
j_readmail.modal('hide');
diff --git a/src/js/manage.js b/src/js/manage.js
index 822b31e..6ebffaf 100644
--- a/src/js/manage.js
+++ b/src/js/manage.js
@@ -156,7 +156,7 @@ var manage = new function(){
});
}
function _item_create(id,title,hidden,start_time,end_time,cateid,intro,logo){
- var j_item = $('<tr class="item"><td class="id"></td><td class="title"><td class="time"><div class="time start"></div><div class="time end"></div></td><td class="hid"></td></td><td class="cate"></td><td class="oper"><div class="btn-group"><button class="btn btn-small set"><i class="icon-cog"></i></button><button class="btn btn-small del"><i class="icon-trash"></i></button></div></td></tr>');
+ var j_item = $('<tr class="item"><td class="id"></td><td class="title"><td class="time"><div class="time start"></div><div class="time end"></div></td><td class="hid"></td></td><td class="cate"></td><td class="oper"><div class="btn-group"><button class="btn btn-default btn-small set"><i class="glyphicon glyphicon-cog"></i></button><button class="btn btn-default btn-small del"><i class="glyphicon glyphicon-trash"></i></button></div></td></tr>');
_item_set(j_item,id,title,hidden,start_time,end_time,cateid,intro,logo);
@@ -346,7 +346,7 @@ var manage = new function(){
j_create.find('button.cancel').on('click',function(e){
j_create.modal('hide');
});
- j_create.on('show',function(e){
+ j_create.on('show.bs.modal',function(e){
_update_sqmod().done(function(sqmod_list){
var i;
var j_sqmod;
@@ -366,7 +366,10 @@ var manage = new function(){
}
});
});
- j_create.on('hide',function(e){
+ j_create.on('shown.bs.modal',function(e){
+ create_tagbox_cate.refresh();
+ });
+ j_create.on('hide.bs.modal',function(e){
j_create.find('input').val('');
j_create.find('img.logo').attr('src',null);
create_tagbox_cate.clear();
@@ -386,7 +389,7 @@ var manage = new function(){
j_logo.attr('src',url);
}
});
- j_set.on('show',function(e){
+ j_set.on('show.bs.modal',function(e){
var i;
var url;
@@ -409,10 +412,9 @@ var manage = new function(){
for(i = 0;i < set_data.cateid.length;i++){
set_tagbox_cate.add_tag(cate_idmap[set_data.cateid[i]]);
}
-
- j_set.on('shown',function(e){
- set_tagbox_cate.refresh();
- });
+ });
+ j_set.on('shown.bs.modal',function(e){
+ set_tagbox_cate.refresh();
});
j_set.find('button.submit').on('click',function(e){
var i;
@@ -470,7 +472,7 @@ var manage = new function(){
j_set.find('button.cancel').on('click',function(e){
j_set.modal('hide');
});
- j_set.on('hide',function(e){
+ j_set.on('hide.bs.modal',function(e){
j_set.find('input').val('');
j_set.find('img.logo').attr('src',null);
set_tagbox_cate.clear();
@@ -524,7 +526,7 @@ var manage = new function(){
});
}
function _item_create(proid,title,hidden,pmodid){
- var j_item = $('<tr class="item"><td class="proid"></td><td class="title"></td><td class="hid"></td><td class="oper"><div class="btn-group"><button class="btn btn-small set"><i class="icon-cog"></i></button><button class="btn btn-small del"><i class="icon-trash"></i></button></div></td></tr>');
+ var j_item = $('<tr class="item"><td class="proid"></td><td class="title"></td><td class="hid"></td><td class="oper"><div class="btn-group"><button class="btn btn-default btn-small set"><i class="glyphicon glyphicon-cog"></i></button><button class="btn btn-default btn-small del"><i class="glyphicon glyphicon-trash"></i></button></div></td></tr>');
_item_set(j_item,proid,title,hidden,pmodid);
@@ -587,7 +589,7 @@ var manage = new function(){
j_create.modal('show');
});
- j_create.on('show',function(e){
+ j_create.on('show.bs.modal',function(e){
_update_pmod().done(function(pmod_list){
var i;
var j_pmod;
@@ -604,7 +606,7 @@ var manage = new function(){
}
});
});
- j_create.on('hide',function(e){
+ j_create.on('hide.bs.modal',function(e){
j_create.find('input').val('');
});
j_create.find('button.submit').on('click',function(e){
@@ -645,7 +647,7 @@ var manage = new function(){
j_create.modal('hide');
});
- j_set.on('show',function(e){
+ j_set.on('show.bs.modal',function(e){
j_set.find('[name="title"]').val(set_data.title);
if(set_data.hidden == false){
j_set.find('[name="hidden"]').val(0);
@@ -653,7 +655,7 @@ var manage = new function(){
j_set.find('[name="hidden"]').val(1);
}
});
- j_set.on('hide',function(e){
+ j_set.on('hide.bs.modal',function(e){
j_set.find('input').val('');
});
j_set.find('button.submit').on('click',function(e){
diff --git a/src/js/notice.js b/src/js/notice.js
index f7a4f41..4389d40 100644
--- a/src/js/notice.js
+++ b/src/js/notice.js
@@ -14,7 +14,7 @@ var notice = new function(){
}
j_noticetag = $('#index_paneltag > div.notice');
- j_noticelist = $('#index_panel > div.notice > ul.nav');
+ j_noticelist = $('#index_panel > div.notice');
j_noticetag.on('click',function(e){
j_noticelist.empty();
@@ -31,12 +31,12 @@ var notice = new function(){
for(i = 0;i < data.length;i++){
notice = data[i];
- j_item = $('<li><a><h5></h5><p></p></a></li>');
+ j_item = $('<a class="list-group-item"><h5></h5><p></p></a>');
j_item.find('h5').text(notice.title);
j_item.find('p').text(notice.content);
if(notice.noticemodid == null){
- j_item.find('a').attr('href','/toj' + notice.metadata);
+ j_item.attr('href','/toj' + notice.metadata);
}
j_noticelist.append(j_item);
diff --git a/src/js/square.js b/src/js/square.js
index e5a75f5..64cc486 100644
--- a/src/js/square.js
+++ b/src/js/square.js
@@ -27,7 +27,7 @@ var square = new function(){
j_oper = j_box.find('div.oper');
j_oper.empty();
if(active == null){
- j_oper.append('<button class="btn btn-primary join" data-loading-text="處理中">加入</button><a class="btn open">開啓</a>');
+ j_oper.append('<button class="btn btn-primary join" data-loading-text="處理中">加入</button><a class="btn btn-default open">開啓</a>');
j_oper.find('button.join').on('click',function(e){
$(this).button('loading');
@@ -48,10 +48,10 @@ var square = new function(){
},id);
});
}else{
- if(active== true){
- j_oper.append('<button class="btn btn-success quit" data-loading-text="處理中">退出</button><a class="btn open">開啓</a>');
+ if(active == true){
+ j_oper.append('<button class="btn btn-success quit" data-loading-text="處理中">退出</button><a class="btn btn-default open">開啓</a>');
}else{
- j_oper.append('<button class="btn btn-warning quit" data-loading-text="處理中">取消申請</button><a class="btn open">開啓</a>');
+ j_oper.append('<button class="btn btn-warning quit" data-loading-text="處理中">取消申請</button><a class="btn btn-default open">開啓</a>');
}
j_oper.find('button.quit').on('click',function(e){
@@ -85,7 +85,7 @@ var square = new function(){
}
}
function box_create(id,logo,title,start_time,end_time,intro,active){
- var j_box = $('<div class="span5 box"><div class="logo"></div><h5 class="title"></h5><div class="time start"></div><div class="time end"></div><p class="intro"></p><div class="btn-group oper"></div></div>');
+ var j_box = $('<div class="col-lg-6 box"><div class="logo"></div><h5 class="title"></h5><div class="time start"></div><div class="time end"></div><p class="intro"></p><div class="btn-group oper"></div></div>');
box_set(j_box,id,logo,title,start_time,end_time,intro,active);
@@ -158,11 +158,11 @@ var square = new function(){
return;
}
- j_cate = $('<li><a href=""></a></li>');
- j_a = j_cate.find('a');
- j_a.text(cateo.catename);
- j_a.on('click',function(e){
+ j_cate = $('<a class="list-group-item" href=""></a>');
+ j_cate.text(cateo.catename);
+ j_cate.on('click',function(e){
$(window).scrollTop(j_indexlist.find('[cateid="' + cateo.cateid + '"]').offset().top - 66);
+
return false;
});
j_catelist.append(j_cate);
@@ -235,7 +235,7 @@ var square = new function(){
square_node.child_delayset('index');
com.loadpage('/toj/html/square.html','/toj/css/square.css').done(function(){
- j_catelist = j_index_page.find('ul.catelist');
+ j_catelist = j_index_page.find('div.catelist');
j_indexlist = j_index_page.find('div.indexlist');
if(user.uid != null){
diff --git a/src/pmod/pmod_test/css/manage.less b/src/pmod/pmod_test/css/manage.less
index 3c7fd79..bce8ffc 100644
--- a/src/pmod/pmod_test/css/manage.less
+++ b/src/pmod/pmod_test/css/manage.less
@@ -4,7 +4,7 @@
#index_page{
div.create_mode,div.set_mode{
div.block{
- margin-bottom:@MediumPad;
+ margin-bottom:@BigPad;
div.data{
height:256px;
diff --git a/src/pmod/pmod_test/html/manage.html b/src/pmod/pmod_test/html/manage.html
index b4ab4d8..47553ec 100644
--- a/src/pmod/pmod_test/html/manage.html
+++ b/src/pmod/pmod_test/html/manage.html
@@ -1,215 +1,265 @@
-<link href="/toj/pmod/pmod_test/css/manage.css" rel="stylesheet">
-
-<div class="modal hide fade medium_modal create_mode">
- <div class="modal-header">
- <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
- <h3>建立模式</h3>
- </div>
- <div class="modal-body container-fluid">
- <div class="row-fluid">
- <div class="span7">
- <label>測試名稱</label>
- <select name="testmode"></select>
+<div class="modal fade medium-modal create_mode">
+ <div class="modal-dialog">
+ <div class="modal-content">
+ <div class="modal-header">
+ <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+ <h3>建立模式</h3>
</div>
- </div>
+ <div class="modal-body">
+ <div class="row">
+ <div class="col-lg-3">
+ <label>測試名稱</label>
+ <select class="form-control" name="testmode"></select>
+ </div>
+ </div><br>
- <div class="block content">
- <div class="row-fluid">
- <div class="input-prepend span13">
- <span class="add-on">題目內容</span>
- <input class="span2 title" type="text" value="內容" placeholder="區塊標題">
+ <div class="block content">
+ <div class="row">
+ <div class="input-group col-lg-13">
+ <span class="input-group-addon">題目內容</span>
+ <input class="col-lg-2 form-control title" type="text" value="內容" placeholder="區塊標題">
+ </div>
+ </div><br>
+ <div class="row">
+ <div class="col-lg-13">
+ <div class="data"></div>
+ </div>
+ </div>
</div>
- </div>
- <div class="row-fluid">
- <div class="span13">
- <div class="data"></div>
- </div>
- </div>
- </div>
- <div class="block format">
- <div class="row-fluid">
- <div class="input-prepend span13">
- <span class="add-on">格式說明</span>
- <input class="span2 title" type="text" value="I/O格式" placeholder="區塊標題">
- </div>
- </div>
- <div class="row-fluid">
- <div class="span13">
- <div class="data"></div>
+ <div class="block format">
+ <div class="row">
+ <div class="input-group col-lg-13">
+ <span class="input-group-addon">格式說明</span>
+ <input class="col-lg-2 form-control title" type="text" value="I/O格式" placeholder="區塊標題">
+ </div>
+ </div><br>
+ <div class="row">
+ <div class="col-lg-13">
+ <div class="data"></div>
+ </div>
+ </div>
</div>
- </div>
- </div>
-
- <div class="block testdata">
- <div class="row-fluid">
- <div class="input-prepend span13">
- <span class="add-on">範例資料</span>
- <input class="span2 title" type="text" value="範例測資" placeholder="區塊標題">
+
+ <div class="block testdata">
+ <div class="row">
+ <div class="input-group col-lg-13">
+ <span class="input-group-addon">範例資料</span>
+ <input class="col-lg-2 form-control title" type="text" value="範例測資" placeholder="區塊標題">
+ </div>
+ </div><br>
+ <div class="row">
+ <div class="col-lg-13">
+ <div class="data"></div>
+ </div>
+ </div>
</div>
</div>
- <div class="row-fluid">
- <div class="span13">
- <div class="data"></div>
- </div>
+ <div class="modal-footer">
+ <button class="btn btn-primary submit">確定</button>
+ <button class="btn btn-default cancel">取消</button>
</div>
- </div> </div>
- <div class="modal-footer">
- <button class="btn btn-primary submit">確定</button>
- <button class="btn cancel">取消</button>
+ </div>
</div>
</div>
-<div class="modal hide fade medium_modal set_mode">
- <div class="modal-header">
- <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
- <h3>設定模式</h3>
- </div>
- <div class="modal-body container-fluid">
- <div class="row-fluid">
- <div class="span7">
- <label>測試名稱</label>
- <select name="testmode"></select>
+<div class="modal fade medium-modal set_mode">
+ <div class="modal-dialog">
+ <div class="modal-content">
+ <div class="modal-header">
+ <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+ <h3>設定模式</h3>
</div>
- </div>
+ <div class="modal-body">
+ <div class="row">
+ <div class="col-lg-3">
+ <label>測試名稱</label>
+ <select class="form-control" name="testmode"></select>
+ </div>
+ </div><br>
- <div class="block content">
- <div class="row-fluid">
- <div class="input-prepend span13">
- <span class="add-on">題目內容</span>
- <input class="span2 title" type="text" placeholder="區塊標題">
+ <div class="block content">
+ <div class="row">
+ <div class="input-group col-lg-13">
+ <span class="input-group-addon">題目內容</span>
+ <input class="col-lg-2 form-control title" type="text" placeholder="區塊標題">
+ </div>
+ </div><br>
+ <div class="row">
+ <div class="col-lg-13">
+ <div class="data"></div>
+ </div>
+ </div>
</div>
- </div>
- <div class="row-fluid">
- <div class="span13">
- <div class="data"></div>
+
+ <div class="block format">
+ <div class="row">
+ <div class="input-group col-lg-13">
+ <span class="input-group-addon">格式說明</span>
+ <input class="col-lg-2 form-control title" type="text" placeholder="區塊標題">
+ </div>
+ </div><br>
+ <div class="row">
+ <div class="col-lg-13">
+ <div class="data"></div>
+ </div>
+ </div>
</div>
+
+ <div class="block testdata">
+ <div class="row">
+ <div class="input-group col-lg-13">
+ <span class="input-group-addon">範例資料</span>
+ <input class="col-lg-2 form-control title" type="text" placeholder="區塊標題">
+ </div>
+ </div><br>
+ <div class="row">
+ <div class="col-lg-13">
+ <div class="data"></div>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="modal-footer">
+ <button class="btn btn-primary submit">確定</button>
+ <button class="btn btn-default cancel">取消</button>
</div>
</div>
-
- <div class="block format">
- <div class="row-fluid">
- <div class="input-prepend span13">
- <span class="add-on">格式說明</span>
- <input class="span2 title" type="text" placeholder="區塊標題">
- </div>
+ </div>
+</div>
+<div class="modal fade medium-modal create_testmode">
+ <div class="modal-dialog">
+ <div class="modal-content">
+ <div class="modal-header">
+ <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+ <h3>建立測試</h3>
</div>
- <div class="row-fluid">
- <div class="span13">
- <div class="data"></div>
+ <div class="modal-body row">
+ <div class="col-lg-7">
+ <label>測試名稱</label>
+ <input class="form-control" type="text" name="name"><br>
+ <label>執行時間限制</label>
+ <input class="form-control" type="text" name="timelimit"><br>
+ <label>記憶體限制</label>
+ <input class="form-control" type="text" name="memlimit">
</div>
</div>
+ <div class="modal-footer">
+ <button class="btn btn-primary submit">確定</button>
+ <button class="btn btn-default cancel">取消</button>
+ </div>
</div>
-
- <div class="block testdata">
- <div class="row-fluid">
- <div class="input-prepend span13">
- <span class="add-on">範例資料</span>
- <input class="span2 title" type="text" placeholder="區塊標題">
- </div>
+ </div>
+</div>
+<div class="modal fade medium-modal set_testmode">
+ <div class="modal-dialog">
+ <div class="modal-content">
+ <div class="modal-header">
+ <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+ <h3>設定測試</h3>
</div>
- <div class="row-fluid">
- <div class="span13">
- <div class="data"></div>
+ <div class="modal-body row">
+ <div class="col-lg-7">
+ <label>測試名稱</label>
+ <input class="form-control" type="text" name="name"><br>
+ <label>執行時間限制</label>
+ <input class="form-control" type="text" name="timelimit"><br>
+ <label>記憶體限制</label>
+ <input class="form-control" type="text" name="memlimit">
</div>
</div>
+ <div class="modal-footer">
+ <button class="btn btn-primary submit">確定</button>
+ <button class="btn btn-default cancel">取消</button>
+ </div>
</div>
</div>
- <div class="modal-footer">
- <button class="btn btn-primary submit">確定</button>
- <button class="btn cancel">取消</button>
- </div>
</div>
-
-<div class="modal hide fade medium_modal create_testmode">
- <div class="modal-header">
- <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
- <h3>建立測試</h3>
- </div>
- <div class="modal-body container-fluid">
- <div class="row-fluid">
- <div class="span7">
- <label>測試名稱</label>
- <input type="text" name="name">
- <label>執行時間限制</label>
- <input type="text" name="timelimit">
- <label>記憶體限制</label>
- <input type="text" name="memlimit">
+<div class="modal fade medium-modal create_testdata">
+ <div class="modal-dialog">
+ <div class="modal-content">
+ <div class="modal-header">
+ <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+ <h3>建立測試資料</h3>
+ </div>
+ <div class="modal-body row">
+ <div class="col-lg-7">
+ <label>描述</label>
+ <input class="form-control" type="text" name="info"><br>
+ <label>檔案</label>
+ <input class="form-control" type="file" name="pack">
+ </div>
+ </div>
+ <div class="modal-footer">
+ <button class="btn btn-primary submit">確定</button>
+ <button class="btn btn-default cancel">取消</button>
</div>
</div>
</div>
- <div class="modal-footer">
- <button class="btn btn-primary submit">確定</button>
- <button class="btn cancel">取消</button>
- </div>
</div>
-<div class="modal hide fade medium_modal set_testmode">
- <div class="modal-header">
- <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
- <h3>設定測試</h3>
- </div>
- <div class="modal-body container-fluid">
- <div class="row-fluid">
- <div class="span7">
- <label>測試名稱</label>
- <input type="text" name="name">
- <label>執行時間限制</label>
- <input type="text" name="timelimit">
- <label>記憶體限制</label>
- <input type="text" name="memlimit">
+<div class="modal fade medium-modal set_testdata">
+ <div class="modal-dialog">
+ <div class="modal-content">
+ <div class="modal-header">
+ <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+ <h3>設定測試資料</h3>
+ </div>
+ <div class="modal-body row">
+ <div class="col-lg-7">
+ <label>描述</label>
+ <input class="form-control" type="text" name="info"><br>
+ <label>檔案(留空表示不更新)</label>
+ <input class="form-control" type="file" name="pack">
+ </div>
+ </div>
+ <div class="modal-footer">
+ <button class="btn btn-primary submit">確定</button>
+ <button class="btn btn-default cancel">取消</button>
</div>
</div>
</div>
- <div class="modal-footer">
- <button class="btn btn-primary submit">確定</button>
- <button class="btn cancel">取消</button>
- </div>
</div>
-
<div class="row">
- <div class="span3">
-
- </div>
- <div class="span4">
+ <div class="col-lg-4 col-offset-1">
<h3>模式</h3>
- <button class="btn create_mode">建立模式</button>
+ <button class="btn btn-default create_mode">建立模式</button>
<table class="table mode">
<thead>
<tr>
- <th class="span1">#</th>
- <th class="span2">測試名稱</th>
- <th class="span1"></th>
+ <th class="col-lg-1">#</th>
+ <th class="col-lg-2">測試名稱</th>
+ <th class="col-lg-1"></th>
</tr>
</thead>
<tbody></tbody>
</table>
</div>
- <div class="span4">
+ <div class="col-lg-4">
<h3>測試</h3>
- <button class="btn create_testmode">建立測試</button>
+ <button class="btn btn-default create_testmode">建立測試</button>
<table class="table testmode">
<thead>
<tr>
- <th class="span1">#</th>
- <th class="span2">測試名稱</th>
- <th class="span1"></th>
+ <th class="col-lg-1">#</th>
+ <th class="col-lg-2">測試名稱</th>
+ <th class="col-lg-1"></th>
</tr>
</thead>
<tbody></tbody>
</table>
</div>
- <div class="span2">
+ <div class="col-lg-4">
<h3>測試資料</h3>
- <button class="btn create_testdata">建立測試資料</button>
+ <button class="btn btn-default create_testdata">建立測試資料</button>
<table class="table testdata">
<thead>
<tr>
- <th class="span1">#</th>
- <th class="span1"></th>
+ <th class="col-lg-1">#</th>
+ <th class="col-lg-2">描述</th>
+ <th class="col-lg-1"></th>
</tr>
</thead>
<tbody></tbody>
</table>
</div>
-
</div>
diff --git a/src/pmod/pmod_test/html/view.html b/src/pmod/pmod_test/html/view.html
index 989f344..4f37af6 100644
--- a/src/pmod/pmod_test/html/view.html
+++ b/src/pmod/pmod_test/html/view.html
@@ -1,18 +1,22 @@
-<div class="modal hide fade medium_modal submit">
- <div class="modal-header">
- <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
- <h3>上傳</h3>
- </div>
- <div class="modal-body container-fluid">
- </div>
- <div class="modal-footer">
- <button class="btn btn-primary submit">確定</button>
- <button class="btn cancel">取消</button>
+<div class="modal fade medium-modal submit">
+ <div class="modal-dialog">
+ <div class="modal-content">
+ <div class="modal-header">
+ <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+ <h3>上傳</h3>
+ </div>
+ <div class="modal-body row">
+ </div>
+ <div class="modal-footer">
+ <button class="btn btn-primary submit">確定</button>
+ <button class="btn cancel">取消</button>
+ </div>
+ </div>
</div>
</div>
<div class="row">
- <div class="span2 offset1 info">
+ <div class="col-lg-2 col-offset-1 info">
<button class="btn btn-primary submit">上傳</button>
<table class="table limit">
<thead>
@@ -33,5 +37,5 @@
</tbody>
</table>
</div>
- <div class="span10 offset3 content"></div>
+ <div class="col-lg-10 col-offset-3 content"></div>
</div>
diff --git a/src/pmod/pmod_test/js/pmod_test.js b/src/pmod/pmod_test/js/pmod_test.js
index 93565b4..ac3f3cc 100644
--- a/src/pmod/pmod_test/js/pmod_test.js
+++ b/src/pmod/pmod_test/js/pmod_test.js
@@ -23,6 +23,8 @@ var pmod_test = function(proid,pro_node){
var data = result.data;
var j_info;
+ console.log(result);
+
if(com.is_callerr(result)){
index.add_alert('alert-error','錯誤','讀取題目失敗');
}else{
@@ -53,8 +55,11 @@ var pmod_test = function(proid,pro_node){
var j_set_mode;
var j_create_testmode;
var j_set_testmode;
+ var j_create_testdata;
+ var j_set_testdata;
var j_mode_list;
var j_testmode_list;
+ var j_testdata_list;
var set_mode_id = null;
var set_testmode_id = null;
@@ -86,7 +91,7 @@ var pmod_test = function(proid,pro_node){
}
}
function _mode_create(modeid,testmodeid){
- var j_item = $('<tr class="item"><td class="id"></td><td class="testmode"></td><td class="oper"><div class="btn-group"><button class="btn btn-small set"><i class="icon-cog"></i></button><button class="btn btn-small del"><i class="icon-trash"></i></button></div></td></tr>')
+ var j_item = $('<tr class="item"><td class="id"></td><td class="testmode"></td><td class="oper"><div class="btn-group"><button class="btn btn-default btn-small set"><i class="glyphicon glyphicon-cog"></i></button><button class="btn btn-default btn-small del"><i class="glyphicon glyphicon-trash"></i></button></div></td></tr>');
_mode_set(j_item,modeid,testmodeid);
@@ -160,7 +165,7 @@ var pmod_test = function(proid,pro_node){
});
}
function _testmode_create(testmodeid,testmodename){
- var j_item = $('<tr class="item"><td class="id"></td><td class="name"></td><td class="oper"><div class="btn-group"><button class="btn btn-small set"><i class="icon-cog"></i></button><button class="btn btn-small del"><i class="icon-trash"></i></button></div></td></tr>')
+ var j_item = $('<tr class="item"><td class="id"></td><td class="name"></td><td class="oper"><div class="btn-group"><button class="btn btn-default btn-small set"><i class="glyphicon glyphicon-cog"></i></button><button class="btn btn-default btn-small del"><i class="glyphicon glyphicon-trash"></i></button></div></td></tr>');
_testmode_set(j_item,testmodeid,testmodename);
@@ -195,7 +200,62 @@ var pmod_test = function(proid,pro_node){
return defer.promise();
}
+
+ function _testdata_set(j_item,id,info){
+ j_item.find('td.id').text(id);
+ j_item.find('td.info').text(info);
+
+ j_item.find('button.set').off('click').on('click',function(e){
+ set_testdata_id = id;
+ j_set_testdata.modal('show');
+ });
+ j_item.find('button.del').off('click').on('click',function(e){
+ com.call_backend(callpath,'del_testdata',function(result){
+ if(com.is_callerr(result)){
+ index.add_alert('','警告','管理發生錯誤');
+ }else{
+ _update();
+ }
+ },id);
+ });
+ }
+ function _testdata_create(id,info){
+ var j_item = $('<tr class="item"><td class="id"></td><td class="info"></td><td class="oper"><div class="btn-group"><button class="btn btn-default btn-small set"><i class="glyphicon glyphicon-cog"></i></button><button class="btn btn-default btn-small del"><i class="glyphicon glyphicon-trash"></i></button></div></td></tr>');
+
+ _testdata_set(j_item,id,info);
+
+ return j_item;
+ }
+ function _testdata_update(){
+ var defer = $.Deferred();
+
+ com.call_backend(callpath,'list_testdata',function(result){
+ var i;
+ var data = result.data;
+ var testdatao;
+ var j_item;
+
+ if(com.is_callerr(result)){
+ index.add_alert('','警告','管理發生錯誤');
+ }else{
+ j_testdata_list.empty();
+ for(i = 0;i < data.length;i++){
+ testdatao = data[i];
+
+ j_item = _testdata_create(testdatao.testid,
+ testdatao.info);
+ j_testdata_list.append(j_item);
+ }
+
+ defer.resolve(data);
+ }
+ });
+
+ return defer.promise();
+ }
+
function _update(){
+ _testdata_update();
_testmode_update().done(_mode_update);
}
function _mix_content(j_box){
@@ -273,16 +333,17 @@ var pmod_test = function(proid,pro_node){
}
if(direct == 'in'){
- com.loadpage('/toj/pmod/pmod_test/html/manage.html').done(function(){
+ com.loadpage('/toj/pmod/pmod_test/html/manage.html','/toj/pmod/pmod_test/css/manage.css').done(function(){
j_mode_list = j_index_page.find('table.mode > tbody');
j_testmode_list = j_index_page.find('table.testmode > tbody');
+ j_testdata_list = j_index_page.find('table.testdata > tbody');
j_create_mode = j_index_page.find('div.create_mode');
j_create_mode.find('div.content div.data').codebox({'mode':'text/html'});
j_create_mode.find('div.format div.data').codebox({'mode':'text/html'});
j_create_mode.find('div.testdata div.data').codebox({'mode':'text/html'});
- j_create_mode.on('shown',function(e){
+ j_create_mode.on('shown.bs.modal',function(e){
var i;
var codeboxs;
@@ -291,7 +352,7 @@ var pmod_test = function(proid,pro_node){
$(codeboxs[i]).data('codebox').refresh();
}
});
- j_create_mode.on('hide',function(e){
+ j_create_mode.on('hide.bs.modal',function(e){
var i;
var codeboxs;
@@ -324,7 +385,6 @@ var pmod_test = function(proid,pro_node){
j_create_mode.find('button.cancel').on('click',function(e){
j_create_mode.modal('hide');
});
-
j_index_page.find('button.create_mode').on('click',function(e){
j_create_mode.modal('show');
});
@@ -334,7 +394,7 @@ var pmod_test = function(proid,pro_node){
j_set_mode.find('div.format div.data').codebox({'mode':'text/html'});
j_set_mode.find('div.testdata div.data').codebox({'mode':'text/html'});
- j_set_mode.on('show',function(e){
+ j_set_mode.on('show.bs.modal',function(e){
com.call_backend(callpath,'get_mode',function(result){
var data = result.data;
var parse_content;
@@ -352,7 +412,7 @@ var pmod_test = function(proid,pro_node){
}
},set_mode_id);
});
- j_set_mode.on('shown',function(e){
+ j_set_mode.on('shown.bs.modal',function(e){
var i;
var codeboxs;
@@ -361,7 +421,7 @@ var pmod_test = function(proid,pro_node){
$(codeboxs[i]).data('codebox').refresh();
}
});
- j_set_mode.on('hide',function(e){
+ j_set_mode.on('hide.bs.modal',function(e){
var i;
var codeboxs;
@@ -400,7 +460,7 @@ var pmod_test = function(proid,pro_node){
});
j_create_testmode = j_index_page.find('div.create_testmode');
- j_create_testmode.on('hide',function(e){
+ j_create_testmode.on('hide.bs.modal',function(e){
j_create_testmode.find('input').val('');
});
j_create_testmode.find('button.submit').on('click',function(e){
@@ -422,9 +482,12 @@ var pmod_test = function(proid,pro_node){
j_create_testmode.find('button.cancel').on('click',function(e){
j_create_testmode.modal('hide');
});
+ j_index_page.find('button.create_testmode').on('click',function(e){
+ j_create_testmode.modal('show');
+ });
j_set_testmode = j_index_page.find('div.set_testmode');
- j_set_testmode.on('show',function(e){
+ j_set_testmode.on('show.bs.modal',function(e){
com.call_backend(callpath,'get_testmode',function(result){
var data = result.data;
@@ -437,7 +500,7 @@ var pmod_test = function(proid,pro_node){
}
},set_testmode_id);
});
- j_set_testmode.on('hide',function(e){
+ j_set_testmode.on('hide.bs.modal',function(e){
set_testmode_id = null;
});
j_set_testmode.find('button.submit').on('click',function(e){
@@ -454,6 +517,7 @@ var pmod_test = function(proid,pro_node){
index.add_alert('alert-success','成功','測試已設定');
j_set_testmode.modal('hide');
+ _update();
}
},set_testmode_id,name,timelimit,memlimit);
@@ -462,9 +526,74 @@ var pmod_test = function(proid,pro_node){
j_set_testmode.modal('hide');
});
- j_index_page.find('button.create_testmode').on('click',function(e){
- j_create_testmode.modal('show');
+
+ j_create_testdata = j_index_page.find('div.create_testdata');
+ j_create_testdata.on('hide.bs.modal',function(e){
+ j_create_testdata.find('input').val('');
});
+ j_create_testdata.find('button.submit').on('click',function(e){
+ var info = j_create_testdata.find('[name="info"]').val();
+ var blob = j_create_testdata.find('[name="pack"]')[0].files[0];
+
+ com.sendfile_backend(blob,function(filekey){
+
+ com.call_backend(callpath,'add_testdata',function(result){
+ console.log(result);
+
+ if(com.is_callerr(result)){
+ index.add_alert('','警告','管理發生錯誤');
+ }else{
+ index.add_alert('alert-success','成功','測試資料已建立');
+ j_create_testdata.modal('hide');
+
+ _update();
+ }
+ },info,filekey);
+
+ },function(result){});
+ });
+ j_create_testdata.find('button.cancel').on('click',function(e){
+ j_create_testdata.modal('hide');
+ });
+ j_index_page.find('button.create_testdata').on('click',function(e){
+ j_create_testdata.modal('show');
+ });
+
+ j_set_testdata = j_index_page.find('div.set_testdata');
+ j_set_testdata.on('show.bs.modal',function(e){
+ com.call_backend(callpath,'get_testdata',function(result){
+ var data = result.data;
+
+ if(com.is_callerr(result)){
+ index.add_alert('','警告','管理發生錯誤');
+ }else{
+ j_set_testdata.find('[name="info"]').val(data.info);
+ }
+ },set_testdata_id);
+ });
+ j_set_testdata.on('hide.bs.modal',function(e){
+ set_testdata_id = null;
+ });
+ j_set_testdata.find('button.submit').on('click',function(e){
+ var info = j_set_testdata.find('[name="info"]').val();
+
+ com.call_backend(callpath,'set_testdata',function(result){
+ var data = result.data;
+
+ if(com.is_callerr(result)){
+ index.add_alert('','警告','管理發生錯誤');
+ }else{
+ index.add_alert('alert-success','成功','測試資料已設定');
+ j_set_testdata.modal('hide');
+
+ _update();
+ }
+ },set_testdata_id,info,null);
+ });
+ j_set_testdata.find('button.cancel').on('click',function(e){
+ j_set_testdata.modal('hide');
+ });
+
_update();
});