|
|
|
@ -1715,12 +1715,12 @@ class inetOrgPerson extends baseModule implements passwordService {
|
|
|
|
|
$container->addField(new htmlAccountPageButton(get_class($this), 'photo', 'upload', _('Upload')));
|
|
|
|
|
$container->addVerticalSpacer('1rem');
|
|
|
|
|
$webcamContent = new htmlResponsiveRow();
|
|
|
|
|
$webcamContent->add(new htmlSubTitle(_('Get from webcam')), 12);
|
|
|
|
|
$webcamContent->add(new htmlSubTitle(_('Use webcam')), 12);
|
|
|
|
|
$errorMessage = new htmlStatusMessage('ERROR', '');
|
|
|
|
|
$errorMessage->setCSSClasses(array('hidden', 'lam-webcam-message'));
|
|
|
|
|
$webcamContent->add($errorMessage, 12);
|
|
|
|
|
$captureButton = new htmlButton('lam-webcam-capture', _('Start capture'));
|
|
|
|
|
$captureButton->setOnClick('window.lam.tools.startWebcamCapture(event);');
|
|
|
|
|
$captureButton->setOnClick('window.lam.tools.webcam.capture(event);');
|
|
|
|
|
$webcamContent->add($captureButton, 12, 12, 12, 'text-center');
|
|
|
|
|
$video = new htmlVideo('lam-webcam-video');
|
|
|
|
|
$video->setCSSClasses(array('hidden'));
|
|
|
|
@ -1728,7 +1728,7 @@ class inetOrgPerson extends baseModule implements passwordService {
|
|
|
|
|
$webcamContent->addVerticalSpacer('0.5rem');
|
|
|
|
|
$webcamUploadButton = new htmlButton('uploadWebcam', _('Upload'));
|
|
|
|
|
$webcamUploadButton->setCSSClasses(array('btn-lam-webcam-upload', 'hidden'));
|
|
|
|
|
$webcamUploadButton->setOnClick('window.lam.tools.startWebcamUpload();');
|
|
|
|
|
$webcamUploadButton->setOnClick('window.lam.tools.webcam.upload();');
|
|
|
|
|
$webcamContent->add($webcamUploadButton, 12, 12, 12, 'text-center');
|
|
|
|
|
$canvas = new htmlCanvas('lam-webcam-canvas');
|
|
|
|
|
$canvas->setCSSClasses(array('hidden'));
|
|
|
|
@ -3092,6 +3092,33 @@ class inetOrgPerson extends baseModule implements passwordService {
|
|
|
|
|
$uploadStatus = new htmlDiv('inetOrgPersonPhotoUploadStatus', new htmlOutputText(''));
|
|
|
|
|
$uploadStatus->setCSSClasses(array('qq-upload-list'));
|
|
|
|
|
$row->add($uploadStatus, 12);
|
|
|
|
|
// webcam button
|
|
|
|
|
$webcamContent = new htmlResponsiveRow();
|
|
|
|
|
$webcamContent->addVerticalSpacer('0.5rem');
|
|
|
|
|
$errorMessage = new htmlStatusMessage('ERROR', '');
|
|
|
|
|
$errorMessage->setCSSClasses(array('hidden', 'lam-webcam-message'));
|
|
|
|
|
$webcamContent->add($errorMessage, 12);
|
|
|
|
|
$webcamContent->addVerticalSpacer('0.5rem');
|
|
|
|
|
$captureButton = new htmlLink(_('Use webcam'), '#', '../../graphics/webcam.png', true);
|
|
|
|
|
$captureButton->setId('btn_lam-webcam-capture');
|
|
|
|
|
$captureButton->setOnClick('window.lam.tools.webcam.capture(event);');
|
|
|
|
|
$webcamContent->add($captureButton, 12, 12, 12);
|
|
|
|
|
$video = new htmlVideo('lam-webcam-video');
|
|
|
|
|
$video->setCSSClasses(array('hidden'));
|
|
|
|
|
$webcamContent->add($video, 12, 12, 12, 'text-center');
|
|
|
|
|
$webcamContent->addVerticalSpacer('1rem');
|
|
|
|
|
$webcamUploadButton = new htmlLink(_('Upload'), '#', '../../graphics/up.gif', true);
|
|
|
|
|
$webcamUploadButton->setId('btn-lam-webcam-upload');
|
|
|
|
|
$webcamUploadButton->setCSSClasses(array('btn-lam-webcam-upload', 'hidden'));
|
|
|
|
|
$webcamUploadButton->setOnClick('window.lam.tools.webcam.uploadSelfService(event, "' . getSecurityTokenName()
|
|
|
|
|
. '", "' . getSecurityTokenValue() . '", "inetOrgPerson", "user", "' . _('File upload failed!') . '", "inetOrgPersonPhotoUploadContent");');
|
|
|
|
|
$webcamContent->add($webcamUploadButton, 12, 12, 12);
|
|
|
|
|
$canvas = new htmlCanvas('lam-webcam-canvas');
|
|
|
|
|
$canvas->setCSSClasses(array('hidden'));
|
|
|
|
|
$webcamContent->add($canvas, 12);
|
|
|
|
|
$webcamDiv = new htmlDiv('lam_webcam_div', $webcamContent, array('hidden'));
|
|
|
|
|
$webcamContent->addVerticalSpacer('1rem');
|
|
|
|
|
$row->add($webcamDiv, 12);
|
|
|
|
|
return $row;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -3125,6 +3152,7 @@ class inetOrgPerson extends baseModule implements passwordService {
|
|
|
|
|
if (data.success) {
|
|
|
|
|
if (data.html) {
|
|
|
|
|
jQuery(\'#inetOrgPersonPhotoUploadContent\').html(data.html);
|
|
|
|
|
window.lam.tools.webcam.init();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
@ -3149,6 +3177,7 @@ class inetOrgPerson extends baseModule implements passwordService {
|
|
|
|
|
function inetOrgPersonDeletePhotoHandleReply(data) {
|
|
|
|
|
if (data.errorsOccured == "false") {
|
|
|
|
|
jQuery(\'#inetOrgPersonPhotoUploadContent\').html(data.html);
|
|
|
|
|
window.lam.tools.webcam.init();
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
alert(data.errormessage);
|
|
|
|
@ -3820,13 +3849,20 @@ class inetOrgPerson extends baseModule implements passwordService {
|
|
|
|
|
*/
|
|
|
|
|
private function ajaxUploadPhoto() {
|
|
|
|
|
$result = array('success' => true);
|
|
|
|
|
if (!isset($_FILES['qqfile']) || ($_FILES['qqfile']['size'] < 100)) {
|
|
|
|
|
if ((!isset($_FILES['qqfile']) || ($_FILES['qqfile']['size'] < 100)) && empty($_POST['webcamData'])) {
|
|
|
|
|
$result = array('error' => _('No file received.'));
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
$handle = fopen($_FILES['qqfile']['tmp_name'], "r");
|
|
|
|
|
$data = fread($handle, 100000000);
|
|
|
|
|
fclose($handle);
|
|
|
|
|
if (empty($_POST['webcamData'])) {
|
|
|
|
|
$handle = fopen($_FILES['qqfile']['tmp_name'], "r");
|
|
|
|
|
$data = fread($handle, 100000000);
|
|
|
|
|
fclose($handle);
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
$data = $_POST['webcamData'];
|
|
|
|
|
$data = str_replace('data:image/png;base64,', '', $data);
|
|
|
|
|
$data = base64_decode($data);
|
|
|
|
|
}
|
|
|
|
|
try {
|
|
|
|
|
include_once dirname(__FILE__) . '/../imageutils.inc';
|
|
|
|
|
$imageManipulator = ImageManipulationFactory::getImageManipulator($data);
|
|
|
|
|