Browse Source

🎉 Hello world

master
cdesmidt 9 months ago
commit
2d66ff27e2
15 changed files with 10917 additions and 0 deletions
  1. +4
    -0
      .gitignore
  2. +40
    -0
      css/override.css
  3. +97
    -0
      css/plugins/buttons/screen.css
  4. +29
    -0
      css/print.css
  5. +266
    -0
      css/screen.css
  6. +136
    -0
      css/style.css
  7. +46
    -0
      index.html
  8. +9597
    -0
      js/jquery-1.9.1.js
  9. +43
    -0
      js/jquery.a-tools-1.5.2.min.js
  10. +231
    -0
      js/jquery.asuggest.js
  11. +72
    -0
      js/jquery.explanationCheck.js
  12. +190
    -0
      js/plugins.js
  13. +6
    -0
      load.php
  14. +160
    -0
      save.php
  15. +0
    -0
      saved/.gitkeep

+ 4
- 0
.gitignore View File

@@ -0,0 +1,4 @@
# Created by .ignore support plugin (hsz.mobi)
.idea
/saved/*
!/saved/.gitkeep

+ 40
- 0
css/override.css View File

@@ -0,0 +1,40 @@
body{background:#1E1E1A; color:#FFF;/*font-family:Georgia,"Times New Roman",Times,serif;*/}
.container{background:#0C0C0A;border-radius:5px;}
input[type=text], input[type=search], input[type=email], input[type=password]{width:385px;height:23px;}
input[type=text], input[type=search], input[type=email], input[type=password], textarea{
background:#EEE;
/*float:left;*/
margin: 0.7em 0.5em;
border:1px solid #CCC;
padding: 2px 7px;
font-family:Georgia, serif;
}
input[type=text]:hover, input[type=search]:hover, input[type=email]:hover, input[type=password]:hover, textarea:hover{
border:1px solid #000;
}
footer{text-align:center;}
h1 { font-family: 'Geo', arial, serif; }
h1 a, label {color:#FF9900 !important;}
h3{background-color:#1E1E1A; padding:5px; color:#FFF;font-family: 'Geo', arial, serif;margin-top:1.25em;}
h3 a,h4,h5{color:#FFF; text-decoration:none;}
#pagination{margin:0 auto;}
hr{background:#FF9900; color:#FF9900;}
li{display:block !important;}
a{color:#FFF;}
a:visited{color:#ccc}
a:focus, a:hover {color:#09f;}
legend{color:#FF9900;}
.subMenu{margin-left: 7px; border-left:1px solid #FF9900;}
label{float:left;}
.comment-0{background:#333;}
.comment-1{background:#666;}
.comment-0 xmp, .comment-1 xmp{ font-family:Georgia,"Times New Roman",Times,serif; font-size:11px;}
.comment-0, .comment-1{padding:3px;}
.comment-0 img, .comment-1 img {float:left;}
.myLink{padding-left:14px; background:url('http://shikiryu.com/favicon12.png') left center no-repeat;}
.jquery-spelling-incorrect{ color:red; text-decoration:underline;}
.jquery-spelling-container{display:block;background:light-grey;}
#sug{float:left;width:45%;}
#details{width:45%;float:left;visibility:hidden;}
#details span{}
#wordList{}

+ 97
- 0
css/plugins/buttons/screen.css View File

@@ -0,0 +1,97 @@
/* --------------------------------------------------------------
buttons.css
* Gives you some great CSS-only buttons.
Created by Kevin Hale [particletree.com]
* particletree.com/features/rediscovering-the-button-element

See Readme.txt in this folder for instructions.

-------------------------------------------------------------- */

a.button, button, input[type=submit] {
display:block;
float:left;
margin: 0.7em 0.5em 0.7em 0;
padding:5px 10px 5px 7px; /* Links */
border:1px solid #dedede;
border-top:1px solid #eee;
border-left:1px solid #eee;

background-color:#f5f5f5;
font-family:"Lucida Grande", Tahoma, Arial, Verdana, sans-serif;
font-size:100%;
line-height:130%;
text-decoration:none;
font-weight:bold;
color:#565656;
cursor:pointer;
}
button, input[type=submit] {
width:auto;
overflow:visible;
padding:4px 10px 3px 7px; /* IE6 */
}
button[type], input[type=submit] {
padding:4px 10px 4px 7px; /* Firefox */
line-height:17px; /* Safari */
}
*:first-child+html button[type] {
padding:4px 10px 3px 7px; /* IE7 */
}
button img, a.button img, input[type=submit] img{
margin:0 3px -3px 0 !important;
padding:0;
border:none;
width:16px;
height:16px;
float:none;
}


/* Button colors
-------------------------------------------------------------- */

/* Standard */
button:hover, a.button:hover, input[type=submit]:hover{
background-color:#dff4ff;
border:1px solid #c2e1ef;
color:#336699;
}
a.button:active{
background-color:#6299c5;
border:1px solid #6299c5;
color:#fff;
}

/* Positive */
body .positive {
color:#529214;
}
a.positive:hover, button.positive:hover , input[type=submit].positive:hover{
background-color:#E6EFC2;
border:1px solid #C6D880;
color:#529214;
}
a.positive:active {
background-color:#529214;
border:1px solid #529214;
color:#fff;
}

/* Negative */
body .negative {
color:#d12f19;
}
a.negative:hover, button.negative:hover, input[type=submit].negative:hover {
background-color:#fbe3e4;
border:1px solid #fbc2c4;
color:#d12f19;
}
a.negative:active {
background-color:#d12f19;
border:1px solid #d12f19;
color:#fff;
}

+ 29
- 0
css/print.css View File

@@ -0,0 +1,29 @@
/* -----------------------------------------------------------------------


Blueprint CSS Framework 1.0
http://blueprintcss.org

* Copyright (c) 2007-Present. See LICENSE for more info.
* See README for instructions on how to use Blueprint.
* For credits and origins, see AUTHORS.
* This is a compressed file. See the sources in the 'src' directory.

----------------------------------------------------------------------- */

/* print.css */
body {line-height:1.5;font-family:"Helvetica Neue", Arial, Helvetica, sans-serif;color:#000;background:none;font-size:10pt;}
.container {background:none;}
hr {background:#ccc;color:#ccc;width:100%;height:2px;margin:2em 0;padding:0;border:none;}
hr.space {background:#fff;color:#fff;visibility:hidden;}
h1, h2, h3, h4, h5, h6 {font-family:"Helvetica Neue", Arial, "Lucida Grande", sans-serif;}
code {font:.9em "Courier New", Monaco, Courier, monospace;}
a img {border:none;}
p img.top {margin-top:0;}
blockquote {margin:1.5em;padding:1em;font-style:italic;font-size:.9em;}
.small {font-size:.9em;}
.large {font-size:1.1em;}
.quiet {color:#999;}
.hide {display:none;}
a:link, a:visited {background:transparent;font-weight:700;text-decoration:underline;}
a:link:after, a:visited:after {content:" (" attr(href) ")";font-size:90%;}

+ 266
- 0
css/screen.css
File diff suppressed because it is too large
View File


+ 136
- 0
css/style.css View File

@@ -0,0 +1,136 @@
/* HTML5 ✰ Boilerplate */

html, body, div, span, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
abbr, address, cite, code, del, dfn, em, img, ins, kbd, q, samp,
small, strong, sub, sup, var, b, i, dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td,
article, aside, canvas, details, figcaption, figure,
footer, header, hgroup, menu, nav, section, summary,
time, mark, audio, video {
margin: 0;
padding: 0;
border: 0;
font-size: 100%;
font: inherit;
vertical-align: baseline;
}

article, aside, details, figcaption, figure,
footer, header, hgroup, menu, nav, section {
display: block;
}

blockquote, q { quotes: none; }
blockquote:before, blockquote:after,
q:before, q:after { content: ""; content: none; }
ins { background-color: #ff9; color: #000; text-decoration: none; }
mark { background-color: #ff9; color: #000; font-style: italic; font-weight: bold; }
del { text-decoration: line-through; }
abbr[title], dfn[title] { border-bottom: 1px dotted; cursor: help; }
table { border-collapse: collapse; border-spacing: 0; }
hr { display: block; height: 1px; border: 0; border-top: 1px solid #ccc; margin: 1em 0; padding: 0; }
input, select { vertical-align: middle; }

body { font:13px/1.231 sans-serif; *font-size:small; }
select, input, textarea, button { font:99% sans-serif; }
pre, code, kbd, samp { font-family: monospace, sans-serif; }

html { overflow-y: scroll; }
a:hover, a:active { outline: none; }
ul, ol { margin-left: 2em; }
ol { list-style-type: decimal; }
nav ul, nav li { margin: 0; list-style:none; list-style-image: none; }
small { font-size: 85%; }
strong, th { font-weight: bold; }
td { vertical-align: top; }
sub, sup { font-size: 75%; line-height: 0; position: relative; }
sup { top: -0.5em; }
sub { bottom: -0.25em; }

pre { white-space: pre; white-space: pre-wrap; word-wrap: break-word; padding: 15px; }
textarea { overflow: auto; }
.ie6 legend, .ie7 legend { margin-left: -7px; }
input[type="radio"] { vertical-align: text-bottom; }
input[type="checkbox"] { vertical-align: bottom; }
.ie7 input[type="checkbox"] { vertical-align: baseline; }
.ie6 input { vertical-align: text-bottom; }
label, input[type="button"], input[type="submit"], input[type="image"], button { cursor: pointer; }
button, input, select, textarea { margin: 0; }
input:valid, textarea:valid { }
input:invalid, textarea:invalid { border-radius: 1px; -moz-box-shadow: 0px 0px 5px red; -webkit-box-shadow: 0px 0px 5px red; box-shadow: 0px 0px 5px red; }
.no-boxshadow input:invalid, .no-boxshadow textarea:invalid { background-color: #f0dddd; }


::-moz-selection{ background: #FF5E99; color:#fff; text-shadow: none; }
::selection { background:#FF5E99; color:#fff; text-shadow: none; }
a:link { -webkit-tap-highlight-color: #FF5E99; }
button { width: auto; overflow: visible; }
.ie7 img { -ms-interpolation-mode: bicubic; }

body, select, input, textarea { color: #444; }
h1, h2, h3, h4, h5, h6 { font-weight: bold; }
a, a:active, a:visited { color: #607890; }
a:hover { color: #036; }


/**
* Primary styles
*
* Author:
*/














.ir { display: block; text-indent: -999em; overflow: hidden; background-repeat: no-repeat; text-align: left; direction: ltr; }
.hidden { display: none; visibility: hidden; }
.visuallyhidden { border: 0; clip: rect(0 0 0 0); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px; }
.visuallyhidden.focusable:active,
.visuallyhidden.focusable:focus { clip: auto; height: auto; margin: 0; overflow: visible; position: static; width: auto; }
.invisible { visibility: hidden; }
.clearfix:before, .clearfix:after { content: "\0020"; display: block; height: 0; overflow: hidden; }
.clearfix:after { clear: both; }
.clearfix { zoom: 1; }


@media all and (orientation:portrait) {

}

@media all and (orientation:landscape) {

}

@media screen and (max-device-width: 480px) {
/* html { -webkit-text-size-adjust:none; -ms-text-size-adjust:none; } */
}


@media print {
* { background: transparent !important; color: black !important; text-shadow: none !important; filter:none !important;
-ms-filter: none !important; }
a, a:visited { color: #444 !important; text-decoration: underline; }
a[href]:after { content: " (" attr(href) ")"; }
abbr[title]:after { content: " (" attr(title) ")"; }
.ir a:after, a[href^="javascript:"]:after, a[href^="#"]:after { content: ""; }
pre, blockquote { border: 1px solid #999; page-break-inside: avoid; }
thead { display: table-header-group; }
tr, img { page-break-inside: avoid; }
@page { margin: 0.5cm; }
p, h2, h3 { orphans: 3; widows: 3; }
h2, h3{ page-break-after: avoid; }
}


+ 46
- 0
index.html View File

@@ -0,0 +1,46 @@
<!doctype html>
<!--[if lt IE 7 ]> <html class="no-js ie6" lang="fr"> <![endif]-->
<!--[if IE 7 ]> <html class="no-js ie7" lang="fr"> <![endif]-->
<!--[if IE 8 ]> <html class="no-js ie8" lang="fr"> <![endif]-->
<!--[if (gte IE 9)|!(IE)]><!--> <html class="no-js" lang="fr"> <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>Explication simple</title>
<meta name="description" content="Donner une explication simple quelque soit le sujet avec seulement ~1500 mots possibles">
<meta name="author" content="Clément Desmidt - Shikiryu">
<link rel="stylesheet" href="css/style.css?v=1"><!-- CSS : blueprint Framework -->
<link rel="stylesheet" href="css/screen.css" type="text/css" media="screen, projection">
<link rel="stylesheet" href="css/print.css" type="text/css" media="print">
<link rel="stylesheet" href="css/plugins/buttons/screen.css"><!-- Import link-icons plugin // add icons depending of type of link / file -->
<link rel="stylesheet" href="css/override.css">
</head>

<body>
<header>
</header>
<div id="container" class="container">
<form id="myForm" name="myForm" action="save.php" method="post">
<textarea id="sug" name="sug"></textarea>
<input type="submit" name="submit" value="Enregistrer" />
<div id="details">
<span><span id="counter"></span> mot(s) interdit(s)</span><br/>
<div id="wordList"></div>
</div>
</form>
</div> <!--! end of #container -->

<footer>
</footer>
<!-- Grab Google CDN jQuery. fall back to local if necessary -->
<script src="js/jquery-1.9.1.js"></script>
<script src="js/jquery.a-tools-1.5.2.min.js"></script>
<script src="js/jquery.asuggest.js"></script>
<script src="js/jquery.explanationCheck.js"></script>
<script src="js/plugins.js?v=1"></script>
</body>
</html>

+ 9597
- 0
js/jquery-1.9.1.js
File diff suppressed because it is too large
View File


+ 43
- 0
js/jquery.a-tools-1.5.2.min.js
File diff suppressed because it is too large
View File


+ 231
- 0
js/jquery.asuggest.js View File

@@ -0,0 +1,231 @@
/*
* jQuery textarea suggest plugin
*
* Copyright (c) 2009-2010 Roman Imankulov
*
* Dual licensed under the MIT and GPL licenses:
* http://www.opensource.org/licenses/mit-license.php
* http://www.gnu.org/licenses/gpl.html
*
* Requires:
* - jQuery (tested with 1.3.x and 1.4.x)
* - jquery.a-tools >= 1.4.1 (http://plugins.jquery.com/project/a-tools)
*/

/*globals jQuery,document */

(function ($) {
// workaround for Opera browser
if (navigator.userAgent.match(/opera/i)) {
$(document).keypress(function (e) {
if ($.asuggestFocused) {
$.asuggestFocused.focus();
$.asuggestFocused = null;
e.preventDefault();
e.stopPropagation();
}
});
}

$.asuggestKeys = {
UNKNOWN: 0,
SHIFT: 16,
CTRL: 17,
ALT: 18,
LEFT: 37,
UP: 38,
RIGHT: 39,
DOWN: 40,
DEL: 46,
TAB: 9,
RETURN: 13,
ESC: 27,
COMMA: 188,
PAGEUP: 33,
PAGEDOWN: 34,
BACKSPACE: 8,
SPACE: 32
};
$.asuggestFocused = null;

$.fn.asuggest = function (suggests, options) {
return this.each(function () {
$.makeSuggest(this, suggests, options);
});
};

$.fn.asuggest.defaults = {
'delimiters': '\n ',
'minChunkSize': 1,
'cycleOnTab': true,
'autoComplete': true,
'endingSymbols': ' ',
'stopSuggestionKeys': [$.asuggestKeys.RETURN, $.asuggestKeys.SPACE],
'ignoreCase': false
};

/* Make suggest:
*
* create and return jQuery object on the top of DOM object
* and store suggests as part of this object
*
* @param area: HTML DOM element to add suggests to
* @param suggests: The array of suggest strings
* @param options: The options object
*/
$.makeSuggest = function (area, suggests, options) {
options = $.extend({}, $.fn.asuggest.defaults, options);

var KEY = $.asuggestKeys,
$area = $(area);
$area.suggests = suggests;
$area.options = options;

/* Internal method: get the chunk of text before the cursor */
$area.getChunk = function () {
var delimiters = this.options.delimiters.split(''), // array of chars
textBeforeCursor = this.val().substr(0, this.getSelection().start),
indexOfDelimiter = -1,
i,
d,
idx;
for (i = 0; i < delimiters.length; i++) {
d = delimiters[i];
idx = textBeforeCursor.lastIndexOf(d);
if (idx > indexOfDelimiter) {
indexOfDelimiter = idx;
}
}
if (indexOfDelimiter < 0) {
return textBeforeCursor;
} else {
return textBeforeCursor.substr(indexOfDelimiter + 1);
}
};

/* Internal method: get completion.
* If performCycle is true then analyze getChunk() and and getSelection()
*/
$area.getCompletion = function (performCycle) {
var text = this.getChunk(),
selectionText = this.getSelection().text,
suggests = this.suggests,
foundAlreadySelectedValue = false,
firstMatchedValue = null,
i,
suggest;
// search the variant
for (i = 0; i < suggests.length; i++) {
suggest = suggests[i];
if ($area.options.ignoreCase) {
suggest = suggest.toLowerCase();
text = text.toLowerCase();
}
// some variant is found
if (suggest.indexOf(text) === 0) {
if (performCycle) {
if (text + selectionText === suggest) {
foundAlreadySelectedValue = true;
} else if (foundAlreadySelectedValue) {
return suggest.substr(text.length);
} else if (firstMatchedValue === null) {
firstMatchedValue = suggest;
}
} else {
return suggest.substr(text.length);
}
}
}
if (performCycle && firstMatchedValue) {
return firstMatchedValue.substr(text.length);
} else {
return null;
}
};

$area.updateSelection = function (completion) {
if (completion) {
var _selectionStart = $area.getSelection().start,
_selectionEnd = _selectionStart + completion.length;
if ($area.getSelection().text === "") {
if ($area.val().length === _selectionStart) { // Weird IE workaround, I really have no idea why it works
$area.setCaretPos(_selectionStart + 10000);
}
$area.insertAtCaretPos(completion);
} else {
$area.replaceSelection(completion);
}
$area.setSelection(_selectionStart, _selectionEnd);
}
};

$area.unbind('keydown.asuggest').bind('keydown.asuggest', function (e) {
if (e.keyCode === KEY.TAB) {
if ($area.options.cycleOnTab) {
var chunk = $area.getChunk();
if (chunk.length >= $area.options.minChunkSize) {
$area.updateSelection($area.getCompletion(true));
}
e.preventDefault();
e.stopPropagation();
$area.focus();
$.asuggestFocused = this;
return false;
}
}
// Check for conditions to stop suggestion
if ($area.getSelection().length &&
$.inArray(e.keyCode, $area.options.stopSuggestionKeys) !== -1) {
// apply suggestion. Clean up selection and insert a space
var _selectionEnd = $area.getSelection().end +
$area.options.endingSymbols.length;
var _text = $area.getSelection().text +
$area.options.endingSymbols;
$area.replaceSelection(_text);
$area.setSelection(_selectionEnd, _selectionEnd);
e.preventDefault();
e.stopPropagation();
this.focus();
$.asuggestFocused = this;
return false;
}
});

$area.unbind('keyup.asuggest').bind('keyup.asuggest', function (e) {
var hasSpecialKeys = e.altKey || e.metaKey || e.ctrlKey,
hasSpecialKeysOrShift = hasSpecialKeys || e.shiftKey;
switch (e.keyCode) {
case KEY.UNKNOWN: // Special key released
case KEY.SHIFT:
case KEY.CTRL:
case KEY.ALT:
case KEY.RETURN: // we don't want to suggest when RETURN key has pressed (another IE workaround)
break;
case KEY.TAB:
if (!hasSpecialKeysOrShift && $area.options.cycleOnTab) {
break;
}
case KEY.ESC:
case KEY.BACKSPACE:
case KEY.DEL:
case KEY.UP:
case KEY.DOWN:
case KEY.LEFT:
case KEY.RIGHT:
if (!hasSpecialKeysOrShift && $area.options.autoComplete) {
$area.replaceSelection("");
}
break;
default:
if (!hasSpecialKeys && $area.options.autoComplete) {
var chunk = $area.getChunk();
if (chunk.length >= $area.options.minChunkSize) {
$area.updateSelection($area.getCompletion(false));
}
}
break;
}
});
return $area;
};
}(jQuery));

+ 72
- 0
js/jquery.explanationCheck.js View File

@@ -0,0 +1,72 @@
(function ($) {
$.fn.explanationCheck = function (terms, options) {
return this.each(function () {
$.checkText(this, terms, options);
});
};
$.fn.explanationCheck.defaults = {
details: $('#details'),
counter: $('#counter'),
wordList: $('#wordList'),
separator: '<br/>',
ignoredCharacters: '\.\!,;\?',
splitCharacters:""
};
$.createCheckWorld = function(options, a) {
options.counter = typeof options.counter == 'string' ? options.counter[0] == '#' ? $(options.counter) : $("#"+options.counter) : options.counter;
options.wordList = typeof options.wordList == 'string' ? options.wordList[0] == '#' ? $(options.wordList) : $("#"+options.wordList) : options.wordList;
options.details = typeof options.details == 'string' ? options.details[0] == '#' ? $(options.details) : $("#"+options.details) : options.details;
if(options.counter.length == 0) options.counter = $('<span id="counter">0</span>').insertAfter(a);
if(options.wordList.length == 0) options.wordList = $('<span id="wordList"></span>').insertAfter(a);
}
$.updateWrongWord = function(o,w,c){
o.counter.html(c);
o.wordList.html(w.join(o.separator));
}
$.checkText = function (area, terms, options) {
options = $.extend({}, $.fn.explanationCheck.defaults, options);
var $area = $(area),
words = "",
counter = 0,
wrongWords = []
$countEl = typeof options.counter == 'string' ? $(options.counter) : options.counter;
$area.terms = terms;
$area.options = options;
$.createCheckWorld(options, $area);
$area.keyup(function(e){
if($(this).getSelection.length == 0){
counter = 0;
wrongWords = [];
words = $area.val().replace(new RegExp("["+$area.options.ignoredCharacters+"]","g"), '');
words = words.split(/[\s\n']+/g);
for(var i = 0, l = words.length; i < l ; i++){
var w = $.trim(words[i]).toLowerCase();
if(w != '' && !~terms.indexOf(w)){
wrongWords.push(w);
counter = wrongWords.length;
}
}
$.updateWrongWord(options, wrongWords, counter);
$countEl.updateCounter(counter);
}
});
$countEl.updateCounter = function(){
if(counter == 0){
$area.options.details.css('visibility','hidden');
}else{
$area.options.details.css('visibility','visible');
}
$countEl.html(counter);
}
return $area;
};
}(jQuery));

+ 190
- 0
js/plugins.js
File diff suppressed because it is too large
View File


+ 6
- 0
load.php View File

@@ -0,0 +1,6 @@
<?php
if(empty($_POST['hash'])) exit;
$hash = substr($_POST['hash'],1);
if (is_readable('saved/'.$hash)) {
echo file_get_contents('saved/'.$hash);
}

+ 160
- 0
save.php
File diff suppressed because it is too large
View File


+ 0
- 0
saved/.gitkeep View File


Loading…
Cancel
Save