Back to top

Visualizza post

Questa sezione ti permette di visualizzare tutti i post inviati da questo utente. N.B: puoi vedere solo i post relativi alle aree dove hai l'accesso.


Topics - M_W_C

Pagine: [1] 2 3 4 ... 7
1
Sviluppo / Pulsante Paypal encrypted
« il: 06 Giu 2013, 11:54:25 »
dopo aver istanziato un client Soap col wsdl di PPal in sandbox, ho bisogno del pulsante crittato quindi di autenticarmi coi metodi delle api.
Per fare questo creo l'header soap RequesterCredentials al quale devo passare le credenziali.

negli esempi vengono valorizzate variabili dell'oggetto in questo modo:
$credentials->Credentials->Username = 'pippo';

Ovviamente è un errore perchè $credentials non esiste e dovrebbe essere creato al volo.
Sebbene php lo preveda non mi piace, non è pulito così potrei risolvere creando una stdclass...
..ma anche Credentials è un object e quindi dovrei creare una stdclass anche per lui...

ma non esiste un modo più pulito?
guardando le api non sembra esista un set...

2
Sicurezza / I fantasmi del passato
« il: 24 Mag 2013, 11:53:25 »
...potevo anche intitolare "non sempre se lo conosci lo eviti"...
Stavo guardando gli ultimi problemi che hanno riguardato Joomla 3.x e mi sono soffermato sulla vulnerabilità trovata in  /plugins/system/highlight/highlight.php

Mi fa molto specie la tempistica di reazione per la risoluzione del problema:
[-] Disclosure Timeline:
 [31/10/2012] - Vendor notified
 [08/11/2012] - Vendor asked for a proof of concept
 [08/11/2012] - Proof of concept provided to the vendor
 [04/02/2013] - Vendor update released
 [27/02/2013] - Public disclosure
.. 4 mesi... vabbè questa è un po' polemica.... e io non voglio essere polemico,... di più :) ... quello che non riesco a digerire sono le prime due righe.
Io ricevo una mail dove vengo avvisato (gentilmente e correttamente) di una vulnerabilità della mia app...
Non so cosa abbia inviato, mi immagino come minimo due righe esplicative con indicazione dello script incriminato... solo che 8 giorni dopo gli torna un'altra mail che ufficialmente dice: "Vendor asked for a proof of concept" , tra le righe si legge "... non ho capito e non so riprodurla".
Credo in giornata è stato inviato il poc di exploit... tre mesi dopo arriva la patch.

La public disclosure è questa: http://www.exploit-db.com/exploits/24551/

Credo che l'impatto di una vulnerabilità non debba essere giudicato solo in base al "danno" procurabile sfruttandola ma anche in base alla sua riproducibilità da parte di uno svariato pubblico di pseudo-hackers.
Per meglio dire, ci sono vulnerabilità che pur essendo tali e magari con un impatto altissimo sono in realtà riproducibili da un ridottissimo numero di "esperti di sicurezza", magari perchè vengono usati vettori non esclusivi dell'applicazioni (complicità con linguaggi o sw server) ... quelle esistono tutt'oggi ma trovarvi il sito iniettato ha la stessa probabilità del 13 al totocalcio.

Questa è tutta un altra cosa.... e non solo era nota, aveva anche vinto un premio! :)

nel 2009, Esser, pubblica una serie di poc intitolandoli POC2009-ShockingNewsInPHPExploitation , trovate il pdf in rete.
Chiarissimo, inequivocabile, comprensibile anche per un pischelleto.
Si evince che con la deserializzazione si incorre facilmente in problemi non da poco, sia perchè causano crash del server sia perchè è un ottimo vettore per "infilarsi" in un oggetto, superando incapsulazioni e casting.
..Ma interesse di Esser non era certo bucarti il sito in php... forse era attratto di più dal primo problema.. su cui è andato a fare  una bellissima disclosure vincendo il "Month of Php Security" del 2010.
Quì avevo fatto un articolo:
http://www.spazioalchimia.it/laboratorio/38-ps-2010-month-of-php-security

A noi invece basta fermarci al problema nei nostri script quando usiamo unserialize()
Non è difficile da trovare, anche un bimbo riesce con un grep a trovare tutte le volte che viene usata nei files e se tanto mi da tanto, spesso, è usata male.
Il problema causato in Joomla è stato proprio un Object injection manipolando una stringa serializzata, ma non è l'unico modo.
Chi ha scoperto questa vulnerabilita, in Joomla <3.0.3 e <2.5.11, ha anche pubblicato sul portale OWASP un articolo con suoi poc https://www.owasp.org/index.php/PHP_Object_Injection

3
Sviluppo / Giocando con Twitter
« il: 20 Mag 2013, 20:49:20 »
esistono "mille cose" per integrare twitter nelle nostre pagine ma in buona sostanza quello che cambia è il vestito.

Volendo fare un modulo per visualizzare il nostro profilo e contenuto twitter basta in realtà una funzione:
Codice: [Seleziona]
$nostro_profilo=json_decode(file_get_contents($url),TRUE);

$url è quello alle api di twitter:
Codice: [Seleziona]
$url = 'http://api.twitter.com/1/statuses/user_timeline.json?screen_name='.$username.'&count='.$count;
$username il vostro username twitter e count il numero di tweets da mostrare.

invece di file_get_contents() potete usare una richiesta ajax o una richiesta Curl, non cambia nulla.

usando json_decode, il contenuto di ritorno sarà un array che non si limita al solo testo del o dei tweets ma vi permetterà praticamente di "embeddare" il vostro intero profilo:
Codice: [Seleziona]
Array
(
    [0] => Array
        (
            [created_at] => Fri Dec 09 12:59:56 +0000 2011
            [id] =>
            [id_str] =>
            [text] =>
            [source] =>
            [truncated] =>
            [in_reply_to_status_id] =>
            [in_reply_to_status_id_str] =>
            [in_reply_to_user_id] =>
            [in_reply_to_user_id_str] =>
            [in_reply_to_screen_name] =>
            [user] => Array
                (
                    [id] =>
                    [id_str] =>
                    [name] => Spazioalchimia
                    [screen_name] => Spazioalchimia
                    [location] =>
                    [url] => http://www.spazioalchimia.it
                    [description] =>
                    [protected] =>
                    [followers_count] => 2
                    [friends_count] => 14
                    [listed_count] => 0
                    [created_at] => Fri Jun 10 12:32:42 +0000 2011
                    [favourites_count] => 0
                    [utc_offset] => 3600
                    [time_zone] => Rome
                    [geo_enabled] => 1
                    [verified] =>
                    [statuses_count] => 9
                    [lang] => it
                    [contributors_enabled] =>
                    [is_translator] =>
                    [profile_background_color] => C0DEED
                    [profile_background_image_url] => http://a0.twimg.com/images/themes/theme1/cc.png
                    [profile_background_image_url_https] => https://si0.twimg.com/images/themes/theme1/cc.png
                    [profile_background_tile] =>
                    [profile_image_url] => http://a0.twimg.com/profile_images/1670032417/ccc.png
                    [profile_image_url_https] => https://si0.twimg.com/profile_images/1670032417/ccl.png
                    [profile_link_color] => 0084B4
                    [profile_sidebar_border_color] => C0DEED
                    [profile_sidebar_fill_color] => DDEEF6
                    [profile_text_color] => 333333
                    [profile_use_background_image] => 1
                    [default_profile] => 1
                    [default_profile_image] =>
                    [following] =>
                    [follow_request_sent] =>
                    [notifications] =>
                )

            [geo] =>
            [coordinates] =>
            [place] =>
            [contributors] =>
            [retweet_count] => 0
            [favorite_count] => 0
            [favorited] =>
            [retweeted] =>
            [lang] => it
        )

)

non c'è da spiegare molto, le key degli array sono abbastanza "parlanti"

4
Joomla! 3.0 e 3.1 / mod_feed
« il: 19 Mag 2013, 20:23:07 »
manca un div di chiusura alla fine del template

5
Sviluppo / Il modulo antipatico
« il: 16 Mag 2013, 15:50:58 »
Se c'è un modulo del core di joomla che mi ha sempre suscitato antipatie è l'archivio... mai come mi serve.
Mi sono sempre detto... lo cambieranno prima o poi... visualizza l'anno, ... cerca... ma che giro!
Voglio gli anni, i mesi, e i contenuti... voglio che i motori non li perdano d'occhio...
Così l'ho modificato, è banale. Se lo volete fare magari copiate (duplicate) il modulo archivio nnon fatelo sullo stesso.
Sostanzialmente l'entry point rimane identico, basta aggiungere le librerie jquery e l'inizializzazione dell'accordion
Codice: [Seleziona]
$doc = JFactory::getDocument();
$doc->addScript("http://code.jquery.com/jquery-1.9.1.js");
$doc->addScript("http://code.jquery.com/ui/1.10.3/jquery-ui.js");
$doc->addScriptDeclaration('
    $(document).ready(function() {
    $("#accordion,#accordion1").accordion({ heightStyle: \'content\' });
   
    });
$doc->addStyleDeclaration('
    #accordion h5, #accordion h4{ cursor:pointer }
');
');

lascio sempre lavoro da fare.... :)  se volete mettere in locale gli script è meglio e anche il loro caricamento può essere un parametro configurabile... magari già ce li avete.
Un altra cosa da notare è
$("#accordion,#accordion1").accordion({ heightStyle: \'content\' });

"#accordion,#accordion1" permette ( un po' sporco) il "nested" di accordion (anche se il debug dice che non è bilanciato) che ritrovate poi nel template

heightStyle: \'content\' } Serve a dimensionare automaticamente al contenuto... per evitare il dimensionamento automatico al massimo contentuto
...poi

l'helper... beh quello un po' cambia ma nemmeno tanto, secondo me si era già complicato la vita con quella query...
Codice: [Seleziona]
public static function getList(&$params){
        //get database
        $db = JFactory::getDbo();
        $query = $db->getQuery(true);
        $query->select(
                $query->year($db->quoteName('a.created')).' AS created_year,'.
                $query->month($db->quoteName('a.created')).' AS created_month,
                a.title, a.id, a.created, c.title AS category');   
        $query->from('#__content AS a');
        $query->join('LEFT', '#__categories AS c ON c.id = a.catid');
        $query->where('a.state = 2 AND a.checked_out = 0');
        $app = JFactory::getApplication();
        if ($app->getLanguageFilter()){
            $query->where('language in (' . $db->quote(JFactory::getLanguage()->getTag()) . ',' . $db->quote('*') . ')');
        }
        $query->order('a.created');           
        $db->setQuery($query);
        $rows = (array) $db->loadObjectList();
        $lists = array();
        if($rows){
            foreach ($rows as $row){
                $lists[$row->created_year][JHTML::_('date', $row->created, 'F')][] = array(
                    'cat' => $row->category,
                    'link' => JRoute::_('index.php?option=com_content&view=article&id='.$row->id),
                    'text' => $row->title
                    );
            }
        }
        return $lists;
    }


..non c'è molto da dire... non ho la vista "archive" ma quella diretta all'articolo.
Se volete complicarvi la vita (poco consigliabile) e andare a creare un ulteriore accordion, magari sulla categoria, basta aggiungere un elemento all'array prima di quello vuoto
 $lists[$row->created_year][JHTML::_('date', $row->created, 'F')][] = array(

e ovviamente aggiungere il #accordion all'inizializzazione (entry point) e la foreach nel template per visualizzarlo

ora il template default.php
Codice: [Seleziona]
<?php if (!empty($list)) :?>

    <div id="accordion" class="accordion">
       
    <?php foreach ($list as $y=>$item) : ?>
       
        <h4><?php echo $y?></h4>
       
        <div class="accordion-inner">
            <div id="accordion1">
        <?php foreach ($item as $m=>$arts) : ?>
                    <h5><span class="flex-subpanel"><?php echo $m?></span>
<span class="flex-count">(<?php echo count($arts);?>)</span></h5>
                    <div class="accordion-body">
            <?php foreach ($arts as $art) : ?>
                    <p class="flex-link"><a href="<?php echo $art['link']; ?>"><?php echo $art['text']; ?>[/url]</p>
            <?php endforeach; ?>
                    </div>
        <?php endforeach; ?>
            </div>
        </div>

    <?php endforeach; ?>
       
    </div>

<?php endif; ?>


ATTENZIONE: non è  sef compatibile, sarebbe da implementare, quindi consideratelo come poc di codice o usatelo senza problemi se non usate il rewrite dell'url

6
sono abituato a togliere ciò che non mi serve e il più delle volte tolgo i templates standard... perchè se aggiorno automaticamente me li reinstalla?

7
Segnalazioni lingua Joomla / com_content
« il: 11 Mag 2013, 19:14:34 »
non l'ho trovata nella lingua COM_CONTENT_FIELD_SHOW_TAGS_LABEL e DESC

admin -> gest articoli -> opz di visualizzazione

e anche JTAG nei dettagli a dx

e selezione JTAG nei filtri a sx...

8
Sviluppo / Accedere a registro nel db
« il: 25 Apr 2013, 19:29:44 »
Ho bisogno di fare una query select su un campo contenente un valore serializzato (JRegistry) per estrarre (filtrare) dove un elemento di quel registro = X

come posso fare senza uccidere il database?

9
Sviluppo / [3.0]Boostrap Sponsors Slider
« il: 20 Apr 2013, 22:32:24 »
Volevo fare uno slider per gli sponsors usando il bootstrap.. si poteva fare in molti modi, io ho fatto un modulino.
La particolarità è di poter gestire un'esposizione di più immagini.
La base è quella che trovate anche nei dati di esempio di joomla proprio in home.
Viene creata una cartella sponsors in "media" dove caricare le immagini o anche una sola... basta configurare il modulo.

boh fatene come sempre ciò che volete, anche perchè da lavorarci ce n'è a volontà  ;)

... a proposito, bisognerebbe far partire lo slide al caricamento e non dopo un click...bisognerebbe gestire i parametri dello script da aggiungere nell'entry point ->addScriptDeclaration();

se ne avete uno che funziona...

10
Esperimenti e test / [3.x] IDS
« il: 12 Apr 2013, 17:02:09 »
Guardando un po' come è fatto il rinomato sentinel di wp ho scritto un plugin che ne ricalca la funzione principale ovvero quella di trovare e fermare iniezioni di codice malevolo.
Se qualcuno lo vuol testare...
PS Testare significa:
1) sapere ciò che si fa
2) in + sapendo ciò che si fa non usarlo in siti di produzione

Se mi riportate i problemi o i suggerimenti sarò lieto di portare avanti qs cosa
Le tabelle sono da creare manualmente con l'sql inserito

11
Sviluppo / onChange su select J3.0.x
« il: 11 Mar 2013, 19:56:07 »
Purtroppo la mia asineria con js non mi permette di risolvere il problema che credo sia quasi sicuramente di conflitto col bootstrap.
con mootools dopo aver controllato gli errori in firebug non ho errori, con Jquery mi dice che passo un type = null
Potete tranquillamente provare, basta aggiungere nell'edit di qualsiasi form che ha una select (per JQuery bisogna adattare lo script a Jquery)
Codice: [Seleziona]
JFactory::getDocument()->addScriptDeclaration('
   
window.addEvent(\'domready\', function(){

  $(\'jform_NOMEDELCAMPO\').addEvent(\'change\', function(event){
   
    alert(1);
  });
 
});

');

in joomla 2.5.x funziona... ho guardato e hanno lo stesso mootools, stessi plugins...

12
Sviluppo / J3.0 PDF in custom component
« il: 28 Feb 2013, 11:32:14 »
.... more quick than dirty! :)

Poi affinatelo voi, prendetelo come un'idea per chi non sa come fare.
Io l'ho fatto ad un amico in amministrazione ma non dovrebbe essere diverso farlo anche lato site...

Prima cosa scaricare una classe per pdf, io ho usato TCPDF.
La cartella che scaricate contiene un sacco di roba inutile al momento della messa online ma quello lo vedete sul sito dello sviluppatore della classe, così come la sua conf e struttura che nulla ha a che fare con joomla e queste due righe di tutorial.
Io solitamente uso una cartella "assets" all'interno della cartella del mio componente, quindi com_xxxx/assets/tcpdf/

Nella vista lista (s) del componente, nel template, creiamo il pulsante per il bootstrap
Codice: [Seleziona]
$html = '<a href="'.JRoute::_('index.php?option=com_xxxx&task=xxxxs.printpdf&tmpl=component&xid='.$item->id).'" class="btn btn-micro hasTooltip active" title="'.JText::_('PDF').'"><i class="icon-print"></i></a>';
Il bottone chiama una task "printpdf" del controller (s) che andiamo a scrivere:
Codice: [Seleziona]
public function printpdf(){
       
        $xid = JFactory::getApplication()->input->get('xid', 0, 'int');
        // Get the model
        $model = $this->getModel();
        $model->makePDF($xid);
        // Close the application
        JFactory::getApplication()->close();
       
    }
ATTENZIONE: se guardate in alto al controller se non passo il model, di default il model è quello dell'item non della list come uno si aspetterebbe... è un modo di joomla per lavorare con entrambi i model...

quindi il metodo makePDF($xid); andrà implementato nel model item... infatti è un item che a noi serve recuperare dal db,

Codice: [Seleziona]
public function makePDF($pk){
     
        $pdfdata = $this->getItem($pk);
       
        require_once JPATH_COMPONENT.'/assets/tcpdf/config/lang/eng.php';
        require_once JPATH_COMPONENT.'/assets/tcpdf/tcpdf.php';

//----------------------------------------------------------------------------

ESEMPIO TCPDF QUI - EXAMPLE TCPDF FILE HERE

or

require_once JPATH_COMPONENT.'/helpers/Tuo_Helper.php';

//----------------------------------------------------------------------------
}

... ecco, la parte più dirty è questa perchè non ho voglia di fare altro ma in quel punto potete mettere una metodo statico che lascia più pulito il codice del model e fare tutto nel metodo statico (passando ovviamente i dati dell'item

Aprite un file qualsiasi..io ho usato il 48... e copiate il codice dove indicato, TRALASCIANDO ovviamente il tag php e i due include che ho indicato gia sopra (occhio alla path)

Basta, funziona ora abbellimenti, miglioramenti ... roba vostra ;)

13
OMG! :)  In marzo a Milano, oltre la primavera, è tempo di Security Summit. Così per non arrivare sempre all'angosciante ultimo momento mi sono messo a leggere il programme e iniziare a programmare gli eventi a cui assistere; così sono arrivato a questo "incontro" condotto da Alessio (mayhem)  Pennasilico.
https://www.securitysummit.it/eventi/view/30

Qualcuno può aver avuto occasione di vederlo ad una puntata delle iene dove spiegava come avvenivano i furti di identità, anche con esempi pratici. E' una persona molto simpatica e preparata che avevo avuto occasione di apprezzare assistendo a vari suoi interventi sul tema della sicurezza e che ora, leggendo questa breve presentazione, scopro avere questa idea in comune: ciò che si vede è ciò che non è.
Citazione
Abstract: La sicurezza informatica è diventata così "trendy" da occupare spazi sempre più importanti in serie TV e film Hollywoodiani. Purtroppo questo si traduce in convinzioni ed aspettative fuorvianti, quando non totalmente erronee, da parte del pubblico non tecnico. Quale sede migliore del Security Summit per lamentarsi, con chi comprende l'argomento e la gravità di quanto accade?
Vedremo qualche vero attacco e come esso sia spesso affrontabilissimo, o poco mitigabile in altri casi, da parte di una azienda reale che non ha consulenti informatici con la pistola e che sanno schivare i proiettili. Cercheremo poi di comprendere quanto un attacco possa essere comprensibile ed investigabile in un contesto lavorativo reale in Italia, rispetto a quanto viene spesso rappresentato. Ingresso sconsigliato ai cyborg ed a chi proviene dal futuro.

PS: vi ricordo che il Security Summit è gratuito basta registrarsi e molti seminari sono alla portata di chiunque si occupi di informatica... non si parla di codice ma di "principi".

14
Sviluppo / vista senza CRUD
« il: 15 Feb 2013, 16:09:50 »
Siccome ragionare su basi non comuni è complicato e postare codice spesso è inutile uso come esempio il com_weblinks, lato ADMIN.

Supponiamo di voler una vista dove non cambi solo il template ma anche i dati che lo costruiscono esempio "weblinko"
Mi occorre un controller weblinko, un model weblinko e la view weblinko.
Non voglio il proxi a getmodel perchè il model mi serve come dico io.
Ho fatto quindi un display() nel controller/weblinko.
Forzando nel controller principale la vista di default a weblinko invece che weblinks sembra non bastare e non usa il mio weblinko/display()... così sono andato nell'entry point e ho forzato la task ovvero, brutalmente per testare, se non c'è task la task è weblinko.display
Ma non ci si infila in quel dannato display....

15
Joomla! 3.0 e 3.1 / Icone Isis
« il: 11 Feb 2013, 22:56:33 »
Esiste un elenco dei nomi delle icone lato admin di isis?

16
quando si cancella la cache manca la traduzione

Messaggio
JLIB_INSTALLER_PURGED_UPDATES

17
Sviluppo / J3.0 e view raw
« il: 06 Feb 2013, 12:08:44 »
Nella 3.0 la view raw è abbandonata.
Effettivamente per le chiamate json è molto meglio così... ma se io ho bisogno di avere una vista differente di quella che restituisce il cms, anche nel doctype... come faccio?

18
Sviluppo / La moltiplicazione dei fields
« il: 04 Feb 2013, 22:44:13 »
...più che altro per chiedere un parere a chi già si è dedicato a qs implementazione, e cmq lo script funziona in mancanza di meglio
Lato admin J3.0
devo inserire input ma non so quanti...1 ..10...1000?
poi come li chiamo ... nome 1 nome 2 ... bah
.... JQuery!

creo un custom input field:
Codice: [Seleziona]
class JFormFieldNamesinput extends JFormField{

    protected $type = 'Namesinput';

    protected function getInput(){
         
        $out = '';
        isset($this->element['class']) && $this->element['class'] != '' ?
        $class = htmlspecialchars($this->element['class']) :
        $class = '';
       
        isset($this->element['size']) && $this->element['size'] ?
        $size =  (int)$this->element['size'] :
        $size = '';
       
        isset($this->element['placeholder']) && $this->element['placeholder'] != '' ?
        $placeholder = htmlspecialchars($this->element['placeholder']) :
        $placeholder = '';
   
        $btnremove='<a class="btn" href="#" id="remName"><i class="icon-cancel"></i></a>';
       
        // bottone add
        $out .= '<a class="btn" href="#" id="addName"><i class="icon-save-new"></i> '.JText::_(' aggiungi un nome').'</a>';
        // input field
        $inputfld = '<input type="text" id="'.$this->id.'" size="20" name="'.$this->name.'[]" value="" placeholder="'.$placeholder.'" />';
        foreach($this->value as $k=>$val){
            $out .= '<div id="pnames">
                        <p><input type="text" id="'.$this->id.'" size="20" name="'.$this->name.'[]" value="'.$val.'" placeholder="'.$placeholder.'" />';
            if($k >= 1) $out .= $btnremove;
           
            $out .= '</p></div>';
       
        }
       
        JFactory::getDocument()->addScriptDeclaration("
            $(function() {
                var namesDiv = $('#pnames');
       
                $('#addName').live('click', function() {
                    $('<p>$inputfld $btnremove</p>').appendTo(namesDiv);
                    return false;
                });
       
                $('#remName').live('click', function() {
                    $(this).parents('p').remove();
                    return false;
                });
               
            });

        ");
       
        return $out;
       
    }

nell'xml la definizione del field:

Codice: [Seleziona]
<field name="sname"
            type="namesinput"
            class="inputbox"
            size="30"
            maxlenght="45"
            placeholder="inserisci un nome"
            label="Nomi"
            description="Inserimento nomi"
            />

nella table->bind:
Codice: [Seleziona]
if (isset($array['sname']) && is_array($array['sname'])) {
            $registry = new JRegistry;
            $registry->loadArray($array['sname']);
            $array['sname'] = (string) $registry;
        }

nel model form->loadFormData(), appena dopo:
Codice: [Seleziona]
if (empty($data)) {
            $data = $this->getItem();

inserire:
Codice: [Seleziona]
$registry = new JRegistry;
            $registry->loadString($data->sname);
            $data->set('sname',$registry->toArray());

nella view bisogna caricare JQuery_latest.
Ho pensato di usare JQury senza nessun plugin poichè ha quell'ottima .append che già risolveva il problema

il campo sname del db è di tipo text

E' scritto su J3.0

PS non implementatelo senza fare i check dei campi nei file/metodi  appropriati, ve lo bucano in 0 secondi

a RI PS @simone: come si fa con moo?

19
Segnalazioni lingua Joomla / Imprecisione lang IT 2.5.8
« il: 22 Gen 2013, 18:24:31 »
Quando crei una categoria alla base ci sono le operazioni batch
...
con la select in basso: Seleziona una categoria da Spostare/Copiare

non è corretto, devi scegliere la categoria in cui copiare o spostare, cosa lo scegli flaggando i checkbok

...o sto malintendendo qualcosa?

20
Sicurezza / JOOMLA 1.5 TUTTE - DISINSTALLATE JA_PURITY
« il: 04 Gen 2013, 15:04:56 »
perdonate il maiuscolo, sisa mai che qualcuno lo legga visto che ancora oggi si vedono siti in 1.5.26 con Ja_purity.

se non lo usate disinstallatelo/rimuovetelo, se lo usate aggiornatelo, c'è ja_purity2

Pagine: [1] 2 3 4 ... 7


Web Design Bolzano Kreatif