mirror of
https://github.com/Piwigo/Piwigo.git
synced 2026-07-13 21:31:35 +02:00
feature 3077 : improve cache invalidation
- add "lastmodified" automatic field for categories, groups, users, tags and images tables - provide a "server key" to the client cache manager git-svn-id: http://piwigo.org/svn/trunk@28532 68402e56-0260-453c-a942-63ccdbb3a9ee
This commit is contained in:
@@ -68,16 +68,22 @@ jQuery(document).ready(function() {ldelim}
|
||||
jQuery("a.preview-box").colorbox();
|
||||
|
||||
{* <!-- TAGS --> *}
|
||||
var tagsCache = new LocalStorageCache('tagsAdminList', 5*60, function(callback) {
|
||||
jQuery.getJSON('{$ROOT_URL}ws.php?format=json&method=pwg.tags.getAdminList', function(data) {
|
||||
var tags = data.result.tags;
|
||||
|
||||
for (var i=0, l=tags.length; i<l; i++) {
|
||||
tags[i].id = '~~' + tags[i].id + '~~';
|
||||
}
|
||||
|
||||
callback(tags);
|
||||
});
|
||||
var tagsCache = new LocalStorageCache({
|
||||
key: 'tagsAdminList',
|
||||
serverKey: '{$CACHE_KEYS.tags}',
|
||||
serverId: '{$CACHE_KEYS._hash}',
|
||||
|
||||
loader: function(callback) {
|
||||
jQuery.getJSON('{$ROOT_URL}ws.php?format=json&method=pwg.tags.getAdminList', function(data) {
|
||||
var tags = data.result.tags;
|
||||
|
||||
for (var i=0, l=tags.length; i<l; i++) {
|
||||
tags[i].id = '~~' + tags[i].id + '~~';
|
||||
}
|
||||
|
||||
callback(tags);
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
jQuery('[data-selectize=tags]').selectize({
|
||||
@@ -92,14 +98,7 @@ jQuery(document).ready(function() {ldelim}
|
||||
labelField: 'name',
|
||||
searchField: ['name'],
|
||||
plugins: ['remove_button'],
|
||||
create: function(input, callback) {
|
||||
tagsCache.clear();
|
||||
|
||||
callback({
|
||||
id: input,
|
||||
name: input
|
||||
});
|
||||
}
|
||||
create: true
|
||||
});
|
||||
|
||||
tagsCache.get(function(tags) {
|
||||
|
||||
@@ -10,16 +10,22 @@
|
||||
{footer_script}
|
||||
(function(){
|
||||
{* <!-- TAGS --> *}
|
||||
var tagsCache = new LocalStorageCache('tagsAdminList', 5*60, function(callback) {
|
||||
jQuery.getJSON('{$ROOT_URL}ws.php?format=json&method=pwg.tags.getAdminList', function(data) {
|
||||
var tags = data.result.tags;
|
||||
|
||||
for (var i=0, l=tags.length; i<l; i++) {
|
||||
tags[i].id = '~~' + tags[i].id + '~~';
|
||||
}
|
||||
|
||||
callback(tags);
|
||||
});
|
||||
var tagsCache = new LocalStorageCache({
|
||||
key: 'tagsAdminList',
|
||||
serverKey: '{$CACHE_KEYS.tags}',
|
||||
serverId: '{$CACHE_KEYS._hash}',
|
||||
|
||||
loader: function(callback) {
|
||||
jQuery.getJSON('{$ROOT_URL}ws.php?format=json&method=pwg.tags.getAdminList', function(data) {
|
||||
var tags = data.result.tags;
|
||||
|
||||
for (var i=0, l=tags.length; i<l; i++) {
|
||||
tags[i].id = '~~' + tags[i].id + '~~';
|
||||
}
|
||||
|
||||
callback(tags);
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
jQuery('[data-selectize=tags]').selectize({
|
||||
@@ -27,14 +33,7 @@ jQuery('[data-selectize=tags]').selectize({
|
||||
labelField: 'name',
|
||||
searchField: ['name'],
|
||||
plugins: ['remove_button'],
|
||||
create: function(input, callback) {
|
||||
tagsCache.clear();
|
||||
|
||||
callback({
|
||||
id: input,
|
||||
name: input
|
||||
});
|
||||
}
|
||||
create: true
|
||||
});
|
||||
|
||||
tagsCache.get(function(tags) {
|
||||
|
||||
@@ -6,10 +6,16 @@
|
||||
{footer_script}
|
||||
(function(){
|
||||
{* <!-- GROUPS --> *}
|
||||
var groupsCache = new LocalStorageCache('groupsAdminList', 5*60, function(callback) {
|
||||
jQuery.getJSON('{$ROOT_URL}ws.php?format=json&method=pwg.groups.getList&per_page=99999', function(data) {
|
||||
callback(data.result.groups);
|
||||
});
|
||||
var groupsCache = new LocalStorageCache({
|
||||
key: 'groupsAdminList',
|
||||
serverKey: '{$CACHE_KEYS.groups}',
|
||||
serverId: '{$CACHE_KEYS._hash}',
|
||||
|
||||
loader: function(callback) {
|
||||
jQuery.getJSON('{$ROOT_URL}ws.php?format=json&method=pwg.groups.getList&per_page=99999', function(data) {
|
||||
callback(data.result.groups);
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
jQuery('[data-selectize=groups]').selectize({
|
||||
@@ -32,22 +38,28 @@ groupsCache.get(function(groups) {
|
||||
});
|
||||
|
||||
{* <!-- USERS --> *}
|
||||
var usersCache = new LocalStorageCache('usersAdminList', 5*60, function(callback) {
|
||||
var page = 0,
|
||||
users = [];
|
||||
|
||||
(function load(page){
|
||||
jQuery.getJSON('{$ROOT_URL}ws.php?format=json&method=pwg.users.getList&display=username&per_page=99999&page='+ page, function(data) {
|
||||
users = users.concat(data.result.users);
|
||||
|
||||
if (data.result.paging.count == data.result.paging.per_page) {
|
||||
load(++page);
|
||||
}
|
||||
else {
|
||||
callback(users);
|
||||
}
|
||||
});
|
||||
}(page));
|
||||
var usersCache = new LocalStorageCache({
|
||||
key: 'usersAdminList',
|
||||
serverKey: '{$CACHE_KEYS.users}',
|
||||
serverId: '{$CACHE_KEYS._hash}',
|
||||
|
||||
loader: function(callback) {
|
||||
var users = [];
|
||||
|
||||
// recursive loader
|
||||
(function load(page){
|
||||
jQuery.getJSON('{$ROOT_URL}ws.php?format=json&method=pwg.users.getList&display=username&per_page=99999&page='+ page, function(data) {
|
||||
users = users.concat(data.result.users);
|
||||
|
||||
if (data.result.paging.count == data.result.paging.per_page) {
|
||||
load(++page);
|
||||
}
|
||||
else {
|
||||
callback(users);
|
||||
}
|
||||
});
|
||||
}(0));
|
||||
}
|
||||
});
|
||||
|
||||
jQuery('[data-selectize=users]').selectize({
|
||||
@@ -68,6 +80,29 @@ usersCache.get(function(users) {
|
||||
}, this));
|
||||
});
|
||||
});
|
||||
|
||||
{* <!-- TOGGLES --> *}
|
||||
function checkStatusOptions() {
|
||||
if (jQuery("input[name=status]:checked").val() == "private") {
|
||||
jQuery("#privateOptions, #applytoSubAction").show();
|
||||
}
|
||||
else {
|
||||
jQuery("#privateOptions, #applytoSubAction").hide();
|
||||
}
|
||||
}
|
||||
|
||||
checkStatusOptions();
|
||||
jQuery("#selectStatus").change(function() {
|
||||
checkStatusOptions();
|
||||
});
|
||||
|
||||
{if isset($nb_users_granted_indirect) && $nb_users_granted_indirect>0}
|
||||
jQuery(".toggle-indirectPermissions").click(function(e){
|
||||
jQuery(".toggle-indirectPermissions").toggle();
|
||||
jQuery("#indirectPermissionsDetails").toggle();
|
||||
e.preventDefault();
|
||||
});
|
||||
{/if}
|
||||
}());
|
||||
{/footer_script}
|
||||
|
||||
@@ -111,8 +146,8 @@ usersCache.get(function(users) {
|
||||
{if isset($nb_users_granted_indirect) && $nb_users_granted_indirect>0}
|
||||
<p>
|
||||
{'%u users have automatic permission because they belong to a granted group.'|@translate:$nb_users_granted_indirect}
|
||||
<a href="#" id="indirectPermissionsDetailsHide" style="display:none">{'hide details'|@translate}</a>
|
||||
<a href="#" id="indirectPermissionsDetailsShow">{'show details'|@translate}</a>
|
||||
<a href="#" class="toggle-indirectPermissions" style="display:none">{'hide details'|@translate}</a>
|
||||
<a href="#" class="toggle-indirectPermissions">{'show details'|@translate}</a>
|
||||
|
||||
<ul id="indirectPermissionsDetails" style="display:none">
|
||||
{foreach from=$user_granted_indirect_groups item=group_details}
|
||||
@@ -184,7 +219,10 @@ usersCache.get(function(users) {
|
||||
|
||||
<p style="margin:12px;text-align:left;">
|
||||
<input class="submit" type="submit" value="{'Save Settings'|@translate}" name="submit">
|
||||
<label id="applytoSubAction" style="display:none;"><input type="checkbox" name="apply_on_sub" {if $INHERIT}checked="checked"{/if}>{'Apply to sub-albums'|@translate}</label>
|
||||
<label id="applytoSubAction" style="display:none;">
|
||||
<input type="checkbox" name="apply_on_sub" {if $INHERIT}checked="checked"{/if}>
|
||||
{'Apply to sub-albums'|@translate}
|
||||
</label>
|
||||
</p>
|
||||
|
||||
<input type="hidden" name="pwg_token" value="{$PWG_TOKEN}">
|
||||
|
||||
@@ -10,10 +10,16 @@
|
||||
{footer_script}
|
||||
(function(){
|
||||
{* <!-- CATEGORIES --> *}
|
||||
var categoriesCache = new LocalStorageCache('categoriesAdminList', 5*60, function(callback) {
|
||||
jQuery.getJSON('{$ROOT_URL}ws.php?format=json&method=pwg.categories.getAdminList', function(data) {
|
||||
callback(data.result.categories);
|
||||
});
|
||||
var categoriesCache = new LocalStorageCache({
|
||||
key: 'categoriesAdminList',
|
||||
serverKey: '{$CACHE_KEYS.categories}',
|
||||
serverId: '{$CACHE_KEYS._hash}',
|
||||
|
||||
loader: function(callback) {
|
||||
jQuery.getJSON('{$ROOT_URL}ws.php?format=json&method=pwg.categories.getAdminList', function(data) {
|
||||
callback(data.result.categories);
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
jQuery('[data-selectize=categories]').selectize({
|
||||
@@ -36,16 +42,22 @@ categoriesCache.get(function(categories) {
|
||||
});
|
||||
|
||||
{* <!-- TAGS --> *}
|
||||
var tagsCache = new LocalStorageCache('tagsAdminList', 5*60, function(callback) {
|
||||
jQuery.getJSON('{$ROOT_URL}ws.php?format=json&method=pwg.tags.getAdminList', function(data) {
|
||||
var tags = data.result.tags;
|
||||
|
||||
for (var i=0, l=tags.length; i<l; i++) {
|
||||
tags[i].id = '~~' + tags[i].id + '~~';
|
||||
}
|
||||
|
||||
callback(tags);
|
||||
});
|
||||
var tagsCache = new LocalStorageCache({
|
||||
key: 'tagsAdminList',
|
||||
serverKey: '{$CACHE_KEYS.tags}',
|
||||
serverId: '{$CACHE_KEYS._hash}',
|
||||
|
||||
loader: function(callback) {
|
||||
jQuery.getJSON('{$ROOT_URL}ws.php?format=json&method=pwg.tags.getAdminList', function(data) {
|
||||
var tags = data.result.tags;
|
||||
|
||||
for (var i=0, l=tags.length; i<l; i++) {
|
||||
tags[i].id = '~~' + tags[i].id + '~~';
|
||||
}
|
||||
|
||||
callback(tags);
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
jQuery('[data-selectize=tags]').selectize({
|
||||
@@ -53,14 +65,7 @@ jQuery('[data-selectize=tags]').selectize({
|
||||
labelField: 'name',
|
||||
searchField: ['name'],
|
||||
plugins: ['remove_button'],
|
||||
create: function(input, callback) {
|
||||
tagsCache.clear();
|
||||
|
||||
callback({
|
||||
id: input,
|
||||
name: input
|
||||
});
|
||||
}
|
||||
create: true
|
||||
});
|
||||
|
||||
tagsCache.get(function(tags) {
|
||||
|
||||
Reference in New Issue
Block a user