* 'master' of https://github.com/Rulingcom/orbit: (102 commits)
  fixed fileview in english mode
  all sections and sections megerd
  Remove test
  Change the design for the whole site form designs index
  fixed fileview in english mode
  all sections and sections megerd
  Redirect to designs after buying template Randomise buy counts
  fixed empty db bug
  make factory girl file clean
  stupid fix
  section fixed and some other fixes
  try to fix problem
  fixed bug
  scroll fixed...
  fixed bug about co-author-relation
  fixed bug about co-author-relation
  fixed edit and new page of co-author
  view update
  current version
  Add images to store
  ...
This commit is contained in:
Rueshyna 2012-12-19 15:06:57 +08:00
commit fdae7e4a2c
152 changed files with 4763 additions and 709 deletions

View File

@ -79,7 +79,6 @@ group :test, :development do
gem 'faker'
gem "sunspot-rails-tester"
gem 'spork'
gem 'database_cleaner' #Strategies for cleaning databases. Can be used to ensure a clean state for testing.
gem "rspec", "~> 2.0"
gem "rspec-rails", "~> 2.0"
@ -89,7 +88,7 @@ group :test, :development do
gem "delorean"
gem "watchr"
gem "spork"
# gem "capybara"
gem "capybara"
# gem 'yard'
# gem "bluecloth"
end

BIN
app/assets/images/ar1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 209 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 548 B

BIN
app/assets/images/f1.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

BIN
app/assets/images/f2.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

BIN
app/assets/images/f3.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

BIN
app/assets/images/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 275 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 267 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 182 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 113 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 124 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 137 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 127 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 140 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 257 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 182 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 113 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 124 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 137 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 127 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 507 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

BIN
app/assets/images/ui_bg.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 229 B

View File

@ -63,6 +63,10 @@ orbitDesktop.prototype.initializeJournalPapers = function(target,url,cache){ //
})
$(".bt-cancel").click(function(){
$("div[container=true]").html(prev_data);
o.tinyscrollbar_ext({
main: '.tinycanvas',
fill: '.list_t'
})
})
}
})
@ -116,7 +120,7 @@ orbitDesktop.prototype.initializeJournalPapers = function(target,url,cache){ //
li;
$.each(journalData,function(i,journal){
$.each(journal.papers,function(j,paper){
li = $('<li class="list_t_item"><div class="list_item_action"><a href="" class="icon-check-empty"></a><a href="" class="icon-star-empty"></a></div><div class="list_t_title">'+journal.title+'</div><div class="list_t_des">'+paper.title+'</div><a class="journal_paper_edit" href="'+paper.url_edit+'">Edit</a> <a class="journal_paper_delete" href="'+paper.url_delete+'">Delete</a></li>');
li = $('<li class="list_t_item"><div class="list_item_action"><a href="" class="icon-check-empty"></a><a href="" class="icon-star-empty"></a></div><div class="list_t_title">'+journal.title+'</div><div class="list_t_des">'+paper.title+'</div><div class="list_item_function"><a class="journal_paper_edit admbg2 admtxt" href="'+paper.url_edit+'">Edit</a> <a class="journal_paper_delete admbg2 admtxt" href="'+paper.url_delete+'">Delete</a></div></li>');
column.find("ul").append(li);
if(counter%5==0){
$("#journal_p div#paper_list div.overview").append(column);
@ -136,18 +140,23 @@ orbitDesktop.prototype.initializeJournalPapers = function(target,url,cache){ //
$.each(journalData,function(i,journal){
$.each(journal.papers,function(j,paper){
li = null;
li = $('<li class="list_t_item"></li>');
li.append('<div class="list_item_action"><a href="" class="icon-check-empty"></a><a href="" class="icon-star-empty"></a></div><div class="list_t_title">'+journal.title+'</div>');
li = $('<li class="list_t_item file_view"></li>');
li.append('<div class="list_item_action"><a href="" class="icon-check-empty"></a><a href="" class="icon-star-empty"></a></div><div class="list_t_title">'+journal.title+'</div><div class="list_t_des"></div>');
var file_list = li.find('.list_t_des');
$.each(paper.files,function(k,file){
var thistitle = file.title;
if(!file.title)
if(!thistitle)
thistitle = "";
thistitle = ( thistitle.length > 8 )? thistitle.substring(0,8)+'...' : thistitle;
if(!file.title){
thistitle = "Untitled File";
var img = $('<div class="list_t_des"><a href="'+file.url+'" target="_blank" ><img src="'+file.icon+'" />'+thistitle+'</a></div>');
li.append(img);
}
var img = $('<a class="file" href="'+file.url+'" target="_blank" ><img src="'+file.icon+'" /><span class="filetitle">'+thistitle+'</span></a>');
file_list.append(img);
})
li.append('<a class="journal_paper_edit" href="'+paper.url_edit+'">Edit</a> <a class="journal_paper_delete" href="'+paper.url_delete+'">Delete</a>');
li.append('<div class="list_item_function"><a class="journal_paper_edit admbg2 admtxt" href="'+paper.url_edit+'">Edit</a> <a class="journal_paper_delete admbg2 admtxt" href="'+paper.url_delete+'">Delete</a></div>');
column.find("ul").append(li);
if(counter%5==0){
if(counter%3==0){
$("#journal_p div#paper_list div.overview").append(column);
column = $('<div class="g_col list_t"><ul></ul></div>');
}
@ -164,7 +173,7 @@ orbitDesktop.prototype.initializeJournalPapers = function(target,url,cache){ //
li;
$.each(journalData,function(i,journal){
$.each(journal.papers,function(j,paper){
li = $('<li class="list_t_item"><div class="list_item_action"><a href="" class="icon-check-empty"></a><a href="" class="icon-star-empty"></a></div><div class="list_t_title">'+paper.title+'</div><div class="list_t_des">'+paper.keywords+'</div><a class="journal_paper_edit" href="'+paper.url_edit+'">Edit</a> <a class="journal_paper_delete" href="'+paper.url_delete+'">Delete</a></li>');
li = $('<li class="list_t_item"><div class="list_item_action"><a href="" class="icon-check-empty"></a><a href="" class="icon-star-empty"></a></div><div class="list_t_title">'+paper.title+'</div><div class="list_t_des">'+paper.keywords+'</div><div class="list_item_function"><a class="journal_paper_edit admbg2 admtxt" href="'+paper.url_edit+'">Edit</a> <a class="journal_paper_delete admbg2 admtxt" href="'+paper.url_delete+'">Delete</a></div></li>');
column.find("ul").append(li);
if(counter%5==0){
$("#journal_p div#paper_list div.overview").append(column);
@ -184,7 +193,7 @@ orbitDesktop.prototype.initializeJournalPapers = function(target,url,cache){ //
li;
$.each(journalData,function(i,journal){
$.each(journal.papers,function(j,paper){
li = $('<li class="list_t_item"><div class="list_item_action"><a href="" class="icon-check-empty"></a><a href="" class="icon-star-empty"></a></div><div class="list_t_title">'+paper.title+'</div><a class="journal_paper_edit" href="'+paper.url_edit+'">Edit</a> <a class="journal_paper_delete" href="'+paper.url_delete+'">Delete</a></li>');
li = $('<li class="list_t_item"><div class="list_item_action"><a href="" class="icon-check-empty"></a><a href="" class="icon-star-empty"></a></div><div class="list_t_title">'+paper.title+'</div><div class="list_item_function"><a class="journal_paper_edit admbg2 admtxt" href="'+paper.url_edit+'">Edit</a> <a class="journal_paper_delete admbg2 admtxt" href="'+paper.url_delete+'">Delete</a></div></li>');
column.find("ul").append(li);
if(counter%5==0){
$("#journal_p div#paper_list div.overview").append(column);
@ -203,7 +212,7 @@ orbitDesktop.prototype.initializeJournalPapers = function(target,url,cache){ //
li;
$.each(journalData,function(i,journal){
$.each(journal.papers,function(j,paper){
li = $('<li class="list_t_item" style="height:auto;"><div class="list_item_action"><a href="" class="icon-check-empty"></a><a href="" class="icon-star-empty"></a></div><div class="list_t_title">'+paper.title+'</div><div class="list_t_des">'+paper.abstract+'</div><a class="journal_paper_edit" href="'+paper.url_edit+'">Edit</a> <a class="journal_paper_delete" href="'+paper.url_delete+'">Delete</a></li>');
li = $('<li class="list_t_item" style="height:auto;"><div class="list_item_action"><a href="" class="icon-check-empty"></a><a href="" class="icon-star-empty"></a></div><div class="list_t_title">'+paper.title+'</div><div class="list_t_des">'+paper.abstract+'</div><div class="list_item_function"><a class="journal_paper_edit admbg2 admtxt" href="'+paper.url_edit+'">Edit</a> <a class="journal_paper_delete admbg2 admtxt" href="'+paper.url_delete+'">Delete</a></div></li>');
column.find("ul").append(li);
$("#journal_p div#paper_list div.overview").append(column);
column = $('<div class="g_col list_t"><ul></ul></div>');
@ -238,10 +247,9 @@ orbitDesktop.prototype.initializeJournalPapers = function(target,url,cache){ //
this.initializeJournalPapers.journal = function(){ // to open add pages in journal papers page
var bindHandlers = function(){ // to bind handlers for add page
o.simple_drop_down();
o.tinyscrollbar_ext({
main: '.tinycanvas',
fill: '.s_grid_con'
fill: '.g_col'
})
}
bindHandlers();
@ -261,9 +269,9 @@ orbitDesktop.prototype.initializeJournalPapers = function(target,url,cache){ //
o.tinyscrollbar_ext({
main: '.tinycanvas',
fill: '.s_grid_con'
fill: '.g_col'
})
$("a.bt-edit").click(function(){
$("div[container=true]").unbind(".editcoauthor").on("click.editcoauthor", "a.bt-edit", function(){
$.ajax({
url : $(this).attr("href"),
type : "get",
@ -276,12 +284,34 @@ orbitDesktop.prototype.initializeJournalPapers = function(target,url,cache){ //
})
$(".bt-cancel").click(function(){
$("div[container=true]").html(prev_data);
o.tinyscrollbar_ext({
main: '.tinycanvas',
fill: '.g_col'
})
})
}
})
return false;
})
$("div[container=true]").unbind(".editype").on("click.edittype", "a.bt-edit-type", function(){
var parent = $(this).parent().parent();
parent.find('.list_item_function').hide();
$.ajax({
url : $(this).attr("href"),
type : "get",
success : function(data){
var prev_data = parent.find(".form_space").html();
parent.find(".form_space").html(data);
$(".bt-cancel-type").click(function(){
parent.find(".form_space").html(prev_data);
parent.find('.list_item_function').show();
});
}
})
return false;
})
$("div[container=true]").unbind(".delete").on("click.delete","a.bt-delete",function(){
var delurl = $(this).attr("href");
var parent = $(this).parent().parent();
o.confirm({
@ -316,7 +346,8 @@ orbitDesktop.prototype.initializeJournalPapers = function(target,url,cache){ //
fill: '.s_grid_con'
})
$(".bt-cancel").click(function(){
$("div[container=true]").html(prev_data);
o.sub_menu_item($("div[content-type=menu] a[custom-load=coauthor]"));
})
}
})
@ -335,6 +366,10 @@ orbitDesktop.prototype.initializeJournalPapers = function(target,url,cache){ //
})
$(".bt-cancel").click(function(){
$("div[container=true]").html(prev_data);
o.tinyscrollbar_ext({
main: '.tinycanvas',
fill: '.g_col'
})
})
}
})
@ -346,7 +381,15 @@ orbitDesktop.prototype.initializeJournalPapers = function(target,url,cache){ //
this.initializeJournalPapers.coauthorRelationForm = function(data){
if(data.success){
o.notify(data.msg,"success");
$("#co_author_relation_table tbody").prepend(data.newvalue);
$("#co_author_relation_table").html(data.newvalue);
}else{
o.notify(data.msg,"alert");
}
}
this.initializeJournalPapers.coauthorRelationEditForm = function(data){
if(data.success){
o.notify(data.msg,"success");
$("#co_author_relation_table").html(data.newvalue);
}else{
o.notify(data.msg,"alert");
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,9 @@
$('#feature .holder ul').cycle({
fx: 'scrollDown',
pager: '#feature-nav ul',
pause: 1,
pagerAnchorBuilder: function(idx, slide) {
// return selector string for existing anchor
return '#feature-nav ul li:eq(' + idx + ') a';
}
});

View File

@ -233,6 +233,7 @@ var orbitDesktop = function(dom){
if(o.data_method != "")
window.o[o.data_method](target,url,cache);
}
try{
if(!customload)
o.sub_menu_item($(o.contentHolder).find("*[content-type=menu] a[load=true]"));
else{
@ -241,10 +242,12 @@ var orbitDesktop = function(dom){
else
o.sub_menu_item($(o.contentHolder).find("*[content-type=menu] a[load=true]"));
}
}catch(EX){}
})
}else{
$(o.contentHolder).html(o.desktopData[o.currentface]);
try{
if(!customload)
o.sub_menu_item($(o.contentHolder).find("*[content-type=menu] a[load=true]"));
else{
@ -253,6 +256,7 @@ var orbitDesktop = function(dom){
else
o.sub_menu_item($(o.contentHolder).find("*[content-type=menu] a[load=true]"));
}
}catch(EX){}
cache = true;
if(typeof o.data_method != "undefined"){
if(o.data_method != "")
@ -565,7 +569,6 @@ var orbitDesktop = function(dom){
loadApps();
};
this.initializeSectionsManager = function(target,url,cache){ // this is init function for section manager
var elementParent,element,slabel;
var bindHandlers = function(){ // this is bind handler for section manager page
var groupWrapperWidth = 0;
@ -634,6 +637,7 @@ var orbitDesktop = function(dom){
}
}
z++;
$("div#group_wrapper").append($group);
}
var yy=1,y=0;
@ -641,6 +645,7 @@ var orbitDesktop = function(dom){
$.each(apps,function(i,app){
$li = $('<li class="element to_drop w1 hh2 hp vp" data-category="'+app.data_category+'" data-content="'+app.data_content+'" id="'+app._id+'"><div class="appicon"><img src="'+o.iconPath+app.data_content+'.png" class="" width="30" /></div><h1 class="appname thmtxth">'+app.title+'</h1></li>');
$("ul#section"+yy).append($li);
})
if(y==1){

View File

@ -26,7 +26,7 @@ var orbitDesktopAPI = function(){
break;
}
$notify.find("img#note_img").attr("src",o.notifyImgPath+img);
$notify.find(".note_message").text(msg);
$notify.find(".note_message").html(msg);
n_height = $notify.outerHeight();
if(!time)time=5000; else time=time*1000;
$notify

View File

@ -0,0 +1,9 @@
$(document).ready(function(){
$('#screen-shot .holder')
.before('<div id="scr-nav"/>')
.cycle({
pager: '#scr-nav',
fx: 'scrollLeft',
pause: 1
});
});

View File

@ -26,7 +26,7 @@ time, mark, audio, video {
#container input, #container textarea, #container select, #container input:focus, #container textarea:focus {
border-radius: 0;
box-shadow: none;
font: inherit;
font-family: inherit;
}
/* HTML5 display-role reset for older browsers */
article, aside, details, figcaption, figure,
@ -126,10 +126,13 @@ a:focus { outline: none; }
.ini_input {
margin: 0;
padding: 0;
border: none;
border: 0;
}
.ini_input:focus { outline: none; }
#search_app { position: relative; background-color: #fff; }
#search_app {
position: relative;
background-color: #fff;
}
#search_app .form {
position: absolute;
left: 0;
@ -139,6 +142,7 @@ a:focus { outline: none; }
height: 28px;
line-height: 28px;
background: none;
border: 0;
}
#search_app .submit {
position: absolute;
@ -289,7 +293,7 @@ a:focus { outline: none; }
position: relative;
z-index: 9;
}
.toolbar .sdm, .toolbar .fn_g { display: inline-block; }
.toolbar .sdm, .toolbar .fn_g { display: inline-block; vertical-align: top; }
.toolbar .sdm_o { top: 36px; background-color: #f0f0f0; }
.toolbar button {
border: none;
@ -300,7 +304,10 @@ a:focus { outline: none; }
font-size: 15px;
vertical-align: top;
}
.toolbar .fn_btn {
display: inline-block;
vertical-align: top;
}
/* Setting Page */
.theme_list {}
@ -344,6 +351,7 @@ a:focus { outline: none; }
font-size: 15px;
line-height: 36px;
text-align: center;
border: 0;
}
/* theme color opacity */
@ -452,7 +460,7 @@ a:focus { outline: none; }
height: 100%;
left: 0;
top: 0;
z-index: 9;
z-index: 10;
}
#orbitdiag .tile { background-color: #000; }
.diag_holder { background-color: #000; }
@ -535,7 +543,7 @@ a:focus { outline: none; }
.s_form input[type=text], .s_form input[type=password], .s_form textarea{
outline: solid 3px #f6f6f6;
border: solid 1px #eee;
font-size: 18px;
font-size: 15px;
font-family: Arial !important;
margin: 0;
padding: 6px;
@ -578,14 +586,14 @@ a:focus { outline: none; }
height: 30px;
line-height: 30px;
right: 5px;
top: 4px;
top: 5px;
display: block;
background-color: #fff;
}
.s_form.s_grid_con { width: 416px; }
.s_form .s_grid_row { width: 410px; }
.s_form .s_grid_row .s_grid:first-child { margin-left: 0; }
.s_form input[type=text].s_grid, .s_form input[type=passowrd].s_grid, .s_form textarea.s_grid, .s_form label.s_grid { float: none; display: inline-block; margin-left: 10px; }
.s_form input[type=text].s_grid, .s_form input[type=passowrd].s_grid, .s_form textarea.s_grid, .s_form label.s_grid, .s_form select.s_grid { /*float: none; display: inline-block;*/ margin-left: 10px; }
.s_form input[type=text].s_grid_1, .s_form input[type=passowrd].s_grid_1, .s_form textarea.s_grid_1 { width: 46px; }
.s_form input[type=text].s_grid_2, .s_form input[type=passowrd].s_grid_2, .s_form textarea.s_grid_2 { width: 116px; }
.s_form input[type=text].s_grid_3, .s_form input[type=passowrd].s_grid_3, .s_form textarea.s_grid_3 { width: 186px; }
@ -598,7 +606,30 @@ a:focus { outline: none; }
.s_form select.s_grid_4 { width: 270px; }
.s_form select.s_grid_5 { width: 340px; }
.s_form select.s_grid_6 { width: 410px; }
.s_form label.s_grid { line-height: 34px; }
.s_form select.s_grid {
height: 26px;
margin-top: 4px;
margin-bottom: 4px;
}
.s_form textarea.full_height {
height: 436px;
}
.s_form .s_table {
width: 100%;
}
.s_form .s_table th, .s_form .s_table td {
padding: 6px 0;
}
.s_form .s_table th {
text-align: left;
}
.s_form .s_table td {
vertical-align: middle;
}
.s_form .s_table thead th {
border-bottom: solid 1px #eee;
}
#group_wrapper {}
@ -616,7 +647,7 @@ a:focus { outline: none; }
.list_t_title {
font-size: 15px;
font-family: Arial;
margin-bottom: 10px;
margin-bottom: 6px;
color: #333;
}
.list_t_des {
@ -624,7 +655,7 @@ a:focus { outline: none; }
line-height: 1.5em;
color: #999;
font-family: Arial, sans-serif;
margin-bottom: 10px;
margin-bottom: 4px;
}
/* Connection Page */
@ -684,6 +715,13 @@ a:focus { outline: none; }
float: left;
margin-left: -30px;
}
#paper_list .list_item_function a {
display: inline-block;
padding: 4px;
font-family: Arial, sans-serif;
font-size: 11px;
-webkit-text-size-adjust: none;
}
.list_item_action a {
display: block;
width: 20px;
@ -696,6 +734,29 @@ a:focus { outline: none; }
.list_item_action .icon-check-empty { color: #999; font-size: 20px; }
.list_item_action .icon-check { color: #333; font-size: 20px; }
#paper_list .list_t_item.file_view {
height: 148px;
}
#paper_list .file_view .file {
display: inline-block;
width: 62px;
height: 50px;
text-align: center;
}
#paper_list .file_view .file:hover {
background-color: #ddd;
}
#paper_list .file_view .file img {
width: 24px;
display: block;
margin: 0 auto;
margin-top: 4px;
}
#paper_list .file_view .filetitle {
font-size: 11px;
-webkit-text-size-adjust: none;
}
/* Journal Paper Add */
#paper_add .s_grid_con {
float: left;
@ -708,6 +769,122 @@ a:focus { outline: none; }
#paper_add .f_w { width: 336px; }
#paper_add label { margin-right: 0; }
/* Journal Journal list */
#journal_list .g_col {
width: 416px;
}
#journal_list .g_col {
float: left;
height: 456px;
margin-left: 12px;
padding-left: 12px;
border-left: solid 1px #EEE;
}
#journal_list .g_col:first-child {
margin-left: 0;
padding-left: 0;
border: none;
}
#journal_list .g_col .list_t_item {
padding-left: 30px;
height: 86px;
}
#journal_list .list_item_action {
font-size: 12px;
float: left;
margin-left: -30px;
}
#journal_list .list_item_action i {
color: #999;
font-size: 20px;
display: block;
width: 20px;
height: 20px;
line-height: 20px;
margin: 1px 1px 6px 1px;
}
#journal_list .list_t_desc {
font-family: Arial, sans-serif;
font-size: 12px;
color: #999;
}
/* Journal Co-Author */
#co_author {}
#co_author .list_t_item {
height: 110px;
}
#co_author .list_item_function {}
#co_author .list_item_function a {
display: inline-block;
padding: 4px;
font-family: Arial, sans-serif;
font-size: 11px;
-webkit-text-size-adjust: none;
}
#co_author .g_col:first-child {
margin-left: 0;
padding-left: 10px;
border: none;
}
#co_author .g_col {
width: 300px;
height: 456px;
margin-left: 12px;
padding-left: 12px;
border-left: solid 1px #EEE;
}
#co_author .info {
font-family: Arial, sans-serif;
}
#co_author .info li {
margin-bottom: 8px;
color: #999;
}
#co_author .info .name {
font-size: 18px;
line-height: 24px;
color: #333;
}
/* Journal Co-Author Relationship*/
#co_author_relation_table .s_grid_con {
float: left;
width: 370px;
height: 456px;
margin-left: 12px;
padding-left: 12px;
border-left: solid 1px #EEE;
}
#co_author_relation_table .s_grid_con:first-child {
margin-left: 0;
padding-left: 0;
border: 0;
}
#co_author_relation_table .s_grid_row {
width: auto;
height: 64px;
}
#co_author_relation_table .edit_co_author_relation {
/*margin-left: -10px;*/
}
#co_author_relation_table .list_item_function a {
display: inline-block;
padding: 4px;
font-family: Arial, sans-serif;
font-size: 11px;
-webkit-text-size-adjust: none;
}
#co_author_relation_table .form_space {
margin-bottom: 10px;
font-size: 18px;
font-family: Arial, sans-serif;
}
/* Journal New Co-Author */
#new_co_author label {
margin-right: 0;
}
/* App */
.app_frame {
margin: 48px 96px 48px 156px;

View File

@ -0,0 +1,111 @@
/* list page */
header {
background-image: url(<%= asset_path "mheader_bg.jpg"%>);
}
#toolbar {
background-image: url(<%= asset_path "mfilter_bg.jpg"%>);
border: solid 1px #8b8b8b;
box-shadow: inset 0 -1px 0 #9a9a9a;
}
#feature {
border: solid 1px #ccc;
padding: 3px;
background-color: #fff;
margin-bottom: 30px;
}
#feature ul {
margin: 0;
padding: 0;
list-style: none;
height: 220px;
}
#feature .holder {
width: 740px;
height: 220px;
overflow: hidden;
}
#feature-nav {
float: right;
}
#feature-nav li {
margin-top: 9px;
position: relative;
}
#feature-nav li:first-child {
margin-top: 0;
}
#feature-nav li a {
display: block;
}
#feature-nav li a:hover:after, #feature-nav li.activeSlide a:after {
content: '';
display: block;
border-top: 30px solid transparent;
border-bottom: 30px solid transparent;
border-right: 30px solid #fff;
position: absolute;
left: -30px;
top: 4px;
}
#feature-nav li a:hover, #feature-nav li.activeSlide {
outline: solid 9px #fff;
position: relative;
z-index: 99;
box-shadow: 0 10px 3px rgba(0,0,0,0.2);
}
#item-list ul {
margin: 0 -11px;
}
#item-list li {
width: 312px;
margin: 0 11px 35px 11px;
}
#item-list li a {
border: solid 1px #ccc;
background-color: #fff;
}
#item-list .item-thumb {
width: 144px;
height: 144px;
border: solid 3px #fff;
float: left;
}
#item-list .item-info {
width: 154px;
height: 144px;
padding: 3px;
float: right;
position: relative;
}
#item-list .item-name {
color: #000;
padding: 8px;
display: inline-block;
}
#item-list .item-price {
right: 10px;
bottom: 10px;
border-radius: 3px;
}
.fn .label {
color: #eee;
}
/* content page */
#content {
background: #fff url(<%= asset_path "mside_bg.png"%>) 0 0 repeat-y;
padding: 20px 0;
}
.user-list {
background-color: #fff;
}
.user-list li:first-child {
border-top: 0;
}
.user-list li {
color: #333;
border-top: solid 1px #f1f1f1;
padding: 8px;
padding-left: 20px;
background: url(<%= asset_path "ar1.png"%>) 10px 14px no-repeat;
}

375
app/assets/stylesheets/normalize.css vendored Normal file
View File

@ -0,0 +1,375 @@
/*! normalize.css v2.0.1 | MIT License | git.io/normalize */
/* ==========================================================================
HTML5 display definitions
========================================================================== */
/*
* Corrects `block` display not defined in IE 8/9.
*/
article,
aside,
details,
figcaption,
figure,
footer,
header,
hgroup,
nav,
section,
summary {
display: block;
}
/*
* Corrects `inline-block` display not defined in IE 8/9.
*/
audio,
canvas,
video {
display: inline-block;
}
/*
* Prevents modern browsers from displaying `audio` without controls.
* Remove excess height in iOS 5 devices.
*/
audio:not([controls]) {
display: none;
height: 0;
}
/*
* Addresses styling for `hidden` attribute not present in IE 8/9.
*/
[hidden] {
display: none;
}
/* ==========================================================================
Base
========================================================================== */
/*
* 1. Sets default font family to sans-serif.
* 2. Prevents iOS text size adjust after orientation change, without disabling
* user zoom.
*/
html {
font-family: sans-serif; /* 1 */
-webkit-text-size-adjust: 100%; /* 2 */
-ms-text-size-adjust: 100%; /* 2 */
}
/*
* Removes default margin.
*/
body {
margin: 0;
}
/* ==========================================================================
Links
========================================================================== */
/*
* Addresses `outline` inconsistency between Chrome and other browsers.
*/
a:focus {
outline: thin dotted;
}
/*
* Improves readability when focused and also mouse hovered in all browsers.
*/
a:active,
a:hover {
outline: 0;
}
/* ==========================================================================
Typography
========================================================================== */
/*
* Addresses `h1` font sizes within `section` and `article` in Firefox 4+,
* Safari 5, and Chrome.
*/
h1 {
font-size: 2em;
}
/*
* Addresses styling not present in IE 8/9, Safari 5, and Chrome.
*/
abbr[title] {
border-bottom: 1px dotted;
}
/*
* Addresses style set to `bolder` in Firefox 4+, Safari 5, and Chrome.
*/
b,
strong {
font-weight: bold;
}
/*
* Addresses styling not present in Safari 5 and Chrome.
*/
dfn {
font-style: italic;
}
/*
* Addresses styling not present in IE 8/9.
*/
mark {
background: #ff0;
color: #000;
}
/*
* Corrects font family set oddly in Safari 5 and Chrome.
*/
code,
kbd,
pre,
samp {
font-family: monospace, serif;
font-size: 1em;
}
/*
* Improves readability of pre-formatted text in all browsers.
*/
pre {
white-space: pre;
white-space: pre-wrap;
word-wrap: break-word;
}
/*
* Sets consistent quote types.
*/
q {
quotes: "\201C" "\201D" "\2018" "\2019";
}
/*
* Addresses inconsistent and variable font size in all browsers.
*/
small {
font-size: 80%;
}
/*
* Prevents `sub` and `sup` affecting `line-height` in all browsers.
*/
sub,
sup {
font-size: 75%;
line-height: 0;
position: relative;
vertical-align: baseline;
}
sup {
top: -0.5em;
}
sub {
bottom: -0.25em;
}
/* ==========================================================================
Embedded content
========================================================================== */
/*
* Removes border when inside `a` element in IE 8/9.
*/
img {
border: 0;
}
/*
* Corrects overflow displayed oddly in IE 9.
*/
svg:not(:root) {
overflow: hidden;
}
/* ==========================================================================
Figures
========================================================================== */
/*
* Addresses margin not present in IE 8/9 and Safari 5.
*/
figure {
margin: 0;
}
/* ==========================================================================
Forms
========================================================================== */
/*
* Define consistent border, margin, and padding.
*/
fieldset {
border: 1px solid #c0c0c0;
margin: 0 2px;
padding: 0.35em 0.625em 0.75em;
}
/*
* 1. Corrects color not being inherited in IE 8/9.
* 2. Remove padding so people aren't caught out if they zero out fieldsets.
*/
legend {
border: 0; /* 1 */
padding: 0; /* 2 */
}
/*
* 1. Corrects font family not being inherited in all browsers.
* 2. Corrects font size not being inherited in all browsers.
* 3. Addresses margins set differently in Firefox 4+, Safari 5, and Chrome
*/
button,
input,
select,
textarea {
font-family: inherit; /* 1 */
font-size: 100%; /* 2 */
margin: 0; /* 3 */
}
/*
* Addresses Firefox 4+ setting `line-height` on `input` using `!important` in
* the UA stylesheet.
*/
button,
input {
line-height: normal;
}
/*
* 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
* and `video` controls.
* 2. Corrects inability to style clickable `input` types in iOS.
* 3. Improves usability and consistency of cursor style between image-type
* `input` and others.
*/
button,
html input[type="button"], /* 1 */
input[type="reset"],
input[type="submit"] {
-webkit-appearance: button; /* 2 */
cursor: pointer; /* 3 */
}
/*
* Re-set default cursor for disabled elements.
*/
button[disabled],
input[disabled] {
cursor: default;
}
/*
* 1. Addresses box sizing set to `content-box` in IE 8/9.
* 2. Removes excess padding in IE 8/9.
*/
input[type="checkbox"],
input[type="radio"] {
box-sizing: border-box; /* 1 */
padding: 0; /* 2 */
}
/*
* 1. Addresses `appearance` set to `searchfield` in Safari 5 and Chrome.
* 2. Addresses `box-sizing` set to `border-box` in Safari 5 and Chrome
* (include `-moz` to future-proof).
*/
input[type="search"] {
-webkit-appearance: textfield; /* 1 */
-moz-box-sizing: content-box;
-webkit-box-sizing: content-box; /* 2 */
box-sizing: content-box;
}
/*
* Removes inner padding and search cancel button in Safari 5 and Chrome
* on OS X.
*/
input[type="search"]::-webkit-search-cancel-button,
input[type="search"]::-webkit-search-decoration {
-webkit-appearance: none;
}
/*
* Removes inner padding and border in Firefox 4+.
*/
button::-moz-focus-inner,
input::-moz-focus-inner {
border: 0;
padding: 0;
}
/*
* 1. Removes default vertical scrollbar in IE 8/9.
* 2. Improves readability and alignment in all browsers.
*/
textarea {
overflow: auto; /* 1 */
vertical-align: top; /* 2 */
}
/* ==========================================================================
Tables
========================================================================== */
/*
* Remove most spacing between table cells.
*/
table {
border-collapse: collapse;
border-spacing: 0;
}

View File

@ -143,6 +143,7 @@
display: inline-block;
line-height: 22px;
padding: 0 10px;
vertical-align: top;
}
#orbit-bar .nav img.member-img {
display: inline-block;

View File

@ -0,0 +1,386 @@
@import url(http://fonts.googleapis.com/css?family=Lato:300,400,700);
body {
font-family: Lato, 微軟正黑體, 新細明體, sans-serif;
font-size: 80%;
margin: 0;
padding: 0;
background-color: #f0f0f0;
}
.wrapper {
width: 980px;
margin: 0 auto;
}
#main-menu ul, #item-list ul, .item-extra-info, .user-list, .option-list {
margin: 0;
padding: 0;
list-style: none;
}
header {
/*background-color: #e0e0e0;
background-position: center 60px;
background-repeat: no-repeat;
height: 200px;*/
}
#orbit-logo {
margin: 0;
height: 62px;
}
#orbit-logo a {
display: inline-block;
width: 150px;
height: 32px;
overflow: hidden;
text-indent: -9999px;
background: url(<%= asset_path "logo.png"%>) 0 0 no-repeat;
margin-top: 14px;
}
#orbit-logo span {
font-size: 10px;
color: #cdcdcd;
font-weight: normal;
display: inline-block;
vertical-align: middle;
margin: -4px 0 0 16px;
-webkit-text-size-adjust: none;
}
#main-menu {
background: url(<%= asset_path "topnav_bg.png"%>) 0 0 repeat-x;
}
#main-menu ul {
float: right;
}
#main-menu li {
float: left;
margin-left: 24px;
line-height: 62px;
}
#main-menu li a {
display: inline-block;
line-height: normal;
color: #b2b2b2;
font-size: 14px;
text-transform: uppercase;
text-decoration: none;
}
#main-menu li a:hover, #main-menu li a.active {
color: #fff;
}
#main-menu .demo a {
background-color: #c51c09;
color: #fff;
border: solid 2px #ea311d;
border-radius: 5px;
padding: 4px 8px;
font-weight: normal;
}
#page-title {
margin: 0;
padding: 36px 0 0 16px;
font-size: 3em;
text-shadow: 0 2px 0 #fff;
}
#page-title .sub {
font-weight: 300;
color: #b2b2b2;
}
#search-form {
float: right;
margin: 50px 16px 0 0;
}
#search-form input {
display: block;
margin: 0;
padding: 7px 12px;
outline: 0;
border: 0;
width: 230px;
height: 16px;
line-height: 16px;
color: #333;
font-family: inherit;
box-shadow: inset 0 1px 0 #999, inset 0 -1px 0 #eee;
border-radius: 15px;
background-color: #cecece;
}
#toolbar {
margin: 35px 0;
height: 50px;
background-color: #fff;
background-repeat: repeat-x;
border: solid 1px #e0e0e0;
border-radius: 3px;
box-shadow: inset 0 -1px 0 #c9c9c9;
position: relative;
z-index: 9;
}
.ui {
background: #F2F2F2 url(<%= asset_path "ui_bg.png" %>) left center repeat-x;
height: 28px;
line-height: 28px;
border: solid 1px #e0e0e0;
border-radius: 3px;
cursor: pointer;
}
.controller, .btn {
padding: 0 8px;
text-decoration: none;
display: block;
height: 28px;
line-height: 28px;
color: #333;
}
.controller:hover, .btn:hover {
background: none;
background-color: #fff;
position: relative;
z-index: 99;
}
.fn {
display: inline-block;
vertical-align: top;
font-size: 14px;
margin: 10px 0 10px 16px;
}
.fn .label {
display: inline-block;
vertical-align: top;
line-height: 28px;
color: #999;
margin-right: 8px;
font-size: 1em;
font-weight: normal;
text-shadow: none;
background: none;
}
.option-default {
font-weight: bold;
}
.option-list {
/*display: none;*/
position: absolute;
top: 28px;
left: -1px;
background-color: #fff;
border: solid 1px #e0e0e0;
width: 180px;
}
.option-list li {
border-top: solid 1px #eee;
}
.option-list li:first-child {
border-top: 0;
}
.option-list a {
color: #666;
text-decoration: none;
}
.option-list a:hover {
color: #333;
background-color: #f6f6f6;
}
.drop-menu {
position: relative;
display: inline-block;
}
.drop-menu:after {
display: table;
width: 100%;
content: '';
}
.drop-menu .arrow {
display: inline-block;
background: url(<%= asset_path "dropdown_ad.png"%>) 0 0 no-repeat;
width: 16px;
height: 18px;
vertical-align: top;
margin: 5px 0 0 8px;
}
.drop-menu:hover {
border-radius: 3px 3px 0 0;
}
.drop-menu:hover .controller {
border-bottom: solid 1px #fff;
background-color: #fff;
position: relative;
z-index: 99;
}
.drop-menu:hover .option-list {
display: block;
border-radius: 0 4px 4px 4px;
}
.drop-menu .option-list {
display: none;
}
.drop-menu .option-list li a {
display: block;
line-height: normal;
padding: 8px;
}
.drop-menu .option-default {
display: inline-block;
}
.select {
display: inline-block;
}
.select .option-list {
position: static;
display: inline-block;
border: 0;
width: auto;
background-color: transparent;
}
.select .option-list li {
display: inline-block;
border-top: 0;
vertical-align: top;
}
.select .option-list li a {
display: block;
text-decoration: none;
color: #333;
}
#item-list ul {}
#item-list li {
float: left;
}
#item-list li a {
display: block;
overflow: hidden;
position: relative;
}
#item-list li a:hover {}
.item-thumb {
display: block;
background: #ccc url(<%= asset_path "thumb_default.png"%>) center center no-repeat;
}
#item-list .item-info {
position: relative;
display: block;
}
#item-list .item-name {
font-size: 1.25em;
font-weight: normal;
}
#item-list .item-price {
position: absolute;
right: 0;
bottom: 0;
background-color: #c51c09;
height: 24px;
line-height: 24px;
color: #fff;
padding: 0 8px;
}
/* content page */
#content h3 {
font-size: 1.5em;
text-transform: capitalize;
}
#content .side, #content .main {
padding: 0 20px;
}
#content .side {
float: left;
}
#content .main {
float: right;
width: 676px;
}
#item-info .item-thumb {
width: 210px;
height: 210px;
border: solid 5px #fff;
}
#item-info .item-name {
font-size: 2.16em;
text-shadow: 0 2px 0 #fff;
}
#item-info .item-extra-info {
margin: 20px 0;
}
#item-info .item-extra-info li {
border-top: solid 1px #E0E0E0;
padding-top: 12px;
margin-top: 12px;
}
#item-info .item-extra-info li:first-child {
border-top: 0;
padding: 0;
margin: 0;
}
#item-info .item-extra-info .title {
color: #666;
display: inline-block;
/*width: 70px;*/
margin-right: 12px;
}
#item-info .item-extra-info .count {
font-size: 1.5em;
color: #000;
}
#screen-shot {
padding: 5px;
background-color: #fff;
}
#screen-shot .holder {
overflow: hidden;
height: 450px;
}
#screen-shot .preview {
width: 670px;
height: 450px;
}
#scr-nav {
text-align: center;
height: 30px;
line-height: 30px;
}
#scr-nav a {
display: inline-block;
width: 12px;
height: 12px;
margin: 0 6px;
overflow: hidden;
text-indent: -999px;
background-color: #aaa;
border-radius: 6px;
box-shadow: inset 0 1px 0 rgba(0,0,0,0.4);
}
#scr-nav a.activeSlide, #scr-nav a:hover {
background-color: #e7230d;
}
#download {
display: block;
text-align: center;
text-decoration: none;
text-transform: capitalize;
font-size: 1.5em;
color: #fff;
line-height: 2.2em;
text-shadow: 0 -1px 0 rgba(0,0,0,0.3);
border-radius: 5px;
box-shadow: inset 0 -2px 0 rgba(0,0,0,0.2);
background: #dd200b;
background: -moz-linear-gradient(top, #dd200b 0%, #c51c09 100%);
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#dd200b), color-stop(100%,#c51c09));
background: -webkit-linear-gradient(top, #dd200b 0%,#c51c09 100%);
background: -o-linear-gradient(top, #dd200b 0%,#c51c09 100%);
background: -ms-linear-gradient(top, #dd200b 0%,#c51c09 100%);
background: linear-gradient(to bottom, #dd200b 0%,#c51c09 100%);
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#dd200b', endColorstr='#c51c09',GradientType=0 );
}
footer {
background-color: #fff;
text-align: center;
font-size: 12px;
color: #999;
padding: 16px 0;
margin-top: 35px;
}
footer p {
margin: 0;
}

View File

@ -0,0 +1,110 @@
/* list page */
header {
background-image: url(<%= asset_path "theader_bg.jpg"%>);
}
#toolbar {
background-image: url(<%= asset_path "tfilter_bg.jpg"%>);
}
#item-list li {
width: 25%;
}
#item-list li a {
width: 220px;
height: 220px;
background: url(<%= asset_path "tlist_tap.png"%>) center top no-repeat;
padding-top: 16px;
margin: 0 auto 35px auto;
background-color: #fff;
box-shadow: 0 4px 6px rgba(0,0,0,0.2);
}
#item-list li a:hover .item-info {
visibility: visible;
opacity: 1;
}
#item-list .item-thumb {
width: 210px;
height: 210px;
border: solid 5px #fff;
}
#item-list .item-info {
visibility: hidden;
opacity: 0;
position: absolute;
bottom: 5px;
left: 5px;
width: 190px;
height: 60px;
padding: 10px;
background-color: #000;
background-color: rgba(0,0,0,0.7);
-webkit-transition: opacity 0.3s ease;
-moz-transition: opacity 0.3s ease;
transition: opacity 0.3s ease;
}
#item-list .item-name {
color: #fff;
}
#item-list .item-price {
right: 10px;
bottom: 0;
border-radius: 3px 3px 0 0;
}
.color-tag {
display: inline-block;
vertical-align: middle;
width: 24px;
height: 24px;
border-radius: 2px;
box-shadow: inset 0 1px 1px rgba(0,0,0,0.6);
}
.btn .color-tag {
margin: 2px -6px;
vertical-align: baseline;
}
.red {
background-color: #ef202a;
}
.yellow {
background-color: #feba29;
}
.green {
background-color: #2ca53b;
}
.blue {
background-color: #019cef;
}
.purple{
background-color: #d402e7;
}
.white {
background-color: #fff;
}
.gray {
background-color: #969696;
}
.black {
background-color: #222;
}
#color-filter .btn:hover {
background-color: #aaa;
border-color: #9a9a9a;
background-image: linear-gradient(bottom, rgb(204,204,204) 0%, rgb(172,172,172) 100%);
background-image: -o-linear-gradient(bottom, rgb(204,204,204) 0%, rgb(172,172,172) 100%);
background-image: -moz-linear-gradient(bottom, rgb(204,204,204) 0%, rgb(172,172,172) 100%);
background-image: -webkit-linear-gradient(bottom, rgb(204,204,204) 0%, rgb(172,172,172) 100%);
background-image: -ms-linear-gradient(bottom, rgb(204,204,204) 0%, rgb(172,172,172) 100%);
}
#color-filter .btn:hover .color-tag {
box-shadow: inset 0 1px 1px rgba(0,0,0,0.6), inset 0 -1px 0 rgba(255,255,255,0.6);
}
#color-filter .option-default:hover {
background-color: #f6f6f6;
background-image: none;
border-color: #e0e0e0;
}
/* content page */
#item-info .item-thumb, #screen-shot {
box-shadow: 0 2px 6px rgba(0,0,0,0.2);
}

View File

@ -8,6 +8,9 @@ class Admin::InfosController < ApplicationController
def index
@attributes = Info.all.entries
@roles = Role.excludes('disabled' => true)
render :template => 'admin/attributes/index'
end
@ -22,7 +25,7 @@ class Admin::InfosController < ApplicationController
def edit
@attribute = Info.find(params[:id])
@attribute_fields_upper_object = [@attribute]
# @attribute_fields_upper_object = [@attribute]
render :template => 'admin/attributes/edit'
end
@ -49,10 +52,20 @@ class Admin::InfosController < ApplicationController
end
def add_attribute_field
attribute = Info.find(params[:info_id]) rescue nil
@attribute_field_counter = attribute.attribute_fields.count
@attribute_field = attribute.attribute_fields.build
@attribute_field.save
@attribute_field[:af_count] = @attribute_field_counter
@attribute = Info.find(params[:info_id])
respond_to do |format|
format.js { render 'admin/attributes/add_attribute_field' }
end
end
protected

View File

@ -9,6 +9,18 @@ class Admin::PurchasesController < ApplicationController
@purchases = Purchase.all.entries
end
def buy_template
original_file, zip_name = download_template(params[:id])
temp_file = Tempfile.new("temp_file_zip")
temp_file.binmode
temp_file.write original_file
temp_file.rewind
unzip_design(temp_file, zip_name)
temp_file.close
temp_file.unlink
redirect_to admin_designs_url
end
def download
@purchase = Purchase.first(:conditions => {:id => params[:id]})
download_purchase(@purchase, request.env['REQUEST_URI'].split('admin')[0].chop)
@ -183,4 +195,66 @@ class Admin::PurchasesController < ApplicationController
end
def download_template(id)
uri = URI.parse("http://#{APP_CONFIG['store_ip']}/download/design/#{id}")
http = Net::HTTP.new(uri.host, uri.port)
request = Net::HTTP::Get.new(uri.request_uri)
response = http.request(request)
[response.body, (response['content-disposition'].split('filename=')[1].gsub(/[\\\"]|.zip/, '') rescue '')]
end
def unzip_design(input_file, zip_name)
temp_file = Tempfile.new("temp_file")
temp_file.write(input_file.read.force_encoding('UTF-8'))
temp_file.rewind
Zip::ZipFile.open(temp_file) { |zip_file|
design = Design.new.from_json(zip_file.read("#{zip_name}/info.json"))
Dir.mktmpdir('f_path') { |dir|
themes_entries = []
javascripts_entries = []
images_entries = []
screenshots_entries = []
zip_file.entries.each do |entry|
case (path = entry.to_s)
when /\A(#{zip_name})\/(default\.css)\z/ #for default css
design.build_css_default(:file => get_temp_file(zip_file, dir, entry))
when /\A(#{zip_name})\/(reset\.css)\z/ #for reset css
design.build_css_reset(:file => get_temp_file(zip_file, dir, entry))
when /\A(#{zip_name})\/(layout\.html)\z/ #for layout html
design.build_layout(:file => get_temp_file(zip_file, dir, entry))
when /\A(#{zip_name})\/(thumb((\.jpg)|(\.png)|(\.gif)))\z/ #for thumb
design.build_thumb(:file => get_temp_file(zip_file, dir, entry))
when /\A(#{zip_name})\/(themes)\/.*(\.css)\z/ #for themes css
themes_entries << entry
when /\A(#{zip_name})\/(javascripts)\/.*(\.js)\z/ #for js
javascripts_entries << entry
when /\A(#{zip_name})\/(images)\/.*((\.jpg)|(\.png)|(\.gif))\z/ #for img
images_entries << entry
when /\A(#{zip_name})\/(screenshots)\/.*((\.jpg)|(\.png)|(\.gif))\z/ #for img
screenshots_entries << entry
end
end
['themes', 'javascripts', 'images', 'screenshots'].each do |type|
eval("#{type}_entries").each do |entry|
eval("design.#{type}").build(:file => get_temp_file(zip_file, dir, entry))
end
end
}
design.zip_file = input_file
design.save
}
temp_file.close
temp_file.unlink
end
def get_temp_file(zip_file, dir, entry)
filename = File.basename(entry.to_s)
temp_file = File.new(dir + '/' + filename, 'w+')
temp_file.write (zip_file.read entry ).force_encoding('UTF-8')
temp_file
end
end

View File

@ -57,6 +57,24 @@ class Admin::SitesController < ApplicationController
end
def change_design
design = Design.find(params[:site_id]) rescue nil
update_design(design) if design
render :nothing => true
end
protected
def update_design(design)
@site.design = design
if @site.save
theme_id = design.themes.first.id
Page.all.each do |page|
page.update_attributes({design_id: design.id, theme_id: (theme_id unless page.root?)})
end
end
end
private
def get_site

View File

@ -3,9 +3,29 @@ class Admin::TemplateStoreController < ApplicationController
layout "new_admin"
def index
@templates = JSON.parse(get_templates)
end
def show
@template = JSON.parse(get_template(params[:id])) rescue nil
end
protected
def get_template(id)
uri = URI.parse("http://#{APP_CONFIG['store_ip']}/store/design/#{id}")
http = Net::HTTP.new(uri.host, uri.port)
request = Net::HTTP::Get.new(uri.request_uri)
response = http.request(request)
response.body
end
def get_templates
uri = URI.parse("http://#{APP_CONFIG['store_ip']}/store/designs")
http = Net::HTTP.new(uri.host, uri.port)
request = Net::HTTP::Get.new(uri.request_uri)
response = http.request(request)
response.body
end
end

View File

@ -8,18 +8,38 @@ class Desktop::CoAuthorRelationsController < ApplicationController
end
end
def edit
@co_author_relation = CoAuthorRelation.find(params[:id])
respond_to do |format|
format.html { render :layout => false}
end
end
def new
@new_relation = CoAuthorRelation.new
@co_author_relation = CoAuthorRelation.new
end
def create
@new_relation = CoAuthorRelation.new(params[:co_author_relation])
@co_author_relation = CoAuthorRelation.new(params[:co_author_relation])
@co_author_relations = CoAuthorRelation.all
if @new_relation.save
newv = render_to_string :partial=>"show_form", :object=>@new_relation
render json: {success:true, msg: "New Relation successfully saved!","newvalue"=>newv}.to_json
if @co_author_relation.save
newv = render_to_string partial: "show_form", object: @co_author_relations
render json: {success: true, msg: "New Relation successfully saved!", newvalue: newv}.to_json
else
error_msg = @new_relation.errors.full_messages.join("<br />")
error_msg = @co_author_relation.errors.full_messages.join("<br />")
render json: {success: false, msg: error_msg}.to_json
end
end
def update
@co_author_relation = CoAuthorRelation.find(params[:id])
if @co_author_relation.update_attributes(params[:co_author_relation])
@co_author_relations = CoAuthorRelation.all
newv = render_to_string partial: "show_form", object: @co_author_relations
render json: {success: true, msg: "New Relation successfully updated!", newvalue: newv}.to_json
else
error_msg = @co_author.errors.full_messages.join("<br />")
render json: {success: false, msg: error_msg}.to_json
end
end
@ -27,7 +47,17 @@ class Desktop::CoAuthorRelationsController < ApplicationController
def destroy
@co_author_relation = CoAuthorRelation.find(params[:id])
@co_author_relation.destroy
reset_co_author_relation
render :json => {success: true, msg: "deleted successfully!"}
end
private
def reset_co_author_relation
co_author = CoAuthor.where(co_author_relations_id: @co_author_relation.id)
co_author.map do |c|
c.update_attributes(co_author_relations_id: nil)
end
end
end

View File

@ -1,6 +1,8 @@
class Desktop::CoAuthorsController < ApplicationController
def index
@co_authors = CoAuthor.where(name_id: current_user.id)
nils, not_nils = CoAuthor.where(name_id: current_user.id)\
.asc(:co_author).partition{|p| p.email.nil?}
@co_authors = not_nils + nils
@co_author_relations = CoAuthorRelation.all
respond_to do |format|
@ -8,15 +10,6 @@ class Desktop::CoAuthorsController < ApplicationController
end
end
def show
@co_author = CoAuthor.find(params[:id])
respond_to do |format|
format.html { redirect_to desktop_co_authors_url, :layout => false }
format.json { render json: @co_author }
end
end
def new
@co_author = CoAuthor.new
@co_author_relations = CoAuthorRelation.all

View File

@ -1,5 +1,4 @@
class Desktop::JournalListsController < ApplicationController
def index
level_types = JournalLevelType.all
all_journal_lists = WritingJournal.where(create_user_id: current_user.id)
@ -7,8 +6,7 @@ class Desktop::JournalListsController < ApplicationController
[ j.journal_title,
j.journal_level_type_ids.map do |type|
level_types.find(type).title
end.join(",")
].join(" -- ")
end]
end
@journal_lists = all_journal_lists.uniq

View File

@ -1,6 +1,4 @@
class Desktop::JournalPagesController < ApplicationController
#before_filter :check_for_cancel, :only => [:create, :update]
def index
@writing_journal = WritingJournal.where(create_user_id: current_user.id)
@level_types = JournalLevelType.all
@ -10,9 +8,6 @@ class Desktop::JournalPagesController < ApplicationController
end
end
def show
end
def new
@writing_journal = WritingJournal.new
@level_types = JournalLevelType.all
@ -109,10 +104,4 @@ class Desktop::JournalPagesController < ApplicationController
render json: JSON.pretty_generate(data)
end
private
def check_for_cancel
if params[:commit] == "Cancel"
end
end
end

View File

@ -19,7 +19,7 @@ class DesktopController< ApplicationController
render :layout => false
end
def sections
def allsections
render :layout => false
end

View File

@ -8,63 +8,28 @@ class Design
field :title, :type => String
field :version, :type => String
mount_uploader :zip_file, AssetUploader
has_one :site
has_one :css_default, as: :css, :autosave => true, :dependent => :destroy
has_one :layout, :autosave => true, :dependent => :destroy
has_one :css_reset, :autosave => true, :dependent => :destroy
has_one :thumb, :autosave => true, :dependent => :destroy
has_many :images, as: :imgs, :autosave => true, :dependent => :destroy
has_many :javascripts, as: :js, :autosave => true, :dependent => :destroy
has_many :pages
has_many :screenshots, :autosave => true, :dependent => :destroy
has_many :themes, :autosave => true, :dependent => :destroy
accepts_nested_attributes_for :images, :allow_destroy => true
accepts_nested_attributes_for :javascripts, :allow_destroy => true
accepts_nested_attributes_for :screenshots, :allow_destroy => true
accepts_nested_attributes_for :themes, :allow_destroy => true
validates_presence_of :author, :title
after_save :parse_css_for_images
def new_files=(*attrs)
attrs[0].map do |key,items_ary| #Loop by JSs,Themes,Imgs
self.files=([items_ary, key])
end
end
# def javascripts=(*attrs)
# self.files = (attrs << 'javascripts')
# end
#
# def themes=(*attrs)
# self.files = (attrs << 'themes')
# end
#
# def images=(*attrs)
# self.files = (attrs << 'images')
# end
# Update or create the attribute records
def files=(attrs)
case attrs.last
when 'layout'
files = self.layout.build
else
files = eval(attrs.last)
end
attrs[0].each do |a|
if a[:id].blank? && !a[:file].blank?
files.build(:file => a[:file], :to_save => true)
else
files.each do |file|
if file.id.to_s == a[:id]
file.to_destroy = a[:to_destroy]
end
end
end
end
end
protected
def parse_css_for_images

View File

@ -0,0 +1,3 @@
class Screenshot < Image
belongs_to :design
end

View File

@ -0,0 +1,3 @@
class Thumb < Image
belongs_to :design
end

View File

@ -11,7 +11,6 @@ class Section
def initialize_group
self.groups.build
self.groups.build
end
end

View File

@ -26,6 +26,7 @@ class Site
field :footer, localize: true
field :sub_menu, localize: true
belongs_to :design
has_many :site_metas, :autosave => true, :dependent => :destroy
def generate_keys

View File

@ -4,6 +4,7 @@ class AttributeField
include ::AttributeFieldsHelper
field :key
field :af_count
field :markup ,:default=>"text_field"
field :option_list ,:type => Hash,:default => {}
field :markup_options,:type => Hash

View File

@ -3,6 +3,7 @@
class ImageUploader < CarrierWave::Uploader::Base
require 'mime/types'
require 'carrierwave/processing/mini_magick'
include Sprockets::Helpers::RailsHelper
process :set_content_type
@ -62,14 +63,20 @@ class ImageUploader < CarrierWave::Uploader::Base
# "something.jpg" if original_filename
# end
def cache_dir
"#{Rails.root}/tmp/uploads"
end
def manipulate!
cache_stored_file! if !cached?
#raise File.extname(current_path.to_s).to_s
image = ::MiniMagick::Image.open(current_path)
image = yield(image)
image.write(current_path)
::MiniMagick::Image.open(current_path)
rescue
nil
# image = yield(image)
# image.write(current_path)
# ::MiniMagick::Image.open(current_path)
# rescue
# nil
end
end

View File

@ -0,0 +1 @@
$('<%= j render :partial => 'shared/attribute_field/attribute_field', :collection => [@attribute_field] %>').appendTo('#attribute_field_list').hide().fadeIn();

View File

@ -19,12 +19,13 @@
</div>
</div>
<% @attribute_fields_upper_object.each do |attribute|%>
<div class="map-block back attributes">
<h4><span><%= attribute.title+ t(:attributes)%></span></h4>
<%= render :partial=>"shared/attribute_field/attribute_field",:collection=>attribute.attribute_fields%>
<h4><span><%= @attribute.title+ t(:attributes)%></span></h4>
<div id="attribute_field_list">
<%= render :partial=>"shared/attribute_field/attribute_field",:collection=>@attribute.attribute_fields%>
</div>
<% end %>
</div>
</div>
<div class="form-actions form-fixed pagination-right">
<%= link_to content_tag(:i,t(:add_attribute_field),:class=>"icon-plus icon-white"),admin_info_add_attribute_field_path(@attribute),:class=>"btn btn-primary",:remote => true%>

View File

@ -1,6 +1,6 @@
<tr class="with_action">
<td><%= check_box_tag 'to_delete[]', design.id, false, :class => "checkbox_in_list" %></td>
<td>
<td class="span1"><%= check_box_tag 'to_delete[]', design.id, false, :class => "checkbox_in_list" %></td>
<td class="span2">
<%= design.title %>
<div class="quick-edit">
<ul class="nav nav-pills hide">
@ -9,6 +9,7 @@
</ul>
</div>
</td>
<td><%= design.author %></td>
<td><%= design.intro %></td>
<td class="span1"><%= radio_button_tag 'design_default', design.id, (@site.design.id.to_s.eql?(design.id.to_s) ? true : false), :class => 'design_default', :rel => admin_sites_path %></td>
<td class="span7"><%= design.intro %></td>
<td class="span2"><%= design.author %></td>
</tr>

View File

@ -1,8 +1,9 @@
<thead>
<tr>
<th class="span1 strong"></th>
<th class="span7"></th>
<th class="span2"></th>
<th class="span1"></th>
<th class="span7"></th>
<th class="span2"></th>
</tr>
</thead>
@ -10,3 +11,14 @@
<tbody id="tbody_designs" class="sort-holder">
<%= render :partial => 'design', :collection => @designs %>
</tbody>
<% content_for :page_specific_javascript do %>
<script>
$(document).ready(function(){
$(document).on('change', '.design_default', function(){
$(this).attr('value');
$.getScript($(this).attr('rel') + '/' + $(this).val() + '/change_design');
});
});
</script>
<% end %>

View File

@ -1,4 +1,5 @@
<%= render_sort_bar(true, delete_admin_designs_path(:direction => params[:direction], :sort => params[:sort], :sort_options => params[:sort_options]),
['title', 'title','span7', :title],
['author', 'author', 'span2', :author],
['intro', 'intro', 'span2', :intro]).html_safe %>
['title', 'title','span2', :title],
['', '', 'span1', :default],
['intro', 'intro', 'span7', :intro],
['author', 'author', 'span2', :author]).html_safe %>

View File

@ -18,7 +18,7 @@
</ul>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><%= t(javascripts) %> <b class="caret"></b></a>
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><%= t(:javascripts) %> <b class="caret"></b></a>
<ul class="dropdown-menu">
<% @design.javascripts.each do |js| %>
<li><a href="#<%= dom_id js %>" data-toggle="tab"><%= js.name %></a></li>

View File

@ -3,56 +3,85 @@
<% end %>
<% content_for :page_specific_css do %>
<%= stylesheet_link_tag 'modulestore' %>
<%= stylesheet_link_tag 'normalize' %>
<%= stylesheet_link_tag 'bootstrap-responsive' %>
<%= stylesheet_link_tag 'rulingorbit' %>
<%= stylesheet_link_tag 'module-store' %>
<% end %>
<% content_for :page_specific_javascript do %>
<%= javascript_include_tag 'lib/jquery.cycle.all.latest.js' %>
<script type="text/javascript">
// Banner slideshow
$(function() {
$('.slide').cycle({
fx: 'scrollRight',
speed: 600,
timeout: 4000,
slideExpr: 'img',
next: '.next',
prev: '.prev'
});
});
</script>
<%= javascript_include_tag "jquery.cycle" %>
<%= javascript_include_tag "modules" %>
<% end %>
<div class="md-bg">
<div class="modulestore md-store">
<div class="header">
<h1 class="home"><a href="modulestore">Orbit Module Store</a></h1>
<div class="slide-wrap">
<div class="slide-feature"></div>
<div class="slide">
<div class="slide-nav">
<a class="prev" href="#">&lsaquo;</a>
<a class="next" href="#">&rsaquo;</a>
</div>
<a href="#"><img src="<%= asset_path 'modulestore/slide01.jpg' %>"></a>
<a href="#"><img src="<%= asset_path 'modulestore/slide01.jpg' %>"></a>
<a href="#"><img src="<%= asset_path 'modulestore/slide01.jpg' %>"></a>
</div>
</div>
</div>
<div class="main">
<div class="app-list row">
<% 9.times do %>
<div class="app span3">
<a href="module_store/show">
<img src="<%= asset_path 'modulestore/app.jpg' %>" alt="App" />
<div class="detail">
<strong class="apptitle">Orange theme</strong>
<em class="price">Free download</em>
</div>
<div class="wrapper">
<div id="toolbar">
<div class="filter fn">
<span class="label">Price</span>
<div class="drop-menu ui">
<a href="" class="controller">
<span class="option-default">All</span>
<span class="arrow down"></span>
</a>
<ul class="option-list">
<li><a class="option-item" href="">All</a></li>
<li><a class="option-item" href="">3000</a></li>
<li><a class="option-item" href="">4000</a></li>
<li><a class="option-item" href="">5000</a></li>
</ul>
</div>
</div>
<div class="filter fn">
<span class="label">Category</span>
<div class="drop-menu ui">
<a href="" class="controller">
<span class="option-default">All</span>
<span class="arrow down"></span>
</a>
<ul class="option-list">
<li><a class="option-item" href="">All</a></li>
<li><a class="option-item" href="">National Taiwan University</a></li>
<li><a class="option-item" href="">Category 1</a></li>
<li><a class="option-item" href="">Category 2</a></li>
<li><a class="option-item" href="">Category 3</a></li>
</ul>
</div>
</div>
<div class="filter fn">
<span class="label">Sort by</span>
<div class="drop-menu ui">
<a href="" class="controller">
<span class="option-default">Date</span>
<span class="arrow down"></span>
</a>
<ul class="option-list">
<li><a class="option-item" href="">Date</a></li>
<li><a class="option-item" href="">Popular</a></li>
<li><a class="option-item" href="">Recent Upload</a></li>
</ul>
</div>
</div>
</div>
<div id="feature" class="clearfix">
<div id="feature-nav">
<ul>
<li><a href=""><img class="item-thumb" src="<%= asset_path "f1.jpg"%>" alt="Thumbnail 1" width="228" height="67"></a></li>
<li><a href=""><img class="item-thumb" src="<%= asset_path "f2.jpg"%>" alt="Thumbnail 2" width="228" height="67"></a></li>
<li><a href=""><img class="item-thumb" src="<%= asset_path "f3.jpg"%>" alt="Thumbnail 3" width="228" height="67"></a></li>
</ul>
</div>
<div class="holder">
<ul>
<li><a href=""><img class="item-thumb" src="<%= asset_path "f1.jpg"%>" alt="Thumbnail 1" width="740" height="220"></a></li>
<li><a href=""><img class="item-thumb" src="<%= asset_path "f2.jpg"%>" alt="Thumbnail 2" width="740" height="220"></a></li>
<li><a href=""><img class="item-thumb" src="<%= asset_path "f3.jpg"%>" alt="Thumbnail 3" width="740" height="220"></a></li>
</ul>
</div>
</div>
<div id="item-list">
<ul class="clearfix">
<% 12.times do |i| %>
<li><a href="module_store/show?m=<%= i + 1 %>"><img src="/assets/module/thumb/mt<%= i + 1 %>.jpg" alt="" class="item-thumb"><span class="item-info"><b class="item-name">Module <%= i + 1 %></b><span class="item-price">Free</span></span></a></li>
<% end %>
</div>
</div>
</ul>
</div>
</div>

View File

@ -3,95 +3,53 @@
<% end %>
<% content_for :page_specific_css do %>
<%= stylesheet_link_tag 'modulestore' %>
<%= stylesheet_link_tag 'normalize' %>
<%= stylesheet_link_tag 'bootstrap-responsive' %>
<%= stylesheet_link_tag 'rulingorbit' %>
<%= stylesheet_link_tag 'module-store' %>
<% end %>
<% content_for :page_specific_javascript do %>
<%= javascript_include_tag 'lib/jquery.cycle.all.latest.js' %>
<script type="text/javascript">
$(function() {
$('.slide').cycle({
fx: 'scrollRight',
speed: 'fast',
timeout: 4000,
pager: '.detail-slide-nav',
pagerEvent: 'mouseover',
slideExpr: 'img'
});
});
</script>
<%= javascript_include_tag "jquery.cycle" %>
<%= javascript_include_tag "rulingorbit" %>
<% end %>
<div class="modulestore-detail md-store">
<div class="header">
<h1 class="home"><a href="modulestore.html">Orbit Module Store</a></h1>
</div>
<div class="main row-fluid clearfix">
<div class="left-col span3">
<%= image_tag 'modulestore/app-icon.jpg', :class => "app-icon" %>
<a href="#" class="price btn btn-primary">Free download</a>
<ul class="download-meta">
<li><strong class="downloads">Download:<span> 257985 times</span></strong></li>
<li>
<h3 class="who-are-using-this-apps">Who are using this apps?</h3>
<ul>
<li>NTU College of Liberal Arts</li>
<li>NTU Department of Mathematics</li>
<li>NCKU Graduate Institute of Communication Engineering</li>
<li>NCCU Graduate Institute of Biomedical Electronics and Bioinformatics</li>
<li>NTHU Nano-Electro-Mechanical System Research Center</li>
</ul>
</li>
<li>
<h3 class="recommends">Who are using this also like</h3>
<ul class="recommend-thumbs">
<li>
<a href=""><%= image_tag 'modulestore/dropbox.jpg' %></a>
<a href=""><%= image_tag 'modulestore/screen-capture.jpg' %></a>
<a href=""><%= image_tag 'modulestore/deault-app-icon.jpg' %></a>
</li>
</ul>
</li>
<div class="wrapper">
<div id="toolbar">
<div class="fn"><a class="ui btn" href="/admin/module_store">Back to Store</a></div>
</div>
<div id="content" class="clearfix">
<div class="side">
<div id="item-info">
<img src="/assets/module/thumb/mt<%= params[:m] %>.jpg" alt="" class="item-thumb">
<h2 class="item-name">Module Name</h2>
<a id="download" href="">free download</a>
<ul class="item-extra-info">
<li><span class="title">downloads</span><span class="count"><%= Random.new.rand(10..100) %></span></li>
</ul>
<h3>who use it?</h3>
<ul class="user-list">
<li>Unversity 1</li>
<li>Unversity 2</li>
<li>Unversity 3</li>
<li>Unversity 4</li>
<li>Unversity 5</li>
</ul>
</div>
<div class="right-col span6">
<ul class="breadcrumb">
<li><a href="Orbit_module_home.html">Home</a> <span class="divider">/</span></li>
<li class="active">Orbit</li>
</ul>
<h2>Orbit app name here</h2>
<h3>Description</h3>
<p class="app-description">
Orbit Blog makes it easy to post text, photos and video onto your blog.
We created Orbit blog to give you an easy way to share your thoughts about current events, what's going on in your life, or anything else you'd care to discuss with the world. We've developed a host of features to make blogging as simple and effective as possible:
* Free hosting for your images, video, and blog content
* Powerful Template Designer for customizing your blog's look and feel
* Drag and drop widget arrangements
* Hundreds of background images and of flexible default templates
* Built-in blog stats for realtime traffic data
* Easy, built-in monetization with AdSense
* Mobile support for blogging-on-the-go
* Use your custom URL for free
* Support for individual, team, and private blogs
* Post and comment notifications
* Gadget directory with hundreds of free widgets and add-ons
* Available in 4 languages
</p>
<div class="screenshots">
<h3>Screenshots</h3>
<div class="slide">
<div class="detail-slide-nav">
</div>
<a href="#"><%= image_tag 'modulestore/screenshot1.jpg' %></a>
<a href="#"><%= image_tag 'modulestore/screenshot2.jpg' %></a>
<a href="#"><%= image_tag 'modulestore/screenshot3.jpg' %></a>
<a href="#"><%= image_tag 'modulestore/screenshot4.jpg' %></a>
<a href="#"><%= image_tag 'modulestore/screenshot5.jpg' %></a>
<div class="main clearfix">
<h3>description</h3>
<div id="desc-holder" class="paragraph">Pixel Unions Jitensha defines storefront minimalism. Japanese for “bicycle,” Jitensha offers clean typography and easy usability, including full color, font, logo, and footer customization. With its painless social media and blog integration, Jitensha gorgeously accomodates every aspect of your business. Any questions before you launch? Dont hesitate to email us: Support@PixelUnion.net.</div>
<h3>screen shot</h3>
<div id="screen-shot">
<div class="holder">
<img src="" alt="Thumbnail 1" class="preview item-thumb">
<img src="" alt="Thumbnail 2" class="preview item-thumb">
<img src="" alt="Thumbnail 3" class="preview item-thumb">
<img src="" alt="Thumbnail 4" class="preview item-thumb">
<img src="" alt="Thumbnail 5" class="preview item-thumb">
</div>
</div>
</div>
<div>
</div>
</div>

View File

@ -1,12 +1,12 @@
<div class="main2">
<h1><%= t('list.purchase') %></h1>
<table>
<h1 class="list_title"><%= t('list.purchase') %></h1>
<table class="table main-list">
<thead>
<tr>
<td><%= t(:title) %></td>
<td><%= t(:intro) %></td>
<td><%= t(:author) %></td>
<td><%= t(:action) %></td>
<th><%= t(:title) %></th>
<th><%= t(:intro) %></th>
<th><%= t(:author) %></th>
<th><%= t(:action) %></th>
</tr>
</thead>
<%# @purchases.each do |purchase| %>
@ -15,7 +15,7 @@
<td><%= purchase.title %></td>
<td><%= purchase.intro %></td>
<td><%= purchase.author %></td>
<td class="action">
<td>
<% if purchase.downloaded %>
<%= t(:downloaded) %>
<% else %>
@ -26,3 +26,12 @@
<%# end %>
</table>
</div>
<style type="text/css">
.list_title {
background: #eee;
font-weight: bold;
margin: 0;
padding: 20px 6px;
font-size: 18px;
}
</style>

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