par
Goo69 » 11 juil. 2014, 12:00
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.
Bonjour au forum,
J'essaie d'intégrer kcfinder à une page comprenant un titre, une description et l'ajout possible de plusieurs images.
[b]Voici le code avant intégration de kcfinder :[/b]
[code]
<?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');
?>
[/code]
[b]Voici le code source de kcfinder provenant du site de kcfinder[url]http://kcfinder.sunhater.com/demos/image[/url] :[/b]
[code]
<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>
[/code]
[b]Voici comment j'ai commencé à intégrer/modifier le code, mais je n'arrive pas à aller plus loin :[/b]
[code]
<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>
[/code]
Auriez-vous un indice à me donner ??
Merci pour votre aide.