Release beta, errores solucionados

This commit is contained in:
Juan Ferrer Toribio 2015-12-10 14:48:43 +01:00
parent 63342ba25b
commit 30e44654b0
77 changed files with 1122 additions and 600 deletions

View File

@ -117,8 +117,9 @@ class Web
$useCookies = TRUE;
$success = TRUE;
if (isset ($_GET['guest']))
if (isset ($_POST['guest']))
{
self::sysInit ();
$row = self::$sysConn->getRow (
'SELECT guest_user, guest_pass FROM config');

View File

@ -3,7 +3,12 @@
<vn-param id="address"/>
<vn-hash-param key="address" param="address"/>
<db-form id="iter" on-status-changed="onStatusChange">
<db-model property="model" id="model" updatable="true" mode="ON_DEMAND" on-operations-done="onOperationsDone">
<db-model
id="model"
property="model"
updatable="true"
mode="ON_DEMAND"
on-operations-done="onOperationsDone">
<custom>
SELECT a.id, a.name, a.consignee, a.city, a.zip_code, a.province_id, c.Id country_id
FROM address_view a
@ -57,6 +62,7 @@
<label><t>Country</t></label>
<htk-combo>
<db-param
id="country"
property="param"
form="iter"
column="country_id"

View File

@ -3,10 +3,49 @@
{
padding: 1em;
}
.about .cols
{
max-width: 85em;
margin: 0 auto;
}
@media screen and (min-width: 1000px) /* and (max-width: 1399px) */
{
.about .cols
{
column-count: 2;
-moz-column-count: 2;
-webkit-column-count: 2;
}
}/*
@media screen and (min-width: 1400px)
{
.about .cols
{
column-count: 3;
-moz-column-count: 3;
-webkit-column-count: 3;
}
}
@media screen and (min-width: 2000px)
{
.about .cols
{
column-count: 4;
-moz-column-count: 4;
-webkit-column-count: 4;
}
}*/
.about .box
{
max-width: 50em;
margin: 0 auto;
margin-bottom: 1em;
padding: 2em;
}
.about h1
{
padding: 0;
margin: 0;
font-weight: normal;
font-size: 1.6em;
}
.about h2
{
@ -20,28 +59,22 @@
text-align: center;
font-size: 1.2em;
font-weight: normal;
margin: 1em;
color: #4A1;
padding: 1em;
color: #00796B;
}
.about p
{
width: 90%;
display: block;
margin: 1em auto;
margin: 1em 0;
}
.summary
.about p.summary
{
padding-bottom: 1em;
}
.summary p
{
max-width: 30em;
max-width: 26em;
text-align: center;
background-color: #FF8;
padding: 1em;
border-radius: 0.1em;
box-shadow: 0 0.2em 0.2em #AAA;
margin: 2em auto;
margin: 1.5em auto;
}
/* Images */

View File

@ -3,11 +3,11 @@
<h1><t>About</t></h1>
</div>
<div id="form" class="about">
<div class="box">
<div>
<div class="header">
<h1><t>QualityAndVariety</t></h1>
</div>
<div class="cols">
<div class="box">
<h1>
<t>QualityAndVariety</t>
</h1>
<p><t>MaximumFreshness</t></p>
<h3><t>SquareMeters</t></h3>
<img src="forms/cms/about/image/store.png" alt="store"/>
@ -20,26 +20,26 @@
</p>
<img src="forms/cms/about/image/palletizing.png" alt="palletizing"/>
</div>
<div>
<div class="header">
<h1><t>WhatMakeUsDifferent</t></h1>
</div>
<div class="box">
<h1>
<t>WhatMakeUsDifferent</t>
</h1>
<p><t>DesignVariety</t></p>
<img src="forms/cms/about/image/differentiates_us.png" alt="differentiates_us"/>
<p><t>AdaptToYourNeeds</t></p>
<h3><t>TheBestQuality</t></h3>
</div>
<div>
<div class="header">
<h1><t>AtYourService</t></h1>
</div>
<div class="box">
<h1>
<t>AtYourService</t>
</h1>
<h2><t>BuyersAndTraders</t></h2>
<img src="forms/cms/about/image/commercial.png" alt="commercial"/>
</div>
<div>
<div class="header">
<h1><t>Training</t></h1>
</div>
<div class="box">
<h1>
<t>Verdnatura training</t>
</h1>
<p><t>GoodTraining</t></p>
<img src="forms/cms/about/image/training.png" alt="training"/>
<p><t>SpecialTrainingPrices</t></p>
@ -47,10 +47,10 @@
<h2><t>YoutubeChannel</t></h2>
<img src="forms/cms/about/image/youtube.png" alt="youtube"/>
</div>
<div>
<div class="header">
<h1><t>HowWeWork</t></h1>
</div>
<div class="box">
<h1>
<t>HowWeWork</t>
</h1>
<p><t>AalsmeerAuction</t></p>
<img src="forms/cms/about/image/auction.png" alt="auction"/>
<p><t>BeforeAuction</t></p>
@ -88,9 +88,7 @@
<p><t>AfterEmbedAgency</t></p>
<img src="forms/cms/about/image/agencies.png" alt="agencies"/>
<p><t>FreshnessGuaranteed</t></p>
</div>
<div class="summary">
<p>
<p class="summary">
<t>AboutSummary</t>
<img src="image/logo.svg" alt="Verdnatura"/>
</p>

View File

@ -26,7 +26,7 @@ header ('Content-Type: application/json');
if ($paramsOk && isset ($_SESSION['captcha'])
&& $_POST['captcha'] == $_SESSION['captcha'])
{
mail ('nuria@verdnatura.es', 'Verdnatura', print_r ($_POST, TRUE),
mail ('comunicacion@verdnatura.es', 'Verdnatura', print_r ($_POST, TRUE),
'From: Verdnatura <www-data@verdnatura.es>');
echo json_encode (TRUE);

View File

@ -2,5 +2,10 @@
Vn.Home = new Class
({
Extends: Vn.Form
,onStartOrderClick: function ()
{
this.hash.set ({'form': 'ecomerce/catalog'});
}
});

View File

@ -2,8 +2,15 @@
<div id="title">
<h1><t>Home</t></h1>
</div>
<div id="actions" class="catalog-actions">
<htk-button
image="image/dark/new-order.svg"
tip="_Start order"
on-click="onStartOrderClick"
showText="true"/>
</div>
<div id="form" class="home">
<div class="column mansonry" id="news-column">
<div class="column mansonry" id="news-column">
<htk-repeater form-id="new">
<db-model property="model">
<custom>
@ -24,11 +31,11 @@
<htk-html form="new" column="text"/>
</div>
</div>
<htk-image directory="news/full" form="new" column="image"/>
<htk-image directory="news/full" form="new" column="image" editable="false"/>
</div>
</div>
</custom>
</htk-repeater>
</div>
</div>
</div>
</vn>

View File

@ -5,23 +5,17 @@ Vn.Basket = new Class
,open: function ()
{
if (this.basketChecked)
this.parent ();
}
this.close ();
this.isOpen = true;
,activate: function ()
{
Vn.BasketChecker.check (this.conn,
this.onBasketCheck.bind (this));
}
,onBasketCheck: function (isOk)
{
if (!isOk)
return;
this.basketChecked = true;
this.open ();
if (isOk)
this.loadUi ();
}
,onConfigureClick: function ()

View File

@ -7,13 +7,10 @@ Vn.Catalog = new Class
,open: function ()
{
if (this.basketChecked)
this.parent ();
}
this.close ();
this.isOpen = true;
,activate: function ()
{
if (!Vn.Url.getQuery ('guest'))
if (!Vn.Cookie.check ('hedera_guest'))
{
Vn.BasketChecker.check (this.conn,
this.onBasketCheck.bind (this));
@ -21,46 +18,41 @@ Vn.Catalog = new Class
else
{
var query = 'CALL basket_configure_for_guest ()';
this.conn.execQuery (query, this.onBasketForGuest.bind (this));
this.conn.execQuery (query, this.loadUi.bind (this));
}
}
,close: function ()
{
if (this.node)
{
this.gui.$('top-bar').style.backgroundColor = '';
Vn.Node.remove (this.$('right-panel'));
}
this.parent ();
}
,onBasketForGuest: function ()
{
this.onBasketCheck (true);
}
,onBasketCheck: function (isOk)
{
if (!isOk)
return;
this.basketChecked = true;
this.open ();
if (isOk)
this.loadUi ();
}
,activate: function ()
{
document.body.appendChild (this.$('right-panel'));
this.popup = new Htk.Popup ();
this.popup.setChildNode (this.$('lots-popup'));
this.$('items-model').setInfo ('a', 'Articles', 'vn2008', ['Id_Article']);
this.setView ('GRID');
if (Vn.Cookie.check ('hedera_view'))
this.setView (Vn.Cookie.getInt ('hedera_view'));
else
this.setView (Vn.Catalog.View.GRID);
}
,deactivate: function ()
{
this.gui.$('top-bar').style.backgroundColor = '';
Vn.Node.remove (this.$('right-panel'));
}
,onSwitchViewClick: function ()
{
this.setView (this.view == 'LIST' ? 'GRID' : 'LIST');
this.setView (this.view === Vn.Catalog.View.LIST ?
Vn.Catalog.View.GRID : Vn.Catalog.View.LIST);
}
,setView: function (view)
@ -71,21 +63,30 @@ Vn.Catalog = new Class
this.viewHolder.model = null;
}
if (view == 'GRID')
if (view === Vn.Catalog.View.GRID)
{
this.view = 'GRID';
this.view = Vn.Catalog.View.GRID;
this.viewNode = this.$('grid-view').getNode ();
this.viewHolder = this.$('grid-view');
}
else
{
this.view = 'LIST';
this.view = Vn.Catalog.View.LIST;
this.viewNode = this.$('list-view');
this.viewHolder = this.$('items-grid');
}
this.$('main').appendChild (this.viewNode);
this.viewHolder.model = this.$('items-model');
Vn.Cookie.set ('hedera_view', this.view)
}
,onBasketReady: function (form)
{
if (form.get ('method') != 'PICKUP')
Vn.Node.setText (this.$('method'), _('Agency'));
else
Vn.Node.setText (this.$('method'), _('Warehouse'));
}
,typeRenderer: function (builder, form)
@ -110,22 +111,25 @@ Vn.Catalog = new Class
,onTypeChange: function ()
{
if (this._menuShown && this.$('type').value)
if (this.$('type').value)
this.hideMenu ();
this.refreshTitle ();
}
,refreshTitleColor: function ()
{
var realms = this.$('realms-model');
return;
if (!realms.ready)
return;
this.refreshTitle ();
var color = null;
var realm = this.$('realm').value;
if (this.$('type').value)
if (realm)
{
var row = realms.search ('id', this.$('realm').value);
var row = realms.search ('id', realm);
if (row != -1)
color = '#'+ realms.get (row, 'color');
@ -134,7 +138,7 @@ Vn.Catalog = new Class
this.gui.$('top-bar').style.backgroundColor = color;
}
,refreshTitle: function (title)
,refreshTitle: function ()
{
var types = this.$('types-model');
@ -142,16 +146,15 @@ Vn.Catalog = new Class
return;
var title = _('Catalog');
var type = this.$('type').value;
if (this.$('type').value)
if (type)
{
var row = types.search ('tipo_id', this.$('type').value);
var row = types.search ('tipo_id', type);
if (row != -1)
title = types.get (row, 'Tipo');
title = types.get (row, 'name');
}
else if (this.$('search').value)
title = _('SearchResults');
Vn.Node.setText (this.$('title-text'), title);
}
@ -184,12 +187,20 @@ Vn.Catalog = new Class
,onBasketClick: function ()
{
if (!Vn.Url.getQuery ('guest'))
if (!Vn.Cookie.check ('hedera_guest'))
this.hash.set ({'form': 'ecomerce/basket'});
else
Htk.Toast.showError (_('YouMustBeLoggedIn'));
}
,onConfigureClick: function ()
{
if (!Vn.Cookie.check ('hedera_guest'))
this.hash.set ({'form': 'ecomerce/checkout'});
else
Htk.Toast.showError (_('YouMustBeLoggedIn'));
}
,nameRenderer: function (renderer, form)
{
renderer.subtitle = form.get ('producer');
@ -256,7 +267,7 @@ Vn.Catalog = new Class
,showAmountPopup: function (button, row)
{
if (Vn.Url.getQuery ('guest'))
if (Vn.Cookie.check ('hedera_guest'))
{
Htk.Toast.showError (_('YouMustBeLoggedIn'));
return;
@ -562,6 +573,14 @@ Vn.Filter = new Class
this._label.nodeValue = _('Loading...');
}
}
})
Vn.Catalog.extend
({
View: {
LIST: 0,
GRID: 1
}
});
Vn.ColumnItem = new Class
@ -589,5 +608,5 @@ Vn.ColumnItem = new Class
return td;
}
});
})

View File

@ -36,16 +36,11 @@
.catalog-actions > .htk-search-entry
{
margin-top: .8em;
margin-right: .4em;
}
/* Right panel */
.right-panel > .body
{
text-align: center;
padding: 1em;
overflow: auto;
}
.right-panel
{
position: absolute;
@ -54,31 +49,68 @@
right: 0;
width: 17em;
background-color: white;
box-shadow: 0 0.2em 0.2em #AAA;
box-shadow: 0 0.2em 0.2em rgba(1, 1, 1, 0.4);
overflow: auto;
}
.right-panel > .body
{
text-align: center;
}
.right-panel .section
{
padding: 1.2em 2em;
}
.right-panel .section > button
{
display: block;
margin: 0 auto;
margin-top: .4em;
}
.right-panel .basket-info
{
background-color: #00acc1;
color: white;
box-shadow: 0 0.1em 0.1em rgba(1, 1, 1, 0.3);
}
.right-panel .basket-info > button
{
color: #e0f2f1;
}
.right-panel .basket-info > p
{
margin: 0;
padding: .4em 0;
font-size: 1.1em;
text-align: left;
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
}
.right-panel .filters
{
}
.right-panel .section > select,
.right-panel .section > .vn-filter
{
margin-bottom: 1em;
}
.right-panel select
{
margin: .8em auto;
width: 12em;
/* color: #333;
background-color: #EEE;
border: 0;*/
margin: 0 auto;
width: 100%;
}
option.placeholder
{
color: #999;
}
.vn-filter ul
.vn-filter > ul
{
margin: 0;
list-style-type: none;
text-align: left;
color: #666;
padding-left: 2em;
padding-left: 1.5em;
}
.vn-filter li
{
margin: 0;
margin-top: .4em;
line-height: 2em;
text-overflow: ellipsis;
white-space: nowrap;
@ -92,71 +124,6 @@ option.placeholder
padding: .2em;
margin-right: .2em;
}
.right-panel .remove-filters
{
margin-top: 1.2em;
}
button.basket
{
width: 100%;
height: 3em;
font-size: 1.1em;
text-align: center;
background-color: #00BCD4;
border-radius: 0;
}
button.basket:hover
{
background-color: #0AB;
}
/* Realms */
.realms-box
{
box-shadow: 0 0 0.4em #AAA;
background-color: rgba(1, 1, 1, .1);
}
.realms-box a
{
display: block;
float: left;
line-height: 0;
width: 33.3%;
}
.realms-box a > img
{
width: 100%;
border: 0;
padding: 0;
cursor: pointer;
}
.realms-box img:hover
{
opacity: 0.85;
}
/* Types */
.types-box
{
position: absolute;
top: 11.5em;
bottom: 0;
right: 0;
left: 0;
overflow: auto;
}
.types-box a
{
padding: .5em 1.5em;
display: block;
}
.types-box a:hover
{
background-color: rgba(1, 1, 1, .1);
}
/* Item description */
@ -270,10 +237,10 @@ td.third-category
float: left;
margin-right: 1em;
}
.item-box img
.item-box > .image > img
{
max-width: 9em;
max-height: 9em;
max-width: 100%;
height: 100%;
display: block;
margin: 0 auto;
border-radius: .3em;

View File

@ -1,7 +1,7 @@
<vn>
<vn-group>
<vn-param id="search"/>
<vn-param id="realm" on-changed="onTypeChange"/>
<vn-param id="realm" on-changed="refreshTitleColor"/>
<vn-param id="type" on-changed="onTypeChange"/>
<vn-param id="color"/>
<vn-param id="origin"/>
@ -88,6 +88,16 @@
</custom>
<sql-batch property="batch" id="lots-batch"/>
</db-model>
<db-form id="basket" on-ready="onBasketReady">
<db-model property="model">
<custom>
SELECT o.id, o.date_send, ag.description agency, v.code method
FROM basket o
JOIN vn2008.Agencias ag ON ag.Id_Agencia = o.agency_id
JOIN vn2008.Vistas v ON v.vista_id = o.delivery_method_id
</custom>
</db-model>
</db-form>
</vn-group>
<div id="title">
<h1 id="title-text"><t>Catalog</t></h1>
@ -175,7 +185,8 @@
form="item"
column="Foto"
show-full="true"
full-dir="900x900"/>
full-dir="900x900"
editable="true"/>
</div>
<htk-button
form="item"
@ -219,10 +230,22 @@
</custom>
</htk-repeater>
<div id="right-panel" class="right-panel" on-click="onRightPanelClick">
<div class="body">
<div class="section basket-info">
<p>
<htk-text form="basket" column="date_send" format="_%A, %e of %B"/>
</p>
<p>
<span id="method"/>
<htk-text form="basket" column="agency"/>
</p>
<button class="thin" on-click="onConfigureClick">
<t>Configure</t>
</button>
</div>
<div class="section filters">
<select on-change="onOrderChange">
<option value="" disabled="true" selected="true">
<t>Order by</t>
<t>Order</t>
</option>
<option value="Article">
<t>Name</t>
@ -255,7 +278,7 @@
<db-model
id="realms-model"
property="model"
on-status-changed="onTypeChange">
on-status-changed="refreshTitleColor">
<custom>
SELECT r.id, l.str name, r.color
FROM vn2008.reinos r
@ -387,45 +410,10 @@
<pointer object="op-producer"/>
</sql-filter>
</vn-filter>
<button class="remove-filters thin" on-click="onRemoveFiltersClick">
<button class="thin" on-click="onRemoveFiltersClick">
<t>Remove filters</t>
</button>
</div>
<!--
<htk-repeater
model="realms-model"
form-id="realm-form"
renderer="realmRenderer"
class="realms-box">
<db-model id="realms-model" on-status-changed="onTypeChange">
SELECT id, reino, color FROM vn2008.reinos
WHERE display != FALSE ORDER BY reino
</db-model>
<template>
<a id="link">
<img id="image"/>
</a>
</template>
</htk-repeater>
<htk-repeater
model="types-model"
form-id="type-form"
renderer="typeRenderer"
empty-message="_SelectFamily"
class="types-box">
<db-model id="types-model" on-status-changed="refreshTitle">
CALL type_list (#realm)
<sql-batch property="batch">
<item name="realm" param="realm"/>
</sql-batch>
</db-model>
<template>
<a id="link">
<htk-text form="type-form" column="Tipo"/>
</a>
</template>
</htk-repeater>
-->
</div>
<div id="desc-popup" class="desc-popup"/>
<div id="lots-popup" class="lots-popup">

View File

@ -45,8 +45,17 @@ Vn.Checkout = new Class
this.autoStepLocked = false;
}
,disableButtons: function (disable)
{
this.$('confirm-agency').disabled = disable;
this.$('confirm-delivery').disabled = disable;
this.$('confirm-pickup').disabled = disable;
}
,onConfirmClick: function ()
{
this.disableButtons (true);
var query = 'CALL basket_configure (#date, #method, #agency, #address)';
var batch = new Sql.Batch ();
@ -61,6 +70,8 @@ Vn.Checkout = new Class
,onBasketConfigured: function (resultSet)
{
this.disableButtons (false);
if (!resultSet.fetchResult ())
return;

View File

@ -176,7 +176,7 @@
<t>Agency</t>
<htk-text form="agency-combo" column="description"/>
</p>
<button class="thin" on-click="onConfirmClick">
<button id="confirm-agency" class="thin" on-click="onConfirmClick">
<t>Confirm</t>
</button>
<div class="clear"/>
@ -195,7 +195,7 @@
<p>
<t>ReceiveThroughtRoute</t>
</p>
<button class="thin" on-click="onConfirmClick">
<button id="confirm-delivery" class="thin" on-click="onConfirmClick">
<t>Confirm</t>
</button>
<div class="clear"/>
@ -212,7 +212,7 @@
<t>Warehouse</t>
<htk-text form="warehouse-combo" column="description"/>
</p>
<button class="thin" on-click="onConfirmClick">
<button id="confirm-pickup" class="thin" on-click="onConfirmClick">
<t>Confirm</t>
</button>
<div class="clear"/>

View File

@ -3,6 +3,21 @@ Vn.Confirm = new Class
({
Extends: Vn.Form
,open: function ()
{
this.close ();
this.isOpen = true;
Vn.BasketChecker.check (this.conn,
this.onBasketCheck.bind (this));
}
,onBasketCheck: function (isOk)
{
if (isOk)
this.loadUi ();
}
,onOrderReady: function (form)
{
if (form.row < 0)

View File

@ -6,7 +6,7 @@
<db-model property="model" id="ticket-data">
<custom>
SELECT t.id, date, a.Agencia, note, p.name province,
zip_code, city, c.name, consignee, invoice
zip_code, city, c.name, consignee, invoice, delivery
FROM ticket_view t
JOIN address_view c ON t.address_id = c.id
JOIN vn2008.Agencias a ON t.agency_id = a.Id_Agencia
@ -38,6 +38,9 @@
<p class="important ticket-id">
<htk-text column="id" form="ticket"/>
</p>
<p>
<htk-text form="ticket" column="delivery" format="%A, %e of %B %Y"/>
</p>
</div>
<div>
<p>

View File

@ -1,4 +1,7 @@
Vn.include ('js/misc/tinymce/tinymce.min');
Vn.define (function () {
Vn.New = new Class
({
Extends: Vn.Form
@ -68,3 +71,5 @@ Vn.New = new Class
}
});
});

View File

@ -1,8 +1,7 @@
<vn>
<vn-group>
<vn-hash-param key="new">
<vn-param id="new-id"/>
</vn-hash-param>
<vn-param id="new-id"/>
<vn-hash-param key="new" param="new-id"/>
<db-form id="iter" on-status-changed="onStatusChange">
<db-model
id="model"

View File

@ -37,7 +37,7 @@
{
display: block;
margin: 0 auto;
max-height: 100%;
height: 100%;
max-width: 100%;
border-radius: .3em;
}

View File

@ -11,22 +11,6 @@
</div>
<div id="form" class="news">
<div class="box">
<htk-grid show-header="false">
<htk-column-button
column="id"
tip="_EditNew"
image="image/edit.svg"
on-clicked="onEditClick"/>
<htk-column-image
column="image"
directory="news"
subdir="50x50"
show-full="true"
editable="true"/>
<htk-column-text title="_Title" column="title"/>
<htk-column-text title="_Author" column="Cliente"/>
<htk-column-spin title="_Priority" column="priority"/>
</htk-grid>
<htk-repeater form-id="iter">
<db-model property="model" id="news-model" updatable="true">
<custom>

77
web/image/add-photo.svg Normal file
View File

@ -0,0 +1,77 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
height="16"
viewBox="0 0 16 16"
width="16"
id="svg2"
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="add-photo.svg"
style="fill:#000000">
<metadata
id="metadata14">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1016"
id="namedview12"
showgrid="false"
inkscape:zoom="9.8333333"
inkscape:cx="12.20339"
inkscape:cy="12"
inkscape:window-x="1920"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="svg2" />
<defs
id="defs4">
<path
d="M 24,24 0,24 0,0 24,0 24,24 Z"
id="a"
inkscape:connector-curvature="0" />
</defs>
<clipPath
id="b">
<use
overflow="visible"
xlink:href="#a"
id="use8"
style="overflow:visible"
x="0"
y="0"
width="100%"
height="100%" />
</clipPath>
<path
clip-path="url(#b)"
d="M 3,4 3,1 5,1 5,4 8,4 8,6 5,6 5,9 3,9 3,6 0,6 0,4 3,4 Z M 6,10 6,7 9,7 9,4 16,4 17.83,6 21,6 c 1.1,0 2,0.9 2,2 l 0,12 c 0,1.1 -0.9,2 -2,2 L 5,22 C 3.9,22 3,21.1 3,20 l 0,-10 3,0 z m 7,9 c 2.76,0 5,-2.24 5,-5 0,-2.76 -2.24,-5 -5,-5 -2.76,0 -5,2.24 -5,5 0,2.76 2.24,5 5,5 z M 9.8,14 c 0,1.77 1.43,3.2 3.2,3.2 1.77,0 3.2,-1.43 3.2,-3.2 0,-1.77 -1.43,-3.2 -3.2,-3.2 -1.77,0 -3.2,1.43 -3.2,3.2 z"
id="path10"
inkscape:connector-curvature="0"
transform="matrix(0.60869565,0,0,0.60869565,1,1)"
style="fill:#666666;fill-opacity:1" />
</svg>

After

Width:  |  Height:  |  Size: 2.4 KiB

View File

@ -0,0 +1,65 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="Layer_1"
x="0px"
y="0px"
width="16"
height="16"
viewBox="0 0 16 16"
enable-background="new 0 0 512 512"
xml:space="preserve"
inkscape:version="0.91 r13725"
sodipodi:docname="new-order.svg"><metadata
id="metadata11"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
id="defs9" /><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1016"
id="namedview7"
showgrid="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:zoom="51.6875"
inkscape:cx="7.544033"
inkscape:cy="7.9613059"
inkscape:window-x="1920"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="Layer_1" /><g
id="g2988"
transform="matrix(0.03325942,0,0,0.03325942,-0.51441152,-0.68070862)"
style="fill:#ffffff;fill-opacity:1"><path
id="path3"
d="m 461.5,222 h -411 c -11.046,0 -20,8.954 -20,20 l 40,207 c 0,11.046 8.954,20 20,20 h 331 c 11.046,0 20,-8.954 20,-20 l 40,-207 c 0,-11.046 -8.954,-20 -20,-20 z M 138,403.5 c 0,5.799 -4.701,10.5 -10.5,10.5 h 0 c -5.799,0 -10.5,-4.701 -10.5,-10.5 v -117 c 0,-5.799 4.701,-10.5 10.5,-10.5 h 0.001 c 5.799,0 10.5,4.701 10.5,10.5 v 117 z m 66,0 c 0,5.799 -4.701,10.5 -10.5,10.5 h 0 c -5.799,0 -10.5,-4.701 -10.5,-10.5 v -117 c 0,-5.799 4.701,-10.5 10.5,-10.5 h 0.001 c 5.798,0 10.5,4.701 10.5,10.5 v 117 z m 62,0 c 0,5.799 -4.701,10.5 -10.5,10.5 h 0 c -5.799,0 -10.5,-4.701 -10.5,-10.5 v -117 c 0,-5.799 4.701,-10.5 10.5,-10.5 h 0.001 c 5.798,0 10.5,4.701 10.5,10.5 v 117 z m 65,0 c 0,5.799 -4.701,10.5 -10.5,10.5 -5.799,0 -10.5,-4.701 -10.5,-10.5 v -117 c 0,-5.799 4.701,-10.5 10.5,-10.5 5.799,0 10.5,4.701 10.5,10.5 v 117 z m 65,0 c 0,5.799 -4.701,10.5 -10.5,10.5 -5.799,0 -10.5,-4.701 -10.5,-10.5 v -117 c 0,-5.799 4.701,-10.5 10.5,-10.5 5.799,0 10.5,4.701 10.5,10.5 v 117 z"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" /><path
id="path5"
d="M 319.9,71.008 C 318.899,60.897 310.373,53 300,53 l -87,0 c -10.387,0 -18.92,7.919 -19.901,18.049 -19.155,-0.169 -49.697,-0.793 -60.374,3.647 -19.07,7.12 -34.01,24.74 -37.04,44.99 -4.64,29.089 -9.399,58.169 -13.91,87.291 6.721,0.029 13.44,0.159 20.16,-0.021 4.53,-27.64 8.83,-55.31 13.34,-82.95 1.83,-16.4 15.96,-30.24 32.12,-32.61 C 154.332,90.778 178.309,91 193.67,91.053 195.911,99.648 203.703,106 213,106 l 87,0 c 9.31,0 17.11,-6.37 19.34,-14.982 1.40554,-6.929611 1.55505,-12.101213 0.56,-20.01 z"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1"
sodipodi:nodetypes="cssccccccccsscc" /></g><path
style="color:#bebebe;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;stroke:#ff0b0b;stroke-width:0;stroke-linejoin:round;stroke-miterlimit:26.89999962;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none"
d="m 12.193371,0.78469625 0,1.99999315 -1.999993,0 0,0.9999966 1.999993,0 0,1.9999934 0.999997,0 0,-1.9999934 1.999994,0 0,-0.9999966 -1.999994,0 0,-1.99999315 -0.999997,0 z"
id="rect31992"
inkscape:connector-curvature="0" /></svg>

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 817 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.3 KiB

65
web/image/new-order.svg Normal file
View File

@ -0,0 +1,65 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="Layer_1"
x="0px"
y="0px"
width="16"
height="16"
viewBox="0 0 16 16"
enable-background="new 0 0 512 512"
xml:space="preserve"
inkscape:version="0.91 r13725"
sodipodi:docname="new-order.svg"><metadata
id="metadata11"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
id="defs9" /><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1016"
id="namedview7"
showgrid="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:zoom="51.6875"
inkscape:cx="8"
inkscape:cy="8"
inkscape:window-x="1920"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="Layer_1" /><g
id="g2988"
transform="matrix(0.03325942,0,0,0.03325942,-0.51441152,-0.68070862)"
style="fill:#666666;fill-opacity:1"><path
id="path3"
d="m 461.5,222 h -411 c -11.046,0 -20,8.954 -20,20 l 40,207 c 0,11.046 8.954,20 20,20 h 331 c 11.046,0 20,-8.954 20,-20 l 40,-207 c 0,-11.046 -8.954,-20 -20,-20 z M 138,403.5 c 0,5.799 -4.701,10.5 -10.5,10.5 h 0 c -5.799,0 -10.5,-4.701 -10.5,-10.5 v -117 c 0,-5.799 4.701,-10.5 10.5,-10.5 h 0.001 c 5.799,0 10.5,4.701 10.5,10.5 v 117 z m 66,0 c 0,5.799 -4.701,10.5 -10.5,10.5 h 0 c -5.799,0 -10.5,-4.701 -10.5,-10.5 v -117 c 0,-5.799 4.701,-10.5 10.5,-10.5 h 0.001 c 5.798,0 10.5,4.701 10.5,10.5 v 117 z m 62,0 c 0,5.799 -4.701,10.5 -10.5,10.5 h 0 c -5.799,0 -10.5,-4.701 -10.5,-10.5 v -117 c 0,-5.799 4.701,-10.5 10.5,-10.5 h 0.001 c 5.798,0 10.5,4.701 10.5,10.5 v 117 z m 65,0 c 0,5.799 -4.701,10.5 -10.5,10.5 -5.799,0 -10.5,-4.701 -10.5,-10.5 v -117 c 0,-5.799 4.701,-10.5 10.5,-10.5 5.799,0 10.5,4.701 10.5,10.5 v 117 z m 65,0 c 0,5.799 -4.701,10.5 -10.5,10.5 -5.799,0 -10.5,-4.701 -10.5,-10.5 v -117 c 0,-5.799 4.701,-10.5 10.5,-10.5 5.799,0 10.5,4.701 10.5,10.5 v 117 z"
inkscape:connector-curvature="0"
style="fill:#666666;fill-opacity:1" /><path
id="path5"
d="M 319.9,71.008 C 318.899,60.897 310.373,53 300,53 l -87,0 c -10.387,0 -18.92,7.919 -19.901,18.049 -19.155,-0.169 -49.697,-0.793 -60.374,3.647 -19.07,7.12 -34.01,24.74 -37.04,44.99 -4.64,29.089 -9.399,58.169 -13.91,87.291 6.721,0.029 13.44,0.159 20.16,-0.021 4.53,-27.64 8.83,-55.31 13.34,-82.95 1.83,-16.4 15.96,-30.24 32.12,-32.61 C 154.332,90.778 178.309,91 193.67,91.053 195.911,99.648 203.703,106 213,106 l 87,0 c 9.31,0 17.11,-6.37 19.34,-14.982 1.40554,-6.929611 1.55505,-12.101213 0.56,-20.01 z"
inkscape:connector-curvature="0"
style="fill:#666666;fill-opacity:1"
sodipodi:nodetypes="cssccccccccsscc" /></g><path
style="color:#bebebe;display:inline;overflow:visible;visibility:visible;fill:#666666;fill-opacity:1;stroke:#ff0b0b;stroke-width:0;stroke-linejoin:round;stroke-miterlimit:26.89999962;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none"
d="m 12.193371,0.78469625 0,1.99999315 -1.999993,0 0,0.9999966 1.999993,0 0,1.9999934 0.999997,0 0,-1.9999934 1.999994,0 0,-0.9999966 -1.999994,0 0,-1.99999315 -0.999997,0 z"
id="rect31992"
inkscape:connector-curvature="0" /></svg>

After

Width:  |  Height:  |  Size: 4.0 KiB

View File

@ -12,7 +12,7 @@
sodipodi:docname="unavailable.svg"
height="16"
id="svg7384"
inkscape:version="0.48.5 r10040"
inkscape:version="0.91 r13725"
version="1.1"
width="16">
<metadata
@ -33,8 +33,8 @@
bordercolor="#666666"
borderopacity="1"
inkscape:current-layer="layer9"
inkscape:cx="7.0453912"
inkscape:cy="10.43808"
inkscape:cx="8"
inkscape:cy="8"
gridtolerance="10"
inkscape:guide-bbox="true"
guidetolerance="10"
@ -55,12 +55,12 @@
inkscape:snap-nodes="true"
inkscape:snap-others="false"
inkscape:snap-to-guides="true"
inkscape:window-height="702"
inkscape:window-height="1016"
inkscape:window-maximized="1"
inkscape:window-width="1366"
inkscape:window-x="0"
inkscape:window-width="1920"
inkscape:window-x="1920"
inkscape:window-y="27"
inkscape:zoom="23.610133">
inkscape:zoom="51.6875">
<inkscape:grid
empspacing="2"
enabled="true"
@ -100,9 +100,9 @@
transform="translate(-321,-257)">
<path
inkscape:connector-curvature="0"
d="m 328.90645,257.09375 c -0.5255,-0.0286 -1.03823,0.28305 -1.4375,0.96875 l -6.25,11.59375 C 320.68548,270.61964 321.26717,272 322.3127,272 l 13.15625,0 c 0.98172,0 1.90311,-1.15939 1.21875,-2.34375 L 330.3752,258.125 c -0.39872,-0.64617 -0.94325,-1.00262 -1.46875,-1.03125 z m 0.0625,3.9375 c 0.54448,-0.0172 1.04849,0.48677 1.03125,1.03125 l 0,3.9375 c 0.007,0.52831 -0.47163,1 -1,1 -0.52836,0 -1.00747,-0.47169 -1,-1 l 0,-3.9375 c -0.008,-0.4666 0.3541,-0.91253 0.8125,-1 0.0511,-0.0145 0.10345,-0.0249 0.15625,-0.0312 z M 329.0002,268 c 0.55228,0 1,0.44772 1,1 0,0.55228 -0.44772,1 -1,1 -0.55228,0 -1,-0.44772 -1,-1 0,-0.55228 0.44772,-1 1,-1 z"
d="m 328.94324,258.44109 c -0.4625,-0.0252 -0.91377,0.24912 -1.26518,0.85263 l -5.50079,10.20397 c -0.46952,0.84791 0.0424,2.0628 0.96264,2.0628 l 11.57917,0 c 0.86404,0 1.67498,-1.02041 1.07266,-2.0628 l -5.55581,-10.14897 c -0.35092,-0.56871 -0.83018,-0.88243 -1.29269,-0.90763 z m 0.055,3.4655 c 0.47921,-0.0151 0.92281,0.42842 0.90763,0.90764 l 0,3.4655 c 0.006,0.46498 -0.41509,0.88012 -0.88012,0.88012 -0.46503,0 -0.8867,-0.41514 -0.88013,-0.88012 l 0,-3.4655 c -0.007,-0.41067 0.31165,-0.80315 0.7151,-0.88013 0.045,-0.0128 0.091,-0.0219 0.13752,-0.0275 z m 0.0275,6.13339 c 0.48608,0 0.88013,0.39405 0.88013,0.88013 0,0.48607 -0.39405,0.88013 -0.88013,0.88013 -0.48607,0 -0.88012,-0.39406 -0.88012,-0.88013 0,-0.48608 0.39405,-0.88013 0.88012,-0.88013 z"
id="path18112"
style="color:#bebebe;fill:#ee3333;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.78124988000000006;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" />
style="color:#bebebe;display:inline;overflow:visible;visibility:visible;fill:#ee3333;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.78124988;marker:none;enable-background:new" />
</g>
<g
inkscape:groupmode="layer"

Before

Width:  |  Height:  |  Size: 4.9 KiB

After

Width:  |  Height:  |  Size: 4.9 KiB

View File

@ -11,9 +11,9 @@
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
id="svg7384"
version="1.1"
inkscape:version="0.48.5 r10040"
inkscape:version="0.91 r13725"
height="16"
sodipodi:docname="info.svg"
sodipodi:docname="unknown.svg"
width="16">
<metadata
id="metadata90">
@ -28,7 +28,7 @@
</rdf:RDF>
</metadata>
<sodipodi:namedview
inkscape:cy="2.2028437"
inkscape:cy="8"
inkscape:current-layer="layer9"
inkscape:window-width="1920"
pagecolor="#555753"
@ -48,11 +48,11 @@
inkscape:snap-global="true"
inkscape:window-y="27"
gridtolerance="10"
inkscape:zoom="7.9687808"
inkscape:window-height="1014"
inkscape:zoom="51.6875"
inkscape:window-height="1016"
borderopacity="1"
guidetolerance="10"
inkscape:cx="5.435957"
inkscape:cx="8"
inkscape:bbox-paths="false"
inkscape:snap-grids="true"
inkscape:pageopacity="1"
@ -78,9 +78,9 @@
inkscape:label="status"
style="display:inline">
<path
d="m 287.53551,259.96102 c -0.32661,0 -0.66541,0.12985 -0.91815,0.38255 l -5.20278,5.20277 c -0.50544,0.50543 -0.50544,1.33087 0,1.83629 l 5.20278,5.20279 c 0.50544,0.50541 1.33084,0.50541 1.83629,0 l 5.20277,-5.20279 c 0.50544,-0.50542 0.50544,-1.33086 0,-1.83629 l -5.20277,-5.20277 c -0.25273,-0.2527 -0.59154,-0.38255 -0.91814,-0.38255 z m -0.15302,2.42286 c 1.34042,-0.075 2.52629,0.95493 2.60138,2.29534 -8e-5,1.14368 -0.30825,1.56841 -1.30069,2.32085 -0.15583,0.11723 -0.26573,0.20453 -0.30604,0.25504 -0.0403,0.0507 -0.0254,0.0271 -0.0254,0.0254 0.006,0.43119 -0.38491,0.81613 -0.81612,0.81613 -0.43122,0 -0.82184,-0.38494 -0.81612,-0.81613 0,-0.41 0.183,-0.76994 0.38255,-1.02014 0.19955,-0.25025 0.40096,-0.42144 0.58659,-0.56109 0.16652,-0.13104 0.37609,-0.31383 0.56108,-0.53558 0.0763,-0.0915 0.10528,-0.25108 0.10202,-0.35706 l 0,-0.0255 c -0.0258,-0.45966 -0.40746,-0.7909 -0.86714,-0.76511 -0.45966,0.0258 -0.79089,0.35644 -0.7651,0.81613 l -1.63226,0 c -0.075,-1.34043 0.95494,-2.37322 2.29535,-2.44838 z m 0.15302,6.52899 c 0.45072,0 0.81612,0.36539 0.81612,0.81611 0,0.45073 -0.3654,0.81612 -0.81612,0.81612 -0.45072,0 -0.81612,-0.36539 -0.81612,-0.81612 0,-0.45072 0.3654,-0.81611 0.81612,-0.81611 z"
d="m 289.00021,258.49827 c -0.32661,0 -0.66541,0.12985 -0.91815,0.38255 l -5.20278,5.20277 c -0.50544,0.50543 -0.50544,1.33087 0,1.83629 l 5.20278,5.20279 c 0.50544,0.50541 1.33084,0.50541 1.83629,0 l 5.20277,-5.20279 c 0.50544,-0.50542 0.50544,-1.33086 0,-1.83629 l -5.20277,-5.20277 c -0.25273,-0.2527 -0.59154,-0.38255 -0.91814,-0.38255 z m -0.15302,2.42286 c 1.34042,-0.075 2.52629,0.95493 2.60138,2.29534 -8e-5,1.14368 -0.30825,1.56841 -1.30069,2.32085 -0.15583,0.11723 -0.26573,0.20453 -0.30604,0.25504 -0.0403,0.0507 -0.0254,0.0271 -0.0254,0.0254 0.006,0.43119 -0.38491,0.81613 -0.81612,0.81613 -0.43122,0 -0.82184,-0.38494 -0.81612,-0.81613 0,-0.41 0.183,-0.76994 0.38255,-1.02014 0.19955,-0.25025 0.40096,-0.42144 0.58659,-0.56109 0.16652,-0.13104 0.37609,-0.31383 0.56108,-0.53558 0.0763,-0.0915 0.10528,-0.25108 0.10202,-0.35706 l 0,-0.0255 c -0.0258,-0.45966 -0.40746,-0.7909 -0.86714,-0.76511 -0.45966,0.0258 -0.79089,0.35644 -0.7651,0.81613 l -1.63226,0 c -0.075,-1.34043 0.95494,-2.37322 2.29535,-2.44838 z m 0.15302,6.52899 c 0.45072,0 0.81612,0.36539 0.81612,0.81611 0,0.45073 -0.3654,0.81612 -0.81612,0.81612 -0.45072,0 -0.81612,-0.36539 -0.81612,-0.81612 0,-0.45072 0.3654,-0.81611 0.81612,-0.81611 z"
id="path19592"
style="color:#bebebe;fill:#748cc9;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
style="color:#bebebe;display:inline;overflow:visible;visibility:visible;fill:#748cc9;fill-opacity:1;stroke:none;stroke-width:2;marker:none"
inkscape:connector-curvature="0" />
</g>
<g

Before

Width:  |  Height:  |  Size: 4.6 KiB

After

Width:  |  Height:  |  Size: 4.6 KiB

View File

@ -33,8 +33,8 @@
bordercolor="#666666"
borderopacity="1"
inkscape:current-layer="layer9"
inkscape:cx="-4.1997805"
inkscape:cy="10.353371"
inkscape:cx="8"
inkscape:cy="8"
gridtolerance="10"
inkscape:guide-bbox="true"
guidetolerance="10"
@ -60,7 +60,7 @@
inkscape:window-width="1920"
inkscape:window-x="1920"
inkscape:window-y="27"
inkscape:zoom="23.610133">
inkscape:zoom="51.6875">
<inkscape:grid
empspacing="2"
enabled="true"
@ -100,9 +100,9 @@
transform="translate(-321,-257)">
<path
inkscape:connector-curvature="0"
d="m 328.90645,257.09375 c -0.5255,-0.0286 -1.03823,0.28305 -1.4375,0.96875 l -6.25,11.59375 C 320.68548,270.61964 321.26717,272 322.3127,272 l 13.15625,0 c 0.98172,0 1.90311,-1.15939 1.21875,-2.34375 L 330.3752,258.125 c -0.39872,-0.64617 -0.94325,-1.00262 -1.46875,-1.03125 z m 0.0625,3.9375 c 0.54448,-0.0172 1.04849,0.48677 1.03125,1.03125 l 0,3.9375 c 0.007,0.52831 -0.47163,1 -1,1 -0.52836,0 -1.00747,-0.47169 -1,-1 l 0,-3.9375 c -0.008,-0.4666 0.3541,-0.91253 0.8125,-1 0.0511,-0.0145 0.10345,-0.0249 0.15625,-0.0312 z M 329.0002,268 c 0.55228,0 1,0.44772 1,1 0,0.55228 -0.44772,1 -1,1 -0.55228,0 -1,-0.44772 -1,-1 0,-0.55228 0.44772,-1 1,-1 z"
d="m 328.94324,258.44109 c -0.4625,-0.0252 -0.91377,0.24912 -1.26518,0.85263 l -5.50079,10.20397 c -0.46952,0.84791 0.0424,2.0628 0.96264,2.0628 l 11.57917,0 c 0.86404,0 1.67498,-1.02041 1.07266,-2.0628 l -5.55581,-10.14897 c -0.35092,-0.56871 -0.83018,-0.88243 -1.29269,-0.90763 z m 0.055,3.4655 c 0.47921,-0.0151 0.92281,0.42842 0.90763,0.90764 l 0,3.4655 c 0.006,0.46498 -0.41509,0.88012 -0.88012,0.88012 -0.46503,0 -0.8867,-0.41514 -0.88013,-0.88012 l 0,-3.4655 c -0.007,-0.41067 0.31165,-0.80315 0.7151,-0.88013 0.045,-0.0128 0.091,-0.0219 0.13752,-0.0275 z m 0.0275,6.13339 c 0.48608,0 0.88013,0.39405 0.88013,0.88013 0,0.48607 -0.39405,0.88013 -0.88013,0.88013 -0.48607,0 -0.88012,-0.39406 -0.88012,-0.88013 0,-0.48608 0.39405,-0.88013 0.88012,-0.88013 z"
id="path18112"
style="color:#bebebe;fill:#ffb920;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.78124988;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" />
style="color:#bebebe;display:inline;overflow:visible;visibility:visible;fill:#ffb920;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.78124988;marker:none;enable-background:new" />
</g>
<g
inkscape:groupmode="layer"

Before

Width:  |  Height:  |  Size: 4.8 KiB

After

Width:  |  Height:  |  Size: 4.9 KiB

View File

@ -47,7 +47,7 @@ Db.Conn.implement
* @param {Boolean} remember Specifies if the user should be remembered
* @param {Function} openCallback The function to call when operation is done
**/
,open: function (user, pass, remember, openCallback)
,open: function (user, pass, remember, openCallback, guest)
{
this.signalEmit ('loading-changed', true);
@ -63,6 +63,8 @@ Db.Conn.implement
,'remember': remember
});
}
else if (guest)
request.add ({'guest': true});
request.send ('rest.php',
this.opened.bind (this, request, openCallback));

View File

@ -94,17 +94,12 @@ Db.Param = new Class
var formValue;
if (this._columnIndex != -1)
if (this._columnIndex !== -1)
formValue = this._form.getByIndex (this._columnIndex);
else
formValue = null;
if (formValue != this._formValue)
{
this.value = formValue;
this._formValue = formValue;
}
formValue = undefined;
this.value = formValue;
this._formLock = false;
}

View File

@ -3,30 +3,77 @@ Vn.App = new Class
({
Extends: Vn.Object
,_guestLogged: false
,initialize: function ()
{
window.onerror = this.onWindowError.bind (this);
window.onerror = this._onWindowError.bind (this);
window.onunload = this._onWindowUnload.bind (this);
Vn.Hash.initialize ();
this.conn = new Db.Conn ();
this.login = new Vn.Login ({conn: this.conn});
this._isGuest = new Vn.HashParam
({
type: Boolean,
key: 'guest'
});
this._isGuest.on ('changed', this._onGuestChange, this);
this._conn = new Db.Conn ();
}
,run: function ()
{
if (Vn.Cookie.check ('vn_pass'))
{
this.conn.open (null, null, null,
this.onAutoLogin.bind (this));
this._conn.open (null, null, null,
this._onAutoLogin.bind (this));
}
else if (this._isGuest.value || Vn.Cookie.check ('hedera_guest'))
{
this._guestLogin ();
}
else
{
this.login.on ('login', this.onLogin, this);
this.login.show ();
var login = this._login = new Vn.Login ({conn: this._conn});
login.on ('login', this._onLogin, this);
login.show ();
}
}
,onAutoLogin: function (success)
,_onGuestChange: function ()
{
if (this._isGuest.value)
this._guestLogin ();
}
,_guestLogin: function ()
{
this._conn.open (
null,
null,
null,
this._onGuestLogin.bind (this),
true
);
}
,_onGuestLogin: function (conn, success)
{
if (!success)
{
this._isGuest.value = false;
Vn.Cookie.unset ('hedera_guest');
this.run ();
}
else
{
this._guestLogged = true;
Vn.Cookie.set ('hedera_guest', true);
this._showGui ();
}
}
,_onAutoLogin: function (success)
{
if (!success)
{
@ -34,38 +81,48 @@ Vn.App = new Class
this.run ();
}
else
this.onLogin ();
this._showGui ();
}
,onLogin: function ()
,_onLogin: function ()
{
this.login.disconnectByInstance (this);
this.login.hide ();
this._freeLogin ();
this._showGui ();
}
var gui = new Vn.Gui ({conn: this.conn});
gui.on ('logout', this.onLogout, this);
,_showGui: function ()
{
var gui = this._gui = new Vn.Gui ({conn: this._conn});
gui.on ('logout', this._onLogout, this);
gui.show ();
}
,onLogout: function (gui)
,_onLogout: function (gui)
{
gui.hide ();
gui.unref ();
this._freeGui ();
this._guestLogged = false;
Vn.Cookie.unset ('hedera_guest');
Vn.Cookie.unset ('vn_pass');
Vn.Hash.set (null);
this.run ();
}
,onWindowError: function (message, file, line)
,_onWindowError: function (message, file, line)
{
var error = new Error (message);
error.fileName = file;
error.lineNumber = line;
Htk.Toast.showError (_('There was an internal error'));
this.notifyError (error);
this._notifyError (error);
}
,notifyError: function (error)
,_onWindowUnload: function ()
{
this.unref ();
}
,_notifyError: function (error)
{
if (error instanceof Error)
{
@ -81,9 +138,32 @@ Vn.App = new Class
}
}
,_freeLogin: function ()
{
if (this._login)
{
this._login.disconnectByInstance (this);
this._login.hide ();
this._login.unref ();
this._login = null;
}
}
,_freeGui: function ()
{
if (this._gui)
{
this._gui.disconnectByInstance (this);
this._gui.hide ();
this._gui.unref ();
this._gui = null;
}
}
,_destroy: function ()
{
this.login.unref ();
this.conn.unref ();
this._freeLogin ();
this._freeGui ();
this._conn.unref ();
}
});

View File

@ -3,6 +3,9 @@ Vn.Form = new Class
({
Extends: Vn.Object
,isOpen: false
,uiLoaded: false
,initialize: function (gui, formInfo)
{
this.gui = gui;
@ -25,12 +28,10 @@ Vn.Form = new Class
return null;
}
/**
* Called when the form is opened.
**/
,open: function ()
,loadUi: function ()
{
this.close ();
if (!this.isOpen)
return;
var builder = new Vn.Builder ();
builder.signalData = this;
@ -51,9 +52,58 @@ Vn.Form = new Class
for (var i = 0; i < queries.length; i++)
queries[i].conn = this.conn;
this.gui.formHolder.appendChild (this.node);
this.gui.setTitle (res.$('title'));
this.gui.setActions (res.$('actions'));
if (this.node)
{
this.gui.formHolder.appendChild (this.node);
this.gui.setTitle (res.$('title'));
this.gui.setActions (res.$('actions'));
this.activate ();
}
this.uiLoaded = true;
}
,unloadUi: function ()
{
if (!this.uiLoaded)
return;
if (this.node)
{
this.deactivate ();
this.gui.setTitle (null);
this.gui.setActions (null);
Vn.Node.remove (this.node);
this.deactivate ();
this.node = null;
}
if (this.builder)
{
this.builder.unref ();
this.builder = null;
}
}
/**
* Called when the form is opened.
**/
,open: function ()
{
this.close ();
this.isOpen = true;
this.loadUi ();
}
/**
* Called when the form is closed.
**/
,close: function ()
{
if (!this.isOpen)
return;
this.isOpen = false;
this.unloadUi ();
}
/**
@ -66,25 +116,6 @@ Vn.Form = new Class
**/
,deactivate: function () {}
/**
* Called when the form is closed.
**/
,close: function ()
{
if (this.node)
{
this.gui.setTitle (null);
this.gui.setActions (null);
Vn.Node.remove (this.node);
this.node = null;
}
if (this.builder)
{
this.builder.unref ();
this.builder = null;
}
}
,_destroy: function ()
{
this.close ();

View File

@ -31,7 +31,7 @@
width: 100%;
z-index: 1;
overflow: hidden;
box-shadow: 0 0.1em 0.1em #AAA;
box-shadow: 0 0.1em 0.1em rgba(1, 1, 1, 0.3);
}
.vn-gui .top-bar
{
@ -211,7 +211,7 @@
top: 0;
background-color: white;
z-index: 20;
box-shadow: 0 0.2em 0.2em #AAA;
box-shadow: 0 0.2em 0.2em rgba(1, 1, 1, 0.4);
}
.vn-gui .menu-overflow
{
@ -397,7 +397,7 @@
}
.htk-toast
{
margin-left: -11em;
margin-left: -10.5em;
}
}

View File

@ -1,5 +1,4 @@
Vn.includeCss ('js/hedera/gui.css');
Vn.resource ('js/hedera/gui.xml');
Vn.define (function () {
@ -10,12 +9,13 @@ Vn.Gui = new Class
{
conn:
{
set: function (x)
type: Db.Conn
,set: function (x)
{
this.link ({_conn: x},
{
'error': this.onConnError
,'loading-changed': this.onConnLoading
,'loading-changed': this._onConnLoadChange
});
var sql = 'SELECT default_form, image_dir, image_host FROM config;'
@ -23,8 +23,8 @@ Vn.Gui = new Class
+'SELECT name FROM customer_user;'
+'CALL form_list ();';
this.conn.execQuery (sql, this.onMainQueryDone.bind (this));
},
get: function ()
}
,get: function ()
{
return this._conn;
}
@ -41,7 +41,7 @@ Vn.Gui = new Class
,initialize: function (props)
{
this.parent (props);
Vn.includeCss ('js/hedera/gui.css');
this.builderInit ('js/hedera/gui.xml');
this.loadingCount = 0;
@ -72,6 +72,8 @@ Vn.Gui = new Class
if (Vn.Cookie.check ('hedera_supplant'))
this.supplantUser (Vn.Cookie.get ('hedera_supplant'));
this.parent (props);
}
,show: function ()
@ -243,7 +245,7 @@ Vn.Gui = new Class
this.errorHandler (error);
}
,onConnLoading: function (conn, isLoading)
,_onConnLoadChange: function (conn, isLoading)
{
if (isLoading)
this.loaderPush ();
@ -425,7 +427,6 @@ Vn.Gui = new Class
this.activeForm = new formInfo.klass (this, formInfo);
this.activeForm.open ();
this.activeForm.activate ();
}
,setTitle: function (title)
@ -448,7 +449,6 @@ Vn.Gui = new Class
{
if (this.activeForm)
{
this.activeForm.deactivate ();
this.activeForm.close ();
this.activeForm.unref ();
this.activeForm = null;
@ -544,6 +544,7 @@ Vn.Gui = new Class
,_destroy: function ()
{
Vn.excludeCss ('js/hedera/gui.css');
this.hide ();
this.hashParam.unref ();
this.parent ();

View File

@ -7,14 +7,17 @@
.vn-login p,
.vn-login a
{
font-size: 1.2em;
font-size: 1.1em;
font-weight: normal;
color: #333;
/* text-shadow: 0 0.2em 0.2em #AAA; */
}
/* Header */
.vn-login
{
color: #333;
}
.vn-login .header
{
z-index: 10;
@ -119,9 +122,17 @@
{
text-align: left;
}
.vn-login .submit
{
text-align: center;
}
.vn-login .submit > *
{
display: inline-block;
vertical-align: top;
}
.vn-login input[type=submit]
{
display: block;
margin: 0 auto;
background-color: #AD4;
border: 1px solid #8B2;
@ -133,6 +144,17 @@
{
background-color: #9C3;
}
.vn-login .wrapper
{
width: 0;
overflow: visible;
position: relative;
}
.vn-login .htk-spinner
{
margin: .45em 1em;
position: absolute;
}
.vn-login .bottom
{
text-align: center;

View File

@ -5,19 +5,52 @@ Vn.define (function () {
Vn.Login = new Class
({
Extends: Htk.Widget
Extends: Htk.Widget,
Properties:
{
conn:
{
type: Db.Conn
,set: function (x)
{
this.link ({_conn: x}, {'loading-changed': this._onConnLoadChange});
}
,get: function ()
{
return this._conn;
}
}
}
,initialize: function (props)
{
this.parent (props);
this.builderInit ('js/hedera/login.xml');
var self = this;
this.$('form').onsubmit = function ()
{
self.onSubmit ();
self._onSubmit ();
return false;
};
this.parent (props);
}
,_onConnLoadChange: function (conn, isLoading)
{
this._disableUi (isLoading);
}
,_disableUi: function (disabled)
{
if (disabled)
this.$('spinner').start ();
else
this.$('spinner').stop ();
this.$('user').disabled = disabled;
this.$('pass').disabled = disabled;
this.$('submit').disabled = disabled;
}
,show: function ()
@ -27,7 +60,7 @@ Vn.Login = new Class
if (Vn.Cookie.check ('vn_user'))
this.$('user').value = Vn.Cookie.get ('vn_user');
this.focusUserInput ();
this._focusUserInput ();
}
,hide: function ()
@ -35,44 +68,33 @@ Vn.Login = new Class
Vn.Node.remove (this.node);
}
,focusUserInput: function ()
,_focusUserInput: function ()
{
var userEntry = this.$('user');
userEntry.focus ();
userEntry.select ();
}
,disableInputs: function (disabled)
,_onSubmit: function ()
{
this.$('user').disabled = disabled;
this.$('pass').disabled = disabled;
this.$('submit').disabled = disabled;
}
,onSubmit: function ()
{
this.disableInputs (true);
this.conn.open (
this._conn.open (
this.$('user').value,
this.$('pass').value,
this.$('remember').value,
this.onConnOpen.bind (this)
this._onConnOpen.bind (this)
);
}
,onConnOpen: function (conn, success)
,_onConnOpen: function (conn, success)
{
this.$('pass').value = '';
if (!success)
{
Htk.Toast.showError (_('Invalid login'));
}
else
this.signalEmit ('login');
this.disableInputs (false);
this.focusUserInput ();
this._focusUserInput ();
}
});

View File

@ -2,7 +2,7 @@
<div id="main" class="vn-login">
<div class="header">
<div>
<a href="#!page=web&amp;guest=true&amp;form=cms/about">
<a href="#!form=cms/about&amp;guest=true">
<t>I want to know more</t>
</a>
</div>
@ -29,8 +29,11 @@
<input type="checkbox" id="remember" name="remember"/>
<label for="remember"><t>Do not sign out</t></label>
</div>
<div>
<div class="submit">
<input id="submit" type="submit" value="_Enter"/>
<div class="wrapper">
<htk-spinner id="spinner"/>
</div>
</div>
<div class="info">
<p><t>Login mail</t></p>

View File

@ -3,15 +3,15 @@
@media screen
{
* { font-size: 12pt; }
body { font-size: 12pt; }
}
@media (min-resolution: 120dpi) and (orientation: portrait)
{
* { font-size: 11pt; }
body { font-size: 11pt; }
}
@media (min-resolution: 120dpi) and (orientation: landscape)
{
* { font-size: 11pt; }
body { font-size: 11pt; }
}
/* Global */
@ -20,21 +20,21 @@ body
{
color: #333;
margin: 0;
font-family: 'Open Sans', 'Verdana', 'Sans';
}
body,
label,
button,
input,
textarea,
select,
textarea,
option
{
font-size: 1em;
font-family: 'Open Sans', 'Verdana', 'Sans';
font-size: inherit;
font-family: inherit;
}
iframe
{
border: 0;
border: none;
}
fieldset,
div
@ -91,14 +91,18 @@ p
outline: 1px solid rgba(1, 1, 1, 0.15);
-moz-outline-radius: .1em;
}
button::-moz-focus-inner
button::-moz-focus-inner,
input[type=submit]::-moz-focus-inner,
input[type=button]::-moz-focus-inner,
input[type=reset]::-moz-focus-inner
{
border: none;
}
select:focus
select:-moz-focusring
{
color: transparent;
text-shadow: 0 0 0 #333;
outline: none;
/* color: transparent;
text-shadow: 0 0 0 #333;*/
}
/* Inputs */
@ -180,7 +184,8 @@ option
button,
input[type=submit],
input[type=button]
input[type=button],
input[type=reset]
{
border: none;
background-color: transparent;
@ -191,7 +196,8 @@ input[type=button]
}
button:hover,
input[type=submit]:hover,
input[type=button]:hover
input[type=button]:hover,
input[type=reset]:hover
{
background-color: rgba(1, 1, 1, 0.1);
}

View File

@ -80,24 +80,24 @@ Htk.ColumnImage = new Class
,stamp: null
};
this.setSrc (cell);
this._setSrc (cell);
if (this.showFull)
{
img.addEventListener ('mouseover', this.onMouseOver.bind (this, cell));
img.addEventListener ('mouseout', this.onMouseOut.bind (this));
img.addEventListener ('mouseover', this._onMouseOver.bind (this, cell));
img.addEventListener ('mouseout', this._onMouseOut.bind (this));
}
if (this.editable)
{
img.className = 'editable';
img.addEventListener ('dblclick', this.onDoubleClick.bind (this, cell));
img.addEventListener ('error', this.onImageError.bind (this, cell));
img.addEventListener ('dblclick', this._onDoubleClick.bind (this, cell));
img.addEventListener ('error', this._onImageError.bind (this, cell));
}
return td;
}
,setSrc: function (cell)
,_setSrc: function (cell)
{
if (cell.value)
{
@ -114,47 +114,49 @@ Htk.ColumnImage = new Class
cell.img.src = url;
}
else
this.onImageError (cell);
this._onImageError (cell);
}
,onImageError: function (cell)
,_onImageError: function (cell)
{
if (!cell.error)
{
cell.error = true;
cell.img.src = 'image/empty.png';
cell.img.src = 'image/unknown.svg';
}
}
,onMouseOver: function (cell)
,_onMouseOver: function (cell)
{
if (cell.error)
return;
var src = this._fullDir ? this._fullDir : 'full';
src += '/'+ cell.value;
if (cell.stamp)
src += '?'+ cell.stamp;
if (!cell.error)
this._fullImage.show (this._basedir +'/'+ src);
this._fullImage.show (this._basedir +'/'+ src);
}
,onMouseOut: function ()
,_onMouseOut: function ()
{
this._fullImage.hide ();
}
,onDoubleClick: function (cell)
,_onDoubleClick: function (cell)
{
var editor = new Htk.ImageEditor ();
editor.setData (cell.value, this._directory);
this.nameChangedHandler = this.onNameChange.bind (this, cell);
this.nameChangedHandler = this._onNameChange.bind (this, cell);
editor.on ('name-changed', this.nameChangedHandler);
this.fileUploadedHandler = this.onFileUpload.bind (this, cell);
this.fileUploadedHandler = this._onFileUpload.bind (this, cell);
editor.on ('file-uploaded', this.fileUploadedHandler);
this.editorClosedHandler = this.onEditorClose.bind (this);
this.editorClosedHandler = this._onEditorClose.bind (this);
editor.on ('closed', this.editorClosedHandler);
this.popup = new Htk.Popup ();
@ -162,21 +164,21 @@ Htk.ColumnImage = new Class
this.popup.show (cell.img);
}
,onNameChange: function (cell, editor, value)
,_onNameChange: function (cell, editor, value)
{
cell.value = value;
this.setSrc (cell);
this._setSrc (cell);
this.changed (cell.tr, value);
}
,onFileUpload: function (cell, editor)
,_onFileUpload: function (cell, editor)
{
cell.stamp = new Date ().getTime ();
this.setSrc (cell);
this._setSrc (cell);
this.popup.hide ();
}
,onEditorClose: function (editor)
,_onEditorClose: function (editor)
{
editor.disconnect ('name-changed', this.nameChangedHandler);
editor.disconnect ('file-uploaded', this.fileUploadedHandler);

View File

@ -34,33 +34,36 @@ Htk.DateChooser = new Class
,setEditable: function (editable)
{
Vn.Node.remove (this.label);
if (this.calendar)
{
this.node.removeChild (this.button);
this.calendar.disconnectByInstance (this);
this.calendar = null;
}
if (editable && !this.calendar)
{
Vn.Node.remove (this.label);
this.button = document.createElement ('button');
this.button.className = 'input';
this.button.title = _('ChangeDate');
this.button.addEventListener ('click', this.showCalendar.bind (this));
this.button.addEventListener ('click', this._onClick.bind (this));
this.button.appendChild (this.label);
this.node.appendChild (this.button);
this.calendar = new Htk.Calendar ();
this.calendar.on ('changed', this.calendarChanged.bind (this));
this.calendar.on ('changed', this._onCalendarChange.bind (this));
this.popup = new Htk.Popup ();
this.popup.setChild (this.calendar);
}
else if (!editable)
{
Vn.Node.remove (this.label);
this.node.appendChild (this.label);
this.calendar = null;
this.node.removeChild (this.button);
}
}
,calendarChanged: function (calendar)
,_onCalendarChange: function (calendar)
{
if (this.ignoreCalendarChange)
return;
@ -72,7 +75,7 @@ Htk.DateChooser = new Class
this.valueChanged (newDate);
}
,showCalendar: function (event)
,_onClick: function (event)
{
this.ignoreCalendarChange = true;
this.calendar.value = this._value;

View File

@ -19,7 +19,7 @@ Htk.Image = new Class
{
this._directory = x;
this._basedir = Vn.Config['image_dir'] +'/'+ x;
this.render (false);
this._setSrc ();
}
,get: function ()
{
@ -35,7 +35,7 @@ Htk.Image = new Class
,set: function (x)
{
this._subdir = x;
this.render (false);
this._setSrc ();
}
,get: function ()
{
@ -56,8 +56,8 @@ Htk.Image = new Class
fullImage = new Htk.FullImage ();
this._fullImage = fullImage;
this.node.addEventListener ('mouseover', this.onMouseOver.bind (this));
this.node.addEventListener ('mouseout', this.onMouseOut.bind (this));
this.node.addEventListener ('mouseover', this._onMouseOver.bind (this));
this.node.addEventListener ('mouseout', this._onMouseOut.bind (this));
}
this._showFull = x;
@ -87,28 +87,35 @@ Htk.Image = new Class
,_directory: null
,_subdir: null
,_basedir: null
,_empty: false
,_error: false
,_showFull: false
,_fullDir: null
,_editable: false
,initialize: function (props)
{
this.createElement ('img');
// this.node.addEventListener ('error', this._onImageError.bind (this));
this.node.className = 'htk-image';
this.node.addEventListener ('error', this._onImageError.bind (this));
this.setEditable (this._editable);
this.parent (props);
}
,_onImageError: function ()
,setEditable: function (editable)
{
if (!this._empty)
if (editable)
{
this._empty = true;
this.node.src = 'image/empty.png';
Vn.Node.addClass (this.node, 'editable');
this.node.addEventListener ('dblclick', this._onDoubleClick.bind (this));
}
else
Vn.Node.removeClass (this.node, 'editable');
this._setEmpty ();
}
,render: function (force)
,_setSrc: function ()
{
if (this._value)
{
@ -122,28 +129,36 @@ Htk.Image = new Class
url += this._value;
if (force)
url += '?' + (new Date()).getTime ();
if (this._stamp)
url += '?'+ this._stamp;
this._empty = false;
this._error = false;
this.node.src = url;
this.node.style.display = '';
}
else
{
this._setEmpty ();
}
,_setEmpty: function ()
{
if (this._value !== null && this._value !== '')
return;
if (this._editable)
this.node.src = 'image/add-photo.svg';
else
delete this.node.src;
this.node.style.display = 'none';
}
}
,putValue: function (value)
{
this.render (false);
this._setSrc ();
}
,onMouseOver: function (cell)
,_onMouseOver: function ()
{
if (!this._showFull)
if (!this._showFull || !this._value || this._error)
return;
var src = this._fullDir ? this._fullDir : 'full';
@ -152,34 +167,50 @@ Htk.Image = new Class
if (this._stamp)
src += '?'+ this._stamp;
if (!cell.error)
this._fullImage.show (this._basedir +'/'+ src);
this._fullImage.show (this._basedir +'/'+ src);
}
,onMouseOut: function ()
,_onMouseOut: function ()
{
this._fullImage.hide ();
}
,setEditable: function (editable)
,_onImageError: function ()
{
if (editable)
{
var obj = this;
this.style.cursor = 'pointer';
this.node.addEventListener ('dblclick',
this.onDoubleClick.bind (this));
}
if (this._error)
return;
this._error = true;
}
,onDoubleClick: function (event)
,_onDoubleClick: function ()
{
var editor = new Htk.ImageEditor ();
editor.setData (cell.value, this._directory);
editor.setData (this.value, this._directory);
editor.on ('name-changed', this._onNameChange, this);
editor.on ('file-uploaded', this._onFileUpload, this);
editor.on ('closed', this._onEditorClose, this);
this.popup = new Htk.Popup ();
this.popup.setChild (editor);
this.popup.show (this.node);
}
,_onNameChange: function (editor, value)
{
this.value = value;
}
,_onFileUpload: function (cell, editor)
{
this._stamp = new Date ().getTime ();
this.setSrc (cell);
this.popup.hide ();
}
,_onEditorClose: function (editor)
{
editor.disconnectByInstance (this);
}
});

View File

@ -109,13 +109,19 @@ Htk.Select = new Class
,showColumnIndex: 1
,showColumnName: null
,_notNull: true
,_webkitRefresh: false
,initialize: function (props)
{
this.createElement ('select');
this.node.addEventListener ('change', this._onChange.bind (this));
this._addPlaceholder (this._placeholder);
var select = this.createElement ('select');
select.addEventListener ('change', this._onChange.bind (this));
// Webkit bug: Does not refresh select options
if (navigator.userAgent.match (/WebKit/))
select.addEventListener ('mousedown',
this._onWebkitMouseDown.bind (this));
this._addPlaceholder (this._placeholder);
this.parent (props);
}
@ -230,29 +236,13 @@ Htk.Select = new Class
this.addOption (data[i][this.showColumnIndex], data[i][1]);
this.selectOption ();
this._onTimeout ();
this.signalEmit ('ready');
}
else
this.setRow (-1);
}
,_onTimeout: function ()
{
if (this._blockMouseDown || !navigator.userAgent.match (/WebKit/))
return;
this._blockMouseDown = true;
this.node.blur();
var e = document.createEvent('MouseEvents');
e.initMouseEvent ('mousedown',
true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
this.node.dispatchEvent(e);
this._blockMouseDown = false;
this.node.focus ();
this._webkitRefreshOptions ();
}
,setEditable: function (editable)
@ -276,4 +266,39 @@ Htk.Select = new Class
{
this.selectOption ();
}
// Webkit bug: Does not refresh select options
,_webkitRefreshOptions: function ()
{
if (document.activeElement === this.node && this._webkitRefresh)
{
if (this._model.ready)
this._webkitRefresh = false;
this.node.blur();
this.node.focus ();
setTimeout (this._onWebkitTimeout.bind (this), 0);
}
}
,_onWebkitMouseDown: function ()
{
if (this._webkitBlock)
return;
this._webkitRefresh = true;
}
,_onWebkitTimeout: function ()
{
this._webkitBlock = true;
var e = document.createEvent('MouseEvents');
e.initMouseEvent ('mousedown',
true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
this.node.dispatchEvent(e);
this._webkitBlock = false;
}
});

View File

@ -22,7 +22,12 @@ Htk.ImageEditor = new Class
,onNameChange: function ()
{
this.signalEmit ('name-changed', this.$('name').value);
var newValue = this.$('name').value;
if (!newValue)
newValue = null
this.signalEmit ('name-changed', newValue);
}
,onFormSubmit: function ()

View File

@ -259,6 +259,14 @@ td.cell-image img
border-radius: 0;
}
/* Image */
.htk-image.editable:hover
{
cursor: pointer;
opacity: 0.85;
}
/* Full image */
.htk-full-image
@ -299,7 +307,7 @@ td.cell-image img
left: 50%;
top: 4em;
width: 21em;
margin-left: -11em;
margin-left: -10.5em;
text-align: center;
overflow: auto;
max-height: 40em;
@ -481,12 +489,16 @@ td.cell-image img
background-color: white;
height: 2.2em;
}
.htk-search-entry > *
{
display: inline-block;
vertical-align: middle;
}
.htk-search-entry > img
{
margin: 0;
height: 1.5em;
margin-left: .4em;
vertical-align: middle;
margin: 0 .4em;
}
.htk-search-entry > .entry
{

View File

@ -1,4 +1,3 @@
Vn.include ('js/misc/tinymce/tinymce.min');
Vn.include ('js/misc/mootools');

View File

@ -31,12 +31,38 @@ Vn.HashParam = new Class
{
return this._key;
}
},
value:
{
type: Object
,set: function (x)
{
this._value = x;
}
,get: function ()
{
return this._value;
}
},
type:
{
type: Object
,set: function (x)
{
this._type = x;
this._onHashChange ();
}
,get: function ()
{
return this._type;
}
}
}
,lock: false
,value: undefined
,_lock: false
,_value: undefined
,_key: null
,_type: null
,initialize: function (props)
{
@ -53,9 +79,20 @@ Vn.HashParam = new Class
var newValue = Vn.Hash.get (this._key);
if (this.value != newValue)
if (this._type)
switch (this._type)
{
this.value = newValue;
case Boolean:
newValue = (/^(true|1)$/i).test (newValue);
break;
case Number:
newValue = 0 + new Number (newValue);
break;
}
if (this._value != newValue)
{
this._value = newValue;
this.signalEmit ('changed');
this._refreshParam ();
}
@ -63,25 +100,25 @@ Vn.HashParam = new Class
,_refreshParam: function ()
{
if (this._param && !this.lock)
if (this._param && !this._lock)
{
this.lock = true;
this._param.value = this.value;
this.lock = false;
this._lock = true;
this._param.value = this._value;
this._lock = false;
}
}
,_onParamChange: function ()
{
if (this.lock)
if (this._lock)
return;
var map = {};
map[this.key] = this._param.value;
this.lock = true;
this._lock = true;
Vn.Hash.add (map);
this.lock = false;
this._lock = false;
}
});

View File

@ -58,12 +58,16 @@ Vn.Hash =
**/
,set: function (map)
{
if (map)
for (var key in map)
if (map[key] === null || map[key] === undefined)
delete map[key];
var newHash = this.make (map);
if (!map)
map = {};
if (newHash !== this._hash)
{
this._hashMap = map;
@ -88,7 +92,7 @@ Vn.Hash =
{
var hash = '#!';
if (add)
if (add && map)
for (var key in this._hashMap)
if (!map[key])
map[key] = this._hashMap[key];

View File

@ -102,11 +102,13 @@ var Vn =
var callbacks = includeData.callbacks;
if (callbacks)
for (var i = 0; i < callbacks.length; i++)
callbacks[i] (includeData.loaded);
var dependants = includeData.dependants;
if (dependants)
for (var i = 0; i < dependants.length; i++)
{
var dependant = dependants[i];

View File

@ -17,7 +17,7 @@
,"BuyersAndTraders": "9 compradors especialitzats i els nostres 20 comercials t'assessoraran en tot el que necessitis."
,"Training": "Verdnatura formació"
,"Verdnatura training": "Verdnatura formació"
,"GoodTraining": "En Verdnatura sabem que una bona formació és imprescindible per al desenvolupament òptim de qualsevol activitat, i com no, també la de florista."
,"SpecialTrainingPrices": "Perquè el pressupost d'una escola no repercuteixi en la qualitat de la teva formació, col·laborem amb una política de preus especials per a totes aquelles escoles que ho sol·licitin realitzar cursos a les nostres instal·lacions de Verdnatura Silla."

View File

@ -1,5 +1,7 @@
{
"Sent": "Enviat"
"Start order": "Començar comanda"
,"Sent": "Enviat"
,"Author": "Autor"
,"votes": "vots"
,"NoAnswerSelected": "No has seleccionat cap resposta"

View File

@ -7,15 +7,22 @@
,"ArticleNotFound": "Artcle no trobat"
,"ArticleNotAvailable": "Article no disponible"
,"StartOrder": "Començar encàrrec"
,"Switch view": "Canviar vista"
,"StartOrder": "Començar comanda"
,"ShoppingBasket": "Cistella de la compra"
,"Realm": "Família"
,"Subtype": "Subtipus"
,"Date:": "Data:"
,"Warehouse:": "Magatzem:"
,"Search:": "Cercar:"
,"GeneralSearch": "Cerca general"
,"Search": "Cercar"
,"Configure": "Configurar"
,"Order by": "Ordenar"
,"Available": "Displonible"
,"Size": "Mesura"
,"Realm": "Regne"
,"Family": "Família"
,"Color": "Color"
,"Producer": "Productor"
,"Origin": "Origen"
,"Category": "Categoria"
,"Remove filters": "Esborrar filtres"
,"Amount": "Quant"
,"Aval": "Disp"
@ -27,7 +34,9 @@
,"Pack": "Pack"
,"Origin": "Origen"
,"Price": "Preu"
,"%.0d Units": "%.0d Unitats"
,"from": "des de"
,"from %.2d€": "des de %.2d€"
,"AddToBasket": "Afegir article"
,"Add": "Afegir"

View File

@ -20,6 +20,7 @@
,"ShoppingBasket": "Cistella de la compra"
,"SeeOrder": "Mostrar detall de l'encàrrec"
,"Delivery": "Lliurament"
,"TicketNumber": "N ticket"
,"SentAddress": "Adreça d'enviament"
,"Consignee": "Consignatari"

View File

@ -1,20 +1,13 @@
{
"OrderDetail": "Detall de l'encarrec"
,"%A, %e of %B %Y": "%A, %e de %B %Y"
,"Print delivery note": "Imprimir albarà"
,"TicketNumber:": "N ticket:"
,"DateExit:": "Data d'enviament:"
,"SendMethod:": "Forma d'enviament:"
,"Notes:": "Notes:"
,"TicketTotal:": "Total encàrrec:"
,"(VATIncluded)": "(IVA inclós)"
,"PC": "Codi postal"
,"City": "Ciutat"
,"Province": "Província"
,"Address": "Domicili"
,"Consignee": "Consignatari"
,"Delivery": "Entrega"
,"Total": "Total"
,"Tax base": "Base imposable"
,"VAT": "IVA"
,"ItemNumber": "N article"
,"Amount": "Quant"

View File

@ -17,7 +17,7 @@
,"BuyersAndTraders": "9 specialized trade buyers and our 20 advise you on everything you need."
,"Training": "Verdnatura training"
,"Verdnatura training": "Verdnatura training"
,"GoodTraining": "In Verdnatura we know that a good education is essential for the optimal development of any activity, and of course, also the florist."
,"SpecialTrainingPrices": "For the school budget does not affect the quality of your training, we work with special pricing policy for all schools that request it take courses in our facilities Verdnatura chair."

View File

@ -1,5 +1,7 @@
{
"Sent": "Sent"
"Start order": "Start order"
,"Sent": "Sent"
,"Author": "Author"
,"votes": "votes"
,"NoAnswerSelected": "No answer selected"

View File

@ -12,7 +12,8 @@
,"ShoppingBasket": "Shopping basket"
,"Search": "Search"
,"Order by": "Order by"
,"Configure": "Configure"
,"Order": "Order"
,"Available": "Available"
,"Size": "Size"
,"Realm": "Realm"
@ -33,7 +34,7 @@
,"Pack": "Pack"
,"Origin": "Origin"
,"Price": "Price"
,"%.0d Units": "%.0d Units "
,"%.0d Units": "%.0d Units"
,"from": "from"
,"from %.2d€": "from %.2d€"

View File

@ -20,6 +20,7 @@
,"ShoppingBasket": "Shopping basket"
,"SeeOrder": "Show details of the order"
,"Delivery": "Delivery"
,"TicketNumber": "Ticket number"
,"SentAddress": "Delivery address"
,"Consignee": "Consignee"

View File

@ -1,20 +1,13 @@
{
"OrderDetail": "Order detail"
,"%A, %e of %B %Y": "%A, %e of %B %Y"
,"Print delivery note": "Print delivery note"
,"TicketNumber:": "Ticket number:"
,"DateExit:": "Delivery date:"
,"SendMethod:": "Delivery method:"
,"Notes:": "Notes:"
,"TicketTotal:": "Order total:"
,"(VATIncluded)": "(VAT included)"
,"PC": "Postal code"
,"City": "City"
,"Province": "Province"
,"Address": "Address"
,"Consignee": "Consignee"
,"Delivery": "Delivery"
,"Total": "Total"
,"Tax base": "Tax base"
,"VAT": "VAT"
,"ItemNumber": "Item number"
,"Amount": "Amount"

View File

@ -17,7 +17,7 @@
,"BuyersAndTraders": "9 compradores especializados y nuestros 20 comerciales te asesorarán en todo lo que necesites."
,"Training": "Verdnatura formación"
,"Verdnatura training": "Verdnatura formación"
,"GoodTraining": "En Verdnatura sabemos que una buena formación es imprescindible para el desarrollo óptimo de cualquier actividad, y cómo no, también la de florista."
,"SpecialTrainingPrices": "Para que el presupuesto de una escuela no repercuta en la calidad de tu formación, colaboramos con una política de precios especiales para todas aquellas escuelas que lo soliciten realizar cursos en nuestras instalaciones de Verdnatura Silla."

View File

@ -1,5 +1,7 @@
{
"Sent": "Enviado"
"Start order": "Empezar pedido"
,"Sent": "Enviado"
,"Author": "Autor"
,"votes": "votos"
,"NoAnswerSelected": "No has seleccionado ninguna respuesta"

View File

@ -12,6 +12,7 @@
,"ShoppingBasket": "Cesta de la compra"
,"Search": "Buscar"
,"Configure": "Configurar"
,"Order by": "Ordenar"
,"Available": "Displonible"
,"Size": "Medida"
@ -20,7 +21,7 @@
,"Color": "Color"
,"Producer": "Productor"
,"Origin": "Origen"
,"Category": "Categoria"
,"Category": "Categoría"
,"Remove filters": "Quitar filtros"
,"Amount": "Cant"
@ -33,7 +34,7 @@
,"Pack": "Pack"
,"Origin": "Origen"
,"Price": "Precio"
,"%.0d Units": "%.0d Unidades "
,"%.0d Units": "%.0d Unidades"
,"from": "desde"
,"from %.2d€": "desde %.2d€"

View File

@ -20,6 +20,7 @@
,"ShoppingBasket": "Cesta de la compra"
,"SeeOrder": "Mostrar detalle del pedido"
,"Delivery": "Entrega"
,"TicketNumber": "Nº ticket"
,"SentAddress": "Dirección de envío"
,"Consignee": "Consignatario"

View File

@ -1,20 +1,13 @@
{
"OrderDetail": "Detalle del pedido"
,"%A, %e of %B %Y": "%A, %e de %B %Y"
,"Print delivery note": "Imprimir albarán"
,"TicketNumber:": "Nº ticket:"
,"DateExit:": "Fecha de envío:"
,"SendMethod:": "Forma de envío:"
,"Notes:": "Notas:"
,"TicketTotal:": "Total pedido:"
,"(VATIncluded)": "(IVA incluído)"
,"PC": "Código postal"
,"City": "Ciudad"
,"Province": "Provincia"
,"Address": "Domicilio"
,"Consignee": "Consignatario"
,"Delivery": "Entrega"
,"Total": "Total"
,"Tax base": "Base imponible"
,"VAT": "IVA"
,"ItemNumber": "Nº artículo"
,"Amount": "Cant"

View File

@ -17,7 +17,7 @@
,"BuyersAndTraders": "9 acheteurs commerciaux spécialisés et notre 20 conseillera dans tout ce que vous avez besoin."
,"Training": "Formation Verdnatura"
,"Verdnatura training": "Formation Verdnatura"
,"GoodTraining": "Dans Verdnatura sait qu'une bonne éducation est essentielle pour le développement optimal de toute activité, et bien sûr, aussi le fleuriste."
,"SpecialTrainingPrices": "Pour le budget d'une école n'a aucun effet sur la qualité de votre formation, travailler avec la politique de tarification spéciale pour toutes les écoles qui le demandent de suivre des cours dans nos installations chaise Verdnatura."

View File

@ -1,5 +1,7 @@
{
"Sent": "Envoyé"
"Start order": "Lancer commande"
,"Sent": "Envoyé"
,"Author": "Auteur"
,"votes": "votes"
,"NoAnswerSelected": "Vous avez pas sélectionné de réponse"

View File

@ -7,15 +7,22 @@
,"ArticleNotFound": "Article non trouvé"
,"ArticleNotAvailable": "Article non disponible"
,"Switch view": "Changer vue"
,"StartOrder": "Acheter"
,"ShoppingBasket": "Mon panier"
,"Search": "Recherche"
,"Configure": "Régler"
,"Order by": "Ordre"
,"Available": "Displonible"
,"Size": "Mesure"
,"Realm": "Famille"
,"Subtype": "Sous-genre"
,"Date:": "Date:"
,"Warehouse:": "Magasin:"
,"Search:": "Recherche:"
,"GeneralSearch": "Recherche générale"
,"Family": "Sous-genre"
,"Color": "Couleur"
,"Producer": "Producteur"
,"Origin": "Origine"
,"Category": "Catégorie"
,"Remove filters": "Retirer les filtres"
,"Amount": "Quant"
,"Aval": "Disp"
@ -27,7 +34,9 @@
,"Pack": "Pack"
,"Origin": "Origine"
,"Price": "Prix"
,"%.0d Units": "%.0d Unités"
,"from": "pour"
,"from %.2d€": "pour %.2d€"
,"AddToBasket": "Ajouter article"
,"Add": "Ajouter"

View File

@ -20,6 +20,7 @@
,"ShoppingBasket": "Panier"
,"SeeOrder": "Votre panier"
,"Delivery": "Accouchement"
,"TicketNumber": "Numéro ticket"
,"SentAddress": "Adresse de livraison"
,"Consignee": "Destinataire"

View File

@ -1,20 +1,13 @@
{
"OrderDetail": "Détails de la commande"
,"%A, %e of %B %Y": "%A, %e de %B %Y"
,"Print delivery note": "Imprimer bulletin de livraison"
,"TicketNumber:": "Num ticket:"
,"DateExit:": "Date d'envoi:"
,"SendMethod:": "Mode d'envoi:"
,"Notes:": "Notes:"
,"TicketTotal:": "Total:"
,"(VATIncluded)": "(TVA comprise)"
,"PC": "Code postal"
,"City": "Ville"
,"Province": "Province"
,"Address": "Maison"
,"Consignee": "Destinataire"
,"Delivery": "Accouchement"
,"Total": "Total"
,"Tax base": "Imposable"
,"VAT": "TVA"
,"ItemNumber": "Num article"
,"Amount": "Quant"

View File

@ -17,7 +17,7 @@
,"BuyersAndTraders": "9 specialized trade buyers and our 20 advise you on everything you need."
,"Training": "Verdnatura training"
,"Verdnatura training": "Verdnatura training"
,"GoodTraining": "In Verdnatura we know that a good education is essential for the optimal development of any activity, and of course, also the florist."
,"SpecialTrainingPrices": "For the school budget does not affect the quality of your training, we work with special pricing policy for all schools that request it take courses in our facilities Verdnatura chair."

View File

@ -1,5 +1,7 @@
{
"Sent": "Sent"
"Start order": "Захиалга эхлэх"
,"Sent": "Sent"
,"Author": "Author"
,"votes": "votes"
,"NoAnswerSelected": "No answer selected"

View File

@ -12,7 +12,8 @@
,"ShoppingBasket": "Shopping basket"
,"Search": "Search"
,"Order by": "Order by"
,"Configure": "Configure"
,"Order": "Order"
,"Available": "Available"
,"Size": "Size"
,"Realm": "Realm"
@ -33,7 +34,7 @@
,"Pack": "Pack"
,"Origin": "Origin"
,"Price": "Price"
,"%.0d Units": "%.0d Units "
,"%.0d Units": "%.0d Units"
,"from": "from"
,"from %.2d€": "from %.2d€"

View File

@ -20,6 +20,7 @@
,"ShoppingBasket": "Shopping basket"
,"SeeOrder": "Show details of the order"
,"Delivery": "Delivery"
,"TicketNumber": "Ticket number"
,"SentAddress": "Delivery address"
,"Consignee": "Consignee"

View File

@ -1,20 +1,13 @@
{
"OrderDetail": "Order detail"
,"%A, %e of %B %Y": "%A, %e of %B %Y"
,"Print delivery note": "Print delivery note"
,"TicketNumber:": "Ticket number:"
,"DateExit:": "Delivery date:"
,"SendMethod:": "Delivery method:"
,"Notes:": "Notes:"
,"TicketTotal:": "Order total:"
,"(VATIncluded)": "(VAT included)"
,"PC": "Postal code"
,"City": "City"
,"Province": "Province"
,"Address": "Address"
,"Consignee": "Consignee"
,"Delivery": "Delivery"
,"Total": "Total"
,"Tax base": "Tax base"
,"VAT": "VAT"
,"ItemNumber": "Item number"
,"Amount": "Amount"

View File

@ -17,7 +17,7 @@
,"BuyersAndTraders": "9 compradores especializados e nossos 20 comerciais te asessorarão em tudo o que necessites."
,"Training": "Verdnatura formação"
,"Verdnatura training": "Verdnatura formação"
,"GoodTraining": "Em Verdnatura sabemos que uma boa formação é imprescindível para o desenvolvimento ótimo de qualqer atividade, e como não, também a de florista."
,"SpecialTrainingPrices": "Para que o orçamento de uma escola não repercuta na qualidade da sua formação, colaboramos com uma política de preços especiais para todas aquelas escolas que solicitem realizar cursos em nossas instalações de Verdnatura Silla."

View File

@ -1,5 +1,7 @@
{
"Sent": "Enviado"
"Start order": "Comece uma ordem"
,"Sent": "Enviado"
,"Author": "Autor"
,"votes": "votos"
,"NoAnswerSelected": "Não seleccionou nenhuma resposta"

View File

@ -12,6 +12,7 @@
,"ShoppingBasket": "Cesta da compra"
,"Search": "Buscar"
,"Configure": "Configurar"
,"Order by": "Organizar"
,"Available": "Disponível"
,"Size": "Medida"

View File

@ -20,6 +20,7 @@
,"ShoppingBasket": "Cesta da compra"
,"SeeOrder": "Mostrar detalhe do pedido"
,"Delivery": "Entrega"
,"TicketNumber": "Nº ticket"
,"SentAddress": "Endereço de envío"
,"Consignee": "Consignatario"

View File

@ -1,20 +1,13 @@
{
"OrderDetail": "Detalhe do pedido"
,"%A, %e of %B %Y": "%A, %e de %B %Y"
,"Print delivery note": "Imprimir guía de remessa"
,"TicketNumber:": "Nº ticket:"
,"DateExit:": "Data de envío:"
,"SendMethod:": "Forma de envío:"
,"Notes:": "Notas:"
,"TicketTotal:": "Total pedido:"
,"(VATIncluded)": "(IVA incluído)"
,"PC": "Código postal"
,"City": "Município"
,"Province": "Distrito"
,"Address": "Endereço"
,"Consignee": "Consignatario"
,"Delivery": "Entrega"
,"Total": "Total"
,"Tax base": "Tributável"
,"VAT": "IVA"
,"ItemNumber": "Nº artículo"
,"Amount": "Qtde"