Page 1 sur 1

kcfinder et mysql

Posté : 11 juil. 2014, 12:00
par Goo69
Bonjour au forum,

J'essaie d'intégrer kcfinder à une page comprenant un titre, une description et l'ajout possible de plusieurs images.
Voici le code avant intégration de kcfinder :

Code : Tout sélectionner

<?php require('includes/application_top.php'); $action = (isset($HTTP_GET_VARS['action']) ? $HTTP_GET_VARS['action'] : ''); if (tep_not_null($action)) { if ( $action == 'insert' || $action == 'update' || $action == 'setflag' ) { tep_reset_cache_data_usu5( 'reset' ); } switch ($action) { case 'insert_element': case 'update_element': if (isset($HTTP_GET_VARS['pID'])) $elements_id = tep_db_prepare_input($HTTP_GET_VARS['pID']); $elements_image = new upload('elements_image'); $elements_image->set_destination(DIR_FS_CATALOG_IMAGES); if ($elements_image->parse() && $elements_image->save()) { $sql_data_array['elements_image'] = tep_db_prepare_input($elements_image->filename); } if ($action == 'insert_element') { $insert_sql_data = array('elements_date_added' => 'now()'); $sql_data_array = array_merge($sql_data_array, $insert_sql_data); tep_db_perform(TABLE_ELEMENTS, $sql_data_array); $elements_id = tep_db_insert_id(); tep_db_query("insert into " . TABLE_ELEMENTS_TO_THEMES . " (elements_id, themes_id) values ('" . (int)$elements_id . "', '" . (int)$current_theme_id . "')"); } elseif ($action == 'update_element') { $update_sql_data = array('elements_last_modified' => 'now()'); $sql_data_array = array_merge($sql_data_array, $update_sql_data); tep_db_perform(TABLE_ELEMENTS, $sql_data_array, 'update', "elements_id = '" . (int)$elements_id . "'"); } $languages = tep_get_languages(); for ($i=0, $n=sizeof($languages); $i<$n; $i++) { $language_id = $languages[$i]['id']; $sql_data_array = array('elements_name' => tep_db_prepare_input($HTTP_POST_VARS['elements_name'][$language_id]), 'elements_description' => tep_db_prepare_input($HTTP_POST_VARS['elements_description'][$language_id])); if ($action == 'insert_element') { $insert_sql_data = array('elements_id' => $elements_id, 'language_id' => $language_id); $sql_data_array = array_merge($sql_data_array, $insert_sql_data); tep_db_perform(TABLE_ELEMENTS_DESCRIPTION, $sql_data_array); } elseif ($action == 'update_element') { tep_db_perform(TABLE_ELEMENTS_DESCRIPTION, $sql_data_array, 'update', "elements_id = '" . (int)$elements_id . "' and language_id = '" . (int)$language_id . "'"); } } $pi_sort_order = 0; $piArray = array(0); foreach ($HTTP_POST_FILES as $key => $value) { // Update existing large element images if (preg_match('/^elements_image_large_([0-9]+)$/', $key, $matches)) { $pi_sort_order++; $sql_data_array = array('htmlcontent' => tep_db_prepare_input($HTTP_POST_VARS['elements_image_htmlcontent_' . $matches[1]]), 'sort_order' => $pi_sort_order); $t = new upload($key); $t->set_destination(DIR_FS_CATALOG_IMAGES); if ($t->parse() && $t->save()) { $sql_data_array['image'] = tep_db_prepare_input($t->filename); } tep_db_perform(TABLE_ELEMENTS_IMAGES, $sql_data_array, 'update', "elements_id = '" . (int)$elements_id . "' and id = '" . (int)$matches[1] . "'"); $piArray[] = (int)$matches[1]; } elseif (preg_match('/^elements_image_large_new_([0-9]+)$/', $key, $matches)) { // Insert new large element images $sql_data_array = array('elements_id' => (int)$elements_id, 'htmlcontent' => tep_db_prepare_input($HTTP_POST_VARS['elements_image_htmlcontent_new_' . $matches[1]])); $t = new upload($key); $t->set_destination(DIR_FS_CATALOG_IMAGES); if ($t->parse() && $t->save()) { $pi_sort_order++; $sql_data_array['image'] = tep_db_prepare_input($t->filename); $sql_data_array['sort_order'] = $pi_sort_order; tep_db_perform(TABLE_ELEMENTS_IMAGES, $sql_data_array); $piArray[] = tep_db_insert_id(); } } } $element_images_query = tep_db_query("select image from " . TABLE_ELEMENTS_IMAGES . " where elements_id = '" . (int)$elements_id . "' and id not in (" . implode(',', $piArray) . ")"); if (tep_db_num_rows($element_images_query)) { while ($element_images = tep_db_fetch_array($element_images_query)) { $duplicate_image_query = tep_db_query("select count(*) as total from " . TABLE_ELEMENTS_IMAGES . " where image = '" . tep_db_input($element_images['image']) . "'"); $duplicate_image = tep_db_fetch_array($duplicate_image_query); if ($duplicate_image['total'] < 2) { if (file_exists(DIR_FS_CATALOG_IMAGES . $element_images['image'])) { @unlink(DIR_FS_CATALOG_IMAGES . $element_images['image']); } } } tep_db_query("delete from " . TABLE_ELEMENTS_IMAGES . " where elements_id = '" . (int)$elements_id . "' and id not in (" . implode(',', $piArray) . ")"); } if (USE_CACHE == 'true') { tep_reset_cache_block('themes'); tep_reset_cache_block('also_purchased'); } tep_redirect(tep_href_link(FILENAME_THEMES, 'tPath=' . $tPath . '&pID=' . $elements_id)); break; } } // check if the catalog image directory exists if (is_dir(DIR_FS_CATALOG_IMAGES)) { if (!tep_is_writable(DIR_FS_CATALOG_IMAGES)) $messageStack->add(ERROR_CATALOG_IMAGE_DIRECTORY_NOT_WRITEABLE, 'error'); } else { $messageStack->add(ERROR_CATALOG_IMAGE_DIRECTORY_DOES_NOT_EXIST, 'error'); } require(DIR_WS_INCLUDES . 'template_top.php'); if ($action == 'new_element') { $parameters = array('elements_name' => '', 'elements_description' => '', 'elements_id' => '', 'elements_larger_images' => array()); $pInfo = new objectInfo($parameters); if (isset($HTTP_GET_VARS['pID']) && empty($HTTP_POST_VARS)) { $element_query = tep_db_query("select pd.elements_name, pd.elements_description, p.elements_id from " . TABLE_ELEMENTS . " p, " . TABLE_ELEMENTS_DESCRIPTION . " pd where p.elements_id = '" . (int)$HTTP_GET_VARS['pID'] . "' and p.elements_id = pd.elements_id and pd.language_id = '" . (int)$languages_id . "'"); $element = tep_db_fetch_array($element_query); $pInfo->objectInfo($element); $element_images_query = tep_db_query("select id, image, htmlcontent, sort_order from " . TABLE_ELEMENTS_IMAGES . " where elements_id = '" . (int)$element['elements_id'] . "' order by sort_order"); while ($element_images = tep_db_fetch_array($element_images_query)) { $pInfo->elements_larger_images[] = array('id' => $element_images['id'], 'image' => $element_images['image'], 'htmlcontent' => $element_images['htmlcontent'], 'sort_order' => $element_images['sort_order']); } } $languages = tep_get_languages(); $form_action = (isset($HTTP_GET_VARS['pID'])) ? 'update_element' : 'insert_element'; ?> <?php echo tep_draw_form('new_element', FILENAME_THEMES, 'tPath=' . $tPath . (isset($HTTP_GET_VARS['pID']) ? '&pID=' . $HTTP_GET_VARS['pID'] : '') . '&action=' . $form_action, 'post', 'enctype="multipart/form-data"'); ?> <table border="0" width="100%" cellspacing="0" cellpadding="2"> <tr> <td><table border="0" width="100%" cellspacing="0" cellpadding="0"> <tr> <td class="pageHeading"><?php echo sprintf(TEXT_NEW_ELEMENT, tep_output_generated_theme_path($current_theme_id)); ?></td> <td class="pageHeading" align="right"><?php echo tep_draw_separator('pixel_trans.gif', HEADING_IMAGE_WIDTH, HEADING_IMAGE_HEIGHT); ?></td> </tr> </table></td> </tr> <?php for ($i=0, $n=sizeof($languages); $i<$n; $i++) { ?> <tr> <td class="main"><?php if ($i == 0) echo TEXT_ELEMENTS_NAME; ?></td> <td class="main"><?php echo tep_draw_input_field('elements_name[' . $languages[$i]['id'] . ']', (empty($pInfo->elements_id) ? '' : tep_get_elements_name($pInfo->elements_id, $languages[$i]['id'])),'size="30px"'); ?></td> </tr> <?php } ?> <tr> <td colspan="2"><?php echo tep_draw_separator('pixel_trans.gif', '1', '10'); ?></td> </tr> <?php for ($i=0, $n=sizeof($languages); $i<$n; $i++) { ?> <tr> <td class="main" valign="top"><?php if ($i == 0) echo TEXT_ELEMENTS_DESCRIPTION; ?></td> <td><table border="0" cellspacing="0" cellpadding="0"> <tr> <td class="main" width="700px;"><?php echo tep_draw_ckeditor_field('elements_description[' . $languages[$i]['id'] . ']', 'soft', '70', '15', (empty($pInfo->elements_id) ? '' : tep_get_elements_description($pInfo->elements_id, $languages[$i]['id']))); ?></td> </tr> </table></td> </tr> <?php } ?> <tr> <td class="main" valign="top"><?php echo TEXT_ELEMENTS_IMAGE; ?></td> <td class="main" style="padding-left: 30px; text-align:center;"> <ul id="piList" style="list-style:none;"> <?php $pi_counter = 0; foreach ($pInfo->elements_larger_images as $pi) { $pi_counter++; echo ' <li id="piId' . $pi_counter . '" class="ui-state-default"> <a href="#" onclick="showPiDelConfirm(' . $pi_counter . ');return false;" class="ui-icon ui-icon-trash" style="float: right;"></a> <br /><br /><a href="' . DIR_WS_CATALOG_IMAGES . $pi['image'] . '" target="_blank">' . tep_info_image($pi['image'], '', '100', '75') . '</a> <br /><small>' . $pi['image'] . '</small> <br />' . tep_draw_file_field('elements_image_large_' . $pi['id']) . ' <br /><br />' . TEXT_ELEMENTS_LARGE_IMAGE_HTML_CONTENT . ' <br />' . tep_draw_textarea_field('elements_image_htmlcontent_' . $pi['id'], 'soft', '40', '3', $pi['htmlcontent']) . ' </li>'; } ?> </ul> <div style="text-align:left;"><a href="#" onclick="addNewPiForm();return false;"><?php echo tep_image(HTTP_SERVER . DIR_WS_ADMIN . DIR_WS_IMAGES . 'ajouter_big.png', TEXT_ELEMENTS_ADD_LARGE_IMAGE, '40', '40'); ?></a></div> <div id="piDelConfirm" title="<?php echo TEXT_ELEMENTS_LARGE_IMAGE_DELETE_TITLE; ?>"> <p><span class="ui-icon ui-icon-alert" style="float:left; margin:0 7px 20px 0;"></span><?php echo TEXT_ELEMENTS_LARGE_IMAGE_CONFIRM_DELETE; ?></p> </div> <script type="text/javascript"> $('#piList').sortable({ containment: 'parent' }); var piSize = <?php echo $pi_counter; ?>; function addNewPiForm() { piSize++; $('#piList').append('<li id="piId' + piSize + '" style="background-color:#6E9E09;"><span class="ui-icon ui-icon-arrowthick-2-n-s" style="float: right;"></span><a href="#" onclick="showPiDelConfirm(' + piSize + ');return false;" class="ui-icon ui-icon-trash" style="float: right;"></a><strong><?php echo TEXT_ELEMENTS_LARGE_IMAGE; ?></strong><br /><input type="file" name="elements_image_large_new_' + piSize + '" /><br /><br /><?php echo TEXT_ELEMENTS_LARGE_IMAGE_HTML_CONTENT; ?><br /><textarea name="elements_image_htmlcontent_new_' + piSize + '" wrap="soft" cols="40" rows="3"></textarea></li>'); } var piDelConfirmId = 0; $('#piDelConfirm').dialog({ autoOpen: false, resizable: false, draggable: false, modal: true, buttons: { 'Delete': function() { $('#piId' + piDelConfirmId).effect('blind').remove(); $(this).dialog('close'); }, Cancel: function() { $(this).dialog('close'); } } }); function showPiDelConfirm(piId) { piDelConfirmId = piId; $('#piDelConfirm').dialog('open'); } </script> <style type="text/css"> #piList { margin: 0; padding: 0; -webkit-columns: 2; -moz-columns: 2; columns: 2; -webkit-column-gap: 150px; -moz-column-gap: 150px; column-gap: 150px; } #piList li { margin: 5px 0; padding: 2px; } </style> </td> </tr> </table></td> </tr> <tr> <td><?php echo tep_draw_separator('pixel_trans.gif', '1', '10'); ?></td> </tr> <tr class="infoBoxContent"> <td class="smallText" align="center"><?php echo tep_draw_hidden_field('elements_date_added', (tep_not_null($pInfo->elements_date_added) ? $pInfo->elements_date_added : date('Y-m-d'))) . tep_draw_button(IMAGE_SAVE, 'disk', null, 'primary') . tep_draw_button(IMAGE_CANCEL, 'close', tep_href_link(FILENAME_THEMES, 'tPath=' . $tPath . (isset($HTTP_GET_VARS['pID']) ? '&pID=' . $HTTP_GET_VARS['pID'] : ''))); ?></td> </tr> </table> </form> <?php } elseif .... { .... } require(DIR_WS_INCLUDES . 'template_bottom.php'); require(DIR_WS_INCLUDES . 'application_bottom.php'); ?>
Voici le code source de kcfinder provenant du site de kcfinderhttp://kcfinder.sunhater.com/demos/image :

Code : Tout sélectionner

<style type="text/css"> #image { width: 200px; height: 200px; overflow: hidden; cursor: pointer; background: #000; color: #fff; } #image img { visibility: hidden; } </style> <script type="text/javascript"> function openKCFinder(div) { window.KCFinder = { callBack: function(url) { window.KCFinder = null; div.innerHTML = '<div style="margin:5px">Loading...</div>'; var img = new Image(); img.src = url; img.onload = function() { div.innerHTML = '<img id="img" src="' + url + '" />'; var img = document.getElementById('img'); var o_w = img.offsetWidth; var o_h = img.offsetHeight; var f_w = div.offsetWidth; var f_h = div.offsetHeight; if ((o_w > f_w) || (o_h > f_h)) { if ((f_w / f_h) > (o_w / o_h)) f_w = parseInt((o_w * f_h) / o_h); else if ((f_w / f_h) < (o_w / o_h)) f_h = parseInt((o_h * f_w) / o_w); img.style.width = f_w + "px"; img.style.height = f_h + "px"; } else { f_w = o_w; f_h = o_h; } img.style.marginLeft = parseInt((div.offsetWidth - f_w) / 2) + 'px'; img.style.marginTop = parseInt((div.offsetHeight - f_h) / 2) + 'px'; img.style.visibility = "visible"; } } }; window.open('/demo/kcfinder/browse.php?type=images&dir=images/public', 'kcfinder_image', 'status=0, toolbar=0, location=0, menubar=0, ' + 'directories=0, resizable=1, scrollbars=0, width=800, height=600' ); } </script> <div id="image" onclick="openKCFinder(this)"><div style="margin:5px">Click here to choose an image</div></div>
Voici comment j'ai commencé à intégrer/modifier le code, mais je n'arrive pas à aller plus loin :

Code : Tout sélectionner

<tr> <td class="main" valign="top"><?php echo TEXT_ELEMENTS_IMAGE; ?></td> <td class="main" style="padding-left: 30px; text-align:center;"> <ul id="piList" style="list-style:none;"> <?php $pi_counter = 0; foreach ($pInfo->elements_larger_images as $pi) { $pi_counter++; echo ' <li id="piId' . $pi_counter . '" class="ui-state-default"> <a href="#" onclick="showPiDelConfirm(' . $pi_counter . ');return false;" class="ui-icon ui-icon-trash" style="float: right;"></a> <br /><br /><a href="' . DIR_WS_CATALOG_IMAGES . $pi['image'] . '" target="_blank">' . tep_info_image($pi['image'], '', '100', '75') . '</a> <br /><small>' . $pi['image'] . '</small> <br />' . tep_draw_file_field('elements_image_large_' . $pi['id']) . ' <br /><br />' . TEXT_ELEMENTS_LARGE_IMAGE_HTML_CONTENT . ' <br />' . tep_draw_textarea_field('elements_image_htmlcontent_' . $pi['id'], 'soft', '40', '3', $pi['htmlcontent']) . ' </li>'; } ?> </ul> <div style="text-align:left;"><a href="#" onclick="addNewPiForm();return false;"><?php echo tep_image(HTTP_SERVER . DIR_WS_ADMIN . DIR_WS_IMAGES . 'ajouter_big.png', TEXT_ELEMENTS_ADD_LARGE_IMAGE, '40', '40'); ?></a></div> <div id="piDelConfirm" title="<?php echo TEXT_ELEMENTS_LARGE_IMAGE_DELETE_TITLE; ?>"> <p><span class="ui-icon ui-icon-alert" style="float:left; margin:0 7px 20px 0;"></span><?php echo TEXT_ELEMENTS_LARGE_IMAGE_CONFIRM_DELETE; ?></p> </div> <script type="text/javascript"> $('#piList').sortable({ containment: 'parent' }); var piSize = <?php echo $pi_counter; ?>; function addNewPiForm() { piSize++; $('#piList').append('<li id="piId' + piSize + '" style="background-color:#6E9E09;"><span class="ui-icon ui-icon-arrowthick-2-n-s" style="float: right;"></span><a href="#" onclick="showPiDelConfirm(' + piSize + ');return false;" class="ui-icon ui-icon-trash" style="float: right;"></a><strong><?php echo TEXT_ELEMENTS_LARGE_IMAGE; ?></strong><div class="kcfinder" onclick="openKCFinder(this)" id="elements_image_large_new_' + piSize + '" /></div><br /><br /><?php echo TEXT_ELEMENTS_LARGE_IMAGE_HTML_CONTENT; ?><br /><textarea name="elements_image_htmlcontent_new_' + piSize + '" wrap="soft" cols="40" rows="3"></textarea></li>'); } var piDelConfirmId = 0; $('#piDelConfirm').dialog({ autoOpen: false, resizable: false, draggable: false, modal: true, buttons: { 'Delete': function() { $('#piId' + piDelConfirmId).effect('blind').remove(); $(this).dialog('close'); }, Cancel: function() { $(this).dialog('close'); } } }); function showPiDelConfirm(piId) { piDelConfirmId = piId; $('#piDelConfirm').dialog('open'); } </script> <script type="text/javascript"> function openKCFinder(div) { window.KCFinder = { callBack: function(url) { window.KCFinder = null; div.innerHTML = '<div style="margin:5px">Loading...</div>'; var img = new Image(); img.src = url; img.onload = function() { div.innerHTML = '<img id="img" src="' + url + '" />'; var img = document.getElementById('img'); var o_w = img.offsetWidth; var o_h = img.offsetHeight; var f_w = div.offsetWidth; var f_h = div.offsetHeight; if ((o_w > f_w) || (o_h > f_h)) { if ((f_w / f_h) > (o_w / o_h)) f_w = parseInt((o_w * f_h) / o_h); else if ((f_w / f_h) < (o_w / o_h)) f_h = parseInt((o_h * f_w) / o_w); img.style.width = f_w + "px"; img.style.height = f_h + "px"; } else { f_w = o_w; f_h = o_h; } img.style.marginLeft = parseInt((div.offsetWidth - f_w) / 2) + 'px'; img.style.marginTop = parseInt((div.offsetHeight - f_h) / 2) + 'px'; img.style.visibility = "visible"; } } }; window.open('<?php echo HTTP_SERVER . DIR_WS_ADMIN . 'kcfinder/browse.php?type=images'; ?>', 'kcfinder_image', 'status=0, toolbar=0, location=0, menubar=0, ' + 'directories=0, resizable=1, scrollbars=0, width=800, height=600' ); } </script> <style type="text/css"> #piList { margin: 0; padding: 0; -webkit-columns: 2; -moz-columns: 2; columns: 2; -webkit-column-gap: 150px; -moz-column-gap: 150px; column-gap: 150px; } #piList li { margin: 5px 0; padding: 2px; } .kcfinder { width: 100px; height: 75px; overflow: hidden; cursor: pointer; border-color:#FFFFFF; border-style:solid; border-width:medium; margin-left:70px; } .kcfinder img { visibility: hidden; } </style>
Auriez-vous un indice à me donner ??

Merci pour votre aide.

Re: kcfinder et mysql

Posté : 11 juil. 2014, 12:21
par damien_55
Hello,

J'ai lu ton post. Enfin, j'essaie. C'est quoi ton problème au juste ? une erreur qui s'affiche, un probleme d'intégration mysql sur une ligne particulière.Si tu peux aller à l'essentiel, ça arrangerai tout le monde.

De même, il est pas utile de coller tout ton code (en gros je peux coller toutes les pages d'un site et de sa doc et dire j'ai un probleme, avez vous une solution ??).

Si tu veux des contributeurs:

- soit plus précis dans ta demande et réduis ton code à l'essentiel. (les css, on s'en fout, la doc kcfinder, un lien suffit (ceux qui s'interressent à la question s'auront cliquer sur le lien), utilises les balise de code pour avoir la coloration syntaxique etc... parce que là ça donne pas du tout envie.

Re: kcfinder et mysql

Posté : 11 juil. 2014, 13:06
par Goo69
merci pour ce retour damien_55 et désolé pour ma présentation laissant à désirer.

Voici plus précisément le problème :
  • 1- j'ai un catalogue permettant d'enregistrer des thématiques et dans chaque thématiques il y a des éléments. Une page élément se compose d'un titre, d'une description et d'images. Ces images, on peut en ajouter 1 à x
switch ($action) {
      case 'insert_element':
      case 'update_element':
        if (isset($HTTP_GET_VARS['pID'])) $elements_id = tep_db_prepare_input($HTTP_GET_VARS['pID']);

        $elements_image = new upload('elements_image');
        $elements_image->set_destination(DIR_FS_CATALOG_IMAGES);
        if ($elements_image->parse() && $elements_image->save()) {
          $sql_data_array['elements_image'] = tep_db_prepare_input($elements_image->filename);
        }

        if ($action == 'insert_element') {
          $insert_sql_data = array('elements_date_added' => 'now()');

          $sql_data_array = array_merge($sql_data_array, $insert_sql_data);

          tep_db_perform(TABLE_ELEMENTS, $sql_data_array);
          $elements_id = tep_db_insert_id();

          tep_db_query("insert into " . TABLE_ELEMENTS_TO_THEMES . " (elements_id, themes_id) values ('" . (int)$elements_id . "', '" . (int)$current_theme_id . "')");
        } elseif ($action == 'update_element') {
          $update_sql_data = array('elements_last_modified' => 'now()');

          $sql_data_array = array_merge($sql_data_array, $update_sql_data);

          tep_db_perform(TABLE_ELEMENTS, $sql_data_array, 'update', "elements_id = '" . (int)$elements_id . "'");
        }

        $languages = tep_get_languages();
        for ($i=0, $n=sizeof($languages); $i<$n; $i++) {
          $language_id = $languages[$i]['id'];

          $sql_data_array = array('elements_name' => tep_db_prepare_input($HTTP_POST_VARS['elements_name'][$language_id]),
                                  'elements_description' => tep_db_prepare_input($HTTP_POST_VARS['elements_description'][$language_id]));

          if ($action == 'insert_element') {
            $insert_sql_data = array('elements_id' => $elements_id,
                                     'language_id' => $language_id);

            $sql_data_array = array_merge($sql_data_array, $insert_sql_data);

            tep_db_perform(TABLE_ELEMENTS_DESCRIPTION, $sql_data_array);
          } elseif ($action == 'update_element') {
            tep_db_perform(TABLE_ELEMENTS_DESCRIPTION, $sql_data_array, 'update', "elements_id = '" . (int)$elements_id . "' and language_id = '" . (int)$language_id . "'");
          }
        }

        $pi_sort_order = 0;
        $piArray = array(0);

        foreach ($HTTP_POST_FILES as $key => $value) {
// Update existing large element images
          if (preg_match('/^elements_image_large_([0-9]+)$/', $key, $matches)) {
            $pi_sort_order++;

            $sql_data_array = array('htmlcontent' => tep_db_prepare_input($HTTP_POST_VARS['elements_image_htmlcontent_' . $matches[1]]),
                                    'sort_order' => $pi_sort_order);

            $t = new upload($key);
            $t->set_destination(DIR_FS_CATALOG_IMAGES);
            if ($t->parse() && $t->save()) {
              $sql_data_array['image'] = tep_db_prepare_input($t->filename);
            }

            tep_db_perform(TABLE_ELEMENTS_IMAGES, $sql_data_array, 'update', "elements_id = '" . (int)$elements_id . "' and id = '" . (int)$matches[1] . "'");

            $piArray[] = (int)$matches[1];
          } elseif (preg_match('/^elements_image_large_new_([0-9]+)$/', $key, $matches)) {
// Insert new large element images
            $sql_data_array = array('elements_id' => (int)$elements_id,
                                    'htmlcontent' => tep_db_prepare_input($HTTP_POST_VARS['elements_image_htmlcontent_new_' . $matches[1]]));

            $t = new upload($key);
            $t->set_destination(DIR_FS_CATALOG_IMAGES);
            if ($t->parse() && $t->save()) {
              $pi_sort_order++;

              $sql_data_array['image'] = tep_db_prepare_input($t->filename);
              $sql_data_array['sort_order'] = $pi_sort_order;

              tep_db_perform(TABLE_ELEMENTS_IMAGES, $sql_data_array);

              $piArray[] = tep_db_insert_id();
            }
          }
        }

        $element_images_query = tep_db_query("select image from " . TABLE_ELEMENTS_IMAGES . " where elements_id = '" . (int)$elements_id . "' and id not in (" . implode(',', $piArray) . ")");
        if (tep_db_num_rows($element_images_query)) {
          while ($element_images = tep_db_fetch_array($element_images_query)) {
            $duplicate_image_query = tep_db_query("select count(*) as total from " . TABLE_ELEMENTS_IMAGES . " where image = '" . tep_db_input($element_images['image']) . "'");
            $duplicate_image = tep_db_fetch_array($duplicate_image_query);

            if ($duplicate_image['total'] < 2) {
              if (file_exists(DIR_FS_CATALOG_IMAGES . $element_images['image'])) {
                @unlink(DIR_FS_CATALOG_IMAGES . $element_images['image']);
              }
            }
          }

          tep_db_query("delete from " . TABLE_ELEMENTS_IMAGES . " where elements_id = '" . (int)$elements_id . "' and id not in (" . implode(',', $piArray) . ")");
        }

        if (USE_CACHE == 'true') {
          tep_reset_cache_block('themes');
          tep_reset_cache_block('also_purchased');
        }

        tep_redirect(tep_href_link(FILENAME_THEMES, 'tPath=' . $tPath . '&pID=' . $elements_id));
        break;
        <ul id="piList" style="list-style:none;">
<?php
    $pi_counter = 0;

    foreach ($pInfo->elements_larger_images as $pi) {
      $pi_counter++;

      echo '   <li id="piId' . $pi_counter . '" class="ui-state-default">
               <a href="#" onclick="showPiDelConfirm(' . $pi_counter . ');return false;" class="ui-icon ui-icon-trash" style="float: right;"></a>
               

<a href="' . DIR_WS_CATALOG_IMAGES . $pi['image'] . '" target="_blank">' . tep_info_image($pi['image'], '', '100', '75') . '</a>
               
<small>' . $pi['image'] . '</small>
               
' . tep_draw_file_field('elements_image_large_' . $pi['id']) . '
               

' . TEXT_ELEMENTS_LARGE_IMAGE_HTML_CONTENT . '
               
' . tep_draw_textarea_field('elements_image_htmlcontent_' . $pi['id'], 'soft', '40', '3', $pi['htmlcontent']) . '
            </li>';
    }
?>
        </ul>

        <div style="text-align:left;"><a href="#" onclick="addNewPiForm();return false;"><?php echo tep_image(HTTP_SERVER . DIR_WS_ADMIN . DIR_WS_IMAGES . 'ajouter_big.png', TEXT_ELEMENTS_ADD_LARGE_IMAGE, '40', '40'); ?></a></div>

         <div id="piDelConfirm" title="<?php echo TEXT_ELEMENTS_LARGE_IMAGE_DELETE_TITLE; ?>">
           <p><span class="ui-icon ui-icon-alert" style="float:left; margin:0 7px 20px 0;"></span><?php echo TEXT_ELEMENTS_LARGE_IMAGE_CONFIRM_DELETE; ?></p>
         </div>
[javascript]
$('#piList').sortable({
containment: 'parent'
});

var piSize = <?php echo $pi_counter; ?>;

function addNewPiForm() {
piSize++;

$('#piList').append('<li id="piId' + piSize + '" style="background-color:#6E9E09;"><span class="ui-icon ui-icon-arrowthick-2-n-s" style="float: right;"></span><a href="#" onclick="showPiDelConfirm(' + piSize + ');return false;" class="ui-icon ui-icon-trash" style="float: right;"></a><strong><?php echo TEXT_ELEMENTS_LARGE_IMAGE; ?></strong>
<input type="file" name="elements_image_large_new_' + piSize + '" />

<?php echo TEXT_ELEMENTS_LARGE_IMAGE_HTML_CONTENT; ?>
<textarea name="elements_image_htmlcontent_new_' + piSize + '" wrap="soft" cols="40" rows="3"></textarea></li>');
}

var piDelConfirmId = 0;

$('#piDelConfirm').dialog({
autoOpen: false,
resizable: false,
draggable: false,
modal: true,
buttons: {
'Delete': function() {
$('#piId' + piDelConfirmId).effect('blind').remove();
$(this).dialog('close');
},
Cancel: function() {
$(this).dialog('close');
}
}
});

function showPiDelConfirm(piId) {
piDelConfirmId = piId;

$('#piDelConfirm').dialog('open');
}
[/javascript]
  • 3- je ne sais pas comment intégrer le code de kcfinder à la page élément
Est-ce un peu plus compréhensible ?

Encore merci pour votre patience !

Re: kcfinder et mysql

Posté : 11 juil. 2014, 14:21
par damien_55
Je ne comprend toujours pas.

La doc kcfinder est claire. je ne vois pas le probleme à integrer le script à une page. il faut que tu l'integeres à ton html de ta page element. le js en haut de page, et
<div id="image" onclick="openKCFinder(this)"><div style="margin:5px">Click here to choose an image</div></div>
où tu souhaites que l'utilisateur clique pour choisir l'image.