Compare commits
37 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
86d2b83ed9 | ||
|
|
2dccf89408 | ||
|
|
d8a24e210f | ||
|
|
577acbd9f5 | ||
|
|
4bd583f92f | ||
|
|
814fd6c667 | ||
|
|
f7a3e3f9c9 | ||
|
|
726d247632 | ||
|
|
22b8c96fe3 | ||
| 0d05f8346b | |||
|
|
ef03d87799 | ||
|
|
dde64f9219 | ||
|
|
355212bf4b | ||
|
|
dab80993f2 | ||
|
|
44e4729a23 | ||
|
|
91849bdccd | ||
|
|
8f374b9e1b | ||
|
|
ebf738bffd | ||
|
|
88e6ebd3a4 | ||
|
|
9de9cea99a | ||
|
|
b2663bf31b | ||
|
|
013dd1a62c | ||
|
|
26fa4b91b9 | ||
|
|
93f9ff8a57 | ||
|
|
f66feb4dbe | ||
|
|
0394ada46e | ||
|
|
7fba150877 | ||
|
|
fa4dbf48fe | ||
| 56c32e77f0 | |||
| 0e84244db3 | |||
| cac9e366b7 | |||
| 0e60732f26 | |||
| cce2361b75 | |||
| e277e1cc24 | |||
| 61d2d63bf4 | |||
| fd65e84b62 | |||
| e795fa1af6 |
26
ChangeLog
Normal file
@@ -0,0 +1,26 @@
|
||||
v0.2 (27/04/2014)
|
||||
|
||||
** User **
|
||||
Add dyn:post_url and dyn:post_full_url for replace directive (doesn't prepend http://)
|
||||
Update TinyMCE to version 3.5.10
|
||||
Add Mardown support (with custom commands)
|
||||
Add all posts generators
|
||||
Set default font size to 14 for TinyMCE
|
||||
Allow to reference comments with #comment_number
|
||||
Add a favicon
|
||||
Add post search to Dynastie
|
||||
A base template can now contains multiple blocks
|
||||
Add a generator for "lesjoiesducode.fr" (previously parsed by a PERL script)
|
||||
|
||||
** Dev **
|
||||
Add coding information in all py files
|
||||
Add HTML5 markup and a favicon for blog.soutade.fr
|
||||
Add ChangeLog
|
||||
Simplify archive generation code
|
||||
Trim comments before saving
|
||||
|
||||
** Bugs **
|
||||
Escape double quotes in metas tag
|
||||
Replace line returns by <br /> for comments
|
||||
Archive geenration was broken for tags
|
||||
Returns to first page when adding a post
|
||||
14
README
@@ -1,16 +1,22 @@
|
||||
Dynastie is static blog generator delivered under GPL v3 licence terms.
|
||||
|
||||
Current version is 0.1
|
||||
Current version is 0.2
|
||||
|
||||
Requirements :
|
||||
Django >= 1.4, libapache2-mod-wsgi if you want to use Dynastie with Apache. PyGments (Optional).
|
||||
|
||||
Installation :
|
||||
Download Dynastie. Copy dynastie.bdd.init in dynastie.bdd and update wsgy.py (with $PWD/..). Then you can create a blog*, users**, categories, posts and generate your blog !
|
||||
* Download Dynastie
|
||||
* Update dynastie/wsgy.py (with $PWD/../) don't forget the final slash !
|
||||
* Update dynastie/settings.py (SECRET_KEY...)
|
||||
* Run ./manage.sh syncdb and create a superuser
|
||||
* Run ./manage.sh runserver
|
||||
or
|
||||
* Copy (and edit) apache_dynastie.conf in /etc/apache2/sites-available, and create a symbolic link from /etc/apache2/sites-enabled to /etc/apache2/sites-available
|
||||
|
||||
Then you can create users*, blog, categories, posts and generate your blog !
|
||||
|
||||
*Be careful : $(blog.name) must be an URI like "blog.soutade.fr", it will be used like this in some parts of Dynastie.
|
||||
|
||||
**There is an existing user : admin/admin
|
||||
|
||||
|
||||
More information can be found at http://indefero.soutade.fr/p/dynastie
|
||||
|
||||
19
apache_dynastie.conf
Normal file
@@ -0,0 +1,19 @@
|
||||
<VirtualHost *>
|
||||
ServerName dynastie.soutade.fr
|
||||
|
||||
DocumentRoot /home/soutade/dynastie/dynastie/
|
||||
|
||||
WSGIScriptAlias / /home/soutade/dynastie/dynastie/wsgi.py
|
||||
|
||||
Alias /static /home/soutade/dynastie/dynastie/static
|
||||
|
||||
<Directory /home/soutade/dynastie/dynastie>
|
||||
<IfVersion < 2.3 >
|
||||
Order allow,deny
|
||||
Allow from all
|
||||
</IfVersion>
|
||||
<IfVersion >= 2.3>
|
||||
Require all granted
|
||||
</IfVersion>
|
||||
</Directory>
|
||||
</VirtualHost>
|
||||
3
UserProfile.py → dynastie/UserProfile.py
Normal file → Executable file
@@ -1,5 +1,6 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
Copyright 2012-2013 Grégory Soutadé
|
||||
Copyright 2012-2014 Grégory Soutadé
|
||||
|
||||
This file is part of Dynastie.
|
||||
|
||||
0
__init__.py → dynastie/__init__.py
Normal file → Executable file
6
forms.py → dynastie/forms.py
Normal file → Executable file
@@ -1,5 +1,6 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
Copyright 2012-2013 Grégory Soutadé
|
||||
Copyright 2012-2014 Grégory Soutadé
|
||||
|
||||
This file is part of Dynastie.
|
||||
|
||||
@@ -31,7 +32,7 @@ class PostForm(ModelForm):
|
||||
|
||||
class Meta:
|
||||
model = Post
|
||||
exclude = ('title_slug', 'creation_date', 'modification_date', 'author', 'blog', 'tags')
|
||||
exclude = ('title_slug', 'creation_date', 'modification_date', 'author', 'blog', 'tags', 'content_format')
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super(PostForm, self).__init__(*args, **kwargs)
|
||||
@@ -45,7 +46,6 @@ class CategoryForm(ModelForm):
|
||||
class UserForm(ModelForm):
|
||||
class Meta:
|
||||
model = User
|
||||
exclude = ('is_staff', 'is_active', 'last_login', 'last_joined', 'user_permissions', 'groups', 'date_joined', 'password')
|
||||
|
||||
class CommentForm(ModelForm):
|
||||
class Meta:
|
||||
5
generators/__init__.py → dynastie/generators/__init__.py
Normal file → Executable file
@@ -1,5 +1,6 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
Copyright 2012-2013 Grégory Soutadé
|
||||
Copyright 2012-2014 Grégory Soutadé
|
||||
|
||||
This file is part of Dynastie.
|
||||
|
||||
@@ -17,4 +18,4 @@
|
||||
along with Dynastie. If not, see <http://www.gnu.org/licenses/>.
|
||||
"""
|
||||
|
||||
__all__ = ["generator", "index", "post", "category", "tag", "archive", "rss", "atom"]
|
||||
__all__ = ["generator", "index", "post", "category", "tag", "archive", "rss", "atom", "all_posts", "ljdc"]
|
||||
183
dynastie/generators/all_posts.py
Executable file
@@ -0,0 +1,183 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
Copyright 2012-2014 Grégory Soutadé
|
||||
|
||||
This file is part of Dynastie.
|
||||
|
||||
Dynastie is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
Dynastie is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Dynastie. If not, see <http://www.gnu.org/licenses/>.
|
||||
"""
|
||||
import os
|
||||
from xml.dom.minidom import parse, parseString
|
||||
from dynastie.generators.generator import DynastieGenerator
|
||||
from dynastie.generators.index import Index
|
||||
from django.db import models
|
||||
|
||||
class AllPosts(Index):
|
||||
|
||||
filename = 'all_posts'
|
||||
cur_post = 0
|
||||
|
||||
def createPosts(self, posts, dom, root, node):
|
||||
posts_elem = self.createElement(dom, 'posts')
|
||||
|
||||
self.cur_post = 0
|
||||
for p in posts:
|
||||
self.cur_post_obj = p
|
||||
|
||||
post_elem = self.createElement(dom, 'post', '', subtree=node)
|
||||
|
||||
self._parse(self.hooks, posts, dom, post_elem)
|
||||
posts_elem.appendChild(post_elem)
|
||||
self.cur_post = self.cur_post + 1
|
||||
|
||||
root.replaceChild(posts_elem, node)
|
||||
|
||||
|
||||
def createMonth(self, posts, dom, root, node):
|
||||
date_format = node.getAttribute('format')
|
||||
if date_format == '':
|
||||
date_format = '%B'
|
||||
|
||||
self.cur_month = posts[0].creation_date.month
|
||||
|
||||
root.removeChild(node)
|
||||
cur_posts = []
|
||||
month_elem = None
|
||||
prev_month = None
|
||||
for p in posts:
|
||||
if p.creation_date.month == self.cur_month:
|
||||
cur_posts.append(p)
|
||||
continue
|
||||
|
||||
cur_posts.reverse()
|
||||
|
||||
month_elem = self.createElement(dom, 'month')
|
||||
month_def = dom.createElement('month')
|
||||
month_def.appendChild(dom.createTextNode(cur_posts[0].creation_date.strftime(date_format)))
|
||||
month_elem.appendChild(month_def)
|
||||
self.cloneSubtree(month_elem, node)
|
||||
|
||||
# Parse inner HTML
|
||||
self._parse(self.hooks, cur_posts, dom, month_elem)
|
||||
|
||||
if not root.hasChildNodes():
|
||||
root.appendChild(month_elem)
|
||||
else:
|
||||
root.insertBefore(month_elem, prev_month)
|
||||
prev_month = month_elem
|
||||
cur_posts = []
|
||||
self.cur_month = p.creation_date.month
|
||||
cur_posts.append(p)
|
||||
|
||||
# Last month
|
||||
if len(cur_posts) != 0:
|
||||
cur_posts.reverse()
|
||||
month_elem = self.createElement(dom, 'month')
|
||||
month_def = dom.createElement('month')
|
||||
month_def.appendChild(dom.createTextNode(cur_posts[0].creation_date.strftime(date_format)))
|
||||
month_elem.appendChild(month_def)
|
||||
self.cloneSubtree(month_elem, node)
|
||||
|
||||
# Parse inner HTML
|
||||
self._parse(self.hooks, cur_posts, dom, month_elem)
|
||||
if not root.hasChildNodes():
|
||||
root.appendChild(month_elem)
|
||||
else:
|
||||
root.insertBefore(month_elem, prev_month)
|
||||
|
||||
|
||||
return None
|
||||
|
||||
def createYear(self, posts, dom, root, node):
|
||||
date_format = node.getAttribute('format')
|
||||
if date_format == '':
|
||||
date_format = '%Y'
|
||||
|
||||
self.cur_year = posts[0].creation_date.year
|
||||
|
||||
root.removeChild(node)
|
||||
cur_posts = []
|
||||
year_elem = None
|
||||
for p in posts:
|
||||
if p.creation_date.year == self.cur_year:
|
||||
cur_posts.append(p)
|
||||
continue
|
||||
|
||||
year_elem = self.createElement(dom, 'year')
|
||||
year_def = dom.createElement('year')
|
||||
year_def.appendChild(dom.createTextNode(cur_posts[0].creation_date.strftime(date_format)))
|
||||
year_elem.appendChild(year_def)
|
||||
self.cloneSubtree(year_elem, node)
|
||||
|
||||
# Parse inner HTML
|
||||
self._parse(self.hooks, cur_posts, dom, year_elem)
|
||||
|
||||
root.appendChild(year_elem)
|
||||
cur_posts = []
|
||||
self.cur_year = p.creation_date.year
|
||||
cur_posts.append(p)
|
||||
|
||||
# Last year
|
||||
if len(cur_posts) != 0:
|
||||
year_elem = self.createElement(dom, 'year')
|
||||
year_def = dom.createElement('year')
|
||||
year_def.appendChild(dom.createTextNode(cur_posts[0].creation_date.strftime(date_format)))
|
||||
year_elem.appendChild(year_def)
|
||||
self.cloneSubtree(year_elem, node)
|
||||
|
||||
# Parse inner HTML
|
||||
self._parse(self.hooks, cur_posts, dom, year_elem)
|
||||
root.appendChild(year_elem)
|
||||
|
||||
return None
|
||||
|
||||
def createAllPosts(self, posts, dom, root, node):
|
||||
posts_elem = self.createElement(dom, 'all_posts')
|
||||
|
||||
if len(posts) == 0:
|
||||
post_elem = self.createElement(dom, '', '<b>No posts yet</b>')
|
||||
posts_elem.appendChild(post_elem)
|
||||
else:
|
||||
for cnode in node.childNodes:
|
||||
new_node = cnode.cloneNode(True)
|
||||
posts_elem.appendChild(new_node)
|
||||
|
||||
self._parse(self.hooks, posts, dom, posts_elem)
|
||||
|
||||
root.replaceChild(posts_elem, node)
|
||||
return posts_elem
|
||||
|
||||
def generate(self, blog, src, output):
|
||||
from dynastie.models import Post, Blog, Category
|
||||
|
||||
self.hooks['year'] = self.createYear
|
||||
self.hooks['month'] = self.createMonth
|
||||
self.hooks['posts'] = self.createPosts
|
||||
self.hooks['all_posts'] = self.createAllPosts
|
||||
|
||||
dom = self.parseTemplate(blog, src, output, 'all_posts')
|
||||
if dom is None: return self.report
|
||||
|
||||
posts = Post.objects.filter(published=True).order_by('-creation_date')
|
||||
nodes = dom.getElementsByTagName("*")
|
||||
|
||||
nodes[0] = self.parse(src, self.hooks, posts, dom, nodes[0])
|
||||
|
||||
self.writeIfNotTheSame(output + "/" + self.filename + '.html', nodes[0])
|
||||
|
||||
if not self.somethingWrote:
|
||||
self.addReport('Nothing changed')
|
||||
|
||||
return self.report
|
||||
|
||||
50
generators/archive.py → dynastie/generators/archive.py
Normal file → Executable file
@@ -1,5 +1,6 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
Copyright 2012-2013 Grégory Soutadé
|
||||
Copyright 2012-2014 Grégory Soutadé
|
||||
|
||||
This file is part of Dynastie.
|
||||
|
||||
@@ -48,40 +49,31 @@ class Archive(Index):
|
||||
if dom is None: return self.report
|
||||
|
||||
posts = Post.objects.filter(published=True, front_page=True).order_by('creation_date')
|
||||
|
||||
if len(posts) == 0:
|
||||
return self.report
|
||||
|
||||
if posts.count() != 0:
|
||||
self.cur_year = int(posts[0].creation_date.year)
|
||||
first_post = posts[0]
|
||||
last_post = Post.objects.filter(published=True, front_page=True).order_by('-creation_date')[0]
|
||||
|
||||
start_year = first_post.creation_date.year
|
||||
end_year = last_post.creation_date.year
|
||||
|
||||
my_post = []
|
||||
now = datetime.now()
|
||||
nb_post = len(posts)
|
||||
for i in range(0, nb_post):
|
||||
if self.cur_year == now.year:
|
||||
break
|
||||
for i in range(start_year, end_year):
|
||||
if i == now.year: continue
|
||||
|
||||
if i < nb_post-1:
|
||||
if posts[i].creation_date.year != posts[i+1].creation_date.year:
|
||||
dom = parse(src + '/_archive.html')
|
||||
my_post.reverse()
|
||||
self.nb_pages = 0
|
||||
self.cur_page = 0
|
||||
self.cur_post = 0
|
||||
self.cur_year = i
|
||||
|
||||
self.dirname = '/archive/' + str(self.cur_year)
|
||||
posts = Post.objects.filter(published=True, front_page=True, creation_date__gt=datetime(i, 1, 1), creation_date__lt=datetime(i+1, 1, 1)).order_by('-creation_date')
|
||||
|
||||
self.nb_pages = 0
|
||||
self.cur_page = 0
|
||||
self.cur_post = 0
|
||||
|
||||
self.dirname = '/archive/' + str(i)
|
||||
|
||||
self.generatePages(dom, my_post, src, output, 'archive', 'archive')
|
||||
self.cur_year = int(posts[i+1].creation_date.year)
|
||||
#print 'New year ' + str(self.cur_year)
|
||||
my_post = []
|
||||
if self.cur_year == int(now.year):
|
||||
break
|
||||
else:
|
||||
my_post.append(posts[i])
|
||||
else:
|
||||
# Last post
|
||||
my_post.append(posts[i])
|
||||
if nb_post != 1 and posts[i].creation_date.year != posts[i-1].creation_date.year:
|
||||
self.cur_year = int(posts[i].creation_date.year)
|
||||
self.generatePages(dom, posts, src, output, 'archive')
|
||||
|
||||
if not self.somethingWrote:
|
||||
self.addReport('Nothing changed')
|
||||
7
generators/atom.py → dynastie/generators/atom.py
Normal file → Executable file
@@ -1,5 +1,6 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
Copyright 2012-2013 Grégory Soutadé
|
||||
Copyright 2012-2014 Grégory Soutadé
|
||||
|
||||
This file is part of Dynastie.
|
||||
|
||||
@@ -23,6 +24,7 @@ from dynastie.generators.generator import DynastieGenerator
|
||||
from dynastie.generators.rss import RSS
|
||||
from xml.dom.minidom import getDOMImplementation
|
||||
from django.db import models
|
||||
from dynastie.generators import markdown2
|
||||
|
||||
class Atom(RSS):
|
||||
|
||||
@@ -79,6 +81,9 @@ class Atom(RSS):
|
||||
post_content = '<![CDATA[' + f.read() + ']]>'
|
||||
f.close()
|
||||
|
||||
if post.content_format == Post.CONTENT_TEXT:
|
||||
post_content = markdown2.markdown(post_content)
|
||||
|
||||
self.appendElement(dom, item, 'summary', post_content, {'type':'html'})
|
||||
self.appendElement(dom, item, 'content', post_content, {'type':'html'})
|
||||
root.appendChild(item)
|
||||
5
generators/category.py → dynastie/generators/category.py
Normal file → Executable file
@@ -1,5 +1,6 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
Copyright 2012-2013 Grégory Soutadé
|
||||
Copyright 2012-2014 Grégory Soutadé
|
||||
|
||||
This file is part of Dynastie.
|
||||
|
||||
@@ -59,7 +60,7 @@ class Category(Index):
|
||||
|
||||
self.dirname = '/category/' + category.name_slug
|
||||
|
||||
self.generatePages(dom, posts, src, output, 'category', 'category')
|
||||
self.generatePages(dom, posts, src, output, 'category')
|
||||
|
||||
if not self.somethingWrote:
|
||||
self.addReport('Nothing changed')
|
||||
43
generators/generator.py → dynastie/generators/generator.py
Normal file → Executable file
@@ -1,5 +1,6 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
Copyright 2012-2013 Grégory Soutadé
|
||||
Copyright 2012-2014 Grégory Soutadé
|
||||
|
||||
This file is part of Dynastie.
|
||||
|
||||
@@ -131,12 +132,18 @@ class DynastieGenerator:
|
||||
|
||||
return link_elem
|
||||
|
||||
def createElement(self, dom, name='', content=''):
|
||||
def cloneSubtree(self, div, subtree):
|
||||
for node in subtree.childNodes:
|
||||
div.appendChild(node.cloneNode(True))
|
||||
|
||||
def createElement(self, dom, name='', content='', subtree=None):
|
||||
div = dom.createElement('div')
|
||||
if name != '':
|
||||
div.setAttribute('class', name)
|
||||
if content != '':
|
||||
div.appendChild(dom.createTextNode(content))
|
||||
if not subtree is None:
|
||||
self.cloneSubtree(div, subtree)
|
||||
|
||||
return div
|
||||
|
||||
@@ -198,15 +205,20 @@ class DynastieGenerator:
|
||||
return root
|
||||
filename = base.getAttribute('file')
|
||||
|
||||
if not base.hasAttribute('block'):
|
||||
self.addError('No \'block\' attribute defined')
|
||||
return root
|
||||
target_block = base.getAttribute('block')
|
||||
|
||||
if not os.path.exists(src + '/' + filename):
|
||||
self.addError('Base ' + filename + ' doesn\'t exists')
|
||||
return root
|
||||
|
||||
target_blocks = base.getElementsByTagNameNS(self.URI, 'block')
|
||||
if len(target_blocks) == 0:
|
||||
self.addError('No \'block\' defined in ' + src + '/' + filename)
|
||||
return root
|
||||
|
||||
for target_block in target_blocks:
|
||||
if not target_block.hasAttribute('name'):
|
||||
self.addError('Every block must have a name in ' + src + '/' + filename)
|
||||
return root
|
||||
|
||||
dom2 = root
|
||||
try:
|
||||
dom2 = parse(src + '/' + filename)
|
||||
@@ -218,19 +230,22 @@ class DynastieGenerator:
|
||||
block_found = False
|
||||
for block in blocks:
|
||||
if not block.hasAttribute('name'):
|
||||
self.addError('block has no attribute \'name\' in ' + filename)
|
||||
self.addError('block has no attribute \'name\' in ' + src + '/' + filename)
|
||||
return root
|
||||
blockname = block.getAttribute('name')
|
||||
if blockname != target_block:
|
||||
continue
|
||||
for target_block in target_blocks:
|
||||
|
||||
if blockname != target_block.getAttribute('name'):
|
||||
continue
|
||||
|
||||
for child in root.childNodes:
|
||||
block.parentNode.appendChild(child.cloneNode(True))
|
||||
for child in target_block.childNodes:
|
||||
block.parentNode.appendChild(child.cloneNode(True))
|
||||
block_found = True
|
||||
break
|
||||
block.parentNode.removeChild(block)
|
||||
block_found = True
|
||||
|
||||
if not block_found:
|
||||
self.addError('Block ' + target_block + ' not found in ' + src + '/' + filename)
|
||||
self.addError('Any block found in ' + src + '/' + filename)
|
||||
return root
|
||||
|
||||
root = dom2.firstChild
|
||||
35
generators/index.py → dynastie/generators/index.py
Normal file → Executable file
@@ -1,5 +1,6 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
Copyright 2012-2013 Grégory Soutadé
|
||||
Copyright 2012-2014 Grégory Soutadé
|
||||
|
||||
This file is part of Dynastie.
|
||||
|
||||
@@ -20,6 +21,7 @@ import os
|
||||
import datetime
|
||||
import xml
|
||||
from xml.parsers.expat import *
|
||||
import xml.parsers.expat
|
||||
from xml.dom.minidom import parse, parseString
|
||||
from dynastie.generators.generator import DynastieGenerator, StrictUTF8Writer
|
||||
from django.db import models
|
||||
@@ -61,6 +63,12 @@ class Index(DynastieGenerator):
|
||||
|
||||
value = value.replace('dyn:blog_id', str(self.blog.id))
|
||||
|
||||
if not self.cur_post_obj is None:
|
||||
url = self.cur_post_obj.getPath()
|
||||
full_url = self.cur_post_obj.blog.name + url
|
||||
value = value.replace('dyn:post_url', url)
|
||||
value = value.replace('dyn:post_full_url', full_url)
|
||||
|
||||
div_element.setAttribute(key, value)
|
||||
|
||||
root.replaceChild(div_element, replace_elem)
|
||||
@@ -158,6 +166,7 @@ class Index(DynastieGenerator):
|
||||
return code
|
||||
|
||||
def createPost(self, posts, dom, post_elem, root):
|
||||
from dynastie.models import Post
|
||||
post = self.cur_post_obj
|
||||
|
||||
if post.id in self.hash_posts and not self.first_try:
|
||||
@@ -184,6 +193,9 @@ class Index(DynastieGenerator):
|
||||
f = open(filename, 'rb')
|
||||
post_content = f.read()
|
||||
f.close()
|
||||
if post.content_format == Post.CONTENT_TEXT:
|
||||
from dynastie.generators import markdown2
|
||||
post_content = markdown2.markdown(post_content)
|
||||
self.hash_posts_content[filename] = post_content
|
||||
else:
|
||||
post_content = self.hash_posts_content[filename]
|
||||
@@ -287,7 +299,7 @@ class Index(DynastieGenerator):
|
||||
from dynastie.models import Post
|
||||
tags_elem = self.createElement(dom, 'tags')
|
||||
create_link = (node.getAttribute('link') == '1')
|
||||
if type(posts) == models.query.QuerySet:
|
||||
if type(posts) == models.query.QuerySet or type(posts) == list:
|
||||
if len(posts) > self.cur_post:
|
||||
cur_post = posts[self.cur_post]
|
||||
else:
|
||||
@@ -379,7 +391,7 @@ class Index(DynastieGenerator):
|
||||
|
||||
return code
|
||||
|
||||
def parseTemplate(self, blog, src, output, name, directory=None):
|
||||
def parseTemplate(self, blog, src, output, name, directory=None, parsePostsTag=True):
|
||||
self.blog = blog
|
||||
|
||||
if not os.path.exists(src + '/_%s.html' % name):
|
||||
@@ -395,23 +407,25 @@ class Index(DynastieGenerator):
|
||||
if not directory is None and not os.path.exists(output + '/' + directory):
|
||||
os.mkdir(output + '/' + directory)
|
||||
|
||||
if not parsePostsTag: return dom
|
||||
|
||||
post_nodes = dom.getElementsByTagNameNS(self.URI, "posts")
|
||||
|
||||
if not post_nodes is None:
|
||||
if not post_nodes is None and len(post_nodes) > 0:
|
||||
if post_nodes[0].hasAttribute("limit"):
|
||||
self.posts_per_page = int(post_nodes[0].getAttribute("limit"))
|
||||
else:
|
||||
self.posts_per_page = 5
|
||||
else:
|
||||
self.addError('No tag dyn:posts found')
|
||||
self.addWarning('No tag dyn:posts found')
|
||||
|
||||
return dom
|
||||
|
||||
def generatePages(self, dom, posts, src, output, name, directory=None):
|
||||
def generatePages(self, dom, posts, src, output, name):
|
||||
if len(posts) > self.posts_per_page:
|
||||
self.nb_pages = self.computeNbPages(len(posts), self.posts_per_page)
|
||||
|
||||
if not directory is None and not os.path.exists(output + self.dirname):
|
||||
if not os.path.exists(output + self.dirname):
|
||||
os.mkdir(output + self.dirname)
|
||||
|
||||
filename = self.dirname + '/' + self.filename + '.html'
|
||||
@@ -421,10 +435,9 @@ class Index(DynastieGenerator):
|
||||
while self.cur_page <= self.nb_pages:
|
||||
#print 'Generate ' + filename
|
||||
dom_ = impl.createDocument('', 'xml', None)
|
||||
dom_.replaceChild(dom.firstChild.cloneNode(0), dom_.firstChild)
|
||||
nodes = dom.getElementsByTagName("*")
|
||||
nodes[0] = self.parse(src, self.hooks, posts, dom_, nodes[0])
|
||||
self.writeIfNotTheSame(output + filename, nodes[0])
|
||||
dom_.replaceChild(dom.firstChild.cloneNode(True), dom_.firstChild)
|
||||
nodes = self.parse(src, self.hooks, posts, dom_, dom_.firstChild)
|
||||
self.writeIfNotTheSame(output + filename, nodes)
|
||||
self.cur_page = self.cur_page + 1
|
||||
filename = self.dirname + '/' + self.filename + str(self.cur_page) + '.html'
|
||||
|
||||
85
dynastie/generators/ljdc.py
Executable file
@@ -0,0 +1,85 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
Copyright 2012-2014 Grégory Soutadé
|
||||
|
||||
This file is part of Dynastie.
|
||||
|
||||
Dynastie is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
Dynastie is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Dynastie. If not, see <http://www.gnu.org/licenses/>.
|
||||
"""
|
||||
import os
|
||||
from xml.dom.minidom import parse, parseString
|
||||
import xml.parsers.expat
|
||||
from dynastie.generators.generator import DynastieGenerator
|
||||
from dynastie.generators.index import Index
|
||||
from django.db import models
|
||||
|
||||
class LJDC(Index):
|
||||
|
||||
cur_page = 0
|
||||
nb_pages = 0
|
||||
cur_post = 0
|
||||
posts_per_page = 20
|
||||
filename = 'index'
|
||||
dirname = '/ljdc'
|
||||
cur_category = None
|
||||
|
||||
def createPost(self, posts, dom, post_elem, root):
|
||||
new_elem = self.createElement(dom, 'ljdc')
|
||||
|
||||
address = self.cur_post_obj.getElementsByTagName('address')[0]
|
||||
a = dom.createElement('a')
|
||||
a.setAttribute('href', address.childNodes[0].nodeValue)
|
||||
|
||||
title_value = self.cur_post_obj.getElementsByTagName('title')[0]
|
||||
title = self.createElement(dom, 'title', title_value.childNodes[0].nodeValue)
|
||||
a.appendChild(title)
|
||||
|
||||
img_src = self.cur_post_obj.getElementsByTagName('img')[0]
|
||||
img = dom.createElement('img')
|
||||
img.setAttribute('src', img_src.childNodes[0].nodeValue)
|
||||
|
||||
a.appendChild(img)
|
||||
|
||||
new_elem.appendChild(a)
|
||||
|
||||
self.cur_post_obj = None
|
||||
|
||||
return new_elem
|
||||
|
||||
def generate(self, blog, src, output):
|
||||
from dynastie.models import Post, Blog, Category
|
||||
|
||||
name = '_ljdc.xml'
|
||||
if not os.path.exists(src + '/%s' % name):
|
||||
self.addWarning('No %s found, exiting' % name)
|
||||
return None
|
||||
|
||||
try:
|
||||
srcdom = parse(src + '/%s' % name)
|
||||
except xml.dom.DOMException as e:
|
||||
self.addError('Error parsing %s : ' + e)
|
||||
return None
|
||||
|
||||
posts = srcdom.getElementsByTagName("entry")
|
||||
|
||||
dom = self.parseTemplate(blog, src, output, 'ljdc', 'ljdc')
|
||||
if dom is None: return self.report
|
||||
|
||||
self.generatePages(dom, posts, src, output, 'ljdc')
|
||||
|
||||
if not self.somethingWrote:
|
||||
self.addReport('Nothing changed')
|
||||
|
||||
return self.report
|
||||
|
||||
2326
dynastie/generators/markdown2.py
Executable file
38
generators/post.py → dynastie/generators/post.py
Normal file → Executable file
@@ -1,5 +1,6 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
Copyright 2012-2013 Grégory Soutadé
|
||||
Copyright 2012-2014 Grégory Soutadé
|
||||
|
||||
This file is part of Dynastie.
|
||||
|
||||
@@ -50,6 +51,10 @@ class Post(Index):
|
||||
value = value.replace('dyn:comment_id', str(self.cur_comment.id))
|
||||
|
||||
value = value.replace('dyn:blog_id', str(self.blog.id))
|
||||
url = post.getPath()
|
||||
full_url = post.blog.name + url
|
||||
value = value.replace('dyn:post_url', url)
|
||||
value = value.replace('dyn:post_full_url', full_url)
|
||||
|
||||
div_element.setAttribute(key, value)
|
||||
|
||||
@@ -120,11 +125,14 @@ class Post(Index):
|
||||
|
||||
new_elem = None
|
||||
if name == 'keywords':
|
||||
new_elem = self.createMeta(dom, name, post.keywords)
|
||||
value = post.keywords.replace('"', '“')
|
||||
new_elem = self.createMeta(dom, name, value)
|
||||
elif name == 'title':
|
||||
new_elem = self.createMeta(dom, name, post.title)
|
||||
value = post.title.replace('"', '“')
|
||||
new_elem = self.createMeta(dom, name, value)
|
||||
elif name == 'description':
|
||||
new_elem = self.createMeta(dom, name, post.description)
|
||||
value = post.description.replace('"', '“')
|
||||
new_elem = self.createMeta(dom, name, value)
|
||||
elif name == 'author':
|
||||
try:
|
||||
new_elem = self.createMeta(dom, name, post.author.first_name + ' ' + post.author.last_name)
|
||||
@@ -171,33 +179,23 @@ class Post(Index):
|
||||
del self.hooks['recents']
|
||||
del self.hooks['posts']
|
||||
|
||||
self.blog = blog
|
||||
name = 'post'
|
||||
|
||||
if not os.path.exists(src + '/_%s.html' % name):
|
||||
self.addError('No _%s.html found, exiting' % name)
|
||||
return self.report
|
||||
|
||||
try:
|
||||
dom = parse(src + '/_%s.html' % name)
|
||||
except xml.dom.DOMException as e:
|
||||
self.addError('Error parsing _%s.html : ' + e)
|
||||
return self.report
|
||||
dom = self.parseTemplate(blog, src, output, 'post', None, False)
|
||||
if dom is None: return self.report
|
||||
|
||||
impl = xml.dom.getDOMImplementation()
|
||||
for post in posts:
|
||||
if not post.published: continue
|
||||
#print 'Generate ' + filename
|
||||
dom_ = impl.createDocument('', 'xml', None)
|
||||
dom_.replaceChild(dom.firstChild.cloneNode(0), dom_.firstChild)
|
||||
nodes = dom.getElementsByTagName("*")
|
||||
nodes[0] = self.parse(src, self.hooks, post, dom_, nodes[0])
|
||||
dom_.replaceChild(dom.firstChild.cloneNode(True), dom_.firstChild)
|
||||
nodes = self.parse(src, self.hooks, post, dom_, dom_.firstChild)
|
||||
|
||||
filename = output + '/post/'
|
||||
filename = filename + post.creation_date.strftime("%Y") + '/' + post.creation_date.strftime("%m") + '/'
|
||||
if not os.path.exists(filename):
|
||||
os.makedirs(filename)
|
||||
filename = filename + post.title_slug + '.html'
|
||||
self.writeIfNotTheSame(filename, nodes[0])
|
||||
self.writeIfNotTheSame(filename, nodes)
|
||||
|
||||
if not self.somethingWrote:
|
||||
self.addReport('Nothing changed')
|
||||
8
generators/rss.py → dynastie/generators/rss.py
Normal file → Executable file
@@ -1,5 +1,6 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
Copyright 2012-2013 Grégory Soutadé
|
||||
Copyright 2012-2014 Grégory Soutadé
|
||||
|
||||
This file is part of Dynastie.
|
||||
|
||||
@@ -22,6 +23,8 @@ import xml
|
||||
from dynastie.generators.generator import DynastieGenerator
|
||||
from xml.dom.minidom import getDOMImplementation
|
||||
from django.db import models
|
||||
from dynastie.generators import markdown2
|
||||
|
||||
|
||||
class RSS(DynastieGenerator):
|
||||
|
||||
@@ -77,6 +80,9 @@ class RSS(DynastieGenerator):
|
||||
post_content = f.read()
|
||||
f.close()
|
||||
|
||||
if post.content_format == Post.CONTENT_TEXT:
|
||||
post_content = markdown2.markdown(post_content)
|
||||
|
||||
self.appendElement(dom, item, 'description', '<![CDATA[' + post_content + ']]>')
|
||||
|
||||
try:
|
||||
3
generators/search.py → dynastie/generators/search.py
Normal file → Executable file
@@ -1,5 +1,6 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
Copyright 2012-2013 Grégory Soutadé
|
||||
Copyright 2012-2014 Grégory Soutadé
|
||||
|
||||
This file is part of Dynastie.
|
||||
|
||||
5
generators/tag.py → dynastie/generators/tag.py
Normal file → Executable file
@@ -1,5 +1,6 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
Copyright 2012-2013 Grégory Soutadé
|
||||
Copyright 2012-2014 Grégory Soutadé
|
||||
|
||||
This file is part of Dynastie.
|
||||
|
||||
@@ -59,7 +60,7 @@ class Tag(Index):
|
||||
|
||||
self.dirname = '/tag/' + tag.name_slug
|
||||
|
||||
self.generatePages(dom, posts, src, output, 'tag', 'tag')
|
||||
self.generatePages(dom, posts, src, output, 'tag')
|
||||
|
||||
if not self.somethingWrote:
|
||||
self.addReport('Nothing changed')
|
||||
35
models.py → dynastie/models.py
Normal file → Executable file
@@ -1,5 +1,6 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
Copyright 2012-2013 Grégory Soutadé
|
||||
Copyright 2012-2014 Grégory Soutadé
|
||||
|
||||
This file is part of Dynastie.
|
||||
|
||||
@@ -26,7 +27,8 @@ from re import sub
|
||||
from datetime import datetime
|
||||
from django.db import models
|
||||
from django.contrib.auth.models import User
|
||||
from django.db.models.signals import post_init, pre_delete, post_delete, post_save
|
||||
from django.db.models.signals import pre_init, post_init, pre_delete, post_delete
|
||||
from django.db.models.signals import pre_save, post_save
|
||||
from django.dispatch import receiver
|
||||
from dynastie.generators import *
|
||||
|
||||
@@ -58,8 +60,8 @@ class Blog(models.Model):
|
||||
|
||||
def create(self):
|
||||
self.create_paths()
|
||||
if not os.path.exists('sites'):
|
||||
os.mkdir('sites')
|
||||
if not os.path.exists(os.environ['DYNASTIE_ROOT'] + 'sites'):
|
||||
os.mkdir(os.environ['DYNASTIE_ROOT'] + 'sites')
|
||||
|
||||
if not os.path.exists(self.src_path):
|
||||
os.mkdir(self.src_path)
|
||||
@@ -92,6 +94,7 @@ class Blog(models.Model):
|
||||
self.engines.append(globals()['archive'])
|
||||
self.engines.append(globals()['atom'])
|
||||
self.engines.append(globals()['rss'])
|
||||
self.engines.append(globals()['all_posts'])
|
||||
|
||||
def copytree(self, src, dst):
|
||||
names = os.listdir(src)
|
||||
@@ -232,6 +235,12 @@ class Post(models.Model):
|
||||
keywords = models.TextField(blank=True)
|
||||
tags = models.ManyToManyField(Tag, blank=True, null=True)
|
||||
blog = models.ForeignKey(Blog)
|
||||
CONTENT_HTML = 0
|
||||
CONTENT_TEXT = 1
|
||||
CONTENT_FORMAT = (
|
||||
(CONTENT_HTML, 'HTML'),
|
||||
(CONTENT_TEXT, 'Text'))
|
||||
content_format = models.IntegerField(choices=CONTENT_FORMAT, default=CONTENT_HTML, blank=False, null=False)
|
||||
|
||||
def getPath(self):
|
||||
filename = '/post/'
|
||||
@@ -352,6 +361,13 @@ class Post(models.Model):
|
||||
if os.path.exists(filename) and len(os.listdir(filename)) == 0:
|
||||
os.rmdir(filename)
|
||||
|
||||
|
||||
def get_editor(self):
|
||||
if self.content_format == Post.CONTENT_HTML:
|
||||
return 'html'
|
||||
else:
|
||||
return 'text'
|
||||
|
||||
class Comment(models.Model):
|
||||
post = models.ForeignKey(Post)
|
||||
parent = models.ForeignKey('self', null=True, blank=True)
|
||||
@@ -361,6 +377,12 @@ class Comment(models.Model):
|
||||
the_comment = models.TextField(max_length=255)
|
||||
ip = models.GenericIPAddressField()
|
||||
|
||||
def _update_line_returns(self):
|
||||
self.the_comment = self.the_comment.replace('\n', '<br />')
|
||||
|
||||
def _remove_br(self):
|
||||
self.the_comment = self.the_comment.replace('<br />', '\n')
|
||||
|
||||
@receiver(post_init, sender=Blog)
|
||||
def init_blog_signal(sender, **kwargs):
|
||||
kwargs['instance'].create_paths()
|
||||
@@ -385,3 +407,8 @@ def delete_post_signal(sender, **kwargs):
|
||||
def pre_delete_post_signal(sender, **kwargs):
|
||||
post = kwargs['instance']
|
||||
comments = Comment.objects.filter(post=post.id).delete()
|
||||
|
||||
# Replace line returns by <br /> for generation
|
||||
@receiver(pre_save, sender=Comment)
|
||||
def pre_save_comment_signal(sender, **kwargs):
|
||||
kwargs['instance']._update_line_returns()
|
||||
2
search.py → dynastie/search.py
Normal file → Executable file
@@ -1,6 +1,6 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
Copyright 2012-2013 Grégory Soutadé
|
||||
Copyright 2012-2014 Grégory Soutadé
|
||||
|
||||
This file is part of Dynastie.
|
||||
|
||||
5
settings.py → dynastie/settings.py
Normal file → Executable file
@@ -1,5 +1,6 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
Copyright 2012-2013 Grégory Soutadé
|
||||
Copyright 2012-2014 Grégory Soutadé
|
||||
|
||||
This file is part of Dynastie.
|
||||
|
||||
@@ -34,6 +35,8 @@ ADMINS = (
|
||||
('Gregory Soutade', 'gregory@soutade.fr'),
|
||||
)
|
||||
|
||||
ALLOWED_HOSTS = ('*')
|
||||
|
||||
MANAGERS = ADMINS
|
||||
|
||||
DATABASES = {
|
||||
13
dynastie/sites/blog.soutade.fr/_all_posts.html
Normal file
@@ -0,0 +1,13 @@
|
||||
<dyn:base file="_base.html" xmlns:dyn="http://indefero.soutade.fr/p/dynastie">
|
||||
<dyn:block name="content">
|
||||
<dyn:all_posts>
|
||||
<dyn:year>
|
||||
<dyn:month>
|
||||
<dyn:posts>
|
||||
<dyn:title link="1"/>
|
||||
</dyn:posts>
|
||||
</dyn:month>
|
||||
</dyn:year>
|
||||
</dyn:all_posts>
|
||||
</dyn:block>
|
||||
</dyn:base>
|
||||
23
dynastie/sites/blog.soutade.fr/_archive.html
Executable file
@@ -0,0 +1,23 @@
|
||||
<dyn:base file="_base.html" xmlns:dyn="http://indefero.soutade.fr/p/dynastie">
|
||||
<dyn:block name="content">
|
||||
<div id="archive_year">Archives <dyn:archive year="1"/></div>
|
||||
<dyn:posts limit="5">
|
||||
<article>
|
||||
<header>
|
||||
<div class="post_header">
|
||||
<dyn:title link="1"/>
|
||||
<div class="post_sub_header">
|
||||
<dyn:date format="%A, %d %B %Y"/> | <div class="author_icon"> Écrit par <dyn:author/> </div>
|
||||
</div>
|
||||
<dyn:tags link="1"/>
|
||||
</div>
|
||||
</header>
|
||||
<dyn:post_content/>
|
||||
<footer class="post_footer">
|
||||
<dyn:replace div_name="a" href="http://dyn:post_full_url">permalink</dyn:replace> <dyn:replace div_name="a" href="dyn:post_url#comments">commentaire(s)</dyn:replace>
|
||||
</footer>
|
||||
</article>
|
||||
</dyn:posts>
|
||||
<dyn:navigation/>
|
||||
</dyn:block>
|
||||
</dyn:base>
|
||||
99
dynastie/sites/blog.soutade.fr/_base.html
Executable file
@@ -0,0 +1,99 @@
|
||||
<html xmlns:dyn="http://indefero.soutade.fr/p/dynastie" xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta content="text/html; charset=UTF-8" http-equiv="content-type"/>
|
||||
<meta content="index, follow" name="robots"/>
|
||||
<meta content="blog, gregory, soutade, grégory, soutadé, Grégory, Soutadé" name="keywords"/>
|
||||
<meta content="Blog de Grégory Soutadé" name="description"/>
|
||||
<meta content="Dynastie" name="generator"/>
|
||||
<title>Blog de Grégory Soutadé</title>
|
||||
<link rel="icon" type="image/png" href="/images/favicon.png" />
|
||||
<link href="/rss.xml" rel="alternate" type="application/rss+xml" title="RSS 2.0" />
|
||||
<link href="/atom.xml" rel="alternate" type="application/atom+xml" title="Atom 1.0" />
|
||||
<link href="/css/blog.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="/js/blog.js"> </script>
|
||||
<dyn:block name="head"/>
|
||||
</head>
|
||||
<body>
|
||||
<img id="logo" src="/images/tux_final.png"/>
|
||||
<div class="body">
|
||||
<div class="table-row">
|
||||
<header>
|
||||
<div class="table-cell" id="header">
|
||||
<h2 id="title"><a href="/">Blog de Grégory Soutadé</a></h2>
|
||||
</div>
|
||||
</header>
|
||||
</div>
|
||||
<div class="table-row">
|
||||
<div class="content">
|
||||
<dyn:block name="content"/>
|
||||
</div>
|
||||
<div class="menu">
|
||||
<div class="menu_content">
|
||||
<div class="menu_content_header">Recherche</div>
|
||||
<div id="menu_main">
|
||||
<dyn:replace div_name="form" id="search_form" method="POST" action="/search/dyn:blog_id">
|
||||
<input type="text" name="text" id="search_text" onkeypress="handleKeyPress(event,this.form)"/>
|
||||
</dyn:replace>
|
||||
</div>
|
||||
</div>
|
||||
<nav>
|
||||
<div class="menu_content">
|
||||
<div class="menu_content_header">Menu principal</div>
|
||||
<div id="menu_main">
|
||||
<div class="menu_content_content"><a href="/">Première page</a></div>
|
||||
<div class="menu_content_content"><a href="/about.html">À propos</a></div>
|
||||
<div class="menu_content_content"><a href="/all_posts.html">Tous les articles</a></div>
|
||||
<div class="menu_content_content"><a href="http://indefero.soutade.fr">Projets personnels</a></div>
|
||||
<div class="menu_content_content"><a href="/ljdc">Les joies du code</a></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="menu_content">
|
||||
<div class="menu_content_header">Catégories</div>
|
||||
<div class="menu_content_content">
|
||||
<ul>
|
||||
<li><a href="/category/cinema">Cinéma</a></li>
|
||||
<li><a href="/category/articles">Articles</a></li>
|
||||
<li><a href="/category/musique">Musique</a></li>
|
||||
<li><a href="/category/configurations-pc">Configurations PC</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="menu_content">
|
||||
<div class="menu_content_header">Tags</div>
|
||||
<div class="menu_content_content">
|
||||
<ul>
|
||||
<li><a href="/tag/programmation">Programmation</a></li>
|
||||
<li><a href="/tag/python">Python</a></li>
|
||||
<li><a href="/tag/kisscount">KissCount</a></li>
|
||||
<li><a href="/tag/jm2l">JM2L</a></li>
|
||||
<li><a href="/tag/course-a-pied">Course à pied</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="menu_content">
|
||||
<div class="menu_content_header">Archives</div>
|
||||
<div class="menu_content_content">
|
||||
<ul>
|
||||
<li><a href="/archive/2013">2013</a></li>
|
||||
<li><a href="/archive/2012">2012</a></li>
|
||||
<li><a href="/archive/2011">2011</a></li>
|
||||
<li><a href="/archive/2010">2010</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="feed">
|
||||
<a href="/rss.xml"><img src="/images/rss.png" alt="RSS feeds"></img> RSS</a><a href="/atom.xml"><img src="/images/atom.png" alt="Atom feeds"></img> Atom</a>
|
||||
</div>
|
||||
</nav>
|
||||
<p style="text-align:center">Généré avec <a href="http://indefero.soutade.fr/p/dynastie">Dynastie</a></p>
|
||||
</div>
|
||||
</div>
|
||||
<footer>
|
||||
<div class="footer">
|
||||
Copyright © 2010-2014 Grégory Soutadé.<br/>
|
||||
Tous droits réservés.
|
||||
</div>
|
||||
</footer>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
100
dynastie/sites/blog.soutade.fr/_base_post.html
Normal file
@@ -0,0 +1,100 @@
|
||||
<html xmlns:dyn="http://indefero.soutade.fr/p/dynastie" xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta content="text/html; charset=UTF-8" http-equiv="content-type"/>
|
||||
<meta content="index, follow" name="robots"/>
|
||||
<dyn:meta name="description"/>
|
||||
<dyn:meta name="keywords"/>
|
||||
<dyn:meta name="title"/>
|
||||
<dyn:meta name="author"/>
|
||||
<meta content="Dynastie" name="generator"/>
|
||||
<title>Blog de Grégory Soutadé</title>
|
||||
<link rel="icon" type="image/png" href="/images/favicon.png" />
|
||||
<link href="/rss.xml" rel="alternate" type="application/rss+xml" title="RSS 2.0" />
|
||||
<link href="/atom.xml" rel="alternate" type="application/atom+xml" title="Atom 1.0" />
|
||||
<link href="/css/blog.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="/js/blog.js"> </script>
|
||||
</head>
|
||||
<body onLoad="javascript:init();">
|
||||
<img id="logo" src="/images/tux_final.png"/>
|
||||
<div class="body">
|
||||
<div class="table-row">
|
||||
<header>
|
||||
<div class="table-cell" id="header">
|
||||
<h2 id="title"><a href="/">Blog de Grégory Soutadé</a></h2>
|
||||
</div>
|
||||
</header>
|
||||
</div>
|
||||
<div class="table-row">
|
||||
<div class="content">
|
||||
<dyn:block name="content"/>
|
||||
</div>
|
||||
<div class="menu">
|
||||
<div class="menu_content">
|
||||
<div class="menu_content_header">Recherche</div>
|
||||
<div id="menu_main">
|
||||
<dyn:replace div_name="form" id="search_form" method="POST" action="/search/dyn:blog_id">
|
||||
<input type="text" name="text" id="search_text" onkeypress="handleKeyPress(event,this.form)"/>
|
||||
</dyn:replace>
|
||||
</div>
|
||||
</div>
|
||||
<nav>
|
||||
<div class="menu_content">
|
||||
<div class="menu_content_header">Menu principal</div>
|
||||
<div id="menu_main">
|
||||
<div class="menu_content_content"><a href="/">Première page</a></div>
|
||||
<div class="menu_content_content"><a href="/about.html">À propos</a></div>
|
||||
<div class="menu_content_content"><a href="/all_posts.html">Tous les articles</a></div>
|
||||
<div class="menu_content_content"><a href="http://indefero.soutade.fr">Projets personnels</a></div>
|
||||
<div class="menu_content_content"><a href="/ljdc">Les joies du code</a></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="menu_content">
|
||||
<div class="menu_content_header">Catégories</div>
|
||||
<div class="menu_content_content">
|
||||
<ul>
|
||||
<li><a href="/category/cinema">Cinéma</a></li>
|
||||
<li><a href="/category/articles">Articles</a></li>
|
||||
<li><a href="/category/musique">Musique</a></li>
|
||||
<li><a href="/category/configurations-pc">Configurations PC</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="menu_content">
|
||||
<div class="menu_content_header">Tags</div>
|
||||
<div class="menu_content_content">
|
||||
<ul>
|
||||
<li><a href="/tag/programmation">Programmation</a></li>
|
||||
<li><a href="/tag/python">Python</a></li>
|
||||
<li><a href="/tag/kisscount">KissCount</a></li>
|
||||
<li><a href="/tag/jm2l">JM2L</a></li>
|
||||
<li><a href="/tag/course-a-pied">Course à pied</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="menu_content">
|
||||
<div class="menu_content_header">Archives</div>
|
||||
<div class="menu_content_content">
|
||||
<ul>
|
||||
<li><a href="/archive/2013">2013</a></li>
|
||||
<li><a href="/archive/2012">2012</a></li>
|
||||
<li><a href="/archive/2011">2011</a></li>
|
||||
<li><a href="/archive/2010">2010</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="feed">
|
||||
<a href="/rss.xml"><img src="/images/rss.png" alt="RSS feeds"></img> RSS</a><a href="/atom.xml"><img src="/images/atom.png" alt="Atom feeds"></img> Atom</a>
|
||||
</div>
|
||||
</nav>
|
||||
<p style="text-align:center">Généré avec <a href="http://indefero.soutade.fr/p/dynastie">Dynastie</a></p>
|
||||
</div>
|
||||
</div>
|
||||
<footer>
|
||||
<div class="footer">
|
||||
Copyright © 2010-2014 Grégory Soutadé.<br/>
|
||||
Tous droits réservés.
|
||||
</div>
|
||||
</footer>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
23
dynastie/sites/blog.soutade.fr/_category.html
Executable file
@@ -0,0 +1,23 @@
|
||||
<dyn:base file="_base.html" xmlns:dyn="http://indefero.soutade.fr/p/dynastie">
|
||||
<dyn:block name="content">
|
||||
<div id="category_name"><dyn:category name="1"/></div>
|
||||
<dyn:posts limit="5">
|
||||
<article>
|
||||
<header>
|
||||
<div class="post_header">
|
||||
<dyn:title link="1"/>
|
||||
<div class="post_sub_header">
|
||||
<dyn:date format="%A, %d %B %Y"/> | <div class="author_icon"> Écrit par <dyn:author/> </div>
|
||||
</div>
|
||||
<dyn:tags link="1"/>
|
||||
</div>
|
||||
</header>
|
||||
<dyn:post_content/>
|
||||
<footer class="post_footer">
|
||||
<dyn:replace div_name="a" href="http://dyn:post_full_url">permalink</dyn:replace> <dyn:replace div_name="a" href="dyn:post_url#comments">commentaire(s)</dyn:replace>
|
||||
</footer>
|
||||
</article>
|
||||
</dyn:posts>
|
||||
<dyn:navigation/>
|
||||
</dyn:block>
|
||||
</dyn:base>
|
||||
9
dynastie/sites/blog.soutade.fr/_generators
Executable file
@@ -0,0 +1,9 @@
|
||||
post
|
||||
index
|
||||
category
|
||||
tag
|
||||
archive
|
||||
atom
|
||||
rss
|
||||
all_posts
|
||||
ljdc
|
||||
27
dynastie/sites/blog.soutade.fr/_index.html
Executable file
@@ -0,0 +1,27 @@
|
||||
<dyn:base file="_base.html" xmlns:dyn="http://indefero.soutade.fr/p/dynastie">
|
||||
<dyn:block name="content">
|
||||
<dyn:posts limit="5">
|
||||
<article>
|
||||
<header>
|
||||
<div class="post_header">
|
||||
<dyn:title link="1"/>
|
||||
<div class="post_sub_header">
|
||||
<dyn:date format="%A, %d %B %Y"/> | <div class="author_icon"> Écrit par <dyn:author/> </div>
|
||||
</div>
|
||||
<dyn:tags link="1"/>
|
||||
</div>
|
||||
</header>
|
||||
<dyn:post_content/>
|
||||
<footer class="post_footer">
|
||||
<dyn:replace div_name="a" href="http://dyn:post_full_url">permalink</dyn:replace> <dyn:replace div_name="a" href="dyn:post_url#comments">commentaire(s)</dyn:replace>
|
||||
</footer>
|
||||
</article>
|
||||
</dyn:posts>
|
||||
<nav>
|
||||
<dyn:recents>
|
||||
<span id="recents_title">More posts...</span>
|
||||
</dyn:recents>
|
||||
<dyn:navigation/>
|
||||
</nav>
|
||||
</dyn:block>
|
||||
</dyn:base>
|
||||
13
dynastie/sites/blog.soutade.fr/_ljdc.html
Normal file
@@ -0,0 +1,13 @@
|
||||
<dyn:base file="_base.html" xmlns:dyn="http://indefero.soutade.fr/p/dynastie">
|
||||
<dyn:block name="head">
|
||||
<link href="http://fonts.googleapis.com/css?family=Source+Code+Pro" rel="stylesheet" type="text/css"/>
|
||||
<link href="/css/ljdc.css" rel="stylesheet" type="text/css"/>
|
||||
</dyn:block>
|
||||
<dyn:block name="content">
|
||||
<h1>Best of les joies du code</h1>
|
||||
<dyn:posts limit="5"/>
|
||||
<nav>
|
||||
<dyn:navigation/>
|
||||
</nav>
|
||||
</dyn:block>
|
||||
</dyn:base>
|
||||
333
dynastie/sites/blog.soutade.fr/_ljdc.xml
Normal file
@@ -0,0 +1,333 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<ljdc>
|
||||
<entry>
|
||||
<id>83611569882</id>
|
||||
<address>http://thecodinglove.com/post/83611569882/when-its-finally-time-to-leave-work</address>
|
||||
<title>when it's finally time to leave work</title>
|
||||
<img>http://i.minus.com/i6r0CMzKoKhcr.gif</img>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>83602223279</id>
|
||||
<address>http://thecodinglove.com/post/83602223279/when-a-backend-developer-wants-to-edit-my-sass-files</address>
|
||||
<title>when a backend developer wants to edit my sass files</title>
|
||||
<img>http://i.imgur.com/kKqDrYd.gif</img>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>83401607427</id>
|
||||
<address>http://thecodinglove.com/post/83401607427/when-the-intern-tries-to-use-my-library-for-the-first</address>
|
||||
<title>when the intern tries to use my library for the first time</title>
|
||||
<img>http://i.imgur.com/eGUcWVN.gif</img>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>82186019033</id>
|
||||
<address>http://thecodinglove.com/post/82186019033/when-i-finally-release-an-annoying-project</address>
|
||||
<title>when I finally release an annoying project</title>
|
||||
<img>http://i.imgur.com/GT8qqQz.gif</img>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>81678749540</id>
|
||||
<address>http://thecodinglove.com/post/81678749540/when-my-boss-is-looking-for-a-bug-fixer-on-friday-night</address>
|
||||
<title>when my boss is looking for a bug fixer on friday night</title>
|
||||
<img>http://i.imgur.com/CVDVCwz.gif</img>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>59103801763</id>
|
||||
<address>http://thecodinglove.com/post/59103801763/when-the-boss-calls-me-to-tell-me-that-he-even-cant</address>
|
||||
<title>when the boss calls me to tell me that he even can't launch the application</title>
|
||||
<img>http://i.imgur.com/baZaV.gif</img>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>64879310625</id>
|
||||
<address>http://thecodinglove.com/post/64879310625/when-i-see-my-clients-car-parked-outside-when-im</address>
|
||||
<title>when I see my client's car parked outside when I'm leaving the office</title>
|
||||
<img>http://i.imgur.com/eoqaGSx.gif</img>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>68181705123</id>
|
||||
<address>http://thecodinglove.com/post/68181705123/when-the-network-is-very-slow</address>
|
||||
<title>when the network is very slow</title>
|
||||
<img>http://i.minus.com/ibz5fxcZqtgSHt.gif</img>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>69077017325</id>
|
||||
<address>http://thecodinglove.com/post/69077017325/when-i-think-i-will-finish-a-project-without-any-issues</address>
|
||||
<title>when I think I will finish a project without any issues</title>
|
||||
<img>http://ljdchost.com/assets/1dm9fKp.png</img>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>80977664309</id>
|
||||
<address>http://thecodinglove.com/post/80977664309/when-i-criticize-my-boss-decision-who-is-right-around</address>
|
||||
<title>when I criticize my boss' decision who is right around the corner</title>
|
||||
<img>http://i.imgur.com/d86g7Ps.gif</img>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>80285273617</id>
|
||||
<address>http://thecodinglove.com/post/80285273617/when-i-dont-have-time-for-writing-tests</address>
|
||||
<title>when I don't have time for writing tests</title>
|
||||
<img>http://i.imgur.com/WKr8PT6.gif</img>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>79359073019</id>
|
||||
<address>http://thecodinglove.com/post/79359073019/when-a-colleague-does-not-agree-with-our-coding-rules</address>
|
||||
<title>when a colleague does not agree with our coding rules</title>
|
||||
<img>http://i.imgur.com/JaDshKN.gif</img>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>79149589869</id>
|
||||
<address>http://thecodinglove.com/post/79149589869/hey-look-the-bug-is-fixed</address>
|
||||
<title>"hey look, the bug is fixed"</title>
|
||||
<img>http://i.imgur.com/oH4BThU.gif</img>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>76957965046</id>
|
||||
<address>http://thecodinglove.com/post/76957965046/when-i-try-to-sneak-out-of-the-office-early-thinking</address>
|
||||
<title>when I try to sneak out of the office early, thinking that the boss is not around</title>
|
||||
<img>http://i.imgur.com/6Ewq7Ha.gif</img>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>79874079928</id>
|
||||
<address>http://lesjoiesducode.fr/post/79874079928/quand-ma-requete-sql-me-retourne-exactement-ce-que-je</address>
|
||||
<title>quand ma requête SQL me retourne exactement ce que je veux</title>
|
||||
<img>http://ljdchost.com/8cimjld.gif</img>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>79348684503</id>
|
||||
<address>http://lesjoiesducode.fr/post/79348684503/quand-je-commence-a-developper-sous-linux-apres</address>
|
||||
<title>quand je commence à développer sous Linux après plusieurs années passées sous Windows</title>
|
||||
<img>http://ljdchost.com/Ma1feZq.gif</img>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>79169643105</id>
|
||||
<address>http://lesjoiesducode.fr/post/79169643105/quand-un-proche-me-demande-encore-une-fois-de-reparer</address>
|
||||
<title>quand un proche me demande encore une fois de "réparer son Facebook"</title>
|
||||
<img>http://ljdchost.com/MxFZvNI.gif</img>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>78753329421</id>
|
||||
<address>http://lesjoiesducode.fr/post/78753329421/la-dev-team-quand-la-mise-en-prod-fonctionne-du-premier</address>
|
||||
<title>la dev team quand la mise en prod fonctionne du premier coup</title>
|
||||
<img>http://ljdchost.com/iQybVzt.gif</img>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>76430309812</id>
|
||||
<address>http://lesjoiesducode.fr/post/76430309812/quand-git-blame-balance-qui-a-ecrit-le-code-que-la</address>
|
||||
<title>quand "git blame" balance qui a écrit le code que la team a passé 2 jours à debugger</title>
|
||||
<img>http://ljdchost.com/ibz52ZxNgAM2oA.gif</img>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>76414125378</id>
|
||||
<address>http://lesjoiesducode.fr/post/76414125378/la-difference-entre-lintitule-du-stage-et-le-stage-en</address>
|
||||
<title>la différence entre l'intitulé du stage et le stage en question</title>
|
||||
<img>http://ljdchost.com/ScSsJaG.gif</img>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>74262291448</id>
|
||||
<address>http://lesjoiesducode.fr/post/74262291448/quand-je-prends-en-charge-le-support-utilisateur</address>
|
||||
<title>quand je prends en charge le support utilisateur</title>
|
||||
<img>http://ljdchost.com/iREPuffTNOthP.gif</img>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>74168932838</id>
|
||||
<address>http://lesjoiesducode.fr/post/74168932838/quand-je-developpe-une-appli-facebook-et-que-le-boss</address>
|
||||
<title>quand je développe une appli Facebook et que le boss jette un oeil à mon écran</title>
|
||||
<img>http://ljdchost.com/zjik30m.gif</img>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>73935666374</id>
|
||||
<address>http://lesjoiesducode.fr/post/73935666374/quand-le-sysadmin-a-mal-configure-le-proxy</address>
|
||||
<title>quand le sysadmin a mal configuré le proxy</title>
|
||||
<img>http://ljdchost.com/o5LbzNy.gif</img>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>73394310782</id>
|
||||
<address>http://lesjoiesducode.fr/post/73394310782/quand-mon-pc-rame-sans-raison-et-que-jai-des-choses</address>
|
||||
<title>quand mon PC rame sans raison et que j'ai des choses urgentes à faire</title>
|
||||
<img>http://ljdchost.com/i2rMts44clHLw.gif</img>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>72660713690</id>
|
||||
<address>http://lesjoiesducode.fr/post/72660713690/quand-je-cache-des-bugs-au-chef</address>
|
||||
<title>quand je cache des bugs au chef</title>
|
||||
<img>http://ljdchost.com/dBATah1.gif</img>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>69485497531</id>
|
||||
<address>http://lesjoiesducode.fr/post/69485497531/quand-les-collegues-se-ramassent-sur-un-projet-sur</address>
|
||||
<title>quand les collègues se ramassent sur un projet sur lequel je ne travaille pas</title>
|
||||
<img>http://i.imgur.com/4YwDi.png</img>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>68966745060</id>
|
||||
<address>http://lesjoiesducode.fr/post/68966745060/quand-je-teste-une-requete-sql-monstrueuse-et-que-je</address>
|
||||
<title>quand je teste une requête SQL monstrueuse et que je m'aperçois que j'ai oublié une parenthèse</title>
|
||||
<img>http://ljdchost.com/7ZGdjjk.gif</img>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>68348831778</id>
|
||||
<address>http://lesjoiesducode.fr/post/68348831778/quand-je-publie-une-appli-jeu-concours-qui-a-ete-teasee</address>
|
||||
<title>quand je publie une appli jeu-concours qui a été teasée à mort</title>
|
||||
<img>http://ljdchost.com/ibgETFO7jGDq2n.gif</img>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>67562114278</id>
|
||||
<address>http://lesjoiesducode.fr/post/67562114278/quand-la-nouvelle-developpeuse-casse-mon-code</address>
|
||||
<title>quand la nouvelle développeuse casse mon code</title>
|
||||
<img>http://ljdchost.com/gtXEh5k.gif</img>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>66175879670</id>
|
||||
<address>http://lesjoiesducode.fr/post/66175879670/quand-un-collegue-fait-un-force-commit-de-son-code</address>
|
||||
<title>quand un collègue fait un force commit de son code "testé"</title>
|
||||
<img>http://ljdchost.com/17ZvQW7.gif</img>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>65985797316</id>
|
||||
<address>http://lesjoiesducode.fr/post/65985797316/quand-je-tente-de-faire-adopter-de-nouvelles</address>
|
||||
<title>quand je tente de faire adopter de nouvelles technologies à mon boss</title>
|
||||
<img>http://ljdchost.com/2yLYnwm.gif</img>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>65325325887</id>
|
||||
<address>http://lesjoiesducode.fr/post/65325325887/premier-jour-de-production-de-lappli</address>
|
||||
<title>premier jour de production de l'appli</title>
|
||||
<img>http://ljdchost.com/h72rDqA.gif</img>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>65028123102</id>
|
||||
<address>http://lesjoiesducode.fr/post/65028123102/quand-je-lance-un-script-sensible-en-prod</address>
|
||||
<title>quand je lance un script sensible en prod</title>
|
||||
<img>http://ljdchost.com/SQ23RQv.gif</img>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>62889465788</id>
|
||||
<address>http://lesjoiesducode.fr/post/62889465788/quand-mes-15-lignes-de-code-font-buguer-les-5000-codees</address>
|
||||
<title>quand mes 15 lignes de code font buguer les 5000 codées par mon collègue</title>
|
||||
<img>http://ljdchost.com/i1iPnQGiNMMcS.gif</img>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>62226484904</id>
|
||||
<address>http://lesjoiesducode.fr/post/62226484904/quand-jevite-de-justesse-une-integration-sous-ie</address>
|
||||
<title>quand j'évite de justesse une intégration sous IE</title>
|
||||
<img>http://ljdchost.com/ibrcM4QCUzuO4F.gif</img>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>61755928134</id>
|
||||
<address>http://lesjoiesducode.fr/post/61755928134/a-chaque-fois-que-je-dois-corriger-un-bug</address>
|
||||
<title>à chaque fois que je dois corriger un bug</title>
|
||||
<img>http://ljdchost.com/ibwJNFK7KOextP.gif</img>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>61095633488</id>
|
||||
<address>http://lesjoiesducode.fr/post/61095633488/quand-on-teste-la-release-pour-la-premiere-fois</address>
|
||||
<title>quand on teste la release pour la première fois</title>
|
||||
<img>http://ljdchost.com/iNBfqcRWVujkK.gif</img>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>60257064090</id>
|
||||
<address>http://lesjoiesducode.fr/post/60257064090/quand-le-chef-me-surveille-de-loin-sur-mon-pc</address>
|
||||
<title>quand le chef me surveille de loin sur mon PC</title>
|
||||
<img>http://ljdchost.com/rJoXjxb.gif</img>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>55159334107</id>
|
||||
<address>http://lesjoiesducode.fr/post/55159334107/quand-la-concurrence-nous-rend-visite-sur-un-salon</address>
|
||||
<title>quand la concurrence nous rend visite sur un salon</title>
|
||||
<img>http://ljdchost.com/UA3XKTA.gif</img>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>54659996060</id>
|
||||
<address>http://lesjoiesducode.fr/post/54659996060/quand-le-sysadmin-passe-par-lopen-space-pour-rebooter</address>
|
||||
<title>quand le sysadmin passe par l'open space pour rebooter un serveur crashe par l'applicatif</title>
|
||||
<img>http://ljdchost.com/Oxdx7cS.gif</img>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>53193488681</id>
|
||||
<address>http://lesjoiesducode.fr/post/53193488681/quand-je-montre-au-stagiaire-comment-devrait-se-passer</address>
|
||||
<title>quand je montre au stagiaire comment devrait se passer une mise en prod</title>
|
||||
<img>http://ljdchost.com/iOON215zIRp7s.gif</img>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>52787691243</id>
|
||||
<address>http://lesjoiesducode.fr/post/52787691243/quand-je-pense-que-ma-correction-est-passee-en-prod</address>
|
||||
<title>quand je pense que ma correction est passée en prod alors que je suis en local</title>
|
||||
<img>http://ljdchost.com/uP2Urzr.gif</img>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>50079464381</id>
|
||||
<address>http://lesjoiesducode.fr/post/50079464381/quand-je-veux-utiliser-la-derniere-api-en-version-beta</address>
|
||||
<title>quand je veux utiliser la dernière API en version bêta dans un projet en prod</title>
|
||||
<img>http://ljdchost.com/yidIDyA.gif</img>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>49930756926</id>
|
||||
<address>http://lesjoiesducode.fr/post/49930756926/quand-mon-try-catch-ne-fonctionne-pas</address>
|
||||
<title>quand mon try-catch ne fonctionne pas</title>
|
||||
<img>http://ljdchost.com/ZKMvZ0O.gif</img>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>47194170613</id>
|
||||
<address>http://lesjoiesducode.fr/post/47194170613/quand-le-chef-veut-faire-le-point-a-5-heures-le</address>
|
||||
<title>quand le chef veut faire le point à 5 heures le vendredi</title>
|
||||
<img>http://ljdchost.com/E1DhQgU.gif</img>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>46420018667</id>
|
||||
<address>http://lesjoiesducode.fr/post/46420018667/quand-lequipe-support-se-tient-prete-pour-la-mise-en</address>
|
||||
<title>quand l'équipe support se tient prête pour la mise en prod</title>
|
||||
<img>http://ljdchost.com/iwCfev6TBohRP.gif</img>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>45418246519</id>
|
||||
<address>http://lesjoiesducode.fr/post/45418246519/quand-un-client-mecontent-se-pointe-au-bureau</address>
|
||||
<title>quand un client mécontent se pointe au bureau</title>
|
||||
<img>http://ljdchost.com/i1cbaP9vnF8d8.gif</img>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>45408448927</id>
|
||||
<address>http://lesjoiesducode.fr/post/45408448927/quand-le-nouveau-ne-comprend-rien-au-code-existant</address>
|
||||
<title>quand le nouveau ne comprend rien au code existant</title>
|
||||
<img>http://ljdchost.com/Ab1sBGN.gif</img>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>45188616951</id>
|
||||
<address>http://lesjoiesducode.fr/post/45188616951/quand-je-forme-le-stagiaire</address>
|
||||
<title>quand je forme le stagiaire</title>
|
||||
<img>http://i.imgur.com/JPJjSDO.gif</img>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>43554518707</id>
|
||||
<address>http://lesjoiesducode.fr/post/43554518707/quand-je-fais-une-demo-de-la-stabilite-du-programme-aux</address>
|
||||
<title>quand je fais une demo de la stabilite du programme aux clients</title>
|
||||
<img>http://i.imgur.com/c9RSVyh.gif</img>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>37906597625</id>
|
||||
<address>http://lesjoiesducode.fr/post/37906597625/quand-on-mannonce-que-je-vais-devoir-travailler-main</address>
|
||||
<title>quand on m'annonce que je vais devoir travailler main dans la main avec les sysadmins</title>
|
||||
<img>http://imgur.com/dguiD.gif</img>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>36581607302</id>
|
||||
<address>http://lesjoiesducode.fr/post/36581607302/quand-je-me-rends-compte-que-je-bloque-depuis-2-heures</address>
|
||||
<title>quand je me rends compte que je bloque depuis 2 heures a cause d'un point virgule oublie</title>
|
||||
<img>http://i.imgur.com/bBKKy.gif</img>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>35336782255</id>
|
||||
<address>http://lesjoiesducode.fr/post/35336782255/quand-le-client-essaie-de-cliquer-sur-les-maquettes</address>
|
||||
<title>quand le client essaie de cliquer sur les maquettes</title>
|
||||
<img>http://i.imgur.com/Fs2K4.gif</img>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>35117256254</id>
|
||||
<address>http://lesjoiesducode.fr/post/35117256254/quand-le-binome-me-demande-sil-doit-coder-a-ma-place</address>
|
||||
<title>quand le binome me demande s'il doit coder a ma place</title>
|
||||
<img>http://cdn.theatlanticwire.com/img/upload/2012/05/10/1268393910_george_clooney_at_the_oscars%20(1).gif</img>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>34692087813</id>
|
||||
<address>http://lesjoiesducode.fr/post/34692087813/quand-je-decouvre-un-force-close-juste-apres-ma</address>
|
||||
<title>quand je decouvre un force close juste apres ma soumission sur le play store // android</title>
|
||||
<img>http://i.imgur.com/QJu8Z.gif</img>
|
||||
</entry>
|
||||
</ljdc>
|
||||
44
dynastie/sites/blog.soutade.fr/_post.html
Executable file
@@ -0,0 +1,44 @@
|
||||
<dyn:base file="_base_post.html" xmlns:dyn="http://indefero.soutade.fr/p/dynastie">
|
||||
<dyn:block name="content">
|
||||
<dyn:post>
|
||||
<article>
|
||||
<div class="post">
|
||||
<header>
|
||||
<div class="post_header">
|
||||
<dyn:title link="0"/>
|
||||
<div class="post_sub_header">
|
||||
<dyn:date format="%A, %d %B %Y"/> | <div class="author_icon"> Écrit par <dyn:author/> </div>
|
||||
</div>
|
||||
<dyn:tags link="1"/>
|
||||
</div>
|
||||
</header>
|
||||
<dyn:post_content> </dyn:post_content>
|
||||
<footer class="post_footer">
|
||||
<dyn:replace div_name="a" href="http://dyn:post_full_url">permalink</dyn:replace>
|
||||
</footer>
|
||||
<footer id="comments">
|
||||
<dyn:comments>
|
||||
<dyn:replace div_name="div" id="comment_dyn:comment_index"> </dyn:replace>
|
||||
<div class="comment_header">#<dyn:comment_index/> De<dyn:comment_author/>, le<dyn:comment_date/></div>
|
||||
<dyn:comment_content/>
|
||||
<dyn:replace div_name="a" href="javascript:void(0);" onClick="javascript:display('response_dyn:comment_index');">Répondre</dyn:replace><br/>
|
||||
<dyn:replace div_name="form" id="response_dyn:comment_index" class="response" method="POST" action="/comment/add/dyn:post_id/dyn:comment_id" onsubmit="return validateComment('response_dyn:comment_index');">
|
||||
Auteur :<br/><input type="required" name="author"/><br/><br/>
|
||||
e-mail* :<br/><input id="email" type="email" name="email"/><input type="email" name="mel"/><br/><br/>
|
||||
Le commentaire :<br/><textarea type="required" name="the_comment" cols="80" rows="10"> </textarea><br/><br/>
|
||||
<input type="submit" value="Commenter"/>
|
||||
</dyn:replace>
|
||||
</dyn:comments>
|
||||
<dyn:replace div_name="form" id="response_0" method="POST" action="/comment/add/dyn:post_id/0" onsubmit="return validateComment('response_0');">
|
||||
Auteur :<br/><input type="required" name="author"/><br/><br/>
|
||||
e-mail* :<br/><input id="email" type="email" name="email"/><input type="email" name="mel"/><br/><br/>
|
||||
Le commentaire :<br/><textarea type="required" name="the_comment" cols="80" rows="10"> </textarea><br/><br/>
|
||||
<input type="submit" value="Commenter"/><br/><br/>
|
||||
* Seulement pour être notifié d'une réponse à cet article
|
||||
</dyn:replace>
|
||||
</footer>
|
||||
</div>
|
||||
</article>
|
||||
</dyn:post>
|
||||
</dyn:block>
|
||||
</dyn:base>
|
||||
21
dynastie/sites/blog.soutade.fr/_search.html
Executable file
@@ -0,0 +1,21 @@
|
||||
<dyn:base file="_base.html" xmlns:dyn="http://indefero.soutade.fr/p/dynastie">
|
||||
<dyn:block name="content">
|
||||
<dyn:posts limit="25">
|
||||
<article>
|
||||
<header>
|
||||
<div class="post_header">
|
||||
<dyn:title link="1"/>
|
||||
<div class="post_sub_header">
|
||||
<dyn:date format="%A, %d %B %Y"/> | <div class="author_icon"> Écrit par <dyn:author/> </div>
|
||||
</div>
|
||||
<dyn:tags link="1"/>
|
||||
</div>
|
||||
</header>
|
||||
<dyn:post_content/>
|
||||
<footer class="post_footer">
|
||||
<dyn:replace div_name="a" href="http://dyn:post_full_url">permalink</dyn:replace> <dyn:replace div_name="a" href="dyn:post_url#comments">commentaire(s)</dyn:replace>
|
||||
</footer>
|
||||
</article>
|
||||
</dyn:posts>
|
||||
</dyn:block>
|
||||
</dyn:base>
|
||||
23
dynastie/sites/blog.soutade.fr/_tag.html
Normal file
@@ -0,0 +1,23 @@
|
||||
<dyn:base file="_base.html" xmlns:dyn="http://indefero.soutade.fr/p/dynastie">
|
||||
<dyn:block name="content">
|
||||
<div id="tag_name"><dyn:tag name="1"/></div>
|
||||
<dyn:posts limit="5">
|
||||
<article>
|
||||
<header>
|
||||
<div class="post_header">
|
||||
<dyn:title link="1"/>
|
||||
<div class="post_sub_header">
|
||||
<dyn:date format="%A, %d %B %Y"/> | <div class="author_icon"> Écrit par <dyn:author/> </div>
|
||||
</div>
|
||||
<dyn:tags link="1"/>
|
||||
</div>
|
||||
</header>
|
||||
<dyn:post_content/>
|
||||
<footer class="post_footer">
|
||||
<dyn:replace div_name="a" href="http://dyn:post_full_url">permalink</dyn:replace> <dyn:replace div_name="a" href="dyn:post_url#comments">commentaire(s)</dyn:replace>
|
||||
</footer>
|
||||
</article>
|
||||
</dyn:posts>
|
||||
<dyn:navigation/>
|
||||
</dyn:block>
|
||||
</dyn:base>
|
||||
114
dynastie/sites/blog.soutade.fr/about.html
Executable file
@@ -0,0 +1,114 @@
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta content="text/html; charset=UTF-8" http-equiv="content-type"/>
|
||||
<meta content="index, follow" name="robots"/>
|
||||
<meta content="blog, gregory, soutade, grégory, soutadé, Grégory, Soutadé" name="keywords"/>
|
||||
<meta content="Blog de Grégory Soutadé" name="description"/>
|
||||
<meta content="Dynastie" name="generator"/>
|
||||
<title>Blog de Grégory Soutadé</title>
|
||||
<link href="/rss.xml" rel="alternate" type="application/rss+xml" title="RSS 2.0" />
|
||||
<link href="/atom.xml" rel="alternate" type="application/atom+xml" title="Atom 1.0" />
|
||||
<link href="/css/blog.css" rel="stylesheet" type="text/css"/>
|
||||
<script language="javascript" src="/js/base64.js"></script>
|
||||
<script language="javascript" type="text/javascript" >
|
||||
<!--
|
||||
function decryptBase64()
|
||||
{
|
||||
var elements = document.getElementsByClassName("decode64");
|
||||
for(var i=0; i<elements.length; i++)
|
||||
{
|
||||
content = elements[i].innerHTML;
|
||||
decoded = Base64.decode(content);
|
||||
elements[i].innerHTML = decoded;
|
||||
}
|
||||
}
|
||||
-->
|
||||
</script>
|
||||
</head>
|
||||
<body onLoad="decryptBase64();">
|
||||
<img id="logo" src="/images/tux_final.png"/>
|
||||
<div class="body">
|
||||
<div class="table-row">
|
||||
<div class="table-cell" id="header">
|
||||
<h2 id="title"><a href="/">Blog de Grégory Soutadé</a></h2>
|
||||
</div>
|
||||
</div>
|
||||
<div class="table-row">
|
||||
<div class="content">
|
||||
Bonjour, je m'appelle Grégory Soutadé. Ingénieur en informatique (logiciel embarqué). Actuellement en poste chez Neotion (dans nos beaux locaux de Sophia-Antipolis).<br/><br/>
|
||||
Pour me contacter :<br/>
|
||||
<ul>
|
||||
<li class="decode64">PGEgaHJlZj0ibWFpbHRvOmdyZWdvcnlAc291dGFkZS5mciI+Z3JlZ29yeUBzb3V0YWRlLmZyPC9hPg==</li>
|
||||
<li class="decode64">PGEgaHJlZj0iaHR0cDovL2ZyLndpa2lwZWRpYS5vcmcvd2lraS9FeHRlbnNpYmxlX01lc3NhZ2luZ19hbmRfUHJlc2VuY2VfUHJvdG9jb2wiPlhNUFA8L2E+IDogZ3JlZ29yeUBzb3V0YWRlLmZy</li>
|
||||
<li class="decode64">PGEgaHJlZj0iaHR0cDovL3d3dy5mYWNlYm9vay5jb20vZ3JlZ29yeS5zb3V0YWRlIj5GYWNlYm9vazwvYT4=</li>
|
||||
</ul>
|
||||
<div class="decode64">TWEgY2zDqSA8YSBocmVmPSJodHRwOi8vZnIud2lraXBlZGlhLm9yZy93aWtpL0dQRyI+R1BHPC9hPiA6</div>
|
||||
<div class="decode64">PHByZT4tLS0tLUJFR0lOIFBHUCBQVUJMSUMgS0VZIEJMT0NLLS0tLS0NClZlcnNpb246IEdudVBHIHYxLjQuMTQgKEdOVS9MaW51eCkNCg0KbVFFTkJGS294NUlCQ0FDOHZOMG83aWRqODJrUXBuSWJxeXR0NzVraGc1TFhMNEJVWVord0ZFZEg2L2FqdGNWVw0KZWxvSlh0Zld6YTlxaTZTdUFPYVBJMVdXS2lMdjFqSW92TEpnSW92Y2Y3aDlOODUwUG85TWc5ZnBwU1NBazFhdg0KcERMUUlvdTcxWlZ2bTU1bTF1amxZZFIwVGxEU016cWJnKzVRY1pWL09sZ1p6R0hXd3NpYjhOazBJN2J6OTRROQ0KRE95TkxxOHJ3U05WL203dEw1WGhJOWFoMjNHNHVWN0VwdXlMenZBeDhPUyt5NGo0NW9SSCt4bkw1RS9DNktPQQ0Ka0FZb1NBaElOQVl4MXVvL0k0YlNzYjFmK1l0ajVjazVhTHdHMytJWWRFK3VUaUVlUUdJSEZ6UXJDUFZEc3AvNA0KZSt3YWNWWjJPY0NkcXlKaTYzVVRTVVQvOUMyQ0dQQTZjbHR2QUJFQkFBRzBKa2R5dzZsbmIzSjVJRk52ZFhSaA0KWk1PcElEeG5jbVZuYjNKNVFITnZkWFJoWkdVdVpuSStpUUU0QkJNQkFnQWlCUUpTcU1lU0Foc0RCZ3NKQ0FjRA0KQWdZVkNBSUpDZ3NFRmdJREFRSWVBUUlYZ0FBS0NSQWtZUDdLNWpnT2k1WkFCL3NHVk1VSnRYWlFJcVhhK3gyUQ0KRkozc0xUWVA3ODF4UmdhM1hLaW9vTk5ReTN1QkptUFdVc1RzZzdqSVljTGRhcTh6a1JYdjB6bjFxYkE3V0tLZQ0KNjd0YkVseUwwYWZqR1d4NDU1cXJBMzRNZmVNMkdRUGIzUWZTTXpSZGc1YkxQamlpbzNnRi8yR1JoUWJLVlh4eA0KNnY0aGRMVEY4SkVoWDk5M1drTDFtMkZKdGp0L1NxSWx5Y0kxclY1dlJXSmFqZk9RSVhsWlFPQXFmM0J1amU1NQ0KNExmRlF5V1A1VmFYVFhRM3RNczl4bzREaWMyZk1CZSt0S290eVdpcysxTFFaYmRGSFN1NDJsTTZXNWdaV3A2Uw0KeFgra2szbDNhNmtKZGt3TmhKYTFra3pXdGF2UFEvZ3Z6VTI2d3lBTVpueDh2bTBEa1RLK1Y0c1JHZmhoV3ZnUA0KZzB2a3VRRU5CRktveDVJQkNBREpXT2hzQkZqVE9rYmlVdDNubWRSOXQyN1p4WWRnTTAvbzZlek9ML08zR0IzMQ0Kb0FKR2xrUFdGaDVjUE5qL0tSZ2Zrd2ZOZ1RvNkNYVjJBSEdCRWw5ejQwRDY2WFhVdEU5U3ovdEJjQXRUS1B2MA0KY1g0c0hoVVZBZmJyZEJwWFgxSXJsOGJEQ2FlNTdKSEFWUSsycVpWYlptOWs2ZG1IN3pFVTcwWU81MWRQbjJuZg0KbXcvUG1NS1lLV2JYNWpPWUpaWFd1bDM4aFBJZU9wTkNGdHBIS3ZURkJvb0prd3NPRCtLMzQyY3R3WWc5YlZmZw0KTWZkeEtla2EwVnBVSy9sOG1FV25ablFObGdHeTVGSGkzVjFSNStPK1lVaDd4WnBQWUNmSjE4bEtCQi9vbHlZUg0KTmR5QTZrcXg4cHlvdHpVOU42NnVZOVN0Wi82cnBPZ0JoR0hUa2dyeEFCRUJBQUdKQVI4RUdBRUNBQWtGQWxLbw0KeDVJQ0d3d0FDZ2tRSkdEK3l1WTREb3VQTndmL1JlU0RBQzFQQmk4Q1VLZXdETWVtcmFlanpKTFpoVzNZWEFZag0KM3ZLZk5Ja290dS96MU9BY1QxZVc4bzdla2h3dzhTMktyMk5DUEhRalJqRmdqNExiWEQrS3lFTFhuVUNDckk3bg0Kc0hXMzcraHB4R0J4ck9zVGRxZitXM2plRUFEVVBHcTVnZW54NnFBVU1yWFpvT2lXUUt6Q1MzczkyZFh3Qk1NRA0KbU1ZbVBBTTFJVFdPbkt4WkhHNlByUTFKWEVzMDAzR0RObHlVZ2xpeW9zd2MwTGN5M25odEVUTGprWVg5QTVLTA0KdEZyMWlkTEtvTEFqMTh2SmVLZTZpSzhWYWVpMExLN3R0Z0VKQmo5UDhaalBobVpRaUpCOTkxTHNlSDBDUmd1dw0KQ3J3MzdqVm9wclRwazFwcG5TcDVsSVhubWh2RXRtVytNaEE4emdWa3BqR2xPaFlRYUxrRExnUlNxTWdGRVFnQQ0KOFFQUnBUZXIwM2tTMlhnNTZnSkFBdWgzRE5ncE1VbkQvMUNrNysrc3NwR1BpUFJvY1BEeCtjVnNlUUdaZDNGVA0KMkVTL1pTSEwvMWFxRnh4V01ZNmZGRjRhbjg3czdGdFdGNDJjWk9OL0NraVJjeXo3dlpHTVhvTzBGUVUzVG1yWA0KZGJ6dU9rc3g5V21ENkhsRWhOYktaSmVYZUVOMjcxdGlXOGNIQzdrTUZWei9Kdk9JQjdJOVlKeWd5QnUvWHJJeQ0KaU9VbzM5aWltcmpsUHRWUDR1T3hBOTVDaHBSNjFNcDVlb25Na2F2M0dFRTZNaFRGTlJVRnI2bVd3MWR3M1B0SQ0KL3NUQ25Ncjl3bG5WL05VRE9vMlZjSEY5c21VM091eEJDWDBQQnBndXpjZTliVjE4R0dMTEhaaXFvQk4wWk0rOQ0KSklQRGxrUzM3VnJnVVNYbXRpbDJ4d0VBckprOW5SU2dFRm8vTEgvVkdCYTVDVlBTQmNjY1MvcWdYUTZJTm9XTQ0KdzRNSUFPa0tUeVVQRVJKUy8zV2tCQ2IwcHd6dUVVVi8wRmZKZjBnamErQW1qYkRaeE9ObEliL2YyRVJRb0FFMg0KYk5qOVU5RUYyYXYwZDJKdzVjSTJCTmN6SkFFdDFOSTk4aXQ5Y3Z0ajI4S3NxZzZwYzN1VEllTDlqWmU3a1dYaQ0KdCtEUkkzKzZLMnZPc010MTZINi9HUlBCNExicDVQUHZHTEs1cS9ya0d4Q3VRRFdWQ3ROMzIwMHgwV2NrUHRRZA0Kb0p6Rk9NMDBVaWJhQ0tid1NCdGFlUFUxWEJhbC9HOHJwdVQwM2hIdHB6d1paN045SlY4ZzFWNHNXRHlJTmNQTw0Kb1dsUTVoUXVPZU1IYkpCaGVyWlAvemN6cWx5YnVQRnYyaFRUVFZEUWN2WXJNTlJPRTczR25QTmhaTzlNSUhiMQ0KV0xHUTJRc2RwT2h3VVFraU9ZTG1yUXZDd3o4SC8wekZ6Z2NpbWMrV0plU0tKNllWMHpxTDZUYUoxTThGTkNUdQ0KdWdQWjBVeXRuWmM5MFJsN1VDS0RhOFJzbTZNQnV0MWpYWlMwaGZqUVl4aitObnpnbWg4WUNwTmhwQncrUTJseg0KWEdEN3FJZHgzUzdQU3p3RUQvbGNqZVp3aFIySnpPT3Z4SS9vei9JTVJjV3ZGWFBsZHNueHM5N2Qxa2p0blFJNA0KM3hMUEVoRHZ2TDBNWlJ3MDl5Z2VwSE1IU0FrM1d3My8vR1NRaWt0THRZc3lIK2phL2d1R2t6ZmpsUHhBNmhOSg0KeWFsU1U0TGcvOEN1RTdUaGQyTEdOVVRQUDYrUkhyRDBBN3l6M21XSXozUUZaYTJvbE9VZjh0VncwWktJUGoxZg0KT0RyUmFBZnMwUnVhR3BWaDIwM2VBbGZzbDVXTmRaamhvWlJyYkp1RTlySnFYaDVlMUV5SkFYOEVHQUVDQUFrRg0KQWxLb3lBVUNHd0lBYWdrUUpHRCt5dVk0RG90ZklBUVpFUWdBQmdVQ1VxaklCUUFLQ1JDM2x1bi83OTQ5R1psRA0KQVA0MGNydE5OcUVLZlhkYWFQWDVyZ0FIajRCSG8vbmF0SXNxUGxZNXRobU9sUUQ3QjJ1MEp0MUpYOTgrNTRJQg0KU1lnL3llTlZqZElCRmhOTkhkbWsyVkhYMDlFaHNnZ0FtcS84SURqT21UdEI3bkd0Q2gwMU01cDBXeThLQzExZw0Ka3JFUm93UjZubnQ2ZkNJZmFXamhUUVRCNDh4WWZSR3ZIOHcxZDlJcDBibVZVUkRuZ3lNdlduY01HeVd5aWk5VA0KTXdzUDdndE93UUJIQVFYR1VuK2lEd3FlMjhQVXBvMytzM3ZNTWhLaUZFWnhEN3ZzVkc5Z1VYb0lzVllaQVlncg0KWG9hZEpRZWNHM1g5RWFzcCtFTkV3aU5rYStuYWh3bVZ1SjdmZm9EQnR4UVI0V1lkQnZlSDVWUUpBbW16L01FMw0Kak45U3JkR1RIcmI0aVdJUFllM1FrQ2xrQkpKL3hocGt3ZGpjRjFwbHdXQlE4OCtZb0RMaXVvWWY4Z3pmTmN4eg0KSmRHQ3FzRnhZL3ROMkIvMkw1eXUvMVBQUDZEc1lGY2lDZmlsOWJURUNzVWRyQldMeWxzTFp3PT0NCj02ZDcyDQotLS0tLUVORCBQR1AgUFVCTElDIEtFWSBCTE9DSy0tLS0tDQo8L3ByZT4=</div>
|
||||
</div>
|
||||
<div class="menu">
|
||||
<div class="menu_content">
|
||||
<div class="menu_content_header">Recherche</div>
|
||||
<div id="menu_main">
|
||||
<dyn:replace div_name="form" id="search_form" method="POST" action="/search/dyn:blog_id">
|
||||
<input type="text" name="text" id="search_text" onkeypress="handleKeyPress(event,this.form)"/>
|
||||
</dyn:replace>
|
||||
</div>
|
||||
</div>
|
||||
<nav>
|
||||
<div class="menu_content">
|
||||
<div class="menu_content_header">Menu principal</div>
|
||||
<div id="menu_main">
|
||||
<div class="menu_content_content"><a href="/">Première page</a></div>
|
||||
<div class="menu_content_content"><a href="/about.html">À propos</a></div>
|
||||
<div class="menu_content_content"><a href="/all_posts.html">Tous les articles</a></div>
|
||||
<div class="menu_content_content"><a href="http://indefero.soutade.fr">Projets personnels</a></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="menu_content">
|
||||
<div class="menu_content_header">Catégories</div>
|
||||
<div class="menu_content_content">
|
||||
<ul>
|
||||
<li><a href="/category/cinema">Cinéma</a></li>
|
||||
<li><a href="/category/articles">Articles</a></li>
|
||||
<li><a href="/category/musique">Musique</a></li>
|
||||
<li><a href="/category/configurations-pc">Configurations PC</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="menu_content">
|
||||
<div class="menu_content_header">Tags</div>
|
||||
<div class="menu_content_content">
|
||||
<ul>
|
||||
<li><a href="/tag/programmation">Programmation</a></li>
|
||||
<li><a href="/tag/python">Python</a></li>
|
||||
<li><a href="/tag/kisscount">KissCount</a></li>
|
||||
<li><a href="/tag/jm2l">JM2L</a></li>
|
||||
<li><a href="/tag/course-a-pied">Course à pied</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="menu_content">
|
||||
<div class="menu_content_header">Archives</div>
|
||||
<div class="menu_content_content">
|
||||
<ul>
|
||||
<li><a href="/archive/2013">2013</a></li>
|
||||
<li><a href="/archive/2012">2012</a></li>
|
||||
<li><a href="/archive/2011">2011</a></li>
|
||||
<li><a href="/archive/2010">2010</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="feed">
|
||||
<a href="/rss.xml"><img src="/images/rss.png" alt="RSS feeds"></img> RSS</a><a href="/atom.xml"><img src="/images/atom.png" alt="Atom feeds"></img> Atom</a>
|
||||
</div>
|
||||
</nav>
|
||||
<p style="align:text-center">Généré avec <a href="http://indefero.soutade.fr/p/dynastie">Dynastie</a></p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="footer">
|
||||
Copyright © 2010-2014 Grégory Soutadé.<br/>
|
||||
All Rights Reserved.
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -8,8 +8,8 @@ body
|
||||
/* margin: 0 auto; */
|
||||
padding: 0;
|
||||
background-color: #ffffe2;
|
||||
margin-left: 20%;
|
||||
margin-right: 20%;
|
||||
margin-left: 15%;
|
||||
margin-right: 15%;
|
||||
height:100%;
|
||||
}
|
||||
|
||||
@@ -83,7 +83,7 @@ div.menu
|
||||
padding:10px;
|
||||
}
|
||||
|
||||
div.menu > div.menu_content
|
||||
div.menu div.menu_content
|
||||
{
|
||||
background-color: #edeee7;
|
||||
border-style : solid ridge ridge solid;
|
||||
@@ -95,7 +95,7 @@ div.menu > div.menu_content
|
||||
margin :10px;
|
||||
}
|
||||
|
||||
div.menu > div.menu_content > div.menu_content_header
|
||||
div.menu div.menu_content div.menu_content_header
|
||||
{
|
||||
font-family: Tahoma,Arial,Helvetica,Sans-Serif;
|
||||
font-size: 17px;
|
||||
@@ -106,9 +106,10 @@ div.menu > div.menu_content > div.menu_content_header
|
||||
color: #475028;
|
||||
}
|
||||
|
||||
div.menu > div.menu_content > div.menu_content_content
|
||||
div.menu div.menu_content div.menu_content_content
|
||||
{
|
||||
color: #5e6a34;
|
||||
margin: 3px;
|
||||
}
|
||||
|
||||
div.menu_content_content a
|
||||
@@ -119,7 +120,7 @@ div.menu_content_content a
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
div.menu > div.menu_content > div.menu_content_content a:link
|
||||
div.menu div.menu_content div.menu_content_content a:link
|
||||
{
|
||||
font-family: Tahoma,Arial,Helvetica,Sans-Serif;
|
||||
color: #5e6a34;
|
||||
@@ -127,7 +128,7 @@ div.menu > div.menu_content > div.menu_content_content a:link
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
div.menu > div.menu_content > div.menu_content_content a:hover
|
||||
div.menu div.menu_content div.menu_content_content a:hover
|
||||
{
|
||||
font-family: Tahoma,Arial,Helvetica,Sans-Serif;
|
||||
color: #5e6a34;
|
||||
@@ -135,12 +136,12 @@ div.menu > div.menu_content > div.menu_content_content a:hover
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
div.menu > div.menu_content > div.menu_content_content ul
|
||||
div.menu div.menu_content div.menu_content_content ul
|
||||
{
|
||||
padding-left:20px;
|
||||
}
|
||||
|
||||
div.menu > div.menu_content > div.menu_content_content li
|
||||
div.menu div.menu_content div.menu_content_content li
|
||||
{
|
||||
list-style-image: url("/images/BlockContentBullets.png");
|
||||
}
|
||||
@@ -159,7 +160,7 @@ div.post
|
||||
margin-bottom:100px;
|
||||
}
|
||||
|
||||
div.post > div.post_header
|
||||
div.post div.post_header
|
||||
{
|
||||
display:block;
|
||||
font-family: Tahoma,Arial,Helvetica,Sans-Serif;
|
||||
@@ -167,7 +168,7 @@ div.post > div.post_header
|
||||
padding-bottom:5px;
|
||||
}
|
||||
|
||||
div.post > div.post_header > div.title
|
||||
div.post div.post_header div.title
|
||||
{
|
||||
display:block;
|
||||
text-decoration:none;
|
||||
@@ -189,7 +190,7 @@ div.post > div.post_header > div.title
|
||||
color: #181B0D;
|
||||
}
|
||||
|
||||
div.post > div.post_header > div.title > a
|
||||
div.post_header div.title > a
|
||||
{
|
||||
display:block;
|
||||
text-decoration:none;
|
||||
@@ -211,7 +212,7 @@ div.post > div.post_header > div.title > a
|
||||
color: #181B0D;
|
||||
}
|
||||
|
||||
div.post > div.post_header > div.title > a:hover
|
||||
div.post_header div.title > a:hover
|
||||
{
|
||||
display:block;
|
||||
text-decoration:none;
|
||||
@@ -233,7 +234,7 @@ div.post > div.post_header > div.title > a:hover
|
||||
color: #181B0D;
|
||||
}
|
||||
|
||||
div.post > div.post_header > div.post_sub_header
|
||||
div.post_header div.post_sub_header
|
||||
{
|
||||
display:block;
|
||||
background-color: #edeee7;
|
||||
@@ -241,7 +242,7 @@ div.post > div.post_header > div.post_sub_header
|
||||
padding : 3px;
|
||||
}
|
||||
|
||||
div.post > div.post_header > div.post_sub_header > div.author_icon
|
||||
div.post_header div.post_sub_header > div.author_icon
|
||||
{
|
||||
display:inline;
|
||||
background-image: url('/images/authoricon.png');
|
||||
@@ -250,12 +251,12 @@ div.post > div.post_header > div.post_sub_header > div.author_icon
|
||||
padding-left: 18px;
|
||||
}
|
||||
|
||||
div.post > div.post_header > div.post_sub_header > div.author_icon > div.author
|
||||
div.post_header div.post_sub_header > div.author_icon div.author
|
||||
{
|
||||
display:inline;
|
||||
}
|
||||
|
||||
div.post > div.post_header > div.post_sub_header > div.date
|
||||
div.post_header div.post_sub_header div.date
|
||||
{
|
||||
display:inline;
|
||||
font-family: Tahoma,Arial,Helvetica,Sans-Serif;
|
||||
@@ -265,7 +266,7 @@ div.post > div.post_header > div.post_sub_header > div.date
|
||||
padding-left: 18px;
|
||||
}
|
||||
|
||||
div.post > div.post_content
|
||||
div.post div.post_content
|
||||
{
|
||||
display:block;
|
||||
margin-top:1%;
|
||||
@@ -274,6 +275,30 @@ div.post > div.post_content
|
||||
|
||||
}
|
||||
|
||||
footer.post_footer
|
||||
{
|
||||
text-align:right;
|
||||
}
|
||||
|
||||
footer.post_footer > a, a:link, a:hover
|
||||
{
|
||||
color: blue;
|
||||
text-decoration:none;
|
||||
}
|
||||
|
||||
footer.post_footer > a:hover
|
||||
{
|
||||
color: blue;
|
||||
text-decoration:underline;
|
||||
}
|
||||
|
||||
footer.post_footer > a:visited
|
||||
{
|
||||
color: purple;
|
||||
text-decoration:underline;
|
||||
}
|
||||
|
||||
|
||||
div.recents
|
||||
{
|
||||
margin-left:20px;
|
||||
@@ -360,9 +385,6 @@ ul li
|
||||
|
||||
.comment .comment
|
||||
{
|
||||
/* padding-top:15px; */
|
||||
/* padding-left:15px; */
|
||||
/* margin-bottom:2px; */
|
||||
margin-top:15px;
|
||||
margin-left:15px;
|
||||
margin-bottom:1px;
|
||||
@@ -374,6 +396,7 @@ ul li
|
||||
padding-top:5px;
|
||||
padding-left:5px;
|
||||
margin-bottom:5px;
|
||||
text-align:justify;
|
||||
}
|
||||
|
||||
.comment_index, .comment_author, .comment_date
|
||||
@@ -384,7 +407,6 @@ ul li
|
||||
.comment_author, .comment_date
|
||||
{
|
||||
margin-left:5px;
|
||||
margin-right:5px;
|
||||
}
|
||||
|
||||
.comment_author
|
||||
@@ -486,4 +508,67 @@ ul li
|
||||
#search_text
|
||||
{
|
||||
width:100%;
|
||||
}
|
||||
|
||||
div.all_posts
|
||||
{
|
||||
display:block;
|
||||
}
|
||||
|
||||
div.all_posts div.year
|
||||
{
|
||||
display:block;
|
||||
margin-bottom:50px;
|
||||
}
|
||||
|
||||
div.all_posts div.month
|
||||
{
|
||||
display:block;
|
||||
margin-bottom:20px;
|
||||
margin-left:20px;
|
||||
}
|
||||
|
||||
div.all_posts year
|
||||
{
|
||||
display:block;
|
||||
margin-bottom:20px;
|
||||
font-size: x-large;
|
||||
font-weight:bold;
|
||||
}
|
||||
|
||||
div.all_posts month
|
||||
{
|
||||
display:block;
|
||||
margin-bottom:5px;
|
||||
font-size: large;
|
||||
}
|
||||
|
||||
div.all_posts div.post
|
||||
{
|
||||
display:block;
|
||||
margin-bottom:2px;
|
||||
margin-left:20px;
|
||||
}
|
||||
|
||||
.post_content > p > img
|
||||
{
|
||||
display:block;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
.post_content > p
|
||||
{
|
||||
text-align:justify;
|
||||
}
|
||||
|
||||
.feed
|
||||
{
|
||||
margin-right:auto;
|
||||
margin-left:20px;
|
||||
}
|
||||
|
||||
.feed > a
|
||||
{
|
||||
margin-right:10px;
|
||||
}
|
||||
32
dynastie/sites/blog.soutade.fr/css/ljdc.css
Normal file
@@ -0,0 +1,32 @@
|
||||
.ljdc
|
||||
{
|
||||
display:block;
|
||||
margin:30px;
|
||||
}
|
||||
|
||||
.ljdc a, .ljdc title
|
||||
{
|
||||
font-family: 'Source Code Pro',Courier;
|
||||
font-size: 1.3em;
|
||||
font-weight:300;
|
||||
line-height: 1.3em;
|
||||
text-align: center;
|
||||
margin: 5px;
|
||||
}
|
||||
|
||||
.ljdc img
|
||||
{
|
||||
display:block;
|
||||
margin: 10px;
|
||||
max-width: 400px;
|
||||
max-height: 400px;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
.ljdc a:link, .ljdc a:visited, .ljdc a:hover
|
||||
{
|
||||
color: rgba(0, 0, 0, 0.8);
|
||||
text-decoration:none;
|
||||
}
|
||||
|
||||
5
static/css/dynastie.css → dynastie/static/css/dynastie.css
Normal file → Executable file
@@ -2,4 +2,9 @@
|
||||
{
|
||||
color:green;
|
||||
font-weight:bold;
|
||||
}
|
||||
|
||||
.markdown_help
|
||||
{
|
||||
padding-right:20px;
|
||||
}
|
||||
BIN
dynastie/static/images/favicon.png
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
0
static/images/logo.png → dynastie/static/images/logo.png
Normal file → Executable file
|
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 32 KiB |
0
static/js/aes.js → dynastie/static/js/aes.js
Normal file → Executable file
40
static/js/dynastie.js → dynastie/static/js/dynastie.js
Normal file → Executable file
@@ -23,6 +23,10 @@ tinyMCE.init({
|
||||
width: "60%",
|
||||
height: "400",
|
||||
|
||||
theme_advanced_font_sizes: "14px,16px,18px,20px",
|
||||
font_size_style_values : "14px,16px,18px,20px",
|
||||
content_css : "../../static/js/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/custom_content.css",
|
||||
|
||||
external_image_list_url : external_list,
|
||||
|
||||
});
|
||||
@@ -46,3 +50,39 @@ function previewPost(blog_id)
|
||||
form.action = action;
|
||||
form.target = target;
|
||||
}
|
||||
|
||||
function addTag()
|
||||
{
|
||||
text_tags = document.getElementById('id_text_tags');
|
||||
avail_tags = document.getElementById('available_tags');
|
||||
|
||||
cur_elem = avail_tags.selectedIndex;
|
||||
|
||||
cur_elem = (cur_elem >= 0) ? avail_tags.options[cur_elem].value : "";
|
||||
|
||||
if(cur_elem != "" && text_tags.value.indexOf(cur_elem) == -1)
|
||||
{
|
||||
if (text_tags.value.length > 0)
|
||||
text_tags.value += ", " + cur_elem;
|
||||
else
|
||||
text_tags.value = cur_elem;
|
||||
}
|
||||
}
|
||||
|
||||
function switchEditor()
|
||||
{
|
||||
options = document.getElementById("editor");
|
||||
help = document.getElementById("markdown_help");
|
||||
|
||||
if (options.selectedIndex == 0) // HTML
|
||||
{
|
||||
tinyMCE.execCommand('mceAddControl', false, 'content');
|
||||
help.style.display="none";
|
||||
// tinymce.execCommand('mceToggleEditor',true,'content');
|
||||
} else // Text
|
||||
{
|
||||
tinyMCE.execCommand('mceRemoveControl', false, 'content');
|
||||
help.style.display="block";
|
||||
// tinymce.execCommand('mceToggleEditor',false,'content');
|
||||
}
|
||||
}
|
||||
0
static/js/sha1.js → dynastie/static/js/sha1.js
Normal file → Executable file
493
dynastie/static/js/tinymce/changelog.txt
Executable file
@@ -0,0 +1,493 @@
|
||||
Version 3.5.10 (2013-10-24)
|
||||
Fixed bug where dialogs using inlinepopups plugin would display incorrectly sometimes
|
||||
Fixed bug in paste plugin word import that was removing type from lists
|
||||
Fixed bug where IE 11 wouldn't be properly detected if IE 10 emulation was enabled.
|
||||
Version 3.5.9 (2013-10-10)
|
||||
Added IE 11 compatibility. IE 11 is treated as Gecko but it has still many IE bugs.
|
||||
Fixed bug where importing CSS classes would fail if it contained @import rules to remote domain on Gecko.
|
||||
Fixed bug in spelling plugin where misspelt words are not always marked.
|
||||
Fixed bug where script tag was removed when nested inside a div or p.
|
||||
Fixed full screen plugin state migration from original editor.
|
||||
Fixed edgecase on up/down arrow keys scrolling with native lists.
|
||||
Fixed bug where space can scroll webpage when using keyboard to access toolbar buttons.
|
||||
Fixed bug where up/down arrow keys scroll entire webpage when using keyboard nav in menu ui.
|
||||
Fixed bug where applying ins/del as inline elements would apply them as blocks.
|
||||
Fixed bug where backspace on a space after an image would produce a BR on WebKit.
|
||||
Fixed bug where it wasn't possible to change block type of text blocks.
|
||||
Version 3.5.8 (2012-11-20)
|
||||
Fixed bug where html5 data attributes where stripped from contents.
|
||||
Fixed bug where toolbar was annouced multiple times with JAWS on Firefox.
|
||||
Fixed bug where the editor view whouldn't scroll to BR elements when using shift+enter or br enter mode.
|
||||
Fixed bug where a JS error would be thrown when trying to paste table rows then the rows clipboard was empty.
|
||||
Fixed bug with auto detection logic for youtube urls in the media plugin.
|
||||
Fixed bug where the formatter would throw errors if you used the jQuery version of TinyMCE and the latest jQuery.
|
||||
Fixed bug where the latest WebKit versions would produce span elements when deleting text between blocks.
|
||||
Fixed bug where the autolink plugin would produce DOM exceptions when pressing shift+enter inside a block element.
|
||||
Fixed bug where toggling of blockquotes when using br enter mode would produce an exception.
|
||||
Fixed bug where focusing out of the body of the editor wouldn't properly add an undo level.
|
||||
Fixed issue with warning message being displayed on IE 9+ about the meta header fix for IE 8.
|
||||
Version 3.5.7 (2012-09-20)
|
||||
Changed table row properties dialog to not update multiple rows when row type is header or footer.
|
||||
Fixed bug in hyperlink dialog for IE9 where links with no target attr set had target value of --
|
||||
Changing toolbars to have a toolbar role for FF keyboard navigation works correctly.
|
||||
Fixed bug where applying formatting to an empty block element would produce redundant spans.
|
||||
Fixed bug where caret formatting on IE wouldn't properly apply if you pressed enter/return.
|
||||
Fixed bug where loading TinyMCE using an async script wouldn't properly initialize editors.
|
||||
Fixed bug where some white space would be removed after inline elements before block elements.
|
||||
Fixed bug where it wouldn't properly parse attributes with a single backslash as it's contents.
|
||||
Fixed bug where noscript elements would loose it's contents on older IE versions.
|
||||
Fixed bug where backspace inside empty blockquote wouldn't delete it properly.
|
||||
Fixed bug where custom elements with . in their names wouldn't work properly.
|
||||
Fixed bug where the custom_elements option didn't properly setup the block elements schema structure.
|
||||
Fixed bug where the custom_elements option didn't auto populate the extended_valid_elements.
|
||||
Fixed bug where the whole TD element would get blcok formatted when there where BR elements in it.
|
||||
Fixed bug where IE 9 might crash if the editor was hidden and specific styles where applied to surrounding contents.
|
||||
Fixed bug where shift+enter inside a table cell on Gecko would produce an zero width non breaking space between tr:s.
|
||||
Fixed bug where the advlink dialog wouldn't properly populate the anchors dropdown if the HTML5 schema was used.
|
||||
Fixed issue with missing autofocus attribute on input element when using the HTML5 schema.
|
||||
Fixed issue where enter inside a block contained within an LI element wouldn't produce a new LI.
|
||||
Version 3.5.6 (2012-07-26)
|
||||
Added "text" as a valid option to the editor.getContent format option. Makes it easier to get a text representation of the editor contents.
|
||||
Fixed bug where resizing an image to less that 0x0 pixels would display the ghost image at an incorrect position.
|
||||
Fixed bug where the remove format button would produce extra paragraphs on WebKit if all of the contents was selected.
|
||||
Fixed issue where edge resize handles on images of wouldn't scale it with the same aspect ratio.
|
||||
Fixed so force_p_newlines option works again since some users want mixed mode paragraphs.
|
||||
Fixed so directionality plugin modifies the dir attribute of all selected blocks in the editor.
|
||||
Fixed bug where backspace/delete of a custom element would move it's attributes to the parent block on Gecko.
|
||||
Version 3.5.5 (2012-07-19)
|
||||
Added full resize support for images and tables on WebKit/Opera. It now behaves just like Gecko.
|
||||
Added automatic embed support for Vimeo, Stream.cz and Google Maps in media plugin. Patch contributed by Jakub Matas.
|
||||
Fixed bug where the lists plugin wouldn't properly remove all li elements when toggling selected items of. Patched by Taku AMANO.
|
||||
Fixed bug where the lists plugin would remove the entire list if you pressed deleted at the beginning of the first element. Patched by Taku AMANO.
|
||||
Fixed bug where the ordered/unordered list buttons could both be enabled if you nested lists. Patch contributed by Craig Petchell.
|
||||
Fixed bug where shift+enter wouldn't produce a BR in a LI when having forced_root_blocks set to false.
|
||||
Fixed bug where scrollbars aren't visible in fullscreen when window is resized.
|
||||
Fixed bug with updating the border size using the advimage dialog on IE 9.
|
||||
Fixed bug where the selection of inner elements on IE 8 in contentEditable mode would select the whole parent element.
|
||||
Fixed bug where the enter key would produce an empty anchor if you pressed it at the space after a link on IE.
|
||||
Fixed bug where autolink plugin would produce an exception for specific html see bug #5365
|
||||
Fixed so the formatChanged function takes an optional "similar" parameter to use while matching the format.
|
||||
Version 3.5.4.1 (2012-06-24)
|
||||
Fixed issue with Shift+A selecting all contents on Chrome.
|
||||
Version 3.5.4 (2012-06-21)
|
||||
Added missing mouse events to HTML5 schema. Some events needs to be manually defined though since the spec is huge.
|
||||
Added image resizing for WebKit browsers by faking the whole resize behavior.
|
||||
Fixed bug in context menu plugin where listener to hide menu wasn't removed correctly.
|
||||
Fixed bug where media plugin wouldn't use placeholder size for the object/video elements.
|
||||
Fixed bug where jQuery plugin would break attr function in jQuery 1.7.2.
|
||||
Fixed bug where jQuery plugin would throw an error if you used the tinymce pseudo selector when TinyMCE wasn't loaded.
|
||||
Fixed so encoding option gets applied when using jQuery val() or attr() to extract the contents.
|
||||
Fixed so any non valid width/height passed to media plugin would get parsed to proper integer or percent values.
|
||||
Version 3.5.3 (2012-06-19)
|
||||
Added missing wbr element to HTML5 schema.
|
||||
Added new mceToggleFormat command. Enabled you to toggle a specific format on/off.
|
||||
Fixed bug where undo/redo state didn't update correctly after executing an execCommand call.
|
||||
Fixed bug where the editor would get auto focused on IE running in quirks mode.
|
||||
Fixed bug where pressing enter before an IMG or INPUT element wouldn't properly split the block.
|
||||
Fixed bug where backspace would navigate back when selecting control types on IE.
|
||||
Fixed bug where the editor remove method would unbind events for controls outside the editor instance UI.
|
||||
Fixed bug where the autosave plugin would try to store a draft copy of editors that where removed.
|
||||
Fixed bug where floated elements wouldn't expand the block created when pressing enter on non IE browsers.
|
||||
Fixed bug where the caret would be placed in the wrong location when pressing enter at the beginning of a block.
|
||||
Fixed bug where it wasn't possible to block events using the handle_event_callback option.
|
||||
Fixed bug where keyboard navigation of the ColorSplitButton.js didn't work correctly.
|
||||
Fixed bug where keyboard navigation didn't work correctly on split buttons.
|
||||
Fixed bug where the legacy Event.add function didn't properly handle multiple id:s passed in.
|
||||
Fixed bug where the caret would disappear on IE when selecting all contents and pressing backspace/delete.
|
||||
Fixed bug where the getStart/getEnd methods would sometimes return elements from the wrong document on IE.
|
||||
Fixed so paragraphs gets created if you press enter inside a form element.
|
||||
Version 3.5.2 (2012-05-31)
|
||||
Added new formatChanged method to tinymce.Formatter class. Enables easier state change handling of formats.
|
||||
Added new selectorChanged method to tinymce.dom.Selection class. Enables easier state change handling of matching CSS selectors.
|
||||
Changed the default theme to be advanced instead of simple since most users uses the advanced theme.
|
||||
Changed so the theme_advanced_buttons doesn't have a default set if one button row is specified.
|
||||
Changed the theme_advanced_toolbar_align default value to "left".
|
||||
Changed the theme_advanced_toolbar_location default value to "top".
|
||||
Changed the theme_advanced_statusbar_location default value to "bottom".
|
||||
Fixed bug where the simple link dialog would remove class and target attributes from links when updating them if the drop downs wasn't visible.
|
||||
Fixed bug where the link/unlink buttons wouldn't get disabled once a link was created by the autolink plugin logic.
|
||||
Fixed bug where the border attribute was missing in the HTML5 schema.
|
||||
Fixed bug where the legacyoutput plugin would use inline styles for font color.
|
||||
Fixed bug where editing of anchor names wouldn't produce an undo level.
|
||||
Fixed bug where the table plugin would delete the last empty block element in the editor.
|
||||
Fixed bug where pasting table rows when they where selected would make it impossible to editor that table row.
|
||||
Fixed bug with pressing enter in IE while having a select list focused would produce a JS error.
|
||||
Fixed bug where it wasn't possible to merge table cells by selecting them and using merge from context menu.
|
||||
Removed summary from HTML5 table attributes and fixed so this and other deprecated table fields gets hidden in the table dialog.
|
||||
Version 3.5.1.1 (2012-05-25)
|
||||
Fixed bug with control creation where plugin specific controls didn't work as expected.
|
||||
Version 3.5.1 (2012-05-25)
|
||||
Added new onBeforeAdd event to UndoManager patch contributed by Dan Rumney.
|
||||
Added support for overriding the theme rendering logic by using a custom function.
|
||||
Fixed bug where links wasn't automatically created by the autolink plugin on old IE versions when pressing enter in BR mode.
|
||||
Fixed bug where enter on older IE versions wouldn't produce a new paragraph if the previous sibling paragraph was empty.
|
||||
Fixed bug where toString on a faked DOM range on older IE versions wouldn't return a proper string.
|
||||
Fixed bug where named anchors wouldn't work properly when schema was set to HTML5.
|
||||
Fixed bug where HTML5 datalist options wasn't correctly parsed or indented.
|
||||
Fixed bug where linking would add anchors around block elements when the HTML5 schema was used.
|
||||
Fixed issue where the autolink plugin wouldn't properly handle mailto:user@domain.com.
|
||||
Optimized initialization and reduced rendering flicker by hiding the target element while initializing.
|
||||
Version 3.5.0.1 (2012-05-10)
|
||||
Fixed bug where selection normalization logic would break the selections of parent elements using the element path.
|
||||
Fixed bug where the autolink plugin would include trailing dots in domain names in the link creation.
|
||||
Fixed bug where the autolink plugin would produce an error on older IE versions when pressing enter.
|
||||
Fixed bug where old IE versions would throw an error during initialization when the editor was placed in an size restricted div.
|
||||
Version 3.5 (2012-05-03)
|
||||
Fixed menu rendering issue if the document was in rtl mode.
|
||||
Fixed bug where the hide function would throw an error about a missing variable.
|
||||
Fixed bug where autolink wouldn't convert URLs when hitting enter on IE due to the new enter key logic.
|
||||
Fixed bug where formatting using shortcuts like ctrl+b wouldn't work properly the first time.
|
||||
Fixed bug where selection.setContent after a formatter call wouldn't generate formatted contents.
|
||||
Fixed bug where whitespace would be removed before/after invalid_elements when they where removed.
|
||||
Fixed bug where updating styles using the theme image dialog in non inline mode on IE9 would produce errors.
|
||||
Fixed bug where IE 8 would produce an error when using the contextmenu plugin.
|
||||
Fixed bug where delete/backspace could remove contents of noneditable elements.
|
||||
Fixed so background color in style preview gets computed from body element if the current style element is transparent.
|
||||
Version 3.5b3 (2012-03-29)
|
||||
Added cancel button to colour picker dialog.
|
||||
Added figure and figcaption to the html5 visualblocks plugin.
|
||||
Added default alignment options for the figure element.
|
||||
Fixed bug where empty inline elements within block elements would sometimes produce a br child element.
|
||||
Fixed bug where urls pointing to the same domain as the current one would cause undefined errors. Patch contributed by Paul Giberson.
|
||||
Fixed bug where enter inside an editable element inside an non editable element would split the element.
|
||||
Fixed bug where cut/copy/paste of noneditable elements didn't work.
|
||||
Fixed bug where backspace would sometimes produce font elements on WebKit.
|
||||
Fixed bug where WebKit would produce spans out of various inline elements when using backspace.
|
||||
Fixed bug where IE9 wouldn't properly update image styles when images where resized.
|
||||
Fixed bug where drag/drop of noneditable elements didn't work correctly.
|
||||
Fixed bug where applying formatting to all contents wouldn't work correctly when an end point was inside an empty bock. Patch contributed by Jose Luiz.
|
||||
Fixed bug where IE10 removed the scopeName from the DOM element interface and there for it produced an undefined string in element path.
|
||||
Fixed bug where the caret would be placed at an incorrect location if you applied block formatting while having the caret at the end of the block.
|
||||
Fixed bug where applying column changes using the cell dialog would only update the first column. Patch contributed by krzyko.
|
||||
Fixed bug where the visualblocks plugin would force editor focus if it was turned on by default.
|
||||
Fixed bug where the tabfocus plugin would tab to iframes these are now ignored.
|
||||
Fixed bug where format drop down list wouldn't show the currently active format for a parent element.
|
||||
Fixed bug where paste of plain text in IE 9 would remove the new line characters from text.
|
||||
Fixed bug where the menu buttons/split button menus wouldn't be opened at the right location on older IE versions.
|
||||
Fixed bug where Gecko browsers wouldn't properly display the right format when having the selection as specific places.
|
||||
Fixed bug where shift+enter inside the body when having forced_root_blocks set to false would throw an error.
|
||||
Fixed bug where the jQuery plugin would break the attr method of jQuery 1.7.2. Patch contributed by Markus Kemmerling.
|
||||
Fixed so options like content_css accepts and array as well as a comma separated string as input.
|
||||
Restructured the internal logic to make it more separate from Editor.js.
|
||||
Updated the Sizzle engine to the latest version.
|
||||
Version 3.5b2 (2012-03-15)
|
||||
Rewrote the enter key logic to normalize browser behavior.
|
||||
Fixed so enter within PRE elements produces a BR and shift+enter breaks/end the PRE. Can be disabled using the br_in_pre option.
|
||||
Fixed bug where the selection wouldn't be correct after applying formatting and having the caret at the end of the new format node.
|
||||
Fixed bug where the noneditable plugin would process contents on raw input calls for example on undo/redo calls.
|
||||
Fixed bug where WebKit could produce an exception when a bookmark was requested when there wasn't a proper selection.
|
||||
Fixed bug where WebKit would fail to open the image dialog since it would be returning false for a class name instead of a string.
|
||||
Fixed so alignment and indentation works properly when forced_root_blocks is set to false. It will produce a DIV by default.
|
||||
Version 3.5b1 (2012-03-08)
|
||||
Added new event class that is faster and enables support for faking events.
|
||||
Added new self_closing_elements, short_ended_elements, boolean_attributes, non_empty_elements and block_elements options to control the HTML Schema.
|
||||
Added new schema option and support for the HTML5 schema.
|
||||
Added new visualblocks plugin that shows html5 blocks with visual borders.
|
||||
Added new types and selector options to make it easier to create editor instances with different configs.
|
||||
Added new preview of formatting options in various listboxes.
|
||||
Added new preview_styles option that enables control over what gets previewed.
|
||||
Fixed bug where content css would be loaded twice into iframe.
|
||||
Fixed bug where start elements with only whitespace in the attribute part wouldn't be correctly parsed.
|
||||
Fixed bug where the advlink dialog would produce an error about the addSelectAccessibility function not being defined.
|
||||
Fixed bug where the caret would be placed at an incorrect position if span was removed by the invalid_elements setting.
|
||||
Fixed bug where elements inside a white space preserve element like pre didn't inherit the behavior while parsing.
|
||||
Version 3.4.9 (2012-02-23)
|
||||
Added settings to wordcount plugin to configure update rate and checking wordcount on backspace and delete using wordcount_update_rate and wordcount_update_on_delete.
|
||||
Fixed bug in Webkit and IE where deleting empty paragraphs would remove entire editor contents.
|
||||
Fixed bug where pressing enter on end of list item with a heading would create a new item with heading.
|
||||
Fixed edit css style dialog text-decoration none checkbox so it disables other text-decoration options when enabled.
|
||||
Fixed bug in Gecko where undo wasn't added when focus was lost.
|
||||
Fixed bug in Gecko where shift-enter in table cell ending with BR doesn't move caret to new line.
|
||||
Fixed bug where right-click on formatted text in IE selected the entire line.
|
||||
Fixed bug where text ending with space could not be unformatted in IE.
|
||||
Fixed bug where caret formatting would be removed when moving the caret when a selector expression was used.
|
||||
Fixed bug where formatting would be applied to the body element when all contents where selected and format had both inline and selector parts.
|
||||
Fixed bug where the media plugin would throw errors if you had iframe set as an invalid element in config.
|
||||
Fixed bug where the caret would be placed at the top of the document if you inserted a table and undo:ed that operation. Patch contributed by Wesley Walser.
|
||||
Fixed bug where content css files where loaded twice into the iframe.
|
||||
Fixed so elements with comments would be trated as non empty elements. Patch contributed by Arjan Scherpenisse.
|
||||
Version 3.4.8 (2012-02-02)
|
||||
Fixed bug in IE where selected text ending with space cannot be formatted then formatted again to get original text.
|
||||
Fixed bug in IE where images larger than editor area were being deselected when toolbar buttons are clicked.
|
||||
Fixed bug where wrong text align buttons are active when multiple block elements are selected.
|
||||
Fixed bug where selected link not showing in target field of link dialog in some selection cases.
|
||||
Use settings for remove_trailing_br so this can be turned off instead of hard coding the value.
|
||||
Fixed bug in IE where the media plugin displayed null text when some values aren't filled in.
|
||||
Added API method 'onSetAttrib' that fires when the attribute value on a node changes.
|
||||
Fix font size dropdown value not being updated when text already has a font size in the advanced template.
|
||||
Fixed bug in IE where IE doesn't use ARIA attributes properly on options - causing labels to be read out 2 times.
|
||||
Fixed bug where caret cannot be placed after table if table is at end of document in IE.
|
||||
Fixed bug where adding range isn't always successful so we need to check range count otherwise an exception can occur.
|
||||
Added spacebar onclick handler to toolbar buttons to ensure that the accessibility behaviour works correctly.
|
||||
Fixed bug where a stranded bullet point would get created in WebKit.
|
||||
Fixed bug where selecting text in a blockquote and pressing backspace toggles the style.
|
||||
Fixed bug where pressing enter from a heading in IE, the resulting P tag below it shares the style property.
|
||||
Fix white space in between spans from being deleted.
|
||||
Fixed bug where scrollbars where visible in the character map dialog on Gecko.
|
||||
Fixed issue with missing translation for one of the emoticons.
|
||||
Fixed bug where dots in id:s where causing problems. Patch provided by Abhishek Dev.
|
||||
Fixed bug where urls with an at sign in the path wouldn't be parsed correctly. Patch contributed by Jason Grout.
|
||||
Fixed bug where Opera would remove the first character of a inline formatted word if you pressed backspace.
|
||||
Fixed bugs with the autoresize plugin on various browsers and removed the need for the throbber.
|
||||
Fixed performance issue where the contextmenu plugin would try to remove the menu even if it was removed. Patch contributed by mhu.
|
||||
Version 3.4.7 (2011-11-03)
|
||||
Modified the caret formatting behavior to word similar to common desktop wordprocessors like Word or Libre Office.
|
||||
Fixed bug in Webkit - Cursor positioning does not work vertically within a table cell with multiple lines of text.
|
||||
Fixed bug in IE where Inserting a table in IE8 places cursor in the second cell of the first row.
|
||||
Fixed bug in IE where editor in a frame doesn't give focus to the toolbar using ALT-F10.
|
||||
Fix for webkit and gecko so that deleting bullet from start of list outdents inner list items and moves first item into paragraph.
|
||||
Fix new list items in IE8 not displayed on a new line when list contains nested list items.
|
||||
Clear formatting in table cell breaks the cell.
|
||||
Made media type list localisable.
|
||||
Fix out of memory error when using prototype in media dialog.
|
||||
Fixed bug where could not add a space in the middle of a th cell.
|
||||
Fixed bug where adding a bullet between two existing bullets adds an extra one
|
||||
Fixed bug where trying to insert a new entry midway through a bulleted list fails dismally when the next entry is tabbed in.
|
||||
Fixed bug where pressing enter on an empty list item does not outdent properly in FF
|
||||
Fixed bug where adding a heading after a list item in a table cell changes all styles in that cell
|
||||
Fixed bug where hitting enter to exit from a bullet list moves cursor to the top of the page in Firefox.
|
||||
Fixed bug where pressing backspace would not delete HRs in Firefox and IE when next to an empty paragraph.
|
||||
Fixed bug where deleting part of the link text can cause a link with no destination to be saved.
|
||||
Fixed bug where css style border widths wasn't handled correctly in table dialog.
|
||||
Fixed bug where parsing invalid html contents on IE or WebKit could produce an infinite loop.
|
||||
Fixed bug where scripts with custom script types wasn't properly passed though the editor.
|
||||
Fixed issue where some Japanese kanji characters wasn't properly entity encoded when numeric entity mode was enabled.
|
||||
Made emoticons dialog use the keyboard naviation.
|
||||
Added navigation instructions to the symbols dialog.
|
||||
Added ability to set default values for the media plugin.
|
||||
Added new font_size_legacy_values option for converting old font element sizes to span with font-size properties.
|
||||
Fixed bug where the symbols dialog was not accessible.
|
||||
Added quirk for IE ensuring that the body of the document containing tinyMCE has a role="application" for accessibility.
|
||||
Fixed bug where the advanced color picker wasn't working properly on FF 7.
|
||||
Fixed issue where the advanced color picker was producing uppercase hex codes.
|
||||
Fixed bug where IE 8 could throw exceptions if the contents contained resizable content elements.
|
||||
Fixed bug where caret formatting wouldn't be correctly applied to previous sibling on WebKit.
|
||||
Fixed bug where the select boxes for font size/family would loose it's value on WebKit due to recent iOS fixes.
|
||||
Version 3.4.6 (2011-09-29)
|
||||
Fixed bug where list items were being created for empty divs.
|
||||
Added support in Media plugin for audio media using the embed tag
|
||||
Fixed accessibility bugs in WebKit and IE8 where toolbar items were not being read.
|
||||
Added new use_accessible_selects option to ensure accessible list boxes are used in all browsers (custom widget in firefox native on other browsers)
|
||||
Fixed bug where classid attribute was not being checked from embed objects.
|
||||
Fixed bug in jsrobot tests with intermittently failing.
|
||||
Fixed bug where anchors wasn't updated properly if you edited them using IE 8.
|
||||
Fixed bug where input method on WebKit on Mac OS X would fail to initialize when sometimes focusing the editor.
|
||||
Fixed bug where it wasn't possible to select HR elements on WebKit by simply clicking on them.
|
||||
Fixed bug where the media plugin wouldn't work on IE9 when not using the inlinepopups plugin.
|
||||
Fixed bug where hspace,vspace,align and bgcolor would be removed from object elements in the media plugin.
|
||||
Fixed bug where the new youtube format wouldn't be properly parsed by the media plugin.
|
||||
Fixed bug where the style attribute of layers wasn't properly updated on IE and Gecko.
|
||||
Fixed bug where editing contents in a layer would fail on Gecko since contentEditable doesn't inherit properly.
|
||||
Fixed bug where IE 6/7 would produce JS errors when serializing contents containing layers.
|
||||
Version 3.4.5 (2011-09-06)
|
||||
Fixed accessibility bug in WebKit where the right and left arrow keys would update native list boxes.
|
||||
Added new whitespace_elements option to enable users to specify specific elements where the whitespace is preserved.
|
||||
Added new merge_siblings option to formats. This option makes it possible to disable the auto merging of siblings when applying formats.
|
||||
Fixed bug in IE where trailing comma in paste plugin would cause plugin to not run correctly.
|
||||
Fixed bug in WebKit where console messages would be logged when deleting an empty document.
|
||||
Fixed bug in IE8 where caret positioned is on list item instead of paragraph when outdent splits the list
|
||||
Fixed bug with image dialogs not inserting an image if id was omitted from valid_elements.
|
||||
Fixed bug where the selection normalization logic wouldn't properly handle image elements in specific config cases.
|
||||
Fixed bug where the map elements coords attribute would be messed up by IE when serializing the DOM.
|
||||
Fixed bug where IE wouldn't properly handle custom elements when the contents was serialized.
|
||||
Fixed bug where you couldn't move the caret in Gecko if you focused the editor using the API or a UI control.
|
||||
Fixed bug where adjacent links would get merged on IE due to bugs in their link command.
|
||||
Fixed bug where the color split buttons would loose the selection on IE if the editor was placed in a frame/iframe.
|
||||
Fixed bug where floated images in WebKit wouldn't get properly linked.
|
||||
Fixed bug where the fullscreen mode in a separate window wasn't forced into IE9+ standards mode.
|
||||
Fixed bug where pressing enter in an empty editor on WebKit could produce DIV elements instead of P.
|
||||
Fixed bug where spans would get removed incorrectly when merging two blocks on backspace/delete on WebKit.
|
||||
Fixed bug where the editor contents wouldn't be completely removed on backspace/delete on WebKit.
|
||||
Fixed bug where the fullpage plugin wouldn't properly render style elements in the head on IE 6/7.
|
||||
Fixed bug where the nonbreaking_force_tab option in the nonbreaking plugin wouldn't work on Gecko/WebKit.
|
||||
Fixed bug where the isDirty state would become true on non IE browsers if there was an table at the end of the contents.
|
||||
Fixed bug where entities wasn't properly encoded on WebKit when pasting text as plain text.
|
||||
Fixed bug where empty editors would produce an exception of valid_elements didn't include body and forced_root_blocks where disabled.
|
||||
Fixed bug where the fullscreen mode wouldn't retain the header/footer in the fullpage plugin.
|
||||
Fixed issue where the plaintext_mode and plaintext_mode_sticky language keys where swapped.
|
||||
Version 3.4.4 (2011-08-04)
|
||||
Added new html5 audio support. Patch contributed by Ronald M. Clifford.
|
||||
Added mute option for video elements and preload options for video/audio patch contributed by Dmitry Kalinkin.
|
||||
Fixed selection to match visual selection before applying formatting changes.
|
||||
Fixed browser specific bugs in lists for WebKit and IE.
|
||||
Fixed bug where IE would scroll the window if you closed an inline dialog that was larger than the viewport. Patch by Laurence Keijmel.
|
||||
Fixed bug where pasting contents near a span element could remove parts of that span. Patch contributed by Wesley Walser.
|
||||
Fixed bug where formatting change would be lost after pressing enter.
|
||||
Fixed bug in WebKit where deleting across blocks would add extra styles.
|
||||
Fixed bug where moving cursor vertically in tables in WebKit wasn't working.
|
||||
Fixed bug in IE where deleting would cause error in console.
|
||||
Fixed bug where the formatter was not applying formats across list elements.
|
||||
Fixed bug where the wordcount plugin would try and update the wordcount if tinymce had been destroyed.
|
||||
Fixed bug where tabfocus plugin would attempt to focus elements not displayed when their parent element was hidden.
|
||||
Fixed bug where the contentEditable state would sometimes be removed if you deleted contents in Gecko.
|
||||
Fixed bug where inserting contents using mceInsertContent would fail if "span" was disabled in valid_elements.
|
||||
Fixed bug where initialization might fail if some resource on gecko wouldn't load properly and fire the onload event.
|
||||
Fixed bug where ctrl+7/8/9 keys wouldn't properly add the specific formats associated with them.
|
||||
Fixed bug where the HTML tags wasn't properly closed in the style plugins properties dialog.
|
||||
Fixed bug where the list plugin would produce an exception if the user tried to delete an element at the very first location.
|
||||
Version 3.4.3.2 (2011-06-30)
|
||||
Fixed bug where deleting all of a paragraph inside a table cell would behave badly in webkit.
|
||||
Fixed bugs in tests in firefox5 and WebKit.
|
||||
Fixed bug where selection of table cells would produce an exception on Gecko.
|
||||
Fixed bug where the caret wasn't properly rendered on Gecko when the editor was hidden.
|
||||
Fixed bug where pasting plain text into WebKit would produce a pre element it will now produce more semantic markup.
|
||||
Fixed bug where selecting list type formats using the advlist plugin on IE8 would loose editor selection.
|
||||
Fixed bug where forced root blocks logic wouldn't properly pad elements created if they contained data attributes.
|
||||
Fixed bug where it would remove all contents of the editor if you inserted an image when not having a caret in the document.
|
||||
Fixed bug where the YUI compressor wouldn't properly encode strings with only a quote in them.
|
||||
Fixed bug where WebKit on iOS5 wouldn't call nodeChanged when the selection was changed.
|
||||
Fixed bug where mceFocus command wouldn't work properly on Gecko since it didn't focus the body element.
|
||||
Fixed performance issue with the noneditable plugin where it would enable/disable controls to often.
|
||||
Version 3.4.3.1 (2011-06-16)
|
||||
Fixed bug where listboxes were not being handled correctly by JAWS in firefox with the o2k7 skin.
|
||||
Fixed bug where custom buttons were not being rendered correctly when in high contrast mode.
|
||||
Added support for iOS 5 that now supporting contentEditable in it's latest beta.
|
||||
Fixed bug where urls in style attributes with a _ character followed by a number would cause incorrect output.
|
||||
Fixed bug where custom_elements option wasn't working properly on IE browsers.
|
||||
Fixed bug where custom_elements marked as block elements wouldn't get correctly treated as block elements.
|
||||
Fixed bug where attributes with </> wasn't properly encoded as XML entities.
|
||||
Version 3.4.3 (2011-06-09)
|
||||
Fixed bug where deleting backwards before an image into a list would put the cursor in the wrong location.
|
||||
Fixed bug where styles plugin would not apply styles across multiple selected block elements correctly.
|
||||
Fixed bug where cursor would jump to start of document when selection contained empty table cells in IE8.
|
||||
Fixed bug where applied styles wouldn't be kept if you pressed enter twice to produce two paragraphs.
|
||||
Fixed bug where a ghost like caret would appear on Gecko when pressing enter while having a text color applied.
|
||||
Fixed bug where IE would produce absolute urls if you inserted a image/link and reloaded the page.
|
||||
Fixed bug where applying a heading style to a list item would cascade style to children list items.
|
||||
Fixed bug where Editor loses focus when backspacing and changing styles in WebKit.
|
||||
Fixed bug where exception was thrown in tinymce.util.URI when parsing a relative URI and no base_uri setting was provided.
|
||||
Fixed bug where alt-f10 was not always giving focus to the toolbar on Safari.
|
||||
Added new 'allow_html_in_named_anchor' option to allow html to occur within a named anchor tag. Use at own risk.
|
||||
Added plugin dependency support. Will autoload plugins specified as a dependency if they haven't been loaded.
|
||||
Fixed bug where the autolink plugin didn't work with non-English keyboards when pressing ).
|
||||
Added possibility to change properties of all table cells in a column.
|
||||
Added external_image_list option to get images list from user-defined variable or function.
|
||||
Fixed bug where the autoresize plugin wouldn't reduce the editors height on Chrome.
|
||||
Fixed bug where table size inputs were to small for values with size units.
|
||||
Fixed bug where table cell/row size input values were not validated.
|
||||
Fixed bug where menu item line-height would be set to wrong value by external styles.
|
||||
Fixed bug where hasUndo() would return wrong answer.
|
||||
Fixed bug where page title would be set to undefined by fullpage plugin.
|
||||
Fixed bug where HTML5 video properties were not updated in embedded media settings.
|
||||
Fixed bug where HTML comment on the first line would cause an error.
|
||||
Fixed bug where spellchecker menu was positioned incorrectly on IE.
|
||||
Fixed bug where breaking out of list elements on WebKit would produce a DIV instead of P after the list.
|
||||
Fixed bug where pasting from Word in IE9 would add extra BR elements when text was word wrapped.
|
||||
Fixed bug where numeric entities with leading zeros would produce incorrect decoding.
|
||||
Fixed bug where hexadecimal entities wasn't properly decoded.
|
||||
Fixed bug where bookmarks wasn't properly stored/restored on undo/redo.
|
||||
Fixed bug where the mceInsertCommand didn't retain the values of links if they contained non url contents.
|
||||
Fixed bug where the valid_styles option wouldn't be properly used on styles for specific elements.
|
||||
Fixed so contentEditable is used for the body of the editor if it's supported.
|
||||
Fixed so trailing BR elements gets removed even when forced_root_blocks option was set to false/null.
|
||||
Fixed performance issue with mceInsertCommand and inserting very simple contents.
|
||||
Fixed performance issue with older IE version and huge documents by optimizing the forced root blocks logic.
|
||||
Fixed performance issue with table plugin where it checked for selected cells to often.
|
||||
Fixed bug where creating a link on centered/floated image would produce an error on WebKit browsers.
|
||||
Fixed bug where Gecko would remove single paragraphs if there where contents before/after it.
|
||||
Fixed bug where the scrollbar would move up/down when pasting contents using the paste plugin.
|
||||
Version 3.4.2 (2011-04-07)
|
||||
Added new 'paste_text_sticky_default' option to paste plugin, enables you to set the default state for paste as plain text.
|
||||
Added new autoresize_bottom_margin option to autoresize plugin that enables you to add an extra margin at the bottom. Patch contributed by Andrew Ozz.
|
||||
Rewritten the fullpage plugin to handle style contents better and have a more normalized behavior across browsers.
|
||||
Fixed bug where contents inserted with mceInsertContent wasn't parsed using the default dom parser.
|
||||
Fixed bug where blocks containing a single anchor element would be treated as empty.
|
||||
Fixed bug where merging of table cells on IE 6, 7 wouldn't look correctly until the contents was refreshed.
|
||||
Fixed bug where context menu wouldn't work properly on Safari since it was passing out the ctrl key as pressed.
|
||||
Fixed bug where image border color/style values were overwritten by advimage plugin.
|
||||
Fixed bug where setting border in advimage plugin would throw error in IE.
|
||||
Fixed bug where empty anchors list in link settings wasn't hidden.
|
||||
Fixed bug where xhtmlextras popups were missing localized popup-size parameters.
|
||||
Fixed bug where the context menu wouldn't select images on WebKit browsers.
|
||||
Fixed bug where paste plugin wouldn't properly extract the contents on WebKit due to recent changes in browser behavior.
|
||||
Fixed bug where focus of the editor would get on control contents on IE lost due to a bug in the ColorSplitButton control.
|
||||
Fixed bug where contextmenu wasn't disabled on noneditable elements.
|
||||
Fixed bug where getStyle function would trigger error when called on element without style property.
|
||||
Fixed bug where editor fail to load if Javascript Compressor was used.
|
||||
Fixed bug where list-style-type=lower-greek would produce errors in IE<8.
|
||||
Fixed bug where spellchecker plugin would produce errors on IE6-7.
|
||||
Fixed bug where theme_advanced_containers configuration option causes error.
|
||||
Fixed bug where the mceReplaceContent command would produce an error since it didn't correctly handle a return value.
|
||||
Fixed bug where you couldn't enter float point values for em in dialog input fields since it wouldn't be considered a valid size.
|
||||
Fixed bug in xhtmlxtras plugin where it wasn't possible to remove some attributes in the attributes dialog.
|
||||
Version 3.4.1 (2011-03-24)
|
||||
Added significantly improved list handling via the new 'lists' plugin.
|
||||
Added 'autolink' plugin to enable automatically linking URLs. Similar to the behavior IE has by default.
|
||||
Added 'theme_advanced_show_current_color' setting to enable the forecolor and backcolor buttons to continuously show the current text color.
|
||||
Added 'contextmenu_never_use_native' setting to disable the ctrl-right-click showing the native browser context menu behaviour.
|
||||
Added 'paste_enable_default_filters' setting to enable the default paste filters to be disabled.
|
||||
Fixed bug where selection locations on undo/redo didn't work correctly on specific contents.
|
||||
Fixed bug where an exception would be trown on IE when loading TinyMCE inside an iframe.
|
||||
Fixed bug where some ascii numeric entities wasn't properly decoded.
|
||||
Fixed bug where some non western language codes wasn't properly decoded/encoded.
|
||||
Fixed bug where undo levels wasn't created when deleting contents on IE.
|
||||
Fixed bug where the initial undo levels bookmark wasn't updated correctly.
|
||||
Fixed bug where search/replace wouldn't be scoped to editor instances on IE8.
|
||||
Fixed bug where IE9 would produce two br elements after block elements when pasting.
|
||||
Fixed bug where IE would place the caret at an incorrect position after a paste operation.
|
||||
Fixed bug where a paste operation using the keyboard would add an extra undo level.
|
||||
Fixed bug where some attributes/elements wasn't correctly filtered when invalid contents was inserted.
|
||||
Fixed bug where the table plugin couldn't correctly handle invalid table structures.
|
||||
Fixed bug where charset and title of the page were handled incorrectly by the fullpage plugin.
|
||||
Fixed bug where toggle states on some of the list boxes didn't update correctly.
|
||||
Fixed bug where sub/sub wouldn't work correctly when done as a caret action in Chrome 10.
|
||||
Fixed bug where the constrain proportions checkbox wouldn't work in the media plugin.
|
||||
Fixed bug where block elements containing trailing br elements wouldn't treated properly if they where invalid.
|
||||
Fixed bug where the color picker dialog wouldn't be rendered correctly when using the o2k7 theme.
|
||||
Fixed bug where setting border=0 using advimage plugin invalid style attribute content was created in Chrome.
|
||||
Fixed bug with references to non-existing images in css of fullpage plugin.
|
||||
Fixed bug where item could be unselected in spellchecker's language selector.
|
||||
Fixed bug where some mispelled words could be not highlighted using spellchecker plugin.
|
||||
Fixed bug where spellchecking would merge some words on IE.
|
||||
Fixed bug where spellchecker context menu was not always positioned correctly.
|
||||
Fixed bug with empty anchors list in advlink popup when Invisible Elements feature was disabled.
|
||||
Fixed bug where older IE versions wouldn't properly handle some elements if they where placed at the top of editor contents.
|
||||
Fixed bug where selecting the whole table would enable table tools for cells and rows.
|
||||
Fixed bug where it wasn't possible to replace selected contents on IE when pasting using the paste plugin.
|
||||
Fixed bug where setting text color in fullpage plugin doesn't work.
|
||||
Fixed bug where the state of checkboxes in media plugin wouldn't be set correctly.
|
||||
Fixed bug where black spade suit character was not included in special character selector.
|
||||
Fixed bug where setting invalid values for table cell size would throw an error in IE.
|
||||
Fixed bug where spellchecking would remove whitespace characters from PRE block in IE.
|
||||
Fixed bug where HR was inserted inside P elements instead of splitting them.
|
||||
Fixed bug where extra, empty span tags were added when using a format with both selector and inline modes.
|
||||
Fixed bug where bullet lists weren't always detected correctly.
|
||||
Fixed bug where deleting some paragraphs on IE would cause an exception.
|
||||
Fixed bug where the json encoder logic wouldn't properly encode \ characters.
|
||||
Fixed bug where the onChange event would be fired when the editor was first initialized.
|
||||
Fixed bug where mceSelected wouldn't be removed properly from output even if it's an internal class.
|
||||
Fixed issue with table background colors not being transparent. This improves compliance with users browser color preferences.
|
||||
Fixed issue where styles were not included when using the full page plugin.
|
||||
Fixed issue where drag/drop operations wasn't properly added to the undo levels.
|
||||
Fixed issue where colors wasn't correctly applied to elements with underline decoration.
|
||||
Fixed issue where deleting some paragraphs on IE would cause an exception.
|
||||
Version 3.4 (2011-03-10)
|
||||
Added accessibility example with various accessibility options contributed by Ephox.
|
||||
Fixed bug where attributes wasn't properly handled in the xhtmlxtras plugin.
|
||||
Fixed bug where the image.htm had some strange td artifacts probably due to auto merging.
|
||||
Fixed bug where the ToolbarGroup had an missing reference to this in it's destroy method.
|
||||
Fixed bug with the resizeBy function in the advanced theme where it was scaled by the wrong parent.
|
||||
Fixed bug where an exception would be thrown by the element if the page was served in xhtml mode.
|
||||
Fixed bug where mceInsertContent would throw an exception when page was served in xhtml mode.
|
||||
Fixed bug where you couldn't select a forground/background color when page was served in xhtml mode.
|
||||
Fixed bug where the editor would scroll to the toolbar when clicked due to a call to focus in ListBox.
|
||||
Fixed bug where pages with rtl dir wouldn't render split buttons correctly when using the o2k7 theme.
|
||||
Fixed bug where anchor elements with names wasn't properly collapsed as they where in 3.3.x.
|
||||
Fixed bug where WebKit wouldn't properly handle image selection if it was done left to right.
|
||||
Fixed bug where the formatter would align images when the selection range was collapsed.
|
||||
Fixed bug where the image button would be active when the selection range was collapsed.
|
||||
Fixed bug where the element_format option wasn't used by the new (X)HTML serializer logic.
|
||||
Fixed bug where the table cell/row dialogs would produce empty attributes.
|
||||
Fixed bug where the tfoot wouldn't be added to the top of the table.
|
||||
Fixed bug where the formatter would merge siblings with white space between them.
|
||||
Fixed bug where pasting headers and paragraphs would produce an extra paragraph.
|
||||
Fixed bug where the ColorSplitButton would throw an exception if you clicked out side a color.
|
||||
Fixed bug where IE9 wouldn't properly produce new paragraphs on enter if the current paragraph had formatting.
|
||||
Fixed bug where multiple BR elements at end of block elements where removed.
|
||||
Fixed bug where fullscreen plugin wouldn't correctly display the edit area on IE6 for long pages.
|
||||
Fixed bug where paste plugin wouldn't properly encode raw entities when pasting in plain text mode.
|
||||
Fixed bug where the search/replace plugin wouldn't work correctly on IE 9.
|
||||
Fixed so the drop menus doesn't get an outline border visible when focused, patch contributed by Ephox.
|
||||
Fixed so the values entered in the color picker are forced to hex values.
|
||||
Removed dialog workaround for IE 9 beta since the RC is now out and people should upgrade.
|
||||
Removed obsolete calls in various plugins to the mceBeginUndoLevel command.
|
||||
0
static/js/tinymce/examples/accessibility.html → dynastie/static/js/tinymce/examples/accessibility.html
Normal file → Executable file
0
static/js/tinymce/examples/css/content.css → dynastie/static/js/tinymce/examples/css/content.css
Normal file → Executable file
0
static/js/tinymce/examples/css/word.css → dynastie/static/js/tinymce/examples/css/word.css
Normal file → Executable file
0
static/js/tinymce/examples/custom_formats.html → dynastie/static/js/tinymce/examples/custom_formats.html
Normal file → Executable file
0
static/js/tinymce/examples/full.html → dynastie/static/js/tinymce/examples/full.html
Normal file → Executable file
0
static/js/tinymce/examples/index.html → dynastie/static/js/tinymce/examples/index.html
Normal file → Executable file
0
static/js/tinymce/examples/lists/image_list.js → dynastie/static/js/tinymce/examples/lists/image_list.js
Normal file → Executable file
0
static/js/tinymce/examples/lists/link_list.js → dynastie/static/js/tinymce/examples/lists/link_list.js
Normal file → Executable file
0
static/js/tinymce/examples/lists/media_list.js → dynastie/static/js/tinymce/examples/lists/media_list.js
Normal file → Executable file
4
static/js/tinymce/examples/lists/template_list.js → dynastie/static/js/tinymce/examples/lists/template_list.js
Normal file → Executable file
@@ -4,6 +4,6 @@
|
||||
|
||||
var tinyMCETemplateList = [
|
||||
// Name, URL, Description
|
||||
["Simple snippet", "templates/snippet1.htm", "Simple HTML snippet."],
|
||||
["Layout", "templates/layout1.htm", "HTML Layout."]
|
||||
["Simple snippet", "snippet1.htm", "Simple HTML snippet."],
|
||||
["Layout", "layout1.htm", "HTML Layout."]
|
||||
];
|
||||
0
static/js/tinymce/examples/media/logo.jpg → dynastie/static/js/tinymce/examples/media/logo.jpg
Normal file → Executable file
|
Before Width: | Height: | Size: 2.7 KiB After Width: | Height: | Size: 2.7 KiB |
0
static/js/tinymce/examples/media/logo_over.jpg → dynastie/static/js/tinymce/examples/media/logo_over.jpg
Normal file → Executable file
|
Before Width: | Height: | Size: 6.3 KiB After Width: | Height: | Size: 6.3 KiB |
0
static/js/tinymce/examples/media/sample.avi → dynastie/static/js/tinymce/examples/media/sample.avi
Normal file → Executable file
0
static/js/tinymce/examples/media/sample.dcr → dynastie/static/js/tinymce/examples/media/sample.dcr
Normal file → Executable file
0
static/js/tinymce/examples/media/sample.flv → dynastie/static/js/tinymce/examples/media/sample.flv
Normal file → Executable file
0
static/js/tinymce/examples/media/sample.mov → dynastie/static/js/tinymce/examples/media/sample.mov
Normal file → Executable file
0
static/js/tinymce/examples/media/sample.ram → dynastie/static/js/tinymce/examples/media/sample.ram
Normal file → Executable file
0
static/js/tinymce/examples/media/sample.rm → dynastie/static/js/tinymce/examples/media/sample.rm
Normal file → Executable file
0
static/js/tinymce/examples/media/sample.swf → dynastie/static/js/tinymce/examples/media/sample.swf
Normal file → Executable file
0
static/js/tinymce/examples/menu.html → dynastie/static/js/tinymce/examples/menu.html
Normal file → Executable file
0
static/js/tinymce/examples/simple.html → dynastie/static/js/tinymce/examples/simple.html
Normal file → Executable file
0
static/js/tinymce/examples/skins.html → dynastie/static/js/tinymce/examples/skins.html
Normal file → Executable file
0
static/js/tinymce/examples/templates/layout1.htm → dynastie/static/js/tinymce/examples/templates/layout1.htm
Normal file → Executable file
0
static/js/tinymce/examples/templates/snippet1.htm → dynastie/static/js/tinymce/examples/templates/snippet1.htm
Normal file → Executable file
0
static/js/tinymce/examples/word.html → dynastie/static/js/tinymce/examples/word.html
Normal file → Executable file
0
static/js/tinymce/jscripts/tiny_mce/langs/en.js → dynastie/static/js/tinymce/jscripts/tiny_mce/langs/en.js
vendored
Normal file → Executable file
2
static/js/tinymce/jscripts/tiny_mce/license.txt → dynastie/static/js/tinymce/jscripts/tiny_mce/license.txt
Normal file → Executable file
@@ -20,7 +20,7 @@ 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
|
||||
can use it too, but we suggest you first think carefuly 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.
|
||||
|
||||
0
static/js/tinymce/jscripts/tiny_mce/plugins/advhr/css/advhr.css → dynastie/static/js/tinymce/jscripts/tiny_mce/plugins/advhr/css/advhr.css
vendored
Normal file → Executable file
0
static/js/tinymce/jscripts/tiny_mce/plugins/advhr/editor_plugin.js → dynastie/static/js/tinymce/jscripts/tiny_mce/plugins/advhr/editor_plugin.js
vendored
Normal file → Executable file
0
static/js/tinymce/jscripts/tiny_mce/plugins/advhr/editor_plugin_src.js → dynastie/static/js/tinymce/jscripts/tiny_mce/plugins/advhr/editor_plugin_src.js
vendored
Normal file → Executable file
0
static/js/tinymce/jscripts/tiny_mce/plugins/advhr/js/rule.js → dynastie/static/js/tinymce/jscripts/tiny_mce/plugins/advhr/js/rule.js
vendored
Normal file → Executable file
0
static/js/tinymce/jscripts/tiny_mce/plugins/advhr/langs/en_dlg.js → dynastie/static/js/tinymce/jscripts/tiny_mce/plugins/advhr/langs/en_dlg.js
vendored
Normal file → Executable file
0
static/js/tinymce/jscripts/tiny_mce/plugins/advhr/rule.htm → dynastie/static/js/tinymce/jscripts/tiny_mce/plugins/advhr/rule.htm
vendored
Normal file → Executable file
0
static/js/tinymce/jscripts/tiny_mce/plugins/advimage/css/advimage.css → dynastie/static/js/tinymce/jscripts/tiny_mce/plugins/advimage/css/advimage.css
vendored
Normal file → Executable file
0
static/js/tinymce/jscripts/tiny_mce/plugins/advimage/editor_plugin.js → dynastie/static/js/tinymce/jscripts/tiny_mce/plugins/advimage/editor_plugin.js
vendored
Normal file → Executable file
0
static/js/tinymce/jscripts/tiny_mce/plugins/advimage/editor_plugin_src.js → dynastie/static/js/tinymce/jscripts/tiny_mce/plugins/advimage/editor_plugin_src.js
vendored
Normal file → Executable file
0
static/js/tinymce/jscripts/tiny_mce/plugins/advimage/image.htm → dynastie/static/js/tinymce/jscripts/tiny_mce/plugins/advimage/image.htm
vendored
Normal file → Executable file
0
static/js/tinymce/jscripts/tiny_mce/plugins/advimage/img/sample.gif → dynastie/static/js/tinymce/jscripts/tiny_mce/plugins/advimage/img/sample.gif
vendored
Normal file → Executable file
|
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.6 KiB |
8
static/js/tinymce/jscripts/tiny_mce/plugins/advimage/js/image.js → dynastie/static/js/tinymce/jscripts/tiny_mce/plugins/advimage/js/image.js
vendored
Normal file → Executable file
@@ -395,12 +395,14 @@ var ImageDialog = {
|
||||
if (v == '0')
|
||||
img.style.border = isIE ? '0' : '0 none none';
|
||||
else {
|
||||
if (b.length == 3 && b[isIE ? 2 : 1])
|
||||
bStyle = b[isIE ? 2 : 1];
|
||||
var isOldIE = tinymce.isIE && (!document.documentMode || document.documentMode < 9);
|
||||
|
||||
if (b.length == 3 && b[isOldIE ? 2 : 1])
|
||||
bStyle = b[isOldIE ? 2 : 1];
|
||||
else if (!bStyle || bStyle == 'none')
|
||||
bStyle = 'solid';
|
||||
if (b.length == 3 && b[isIE ? 0 : 2])
|
||||
bColor = b[isIE ? 0 : 2];
|
||||
bColor = b[isOldIE ? 0 : 2];
|
||||
else if (!bColor || bColor == 'none')
|
||||
bColor = 'black';
|
||||
img.style.border = v + 'px ' + bStyle + ' ' + bColor;
|
||||
0
static/js/tinymce/jscripts/tiny_mce/plugins/advimage/langs/en_dlg.js → dynastie/static/js/tinymce/jscripts/tiny_mce/plugins/advimage/langs/en_dlg.js
vendored
Normal file → Executable file
0
static/js/tinymce/jscripts/tiny_mce/plugins/advlink/css/advlink.css → dynastie/static/js/tinymce/jscripts/tiny_mce/plugins/advlink/css/advlink.css
vendored
Normal file → Executable file
0
static/js/tinymce/jscripts/tiny_mce/plugins/advlink/editor_plugin.js → dynastie/static/js/tinymce/jscripts/tiny_mce/plugins/advlink/editor_plugin.js
vendored
Normal file → Executable file
0
static/js/tinymce/jscripts/tiny_mce/plugins/advlink/editor_plugin_src.js → dynastie/static/js/tinymce/jscripts/tiny_mce/plugins/advlink/editor_plugin_src.js
vendored
Normal file → Executable file
10
static/js/tinymce/jscripts/tiny_mce/plugins/advlink/js/advlink.js → dynastie/static/js/tinymce/jscripts/tiny_mce/plugins/advlink/js/advlink.js
vendored
Normal file → Executable file
@@ -64,13 +64,14 @@ function init() {
|
||||
if (elm != null && elm.nodeName == "A")
|
||||
action = "update";
|
||||
|
||||
formObj.insert.value = tinyMCEPopup.getLang(action, 'Insert', true);
|
||||
formObj.insert.value = tinyMCEPopup.getLang(action, 'Insert', true);
|
||||
|
||||
setPopupControlsDisabled(true);
|
||||
|
||||
if (action == "update") {
|
||||
var href = inst.dom.getAttrib(elm, 'href');
|
||||
var onclick = inst.dom.getAttrib(elm, 'onclick');
|
||||
var linkTarget = inst.dom.getAttrib(elm, 'target') ? inst.dom.getAttrib(elm, 'target') : "_self";
|
||||
|
||||
// Setup form data
|
||||
setFormValue('href', href);
|
||||
@@ -98,7 +99,7 @@ function init() {
|
||||
setFormValue('onkeypress', inst.dom.getAttrib(elm, 'onkeypress'));
|
||||
setFormValue('onkeydown', inst.dom.getAttrib(elm, 'onkeydown'));
|
||||
setFormValue('onkeyup', inst.dom.getAttrib(elm, 'onkeyup'));
|
||||
setFormValue('target', inst.dom.getAttrib(elm, 'target'));
|
||||
setFormValue('target', linkTarget);
|
||||
setFormValue('classes', inst.dom.getAttrib(elm, 'class'));
|
||||
|
||||
// Parse onclick data
|
||||
@@ -119,7 +120,7 @@ function init() {
|
||||
addClassesToList('classlist', 'advlink_styles');
|
||||
|
||||
selectByValue(formObj, 'classlist', inst.dom.getAttrib(elm, 'class'), true);
|
||||
selectByValue(formObj, 'targetlist', inst.dom.getAttrib(elm, 'target'), true);
|
||||
selectByValue(formObj, 'targetlist', linkTarget, true);
|
||||
} else
|
||||
addClassesToList('classlist', 'advlink_styles');
|
||||
}
|
||||
@@ -377,6 +378,9 @@ function getAnchorListHTML(id, target) {
|
||||
for (i=0, len=nodes.length; i<len; i++) {
|
||||
if ((name = ed.dom.getAttrib(nodes[i], "name")) != "")
|
||||
html += '<option value="#' + name + '">' + name + '</option>';
|
||||
|
||||
if ((name = nodes[i].id) != "" && !nodes[i].href)
|
||||
html += '<option value="#' + name + '">' + name + '</option>';
|
||||
}
|
||||
|
||||
if (html == "")
|
||||
0
static/js/tinymce/jscripts/tiny_mce/plugins/advlink/langs/en_dlg.js → dynastie/static/js/tinymce/jscripts/tiny_mce/plugins/advlink/langs/en_dlg.js
vendored
Normal file → Executable file
0
static/js/tinymce/jscripts/tiny_mce/plugins/advlink/link.htm → dynastie/static/js/tinymce/jscripts/tiny_mce/plugins/advlink/link.htm
vendored
Normal file → Executable file
0
static/js/tinymce/jscripts/tiny_mce/plugins/advlist/editor_plugin.js → dynastie/static/js/tinymce/jscripts/tiny_mce/plugins/advlist/editor_plugin.js
vendored
Normal file → Executable file
0
static/js/tinymce/jscripts/tiny_mce/plugins/advlist/editor_plugin_src.js → dynastie/static/js/tinymce/jscripts/tiny_mce/plugins/advlist/editor_plugin_src.js
vendored
Normal file → Executable file
1
dynastie/static/js/tinymce/jscripts/tiny_mce/plugins/autolink/editor_plugin.js
vendored
Executable file
@@ -0,0 +1 @@
|
||||
(function(){tinymce.create("tinymce.plugins.AutolinkPlugin",{init:function(a,b){var c=this;a.onKeyDown.addToTop(function(d,f){if(f.keyCode==13){return c.handleEnter(d)}});if(tinyMCE.isIE){return}a.onKeyPress.add(function(d,f){if(f.which==41){return c.handleEclipse(d)}});a.onKeyUp.add(function(d,f){if(f.keyCode==32){return c.handleSpacebar(d)}})},handleEclipse:function(a){this.parseCurrentLine(a,-1,"(",true)},handleSpacebar:function(a){this.parseCurrentLine(a,0,"",true)},handleEnter:function(a){this.parseCurrentLine(a,-1,"",false)},parseCurrentLine:function(i,d,b,g){var a,f,c,n,k,m,h,e,j;a=i.selection.getRng(true).cloneRange();if(a.startOffset<5){e=a.endContainer.previousSibling;if(e==null){if(a.endContainer.firstChild==null||a.endContainer.firstChild.nextSibling==null){return}e=a.endContainer.firstChild.nextSibling}j=e.length;a.setStart(e,j);a.setEnd(e,j);if(a.endOffset<5){return}f=a.endOffset;n=e}else{n=a.endContainer;if(n.nodeType!=3&&n.firstChild){while(n.nodeType!=3&&n.firstChild){n=n.firstChild}if(n.nodeType==3){a.setStart(n,0);a.setEnd(n,n.nodeValue.length)}}if(a.endOffset==1){f=2}else{f=a.endOffset-1-d}}c=f;do{a.setStart(n,f>=2?f-2:0);a.setEnd(n,f>=1?f-1:0);f-=1}while(a.toString()!=" "&&a.toString()!=""&&a.toString().charCodeAt(0)!=160&&(f-2)>=0&&a.toString()!=b);if(a.toString()==b||a.toString().charCodeAt(0)==160){a.setStart(n,f);a.setEnd(n,c);f+=1}else{if(a.startOffset==0){a.setStart(n,0);a.setEnd(n,c)}else{a.setStart(n,f);a.setEnd(n,c)}}var m=a.toString();if(m.charAt(m.length-1)=="."){a.setEnd(n,c-1)}m=a.toString();h=m.match(/^(https?:\/\/|ssh:\/\/|ftp:\/\/|file:\/|www\.|(?:mailto:)?[A-Z0-9._%+-]+@)(.+)$/i);if(h){if(h[1]=="www."){h[1]="http://www."}else{if(/@$/.test(h[1])&&!/^mailto:/.test(h[1])){h[1]="mailto:"+h[1]}}k=i.selection.getBookmark();i.selection.setRng(a);tinyMCE.execCommand("createlink",false,h[1]+h[2]);i.selection.moveToBookmark(k);i.nodeChanged();if(tinyMCE.isWebKit){i.selection.collapse(false);var l=Math.min(n.length,c+1);a.setStart(n,l);a.setEnd(n,l);i.selection.setRng(a)}}},getInfo:function(){return{longname:"Autolink",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/autolink",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("autolink",tinymce.plugins.AutolinkPlugin)})();
|
||||
36
static/js/tinymce/jscripts/tiny_mce/plugins/autolink/editor_plugin_src.js → dynastie/static/js/tinymce/jscripts/tiny_mce/plugins/autolink/editor_plugin_src.js
vendored
Normal file → Executable file
@@ -22,15 +22,15 @@
|
||||
init : function(ed, url) {
|
||||
var t = this;
|
||||
|
||||
// Internet Explorer has built-in automatic linking
|
||||
if (tinyMCE.isIE)
|
||||
return;
|
||||
|
||||
// Add a key down handler
|
||||
ed.onKeyDown.add(function(ed, e) {
|
||||
ed.onKeyDown.addToTop(function(ed, e) {
|
||||
if (e.keyCode == 13)
|
||||
return t.handleEnter(ed);
|
||||
});
|
||||
});
|
||||
|
||||
// Internet Explorer has built-in automatic linking for most cases
|
||||
if (tinyMCE.isIE)
|
||||
return;
|
||||
|
||||
ed.onKeyPress.add(function(ed, e) {
|
||||
if (e.which == 41)
|
||||
@@ -61,7 +61,7 @@
|
||||
|
||||
// We need at least five characters to form a URL,
|
||||
// hence, at minimum, five characters from the beginning of the line.
|
||||
r = ed.selection.getRng().cloneRange();
|
||||
r = ed.selection.getRng(true).cloneRange();
|
||||
if (r.startOffset < 5) {
|
||||
// During testing, the caret is placed inbetween two text nodes.
|
||||
// The previous text node contains the URL.
|
||||
@@ -89,8 +89,11 @@
|
||||
while (endContainer.nodeType != 3 && endContainer.firstChild)
|
||||
endContainer = endContainer.firstChild;
|
||||
|
||||
r.setStart(endContainer, 0);
|
||||
r.setEnd(endContainer, endContainer.nodeValue.length);
|
||||
// Move range to text node
|
||||
if (endContainer.nodeType == 3) {
|
||||
r.setStart(endContainer, 0);
|
||||
r.setEnd(endContainer, endContainer.nodeValue.length);
|
||||
}
|
||||
}
|
||||
|
||||
if (r.endOffset == 1)
|
||||
@@ -104,8 +107,8 @@
|
||||
do
|
||||
{
|
||||
// Move the selection one character backwards.
|
||||
r.setStart(endContainer, end - 2);
|
||||
r.setEnd(endContainer, end - 1);
|
||||
r.setStart(endContainer, end >= 2 ? end - 2 : 0);
|
||||
r.setEnd(endContainer, end >= 1 ? end - 1 : 0);
|
||||
end -= 1;
|
||||
|
||||
// Loop until one of the following is found: a blank space, , delimeter, (end-2) >= 0
|
||||
@@ -124,13 +127,19 @@
|
||||
r.setEnd(endContainer, start);
|
||||
}
|
||||
|
||||
// Exclude last . from word like "www.site.com."
|
||||
var text = r.toString();
|
||||
if (text.charAt(text.length - 1) == '.') {
|
||||
r.setEnd(endContainer, start - 1);
|
||||
}
|
||||
|
||||
text = r.toString();
|
||||
matches = text.match(/^(https?:\/\/|ssh:\/\/|ftp:\/\/|file:\/|www\.|[A-Z0-9._%+-]+@)(.+)$/i);
|
||||
matches = text.match(/^(https?:\/\/|ssh:\/\/|ftp:\/\/|file:\/|www\.|(?:mailto:)?[A-Z0-9._%+-]+@)(.+)$/i);
|
||||
|
||||
if (matches) {
|
||||
if (matches[1] == 'www.') {
|
||||
matches[1] = 'http://www.';
|
||||
} else if (/@$/.test(matches[1])) {
|
||||
} else if (/@$/.test(matches[1]) && !/^mailto:/.test(matches[1])) {
|
||||
matches[1] = 'mailto:' + matches[1];
|
||||
}
|
||||
|
||||
@@ -139,6 +148,7 @@
|
||||
ed.selection.setRng(r);
|
||||
tinyMCE.execCommand('createlink',false, matches[1] + matches[2]);
|
||||
ed.selection.moveToBookmark(bookmark);
|
||||
ed.nodeChanged();
|
||||
|
||||
// TODO: Determine if this is still needed.
|
||||
if (tinyMCE.isWebKit) {
|
||||
0
static/js/tinymce/jscripts/tiny_mce/plugins/autoresize/editor_plugin.js → dynastie/static/js/tinymce/jscripts/tiny_mce/plugins/autoresize/editor_plugin.js
vendored
Normal file → Executable file
0
static/js/tinymce/jscripts/tiny_mce/plugins/autoresize/editor_plugin_src.js → dynastie/static/js/tinymce/jscripts/tiny_mce/plugins/autoresize/editor_plugin_src.js
vendored
Normal file → Executable file
1
dynastie/static/js/tinymce/jscripts/tiny_mce/plugins/autosave/editor_plugin.js
vendored
Executable file
@@ -0,0 +1 @@
|
||||
(function(e){var c="autosave",g="restoredraft",b=true,f,d,a=e.util.Dispatcher;e.create("tinymce.plugins.AutoSave",{init:function(i,j){var h=this,l=i.settings;h.editor=i;function k(n){var m={s:1000,m:60000};n=/^(\d+)([ms]?)$/.exec(""+n);return(n[2]?m[n[2]]:1)*parseInt(n)}e.each({ask_before_unload:b,interval:"30s",retention:"20m",minlength:50},function(n,m){m=c+"_"+m;if(l[m]===f){l[m]=n}});l.autosave_interval=k(l.autosave_interval);l.autosave_retention=k(l.autosave_retention);i.addButton(g,{title:c+".restore_content",onclick:function(){if(i.getContent({draft:true}).replace(/\s| |<\/?p[^>]*>|<br[^>]*>/gi,"").length>0){i.windowManager.confirm(c+".warning_message",function(m){if(m){h.restoreDraft()}})}else{h.restoreDraft()}}});i.onNodeChange.add(function(){var m=i.controlManager;if(m.get(g)){m.setDisabled(g,!h.hasDraft())}});i.onInit.add(function(){if(i.controlManager.get(g)){h.setupStorage(i);setInterval(function(){if(!i.removed){h.storeDraft();i.nodeChanged()}},l.autosave_interval)}});h.onStoreDraft=new a(h);h.onRestoreDraft=new a(h);h.onRemoveDraft=new a(h);if(!d){window.onbeforeunload=e.plugins.AutoSave._beforeUnloadHandler;d=b}},getInfo:function(){return{longname:"Auto save",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/autosave",version:e.majorVersion+"."+e.minorVersion}},getExpDate:function(){return new Date(new Date().getTime()+this.editor.settings.autosave_retention).toUTCString()},setupStorage:function(i){var h=this,k=c+"_test",j="OK";h.key=c+i.id;e.each([function(){if(localStorage){localStorage.setItem(k,j);if(localStorage.getItem(k)===j){localStorage.removeItem(k);return localStorage}}},function(){if(sessionStorage){sessionStorage.setItem(k,j);if(sessionStorage.getItem(k)===j){sessionStorage.removeItem(k);return sessionStorage}}},function(){if(e.isIE){i.getElement().style.behavior="url('#default#userData')";return{autoExpires:b,setItem:function(l,n){var m=i.getElement();m.setAttribute(l,n);m.expires=h.getExpDate();try{m.save("TinyMCE")}catch(o){}},getItem:function(l){var m=i.getElement();try{m.load("TinyMCE");return m.getAttribute(l)}catch(n){return null}},removeItem:function(l){i.getElement().removeAttribute(l)}}}},],function(l){try{h.storage=l();if(h.storage){return false}}catch(m){}})},storeDraft:function(){var i=this,l=i.storage,j=i.editor,h,k;if(l){if(!l.getItem(i.key)&&!j.isDirty()){return}k=j.getContent({draft:true});if(k.length>j.settings.autosave_minlength){h=i.getExpDate();if(!i.storage.autoExpires){i.storage.setItem(i.key+"_expires",h)}i.storage.setItem(i.key,k);i.onStoreDraft.dispatch(i,{expires:h,content:k})}}},restoreDraft:function(){var h=this,j=h.storage,i;if(j){i=j.getItem(h.key);if(i){h.editor.setContent(i);h.onRestoreDraft.dispatch(h,{content:i})}}},hasDraft:function(){var h=this,k=h.storage,i,j;if(k){j=!!k.getItem(h.key);if(j){if(!h.storage.autoExpires){i=new Date(k.getItem(h.key+"_expires"));if(new Date().getTime()<i.getTime()){return b}h.removeDraft()}else{return b}}}return false},removeDraft:function(){var h=this,k=h.storage,i=h.key,j;if(k){j=k.getItem(i);k.removeItem(i);k.removeItem(i+"_expires");if(j){h.onRemoveDraft.dispatch(h,{content:j})}}},"static":{_beforeUnloadHandler:function(h){var i;e.each(tinyMCE.editors,function(j){if(j.plugins.autosave){j.plugins.autosave.storeDraft()}if(j.getParam("fullscreen_is_enabled")){return}if(!i&&j.isDirty()&&j.getParam("autosave_ask_before_unload")){i=j.getLang("autosave.unload_msg")}});return i}}});e.PluginManager.add("autosave",e.plugins.AutoSave)})(tinymce);
|
||||