mirror of
https://github.com/wintercms/winter.git
synced 2024-06-28 05:33:29 +02:00
Add support for including small buttons in list columns
Recompile assets
This commit is contained in:
parent
04e61adac3
commit
d3c30475b9
@ -5,5 +5,5 @@ if ($.oc === undefined) $.oc = {}
|
|||||||
if ($.oc.langMessages === undefined) $.oc.langMessages = {}
|
if ($.oc.langMessages === undefined) $.oc.langMessages = {}
|
||||||
$.oc.langMessages['es'] = $.extend(
|
$.oc.langMessages['es'] = $.extend(
|
||||||
$.oc.langMessages['es'] || {},
|
$.oc.langMessages['es'] || {},
|
||||||
{"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"alert":{"confirm_button_text":"OK","cancel_button_text":"Cancel"}}
|
{"markdowneditor":{"formatting":"Formateo","quote":"Cita","code":"C\u00f3digo","header1":"Encabezado 1","header2":"Encabezado 2","header3":"Encabezado 3","header4":"Encabezado 4","header5":"Encabezado 5","header6":"Encabezado 6","bold":"Negrita","italic":"Cursiva","unorderedlist":"Lista Desordenada","orderedlist":"Lista Ordenada","video":"Video","image":"Imagen","link":"V\u00ednculo","horizontalrule":"Insertar Regla Horizontal","fullscreen":"Pantalla completa","preview":"Previsualizar"},"mediamanager":{"insert_link":"Insertar Media V\u00ednculo","insert_image":"Insertar Media Imagen","insert_video":"Insertar Media Video","insert_audio":"Insertar Media Audio","invalid_file_empty_insert":"Por favor seleccione archivo para insertar v\u00ednculo.","invalid_file_single_insert":"Por favor seleccione un solo archivo.","invalid_image_empty_insert":"Por favor seleccione una imagen(es) para insertar.","invalid_video_empty_insert":"Por favor seleccione un archivo de video para insertar.","invalid_audio_empty_insert":"Por favor seleccione un archivo de audio para insertar."},"alert":{"confirm_button_text":"OK","cancel_button_text":"Cancelar"}}
|
||||||
);
|
);
|
@ -175,7 +175,7 @@ Lists are responsive by default and will collapse at a breakpoint of `980px`. Th
|
|||||||
|
|
||||||
### Row classes
|
### Row classes
|
||||||
|
|
||||||
The following classes are available to use on the table row elements.
|
The following colored classes are available to use on the table row elements.
|
||||||
|
|
||||||
<div class="control-list list-unresponsive">
|
<div class="control-list list-unresponsive">
|
||||||
<table class="table data">
|
<table class="table data">
|
||||||
@ -246,4 +246,37 @@ It might be fun to include a status column!
|
|||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
### Button column
|
||||||
|
|
||||||
|
You may add a small button to a list column by adding the `column-button` class to the table data (TD) element.
|
||||||
|
|
||||||
|
<div class="control-list list-unresponsive">
|
||||||
|
<table class="table data" data-control="rowlink">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th style="width: 150px"><span>Action</span></th>
|
||||||
|
<th><a href="javascript:;">Name</a></th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td class="column-button nolink">
|
||||||
|
<a
|
||||||
|
href="http://www.google.com"
|
||||||
|
target="_blank"
|
||||||
|
class="btn btn-default btn-sm">
|
||||||
|
Open Google
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<a href="javascript:;">
|
||||||
|
Petoria
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
@ -84,7 +84,7 @@ table.table.data {
|
|||||||
color: @color-list-text;
|
color: @color-list-text;
|
||||||
border-color: @color-list-grid;
|
border-color: @color-list-grid;
|
||||||
|
|
||||||
a {
|
a:not(.btn) {
|
||||||
color: @color-list-text;
|
color: @color-list-text;
|
||||||
&:hover {
|
&:hover {
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
@ -135,7 +135,7 @@ table.table.data {
|
|||||||
background: @color-list-hover-bg !important;
|
background: @color-list-hover-bg !important;
|
||||||
color: white;
|
color: white;
|
||||||
|
|
||||||
a, span, i[class^="icon-"] {
|
a:not(.btn), span, i[class^="icon-"] {
|
||||||
color: white;
|
color: white;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -211,6 +211,14 @@ table.table.data {
|
|||||||
padding-right: 0;
|
padding-right: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
td.column-compact {
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
td.column-button {
|
||||||
|
padding: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
&.icons {
|
&.icons {
|
||||||
td i[class^="icon-"] {
|
td i[class^="icon-"] {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
@ -226,10 +234,6 @@ table.table.data {
|
|||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
.user-select(none);
|
.user-select(none);
|
||||||
}
|
}
|
||||||
|
|
||||||
td.column-compact {
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
&.no-active-indicator tbody {
|
&.no-active-indicator tbody {
|
||||||
|
86
modules/system/assets/ui/storm-min.js
vendored
86
modules/system/assets/ui/storm-min.js
vendored
@ -2682,9 +2682,8 @@ var href=link.attr('href'),onclick=(typeof link.get(0).onclick=="function")?link
|
|||||||
$(this).find('td').not('.'+options.excludeClass).click(function(){if(onclick)
|
$(this).find('td').not('.'+options.excludeClass).click(function(){if(onclick)
|
||||||
onclick.apply(link.get(0))
|
onclick.apply(link.get(0))
|
||||||
else
|
else
|
||||||
window.location=href;})
|
window.location=href})
|
||||||
$(this).addClass(options.linkedClass)
|
$(this).addClass(options.linkedClass)})}
|
||||||
link.hide().after(link.html())})}
|
|
||||||
RowLink.DEFAULTS={target:'a',excludeClass:'nolink',linkedClass:'rowlink'}
|
RowLink.DEFAULTS={target:'a',excludeClass:'nolink',linkedClass:'rowlink'}
|
||||||
var old=$.fn.rowLink
|
var old=$.fn.rowLink
|
||||||
$.fn.rowLink=function(option){var args=Array.prototype.slice.call(arguments,1)
|
$.fn.rowLink=function(option){var args=Array.prototype.slice.call(arguments,1)
|
||||||
@ -3455,7 +3454,8 @@ if(propertyEditor&&!propertyEditor.supportsExternalParameterEditor()){continue}
|
|||||||
var cell=row.querySelector('td'),propertyDefinition=this.findPropertyDefinition(property),editor=new $.oc.inspector.externalParameterEditor(this,propertyDefinition,cell)
|
var cell=row.querySelector('td'),propertyDefinition=this.findPropertyDefinition(property),editor=new $.oc.inspector.externalParameterEditor(this,propertyDefinition,cell)
|
||||||
this.externalParameterEditors.push(editor)}}
|
this.externalParameterEditors.push(editor)}}
|
||||||
Surface.prototype.applyGroupIndexAttribute=function(property,row,group,isGroupedControl){if(property.itemType=='group'||isGroupedControl){row.setAttribute('data-group-index',this.getGroupManager().getGroupIndex(group))
|
Surface.prototype.applyGroupIndexAttribute=function(property,row,group,isGroupedControl){if(property.itemType=='group'||isGroupedControl){row.setAttribute('data-group-index',this.getGroupManager().getGroupIndex(group))
|
||||||
row.setAttribute('data-parent-group-index',this.getGroupManager().getGroupIndex(group.parentGroup))}else{if(group.parentGroup){row.setAttribute('data-parent-group-index',this.getGroupManager().getGroupIndex(group))}}}
|
row.setAttribute('data-parent-group-index',this.getGroupManager().getGroupIndex(group.parentGroup))}
|
||||||
|
else{if(group.parentGroup){row.setAttribute('data-parent-group-index',this.getGroupManager().getGroupIndex(group))}}}
|
||||||
Surface.prototype.applyGroupLevelToRow=function(row,group){if(row.hasAttribute('data-group-level')){return}
|
Surface.prototype.applyGroupLevelToRow=function(row,group){if(row.hasAttribute('data-group-level')){return}
|
||||||
var th=this.getRowHeadElement(row)
|
var th=this.getRowHeadElement(row)
|
||||||
if(th===null){throw new Error('Cannot find TH element for the Inspector row')}
|
if(th===null){throw new Error('Cannot find TH element for the Inspector row')}
|
||||||
@ -3474,7 +3474,8 @@ if(row){this.toggleGroup(row,true)}}}
|
|||||||
Surface.prototype.expandOrCollapseRows=function(rows,collapse,duration,noAnimation){var row=rows.pop(),self=this
|
Surface.prototype.expandOrCollapseRows=function(rows,collapse,duration,noAnimation){var row=rows.pop(),self=this
|
||||||
if(row){if(!noAnimation){setTimeout(function toggleRow(){$.oc.foundation.element.toggleClass(row,'collapsed',collapse)
|
if(row){if(!noAnimation){setTimeout(function toggleRow(){$.oc.foundation.element.toggleClass(row,'collapsed',collapse)
|
||||||
$.oc.foundation.element.toggleClass(row,'expanded',!collapse)
|
$.oc.foundation.element.toggleClass(row,'expanded',!collapse)
|
||||||
self.expandOrCollapseRows(rows,collapse,duration,noAnimation)},duration)}else{$.oc.foundation.element.toggleClass(row,'collapsed',collapse)
|
self.expandOrCollapseRows(rows,collapse,duration,noAnimation)},duration)}
|
||||||
|
else{$.oc.foundation.element.toggleClass(row,'collapsed',collapse)
|
||||||
$.oc.foundation.element.toggleClass(row,'expanded',!collapse)
|
$.oc.foundation.element.toggleClass(row,'expanded',!collapse)
|
||||||
self.expandOrCollapseRows(rows,collapse,duration,noAnimation)}}}
|
self.expandOrCollapseRows(rows,collapse,duration,noAnimation)}}}
|
||||||
Surface.prototype.getGroupManager=function(){return this.getRootSurface().groupManager}
|
Surface.prototype.getGroupManager=function(){return this.getRootSurface().groupManager}
|
||||||
@ -3511,11 +3512,9 @@ $.oc.foundation.element.addClass(cell,'active')}
|
|||||||
Surface.prototype.markPropertyChanged=function(property,changed){var row=this.tableContainer.querySelector('tr[data-property="'+property+'"]')
|
Surface.prototype.markPropertyChanged=function(property,changed){var row=this.tableContainer.querySelector('tr[data-property="'+property+'"]')
|
||||||
if(changed){$.oc.foundation.element.addClass(row,'changed')}
|
if(changed){$.oc.foundation.element.addClass(row,'changed')}
|
||||||
else{$.oc.foundation.element.removeClass(row,'changed')}}
|
else{$.oc.foundation.element.removeClass(row,'changed')}}
|
||||||
Surface.prototype.findPropertyEditor=function(property){for(var i=0,len=this.editors.length;i<len;i++){if(this.editors[i].getPropertyName()==property)
|
Surface.prototype.findPropertyEditor=function(property){for(var i=0,len=this.editors.length;i<len;i++){if(this.editors[i].getPropertyName()==property){return this.editors[i]}}
|
||||||
return this.editors[i]}
|
|
||||||
return null}
|
return null}
|
||||||
Surface.prototype.findExternalParameterEditor=function(property){for(var i=0,len=this.externalParameterEditors.length;i<len;i++){if(this.externalParameterEditors[i].getPropertyName()==property)
|
Surface.prototype.findExternalParameterEditor=function(property){for(var i=0,len=this.externalParameterEditors.length;i<len;i++){if(this.externalParameterEditors[i].getPropertyName()==property){return this.externalParameterEditors[i]}}
|
||||||
return this.externalParameterEditors[i]}
|
|
||||||
return null}
|
return null}
|
||||||
Surface.prototype.findPropertyDefinition=function(property){for(var i=0,len=this.parsedProperties.properties.length;i<len;i++){var definition=this.parsedProperties.properties[i]
|
Surface.prototype.findPropertyDefinition=function(property){for(var i=0,len=this.parsedProperties.properties.length;i<len;i++){var definition=this.parsedProperties.properties[i]
|
||||||
if(definition.property==property){return definition}}
|
if(definition.property==property){return definition}}
|
||||||
@ -3623,12 +3622,10 @@ InspectorManager.prototype.setContainerPreference=function(value){if(!Modernizr.
|
|||||||
return localStorage.setItem('oc.inspectorUseContainer',value?"true":"false")}
|
return localStorage.setItem('oc.inspectorUseContainer',value?"true":"false")}
|
||||||
InspectorManager.prototype.applyValuesFromContainer=function($container){var applyEvent=$.Event('apply.oc.inspector')
|
InspectorManager.prototype.applyValuesFromContainer=function($container){var applyEvent=$.Event('apply.oc.inspector')
|
||||||
$container.trigger(applyEvent)
|
$container.trigger(applyEvent)
|
||||||
if(applyEvent.isDefaultPrevented()){return false}
|
return!applyEvent.isDefaultPrevented();}
|
||||||
return true}
|
|
||||||
InspectorManager.prototype.containerHidingAllowed=function($container){var allowedEvent=$.Event('beforeContainerHide.oc.inspector')
|
InspectorManager.prototype.containerHidingAllowed=function($container){var allowedEvent=$.Event('beforeContainerHide.oc.inspector')
|
||||||
$container.trigger(allowedEvent)
|
$container.trigger(allowedEvent)
|
||||||
if(allowedEvent.isDefaultPrevented()){return false}
|
return!allowedEvent.isDefaultPrevented();}
|
||||||
return true}
|
|
||||||
InspectorManager.prototype.onInspectableClicked=function(ev){var $element=$(ev.currentTarget)
|
InspectorManager.prototype.onInspectableClicked=function(ev){var $element=$(ev.currentTarget)
|
||||||
if(this.createInspector($element)===false){return false}}
|
if(this.createInspector($element)===false){return false}}
|
||||||
$.oc.inspector.manager=new InspectorManager()
|
$.oc.inspector.manager=new InspectorManager()
|
||||||
@ -3679,7 +3676,8 @@ BaseWrapper.prototype.cleanupAfterSwitch=function(){this.switched=true
|
|||||||
this.dispose()}
|
this.dispose()}
|
||||||
BaseWrapper.prototype.loadValues=function(configuration){var $valuesField=this.getElementValuesInput()
|
BaseWrapper.prototype.loadValues=function(configuration){var $valuesField=this.getElementValuesInput()
|
||||||
if($valuesField.length>0){var valuesStr=$.trim($valuesField.val())
|
if($valuesField.length>0){var valuesStr=$.trim($valuesField.val())
|
||||||
try{return valuesStr.length===0?{}:$.parseJSON(valuesStr)}catch(err){throw new Error('Error parsing Inspector field values. '+err)}}
|
try{return valuesStr.length===0?{}:$.parseJSON(valuesStr)}
|
||||||
|
catch(err){throw new Error('Error parsing Inspector field values. '+err)}}
|
||||||
var values={},attributes=this.$element.get(0).attributes
|
var values={},attributes=this.$element.get(0).attributes
|
||||||
for(var i=0,len=attributes.length;i<len;i++){var attribute=attributes[i],matches=[]
|
for(var i=0,len=attributes.length;i<len;i++){var attribute=attributes[i],matches=[]
|
||||||
if(matches=attribute.name.match(/^data-property-(.*)$/)){var normalizedPropertyName=this.normalizePropertyCode(matches[1],configuration)
|
if(matches=attribute.name.match(/^data-property-(.*)$/)){var normalizedPropertyName=this.normalizePropertyCode(matches[1],configuration)
|
||||||
@ -3703,9 +3701,11 @@ this.configurationLoaded(result)
|
|||||||
return}
|
return}
|
||||||
var $form=this.$element.closest('form'),data=this.$element.data(),self=this
|
var $form=this.$element.closest('form'),data=this.$element.data(),self=this
|
||||||
$.oc.stripeLoadIndicator.show()
|
$.oc.stripeLoadIndicator.show()
|
||||||
var request=$form.request('onGetInspectorConfiguration',{data:data}).done(function inspectorConfigurationRequestDoneClosure(data){self.onConfigurartionRequestDone(data,result)}).always(function(){$.oc.stripeLoadIndicator.hide()})}
|
$form.request('onGetInspectorConfiguration',{data:data}).done(function inspectorConfigurationRequestDoneClosure(data){self.onConfigurartionRequestDone(data,result)}).always(function(){$.oc.stripeLoadIndicator.hide()})}
|
||||||
BaseWrapper.prototype.parseConfiguration=function(configuration){if(!$.isArray(configuration)&&!$.isPlainObject(configuration)){if($.trim(configuration)===0){return{}}
|
BaseWrapper.prototype.parseConfiguration=function(configuration){if(!$.isArray(configuration)&&!$.isPlainObject(configuration)){if($.trim(configuration)===0){return{}}
|
||||||
try{return $.parseJSON(configuration)}catch(err){throw new Error('Error parsing Inspector configuration. '+err)}}else{return configuration}}
|
try{return $.parseJSON(configuration)}
|
||||||
|
catch(err){throw new Error('Error parsing Inspector configuration. '+err)}}
|
||||||
|
else{return configuration}}
|
||||||
BaseWrapper.prototype.configurationLoaded=function(configuration){var values=this.loadValues(configuration.properties)
|
BaseWrapper.prototype.configurationLoaded=function(configuration){var values=this.loadValues(configuration.properties)
|
||||||
this.title=configuration.title
|
this.title=configuration.title
|
||||||
this.description=configuration.description
|
this.description=configuration.description
|
||||||
@ -3721,8 +3721,7 @@ return false}
|
|||||||
if(!e.isPropagationStopped()){this.init()}}
|
if(!e.isPropagationStopped()){this.init()}}
|
||||||
BaseWrapper.prototype.triggerHiding=function(){var hidingEvent=$.Event('hiding.oc.inspector'),values=this.surface.getValues()
|
BaseWrapper.prototype.triggerHiding=function(){var hidingEvent=$.Event('hiding.oc.inspector'),values=this.surface.getValues()
|
||||||
this.$element.trigger(hidingEvent,[{values:values}])
|
this.$element.trigger(hidingEvent,[{values:values}])
|
||||||
if(hidingEvent.isDefaultPrevented()){return false}
|
return!hidingEvent.isDefaultPrevented();}
|
||||||
return true}
|
|
||||||
BaseWrapper.DEFAULTS={containerSupported:false}
|
BaseWrapper.DEFAULTS={containerSupported:false}
|
||||||
$.oc.inspector.wrappers.base=BaseWrapper}(window.jQuery);+function($){"use strict";var Base=$.oc.inspector.wrappers.base,BaseProto=Base.prototype
|
$.oc.inspector.wrappers.base=BaseWrapper}(window.jQuery);+function($){"use strict";var Base=$.oc.inspector.wrappers.base,BaseProto=Base.prototype
|
||||||
var InspectorPopup=function($element,surface,options){this.$popoverContainer=null
|
var InspectorPopup=function($element,surface,options){this.$popoverContainer=null
|
||||||
@ -3902,8 +3901,7 @@ GroupManager.prototype.isParentGroupExpanded=function(group){if(!group.parentGro
|
|||||||
return this.isGroupExpanded(group.parentGroup)}
|
return this.isGroupExpanded(group.parentGroup)}
|
||||||
GroupManager.prototype.isGroupExpanded=function(group){if(!group.parentGroup){return true}
|
GroupManager.prototype.isGroupExpanded=function(group){if(!group.parentGroup){return true}
|
||||||
var groupIndex=this.getGroupIndex(group),statuses=this.readGroupStatuses()
|
var groupIndex=this.getGroupIndex(group),statuses=this.readGroupStatuses()
|
||||||
if(statuses[groupIndex]!==undefined)
|
if(statuses[groupIndex]!==undefined){return statuses[groupIndex]}
|
||||||
return statuses[groupIndex]
|
|
||||||
return false}
|
return false}
|
||||||
GroupManager.prototype.setGroupStatus=function(groupIndex,expanded){var statuses=this.readGroupStatuses()
|
GroupManager.prototype.setGroupStatus=function(groupIndex,expanded){var statuses=this.readGroupStatuses()
|
||||||
statuses[groupIndex]=expanded
|
statuses[groupIndex]=expanded
|
||||||
@ -4108,8 +4106,7 @@ if(value===undefined){if(this.propertyDefinition.default!==undefined){isChecked=
|
|||||||
else{isChecked=this.normalizeCheckedValue(value)}
|
else{isChecked=this.normalizeCheckedValue(value)}
|
||||||
editor.checked=isChecked
|
editor.checked=isChecked
|
||||||
this.containerCell.appendChild(container)}
|
this.containerCell.appendChild(container)}
|
||||||
CheckboxEditor.prototype.normalizeCheckedValue=function(value){if(value=='0'||value=='false')
|
CheckboxEditor.prototype.normalizeCheckedValue=function(value){if(value=='0'||value=='false'){return false}
|
||||||
return false
|
|
||||||
return value}
|
return value}
|
||||||
CheckboxEditor.prototype.getInput=function(){return this.containerCell.querySelector('input')}
|
CheckboxEditor.prototype.getInput=function(){return this.containerCell.querySelector('input')}
|
||||||
CheckboxEditor.prototype.focus=function(){this.getInput().parentNode.focus()}
|
CheckboxEditor.prototype.focus=function(){this.getInput().parentNode.focus()}
|
||||||
@ -4165,8 +4162,7 @@ DropdownEditor.prototype.onSelectionChange=function(){var select=this.getSelect(
|
|||||||
this.inspector.setPropertyValue(this.propertyDefinition.property,select.value,this.initialization)}
|
this.inspector.setPropertyValue(this.propertyDefinition.property,select.value,this.initialization)}
|
||||||
DropdownEditor.prototype.onInspectorPropertyChanged=function(property,value){if(!this.propertyDefinition.depends||this.propertyDefinition.depends.indexOf(property)===-1){return}
|
DropdownEditor.prototype.onInspectorPropertyChanged=function(property,value){if(!this.propertyDefinition.depends||this.propertyDefinition.depends.indexOf(property)===-1){return}
|
||||||
var dependencyValues=this.getDependencyValues()
|
var dependencyValues=this.getDependencyValues()
|
||||||
if(this.prevDependencyValues===undefined||this.prevDependencyValues!=dependencyValues)
|
if(this.prevDependencyValues===undefined||this.prevDependencyValues!=dependencyValues){this.loadDynamicOptions()}}
|
||||||
this.loadDynamicOptions()}
|
|
||||||
DropdownEditor.prototype.onExternalPropertyEditorHidden=function(){this.loadDynamicOptions(false)}
|
DropdownEditor.prototype.onExternalPropertyEditorHidden=function(){this.loadDynamicOptions(false)}
|
||||||
DropdownEditor.prototype.updateDisplayedValue=function(value){var select=this.getSelect()
|
DropdownEditor.prototype.updateDisplayedValue=function(value){var select=this.getSelect()
|
||||||
select.value=value}
|
select.value=value}
|
||||||
@ -4239,7 +4235,7 @@ PopupBase.prototype.getPopupContent=function(){return'<form>
|
|||||||
</div> \
|
</div> \
|
||||||
<div class="modal-footer"> \
|
<div class="modal-footer"> \
|
||||||
<button type="submit" class="btn btn-primary">OK</button> \
|
<button type="submit" class="btn btn-primary">OK</button> \
|
||||||
<button type="button" class="btn btn-default"data-dismiss="popup">Cancel</button> \
|
<button type="button" class="btn btn-default" data-dismiss="popup">Cancel</button> \
|
||||||
</div> \
|
</div> \
|
||||||
</form>'}
|
</form>'}
|
||||||
PopupBase.prototype.updateDisplayedValue=function(value){this.setLinkText(this.getLink(),value)}
|
PopupBase.prototype.updateDisplayedValue=function(value){this.setLinkText(this.getLink(),value)}
|
||||||
@ -4296,7 +4292,7 @@ TextEditor.prototype.getPopupContent=function(){return'<form>
|
|||||||
</div> \
|
</div> \
|
||||||
<div class="modal-footer"> \
|
<div class="modal-footer"> \
|
||||||
<button type="submit" class="btn btn-primary">OK</button> \
|
<button type="submit" class="btn btn-primary">OK</button> \
|
||||||
<button type="button" class="btn btn-default"data-dismiss="popup">Cancel</button> \
|
<button type="button" class="btn btn-default" data-dismiss="popup">Cancel</button> \
|
||||||
</div> \
|
</div> \
|
||||||
</form>'}
|
</form>'}
|
||||||
TextEditor.prototype.configurePopup=function(popup){var $textarea=$(popup).find('textarea'),value=this.inspector.getPropertyValue(this.propertyDefinition.property)
|
TextEditor.prototype.configurePopup=function(popup){var $textarea=$(popup).find('textarea'),value=this.inspector.getPropertyValue(this.propertyDefinition.property)
|
||||||
@ -4334,7 +4330,8 @@ if(value===undefined){value=this.propertyDefinition.default}
|
|||||||
if(value!==undefined&&value.length!==undefined&&value.length>0&&typeof value!=='string'){var textValues=[]
|
if(value!==undefined&&value.length!==undefined&&value.length>0&&typeof value!=='string'){var textValues=[]
|
||||||
for(var i=0,len=value.length;i<len;i++){textValues.push(this.valueToText(value[i]))}
|
for(var i=0,len=value.length;i<len;i++){textValues.push(this.valueToText(value[i]))}
|
||||||
text='['+textValues.join(', ')+']'
|
text='['+textValues.join(', ')+']'
|
||||||
$.oc.foundation.element.removeClass(link,'placeholder')}else{text=this.propertyDefinition.placeholder
|
$.oc.foundation.element.removeClass(link,'placeholder')}
|
||||||
|
else{text=this.propertyDefinition.placeholder
|
||||||
if((typeof text==='string'&&text.length==0)||text===undefined){text='[ ]'}
|
if((typeof text==='string'&&text.length==0)||text===undefined){text='[ ]'}
|
||||||
$.oc.foundation.element.addClass(link,'placeholder')}
|
$.oc.foundation.element.addClass(link,'placeholder')}
|
||||||
link.textContent=text}
|
link.textContent=text}
|
||||||
@ -4498,7 +4495,7 @@ ObjectListEditor.prototype.getPopupContent=function(){return'<form>
|
|||||||
</div> \
|
</div> \
|
||||||
<div class="modal-footer"> \
|
<div class="modal-footer"> \
|
||||||
<button type="submit" class="btn btn-primary">OK</button> \
|
<button type="submit" class="btn btn-primary">OK</button> \
|
||||||
<button type="button" class="btn btn-default"data-dismiss="popup">Cancel</button> \
|
<button type="button" class="btn btn-default" data-dismiss="popup">Cancel</button> \
|
||||||
</div> \
|
</div> \
|
||||||
</form>'}
|
</form>'}
|
||||||
ObjectListEditor.prototype.buildPopupContents=function(popup){this.buildItemsTable(popup)}
|
ObjectListEditor.prototype.buildPopupContents=function(popup){this.buildItemsTable(popup)}
|
||||||
@ -4546,7 +4543,8 @@ if(!selectedRow){throw new Exception('A row is not found for the updated data')}
|
|||||||
if(property!==this.propertyDefinition.titleProperty){return}
|
if(property!==this.propertyDefinition.titleProperty){return}
|
||||||
value=$.trim(value)
|
value=$.trim(value)
|
||||||
if(value.length===0){value='[No title]'
|
if(value.length===0){value='[No title]'
|
||||||
$.oc.foundation.element.addClass(selectedRow,'disabled')}else{$.oc.foundation.element.removeClass(selectedRow,'disabled')}
|
$.oc.foundation.element.addClass(selectedRow,'disabled')}
|
||||||
|
else{$.oc.foundation.element.removeClass(selectedRow,'disabled')}
|
||||||
selectedRow.firstChild.textContent=value}
|
selectedRow.firstChild.textContent=value}
|
||||||
ObjectListEditor.prototype.getSelectedRow=function(){if(!this.popup){throw new Error('Trying to get selected row without a popup reference.')}
|
ObjectListEditor.prototype.getSelectedRow=function(){if(!this.popup){throw new Error('Trying to get selected row without a popup reference.')}
|
||||||
var rows=this.getTableBody().children
|
var rows=this.getTableBody().children
|
||||||
@ -4571,7 +4569,8 @@ var nextRow=selectedRow.nextElementSibling,prevRow=selectedRow.previousElementSi
|
|||||||
this.disposeInspector()
|
this.disposeInspector()
|
||||||
tbody.removeChild(selectedRow)
|
tbody.removeChild(selectedRow)
|
||||||
var newSelectedRow=nextRow?nextRow:prevRow
|
var newSelectedRow=nextRow?nextRow:prevRow
|
||||||
if(newSelectedRow){this.selectRow(newSelectedRow)}else{tbody.appendChild(this.buildEmptyRow())}
|
if(newSelectedRow){this.selectRow(newSelectedRow)}
|
||||||
|
else{tbody.appendChild(this.buildEmptyRow())}
|
||||||
this.updateScrollpads()}
|
this.updateScrollpads()}
|
||||||
ObjectListEditor.prototype.applyDataToParentInspector=function(){var selectedRow=this.getSelectedRow(),tbody=this.getTableBody(),dataRows=tbody.querySelectorAll('tr[data-inspector-values]'),link=this.getLink(),result=this.getEmptyValue()
|
ObjectListEditor.prototype.applyDataToParentInspector=function(){var selectedRow=this.getSelectedRow(),tbody=this.getTableBody(),dataRows=tbody.querySelectorAll('tr[data-inspector-values]'),link=this.getLink(),result=this.getEmptyValue()
|
||||||
if(selectedRow){if(!this.validateKeyValue()){return}
|
if(selectedRow){if(!this.validateKeyValue()){return}
|
||||||
@ -4681,7 +4680,7 @@ ObjectEditor.prototype.getUndefinedValue=function(){var result={}
|
|||||||
for(var i=0,len=this.propertyDefinition.properties.length;i<len;i++){var propertyName=this.propertyDefinition.properties[i].property,editor=this.childInspector.findPropertyEditor(propertyName)
|
for(var i=0,len=this.propertyDefinition.properties.length;i<len;i++){var propertyName=this.propertyDefinition.properties[i].property,editor=this.childInspector.findPropertyEditor(propertyName)
|
||||||
if(editor){result[propertyName]=editor.getUndefinedValue()}}
|
if(editor){result[propertyName]=editor.getUndefinedValue()}}
|
||||||
return this.getValueOrRemove(result)}
|
return this.getValueOrRemove(result)}
|
||||||
ObjectEditor.prototype.validate=function(){var values=values=this.childInspector.getValues()
|
ObjectEditor.prototype.validate=function(){var values=this.childInspector.getValues()
|
||||||
if(this.cleanUpValue(values)===$.oc.inspector.removedProperty){return true}
|
if(this.cleanUpValue(values)===$.oc.inspector.removedProperty){return true}
|
||||||
return this.childInspector.validate()}
|
return this.childInspector.validate()}
|
||||||
ObjectEditor.prototype.onInspectorDataChange=function(property,value){var values=this.childInspector.getValues()
|
ObjectEditor.prototype.onInspectorDataChange=function(property,value){var values=this.childInspector.getValues()
|
||||||
@ -4731,9 +4730,8 @@ if(value===undefined||$.isEmptyObject(value)){var placeholder=this.propertyDefin
|
|||||||
if(placeholder!==undefined){$.oc.foundation.element.addClass(link,'placeholder')
|
if(placeholder!==undefined){$.oc.foundation.element.addClass(link,'placeholder')
|
||||||
link.textContent=placeholder}
|
link.textContent=placeholder}
|
||||||
else{link.textContent='Items: 0'}}
|
else{link.textContent='Items: 0'}}
|
||||||
else{var itemCount=0
|
else{if(typeof value!=='object'){this.throwError('Object list value should be an object.')}
|
||||||
if(typeof value!=='object'){this.throwError('Object list value should be an object.')}
|
var itemCount=this.getValueKeys(value).length
|
||||||
itemCount=this.getValueKeys(value).length
|
|
||||||
$.oc.foundation.element.removeClass(link,'placeholder')
|
$.oc.foundation.element.removeClass(link,'placeholder')
|
||||||
link.textContent='Items: '+itemCount}}
|
link.textContent='Items: '+itemCount}}
|
||||||
DictionaryEditor.prototype.getPopupContent=function(){return'<form> \
|
DictionaryEditor.prototype.getPopupContent=function(){return'<form> \
|
||||||
@ -4780,7 +4778,7 @@ DictionaryEditor.prototype.getPopupContent=function(){return'<form>
|
|||||||
</div> \
|
</div> \
|
||||||
<div class="modal-footer"> \
|
<div class="modal-footer"> \
|
||||||
<button type="submit" class="btn btn-primary">OK</button> \
|
<button type="submit" class="btn btn-primary">OK</button> \
|
||||||
<button type="button" class="btn btn-default"data-dismiss="popup">Cancel</button> \
|
<button type="button" class="btn btn-default" data-dismiss="popup">Cancel</button> \
|
||||||
</div> \
|
</div> \
|
||||||
</form>'}
|
</form>'}
|
||||||
DictionaryEditor.prototype.configurePopup=function(popup){this.buildItemsTable(popup.get(0))
|
DictionaryEditor.prototype.configurePopup=function(popup){this.buildItemsTable(popup.get(0))
|
||||||
@ -4885,10 +4883,8 @@ DictionaryEditor.prototype.onCommand=function(ev){var command=ev.currentTarget.g
|
|||||||
switch(command){case'create-item':this.createItem()
|
switch(command){case'create-item':this.createItem()
|
||||||
break;case'delete-item':this.deleteItem()
|
break;case'delete-item':this.deleteItem()
|
||||||
break;}}
|
break;}}
|
||||||
DictionaryEditor.prototype.onKeyDown=function(ev){if(ev.keyCode==40)
|
DictionaryEditor.prototype.onKeyDown=function(ev){if(ev.keyCode==40){return this.navigateDown(ev)}
|
||||||
return this.navigateDown(ev)
|
else if(ev.keyCode==38){return this.navigateUp(ev)}}
|
||||||
else if(ev.keyCode==38)
|
|
||||||
return this.navigateUp(ev)}
|
|
||||||
$.oc.inspector.propertyEditors.dictionary=DictionaryEditor}(window.jQuery);+function($){"use strict";var Base=$.oc.inspector.propertyEditors.string,BaseProto=Base.prototype
|
$.oc.inspector.propertyEditors.dictionary=DictionaryEditor}(window.jQuery);+function($){"use strict";var Base=$.oc.inspector.propertyEditors.string,BaseProto=Base.prototype
|
||||||
var AutocompleteEditor=function(inspector,propertyDefinition,containerCell,group){Base.call(this,inspector,propertyDefinition,containerCell,group)}
|
var AutocompleteEditor=function(inspector,propertyDefinition,containerCell,group){Base.call(this,inspector,propertyDefinition,containerCell,group)}
|
||||||
AutocompleteEditor.prototype=Object.create(BaseProto)
|
AutocompleteEditor.prototype=Object.create(BaseProto)
|
||||||
@ -4991,18 +4987,15 @@ BaseValidator.prototype.getMessage=function(defaultMessage){if(this.options.mess
|
|||||||
if(defaultMessage!==undefined){return defaultMessage}
|
if(defaultMessage!==undefined){return defaultMessage}
|
||||||
return this.defaultMessage}
|
return this.defaultMessage}
|
||||||
BaseValidator.prototype.isScalar=function(value){if(value===undefined||value===null){return true}
|
BaseValidator.prototype.isScalar=function(value){if(value===undefined||value===null){return true}
|
||||||
if(typeof value==='string'||typeof value=='number'||typeof value=='boolean'){return true}
|
return!!(typeof value==='string'||typeof value=='number'||typeof value=='boolean');}
|
||||||
return false}
|
|
||||||
BaseValidator.prototype.isValid=function(value){return null}
|
BaseValidator.prototype.isValid=function(value){return null}
|
||||||
$.oc.inspector.validators.base=BaseValidator}(window.jQuery);+function($){"use strict";var Base=$.oc.inspector.validators.base,BaseProto=Base.prototype
|
$.oc.inspector.validators.base=BaseValidator}(window.jQuery);+function($){"use strict";var Base=$.oc.inspector.validators.base,BaseProto=Base.prototype
|
||||||
var BaseNumber=function(options){Base.call(this,options)}
|
var BaseNumber=function(options){Base.call(this,options)}
|
||||||
BaseNumber.prototype=Object.create(BaseProto)
|
BaseNumber.prototype=Object.create(BaseProto)
|
||||||
BaseNumber.prototype.constructor=Base
|
BaseNumber.prototype.constructor=Base
|
||||||
BaseNumber.prototype.doCommonChecks=function(value){if(this.options.min!==undefined||this.options.max!==undefined){if(this.options.min!==undefined){if(this.options.min.value===undefined)
|
BaseNumber.prototype.doCommonChecks=function(value){if(this.options.min!==undefined||this.options.max!==undefined){if(this.options.min!==undefined){if(this.options.min.value===undefined){throw new Error('The min.value parameter is not defined in the Inspector validator configuration')}
|
||||||
throw new Error('The min.value parameter is not defined in the Inspector validator configuration')
|
|
||||||
if(value<this.options.min.value){return this.options.min.message!==undefined?this.options.min.message:"The value should not be less than "+this.options.min.value}}
|
if(value<this.options.min.value){return this.options.min.message!==undefined?this.options.min.message:"The value should not be less than "+this.options.min.value}}
|
||||||
if(this.options.max!==undefined){if(this.options.max.value===undefined)
|
if(this.options.max!==undefined){if(this.options.max.value===undefined){throw new Error('The max.value parameter is not defined in the table Inspector validator configuration')}
|
||||||
throw new Error('The max.value parameter is not defined in the table Inspector validator configuration')
|
|
||||||
if(value>this.options.max.value){return this.options.max.message!==undefined?this.options.max.message:"The value should not be greater than "+this.options.max.value}}}}
|
if(value>this.options.max.value){return this.options.max.message!==undefined?this.options.max.message:"The value should not be greater than "+this.options.max.value}}}}
|
||||||
$.oc.inspector.validators.baseNumber=BaseNumber}(window.jQuery);+function($){"use strict";var Base=$.oc.inspector.validators.base,BaseProto=Base.prototype
|
$.oc.inspector.validators.baseNumber=BaseNumber}(window.jQuery);+function($){"use strict";var Base=$.oc.inspector.validators.base,BaseProto=Base.prototype
|
||||||
var RequiredValidator=function(options){Base.call(this,options)
|
var RequiredValidator=function(options){Base.call(this,options)
|
||||||
@ -5055,8 +5048,7 @@ if(typeof value=='boolean'){this.throwError('The Length Inspector validator cann
|
|||||||
var length=null
|
var length=null
|
||||||
if(Object.prototype.toString.call(value)==='[object Array]'||typeof value==='string'){length=value.length}
|
if(Object.prototype.toString.call(value)==='[object Array]'||typeof value==='string'){length=value.length}
|
||||||
else if(typeof value==='object'){length=this.getObjectLength(value)}
|
else if(typeof value==='object'){length=this.getObjectLength(value)}
|
||||||
if(this.options.min!==undefined||this.options.max!==undefined){if(this.options.min!==undefined){if(this.options.min.value===undefined)
|
if(this.options.min!==undefined||this.options.max!==undefined){if(this.options.min!==undefined){if(this.options.min.value===undefined){throw new Error('The min.value parameter is not defined in the Length Inspector validator configuration.')}
|
||||||
throw new Error('The min.value parameter is not defined in the Length Inspector validator configuration.')
|
|
||||||
if(length<this.options.min.value){return this.options.min.message!==undefined?this.options.min.message:"The value should not be shorter than "+this.options.min.value}}
|
if(length<this.options.min.value){return this.options.min.message!==undefined?this.options.min.message:"The value should not be shorter than "+this.options.min.value}}
|
||||||
if(this.options.max!==undefined){if(this.options.max.value===undefined)
|
if(this.options.max!==undefined){if(this.options.max.value===undefined)
|
||||||
throw new Error('The max.value parameter is not defined in the Length Inspector validator configuration.')
|
throw new Error('The max.value parameter is not defined in the Length Inspector validator configuration.')
|
||||||
|
@ -2345,8 +2345,8 @@ table.table.data thead td.active > span:after,table.table.data thead th.active >
|
|||||||
table.table.data thead tr th:first-child{padding-left:5px}
|
table.table.data thead tr th:first-child{padding-left:5px}
|
||||||
table.table.data tbody tr:nth-child(even) td,table.table.data tbody tr:nth-child(even) th{background-color:#f5f5f5}
|
table.table.data tbody tr:nth-child(even) td,table.table.data tbody tr:nth-child(even) th{background-color:#f5f5f5}
|
||||||
table.table.data tbody td,table.table.data tbody th{padding:11px 15px;color:#666666;border-color:#eeeeee}
|
table.table.data tbody td,table.table.data tbody th{padding:11px 15px;color:#666666;border-color:#eeeeee}
|
||||||
table.table.data tbody td a,table.table.data tbody th a{color:#666666}
|
table.table.data tbody td a:not(.btn),table.table.data tbody th a:not(.btn){color:#666666}
|
||||||
table.table.data tbody td a:hover,table.table.data tbody th a:hover{text-decoration:none}
|
table.table.data tbody td a:not(.btn):hover,table.table.data tbody th a:not(.btn):hover{text-decoration:none}
|
||||||
table.table.data tbody td div.progress,table.table.data tbody th div.progress{position:relative;overflow:visible;height:auto;margin-bottom:0;background-color:transparent;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-box-shadow:none;box-shadow:none}
|
table.table.data tbody td div.progress,table.table.data tbody th div.progress{position:relative;overflow:visible;height:auto;margin-bottom:0;background-color:transparent;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-box-shadow:none;box-shadow:none}
|
||||||
table.table.data tbody td div.progress div.bar,table.table.data tbody th div.progress div.bar{position:absolute;left:-15px;top:-11px;bottom:-11px;background:#0181b9;opacity:0.3;filter:alpha(opacity=30)}
|
table.table.data tbody td div.progress div.bar,table.table.data tbody th div.progress div.bar{position:absolute;left:-15px;top:-11px;bottom:-11px;background:#0181b9;opacity:0.3;filter:alpha(opacity=30)}
|
||||||
table.table.data tbody td div.progress a,table.table.data tbody th div.progress a{position:relative}
|
table.table.data tbody td div.progress a,table.table.data tbody th div.progress a{position:relative}
|
||||||
@ -2355,7 +2355,7 @@ table.table.data tbody tr td:first-child{border-left:3px solid transparent;paddi
|
|||||||
table.table.data tbody tr.active td{color:#000000}
|
table.table.data tbody tr.active td{color:#000000}
|
||||||
table.table.data tbody tr.active td:first-child{border-left:3px solid #ff9933}
|
table.table.data tbody tr.active td:first-child{border-left:3px solid #ff9933}
|
||||||
table.table.data tbody tr:not(.no-data):hover td,table.table.data tbody tr:not(.no-data).selected td{background:#4da7e8 !important;color:white}
|
table.table.data tbody tr:not(.no-data):hover td,table.table.data tbody tr:not(.no-data).selected td{background:#4da7e8 !important;color:white}
|
||||||
table.table.data tbody tr:not(.no-data):hover td a,table.table.data tbody tr:not(.no-data).selected td a,table.table.data tbody tr:not(.no-data):hover td span,table.table.data tbody tr:not(.no-data).selected td span,table.table.data tbody tr:not(.no-data):hover td i[class^="icon-"],table.table.data tbody tr:not(.no-data).selected td i[class^="icon-"]{color:white}
|
table.table.data tbody tr:not(.no-data):hover td a:not(.btn),table.table.data tbody tr:not(.no-data).selected td a:not(.btn),table.table.data tbody tr:not(.no-data):hover td span,table.table.data tbody tr:not(.no-data).selected td span,table.table.data tbody tr:not(.no-data):hover td i[class^="icon-"],table.table.data tbody tr:not(.no-data).selected td i[class^="icon-"]{color:white}
|
||||||
table.table.data tbody tr.hidden td,table.table.data tbody tr.hidden th,table.table.data tbody tr.hidden td a,table.table.data tbody tr.hidden th a{display:none}
|
table.table.data tbody tr.hidden td,table.table.data tbody tr.hidden th,table.table.data tbody tr.hidden td a,table.table.data tbody tr.hidden th a{display:none}
|
||||||
table.table.data tbody tr.strike td,table.table.data tbody tr.strike th,table.table.data tbody tr.strike td a,table.table.data tbody tr.strike th a{text-decoration:line-through}
|
table.table.data tbody tr.strike td,table.table.data tbody tr.strike th,table.table.data tbody tr.strike td a,table.table.data tbody tr.strike th a{text-decoration:line-through}
|
||||||
table.table.data tbody tr.frozen td,table.table.data tbody tr.frozen th,table.table.data tbody tr.frozen td a,table.table.data tbody tr.frozen th a{color:#337ab7}
|
table.table.data tbody tr.frozen td,table.table.data tbody tr.frozen th,table.table.data tbody tr.frozen td a,table.table.data tbody tr.frozen th a{color:#337ab7}
|
||||||
@ -2368,9 +2368,10 @@ table.table.data tbody tr.safe td,table.table.data tbody tr.special td,table.tab
|
|||||||
table.table.data tbody td.column-break-word{word-wrap:break-word;word-break:break-all}
|
table.table.data tbody td.column-break-word{word-wrap:break-word;word-break:break-all}
|
||||||
table.table.data tbody td.column-single-line{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
|
table.table.data tbody td.column-single-line{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
|
||||||
table.table.data tbody td.column-slim{padding-left:0;padding-right:0}
|
table.table.data tbody td.column-slim{padding-left:0;padding-right:0}
|
||||||
|
table.table.data tbody td.column-compact{padding:0}
|
||||||
|
table.table.data tbody td.column-button{padding:5px}
|
||||||
table.table.data tbody.icons td i[class^="icon-"]{display:inline-block;margin-right:7px;font-size:15px;color:#95a5a6;position:relative;top:1px}
|
table.table.data tbody.icons td i[class^="icon-"]{display:inline-block;margin-right:7px;font-size:15px;color:#95a5a6;position:relative;top:1px}
|
||||||
table.table.data tbody.clickable{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}
|
table.table.data tbody.clickable{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}
|
||||||
table.table.data tbody td.column-compact{padding:0}
|
|
||||||
table.table.data.no-active-indicator tbody tr td:first-child{border-left:none}
|
table.table.data.no-active-indicator tbody tr td:first-child{border-left:none}
|
||||||
table.table.data tfoot a{color:#666666;text-decoration:none}
|
table.table.data tfoot a{color:#666666;text-decoration:none}
|
||||||
table.table.data tfoot td,table.table.data tfoot th{border-color:#e2e2e2;padding:10px 15px}
|
table.table.data tfoot td,table.table.data tfoot th{border-color:#e2e2e2;padding:10px 15px}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user