Seite 1 von 1

Artikel erstellen - Eigenschaften - Checkbox Startartikel

Verfasst: Di 27. Mär 2007, 17:00
von wosch
Wenn man einen neuen Artikel in einer Kategorie erstellt der noch keinen Startartikel hat wird automatisc,h bei Eigenschaften, das Häckchen in der Checkbox "Startartikel" gesetzt.

Ich habe nun einige Kategorien ohne Startartikel, nur zum Auslesen mit einer Artikelliste.
Auf die Dauer stört es gewaltig immer daran zu denken das Häckchen aus der Checkbox zu machen.

Es war einfach zu finden wo diese Vorgabe geschieht, in der Datei include.con_edit_form.php an dieser Stelle:

Code: Alles auswählen

        /* Startartikel */
        if ($perm->have_perm_area_action("con", "con_makestart") ||
            $perm->have_perm_area_action_item("con","con_makestart", $idcat))
        {
        	$tmp_start = ($tmp_is_start == 0) ? '<input '.$disabled.' type="checkbox" name="is_start" value="1">' : '<input '.$disabled.' type="checkbox" name="is_start" value="1" checked="checked">';
        } else {
        	$tmp_start = ($tmp_is_start == 0) ? '<input disabled="disabled" type="checkbox" name="" value="1">' : '<input disabled="disabled" type="checkbox" name="" value="1" checked="checked">';
        }
        $tpl->set('s', 'STARTARTIKEL', i18n("Start article"));
        $tpl->set('s', 'STARTARTIKEL-CHECKBOX', $tmp_start);
        
        /* Sortierung */
        $tpl->set('s', 'SORTIERUNG', i18n("Sort key"));
        $tpl->set('s', 'SORTIERUNG-FIELD', '<input type="text" '.$disabled.' class="txt" name="artsort" value="'.$tmp_sort.'">'); 
Nur, für mich ist es nicht einfach zu erkennen was ich wie ändern muß damit die Checkbox nicht mehr mit einer Vorgabe, wenn kein Startartikel existiert, belegt wird.
Könnte mal einer der Core-Experten mir da einen Tipp geben / helfen?

Verfasst: Di 27. Mär 2007, 17:05
von emergence
sieh nach wo $tmp_is_start definiert wird
wenn es 0 bleibt dürfte das nicht angecheckt werden...

Verfasst: Di 27. Mär 2007, 18:10
von wosch
emergence,
danke für den Tipp.
$tmp_is_start kommt 5 x vor, es dürfte dann aber diese Stelle sein:

Code: Alles auswählen

            //***************** this art is edited the first time *************
    
            if (!$idart) $tmp_firstedit    = 1;                //**** is needed when input is written to db (update or insert)
    
            $tmp_idartlang      = 0;
            $tmp_idlang         = $lang;
            $tmp_page_title     = stripslashes($db->f("pagetitle"));
            $tmp_title          = "";
            $tmp_artspec	 	= "";
            $tmp_summary        = "";
            $tmp_created        = date("Y-m-d H:i:s");
            $tmp_lastmodified   = date("Y-m-d H:i:s");
            $tmp_published   	= date("Y-m-d H:i:s");
            $tmp_publishedby   = "";
            $tmp_author         = "";
            $tmp_online         = "0";
            $tmp_datestart      = "0000-00-00 00:00:00";
            $tmp_dateend        = "0000-00-00 00:00:00";
            $tmp_keyart         = "";
            $tmp_keyautoart     = "";
            $tmp_sort           = "";
            
            if (!strHasStartArticle($idcat, $lang))
            {
            	$tmp_is_start = 1;		
            }
    
            $tmp_redirect_checked  = '';
            $tmp_redirect_url           = "http://";
            $tmp_external_redirect = '';
            
        }
    
    	$dateformat = getEffectiveSetting("backend", "timeformat", "Y-m-d H:i:s");
    	
    	$tmp2_created = date($dateformat,strtotime($tmp_created));
        $tmp2_lastmodified = date($dateformat,strtotime($tmp_lastmodified));
        $tmp2_published = date($dateformat,strtotime($tmp_published));
...
$tpl->set('s', 'ACTION',
...
Hier könnte ich den Code editieren in:

Code: Alles auswählen

$tmp_is_start = 0;
Oder, alternativ was mir sympatischer wäre (Bauchgefühl) diese Stelle ganz lösen:

Code: Alles auswählen

            if (!strHasStartArticle($idcat, $lang))
            {
            	$tmp_is_start = 1;		
            }
Was wäre den sinnvoller, richtiger ?

Verfasst: Di 27. Mär 2007, 21:02
von wosch
So, nun habe ich mal in Ruhe weiter nachdenken können.

Wenn ich den ganzen Kram lösche wie hier geschrieben:
if (!strHasStartArticle($idcat, $lang))
{
$tmp_is_start = 1;
}
Wird $tmp_is_start nirgendwo mehr definiert, weder als 0 oder 1 -> komplett undefiniert.
Ergebnis???

Wenn ich hier:

Code: Alles auswählen

            if (!strHasStartArticle($idcat, $lang)) 
            { 
               $tmp_is_start = 1;       
            } 
die Variable $tmp_is_start = 1 auf Null setze würde es genau das machen was emergence schreibt.
emergence hat geschrieben:sieh nach wo $tmp_is_start definiert wird
wenn es 0 bleibt dürfte das nicht angecheckt werden...
Was ich aber dann nicht verstehe ist dieser Ausdruck:

Code: Alles auswählen

        { 
           $tmp_start = ($tmp_is_start == 0) ? '<input '.$disabled.' type="checkbox" name="is_start" value="1">' : '<input '.$disabled.' type="checkbox" name="is_start" value="1" checked="checked">'; 
        } else { 
           $tmp_start = ($tmp_is_start == 0) ? '<input disabled="disabled" type="checkbox" name="" value="1">' : '<input disabled="disabled" type="checkbox" name="" value="1" checked="checked">'; 
Reduziert heißt das:

Code: Alles auswählen

Anweisung/Befehl
{führe aus wenn $tmp_is_start == 0}
else
{führe aus wenn $tmp_is_start == 0}
...
Die Abfrage ist immer gleich die Ausführung danach unterscheidet sich nur durch:
entweder input '.$disabled.'
oder input disabled="disabled"

Und den Unterschied was dann passiert erkenne ich nicht.
Und nun bin ich ganz konfus.