Tests de la 2.6
by Bruno
Coucou,
Si vous souhaitez tester à fond la 2.6, je vous conseille d'installer le
plugin errorlogger.
Pour le moment il est ici :
http://www.morefnu.org/public/archives/dotclear2/plugins/plugin-errorlogg...
Je peaufine une 0.3 qui permettra d'accéder à des logs coté admin.
En gros, si tout va bien dans vos tests, il ne devrait __rien__ se passer.
Si vous voyez apparaître un fichier errors.txt dans votre dossier de cache
dotclear, alors c'est qu'une erreur/notice/warning PHP a été levée quelque
part, auquel cas vous pourrez en causer sur la ml :)
--
Bruno
10 years, 7 months
Pratique à suivre ?
by brol
Bonjour,
Soit un plugin que j'appelerai "Toto" qui a du code et juste une case
à cocher pour être activé. Quel est l'endroit le meilleur pour
afficher cette case ?
- dans les param du blog
- dans une page index du plugin où il n'y aura au final que ça.
Hmmm ?
Merci.
--
brol
10 years, 7 months
[2.6-dev-r2273] Nightly HS
by Denis Jean-Christian
Ce message est surtout pour Franckpaul à son réveil ;)
La nightly de cette nuit casse tout. Après un débuggage intensif avec
Tomek et des litres de café noir, on a trouvé :p
La suppression de daInstaller passait par loadModules qui chargeait tous
les plugins pendant l'upgrade alors que blog, settings, etc sont
inexistant, bref, là c'est le drame. J'ai fait une petit modif si
quelqu'un qui à les clefs pouvait relancer le machin qui fait les
nightly au plus vite.
Merci,
JC
10 years, 7 months
Fwd: [Dotclear Tracker] [2428]: 2.6 - Add batch actions on plugins and themes lists
by Bruno
Hé, j'voudrais pas faire le fayot, mais y'en a qui trichent, on avait dit
fitcheure frise! :P
---------- Forwarded message ----------
From: <hg(a)dotclear.org>
Date: 2013/10/17
Subject: [Dotclear Tracker] [2428]: 2.6 - Add batch actions on plugins and
themes lists
To: tracker(a)list.dotclear.net
**
Revision: 2428 (3eff307817bf} Branch: 2.6 Author: Denis Jean-Chirstian **
Date: 2013-10-17 17:41 +0200 Details: Details:
http://dev.dotclear.org/2.0/changeset/3eff307817bf<http://dev.dotclear.org/2.0/changeset/3eff307817bf>
Log
Message
Add batch actions on plugins and themes lists
diffstat:
inc/admin/lib.moduleslist.php | 237
+++++++++++++++++++++++++++++++++++++++++-
locales/en/main.po | 27 ++++
locales/fr/main.po | 27 ++++
3 files changed, 289 insertions(+), 2 deletions(-)
diffs (truncated from 384 to 300 lines):
diff -r 6f339b5f4bd0 -r 3eff307817bf inc/admin/lib.moduleslist.php
--- a/inc/admin/lib.moduleslist.php Thu Oct 17 17:05:45 2013 +0200
+++ b/inc/admin/lib.moduleslist.php Thu Oct 17 17:41:32 2013 +0200
@@ -731,6 +731,21 @@
'<p class="message">'.__('No plugins matched your
search.').'</p>';
}
+ if ($count > 1 && !empty($actions) &&
$this->core->auth->isSuperAdmin()) {
+ $buttons = $this->getGlobalActions($actions);
+
+ echo
+ '<form action="'.$this->getURL().'" method="post"
class="global-actions-buttons">'.
+ '<div>'.
+ $this->core->formNonce().
+ form::hidden(array('modules'), '1').
+
+ implode(' ', $buttons).
+
+ '</div>'.
+ '</form>';
+ }
+
return $this;
}
@@ -794,6 +809,53 @@
}
}
+ return $submits;
+ }
+
+ /**
+ * Get global action buttons to add to modules list.
+ *
+ * @param array $actions Actions keys
+ * @return Array of actions buttons
+ */
+ protected function getGlobalActions($actions)
+ {
+ $submits = array();
+
+ # Use loop to keep requested order
+ foreach($actions as $action) {
+ switch($action) {
+
+ # Deactivate
+ case 'activate': if ($this->path_writable) {
+ $submits[] =
+ '<input type="submit"
name="activate" value="'.__('Activate all plugins from this list').'" />';
+ } break;
+
+ # Activate
+ case 'deactivate': if
($this->path_writable) {
+ $submits[] =
+ '<input type="submit"
name="deactivate" value="'.__('Deactivate all plugins from this list').'"
class="reset" />';
+ } break;
+
+ # Update (from store)
+ case 'update': if ($this->path_writable) {
+ $submits[] =
+ '<input type="submit" name="update"
value="'.__('Update all plugins from this list').'" />';
+ } break;
+
+ # Behavior
+ case 'behavior':
+
+ # --BEHAVIOR--
adminModulesListGetGlobalActions
+ $tmp =
$this->core->callBehavior('adminModulesListGetGlobalActions', $this);
+
+ if (!empty($tmp)) {
+ $submits[] = $tmp;
+ }
+ break;
+ }
+ }
return $submits;
}
@@ -812,7 +874,7 @@
return null;
}
- # List actions
+ # Actions per module
if (!empty($_POST['module'])) {
$id = $_POST['module'];
@@ -892,7 +954,6 @@
dcPage::addSuccessNotice(__('Plugin has
been successfully deleted.'));
http::redirect($this->getURL());
}
-
elseif (!empty($_POST['install'])) {
$updated = $this->store->get();
@@ -964,6 +1025,98 @@
}
}
+ # Global actions
+ elseif (!empty($_POST['modules'])) {
+
+ if (!empty($_POST['activate'])) {
+
+ $modules =
$this->modules->getDisabledModules();
+ if (empty($modules)) {
+ throw new Exception(__('No such
plugin.'));
+ }
+
+ foreach($modules as $id => $module) {
+
+ # --BEHAVIOR-- moduleBeforeActivate
+
$this->core->callBehavior('pluginBeforeActivate', $id);
+
+ $this->modules->activateModule($id);
+
+ # --BEHAVIOR-- moduleAfterActivate
+
$this->core->callBehavior('pluginAfterActivate', $id);
+
+ }
+
+ dcPage::addSuccessNotice(__('Plugins have
been successfully activated.'));
+ http::redirect($this->getURL());
+ }
+
+ elseif (!empty($_POST['deactivate'])) {
+
+ $modules = $this->modules->getModules();
+ if (empty($modules)) {
+ throw new Exception(__('No such
plugin.'));
+ }
+
+ $failed = false;
+ foreach($modules as $id => $module) {
+ $module[$id] = $id;
+
+ if (!$module['root_writable']) {
+ $failed = true;
+ continue;
+ }
+
+ # --BEHAVIOR--
moduleBeforeDeactivate
+
$this->core->callBehavior('pluginBeforeDeactivate', $module);
+
+
$this->modules->deactivateModule($id);
+
+ # --BEHAVIOR-- moduleAfterDeactivate
+
$this->core->callBehavior('pluginAfterDeactivate', $module);
+ }
+
+ if ($failed) {
+ dcPage::addWarningNotice(__('Some
plugins have not been deactivated.'));
+ }
+ else {
+
dcPage::addSuccessNotice(__('Plugins have been successfully deactivated.'));
+ }
+ http::redirect($this->getURL());
+ }
+
+ elseif (!empty($_POST['update'])) {
+
+ $updated = $this->store->get(true);
+ if (empty($updated)) {
+ throw new Exception(__('No such
plugin.'));
+ }
+
+ foreach($updated as $module) {
+
+ if (!self::$allow_multi_install) {
+ $dest =
$module['root'].'/../'.basename($module['file']);
+ }
+ else {
+ $dest =
$this->getPath().'/'.basename($module['file']);
+ if ($module['root'] !=
$dest) {
+
@file_put_contents($module['root'].'/_disabled', '');
+ }
+ }
+
+ # --BEHAVIOR-- moduleBeforeUpdate
+
$this->core->callBehavior('pluginBeforeUpdate', $module);
+
+
$this->store->process($module['file'], $dest);
+
+ # --BEHAVIOR-- moduleAfterUpdate
+
$this->core->callBehavior('pluginAfterUpdate', $module);
+ }
+
+ dcPage::addSuccessNotice(__('Plugins have
been successfully updated.'));
+ http::redirect($this->getURL().'#plugins');
+ }
+ }
# Manual actions
elseif (!empty($_POST['upload_pkg']) &&
!empty($_FILES['pkg_file'])
|| !empty($_POST['fetch_pkg']) &&
!empty($_POST['pkg_url']))
@@ -1377,6 +1530,21 @@
echo
'<p class="message">'.__('No themes matched your
search.').'</p>';
}
+
+ if ($count > 1 && !empty($actions) &&
$this->core->auth->isSuperAdmin()) {
+ $buttons = $this->getGlobalActions($actions);
+
+ echo
+ '<form action="'.$this->getURL().'" method="post"
class="global-actions-buttons">'.
+ '<div>'.
+ $this->core->formNonce().
+ form::hidden(array('modules'), '1').
+
+ implode(' ', $buttons).
+
+ '</div>'.
+ '</form>';
+ }
}
protected function getActions($id, $module, $actions)
@@ -1399,6 +1567,36 @@
);
}
+ protected function getGlobalActions($actions)
+ {
+ $submits = array();
+
+ foreach($actions as $action) {
+ switch($action) {
+
+
+ # Update (from store)
+ case 'update': if ($this->path_writable) {
+ $submits[] =
+ '<input type="submit" name="update"
value="'.__('Update all themes from this list').'" />';
+ } break;
+
+ # Behavior
+ case 'behavior':
+
+ # --BEHAVIOR--
adminModulesListGetGlobalActions
+ $tmp =
$this->core->callBehavior('adminModulesListGetGlobalActions', $this);
+
+ if (!empty($tmp)) {
+ $submits[] = $tmp;
+ }
+ break;
+ }
+ }
+
+ return $submits;
+ }
+
public function doActions()
{
if (empty($_POST) || !empty($_REQUEST['conf'])
@@ -1571,6 +1769,41 @@
}
}
+ # Global actions
+ elseif (!empty($_POST['modules'])) {
+
+ if (!empty($_POST['update'])) {
+
+ $updated = $this->store->get(true);
+ if (empty($updated)) {
+ throw new Exception(__('No such
theme.'));
+ }
+
+ foreach($updated as $module) {
+
+ if (!self::$allow_multi_install) {
+ $dest =
$module['root'].'/../'.basename($module['file']);
+ }
+ else {
+ $dest =
$this->getPath().'/'.basename($module['file']);
+ if ($module['root'] !=
$dest) {
+
@file_put_contents($module['root'].'/_disabled', '');
+ }
+ }
+
+ # --BEHAVIOR-- moduleBeforeUpdate
+
$this->core->callBehavior('themesBeforeUpdate', $module);
+
+
$this->store->process($module['file'], $dest);
+
+ # --BEHAVIOR-- moduleAfterUpdate
+
$this->core->callBehavior('themesAfterUpdate', $module);
+ }
+
+ dcPage::addSuccessNotice(__('Themes have
been successfully updated.'));
+ http::redirect($this->getURL().'#themes');
+ }
+ }
# Manual actions
elseif (!empty($_POST['upload_pkg']) &&
!empty($_FILES['pkg_file'])
|| !empty($_POST['fetch_pkg']) &&
!empty($_POST['pkg_url']))
diff -r 6f339b5f4bd0 -r 3eff307817bf locales/en/main.po
--- a/locales/en/main.po Thu Oct 17 17:05:45 2013 +0200
+++ b/locales/en/main.po Thu Oct 17 17:41:32 2013 +0200
@@ -2863,6 +2863,27 @@
--
Tracker mailing list - Tracker(a)list.dotclear.net -
http://ml.dotclear.net/listinfo/tracker
10 years, 7 months
Configurateur de thèmes générique
by Bruno
Plop,
Je reviens sur le chantier de fond "configurateur de thèmes générique".
En regardant de plus près blowupconfig, on constate qu'il y a 2 aspects à
traiter :
* Le code qui permet de sortir du code dans la page rendue, via des balises
tpl spécifiques
* Le code CSS généré par blowupconfig, souvent positionné dans un CSS dédié
du thème et chargé coté public.
Sur ce dernier point, je me demande si on ne pourrait pas capitaliser sur
un framework CSS pour faciliter la chose. MAIS, avant que vous ne me
dédicaciez un tutu et des palmes en béton vibré assorties, je parle d'un
framework CSS __coté serveur__. Par exemple lessphp (
http://leafo.net/lessphp/): les thèmes clients proposeraient alors leurs
thèmes en less, lequel serait ensuite "compilé" avec les réglages
utilisateur par le plugin de configuration de thème en un fichier css
"standard".
Pour le plugin en question, je verrais bien 2 pans : une partie dédiée au
créateurs de thèmes qui définissent la partie réglable de leur thème, et
qui enregistrent un "fichier de config" dans le thème. L'autre partie qui
digère ce fichier de config et affiche le formulaire qui va bien...
Et voilà, un chantier de plus :)
--
Bruno
10 years, 7 months
Comportement bizarre CSS/#entry-content
by Bruno
Plop,
Je viens d'expérimenter quelque chose de bizarre en 2.6 : l'affichage
diffère selon que le div parent est #entry-content ou pas.
Je ne parle pas de l'uppercase, qui me convient tout à fait, mais dans le
cas où je cumule une case à cocher et un champ texte en label "classic",
ie avec le code suivant :
<p><label class="classic" for="ex7"><input type="checkbox"
checked="checked" id="ex7" value="1" name="ex7" /></label><label for="ex20"
class="classic">Label class="classic" :</label> <input id="ex20"
type="text" /></p>
J'obtiens un décalage vers le haut du champ texte si je suis dans un div
#entry-content.
Dans un div#entry-content :
http://www.morefnu.org/public/archives/temp/label_classic_no_entry_conten...
Dans un div #tartempion :
http://www.morefnu.org/public/archives/temp/label_classic_entry_content.png
J'ai testé en bidouillant _charte.php pour être sûr, le bug apparaît
aussi...
Une idée de l'origine de ça ? Merci d'avance :)
--
Bruno
10 years, 7 months
Helpbox pour les thèmes
by brol
Bonjour,
Est-il possible d'avoir une helpbox dans la page de personnalisation
d'un thème avec dc2.6 ?
J'ai mis à la fin de _config.php ceci :
dcPage::helpBlock('nomdemontheme');
et mis dans locales/fr un fichier resources.php comme pour les plugins
(avec un dossier help et un fichier d'aide.html) mais rien ne s'affiche côté
admin.
Pourquoi ?
Merci
--
brol
10 years, 7 months