Commit 6cff3714 authored by Ilia Ryabokon's avatar Ilia Ryabokon

Merge branch 'develop' into Ilia_dev

parents 0a2def83 252ff6d8
......@@ -20,10 +20,10 @@ var sankoreLang = {
"fr":{
"enter_title": "Entrer le titre yuor ici ...",
"welcome":"Bienvenue sur HTML Editor",
"source":"Source",
"link":"Lien",
"source":"Ajouter un lien vers une image",
"link":"Ajouter une URL",
"preview":"Aperçu",
"text_to_link":"Votre texte à lier",
"alt_text":"Texte alternatif"
}
};
\ No newline at end of file
};
......@@ -4,7 +4,7 @@
id="http://uniboard.mnemis.com/widgets/notes"
version="1.2"
width="950"
height="530"
height="600"
ub:resizable="true">
<name>Notes</name>
......
......@@ -3,9 +3,9 @@
xmlns:ub="http://uniboard.mnemis.com/widgets"
id="http://www.njin.fr/sankore/apps/balance"
version="1.0"
width="540"
height="450"
ub:resizable="true">
width="800"
height="600"
ub:resizable="false">
<name>La Balance</name>
<author href="http://www.njin.fr" email="contact@njin.fr">njin</author>
......
<?xml version="1.0" encoding="UTF-8"?>
<widget xmlns="http://www.w3.org/ns/widgets"
xmlns:ub="http://uniboard.mnemis.com/widgets"
id="http://www.njin.fr/sankore/apps/Cadran opératoire"
version="1.0"
width="630"
height="540"
ub:resizable="true">
<name>Cadran opératoire</name>
<author href="http://www.njin.fr" email="contact@njin.fr">njin</author>
<description></description>
<content src="index.html"/>
</widget>
.selected,
.result,
.input {
color: #FFCC99;
}
#disc {
position: relative;
margin: 200px auto 0;
color: #FFF;
text-shadow: 0px 1px 2px #000;
}
#disc .circle {
position: absolute;
top: 50%;
left: 50%;
border-radius: 50%;
}
.result {
width: 430px;
height: 430px;
margin-top: -215px;
margin-left: -215px;
/*OPEN SANKORE bug sur cette animation*/
/*-webkit-transition: all 0.25s ease-in-out;*/
}
.hide {
visibility: hidden;
}
.numbers {
width: 300px;
height: 300px;
border: 4px solid #FFF;
margin-top: -150px;
margin-left: -150px;
background-color: rgba(0,0,0,0.2);
}
.operators {
width: 170px;
height: 170px;
border: 4px solid #FFF;
margin-top: -85px;
margin-left: -85px;
background-color: rgba(0,0,0,0.2);
}
.input {
width: 90px;
height: 90px;
border: 4px solid #FFF;
margin-top: -45px;
margin-left: -45px;
background-color: rgba(0,0,0,0.2);
box-shadow: inset 0px 0px 4px #000;
}
.result > div,
.numbers > div,
.operators > div {
position: absolute;
top: 0px;
bottom: 50%;
left: 50%;
text-align: center;
-webkit-transform-origin: 50% 100%;
}
.numbers > div {
width: 40px;
font-size: 32px;
line-height: 32px;
margin-left: -20px;
}
.operators > div {
width: 20px;
font-size: 28px;
line-height: 20px;
margin-left: -10px;
}
.result > div > div,
.numbers > div > div,
.operators > div > div {
cursor: pointer;
}
.numbers > div > div {
padding: 15px 0;
}
.operators > div > div {
padding: 5px 0;
}
.input > div {
padding: 0 8px;
font-size: 40px;
line-height: 90px;
text-align: center;
}
.result > div {
width: 60px;
font-size: 50px;
line-height: 40px;
margin-left: -30px;
text-align: center;
}
#result {
height: 40px;
}
#result > div {
position: relative;
overflow: hidden;
height: 100%;
}
#result > div > div {
position: absolute;
width: 100%;
}
.reste {
font-size: 24px;
}
#result > div > div:first-child {
display: block;
}
#result > div > div:last-child {
display: none;
}
#result.flip > div > div:first-child {
display: none;
}
#result.flip > div > div:last-child {
display: block;
}
/*OPEN SANKORE bug sur cette animation*/
/*
.csstransforms3d .result {
-webkit-perspective: 600px;
}
.csstransforms3d #result > div > div {
-webkit-transform-style: preserve-3d !important;
-webkit-transition: all .5s ease-in-out;
-webkit-backface-visibility: hidden;
}
.csstransforms3d #result > div > div:first-child {
-webkit-transform: rotateY( 0deg );
}
.no-csstransforms3d #result > div > div:first-child {
display: block;
}
.csstransforms3d #result > div > div:last-child {
-webkit-transform: rotateY( -180deg );
}
.no-csstransforms3d #result > div > div:last-child {
display: none;
}
.csstransforms3d #result.flip > div > div:first-child {
-webkit-transform: rotateY( 180deg );
}
.no-csstransforms3d #result.flip > div > div:first-child {
display: none;
}
.csstransforms3d #result.flip > div > div:last-child {
-webkit-transform: rotateY( 0deg );
}
.no-csstransforms3d #result.flip > div > div:last-child {
display: block;
}
*/
\ No newline at end of file
fr.njin.i18n.document.title = Cadran opératoire
fr.njin.i18n.toolbar.edit = Edit
fr.njin.i18n.toolbar.view = Display
fr.njin.i18n.toolbar.reload = Reload
fr.njin.i18n.toolbar.help = Help
fr.njin.i18n.parameters.label.themes = Theme
fr.njin.i18n.parameters.label.slate.themes = slate
fr.njin.i18n.parameters.label.pad.themes = pad
fr.njin.i18n.parameters.label.none.themes = none
\ No newline at end of file
fr.njin.i18n.document.title = Cadran opératoire
fr.njin.i18n.toolbar.edit = Modifier
fr.njin.i18n.toolbar.view = Afficher
fr.njin.i18n.toolbar.reload = Recharger
fr.njin.i18n.toolbar.help = Aide
fr.njin.i18n.parameters.label.themes = Thèmes
fr.njin.i18n.parameters.label.slate.themes = ardoise
fr.njin.i18n.parameters.label.pad.themes = tablette
fr.njin.i18n.parameters.label.none.themes = aucun
\ No newline at end of file
<!doctype html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<!--
<link rel="stylesheet" href="css/fonts/Lobster/stylesheet.css">
<link rel="stylesheet" href="css/fonts/SF-Toontime/stylesheet.css">
-->
<link rel="stylesheet" href="css/ubw-main.css">
<link rel="stylesheet" href="css/main.css">
<script src="js/templates.js" type="text/javascript" charset="utf-8"></script>
<script src="js/lib/modernizr.js" type="text/javascript"></script>
<script src="js/lib/jquery-1.7.1.min.js" type="text/javascript"></script>
<script src="js/lib/jquery-css-transform.js" type="text/javascript"></script>
<script src="js/lib/jquery.i18n.properties-min-1.0.9.js" type="text/javascript" charset="utf-8"></script>
<script src="js/lib/mustache.js" type="text/javascript"></script>
<script src="js/lib/ubw-main.js" type="text/javascript"></script>
<script src="js/main.js" type="text/javascript" charset="utf-8"></script>
</head>
<body class="hasHelp">
<div id="ubwidget" data-themes="pad">
<div class="wrapper">
<div id="toolbar">
</div>
<div id="help">
<iframe src="help.html" width="100%" height="100%" frameborder="0"></iframe>
</div>
<div id="content">
<div id="parameters">
</div>
<div id="scene">
<div id="disc">
<div class="circle result hide">
<div>
<div id="result">
<div>
<div class="front">?</div>
<div class="back">12</div>
</div>
</div>
</div>
</div>
<div class="circle numbers">
<div><div>0</div></div>
<div><div>1</div></div>
<div><div>2</div></div>
<div><div>3</div></div>
<div><div>4</div></div>
<div><div>5</div></div>
<div><div>6</div></div>
<div><div>7</div></div>
<div><div>8</div></div>
<div><div>9</div></div>
<div><div>10</div></div>
<div><div>11</div></div>
</div>
<div class="circle operators">
<div><div>+</div></div>
<div><div>*</div></div>
<div><div>-</div></div>
<div><div>/</div></div>
</div>
<div class="circle input">
<div></div>
</div>
</div>
</div>
</div>
</div>
</div>
</body>
</html>
\ No newline at end of file
<h3>Cadran opératoire</h3>
<h4>Calcul mental</h4>
<p>Linteractivité permet de travailler un nombre particulier (nombre du jour) avec des additions, soustractions, multiplications et divisions. Le but est deffectuer lopération de calcul mental en cliquant sur l'opérateur et le nombre pour ensuite vérifier le résultat en cliquant sur le point d'interrogation.</p>
<p>Le bouton Recharger réinitialise la sélection effectuée.</p>
<p>Le bouton "Modifier" vous permet de choisir :</p>
<ul><li>choisir le thème de linteractivité : tablette, ardoise ou aucun (par défaut tablette),</li>
<li>modifier le nombre travaillé (au centre).</li></ul>
<p>Pour modifier le nombre au centre, il suffit de cliquer dessus, de l'effacer et de le remplacer.</p>
<p>Le bouton “Afficher” vous permet d’utiliser l’activité.</p>
(function ($) {
// Monkey patch jQuery 1.3.1+ css() method to support CSS 'transform'
// property uniformly across Safari/Chrome/Webkit, Firefox 3.5+, IE 9+, and Opera 11+.
// 2009-2011 Zachary Johnson www.zachstronaut.com
// Updated 2011.05.04 (May the fourth be with you!)
function getTransformProperty(element)
{
// Try transform first for forward compatibility
// In some versions of IE9, it is critical for msTransform to be in
// this list before MozTranform.
var properties = ['transform', 'WebkitTransform', 'msTransform', 'MozTransform', 'OTransform'];
var p;
while (p = properties.shift())
{
if (typeof element.style[p] != 'undefined')
{
return p;
}
}
// Default to transform also
return 'transform';
}
var _propsObj = null;
var proxied = $.fn.css;
$.fn.css = function (arg, val)
{
// Temporary solution for current 1.6.x incompatibility, while
// preserving 1.3.x compatibility, until I can rewrite using CSS Hooks
if (_propsObj === null)
{
if (typeof $.cssProps != 'undefined')
{
_propsObj = $.cssProps;
}
else if (typeof $.props != 'undefined')
{
_propsObj = $.props;
}
else
{
_propsObj = {}
}
}
// Find the correct browser specific property and setup the mapping using
// $.props which is used internally by jQuery.attr() when setting CSS
// properties via either the css(name, value) or css(properties) method.
// The problem with doing this once outside of css() method is that you
// need a DOM node to find the right CSS property, and there is some risk
// that somebody would call the css() method before body has loaded or any
// DOM-is-ready events have fired.
if
(
typeof _propsObj['transform'] == 'undefined'
&&
(
arg == 'transform'
||
(
typeof arg == 'object'
&& typeof arg['transform'] != 'undefined'
)
)
)
{
_propsObj['transform'] = getTransformProperty(this.get(0));
}
// We force the property mapping here because jQuery.attr() does
// property mapping with jQuery.props when setting a CSS property,
// but curCSS() does *not* do property mapping when *getting* a
// CSS property. (It probably should since it manually does it
// for 'float' now anyway... but that'd require more testing.)
//
// But, only do the forced mapping if the correct CSS property
// is not 'transform' and is something else.
if (_propsObj['transform'] != 'transform')
{
// Call in form of css('transform' ...)
if (arg == 'transform')
{
arg = _propsObj['transform'];
// User wants to GET the transform CSS, and in jQuery 1.4.3
// calls to css() for transforms return a matrix rather than
// the actual string specified by the user... avoid that
// behavior and return the string by calling jQuery.style()
// directly
if (typeof val == 'undefined' && jQuery.style)
{
return jQuery.style(this.get(0), arg);
}
}
// Call in form of css({'transform': ...})
else if
(
typeof arg == 'object'
&& typeof arg['transform'] != 'undefined'
)
{
arg[_propsObj['transform']] = arg['transform'];
delete arg['transform'];
}
}
return proxied.apply(this, arguments);
};
})(jQuery);
function onTemplateLoadedCallback() {
}
function updateAnswer() {
var flipped = $("#result").hasClass("flip");
$("#result").removeClass("flip");
setTimeout(function(){
var nselected = $(".numbers .selected");
var oselected = $(".operators .selected");
var angle = 0;
if(nselected.size() > 0 && oselected.size() > 0) {
angle = nselected.data("angle");
$(".result").removeClass("hide");
var v = $(".input > div").text();
var o = oselected.text();
var n = nselected.text();
var e = Math.floor(eval(v+o+n));
if(isNaN(e) || e == Infinity)
e = "...";
else if(o == "/") {
var r = v%n;
e = $("<div>"+e+"</div>");
e.append($("<span class='reste'>"+r+"</span>"));
}
$("#result .back").html(e);
}else
$(".result").addClass("hide");
$(".result").css("transform","rotate("+angle+"deg)");
$("#result > div").css("transform","rotate("+((-1)*angle)+"deg)");
}, flipped ? 500 : 0);
}
function reloadApp(app) {
var input = parseInt(app.parameters.value("input"));
if(isNaN(input))
input = Math.floor(Math.random()*12);
var $input = $(".input > div");
$input.text(input);
//Clean
$(".numbers .selected").removeClass("selected");
$(".operators .selected").removeClass("selected");
$input.unbind("focus").unbind("blur");
$input.get(0).contentEditable = false;
updateAnswer();
if(app.onEdit) {
$input.get(0).contentEditable = true;
$input.focus(function(){
if($(this).text() == "...")
$(this).text("");
});
$input.bind('blur', function(){
var v = parseInt($(this).text().trim());
if(isNaN(v)) {
$(this).text("...");
}else{
}
app.parameters.value("input", v);
});
}
}
function reloadCallback(parameter) {
if(parameter === undefined)
reloadApp(this);
}
$(document).ready(function(){
var callbacks = {
onTemplatesLoaded: onTemplateLoadedCallback,
onEdit: reloadApp,
onView: reloadApp
};
init(reloadCallback, {toolbar: toolbarTemplate, parameters: parametersTemplate}, callbacks);
var nr = $(".numbers").width()/2;
$(".numbers > div").each(function(i){
var n = $(this);
var angle = 30*i;
var rotate = "rotate("+(angle)+"deg)";
var irotate = "rotate("+(-angle)+"deg)";
n.css("transform", rotate);
$(">div",n).css("transform", irotate)
.data("angle", angle)
.click(function() {
if($(this).hasClass("selected")) {
$(this).removeClass("selected");
}else {
$(".numbers .selected").removeClass("selected");
$(this).addClass("selected");
}
updateAnswer();
});
});
$(".operators > div").each(function(i){
var n = $(this);
var angle = 90*i;
var rotate = "rotate("+(angle)+"deg)";
var irotate = "rotate("+(-angle)+"deg)";
n.css("transform", rotate);
$(">div",n).css("transform", irotate)
.click(function() {
if($(this).hasClass("selected")) {
$(this).removeClass("selected");
}else {
$(".operators .selected").removeClass("selected");
$(this).addClass("selected");
}
updateAnswer();
});
});
$("#result").click(function(){
$(this).toggleClass("flip");
});
});
\ No newline at end of file
var toolbarTemplate =
'<h1 class="title">{{fr.njin.i18n.document.title}}</h1>'+
'<div class="actions">'+
'<button role="edit"><span>{{fr.njin.i18n.toolbar.edit}}</span></button>'+
'<button role="view"><span>{{fr.njin.i18n.toolbar.view}}</span></button>'+
'<button role="reload"><span>{{fr.njin.i18n.toolbar.reload}}</span></button>'+
'<button role="help"><span>{{fr.njin.i18n.toolbar.help}}</span></button>'+
'</div>';
var parametersTemplate =
'<div class="inline">'+
'<label>{{fr.njin.i18n.parameters.label.themes}}'+
'<select name="themes" role="parameter">'+
'<option value="pad">{{fr.njin.i18n.parameters.label.pad.themes}}</option>'+
'<option value="slate">{{fr.njin.i18n.parameters.label.slate.themes}}</option>'+
'<option value="none">{{fr.njin.i18n.parameters.label.none.themes}}</option>'+
'</select>'+
'</label>'+
'</div>'/*+
'<div class="inline">'+
'<label>{{fr.njin.i18n.transformation.parameters.label.number}}'+
'<input class="tiny" type="number" name="number" min="2" role="parameter">'+
'</label>'+
'</div>'+
'<div id="edit-cards">'+
'</div>';
*/
\ No newline at end of file
......@@ -3,8 +3,8 @@
xmlns:ub="http://uniboard.mnemis.com/widgets"
id="http://www.njin.fr/sankore/apps/tableur"
version="1.0"
width="600"
height="400"
width="800"
height="600"
ub:resizable="true">
<name>Calcul rapide</name>
......
......@@ -4,7 +4,7 @@
id="http://uniboard.mnemis.com/widgets/notes"
version="1.2"
width="990"
height="520"
height="560"
ub:resizable="true">
<name>Notes</name>
......
......@@ -4,7 +4,7 @@
id="http://uniboard.mnemis.com/widgets/webbrowser"
version="1.1"
width="920"
height="400"
height="500"
ub:resizable="true">
<name>Choisir</name>
......
......@@ -14,7 +14,7 @@
*/
var sankoreLang = {
display: "Fermer",
display: "Afficher",
edit: "Modifier",
add: "Ajouter",
enter_data: "Saisir la donnée:",
......
......@@ -5,9 +5,9 @@ var sankoreLang = {
new_txt: "Nouveau bloc de texte",
new_slide: "Ceci est une nouvelle diapositive.",
wgt_name: "Etudier",
slate: "Bois",
pad: "Pad",
none: "Aucun",
slate: "ardoise",
pad: "tablette",
none: "aucun",
help: "Aide",
help_content: "<p><h2>Etudier</h2></p>"+
"<p><h3>Livret de pages.</h3></p>"+
......
<?xml version="1.0" encoding="UTF-8"?>
<widget xmlns="http://www.w3.org/ns/widgets"
xmlns:ub="http://uniboard.mnemis.com/widgets"
id="http://www.njin.fr/sankore/apps/memory"
version="1.0"
width="820"
height="575"
ub:resizable="true">
<name>Memory</name>
<author href="http://www.njin.fr" email="contact@njin.fr">njin</author>
<description>Correspondances/mémorisation de cartes deux à deux</description>
<content src="index.html"/>
</widget>
This source diff could not be displayed because it is too large. You can view the blob instead.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>Font Face Demo</title>
<link rel="stylesheet" href="stylesheet.css" type="text/css" charset="utf-8">
<style type="text/css" media="screen">
h1.fontface {font: 60px/68px 'Lobster13Regular', Arial, sans-serif;letter-spacing: 0;}
p.style1 {font: 18px/27px 'Lobster13Regular', Arial, sans-serif;}
#container {
width: 800px;
margin-left: auto;
margin-right: auto;
}
</style>
</head>
<body>
<div id="container">
<h1 class="fontface">Font-face Demo for the Lobster Font</h1>
<p class="style1">Lobster Regular - Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
</div>
</body>
</html>
/* Generated by Font Squirrel (http://www.fontsquirrel.com) on March 26, 2012 06:03:05 AM America/New_York */
@font-face {
font-family: 'Lobster13Regular';
src: url('Lobster_1.3-webfont.eot');
src: url('Lobster_1.3-webfont.eot?#iefix') format('embedded-opentype'),
url('Lobster_1.3-webfont.woff') format('woff'),
url('Lobster_1.3-webfont.ttf') format('truetype'),
url('Lobster_1.3-webfont.svg#Lobster13Regular') format('svg');
font-weight: normal;
font-style: normal;
}
This source diff could not be displayed because it is too large. You can view the blob instead.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>Font Face Demo</title>
<link rel="stylesheet" href="stylesheet.css" type="text/css" charset="utf-8">
<style type="text/css" media="screen">
h1.fontface {font: 60px/68px 'SFToontimeRegular', Arial, sans-serif;letter-spacing: 0;}
p.style1 {font: 18px/27px 'SFToontimeRegular', Arial, sans-serif;}
p.style2 {font: 18px/27px 'SFToontimeItalic', Arial, sans-serif;}
p.style3 {font: 18px/27px 'SFToontimeBold', Arial, sans-serif;}
p.style4 {font: 18px/27px 'SFToontimeBoldItalic', Arial, sans-serif;}
p.style5 {font: 18px/27px 'SFToontimeBlotchRegular', Arial, sans-serif;}
p.style6 {font: 18px/27px 'SFToontimeBlotchItalic', Arial, sans-serif;}
#container {
width: 800px;
margin-left: auto;
margin-right: auto;
}
</style>
</head>
<body>
<div id="container">
<h1 class="fontface">FONT-FACE DEMO FOR THE TOONTIME FONT</h1>
<p class="style1">SF Toontime Regular - Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
<p class="style2">SF Toontime Italic - Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
<p class="style3">SF Toontime Bold - Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
<p class="style4">SF Toontime Bold Italic - Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
<p class="style5">SF Toontime Blotch Regular - Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
<p class="style6">SF Toontime Blotch Italic - Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
</div>
</body>
</html>
/* Generated by Font Squirrel (http://www.fontsquirrel.com) on March 26, 2012 04:36:35 PM America/New_York */
@font-face {
font-family: 'SFToontimeRegular';
src: url('SF_Toontime-webfont.eot');
src: url('SF_Toontime-webfont.eot?#iefix') format('embedded-opentype'),
url('SF_Toontime-webfont.woff') format('woff'),
url('SF_Toontime-webfont.ttf') format('truetype'),
url('SF_Toontime-webfont.svg#SFToontimeRegular') format('svg');
font-weight: normal;
font-style: normal;
}
@font-face {
font-family: 'SFToontimeItalic';
src: url('SF_Toontime_Italic-webfont.eot');
src: url('SF_Toontime_Italic-webfont.eot?#iefix') format('embedded-opentype'),
url('SF_Toontime_Italic-webfont.woff') format('woff'),
url('SF_Toontime_Italic-webfont.ttf') format('truetype'),
url('SF_Toontime_Italic-webfont.svg#SFToontimeItalic') format('svg');
font-weight: normal;
font-style: normal;
}
@font-face {
font-family: 'SFToontimeBold';
src: url('SF_Toontime_Bold-webfont.eot');
src: url('SF_Toontime_Bold-webfont.eot?#iefix') format('embedded-opentype'),
url('SF_Toontime_Bold-webfont.woff') format('woff'),
url('SF_Toontime_Bold-webfont.ttf') format('truetype'),
url('SF_Toontime_Bold-webfont.svg#SFToontimeBold') format('svg');
font-weight: normal;
font-style: normal;
}
@font-face {
font-family: 'SFToontimeBoldItalic';
src: url('SF_Toontime_Bold_Italic-webfont.eot');
src: url('SF_Toontime_Bold_Italic-webfont.eot?#iefix') format('embedded-opentype'),
url('SF_Toontime_Bold_Italic-webfont.woff') format('woff'),
url('SF_Toontime_Bold_Italic-webfont.ttf') format('truetype'),
url('SF_Toontime_Bold_Italic-webfont.svg#SFToontimeBoldItalic') format('svg');
font-weight: normal;
font-style: normal;
}
@font-face {
font-family: 'SFToontimeBlotchRegular';
src: url('SF_Toontime_Blotch-webfont.eot');
src: url('SF_Toontime_Blotch-webfont.eot?#iefix') format('embedded-opentype'),
url('SF_Toontime_Blotch-webfont.woff') format('woff'),
url('SF_Toontime_Blotch-webfont.ttf') format('truetype'),
url('SF_Toontime_Blotch-webfont.svg#SFToontimeBlotchRegular') format('svg');
font-weight: normal;
font-style: normal;
}
@font-face {
font-family: 'SFToontimeBlotchItalic';
src: url('SF_Toontime_Blotch_Italic-webfont.eot');
src: url('SF_Toontime_Blotch_Italic-webfont.eot?#iefix') format('embedded-opentype'),
url('SF_Toontime_Blotch_Italic-webfont.woff') format('woff'),
url('SF_Toontime_Blotch_Italic-webfont.ttf') format('truetype'),
url('SF_Toontime_Blotch_Italic-webfont.svg#SFToontimeBlotchItalic') format('svg');
font-weight: normal;
font-style: normal;
}
#table {
display: table;
text-align: center;
}
#table > div {
display: table-row;
}
#table > div > div {
display: table-cell;
}
.card-container {
padding: 20px 10px;
}
.switch {
display: none;
color: #FFF;
}
.onEdit .switch {
display: block;
}
.onEdit .front .switch {
visibility: hidden;
}
.card {
position: relative;
white-space: normal;
width: 180px;
height: 180px;
overflow: hidden;
-webkit-border-radius: 8px;
-moz-border-radius: 8px;
-ms-border-radius: 8px;
border-radius: 8px;
}
.front .card {
background: url("images/pile-bg.png") center no-repeat, url("images/mark.png") center no-repeat;
}
.back .card {
-webkit-box-shadow: 0 1px 3px rgba(0,0,0, 0.65);
-moz-box-shadow: 0 1px 3px rgba(0,0,0, 0.65);
-ms-box-shadow: 0 1px 3px rgba(0,0,0, 0.65);
box-shadow: 0 1px 3px rgba(0,0,0, 0.65);
background-image: linear-gradient(top, rgb(255,255,255) 0%, rgb(204,204,204) 100%);
background-image: -o-linear-gradient(top, rgb(255,255,255) 0%, rgb(204,204,204) 100%);
background-image: -moz-linear-gradient(top, rgb(255,255,255) 0%, rgb(204,204,204) 100%);
background-image: -webkit-linear-gradient(top, rgb(255,255,255) 0%, rgb(204,204,204) 100%);
background-image: -ms-linear-gradient(top, rgb(255,255,255) 0%, rgb(204,204,204) 100%);
background-image: -webkit-gradient(
linear,
50% top,
50% bottom,
color-stop(0, rgb(255,255,255)),
color-stop(1, rgb(204,204,204))
);
}
.card > div {
display: table-cell;
vertical-align: middle;
text-align: center;
width: 180px;
height: 180px;
}
.card .text {
padding: 0px 20px;
font-family: "SFToontimeRegular";
font-size: 28px;
color: #000;
}
.usePicture .card .text, .front .card .text {
display: none;
}
.card .picture {
display: none;
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
-webkit-border-radius: 8px;
-moz-border-radius: 8px;
-ms-border-radius: 8px;
border-radius: 8px;
}
.usePicture .card .picture {
display: block;
}
.card .picture > div {
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
-webkit-border-radius: 8px;
-moz-border-radius: 8px;
-ms-border-radius: 8px;
border-radius: 8px;
}
.card .picture > div:first-child {
position: relative;
display: table-cell;
vertical-align: middle;
width: 180px;
height: 180px;
}
.card .picture > div img {
max-width: 100%;
vertical-align: middle;
}
.card .picture > div.dropzone {
border: 1px dashed black;
display: none;
}
.onEdit .card .picture > div.dropzone {
display: block;
}
.card .picture > div.dropzone div {
padding: 10px 10px 10px 50px;
text-align: left;
color: rgba(255, 255, 255, 0.5);
background: rgba(0, 0, 0, 0.4) url("images/drop-label-bg.png") 10px center no-repeat;
-webkit-border-radius: 8px 8px 0 0;
-moz-border-radius: 8px 8px 0 0;
-ms-border-radius: 8px 8px 0 0;
border-radius: 8px 8px 0 0;
}
.card .picture > div.dropzone.hover div {
background-image: url("images/drop-label-ondrop-bg.png");
color: rgba(255, 255, 255, 1);
}
.card-container .actions {
position: relative;
margin-top: -35px;
display: none;
color: #FFF;
}
.onEdit .card-container .actions {
display: block;
}
.actions button[role="flip"] {
margin: 0;
padding: 0;
border: none;
cursor: pointer;
width: 50px;
height: 50px;
background: url("images/flip.png") left center no-repeat;
text-indent: -99999px;
}
.card-container {
-webkit-perspective: 600px;
position: relative;
width: 180px;
height: 180px;
}
.onEdit .card-container {
height: 200px;
}
.cards {
position: relative;
width:100%;
height: 100%;
}
.cards > div {
position: absolute;
}
.csstransforms3d .cards > div {
-webkit-transform-style: preserve-3d;
-webkit-transition: all .5s ease-in-out;
-webkit-backface-visibility: hidden;
}
.csstransforms3d .cards > div:first-child {
-webkit-transform: rotateY( 0deg );
}
.no-csstransforms3d .cards > div:first-child {
display: block;
}
.csstransforms3d .cards > div:last-child {
-webkit-transform: rotateY( -180deg );
}
.no-csstransforms3d .cards > div:last-child {
display: none;
}
.csstransforms3d .cards.flip > div:first-child {
-webkit-transform: rotateY( 180deg );
}
.no-csstransforms3d .cards.flip > div:first-child {
display: none;
}
.csstransforms3d .cards.flip > div:last-child {
-webkit-transform: rotateY( 0deg );
}
.no-csstransforms3d .cards.flip > div:last-child {
display: block;
}
\ No newline at end of file
html, body {
margin:0;
padding: 0;
height: 100%;
font-family: "helvetica neue";
font-size: 14px;
color: #666666;
}
#body {
}
#core {
width: 100%;
height: 100%;
position: relative;
-webkit-border-radius: 8px;
-moz-border-radius: 8px;
-ms-border-radius: 8px;
border-radius: 8px;
-webkit-box-shadow: 0 1px 3px rgba(0,0,0, 0.65);
-moz-box-shadow: 0 1px 3px rgba(0,0,0, 0.65);
-ms-box-shadow: 0 1px 3px rgba(0,0,0, 0.65);
box-shadow: 0 1px 3px rgba(0,0,0, 0.65);
background-image: linear-gradient(top, white 0%, #CCC 100%);
background-image: -o-linear-gradient(top, white 0%, #CCC 100%);
background-image: -moz-linear-gradient(top, white 0%, #CCC 100%);
background-image: -webkit-linear-gradient(top, white 0%, #CCC 100%);
background-image: -ms-linear-gradient(top, white 0%, #CCC 100%);
background-image: -webkit-gradient( linear, 50% top, 50% bottom, color-stop(0, white), color-stop(1, #CCC) );
}
#core .wrapper {
width: 100%;
height: 100%;
overflow: auto;
}
#core .wrapper > div {
padding: 10px 20px;
}
\ No newline at end of file
html, body {
margin:0;
padding: 0;
font-family: "helvetica neue";
font-size: 14px;
color: #666666;
}
#ubwidget {
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
background: url("images/bg.png");
}
.theme-pad #ubwidget {
border-radius: 40px;
border-width: 52px;
-webkit-border-image: url("images/pad-bd.png") 52 repeat;
-moz-border-image: url("images/pad-bd.png") 52 repeat;
border-image: url("images/pad-bd.png") 52 repeat;
}
.theme-slate #ubwidget {
border-radius: 44px;
border-width: 52px;
-webkit-border-image: url("images/slate-bd.png") 52 repeat;
-moz-border-image: url("images/slate-bd.png") 52 repeat;
border-image: url("images/slate-bd.png") 52 repeat;
}
#ubwidget > .wrapper {
position: absolute;
top: 0px;
bottom: 0px;
left: 0px;
right: 0px;
overflow: hidden;
}
.theme-slate #ubwidget > .wrapper, .theme-pad #ubwidget > .wrapper {
position: absolute;
top: -49px;
bottom: -5px;
left: -5px;
right: -5px;
overflow: hidden;
}
#toolbar {
display: table;
width: 100%;
height: 44px;
font-family: "Lobster13Regular";
font-size: 24px;
color: #FFCC99;
padding:0 10px;
}
.theme-pad #toolbar, .theme-slate #toolbar {
height: 38px;
padding: 6px 0 0;
}
.theme-slate #toolbar {
color: #7F613F;
text-shadow: #FFDCA9 0 1px 0;
}
#toolbar > * {
display: table-cell;
height: 100%;
vertical-align: middle;
}
#toolbar .actions {
text-align: right;
}
#toolbar button, h1 {
font-weight: normal;
font-family: "Lobster13Regular";
font-size: 24px;
color: #FFCC99;
margin: 0;
}
.theme-slate #toolbar button, .theme-slate h1 {
color: #7F613F;
text-shadow: #FFDCA9 0 1px 0;
}
#toolbar button {
border: none;
padding: none;
outline: none;
background: none;
cursor: pointer;
padding-left: 34px;
margin-left: 10px;
height: 32px;
}
#toolbar button span {
display: block;
line-height: 32px;
}
#toolbar button[role='edit'] {
background: url("images/toolbar-edit.png") left top no-repeat;
}
#toolbar button[role='view'] {
display: none;
color: #FFF;
background: url("images/toolbar-edit.png") left -32px no-repeat;
}
#toolbar button[role='reload'] {
background: url("images/toolbar-reload.png") left top no-repeat;
}
#toolbar button[role='help'] {
background: url("images/toolbar-help.png") left top no-repeat;
display: none;
}
.hasHelp #toolbar button[role='help'] {
display: inline-block;
}
.showHelp #toolbar button[role='help'] {
color: #FFF;
background-position: left -32px;
}
.theme-slate #toolbar button[role='edit'] {
background-image: url("images/slate-toolbar-edit.png");
}
.theme-slate #toolbar button[role='view'] {
text-shadow: #7F613F 0 -1px 0;
background: url("images/slate-toolbar-edit.png") left -32px no-repeat;
}
.theme-slate #toolbar button[role='reload'] {
background-image: url("images/slate-toolbar-reload.png");
}
.theme-slate #toolbar button[role='help'] {
background-image: url("images/slate-toolbar-help.png");
}
.showHelp.theme-slate #toolbar button[role='help'] {
text-shadow: #7F613F 0 -1px 0;
}
.onEdit #toolbar button[role='view'] {
display: inline-block;
}
.onEdit #toolbar button[role='edit'] {
display: none;
}
#help {
width: 300px;
height: 400px;
position: absolute;
margin-top: 10px;
right: 10px;
z-index: 10000;
display: none;
}
.showHelp #help {
display: block;
}
#content {
position: absolute;
top: 44px;
bottom: 0;
overflow: auto;
left: 0;
right: 0;
background-image: -moz-radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
background-image: -webkit-radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
background-image: -o-radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
background-image: -ms-radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
background-image: radial-gradient(center center, ellipse closest-side, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0) 100%);
}
#parameters {
display:none;
padding: 10px 20px;
background: url("images/parameters-bg.png");
-webkit-border-radius: 4px 4px 0 0;
-moz-border-radius: 4px 4px 0 0;
-mz-border-radius: 4px 4px 0 0;
border-radius: 4px 4px 0 0;
}
#parameters label {
font-style: italic;
}
#parameters label > select, #parameters label > input{
margin-left: 10px;
}
#parameters > div.inline {
display: inline-block;
}
#parameters > div.inline+div.inline {
margin-left: 20px;
}
#parameters input[type=text],
#parameters input[type=number] {
height: 26px;
border: 1px solid #BBB;
background-color: #FFF;
padding: 0 4px;
-webkit-border-radius: 4px;
-moz-border-radius: 4px;
-ms-border-radius: 4px;
border-radius: 4px;
-webkit-box-shadow: 0 1px 0 #FFF;
-moz-box-shadow: 0 1px 0 #FFF;
-ms-box-shadow: 0 1px 0 #FFF;
box-shadow: 0 1px 0 #FFF;
}
#parameters input.tiny {
width: 40px;
}
#parameters input.small {
width: 80px;
}
#parameters input.medium {
width: 120px;
}
#parameters input.long {
width: 160px;
}
#scene {
padding: 20px;
}
#scene > * {
margin: 0 auto;
}
.onEdit #scene {
}
.onEdit #parameters {
display: block;
}
/*
.card-container {
-webkit-perspective: 600px;
width:100%;
height: 100%;
}
.card {
position: relative;
width:100%;
height: 100%;
}
.card > div {
position: absolute;
width:100%;
height: 100%;
-webkit-transform-style: preserve-3d;
-webkit-transition: all .5s ease-in-out;
-webkit-backface-visibility: hidden;
}
.card > div:first-child {
-webkit-transform: rotateY( 0deg );
}
.card > div:last-child {
-webkit-transform: rotateY( -180deg );
}
.card.flip > div:first-child {
-webkit-transform: rotateY( 180deg );
}
.card.flip > div:last-child {
-webkit-transform: rotateY( 0deg );
}
*/
\ No newline at end of file
<!doctype html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<!--
<link rel="stylesheet" href="css/fonts/Lobster/stylesheet.css">
<link rel="stylesheet" href="css/fonts/SF-Toontime/stylesheet.css">
-->
<link rel="stylesheet" href="css/ubw-help.css">
<script src="js/lib/modernizr.js" type="text/javascript"></script>
<script src="js/lib/jquery-1.7.1.min.js" type="text/javascript"></script>
<script src="js/lib/mustache.js" type="text/javascript"></script>
</head>
<body>
<div id="core">
<div class="wrapper">
<div>
<script>
function loadFile(filename, locale) {
var toload = filename;
var nextlocale = undefined;
if(locale.length >= 5) {
toload += '_' + locale.substring(0, 5) +'-template.js';
nextlocale = locale.substring(0, 2);
}
else if(locale.length >= 2){
toload += '_' + locale.substring(0, 2) +'-template.js';
nextlocale = '';
}
else
toload += '-template.js';
$.ajax({
url: toload,
async: false,
contentType:'text/plain;charset=UTF-8',
dataType: 'text',
success: function(data, status) {
$("#core>.wrapper>div").html(Mustache.render(data, window));
}
})
.fail(function() {
if(nextlocale !== undefined)
loadFile(filename, nextlocale);
});
}
$(document).ready(function(){
var locale = window.parent.sankore ? window.parent.sankore.locale() : "";
loadFile("js/help", locale);
});
</script>
</div>
</div>
</div>
</body>
</html>
\ No newline at end of file
fr.njin.i18n.document.title = Memory
fr.njin.i18n.toolbar.edit = Display
fr.njin.i18n.toolbar.view = Close
fr.njin.i18n.toolbar.reload = Reload
fr.njin.i18n.toolbar.help = Help
fr.njin.i18n.parameters.label.themes = Theme
fr.njin.i18n.parameters.label.slate.themes = slate
fr.njin.i18n.parameters.label.pad.themes = pad
fr.njin.i18n.parameters.label.none.themes = none
fr.njin.i18n.memory.parameters.label.cards = Cards
fr.njin.i18n.memory.parameters.option.cards = {0} cards
fr.njin.i18n.memory.parameters.label.timeout = Timeout
fr.njin.i18n.memory.label.usePicture = Image
fr.njin.i18n.memory.label.drop = Drag and drop here
fr.njin.i18n.memory.action.flip = Flip
\ No newline at end of file
fr.njin.i18n.document.title = Memory
fr.njin.i18n.toolbar.edit = Modifier
fr.njin.i18n.toolbar.view = Afficher
fr.njin.i18n.toolbar.reload = Recharger
fr.njin.i18n.toolbar.help = Aide
fr.njin.i18n.parameters.label.themes = Thèmes
fr.njin.i18n.parameters.label.slate.themes = ardoise
fr.njin.i18n.parameters.label.pad.themes = tablette
fr.njin.i18n.parameters.label.none.themes = aucun
fr.njin.i18n.memory.parameters.label.cards = Cartes
fr.njin.i18n.memory.parameters.option.cards = {0} cartes
fr.njin.i18n.memory.parameters.label.timeout = Délai
fr.njin.i18n.memory.label.usePicture = Utiliser une image
fr.njin.i18n.memory.label.drop = Glisser une ressource ici
fr.njin.i18n.memory.action.flip = Tourner
\ No newline at end of file
<!doctype html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<!--
<link rel="stylesheet" href="css/fonts/Lobster/stylesheet.css">
<link rel="stylesheet" href="css/fonts/SF-Toontime/stylesheet.css">
-->
<link rel="stylesheet" href="css/ubw-main.css">
<link rel="stylesheet" href="css/main.css">
<script src="js/templates.js" type="text/javascript" charset="utf-8"></script>
<script src="js/lib/modernizr.js" type="text/javascript"></script>
<script src="js/lib/jquery-1.7.1.min.js" type="text/javascript"></script>
<script src="js/lib/jquery.i18n.properties-min-1.0.9.js" type="text/javascript" charset="utf-8"></script>
<script src="js/lib/mustache.js" type="text/javascript"></script>
<script src="js/lib/ubw-main.js" type="text/javascript"></script>
<script src="js/main.js" type="text/javascript" charset="utf-8"></script>
</head>
<body class="hasHelp">
<div id="ubwidget" data-count="6" data-timeout="1" data-themes="pad">
<div class="wrapper">
<div id="toolbar">
</div>
<div id="help">
<iframe src="help.html" width="100%" height="100%" frameborder="0"></iframe>
</div>
<div id="content">
<div id="parameters">
</div>
<div id="scene">
</div>
</div>
</div>
</div>
</body>
</html>
\ No newline at end of file
<h3>Memory</h3>
<h4>Mental calculation, matching game</h4>
<p>The goal of the App Memory is to make pairs and remembering the location of the various cards.</p>
<p>Cards are laid out in a grid face down. The player turns two cards. If the two cards match, cards are not covered. If they do not match, the cards are turned back over.</p>
<p>The game is over when all pairs have been found.</p>
<p>The "Edit" button allows you to :</p>
<ul>
<li>change the theme of the App : tablet, slate, or none (by default tablet), </li>
<li>choose the number of cards (4, 6 or 8 cards),</li>
<li>select the displayed time of returned cards,</li>
<li>edit directly a card.</li>
</ul>
<p>The cards have by default a text field. To insert text, click on it.</p>
<p>To add an image from your library, select the checkbox "use image" and drag and drop the item. You need to turn the card with the blue button before.</p>
<p>The cards are arranged randomly in the game mode.</p>
<p>The App is able to identify the equivalent mathematical entries (authorized signs: "+", "*", "-", "/" and parentheses). However avoid division by 0.</p>
<h3>Memory</h3>
<h4>Calcul mental, jeu dassociation de cartes</h4>
<p>LApp Memory a pour but de faire des paires tout en mémorisant lemplacement des différentes cartes.</p>
<p>Les cartes sont retournées face contre table de façon à ce que les images ne soient pas visibles. Le joueur découvre 2 cartes. Si elles sont identiques, elles restent découvertes. Si elles sont différentes, elles se retournent à nouveau.</p>
<p>La partie est terminée quand toutes les paires ont été trouvées.</p>
<p>Le bouton "éditer" vous permet de :</p>
<ul>
<li>modifier le thème de l'interactivité : tablette, ardoise ou aucun (par défaut tablette),</li>
<li>choisir le nombre de cartes (4, 6 ou 8 cartes),</li>
<li>sélectionner le délai d’affichage des cartes retournées,</li>
<li>éditer directement une carte.</li>
</ul>
<p>Les cartes possèdent par défaut un champ texte. Pour insérer du texte, cliquez sur cette dernière et saisissez le texte désiré. Pour ajouter une image depuis votre bibliothèque, cochez la case “utiliser une image” et utilisez le glisser-déposer. Il faut au préalable retourner la carte avec le bouton bleu.</p>
<p>Les cartes sont disposées de manière aléatoire dans le mode jeu.</p>
<p>L’App est capable d’identifier les écritures mathématiques équivalentes (signes autorisés : “+”, “*”, “-”, “/” et les parenthèses).</p>
\ No newline at end of file
(function(k){function n(c,a){k.ajax({url:c,async:!1,cache:a.cache,contentType:"text/plain;charset="+a.encoding,dataType:"text",success:function(b){r(b,a.mode)}})}function r(c,a){for(var b="",e=c.split(/\n/),d=/(\{\d+\})/g,q=/\{(\d+)\}/g,m=/(\\u.{4})/ig,f=0;f<e.length;f++)if(e[f]=e[f].replace(/^\s\s*/,"").replace(/\s\s*$/,""),e[f].length>0&&e[f].match("^#")!="#"){var g=e[f].split("=");if(g.length>0){for(var o=unescape(g[0]).replace(/^\s\s*/,"").replace(/\s\s*$/,""),h=g.length==1?"":g[1];h.match(/\\$/)==
"\\";)h=h.substring(0,h.length-1),h+=e[++f].replace(/\s\s*$/,"");for(var l=2;l<g.length;l++)h+="="+g[l];h=h.replace(/^\s\s*/,"").replace(/\s\s*$/,"");if(a=="map"||a=="both"){if(g=h.match(m))for(l=0;l<g.length;l++)h=h.replace(g[l],s(g[l]));k.i18n.map[o]=h}if(a=="vars"||a=="both")if(h=h.replace(/"/g,'\\"'),t(o),d.test(h)){for(var g=h.split(d),l=!0,j="",n=[],p=0;p<g.length;p++)if(d.test(g[p])&&(n.length==0||n.indexOf(g[p])==-1))l||(j+=","),j+=g[p].replace(q,"v$1"),n.push(g[p]),l=!1;b+=o+"=function("+
j+"){";o='"'+h.replace(q,'"+v$1+"')+'"';b+="return "+o+";};"}else b+=o+'="'+h+'";'}}eval(b)}function t(c){if(/\./.test(c))for(var a="",c=c.split(/\./),b=0;b<c.length;b++)b>0&&(a+="."),a+=c[b],eval("typeof "+a+' == "undefined"')&&eval(a+"={};")}function s(c){var a=[],c=parseInt(c.substr(2),16);c>=0&&c<Math.pow(2,16)&&a.push(c);for(var c="",b=0;b<a.length;++b)c+=String.fromCharCode(a[b]);return c}k.i18n={};k.i18n.map={};k.i18n.properties=function(c){c=k.extend({name:"Messages",language:"",path:"",mode:"vars",
cache:!1,encoding:"UTF-8",callback:null},c);if(c.language===null||c.language=="")c.language=k.i18n.browserLang();if(c.language===null)c.language="";var a=c.name&&c.name.constructor==Array?c.name:[c.name];for(i=0;i<a.length;i++)n(c.path+a[i]+".properties",c),c.language.length>=2&&n(c.path+a[i]+"_"+c.language.substring(0,2)+".properties",c),c.language.length>=5&&n(c.path+a[i]+"_"+c.language.substring(0,5)+".properties",c);c.callback&&c.callback()};k.i18n.prop=function(c){var a=k.i18n.map[c];if(a==null)return"["+
c+"]";var b;if(typeof a=="string"){for(b=0;(b=a.indexOf("\\",b))!=-1;)a=a[b+1]=="t"?a.substring(0,b)+"\t"+a.substring(b++ +2):a[b+1]=="r"?a.substring(0,b)+"\r"+a.substring(b++ +2):a[b+1]=="n"?a.substring(0,b)+"\n"+a.substring(b++ +2):a[b+1]=="f"?a.substring(0,b)+"\u000c"+a.substring(b++ +2):a[b+1]=="\\"?a.substring(0,b)+"\\"+a.substring(b++ +2):a.substring(0,b)+a.substring(b+1);var e=[],d,j;for(b=0;b<a.length;)if(a[b]=="'")if(b==a.length-1)a=a.substring(0,b);else if(a[b+1]=="'")a=a.substring(0,b)+
a.substring(++b);else{for(d=b+2;(d=a.indexOf("'",d))!=-1;)if(d==a.length-1||a[d+1]!="'"){a=a.substring(0,b)+a.substring(b+1,d)+a.substring(d+1);b=d-1;break}else a=a.substring(0,d)+a.substring(++d);d==-1&&(a=a.substring(0,b)+a.substring(b+1))}else if(a[b]=="{")if(d=a.indexOf("}",b+1),d==-1)b++;else if(j=parseInt(a.substring(b+1,d)),!isNaN(j)&&j>=0){var m=a.substring(0,b);m!=""&&e.push(m);e.push(j);b=0;a=a.substring(d+1)}else b=d+1;else b++;a!=""&&e.push(a);a=e;k.i18n.map[c]=e}if(a.length==0)return"";
if(a.lengh==1&&typeof a[0]=="string")return a[0];m="";for(b=0;b<a.length;b++)m+=typeof a[b]=="string"?a[b]:a[b]+1<arguments.length?arguments[a[b]+1]:"{"+a[b]+"}";return m};k.i18n.browserLang=function(){var c=navigator.language||navigator.userLanguage,c=c.toLowerCase();c.length>3&&(c=c.substring(0,3)+c.substring(3).toUpperCase());return c};var j;if(!j)j=function(c,a,b){if(Object.prototype.toString.call(a)!=="[object RegExp]")return typeof j._nativeSplit=="undefined"?c.split(a,b):j._nativeSplit.call(c,
a,b);var e=[],d=0,k=(a.ignoreCase?"i":"")+(a.multiline?"m":"")+(a.sticky?"y":""),a=RegExp(a.source,k+"g"),m,f,g;c+="";j._compliantExecNpcg||(m=RegExp("^"+a.source+"$(?!\\s)",k));if(b===void 0||+b<0)b=Infinity;else if(b=Math.floor(+b),!b)return[];for(;f=a.exec(c);){k=f.index+f[0].length;if(k>d&&(e.push(c.slice(d,f.index)),!j._compliantExecNpcg&&f.length>1&&f[0].replace(m,function(){for(var a=1;a<arguments.length-2;a++)arguments[a]===void 0&&(f[a]=void 0)}),f.length>1&&f.index<c.length&&Array.prototype.push.apply(e,
f.slice(1)),g=f[0].length,d=k,e.length>=b))break;a.lastIndex===f.index&&a.lastIndex++}d===c.length?(g||!a.test(""))&&e.push(""):e.push(c.slice(d));return e.length>b?e.slice(0,b):e},j._compliantExecNpcg=/()??/.exec("")[1]===void 0,j._nativeSplit=String.prototype.split;String.prototype.split=function(c,a){return j(this,c,a)}})(jQuery);
\ No newline at end of file
/*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
function log(object) {
console.log(object);
}
function initAfterI18nMessagesLoaded(reload, templates, callbacks) {
document.title = fr.njin.i18n.document.title;
var ubwidget = $("#ubwidget");
var parameters = Object.create(Parameters,{
container: {
value: ubwidget
},
delegate: {
value: window.sankore || Object.create(ParametersDelegate)
}
});
var app = Object.create(App, {
container: {
value: ubwidget
},
parameters: {
value: parameters
},
reload: {
value: reload
}
});
app.init();
app.onEdit = false;
if(templates.toolbar) {
$("#toolbar").html(Mustache.render(templates.toolbar, window));
}
if(templates.parameters) {
$("#parameters").html(Mustache.render(templates.parameters, window));
}
if(callbacks.onTemplatesLoaded && typeof callbacks.onTemplatesLoaded === 'function') {
callbacks.onTemplatesLoaded(app);
}
log("Update setting views with stored parameters");
$("#parameters (input|select)[role=parameter]").each(function(i, input) {
(function(input){
var key = input.name;
var type = input.type;
var isRadioOrcheckbox = (type !== undefined && (type === "checkbox" || type === "radio"));
var stored = parameters.value(key);
if(isRadioOrcheckbox)
$(input).attr("checked", (typeof stored === "string" ? stored === "true" : stored));
else
$(input).val(stored);
$(input).change(function(){
var val = (isRadioOrcheckbox ? $(this).is(":checked") : $(this).val());
parameters.value(key, val);
});
})(input);
});
log("Toobar Initialisation");
$("button[role=edit]").click(function(){
app.onEdit = true;
$(document.body).addClass("onEdit");
if(callbacks.onEdit && typeof callbacks.onEdit === 'function') {
callbacks.onEdit(app);
}
});
$("button[role=view]").click(function(){
app.onEdit = false;
$(document.body).removeClass("onEdit");
if(callbacks.onView && typeof callbacks.onView === 'function') {
callbacks.onView(app);
}
});
$("button[role=reload]").click(function(){
app.reload();
});
$("button[role=help]").click(function(){
$("body").toggleClass("showHelp");
});
$("select[name='themes']").change(function() {
$("body").get(0).className = $("body")[0].className.replace(/\btheme-[^\s]*\b/gi, '');
$("body").addClass("theme-"+$(this).val());
});
$("body").addClass("theme-"+$("select[name='themes']").val());
}
function init(reload, templates, callbacks){
var locale = window.sankore ? sankore.locale() : "";
$.i18n.properties({
name: 'Messages',
path: 'i18n/',
language: locale,
callback: function(){
initAfterI18nMessagesLoaded(reload, templates, callbacks);
}
});
}
var Parameters = (function(){
var self = Object.create({}, {
container: {
value: null
},
delegate: {
value: null
},
value: {
value: function(key, value) {
if(value === undefined) {
var val = this.delegate.preference(key);
log("Retrieve parameter value ["+val+"] as type ["+(typeof val)+"] for key : ["+key+"]");
return (val !== undefined && (typeof val !== "string" || val)) ? val : $("#ubwidget").data(key);
}
else {
log("Set parameter value ["+value+"] for key : ["+key+"]");
this.delegate.setPreference(key, value);
this.container.trigger("preferenceChange", {key: key, value: value});
}
}
}
});
return self;
})();
var ParametersDelegate = (function(){
var self = Object.create({}, {
preference: {
value: function(key) {
return this[key];
}
},
setPreference: {
value: function(key, value) {
this[key] = value;
}
}
});
return self;
})();
var App = (function() {
var self = Object.create({}, {
container: {
value: null
},
parameters: {
value: null
},
init: {
value: function() {
var that = this;
this.container.bind("preferenceChange", function(evt, parameter) {
that.reload(parameter);
});
this.reload();
}
},
reload: {
value: function(parameter) {
if(parameter === undefined)
log("Reload");
else
log("Update");
}
},
utils: {
value: Object.create({}, {
shuffle: {
value: function(array) {
var unpickedSize = array.length;
while(unpickedSize > 0) {
var n = Math.floor(Math.random()*unpickedSize);
var temp = array[unpickedSize-1];
array[unpickedSize-1] = array[n];
array[n] = temp;
unpickedSize--;
}
}
},
guid: {
value: function() {
var S4 = function() {
return (((1+Math.random())*0x10000)|0).toString(16).substring(1);
};
return (S4()+S4()+"-"+S4()+"-"+S4()+"-"+S4()+"-"+S4()+S4()+S4());
}
},
droppable: {
value: function($e, callback) {
$e.bind("dragover", function(){
$(this).addClass("hover");
return false;
});
$e.bind("dragleave", function(){
$(this).removeClass("hover");
return false;
});
$e.bind("drop", function(e){
$(this).removeClass("hover");
e = e || window.event;
e.preventDefault();
// jQuery wraps the originalEvent, so we try to detect that here...
e = e.originalEvent || e;
if(window.sankore) {
function stringToXML(text){
if (window.ActiveXObject){
var doc=new ActiveXObject('Microsoft.XMLDOM');
doc.async='false';
doc.loadXML(text);
} else {
var parser=new DOMParser();
doc=parser.parseFromString(text,'text/xml');
}
return doc;
}
var file = stringToXML(e.dataTransfer.getData("text/plain"));
callback({
src: $(file).find("path:eq(0)").text()
});
return false;
}
// Using e.files with fallback because e.dataTransfer is immutable and can't be overridden in Polyfills (http://sandbox.knarly.com/js/dropfiles/).
var files = (e.files || e.dataTransfer.files);
for (var i = 0; i < files.length; i++) {
// Loop through our files with a closure so each of our FileReader's are isolated.
(function (i) {
if(typeof FileReader !== "undefined") {
var reader = new FileReader();
reader.onload = function (event) {
callback({
src: event.target.result,
title: (files[i].name),
alt: (files[i].name)
});
};
reader.readAsDataURL(files[i]);
}
})(i);
}
return false;
});
}
}
})
}
});
return self;
})();
\ No newline at end of file
var defaults = ["1/1", "2-1", "3*(3+2)", "5*3", "4+12", "0+16"];
var Card = (function() {
var self = Object.create({}, {
val: {
value: -1,
writable: true
},
id: {
value: -1,
writable: true
},
index: {
value: -1,
writable: true
},
isMatch: {
value: function(card) {
if (this.val == card.val) {
return true;
}
return false;
}
}
});
return self;
})();
var Game = (function() {
var self = Object.create({}, {
cards: {
value: null,
enumarable: true,
writable: true
},
matches: {
value: 0,
writable: true
},
init: {
value: function(count) {
if(typeof count !== "number"){
log("Cards count must be an number");
return;
}
this.cards = new Array(count);
for (i = 0; i < this.cards.length / 2; i++) {
var card = Object.create(Card, {
val: {
value: i+1
},
id: {
value: i*2
}
});
card.index = card.id;
var card2 = Object.create(Card, {
val: {
value: i+1
},
id: {
value: card.index+1
}
});
card2.index = card2.id;
this.cards[card.index] = card;
this.cards[card2.index] = card2;
}
}
},
selected: {
value: null,
writable: true
}
});
return self;
})();
function onTemplateLoadedCallback() {
$("select[name=count]").each(function(i, select) {
var min = $(select).data("min");
var max = $(select).data("max");
for(var i = min ; i <= max ; i=i+2) {
var option = $("<option/>");
option.val(i);
option.text(fr.njin.i18n.memory.parameters.option.cards(i));
$(select).append(option);
}
});
/*
$("#timeoutValue").text($("input[name=timeout]").val());
$("input[name=timeout]").change(function(){
$("#timeoutValue").text($(this).val());
});
*/
}
function reloadApp(app) {
var cardsCount = parseInt(app.parameters.value("count"));
var timeout = parseInt(app.parameters.value("timeout"))*1000;
var scene = $("#scene");
var table = $("<div id='table'/>");
scene.empty();
scene.append(table);
var game = Object.create(Game);
game.init(cardsCount);
var rows = new Array(game.cards.length/2);
for(i = 0 ; i < game.cards.length/2 ; i++) {
var row = $("<div/>");
table.append(row);
rows[i] = row;
}
if(!app.onEdit)
app.utils.shuffle(game.cards);
for(i = 0 ; i < game.cards.length ; i++) {
(function(){
var card = game.cards[i];
var defaultValue = defaults[card.index]
card.index = i;
var pFrontTextKey = cardTextParameterKey(card, 0);
var pBackTextKey = cardTextParameterKey(card, 1);
window.card = card;
window.frontDisplayValue = app.parameters.value(pFrontTextKey) || "?";
window.backDisplayValue = app.parameters.value(pBackTextKey) || defaultValue;
var cardView = $(Mustache.render(cardTemplate, window));
rows[i%2].append(cardView);
cardView.data("card", card);
var checkbox = cardView.find("input[name='switch']");
function setSwicth(index) {
var val = app.parameters.value("#UsePicture"+cardParameterKey(card, index)) === "true";
var $p = cardView.find(".cards > div").eq(index);
if(val) {
$p.addClass("usePicture");
}else {
$p.removeClass("usePicture");
}
checkbox.eq(index).attr("checked", val);
}
checkbox.each(function(index) {
$(this).change(function() {
app.parameters.value("#UsePicture"+cardParameterKey(card, index), $(this).is(':checked'));
setSwicth(index);
});
});
setSwicth(0);
setSwicth(1);
var dropzone = cardView.find(".dropzone");
function setPicture(index) {
var f = $.parseJSON(app.parameters.value("#Picture"+cardParameterKey(card, index)));
var pictureHolder = dropzone.eq(index).parent().find(">div:eq(0)");
if(f !== null) {
var $img = $('<img src="" class="uploadPic" title="" alt="" />').attr(f);
pictureHolder.empty();
pictureHolder.append($img);
}
}
dropzone.each(function(index){
app.utils.droppable($(this), function(f) {
app.parameters.value("#Picture"+cardParameterKey(card, index), JSON.stringify(f));
setPicture(index);
});
});
setPicture(0);
setPicture(1);
})();
}
if(!app.onEdit) {
$(".cards>div:first-child").click(function(){
var cardView = $(this).parent();
var card = cardView.parent().parent().data("card");
cardView.toggleClass("flip");
log("Flip card at index "+card.index+" w/ value "+card.val);
if(game.selected == null)
game.selected = card;
else{
var toCompare = game.selected;
log("Compare w/ card at index "+toCompare.index+" w/ value "+toCompare.val);
var isMatch = card.isMatch(toCompare);
if(!isMatch) {
var index = toCompare.index;
var otherCardView = rows[index%2].find(">div").eq(Math.floor(index/2)).find(".cards:eq(0)");
setTimeout(function(){
cardView.toggleClass("flip");
otherCardView.toggleClass("flip");
}, timeout);
}else{
game.matches++;
}
game.selected = null;
}
});
}else{
$(".card .text > div").each(function(i, e) {
var card = $(e).parent().parent().parent().parent().parent().parent().data("card");
var pKey = cardTextParameterKey(card, i);
e.contentEditable = true;
$(e).bind('blur keyup paste', function(){
app.parameters.value(pKey, $(this).text());
});
});
$(".card-container .actions button[role=flip]").click(function(){
var cardView = $(this).parent().parent().find(">.cards:eq(0)");
cardView.toggleClass("flip");
});
$(".card-container .actions button[role=flip]").click();
}
if(window.sankore)
window.sankore.enableDropOnWidget(app.onEdit);
}
function cardParameterKey(card, i) {
return "card"+card.id+(i%2==0 ? "Front":"Back");
}
function cardTextParameterKey(card, i) {
return cardParameterKey(card, i)+"Text";
}
function reloadCallback(parameter) {
if(parameter === undefined || parameter.key === "count")
reloadApp(this);
}
$(document).ready(function(){
var callbacks = {
onTemplatesLoaded: onTemplateLoadedCallback,
onEdit: reloadApp,
onView: reloadApp
};
init(reloadCallback, {toolbar: toolbarTemplate, parameters: parametersTemplate}, callbacks);
});
\ No newline at end of file
var toolbarTemplate =
'<h1 class="title">{{fr.njin.i18n.document.title}}</h1>'+
'<div class="actions">'+
'<button role="edit"><span>{{fr.njin.i18n.toolbar.edit}}</span></button>'+
'<button role="view"><span>{{fr.njin.i18n.toolbar.view}}</span></button>'+
'<button role="reload"><span>{{fr.njin.i18n.toolbar.reload}}</span></button>'+
'<button role="help"><span>{{fr.njin.i18n.toolbar.help}}</span></button>'+
'</div>';
var parametersTemplate =
'<div class="inline">'+
'<label>{{fr.njin.i18n.parameters.label.themes}}'+
'<select name="themes" role="parameter">'+
'<option value="pad">{{fr.njin.i18n.parameters.label.pad.themes}}</option>'+
'<option value="slate">{{fr.njin.i18n.parameters.label.slate.themes}}</option>'+
'<option value="none">{{fr.njin.i18n.parameters.label.none.themes}}</option>'+
'</select>'+
'</label>'+
'</div>'+
'<div class="inline">'+
'<label>{{fr.njin.i18n.memory.parameters.label.cards}}'+
'<select name="count" role="parameter" data-min="4" data-max="8">'+
'</select>'+
'</label>'+
'</div>'+
'<div class="inline">'+
'<label>{{fr.njin.i18n.memory.parameters.label.timeout}}'+
'<input name="timeout" role="parameter" type="text" min="1" max="60" value="1"/><span> (s)</span>'+
'</label>'+
'</div>';
var cardTemplate =
'<div>'+
'<div class="card-container">'+
'<div class="cards">'+
'<div class="front">'+
"<div class='switch'>"+
"<label>{{fr.njin.i18n.memory.label.usePicture}}<input type='checkbox' name='switch'></label>"+
"</div>"+
"<div class='card'>"+
"<div class='text'>"+
"<div>{{frontDisplayValue}}</div>"+
"</div>"+
"<div class='picture'>"+
"<div></div>"+
"<div class='dropzone'>"+
"<div>{{fr.njin.i18n.memory.label.drop}}</div>"+
"</div>"+
"</div>"+
"</div>"+
'</div>'+
'<div class="back">'+
"<div class='switch'>"+
"<label>{{fr.njin.i18n.memory.label.usePicture}}<input type='checkbox' name='switch'></label>"+
"</div>"+
"<div class='card'>"+
"<div class='text'>"+
"<div>{{backDisplayValue}}</div>"+
"</div>"+
"<div class='picture'>"+
"<div></div>"+
"<div class='dropzone'>"+
"<div>{{fr.njin.i18n.memory.label.drop}}</div>"+
"</div>"+
"</div>"+
"</div>"+
'</div>'+
'</div>'+
'<div class="actions">'+
'<button role="flip">{{fr.njin.i18n.memory.action.flip}}</button>'+
'<div>{{card.val}}</div>'+
'</div>'+
'</div>'+
'</div>';
\ No newline at end of file
......@@ -4,7 +4,7 @@
id="http://uniboard.mnemis.com/widgets/notes"
version="1.2"
width="950"
height="370"
height="600"
ub:resizable="true">
<name>Notes</name>
......
var sankoreLang = {
display: "Afficher",
edit: "Modifier",
short_desc: "Ecoutez le son et replacer les lettres dans l'ordre.",
short_desc: "Ecoutez le son et replacez les lettres dans l'ordre.",
add: "Nouveau bloc",
enter: "Saisir la consigne ici ...",
example: "exemple",
wgt_name: "Ordonner des lettres",
reload: "Recharger",
slate: "ardoise",
pad: "pad",
pad: "tablette",
none: "aucun",
help: "Aide",
help_content: "<p><h2>Ordre des lettres</h2></p>"+
......@@ -565,4 +565,4 @@ if (window.widget) {
$(this).parent().find(":first-child").removeClass("stop").addClass("play");
});
}
}
\ No newline at end of file
}
......@@ -4,7 +4,7 @@
id="http://uniboard.mnemis.com/widgets/notes"
version="1.2"
width="950"
height="400"
height="600"
ub:resizable="true">
<name>Notes</name>
......
......@@ -5,7 +5,7 @@
id="http://www.example.net/widgets/helloworld"
version="1.0"
width="850"
height="300"
height="350"
ub:resizable="true">
<name>Split a phrase</name>
......
......@@ -5,7 +5,7 @@
id="http://www.example.net/widgets/helloworld"
version="1.0"
width="850"
height="350"
height="400"
ub:resizable="true">
<name>Split a text [alt]</name>
......
......@@ -3,9 +3,9 @@
xmlns:ub="http://uniboard.mnemis.com/widgets"
id="http://www.njin.fr/sankore/apps/tableur"
version="1.0"
width="805"
height="624"
ub:resizable="true">
width="850"
height="750"
ub:resizable="false">
<name>Tableur</name>
<author href="http://www.njin.fr" email="contact@njin.fr">njin</author>
......
......@@ -4,7 +4,7 @@
id="http://www.njin.fr/sankore/apps/Le train"
version="1.0"
width="940"
height="340"
height="580"
ub:resizable="false">
<name>Le train</name>
......
This Font Software is licensed under the SIL Open Font License, Version 1.1.
This license is copied below, and is also available with a FAQ at:
http://scripts.sil.org/OFL
-----------------------------------------------------------
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
-----------------------------------------------------------
PREAMBLE
The goals of the Open Font License (OFL) are to stimulate worldwide
development of collaborative font projects, to support the font creation
efforts of academic and linguistic communities, and to provide a free and
open framework in which fonts may be shared and improved in partnership
with others.
The OFL allows the licensed fonts to be used, studied, modified and
redistributed freely as long as they are not sold by themselves. The
fonts, including any derivative works, can be bundled, embedded,
redistributed and/or sold with any software provided that any reserved
names are not used by derivative works. The fonts and derivatives,
however, cannot be released under any other type of license. The
requirement for fonts to remain under this license does not apply
to any document created using the fonts or their derivatives.
DEFINITIONS
"Font Software" refers to the set of files released by the Copyright
Holder(s) under this license and clearly marked as such. This may
include source files, build scripts and documentation.
"Reserved Font Name" refers to any names specified as such after the
copyright statement(s).
"Original Version" refers to the collection of Font Software components as
distributed by the Copyright Holder(s).
"Modified Version" refers to any derivative made by adding to, deleting,
or substituting -- in part or in whole -- any of the components of the
Original Version, by changing formats or by porting the Font Software to a
new environment.
"Author" refers to any designer, engineer, programmer, technical
writer or other person who contributed to the Font Software.
PERMISSION & CONDITIONS
Permission is hereby granted, free of charge, to any person obtaining
a copy of the Font Software, to use, study, copy, merge, embed, modify,
redistribute, and sell modified and unmodified copies of the Font
Software, subject to the following conditions:
1) Neither the Font Software nor any of its individual components,
in Original or Modified Versions, may be sold by itself.
2) Original or Modified Versions of the Font Software may be bundled,
redistributed and/or sold with any software, provided that each copy
contains the above copyright notice and this license. These can be
included either as stand-alone text files, human-readable headers or
in the appropriate machine-readable metadata fields within text or
binary files as long as those fields can be easily viewed by the user.
3) No Modified Version of the Font Software may use the Reserved Font
Name(s) unless explicit written permission is granted by the corresponding
Copyright Holder. This restriction only applies to the primary font name as
presented to the users.
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
Software shall not be used to promote, endorse or advertise any
Modified Version, except to acknowledge the contribution(s) of the
Copyright Holder(s) and the Author(s) or with their explicit written
permission.
5) The Font Software, modified or unmodified, in part or in whole,
must be distributed entirely under this license, and must not be
distributed under any other license. The requirement for fonts to
remain under this license does not apply to any document created
using the Font Software.
TERMINATION
This license becomes null and void if any of the above conditions are
not met.
DISCLAIMER
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
OTHER DEALINGS IN THE FONT SOFTWARE.
\ No newline at end of file
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>Font Face Demo</title>
<link rel="stylesheet" href="stylesheet.css" type="text/css" charset="utf-8">
<style type="text/css" media="screen">
h1.fontface {font: 60px/68px 'Lobster13Regular', Arial, sans-serif;letter-spacing: 0;}
p.style1 {font: 18px/27px 'Lobster13Regular', Arial, sans-serif;}
#container {
width: 800px;
margin-left: auto;
margin-right: auto;
}
</style>
</head>
<body>
<div id="container">
<h1 class="fontface">Font-face Demo for the Lobster Font</h1>
<p class="style1">Lobster Regular - Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
</div>
</body>
</html>
/* Generated by Font Squirrel (http://www.fontsquirrel.com) on March 26, 2012 06:03:05 AM America/New_York */
@font-face {
font-family: 'Lobster13Regular';
src: url('Lobster_1.3-webfont.eot');
src: url('Lobster_1.3-webfont.eot?#iefix') format('embedded-opentype'),
url('Lobster_1.3-webfont.woff') format('woff'),
url('Lobster_1.3-webfont.ttf') format('truetype'),
url('Lobster_1.3-webfont.svg#Lobster13Regular') format('svg');
font-weight: normal;
font-style: normal;
}
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment