[Notice] Announcing the End of Demo Server [Read me]

apply markup projectSetting
@05b8a89c39bfb1090e053a29522f98da5ed9be38
--- app/views/main.scala.html
+++ app/views/main.scala.html
... | ... | @@ -1,11 +1,14 @@ |
1 | 1 |
@(title:String, project:Project)(content: Html) |
2 | 2 |
|
3 | 3 |
@layout(Messages(title))("") { |
4 |
- @topmenu(project) |
|
4 |
+ <header class="gnb-outer"> |
|
5 |
+ @topmenu(project) |
|
6 |
+ <div class="sub-menu-sp"></div> |
|
7 |
+ @sidemenu(project) |
|
8 |
+ </header> |
|
5 | 9 |
<div class="container page-wrap"> |
6 | 10 |
<div class="page"> |
7 | 11 |
@views.html.alert() |
8 |
- |
|
9 | 12 |
@content |
10 | 13 |
</div> |
11 | 14 |
</div> |
--- app/views/milestone/list.scala.html
+++ app/views/milestone/list.scala.html
... | ... | @@ -34,6 +34,7 @@ |
34 | 34 |
} |
35 | 35 |
|
36 | 36 |
@project.projectMngMain(title, projectInst) { |
37 |
+ <h1 class="page-title"><span class="gray">@projectInst.owner/@projectInst.name/</span>Milestone</h1> |
|
37 | 38 |
<div> |
38 | 39 |
<div style="position: relative;"> |
39 | 40 |
<ul class="nav nav-tabs" id="milestone_list"> |
--- app/views/project/projectMngMain.scala.html
+++ app/views/project/projectMngMain.scala.html
... | ... | @@ -1,8 +1,21 @@ |
1 |
-@(title: String, projectInst:Project)(content: Html) |
|
1 |
+@(title: String, project:Project)(content: Html) |
|
2 | 2 |
|
3 |
-@main(Messages(title), projectInst) { |
|
4 |
- |
|
5 |
- @views.html.project.sidebar(title, projectInst) |
|
6 |
- @views.html.alert() |
|
7 |
- @content |
|
3 |
+@layout(Messages(title))("") { |
|
4 |
+ <header class="gnb-outer"> |
|
5 |
+ @topmenu(project) |
|
6 |
+ <div class="sub-menu-sp"></div> |
|
7 |
+ @submenu(title, project) |
|
8 |
+ @sidemenu(project) |
|
9 |
+ </header> |
|
10 |
+ <div class="container page-wrap"> |
|
11 |
+ <div class="page"> |
|
12 |
+ @views.html.alert() |
|
13 |
+ @content |
|
14 |
+ </div> |
|
15 |
+ </div> |
|
16 |
+ <footer class="page-footer-outer"> |
|
17 |
+ <div class="page-footer"> |
|
18 |
+ <span class="provider">Powered by <strong>nFORGE.</strong></span> |
|
19 |
+ </div> |
|
20 |
+ </footer> |
|
8 | 21 |
} |
--- app/views/project/setting.scala.html
+++ app/views/project/setting.scala.html
... | ... | @@ -5,192 +5,94 @@ |
5 | 5 |
|
6 | 6 |
|
7 | 7 |
@projectMngMain(message, projectInst) { |
8 |
- <h1 class="page-title"><span class="gray">K16wire/nforge4/</span>Setting</h1> |
|
9 |
- <div class="bubble-wrap gray"> |
|
10 |
- <form class="nm" action="/project-save" method="post"> |
|
11 |
- <div class="box-wrap top clearfix"> |
|
12 |
- <div class="setting-box left"> |
|
13 |
- <div class="logo-wrap"> |
|
14 |
- <img src="/images/bg-default-project.png" alt="project-logo"> |
|
15 |
- </div> |
|
16 |
- <div class="logo-desc"> |
|
17 |
- <ul class="unstyled descs"> |
|
18 |
- <li><strong>LOGO</strong></li> |
|
19 |
- <li>파일형식 <span class="point">bmp, jpg, gif, png</span></li> |
|
20 |
- <li>파일크기 <span class="point">1MB (이하)</span></li> |
|
21 |
- <li>사이즈 <span class="point">234px * 168px</span></li> |
|
22 |
- <li> |
|
23 |
- <div class="ns-btn fake-file-wrap"><i class="ico ico-plus-blue"></i>UPLOAD |
|
24 |
- <input type="file" class="file"> |
|
25 |
- </div> |
|
26 |
- </li> |
|
27 |
- </ul> |
|
28 |
- </div> |
|
8 |
+ <h1 class="page-title"><span class="gray">@projectInst.owner/@projectInst.name/</span>Setting</h1> |
|
9 |
+ <div class="bubble-wrap gray"> |
|
10 |
+ <form class="nm" action="@routes.ProjectApp.saveSetting(projectInst.owner, projectInst.name)" method="post" enctype="multipart/form-data" id="saveSetting"> |
|
11 |
+ <input type="hidden" name="id" value="@projectForm("id").value.toLong"> |
|
12 |
+ <div class="box-wrap top clearfix"> |
|
13 |
+ <div class="setting-box left"> |
|
14 |
+ <div class="logo-wrap"> |
|
15 |
+ @if(projectForm("logoPath").value != null) { |
|
16 |
+ <img src="/assets/uploadFiles/@projectForm("logoPath").value" alt="project-logo"> |
|
17 |
+ } else { |
|
18 |
+ <img src="@routes.Assets.at("images/bg-default-project.png")" alt="project-logo"> |
|
19 |
+ } |
|
29 | 20 |
</div> |
30 |
- <div class="setting-box right"> |
|
31 |
- <div class="n-alert"> |
|
32 |
- <div class="n-inner"> |
|
33 |
- <span class="msg">잘못된 프로젝트 이름입니다.</span> |
|
34 |
- <a href="#!/close" class="ico btn-delete"></a> |
|
35 |
- </div> |
|
36 |
- </div> |
|
37 |
- <label for="project-name"> |
|
38 |
- <input class="text" type="text" name="project-name" placeholder="프로젝트 이름을 입력해주세요." id="project-name"> |
|
39 |
- </label> |
|
40 |
- <label for="project-desc"> |
|
41 |
- <textarea class="textarea" id="project-desc" name="project-desc" placeholder="프로젝트 설명을 입력해주세요."></textarea> |
|
42 |
- </label> |
|
21 |
+ <div class="logo-desc"> |
|
22 |
+ <ul class="unstyled descs"> |
|
23 |
+ <li><strong>LOGO</strong></li> |
|
24 |
+ <li>파일형식 <span class="point">bmp, jpg, gif, png</span></li> |
|
25 |
+ <li>파일크기 <span class="point">1MB (이하)</span></li> |
|
26 |
+ <li>사이즈 <span class="point">234px * 168px</span></li> |
|
27 |
+ <li> |
|
28 |
+ <div class="ns-btn fake-file-wrap"><i class="ico ico-plus-blue"></i>UPLOAD |
|
29 |
+ <input type="file" class="file" name="logoPath"> |
|
30 |
+ </div> |
|
31 |
+ </li> |
|
32 |
+ </ul> |
|
43 | 33 |
</div> |
44 | 34 |
</div> |
45 |
- <div class="box-wrap middle"> |
|
46 |
- <div class="cu-label">공개설정</div> |
|
47 |
- <div class="cu-desc"> |
|
48 |
- <input name="exhibition" type="radio" checked="checked" id="public" value="public" class="radio-btn"><label for="public" class="bg-radiobtn">공개</label> |
|
49 |
- <input name="exhibition" type="radio" id="private" value="private" class="radio-btn"><label for="private" class="bg-radiobtn">비공개</label> |
|
50 |
- <span class="note">비공개 프로젝트도 프로젝트 이름, 설명, 로그 등은 모든 사용자가 볼 수 있습니다.</span> |
|
35 |
+ <div class="setting-box right"> |
|
36 |
+ <div class="n-alert"> |
|
37 |
+ <div class="n-inner"> |
|
38 |
+ <span class="msg">잘못된 프로젝트 이름입니다.</span> |
|
39 |
+ <a href="#!/close" class="ico btn-delete"></a> |
|
40 |
+ </div> |
|
51 | 41 |
</div> |
52 |
- </div> |
|
53 |
- <div class="box-wrap bottom"> |
|
54 |
- <button class="btn-transparent n-btn blue med">SAVE</button> |
|
55 |
- </div> |
|
56 |
- </form> |
|
57 |
- </div> |
|
58 |
- <div class="bubble-wrap gray wp"> |
|
59 |
- <div class="n-alert project-del"> |
|
60 |
- <div class="n-inner"> |
|
61 |
- <span class="msg">프로젝트 삭제에 동의하여야 합니다.</span> |
|
62 |
- <a href="#!/close" class="ico btn-delete"></a> |
|
42 |
+ <label for="project-name"> |
|
43 |
+ <input class="text" type="text" name="name" placeholder="프로젝트 이름을 입력해주세요." id="project-name" value="@projectInst.name"> |
|
44 |
+ </label> |
|
45 |
+ <label for="project-desc"> |
|
46 |
+ <textarea class="textarea" id="project-desc" name="overview" placeholder="프로젝트 설명을 입력해주세요.">@projectInst.overview</textarea> |
|
47 |
+ </label> |
|
63 | 48 |
</div> |
64 | 49 |
</div> |
65 |
- <div class="cu-label">프로젝트 삭제</div> |
|
66 |
- <div class="cu-desc"> |
|
67 |
- <p><strong class="notice">프로젝트를 삭제하게되면 코드, 위키, 이슈관리 등 모든 데이터가 삭제되며 한번 삭제된 데이터는 복구가 불가능합니다.</strong></p> |
|
68 |
- <p><input type="checkbox" class="checkbox" autocomplete="off" id="agreement"><label for="agreement" class="bg-checkbox">프로젝트를 삭제하는데 동의 합니다.</label> |
|
69 |
- <a href="/project-delete" class="n-btn small black"><i class="ico ico-delete-small"></i>DELETE YOUR PROJECT</a> |
|
70 |
- </p> |
|
50 |
+ <div class="box-wrap middle"> |
|
51 |
+ <div class="cu-label">공개설정</div> |
|
52 |
+ <div class="cu-desc"> |
|
53 |
+ <input name="share_option" type="radio" checked="checked" id="public" value="true" class="radio-btn"><label for="public" class="bg-radiobtn">공개</label> |
|
54 |
+ <input name="share_option" type="radio" id="private" value="false" class="radio-btn"><label for="private" class="bg-radiobtn">비공개</label> |
|
55 |
+ <span class="note">비공개 프로젝트도 프로젝트 이름, 설명, 로그 등은 모든 사용자가 볼 수 있습니다.</span> |
|
56 |
+ </div> |
|
71 | 57 |
</div> |
72 |
- </div> |
|
73 |
- |
|
74 |
- |
|
75 |
- |
|
76 |
- |
|
77 |
- |
|
78 |
- |
|
79 |
- @form(action = routes.ProjectApp.saveSetting(projectInst.owner, projectInst.name), 'class -> "form-horizontal", 'enctype -> "multipart/form-data", 'id -> "saveSetting"){ |
|
80 |
- <div class="row"> |
|
81 |
- <fieldset> |
|
82 |
- <input type="hidden" name="id" value="@projectForm("id").value.toLong"> |
|
83 |
- <div class="icon-question-sign" href = "#" id="project_name" rel="popover" |
|
84 |
- data-content="@Messages("project.name.alert")" |
|
85 |
- data-original-title="@Messages("project.name.rule")" |
|
86 |
- ></div> |
|
87 |
- @inputText( |
|
88 |
- projectForm("name"), |
|
89 |
- '_label -> Messages("project.name"), |
|
90 |
- '_help -> Messages("input.mandatory") |
|
91 |
- ) |
|
92 |
- <div class="alert alert-danger hide" id="nameAlert"> |
|
93 |
- <a class="close" data-dismiss="alert">×</a> |
|
94 |
- <strong>@Messages("project.name.alert")</strong> |
|
95 |
- </div> |
|
96 |
- |
|
97 |
- @textarea( |
|
98 |
- projectForm("overview"), |
|
99 |
- '_label -> Messages("project.description"), |
|
100 |
- '_help -> Messages("input.optional") |
|
101 |
- ) |
|
102 |
- |
|
103 |
- <div class="thumbnail"> |
|
104 |
- @if(projectForm("logoPath").value != null) { |
|
105 |
- <img src="http://localhost:9000/assets/uploadFiles/@projectForm("logoPath").value" alt="" width="234" height="168"> |
|
106 |
- |
|
107 |
- } else { |
|
108 |
- <img src="@routes.Assets.at("images/project_image_default.jpg")" alt="" width="234" height="168"> |
|
109 |
- } |
|
110 |
- <p>@Messages("project.logo.type")</p> |
|
111 |
- <p>@Messages("project.logo.fileSize")</p> |
|
112 |
- <p>@Messages("project.logo.size")</p> |
|
113 |
- </div> |
|
114 |
- |
|
115 |
- @inputFile( |
|
116 |
- projectForm("logoPath"), |
|
117 |
- '_label -> Messages("project.logo") |
|
118 |
- ) |
|
119 |
- <div class="alert alert-danger hide" id="logoTypeAlert"> |
|
120 |
- <a class="close" data-dismiss="alert">×</a> |
|
121 |
- <strong>@Messages("project.logo.alert")</strong> |
|
122 |
- </div> |
|
123 |
- |
|
124 |
- <div class="icon-question-sign" href = "#" id="share_option_explanation" rel="popover" |
|
125 |
- data-content="@Messages("project.shareOption.private.description")" |
|
126 |
- data-original-title="@Messages("project.shareOption")" |
|
127 |
- ></div> |
|
128 |
- @inputRadioGroup( |
|
129 |
- projectForm("share_option"), |
|
130 |
- options = options("false"->Messages("project.shareOption.private"), "true"->Messages("project.shareOption.public")), |
|
131 |
- '_label -> Messages("project.shareOption") |
|
132 |
- ) |
|
133 |
- @inputRadioGroup( |
|
134 |
- projectForm("isAuthorEditable"), |
|
135 |
- options = options("false"->Messages("project.isAuthorEditable.off"), "true"->Messages("project.isAuthorEditable.on")), |
|
136 |
- '_label -> Messages("project.isAuthorEditable") |
|
137 |
- ) |
|
138 |
- |
|
139 |
- @inputText( |
|
140 |
- projectForm("siteurl"), |
|
141 |
- '_label -> Messages("project.siteurl"), |
|
142 |
- '_showConstraints -> false |
|
143 |
- ) |
|
144 |
- <div class="alert alert-danger hide" id="urlAlert"> |
|
145 |
- <a class="close" data-dismiss="alert">×</a> |
|
146 |
- <strong>@Messages("project.siteurl.alert")</strong> |
|
147 |
- </div> |
|
148 |
- </fieldset> |
|
149 |
- </div> |
|
150 |
- <div class="row"> |
|
151 |
- <div class="actions"> |
|
152 |
- <input type="submit" class="btn btn-primary" value="@Messages("button.save")" id="save"> |
|
58 |
+ <div class="box-wrap bottom"> |
|
59 |
+ <button class="btn-transparent n-btn blue med" type="submit">SAVE</button> |
|
153 | 60 |
</div> |
154 |
- </div> |
|
155 |
- } |
|
156 |
- |
|
157 |
- <div class="alert alert-danger hide" id="acceptAlert"> |
|
158 |
- <a class="close" data-dismiss="alert">×</a> |
|
159 |
- <strong>@Messages("project.delete.alert")</strong> |
|
61 |
+ <!-- 현재 레이아웃에 존재하지 않는 기능 --> |
|
62 |
+ <input type="hidden" name="isAuthorEditable" value="true"/> |
|
63 |
+ <input type="hidden" name="siteurl" value="@routes.ProjectApp.project(projectInst.owner, projectInst.name)"/> |
|
64 |
+ </form> |
|
160 | 65 |
</div> |
161 |
- <table class="table table-bordered"> |
|
162 |
- <thead> |
|
163 |
- <tr> |
|
164 |
- <th><strong>@Messages("project.delete")</strong></th> |
|
165 |
- </tr> |
|
166 |
- </thead> |
|
167 |
- <tbody> |
|
168 |
- <tr> |
|
169 |
- <td> |
|
170 |
- <p align="left"><strong>@Messages("project.delete.description")</strong></p> |
|
171 |
- <p align="right"> |
|
172 |
- <input type="checkbox" id="accept"> <span>@Messages("project.delete.accept")</span> |
|
173 |
- </p> |
|
174 |
- <a id="deletion" data-toggle="modal" href="#alertDeletion" class="btn btn-danger">@Messages("project.delete")</a> |
|
175 |
- </td> |
|
176 |
- </tr> |
|
177 |
- </tbody> |
|
178 |
- </table> |
|
179 |
- |
|
180 |
- <div class="modal hide" id="alertDeletion"> |
|
181 |
- <div class="modal-header"> |
|
182 |
- <button type="button" class="close" data-dismiss="modal">×</button> |
|
183 |
- <h3>@Messages("project.delete.requestion")</h3> |
|
66 |
+ <div class="bubble-wrap gray wp"> |
|
67 |
+ <div class="n-alert project-del"> |
|
68 |
+ <div class="n-inner hide" id="acceptAlert"> |
|
69 |
+ <span class="msg">프로젝트 삭제에 동의하여야 합니다.</span> |
|
70 |
+ <a class="ico btn-delete" data-dismiss="alert"></a> |
|
71 |
+ </div> |
|
184 | 72 |
</div> |
185 |
- <div class="modal-body"> |
|
186 |
- <p> @Messages("project.delete.description")</p> |
|
187 |
- <p> @Messages("project.delete.reaccept") </p> |
|
188 |
- </div> |
|
189 |
- <div class="modal-footer"> |
|
190 |
- <a href="#" class="btn" data-dismiss="modal">@Messages("button.no")</a> |
|
191 |
- <a href="@routes.ProjectApp.deleteProject(projectInst.owner, projectInst.name)" class="btn btn-danger">@Messages("button.yes")</a> |
|
73 |
+ <div class="cu-label">프로젝트 삭제</div> |
|
74 |
+ <div class="cu-desc"> |
|
75 |
+ <p><strong class="notice">프로젝트를 삭제하게되면 코드, 위키, 이슈관리 등 모든 데이터가 삭제되며 한번 삭제된 데이터는 복구가 불가능합니다.</strong></p> |
|
76 |
+ <p><input type="checkbox" class="checkbox" autocomplete="off" id="accept"><label for="agreement" class="bg-checkbox">프로젝트를 삭제하는데 동의 합니다.</label> |
|
77 |
+ <a id="deletion" data-toggle="modal" href="#alertDeletion" class="n-btn small black"><i class="ico ico-delete-small"></i>DELETE YOUR PROJECT</a> |
|
78 |
+ </p> |
|
192 | 79 |
</div> |
193 | 80 |
</div> |
194 | 81 |
|
195 |
- <script>nforge.require(["project.logoCheck", "project.popovers", "project.nameCheck", "project.urlCheck", "project.acceptCheck"], "deletion");</script> |
|
82 |
+ |
|
83 |
+<div class="modal hide" id="alertDeletion"> |
|
84 |
+ <div class="modal-header"> |
|
85 |
+ <button type="button" class="close" data-dismiss="modal">×</button> |
|
86 |
+ <h3>@Messages("project.delete.requestion")</h3> |
|
87 |
+ </div> |
|
88 |
+ <div class="modal-body"> |
|
89 |
+ <p> @Messages("project.delete.description")</p> |
|
90 |
+ <p> @Messages("project.delete.reaccept") </p> |
|
91 |
+ </div> |
|
92 |
+ <div class="modal-footer"> |
|
93 |
+ <a href="#" class="btn" data-dismiss="modal">@Messages("button.no")</a> |
|
94 |
+ <a href="@routes.ProjectApp.deleteProject(projectInst.owner, projectInst.name)" class="btn btn-danger">@Messages("button.yes")</a> |
|
95 |
+ </div> |
|
96 |
+</div> |
|
97 |
+<script>nforge.require(["project.logoCheck", "project.popovers", "project.nameCheck", "project.urlCheck", "project.acceptCheck"], "deletion");</script> |
|
196 | 98 |
} |
Add a comment
Delete comment
Once you delete this comment, you won't be able to recover it. Are you sure you want to delete this comment?