Merge branch 'master' of gitlab.tp.rulingcom.com:saurabh/orbit4-5 into gravity

This commit is contained in:
Harry Bomrah 2015-04-28 22:35:52 +08:00
commit 1495466b68
106 changed files with 5778 additions and 1557 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

@ -0,0 +1,53 @@
(function() {
"use strict";
// Commonly use variables
var doc = document;
var group = {
// Detect and change the top position of the cycle navs
cycleFix: function() {
if( doc.querySelectorAll( ".group-post-banner-image").length >= 1 ) {
var imgs = doc.querySelectorAll( ".group-post-banner-image" ),
cycleNav = doc.querySelectorAll( ".cycle-nav" ),
len = cycleNav.length,
i = -1;
// Hide the navs when there's noly one slide
if( imgs.length <= 1 ) {
for( i = 0; i < len; i++ ) {
cycleNav[ i ].classList.add( "hide" );
}
}
} else if ( doc.querySelectorAll( ".group-post-banner-image").length === 0 && doc.querySelector( ".group-post-image-wrap" ) ) {
doc.querySelector( ".group-post-image-wrap").classList.add( "hide" );
}
},
// Create scroll effect (with css)
scrollEffect: function() {
if( doc.querySelector( ".group-page") ) {
var page = doc.querySelector( ".group-page" ),
wrap = doc.querySelector( ".group-page-banner-image-wrap" ),
scrollClass = "scroll";
// Use pageYOffset to get the Y positoin and add scroll on it, the animation
// is done by css transition
window.addEventListener( "scroll", function() {
if( window.pageYOffset !== 0 ) {
page.classList.add( scrollClass );
} else {
page.classList.remove( scrollClass );
}
}, false);
}
}
}
// When DOM is completely loaded, execute these functions
document.addEventListener( "DOMContentLoaded", function( event ) {
group.cycleFix();
group.scrollEffect();
});
})();

View File

@ -0,0 +1,388 @@
/*
* The MIT License
* Copyright (c) 2012 Matias Meno <m@tias.me>
*/
@-webkit-keyframes passing-through {
0% {
opacity: 0;
-webkit-transform: translateY(40px);
-moz-transform: translateY(40px);
-ms-transform: translateY(40px);
-o-transform: translateY(40px);
transform: translateY(40px); }
30%, 70% {
opacity: 1;
-webkit-transform: translateY(0px);
-moz-transform: translateY(0px);
-ms-transform: translateY(0px);
-o-transform: translateY(0px);
transform: translateY(0px); }
100% {
opacity: 0;
-webkit-transform: translateY(-40px);
-moz-transform: translateY(-40px);
-ms-transform: translateY(-40px);
-o-transform: translateY(-40px);
transform: translateY(-40px); } }
@-moz-keyframes passing-through {
0% {
opacity: 0;
-webkit-transform: translateY(40px);
-moz-transform: translateY(40px);
-ms-transform: translateY(40px);
-o-transform: translateY(40px);
transform: translateY(40px); }
30%, 70% {
opacity: 1;
-webkit-transform: translateY(0px);
-moz-transform: translateY(0px);
-ms-transform: translateY(0px);
-o-transform: translateY(0px);
transform: translateY(0px); }
100% {
opacity: 0;
-webkit-transform: translateY(-40px);
-moz-transform: translateY(-40px);
-ms-transform: translateY(-40px);
-o-transform: translateY(-40px);
transform: translateY(-40px); } }
@keyframes passing-through {
0% {
opacity: 0;
-webkit-transform: translateY(40px);
-moz-transform: translateY(40px);
-ms-transform: translateY(40px);
-o-transform: translateY(40px);
transform: translateY(40px); }
30%, 70% {
opacity: 1;
-webkit-transform: translateY(0px);
-moz-transform: translateY(0px);
-ms-transform: translateY(0px);
-o-transform: translateY(0px);
transform: translateY(0px); }
100% {
opacity: 0;
-webkit-transform: translateY(-40px);
-moz-transform: translateY(-40px);
-ms-transform: translateY(-40px);
-o-transform: translateY(-40px);
transform: translateY(-40px); } }
@-webkit-keyframes slide-in {
0% {
opacity: 0;
-webkit-transform: translateY(40px);
-moz-transform: translateY(40px);
-ms-transform: translateY(40px);
-o-transform: translateY(40px);
transform: translateY(40px); }
30% {
opacity: 1;
-webkit-transform: translateY(0px);
-moz-transform: translateY(0px);
-ms-transform: translateY(0px);
-o-transform: translateY(0px);
transform: translateY(0px); } }
@-moz-keyframes slide-in {
0% {
opacity: 0;
-webkit-transform: translateY(40px);
-moz-transform: translateY(40px);
-ms-transform: translateY(40px);
-o-transform: translateY(40px);
transform: translateY(40px); }
30% {
opacity: 1;
-webkit-transform: translateY(0px);
-moz-transform: translateY(0px);
-ms-transform: translateY(0px);
-o-transform: translateY(0px);
transform: translateY(0px); } }
@keyframes slide-in {
0% {
opacity: 0;
-webkit-transform: translateY(40px);
-moz-transform: translateY(40px);
-ms-transform: translateY(40px);
-o-transform: translateY(40px);
transform: translateY(40px); }
30% {
opacity: 1;
-webkit-transform: translateY(0px);
-moz-transform: translateY(0px);
-ms-transform: translateY(0px);
-o-transform: translateY(0px);
transform: translateY(0px); } }
@-webkit-keyframes pulse {
0% {
-webkit-transform: scale(1);
-moz-transform: scale(1);
-ms-transform: scale(1);
-o-transform: scale(1);
transform: scale(1); }
10% {
-webkit-transform: scale(1.1);
-moz-transform: scale(1.1);
-ms-transform: scale(1.1);
-o-transform: scale(1.1);
transform: scale(1.1); }
20% {
-webkit-transform: scale(1);
-moz-transform: scale(1);
-ms-transform: scale(1);
-o-transform: scale(1);
transform: scale(1); } }
@-moz-keyframes pulse {
0% {
-webkit-transform: scale(1);
-moz-transform: scale(1);
-ms-transform: scale(1);
-o-transform: scale(1);
transform: scale(1); }
10% {
-webkit-transform: scale(1.1);
-moz-transform: scale(1.1);
-ms-transform: scale(1.1);
-o-transform: scale(1.1);
transform: scale(1.1); }
20% {
-webkit-transform: scale(1);
-moz-transform: scale(1);
-ms-transform: scale(1);
-o-transform: scale(1);
transform: scale(1); } }
@keyframes pulse {
0% {
-webkit-transform: scale(1);
-moz-transform: scale(1);
-ms-transform: scale(1);
-o-transform: scale(1);
transform: scale(1); }
10% {
-webkit-transform: scale(1.1);
-moz-transform: scale(1.1);
-ms-transform: scale(1.1);
-o-transform: scale(1.1);
transform: scale(1.1); }
20% {
-webkit-transform: scale(1);
-moz-transform: scale(1);
-ms-transform: scale(1);
-o-transform: scale(1);
transform: scale(1); } }
.dropzone, .dropzone * {
box-sizing: border-box; }
.dropzone {
min-height: 150px;
border: 2px solid rgba(0, 0, 0, 0.3);
background: white;
padding: 20px 20px; }
.dropzone.dz-clickable {
cursor: pointer; }
.dropzone.dz-clickable * {
cursor: default; }
.dropzone.dz-clickable .dz-message, .dropzone.dz-clickable .dz-message * {
cursor: pointer; }
.dropzone.dz-started .dz-message {
display: none; }
.dropzone.dz-drag-hover {
border-style: solid; }
.dropzone.dz-drag-hover .dz-message {
opacity: 0.5; }
.dropzone .dz-message {
text-align: center;
margin: 2em 0; }
.dropzone .dz-preview {
position: relative;
display: inline-block;
vertical-align: top;
margin: 16px;
min-height: 100px; }
.dropzone .dz-preview:hover {
z-index: 1000; }
.dropzone .dz-preview:hover .dz-details {
opacity: 1; }
.dropzone .dz-preview.dz-file-preview .dz-image {
border-radius: 20px;
background: #999;
background: linear-gradient(to bottom, #eee, #ddd); }
.dropzone .dz-preview.dz-file-preview .dz-details {
opacity: 1; }
.dropzone .dz-preview.dz-image-preview {
background: white; }
.dropzone .dz-preview.dz-image-preview .dz-details {
-webkit-transition: opacity 0.2s linear;
-moz-transition: opacity 0.2s linear;
-ms-transition: opacity 0.2s linear;
-o-transition: opacity 0.2s linear;
transition: opacity 0.2s linear; }
.dropzone .dz-preview .dz-remove {
font-size: 14px;
text-align: center;
display: block;
cursor: pointer;
border: none; }
.dropzone .dz-preview .dz-remove:hover {
text-decoration: underline; }
.dropzone .dz-preview:hover .dz-details {
opacity: 1; }
.dropzone .dz-preview .dz-details {
z-index: 20;
position: absolute;
top: 0;
left: 0;
opacity: 0;
font-size: 13px;
min-width: 100%;
max-width: 100%;
padding: 2em 1em;
text-align: center;
color: rgba(0, 0, 0, 0.9);
line-height: 150%; }
.dropzone .dz-preview .dz-details .dz-size {
margin-bottom: 1em;
font-size: 16px; }
.dropzone .dz-preview .dz-details .dz-filename {
white-space: nowrap; }
.dropzone .dz-preview .dz-details .dz-filename:hover span {
border: 1px solid rgba(200, 200, 200, 0.8);
background-color: rgba(255, 255, 255, 0.8); }
.dropzone .dz-preview .dz-details .dz-filename:not(:hover) {
overflow: hidden;
text-overflow: ellipsis; }
.dropzone .dz-preview .dz-details .dz-filename:not(:hover) span {
border: 1px solid transparent; }
.dropzone .dz-preview .dz-details .dz-filename span, .dropzone .dz-preview .dz-details .dz-size span {
background-color: rgba(255, 255, 255, 0.4);
padding: 0 0.4em;
border-radius: 3px; }
.dropzone .dz-preview:hover .dz-image img {
-webkit-transform: scale(1.05, 1.05);
-moz-transform: scale(1.05, 1.05);
-ms-transform: scale(1.05, 1.05);
-o-transform: scale(1.05, 1.05);
transform: scale(1.05, 1.05);
-webkit-filter: blur(8px);
filter: blur(8px); }
.dropzone .dz-preview .dz-image {
border-radius: 20px;
overflow: hidden;
width: 120px;
height: 120px;
position: relative;
display: block;
z-index: 10; }
.dropzone .dz-preview .dz-image img {
display: block; }
.dropzone .dz-preview.dz-success .dz-success-mark {
-webkit-animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1);
-moz-animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1);
-ms-animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1);
-o-animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1);
animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1); }
.dropzone .dz-preview.dz-error .dz-error-mark {
opacity: 1;
-webkit-animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1);
-moz-animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1);
-ms-animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1);
-o-animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1);
animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1); }
.dropzone .dz-preview .dz-success-mark, .dropzone .dz-preview .dz-error-mark {
pointer-events: none;
opacity: 0;
z-index: 500;
position: absolute;
display: block;
top: 50%;
left: 50%;
margin-left: -27px;
margin-top: -27px; }
.dropzone .dz-preview .dz-success-mark svg, .dropzone .dz-preview .dz-error-mark svg {
display: block;
width: 54px;
height: 54px; }
.dropzone .dz-preview.dz-processing .dz-progress {
opacity: 1;
-webkit-transition: all 0.2s linear;
-moz-transition: all 0.2s linear;
-ms-transition: all 0.2s linear;
-o-transition: all 0.2s linear;
transition: all 0.2s linear; }
.dropzone .dz-preview.dz-complete .dz-progress {
opacity: 0;
-webkit-transition: opacity 0.4s ease-in;
-moz-transition: opacity 0.4s ease-in;
-ms-transition: opacity 0.4s ease-in;
-o-transition: opacity 0.4s ease-in;
transition: opacity 0.4s ease-in; }
.dropzone .dz-preview:not(.dz-processing) .dz-progress {
-webkit-animation: pulse 6s ease infinite;
-moz-animation: pulse 6s ease infinite;
-ms-animation: pulse 6s ease infinite;
-o-animation: pulse 6s ease infinite;
animation: pulse 6s ease infinite; }
.dropzone .dz-preview .dz-progress {
opacity: 1;
z-index: 1000;
pointer-events: none;
position: absolute;
height: 16px;
left: 50%;
top: 50%;
margin-top: -8px;
width: 80px;
margin-left: -40px;
background: rgba(255, 255, 255, 0.9);
-webkit-transform: scale(1);
border-radius: 8px;
overflow: hidden; }
.dropzone .dz-preview .dz-progress .dz-upload {
background: #333;
background: linear-gradient(to bottom, #666, #444);
position: absolute;
top: 0;
left: 0;
bottom: 0;
width: 0;
-webkit-transition: width 300ms ease-in-out;
-moz-transition: width 300ms ease-in-out;
-ms-transition: width 300ms ease-in-out;
-o-transition: width 300ms ease-in-out;
transition: width 300ms ease-in-out; }
.dropzone .dz-preview.dz-error .dz-error-message {
display: block; }
.dropzone .dz-preview.dz-error:hover .dz-error-message {
opacity: 1;
pointer-events: auto; }
.dropzone .dz-preview .dz-error-message {
pointer-events: none;
z-index: 1000;
position: absolute;
display: block;
display: none;
opacity: 0;
-webkit-transition: opacity 0.3s ease;
-moz-transition: opacity 0.3s ease;
-ms-transition: opacity 0.3s ease;
-o-transition: opacity 0.3s ease;
transition: opacity 0.3s ease;
border-radius: 8px;
font-size: 13px;
top: 130px;
left: -10px;
width: 140px;
background: #be2626;
background: linear-gradient(to bottom, #be2626, #a92222);
padding: 0.5em 1.2em;
color: white; }
.dropzone .dz-preview .dz-error-message:after {
content: '';
position: absolute;
top: -6px;
left: 64px;
width: 0;
height: 0;
border-left: 6px solid transparent;
border-right: 6px solid transparent;
border-bottom: 6px solid #be2626; }

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,2 @@
/* Plugin for Cycle2; Copyright (c) 2012 M. Alsup; v20141007 */
!function(a){"use strict";function b(){try{this.playVideo()}catch(a){}}function c(){try{this.pauseVideo()}catch(a){}}var d='<div class=cycle-youtube><iframe width="640" height="360" frameborder="0" allowfullscreen="" data-yt-api-binded="0" src="{{url}}"></iframe></div>';a.extend(a.fn.cycle.defaults,{youtubeAllowFullScreen:!0,youtubeAutostart:!1,youtubeAutostop:!0}),a(document).on("cycle-bootstrap",function(e,f){f.youtube&&(f.hideNonActive=!1,f.container.find(f.slides).each(function(b){if(void 0!==a(this).attr("href")){var c,e=a(this),g=e.attr("href"),h=f.youtubeAllowFullScreen?"true":"false";g+=(/\?/.test(g)?"&":"?")+"enablejsapi=1",f.youtubeAutostart&&f.startingSlide===b&&(g+="&autoplay=1"),c=f.API.tmpl(d,{url:g,allowFullScreen:h}),e.replaceWith(c)}}),f.slides=f.slides.replace(/(\b>?a\b)/,"div.cycle-youtube"),f.youtubeAutostart&&f.container.on("cycle-initialized cycle-after",function(c,d){var e="cycle-initialized"==c.type?d.currSlide:d.nextSlide;a(d.slides[e]).find("object,embed").each(b)}),f.youtubeAutostop&&f.container.on("cycle-before",function(b,d){a(d.slides[d.currSlide]).find("object,embed").each(c)}))})}(jQuery);

View File

@ -14,3 +14,8 @@
*= require lib/filter
*= require lib/pageslide
*/
/* Hide ckeditor text, it's breaking the layout but we need to keep them for future use */
.ui-helper-hidden-accessible {
display: none;
}

View File

@ -318,6 +318,12 @@
}
}
@media (max-width: 540px) {
#orbit-bar .orbit-bar-search-sign-language #search input[type="search"] {
width: 130px;
}
}
@media (max-width: 430px) {
#orbit-bar #search{
display: none;

View File

@ -0,0 +1,107 @@
@charset "utf-8";
@import url(http://fonts.googleapis.com/css?family=Maven+Pro);
@import url(http://fonts.googleapis.com/css?family=Roboto);
// Font stacks
$main-font: "Maven Pro", "微軟正黑體" sans-serif;
$paragraph-font: "Roboto", "微軟正黑體", sans-serif;
$gray: #f3f3f3;
$dark-gray: #aaaaaa;
$light-gray: #cdcdcd;
$white: white;
$light-black: #353535;
$black: black;
$green: #4ad976;
$blue: #4171d5;
$red: #c71932;
$blue-green: #00acee;
$group-page-bar-color: #171717;
// Transition units
$fast: 0.3s;
$normal: 0.6s;
$slow: 1s;
// Border radius units
$general: 0.25rem;
// General style
body {
background: $gray;
font-family: $main-font;
}
// Override and resolve the conflict with main-form.css for that I need RWD support for this page
.main-forms fieldset .input-area .controls textarea {
max-width: none;
}
// Override select2 styles, I need this evil power
#main-wrap {
.select2-container-multi {
margin-right: 0.9375rem;
min-width: 200px;
.select2-choices {
padding: 8px 0.5rem 6px;
border-radius: $general;
}
.select2-search-choice {
padding: 10px 1.75rem 10px 0.7rem;
border-color: lighten($light-gray, 5%);
background: $white;
> div {
&:before {
content: "\F007";
font-family: FontAwesome;
display: inline-block;
font-size: 0.9375rem;
color: $blue;
margin: 0 0.5rem 0 0;
}
}
}
.select2-search-choice-close {
right: 15px;
left: auto;
&:before {
content: "\f057";
font-family: FontAwesome;
position: absolute;
cursor: pointer;
left: 6px;
top: 6px;
font-size: 0.9375rem;
color: $dark-gray;
}
&:hover {
&:before {
color: $red;
}
}
}
}
}
.wrap-inner {
.upload-status-notice {
position: fixed;
right: 1rem;
top: 4rem;
color: $white;
padding: 16px 1.375rem;
background-color: $blue;
border-radius: $general;
font-size: 0.8125rem;
box-shadow: 0px 0px 16px 3px rgba(0, 0, 0, 0.2);
-webkit-animation-duration: .3s;
animation-duration: .3s;
z-index: 3000;
}
}
.img-avatar {
width: 50px;
height: 50px;
}

View File

@ -1,249 +0,0 @@
@charset "utf-8";
body {
background: #f3f3f3;
}
#main-wrap {
padding-top: 0;
}
*,
*:before,
*:after {
box-sizing: border-box;
}
.group-page {}
.group-page-banner-image-wrap {
position: relative;
max-height: 280px;
overflow: hidden;
}
.group-page-view-switch {
position: absolute;
right: 2rem;
top: 2rem;
}
.group-page-banner-image {
max-width: 100%;
width: 100%;
height: auto;
}
.group-page-bar {
overflow: hidden;
background: #171717;
padding: 20px 2rem;
text-align: center;
}
.group-page-title {
padding: 6px 0;
color: #fff;
margin-bottom: 12px;
}
.group-page-setion {
padding: 30px 2rem;
overflow: hidden;
max-width: 1350px;
margin: auto;
}
.gorup-page-info-wrap {
display: block;
font-size: .9rem;
float: right;
padding: 5px .5rem;
border: 2px solid #cdcdcd;
cursor: pointer;
}
.group-page-description-wrap {
clear: both;
}
.gorup-page-info-wrap {
text-align: right;
margin-bottom: 10px;
}
.group-page-status-wrap {
float: right;
font-size: 0.75rem;
color: #fff;
background: #1d9e20;
padding: 2px .4rem;
border-radius: .2rem;
margin-bottom: 10px;
}
.group-page-status-wrap.close-eye{
background: #c71932;
margin-left: 5px;
}
.group-page-description-wrap {
padding: 16px 1.2rem 16px;
margin-bottom: 15px;
box-shadow: inset 0 0 8px #aaa;
border-radius: .2rem;
}
.group-page-description {
clear: both;
text-align: justify;
}
.group-page-post {
clear: both;
text-align: center;
overflow: hidden;
margin-bottom: 40px;
background: #fff;
padding: 28px 1.5rem;
border-radius: .2rem;
box-shadow: 0 1px 3px 0 rgba(0, 0, 0, .2);
}
.group-page-post-link{
text-decoration: none;
color: #000;
}
.group-page-post:hover {
box-shadow: 0 1px 25px 0 rgba(0, 0, 0, .2);
}
.group-page-post-link:hover {
color: #000;
text-decoration: none;
}
.group-page-post-image-wrap {
display: inline-block;
margin-bottom: 12px;
}
.group-page-post-image {
max-width: 100%;
width: 100%;
margin-top: 12px;
/*border-radius: 50%;*/
height: auto;
}
.group-page-post-content {
margin-bottom: .5rem;
}
.group-page-post-title {
font-weight: normal;
font-size: 1.5rem;
line-height: 1;
margin-bottom: 12px;
}
.group-page-post-meta-wrap {
color: #aaa;
}
.group-page-post-author,
.group-page-post-postdate {
margin-right: .5rem;
}
/* scroll view */
.group-page.scroll {
padding-top: 7rem;
}
.group-page.scroll .group-page-banner-image-wrap {
height: 70px;
overflow: hidden;
position: fixed;
top: 0;
}
.group-page.scroll .group-page-title {
margin-bottom: 0;
}
.group-page.scroll .group-page-title {
font-size: 18px;
}
.group-page.scroll .group-page-new-post {
margin-top: 6px;
}
.group-page.scroll .group-page-new-post {
display: inline-block;
vertical-align: top;
}
.group-page.scroll .group-page-view-switch {
position: static;
display: inline-block;
margin: 6px .5rem 0 0;
}
.group-page.scroll .btn {
padding: 2px 5px;
}
.group-page li a {
text-decoration: none;
}
.group-page .group-page-feed-view .active {
color: #fff;
}
/* 600px */
@media screen and (min-width: 37.5rem) {
.group-page-post {
text-align: left;
margin-bottom: 15px;
}
.group-page-post-image-wrap {
float: left;
width: 12%;
margin-right: 4%;
min-width: 100px;
}
.group-page-post-content-wrap {
float: left;
width: 72%;
}
.group-page.scroll .group-page-view-switch {
margin: 6px .5rem 0 0;
}
.group-page.scroll .group-page-bar {
padding: 0 5rem 0 2rem;
position: fixed;
top: 70px;
width: 100%;
}
}
/* 760px */
@media screen and (min-width: 47.5rem) {
.group-page-post-content-wrap {
width: 80%;
}
.group-page-bar {
text-align: left;
}
.group-page-title {
float: left;
margin: 0;
padding: 0;
}
.group-page-new-post {
float: right;
}
.group-page-view-switch {
float: right;
}
}

View File

@ -0,0 +1,765 @@
@charset "utf-8";
@import url(http://fonts.googleapis.com/css?family=Maven+Pro);
@import url(http://fonts.googleapis.com/css?family=Roboto);
// Font stacks
$main-font: "Maven Pro", "微軟正黑體" sans-serif;
$paragraph-font: "Roboto", "微軟正黑體", sans-serif;
$gray: #f3f3f3;
$dark-gray: #aaaaaa;
$light-gray: #cdcdcd;
$white: white;
$light-black: #353535;
$black: black;
$green: #4ad976;
$blue: #4171d5;
$red: #c71932;
$blue-green: #00acee;
$group-page-bar-color: #171717;
// Transition units
$fast: 0.3s;
$normal: 0.6s;
$slow: 1s;
// Border radius units
$general: 0.25rem;
// General style
body {
background: $gray;
font-family: $main-font;
}
*,
*:before,
*:after {
box-sizing: border-box;
}
h1, h2, h3, h4, h5, h6, label, legend {
font-family: $main-font;
}
img {
width: 100%;
max-width: 100%;
height: auto;
}
a {
text-decoration: none;
}
a:hover, a:visited {
text-decoration: none;
}
// General classes
.screen-reader {
position: absolute;
top: -9999px;
left: -9999px;
}
// Buttons
.button {
padding: 8px .75rem;
color: $black;
border: none;
border-radius: 15rem;
background: $gray;
}
.button-default {
color: $blue;
background-color: transparent;
border: 2px solid $blue;
transition: $fast all;
&:hover {
color: $white;
background-color: $blue;
}
}
.button-activated {
color: #fff;
background-color: $green;
}
.button-primary {
color: $white;
background-color: $blue;
transition: $fast all;
&:hover {
color: $white;
background-color: darken($blue, 15%);
}
}
// Button group
.button-group {
display: inline-block;
list-style: none;
> .button-group-common {
display: inline-block;
}
> .button:first-child {
border-radius: 15rem 0 0 15rem;
margin-right: -4px;
}
> .button:last-child {
border-radius: 0 15rem 15rem 0;
}
li {
color: $blue;
background-color: rgba($white, 0.2);
&:hover {
a {
color: $white;
}
}
}
> .active {
color: $white;
background-color: $blue;
a {
color: $white;
}
}
}
// Tool Tip
.tool-tip-parent {
position: relative;
&:hover {
.tool-tip {
display: block;
}
}
}
.tool-tip {
padding: 10px 0.75rem;
border-radius: .2rem;
color: $white;
background: rgba($black, 0.85);
position: absolute;
left: 0;
bottom: 100%;
z-index: 150;
display: none;
&:after {
border: 5px solid transparent;
border-top-color: rgba($black, 0.85);
content: "";
position: absolute;
left: 10px;
bottom: -10px;
}
&.right {
left: auto;
right: 0;
&:after {
left: auto;
right: 10px;
}
}
}
.topnav {
display: none;
}
// breadcrumb
.breadcrumb {
padding-left: 0;
margin: 0;
background: none;
> li {
text-shadow: none;
font-size: 13px;
}
}
// dropzone
.dropzone-pool {
border: 2px dashed $blue;
margin-bottom: 16px;
font-family: $paragraph-font;
font-size: 0.9375rem;
color: $dark-gray;
margin-right: 1rem;
border-radius: $general;
}
// overriding member css
#main-wrap {}
// Group page
#main-wrap {
padding-top: 0;
}
.group-page-banner-wrap {
height: 280px;
overflow: hidden;
position: fixed;
top: 0;
left: 0;
width: 100%;
transition: $fast all;
z-index: 500;
background: $black;
}
.group-page-banner-image-wrap {
background-color: $black;
text-align: center;
}
.group-page-view-switch {
position: absolute;
top: 4rem;
right: 2rem;
}
.group-page-banner-image {
width: auto;
max-width: 100%;
height: auto;
}
.group-page-bar {
padding: 0 2rem 20px 6rem;
text-align: center;
background: rgba($group-page-bar-color, 0.95);
width: 100%;
position: absolute;
left: 0;
bottom: 0;
}
.group-page-view-switch-in-bar {
display: none;
.button {
padding: 3px .75rem;
}
}
.group-page-title {
margin-bottom: 12px;
padding: 6px 0;
color: $white;
font-family: $main-font;
font-weight: normal;
}
.group-page-section {
overflow: hidden;
max-width: 1150px;
margin: auto;
padding: 300px 2rem 30px;
}
.gorup-page-info-wrap {
font-size: .9rem;
padding: 6px 1rem;
display: block;
float: right;
cursor: pointer;
}
.group-page-description-wrap {
clear: both;
}
.gorup-page-info-wrap {
margin-bottom: 10px;
text-align: right;
}
.group-page-status-wrap {
font-size: .75rem;
float: right;
padding: 2px 0.5rem;
margin-bottom: 10px;
}
.group-page-status-wrap.close-eye {
margin-left: 5px;
background: $red;
}
.group-page-description-wrap {
margin-bottom: 15px;
padding: 16px 1.2rem 16px;
border-radius: .2rem;
box-shadow: inset 0 0 8px $dark-gray;
}
.group-page-description {
clear: both;
text-align: justify;
}
.group-page-post {
clear: both;
margin-bottom: 40px;
padding: 28px 1.5rem;
text-align: center;
border-radius: $general;
background: $white;
box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.2);
transition: $normal box-shadow;
}
.group-page-post-link {
text-decoration: none;
color: $black;
}
.group-page-post:hover {
box-shadow: 0 1px 25px 0 rgba(0, 0, 0, 0.2);
}
.group-page-post-link:hover {
text-decoration: none;
color: $black;
}
.group-page-post-image-wrap {
display: inline-block;
margin-bottom: 12px;
}
.group-page-post-image {
width: 100%;
max-width: 100%;
height: auto;
margin-top: 12px;
border: 2px solid $gray;
border-radius: $general;
}
.group-page-post-content {
margin-bottom: .5rem;
color: $dark-gray;
overflow: hidden;
}
.group-page-post-title {
font-size: 1.5rem;
font-weight: normal;
line-height: 1;
margin-bottom: 12px;
color: $light-black;
font-family: $paragraph-font;
}
.group-page-post-sub-wrap {
display: inline-block;
}
.group-page-post-meta-wrap {
color: $dark-gray;
}
.group-page-post-author,
.group-page-post-sub-wrap {
margin-right: .5rem;
}
.group-page-seen-by {
display: inline-block;
}
.group-page-seen-by-lead {
font-style: normal;
}
// scroll view
.group-page.scroll {
padding-top: 7rem;
.group-page-banner-wrap {
height: 120px;
}
.group-page-title {
margin-bottom: 0;
font-size: 1.625rem;
line-height: 50px;
}
.group-page-new-post {
margin-top: 18px;
padding: 6px 10px;
}
.group-page-new-post {
display: inline-block;
vertical-align: top;
}
.group-page-view-switch {
position: static;
display: inline-block;
margin: 6px .5rem 0 0;
display: none;
}
.group-page-view-switch-in-bar {
display: inline-block;
margin-top: 18px;
.button {
padding: 4px .75rem;
}
}
.group-page-section {
padding-top: 60px;
}
.btn {
padding: 2px 5px;
}
}
.group-page li a {
text-decoration: none;
}
.group-page-switch-btn {
color: $blue;
&:hover {
color: $white;
}
}
// 400px
@media screen and (min-width: 25rem) {
.group-page-new-post {
margin: 0 0.625rem 16px;
float: none;
display: inline-block;
}
.group-page-view-switch-in-bar {
float: none;
margin: 0;
.button {
padding: 6px .75rem;
}
}
}
// 600px
@media screen and (min-width: 37.5rem) {
.group-page-post {
margin-bottom: 35px;
text-align: left;
}
.group-page-post-image-wrap {
float: left;
width: 12%;
min-width: 100px;
margin-right: 4%;
max-height: 140px;
overflow: hidden;
}
.group-page-post-content-wrap {
float: left;
width: 70%;
font-family: $paragraph-font;
}
}
/* 760px */
@media screen and (min-width: 47.5rem) {
.group-page-post-content-wrap {
width: 70%;
}
.group-page-bar {
text-align: left;
}
.group-page-title {
display: inline-block;
margin: 0;
padding: 0;
line-height: 70px;
transition: .6s all;
}
.group-page-new-post {
float: right;
margin: 18px 0 0 0;
}
.group-page-view-switch-in-bar {
margin: 18px 8px 0 0;
float: right;
li {
padding: 8px .75rem;
}
}
.group-page-view-switch {
float: right;
}
}
// 900px
@media screen and (min-width: 56.25rem) {
.group-page-post-content-wrap {
width: 80%;
}
}
// Group post
.group-post {
padding: 50px 2rem 30px;
max-width: 1150px;
margin: auto;
}
.group-post-meta {
margin-bottom: 15px;
}
.group-post-title {
font-family: $main-font;
float: left;
width: 90%;
font-weight: normal;
line-height: 1;
}
.group-post-avatar-wrap {
float: right;
padding: 0 0.375rem 0 0;
}
.group-post-avatar-username-toggle {
display: block;
}
.group-post-avatar {
width: 60px;
height: 60px;
border-radius: 50%;
}
.group-post-username {
display: none;
top: 100%;
padding-bottom: 30px;
right: 0;
left: auto;
white-space: nowrap;
font-size: 0.75rem;
&:after {
border-top-color: transparent;
border-bottom-color: rgba(0, 0, 0, 0.85);
top: -10px;
left: auto;
right: 20px;
bottom: auto;
}
}
.group-post-postdate {
display: inline-block;
clear: both;
}
.group-post-image-wrap {
position: relative;
background: $black;
&:hover {
.cycle-nav {
opacity: 1;
}
.group-post-cycle-prev {
left: 2rem;
}
.group-post-cycle-next {
right: 2rem;
}
}
}
.group-post-image-list {
margin: 0;
padding: 0;
list-style: none;
}
.cycle-nav {
font-size: 1.2rem;
position: absolute;
top: 50%;
margin-top: -1.25rem;
line-height: 1.5rem;
color: $white;
z-index: 500;
width: 2.5rem;
height: 2.5rem;
cursor: pointer;
-webkit-transition: $normal all;
transition: $normal all;
text-align: center;
background-color: rgba($black, 0.8);
border-radius: 50%;
opacity: 0;
&:hover {
background-color: $blue;
}
.group-post-cycle-nav-icon {
line-height: 2.6rem;
}
}
.group-post-cycle-prev {
left: 0;
}
.group-post-cycle-next {
right: 0;
}
.group-post-content {
font-family: $main-font;
font-size: .8125rem;
margin: 15px 0;
}
.group-post-attachment-wrap {
float: left;
width: 80%;
margin: 10px 0 25px;
}
.group-post-attachments {
a {
margin-bottom: 10px;
}
}
.group-post-attachment-file-format {
margin-right: 8px;
}
.group-post-seen-by {
float: right;
cursor: pointer;
&:hover {
.group-post-seen-by-names {
display: block;
white-space: nowrap;
}
}
.group-post-seen-by-name {
display: block;
color: #fff;
white-space: nowrap;
}
}
.group-post-seen-by-lead {
margin-right: 4px;
font-style: normal;
}
.group-post-seen-by-names {
display: none;
}
.group-post-seen-by-count {
border-radius: 50%;
background: $gray;
display: inline-block;
}
// Comment section
.comments {
clear: both;
}
.comments .group-post-respond-comment {
width: 100%;
height: 60px;
padding: 0 1rem;
box-shadow: none;
}
.group-post-respond-submit {
font-size: 0.75rem;
}
.group-post-comment-list {
margin: 0;
padding: 0;
list-style: none;
}
.group-post-comment-wrap {
overflow: hidden;
margin-bottom: 25px;
padding-bottom: 8px;
border-bottom: 1px solid lighten($light-gray, 12%);
}
.group-post-no-comment {
font-size: 0.8125rem;
}
.group-post-comment-avatar {
float: left;
width: 60px;
margin-right: 1rem;
img {
width: 60px;
height: 60px;
border-radius: 50%;
}
}
.group-post-comment-author {
font-size: .9375rem;
float: left;
}
.group-post-comment-time {
float: right;
}
.group-post-comment-content {
clear: both;
}
.group-post-comment-body {
float: left;
width: 80%;
}
// 260px
@media screen and (min-width: 16.25rem) {
.group-post-attachments {
a {
display: inline-block;
text-overflow: ellipsis;
}
}
.group-post-attachments-file-name {
display: inline-block;
text-overflow: ellipsis;
overflow: hidden;
vertical-align: middle;
}
}
@media screen and (min-width: 370px) {
.group-post-comment-body {
width: 60%;
}
}
// group new

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,5 @@
class Admin::GroupsController < OrbitMemberController
class Admin::GroupsController < OrbitGroupController
include Admin::GroupsHelper
def index
@groups = current_user.groups
end
@ -13,30 +13,37 @@ class Admin::GroupsController < OrbitMemberController
end
def newpost
render_401 and return if !user_can_write?
@no_breadcrumb = true
uid = params[:group_id].split("-").last
@group = Group.find_by(:uid => uid)
@grouppost = GroupPost.new
end
def createpost
uid = params[:group_id].split("-").last
group = Group.find_by(:uid => uid)
gp = GroupPost.new(post_params)
gp.group = group
gp.group = @group
gp.save
redirect_to admin_group_path(group)
redirect_to admin_group_path(@group)
end
def showpost
render_401 and return if !user_can_read?
if (current_user.id.to_s != @post.author.to_s) && (!@post.read_by.include?(current_user.id.to_s))
@post.read_by << current_user.id.to_s
@post.save
end
@read_by_names = @post.read_by.collect{|rb|
user = User.find(rb) rescue nil
author = (user.member_profile.name == nil ? user.user_name : user.member_profile.name rescue "") if !user.nil?
author
}
end
def show
@no_breadcrumb = true
@no_filter = true
uid = params[:id].split("-").last
@group = Group.find_by(:uid => uid)
if !user_can_read?
render_401 and return
end
end
def create_category
@ -46,6 +53,28 @@ class Admin::GroupsController < OrbitMemberController
render :partial => "group_categories"
end
def upload_photo
photo = GroupPostImage.new(post_image_params)
photo.save
render :json => {"success" => true,"id" => photo.id.to_s}.to_json
end
def upload_file
file = GroupPostFile.new(post_file_params)
file.save
render :json => {"success" => true,"id" => file.id.to_s}.to_json
end
def download_file
file_id = params[:id]
file = GroupPostFile.find(file_id) rescue nil
if !file.nil?
redirect_to file.file.url and return
end
render :nothing => true
end
def create
group = Group.new(group_params)
group.save
@ -70,20 +99,55 @@ class Admin::GroupsController < OrbitMemberController
end
end
def new_comment
gpc = GroupPostComment.new(comment_params)
gpc.save
render :partial => "post_comment", :collection => [gpc]
end
private
def category_params
params.require(:category).permit!
end
def comment_params
params.require(:group_post_comment).permit!
end
def post_params
p = params.require(:group_post).permit!
p["author"] = current_user.id
images = []
p[:group_post_images].each do |id|
gpi = GroupPostImage.find(id) rescue nil
if !gpi.nil?
images << gpi
end
end if !p[:group_post_images].nil?
files = []
p[:group_post_files].each do |id|
gpf = GroupPostFile.find(id) rescue nil
if !gpf.nil?
files << gpf
end
end if !p[:group_post_files].nil?
p[:group_post_images] = images
p[:group_post_files] = files
p
end
def post_image_params
params.require(:group_post_image).permit!
end
def post_file_params
params.require(:group_post_file).permit!
end
def group_params
p = params.require(:group).permit!
p["user_ids"] = [] if p["user_ids"].nil?
p["user_ids"] << current_user.id.to_s
p["admins"] = []
p["admins"] << current_user.id.to_s

View File

@ -0,0 +1,43 @@
class OrbitGroupController < ApplicationController
layout "member"
before_action :authenticate_user, :get_group, :set_access_rights
def get_group
case params[:action]
when "show"
uid = params[:id].split("-").last
@group = Group.find_by(:uid => uid)
when "newpost", "createpost"
uid = params[:group_id].split("-").last
@group = Group.find_by(:uid => uid)
when "showpost"
uid = params[:id].split("-").last
@post = GroupPost.find_by(:uid => uid)
@group = @post.group
end
end
def set_access_rights
@access_right_level = "none"
read_or_write = @group.permission rescue "read"
case params[:action]
when "show", "showpost", "newpost"
is_member = @group.users.include?(current_user)
if @group.admins.include?(current_user.id.to_s)
@access_right_level = "admin"
elsif is_member
if read_or_write == "write"
@access_right_level = "write"
elsif read_or_write == "read"
@access_right_level = "read"
end
elsif !is_member && @group.privacy == "open"
@access_right_level = "read"
end
end
end
def render_401
render "public/401"
end
end

View File

@ -35,7 +35,7 @@ class PagePartsController < ApplicationController
def edit_sub_part
@part = part_model.find(params[:part_id])
@subpart = SubPart.find(params[:sub_part_id])
@select_number = @part.sub_parts.index(@subpart)
@select_number = @part.sub_parts.index{|sp| sp.id.to_s == @subpart.id.to_s}
@child_page_count = 0
@kind = @subpart.kind
@modules = ModuleApp.widget_enabled

View File

@ -0,0 +1,35 @@
module Admin::GroupsHelper
def remote_file_exists?(url)
url = URI.parse(url)
Net::HTTP.start(url.host, url.port) do |http|
return http.head(url.request_uri)['Content-Type'].start_with? 'image'
end
end
def parse_for_images(content)
urls = URI.extract(content)
images = []
urls.each do |url|
images << url if !url.nil? && remote_file_exists?(url)
end if !urls.empty?
image_content = "<br />"
images.each do |img|
content = content.sub(img,"")
image_content = image_content + "<img src='#{img}' style='width:auto;' /><br />"
end if !images.empty?
return [content, image_content]
end
def is_user_group_admin?
return (@access_right_level == "admin" ? true : false)
end
def user_can_write?
return (@access_right_level == "admin" || @access_right_level == "write" ? true : false)
end
def user_can_read?
return (@access_right_level == "admin" || @access_right_level == "write" || @access_right_level == "read" ? true : false)
end
end

View File

@ -80,7 +80,7 @@ class AttributeValue
{
"key" => self.attribute_field.key,
"title" => self.attribute_field.title,
"value" => "",
"value" => "&nbsp;",
"val" => field_value = self.value
}
end

View File

@ -1,20 +1,24 @@
class Group
include Mongoid::Document
include Mongoid::Timestamps
include Slug
include Mongoid::Timestamps
include Slug
field :title, as: :slug_title, type: String, localize: true
field :description, localize: true
field :admins, type: Array, default: []
field :privacy, default: "closed"
mount_uploader :image, ImageUploader
field :title, as: :slug_title, type: String, localize: true
field :description, localize: true
field :admins, type: Array, default: []
field :privacy, default: "closed"
field :permission, default: "write"
field :archive, type: Boolean, default: false
mount_uploader :image, ImageUploader
belongs_to :group_category
has_and_belongs_to_many :users
has_many :group_posts
scope :closed, ->{ where(privacy: "closed") }
scope :open, ->{ where(privacy: "open") }
belongs_to :group_category
has_and_belongs_to_many :users
has_many :group_posts
scope :closed, ->{ where(privacy: "closed") }
scope :open, ->{ where(privacy: "open") }
scope :archived, ->{ where(archive: true) }
scope :not_archived, ->{ where(archive: false) }
end

View File

@ -7,8 +7,10 @@ class GroupPost
field :content
field :read_by, type: Array, default: []
field :author, type: BSON::ObjectId
mount_uploader :image, ImageUploader
belongs_to :group
has_many :group_post_images, :autosave => true, :dependent => :destroy
has_many :group_post_files, :autosave => true, :dependent => :destroy
has_many :group_post_comments, :autosave => true, :dependent => :destroy
end

View File

@ -0,0 +1,9 @@
class GroupPostComment
include Mongoid::Document
include Mongoid::Timestamps
field :comment
belongs_to :user
belongs_to :group_post
end

View File

@ -0,0 +1,9 @@
class GroupPostFile
include Mongoid::Document
include Mongoid::Timestamps
mount_uploader :file, AssetUploader
belongs_to :group_post
end

View File

@ -0,0 +1,9 @@
class GroupPostImage
include Mongoid::Document
include Mongoid::Timestamps
mount_uploader :image, ImageUploader
belongs_to :group_post
end

View File

@ -47,7 +47,7 @@ class MemberProfile
def name
if self.first_name || self.last_name
if self.first_name != "" || self.last_name != ""
I18n.locale.eql?(:zh_tw) ? "#{self.last_name} #{self.first_name}" : "#{self.first_name} #{self.last_name}"
end
end
@ -135,7 +135,7 @@ class MemberProfile
data = self.send(field["key"]) rescue ""
data = (data =~ /\A#{URI::regexp(['http', 'https'])}\z/) ? "<a href='#{data}' target='blank'>#{data}</a>" : data
data = (data =~ /\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b/i) ? "<a href='mailto:#{data}'>#{data}</a>" : data
field_data = data.blank? ? {} : {"key" => field["key"],"title" => I18n.t("users."+field["key"]), "value" =>data}
field_data = data.blank? ? {"key" => field["key"],"title" => I18n.t("users."+field["key"]), "value" => "&nbsp;"} : {"key" => field["key"],"title" => I18n.t("users."+field["key"]), "value" =>data}
field_data
end

View File

@ -151,7 +151,7 @@ class MemberProfileFieldValue
{
"key" => self.member_profile_field.key,
"title" => self.member_profile_field.title,
"value" => (field_value.blank? ? "" : field_value),
"value" => (field_value.blank? ? "&nbsp;" : field_value),
"val" => field_value = self.value
}
end

View File

@ -21,6 +21,7 @@ class User
has_many :authorizations
belongs_to :member_profile
has_and_belongs_to_many :groups
has_many :group_post_comments
has_one :facebook, :autosave => true, :dependent => :destroy
has_one :google, :autosave => true, :dependent => :destroy
# has_one :desktop, :dependent => :destroy

View File

@ -1,10 +1,11 @@
(function( $ ) {
"use strict"
"use strict";
function init() {
var doc = document,
lang = doc.documentElement.lang;
lang = doc.documentElement.lang,
pageModule = doc.body.getAttribute( "data-module" );
var orbit = {
@ -68,7 +69,7 @@
i = -1,
elsLen = els.length;
for( i = 0; i < elsLen; i ++ ) {
for ( i = 0; i < elsLen; i ++ ) {
if ( els[ i ].firstChild !== null ) {
if( els[ i ].firstChild.length > maxLen ) {
newTitle = els[ i ].firstChild.textContent;
@ -79,6 +80,20 @@
}
},
member: {
equalHeight: function() {
var bigbrother = -1;
$( ".i-member-item" ).each( function() {
bigbrother = bigbrother > $( ".i-member-item" ).height() ? bigbrother : $( ".i-member-item" ).height();
});
$( ".i-member-item" ).each( function() {
$( ".i-member-item" ).height( bigbrother );
});
}
},
// Add link and cursor class name on element that has data-link attribute
addLinkOnADBanner: function( els ) {
$.each( els, function() {
@ -112,10 +127,10 @@
}
}
}
}
};
// Specific functions that will be running on homepage
if ( doc.body.getAttribute( "data-module" ) === "home" ) {
if ( pageModule === "home" ) {
}

View File

@ -8,7 +8,7 @@ html {
body {
font-family: $sub-font;
font-size: inherit;
margin-top: 40px; // needed for Orbit bar
margin-top: 40px;
}
a:hover,
a:focus {
@ -26,3 +26,12 @@ th,
td {
padding: 8px .5rem;
}
.borderless>tbody>tr>td,
.borderless>tbody>tr>th,
.borderless>tfoot>tr>td,
.borderless>tfoot>tr>th,
.borderless>thead>tr>td,
.borderless>thead>tr>th {
border: none !important;
}

View File

@ -1,8 +1,5 @@
@charset "utf-8";
// Google fonts
@import url(http://fonts.googleapis.com/css?family=Roboto);
// Base Color
$theme-gray: #495054;
$theme-gray-light: #cecece;
@ -17,11 +14,13 @@ $theme-color-main: #47bab5;
$theme-color-second: #5bc0de;
$theme-color-third: #ed4c43;
// Font stacks
$main-font: 'Roboto', "微軟正黑體", "Helvetica Neue", Helvetica, sans-serif;
$sub-font: 'Roboto', "新細明體", "Helvetica Neue", Helvetica, sans-serif;
// Font sizes
$font-15: 0.9375rem;
$font-13: 0.8125rem;
//
// Modules
@ -71,3 +70,10 @@ $table-th-bgcolor: $theme-color-main;
// Font sizes
$w-item-heading-font-size: 0.85rem;
//
// Member Module
// --------------------------------------------------
$border-width: 4px;

View File

@ -1,4 +0,0 @@
@import "bootstrap/mixins";
@import "bootstrap/variables";
@import "base/mixins";
@import "base/variables";

View File

@ -1,4 +1,3 @@
@import url("http://fonts.googleapis.com/css?family=Droid+Sans:400,700");
@import "bootstrap/mixins";
@import "bootstrap/variables";
@import "base/mixins";

View File

@ -1,9 +1,10 @@
@charset "utf-8";
@import "../initial";
//
// Widget
//
//
// Widget
// ## gerenral styles
@ -15,19 +16,46 @@
}
}
.w-ad-banner__wrap {
width: 100%;
}
// Widget 1
.w-ad-banner__slide {
width: 100%;
}
.banner-pager {
@include list-reset;
position: absolute;
right: 1em;
top: 1em;
z-index: 200;
li {
display: inline-block;
}
a {
background: $theme-color-main;
display: inline-block;
margin-right: 0.25em;
width: 0.8em;
height: 0.8em;
border-radius: 50%;
opacity: .5;
}
.active-slide a {
opacity: 1;
}
}
.banner-responsive {
width: 100%;
}
// Widget 1
.ad-banner-widget-1 {
.w-ad-banner__wrap {
width: 100%;
}
.w-ad-banner__slide {
width: 100%;
}
.w-ad-banner__image {
width: 100%;
height: auto;
}
.w-ad-banner__caption {
background: $theme-color-main;
color: $theme-white;
@ -44,123 +72,50 @@
font-family: $main-font;
font-size: $w-caption-desc;
}
}
.w-ad-banner__pager {
@include list-reset();
position: absolute;
right: 1em;
top: 1em;
z-index: 200;
li {
display: inline-block;
}
a {
background: $theme-color-main;
display: inline-block;
margin-right: 0.25em;
width: 0.8em;
height: 0.8em;
border-radius: 50%;
opacity: 0.5;
}
.active-slide a{
opacity: 1;
}
}
}
// Widget 2
// Widget 2
.ad-banner-widget-2 {
.w-ad-banner__wrap {
width: 100%;
}
.w-ad-banner__slide {
width: 100%;
}
.w-ad-banner__image {
width: 100%;
height: auto;
}
.youtube {
}
.youtube, .cycle-youtube {
width: 100%;
height: 100%;
}
object, embed{
width: 100%;
height: 100%;
object, embed {
width: 100%;
height: 100%;
}
.w-ad-banner__pager {
@include list-reset();
position: absolute;
.banner-pager {
right: 1em;
bottom: 1em;
z-index: 102;
li {
display: inline-block;
}
a {
background: $theme-color-main;
display: inline-block;
margin-right: 0.25em;
width: 0.8em;
height: 0.8em;
border-radius: 50%;
opacity: 0.5;
}
.active-slide a{
opacity: 1;
}
}
}
// Widget 3
.ad-banner-widget-3 {
.w-ad-banner__wrap {
.w-ad-banner__wrap {
width: 100%;
}
.w-ad-banner__slide {
width: 100%;
}
.w-ad-banner__image {
width: 100%;
height: auto;
}
.w-ad-banner__pager {
@include list-reset();
position: absolute;
.banner-pager {
top: auto;
right: 1em;
bottom: 1em;
z-index: 200;
li {
display: inline-block;
}
a {
background: $theme-color-main;
display: inline-block;
margin-right: 0.25em;
width: 0.8em;
height: 0.8em;
border-radius: 50%;
opacity: 0.5;
}
.active-slide a{
opacity: 1;
}
}
}
.cycle-slide-active{
.cycle-slide-active {
z-index: 101 !important;
}

View File

@ -1,64 +1,126 @@
@charset "utf-8";
@import "../initial";
// Member index page
.index-member {
.index-title {
@extend .unity-title;
}
th,
td {
font-family: $sub-font;
font-size: .8125rem;
}
th[class^="member-data-title"] {
white-space: nowrap;
}
.index-member-item {
min-height: 200px;
margin-bottom: 20px;
}
.index-member-item:nth-child(2n+1) {
clear: both;
}
.member-data-title-job-title:before,
.member-data-title-name:before,
.member-data-title-email:before,
.member-data-title-office-tel:before {
font-family: "fontAwesome";
font-size: .75rem;
display: inline-block;
min-width: 15px;
margin-right: .3125rem;
content: "\f007";
color: gray;
}
.member-data-title-job-title:before {
content: "\f19d";
}
.member-data-title-email:before {
content: "\f0e0";
}
.member-data-title-office-tel:before {
content: "\f098";
}
.member-profile-data-wrap {
overflow: hidden;
}
.member-pic {
border-radius: .25rem;
}
}
// Member show page
.show-member {
font-family: $sub-font;
th, td {
font-size: .8125rem;
}
.member-plugins {
margin-bottom: 20px;
a {
font-size: .8125rem;
//
// Index
//
// Member Index
// ## Gerneral styles for Index
// Index 2
.index-member-2 {
.i-member-section {
max-width: 500px;
margin: auto;
}
.i-member-status-title {
@extend .unity-title;
}
.i-member-item-inner {
background: none;
border-radius: 0.25rem;
padding: 24px 1rem;
margin-bottom: 16px;
}
.i-member-pic-wrap {
height: auto;
margin-bottom: 16px;
}
.i-member-pic {
width: 100%;
}
.i-member-profile-list {
@include list-reset;
}
.i-member-profile-item {
margin-bottom: 8px;
font-size: $font-13;
}
// RWD
@media screen and (min-width: $screen-sm) {
.i-member-section {
max-width: 100%;
}
.i-member-item-inner {
background: $theme-gray-lighter;
}
}
}
}
// // Index 3
.index-member-3 {
.i-member-section {
max-width: 500px;
margin: auto;
}
.i-member-status-title {
@extend .unity-title;
}
.i-member-item-inner {
background: none;
border-radius: 0.25rem;
padding: 24px 1rem;
margin-bottom: 16px;
}
.i-member-pic-wrap {
height: auto;
margin-bottom: 16px;
}
.i-member-pic {
width: 100%;
}
.i-member-profile-list {
@include list-reset;
}
.i-member-profile-item {
margin-bottom: 8px;
font-size: $font-13;
}
.i-member-item:nth-child(odd) {
clear: both;
}
.i-member-item-inner {}
.i-member-pic-wrap {
padding: 0;
}
// RWD
@media screen and (min-width: $screen-sm) {
.i-member-section {
max-width: 100%;
}
.i-member-item-inner {
background: $theme-gray-lighter;
}
}
@media screen and (min-width: $screen-md) {
.i-member-pic-wrap {
position: relative;
overflow: hidden;
height: 125px;
}
.i-member-pic {
position: absolute;
top: -100%;
left: 0;
right: 0;
bottom: -100%;
margin: auto;
width: 100%;
}
}
}
// Show page
.show-member {
font-family: $sub-font;
th, td {
font-size: .8125rem;
}
.member-plugins {
margin-bottom: 20px;
a {
font-size: .8125rem;
}
}
}

View File

@ -1,3 +1,5 @@
@import url("http://fonts.googleapis.com/css?family=Droid+Sans:400,700");
// Base
@import "base/pagination";
@import "base/orbitbar-override";

View File

@ -5,7 +5,7 @@
data-cycle-slides=".w-ad-banner__slide"
data-cycle-log="false"
data-overlay=".w-ad-banner__caption"
data-pager=".w-ad-banner__pager"
data-pager=".w-ad-banner__pager-1"
data-pager-template="<li><a href='#'></a></li>"
data-pager-active-class="active-slide"
>
@ -15,11 +15,11 @@
data-cycle-desc="{{context}}"
data-overlay-template="<h2>{{title}}</h2>{{desc}}"
>
<img class="w-ad-banner__image" src="{{image_link}}">
<img class="w-ad-banner__image banner-responsive" src="{{image_link}}">
</div>
</div>
<div class="w-ad-banner__caption"></div>
<ul class="w-ad-banner__pager"></ul>
<ul class="w-ad-banner__pager-1 banner-pager"></ul>
</div>

View File

@ -1,4 +1,4 @@
<div class="w-ad-banner ad-banner-widget-3">
<div class="w-ad-banner ad-banner-widget-2">
<div class="w-ad-banner__wrap cycle-slideshow"
data-list="images"
data-level="0"

View File

@ -7,7 +7,7 @@
data-cycle-log="false"
data-overlay=".w-ad-banner__caption"
data-cycle-auto-height="640:360"
data-pager=".w-ad-banner__pager"
data-pager=".w-ad-banner__pager-2"
data-pager-template="<li><a href='#'></a></li>"
data-pager-active-class="active-slide"
data-cycle-youtube="true"
@ -15,24 +15,50 @@
{{html}}
</div>
<ul class="w-ad-banner__pager"></ul>
<ul class="w-ad-banner__pager-2 banner-pager"></ul>
</div>
<script type="text/javascript">
if (typeof ad_banners_count === 'undefined'){
var ad_banners_count = 0;
}
if(document.getElementById("youtube-iframe-api") == null){
var tag = document.createElement('script');
tag.setAttribute("id", "youtube-iframe-api");
tag.src = "https://www.youtube.com/iframe_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
}
$("document").ready(function(){
$("*[data-youtube-id]").each(function(){
var obj = $(this).find("embed");
obj.attr("id",$(this).data("youtube-id"));
$("*[data-yt-binded=0]").each(function(){
$(this).attr("data-yt-binded","1");
var obj = $(this).find("iframe");
obj.attr("id",$(this).data("youtube-id") + "_" + ad_banners_count);
ad_banners_count++;
})
});
function onYouTubePlayerReady(playerId) {
var y = document.getElementById(playerId);
y.addEventListener("onStateChange", "onytplayerStateChange");
if (typeof onYouTubeIframeAPIReady !== 'function'){
function onYouTubeIframeAPIReady(){
$(".w-ad-banner iframe[data-yt-api-binded=0]").each(function(){
$(this).attr("data-yt-api-binded","1");
new YT.Player($(this).attr("id"), {
events: {
'onStateChange': onPlayerStateChange
}
});
})
}
function onytplayerStateChange(newState) {
if(newState == 0){
$(".cycle-slideshow").cycle("resume");
}else if(newState == 1){
$(".cycle-slideshow").cycle("pause");
function onPlayerStateChange(event){
var iframe = $(event.target.getIframe()),
cyclediv = iframe.parents("div.cycle-slideshow");
if(event.data == YT.PlayerState.PLAYING || event.data == YT.PlayerState.BUFFERING){
cyclediv.cycle("pause");
}else if(event.data == YT.PlayerState.PAUSED || event.data == YT.PlayerState.ENDED){
cyclediv.cycle("resume");
}
}
}
</script>

View File

@ -4,16 +4,19 @@
data-level="0"
data-cycle-slides=".w-ad-banner__slide"
data-cycle-log="false"
data-pager=".w-ad-banner__pager"
data-pager=".w-ad-banner__pager-3"
data-pager-template="<li><a href='#'></a></li>"
data-pager-active-class="active-slide"
>
<div class="w-ad-banner__slide {{class}}"
data-link="{{link}}"
data-cycle-title="{{title}}"
data-cycle-desc="{{context}}"
data-overlay-template="<h2>{{title}}</h2>{{desc}}"
>
<img class="w-ad-banner__image" src="{{image_link}}">
<img class="w-ad-banner__image banner-responsive" src="{{image_link}}">
</div>
</div>
<ul class="w-ad-banner__pager"></ul>
<ul class="w-ad-banner__pager-3 banner-pager"></ul>
</div>

View File

@ -0,0 +1,15 @@
<div class="w-ad-banner ad-banner-widget-4">
<div class="w-ad-banner__wrap cycle-slideshow"
data-list="images"
data-level="0"
data-cycle-slides=".w-ad-banner__slide"
data-cycle-log="false"
>
<div class="w-ad-banner__slide {{class}}"
data-link="{{link}}"
>
<img class="w-ad-banner__image banner-responsive" src="{{image_link}}">
</div>
</div>
</div>

View File

@ -19,8 +19,8 @@
{
"filename" : "ad_banner_widget3",
"name" : {
"zh_tw" : "3. 廣告輪播 ( 圖片 )",
"en" : "3. AD banner ( image )"
"zh_tw" : "3. 橫幅輪播 ( 圖片, 導航圖示 )",
"en" : "3. Carousel ( image, navigation )"
},
"thumbnail" : "thumbnail-block.png"
},

View File

@ -1,24 +0,0 @@
<div class="w-adm widget-admission-1">
<h3 class="w-adm__widget-title">
<span>{{widget-title}}</span>
</h3>
<table class="w-adm__table table">
<thead>
<tr>
<th class="w-adm__th w-adm__th--category">{{category-head}}</th>
<th class="w-adm__th w-adm__th--title">{{title-head}}</th>
</tr>
</thead>
<tbody data-level="0" data-list="announcements">
<tr>
<td class="w-adm__category">{{category}}</td>
<td>
<span class="w-adm__status-wrap" data-list="statuses" data-level="1">
<span class="w-adm__status label status {{status-class}}">{{status}}</span>
</span>
<a class="w-adm__title" href="{{link_to_show}}">{{title}}</a>
</td>
</tr>
</tbody>
</table>
</div>

View File

@ -1,24 +1,19 @@
<div class="w-annc widget-announcement-11">
<div class="w-annc widget-announcement-11">
<h3 class="w-annc__widget-title">
<span>{{widget-title}}</span>
</h3>
<table class="w-annc__table table">
<thead>
<tr>
<th class="w-annc__th w-annc__th--title">{{title-head}}</th>
<th class="w-annc__th w-annc__th--date">{{date-head}}</th>
</tr>
</thead>
<tbody data-level="0" data-list="announcements">
<tr>
<td>
<span class="w-annc__status-wrap" data-list="statuses" data-level="1">
<span class="w-annc__status label status {{status-class}}">{{status}}</span>
</span>
<a class="w-annc__title" href="{{link_to_show}}">{{title}}</a>
</td>
<td class="w-annc__postdate" date-format="%Y-%m-%d">{{postdate}}</td>
</tr>
</tbody>
</table>
</div>
<ul class="w-annc__list" data-level="0" data-list="announcements">
<li class="w-annc__item row">
<span class="w-annc__postdate-wrap col-sm-3" date-format="%Y-%m-%d">
<i class="fa fa-calendar-o"></i>
<span class="w-annc__postdate">{{postdate}}</span>
</span>
<h4 class="w-annc__entry-title col-sm-9">
<span class="w-annc__status-wrap" data-list="statuses" data-level="1">
<span class="w-annc__status label {{status-class}}">{{status}}</span>
</span>
<a class="w-annc__title" href="{{link_to_show}}">{{title}}</a>
</h4>
</li>
</ul>
</div>

View File

@ -2,26 +2,23 @@
<h3 class="w-annc__widget-title">
<span>{{widget-title}}</span>
</h3>
<div class="w-annc__inner row">
<div class="w-annc__img-wrap col-md-4 bullseye">
<img class="w-annc__img" src="{{main_picture}}" alt="{{main_picture_description}}" title="{{main_picture_description}}">
</div>
<ul class="w-annc__list col-md-8" data-level="0" data-list="announcements">
<li class="w-annc__item">
<div class="w-annc__content row">
<h4 class="w-annc__entry-title col-md-9">
<table class="w-annc__table table">
<thead>
<tr>
<th class="w-annc__th w-annc__th--title">{{title-head}}</th>
<th class="w-annc__th w-annc__th--date">{{date-head}}</th>
</tr>
</thead>
<tbody data-level="0" data-list="announcements">
<tr>
<td>
<span class="w-annc__status-wrap" data-list="statuses" data-level="1">
<span class="w-annc__status label {{status-class}}">{{status}}</span>
<span class="w-annc__status label status {{status-class}}">{{status}}</span>
</span>
<a class="w-annc__title" href="{{link_to_show}}">{{title}}</a>
</h4>
<span class="w-annc__postdate-wrap col-md-3" date-format="%Y-%m-%d">
<i class="fa fa-calendar-o"></i>
<span class="w-annc__postdate">{{postdate}}</span>
</span>
</div>
</li>
</ul>
</div>
</div>
</td>
<td class="w-annc__postdate" date-format="%Y-%m-%d">{{postdate}}</td>
</tr>
</tbody>
</table>
</div>

View File

@ -0,0 +1,24 @@
<div class="w-annc widget-announcement-13">
<h3 class="w-annc__widget-title">
<span>{{widget-title}}</span>
</h3>
<table class="w-annc__table table">
<thead>
<tr>
<th class="w-annc__th w-annc__th--date">{{date-head}}</th>
<th class="w-annc__th w-annc__th--title">{{title-head}}</th>
</tr>
</thead>
<tbody data-level="0" data-list="announcements">
<tr>
<td class="w-annc__postdate" date-format="%Y-%m-%d">{{postdate}}</td>
<td>
<span class="w-annc__status-wrap" data-list="statuses" data-level="1">
<span class="w-annc__status label status {{status-class}}">{{status}}</span>
</span>
<a class="w-annc__title" href="{{link_to_show}}">{{title}}</a>
</td>
</tr>
</tbody>
</table>
</div>

View File

@ -0,0 +1,27 @@
<div class="w-annc widget-announcement-14">
<h3 class="w-annc__widget-title">
<span>{{widget-title}}</span>
</h3>
<div class="w-annc__inner row">
<div class="w-annc__img-wrap col-md-4 bullseye">
<img class="w-annc__img" src="{{main_picture}}" alt="{{main_picture_description}}" title="{{main_picture_description}}">
</div>
<ul class="w-annc__list col-md-8" data-level="0" data-list="announcements">
<li class="w-annc__item">
<div class="w-annc__content row">
<h4 class="w-annc__entry-title col-md-9">
<span class="w-annc__status-wrap" data-list="statuses" data-level="1">
<span class="w-annc__status label {{status-class}}">{{status}}</span>
</span>
<a class="w-annc__title" href="{{link_to_show}}">{{title}}</a>
</h4>
<span class="w-annc__postdate-wrap col-md-3" date-format="%Y-%m-%d">
<i class="fa fa-calendar-o"></i>
<span class="w-annc__postdate">{{postdate}}</span>
</span>
</div>
</li>
</ul>
</div>
</div>

View File

@ -1,20 +1,25 @@
<div class="i-annc index-announcement-1 {{display}}">
<div class="i-annc index-announcement-1 {{display}}">
<h3 class="i-annc__page-title">{{page-title}}</h3>
<table class="i-annc__table table table-striped">
<table class="i-annc__table table table-striped">
<thead>
<tr>
<th class="i-annc__th i-annc__th--date">{{date-head}}</th>
<th class="i-annc__th i-annc__th--title">{{title-head}}</th>
<th class="i-annc__th i-annc__th--title">{{category-head}}</th>
<th class="i-annc__th i-annc__th--category">{{category-head}}</th>
<th class="i-annc__th i-annc__th--title">{{title-head}}</th>
<th class="i-annc__th i-annc__th--date">{{date-head}}</th>
</tr>
</thead>
<tbody data-level="0" data-list="announcements">
<tr>
<td class="i-annc__category">{{category}}</td>
<td>
<span class="w-annc__status-wrap" data-list="statuses" data-level="1">
<span class="w-annc__status label {{status-class}}">{{status}}</span>
</span>
<a class="i-annc__title" href="{{link_to_show}}">{{title}}</a>
</td>
<td><span class="i-annc__postdate" date-format="%Y-%m-%d">{{postdate}}</span></td>
<td><a class="i-annc__title" href="{{link_to_show}}">{{title}}</a></td>
<td>{{category}}</td>
</tr>
</tbody>
</table>
</div>
{{pagination_goes_here}}
{{pagination_goes_here}}

View File

@ -0,0 +1,22 @@
<div class="i-annc index-announcement-10">
<h3 class="i-annc__page-title">{{page-title}}</h3>
<ul class="i-annc__list" data-level="0" data-list="announcements">
<li class="i-annc__item row">
<span class="i-annc__postdate-wrap col-sm-2" date-format="%Y-%m-%d">
<i class="fa fa-calendar-o"></i>
<span class="i-annc__postdate">{{postdate}}</span>
</span>
<h4 class="i-annc__entry-title col-sm-8">
<span class="i-annc__status-wrap" data-list="statuses" data-level="1">
<span class="i-annc__status label {{status-class}}">{{status}}</span>
</span>
<a class="i-annc__title" href="{{link_to_show}}">{{title}}</a>
</h4>
<span class="i-annc__category-wrap col-sm-2">
<i class="fa fa-tasks"></i>
<span class="i-annc__category">{{category}}</span>
</span>
</li>
</ul>>
</div>
{{pagination_goes_here}}

View File

@ -0,0 +1,18 @@
<div class="i-annc index-announcement-11">
<h3 class="i-annc__page-title">{{page-title}}</h3>
<ul class="i-annc__list" data-level="0" data-list="announcements">
<li class="i-annc__item row">
<h4 class="i-annc__entry-title col-sm-9">
<span class="i-annc__status-wrap" data-list="statuses" data-level="1">
<span class="i-annc__status label {{status-class}}">{{status}}</span>
</span>
<a class="i-annc__title" href="{{link_to_show}}">{{title}}</a>
</h4>
<span class="i-annc__postdate-wrap col-sm-3" date-format="%Y-%m-%d">
<i class="fa fa-calendar-o"></i>
<span class="i-annc__postdate">{{postdate}}</span>
</span>
</li>
</ul>
</div>
{{pagination_goes_here}}

View File

@ -0,0 +1,18 @@
<div class="i-annc index-announcement-12">
<h3 class="i-annc__page-title">{{page-title}}</h3>
<ul class="i-annc__list" data-level="0" data-list="announcements">
<li class="i-annc__item row">
<span class="i-annc__postdate-wrap col-sm-3" date-format="%Y-%m-%d">
<i class="fa fa-calendar-o"></i>
<span class="i-annc__postdate">{{postdate}}</span>
</span>
<h4 class="i-annc__entry-title col-sm-9">
<span class="i-annc__status-wrap" data-list="statuses" data-level="1">
<span class="i-annc__status label {{status-class}}">{{status}}</span>
</span>
<a class="i-annc__title" href="{{link_to_show}}">{{title}}</a>
</h4>
</li>
</ul>
</div>
{{pagination_goes_here}}

View File

@ -0,0 +1,23 @@
<div class="i-annc index-announcement-13 {{display}}">
<h3 class="i-annc__page-title">{{page-title}}</h3>
<table class="i-annc__table table table-striped">
<thead>
<tr>
<th class="i-annc__th i-annc__th--title">{{title-head}}</th>
<th class="i-annc__th i-annc__th--date">{{date-head}}</th>
</tr>
</thead>
<tbody data-level="0" data-list="announcements">
<tr>
<td>
<span class="i-annc__status-wrap" data-list="statuses" data-level="1">
<span class="i-annc__status label status {{status-class}}">{{status}}</span>
</span>
<a class="i-annc__title" href="{{link_to_show}}">{{title}}</a>
</td>
<td class="i-annc__postdate" date-format="%Y-%m-%d">{{postdate}}</td>
</tr>
</tbody>
</table>
</div>
{{pagination_goes_here}}

View File

@ -0,0 +1,23 @@
<div class="i-annc index-announcement-14 {{display}}">
<h3 class="i-annc__page-title">{{page-title}}</h3>
<table class="i-annc__table table table-striped">
<thead>
<tr>
<th class="i-annc__th i-annc__th--date">{{date-head}}</th>
<th class="i-annc__th i-annc__th--title">{{title-head}}</th>
</tr>
</thead>
<tbody data-level="0" data-list="announcements">
<tr>
<td class="i-annc__postdate" date-format="%Y-%m-%d">{{postdate}}</td>
<td>
<span class="i-annc__status-wrap" data-list="statuses" data-level="1">
<span class="i-annc__status label status {{status-class}}">{{status}}</span>
</span>
<a class="i-annc__title" href="{{link_to_show}}">{{title}}</a>
</td>
</tr>
</tbody>
</table>
</div>
{{pagination_goes_here}}

View File

@ -0,0 +1,25 @@
<div class="i-annc index-announcement-15 {{display}}">
<h3 class="i-annc__page-title">{{page-title}}</h3>
<table class="i-annc__table table table-striped">
<thead>
<tr>
<th class="i-annc__th i-annc__th--date">{{date-head}}</th>
<th class="i-annc__th i-annc__th--title">{{title-head}}</th>
<th class="i-annc__th i-annc__th--category">{{view-count-head}}</th>
</tr>
</thead>
<tbody data-level="0" data-list="announcements">
<tr>
<td class="i-annc__postdate" date-format="%Y-%m-%d">{{postdate}}</td>
<td>
<span class="i-annc__status-wrap" data-list="statuses" data-level="1">
<span class="i-annc__status label status {{status-class}}">{{status}}</span>
</span>
<a class="i-annc__title" href="{{link_to_show}}">{{title}}</a>
</td>
<td class="i-annc__category">{{view_count}}</td>
</tr>
</tbody>
</table>
</div>
{{pagination_goes_here}}

View File

@ -0,0 +1,39 @@
<div class="i-annc index-announcement-16 {{display}}">
<h3 class="i-annc__page-title">{{page-title}}</h3>
<table class="i-annc__table table table-striped">
<thead>
<tr>
<th class="i-annc__th i-annc__th--date">{{date-head}}</th>
<th class="i-annc__th i-annc__th--title">{{title-head}}</th>
<th class="i-annc__th i-annc__th--title">{{link-head}}</th>
<th class="i-annc__th i-annc__th--title">{{file-head}}</th>
</tr>
</thead>
<tbody data-level="0" data-list="announcements">
<tr>
<td class="i-annc__postdate" date-format="%Y-%m-%d">{{postdate}}</td>
<td>
<span class="i-annc__status-wrap" data-list="statuses" data-level="1">
<span class="i-annc__status label status {{status-class}}">{{status}}</span>
</span>
<a class="i-annc__title" href="{{link_to_show}}">{{title}}</a>
</td>
<td>
<ul data-list="bulletin_links" data-level="1">
<li>
<a class="i-annc__title" href="{{link_url}}">{{link_title}}</a>
</li>
</ul>
</td>
<td>
<ul data-list="bulletin_files" data-level="1">
<li>
<a class="i-annc__title" href="{{file_url}}">{{file_title}}</a>
</li>
</ul>
</td>
</tr>
</tbody>
</table>
</div>
{{pagination_goes_here}}

View File

@ -1,30 +1,27 @@
<div class="i-annc index-announcement-2 {{display}}">
<div class="i-annc index-announcement-1 {{display}}">
<h3 class="i-annc__page-title">{{page-title}}</h3>
<ul class="i-annc__list" data-level="0" data-list="announcements">
<li class="i-annc__item row">
<div class="i-annc__img-wrap col-sm-4">
<img class="i-annc__img" src="{{img_src}}" alt="{{img_description}}">
</div>
<div class="i-annc__content-wrap col-sm-8">
<div class="i-annc__meta">
<span class="i-annc__status-wrap" data-list="statuses" data-level="1">
<span class="i-annc__status label status {{status-class}}">{{status}}</span>
<table class="i-annc__table table table-striped">
<thead>
<tr>
<th class="i-annc__th i-annc__th--category">{{category-head}}</th>
<th class="i-annc__th i-annc__th--title">{{title-head}}</th>
<th class="i-annc__th i-annc__th--date">{{date-head}}</th>
<th class="i-annc__th i-annc__th--category">{{view-count-head}}</th>
</tr>
</thead>
<tbody data-level="0" data-list="announcements">
<tr>
<td class="i-annc__category">{{category}}</td>
<td>
<span class="w-annc__status-wrap" data-list="statuses" data-level="1">
<span class="w-annc__status label {{status-class}}">{{status}}</span>
</span>
<span class="i-annc__postdate-wrap" date-format="%Y-%m-%d">
<i class="fa fa-calendar-o"></i>
<span class="i-annc__postdate">{{postdate}}</span>
</span>
<span class="i-annc__category-wrap">
<i class="fa fa-tasks"></i>
<span class="i-annc__category">{{category}}</span>
</span>
</div>
<h4 class="i-annc__entry-title">
<a class="i-annc__title" href="{{link_to_show}}">{{title}}</a>
</h4>
<p class="i-annc__subtitle">{{subtitle}}</p>
</div>
</li>
</ul>
</td>
<td><span class="i-annc__postdate" date-format="%Y-%m-%d">{{postdate}}</span></td>
<td class="i-annc__category">{{view_count}}</td>
</tr>
</tbody>
</table>
</div>
{{pagination_goes_here}}
{{pagination_goes_here}}

View File

@ -1,30 +1,25 @@
<div class="i-annc index-announcement-3 {{display}}">
<div class="i-annc index-announcement-3 {{display}}">
<h3 class="i-annc__page-title">{{page-title}}</h3>
<ul class="i-annc__list" data-level="0" data-list="announcements">
<li class="i-annc__item row">
<div class="i-annc__content-wrap col-sm-8">
<div class="i-annc__meta">
<span class="i-annc__status-wrap" data-list="statuses" data-level="1">
<span class="i-annc__status label status {{status-class}}">{{status}}</span>
<table class="i-annc__table table table-striped">
<thead>
<tr>
<th class="i-annc__th i-annc__th--date">{{date-head}}</th>
<th class="i-annc__th i-annc__th--title">{{title-head}}</th>
<th class="i-annc__th i-annc__th--category">{{category-head}}</th>
</tr>
</thead>
<tbody data-level="0" data-list="announcements">
<tr>
<td><span class="i-annc__postdate" date-format="%Y-%m-%d">{{postdate}}</span></td>
<td>
<span class="w-annc__status-wrap" data-list="statuses" data-level="1">
<span class="w-annc__status label {{status-class}}">{{status}}</span>
</span>
<span class="i-annc__postdate-wrap" date-format="%Y-%m-%d">
<i class="fa fa-calendar-o"></i>
<span class="i-annc__postdate">{{postdate}}</span>
</span>
<span class="i-annc__category-wrap">
<i class="fa fa-tasks"></i>
<span class="i-annc__category">{{category}}</span>
</span>
</div>
<h4 class="i-annc__entry-title">
<a class="i-annc__title" href="{{link_to_show}}">{{title}}</a>
</h4>
<p class="i-annc__subtitle">{{subtitle}}</p>
</div>
<div class="i-annc__img-wrap col-sm-4">
<img class="i-annc__img" src="{{img_src}}" alt="{{img_description}}">
</div>
</li>
</ul>
</td>
<td class="i-annc__category">{{category}}</td>
</tr>
</tbody>
</table>
</div>
{{pagination_goes_here}}

View File

@ -0,0 +1,27 @@
<div class="i-annc index-announcement-4 {{display}}">
<h3 class="i-annc__page-title">{{page-title}}</h3>
<table class="i-annc__table table table-striped">
<thead>
<tr>
<th class="i-annc__th i-annc__th--date">{{date-head}}</th>
<th class="i-annc__th i-annc__th--title">{{title-head}}</th>
<th class="i-annc__th i-annc__th--category">{{category-head}}</th>
<th class="i-annc__th i-annc__th--category">{{view-count-head}}</th>
</tr>
</thead>
<tbody data-level="0" data-list="announcements">
<tr>
<td><span class="i-annc__postdate" date-format="%Y-%m-%d">{{postdate}}</span></td>
<td>
<span class="w-annc__status-wrap" data-list="statuses" data-level="1">
<span class="w-annc__status label {{status-class}}">{{status}}</span>
</span>
<a class="i-annc__title" href="{{link_to_show}}">{{title}}</a>
</td>
<td class="i-annc__category">{{category}}</td>
<td class="i-annc__category">{{view_count}}</td>
</tr>
</tbody>
</table>
</div>
{{pagination_goes_here}}

View File

@ -0,0 +1,30 @@
<div class="i-annc index-announcement-5">
<h3 class="i-annc__page-title">{{page-title}}</h3>
<ul class="i-annc__list" data-level="0" data-list="announcements">
<li class="i-annc__item row">
<div class="i-annc__img-wrap col-sm-4">
<img class="i-annc__img" src="{{img_src}}" alt="{{img_description}}">
</div>
<div class="i-annc__content-wrap col-sm-8">
<div class="i-annc__meta">
<span class="i-annc__status-wrap" data-list="statuses" data-level="1">
<span class="i-annc__status label status {{status-class}}">{{status}}</span>
</span>
<span class="i-annc__postdate-wrap" date-format="%Y-%m-%d">
<i class="fa fa-calendar-o"></i>
<span class="i-annc__postdate">{{postdate}}</span>
</span>
<span class="i-annc__category-wrap">
<i class="fa fa-tasks"></i>
<span class="i-annc__category">{{category}}</span>
</span>
</div>
<h4 class="i-annc__entry-title">
<a class="i-annc__title" href="{{link_to_show}}">{{title}}</a>
</h4>
<p class="i-annc__subtitle">{{subtitle}}</p>
</div>
</li>
</ul>
</div>
{{pagination_goes_here}}

View File

@ -0,0 +1,30 @@
<div class="i-annc index-announcement-6">
<h3 class="i-annc__page-title">{{page-title}}</h3>
<ul class="i-annc__list" data-level="0" data-list="announcements">
<li class="i-annc__item row">
<div class="i-annc__content-wrap col-sm-8">
<div class="i-annc__meta">
<span class="i-annc__status-wrap" data-list="statuses" data-level="1">
<span class="i-annc__status label status {{status-class}}">{{status}}</span>
</span>
<span class="i-annc__postdate-wrap" date-format="%Y-%m-%d">
<i class="fa fa-calendar-o"></i>
<span class="i-annc__postdate">{{postdate}}</span>
</span>
<span class="i-annc__category-wrap">
<i class="fa fa-tasks"></i>
<span class="i-annc__category">{{category}}</span>
</span>
</div>
<h4 class="i-annc__entry-title">
<a class="i-annc__title" href="{{link_to_show}}">{{title}}</a>
</h4>
<p class="i-annc__subtitle">{{subtitle}}</p>
</div>
<div class="i-annc__img-wrap col-sm-4">
<img class="i-annc__img" src="{{img_src}}" alt="{{img_description}}">
</div>
</li>
</ul>
</div>
{{pagination_goes_here}}

View File

@ -0,0 +1,30 @@
<div class="i-annc index-announcement-7">
<h3 class="i-annc__page-title">{{page-title}}</h3>
<ul class="i-annc__list row" data-level="0" data-list="announcements">
<li class="i-annc__item col-md-4">
<div class="i-annc__img-wrap bullseye">
<img class="i-annc__img" src="{{img_src}}" alt="{{img_description}}" title="{{img_description}}">
</div>
<div class="i-annc__content-wrap">
<div class="i-annc__meta">
<span class="i-annc__status-wrap" data-list="statuses" data-level="1">
<span class="i-annc__status label {{status-class}}">{{status}}</span>
</span>
<span class="i-annc__postdate-wrap" date-format="%Y-%m-%d">
<i class="fa fa-calendar-o"></i>
<span class="i-annc__postdate">{{postdate}}</span>
</span>
<span class="i-annc__category-wrap">
<i class="fa fa-tasks"></i>
<span class="i-annc__category">{{category}}</span>
</span>
</div>
<h4 class="i-annc__entry-title">
<a class="i-annc__title" href="{{link_to_show}}">{{title}}</a>
</h4>
<p class="i-annc__subtitle">{{subtitle}}</p>
</div>
</li>
</ul>
</div>
{{pagination_goes_here}}

View File

@ -0,0 +1,26 @@
<div class="i-annc index-announcement-8">
<h3 class="i-annc__page-title">{{page-title}}</h3>
<ul class="i-annc__list row" data-level="0" data-list="announcements">
<li class="i-annc__item">
<div class="i-annc__content-wrap">
<div class="i-annc__meta">
<span class="i-annc__postdate-wrap" date-format="%Y-%m-%d">
<i class="fa fa-calendar-o"></i>
<span class="i-annc__postdate">{{postdate}}</span>
</span>
<span class="i-annc__category-wrap">
<i class="fa fa-tasks"></i>
<span class="i-annc__category">{{category}}</span>
</span>
<span class="i-annc__status-wrap" data-list="statuses" data-level="1">
<span class="i-annc__status label {{status-class}}">{{status}}</span>
</span>
</div>
<h4 class="i-annc__entry-title">
<a class="i-annc__title" href="{{link_to_show}}">{{title}}</a>
</h4>
<p class="i-annc__subtitle">{{subtitle}}</p>
</div>
</li>
</div>
{{pagination_goes_here}}

View File

@ -0,0 +1,22 @@
<div class="i-annc index-announcement-9">
<h3 class="i-annc__page-title">{{page-title}}</h3>
<ul class="i-annc__list" data-level="0" data-list="announcements">
<li class="i-annc__item row">
<span class="i-annc__category-wrap col-sm-2">
<i class="fa fa-tasks"></i>
<span class="i-annc__category">{{category}}</span>
</span>
<h4 class="i-annc__entry-title col-sm-8">
<span class="i-annc__status-wrap" data-list="statuses" data-level="1">
<span class="i-annc__status label {{status-class}}">{{status}}</span>
</span>
<a class="i-annc__title" href="{{link_to_show}}">{{title}}</a>
</h4>
<span class="i-annc__postdate-wrap col-sm-2" date-format="%Y-%m-%d">
<i class="fa fa-calendar-o"></i>
<span class="i-annc__postdate">{{postdate}}</span>
</span>
</li>
</ul>
</div>
{{pagination_goes_here}}

View File

@ -3,26 +3,130 @@
{
"filename" : "annc_index1",
"name" : {
"zh_tw" : "1. 標準表格列表 ( 模組標題, 日期, 標題, 類別 )",
"en" : "1. Standard Table List (widget-title, postdate, title, category)"
"zh_tw" : "1. 標準標題列表-1A ( 模組標題, 類別, 狀態, 標題, 日期 )",
"en" : "1. Standard Title List-1 (widget-title, category, status, title, postdate)"
},
"thumbnail" : "annc_index1_thumbs.png"
},
{
"filename" : "annc_index2",
"name" : {
"zh_tw" : "2. 左圖右文 ( 模組標題, 圖片, 狀態, 日期, 類別, 標題, 副標題 )",
"en" : "2. Balanced Image + Text(Right) (widget-title, image, status, postdate, category, title, subtitle)"
"zh_tw" : "2. 標準標題列表-1B ( 模組標題, 類別, 狀態, 標題, 日期, 瀏覽人次 )",
"en" : "2. Standard Title List-1B (widget-title, category, status, title, postdate, view-counts)"
},
"thumbnail" : "annc_index2_thumbs.png"
},
{
"filename" : "annc_index3",
"name" : {
"zh_tw" : "3. 右圖左文 ( 模組標題, 狀態, 日期, 類別, 標題, 副標題, 圖片 )",
"en" : "3. Balanced Image + Text(left) (widget-title, status, postdate, category, title, subtitle, image)"
"zh_tw" : "3. 標準表格列表-2A ( 模組標題, 日期, 狀態, 標題, 類別 )",
"en" : "3. Standard Table List-2 (widget-title, postdate, status, title, category)"
},
"thumbnail" : "annc_index3_thumbs.png"
},
{
"filename" : "annc_index4",
"name" : {
"zh_tw" : "4. 標準表格列表-2B ( 模組標題, 日期, 狀態, 標題, 類別, 瀏覽人次 )",
"en" : "4. Standard Table List-2 (widget-title, postdate, status, title, category, view-counts)"
},
"thumbnail" : "annc_index4_thumbs.png"
},
{
"filename" : "annc_index5",
"name" : {
"zh_tw" : "5. 左圖右文 ( 模組標題, 圖片, 狀態, 日期, 類別, 標題, 副標題 )",
"en" : "5. Balanced Image + Text(Left) (widget-title, image, status, postdate, category, title, subtitle)"
},
"thumbnail" : "annc_index5_thumbs.png"
},
{
"filename" : "annc_index6",
"name" : {
"zh_tw" : "6. 右圖左文 ( 模組標題, 圖片, 狀態, 日期, 類別, 標題, 副標題 )",
"en" : "6. Balanced Image + Text(Right) (widget-title, image, status, postdate, category, title, subtitle)"
},
"thumbnail" : "annc_index6_thumbs.png"
},
{
"filename" : "annc_index7",
"name" : {
"zh_tw" : "7. 三欄圖文 ( 模組標題, 圖片, 狀態, 日期, 類別, 標題, 副標題 )",
"en" : "7. 3-Column Standard Image + Text (widget-title, image, status, postdate, category, title, subtitle)"
},
"thumbnail" : "annc_index7_thumbs.png"
},
{
"filename" : "annc_index8",
"name" : {
"zh_tw" : "8. 標準文字列表 ( 模組標題, 日期, 類別, 狀態, 標題, 副標題 )",
"en" : "8. Standard Text List (widget-title, postdate, category, status, title, subtitle)"
},
"thumbnail" : "annc_index8_thumbs.png"
},
{
"filename" : "annc_index9",
"name" : {
"zh_tw" : "9. 標準標題列表-1 ( 模組標題, 類別, 狀態, 標題, 日期 )",
"en" : "9. Standard Title List-1 (widget-title, category, status, title, postdate)"
},
"thumbnail" : "annc_index9_thumbs.png"
},
{
"filename" : "annc_index10",
"name" : {
"zh_tw" : "10. 標準標題列表-2 ( 模組標題, 日期, 狀態, 標題, 類別 )",
"en" : "10. Standard Title List-2 (widget-title, postdate, status, title, category)"
},
"thumbnail" : "annc_index10_thumbs.png"
},
{
"filename" : "annc_index11",
"name" : {
"zh_tw" : "11. 精簡標題列表-1 ( 模組標題, 狀態, 標題, 日期 )",
"en" : "11. Simple Title List-1 (widget-title, status, title, postdate)"
},
"thumbnail" : "annc_index11_thumbs.png"
},
{
"filename" : "annc_index12",
"name" : {
"zh_tw" : "12. 精簡標題列表-2 ( 模組標題, 日期, 狀態, 標題 )",
"en" : "12. Simple Title List-2 (widget-title, postdate, status, title)"
},
"thumbnail" : "annc_index12_thumbs.png"
},
{
"filename" : "annc_index13",
"name" : {
"zh_tw" : "13. 精簡表格列表-1 ( 模組標題, 狀態, 標題, 日期 )",
"en" : "13. Simple Table List (widget-title, status, title, postdate)"
},
"thumbnail" : "annc_index13_thumbs.png"
},
{
"filename" : "annc_index14",
"name" : {
"zh_tw" : "14. 精簡表格列表-2 ( 模組標題, 日期, 狀態, 標題 )",
"en" : "14. Simple Table List (widget-title, postdate, status, title)"
},
"thumbnail" : "annc_index14_thumbs.png"
},
{
"filename" : "annc_index15",
"name" : {
"zh_tw" : "15. 精簡表格列表-3 ( 模組標題, 日期, 狀態, 標題, 瀏覽人次 )",
"en" : "15. Simple Table List (widget-title, postdate, status, title, view-counts)"
},
"thumbnail" : "annc_index15_thumbs.png"
},
{
"filename" : "annc_index16",
"name" : {
"zh_tw" : "16. 連結 + 附件表格列表 ( 模組標題, 日期, 狀態, 標題 )",
"en" : "16. Table List including Links and attachments (widget-title, postdate, status, title, view-counts)"
},
"thumbnail" : "annc_index16_thumbs.png"
}
],
"widgets" : [
@ -101,7 +205,7 @@
{
"filename" : "annc_widget10",
"name" : {
"zh_tw" : "10. 精簡標題列表 ( 模組標題, 狀態, 標題, 日期 )",
"zh_tw" : "10. 精簡標題列表-1 ( 模組標題, 狀態, 標題, 日期 )",
"en" : "10. Simple Title List-1 (widget-title, status, title, postdate)"
},
"thumbnail" : "annc_widget10_thumbs.png"
@ -109,18 +213,34 @@
{
"filename" : "annc_widget11",
"name" : {
"zh_tw" : "11. 精簡表格列表 ( 模組標題, 狀態, 標題, 日期 )",
"en" : "11. Simple Table List (widget-title, status, title, postdate)"
"zh_tw" : "11. 精簡標題列表-2 ( 模組標題, 日期, 狀態, 標題 )",
"en" : "11. Simple Title List-2 (widget-title, postdate, status, title)"
},
"thumbnail" : "annc_widget11_thumbs.png"
},
{
"filename" : "annc_widget12",
"name" : {
"zh_tw" : "12. 一圖 + 標題列表 ( 模組標題, 圖片, 狀態, 標題, 日期 )",
"en" : "12. 1 Image + Title List (widget-title, status, title, postdate)"
"zh_tw" : "12. 精簡表格列表-1 ( 模組標題, 狀態, 標題, 日期 )",
"en" : "12. Simple Table List (widget-title, status, title, postdate)"
},
"thumbnail" : "annc_widget12_thumbs.png"
},
{
"filename" : "annc_widget13",
"name" : {
"zh_tw" : "13. 精簡表格列表-2 ( 模組標題, 日期, 狀態, 標題 )",
"en" : "13. Simple Table List (widget-title, postdate, status, title)"
},
"thumbnail" : "annc_widget13_thumbs.png"
},
{
"filename" : "annc_widget14",
"name" : {
"zh_tw" : "14. 一圖 + 標題列表 ( 模組標題, 圖片, 狀態, 標題, 日期 )",
"en" : "14. 1 Image + Title List (widget-title, status, title, postdate)"
},
"thumbnail" : "annc_widget14_thumbs.png"
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

View File

@ -17,4 +17,3 @@
</a>
</div>
</div>
<%= javascript_include_tag "plugin/jquery.cycle2.carousel.min"%>

View File

@ -1,46 +1,46 @@
{
"frontend": [
{
"filename" : "gallery_index1",
"name" : {
"zh_tw" : "1. 相本排版-1",
"en" : "1. Gallery-1"
},
"thumbnail" : "thumbnail-block-list.png"
},
{
"filename" : "gallery_index2",
"name" : {
"zh_tw" : "2. 相本排版-2",
"en" : "2. Gallery-2"
},
"thumbnail" : "thumbnail-block.png"
}
],
"widgets" : [
{
"filename" : "gallery_widget1",
"name" : {
"zh_tw" : "1. 相本排版-1",
"en" : "1. Gallery-1"
},
"thumbnail" : "thumbnail-block.png"
},
{
"filename" : "gallery_widget2",
"name" : {
"zh_tw" : "2. 相本排版-2",
"en" : "2. Gallery-2"
},
"thumbnail" : "thumbnail-block.png"
},
{
"filename" : "gallery_widget3",
"name" : {
"zh_tw" : "3. 相本排版-3",
"en" : "2. Gallery-3"
},
"thumbnail" : "thumbnail-block.png"
}
]
{
"frontend": [
{
"filename" : "gallery_index1",
"name" : {
"zh_tw" : "1. 相本排版-1",
"en" : "1. Gallery-1"
},
"thumbnail" : "thumb.png"
},
{
"filename" : "gallery_index2",
"name" : {
"zh_tw" : "2. 相本排版-2",
"en" : "2. Gallery-2"
},
"thumbnail" : "thumb.png"
}
],
"widgets" : [
{
"filename" : "gallery_widget1",
"name" : {
"zh_tw" : "1. 相本排版-1",
"en" : "1. Gallery-1"
},
"thumbnail" : "thumb.png"
},
{
"filename" : "gallery_widget2",
"name" : {
"zh_tw" : "2. 相本排版-2",
"en" : "2. Gallery-2"
},
"thumbnail" : "thumb.png"
},
{
"filename" : "gallery_widget3",
"name" : {
"zh_tw" : "3. 相本排版-3",
"en" : "2. Gallery-3"
},
"thumbnail" : "thumb.png"
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

View File

@ -0,0 +1,28 @@
{
"frontend": [
{
"filename" : "member_index1",
"name" : {
"zh_tw" : "1. 表格列表",
"en" : "1. Table List"
},
"thumbnail" : "thumbnail-block-list.png"
},
{
"filename" : "member_index2",
"name" : {
"zh_tw" : "2. 單欄式 ( 類別標題, 個人照片, 個人資料)",
"en" : "2. Single Column (category title, photo, profile)"
},
"thumbnail" : "member_index2_thumb.png"
},
{
"filename" : "member_index3",
"name" : {
"zh_tw" : "3. 名片式 ( 類別標題, 個人照片, 個人資料 )",
"en" : "3. Two Columns (category title, photo, profile)"
},
"thumbnail" : "member_index3_thumb.png"
}
]
}

View File

@ -1,31 +1,17 @@
<div class="index-member index1">
<div class="index-member-group" data-list="roles" data-level="0">
<div class="index-member-group-item">
<div class="index-member-status" data-level="1" data-list="status-list">
<h3 class="index-title">
<span>{{status-title}}</span>
</h3>
<div class="index-member-list row" data-level="2" data-list="members">
<div class="index-member-item clearfix col-lg-6 row">
<div class="member-pic-wrap col-xs-4">
<a href="{{link_to_show}}">
<img class="member-pic" src="{{image}}" alt="{{name}}" title="{{name}}" width="100%">
</a>
</div>
<div class="member-profile-data-wrap col-xs-8">
<table class="table">
<tbody data-list="profile_data" data-level="3">
<tr>
<th class="{{title_class}}">{{title}}</th>
<td class="{{value_class}}">{{value}}</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
<div class="i-member index-member-1">
<div class="i-member-group" data-list="roles" data-level="0">
<div class="index-member-status" data-level="1" data-list="status-list">
<h3 class="i-member__status-title">{{status-title}}</h3>
<div class="index-member-list" >
<table class="i-member__table table table-striped">
<tbody data-level="2" data-list="members">
<tr data-list="profile_data" data-level="3">
<td class="{{value_class}}">{{value}}</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
{{pagination_goes_here}}

View File

@ -0,0 +1,29 @@
<div class="i-member index-member-2">
<div data-list="roles" data-level="0">
<div class="i-member-section">
<div data-level="1" data-list="status-list">
<h3 class="i-member-status-title">{{status-title}}</h3>
<div class="i-member-list" data-level="2" data-list="members">
<div class="i-member-item row">
<div class="i-member-item-inner clearfix">
<div class="i-member-pic-wrap col-sm-3">
<a class="i-member-link" href="{{link_to_show}}">
<img class="i-member-pic img-thumbnail" src="{{image}}" alt="{{name}}" title="{{name}}">
</a>
</div>
<div class="i-member-profile-data-wrap col-sm-9">
<ul class="i-member-profile-list" data-list="profile_data" data-level="3">
<li class="i-member-profile-item">
<span class="i-member-title {{title_class}}">{{title}}</span>
<span class="i-member-value {{value_class}}">: {{value}}</span>
</li>
</ul>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
{{pagination_goes_here}}

View File

@ -0,0 +1,29 @@
<div class="i-member index-member-3">
<div data-list="roles" data-level="0">
<div class="i-member-section">
<div data-level="1" data-list="status-list">
<h3 class="i-member-status-title">{{status-title}}</h3>
<div class="i-member-list row" data-level="2" data-list="members">
<div class="i-member-item col-md-6">
<div class="i-member-item-inner clearfix">
<div class="i-member-pic-wrap col-sm-4">
<a class="i-member-link" href="{{link_to_show}}">
<img class="i-member-pic" src="{{image}}" alt="{{name}}" title="{{name}}">
</a>
</div>
<div class="i-member-profile-data-wrap col-sm-8">
<ul class="i-member-profile-list" data-list="profile_data" data-level="3">
<li class="i-member-profile-item">
<span class="i-member-title {{title_class}}">{{title}}</span>
<span class="i-member-value {{value_class}}">: {{value}}</span>
</li>
</ul>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
{{pagination_goes_here}}

View File

@ -1,31 +0,0 @@
<div class="index-member index1">
<div class="index-member-group" data-list="roles" data-level="0">
<div class="index-member-group-item">
<div class="index-member-status" data-level="1" data-list="status-list">
<h3 class="index-title">
<span>{{status-title}}</span>
</h3>
<div class="index-member-list row" data-level="2" data-list="members">
<div class="index-member-item clearfix col-lg-6 row">
<div class="member-pic-wrap col-xs-4">
<a href="{{link_to_show}}">
<img class="member-pic" src="{{image}}" alt="{{name}}" title="{{name}}" width="100%">
</a>
</div>
<div class="member-profile-data-wrap col-xs-8">
<table class="table">
<tbody data-list="profile_data" data-level="3">
<tr>
<th class="{{title_class}}">{{title}}</th>
<td class="{{value_class}}">{{value}}</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
{{pagination_goes_here}}

View File

@ -1,31 +0,0 @@
<div class="index-member index1">
<div class="index-member-group" data-list="roles" data-level="0">
<div class="index-member-group-item">
<div class="index-member-status" data-level="1" data-list="status-list">
<h3 class="index-title">
<span>{{status-title}}</span>
</h3>
<div class="index-member-list row" data-level="2" data-list="members">
<div class="index-member-item clearfix col-lg-6 row">
<div class="member-pic-wrap col-xs-4">
<a href="{{link_to_show}}">
<img class="member-pic" src="{{image}}" alt="{{name}}" title="{{name}}" width="100%">
</a>
</div>
<div class="member-profile-data-wrap col-xs-8">
<table class="table">
<tbody data-list="profile_data" data-level="3">
<tr>
<th class="{{title_class}}">{{title}}</th>
<td class="{{value_class}}">{{value}}</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
{{pagination_goes_here}}

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

@ -11,7 +11,8 @@
<%= javascript_include_tag "plugin/modernizr"%>
<%= javascript_include_tag "plugin/jquery-bullseye-min"%>
<%= javascript_include_tag "//cdnjs.cloudflare.com/ajax/libs/jquery.cycle2/20140415/jquery.cycle2.min.js"%>
<%= javascript_include_tag "//cdnjs.cloudflare.com/ajax/libs/jquery.cycle2/20140415/jquery.cycle2.video.min.js"%>
<%= javascript_include_tag "//cdnjs.cloudflare.com/ajax/libs/jquery.cycle2/20140415/jquery.cycle2.carousel.min.js"%>
<%= javascript_include_tag "plugin/jquery.cycle2.video.min.js"%>
<%= javascript_include_tag "app"%>
<%= javascript_include_tag "#{@dataApi}" if @dataApi != nil%>
<%= render_google_analytics %>

View File

@ -1,3 +1,6 @@
<% content_for :page_specific_javascript do -%>
<%= javascript_include_tag "group.js" %>
<% end -%>
<%
current_user_is_group_admin = group.admins.include?(current_user.id.to_s) ? true : false
if !current_user_is_group_admin
@ -22,7 +25,7 @@
group.admins.each_with_index do |admin,i|
user = User.find(admin) rescue nil
if !user.nil?
author = author + (user.member_profile.name == "" ? user.user_name : user.member_profile.name rescue "")
author = author + (user.member_profile.name == nil ? user.user_name : user.member_profile.name rescue "")
author = author + ", " if i != group.admins.count - 1
end
end
@ -35,7 +38,9 @@
<span class="label <%= group.privacy == 'closed' ? "label-important" : "label-success" %>"><%= group.privacy %></span>
</li>
<li>
<%= group.description %>
<% content = group.description %>
<%= content[0..250] %>
<%= "..." if content.length > 250 %>
</li>
</ul>
</div>

View File

@ -2,16 +2,8 @@
<%= stylesheet_link_tag "lib/main-forms" %>
<%= stylesheet_link_tag "lib/fileupload" %>
<%= stylesheet_link_tag "lib/main-list" %>
<%= stylesheet_link_tag "group_admin" %>
<%= stylesheet_link_tag "select2/select2" %>
<style>
.select2-container{
width : 600px;
}
.img-avatar{
width: 50px;
height: 50px;
}
</style>
<% end %>
<% content_for :page_specific_javascript do %>
<%= javascript_include_tag "lib/bootstrap-fileupload" %>
@ -67,13 +59,28 @@
</div>
</div>
<!-- privacy settings -->
<div class="control-group">
<div class="control-group" id="privacy_box">
<label class="control-label muted">Privacy</label>
<div class="controls">
<input type="radio" name="group[privacy]" value="open" /> Open
<input type="radio" name="group[privacy]" value="closed" checked="checked" /> Closed
<label class="radio inline">
<input type="radio" name="group[privacy]" value="open" /> Open
</label>
<label class="radio inline">
<input type="radio" name="group[privacy]" value="closed" checked="checked" /> Closed
</label>
</div>
</div>
<div class="control-group" id="permission_box">
<label class="control-label muted">Permission</label>
<div class="controls">
<label class="radio inline">
<input type="radio" name="group[permission]" value="read" /> Read
</label>
<label class="radio inline">
<input type="radio" name="group[permission]" value="write" checked="checked" /> Write
</label>
</div>
</div>
<div class="control-group">
<label class="control-label muted"><%= t(:members) %></label>
<div class="controls">

View File

@ -1,10 +1,10 @@
<a href="/admin/posts/<%= post.to_param %>" class="group-page-post-link">
<div class="group-page-post">
<div class="group-page-post clearfix">
<div class="group-page-post-image-wrap">
<% if !post.image.nil? %>
<img class="group-page-post-image" src="<%= post.image.url %>" alt="<%= post.title %>">
<% if !post.group_post_images.blank? %>
<img class="group-page-post-image" src="<%= post.group_post_images.first.image.thumb.url %>" alt="<%= post.title %>">
<% else %>
<img class="group-page-post-image" src="/assets/member-pic.png" alt="Post image">
<img class="group-page-post-image" src="/assets/no-image.jpg" alt="Post image">
<% end %>
</div>
<div class="group-page-post-content-wrap">
@ -21,15 +21,26 @@
<%
user = User.find(post.author) rescue nil
if !user.nil?
author = (user.member_profile.name == "" ? user.user_name : user.member_profile.name rescue "")
author = (user.member_profile.name == nil ? user.user_name : user.member_profile.name rescue "")
%>
<i class="group-page-post-author-icon icon-user"></i> <%= author %>
<% end %>
</span>
<span class="group-page-post-postdate">
<% date = DateTime.parse(post.created_at.to_s).strftime("%d %B") %>
<i class="group-page-post-postdate-icon icon-time"></i> <%= date %>
</span>
<div class="group-page-post-sub-wrap">
<span class="group-page-post-postdate">
<% date = DateTime.parse(post.created_at.to_s).strftime("%d %B %H:%M") %>
<i class="group-page-post-postdate-icon icon-time"></i> <%= date %>
</span>
<!-- <span class="group-post-time">10:25</span> -->
</div>
<!-- <div class="group-page-seen-by tool-tip-parent">
<i class="fa fa-eye"></i>
<em class="group-page-seen-by-lead">Seen by: </em>
<div class="gorup-post-seen-by-names tool-tip right">
<span class="group-page-seen-by-name">Harry</span>
<span class="group-page-seen-by-name">Ika</span>
</div>
</div> -->
</div>
</div>
</div>

View File

@ -0,0 +1,26 @@
<li class="group-post-comment">
<div class="group-post-comment-wrap">
<div class="group-post-comment-avatar">
<%
user = post_comment.user rescue nil
if !user.nil?
author = (user.member_profile.name == nil ? user.user_name : user.member_profile.name rescue "")
avatar = (!user.member_profile.avatar.nil? ? user.member_profile.avatar.thumb.url : "/assets/member-pic.png" rescue "/assets/member-pic.png")
end
%>
<img src="<%= avatar %> " alt="Avatar image">
</div>
<div class="group-post-comment-body">
<div class="group-post-comment-author-wrap">
<div class="group-post-comment-author"><%= author %></div>
<% date = DateTime.parse(post_comment.created_at.to_s).strftime("%d %B") %>
<div class="group-post-comment-time muted"><%= date %></div>
</div>
<div class="group-post-comment-content">
<% content_images = parse_for_images(post_comment.comment) %>
<%= content_images.first %>
<%= content_images.last.html_safe %>
</div>
</div>
</div>
</li>

View File

@ -2,13 +2,24 @@
<%= stylesheet_link_tag "lib/main-forms" %>
<%= stylesheet_link_tag "lib/fileupload" %>
<%= stylesheet_link_tag "lib/main-list" %>
<%= stylesheet_link_tag "lib/dropzone" %>
<%= stylesheet_link_tag "group_show" %>
<%= stylesheet_link_tag "group_admin" %>
<%= stylesheet_link_tag "//maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css" %>
<%= stylesheet_link_tag "//cdnjs.cloudflare.com/ajax/libs/animate.css/3.2.6/animate.min.css" %>
<% end %>
<% content_for :page_specific_javascript do %>
<%= javascript_include_tag "lib/bootstrap-fileupload" %>
<%= javascript_include_tag "lib/file-type" %>
<%= javascript_include_tag "lib/module-area" %>
<%= javascript_include_tag "lib/module-area" %>
<%= javascript_include_tag "lib/dropzone" %>
<% end %>
<div class="input-area">
<div class="upload-status-notice hide">
<i class="fa fa-refresh fa-spin"></i>
<span class="upload-text">Uploading...</span>
</div>
<!-- Module Tabs -->
<ul class="nav nav-pills module-nav">
@ -21,40 +32,31 @@
<div class="tab-pane fade in active" id="basic">
<!-- group banner image -->
<div class="control-group">
<label class="control-label muted"><%= t(:image) %></label>
<label class="control-label muted"><%= t(:images) %></label>
<div class="controls">
<div class="fileupload fileupload-new clearfix <%= 'fileupload-edit' if @grouppost.image.file %>" data-provides="fileupload">
<div class="fileupload-new thumbnail pull-left">
<% if @grouppost.image.file %>
<%= image_tag @grouppost.image %>
<% else %>
<img src="http://www.placehold.it/50x50/EFEFEF/AAAAAA" />
<% end %>
</div>
<div class="fileupload-preview fileupload-exists thumbnail pull-left"></div>
<span class="btn btn-file">
<span class="fileupload-new"><%= t(:select_image) %></span>
<span class="fileupload-exists"><%= t(:change) %></span>
<%= f.file_field :image %>
</span>
<a href="#" class="btn fileupload-exists" data-dismiss="fileupload"><%= t(:cancel) %></a>
<div class="controls" data-toggle="buttons-checkbox">
<label class="checkbox inline btn btn-danger fileupload-remove">
<%= f.check_box :remove_image %><%= t(:remove) %>
</label>
</div>
<!-- <input name="group_post_images" type="file" multiple > -->
<div class="dropzone dropzone-pool" id="group-post-images">
<div class="dropzone-previews" id="group-post-images-container"></div>
</div>
<% if params[:action] == "editpost" %>
<button class="upload_image_btn btn">Upload</button>
<% end %>
<button class="remove_image_btn btn btn-warning">
<i class="fa fa-ban"></i>
<span>Remove all images</span>
</button>
</div>
<div id="image_ids">
</div>
</div>
</div>
</div>
<!-- Language -->
<div class="tab-content language-area">
<!-- Title-->
<div class="control-group input-title">
<div class="control-group input-title">
<label class="control-label muted"><%= t(:title) %></label>
<div class="controls">
<%= f.text_field :title, class: "input-block-level", placeholder: t(:title), value: (@grouppost.title rescue nil) %>
@ -71,11 +73,39 @@
</div>
</div>
<div class="control-group">
<label class="control-label muted"><%= t(:files) %></label>
<div class="controls">
<!-- <input name="group_post_images" type="file" multiple > -->
<div class="dropzone dropzone-pool" id="group-post-files">
<div class="dropzone-previews" id="group-post-files-container"></div>
</div>
<% if params[:action] == "editpost" %>
<button class="upload_file_btn">Upload</button>
<% end %>
<button class="remove_file_btn btn btn-warning">
<i class="fa fa-ban"></i>
<span>Remove all files<span>
</button>
</div>
<div id="file_ids">
</div>
</div>
</div>
</div>
<!-- Form Actions -->
<div class="form-actions">
<%= f.submit t('submit'), class: 'btn btn-primary' %>
<%= f.submit t('submit'), class: 'btn btn-primary', id: "create-post-form-btn" %>
<%= link_to t('cancel'), admin_groups_path, :class=>"btn" %>
</div>
</div>

View File

@ -2,4 +2,137 @@
<fieldset>
<%= render :partial => "post_form", locals: {f: f} %>
</fieldset>
<% end %>
<% end %>
<script type="text/javascript">
Dropzone.autoDiscover = false;
var image_id_panel = $("#image_ids");
var file_id_panel = $("#file_ids");
var groupImageDropzone = new Dropzone("div#group-post-images", {
url : "/admin/posts/image",
previewsContainer : "#group-post-images-container",
paramName : "group_post_image[image]",
clickable : true,
autoProcessQueue : false,
addRemoveLinks : true,
uploadMultiple : false,
accept: function(file, done) {
var regex = new RegExp(/(\.|\/)(gif|jpe?g|png)$/i)
if(regex.test(file.name)){
done();
}else{
this.removeFile(file);
}
}
})
$(".upload_image_btn").on("click",function(){
$("#group-post-images a.dz-remove").remove();
doImagesUpload();
return false;
})
$(".remove_image_btn").on("click",function(){
groupImageDropzone.removeAllFiles();
return false;
})
groupImageDropzone.on("success",function(file,data){
image_id_panel.append("<input type='hidden' name='group_post[group_post_images][]' value='" + data.id + "' />");
})
groupImageDropzone.on("sending",function(file,xhr,obj){
obj.append("authenticity_token",$("form#new_group_post input[name=authenticity_token]").val());
})
var doImagesUpload = function(){
groupImageDropzone.processQueue();
groupImageDropzone.on("complete", function(file) {
var filesCount = groupImageDropzone.getQueuedFiles().length;
if(filesCount > 0){
doImagesUpload();
}else{
if(groupFilesDropzone.getQueuedFiles().length > 0){
doFilesUpload();
}else{
submitForm();
}
}
});
}
var groupFilesDropzone = new Dropzone("div#group-post-files", {
url : "/admin/posts/file",
previewsContainer : "#group-post-files-container",
paramName : "group_post_file[file]",
clickable : true,
autoProcessQueue : false,
addRemoveLinks : true,
uploadMultiple : false,
accept: function(file, done) {
var regex = new RegExp(/(\.|\/)(pdf|doc?x|xls?x|rtf|txt|ppt?x|mp3|mov|avi|gif|jpe?g|png|zip|rar)$/i)
if(regex.test(file.name)){
done();
}else{
this.removeFile(file);
}
}
})
$(".upload_file_btn").on("click",function(){
$("#group-post-files a.dz-remove").remove();
doFilesUpload();
return false;
})
$(".remove_file_btn").on("click",function(){
groupFilesDropzone.removeAllFiles();
return false;
})
groupFilesDropzone.on("success",function(file,data){
file_id_panel.append("<input type='hidden' name='group_post[group_post_files][]' value='" + data.id + "' />");
})
groupFilesDropzone.on("sending",function(file,xhr,obj){
obj.append("authenticity_token",$("form#new_group_post input[name=authenticity_token]").val());
})
var doFilesUpload = function(){
groupFilesDropzone.processQueue();
groupFilesDropzone.on("complete", function(file) {
var filesCount = groupFilesDropzone.getQueuedFiles().length;
if(filesCount > 0){
doFilesUpload();
}else{
submitForm();
}
});
}
$("#create-post-form-btn").on("click",function(){
if(groupImageDropzone.getQueuedFiles().length > 0){
doImagesUpload();
}else if(groupFilesDropzone.getQueuedFiles().length > 0){
doFilesUpload();
}else{
submitForm();
}
// uploading all the files
$(".upload-status-notice")
.removeClass("hide")
.addClass("animated slideInRight");
return false;
})
var submitForm = function(){
if(groupImageDropzone.getQueuedFiles().length > 0 || groupFilesDropzone.getQueuedFiles().length > 0){
return false;
}else{
$(".upload-status-notice span.upload-text").text("Submitting");
$("form#new_group_post").submit();
return true;
}
}
</script>

Some files were not shown because too many files have changed in this diff Show More