[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
xForm - Table Manager - Datensatz dublizieren / kopieren - REDAXO Forum
Hallo,

Wir haben in letzter Zeit festgestellt, dass die Kommunikation via Slack viel schneller und zielführender ist als ein Beitrag im Forum. Aufgrund der neuen und besseren Möglichkeiten der Kommunikation haben wir uns entschlossen das Forum nur noch als Archiv zur Verfügung zu stellen. Somit bleibt es weiterhin möglich hier nach Lösungen zu suchen. Neue Beiträge können nicht mehr erstellt werden.

Wir empfehlen, für deine Fragen/Probleme Slack zu nutzen. Dort sind viele kompetente Benutzer aktiv und beantworten jegliche Fragen, gerne auch von REDAXO-Anfängern! Slack wird von uns sehr intensiv und meistens "rund um die Uhr" benutzt :-)
Selbst einladen kannst Du dich hier: https://redaxo.org/slack/
Benutzeravatar
brandes-webdesign
Beiträge: 91
Registriert: 24. Jan 2008, 15:22
Wohnort: Trier
Kontaktdaten: Website

xForm - Table Manager - Datensatz dublizieren / kopieren

10. Jun 2013, 15:41

Hallo Zusammen,
weiß jemand, ob und wie man in einer mit den xForm und dem Table Manager erstellten Tabelle einen Datensatz dublizieren / kopieren kann.

Folgendes Problem:
Ich bin am Erstellen einer Wein-Webseite, wo die Weine mit Hilfe des "Table Manager" erfasst und gepflegt werden. Es sind insg. einige dutzend Werte, die erfasst werden. Da einige Weine sehr änhlich sind, wäre einen Kopierfunktion sehr hilfreich. Ich bräuchte dann nur noch die paar unterschiedlichen Werte ändern und würde mir somit unzähliche Klicks sparen.

Weiß jemand ob es so einen Kopier-/Dublizier-Funktion gibt ?

Vielen Dank für Eure Hilfe
Mirco
Responive Umsetzung Ihrer Layout-/Design-Vorlagen mit dem CMS Redaxo.
Service für Agenturen, Grafiker und Web-Designer oder im Kundenauftrag.
Mirco Brandes (Brandes Webdesign)

Benutzeravatar
Xong
Beiträge: 2081
Registriert: 5. Jun 2008, 08:30
Wohnort: Halle (Saale)

Re: xForm - Table Manager - Datensatz dublizieren / kopieren

10. Jun 2013, 17:46

Hi Mirco,

die Funktion gibt es nicht. Kann man aber leicht nachbauen. Ich würde die Tabelle erweitern, so dass du neben jedem Datensatz einen Duplizieren-Link hast.

Das Prinzip, wie du den Link einfügst, hab ich hier beschrieben: http://www.redaxo.org/de/forum/post105995.html#p105995
LG,
Xong

[ externes Bild ] Määääääääääääääääääääääääh!

Benutzeravatar
brandes-webdesign
Beiträge: 91
Registriert: 24. Jan 2008, 15:22
Wohnort: Trier
Kontaktdaten: Website

Re: xForm - Table Manager - Datensatz dublizieren / kopieren

10. Jun 2013, 18:53

Hallo xong,
vielen Dank für Deine schnelle Antwort.
Mit dem Link von Dir werde ich dann denke ich weiter kommen.
Mirco
Responive Umsetzung Ihrer Layout-/Design-Vorlagen mit dem CMS Redaxo.
Service für Agenturen, Grafiker und Web-Designer oder im Kundenauftrag.
Mirco Brandes (Brandes Webdesign)

Benutzeravatar
darwin
Beiträge: 1725
Registriert: 2. Jan 2007, 17:10
Wohnort: LA

Re: xForm - Table Manager - Datensatz dublizieren / kopieren

13. Nov 2013, 12:36

Hi,
ich habe das soeben gut gebrauchen können.
Danke XONG für den Ansatz. Hier mein EP zum kopieren von Datensätzen
in einer xForm Tabelle:

Code: Alles auswählen

function rr_extended_list($_params)
{
  global $REX, $I18N;
  
  if(rex_get('func') == 'duplicate' AND ($id = rex_get('data_id', 'int')))
  {
    
    $sql = rex_sql::factory();
    # $sql->debugsql = TRUE;
    $sql->setTable($_params['subject']->params['table_name']);
    $sql->setWhere('id='.$id);
    $sql->select('*');
    
    if($sql->getRows())
    {
         $fields = $sql->getFieldNames();
         $iSql = new rex_sql;
         # $iSql->debugsql = TRUE;
         $iSql->setTable($_params['subject']->params['table_name']);
         
         foreach ($fields as $field) {
             if ($field != 'id') {
                 $iSql->setValue($field, mysql_real_escape_string($sql->getValue($field)));
             }
         }
         
         $iSql->insert();
    }
      
    header('Location: '.str_replace('&', '&', $_params['subject']->getUrl()));
    exit;
  }
  
  $_params['subject']->removeColumn('duplicate');
  $_params['subject']->addColumn('duplicate', '', 50, array('<th class="duplicate">###VALUE###</th>','<td>###VALUE###</td>'));
  $_params['subject']->setColumnFormat('duplicate' ,'custom', create_function(
    '$params',
    '$list = $params["list"];
     return \'<a href="\'.$list->getUrl(array("func" => "duplicate")).\'&data_id=###id###">kopieren</a>\';'
  ));
}
rex_register_extension('XFORM_DATA_LIST', 'rr_extended_list');
Der größte Haken dabei war das hier:

Code: Alles auswählen

 return \'<a href="\'.$list->getUrl(array("func" => "duplicate")).\'&data_id=###id###">kopieren</a>\';'
da es den ###id### im getUrl "wahrscheinlich" via Outputfilter zerlegt,
habe ich die ###id### hinten einfach rangehängt.

Code: Alles auswählen

\'&data_id=###id###">
grz. Chris

Benutzeravatar
Oliver.Kreischer
Beiträge: 2508
Registriert: 17. Dez 2004, 00:03
Wohnort: Velbert - LA
Kontaktdaten: Website

Re: xForm - Table Manager - Datensatz dublizieren / kopieren

13. Nov 2013, 13:02

Hey Chris,

guck mal. Vielleicht kannst Du das mal da hin schreiben:

https://github.com/dergel/redaxo4_xform/issues/170

LG
Oliver
> Friends Of REDAXO Gemeinsame REDAXO-Entwicklung!
> REDAXO Agenturen. Eintragen erwünscht!
> Komm in den Slack Channel Es lohnt sich!

Benutzeravatar
darwin
Beiträge: 1725
Registriert: 2. Jan 2007, 17:10
Wohnort: LA

Re: xForm - Table Manager - Datensatz dublizieren / kopieren

3. Feb 2014, 15:47

Hi,
für alle die noch eine Status-Funktion (on-/offline) in der
xForm Liste / Tabelle benötigen:

Voraussetzung:
Ihr habt im Tabellen-Manager ein Feld "active" mit drin
>> emptyname >> Name: active

Kopiert Euch den Code z.B. in die config.inc.php des xForm AddOns

Code: Alles auswählen

#
# Extension zum setzen des status on-/offline
# !!! via xForm table-manager erst ein Feld "emptyname" mit dem Namen "active" setzen !!!
#
function rr_extended_list_STATUS($_params)
{
    global $REX, $I18N;
    
    $sql = rex_sql::factory();
    $sql->setTable($_params['subject']->params['table_name']);
    $sql->select('*');
    
    $fields = $sql->getFieldNames();
    $field_active = false;
    
    foreach($fields as $id => $fieldname)
    {
        if($fieldname == 'active')
        {
            $field_active = true;
        } else {
            $field_active = false;
        }
    }

    if($field_active)
    {
        if(rex_get('func') == 'status' AND ($id = rex_get('data_id', 'int')))
        {
            $sql = null;
            $sql = rex_sql::factory();
            $sql->setTable($_params['subject']->params['table_name']);
            $sql->setWhere('id='.$id);
            $sql->select('*');

            if($sql->getRows())
            {
                $old_status = rex_get('old_status','int','0');

                if ($id > 0)
                {
                    $new_status = $old_status == '1' ? '0' : '1';
                
                    $uSql = rex_sql::factory();
                    $uSql->setTable($_params['subject']->params['table_name']);
                    $uSql->setValue('active', (int) $new_status);
                    $uSql->setWhere('id='.$id);
                    $uSql->update();
                }
                $func = '';
                unset($old_status);
            }
            
            header('Location: '.str_replace('&', '&', $_params['subject']->getUrl()));
            exit;
        
        }
        
        $_params['subject']->removeColumn('status');
        $_params['subject']->addColumn('status', '', 50, array('<th class="status">On-/Offline</th>','<td>###VALUE###</td>'));
        $_params['subject']->setColumnParams('active', array ('func' => 'status', 'old_status' => '###active###', 'data_id' => '###id###'));
        $_params['subject']->setColumnFormat('status' ,'custom',
        create_function( '$params',
                        '$list = $params["list"];
                        
                        if ($list->getValue("active") == "1") {
                            $params = array("toggle" => "0"); 
                        } else {
                            $params = array("toggle" => "1"); 
                        }
                        
                        
                        # $return \'<a href="\'.$list->getUrl(array("func" => "status")).\'&data_id=###id###">kopieren</a>\';
                        $return = $list->getColumnLink("active", $list->getValue("active") != "1" ? "<span style=\'color: #b30000;\'><strong>Offline</strong></span>" : "<span style=\'color: green;\'><strong>Online</strong></span>", $params);
                        return $return;'));
    }
    
}

rex_register_extension('XFORM_DATA_LIST', 'rr_extended_list_STATUS');
grz. Chris

NGW
Beiträge: 132
Registriert: 1. Mär 2011, 09:12
Kontaktdaten: Website

Re: xForm - Table Manager - Datensatz dublizieren / kopieren

4. Feb 2014, 19:02

Vielen Dank Chris,

genau sowas kann ich gerade gebrauchen :)

Gruß
Nico

Benutzeravatar
darwin
Beiträge: 1725
Registriert: 2. Jan 2007, 17:10
Wohnort: LA

Re: xForm - Table Manager - Datensatz dublizieren / kopieren

25. Nov 2016, 19:38

Hi,
falls jemand noch an R4 schraubt und ggf mal eine xForm tabelle / Listen Ausgabe anders sortieren haben möchte, hier ein Ansatz:

Code: Alles auswählen

 function rr_sort_list($_params)
    {
        if($_params['subject']->params['table_name'] == "rex_releases") {
            $_params['subject']->sql->setQuery("SELECT * FROM rex_releases ORDER BY release_date DESC");
        }
    }
    rex_register_extension('XFORM_DATA_LIST', 'rr_sort_list');
grz. Chris

Zurück zu „Allgemeines [R4]“