+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+*/
+.cm-s-xq-light span.cm-keyword {line-height: 1em; font-weight: bold; color: #5A5CAD; }
+.cm-s-xq-light span.cm-atom {color: #6C8CD5;}
+.cm-s-xq-light span.cm-number {color: #164;}
+.cm-s-xq-light span.cm-def {text-decoration:underline;}
+.cm-s-xq-light span.cm-variable {color: black; }
+.cm-s-xq-light span.cm-variable-2 {color:black;}
+.cm-s-xq-light span.cm-variable-3 {color: black; }
+.cm-s-xq-light span.cm-property {}
+.cm-s-xq-light span.cm-operator {}
+.cm-s-xq-light span.cm-comment {color: #0080FF; font-style: italic;}
+.cm-s-xq-light span.cm-string {color: red;}
+.cm-s-xq-light span.cm-meta {color: yellow;}
+.cm-s-xq-light span.cm-error {color: #f00;}
+.cm-s-xq-light span.cm-qualifier {color: grey}
+.cm-s-xq-light span.cm-builtin {color: #7EA656;}
+.cm-s-xq-light span.cm-bracket {color: #cc7;}
+.cm-s-xq-light span.cm-tag {color: #3F7F7F;}
+.cm-s-xq-light span.cm-attribute {color: #7F007F;}
+
+.cm-s-xq-light .CodeMirror-activeline-background {background: #e8f2ff !important;}
+.cm-s-xq-light .CodeMirror-matchingbracket {border:1px solid grey;color:black !important;background:yellow;}
\ No newline at end of file
diff --git a/app/assets/stylesheets/lib/dashboards.css b/app/assets/stylesheets/lib/dashboards.css
new file mode 100644
index 0000000..5399c47
--- /dev/null
+++ b/app/assets/stylesheets/lib/dashboards.css
@@ -0,0 +1,78 @@
+#dashboards hr {
+ border-top: 1px solid #e0dfdf;
+ border-bottom: 1px solid #fefefe;
+}
+#dashboards .box {
+ margin-top: 10px;
+ margin-bottom: 10px;
+}
+#dashboards .box-header {
+ height: 20px;
+ border: 1px solid #ddd;
+ margin-bottom: -1px;
+ padding: 10px;
+ background-color: #fafafa;
+ background-image: -moz-linear-gradient(top, #fafafa, #efefef);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fafafa), to(#efefef));
+ background-image: -webkit-linear-gradient(top, #fafafa, #efefef);
+ background-image: -o-linear-gradient(top, #fafafa, #efefef);
+ background-image: linear-gradient(to bottom, #fafafa, #efefef);
+ filter: progid:dximagetransform.microsoft.gradient(startColorstr='#fafafa', endColorstr='#efefef', GradientType=0);
+ -webkit-box-shadow: none;
+ -moz-box-shadow: none;
+ box-shadow: none;
+ -webkit-border-radius: 2px 2px 0px 0px;
+ -moz-border-radius: 2px 2px 0px 0px;
+ border-radius: 2px 2px 0px 0px;
+ overflow: hidden;
+}
+#dashboards .box-header h2{
+ font-size: 16px;
+ line-height: 16px;
+ float:left;
+ margin-top: 0px;
+ color: #646464;
+ font-weight: normal;
+ text-shadow: 0px 1px 0px #fff;
+}
+#dashboards .box-header h2 i{
+ margin: 1px 0px 0px 5px;
+ text-shadow: 0px 1px 0px rgba(255, 255, 255, .9);
+}
+#dashboards .box-header .break{
+ border-left: 1px solid #fcfcfc;
+ border-right: 1px solid #ddd;
+ margin: -13px 10px -9px 10px;
+ padding: 13px 0px 9px 0px;
+
+}
+#dashboards .box-content {
+ margin-top: -1px;
+ padding: 10px;
+ border: 1px solid #ddd;
+ background: #fcfcfc;
+ -webkit-border-radius: 0px 0px 2px 2px;
+ -moz-border-radius: 0px 0px 2px 2px;
+ border-radius: 0px 0px 2px 2px;
+ -webkit-box-shadow: 0 1px 0px rgba(255, 255, 255, .6);
+ -moz-box-shadow: 0 1px 0px rgba(255, 255, 255, .6);
+ box-shadow: 0 1px 0px rgba(255, 255, 255, .6);
+}
+#dashboards .box-content .table {
+ margin-bottom: 0;
+}
+#dashboards .box-content .pager {
+ margin: 10px 0 0;
+ text-align: right;
+}
+
+
+/* Responsive */
+@media (max-width: 480px) {
+ #dashboards hr {
+ display: none;
+ }
+ #dashboards .row-fluid {
+ margin-bottom: -10px;
+ }
+}
\ No newline at end of file
diff --git a/app/assets/stylesheets/lib/filemanager.css b/app/assets/stylesheets/lib/filemanager.css
new file mode 100644
index 0000000..1240e4d
--- /dev/null
+++ b/app/assets/stylesheets/lib/filemanager.css
@@ -0,0 +1,44 @@
+body > section {
+ padding: 20px;
+}
+#panel_l {
+ width: 80%;
+}
+#panel_l .control-label {
+ margin-right: 10px;
+}
+#panel_l .controls {
+ margin-left: 0;
+}
+#panel_r {
+ width: 18%;
+ padding-left: 2%;
+}
+#panel_r .control-label {
+ float: none;
+ display: block;
+ text-align: center;
+}
+.nav-pills {
+ margin-bottom: 0;
+ padding: 20px 20px 0;
+}
+.preview-area {
+ margin-bottom: 10px;
+}
+.input-area .control-label {
+ width: auto;
+}
+#filemanager .preview-area {
+ margin-bottom: 0;
+ text-align: center;
+}
+#editform .edit_asset {
+ margin-bottom: 0;
+}
+#editform fieldset {
+ margin-bottom: 0;
+}
+#editform .input-area .control-label {
+ width: 160px;
+}
\ No newline at end of file
diff --git a/app/assets/stylesheets/lib/fileupload.css b/app/assets/stylesheets/lib/fileupload.css
new file mode 100644
index 0000000..6dafbb8
--- /dev/null
+++ b/app/assets/stylesheets/lib/fileupload.css
@@ -0,0 +1,163 @@
+.fileupload {
+ margin-bottom: 9px;
+}
+
+.fileupload .input-prepend label,
+.fileupload .input-append label {
+ display: inline;
+}
+.fileupload .input-prepend label .uneditable-input,
+.fileupload .input-append label .uneditable-input {
+ margin-left: -4px;
+ margin-right: -4px;
+}
+.fileupload .uneditable-input {
+ display: inline-block;
+ margin-bottom: 0;
+ vertical-align: top;
+ cursor: text;
+}
+
+.fileupload .thumbnail {
+ display: inline-block;
+ margin-right: 5px;
+ margin-bottom: 5px;
+ overflow: hidden;
+ text-align: center;
+ vertical-align: top;
+}
+
+.fileupload .thumbnail > img {
+ display: inline-block;
+ max-height: 200px;
+ vertical-align: top;
+}
+
+.fileupload .btn {
+ vertical-align: top;
+}
+
+.fileupload .btn-file {
+ margin-bottom: 5px;
+ position: relative;
+ overflow: hidden;
+ vertical-align: top;
+}
+
+.fileupload .btn-file > input {
+ position: absolute;
+ top: 0;
+ right: 0;
+ margin: 0;
+ font-size: 23px;
+ cursor: pointer;
+ opacity: 0;
+ filter: alpha(opacity=0);
+ transform: translate(-300px, 0) scale(4);
+ direction: ltr;
+}
+
+.fileupload-exists .fileupload-new,
+.fileupload-new .fileupload-exists {
+ display: none;
+}
+
+.fileupload .controls {
+ display: none;
+ margin-left: 0 !important;
+}
+.fileupload.fileupload-edit .controls {
+ display: inline-block;
+}
+
+.fileupload.fileupload-exists .controls {
+ display: none;
+}
+
+.fileupload-edit .btn .fileupload-exists {
+ display: block;
+}
+
+.fileupload-edit .btn .fileupload-new {
+ display: none;
+}
+
+.fileupload-inline .fileupload-controls {
+ display: inline;
+}
+
+.fileupload-new .input-append .btn-file {
+ -webkit-border-radius: 0 3px 3px 0;
+ -moz-border-radius: 0 3px 3px 0;
+ border-radius: 0 3px 3px 0;
+}
+
+.fileupload-new,
+.fileupload-preview {
+ /*max-width: 200px;*/
+ max-height: 200px;
+}
+
+.thumbnail-borderless .thumbnail {
+ padding: 0;
+ border: none;
+ -webkit-border-radius: 0;
+ -moz-border-radius: 0;
+ border-radius: 0;
+ -webkit-box-shadow: none;
+ -moz-box-shadow: none;
+ box-shadow: none;
+}
+
+.fileupload-new.thumbnail-borderless .thumbnail {
+ border: 1px solid #ddd;
+}
+
+.control-group.warning .fileupload .uneditable-input {
+ color: #a47e3c;
+ border-color: #a47e3c;
+}
+
+.control-group.warning .fileupload .fileupload-preview {
+ color: #a47e3c;
+}
+
+.control-group.warning .fileupload .thumbnail {
+ border-color: #a47e3c;
+}
+
+.control-group.error .fileupload .uneditable-input {
+ color: #b94a48;
+ border-color: #b94a48;
+}
+
+.control-group.error .fileupload .fileupload-preview {
+ color: #b94a48;
+}
+
+.control-group.error .fileupload .thumbnail {
+ border-color: #b94a48;
+}
+
+.control-group.success .fileupload .uneditable-input {
+ color: #468847;
+ border-color: #468847;
+}
+
+.control-group.success .fileupload .fileupload-preview {
+ color: #468847;
+}
+
+.control-group.success .fileupload .thumbnail {
+ border-color: #468847;
+}
+@media (min-width: 768px) and (max-width: 979px) {
+ .fileupload .input-medium {
+ width: 90px!important;
+ }
+}
+@media (max-width: 767px) {
+ .fileupload .input-medium {
+ width: 90px!important;
+ }
+}
\ No newline at end of file
diff --git a/app/assets/stylesheets/lib/filter.css b/app/assets/stylesheets/lib/filter.css
new file mode 100644
index 0000000..6e76a70
--- /dev/null
+++ b/app/assets/stylesheets/lib/filter.css
@@ -0,0 +1,84 @@
+/* Filter */
+#filter.open {
+ border-bottom: none;
+ padding-bottom: 10px;
+}
+#filter .filter-nav {
+ margin-bottom: 0px;
+}
+#filter.open .filter-nav {
+ margin-bottom: 10px;
+}
+#filter .filter-nav a {
+ text-decoration: none;
+}
+#filter .filter-nav .accordion-group {
+ border: none;
+}
+#filter .filter-nav .accordion-group.active {
+ background-color: #08c;
+ position: relative;
+}
+#filter .filter-nav .accordion-group.active a {
+ color: #FFF;
+}
+#filter .filter-nav .accordion-group.active:after {
+ display: block;
+ height: 0px;
+ width: 0px;
+ position: absolute;
+ bottom: -12px;
+ left: 50%;
+ margin-left: -5px;
+ content: "";
+ border-style: solid;
+ border-width: 0 6px 6px 6px;
+ border-color: transparent transparent #e5e5e5 transparent;
+ z-index: 5
+}
+#filter .filter-group {
+ clear: both;
+ border: none;
+ margin-bottom: 0px;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ -o-border-radius: 4px;
+ border-radius: 4px;
+}
+#filter .filter-group .accordion-body {
+ background-color: #e5e5e5;
+ border-radius: 3px;
+}
+#filter .filter-group .accordion-body .filter-clear {
+ padding: 4px;
+ border-top: 1px solid #D5D5D5;
+ text-align: right;
+ -webkit-box-shadow: inset 0px 1px 0px #ECECEC;
+ -moz-box-shadow: inset 0px 1px 0px #ECECEC;
+ -o-box-shadow: inset 0px 1px 0px #ECECEC;
+ box-shadow: inset 0px 1px 0px #ECECEC;
+}
+#filter .filter-group .accordion-body .filter-clear a {
+ text-decoration: none;
+}
+#filter .filter-group .collapse.in {
+}
+#filter .filter-group .accordion-inner {
+ padding: 8px 8px 5px;
+ /*margin-top: 10px;*/
+}
+#filter .filter-group .accordion-inner > .btn {
+ margin-bottom: 3px;
+}
+
+
+/* Responsive */
+@media (max-width: 480px) {
+ /* Filter */
+ #filter .filter-nav {
+ float: left;
+ }
+ #filter .accordion-inner.pagination-right {
+ text-align: left;
+ }
+}
\ No newline at end of file
diff --git a/app/assets/stylesheets/lib/gallery.css b/app/assets/stylesheets/lib/gallery.css
new file mode 100644
index 0000000..9698274
--- /dev/null
+++ b/app/assets/stylesheets/lib/gallery.css
@@ -0,0 +1,379 @@
+#orbit_gallery {
+ margin: 0;
+ padding: 0 0 10px;
+ list-style: none;
+}
+#orbit_gallery .rgalbum {
+ margin: 5px;
+ padding: 10px;
+ width: 200px;
+ background: #FFFFFF;
+ -webkit-transition-property: left, right, top;
+ -moz-transition-property: left, right, top;
+ -ms-transition-property: left, right, top;
+ -o-transition-property: left, right, top;
+ transition-property: left, right, top;
+}
+#orbit_gallery .rgalbum:hover {
+ box-shadow: 0px 0px 5px rgba(0,0,0,.2);
+}
+#orbit_gallery .rgalbum a {
+ position: relative;
+ display: block;
+ overflow: hidden;
+ margin: 0 0 10px;
+ width: 200px;
+ -webkit-transition: all .2s linear;
+ -moz-transition: all .2s linear;
+ -o-transition: all .2s linear;
+ transition: all .2s linear;
+}
+#orbit_gallery .rgalbum a img {
+ max-width: none;
+}
+#orbit_gallery .rgalbum:hover a img {
+ -webkit-filter: blur(2px);
+}
+#orbit_gallery .rgalbum a span {
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ display: block;
+ margin: 0;
+ background-color: #000000;
+ opacity: .0;
+ -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
+ filter: alpha(opacity=0);
+ -webkit-transition: all .2s linear;
+ -moz-transition: all .2s linear;
+ -o-transition: all .2s linear;
+ transition: all .2s linear;
+}
+#orbit_gallery .rgalbum:hover a span {
+ opacity: .4;
+ -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=40)";
+ filter: alpha(opacity=40);
+}
+#orbit_gallery .rgalbum a .albumname {
+ position: absolute;
+ bottom: 0;
+ margin: 0;
+ padding: 10px;
+ color: #F2F2F2;
+ text-shadow: 0px -1px 0 rgba(0,0,0,0.4);
+ letter-spacing: -0.5px;
+ font-size: 30px;
+ font-family: 'Playfair Display SC', sans-serif;
+ line-height: 28px;
+ opacity: .0;
+ -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
+ filter: alpha(opacity=0);
+ -webkit-transition: all .2s linear;
+ -moz-transition: all .2s linear;
+ -o-transition: all .2s linear;
+ transition: all .2s linear;
+}
+#orbit_gallery .rgalbum:hover a .albumname {
+ opacity: 1;
+ -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";
+ filter: alpha(opacity=100);
+ -webkit-transition: all .2s linear;
+ -moz-transition: all .2s linear;
+ -o-transition: all .2s linear;
+ transition: all .2s linear;
+}
+#orbit_gallery .rgalbum .gallery_info {
+ margin: 0;
+ list-style: none;
+}
+#orbit_gallery .rgalbum .gallery_info li {
+ display: inline-block;
+ float: left;
+ color: #777777;
+ font-size: 11px;
+ line-height: 20px;
+ cursor: pointer;
+}
+#orbit_gallery .rgalbum .gallery_info li:hover {
+ color: #0088CC;
+}
+#orbit_gallery .rgalbum .gallery_info li .icons-tag {
+ margin-left: 10px;
+}
+#orbit_gallery .rgalbum .gallery_info li.albumcateg {
+ float: right;
+ overflow: hidden;
+ max-width: 125px;
+ text-align: right;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+}
+#orbit_gallery .rgalbum .gallery_info li.view {
+ overflow: hidden;
+ max-width: 50px;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+}
+#orbit_gallery .rgalbum .albumtag {
+ display: none;
+ overflow: hidden;
+ margin: 0;
+}
+
+
+/* Gallery Body */
+.rgbody .gallery-info {
+ padding: 0 5px;
+}
+.rgbody .gallery-info h3 {
+ margin: 5px 0 0;
+ color: #333;
+ text-shadow: 0 1px 0 #ffffff;
+ font-family: 'Playfair Display SC', sans-serif;
+}
+.rgbody .gallery-info .muted {
+ font-family: 'Raleway', sans-serif;
+}
+
+#imgholder {
+ margin: 0;
+ padding: 0 0 10px;
+ list-style: none;
+}
+#imgholder .rgalbum {
+ float: left;
+ margin: 5px;
+ padding: 5px;
+ width: 200px;
+ background: #FFFFFF;
+ -webkit-box-shadow: 0px 0px 5px rgba(0, 0, 0, .1);
+ -moz-box-shadow: 0px 0px 5px rgba(0, 0, 0, .1);
+ box-shadow: 0px 0px 5px rgba(0, 0, 0, .1);
+ -webkit-transition-property: left, right, top;
+ -moz-transition-property: left, right, top;
+ -ms-transition-property: left, right, top;
+ -o-transition-property: left, right, top;
+ transition-property: left, right, top;
+ -o-box-shadow: 0px 0px 5px rgba(0, 0, 0, .1);
+}
+#imgholder .rgalbum a {
+ display: block;
+ overflow: hidden;
+ margin: 0;
+ width: 200px;
+ -webkit-transition: all .2s linear;
+ -moz-transition: all .2s linear;
+ -o-transition: all .2s linear;
+ transition: all .2s linear;
+}
+#imgholder .rgalbum a img {
+ max-width: none;
+}
+
+
+/* File Upload */
+#upload-panel {
+ clear: both;
+}
+#upload-panel iframe {
+ width: 100%;
+ border: none;
+}
+#fileupload {
+ position: relative;
+ display: none;
+ clear: both;
+ overflow: hidden;
+ margin: 40px 0 15px;
+ height: 254px;
+ border: 1px solid #d4d4d4;
+ border-radius: 4px;
+ background-color: #FDFDFD;
+ /*-webkit-box-shadow: 0px 0px 10px rgba(0, 0, 0, .15) inset;
+ box-shadow: 0px 0px 10px rgba(0, 0, 0, .15) inset;*/
+}
+#fileupload table {
+ margin: 0;
+}
+#fileupload .fileupload-buttonbar .navbar {
+ margin-bottom: 0;
+}
+#fileupload .fileupload-buttonbar .navbar button {
+ border: none;
+ border-right: 1px solid #d4d4d4;
+ background-color: transparent;
+ padding: 10px 15px 10px;
+ color: #777777;
+ text-decoration: none;
+ text-shadow: 0 1px 0 #ffffff;
+}
+#fileupload .fileupload-buttonbar .navbar button:hover {
+ color: #333333;
+ text-decoration: none;
+ background-color: #EDEDED;
+}
+#fileupload .fileupload-buttonbar .navbar .fileinput-button {
+ position: relative;
+ overflow: hidden;
+}
+#fileupload .fileupload-buttonbar .navbar .fileinput-button input {
+ position: absolute;
+ top: 0;
+ right: 0;
+ margin: 0;
+ font-size: 23px;
+ opacity: 0;
+ -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
+ filter: alpha(opacity=0);
+ cursor: pointer;
+ -webkit-transform: translate(-300px, 0) scale(4);
+ -moz-transform: translate(-300px, 0) scale(4);
+ -ms-transform: translate(-300px, 0) scale(4);
+ -o-transform: translate(-300px, 0) scale(4);
+ transform: translate(-300px, 0) scale(4);
+ direction: ltr;
+}
+#fileupload .fileupload-buttonbar .navbar-inner {
+ border-width: 0 0 1px;
+ border-radius: 4px 4px 0 0;
+ padding: 0;
+}
+
+#fileupload .fileupload-progress .progress {
+ position: absolute;
+ right: 0;
+ left: 0;
+ margin-bottom: 0;
+ height: 5px;
+ border-radius: 0;
+ background-color: transparent;
+ background-image: none;
+}
+#fileupload .fileupload-progress .progress-success.progress-striped .bar {
+ background-color: #0088CC;
+}
+#fileupload .fileupload-progress .progress-extended {
+ position: absolute;
+ top: 1px;
+ right: 0;
+ padding-right: 15px;
+ color: #0088CC;
+ text-align: right;
+ text-shadow: 0 1px 0 #ffffff;
+ letter-spacing: -0.1em;
+ font-size: 12px;
+ font-family: 'Varela Round', sans-serif;
+ line-height: 40px;
+}
+#fileupload .fileupload-buttonbar {
+ position: relative;
+ z-index: 3;
+}
+#fileupload #dropzone {
+ margin: 15px 10px 10px;
+ padding: 30px;
+ text-align: center;
+ font-size: 2em;
+ font-family: 'Raleway';
+ line-height: 1.2em;
+ color: #e4e4e4;
+}
+#fileupload #dropzone div[data-icons] {
+ font-size: 4em;
+ height: 70px;
+ padding-top: 30px;
+ text-shadow: 0px -1px 0px #ececec;
+ color: #f5f5f5;
+}
+#fileupload #dropzone.drop {
+ position: absolute;
+ top: 37px;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ border: 2px dashed #0088CC;
+ border-radius: 10px;
+ color: #0088CC;
+ background-color: #FFFFFF;
+ z-index: 0;
+}
+#fileupload #dropzone.fade {
+ opacity: .3;
+}
+#fileupload #dropzone.in {
+ opacity: .7;
+ z-index: 2;
+ border-color: #faa732;
+ color: #faa732;
+}
+#fileupload #dropzone.drop div[data-icons] {
+ text-shadow: 0px -1px 0px #0c5f80;
+ color: #0088CC;
+}
+#fileupload #dropzone.in div[data-icons] {
+ text-shadow: 0px -1px 0px #a28a10;
+ color: #faa732;
+}
+#fileupload #file-list {
+ position: relative;
+ z-index: 1;
+ height: 209px;
+ margin: 2px 0;
+}
+#fileupload #file-list .pane {
+ margin-right: 2px;
+}
+#fileupload #file-list .files {
+ margin: 0;
+ padding: 10px 14px 10px 10px;
+ list-style: none;
+}
+#fileupload #file-list .files > li {
+ padding: 10px;
+}
+#fileupload #file-list .files > li:nth-child(even) {
+ background-color: #e9e9e9;
+ border-radius: 3px;
+}
+#fileupload #file-list .files ul {
+ position: relative;
+ margin: 0;
+ padding: 0;
+ list-style: none;
+}
+#fileupload #file-list .files ul li {
+ float: left;
+}
+#fileupload #file-list .files ul li.action-bnt {
+ float: right;
+}
+#fileupload #file-list .preview {
+ width: 80px;
+ min-height: 1px;
+ margin-right: 10px;
+ text-align: center;
+}
+#fileupload #file-list .name {
+ width: 150px;
+ max-width: 250px;
+ margin-left: 15px;
+}
+#fileupload #file-list .progress {
+ position: absolute;
+ left: -5px;
+ right: -5px;
+ bottom: -5px;
+ margin-bottom: 0;
+ height: 5px;
+ box-shadow: none;
+ background-color: transparent;
+ background-image: none;
+}
+#fileupload #file-list .size {
+ width: 80px;
+}
+#fileupload #file-list .action-bnt {
+ text-align: right;
+}
\ No newline at end of file
diff --git a/app/assets/stylesheets/lib/items.css b/app/assets/stylesheets/lib/items.css
new file mode 100644
index 0000000..3c475b0
--- /dev/null
+++ b/app/assets/stylesheets/lib/items.css
@@ -0,0 +1,256 @@
+#sideset .item-groups.sortable {
+ list-style: none;
+ margin: 0;
+ padding: 0 10px;
+ border: 1px solid #d4d4d4;
+ background-color: rgb(236, 236, 236);
+ -webkit-border-radius: 5px;
+ -moz-border-radius: 5px;
+ border-radius: 5px;
+}
+#sideset .item-groups.sortable ol,
+#sideset .item-groups.sortable ul {
+ list-style: none;
+}
+#sideset .item-groups.sortable .navbar {
+ margin-bottom: 15px;
+}
+#sideset .item-groups.sortable > .navbar {
+ margin: -1px -11px 10px;
+}
+#sideset .item-groups.sortable .navbar .nav > li > a,
+#sideset .item-groups.sortable .navbar .brand {
+ padding: 10px;
+}
+#sideset .item-groups.sortable .navbar .item-title {
+ color: #777777;
+ padding: 0 10px;
+ position: relative;
+ line-height: 3.5em;
+ display: inline-block;
+ float: left;
+}
+#sideset .item-groups.sortable .navbar .item-title:hover {
+}
+#sideset .item-groups.sortable .navbar .item-title a:hover {
+ text-decoration: none;
+}
+/*#sideset .item-groups.sortable .navbar .active .item-title>a {
+ max-width: 70px;
+ display: inline-block;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ overflow: hidden;
+}*/
+#sideset .item-groups.sortable .navbar .item-title .item-menu a {
+ display: inline-block;
+ padding: 3px 5px;
+ clear: both;
+ font-weight: normal;
+ line-height: 20px;
+ color: #333333;
+ white-space: nowrap;
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ border-radius: 3px;
+}
+#sideset .item-groups.sortable .navbar .item-title .item-menu a:hover,
+#sideset .item-groups.sortable .navbar .item-title .item-menu a:focus,
+#sideset .item-groups.sortable .navbar .item-title .item-menu a.active {
+ color: #ffffff;
+ text-decoration: none;
+ background-color: #0081c2;
+}
+#sideset .item-groups.sortable .navbar .item-title .item-menu a.delete:hover,
+#sideset .item-groups.sortable .navbar .item-title .item-menu a.delete:focus {
+ background-color: #bd362f;
+}
+#sideset .item-groups.sortable .navbar .item-title .item-menu:before {
+ /*position: absolute;
+ top: 50%;
+ left: -5px;
+ margin-top: -5px;
+ display: inline-block;
+ width: 0px;
+ height: 0px;
+ border-style: solid;
+ border-width: 5px 5px 5px 0;
+ border-color: transparent rgb(233, 233, 233) transparent transparent;
+ content: '';*/
+}
+#sideset .item-groups.sortable .navbar .item-title em {
+ float: right;
+ padding: 0 5px;
+ max-width: 300px;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+}
+#sideset .item-groups.sortable .navbar .item-info {
+ margin-top: 12px;
+ color: #DDDDDD;
+ text-align: right;
+}
+#sideset .item-groups.sortable ol {
+ margin-left: 12px;
+}
+#sideset .item-groups.sortable ol {
+ margin: -59px 0 15px;
+ padding: 59px 10px 0;
+ border: 1px solid #d4d4d4;
+ background-color: rgb(236, 236, 236);
+ -webkit-box-shadow: 0 0 10px rgba(150, 150, 150, .3);
+ -moz-box-shadow: 0 0 10px rgba(150, 150, 150, .3);
+ box-shadow: 0 0 10px rgba(150, 150, 150, .3);
+ -webkit-border-radius: 5px;
+ -moz-border-radius: 5px;
+ border-radius: 5px;
+}
+#sideset .item-groups.sortable li {
+ margin-left: 30px;
+ margin-left: 0\9;
+ position: relative;
+ -webkit-transition: none;
+ -moz-transition: none;
+ -o-transition: none;
+ transition: none;
+}
+#sideset .item-groups.sortable li:after {
+ top: 10px;
+ z-index: 1;
+ content: "";
+ width: 10px;
+ left: -20px;
+ height: 10px;
+ display: block;
+ position: absolute;;
+ border-width: 0 0 2px 2px;
+ border-color: rgba(100, 100, 100, .5);
+ border-style: solid;
+ display: none\9; /* 用IEçš„åŽ»æ» */
+}
+#sideset .item-groups.sortable li:before {
+ content: "";
+ display: block;
+ position: absolute;
+ top: 0px;
+ left: -20px;
+ bottom: -15px;
+ border-left: 2px solid rgb(226, 226, 226);
+ box-shadow: 1px 1px 0px rgba(255, 255, 255, .4);
+ display: none\9; /* 用IEçš„åŽ»æ» */
+}
+#sideset .item-groups.sortable li:last-child:before {
+ bottom: auto;
+ height: 20px;
+}
+#sideset .item-groups.sortable li.collapsed > ol {
+ display: none;
+}
+#sideset .item-groups.sortable li.collapsed > .navbar {
+ position: relative;
+ margin-right: 8px;
+}
+#sideset .item-groups.sortable li.collapsed > .navbar:before,
+#sideset .item-groups.sortable li.collapsed > .navbar:after {
+ content: "";
+ display: block;
+ position: absolute;
+ top: 4px;
+ left: 4px;
+ width: 100%;
+ height: 100%;
+ z-index: 0;
+ background-color: rgb(235, 235, 235);
+ border: 1px solid rgb(221, 221, 221);
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+}
+#sideset .item-groups.sortable li.collapsed > .navbar:before {
+ top: 1px;
+ left: 1px;
+ z-index: 1;
+ background-color: rgb(241, 241, 241);
+}
+#sideset .item-groups.sortable li.disabled .navbar .navbar-inner {
+ -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=40)";
+ filter: alpha(opacity=40);
+ opacity: .4;
+}
+#sideset .item-groups.sortable li > .navbar .navbar-inner {
+ position: relative;
+ z-index: 2;
+}
+#sideset .item-groups.sortable .navbar .navbar-inner.active {
+ border: 2px solid #3a87ad;
+}
+#sideset .item-groups.sortable .navbar .navbar-inner .item-menu {
+ display: none;
+ padding: 0 10px;
+ /*margin-left: 10px;*/
+ line-height: 34px;
+ position: relative;
+ /*background-color: rgb(233, 233, 233);
+ background-image: -moz-linear-gradient(top, rgb(224, 224, 224), rgb(238, 238, 238));
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(rgb(224, 224, 224)), to(rgb(238, 238, 238)));
+ background-image: -webkit-linear-gradient(top, rgb(224, 224, 224), rgb(238, 238, 238));
+ background-image: -o-linear-gradient(top, rgb(224, 224, 224), rgb(238, 238, 238));
+ background-image: linear-gradient(to bottom, rgb(224, 224, 224), rgb(238, 238, 238));
+ border-top: 1px solid rgb(213, 213, 213);
+ border-bottom: 1px solid #FFFFFF;
+ -webkit-border-radius: 5px;
+ -moz-border-radius: 5px;
+ border-radius: 5px;*/
+}
+#sideset .item-groups.sortable .navbar .navbar-inner:hover .item-menu {
+ display: inline-block!important;
+}
+#sideset .item-groups.sortable li .navbar .brand {
+ line-height: 14px;
+ cursor: move;
+ color: #DDDDDD;
+ text-shadow: 0 -1px 0 rgba(0,0,0,.2);
+}
+#sideset .item-groups.sortable li .navbar .brand:hover {
+ color: #CCCCCC;
+ text-shadow: 0 -1px 0 rgba(0,0,0,.5);
+}
+#sideset .item-groups.sortable li .navbar .item-type {
+ line-height: 14px;
+ padding: 13px 0 12px;
+ display: block;
+ float: left;
+ margin-left: -5px;
+ font-size: 16px;
+ font-weight: 200;
+}
+#sideset .item-groups.sortable li .navbar .item-type.link {
+ color: #51a351;
+}
+#sideset .item-groups.sortable li .navbar .item-type.page {
+ color: #2f96b4;
+}
+#sideset .item-groups.sortable .placeholder {
+ height: 40px;
+ margin-bottom: 10px;
+ border: 2px dashed #bce8f1;
+ background-color: #d9edf7;
+ -webkit-border-radius: 7px;
+ -moz-border-radius: 7px;
+ border-radius: 7px;
+}
+#sideset .item-groups.sortable .mjs-nestedSortable-error {
+ background: #f2dede;
+ border-color: #eed3d7;
+}
+
+
+/* IE go dead */
+:root #sideset .item-groups.sortable li {
+ margin-left: 30px;
+}
+:root #sideset .item-groups.sortable li:after,
+:root #sideset .item-groups.sortable li:before {
+ display: block\9;
+}
\ No newline at end of file
diff --git a/app/assets/stylesheets/lib/jquery.fileupload-ui.css b/app/assets/stylesheets/lib/jquery.fileupload-ui.css
new file mode 100644
index 0000000..4f994f2
--- /dev/null
+++ b/app/assets/stylesheets/lib/jquery.fileupload-ui.css
@@ -0,0 +1,83 @@
+@charset "UTF-8";
+/*
+ * jQuery File Upload UI Plugin CSS 7.4
+ * https://github.com/blueimp/jQuery-File-Upload
+ *
+ * Copyright 2010, Sebastian Tschan
+ * https://blueimp.net
+ *
+ * Licensed under the MIT license:
+ * http://www.opensource.org/licenses/MIT
+ */
+
+.fileinput-button {
+ position: relative;
+ overflow: hidden;
+ float: left;
+ margin-right: 4px;
+}
+.fileinput-button input {
+ position: absolute;
+ top: 0;
+ right: 0;
+ margin: 0;
+ opacity: 0;
+ filter: alpha(opacity=0);
+ transform: translate(-300px, 0) scale(4);
+ font-size: 23px;
+ direction: ltr;
+ cursor: pointer;
+}
+.fileupload-buttonbar .btn,
+.fileupload-buttonbar .toggle {
+ margin-bottom: 5px;
+}
+.files .progress {
+ width: 200px;
+}
+.progress-animated .bar {
+ background: url(../img/progressbar.gif) !important;
+ filter: none;
+}
+.fileupload-loading {
+ position: absolute;
+ left: 50%;
+ width: 128px;
+ height: 128px;
+ background: url(../img/loading.gif) center no-repeat;
+ display: none;
+}
+.fileupload-processing .fileupload-loading {
+ display: block;
+}
+
+/* Fix for IE 6: */
+* html .fileinput-button {
+ line-height: 24px;
+ margin: 1px -3px 0 0;
+}
+
+/* Fix for IE 7: */
+* + html .fileinput-button {
+ padding: 2px 15px;
+ margin: 1px 0 0 0;
+}
+
+@media (max-width: 767px) {
+ .fileupload-buttonbar .toggle,
+ .files .toggle,
+ .files .btn span {
+ display: none;
+ }
+ .files .preview * {
+ width: 40px;
+ }
+ .files .name * {
+ width: 80px;
+ display: inline-block;
+ word-wrap: break-word;
+ }
+ .files .progress {
+ width: 20px;
+ }
+}
diff --git a/app/assets/stylesheets/lib/list-check.css b/app/assets/stylesheets/lib/list-check.css
new file mode 100644
index 0000000..d702fd3
--- /dev/null
+++ b/app/assets/stylesheets/lib/list-check.css
@@ -0,0 +1,28 @@
+.table .listCheckHead,
+.table .listCheck {
+ width: 30px;
+ vertical-align: middle;
+ padding: 0 0 0 10px!important;
+}
+.listCheckHead input[type="checkbox"],
+.listCheck input[type="checkbox"] {
+ position: absolute;
+ margin: -12px 0 0 -1px;
+ -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
+ filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+ opacity: 0;
+}
+.listCheckHead i,
+.listCheck i {
+ display: block;
+}
+.checkHide td {
+ background-color: #E6E6E6 !important;
+ color: #B9B9B9;
+}
+.checkHide a {
+ color: #B9B9B9;
+}
+.checkHit td {
+ background-color: #FFFEDB !important;
+}
\ No newline at end of file
diff --git a/app/assets/stylesheets/lib/main-forms.css b/app/assets/stylesheets/lib/main-forms.css
new file mode 100644
index 0000000..680e95f
--- /dev/null
+++ b/app/assets/stylesheets/lib/main-forms.css
@@ -0,0 +1,574 @@
+.main-forms > h3 {
+ margin: 5px 0 10px;
+ color: #333;
+ text-shadow: 0 1px 0 #ffffff;
+ font-family: 'Playfair Display SC', sans-serif;
+}
+.main-forms fieldset {
+ background-color: #FFFFFF;
+ border: 1px solid #EDEDED;
+ margin-bottom: 20px;
+ -webkit-border-radius: 5px;
+ -moz-border-radius: 5px;
+ border-radius: 5px;
+}
+.main-forms fieldset .input-area {
+ padding: 20px 20px 0;
+}
+.main-forms fieldset .input-area:after {
+ content: "";
+ clear: both;
+ display: block;
+ height: 0;
+ visibility: hidden;
+}
+.main-forms fieldset .input-area .nav-name {
+ float: left;
+ width: 100px;
+ padding-top: 5px;
+ text-align: right;
+ display: block;
+ margin-bottom: 5px;
+ font-size: 14px;
+ font-weight: normal;
+ line-height: 20px;
+}
+/*.main-forms fieldset .input-area .control-label {
+ width: 100px;
+}
+.main-forms fieldset .input-area .controls {
+ margin-left: 120px;
+}*/
+.main-forms fieldset .input-area .controls textarea {
+ max-width: 500px;
+ max-height: 300px;
+ min-height: 86px;
+}
+.main-forms fieldset .input-area .controls textarea.cke_source {
+ max-width: 100%;
+ max-height: 100%;
+}
+.main-forms fieldset .input-area .controls hr {
+ margin: 5px 0 10px;
+}
+.main-forms fieldset .input-area .controls h5 {
+ margin: 5px 0;
+}
+.main-forms fieldset .input-area .controls .file-link {
+ margin-right: 10px;
+ display: inline-block;
+ width: 177px;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+}
+.main-forms fieldset .input-area .controls .input-prepend {
+ margin-bottom: 5px;
+}
+.main-forms fieldset .input-area .controls .input-prepend .btn-group {
+ padding: 4px 12px;
+}
+.main-forms fieldset .input-area .controls .input-prepend .btn-group {
+ padding: 4px 12px;
+}
+.main-forms fieldset .input-area .controls .input-prepend .btn-group .radio input[type="radio"],
+.main-forms fieldset .input-area .controls .input-prepend .btn-group .checkbox input[type="checkbox"] {
+ margin: 5px 5px 0 0;
+}
+.main-forms fieldset .input-area .controls .input-prepend .btn-group li {
+ text-align: left;
+ padding: 3px 10px;
+}
+.main-forms fieldset .input-area .controls .input-prepend .btn-group li label {
+ padding-left: 5px;
+ display: block;
+}
+.main-forms fieldset .input-area .controls .exist .input-prepend .btn-group:hover .dropdown-menu ,
+.main-forms fieldset .input-area .controls .add-target .input-prepend .btn-group:hover .dropdown-menu {
+ display: block;
+}
+.main-forms fieldset .input-area .controls .exist .input-prepend,
+.main-forms fieldset .input-area .controls .add-target .input-prepend {
+ margin-bottom: 10px;
+ display: inline-block;
+}
+.main-forms fieldset .input-area .controls .exist .fileupload-new {
+ display: block;
+}
+.main-forms fieldset .input-area .controls .exist .fileupload-new .input-prepend {
+ display: inline-block;
+}
+.main-forms fieldset .input-area .controls .input-prepend a {
+ text-decoration: none;
+ color: #333333;
+}
+.main-forms fieldset .input-area .controls .input-prepend .tab-content > .active {
+ display: inline-block;
+}
+.main-forms fieldset .input-area .controls .add-btn {
+ margin: 3px 0;
+}
+.main-forms fieldset .input-area .fileupload {
+ margin-right: 15px;
+ margin-bottom: 0;
+}
+.main-forms fieldset .input-area .datetimepick {
+ margin-right: 5px;
+ margin-bottom: 5px;
+}
+.main-forms fieldset .input-area .datetimepick .add-on {
+ line-height: 24px;
+ cursor: pointer;
+}
+.main-forms fieldset .input-area .language-area .input-content .mceLayout {
+ width: 100%!important;
+}
+.main-forms fieldset .input-area .module-nav,
+.main-forms fieldset .input-area .language-nav {
+ margin: 0 0 20px;
+ padding: 0 0 15px 120px;
+ border-bottom: 1px solid #ddd;
+}
+.main-forms fieldset .input-area .module-nav li,
+.main-forms fieldset .input-area .language-nav li {
+ position: relative;
+}
+
+.main-forms fieldset .input-area .module-nav li.active:before,
+.main-forms fieldset .input-area .module-nav li.active:after,
+.main-forms fieldset .input-area .language-nav li.active:before,
+.main-forms fieldset .input-area .language-nav li.active:after {
+ display: block;
+ height: 0px;
+ width: 0px;
+ position: absolute;
+ bottom: -15px;
+ left: 50%;
+ margin-left: -5px;
+ content: "";
+ border-style: solid;
+ border-width: 0 6px 6px 6px;
+ border-color: transparent transparent #EDEDED transparent;
+ z-index: 5
+}
+.main-forms fieldset .input-area .module-nav li.active:after {
+ display: none;
+}
+.main-forms fieldset .input-area .language-nav li.active:after {
+ bottom: -16px;
+ margin-left: -4px;
+ border-width: 0 5px 5px 5px;
+ border-color: transparent transparent #FFFFFF transparent;
+}
+.main-forms fieldset .input-area .module-nav {
+ margin-bottom: 0;
+ border-bottom: none;
+}
+.main-forms fieldset .input-area .language-area,
+.main-forms fieldset .input-area .module-area {
+ overflow: visible;
+}
+.main-forms fieldset .input-area .module-area {
+ padding-top: 20px;
+ margin-bottom: 40px;
+ background-color: #EDEDED;
+ border-radius: 5px;
+ overflow: hidden;
+}
+.main-forms fieldset .form-actions {
+ /*padding-left: 140px;*/
+ padding-left: 200px;
+ margin: 0px;
+ -webkit-border-radius: 0 0 4px 4px;
+ -moz-border-radius: 0 0 4px 4px;
+ border-radius: 0 0 4px 4px;
+}
+.main-forms fieldset .input-area .nav-scroll {
+ margin-left: 120px;
+ width:800px;
+ position:relative;
+ z-index:1;
+ overflow:hidden;
+}
+.main-forms fieldset .input-area .nav-scroll .scroller {
+ width: 1000px;
+ height:100%;
+ float:left;
+ padding:0;
+}
+.main-forms fieldset .input-area .controls[data-toggle^="buttons-"] label {
+ position: relative;
+ margin: 0 0 5px;
+}
+.main-forms fieldset .input-area .controls[data-toggle^="buttons-"] input[type="radio"],
+.main-forms fieldset .input-area .controls[data-toggle^="buttons-"] input[type="checkbox"] {
+ margin-left: 0;
+ margin-top: 0;
+ position: absolute;
+ left: 0;
+ top: 0;
+ width: 100%;
+ height: 100%;
+ display: block;
+ opacity: 0;
+ filter: alpha(opacity=0);
+ -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
+}
+.main-forms fieldset .input-area .question {
+ margin-top: 5px;
+}
+
+
+/* User Role Forms */
+#attributes-area.clickHere {
+ min-height: 150px;
+ position: relative;
+}
+#attributes-area.clickHere:before {
+ font-family: 'entypo';
+ content: '\e0be';
+ position: absolute;
+ font-size: 8em;
+ display: block;
+ bottom: 50px;
+ left: 175px;
+ color: #51a351;
+ opacity: .4;
+ filter: alpha(opacity=40);
+}
+.main-forms .input-append .tab-content {
+ display: inline-block;
+ overflow: inherit;
+}
+.main-forms .input-append .tab-content .active {
+ display: inline-block;
+ background-color: transparent;
+}
+.main-forms .input-append .active {
+ border-color: #c5c5c5;
+ border-color: rgba(0, 0, 0, 0.15) rgba(0, 0, 0, 0.15) rgba(0, 0, 0, 0.25);
+}
+.main-forms .input-append > .btn-group > .btn:first-child {
+ margin-left: -1px;
+ -webkit-border-bottom-left-radius: 0px;
+ border-bottom-left-radius: 0px;
+ -webkit-border-top-left-radius: 0px;
+ border-top-left-radius: 0px;
+ -moz-border-radius-bottomleft: 0px;
+ -moz-border-radius-topleft: 0px;
+}
+.main-forms .attributes {
+ padding-bottom: 20px;
+}
+.main-forms .attributes .tab-content {
+ overflow: inherit;
+}
+.main-forms .attributes.disabled label,
+.main-forms .attributes.disabled h4 {
+ color: #e6e6e6;
+}
+.main-forms .attributes-header {
+ border-bottom: 1px solid #ddd;
+ margin-bottom: 20px;
+ padding-bottom: 10px;
+}
+.main-forms .attributes-header .btn {
+ margin-left: 5px;
+}
+.main-forms .attributes-header h4 {
+ font-family: 'Chivo';
+ line-height: 26px;
+ margin: 0;
+}
+.main-forms .attributes-header h4 b {
+ padding: 0 1px;
+ border-style: dotted;
+ border-width: 0 2px;
+ border-color: #AAA;
+ margin-right: 5px;
+ cursor: move;
+}
+.main-forms .attributes-header h4 i {
+ cursor: pointer;
+}
+.main-forms .field-type {
+ background-color: #f5f5f5;
+ border-radius: 5px;
+ margin-bottom: 20px;
+ padding: 10px;
+}
+.main-forms .field-type.fade {
+ padding: 0px 10px;
+ -webkit-transition: all 0.15s linear;
+ -moz-transition: all 0.15s linear;
+ -o-transition: all 0.15s linear;
+ transition: all 0.15s linear;
+}
+.main-forms .field-type.in {
+ padding: 20px 10px;
+ -webkit-transition: all 0.15s linear;
+ -moz-transition: all 0.15s linear;
+ -o-transition: all 0.15s linear;
+ transition: all 0.15s linear;
+}
+.main-forms .field-type .control-group {
+ margin-bottom: 20px;
+ margin-top: 0px;
+}
+.main-forms .field-type .control-group:last-child {
+ margin-bottom: 10px;
+}
+#user-forms .control-group .add-target .input-append,
+.main-forms .field-type .control-group .add-target .input-append {
+ display: block;
+ margin-bottom: 10px;
+}
+.main-forms .field-type .control-group .add-target .input-append:first-child {
+ margin-top: 0px;
+}
+.main-forms .field-type .control-group .add-target .input-append input + input {
+ border-radius: 0;
+ margin-left: -1px;
+}
+.main-forms .field-type .control-group .add-target.single .input-append input.last,
+.main-forms .control-group .add-target .btn-group .btn.last {
+ border-radius: 0 4px 4px 0;
+}
+.main-forms .parts-none {
+ width: 100%;
+ text-align: center;
+ padding: 50px 0 70px;
+ font-size: 2em;
+}
+.main-forms .display-mode .typesetting {
+ margin: 0 0 10px 0;
+}
+.main-forms .display-mode table td:last-child {
+ text-align: right;
+}
+.main-forms .display-mode .typesetting li {
+ display: inline-block;
+ float: left;
+ width: 120px;
+ position: relative;
+ padding: 2px;
+ text-align: center;
+}
+.main-forms .display-mode .typesetting li + li {
+ margin-left: 10px;
+}
+.main-forms .display-mode .typesetting li.active {
+ padding: 0;
+ width: 124px;
+}
+.main-forms .display-mode .typesetting li.active:after {
+ font-family: FontAwesome;
+ content: "\f00c";
+ font-size: 12px;
+ text-indent: 15px;
+ line-height: 18px;
+ color: #FFF;
+ position: absolute;
+ top: 2px;
+ right: 2px;
+ width: 0px;
+ height: 0px;
+ border-style: solid;
+ border-width: 0 30px 30px 0;
+ border-color: transparent #FFA307 transparent transparent;
+ z-index: 1;
+}
+.main-forms .display-mode .typesetting li.active img {
+ border-radius: 5px;
+ background-color: #FFA307;
+ padding: 2px;
+}
+.main-forms .display-mode .typesetting img {
+ width: 120px;
+ height: 120px;
+}
+.main-forms .display-mode .typesetting input[type="radio"] {
+ -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
+ filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0)0;
+ opacity: 0;
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ margin: 0;
+}
+.main-forms .display-mode .typesetting .style_description {
+ display: block;
+ line-height: 1.2em;
+ font-size: 12px;
+ color: #686868;
+ padding-top: 10px;
+}
+
+#user-forms .control-group .add-target .input-append input.last {
+ border-radius: 4px;
+}
+
+.textarea-lang {
+ display: inline-block;
+ position: relative;
+}
+.textarea-lang .ui-wrapper {
+ padding-bottom: 0!important;
+}
+.textarea-lang .ui-resizable-handle {
+ position: absolute;
+ font-size: 0.1px;
+ display: block;
+}
+.textarea-lang .ui-resizable-se {
+ cursor: se-resize;
+ right: 1px;
+ bottom: 1px;
+ width: 0px;
+ height: 0px;
+ border-style: solid;
+ border-width: 0 0 8px 8px;
+ border-color: transparent transparent #bcbcbc transparent;
+}
+.textarea-lang .tab-pane textarea {
+ border-radius: 0 0 4px 4px;
+}
+.textarea-lang .btn-group {
+ display: table;
+ width: 100%;
+}
+.textarea-lang .btn-group .btn {
+ display: table-cell;
+}
+.textarea-lang .btn-group > .btn:first-child {
+ border-radius: 4px 0 0 0;
+}
+.textarea-lang .btn-group > .btn:last-child {
+ border-radius: 0 4px 0 0;
+}
+
+#address-field .control-label {
+ width: 120px;
+}
+#address-field .controls {
+ margin-left: 140px;
+}
+
+
+
+#sideset ul.mobile-themes,
+#sideset ul.orbitbar-themes {
+ list-style: none;
+ margin: 0;
+}
+#sideset ul.mobile-themes:after {
+ content: "";
+ clear: both;
+ display: block;
+ visibility: hidden;
+}
+#sideset ul.mobile-themes li,
+#sideset ul.orbitbar-themes li {
+ position: relative;
+ margin-right: 10px;
+ margin-bottom: 10px;
+ overflow: hidden;
+ padding: 5px;
+ -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=70)";
+ filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=70);
+ opacity: .7;
+}
+#sideset ul.mobile-themes li {
+ float: left;
+ display: inline-block;
+ width: 160px;
+ height: 240px;
+}
+#sideset ul.orbitbar-themes li {
+ width: 500px;
+ height: 40px;
+}
+#sideset ul.mobile-themes li.active,
+#sideset ul.orbitbar-themes li.active {
+ border: 5px solid #0088cc;
+ border-radius: 5px;
+ padding: 0px;
+ -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";
+ filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
+ opacity: 1;
+}
+#sideset ul.mobile-themes li.active:after,
+#sideset ul.orbitbar-themes li.active:after {
+ font-family: FontAwesome;
+ content: "\f00c";
+ font-size: 15px;
+ text-indent: 20px;
+ line-height: 25px;
+ color: #FFF;
+ position: absolute;
+ top: 0;
+ right: 0;
+ width: 0px;
+ height: 0px;
+ border-style: solid;
+ border-width: 0 40px 40px 0;
+ border-color: transparent #0088cc transparent transparent;
+ z-index: 1;
+}
+#sideset ul.mobile-themes li img {
+ width: 160px;
+ height: 240px;
+}
+#sideset ul.mobile-themes li input[type="radio"],
+#sideset ul.orbitbar-themes li input[type="radio"] {
+ margin-top: 0px;
+ position: absolute;
+ -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
+ filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+ opacity: 0;
+ display: block;
+}
+#sideset ul.mobile-themes li input[type="radio"] {
+ width: 160px;
+ height: 240px;
+}
+#sideset ul.orbitbar-themes li input[type="radio"] {
+ width: 500px;
+ height: 40px;
+}
+#sideset blockquote {
+ margin-bottom: 30px;
+}
+
+/* Responsive */
+@media (min-width: 768px) and (max-width: 979px) {
+}
+
+@media (max-width: 480px) {
+ .main-forms fieldset .input-area .nav-name {
+ float: none;
+ width: auto;
+ padding-top: 0;
+ text-align: left;
+ }
+ .main-forms fieldset .input-area .module-area {
+ padding: 20px;
+ }
+ .main-forms fieldset .input-area .module-nav,
+ .main-forms fieldset .input-area .language-nav {
+ padding: 0 0 15px 0px;
+ }
+ .main-forms fieldset .form-actions {
+ padding-right: 20px;
+ padding-left: 20px;
+ }
+ .main-forms fieldset .input-area .control-label {
+ width: auto;
+ }
+ .main-forms fieldset .input-area .controls {
+ margin-left: 0;
+ }
+ .main-forms fieldset .form-actions {
+ padding-left: 20px;
+ }
+}
\ No newline at end of file
diff --git a/app/assets/stylesheets/lib/main-list.css.erb b/app/assets/stylesheets/lib/main-list.css.erb
new file mode 100644
index 0000000..fc7c325
--- /dev/null
+++ b/app/assets/stylesheets/lib/main-list.css.erb
@@ -0,0 +1,187 @@
+/* Main List */
+.main-list {
+ margin-bottom: 10px;
+}
+.main-list tbody {
+ border: 1px solid #dddddd;
+}
+.main-list thead {
+ border: 1px solid #454545;
+}
+.main-list thead th {
+ vertical-align: middle;
+ background-color: #454545;
+ white-space: nowrap;
+ color: #FFFFFF;
+}
+.main-list tbody tr.disable td {
+ color: #C5C5C5;
+ background-color: #eeeeee;
+}
+.main-list tbody tr.disable td .label-info {
+ background-color: #999999;
+}
+.main-list tbody tr.active td:first-child {
+ position: relative;
+}
+.main-list tbody tr.active td:first-child:before {
+ content: "";
+ width: 0px;
+ height: 0px;
+ left: -21px;
+ top: 50%;
+ margin-top: -6px;
+ position: absolute;
+ border-style: solid;
+ border-width: 6px 0 6px 6px;
+ border-color: transparent transparent transparent #333333;
+}
+.main-list td {
+ background-color: #FFFFFF;
+}
+.main-list td input[type="text"] {
+ margin-bottom: 0;
+ margin-left: -.4em;
+ margin-right: 3px;
+ padding: 0 .3em;
+ width: 4em;
+}
+.main-list td.action {
+ vertical-align: middle;
+ text-align: right;
+}
+.main-list td.preview img {
+ width: 100%;
+}
+.main-list td .banner-link {
+ width: 100px;
+ max-width: 120px;
+ display: inline-block;
+ text-overflow: ellipsis;
+ overflow: hidden;
+}
+.main-list td .file-type {
+ position: relative;
+ list-style: none;
+ display: inline-block;
+}
+.main-list td .file-type a {
+ background-color: #A6A6A6;
+ color: #FFFFFF;
+ padding: 2px 5px 2px 3px;
+ border-radius: 3px;
+ text-decoration: none;
+ text-shadow: 0px -1px 0px rgba(100, 100, 100, .6);
+}
+.main-list td .file-type i,
+.main-forms fieldset .input-area .controls .file-type i {
+ width: 16px;
+ height: 16px;
+ margin-bottom: -1px;
+ display: inline-block;
+}
+.main-list td .file-type[class^="type-"] i,
+.main-list td .file-type[class*=" type-"] i,
+.main-forms fieldset .input-area .controls .file-type[class*=" type-"] i,
+.main-forms fieldset .input-area .controls .file-type[class^="type-"] i {
+ background-image: url(<%= asset_path 'file_type.png' %>);
+}
+.file-type.type-pdf i {background-position: 0px 0px;}
+.file-type.type-psd i {background-position: -16px 0px;}
+.file-type.type-ai i {background-position: -32px 0px;}
+.file-type.type-fla i {background-position: -48px 0px;}
+.file-type.type-in i {background-position: -64px 0px;}
+.file-type.type-acc i {background-position: 0px -16px;}
+.file-type.type-do i {background-position: -16px -16px;}
+.file-type.type-xl i {background-position: -32px -16px;}
+.file-type.type-pp i {background-position: -48px -16px;}
+.file-type.type-zip i {background-position: -64px -16px;}
+.file-type.type-txt i {background-position: 0px -32px;}
+.file-type.type-jp i {background-position: -16px -32px;}
+.file-type.type-gif i {background-position: -32px -32px;}
+.file-type.type-png i {background-position: -48px -32px;}
+.file-type.type-audio i {background-position: -64px -32px;}
+
+.main-list td .quick-edit {
+ height: 24px;
+ margin-top: 5px;
+}
+.main-list td .quick-edit .nav {
+ display: none;
+ margin-bottom: 0;
+}
+.main-list tr:hover .quick-edit .nav {
+ display: block;
+}
+.main-list td .quick-edit .nav > li > a {
+ padding-top: 4px;
+ padding-bottom: 4px;
+ margin-top: 0px;
+ margin-bottom: 0px;
+ border: 1px dotted #d1d1d1;
+}
+.main-list td .quick-edit .nav > li > a:hover {
+ border: 1px dotted transparent;
+}
+.main-list thead tr.sort-header th a {
+ padding: 8px;
+ margin: -8px;
+ display: block;
+ color: #FFFFFF;
+ text-decoration: none;
+}
+.main-list thead tr.sort-header th.active a {
+ padding-bottom: 4px;
+ border-bottom: 4px solid #08c;
+}
+.main-list .footable-row-detail td {
+ padding: 0;
+ border-top: none;
+}
+.main-list .footable-row-detail td .footable-row-detail-inner {
+ display: none;
+ padding: 8px;
+ position: relative;
+ border-radius: 5px;
+ margin: 0 8px 8px;
+ background-color: #ededed;
+}
+.main-list .footable-row-detail td .footable-row-detail-inner:after {
+ display: block;
+ height: 0px;
+ width: 0px;
+ position: absolute;
+ top: -6px;
+ left: 50%;
+ margin-left: -3px;
+ content: "";
+ border-style: solid;
+ border-width: 0 6px 6px 6px;
+ border-color: transparent transparent #ededed transparent;
+}
+.main-list .footable-row-detail td .footable-row-detail-inner div {
+ margin: 10px 0;
+}
+#preview .preview {
+ margin: 0 auto;
+}
+
+
+/* For Retina */
+@media screen and (-webkit-min-device-pixel-ratio: 2), screen and (max--moz-device-pixel-ratio: 2) {
+ .main-list td .file-type[class^="type-"] i,
+ .main-list td .file-type[class*=" type-"] i,
+ .main-forms fieldset .input-area .controls .file-type[class*=" type-"] i,
+ .main-forms fieldset .input-area .controls .file-type[class^="type-"] i {
+ background-image: url(<%= asset_path 'file_type@2x.png' %>);
+ background-size: 80px 48px;
+ }
+}
+
+
+/* Responsive */
+@media (max-width: 480px) {
+ .main-list td .quick-edit .nav {
+ display: block;
+ }
+}
\ No newline at end of file
diff --git a/app/assets/stylesheets/lib/member.css b/app/assets/stylesheets/lib/member.css
new file mode 100644
index 0000000..5c94bad
--- /dev/null
+++ b/app/assets/stylesheets/lib/member.css
@@ -0,0 +1,419 @@
+/* List View */
+#list-view h4 a {
+ color: #000;
+ text-decoration: none;
+ display: block;
+ width: 100%;
+ text-overflow: ellipsis;
+ overflow: hidden;
+ white-space: nowrap;
+}
+
+/* List */
+#list-view #member-list tr.highlight td {
+ background-color: #FFFAE5;
+}
+#list-view #member-list tr.highlight td:first-child {
+ padding: 0
+}
+#list-view #member-list .gender,
+#list-view #member-list td[class^="gender-"] {
+ width: 5px;
+ padding: 0;
+}
+#list-view #member-list td.gender-man {
+ background-color: #34ADFF;
+}
+#list-view #member-list td.gender-woman {
+ background-color: #FF3196;
+}
+#list-view #member-list td.gender-none {
+ background-color: #DDDDDD;
+}
+
+/* Abstract */
+#list-view #member-abstract,
+#list-view #member-card {
+ list-style: none;
+ margin: 0;
+ padding: 0;
+}
+#list-view #member-abstract > li {
+ background-color: #FFFFFF;
+ width: 250px;
+ box-shadow: 0px 0px 5px rgba(0, 0, 0, .2);
+ position: relative;
+ overflow: hidden;
+ margin: 5px;
+ min-height: 280px;
+ float: left;
+ -webkit-border-radius: 5px;
+ -moz-border-radius: 5px;
+ border-radius: 5px;
+}
+#list-view #member-abstract hr {
+ margin: 5px 0 10px;
+ border-top: 1px solid #e6e6e6;
+}
+#list-view #member-abstract [class^="gender-"],
+#list-view #member-abstract [class*=" gender-"] {
+ display: block;
+ position: absolute;
+ width: 0px;
+ height: 0px;
+ border-style: solid;
+ border-width: 30px 30px 0 0;
+ top: 0;
+ left: 0;
+ z-index: 1;
+}
+#list-view #member-abstract .gender-man {
+ border-color: #34ADFF transparent transparent transparent;
+}
+#list-view #member-abstract .gender-woman {
+ border-color: #FF3196 transparent transparent transparent;
+}
+#list-view #member-abstract .gender-none {
+ border-color: #DDDDDD transparent transparent transparent;
+}
+#list-view #member-abstract .member-avatar {
+ position: relative;
+ -webkit-border-radius: 5px 5px 0 0;
+ -moz-border-radius: 5px 5px 0 0;
+ border-radius: 5px 5px 0 0;
+ overflow: hidden;
+ height: 120px;
+}
+#list-view #member-abstract .member-avatar .action {
+ position: absolute;
+ z-index: 1;
+ top: 45px;
+ line-height: 30px;
+ left: 50%;
+ width: 80%;
+ margin-left: -40%;
+ text-align: center;
+ visibility: hidden;
+}
+#list-view #member-abstract .member-avatar .action > a {
+ color: #FFFFFF;
+ text-decoration: none;
+ font-size: 1.5em;
+ background-color: #0088cc;
+ padding: 3px 5px;
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ border-radius: 3px;
+ margin-left: 5px;
+ box-shadow: 5px 5px 10px rgba(0, 0, 0, .4);
+}
+#list-view #member-abstract .member-avatar .action > a:first-child {
+ margin-left: 0px;
+}
+#list-view #member-abstract .member-avatar .action > a.edit {
+}
+#list-view #member-abstract .member-avatar .action > a.key {
+}
+#list-view #member-abstract .member-avatar .action > a.trash {
+ background-color: #b94a48;
+}
+/*#list-view #member-abstract .member-avatar:after {
+ content: "";
+ position: absolute;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ display: block;
+ margin: 0;
+ background-color: #000000;
+ -webkit-border-radius: 5px 5px 0 0;
+ -moz-border-radius: 5px 5px 0 0;
+ border-radius: 5px 5px 0 0;
+ opacity: 0;
+ -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
+ filter: alpha(opacity=0);
+}*/
+#list-view #member-abstract > li .member-avatar:after {
+ -webkit-backface-visibility: hidden;
+ content: "";
+ position: absolute;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ display: block;
+ margin: 0;
+ background-color: #000000;
+ -webkit-border-radius: 5px 5px 0 0;
+ -moz-border-radius: 5px 5px 0 0;
+ border-radius: 5px 5px 0 0;
+ opacity: 0;
+ -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
+ filter: alpha(opacity=0);
+}
+#list-view #member-abstract > li:hover .member-avatar:after {
+ -webkit-backface-visibility: hidden;
+ opacity: .4;
+ -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=40)";
+ filter: alpha(opacity=40);
+}
+#list-view #member-abstract > li:hover .member-avatar .action {
+ visibility: visible;
+}
+#list-view #member-abstract .member-avatar img {
+ width: 100%;
+}
+#list-view #member-abstract .member-info {
+ padding: 10px;
+ -webkit-border-radius: 0 0 5px 5px;
+ -moz-border-radius: 0 0 5px 5px;
+ border-radius: 0 0 5px 5px;
+}
+#list-view #member-abstract .member-name {
+ margin: 0;
+}
+#list-view #member-abstract .member-roles {
+ margin: 0;
+ list-style: none;
+}
+#list-view #member-abstract .member-roles li {
+ margin-bottom: 5px;
+}
+#list-view #member-abstract .member-roles .member-staturs {
+ padding: 2px 4px;
+ font-size: 11.844px;
+}
+
+/* Card */
+#list-view #member-card > li {
+ width: 160px;
+ margin: 10px 20px;
+ float: left;
+ position: relative;
+}
+#list-view #member-card > li:hover .member-avatar .action {
+ visibility: visible;
+}
+#list-view #member-card .highlight {
+ background-color: #F0F0F0;
+ outline: 1px dashed #9E9E9E;
+}
+#list-view #member-card .member-avatar {
+ width: 150px;
+ height: 150px;
+ overflow: hidden;
+ border-radius: 500px;
+ border: 5px solid #FFFFFF;
+ box-shadow: 0px 0px 5px rgba(0, 0, 0, .2);
+ left: 0;
+ top: 0;
+}
+#list-view #member-card .member-avatar.gender-man {
+ border-color: #34ADFF;
+}
+#list-view #member-card .member-avatar.gender-woman {
+ border-color: #FF3196;
+}
+#list-view #member-card .member-avatar.gender-nene {
+ border-color: #DDDDDD;
+}
+#list-view #member-card .member-avatar img {
+ /*width: 100%;*/
+ max-width: none;
+}
+#list-view #member-card > li .member-avatar:after {
+ -webkit-backface-visibility: hidden;
+ content: "";
+ position: absolute;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ display: block;
+ margin: 0;
+ background-color: #000000;
+ -webkit-border-radius: 50%;
+ -moz-border-radius: 50%;
+ border-radius: 50%;
+ opacity: 0;
+ -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";
+ filter: alpha(opacity=100);
+}
+#list-view #member-card > li:hover .member-avatar:after {
+ opacity: .4;
+ -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=40)";
+ filter: alpha(opacity=40);
+}
+/*#list-view #member-card .member-avatar > span {
+ position: absolute;
+ width: 150px;
+ height: 150px;
+ top: 5px;
+ left: 5px;
+ display: block;
+ margin: 0;
+ background-color: #000000;
+ border-radius: 500px;
+ opacity: 0;
+ -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
+ filter: alpha(opacity=0);
+}*/
+#list-view #member-card .member-avatar .action {
+ position: absolute;
+ z-index: 1;
+ top: 65px;
+ line-height: 30px;
+ left: 50%;
+ width: 140px;
+ margin-left: -70px;
+ text-align: center;
+ visibility: hidden;
+}
+#list-view #member-card .member-avatar .action > a {
+ color: #FFFFFF;
+ font-size: 1.2em;
+ background-color: #0088cc;
+ text-decoration: none;
+ padding: 3px 5px;
+ border-radius: 3px;
+ margin-left: 5px;
+ box-shadow: 5px 5px 10px rgba(0, 0, 0, .4);
+}
+#list-view #member-card .member-avatar .action > a:first-child {
+ margin-left: 0px;
+}
+#list-view #member-card .member-avatar .action > a.edit {
+}
+#list-view #member-card .member-avatar .action > a.key {
+}
+#list-view #member-card .member-avatar .action > a.trash {
+ background-color: #b94a48;
+}
+
+/* Profile */
+#profile {
+
+}
+#profile #basic-info {
+ position: absolute;
+ width: 340px;
+ margin-right: 10px;
+ padding-right: 10px;
+ border-right: 1px solid #e5e5e5;
+}
+#profile #basic-info .basic-profile {
+ margin-left: 116px;
+}
+#profile #basic-info .basic-profile h4 {
+ margin: 0 auto;
+ max-width: 224px;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+}
+#profile #basic-info .basic-profile .btn-group {
+ display: block;
+ margin-top: 20px;
+}
+#profile #basic-info .member-avatar {
+ width: 103px;
+ height: 103px;
+ float: left;
+ border: 3px solid #ffffff;
+ -webkit-border-radius: 9px;
+ -moz-border-radius: 9px;
+ border-radius: 9px;
+}
+#profile #basic-info .member-avatar:after {
+ content: "";
+ -webkit-backface-visibility: hidden;
+}
+#profile #basic-info .member-avatar.gender-man {
+ border-color: #34ADFF;
+}
+#profile #basic-info .member-avatar.gender-woman {
+ border-color: #FF3196;
+}
+#profile #basic-info .member-avatar.gender-none {
+ border-color: #DDDDDD;
+}
+#profile #member-roles {
+ clear: both;
+ margin-top: 30px;
+}
+#profile #member-roles .roles h4 {
+ position: relative;
+ border-bottom: 5px solid #b1b1b1;
+ height: 8px;
+}
+#profile #member-roles .roles h4 span {
+ position: absolute;
+ background-color: #F3F3F3;
+ padding: 0 5px;
+ left: 50%;
+}
+#profile #member-roles .roles dl {
+ background-color: #ffffff;
+ padding: 10px;
+}
+#profile #member-roles .roles:last-child dl {
+ margin-bottom: 0;
+}
+#profile #member-roles .roles dt {
+ border-bottom: 1px dotted #e7e7e7;
+ font-size: 1.2em;
+ margin-top: 20px;
+}
+#profile #member-roles .roles dt:first-child {
+ margin-top: 0px;
+}
+#profile #member-roles .roles dd {
+ color: #999999;
+}
+#profile #module-navbar {
+ margin-left: 10px;
+}
+#profile #module-navbar .navbar {
+ margin-bottom: 15px;
+}
+#profile #member-module {
+ margin-left: 360px;
+}
+#profile #member-module #module-content {
+ padding: 0 0 0 10px;
+}
+#profile #member-module #module-content .content {
+ right: 10px;
+ padding-bottom: 10px;
+ outline: none;
+}
+#profile #member-module #module-content .list-active {
+ padding-bottom: 8px;
+ /*border-bottom: 1px solid #DDD;*/
+}
+
+/* Responsive */
+@media (max-width: 979px) {
+ #profile #member-info {
+ width: 100%;
+ position: relative;
+ bottom: auto;
+ top: auto;
+ }
+ #profile #member-info #basic-info {
+ margin-bottom: 0;
+ }
+ #profile #member-info #role-groups {
+ overflow: auto;
+ }
+ #profile #member-info #role-groups .content {
+ margin-right: 0;
+ position: static;
+ overflow: auto;
+ overflow-x: auto;
+ }
+ #profile .member-module {
+ margin-left: 0;
+ }
+}
\ No newline at end of file
diff --git a/app/assets/stylesheets/lib/mt-list.css b/app/assets/stylesheets/lib/mt-list.css
new file mode 100644
index 0000000..5620866
--- /dev/null
+++ b/app/assets/stylesheets/lib/mt-list.css
@@ -0,0 +1,72 @@
+#mt-list tr.disable + tr.footable-row-detail td {
+ background-color: #EEE;
+}
+#mt-list tr.disable + tr.footable-row-detail td .footable-row-detail-inner {
+ background-color: #FFF;
+}
+#mt-list tr.disable + tr.footable-row-detail td .footable-row-detail-inner:after {
+ border-color: transparent transparent #FFF transparent;
+}
+#mt-list th.first {
+ min-width: 300px;
+}
+#mt-list td.active {
+ text-align: center;
+}
+#mt-list td {
+ vertical-align: middle;
+}
+#mt-list .footable-row-detail-inner {
+ text-align: left;
+}
+#mt-list td.detail-row {
+ cursor:pointer;
+}
+#mt-list td .btn-mini {
+ width: 100%;
+}
+#mt-list .module_icon {
+ position: relative;
+}
+#mt-list .module_icon .progress {
+ display: none;
+ position: absolute;
+ left: 8px;
+ right: 8px;
+ bottom: 10px;
+ margin-bottom: 0;
+ border-radius: 5px;
+ height: 10px;
+ box-shadow: 0 -1px 0 rgba(0, 0, 0, .4), 0 1px 0 rgba(255, 255, 255, .2);
+}
+#mt-list .mt_title span {
+ display: inline-block;
+ margin-right: 10px;
+}
+#mt-list .mt_title span + span {
+ margin-right: 0;
+}
+#mt-list .module_icon {
+ width: 60px;
+ height: 60px;
+ margin-right: 10px;
+}
+#mt-list .temp_pev {
+ width: 109px;
+ height: 79px;
+ margin-right: 10px;
+}
+#mt-list .mt_title,
+#mt-list .mt_dev {
+ margin: 0;
+}
+#mt-list .footable-row-detail-inner {
+ color: #747474;
+}
+#mt-list .footable-row-detail-inner strong {
+ color: #000000;
+}
+#mt-list .togglebox {
+ display: inline-block;
+ float: none;
+}
\ No newline at end of file
diff --git a/app/assets/stylesheets/lib/pageslide.css b/app/assets/stylesheets/lib/pageslide.css
new file mode 100644
index 0000000..4e971a4
--- /dev/null
+++ b/app/assets/stylesheets/lib/pageslide.css
@@ -0,0 +1,213 @@
+#pageslide {
+ /* These styles MUST be included. Do not change. */
+ display: none;
+ position: fixed;
+ top: 40px;
+ bottom: 0;
+ z-index: 1000;
+ overflow: auto;
+
+ /* Specify the width of your pageslide here */
+ /*padding: 5px;*/
+
+ /* These styles are optional, and describe how the pageslide will look */
+ background-color: #333;
+ color: #FFF;
+ -webkit-box-shadow: inset 0 0 5px 5px #222;
+ -moz-box-shadow: inset 0 0 5px 5px #222;
+ box-shadow: inset 0 0 5px 5px #222;
+}
+#pageslide .page-title {
+ padding: 10px;
+ background-color: #232323;
+ border-bottom: 1px solid #424242;
+ line-height: 2em;
+}
+#pageslide .page-title a {
+ color: #FFF;
+ text-decoration: none;
+ font-size: 1.6em;
+}
+#pageslide .page-title span {
+ font-size: 1.7em;
+}
+#pageslide .view-page {
+ position: absolute;
+ top: 0;
+ bottom: 0;
+ width: 100%;
+}
+#pageslide .content {
+ padding: 15px;
+ outline: none;
+}
+#pageslide form {
+ margin-bottom: 0;
+}
+#pageslide legend {
+ color: #FFFFFF;
+ border-bottom: 1px solid #949494;
+}
+#pageslide .radio.inline,
+#pageslide .checkbox.inline {
+ white-space: nowrap;
+}
+#pageslide .radio.inline,
+#pageslide .checkbox.inline,
+#pageslide .radio.inline + #pageslide .radio.inline,
+#pageslide .checkbox.inline + #pageslide .checkbox.inline {
+ margin-left: 0;
+ margin-right: 20px;
+ margin-right: 10px\9;
+}
+#pageslide .form-actions {
+ background-color: transparent;
+ margin-bottom: 0;
+ margin-bottom: 20px\9;
+ padding: 19px 0 0;
+ border-top-color: #828282;
+ text-align: right;
+}
+#pageslide .preview {
+ position: relative;
+ height: 80px;
+ margin: 0;
+ padding: 0;
+}
+#pageslide .preview img {
+ position: absolute;
+ left: 0;
+ top: 0;
+}
+#pageslide .banner_set {
+ vertical-align: middle;
+ display: inline-block;
+ height: 30px;
+ padding: 0 2px 0 5px;
+}
+#pageslide .groups {
+ margin-bottom: 10px;
+}
+#pageslide .error-cover {
+ position: absolute;
+ top: 0;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ text-align: center;
+ background-color: #333;
+ -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=95)";
+ filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=95);
+ opacity: .95;
+}
+#pageslide .error-cover .msg {
+ position: absolute;
+ top: 50%;
+ margin-top: -55px;
+ height: 110px;
+ width: 100%;
+}
+#pageslide .error-cover i {
+ font-size: 6em;
+}
+#pageslide .error-cover p {
+ font-size: 1.3em;
+}
+#pageslide .suckIE {
+ color: #EE4545;
+}
+#pageslide .link-options {
+ display: none;
+}
+#pageslide .active-link {
+ margin-bottom: 10px;
+}
+#pageslide .active-link > label {
+ margin-bottom: 0;
+}
+#pageslide .active-link .active-mune {
+ margin-left: 20px;
+ display: none;
+}
+#pageslide .active-link .active-mune span {
+ display: inline-block;
+ margin-right: 20px;
+ margin-top: 5px;
+ color: #8A8A8A;
+ float: left;
+}
+#pageslide .display-mode i {
+ font-size: 2em;
+}
+#pageslide .display-mode table {
+ margin-bottom: 10px;
+ text-align: left;
+}
+#pageslide .display-mode table td:last-child {
+ text-align: right;
+}
+#pageslide .display-mode table thead th {
+ color: #8A8A8A;
+ font-size: 12px;
+}
+#pageslide .typesetting {
+ margin: 0;
+ list-style: none;
+}
+#pageslide .typesetting li {
+ width: 60px;
+ height: 60px;
+ position: relative;
+ margin-bottom: 10px;
+ padding: 2px;
+}
+#pageslide .typesetting li.active {
+ border-radius: 5px;
+ background-color: #fff;
+}
+#pageslide .typesetting li.active:after {
+ font-family: FontAwesome;
+ content: "\f00c";
+ font-size: 12px;
+ text-indent: 15px;
+ line-height: 18px;
+ color: #08C;
+ position: absolute;
+ top: 2px;
+ right: 2px;
+ width: 0px;
+ height: 0px;
+ border-style: solid;
+ border-width: 0 30px 30px 0;
+ border-color: transparent #FFF transparent transparent;
+ z-index: 1;
+}
+#pageslide .typesetting input[type="radio"] {
+ -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
+ filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0)0;
+ opacity: 0;
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ margin: 0;
+}
+#pageslide .typesetting img {
+ width: 100%;
+ height: 100%;
+}
+#pageslide .typesetting .style_description {
+ position: absolute;
+ width: 195px;
+ top: 0;
+ left: 75px;
+ line-height: 1.1em;
+ font-size: 12px;
+ color: #E7E7E7;
+ padding-top: 5px;
+}
+
+
+/* iFrame */
+#pageslide_iframe .page_content {
+ background-color: #000;
+}
\ No newline at end of file
diff --git a/app/assets/stylesheets/lib/sitemap.css b/app/assets/stylesheets/lib/sitemap.css
new file mode 100644
index 0000000..b0d1c0f
--- /dev/null
+++ b/app/assets/stylesheets/lib/sitemap.css
@@ -0,0 +1,144 @@
+#sitemap ul {
+ list-style: none;
+}
+#sitemap .map-tree {
+ margin: 0;
+}
+#sitemap .map-tree li.disabled {
+ color: #c4c4c4;
+ background-color: #F5F5F5;
+}
+#sitemap .map-tree > li {
+ margin-bottom: 20px;
+ padding: 0;
+ border: 1px solid #ddd;
+ background: #fcfcfc;
+ -webkit-border-radius: 0px 0px 2px 2px;
+ -moz-border-radius: 0px 0px 2px 2px;
+ border-radius: 0px 0px 2px 2px;
+ -webkit-box-shadow: 0 1px 0px rgba(255, 255, 255, .6);
+ -moz-box-shadow: 0 1px 0px rgba(255, 255, 255, .6);
+ box-shadow: 0 1px 0px rgba(255, 255, 255, .6);
+}
+#sitemap .map-tree li {
+ position: relative;
+}
+#sitemap .map-tree li li:before {
+ content: "";
+ position: absolute;
+ top: -12px;
+ left: -13px;
+ bottom: 0;
+ border-left: 1px solid #ebebeb;
+}
+#sitemap .map-tree li li li:before {
+ top: -5px;
+ left: 18px;
+}
+#sitemap .map-tree li:last-child:before {
+ bottom: 20px;
+}
+#sitemap .map-tree li li:after {
+ content: "";
+ position: absolute;
+ left: -13px;
+ top: 20px;
+ width: 8px;
+ border-bottom: 1px solid #ebebeb;
+}
+#sitemap .map-tree li li li:after {
+ left: 18px;
+}
+#sitemap .map-tree h6 {
+ margin: 0;
+ padding: 10px;
+ line-height: 14px\9;
+}
+#sitemap .map-tree h6:after {
+ content: "";
+ clear: both;
+ display: block;
+ visibility: hidden;
+}
+#sitemap .map-tree h6 span {
+ display: inline-block;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+}
+#sitemap .map-tree > li > h6 {
+ border-bottom: 1px solid #ddd;
+ background-color: #fafafa;
+ background-image: -moz-linear-gradient(top, #fafafa, #efefef);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fafafa), to(#efefef));
+ background-image: -webkit-linear-gradient(top, #fafafa, #efefef);
+ background-image: -o-linear-gradient(top, #fafafa, #efefef);
+ background-image: linear-gradient(to bottom, #fafafa, #efefef);
+ filter: progid:dximagetransform.microsoft.gradient(startColorstr='#fafafa', endColorstr='#efefef', GradientType=0);
+ -webkit-box-shadow: none;
+ -moz-box-shadow: none;
+ box-shadow: none;
+ -webkit-border-radius: 2px 2px 0px 0px;
+ -moz-border-radius: 2px 2px 0px 0px;
+ border-radius: 2px 2px 0px 0px;
+}
+#sitemap .map-tree > li > h6 > b {
+ font-size: 18px;
+ float: left;
+ line-height: 17px;
+ margin-right: 5px;
+}
+#sitemap .map-tree > li > ul > li {
+ border-radius: 5px;
+ border: 1px solid #ededed;
+ margin: 10px 10px 10px 0;
+}
+#sitemap .map-tree > li > ul > li > ul {
+ margin: 0;
+}
+#sitemap .map-tree > li > ul > li > ul > li {
+ padding-left: 20px;
+}
+#sitemap .line {
+ width: 2px;
+ position: absolute;
+ top: -10px;
+ bottom: 0;
+ left: 50%;
+ margin-left: -1px;
+ background-color: #ebebeb;
+}
+#sitemap .line ul[class^="line"] {
+ position: absolute;
+ margin: 0 0 0 -30px;
+ left: 50%;
+ top: 0;
+ bottom: 0;
+ width: 60px;
+ text-align: center;
+}
+#sitemap .line ul[class^="line"] li {
+ /*font-size: 18px;*/
+ position: absolute;
+ color: #8A8A8A;
+ width: 10px;
+ height: 10px;
+ line-height: 28px;
+ left: 50%;
+ margin-left: -5px;
+ border-radius: 100%;
+ background-color: #DBDBDB;
+ box-shadow: 0px -1px 0px rgba(0, 0, 0, .1), inset 0px -1px 0px rgba(255, 255, 255 ,1);
+}
+#sitemap #map-tree-language {
+ /*display: inline-block;*/
+ position: relative;
+ left: 50%;
+ margin: 0 0 10px;
+ padding-bottom: 10px;
+ /*border-bottom: 1px solid #ebebeb;*/
+}
+#sitemap .map-tree-content {
+ position: relative;
+ overflow: visible;
+}
\ No newline at end of file
diff --git a/app/assets/stylesheets/lib/tags-groups.css b/app/assets/stylesheets/lib/tags-groups.css
new file mode 100644
index 0000000..dff88fc
--- /dev/null
+++ b/app/assets/stylesheets/lib/tags-groups.css
@@ -0,0 +1,158 @@
+.tags .lead {
+ padding: 20px 5px 0px;
+ margin-bottom: 5px;
+ border-bottom: 1px solid #e5e5e5;
+}
+.tags .lead .badge {
+ margin-top: 5px;
+}
+.tags-groups {
+ list-style: none;
+ margin: 0 0 20px;
+ padding: 0;
+}
+.tags-groups:after {
+ content: "";
+ clear: both;
+ height: 0;
+ display: block;
+ visibility: hidden;
+}
+.tags-groups.module-tags li.default a {
+ margin-left: 5px;
+}
+.tags-groups li {
+ overflow: hidden;
+ float: left;
+ width: auto;
+ display: inline-block;
+ padding: 2px 10px;
+ margin: 5px;
+ background-color: #f89406;
+ white-space: nowrap;
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+ -webkit-border-radius: 12px;
+ -moz-border-radius: 12px;
+ border-radius: 12px;
+ -webkit-transition: all .2s linear;
+ -moz-transition: all .2s linear;
+ -o-transition: all .2s linear;
+ transition: all .2s linear;
+}
+.tags-groups li.mark {
+ width: 0;
+ height: 0;
+ padding: 0;
+ margin: 0;
+ -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
+ filter: alpha(opacity=0);
+ opacity: 0;
+ visibility: hidden;
+}
+.tags-groups li.active {
+ background-color: #3a87ad;
+}
+.tags-groups li.active .amount {
+ color: #8cb8be;
+}
+.tags-groups li a {
+ text-decoration: none;
+ color: #ededed;
+}
+.tags-groups li .amount {
+ color: #fdcf3b;
+ float: right;
+ margin-left: 15px;
+}
+.tags-groups li .card {
+ position: relative;
+ margin: 0;
+ width: 18px;
+ height: 18px;
+}
+.tags-groups li .card:after {
+ font-family: FontAwesome;
+ content: '\f111';
+ color: #fdcf3b;
+ font-size: 14px;
+ display: block;
+ width: 10px;
+ height: 20px;
+ position: absolute;
+ left: 0;
+ top: 0;
+}
+.tags-groups li .card.active:after {
+ content: '\f058';
+ font-size: 18px;
+ left: -2px;
+ top: 1px;
+}
+.tags-groups li .card input {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 20px;
+ height: 20px;
+ z-index: 1;
+ margin: 0;
+ opacity: 0;
+ filter: alpha(opacity=0);
+ -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
+}
+
+
+/* Tags Merger */
+#tags-merger.modal {
+ width: 960px;
+ margin-left: -480px;
+}
+#tags-merger form {
+ margin-bottom: 0;
+}
+#tags-merger .tags-groups li {
+ cursor: pointer;
+}
+#tags-merger .tags-groups li.def {
+ background-color: #468847;
+}
+#tags-merger .modal-body .pull-left {
+ margin: 0 5px;
+}
+#tags-merger .modal-body .help-block {
+ text-align: left;
+ padding: 0 5px;
+}
+
+
+
+
+.tags-groups li.default {
+ background-color: #468847;
+}
+.tags-groups li.default.active {
+ background-color: #3a87ad;
+}
+.tags-groups li.default .amount {
+ color: #8cbe9a;
+}
+.tags-groups li.default.active .amount {
+ color: #8cb8be;
+}
+.tags-groups li.default .card:after {
+ color: #8cbe9a;
+}
+.tags-groups li.active .card:after {
+ color: #8cb8be;
+}
+
+
+
+
+#pageslide #filter-default-tag {
+ width: 199px;
+ margin-bottom: 5px;
+}
+#pageslide .add-default-tags-list {
+ margin-bottom: 0;
+}
\ No newline at end of file
diff --git a/app/assets/stylesheets/lib/togglebox.css b/app/assets/stylesheets/lib/togglebox.css
new file mode 100644
index 0000000..865b746
--- /dev/null
+++ b/app/assets/stylesheets/lib/togglebox.css
@@ -0,0 +1,133 @@
+.toggle-control {
+ margin-bottom: 10px;
+}
+.toggle-control:after {
+ content: "";
+ clear: both;
+ display: block;
+ visibility: hidden;
+}
+.toggle-control .togglebox {
+ float: left;
+ display: inline-block;
+ background-color: #8ac324;
+ width: 40px;
+ height: 18px;
+ box-shadow: inset 0 0 3px rgba(22,22,22,.4);
+ border-radius: 3px;
+ overflow: hidden;
+ position: relative;
+ -webkit-transition: all .2s linear;
+ -moz-transition: all .2s linear;
+ -o-transition: all .2s linear;
+ transition: all .2s linear;
+}
+.toggle-control .togglebox input[type="checkbox"],
+.toggle-control .togglebox input[type="radio"] {
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ margin: 0;
+ z-index: 1;
+ top: 0;
+ left: 0;
+ bottom: 0;
+ right: 0;
+ -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
+ filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
+ opacity: 0;
+}
+.toggle-control .togglebox label {
+ position: absolute;
+ z-index: 0;
+ width: 60px;
+ height: 18px;
+ margin: 0;
+ -webkit-transition: all .2s linear;
+ -moz-transition: all .2s linear;
+ -o-transition: all .2s linear;
+ transition: all .2s linear;
+}
+.toggle-control .togglebox label b {
+ display: block;
+ width: 19px;
+ height: 16px;
+ position: absolute;
+ z-index: 1;
+ top: 1px;
+ left: 20px;
+ border-radius: 2px;
+ box-shadow: 0px 0px 2px rgba(0,0,0,.4);
+ background-color: #fafafa;
+ background-image: -moz-linear-gradient(top, #fafafa, #efefef);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fafafa), to(#efefef));
+ background-image: -webkit-linear-gradient(top, #fafafa, #efefef);
+ background-image: -o-linear-gradient(top, #fafafa, #efefef);
+ background-image: linear-gradient(to bottom, #fafafa, #efefef);
+ filter: progid:dximagetransform.microsoft.gradient(startColorstr='#fafafa', endColorstr='#efefef', GradientType=0);
+}
+.toggle-control .togglebox.disable {
+ background-color: #999b93;
+}
+.toggle-control .togglebox.disable label {
+ left: -19px;
+}
+.toggle-control .togglebox label:before,
+.toggle-control .togglebox label:after {
+ font-family: FontAwesome;
+ font-size: 12px;
+ height: 18px;
+ line-height: 19px;
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ margin: 0;
+}
+.toggle-control .togglebox label:before {
+ content: "\f00c";
+ text-align: left;
+ color: #dbf1d2;
+ padding-left: 4px;
+ text-shadow: 0px -1px 0px #5f8718;
+}
+.toggle-control .togglebox label:after {
+ content: "\f00d";
+ text-align: right;
+ color: #dadada;
+ padding-right: 7px;
+ text-shadow: 0px -1px 0px #4c4c48;
+}
+.toggle-control p {
+ display: inline-block;
+ height: 22px;
+ line-height: 20px;
+ font-size: 1.1em;
+ margin: 7px 20px 0 5px;
+}
+
+.control-group .toggle-control .togglebox {
+ margin-top: 5px;
+ height: 22px;
+}
+
+#users .toggle-control .togglebox {
+ margin-left: 10px;
+ height: 22px;
+}
+#users .toggle-control .togglebox label,
+.control-group .toggle-control .togglebox label {
+ height: 22px;
+}
+#users .toggle-control .togglebox label b,
+.control-group .toggle-control .togglebox label b {
+ height: 20px;
+}
+#users .toggle-control .togglebox label:before,
+#users .toggle-control .togglebox label:after,
+.control-group .toggle-control .togglebox label:before,
+.control-group .toggle-control .togglebox label:after {
+ line-height: 22px;
+ height: 22px;
+}
\ No newline at end of file
diff --git a/app/assets/stylesheets/lib/wrap-nav.css b/app/assets/stylesheets/lib/wrap-nav.css
new file mode 100644
index 0000000..2021845
--- /dev/null
+++ b/app/assets/stylesheets/lib/wrap-nav.css
@@ -0,0 +1,71 @@
+/* Wrap Nav */
+
+/* Top Nav */
+.topnav {
+ margin-bottom: 10px;
+ margin-top: -60px;
+ border-bottom: 1px solid #e5e5e5;
+ position: relative;
+ z-index: 1000;
+ /*position: fixed;*/
+ /*top: 40px;*/
+ /*left: 81px;*/
+ /*right: 20px;*/
+ padding: 10px 0px 0px;
+ background-color: #F3F3F3;
+}
+.topnav form {
+ margin-bottom: 6px;
+}
+.topnav .btn-group {
+ margin-top: 3px;
+ margin-left: 10px;
+}
+.topnav .searchClear input {
+ height: 16px;
+ margin-top: 4px;
+ margin-left: 10px;
+}
+.topnav .btn-group {
+ margin-left: 0;
+}
+.topnav .view-switch {
+ margin-left: 10px;
+}
+
+/* Bottom Nav */
+.bottomnav {
+ padding: 10px 0 5px;
+ left: 81px;
+ right: 20px;
+ bottom: 0px;
+ position: fixed;
+ z-index: 1;
+ background-color: #F3F3F3;
+ border-top: 1px solid #DDDDDD;
+}
+.bottomnav .action {
+ margin-bottom: 6px;
+}
+.bottomnav .divider {
+ display: inline-block;
+ position: relative;
+ margin: 0 5px;
+ background-color: #E0E0E0;
+ width: 1px;
+ height: 16px;
+ top: 5px;
+ box-shadow: 1px 0 0 #FFF;
+}
+.bottomnav .pagination {
+ margin: 0;
+}
+#module-content .bottomnav {
+ left: 451px;
+}
+
+/* Breadcrumb */
+.topnav .breadcrumb {
+ background-color: transparent;
+ margin-bottom: 0px;
+}
\ No newline at end of file
diff --git a/app/assets/stylesheets/structure.css b/app/assets/stylesheets/structure.css
new file mode 100644
index 0000000..2f3264f
--- /dev/null
+++ b/app/assets/stylesheets/structure.css
@@ -0,0 +1,6 @@
+/*
+ *= require basic
+ *= require lib/items
+ *= require lib/pageslide
+ *= require lib/wrap-nav
+*/
\ No newline at end of file
diff --git a/app/controllers/admin/dashboards_controller.rb b/app/controllers/admin/dashboards_controller.rb
index bad4c3f..329a92c 100644
--- a/app/controllers/admin/dashboards_controller.rb
+++ b/app/controllers/admin/dashboards_controller.rb
@@ -1,4 +1,6 @@
class Admin::DashboardsController < ApplicationController
+ layout "back_end"
+
def index
end
end
diff --git a/app/models/module_app.rb b/app/models/module_app.rb
index 4b02359..e25499c 100644
--- a/app/models/module_app.rb
+++ b/app/models/module_app.rb
@@ -1,8 +1,10 @@
class ModuleApp
include Mongoid::Document
+ include Mongoid::Timestamps
+
field :title, type: String
field :key, type: String
-
+ field :sidebar_order,type: Integer,default: 0
def get_registration
OrbitApp::Module::Registration.find_by_key(key)
@@ -11,4 +13,17 @@ class ModuleApp
def self.find_by_key(key)
self.find_by(:key => key)
end
+
+ def module_name
+ I18n.t(get_registration.get_label_i18n)
+ end
+
+ def label
+ I18n.t(label_i18n)
+ end
+
+ def label_i18n
+ reg = get_registration
+ reg.nil? ? 'Init is not defined completely' : get_registration.get_label_i18n
+ end
end
diff --git a/app/views/admin/dashboards/index.html.erb b/app/views/admin/dashboards/index.html.erb
index 611d39b..e69de29 100644
--- a/app/views/admin/dashboards/index.html.erb
+++ b/app/views/admin/dashboards/index.html.erb
@@ -1,2 +0,0 @@
-Admin::Dashboards#index
-Find me in app/views/admin/dashboards/index.html.erb
diff --git a/app/views/layouts/_side_bar.html.erb b/app/views/layouts/_side_bar.html.erb
new file mode 100644
index 0000000..b07128d
--- /dev/null
+++ b/app/views/layouts/_side_bar.html.erb
@@ -0,0 +1,17 @@
+
+
+
+ <% OrbitApp::Module::SideBarRegistration.all.sort{|x,y| x.get_module_app_key <=> y.get_module_app_key}.each do |t| %>
+ <%= t.render(request, params, @module_app) %>
+ <% end %>
+
\ No newline at end of file
diff --git a/app/views/layouts/back_end.html.erb b/app/views/layouts/back_end.html.erb
new file mode 100644
index 0000000..69b302e
--- /dev/null
+++ b/app/views/layouts/back_end.html.erb
@@ -0,0 +1,21 @@
+
+
+
+ RulingOrbit - Administrator
+ <%= stylesheet_link_tag "back_end", media: "all", "data-turbolinks-track" => true %>
+ <%= javascript_include_tag "jquery11" %>
+ <%= csrf_meta_tags %>
+
+
+
+
+
+<%= yield %>
+
+
+
diff --git a/config/application.rb b/config/application.rb
index 5216270..66e7975 100644
--- a/config/application.rb
+++ b/config/application.rb
@@ -32,6 +32,10 @@ module OrbitStore
config.assets.paths << "#{path}/assets/images"
end
+ Dir.glob("#{Rails.root}/app/templates/*").each do |path|
+ config.assets.paths << "#{path}/assets/fonts"
+ end
+
# tell the I18n library where to find your translations
I18n.load_path += Dir[Rails.root.join('lib', 'locale', '*.{rb,yml}')]
diff --git a/config/routes.rb b/config/routes.rb
index 79d0007..819cdca 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -1,8 +1,4 @@
OrbitStore::Application.routes.draw do
-
- namespace :admin do
- get 'dashboards/index'
- end
get "/pages/edit_view" => "pages#edit_view"
get "/pages/preview" => "pages#preview"
@@ -22,6 +18,9 @@ OrbitStore::Application.routes.draw do
# You can have the root of your site routed with "root"
root 'pages#home'
scope "(:locale)", locale: /en|zh_tw/ do
+ namespace :admin do
+ resources :dashboards
+ end
get ':page(/:page)(/:page)(/:page)', to: 'pages#show', constraints: KeywordConstraint.new
resources :pages
end
diff --git a/lib/orbit_app.rb b/lib/orbit_app.rb
index d3abe68..aacb1f5 100644
--- a/lib/orbit_app.rb
+++ b/lib/orbit_app.rb
@@ -1,5 +1,8 @@
+require 'orbit_app/helper/renderer'
+require 'orbit_app/helper/side_bar_renderer'
require 'orbit_app/register_module'
require 'orbit_app/module/registration'
+require 'orbit_app/module/side_bar'
module OrbitApp
extend RegisterModule
diff --git a/lib/orbit_app/helper/renderer.rb b/lib/orbit_app/helper/renderer.rb
new file mode 100644
index 0000000..7da629a
--- /dev/null
+++ b/lib/orbit_app/helper/renderer.rb
@@ -0,0 +1,36 @@
+module Renderer
+ include Rails.application.routes.url_helpers
+ include ActionView::Helpers::UrlHelper
+ include ActionView::Helpers::TagHelper
+ include ActionView::Helpers::RenderingHelper
+ include ActionView::Context
+ include OrbitBasis::RenderAnywhere
+
+protected
+
+ def request
+ @request
+ end
+
+ def default_url_options
+ _routes.default_url_options
+ end
+
+ def _routes
+ @request.env["action_dispatch.routes"]
+ end
+
+ def controller
+ @params[:controller]
+ end
+
+ def action
+ @params[:action]
+ end
+
+ protected
+ def display?
+ true
+ end
+
+end
\ No newline at end of file
diff --git a/lib/orbit_app/helper/side_bar_renderer.rb b/lib/orbit_app/helper/side_bar_renderer.rb
new file mode 100644
index 0000000..9feebb0
--- /dev/null
+++ b/lib/orbit_app/helper/side_bar_renderer.rb
@@ -0,0 +1,35 @@
+module SideBarRenderer
+ include Renderer
+ include ActionView::Helpers::TextHelper
+
+ def render(request,params,current_module_app)
+ @belong_module_app = get_module_app
+ @current_module_app = current_module_app
+ @request = request
+ @params = params
+ content_tag :div, class: "sub-nav-block #{@icon_class}" do
+ concat content_tag :h4, I18n.t(@head_label)
+ concat (content_tag :ul, class: "nav nav-list" do
+ @context_links.sort_by {| obj | obj.priority}.map{ |link|
+ link.render(request, params, @current_module_app, @belong_module_app)
+ }.join.html_safe
+ end)
+ end
+ end
+
+ def render_head(request, params, current_module_app)
+ @belong_module_app = get_module_app
+ @current_module_app = current_module_app
+ @request = request
+ @params = params
+ content_tag :li, class: (module_sidebar_active? ? 'active' : nil) do
+ link_to eval(@head_link) do
+ content_tag :span do
+ content_tag(:i, nil, class: @icon_class)
+ end
+ end
+ end
+ end
+
+
+end
\ No newline at end of file
diff --git a/lib/orbit_app/module/registration.rb b/lib/orbit_app/module/registration.rb
index 3f063dc..ec6a38a 100644
--- a/lib/orbit_app/module/registration.rb
+++ b/lib/orbit_app/module/registration.rb
@@ -34,6 +34,7 @@ module OrbitApp
def initialize(name,&block)
@name = name
@key = @name.underscore.singularize
+ @side_bar = nil
@module_label = @name
@widget_methods = []
block.arity < 1 ? instance_eval(&block) : block.call(self) if block_given?
@@ -66,6 +67,14 @@ module OrbitApp
@widget_methods
end
+ def get_icon_class
+ @side_bar.get_icon_class
+ end
+
+ def side_bar(&block) #setter for side_bar from init
+ @side_bar = SideBarRegistration::SideBar.new(@name,@key,method(:get_module_app), &block)
+ end
+
end
end
end
diff --git a/lib/orbit_app/module/side_bar.rb b/lib/orbit_app/module/side_bar.rb
new file mode 100644
index 0000000..e698c1c
--- /dev/null
+++ b/lib/orbit_app/module/side_bar.rb
@@ -0,0 +1,92 @@
+module OrbitApp
+ module Module
+ module SideBarRegistration
+ Version = "0.5"
+
+ module ClassMethods
+ #initiate a blank array for generating the side bar
+ cattr_accessor :side_bars
+ self.side_bars = []
+
+ def add(var)
+ self.side_bars << var
+ end
+
+ def find_by_key(key)
+ self.side_bars.each{|t|
+ return t if t.name.eql?(key)
+ }
+ return nil
+ end
+
+ def render_all(request,params,user,current_module_app)
+ self.side_bars.collect{|t| t.render(request,params,user,current_module_app)}.join.html_safe
+ end
+
+ def all
+ return self.side_bars
+ end
+
+ def all_get_ordered!
+ self.side_bars.sort! {|x,y| x.get_sidebar_order! <=> y.get_sidebar_order! }
+ end
+
+ end
+
+ extend ClassMethods
+ def self.included(other)
+ other.extend(ClassMethods)
+ end
+
+ class SideBar
+ include SideBarRenderer
+
+ def initialize(name = '',key,get_module_app,&block)
+ @head_label = name
+ @head_link = ""
+ @app_base_path = ''
+ @module_app_key = key
+ @get_module_app = get_module_app
+ @sidebar_order = 0
+ block.arity < 1 ? instance_eval(&block) : block.call(self) if block_given?
+ finalize!
+ SideBarRegistration.add(self)
+ SideBarRegistration.all_get_ordered!
+ end
+
+ def get_sidebar_order!
+ @sidebar_order = (get_module_app.sidebar_order rescue 0)
+ end
+
+ def get_icon_class
+ @icon_class
+ end
+
+ def get_module_app
+ @get_module_app.call
+ end
+
+ def get_module_app_key
+ @module_app_key
+ end
+
+ def head_label_i18n(var,options ={})
+ @head_label = var
+ @icon_class = options[:icon_class]
+ end
+
+ def head_link_path(var)
+ @head_link = var
+ end
+
+ def finalize!
+ set_controllers_scope
+ current_priority = @context_links.count
+ @context_links.each do |t|
+ t.finalize!
+ end
+ end
+ end
+ end
+ end
+end
\ No newline at end of file
diff --git a/lib/orbit_basis.rb b/lib/orbit_basis.rb
new file mode 100644
index 0000000..a0e3b53
--- /dev/null
+++ b/lib/orbit_basis.rb
@@ -0,0 +1,28 @@
+module OrbitBasis
+ module RenderAnywhere
+ def render_anywhere(partial,opts)
+ view = ActionView::Base.new(Orbit::Application.config.paths["app/views"].first)
+ view.extend ApplicationHelper
+ view.render(:partial => partial,:locals=>opts)
+ end
+ end
+
+ module BaseModel
+ extend ActiveSupport::Concern
+ module ClassMethods
+
+ def find_in_batches(opts = {})
+ batch_size = opts[:batch_size] || 1000
+ start = opts.delete(:start).to_i || 0
+ objects = self.limit(batch_size).skip(start)
+ t = Time.new
+ while objects.any?
+ yield objects
+ start += batch_size
+ break if objects.size < batch_size
+ objects = self.limit(batch_size).skip(start)
+ end
+ end
+ end
+ end
+end