creare nuovi customfield in modulo news via Frontend

La discussione sul CMS Made Simple in italiano.

Moderator: magallo

Post Reply
kdrummer
Forum Members
Forum Members
Posts: 19
Joined: Sun Feb 19, 2012 1:45 am

creare nuovi customfield in modulo news via Frontend

Post by kdrummer »

Premetto che sono mooolto novizio di Smarty, ma penso che si debba creare un UTD apposita per fare questo? o è possibile farlo in altro modo? ho provato a duplicare i div tramite javascript, ma duplica lo stesso customfield, e non ne crea uno nuovo nel database...

Ho bisogno di dare la possibilita agli utenti, di aggiungere nuovi campi dinamicamente, pre creare delle liste, e dar la possibilità di aggiungere risposte senza avere gia 300 field pronti... per esempio:

Ho campo custom filed in news chiamato "Risposta"
devo dare la possibilita tramite un pulsante di duplicare questo field, con le stesse proprietà ma con id e nome sequenziale, quindi "risposta2" "risposta3" ecc

so che dovrei agire sul database in "cms_module_news_fielddefs" giusto?
User avatar
protempore
Power Poster
Power Poster
Posts: 599
Joined: Mon Jan 14, 2008 9:08 pm

Re: creare nuovi customfield in modulo news via Frontend

Post by protempore »

permettimi la schiettezza...

tu vuoi fare una cosa che io reputo folle.

far interagire l'utente nella modifica del database è una pazzia.

;D
kdrummer
Forum Members
Forum Members
Posts: 19
Joined: Sun Feb 19, 2012 1:45 am

Re: creare nuovi customfield in modulo news via Frontend

Post by kdrummer »

permettimi la schiettezza...

tu vuoi fare una cosa che io reputo folle.

far interagire l'utente nella modifica del database è una pazzia.
Perche?? allora non ho capito nulla io... scusa, gia quando un'utente crea una news non sta agendo sul database??

allora:

ho trovato un'utd che farebbe al caso mio:

Code: Select all

global $gCms;$db = $gCms->getDb();
# Get username from the FEU trigger.
# You can get a list of parameters by:
# var_dump($params); exit; 
$name = $params['name'];

# Make sure this field def doesn't exist. Don't want a duplicate
$sql = "SELECT id FROM " . cms_db_prefix() . "module_news_fielddefs
WHERE name='$name'
LIMIT 1;";
$dbresult =& $db->Execute($sql);

if ($dbresult && $row=$dbresult->FetchRow()) {
return; # Field definition already exists. Abort!
}

# Field definition doesn't exist. Insert a new one
$sql = "INSERT INTO " . cms_db_prefix() . "module_news_fielddefs
(`name`, `type`, `max_length`, `create_date`, `modified_date`, `item_order`, `public`)
VALUES (?, ?, ?, ?, ?, ?, ?);";
$dbresult = $db->Execute(
$sql, array($name, 'textbox', 255, 0, 0, 1, 1)
);
# The example above is for a 'checkbox' field definition. To change,
# generate a couple of test definitions, then look at the table in
# phpMyAdmin to see how they look, then update the code.
ho provato a modificarla cosi:

Code: Select all

$var= '0';
$rad='prova';

global $gCms;$db = $gCms->getDb();

# Make sure this field def doesn't exist. Don't want a duplicate
$sql = "SELECT id FROM " . cms_db_prefix() . "module_news_fielddefs
WHERE name='$rad.$numb'
LIMIT 1;";
$dbresult =& $db->Execute($sql);

if ($dbresult && $row=$dbresult->FetchRow()) {
return; # Field definition already exists. Abort!
}

# Field definition doesn't exist. Insert a new one
$sql = "INSERT INTO " . cms_db_prefix() . "module_news_fielddefs
(`name`, `type`, `max_length`, `create_date`, `modified_date`, `item_order`, `public`)
VALUES (?, ?, ?, ?, ?, ?, ?);";
$dbresult = $db->Execute(
$sql, array($rad.(++$var), 'textbox', 40, 0, 0, 1, 1)
);
# The example above is for a 'checkbox' field definition. To change,
# generate a couple of test definitions, then look at the table in
# phpMyAdmin to see how they look, then update the code.


ma il risultato è che crea sempre un campo chaiamto "Prova1", e non verifica neanche se esiste gia... e lo ricrea sempre...
invece vorrei che risulti

Crea "prova1"
Se esiste gia
aumenta variabile 1=++1
crea "prova2"
crea "prova3"
crea "prova4"
ecc...
kdrummer
Forum Members
Forum Members
Posts: 19
Joined: Sun Feb 19, 2012 1:45 am

Re: creare nuovi customfield in modulo news via Frontend

Post by kdrummer »

add_custom_fileld.JPG
User avatar
protempore
Power Poster
Power Poster
Posts: 599
Joined: Mon Jan 14, 2008 9:08 pm

Re: creare nuovi customfield in modulo news via Frontend

Post by protempore »

kdrummer wrote: Perche?? allora non ho capito nulla io... scusa, gia quando un'utente crea una news non sta agendo sul database??
avevo capito che volevi modificare una tabella del DB...
c'è una bella differenza tra un SQL INSERT o SQL UPDATE e un SQL ALTER TABLE ADD COLUMN...

Aggiungere un record o modificarlo, non è la stessa cosa che modificare la struttura del DB...
User avatar
protempore
Power Poster
Power Poster
Posts: 599
Joined: Mon Jan 14, 2008 9:08 pm

Re: creare nuovi customfield in modulo news via Frontend

Post by protempore »

comunque continuo a non capire il senso di cosa vuoi fare...
Nello specifico l'aggiunta di nuovi customfields in News deve considerare la modifica sia della tabella "cms_module_news_fielddefs", sia della tabella "cms_module_news_fieldvals"...
in linea teorica... anche realizzando un UDT che crei i records nelle tabelle suddette... tu permetteresti all'utente di inserire un numero illimitato di customfields... e non so questo cosa possa significare da un punto di vista delle perrformances del modulo...
User avatar
protempore
Power Poster
Power Poster
Posts: 599
Joined: Mon Jan 14, 2008 9:08 pm

Re: creare nuovi customfield in modulo news via Frontend

Post by protempore »

kdrummer wrote: ma il risultato è che crea sempre un campo chaiamto "Prova1", e non verifica neanche se esiste gia... e lo ricrea sempre...
invece vorrei che risulti

Crea "prova1"
Se esiste gia
aumenta variabile 1=++1
crea "prova2"
crea "prova3"
crea "prova4"
ecc...
l'UDT che hai creato non può funzionare come vorresti...

una prima osservazione:
la variabile globale $gCms dalla 1.10 deve essere richiamata così:

Code: Select all

$gCms = cmsms();
nella select la variabile $numb non è dichiarata prima, quindi la ricerca risulta sul name "prova."... che non esiste e quindi lo script prosegue nell'insert...

se vuoi una ricerca sul name "prova1" devi settare la SELECT con

Code: Select all

$sql = "SELECT id FROM " . cms_db_prefix() . "module_news_fielddefs
WHERE name='$rad$var'
LIMIT 1;";
$dbresult =& $db->Execute($sql);
dove $var deve essere settato a 1 e non a 0 come nell'UDT
non deve esserci il punto tra le due variabili perché se no la stringa restituita nella SELECT risulterebbe "prova.1"
Post Reply

Return to “Italian - Italiano”