summaryrefslogtreecommitdiffstats
path: root/pyload/web/app
diff options
context:
space:
mode:
Diffstat (limited to 'pyload/web/app')
-rw-r--r--pyload/web/app/scripts/models/Package.js21
-rw-r--r--pyload/web/app/scripts/views/abstract/modalView.js15
-rw-r--r--pyload/web/app/scripts/views/dashboard/editPackageView.js19
-rw-r--r--pyload/web/app/scripts/views/dashboard/packageView.js12
-rw-r--r--pyload/web/app/styles/default/dashboard.less2
-rw-r--r--pyload/web/app/templates/default/dashboard/package.html4
-rw-r--r--pyload/web/app/templates/default/dialogs/editPackage.html52
7 files changed, 118 insertions, 7 deletions
diff --git a/pyload/web/app/scripts/models/Package.js b/pyload/web/app/scripts/models/Package.js
index 555d5b7d6..a1828ed67 100644
--- a/pyload/web/app/scripts/models/Package.js
+++ b/pyload/web/app/scripts/models/Package.js
@@ -41,6 +41,17 @@ define(['jquery', 'backbone', 'underscore', 'app', 'utils/apitypes', 'collection
return obj;
},
+ toServerJSON: function() {
+ var obj = Backbone.Model.prototype.toJSON.call(this);
+ return {
+ pid: obj.pid,
+ site: obj.site,
+ comment: obj.comment,
+ password: obj.password,
+ '@class': 'PackageInfo'
+ };
+ },
+
// Changes url + method and delegates call to super class
fetch: function(options) {
options = App.apiRequest(
@@ -61,8 +72,14 @@ define(['jquery', 'backbone', 'underscore', 'app', 'utils/apitypes', 'collection
return Backbone.Model.prototype.fetch.call(this, options);
},
+ // sync some attributes with the server
save: function(options) {
- // TODO
+ options = App.apiRequest(
+ 'updatePackage',
+ {pack: this.toServerJSON()},
+ options);
+
+ return Backbone.Model.prototype.fetch.call(this, options);
},
togglePaused: function() {
@@ -123,7 +140,7 @@ define(['jquery', 'backbone', 'underscore', 'app', 'utils/apitypes', 'collection
return resp.root;
}
- return Backbone.model.prototype.parse.call(this, resp);
+ return Backbone.Model.prototype.parse.call(this, resp);
},
// Any time a model attribute is set, this method is called
diff --git a/pyload/web/app/scripts/views/abstract/modalView.js b/pyload/web/app/scripts/views/abstract/modalView.js
index 61016a9fb..2fd84441b 100644
--- a/pyload/web/app/scripts/views/abstract/modalView.js
+++ b/pyload/web/app/scripts/views/abstract/modalView.js
@@ -31,6 +31,11 @@ define(['jquery', 'backbone', 'underscore', 'omniwindow'], function($, Backbone,
}
},
+ // Class method that will show a temporary instance
+ display: function() {
+
+ },
+
// TODO: whole modal stuff is not very elegant
render: function() {
this.$el.html(this.template(this.renderContent()));
@@ -110,8 +115,14 @@ define(['jquery', 'backbone', 'underscore', 'omniwindow'], function($, Backbone,
},
confirm: function() {
- if (this.confirmCallback)
- this.confirmCallback.apply();
+ // Call the confirms given or from extended class
+ if (this.confirmCallback) {
+ if (this.confirmCallback.apply() === false)
+ return;
+ } else if (_.isFunction(this.constructor.prototype.confirmCallback)) {
+ if (this.constructor.prototype.confirmCallback.call(this) === false)
+ return;
+ }
this.hide();
},
diff --git a/pyload/web/app/scripts/views/dashboard/editPackageView.js b/pyload/web/app/scripts/views/dashboard/editPackageView.js
new file mode 100644
index 000000000..45b0c6ddf
--- /dev/null
+++ b/pyload/web/app/scripts/views/dashboard/editPackageView.js
@@ -0,0 +1,19 @@
+define(['jquery', 'underscore', 'app', 'views/abstract/modalView', 'hbs!tpl/dialogs/editPackage'],
+ function($, _, App, modalView, template) {
+ 'use strict';
+
+ return modalView.extend({
+ template: template,
+ onHideDestroy: true,
+
+ confirmCallback: function() {
+ var self = this;
+ this.$el.find('.input').each(function(i, el) {
+ self.model.set($(el).data('attr'), $(el).val());
+ });
+ this.model.save();
+ }
+
+ });
+
+ }); \ No newline at end of file
diff --git a/pyload/web/app/scripts/views/dashboard/packageView.js b/pyload/web/app/scripts/views/dashboard/packageView.js
index 382615212..89972f284 100644
--- a/pyload/web/app/scripts/views/dashboard/packageView.js
+++ b/pyload/web/app/scripts/views/dashboard/packageView.js
@@ -15,6 +15,8 @@ define(['jquery', 'app', 'views/abstract/itemView', 'underscore', 'hbs!tpl/dashb
'click .select': 'select',
'click .icon-chevron-down': 'loadMenu',
'click .btn-delete': 'deleteItem',
+ 'click .btn-edit': 'edit',
+ 'click .btn-add': 'add',
'click .dropdown-submenu a': 'invokeAddon'
},
@@ -80,6 +82,16 @@ define(['jquery', 'app', 'views/abstract/itemView', 'underscore', 'hbs!tpl/dashb
App.vent.trigger('package:selection');
},
+ edit: function() {
+ var model = this.model;
+ _.requireOnce(['views/dashboard/editPackageView'], function(ModalView) {
+ new ModalView({model: model}).show();
+ });
+ },
+
+ add: function() {
+ },
+
loadMenu: function() {
App.addons.getForType(true, null, _.bind(this.renderSubmenu, this));
},
diff --git a/pyload/web/app/styles/default/dashboard.less b/pyload/web/app/styles/default/dashboard.less
index 1e9f21fec..4978f358a 100644
--- a/pyload/web/app/styles/default/dashboard.less
+++ b/pyload/web/app/styles/default/dashboard.less
@@ -109,7 +109,7 @@
.package-indicator {
position: absolute;
top: 0;
- right: 0;
+ right: 5px;
float: right;
color: @blue;
text-shadow: @yellowDark 1px 1px;
diff --git a/pyload/web/app/templates/default/dashboard/package.html b/pyload/web/app/templates/default/dashboard/package.html
index bc8314494..751ca5b4c 100644
--- a/pyload/web/app/templates/default/dashboard/package.html
+++ b/pyload/web/app/templates/default/dashboard/package.html
@@ -29,8 +29,8 @@
</i>
<ul class="dropdown-menu" role="menu">
<li><a href="#" class="btn-open"><i class="icon-folder-open-alt"></i> Open</a></li>
- <li><a href="#"><i class="icon-plus-sign"></i> Add links</a></li>
- <li><a href="#"><i class="icon-edit"></i> Details</a></li>
+ <li><a href="#" class="btn-add"><i class="icon-plus-sign"></i> Add links</a></li>
+ <li><a href="#" class="btn-edit"><i class="icon-edit"></i> Edit</a></li>
<li><a href="#" class="btn-delete"><i class="icon-trash"></i> Delete</a></li>
<li><a href="#" class="btn-recheck"><i class="icon-refresh"></i> Recheck</a></li>
<li class="divider"></li>
diff --git a/pyload/web/app/templates/default/dialogs/editPackage.html b/pyload/web/app/templates/default/dialogs/editPackage.html
new file mode 100644
index 000000000..1302bdae5
--- /dev/null
+++ b/pyload/web/app/templates/default/dialogs/editPackage.html
@@ -0,0 +1,52 @@
+<div class="modal-header">
+ <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
+ <h3>{{_ "Edit Package" }}</h3>
+</div>
+<div class="modal-body">
+ <form class="form-horizontal">
+ <legend>
+ {{ name }}
+ </legend>
+ <div class="control-group">
+ <label class="control-label" for="rename">
+ {{_ "Rename" }}
+ </label>
+
+ <div class="controls">
+ <input type="text" id="rename" value="{{name}}" disabled>
+ </div>
+ </div>
+ <div class="control-group">
+ <label class="control-label" for="site">
+ {{_ "Site" }}
+ </label>
+
+ <div class="controls">
+ <input type="text" class="input" data-attr="site" id="site" value="{{site}}">
+ </div>
+ </div>
+ <div class="control-group">
+ <label class="control-label" for="password">
+ {{_ "Password" }}
+ </label>
+
+ <div class="controls">
+ <input type="password" class="input" data-attr="password" id="password" value="{{password}}">
+ </div>
+ </div>
+
+ <div class="control-group">
+ <label class="control-label" for="comment">
+ {{_ "Comments" }}
+ </label>
+
+ <div class="controls">
+ <textarea class="input" data-attr="comment" id="comment">{{comment}}</textarea>
+ </div>
+ </div>
+ </form>
+</div>
+<div class="modal-footer">
+ <a class="btn btn-close">Close</a>
+ <a class="btn btn-primary btn-confirm">Save</a>
+</div> \ No newline at end of file