apps update -- app upload and activation
This commit is contained in:
parent
f2ada14b7a
commit
ed22a4d303
|
@ -38,6 +38,15 @@ var sortAscending = function(a, b) {
|
|||
var sortDescending = function(a, b) {
|
||||
return $(a).find("h1").text() < $(b).find("h1").text() ? 1 : -1;
|
||||
};
|
||||
|
||||
Array.prototype.indexOfObject = function(object){
|
||||
for(i = 0;i < this.length; i++){
|
||||
if(this[i] === object)
|
||||
break;
|
||||
}
|
||||
return i;
|
||||
}
|
||||
|
||||
jQuery.ajax = (function(_ajax){
|
||||
|
||||
var protocol = location.protocol,
|
||||
|
@ -315,9 +324,7 @@ var orbitDesktop = function(dom){
|
|||
$(window).resize(function(){
|
||||
// var ww = $(window).width();
|
||||
// $("img#thmbackground").attr({"width":ww});
|
||||
// if( $('.tinycanvas').length > 0 ){
|
||||
$('.tinycanvas').tinyscrollbar_update('relative');
|
||||
// }
|
||||
if( $('.tinycanvas').length > 0 ){ $('.tinycanvas').tinyscrollbar_update('relative'); }
|
||||
if($(o.contentHolder).find("div.app_frame").length > 0){
|
||||
$(o.contentHolder).find("div.app_frame").each(function(){
|
||||
var app_holder_height = $(this).height() - 72;
|
||||
|
@ -464,7 +471,6 @@ var orbitDesktop = function(dom){
|
|||
o.simple_drop_down();
|
||||
o.autocomplete();
|
||||
o.use_select2();
|
||||
o.check_simple_layout();
|
||||
}
|
||||
this.paging = true;
|
||||
this.pagination = function(link,variable,page_no){
|
||||
|
@ -759,7 +765,7 @@ var orbitDesktop = function(dom){
|
|||
var f = (tile.fullsize?"fullsize":null);
|
||||
|
||||
if(tile.data_category == "app"){
|
||||
$li = $('<li data-id="'+tile.id+'" class="app" data-row="'+row+'" data-col="'+col+'" data-sizex="'+x+'" data-sizey="'+y+'" data-title="'+tile.title+'" data-category="'+tile.data_category+'" data-content="'+tile.data_content+'"><span class="tile '+tilecolor+' '+op+'"></span><a href="'+tile.data_content+'" class="appicon" onclick="return false;" data-url="'+tile.link+'"><img src="'+o.iconPath+tile.data_content+'.png" alt="" ></a><h1 class="appname thmtxt">'+tile.title+'</h1></li>');
|
||||
$li = $('<li data-id="'+tile.id+'" class="app" data-row="'+row+'" data-col="'+col+'" data-sizex="'+x+'" data-sizey="'+y+'" data-title="'+tile.title+'" data-category="'+tile.data_category+'" data-content="'+tile.data_content+'"><span class="tile '+tilecolor+' '+op+'"></span><a href="'+tile.data_content+'" class="appicon" onclick="return false;" data-url="'+tile.link+'"><img src="'+tile.icon+'" alt="" ></a><h1 class="appname thmtxt">'+tile.title+'</h1></li>');
|
||||
} else {
|
||||
$li = $('<li data-id="'+tile.id+'" class="widget '+f+'" data-row="'+row+'" data-col="'+col+'" data-sizex="'+x+'" data-sizey="'+y+'" data-category="'+tile.data_category+'" data-content="'+tile.data_content+'" js-link="'+tile.js[0].url+'" css-link="'+tile.css.url+'"><span class="tile '+tilecolor+' '+op+'"></span><div class="appholder"></div><h1 class="appname thmtxt">'+tile.title+'</h1></li>');
|
||||
}
|
||||
|
@ -835,37 +841,26 @@ var orbitDesktop = function(dom){
|
|||
var $elements = $("#app_manager .element"),
|
||||
$result = $("#app_manager .search_result"),
|
||||
$appinfo = $("#app_info"),
|
||||
$applist = $("#app_list"),
|
||||
$apptitle = $appinfo.find(".app_info_name"),
|
||||
$appicon = $appinfo.find(".app_info_icon"),
|
||||
$appinfolist = $appinfo.find(".app_info_list"),
|
||||
$canvas = $result.parents('.overview'),
|
||||
current_width = $canvas.css('width');
|
||||
$apptitle = $("#app_info .app_info_name"),
|
||||
$appicon = $("#app_info .app_info_icon")
|
||||
$appinfolist = $("#app_info .app_info_list");
|
||||
|
||||
$("#app_manager #searchbox")
|
||||
.focus(function(){
|
||||
$(this).val("");
|
||||
})
|
||||
.keyup(function(e){
|
||||
var query = $(this).val();
|
||||
if(query){
|
||||
$appinfo.hide().attr('style','');
|
||||
$result.empty().show();
|
||||
$applist.hide();
|
||||
|
||||
// searchArray = $elements.filter(":containsi("+$(this).val()+")").clone(1,1);
|
||||
// searchArray = $('#app_list').find('[data-title*="'+query+'"]').clone(1,1);
|
||||
searchArray = $elements.filter(function(){
|
||||
var matcher = new RegExp(query, "i");
|
||||
return matcher.test( $(this).attr('data-title') );
|
||||
}).clone(1,1);
|
||||
if($(this).val()){
|
||||
$result.empty();
|
||||
$elements.hide();
|
||||
|
||||
searchArray = $elements.filter(":containsi("+$(this).val()+")");
|
||||
if(searchArray.length > 0){
|
||||
// searchArray.each(function(){
|
||||
// $(this).hide("fold","fast");
|
||||
// })
|
||||
// $("#app_manager #seperator").show();
|
||||
var i = 0, c = 1; // c for numbers of columns
|
||||
var i = 0;
|
||||
var $column;
|
||||
searchArray.each(function(){
|
||||
i++;
|
||||
|
@ -877,50 +872,23 @@ var orbitDesktop = function(dom){
|
|||
if(i == 4){
|
||||
$result.append($column);
|
||||
i = 0;
|
||||
c++;
|
||||
}
|
||||
});
|
||||
})
|
||||
if(i != 0){
|
||||
$result.append($column);
|
||||
c*=132;
|
||||
searchArray
|
||||
.eq(0)
|
||||
.parents('.overview')
|
||||
.animate({
|
||||
'width': c
|
||||
},0, function(){
|
||||
$(this)
|
||||
.parents('.tinycanvas')
|
||||
.tinyscrollbar_update();
|
||||
});
|
||||
}
|
||||
elementSetting();
|
||||
} else {
|
||||
var $no_result = $('<div class="w2 h1 thmtxt thmc2 vp hp message"><span class="tile"></span>No result for <b></b></div>');
|
||||
$no_result
|
||||
.find('b')
|
||||
.text('"'+$(this).val()+'"')
|
||||
.end()
|
||||
.show()
|
||||
.appendTo($result);
|
||||
$canvas.animate({
|
||||
'width':252
|
||||
}, 0, function(){
|
||||
$(this)
|
||||
.parents('.tinycanvas')
|
||||
.tinyscrollbar_update();
|
||||
});
|
||||
$result.text("No Result Found.");
|
||||
}
|
||||
} else if( query == "" ) {
|
||||
info_close();
|
||||
|
||||
} else {
|
||||
$result.empty();
|
||||
$applist.show();
|
||||
$canvas.css('width',current_width);
|
||||
$elements.show();
|
||||
}
|
||||
})
|
||||
.blur(function(){
|
||||
if($(this).val()==""){
|
||||
$(this).val("Search");
|
||||
}
|
||||
if($(this).val()=="") $(this).val("Search");
|
||||
});
|
||||
|
||||
//for Alphabet sorting
|
||||
|
@ -952,22 +920,16 @@ var orbitDesktop = function(dom){
|
|||
return false;
|
||||
});
|
||||
|
||||
|
||||
var elementSetting = function(){// for element setting load
|
||||
$elements.click(function(){
|
||||
var $e = $(this);
|
||||
$(".element").click(function(){
|
||||
$e = $(this);
|
||||
$apptitle.text($e.data("title"));
|
||||
$appicon.attr("src",$e.find("img").attr("src"));
|
||||
$appinfolist.find("[info=app_version]").text($e.data("version"));
|
||||
$appinfolist.find("li:eq(2) div").text($e.data("version"));
|
||||
var dt = new Date($e.data("update"));
|
||||
$appinfolist.find("[info=app_last_update]").text(dt.toUTCString());
|
||||
$appinfolist.find("[info=app_author]").text($e.data("author"));
|
||||
$appinfo
|
||||
.find(".app_info_header")
|
||||
.css({
|
||||
"background-color": $e.data("background"),
|
||||
"color": $e.data("text-color")
|
||||
});
|
||||
$appinfolist.find("li:eq(3) div").text(dt.toUTCString());
|
||||
$appinfolist.find("li:eq(4) div").text($e.data("author"));
|
||||
|
||||
var sections = elementSettingsData[$e.data("id")].sections;
|
||||
|
||||
var sectionids = new Array();
|
||||
|
@ -975,23 +937,24 @@ var orbitDesktop = function(dom){
|
|||
sectionids.push(sec.id);
|
||||
})
|
||||
|
||||
$appinfolist.find("[info=app_section_activation]").empty();
|
||||
$appinfolist.find("[info=section_activation]").empty();
|
||||
$.each(o.sectionList,function(i,sec){
|
||||
|
||||
var present = $.inArray(sec._id,sectionids);
|
||||
if(present == -1){
|
||||
$sectionswitch = $('<div class="s_grid_row s_switch"><label class="s_grid s_grid_3">'+ sec.name +'</label><div class="s_grid s_grid_6 s_switch"><div class="s_switch_status" status-on="On" status-off="Off">Off</div><label class="s_switch_switcher admbg2"><input type="checkbox" data-widget="'+ $e.data("id") +'" data-section="'+ sec._id +'"><span class="s_switch_toggle"></span></label></div></div>');
|
||||
$sectionswitch = $('<div class="s_grid_row"><label class="s_grid s_grid_3">'+ sec.name +'</label><div class="s_grid s_grid_6 s_switch"><div class="s_switch_status" status-off="Off" status-on="On">Off</div><label class="s_switch_switcher admbg2"><input type="checkbox" data-widget="'+ $e.data("id") +'" data-section="'+ sec._id +'" data-type="'+$e.data("type")+'"><span class="s_switch_toggle"></span></label></div></div>');
|
||||
}else{
|
||||
$sectionswitch = $('<div class="s_grid_row s_switch"><label class="s_grid s_grid_3">'+ sec.name +'</label><div class="s_grid s_grid_6 s_switch"><div class="s_switch_status" status-on="On" status-off="Off">On</div><label class="s_switch_switcher thmc2"><input type="checkbox" checked="checked" data-widget="'+ $e.data("id") +'" data-section="'+ sec._id +'"><span class="s_switch_toggle"></span></label></div></div>');
|
||||
$sectionswitch = $('<div class="s_grid_row"><label class="s_grid s_grid_3">'+ sec.name +'</label><div class="s_grid s_grid_6 s_switch"><div class="s_switch_status" status-on="On" status-off="Off">On</div><label class="s_switch_switcher thmc2"><input type="checkbox" checked="checked" data-widget="'+ $e.data("id") +'" data-section="'+ sec._id +'" data-type="'+$e.data("type")+'"><span class="s_switch_toggle"></span></label></div></div>');
|
||||
}
|
||||
$appinfolist.find("[info=app_section_activation]").append($sectionswitch);
|
||||
});
|
||||
info_open();
|
||||
$appinfolist.find("[info=section_activation]").append($sectionswitch);
|
||||
})
|
||||
$appinfo.show();
|
||||
o.simple_switch(function(dom){
|
||||
var options = {
|
||||
"status" : dom.is(":checked"),
|
||||
"widget_id" : dom.data("widget"),
|
||||
"section_id" : dom.data("section")
|
||||
"id" : dom.data("widget"),
|
||||
"section_id" : dom.data("section"),
|
||||
"type" : dom.data("type")
|
||||
}
|
||||
var sectionDetails = o.sectionList.filter(function(o){return(o._id == dom.data("section"))})[0];
|
||||
$.ajax({
|
||||
|
@ -1001,93 +964,41 @@ var orbitDesktop = function(dom){
|
|||
data : options,
|
||||
success : function(data){
|
||||
if(data.success == "true"){
|
||||
elementSettingsData[$e.data("id")].sections.push({
|
||||
"id" : dom.data("section"),
|
||||
"name":sectionDetails.name
|
||||
});
|
||||
if(options.status)
|
||||
if(dom.is(":checked")){ console.log("true");
|
||||
elementSettingsData[$e.data("id")].sections.push({"id" : dom.data("section"),"name":sectionDetails.name});
|
||||
o.notify("Added to " + sectionDetails.name,"success");
|
||||
else
|
||||
}else{
|
||||
var index = elementSettingsData[$e.data("id")].sections.indexOfObject(elementSettingsData[$e.data("id")].sections.filter(function(a){return a.id == dom.data("section")})[0]);
|
||||
elementSettingsData[$e.data("id")].sections.splice(index,1);
|
||||
o.notify("Removed from " + sectionDetails.name,"success");
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
});
|
||||
});
|
||||
return false;
|
||||
});
|
||||
})
|
||||
}
|
||||
|
||||
$appinfo.find("a.panel_close").click(function(){
|
||||
info_close();
|
||||
$appinfo.hide();
|
||||
return false;
|
||||
});
|
||||
|
||||
var info_open = function(){
|
||||
if($appinfo.is(":hidden")){
|
||||
$('.overview').stop().animate({'width': '+=480'},0 , function(){
|
||||
$('.tinycanvas').tinyscrollbar_update();
|
||||
});
|
||||
$appinfo
|
||||
.css({
|
||||
'display': 'block',
|
||||
'margin-left': -480
|
||||
})
|
||||
.delay(300)
|
||||
.animate({
|
||||
'margin-left': 0
|
||||
}, 500, 'easeInOutQuint');
|
||||
} else {
|
||||
$('.tinycanvas').tinyscrollbar_update();
|
||||
}
|
||||
}
|
||||
|
||||
var info_close = function(){
|
||||
if( $appinfo.is(":visible") ){
|
||||
$appinfo
|
||||
.stop()
|
||||
.animate({
|
||||
'margin-left': -480
|
||||
},500 , 'easeInOutQuint', function(){
|
||||
$('.overview').animate({'width': '-=480'}, 0, function(){
|
||||
$('.tinycanvas').tinyscrollbar_update();
|
||||
});
|
||||
$(this).attr("style","");
|
||||
});
|
||||
} else {
|
||||
$('.tinycanvas').tinyscrollbar_update();
|
||||
}
|
||||
}
|
||||
$(window).on('keydown', function(){
|
||||
if($('#searchbox').val() == 'Search'){
|
||||
$('#searchbox').focus();
|
||||
}
|
||||
});
|
||||
elementSetting();
|
||||
o.appname_substr('#group_wrapper .element');
|
||||
o.check_simple_layout();
|
||||
|
||||
}
|
||||
var elementSettingsData = {};
|
||||
var loadApps = function(){ //this load apps for sorting and searching
|
||||
$('#app_info').attr('style','');
|
||||
$('.search_result').hide().text("");
|
||||
$('#app_list').empty().show();
|
||||
$('#app_list').empty();
|
||||
$.getJSON("/desktop/getapplistforManager",{desktopid:o.desktopId},function(apps){
|
||||
var count = 0,
|
||||
colindex = 0,
|
||||
apps_sum = apps.length,
|
||||
col_sum;
|
||||
|
||||
col_sum = (apps_sum - (apps_sum % 4)) / 4 + 1;
|
||||
|
||||
$('#app_list')
|
||||
.css('width',col_sum * 132)
|
||||
.append('<div class="g_col g_col_w1 col'+ colindex +'"/>');
|
||||
|
||||
var count = 0, colindex = 0;
|
||||
$('#app_list').append('<div class="g_col g_col_w1 col'+ colindex +'"/>');
|
||||
$.each(apps,function(i,app){
|
||||
var $app;
|
||||
count++;
|
||||
elementSettingsData[app.id] = {"sections" : app.sections};
|
||||
$app = $('<div class="element w1 h1 thmc2" data-category="'+app.data_category+'" data-title="'+app.title+'" data-author="'+app.author+'" data-version="'+app.version+'" data-update="'+app.last_update+'" data-id="'+app.id+'" data-text-color="'+app.text_color+'" data-background="'+app.background+'" ><span class="tile thmc2"></span><a href="'+app.id+'" class="appicon"><img src="'+app.icon+'" alt="" onclick="return false;"></a><h1 class="appname thmtxt">'+app.title+'</h1></div>');
|
||||
o.t[app.id] = {"sections" : app.sections};
|
||||
$app = $('<div class="element w1 h1 thmc2" data-type="'+app.data_category+'" data-title="'+app.title+'" data-author="'+app.author+'" data-version="'+app.version+'" data-update="'+app.last_update+'" data-id="'+app.id+'" ><span class="tile thmc2"></span><a href="'+app.id+'" class="appicon"><img src="'+app.icon+'" alt="" onclick="return false;"></a><h1 class="appname thmtxt">'+app.title+'</h1></div>');
|
||||
if( count > 4 ){
|
||||
count = 1, colindex+=1;
|
||||
$('#app_list').append('<div class="g_col g_col_w1 col'+ colindex +'"/>');
|
||||
|
@ -1105,6 +1016,7 @@ var orbitDesktop = function(dom){
|
|||
loadApps();
|
||||
// }
|
||||
};
|
||||
this.t = {}
|
||||
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
|
||||
|
@ -1715,25 +1627,6 @@ var orbitDesktop = function(dom){
|
|||
|
||||
o.tinyscrollbar = target.main.tinyscrollbar( settings );
|
||||
};
|
||||
this.check_simple_layout = function(){
|
||||
// use for various width of columns inside canvas(.overview)
|
||||
// only count width for visible element which has "s_column" class
|
||||
// then set width to canvas
|
||||
// ** not sure to update canvas here ( $.tinyscrollbar_update() )
|
||||
var sw = 0,
|
||||
$simple_layout = $('#content .overview[content-layout=simple]');
|
||||
if($simple_layout.find(".s_column").length > 0){
|
||||
$simple_layout.each(function(){
|
||||
$(this).find(".s_column").filter(":visible").each(function(){
|
||||
sw += $(this).outerWidth();
|
||||
});
|
||||
$simple_layout.css('width',sw);
|
||||
});
|
||||
}
|
||||
// if($simple_layout.find(".s_column").length > 0){
|
||||
// $simple_layout.css('width',sw);
|
||||
// }
|
||||
};
|
||||
this.simple_drop_down = function(){
|
||||
// simple dropdown menu
|
||||
var $sdm = $('.sdm');
|
||||
|
@ -1781,7 +1674,7 @@ var orbitDesktop = function(dom){
|
|||
ini = ($switcher.hasClass('admbg2')) ? null : $switcher.addClass('admbg2');
|
||||
ini = ($switcher.find('.s_switch_toggle').length < 1) ? $checkbox.after(toggle) : null;
|
||||
set = ($checkbox.is(':checked')) ? $status.text(status_on) : $status.text(status_off);
|
||||
$checkbox.change(function(){
|
||||
$checkbox.unbind().change(function(){
|
||||
var v = $(this).attr('checked');
|
||||
switch (v) {
|
||||
case 'checked':
|
||||
|
@ -1793,9 +1686,8 @@ var orbitDesktop = function(dom){
|
|||
$status.text(status_off);
|
||||
break;
|
||||
}
|
||||
if(typeof func == "function"){
|
||||
if(typeof func == "function")
|
||||
func.call(this,$(this));
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
|
|
|
@ -0,0 +1,49 @@
|
|||
class DesktopAppsController < OrbitBackendController
|
||||
require "net/http"
|
||||
require "uri"
|
||||
require 'zip/zip'
|
||||
|
||||
def index
|
||||
@desktopapps = DesktopApp.all
|
||||
end
|
||||
|
||||
def upload
|
||||
if !params[:desktop_app].nil?
|
||||
temp_file = Tempfile.new("temp_file");
|
||||
original_file = params[:desktop_app][:package_file]
|
||||
temp_file.write(original_file.read.force_encoding("UTF-8"))
|
||||
temp_file.rewind
|
||||
filename = File.basename(original_file.original_filename,".zip")
|
||||
unzip_app(temp_file,filename)
|
||||
temp_file.close
|
||||
end
|
||||
end
|
||||
|
||||
def unzip_app(file, zip_name)
|
||||
Zip::ZipFile.open(file) { |zip_file|
|
||||
da = DesktopApp.new.from_json(zip_file.read("#{zip_name}/settings.json"))
|
||||
Dir.mktmpdir('f_path') { |dir|
|
||||
images_entries = []
|
||||
zip_file.entries.each do |entry|
|
||||
case (path = entry.to_s)
|
||||
when /\A(#{zip_name})\/(images)\/.*((\.jpg)|(\.png)|(\.gif))\z/ #for img
|
||||
images_entries << entry
|
||||
end
|
||||
end
|
||||
|
||||
images_entries.each do |image|
|
||||
da.images.build(:file => get_temp_file(zip_file,dir,image))
|
||||
end
|
||||
}
|
||||
da.save
|
||||
}
|
||||
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
|
|
@ -118,6 +118,7 @@ class DesktopController< ApplicationController
|
|||
cssfile = ""
|
||||
shape = "w1 h1"
|
||||
link = ""
|
||||
icon= ""
|
||||
fullsize = false
|
||||
if tile.data_category == "widget"
|
||||
widge = DesktopWidget.find(tile.desktop_widget_id.to_s)
|
||||
|
@ -127,19 +128,17 @@ class DesktopController< ApplicationController
|
|||
cssfile = widge.css_default.file.as_json[:file]
|
||||
shape = widge.shape
|
||||
title = widge.name
|
||||
icon = widge.images.where(:name => widge.icon).first.file.url
|
||||
# binding.pry
|
||||
fullsize = widge.fullsize
|
||||
else
|
||||
data_content = tile.data_content
|
||||
title = tile.title
|
||||
case data_content
|
||||
when "envocab"
|
||||
link = "http://www.english-vocabulary.eu/"
|
||||
when "wikibooks"
|
||||
link = "http://www.wikibooks.org"
|
||||
app = DesktopApp.find(tile.desktop_app_id.to_s)
|
||||
title = app.name
|
||||
link = app.url
|
||||
icon = app.images.where(:name => app.icon).first.file.url
|
||||
|
||||
end
|
||||
end
|
||||
gr << {"id"=>tile.id,"data_category"=>tile.data_category,"data_content"=>data_content,"js"=>jsfile,"css"=>cssfile,"shape"=>shape,"position"=>tile.position,"row"=>tile.row,"column"=>tile.column, "title"=>title,"fullsize"=>fullsize,"link"=>link}
|
||||
gr << {"id"=>tile.id,"data_category"=>tile.data_category,"data_content"=>data_content,"js"=>jsfile,"css"=>cssfile,"shape"=>shape,"position"=>tile.position,"row"=>tile.row,"column"=>tile.column, "title"=>title,"fullsize"=>fullsize,"link"=>link,"icon"=>icon}
|
||||
|
||||
|
||||
end
|
||||
|
@ -195,6 +194,7 @@ class DesktopController< ApplicationController
|
|||
|
||||
def getapplistforManager
|
||||
@dwss = DesktopWidget.all
|
||||
@dapps = DesktopApp.all
|
||||
@tiles = Array.new
|
||||
desktop = Desktop.find(params['desktopid'])
|
||||
sections = desktop.sections
|
||||
|
@ -217,6 +217,18 @@ class DesktopController< ApplicationController
|
|||
end
|
||||
@allWidgets << {"id"=>dw.id, "data_category"=> "widget","title" => dw.name, "version" => dw.version, "author"=>dw.author, "last_update"=>dw.updated_at, "icon"=>dw.images.where(:name=>dw.icon).first.file.url, "text_color" => dw.text_color, "background" => dw.bg_color, "sections" => @sections}
|
||||
end
|
||||
validtiles = Array.new
|
||||
@dapps.each do |da|
|
||||
@id = da.id
|
||||
@validtiles = @tiles.select{|t| t.desktop_app_id == @id}
|
||||
@sections = Array.new
|
||||
@validtiles.each do |vt|
|
||||
grp = Group.find(vt.group_id)
|
||||
sec = Section.find(grp.section_id);
|
||||
@sections << {"id"=>sec.id,"name"=>sec.name}
|
||||
end
|
||||
@allWidgets << {"id"=>da.id, "data_category"=> "app","title" => da.name, "version" => da.version, "author"=>da.author, "last_update"=>da.updated_at, "icon"=>da.images.where(:name=>da.icon).first.file.url, "sections" => @sections}
|
||||
end
|
||||
render :json=>@allWidgets.to_json
|
||||
end
|
||||
|
||||
|
@ -264,7 +276,9 @@ class DesktopController< ApplicationController
|
|||
|
||||
def appactivation
|
||||
@group = Section.find(params[:section_id]).groups.first
|
||||
@widget = DesktopWidget.find(params[:widget_id])
|
||||
@type = params[:type]
|
||||
if @type == "widget"
|
||||
@widget = DesktopWidget.find(params[:id])
|
||||
status = params[:status]
|
||||
|
||||
case status
|
||||
|
@ -278,6 +292,23 @@ class DesktopController< ApplicationController
|
|||
tile.destroy
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if @type == "app"
|
||||
@app = DesktopApp.find(params[:id])
|
||||
status = params[:status]
|
||||
case status
|
||||
when "true"
|
||||
tile = Tile.new(data_category: "app", position: 8, desktop_app_id: @app.id)
|
||||
@group.tiles+=[tile]
|
||||
@group.save
|
||||
when "false"
|
||||
tile = @group.tiles.where("desktop_app_id"=>@app.id).first
|
||||
if tile != nil
|
||||
tile.destroy
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
b = Array.new
|
||||
b = {"success"=>"true"}
|
||||
|
|
|
@ -0,0 +1,20 @@
|
|||
class DesktopApp
|
||||
include Mongoid::Document
|
||||
include Mongoid::Timestamps
|
||||
|
||||
field :name
|
||||
field :author
|
||||
field :shape
|
||||
field :version, :type => String
|
||||
field :text_color, :type => String, default: "#fff"
|
||||
field :bg_color, :type => String, default: "#fff"
|
||||
field :icon, default: "icon.png"
|
||||
field :url
|
||||
|
||||
has_many :images, as: :imgs, :autosave => true, :dependent => :destroy
|
||||
has_and_belongs_to_many :desktops, :autosave => true
|
||||
has_many :tiles, :autosave => true
|
||||
|
||||
accepts_nested_attributes_for :images, :allow_destroy => true
|
||||
|
||||
end
|
|
@ -5,7 +5,7 @@ class DesktopWidget
|
|||
|
||||
field :name
|
||||
field :author
|
||||
field :shape
|
||||
field :shape, default: "w1 h1"
|
||||
field :fullsize, :type => Boolean, default: false
|
||||
field :version, :type => String
|
||||
field :text_color, :type => String, default: ""
|
||||
|
|
|
@ -7,11 +7,11 @@ class Group
|
|||
before_create :initialize_tile
|
||||
|
||||
def initialize_tile
|
||||
self.tiles.build(data_category: "app", data_content: "quotes", position: 5, shape: "w1 h1", title: "Quotes")
|
||||
self.tiles.build(data_category: "app", data_content: "dailyenglish", position: 6, shape: "w1 h1", title: "Daily English Word")
|
||||
# self.tiles.build(data_category: "app", data_content: "quotes", position: 5, shape: "w1 h1", title: "Quotes")
|
||||
# self.tiles.build(data_category: "app", data_content: "dailyenglish", position: 6, shape: "w1 h1", title: "Daily English Word")
|
||||
widgets = self.section.desktop.desktop_widgets.collect{|widget| widget.id}
|
||||
for i in 0..3
|
||||
self.tiles.build(data_category: "widget", position: i+1,desktop_widget_id: widgets[i])
|
||||
widgets.each_with_index do |w,i|
|
||||
self.tiles.build(data_category: "widget", position: i+1,desktop_widget_id: w)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -13,5 +13,6 @@ class Tile
|
|||
|
||||
belongs_to :group
|
||||
belongs_to :desktop_widget
|
||||
belongs_to :desktop_app
|
||||
|
||||
end
|
||||
|
|
|
@ -0,0 +1,10 @@
|
|||
<div>
|
||||
<ul>
|
||||
<% @desktopapps.each do |da| %>
|
||||
<li> <%= da.name %>
|
||||
<%= link_to "Delete", desktop_app_path(da), :method=>"delete", :confirm=>"Are you sure?" %>
|
||||
<%#= link_to "Edit", edit_desktop_app_path(da) %>
|
||||
</li>
|
||||
<% end %>
|
||||
</ul>
|
||||
</div>
|
|
@ -0,0 +1,12 @@
|
|||
<h4>Upload App Package </h4>
|
||||
<div class="main2">
|
||||
<%= form_tag '',:multipart => true,:action=>"post" do |f| %>
|
||||
|
||||
<p>
|
||||
<%= file_field :desktop_app,:package_file %>
|
||||
</p>
|
||||
<%= submit_tag %>
|
||||
|
||||
<% end %>
|
||||
|
||||
</div>
|
|
@ -2,7 +2,7 @@
|
|||
<ul>
|
||||
<% @desktopWidgets.each do |dw| %>
|
||||
<li> <%= dw.name %>
|
||||
<%= link_to "Delete", desktop_widget_path(dw), :method=>"delete" %>
|
||||
<%= link_to "Delete", desktop_widget_path(dw), :method=>"delete", :confirm=>"Are you sure?" %>
|
||||
<%= link_to "Edit", edit_desktop_widget_path(dw) %>
|
||||
</li>
|
||||
<% end %>
|
||||
|
|
|
@ -230,6 +230,14 @@ Orbit::Application.routes.draw do
|
|||
end
|
||||
end
|
||||
|
||||
resources :desktop_apps do
|
||||
collection do
|
||||
get 'upload'
|
||||
get 'delete'
|
||||
post 'upload'
|
||||
end
|
||||
end
|
||||
|
||||
match "/desktop/compatibility" => "desktop#compatibility"
|
||||
match "desktop" => "desktop#index"
|
||||
match "/desktop/desktop" => "desktop#desktop"
|
||||
|
|
Loading…
Reference in New Issue