fluidtypo3 / vhs Goto Github PK
View Code? Open in Web Editor NEWTYPO3 extension VHS: Fluid ViewHelpers
Home Page: https://fluidtypo3.org
License: Other
TYPO3 extension VHS: Fluid ViewHelpers
Home Page: https://fluidtypo3.org
License: Other
If sys_language_uid !=0, the menu viewhelper doesn't render any pages, which have l18n_cfg set to "2" because of a wrong codeline in vhs/Classes/ViewHelpers/Page/Menu/AbstractMenuViewHelper.php on line 307:
instead of:
} elseif ($page['l18n_cfg'] == 2 && $GLOBALS['TSFE']->sys_language_uid != 0) {
should be:
} elseif ($page['l18n_cfg'] == 2 && $GLOBALS['TSFE']->sys_language_uid != 0 && !$this->pageSelect->getPageOverlay($page['uid'], $GLOBALS['TSFE']->sys_language_uid)) {
hi.. i made a site including all js by v:asset.script
the problem is that the 1st main js is jQuery
and i'm adding manually some JS in the header (also formhandler does it)
but all page.headerData. gets rendered ABOVE all the v:assets.scripts.
so my custom jQuery js doesn't work
any idea how this can be solved?
can i ask VHS to render all assets BEFORE the page.headerData. ?
Hi,
is it possible to use script and style in the configuration section of a fluidcontent element?
i want to embed some styles an js-code to improve the flexform.
When using asset.script, all CSS-file are (usually) compiled into one big file. The file, however, is not updated to reflect the new relative locations of external resources, such as background images for various elements. And when the compiled file is read from typo3temp, all background images result in a 404. This practically makes it unusable for all but the simplest CSS-files or external stylesheets.
If a LanguageMenu has no content an empty ul tag is generated. This causes a HTML validation error.
Would it be possible to remove the entirely LanguageMenu part if no LanguageMenu is configured?
Hi Claus,
In most cases I don't use automatic rendering but and all works fine when I write my markup between the <v:page.menu> tags.
This time there is a special request from the designer to make the menu look like two menus, but the pages ar laying on one level. So I came up with the idea to use the divider to set the point where the two menus are sliced and setup two arrays which i use for the real menu rendering.
<v:page.menu pageUid="{page.uid}" includeSpacers="TRUE">
<v:var.set name="pageCount" value="{f:count(subject: menu)}" />
<f:for each="{menu}" as="menuItem" iteration="i">
<f:if condition="{menuItem.doktype} == 199">
<f:then>
<v:var.set name="spacerPosition" value='{i.index}' />
</f:then>
</f:if>
</f:for>
<v:var.set name="firstMenu" value="{v:iterator.slice(haystack:menu, start: 0, length: spacerPosition)}" />
<f:if condition="{spacerPosition}">
<v:var.set name="secondMenu" value="{v:iterator.slice(haystack:menu, start: spacerPosition, length: pageCount)}" />
<v:var.set name="secondMenu" value="{v:iterator.slice(haystack: secondMenu, start: 1, length: pageCount)}" />
</f:if>
</v:page.menu>
Works awesome...but...inside this the menu gets rendered even there is no link tag or something. Any idea how to avoid this?
Cheers Matthias
Sooo, I'm back with another problem that's (hopefully) not on my end. I've tried changing the displayed page title, but using the page.header.title
viewhelper doesn't seem to do anything.
I've tried using the viewhelper in multiple positions (the layout, my template, in the f:header area) but nothing changed.
I also tried using the good old TypoScript method, but that didn't work either. The title appears in the sourcecode with this method, but there's another title tag getting rendered before that, so the TypoScript title isn't working.
I've looked into the ViewHelper, but realised pretty fast I have no idea where the setTitle() method is defined (I couldn't find the getPageRenderer() either).
Aside of that, how can I wrap the normal page title to append or prepend something to the normal page title? In TypoScript I would do something like
page.headerData {
10 = TEXT
10 {
field = title
noTrimWrap = |<title>Prependtext - | - Appendtext</title>|
}
}
But when I do this I currently just get this:
<title>Home</title>
<meta name="generator" content="TYPO3 6.0 CMS">
<link rel="stylesheet" type="text/css" href="typo3temp/stylesheet_somerandomnumber.css" media="all">
<title>Prependtext - Home - Appendtext</title>
Anyway, the viewhelper doesn't put anything anywhere and that's the real issue at the moment :D
The rendered Cache-Identifier for a Domain object isnt unique across languages and domains.
Could becsplved in the viewhelpers sha1 calculating method i guess, this method should take the current sys-language-uid and Domain into account
On a TYPO3 4.5 instance (no flux or fed ever installed).
Usage of <v:page.content.render />
yields the following SQL error:
caller | t3lib_DB::exec_SELECTquery |
ERROR | Unknown column 'tx_flux_column' in 'where clause' |
lastBuiltQuery | SELECT uid FROM tt_content WHERE pid = '8399' AND colPos = '0' AND (tx_flux_column = '' OR tx_flux_column IS NULL) AND tt_content.deleted=0 AND tt_content.t3ver_state<=0 AND tt_content.pid<>-1 AND tt_content.hidden=0 AND tt_content.starttime<=1353427260 AND (tt_content.endtime=0 OR tt_content.endtime>1353427260) AND (tt_content.fe_group='' OR tt_content.fe_group IS NULL OR tt_content.fe_group='0' OR FIND_IN_SET('0',tt_content.fe_group) OR FIND_IN_SET('-1',tt_content.fe_group)) AND (sys_language_uid IN (-1,0) OR (sys_language_uid = '0' AND l18n_parent = '0')) GROUP BY uid ORDER BY sorting ASC |
debug_backtrace | require(/typo3/sysext/cms/tslib/index_ts.php),/index.php#84 // include(/typo3/sysext/cms/tslib/pagegen.php),/typo3/sysext/cms/tslib/index_ts.php#451 // TSpagegen::renderContent#76 // tslib_cObj->cObjGet#319 // tslib_cObj->cObjGetSingle#717 // tslib_content_User->render#770 // tslib_cObj->callUserFunction#56 // call_user_func_array#6394 // tx_templavoila_pi1->main_page# // tx_templavoila_pi1->renderElement#224 // tx_templavoila_pi1->processDataValues#361 // tslib_cObj->cObjGetSingle#642 // tslib_content_FluidTemplate->render#770 // Tx_Fluid_View_AbstractTemplateView->render#159 // Tx_Fluid_Core_Parser_ParsingState->render#175 // Tx_Fluid_Core_Parser_SyntaxTree_RootNode->evaluate#91 // Tx_Fluid_Core_Parser_SyntaxTree_AbstractNode->evaluateChildNodes#38 // Tx_Fluid_Core_Parser_SyntaxTree_ViewHelperNode->evaluate#48 // Tx_Fluid_Core_ViewHelper_AbstractViewHelper->initializeArgumentsAndRender#181 // Tx_Fluid_Core_ViewHelper_AbstractViewHelper->callRenderMethod#231 // call_user_func_array#243 // Tx_Fluid_ViewHelpers_RenderViewHelper->render# // Tx_Fluid_View_AbstractTemplateView->renderSection#91 // Tx_Fluid_Core_Parser_SyntaxTree_ViewHelperNode->evaluate#219 // Tx_Fluid_Core_ViewHelper_AbstractViewHelper->initializeArgumentsAndRender#181 // Tx_Fluid_Core_ViewHelper_AbstractViewHelper->callRenderMethod#231 // call_user_func_array#243 // Tx_Fluid_ViewHelpers_SectionViewHelper->render# // Tx_Fluid_Core_ViewHelper_AbstractViewHelper->renderChildren#110 // Tx_Fluid_Core_Parser_SyntaxTree_AbstractNode->evaluateChildNodes#272 // Tx_Fluid_Core_Parser_SyntaxTree_ViewHelperNode->evaluate#54 // Tx_Fluid_Core_ViewHelper_AbstractViewHelper->initializeArgumentsAndRender#181 // Tx_Fluid_Core_ViewHelper_AbstractViewHelper->callRenderMethod#231 // call_user_func_array#243 // Tx_Vhs_ViewHelpers_Page_Content_RenderViewHelper->render# // Tx_Vhs_ViewHelpers_Page_Content_GetViewHelper->getContentRecords#54 // t3lib_DB->exec_SELECTquery#129 // t3lib_DB->debug#247 |
In the BP, I am using <v:security.allow anyBackendUser="TRUE">
for displaying some helping info once a BE user is logged in. This work well and I guess this is appreciated. However there is the problem the page is cached as such. In other words, if you load the same page with another browser, you will see security content.
With the plan, BP could be put as public demo website, I would like to find a solution. To better reproduce the issue, try this in the BP:
<v:security.allow anyBackendUser="TRUE">
)Is it a missing feature or missing configuration from my side? If so, can we find a way that security View Helpers in general are capable of disabling caching in a way or another? Disabling cache should be done obviously only if the security condition is ful-filled. What do you think?
Fb.
Hi Claus
awesome work! Finally I can get rid of CDATA in my javascript.
I'm not sure if I have understood your statement:
"The variables which are available will be the exact variables which are available where the Asset is placed"
At the moment I have to pass the variable id in the arguments attribute. If I omit the arguments attribute in the following case, it doesn't work.
Elements/Orbit.html
<flux:flexform.field.input name="id" label="ID of Slider, e.g. 'featured'"/>
<v:asset.script path="EXT:fluidcontent_zurb/Resources/Public/javascripts/elements/orbit-init.js" name="orbit-init"
fluid="1" arguments="{id: '{id}'} />
orbit-init.js:
$(document).ready(function () {
$('#{id}').orbit();
});
practical case:
in news extension i get the selected tag (to filter by it) as a GET parameter and Fluid sees it as {overwriteDemand.tags} ( = 4, for example)
now i want to render the title of tag 4
i would need a simple viewhelper that returns "select title from tx_news_domain_model_tag where uid = {overwriteDemand.tags} "
is there already a ViewHelper that does it ? (i don't want to call a TS objects that does it)
if not i'm going to write it and propose to put it.. where? in the Render section?
should i call it Render FieldViewHelper ?
Hi Claus,
we got some trouble because IE9 doesn't unterstand ´----!>´ as closing HTML comment. So there was no CSS/JS available in IE9.
This one is easyly solved with a 4 times replacement of ´----!>´ with ´---->´ in /vhs/Classes/ViewHelpers/AssetViewHelper.php.
Regards from Berlin,
Philipp
If FALSE === file_exists($absolutePathAndFilename) then it leads to a runtime exception. Would be good for having here some more information about from where this error belongs.
Hello Claus,
I just discovered a Problem in my Project after activating vhs. I get this Fatal Error in FE: Fatal error: Class 'Tx_Vhs_ViewHelpers_Asset_AbstractAssetViewHelper' not found in /var/www/html/.../typo3conf/ext/vhs/Classes/ViewHelpers/AssetViewHelper.php on line 66
I tried to drill down the problem, which breaks my FE. If line 6 in ext_localconf.php is commented out, the error is gone.
I'm not sure, but probably in 4.5 extbase is not that far when it comes to setting SC_Options. What do you think?
Regards
Peter
The AssetViewHelper uses comments like "<!---- ... ----!>"
There are two rather big issues with that:
So I recommend using plain old "" as comments to avoid possible problems.
I have a submenu composed by three levels, see in action. I would like to have them collapse by default when I am on this page ("Microdata", ... should go away) but expanded when I am on this one.
Do you see anything wrong in the current implementation? Have I missed something?
I have played with attribute "levels" and "expandAll" but none of them have brought success. I also tried generating the sub-menu without the sub loop as an attempt.
Thanks.
It would be nice to have two ViewHelpers v:random.content
which are basically aliases of existing content fetching ViewHelpers, capable of selecting content randomly. They should extend v:page.content.get
and v:page.content.render
to support the same attributes but override:
1
Other than this they should do exactly what the current ones do.
the Asset VH have a class loading problem under 4.5:
PHP Fatal error: Class 'Tx_Vhs_ViewHelpers_Asset_AbstractAssetViewHelper' not found in /Users/Sites/site45/typo3conf/ext/vhs/Classes/ViewHelpers/AssetViewHelper.php on line 66
with vhs 1.4 no problems!
should we put that Tx_Vhs_ViewHelpers_Asset_AbstractAssetViewHelper in the autoload ?
There seems to be a collision between TranslateViewHelper::initializeArguments
and registering arguments in LViewHelper::render()
. I get something like "Argument key is already registered". Overriding initializeArguments
with an empty method seems to fix it.
Cheers
Björn
Would be great if you could add this option to it.
If I've got a Page Template using a language menu with the correspondig flag, all other menus will display not translated pages anyway.
Would be great to have a simple possibility for calling Script- and StyleViewHelper inside of own PHP classes.
There are a lot of ViewHelpers in old fed package, where scripts get included through common TYPO3 feature. Would be great if all could get replaced by the new vhs feature.
Cheers domi
Hi,
it seems, that in the CacheViewHelper.php (line 88-92), the __toString method is used too early and produces a identity with a ":" in it, which is not allowed in Fluid.
Solution: exchange the if-conditions in line 88 and 92 , so first test is on Domain Object and second test is on __toString method.
It looks to me aliases / shortcuts in menu are not rendered correctly. Take as example the menu Customizing TYPO3 from the Bootstrap Package at the top. Actually its name should be Helpers. I don't think but it could happen I have miss-configured something. Look at the code from here or this extract:
<v:page.menu entryLevel="{v:var.typoscript(path: 'lib.menu.main.entryLevel')}" useShortcutData="TRUE">
<ul class="nav">
<f:for each="{menu}" as="mainPage" iteration="iteration">
<li class="{mainPage.class}">
<a tabindex="{iteration.cycle -> v:math.sum(b: 100)}"
href="{mainPage.link}"
class="{mainPage.class}">{mainPage.title}</a>
</li>
</f:for>
</ul>
</v:page.menu>
Look at the footer of http://bootstrap.ecodev.ch/. I would like to display a kind of sitemap of the website like it was done for this website (check bottom). The snippet below displays the pages (entryLevel=0) but not the subpages (levels=1 and greater). I could use the v:page.menu.directory but that wouldn't be as flexible since top pages would need to be hard-coded. Is something missing in the snippet below? Do I need to make a double iteration?
<v:page.menu entryLevel="0" levels="2" includeSpacers="FALSE" expandAll="TRUE"
useShortcutData="TRUE">
<f:if condition="{menu}">
<f:for each="{menu}" as="submenuPage" iteration="iteration">
<div class="span2">
<ul class="unstyled">
<li class="{submenuPage.class}">
<a tabindex="{iteration.cycle -> v:math.sum(b: 200)}"
href="{submenuPage.link}" class="{submenuPage.class}">
{submenuPage.title}
</a>
</li>
</ul>
</div>
</f:for>
</f:if>
</v:page.menu>
This error shows up when using the "vhs" extension in TYPO3 4.5.23 (most recent 4.5 version).
Reason: The Classes are not defined in ext_autoload.php and no autoloader registry gets used. This is no problem with 4.7 and 6.0 as class files are tried to get loaded by the default autoloader by naming convention. But such a convention doesn't exist in 4.5
Solution: Change required TYPO3 version to 4.7 in ext_emconf.php or use autoloader registry if current T3 version is 4.5
Hi Claus,
I tried the new v:asset viewhelper:
# Nothing
<v:asset.style path="typo3conf/ext/ondigotemplate/Resources/Public/Css/Style.css" name="styles" standalone="1" />
# Nothing
<v:asset.style path="typo3conf/ext/ondigotemplate/Resources/Public/Css/Fancybox.css" name="fancyboxCss" standalone="1" />
# Nothing, but witt changing allowMoveToFooter="1! it works (but inside the footer)
<v:asset.script path="typo3conf/ext/ondigotemplate/Resources/Public/Js/modernizr-2.6.1.min.js" name="modernizr" standalone="1" allowMoveToFooter="0" />
# works fine
<v:asset.script path="typo3conf/ext/ondigotemplate/Resources/Public/Js/jquery-1.8.3.min.js" name="jquery" standalone="1" />
# works fine
<v:asset.script path="typo3conf/ext/ondigotemplate/Resources/Public/Js/Fancybox.js" name="fancyboxJs" dependencies="jquery" />
There seems to be a problem to add assets to my header. Do you have any idea?
The concept behind the assets looks great. Now it's fantastic easy to write really good Websites.
Thx again, Philipp
Hello,
IE (IE9) is missing styles because of wrong HTML-comment '<!---- ... ----!>
Patch:
http://web78.dehamd048.servertools24.de/test/AssetViewHelper.diff
Regards
Stephan
Hi Claus
I have an issue with the following case:
<v:asset.script path="EXT:fluidcontent_zurb/Resources/Public/javascripts/foundation/jquery.foundation.orbit.js" name="orbit" standalone="0" dependencies="jquery"/>
<v:asset.script path="EXT:fluidcontent_zurb/Resources/Public/javascripts/elements/orbit-init.js" name="orbit-init" standalone="0" fluid="1" arguments="{id:id}" dependencies="jquery,orbit"/>
I do get an included script at the bottom of the body:
<script type="text/javascript" src="typo3temp/vhs-assets-orbit-orbit-init.js"></script>
But inside this javascript file the first script (name="orbit") is missing.
If I set fluid=0 in the second asset (orbit-init.js) both scripts get included in vhs-assets-orbit-orbit-init.js.
It seems variables cannot be used inside an asset.style element.
My code is currently as follows:
<v:asset.style standalone="TRUE">
_some-static-styles-here_
/* Need some panel elements to be configured 1by1 */
<f:for each="{panels}" as="panel" iteration="iteration">
#element-{iteration.index} {
left: {panel.panel.varX};
top: {panel.panel.varY};
}
</f:for>
.class {
width: {myWidth};
height: {myHeight};
background-color: {myBackgroundColor};
}
</v:asset.style>
I saw in the documentation, that there is a fluid
attribute on the asset.style
helper, but when I set it to "TRUE", I get a typo3 message telling me "Parse requires a template string as argument, boolean given.". I also tried using the arguments
attribute explicitely (for {_ALL}
and for my specific test variable), but it returns the same error.
Maybe I did something wrong, though I can't imagine what :)
The variable names are definitely correct, when I cut and paste the code outside the asset.style
element it's working just fine.
/edit
Forgot to say, I tried a workaround with a custom <style>
tag, but it seems it ignores variables there as well :/
Hi Claus,
i tried to use v:asset.script inside a fluidcontent element. First everythings works fine (script is shown in FE), but if i want to define an argument like this:
inside my fluidcontent *.html File
{namespace flux=Tx_Flux_ViewHelpers}
{namespace v=Tx_Vhs_ViewHelpers}
<f:layout name="FCE" />
<f:section name="Configuration">
<flux:flexform wizardTab="Katholikentag Elemente" id="kreatikacountdown" label="KREATIKA: Countdown" description="Pre defined Countdown Element" icon="../typo3conf/ext/fluidcontent_katholikentag/Resources/Public/Icons/icon-KREATIKA.png">
<flux:flexform.field.input name="settings.breite" label="Breite" default="220">
</flux:flexform.field.input>
</flux:flexform>
</f:section>
<f:section name="Preview">
<h2>Countdown Element</h2>
</f:section>
<f:section name="Main">
<div class="countdownbox">
<h4>Das Ziel rückt näher</h4>
<div id="countdown"></div>
<div id="countdownlabel">
<img src="/typo3conf/ext/fluidpages_katholikentag/Resources/Public/jcountdown/label_de.png" alt="countdown label">
</div>
</div>
<v:asset.script name="countdown" path="{f:uri.resource(path: 'jcountdown/countdown.js', extensionName: 'FluidpagesKatholikentag')}" fluid="TRUE" arguments="{breite: settings.breite}" allowMoveToFooter="1" />
</f:section>
inside countdown.js
<f:comment>
</f:comment>
jQuery(document).ready(function(){
jQuery("#countdown").jCountdown({
timeText:"2014/05/28 00:00:00",
timeZone:8,
style:"slide",
color:"black",
width: {breite},
textGroupSpace:15,
textSpace:0,
reflection:false,
reflectionOpacity:10,
reflectionBlur:0,
dayTextNumber:3,
displayDay:true,
displayHour:true,
displayMinute:true,
displaySecond:true,
displayLabel:true,
onFinish:function(){
alert("finish");
}
});
});
The Argument wont render inside the JS File.
Bug or am i to stupid?
Thanks.
While this is true that breadcrumb menu can be styled with CSS, it may be desirable to add some random markup to separate the menu elements. Checkout this example from Twitter Bootstrap and the <span class="divider">/</span>
markup:
<ul class="breadcrumb">
<li><a href="#">Home</a> <span class="divider">/</span></li>
<li><a href="#">Library</a> <span class="divider">/</span></li>
<li class="active">Data</li>
</ul>
I didn't find a way to achieve that with the current implementation:
http://fedext.net/viewhelpers/vhs/Page/BreadCrumbViewHelper.html
What do you thing?
I totally do not get, what the desired behaviour of lines 66-72 is if the view helper is used as follows:
<v:iterator.explode glue="-" content="a-b-c-d" as="var" />
because of the view helper code $contentWasSource stays obviously false which ends in an removed as-variable from templateVariableContext.
Is there something I do not get?
The ViewHelper Vhs/ViewHelpers/Extension/Path/Resources returns the relative path to the extension instead of the path to the $EXT/Resources/Public directory.
In TYPO3 6.0.1 the method t3lib_extMgm::extRelPath() does not except a second parameter.
And its not available elsewhere in the array I get..
Maybe we should add a field with the concept of the rendered title for use when building menues this way, so that the title field can be preserved for the actual title value of the page...
Recreate the bug like this - make sure to have a page in the requested level that uses navigation-title...
<v:page.menu entryLevel="0">
<ul>
<f:for each="{menu}" as="curPage">
<li class="{curPage.class}">
<a href="{curPage.link}">
{curPage.title}
</a>
</li>
</f:for>
</ul>
</v:page.menu>
If you have an numberic property which you want to sortby this causes problems when you have more than one element this that value on sortby property.
Cause of ksort you do the following on Line 122 and Line 163 in SortViewHelper.php:
while (isset($sorted[$index])) { $index .= '1'; }
This will rewrite a numberic value from 1 to 11 for example which will mess up the sorting.
One simple workaround would be to change it to this:
while (isset($sorted[$index])) { $index .= '.1'; }
Then ksort would handle the index as float and not int and sorting will work as expected for numberic properties too.
Hi Claus
<v:page.menu entryLevel="0" classHasSubpages="has-dropdown"></v:page.menu>
When a page has a subpage the class "has-dropdown" is added, as expected.
When I set the subpage to "hide in menus", the class "has-dropdown" is added as well. I would expect, that no class is added in that case.
I started building fluidcontent_zurb! It will take some time until it is feature complete.
Hi Claus,
if "Hide page if no translation for current language exists" is active for some page, then it disappears in menu if current language is not default even if the page is translated.
The problem seems to be in line 307 of AbstractMenuViewHelper.php:
elseif ($page['l18n_cfg'] == 2 && $GLOBALS['TSFE']->sys_language_uid != 0) {
continue;
}
Here it should be checked if the translation exists.
Thanks s in advance.
AbstractMenuViewHelper.php:
Its seems the $rootLine that is used in the isActive() function is somehow corrupted after level 2. That makes $page['active'] turn FALSE and so doesn't expand subMenues.
In TS you would write something like that to get a special menu out of CSV list of pid
20 = HMENU
20.special = directory
20.special.value = 13, 37 # which correspond to page uid
(..)
Having a "page" (reference to last direct tweet) attribute looks ok. However consider the list of special menu below to think what makes sense to be implemented into VH Page.Menu or should be implemented apart into special VH (for not bloating up the current VH Page.Menu)
To bring the big picture, object HEMNU accept different kind of special menu.
20.special = directory
20.special.value = 35, 56
-> will generate a menu of all pages with pid = 35 and pid = 56 (sub-pages included).
-> personal need for that: rather low
20.special = list
20.special.value = 35, 56
-> This will generate a menu with the only two pages (uid=35 and uid=36) listed:
-> personal need for that: high
20.special.value = 35, 56
20.special {
mode = tstamp
depth = 2
maxAge = 3600*24*3
limit = 8
}
-> This will generate a menu of the most recently updated pages
-> personal need for that: low but I can see some useful use case.
Already implemented in VH breadcrumb menu
Already implemented in VH language menu
Never used it.
Never used it.
Can be Implemented by extending the Abstract VH menu (for instance)
When using the <v:form.select>
ViewHelper, the rendered html select tag always contains a multiple
attribute. If I omit the ViewHelpers corresponding multiple
option (falls back to default value of FALSE), the output is still an empty but present (multiple=""
) attribute.
(with omitted multiple attribute)
…
<v:form.select property="bar">
<v:form.select.option value="{someBar.uid}">{someBar.title}</v:form.select.option>
<v:form.select.option value="{otherBar.uid}">{otherBar.title}</v:form.select.option>
</v:form.select>
…
…
<input type="hidden" name="tx_baz_qux[corge][bar]" value="" />
<select multiple="" name="tx_baz_qux[corge][bar][]">
<option value="12">Some Bar</option>
<option value="21">Other Bar</option>
</select>
…
…
<input type="hidden" name="tx_baz_qux[corge][bar]" value="" />
<select name="tx_baz_qux[corge][bar][]">
<option value="12">Some Bar</option>
<option value="21">Other Bar</option>
</select>
…
If the ViewHelpers multiple
is set to anything, it echoes that out in the select
's attribute, which sadly does not help me, because the HTML spec declares…
…the presence of a boolean attribute on an element represents the true value, and the absence of the attribute represents the false value.
If the attribute is present, its value must either be the empty string or a value that is an ASCII case-insensitive match for the attribute's canonical name, with no leading or trailing whitespace.
So setting it to "false" or "disabled" just helps in obfuscating the code ;-)
PHP 5.4.14
TYPO3 6.0.5-dev
vhs 1.6.0
I'd be happy to provide further information if thats needed.
There is an issue, if you include a lot (or simply all) files of a website through AssetViewHelper. PHP error will show up with: File name too long: access to (...).
If for all files a name is getting set, the names get shorter, but still it can be a huge name of string. I think it would be nice to have an option of getting only one hashed string as name or for debug purpose all names inside of the generated typo3temp file.
Cheers! Dominic
This ViewHelper should do everything a plain input form ViewHelper in Fluid does - but never return a rendered field. It should only register a form field token - see in the abstract form ViewHelper in Fluid examples of 1) getting the resulting name of a form field created in a ViewHelper and 2) registering that name to include it in token HMAC building.
Purpose:
<v:form.manualField property="relatedObjects" />
<input type="hidden" name="tx_ext[scope][object][manualName]" />
<!-- insert super advanced selector for related objects here. Results in perfect HMAC with fully custom field -->
Im trying to achieve having a section header from a certain level in my page-tree.
In the old TS HMENU days i would use specials rootline setting an entrypoint and a levels-equivalent. Doing this in v:page.breadcrumb doesn't work as expected - it somehow starts functioning like a menu showing siblings etc.
Is this a bug, or is there another way to limit breadcrumb levels?
See the bug in action by having a 4 levels deep pagetree and using this
<v:page.breadCrumb entryLevel="1" levels="3" />
Hello Claus,
since fed is obsolete. Is there a chance to implement the StyleViewHelper from EXT:fed into EXT:vhs?
Because is want to use EXT:cs_less and it depends on EXT:fed because of this one ViewHelper.
Thanks.
I use <v:page.breadCrumb /> to render a breadcrumb menu. It get's rendered as single
Problem seems to be that in Tx_Vhs_ViewHelpers_Page_BreadCrumbViewHelper the tag is rendered into the variable $output. But this variable is not returned or used anymore.
Hi there,
I want to add a JS-file via:
{namespace v=Tx_Vhs_ViewHelpers}
<v:asset name="isotope" path="path/to/jquery.isotope.min.js" />
but it gives me this exception in the frontend:
Attempt to include file based asset with unknown type ("raw")
Copying this:
<v:asset name="jquery" path="//some.com/cdn/url/jquery.js" />
from here http://fedext.net/news/vhs-150-released.html and replace it with:
<v:asset name="jquery" path="http://code.jquery.com/jquery-1.9.0.min.js" />
will give me this: Asset "" does not exist.
It's the same with CSS-files...
I think two cases are currently not working properly:
1:
jquery is in cached surrounding
jquery is uncached surrounding
Even if I choose a name="jquery" and the path is the same, the file gets included 2 times
2:
jquery is in cached surrounding
myplugin is in uncached surrounding with dependencies="jquery"
Results into an endless loop and site never gets loaded because the script is waiting for jquery.
Not sure about a solution and how the two hooks are working...But maybe would it be possible to call only the last hook, or would it be a performance leak?
Cheers Domi
The Use Case is to display a menu like here (on the right). Sub-pages should not be displayed if parent page is not in root line. Exemple: "Microdata" page should only by rendered if a User has clicked on "Semantic Web"
The current implementation works and looks as this. However, it is pretty verbose and not the easiest to maintain.
Following this discussion, I am opening a feature request which would aim simplifying the Markup. Introducing an autoRender
attribute was suggested. While making the rending recursive, it would be neat to have a variable indicating the level of the recursion enabling condition rendering.
# assuming {level} is an internal variable name of the recursion.
<ul class="{f:if(condition: {level} == 1, then: 'nav nav-list affix-top'), else='submenu-{level}'}">
We would also need a marker within the template where to append the HTML
# __CONTENT would act as placeholder for sub menus content
<ul>
<li class="{menuPage.class}">
<a tabindex="{iteration.cycle -> v:math.sum(b: 100)}"
href="{menuPage.link}" class="{menuPage.class}">
<i class="icon-chevron-right"></i>{menuPage.title}
</a>
{__CONTENT}
</li>
</ul>
Don't know what is feasible here...
Hi Claus
inspired from your SubNavigation Partial in EXT:fluidpages_bootstrap i tried
<v:page.menu entryLevel="0">
<f:for each="{menu}" as="mainPage" iteration="iteration">
<f:debug>{mainPage.doktype}</f:debug>
</f:for>
</v:page.menu>
Result:
Pages which are of type divider {doktype=199} are not in the {menu} Object.
Pages which are of type shortcut {doktype=4} or type standard (doktype=1) are listed in the {menu} Object.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.