From 97fb3085838033ed012d01a46cd4ba4aa77dc024 Mon Sep 17 00:00:00 2001 From: Angel Fernando Quiroz Campos Date: Mon, 12 Jan 2015 18:24:57 -0500 Subject: [PATCH] Attach badge images to skills - refs BT#9082 --- main/admin/index.php | 1 + main/admin/openbadges/create.php | 68 +++++++++++ main/admin/openbadges/index.php | 25 ++++ main/admin/openbadges/issuer.php | 29 +++++ main/inc/lib/skill.lib.php | 2 +- main/template/default/openbadges/create.tpl | 109 ++++++++++++++++++ main/template/default/openbadges/index.tpl | 32 +++++ main/template/default/openbadges/issuer.tpl | 42 +++++++ ...267bb97ace374bfb53cc3cb71daa07bf4f0988.png | Bin 0 -> 7690 bytes 9 files changed, 307 insertions(+), 1 deletion(-) create mode 100644 main/admin/openbadges/create.php create mode 100644 main/admin/openbadges/index.php create mode 100644 main/admin/openbadges/issuer.php create mode 100644 main/template/default/openbadges/create.tpl create mode 100644 main/template/default/openbadges/index.tpl create mode 100644 main/template/default/openbadges/issuer.tpl create mode 100644 main/upload/data/badges/ac267bb97ace374bfb53cc3cb71daa07bf4f0988.png diff --git a/main/admin/index.php b/main/admin/index.php index d253267552..b33bdbf5f7 100644 --- a/main/admin/index.php +++ b/main/admin/index.php @@ -293,6 +293,7 @@ if (api_is_platform_admin()) { //$items[] = array('url'=>'skills_profile.php', 'label' => get_lang('SkillsProfile')); $items[] = array('url'=>api_get_path(WEB_CODE_PATH).'social/skills_ranking.php', 'label' => get_lang('SkillsRanking')); $items[] = array('url'=>'skills_gradebook.php', 'label' => get_lang('SkillsAndGradebooks')); + $items[] = array('url'=> api_get_path(WEB_CODE_PATH) . 'admin/openbadges/index.php', 'label' => get_lang('OpenBadges')); $blocks['skills']['items'] = $items; $blocks['skills']['extra'] = null; $blocks['skills']['search_form'] = null; diff --git a/main/admin/openbadges/create.php b/main/admin/openbadges/create.php new file mode 100644 index 0000000000..7675c4d103 --- /dev/null +++ b/main/admin/openbadges/create.php @@ -0,0 +1,68 @@ + + * @package chamilo.admin.openbadges + */ +$cidReset = true; + +require_once '../../inc/global.inc.php'; +require_once '../../inc/lib/fileUpload.lib.php'; + +$this_section = SECTION_PLATFORM_ADMIN; + +$skillId = intval($_GET['id']); + +$objSkill = new Skill(); +$skill = $objSkill->get($skillId); + +if ($_SERVER['REQUEST_METHOD'] === 'POST') { + if ($_FILES['image']['error'] == 0) { + $dirPermissions = api_get_permissions_for_new_directories(); + $sysCodePath = api_get_path(SYS_CODE_PATH); + + $fileDir = "upload/data/badges/"; + $fileName = sha1($_POST['name']) . ".png"; + + if (!file_exists($sysCodePath . $fileDir)) { + mkdir($sysCodePath . $fileDir, $dirPermissions, true); + } + + if ($_FILES['image']['error'] == 0) { + unlink($sysCodePath . $skill['info']); + + $imageExtraField = new Image($_FILES['image']['tmp_name']); + $imageExtraField->send_image($sysCodePath . $fileDir . $fileName, -1, 'png'); + } + } + + $params = array( + 'name' => $_POST['name'], + 'description' => $_POST['description'], + 'icon' => $fileDir . $fileName, + 'criteria' => $_POST['criteria'], + 'id' => $skillId + ); + + $objSkill->update($params); +} + +$interbreadcrumb = array( + array( + 'url' => api_get_path(WEB_CODE_PATH) . 'admin/index.php', + 'name' => get_lang('Administration') + ), + array( + 'url' => api_get_path(WEB_CODE_PATH) . 'admin/openbadges/index.php', + 'name' => get_lang('OpenBadges') + ) +); + +$tpl = new Template('CreateOpenBadge'); +$tpl->assign('platformAdminEmail', get_setting('emailAdministrator')); +$tpl->assign('skill', $skill); + +$contentTemplate = $tpl->get_template('openbadges/create.tpl'); + +$tpl->display($contentTemplate); diff --git a/main/admin/openbadges/index.php b/main/admin/openbadges/index.php new file mode 100644 index 0000000000..3e6dcef50d --- /dev/null +++ b/main/admin/openbadges/index.php @@ -0,0 +1,25 @@ + + * @package chamilo.admin.openbadges + */ +$cidReset = true; + +require_once '../../inc/global.inc.php'; + +$this_section = SECTION_PLATFORM_ADMIN; + +$interbreadcrumb = array( + array( + 'url' => api_get_path(WEB_CODE_PATH) . 'admin/index.php', + 'name' => get_lang('Administration') + ) +); + +$tpl = new Template('OpenBadges'); + +$contentTemplate = $tpl->get_template('openbadges/index.tpl'); + +$tpl->display($contentTemplate); diff --git a/main/admin/openbadges/issuer.php b/main/admin/openbadges/issuer.php new file mode 100644 index 0000000000..1c2beda64e --- /dev/null +++ b/main/admin/openbadges/issuer.php @@ -0,0 +1,29 @@ + + * @package chamilo.admin.openbadges + */ +$cidReset = true; + +require_once '../../inc/global.inc.php'; + +$this_section = SECTION_PLATFORM_ADMIN; + +$interbreadcrumb = array( + array( + 'url' => api_get_path(WEB_CODE_PATH) . 'admin/index.php', + 'name' => get_lang('Administration') + ), + array( + 'url' => api_get_path(WEB_CODE_PATH) . 'admin/openbadges/index.php', + 'name' => get_lang('OpenBadges') + ) +); + +$tpl = new Template('OpenBadges'); + +$contentTemplate = $tpl->get_template('openbadges/issuer.tpl'); + +$tpl->display($contentTemplate); diff --git a/main/inc/lib/skill.lib.php b/main/inc/lib/skill.lib.php index bf0cf48ae8..2c6e9137a7 100755 --- a/main/inc/lib/skill.lib.php +++ b/main/inc/lib/skill.lib.php @@ -376,7 +376,7 @@ class SkillRelUser extends Model class Skill extends Model { - public $columns = array('id', 'name', 'description', 'access_url_id', 'short_code'); + public $columns = array('id', 'name', 'description', 'access_url_id', 'short_code', 'icon', 'criteria'); public $required = array('name'); /** Array of colours by depth, for the coffee wheel. Each depth has 4 col */ diff --git a/main/template/default/openbadges/create.tpl b/main/template/default/openbadges/create.tpl new file mode 100644 index 0000000000..8d29eb3cfd --- /dev/null +++ b/main/template/default/openbadges/create.tpl @@ -0,0 +1,109 @@ +{% extends "default/layout/main.tpl" %} + +{% block body %} + +
+

{{ 'Badges' | get_lang }}

+ +
+
+
+
+

Design a new badge. Download from the design tool. And Upload in your platform.

+

+ +

+
+
+ {{ 'BadgePreview' | get_lang }} +
+
+
+
+
+ {{ 'SkillInfo' | get_lang }} +
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+
+ +
+
+
+
+
+
+
+{% endblock %} diff --git a/main/template/default/openbadges/index.tpl b/main/template/default/openbadges/index.tpl new file mode 100644 index 0000000000..ae9501244a --- /dev/null +++ b/main/template/default/openbadges/index.tpl @@ -0,0 +1,32 @@ +{% extends "default/layout/main.tpl" %} + +{% block body %} +
+

{{ 'Badges' | get_lang }}

+ +
+
+
+

Introducing Open Badges

+

A new online standard to recognize and verify learning

+

+ http://openbadges.org/ +

+
+
+
+
+{% endblock %} diff --git a/main/template/default/openbadges/issuer.tpl b/main/template/default/openbadges/issuer.tpl new file mode 100644 index 0000000000..9bfeb3278f --- /dev/null +++ b/main/template/default/openbadges/issuer.tpl @@ -0,0 +1,42 @@ +{% extends "default/layout/main.tpl" %} + +{% block body %} +
+

{{ 'Badges' | get_lang }}

+ +
+
+
+
+ {{ 'IssuerInfo' | get_lang }} +
+ +
+ {{ _s.institution }} +
+
+
+ +
+ {{ _p.web }} +
+
+
+
+
+
+
+{% endblock %} diff --git a/main/upload/data/badges/ac267bb97ace374bfb53cc3cb71daa07bf4f0988.png b/main/upload/data/badges/ac267bb97ace374bfb53cc3cb71daa07bf4f0988.png new file mode 100644 index 0000000000000000000000000000000000000000..7c0ed0380e62fc9296d14af605f60cdd52e2c916 GIT binary patch literal 7690 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 literal 0 HcmV?d00001