root / snf-cyclades-app / synnefo / ui / static / snf / js / ui / web / ui_public_keys_view.js @ 9fd7a7a8
History | View | Annotate | Download (13 kB)
1 | 00469232 | Kostas Papadimitriou | // Copyright 2011 GRNET S.A. All rights reserved.
|
---|---|---|---|
2 | 00469232 | Kostas Papadimitriou | //
|
3 | 00469232 | Kostas Papadimitriou | // Redistribution and use in source and binary forms, with or
|
4 | 00469232 | Kostas Papadimitriou | // without modification, are permitted provided that the following
|
5 | 00469232 | Kostas Papadimitriou | // conditions are met:
|
6 | 00469232 | Kostas Papadimitriou | //
|
7 | 00469232 | Kostas Papadimitriou | // 1. Redistributions of source code must retain the above
|
8 | 00469232 | Kostas Papadimitriou | // copyright notice, this list of conditions and the following
|
9 | 00469232 | Kostas Papadimitriou | // disclaimer.
|
10 | 00469232 | Kostas Papadimitriou | //
|
11 | 00469232 | Kostas Papadimitriou | // 2. Redistributions in binary form must reproduce the above
|
12 | 00469232 | Kostas Papadimitriou | // copyright notice, this list of conditions and the following
|
13 | 00469232 | Kostas Papadimitriou | // disclaimer in the documentation and/or other materials
|
14 | 00469232 | Kostas Papadimitriou | // provided with the distribution.
|
15 | 00469232 | Kostas Papadimitriou | //
|
16 | 00469232 | Kostas Papadimitriou | // THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
|
17 | 00469232 | Kostas Papadimitriou | // OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
18 | 00469232 | Kostas Papadimitriou | // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
19 | 00469232 | Kostas Papadimitriou | // PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
|
20 | 00469232 | Kostas Papadimitriou | // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
21 | 00469232 | Kostas Papadimitriou | // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
22 | 00469232 | Kostas Papadimitriou | // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
|
23 | 00469232 | Kostas Papadimitriou | // USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
24 | 00469232 | Kostas Papadimitriou | // AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
25 | 00469232 | Kostas Papadimitriou | // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
26 | 00469232 | Kostas Papadimitriou | // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
27 | 00469232 | Kostas Papadimitriou | // POSSIBILITY OF SUCH DAMAGE.
|
28 | 00469232 | Kostas Papadimitriou | //
|
29 | 00469232 | Kostas Papadimitriou | // The views and conclusions contained in the software and
|
30 | 00469232 | Kostas Papadimitriou | // documentation are those of the authors and should not be
|
31 | 00469232 | Kostas Papadimitriou | // interpreted as representing official policies, either expressed
|
32 | 00469232 | Kostas Papadimitriou | // or implied, of GRNET S.A.
|
33 | 00469232 | Kostas Papadimitriou | //
|
34 | 00469232 | Kostas Papadimitriou | |
35 | e9392f3c | Kostas Papadimitriou | ;(function(root){
|
36 | e9392f3c | Kostas Papadimitriou | |
37 | e9392f3c | Kostas Papadimitriou | // root
|
38 | e9392f3c | Kostas Papadimitriou | var root = root;
|
39 | e9392f3c | Kostas Papadimitriou | |
40 | e9392f3c | Kostas Papadimitriou | // setup namepsaces
|
41 | e9392f3c | Kostas Papadimitriou | var snf = root.synnefo = root.synnefo || {};
|
42 | e9392f3c | Kostas Papadimitriou | var api = snf.api = snf.api || {};
|
43 | e9392f3c | Kostas Papadimitriou | var models = snf.models = snf.models || {}
|
44 | e9392f3c | Kostas Papadimitriou | var storage = snf.storage = snf.storage || {};
|
45 | e9392f3c | Kostas Papadimitriou | var ui = snf.ui = snf.ui || {};
|
46 | e9392f3c | Kostas Papadimitriou | var util = snf.util = snf.util || {};
|
47 | e9392f3c | Kostas Papadimitriou | |
48 | e9392f3c | Kostas Papadimitriou | var views = snf.views = snf.views || {}
|
49 | e9392f3c | Kostas Papadimitriou | |
50 | e9392f3c | Kostas Papadimitriou | // shortcuts
|
51 | e9392f3c | Kostas Papadimitriou | var bb = root.Backbone;
|
52 | e9392f3c | Kostas Papadimitriou | |
53 | e9392f3c | Kostas Papadimitriou | views.PublicKeysView = views.CollectionView.extend({ |
54 | e9392f3c | Kostas Papadimitriou | collection: storage.keys,
|
55 | e9392f3c | Kostas Papadimitriou | |
56 | 3b214560 | Kostas Papadimitriou | confirm_delete_msg: 'Are you sure you want to remove this key ?', |
57 | 3b214560 | Kostas Papadimitriou | create_success_msg: 'Public key created successfully.', |
58 | ff44c486 | Kostas Papadimitriou | update_success_msg: 'Public key updated successfully.', |
59 | 3b214560 | Kostas Papadimitriou | create_failed_msg: 'Failed to create public key.', |
60 | 3b214560 | Kostas Papadimitriou | |
61 | c72a830d | Kostas Papadimitriou | |
62 | e9392f3c | Kostas Papadimitriou | initialize: function(options) { |
63 | e9392f3c | Kostas Papadimitriou | views.PublicKeysView.__super__.initialize.apply(this, arguments); |
64 | e9392f3c | Kostas Papadimitriou | this.$(".private-cont").hide(); |
65 | e9392f3c | Kostas Papadimitriou | _.bindAll(this);
|
66 | c72a830d | Kostas Papadimitriou | this.keys_limit = snf.config.userdata_keys_limit || 10000; |
67 | c26afad6 | Kostas Papadimitriou | this.bind("item:add", this.animate_on_add); |
68 | c26afad6 | Kostas Papadimitriou | }, |
69 | c26afad6 | Kostas Papadimitriou | |
70 | c26afad6 | Kostas Papadimitriou | animate_on_add: function(list, el, model) { |
71 | c26afad6 | Kostas Papadimitriou | el.hide(); |
72 | c26afad6 | Kostas Papadimitriou | el.fadeIn(400);
|
73 | e9392f3c | Kostas Papadimitriou | }, |
74 | e9392f3c | Kostas Papadimitriou | |
75 | e9392f3c | Kostas Papadimitriou | append_actions: function(el, model) { |
76 | e9392f3c | Kostas Papadimitriou | var actions = $('<div class="item-actions">' + |
77 | e9392f3c | Kostas Papadimitriou | '<div class="item-action remove">remove</div>' +
|
78 | e9392f3c | Kostas Papadimitriou | '<div class="item-action confirm-remove">' +
|
79 | e9392f3c | Kostas Papadimitriou | '<span class="text do-confirm">confirm</span>' +
|
80 | e9392f3c | Kostas Papadimitriou | '<span class="cancel-remove cancel">X</span></div>' +
|
81 | e9392f3c | Kostas Papadimitriou | '<div class="item-action edit">edit</div>' +
|
82 | e9392f3c | Kostas Papadimitriou | '<div class="item-action show">show key</div>' +
|
83 | e9392f3c | Kostas Papadimitriou | '</div>');
|
84 | e9392f3c | Kostas Papadimitriou | el.append(actions); |
85 | e9392f3c | Kostas Papadimitriou | }, |
86 | 8b71ea92 | Kostas Papadimitriou | |
87 | 8b71ea92 | Kostas Papadimitriou | bind_list_item_actions: function(el, model) { |
88 | 8b71ea92 | Kostas Papadimitriou | views.PublicKeysView.__super__.bind_list_item_actions.apply(this, arguments); |
89 | 8b71ea92 | Kostas Papadimitriou | // initialize download link
|
90 | 8b71ea92 | Kostas Papadimitriou | //snf.util.promptSaveFile(el.find(".item-actions .download"), model.get_filename(), model.get("content"))
|
91 | 8b71ea92 | Kostas Papadimitriou | }, |
92 | 556dcd88 | Kostas Papadimitriou | |
93 | 556dcd88 | Kostas Papadimitriou | close_private: function() { |
94 | 556dcd88 | Kostas Papadimitriou | this.$(".private-cont").hide(); |
95 | 556dcd88 | Kostas Papadimitriou | this.$(".private-cont textarea").val(""); |
96 | 556dcd88 | Kostas Papadimitriou | this.$('.private-cont [name=data]').val(""); |
97 | 556dcd88 | Kostas Papadimitriou | this.$('.private-cont [name=name]').val(""); |
98 | 556dcd88 | Kostas Papadimitriou | }, |
99 | e9392f3c | Kostas Papadimitriou | |
100 | e9392f3c | Kostas Papadimitriou | init_handlers: function() { |
101 | e9392f3c | Kostas Papadimitriou | views.PublicKeysView.__super__.init_handlers.apply(this, arguments); |
102 | e9392f3c | Kostas Papadimitriou | |
103 | e9392f3c | Kostas Papadimitriou | this.$(".add-generate").click(_.bind(this.generate_new, this, undefined)); |
104 | e9392f3c | Kostas Papadimitriou | |
105 | e9392f3c | Kostas Papadimitriou | // browser compat check
|
106 | e9392f3c | Kostas Papadimitriou | if (snf.util.canReadFile()) {
|
107 | e9392f3c | Kostas Papadimitriou | var self = this; |
108 | e9392f3c | Kostas Papadimitriou | this.form.find(".fromfile").get(0).addEventListener("change", function(e){ |
109 | e9392f3c | Kostas Papadimitriou | var f = undefined; |
110 | e9392f3c | Kostas Papadimitriou | var files = e.target.files;
|
111 | e9392f3c | Kostas Papadimitriou | if (files.length == 0) { return }; |
112 | e9392f3c | Kostas Papadimitriou | |
113 | e9392f3c | Kostas Papadimitriou | f = files[0];
|
114 | e9392f3c | Kostas Papadimitriou | var data = snf.util.readFileContents(f, _.bind(function(data) { |
115 | e9392f3c | Kostas Papadimitriou | this.form.find("textarea").val(data); |
116 | e9392f3c | Kostas Papadimitriou | }, self)); |
117 | e9392f3c | Kostas Papadimitriou | }); |
118 | e9392f3c | Kostas Papadimitriou | } |
119 | e9392f3c | Kostas Papadimitriou | |
120 | e9392f3c | Kostas Papadimitriou | var self = this; |
121 | e9392f3c | Kostas Papadimitriou | this.$(".private-cont .close-private").live("click", function(e) { |
122 | 556dcd88 | Kostas Papadimitriou | self.close_private(); |
123 | e9392f3c | Kostas Papadimitriou | }); |
124 | e9392f3c | Kostas Papadimitriou | |
125 | e9392f3c | Kostas Papadimitriou | this.$(".item-action.show, .item-action.hide").live("click", function(e) { |
126 | e9392f3c | Kostas Papadimitriou | var open = $(this).parent().parent().parent().hasClass("expanded"); |
127 | e9392f3c | Kostas Papadimitriou | if (open) {
|
128 | e9392f3c | Kostas Papadimitriou | $(this).text("show key"); |
129 | e9392f3c | Kostas Papadimitriou | $(this).addClass("show").removeClass("hide"); |
130 | e9392f3c | Kostas Papadimitriou | } else {
|
131 | e9392f3c | Kostas Papadimitriou | $(this).text("hide key"); |
132 | e9392f3c | Kostas Papadimitriou | $(this).removeClass("show").addClass("hide"); |
133 | e9392f3c | Kostas Papadimitriou | } |
134 | e9392f3c | Kostas Papadimitriou | $(this).parent().parent().parent().toggleClass("expanded"); |
135 | e9392f3c | Kostas Papadimitriou | }); |
136 | e9392f3c | Kostas Papadimitriou | }, |
137 | e9392f3c | Kostas Papadimitriou | |
138 | 556dcd88 | Kostas Papadimitriou | __save_new: function(generate_text, key) { |
139 | e9392f3c | Kostas Papadimitriou | var self = this; |
140 | 556dcd88 | Kostas Papadimitriou | storage.keys.add_crypto_key(key.public,
|
141 | e9392f3c | Kostas Papadimitriou | _.bind(function(instance, data) {
|
142 | e9392f3c | Kostas Papadimitriou | self.update_models(); |
143 | e9392f3c | Kostas Papadimitriou | this.generating = false; |
144 | e9392f3c | Kostas Papadimitriou | this.$(".add-generate").text(generate_text).removeClass( |
145 | e9392f3c | Kostas Papadimitriou | "in-progress").addClass("download"); |
146 | 556dcd88 | Kostas Papadimitriou | this.show_download_private(instance.get('name'), key.private, instance); |
147 | c1c836ec | Kostas Papadimitriou | this.enable_create();
|
148 | e9392f3c | Kostas Papadimitriou | },this),
|
149 | e9392f3c | Kostas Papadimitriou | |
150 | e9392f3c | Kostas Papadimitriou | _.bind(function() {
|
151 | e9392f3c | Kostas Papadimitriou | self.show_list_msg("error", "Cannot generate public key, please try again later."); |
152 | e9392f3c | Kostas Papadimitriou | |
153 | e9392f3c | Kostas Papadimitriou | this.generating = false; |
154 | e9392f3c | Kostas Papadimitriou | this.download_private = false; |
155 | e9392f3c | Kostas Papadimitriou | |
156 | e9392f3c | Kostas Papadimitriou | this.$(".add-generate").text(generate_text).removeClass("in-progress").removeClass("download"); |
157 | c1c836ec | Kostas Papadimitriou | this.enable_create();
|
158 | e9392f3c | Kostas Papadimitriou | }, this)
|
159 | e9392f3c | Kostas Papadimitriou | ); |
160 | e9392f3c | Kostas Papadimitriou | }, |
161 | e9392f3c | Kostas Papadimitriou | |
162 | 556dcd88 | Kostas Papadimitriou | __generate_new: function(generate_text) { |
163 | 556dcd88 | Kostas Papadimitriou | var self = this; |
164 | c72a830d | Kostas Papadimitriou | var key = storage.keys.generate_new(_.bind(this.__save_new, this, generate_text), function(xhr){ |
165 | c72a830d | Kostas Papadimitriou | var resp_error = ""; |
166 | c72a830d | Kostas Papadimitriou | // try to parse response
|
167 | c72a830d | Kostas Papadimitriou | try {
|
168 | c72a830d | Kostas Papadimitriou | json_resp = JSON.parse(xhr.responseText); |
169 | c72a830d | Kostas Papadimitriou | resp_error = json_resp.errors[json_resp.non_field_key].join("<br />");
|
170 | c72a830d | Kostas Papadimitriou | } catch (err) {}
|
171 | c72a830d | Kostas Papadimitriou | |
172 | c72a830d | Kostas Papadimitriou | var msg = "Cannot generate new key pair"; |
173 | c72a830d | Kostas Papadimitriou | if (resp_error) {
|
174 | c72a830d | Kostas Papadimitriou | msg += " ({0})".format(resp_error);
|
175 | c72a830d | Kostas Papadimitriou | } |
176 | c72a830d | Kostas Papadimitriou | self.show_list_msg("error", msg);
|
177 | 556dcd88 | Kostas Papadimitriou | self.generating = false;
|
178 | 556dcd88 | Kostas Papadimitriou | self.download_private = false;
|
179 | 556dcd88 | Kostas Papadimitriou | self.$(".add-generate").text(generate_text).removeClass( |
180 | 556dcd88 | Kostas Papadimitriou | "in-progress").addClass("download"); |
181 | c1c836ec | Kostas Papadimitriou | self.enable_create(); |
182 | 556dcd88 | Kostas Papadimitriou | }); |
183 | 556dcd88 | Kostas Papadimitriou | }, |
184 | 556dcd88 | Kostas Papadimitriou | |
185 | e9392f3c | Kostas Papadimitriou | generate_new: function() { |
186 | e9392f3c | Kostas Papadimitriou | if (this.generating) { return false }; |
187 | c1c836ec | Kostas Papadimitriou | |
188 | e9392f3c | Kostas Papadimitriou | this.$(".private-cont").hide(); |
189 | e9392f3c | Kostas Papadimitriou | this.generating = true; |
190 | e9392f3c | Kostas Papadimitriou | this.download_private = false; |
191 | c1c836ec | Kostas Papadimitriou | this.disable_create();
|
192 | e9392f3c | Kostas Papadimitriou | var generate_text = this.$(".add-generate").text(); |
193 | e9392f3c | Kostas Papadimitriou | this.$(".add-generate").text("Generating...").addClass("in-progress").removeClass("download"); |
194 | e9392f3c | Kostas Papadimitriou | |
195 | e9392f3c | Kostas Papadimitriou | window.setTimeout(_.bind(this.__generate_new, this, generate_text), 400); |
196 | e9392f3c | Kostas Papadimitriou | |
197 | e9392f3c | Kostas Papadimitriou | }, |
198 | c1c836ec | Kostas Papadimitriou | |
199 | c1c836ec | Kostas Papadimitriou | disable_create: function() { |
200 | c1c836ec | Kostas Papadimitriou | this.create_disabled = true; |
201 | c1c836ec | Kostas Papadimitriou | this.$(".collection-action.add").addClass("disabled"); |
202 | c1c836ec | Kostas Papadimitriou | }, |
203 | c1c836ec | Kostas Papadimitriou | |
204 | c1c836ec | Kostas Papadimitriou | enable_create: function() { |
205 | c1c836ec | Kostas Papadimitriou | this.create_disabled = false; |
206 | c1c836ec | Kostas Papadimitriou | this.$(".collection-action.add").removeClass("disabled"); |
207 | c1c836ec | Kostas Papadimitriou | }, |
208 | e9392f3c | Kostas Papadimitriou | |
209 | 556dcd88 | Kostas Papadimitriou | show_download_private: function(name, private) { |
210 | e9392f3c | Kostas Papadimitriou | var download_cont = this.$(".private-cont"); |
211 | e9392f3c | Kostas Papadimitriou | download_cont.show(); |
212 | 556dcd88 | Kostas Papadimitriou | download_cont.find(".key-contents textarea").val(""); |
213 | 556dcd88 | Kostas Papadimitriou | download_cont.find(".private-msg, .down-button").show();
|
214 | 556dcd88 | Kostas Papadimitriou | download_cont.find(".private-msg.copy").hide();
|
215 | 556dcd88 | Kostas Papadimitriou | download_cont.find(".private-msg.download").hide();
|
216 | 556dcd88 | Kostas Papadimitriou | download_cont.find("textarea").hide();
|
217 | 556dcd88 | Kostas Papadimitriou | download_cont.find("form").attr({action: snf.config.userdata_keys_url + '/download'}) |
218 | 556dcd88 | Kostas Papadimitriou | download_cont.find('[name=data]').val(private); |
219 | 556dcd88 | Kostas Papadimitriou | download_cont.find('[name=name]').val(name);
|
220 | e9392f3c | Kostas Papadimitriou | }, |
221 | e9392f3c | Kostas Papadimitriou | |
222 | e9392f3c | Kostas Papadimitriou | update_list_item: function(el, model) { |
223 | e9392f3c | Kostas Papadimitriou | el.find(".name").text(model.get("name")); |
224 | e9392f3c | Kostas Papadimitriou | el.find(".key-type").text(model.identify_type() || "unknown"); |
225 | e9392f3c | Kostas Papadimitriou | el.find(".publicid .param-content textarea").val(model.get("content")); |
226 | 386481eb | Kostas Papadimitriou | el.find(".fingerprint .text").text(model.get("fingerprint")); |
227 | e9392f3c | Kostas Papadimitriou | el.find(".publicid").attr("title", _(model.get("content")).truncate(1000, "...")); |
228 | e9392f3c | Kostas Papadimitriou | return el;
|
229 | e9392f3c | Kostas Papadimitriou | }, |
230 | e9392f3c | Kostas Papadimitriou | |
231 | c72a830d | Kostas Papadimitriou | update_list: function() { |
232 | c72a830d | Kostas Papadimitriou | views.PublicKeysView.__super__.update_list.apply(this, arguments); |
233 | c72a830d | Kostas Papadimitriou | this.check_limit();
|
234 | c72a830d | Kostas Papadimitriou | }, |
235 | c72a830d | Kostas Papadimitriou | |
236 | c72a830d | Kostas Papadimitriou | check_limit: function() { |
237 | c72a830d | Kostas Papadimitriou | if (snf.storage.keys.length >= this.keys_limit) { |
238 | c72a830d | Kostas Papadimitriou | this.$(".collection-action").hide(); |
239 | c72a830d | Kostas Papadimitriou | this.$(".limit-msg").show(); |
240 | c72a830d | Kostas Papadimitriou | } else {
|
241 | c72a830d | Kostas Papadimitriou | this.$(".collection-action").show(); |
242 | c72a830d | Kostas Papadimitriou | this.$(".limit-msg").hide(); |
243 | c72a830d | Kostas Papadimitriou | } |
244 | c72a830d | Kostas Papadimitriou | }, |
245 | c72a830d | Kostas Papadimitriou | |
246 | e9392f3c | Kostas Papadimitriou | update_form_from_model: function(model) { |
247 | e9392f3c | Kostas Papadimitriou | this.form.find("input.input-name").val(model.get("name")); |
248 | e9392f3c | Kostas Papadimitriou | this.form.find("textarea.input-content").val(model.get("content")); |
249 | e9392f3c | Kostas Papadimitriou | }, |
250 | e9392f3c | Kostas Papadimitriou | |
251 | e9392f3c | Kostas Papadimitriou | get_form_data: function() { |
252 | e9392f3c | Kostas Papadimitriou | return {
|
253 | e9392f3c | Kostas Papadimitriou | 'name': this.form.find("input.input-name").val(), |
254 | e9392f3c | Kostas Papadimitriou | 'content': this.form.find("textarea.input-content").val() |
255 | e9392f3c | Kostas Papadimitriou | } |
256 | e9392f3c | Kostas Papadimitriou | }, |
257 | e9392f3c | Kostas Papadimitriou | |
258 | e9392f3c | Kostas Papadimitriou | get_fields_map: function() { |
259 | e9392f3c | Kostas Papadimitriou | return {'name': "input.input-name", 'content': "textarea.input-content"}; |
260 | e9392f3c | Kostas Papadimitriou | }, |
261 | e9392f3c | Kostas Papadimitriou | |
262 | e9392f3c | Kostas Papadimitriou | validate_data: function(data) { |
263 | e9392f3c | Kostas Papadimitriou | var user_data = _.clone(data)
|
264 | e9392f3c | Kostas Papadimitriou | var errors = new snf.util.errorList(); |
265 | e9392f3c | Kostas Papadimitriou | |
266 | e9392f3c | Kostas Papadimitriou | if (!data.name || _.clean(data.name) == "") { |
267 | e9392f3c | Kostas Papadimitriou | errors.add("name", "Provide a valid public key name"); |
268 | e9392f3c | Kostas Papadimitriou | } |
269 | e9392f3c | Kostas Papadimitriou | |
270 | e9392f3c | Kostas Papadimitriou | if (!data.content || _.clean(data.content) == "") { |
271 | e9392f3c | Kostas Papadimitriou | errors.add("content", "Provide valid public key content"); |
272 | e9392f3c | Kostas Papadimitriou | return errors;
|
273 | e9392f3c | Kostas Papadimitriou | } |
274 | e9392f3c | Kostas Papadimitriou | |
275 | e9392f3c | Kostas Papadimitriou | try {
|
276 | e9392f3c | Kostas Papadimitriou | var content = snf.util.validatePublicKey(data.content);
|
277 | e9392f3c | Kostas Papadimitriou | if (content) {
|
278 | e9392f3c | Kostas Papadimitriou | this.form.find("textarea.input-content").val(content); |
279 | e9392f3c | Kostas Papadimitriou | } |
280 | e9392f3c | Kostas Papadimitriou | } catch (err) {
|
281 | e9392f3c | Kostas Papadimitriou | errors.add("content", "Invalid key content (" + err + ")"); |
282 | e9392f3c | Kostas Papadimitriou | } |
283 | e9392f3c | Kostas Papadimitriou | |
284 | e9392f3c | Kostas Papadimitriou | return errors;
|
285 | e9392f3c | Kostas Papadimitriou | }, |
286 | e9392f3c | Kostas Papadimitriou | |
287 | e9392f3c | Kostas Papadimitriou | reset: function() { |
288 | e9392f3c | Kostas Papadimitriou | this.$(".private-cont").hide(); |
289 | e9392f3c | Kostas Papadimitriou | this.$(".list-messages").empty(); |
290 | e9392f3c | Kostas Papadimitriou | this.$(".form-messages").empty(); |
291 | e9392f3c | Kostas Papadimitriou | this.$(".model-item").removeClass("expanded"); |
292 | 556dcd88 | Kostas Papadimitriou | this.close_private();
|
293 | e9392f3c | Kostas Papadimitriou | this.close_form();
|
294 | e9392f3c | Kostas Papadimitriou | } |
295 | e9392f3c | Kostas Papadimitriou | |
296 | e9392f3c | Kostas Papadimitriou | }) |
297 | e9392f3c | Kostas Papadimitriou | |
298 | e9392f3c | Kostas Papadimitriou | views.PublicKeysOverlay = views.Overlay.extend({ |
299 | e9392f3c | Kostas Papadimitriou | |
300 | e9392f3c | Kostas Papadimitriou | view_id: "public_keys_view", |
301 | e9392f3c | Kostas Papadimitriou | content_selector: "#user_public_keys", |
302 | e9392f3c | Kostas Papadimitriou | css_class: 'overlay-public-keys overlay-info', |
303 | e9392f3c | Kostas Papadimitriou | overlay_id: "user_public_keys_overlay", |
304 | e9392f3c | Kostas Papadimitriou | |
305 | e9392f3c | Kostas Papadimitriou | title: "Manage your ssh keys", |
306 | e9392f3c | Kostas Papadimitriou | subtitle: "SSH keys", |
307 | e9392f3c | Kostas Papadimitriou | |
308 | e9392f3c | Kostas Papadimitriou | initialize: function(options) { |
309 | e9392f3c | Kostas Papadimitriou | views.PublicKeysOverlay.__super__.initialize.apply(this, arguments); |
310 | e9392f3c | Kostas Papadimitriou | this.subview = new views.PublicKeysView({el:this.$(".public-keys-view")}); |
311 | 47276ec2 | Kostas Papadimitriou | |
312 | 47276ec2 | Kostas Papadimitriou | var self = this; |
313 | 47276ec2 | Kostas Papadimitriou | this.$(".previous-view-link").live('click', function(){ |
314 | 47276ec2 | Kostas Papadimitriou | self.hide(); |
315 | 47276ec2 | Kostas Papadimitriou | }) |
316 | e9392f3c | Kostas Papadimitriou | }, |
317 | e9392f3c | Kostas Papadimitriou | |
318 | 47276ec2 | Kostas Papadimitriou | show: function(view) { |
319 | 47276ec2 | Kostas Papadimitriou | this.from_view = view || undefined; |
320 | 47276ec2 | Kostas Papadimitriou | |
321 | 47276ec2 | Kostas Papadimitriou | if (this.from_view) { |
322 | 47276ec2 | Kostas Papadimitriou | this.$(".previous-view-link").show(); |
323 | 47276ec2 | Kostas Papadimitriou | } else {
|
324 | 47276ec2 | Kostas Papadimitriou | this.$(".previous-view-link").hide(); |
325 | 47276ec2 | Kostas Papadimitriou | } |
326 | 47276ec2 | Kostas Papadimitriou | |
327 | e9392f3c | Kostas Papadimitriou | this.subview.reset();
|
328 | e9392f3c | Kostas Papadimitriou | views.PublicKeysOverlay.__super__.show.apply(this, arguments); |
329 | e9392f3c | Kostas Papadimitriou | }, |
330 | 47276ec2 | Kostas Papadimitriou | |
331 | 47276ec2 | Kostas Papadimitriou | onClose: function() { |
332 | 47276ec2 | Kostas Papadimitriou | if (this.from_view) { |
333 | 47276ec2 | Kostas Papadimitriou | this.hiding = true; |
334 | 47276ec2 | Kostas Papadimitriou | this.from_view.skip_reset_on_next_open = true; |
335 | 47276ec2 | Kostas Papadimitriou | this.from_view.show();
|
336 | 47276ec2 | Kostas Papadimitriou | this.from_view = undefined; |
337 | 47276ec2 | Kostas Papadimitriou | } |
338 | 47276ec2 | Kostas Papadimitriou | }, |
339 | e9392f3c | Kostas Papadimitriou | |
340 | e9392f3c | Kostas Papadimitriou | init_handlers: function() { |
341 | e9392f3c | Kostas Papadimitriou | } |
342 | e9392f3c | Kostas Papadimitriou | |
343 | e9392f3c | Kostas Papadimitriou | }); |
344 | e9392f3c | Kostas Papadimitriou | })(this);
|
345 | e9392f3c | Kostas Papadimitriou |