[FIX] doc
@ -42,13 +42,13 @@ help:
|
|||||||
clean:
|
clean:
|
||||||
-rm -rf $(BUILDDIR)/*
|
-rm -rf $(BUILDDIR)/*
|
||||||
|
|
||||||
STATICS = _extensions/odoo_ext/static
|
STATICS = _extensions/flectra_ext/static
|
||||||
# TODO: add bootstrap files
|
# TODO: add bootstrap files
|
||||||
LESSFILES = $(wildcard $(STATICS)/*.less)
|
LESSFILES = $(wildcard $(STATICS)/*.less)
|
||||||
$(STATICS)/style.css: $(LESSFILES)
|
$(STATICS)/style.css: $(LESSFILES)
|
||||||
$(LESSC) $(STATICS)/style.less $(STATICS)/style.css
|
$(LESSC) $(STATICS)/style.less $(STATICS)/style.css
|
||||||
|
|
||||||
html: _extensions/odoo_ext/static/style.css
|
html: _extensions/flectra_ext/static/style.css
|
||||||
$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
|
$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
|
||||||
@echo
|
@echo
|
||||||
@echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
|
@echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
:orphan:
|
:orphan:
|
||||||
|
|
||||||
======================================
|
======================================
|
||||||
JSDoc parser/Sphinx extension for Odoo
|
JSDoc parser/Sphinx extension for Flectra
|
||||||
======================================
|
======================================
|
||||||
|
|
||||||
Why?
|
Why?
|
||||||
@ -28,7 +28,7 @@ What?
|
|||||||
|
|
||||||
If it were possible to generate JSDoc annotations from our relatively
|
If it were possible to generate JSDoc annotations from our relatively
|
||||||
well-defined code structures, it was obviously possible to extract documentary
|
well-defined code structures, it was obviously possible to extract documentary
|
||||||
information directly from it, hence this Odoo-specific package/extension
|
information directly from it, hence this Flectra-specific package/extension
|
||||||
trying to do exactly that.
|
trying to do exactly that.
|
||||||
|
|
||||||
This package should eventually provide:
|
This package should eventually provide:
|
||||||
|
@ -13,9 +13,9 @@ DECLARATOR_INIT_TO_REF = ('Literal', 'Identifier', 'MemberExpression')
|
|||||||
class ModuleMatcher(Visitor):
|
class ModuleMatcher(Visitor):
|
||||||
"""Looks for structures of the form::
|
"""Looks for structures of the form::
|
||||||
|
|
||||||
odoo.define($string, function ($name) {
|
flectra.define($string, function ($name) {
|
||||||
|
|
||||||
These are *Odoo module definitions*, upon encountering one the
|
These are *Flectra module definitions*, upon encountering one the
|
||||||
matcher:
|
matcher:
|
||||||
|
|
||||||
* creates a module entry, optionally associated with the module comment
|
* creates a module entry, optionally associated with the module comment
|
||||||
@ -32,7 +32,7 @@ class ModuleMatcher(Visitor):
|
|||||||
# we're interested in expression statements (toplevel call)
|
# we're interested in expression statements (toplevel call)
|
||||||
if utils.match(node, {'expression': {
|
if utils.match(node, {'expression': {
|
||||||
'callee': {
|
'callee': {
|
||||||
'object': {'name': 'odoo'},
|
'object': {'name': 'flectra'},
|
||||||
'property': {'name': 'define'},
|
'property': {'name': 'define'},
|
||||||
},
|
},
|
||||||
}}):
|
}}):
|
||||||
@ -191,9 +191,9 @@ BASE_SCOPE = BaseScope(None, {
|
|||||||
})),
|
})),
|
||||||
]
|
]
|
||||||
}),
|
}),
|
||||||
'odoo': jsdoc.UnknownNS({
|
'flectra': jsdoc.UnknownNS({
|
||||||
'name': u'odoo',
|
'name': u'flectra',
|
||||||
'doc': u"Odoo",
|
'doc': u"Flectra",
|
||||||
'_members': [
|
'_members': [
|
||||||
('name', jsdoc.PropertyDoc({'name': u'csrf_token', 'type': u'{String}'})),
|
('name', jsdoc.PropertyDoc({'name': u'csrf_token', 'type': u'{String}'})),
|
||||||
]
|
]
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
:orphan:
|
:orphan:
|
||||||
|
|
||||||
These files should be run via pytest_, simply install pytest and from the top
|
These files should be run via pytest_, simply install pytest and from the top
|
||||||
of the Odoo project run ``pytest doc/_extensions``.
|
of the Flectra project run ``pytest doc/_extensions``.
|
||||||
|
|
||||||
.. _pytest: https://pytest.org/
|
.. _pytest: https://pytest.org/
|
||||||
|
@ -6,7 +6,7 @@ from support import params, parse
|
|||||||
|
|
||||||
def test_classvar():
|
def test_classvar():
|
||||||
[mod] = parse("""
|
[mod] = parse("""
|
||||||
odoo.define('a.A', function(require) {
|
flectra.define('a.A', function(require) {
|
||||||
var Class = require('Class');
|
var Class = require('Class');
|
||||||
/**
|
/**
|
||||||
* This is my class-kai
|
* This is my class-kai
|
||||||
@ -28,7 +28,7 @@ def test_classvar():
|
|||||||
|
|
||||||
def test_classret():
|
def test_classret():
|
||||||
[mod] = parse("""
|
[mod] = parse("""
|
||||||
odoo.define('a.A', function(require) {
|
flectra.define('a.A', function(require) {
|
||||||
var Class = require('Class');
|
var Class = require('Class');
|
||||||
/**
|
/**
|
||||||
* This is my class-kai
|
* This is my class-kai
|
||||||
@ -46,7 +46,7 @@ def test_classret():
|
|||||||
|
|
||||||
def test_methods():
|
def test_methods():
|
||||||
[mod] = parse("""
|
[mod] = parse("""
|
||||||
odoo.define('a.A', function(require) {
|
flectra.define('a.A', function(require) {
|
||||||
var Class = require('Class');
|
var Class = require('Class');
|
||||||
return Class.extend({
|
return Class.extend({
|
||||||
/**
|
/**
|
||||||
@ -92,7 +92,7 @@ def test_methods():
|
|||||||
|
|
||||||
def test_mixin_explicit():
|
def test_mixin_explicit():
|
||||||
[mod] = parse("""
|
[mod] = parse("""
|
||||||
odoo.define('a.A', function (require) {
|
flectra.define('a.A', function (require) {
|
||||||
var Class = require('Class');
|
var Class = require('Class');
|
||||||
var mixins = require('mixins');
|
var mixins = require('mixins');
|
||||||
/**
|
/**
|
||||||
@ -108,7 +108,7 @@ def test_mixin_explicit():
|
|||||||
|
|
||||||
def test_mixin_implicit():
|
def test_mixin_implicit():
|
||||||
[mod] = parse("""
|
[mod] = parse("""
|
||||||
odoo.define('a.A', function(require) {
|
flectra.define('a.A', function(require) {
|
||||||
var Class = require('Class');
|
var Class = require('Class');
|
||||||
var Mixin = require('Mixin');
|
var Mixin = require('Mixin');
|
||||||
/**
|
/**
|
||||||
@ -127,7 +127,7 @@ def test_mixin_implicit():
|
|||||||
|
|
||||||
def test_instanciation():
|
def test_instanciation():
|
||||||
[A, a] = parse("""
|
[A, a] = parse("""
|
||||||
odoo.define('A', function (r) {
|
flectra.define('A', function (r) {
|
||||||
var Class = r('Class');
|
var Class = r('Class');
|
||||||
/**
|
/**
|
||||||
* @class A
|
* @class A
|
||||||
@ -136,7 +136,7 @@ def test_instanciation():
|
|||||||
foo: function () {}
|
foo: function () {}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
odoo.define('a', function (r) {
|
flectra.define('a', function (r) {
|
||||||
var A = r('A');
|
var A = r('A');
|
||||||
var a = new A;
|
var a = new A;
|
||||||
return a;
|
return a;
|
||||||
@ -147,7 +147,7 @@ def test_instanciation():
|
|||||||
|
|
||||||
def test_non_function_properties():
|
def test_non_function_properties():
|
||||||
[A] = parse("""
|
[A] = parse("""
|
||||||
odoo.define('A', function (r) {
|
flectra.define('A', function (r) {
|
||||||
var Class = r('Class');
|
var Class = r('Class');
|
||||||
return Class.extend({
|
return Class.extend({
|
||||||
template: 'thing',
|
template: 'thing',
|
||||||
@ -163,7 +163,7 @@ def test_non_function_properties():
|
|||||||
|
|
||||||
def test_non_extend_classes():
|
def test_non_extend_classes():
|
||||||
[mod] = parse("""
|
[mod] = parse("""
|
||||||
odoo.define('A', function () {
|
flectra.define('A', function () {
|
||||||
/**
|
/**
|
||||||
* @class
|
* @class
|
||||||
*/
|
*/
|
||||||
@ -175,11 +175,11 @@ def test_non_extend_classes():
|
|||||||
|
|
||||||
def test_extend():
|
def test_extend():
|
||||||
[a, _] = parse("""
|
[a, _] = parse("""
|
||||||
odoo.define('A', function (require) {
|
flectra.define('A', function (require) {
|
||||||
var Class = require('Class');
|
var Class = require('Class');
|
||||||
return Class.extend({});
|
return Class.extend({});
|
||||||
});
|
});
|
||||||
odoo.define('B', function (require) {
|
flectra.define('B', function (require) {
|
||||||
var A = require('A');
|
var A = require('A');
|
||||||
A.include({
|
A.include({
|
||||||
/** A property */
|
/** A property */
|
||||||
@ -203,7 +203,7 @@ def test_extend():
|
|||||||
@pytest.mark.skip(reason="Need to implement member/var-parsing?")
|
@pytest.mark.skip(reason="Need to implement member/var-parsing?")
|
||||||
def test_members():
|
def test_members():
|
||||||
[mod] = parse("""
|
[mod] = parse("""
|
||||||
odoo.define('A', function (r) {
|
flectra.define('A', function (r) {
|
||||||
var Class = r('Class');
|
var Class = r('Class');
|
||||||
return Class.extend({
|
return Class.extend({
|
||||||
init: function () {
|
init: function () {
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
"""
|
"""
|
||||||
Test various crap patterns found in Odoo code to ensure they don't blow up
|
Test various crap patterns found in Flectra code to ensure they don't blow up
|
||||||
the parser thingie
|
the parser thingie
|
||||||
"""
|
"""
|
||||||
from autojsdoc.parser import jsdoc
|
from autojsdoc.parser import jsdoc
|
||||||
@ -8,7 +8,7 @@ from support import parse
|
|||||||
|
|
||||||
def test_export_external():
|
def test_export_external():
|
||||||
[mod] = parse("""
|
[mod] = parse("""
|
||||||
odoo.define('module', function () {
|
flectra.define('module', function () {
|
||||||
return $.Deferred().reject();
|
return $.Deferred().reject();
|
||||||
});
|
});
|
||||||
""")
|
""")
|
||||||
@ -17,7 +17,7 @@ def test_export_external():
|
|||||||
|
|
||||||
def test_extend_jq():
|
def test_extend_jq():
|
||||||
parse("""
|
parse("""
|
||||||
odoo.define('a', function (r) {
|
flectra.define('a', function (r) {
|
||||||
$.extend($.expr[':'], { a: function () {} });
|
$.extend($.expr[':'], { a: function () {} });
|
||||||
$.fn.extend({ a: function () {} });
|
$.fn.extend({ a: function () {} });
|
||||||
});
|
});
|
||||||
@ -25,14 +25,14 @@ def test_extend_jq():
|
|||||||
|
|
||||||
def test_extend_dynamic():
|
def test_extend_dynamic():
|
||||||
parse("""
|
parse("""
|
||||||
odoo.define('a', function () {
|
flectra.define('a', function () {
|
||||||
foo.bar.baz[qux + '_external'] = function () {};
|
foo.bar.baz[qux + '_external'] = function () {};
|
||||||
});
|
});
|
||||||
""")
|
""")
|
||||||
|
|
||||||
def test_extend_deep():
|
def test_extend_deep():
|
||||||
parse("""
|
parse("""
|
||||||
odoo.define('a', function () {
|
flectra.define('a', function () {
|
||||||
var eventHandler = $.summernote.eventHandler;
|
var eventHandler = $.summernote.eventHandler;
|
||||||
var dom = $.summernote.core.dom;
|
var dom = $.summernote.core.dom;
|
||||||
dom.thing = function () {};
|
dom.thing = function () {};
|
||||||
@ -44,7 +44,7 @@ def test_extend_deep():
|
|||||||
|
|
||||||
def test_arbitrary():
|
def test_arbitrary():
|
||||||
parse("""
|
parse("""
|
||||||
odoo.define('bob', function () {
|
flectra.define('bob', function () {
|
||||||
var page = window.location.href.replace(/^.*\/\/[^\/]+/, '');
|
var page = window.location.href.replace(/^.*\/\/[^\/]+/, '');
|
||||||
var mailWidgets = ['mail_followers', 'mail_thread', 'mail_activity', 'kanban_activity'];
|
var mailWidgets = ['mail_followers', 'mail_thread', 'mail_activity', 'kanban_activity'];
|
||||||
var bob;
|
var bob;
|
||||||
@ -54,7 +54,7 @@ def test_arbitrary():
|
|||||||
|
|
||||||
def test_prototype():
|
def test_prototype():
|
||||||
[A, B] = parse("""
|
[A, B] = parse("""
|
||||||
odoo.define('mod1', function () {
|
flectra.define('mod1', function () {
|
||||||
var exports = {};
|
var exports = {};
|
||||||
exports.Foo = Backbone.Model.extend({});
|
exports.Foo = Backbone.Model.extend({});
|
||||||
exports.Bar = Backbone.Model.extend({});
|
exports.Bar = Backbone.Model.extend({});
|
||||||
@ -64,7 +64,7 @@ def test_prototype():
|
|||||||
exports.Baz = Backbone.Model.extend({});
|
exports.Baz = Backbone.Model.extend({});
|
||||||
return exports;
|
return exports;
|
||||||
});
|
});
|
||||||
odoo.define('mod2', function (require) {
|
flectra.define('mod2', function (require) {
|
||||||
var models = require('mod1');
|
var models = require('mod1');
|
||||||
var _super_orderline = models.Bar.prototype;
|
var _super_orderline = models.Bar.prototype;
|
||||||
models.Foo = models.Bar.extend({});
|
models.Foo = models.Bar.extend({});
|
||||||
|
@ -9,7 +9,7 @@ def test_single():
|
|||||||
/**
|
/**
|
||||||
* This is a super module!
|
* This is a super module!
|
||||||
*/
|
*/
|
||||||
odoo.define('supermodule', function (req) {
|
flectra.define('supermodule', function (req) {
|
||||||
var other = req('other');
|
var other = req('other');
|
||||||
});
|
});
|
||||||
""")
|
""")
|
||||||
@ -22,13 +22,13 @@ def test_single():
|
|||||||
|
|
||||||
def test_multiple():
|
def test_multiple():
|
||||||
[mod1, mod2, mod3] = parse("""
|
[mod1, mod2, mod3] = parse("""
|
||||||
odoo.define('module1', function (req) {
|
flectra.define('module1', function (req) {
|
||||||
return 1;
|
return 1;
|
||||||
});
|
});
|
||||||
odoo.define('module2', function (req) {
|
flectra.define('module2', function (req) {
|
||||||
return req('dep2');
|
return req('dep2');
|
||||||
});
|
});
|
||||||
odoo.define('module3', function (req) {
|
flectra.define('module3', function (req) {
|
||||||
var r = req('dep3');
|
var r = req('dep3');
|
||||||
return r;
|
return r;
|
||||||
});
|
});
|
||||||
@ -54,7 +54,7 @@ def test_multiple():
|
|||||||
|
|
||||||
def test_func():
|
def test_func():
|
||||||
[mod] = parse("""
|
[mod] = parse("""
|
||||||
odoo.define('module', function (d) {
|
flectra.define('module', function (d) {
|
||||||
/**
|
/**
|
||||||
* @param {Foo} bar this is a bar
|
* @param {Foo} bar this is a bar
|
||||||
* @param {Baz} qux this is a qux
|
* @param {Baz} qux this is a qux
|
||||||
@ -78,7 +78,7 @@ def test_func():
|
|||||||
|
|
||||||
def test_hoist():
|
def test_hoist():
|
||||||
[mod] = parse("""
|
[mod] = parse("""
|
||||||
odoo.define('module', function() {
|
flectra.define('module', function() {
|
||||||
return foo;
|
return foo;
|
||||||
/**
|
/**
|
||||||
* @param a_thing
|
* @param a_thing
|
||||||
@ -95,7 +95,7 @@ def test_hoist():
|
|||||||
|
|
||||||
def test_export_instance():
|
def test_export_instance():
|
||||||
[mod] = parse("""
|
[mod] = parse("""
|
||||||
odoo.define('module', function (require) {
|
flectra.define('module', function (require) {
|
||||||
var Class = require('Class');
|
var Class = require('Class');
|
||||||
/**
|
/**
|
||||||
* Provides an instance of Class
|
* Provides an instance of Class
|
||||||
@ -109,13 +109,13 @@ def test_export_instance():
|
|||||||
|
|
||||||
def test_bounce():
|
def test_bounce():
|
||||||
[m2, m1] = parse("""
|
[m2, m1] = parse("""
|
||||||
odoo.define('m2', function (require) {
|
flectra.define('m2', function (require) {
|
||||||
var Item = require('m1');
|
var Item = require('m1');
|
||||||
return {
|
return {
|
||||||
Item: Item
|
Item: Item
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
odoo.define('m1', function (require) {
|
flectra.define('m1', function (require) {
|
||||||
var Class = require('Class');
|
var Class = require('Class');
|
||||||
var Item = Class.extend({});
|
var Item = Class.extend({});
|
||||||
return Item;
|
return Item;
|
||||||
@ -129,7 +129,7 @@ def test_bounce():
|
|||||||
|
|
||||||
def test_reassign():
|
def test_reassign():
|
||||||
[m] = parse("""
|
[m] = parse("""
|
||||||
odoo.define('m', function (require) {
|
flectra.define('m', function (require) {
|
||||||
var Class = require('Class');
|
var Class = require('Class');
|
||||||
/** local class */
|
/** local class */
|
||||||
var Class = Class.extend({});
|
var Class = Class.extend({});
|
||||||
@ -142,12 +142,12 @@ def test_reassign():
|
|||||||
|
|
||||||
def test_attr():
|
def test_attr():
|
||||||
[m1, m2] = parse("""
|
[m1, m2] = parse("""
|
||||||
odoo.define('m1', function (require) {
|
flectra.define('m1', function (require) {
|
||||||
var Class = require('Class');
|
var Class = require('Class');
|
||||||
var Item = Class.extend({});
|
var Item = Class.extend({});
|
||||||
return {Item: Item};
|
return {Item: Item};
|
||||||
});
|
});
|
||||||
odoo.define('m2', function (require) {
|
flectra.define('m2', function (require) {
|
||||||
var Item = require('m1').Item;
|
var Item = require('m1').Item;
|
||||||
Item.include({});
|
Item.include({});
|
||||||
return Item.extend({});
|
return Item.extend({});
|
||||||
@ -159,14 +159,14 @@ def test_attr():
|
|||||||
|
|
||||||
def test_nothing_implicit():
|
def test_nothing_implicit():
|
||||||
[m] = parse("""
|
[m] = parse("""
|
||||||
odoo.define('m', function () {
|
flectra.define('m', function () {
|
||||||
});
|
});
|
||||||
""")
|
""")
|
||||||
assert m.exports is None
|
assert m.exports is None
|
||||||
|
|
||||||
def test_nothing_explicit():
|
def test_nothing_explicit():
|
||||||
[m] = parse("""
|
[m] = parse("""
|
||||||
odoo.define('m', function () {
|
flectra.define('m', function () {
|
||||||
return;
|
return;
|
||||||
});
|
});
|
||||||
""")
|
""")
|
||||||
|
@ -5,7 +5,7 @@ from support import parse, params
|
|||||||
|
|
||||||
def test_empty():
|
def test_empty():
|
||||||
[mod] = parse("""
|
[mod] = parse("""
|
||||||
odoo.define('a.ns', function (r) {
|
flectra.define('a.ns', function (r) {
|
||||||
return {};
|
return {};
|
||||||
});
|
});
|
||||||
""")
|
""")
|
||||||
@ -14,7 +14,7 @@ def test_empty():
|
|||||||
|
|
||||||
def test_inline():
|
def test_inline():
|
||||||
[mod] = parse("""
|
[mod] = parse("""
|
||||||
odoo.define('a.ns', function (r) {
|
flectra.define('a.ns', function (r) {
|
||||||
return {
|
return {
|
||||||
/**
|
/**
|
||||||
* a thing
|
* a thing
|
||||||
@ -31,7 +31,7 @@ def test_inline():
|
|||||||
|
|
||||||
def test_header():
|
def test_header():
|
||||||
[mod] = parse("""
|
[mod] = parse("""
|
||||||
odoo.define('a.ns', function (r) {
|
flectra.define('a.ns', function (r) {
|
||||||
/**
|
/**
|
||||||
* @property {Boolean} a a thing
|
* @property {Boolean} a a thing
|
||||||
*/
|
*/
|
||||||
@ -45,7 +45,7 @@ def test_header():
|
|||||||
def test_header_conflict():
|
def test_header_conflict():
|
||||||
""" should the header or the inline comment take precedence? """
|
""" should the header or the inline comment take precedence? """
|
||||||
[mod] = parse("""
|
[mod] = parse("""
|
||||||
odoo.define('a.ns', function (r) {
|
flectra.define('a.ns', function (r) {
|
||||||
/**
|
/**
|
||||||
* @property {Boolean} a a thing
|
* @property {Boolean} a a thing
|
||||||
*/
|
*/
|
||||||
@ -61,7 +61,7 @@ def test_header_conflict():
|
|||||||
|
|
||||||
def test_mixin():
|
def test_mixin():
|
||||||
[mod] = parse("""
|
[mod] = parse("""
|
||||||
odoo.define('a.mixin', function (r) {
|
flectra.define('a.mixin', function (r) {
|
||||||
/**
|
/**
|
||||||
* @mixin
|
* @mixin
|
||||||
*/
|
*/
|
||||||
@ -81,7 +81,7 @@ def test_mixin():
|
|||||||
|
|
||||||
def test_literal():
|
def test_literal():
|
||||||
[mod] = parse("""
|
[mod] = parse("""
|
||||||
odoo.define('a.ns', function (r) {
|
flectra.define('a.ns', function (r) {
|
||||||
/** whop whop */
|
/** whop whop */
|
||||||
return {
|
return {
|
||||||
'a': 1,
|
'a': 1,
|
||||||
@ -97,7 +97,7 @@ def test_literal():
|
|||||||
|
|
||||||
def test_fill_ns():
|
def test_fill_ns():
|
||||||
[mod] = parse("""
|
[mod] = parse("""
|
||||||
odoo.define('a.ns', function (r) {
|
flectra.define('a.ns', function (r) {
|
||||||
var Class = r('Class');
|
var Class = r('Class');
|
||||||
var ns = {};
|
var ns = {};
|
||||||
/** ok */
|
/** ok */
|
||||||
@ -120,14 +120,14 @@ def test_fill_ns():
|
|||||||
|
|
||||||
def test_extend_other():
|
def test_extend_other():
|
||||||
[o, b] = parse("""
|
[o, b] = parse("""
|
||||||
odoo.define('a.ns', function () {
|
flectra.define('a.ns', function () {
|
||||||
/** @name outer */
|
/** @name outer */
|
||||||
return {
|
return {
|
||||||
/** @name inner */
|
/** @name inner */
|
||||||
a: {}
|
a: {}
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
odoo.define('b', function (r) {
|
flectra.define('b', function (r) {
|
||||||
var o = r('a.ns');
|
var o = r('a.ns');
|
||||||
var Class = r('Class');
|
var Class = r('Class');
|
||||||
/** Class 1 */
|
/** Class 1 */
|
||||||
@ -151,7 +151,7 @@ def test_extend_other():
|
|||||||
|
|
||||||
def test_ns_variables():
|
def test_ns_variables():
|
||||||
[mod] = parse("""
|
[mod] = parse("""
|
||||||
odoo.define('A', function (r) {
|
flectra.define('A', function (r) {
|
||||||
var Class = r('Class');
|
var Class = r('Class');
|
||||||
var Thing = Class.extend({});
|
var Thing = Class.extend({});
|
||||||
return {
|
return {
|
||||||
@ -166,7 +166,7 @@ def test_diff():
|
|||||||
""" Have the NS key and the underlying object differ
|
""" Have the NS key and the underlying object differ
|
||||||
"""
|
"""
|
||||||
[mod] = parse("""
|
[mod] = parse("""
|
||||||
odoo.define('mod', function (r) {
|
flectra.define('mod', function (r) {
|
||||||
var Class = r('Class');
|
var Class = r('Class');
|
||||||
var Foo = Class.extend({});
|
var Foo = Class.extend({});
|
||||||
return { Class: Foo };
|
return { Class: Foo };
|
||||||
|
@ -18,18 +18,18 @@ def setup(app):
|
|||||||
else:
|
else:
|
||||||
if getattr(app.config, 'html_translator_class', None):
|
if getattr(app.config, 'html_translator_class', None):
|
||||||
app.warn("Overriding the explicitly set html_translator_class setting",
|
app.warn("Overriding the explicitly set html_translator_class setting",
|
||||||
location="odoo extension")
|
location="flectra extension")
|
||||||
app.config.html_translator_class = 'odoo_ext.translator.BootstrapTranslator'
|
app.config.html_translator_class = 'flectra_ext.translator.BootstrapTranslator'
|
||||||
|
|
||||||
switcher.setup(app)
|
switcher.setup(app)
|
||||||
app.add_config_value('odoo_cover_default', None, 'env')
|
app.add_config_value('flectra_cover_default', None, 'env')
|
||||||
app.add_config_value('odoo_cover_external', {}, 'env')
|
app.add_config_value('flectra_cover_external', {}, 'env')
|
||||||
app.add_config_value('odoo_cover_default_external', lambda conf: conf.odoo_cover_default, 'env')
|
app.add_config_value('flectra_cover_default_external', lambda conf: conf.flectra_cover_default, 'env')
|
||||||
app.connect('html-page-context', update_meta)
|
app.connect('html-page-context', update_meta)
|
||||||
|
|
||||||
def update_meta(app, pagename, templatename, context, doctree):
|
def update_meta(app, pagename, templatename, context, doctree):
|
||||||
meta = context.setdefault('meta', {})
|
meta = context.setdefault('meta', {})
|
||||||
meta.setdefault('banner', app.config.odoo_cover_default)
|
meta.setdefault('banner', app.config.flectra_cover_default)
|
||||||
|
|
||||||
def navbarify(node, navbar=None):
|
def navbarify(node, navbar=None):
|
||||||
"""
|
"""
|
@ -54,7 +54,7 @@
|
|||||||
<span class="mdi-navigation-menu"></span>
|
<span class="mdi-navigation-menu"></span>
|
||||||
</a>
|
</a>
|
||||||
<div class="o_header_buttons">
|
<div class="o_header_buttons">
|
||||||
<a href="http://www.odoo.com/trial" class="btn btn-primary">Start Now</a>
|
<a href="http://www.flectra.com/trial" class="btn btn-primary">Start Now</a>
|
||||||
</div>
|
</div>
|
||||||
<ul class="o_primary_nav">
|
<ul class="o_primary_nav">
|
||||||
<li class="dropdown">
|
<li class="dropdown">
|
||||||
@ -68,12 +68,12 @@
|
|||||||
<div>Build great user experience</div>
|
<div>Build great user experience</div>
|
||||||
</div>
|
</div>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="https://www.odoo.com/page/website-builder">Website Builder</a></li>
|
<li><a href="https://www.flectra.com/page/website-builder">Website Builder</a></li>
|
||||||
<li><a href="https://www.odoo.com/page/e-commerce">eCommerce</a></li>
|
<li><a href="https://www.flectra.com/page/e-commerce">eCommerce</a></li>
|
||||||
<li><a href="https://www.odoo.com/page/blog-engine">Blogs</a></li>
|
<li><a href="https://www.flectra.com/page/blog-engine">Blogs</a></li>
|
||||||
<li><a href="https://www.odoo.com/page/community-builder">Forums</a></li>
|
<li><a href="https://www.flectra.com/page/community-builder">Forums</a></li>
|
||||||
<li><a href="https://www.odoo.com/page/slides">Slides</a></li>
|
<li><a href="https://www.flectra.com/page/slides">Slides</a></li>
|
||||||
<li><a href="https://adspike.odoo.com">SEA</a></li>
|
<li><a href="https://adspike.flectra.com">SEA</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-sm-3 o_sale_apps">
|
<div class="col-sm-3 o_sale_apps">
|
||||||
@ -82,18 +82,18 @@
|
|||||||
<div>Boost your success rate</div>
|
<div>Boost your success rate</div>
|
||||||
</div>
|
</div>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="https://www.odoo.com/page/sales">Sales</a></li>
|
<li><a href="https://www.flectra.com/page/sales">Sales</a></li>
|
||||||
<li><a href="https://www.odoo.com/page/crm">CRM</a></li>
|
<li><a href="https://www.flectra.com/page/crm">CRM</a></li>
|
||||||
<li><a href="https://www.odoo.com/page/billing">Invoicing</a></li>
|
<li><a href="https://www.flectra.com/page/billing">Invoicing</a></li>
|
||||||
<li class="dropdown">
|
<li class="dropdown">
|
||||||
<a href="#0" class="dropdown-toggle">Point of Sale</a>
|
<a href="#0" class="dropdown-toggle">Point of Sale</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="https://www.odoo.com/page/point-of-sale">Shops</a></li>
|
<li><a href="https://www.flectra.com/page/point-of-sale">Shops</a></li>
|
||||||
<li><a href="https://www.odoo.com/page/pos-restaurant">Restaurants</a></li>
|
<li><a href="https://www.flectra.com/page/pos-restaurant">Restaurants</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="https://www.odoo.com/page/subscriptions">Subscriptions</a></li>
|
<li><a href="https://www.flectra.com/page/subscriptions">Subscriptions</a></li>
|
||||||
<li><a href="https://www.odoo.com/page/sign">Sign</a></li>
|
<li><a href="https://www.flectra.com/page/sign">Sign</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-sm-3 o_operation_apps">
|
<div class="col-sm-3 o_operation_apps">
|
||||||
@ -102,28 +102,28 @@
|
|||||||
<div>It's all about efficiency</div>
|
<div>It's all about efficiency</div>
|
||||||
</div>
|
</div>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="https://www.odoo.com/page/accounting/">Accounting</a></li>
|
<li><a href="https://www.flectra.com/page/accounting/">Accounting</a></li>
|
||||||
<li><a href="https://www.odoo.com/page/project-management/">Project</a></li>
|
<li><a href="https://www.flectra.com/page/project-management/">Project</a></li>
|
||||||
<li class="dropdown">
|
<li class="dropdown">
|
||||||
<a href="#0" class="dropdown-toggle">Human Resources</a>
|
<a href="#0" class="dropdown-toggle">Human Resources</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="https://www.odoo.com/page/recruitment">Recruitment</a></li>
|
<li><a href="https://www.flectra.com/page/recruitment">Recruitment</a></li>
|
||||||
<li><a href="https://www.odoo.com/page/employees">Employees</a></li>
|
<li><a href="https://www.flectra.com/page/employees">Employees</a></li>
|
||||||
<li><a href="https://www.odoo.com/page/expenses">Expenses</a></li>
|
<li><a href="https://www.flectra.com/page/expenses">Expenses</a></li>
|
||||||
<li><a href="https://www.odoo.com/page/appraisal">Appraisal</a></li>
|
<li><a href="https://www.flectra.com/page/appraisal">Appraisal</a></li>
|
||||||
<li><a href="https://www.odoo.com/page/fleet">Fleet</a></li>
|
<li><a href="https://www.flectra.com/page/fleet">Fleet</a></li>
|
||||||
<li><a href="https://www.odoo.com/page/leaves">Leaves</a></li>
|
<li><a href="https://www.flectra.com/page/leaves">Leaves</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="https://www.odoo.com/page/warehouse">Inventory</a></li>
|
<li><a href="https://www.flectra.com/page/warehouse">Inventory</a></li>
|
||||||
<li><a href="https://www.odoo.com/page/purchase">Purchase</a></li>
|
<li><a href="https://www.flectra.com/page/purchase">Purchase</a></li>
|
||||||
<li class="dropdown">
|
<li class="dropdown">
|
||||||
<a href="#0" class="dropdown-toggle">Manufacturing</a>
|
<a href="#0" class="dropdown-toggle">Manufacturing</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="https://www.odoo.com/page/manufacturing">MRP</a></li>
|
<li><a href="https://www.flectra.com/page/manufacturing">MRP</a></li>
|
||||||
<li><a href="https://www.odoo.com/page/plm">PLM</a></li>
|
<li><a href="https://www.flectra.com/page/plm">PLM</a></li>
|
||||||
<li><a href="https://www.odoo.com/page/maintenance">Maintenance</a></li>
|
<li><a href="https://www.flectra.com/page/maintenance">Maintenance</a></li>
|
||||||
<li><a href="https://www.odoo.com/page/quality">Quality</a></li>
|
<li><a href="https://www.flectra.com/page/quality">Quality</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
@ -137,28 +137,28 @@
|
|||||||
<li class="dropdown">
|
<li class="dropdown">
|
||||||
<a href="#0" class="dropdown-toggle">Communication</a>
|
<a href="#0" class="dropdown-toggle">Communication</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="https://www.odoo.com/page/discuss">Discuss</a></li>
|
<li><a href="https://www.flectra.com/page/discuss">Discuss</a></li>
|
||||||
<li><a href="https://www.odoo.com/page/discuss-groups">Mailing Lists</a></li>
|
<li><a href="https://www.flectra.com/page/discuss-groups">Mailing Lists</a></li>
|
||||||
<li><a href="https://www.odoo.com/page/notes">Notes</a></li>
|
<li><a href="https://www.flectra.com/page/notes">Notes</a></li>
|
||||||
<li><a href="#">Help desk</a></li>
|
<li><a href="#">Help desk</a></li>
|
||||||
<li><a href="#">Appointment</a></li>
|
<li><a href="#">Appointment</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="https://www.odoo.com/page/timesheet">Timesheet</a></li>
|
<li><a href="https://www.flectra.com/page/timesheet">Timesheet</a></li>
|
||||||
<li><a href="https://www.odoo.com/page/email-marketing">Email Marketing</a></li>
|
<li><a href="https://www.flectra.com/page/email-marketing">Email Marketing</a></li>
|
||||||
<li><a href="https://www.odoo.com/page/events">Events</a></li>
|
<li><a href="https://www.flectra.com/page/events">Events</a></li>
|
||||||
<li><a href="https://www.odoo.com/page/survey">Survey</a></li>
|
<li><a href="https://www.flectra.com/page/survey">Survey</a></li>
|
||||||
<li><a href="https://www.odoo.com/page/live-chat">Live Chat</a></li>
|
<li><a href="https://www.flectra.com/page/live-chat">Live Chat</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<a href="http://www.odoo.com/apps/modules" class="o_store_link"><i class="fa fa-cube fa-fw"></i> Third party apps</a>
|
<a href="http://www.flectra.com/apps/modules" class="o_store_link"><i class="fa fa-cube fa-fw"></i> Third party apps</a>
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="https://www.odoo.com/page/tour">Tour</a></li>
|
<li><a href="https://www.flectra.com/page/tour">Tour</a></li>
|
||||||
<li><a href="https://www.odoo.com/pricing">Pricing</a></li>
|
<li><a href="https://www.flectra.com/pricing">Pricing</a></li>
|
||||||
<li><a href="https://www.odoo.com/page/docs">Docs</a></li>
|
<li><a href="https://www.flectra.com/page/docs">Docs</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<nav class="navbar o_sub_nav">
|
<nav class="navbar o_sub_nav">
|
||||||
@ -178,7 +178,7 @@
|
|||||||
</ol>
|
</ol>
|
||||||
|
|
||||||
<div class="call-to-action navbar-right hidden-xs">
|
<div class="call-to-action navbar-right hidden-xs">
|
||||||
<a href="http://www.odoo.com/trial" class="btn btn-primary">Start Now</a>
|
<a href="http://www.flectra.com/trial" class="btn btn-primary">Start Now</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<ul class="navbar-nav navbar-right nav o_sub_nav_actions">
|
<ul class="navbar-nav navbar-right nav o_sub_nav_actions">
|
||||||
@ -276,42 +276,42 @@
|
|||||||
<div class="col-xs-6 col-sm-4">
|
<div class="col-xs-6 col-sm-4">
|
||||||
<span class="menu_title">Community</span>
|
<span class="menu_title">Community</span>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="https://github.com/odoo/odoo">Github</a></li>
|
<li><a href="https://github.com/flectra/flectra">Github</a></li>
|
||||||
<li><a href="http://www.odoo.com/page/download">Download</a></li>
|
<li><a href="http://www.flectra.com/page/download">Download</a></li>
|
||||||
<li class="divider"></li>
|
<li class="divider"></li>
|
||||||
<li><a href="http://runbot.odoo.com/runbot/repo/git-github-com-odoo-enterprise-7">Runbot</a></li>
|
<li><a href="http://runbot.flectra.com/runbot/repo/git-github-com-flectra-enterprise-7">Runbot</a></li>
|
||||||
<li><a href="https://github.com/odoo/odoo/wiki/Translations">Translations</a></li>
|
<li><a href="https://github.com/flectra/flectra/wiki/Translations">Translations</a></li>
|
||||||
<li class="divider"></li>
|
<li class="divider"></li>
|
||||||
<li><a href="http://www.odoo.com/page/odoo-community">Mailing Lists</a></li>
|
<li><a href="http://www.flectra.com/page/flectra-community">Mailing Lists</a></li>
|
||||||
<li><a href="http://www.odoo.com/forum/help-1">Forum</a></li>
|
<li><a href="http://www.flectra.com/forum/help-1">Forum</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-xs-6 col-sm-4">
|
<div class="col-xs-6 col-sm-4">
|
||||||
<span class="menu_title">Services</span>
|
<span class="menu_title">Services</span>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="http://www.odoo.com/pricing">Editions</a></li>
|
<li><a href="http://www.flectra.com/pricing">Editions</a></li>
|
||||||
<li><a href="http://www.odoo.com/pricing-online">Cloud Pricing</a></li>
|
<li><a href="http://www.flectra.com/pricing-online">Cloud Pricing</a></li>
|
||||||
<li><a href="http://www.odoo.com/page/upgrade">Upgrade</a></li>
|
<li><a href="http://www.flectra.com/page/upgrade">Upgrade</a></li>
|
||||||
<li class="divider"></li>
|
<li class="divider"></li>
|
||||||
<li><a href="http://www.odoo.com/partners">Find a partner</a></li>
|
<li><a href="http://www.flectra.com/partners">Find a partner</a></li>
|
||||||
<li><a href="http://www.odoo.com/page/become-a-partner">Become a partner</a></li>
|
<li><a href="http://www.flectra.com/page/become-a-partner">Become a partner</a></li>
|
||||||
<li class="divider"></li>
|
<li class="divider"></li>
|
||||||
<li><a href="http://www.odoo.com/page/education-program">Education</a></li>
|
<li><a href="http://www.flectra.com/page/education-program">Education</a></li>
|
||||||
<li class="divider"></li>
|
<li class="divider"></li>
|
||||||
<li><a href="http://www.odoo.com/page/security">Security</a></li>
|
<li><a href="http://www.flectra.com/page/security">Security</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-sm-4 mb64">
|
<div class="col-sm-4 mb64">
|
||||||
<span class="menu_title">About us</span>
|
<span class="menu_title">About us</span>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="http://www.odoo.com/page/about-us">Our company</a></li>
|
<li><a href="http://www.flectra.com/page/about-us">Our company</a></li>
|
||||||
<li><a href="http://www.odoo.com/page/contactus">Contact</a></li>
|
<li><a href="http://www.flectra.com/page/contactus">Contact</a></li>
|
||||||
<li class="divider" />
|
<li class="divider" />
|
||||||
<li><a href="http://www.odoo.com/event">Events</a></li>
|
<li><a href="http://www.flectra.com/event">Events</a></li>
|
||||||
<li><a href="http://www.odoo.com/blog/">Blog</a></li>
|
<li><a href="http://www.flectra.com/blog/">Blog</a></li>
|
||||||
<li><a href="http://www.odoo.com/blog/6">Customers</a></li>
|
<li><a href="http://www.flectra.com/blog/6">Customers</a></li>
|
||||||
<li class="divider" />
|
<li class="divider" />
|
||||||
<li><a href="http://www.odoo.com/jobs">Jobs</a></li>
|
<li><a href="http://www.flectra.com/jobs">Jobs</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -319,9 +319,9 @@
|
|||||||
<div class="col-sm-5 col-md-4 col-md-offset-1 col-lg-5 col-lg-offset-1">
|
<div class="col-sm-5 col-md-4 col-md-offset-1 col-lg-5 col-lg-offset-1">
|
||||||
<p>
|
<p>
|
||||||
<small>
|
<small>
|
||||||
Odoo is a suite of open source business apps that cover all your company needs: CRM, eCommerce, accounting, inventory, point of sale, project management, etc.
|
Flectra is a suite of open source business apps that cover all your company needs: CRM, eCommerce, accounting, inventory, point of sale, project management, etc.
|
||||||
<br/><br/>
|
<br/><br/>
|
||||||
Odoo's unique value proposition is to be at the same time very easy to use and fully integrated.
|
Flectra's unique value proposition is to be at the same time very easy to use and fully integrated.
|
||||||
</small>
|
</small>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
@ -329,12 +329,12 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="o_footer_bottom">
|
<div class="o_footer_bottom">
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<a class="small" href="http://www.odoo.com/page/website-builder">Website made with <span class="o_logo o_logo_inverse o_logo_15"></span></a>
|
<a class="small" href="http://www.flectra.com/page/website-builder">Website made with <span class="o_logo o_logo_inverse o_logo_15"></span></a>
|
||||||
<div class="social-links pull-right">
|
<div class="social-links pull-right">
|
||||||
<a href="http://www.odoo.com/web/about/facebook"><i class="fa fa-facebook"></i></a>
|
<a href="http://www.flectra.com/web/about/facebook"><i class="fa fa-facebook"></i></a>
|
||||||
<a href="http://www.odoo.com/web/about/twitter"><i class="fa fa-twitter"></i></a>
|
<a href="http://www.flectra.com/web/about/twitter"><i class="fa fa-twitter"></i></a>
|
||||||
<a href="http://www.odoo.com/web/about/linkedin"><i class="fa fa-linkedin"></i></a>
|
<a href="http://www.flectra.com/web/about/linkedin"><i class="fa fa-linkedin"></i></a>
|
||||||
<a href="mailto:info@odoo.com"><i class="fa fa-envelope"></i></a>
|
<a href="mailto:info@flectra.com"><i class="fa fa-envelope"></i></a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
@ -17,7 +17,7 @@ AQUA = "#5bc4bf"
|
|||||||
BLUE = "#06b6ef"
|
BLUE = "#06b6ef"
|
||||||
PURPLE = "#815ba4"
|
PURPLE = "#815ba4"
|
||||||
|
|
||||||
class OdooStyle(Style):
|
class FlectraStyle(Style):
|
||||||
"""Modified version of Paraiso Dark style to avoid Pygments version
|
"""Modified version of Paraiso Dark style to avoid Pygments version
|
||||||
annoyances.
|
annoyances.
|
||||||
|
|
||||||
@ -120,7 +120,7 @@ class OdooStyle(Style):
|
|||||||
|
|
||||||
import imp
|
import imp
|
||||||
import sys
|
import sys
|
||||||
modname = 'pygments.styles.odoo'
|
modname = 'pygments.styles.flectra'
|
||||||
m = imp.new_module(modname)
|
m = imp.new_module(modname)
|
||||||
m.OdooStyle = OdooStyle
|
m.FlectraStyle = FlectraStyle
|
||||||
sys.modules[modname] = m
|
sys.modules[modname] = m
|
Before Width: | Height: | Size: 322 KiB After Width: | Height: | Size: 322 KiB |
@ -1,4 +1,4 @@
|
|||||||
// Based on http://www.odoo.com/openerp_website/static/src/less/footer.less
|
// Based on http://www.flectra.com/openerp_website/static/src/less/footer.less
|
||||||
// ========================================================================
|
// ========================================================================
|
||||||
|
|
||||||
body > footer {
|
body > footer {
|
@ -1,4 +1,4 @@
|
|||||||
// Based on http://www.odoo.com/openerp_website/static/src/less/header.less
|
// Based on http://www.flectra.com/openerp_website/static/src/less/header.less
|
||||||
// ========================================================================
|
// ========================================================================
|
||||||
|
|
||||||
// ============= MIXINS
|
// ============= MIXINS
|
||||||
@ -144,12 +144,12 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
&.open > a {
|
&.open > a {
|
||||||
color: @odoo-brand-primary!important;
|
color: @flectra-brand-primary!important;
|
||||||
font-weight: @fw_semibold;
|
font-weight: @fw_semibold;
|
||||||
|
|
||||||
&::before, &::after {
|
&::before, &::after {
|
||||||
background-color: @odoo-brand-primary!important;
|
background-color: @flectra-brand-primary!important;
|
||||||
box-shadow: 0 1px 1px fade(@odoo-brand-primary, 10%);
|
box-shadow: 0 1px 1px fade(@flectra-brand-primary, 10%);
|
||||||
right: @w-header-arrow-length / sqrt(2) / 2;
|
right: @w-header-arrow-length / sqrt(2) / 2;
|
||||||
}
|
}
|
||||||
&::before {
|
&::before {
|
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 28 KiB |
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 8.2 KiB After Width: | Height: | Size: 8.2 KiB |
Before Width: | Height: | Size: 467 KiB After Width: | Height: | Size: 467 KiB |
Before Width: | Height: | Size: 499 B After Width: | Height: | Size: 499 B |
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 20 KiB |