Valider 00db49cf rédigé par cerdic's avatar cerdic
Parcourir les fichiers

extraire le manager et le mettre dans une fonction separee, dans un fichier...

extraire le manager et le mettre dans une fonction separee, dans un fichier specifique, ce qui en rendra sa surcharge beaucoup plus facile, vu que c'est le coeur du fonctionnement
parent 983e7d0b
Chargement en cours
Chargement en cours
Chargement en cours
Chargement en cours
+1 −0
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -56,6 +56,7 @@ function action_api_offline_sw_js_dist() {
	return offline_build_jslist($config,
		array(
			'javascript/offline.utils.js',
			'javascript/offline.manager.js',
			'javascript/offline.sw.js',
		)
	);
+44 −0
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
offline.manager = function(request) {

	// default strategy
	var strategy = offline_config.strategy;

	// fine tuning
	if (request.mode === 'navigate') {
		// main request (page)
		offline.log("manager:navigate:" + request.method + ':', request.url);
		if (offline.force_refresh) {
			offline.force_refresh = false;
		}
		// dans l'espace prive, on ne cache aucune requete principale
		if (/[\?&]var_mode=\w/.test(request.url)
		) {
			offline.force_refresh = true;
	  }
	}
	else {
		// resources associated
		offline.log("manager:resource:" + request.method + ':', request.url);
		if (/\/(IMG|local|plugins|plugins-dist|squelettes|squelettes-dist)\//.test(request.url)
		 || /\.(png|gif|jpg|js|css)\?\d+$/.test(request.url)) {
			strategy = offline._CACHE_FALLING_BACK_TO_NETWORK;
		}
	}

	// if POST request
	if (request.method == 'POST'
	 || /\/(ecrire\/|\w+.api[.\/])/.test(request.url)
	 || /[\?&]action=\w/.test(request.url)
	) {
		strategy = offline._NETWORK_ONLY;
  }

  // if var_mode or was on last main request
	// let's force a refresh from network
  if (offline.force_refresh &&
	  (strategy == offline._CACHE_FALLING_BACK_TO_NETWORK || strategy==offline._STALE_WHILE_REVALIDATE)) {
	  strategy = offline._NETWORK_FALLING_BACK_TO_CACHE;
  }

  return strategy;
}
 No newline at end of file
+3 −39
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -50,43 +50,8 @@ self.addEventListener('activate', function(event) {


self.addEventListener('fetch', function(event) {
	// strategie par defaut issue de la config
	var strategie = offline_config.strategie;
	
	// mais on gere les cas particuliers ici
	if (event.request.mode === 'navigate') {
		// main request (page)
		offline.log("sw.fetch:navigate:" + event.request.method + ':', event.request.url);
		if (offline.force_refresh) {
			offline.force_refresh = false;
		}
		// dans l'espace prive, on ne cache aucune requete principale
		if (/[\?&]var_mode=\w/.test(event.request.url)
		) {
			offline.force_refresh = true;
	  }
	}
	else {
		// resources associated
		offline.log("sw.fetch:resource:" + event.request.method + ':', event.request.url);
		if (/\/(IMG|local|plugins|plugins-dist|squelettes|squelettes-dist)\//.test(event.request.url)) {
			strategie = offline._CACHE_FALLING_BACK_TO_NETWORK;
		}
	}

	// si c'est un POST on ne cache rien
	if (event.request.method == 'POST'
	 || /\/(ecrire\/|\w+.api[.\/])/.test(event.request.url)
	 || /[\?&]action=\w/.test(event.request.url)
	) {
		strategie = offline._NETWORK_ONLY;
  }

  // si var_mode sur la requete ou la derniere requete principale on force la mise a jour depuis le reseau
  if (offline.force_refresh &&
	  (strategie == offline._CACHE_FALLING_BACK_TO_NETWORK || strategie==offline._STALE_WHILE_REVALIDATE)) {
	  strategie = offline._NETWORK_FALLING_BACK_TO_CACHE;
  }
	var strategy = offline.manager(event.request);

  // Debug cheese
	/*
@@ -100,8 +65,7 @@ self.addEventListener('fetch', function(event) {
  }
  */


	switch (strategie) {
	switch (strategy) {
		case offline._NETWORK_ONLY:
			event.respondWith(offline.networkOnly(event));
			// or simply don't call event.respondWith, which
+1 −1
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
var offline = {
	version:2,
	version:4,
	/* Flag pour forcer la mise a jour sur un ?var_mode, jusqu'a la requete principale suivante */
	force_refresh:false,