Skip to content

Commit 27e442f

Browse files
committed
Implement front-end for deleting a library
1 parent 46e5dce commit 27e442f

File tree

1 file changed

+77
-6
lines changed

1 file changed

+77
-6
lines changed

Symfony/src/Codebender/LibraryBundle/Resources/views/V2/libraryView.html.twig

+77-6
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@
6666
{% endfor %}
6767
</ul>
6868
</div>
69-
<span id="delete-library-output"></span>
69+
<div id="delete-library-output"></div>
7070
{% endif %}
7171
<br/><br/>
7272
{% if meta.gitOwner and meta.gitRepo and meta.gitLastCommit %}
@@ -129,13 +129,21 @@
129129
</h4>
130130
</div>
131131
<div class="modal-body">
132-
<p>You are about to permanently delete version <span class="modal_library_version"></span>
132+
<p>You are about to permanently delete version <strong></string><span class="modal_library_version"></span></strong> from
133+
<strong>
133134
{% if meta.name is defined %}
134135
{{ meta.name }}
135136
{% else %}
136137
{{ library }}
137138
{% endif %}
139+
</strong>
138140
library. Are you sure?</p>
141+
<div id="new_latest_version_div" style="margin: 10px 0">
142+
You are about to delete a latest version of the library, please specify a new latest version:
143+
<div>
144+
<select class="form-control" style="width: 20%" id="new_latest_version_select"></select>
145+
</div>
146+
</div>
139147
<button id="yes-button" class="btn btn-danger">Do it!</button>
140148
<button id="no-button" class="btn btn-default" data-dismiss="modal">God no..</button>
141149
</div>
@@ -148,11 +156,18 @@
148156
<!-- Modal content-->
149157
<div class="modal-content">
150158
<div class="modal-header">
151-
<h4 class="modal-title">Library <span id="modal_library_name"></span> deleted!</h4>
159+
<h4 class="modal-title">Version <span class="modal_library_version"></span>
160+
from
161+
{% if meta.name is defined %}
162+
{{ meta.name }}
163+
{% else %}
164+
{{ library }}
165+
{% endif %}
166+
library is deleted!</h4>
152167
</div>
153168
<div class="modal-body">
154169
<p>Click on the button below to get redirected to the library addition page.</p>
155-
<button id="redirect-button" class="btn btn-default">Take me there</button>
170+
<button id="redirect-button" class="btn btn-info">Take me there</button>
156171
<p><strong>Don't forget to delete the cached library object files from the compiler!</strong></p>
157172
</div>
158173
</div>
@@ -186,14 +201,70 @@
186201
}
187202
188203
$(function() {
204+
var latestVersion = "{{ meta.latestVersionName }}";
205+
var versions = {{ versions|json_encode|raw }};
189206
// add modal handler to each delete button
190207
$('a.delete-library-version').each(function() {
191208
$(this).on("click", function(){
209+
$('#new_latest_version_div').hide();
210+
$('#new_latest_version_select').html('');
192211
$('#deletionModal').modal('show');
193-
var version = $(this).data('version');
194-
$('.modal_library_version').text(version);
212+
var selectedVersion = $(this).data('version');
213+
$('.modal_library_version').text(selectedVersion);
214+
215+
// if we are deleting a version that is a latest version but not the only version of the library
216+
if (versions.length > 1 && selectedVersion === latestVersion) {
217+
// show the div
218+
$('#new_latest_version_div').show();
219+
versions.forEach(function(version) {
220+
if (version.version !== selectedVersion) {
221+
$('#new_latest_version_select').append('<option value="' + version.version + '">' + version.version + '</option>');
222+
}
223+
});
224+
}
195225
});
196226
});
227+
228+
$("#yes-button").click(function () {
229+
$('#deletionModal').modal('hide');
230+
var deleteVersion = $('.modal_library_version').first().text();
231+
var newLatestVersion = $('#new_latest_version_select').val();
232+
var data = {
233+
type: 'deleteLibrary',
234+
library: '{{ library }}',
235+
version: deleteVersion
236+
};
237+
238+
if (newLatestVersion) {
239+
data['nextLatestVersion'] = newLatestVersion;
240+
}
241+
242+
$.ajax({
243+
type: "POST",
244+
url: '{{ path('codebender_api_handler_v2', {'authorizationKey' : authorizationKey}) }}',
245+
data: JSON.stringify(data),
246+
dataType: 'json'
247+
})
248+
.done(function(data) {
249+
if(!data.success) {
250+
$("#delete-library-output").html(data.message);
251+
}
252+
if(data.success) {
253+
$('.btn').attr('disabled', 'disabled'); //disable all buttons to avoid performing operations on a deleted library
254+
$('#redirect-button').removeAttr('disabled');
255+
$('#deletedModal').modal({
256+
keyboard: false,
257+
backdrop: 'static',
258+
show: false
259+
});
260+
$('#deletedModal').modal('show');
261+
}
262+
});
263+
});
264+
265+
$('#redirect-button').click(function(){
266+
window.location.replace("{{ path('codebender_library_new_external_v2', {'authorizationKey': authorizationKey}) }}");
267+
});
197268
});
198269
199270
</script>

0 commit comments

Comments
 (0)