Skip to content

Commit 7bc85b9

Browse files
committed
Edit archive
1 parent 2ea6196 commit 7bc85b9

File tree

2 files changed

+127
-2
lines changed

2 files changed

+127
-2
lines changed

system/application/views/pegboard.js

Lines changed: 68 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,23 @@ $(document).ready(function() {
1919
$('#search').find('.glyphicon').blur();
2020
});
2121
$('#search').find('.glyphicon-pencil').unbind('click').click(function() {
22-
alert('Coming soon: edit this archive\'s settings');
22+
var profiles = ('undefined'!=typeof(storage.get('profiles'))) ? storage.get('profiles') : [];
23+
for (var j = 0; j < profiles.length; j++) {
24+
for (var k = 0; k < profiles[j].archives.length; k++) {
25+
if (JSON.stringify(archive) != JSON.stringify(profiles[j].archives[k])) continue;
26+
var profile_index = j;
27+
var archive_index = k;
28+
break;
29+
};
30+
};
31+
archive.profile_index = profile_index;
32+
archive.archive_index = archive_index;
33+
$('#edit_archive').edit_archive(archive);
34+
$('#edit_archive').find('form').unbind('submit').submit(function() {
35+
var $form = $(this);
36+
$form.closest('.modal').edit_archive(archive, $form);
37+
return false;
38+
});
2339
$('#search').find('.glyphicon').blur();
2440
});
2541
$('#search').find('.glyphicon-trash').unbind('click').click(function() {
@@ -642,7 +658,57 @@ $.fn.add_archive = function($form) {
642658
}
643659
$modal.find('#parser').empty().html(options);
644660
});
645-
661+
});
662+
}
663+
};
664+
665+
//The edit archive modal
666+
$.fn.edit_archive = function(existing_values, $form) {
667+
if ('undefined'!=typeof($form)) {
668+
if ('undefined'==typeof(ns)) ns = $.initNamespaceStorage('tensor_ns'); // global
669+
if ('undefined'==typeof(storage)) storage = ns.localStorage; // global
670+
var categories = $form.find('#categories').val().split(/[\s,]+/);
671+
// Create the new archive
672+
var obj = {
673+
"title": $form.find('#title').val(),
674+
"subtitle": $form.find('#subtitle').val(),
675+
"parser":$form.find('#parser').val(),
676+
"url": $form.find('#url').val(),
677+
"categories": categories
678+
};
679+
if ($form.find('#thumbnail').val().length) obj.thumbnail = $form.find('#thumbnail').val();
680+
var profiles = ('undefined'!=typeof(storage.get('profiles'))) ? storage.get('profiles') : {};
681+
profiles[existing_values.profile_index].archives[existing_values.archive_index] = $.extend({}, obj);
682+
storage.set('profiles', profiles);
683+
$('#archives').list_archives(storage.get('profiles'));
684+
$('#collections').list_collections(storage.get('profiles'));
685+
$('#edit_archive').modal('hide');
686+
$('#search_close').click();
687+
$('#archives').find('.archive').each(function() {
688+
var $archive = $(this);
689+
if ($archive.find('h5').html() == obj.title && $archive.find('.desc').children('div:first').html() == obj.subtitle) {
690+
$archive.click();
691+
};
692+
});
693+
} else {
694+
if ('undefined'==typeof(ns)) ns = $.initNamespaceStorage('tensor_ns'); // global
695+
if ('undefined'==typeof(storage)) storage = ns.localStorage; // global
696+
return this.each(function() {
697+
var $modal = $(this);
698+
$modal.modal('show');
699+
$modal.find('[name="title"]').val(existing_values.title);
700+
$modal.find('[name="subtitle"]').val(existing_values.subtitle);
701+
$modal.find('[name="url"]').val(existing_values.url);
702+
$modal.find('[name="thumbnail"]').val(existing_values.thumbnail);
703+
$modal.find('[name="categories"]').val(existing_values.categories.join(', '));
704+
// Parsers
705+
$.getJSON($('link#base_url').attr('href')+'wb/parsers', function(json) {
706+
var options = '';
707+
for (var j = 0; j < json.length; j++) {
708+
options += '<option value="'+json[j]+'"'+((json[j]==existing_values.parser)?' selected':'')+'>'+json[j]+'</option>';
709+
}
710+
$modal.find('#parser').empty().html(options);
711+
});
646712
});
647713
}
648714
};

system/application/views/pegboard.php

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -239,6 +239,65 @@
239239
</div>
240240
</div>
241241

242+
<div class="modal fade" id="edit_archive">
243+
<div class="modal-dialog">
244+
<div class="modal-content">
245+
<div class="modal-header">
246+
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
247+
<h4 class="modal-title">Edit archive</h4>
248+
</div>
249+
<form class="form-horizontal">
250+
<div class="modal-body">
251+
<div class="form-group">
252+
<label for="parser" class="col-sm-3 control-label">Parser</label>
253+
<div class="col-sm-9">
254+
<select class="form-control" id="parser" name="parser" required>
255+
<option value=""></option>
256+
</select>
257+
</div>
258+
</div>
259+
<div class="form-group">
260+
<label for="title" class="col-sm-3 control-label">Title</label>
261+
<div class="col-sm-9">
262+
<input type="text" class="form-control" id="title" name="title" placeholder="E.g., My Archive" required>
263+
</div>
264+
</div>
265+
<div class="form-group">
266+
<label for="subtitle" class="col-sm-3 control-label">Description</label>
267+
<div class="col-sm-9">
268+
<input type="text" class="form-control" id="subtitle" name="subtitle" placeholder="E.g., An archive of digital assets" required>
269+
</div>
270+
</div>
271+
<div class="form-group">
272+
<label for="url" class="col-sm-3 control-label">Archive URL</label>
273+
<div class="col-sm-9">
274+
<input type="text" class="form-control" id="url" name="url" placeholder="http://" required>
275+
<small>For example, the archive's home or start page</small>
276+
</div>
277+
</div>
278+
<div class="form-group">
279+
<label for="thumbnail" class="col-sm-3 control-label">Thumbnail URL</label>
280+
<div class="col-sm-9">
281+
<input type="text" class="form-control" id="thumbnail" name="thumbnail" placeholder="http://">
282+
<small>Leave empty to use the parser's default thumbnail</small>
283+
</div>
284+
</div>
285+
<div class="form-group">
286+
<label for="categories" class="col-sm-3 control-label">Categories</label>
287+
<div class="col-sm-9">
288+
<input type="text" class="form-control" id="categories" name="categories" placeholder="E.g., image, video, audio, ...">
289+
</div>
290+
</div>
291+
</div>
292+
<div class="modal-footer">
293+
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
294+
<button type="submit" class="btn btn-primary">Save</button>
295+
</div>
296+
</form>
297+
</div>
298+
</div>
299+
</div>
300+
242301
<div class="modal fade" id="add_collection">
243302
<div class="modal-dialog">
244303
<div class="modal-content">

0 commit comments

Comments
 (0)