How to show different containers that contains different form on widget based on loggedin users
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-25-2024 06:39 AM - edited 02-25-2024 06:40 AM
Hi All,
I have a widget that loads on a Portal Page.
Page name - Contact list page and it has a widget.
That widget has 2 containers with 2 different forms and fields.
Example
<div id="contactlistform1" ng-show="c.frm1">
<div class="row">
<div class="col-xs-6">
<div class="form-group">
<label for="PUseremail"><b>Email</b><span class="fa fa-asterisk mandatory"></span></label>
<input type="text" placeholder="Enter Email" class="form-control" name="PUseremail" ng-model="c.addUsr.PUseremail" required>
<span class="error" style="display : none;color:#ff0000;" id="PUseremail">{{c.errMsg.emailerror}}</span>
</div>
</div>
</div>
<!-- Form 2-->
<div id="contactlistform2" ng-show="c.frm2">
<div class="row">
<div class="col-xs-6">
<div class="form-group">
<label for="name"><b>Name</b><span class="fa fa-asterisk mandatory"></span></label>
<input type="text" placeholder="Enter Name" class="form-control" name="name" ng-model="c.addUsr.name" required>
<span class="error" style="display : none;color:#ff0000;" id="name">{{c.errMsg.emailerror}}</span>
</div>
</div>
</div>
</div>
</div>
Now the req is to show the form 1 - contactlistform1 only if the logged in user does have "franco" in the domain on email.
Meaning:
Var grcheckuser = new GlideRecord('sys_user');
grcheckuser.addQuery('sys_id',gs.getLoggedInuser());
grcheckuser.query();
if(grcheckuser.next()
{
var email = grcheckuser.email();
if(email.indexOf('franco'))
{
return true; // This has to be passed to client side/ html and if this condition is returned it has to show form 1
}
else
{
return false; // this has to show form2
}
}
Can someone help to achieve this?
@Dr Atul G- LNG @Danish Bhairag2 @Mark Manders @James Chun @Harish KM
TIA.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-25-2024 08:28 AM
Hi @DB1 ,
Please use the below codes -
HTML -
<div id="contactlistform1" ng-show="c.frm1">
<div class="row">
<div class="col-xs-6">
<div class="form-group">
<label for="PUseremail"><b>Email</b><span class="fa fa-asterisk mandatory"></span></label>
<input type="text" placeholder="Enter Email" class="form-control" name="PUseremail" ng-model="c.addUsr.PUseremail" required>
<span class="error" style="display : none;color:#ff0000;" id="PUseremail">{{c.errMsg.emailerror}}</span>
</div>
</div>
</div>
</div>
<!-- Form 2-->
<div id="contactlistform2" ng-show="c.frm2">
<div class="row">
<div class="col-xs-6">
<div class="form-group">
<label for="name"><b>Name</b><span class="fa fa-asterisk mandatory"></span></label>
<input type="text" placeholder="Enter Name" class="form-control" name="name" ng-model="c.addUsr.name" required>
<span class="error" style="display : none;color:#ff0000;" id="name">{{c.errMsg.emailerror}}</span>
</div>
</div>
</div>
</div>
Server Side -
(function() {
/* populate the 'data' object */
/* e.g., data.table = $sp.getValue('table'); */
data.userCheck = '';
var grcheckuser = new GlideRecord('sys_user');
grcheckuser.addQuery('sys_id', gs.getUserID());
grcheckuser.query();
if (grcheckuser.next()) {
var email = grcheckuser.email.toString();
if (email.indexOf('franco') > 0) {
data.userCheck = 'yes'; // This has to be passed to client side/ html and if this condition is returned it has to show form 1
} else {
data.userCheck = 'no'; // this has to show form2
}
}
})();
Client Controller -
api.controller=function() {
/* widget controller */
var c = this;
c.frm1 ='';
c.frm2 = '';
if(c.data.userCheck == 'yes') {
c.frm1 = true;
c.frm2 = false;
}
else {
c.frm2 = true;
c.frm1 = false;
}
};