fml update

This commit is contained in:
Steffen Schröder
2014-04-15 15:47:57 +02:00
parent 81af68838b
commit 6e37411fc4
5 changed files with 209 additions and 33 deletions

View File

@ -693,7 +693,43 @@ if (Event.Control.HasClass(\"" . self::CLASS_MENUBUTTON . "\")) {
$this->setInclude('TextLib', 'TextLib');
$pagesNumberPrefix = self::CLASS_PAGE . '-P';
$pagesNumberPrefixLength = strlen($pagesNumberPrefix);
$pagesScript = "
$pagesInitScript = "
declare PageLabelControls = CMlControl[];
Page.GetClassChildren(\"" . self::CLASS_PAGELABEL . "\", Page.MainFrame, True);
foreach (PageLabelControl in Page.GetClassChildren_Result) {
declare Temp = PageLabelControl;
PageLabelControls.add(Temp);
}
declare FML_MinPageNumber for This = Integer[Text];
declare FML_MaxPageNumber for This = Integer[Text];
declare FML_PageNumber for This = Integer[Text];
foreach (PageLabelControl in PageLabelControls) {
foreach (ControlClass in PageLabelControl.ControlClasses) {
Page.GetClassChildren(ControlClass, Page.MainFrame, True);
foreach (PageControl in Page.GetClassChildren_Result) {
if (!PageControl.HasClass(\"" . self::CLASS_PAGE . "\")) continue;
foreach (PageControlClass in PageControl.ControlClasses) {
if (TextLib::SubText(PageControlClass, 0, {$pagesNumberPrefixLength}) != \"{$pagesNumberPrefix}\") continue;
declare PageNumber = TextLib::ToInteger(TextLib::SubText(PageControlClass, {$pagesNumberPrefixLength}, TextLib::Length(PageControlClass)));
if (!FML_MinPageNumber.existskey(ControlClass) || PageNumber < FML_MinPageNumber[ControlClass]) {
FML_MinPageNumber[ControlClass] = PageNumber;
}
if (!FML_MaxPageNumber.existskey(ControlClass) || PageNumber > FML_MaxPageNumber[ControlClass]) {
FML_MaxPageNumber[ControlClass] = PageNumber;
}
break;
}
}
if (FML_MinPageNumber.existskey(ControlClass)) {
FML_PageNumber[ControlClass] = FML_MinPageNumber[ControlClass];
declare PageLabel <=> (PageLabelControl as CMlLabel);
PageLabel.Value = FML_PageNumber[ControlClass]^\"/\"^FML_MaxPageNumber[ControlClass];
}
}
}";
$pagesClickScript = "
if (Event.Control.HasClass(\"" . self::CLASS_PAGER . "\")) {
declare Text PagesId;
declare Integer PagingAction;
@ -710,28 +746,9 @@ if (Event.Control.HasClass(\"" . self::CLASS_PAGER . "\")) {
}
}
}
declare FML_PagesLastScriptStart for This = FML_ScriptStart;
declare FML_MinPageNumber for This = Integer[Text];
declare FML_MaxPageNumber for This = Integer[Text];
declare FML_PageNumber for This = Integer[Text];
if (FML_PagesLastScriptStart != FML_ScriptStart || !FML_PageNumber.existskey(PagesId) || !FML_MinPageNumber.existskey(PagesId) || !FML_MaxPageNumber.existskey(PagesId)) {
Page.GetClassChildren(PagesId, Page.MainFrame, True);
foreach (PageControl in Page.GetClassChildren_Result) {
if (!PageControl.HasClass(\"" . self::CLASS_PAGE . "\")) continue;
foreach (ControlClass in PageControl.ControlClasses) {
if (TextLib::SubText(ControlClass, 0, {$pagesNumberPrefixLength}) != \"{$pagesNumberPrefix}\") continue;
declare PageNumber = TextLib::ToInteger(TextLib::SubText(ControlClass, {$pagesNumberPrefixLength}, TextLib::Length(ControlClass)));
if (!FML_MinPageNumber.existskey(PagesId) || PageNumber < FML_MinPageNumber[PagesId]) {
FML_MinPageNumber[PagesId] = PageNumber;
}
if (!FML_MaxPageNumber.existskey(PagesId) || PageNumber > FML_MaxPageNumber[PagesId]) {
FML_MaxPageNumber[PagesId] = PageNumber;
}
break;
}
}
FML_PageNumber[PagesId] = FML_MinPageNumber[PagesId];
}
FML_PageNumber[PagesId] += PagingAction;
if (FML_PageNumber[PagesId] < FML_MinPageNumber[PagesId]) {
FML_PageNumber[PagesId] = FML_MinPageNumber[PagesId];
@ -739,7 +756,6 @@ if (Event.Control.HasClass(\"" . self::CLASS_PAGER . "\")) {
if (FML_PageNumber[PagesId] > FML_MaxPageNumber[PagesId]) {
FML_PageNumber[PagesId] = FML_MaxPageNumber[PagesId];
}
FML_PagesLastScriptStart = FML_ScriptStart;
Page.GetClassChildren(PagesId, Page.MainFrame, True);
foreach (PageControl in Page.GetClassChildren_Result) {
if (!PageControl.HasClass(\"" . self::CLASS_PAGE . "\")) continue;
@ -758,7 +774,9 @@ if (Event.Control.HasClass(\"" . self::CLASS_PAGER . "\")) {
PageLabel.Value = FML_PageNumber[PagesId]^\"/\"^FML_MaxPageNumber[PagesId];
}
}";
$pagesLabels = Builder::getLabelImplementationBlock(self::LABEL_MOUSECLICK, $pagesScript);
$pagesLabels = Builder::getLabelImplementationBlock(self::LABEL_ONINIT, $pagesInitScript);
$pagesLabels .= Builder::getLabelImplementationBlock(self::LABEL_MOUSECLICK, $pagesClickScript);
return $pagesLabels;
}