Actualización
31
plugin/tour/README.md
Normal file
@@ -0,0 +1,31 @@
|
||||
Chamilo Tour Plugin
|
||||
===================
|
||||
|
||||
Shows people how to use your Chamilo LMS
|
||||
|
||||
# Set the blocks for the tour
|
||||
|
||||
Edit the `plugin/tour/config/tour.json` file adding the page classes and steps
|
||||
|
||||
To set the steps in a page, add an object like this:
|
||||
```
|
||||
{
|
||||
"pageClass": "page unique class selector",
|
||||
"steps": [
|
||||
{
|
||||
"elementSelector": "element class or id",
|
||||
"message": "LanguageVariable"
|
||||
},
|
||||
{
|
||||
"elementSelector": "element class or id",
|
||||
"message": "LanguageVariable"
|
||||
},
|
||||
]
|
||||
}
|
||||
```
|
||||
Then set the language variables inside the `plugin/tour/lang/$language.php` file
|
||||
|
||||
# Set a region to plugin
|
||||
|
||||
You must assign a Region to Tour plugin in the Configuration Settings
|
||||
Choose preferably `header_right`
|
||||
25
plugin/tour/ajax/save.ajax.php
Normal file
@@ -0,0 +1,25 @@
|
||||
<?php
|
||||
/* For licensing terms, see /license.txt */
|
||||
/**
|
||||
* Get the intro steps for the web page.
|
||||
*
|
||||
* @author Angel Fernando Quiroz Campos <angel.quiroz@beeznest.com>
|
||||
*
|
||||
* @package chamilo.plugin.tour
|
||||
*/
|
||||
/**
|
||||
* Init.
|
||||
*/
|
||||
require_once __DIR__.'/../../../main/inc/global.inc.php';
|
||||
require_once __DIR__.'/../config.php';
|
||||
|
||||
if (!api_is_anonymous()) {
|
||||
$currentPageClass = isset($_POST['page_class']) ? $_POST['page_class'] : '';
|
||||
|
||||
if (!empty($currentPageClass)) {
|
||||
$userId = api_get_user_id();
|
||||
|
||||
$tourPlugin = Tour::create();
|
||||
$tourPlugin->saveCompletedTour($currentPageClass, $userId);
|
||||
}
|
||||
}
|
||||
34
plugin/tour/ajax/steps.ajax.php
Normal file
@@ -0,0 +1,34 @@
|
||||
<?php
|
||||
/* For licensing terms, see /license.txt */
|
||||
|
||||
/**
|
||||
* Get the intro steps for the web page.
|
||||
*
|
||||
* @author Angel Fernando Quiroz Campos <angel.quiroz@beeznest.com>
|
||||
*
|
||||
* @package chamilo.plugin.tour
|
||||
*/
|
||||
require_once __DIR__.'/../../../main/inc/global.inc.php';
|
||||
|
||||
if (!api_is_anonymous()) {
|
||||
$currentPageClass = isset($_GET['page_class']) ? $_GET['page_class'] : '';
|
||||
$tourPlugin = Tour::create();
|
||||
$json = $tourPlugin->getTourConfig();
|
||||
$currentPageSteps = [];
|
||||
foreach ($json as $pageContent) {
|
||||
if ($pageContent['pageClass'] == $currentPageClass) {
|
||||
foreach ($pageContent['steps'] as $step) {
|
||||
$currentPageSteps[] = [
|
||||
'element' => $step['elementSelector'],
|
||||
'intro' => $tourPlugin->get_lang($step['message']),
|
||||
];
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!empty($currentPageSteps)) {
|
||||
echo json_encode($currentPageSteps);
|
||||
}
|
||||
}
|
||||
15
plugin/tour/config.php
Normal file
@@ -0,0 +1,15 @@
|
||||
<?php
|
||||
/* For licensing terms, see /license.txt */
|
||||
/**
|
||||
* Config the plugin.
|
||||
*
|
||||
* @author Angel Fernando Quiroz Campos <angel.quiroz@beeznest.com>
|
||||
*
|
||||
* @package chamilo.plugin.tour
|
||||
*/
|
||||
//require_once '../../main/inc/global.inc.php';
|
||||
|
||||
define('TABLE_TOUR_LOG', 'plugin_tour_log');
|
||||
|
||||
require_once api_get_path(SYS_PATH).'main/inc/global.inc.php';
|
||||
// Edit the config/tour.json file to add more pages or more elements to the guide
|
||||
117
plugin/tour/config/tour.json
Normal file
@@ -0,0 +1,117 @@
|
||||
[
|
||||
{
|
||||
"pageClass": ".section-mycampus",
|
||||
"steps": [
|
||||
{
|
||||
"elementSelector": "#logo",
|
||||
"message": "TheLogoStep"
|
||||
},
|
||||
{
|
||||
"elementSelector": ".navbar",
|
||||
"message": "TheNavbarStep"
|
||||
},
|
||||
{
|
||||
"elementSelector": "#user_image_block",
|
||||
"message": "TheUserImageBlock"
|
||||
},
|
||||
{
|
||||
"elementSelector": "#profile_block",
|
||||
"message": "TheProfileBlock"
|
||||
},
|
||||
{
|
||||
"elementSelector": "#homepage",
|
||||
"message": "TheHomePageStep"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"pageClass": ".section-mycourses",
|
||||
"steps": [
|
||||
{
|
||||
"elementSelector": ".content-column",
|
||||
"message": "YourCoursesList"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"pageClass": ".section-myagenda",
|
||||
"steps": [
|
||||
{
|
||||
"elementSelector": ".breacrumb",
|
||||
"message": "AgendaAllowsYouToSeeWhatsHappening"
|
||||
},
|
||||
{
|
||||
"elementSelector": ".actions",
|
||||
"message": "AgendaTheActionBar"
|
||||
},
|
||||
{
|
||||
"elementSelector": ".fc-button-today",
|
||||
"message": "AgendaTodayButton"
|
||||
},
|
||||
{
|
||||
"elementSelector": ".fc-header-title",
|
||||
"message": "AgendaTheMonthIsAlwaysInEvidence"
|
||||
},
|
||||
{
|
||||
"elementSelector": ".fc-button-month",
|
||||
"message": "AgendaButtonsAllowYouToChangePeriod"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"pageClass": ".section-session_my_space",
|
||||
"steps": [
|
||||
{
|
||||
"elementSelector": ".breadcrumb",
|
||||
"message": "MySpaceAllowsYouToKeepTrackOfProgress"
|
||||
},
|
||||
{
|
||||
"elementSelector": ".actions",
|
||||
"message": "MySpaceSectionsGiveYouImportantInsight"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"pageClass": ".section-social-network",
|
||||
"steps": [
|
||||
{
|
||||
"elementSelector": ".breadcrumb",
|
||||
"message": "SocialAllowsYouToGetInTouchWithOtherUsersOfThePlatform"
|
||||
},
|
||||
{
|
||||
"elementSelector": ".social-network-menu",
|
||||
"message": "SocialMenuGivesAccessToDifferentToolsToGetInTouchOrPublishStuff"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"pageClass": ".section-dashboard",
|
||||
"steps": [
|
||||
{
|
||||
"elementSelector": ".breadcrumb",
|
||||
"message": "DashboardAllowsYouToGetVerySpecificInformationInAnIllustratedCondensedFormat"
|
||||
},
|
||||
{
|
||||
"elementSelector": ".actions",
|
||||
"message": "DashboardMustBeConfiguredFirstFromTheAdminSectionPluginsThenHereToEnableDesiredBlocks"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"pageClass": ".section-platform_admin",
|
||||
"steps": [
|
||||
{
|
||||
"elementSelector": ".breadcrumb",
|
||||
"message": "AdministrationAllowsYouToManageYourPortal"
|
||||
},
|
||||
{
|
||||
"elementSelector": ".block-admin-users",
|
||||
"message": "AdminUsersBlockAllowsYouToManageUsers"
|
||||
},
|
||||
{
|
||||
"elementSelector": ".block-admin-courses",
|
||||
"message": "AdminCoursesBlockAllowsYouToManageCourses"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
48
plugin/tour/index.php
Normal file
@@ -0,0 +1,48 @@
|
||||
<?php
|
||||
/* For licensing terms, see /license.txt */
|
||||
/**
|
||||
* Config the plugin.
|
||||
*
|
||||
* @author Angel Fernando Quiroz Campos <angel.quiroz@beeznest.com>
|
||||
*
|
||||
* @package chamilo.plugin.tour
|
||||
*/
|
||||
require_once __DIR__.'/config.php';
|
||||
|
||||
$pluginPath = api_get_path(SYS_PLUGIN_PATH).'tour/';
|
||||
$pluginWebPath = api_get_path(WEB_PLUGIN_PATH).'tour/';
|
||||
|
||||
$userId = api_get_user_id();
|
||||
|
||||
$tourPlugin = Tour::create();
|
||||
$config = $tourPlugin->getTourConfig();
|
||||
$showTour = $tourPlugin->get('show_tour') === 'true';
|
||||
|
||||
if ($showTour) {
|
||||
$pages = [];
|
||||
|
||||
foreach ($config as $pageContent) {
|
||||
$pages[] = [
|
||||
'pageClass' => $pageContent['pageClass'],
|
||||
'show' => $tourPlugin->checkTourForUser($pageContent['pageClass'], $userId),
|
||||
];
|
||||
}
|
||||
|
||||
$theme = $tourPlugin->get('theme');
|
||||
|
||||
$_template['show_tour'] = $showTour;
|
||||
|
||||
$_template['pages'] = json_encode($pages);
|
||||
|
||||
$_template['web_path'] = [
|
||||
'intro_css' => "{$pluginWebPath}intro.js/introjs.min.css",
|
||||
'intro_theme_css' => null,
|
||||
'intro_js' => "{$pluginWebPath}intro.js/intro.min.js",
|
||||
'steps_ajax' => "{$pluginWebPath}ajax/steps.ajax.php",
|
||||
'save_ajax' => "{$pluginWebPath}ajax/save.ajax.php",
|
||||
];
|
||||
|
||||
if (file_exists("{$pluginPath}intro.js/introjs-$theme.css")) {
|
||||
$_template['web_path']['intro_theme_css'] = "{$pluginWebPath}intro.js/introjs-$theme.css";
|
||||
}
|
||||
}
|
||||
12
plugin/tour/install.php
Normal file
@@ -0,0 +1,12 @@
|
||||
<?php
|
||||
/* For licensing terms, see /license.txt */
|
||||
/**
|
||||
* Initialization install.
|
||||
*
|
||||
* @author Angel Fernando Quiroz Campos <angel.quiroz@beeznest.com>
|
||||
*
|
||||
* @package chamilo.plugin.tour
|
||||
*/
|
||||
require_once __DIR__.'/config.php';
|
||||
|
||||
Tour::create()->install();
|
||||
27
plugin/tour/intro.js/intro.min.js
vendored
Normal file
@@ -0,0 +1,27 @@
|
||||
(function(p,f){"object"===typeof exports?f(exports):"function"===typeof define&&define.amd?define(["exports"],f):f(p)})(this,function(p){function f(a){this._targetElement=a;this._options={nextLabel:"Next →",prevLabel:"← Back",skipLabel:"Skip",doneLabel:"Done",tooltipPosition:"bottom",tooltipClass:"",exitOnEsc:!0,exitOnOverlayClick:!0,showStepNumbers:!0,keyboardNavigation:!0,showButtons:!0,showBullets:!0,scrollToElement:!0,overlayOpacity:0.8}}function r(a){if(null==a||"object"!=typeof a||
|
||||
"undefined"!=typeof a.nodeType)return a;var b={},c;for(c in a)b[c]=r(a[c]);return b}function s(){this._direction="forward";"undefined"===typeof this._currentStep?this._currentStep=0:++this._currentStep;if(this._introItems.length<=this._currentStep)"function"===typeof this._introCompleteCallback&&this._introCompleteCallback.call(this),t.call(this,this._targetElement);else{var a=this._introItems[this._currentStep];"undefined"!==typeof this._introBeforeChangeCallback&&this._introBeforeChangeCallback.call(this,
|
||||
a.element);A.call(this,a)}}function x(){this._direction="backward";if(0===this._currentStep)return!1;var a=this._introItems[--this._currentStep];"undefined"!==typeof this._introBeforeChangeCallback&&this._introBeforeChangeCallback.call(this,a.element);A.call(this,a)}function t(a){var b=a.querySelector(".introjs-overlay");if(null!=b){b.style.opacity=0;setTimeout(function(){b.parentNode&&b.parentNode.removeChild(b)},500);(a=a.querySelector(".introjs-helperLayer"))&&a.parentNode.removeChild(a);(a=document.querySelector(".introjsFloatingElement"))&&
|
||||
a.parentNode.removeChild(a);if(a=document.querySelector(".introjs-showElement"))a.className=a.className.replace(/introjs-[a-zA-Z]+/g,"").replace(/^\s+|\s+$/g,"");if((a=document.querySelectorAll(".introjs-fixParent"))&&0<a.length)for(var c=a.length-1;0<=c;c--)a[c].className=a[c].className.replace(/introjs-fixParent/g,"").replace(/^\s+|\s+$/g,"");window.removeEventListener?window.removeEventListener("keydown",this._onKeyDown,!0):document.detachEvent&&document.detachEvent("onkeydown",this._onKeyDown);
|
||||
this._currentStep=void 0}}function B(a,b,c,d){var e="";b.style.top=null;b.style.right=null;b.style.bottom=null;b.style.left=null;b.style.marginLeft=null;b.style.marginTop=null;c.style.display="inherit";"undefined"!=typeof d&&null!=d&&(d.style.top=null,d.style.left=null);if(this._introItems[this._currentStep])switch(e=this._introItems[this._currentStep],e="string"===typeof e.tooltipClass?e.tooltipClass:this._options.tooltipClass,b.className=("introjs-tooltip "+e).replace(/^\s+|\s+$/g,""),currentTooltipPosition=
|
||||
this._introItems[this._currentStep].position,currentTooltipPosition){case "top":b.style.left="15px";b.style.top="-"+(h(b).height+10)+"px";c.className="introjs-arrow bottom";break;case "right":b.style.left=h(a).width+20+"px";c.className="introjs-arrow left";break;case "left":!0==this._options.showStepNumbers&&(b.style.top="15px");b.style.right=h(a).width+20+"px";c.className="introjs-arrow right";break;case "floating":c.style.display="none";a=h(b);b.style.left="50%";b.style.top="50%";b.style.marginLeft=
|
||||
"-"+a.width/2+"px";b.style.marginTop="-"+a.height/2+"px";"undefined"!=typeof d&&null!=d&&(d.style.left="-"+(a.width/2+18)+"px",d.style.top="-"+(a.height/2+18)+"px");break;case "bottom-right-aligned":c.className="introjs-arrow top-right";b.style.right="0px";b.style.bottom="-"+(h(b).height+10)+"px";break;case "bottom-middle-aligned":d=h(a);a=h(b);c.className="introjs-arrow top-middle";b.style.left=d.width/2-a.width/2+"px";b.style.bottom="-"+(a.height+10)+"px";break;default:b.style.bottom="-"+(h(b).height+
|
||||
10)+"px",c.className="introjs-arrow top"}}function v(a){if(a&&this._introItems[this._currentStep]){var b=this._introItems[this._currentStep],c=h(b.element),d=10;"floating"==b.position&&(d=0);a.setAttribute("style","width: "+(c.width+d)+"px; height:"+(c.height+d)+"px; top:"+(c.top-5)+"px;left: "+(c.left-5)+"px;")}}function A(a){var b;"undefined"!==typeof this._introChangeCallback&&this._introChangeCallback.call(this,a.element);var c=this,d=document.querySelector(".introjs-helperLayer");h(a.element);
|
||||
if(null!=d){var e=d.querySelector(".introjs-helperNumberLayer"),C=d.querySelector(".introjs-tooltiptext"),g=d.querySelector(".introjs-arrow"),y=d.querySelector(".introjs-tooltip"),k=d.querySelector(".introjs-skipbutton"),n=d.querySelector(".introjs-prevbutton"),l=d.querySelector(".introjs-nextbutton");y.style.opacity=0;if(null!=e&&(b=this._introItems[0<=a.step-2?a.step-2:0],null!=b&&"forward"==this._direction&&"floating"==b.position||"backward"==this._direction&&"floating"==a.position))e.style.opacity=
|
||||
0;v.call(c,d);var m=document.querySelectorAll(".introjs-fixParent");if(m&&0<m.length)for(b=m.length-1;0<=b;b--)m[b].className=m[b].className.replace(/introjs-fixParent/g,"").replace(/^\s+|\s+$/g,"");b=document.querySelector(".introjs-showElement");b.className=b.className.replace(/introjs-[a-zA-Z]+/g,"").replace(/^\s+|\s+$/g,"");c._lastShowElementTimer&&clearTimeout(c._lastShowElementTimer);c._lastShowElementTimer=setTimeout(function(){null!=e&&(e.innerHTML=a.step);C.innerHTML=a.intro;B.call(c,a.element,
|
||||
y,g,e);d.querySelector(".introjs-bullets li > a.active").className="";d.querySelector('.introjs-bullets li > a[data-stepnumber="'+a.step+'"]').className="active";y.style.opacity=1;e&&(e.style.opacity=1)},350)}else{var k=document.createElement("div"),m=document.createElement("div"),j=document.createElement("div"),n=document.createElement("div"),l=document.createElement("div"),f=document.createElement("div");k.className="introjs-helperLayer";v.call(c,k);this._targetElement.appendChild(k);m.className=
|
||||
"introjs-arrow";n.className="introjs-tooltiptext";n.innerHTML=a.intro;l.className="introjs-bullets";!1===this._options.showBullets&&(l.style.display="none");var p=document.createElement("ul");b=0;for(var u=this._introItems.length;b<u;b++){var r=document.createElement("li"),q=document.createElement("a");q.onclick=function(){c.goToStep(this.getAttribute("data-stepnumber"))};0===b&&(q.className="active");q.href="javascript:void(0);";q.innerHTML=" ";q.setAttribute("data-stepnumber",this._introItems[b].step);
|
||||
r.appendChild(q);p.appendChild(r)}l.appendChild(p);f.className="introjs-tooltipbuttons";!1===this._options.showButtons&&(f.style.display="none");j.className="introjs-tooltip";j.appendChild(n);j.appendChild(l);if(!0==this._options.showStepNumbers){var w=document.createElement("span");w.className="introjs-helperNumberLayer";w.innerHTML=a.step;k.appendChild(w)}j.appendChild(m);k.appendChild(j);l=document.createElement("a");l.onclick=function(){c._introItems.length-1!=c._currentStep&&s.call(c)};l.href=
|
||||
"javascript:void(0);";l.innerHTML=this._options.nextLabel;n=document.createElement("a");n.onclick=function(){0!=c._currentStep&&x.call(c)};n.href="javascript:void(0);";n.innerHTML=this._options.prevLabel;k=document.createElement("a");k.className="introjs-button introjs-skipbutton";k.href="javascript:void(0);";k.innerHTML=this._options.skipLabel;k.onclick=function(){c._introItems.length-1==c._currentStep&&"function"===typeof c._introCompleteCallback&&c._introCompleteCallback.call(c);c._introItems.length-
|
||||
1!=c._currentStep&&"function"===typeof c._introExitCallback&&c._introExitCallback.call(c);t.call(c,c._targetElement)};f.appendChild(k);1<this._introItems.length&&(f.appendChild(n),f.appendChild(l));j.appendChild(f);B.call(c,a.element,j,m,w)}0==this._currentStep&&1<this._introItems.length?(n.className="introjs-button introjs-prevbutton introjs-disabled",l.className="introjs-button introjs-nextbutton",k.innerHTML=this._options.skipLabel):this._introItems.length-1==this._currentStep||1==this._introItems.length?
|
||||
(k.innerHTML=this._options.doneLabel,n.className="introjs-button introjs-prevbutton",l.className="introjs-button introjs-nextbutton introjs-disabled"):(n.className="introjs-button introjs-prevbutton",l.className="introjs-button introjs-nextbutton",k.innerHTML=this._options.skipLabel);l.focus();a.element.className+=" introjs-showElement";b=z(a.element,"position");"absolute"!==b&&"relative"!==b&&(a.element.className+=" introjs-relativePosition");for(b=a.element.parentNode;null!=b&&"body"!==b.tagName.toLowerCase();){m=
|
||||
z(b,"z-index");j=parseFloat(z(b,"opacity"));if(/[0-9]+/.test(m)||1>j)b.className+=" introjs-fixParent";b=b.parentNode}b=a.element.getBoundingClientRect();!(0<=b.top&&0<=b.left&&b.bottom+80<=window.innerHeight&&b.right<=window.innerWidth)&&!0===this._options.scrollToElement&&(j=a.element.getBoundingClientRect(),b=void 0!=window.innerWidth?window.innerHeight:document.documentElement.clientHeight,m=j.bottom-(j.bottom-j.top),j=j.bottom-b,0>m||a.element.clientHeight>b?window.scrollBy(0,m-30):window.scrollBy(0,
|
||||
j+100));"undefined"!==typeof this._introAfterChangeCallback&&this._introAfterChangeCallback.call(this,a.element)}function z(a,b){var c="";a.currentStyle?c=a.currentStyle[b]:document.defaultView&&document.defaultView.getComputedStyle&&(c=document.defaultView.getComputedStyle(a,null).getPropertyValue(b));return c&&c.toLowerCase?c.toLowerCase():c}function D(a){var b=document.createElement("div"),c="",d=this;b.className="introjs-overlay";if("body"===a.tagName.toLowerCase())c+="top: 0;bottom: 0; left: 0;right: 0;position: fixed;",
|
||||
b.setAttribute("style",c);else{var e=h(a);e&&(c+="width: "+e.width+"px; height:"+e.height+"px; top:"+e.top+"px;left: "+e.left+"px;",b.setAttribute("style",c))}a.appendChild(b);b.onclick=function(){!0==d._options.exitOnOverlayClick&&(t.call(d,a),void 0!=d._introExitCallback&&d._introExitCallback.call(d))};setTimeout(function(){c+="opacity: "+d._options.overlayOpacity.toString()+";";b.setAttribute("style",c)},10);return!0}function h(a){var b={};b.width=a.offsetWidth;b.height=a.offsetHeight;for(var c=
|
||||
0,d=0;a&&!isNaN(a.offsetLeft)&&!isNaN(a.offsetTop);)c+=a.offsetLeft,d+=a.offsetTop,a=a.offsetParent;b.top=d;b.left=c;return b}var u=function(a){if("object"===typeof a)return new f(a);if("string"===typeof a){if(a=document.querySelector(a))return new f(a);throw Error("There is no element with given selector.");}return new f(document.body)};u.version="0.9.0";u.fn=f.prototype={clone:function(){return new f(this)},setOption:function(a,b){this._options[a]=b;return this},setOptions:function(a){var b=this._options,
|
||||
c={},d;for(d in b)c[d]=b[d];for(d in a)c[d]=a[d];this._options=c;return this},start:function(){a:{var a=this._targetElement,b=[],c=this;if(this._options.steps)for(var d=[],e=0,d=this._options.steps.length;e<d;e++){var f=r(this._options.steps[e]);f.step=b.length+1;"string"===typeof f.element&&(f.element=document.querySelector(f.element));if("undefined"===typeof f.element||null==f.element){var g=document.querySelector(".introjsFloatingElement");null==g&&(g=document.createElement("div"),g.className=
|
||||
"introjsFloatingElement",document.body.appendChild(g));f.element=g;f.position="floating"}null!=f.element&&b.push(f)}else{d=a.querySelectorAll("*[data-intro]");if(1>d.length)break a;e=0;for(f=d.length;e<f;e++){var g=d[e],h=parseInt(g.getAttribute("data-step"),10);0<h&&(b[h-1]={element:g,intro:g.getAttribute("data-intro"),step:parseInt(g.getAttribute("data-step"),10),tooltipClass:g.getAttribute("data-tooltipClass"),position:g.getAttribute("data-position")||this._options.tooltipPosition})}e=h=0;for(f=
|
||||
d.length;e<f;e++)if(g=d[e],null==g.getAttribute("data-step")){for(;"undefined"!=typeof b[h];)h++;b[h]={element:g,intro:g.getAttribute("data-intro"),step:h+1,tooltipClass:g.getAttribute("data-tooltipClass"),position:g.getAttribute("data-position")||this._options.tooltipPosition}}}e=[];for(d=0;d<b.length;d++)b[d]&&e.push(b[d]);b=e;b.sort(function(a,b){return a.step-b.step});c._introItems=b;D.call(c,a)&&(s.call(c),a.querySelector(".introjs-skipbutton"),a.querySelector(".introjs-nextbutton"),c._onKeyDown=
|
||||
function(b){if(27===b.keyCode&&!0==c._options.exitOnEsc)t.call(c,a),void 0!=c._introExitCallback&&c._introExitCallback.call(c);else if(37===b.keyCode)x.call(c);else if(39===b.keyCode||13===b.keyCode)s.call(c),b.preventDefault?b.preventDefault():b.returnValue=!1},c._onResize=function(){v.call(c,document.querySelector(".introjs-helperLayer"))},window.addEventListener?(this._options.keyboardNavigation&&window.addEventListener("keydown",c._onKeyDown,!0),window.addEventListener("resize",c._onResize,!0)):
|
||||
document.attachEvent&&(this._options.keyboardNavigation&&document.attachEvent("onkeydown",c._onKeyDown),document.attachEvent("onresize",c._onResize)))}return this},goToStep:function(a){this._currentStep=a-2;"undefined"!==typeof this._introItems&&s.call(this);return this},nextStep:function(){s.call(this);return this},previousStep:function(){x.call(this);return this},exit:function(){t.call(this,this._targetElement)},refresh:function(){v.call(this,document.querySelector(".introjs-helperLayer"));return this},
|
||||
onbeforechange:function(a){if("function"===typeof a)this._introBeforeChangeCallback=a;else throw Error("Provided callback for onbeforechange was not a function");return this},onchange:function(a){if("function"===typeof a)this._introChangeCallback=a;else throw Error("Provided callback for onchange was not a function.");return this},onafterchange:function(a){if("function"===typeof a)this._introAfterChangeCallback=a;else throw Error("Provided callback for onafterchange was not a function");return this},
|
||||
oncomplete:function(a){if("function"===typeof a)this._introCompleteCallback=a;else throw Error("Provided callback for oncomplete was not a function.");return this},onexit:function(a){if("function"===typeof a)this._introExitCallback=a;else throw Error("Provided callback for onexit was not a function.");return this}};return p.introJs=u});
|
||||
288
plugin/tour/intro.js/introjs-nassim.css
Normal file
@@ -0,0 +1,288 @@
|
||||
.introjs-overlay {
|
||||
position: absolute;
|
||||
z-index: 999999;
|
||||
background: #181818;
|
||||
opacity: 0;
|
||||
|
||||
-webkit-transition: all 0.3s ease-out;
|
||||
-moz-transition: all 0.3s ease-out;
|
||||
-ms-transition: all 0.3s ease-out;
|
||||
-o-transition: all 0.3s ease-out;
|
||||
transition: all 0.3s ease-out;
|
||||
}
|
||||
|
||||
.introjs-fixParent {
|
||||
z-index: auto !important;
|
||||
opacity: 1.0 !important;
|
||||
}
|
||||
|
||||
.introjs-showElement {
|
||||
z-index: 9999999 !important;
|
||||
}
|
||||
|
||||
.introjs-relativePosition {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.introjs-helperLayer {
|
||||
position: absolute;
|
||||
z-index: 9999998;
|
||||
background-color: #FFF;
|
||||
background-color: rgba(255,255,255,.9);
|
||||
border: 1px solid #777;
|
||||
border: 2px solid rgba(117, 117, 117, 1);
|
||||
border-radius: 4px;
|
||||
box-shadow: 0 5px 8px -3px rgba(0,0,0,.6);
|
||||
-webkit-transition: all 0.3s ease-out;
|
||||
-moz-transition: all 0.3s ease-out;
|
||||
-ms-transition: all 0.3s ease-out;
|
||||
-o-transition: all 0.3s ease-out;
|
||||
transition: all 0.3s ease-out;
|
||||
}
|
||||
|
||||
.introjs-helperNumberLayer {
|
||||
position: absolute;
|
||||
top: -16px;
|
||||
left: -9px;
|
||||
z-index: 9999999999 !important;
|
||||
padding: 2px;
|
||||
font-family: Arial, verdana, tahoma;
|
||||
font-size: 13px;
|
||||
font-weight: bold;
|
||||
color: #fff; /* Old browsers */ /* Chrome10+,Safari5.1+ */
|
||||
background: #DA4433;
|
||||
width: 20px;
|
||||
box-shadow: 0 1px 1px rgba(0,0,0,.35);
|
||||
height:20px;
|
||||
text-align: center;
|
||||
line-height: 20px;
|
||||
border: 2px solid #DA4433;
|
||||
border-radius: 0; /* IE6-9 */ /* IE10 text shadows */
|
||||
}
|
||||
|
||||
.introjs-helperNumberLayer:after {
|
||||
content:"";
|
||||
width:0;
|
||||
height:0;
|
||||
position:absolute;
|
||||
content:0;
|
||||
left:-3px;
|
||||
bottom:-10px;
|
||||
border:4px solid transparent;
|
||||
border-right-color:#900;
|
||||
border-top-color:#900;
|
||||
}
|
||||
|
||||
.introjs-arrow {
|
||||
border: 5px solid white;
|
||||
content:'';
|
||||
position: absolute;
|
||||
}
|
||||
.introjs-arrow.top {
|
||||
top: -10px;
|
||||
border-top-color:transparent;
|
||||
border-right-color:transparent;
|
||||
border-bottom-color: #ecf0f1;
|
||||
border-left-color:transparent;
|
||||
}
|
||||
.introjs-arrow.right {
|
||||
right: -10px;
|
||||
top: 10px;
|
||||
border-top-color:transparent;
|
||||
border-right-color:transparent;
|
||||
border-bottom-color:transparent;
|
||||
border-left-color:#ecf0f1;
|
||||
}
|
||||
.introjs-arrow.bottom {
|
||||
bottom: -10px;
|
||||
border-top-color:#ecf0f1;
|
||||
border-right-color:transparent;
|
||||
border-bottom-color:transparent;
|
||||
border-left-color:transparent;
|
||||
}
|
||||
.introjs-arrow.left {
|
||||
left: -10px;
|
||||
top: 10px;
|
||||
border-top-color:transparent;
|
||||
border-right-color: #ecf0f1;
|
||||
border-bottom-color:transparent;
|
||||
border-left-color:transparent;
|
||||
}
|
||||
|
||||
.introjs-tooltip {
|
||||
position: absolute;
|
||||
padding: 10px 10px;
|
||||
background-color: #ecf0f1;
|
||||
min-width: 200px;
|
||||
max-width: 300px;
|
||||
border-radius: 3px;
|
||||
/* border-radius: 3px; */
|
||||
/* box-shadow: 0 6px 7px -4px rgba(0,0,0,.4); */
|
||||
-webkit-transition: opacity 0.1s ease-out;
|
||||
-moz-transition: opacity 0.1s ease-out;
|
||||
-ms-transition: opacity 0.1s ease-out;
|
||||
-o-transition: opacity 0.1s ease-out;
|
||||
transition: opacity 0.1s ease-out;
|
||||
/* border: 5px double #0787AF; */
|
||||
}
|
||||
|
||||
.introjs-tooltiptext {
|
||||
margin-left: -10px;
|
||||
|
||||
margin-right: -10px;
|
||||
/* border-top: 1px solid #FFFFFF; */
|
||||
/* background: #FAFAFA; */
|
||||
color: #2c3e50;
|
||||
padding: 25px 30px 15px;
|
||||
/* border-bottom: 1px solid #FFFFFF; */
|
||||
}
|
||||
|
||||
.introjs-tooltipbuttons {
|
||||
text-align: center;
|
||||
/* background: rgba(0, 0, 0, 0.06); */
|
||||
border-radius: 0 0 8px 8px;
|
||||
padding-bottom: 10px;
|
||||
}
|
||||
|
||||
/*
|
||||
Buttons style by http://nicolasgallagher.com/lab/css3-github-buttons/
|
||||
Changed by Afshin Mehrabani
|
||||
*/
|
||||
.introjs-button {
|
||||
position: relative;
|
||||
overflow: visible;
|
||||
display: inline-block;
|
||||
padding: 0.5em 0.8em;
|
||||
/* box-shadow: 0 2px 0px -0px #306588; */
|
||||
margin: 0;
|
||||
outline: none;
|
||||
border: 2px solid;
|
||||
background: transparent;
|
||||
text-decoration: none;
|
||||
font: 11px/normal sans-serif;
|
||||
color: #2980b9 !important;
|
||||
white-space: nowrap;
|
||||
cursor: pointer;
|
||||
outline: none !important;
|
||||
-webkit-background-clip: padding;
|
||||
-moz-background-clip: padding;
|
||||
-o-background-clip: padding-box;
|
||||
/*background-clip: padding-box;*/ /* commented out due to Opera 11.10 bug */
|
||||
-webkit-border-radius: 0.2em;
|
||||
-moz-border-radius: 0.2em;
|
||||
border-radius: 0.2em;
|
||||
/* IE hacks */
|
||||
zoom: 1;
|
||||
*display: inline;
|
||||
margin-top: 10px;
|
||||
transition:all 0.25s ease;
|
||||
-webkit-transition:all 0.25s ease;
|
||||
-moz-transition:all 0.25s ease;
|
||||
-ms-transition:all 0.25s ease;
|
||||
-o-transition:all 0.25s ease;
|
||||
}
|
||||
|
||||
.introjs-button:hover {
|
||||
color: #fff;
|
||||
background: #2671A2;
|
||||
text-decoration: none;
|
||||
border-color: #235677;
|
||||
}
|
||||
|
||||
.introjs-button:focus,
|
||||
.introjs-button:active {
|
||||
background: #23587A; text-decoration: none;
|
||||
color: #fff;
|
||||
/* bottom: -1px; */
|
||||
box-shadow: none;
|
||||
border-color: #173B53;
|
||||
}
|
||||
|
||||
/* overrides extra padding on button elements in Firefox */
|
||||
.introjs-button::-moz-focus-inner {
|
||||
padding: 0;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
.introjs-skipbutton {
|
||||
margin-right: 5px;
|
||||
color: #c00;
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
.introjs-skipbutton:hover {
|
||||
background: #EB1540;
|
||||
border-color: #B91D0D;
|
||||
|
||||
}
|
||||
|
||||
.introjs-skipbutton:active, .introjs-skipbutton:focus {
|
||||
background: #C02312;
|
||||
/* box-shadow: 0 1px 0px -0px #6F1309; */
|
||||
|
||||
}
|
||||
|
||||
.introjs-prevbutton {
|
||||
-webkit-border-radius: 0.2em 0 0 0.2em;
|
||||
-moz-border-radius: 0.2em 0 0 0.2em;
|
||||
border-radius: 0.2em 0 0 0.2em;
|
||||
border-right: none;
|
||||
}
|
||||
|
||||
.introjs-nextbutton {
|
||||
-webkit-border-radius: 0 0.2em 0.2em 0;
|
||||
-moz-border-radius: 0 0.2em 0.2em 0;
|
||||
border-radius: 0 0.2em 0.2em 0;
|
||||
}
|
||||
|
||||
.introjs-disabled, .introjs-disabled:hover, .introjs-disabled:focus {
|
||||
color: #C2C2C2 !important;
|
||||
border-color: #d4d4d4;
|
||||
cursor: default;
|
||||
/* box-shadow: 0 2px 0px -0px #CACED1; */
|
||||
background-color: #E6E6E6;
|
||||
background-image: none;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.introjs-bullets {
|
||||
text-align: center;
|
||||
position: absolute;
|
||||
left: 0;
|
||||
right: 0;
|
||||
top: -5px;
|
||||
}
|
||||
.introjs-bullets ul {
|
||||
clear: both;
|
||||
margin: 15px auto 0;
|
||||
padding: 0;
|
||||
display: inline-block;
|
||||
}
|
||||
.introjs-bullets ul li {
|
||||
list-style: none;
|
||||
float: left;
|
||||
margin: 0 2px;
|
||||
}
|
||||
.introjs-bullets ul li a {
|
||||
display: block;
|
||||
width: 6px;
|
||||
height: 6px;
|
||||
background: #ccc;
|
||||
border-radius: 10px;
|
||||
-moz-border-radius: 10px;
|
||||
-webkit-border-radius: 10px;
|
||||
text-decoration: none;
|
||||
}
|
||||
.introjs-bullets ul li a:hover {
|
||||
background: #999;
|
||||
}
|
||||
.introjs-bullets ul li a.active {
|
||||
background: #999;
|
||||
}
|
||||
.introjsFloatingElement {
|
||||
position: absolute;
|
||||
height: 0;
|
||||
width: 0;
|
||||
left: 50%;
|
||||
top: 50%;
|
||||
}
|
||||
257
plugin/tour/intro.js/introjs-nazanin.css
Normal file
@@ -0,0 +1,257 @@
|
||||
.introjs-overlay {
|
||||
position: absolute;
|
||||
z-index: 999999;
|
||||
background: #525252;
|
||||
opacity: 0;
|
||||
|
||||
-webkit-transition: all 0.3s ease-out;
|
||||
-moz-transition: all 0.3s ease-out;
|
||||
-ms-transition: all 0.3s ease-out;
|
||||
-o-transition: all 0.3s ease-out;
|
||||
transition: all 0.3s ease-out;
|
||||
}
|
||||
|
||||
.introjs-fixParent {
|
||||
z-index: auto !important;
|
||||
opacity: 1.0 !important;
|
||||
}
|
||||
|
||||
.introjs-showElement {
|
||||
z-index: 9999999 !important;
|
||||
}
|
||||
|
||||
.introjs-relativePosition {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.introjs-helperLayer {
|
||||
position: absolute;
|
||||
z-index: 9999998;
|
||||
background-color: #FFF;
|
||||
background-color: rgba(255,255,255,.9);
|
||||
border: 1px solid #777;
|
||||
border: 3px solid rgba(211, 214, 209, 1);
|
||||
border-radius: 0;
|
||||
box-shadow: 0 5px 8px -3px rgba(0,0,0,.6);
|
||||
-webkit-transition: all 0.3s ease-out;
|
||||
-moz-transition: all 0.3s ease-out;
|
||||
-ms-transition: all 0.3s ease-out;
|
||||
-o-transition: all 0.3s ease-out;
|
||||
transition: all 0.3s ease-out;
|
||||
}
|
||||
|
||||
.introjs-helperNumberLayer {
|
||||
position: absolute;
|
||||
top: -16px;
|
||||
left: -16px;
|
||||
z-index: 9999999999 !important;
|
||||
padding: 2px;
|
||||
font-family: Arial, verdana, tahoma;
|
||||
font-size: 13px;
|
||||
font-weight: bold;
|
||||
color: white; /* Old browsers */ /* Chrome10+,Safari5.1+ */
|
||||
background:#ff3019 ;
|
||||
width: 20px;
|
||||
height:20px;
|
||||
text-align: center;
|
||||
line-height: 20px;
|
||||
border: 3px solid #DA4433;
|
||||
border-radius: 10px 10px 0; /* IE6-9 */ /* IE10 text shadows */
|
||||
}
|
||||
|
||||
.introjs-arrow {
|
||||
border: 5px solid white;
|
||||
content:'';
|
||||
position: absolute;
|
||||
}
|
||||
.introjs-arrow.top {
|
||||
top: -10px;
|
||||
border-top-color:transparent;
|
||||
border-right-color:transparent;
|
||||
border-bottom-color: #ecf0f1;
|
||||
border-left-color:transparent;
|
||||
}
|
||||
.introjs-arrow.right {
|
||||
right: -10px;
|
||||
top: 10px;
|
||||
border-top-color:transparent;
|
||||
border-right-color:transparent;
|
||||
border-bottom-color:transparent;
|
||||
border-left-color:#ecf0f1;
|
||||
}
|
||||
.introjs-arrow.bottom {
|
||||
bottom: -10px;
|
||||
border-top-color:#ecf0f1;
|
||||
border-right-color:transparent;
|
||||
border-bottom-color:transparent;
|
||||
border-left-color:transparent;
|
||||
}
|
||||
.introjs-arrow.left {
|
||||
left: -10px;
|
||||
top: 10px;
|
||||
border-top-color:transparent;
|
||||
border-right-color: #ecf0f1;
|
||||
border-bottom-color:transparent;
|
||||
border-left-color:transparent;
|
||||
}
|
||||
|
||||
.introjs-tooltip {
|
||||
position: absolute;
|
||||
padding: 10px;
|
||||
background-color: #ecf0f1;
|
||||
min-width: 200px;
|
||||
max-width: 300px;
|
||||
/* border-radius: 3px; */
|
||||
box-shadow: 0 6px 7px -4px rgba(0,0,0,.4);
|
||||
-webkit-transition: opacity 0.1s ease-out;
|
||||
-moz-transition: opacity 0.1s ease-out;
|
||||
-ms-transition: opacity 0.1s ease-out;
|
||||
-o-transition: opacity 0.1s ease-out;
|
||||
transition: opacity 0.1s ease-out;
|
||||
}
|
||||
|
||||
.introjs-tooltiptext {
|
||||
margin-left: -10px;
|
||||
|
||||
margin-right: -10px;
|
||||
border-top: 1px solid #FFFFFF;
|
||||
background: #FAFAFA;
|
||||
color: #2c3e50;
|
||||
padding: 5px 10px;
|
||||
border-bottom: 1px solid #FFFFFF;
|
||||
}
|
||||
|
||||
.introjs-tooltipbuttons {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
/*
|
||||
Buttons style by http://nicolasgallagher.com/lab/css3-github-buttons/
|
||||
Changed by Afshin Mehrabani
|
||||
*/
|
||||
.introjs-button {
|
||||
position: relative;
|
||||
overflow: visible;
|
||||
display: inline-block;
|
||||
padding: 0.5em 0.8em;
|
||||
box-shadow: 0 2px 0px -0px #306588;
|
||||
margin: 0;
|
||||
outline: none;
|
||||
background: #2980b9;
|
||||
text-decoration: none;
|
||||
font: 11px/normal sans-serif;
|
||||
color: #fff !important;
|
||||
white-space: nowrap;
|
||||
cursor: pointer;
|
||||
outline: none !important;
|
||||
-webkit-background-clip: padding;
|
||||
-moz-background-clip: padding;
|
||||
-o-background-clip: padding-box;
|
||||
/*background-clip: padding-box;*/ /* commented out due to Opera 11.10 bug */
|
||||
-webkit-border-radius: 0.2em;
|
||||
-moz-border-radius: 0.2em;
|
||||
border-radius: 0.2em;
|
||||
/* IE hacks */
|
||||
zoom: 1;
|
||||
*display: inline;
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
.introjs-button:hover {
|
||||
color: #fff;
|
||||
background: #2671A2;
|
||||
text-decoration: none;
|
||||
box-shadow: 0 2px 0px -0px #235677;
|
||||
}
|
||||
|
||||
.introjs-button:focus,
|
||||
.introjs-button:active {
|
||||
background: #23587A; text-decoration: none;
|
||||
/* bottom: -1px; */
|
||||
box-shadow: 0 2px 0px 0px #173B53;
|
||||
}
|
||||
|
||||
/* overrides extra padding on button elements in Firefox */
|
||||
.introjs-button::-moz-focus-inner {
|
||||
padding: 0;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
.introjs-skipbutton {
|
||||
margin-right: 5px;
|
||||
color: #fff;
|
||||
background: #e74c3c;
|
||||
box-shadow: 0 2px 0px -0px #B91D0D;
|
||||
}
|
||||
|
||||
.introjs-skipbutton:hover {
|
||||
background: #EB1540; box-shadow: 0 2px 0px -0px #B91D0D;
|
||||
|
||||
}
|
||||
|
||||
.introjs-skipbutton:active, .introjs-skipbutton:focus {
|
||||
background: #C02312;
|
||||
box-shadow: 0 1px 0px -0px #6F1309;
|
||||
|
||||
}
|
||||
|
||||
.introjs-prevbutton {
|
||||
-webkit-border-radius: 0.2em 0 0 0.2em;
|
||||
-moz-border-radius: 0.2em 0 0 0.2em;
|
||||
border-radius: 0.2em 0 0 0.2em;
|
||||
border-right: none;
|
||||
}
|
||||
|
||||
.introjs-nextbutton {
|
||||
-webkit-border-radius: 0 0.2em 0.2em 0;
|
||||
-moz-border-radius: 0 0.2em 0.2em 0;
|
||||
border-radius: 0 0.2em 0.2em 0;
|
||||
}
|
||||
|
||||
.introjs-disabled, .introjs-disabled:hover, .introjs-disabled:focus {
|
||||
color: #C2C2C2 !important;
|
||||
border-color: #d4d4d4;
|
||||
cursor: default;
|
||||
box-shadow: 0 2px 0px -0px #CACED1;
|
||||
background-color: #E6E6E6;
|
||||
background-image: none;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.introjs-bullets {
|
||||
text-align: center;
|
||||
}
|
||||
.introjs-bullets ul {
|
||||
clear: both;
|
||||
margin: 15px auto 0;
|
||||
padding: 0;
|
||||
display: inline-block;
|
||||
}
|
||||
.introjs-bullets ul li {
|
||||
list-style: none;
|
||||
float: left;
|
||||
margin: 0 2px;
|
||||
}
|
||||
.introjs-bullets ul li a {
|
||||
display: block;
|
||||
width: 6px;
|
||||
height: 6px;
|
||||
background: #ccc;
|
||||
border-radius: 10px;
|
||||
-moz-border-radius: 10px;
|
||||
-webkit-border-radius: 10px;
|
||||
text-decoration: none;
|
||||
}
|
||||
.introjs-bullets ul li a:hover {
|
||||
background: #999;
|
||||
}
|
||||
.introjs-bullets ul li a.active {
|
||||
background: #999;
|
||||
}
|
||||
.introjsFloatingElement {
|
||||
position: absolute;
|
||||
height: 0;
|
||||
width: 0;
|
||||
left: 50%;
|
||||
top: 50%;
|
||||
}
|
||||
274
plugin/tour/intro.js/introjs-royal.css
Normal file
@@ -0,0 +1,274 @@
|
||||
.introjs-overlay {
|
||||
position: absolute;
|
||||
z-index: 999999;
|
||||
background: #525252;
|
||||
opacity: 0;
|
||||
|
||||
-webkit-transition: all 0.3s ease-out;
|
||||
-moz-transition: all 0.3s ease-out;
|
||||
-ms-transition: all 0.3s ease-out;
|
||||
-o-transition: all 0.3s ease-out;
|
||||
transition: all 0.3s ease-out;
|
||||
}
|
||||
|
||||
.introjs-fixParent {
|
||||
z-index: auto !important;
|
||||
opacity: 1.0 !important;
|
||||
}
|
||||
|
||||
.introjs-showElement {
|
||||
z-index: 9999999 !important;
|
||||
}
|
||||
|
||||
.introjs-relativePosition {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.introjs-helperLayer {
|
||||
position: absolute;
|
||||
z-index: 9999998;
|
||||
background-color: #FFF;
|
||||
background-color: rgba(255,255,255,.9);
|
||||
border: 1px solid #777;
|
||||
border: 3px solid rgba(255, 255, 255, 1);
|
||||
border-radius: 0;
|
||||
box-shadow: 0 8px 50px -10px rgba(0,0,0,.6);
|
||||
-webkit-transition: all 0.3s ease-out;
|
||||
-moz-transition: all 0.3s ease-out;
|
||||
-ms-transition: all 0.3s ease-out;
|
||||
-o-transition: all 0.3s ease-out;
|
||||
transition: all 0.3s ease-out;
|
||||
}
|
||||
|
||||
.introjs-helperNumberLayer {
|
||||
position: absolute;
|
||||
top: -29px;
|
||||
left: -29px;
|
||||
z-index: 9999999999 !important;
|
||||
padding: 3px;
|
||||
font-family: Arial, verdana, tahoma;
|
||||
font-size: 13px;
|
||||
font-weight: bold;
|
||||
color: #DA4433; /* Old browsers */ /* Chrome10+,Safari5.1+ */
|
||||
background: #FFFFFF;
|
||||
width: 20px;
|
||||
height:20px;
|
||||
text-align: center;
|
||||
line-height: 20px;
|
||||
border: 3px solid #DA4433;
|
||||
border-right: none;
|
||||
border-bottom: none; /* IE6-9 */ /* IE10 text shadows */
|
||||
border-radius: 10px 0 0 0;
|
||||
}
|
||||
|
||||
.introjs-arrow {
|
||||
border: 5px solid white;
|
||||
content:'';
|
||||
position: absolute;
|
||||
}
|
||||
.introjs-arrow.top {
|
||||
top: -10px;
|
||||
border-top-color:transparent;
|
||||
border-right-color:transparent;
|
||||
border-bottom-color: #ecf0f1;
|
||||
border-left-color:transparent;
|
||||
display: none !important;
|
||||
}
|
||||
.introjs-arrow.right {
|
||||
right: -10px;
|
||||
top: 10px;
|
||||
border-top-color:transparent;
|
||||
border-right-color:transparent;
|
||||
border-bottom-color:transparent;
|
||||
border-left-color:#ecf0f1;
|
||||
}
|
||||
.introjs-arrow.bottom {
|
||||
bottom: -10px;
|
||||
border-top-color:#ecf0f1;
|
||||
border-right-color:transparent;
|
||||
border-bottom-color:transparent;
|
||||
border-left-color:transparent;
|
||||
}
|
||||
.introjs-arrow.left {
|
||||
left: -10px;
|
||||
top: 10px;
|
||||
border-top-color:transparent;
|
||||
border-right-color: #ecf0f1;
|
||||
border-bottom-color:transparent;
|
||||
border-left-color:transparent;
|
||||
}
|
||||
|
||||
.introjs-tooltip {
|
||||
position: fixed;
|
||||
padding: 10px 170px 30px 10px;
|
||||
background-color: #ecf0f1;
|
||||
min-width: 200px;
|
||||
max-width: 300px;
|
||||
/* border-radius: 3px; */
|
||||
border-top: 3px solid #236591;
|
||||
box-shadow: 0 -6px 50px -4px rgba(0,0,0,.4);
|
||||
-webkit-transition: opacity 0.1s ease-out;
|
||||
-moz-transition: opacity 0.1s ease-out;
|
||||
-ms-transition: opacity 0.1s ease-out;
|
||||
-o-transition: opacity 0.1s ease-out;
|
||||
transition: opacity 0.1s ease-out;
|
||||
bottom: 0 !important;
|
||||
left: 0 !Important;
|
||||
top: initial !important;
|
||||
right: 0 !Important;
|
||||
max-width: initial;
|
||||
width: auto !important;
|
||||
}
|
||||
|
||||
.introjs-tooltiptext {
|
||||
margin-left: -10px;
|
||||
|
||||
margin-right: -10px;
|
||||
/* border-top: 1px solid #FFFFFF; */
|
||||
/* background: #FAFAFA; */
|
||||
color: #2c3e50;
|
||||
padding: 5px 10px;
|
||||
/* border-bottom: 1px solid #FFFFFF; */
|
||||
}
|
||||
|
||||
.introjs-tooltipbuttons {
|
||||
text-align: center;
|
||||
position: absolute;
|
||||
right: 10px;
|
||||
top: 0;
|
||||
}
|
||||
|
||||
/*
|
||||
Buttons style by http://nicolasgallagher.com/lab/css3-github-buttons/
|
||||
Changed by Afshin Mehrabani
|
||||
*/
|
||||
.introjs-button {
|
||||
position: relative;
|
||||
overflow: visible;
|
||||
display: inline-block;
|
||||
padding: 0.5em 0.8em;
|
||||
box-shadow: 0 2px 0px -0px #306588;
|
||||
margin: 0;
|
||||
outline: none;
|
||||
background: #2980b9;
|
||||
text-decoration: none;
|
||||
font: 11px/normal sans-serif;
|
||||
color: #fff !important;
|
||||
white-space: nowrap;
|
||||
cursor: pointer;
|
||||
outline: none !important;
|
||||
-webkit-background-clip: padding;
|
||||
-moz-background-clip: padding;
|
||||
-o-background-clip: padding-box;
|
||||
/*background-clip: padding-box;*/ /* commented out due to Opera 11.10 bug */
|
||||
-webkit-border-radius: 0.2em;
|
||||
-moz-border-radius: 0.2em;
|
||||
border-radius: 0.2em;
|
||||
/* IE hacks */
|
||||
zoom: 1;
|
||||
*display: inline;
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
.introjs-button:hover {
|
||||
color: #fff;
|
||||
background: #2671A2;
|
||||
text-decoration: none;
|
||||
box-shadow: 0 2px 0px -0px #235677;
|
||||
}
|
||||
|
||||
.introjs-button:focus,
|
||||
.introjs-button:active {
|
||||
background: #23587A; text-decoration: none;
|
||||
/* bottom: -1px; */
|
||||
box-shadow: 0 2px 0px 0px #173B53;
|
||||
}
|
||||
|
||||
/* overrides extra padding on button elements in Firefox */
|
||||
.introjs-button::-moz-focus-inner {
|
||||
padding: 0;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
.introjs-skipbutton {
|
||||
margin-right: 5px;
|
||||
color: #fff;
|
||||
background: #e74c3c;
|
||||
box-shadow: 0 2px 0px -0px #B91D0D;
|
||||
}
|
||||
|
||||
.introjs-skipbutton:hover {
|
||||
background: #EB1540; box-shadow: 0 2px 0px -0px #B91D0D;
|
||||
|
||||
}
|
||||
|
||||
.introjs-skipbutton:active, .introjs-skipbutton:focus {
|
||||
background: #C02312;
|
||||
box-shadow: 0 1px 0px -0px #6F1309;
|
||||
|
||||
}
|
||||
|
||||
.introjs-prevbutton {
|
||||
-webkit-border-radius: 0.2em 0 0 0.2em;
|
||||
-moz-border-radius: 0.2em 0 0 0.2em;
|
||||
border-radius: 0.2em 0 0 0.2em;
|
||||
border-right: none;
|
||||
}
|
||||
|
||||
.introjs-nextbutton {
|
||||
-webkit-border-radius: 0 0.2em 0.2em 0;
|
||||
-moz-border-radius: 0 0.2em 0.2em 0;
|
||||
border-radius: 0 0.2em 0.2em 0;
|
||||
}
|
||||
|
||||
.introjs-disabled, .introjs-disabled:hover, .introjs-disabled:focus {
|
||||
color: #C2C2C2 !important;
|
||||
border-color: #d4d4d4;
|
||||
cursor: default;
|
||||
box-shadow: 0 2px 0px -0px #CACED1;
|
||||
background-color: #E6E6E6;
|
||||
background-image: none;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.introjs-bullets {
|
||||
text-align: center;
|
||||
float: right;
|
||||
position: absolute;
|
||||
right: 10px;
|
||||
bottom: 10px;
|
||||
}
|
||||
.introjs-bullets ul {
|
||||
clear: both;
|
||||
margin: 15px auto 0;
|
||||
padding: 0;
|
||||
display: inline-block;
|
||||
}
|
||||
.introjs-bullets ul li {
|
||||
list-style: none;
|
||||
float: left;
|
||||
margin: 0 2px;
|
||||
}
|
||||
.introjs-bullets ul li a {
|
||||
display: block;
|
||||
width: 6px;
|
||||
height: 6px;
|
||||
background: #ccc;
|
||||
border-radius: 10px;
|
||||
-moz-border-radius: 10px;
|
||||
-webkit-border-radius: 10px;
|
||||
text-decoration: none;
|
||||
}
|
||||
.introjs-bullets ul li a:hover {
|
||||
background: #999;
|
||||
}
|
||||
.introjs-bullets ul li a.active {
|
||||
background: #999;
|
||||
}
|
||||
.introjsFloatingElement {
|
||||
position: absolute;
|
||||
height: 0;
|
||||
width: 0;
|
||||
left: 50%;
|
||||
top: 50%;
|
||||
}
|
||||
1
plugin/tour/intro.js/introjs-rtl.min.css
vendored
Normal file
@@ -0,0 +1 @@
|
||||
.introjs-tooltipbuttons{text-align:left}.introjs-skipbutton{margin-left:5px}.introjs-tooltip{direction:rtl}.introjs-prevbutton{border:1px solid #d4d4d4;border-left:0;-webkit-border-radius:0 .2em .2em 0;-moz-border-radius:0 .2em .2em 0;border-radius:0 .2em .2em 0}.introjs-nextbutton{border:1px solid #d4d4d4;-webkit-border-radius:.2em 0 0 .2em;-moz-border-radius:.2em 0 0 .2em;border-radius:.2em 0 0 .2em}
|
||||
289
plugin/tour/intro.js/introjs.min.css
vendored
Normal file
@@ -0,0 +1,289 @@
|
||||
.introjs-overlay{
|
||||
position:absolute;
|
||||
z-index:999999;
|
||||
background-color:#000;
|
||||
opacity:0;
|
||||
background:-moz-radial-gradient(center,ellipse cover,rgba(0,0,0,0.4) 0,rgba(0,0,0,0.9) 100%);
|
||||
background:-webkit-gradient(radial,center center,0px,center center,100%,color-stop(0%,rgba(0,0,0,0.4)),color-stop(100%,rgba(0,0,0,0.9)));
|
||||
background:-webkit-radial-gradient(center,ellipse cover,rgba(0,0,0,0.4) 0,rgba(0,0,0,0.9) 100%);background:-o-radial-gradient(center,ellipse cover,rgba(0,0,0,0.4) 0,rgba(0,0,0,0.9) 100%);background:-ms-radial-gradient(center,ellipse cover,rgba(0,0,0,0.4) 0,rgba(0,0,0,0.9) 100%);background:radial-gradient(center,ellipse cover,rgba(0,0,0,0.4) 0,rgba(0,0,0,0.9) 100%);
|
||||
filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#66000000',endColorstr='#e6000000',GradientType=1);-ms-filter:"alpha(opacity=50)";
|
||||
filter:alpha(opacity=50);-webkit-transition:all .3s ease-out;-moz-transition:all .3s ease-out;-ms-transition:all .3s ease-out;-o-transition:all .3s ease-out;transition:all .3s ease-out
|
||||
}
|
||||
.introjs-fixParent {
|
||||
z-index: auto !important;
|
||||
opacity: 1.0 !important;
|
||||
}
|
||||
.introjs-showElement, tr.introjs-showElement>td, tr.introjs-showElement>th {
|
||||
z-index: 9999999 !important;
|
||||
}
|
||||
.introjs-relativePosition, tr.introjs-showElement>td, tr.introjs-showElement>th {
|
||||
position: relative;
|
||||
}
|
||||
.introjs-helperLayer {
|
||||
position: absolute;
|
||||
z-index: 9999998;
|
||||
background-color: #FFF;
|
||||
background-color: rgba(255, 255, 255, .9);
|
||||
border: 1px solid #777;
|
||||
border: 1px solid rgba(0, 0, 0, .5);
|
||||
border-radius: 4px;
|
||||
box-shadow: 0 2px 15px rgba(0, 0, 0, .4);
|
||||
-webkit-transition: all .3s ease-out;
|
||||
-moz-transition: all .3s ease-out;
|
||||
-ms-transition: all .3s ease-out;
|
||||
-o-transition: all .3s ease-out;
|
||||
transition: all .3s ease-out;
|
||||
}
|
||||
.introjs-helperNumberLayer {
|
||||
position: absolute;
|
||||
top: -16px;
|
||||
left: -16px;
|
||||
z-index: 9999999999 !important;
|
||||
padding: 2px;
|
||||
font-family: Arial, verdana, tahoma;
|
||||
font-size: 13px;
|
||||
font-weight: bold;
|
||||
color: white;
|
||||
text-align: center;
|
||||
text-shadow: 1px 1px 1px rgba(0, 0, 0, .3);
|
||||
background: #ff3019;
|
||||
background: -webkit-linear-gradient(top, #ff3019 0, #cf0404 100%);
|
||||
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #ff3019), color-stop(100%, #cf0404));
|
||||
background: -moz-linear-gradient(top, #ff3019 0, #cf0404 100%);
|
||||
background: -ms-linear-gradient(top, #ff3019 0, #cf0404 100%);
|
||||
background: -o-linear-gradient(top, #ff3019 0, #cf0404 100%);
|
||||
background: linear-gradient(to bottom, #ff3019 0, #cf0404 100%);
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
line-height: 20px;
|
||||
border: 3px solid white;
|
||||
border-radius: 50%;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3019', endColorstr='#cf0404', GradientType=0);
|
||||
filter: progid:DXImageTransform.Microsoft.Shadow(direction=135, strength=2, color=ff0000);
|
||||
box-shadow: 0 2px 5px rgba(0, 0, 0, .4);
|
||||
}
|
||||
.introjs-arrow {
|
||||
border: 5px solid white;
|
||||
content: '';
|
||||
position: absolute;
|
||||
}
|
||||
.introjs-arrow.top {
|
||||
top: -10px;
|
||||
border-top-color: transparent;
|
||||
border-right-color: transparent;
|
||||
border-bottom-color: white;
|
||||
border-left-color: transparent;
|
||||
}
|
||||
.introjs-arrow.top-right {
|
||||
top: -10px;
|
||||
right: 10px;
|
||||
border-top-color: transparent;
|
||||
border-right-color: transparent;
|
||||
border-bottom-color: white;
|
||||
border-left-color: transparent;
|
||||
}
|
||||
.introjs-arrow.top-middle {
|
||||
top: -10px;
|
||||
left: 50%;
|
||||
margin-left: -5px;
|
||||
border-top-color: transparent;
|
||||
border-right-color: transparent;
|
||||
border-bottom-color: white;
|
||||
border-left-color: transparent;
|
||||
}
|
||||
.introjs-arrow.right {
|
||||
right: -10px;
|
||||
top: 10px;
|
||||
border-top-color: transparent;
|
||||
border-right-color: transparent;
|
||||
border-bottom-color: transparent;
|
||||
border-left-color: white;
|
||||
}
|
||||
.introjs-arrow.bottom {
|
||||
bottom: -10px;
|
||||
border-top-color: white;
|
||||
border-right-color: transparent;
|
||||
border-bottom-color: transparent;
|
||||
border-left-color: transparent;
|
||||
}
|
||||
.introjs-arrow.left {
|
||||
left: -10px;
|
||||
top: 10px;
|
||||
border-top-color: transparent;
|
||||
border-right-color: white;
|
||||
border-bottom-color: transparent;
|
||||
border-left-color: transparent;
|
||||
}
|
||||
.introjs-tooltip {
|
||||
position: absolute;
|
||||
padding: 10px;
|
||||
background-color: white;
|
||||
min-width: 200px;
|
||||
max-width: 300px;
|
||||
border-radius: 3px;
|
||||
box-shadow: 0 1px 10px rgba(0, 0, 0, .4);
|
||||
-webkit-transition: opacity .1s ease-out;
|
||||
-moz-transition: opacity .1s ease-out;
|
||||
-ms-transition: opacity .1s ease-out;
|
||||
-o-transition: opacity .1s ease-out;
|
||||
transition: opacity .1s ease-out;
|
||||
}
|
||||
.introjs-tooltipbuttons {
|
||||
text-align: right;
|
||||
}
|
||||
.introjs-button {
|
||||
position: relative;
|
||||
overflow: visible;
|
||||
display: inline-block;
|
||||
padding: .3em .8em;
|
||||
border: 1px solid #d4d4d4;
|
||||
margin: 0;
|
||||
text-decoration: none;
|
||||
text-shadow: 1px 1px 0 #fff;
|
||||
font: 11px/normal sans-serif;
|
||||
color: #333;
|
||||
white-space: nowrap;
|
||||
cursor: pointer;
|
||||
outline: 0;
|
||||
background-color: #ececec;
|
||||
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f4f4f4), to(#ececec));
|
||||
background-image: -moz-linear-gradient(#f4f4f4, #ececec);
|
||||
background-image: -o-linear-gradient(#f4f4f4, #ececec);
|
||||
background-image: linear-gradient(#f4f4f4, #ececec);
|
||||
-webkit-background-clip: padding;
|
||||
-moz-background-clip: padding;
|
||||
-o-background-clip: padding-box;
|
||||
-webkit-border-radius: .2em;
|
||||
-moz-border-radius: .2em;
|
||||
border-radius: .2em;
|
||||
zoom: 1;
|
||||
*display: inline;
|
||||
margin-top: 10px;
|
||||
}
|
||||
.introjs-button:hover {
|
||||
border-color: #bcbcbc;
|
||||
text-decoration: none;
|
||||
box-shadow: 0 1px 1px #e3e3e3;
|
||||
}
|
||||
.introjs-button:focus, .introjs-button:active {
|
||||
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ececec), to(#f4f4f4));
|
||||
background-image: -moz-linear-gradient(#ececec, #f4f4f4);
|
||||
background-image: -o-linear-gradient(#ececec, #f4f4f4);
|
||||
background-image: linear-gradient(#ececec, #f4f4f4);
|
||||
}
|
||||
.introjs-button::-moz-focus-inner {
|
||||
padding: 0;
|
||||
border: 0;
|
||||
}
|
||||
.introjs-skipbutton {
|
||||
margin-right: 5px;
|
||||
color: #7a7a7a;
|
||||
}
|
||||
.introjs-prevbutton {
|
||||
-webkit-border-radius: .2em 0 0 .2em;
|
||||
-moz-border-radius: .2em 0 0 .2em;
|
||||
border-radius: .2em 0 0 .2em;
|
||||
border-right: 0;
|
||||
}
|
||||
.introjs-nextbutton {
|
||||
-webkit-border-radius: 0 .2em .2em 0;
|
||||
-moz-border-radius: 0 .2em .2em 0;
|
||||
border-radius: 0 .2em .2em 0;
|
||||
}
|
||||
.introjs-disabled, .introjs-disabled:hover, .introjs-disabled:focus {
|
||||
color: #9a9a9a;
|
||||
border-color: #d4d4d4;
|
||||
box-shadow: none;
|
||||
cursor: default;
|
||||
background-color: #f4f4f4;
|
||||
background-image: none;
|
||||
text-decoration: none;
|
||||
}
|
||||
.introjs-bullets {
|
||||
text-align: center;
|
||||
}
|
||||
.introjs-bullets ul {
|
||||
clear: both;
|
||||
margin: 15px auto 0;
|
||||
padding: 0;
|
||||
display: inline-block;
|
||||
}
|
||||
.introjs-bullets ul li {
|
||||
list-style: none;
|
||||
float: left;
|
||||
margin: 0 2px;
|
||||
}
|
||||
.introjs-bullets ul li a {
|
||||
display: block;
|
||||
width: 6px;
|
||||
height: 6px;
|
||||
background: #ccc;
|
||||
border-radius: 10px;
|
||||
-moz-border-radius: 10px;
|
||||
-webkit-border-radius: 10px;
|
||||
text-decoration: none;
|
||||
}
|
||||
.introjs-bullets ul li a:hover {
|
||||
background: #999;
|
||||
}
|
||||
.introjs-bullets ul li a.active {
|
||||
background: #999;
|
||||
}
|
||||
.introjsFloatingElement {
|
||||
position: absolute;
|
||||
height: 0;
|
||||
width: 0;
|
||||
left: 50%;
|
||||
top: 50%
|
||||
}
|
||||
.tour-warning {
|
||||
color: #fff;
|
||||
font-weight: 400;
|
||||
background-color: #E95D4E;
|
||||
border: none;
|
||||
border-radius: 10px;
|
||||
font-size: 14px;
|
||||
line-height: 1.72222;
|
||||
}
|
||||
.tour-warning img{
|
||||
padding-right: .5em;
|
||||
}
|
||||
.tour-warning:hover,
|
||||
.tour-warning.hover,
|
||||
.tour-warning:focus,
|
||||
.tour-warning:active,
|
||||
.tour-warning.active,
|
||||
.open > .dropdown-toggle.btn-warning {
|
||||
color: #fff;
|
||||
background-color: #EC7063;
|
||||
}
|
||||
.tour-warning:active,
|
||||
.tour-warning.active,
|
||||
.open > .dropdown-toggle.tour-warning {
|
||||
background: #EC7063;
|
||||
}
|
||||
.tour-warning.disabled,
|
||||
.tour-warning[disabled],
|
||||
fieldset[disabled] .tour-warning,
|
||||
.tour-warning.disabled:hover,
|
||||
.tour-warning[disabled]:hover,
|
||||
fieldset[disabled] .tour-warning:hover,
|
||||
.tour-warning.disabled.hover,
|
||||
.tour-warning[disabled].hover,
|
||||
fieldset[disabled] .tour-warning.hover,
|
||||
.tour-warning.disabled:focus,
|
||||
.tour-warning[disabled]:focus,
|
||||
fieldset[disabled] .tour-warning:focus,
|
||||
.tour-warning.disabled:active,
|
||||
.tour-warning[disabled]:active,
|
||||
fieldset[disabled] .tour-warning:active,
|
||||
.tour-warning.disabled.active,
|
||||
.tour-warning[disabled].active,
|
||||
fieldset[disabled] .tour-warning.active {
|
||||
background-color: #bdc3c7;
|
||||
border-color: #f1c40f;
|
||||
}
|
||||
.tour-warning .badge {
|
||||
color: #f1c40f;
|
||||
background-color: #fff;
|
||||
}
|
||||
65
plugin/tour/lang/brazilian.php
Normal file
@@ -0,0 +1,65 @@
|
||||
<?php
|
||||
/* For licensing terms, see /license.txt */
|
||||
/**
|
||||
* Strings para o português brasileiro L10n.
|
||||
*
|
||||
* @author Igor Oliveira Souza <igor@igoroliveira.eng.br>
|
||||
*
|
||||
* @package chamilo.plugin.tour
|
||||
*/
|
||||
$strings['plugin_title'] = 'Tour';
|
||||
$strings['plugin_comment'] = 'Este plugin demonstra aos usuários como usar o ambiente Chamilo LMS. Você deve ativar uma região (por exemplo, "header_right") para mostrar um botão que permita ao usuário começar o tour.';
|
||||
|
||||
/* Strings for settings */
|
||||
$strings['show_tour'] = 'Mostrar o tour';
|
||||
|
||||
$showTourHelpLine01 = 'As configurações necessárias para mostrar o bloco de ajuda, no formato JSON, está localizada no arquivo %plugin/tour/config/tour.json%s.';
|
||||
$showTourHelpLine02 = 'Veja o arquivo README para mais informações.';
|
||||
|
||||
$strings['show_tour_help'] = sprintf("$showTourHelpLine01 %s $showTourHelpLine02", "<strong>", "</strong>", "<br>");
|
||||
|
||||
$strings['theme'] = 'Tema';
|
||||
$strings['theme_help'] = 'Escolha <i>nassim</i>, <i>nazanin</i>, <i>royal</i>. Deixe em branco para usar o tema padrão.';
|
||||
|
||||
/* Strings for plugin UI */
|
||||
$strings['Skip'] = 'Pular';
|
||||
$strings['Next'] = 'Próximo';
|
||||
$strings['Prev'] = 'Anterior';
|
||||
$strings['Done'] = 'Finalizar';
|
||||
$strings['StartButtonText'] = 'Começar o tour';
|
||||
|
||||
/* String for the steps */
|
||||
// if body class = section-mycampus
|
||||
$strings['TheLogoStep'] = 'Bem vindo ao <b>Chamilo LMS 1.9.x</b>';
|
||||
$strings['TheNavbarStep'] = 'Barra de menus com os links das seções principais do portal';
|
||||
$strings['TheRightPanelStep'] = 'Painel lateral';
|
||||
$strings['TheUserImageBlock'] = 'Sua foto de perfil';
|
||||
$strings['TheProfileBlock'] = 'Suas ferramentas de perfil: <i>Caixa de entrada</i>, <i>Escrever mensagem</i>, <i>Convites pendentes</i>, <i>Editar perfil</i>.';
|
||||
$strings['TheHomePageStep'] = 'Esta é a página principal, onde você encontrará anúncios importantes, links e qualquer outra informação que a equipe administrativa julgar importante.';
|
||||
|
||||
// if body class = section-mycourses
|
||||
$strings['YourCoursesList'] = 'Esta área mostra os diferentes cursos (ou sessões) que você se inscreveu. Se não aparecer nenhum curso, vá para o catálogo de cursos (no menu de Cursos mais abaixo) ou entre em contato com o administrador do portal';
|
||||
|
||||
// if body class = section-myagenda
|
||||
$strings['AgendaAllowsYouToSeeWhatsHappening'] = 'A agenda pessoal permite que você veja quais eventos estão agendados para os próximos dias, semanas ou meses.';
|
||||
$strings['AgendaTheActionBar'] = 'Você pode escolher se quer mostrar os eventos como uma lista, ou situados na visão do calendário, usando os botões de ações.';
|
||||
$strings['AgendaTodayButton'] = 'Clique no botão "hoje" para retornar ao mês atual e ver suas tarefas mais recentes';
|
||||
$strings['AgendaTheMonthIsAlwaysInEvidence'] = 'O mês atual é sempre colocado em evidência na visão do calendário';
|
||||
$strings['AgendaButtonsAllowYouToChangePeriod'] = 'Você pode alternar entre ver tarefas diárias, semanais ou mensais clicando nestes botões';
|
||||
|
||||
// if body class = section-session_my_space
|
||||
$strings['MySpaceAllowsYouToKeepTrackOfProgress'] = 'Esta área permite que você acompanhe seu progresso se você for um estudante, ou o progresso dos seus estudantes se você for um professor';
|
||||
$strings['MySpaceSectionsGiveYouImportantInsight'] = 'Os relatórios fornecidos nesta tela são extensíveis e podem providenciar informações valiosas para acompanhar o seu aprendizado ou o seu ensino';
|
||||
|
||||
// if body class = section-social-network
|
||||
$strings['SocialAllowsYouToGetInTouchWithOtherUsersOfThePlatform'] = 'A área de Rede Social permite que você entre em contato com outros usuários da plataforma';
|
||||
$strings['SocialMenuGivesAccessToDifferentToolsToGetInTouchOrPublishStuff'] = 'O menu te permite acessar uma série de telas que te permitirão conversar em privado, chat, grupos de interesse, etc.';
|
||||
|
||||
// if body class = section-dashboard
|
||||
$strings['DashboardAllowsYouToGetVerySpecificInformationInAnIllustratedCondensedFormat'] = 'O painel te permite obter informações muito específicas em um formato condensado e ilustrado. No momento, apenas administradores possuem acesso a este recurso';
|
||||
$strings['DashboardMustBeConfiguredFirstFromTheAdminSectionPluginsThenHereToEnableDesiredBlocks'] = 'Para habilitar os blocos do painel, você primeiro precisa ativá-los no menu de extensões da Área Restrita. Após ativados, volte a esta tela e escolha quais blocos você quer visualizar no seu painel';
|
||||
|
||||
// if body class = section-platform_admin
|
||||
$strings['AdministrationAllowsYouToManageYourPortal'] = 'A Área Restrita te permite gerenciar todos os recursos no seu portal Chamilo';
|
||||
$strings['AdminUsersBlockAllowsYouToManageUsers'] = 'O bloco de Usuários te permite gerenciar tudo o que estiver relacionado aos usuários.';
|
||||
$strings['AdminCoursesBlockAllowsYouToManageCourses'] = 'O bloco de Cursos te dá acesso à criação de cursos, edição, etc. Outros blocos também são dedicados a usos específicos.';
|
||||
65
plugin/tour/lang/english.php
Normal file
@@ -0,0 +1,65 @@
|
||||
<?php
|
||||
/* For licensing terms, see /license.txt */
|
||||
/**
|
||||
* Strings to english L10n.
|
||||
*
|
||||
* @author Angel Fernando Quiroz Campos <angel.quiroz@beeznest.com>
|
||||
*
|
||||
* @package chamilo.plugin.tour
|
||||
*/
|
||||
$strings['plugin_title'] = 'Tour';
|
||||
$strings['plugin_comment'] = 'This plugin shows people how to use your Chamilo LMS. You must activate the plugin in one region (e.g. "header-right") to show the button that allows the tour to start.';
|
||||
|
||||
/* Strings for settings */
|
||||
$strings['show_tour'] = 'Show the tour';
|
||||
|
||||
$showTourHelpLine01 = 'The necessary configuration to show the help blocks, in JSON format, is located in the %splugin/tour/config/tour.json%s file.';
|
||||
$showTourHelpLine02 = 'See README file for more information.';
|
||||
|
||||
$strings['show_tour_help'] = sprintf("$showTourHelpLine01 %s $showTourHelpLine02", "<strong>", "</strong>", "<br>");
|
||||
|
||||
$strings['theme'] = 'Theme';
|
||||
$strings['theme_help'] = 'Chose <i>nassim</i>, <i>nazanin</i>, <i>royal</i>. Empty to use the default theme.';
|
||||
|
||||
/* Strings for plugin UI */
|
||||
$strings['Skip'] = 'Skip';
|
||||
$strings['Next'] = 'Next';
|
||||
$strings['Prev'] = 'Prev';
|
||||
$strings['Done'] = 'Done';
|
||||
$strings['StartButtonText'] = 'Start the tour';
|
||||
|
||||
/* String for the steps */
|
||||
// if body class = section-mycampus
|
||||
$strings['TheLogoStep'] = 'Welcome to <b>Chamilo LMS 1.9.x</b>';
|
||||
$strings['TheNavbarStep'] = 'Menu bar with links to the main sections of the portal';
|
||||
$strings['TheRightPanelStep'] = 'Sidebar panel';
|
||||
$strings['TheUserImageBlock'] = 'Your profile photo';
|
||||
$strings['TheProfileBlock'] = 'Your profile tools: <i>Inbox</i>, <i>message composer</i>, <i>pending invitations</i>, <i>profile edition</i>.';
|
||||
$strings['TheHomePageStep'] = 'This is the initial homepage where you will find the portal announcements, links and any information the administration team has configured.';
|
||||
|
||||
// if body class = section-mycourses
|
||||
$strings['YourCoursesList'] = 'This area shows the different courses (or sessions) to which you are subscribed. If no course shows, go to the course catalogue (see menu) or discuss it with your portal administrator';
|
||||
|
||||
// if body class = section-myagenda
|
||||
$strings['AgendaAllowsYouToSeeWhatsHappening'] = 'The agenda tool allows you to see what events are scheduled for the upcoming days, weeks or months.';
|
||||
$strings['AgendaTheActionBar'] = 'You can decide to show the events as a list, rather than in a calendar view, using the action icons provided';
|
||||
$strings['AgendaTodayButton'] = 'Click the "today" button to see only today\'s schedule';
|
||||
$strings['AgendaTheMonthIsAlwaysInEvidence'] = 'The current month is always shown in evidence in the calendar view';
|
||||
$strings['AgendaButtonsAllowYouToChangePeriod'] = 'You can switch the view to daily, weekly or monthly by clicking one of these buttons';
|
||||
|
||||
// if body class = section-session_my_space
|
||||
$strings['MySpaceAllowsYouToKeepTrackOfProgress'] = 'This area allows you to check your progress if you\'re a student, or the progress of your students if you are a teacher';
|
||||
$strings['MySpaceSectionsGiveYouImportantInsight'] = 'The reports provided on this screen are extensible and can provide you very valuable insight on your learning or teaching';
|
||||
|
||||
// if body class = section-social-network
|
||||
$strings['SocialAllowsYouToGetInTouchWithOtherUsersOfThePlatform'] = 'The social area allows you to get in touch with other users on the platform';
|
||||
$strings['SocialMenuGivesAccessToDifferentToolsToGetInTouchOrPublishStuff'] = 'The menu gives you access to a series of screens allowing you to participate in private messaging, chat, interest groups, etc';
|
||||
|
||||
// if body class = section-dashboard
|
||||
$strings['DashboardAllowsYouToGetVerySpecificInformationInAnIllustratedCondensedFormat'] = 'The dashboard allows you to get very specific information in an illustrated and condensed format. Only administrators have access to this feature at this time';
|
||||
$strings['DashboardMustBeConfiguredFirstFromTheAdminSectionPluginsThenHereToEnableDesiredBlocks'] = 'To enable dashboard panels, you must first activate the possible panels in the admin section for plugins, then come back here and choose which panels *you* want to see on your dashboard';
|
||||
|
||||
// if body class = section-platform_admin
|
||||
$strings['AdministrationAllowsYouToManageYourPortal'] = 'The administration panel allows you to manage all resources in your Chamilo portal';
|
||||
$strings['AdminUsersBlockAllowsYouToManageUsers'] = 'The users block allows you to manage all things related to users.';
|
||||
$strings['AdminCoursesBlockAllowsYouToManageCourses'] = 'The courses block gives you access to course creation, edition, etc. Other blocks are dedicated to specific uses as well.';
|
||||
65
plugin/tour/lang/french.php
Normal file
@@ -0,0 +1,65 @@
|
||||
<?php
|
||||
/* For licensing terms, see /license.txt */
|
||||
/**
|
||||
* Strings to english L10n.
|
||||
*
|
||||
* @author Angel Fernando Quiroz Campos <angel.quiroz@beeznest.com>
|
||||
*
|
||||
* @package chamilo.plugin.tour
|
||||
*/
|
||||
$strings['plugin_title'] = 'Tour guidé';
|
||||
$strings['plugin_comment'] = 'Ce plugin montre aux utilisateurs comment utiliser votre portail Chamilo. Vous devez activer une région (p.ex. "header-right") afin d\'afficher le bouton qui permet de démarrer le processus.';
|
||||
|
||||
/* Strings for settings */
|
||||
$strings['show_tour'] = 'Activer le tour guidé';
|
||||
|
||||
$showTourHelpLine01 = 'La configuration nécessaire à l\'affichage du bloc d\'aide, au format JSON, se situe dans le fichier %splugin/tour/config/tour.json%s.';
|
||||
$showTourHelpLine02 = 'Voir fichier README pour plus d\'info.';
|
||||
|
||||
$strings['show_tour_help'] = sprintf("$showTourHelpLine01 %s $showTourHelpLine02", "<strong>", "</strong>", "<br>");
|
||||
|
||||
$strings['theme'] = 'Thème';
|
||||
$strings['theme_help'] = 'Choisissez entre <i>nassim</i>, <i>nazanin</i> et <i>royal</i>. Vide pour utiliser le thème par défaut.';
|
||||
|
||||
/* Strings for plugin UI */
|
||||
$strings['Skip'] = 'Passer';
|
||||
$strings['Next'] = 'Suivant';
|
||||
$strings['Prev'] = 'Précédent';
|
||||
$strings['Done'] = 'Terminé';
|
||||
$strings['StartButtonText'] = 'Tour guidé';
|
||||
|
||||
/* String for the steps */
|
||||
// if body class = section-mycampus
|
||||
$strings['TheLogoStep'] = 'Bienvenu(e) dans <b>Chamilo LMS</b>';
|
||||
$strings['TheNavbarStep'] = 'Barre de menu, reprenant les sections principales.';
|
||||
$strings['TheRightPanelStep'] = 'Panneau latéral de menus';
|
||||
$strings['TheUserImageBlock'] = 'Votre photo de profil utilisateur';
|
||||
$strings['TheProfileBlock'] = 'Vos outils perso: <i>Boîte de messages</i>, <i>Composer des messages</i>, <i>Invitations en attente</i>, <i>Édition du profil</i>.';
|
||||
$strings['TheHomePageStep'] = 'Ceci est la page d\'accueil du portail. On y retrouve les annonces du portail, une section d\'introduction, des liens, etc, selon ce que l\'équipe d\'administration a préparé';
|
||||
|
||||
// if body class = section-mycourses
|
||||
$strings['YourCoursesList'] = 'Cette zone affiche les différents cours (ou sessions) auxquels vous avez accès. Si aucun cours ne s\'affiche, rendez-vous sur le catalogue de cours (voir menu) ou parlez-en à votre administrateur de portail';
|
||||
|
||||
// if body class = section-myagenda
|
||||
$strings['AgendaAllowsYouToSeeWhatsHappening'] = 'L\'outil d\'agenda vous permet de voir les événements qui sont programmés pour les prochains jours, semaines ou mois.';
|
||||
$strings['AgendaTheActionBar'] = 'Vous pouvez décider de montrer les événements sous forme de liste, plutôt qu\'en vue calendrier, en utilisant les icônes d\'action fournis';
|
||||
$strings['AgendaTodayButton'] = 'Cliquez sur le bouton "Aujourd\'hui pour voir seulement le programme d\'aujourd\'hui';
|
||||
$strings['AgendaTheMonthIsAlwaysInEvidence'] = 'Le mois actuel est toujours mis en évidence dans la vue calendrier';
|
||||
$strings['AgendaButtonsAllowYouToChangePeriod'] = 'Vous pouvez changer la vue à quotidien, semanal ou mensuel en cliquant sur l\'un de ces boutons';
|
||||
|
||||
// if body class = section-session_my_space
|
||||
$strings['MySpaceAllowsYouToKeepTrackOfProgress'] = 'Cette zone vous permet de vérifier votre progrès si vous êtes étudiant, ou le progrès de vos étudiants si vous êtes enseignant';
|
||||
$strings['MySpaceSectionsGiveYouImportantInsight'] = 'Les rapports fournis sur cet écran sont extensibles et peuvent vous fournir un détail intéressant sur votre apprentissage ou la façon dont vous enseignez.';
|
||||
|
||||
// if body class = section-social-network
|
||||
$strings['SocialAllowsYouToGetInTouchWithOtherUsersOfThePlatform'] = 'La zone sociale vous permet de vous maintenir au courant de ce que font les autres utilisateurs de la plateforme';
|
||||
$strings['SocialMenuGivesAccessToDifferentToolsToGetInTouchOrPublishStuff'] = 'Le menu vous donne accès à une série d\'écrans vous permettant de participer à de la messagerie privée, du chat, des groupes d\'intérêt, etc';
|
||||
|
||||
// if body class = section-dashboard
|
||||
$strings['DashboardAllowsYouToGetVerySpecificInformationInAnIllustratedCondensedFormat'] = 'The dashboard allows you to get very specific information in an illustrated and condensed format. Only administrators have access to this feature at this time';
|
||||
$strings['DashboardMustBeConfiguredFirstFromTheAdminSectionPluginsThenHereToEnableDesiredBlocks'] = 'To enable dashboard panels, you must first activate the possible panels in the admin section for plugins, then come back here and choose which panels *you* want to see on your dashboard';
|
||||
|
||||
// if body class = section-platform_admin
|
||||
$strings['AdministrationAllowsYouToManageYourPortal'] = 'The administration panel allows you to manage all resources in your Chamilo portal';
|
||||
$strings['AdminUsersBlockAllowsYouToManageUsers'] = 'The users block allows you to manage all things related to users.';
|
||||
$strings['AdminCoursesBlockAllowsYouToManageCourses'] = 'The courses block gives you access to course creation, edition, etc. Other blocks are dedicated to specific uses as well.';
|
||||
65
plugin/tour/lang/spanish.php
Normal file
@@ -0,0 +1,65 @@
|
||||
<?php
|
||||
/* For licensing terms, see /license.txt */
|
||||
/**
|
||||
* Strings to spanish L10n.
|
||||
*
|
||||
* @author Angel Fernando Quiroz Campos <angel.quiroz@beeznest.com>
|
||||
*
|
||||
* @package chamilo.plugin.tour
|
||||
*/
|
||||
$strings['plugin_title'] = 'Tour';
|
||||
$strings['plugin_comment'] = 'Este plugin muestra a la gente cómo usar tu LMS. Es necesario activar una región (ej. header-right) para que aparezca el botón que le da inicio.';
|
||||
|
||||
/* Strings for settings */
|
||||
$strings['show_tour'] = 'Mostrar el tour';
|
||||
|
||||
$showTourHelpLine01 = 'La configuración necesaria para mostrar los bloques de ayuda, en formato JSON, están localizadas en el archivo %splugin/tour/config/tour.json%s.';
|
||||
$showTourHelpLine02 = 'Ver el archivo README para más información.';
|
||||
|
||||
$strings['show_tour_help'] = sprintf("$showTourHelpLine01 %s $showTourHelpLine02", "<strong>", "</strong>", "<br>");
|
||||
|
||||
$strings['theme'] = 'Tema';
|
||||
$strings['theme_help'] = 'Elegir entre <i>nassim</i>, <i>nazanin</i>, <i>royal</i>. Vacío para usar el tema por defecto.';
|
||||
|
||||
/* Strings for plugin UI */
|
||||
$strings['Skip'] = 'Saltar';
|
||||
$strings['Next'] = 'Siguiente';
|
||||
$strings['Prev'] = 'Anterior';
|
||||
$strings['Done'] = 'Hecho';
|
||||
$strings['StartButtonText'] = 'Empezar el recorrido';
|
||||
|
||||
/* String for the steps */
|
||||
// if body class = section-mycampus
|
||||
$strings['TheLogoStep'] = 'Bienvenido/a en <b>Chamilo LMS</b>.';
|
||||
$strings['TheNavbarStep'] = 'Barra de herramientas con enlaces a las principales secciones';
|
||||
$strings['TheRightPanelStep'] = 'Pane lateral';
|
||||
$strings['TheUserImageBlock'] = 'Tu foto de perfil.';
|
||||
$strings['TheProfileBlock'] = 'Herramientas de perfil: <i>Bandeja de entrada</i>, <i>Nuevo mensaje</i>, <i>Invitaciones pendientes</i>, <i>Editar perfil</i>.';
|
||||
$strings['TheHomePageStep'] = 'Esta es la página de inicio en la cual se encuentran los anuncios del portal, una zona de introducción, enlaces, etc, según lo que el equipo de administración ha configurado.';
|
||||
|
||||
// if body class = section-mycourses
|
||||
$strings['YourCoursesList'] = 'Esta zona muestra los distintos cursos (o sesiones) a los cuales tiene acceso. Si ningun curso aparece, puede dar una vuelta en el catálogo de cursos (ver menú) o conversarlo con su administrador de portal';
|
||||
|
||||
// if body class = section-myagenda
|
||||
$strings['AgendaAllowsYouToSeeWhatsHappening'] = 'The agenda tool allows you to see what events are scheduled for the upcoming days, weeks or months.';
|
||||
$strings['AgendaTheActionBar'] = 'You can decide to show the events as a list, rather than in a calendar view, using the action icons provided';
|
||||
$strings['AgendaTodayButton'] = 'Click the "today" button to see only today\'s schedule';
|
||||
$strings['AgendaTheMonthIsAlwaysInEvidence'] = 'The current month is always shown in evidence in the calendar view';
|
||||
$strings['AgendaButtonsAllowYouToChangePeriod'] = 'You can switch the view to daily, weekly or monthly by clicking one of these buttons';
|
||||
|
||||
// if body class = section-session_my_space
|
||||
$strings['MySpaceAllowsYouToKeepTrackOfProgress'] = 'This area allows you to check your progress if you\'re a student, or the progress of your students if you are a teacher';
|
||||
$strings['MySpaceSectionsGiveYouImportantInsight'] = 'The reports provided on this screen are extensible and can provide you very valuable insight on your learning or teaching';
|
||||
|
||||
// if body class = section-social-network
|
||||
$strings['SocialAllowsYouToGetInTouchWithOtherUsersOfThePlatform'] = 'The social area allows you to get in touch with other users on the platform';
|
||||
$strings['SocialMenuGivesAccessToDifferentToolsToGetInTouchOrPublishStuff'] = 'The menu gives you access to a series of screens allowing you to participate in private messaging, chat, interest groups, etc';
|
||||
|
||||
// if body class = section-dashboard
|
||||
$strings['DashboardAllowsYouToGetVerySpecificInformationInAnIllustratedCondensedFormat'] = 'The dashboard allows you to get very specific information in an illustrated and condensed format. Only administrators have access to this feature at this time';
|
||||
$strings['DashboardMustBeConfiguredFirstFromTheAdminSectionPluginsThenHereToEnableDesiredBlocks'] = 'To enable dashboard panels, you must first activate the possible panels in the admin section for plugins, then come back here and choose which panels *you* want to see on your dashboard';
|
||||
|
||||
// if body class = section-platform_admin
|
||||
$strings['AdministrationAllowsYouToManageYourPortal'] = 'The administration panel allows you to manage all resources in your Chamilo portal';
|
||||
$strings['AdminUsersBlockAllowsYouToManageUsers'] = 'The users block allows you to manage all things related to users.';
|
||||
$strings['AdminCoursesBlockAllowsYouToManageCourses'] = 'The courses block gives you access to course creation, edition, etc. Other blocks are dedicated to specific uses as well.';
|
||||
14
plugin/tour/plugin.php
Normal file
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
/* For licensing terms, see /license.txt */
|
||||
/**
|
||||
* Show the JavaScript template in the web pages.
|
||||
*
|
||||
* @author Angel Fernando Quiroz Campos <angel.quiroz@beeznest.com>
|
||||
*
|
||||
* @package chamilo.plugin.tour
|
||||
*/
|
||||
require_once __DIR__.'/config.php';
|
||||
|
||||
$plugin_info = Tour::create()->get_info();
|
||||
|
||||
$plugin_info['templates'] = ['views/script.tpl'];
|
||||
BIN
plugin/tour/resources/fonts/lato-black.eot
Normal file
4691
plugin/tour/resources/fonts/lato-black.svg
Normal file
|
After Width: | Height: | Size: 264 KiB |
BIN
plugin/tour/resources/fonts/lato-black.ttf
Normal file
BIN
plugin/tour/resources/fonts/lato-black.woff
Normal file
BIN
plugin/tour/resources/fonts/lato-bold.eot
Normal file
5085
plugin/tour/resources/fonts/lato-bold.svg
Normal file
|
After Width: | Height: | Size: 278 KiB |
BIN
plugin/tour/resources/fonts/lato-bold.ttf
Normal file
BIN
plugin/tour/resources/fonts/lato-bold.woff
Normal file
BIN
plugin/tour/resources/fonts/lato-bolditalic.eot
Normal file
4514
plugin/tour/resources/fonts/lato-bolditalic.svg
Normal file
|
After Width: | Height: | Size: 261 KiB |
BIN
plugin/tour/resources/fonts/lato-bolditalic.ttf
Normal file
BIN
plugin/tour/resources/fonts/lato-bolditalic.woff
Normal file
BIN
plugin/tour/resources/fonts/lato-italic.eot
Normal file
4514
plugin/tour/resources/fonts/lato-italic.svg
Normal file
|
After Width: | Height: | Size: 260 KiB |
BIN
plugin/tour/resources/fonts/lato-italic.ttf
Normal file
BIN
plugin/tour/resources/fonts/lato-italic.woff
Normal file
BIN
plugin/tour/resources/fonts/lato-light.eot
Normal file
4691
plugin/tour/resources/fonts/lato-light.svg
Normal file
|
After Width: | Height: | Size: 261 KiB |
BIN
plugin/tour/resources/fonts/lato-light.ttf
Normal file
BIN
plugin/tour/resources/fonts/lato-light.woff
Normal file
BIN
plugin/tour/resources/fonts/lato-regular.eot
Normal file
4691
plugin/tour/resources/fonts/lato-regular.svg
Normal file
|
After Width: | Height: | Size: 262 KiB |
BIN
plugin/tour/resources/fonts/lato-regular.ttf
Normal file
BIN
plugin/tour/resources/fonts/lato-regular.woff
Normal file
BIN
plugin/tour/resources/tour-chamilo.png
Normal file
|
After Width: | Height: | Size: 3.0 KiB |
141
plugin/tour/src/tour_plugin.class.php
Normal file
@@ -0,0 +1,141 @@
|
||||
<?php
|
||||
/* For licensing terms, see /license.txt */
|
||||
/**
|
||||
* The Tour class allows a guided tour in HTML5 of the Chamilo interface.
|
||||
*
|
||||
* @author Angel Fernando Quiroz Campos <angel.quiroz@beeznest.com>
|
||||
*
|
||||
* @package chamilo.plugin.tour
|
||||
*/
|
||||
class Tour extends Plugin
|
||||
{
|
||||
/**
|
||||
* Class constructor.
|
||||
*/
|
||||
protected function __construct()
|
||||
{
|
||||
$parameters = [
|
||||
'show_tour' => 'boolean',
|
||||
'theme' => 'text',
|
||||
];
|
||||
|
||||
parent::__construct('1.0', 'Angel Fernando Quiroz Campos', $parameters);
|
||||
}
|
||||
|
||||
/**
|
||||
* Instance the plugin.
|
||||
*
|
||||
* @staticvar null $result
|
||||
*
|
||||
* @return Tour
|
||||
*/
|
||||
public static function create()
|
||||
{
|
||||
static $result = null;
|
||||
|
||||
return $result ? $result : $result = new self();
|
||||
}
|
||||
|
||||
/**
|
||||
* Install the plugin.
|
||||
*/
|
||||
public function install()
|
||||
{
|
||||
$this->installDatabase();
|
||||
}
|
||||
|
||||
/**
|
||||
* Uninstall the plugin.
|
||||
*/
|
||||
public function uninstall()
|
||||
{
|
||||
$this->unistallDatabase();
|
||||
}
|
||||
|
||||
/**
|
||||
* Check whether the tour should be displayed to the user.
|
||||
*
|
||||
* @param string $currentPageClass The class of the current page
|
||||
* @param int $userId The user id
|
||||
*
|
||||
* @return bool If the user has seen the tour return false, otherwise return true
|
||||
*/
|
||||
public function checkTourForUser($currentPageClass, $userId)
|
||||
{
|
||||
$pluginTourLogTable = Database::get_main_table(TABLE_TOUR_LOG);
|
||||
|
||||
$checkResult = Database::select('count(1) as qty', $pluginTourLogTable, [
|
||||
'where' => [
|
||||
"page_class = '?' AND " => $currentPageClass,
|
||||
"user_id = ?" => intval($userId),
|
||||
], ], 'first');
|
||||
|
||||
if ($checkResult !== false) {
|
||||
if ($checkResult['qty'] > 0) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the tour as seen.
|
||||
*
|
||||
* @param string $currentPageClass The class of the current page
|
||||
* @param int $userId The user id
|
||||
*/
|
||||
public function saveCompletedTour($currentPageClass, $userId)
|
||||
{
|
||||
$pluginTourLogTable = Database::get_main_table(TABLE_TOUR_LOG);
|
||||
|
||||
Database::insert($pluginTourLogTable, [
|
||||
'page_class' => $currentPageClass,
|
||||
'user_id' => intval($userId),
|
||||
'visualization_datetime' => api_get_utc_datetime(),
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the configuration to show the tour in pages.
|
||||
*
|
||||
* @return array The config data
|
||||
*/
|
||||
public function getTourConfig()
|
||||
{
|
||||
$pluginPath = api_get_path(SYS_PLUGIN_PATH).'tour/';
|
||||
$jsonContent = file_get_contents($pluginPath.'config/tour.json');
|
||||
$jsonData = json_decode($jsonContent, true);
|
||||
|
||||
return $jsonData;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create the database tables for the plugin.
|
||||
*/
|
||||
private function installDatabase()
|
||||
{
|
||||
$pluginTourLogTable = Database::get_main_table(TABLE_TOUR_LOG);
|
||||
|
||||
$sql = "CREATE TABLE IF NOT EXISTS $pluginTourLogTable ("
|
||||
."id int UNSIGNED NOT NULL AUTO_INCREMENT, "
|
||||
."page_class varchar(255) NOT NULL, "
|
||||
."user_id int UNSIGNED NOT NULL, "
|
||||
."visualization_datetime datetime NOT NULL, "
|
||||
."PRIMARY KEY PK_tour_log (id))";
|
||||
|
||||
Database::query($sql);
|
||||
}
|
||||
|
||||
/**
|
||||
* Drop the database tables for the plugin.
|
||||
*/
|
||||
private function unistallDatabase()
|
||||
{
|
||||
$pluginTourLogTable = Database::get_main_table(TABLE_TOUR_LOG);
|
||||
|
||||
$sql = "DROP TABLE IF EXISTS $pluginTourLogTable";
|
||||
|
||||
Database::query($sql);
|
||||
}
|
||||
}
|
||||
12
plugin/tour/uninstall.php
Normal file
@@ -0,0 +1,12 @@
|
||||
<?php
|
||||
/* For licensing terms, see /license.txt */
|
||||
/**
|
||||
* Initialization uninstall.
|
||||
*
|
||||
* @author Angel Fernando Quiroz Campos <angel.quiroz@beeznest.com>
|
||||
*
|
||||
* @package chamilo.plugin.tour
|
||||
*/
|
||||
require_once __DIR__.'/config.php';
|
||||
|
||||
Tour::create()->uninstall();
|
||||
88
plugin/tour/views/script.tpl
Normal file
@@ -0,0 +1,88 @@
|
||||
{% if tour.show_tour %}
|
||||
<script type="text/javascript">
|
||||
var chamiloTour = (function() {
|
||||
var intro = null;
|
||||
var $btnStart = null;
|
||||
|
||||
var setSteps = function (stepsData) {
|
||||
var steps = new Array();
|
||||
|
||||
$.each(stepsData, function () {
|
||||
var step = this;
|
||||
|
||||
if (step.element) {
|
||||
if ($(step.element).length > 0) {
|
||||
steps.push(step);
|
||||
}
|
||||
} else {
|
||||
steps.push(step);
|
||||
}
|
||||
});
|
||||
|
||||
return steps;
|
||||
};
|
||||
|
||||
return {
|
||||
init: function(pageClass) {
|
||||
$.getJSON('{{ tour.web_path.steps_ajax }}', {
|
||||
'page_class': pageClass
|
||||
}, function(response) {
|
||||
intro = introJs();
|
||||
intro.setOptions({
|
||||
steps: setSteps(response),
|
||||
nextLabel: '{{ 'Next' | get_lang }}',
|
||||
prevLabel: '{{ 'Prev' | get_lang }}',
|
||||
skipLabel: '{{ 'Skip' | get_lang }}',
|
||||
doneLabel: '{{ 'Done' | get_lang }}'
|
||||
});
|
||||
intro.oncomplete(function () {
|
||||
$.post('{{ tour.web_path.save_ajax }}', {
|
||||
page_class: pageClass
|
||||
}, function () {
|
||||
$btnStart.remove();
|
||||
});
|
||||
});
|
||||
|
||||
$btnStart = $('<button>', {
|
||||
class: 'tour-warning',
|
||||
html: '<img src="{{ _p.web }}/plugin/tour/resources/tour-chamilo.png">{{ 'StartButtonText' | get_lang }}',
|
||||
click: function(e) {
|
||||
e.preventDefault();
|
||||
|
||||
intro.start();
|
||||
}
|
||||
}).appendTo('#tour-button-container');
|
||||
});
|
||||
}
|
||||
};
|
||||
})();
|
||||
|
||||
$(function () {
|
||||
var pages = {{ tour.pages }};
|
||||
|
||||
$.each(pages, function(index, page) {
|
||||
var thereIsSelectedPage = $(page.pageClass).length > 0;
|
||||
|
||||
if (thereIsSelectedPage && page.show) {
|
||||
$('<link>', {
|
||||
href: '{{ tour.web_path.intro_css }}',
|
||||
rel: 'stylesheet'
|
||||
}).appendTo('head');
|
||||
|
||||
{% if tour.web_path.intro_theme_css is not null %}
|
||||
$('<link>', {
|
||||
href: '{{ tour.web_path.intro_theme_css }}',
|
||||
rel: 'stylesheet'
|
||||
}).appendTo('head');
|
||||
{% endif %}
|
||||
|
||||
$.getScript('{{ tour.web_path.intro_js }}', function() {
|
||||
chamiloTour.init(page.pageClass);
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
<div id="tour-button-container"></div>
|
||||
{% endif %}
|
||||