123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152 |
- <?php
- /* Integrate svg-edit libraries with Chamilo default documents
- * @author Juan Carlos Raña Trabado
- * @since 25/september/2010
- */
- require_once '../../../../../../inc/global.inc.php';
- //Add security from Chamilo
- api_protect_course_script();
- api_block_anonymous_users();
- $is_allowed_to_edit = api_is_allowed_to_edit(null, true);
- $course_info = api_get_course_info();
- $groupId = api_get_group_id();
- $group_properties = GroupManager::get_group_properties($groupId);
- $groupIid = isset($group_properties['iid']) ? $group_properties['iid'] : 0;
- $groupdirpath = $group_properties['directory'];
- $group_disk_path = api_get_path(SYS_COURSE_PATH).$course_info['path'].'/document'.$groupdirpath.'/';
- $group_web_path = api_get_path(WEB_COURSE_PATH).$course_info['path'].'/document'.$groupdirpath.'/';
- //get all group files and folders
- $docs_and_folders = DocumentManager::getAllDocumentData(
- $course_info,
- $groupdirpath,
- $groupIid,
- null,
- $is_allowed_to_edit,
- false
- );
- //get all group filenames
- $array_to_search = !empty($docs_and_folders) ? $docs_and_folders : [];
- $all_files = [];
- if (count($array_to_search) > 0) {
- foreach ($array_to_search as $key => $value) {
- $all_files[] = basename($array_to_search[$key]['path']);
- }
- }
- //get all svg and png group files
- $accepted_extensions = array('.svg', '.png');
- $png_svg_files = [];
- if (is_array($all_files) && count($all_files) > 0) {
- foreach ($all_files as & $file) {
- $slideshow_extension = strrchr($file, '.');
- $slideshow_extension = strtolower($slideshow_extension);
- if (in_array($slideshow_extension, $accepted_extensions)) {
- $png_svg_files[] =$file;
- }
- }
- }
- $style = '<style>';
- $style .= '@import "'.api_get_path(WEB_CSS_PATH).'base.css";';
- $style .= '@import "'.api_get_path(WEB_CSS_PATH).'themes/'.api_get_visual_theme().'/default.css";';
- $style .='</style>';
- ?>
- <!doctype html>
- <?php echo api_get_jquery_js(); ?>
- <?php echo $style ?>
- <body>
- <?php
- echo '<h2>'.get_lang('GroupSingle').': '.$group_properties['name'].'</h2>';
- if ((
- $group_properties['doc_state'] == 2 &&
- ($is_allowed_to_edit || GroupManager :: is_user_in_group($_user['user_id'], $group_properties))) ||
- $group_properties['doc_state'] == 1
- ){
- if (!empty($png_svg_files)) {
- echo '<h3>'.get_lang('SelectSVGEditImage').'</h3>';
- echo '<ul>';
- foreach($png_svg_files as $filename) {
- $image = $group_disk_path.$filename;
- if (strpos($filename, "svg")){
- $new_sizes['width'] = 60;
- $new_sizes['height'] = 60;
- } else {
- $new_sizes = api_resize_image($image, 60, 60);
- }
- echo '<li style="display:inline; padding:8px;">';
- echo '<a href = "'.$group_web_path.$filename.'" alt="'.$filename.'" title="'.$filename.'">';
- echo '<img src = "'.$group_web_path.$filename.'" width = "'.$new_sizes['width'].'" height="'.$new_sizes['height'].'" border="0"></a></li>';
- }
- echo '</ul>';
- }
- } else {
- echo Display::return_message(get_lang('OnlyAccessFromYourGroup'), 'warning');
- }
- ?>
- </body>
- <script>
- $('a').click(function() {
- var href = this.href;
- // Convert Non-SVG images to data URL first
- // (this could also have been done server-side by the library)
- if(this.href.indexOf('.svg') === -1) {
- var meta_str = JSON.stringify({
- name: $(this).text(),
- id: href
- });
- window.top.postMessage(meta_str, "*");
- var img = new Image();
- img.onload = function() {
- var canvas = document.createElement("canvas");
- canvas.width = this.width;
- canvas.height = this.height;
- // load the raster image into the canvas
- canvas.getContext("2d").drawImage(this,0,0);
- // retrieve the data: URL
- try {
- var dataurl = canvas.toDataURL();
- } catch(err) {
- // This fails in Firefox with file:// URLs :(
- alert("Data URL conversion failed: " + err);
- var dataurl = "";
- }
- window.top.postMessage('|' + href + '|' + dataurl, "*");
- }
- img.src = href;
- } else {
- // Send metadata (also indicates file is about to be sent)
- var meta_str = JSON.stringify({
- name: $(this).text(),
- id: href
- });
- window.top.postMessage(meta_str, "*");
- // Do ajax request for image's href value
- $.get(href, function(data) {
- data = '|' + href + '|' + data;
- // This is where the magic happens!
- window.top.postMessage(data, "*");
- }, 'html'); // 'html' is necessary to keep returned data as a string
- }
- return false;
- });
- </script>
|