mirror of
https://github.com/the-djmaze/snappymail.git
synced 2026-09-07 16:37:02 +03:00
Based on https://tools.ietf.org/html/rfc5173
This commit is contained in:
parent
4adc672ccd
commit
0ba7374468
14 changed files with 72 additions and 17 deletions
|
|
@ -262,6 +262,7 @@ export const FilterConditionField = {
|
||||||
Recipient: 'Recipient',
|
Recipient: 'Recipient',
|
||||||
Subject: 'Subject',
|
Subject: 'Subject',
|
||||||
Header: 'Header',
|
Header: 'Header',
|
||||||
|
Body: 'Body',
|
||||||
Size: 'Size'
|
Size: 'Size'
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -275,7 +276,9 @@ export const FilterConditionType = {
|
||||||
NotEqualTo: 'NotEqualTo',
|
NotEqualTo: 'NotEqualTo',
|
||||||
Regex: 'Regex',
|
Regex: 'Regex',
|
||||||
Over: 'Over',
|
Over: 'Over',
|
||||||
Under: 'Under'
|
Under: 'Under',
|
||||||
|
Text: 'Text',
|
||||||
|
Raw: 'Raw'
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,9 @@ class FilterConditionModel extends AbstractModel {
|
||||||
this.template = ko.computed(() => {
|
this.template = ko.computed(() => {
|
||||||
let template = '';
|
let template = '';
|
||||||
switch (this.field()) {
|
switch (this.field()) {
|
||||||
|
case FilterConditionField.Body:
|
||||||
|
template = 'SettingsFiltersConditionBody';
|
||||||
|
break;
|
||||||
case FilterConditionField.Size:
|
case FilterConditionField.Size:
|
||||||
template = 'SettingsFiltersConditionSize';
|
template = 'SettingsFiltersConditionSize';
|
||||||
break;
|
break;
|
||||||
|
|
|
||||||
|
|
@ -38,6 +38,7 @@ class FilterPopupView extends AbstractViewNext {
|
||||||
this.fieldOptions = ko.observableArray([]);
|
this.fieldOptions = ko.observableArray([]);
|
||||||
this.typeOptions = ko.observableArray([]);
|
this.typeOptions = ko.observableArray([]);
|
||||||
this.typeOptionsSize = ko.observableArray([]);
|
this.typeOptionsSize = ko.observableArray([]);
|
||||||
|
this.typeOptionsBody = ko.observableArray([]);
|
||||||
|
|
||||||
initOnStartOrLangChange(this.populateOptions.bind(this));
|
initOnStartOrLangChange(this.populateOptions.bind(this));
|
||||||
|
|
||||||
|
|
@ -108,7 +109,8 @@ class FilterPopupView extends AbstractViewNext {
|
||||||
{ 'id': FilterConditionField.Recipient, 'name': i18n('POPUPS_FILTER/SELECT_FIELD_RECIPIENTS') },
|
{ 'id': FilterConditionField.Recipient, 'name': i18n('POPUPS_FILTER/SELECT_FIELD_RECIPIENTS') },
|
||||||
{ 'id': FilterConditionField.Subject, 'name': i18n('POPUPS_FILTER/SELECT_FIELD_SUBJECT') },
|
{ 'id': FilterConditionField.Subject, 'name': i18n('POPUPS_FILTER/SELECT_FIELD_SUBJECT') },
|
||||||
{ 'id': FilterConditionField.Size, 'name': i18n('POPUPS_FILTER/SELECT_FIELD_SIZE') },
|
{ 'id': FilterConditionField.Size, 'name': i18n('POPUPS_FILTER/SELECT_FIELD_SIZE') },
|
||||||
{ 'id': FilterConditionField.Header, 'name': i18n('POPUPS_FILTER/SELECT_FIELD_HEADER') }
|
{ 'id': FilterConditionField.Header, 'name': i18n('POPUPS_FILTER/SELECT_FIELD_HEADER') },
|
||||||
|
{ 'id': FilterConditionField.Body, 'name': i18n('POPUPS_FILTER/SELECT_FIELD_BODY') }
|
||||||
]);
|
]);
|
||||||
|
|
||||||
this.typeOptions([
|
this.typeOptions([
|
||||||
|
|
@ -126,6 +128,11 @@ class FilterPopupView extends AbstractViewNext {
|
||||||
{ 'id': FilterConditionType.Over, 'name': i18n('POPUPS_FILTER/SELECT_TYPE_OVER') },
|
{ 'id': FilterConditionType.Over, 'name': i18n('POPUPS_FILTER/SELECT_TYPE_OVER') },
|
||||||
{ 'id': FilterConditionType.Under, 'name': i18n('POPUPS_FILTER/SELECT_TYPE_UNDER') }
|
{ 'id': FilterConditionType.Under, 'name': i18n('POPUPS_FILTER/SELECT_TYPE_UNDER') }
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
this.typeOptionsBody([
|
||||||
|
{ 'id': FilterConditionType.Text, 'name': i18n('POPUPS_FILTER/SELECT_TYPE_TEXT') },
|
||||||
|
{ 'id': FilterConditionType.Raw, 'name': i18n('POPUPS_FILTER/SELECT_TYPE_RAW') }
|
||||||
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
removeCondition(oConditionToDelete) {
|
removeCondition(oConditionToDelete) {
|
||||||
|
|
|
||||||
|
|
@ -4,9 +4,11 @@ namespace RainLoop\Providers\Filters\Enumerations;
|
||||||
|
|
||||||
class ConditionField
|
class ConditionField
|
||||||
{
|
{
|
||||||
const FROM = 'From';
|
const
|
||||||
const RECIPIENT = 'Recipient';
|
FROM = 'From',
|
||||||
const SUBJECT = 'Subject';
|
RECIPIENT = 'Recipient',
|
||||||
const HEADER = 'Header';
|
SUBJECT = 'Subject',
|
||||||
const SIZE = 'Size';
|
HEADER = 'Header',
|
||||||
|
BODY = 'Body',
|
||||||
|
SIZE = 'Size';
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,11 +4,14 @@ namespace RainLoop\Providers\Filters\Enumerations;
|
||||||
|
|
||||||
class ConditionType
|
class ConditionType
|
||||||
{
|
{
|
||||||
const EQUAL_TO = 'EqualTo';
|
const
|
||||||
const NOT_EQUAL_TO = 'NotEqualTo';
|
EQUAL_TO = 'EqualTo',
|
||||||
const CONTAINS = 'Contains';
|
NOT_EQUAL_TO = 'NotEqualTo',
|
||||||
const NOT_CONTAINS = 'NotContains';
|
CONTAINS = 'Contains',
|
||||||
const REGEX = 'Regex';
|
NOT_CONTAINS = 'NotContains',
|
||||||
const OVER = 'Over';
|
REGEX = 'Regex',
|
||||||
const UNDER = 'Under';
|
OVER = 'Over',
|
||||||
|
UNDER = 'Under',
|
||||||
|
TEXT = 'Text',
|
||||||
|
RAW = 'Raw';
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -159,11 +159,11 @@ class SieveStorage implements \RainLoop\Providers\Filters\FiltersInterface
|
||||||
{
|
{
|
||||||
switch ($oCondition->Type())
|
switch ($oCondition->Type())
|
||||||
{
|
{
|
||||||
|
case \RainLoop\Providers\Filters\Enumerations\ConditionType::TEXT:
|
||||||
|
case \RainLoop\Providers\Filters\Enumerations\ConditionType::RAW:
|
||||||
case \RainLoop\Providers\Filters\Enumerations\ConditionType::OVER:
|
case \RainLoop\Providers\Filters\Enumerations\ConditionType::OVER:
|
||||||
$sTypeWord = ':over';
|
|
||||||
break;
|
|
||||||
case \RainLoop\Providers\Filters\Enumerations\ConditionType::UNDER:
|
case \RainLoop\Providers\Filters\Enumerations\ConditionType::UNDER:
|
||||||
$sTypeWord = ':under';
|
$sTypeWord = ':' . \strtolower($oCondition->Type());
|
||||||
break;
|
break;
|
||||||
case \RainLoop\Providers\Filters\Enumerations\ConditionType::NOT_EQUAL_TO:
|
case \RainLoop\Providers\Filters\Enumerations\ConditionType::NOT_EQUAL_TO:
|
||||||
$sResult .= 'not ';
|
$sResult .= 'not ';
|
||||||
|
|
@ -199,6 +199,10 @@ class SieveStorage implements \RainLoop\Providers\Filters\FiltersInterface
|
||||||
case \RainLoop\Providers\Filters\Enumerations\ConditionField::HEADER:
|
case \RainLoop\Providers\Filters\Enumerations\ConditionField::HEADER:
|
||||||
$sResult .= 'header '.$sTypeWord.' ["'.$this->quote($sValueSecond).'"]';
|
$sResult .= 'header '.$sTypeWord.' ["'.$this->quote($sValueSecond).'"]';
|
||||||
break;
|
break;
|
||||||
|
case \RainLoop\Providers\Filters\Enumerations\ConditionField::BODY:
|
||||||
|
// :text :raw :content
|
||||||
|
$sResult .= 'body '.$sTypeWord.' :contains';
|
||||||
|
break;
|
||||||
case \RainLoop\Providers\Filters\Enumerations\ConditionField::SIZE:
|
case \RainLoop\Providers\Filters\Enumerations\ConditionField::SIZE:
|
||||||
$sResult .= 'size '.$sTypeWord;
|
$sResult .= 'size '.$sTypeWord;
|
||||||
break;
|
break;
|
||||||
|
|
|
||||||
|
|
@ -323,6 +323,7 @@ en:
|
||||||
SELECT_FIELD_RECIPIENTS: "Recipients (To or CC)"
|
SELECT_FIELD_RECIPIENTS: "Recipients (To or CC)"
|
||||||
SELECT_FIELD_SUBJECT: "Subject"
|
SELECT_FIELD_SUBJECT: "Subject"
|
||||||
SELECT_FIELD_HEADER: "Header"
|
SELECT_FIELD_HEADER: "Header"
|
||||||
|
SELECT_FIELD_BODY: "Body"
|
||||||
SELECT_FIELD_SIZE: "Size"
|
SELECT_FIELD_SIZE: "Size"
|
||||||
SELECT_TYPE_CONTAINS: "Contains"
|
SELECT_TYPE_CONTAINS: "Contains"
|
||||||
SELECT_TYPE_NOT_CONTAINS: "Not Contains"
|
SELECT_TYPE_NOT_CONTAINS: "Not Contains"
|
||||||
|
|
@ -334,6 +335,8 @@ en:
|
||||||
SELECT_TYPE_NOT_EQUAL_TO: "Not Equal To"
|
SELECT_TYPE_NOT_EQUAL_TO: "Not Equal To"
|
||||||
SELECT_TYPE_OVER: "Over"
|
SELECT_TYPE_OVER: "Over"
|
||||||
SELECT_TYPE_UNDER: "Under"
|
SELECT_TYPE_UNDER: "Under"
|
||||||
|
SELECT_TYPE_TEXT: "Text"
|
||||||
|
SELECT_TYPE_RAW: "Raw"
|
||||||
SELECT_MATCH_ANY: "Matching ANY of the following rules"
|
SELECT_MATCH_ANY: "Matching ANY of the following rules"
|
||||||
SELECT_MATCH_ALL: "Matching ALL of the following rules"
|
SELECT_MATCH_ALL: "Matching ALL of the following rules"
|
||||||
MARK_AS_READ_LABEL: "Mark as read"
|
MARK_AS_READ_LABEL: "Mark as read"
|
||||||
|
|
|
||||||
|
|
@ -322,6 +322,7 @@ de_DE:
|
||||||
SELECT_FIELD_RECIPIENTS: "Empfänger (An oder CC)"
|
SELECT_FIELD_RECIPIENTS: "Empfänger (An oder CC)"
|
||||||
SELECT_FIELD_SUBJECT: "Betreff"
|
SELECT_FIELD_SUBJECT: "Betreff"
|
||||||
SELECT_FIELD_HEADER: "Nachrichtenkopf"
|
SELECT_FIELD_HEADER: "Nachrichtenkopf"
|
||||||
|
SELECT_FIELD_BODY: "Nachrichteninhalt"
|
||||||
SELECT_FIELD_SIZE: "Größe"
|
SELECT_FIELD_SIZE: "Größe"
|
||||||
SELECT_TYPE_CONTAINS: "Enthält"
|
SELECT_TYPE_CONTAINS: "Enthält"
|
||||||
SELECT_TYPE_NOT_CONTAINS: "Enthält nicht"
|
SELECT_TYPE_NOT_CONTAINS: "Enthält nicht"
|
||||||
|
|
@ -333,6 +334,8 @@ de_DE:
|
||||||
SELECT_TYPE_NOT_EQUAL_TO: "Ungleich"
|
SELECT_TYPE_NOT_EQUAL_TO: "Ungleich"
|
||||||
SELECT_TYPE_OVER: "Über"
|
SELECT_TYPE_OVER: "Über"
|
||||||
SELECT_TYPE_UNDER: "Unter"
|
SELECT_TYPE_UNDER: "Unter"
|
||||||
|
SELECT_TYPE_TEXT: "Text"
|
||||||
|
SELECT_TYPE_RAW: "Roh"
|
||||||
SELECT_MATCH_ANY: "Eine der folgenden Regeln trifft zu"
|
SELECT_MATCH_ANY: "Eine der folgenden Regeln trifft zu"
|
||||||
SELECT_MATCH_ALL: "Alle folgenden Regeln treffen zu"
|
SELECT_MATCH_ALL: "Alle folgenden Regeln treffen zu"
|
||||||
MARK_AS_READ_LABEL: "Als Gelesen markieren"
|
MARK_AS_READ_LABEL: "Als Gelesen markieren"
|
||||||
|
|
|
||||||
|
|
@ -323,6 +323,7 @@ en_GB:
|
||||||
SELECT_FIELD_RECIPIENTS: "Recipients (To or CC)"
|
SELECT_FIELD_RECIPIENTS: "Recipients (To or CC)"
|
||||||
SELECT_FIELD_SUBJECT: "Subject"
|
SELECT_FIELD_SUBJECT: "Subject"
|
||||||
SELECT_FIELD_HEADER: "Header"
|
SELECT_FIELD_HEADER: "Header"
|
||||||
|
SELECT_FIELD_BODY: "Body"
|
||||||
SELECT_FIELD_SIZE: "Size"
|
SELECT_FIELD_SIZE: "Size"
|
||||||
SELECT_TYPE_CONTAINS: "Contains"
|
SELECT_TYPE_CONTAINS: "Contains"
|
||||||
SELECT_TYPE_NOT_CONTAINS: "Not Contains"
|
SELECT_TYPE_NOT_CONTAINS: "Not Contains"
|
||||||
|
|
@ -334,6 +335,8 @@ en_GB:
|
||||||
SELECT_TYPE_NOT_EQUAL_TO: "Not Equal To"
|
SELECT_TYPE_NOT_EQUAL_TO: "Not Equal To"
|
||||||
SELECT_TYPE_OVER: "Over"
|
SELECT_TYPE_OVER: "Over"
|
||||||
SELECT_TYPE_UNDER: "Under"
|
SELECT_TYPE_UNDER: "Under"
|
||||||
|
SELECT_TYPE_TEXT: "Text"
|
||||||
|
SELECT_TYPE_RAW: "Raw"
|
||||||
SELECT_MATCH_ANY: "Matching ANY of the following rules"
|
SELECT_MATCH_ANY: "Matching ANY of the following rules"
|
||||||
SELECT_MATCH_ALL: "Matching ALL of the following rules"
|
SELECT_MATCH_ALL: "Matching ALL of the following rules"
|
||||||
MARK_AS_READ_LABEL: "Mark as read"
|
MARK_AS_READ_LABEL: "Mark as read"
|
||||||
|
|
|
||||||
|
|
@ -323,6 +323,7 @@ en_US:
|
||||||
SELECT_FIELD_RECIPIENTS: "Recipients (To or CC)"
|
SELECT_FIELD_RECIPIENTS: "Recipients (To or CC)"
|
||||||
SELECT_FIELD_SUBJECT: "Subject"
|
SELECT_FIELD_SUBJECT: "Subject"
|
||||||
SELECT_FIELD_HEADER: "Header"
|
SELECT_FIELD_HEADER: "Header"
|
||||||
|
SELECT_FIELD_BODY: "Body"
|
||||||
SELECT_FIELD_SIZE: "Size"
|
SELECT_FIELD_SIZE: "Size"
|
||||||
SELECT_TYPE_CONTAINS: "Contains"
|
SELECT_TYPE_CONTAINS: "Contains"
|
||||||
SELECT_TYPE_NOT_CONTAINS: "Not Contains"
|
SELECT_TYPE_NOT_CONTAINS: "Not Contains"
|
||||||
|
|
@ -334,6 +335,8 @@ en_US:
|
||||||
SELECT_TYPE_NOT_EQUAL_TO: "Not Equal To"
|
SELECT_TYPE_NOT_EQUAL_TO: "Not Equal To"
|
||||||
SELECT_TYPE_OVER: "Over"
|
SELECT_TYPE_OVER: "Over"
|
||||||
SELECT_TYPE_UNDER: "Under"
|
SELECT_TYPE_UNDER: "Under"
|
||||||
|
SELECT_TYPE_TEXT: "Text"
|
||||||
|
SELECT_TYPE_RAW: "Raw"
|
||||||
SELECT_MATCH_ANY: "Matching ANY of the following rules"
|
SELECT_MATCH_ANY: "Matching ANY of the following rules"
|
||||||
SELECT_MATCH_ALL: "Matching ALL of the following rules"
|
SELECT_MATCH_ALL: "Matching ALL of the following rules"
|
||||||
MARK_AS_READ_LABEL: "Mark as read"
|
MARK_AS_READ_LABEL: "Mark as read"
|
||||||
|
|
|
||||||
|
|
@ -322,6 +322,7 @@ es_ES:
|
||||||
SELECT_FIELD_RECIPIENTS: "Destinatarios (A o CC)"
|
SELECT_FIELD_RECIPIENTS: "Destinatarios (A o CC)"
|
||||||
SELECT_FIELD_SUBJECT: "Asunto"
|
SELECT_FIELD_SUBJECT: "Asunto"
|
||||||
SELECT_FIELD_HEADER: "Encabezado"
|
SELECT_FIELD_HEADER: "Encabezado"
|
||||||
|
SELECT_FIELD_BODY: "Body"
|
||||||
SELECT_FIELD_SIZE: "Tamaño"
|
SELECT_FIELD_SIZE: "Tamaño"
|
||||||
SELECT_TYPE_CONTAINS: "Contiene"
|
SELECT_TYPE_CONTAINS: "Contiene"
|
||||||
SELECT_TYPE_NOT_CONTAINS: "No Contiene"
|
SELECT_TYPE_NOT_CONTAINS: "No Contiene"
|
||||||
|
|
@ -333,6 +334,8 @@ es_ES:
|
||||||
SELECT_TYPE_NOT_EQUAL_TO: "Distinto De"
|
SELECT_TYPE_NOT_EQUAL_TO: "Distinto De"
|
||||||
SELECT_TYPE_OVER: "Por Encima"
|
SELECT_TYPE_OVER: "Por Encima"
|
||||||
SELECT_TYPE_UNDER: "Por Debajo"
|
SELECT_TYPE_UNDER: "Por Debajo"
|
||||||
|
SELECT_TYPE_TEXT: "Texto"
|
||||||
|
SELECT_TYPE_RAW: "Crudo"
|
||||||
SELECT_MATCH_ANY: "Si coincide alguna de estas reglas"
|
SELECT_MATCH_ANY: "Si coincide alguna de estas reglas"
|
||||||
SELECT_MATCH_ALL: "Si coinciden todas las reglas"
|
SELECT_MATCH_ALL: "Si coinciden todas las reglas"
|
||||||
MARK_AS_READ_LABEL: "Marcar como leído"
|
MARK_AS_READ_LABEL: "Marcar como leído"
|
||||||
|
|
|
||||||
|
|
@ -323,6 +323,7 @@ fr_FR:
|
||||||
SELECT_FIELD_RECIPIENTS: "Destinataires (A ou CC)"
|
SELECT_FIELD_RECIPIENTS: "Destinataires (A ou CC)"
|
||||||
SELECT_FIELD_SUBJECT: "Sujet"
|
SELECT_FIELD_SUBJECT: "Sujet"
|
||||||
SELECT_FIELD_HEADER: "En-tête"
|
SELECT_FIELD_HEADER: "En-tête"
|
||||||
|
SELECT_FIELD_BODY: "Contenu"
|
||||||
SELECT_FIELD_SIZE: "Taille"
|
SELECT_FIELD_SIZE: "Taille"
|
||||||
SELECT_TYPE_CONTAINS: "Contient"
|
SELECT_TYPE_CONTAINS: "Contient"
|
||||||
SELECT_TYPE_NOT_CONTAINS: "Ne contient pas"
|
SELECT_TYPE_NOT_CONTAINS: "Ne contient pas"
|
||||||
|
|
@ -334,6 +335,8 @@ fr_FR:
|
||||||
SELECT_TYPE_NOT_EQUAL_TO: "Différent de"
|
SELECT_TYPE_NOT_EQUAL_TO: "Différent de"
|
||||||
SELECT_TYPE_OVER: "Au-dessus de"
|
SELECT_TYPE_OVER: "Au-dessus de"
|
||||||
SELECT_TYPE_UNDER: "Au-dessous de"
|
SELECT_TYPE_UNDER: "Au-dessous de"
|
||||||
|
SELECT_TYPE_TEXT: "Texte"
|
||||||
|
SELECT_TYPE_RAW: "Brut"
|
||||||
SELECT_MATCH_ANY: "Correspondant à l'une des règles suivantes"
|
SELECT_MATCH_ANY: "Correspondant à l'une des règles suivantes"
|
||||||
SELECT_MATCH_ALL: "Correspondant à toutes les règles suivantes"
|
SELECT_MATCH_ALL: "Correspondant à toutes les règles suivantes"
|
||||||
MARK_AS_READ_LABEL: "Marquer comme lu"
|
MARK_AS_READ_LABEL: "Marquer comme lu"
|
||||||
|
|
|
||||||
|
|
@ -322,6 +322,7 @@ nl_NL:
|
||||||
SELECT_FIELD_RECIPIENTS: "Ontvanger(s) (Aan of CC)"
|
SELECT_FIELD_RECIPIENTS: "Ontvanger(s) (Aan of CC)"
|
||||||
SELECT_FIELD_SUBJECT: "Onderwerp"
|
SELECT_FIELD_SUBJECT: "Onderwerp"
|
||||||
SELECT_FIELD_HEADER: "Berichtkop"
|
SELECT_FIELD_HEADER: "Berichtkop"
|
||||||
|
SELECT_FIELD_BODY: "Berichtinhoud"
|
||||||
SELECT_FIELD_SIZE: "Grootte"
|
SELECT_FIELD_SIZE: "Grootte"
|
||||||
SELECT_TYPE_CONTAINS: "Bevat"
|
SELECT_TYPE_CONTAINS: "Bevat"
|
||||||
SELECT_TYPE_NOT_CONTAINS: "Bevat niet"
|
SELECT_TYPE_NOT_CONTAINS: "Bevat niet"
|
||||||
|
|
@ -333,6 +334,8 @@ nl_NL:
|
||||||
SELECT_TYPE_NOT_EQUAL_TO: "Niet gelijk aan"
|
SELECT_TYPE_NOT_EQUAL_TO: "Niet gelijk aan"
|
||||||
SELECT_TYPE_OVER: "Meer dan"
|
SELECT_TYPE_OVER: "Meer dan"
|
||||||
SELECT_TYPE_UNDER: "Minder dan"
|
SELECT_TYPE_UNDER: "Minder dan"
|
||||||
|
SELECT_TYPE_TEXT: "Tekst"
|
||||||
|
SELECT_TYPE_RAW: "Raw"
|
||||||
SELECT_MATCH_ANY: "Komt overeen met een van de volgende voorwaarden"
|
SELECT_MATCH_ANY: "Komt overeen met een van de volgende voorwaarden"
|
||||||
SELECT_MATCH_ALL: "Komt overeen met alle voorwaarden"
|
SELECT_MATCH_ALL: "Komt overeen met alle voorwaarden"
|
||||||
MARK_AS_READ_LABEL: "Markeer als gelezen"
|
MARK_AS_READ_LABEL: "Markeer als gelezen"
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,12 @@
|
||||||
|
<div class="control-group" data-bind="css: {'error': valueError}" style="margin-bottom: 0">
|
||||||
|
<select class="span3" data-bind="options: $root.fieldOptions, value: field, optionsText: 'name', optionsValue: 'id'"></select>
|
||||||
|
|
||||||
|
<select class="span2" data-bind="options: $root.typeOptionsBody, value: type, optionsText: 'name', optionsValue: 'id'"></select>
|
||||||
|
|
||||||
|
<input class="span3" type="text" data-bind="value: value" />
|
||||||
|
|
||||||
|
<span class="delete-action button-delete pull-right" style="margin-top: 5px;"
|
||||||
|
data-bind="click: function (oCondition) { $root.removeCondition(oCondition); }">
|
||||||
|
<i class="icon-trash"></i>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
Loading…
Add table
Add a link
Reference in a new issue