You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

82 line
2.4 KiB

  1. wn.pages['applications'].onload = function(wrapper) {
  2. wn.ui.make_app_page({
  3. parent: wrapper,
  4. title: wn._('Application Installer'),
  5. icon: "icon-download",
  6. single_column: true
  7. });
  8. wn.call({
  9. method:"webnotes.core.page.applications.applications.get_app_list",
  10. callback: function(r) {
  11. var $main = $(wrapper).find(".layout-main");
  12. if(!keys(r.message).length) {
  13. $main.html('<div class="alert alert-info">No Apps Installed</div>');
  14. return;
  15. }
  16. $main.empty();
  17. // search
  18. $('<div class="row">\
  19. <div class="col-md-6">\
  20. <input type="text" class="form-control app-search" placeholder="Search" name="search"/>\
  21. </div>\
  22. </div><hr>').appendTo($main).find(".app-search").on("keyup", function() {
  23. var val = $(this).val();
  24. $main.find(".app-listing").each(function() {
  25. $(this).toggle($(this).attr("data-title").toLowerCase().indexOf(val)!==-1);
  26. });
  27. })
  28. $.each(r.message, function(app_key, app) {
  29. wn.modules[app_key] = {
  30. label: app.app_title,
  31. icon: app.app_icon,
  32. color: app.app_color,
  33. is_app: true
  34. }
  35. app.app_icon = wn.ui.app_icon.get_html(app_key);
  36. $app = $($r('<div style="border-bottom: 1px solid #c7c7c7; margin-bottom: 10px;" \
  37. class="app-listing" data-title="%(app_title)s">\
  38. <div style="float: left; width: 80px;">\
  39. %(app_icon)s\
  40. </div>\
  41. <div style="margin-left: 95px;">\
  42. <div class="row">\
  43. <div class="col-xs-10">\
  44. <p><b class="title">%(app_title)s</b></p>\
  45. <p class="text-muted">%(app_description)s\
  46. <br>Publisher: %(app_publisher)s; Version: %(app_version)s</p>\
  47. </div>\
  48. <div class="col-xs-2 button-area"></div>\
  49. </div>\
  50. </div>\
  51. </div>', app))
  52. $app.appendTo($main)
  53. if(app.installed) {
  54. $btn = $('<button class="btn btn-success" disabled=disabled>\
  55. <i class="icon-ok"></i> Installed</button>');
  56. } else {
  57. $btn = $('<button class="btn btn-info">Install</button>')
  58. .attr("data-app", app.app_name)
  59. .on("click", function() {
  60. wn.call({
  61. method:"webnotes.installer.install_app",
  62. args: {name: $(this).attr("data-app")},
  63. callback: function(r) {
  64. if(!r.exc) {
  65. msgprint("<i class='icon-ok'></i> Installed");
  66. msgprint("Refreshing...");
  67. setTimeout(function() { window.location.reload() }, 2000)
  68. }
  69. }
  70. })
  71. });
  72. }
  73. $btn.appendTo($app.find(".button-area"))
  74. })
  75. }
  76. })
  77. }