How do i replace 'view Ember.TextField' with 'input' in an emblem template? - emblem.js

I recently updated to Ember 1.8.0 and using view Ember.TextField valueBinding="name" throws a deprecation error. Per the deprecation guide it should be replaced with the input helper, but the following doesn't work
input valueBinding="name"

Add a = to the line so that emblem treats it as a helper invocation
= input valueBinding="name"
The same is true for updating view Ember.Select. See the discussion here.
= view 'select'

Related

sonarqube giving false positive with the rule "Unknown type selectors should be removed" when trying to style a custom HTML tag

We have used angular custom directive to generate a custom html tag called .The corresponding style sheet file for this tag is student.scss and its content is
student-result {/* Sonarqube is reporting critical issue at this line saying
"Remove the usage of the unknown "student-result" type selector" */
.student-result-top {
position :absolute;
height :300px;
}
}
Can anybody suggest any way to resolve the issue or any plugin which will make sonarqube to recognize these custom HTML tags?
Geo j's approach of using a class selector instead of an element selector is good. Instead of editing every html source file to add the class, you can use #HostBinding to give every instance of the component the same class by default:
#HostBinding('class.student-result') hasStudentResultClass = true;
Instead of using the angular selector directly inside your scss file give an id or class to it and apply required style.
<student-result class="student-result"></student-result>
Now in your scss access the same selector as .student-result instead of student-result. This might help I believe.

Inserting a link into CKEditor

I'm trying to insert a link into an instance of CKEditor using the following line: -
CKEDITOR.instances.CKInstance.insertHtml('My Text');
All that happens though is that 'MyText' is inserted without the link. Anyone know how to insert the link properly?
PS. I know that CKEditor comes with a plugin to insert links but I'm doing my own one
Thanks
Shazoo
I guess that you're using CKEditor 4.1 or newer. And since you don't use the official link plugin, your editor discards all <a> tags. You need to properly configure Allowed Content Filter so your editor accepts <a> tags back again.
You can do it when defining your command, like this:
// Assuming you want a dialog-driven command...
editor.addCommand( 'yourCommand', new CKEDITOR.dialogCommand( 'link', {
allowedContent: 'a[!href]', // Allow <a> in the editor with mandatory href attr.
requiredContent: 'a[href]' // This command requires <a> with href to be enabled.
} ) );
Or in editor's config with config.extraAllowedContent = 'a[!href]'. This is not recommended though as you develop a plugin (right?), which should bring a custom command.

ZF2 debugging custom view helper

I a Zend Framework 2 custom view helper I use:
$uri = $this->view->vars()->mainMenu->findById('h');
The mainMenu property is a Zend\Navigation\Navigation object.
The result is that rendering of my view script stops at the point of executing the view helper without any error message. So for all practical purposes: the white screen of death.
In this view helper the line:
$uri = $this->view->vars()->mainMenu;
does work, so apparently the issue is with the findById() method.
But if I use the first line directly in my view script, I do get the expected result, a string containing the url of my home page: '/'.
My question is:
What is the issue with the findById() method in my view helper?
and/or (more importantly):
How can I debug this (and other, it is a recurring problem) issue in the view helper environment?
The Problem is that findById() doesn't exist. Check the Zend\Navigation\AbstractActionContainer which the Zend\Navigation\Navigation extends.
The correct method (i guess) would be findBy(), findAllBy() or findOneBy()
$this->view->vars()->mainMenu->findOneBy('id', 'my-id-to-find');
Found the issue by first addressing the second part of my question, by installing XDEBUG (on Zend Server CE) which finally gave some error output (calling method on non-object).
Where I was focusing on my layout view script, the same view helper also existed in my (final) view script where the navigation object was not available under the reference I used.
What works in both view and layout script is:
$uri = $this->view->layout()->getVariables()->mainNav->findById('h');
I found my solution here:
http://akrabat.com/zend-framework-2/access-view-variables-in-another-view-model/

Telerik MVC Grid paging error

I'm using the telerik mvc grid which shows up fine with the proper css classes applied and has data in it but the paging doesn't seem to work... When I click on the one of the page numbers at the bottom of the grid it throws this error:
The method 'Skip' is only supported for sorted input in LINQ to Entities. The method 'OrderBy' must be called before the method 'Skip'
I realized that I didn't have the scripts registered so I put them in:
#Html.Telerik().ScriptRegistrar.DefaultGroup(Sub(groups)
groups.Add("~/Scripts/2011.2.712/telerik.common.min.js")
groups.Add("~/Scripts/2011.2.712/telerik.grid.min.js")
End Sub)
Also tried:
#Html.telerik().ScriptRegistrar()
When it tries to register these scripts it complains that it cannont find telerik.common.js. I looked in the telerik folder (program files) where I got the script files originally and there is no telerik.common.js only the min version of it...
Any advice would be greatly appreciated!
Try to add it this way (without .min. )
group.Add("telerik.common.js").
Telerik ScriptRegistrar automatically converts it to "telerik.common.min.js"

jQuery Validate - Enable validation for hidden fields

In the new version of jQuery validation plugin 1.9 by default validation of hidden fields ignored. I'm using CKEditor for textarea input field and it hides the field and replace it with iframe. The field is there, but validation disabled for hidden fields. With validation plugin version 1.8.1 everything works as expected.
So my question is how to enable validation for hidden fields with v1.9 validation plugin.
This setting doesn't work:
$.validator.setDefaults({ ignore: '' });
The plugin's author says you should use "square brackets without the quotes", []
http://bassistance.de/2011/10/07/release-validation-plugin-1-9-0/
Release: Validation Plugin 1.9.0:
"...Another change should make the setup of forms with hidden elements
easier, these are now ignored by default (option “ignore” has
“:hidden” now as default). In theory, this could break an existing
setup. In the unlikely case that it actually does, you can fix it by
setting the ignore-option to “[]” (square brackets without the
quotes)."
To change this setting for all forms:
$.validator.setDefaults({
ignore: [],
// any other default options and/or rules
});
(It is not required that .setDefaults() be within the document.ready function)
OR for one specific form:
$(document).ready(function() {
$('#myform').validate({
ignore: [],
// any other options and/or rules
});
});
EDIT:
See this answer for how to enable validation on some hidden fields but still ignore others.
EDIT 2:
Before leaving comments that "this does not work", keep in mind that the OP is simply asking about the jQuery Validate plugin and his question has nothing to do with how ASP.NET, MVC, or any other Microsoft framework can alter this plugin's normal expected behavior. If you're using a Microsoft framework, the default functioning of the jQuery Validate plugin is over-written by Microsoft's unobtrusive-validation plugin.
If you're struggling with the unobtrusive-validation plugin, then please refer to this answer instead: https://stackoverflow.com/a/11053251/594235
This worked for me, within an ASP.NET MVC3 site where I'd left the framework to setup unobtrusive validation etc., in case it's useful to anyone:
$("form").data("validator").settings.ignore = "";
Make sure to put
$.validator.setDefaults({ ignore: '' });
NOT inside $(document).ready
So I'm going to go a bit deeper in to why this doesn't work because I'm the kind of person that can't sleep at night without knowing haha. I'm using jQuery validate 1.10 and Microsoft jQuery Unobtrusive Validation 2.0.20710.0 which was published on 1/29/2013.
I started by searching for the setDefaults method in jQuery Validate and found it on line 261 of the unminified file. All this function really does is merge your json settings in to the existing $.validator.defaults which are initialized with the ignore property being set to ":hidden" along with the other defaults defined in jQuery Validate. So at this point we've overridden ignore. Now let's see where this defaults property is being referenced at.
When I traced through the code to see where $.validator.defaults is being referenced. I noticed that is was only being used by the constructor for a form validator, line 170 in jQuery validate unminified file.
// constructor for validator
$.validator = function( options, form ) {
this.settings = $.extend( true, {}, $.validator.defaults, options );
this.currentForm = form;
this.init();
};
At this point a validator will merge any default settings that were set and attach it to the form validator. When you look at the code that is doing the validating, highlighting, unhighlighting, etc they all use the validator.settings object to pull the ignore property. So we need to make sure if we are to set the ignore with the setDefaults method then it has to occur before the $("form").validate() is called.
If you're using Asp.net MVC and the unobtrusive plugin, then you'll realize after looking at the javascript that validate is called in document.ready. I've also called my setDefaults in the document.ready block which is going to execute after the scripts, jquery validate and unobtrusive because I've defined those scripts in the html before the one that has the call in it. So my call obviously had no impact on the default functionality of skipping hidden elements during validation. There is a couple of options here.
Option 1 - You could as Juan Mellado pointed out have the call outside of the document.ready which would execute as soon as the script has been loaded. I'm not sure about the timing of this since browsers are now capable of doing parallel script loading. If I'm just being over cautious then please correct me. Also, there's probably ways around this but for my needs I did not go down this path.
Option 2a - The safe bet in my eyes is to just replace the $.validator.setDefaults({ ignore: '' }); inside of the document.ready event with $("form").data("validator").settings.ignore = "";. This will modify the ignore property that is actually used by jQuery validate when doing each validation on your elements for the given form.
Options 2b - After looking in to the code a bit more you could also use $("form").validate().settings.ignore = ""; as a way of setting the ignore property. The reason is that when looking at the validate function it checks to see if a validator object has already been stored for the form element via the $.data() function. If it finds a validator object stored with the form element then it just returns the validator object instead of creating another one.
This worked for me within an ASP.NET site.
To enable validation on some hidden fields use this code
$("form").data("validator").settings.ignore = ":hidden:not(#myitem)";
To enable validation for all elements of form use this one
$("form").data("validator").settings.ignore = "";
Note that use them within $(document).ready(function() { })
Just added ignore: [] in the specific page for the specific form, this solution worked for me.
$("#form_name").validate({
ignore: [],
onkeyup: false,
rules: {
},
highlight:false,
});
This is working for me.
jQuery("#form_name").validate().settings.ignore = "";
The validation was working for me on form submission, but it wasn't doing the reactive event driven validation on input to the chosen select lists.
To fix this I added the following to manually trigger the jquery validation event that gets added by the library:
$(".chosen-select").each(function() {
$(this).chosen().on("change", function() {
$(this).parents(".form-group").find("select.form-control").trigger("focusout.validate");
});
});
jquery.validate will now add the .valid class to the underlying select list.
Caveat: This does require a consistent html pattern for your form inputs. In my case, each input filed is wrapped in a div.form-group, and each input has .form-control.
Just find the text ignore: ":hidden" in your jquery validation file and comment it.
After comment this it will never loss any hidden elements to validate...
Thanks

Resources