Commit 1f978fd0 authored by Carsten  Rose's avatar Carsten Rose
Browse files

Merge remote-tracking branch 'origin/raos_work' into crose_work

parents 0e52b37c 7a0899dd
/.plantuml
/doc/plantuml
/extension/Documentation/_make/build
/qfq.ini
/doc/phpdoc
......
......@@ -6,15 +6,25 @@ EXTENSION_CONTENT = Classes Configuration Documentation qfq Resources ext_emconf
all: archive t3sphinx
doc: phpdoc jsdoc
doc: phpdoc jsdoc plantuml
t3sphinx:
cd extension/Documentation/_make; make html
plantuml: uml/javascript/classdiagram.pu
java -jar support/plantuml/plantuml.jar -tpng -o ../../doc/plantuml/javascript uml/javascript/classdiagram.pu
support:
mkdir support
mkdir -p support
support_plantuml: support
mkdir -p support/plantuml
doc_plantuml:
mkdir -p doc/plantuml/javascript
mkdir -p doc/plantuml/php
bootstrap: .phpdocinstall .npmpackages .bowerpackages
bootstrap: .phpdocinstall .npmpackages .bowerpackages .plantuml
npm install
bower install
grunt default
......@@ -31,6 +41,10 @@ phpdoc: .phpdocinstall
pear -c "`pwd`/support/pear.config" install phpdoc/phpDocumentor
touch $@
.plantuml: doc_plantuml
wget -O support/plantuml/plantuml.jar 'http://downloads.sourceforge.net/project/plantuml/plantuml.8039.jar?r=http%3A%2F%2Fplantuml.com%2Fdownload.html&ts=1462256908&use_mirror=vorboss'
touch $@
.npmpackages: package.json
npm ls -g grunt-cli 2>/dev/null || { echo "Please install grunt-cli npm package using 'npm install -g grunt-cli'" 1>&2 ; exit 1; }
npm ls -g jsdoc 2>/dev/null || { echo "Please install jsdoc npm package using 'npm install -g jsdoc'" 1>&2 ; exit 1; }
......
......@@ -25,7 +25,7 @@ QfqNS.Element = QfqNS.Element || {};
}
this.$formGroup = this.$findFormGroup($enclosedElement);
this.$element = this.$formGroup.find('input, select');
this.$element = this.$formGroup.find('input:not([type="hidden"]), select');
this.$label = this.$formGroup.find('.control-label');
this.$helpBlock = this.$formGroup.find(".help-block");
};
......@@ -78,10 +78,18 @@ QfqNS.Element = QfqNS.Element || {};
return $formGroup;
};
/**
* @public
* @returns {boolean}
*/
n.FormGroup.prototype.hasLabel = function () {
return this.$label.length > 0;
};
/**
* @public
* @returns {boolean}
*/
n.FormGroup.prototype.hasHelpBlock = function () {
return this.$helpBlock.length > 0;
};
......@@ -92,11 +100,16 @@ QfqNS.Element = QfqNS.Element || {};
* Read-only is mapped onto setEnabled(). We do not distinguish between those two.
*
* @param readonly
* @public
*/
n.FormGroup.prototype.setReadOnly = function (readonly) {
this.setEnabled(!readonly);
};
/**
* @public
* @param enabled
*/
n.FormGroup.prototype.setEnabled = function (enabled) {
this.$element.prop('disabled', !enabled);
......@@ -111,6 +124,10 @@ QfqNS.Element = QfqNS.Element || {};
}
};
/**
* @public
* @param hidden
*/
n.FormGroup.prototype.setHidden = function (hidden) {
if (hidden) {
this.$formGroup.addClass("hidden");
......@@ -119,6 +136,10 @@ QfqNS.Element = QfqNS.Element || {};
}
};
n.FormGroup.prototype.setRequired = function (required) {
this.$element.prop('required', true);
};
/**
* Read Only click handler.
......
......@@ -11,7 +11,7 @@ QfqNS.Element = QfqNS.Element || {};
'use strict';
n.getElement = function (name) {
var $element = $('[name="' + name + '"]');
var $element = $('[name="' + name + '"]:not([type="hidden"])');
if ($element.length === 0) {
throw Error('No element with name "' + name + '" found.');
}
......
......@@ -106,6 +106,11 @@ var QfqNS = QfqNS || {};
configuration.disabled = n.Helper.stringToBool(disabledVal);
}
var requiredVal = $element.data("required");
if (requiredVal !== undefined) {
configuration.required = n.Helper.stringToBool(requiredVal);
}
configurationArray.push(configuration);
} catch (e) {
n.Log.error(e.message);
......@@ -689,6 +694,10 @@ var QfqNS = QfqNS || {};
if (configurationItem.hidden !== undefined) {
element.setHidden(configurationItem.hidden);
}
if (configurationItem.required !== undefined) {
element.setRequired(configuration.required);
}
} catch (e) {
n.Log.error(e.message);
}
......
......@@ -81,7 +81,7 @@
</div>
<form id="myForm" class="form-horizontal">
<form id="myForm" class="form-horizontal" data-toggle="validator">
<div class="form-group">
<div class="col-md-2">
......@@ -98,6 +98,7 @@
<div class="col-md-2">
<label for="select" class="control-label">Select (name: select)</label>
</div>
<input type="hidden" name="select">
<div class="col-md-6">
<select id="select" class="form-control" name="select">
<option>a</option>
......@@ -120,6 +121,7 @@
<input type="radio" name="radio" value="a">a
</label>
</div>
<input type="hidden" name="radio">
<div class="radio">
<label>
<input type="radio" name="radio" value="b">b
......@@ -139,6 +141,7 @@
</div>
<div class="col-md-6">
<input type="hidden" name="checkbox">
<div class="checkbox">
<label>
<input type="checkbox" id="checkbox" name="checkbox" data-hidden="no">
......@@ -174,6 +177,7 @@
<script src="../js/jquery.min.js"></script>
<script src="../js/bootstrap.min.js"></script>
<script src="../js/validator.min.js"></script>
<script src="../js/jqx-all.js"></script>
<script src="../js/EventEmitter.min.js"></script>
<script src="../js/qfq.debug.js"></script>
......
......@@ -6,10 +6,10 @@
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link rel="stylesheet" href="../packages/bootstrap/css/bootstrap.min.css">
<link rel="stylesheet" href="../packages/bootstrap/css/bootstrap-theme.min.css">
<link rel="stylesheet" href="../packages/jqwidgets/css/jqx.base.css">
<link rel="stylesheet" href="../packages/jqwidgets/css/jqx.darkblue.css">
<link rel="stylesheet" href="../css/bootstrap.min.css">
<link rel="stylesheet" href="../css/bootstrap-theme.min.css">
<link rel="stylesheet" href="../css/jqx.base.css">
<link rel="stylesheet" href="../css/jqx.darkblue.css">
<title>Nice title</title>
<style>
......@@ -1094,9 +1094,9 @@
</div>
<script src="../packages/jquery/js/jquery.min.js"></script>
<script src="../packages/bootstrap/js/bootstrap.min.js"></script>
<script src="../packages/jqwidgets/js/jqx-all.js"></script>
<script src="../js/jquery.min.js"></script>
<script src="../js/bootstrap.min.js"></script>
<script src="../js/jqx-all.js"></script>
<script type="text/javascript">
$(function () {
$('[data-toggle="tooltip"]').tooltip();
......
@startuml
skinparam classAttributeIconSize 0
package "QfqNS" {
class Alert {
-makeAlertContainerSingleton()
-countAlertsInAlertContainer()
-getAlertClassbasedOnMessageTyp()
-getButtons()
-afterFadeIn()
-removeAlert()
-okButtonHandler()
-saveButtonHandler()
-cancelButtonHandler()
+isShown()
+show()
}
class EventEmitter
class BSTabs
class FileDelete
class FileUpload
class Form
class PageState
class PageTitle <<singleton>>
class QfqForm
class QfqPage
class QfqRecordList
class Log <<singleton>>
Alert .. FileDelete
Alert .. QfqForm
Alert .. QfqRecordList
Log .. QfqForm
Log .. QfqPage
BSTabs "1" <--* "1" QfqPage
PageState "1" <--* "1" QfqPage
QfqForm "1" <--* "1" QfqPage
PageTitle .. QfqPage
BSTabs "1" <--* "1" QfqForm
Form "1" <--* "1" QfqForm
EventEmitter "1" <--* "1" QfqForm
FileUpload "1" <--* "1" QfqForm
FileDelete "1" <--* "1" QfqForm
EventEmitter "1" <--* "1" PageState
Log .. PageState
EventEmitter "1" <--* "1" FileUpload
EventEmitter "1" <--* "1" FileDelete
EventEmitter "1" <--* "1" BSTabs
}
package "QfqNS.Element" {
class Checkbox
class FormGroup
class Radio
class Select
class Textual
FormGroup <-- Checkbox
FormGroup <-- Radio
FormGroup <-- Select
FormGroup <-- Textual
}
QfqForm .. FormGroup
@enduml
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment