initial commit
1
.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
config.php
|
5
.htaccess
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
ErrorDocument 404 /404.php
|
||||||
|
|
||||||
|
RewriteEngine On
|
||||||
|
RewriteCond %{HTTPS} off
|
||||||
|
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
|
48
.vscode/launch.json
vendored
Normal file
|
@ -0,0 +1,48 @@
|
||||||
|
{
|
||||||
|
// Use IntelliSense to learn about possible attributes.
|
||||||
|
// Hover to view descriptions of existing attributes.
|
||||||
|
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
|
||||||
|
"version": "0.2.0",
|
||||||
|
"configurations": [
|
||||||
|
{
|
||||||
|
"name": "Listen for Xdebug",
|
||||||
|
"type": "php",
|
||||||
|
"request": "launch",
|
||||||
|
"port": 9003
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Launch currently open script",
|
||||||
|
"type": "php",
|
||||||
|
"request": "launch",
|
||||||
|
"program": "${file}",
|
||||||
|
"cwd": "${fileDirname}",
|
||||||
|
"port": 0,
|
||||||
|
"runtimeArgs": [
|
||||||
|
"-dxdebug.start_with_request=yes"
|
||||||
|
],
|
||||||
|
"env": {
|
||||||
|
"XDEBUG_MODE": "debug,develop",
|
||||||
|
"XDEBUG_CONFIG": "client_port=${port}"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Launch Built-in web server",
|
||||||
|
"type": "php",
|
||||||
|
"request": "launch",
|
||||||
|
"runtimeArgs": [
|
||||||
|
"-dxdebug.mode=debug",
|
||||||
|
"-dxdebug.start_with_request=yes",
|
||||||
|
"-S",
|
||||||
|
"localhost:0"
|
||||||
|
],
|
||||||
|
"program": "",
|
||||||
|
"cwd": "${workspaceRoot}",
|
||||||
|
"port": 9003,
|
||||||
|
"serverReadyAction": {
|
||||||
|
"pattern": "Development Server \\(http://localhost:([0-9]+)\\) started",
|
||||||
|
"uriFormat": "http://localhost:%s",
|
||||||
|
"action": "openExternally"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
13
404.php
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
<?php
|
||||||
|
include("header.php");
|
||||||
|
printf("
|
||||||
|
<article>
|
||||||
|
<h1> 404: Nenalezeno </h1>
|
||||||
|
<p> článek s tímto ID se nám nepodařilo najít v naší databázi. </p>
|
||||||
|
<p><b>
|
||||||
|
Pokud vidíte tuto stránku, prosím popište mi jak jste se sem dostali emailem na zeftarius@pastafarianstvi.cz a já se pokusím tuto chybu spravit.
|
||||||
|
</b></p>
|
||||||
|
</article>
|
||||||
|
");
|
||||||
|
include("footer.php");
|
||||||
|
?>
|
BIN
Fonts/FantasticPete3.03.ttf
Normal file
BIN
Fonts/INSULA__.ttf
Normal file
BIN
Fonts/promocyja.ttf
Normal file
BIN
Images/AccordionIcon.png
Normal file
After Width: | Height: | Size: 81 KiB |
BIN
Images/AdvertBanners/animatedbanner.gif
Normal file
After Width: | Height: | Size: 3.8 MiB |
BIN
Images/AdvertBanners/davidjaenbanner.png
Normal file
After Width: | Height: | Size: 51 KiB |
BIN
Images/AdvertBanners/donatebanner.png
Normal file
After Width: | Height: | Size: 368 KiB |
BIN
Images/AdvertBanners/facebook.webp
Normal file
After Width: | Height: | Size: 21 KiB |
BIN
Images/AdvertBanners/instagram.png
Normal file
After Width: | Height: | Size: 80 KiB |
BIN
Images/AdvertBanners/youtubebanner.png
Normal file
After Width: | Height: | Size: 324 KiB |
BIN
Images/Book/Evolution/1.png
Normal file
After Width: | Height: | Size: 512 KiB |
BIN
Images/Book/Evolution/2.png
Normal file
After Width: | Height: | Size: 1.2 MiB |
BIN
Images/Book/Evolution/3.png
Normal file
After Width: | Height: | Size: 48 KiB |
BIN
Images/Book/Evolution/4.png
Normal file
After Width: | Height: | Size: 134 KiB |
BIN
Images/Book/Evolution/5.png
Normal file
After Width: | Height: | Size: 1.1 MiB |
BIN
Images/Book/Letter/1.png
Normal file
After Width: | Height: | Size: 126 KiB |
BIN
Images/Book/Letter/2.png
Normal file
After Width: | Height: | Size: 441 KiB |
BIN
Images/Book/SuperScience/1.png
Normal file
After Width: | Height: | Size: 244 KiB |
BIN
Images/Book/SuperScience/2.png
Normal file
After Width: | Height: | Size: 2.2 MiB |
BIN
Images/Book/SuperScience/3.png
Normal file
After Width: | Height: | Size: 285 KiB |
BIN
Images/Book/SuperScience/4.png
Normal file
After Width: | Height: | Size: 75 KiB |
BIN
Images/Book/Theories/1.png
Normal file
After Width: | Height: | Size: 233 KiB |
BIN
Images/Book/Theories/2.png
Normal file
After Width: | Height: | Size: 228 KiB |
BIN
Images/Book/Theories/3.png
Normal file
After Width: | Height: | Size: 659 KiB |
BIN
Images/Book/Vision/1.png
Normal file
After Width: | Height: | Size: 160 KiB |
BIN
Images/Book/Vision/2.png
Normal file
After Width: | Height: | Size: 158 KiB |
BIN
Images/Book/Vision/3.png
Normal file
After Width: | Height: | Size: 610 KiB |
BIN
Images/DefaultProfile.jpg
Normal file
After Width: | Height: | Size: 14 KiB |
BIN
Images/DonatedGif.gif
Normal file
After Width: | Height: | Size: 298 KiB |
BIN
Images/EditIcon.png
Normal file
After Width: | Height: | Size: 19 KiB |
BIN
Images/HavetouchedBanner.png
Normal file
After Width: | Height: | Size: 526 KiB |
BIN
Images/PenAndQuillIcon.png
Normal file
After Width: | Height: | Size: 21 KiB |
BIN
Images/PirateFish.png
Normal file
After Width: | Height: | Size: 26 KiB |
BIN
Images/PirateShip.jpeg
Normal file
After Width: | Height: | Size: 116 KiB |
BIN
Images/donateQR/DogeSneed.png
Normal file
After Width: | Height: | Size: 7.4 KiB |
BIN
Images/donateQR/DogeWeb.png
Normal file
After Width: | Height: | Size: 6.9 KiB |
BIN
Images/donateQR/MoneroSneed.png
Normal file
After Width: | Height: | Size: 7.4 KiB |
BIN
Images/donateQR/MoneroWeb.png
Normal file
After Width: | Height: | Size: 7.4 KiB |
BIN
Images/favicon.jpg
Normal file
After Width: | Height: | Size: 7.6 KiB |
547
Styles/style.css
Normal file
|
@ -0,0 +1,547 @@
|
||||||
|
@font-face
|
||||||
|
{
|
||||||
|
font-family: Promocyja;
|
||||||
|
src: url("../Fonts/promocyja.ttf");
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face
|
||||||
|
{
|
||||||
|
font-family: Insula;
|
||||||
|
src: url("../Fonts/INSULA__.ttf");
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face
|
||||||
|
{
|
||||||
|
font-family: FantasticPete;
|
||||||
|
src: url(../Fonts/FantasticPete3.03.ttf);
|
||||||
|
}
|
||||||
|
|
||||||
|
:root
|
||||||
|
{
|
||||||
|
--page-max-width: 980px;
|
||||||
|
}
|
||||||
|
|
||||||
|
body
|
||||||
|
{
|
||||||
|
background-color: #222222;
|
||||||
|
font-family: "Times New Roman", Times, serif;
|
||||||
|
color: white;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
}
|
||||||
|
|
||||||
|
#leftAside
|
||||||
|
{
|
||||||
|
order: 1;
|
||||||
|
flex: 1 2;
|
||||||
|
word-wrap: break-word;
|
||||||
|
}
|
||||||
|
|
||||||
|
#page-container
|
||||||
|
{
|
||||||
|
order: 3;
|
||||||
|
flex: 0 1 var(--page-max-width);
|
||||||
|
margin: 0;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
#rightAside
|
||||||
|
{
|
||||||
|
order: 5;
|
||||||
|
flex: 1 2;
|
||||||
|
word-wrap: break-word;
|
||||||
|
}
|
||||||
|
|
||||||
|
aside > *
|
||||||
|
{
|
||||||
|
margin: 0px auto 16px auto;
|
||||||
|
clear: both;
|
||||||
|
}
|
||||||
|
|
||||||
|
#admin-tools
|
||||||
|
{
|
||||||
|
width: calc(100% - 32px);
|
||||||
|
max-width: fit-content;
|
||||||
|
border: dotted black;
|
||||||
|
border-radius: 10px;
|
||||||
|
background-color: #161616;
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
|
||||||
|
#admin-tools div
|
||||||
|
{
|
||||||
|
width: 64px;
|
||||||
|
height: 64px;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
#admin-tools div img
|
||||||
|
{
|
||||||
|
width: 50px;
|
||||||
|
height: 50px;
|
||||||
|
border-radius: 50%;
|
||||||
|
margin: 0;
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
left: 50%;
|
||||||
|
transform: translate(-50%, -50%);
|
||||||
|
}
|
||||||
|
|
||||||
|
.advert
|
||||||
|
{
|
||||||
|
width: 80%;
|
||||||
|
margin-bottom: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.advert img
|
||||||
|
{
|
||||||
|
display: block;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.advert marquee *
|
||||||
|
{
|
||||||
|
height: 128px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.commentPreview
|
||||||
|
{
|
||||||
|
margin: 0px auto 16px auto;
|
||||||
|
width: 80%;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.commentPreview > .previewContent
|
||||||
|
{
|
||||||
|
max-height: 256px;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.previewElement
|
||||||
|
{
|
||||||
|
padding: 0 0 16px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.previewContent
|
||||||
|
{
|
||||||
|
padding: 8px 16px 8px 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
a
|
||||||
|
{
|
||||||
|
color: white;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
article a
|
||||||
|
{
|
||||||
|
border-bottom: dotted white thin;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul a
|
||||||
|
{
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
article
|
||||||
|
{
|
||||||
|
background-color: #333333;
|
||||||
|
padding: 8px 16px 8px 16px;
|
||||||
|
margin-top: 16px;
|
||||||
|
margin-bottom: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
article *
|
||||||
|
{
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
#shantysContainer
|
||||||
|
{
|
||||||
|
display: flex;
|
||||||
|
flex-flow: row wrap;
|
||||||
|
justify-content: space-around;
|
||||||
|
align-content: space-around;
|
||||||
|
}
|
||||||
|
|
||||||
|
.centeredFlex
|
||||||
|
{
|
||||||
|
display: flex;
|
||||||
|
flex-flow: row nowrap;
|
||||||
|
justify-content: center;
|
||||||
|
align-content: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sidFlex
|
||||||
|
{
|
||||||
|
display: flex;
|
||||||
|
flex-flow: row nowrap;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-content: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.commentForm
|
||||||
|
{
|
||||||
|
padding-bottom: 32px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.commentBox
|
||||||
|
{
|
||||||
|
height: 128px;
|
||||||
|
padding: 8px;
|
||||||
|
width: 100%;
|
||||||
|
resize: none;
|
||||||
|
background-color: #161616;
|
||||||
|
color: white;
|
||||||
|
border-style: none;
|
||||||
|
font-family: Arial, Helvetica, sans-serif;
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.comment img
|
||||||
|
{
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.comment-btn
|
||||||
|
{
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-primary
|
||||||
|
{
|
||||||
|
width: 128px;
|
||||||
|
height: 32px;
|
||||||
|
font-weight: bold;
|
||||||
|
background: #404040;
|
||||||
|
color: white;
|
||||||
|
border-style: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-primary:hover
|
||||||
|
{
|
||||||
|
background: #86868686;
|
||||||
|
}
|
||||||
|
|
||||||
|
.borderOnHover:hover
|
||||||
|
{
|
||||||
|
border: solid white;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bgOnHover:hover
|
||||||
|
{
|
||||||
|
background-color: #404040;
|
||||||
|
}
|
||||||
|
|
||||||
|
#content-wrap
|
||||||
|
{
|
||||||
|
max-width: var(--page-max-width);
|
||||||
|
min-height: calc(100vh - 317px);
|
||||||
|
margin: auto;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
#footer
|
||||||
|
{
|
||||||
|
max-width: var(--page-max-width);
|
||||||
|
height: fit-content;
|
||||||
|
margin: auto;
|
||||||
|
padding-top: 64px;
|
||||||
|
bottom: 0;
|
||||||
|
color: gray;
|
||||||
|
}
|
||||||
|
|
||||||
|
#footer div
|
||||||
|
{
|
||||||
|
border-style: dashed none none none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#headerContainer
|
||||||
|
{
|
||||||
|
max-width: var(--page-max-width);
|
||||||
|
margin: auto;
|
||||||
|
background: url("/Images/HavetouchedBanner.png");
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-size: 100% 100%;
|
||||||
|
position: relative;
|
||||||
|
height: 317px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#headerContainer ul
|
||||||
|
{
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
opacity: 0.8;
|
||||||
|
background-color: #333333;
|
||||||
|
position: absolute;
|
||||||
|
overflow: hidden;
|
||||||
|
text-align: center;
|
||||||
|
display: flex;
|
||||||
|
list-style-type: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#headerContainer a
|
||||||
|
{
|
||||||
|
display: block;
|
||||||
|
padding: 16px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
#userMenu
|
||||||
|
{
|
||||||
|
top: 0;
|
||||||
|
right: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#navMenu
|
||||||
|
{
|
||||||
|
bottom: 0;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
#headerContainer ul li
|
||||||
|
{
|
||||||
|
float: left;
|
||||||
|
position: relative;
|
||||||
|
flex-grow: 1;
|
||||||
|
border-style: solid;
|
||||||
|
border-width: thin;
|
||||||
|
border-color: black;
|
||||||
|
}
|
||||||
|
|
||||||
|
#headerContainer ul li a:hover
|
||||||
|
{
|
||||||
|
background-color: #4d2e00;
|
||||||
|
}
|
||||||
|
|
||||||
|
#translation .topic
|
||||||
|
{
|
||||||
|
border-style: dashed none none none;
|
||||||
|
border-width: thick;
|
||||||
|
}
|
||||||
|
|
||||||
|
#translation .chapter
|
||||||
|
{
|
||||||
|
border-style: dashed none none none;
|
||||||
|
border-width: thin;
|
||||||
|
margin-bottom: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#translation p
|
||||||
|
{
|
||||||
|
padding-left: 16px
|
||||||
|
}
|
||||||
|
|
||||||
|
#translation ul
|
||||||
|
{
|
||||||
|
padding-left: 16px;
|
||||||
|
margin-top: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#translation a
|
||||||
|
{
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#translation h1
|
||||||
|
{
|
||||||
|
font-family: Insula;
|
||||||
|
margin: 32px 0 0 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#translation h2
|
||||||
|
{
|
||||||
|
font-family: Insula;
|
||||||
|
margin: 16px 0 0 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#translation h3
|
||||||
|
{
|
||||||
|
font-family: Insula;
|
||||||
|
margin: 8px 0 0 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#translation h4
|
||||||
|
{
|
||||||
|
font-family: Insula;
|
||||||
|
margin: 4px 0 0 0;
|
||||||
|
padding-left: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#translation li h4
|
||||||
|
{
|
||||||
|
font-family: "Times New Roman", Times, serif;
|
||||||
|
margin: 8px 0 0 -4;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
#translation .letter
|
||||||
|
{
|
||||||
|
background-color: #404040;
|
||||||
|
border-style: double;
|
||||||
|
padding: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.date
|
||||||
|
{
|
||||||
|
text-align: right;
|
||||||
|
color: gray;
|
||||||
|
}
|
||||||
|
|
||||||
|
.centeredContainer
|
||||||
|
{
|
||||||
|
width: 100%;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*If there are multiple divs in the centrered container, put a little bit of space between them*/
|
||||||
|
.centeredContainer div
|
||||||
|
{
|
||||||
|
margin: 0 8px 0 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.highlightInitial::first-letter
|
||||||
|
{
|
||||||
|
font-family: FantasticPete;
|
||||||
|
font-size: 500%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tooltip
|
||||||
|
{
|
||||||
|
position: relative;
|
||||||
|
display: inline-block;
|
||||||
|
border-bottom: 1px dotted white;
|
||||||
|
}
|
||||||
|
|
||||||
|
.letter .tooltip
|
||||||
|
{
|
||||||
|
border-color: black;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tooltip .tooltiptext
|
||||||
|
{
|
||||||
|
font-family: "Times New Roman", Times, serif;
|
||||||
|
font-weight: normal;
|
||||||
|
background-color: rgba(0, 0, 0, 0.9);
|
||||||
|
color: #fff;
|
||||||
|
border-radius: 6px;
|
||||||
|
text-align: center;
|
||||||
|
|
||||||
|
visibility: hidden;
|
||||||
|
z-index: 1;
|
||||||
|
|
||||||
|
position: fixed;
|
||||||
|
margin: 0;
|
||||||
|
padding: 16px;
|
||||||
|
bottom: 0;
|
||||||
|
left: calc((100vw - var(--page-max-width))/2);
|
||||||
|
max-width: calc(100% - 32px);
|
||||||
|
width: calc(var(--page-max-width) - 32px);
|
||||||
|
}
|
||||||
|
|
||||||
|
.tooltip:hover .tooltiptext
|
||||||
|
{
|
||||||
|
visibility: visible;
|
||||||
|
}
|
||||||
|
|
||||||
|
#shantyContainer
|
||||||
|
{
|
||||||
|
display: flex;
|
||||||
|
flex-flow: row nowrap;
|
||||||
|
justify-content: center;
|
||||||
|
align-content: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
#shantyText
|
||||||
|
{
|
||||||
|
width: 50%;
|
||||||
|
margin: 0 8px 0 0;
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
#shantyCredits
|
||||||
|
{
|
||||||
|
width: 50%;
|
||||||
|
margin: 0 0 0 8px;
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
img
|
||||||
|
{
|
||||||
|
border: solid black;
|
||||||
|
}
|
||||||
|
|
||||||
|
.imageRightContainer
|
||||||
|
{
|
||||||
|
float: right;
|
||||||
|
margin-left:15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.letter img
|
||||||
|
{
|
||||||
|
border: solid white;
|
||||||
|
}
|
||||||
|
|
||||||
|
marquee *
|
||||||
|
{
|
||||||
|
display: inline-block;
|
||||||
|
margin-right: 64px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*Scaling of the header background image*/
|
||||||
|
@media only screen and (max-width: 1500px)
|
||||||
|
{
|
||||||
|
#leftAside
|
||||||
|
{
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
#rightAside
|
||||||
|
{
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media only screen and (max-width: 1000px)
|
||||||
|
{
|
||||||
|
#headerContainer{
|
||||||
|
height: 200px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@media only screen and (max-width: 800px)
|
||||||
|
{
|
||||||
|
#headerContainer{
|
||||||
|
height: 150px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/* For mobile phones: */
|
||||||
|
@media only screen and (max-width: 700px)
|
||||||
|
{
|
||||||
|
#headerContainer{
|
||||||
|
height: calc(37vw);
|
||||||
|
}
|
||||||
|
#shantyContainer
|
||||||
|
{
|
||||||
|
width: 100%;
|
||||||
|
display: initial;
|
||||||
|
}
|
||||||
|
#shantyText
|
||||||
|
{
|
||||||
|
padding-right: 0;
|
||||||
|
width: 100%;
|
||||||
|
margin: 0 0 8px 0;
|
||||||
|
float: none;
|
||||||
|
}
|
||||||
|
#shantyCredits
|
||||||
|
{
|
||||||
|
padding-right: 0;
|
||||||
|
width: 100%;
|
||||||
|
margin: 8px 0 0 0;
|
||||||
|
float: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tooltip .tooltiptext
|
||||||
|
{
|
||||||
|
left: 0;
|
||||||
|
}
|
||||||
|
}
|
32
TimerScripts/delete_uncorfirmed_emails.php
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
<?php
|
||||||
|
require_once ("../config.php");
|
||||||
|
|
||||||
|
// Prepare a select statement
|
||||||
|
$sql = "DELETE FROM user_awaiting_registration_email WHERE expires_on < ?";
|
||||||
|
|
||||||
|
if($stmt = mysqli_prepare($link, $sql))
|
||||||
|
{
|
||||||
|
// Bind variables to the prepared statement as parameters
|
||||||
|
mysqli_stmt_bind_param($stmt, "s", $param_datetime);
|
||||||
|
|
||||||
|
// Set parameters
|
||||||
|
$param_datetime = time();
|
||||||
|
|
||||||
|
// Attempt to execute the prepared statement
|
||||||
|
if(mysqli_stmt_execute($stmt))
|
||||||
|
{
|
||||||
|
printf("uspech");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
printf("Error: %s.\n", mysqli_stmt_error($stmt));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Close statement
|
||||||
|
mysqli_stmt_close($stmt);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
printf("Error: %s.\n", mysqli_stmt_error($stmt));
|
||||||
|
}
|
||||||
|
?>
|
106
confirm_registration_email.php
Normal file
|
@ -0,0 +1,106 @@
|
||||||
|
<?php
|
||||||
|
include("header.php");
|
||||||
|
|
||||||
|
$error = "";
|
||||||
|
// Processing form data when form is submitted
|
||||||
|
if(isset($_GET["user_id"]) && isset($_GET["email_key"]))
|
||||||
|
{
|
||||||
|
$uid = trim($_GET["user_id"]);
|
||||||
|
$key = trim($_GET["email_key"]);
|
||||||
|
|
||||||
|
// Prepare a select statement
|
||||||
|
$sql = "DELETE FROM user_awaiting_registration_email WHERE user_id = ? AND email_key = ?";
|
||||||
|
|
||||||
|
if($stmt = mysqli_prepare($link, $sql))
|
||||||
|
{
|
||||||
|
// Bind variables to the prepared statement as parameters
|
||||||
|
mysqli_stmt_bind_param($stmt, "ss", $param_uid, $param_key);
|
||||||
|
|
||||||
|
// Set parameters
|
||||||
|
$param_uid = uuid_to_bin($uid);
|
||||||
|
$param_key = uuid_to_bin($key);
|
||||||
|
|
||||||
|
// Attempt to execute the prepared statement
|
||||||
|
if(mysqli_stmt_execute($stmt))
|
||||||
|
{
|
||||||
|
/* store result */
|
||||||
|
mysqli_stmt_store_result($stmt);
|
||||||
|
if(mysqli_stmt_affected_rows($stmt) == 1)
|
||||||
|
{
|
||||||
|
echo "<h1>Email úspěšně ověřen.</h1>";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$error = "Neznamy error.";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
printf("Error: %s.\n", mysqli_stmt_error($stmt));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Close statement
|
||||||
|
mysqli_stmt_close($stmt);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
printf("Error: %s.\n", mysqli_stmt_error($stmt));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
echo("Chyba, neni nastaveno ID uzivatele nebo klic.");
|
||||||
|
}
|
||||||
|
if(!empty($error))
|
||||||
|
{
|
||||||
|
$uid = trim($_GET["user_id"]);
|
||||||
|
$key = trim($_GET["email_key"]);
|
||||||
|
|
||||||
|
// Check if key is correct
|
||||||
|
// Prepare a select statement
|
||||||
|
$sql = "SELECT email_key FROM user_awaiting_registration_email WHERE user_id = ?";
|
||||||
|
|
||||||
|
if($stmt = mysqli_prepare($link, $sql))
|
||||||
|
{
|
||||||
|
// Bind variables to the prepared statement as parameters
|
||||||
|
mysqli_stmt_bind_param($stmt, "s", $param_uid);
|
||||||
|
|
||||||
|
// Set parameters
|
||||||
|
$param_uid = uuid_to_bin($uid);
|
||||||
|
|
||||||
|
// Attempt to execute the prepared statement
|
||||||
|
if(mysqli_stmt_execute($stmt))
|
||||||
|
{
|
||||||
|
/* store result */
|
||||||
|
mysqli_stmt_store_result($stmt);
|
||||||
|
|
||||||
|
// Bind result variables
|
||||||
|
mysqli_stmt_bind_result($stmt, $email_key);
|
||||||
|
|
||||||
|
if(mysqli_stmt_fetch($stmt))
|
||||||
|
{
|
||||||
|
if($key != bin_to_uuid($email_key))
|
||||||
|
{
|
||||||
|
$error = "Vas klic neni platny klic pro aktivaci e-mailu pro tento ucet.";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
printf("Error: %s.\n", mysqli_stmt_error($stmt));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Close statement
|
||||||
|
mysqli_stmt_close($stmt);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
printf("Error: %s.\n", mysqli_stmt_error($stmt));
|
||||||
|
}
|
||||||
|
|
||||||
|
echo $error;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
include("footer.php");
|
||||||
|
?>
|
8
datetimetest.php
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
<?php
|
||||||
|
include("header.php");
|
||||||
|
|
||||||
|
echo bin_to_uuid(uuid_to_bin("0b0d25587f774b9581525528d83c41b2"))."<br/>";
|
||||||
|
echo bin_to_uuid(uuid_to_bin("39700502230e4c08805477f424c590ba"));
|
||||||
|
|
||||||
|
include("footer.php");
|
||||||
|
?>
|
74
donateMe.php
Normal file
|
@ -0,0 +1,74 @@
|
||||||
|
<?php
|
||||||
|
include("header.php");
|
||||||
|
printf("
|
||||||
|
<article>
|
||||||
|
<h1> Chcete přispět? </h1>
|
||||||
|
<h2> Monero </h2>
|
||||||
|
<div class=\"centeredContainer\">
|
||||||
|
<div>
|
||||||
|
<h3>Webstránky pastafarianstvi.cz</h3>
|
||||||
|
<img src=\"/Images/donateQR/MoneroWeb.png\" style=\"width: 256px;\"/>
|
||||||
|
<p>
|
||||||
|
Adresa:
|
||||||
|
</p>
|
||||||
|
<p style=\"word-wrap: break-word; width: 256px;\">
|
||||||
|
<i>875kz4aHuUrEH2fLYCGYVmRy2XqkQCXUtFXq6Vh3LSYjST2LXoPmcFebCHt1Kor5AzKjYvYa3yhkuB8FDhqG6LMw5WU53Ak</i>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<h3>CRPS Sneed bonnet</h3>
|
||||||
|
<img src=\"/Images/donateQR/MoneroSneed.png\" style=\"width: 256px;\"/>
|
||||||
|
<p>
|
||||||
|
Adresa:
|
||||||
|
</p>
|
||||||
|
<p style=\"word-wrap: break-word; width: 256px;\">
|
||||||
|
<i>8BqGqmF5LJQ7eDS8vHAdyVRvGGNhgfFzgWnQUtdn1zH9V6nHtvJ2oSdFDCkVJBFn4HP7TLkKPEdPcPqLG6x4KqNyV9Mf9yi</i>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<h2> Doge </h2>
|
||||||
|
<div class=\"centeredContainer\">
|
||||||
|
<div>
|
||||||
|
<h3>Webstránky pastafarianstvi.cz</h3>
|
||||||
|
<img src=\"/Images/donateQR/DogeWeb.png\" style=\"width: 256px;\"/>
|
||||||
|
<p>
|
||||||
|
Adresa:
|
||||||
|
</p>
|
||||||
|
<p style=\"word-wrap: break-word; width: 256px;\">
|
||||||
|
<i>DTvjdTPh3vAUdR4KXXtf1KiVFDhWFY12EU</i>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<h3>CRPS Sneed bonnet</h3>
|
||||||
|
<img src=\"/Images/donateQR/DogeSneed.png\" style=\"width: 256px;\"/>
|
||||||
|
<p>
|
||||||
|
Adresa:
|
||||||
|
</p>
|
||||||
|
<p style=\"word-wrap: break-word; width: 256px;\">
|
||||||
|
<i>DADtPuHtXxy7LE8WQSt6a12uQ9AKpjZzws</i>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
<article>
|
||||||
|
<h1> Na co přispívám? </h1>
|
||||||
|
<h2> Webstránky </h2>
|
||||||
|
<p>
|
||||||
|
Běžné náklady na provoz webstránek. Doména, hosting, a extra statistiky. Dohromady 1300 kč / rok.
|
||||||
|
</p>
|
||||||
|
<h2> CRPS Sneed Bonnet </h2>
|
||||||
|
<p>
|
||||||
|
Zkratka pro Czech Republic Pirate Ship Sneed Bonnet. Pirátská dřevěná plachetnice připravená se plavit po moři, s hospodou na palubě. Její jméno Je kombinací standartního prefixu námořnictva české republiky CRS doplněného o specifikaci její pirátské mise, a Sneed Bonnet je kombinací dvou velikánů Sneeda, a Steeda Bonneta. Sneed známý díky jeho obchodu \"Sneeds Feed and Seed\". Stede Bonnet, také známý pod přezdívkou \"Zdvořilý Pirát\", byl pirátský kapitán působící v Karibském moři a na východním pobřeží Spojených Států Amerických v ranném 18. století. Můj prvotní odhad založený na 5 minutách prohledávání quory je okolo 50 milionů kč. Alternativní plán je přepadnout a převzít kontrolu nad <a href=\"https://www.lagrace.cz/\">La Grace.</a>
|
||||||
|
</p>
|
||||||
|
<div class=\"centeredContainer\">
|
||||||
|
<div>
|
||||||
|
<img src=\"Images/PirateShip.jpeg\" width=\"512px;\">
|
||||||
|
<div style=\"text-align: center;\">
|
||||||
|
<i>Pirátská loď.</i>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
");
|
||||||
|
include("footer.php");
|
||||||
|
?>
|
13
donateThanks.php
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
<?php
|
||||||
|
include("header.php");
|
||||||
|
printf("
|
||||||
|
<article>
|
||||||
|
<h1> Děkujeme za příspěvek! </h1>
|
||||||
|
<p> Pokud jste při příspěvku zadali svůj nick, a hodnota příspěvku činí 50 kč a výše, přidám vám donator tag sám. Pokud jste zapoměli zadat své uživatelské jméno, prosím pošlete mi email na <a href=\"mailto:zeftarius@pastafarianstvi.cz\">zeftarius@pastafarianstvi.cz</a> s údaji potvrzujícími vaši platbu a váš nick. </p>
|
||||||
|
<div class=\"centeredContainer\">
|
||||||
|
<img src=\"Images/DonatedGif.gif\" style=\"border: none;\"/>
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
");
|
||||||
|
include("footer.php");
|
||||||
|
?>
|
121
editArticle.php
Normal file
|
@ -0,0 +1,121 @@
|
||||||
|
<?php
|
||||||
|
include("header.php");
|
||||||
|
|
||||||
|
//check if user has sufficient privileges to write articles, and kill the process if not.
|
||||||
|
if(!$_SESSION["is_admin"])
|
||||||
|
{
|
||||||
|
include("header.php");
|
||||||
|
echo "<article><h1>nedostatecna opravneni</h1></article>";
|
||||||
|
include("footer.php");
|
||||||
|
die;
|
||||||
|
}
|
||||||
|
|
||||||
|
$viewingId=htmlspecialchars($_GET["id"]);
|
||||||
|
header_remove();
|
||||||
|
$prefillName="";
|
||||||
|
$prefillContent="";
|
||||||
|
|
||||||
|
if(! $viewingId == NULL)
|
||||||
|
{
|
||||||
|
// Prepare a select statement
|
||||||
|
$sql = "SELECT name, content FROM news WHERE id = ?";
|
||||||
|
|
||||||
|
if($stmt = mysqli_prepare($link, $sql))
|
||||||
|
{
|
||||||
|
// Bind variables to the prepared statement as parameters
|
||||||
|
mysqli_stmt_bind_param($stmt, "s", $param_id);
|
||||||
|
|
||||||
|
// Set parameters
|
||||||
|
$param_id = $viewingId;
|
||||||
|
|
||||||
|
// Attempt to execute the prepared statement
|
||||||
|
if(mysqli_stmt_execute($stmt))
|
||||||
|
{
|
||||||
|
// Store result
|
||||||
|
mysqli_stmt_store_result($stmt);
|
||||||
|
|
||||||
|
// Check if entry exists, if yes then display
|
||||||
|
if(mysqli_stmt_num_rows($stmt) == 1)
|
||||||
|
{
|
||||||
|
// Bind result variables
|
||||||
|
mysqli_stmt_bind_result($stmt, $sqlPrefillName, $sqlPrefillContent);
|
||||||
|
|
||||||
|
if(mysqli_stmt_fetch($stmt))
|
||||||
|
{
|
||||||
|
$prefillName = $sqlPrefillName;
|
||||||
|
$prefillContent = $sqlPrefillContent;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Article doesn't exist, display 404
|
||||||
|
http_response_code(404);
|
||||||
|
header("location: /404.php");
|
||||||
|
die();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
printf("Error: %s.\n", mysqli_stmt_error($stmt));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Close statement
|
||||||
|
mysqli_stmt_close($stmt);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Processing form data when form is submitted
|
||||||
|
if($_SERVER["REQUEST_METHOD"] == "POST")
|
||||||
|
{
|
||||||
|
// Prepare an insert statement
|
||||||
|
if(! $_POST["viewingId"] == NULL)
|
||||||
|
{
|
||||||
|
$sql = "UPDATE news SET poster_id=?, name=?, content=? WHERE id = ".$_POST["viewingId"];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$sql = "INSERT INTO news (poster_id, name, content) VALUES (?, ?, ?)";
|
||||||
|
}
|
||||||
|
|
||||||
|
if($stmt = mysqli_prepare($link, $sql))
|
||||||
|
{
|
||||||
|
// Bind variables to the prepared statement as parameters
|
||||||
|
mysqli_stmt_bind_param($stmt, "sss", $param_poster, $param_name, $param_content);
|
||||||
|
|
||||||
|
// Set parameters
|
||||||
|
$param_poster = uuid_to_bin($_SESSION["userid"]);
|
||||||
|
$param_name = $_POST["name"];
|
||||||
|
$param_content = $_POST["content"];
|
||||||
|
|
||||||
|
// Attempt to execute the prepared statement
|
||||||
|
if(mysqli_stmt_execute($stmt))
|
||||||
|
{
|
||||||
|
// Redirect to login page
|
||||||
|
header("location: /index.php");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Close statement
|
||||||
|
mysqli_stmt_close($stmt);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
|
||||||
|
<article>
|
||||||
|
<h1>
|
||||||
|
NAPSAT ČLÁNEK
|
||||||
|
</h1>
|
||||||
|
<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>" method="post">
|
||||||
|
<div class="centeredContainer">
|
||||||
|
<input type="text" name="name" style="font-weight: bold; width: 150%" placeholder="Název" value="<?php echo $prefillName; ?>"/>
|
||||||
|
</div>
|
||||||
|
<div class="centeredContainer">
|
||||||
|
<textarea name="content" style="height: 400px; width:100%; resize: none;" placeholder="Obsah"><?php echo $prefillContent; ?></textarea>
|
||||||
|
</div>
|
||||||
|
<input type="hidden" name="viewingId" value="<?php echo $viewingId; ?>"/>
|
||||||
|
<input type="submit" class="btn btn-primary" value="Odeslat"/>
|
||||||
|
</form>
|
||||||
|
</article>
|
||||||
|
|
||||||
|
<?php include("footer.php"); ?>
|
131
editShanty.php
Normal file
|
@ -0,0 +1,131 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
// Initialize the session
|
||||||
|
session_start();
|
||||||
|
|
||||||
|
// Include config file
|
||||||
|
require_once "config.php";
|
||||||
|
|
||||||
|
//check if user has sufficient privileges to write articles, and kill the process if not.
|
||||||
|
if(!$_SESSION["is_admin"])
|
||||||
|
{
|
||||||
|
include("header.php");
|
||||||
|
echo "<article><h1>nedostatecna opravneni</h1></article>";
|
||||||
|
include("footer.php");
|
||||||
|
die;
|
||||||
|
}
|
||||||
|
|
||||||
|
$viewingId=htmlspecialchars($_GET["id"]);
|
||||||
|
header_remove();
|
||||||
|
$prefillName="";
|
||||||
|
$prefillContent="";
|
||||||
|
$prefillCredits="";
|
||||||
|
|
||||||
|
//if we are editing an already existing file, load its values
|
||||||
|
if(! $viewingId == NULL)
|
||||||
|
{
|
||||||
|
// Prepare a select statement
|
||||||
|
$sql = "SELECT credits, name, content FROM shanties WHERE id = ?";
|
||||||
|
|
||||||
|
if($stmt = mysqli_prepare($link, $sql))
|
||||||
|
{
|
||||||
|
// Bind variables to the prepared statement as parameters
|
||||||
|
mysqli_stmt_bind_param($stmt, "s", $param_id);
|
||||||
|
|
||||||
|
// Set parameters
|
||||||
|
$param_id = $viewingId;
|
||||||
|
|
||||||
|
// Attempt to execute the prepared statement
|
||||||
|
if(mysqli_stmt_execute($stmt))
|
||||||
|
{
|
||||||
|
// Store result
|
||||||
|
mysqli_stmt_store_result($stmt);
|
||||||
|
|
||||||
|
// Check if entry exists, if yes then display
|
||||||
|
if(mysqli_stmt_num_rows($stmt) == 1)
|
||||||
|
{
|
||||||
|
// Bind result variables
|
||||||
|
mysqli_stmt_bind_result($stmt, $sqlPrefillCredits, $sqlPrefillName, $sqlPrefillContent);
|
||||||
|
|
||||||
|
if(mysqli_stmt_fetch($stmt))
|
||||||
|
{
|
||||||
|
$prefillCredits = $sqlPrefillCredits;
|
||||||
|
$prefillName = $sqlPrefillName;
|
||||||
|
$prefillContent = $sqlPrefillContent;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Article doesn't exist, display 404
|
||||||
|
http_response_code(404);
|
||||||
|
header("location: /404.php");
|
||||||
|
die();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
printf("Error: %s.\n", mysqli_stmt_error($stmt));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Close statement
|
||||||
|
mysqli_stmt_close($stmt);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Processing form data when form is submitted
|
||||||
|
if($_SERVER["REQUEST_METHOD"] == "POST")
|
||||||
|
{
|
||||||
|
// Prepare an insert statement
|
||||||
|
if(! $_POST["viewingId"] == NULL)
|
||||||
|
{
|
||||||
|
$sql = "UPDATE shanties SET credits=?, name=?, content=? WHERE id = ".$_POST["viewingId"];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$sql = "INSERT INTO shanties (credits, name, content) VALUES (?, ?, ?)";
|
||||||
|
}
|
||||||
|
|
||||||
|
if($stmt = mysqli_prepare($link, $sql))
|
||||||
|
{
|
||||||
|
// Bind variables to the prepared statement as parameters
|
||||||
|
mysqli_stmt_bind_param($stmt, "sss", $param_credits, $param_name, $param_content);
|
||||||
|
|
||||||
|
// Set parameters
|
||||||
|
$param_credits = $_POST["credits"];
|
||||||
|
$param_name = $_POST["name"];
|
||||||
|
$param_content = $_POST["content"];
|
||||||
|
|
||||||
|
// Attempt to execute the prepared statement
|
||||||
|
if(mysqli_stmt_execute($stmt))
|
||||||
|
{
|
||||||
|
// Redirect to login page
|
||||||
|
header("location: /index.php");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Close statement
|
||||||
|
mysqli_stmt_close($stmt);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
|
||||||
|
<?php include("header.php"); ?>
|
||||||
|
<article>
|
||||||
|
<h1>
|
||||||
|
NAPSAT PÍSNIČKU
|
||||||
|
</h1>
|
||||||
|
<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>" method="post">
|
||||||
|
<div class="centeredContainer">
|
||||||
|
<input type="text" name="name" style="font-weight: bold; width: 150%" placeholder="Název" value="<?php echo $prefillName; ?>"/>
|
||||||
|
</div>
|
||||||
|
<div class="centeredContainer">
|
||||||
|
<textarea name="content" style="height: 400px; width: 50%; resize: none;" placeholder="Písnička"><?php echo $prefillContent; ?></textarea>
|
||||||
|
<textarea name="credits" style="height: 400px; width: 50%; resize: none;" placeholder="Zásluhy"><?php echo $prefillCredits; ?></textarea>
|
||||||
|
</div>
|
||||||
|
<input type="hidden" name="viewingId" value="<?php echo $viewingId; ?>"/>
|
||||||
|
<input type="submit" class="btn btn-primary" value="Odeslat"/>
|
||||||
|
</form>
|
||||||
|
</article>
|
||||||
|
|
||||||
|
<?php include("footer.php"); ?>
|
16
footer.php
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
</div>
|
||||||
|
<footer id="footer">
|
||||||
|
<div>
|
||||||
|
<p>
|
||||||
|
Tato stránka silně čerpá z práce a intelektuálního vlastnictví Bobbyho Hendersona. Tuto stránku vede vysvěcený kněz LŠM Zdeněk Borovec (a.k.a. jeho Veliko Vezírstvo; a.k.a. Pirát Zeftarius; a.k.a. hele čumte, tam je ten šílenec s cedníkem na hlavě); Pro kontakt pište na "zeftarius@pastafarianstvi.cz", nebo kričte hodně hlasitě (opětování kontaktu není zaručeno). Javascript se snažím nepoužívat úmyslně, jelikož si myslím že je pro stránky tohoto typu zbytečný a jen je zpomaluje. Pokud máte nějaký problém se stránkou zkuste mě kontaktovat jedním z výše zmíněných způsobů, ale mějte na mysli že většina této stránky byla vytvořena s jedním nebo více grogy v systému. RAmen.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</footer>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
<?php
|
||||||
|
// Close connection
|
||||||
|
mysqli_close($link);
|
||||||
|
ob_end_flush();
|
||||||
|
?>
|
||||||
|
</html>
|
230
header.php
Normal file
|
@ -0,0 +1,230 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
ob_start();
|
||||||
|
|
||||||
|
// Initialize the session
|
||||||
|
session_start();
|
||||||
|
|
||||||
|
// Include config file
|
||||||
|
require_once "config.php";
|
||||||
|
require_once (__DIR__."/libraries/Parsedown.php");
|
||||||
|
require_once (__DIR__.'/libraries/htmlpurifier-4.14.0/library/HTMLPurifier.auto.php');
|
||||||
|
require_once (__DIR__."/libraries/GUID.php");
|
||||||
|
|
||||||
|
// Check if the user is already logged in, if yes then redirect him to welcome page
|
||||||
|
if(isset($_SESSION["loggedin"]) && $_SESSION["loggedin"] === true)
|
||||||
|
{
|
||||||
|
$username=htmlspecialchars($_SESSION["username"]);
|
||||||
|
$userid=htmlspecialchars($_SESSION["userid"]);
|
||||||
|
$firstUserMenuItem="<a href=\"/userView.php/_?id=".$userid."\">Uživatel ".$username." je přihlášen</a>";
|
||||||
|
$secondUserMenuItem="<a href=\"/logout.php\">Odhlásit se</a>";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$firstUserMenuItem="<a href=\"/login.php\">Přihlásit se</a>";
|
||||||
|
$secondUserMenuItem="<a href=\"/register.php\">Registrace</a>";
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
|
||||||
|
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="cs">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta name="description" content="Náboženství které má koule."/>
|
||||||
|
<meta name="keywords" content="Religion, Náboženství, Pastafariánství, Pastafariáni, Létající Špagetové Monstrum, Špagety, LŠM, FSM, Cedník, Piráti, Pirát, Carbonara">
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>Pastafariánství Česká Republika</title>
|
||||||
|
<link rel="icon" href="/Images/favicon.jpg" sizes="192x192" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
<meta name="author" content="Zdeněk Borovec">
|
||||||
|
<link rel="stylesheet" href="/Styles/style.css?_ver:7.4">
|
||||||
|
<!-- Image link preview-->
|
||||||
|
<link rel="image_src" href="Images/PirateFish.png"/>
|
||||||
|
<meta property="og:image" content="Images/PirateFish.png"/>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<!-- Image link preview-->
|
||||||
|
<img src="/Images/PirateFish.png" style="display: none;" />
|
||||||
|
|
||||||
|
<aside id="leftAside">
|
||||||
|
<?php
|
||||||
|
if(isset($_SESSION["is_admin"]) && $_SESSION["is_admin"])
|
||||||
|
{
|
||||||
|
echo
|
||||||
|
"
|
||||||
|
<div id=\"admin-tools\">
|
||||||
|
<div>
|
||||||
|
<a href=\"/editArticle.php\">
|
||||||
|
<img/ src=\"/Images/PenAndQuillIcon.png\" class=\"borderOnHover\">
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<a href=\"/editShanty.php\">
|
||||||
|
<img/ src=\"/Images/AccordionIcon.png\" class=\"borderOnHover\">
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class=\"flexBreak\"></div>
|
||||||
|
";
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
<div class="advert">
|
||||||
|
<a href="https://www.venganza.org">
|
||||||
|
<img src="https://www.spaghettimonster.org/wp-content/uploads/2008/01/fsmdivine.jpg"/>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<div class="advert">
|
||||||
|
<a href="https://www.youtube.com/channel/UCNHlZN6fuqs8EsjU-Dcp2Hg">
|
||||||
|
<img src="/Images/AdvertBanners/youtubebanner.png"/>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<div class="advert">
|
||||||
|
<a href="https://www.facebook.com/PastafarianstviCeskaRepublika">
|
||||||
|
<img src="/Images/AdvertBanners/facebook.webp"/>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<div class="advert">
|
||||||
|
<a href="https://www.instagram.com/pastafarianstvicr/">
|
||||||
|
<img src="/Images/AdvertBanners/instagram.png"/>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<div class="advert">
|
||||||
|
<a href="https://www.davidjaen.cz">
|
||||||
|
<img src="/Images/AdvertBanners/animatedbanner.gif"/>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<div class="advert">
|
||||||
|
<div>
|
||||||
|
<a href="/donateMe.php">
|
||||||
|
<img src="/Images/AdvertBanners/donatebanner.png"/>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</aside>
|
||||||
|
|
||||||
|
<div id="order: 2;"></div>
|
||||||
|
|
||||||
|
<aside id="rightAside">
|
||||||
|
<div class="advert">
|
||||||
|
<h1> Nejnovější komentáře: </h1>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<?php
|
||||||
|
$sql = "
|
||||||
|
SELECT users.username, news_comments.date_posted, news_comments.content, news_comments.article_id, 'news' as source
|
||||||
|
FROM news_comments INNER JOIN users ON news_comments.poster_id = users.id
|
||||||
|
|
||||||
|
UNION
|
||||||
|
|
||||||
|
SELECT users.username, shanties_comments.date_posted, shanties_comments.content, shanties_comments.article_id, 'shanties' as source
|
||||||
|
FROM shanties_comments INNER JOIN users ON shanties_comments.poster_id = users.id
|
||||||
|
ORDER BY date_posted DESC
|
||||||
|
LIMIT 5;
|
||||||
|
";
|
||||||
|
|
||||||
|
if($stmt = mysqli_prepare($link, $sql))
|
||||||
|
{
|
||||||
|
// Attempt to execute the prepared statement
|
||||||
|
if(mysqli_stmt_execute($stmt))
|
||||||
|
{
|
||||||
|
// Store result
|
||||||
|
mysqli_stmt_store_result($stmt);
|
||||||
|
|
||||||
|
// Check if username exists, if yes then verify password
|
||||||
|
if(mysqli_stmt_num_rows($stmt) > 0)
|
||||||
|
{
|
||||||
|
// Bind result variables
|
||||||
|
mysqli_stmt_bind_result($stmt, $poster_name, $date_posted, $content, $article_id, $source);
|
||||||
|
while(mysqli_stmt_fetch($stmt))
|
||||||
|
{
|
||||||
|
$innerSQL="SELECT name FROM ".$source." WHERE id = ".$article_id;
|
||||||
|
|
||||||
|
if($innerstmt = mysqli_prepare($link, $innerSQL))
|
||||||
|
{
|
||||||
|
if(mysqli_stmt_execute($innerstmt))
|
||||||
|
{
|
||||||
|
// Store result
|
||||||
|
mysqli_stmt_store_result($innerstmt);
|
||||||
|
|
||||||
|
// Check if username exists, if yes then verify password
|
||||||
|
if(mysqli_stmt_num_rows($innerstmt) > 0)
|
||||||
|
{
|
||||||
|
// Bind result variables
|
||||||
|
mysqli_stmt_bind_result($innerstmt, $name);
|
||||||
|
while(mysqli_stmt_fetch($innerstmt))
|
||||||
|
{
|
||||||
|
$Parsedown = new Parsedown();
|
||||||
|
|
||||||
|
$config = HTMLPurifier_Config::createDefault();
|
||||||
|
$config->set('HTML.Allowed', 'p,b,a[href],i');
|
||||||
|
$config->set('HTML.AllowedAttributes', 'a.href,img.src');
|
||||||
|
|
||||||
|
$Purifier = new HTMLPurifier($config);
|
||||||
|
|
||||||
|
$dirty_html = $Parsedown
|
||||||
|
->text($content);
|
||||||
|
|
||||||
|
$clean_html = $Purifier
|
||||||
|
->purify($dirty_html);
|
||||||
|
|
||||||
|
printf("
|
||||||
|
<article class=\"commentPreview previewElement\">
|
||||||
|
<a href=\"/%sView.php/_?id=%s\">
|
||||||
|
<div class=\"bgOnHover previewContent\">
|
||||||
|
<h3>%s</h3>
|
||||||
|
<div class=\"sidFlex\">
|
||||||
|
<p style=\"margin: 0;\"> %s </p>
|
||||||
|
<p class=\"date\" style=\"margin: 0;\"> %s </p>
|
||||||
|
</div>
|
||||||
|
<hr/>
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
<div style=\"clear: both;\"></div>
|
||||||
|
<div class=\"previewContent\">
|
||||||
|
%s
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
", $source, $article_id, $name, $poster_name, $date_posted, $clean_html);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
printf("Error: %s.\n", mysqli_stmt_error($stmt));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Close statement
|
||||||
|
mysqli_stmt_close($stmt);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
echo "Error: %s.\n", mysqli_error($link);
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
</aside>
|
||||||
|
|
||||||
|
<div style="order: 4"></div>
|
||||||
|
|
||||||
|
<div id="page-container">
|
||||||
|
<div id="headerContainer">
|
||||||
|
<ul id="userMenu">
|
||||||
|
<?php
|
||||||
|
echo "<li>".$firstUserMenuItem."</li>";
|
||||||
|
echo "<li>".$secondUserMenuItem."</li>";
|
||||||
|
?>
|
||||||
|
</ul>
|
||||||
|
<nav>
|
||||||
|
<ul id="navMenu">
|
||||||
|
<li><a href="/index.php">Domů</a></li>
|
||||||
|
<li><a href="/translation.php">Překlad</a></li>
|
||||||
|
<li><a href="/shanties.php">Modlitby</a></li>
|
||||||
|
</ul>
|
||||||
|
</nav>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="content-wrap">
|
52
index.php
Normal file
|
@ -0,0 +1,52 @@
|
||||||
|
<?php
|
||||||
|
include("header.php");
|
||||||
|
|
||||||
|
$sql = "SELECT news.id, news.date_posted, news.name, news.content, users.username FROM news INNER JOIN users ON news.poster_id = users.id ORDER BY date_posted DESC; ";
|
||||||
|
|
||||||
|
if($stmt = mysqli_prepare($link, $sql))
|
||||||
|
{
|
||||||
|
// Attempt to execute the prepared statement
|
||||||
|
if(mysqli_stmt_execute($stmt))
|
||||||
|
{
|
||||||
|
// Store result
|
||||||
|
mysqli_stmt_bind_result($stmt, $id, $date_posted, $name, $content, $poster_name);
|
||||||
|
|
||||||
|
while(mysqli_stmt_fetch($stmt))
|
||||||
|
{
|
||||||
|
$Parsedown = new Parsedown();
|
||||||
|
|
||||||
|
$parsedContent = $Parsedown->text($content);
|
||||||
|
|
||||||
|
printf("
|
||||||
|
<article style=\"padding: 0\">
|
||||||
|
<a href=\"/newsView.php/_?id=%s\" >
|
||||||
|
<div class=\"bgOnHover\" style=\"padding: 8px 16px 8px 16px;\">
|
||||||
|
<p class=\"date\" style=\"margin: 0;\"> %s </p>
|
||||||
|
<h1 style=\"float: left; margin: 0;\"> %s </h1>
|
||||||
|
<p style=\"float: right; margin: 0;\"> %s </p>
|
||||||
|
<div style=\"clear: both;\"></div>
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
<div style=\"padding: 8px 16px 8px 16px;\">
|
||||||
|
%s
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
|
||||||
|
", $id, $date_posted, $name, $poster_name, $parsedContent);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
printf("Error: %s.\n", mysqli_stmt_error($stmt));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Close statement
|
||||||
|
mysqli_stmt_close($stmt);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
printf("Error: %s.\n", mysqli_stmt_error($stmt));
|
||||||
|
}
|
||||||
|
|
||||||
|
include("footer.php");
|
||||||
|
?>
|
25
libraries/GUID.php
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
<?php
|
||||||
|
function GenerateUUID()
|
||||||
|
{
|
||||||
|
$data = $data ?? random_bytes(16);
|
||||||
|
|
||||||
|
assert(strlen($data) == 16);
|
||||||
|
|
||||||
|
$data[6] = chr(ord($data[6]) & 0x0f | 0x40); // set version to 0100
|
||||||
|
$data[8] = chr(ord($data[8]) & 0x3f | 0x80); // set bits 6-7 to 10
|
||||||
|
|
||||||
|
return $data;
|
||||||
|
}
|
||||||
|
|
||||||
|
function uuid_to_bin($uuid)
|
||||||
|
{
|
||||||
|
return hex2bin(str_replace('-', '', $uuid));
|
||||||
|
}
|
||||||
|
|
||||||
|
function bin_to_uuid($value)
|
||||||
|
{
|
||||||
|
$string = bin2hex($value);
|
||||||
|
|
||||||
|
return preg_replace('/([0-9a-f]{8})([0-9a-f]{4})([0-9a-f]{4})([0-9a-f]{4})([0-9a-f]{12})/', '$1-$2-$3-$4-$5', $string);
|
||||||
|
}
|
||||||
|
?>
|
1712
libraries/Parsedown.php
Normal file
23
libraries/htmlpurifier-4.14.0/.gitattributes
vendored
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
/.gitattributes export-ignore
|
||||||
|
/.github export-ignore
|
||||||
|
/.gitignore export-ignore
|
||||||
|
/art export-ignore
|
||||||
|
/benchmarks export-ignore
|
||||||
|
/configdoc export-ignore
|
||||||
|
/configdoc/usage.xml -crlf
|
||||||
|
/docs export-ignore
|
||||||
|
/Doxyfile export-ignore
|
||||||
|
/extras export-ignore
|
||||||
|
/INSTALL* export-ignore
|
||||||
|
/maintenance export-ignore
|
||||||
|
/NEWS export-ignore
|
||||||
|
/package.php export-ignore
|
||||||
|
/plugins export-ignore
|
||||||
|
/phpdoc.ini export-ignore
|
||||||
|
/smoketests export-ignore
|
||||||
|
/test-* export-ignore
|
||||||
|
/tests export-ignore
|
||||||
|
/TODO export-ignore
|
||||||
|
/update-for-release export-ignore
|
||||||
|
/WHATSNEW export-ignore
|
||||||
|
/WYSIWYG export-ignore
|
33
libraries/htmlpurifier-4.14.0/.github/workflows/ci.yml
vendored
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
name: ci
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
pull_request:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
linux_tests:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
strategy:
|
||||||
|
fail-fast: true
|
||||||
|
matrix:
|
||||||
|
php: [5.4, 5.5, 5.6, 7.0, 7.1, 7.2, 7.3, 7.4, 8.0]
|
||||||
|
|
||||||
|
name: PHP ${{ matrix.php }}
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
|
||||||
|
- name: Setup PHP
|
||||||
|
uses: shivammathur/setup-php@v2
|
||||||
|
with:
|
||||||
|
php-version: ${{ matrix.php }}
|
||||||
|
|
||||||
|
- name: Clone simpletest
|
||||||
|
run: git clone --depth=50 https://github.com/ezyang/simpletest.git
|
||||||
|
|
||||||
|
- name: Configure simpletest
|
||||||
|
run: cp test-settings.travis.php test-settings.php
|
||||||
|
|
||||||
|
- name: Execute Unit tests
|
||||||
|
run: php tests/index.php
|
28
libraries/htmlpurifier-4.14.0/.gitignore
vendored
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
tags
|
||||||
|
conf/
|
||||||
|
test-settings.php
|
||||||
|
config-schema.php
|
||||||
|
library/HTMLPurifier/DefinitionCache/Serializer/*/
|
||||||
|
library/standalone/
|
||||||
|
library/HTMLPurifier.standalone.php
|
||||||
|
library/HTMLPurifier*.tgz
|
||||||
|
library/package*.xml
|
||||||
|
smoketests/test-schema.html
|
||||||
|
configdoc/*.html
|
||||||
|
configdoc/configdoc.xml
|
||||||
|
docs/doxygen*
|
||||||
|
*.phpt.diff
|
||||||
|
*.phpt.exp
|
||||||
|
*.phpt.log
|
||||||
|
*.phpt.out
|
||||||
|
*.phpt.php
|
||||||
|
*.phpt.skip.php
|
||||||
|
*.htmlt.ini
|
||||||
|
*.patch
|
||||||
|
/*.php
|
||||||
|
vendor
|
||||||
|
composer.lock
|
||||||
|
*.rej
|
||||||
|
*.orig
|
||||||
|
*.bak
|
||||||
|
core
|
9
libraries/htmlpurifier-4.14.0/CREDITS
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
|
||||||
|
CREDITS
|
||||||
|
|
||||||
|
Almost everything written by Edward Z. Yang (Ambush Commander). Lots of thanks
|
||||||
|
to the DevNetwork Community for their help (see docs/ref-devnetwork.html for
|
||||||
|
more details), Feyd especially (namely IPv6 and optimization). Thanks to RSnake
|
||||||
|
for letting me package his fantastic XSS cheatsheet for a smoketest.
|
||||||
|
|
||||||
|
vim: et sw=4 sts=4
|
1317
libraries/htmlpurifier-4.14.0/Doxyfile
Normal file
341
libraries/htmlpurifier-4.14.0/INSTALL
Normal file
|
@ -0,0 +1,341 @@
|
||||||
|
|
||||||
|
Install
|
||||||
|
How to install HTML Purifier
|
||||||
|
|
||||||
|
HTML Purifier is designed to run out of the box, so actually using the
|
||||||
|
library is extremely easy. (Although... if you were looking for a
|
||||||
|
step-by-step installation GUI, you've downloaded the wrong software!)
|
||||||
|
|
||||||
|
While the impatient can get going immediately with some of the sample
|
||||||
|
code at the bottom of this library, it's well worth reading this entire
|
||||||
|
document--most of the other documentation assumes that you are familiar
|
||||||
|
with these contents.
|
||||||
|
|
||||||
|
|
||||||
|
---------------------------------------------------------------------------
|
||||||
|
1. Compatibility
|
||||||
|
|
||||||
|
HTML Purifier is PHP 5 and PHP 7, and is actively tested from PHP 5.3
|
||||||
|
and up. It has no core dependencies with other libraries.
|
||||||
|
|
||||||
|
These optional extensions can enhance the capabilities of HTML Purifier:
|
||||||
|
|
||||||
|
* iconv : Converts text to and from non-UTF-8 encodings
|
||||||
|
* bcmath : Used for unit conversion and imagecrash protection
|
||||||
|
* tidy : Used for pretty-printing HTML
|
||||||
|
|
||||||
|
These optional libraries can enhance the capabilities of HTML Purifier:
|
||||||
|
|
||||||
|
* CSSTidy : Clean CSS stylesheets using %Core.ExtractStyleBlocks
|
||||||
|
Note: You should use the modernized fork of CSSTidy available
|
||||||
|
at https://github.com/Cerdic/CSSTidy
|
||||||
|
* Net_IDNA2 (PEAR) : IRI support using %Core.EnableIDNA
|
||||||
|
Note: This is not necessary for PHP 5.3 or later
|
||||||
|
|
||||||
|
---------------------------------------------------------------------------
|
||||||
|
2. Reconnaissance
|
||||||
|
|
||||||
|
A big plus of HTML Purifier is its inerrant support of standards, so
|
||||||
|
your web-pages should be standards-compliant. (They should also use
|
||||||
|
semantic markup, but that's another issue altogether, one HTML Purifier
|
||||||
|
cannot fix without reading your mind.)
|
||||||
|
|
||||||
|
HTML Purifier can process these doctypes:
|
||||||
|
|
||||||
|
* XHTML 1.0 Transitional (default)
|
||||||
|
* XHTML 1.0 Strict
|
||||||
|
* HTML 4.01 Transitional
|
||||||
|
* HTML 4.01 Strict
|
||||||
|
* XHTML 1.1
|
||||||
|
|
||||||
|
...and these character encodings:
|
||||||
|
|
||||||
|
* UTF-8 (default)
|
||||||
|
* Any encoding iconv supports (with crippled internationalization support)
|
||||||
|
|
||||||
|
These defaults reflect what my choices would be if I were authoring an
|
||||||
|
HTML document, however, what you choose depends on the nature of your
|
||||||
|
codebase. If you don't know what doctype you are using, you can determine
|
||||||
|
the doctype from this identifier at the top of your source code:
|
||||||
|
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||||
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
|
||||||
|
...and the character encoding from this code:
|
||||||
|
|
||||||
|
<meta http-equiv="Content-type" content="text/html;charset=ENCODING">
|
||||||
|
|
||||||
|
If the character encoding declaration is missing, STOP NOW, and
|
||||||
|
read 'docs/enduser-utf8.html' (web accessible at
|
||||||
|
http://htmlpurifier.org/docs/enduser-utf8.html). In fact, even if it is
|
||||||
|
present, read this document anyway, as many websites specify their
|
||||||
|
document's character encoding incorrectly.
|
||||||
|
|
||||||
|
|
||||||
|
---------------------------------------------------------------------------
|
||||||
|
3. Including the library
|
||||||
|
|
||||||
|
The procedure is quite simple:
|
||||||
|
|
||||||
|
require_once '/path/to/library/HTMLPurifier.auto.php';
|
||||||
|
|
||||||
|
This will setup an autoloader, so the library's files are only included
|
||||||
|
when you use them.
|
||||||
|
|
||||||
|
Only the contents in the library/ folder are necessary, so you can remove
|
||||||
|
everything else when using HTML Purifier in a production environment.
|
||||||
|
|
||||||
|
If you installed HTML Purifier via PEAR, all you need to do is:
|
||||||
|
|
||||||
|
require_once 'HTMLPurifier.auto.php';
|
||||||
|
|
||||||
|
Please note that the usual PEAR practice of including just the classes you
|
||||||
|
want will not work with HTML Purifier's autoloading scheme.
|
||||||
|
|
||||||
|
Advanced users, read on; other users can skip to section 4.
|
||||||
|
|
||||||
|
Autoload compatibility
|
||||||
|
----------------------
|
||||||
|
|
||||||
|
HTML Purifier attempts to be as smart as possible when registering an
|
||||||
|
autoloader, but there are some cases where you will need to change
|
||||||
|
your own code to accomodate HTML Purifier. These are those cases:
|
||||||
|
|
||||||
|
AN __autoload FUNCTION IS DECLARED AFTER OUR AUTOLOADER IS REGISTERED
|
||||||
|
spl_autoload_register() has the curious behavior of disabling
|
||||||
|
the existing __autoload() handler. Users need to explicitly
|
||||||
|
spl_autoload_register('__autoload'). Because we use SPL when it
|
||||||
|
is available, __autoload() will ALWAYS be disabled. If __autoload()
|
||||||
|
is declared before HTML Purifier is loaded, this is not a problem:
|
||||||
|
HTML Purifier will register the function for you. But if it is
|
||||||
|
declared afterwards, it will mysteriously not work. This
|
||||||
|
snippet of code (after your autoloader is defined) will fix it:
|
||||||
|
|
||||||
|
spl_autoload_register('__autoload')
|
||||||
|
|
||||||
|
|
||||||
|
For better performance
|
||||||
|
----------------------
|
||||||
|
|
||||||
|
Opcode caches, which greatly speed up PHP initialization for scripts
|
||||||
|
with large amounts of code (HTML Purifier included), don't like
|
||||||
|
autoloaders. We offer an include file that includes all of HTML Purifier's
|
||||||
|
files in one go in an opcode cache friendly manner:
|
||||||
|
|
||||||
|
// If /path/to/library isn't already in your include path, uncomment
|
||||||
|
// the below line:
|
||||||
|
// require '/path/to/library/HTMLPurifier.path.php';
|
||||||
|
|
||||||
|
require 'HTMLPurifier.includes.php';
|
||||||
|
|
||||||
|
Optional components still need to be included--you'll know if you try to
|
||||||
|
use a feature and you get a class doesn't exists error! The autoloader
|
||||||
|
can be used in conjunction with this approach to catch classes that are
|
||||||
|
missing. Simply add this afterwards:
|
||||||
|
|
||||||
|
require 'HTMLPurifier.autoload.php';
|
||||||
|
|
||||||
|
Standalone version
|
||||||
|
------------------
|
||||||
|
|
||||||
|
HTML Purifier has a standalone distribution; you can also generate
|
||||||
|
a standalone file from the full version by running the script
|
||||||
|
maintenance/generate-standalone.php . The standalone version has the
|
||||||
|
benefit of having most of its code in one file, so parsing is much
|
||||||
|
faster and the library is easier to manage.
|
||||||
|
|
||||||
|
If HTMLPurifier.standalone.php exists in the library directory, you
|
||||||
|
can use it like this:
|
||||||
|
|
||||||
|
require '/path/to/HTMLPurifier.standalone.php';
|
||||||
|
|
||||||
|
This is equivalent to including HTMLPurifier.includes.php, except that
|
||||||
|
the contents of standalone/ will be added to your path. To override this
|
||||||
|
behavior, specify a new HTMLPURIFIER_PREFIX where standalone files can
|
||||||
|
be found (usually, this will be one directory up, the "true" library
|
||||||
|
directory in full distributions). Don't forget to set your path too!
|
||||||
|
|
||||||
|
The autoloader can be added to the end to ensure the classes are
|
||||||
|
loaded when necessary; otherwise you can manually include them.
|
||||||
|
To use the autoloader, use this:
|
||||||
|
|
||||||
|
require 'HTMLPurifier.autoload.php';
|
||||||
|
|
||||||
|
For advanced users
|
||||||
|
------------------
|
||||||
|
|
||||||
|
HTMLPurifier.auto.php performs a number of operations that can be done
|
||||||
|
individually. These are:
|
||||||
|
|
||||||
|
HTMLPurifier.path.php
|
||||||
|
Puts /path/to/library in the include path. For high performance,
|
||||||
|
this should be done in php.ini.
|
||||||
|
|
||||||
|
HTMLPurifier.autoload.php
|
||||||
|
Registers our autoload handler HTMLPurifier_Bootstrap::autoload($class).
|
||||||
|
|
||||||
|
You can do these operations by yourself, if you like.
|
||||||
|
|
||||||
|
|
||||||
|
---------------------------------------------------------------------------
|
||||||
|
4. Configuration
|
||||||
|
|
||||||
|
HTML Purifier is designed to run out-of-the-box, but occasionally HTML
|
||||||
|
Purifier needs to be told what to do. If you answer no to any of these
|
||||||
|
questions, read on; otherwise, you can skip to the next section (or, if you're
|
||||||
|
into configuring things just for the heck of it, skip to 4.3).
|
||||||
|
|
||||||
|
* Am I using UTF-8?
|
||||||
|
* Am I using XHTML 1.0 Transitional?
|
||||||
|
|
||||||
|
If you answered no to any of these questions, instantiate a configuration
|
||||||
|
object and read on:
|
||||||
|
|
||||||
|
$config = HTMLPurifier_Config::createDefault();
|
||||||
|
|
||||||
|
|
||||||
|
4.1. Setting a different character encoding
|
||||||
|
|
||||||
|
You really shouldn't use any other encoding except UTF-8, especially if you
|
||||||
|
plan to support multilingual websites (read section three for more details).
|
||||||
|
However, switching to UTF-8 is not always immediately feasible, so we can
|
||||||
|
adapt.
|
||||||
|
|
||||||
|
HTML Purifier uses iconv to support other character encodings, as such,
|
||||||
|
any encoding that iconv supports <http://www.gnu.org/software/libiconv/>
|
||||||
|
HTML Purifier supports with this code:
|
||||||
|
|
||||||
|
$config->set('Core.Encoding', /* put your encoding here */);
|
||||||
|
|
||||||
|
An example usage for Latin-1 websites (the most common encoding for English
|
||||||
|
websites):
|
||||||
|
|
||||||
|
$config->set('Core.Encoding', 'ISO-8859-1');
|
||||||
|
|
||||||
|
Note that HTML Purifier's support for non-Unicode encodings is crippled by the
|
||||||
|
fact that any character not supported by that encoding will be silently
|
||||||
|
dropped, EVEN if it is ampersand escaped. If you want to work around
|
||||||
|
this, you are welcome to read docs/enduser-utf8.html for a fix,
|
||||||
|
but please be cognizant of the issues the "solution" creates (for this
|
||||||
|
reason, I do not include the solution in this document).
|
||||||
|
|
||||||
|
|
||||||
|
4.2. Setting a different doctype
|
||||||
|
|
||||||
|
For those of you using HTML 4.01 Transitional, you can disable
|
||||||
|
XHTML output like this:
|
||||||
|
|
||||||
|
$config->set('HTML.Doctype', 'HTML 4.01 Transitional');
|
||||||
|
|
||||||
|
Other supported doctypes include:
|
||||||
|
|
||||||
|
* HTML 4.01 Strict
|
||||||
|
* HTML 4.01 Transitional
|
||||||
|
* XHTML 1.0 Strict
|
||||||
|
* XHTML 1.0 Transitional
|
||||||
|
* XHTML 1.1
|
||||||
|
|
||||||
|
|
||||||
|
4.3. Other settings
|
||||||
|
|
||||||
|
There are more configuration directives which can be read about
|
||||||
|
here: <http://htmlpurifier.org/live/configdoc/plain.html> They're a bit boring,
|
||||||
|
but they can help out for those of you who like to exert maximum control over
|
||||||
|
your code. Some of the more interesting ones are configurable at the
|
||||||
|
demo <http://htmlpurifier.org/demo.php> and are well worth looking into
|
||||||
|
for your own system.
|
||||||
|
|
||||||
|
For example, you can fine tune allowed elements and attributes, convert
|
||||||
|
relative URLs to absolute ones, and even autoparagraph input text! These
|
||||||
|
are, respectively, %HTML.Allowed, %URI.MakeAbsolute and %URI.Base, and
|
||||||
|
%AutoFormat.AutoParagraph. The %Namespace.Directive naming convention
|
||||||
|
translates to:
|
||||||
|
|
||||||
|
$config->set('Namespace.Directive', $value);
|
||||||
|
|
||||||
|
E.g.
|
||||||
|
|
||||||
|
$config->set('HTML.Allowed', 'p,b,a[href],i');
|
||||||
|
$config->set('URI.Base', 'http://www.example.com');
|
||||||
|
$config->set('URI.MakeAbsolute', true);
|
||||||
|
$config->set('AutoFormat.AutoParagraph', true);
|
||||||
|
|
||||||
|
|
||||||
|
---------------------------------------------------------------------------
|
||||||
|
5. Caching
|
||||||
|
|
||||||
|
HTML Purifier generates some cache files (generally one or two) to speed up
|
||||||
|
its execution. For maximum performance, make sure that
|
||||||
|
library/HTMLPurifier/DefinitionCache/Serializer is writeable by the webserver.
|
||||||
|
|
||||||
|
If you are in the library/ folder of HTML Purifier, you can set the
|
||||||
|
appropriate permissions using:
|
||||||
|
|
||||||
|
chmod -R 0755 HTMLPurifier/DefinitionCache/Serializer
|
||||||
|
|
||||||
|
If the above command doesn't work, you may need to assign write permissions
|
||||||
|
to group:
|
||||||
|
|
||||||
|
chmod -R 0775 HTMLPurifier/DefinitionCache/Serializer
|
||||||
|
|
||||||
|
You can also chmod files via your FTP client; this option
|
||||||
|
is usually accessible by right clicking the corresponding directory and
|
||||||
|
then selecting "chmod" or "file permissions".
|
||||||
|
|
||||||
|
Starting with 2.0.1, HTML Purifier will generate friendly error messages
|
||||||
|
that will tell you exactly what you have to chmod the directory to, if in doubt,
|
||||||
|
follow its advice.
|
||||||
|
|
||||||
|
If you are unable or unwilling to give write permissions to the cache
|
||||||
|
directory, you can either disable the cache (and suffer a performance
|
||||||
|
hit):
|
||||||
|
|
||||||
|
$config->set('Core.DefinitionCache', null);
|
||||||
|
|
||||||
|
Or move the cache directory somewhere else (no trailing slash):
|
||||||
|
|
||||||
|
$config->set('Cache.SerializerPath', '/home/user/absolute/path');
|
||||||
|
|
||||||
|
|
||||||
|
---------------------------------------------------------------------------
|
||||||
|
6. Using the code
|
||||||
|
|
||||||
|
The interface is mind-numbingly simple:
|
||||||
|
|
||||||
|
$purifier = new HTMLPurifier($config);
|
||||||
|
$clean_html = $purifier->purify( $dirty_html );
|
||||||
|
|
||||||
|
That's it! For more examples, check out docs/examples/ (they aren't very
|
||||||
|
different though). Also, docs/enduser-slow.html gives advice on what to
|
||||||
|
do if HTML Purifier is slowing down your application.
|
||||||
|
|
||||||
|
|
||||||
|
---------------------------------------------------------------------------
|
||||||
|
7. Quick install
|
||||||
|
|
||||||
|
First, make sure library/HTMLPurifier/DefinitionCache/Serializer is
|
||||||
|
writable by the webserver (see Section 5: Caching above for details).
|
||||||
|
If your website is in UTF-8 and XHTML Transitional, use this code:
|
||||||
|
|
||||||
|
<?php
|
||||||
|
require_once '/path/to/htmlpurifier/library/HTMLPurifier.auto.php';
|
||||||
|
|
||||||
|
$config = HTMLPurifier_Config::createDefault();
|
||||||
|
$purifier = new HTMLPurifier($config);
|
||||||
|
$clean_html = $purifier->purify($dirty_html);
|
||||||
|
?>
|
||||||
|
|
||||||
|
If your website is in a different encoding or doctype, use this code:
|
||||||
|
|
||||||
|
<?php
|
||||||
|
require_once '/path/to/htmlpurifier/library/HTMLPurifier.auto.php';
|
||||||
|
|
||||||
|
$config = HTMLPurifier_Config::createDefault();
|
||||||
|
$config->set('Core.Encoding', 'ISO-8859-1'); // replace with your encoding
|
||||||
|
$config->set('HTML.Doctype', 'HTML 4.01 Transitional'); // replace with your doctype
|
||||||
|
$purifier = new HTMLPurifier($config);
|
||||||
|
|
||||||
|
$clean_html = $purifier->purify($dirty_html);
|
||||||
|
?>
|
||||||
|
|
||||||
|
vim: et sw=4 sts=4
|
60
libraries/htmlpurifier-4.14.0/INSTALL.fr.utf8
Normal file
|
@ -0,0 +1,60 @@
|
||||||
|
|
||||||
|
Installation
|
||||||
|
Comment installer HTML Purifier
|
||||||
|
|
||||||
|
Attention : Ce document est encodé en UTF-8, si les lettres avec des accents
|
||||||
|
ne s'affichent pas, prenez un meilleur éditeur de texte.
|
||||||
|
|
||||||
|
L'installation de HTML Purifier est très simple, parce qu'il n'a pas besoin
|
||||||
|
de configuration. Pour les utilisateurs impatients, le code se trouve dans le
|
||||||
|
pied de page, mais je recommande de lire le document.
|
||||||
|
|
||||||
|
1. Compatibilité
|
||||||
|
|
||||||
|
HTML Purifier fonctionne avec PHP 5. PHP 5.3 est la dernière version testée.
|
||||||
|
Il ne dépend pas d'autres librairies.
|
||||||
|
|
||||||
|
Les extensions optionnelles sont iconv (généralement déjà installée) et tidy
|
||||||
|
(répendue aussi). Si vous utilisez UTF-8 et que vous ne voulez pas l'indentation,
|
||||||
|
vous pouvez utiliser HTML Purifier sans ces extensions.
|
||||||
|
|
||||||
|
|
||||||
|
2. Inclure la librairie
|
||||||
|
|
||||||
|
Quand vous devez l'utilisez, incluez le :
|
||||||
|
|
||||||
|
require_once('/path/to/library/HTMLPurifier.auto.php');
|
||||||
|
|
||||||
|
Ne pas l'inclure si ce n'est pas nécessaire, car HTML Purifier est lourd.
|
||||||
|
|
||||||
|
HTML Purifier utilise "autoload". Si vous avez défini la fonction __autoload,
|
||||||
|
vous devez ajouter cette fonction :
|
||||||
|
|
||||||
|
spl_autoload_register('__autoload')
|
||||||
|
|
||||||
|
Plus d'informations dans le document "INSTALL".
|
||||||
|
|
||||||
|
3. Installation rapide
|
||||||
|
|
||||||
|
Si votre site Web est en UTF-8 et XHTML Transitional, utilisez :
|
||||||
|
|
||||||
|
<?php
|
||||||
|
require_once('/path/to/htmlpurifier/library/HTMLPurifier.auto.php');
|
||||||
|
$purificateur = new HTMLPurifier();
|
||||||
|
$html_propre = $purificateur->purify($html_a_purifier);
|
||||||
|
?>
|
||||||
|
|
||||||
|
Sinon, utilisez :
|
||||||
|
|
||||||
|
<?php
|
||||||
|
require_once('/path/to/html/purifier/library/HTMLPurifier.auto.load');
|
||||||
|
$config = $HTMLPurifier_Config::createDefault();
|
||||||
|
$config->set('Core', 'Encoding', 'ISO-8859-1'); //Remplacez par votre
|
||||||
|
encodage
|
||||||
|
$config->set('Core', 'XHTML', true); //Remplacer par false si HTML 4.01
|
||||||
|
$purificateur = new HTMLPurifier($config);
|
||||||
|
$html_propre = $purificateur->purify($html_a_purifier);
|
||||||
|
?>
|
||||||
|
|
||||||
|
|
||||||
|
vim: et sw=4 sts=4
|
504
libraries/htmlpurifier-4.14.0/LICENSE
Normal file
|
@ -0,0 +1,504 @@
|
||||||
|
GNU LESSER GENERAL PUBLIC LICENSE
|
||||||
|
Version 2.1, February 1999
|
||||||
|
|
||||||
|
Copyright (C) 1991, 1999 Free Software Foundation, Inc.
|
||||||
|
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
Everyone is permitted to copy and distribute verbatim copies
|
||||||
|
of this license document, but changing it is not allowed.
|
||||||
|
|
||||||
|
[This is the first released version of the Lesser GPL. It also counts
|
||||||
|
as the successor of the GNU Library Public License, version 2, hence
|
||||||
|
the version number 2.1.]
|
||||||
|
|
||||||
|
Preamble
|
||||||
|
|
||||||
|
The licenses for most software are designed to take away your
|
||||||
|
freedom to share and change it. By contrast, the GNU General Public
|
||||||
|
Licenses are intended to guarantee your freedom to share and change
|
||||||
|
free software--to make sure the software is free for all its users.
|
||||||
|
|
||||||
|
This license, the Lesser General Public License, applies to some
|
||||||
|
specially designated software packages--typically libraries--of the
|
||||||
|
Free Software Foundation and other authors who decide to use it. You
|
||||||
|
can use it too, but we suggest you first think carefully about whether
|
||||||
|
this license or the ordinary General Public License is the better
|
||||||
|
strategy to use in any particular case, based on the explanations below.
|
||||||
|
|
||||||
|
When we speak of free software, we are referring to freedom of use,
|
||||||
|
not price. Our General Public Licenses are designed to make sure that
|
||||||
|
you have the freedom to distribute copies of free software (and charge
|
||||||
|
for this service if you wish); that you receive source code or can get
|
||||||
|
it if you want it; that you can change the software and use pieces of
|
||||||
|
it in new free programs; and that you are informed that you can do
|
||||||
|
these things.
|
||||||
|
|
||||||
|
To protect your rights, we need to make restrictions that forbid
|
||||||
|
distributors to deny you these rights or to ask you to surrender these
|
||||||
|
rights. These restrictions translate to certain responsibilities for
|
||||||
|
you if you distribute copies of the library or if you modify it.
|
||||||
|
|
||||||
|
For example, if you distribute copies of the library, whether gratis
|
||||||
|
or for a fee, you must give the recipients all the rights that we gave
|
||||||
|
you. You must make sure that they, too, receive or can get the source
|
||||||
|
code. If you link other code with the library, you must provide
|
||||||
|
complete object files to the recipients, so that they can relink them
|
||||||
|
with the library after making changes to the library and recompiling
|
||||||
|
it. And you must show them these terms so they know their rights.
|
||||||
|
|
||||||
|
We protect your rights with a two-step method: (1) we copyright the
|
||||||
|
library, and (2) we offer you this license, which gives you legal
|
||||||
|
permission to copy, distribute and/or modify the library.
|
||||||
|
|
||||||
|
To protect each distributor, we want to make it very clear that
|
||||||
|
there is no warranty for the free library. Also, if the library is
|
||||||
|
modified by someone else and passed on, the recipients should know
|
||||||
|
that what they have is not the original version, so that the original
|
||||||
|
author's reputation will not be affected by problems that might be
|
||||||
|
introduced by others.
|
||||||
|
|
||||||
|
Finally, software patents pose a constant threat to the existence of
|
||||||
|
any free program. We wish to make sure that a company cannot
|
||||||
|
effectively restrict the users of a free program by obtaining a
|
||||||
|
restrictive license from a patent holder. Therefore, we insist that
|
||||||
|
any patent license obtained for a version of the library must be
|
||||||
|
consistent with the full freedom of use specified in this license.
|
||||||
|
|
||||||
|
Most GNU software, including some libraries, is covered by the
|
||||||
|
ordinary GNU General Public License. This license, the GNU Lesser
|
||||||
|
General Public License, applies to certain designated libraries, and
|
||||||
|
is quite different from the ordinary General Public License. We use
|
||||||
|
this license for certain libraries in order to permit linking those
|
||||||
|
libraries into non-free programs.
|
||||||
|
|
||||||
|
When a program is linked with a library, whether statically or using
|
||||||
|
a shared library, the combination of the two is legally speaking a
|
||||||
|
combined work, a derivative of the original library. The ordinary
|
||||||
|
General Public License therefore permits such linking only if the
|
||||||
|
entire combination fits its criteria of freedom. The Lesser General
|
||||||
|
Public License permits more lax criteria for linking other code with
|
||||||
|
the library.
|
||||||
|
|
||||||
|
We call this license the "Lesser" General Public License because it
|
||||||
|
does Less to protect the user's freedom than the ordinary General
|
||||||
|
Public License. It also provides other free software developers Less
|
||||||
|
of an advantage over competing non-free programs. These disadvantages
|
||||||
|
are the reason we use the ordinary General Public License for many
|
||||||
|
libraries. However, the Lesser license provides advantages in certain
|
||||||
|
special circumstances.
|
||||||
|
|
||||||
|
For example, on rare occasions, there may be a special need to
|
||||||
|
encourage the widest possible use of a certain library, so that it becomes
|
||||||
|
a de-facto standard. To achieve this, non-free programs must be
|
||||||
|
allowed to use the library. A more frequent case is that a free
|
||||||
|
library does the same job as widely used non-free libraries. In this
|
||||||
|
case, there is little to gain by limiting the free library to free
|
||||||
|
software only, so we use the Lesser General Public License.
|
||||||
|
|
||||||
|
In other cases, permission to use a particular library in non-free
|
||||||
|
programs enables a greater number of people to use a large body of
|
||||||
|
free software. For example, permission to use the GNU C Library in
|
||||||
|
non-free programs enables many more people to use the whole GNU
|
||||||
|
operating system, as well as its variant, the GNU/Linux operating
|
||||||
|
system.
|
||||||
|
|
||||||
|
Although the Lesser General Public License is Less protective of the
|
||||||
|
users' freedom, it does ensure that the user of a program that is
|
||||||
|
linked with the Library has the freedom and the wherewithal to run
|
||||||
|
that program using a modified version of the Library.
|
||||||
|
|
||||||
|
The precise terms and conditions for copying, distribution and
|
||||||
|
modification follow. Pay close attention to the difference between a
|
||||||
|
"work based on the library" and a "work that uses the library". The
|
||||||
|
former contains code derived from the library, whereas the latter must
|
||||||
|
be combined with the library in order to run.
|
||||||
|
|
||||||
|
GNU LESSER GENERAL PUBLIC LICENSE
|
||||||
|
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||||
|
|
||||||
|
0. This License Agreement applies to any software library or other
|
||||||
|
program which contains a notice placed by the copyright holder or
|
||||||
|
other authorized party saying it may be distributed under the terms of
|
||||||
|
this Lesser General Public License (also called "this License").
|
||||||
|
Each licensee is addressed as "you".
|
||||||
|
|
||||||
|
A "library" means a collection of software functions and/or data
|
||||||
|
prepared so as to be conveniently linked with application programs
|
||||||
|
(which use some of those functions and data) to form executables.
|
||||||
|
|
||||||
|
The "Library", below, refers to any such software library or work
|
||||||
|
which has been distributed under these terms. A "work based on the
|
||||||
|
Library" means either the Library or any derivative work under
|
||||||
|
copyright law: that is to say, a work containing the Library or a
|
||||||
|
portion of it, either verbatim or with modifications and/or translated
|
||||||
|
straightforwardly into another language. (Hereinafter, translation is
|
||||||
|
included without limitation in the term "modification".)
|
||||||
|
|
||||||
|
"Source code" for a work means the preferred form of the work for
|
||||||
|
making modifications to it. For a library, complete source code means
|
||||||
|
all the source code for all modules it contains, plus any associated
|
||||||
|
interface definition files, plus the scripts used to control compilation
|
||||||
|
and installation of the library.
|
||||||
|
|
||||||
|
Activities other than copying, distribution and modification are not
|
||||||
|
covered by this License; they are outside its scope. The act of
|
||||||
|
running a program using the Library is not restricted, and output from
|
||||||
|
such a program is covered only if its contents constitute a work based
|
||||||
|
on the Library (independent of the use of the Library in a tool for
|
||||||
|
writing it). Whether that is true depends on what the Library does
|
||||||
|
and what the program that uses the Library does.
|
||||||
|
|
||||||
|
1. You may copy and distribute verbatim copies of the Library's
|
||||||
|
complete source code as you receive it, in any medium, provided that
|
||||||
|
you conspicuously and appropriately publish on each copy an
|
||||||
|
appropriate copyright notice and disclaimer of warranty; keep intact
|
||||||
|
all the notices that refer to this License and to the absence of any
|
||||||
|
warranty; and distribute a copy of this License along with the
|
||||||
|
Library.
|
||||||
|
|
||||||
|
You may charge a fee for the physical act of transferring a copy,
|
||||||
|
and you may at your option offer warranty protection in exchange for a
|
||||||
|
fee.
|
||||||
|
|
||||||
|
2. You may modify your copy or copies of the Library or any portion
|
||||||
|
of it, thus forming a work based on the Library, and copy and
|
||||||
|
distribute such modifications or work under the terms of Section 1
|
||||||
|
above, provided that you also meet all of these conditions:
|
||||||
|
|
||||||
|
a) The modified work must itself be a software library.
|
||||||
|
|
||||||
|
b) You must cause the files modified to carry prominent notices
|
||||||
|
stating that you changed the files and the date of any change.
|
||||||
|
|
||||||
|
c) You must cause the whole of the work to be licensed at no
|
||||||
|
charge to all third parties under the terms of this License.
|
||||||
|
|
||||||
|
d) If a facility in the modified Library refers to a function or a
|
||||||
|
table of data to be supplied by an application program that uses
|
||||||
|
the facility, other than as an argument passed when the facility
|
||||||
|
is invoked, then you must make a good faith effort to ensure that,
|
||||||
|
in the event an application does not supply such function or
|
||||||
|
table, the facility still operates, and performs whatever part of
|
||||||
|
its purpose remains meaningful.
|
||||||
|
|
||||||
|
(For example, a function in a library to compute square roots has
|
||||||
|
a purpose that is entirely well-defined independent of the
|
||||||
|
application. Therefore, Subsection 2d requires that any
|
||||||
|
application-supplied function or table used by this function must
|
||||||
|
be optional: if the application does not supply it, the square
|
||||||
|
root function must still compute square roots.)
|
||||||
|
|
||||||
|
These requirements apply to the modified work as a whole. If
|
||||||
|
identifiable sections of that work are not derived from the Library,
|
||||||
|
and can be reasonably considered independent and separate works in
|
||||||
|
themselves, then this License, and its terms, do not apply to those
|
||||||
|
sections when you distribute them as separate works. But when you
|
||||||
|
distribute the same sections as part of a whole which is a work based
|
||||||
|
on the Library, the distribution of the whole must be on the terms of
|
||||||
|
this License, whose permissions for other licensees extend to the
|
||||||
|
entire whole, and thus to each and every part regardless of who wrote
|
||||||
|
it.
|
||||||
|
|
||||||
|
Thus, it is not the intent of this section to claim rights or contest
|
||||||
|
your rights to work written entirely by you; rather, the intent is to
|
||||||
|
exercise the right to control the distribution of derivative or
|
||||||
|
collective works based on the Library.
|
||||||
|
|
||||||
|
In addition, mere aggregation of another work not based on the Library
|
||||||
|
with the Library (or with a work based on the Library) on a volume of
|
||||||
|
a storage or distribution medium does not bring the other work under
|
||||||
|
the scope of this License.
|
||||||
|
|
||||||
|
3. You may opt to apply the terms of the ordinary GNU General Public
|
||||||
|
License instead of this License to a given copy of the Library. To do
|
||||||
|
this, you must alter all the notices that refer to this License, so
|
||||||
|
that they refer to the ordinary GNU General Public License, version 2,
|
||||||
|
instead of to this License. (If a newer version than version 2 of the
|
||||||
|
ordinary GNU General Public License has appeared, then you can specify
|
||||||
|
that version instead if you wish.) Do not make any other change in
|
||||||
|
these notices.
|
||||||
|
|
||||||
|
Once this change is made in a given copy, it is irreversible for
|
||||||
|
that copy, so the ordinary GNU General Public License applies to all
|
||||||
|
subsequent copies and derivative works made from that copy.
|
||||||
|
|
||||||
|
This option is useful when you wish to copy part of the code of
|
||||||
|
the Library into a program that is not a library.
|
||||||
|
|
||||||
|
4. You may copy and distribute the Library (or a portion or
|
||||||
|
derivative of it, under Section 2) in object code or executable form
|
||||||
|
under the terms of Sections 1 and 2 above provided that you accompany
|
||||||
|
it with the complete corresponding machine-readable source code, which
|
||||||
|
must be distributed under the terms of Sections 1 and 2 above on a
|
||||||
|
medium customarily used for software interchange.
|
||||||
|
|
||||||
|
If distribution of object code is made by offering access to copy
|
||||||
|
from a designated place, then offering equivalent access to copy the
|
||||||
|
source code from the same place satisfies the requirement to
|
||||||
|
distribute the source code, even though third parties are not
|
||||||
|
compelled to copy the source along with the object code.
|
||||||
|
|
||||||
|
5. A program that contains no derivative of any portion of the
|
||||||
|
Library, but is designed to work with the Library by being compiled or
|
||||||
|
linked with it, is called a "work that uses the Library". Such a
|
||||||
|
work, in isolation, is not a derivative work of the Library, and
|
||||||
|
therefore falls outside the scope of this License.
|
||||||
|
|
||||||
|
However, linking a "work that uses the Library" with the Library
|
||||||
|
creates an executable that is a derivative of the Library (because it
|
||||||
|
contains portions of the Library), rather than a "work that uses the
|
||||||
|
library". The executable is therefore covered by this License.
|
||||||
|
Section 6 states terms for distribution of such executables.
|
||||||
|
|
||||||
|
When a "work that uses the Library" uses material from a header file
|
||||||
|
that is part of the Library, the object code for the work may be a
|
||||||
|
derivative work of the Library even though the source code is not.
|
||||||
|
Whether this is true is especially significant if the work can be
|
||||||
|
linked without the Library, or if the work is itself a library. The
|
||||||
|
threshold for this to be true is not precisely defined by law.
|
||||||
|
|
||||||
|
If such an object file uses only numerical parameters, data
|
||||||
|
structure layouts and accessors, and small macros and small inline
|
||||||
|
functions (ten lines or less in length), then the use of the object
|
||||||
|
file is unrestricted, regardless of whether it is legally a derivative
|
||||||
|
work. (Executables containing this object code plus portions of the
|
||||||
|
Library will still fall under Section 6.)
|
||||||
|
|
||||||
|
Otherwise, if the work is a derivative of the Library, you may
|
||||||
|
distribute the object code for the work under the terms of Section 6.
|
||||||
|
Any executables containing that work also fall under Section 6,
|
||||||
|
whether or not they are linked directly with the Library itself.
|
||||||
|
|
||||||
|
6. As an exception to the Sections above, you may also combine or
|
||||||
|
link a "work that uses the Library" with the Library to produce a
|
||||||
|
work containing portions of the Library, and distribute that work
|
||||||
|
under terms of your choice, provided that the terms permit
|
||||||
|
modification of the work for the customer's own use and reverse
|
||||||
|
engineering for debugging such modifications.
|
||||||
|
|
||||||
|
You must give prominent notice with each copy of the work that the
|
||||||
|
Library is used in it and that the Library and its use are covered by
|
||||||
|
this License. You must supply a copy of this License. If the work
|
||||||
|
during execution displays copyright notices, you must include the
|
||||||
|
copyright notice for the Library among them, as well as a reference
|
||||||
|
directing the user to the copy of this License. Also, you must do one
|
||||||
|
of these things:
|
||||||
|
|
||||||
|
a) Accompany the work with the complete corresponding
|
||||||
|
machine-readable source code for the Library including whatever
|
||||||
|
changes were used in the work (which must be distributed under
|
||||||
|
Sections 1 and 2 above); and, if the work is an executable linked
|
||||||
|
with the Library, with the complete machine-readable "work that
|
||||||
|
uses the Library", as object code and/or source code, so that the
|
||||||
|
user can modify the Library and then relink to produce a modified
|
||||||
|
executable containing the modified Library. (It is understood
|
||||||
|
that the user who changes the contents of definitions files in the
|
||||||
|
Library will not necessarily be able to recompile the application
|
||||||
|
to use the modified definitions.)
|
||||||
|
|
||||||
|
b) Use a suitable shared library mechanism for linking with the
|
||||||
|
Library. A suitable mechanism is one that (1) uses at run time a
|
||||||
|
copy of the library already present on the user's computer system,
|
||||||
|
rather than copying library functions into the executable, and (2)
|
||||||
|
will operate properly with a modified version of the library, if
|
||||||
|
the user installs one, as long as the modified version is
|
||||||
|
interface-compatible with the version that the work was made with.
|
||||||
|
|
||||||
|
c) Accompany the work with a written offer, valid for at
|
||||||
|
least three years, to give the same user the materials
|
||||||
|
specified in Subsection 6a, above, for a charge no more
|
||||||
|
than the cost of performing this distribution.
|
||||||
|
|
||||||
|
d) If distribution of the work is made by offering access to copy
|
||||||
|
from a designated place, offer equivalent access to copy the above
|
||||||
|
specified materials from the same place.
|
||||||
|
|
||||||
|
e) Verify that the user has already received a copy of these
|
||||||
|
materials or that you have already sent this user a copy.
|
||||||
|
|
||||||
|
For an executable, the required form of the "work that uses the
|
||||||
|
Library" must include any data and utility programs needed for
|
||||||
|
reproducing the executable from it. However, as a special exception,
|
||||||
|
the materials to be distributed need not include anything that is
|
||||||
|
normally distributed (in either source or binary form) with the major
|
||||||
|
components (compiler, kernel, and so on) of the operating system on
|
||||||
|
which the executable runs, unless that component itself accompanies
|
||||||
|
the executable.
|
||||||
|
|
||||||
|
It may happen that this requirement contradicts the license
|
||||||
|
restrictions of other proprietary libraries that do not normally
|
||||||
|
accompany the operating system. Such a contradiction means you cannot
|
||||||
|
use both them and the Library together in an executable that you
|
||||||
|
distribute.
|
||||||
|
|
||||||
|
7. You may place library facilities that are a work based on the
|
||||||
|
Library side-by-side in a single library together with other library
|
||||||
|
facilities not covered by this License, and distribute such a combined
|
||||||
|
library, provided that the separate distribution of the work based on
|
||||||
|
the Library and of the other library facilities is otherwise
|
||||||
|
permitted, and provided that you do these two things:
|
||||||
|
|
||||||
|
a) Accompany the combined library with a copy of the same work
|
||||||
|
based on the Library, uncombined with any other library
|
||||||
|
facilities. This must be distributed under the terms of the
|
||||||
|
Sections above.
|
||||||
|
|
||||||
|
b) Give prominent notice with the combined library of the fact
|
||||||
|
that part of it is a work based on the Library, and explaining
|
||||||
|
where to find the accompanying uncombined form of the same work.
|
||||||
|
|
||||||
|
8. You may not copy, modify, sublicense, link with, or distribute
|
||||||
|
the Library except as expressly provided under this License. Any
|
||||||
|
attempt otherwise to copy, modify, sublicense, link with, or
|
||||||
|
distribute the Library is void, and will automatically terminate your
|
||||||
|
rights under this License. However, parties who have received copies,
|
||||||
|
or rights, from you under this License will not have their licenses
|
||||||
|
terminated so long as such parties remain in full compliance.
|
||||||
|
|
||||||
|
9. You are not required to accept this License, since you have not
|
||||||
|
signed it. However, nothing else grants you permission to modify or
|
||||||
|
distribute the Library or its derivative works. These actions are
|
||||||
|
prohibited by law if you do not accept this License. Therefore, by
|
||||||
|
modifying or distributing the Library (or any work based on the
|
||||||
|
Library), you indicate your acceptance of this License to do so, and
|
||||||
|
all its terms and conditions for copying, distributing or modifying
|
||||||
|
the Library or works based on it.
|
||||||
|
|
||||||
|
10. Each time you redistribute the Library (or any work based on the
|
||||||
|
Library), the recipient automatically receives a license from the
|
||||||
|
original licensor to copy, distribute, link with or modify the Library
|
||||||
|
subject to these terms and conditions. You may not impose any further
|
||||||
|
restrictions on the recipients' exercise of the rights granted herein.
|
||||||
|
You are not responsible for enforcing compliance by third parties with
|
||||||
|
this License.
|
||||||
|
|
||||||
|
11. If, as a consequence of a court judgment or allegation of patent
|
||||||
|
infringement or for any other reason (not limited to patent issues),
|
||||||
|
conditions are imposed on you (whether by court order, agreement or
|
||||||
|
otherwise) that contradict the conditions of this License, they do not
|
||||||
|
excuse you from the conditions of this License. If you cannot
|
||||||
|
distribute so as to satisfy simultaneously your obligations under this
|
||||||
|
License and any other pertinent obligations, then as a consequence you
|
||||||
|
may not distribute the Library at all. For example, if a patent
|
||||||
|
license would not permit royalty-free redistribution of the Library by
|
||||||
|
all those who receive copies directly or indirectly through you, then
|
||||||
|
the only way you could satisfy both it and this License would be to
|
||||||
|
refrain entirely from distribution of the Library.
|
||||||
|
|
||||||
|
If any portion of this section is held invalid or unenforceable under any
|
||||||
|
particular circumstance, the balance of the section is intended to apply,
|
||||||
|
and the section as a whole is intended to apply in other circumstances.
|
||||||
|
|
||||||
|
It is not the purpose of this section to induce you to infringe any
|
||||||
|
patents or other property right claims or to contest validity of any
|
||||||
|
such claims; this section has the sole purpose of protecting the
|
||||||
|
integrity of the free software distribution system which is
|
||||||
|
implemented by public license practices. Many people have made
|
||||||
|
generous contributions to the wide range of software distributed
|
||||||
|
through that system in reliance on consistent application of that
|
||||||
|
system; it is up to the author/donor to decide if he or she is willing
|
||||||
|
to distribute software through any other system and a licensee cannot
|
||||||
|
impose that choice.
|
||||||
|
|
||||||
|
This section is intended to make thoroughly clear what is believed to
|
||||||
|
be a consequence of the rest of this License.
|
||||||
|
|
||||||
|
12. If the distribution and/or use of the Library is restricted in
|
||||||
|
certain countries either by patents or by copyrighted interfaces, the
|
||||||
|
original copyright holder who places the Library under this License may add
|
||||||
|
an explicit geographical distribution limitation excluding those countries,
|
||||||
|
so that distribution is permitted only in or among countries not thus
|
||||||
|
excluded. In such case, this License incorporates the limitation as if
|
||||||
|
written in the body of this License.
|
||||||
|
|
||||||
|
13. The Free Software Foundation may publish revised and/or new
|
||||||
|
versions of the Lesser General Public License from time to time.
|
||||||
|
Such new versions will be similar in spirit to the present version,
|
||||||
|
but may differ in detail to address new problems or concerns.
|
||||||
|
|
||||||
|
Each version is given a distinguishing version number. If the Library
|
||||||
|
specifies a version number of this License which applies to it and
|
||||||
|
"any later version", you have the option of following the terms and
|
||||||
|
conditions either of that version or of any later version published by
|
||||||
|
the Free Software Foundation. If the Library does not specify a
|
||||||
|
license version number, you may choose any version ever published by
|
||||||
|
the Free Software Foundation.
|
||||||
|
|
||||||
|
14. If you wish to incorporate parts of the Library into other free
|
||||||
|
programs whose distribution conditions are incompatible with these,
|
||||||
|
write to the author to ask for permission. For software which is
|
||||||
|
copyrighted by the Free Software Foundation, write to the Free
|
||||||
|
Software Foundation; we sometimes make exceptions for this. Our
|
||||||
|
decision will be guided by the two goals of preserving the free status
|
||||||
|
of all derivatives of our free software and of promoting the sharing
|
||||||
|
and reuse of software generally.
|
||||||
|
|
||||||
|
NO WARRANTY
|
||||||
|
|
||||||
|
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
|
||||||
|
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
|
||||||
|
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
|
||||||
|
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
|
||||||
|
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
|
||||||
|
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||||
|
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
|
||||||
|
LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
|
||||||
|
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||||
|
|
||||||
|
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
|
||||||
|
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
|
||||||
|
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
|
||||||
|
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
|
||||||
|
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
|
||||||
|
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
|
||||||
|
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
|
||||||
|
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
|
||||||
|
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
|
||||||
|
DAMAGES.
|
||||||
|
|
||||||
|
END OF TERMS AND CONDITIONS
|
||||||
|
|
||||||
|
How to Apply These Terms to Your New Libraries
|
||||||
|
|
||||||
|
If you develop a new library, and you want it to be of the greatest
|
||||||
|
possible use to the public, we recommend making it free software that
|
||||||
|
everyone can redistribute and change. You can do so by permitting
|
||||||
|
redistribution under these terms (or, alternatively, under the terms of the
|
||||||
|
ordinary General Public License).
|
||||||
|
|
||||||
|
To apply these terms, attach the following notices to the library. It is
|
||||||
|
safest to attach them to the start of each source file to most effectively
|
||||||
|
convey the exclusion of warranty; and each file should have at least the
|
||||||
|
"copyright" line and a pointer to where the full notice is found.
|
||||||
|
|
||||||
|
<one line to give the library's name and a brief idea of what it does.>
|
||||||
|
Copyright (C) <year> <name of author>
|
||||||
|
|
||||||
|
This library is free software; you can redistribute it and/or
|
||||||
|
modify it under the terms of the GNU Lesser General Public
|
||||||
|
License as published by the Free Software Foundation; either
|
||||||
|
version 2.1 of the License, or (at your option) any later version.
|
||||||
|
|
||||||
|
This library 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
|
||||||
|
Lesser General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Lesser General Public
|
||||||
|
License along with this library; if not, write to the Free Software
|
||||||
|
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
|
||||||
|
Also add information on how to contact you by electronic and paper mail.
|
||||||
|
|
||||||
|
You should also get your employer (if you work as a programmer) or your
|
||||||
|
school, if any, to sign a "copyright disclaimer" for the library, if
|
||||||
|
necessary. Here is a sample; alter the names:
|
||||||
|
|
||||||
|
Yoyodyne, Inc., hereby disclaims all copyright interest in the
|
||||||
|
library `Frob' (a library for tweaking knobs) written by James Random Hacker.
|
||||||
|
|
||||||
|
<signature of Ty Coon>, 1 April 1990
|
||||||
|
Ty Coon, President of Vice
|
||||||
|
|
||||||
|
That's all there is to it!
|
||||||
|
|
||||||
|
vim: et sw=4 sts=4
|
1261
libraries/htmlpurifier-4.14.0/NEWS
Normal file
29
libraries/htmlpurifier-4.14.0/README.md
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
HTML Purifier [![Build Status](https://github.com/ezyang/htmlpurifier/actions/workflows/ci.yml/badge.svg?branch=master)](https://github.com/ezyang/htmlpurifier/actions/workflows/ci.yml)
|
||||||
|
=============
|
||||||
|
|
||||||
|
HTML Purifier is an HTML filtering solution that uses a unique combination
|
||||||
|
of robust whitelists and aggressive parsing to ensure that not only are
|
||||||
|
XSS attacks thwarted, but the resulting HTML is standards compliant.
|
||||||
|
|
||||||
|
HTML Purifier is oriented towards richly formatted documents from
|
||||||
|
untrusted sources that require CSS and a full tag-set. This library can
|
||||||
|
be configured to accept a more restrictive set of tags, but it won't be
|
||||||
|
as efficient as more bare-bones parsers. It will, however, do the job
|
||||||
|
right, which may be more important.
|
||||||
|
|
||||||
|
Places to go:
|
||||||
|
|
||||||
|
* See INSTALL for a quick installation guide
|
||||||
|
* See docs/ for developer-oriented documentation, code examples and
|
||||||
|
an in-depth installation guide.
|
||||||
|
* See WYSIWYG for information on editors like TinyMCE and FCKeditor
|
||||||
|
|
||||||
|
HTML Purifier can be found on the web at: [http://htmlpurifier.org/](http://htmlpurifier.org/)
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
Package available on [Composer](https://packagist.org/packages/ezyang/htmlpurifier).
|
||||||
|
|
||||||
|
If you're using Composer to manage dependencies, you can use
|
||||||
|
|
||||||
|
$ composer require ezyang/htmlpurifier
|
150
libraries/htmlpurifier-4.14.0/TODO
Normal file
|
@ -0,0 +1,150 @@
|
||||||
|
|
||||||
|
TODO List
|
||||||
|
|
||||||
|
= KEY ====================
|
||||||
|
# Flagship
|
||||||
|
- Regular
|
||||||
|
? Maybe I'll Do It
|
||||||
|
==========================
|
||||||
|
|
||||||
|
If no interest is expressed for a feature that may require a considerable
|
||||||
|
amount of effort to implement, it may get endlessly delayed. Do not be
|
||||||
|
afraid to cast your vote for the next feature to be implemented!
|
||||||
|
|
||||||
|
Things to do as soon as possible:
|
||||||
|
|
||||||
|
- http://htmlpurifier.org/phorum/read.php?3,5560,6307#msg-6307
|
||||||
|
- Think about allowing explicit order of operations hooks for transforms
|
||||||
|
- Fix "<.<" bug (trailing < is removed if not EOD)
|
||||||
|
- Build in better internal state dumps and debugging tools for remote
|
||||||
|
debugging
|
||||||
|
- Allowed/Allowed* have strange interactions when both set
|
||||||
|
? Transform lone embeds into object tags
|
||||||
|
- Deprecated config options that emit warnings when you set them (with'
|
||||||
|
a way of muting the warning if you really want to)
|
||||||
|
- Make HTML.Trusted work with Output.FlashCompat
|
||||||
|
- HTML.Trusted and HTML.SafeObject have funny interaction; general
|
||||||
|
problem is what to do when a module "supersedes" another
|
||||||
|
(see also tables and basic tables.) This is a little dicier
|
||||||
|
because HTML.SafeObject has some extra functionality that
|
||||||
|
trusted might find useful. See http://htmlpurifier.org/phorum/read.php?3,5762,6100
|
||||||
|
|
||||||
|
FUTURE VERSIONS
|
||||||
|
---------------
|
||||||
|
|
||||||
|
4.9 release [OMG CONFIG PONIES]
|
||||||
|
! Fix Printer. It's from the old days when we didn't have decent XML classes
|
||||||
|
! Factor demo.php into a set of Printer classes, and then create a stub
|
||||||
|
file for users here (inside the actual HTML Purifier library)
|
||||||
|
- Fix error handling with form construction
|
||||||
|
- Do encoding validation in Printers, or at least, where user data comes in
|
||||||
|
- Config: Add examples to everything (make built-in which also automatically
|
||||||
|
gives output)
|
||||||
|
- Add "register" field to config schemas to eliminate dependence on
|
||||||
|
naming conventions (try to remember why we ultimately decided on tihs)
|
||||||
|
|
||||||
|
5.0 release [HTML 5]
|
||||||
|
# Swap out code to use html5lib tokenizer and tree-builder
|
||||||
|
! Allow turning off of FixNesting and required attribute insertion
|
||||||
|
|
||||||
|
5.1 release [It's All About Trust] (floating)
|
||||||
|
# Implement untrusted, dangerous elements/attributes
|
||||||
|
# Implement IDREF support (harder than it seems, since you cannot have
|
||||||
|
IDREFs to non-existent IDs)
|
||||||
|
- Implement <area> (client and server side image maps are blocking
|
||||||
|
on IDREF support)
|
||||||
|
# Frameset XHTML 1.0 and HTML 4.01 doctypes
|
||||||
|
- Figure out how to simultaneously set %CSS.Trusted and %HTML.Trusted (?)
|
||||||
|
|
||||||
|
5.2 release [Error'ed]
|
||||||
|
# Error logging for filtering/cleanup procedures
|
||||||
|
# Additional support for poorly written HTML
|
||||||
|
- Microsoft Word HTML cleaning (i.e. MsoNormal, but research essential!)
|
||||||
|
- Friendly strict handling of <address> (block -> <br>)
|
||||||
|
- XSS-attempt detection--certain errors are flagged XSS-like
|
||||||
|
- Append something to duplicate IDs so they're still usable (impl. note: the
|
||||||
|
dupe detector would also need to detect the suffix as well)
|
||||||
|
|
||||||
|
6.0 release [Beyond HTML]
|
||||||
|
# Legit token based CSS parsing (will require revamping almost every
|
||||||
|
AttrDef class). Probably will use CSSTidy
|
||||||
|
# More control over allowed CSS properties using a modularization
|
||||||
|
# IRI support (this includes IDN)
|
||||||
|
- Standardize token armor for all areas of processing
|
||||||
|
|
||||||
|
7.0 release [To XML and Beyond]
|
||||||
|
- Extended HTML capabilities based on namespacing and tag transforms (COMPLEX)
|
||||||
|
- Hooks for adding custom processors to custom namespaced tags and
|
||||||
|
attributes, offer default implementation
|
||||||
|
- Lots of documentation and samples
|
||||||
|
|
||||||
|
Ongoing
|
||||||
|
- More refactoring to take advantage of PHP5's facilities
|
||||||
|
- Refactor unit tests into lots of test methods
|
||||||
|
- Plugins for major CMSes (COMPLEX)
|
||||||
|
- phpBB
|
||||||
|
- Also, a FAQ for extension writers with HTML Purifier
|
||||||
|
|
||||||
|
AutoFormat
|
||||||
|
- Smileys
|
||||||
|
- Syntax highlighting (with GeSHi) with <pre> and possibly <?php
|
||||||
|
- Look at http://drupal.org/project/Modules/category/63 for ideas
|
||||||
|
|
||||||
|
Neat feature related
|
||||||
|
! Support exporting configuration, so users can easily tweak settings
|
||||||
|
in the demo, and then copy-paste into their own setup
|
||||||
|
- Advanced URI filtering schemes (see docs/proposal-new-directives.txt)
|
||||||
|
- Allow scoped="scoped" attribute in <style> tags; may be troublesome
|
||||||
|
because regular CSS has no way of uniquely identifying nodes, so we'd
|
||||||
|
have to generate IDs
|
||||||
|
- Explain how to use HTML Purifier in non-PHP languages / create
|
||||||
|
a simple command line stub (or complicated?)
|
||||||
|
- Fixes for Firefox's inability to handle COL alignment props (Bug 915)
|
||||||
|
- Automatically add non-breaking spaces to empty table cells when
|
||||||
|
empty-cells:show is applied to have compatibility with Internet Explorer
|
||||||
|
- Table of Contents generation (XHTML Compiler might be reusable). May also
|
||||||
|
be out-of-band information.
|
||||||
|
- Full set of color keywords. Also, a way to add onto them without
|
||||||
|
finalizing the configuration object.
|
||||||
|
- Write a var_export and memcached DefinitionCache - Denis
|
||||||
|
- Built-in support for target="_blank" on all external links
|
||||||
|
- Convert RTL/LTR override characters to <bdo> tags, or vice versa on demand.
|
||||||
|
Also, enable disabling of directionality
|
||||||
|
? Externalize inline CSS to promote clean HTML, proposed by Sander Tekelenburg
|
||||||
|
? Remove redundant tags, ex. <u><u>Underlined</u></u>. Implementation notes:
|
||||||
|
1. Analyzing which tags to remove duplicants
|
||||||
|
2. Ensure attributes are merged into the parent tag
|
||||||
|
3. Extend the tag exclusion system to specify whether or not the
|
||||||
|
contents should be dropped or not (currently, there's code that could do
|
||||||
|
something like this if it didn't drop the inner text too.)
|
||||||
|
? Make AutoParagraph also support paragraph-izing double <br> tags, and not
|
||||||
|
just double newlines. This is kind of tough to do in the current framework,
|
||||||
|
though, and might be reasonably approximated by search replacing double <br>s
|
||||||
|
with newlines before running it through HTML Purifier.
|
||||||
|
|
||||||
|
Maintenance related (slightly boring)
|
||||||
|
# CHMOD install script for PEAR installs
|
||||||
|
! Factor out command line parser into its own class, and unit test it
|
||||||
|
- Reduce size of internal data-structures (esp. HTMLDefinition)
|
||||||
|
- Allow merging configurations. Thus,
|
||||||
|
a -> b -> default
|
||||||
|
c -> d -> default
|
||||||
|
becomes
|
||||||
|
a -> b -> c -> d -> default
|
||||||
|
Maybe allow more fine-grained tuning of this behavior. Alternatively,
|
||||||
|
encourage people to use short plist depths before building them up.
|
||||||
|
- Time PHPT tests
|
||||||
|
|
||||||
|
ChildDef related (very boring)
|
||||||
|
- Abstract ChildDef_BlockQuote to work with all elements that only
|
||||||
|
allow blocks in them, required or optional
|
||||||
|
- Implement lenient <ruby> child validation
|
||||||
|
|
||||||
|
Wontfix
|
||||||
|
- Non-lossy smart alternate character encoding transformations (unless
|
||||||
|
patch provided)
|
||||||
|
- Pretty-printing HTML: users can use Tidy on the output on entire page
|
||||||
|
- Native content compression, whitespace stripping: use gzip if this is
|
||||||
|
really important
|
||||||
|
|
||||||
|
vim: et sw=4 sts=4
|
1
libraries/htmlpurifier-4.14.0/VERSION
Normal file
|
@ -0,0 +1 @@
|
||||||
|
4.14.0
|
4
libraries/htmlpurifier-4.14.0/WHATSNEW
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
HTML Purifier 4.14.x is a maintenance release which improves
|
||||||
|
PHP7 and PHP8 compatibility. There are also some minor new features
|
||||||
|
(background-size) and some miscellaneous fixes to remove notices
|
||||||
|
from recent versions of PHP.
|
20
libraries/htmlpurifier-4.14.0/WYSIWYG
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
|
||||||
|
WYSIWYG - What You See Is What You Get
|
||||||
|
HTML Purifier: A Pretty Good Fit for TinyMCE and FCKeditor
|
||||||
|
|
||||||
|
Javascript-based WYSIWYG editors, simply stated, are quite amazing. But I've
|
||||||
|
always been wary about using them due to security issues: they handle the
|
||||||
|
client-side magic, but once you've been served a piping hot load of unfiltered
|
||||||
|
HTML, what should be done then? In some situations, you can serve it uncleaned,
|
||||||
|
since you only offer these facilities to trusted(?) authors.
|
||||||
|
|
||||||
|
Unfortunantely, for blog comments and anonymous input, BBCode, Textile and
|
||||||
|
other markup languages still reign supreme. Put simply: filtering HTML is
|
||||||
|
hard work, and these WYSIWYG authors don't offer anything to alleviate that
|
||||||
|
trouble. Therein lies the solution:
|
||||||
|
|
||||||
|
HTML Purifier is perfect for filtering pure-HTML input from WYSIWYG editors.
|
||||||
|
|
||||||
|
Enough said.
|
||||||
|
|
||||||
|
vim: et sw=4 sts=4
|
BIN
libraries/htmlpurifier-4.14.0/art/1000passes.png
Normal file
After Width: | Height: | Size: 3.4 KiB |
BIN
libraries/htmlpurifier-4.14.0/art/100cases.png
Normal file
After Width: | Height: | Size: 2.7 KiB |
BIN
libraries/htmlpurifier-4.14.0/art/favicon.ico
Normal file
After Width: | Height: | Size: 9.1 KiB |
BIN
libraries/htmlpurifier-4.14.0/art/icon-16x16.png
Normal file
After Width: | Height: | Size: 382 B |
101
libraries/htmlpurifier-4.14.0/art/icon-16x16.svg
Normal file
|
@ -0,0 +1,101 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://web.resource.org/cc/"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
width="16.000000px"
|
||||||
|
height="16.000000px"
|
||||||
|
id="svg2"
|
||||||
|
sodipodi:version="0.32"
|
||||||
|
inkscape:version="0.42.2"
|
||||||
|
sodipodi:docbase="C:\DOCUME~1\Edward\MYDOCU~1\MYWEBS~1\HTMLPU~1\art"
|
||||||
|
sodipodi:docname="ICON-1~1.SVG"
|
||||||
|
inkscape:export-filename="C:\Documents and Settings\Edward\My Documents\My Webs\htmlpurifier\art\icon.png"
|
||||||
|
inkscape:export-xdpi="90.000000"
|
||||||
|
inkscape:export-ydpi="90.000000">
|
||||||
|
<defs
|
||||||
|
id="defs4">
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient5003">
|
||||||
|
<stop
|
||||||
|
style="stop-color:#537ddd;stop-opacity:1.0000000;"
|
||||||
|
offset="0.00000000"
|
||||||
|
id="stop5005" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#000000;stop-opacity:1.0000000;"
|
||||||
|
offset="1.0000000"
|
||||||
|
id="stop5007" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient4993">
|
||||||
|
<stop
|
||||||
|
style="stop-color:#183577;stop-opacity:1.0000000;"
|
||||||
|
offset="0.00000000"
|
||||||
|
id="stop4995" />
|
||||||
|
<stop
|
||||||
|
id="stop5001"
|
||||||
|
offset="0.58142859"
|
||||||
|
style="stop-color:#8b9fbb;stop-opacity:1.0000000;" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ffffff;stop-opacity:1.0000000;"
|
||||||
|
offset="1.0000000"
|
||||||
|
id="stop4997" />
|
||||||
|
</linearGradient>
|
||||||
|
</defs>
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="base"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:zoom="23.255956"
|
||||||
|
inkscape:cx="3.2274095"
|
||||||
|
inkscape:cy="4.1487021"
|
||||||
|
inkscape:document-units="px"
|
||||||
|
inkscape:current-layer="layer1"
|
||||||
|
showgrid="false"
|
||||||
|
showguides="false"
|
||||||
|
gridspacingy="0.50000000cm"
|
||||||
|
gridspacingx="0.50000000cm"
|
||||||
|
gridoriginy="0.00000000cm"
|
||||||
|
gridoriginx="0.00000000cm"
|
||||||
|
gridtolerance="0.10000000cm"
|
||||||
|
gridempspacing="2"
|
||||||
|
inkscape:grid-points="true"
|
||||||
|
inkscape:grid-bbox="false"
|
||||||
|
inkscape:window-width="975"
|
||||||
|
inkscape:window-height="759"
|
||||||
|
inkscape:window-x="130"
|
||||||
|
inkscape:window-y="129" />
|
||||||
|
<metadata
|
||||||
|
id="metadata7">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<g
|
||||||
|
inkscape:label="Layer 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1">
|
||||||
|
<path
|
||||||
|
style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.0000004px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"
|
||||||
|
d="M 6.1949060,157.57756 L 6.1949060,157.57756 z "
|
||||||
|
id="path1319" />
|
||||||
|
<path
|
||||||
|
style="fill:#224db0;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:6.0000000;stroke-linecap:butt;stroke-linejoin:round;marker-start:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000"
|
||||||
|
d="M 0.58257145,1.2121863 C 0.63548185,3.4711463 0.61139575,5.1777365 1.0905516,7.3958765 C 1.2484712,8.3223265 2.8202544,8.4670465 3.5807376,8.5653065 C 4.0690207,8.6283965 4.0902492,8.5661465 4.0906878,9.1995265 C 4.1064337,11.195036 4.0317991,11.792303 4.0906878,13.786273 C 4.0906878,15.786203 4.0909380,15.786453 6.0908601,15.786453 C 9.0907431,15.786453 10.414747,15.786053 12.414669,15.786053 C 14.414592,15.786053 14.414842,15.785813 14.414842,13.785893 C 14.418166,10.552283 14.404522,7.8374163 14.421897,4.6040763 C 14.625008,2.9294663 14.978320,2.5231063 15.830433,1.1499263 C 15.040843,1.1499263 14.943078,1.1493063 14.129102,1.1493063 C 8.8912931,1.1493063 5.8203807,1.2121863 0.58257145,1.2121863 z M 2.0905126,2.4028663 C 2.8330809,2.4028663 3.3476197,2.4028663 4.0901879,2.4028663 C 4.0901879,4.8586963 4.0906878,4.8408265 4.0906878,7.2966665 C 3.2248799,7.2967665 2.2374444,7.5239665 2.1488437,6.3255665 C 1.8765344,4.2270765 1.8837837,4.4962263 2.0905126,2.4028663 z M 5.4346466,6.5656265 L 6.8695071,6.5656265 L 6.8696331,13.558223 L 9.8657791,11.557663 L 9.8656551,6.5656265 L 13.070633,6.5656265 L 13.070633,13.786523 C 13.070633,14.786503 13.070633,14.786503 12.070671,14.786503 L 6.4158330,14.786503 C 5.5388453,14.786503 5.4347719,14.786723 5.4347719,13.786523 L 5.4346466,6.5656265 z "
|
||||||
|
id="path1325"
|
||||||
|
sodipodi:nodetypes="ccsccsscccsccccccccccccccccc" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 4.6 KiB |
BIN
libraries/htmlpurifier-4.14.0/art/icon-32x32.png
Normal file
After Width: | Height: | Size: 615 B |
101
libraries/htmlpurifier-4.14.0/art/icon-32x32.svg
Normal file
|
@ -0,0 +1,101 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://web.resource.org/cc/"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
width="16.000000px"
|
||||||
|
height="16.000000px"
|
||||||
|
id="svg2"
|
||||||
|
sodipodi:version="0.32"
|
||||||
|
inkscape:version="0.42.2"
|
||||||
|
sodipodi:docbase="C:\DOCUME~1\Edward\MYDOCU~1\MYWEBS~1\HTMLPU~1\art"
|
||||||
|
sodipodi:docname="icon-32x32.svg"
|
||||||
|
inkscape:export-filename="C:\Documents and Settings\Edward\My Documents\My Webs\htmlpurifier\art\icon-16x16.png"
|
||||||
|
inkscape:export-xdpi="90.000000"
|
||||||
|
inkscape:export-ydpi="90.000000">
|
||||||
|
<defs
|
||||||
|
id="defs4">
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient5003">
|
||||||
|
<stop
|
||||||
|
style="stop-color:#537ddd;stop-opacity:1.0000000;"
|
||||||
|
offset="0.00000000"
|
||||||
|
id="stop5005" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#000000;stop-opacity:1.0000000;"
|
||||||
|
offset="1.0000000"
|
||||||
|
id="stop5007" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient4993">
|
||||||
|
<stop
|
||||||
|
style="stop-color:#183577;stop-opacity:1.0000000;"
|
||||||
|
offset="0.00000000"
|
||||||
|
id="stop4995" />
|
||||||
|
<stop
|
||||||
|
id="stop5001"
|
||||||
|
offset="0.58142859"
|
||||||
|
style="stop-color:#8b9fbb;stop-opacity:1.0000000;" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ffffff;stop-opacity:1.0000000;"
|
||||||
|
offset="1.0000000"
|
||||||
|
id="stop4997" />
|
||||||
|
</linearGradient>
|
||||||
|
</defs>
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="base"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:zoom="23.255956"
|
||||||
|
inkscape:cx="3.2274095"
|
||||||
|
inkscape:cy="4.1487021"
|
||||||
|
inkscape:document-units="px"
|
||||||
|
inkscape:current-layer="layer1"
|
||||||
|
showgrid="false"
|
||||||
|
showguides="false"
|
||||||
|
gridspacingy="0.50000000cm"
|
||||||
|
gridspacingx="0.50000000cm"
|
||||||
|
gridoriginy="0.00000000cm"
|
||||||
|
gridoriginx="0.00000000cm"
|
||||||
|
gridtolerance="0.10000000cm"
|
||||||
|
gridempspacing="2"
|
||||||
|
inkscape:grid-points="true"
|
||||||
|
inkscape:grid-bbox="false"
|
||||||
|
inkscape:window-width="975"
|
||||||
|
inkscape:window-height="759"
|
||||||
|
inkscape:window-x="130"
|
||||||
|
inkscape:window-y="129" />
|
||||||
|
<metadata
|
||||||
|
id="metadata7">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<g
|
||||||
|
inkscape:label="Layer 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1">
|
||||||
|
<path
|
||||||
|
style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.0000004px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"
|
||||||
|
d="M 6.1949060,157.57756 L 6.1949060,157.57756 z "
|
||||||
|
id="path1319" />
|
||||||
|
<path
|
||||||
|
style="fill:#224db0;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:6.0000000;stroke-linecap:butt;stroke-linejoin:round;marker-start:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000"
|
||||||
|
d="M 0.58257145,1.2121863 C 0.63548185,3.4711463 0.61139575,5.1777365 1.0905516,7.3958765 C 1.2484712,8.3223265 2.8202544,8.4670465 3.5807376,8.5653065 C 4.0690207,8.6283965 4.0902492,8.5661465 4.0906878,9.1995265 C 4.1064337,11.195036 4.0317991,11.792303 4.0906878,13.786273 C 4.0906878,15.786203 4.0909380,15.786453 6.0908601,15.786453 C 9.0907431,15.786453 10.414747,15.786053 12.414669,15.786053 C 14.414592,15.786053 14.414842,15.785813 14.414842,13.785893 C 14.418166,10.552283 14.404522,7.8374163 14.421897,4.6040763 C 14.625008,2.9294663 14.978320,2.5231063 15.830433,1.1499263 C 15.040843,1.1499263 14.943078,1.1493063 14.129102,1.1493063 C 8.8912931,1.1493063 5.8203807,1.2121863 0.58257145,1.2121863 z M 2.0905126,2.4028663 C 2.8330809,2.4028663 3.3476197,2.4028663 4.0901879,2.4028663 C 4.0901879,4.8586963 4.0906878,4.8408265 4.0906878,7.2966665 C 3.2248799,7.2967665 2.2374444,7.5239665 2.1488437,6.3255665 C 1.8765344,4.2270765 1.8837837,4.4962263 2.0905126,2.4028663 z M 5.0906487,6.5656265 L 6.8695071,6.5656265 L 6.8696331,13.558223 L 9.8657791,11.557663 L 9.8656551,6.5656265 L 13.414631,6.5656265 L 13.414631,13.786523 C 13.414631,14.786503 13.414631,14.786503 12.414669,14.786503 L 6.0718351,14.786503 C 5.1948474,14.786503 5.0907740,14.786723 5.0907740,13.786523 L 5.0906487,6.5656265 z "
|
||||||
|
id="path1325"
|
||||||
|
sodipodi:nodetypes="ccsccsscccsccccccccccccccccc" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 4.6 KiB |
BIN
libraries/htmlpurifier-4.14.0/art/icon-64x64.png
Normal file
After Width: | Height: | Size: 1 KiB |
BIN
libraries/htmlpurifier-4.14.0/art/logo-large.png
Normal file
After Width: | Height: | Size: 9.8 KiB |
BIN
libraries/htmlpurifier-4.14.0/art/logo.png
Normal file
After Width: | Height: | Size: 2.6 KiB |
119
libraries/htmlpurifier-4.14.0/art/logo.svg
Normal file
|
@ -0,0 +1,119 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://web.resource.org/cc/"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
|
xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
width="82.000000mm"
|
||||||
|
height="82.000000mm"
|
||||||
|
id="svg2"
|
||||||
|
sodipodi:version="0.32"
|
||||||
|
inkscape:version="0.42.2"
|
||||||
|
sodipodi:docbase="C:\Documents and Settings\Edward\My Documents\My Webs\htmlpurifier\art"
|
||||||
|
sodipodi:docname="logo-bold-large.svg">
|
||||||
|
<defs
|
||||||
|
id="defs4">
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient5003">
|
||||||
|
<stop
|
||||||
|
style="stop-color:#537ddd;stop-opacity:1.0000000;"
|
||||||
|
offset="0.00000000"
|
||||||
|
id="stop5005" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#000000;stop-opacity:1.0000000;"
|
||||||
|
offset="1.0000000"
|
||||||
|
id="stop5007" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient4993">
|
||||||
|
<stop
|
||||||
|
style="stop-color:#183577;stop-opacity:1.0000000;"
|
||||||
|
offset="0.00000000"
|
||||||
|
id="stop4995" />
|
||||||
|
<stop
|
||||||
|
id="stop5001"
|
||||||
|
offset="0.58142859"
|
||||||
|
style="stop-color:#8b9fbb;stop-opacity:1.0000000;" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ffffff;stop-opacity:1.0000000;"
|
||||||
|
offset="1.0000000"
|
||||||
|
id="stop4997" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient4993"
|
||||||
|
id="linearGradient4999"
|
||||||
|
x1="283.46457"
|
||||||
|
y1="141.72675"
|
||||||
|
x2="11.135608"
|
||||||
|
y2="141.72675"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="translate(2.000000,4.000000)" />
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient5003"
|
||||||
|
id="linearGradient5009"
|
||||||
|
x1="2.9621078"
|
||||||
|
y1="141.72675"
|
||||||
|
x2="283.46457"
|
||||||
|
y2="141.72675"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="translate(2.000000,4.000000)" />
|
||||||
|
</defs>
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="base"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:zoom="1.0000000"
|
||||||
|
inkscape:cx="100.23897"
|
||||||
|
inkscape:cy="178.03397"
|
||||||
|
inkscape:document-units="px"
|
||||||
|
inkscape:current-layer="layer1"
|
||||||
|
showgrid="false"
|
||||||
|
showguides="false"
|
||||||
|
gridspacingy="0.50000000cm"
|
||||||
|
gridspacingx="0.50000000cm"
|
||||||
|
gridoriginy="0.00000000cm"
|
||||||
|
gridoriginx="0.00000000cm"
|
||||||
|
gridtolerance="0.10000000cm"
|
||||||
|
gridempspacing="2"
|
||||||
|
inkscape:grid-points="true"
|
||||||
|
inkscape:grid-bbox="false"
|
||||||
|
inkscape:window-width="975"
|
||||||
|
inkscape:window-height="759"
|
||||||
|
inkscape:window-x="139"
|
||||||
|
inkscape:window-y="88" />
|
||||||
|
<metadata
|
||||||
|
id="metadata7">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<g
|
||||||
|
inkscape:label="Layer 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1">
|
||||||
|
<path
|
||||||
|
style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"
|
||||||
|
d="M 19.726130,9.6194746 L 19.726130,9.6194746 z "
|
||||||
|
id="path1319" />
|
||||||
|
<path
|
||||||
|
style="fill:url(#linearGradient4999);fill-opacity:1.0000000;fill-rule:evenodd;stroke:url(#linearGradient5009);stroke-width:10.000000;stroke-linecap:butt;stroke-linejoin:round;marker-start:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000"
|
||||||
|
d="M 4.9621078,5.1031050 C 5.8995325,45.125639 5.4727947,85.709799 13.962107,125.00936 C 16.760003,141.42321 35.988453,143.98728 49.462107,145.72811 C 58.113128,146.84585 67.112800,145.74318 67.120572,156.96457 C 67.399545,192.31975 66.077225,216.69948 67.120572,252.02707 C 67.120572,287.46015 67.125004,287.46457 102.55807,287.46457 C 155.70768,287.46457 179.16536,287.45768 214.59843,287.45768 C 250.03151,287.45768 250.03593,287.45325 250.03593,252.02018 C 250.09483,194.72943 249.85310,122.48395 250.16093,65.197704 C 253.75952,35.528496 270.36749,28.328596 285.46457,4.0000020 C 271.47521,4.0000020 259.39483,3.9889299 244.97343,3.9889297 C 152.17399,3.9889293 97.761552,5.1031060 4.9621078,5.1031050 z M 31.678643,26.198667 C 44.834892,26.198667 53.955464,26.198667 67.111714,26.198667 C 67.111713,69.709084 67.120572,79.741005 67.120572,123.25143 C 51.780853,123.25317 34.281868,127.27859 32.712107,106.04622 C 27.887543,68.866763 28.015982,63.286945 31.678643,26.198667 z M 84.837103,110.29921 L 102.55585,110.29921 L 102.55807,247.98656 L 155.64148,212.54217 L 155.63926,110.29921 L 232.31496,110.29921 L 232.31496,252.03150 C 232.31496,269.74803 232.31496,269.74803 214.59843,269.74803 L 102.22100,269.74803 C 86.683215,269.74803 84.839322,269.75212 84.839322,252.03150 L 84.837103,110.29921 z "
|
||||||
|
id="path1325"
|
||||||
|
sodipodi:nodetypes="ccsccsscccsccccccccccccccccc" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 5.2 KiB |
BIN
libraries/htmlpurifier-4.14.0/art/powered.png
Normal file
After Width: | Height: | Size: 297 B |
7
libraries/htmlpurifier-4.14.0/benchmarks/.htaccess
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
<IfModule mod_authz_core.c>
|
||||||
|
Require all denied
|
||||||
|
</IfModule>
|
||||||
|
|
||||||
|
<IfModule !mod_authz_core.c>
|
||||||
|
Deny from all
|
||||||
|
</ifModule>
|
16
libraries/htmlpurifier-4.14.0/benchmarks/ConfigSchema.php
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
chdir(dirname(__FILE__));
|
||||||
|
|
||||||
|
//require_once '../library/HTMLPurifier.path.php';
|
||||||
|
shell_exec('php ../maintenance/generate-schema-cache.php');
|
||||||
|
require_once '../library/HTMLPurifier.path.php';
|
||||||
|
require_once 'HTMLPurifier.includes.php';
|
||||||
|
|
||||||
|
$begin = xdebug_memory_usage();
|
||||||
|
|
||||||
|
$schema = HTMLPurifier_ConfigSchema::makeFromSerial();
|
||||||
|
|
||||||
|
echo xdebug_memory_usage() - $begin;
|
||||||
|
|
||||||
|
// vim: et sw=4 sts=4
|
161
libraries/htmlpurifier-4.14.0/benchmarks/Lexer.php
Normal file
|
@ -0,0 +1,161 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
require_once '../library/HTMLPurifier.auto.php';
|
||||||
|
@include_once '../test-settings.php';
|
||||||
|
|
||||||
|
// PEAR
|
||||||
|
require_once 'Benchmark/Timer.php'; // to do the timing
|
||||||
|
require_once 'Text/Password.php'; // for generating random input
|
||||||
|
|
||||||
|
$LEXERS = array();
|
||||||
|
$RUNS = isset($GLOBALS['HTMLPurifierTest']['Runs'])
|
||||||
|
? $GLOBALS['HTMLPurifierTest']['Runs'] : 2;
|
||||||
|
|
||||||
|
require_once 'HTMLPurifier/Lexer/DirectLex.php';
|
||||||
|
$LEXERS['DirectLex'] = new HTMLPurifier_Lexer_DirectLex();
|
||||||
|
|
||||||
|
if (version_compare(PHP_VERSION, '5', '>=')) {
|
||||||
|
require_once 'HTMLPurifier/Lexer/DOMLex.php';
|
||||||
|
$LEXERS['DOMLex'] = new HTMLPurifier_Lexer_DOMLex();
|
||||||
|
}
|
||||||
|
|
||||||
|
// custom class to aid unit testing
|
||||||
|
class RowTimer extends Benchmark_Timer
|
||||||
|
{
|
||||||
|
|
||||||
|
public $name;
|
||||||
|
|
||||||
|
public function __construct($name, $auto = false)
|
||||||
|
{
|
||||||
|
$this->name = htmlentities($name);
|
||||||
|
$this->Benchmark_Timer($auto);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getOutput()
|
||||||
|
{
|
||||||
|
$total = $this->TimeElapsed();
|
||||||
|
$result = $this->getProfiling();
|
||||||
|
$dashes = '';
|
||||||
|
|
||||||
|
$out = '<tr>';
|
||||||
|
|
||||||
|
$out .= "<td>{$this->name}</td>";
|
||||||
|
|
||||||
|
$standard = false;
|
||||||
|
|
||||||
|
foreach ($result as $k => $v) {
|
||||||
|
if ($v['name'] == 'Start' || $v['name'] == 'Stop') continue;
|
||||||
|
|
||||||
|
//$perc = (($v['diff'] * 100) / $total);
|
||||||
|
//$tperc = (($v['total'] * 100) / $total);
|
||||||
|
|
||||||
|
//$out .= '<td align="right">' . $v['diff'] . '</td>';
|
||||||
|
|
||||||
|
if ($standard == false) $standard = $v['diff'];
|
||||||
|
|
||||||
|
$perc = $v['diff'] * 100 / $standard;
|
||||||
|
$bad_run = ($v['diff'] < 0);
|
||||||
|
|
||||||
|
$out .= '<td align="right"'.
|
||||||
|
($bad_run ? ' style="color:#AAA;"' : '').
|
||||||
|
'>' . number_format($perc, 2, '.', '') .
|
||||||
|
'%</td><td>'.number_format($v['diff'],4,'.','').'</td>';
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
$out .= '</tr>';
|
||||||
|
|
||||||
|
return $out;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function print_lexers()
|
||||||
|
{
|
||||||
|
global $LEXERS;
|
||||||
|
$first = true;
|
||||||
|
foreach ($LEXERS as $key => $value) {
|
||||||
|
if (!$first) echo ' / ';
|
||||||
|
echo htmlspecialchars($key);
|
||||||
|
$first = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function do_benchmark($name, $document)
|
||||||
|
{
|
||||||
|
global $LEXERS, $RUNS;
|
||||||
|
|
||||||
|
$config = HTMLPurifier_Config::createDefault();
|
||||||
|
$context = new HTMLPurifier_Context();
|
||||||
|
|
||||||
|
$timer = new RowTimer($name);
|
||||||
|
$timer->start();
|
||||||
|
|
||||||
|
foreach($LEXERS as $key => $lexer) {
|
||||||
|
for ($i=0; $i<$RUNS; $i++) $tokens = $lexer->tokenizeHTML($document, $config, $context);
|
||||||
|
$timer->setMarker($key);
|
||||||
|
}
|
||||||
|
|
||||||
|
$timer->stop();
|
||||||
|
$timer->display();
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>Benchmark: <?php print_lexers(); ?></title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>Benchmark: <?php print_lexers(); ?></h1>
|
||||||
|
<table border="1">
|
||||||
|
<tr><th>Case</th><?php
|
||||||
|
foreach ($LEXERS as $key => $value) {
|
||||||
|
echo '<th colspan="2">' . htmlspecialchars($key) . '</th>';
|
||||||
|
}
|
||||||
|
?></tr>
|
||||||
|
<?php
|
||||||
|
|
||||||
|
// ************************************************************************** //
|
||||||
|
|
||||||
|
// sample of html pages
|
||||||
|
|
||||||
|
$dir = 'samples/Lexer';
|
||||||
|
$dh = opendir($dir);
|
||||||
|
while (false !== ($filename = readdir($dh))) {
|
||||||
|
|
||||||
|
if (strpos($filename, '.html') !== strlen($filename) - 5) continue;
|
||||||
|
$document = file_get_contents($dir . '/' . $filename);
|
||||||
|
do_benchmark("File: $filename", $document);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// crashers, caused infinite loops before
|
||||||
|
|
||||||
|
$snippets = array();
|
||||||
|
$snippets[] = '<a href="foo>';
|
||||||
|
$snippets[] = '<a "=>';
|
||||||
|
|
||||||
|
foreach ($snippets as $snippet) {
|
||||||
|
do_benchmark($snippet, $snippet);
|
||||||
|
}
|
||||||
|
|
||||||
|
// random input
|
||||||
|
|
||||||
|
$random = Text_Password::create(80, 'unpronounceable', 'qwerty <>="\'');
|
||||||
|
|
||||||
|
do_benchmark('Random input', $random);
|
||||||
|
|
||||||
|
?></table>
|
||||||
|
|
||||||
|
<?php
|
||||||
|
|
||||||
|
echo '<div>Random input was: ' .
|
||||||
|
'<span colspan="4" style="font-family:monospace;">' .
|
||||||
|
htmlspecialchars($random) . '</span></div>';
|
||||||
|
|
||||||
|
?>
|
||||||
|
|
||||||
|
|
||||||
|
</body></html>
|
||||||
|
<?php
|
||||||
|
|
||||||
|
// vim: et sw=4 sts=4
|
21
libraries/htmlpurifier-4.14.0/benchmarks/Trace.php
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
ini_set('xdebug.trace_format', 1);
|
||||||
|
ini_set('xdebug.show_mem_delta', true);
|
||||||
|
|
||||||
|
if (file_exists('Trace.xt')) {
|
||||||
|
echo "Previous trace Trace.xt must be removed before this script can be run.";
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
xdebug_start_trace(dirname(__FILE__) . '/Trace');
|
||||||
|
require_once '../library/HTMLPurifier.auto.php';
|
||||||
|
|
||||||
|
$purifier = new HTMLPurifier();
|
||||||
|
|
||||||
|
$data = $purifier->purify(file_get_contents('samples/Lexer/4.html'));
|
||||||
|
xdebug_stop_trace();
|
||||||
|
|
||||||
|
echo "Trace finished.";
|
||||||
|
|
||||||
|
// vim: et sw=4 sts=4
|
|
@ -0,0 +1,56 @@
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>Main Page - Huaxia Taiji Club</title>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
|
<link rel="stylesheet" type="text/css" media="screen, projection" href="/screen.css" />
|
||||||
|
<link rel="stylesheet" type="text/css" media="print" href="/print.css" />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<div id="translation"><a href="/ch/Main_Page">中文</a></div>
|
||||||
|
|
||||||
|
<div id="heading"><a href="/en/Main_Page" title="English Main Page">Huaxia Taiji Club</a>
|
||||||
|
<a class="heading_ch" href="/ch/Main_Page" title="中文主页">华夏太极俱乐部</a></div>
|
||||||
|
<ul id="menu">
|
||||||
|
<li><a href="/en/Main_Page" class="active">Main Page</a></li><li><a href="/en/About">About</a></li><li><a href="/en/News">News</a></li><li><a href="/en/Events">Events</a></li><li><a href="/en/Digest">Digest</a></li><li><a href="/en/Taiji_and_I">Taiji and I</a></li><li><a href="/en/Downloads">Downloads</a></li><li><a href="/en/Registration">Registration</a></li><li><a href="/en/Contact">Contact</a></li> <li><a href="http://www.taijiclub.org/gallery2/main.php">Gallery</a></li>
|
||||||
|
|
||||||
|
<li><a href="http://www.taijiclub.org/forums/index.php">Forums</a></li>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
<div id="content">
|
||||||
|
<h1 id="title">Main Page</h1><h2>Taiji (Tai Chi) </h2>
|
||||||
|
|
||||||
|
<div id="sidebar">
|
||||||
|
<h3>Recent News</h3>
|
||||||
|
<ul>
|
||||||
|
<li>Zou Xiaojun was elected as the new club vice president </li>
|
||||||
|
|
||||||
|
<li>HX Edison Taiji Club <a href="http://www.taijiclub.org/downloads/Taiji_club_regulation_.pdf">by-law</a> effective 3/28/2006</li>
|
||||||
|
<li>A new email account for our club: HXEdisontaijiclub@yahoo.com</li>
|
||||||
|
|
||||||
|
<li>Workshop conducted by <a href="http://www.taijiclub.org/ch/Digest/LiDeyin">?????</a> Li Deyin is set on June 4, 2006 at Clarion Hotel in Edison from 9:30am-12pm; <a href="http://www.taijiclub.org/en/Registration">Registration</a></li>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<p><i>Taiji</i> is an ancient Chinese tradition of movement systems that is associated with philosophy, physiology, psychology, geometry and dynamics. It is the slowest form of martial arts and is meant to improve the internal spirit. It is soothing to the soul and extremely invigorating. </p>
|
||||||
|
|
||||||
|
<p>The founder of Taiji was Zhang Sanfeng (Chang San-feng), who was a monk of the Wu Dang (Wu Tang) Monastery and lived in the period from 1391 to 1459. His exercises stressed suppleness and elasticity as opposed to the hardness and force of other martial art styles. Several centuries old, Taiji was originally developed as a form of self-defense, emphasizing strength, balance, flexibility and speed. Tai Chi also differs from other martial arts in that it is based on the Taoist religion and aims to avoid aggressive forces. </p>
|
||||||
|
|
||||||
|
<p>Modern Taiji includes many forms — Quan, Sword and Fan. Impacting the mind and body of the practitioners, Taiji is practiced as a meditative exercise made up of a series of forms, or choreographed motions, requiring slow, gentle movement of the arms, legs and torso. Taiji practitioners learn to center their attention on their breathing and body movements so that the exercise strengthens their overall mental and physical awareness. In a sense, Taiji is similar to yoga in that it is also a form of moving meditation, with the goal of achieving stillness through the motion and awareness of breath. To perform Taiji, practitioners have to empty their mind of thoughts and worries in order to achieve harmony. It is a great aid for reducing stress and improving the quality of life. </p>
|
||||||
|
|
||||||
|
<p>In China and in communities all over the world, Taiji is practiced by young and old in the early morning hours. It's a great way to bring a new and fresh day!</p>
|
||||||
|
|
||||||
|
<p>Check out our <a href="/gallery2/main.php">gallery</a>.</p>
|
||||||
|
|
||||||
|
<div style="text-align:center;"><a href="http://www.taijiclub.org/gallery2/v/2006/group1b.jpg.html?g2_imageViewsIndex=1"><img src="/gallery2/d/1836-2/group1b.jpg" /></a></div>
|
||||||
|
|
||||||
|
<div style="text-align:center;">Click on photo to see HR version</div></div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
||||||
|
<!-- vim: et sw=4 sts=4
|
||||||
|
-->
|
|
@ -0,0 +1,20 @@
|
||||||
|
<html><head><meta http-equiv="content-type" content="text/html; charset=UTF-8"><title>Google</title><style><!--
|
||||||
|
body,td,a,p,.h{font-family:arial,sans-serif;}
|
||||||
|
.h{font-size: 20px;}
|
||||||
|
.q{color:#0000cc;}
|
||||||
|
//-->
|
||||||
|
</style>
|
||||||
|
<script>
|
||||||
|
<!--
|
||||||
|
function sf(){document.f.q.focus();}
|
||||||
|
function rwt(el,ct,cd,sg){var e = window.encodeURIComponent ? encodeURIComponent : escape;el.href="/url?sa=t&ct="+e(ct)+"&cd="+e(cd)+"&url="+e(el.href).replace(/\+/g,"%2B")+"&ei=fHNBRJDEG4HSaLONmIoP"+sg;el.onmousedown="";return true;}
|
||||||
|
// -->
|
||||||
|
</script>
|
||||||
|
</head><body bgcolor=#ffffff text=#000000 link=#0000cc vlink=#551a8b alink=#ff0000 onLoad=sf() topmargin=3 marginheight=3><center><table border=0 cellspacing=0 cellpadding=0 width=100%><tr><td align=right nowrap><font size=-1><b>edwardzyang@gmail.com</b> | <a href="/url?sa=p&pref=ig&pval=2&q=http://www.google.com/ig%3Fhl%3Den" onmousedown="return rwt(this,'pro','hppphou:def','&sig2=hDbTpsWIp9YG37a23n6krQ')">Personalized Home</a> | <a href="/searchhistory/?hl=en">Search History</a> | <a href="https://www.google.com/accounts/ManageAccount">My Account</a> | <a href="http://www.google.com/accounts/Logout?continue=http://www.google.com/">Sign out</a></font></td></tr><tr height=4><td><img alt="" width=1 height=1></td></tr></table><img src="/intl/en/images/logo.gif" width=276 height=110 alt="Google"><br><br>
|
||||||
|
<form action=/search name=f><script><!--
|
||||||
|
function qs(el) {if (window.RegExp && window.encodeURIComponent) {var ue=el.href;var qe=encodeURIComponent(document.f.q.value);if(ue.indexOf("q=")!=-1){el.href=ue.replace(new RegExp("q=[^&$]*"),"q="+qe);}else{el.href=ue+"&q="+qe;}}return 1;}
|
||||||
|
// -->
|
||||||
|
</script><table border=0 cellspacing=0 cellpadding=4><tr><td nowrap><font size=-1><b>Web</b> <a id=1a class=q href="/imghp?hl=en&tab=wi" onClick="return qs(this);">Images</a> <a id=2a class=q href="http://groups.google.com/grphp?hl=en&tab=wg" onClick="return qs(this);">Groups</a> <a id=4a class=q href="http://news.google.com/nwshp?hl=en&tab=wn" onClick="return qs(this);">News</a> <a id=5a class=q href="http://froogle.google.com/frghp?hl=en&tab=wf" onClick="return qs(this);">Froogle</a> <a id=8a class=q href="/lochp?hl=en&tab=wl" onClick="return qs(this);">Local</a> <b><a href="/intl/en/options/" class=q>more »</a></b></font></td></tr></table><table cellspacing=0 cellpadding=0><tr><td width=25%> </td><td align=center><input type=hidden name=hl value=en><input maxlength=2048 size=55 name=q value="" title="Google Search"><br><input type=submit value="Google Search" name=btnG><input type=submit value="I'm Feeling Lucky" name=btnI></td><td valign=top nowrap width=25%><font size=-2> <a href=/advanced_search?hl=en>Advanced Search</a><br> <a href=/preferences?hl=en>Preferences</a><br> <a href=/language_tools?hl=en>Language Tools</a></font></td></tr></table></form><br><br><font size=-1><a href="/ads/">Advertising Programs</a> - <a href=/services/>Business Solutions</a> - <a href=/about.html>About Google</a></font><p><font size=-2>©2006 Google</font></p></center></body></html>
|
||||||
|
|
||||||
|
<!-- vim: et sw=4 sts=4
|
||||||
|
-->
|
131
libraries/htmlpurifier-4.14.0/benchmarks/samples/Lexer/3.html
Normal file
|
@ -0,0 +1,131 @@
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>Anime Digi-Lib Index</title>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<div id="tb">
|
||||||
|
|
||||||
|
<form name="lycos_search" method="get" target="_new" style="margin: 0px"
|
||||||
|
action="http://r.hotbot.com/r/memberpgs_lycos_searchbox_af/http://www.angelfire.lycos.com/cgi-bin/search/pursuit">
|
||||||
|
|
||||||
|
<table id="tbtable" cellpadding="0" cellspacing="0" border="0" width="100%" style="border: 1px solid black;">
|
||||||
|
<tr style="background-color: #dcf7ff">
|
||||||
|
<td colspan="3">
|
||||||
|
<table cellpadding="0" cellspacing="0" border="0">
|
||||||
|
<tr>
|
||||||
|
<td> Search:</td>
|
||||||
|
|
||||||
|
<td><input type="radio" name="cat" value="lycos" checked></td>
|
||||||
|
<td nowrap="nowrap">The Web</td>
|
||||||
|
<td><input type="radio" name="cat" value="angelfire"></td>
|
||||||
|
<td nowrap="nowrap">Angelfire</td>
|
||||||
|
<td nowrap="nowrap"> <img src="http://af.lygo.com/d/toolbar/planeticon.gif"></td><td nowrap="nowrap"> <a href="http://r.lycos.com/r/tlbr_planet/http://planet.lycos.com" target="_new">Planet</a></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<td nowrap="nowrap"><a href="http://lt.angelfire.com/af_toolbar/edit/_h_/www.angelfire.lycos.com/build/index.tmpl" target="_top">
|
||||||
|
<span id="build">Edit your Site</span></a> </td>
|
||||||
|
|
||||||
|
<td><img src="http://af.lygo.com/d/toolbar/dir.gif" alt="show site directory" border="0" height="10" hspace="3" width="8"></td>
|
||||||
|
<td nowrap="nowrap"><a href="http://lt.angelfire.com/af_toolbar/browse/_h_/www.angelfire.lycos.com/directory/index.tmpl" target="_top">Browse Sites</a> </td>
|
||||||
|
<td><a href="http://lt.angelfire.com/af_toolbar/angelfire/_h_/www.angelfire.lycos.com" target="_top"><img src="http://af.lygo.com/d/toolbar/aflogo_top.gif" alt="hosted by angelfire" border="0" height="26" width="143"></a></td>
|
||||||
|
</tr>
|
||||||
|
<tr style="background-color: #dcf7ff">
|
||||||
|
<td nowrap="nowrap" valign="middle"> <input size="30" style="font-size: 10px; background-color: #fff;" type="text" name="query" id="searchbox"></td>
|
||||||
|
|
||||||
|
<td style="background: #fff url(http://af.lygo.com/d/toolbar/bg.gif) repeat-x; text-align: center;" colspan="3" align="center">
|
||||||
|
<a href="http://clk.atdmt.com/VON/go/lycsnvon0710000019von/direct/01/"><img src="/sys/free_logo_xxxx_157x20.gif" height="20" width="157" border="0" alt="Vonage"></a><img src="http://view.atdmt.com/VON/view/lycsnvon0710000019von/direct/01/"></td>
|
||||||
|
|
||||||
|
<span style="font-size: 11px;">
|
||||||
|
<span style="color:#00f; font-weight:bold;">«</span>
|
||||||
|
<span id="top100">
|
||||||
|
<a href="javascript:void top100('prev')" target="_top">Previous</a> |
|
||||||
|
<a href="http://lt.angelfire.com/af_toolbar/top100/_h_/www.angelfire.lycos.com/cgi-bin/top100/pagelist?start=1" target="_top">Top 100</a> |
|
||||||
|
<a href="javascript:void top100('next')" target="_top">Next</a>
|
||||||
|
|
||||||
|
</span>
|
||||||
|
<span style="color: #00f; font-weight: bold;">»</span>
|
||||||
|
</span>
|
||||||
|
</td>
|
||||||
|
<td valign="top" style="background: #fff url(http://af.lygo.com/d/toolbar/bg.gif) repeat-x;"><a href="http://lt.angelfire.com/af_toolbar/angelfire/_h_/www.angelfire.lycos.com" target="_top"><img src="http://af.lygo.com/d/toolbar/aflogo_bot.gif" alt="hosted by angelfire" border="0" height="22" width="143"></a></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<table border="0" cellpadding="0" cellspacing="0" width="728"><tr><td>
|
||||||
|
<script type="text/javascript">
|
||||||
|
if (objAdMgr.isSlotAvailable("leaderboard")) {
|
||||||
|
objAdMgr.renderSlot("leaderboard")
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<noscript>
|
||||||
|
<a href="http://network.realmedia.com/RealMedia/ads/click_nx.ads/lycosangelfire/ros/728x90/wp/ss/a/491169@Top1?x"><img border="0" src="http://network.realmedia.com/RealMedia/ads/adstream_nx.ads/lycosangelfire/ros/728x90/wp/ss/a/491169@Top1" alt="leaderboard ad" /></a>
|
||||||
|
</noscript>
|
||||||
|
|
||||||
|
</td></tr>
|
||||||
|
</table>
|
||||||
|
<table width="86%" border="0" cellspacing="0" cellpadding="2">
|
||||||
|
<tr>
|
||||||
|
<td height="388" width="19%" bgcolor="#FFCCFF" valign="top">
|
||||||
|
<p>May 1, 2000</p>
|
||||||
|
<p><b>Pop Culture</b> </p>
|
||||||
|
<p>by. H. Finkelstein</p>
|
||||||
|
|
||||||
|
</td>
|
||||||
|
<td height="388" width="52%" valign="top">
|
||||||
|
<p>Welcome to the <b>Anime Digi-Lib</b>, a virtual index to anime on the
|
||||||
|
internet. This site strives to house a comprehensive index to both personal
|
||||||
|
and commercial websites and provides reviews to these sites. We hope to
|
||||||
|
be a gateway for people who've never imagined they'd ever be interested
|
||||||
|
in Japanese Animation. </p>
|
||||||
|
<table width="99%" border="1" cellspacing="0" cellpadding="2" height="320" name="Searchnservices">
|
||||||
|
<tr>
|
||||||
|
<td height="263" valign="top" width="58%">
|
||||||
|
<p> </p>
|
||||||
|
<p> </p>
|
||||||
|
|
||||||
|
<FORM ACTION="/cgi-bin/script_library/site_search/search" METHOD="GET">
|
||||||
|
|
||||||
|
<table border="0" cellpadding="2" cellspacing="0">
|
||||||
|
<tr>
|
||||||
|
<td colspan="2">Search term: <INPUT NAME="search_term"><br></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td colspan="2" align="center">Case-sensitive -
|
||||||
|
<INPUT TYPE="checkbox" NAME="case_sensitive">yes<br></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="right"><INPUT TYPE="radio" NAME="search_type" VALUE="exact" CHECKED>exact</td>
|
||||||
|
<td><INPUT TYPE="radio" NAME="search_type" VALUE="fuzzy">fuzzy<br></td>
|
||||||
|
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td colspan="2" align="center"><INPUT TYPE="hidden" NAME="display" VALUE="#FF0000"><INPUT TYPE="submit"></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
|
||||||
|
<td>
|
||||||
|
<table border="0" cellpadding="0" cellspacing="0" width="100%">
|
||||||
|
<tr><td><font face="verdana,geneva" color="#000011" size="1">What is better, subtitled or dubbed anime?</font></td></tr>
|
||||||
|
<tr><td><input type="radio" name="rd" value="1"><font face="verdana" size="2" color="#000011">Subtitled</font></td></tr>
|
||||||
|
|
||||||
|
<tr><td align="middle"><font face="verdana" size="1"><a href="http://pub.alxnet.com/poll?id=2079873&q=view">Current results</a></font></td></tr>
|
||||||
|
</table></td></tr>
|
||||||
|
<tr>
|
||||||
|
<td><font face="verdana" size="1"><a href="http://www.alxnet.com/services/poll/">Free
|
||||||
|
Web Polls</a></font></td>
|
||||||
|
</tr>
|
||||||
|
</table></form>
|
||||||
|
<!-- Alxnet.com -- web poll code ends -->
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
|
|
||||||
|
<!-- vim: et sw=4 sts=4
|
||||||
|
-->
|
543
libraries/htmlpurifier-4.14.0/benchmarks/samples/Lexer/4.html
Normal file
|
@ -0,0 +1,543 @@
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" dir="ltr">
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
|
<meta name="keywords" content="Tai Chi Chuan,Yang Pan-hou,Yang Chien-hou,Yang style Tai Chi Chuan,Yang Lu-ch'an,Wu/Hao style T'ai Chi Ch'uan,Wu Ch'uan-yü,Hao Wei-chen,Yang Shou-chung,Wu style T'ai Chi Ch'uan,Wu Chien-ch'üan" />
|
||||||
|
<link rel="shortcut icon" href="/favicon.ico" />
|
||||||
|
<link rel="copyright" href="http://www.gnu.org/copyleft/fdl.html" />
|
||||||
|
<title>Tai Chi Chuan - Wikipedia, the free encyclopedia</title>
|
||||||
|
<style type="text/css" media="screen,projection">/*<![CDATA[*/ @import "/skins-1.5/monobook/main.css?9"; /*]]>*/</style>
|
||||||
|
<link rel="stylesheet" type="text/css" media="print" href="/skins-1.5/common/commonPrint.css" />
|
||||||
|
|
||||||
|
<!--[if lt IE 5.5000]><style type="text/css">@import "/skins-1.5/monobook/IE50Fixes.css";</style><![endif]-->
|
||||||
|
<!--[if IE 5.5000]><style type="text/css">@import "/skins-1.5/monobook/IE55Fixes.css";</style><![endif]-->
|
||||||
|
<!--[if IE 6]><style type="text/css">@import "/skins-1.5/monobook/IE60Fixes.css";</style><![endif]-->
|
||||||
|
<!--[if IE 7]><style type="text/css">@import "/skins-1.5/monobook/IE70Fixes.css?1";</style><![endif]-->
|
||||||
|
<!--[if lt IE 7]><script type="text/javascript" src="/skins-1.5/common/IEFixes.js"></script>
|
||||||
|
<meta http-equiv="imagetoolbar" content="no" /><![endif]-->
|
||||||
|
<script type="text/javascript">var skin = 'monobook';var stylepath = '/skins-1.5';</script>
|
||||||
|
<script type="text/javascript" src="/skins-1.5/common/wikibits.js?1"><!-- wikibits js --></script>
|
||||||
|
<script type="text/javascript" src="/w/index.php?title=-&action=raw&smaxage=0&gen=js"><!-- site js --></script>
|
||||||
|
|
||||||
|
<style type="text/css">/*<![CDATA[*/
|
||||||
|
@import "/w/index.php?title=MediaWiki:Common.css&action=raw&ctype=text/css&smaxage=2678400";
|
||||||
|
@import "/w/index.php?title=MediaWiki:Monobook.css&action=raw&ctype=text/css&smaxage=2678400";
|
||||||
|
@import "/w/index.php?title=-&action=raw&gen=css&maxage=2678400&ts=20060721225848";
|
||||||
|
@import "/w/index.php?title=User:Edward_Z._Yang/monobook.css&action=raw&ctype=text/css";
|
||||||
|
/*]]>*/</style>
|
||||||
|
<script type="text/javascript" src="/w/index.php?title=User:Edward_Z._Yang/monobook.js&action=raw&ctype=text/javascript&dontcountme=s"></script>
|
||||||
|
<!-- Head Scripts -->
|
||||||
|
</head>
|
||||||
|
<body class="ns-0 ltr">
|
||||||
|
<div id="globalWrapper">
|
||||||
|
<div id="column-content">
|
||||||
|
<div id="content">
|
||||||
|
|
||||||
|
<a name="top" id="top"></a>
|
||||||
|
<div id="siteNotice"><div id="wikimania2006" style="text-align:right; font-size:80%"><a href="http://wm06reg.wikimedia.org/" class="external text" title="http://wm06reg.wikimedia.org/">Registration</a> for <a href="http://wikimania2006.wikimedia.org" class="external text" title="http://wikimania2006.wikimedia.org">Wikimania 2006</a> is open. </div>
|
||||||
|
</div> <h1 class="firstHeading">Tai Chi Chuan</h1>
|
||||||
|
<div id="bodyContent">
|
||||||
|
<h3 id="siteSub">From Wikipedia, the free encyclopedia</h3>
|
||||||
|
|
||||||
|
<div id="contentSub"></div>
|
||||||
|
<div id="jump-to-nav">Jump to: <a href="#column-one">navigation</a>, <a href="#searchInput">search</a></div> <!-- start content -->
|
||||||
|
<table border="1" cellpadding="2" cellspacing="0" align="right">
|
||||||
|
<tr>
|
||||||
|
<th colspan="2" bgcolor="#FFCCCC"><big>???</big></th>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td colspan="2">
|
||||||
|
|
||||||
|
<div class="center">
|
||||||
|
<div class="thumb tnone">
|
||||||
|
<div style="width:182px;"><a href="/wiki/Image:Yang_Ch%27eng-fu_circa_1918.jpg" class="internal" title="Yang Chengfu in a posture from the Tai Chi solo form known as Single Whip, circa 1918"><img src="http://upload.wikimedia.org/wikipedia/en/thumb/d/d1/Yang_Ch%27eng-fu_circa_1918.jpg/180px-Yang_Ch%27eng-fu_circa_1918.jpg" alt="Yang Chengfu in a posture from the Tai Chi solo form known as Single Whip, circa 1918" width="180" height="255" longdesc="/wiki/Image:Yang_Ch%27eng-fu_circa_1918.jpg" /></a>
|
||||||
|
<div class="thumbcaption">
|
||||||
|
<div class="magnify" style="float:right"><a href="/wiki/Image:Yang_Ch%27eng-fu_circa_1918.jpg" class="internal" title="Enlarge"><img src="/skins-1.5/common/images/magnify-clip.png" width="15" height="11" alt="Enlarge" /></a></div>
|
||||||
|
<b><a href="/wiki/Yang_Chengfu" title="Yang Chengfu">Yang Chengfu</a> in a posture from the Tai Chi solo form known as <i>Single Whip</i>, circa <a href="/wiki/1918" title="1918">1918</a></b></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<th colspan="2"><a href="/wiki/Chinese_language" title="Chinese language">Chinese</a> Name</th>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><a href="/wiki/Hanyu_Pinyin" title="Hanyu Pinyin">Hanyu Pinyin</a></td>
|
||||||
|
<td>Tàijíquán</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><a href="/wiki/Wade-Giles" title="Wade-Giles">Wade-Giles</a></td>
|
||||||
|
<td>T'ai<sup>4</sup> Chi<sup>2</sup> Ch'üan<sup>2</sup></td>
|
||||||
|
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><a href="/wiki/Simplified_Chinese" title="Simplified Chinese">Simplified Chinese</a></td>
|
||||||
|
<td>???</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><a href="/wiki/Traditional_Chinese" title="Traditional Chinese">Traditional Chinese</a></td>
|
||||||
|
<td><a href="http://en.wiktionary.org/wiki/%E5%A4%AA" class="extiw" title="wiktionary:?">?</a><a href="http://en.wiktionary.org/wiki/%E6%A5%B5" class="extiw" title="wiktionary:?">?</a><a href="http://en.wiktionary.org/wiki/%E6%8B%B3" class="extiw" title="wiktionary:?">?</a></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><a href="/wiki/Cantonese_%28linguistics%29" title="Cantonese (linguistics)">Cantonese</a></td>
|
||||||
|
|
||||||
|
<td>taai3 gik6 kyun4</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><a href="/wiki/Hiragana" title="Hiragana">Japanese Hiragana</a></td>
|
||||||
|
<td>???????</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><a href="/wiki/Korean_%28language%29" title="Korean (language)">Korean</a></td>
|
||||||
|
<td>???</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><a href="/wiki/Vietnamese_%28language%29" title="Vietnamese (language)">Vietnamese</a></td>
|
||||||
|
|
||||||
|
<td>Thái C?c Quy?n</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<p><b>Tai Chi Chuan</b>, <b>T'ai Chi Ch'üan</b> or <b>Taijiquan</b> (<a href="/wiki/Traditional_Chinese_character" title="Traditional Chinese character">Traditional Chinese</a>: ???; <a href="/wiki/Simplified_Chinese_character" title="Simplified Chinese character">Simplified Chinese</a>: ???; <a href="/wiki/Pinyin" title="Pinyin">pinyin</a>: Tàijíquán; literally "supreme ultimate fist"), commonly known as <b>Tai Chi</b>, <b>T'ai Chi</b>, or <b><a href="/wiki/Taiji" title="Taiji">Taiji</a></b>, is an <a href="/wiki/Neijia" title="Neijia">internal</a> <a href="/wiki/Chinese_martial_arts" title="Chinese martial arts">Chinese martial art</a>. There are different styles of T'ai Chi Ch'üan, although most agree they are all based on the system originally taught by the <a href="/wiki/Chen" title="Chen">Chen</a> family to the <a href="/wiki/Yang" title="Yang">Yang</a> family starting in <a href="/wiki/1820" title="1820">1820</a>. It is often promoted and practiced as a <a href="/wiki/Martial_arts_therapy" title="Martial arts therapy">martial arts therapy</a> for the purposes of <a href="/wiki/Health" title="Health">health</a> and <a href="/wiki/Longevity" title="Longevity">longevity</a>, (some <a href="/wiki/Tai_Chi_Chuan#Citations_to_medical_research" title="Tai Chi Chuan">recent medical studies</a> support its effectiveness). T'ai Chi Ch'üan is considered a <i>soft</i> style martial art, an art applied with as complete a relaxation or "softness" in the musculature as possible, to distinguish its theory and application from that of the <i>hard</i> martial art styles which use a degree of tension in the muscles.</p>
|
||||||
|
|
||||||
|
<p>Variations of T'ai Chi Ch'üan's basic training forms are well known as the slow motion routines that groups of people practice every morning in parks across China and other parts of the world. Traditional T'ai Chi training is intended to teach awareness of one's own balance and what affects it, awareness of the same in others, an appreciation of the practical value in one's ability to moderate extremes of behavior and attitude at both mental and physical levels, and how this applies to effective self-defense principles.</p>
|
||||||
|
<table id="toc" class="toc" summary="Contents">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<div id="toctitle">
|
||||||
|
<h2>Contents</h2>
|
||||||
|
</div>
|
||||||
|
<ul>
|
||||||
|
<li class="toclevel-1"><a href="#Overview"><span class="tocnumber">1</span> <span class="toctext">Overview</span></a></li>
|
||||||
|
<li class="toclevel-1"><a href="#Training_and_techniques"><span class="tocnumber">2</span> <span class="toctext">Training and techniques</span></a></li>
|
||||||
|
|
||||||
|
<li class="toclevel-1"><a href="#Styles_and_history"><span class="tocnumber">3</span> <span class="toctext">Styles and history</span></a>
|
||||||
|
<ul>
|
||||||
|
<li class="toclevel-2"><a href="#Family_tree"><span class="tocnumber">3.1</span> <span class="toctext">Family tree</span></a></li>
|
||||||
|
<li class="toclevel-2"><a href="#Notes_to_Family_tree_table"><span class="tocnumber">3.2</span> <span class="toctext">Notes to Family tree table</span></a></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li class="toclevel-1"><a href="#Modern_T.27ai_Chi"><span class="tocnumber">4</span> <span class="toctext">Modern T'ai Chi</span></a>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li class="toclevel-2"><a href="#Modern_forms"><span class="tocnumber">4.1</span> <span class="toctext">Modern forms</span></a></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li class="toclevel-1"><a href="#Health_benefits"><span class="tocnumber">5</span> <span class="toctext">Health benefits</span></a>
|
||||||
|
<ul>
|
||||||
|
<li class="toclevel-2"><a href="#Citations_to_medical_research"><span class="tocnumber">5.1</span> <span class="toctext">Citations to medical research</span></a></li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
</li>
|
||||||
|
<li class="toclevel-1"><a href="#See_also"><span class="tocnumber">6</span> <span class="toctext">See also</span></a></li>
|
||||||
|
<li class="toclevel-1"><a href="#External_links"><span class="tocnumber">7</span> <span class="toctext">External links</span></a></li>
|
||||||
|
</ul>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<p><script type="text/javascript">
|
||||||
|
//<![CDATA[
|
||||||
|
if (window.showTocToggle) { var tocShowText = "show"; var tocHideText = "hide"; showTocToggle(); }
|
||||||
|
//]]>
|
||||||
|
</script></p>
|
||||||
|
<div class="editsection" style="float:right;margin-left:5px;">[<a href="/w/index.php?title=Tai_Chi_Chuan&action=edit&section=1" title="Edit section: Overview">edit</a>]</div>
|
||||||
|
|
||||||
|
<p><a name="Overview" id="Overview"></a></p>
|
||||||
|
<h2>Overview</h2>
|
||||||
|
<p>Historically, T'ai Chi Ch'üan has been regarded as a martial art, and its traditional practitioners still teach it as one. Even so, it has developed a worldwide following among many thousands of people with little or no interest in martial training for its aforementioned benefits to health and <a href="/wiki/Preventive_medicine" title="Preventive medicine">health maintenance</a>. Some call it a form of moving <a href="/wiki/Meditation" title="Meditation">meditation</a>, and T'ai Chi theory and practice evolved in agreement with many of the principles of <a href="/wiki/Traditional_Chinese_medicine" title="Traditional Chinese medicine">traditional Chinese medicine</a>. Besides general health benefits and <a href="/wiki/Stress_management" title="Stress management">stress management</a> attributed to beginning and intermediate level T'ai Chi training, many therapeutic interventions along the lines of traditional Chinese medicine are taught to advanced T'ai Chi students.</p>
|
||||||
|
<p>T'ai Chi Ch'üan as physical training is characterized by its requirement for the use of leverage through the joints based on coordination in relaxation rather than muscular tension in order to neutralize or initiate physical attacks. The slow, repetitive work involved in that process is said to gently increase and open the internal circulation (<a href="/wiki/Breath" title="Breath">breath</a>, body heat, <a href="/wiki/Blood" title="Blood">blood</a>, <a href="/wiki/Lymph" title="Lymph">lymph</a>, <a href="/wiki/Peristalsis" title="Peristalsis">peristalsis</a>, etc.). Over time, proponents say, this enhancement becomes a lasting effect, a direct reversal of the constricting physical effects of stress on the human body. This reversal allows much more of the students' native energy to be available to them, which they may then apply more effectively to the rest of their lives; families, careers, spiritual or creative pursuits, hobbies, etc.</p>
|
||||||
|
|
||||||
|
<p>The study of T'ai Chi Ch'üan involves three primary subjects:</p>
|
||||||
|
<ul>
|
||||||
|
<li><b>Health</b> - an unhealthy or otherwise uncomfortable person will find it difficult to meditate to a state of calmness or to use T'ai Chi as a martial art. T'ai Chi's health training therefore concentrates on relieving the physical effects of stress on the body and mind.</li>
|
||||||
|
<li><b>Meditation</b> - the focus meditation and subsequent calmness cultivated by the meditative aspect of T'ai Chi is seen as necessary to maintain optimum health (in the sense of effectively maintaining stress relief or <a href="/wiki/Homeostasis" title="Homeostasis">homeostasis</a>) and in order to use it as a soft style martial art.</li>
|
||||||
|
<li><b>Martial art</b> - the ability to competently use T'ai Chi as a martial art is said to be proof that the health and meditation aspects are working according to the dictates of the theory of T'ai Chi Ch'üan.</li>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
<p>In its traditional form (many modern variations exist which ignore at least one of the above requirements) every aspect of its training has to conform with all three of the aforementioned categories.</p>
|
||||||
|
<p>The <a href="/wiki/Mandarin_%28linguistics%29" title="Mandarin (linguistics)">Mandarin</a> term "T'ai Chi Ch'üan" translates as "Supreme Ultimate Boxing" or "Boundless Fist". T'ai Chi training involves learning solo routines, known as <i>forms</i>, and two person routines, known as <i><a href="/wiki/Pushing_hands" title="Pushing hands">pushing hands</a></i>, as well as <i><a href="/wiki/Acupressure" title="Acupressure">acupressure</a></i>-related manipulations taught by traditional schools. T'ai Chi Ch'üan is seen by many of its schools as a variety of <a href="/wiki/Taoism" title="Taoism">Taoism</a>, and it does seemingly incorporate many Taoist principles into its practice (see below). It is an art form said to date back many centuries (although not reliably documented under that name before 1850), with precursor disciplines dating back thousands of years. The explanation given by the traditional T'ai Chi family schools for why so many of their previous generations have dedicated their lives to the study and preservation of the art is that the discipline it seems to give its students to dramatically improve the effects of stress in their lives, with a few years of hard work, should hold a useful purpose for people living in a stressful world. They say that once the T'ai Chi principles have been understood and internalized into the bodily framework the practitioner will have an immediately accessible "toolkit" thereby to improve and then maintain their health, to provide a meditative focus, and that can work as an effective and subtle martial art for self-defense.</p>
|
||||||
|
<p>Teachers say the study of T'ai Chi Ch'üan is, more than anything else, about challenging one's ability to change oneself appropriately in response to outside forces. These principles are taught using the examples of <a href="/wiki/Physics" title="Physics">physics</a> as experienced by two (or more) bodies in <a href="/wiki/Combat" title="Combat">combat</a>. In order to be able to protect oneself or someone else by using change, it is necessary to understand what the consequences are of changing appropriately, changing inappropriately and not changing at all in response to an attack. Students, by this theory, will appreciate the full benefits of the entire art in the fastest way through physical training of the martial art aspect.</p>
|
||||||
|
|
||||||
|
<p><a href="/wiki/Wu_Chien-ch%27uan" title="Wu Chien-ch'uan">Wu Chien-ch'üan</a>, co-founder of the Wu family style, described the name <i>T'ai Chi Ch'üan</i> this way at the beginning of the <a href="/wiki/20th_century" title="20th century">20th century</a>:</p>
|
||||||
|
<dl>
|
||||||
|
<dd>"Various people have offered different explanations for the name <i>T'ai Chi Ch'uan</i>. Some have said: 'In terms of self-cultivation, one must train from a state of movement towards a state of stillness. <i>T'ai Chi</i> comes about through the balance of <i><a href="/wiki/Yin" title="Yin">yin</a></i> and <i><a href="/wiki/Yang" title="Yang">yang</a></i>. In terms of the art of attack and defense then, in the context of the <a href="/wiki/I_Ching" title="I Ching">changes</a> of full and empty, one is constantly internally latent, not outwardly expressive, as if the <i>yin</i> and <i>yang</i> of <i>T'ai Chi</i> have not yet divided apart.'</dd>
|
||||||
|
|
||||||
|
<dd>Others say: 'Every movement of <i>T'ai Chi Ch'uan</i> is based on circles, just like the shape of a <a href="/wiki/Taijitu" title="Taijitu"><i>T'ai Chi</i> symbol</a>. Therefore, it is called <i>T'ai Chi Ch'uan</i>.' Both explanations are quite reasonable, especially the second, which is more complete."</dd>
|
||||||
|
</dl>
|
||||||
|
<div class="editsection" style="float:right;margin-left:5px;">[<a href="/w/index.php?title=Tai_Chi_Chuan&action=edit&section=2" title="Edit section: Training and techniques">edit</a>]</div>
|
||||||
|
<p><a name="Training_and_techniques" id="Training_and_techniques"></a></p>
|
||||||
|
|
||||||
|
<h2>Training and techniques</h2>
|
||||||
|
<div class="thumb tright">
|
||||||
|
<div style="width:182px;"><a href="/wiki/Image:Yin_yang.svg" class="internal" title="The T'ai Chi Symbol or T'ai Chi T'u (Taijitu)"><img src="http://upload.wikimedia.org/wikipedia/commons/thumb/1/17/Yin_yang.svg/180px-Yin_yang.svg.png" alt="The T'ai Chi Symbol or T'ai Chi T'u (Taijitu)" width="180" height="180" longdesc="/wiki/Image:Yin_yang.svg" /></a>
|
||||||
|
<div class="thumbcaption">
|
||||||
|
<div class="magnify" style="float:right"><a href="/wiki/Image:Yin_yang.svg" class="internal" title="Enlarge"><img src="/skins-1.5/common/images/magnify-clip.png" width="15" height="11" alt="Enlarge" /></a></div>
|
||||||
|
<b>The T'ai Chi Symbol or T'ai Chi T'u (Taijitu)</b></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<p>As the name <i>T'ai Chi Ch'üan</i> is held to be derived from the T'ai Chi symbol, the <i>taijitu</i> or <i>t'ai chi t'u</i> (???, <a href="/wiki/Pinyin" title="Pinyin">pinyin</a> tàijítú), commonly known in the West as the "<a href="/wiki/Yin-yang" title="Yin-yang">yin-yang</a>" diagram, T'ai Chi Ch'üan techniques are said therefore to physically and energetically balance <i>yin</i> (receptive) and <i>yang</i> (active) principles: "From ultimate softness comes ultimate hardness."</p>
|
||||||
|
|
||||||
|
<p>The core training involves two primary features: the first being the solo form or <i>ch'üan</i>, a slow sequence of movements which emphasize a straight spine, relaxed breathing and a natural range of motion; the second being different styles of <i>pushing hands</i> or <i>t'ui shou</i> (??) for training "stickiness" and sensitivity in the reflexes through various motions from the forms in concert with a training partner in order to learn leverage, timing, coordination and positioning when interacting with another. Pushing hands is seen as necessary not only for training the self-defense skills of a soft style such as T'ai Chi by demonstrating the forms' movement principles experientially, but also it is said to improve upon the level of conditioning provided by practice of the solo forms by increasing the workload on students while they practice those movement principles.</p>
|
||||||
|
<p>The solo form should take the students through a complete, natural, range of motion over their centre of gravity. Accurate, repeated practice of the solo routine is said to retrain posture, encourage circulation throughout the students' bodies, maintain flexibility through their joints and further familiarize students with the martial application sequences implied by the forms. The major traditional styles of T'ai Chi have forms which differ somewhat cosmetically, but there are also many obvious similarities which point to their common origin. The solo forms, empty-hand and <a href="/wiki/Weapon" title="Weapon">weapon</a>, are catalogues of movements that are practised individually in pushing hands and martial application scenarios to prepare students for self-defence training. In most traditional schools different variations of the solo forms can be practiced; fast/slow, small circle/large circle, square/round (which are different expressions of leverage through the joints), low sitting/high sitting (the degree to which weight-bearing knees are kept bent throughout the form), for example.</p>
|
||||||
|
<p>In a fight, if one uses hardness to resist violent force then both sides are certain to be injured, at least to some degree. Such injury, according to T'ai Chi theory, is a natural consequence of meeting brute force with brute force. The collision of two like forces, yang with yang, is known as "double-weighted" in T'ai Chi terminology. Instead, students are taught not to fight or resist an incoming force, but to meet it in softness and "stick" to it, following its motion while remaining in physical contact until the incoming force of attack exhausts itself or can be safely redirected, the result of meeting yang with yin. Done correctly, achieving this yin/yang or yang/yin balance in combat (and, by extension, other areas of one's life) is known as being "single-weighted" and is a primary goal of T'ai Chi Ch'üan training. <a href="/wiki/Lao_Tzu" title="Lao Tzu">Lao Tzu</a> provided the <a href="/wiki/Archetype" title="Archetype">archetype</a> for this in the <a href="/wiki/Tao_Te_Ching" title="Tao Te Ching">Tao Te Ching</a> when he wrote, "The soft and the pliable will defeat the hard and strong." This soft "neutralization" of an attack can be accomplished very quickly in an actual fight by an adept practitioner. A T'ai Chi student has to be well conditioned by many years of disciplined training; stable, sensitive and elastic mentally and physically in order to realize this ability, however.</p>
|
||||||
|
|
||||||
|
<p>Other training exercises include:</p>
|
||||||
|
<ul>
|
||||||
|
<li>Weapons training and <a href="/wiki/Fencing" title="Fencing">fencing</a> applications employing the straight <i><a href="/wiki/Sword" title="Sword">sword</a></i> known as the <i>jian</i> or <i>chien</i> or <i>gim</i> (<a href="/wiki/Jian" title="Jian">jiàn</a> ?), a heavier curved <i>sabre</i>, sometimes called a <i>broadsword</i> or <i>tao</i> (<a href="/wiki/Dao_%28saber%29" title="Dao (saber)">dao</a> ?, which is actually considered a big <i><a href="/wiki/Knife" title="Knife">knife</a></i>), folding <i><a href="/wiki/Tessen" title="Tessen">fan</a></i>, <i>staff</i> (?), 7 foot (2 m) <i><a href="/wiki/Qiang_%28spear%29" title="Qiang (spear)">spear</a></i> and 13 foot (4 m) <i><a href="/wiki/Lance" title="Lance">lance</a></i> (both called qiang ?). More exotic weapons still used by some traditional styles are the large <i>Da Dao</i> or <i>Ta Tao</i> (??) sabre, <i><a href="/wiki/Ji_%28halberd%29" title="Ji (halberd)">halberd</a></i> (ji ?), <i>cane</i>, <i>rope-dart</i>, <i><a href="/wiki/Three_sectional_staff" title="Three sectional staff">three sectional staff</a></i>, <i><a href="/wiki/Lasso" title="Lasso">lasso</a></i>, <i><a href="/wiki/Whip" title="Whip">whip</a></i>, <i><a href="/wiki/Chain_whip" title="Chain whip">chain whip</a></i> and <i>steel whip</i>.</li>
|
||||||
|
|
||||||
|
<li>Two-person tournament sparring (as part of push hands competitions and/or <i><a href="/wiki/San_shou" title="San shou">san shou</a></i> ??);</li>
|
||||||
|
<li>Breathing exercises; <i><a href="/wiki/Nei_kung" title="Nei kung">nei kung</a></i> (?? nèigong) or, more commonly, <i><a href="/wiki/Ch%27i_kung" title="Ch'i kung">ch'i kung</a></i> (?? qìgong) to develop <b><a href="/wiki/Ch%27i" title="Ch'i">ch'i</a></b> (? qì) or "breath energy" in coordination with physical movement and <a href="/wiki/Zhan_zhuang" title="Zhan zhuang">post standing</a> or combinations of the two. These were formerly taught only to disciples as a separate, complementary training system. In the last 50 years they have become more well known to the general public.</li>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
<p>T'ai Chi's martial aspect relies on sensitivity to the opponent's movements and centre of gravity dictating appropriate responses. Effectively affecting or "capturing" the opponent's centre of gravity immediately upon contact is trained as the primary goal of the martial T'ai Chi student, and from there all other technique can follow with seeming effortlessness. The alert calmness required to achieve the necessary sensitivity is acquired over thousands of hours of first <i>yin</i> (slow, repetitive, meditative, low impact) and then later adding <i>yang</i> ("realistic," active, fast, high impact) martial training; forms, pushing hands and sparring. T'ai Chi Ch'üan trains in three basic ranges, close, medium and long, and then everything in between. Pushes and open hand strikes are more common than punches, and kicks are usually to the legs and lower torso, never higher than the hip in most styles. The fingers, fists, palms, sides of the hands, wrists, forearms, elbows, shoulders, back, hips, knees and feet are commonly used to strike, with strikes to the eyes, throat, heart, groin and other acupressure points trained by advanced students. There is an extensive repertoire of joint traps, locks and breaks (<a href="/wiki/Chin_na" title="Chin na">chin na</a>), particularly applied to lock up or break an opponent's elbows, wrists, fingers, ankles, back or neck. Most T'ai Chi teachers expect their students to thoroughly learn defensive or neutralizing skills first, and a student will have to demonstrate proficiency with them before offensive skills will be extensively trained. There is also an emphasis in the traditional schools on kind-heartedness. One is expected to show mercy to one's opponents, as instanced by a poem preserved in some of the T'ai Chi families said to be derived from the <a href="/wiki/Shaolin" title="Shaolin">Shaolin</a> temple:</p>
|
||||||
|
<dl>
|
||||||
|
<dd>"I would rather maim than kill</dd>
|
||||||
|
|
||||||
|
<dd>Hurt than maim</dd>
|
||||||
|
<dd>Intimidate than hurt</dd>
|
||||||
|
<dd>Avoid than intimidate."</dd>
|
||||||
|
</dl>
|
||||||
|
<div class="thumb tright">
|
||||||
|
<div style="width:352px;"><a href="/wiki/Image:Martial_arts_-_Fragrant_Hills.JPG" class="internal" title="An outdoor Chen style class in Beijing"><img src="http://upload.wikimedia.org/wikipedia/commons/thumb/b/b6/Martial_arts_-_Fragrant_Hills.JPG/350px-Martial_arts_-_Fragrant_Hills.JPG" alt="An outdoor Chen style class in Beijing" width="350" height="233" longdesc="/wiki/Image:Martial_arts_-_Fragrant_Hills.JPG" /></a>
|
||||||
|
<div class="thumbcaption">
|
||||||
|
<div class="magnify" style="float:right"><a href="/wiki/Image:Martial_arts_-_Fragrant_Hills.JPG" class="internal" title="Enlarge"><img src="/skins-1.5/common/images/magnify-clip.png" width="15" height="11" alt="Enlarge" /></a></div>
|
||||||
|
An outdoor Chen style class in Beijing</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="editsection" style="float:right;margin-left:5px;">[<a href="/w/index.php?title=Tai_Chi_Chuan&action=edit&section=3" title="Edit section: Styles and history">edit</a>]</div>
|
||||||
|
|
||||||
|
<p><a name="Styles_and_history" id="Styles_and_history"></a></p>
|
||||||
|
<h2>Styles and history</h2>
|
||||||
|
<p>There are five major styles of T'ai Chi Ch'üan, each named after the Chinese family that teaches (or taught) it:</p>
|
||||||
|
<ul>
|
||||||
|
<li><b><a href="/wiki/Chen_style_Tai_Chi_Chuan" title="Chen style Tai Chi Chuan">Chen style</a></b> (??) and its close cousin <b><a href="/w/index.php?title=Zhaobao_style_T%27ai_Chi_Ch%27uan&action=edit" class="new" title="Zhaobao style T'ai Chi Ch'uan">Zhao Bao Style</a></b> (?????)</li>
|
||||||
|
<li><b><a href="/wiki/Yang_style_T%27ai_Chi_Ch%27uan" title="Yang style T'ai Chi Ch'uan">Yang style</a></b> (??)</li>
|
||||||
|
|
||||||
|
<li><b><a href="/wiki/Wu/Hao_style_T%27ai_Chi_Ch%27uan" title="Wu/Hao style T'ai Chi Ch'uan">Wu or Wu/Hao style of Wu Yu-hsiang</a></b> (??)</li>
|
||||||
|
<li><b><a href="/wiki/Wu_style_T%27ai_Chi_Ch%27uan" title="Wu style T'ai Chi Ch'uan">Wu style of Wu Ch'uan-yü and Wu Chien-ch'uan</a></b> (??)</li>
|
||||||
|
<li><b><a href="/wiki/Sun_style_T%27ai_Chi_Ch%27uan" title="Sun style T'ai Chi Ch'uan">Sun style</a></b> (??)</li>
|
||||||
|
</ul>
|
||||||
|
<p>The order of seniority is as listed above. The order of popularity is Yang, Wu, Chen, Sun, and Wu/Hao. The first five major family styles share much underlying theory, but differ in their approaches to training.</p>
|
||||||
|
<p>In the modern world there are now dozens of new styles, hybrid styles and offshoots of the main styles, but the five family schools are the groups recognised by the international community as being orthodox. For example, there are <i>several</i> groups teaching what they call <a href="/wiki/Wudang_Tai_Chi_Chuan" title="Wudang Tai Chi Chuan">Wu Tang style T'ai Chi Ch'üan (??????)</a>. The best known modern style going by the name <i>Wu Tang</i> has gained some publicity internationally, especially in the <a href="/wiki/United_Kingdom" title="United Kingdom">UK</a> and <a href="/wiki/Europe" title="Europe">Europe</a>, but was originally taught by a senior student of the Wu (?) style.</p>
|
||||||
|
|
||||||
|
<p>The designation <i><a href="/wiki/Wudangquan" title="Wudangquan">Wu Tang Ch'üan</a></i> is also used to broadly distinguish <i>internal</i> or <i>nei chia</i> martial arts (said to be a specialty of the <a href="/wiki/Monasteries" title="Monasteries">monasteries</a> at <a href="/wiki/Wudangshan" title="Wudangshan">Wu Tang Shan</a>) from what are known as the <i>external</i> or <i>wei chia</i> styles based on <i><a href="/w/index.php?title=Shaolinquan_kung_fu&action=edit" class="new" title="Shaolinquan kung fu">Shaolinquan kung fu</a></i>, although that distinction is sometimes disputed by individual schools. In this broad sense, among many T'ai Chi schools <i>all</i> styles of T'ai Chi (as well as related arts such as <a href="/wiki/Bagua_zhang" title="Bagua zhang">Pa Kua Chang</a> and <a href="/wiki/Hsing_Yi" title="Hsing Yi">Hsing-i Ch'üan</a>) are therefore considered to be "Wu Tang style" martial arts. The schools that designate themselves "Wu Tang style" relative to the family styles mentioned above mostly claim to teach an "original style" they say was formulated by a Taoist monk called <a href="/wiki/Zhang_Sanfeng" title="Zhang Sanfeng">Zhang Sanfeng</a> and taught by him in the Taoist monasteries at Wu Tang Shan. Some consider that what is practised under that name today may be a modern back-formation based on stories and popular veneration of Zhang Sanfeng (see below) as well as the martial fame of the Wu Tang monastery (there are many other martial art styles historically associated with Wu Tang besides T'ai Chi).</p>
|
||||||
|
|
||||||
|
<p>When tracing T'ai Chi Ch'üan's formative influences to <a href="/wiki/Taoist" title="Taoist">Taoist</a> and <a href="/wiki/Buddhist" title="Buddhist">Buddhist</a> monasteries, one has little more to go on than legendary tales from a modern historical perspective, but T'ai Chi Ch'üan's practical connection to and dependence upon the theories of <a href="/wiki/Song_dynasty" title="Song dynasty">Sung dynasty</a> <a href="/wiki/Neo-Confucianism" title="Neo-Confucianism">Neo-Confucianism</a> (a conscious synthesis of Taoist, Buddhist and <a href="/wiki/Confucian" title="Confucian">Confucian</a> traditions, esp. the teachings of <a href="/wiki/Mencius" title="Mencius">Mencius</a>) is readily apparent to its practitioners. The philosophical and political landscape of that time in Chinese history is fairly well documented, even if the origin of the art later to become known as T'ai Chi Ch'üan in it is not. T'ai Chi Ch'üan's theories and practice are therefore believed by some schools to have been formulated by the Taoist monk <a href="/wiki/Zhang_Sanfeng" title="Zhang Sanfeng">Zhang Sanfeng</a> in the 12th century, a time frame fitting well with when the principles of the Neo-Confucian school were making themselves felt in Chinese intellectual life. Therefore the didactic story is told that Zhang Sanfeng as a young man studied <a href="/wiki/Tao_Yin" title="Tao Yin">Tao Yin</a> (??, <a href="/wiki/Pinyin" title="Pinyin">Pinyin</a> daoyin) breathing exercises from his Taoist teachers and martial arts at the Buddhist Shaolin monastery, eventually combining the martial forms and breathing exercises to formulate the soft or internal principles we associate with T'ai Chi Ch'üan and related martial arts. Its subsequent fame attributed to his teaching, Wu Tang monastery was known thereafter as an important martial center for many centuries, its many styles of internal <a href="/wiki/Kung_fu" title="Kung fu">kung fu</a> preserved and refined at various Taoist temples.</p>
|
||||||
|
|
||||||
|
<div class="editsection" style="float:right;margin-left:5px;">[<a href="/w/index.php?title=Tai_Chi_Chuan&action=edit&section=4" title="Edit section: Family tree">edit</a>]</div>
|
||||||
|
<p><a name="Family_tree" id="Family_tree"></a></p>
|
||||||
|
<h3>Family tree</h3>
|
||||||
|
<p>This family tree is not comprehensive.</p>
|
||||||
|
<pre>
|
||||||
|
<b>LEGENDARY FIGURES</b>
|
||||||
|
|
|
||||||
|
<a href="/wiki/Zhang_Sanfeng" title="Zhang Sanfeng">Zhang Sanfeng</a>*
|
||||||
|
circa 12th century
|
||||||
|
<a href="/wiki/Nei_chia" title="Nei chia">NEI CHIA</a>
|
||||||
|
|
||||||
|
|
|
||||||
|
<a href="/w/index.php?title=Wang_Zongyue&action=edit" class="new" title="Wang Zongyue">Wang Zongyue</a>*
|
||||||
|
T'AI CHI CH'ÜAN
|
||||||
|
|
|
||||||
|
<b>THE 5 MAJOR CLASSICAL FAMILY STYLES</b>
|
||||||
|
|
|
||||||
|
Chen Wangting
|
||||||
|
1600-1680 9th generation Chen
|
||||||
|
<a href="/wiki/Chen_style_Tai_Chi_Chuan" title="Chen style Tai Chi Chuan">CHEN STYLE</a>
|
||||||
|
|
|
||||||
|
+-------------------------------------------------------------------+
|
||||||
|
| |
|
||||||
|
<a href="/w/index.php?title=Chen_Changxing&action=edit" class="new" title="Chen Changxing">Chen Changxing</a> <a href="/w/index.php?title=Chen_Youben&action=edit" class="new" title="Chen Youben">Chen Youben</a>
|
||||||
|
1771-1853 14th generation Chen circa 1800s 14th generation Chen
|
||||||
|
Chen Old Frame Chen New Frame
|
||||||
|
| |
|
||||||
|
|
||||||
|
<a href="/wiki/Yang_Lu-ch%27an" title="Yang Lu-ch'an">Yang Lu-ch'an</a> <a href="/w/index.php?title=Chen_Qingping&action=edit" class="new" title="Chen Qingping">Chen Qingping</a>
|
||||||
|
1799-1872 1795-1868
|
||||||
|
<a href="/wiki/Yang_style_Tai_Chi_Chuan" title="Yang style Tai Chi Chuan">YANG STYLE</a> Chen Small Frame, Zhao Bao Frame
|
||||||
|
| |
|
||||||
|
+---------------------------------+-----------------------------+ |
|
||||||
|
| | | |
|
||||||
|
<a href="/wiki/Yang_Pan-hou" title="Yang Pan-hou">Yang Pan-hou</a> <a href="/wiki/Yang_Chien-hou" title="Yang Chien-hou">Yang Chien-hou</a> <a href="/w/index.php?title=Wu_Yu-hsiang&action=edit" class="new" title="Wu Yu-hsiang">Wu Yu-hsiang</a>
|
||||||
|
1837-1892 1839-1917 1812-1880
|
||||||
|
Yang Small Frame | <a href="/wiki/Wu/Hao_style_T%27ai_Chi_Ch%27uan" title="Wu/Hao style T'ai Chi Ch'uan">WU/HAO STYLE</a>
|
||||||
|
|
||||||
|
| +-----------------+ |
|
||||||
|
| | | |
|
||||||
|
<a href="/wiki/Wu_Ch%27uan-y%C3%BC" title="Wu Ch'uan-yü">Wu Ch'uan-yü</a> <a href="/wiki/Yang_Shao-hou" title="Yang Shao-hou">Yang Shao-hou</a> <a href="/wiki/Yang_Ch%27eng-fu" title="Yang Ch'eng-fu">Yang Ch'eng-fu</a> <a href="/w/index.php?title=Li_I-y%C3%BC&action=edit" class="new" title="Li I-yü">Li I-yü</a>
|
||||||
|
1834-1902 1862-1930 1883-1936 1832-1892
|
||||||
|
| Yang Small Frame <a href="/wiki/103_form_Yang_family_T%27ai_Chi_Ch%27uan" title="103 form Yang family T'ai Chi Ch'uan">Yang Big Frame</a> |
|
||||||
|
<a href="/wiki/Wu_Chien-ch%27%C3%BCan" title="Wu Chien-ch'üan">Wu Chien-ch'üan</a> | <a href="/wiki/Hao_Wei-chen" title="Hao Wei-chen">Hao Wei-chen</a>
|
||||||
|
|
||||||
|
1870-1942 <a href="/wiki/Yang_Shou-chung" title="Yang Shou-chung">Yang Shou-chung</a> 1849-1920
|
||||||
|
<a href="/wiki/Wu_style_T%27ai_Chi_Ch%27uan" title="Wu style T'ai Chi Ch'uan">WU STYLE</a> 1910-1985 |
|
||||||
|
<a href="/wiki/108_form_Wu_family_T%27ai_Chi_Ch%27uan" title="108 form Wu family T'ai Chi Ch'uan">108 Form</a> |
|
||||||
|
| <a href="/wiki/Sun_Lu-t%27ang" title="Sun Lu-t'ang">Sun Lu-t'ang</a>
|
||||||
|
<a href="/wiki/Wu_Kung-i" title="Wu Kung-i">Wu Kung-i</a> 1861-1932
|
||||||
|
1900-1970 <a href="/wiki/Sun_style_T%27ai_Chi_Ch%27uan" title="Sun style T'ai Chi Ch'uan">SUN STYLE</a>
|
||||||
|
|
||||||
|
| |
|
||||||
|
<a href="/w/index.php?title=Wu_Ta-kuei&action=edit" class="new" title="Wu Ta-kuei">Wu Ta-kuei</a> <a href="/w/index.php?title=Sun_Hsing-i&action=edit" class="new" title="Sun Hsing-i">Sun Hsing-i</a>
|
||||||
|
1923-1970 1891-1929
|
||||||
|
|
||||||
|
<b>MODERN FORMS</b>
|
||||||
|
|
||||||
|
from Yang Ch`eng-fu
|
||||||
|
|
|
||||||
|
|
|
||||||
|
|
|
||||||
|
+--------------+
|
||||||
|
| |
|
||||||
|
<a href="/wiki/Cheng_Man-ch%27ing" title="Cheng Man-ch'ing">Cheng Man-ch'ing</a> |
|
||||||
|
1901-1975 |
|
||||||
|
Short (37) Form |
|
||||||
|
|
|
||||||
|
Chinese Sports Commission
|
||||||
|
1956
|
||||||
|
Beijing <a href="/wiki/24_Form" title="24 Form">24 Form</a>
|
||||||
|
.
|
||||||
|
.
|
||||||
|
1989
|
||||||
|
<a href="/wiki/42_Form_%28Competition_Form%29_T%27ai_Chi_Ch%27uan" title="42 Form (Competition Form) T'ai Chi Ch'uan">42 Competition Form</a>
|
||||||
|
|
||||||
|
(<a href="/wiki/Wushu" title="Wushu">Wushu</a> competition form combined from Sun, Wu, Chen, and Yang styles)
|
||||||
|
</pre>
|
||||||
|
<div class="editsection" style="float:right;margin-left:5px;">[<a href="/w/index.php?title=Tai_Chi_Chuan&action=edit&section=5" title="Edit section: Notes to Family tree table">edit</a>]</div>
|
||||||
|
<p><a name="Notes_to_Family_tree_table" id="Notes_to_Family_tree_table"></a></p>
|
||||||
|
<h3>Notes to Family tree table</h3>
|
||||||
|
<p>Names denoted by an asterisk are legendary or semilegendary figures in the lineage, which means their involvement in the lineage, while accepted by most of the major schools, isn't independently verifiable from known historical records.</p>
|
||||||
|
<p>The Cheng Man-ch'ing and <a href="/w/index.php?title=Chinese_Sports_Commission&action=edit" class="new" title="Chinese Sports Commission">Chinese Sports Commission</a> short forms are said to be derived from Yang family forms, but neither are recognized as Yang family T'ai Chi Ch'üan by current Yang family teachers. The Chen, Yang and Wu families are now promoting their own shortened demonstration forms for competitive purposes.</p>
|
||||||
|
|
||||||
|
<div class="editsection" style="float:right;margin-left:5px;">[<a href="/w/index.php?title=Tai_Chi_Chuan&action=edit&section=6" title="Edit section: Modern T'ai Chi">edit</a>]</div>
|
||||||
|
<p><a name="Modern_T.27ai_Chi" id="Modern_T.27ai_Chi"></a></p>
|
||||||
|
<h2>Modern T'ai Chi</h2>
|
||||||
|
<div class="thumb tright">
|
||||||
|
<div style="width:352px;"><a href="/wiki/Image:Taichi_shanghai_bund_2005.jpg" class="internal" title="Yang style in Shanghai"><img src="http://upload.wikimedia.org/wikipedia/commons/thumb/9/9f/Taichi_shanghai_bund_2005.jpg/350px-Taichi_shanghai_bund_2005.jpg" alt="Yang style in Shanghai" width="350" height="263" longdesc="/wiki/Image:Taichi_shanghai_bund_2005.jpg" /></a>
|
||||||
|
<div class="thumbcaption">
|
||||||
|
<div class="magnify" style="float:right"><a href="/wiki/Image:Taichi_shanghai_bund_2005.jpg" class="internal" title="Enlarge"><img src="/skins-1.5/common/images/magnify-clip.png" width="15" height="11" alt="Enlarge" /></a></div>
|
||||||
|
Yang style in Shanghai</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<p>T'ai Chi has become very popular in the last twenty years or so, as the <a href="/wiki/Baby_boomers" title="Baby boomers">baby boomers</a> age and T'ai Chi's reputation for ameliorating the effects of aging becomes more well-known. Hospitals, clinics, community and senior centers are all hosting T'ai Chi classes in communities around the world. As a result of this popularity, there has been some divergence between those who say they practice T'ai Chi primarily for fighting, those who practice it for its <a href="/wiki/Aesthetic" title="Aesthetic">aesthetic</a> appeal (as in the shortened, modern, theatrical "Taijiquan" forms of <a href="/wiki/Wushu" title="Wushu">wushu</a>, see below), and those who are more interested in its benefits to physical and mental health. The wushu aspect is primarily for show; the forms taught for those purposes are designed to earn points in competition and are mostly unconcerned with either health maintenance or martial ability. More traditional stylists still see the two aspects of health and martial arts as equally necessary pieces of the puzzle, the <i>yin</i> and <i>yang</i> of T'ai Chi Ch'üan. The T'ai Chi "family" schools therefore still present their teachings in a martial art context even though the majority of their students nowadays profess that they are primarily interested in training for the claimed health benefits.</p>
|
||||||
|
|
||||||
|
<p>Along with <a href="/wiki/Yoga" title="Yoga">Yoga</a>, it is one of the fastest growing fitness and health maintenance activities, in terms of numbers of students enrolling in classes. Since there is no universal certification process and most Westerners haven't seen very much T'ai Chi and don't know what to look for, practically anyone can learn or even make up a few moves and call themselves a teacher. This is especially prevalent in the <a href="/wiki/New_Age" title="New Age">New Age</a> community. Relatively few of these teachers even know that there are martial applications to the T'ai Chi forms. Those who do know that it is a martial art usually don't teach martially themselves. If they do teach self-defense, it is often a mixture of motions which the teachers think look like T'ai Chi Ch'üan with some other system. This is especially evident in schools located outside of China. While this phenomenon may have made some external aspects of T'ai Chi available for a wider audience, the traditional T'ai Chi family schools see the martial focus as a fundamental part of their training, both for health <i>and</i> self-defense purposes. They claim that while the students may not need to practice martial applications themselves to derive a benefit from T'ai Chi training, they assert that T'ai Chi teachers at least should know the martial applications to ensure that the movements they teach are done correctly and safely by their students. Also, working on the ability to protect oneself from physical attack (one of the most stressful things that can happen to a person) certainly falls under the category of complete "health maintenance." For these reasons they claim that a school not teaching those aspects somewhere in their syllabus cannot be said to be actually teaching the art itself, and will be much less likely to be able to reproduce the full health benefits that made T'ai Chi's reputation in the first place.</p>
|
||||||
|
<div class="editsection" style="float:right;margin-left:5px;">[<a href="/w/index.php?title=Tai_Chi_Chuan&action=edit&section=7" title="Edit section: Modern forms">edit</a>]</div>
|
||||||
|
<p><a name="Modern_forms" id="Modern_forms"></a></p>
|
||||||
|
<h3>Modern forms</h3>
|
||||||
|
|
||||||
|
<div class="thumb tright">
|
||||||
|
<div style="width:352px;"><a href="/wiki/Image:Tai_Chi_fans.jpg" class="internal" title="Women practicing non-martial T'ai Chi in Chinatown (New York City, New York, USA)."><img src="http://upload.wikimedia.org/wikipedia/en/thumb/a/ad/Tai_Chi_fans.jpg/350px-Tai_Chi_fans.jpg" alt="Women practicing non-martial T'ai Chi in Chinatown (New York City, New York, USA)." width="350" height="201" longdesc="/wiki/Image:Tai_Chi_fans.jpg" /></a>
|
||||||
|
<div class="thumbcaption">
|
||||||
|
<div class="magnify" style="float:right"><a href="/wiki/Image:Tai_Chi_fans.jpg" class="internal" title="Enlarge"><img src="/skins-1.5/common/images/magnify-clip.png" width="15" height="11" alt="Enlarge" /></a></div>
|
||||||
|
Women practicing non-martial T'ai Chi in <a href="/wiki/Chinatown_%28Manhattan%29" title="Chinatown (Manhattan)">Chinatown</a> (<a href="/wiki/New_York_City" title="New York City">New York City</a>, <a href="/wiki/New_York" title="New York">New York</a>, <a href="/wiki/USA" title="USA">USA</a>).</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<p>In order to standardize T'ai Chi Ch'üan for wushu tournament judging, and because many of the family T'ai Chi Ch'üan teachers had either moved out of China or had been forced to stop teaching after the <a href="/wiki/Chinese_Civil_War" title="Chinese Civil War">Communist regime was established</a> in <a href="/wiki/1949" title="1949">1949</a>, the government sponsored Chinese Sports Committee brought together four of their wushu teachers to truncate the Yang family hand form to <a href="/wiki/24_Form_%28Simplified_Form%29_T%27ai_Chi_Ch%27uan" title="24 Form (Simplified Form) T'ai Chi Ch'uan">24 postures</a> in <a href="/wiki/1956" title="1956">1956</a>. They wanted to somehow retain the look of T'ai Chi Ch'üan but make an easy to remember routine that was less difficult to teach and much less difficult to learn than longer (generally 88 to 108 posture) classical solo hand forms. In <a href="/wiki/1976" title="1976">1976</a>, they developed a slightly longer form also for the purposes of demonstration that still didn't involve the complete memory, balance and coordination requirements of the traditional forms. This was a combination form, the <i>Combined 48 Forms</i> that were created by three wushu coaches headed by Professor Men Hui Feng. The combined forms were created based on simplifying and combining some features of the classical forms from four of the original styles; Ch'en, Yang, Wu, and Sun. Even though shorter modern forms don't have the conditioning benefits of the classical forms, the idea was to take what they felt were distinctive cosmetic features of these styles and to express them in a shorter time for purposes of competition.</p>
|
||||||
|
|
||||||
|
<p>As T'ai Chi again became popular on the Mainland, competitive forms were developed to be completed within a 6 minute time limit. In the late <a href="/wiki/1980s" title="1980s">1980s</a>, the Chinese Sports Committee standardized many different competition forms. It had developed sets said to represent the four major styles as well as combined forms. These five sets of forms were created by different teams, and later approved by a committee of wushu coaches in China. All sets of forms thus created were named after their style, e.g., the Ch'en Style National Competition Form is the <i>56 Forms</i>, and so on. The combined forms are <i>The 42 Form</i> or simply the <i>Competition Form</i>, as it is known in China. In the 11th <a href="/wiki/Asian_Games" title="Asian Games">Asian Games</a> of <a href="/wiki/1990" title="1990">1990</a>, wushu was included as an item for competition for the first time with the 42 Form being chosen to represent T'ai Chi. The International Wushu Federation (<a href="/w/index.php?title=IWUF&action=edit" class="new" title="IWUF">IWUF</a>) has applied for wushu to be part of the <a href="/wiki/Olympic_games" title="Olympic games">Olympic games</a>. If accepted, it is likely that T'ai Chi and wushu will be represented as demonstration events in <a href="/wiki/2008" title="2008">2008</a>.</p>
|
||||||
|
|
||||||
|
<p>Representatives of the original T'ai Chi families do not teach the forms developed by the Chinese Sports Committee. T'ai Chi Ch'üan has historically been seen by them as a martial art, not a sport, with competitions mostly entered as a hobby or to promote one's school publicly, but with little bearing on measuring actual accomplishment in the art. Their criticisms of modern forms include that the modern, "government" routines have no standardized, internally consistent training requirements. Also, that people studying competition forms rarely train pushing hands or other power generation trainings vital to learning the martial applications of T'ai Chi Ch'üan and thereby lack the <a href="/wiki/Quality_control" title="Quality control">quality control</a> traditional teachers maintain is essential for achieving the full benefits from both the health and the martial aspect of traditional T'ai Chi training.</p>
|
||||||
|
<div class="editsection" style="float:right;margin-left:5px;">[<a href="/w/index.php?title=Tai_Chi_Chuan&action=edit&section=8" title="Edit section: Health benefits">edit</a>]</div>
|
||||||
|
<p><a name="Health_benefits" id="Health_benefits"></a></p>
|
||||||
|
<h2>Health benefits</h2>
|
||||||
|
<p>Researchers have found that long-term T'ai Chi practice had favorable effects on the promotion of balance control, flexibility and cardiovascular fitness and reduced the risk of falls in elders. The studies also reported reduced pain, stress and anxiety in healthy subjects. Other studies have indicated improved cardiovascular and respiratory function in healthy subjects as well as those who had undergone coronary artery bypass surgery. Patients also benefited from T'ai Chi who suffered from heart failure, high blood pressure, heart attacks, arthritis and multiple sclerosis.</p>
|
||||||
|
<p>T'ai Chi has also been shown to reduce the symptoms of young Attention Deficit and Hyperactivity Disorder (<a href="/wiki/ADHD" title="ADHD">ADHD</a>) sufferers. T'ai Chi's gentle, low impact, movements surprisingly burn more calories than surfing and nearly as many as downhill skiing. T'ai Chi also boosts aspects of the immune system's function very significantly, and has been shown to reduce the incidence of anxiety, depression, and overall mood disturbance. (See research citations listed below.)</p>
|
||||||
|
|
||||||
|
<p>A pilot study has found evidence that T'ai Chi and related qigong helps reduce the severity of <a href="/wiki/Diabetes" title="Diabetes">diabetes</a>.<a href="http://www.abc.net.au/pm/content/2005/s1535304.htm" class="external autonumber" title="http://www.abc.net.au/pm/content/2005/s1535304.htm">[1]</a></p>
|
||||||
|
<div class="editsection" style="float:right;margin-left:5px;">[<a href="/w/index.php?title=Tai_Chi_Chuan&action=edit&section=9" title="Edit section: Citations to medical research">edit</a>]</div>
|
||||||
|
<p><a name="Citations_to_medical_research" id="Citations_to_medical_research"></a></p>
|
||||||
|
<h3>Citations to medical research</h3>
|
||||||
|
<ul>
|
||||||
|
<li>Wolf SL, Sattin RW, Kutner M. Intense T'ai Chi exercise training and fall occurrences in older, transitionally frail adults: a randomized, controlled trial. J Am Geriatr Soc. 2003 Dec; 51(12): 1693-701. <a href="http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=Retrieve&db=pubmed&dopt=Abstract&list_uids=14687346" class="external" title="http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=Retrieve&db=pubmed&dopt=Abstract&list_uids=14687346">PMID 14687346</a></li>
|
||||||
|
<li>Wang C, Collet JP, Lau J. The effect of Tai Chi on health outcomes in patients with chronic conditions: a <a href="/wiki/Systematic_review" title="Systematic review">systematic review</a>. Arch Intern Med. 2004 Mar 8;164(5):493-501. <a href="http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=Retrieve&db=pubmed&dopt=Abstract&list_uids=15006825" class="external" title="http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=Retrieve&db=pubmed&dopt=Abstract&list_uids=15006825">PMID 15006825</a></li>
|
||||||
|
|
||||||
|
<li>Search a listing of articles relating to the FICSIT trials and T'ai Chi <a href="http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=Select+from+History&db=pubmed&query_key=3" class="external autonumber" title="http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=Select+from+History&db=pubmed&query_key=3">[2]</a></li>
|
||||||
|
<li>Hernandez-Reif, M., Field, T.M., & Thimas, E. (2001). Attention deficit hyperactivity disorder: benefits from Tai Chi. Journal of Bodywork & Movement Therapies, 5(2):120-3, 2001 Apr, 5(23 ref), 120-123</li>
|
||||||
|
<li>Calorie Burning Chart <a href="http://www.nutristrategy.com/activitylist3.htm" class="external autonumber" title="http://www.nutristrategy.com/activitylist3.htm">[3]</a></li>
|
||||||
|
<li>Tai Chi boosts T-Cell counts in immune system <a href="http://www.acupuncturetoday.com/archives2003/nov/11taichi.html" class="external autonumber" title="http://www.acupuncturetoday.com/archives2003/nov/11taichi.html">[4]</a></li>
|
||||||
|
<li>Tai Chi, depression, anxiety, and mood disturbance (American Psychological Association) Journal of Psychosomatic Research, 1989 Vol 33 (2) 197-206</li>
|
||||||
|
|
||||||
|
<li>A comprehensive listing of Tai Chi medical research links <a href="http://www.worldtaichiday.org/WTCQDHlthBenft.html" class="external autonumber" title="http://www.worldtaichiday.org/WTCQDHlthBenft.html">[5]</a></li>
|
||||||
|
<li>References to medical publications <a href="http://www.worldtaichiday.org/HeadlineNews.html" class="external autonumber" title="http://www.worldtaichiday.org/HeadlineNews.html">[6]</a></li>
|
||||||
|
<li><a href="http://www.abc.net.au/pm/content/2005/s1535304.htm" class="external text" title="http://www.abc.net.au/pm/content/2005/s1535304.htm">Tai Chi a promising remedy for diabetes</a>, <i>Australian Broadcasting Corporation</i>, 20 December, 2005 - Pilot study of Qigong and tai chi in diabetes sufferers.</li>
|
||||||
|
<li>Health Research Articles on "Tai Chi as Health Therapy" for many issues, i.e. ADHD, Cardiac Health & Rehabilitation, Diabetes, High Blood Pressure, Menopause, Bone Loss, Weight Loss, etc.<a href="http://www.worldtaichiday.org/LIBRARYArticles/LIBRARYTaiChiArticlesMenu.html" class="external autonumber" title="http://www.worldtaichiday.org/LIBRARYArticles/LIBRARYTaiChiArticlesMenu.html">[7]</a></li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<div class="editsection" style="float:right;margin-left:5px;">[<a href="/w/index.php?title=Tai_Chi_Chuan&action=edit&section=10" title="Edit section: See also">edit</a>]</div>
|
||||||
|
<p><a name="See_also" id="See_also"></a></p>
|
||||||
|
<h2>See also</h2>
|
||||||
|
<ul>
|
||||||
|
<li><a href="/wiki/Jing_%28TCM%29" title="Jing (TCM)">Jing</a></li>
|
||||||
|
<li><a href="/wiki/List_of_Tai_Chi_Chuan_forms" title="List of Tai Chi Chuan forms">List of Tai Chi Chuan forms</a></li>
|
||||||
|
<li><a href="/wiki/Nei_Jin" title="Nei Jin">nei chin</a></li>
|
||||||
|
<li><a href="/wiki/Silk_reeling" title="Silk reeling">Silk reeling</a></li>
|
||||||
|
<li><a href="/wiki/World_Tai_Chi_and_Qigong_Day" title="World Tai Chi and Qigong Day">World Tai Chi and Qigong Day</a></li>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
<div class="editsection" style="float:right;margin-left:5px;">[<a href="/w/index.php?title=Tai_Chi_Chuan&action=edit&section=11" title="Edit section: External links">edit</a>]</div>
|
||||||
|
<p><a name="External_links" id="External_links"></a></p>
|
||||||
|
<h2>External links</h2>
|
||||||
|
<ul>
|
||||||
|
<li><a href="http://www.chenxiaowang.com/" class="external text" title="http://www.chenxiaowang.com/">A Chen Family Website</a></li>
|
||||||
|
<li><a href="http://www.yangfamilytaichi.com/" class="external text" title="http://www.yangfamilytaichi.com/">Yang Family Website</a></li>
|
||||||
|
<li><a href="http://www.wustyle.com/" class="external text" title="http://www.wustyle.com/">Wu Chien-ch'üan Family Website</a></li>
|
||||||
|
<li><a href="http://www.fushengyuan-taichi.com.au/" class="external text" title="http://www.fushengyuan-taichi.com.au/">Fu Family Website</a></li>
|
||||||
|
|
||||||
|
<li><a href="http://www.itcca.org/" class="external text" title="http://www.itcca.org/">Yang family disciple's website (ITCCA)</a></li>
|
||||||
|
<li><a href="http://www.dongtaichi.com/" class="external text" title="http://www.dongtaichi.com/">Dong T'ai Chi</a></li>
|
||||||
|
<li><a href="http://www.leefamilystyle.com/" class="external text" title="http://www.leefamilystyle.com/">UK website for Li style, popular in Europe</a></li>
|
||||||
|
<li><a href="http://www.chen-taiji.com/mambo/" class="external text" title="http://www.chen-taiji.com/mambo/">The World of Taijiquan</a></li>
|
||||||
|
<li><a href="http://www.scheele.org/lee/tcclinks.html" class="external text" title="http://www.scheele.org/lee/tcclinks.html">Lee Scheele's Links to T'ai Chi Ch'uan Web Sites</a></li>
|
||||||
|
<li><a href="http://news.bbc.co.uk/1/hi/health/3543907.stm" class="external text" title="http://news.bbc.co.uk/1/hi/health/3543907.stm">BBC article</a></li>
|
||||||
|
<li><a href="http://www.acupuncturetoday.com/archives2004/jul/07taichi.html" class="external text" title="http://www.acupuncturetoday.com/archives2004/jul/07taichi.html">Tai Chi: Good for the Mind, Good for the Body</a></li>
|
||||||
|
<li><a href="http://www.taichiunion.com/" class="external text" title="http://www.taichiunion.com/">Tai Chi Chuan Union for Great Britian: The largest collective of independent Tai Chi Chuan Instructors in the British Isles</a></li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Saved in parser cache with key enwiki:pcache:idhash:30690-0!0!0!1!!en!2 and timestamp 20060722121412 -->
|
||||||
|
<div class="printfooter">
|
||||||
|
Retrieved from "<a href="http://en.wikipedia.org/wiki/Tai_Chi_Chuan">http://en.wikipedia.org/wiki/Tai_Chi_Chuan</a>"</div>
|
||||||
|
<div id="catlinks"><p class='catlinks'><a href="/w/index.php?title=Special:Categories&article=Tai_Chi_Chuan" title="Special:Categories">Categories</a>: <span dir='ltr'><a href="/wiki/Category:Chinese_martial_arts" title="Category:Chinese martial arts">Chinese martial arts</a></span> | <span dir='ltr'><a href="/wiki/Category:T%27ai_Chi_Ch%27uan" title="Category:T'ai Chi Ch'uan">T'ai Chi Ch'uan</a></span> | <span dir='ltr'><a href="/wiki/Category:Taoism" title="Category:Taoism">Taoism</a></span> | <span dir='ltr'><a href="/wiki/Category:Meditation" title="Category:Meditation">Meditation</a></span> | <span dir='ltr'><a href="/wiki/Category:Mind-body_interventions" title="Category:Mind-body interventions">Mind-body interventions</a></span> | <span dir='ltr'><a href="/wiki/Category:Traditional_Chinese_medicine" title="Category:Traditional Chinese medicine">Traditional Chinese medicine</a></span></p></div> <!-- end content -->
|
||||||
|
|
||||||
|
<div class="visualClear"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="column-one">
|
||||||
|
<div id="p-cactions" class="portlet">
|
||||||
|
<h5>Views</h5>
|
||||||
|
<ul>
|
||||||
|
|
||||||
|
<li id="ca-nstab-main" class="selected"><a href="/wiki/Tai_Chi_Chuan">Article</a></li>
|
||||||
|
<li id="ca-talk"><a href="/wiki/Talk:Tai_Chi_Chuan">Discussion</a></li>
|
||||||
|
<li id="ca-edit"><a href="/w/index.php?title=Tai_Chi_Chuan&action=edit">Edit this page</a></li>
|
||||||
|
<li id="ca-history"><a href="/w/index.php?title=Tai_Chi_Chuan&action=history">History</a></li>
|
||||||
|
<li id="ca-protect"><a href="/w/index.php?title=Tai_Chi_Chuan&action=protect">Protect</a></li>
|
||||||
|
<li id="ca-delete"><a href="/w/index.php?title=Tai_Chi_Chuan&action=delete">Delete</a></li>
|
||||||
|
|
||||||
|
<li id="ca-move"><a href="/w/index.php?title=Special:Movepage&target=Tai_Chi_Chuan">Move</a></li>
|
||||||
|
<li id="ca-unwatch"><a href="/w/index.php?title=Tai_Chi_Chuan&action=unwatch">Unwatch</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="portlet" id="p-personal">
|
||||||
|
<h5>Personal tools</h5>
|
||||||
|
<div class="pBody">
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li id="pt-userpage"><a href="/wiki/User:Edward_Z._Yang">Edward Z. Yang</a></li>
|
||||||
|
<li id="pt-mytalk"><a href="/wiki/User_talk:Edward_Z._Yang">My talk</a></li>
|
||||||
|
<li id="pt-preferences"><a href="/wiki/Special:Preferences">My preferences</a></li>
|
||||||
|
<li id="pt-watchlist"><a href="/wiki/Special:Watchlist">My watchlist</a></li>
|
||||||
|
<li id="pt-mycontris"><a href="/wiki/Special:Contributions/Edward_Z._Yang">My contributions</a></li>
|
||||||
|
|
||||||
|
<li id="pt-logout"><a href="/w/index.php?title=Special:Userlogout&returnto=Tai_Chi_Chuan">Log out</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="portlet" id="p-logo">
|
||||||
|
<a style="background-image: url(/images/wiki-en.png);" href="/wiki/Main_Page" title="Main Page"></a>
|
||||||
|
</div>
|
||||||
|
<script type="text/javascript"> if (window.isMSIE55) fixalpha(); </script>
|
||||||
|
|
||||||
|
<div class='portlet' id='p-navigation'>
|
||||||
|
<h5>Navigation</h5>
|
||||||
|
<div class='pBody'>
|
||||||
|
<ul>
|
||||||
|
<li id="n-mainpage"><a href="/wiki/Main_Page">Main Page</a></li>
|
||||||
|
<li id="n-portal"><a href="/wiki/Wikipedia:Community_Portal">Community Portal</a></li>
|
||||||
|
<li id="n-Featured-articles"><a href="/wiki/Wikipedia:Featured_articles">Featured articles</a></li>
|
||||||
|
|
||||||
|
<li id="n-currentevents"><a href="/wiki/Portal:Current_events">Current events</a></li>
|
||||||
|
<li id="n-recentchanges"><a href="/wiki/Special:Recentchanges">Recent changes</a></li>
|
||||||
|
<li id="n-randompage"><a href="/wiki/Special:Random">Random article</a></li>
|
||||||
|
<li id="n-help"><a href="/wiki/Help:Contents">Help</a></li>
|
||||||
|
<li id="n-contact"><a href="/wiki/Wikipedia:Contact_us">Contact Wikipedia</a></li>
|
||||||
|
<li id="n-sitesupport"><a href="http://wikimediafoundation.org/wiki/Fundraising#Donation_methods">Donations</a></li>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="p-search" class="portlet">
|
||||||
|
<h5><label for="searchInput">Search</label></h5>
|
||||||
|
<div id="searchBody" class="pBody">
|
||||||
|
<form action="/wiki/Special:Search" id="searchform"><div>
|
||||||
|
<input id="searchInput" name="search" type="text" accesskey="f" value="" />
|
||||||
|
|
||||||
|
<input type='submit' name="go" class="searchButton" id="searchGoButton" value="Go" />
|
||||||
|
<input type='submit' name="fulltext" class="searchButton" value="Search" />
|
||||||
|
</div></form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="portlet" id="p-tb">
|
||||||
|
<h5>Toolbox</h5>
|
||||||
|
<div class="pBody">
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li id="t-whatlinkshere"><a href="/w/index.php?title=Special:Whatlinkshere&target=Tai_Chi_Chuan">What links here</a></li>
|
||||||
|
<li id="t-recentchangeslinked"><a href="/w/index.php?title=Special:Recentchangeslinked&target=Tai_Chi_Chuan">Related changes</a></li>
|
||||||
|
<li id="t-upload"><a href="/wiki/Special:Upload">Upload file</a></li>
|
||||||
|
<li id="t-specialpages"><a href="/wiki/Special:Specialpages">Special pages</a></li>
|
||||||
|
<li id="t-print"><a href="/w/index.php?title=Tai_Chi_Chuan&printable=yes">Printable version</a></li> <li id="t-permalink"><a href="/w/index.php?title=Tai_Chi_Chuan&oldid=65197836">Permanent link</a></li><li id="t-cite"><a href="/w/index.php?title=Special:Cite&page=Tai_Chi_Chuan&id=65197836">Cite this article</a></li> </ul>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="p-lang" class="portlet">
|
||||||
|
<h5>In other languages</h5>
|
||||||
|
<div class="pBody">
|
||||||
|
<ul>
|
||||||
|
<li class="interwiki-br"><a href="http://br.wikipedia.org/wiki/Taichichuan">Brezhoneg</a></li>
|
||||||
|
<li class="interwiki-ca"><a href="http://ca.wikipedia.org/wiki/Tai_txi_txuan">Català</a></li>
|
||||||
|
|
||||||
|
<li class="interwiki-cs"><a href="http://cs.wikipedia.org/wiki/Tchaj-%C5%A5i">Cesky</a></li>
|
||||||
|
<li class="interwiki-da"><a href="http://da.wikipedia.org/wiki/Tai_Chi">Dansk</a></li>
|
||||||
|
<li class="interwiki-de"><a href="http://de.wikipedia.org/wiki/Taijiquan">Deutsch</a></li>
|
||||||
|
<li class="interwiki-et"><a href="http://et.wikipedia.org/wiki/Taijiquan">Eesti</a></li>
|
||||||
|
<li class="interwiki-el"><a href="http://el.wikipedia.org/wiki/%CE%A4%CE%AC%CE%B9_%CE%A4%CE%B6%CE%AF_%CE%A3%CE%BF%CF%85%CE%AC%CE%BD">????????</a></li>
|
||||||
|
<li class="interwiki-es"><a href="http://es.wikipedia.org/wiki/Tai_Chi_Chuan">Español</a></li>
|
||||||
|
|
||||||
|
<li class="interwiki-eo"><a href="http://eo.wikipedia.org/wiki/Taj%C4%9Di%C4%89uano">Esperanto</a></li>
|
||||||
|
<li class="interwiki-fr"><a href="http://fr.wikipedia.org/wiki/Tai-chi-chuan">Français</a></li>
|
||||||
|
<li class="interwiki-it"><a href="http://it.wikipedia.org/wiki/Taijiquan">Italiano</a></li>
|
||||||
|
<li class="interwiki-he"><a href="http://he.wikipedia.org/wiki/%D7%98%D7%90%D7%99_%D7%A6%27%D7%99">?????</a></li>
|
||||||
|
<li class="interwiki-hu"><a href="http://hu.wikipedia.org/wiki/Taijiquan">Magyar</a></li>
|
||||||
|
<li class="interwiki-nl"><a href="http://nl.wikipedia.org/wiki/Tai_Chi">Nederlands</a></li>
|
||||||
|
|
||||||
|
<li class="interwiki-ja"><a href="http://ja.wikipedia.org/wiki/%E5%A4%AA%E6%A5%B5%E6%8B%B3">???</a></li>
|
||||||
|
<li class="interwiki-pl"><a href="http://pl.wikipedia.org/wiki/Taijiquan">Polski</a></li>
|
||||||
|
<li class="interwiki-pt"><a href="http://pt.wikipedia.org/wiki/Tai_Chi_Chuan">Português</a></li>
|
||||||
|
<li class="interwiki-ro"><a href="http://ro.wikipedia.org/wiki/Taijiquan">Româna</a></li>
|
||||||
|
<li class="interwiki-ru"><a href="http://ru.wikipedia.org/wiki/%D0%A2%D0%B0%D0%B9%D1%86%D0%B7%D0%B8%D1%86%D1%8E%D0%B0%D0%BD%D1%8C">???????</a></li>
|
||||||
|
<li class="interwiki-fi"><a href="http://fi.wikipedia.org/wiki/Taijiquan">Suomi</a></li>
|
||||||
|
|
||||||
|
<li class="interwiki-sv"><a href="http://sv.wikipedia.org/wiki/Taijiquan">Svenska</a></li>
|
||||||
|
<li class="interwiki-th"><a href="http://th.wikipedia.org/wiki/%E0%B9%84%E0%B8%97%E0%B9%88%E0%B9%80%E0%B8%81%E0%B9%8A%E0%B8%81">???</a></li>
|
||||||
|
<li class="interwiki-tr"><a href="http://tr.wikipedia.org/wiki/Tai-Chi_Chuan">Türkçe</a></li>
|
||||||
|
<li class="interwiki-zh"><a href="http://zh.wikipedia.org/wiki/%E5%A4%AA%E6%9E%81%E6%8B%B3">??</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div><!-- end of the left (by default at least) column -->
|
||||||
|
<div class="visualClear"></div>
|
||||||
|
<div id="footer">
|
||||||
|
<div id="f-poweredbyico"><a href="http://www.mediawiki.org/"><img src="/skins-1.5/common/images/poweredby_mediawiki_88x31.png" alt="MediaWiki" /></a></div>
|
||||||
|
<div id="f-copyrightico"><a href="http://wikimediafoundation.org/"><img src="/images/wikimedia-button.png" border="0" alt="Wikimedia Foundation"/></a></div>
|
||||||
|
<ul id="f-list">
|
||||||
|
<li id="lastmod"> This page was last modified 03:15, July 22, 2006.</li>
|
||||||
|
<li id="copyright">All text is available under the terms of the <a class='internal' href="/wiki/Wikipedia:Text_of_the_GNU_Free_Documentation_License" title="Wikipedia:Text of the GNU Free Documentation License">GNU Free Documentation License</a>. (See <b><a class='internal' href="/wiki/Wikipedia:Copyrights" title="Wikipedia:Copyrights">Copyrights</a></b> for details.) <br /> Wikipedia® is a registered trademark of the Wikimedia Foundation, Inc.<br /></li>
|
||||||
|
|
||||||
|
<li id="privacy"><a href="http://wikimediafoundation.org/wiki/Privacy_policy" title="wikimedia:Privacy policy">Privacy policy</a></li>
|
||||||
|
<li id="about"><a href="/wiki/Wikipedia:About" title="Wikipedia:About">About Wikipedia</a></li>
|
||||||
|
<li id="disclaimer"><a href="/wiki/Wikipedia:General_disclaimer" title="Wikipedia:General disclaimer">Disclaimers</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<script type="text/javascript"> if (window.runOnloadHook) runOnloadHook();</script>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Served by srv25 in 0.089 secs. -->
|
||||||
|
</body></html>
|
||||||
|
|
||||||
|
<!-- vim: et sw=4 sts=4
|
||||||
|
-->
|
|
@ -0,0 +1,7 @@
|
||||||
|
Disclaimer:
|
||||||
|
|
||||||
|
The HTML used in these samples are taken from random websites. I claim
|
||||||
|
no copyright over these and assert that I may use them like this under
|
||||||
|
fair use.
|
||||||
|
|
||||||
|
vim: et sw=4 sts=4
|
25
libraries/htmlpurifier-4.14.0/composer.json
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
{
|
||||||
|
"name": "ezyang/htmlpurifier",
|
||||||
|
"description": "Standards compliant HTML filter written in PHP",
|
||||||
|
"type": "library",
|
||||||
|
"keywords": ["html"],
|
||||||
|
"homepage": "http://htmlpurifier.org/",
|
||||||
|
"license": "LGPL-2.1-or-later",
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Edward Z. Yang",
|
||||||
|
"email": "admin@htmlpurifier.org",
|
||||||
|
"homepage": "http://ezyang.com"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"require": {
|
||||||
|
"php": ">=5.2"
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"psr-0": { "HTMLPurifier": "library/" },
|
||||||
|
"files": ["library/HTMLPurifier.composer.php"],
|
||||||
|
"exclude-from-classmap": [
|
||||||
|
"/library/HTMLPurifier/Language/"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
64
libraries/htmlpurifier-4.14.0/configdoc/generate.php
Normal file
|
@ -0,0 +1,64 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Generates XML and HTML documents describing configuration.
|
||||||
|
* @note PHP 5.2+ only!
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
TODO:
|
||||||
|
- make XML format richer
|
||||||
|
- extend XSLT transformation (see the corresponding XSLT file)
|
||||||
|
- allow generation of packaged docs that can be easily moved
|
||||||
|
- multipage documentation
|
||||||
|
- determine how to multilingualize
|
||||||
|
- add blurbs to ToC
|
||||||
|
*/
|
||||||
|
|
||||||
|
if (version_compare(PHP_VERSION, '5.2', '<')) exit('PHP 5.2+ required.');
|
||||||
|
error_reporting(E_ALL | E_STRICT);
|
||||||
|
|
||||||
|
// load dual-libraries
|
||||||
|
require_once dirname(__FILE__) . '/../extras/HTMLPurifierExtras.auto.php';
|
||||||
|
require_once dirname(__FILE__) . '/../library/HTMLPurifier.auto.php';
|
||||||
|
|
||||||
|
// setup HTML Purifier singleton
|
||||||
|
HTMLPurifier::getInstance(array(
|
||||||
|
'AutoFormat.PurifierLinkify' => true
|
||||||
|
));
|
||||||
|
|
||||||
|
$builder = new HTMLPurifier_ConfigSchema_InterchangeBuilder();
|
||||||
|
$interchange = new HTMLPurifier_ConfigSchema_Interchange();
|
||||||
|
$builder->buildDir($interchange);
|
||||||
|
$loader = dirname(__FILE__) . '/../config-schema.php';
|
||||||
|
if (file_exists($loader)) include $loader;
|
||||||
|
$interchange->validate();
|
||||||
|
|
||||||
|
$style = 'plain'; // use $_GET in the future, careful to validate!
|
||||||
|
$configdoc_xml = dirname(__FILE__) . '/configdoc.xml';
|
||||||
|
|
||||||
|
$xml_builder = new HTMLPurifier_ConfigSchema_Builder_Xml();
|
||||||
|
$xml_builder->openURI($configdoc_xml);
|
||||||
|
$xml_builder->build($interchange);
|
||||||
|
unset($xml_builder); // free handle
|
||||||
|
|
||||||
|
$xslt = new ConfigDoc_HTMLXSLTProcessor();
|
||||||
|
$xslt->importStylesheet(dirname(__FILE__) . "/styles/$style.xsl");
|
||||||
|
$output = $xslt->transformToHTML($configdoc_xml);
|
||||||
|
|
||||||
|
if (!$output) {
|
||||||
|
echo "Error in generating files\n";
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
// write out
|
||||||
|
file_put_contents(dirname(__FILE__) . "/$style.html", $output);
|
||||||
|
|
||||||
|
if (php_sapi_name() != 'cli') {
|
||||||
|
// output (instant feedback if it's a browser)
|
||||||
|
echo $output;
|
||||||
|
} else {
|
||||||
|
echo "Files generated successfully.\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
// vim: et sw=4 sts=4
|
44
libraries/htmlpurifier-4.14.0/configdoc/styles/plain.css
Normal file
|
@ -0,0 +1,44 @@
|
||||||
|
|
||||||
|
body {margin:0;padding:0;}
|
||||||
|
#content {
|
||||||
|
margin:1em auto;
|
||||||
|
max-width: 47em;
|
||||||
|
width: expression(document.body.clientWidth >
|
||||||
|
85 * parseInt(document.body.currentStyle.fontSize) ?
|
||||||
|
"54em": "auto");
|
||||||
|
}
|
||||||
|
|
||||||
|
table {border-collapse:collapse;}
|
||||||
|
table td, table th {padding:0.2em;}
|
||||||
|
|
||||||
|
table.constraints {margin:0 0 1em;}
|
||||||
|
table.constraints th {
|
||||||
|
text-align:right;padding-left:0.4em;padding-right:0.4em;background:#EEE;
|
||||||
|
width:8em;vertical-align:top;}
|
||||||
|
table.constraints td {padding-right:0.4em; padding-left: 1em;}
|
||||||
|
table.constraints td ul {padding:0; margin:0; list-style:none;}
|
||||||
|
table.constraints td pre {margin:0;}
|
||||||
|
|
||||||
|
#tocContainer {position:relative;}
|
||||||
|
#toc {list-style-type:none; font-weight:bold; font-size:1em; margin-bottom:1em;}
|
||||||
|
#toc li {position:relative; line-height: 1.2em;}
|
||||||
|
#toc .col-2 {margin-left:50%;}
|
||||||
|
#toc .col-l {float:left;}
|
||||||
|
#toc ul {list-style-type:disc; font-weight:normal; padding-bottom:1.2em;}
|
||||||
|
|
||||||
|
.description p {margin-top:0;margin-bottom:1em;}
|
||||||
|
|
||||||
|
#library, h1 {text-align:center; font-family:Garamond, serif;
|
||||||
|
font-variant:small-caps;}
|
||||||
|
#library {font-size:1em;}
|
||||||
|
h1 {margin-top:0;}
|
||||||
|
h2 {border-bottom:1px solid #CCC; font-family:sans-serif; font-weight:normal;
|
||||||
|
font-size:1.3em; clear:both;}
|
||||||
|
h3 {font-family:sans-serif; font-size:1.1em; font-weight:bold; }
|
||||||
|
h4 {font-family:sans-serif; font-size:0.9em; font-weight:bold; }
|
||||||
|
|
||||||
|
.deprecated {color: #CCC;}
|
||||||
|
.deprecated table.constraints th {background:#FFF;}
|
||||||
|
.deprecated-notice {color: #000; text-align:center; margin-bottom: 1em;}
|
||||||
|
|
||||||
|
/* vim: et sw=4 sts=4 */
|
253
libraries/htmlpurifier-4.14.0/configdoc/styles/plain.xsl
Normal file
|
@ -0,0 +1,253 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<xsl:stylesheet
|
||||||
|
version = "1.0"
|
||||||
|
xmlns = "http://www.w3.org/1999/xhtml"
|
||||||
|
xmlns:xsl = "http://www.w3.org/1999/XSL/Transform"
|
||||||
|
>
|
||||||
|
<xsl:output
|
||||||
|
method = "xml"
|
||||||
|
encoding = "UTF-8"
|
||||||
|
doctype-public = "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||||
|
doctype-system = "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
|
||||||
|
indent = "no"
|
||||||
|
media-type = "text/html"
|
||||||
|
/>
|
||||||
|
<xsl:param name="css" select="'styles/plain.css'"/>
|
||||||
|
<xsl:param name="title" select="'Configuration Documentation'"/>
|
||||||
|
|
||||||
|
<xsl:variable name="typeLookup" select="document('../types.xml')/types" />
|
||||||
|
<xsl:variable name="usageLookup" select="document('../usage.xml')/usage" />
|
||||||
|
|
||||||
|
<!-- Twiddle this variable to get the columns as even as possible -->
|
||||||
|
<xsl:variable name="maxNumberAdjust" select="2" />
|
||||||
|
|
||||||
|
<xsl:template match="/">
|
||||||
|
<html lang="en" xml:lang="en">
|
||||||
|
<head>
|
||||||
|
<title><xsl:value-of select="$title" /> - <xsl:value-of select="/configdoc/title" /></title>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
|
||||||
|
<link rel="stylesheet" type="text/css" href="{$css}" />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="content">
|
||||||
|
<div id="library"><xsl:value-of select="/configdoc/title" /></div>
|
||||||
|
<h1><xsl:value-of select="$title" /></h1>
|
||||||
|
<div id="tocContainer">
|
||||||
|
<h2>Table of Contents</h2>
|
||||||
|
<ul id="toc">
|
||||||
|
<xsl:apply-templates mode="toc">
|
||||||
|
<xsl:with-param name="overflowNumber" select="round(count(/configdoc/namespace) div 2) + $maxNumberAdjust" />
|
||||||
|
</xsl:apply-templates>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div id="typesContainer">
|
||||||
|
<h2>Types</h2>
|
||||||
|
<xsl:apply-templates select="$typeLookup" mode="types" />
|
||||||
|
</div>
|
||||||
|
<xsl:apply-templates />
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template match="type" mode="types">
|
||||||
|
<div class="type-block">
|
||||||
|
<xsl:attribute name="id">type-<xsl:value-of select="@id" /></xsl:attribute>
|
||||||
|
<h3><code><xsl:value-of select="@id" /></code>: <xsl:value-of select="@name" /></h3>
|
||||||
|
<div class="type-description">
|
||||||
|
<xsl:copy-of xmlns:xhtml="http://www.w3.org/1999/xhtml" select="xhtml:div/node()" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template match="title" mode="toc" />
|
||||||
|
<xsl:template match="namespace" mode="toc">
|
||||||
|
<xsl:param name="overflowNumber" />
|
||||||
|
<xsl:variable name="number"><xsl:number level="single" /></xsl:variable>
|
||||||
|
<xsl:variable name="directiveNumber"><xsl:number level="any" count="directive" /></xsl:variable>
|
||||||
|
<xsl:if test="count(directive)>0">
|
||||||
|
<li>
|
||||||
|
<!-- BEGIN multicolumn code -->
|
||||||
|
<xsl:if test="$number >= $overflowNumber">
|
||||||
|
<xsl:attribute name="class">col-2</xsl:attribute>
|
||||||
|
</xsl:if>
|
||||||
|
<xsl:if test="$number = $overflowNumber">
|
||||||
|
<xsl:attribute name="style">margin-top:-<xsl:value-of select="($number * 2 + $directiveNumber - 3) * 1.2" />em</xsl:attribute>
|
||||||
|
</xsl:if>
|
||||||
|
<!-- END multicolumn code -->
|
||||||
|
<a href="#{@id}"><xsl:value-of select="name" /></a>
|
||||||
|
<ul>
|
||||||
|
<xsl:apply-templates select="directive" mode="toc">
|
||||||
|
<xsl:with-param name="overflowNumber" select="$overflowNumber" />
|
||||||
|
</xsl:apply-templates>
|
||||||
|
</ul>
|
||||||
|
<xsl:if test="$number + 1 = $overflowNumber">
|
||||||
|
<div class="col-l" />
|
||||||
|
</xsl:if>
|
||||||
|
</li>
|
||||||
|
</xsl:if>
|
||||||
|
</xsl:template>
|
||||||
|
<xsl:template match="directive" mode="toc">
|
||||||
|
<xsl:variable name="number">
|
||||||
|
<xsl:number level="any" count="directive|namespace" />
|
||||||
|
</xsl:variable>
|
||||||
|
<xsl:if test="not(deprecated)">
|
||||||
|
<li>
|
||||||
|
<a href="#{@id}"><xsl:value-of select="name" /></a>
|
||||||
|
</li>
|
||||||
|
</xsl:if>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template match="title" />
|
||||||
|
|
||||||
|
<xsl:template match="namespace">
|
||||||
|
<div class="namespace">
|
||||||
|
<xsl:apply-templates />
|
||||||
|
<xsl:if test="count(directive)=0">
|
||||||
|
<p>No configuration directives defined for this namespace.</p>
|
||||||
|
</xsl:if>
|
||||||
|
</div>
|
||||||
|
</xsl:template>
|
||||||
|
<xsl:template match="namespace/name">
|
||||||
|
<h2 id="{../@id}"><xsl:value-of select="." /></h2>
|
||||||
|
</xsl:template>
|
||||||
|
<xsl:template match="namespace/description">
|
||||||
|
<div class="description">
|
||||||
|
<xsl:copy-of xmlns:xhtml="http://www.w3.org/1999/xhtml" select="xhtml:div/node()" />
|
||||||
|
</div>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template match="directive">
|
||||||
|
<div>
|
||||||
|
<xsl:attribute name="class"><!--
|
||||||
|
-->directive<!--
|
||||||
|
--><xsl:if test="deprecated"> deprecated</xsl:if><!--
|
||||||
|
--></xsl:attribute>
|
||||||
|
<xsl:apply-templates>
|
||||||
|
<xsl:with-param name="id" select="@id" />
|
||||||
|
</xsl:apply-templates>
|
||||||
|
</div>
|
||||||
|
</xsl:template>
|
||||||
|
<xsl:template match="directive/name">
|
||||||
|
<xsl:param name="id" />
|
||||||
|
<xsl:apply-templates select="../aliases/alias" mode="anchor" />
|
||||||
|
<h3 id="{$id}"><xsl:value-of select="$id" /></h3>
|
||||||
|
</xsl:template>
|
||||||
|
<xsl:template match="alias" mode="anchor">
|
||||||
|
<a id="{.}"></a>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<!-- Do not pass through -->
|
||||||
|
<xsl:template match="alias"></xsl:template>
|
||||||
|
|
||||||
|
<xsl:template match="directive/constraints">
|
||||||
|
<xsl:param name="id" />
|
||||||
|
<table class="constraints">
|
||||||
|
<xsl:apply-templates />
|
||||||
|
<xsl:if test="../aliases/alias">
|
||||||
|
<xsl:apply-templates select="../aliases" mode="constraints" />
|
||||||
|
</xsl:if>
|
||||||
|
<xsl:apply-templates select="$usageLookup/directive[@id=$id]" />
|
||||||
|
</table>
|
||||||
|
</xsl:template>
|
||||||
|
<xsl:template match="directive/aliases" mode="constraints">
|
||||||
|
<tr>
|
||||||
|
<th>Aliases</th>
|
||||||
|
<td>
|
||||||
|
<xsl:for-each select="alias">
|
||||||
|
<xsl:if test="position()>1">, </xsl:if>
|
||||||
|
<xsl:value-of select="." />
|
||||||
|
</xsl:for-each>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</xsl:template>
|
||||||
|
<xsl:template match="directive/description">
|
||||||
|
<div class="description">
|
||||||
|
<xsl:copy-of xmlns:xhtml="http://www.w3.org/1999/xhtml" select="xhtml:div/node()" />
|
||||||
|
</div>
|
||||||
|
</xsl:template>
|
||||||
|
<xsl:template match="directive/deprecated">
|
||||||
|
<div class="deprecated-notice">
|
||||||
|
<strong>Warning:</strong>
|
||||||
|
This directive was deprecated in version <xsl:value-of select="version" />.
|
||||||
|
<a href="#{use}">%<xsl:value-of select="use" /></a> should be used instead.
|
||||||
|
</div>
|
||||||
|
</xsl:template>
|
||||||
|
<xsl:template match="usage/directive">
|
||||||
|
<tr>
|
||||||
|
<th>Used in</th>
|
||||||
|
<td>
|
||||||
|
<ul>
|
||||||
|
<xsl:apply-templates />
|
||||||
|
</ul>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</xsl:template>
|
||||||
|
<xsl:template match="usage/directive/file">
|
||||||
|
<li>
|
||||||
|
<em><xsl:value-of select="@name" /></em> on line<xsl:if test="count(line)>1">s</xsl:if>
|
||||||
|
<xsl:text> </xsl:text>
|
||||||
|
<xsl:for-each select="line">
|
||||||
|
<xsl:if test="position()>1">, </xsl:if>
|
||||||
|
<xsl:value-of select="." />
|
||||||
|
</xsl:for-each>
|
||||||
|
</li>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template match="constraints/version">
|
||||||
|
<tr>
|
||||||
|
<th>Version added</th>
|
||||||
|
<td><xsl:value-of select="." /></td>
|
||||||
|
</tr>
|
||||||
|
</xsl:template>
|
||||||
|
<xsl:template match="constraints/type">
|
||||||
|
<tr>
|
||||||
|
<th>Type</th>
|
||||||
|
<td>
|
||||||
|
<xsl:variable name="type" select="text()" />
|
||||||
|
<xsl:attribute name="class">type type-<xsl:value-of select="$type" /></xsl:attribute>
|
||||||
|
<a>
|
||||||
|
<xsl:attribute name="href">#type-<xsl:value-of select="$type" /></xsl:attribute>
|
||||||
|
<xsl:value-of select="$typeLookup/type[@id=$type]/@name" />
|
||||||
|
<xsl:if test="@allow-null='yes'">
|
||||||
|
(or null)
|
||||||
|
</xsl:if>
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</xsl:template>
|
||||||
|
<xsl:template match="constraints/allowed">
|
||||||
|
<tr>
|
||||||
|
<th>Allowed values</th>
|
||||||
|
<td>
|
||||||
|
<xsl:for-each select="value"><!--
|
||||||
|
--><xsl:if test="position()>1">, </xsl:if>
|
||||||
|
"<xsl:value-of select="." />"<!--
|
||||||
|
--></xsl:for-each>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</xsl:template>
|
||||||
|
<xsl:template match="constraints/default">
|
||||||
|
<tr>
|
||||||
|
<th>Default</th>
|
||||||
|
<td><pre><xsl:value-of select="." xml:space="preserve" /></pre></td>
|
||||||
|
</tr>
|
||||||
|
</xsl:template>
|
||||||
|
<xsl:template match="constraints/external">
|
||||||
|
<tr>
|
||||||
|
<th>External deps</th>
|
||||||
|
<td>
|
||||||
|
<ul>
|
||||||
|
<xsl:apply-templates />
|
||||||
|
</ul>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</xsl:template>
|
||||||
|
<xsl:template match="constraints/external/project">
|
||||||
|
<li><xsl:value-of select="." /></li>
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
</xsl:stylesheet>
|
||||||
|
|
||||||
|
<!-- vim: et sw=4 sts=4
|
||||||
|
-->
|
69
libraries/htmlpurifier-4.14.0/configdoc/types.xml
Normal file
|
@ -0,0 +1,69 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<types>
|
||||||
|
<type id="string" name="String"><div xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
A <a
|
||||||
|
href="http://docs.php.net/manual/en/language.types.string.php">sequence
|
||||||
|
of characters</a>.
|
||||||
|
</div></type>
|
||||||
|
<type id="istring" name="Case-insensitive string"><div xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
A series of case-insensitive characters. Internally, upper-case
|
||||||
|
ASCII characters will be converted to lower-case.
|
||||||
|
</div></type>
|
||||||
|
<type id="text" name="Text"><div xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
A series of characters that may contain newlines. Text tends to
|
||||||
|
indicate human-oriented text, as opposed to a machine format.
|
||||||
|
</div></type>
|
||||||
|
<type id="itext" name="Case-insensitive text"><div xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
A series of case-insensitive characters that may contain newlines.
|
||||||
|
</div></type>
|
||||||
|
<type id="int" name="Integer"><div xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
An <a
|
||||||
|
href="http://docs.php.net/manual/en/language.types.integer.php">
|
||||||
|
integer</a>. You are alternatively permitted to pass a string of
|
||||||
|
digits instead, which will be cast to an integer using
|
||||||
|
<code>(int)</code>.
|
||||||
|
</div></type>
|
||||||
|
<type id="float" name="Float"><div xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
A <a href="http://docs.php.net/manual/en/language.types.float.php">
|
||||||
|
floating point number</a>. You are alternatively permitted to
|
||||||
|
pass a numeric string (as defined by <code>is_numeric()</code>),
|
||||||
|
which will be cast to a float using <code>(float)</code>.
|
||||||
|
</div></type>
|
||||||
|
<type id="bool" name="Boolean"><div xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
A <a
|
||||||
|
href="http://docs.php.net/manual/en/language.types.boolean.php">boolean</a>.
|
||||||
|
You are alternatively permitted to pass an integer <code>0</code> or
|
||||||
|
<code>1</code> (other integers are not permitted) or a string
|
||||||
|
<code>"on"</code>, <code>"true"</code> or <code>"1"</code> for
|
||||||
|
<code>true</code>, and <code>"off"</code>, <code>"false"</code> or
|
||||||
|
<code>"0"</code> for <code>false</code>.
|
||||||
|
</div></type>
|
||||||
|
<type id="lookup" name="Lookup array"><div xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
An array whose values are <code>true</code>, e.g. <code>array('key'
|
||||||
|
=> true, 'key2' => true)</code>. You are alternatively permitted
|
||||||
|
to pass an array list of the keys <code>array('key', 'key2')</code>
|
||||||
|
or a comma-separated string of keys <code>"key, key2"</code>. If
|
||||||
|
you pass an array list of values, ensure that your values are
|
||||||
|
strictly numerically indexed: <code>array('key1', 2 =>
|
||||||
|
'key2')</code> will not do what you expect and emits a warning.
|
||||||
|
</div></type>
|
||||||
|
<type id="list" name="Array list"><div xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
An array which has consecutive integer indexes, e.g.
|
||||||
|
<code>array('val1', 'val2')</code>. You are alternatively permitted
|
||||||
|
to pass a comma-separated string of keys <code>"val1, val2"</code>.
|
||||||
|
If your array is not in this form, <code>array_values</code> is run
|
||||||
|
on the array and a warning is emitted.
|
||||||
|
</div></type>
|
||||||
|
<type id="hash" name="Associative array"><div xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
An array which is a mapping of keys to values, e.g.
|
||||||
|
<code>array('key1' => 'val1', 'key2' => 'val2')</code>. You are
|
||||||
|
alternatively permitted to pass a comma-separated string of
|
||||||
|
key-colon-value strings, e.g. <code>"key1: val1, key2: val2"</code>.
|
||||||
|
</div></type>
|
||||||
|
<type id="mixed" name="Mixed"><div xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
An arbitrary PHP value of any type.
|
||||||
|
</div></type>
|
||||||
|
</types>
|
||||||
|
|
||||||
|
<!-- vim: et sw=4 sts=4
|
||||||
|
-->
|
600
libraries/htmlpurifier-4.14.0/configdoc/usage.xml
Normal file
|
@ -0,0 +1,600 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<usage>
|
||||||
|
<directive id="Core.CollectErrors">
|
||||||
|
<file name="HTMLPurifier.php">
|
||||||
|
<line>162</line>
|
||||||
|
</file>
|
||||||
|
<file name="HTMLPurifier/Lexer.php">
|
||||||
|
<line>85</line>
|
||||||
|
<line>326</line>
|
||||||
|
</file>
|
||||||
|
<file name="HTMLPurifier/Lexer/DirectLex.php">
|
||||||
|
<line>67</line>
|
||||||
|
<line>87</line>
|
||||||
|
<line>385</line>
|
||||||
|
</file>
|
||||||
|
<file name="HTMLPurifier/Strategy/RemoveForeignElements.php">
|
||||||
|
<line>57</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
<directive id="CSS.MaxImgLength">
|
||||||
|
<file name="HTMLPurifier/CSSDefinition.php">
|
||||||
|
<line>256</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
<directive id="CSS.Proprietary">
|
||||||
|
<file name="HTMLPurifier/CSSDefinition.php">
|
||||||
|
<line>381</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
<directive id="CSS.AllowTricky">
|
||||||
|
<file name="HTMLPurifier/CSSDefinition.php">
|
||||||
|
<line>385</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
<directive id="CSS.Trusted">
|
||||||
|
<file name="HTMLPurifier/CSSDefinition.php">
|
||||||
|
<line>389</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
<directive id="CSS.AllowImportant">
|
||||||
|
<file name="HTMLPurifier/CSSDefinition.php">
|
||||||
|
<line>393</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
<directive id="CSS.AllowedProperties">
|
||||||
|
<file name="HTMLPurifier/CSSDefinition.php">
|
||||||
|
<line>522</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
<directive id="CSS.ForbiddenProperties">
|
||||||
|
<file name="HTMLPurifier/CSSDefinition.php">
|
||||||
|
<line>538</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
<directive id="Cache.DefinitionImpl">
|
||||||
|
<file name="HTMLPurifier/DefinitionCacheFactory.php">
|
||||||
|
<line>66</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
<directive id="HTML.Doctype">
|
||||||
|
<file name="HTMLPurifier/DoctypeRegistry.php">
|
||||||
|
<line>119</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
<directive id="HTML.CustomDoctype">
|
||||||
|
<file name="HTMLPurifier/DoctypeRegistry.php">
|
||||||
|
<line>123</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
<directive id="HTML.XHTML">
|
||||||
|
<file name="HTMLPurifier/DoctypeRegistry.php">
|
||||||
|
<line>128</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
<directive id="HTML.Strict">
|
||||||
|
<file name="HTMLPurifier/DoctypeRegistry.php">
|
||||||
|
<line>133</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
<directive id="Core.Encoding">
|
||||||
|
<file name="HTMLPurifier/Encoder.php">
|
||||||
|
<line>380</line>
|
||||||
|
<line>428</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
<directive id="Test.ForceNoIconv">
|
||||||
|
<file name="HTMLPurifier/Encoder.php">
|
||||||
|
<line>388</line>
|
||||||
|
<line>439</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
<directive id="Core.EscapeNonASCIICharacters">
|
||||||
|
<file name="HTMLPurifier/Encoder.php">
|
||||||
|
<line>429</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
<directive id="Output.CommentScriptContents">
|
||||||
|
<file name="HTMLPurifier/Generator.php">
|
||||||
|
<line>70</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
<directive id="Output.FixInnerHTML">
|
||||||
|
<file name="HTMLPurifier/Generator.php">
|
||||||
|
<line>71</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
<directive id="Output.SortAttr">
|
||||||
|
<file name="HTMLPurifier/Generator.php">
|
||||||
|
<line>72</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
<directive id="Output.FlashCompat">
|
||||||
|
<file name="HTMLPurifier/Generator.php">
|
||||||
|
<line>73</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
<directive id="Output.TidyFormat">
|
||||||
|
<file name="HTMLPurifier/Generator.php">
|
||||||
|
<line>104</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
<directive id="Core.NormalizeNewlines">
|
||||||
|
<file name="HTMLPurifier/Generator.php">
|
||||||
|
<line>122</line>
|
||||||
|
</file>
|
||||||
|
<file name="HTMLPurifier/Lexer.php">
|
||||||
|
<line>308</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
<directive id="Output.Newline">
|
||||||
|
<file name="HTMLPurifier/Generator.php">
|
||||||
|
<line>123</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
<directive id="HTML.BlockWrapper">
|
||||||
|
<file name="HTMLPurifier/HTMLDefinition.php">
|
||||||
|
<line>263</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
<directive id="HTML.Parent">
|
||||||
|
<file name="HTMLPurifier/HTMLDefinition.php">
|
||||||
|
<line>273</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
<directive id="HTML.AllowedElements">
|
||||||
|
<file name="HTMLPurifier/HTMLDefinition.php">
|
||||||
|
<line>291</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
<directive id="HTML.AllowedAttributes">
|
||||||
|
<file name="HTMLPurifier/HTMLDefinition.php">
|
||||||
|
<line>292</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
<directive id="HTML.Allowed">
|
||||||
|
<file name="HTMLPurifier/HTMLDefinition.php">
|
||||||
|
<line>295</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
<directive id="HTML.ForbiddenElements">
|
||||||
|
<file name="HTMLPurifier/HTMLDefinition.php">
|
||||||
|
<line>399</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
<directive id="HTML.ForbiddenAttributes">
|
||||||
|
<file name="HTMLPurifier/HTMLDefinition.php">
|
||||||
|
<line>400</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
<directive id="HTML.Trusted">
|
||||||
|
<file name="HTMLPurifier/HTMLModuleManager.php">
|
||||||
|
<line>234</line>
|
||||||
|
</file>
|
||||||
|
<file name="HTMLPurifier/Lexer.php">
|
||||||
|
<line>313</line>
|
||||||
|
<line>353</line>
|
||||||
|
</file>
|
||||||
|
<file name="HTMLPurifier/HTMLModule/Image.php">
|
||||||
|
<line>37</line>
|
||||||
|
</file>
|
||||||
|
<file name="HTMLPurifier/Lexer/DirectLex.php">
|
||||||
|
<line>47</line>
|
||||||
|
</file>
|
||||||
|
<file name="HTMLPurifier/Strategy/RemoveForeignElements.php">
|
||||||
|
<line>30</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
<directive id="HTML.AllowedModules">
|
||||||
|
<file name="HTMLPurifier/HTMLModuleManager.php">
|
||||||
|
<line>241</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
<directive id="HTML.CoreModules">
|
||||||
|
<file name="HTMLPurifier/HTMLModuleManager.php">
|
||||||
|
<line>242</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
<directive id="HTML.Proprietary">
|
||||||
|
<file name="HTMLPurifier/HTMLModuleManager.php">
|
||||||
|
<line>256</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
<directive id="HTML.SafeObject">
|
||||||
|
<file name="HTMLPurifier/HTMLModuleManager.php">
|
||||||
|
<line>259</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
<directive id="HTML.SafeEmbed">
|
||||||
|
<file name="HTMLPurifier/HTMLModuleManager.php">
|
||||||
|
<line>262</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
<directive id="HTML.SafeScripting">
|
||||||
|
<file name="HTMLPurifier/HTMLModuleManager.php">
|
||||||
|
<line>265</line>
|
||||||
|
</file>
|
||||||
|
<file name="HTMLPurifier/HTMLModule/SafeScripting.php">
|
||||||
|
<line>22</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
<directive id="HTML.Nofollow">
|
||||||
|
<file name="HTMLPurifier/HTMLModuleManager.php">
|
||||||
|
<line>268</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
<directive id="HTML.TargetBlank">
|
||||||
|
<file name="HTMLPurifier/HTMLModuleManager.php">
|
||||||
|
<line>271</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
<directive id="HTML.TargetNoreferrer">
|
||||||
|
<file name="HTMLPurifier/HTMLModuleManager.php">
|
||||||
|
<line>276</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
<directive id="HTML.TargetNoopener">
|
||||||
|
<file name="HTMLPurifier/HTMLModuleManager.php">
|
||||||
|
<line>279</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
<directive id="Attr.IDBlacklist">
|
||||||
|
<file name="HTMLPurifier/IDAccumulator.php">
|
||||||
|
<line>27</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
<directive id="Core.Language">
|
||||||
|
<file name="HTMLPurifier/LanguageFactory.php">
|
||||||
|
<line>93</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
<directive id="Core.LexerImpl">
|
||||||
|
<file name="HTMLPurifier/Lexer.php">
|
||||||
|
<line>80</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
<directive id="Core.MaintainLineNumbers">
|
||||||
|
<file name="HTMLPurifier/Lexer.php">
|
||||||
|
<line>84</line>
|
||||||
|
</file>
|
||||||
|
<file name="HTMLPurifier/Lexer/DirectLex.php">
|
||||||
|
<line>62</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
<directive id="Core.LegacyEntityDecoder">
|
||||||
|
<file name="HTMLPurifier/Lexer.php">
|
||||||
|
<line>215</line>
|
||||||
|
<line>337</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
<directive id="Core.ConvertDocumentToFragment">
|
||||||
|
<file name="HTMLPurifier/Lexer.php">
|
||||||
|
<line>324</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
<directive id="Core.RemoveProcessingInstructions">
|
||||||
|
<file name="HTMLPurifier/Lexer.php">
|
||||||
|
<line>347</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
<directive id="Core.HiddenElements">
|
||||||
|
<file name="HTMLPurifier/Lexer.php">
|
||||||
|
<line>351</line>
|
||||||
|
</file>
|
||||||
|
<file name="HTMLPurifier/Strategy/RemoveForeignElements.php">
|
||||||
|
<line>36</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
<directive id="Core.AggressivelyRemoveScript">
|
||||||
|
<file name="HTMLPurifier/Lexer.php">
|
||||||
|
<line>352</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
<directive id="Core.RemoveScriptContents">
|
||||||
|
<file name="HTMLPurifier/Lexer.php">
|
||||||
|
<line>353</line>
|
||||||
|
</file>
|
||||||
|
<file name="HTMLPurifier/Strategy/RemoveForeignElements.php">
|
||||||
|
<line>35</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
<directive id="URI.">
|
||||||
|
<file name="HTMLPurifier/URIDefinition.php">
|
||||||
|
<line>65</line>
|
||||||
|
</file>
|
||||||
|
<file name="HTMLPurifier/URIFilter/Munge.php">
|
||||||
|
<line>46</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
<directive id="URI.Host">
|
||||||
|
<file name="HTMLPurifier/URIDefinition.php">
|
||||||
|
<line>76</line>
|
||||||
|
</file>
|
||||||
|
<file name="HTMLPurifier/URIScheme.php">
|
||||||
|
<line>89</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
<directive id="URI.Base">
|
||||||
|
<file name="HTMLPurifier/URIDefinition.php">
|
||||||
|
<line>77</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
<directive id="URI.DefaultScheme">
|
||||||
|
<file name="HTMLPurifier/URIDefinition.php">
|
||||||
|
<line>84</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
<directive id="URI.AllowedSchemes">
|
||||||
|
<file name="HTMLPurifier/URISchemeRegistry.php">
|
||||||
|
<line>48</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
<directive id="URI.OverrideAllowedSchemes">
|
||||||
|
<file name="HTMLPurifier/URISchemeRegistry.php">
|
||||||
|
<line>49</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
<directive id="CSS.AllowDuplicates">
|
||||||
|
<file name="HTMLPurifier/AttrDef/CSS.php">
|
||||||
|
<line>28</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
<directive id="URI.Disable">
|
||||||
|
<file name="HTMLPurifier/AttrDef/URI.php">
|
||||||
|
<line>47</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
<directive id="Core.ColorKeywords">
|
||||||
|
<file name="HTMLPurifier/AttrDef/CSS/Color.php">
|
||||||
|
<line>29</line>
|
||||||
|
</file>
|
||||||
|
<file name="HTMLPurifier/AttrDef/HTML/Color.php">
|
||||||
|
<line>19</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
<directive id="CSS.AllowedFonts">
|
||||||
|
<file name="HTMLPurifier/AttrDef/CSS/FontFamily.php">
|
||||||
|
<line>64</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
<directive id="Attr.AllowedClasses">
|
||||||
|
<file name="HTMLPurifier/AttrDef/HTML/Class.php">
|
||||||
|
<line>33</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
<directive id="Attr.ForbiddenClasses">
|
||||||
|
<file name="HTMLPurifier/AttrDef/HTML/Class.php">
|
||||||
|
<line>34</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
<directive id="Attr.AllowedFrameTargets">
|
||||||
|
<file name="HTMLPurifier/AttrDef/HTML/FrameTarget.php">
|
||||||
|
<line>32</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
<directive id="Attr.EnableID">
|
||||||
|
<file name="HTMLPurifier/AttrDef/HTML/ID.php">
|
||||||
|
<line>41</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
<directive id="Attr.IDPrefix">
|
||||||
|
<file name="HTMLPurifier/AttrDef/HTML/ID.php">
|
||||||
|
<line>51</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
<directive id="Attr.IDPrefixLocal">
|
||||||
|
<file name="HTMLPurifier/AttrDef/HTML/ID.php">
|
||||||
|
<line>53</line>
|
||||||
|
<line>58</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
<directive id="Attr.ID.HTML5">
|
||||||
|
<file name="HTMLPurifier/AttrDef/HTML/ID.php">
|
||||||
|
<line>75</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
<directive id="Attr.IDBlacklistRegexp">
|
||||||
|
<file name="HTMLPurifier/AttrDef/HTML/ID.php">
|
||||||
|
<line>97</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
<directive id="Attr.">
|
||||||
|
<file name="HTMLPurifier/AttrDef/HTML/LinkTypes.php">
|
||||||
|
<line>46</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
<directive id="Core.AllowHostnameUnderscore">
|
||||||
|
<file name="HTMLPurifier/AttrDef/URI/Host.php">
|
||||||
|
<line>77</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
<directive id="Core.EnableIDNA">
|
||||||
|
<file name="HTMLPurifier/AttrDef/URI/Host.php">
|
||||||
|
<line>109</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
<directive id="Attr.DefaultTextDir">
|
||||||
|
<file name="HTMLPurifier/AttrTransform/BdoDir.php">
|
||||||
|
<line>22</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
<directive id="Core.RemoveInvalidImg">
|
||||||
|
<file name="HTMLPurifier/AttrTransform/ImgRequired.php">
|
||||||
|
<line>24</line>
|
||||||
|
</file>
|
||||||
|
<file name="HTMLPurifier/Strategy/RemoveForeignElements.php">
|
||||||
|
<line>27</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
<directive id="Attr.DefaultInvalidImage">
|
||||||
|
<file name="HTMLPurifier/AttrTransform/ImgRequired.php">
|
||||||
|
<line>27</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
<directive id="Attr.DefaultImageAlt">
|
||||||
|
<file name="HTMLPurifier/AttrTransform/ImgRequired.php">
|
||||||
|
<line>33</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
<directive id="Attr.DefaultInvalidImageAlt">
|
||||||
|
<file name="HTMLPurifier/AttrTransform/ImgRequired.php">
|
||||||
|
<line>40</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
<directive id="HTML.Attr.Name.UseCDATA">
|
||||||
|
<file name="HTMLPurifier/AttrTransform/Name.php">
|
||||||
|
<line>18</line>
|
||||||
|
</file>
|
||||||
|
<file name="HTMLPurifier/HTMLModule/Name.php">
|
||||||
|
<line>19</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
<directive id="HTML.FlashAllowFullScreen">
|
||||||
|
<file name="HTMLPurifier/AttrTransform/SafeParam.php">
|
||||||
|
<line>53</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
<directive id="Cache.SerializerPath">
|
||||||
|
<file name="HTMLPurifier/DefinitionCache/Serializer.php">
|
||||||
|
<line>185</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
<directive id="Cache.SerializerPermissions">
|
||||||
|
<file name="HTMLPurifier/DefinitionCache/Serializer.php">
|
||||||
|
<line>202</line>
|
||||||
|
<line>218</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
<directive id="Filter.ExtractStyleBlocks.TidyImpl">
|
||||||
|
<file name="HTMLPurifier/Filter/ExtractStyleBlocks.php">
|
||||||
|
<line>94</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
<directive id="Filter.ExtractStyleBlocks.Scope">
|
||||||
|
<file name="HTMLPurifier/Filter/ExtractStyleBlocks.php">
|
||||||
|
<line>125</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
<directive id="Filter.ExtractStyleBlocks.Escaping">
|
||||||
|
<file name="HTMLPurifier/Filter/ExtractStyleBlocks.php">
|
||||||
|
<line>330</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
<directive id="HTML.Forms">
|
||||||
|
<file name="HTMLPurifier/HTMLModule/Forms.php">
|
||||||
|
<line>31</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
<directive id="HTML.SafeIframe">
|
||||||
|
<file name="HTMLPurifier/HTMLModule/Iframe.php">
|
||||||
|
<line>28</line>
|
||||||
|
</file>
|
||||||
|
<file name="HTMLPurifier/URIFilter/SafeIframe.php">
|
||||||
|
<line>48</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
<directive id="HTML.MaxImgLength">
|
||||||
|
<file name="HTMLPurifier/HTMLModule/Image.php">
|
||||||
|
<line>21</line>
|
||||||
|
</file>
|
||||||
|
<file name="HTMLPurifier/HTMLModule/SafeEmbed.php">
|
||||||
|
<line>18</line>
|
||||||
|
</file>
|
||||||
|
<file name="HTMLPurifier/HTMLModule/SafeObject.php">
|
||||||
|
<line>24</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
<directive id="HTML.TidyLevel">
|
||||||
|
<file name="HTMLPurifier/HTMLModule/Tidy.php">
|
||||||
|
<line>50</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
<directive id="HTML.TidyAdd">
|
||||||
|
<file name="HTMLPurifier/HTMLModule/Tidy.php">
|
||||||
|
<line>54</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
<directive id="HTML.TidyRemove">
|
||||||
|
<file name="HTMLPurifier/HTMLModule/Tidy.php">
|
||||||
|
<line>55</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
<directive id="AutoFormat.PurifierLinkify.DocURL">
|
||||||
|
<file name="HTMLPurifier/Injector/PurifierLinkify.php">
|
||||||
|
<line>31</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
<directive id="AutoFormat.RemoveEmpty.RemoveNbsp">
|
||||||
|
<file name="HTMLPurifier/Injector/RemoveEmpty.php">
|
||||||
|
<line>46</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
<directive id="AutoFormat.RemoveEmpty.RemoveNbsp.Exceptions">
|
||||||
|
<file name="HTMLPurifier/Injector/RemoveEmpty.php">
|
||||||
|
<line>47</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
<directive id="AutoFormat.RemoveEmpty.Predicate">
|
||||||
|
<file name="HTMLPurifier/Injector/RemoveEmpty.php">
|
||||||
|
<line>48</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
<directive id="Core.AggressivelyFixLt">
|
||||||
|
<file name="HTMLPurifier/Lexer/DOMLex.php">
|
||||||
|
<line>54</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
<directive id="Core.AllowParseManyTags">
|
||||||
|
<file name="HTMLPurifier/Lexer/DOMLex.php">
|
||||||
|
<line>72</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
<directive id="Core.DirectLexLineNumberSyncInterval">
|
||||||
|
<file name="HTMLPurifier/Lexer/DirectLex.php">
|
||||||
|
<line>84</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
<directive id="Core.DisableExcludes">
|
||||||
|
<file name="HTMLPurifier/Strategy/FixNesting.php">
|
||||||
|
<line>54</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
<directive id="Core.EscapeInvalidTags">
|
||||||
|
<file name="HTMLPurifier/Strategy/MakeWellFormed.php">
|
||||||
|
<line>72</line>
|
||||||
|
</file>
|
||||||
|
<file name="HTMLPurifier/Strategy/RemoveForeignElements.php">
|
||||||
|
<line>26</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
<directive id="HTML.AllowedComments">
|
||||||
|
<file name="HTMLPurifier/Strategy/RemoveForeignElements.php">
|
||||||
|
<line>31</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
<directive id="HTML.AllowedCommentsRegexp">
|
||||||
|
<file name="HTMLPurifier/Strategy/RemoveForeignElements.php">
|
||||||
|
<line>32</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
<directive id="URI.HostBlacklist">
|
||||||
|
<file name="HTMLPurifier/URIFilter/HostBlacklist.php">
|
||||||
|
<line>25</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
<directive id="URI.MungeResources">
|
||||||
|
<file name="HTMLPurifier/URIFilter/Munge.php">
|
||||||
|
<line>48</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
<directive id="URI.MungeSecretKey">
|
||||||
|
<file name="HTMLPurifier/URIFilter/Munge.php">
|
||||||
|
<line>49</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
<directive id="URI.SafeIframeRegexp">
|
||||||
|
<file name="HTMLPurifier/URIFilter/SafeIframe.php">
|
||||||
|
<line>35</line>
|
||||||
|
</file>
|
||||||
|
</directive>
|
||||||
|
</usage>
|
26
libraries/htmlpurifier-4.14.0/docs/dev-advanced-api.html
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!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" />
|
||||||
|
<meta name="description" content="Specification for HTML Purifier's advanced API for defining custom filtering behavior." />
|
||||||
|
<link rel="stylesheet" type="text/css" href="style.css" />
|
||||||
|
|
||||||
|
<title>Advanced API - HTML Purifier</title>
|
||||||
|
|
||||||
|
</head><body>
|
||||||
|
|
||||||
|
<h1>Advanced API</h1>
|
||||||
|
|
||||||
|
<div id="filing">Filed under Development</div>
|
||||||
|
<div id="index">Return to the <a href="index.html">index</a>.</div>
|
||||||
|
<div id="home"><a href="http://htmlpurifier.org/">HTML Purifier</a> End-User Documentation</div>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Please see <a href="enduser-customize.html">Customize!</a>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
</body></html>
|
||||||
|
|
||||||
|
<!-- vim: et sw=4 sts=4
|
||||||
|
-->
|
30
libraries/htmlpurifier-4.14.0/docs/dev-code-quality.txt
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
|
||||||
|
Code Quality Issues
|
||||||
|
|
||||||
|
Okay, face it. Programmers can get lazy, cut corners, or make mistakes. They
|
||||||
|
also can do quick prototypes, and then forget to rewrite them later. Well,
|
||||||
|
while I can't list mistakes in here, I can list prototype-like segments
|
||||||
|
of code that should be aggressively refactored. This does not list
|
||||||
|
optimization issues, that needs to be done after intense profiling.
|
||||||
|
|
||||||
|
docs/examples/demo.php - ad hoc HTML/PHP soup to the extreme
|
||||||
|
|
||||||
|
AttrDef - a lot of duplication, more generic classes need to be created;
|
||||||
|
a lot of strtolower() calls, no legit casing
|
||||||
|
Class - doesn't support Unicode characters (fringe); uses regular expressions
|
||||||
|
Lang - code duplication; premature optimization
|
||||||
|
Length - easily mistaken for CSSLength
|
||||||
|
URI - multiple regular expressions; missing validation for parts (?)
|
||||||
|
CSS - parser doesn't accept advanced CSS (fringe)
|
||||||
|
Number - constructor interface inconsistent with Integer
|
||||||
|
Strategy
|
||||||
|
FixNesting - cannot bubble nodes out of structures, duplicated checks
|
||||||
|
for special-case parent node
|
||||||
|
RemoveForeignElements - should be run in parallel with MakeWellFormed
|
||||||
|
URIScheme - needs to have callable generic checks
|
||||||
|
mailto - doesn't validate emails, doesn't validate querystring
|
||||||
|
news - doesn't validate opaque path
|
||||||
|
nntp - doesn't constrain path
|
||||||
|
tel - doesn't validate phone numbers, only allows characters '+', '1-9', and 'x'
|
||||||
|
|
||||||
|
vim: et sw=4 sts=4
|
79
libraries/htmlpurifier-4.14.0/docs/dev-config-bcbreaks.txt
Normal file
|
@ -0,0 +1,79 @@
|
||||||
|
|
||||||
|
Configuration Backwards-Compatibility Breaks
|
||||||
|
|
||||||
|
In version 4.0.0, the configuration subsystem (composed of the outwards
|
||||||
|
facing Config class, as well as the ConfigSchema and ConfigSchema_Interchange
|
||||||
|
subsystems), was significantly revamped to make use of property lists.
|
||||||
|
While most of the changes are internal, some internal APIs were changed for the
|
||||||
|
sake of clarity. HTMLPurifier_Config was kept completely backwards compatible,
|
||||||
|
although some of the functions were retrofitted with an unambiguous alternate
|
||||||
|
syntax. Both of these changes are discussed in this document.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
1. Outwards Facing Changes
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
The HTMLPurifier_Config class now takes an alternate syntax. The general rule
|
||||||
|
is:
|
||||||
|
|
||||||
|
If you passed $namespace, $directive, pass "$namespace.$directive"
|
||||||
|
instead.
|
||||||
|
|
||||||
|
An example:
|
||||||
|
|
||||||
|
$config->set('HTML', 'Allowed', 'p');
|
||||||
|
|
||||||
|
becomes:
|
||||||
|
|
||||||
|
$config->set('HTML.Allowed', 'p');
|
||||||
|
|
||||||
|
New configuration options may have more than one namespace, they might
|
||||||
|
look something like %Filter.YouTube.Blacklist. While you could technically
|
||||||
|
set it with ('HTML', 'YouTube.Blacklist'), the logical extension
|
||||||
|
('HTML', 'YouTube', 'Blacklist') does not work.
|
||||||
|
|
||||||
|
The old API will still work, but will emit E_USER_NOTICEs.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
2. Internal API Changes
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
Some overarching notes: we've completely eliminated the notion of namespace;
|
||||||
|
it's now an informal construct for organizing related configuration directives.
|
||||||
|
|
||||||
|
Also, the validation routines for keys (formerly "$namespace.$directive")
|
||||||
|
have been completely relaxed. I don't think it really should be necessary.
|
||||||
|
|
||||||
|
2.1 HTMLPurifier_ConfigSchema
|
||||||
|
|
||||||
|
First off, if you're interfacing with this class, you really shouldn't.
|
||||||
|
HTMLPurifier_ConfigSchema_Builder_ConfigSchema is really the only class that
|
||||||
|
should ever be creating HTMLPurifier_ConfigSchema, and HTMLPurifier_Config the
|
||||||
|
only class that should be reading it.
|
||||||
|
|
||||||
|
All namespace related methods were removed; they are completely unnecessary
|
||||||
|
now. Any $namespace, $name arguments must be replaced with $key (where
|
||||||
|
$key == "$namespace.$name"), including for addAlias().
|
||||||
|
|
||||||
|
The $info and $defaults member variables are no longer indexed as
|
||||||
|
[$namespace][$name]; they are now indexed as ["$namespace.$name"].
|
||||||
|
|
||||||
|
All deprecated methods were finally removed, after having yelled at you as
|
||||||
|
an E_USER_NOTICE for a while now.
|
||||||
|
|
||||||
|
2.2 HTMLPurifier_ConfigSchema_Interchange
|
||||||
|
|
||||||
|
Member variable $namespaces was removed.
|
||||||
|
|
||||||
|
2.3 HTMLPurifier_ConfigSchema_Interchange_Id
|
||||||
|
|
||||||
|
Member variable $namespace and $directive removed; member variable $key added.
|
||||||
|
Any method that took $namespace, $directive now takes $key.
|
||||||
|
|
||||||
|
2.4 HTMLPurifier_ConfigSchema_Interchange_Namespace
|
||||||
|
|
||||||
|
Removed.
|
||||||
|
|
||||||
|
vim: et sw=4 sts=4
|