Merge pull request #3232 from Hypolite/issue/#3194-2

frio: Revert guid truncation for scrollToItem() and improve dropItem()
This commit is contained in:
rabuzarus 2017-03-14 13:04:47 +01:00 committed by GitHub
commit 3061a37b4f
4 changed files with 42 additions and 27 deletions

View file

@ -162,21 +162,29 @@ function qCommentInsert(obj,id) {
function confirmDelete() { return confirm(aStr.delitem); } function confirmDelete() { return confirm(aStr.delitem); }
function dropItem(url, object) { /**
* Hide and removes an item element from the DOM after the deletion url is
* successful, restore it else.
*
* @param {string} url The item removal URL
* @param {string} elementId The DOM id of the item element
* @returns {undefined}
*/
function dropItem(url, elementId) {
var confirm = confirmDelete(); var confirm = confirmDelete();
//if the first character of the object is #, remove it because if (confirm) {
// we use getElementById which don't need the #
// getElementByID selects elements even if there are special characters
// in the ID (like %) which won't work with jQuery
/// @todo ceck if we can solve this in the template
object = object.indexOf('#') == 0 ? object.substring(1) : object;
if(confirm) {
$('body').css('cursor', 'wait'); $('body').css('cursor', 'wait');
$(document.getElementById(object)).fadeTo('fast', 0.33, function () {
$.get(url).done(function() { var $el = $(document.getElementById(elementId));
$(document.getElementById(object)).remove();
$el.fadeTo('fast', 0.33, function () {
$.get(url).then(function() {
$el.remove();
}).error(function() {
// @todo Show related error message
$el.show();
}).always(function() {
$('body').css('cursor', 'auto'); $('body').css('cursor', 'auto');
}); });
}); });

View file

@ -573,31 +573,38 @@ String.prototype.rtrim = function() {
return trimmed; return trimmed;
}; };
// Scroll to a specific item and highlight it /**
// Note: jquery.color.js is needed * Scroll the screen to the item element whose id is provided, then highlights it
function scrollToItem(itemID) { *
if( typeof itemID === "undefined") * Note: jquery.color.js is required
*
* @param {string} elementId The item element id
* @returns {undefined}
*/
function scrollToItem(elementId) {
if (typeof elementId === "undefined") {
return; return;
}
var elm = $('#'+itemID); var $el = $(document.getElementById(elementId));
// Test if the Item exists // Test if the Item exists
if(!elm.length) if (!$el.length) {
return; return;
}
// Define the colors which are used for highlighting // Define the colors which are used for highlighting
var colWhite = {backgroundColor:'#F5F5F5'}; var colWhite = {backgroundColor:'#F5F5F5'};
var colShiny = {backgroundColor:'#FFF176'}; var colShiny = {backgroundColor:'#FFF176'};
// Get the Item Position (we need to substract 100 to match // Get the Item Position (we need to substract 100 to match correct position
// correct position var itemPos = $el.offset().top - 100;
var itemPos = $(elm).offset().top - 100;
// Scroll to the DIV with the ID (GUID) // Scroll to the DIV with the ID (GUID)
$('html, body').animate({ $('html, body').animate({
scrollTop: itemPos scrollTop: itemPos
}, 400, function() { }, 400, function() {
// Highlight post/commenent with ID (GUID) // Highlight post/commenent with ID (GUID)
$(elm).animate(colWhite, 1000).animate(colShiny).animate(colWhite, 600); $el.animate(colWhite, 1000).animate(colShiny).animate(colWhite, 600);
}); });
} }

View file

@ -7,7 +7,7 @@
<!-- ./TODO => Unknow block --> <!-- ./TODO => Unknow block -->
<div class="panel"> <div class="panel" id="item-{{$item.guid}}">
<div class="wall-item-container panel-body{{$item.indent}} {{$item.shiny}} {{$item.previewing}}" > <div class="wall-item-container panel-body{{$item.indent}} {{$item.shiny}} {{$item.previewing}}" >
<div class="media"> <div class="media">
{{* Put additional actions in a top-right dropdown menu *}} {{* Put additional actions in a top-right dropdown menu *}}
@ -54,7 +54,7 @@
{{if $item.drop.dropping}} {{if $item.drop.dropping}}
<li role="separator" class="divider"></li> <li role="separator" class="divider"></li>
<li role="menuitem"> <li role="menuitem">
<a class="navicon delete" onclick="dropItem('item/drop/{{$item.id}}', '#item-{{$item.guid}}'); return false;" title="{{$item.drop.delete}}"><i class="fa fa-trash"></i> {{$item.drop.delete}}</a> <a class="navicon delete" onclick="dropItem('item/drop/{{$item.id}}', 'item-{{$item.guid}}'); return false;" title="{{$item.drop.delete}}"><i class="fa fa-trash"></i> {{$item.drop.delete}}</a>
</li> </li>
{{/if}} {{/if}}
</ul> </ul>

View file

@ -68,9 +68,9 @@ as the value of $top_child_total (this is done at the end of this file)
{{* Use a different div container in dependence max thread-level = 7 *}} {{* Use a different div container in dependence max thread-level = 7 *}}
{{if $item.thread_level<7}} {{if $item.thread_level<7}}
<div class="wall-item-container {{$item.indent}} {{$item.shiny}} {{$item.network}} thread_level_{{$item.thread_level}} {{if $item.thread_level==1}}panel-body h-entry{{else}}u-comment h-cite{{/if}}" id="item-{{$item.guid|regex_replace:'/%.*/':''}}"><!-- wall-item-container --> <div class="wall-item-container {{$item.indent}} {{$item.shiny}} {{$item.network}} thread_level_{{$item.thread_level}} {{if $item.thread_level==1}}panel-body h-entry{{else}}u-comment h-cite{{/if}}" id="item-{{$item.guid}}"><!-- wall-item-container -->
{{else}} {{else}}
<div class="wall-item-container {{$item.indent}} {{$item.shiny}} {{$item.network}} thread_level_7 u-comment h-cite" id="item-{{$item.guid|regex_replace:'/%.*/':''}}"> <div class="wall-item-container {{$item.indent}} {{$item.shiny}} {{$item.network}} thread_level_7 u-comment h-cite" id="item-{{$item.guid}}">
{{/if}} {{/if}}
<div class="media"> <div class="media">
{{* Put addional actions in a top-right dropdown menu *}} {{* Put addional actions in a top-right dropdown menu *}}
@ -129,7 +129,7 @@ as the value of $top_child_total (this is done at the end of this file)
{{if $item.drop.dropping}} {{if $item.drop.dropping}}
<li role="menuitem"> <li role="menuitem">
<a class="navicon delete" onclick="dropItem('item/drop/{{$item.id}}', '#item-{{$item.guid}}'); return false;" title="{{$item.drop.delete}}"><i class="fa fa-trash"></i> {{$item.drop.delete}}</a> <a class="navicon delete" onclick="dropItem('item/drop/{{$item.id}}', 'item-{{$item.guid}}'); return false;" title="{{$item.drop.delete}}"><i class="fa fa-trash"></i> {{$item.drop.delete}}</a>
</li> </li>
{{/if}} {{/if}}
</ul> </ul>