Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • osian/sucs-site
  • kais58/sucs-site
  • imranh/sucs-site
  • foshjedi2004/sucs-site
  • gigosaurus/sucs-site
  • matstn/sucs-site
  • ripp_/sucs-site
  • eggnog/sucs-site
  • sucssite/sucs-site
  • elbows/sucs-site
  • realitykiller/sucs-site
  • crox/sucs-site
  • vectre/sucs-site
  • welshbyte/sucs-site
  • paperclipman/sucs-site
15 results
Show changes
Showing
with 471 additions and 2818 deletions
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
<title>Swansea University Computer Society</title>
<!-- Google font -->
<link href="https://fonts.googleapis.com/css?family=Montserrat:400,700%7CVarela+Round" rel="stylesheet">
<!-- Bootstrap -->
<link type="text/css" rel="stylesheet" href="plaster-files/css/bootstrap.min.css" />
<!-- Owl Carousel -->
<link type="text/css" rel="stylesheet" href="plaster-files/css/owl.carousel.css" />
<link type="text/css" rel="stylesheet" href="plaster-files/css/owl.theme.default.css" />
<!-- Magnific Popup -->
<link type="text/css" rel="stylesheet" href="plaster-files/css/magnific-popup.css" />
<!-- Font Awesome Icon -->
<link rel="stylesheet" href="plaster-files/css/font-awesome.min.css">
<!-- Custom stlylesheet -->
<link type="text/css" rel="stylesheet" href="plaster-files/css/style.css" />
<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
<![endif]-->
</head>
<body>
<!-- Header -->
<header id="home">
<!-- Background Image -->
<div class="bg-img" style="background-image: url('./plaster-files/img/background1.jpg');">
<div class="overlay"></div>
</div>
<!-- /Background Image -->
<!-- Nav -->
<nav id="nav" class="navbar nav-transparent">
<div class="container">
<div class="navbar-header">
<!-- Logo -->
<div class="navbar-brand">
<a href="index.html">
<img class="logo" src="plaster-files/img/sucslogo_trans.svg" alt="logo">
<img class="logo-alt" src="plaster-files/img/sucslogo_trans.svg" alt="logo">
</a>
</div>
<!-- /Logo -->
<!-- Collapse nav button -->
<div class="nav-collapse">
<span></span>
</div>
<!-- /Collapse nav button -->
</div>
<!-- Main navigation -->
<ul class="main-nav nav navbar-nav navbar-right">
<li><a href="#home">Home</a></li>
<li><a href="#about">About</a></li>
<li><a href="#service">Services</a></li>
<li><a href="#contact">Contact</a></li>
<li><a href=https://sucs.org/index.php>Main Site</a></li>
</ul>
<!-- /Main navigation -->
</div>
</nav>
<!-- /Nav -->
<!-- home wrapper -->
<div class="home-wrapper">
<div class="container">
<div class="row">
<!-- home content -->
<div class="col-md-10 col-md-offset-1">
<div class="home-content">
<h1 class="white-text">Swansea University Computer Society</h1>
<p class="white-text">SUCS is one of the university's longest-running and largest societies. In addition to providing members with a range of IT services, we hold regular events and socials throughout the year.
</p>
<a href="https://sucs.org/join" class="white-btn">Join Now!</a>
<a href="#about" class="main-btn">Learn more</a>
</div>
</div>
<!-- /home content -->
</div>
</div>
</div>
<!-- /home wrapper -->
</header>
<!-- /Header -->
<!-- About -->
<div id="about" class="section md-padding">
<!-- Container -->
<div class="container">
<!-- Row -->
<div class="row">
<!-- Section header -->
<div class="section-header text-center">
<h2 class="title">A little about us...</h2>
</div>
<!-- /Section header -->
<!-- about -->
<div class="col-md-6">
<!--<div class="section-header">
<h2 class="title">Breif Outline</h2>
</div>-->
<p>Established in 1988 we are a community that enjoys technology and being creative. We also offer a wide variety of services that our members greatly benefit from.</p>
<div class="feature">
<i class="fa fa-check"></i>
<p>Hold regular events both technical and non-technical.</p>
</div>
<div class="feature">
<i class="fa fa-check"></i>
<p>Have several active projects going on that any member can join in on.</p>
</div>
<div class="feature">
<i class="fa fa-check"></i>
<p>Offer our members a dedicated 24/7 space.</p>
</div>
<div class="feature">
<i class="fa fa-check"></i>
<p>Active alumni network with members working at Red Hat, Google, Microsoft, etc...</p>
</div>
</div>
<div class="col-md-6">
<p>
Come chat with us on one of the oldest Bulletin Board Systems in the UK, Milliways! Existing members can log in by SSH'ing into silver (ssh sucs.org) and running the command 'mw'. Non-members can join by SSH'ing in as the user 'bbs' with the password 'bbs' (ssh bbs@sucs.org). There is a quick guide on <a href="https://sucs.org/Knowledge/Help/SUCS%20Services/Using%20Milliways">Using MW</a> that is recommended.
</p>
<p>
We also run a <a href="https://chat.sucs.org">Discord</a> server that is more easily accessible on a wider variety of platforms.
</p>
</div>
<!-- /about -->
</div>
<!-- /Row -->
</div>
<!-- /Container -->
</div>
<!-- /About -->
<!-- Service -->
<div id="service" class="section md-padding">
<!-- Container -->
<div class="container">
<!-- Row -->
<div class="row">
<!-- Section header -->
<div class="section-header text-center">
<h2 class="title">What we offer</h2>
</div>
<!-- /Section header -->
<!-- service -->
<div class="col-md-4 col-sm-6">
<div class="service">
<i class="fa fa-calendar"></i>
<h3>Regular Events</h3>
<p>We run regular technical and non-technical events.</p>
</div>
</div>
<!-- /service -->
<!-- service -->
<div class="col-md-4 col-sm-6">
<div class="service">
<i class="fa fa-building"></i>
<h3>Dedicated Lab</h3>
<p>We run our own dedicated lab that's accessible 24/7.</p>
</div>
</div>
<!-- /service -->
<!-- service -->
<div class="col-md-4 col-sm-6">
<div class="service">
<i class="fa fa-users"></i>
<h3>Community</h3>
<p>With over 100 members from all manner of backgrounds SUCS has a rich and diverse community.</p>
</div>
</div>
<!-- /service -->
<!-- service -->
<div class="col-md-4 col-sm-6">
<div class="service">
<i class="fa fa-laptop"></i>
<h3>Virtual Machines</h3>
<p>Members can request virtual machines for use for projects or prototyping.</p>
</div>
</div>
<!-- /service -->
<!-- service -->
<div class="col-md-4 col-sm-6">
<div class="service">
<i class="fa fa-server"></i>
<h3>Web Hosting</h3>
<p>Members can take advantage of our web-hosting facilities to showcase their work or ideas.</p>
</div>
</div>
<!-- /service -->
<!-- service -->
<div class="col-md-4 col-sm-6">
<div class="service">
<i class="fa fa-code"></i>
<h3>Projects</h3>
<p>We run numerous projects that people can jump in and out of. Hosting your own projects is possible with our own GitLab server</p>
</div>
</div>
<!-- /service -->
</div>
<!-- /Row -->
</div>
<!-- /Container -->
</div>
<!-- /Service -->
<!-- Contact -->
<div id="contact" class="section md-padding">
<!-- Container -->
<div class="container">
<!-- Row -->
<div class="row">
<!-- Section-header -->
<div class="section-header text-center">
<h2 class="title">Get in touch</h2>
</div>
<!-- /Section-header -->
<!-- contact -->
<div class="col-sm-4">
<div class="contact">
<i class="fa fa-facebook"></i>
<h3><a href="https://sucs.org/fb">Facebook</a></h3>
</div>
</div>
<!-- /contact -->
<!-- contact -->
<div class="col-sm-4">
<div class="contact">
<i class="fa fa-envelope"></i>
<h3><a href="mailto:joinus@sucs.org?Subject=Hello">Email</a></h3>
<p>joinus@sucs.org</p>
</div>
</div>
<!-- /contact -->
<!-- contact -->
<div class="col-sm-4">
<div class="contact">
<i class="fa fa-twitter"></i>
<h3><a href="https://twitter.com/sucsexec">Twitter</a></h3>
</div>
</div>
<!-- /contact -->
</div>
<!-- /Row -->
</div>
<!-- /Container -->
</div>
<!-- /Contact -->
<!-- Footer -->
<footer id="footer" class="sm-padding bg-dark">
<!-- Container -->
<div class="container">
<!-- Row -->
<div class="row">
<div class="col-md-12">
<!-- footer copyright -->
<div class="footer-copyright">
<p>Designed stolen from <a href="https://colorlib.com" target="_blank">Colorlib</a> (with permission)</p>
</div>
<!-- /footer copyright -->
</div>
</div>
<!-- /Row -->
</div>
<!-- /Container -->
</footer>
<!-- /Footer -->
<!-- Back to top -->
<div id="back-to-top"></div>
<!-- /Back to top -->
<!-- Preloader -->
<div id="preloader">
<div class="preloader">
<span></span>
<span></span>
<span></span>
<span></span>
</div>
</div>
<!-- /Preloader -->
<!-- jQuery Plugins -->
<script type="text/javascript" src="plaster-files/js/jquery.min.js"></script>
<script type="text/javascript" src="plaster-files/js/bootstrap.min.js"></script>
<script type="text/javascript" src="plaster-files/js/owl.carousel.min.js"></script>
<script type="text/javascript" src="plaster-files/js/jquery.magnific-popup.js"></script>
<script type="text/javascript" src="plaster-files/js/main.js"></script>
</body>
</html>
/*
addEvent function from http://www.quirksmode.org/blog/archives/2005/10/_and_the_winner_1.html
*/
function addEvent( obj, type, fn )
{
if (obj.addEventListener)
obj.addEventListener( type, fn, false );
else if (obj.attachEvent)
{
obj["e"+type+fn] = fn;
obj[type+fn] = function() { obj["e"+type+fn]( window.event ); }
obj.attachEvent( "on"+type, obj[type+fn] );
}
addEvent function from http://www.quirksmode.org/blog/archives/2005/10/_and_the_winner_1.html
*/
function addEvent(obj, type, fn) {
if (obj.addEventListener)
obj.addEventListener(type, fn, false);
else if (obj.attachEvent) {
obj["e" + type + fn] = fn;
obj[type + fn] = function () {
obj["e" + type + fn](window.event);
};
obj.attachEvent("on" + type, obj[type + fn]);
}
}
/*
createElement function found at http://simon.incutio.com/archive/2003/06/15/javascriptWithXML
*/
createElement function found at http://simon.incutio.com/archive/2003/06/15/javascriptWithXML
*/
function createElement(element) {
if (typeof document.createElementNS != 'undefined') {
return document.createElementNS('http://www.w3.org/1999/xhtml', element);
}
if (typeof document.createElement != 'undefined') {
return document.createElement(element);
}
return false;
if (typeof document.createElementNS != 'undefined') {
return document.createElementNS('http://www.w3.org/1999/xhtml', element);
}
if (typeof document.createElement != 'undefined') {
return document.createElement(element);
}
return false;
}
function insertTop(obj) {
// Create the two div elements needed for the top of the box
d=createElement("div");
d.className="bt"; // The outer div needs a class name
d2=createElement("div");
// Create the two div elements needed for the top of the box
d = createElement("div");
d.className = "bt"; // The outer div needs a class name
d2 = createElement("div");
d.appendChild(d2);
obj.insertBefore(d,obj.firstChild);
obj.insertBefore(d, obj.firstChild);
}
function insertBottom(obj) {
// Create the two div elements needed for the bottom of the box
d=createElement("div");
d.className="bb"; // The outer div needs a class name
d2=createElement("div");
// Create the two div elements needed for the bottom of the box
d = createElement("div");
d.className = "bb"; // The outer div needs a class name
d2 = createElement("div");
d.appendChild(d2);
obj.appendChild(d);
obj.appendChild(d);
}
function initCB()
{
// Find all div elements
var divs = document.getElementsByTagName('div');
var cbDivs = [];
for (var i = 0; i < divs.length; i++) {
// Find all div elements with cbb in their class attribute while allowing for multiple class names
if (/\bcbb\b/.test(divs[i].className))
cbDivs[cbDivs.length] = divs[i];
}
// Loop through the found div elements
var thediv, outer, i1, i2;
for (var i = 0; i < cbDivs.length; i++) {
// Save the original outer div for later
thediv = cbDivs[i];
// Create a new div, give it the original div's class attribute, and replace 'cbb' with 'cb'
outer = createElement('div');
outer.className = thediv.className;
outer.className = thediv.className.replace('cbb', 'cb');
// Change the original div's class name and replace it with the new div
thediv.className = 'i3';
thediv.parentNode.replaceChild(outer, thediv);
// Create two new div elements and insert them into the outermost div
i1 = createElement('div');
i1.className = 'i1';
outer.appendChild(i1);
i2 = createElement('div');
i2.className = 'i2';
i1.appendChild(i2);
// Insert the original div
i2.appendChild(thediv);
// Insert the top and bottom divs
insertTop(outer);
insertBottom(outer);
}
function initCB() {
// Find all div elements
var divs = document.getElementsByTagName('div');
var cbDivs = [];
for (var i = 0; i < divs.length; i++) {
// Find all div elements with cbb in their class attribute while allowing for multiple class names
if (/\bcbb\b/.test(divs[i].className))
cbDivs[cbDivs.length] = divs[i];
}
// Loop through the found div elements
var thediv, outer, i1, i2;
for (var j = 0; j < cbDivs.length; j++) {
// Save the original outer div for later
thediv = cbDivs[j];
// Create a new div, give it the original div's class attribute, and replace 'cbb' with 'cb'
outer = createElement('div');
outer.className = thediv.className;
outer.className = thediv.className.replace('cbb', 'cb');
// Change the original div's class name and replace it with the new div
thediv.className = 'i3';
thediv.parentNode.replaceChild(outer, thediv);
// Create two new div elements and insert them into the outermost div
i1 = createElement('div');
i1.className = 'i1';
outer.appendChild(i1);
i2 = createElement('div');
i2.className = 'i2';
i1.appendChild(i2);
// Insert the original div
i2.appendChild(thediv);
// Insert the top and bottom divs
insertTop(outer);
insertBottom(outer);
}
}
if(document.getElementById && document.createTextNode)
{
addEvent(window, 'load', initCB);
if (document.getElementById && document.createTextNode) {
addEvent(window, 'load', initCB);
}
\ No newline at end of file
/*
Correctly handle PNG transparency in Win IE 5.5 & 6.
http://homepage.ntlworld.com/bobosola. Updated 18-Jan-2006.
Use in <HEAD> with DEFER keyword wrapped in conditional comments:
<!--[if lt IE 7]>
<script defer type="text/javascript" src="pngfix.js"></script>
<![endif]-->
*/
var arVersion = navigator.appVersion.split("MSIE")
var version = parseFloat(arVersion[1])
if ((version >= 5.5) && (document.body.filters))
{
for(var i=0; i<document.images.length; i++)
{
var img = document.images[i]
var imgName = img.src.toUpperCase()
if (imgName.substring(imgName.length-3, imgName.length) == "PNG")
{
var imgID = (img.id) ? "id='" + img.id + "' " : ""
var imgClass = (img.className) ? "class='" + img.className + "' " : ""
var imgTitle = (img.title) ? "title='" + img.title + "' " : "title='" + img.alt + "' "
var imgStyle = "display:inline-block;" + img.style.cssText
if (img.align == "left") imgStyle = "float:left;" + imgStyle
if (img.align == "right") imgStyle = "float:right;" + imgStyle
if (img.parentElement.href) imgStyle = "cursor:hand;" + imgStyle
var strNewHTML = "<span " + imgID + imgClass + imgTitle
+ " style=\"" + "width:" + img.width + "px; height:" + img.height + "px;" + imgStyle + ";"
+ "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader"
+ "(src=\'" + img.src + "\', sizingMethod='scale');\"></span>"
img.outerHTML = strNewHTML
i = i-1
}
}
}
......@@ -10,6 +10,7 @@ var validation = {
var submitted = false;
function validate() {
var valid = true;
var field;
for (field in req) {
if (!validation[req[field]]) {
valid = false;
......@@ -37,16 +38,16 @@ function processPostcode() {
$('div#addseldiv').removeAttr("style");
for (var i = 0; i < (j.addresses.length); i++) {
options += '<option>';
if (j.addresses[i].flat != null) {
if (j.addresses[i].flat !== null) {
options += j.addresses[i].flat + "\n";
}
if (j.addresses[i].house != null) {
if (j.addresses[i].house !== null) {
options += j.addresses[i].house + "\n";
}
if (j.addresses[i].road != null) {
if (j.addresses[i].road !== null) {
options += j.addresses[i].road + "\n";
}
if (j.addresses[i].city != null) {
if (j.addresses[i].city !== null) {
options += j.addresses[i].city + "\n";
}
options += '</option>';
......@@ -56,13 +57,13 @@ function processPostcode() {
}
if (j.addresses.length == 1) {
$('div#addseldiv').attr("style", "display:none");
$("textarea#address")
$("textarea#address");
$('div#addressmessage').attr("style", "color:green; float:right; clear:right;");
$('div#addressmessage').html("OK");
validation["address"] = true;
validation.address = true;
validate();
}
})
});
}
function lookupSID(setname) {
......@@ -71,21 +72,21 @@ function lookupSID(setname) {
key = arr.shift();
val = arr.join(":");
if (key == "OK") {
if (setname = true)
if (setname === true)
$("input#realname").val(val);
$('div#studentidmessage').attr("style", "color:green; float:right; clear:right;");
$('div#studentidmessage').html(key);
validation['studentid'] = true;
validation.studentid = true;
processName("realname", "realname");
}
else {
$('div#studentidmessage').attr("style", "color:red; float:right; clear:right;");
$('div#studentidmessage').html(val);
validation['email'] = false;
validation.email = false;
validate();
}
}, 'text')
}, 'text');
}
function processSID() {
lookupSID(true);
......@@ -95,15 +96,15 @@ function processUsername() {
$.get("/signup/ajax", {key: "username", value: $('input#username').val()}, function (j) {
if (j != "OK") {
$('div#usernamemessage').attr("style", "color:red; float:right; clear:right;");
validation['username'] = false;
validation.username = false;
}
else {
$('div#usernamemessage').attr("style", "color:green; float:right; clear:right;");
validation['username'] = true;
validation.username = true;
}
$('div#usernamemessage').html(j);
validate();
}, 'text')
}, 'text');
}
function processName(type, input) {
......@@ -118,7 +119,7 @@ function processName(type, input) {
}
$('div#' + input + 'message').html(j);
validate();
}, 'text')
}, 'text');
}
function processContact() {
processName('realname', 'contact');
......@@ -128,45 +129,45 @@ function processAddress() {
$.get("/signup/ajax", {key: "address", value: $('textarea#address').val()}, function (j) {
if (j != "OK") {
$('div#addressmessage').attr("style", "color:red; float:right; clear:right;");
validation['address'] = false;
validation.address = false;
}
else {
$('div#addressmessage').attr("style", "color:green; float:right; clear:right;");
validation['address'] = true;
validation.address = true;
}
$('div#addressmessage').html(j);
validate();
}, 'text')
}, 'text');
}
function processEmail() {
$.get("/signup/ajax", {key: "email", value: $('input#email').val()}, function (j) {
if (j != "OK") {
$('div#emailmessage').attr("style", "color:red; float:right; clear:right;");
validation['email'] = false;
validation.email = false;
}
else {
$('div#emailmessage').attr("style", "color:green; float:right; clear:right;");
validation['email'] = true;
validation.email = true;
}
$('div#emailmessage').html(j);
validate();
}, 'text')
}, 'text');
}
function processPhone() {
$.get("/signup/ajax", {key: "phone", value: $('input#phone').val()}, function (j) {
if (j != "OK") {
$('div#phonemessage').attr("style", "color:red; float:right; clear:right;");
validation['phone'] = false;
validation.phone = false;
}
else {
$('div#phonemessage').attr("style", "color:green; float:right; clear:right;");
validation['phone'] = true;
validation.phone = true;
}
$('div#phonemessage').html(j);
validate();
}, 'text')
}, 'text');
}
$(function () {
......@@ -196,25 +197,25 @@ $(function () {
$('div#postcodediv').removeAttr("style");
$('input#submit').attr("disabled", "disabled");
// if the fields are not empty validate them
if ($('input#username').val() != "") processUsername();
if ($('input#email').val() != "") processEmail();
if ($('input#phone').val() != "") processPhone();
if (usertype != 2) {
if ($('input#postcode').val() != "") processPostcode();
if ($('textarea#address').val() != "") processAddress();
if ($('input#realname').val() != "") processName("realname", "realname");
if ($('input#username').val() !== "") processUsername();
if ($('input#email').val() !== "") processEmail();
if ($('input#phone').val() !== "") processPhone();
if (usertype !== 2) {
if ($('input#postcode').val() !== "") processPostcode();
if ($('textarea#address').val() !== "") processAddress();
if ($('input#realname').val() !== "") processName("realname", "realname");
}
else {
if ($('input#contact').val() != "") processContact();
if ($('input#realname').val() != "") processName("socname", "realname");
if ($('input#contact').val() !== "") processContact();
if ($('input#realname').val() !== "") processName("socname", "realname");
}
if ((usertype == 1) && ($('input#studentid').val() != "")) {
if ($('input#realname').val() == "") lookupSID(true);
if ((usertype == 1) && ($('input#studentid').val() !== "")) {
if ($('input#realname').val() === "") lookupSID(true);
else lookupSID(false);
}
validate();
})
});
// dont do address stuff for societies
if (usertype != 2) {
// process postcode when the box changes
......@@ -234,21 +235,21 @@ $(function () {
$("textarea#address").text(strUser);
$('div#addressmessage').attr("style", "color:green; float:right; clear:right;");
$('div#addressmessage').html("OK");
validation['address'] = true;
})
validation.address = true;
});
}
//else deal with the contact field
else {
$("input#contact").change(processContact)
$("input#contact").change(processContact);
}
//if is a student
if (usertype == 1) {
//lookup the real name from the studentid
$("input#studentid").change(processSID)
$("input#studentid").change(processSID);
}
//validate username
$("input#username").change(processUsername)
$("input#username").change(processUsername);
//validate personal and society names differntly
if (usertype != 2) {
persoc = 'realname';
......@@ -259,7 +260,7 @@ $(function () {
//validate real name
$("input#realname").change(function () {
processName(persoc, 'realname');
})
});
//validate email address
$("input#email").change(processEmail);
......@@ -279,5 +280,5 @@ $(function () {
}
return valid;
});
})
});
tinyMCE.init({
mode: "exact",
elements : "body",
height: "100%",
plugins: "safari,fullscreen,inlinepopups",
theme: "advanced",
theme_advanced_buttons1 : "bold,italic,underline,strikethrough,separator,styleselect,sup,sub,separator,bullist,numlist,outdent,indent,separator,undo,redo,link,unlink,anchor,image,separator,formatselect,separator,charmap,code,fullscreen",
theme_advanced_buttons2 : "",
theme_advanced_buttons3 : "",
theme_advanced_toolbar_location: "top",
theme_advanced_toolbar_align: "left",
content_css: "/css/editor.css",
remove_linebreaks : false,
convert_urls : false,
valid_elements : ""
+"a[accesskey|charset|class|coords|dir<ltr?rtl|href|hreflang|id|lang|name"
+"|onblur|onclick|ondblclick|onfocus|onkeydown|onkeypress|onkeyup"
+"|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|rel|rev"
+"|shape<circle?default?poly?rect|style|tabindex|title|target|type],"
+"abbr[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"
+"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
+"|title],"
+"acronym[class|dir<ltr?rtl|id|id|lang|onclick|ondblclick|onkeydown|onkeypress"
+"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
+"|title],"
+"address[class|align|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown"
+"|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover"
+"|onmouseup|style|title],"
+"applet[align<bottom?left?middle?right?top|alt|archive|class|code|codebase"
+"|height|hspace|id|name|object|style|title|vspace|width],"
+"area[accesskey|alt|class|coords|dir<ltr?rtl|href|id|lang|nohref<nohref"
+"|onblur|onclick|ondblclick|onfocus|onkeydown|onkeypress|onkeyup"
+"|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup"
+"|shape<circle?default?poly?rect|style|tabindex|title|target],"
+"base[href|target],"
+"basefont[color|face|id|size],"
+"bdo[class|dir<ltr?rtl|id|lang|style|title],"
+"big[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"
+"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
+"|title],"
+"blockquote[dir|style|cite|class|dir<ltr?rtl|id|lang|onclick|ondblclick"
+"|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout"
+"|onmouseover|onmouseup|style|title],"
+"body[alink|background|bgcolor|class|dir<ltr?rtl|id|lang|link|onclick"
+"|ondblclick|onkeydown|onkeypress|onkeyup|onload|onmousedown|onmousemove"
+"|onmouseout|onmouseover|onmouseup|onunload|style|title|text|vlink],"
+"br[class|clear<all?left?none?right|id|style|title],"
+"button[accesskey|class|dir<ltr?rtl|disabled<disabled|id|lang|name|onblur"
+"|onclick|ondblclick|onfocus|onkeydown|onkeypress|onkeyup|onmousedown"
+"|onmousemove|onmouseout|onmouseover|onmouseup|style|tabindex|title|type"
+"|value],"
+"caption[align<bottom?left?right?top|class|dir<ltr?rtl|id|lang|onclick"
+"|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove"
+"|onmouseout|onmouseover|onmouseup|style|title],"
+"center[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"
+"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
+"|title],"
+"cite[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"
+"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
+"|title],"
+"code[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"
+"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
+"|title],"
+"col[align<center?char?justify?left?right|char|charoff|class|dir<ltr?rtl|id"
+"|lang|onclick|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown"
+"|onmousemove|onmouseout|onmouseover|onmouseup|span|style|title"
+"|valign<baseline?bottom?middle?top|width],"
+"colgroup[align<center?char?justify?left?right|char|charoff|class|dir<ltr?rtl"
+"|id|lang|onclick|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown"
+"|onmousemove|onmouseout|onmouseover|onmouseup|span|style|title"
+"|valign<baseline?bottom?middle?top|width],"
+"dd[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress|onkeyup"
+"|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style|title],"
+"del[cite|class|datetime|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown"
+"|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover"
+"|onmouseup|style|title],"
+"dfn[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"
+"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
+"|title],"
+"dir[class|compact<compact|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown"
+"|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover"
+"|onmouseup|style|title],"
+"div[align<center?justify?left?right|class|dir<ltr?rtl|id|lang|onclick"
+"|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove"
+"|onmouseout|onmouseover|onmouseup|style|title],"
+"dl[class|compact<compact|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown"
+"|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover"
+"|onmouseup|style|title],"
+"dt[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress|onkeyup"
+"|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style|title],"
+"em/i[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"
+"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
+"|title],"
+"fieldset[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"
+"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
+"|title],"
+"font[class|color|dir<ltr?rtl|face|id|lang|size|style|title],"
+"form[accept|accept-charset|action|class|dir<ltr?rtl|enctype|id|lang"
+"|method<get?post|name|onclick|ondblclick|onkeydown|onkeypress|onkeyup"
+"|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|onreset|onsubmit"
+"|style|title|target],"
+"frame[class|frameborder|id|longdesc|marginheight|marginwidth|name"
+"|noresize<noresize|scrolling<auto?no?yes|src|style|title],"
+"frameset[class|cols|id|onload|onunload|rows|style|title],"
+"h1[align<center?justify?left?right|class|dir<ltr?rtl|id|lang|onclick"
+"|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove"
+"|onmouseout|onmouseover|onmouseup|style|title],"
+"h2[align<center?justify?left?right|class|dir<ltr?rtl|id|lang|onclick"
+"|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove"
+"|onmouseout|onmouseover|onmouseup|style|title],"
+"h3[align<center?justify?left?right|class|dir<ltr?rtl|id|lang|onclick"
+"|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove"
+"|onmouseout|onmouseover|onmouseup|style|title],"
+"h4[align<center?justify?left?right|class|dir<ltr?rtl|id|lang|onclick"
+"|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove"
+"|onmouseout|onmouseover|onmouseup|style|title],"
+"h5[align<center?justify?left?right|class|dir<ltr?rtl|id|lang|onclick"
+"|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove"
+"|onmouseout|onmouseover|onmouseup|style|title],"
+"h6[align<center?justify?left?right|class|dir<ltr?rtl|id|lang|onclick"
+"|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove"
+"|onmouseout|onmouseover|onmouseup|style|title],"
+"head[dir<ltr?rtl|lang|profile],"
+"hr[align<center?left?right|class|dir<ltr?rtl|id|lang|noshade<noshade|onclick"
+"|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove"
+"|onmouseout|onmouseover|onmouseup|size|style|title|width],"
+"html[dir<ltr?rtl|lang|version],"
+"iframe[align<bottom?left?middle?right?top|class|frameborder|height|id"
+"|longdesc|marginheight|marginwidth|name|scrolling<auto?no?yes|src|style"
+"|title|width],"
+"img[align<bottom?left?middle?right?top|alt|border|class|dir<ltr?rtl|height"
+"|hspace|id|ismap<ismap|lang|longdesc|name|onclick|ondblclick|onkeydown"
+"|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover"
+"|onmouseup|src|style|title|usemap|vspace|width],"
+"input[accept|accesskey|align<bottom?left?middle?right?top|alt"
+"|checked<checked|class|dir<ltr?rtl|disabled<disabled|id|ismap<ismap|lang"
+"|maxlength|name|onblur|onclick|ondblclick|onfocus|onkeydown|onkeypress"
+"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|onselect"
+"|readonly<readonly|size|src|style|tabindex|title"
+"|type<button?checkbox?file?hidden?image?password?radio?reset?submit?text"
+"|usemap|value],"
+"ins[cite|class|datetime|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown"
+"|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover"
+"|onmouseup|style|title],"
+"isindex[class|dir<ltr?rtl|id|lang|prompt|style|title],"
+"kbd[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"
+"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
+"|title],"
+"label[accesskey|class|dir<ltr?rtl|for|id|lang|onblur|onclick|ondblclick"
+"|onfocus|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout"
+"|onmouseover|onmouseup|style|title],"
+"legend[align<bottom?left?right?top|accesskey|class|dir<ltr?rtl|id|lang"
+"|onclick|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove"
+"|onmouseout|onmouseover|onmouseup|style|title],"
+"li[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress|onkeyup"
+"|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style|title|type"
+"|value],"
+"link[charset|class|dir<ltr?rtl|href|hreflang|id|lang|media|onclick"
+"|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove"
+"|onmouseout|onmouseover|onmouseup|rel|rev|style|title|target|type],"
+"map[class|dir<ltr?rtl|id|lang|name|onclick|ondblclick|onkeydown|onkeypress"
+"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
+"|title],"
+"menu[class|compact<compact|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown"
+"|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover"
+"|onmouseup|style|title],"
+"meta[content|dir<ltr?rtl|http-equiv|lang|name|scheme],"
+"noframes[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"
+"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
+"|title],"
+"noscript[class|dir<ltr?rtl|id|lang|style|title],"
+"object[align<bottom?left?middle?right?top|archive|border|class|classid"
+"|codebase|codetype|data|declare|dir<ltr?rtl|height|hspace|id|lang|name"
+"|onclick|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove"
+"|onmouseout|onmouseover|onmouseup|standby|style|tabindex|title|type|usemap"
+"|vspace|width],"
+"ol[class|compact<compact|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown"
+"|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover"
+"|onmouseup|start|style|title|type],"
+"optgroup[class|dir<ltr?rtl|disabled<disabled|id|label|lang|onclick"
+"|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove"
+"|onmouseout|onmouseover|onmouseup|style|title],"
+"option[class|dir<ltr?rtl|disabled<disabled|id|label|lang|onclick|ondblclick"
+"|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout"
+"|onmouseover|onmouseup|selected<selected|style|title|value],"
+"p[align<center?justify?left?right|class|dir<ltr?rtl|id|lang|onclick"
+"|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove"
+"|onmouseout|onmouseover|onmouseup|style|title],"
+"param[id|name|type|value|valuetype<DATA?OBJECT?REF],"
+"pre/listing/plaintext/xmp[align|class|dir<ltr?rtl|id|lang|onclick|ondblclick"
+"|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout"
+"|onmouseover|onmouseup|style|title|width],"
+"q[cite|class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"
+"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
+"|title],"
+"s[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress|onkeyup"
+"|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style|title],"
+"samp[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"
+"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
+"|title],"
+"script[charset|defer|language|src|type],"
+"select[class|dir<ltr?rtl|disabled<disabled|id|lang|multiple<multiple|name"
+"|onblur|onchange|onclick|ondblclick|onfocus|onkeydown|onkeypress|onkeyup"
+"|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|size|style"
+"|tabindex|title],"
+"small[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"
+"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
+"|title],"
+"span[align<center?justify?left?right|class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown"
+"|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover"
+"|onmouseup|style|title],"
+"strike[class|class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown"
+"|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover"
+"|onmouseup|style|title],"
+"strong/b[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"
+"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
+"|title],"
+"style[dir<ltr?rtl|lang|media|title|type],"
+"sub[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"
+"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
+"|title],"
+"sup[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"
+"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
+"|title],"
+"table[align<center?left?right|bgcolor|border|cellpadding|cellspacing|class"
+"|dir<ltr?rtl|frame|height|id|lang|onclick|ondblclick|onkeydown|onkeypress"
+"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|rules"
+"|style|summary|title|width],"
+"tbody[align<center?char?justify?left?right|char|class|charoff|dir<ltr?rtl|id"
+"|lang|onclick|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown"
+"|onmousemove|onmouseout|onmouseover|onmouseup|style|title"
+"|valign<baseline?bottom?middle?top],"
+"td[abbr|align<center?char?justify?left?right|axis|bgcolor|char|charoff|class"
+"|colspan|dir<ltr?rtl|headers|height|id|lang|nowrap<nowrap|onclick"
+"|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove"
+"|onmouseout|onmouseover|onmouseup|rowspan|scope<col?colgroup?row?rowgroup"
+"|style|title|valign<baseline?bottom?middle?top|width],"
+"textarea[accesskey|class|cols|dir<ltr?rtl|disabled<disabled|id|lang|name"
+"|onblur|onclick|ondblclick|onfocus|onkeydown|onkeypress|onkeyup"
+"|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|onselect"
+"|readonly<readonly|rows|style|tabindex|title],"
+"tfoot[align<center?char?justify?left?right|char|charoff|class|dir<ltr?rtl|id"
+"|lang|onclick|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown"
+"|onmousemove|onmouseout|onmouseover|onmouseup|style|title"
+"|valign<baseline?bottom?middle?top],"
+"th[abbr|align<center?char?justify?left?right|axis|bgcolor|char|charoff|class"
+"|colspan|dir<ltr?rtl|headers|height|id|lang|nowrap<nowrap|onclick"
+"|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove"
+"|onmouseout|onmouseover|onmouseup|rowspan|scope<col?colgroup?row?rowgroup"
+"|style|title|valign<baseline?bottom?middle?top|width],"
+"thead[align<center?char?justify?left?right|char|charoff|class|dir<ltr?rtl|id"
+"|lang|onclick|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown"
+"|onmousemove|onmouseout|onmouseover|onmouseup|style|title"
+"|valign<baseline?bottom?middle?top],"
+"title[dir<ltr?rtl|lang],"
+"tr[abbr|align<center?char?justify?left?right|bgcolor|char|charoff|class"
+"|rowspan|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"
+"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
+"|title|valign<baseline?bottom?middle?top],"
+"tt[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress|onkeyup"
+"|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style|title],"
+"u[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress|onkeyup"
+"|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style|title],"
+"ul[class|compact<compact|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown"
+"|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover"
+"|onmouseup|style|title|type],"
+"var[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"
+"|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
+"|title]"
})
This diff is collapsed.
<!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">
<head>
<title>About</title>
<link href="css/screen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div class="header">
<h1>About</h1>
</div>
<div class="content">
<h2>General information</h2>
<div class="section">
<p>TinyMCE is a powerful WYSIWYG editor control for web browsers such as MSIE or Mozilla that enables the user to edit HTML contents in a more user friendly way. The editor control is very flexible and it's built for integration purposes for example usage within systems like Intranets, CMS, LMS and so forth.</p>
<p>
TinyMCE is developed by <a href="http://www.moxiecode.com">Moxiecode Systems AB</a> and is currently released under the &quot;LGPL&quot; license, read the license agreement for details.
</p>
<h2>Features</h2>
<p>
<ul>
<li>Easy to integrate, takes only a couple lines of code.</li>
<li>Theme and template support.</li>
<li>Easy to extend with custom code. (Plugins and callbacks)</li>
<li>Customizable HTML output. Block elements and force attributes.</li>
<li>International language support (Language packs).</li>
<li>Multiple browser support, currently Mozilla (PC, Mac and Linux), MSIE (PC) and FireFox (PC, Mac and Linux) and some limited Safari support.</li>
</ul>
</p>
</div>
</div>
<div class="footer">
<div class="helpindexlink"><a href="index.html">Index</a></div>
<div class="copyright">Copyright &copy; 2003-2006 <a href="http://www.moxiecode.com">Moxiecode Systems AB</a></div>
<br style="clear: both" />
</div>
</body>
</html>
<!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">
<head>
<title>Compatiblity Chart</title>
<link href="css/screen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div class="header">
<h1>Compatiblity Chart</h1>
</div>
<div class="content">
<h2>Browser support</h2>
<div class="section">
<p>TinyMCE uses advanced JavaScript and tries to be as smart as possible when it comes to different browsers, the main focus is on Microsoft Internet Explorer and Mozilla/Firefox. The table was reset to only show the browsers we ourselves can test on. It works with many older versions of Mozilla and Firefox. <strong>Just cause a browser is not listed on this page doesn't mean it does not work, try out the examples on our website.</strong></p>
<p>Since MacOS X 10.4 is more or less Linux we are not testing much on Linux any more, use the Sourceforge bug report system to submit bugs on the very latest browsers only.</p>
<p>
<table border="1" cellspacing="0" cellpadding="4">
<tr>
<td>&nbsp;</td>
<td>Windows XP</td>
<td>MacOS X 10.4</td>
</tr>
<tr>
<td>MSIE 6</td>
<td>OK</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>MSIE 5.5 SP2</td>
<td>OK</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>MSIE 5.0</td>
<td>OK</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>Mozilla 1.7.x</td>
<td>OK</td>
<td>OK</td>
</tr>
<tr>
<td>Firefox 1.0.x</td>
<td>OK</td>
<td>OK</td>
</tr>
<tr>
<td>Firefox 1.5b2</td>
<td>OK</td>
<td>OK</td>
</tr>
<tr>
<td>Safari 2.0 (412)</td>
<td>&nbsp;</td>
<td>OK(1)</td>
</tr>
<tr>
<td>Opera 9 Preview 1</td>
<td>OK(1)</td>
<td>OK(1)</td>
</tr>
</table>
</p>
<p>
<ul>
<li>(1) - Partialy working</li>
<li>(2) - Buggy browser version</li>
</ul>
</p>
</div>
</div>
<div class="footer">
<div class="helpindexlink"><a href="index.html">Index</a></div>
<div class="copyright">Copyright &copy; 2003-2006 <a href="http://www.moxiecode.com">Moxiecode Systems AB</a></div>
<br style="clear: both" />
</div>
</body>
</html>
<!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">
<head>
<title>Credits</title>
<link href="css/screen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div class="header">
<h1>Credits</h1>
</div>
<div class="content">
<h2>Contributors</h2>
<div class="section">
<p>These are the people, companies or organizations that have contributed in some way to the TinyMCE project. If you feel we are missing someone please inform us right away and we will correct this in future versions of TinyMCE.</p>
<p>
Please note that some of these have contributed with complete language packs and some have updated parts of language packs or similar.
</p>
</div>
<div class="separator"></div>
<div class="section">
<p>
<ul>
<li class="list_subtitle">Code / Solutions / Features</li>
<ul>
<li>Digital Ventures</li>
<li>donadoni</li>
<li>Michael Keck</li>
<li>Victor Nilsson</li>
<li>Jrgen Baute</li>
<li>"Neirda"</li>
<li>"speednet"</li>
<li>Virtuelcom</li>
<li>"SlyD"</li>
<li>Ernst de Moor</li>
<li>"jamesw"</li>
<li>Vincent FIACK</li>
<li>Aptest</li>
</ul>
<li class="list_subtitle">Language packs</li>
<ul>
<li>Marcin Szymon Sznyra</li>
<li>"revyag"</li>
<li>Jim Kou</li>
<li>"Krokogras"</li>
<li>Hani Suleiman</li>
<li>Jan Moelgaard</li>
<li>Christopher Mller</li>
<li>Virtuelcom</li>
<li>Pavel Novk</li>
<li>Simon Rupf</li>
<li>"Fabrix Xm"</li>
<li>Mats Lfstrm, York Consulting AB</li>
<li>Morteza Zafari</li>
<li>Laurent Dran</li>
<li>Tobias Heer</li>
<li>"Innozent"</li>
<li>"cube316"</li>
<li>Jos Pedro Pereira</li>
<li>"Martin"</li>
<li>Sten Aksel Heien</li>
<li>Setzer Gabbiani</li>
<li>Jacaranda Bill</li>
<li>Pat Boens</li>
<li>Roman Filippov</li>
<li>Arnoud van Delden</li>
</ul>
</ul>
</p>
<p>There are also a few corporations that have contributed in various ways to have features developed by payed support.
</p>
</div>
</div>
<div class="footer">
<div class="helpindexlink"><a href="index.html">Index</a></div>
<div class="copyright">Copyright &copy; 2003-2006 <a href="http://www.moxiecode.com">Moxiecode Systems AB</a></div>
<br style="clear: both" />
</div>
</body>
</html>
body {
background-color: #FFFFFF;
font-family: Verdana, Arial, helvetica, sans-serif;
font-size: 12px;
}
.header {
border: #E0E0E0 solid 1px;
}
.footer {
border: #E0E0E0 solid 1px;
height: 20px;
}
h1 {
font-size: 18px;
font-weight: bold;
padding: 0;
margin: 4px;
}
h2 {
font-size: 14px;
font-weight: bold;
padding: 0;
margin: 0;
margin-top: 4px;
margin-bottom: 4px;
}
h3 {
font-size: 11px;
font-weight: bold;
padding: 0;
margin: 0;
margin-bottom: 3px;
}
.section {
margin-left: 15px;
}
.column {
margin-right: 20px;
float: left
}
.separator {
border-bottom: 1px solid #E6EBF1;
margin-top: 10px;
margin-bottom: 10px;
}
p {
}
.helpindex {
margin-left: 20px;
padding-left: 0;
}
.optionlist {
margin: 0;
padding: 0;
margin-bottom: 10px;
}
.optionlist li {
padding: 0;
margin: 0;
margin-top: 3px;
margin-bottom: 3px;
margin-left: 10px;
list-style-type: none;
}
.helpindex li {
margin-top: 3px;
}
.content {
margin: 10px;
}
.example {
background-color: #E6EBF1;
margin-left: 10px;
}
code, pre {
margin: 0;
padding: 0;
background-color: #E6EBF1;
}
.copyright {
margin: 3px;
float: left;
}
.helpindexlink {
margin: 3px;
float: right;
}
a:visited {
color: #666666;
text-decoration: underline;
}
a:active {
color: #666666;
text-decoration: underline;
}
a:hover {
color: #666666;
text-decoration: underline;
}
a {
color: #666666;
text-decoration: underline;
}
.list_subtitle {
padding-top: 5px;
}
.note {
margin-top: 5px;
margin-left: 10px;
font-size: 10px;
}
.marked {
color: red;
font-weight: bold;
}
thead {
background-color: #E6EBF1;
}
.btable {
}
.btable th {
border: 1px solid gray;
vertical-align: top;
}
.btable td {
border: 1px solid gray;
vertical-align: top;
}
.plist {
list-style-type: none;
margin: 0;
padding: 0;
}
.plist li {
padding-bottom: 3px;
}
\ No newline at end of file
<!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">
<head>
<title>Customization - Creating a language pack</title>
<link href="css/screen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div class="header">
<h1>Customization - Creating a language pack</h1>
</div>
<div class="content">
<h2>Making language packs</h2>
<p>Language packs are simply JavaScript name/value arrays placed in the &quot;<ISO-639-1 code>.js&quot; files in the &quot;lang&quot; directory. Remember to allways use the &quot;lang_&quot; prefix for these value names so that they don't override other variables in the templates. The example below shows how the cut, copy and paste texts are lang packed. Notice there are three kinds of language packs the first one is the general one shared by all themes these are located in the &quot;jscripts/tiny_mce/langs&quot; directory the secound ones are theme specific language packs these are contained in &quot;jscripts/tiny_mce/themes/&lt;some theme&gt;/langs&quot; and the last one is plugin specific language packs located in each plugin.
</p>
<p>
<div class="example">
<pre>
tinyMCE.addToLang('',{
cut_desc : 'Cut (Ctrl+X)',
copy_desc : 'Copy (Ctrl+C)',
paste_desc : 'Paste (Ctrl+P)'
);
</pre>
</div>
</p>
<p>
Remember the last translation line should not have a , character at the end. The first parameter to the addToLang is the prefix to add before each variable, this was added to reduce the overall size of the language packs to reduce the overall download time.
</p>
<h3>Files to edit</h3>
<p>
When translating TinyMCE, these are the files that currently needs to be translated:
</p>
<p>
/tinymce/jscripts/tiny_mce/langs/en.js<br />
/tinymce/jscripts/tiny_mce/plugins/&lt;plugin&gt;/langs/en.js<br />
/tinymce/jscripts/tiny_mce/themes/advanced/langs/en.js<br />
</p>
<p>
Notice some language variables may include a name/url of a gif image or simmilar, for example the button for bold has a "F" character in the Swedish language pack. There are also relative window sizes located in the language packs, for example is the link dialog needs to be bigger inorder to fit a specific translation you can alter the width of the window by modifying these variables.
</p>
<h3>Contributing your language pack</h3>
<p>
Go to the <a href="http://sourceforge.net/tracker/?atid=635684&group_id=103281&func=browse">sourceforge patch page</a> and upload a zip containing all the language files in the correct directory structure.<br /><br />
Please translate all the plugins, even if you aren't using them.<br />
</p>
</div>
<div class="footer">
<div class="helpindexlink"><a href="index.html">Index</a></div>
<div class="copyright">Copyright &copy; 2003-2006 <a href="http://www.moxiecode.com">Moxiecode Systems AB</a></div>
<br style="clear: both" />
</div>
</body>
</html>
<!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">
<head>
<title>Customization - Creating a plugin</title>
<link href="css/screen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div class="header">
<h1>Customization - Creating a plugin</h1>
</div>
<div class="content">
<h2>Creating your own plugins</h2>
<p>
Creating you own plugins for the TinyMCE application is fairly easy if you know the basics of HTML, CSS and Javascript. The most easy way is to copy the &quot;_template&quot; directory or one of the other core plugins and work from there. The &quot;_template&quot; directory is a tutorial plugin that shows how to create a plugin. After you copy the template you need to change the red sections marked below to the name of your plugin this is needed so that plugins don't overlap in other words it gives the plugin a unique name.
</p>
<p>If you want you may add plugin specific options/settings but remember to namespace them in the following format &quot;&lt;your plugin&gt;_&lt;option&gt;&quot; for example &quot;yourplugin_someoption&quot;.</p>
<p>Specific callback functions that you don't need or doesn't do anything can be removed.</p>
<div class="separator"></div>
<h3>Plugin directory structure</h3>
<p>
<table class="btable">
<thead>
<th>File/Directory</td>
<th>Description</td>
</thead>
<tbody>
<tr><td>css</td><td>Plugin specific CSS files</td></tr>
<tr><td>docs</td><td>Plugin specific documentation</td></tr>
<tr><td>images</td><td>Plugin specific images</td></tr>
<tr><td>jscripts</td><td>Plugin specific jscripts for HTML dialogs</td></tr>
<tr><td>langs</td><td>Plugin specific language files</td></tr>
<tr><td>editor_plugin.js</td><td>Editor plugin file (compressed).</td></tr>
<tr><td>editor_plugin_src.js</td><td>Editor plugin file (source).</td></tr>
<tr><td>somedialog.htm</td><td>Plugin specific dialog HTML file.</td></tr>
</table>
</p>
<div class="separator"></div>
<h3>Plugin example source</h3>
<p>
The example below shows a simple empty plugin and all possible callbacks.
</p>
<p>
<div class="example">
<pre>
var TinyMCE_<span class="marked">SomeName</span>Plugin = {
/**
* Returns information about the plugin as a name/value array.
* The current keys are longname, author, authorurl, infourl and version.
*
* @returns Name/value array containing information about the plugin.
* @type Array
*/
getInfo : function() {
return {
longname : 'Your plugin',
author : 'Your name',
authorurl : 'http://www.yoursite.com',
infourl : 'http://www.yoursite.com/docs/template.html',
version : "1.0"
};
},
/**
* Gets executed when a TinyMCE editor instance is initialized.
*
* @param {TinyMCE_Control} Initialized TinyMCE editor control instance.
*/
initInstance : function(inst) {
// You can take out plugin specific parameters
alert("Initialization parameter:" + tinyMCE.getParam("<span class="marked">somename</span>_someparam", false));
// Register custom keyboard shortcut
inst.addShortcut('ctrl', 't', 'lang_<span class="marked">somename</span>_desc', 'mceSomeCommand');
},
/**
* Returns the HTML code for a specific control or empty string if this plugin doesn't have that control.
* A control can be a button, select list or any other HTML item to present in the TinyMCE user interface.
* The variable {$editor_id} will be replaced with the current editor instance id and {$pluginurl} will be replaced
* with the URL of the plugin. Language variables such as {$lang_somekey} will also be replaced with contents from
* the language packs.
*
* @param {string} cn Editor control/button name to get HTML for.
* @return HTML code for a specific control or empty string.
* @type string
*/
getControlHTML : function(cn) {
switch (cn) {
case "<span class="marked">SomeControl</span>":
return tinyMCE.getButtonHTML(cn, 'lang_<span class="marked">someplugin</span>_<span class="marked">button</span>_desc', '{$pluginurl}/images/<span class="marked">someimage</span>.gif', '<span class="marked">mceSomeCommand</span>');
}
return "";
},
getControlHTML : function(cn) {
switch (cn) {
case "advhr":
return tinyMCE.getButtonHTML(cn, 'lang_insert_advhr_desc', '{$pluginurl}/images/advhr.gif', 'mceAdvancedHr');
}
return "";
},
/**
* Executes a specific command, this function handles plugin commands.
*
* @param {string} editor_id TinyMCE editor instance id that issued the command.
* @param {HTMLElement} element Body or root element for the editor instance.
* @param {string} command Command name to be executed.
* @param {string} user_interface True/false if a user interface should be presented.
* @param {mixed} value Custom value argument, can be anything.
* @return true/false if the command was executed by this plugin or not.
* @type
*/
execCommand : function(editor_id, element, command, user_interface, value) {
// Handle commands
switch (command) {
// Remember to have the "mce" prefix for commands so they don't intersect with built in ones in the browser.
case "mce<span class="marked">SomeCommand</span>":
// Do your custom command logic here.
return true;
}
// Pass to next handler in chain
return false;
},
/**
* Gets called ones the cursor/selection in a TinyMCE instance changes. This is useful to enable/disable
* button controls depending on where the user are and what they have selected. This method gets executed
* alot and should be as performance tuned as possible.
*
* @param {string} editor_id TinyMCE editor instance id that was changed.
* @param {HTMLNode} node Current node location, where the cursor is in the DOM tree.
* @param {int} undo_index The current undo index, if this is -1 custom undo/redo is disabled.
* @param {int} undo_levels The current undo levels, if this is -1 custom undo/redo is disabled.
* @param {boolean} visual_aid Is visual aids enabled/disabled ex: dotted lines on tables.
* @param {boolean} any_selection Is there any selection at all or is there only a cursor.
*/
handleNodeChange : function(editor_id, node, undo_index, undo_levels, visual_aid, any_selection) {
},
/**
* Gets called when a TinyMCE editor instance gets filled with content on startup.
*
* @param {string} editor_id TinyMCE editor instance id that was filled with content.
* @param {HTMLElement} body HTML body element of editor instance.
* @param {HTMLDocument} doc HTML document instance.
*/
setupContent : function(editor_id, body, doc) {
},
/**
* Gets called when the contents of a TinyMCE area is modified, in other words when a undo level is
* added.
*
* @param {TinyMCE_Control} inst TinyMCE editor area control instance that got modified.
*/
onChange : function(inst) {
},
/**
* Gets called when TinyMCE handles events such as keydown, mousedown etc. TinyMCE
* doesn't listen on all types of events so custom event handling may be required for
* some purposes.
*
* @param {Event} e HTML editor event reference.
* @return true - pass to next handler in chain, false - stop chain execution
* @type boolean
*/
handleEvent : function(e) {
return true;
},
/**
* Gets called when HTML contents is inserted or retrived from a TinyMCE editor instance.
* The type parameter contains what type of event that was performed and what format the content is in.
* Possible valuses for type is get_from_editor, insert_to_editor, get_from_editor_dom, insert_to_editor_dom.
*
* @param {string} type Cleanup event type.
* @param {mixed} content Editor contents that gets inserted/extracted can be a string or DOM element.
* @param {TinyMCE_Control} inst TinyMCE editor instance control that performes the cleanup.
* @return New content or the input content depending on action.
* @type string
*/
cleanup : function(type, content, inst) {
return content;
},
// Private plugin internal methods
/**
* This is just a internal plugin method, prefix all internal methods with a _ character.
* The prefix is needed so they doesn't collide with future TinyMCE callback functions.
*
* @param {string} a Some arg1.
* @param {string} b Some arg2.
* @return Some return.
* @type string
*/
_someInternalFunction : function(a, b) {
return 1;
}
};
// Adds the plugin class to the list of available TinyMCE plugins
tinyMCE.addPlugin("<span class="marked">someplugin</span>", TinyMCE_<span class="marked">SomePlugin</span>Plugin);
</pre>
</div>
</p>
</div>
<div class="footer">
<div class="helpindexlink"><a href="index.html">Index</a></div>
<div class="copyright">Copyright &copy; 2003-2006 <a href="http://www.moxiecode.com">Moxiecode Systems AB</a></div>
<br style="clear: both" />
</div>
</body>
</html>
<!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">
<head>
<title>Customization - Creating a theme</title>
<link href="css/screen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div class="header">
<h1>Customization - Creating a theme</h1>
</div>
<div class="content">
<h2>Creating your own Themes</h2>
<p>
Creating you own themes for the TinyMCE application is fairly easy if you know the basics of HTML, CSS and Javascript. The most easy way is to copy the &quot;simple&quot; or the &quot;advanced&quot; template and rename it as your own name to for example &quot;mytheme&quot;. After you copy the template you need to change the red sections marked below to &quot;mytheme&quot; this is needed so that themes don't overlap in other words it gives the theme a unique name. Then just alter the HTML code as you see fit but notice some elements needs to be there so check the docs below on each function also remember that your custom themes needs to be located in tiny_mce's &quot;themes&quot; directory. If you want you may add theme specific options/settings but remember to namespace them in the following format &quot;theme_&lt;your theme&gt;_&lt;option&gt;&quot;.
</p>
<div class="separator"></div>
<h3>Theme directory structure</h3>
<p>
<table class="btable">
<thead>
<th>File/Directory</td>
<th>Description</td>
</thead>
<tbody>
<tr><td>css</td><td>Theme specific CSS files</td></tr>
<tr><td>docs</td><td>Theme specific documentation</td></tr>
<tr><td>images</td><td>Theme specific images</td></tr>
<tr><td>jscripts</td><td>Theme specific jscripts for HTML dialogs</td></tr>
<tr><td>langs</td><td>Theme specific language files</td></tr>
<tr><td>editor_template.js</td><td>Editor theme template file (compressed).</td></tr>
<tr><td>editor_template_src.js</td><td>Editor theme template file (source).</td></tr>
<tr><td>somedialog.htm</td><td>Theme specific dialog HTML file.</td></tr>
</table>
</p>
<div class="separator"></div>
<h3>Theme example source</h3>
<p>
The example below shows a simple empty theme and all possible callbacks.
</p>
<p>
<div class="example">
<pre>
var TinyMCE_<span class="marked">SomeName</span>Theme = {
/**
* Returns information about the theme as a name/value array.
* The current keys are longname, author, authorurl, infourl and version.
*
* @returns Name/value array containing information about the theme.
* @type Array
*/
getInfo : function() {
return {
longname : 'Your Theme',
author : 'Your name',
authorurl : 'http://www.yoursite.com',
infourl : 'http://www.yoursite.com/docs/template.html',
version : "1.0"
};
},
/**
* Gets executed when a TinyMCE editor instance is initialized.
*
* @param {TinyMCE_Control} Initialized TinyMCE editor control instance.
*/
initInstance : function(inst) {
// You can take out theme specific parameters
alert("Initialization parameter:" + tinyMCE.getParam("<span class="marked">somename</span>_someparam", false));
// Register custom keyboard shortcut
inst.addShortcut('ctrl', 't', 'lang_<span class="marked">somename</span>_desc', 'mceSomeCommand');
},
/**
* Returns the HTML code for a specific control or empty string if this theme doesn't have that control.
* A control can be a button, select list or any other HTML item to present in the TinyMCE user interface.
* The variable {$editor_id} will be replaced with the current editor instance id and {$themeurl} will be replaced
* with the URL of the theme. Language variables such as {$lang_somekey} will also be replaced with contents from
* the language packs.
*
* @param {string} cn Editor control/button name to get HTML for.
* @return HTML code for a specific control or empty string.
* @type string
*/
getControlHTML : function(cn) {
switch (cn) {
case "<span class="marked">SomeControl</span>":
return tinyMCE.getButtonHTML(cn, 'lang_<span class="marked">sometheme</span>_<span class="marked">button</span>_desc', '{$themeurl}/images/<span class="marked">someimage</span>.gif', '<span class="marked">mceSomeCommand</span>');
}
return "";
},
/**
* Returns the HTML code that should be inserted for a specific editor instance.
* This function should return a name/value array with three items html, delta_width, delta_height.
* The html item should contain the HTML code to insert as a editor instance.
* The variable {$editor_id} will be replaced with the current editor instance id and {$themeurl} will be replaced
* with the URL of the theme. Language variables such as {$lang_somekey} will also be replaced with contents from
* the language packs. Any element with the id {$editor_id} will be replaced with the editor iframe element.
* The {$width} and {$height} variables will be replaced with the editors outside dimension values.
* The delta_width/height is the relative width/height in pixels to add or remove from the iframe dimensions.
*
* @param {Array} settings Name/Value array instance settings.
* @param {string} editor_id TinMYCE editor control instance id.
* @return Name/Value array of editor template data.
* @type Array
*/
getEditorTemplate : function(settings, editor_id) {
var html = "";
// Build toolbar and editor instance
html += "..";
return {
html : html,
delta_width : 0,
delta_height : 0
};
},
/**
* Executes a specific command, this function handles theme commands.
*
* @param {string} editor_id TinyMCE editor instance id that issued the command.
* @param {HTMLElement} element Body or root element for the editor instance.
* @param {string} command Command name to be executed.
* @param {string} user_interface True/false if a user interface should be presented.
* @param {mixed} value Custom value argument, can be anything.
* @return true/false if the command was executed by this theme or not.
* @type
*/
execCommand : function(editor_id, element, command, user_interface, value) {
// Handle commands
switch (command) {
// Remember to have the "mce" prefix for commands so they don't intersect with built in ones in the browser.
case "mce<span class="marked">SomeCommand</span>":
// Do your custom command logic here.
return true;
}
// Pass to next handler in chain
return false;
},
/**
* Gets called ones the cursor/selection in a TinyMCE instance changes. This is useful to enable/disable
* button controls depending on where the user are and what they have selected. This method gets executed
* alot and should be as performance tuned as possible.
*
* @param {string} editor_id TinyMCE editor instance id that was changed.
* @param {HTMLNode} node Current node location, where the cursor is in the DOM tree.
* @param {int} undo_index The current undo index, if this is -1 custom undo/redo is disabled.
* @param {int} undo_levels The current undo levels, if this is -1 custom undo/redo is disabled.
* @param {boolean} visual_aid Is visual aids enabled/disabled ex: dotted lines on tables.
* @param {boolean} any_selection Is there any selection at all or is there only a cursor.
*/
handleNodeChange : function(editor_id, node, undo_index, undo_levels, visual_aid, any_selection) {
},
/**
* Gets called when a TinyMCE editor instance gets filled with content on startup.
*
* @param {string} editor_id TinyMCE editor instance id that was filled with content.
* @param {HTMLElement} body HTML body element of editor instance.
* @param {HTMLDocument} doc HTML document instance.
*/
setupContent : function(editor_id, body, doc) {
},
/**
* Gets called when the contents of a TinyMCE area is modified, in other words when a undo level is
* added.
*
* @param {TinyMCE_Control} inst TinyMCE editor area control instance that got modified.
*/
onChange : function(inst) {
},
/**
* Gets called when TinyMCE handles events such as keydown, mousedown etc. TinyMCE
* doesn't listen on all types of events so custom event handling may be required for
* some purposes.
*
* @param {Event} e HTML editor event reference.
* @return true - pass to next handler in chain, false - stop chain execution
* @type boolean
*/
handleEvent : function(e) {
return true;
},
/**
* Gets called when HTML contents is inserted or retrived from a TinyMCE editor instance.
* The type parameter contains what type of event that was performed and what format the content is in.
* Possible valuses for type is get_from_editor, insert_to_editor, get_from_editor_dom, insert_to_editor_dom.
*
* @param {string} type Cleanup event type.
* @param {mixed} content Editor contents that gets inserted/extracted can be a string or DOM element.
* @param {TinyMCE_Control} inst TinyMCE editor instance control that performes the cleanup.
* @return New content or the input content depending on action.
* @type string
*/
cleanup : function(type, content, inst) {
return content;
},
// Private theme internal methods
/**
* This is just a internal theme method, prefix all internal methods with a _ character.
* The prefix is needed so they doesn't collide with future TinyMCE callback functions.
*
* @param {string} a Some arg1.
* @param {string} b Some arg2.
* @return Some return.
* @type string
*/
_someInternalFunction : function(a, b) {
return 1;
}
};
// Adds the theme class to the list of available TinyMCE themes
tinyMCE.addTheme("<span class="marked">sometheme</span>", TinyMCE_<span class="marked">SomeTheme</span>Theme);
</pre>
</div>
</p>
<div class="separator"></div>
<h3>Creating popup HTML files</h3>
<p>
When creating a popup you need to include the &quot;tiny_mce_popup.js&quot; this enables you to retrive the tinyMCE global instance in all popup windows. All variables and language definitions gets replaced in the page when it loads. So language variables such as {$lang_something} can be places in the HTML code, if you need to get a language string in JavaScript simply use the tinyMCE.getLang function.
</p>
<h3>Example of simple popup file:</h3>
<div class="example">
<pre>
&lt;html&gt;
&lt;head&gt;
&lt;title&gt;{$lang_theme_sample_title}&lt;/title&gt;
&lt;script language=&quot;javascript&quot; src=&quot;../../tiny_mce_popup.js&quot;&gt;&lt;/script&gt;
&lt;script language=&quot;javascript&quot;&gt;
// getWindowArg returns any arguments passed to the window
alert(tinyMCE.getWindowArg('some_arg'));
&lt;/script&gt;
&lt;body&gt;
&lt;strong&gt;{$lang_theme_sample_desc}&lt;/strong&gt;
&lt;/body&gt;
</pre>
</div>
<div class="footer">
<div class="helpindexlink"><a href="index.html">Index</a></div>
<div class="copyright">Copyright &copy; 2003-2006 <a href="http://www.moxiecode.com">Moxiecode Systems AB</a></div>
<br style="clear: both" />
</div>
</body>
</html>
<!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">
<head>
<title>Frequently Asked Questions</title>
<link href="css/screen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div class="header">
<h1>Frequently Asked Questions</h1>
</div>
<div class="content">
<p>Here are some common answers to common questions. If you need more help you can always visit the <a href="http://tinymce.moxiecode.com/">TinyMCE Forum</a> on the TinyMCE web site.</p>
<p>
<ul class="plist">
<li><a href="#broken">TinyMCE is broken, what should I do?</a></li>
<li><a href="#paths">Why is my paths incorrect, I want absolute/relative URLs?</a></li>
<li><a href="#strip">Why does TinyMCE strip aways attributes or tags from my source?</a></li>
<li><a href="#font">How do I change the default font size/face color of the editor?</a></li>
<li><a href="#remove">How do I remove/add buttons/controls to TinyMCE?</a></li>
<li><a href="#quotes">Why does my HTML output include lots of \&quot; like &lt;a href=\&quot;mylink.htm\&quot;&gt;link&lt;/a&gt;?</a></li>
<li><a href="#load">TinyMCE takes ages to load, is there a way to make it load quicker?</a></li>
<li><a href="#hidden">TinyMCE stops working when placed in tabs or hidden divs?</a></li>
<li><a href="#commercial">Can I use TinyMCE in my commercial application?</a></li>
<li><a href="#commercial2">Are there any restrictions to using TinyMCE in my commercial application?</a></li>
<li><a href="#lgpl">I don't like LGPL, is there a commercial license available for me?</a></li>
<li><a href="#support">Do you provide support?</a></li>
<li><a href="#who">Who made this software?</a></li>
</ul>
</p>
<div class="separator"></div>
<a name="broken"></a>
<h2>TinyMCE is broken, what should I do?</h2>
<div class="section">
<p>There are a few things you should check before posting questions about your problem at the forum or sourceforge.</p>
<p>
<ul>
<li>Does TinyMCE work on the <a href="http://tinymce.moxiecode.com/example_full.php?example=true">TinyMCE website</a>. Then you know that TinyMCE works with your browser.</li>
<li>Try to disable any other JavaScripts on the page, some scripts interfere with internal functions that TinyMCE uses. Those scripts are probably poorly written.</li>
<li>Check that you havn't missed removing the last , character in your initialization code and that all the other rows have a trailing , character.</li>
<li>Verify that the path/URL to TinyMCE is correct, you can use the excellent tool <a href="http://www.fiddlertool.com/fiddler/">Fiddler</a> for this and other HTTP debugging.</li>
<li>Do not cross domain load TinyMCE or any other script unless you really really must, since this will invoke various browser security features. In other words, try placing everything on the same server.</li>
<li>Don't place textareas within paragraph elements since this is not valid HTML and it will break MSIE and TinyMCE.</li>
</ul>
</p>
</div>
<div class="separator"></div>
<a name="paths"></a>
<h2>Why is my paths incorrect, I want absolute/relative URLs?</h2>
<div class="section">
<p>
These are the diffrent configuration scenarios for URLs within TinyMCE:
<table class="btable">
<thead>
<th>Output</th>
<th>Config</th>
<th>Description</th>
</thead>
<tbody>
<tr>
<td><strong>http://www.site.com/path1/path2/file.htm</strong> will be converted to <strong>path2/file.htm</strong></td>
<td nowrap="nowrap">
<a href="option_relative_urls.html">relative_urls</a> : true,<br />
<a href="option_document_base_url.html">document_base_url</a> : &quot;http://www.site.com/path1/&quot;<br />
</td>
<td>This will convert all URLs within the same domain to relative URLs.<br /> <strong>The URLs will be relative from the <a href="option_document_base_url.html">document_base_url</a></strong>.</td>
</tr>
<tr>
<td><strong>path2/file.htm</strong> will be converted to <strong>/path1/path2/file.htm</strong></td>
<td nowrap="nowrap">
<a href="option_relative_urls.html">relative_urls</a> : false,<br />
<a href="option_remove_script_host.html">remove_script_host</a> : true,<br />
<a href="option_document_base_url.html">document_base_url</a> : &quot;http://www.site.com/path1/&quot;<br />
</td>
<td>This will convert all relative URLs to absolute URLs.<br /> <strong>The URLs will be absolute based on the <a href="option_document_base_url.html">document_base_url</a></strong>.</td>
</tr>
<tr>
<td><strong>path2/file.htm</strong> will be converted to <strong>http://www.site.com/path1/path2/file.htm</strong></td>
<td nowrap="nowrap">
<a href="option_relative_urls.html">relative_urls</a> : false,<br />
<a href="option_remove_script_host.html">remove_script_host</a> : false,<br />
<a href="option_document_base_url.html">document_base_url</a> : &quot;http://www.site.com/path1/&quot;<br />
</td>
<td>This will convert all relative URLs to absolute URLs.<br /> <strong>The URLs will be absolute based on the <a href="option_document_base_url.html">document_base_url</a></strong>.</td>
</tr>
<tr>
<td><strong>path2/file.htm</strong> or <strong>http://www.site.com/path1/path2/file.htm</strong> will not be converted at all.</td>
<td nowrap="nowrap">
<a href="option_convert_urls.html">convert_urls</a> : false<br />
</td>
<td>This option will preserve the URLs as they are in a separate attribute while editing, <strong>since browsers tend to auto convert URLs</strong>.</td>
</tr>
</tbody>
</table>
</p>
</div>
<div class="separator"></div>
<a name="strip"></a>
<h2>Why does TinyMCE strip aways attributes or tags from my source?</h2>
<div class="section">
<p>You need to check out the &quot;<a href="option_valid_elements.html">valid_elements</a>&quot; and &quot;<a href="option_extended_valid_elements.html">extended_valid_elements</a>&quot; option in the configuration. By default, TinyMCE only allows certain tags and attributes. TinyMCE also tries to follow the XHTML specification as much as possible (and so should you), this can cause some unexpected source changes, there are however configuration options to battle this issue, study the configuration options in details.</p>
</div>
<div class="separator"></div>
<a name="font"></a>
<h2>How do I change the default font size/face color of the editor?</h2>
<div class="section">
<p>
We recommend that you have a look at the <a href="option_content_css.html">content_css</a> option, this enables you to switch the CSS file TinyMCE uses for it's editing area with a file with your CSS rules for font size and so forth.
</p>
</div>
<div class="separator"></div>
<a name="remove"></a>
<h2>How do I remove/add buttons/controls to TinyMCE?</h2>
<div class="section">
<p>
There are quite a few options for this but a reference of all available buttons/control names can be found in the <a href="reference_buttons.html">button/control reference</a>.
</p>
</div>
<div class="separator"></div>
<a name="quotes"></a>
<h2>Why does my HTML output include lots of \&quot; like &lt;a href=\&quot;mylink.htm\&quot;&gt;link&lt;/a&gt;?</h2>
<div class="section">
<p>This is probably because you are using PHP and it has a feature that's called magic quotes that is enabled by default. You can read more about this at the <a href="http://se2.php.net/magic_quotes/">PHP website</a> or use the <a href="http://www.php.net/manual/en/function.stripslashes.php">stripslashes</a> function.</p>
</div>
<div class="separator"></div>
<a name="load"></a>
<h2>TinyMCE takes ages to load, is there a way to make it load quicker?</h2>
<div class="section">
<p>
If you use PHP on your server you can use tiny_mce_gzip.php instead of tiny_mce.js in page script call. This PHP file bundles all .js files together into two HTTP requests instead of one for each plugin, language file and theme and it also GZip compresses these files.
</p>
</div>
<div class="separator"></div>
<a name="hidden"></a>
<h2>TinyMCE stops working when placed in tabs or hidden divs?</h2>
<div class="section">
<p>Since Gecko based browsers Mozilla/Firefox has a bug where it looses designMode on iframes that are hidden a special option is needed that re-enables the design mode when reappearing after being hidden. Enable this option to resolve the issue: &quot;<a href="option_auto_reset_designmode.html">auto_reset_designmode</a>&quot;.</p>
</div>
<div class="separator"></div>
<a name="commercial"></a>
<h2>Can I use TinyMCE in my commercial application?</h2>
<div class="section">
<p>Yes you can, the LGPL license is a Free Software License. You can read the whole license <a href="license.html">here</a> or visit Free Software Foundation web site <a href="http://www.fsf.org/" target="_blank">here</a></p>
</div>
<div class="separator"></div>
<a name="commercial2"></a>
<h2>Are there any restrictions to using TinyMCE in my commercial application?</h2>
<div class="section">
<p>
Yes, all copyright notices must be intact. Moxiecode Systems are still the copyright holders of the source code, so you can not use the code for other applications. Any modifications or add-ons you make to the source has to be contributes back to the TinyMCE community.
</p>
<p>
If you start to make a lot of revenue from using TinyMCE, please remember the time and dedication that has been put into this by other developers, respect this and give credit to those who deserve it.
</p>
</div>
<div class="separator"></div>
<a name="lgpl"></a>
<h2>I don't like LGPL, is there a commercial license available for me?</h2>
<div class="section">
<p>
Yes, we can draw up a license for you that enables you to remove copyright restrictions or anything else you would like to have in this license agreement. Contact us through email, sales (at) moxiecode (dot) com.
</p>
</div>
<div class="separator"></div>
<a name="support"></a>
<h2>Do you provide support?</h2>
<div class="section">
<p>
We do not provide any non-commercial support outside the forum on the <a href="http://tinymce.moxiecode.com/">TinyMCE</a> web site. If you require commercial support, contact us by email, sales (at) moxiecode (dot) com.
</p>
</div>
<div class="separator"></div>
<a name="who"></a>
<h2>Who made this software?</h2>
<div class="section">
<p>
The author of TinyMCE is <a href="http://www.moxiecode.com/" target="_blank">Moxiecode Systems</a>, parts of code has also been contributed by others, <a href="credits.html">here</a> are the credits list.
</p>
</div>
</div>
<div class="footer">
<div class="helpindexlink"><a href="index.html">Index</a></div>
<div class="copyright">Copyright &copy; 2003-2006 <a href="http://www.moxiecode.com">Moxiecode Systems AB</a></div>
<br style="clear: both" />
</div>
</body>
</html>
htdocs/js/tinymce/docs/images/moxiecode.gif

2.67 KiB

<!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">
<head>
<title>TinyMCE Documentation - Index</title>
<link href="css/screen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div class="header">
<h1>TinyMCE Documentation</h1>
</div>
<div class="content">
<ul class="helpindex">
<li><a href="about.html">About TinyMCE</a></li>
<li><a href="installing.html">Installation instructions</a></li>
<li class="list_subtitle"><strong>Reference</strong></li>
<ul>
<li><a href="reference_configuration.html">Configuration</a></li>
<li><a href="reference_buttons.html">Button/control reference</a></li>
<li><a href="reference_javascript_functions.html">JavaScript functions</a></li>
<li><a href="reference_plugins.html">Plugins</a></li>
</ul>
<li class="list_subtitle"><strong>Customization</strong></li>
<ul style="padding-bottom: 5px;">
<li><a href="customization_plugins.html">Creating a plugin</a></li>
<li><a href="customization_language_packs.html">Creating a language pack</a></li>
<li><a href="customization_themes.html">Creating a theme</a></li>
</ul>
<li><a href="compatiblity_chart.html">Compatiblity chart</a></li>
<li><a href="faq.html">Frequently asked questions</a></li>
<li><a href="credits.html">Credits</a></li>
<li><a href="license.html">License (LGPL)</a></li>
</ul>
</div>
<div class="footer">
<div class="helpindexlink"><a href="index.html">Index</a></div>
<div class="copyright">Copyright &copy; 2003-2006 <a href="http://www.moxiecode.com">Moxiecode Systems AB</a></div>
<br style="clear: both" />
</div>
</body>
</html>
<!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">
<head>
<title>Installation Example 00</title>
<link href="css/screen.css" rel="stylesheet" type="text/css" />
<script language="javascript" type="text/javascript" src="../jscripts/tiny_mce/tiny_mce.js"></script>
<script language="javascript" type="text/javascript">
tinyMCE.init({
mode : "textareas",
theme : "simple"
});
</script>
</head>
<body>
<div class="header">
<h1>Installation example 00</h1>
</div>
<div class="content">
<h3>Example</h3>
<form method="post">
<textarea name="content" cols="50" rows="15">This is some content that will be editable with TinyMCE.</textarea>
</form>
</div>
</div>
<div class="footer">
<div class="helpindexlink"><a href="index.html">Index</a></div>
<div class="copyright">Copyright &copy; 2003-2006 <a href="http://www.moxiecode.com">Moxiecode Systems AB</a></div>
<br style="clear: both" />
</div>
</body>
</html>
<!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">
<head>
<title>Installation Example 01</title>
<link href="css/screen.css" rel="stylesheet" type="text/css" />
<script language="javascript" type="text/javascript" src="../jscripts/tiny_mce/tiny_mce_src.js"></script>
<script language="javascript" type="text/javascript">
tinyMCE.init({
mode : "textareas",
theme : "advanced"
});
</script>
</head>
<body>
<div class="header">
<h1>Installation example 01</h1>
</div>
<div class="content">
<h3>Example</h3>
<p>Open this page with "View source" or similar to see how the configuration is made.</p>
<form method="post">
<textarea name="content" cols="50" rows="15">This is some content that will be editable with TinyMCE.</textarea>
</form>
</div>
</div>
<div class="footer">
<div class="helpindexlink"><a href="index.html">Index</a></div>
<div class="copyright">Copyright &copy; 2003-2006 <a href="http://www.moxiecode.com">Moxiecode Systems AB</a></div>
<br style="clear: both" />
</div>
</body>
</html>
<!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">
<head>
<title>Installation Example 02</title>
<link href="css/screen.css" rel="stylesheet" type="text/css" />
<script language="javascript" type="text/javascript" src="../jscripts/tiny_mce/tiny_mce.js"></script>
<script language="javascript" type="text/javascript">
tinyMCE.init({
mode : "textareas",
theme : "advanced",
plugins : "table,save,advhr,advimage,advlink,emotions,iespell,insertdatetime,preview,zoom,flash,searchreplace,print,contextmenu",
theme_advanced_buttons1_add_before : "save,separator",
theme_advanced_buttons1_add : "fontselect,fontsizeselect",
theme_advanced_buttons2_add : "separator,insertdate,inserttime,preview,zoom,separator,forecolor,backcolor",
theme_advanced_buttons2_add_before: "cut,copy,paste,separator,search,replace,separator",
theme_advanced_buttons3_add_before : "tablecontrols,separator",
theme_advanced_buttons3_add : "emotions,iespell,flash,advhr,separator,print",
theme_advanced_toolbar_location : "top",
theme_advanced_toolbar_align : "left",
theme_advanced_path_location : "bottom",
plugin_insertdate_dateFormat : "%Y-%m-%d",
plugin_insertdate_timeFormat : "%H:%M:%S",
extended_valid_elements : "a[name|href|target|title|onclick],img[class|src|border=0|alt|title|hspace|vspace|width|height|align|onmouseover|onmouseout|name],hr[class|width|size|noshade],font[face|size|color|style],span[class|align|style]",
external_link_list_url : "example_data/example_link_list.js",
external_image_list_url : "example_data/example_image_list.js",
flash_external_list_url : "example_data/example_flash_list.js"
});
</script>
</head>
<body>
<div class="header">
<h1>Installation example 02</h1>
</div>
<div class="content">
<h3>Example</h3>
<p>Open this page with "View source" or similar to see how the configuration is made.</p>
<form method="post">
<textarea name="content" cols="85" rows="15">This is some content that will be editable with TinyMCE.</textarea>
</form>
</div>
</div>
<div class="footer">
<div class="helpindexlink"><a href="index.html">Index</a></div>
<div class="copyright">Copyright &copy; 2003-2006 <a href="http://www.moxiecode.com">Moxiecode Systems AB</a></div>
<br style="clear: both" />
</div>
</body>
</html>
<!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">
<head>
<title>Installation Example 02</title>
<link href="css/screen.css" rel="stylesheet" type="text/css" />
<script language="javascript" type="text/javascript" src="../jscripts/tiny_mce/tiny_mce.js"></script>
<script language="javascript" type="text/javascript">
tinyMCE.init({
mode : "textareas",
theme : "advanced",
theme_advanced_buttons1 : "bold,italic,underline,separator,strikethrough,justifyleft,justifycenter,justifyright, justifyfull,bullist,numlist,undo,redo,link,unlink",
theme_advanced_buttons2 : "",
theme_advanced_buttons3 : "",
theme_advanced_toolbar_location : "top",
theme_advanced_toolbar_align : "left",
theme_advanced_path_location : "bottom",
extended_valid_elements : "a[name|href|target|title|onclick],img[class|src|border=0|alt|title|hspace|vspace|width|height|align|onmouseover|onmouseout|name],hr[class|width|size|noshade],font[face|size|color|style],span[class|align|style]"
});
</script>
</head>
<body>
<div class="header">
<h1>Installation example 02</h1>
</div>
<div class="content">
<h3>Example</h3>
<p>Open this page with "View source" or similar to see how the configuration is made.</p>
<form method="post">
<textarea name="content" cols="85" rows="15">This is some content that will be editable with TinyMCE.</textarea>
</form>
</div>
</div>
<div class="footer">
<div class="helpindexlink"><a href="index.html">Index</a></div>
<div class="copyright">Copyright &copy; 2003-2006 <a href="http://www.moxiecode.com">Moxiecode Systems AB</a></div>
<br style="clear: both" />
</div>
</body>
</html>