mehr profilfelder - Page 2 mehr profilfelder - Page 2
 

News:

cpg1.5.48 Security release - upgrade mandatory!
The Coppermine development team is releasing a security update for Coppermine in order to counter a recently discovered vulnerability. It is important that all users who run version cpg1.5.46 or older update to this latest version as soon as possible.
[more]

Main Menu

mehr profilfelder

Started by ralf45_nrw, August 28, 2013, 01:04:36 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

ralf45_nrw

hi an

super funktioniert.

lerne immer mehr dazu.

gruss ralf
coppermine 1.5.x

Αndré

Quote from: ralf45_nrw on August 28, 2013, 02:55:46 PM
die abmessung des bildes soll eine bestimmte grösse haben z.b. 1, bild 800x300, 2. bild 300x400
Sind das jetzt schon die korrekten Größen? Breite x Höhe nehmen ich an?

ralf45_nrw

hi andre,

ja bilder sind breite x höhe
1. bild 800x300
2. bild 350x600

gruss ralf
coppermine 1.5.x

Αndré

Die Upload-Felder.

Schritt 0: make_form erweitern und Formularkodierung anpassen

Suche
        default:
            cpg_die(CRITICAL_ERROR, 'Invalid action for form creation ' . $element[0], __FILE__, __LINE__);
        }

und füge darüber folgendes ein
        case 'upload':

            $value = $form_data[$element[1]];

            if ($element[2]) {

                echo <<< EOT
    <tr>
        <td width="40%" class="{$cellStyle}" height="25" valign="top">
            {$element[2]}
        </td>
        <td width="60%" class="{$cellStyle}" valign="top">
            <input type="file" style="width: 100%" name="{$element[1]}" class="listbox" />
        </td>
    </tr>


EOT;
            }

            break;



Suche
<form name="cpgform" id="cpgform" method="post" action="{$CPG_PHP_SELF}">
und ersetze es durch
<form name="cpgform" id="cpgform" method="post" action="{$CPG_PHP_SELF}" enctype="multipart/form-data">


Schritt 1: Frontend

Füge wie bereits beschrieben in der Nähe der anderen Zeilen mit
$edit_profile_form_param[]
etwas in folgender Art hinzu
$edit_profile_form_param[] = array('upload', 'custom_upload_1', 'Upload 1');
$edit_profile_form_param[] = array('upload', 'custom_upload_2', 'Upload 2');



Schritt 2: Backend

Jetzt beginnt der Teil, der evtl. nicht deinen Vorstellungen entspricht. Wenn das Formular abgesendet wird, werden entweder neue Bilder mitgesendet oder "nichts". Wenn nichts mitgesendet wird, wird das ggf. bereits hochgeladene Bild weiter verwendet. Wenn etwas mitgesendet wird und es ein Bild mit den korrekten Abmessungen ist, wird ab sofort dieses Bild verwendet. Wenn es kein Bild ist oder die falschen Abmessungen hat, wird das ggf. bereits hochgeladene Bild weiter verwendet. Ein Bild löschen ist erstmal nicht möglich, können wir später ggf. noch einbauen.

Damit Coppermine etwas mit den Erweiterungen anzufangen weiß, suchen wir
    $profile6 = $superCage->post->getEscaped('user_profile6');
und fügen danach folgenden Code ein:
    function custom_upload($custom_upload_x, $width, $height) {
        global $CONFIG;
        $superCage = Inspekt::makeSuperCage();
        if ($superCage->files->getRaw("/{$custom_upload_x}/tmp_name") && is_image($superCage->files->getRaw("/{$custom_upload_x}/name"))) {
            $uploaded_file = $CONFIG['fullpath'].$CONFIG['userpics'].'user_'.USER_ID.'_'.$custom_upload_x.'.png';
            if (move_uploaded_file($superCage->files->getRaw("/{$custom_upload_x}/tmp_name"), $uploaded_file.'_tmp')) {
                $imagesize = cpg_getimagesize($uploaded_file.'_tmp');
                if ($imagesize[0] == $width && $imagesize[1] == $height) {
                    rename($uploaded_file.'_tmp', $uploaded_file);
                } else {
                    unlink($uploaded_file.'_tmp');
                }
            }
        }
    }
    custom_upload('custom_upload_1', 800, 300);
    custom_upload('custom_upload_2', 350, 600);



Schritt 3: Daten im öffentlichen Profil anzeigen

Suche
if ($CONFIG['user_profile6_name'] != '') {
    $display_profile_form_param[] = array('text', 'user_profile6', $CONFIG['user_profile6_name']);
}

unter füge darunter folgendes ein:
$display_profile_form_param[] = array('text', 'custom_upload_1', 'Upload 1');
$display_profile_form_param[] = array('text', 'custom_upload_2', 'Upload 2');


Suche
        'user_profile6' => bb_decode($user_data['user_profile6']),
und füge darunter folgendes ein:
        'custom_upload_1' => custom_image('custom_upload_1'),
        'custom_upload_2' => custom_image('custom_upload_2'),


Jetzt fügst du vor dem darüberstehenden
$form_data = array(
noch folgende Funktion hinzu:
    function custom_image($img) {
        global $CONFIG;
        $superCage = Inspekt::makeSuperCage();
        $user_id = $superCage->get->getInt('uid');
        $img = $CONFIG['fullpath'].$CONFIG['userpics'].'user_'.$user_id.'_'.$img.'.png';
        if (file_exists($img)) {
            return "<img class=\"image\" src=\"{$img}\" />";
        } else {
            return false;
        }
    }

ralf45_nrw

hi andre,

super es funktioniert.
wie ich die größe ändern kann weiß ich die muss ich später so anpassen dami es ins profil passt.

nur ist es dumm das man nur .png hochladen kann wäre gut wen man auch noch .jpg hochladen könnte.

und wen man später die auch löschen könnte.

DANKE erst mal super leistung.


gruss ralf
coppermine 1.5.x

Αndré

Du kannst auch andere Bilddateien hochladen. Der Einfachheit halber werden aber alle als .png abgespeichert. Ist unsauber, sollte aber trotzdem ohne Probleme funktionieren.

ralf45_nrw

hi andre,

dann muss ich das script noch mal kontrolieren.

wollte .jpg hochladen hat er nicht genommen, habe das bild dann in .png gespeichet und dann hochgeladen das ging ohne probleme.

gruss ralf
coppermine 1.5.x

Αndré

Quote from: ralf45_nrw on September 22, 2013, 02:01:18 PM
wollte .jpg hochladen hat er nicht genommen
Bitte genauer erläutern. Kam eine Fehlermeldung oder wird das Bild einfach nicht angezeigt?

ralf45_nrw

hallo andre,

lag an mir hatte versucht eine falche größe hochzuladen.

wer lesen kann ist klar im vorteil.


gruss ralf
coppermine 1.5.x

Αndré

Sind wir hiermit eigentlich durch, oder ist noch irgendwas offen?

ralf45_nrw

hi,

mit den feldern soweit alles ok.

gruss ralf
coppermine 1.5.x