Tema: Modulo Sections en Zikula
llobarret
avatar
Posteador de Bronce
Posteador de Bronce
Mensajes: 372

Enviado:
29.jul 2008 - 21:09

He instalado zikula y estoy añadiendo modulos y contenido, pues bien, me es imposible instalar el modulo Sections, con lo que maginaos que pierdo casi todo el contenido de la Web, ya que ese modulo es el mas utilizaba para agregar contenido.

Ayuda por favor.

Saludos


Pesca Y Pescar, tu Web de pesca deportiva en aguas dulces y en el mar
nestormateo
avatar
Administrador
Administrador
Mensajes: 1423

Enviado:
31.jul 2008 - 14:36

EL módulo Sections es ahora Pages
y tus páginas no se pierden en el proceso de actualización.
prueba instalándolo y nos cuentas
wink


Mateo Tibaquira
-Mis principios... son mis fines-
llobarret
avatar
Posteador de Bronce
Posteador de Bronce
Mensajes: 372

Enviado:
31.jul 2008 - 14:43

Si fuera actualizar si, pero hemos hecho una instalación limpia y estamos pasando todo el contenido poco a poco a la instalación, no existe el proceso de actualizar de sections a pages. Si sabeis como os agradeceria la información.

Gracias.


Pesca Y Pescar, tu Web de pesca deportiva en aguas dulces y en el mar
nestormateo
avatar
Administrador
Administrador
Mensajes: 1423

Enviado:
31.jul 2008 - 15:15

Mmmmm
pues habría que probar una forma "manual"

copia las tablas pn_seccont y pn_sections a tu BD de zikula
inserta un registro desde phpMyAdmin en la tabla pn_modules don la siguiente información:
pn_name: Sections
pn_type: 2
pn_displayname: Sections
pn_description: Sections
pn_directory: Sections
pn_version: 1.0
pn_official: 1
pn_admin_capable: 1
pn_user_capable: 1
pn_state: 5
pn_securityschema: a:1:{s:11:"Pages::Page";s:18:"Page name::Page ID";}

El resto de campos déjalos vacios
copia Pages en la carpeta módulos
ve y regenera la lista de módulos, a ver si Pages aparece con el ícono de actualizar
entonces querrá decir que está listo para importar las tablas de Sections

Suerte! wink


Mateo Tibaquira
-Mis principios... son mis fines-
llobarret
avatar
Posteador de Bronce
Posteador de Bronce
Mensajes: 372

Enviado:
31.jul 2008 - 15:20

Lo probaré a ver como sale y os comento como ha salido todo.

Muchas gracias.


Pesca Y Pescar, tu Web de pesca deportiva en aguas dulces y en el mar
llobarret
avatar
Posteador de Bronce
Posteador de Bronce
Mensajes: 372

Enviado:
31.jul 2008 - 19:31

Hola

He seguido los pasos que me has dicho y todo iva bien (me ha salido el aviso de nueva ver sion de pages), pero cuando he pinchado en actualizar me sale este error:

Unknown column 'pn_secid' in 'field list'
SELECT pn_pageid, pn_secid FROM nuke_pages

Fatal error: Call to a member function MoveNext() on a non-object in /home/xxxxxx/public_html/modules/Pages/pninit.php on line 153


Ni idea de a que es debido.

Saludos


Pesca Y Pescar, tu Web de pesca deportiva en aguas dulces y en el mar
nestormateo
avatar
Administrador
Administrador
Mensajes: 1423

Enviado:
31.jul 2008 - 20:07

Ups,
dime qué campos tiene tu tabla nuke_pages después del error
y los campos de la nuke_seccont de la 0.764...


Mateo Tibaquira
-Mis principios... son mis fines-
llobarret
avatar
Posteador de Bronce
Posteador de Bronce
Mensajes: 372

Enviado:
31.jul 2008 - 20:15

Esta es la estructura:

Pulsa para ver la foto en grande
Pincha aquí, para ampliar la imagen



Pesca Y Pescar, tu Web de pesca deportiva en aguas dulces y en el mar
llobarret
avatar
Posteador de Bronce
Posteador de Bronce
Mensajes: 372

Enviado:
1.ago 2008 - 01:48

Perdona que no te las pasara antes:

Pulsa para ver la foto en grande
Pincha aquí, para ampliar la imagen

Estructura de la tabla: nuke_seccont 0.764


Pulsa para ver la foto en grande
Pincha aquí, para ampliar la imagen

Estructura de la tabla: nuke_sections 764



Saludos



editado por: llobarret, 01 Ago, 2008 - 02:49


Pesca Y Pescar, tu Web de pesca deportiva en aguas dulces y en el mar
nestormateo
avatar
Administrador
Administrador
Mensajes: 1423

Enviado:
1.ago 2008 - 17:47

Prueba esto:
En la línea 48 del pninit.php está este código:
Código
  1. // update table
  2.     if (!DBUtil::changeTable('pages')) {
  3.         return false;
  4.     }


inserta este nuevo antes de ese:
Código
  1. if (in_array($oldversion, array(1.0, 2.0, 2.1))) {
  2.         $pntables =& pnDBGetTables();
  3.         $pntables['pages_column']['secid']     = 'pn_secid';
  4.         $pntables['pages_column_def']['secid'] = "I NOTNULL DEFAULT '0'";
  5.     }
  6.  
  7.     // update table
  8.     if (!DBUtil::changeTable('pages')) {
  9.         return false;
  10.     }


como que se come la columna secid antes de migrar la información...
jejeje, sime si te funciona para añadir esto al módulo oficialmente wink


Mateo Tibaquira
-Mis principios... son mis fines-
llobarret
avatar
Posteador de Bronce
Posteador de Bronce
Mensajes: 372

Enviado:
1.ago 2008 - 22:12

A ver, me sale el mismo error:

Unknown column 'pn_secid' in 'field list'
SELECT pn_pageid, pn_secid FROM nuke_pages

Fatal error: Call to a member function MoveNext() on a non-object in /home/xxxxxx/public_html/modules/Pages/pninit.php on line 155


Estas son las lines 155 y las tres siguientes (despues de añadir el codigo del post anterior en el pninit.php):

Código
  1. for (; !$result->EOF; $result->MoveNext()) {
  2.         $pages[] = array('pageid' => $result->fields[0],
  3.                          '__CATEGORIES__' => array('Main' => $categorymap[$result->fields[1]]),
  4.                          '__META__' => array('module' => 'Pages'));


Saludos


Pesca Y Pescar, tu Web de pesca deportiva en aguas dulces y en el mar
llobarret
avatar
Posteador de Bronce
Posteador de Bronce
Mensajes: 372

Enviado:
1.ago 2008 - 22:21

Codigo del pninit.php del modulo Pages original:

Código
  1. <?php
  2. /**
  3. * Zikula Application Framework
  4. *
  5. * @copyright (c) 2001, Zikula Development Team
  6. * @link http://www.zikula.org
  7. * @version $Id: pninit.php 24342 2008-06-06 12:03:14Z markwest $
  8. * @license GNU/GPL - http://www.gnu.org/copyleft/gpl.html
  9. * @package Zikula_Value_Addons
  10. * @subpackage Pages
  11. */
  12.  
  13. /**
  14. * init pages module
  15. */
  16. function pages_init()
  17. {
  18.     // create table
  19.     if (!DBUtil::createTable('pages')) {
  20.         return false;
  21.     }
  22.  
  23.     // create our default category
  24.     if (!_pages_createdefaultcategory()) {
  25.         return LogUtil::registerError (_CREATEFAILED);
  26.     }
  27.  
  28.     // Set default pages per page
  29.     pnModSetVar('Pages', 'itemsperpage', 25);
  30.     pnModSetVar('Pages', 'enablecategorization', true);
  31.     pnModSetVar('Pages', 'addcategorytitletopermalink', true);
  32.  
  33.     // Initialisation successful
  34.     return true;
  35. }
  36.  
  37. /**
  38. * upgrade the pages module
  39. */
  40. function pages_upgrade($oldversion)
  41. {
  42.     // rename table if upgrading from an earlier version
  43.     if (in_array(DBUtil::getLimitedTablename('seccont'), DBUtil::MetaTables())) {
  44.         DBUtil::renameTable('seccont', 'pages');
  45.         DBUtil::renameColumn('pages', 'pn_artid', 'pageid');
  46.     }
  47.  
  48.     // update table
  49.     if (!DBUtil::changeTable('pages')) {
  50.         return false;
  51.     }
  52.  
  53.     switch ($oldversion) {
  54.         // 1.0 shipped with .7x
  55.         case 1.0:
  56.             // populate permalinks for existing content
  57.             $tables = pnDBGetTables();
  58.             $shorturlsep = pnConfigGetVar('shorturlsseparator');           
  59.             $sql  = "UPDATE $tables[pages] SET pn_urltitle = REPLACE(pn_title, ' ', '{$shorturlsep}')";
  60.             if (!DBUtil::executeSQL($sql)) {
  61.                 return LogUtil::registerError (_UPDATETABLEFAILED);
  62.             }
  63.             pnModSetVar('Pages', 'itemsperpage', 25);
  64.             return pages_upgrade(2.0);
  65.         case 2.0:
  66.             return pages_upgrade(2.1);
  67.         case 2.1:
  68.             pnModSetVar('Pages', 'enablecategorization', true);
  69.             pnModSetVar('Pages', 'addcategorytitletopermalink', true);
  70.             pnModDBInfoLoad('Pages', 'Pages', true);
  71.             if (!_pages_migratecategories()) {
  72.                 return LogUtil::registerError (_UPDATEFAILED);
  73.             }
  74.             break;
  75.     }
  76.     // Update successful
  77.     return true;
  78. }
  79.  
  80. /**
  81. * delete the pages module
  82. */
  83. function pages_delete()
  84. {
  85.     // drop table
  86.     if (!DBUtil::dropTable('pages')) {
  87.         return false;
  88.     }
  89.  
  90.     // Delete any module variables
  91.     pnModDelVar('Pages');
  92.  
  93.     // Delete entries from category registry
  94.     pnModDBInfoLoad ('Categories');
  95.     Loader::loadArrayClassFromModule('Categories', 'CategoryRegistry');
  96.     $registry = new PNCategoryRegistryArray();
  97.     $registry->deleteWhere ('crg_modname=\'Pages\'');
  98.  
  99.     // Deletion successful
  100.     return true;
  101. }
  102.  
  103. /**
  104. * migrate old local categories to the categories module
  105. */
  106. function _pages_migratecategories()
  107. {
  108.     // load the admin language file
  109.     // pull all data from the old table
  110.     $prefix = pnConfigGetVar('prefix');
  111.     $sql = "SELECT pn_secname, pn_image, pn_secid FROM {$prefix}_sections";
  112.     $result = DBUtil::executeSQL($sql);
  113.     $categories = array();
  114.     for (; !$result->EOF; $result->MoveNext()) {
  115.         $categories[] = $result->fields;
  116.     }
  117.  
  118.     // load necessary classes
  119.     Loader::loadClass('CategoryUtil');
  120.     Loader::loadClassFromModule('Categories', 'Category');
  121.     Loader::loadClassFromModule('Categories', 'CategoryRegistry');
  122.  
  123.     // get the language file
  124.     $lang = pnUserGetLang();
  125.  
  126.     // create root category and entry in the categories registry
  127.     _pages_createdefaultcategory('/__SYSTEM__/Modules/Pages');
  128.  
  129.     // get the category path for which we're going to insert our upgraded categories
  130.     $rootcat = CategoryUtil::getCategoryByPath('/__SYSTEM__/Modules/Pages');
  131.  
  132.     // migrate our categories
  133.     $categorymap = array();
  134.     foreach ($categories as $category) {
  135.         $cat = new PNCategory ();
  136.         $cat->setDataField('parent_id', $rootcat['id']);
  137.         $cat->setDataField('name', $category[0]);
  138.         $cat->setDataField('display_name', array($lang => $category[0]));
  139.         $cat->setDataField('display_desc', array($lang => $category[0]));
  140.         $cat->setDataField('data1', $category[1]);
  141.         if (!$cat->validate('admin')) {
  142.             return false;
  143.         }
  144.         $cat->insert();
  145.         $cat->update();
  146.         $categorymap[$category[2]] = $cat->getDataField('id');
  147.     }
  148.  
  149.     // migrate page category assignments
  150.     $sql = "SELECT pn_pageid, pn_secid FROM {$prefix}_pages";
  151.     $result = DBUtil::executeSQL($sql);
  152.     $pages = array();
  153.     for (; !$result->EOF; $result->MoveNext()) {
  154.         $pages[] = array('pageid' => $result->fields[0],
  155.                          '__CATEGORIES__' => array('Main' => $categorymap[$result->fields[1]]),
  156.                          '__META__' => array('module' => 'Pages'));
  157.     }
  158.     foreach ($pages as $page) {
  159.         if (!DBUtil::updateObject($page, 'pages', '', 'pageid')) {
  160.             return LogUtil::registerError (_UPDATEFAILED);
  161.         }
  162.     }
  163.  
  164.     // drop old table
  165.     DBUtil::dropTable('sections');
  166.  
  167.     // finally drop the secid column
  168.     DBUtil::dropColumn('pages', 'pn_secid');
  169.  
  170.     return true;
  171. }
  172.  
  173. function _pages_createdefaultcategory($regpath = '/__SYSTEM__/Modules/Global')
  174. {
  175.     // load necessary classes
  176.     Loader::loadClass('CategoryUtil');
  177.     Loader::loadClassFromModule('Categories', 'Category');
  178.     Loader::loadClassFromModule('Categories', 'CategoryRegistry');
  179.  
  180.     // get the language file
  181.     $lang = pnUserGetLang();
  182.  
  183.     // get the category path for which we're going to insert our place holder category
  184.     $rootcat = CategoryUtil::getCategoryByPath('/__SYSTEM__/Modules');
  185.     $pCat    = CategoryUtil::getCategoryByPath('/__SYSTEM__/Modules/Pages');
  186.  
  187.     if (!$pCat) {
  188.         // create placeholder for all our migrated categories
  189.         $cat = new PNCategory ();
  190.         $cat->setDataField('parent_id', $rootcat['id']);
  191.         $cat->setDataField('name', 'Pages');
  192.         $cat->setDataField('display_name', array($lang => _PAGES_NAME));
  193.         $cat->setDataField('display_desc', array($lang => _PAGES_CATEGORY_DESCRIPTION));
  194.         if (!$cat->validate('admin')) {
  195.             return false;
  196.         }
  197.         $cat->insert();
  198.         $cat->update();
  199.     }
  200.  
  201.     // get the category path for which we're going to insert our upgraded categories
  202.     $rootcat = CategoryUtil::getCategoryByPath($regpath);
  203.     if ($rootcat) {
  204.         // create an entry in the categories registry
  205.         $registry = new PNCategoryRegistry();
  206.         $registry->setDataField('modname', 'Pages');
  207.         $registry->setDataField('table', 'pages');
  208.         $registry->setDataField('property', 'Main');
  209.         $registry->setDataField('category_id', $rootcat['id']);
  210.         $registry->insert();
  211.     } else {
  212.         return false;
  213.     }
  214.  
  215.     return true;
  216. }


Codigo del pninit.php del modulo Pages con las lineas añadidas:

Código
  1. <?php
  2. /**
  3. * Zikula Application Framework
  4. *
  5. * @copyright (c) 2001, Zikula Development Team
  6. * @link http://www.zikula.org
  7. * @version $Id: pninit.php 24342 2008-06-06 12:03:14Z markwest $
  8. * @license GNU/GPL - http://www.gnu.org/copyleft/gpl.html
  9. * @package Zikula_Value_Addons
  10. * @subpackage Pages
  11. */
  12.  
  13. /**
  14. * init pages module
  15. */
  16. function pages_init()
  17. {
  18.     // create table
  19.     if (!DBUtil::createTable('pages')) {
  20.         return false;
  21.     }
  22.  
  23.     // create our default category
  24.     if (!_pages_createdefaultcategory()) {
  25.         return LogUtil::registerError (_CREATEFAILED);
  26.     }
  27.  
  28.     // Set default pages per page
  29.     pnModSetVar('Pages', 'itemsperpage', 25);
  30.     pnModSetVar('Pages', 'enablecategorization', true);
  31.     pnModSetVar('Pages', 'addcategorytitletopermalink', true);
  32.  
  33.     // Initialisation successful
  34.     return true;
  35. }
  36.  
  37. /**
  38. * upgrade the pages module
  39. */
  40. function pages_upgrade($oldversion)
  41. {
  42.     // rename table if upgrading from an earlier version
  43.     if (in_array(DBUtil::getLimitedTablename('seccont'), DBUtil::MetaTables())) {
  44.         DBUtil::renameTable('seccont', 'pages');
  45.         DBUtil::renameColumn('pages', 'pn_artid', 'pageid');
  46.     }
  47.  
  48.     if (in_array($oldversion, array(1.0, 2.0,2.1))) {$pntables =& pnDBGetTables();$pntables['pages_column']['secid'] ='pn_secid';$pntables['pages_column_def']['secid'] ="I NOTNULL DEFAULT '0'";} // update tableif (!DBUtil::changeTable('pages')) {return false;}
  49.    
  50.     // update table
  51.     if (!DBUtil::changeTable('pages')) {
  52.         return false;
  53.     }
  54.  
  55.     switch ($oldversion) {
  56.         // 1.0 shipped with .7x
  57.         case 1.0:
  58.             // populate permalinks for existing content
  59.             $tables = pnDBGetTables();
  60.             $shorturlsep = pnConfigGetVar('shorturlsseparator');           
  61.             $sql  = "UPDATE $tables[pages] SET pn_urltitle = REPLACE(pn_title, ' ', '{$shorturlsep}')";
  62.             if (!DBUtil::executeSQL($sql)) {
  63.                 return LogUtil::registerError (_UPDATETABLEFAILED);
  64.             }
  65.             pnModSetVar('Pages', 'itemsperpage', 25);
  66.             return pages_upgrade(2.0);
  67.         case 2.0:
  68.             return pages_upgrade(2.1);
  69.         case 2.1:
  70.             pnModSetVar('Pages', 'enablecategorization', true);
  71.             pnModSetVar('Pages', 'addcategorytitletopermalink', true);
  72.             pnModDBInfoLoad('Pages', 'Pages', true);
  73.             if (!_pages_migratecategories()) {
  74.                 return LogUtil::registerError (_UPDATEFAILED);
  75.             }
  76.             break;
  77.     }
  78.     // Update successful
  79.     return true;
  80. }
  81.  
  82. /**
  83. * delete the pages module
  84. */
  85. function pages_delete()
  86. {
  87.     // drop table
  88.     if (!DBUtil::dropTable('pages')) {
  89.         return false;
  90.     }
  91.  
  92.     // Delete any module variables
  93.     pnModDelVar('Pages');
  94.  
  95.     // Delete entries from category registry
  96.     pnModDBInfoLoad ('Categories');
  97.     Loader::loadArrayClassFromModule('Categories', 'CategoryRegistry');
  98.     $registry = new PNCategoryRegistryArray();
  99.     $registry->deleteWhere ('crg_modname=\'Pages\'');
  100.  
  101.     // Deletion successful
  102.     return true;
  103. }
  104.  
  105. /**
  106. * migrate old local categories to the categories module
  107. */
  108. function _pages_migratecategories()
  109. {
  110.     // load the admin language file
  111.     // pull all data from the old table
  112.     $prefix = pnConfigGetVar('prefix');
  113.     $sql = "SELECT pn_secname, pn_image, pn_secid FROM {$prefix}_sections";
  114.     $result = DBUtil::executeSQL($sql);
  115.     $categories = array();
  116.     for (; !$result->EOF; $result->MoveNext()) {
  117.         $categories[] = $result->fields;
  118.     }
  119.  
  120.     // load necessary classes
  121.     Loader::loadClass('CategoryUtil');
  122.     Loader::loadClassFromModule('Categories', 'Category');
  123.     Loader::loadClassFromModule('Categories', 'CategoryRegistry');
  124.  
  125.