Added the CropImage Plugin to the session images

pull/2487/head
José Loguercio 10 years ago
parent a8e75a9180
commit 82560f43e6
  1. 14
      main/inc/lib/extra_field.lib.php
  2. 6
      main/inc/lib/extra_field_value.lib.php
  3. 2
      main/inc/lib/sessionmanager.lib.php
  4. 73
      main/session/session_add.php
  5. 73
      main/session/session_edit.php

@ -1368,9 +1368,9 @@ EOF;
case ExtraField::FIELD_TYPE_FILE_IMAGE:
$fieldVariable = "extra_{$field_details['variable']}";
$fieldTexts = array(
$fieldTexts = [
$field_details['display_text']
);
];
if (is_array($extraData) && array_key_exists($fieldVariable, $extraData)) {
@ -1378,22 +1378,26 @@ EOF;
$fieldTexts[] = Display::img(
api_get_path(WEB_UPLOAD_PATH) . $extraData[$fieldVariable],
$field_details['display_text'],
array('width' => '300')
['width' => '300']
);
}
}
if ($fieldTexts[0] === 'Image') {
$fieldTexts[0] = get_lang($fieldTexts[0]);
}
$form->addElement(
'file',
$fieldVariable,
$fieldTexts,
array('accept' => 'image/*')
['accept' => 'image/*', 'id' => 'extra_image']
);
$form->applyFilter('extra_'.$field_details['variable'], 'stripslashes');
$form->applyFilter('extra_'.$field_details['variable'], 'trim');
$allowed_picture_types = array ('jpg', 'jpeg', 'png', 'gif');
$allowed_picture_types = ['jpg', 'jpeg', 'png', 'gif'];
$form->addRule(
'extra_'.$field_details['variable'],
get_lang('OnlyImagesAllowed') . ' ('.implode(',', $allowed_picture_types).')',

@ -222,7 +222,13 @@ class ExtraFieldValue extends Model
}
if ($value['error'] == 0) {
//Crop the image to adjust 4:3 ratio
$crop = new Image($value['tmp_name']);
$crop->crop($value['crop_parameters']);
$imageExtraField = new Image($value['tmp_name']);
$imageExtraField->resize(400);
$imageExtraField->send_image($fileDir . $fileName, -1, 'png');
$newParams = array(
'item_id' => $params['item_id'],

@ -1334,7 +1334,7 @@ class SessionManager
* @param integer $sessionCategoryId
* @param int $visibility
* @param string $description
* @param bool $showDescription
* @param int $showDescription
* @param int $duration
* @param array $extraFields
* @param int $sessionAdminId

@ -22,6 +22,57 @@ api_protect_limit_for_session_admin();
$formSent=0;
$errorMsg='';
// Crop picture plugin for session images
$htmlHeadXtra[] = '<link href="'. api_get_path(WEB_PATH) .'web/assets/cropper/dist/cropper.min.css" rel="stylesheet">';
$htmlHeadXtra[] = '<script src="'. api_get_path(WEB_PATH) .'web/assets/cropper/dist/cropper.min.js"></script>';
$htmlHeadXtra[] = '<script>
$(document).ready(function() {
var $image = $("#previewImage");
var $input = $("[name=\'cropResult\']");
var $cropButton = $("#cropButton");
$("input:file").change(function() {
var oFReader = new FileReader();
oFReader.readAsDataURL(document.getElementById("extra_image").files[0]);
$("#extra_image").next("p").remove();
oFReader.onload = function (oFREvent) {
$image.attr("src", this.result);
$("#labelCropImage").html("'.get_lang('Preview').'");
$("#cropImage").addClass("thumbnail");
$cropButton.removeClass("hidden");
// Destroy cropper
$image.cropper("destroy");
$image.cropper({
aspectRatio: 4 / 3,
responsive : true,
center : false,
guides : false,
movable: false,
zoomable: false,
rotatable: false,
scalable: false,
crop: function(e) {
// Output the result data for cropping image.
$input.val(e.x+","+e.y+","+e.width+","+e.height);
}
});
};
});
$("#cropButton").on("click", function() {
var canvas = $image.cropper("getCroppedCanvas");
var dataUrl = canvas.toDataURL();
$image.attr("src", dataUrl);
$image.cropper("destroy");
$cropButton.addClass("hidden");
return false;
});
});
</script>';
$interbreadcrumb[] = array(
'url' => 'session_list.php',
'name' => get_lang('SessionList'),
@ -141,6 +192,21 @@ $(function() {
});
</script>';
$form->addHtml(''
. '<div class="form-group">'
. '<label for="cropImage" id="labelCropImage" class="col-sm-2 control-label"></label>'
. '<div class="col-sm-8">'
. '<div id="cropImage" class="cropCanvas">'
. '<img id="previewImage" >'
. '</div>'
. '<div>'
. '<button class="btn btn-primary hidden" name="cropButton" id="cropButton"><em class="fa fa-crop"></em> '.get_lang('CropYourPicture').'</button>'
. '</div>'
. '</div>'
. '</div>'
. '');
$form->addHidden('cropResult', '');
$form->addButtonNext(get_lang('NextStep'));
if (!$formSent) {
@ -171,14 +237,19 @@ if ($form->validate()) {
$description = $params['description'];
$showDescription = isset($params['show_description']) ? 1: 0;
$sendSubscriptionNotification = isset($params['send_subscription_notification']);
$isThisImageCropped = isset($params['cropResult']);
$extraFields = array();
$extraFields = [];
foreach ($params as $key => $value) {
if (strpos($key, 'extra_') === 0) {
$extraFields[$key] = $value;
}
}
if (isset($extraFields['extra_image']) && $isThisImageCropped) {
$extraFields['extra_image']['crop_parameters'] = $params['cropResult'];
}
$return = SessionManager::create_session(
$name,
$startDate,

@ -14,6 +14,57 @@ $this_section = SECTION_PLATFORM_ADMIN;
$formSent = 0;
// Crop picture plugin for session images
$htmlHeadXtra[] = '<link href="'. api_get_path(WEB_PATH) .'web/assets/cropper/dist/cropper.min.css" rel="stylesheet">';
$htmlHeadXtra[] = '<script src="'. api_get_path(WEB_PATH) .'web/assets/cropper/dist/cropper.min.js"></script>';
$htmlHeadXtra[] = '<script>
$(document).ready(function() {
var $image = $("#previewImage");
var $input = $("[name=\'cropResult\']");
var $cropButton = $("#cropButton");
$("input:file").change(function() {
var oFReader = new FileReader();
oFReader.readAsDataURL(document.getElementById("extra_image").files[0]);
$("#extra_image").next("p").remove();
oFReader.onload = function (oFREvent) {
$image.attr("src", this.result);
$("#labelCropImage").html("'.get_lang('Preview').'");
$("#cropImage").addClass("thumbnail");
$cropButton.removeClass("hidden");
// Destroy cropper
$image.cropper("destroy");
$image.cropper({
aspectRatio: 4 / 3,
responsive : true,
center : false,
guides : false,
movable: false,
zoomable: false,
rotatable: false,
scalable: false,
crop: function(e) {
// Output the result data for cropping image.
$input.val(e.x+","+e.y+","+e.width+","+e.height);
}
});
};
});
$("#cropButton").on("click", function() {
var canvas = $image.cropper("getCroppedCanvas");
var dataUrl = canvas.toDataURL();
$image.attr("src", dataUrl);
$image.cropper("destroy");
$cropButton.addClass("hidden");
return false;
});
});
</script>';
// Database Table Definitions
$tbl_user = Database::get_main_table(TABLE_MAIN_USER);
$tbl_session = Database::get_main_table(TABLE_MAIN_SESSION);
@ -120,6 +171,21 @@ $(function() {
});
</script>';
$form->addHtml(''
. '<div class="form-group">'
. '<label for="cropImage" id="labelCropImage" class="col-sm-2 control-label"></label>'
. '<div class="col-sm-8">'
. '<div id="cropImage" class="cropCanvas">'
. '<img id="previewImage" >'
. '</div>'
. '<div>'
. '<button class="btn btn-primary hidden" name="cropButton" id="cropButton"><em class="fa fa-crop"></em> '.get_lang('CropYourPicture').'</button>'
. '</div>'
. '</div>'
. '</div>'
. '');
$form->addHidden('cropResult', '');
$form->addButtonUpdate(get_lang('ModifyThisSession'));
$formDefaults = $sessionInfo;
@ -156,14 +222,19 @@ if ($form->validate()) {
$description = $params['description'];
$showDescription = isset($params['show_description']) ? 1: 0;
$sendSubscriptionNotification = isset($params['send_subscription_notification']);
$isThisImageCropped = isset($params['cropResult']);
$extraFields = array();
$extraFields = [];
foreach ($params as $key => $value) {
if (strpos($key, 'extra_') === 0) {
$extraFields[$key] = $value;
}
}
if (isset($extraFields['extra_image']) && $isThisImageCropped) {
$extraFields['extra_image']['crop_parameters'] = $params['cropResult'];
}
$return = SessionManager::edit_session(
$id,
$name,

Loading…
Cancel
Save