Ejemplo n.º 1
0
 init: function(event, data) {
     tree = data.tree;
     connectivity.with_online_status("server", function(server_is_online) {
         // We assume the distributed server is offline; if it's online, then we enable buttons that only work with internet.
         // Best to assume offline, as online check returns much faster than offline check.
         if(server_is_online){
             base.updatesStart("videodownload", 5000, video_callbacks);
         } else {
             messages.show_message("error", gettext("Could not connect to the central server; videos cannot be downloaded at this time."));
         }
     });
 }
function version_comparison(e,t){for(var a,n,s=e.split("."),l=t.split("."),i=Math.min(s.length,l.length),u=0;i>u;u++){if(a=parseInt(s[u],10)||0,n=parseInt(l[u],10)||0,a>n)return 1;if(n>a)return-1}return 0}function get_available_languages(){return api.doRequest(window.sessionModel.get("AVAILABLE_LANGUAGEPACK_URL"),null,{cache:!1}).success(function(e){installable_languages=e,display_languages()}).fail(function(e,t,a){installable_languages=[],display_languages()})}function get_installed_languages(){return api.doRequest(window.Urls.installed_language_packs(),null,{cache:!1,datatype:"json"}).success(function(e){installed_languages=e,display_languages()}).fail(function(e,t,a){installed_languages=[],display_languages()})}function display_languages(){function e(e){api.doRequest(window.Urls.delete_language_pack(),{lang:e}).success(function(e){get_installed_languages(),display_languages(a)})}function t(){var e=$("#language-packs-ul");e.find("li").remove(),a.forEach(function(t,a){var s=t.subtitle_count,l=t.percent_translated,i=t.code,u=t.beta,r=n.map(function(e){return e.code});if(-1===$.inArray(i,r)&&(l>0||s>0)){var g=$("<li></li>").attr("id",sprintf("option-%(code)s",t)).attr("role","presentation").attr("value",sprintf("%(code)s",t)).click({caller_value:sprintf("%(code)s",t)},select_lang_pack).append($("<a></a>").attr("role","menu-item").html(sprintf("%(name)s",t)));u&&$("#beta-checkbox").is(":checked")?(g.find("a").append($("<span></span>").text(gettext("beta")).attr("class","beta-text")),e.append(g)):u||e.append(g)}})}var a=installable_languages,n=installed_languages;$("table.installed-languages").empty(),n.forEach(function(e,t){if(e.name){var n;n=e.code!==window.sessionModel.get("DEFAULT_LANGUAGE")?sprintf("<span><a onclick='set_server_language(\"%(lang)s\")' class='set_server_language' value='%(lang)s' href='#'><button type='button' class='btn btn-default btn-sm'>%(link_text)s</button></a></span>",{lang:e.code,link_text:gettext("Set as default")}):gettext("Default"),e.subtitles=gettext("Subtitles"),e.translated=gettext("Translated");var s=sprintf("<b>%(name)s</b><br>%(subtitle_count)d %(subtitles)s <br> %(percent_translated)d%% %(translated)s",e),l=e.code,i=sprintf("<tr><td class='lang-name'>%s</td><td class='lang-link'>%s </td>",s,n);if(a.length>0){var u=a.filter(function(t){return e.code===t.code});if(0!==u.length){u=u[0];var r=version_comparison(u.software_version,e.software_version),g=1==r||0===r&&u.language_pack_version>e.language_pack_version;if(g){var o=u.percent_translated-e.percent_translated,c=u.subtitle_count-e.subtitle_count;i+=sprintf("<td class='upgrade-link'><a href='#' onclick='start_languagepack_download(\"%(lang.code)s\")'>%(upgrade_text)s</a> <br> +%(translated)d%% %(translated_text)s <br> +%(srt)d %(srt_text)s / %(size)s</td>",{lang:e,upgrade_text:gettext("<button type='button' class='btn btn-info'>Upgrade</button>"),translated:o,translated_text:gettext("Translated"),srt:c,srt_text:gettext("Subtitles"),size:sprintf("%5.2f MB",u.zip_size/1e6||0)})}else i+=sprintf("<td class='upgrade-link'>%(up_to_date_text)s</td>",{up_to_date_text:gettext("Up to Date")})}}i+="en"!=l?sprintf("<td class='delete-language-button'> <button class='btn btn-danger' value='%s' type='button'>%s</button></td>",l,gettext("Delete")):e.subtitle_count>0?sprintf("<td class='delete-language-button'> <button class='btn btn-danger' value='%s' type='button'>%s</button></td>",l,gettext("Delete Subtitles")):sprintf("<td class='delete-language-button'></td>"),i+="<td class='clear'></td></tr>",$("table.installed-languages").append(i)}}),$(function(){$(".delete-language-button").children("button").click(function(t){function a(t){$("<div></div>").appendTo("body").html("<div><h6>"+t+"?</h6></div>").dialog({modal:!0,title:gettext("Confirm Delete"),zIndex:1e4,autoOpen:!0,width:"auto",resizable:!1,buttons:{Yes:function(){e(n),$(this).remove()},No:function(){$(this).remove()}}})}var n=$(this).val();a(sprintf(gettext("Are you sure you want to delete language pack '%(lang_code)s'"),{lang_code:n})),$("button.ui-dialog-titlebar-close").hide()})}),t(),$("#beta-checkbox").click(function(){t()})}function start_languagepack_download(e){messages.clear_messages(),$("#get-language-button").prop("disabled",!0),downloading=!0,api.doRequest(Urls.start_languagepack_download(),{lang:e}).success(function(e,t,a){base.updatesStart("retrievecontentpack",2e3,languagepack_callbacks)})}function select_lang_pack(e){var t=e.data.caller_value,a=!1,n=$(sprintf("#option-%s",t));$("#language-packs-selection").html(n.html()).append($("<span></span>").attr("class","caret")),$("#language-packs").attr("value",n.attr("value"));var s=installable_languages.filter(function(e){return t===e.code});if(a=0!==s.length,downloading||$("#get-language-button").prop("disabled",!a),a){var l=s[0];$("#lp-num-srts").text(sprintf("%d",l.subtitle_count||0)),$("#lp-pct-trans").text(sprintf("%5.2f%%",l.percent_translated||0)),$("#lp-down-size").text(sprintf("%5.2f MB",l.zip_size/1e6||0)),$("#lp-disk-size").text(sprintf("%5.2f MB",l.package_size/1e6||0)),$("#lp-num-exers").text(sprintf("%d",l.num_exercises||0))}$("#langpack-details").toggle(a)}function languagepack_reset_callback(e,t){get_installed_languages(),downloading=!1}function languagepack_complete_callback(e){}function set_server_language(e){api.doRequest(Urls.set_default_language(),{lang:e}).success(function(){window.location.reload()})}function update_server_status(){connectivity.with_online_status("server",function(e){e?base.updatesStart("retrievecontentpack",1e3,languagepack_callbacks):(messages.clear_messages(),messages.show_message("error",gettext("Could not connect to the central server; language packs cannot be downloaded at this time.")))})}var api=require("utils/api"),$=require("base/jQuery"),messages=require("utils/messages"),base=require("updates/base"),connectivity=require("utils/connectivity"),sprintf=require("sprintf-js").sprintf,installable_languages=[],installed_languages=[],downloading=!1,languagepack_callbacks={reset:languagepack_reset_callback,completed:languagepack_complete_callback};window.start_languagepack_download=start_languagepack_download;var language_downloading=null;$(function(){$("#get-language-button").click(function(e){language_downloading=$("#language-packs").attr("value"),start_languagepack_download(language_downloading)})}),window.set_server_language=set_server_language,$(function(){get_available_languages().success(update_server_status).fail(update_server_status),get_installed_languages().success(update_server_status).fail(update_server_status)});