Thursday, November 24, 2016

we are back

HI All,

we are back .
Currently we moved to salesforce CRM now .

Bye Bye Siebel  !!!!!

regards
Joseph Thomas

Saturday, November 2, 2013

Open UI -->Client not opening after the updagrade to 8.1.1.11 or 8.2.2.4 -->Message: Object expected error /23030/scripts/siebel/navctrlmngr.js?_scb=8.2.2.4_SIA_[23030]_ENU

Hi ,

last week i upgraded to 8.1.1.11 .upgrade went successful . i upgraded the client and tools .
when i opened the tools it opened successful but i was not able to open the client .


issue : IE browser opens and it will show the callcenter in the top tab but it wont load the page correctly . And when i tired debug i got below error message
/****************************************************************
Webpage error details

User Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2; .NET4.0C; .NET4.0E)
Timestamp: Sun, 3 Nov 2013 06:12:09 UTC


Message: Object expected
Line: 38
Char: 799
Code: 0
URI: http://jo-pc/23030/scripts/siebel/navctrlmngr.js?_scb=8.2.2.4_SIA_[23030]_ENU

********************************************************************

intially i thought i did something wrong at the time of installation . i reinstalled eveything again . downloaded again , installed 8.1.1.11 and 8.2.2.4 .. Still the same message .

Solution : as part of the upgrade we have to download new srf from oracle . we have to replace it with new it with new srf

please find the details below

Find Siebel Repository Files (SRF) as below and click "Download" button.
Name: Siebel Industry Applications Version 8.1.1.11 Siebel Repository Files
Part Number: V39883-01 
Note : follow the same for 8.2.2.4

Advice: Dont waste your time :-)

regards
Jo 
joju2002@gmail.com

Thursday, October 17, 2013

Open UI --> Custom Button In List Applet -- Not working

Hi

i tired to bring a Button in Open UI list Applet .once i mention the custom method name applet wont display properly !!!!!Anyone facing this issue ???

Regards
jo  

Scenario Config : Applet has to display only current year record at the initial load

Scenario : Applet has to display only current Year record at the initial load. But when i do a query an go it has to show all the records [ previous year records also]

ie :only on the applet load it has to show the current year records

My Solution :

 1)      At the time of applet load  --- Set one profile attribute  --This will make sure our code only fire at the time of loading the applet
a.       Set the profile attribute
b.      Set the some value to profile attribute
2
          2)In     function BusComp_PreQuery () before we entering to the code you have to make sure below two things
a.       Whether we are that active view
b.      Whether profile attribute got set or not
                                                               i.      if (TheApplication().ActiveViewName() == "<<ViewName>>" && TheApplication().GetProfileAttr("<<ProfileAttrib>>") == "<<value check>>")
                                                             ii.                      {<<Our code goes here >>           }
c.       Once we execute the code change back the profile attribute to previous value àimportant


Pseudo Code : 
function BusComp_PreQuery ()
{
               
var sSearchExpr;
               
                sSearchExpr = this.GetSearchExpr();
         if (TheApplication().ActiveViewName() == "<<ViewName>>" && TheApplication().GetProfileAttr("<<ProfileAttrib>>") == "<<value check>>")
                if (sSearchExpr != null && sSearchExpr != "")
                    {
                                var dtToday = new Date();
                                dtToday.setDate("1");
                                  dtToday.setMonth("0");
                               dtToday =dtToday.getDate() + "/" + ToNumber(dtToday.getMonth()+1) + "/" +                    dtToday.getFullYear();
                                this.SetSearchExpr("[Agreement Start Date] >='"+dtToday+"'") ;
                } // end of if sSearchExpr 
}// end of if Active View name 
               
return (ContinueOperation);
}

Agreement Start Date  à mention ur field name

Note:Please let me know if there is any other better approach to the above solution.

regards
jo
joju2002@gmail.com




Saturday, September 21, 2013

Open UI -->For list Applet /Form Applet which all js files to include [ For Desktop]

Hi All,

including the proper js files is very important in open ui. otherwise the view wont be rendering properly .

List Applet -- PM  ---[Desktop]
Include below files

<KEY Name="ContactLstPModel">
<FILE_NAME> siebel/applet.js        </FILE_NAME>
<FILE_NAME> siebel/listapplet.js    </FILE_NAME>
<FILE_NAME> siebel/pmodel.js        </FILE_NAME>
<FILE_NAME> siebel/listpmodel.js    </FILE_NAME>
<FILE_NAME> siebel/custom/<<myjsfile>>.js   </FILE_NAME>
</KEY>


List Applet --PR -- [Desktop]
Include below files

<KEY Name="ContactListPRenderer">
 <FILE_NAME> 3rdParty/jqGrid/current/js/i18n/grid.locale-en.js    </FILE_NAME>
               <FILE_NAME> 3rdParty/jqGrid/current/js/jquery.jqGrid.min.js      </FILE_NAME>
               <FILE_NAME> 3rdParty/jqgrid-ext.js                               </FILE_NAME>
               <FILE_NAME> siebel/phyrenderer.js                                </FILE_NAME>
               <FILE_NAME> siebel/jqgridrenderer.js                             </FILE_NAME>
<FILE_NAME> siebel/custom/<<myjsfile>>.js                  </FILE_NAME>
</KEY>


Form Applet --PM --[Desktop]
Include below file

<KEY Name="AccountFormPModel">
<FILE_NAME> siebel/applet.js                    </FILE_NAME>
<FILE_NAME> siebel/pmodel.js                    </FILE_NAME>
<FILE_NAME> siebel/custom/<<Myjsfile>>.js   </FILE_NAME>
</KEY>

Form Applet --PR--[Desktop]
Include beloe file

<KEY Name="AccountFormPRenderer">
<FILE_NAME> siebel/phyrenderer.js                           </FILE_NAME>
<FILE_NAME> siebel/custom/AccountFormPR.js                  </FILE_NAME>
</KEY>

Note: it is very important to extend the correct class name in our js files. 

Regards
Joseph Thomas
joju2002@gmail.com




Wednesday, September 18, 2013

Siebel Open UI: Portlet in External Application


Dear Readers,
The following screenshot shows a Siebel Case List Applet loaded in an external application as a portlet. Good feature that can be leveraged to display Siebel data in Legacy Portals.



- OptimusPrime

Monday, September 16, 2013

OpenUI Custom Theme

Dear Readers ! I was experimenting with Open UI Desktop Themes and realized the UI is thrown open for mods. This is how I ended up after 25 mins. Note the Closed Records are auto highlighted by the mods.
- OptimusPrime

Wednesday, August 7, 2013

Open UI Scenario 2 --> In Account Form Applet Hide/Unhide Phone Number and Fax Number depending on Address field


Open UI Scenario 2 --> In Account Form Applet Hide/Unhide Phone Number and Fax Number depending on Address
by jo [joju2002@gmail.com]

if the Address field is blank we will hide above two fields. If the Addres field having some values we unhide those two fields we have to make

Solution :
Step1: Create new PM
Step2: Create New PR
Step3:Update the Manifest file

PM Code Below 

// check it is already present
if( typeof( SiebelAppFacade.AccountFormPM_Jo ) === "undefined" ){

// add the namespace
    SiebelJS.Namespace( "SiebelAppFacade.AccountFormPM_Jo" );

// Key
    SiebelApp.S_App.RegisterConstructorAgainstKey( "AccountFormPM_Joodel", "SiebelAppFacade.AccountFormPM_Jo" );


    SiebelAppFacade.AccountFormPM_Jo = ( function(){

// call the superclass
        function AccountFormPM_Jo( proxy ){
            SiebelAppFacade.AccountFormPM_Jo.superclass.constructor.call( this, proxy );
        }

// extend the presentation model
        SiebelJS.Extend( AccountFormPM_Jo, SiebelAppFacade.PresentationModel );

// For PM we need init method
        AccountFormPM_Jo.prototype.Init = function(){
            SiebelAppFacade.AccountFormPM_Jo.superclass.Init.call( this );
            this.AddProperty( "ShowAddressRelatedField", "" );
            this.AddMethod( "ShowSelection",  SelectionChange, { sequence : false, scope : this } );
            this.AddMethod( "FieldChange",  OnFieldChange, { sequence : false, scope: this } );
        };

// Custom function: When a new record is selected, set ShowAddressRelatedField to true or false, depending on
 function SelectionChange(){
            var controls = this.Get( "GetControls" );
            var control = controls[ "StreetAddress" ];
            var value = this.ExecuteMethod( "GetFieldValue", control );
            this.SetProperty( "ShowAddressRelatedField", ( value ? true: false ) );
SiebelJS.Log("The value of ShowAddressRelatedField is " + this.Get( "ShowAddressRelatedField"));
        }


// street address field, determine whether or not it is now empty, and set ShowAddressRelatedField accordingly.
        function OnFieldChange( control, value ){
            if( control.GetName() === "StreetAddress" ){
                this.SetProperty( "ShowAddressRelatedField", ( value ? true: false ) );
SiebelJS.Log("The value of ShowAddressRelatedField is " + this.Get( "ShowAddressRelatedField"));
            }
        }
        return AccountFormPM_Jo;
    }());
}



PR Code Below 

if (typeof (SiebelAppFacade.AccountPartialRefreshPR) === "undefined") {
    SiebelJS.Namespace("SiebelAppFacade.AccountPartialRefreshPR");
    SiebelApp.S_App.RegisterConstructorAgainstKey( "AccountPartialRefreshPR", "SiebelAppFacade.AccountPartialRefreshPR" );
    SiebelAppFacade.AccountPartialRefreshPR = ( function(){
SiebelJS.Extend( AccountPartialRefreshPR, SiebelAppFacade.PhysicalRenderer );
                               
        function AccountPartialRefreshPR( pm ){
            SiebelAppFacade.AccountPartialRefreshPR.superclass.constructor.call( this, pm );
            this.GetPM().AttachPMBinding( "ShowAddressRelatedField",  ModifyLayout, { scope: this });
        }
 
        function ModifyLayout( ){
            var controls = this.GetPM().Get( "GetControls" );
            var canShow = this.GetPM().Get( "ShowAddressRelatedField" );
            var WorkPhoneNum = controls[ "MainPhoneNumber" ];
            var FaxPhoneNum = controls[ "MainFaxNumber" ];

            if( canShow ){
                $( "span#MainPhoneNumber_Label" ).parent().fadeIn(500);
                $( "[name='" + WorkPhoneNum.GetInputName() + "']" ).fadeIn(500);
                $( "span#MainFaxNumber_Label" ).parent().fadeIn(500);
                $( "[name='" + FaxPhoneNum.GetInputName() + "']" ).fadeIn(500);
            }
            else{
                $( "span#MainPhoneNumber_Label" ).parent().fadeOut(500);
                $( "[name='" + WorkPhoneNum.GetInputName() + "']" ).fadeOut(500);
                $( "span#MainFaxNumber_Label" ).parent().fadeOut(500);
                $( "[name='" + FaxPhoneNum.GetInputName() + "']" ).fadeOut(500);
            }
}
        return AccountPartialRefreshPR;
    }());

}


Step 3
Update the Manifest and custom_Manifest.xm file

Note: Make sure you clear the history of your browser[With IP 2013 they will remove this issue. IP2013 will be launching on Nov 2013]

Account having address field having value 
Account having address field null. in this case two fields become hidden 

Tuesday, July 30, 2013

Open UI -->Scenario 1--Change the colour of the ROW in the list applet when the revenue is more than 2,000,000

Only PR change is required for this .

if (typeof(SiebelAppFacade.OpptyListPR) === "undefined") {
    SiebelJS.Namespace("SiebelAppFacade.OpptyListPR");
    SiebelApp.S_App.RegisterConstructorAgainstKey("OpptyListPR", "SiebelAppFacade.OpptyListPR");

    SiebelAppFacade.OpptyListPR = (function () {
        function OpptyListPR(pm) {
            SiebelAppFacade.OpptyListPR.superclass.constructor.call(this, pm);
        }

        SiebelJS.Extend(OpptyListPR, SiebelAppFacade.JQGridRenderer);

        OpptyListPR.prototype.BindData = function SetColor() {
            SiebelAppFacade.OpptyListPR.superclass.BindData.call(this, SetColor);
            var pm = this.GetPM();
            var recordset = pm.Get("GetRecordSet");
            var placeholder = pm.Get("GetPlaceholder");
            var rsLength = recordset ? recordset.length : 0;
            var trFinder;
            var trtdFinder;
var amt;

            if (rsLength > 0) {
                for (var i = 0; i < rsLength; i++) {
                    trFinder = $('#' + placeholder).find('[Id=' + (i + 1) + ']');
                    trtdFinder = $(trFinder).find('td')[1];
amt =recordset[i]["Primary Revenue Amount"];
var number = Number(amt.replace(/[^0-9\.]+/g,""));
                    if (number >= "2000000") {
                        $(trFinder).css('background-color', 'Red');
                    }
                }
            }
        }
        return OpptyListPR;
    }());

}

we have to update manifest and customer files with the above js names

Screen shot 









Tuesday, April 23, 2013

i am back

Hi All,


after a long gap i am back in action

regards
jo

Scripting -->In an Read Only view i want to make the buttons Read Only


IsViewReadOnly Method

You can use the IsViewReadOnly method to test whether a view is read-only

Syntax
Application.InvokeMethod("IsViewReadOnly",viewName)


viewName: The name of a view, as defined in Siebel Tools, in double quotes or a variable containing the name of a view.
 Returns:Returns TRUE if the view is read-only, else it returns FALSE. If neither of these values is returned, then an error has occurred. Your script must provide a handler if neither TRUE nor FALSE is returned.

Sample Code :
function WebApplet_PreCanInvokeMethod (MethodName, &CanInvoke)
{
                var sviewname = TheApplication().ActiveViewName();
 if (TheApplication().InvokeMethod("IsViewReadOnly",sviewname) == "TRUE")
                {
                                if (MethodName == "<<CustomMethod>>")
                                 CanInvoke = "FALSE";
                                 else
                                CanInvoke = "TRUE";
                                return CancelOperation;
                }
                return (ContinueOperation);
}


regards
jo

Wednesday, September 7, 2011

Scripting --> How to PopUp Applet Using scripting

Using below code we can pop up applet using scripting



case "MyTest":
var oServiceAF = TheApplication().GetService("SLM Save List Service");
var inputPropAF = TheApplication().NewPropertySet();
var outputPropAF = TheApplication().NewPropertySet();
inputPropAF.SetProperty("Applet Name",);
inputPropAF.SetProperty("Applet Mode", "6");
oServiceAF.InvokeMethod("LoadPopupApplet", inPropAF, outPropAF);
return(CancelOperation);

Thursday, July 14, 2011

drilldown on ActivityType in Activity Applet. It doesn’t take you to the record you have clicked on but takes you to the firs

Thanks Bhavesh for sharing below info

When on Home Page, and drilldown on ActivityType in Activity Applet. It doesn’t take you to the record you have clicked on but takes you to the first record in activities.

à What was done to fix it.

Go to the Activity Home Page Applet. Check for all drilldown objects on ActivityType

Add ‘Id’ (specifically) in Source & Destination fields

Compile n release the SRF

Siebel v7.7 has a different query than v8.1..

Sample Thick Client Not working .IE showing Page Cannot be displayed

Thick client is not working for sample in IE 7 .

I tired below things
  • Put the site under Trusted Site
  • Checked for the ODBC Connection
  • tried to open from debug mode [Still not working ]
At last i did two changes i dont know which helped me in resolving it .

--> Client CFG >> EnableFQDN Changed to False
Siebel Mobile Web Client. To use FQDN for this client type, configure the following parameters in the Siebel application configuration file, such as uagent.cfg for Siebel Call Center, on each local client machine.

[Siebel]
EnableFQDN = TRUE

EnableFQDN is set to TRUE by default for the Siebel Mobile Web Client.

If you do not also specify the FQDN parameter, the system constructs the URL automatically. For example, the system might construct the FQDN for CCHENG as ccheng.corp.oracle.com. Optionally, you can explicitly provide similar information below, using the FQDN parameter.

CAUTION: When you explicitly configure an FQDN for use with the Siebel Mobile Web Client, you must specify the local machine name. The localhost string from the default Siebel Mobile Web Client URL (which is used when EnableFQDN = FALSE) cannot be used as an element in an FQDN. The localhost string is only functional when used by itself, with no additional qualifying elements.

FQDN = hostname.primaryDNS.domainsuffix

where:

* hostname is the name of the local client machine
* primaryDNS is the primary part of the domain name (such as siebel)
* domainsuffix is the domain type (such as com)

For example, you might set FQDN to ccheng.corp.oracle.com.
---> Reinstall IE 7

after doing tht it starts working

thanks and regards
Joseph (Joju)
joju2002@gmail.com

Tuesday, July 5, 2011

Calc the working days between two days including the public holidays

Using below code we can find the number of working days between two dates inculding the public holidays . I wrote this code long back for one POC .I guess it will work :-) .

Req : I have to find working days between two dates ie : i have to remove weekends/ Public Holidays between two dates



function Service_PreInvokeMethod (MethodName, Inputs, Outputs)
{
if (MethodName=="Working Days")
{
//MM DD YYYY format
var StartDate = Inputs.GetProperty("StartDate");
var EndDate = Inputs.GetProperty("EndDate");
var start= new Date(StartDate);
var end = new Date(EndDate);
var abc=0;
// On application fill the Public Holidays from Application
// Under Adm-Service update all the public holidays

var sBO=TheApplication().GetBusObject("Shift");
var sBC=sBO.GetBusComp("Shift Exception Hour");

with(sBC)
{
SetViewMode(AllView);
ActivateField("Exception Id");
ActivateField("Start Date");
ClearToQuery();
SetSortSpec("Start Date(DESCENDING)");
SetSearchSpec("Exception Id","1-1JJB");
// Row id is the Schdule name
//Better give the Name instead of rowid .
ExecuteQuery(ForwardBackward);
var irec=FirstRecord();


while(irec)
{
var Holiday =GetFieldValue("Start Date");
var Holiday1=new Date(Holiday);

if(Holiday1.getDay()!=0 && Holiday1.getDay()!=6 )
{
if(Holiday1.getTime() >= start.getTime() && Holiday1.getTime() <= end.getTime())
{
abc=abc+1;
}

}
if (Holiday1.getTime() < start.getTime())
{
break;
}
else
{
irec=NextRecord();
}

}


}

sBC=null;
sBO=null;


var diffDays= Math.floor((end-start)/1000/60/60/24);
var weeksBetween=Math.floor(diffDays/7);
var startDay=start.getDay();
var endDay =end.getDay();
if(start.getDay()==end.getDay())
{
var adjust=0;

}


else
{
if (start.getDay()==0 && end.getDay()==6)
{
var adjust=5;

}

else
{
if(start.getDay()==6 && end.getDay()==0)
{
var adjust=0;
}
else
{
if(end.getDay()==6 || end.getDay==0)
{
var adjust=5-start.getDay();
}
else
{
if (start.getDay()==0 || start.getDay==6)
{
var adjust=end.getDay();
}
else
{
if(end.getDay()>start.getDay())
{
var adjust=end.getDay()-start.getDay();
}
else
{
var adjust =5+end.getDay()-start.getDay();
}
}


}

}

}


}


var workingDaysCalc=(weeksBetween*5)+adjust-abc;



Outputs.SetProperty("workingDaysCalc",workingDaysCalc);

// TheApplication().RaiseErrorText("Start Date :"+start +"End Date :"+end +"ABC:"+abc+"Working "+workingDaysCalc);
return(CancelOperation);
}

return (ContinueOperation);
}


Wednesday, June 22, 2011

Siebel Configuration Best Practices

  1. Adding System Columns as BusComp Field Objects Definitions

System columns are exposed as BusComp fields. These columns can be exposed as controls or list columns on applets without explicitly defining them in the BusComp definition.


System Field

System Column Name

Description

Id

ROW_ID

Primary key for the table

Created

CREATED

Creation date and time of the row

Created By

CREATED_BY

User logon ID of the person who created the row

Updated

LAST_UPD

Date of last update of the row

Updated By

LAST_UPD_BY

User logon ID of the person who last updated the row

Consequence

The fields Id, Updated, Updated By, Created, and Created By are available system fields that can be exposed and presented in the user interface or used in script without explicitly defining them as BusComp fields.

This introduces a data integrity issue, if such a field is exposed in the UI and the user enters data into it, the data will not be saved to the database. The application will ignore the user’s data and use the system data. When a user enters a value in such a field and later accesses the same record, they will not see the value entered.

Recommendation

Do not create BusComp fields mapped to system columns, as they are available for use in configuration and scripting without being explicitly defined, and doing so may introduce the type of issues indicated above in the consequence section.

Where such fields have been created, remove them from the BusComp definition and remap any existing references, such as list columns, controls, joins, and so forth to the supplied system column. Do not forget to verify that any script that references the custom fields is also updated.

  1. Join Specifications on S_PARTY Extension Tables

Join specification to Party extension table has been created with the destination column property set to ROW_ID.

Consequence

Only the PAR_ROW_ID column should be used as the destination column in join specifications to S_PARTY extension tables. This is because the PAR_ROW_ID column contains the proper foreign key relationship to S_PARTY.

Although ROW_ID and PAR_ROW_ID is equivalent in most cases for party extension tables, configuring a join in this manner is not recommended, and this unexpected behavior may not be the case in future releases and this accidental success may not be the case in future releases if the table structures change.

Recommendation

When creating joins to S_PARTY extension tables such as S_ORG_EXT, S_CONTACT, S_POSTN or S_USER make sure that the join specification has a destination column of PAR_ROW_ID. Perform a search in the Siebel Tools and look for the Base table property to identify the S_PARTY related tables. The screenshot below shows some of the S_PARTY tables in the customer repository.

3. Non-Indexed Search / Sort Specifications

Several search and sort specifications were identified as keying off non-indexed columns. When specifying search and sort specifications it is important to use fields mapped to indexed columns, whenever possible.

Sorting or searching on non-indexed fields can have detrimental effects on database performance, especially on large tables, as it will produce table scans and temporary tables in the SQL execution plan.

Keep in mind that pre-defined queries where the filter or sort is based on a non-indexed column will also result in a performance impact.

How to update the Query fired in UI [this.GetSearchExpr();]

Req: I have to catch the Query before firing in UI .

Solution : this.GetSearchExpr(); In BC Server Script PreQuery

Code


function BusComp_PreQuery ()
{
/
try
{

var sSearchExpr;
var sActiveViewName;
sSearchExpr = this.GetSearchExpr();
//If u want to update query for a particular view
sActiveViewName = TheApplication().ActiveViewName();

//add the validation
if(TheApplication().GetProfileAttr("EEEE")>="Value"&& (sActiveViewName == "DSDS" || sActiveViewName == "XCDD" || sActiveViewName == "ZXXX"))
{
//SearchBuild Method is a custom method for creating Custom Query
var SearchString = SearchBuild();

if(sSearchExpr!="" && SearchString !="")
sSearchExpr += " AND (" + SearchString + ")";
else if (sSearchExpr!="" && SearchString =="")
sSearchExpr = sSearchExpr;
else
sSearchExpr = SearchString;

}

// If u need this Query in somewhere else put it in Profile attribute

this.SetSearchExpr(sSearchExpr);
this.ExecuteQuery(ForwardOnly);
}
catch (e)
{
var dbg = e.errText;
TheApplication().RaiseErrorText(e.errText);
}

return (ContinueOperation);
}


Note: GetSearchExpr returns the current search expression for the business component.

Returns
A string containing the current search expression. An example of a returned search expression string is "Revenue > 10000 AND Probability > .5".

Usage
GetSearchSpec retrieves the business component state, not the values. The business component state does not change until the query is executed. Note that it may never change to the original value if the user input is invalid.

When using GetSearchExpr in a browser script and the Applet_PreInvokeMethod, GetSearchExpr returns a null value even if a query filter has been added.

Used With
Browser Script, COM Data Control, COM Data Server, Java Data Bean, Mobile Web Client Automation Server, Server Script

Tuesday, June 21, 2011

10 Ways To Access Blocked WebSites

Copy Paste from Another Site .But it is useful :-)

Websites like facebook, twitter and other social networking sites are generally blocked in schools, colleges and offices. There exist some tricks by which you can bypass the restrictions and access blocked sites, the most obvious is the use of proxies or Anonymizer websites. But using proxies doesn’t always works as they gets blocked by firewall as well. Here I am listing some other methods to access blocked contents.

1. Use IP instead of URL
Each website has its equivalent ip address. This method works best when blocked sites are stored as a list of URLs. You can use ip address to access blocked contents . For example to access facebook you can use ip address 69.63.189.11 in your address bar. You can use ip-address.com to find the ip address of other websites.

2. Use Google Cache
All major search engines like Google yahoo and Bing stores cached pages of websites themselves. You can access blocked websites by viewing their cached copy on search engines.



3. Translations services
Translation services like Google Translate, translate a website from one language to another and display the translated results on their own page. You can access the blocked website by re-translating blocked url using such online translation services.

4. Retrieve web pages via Email
Web2Mail is a free service that sends any websites into your inbox. All you need to do is send an email to www@web2mail.com with the URL as subject title.

5. WayBack Machine
Wayback machine periodically keeps a copy of almost all websites on the internet from the date they have started. You can access your blocked site by fetching its latest copy from archives.

6. Screen-Resolution.com
Screen-Resolution.com allows you to view any website in a different resolution. This could be an interesting tool to access blocked websites.

7. Google Mobile Search
Google Mobile Search displays a web page as if you are viewing it on a mobile phone. You can use it to access blocked websites but javascript and css will be disabled.

8. Redirect with Short URL service
Short URL service are used for converting a long URL in a shorter one. You can convert your blocked url into a shorter one and use it to access blocked websites. This trick dont always works. The two popular url shortening service are bit.ly and adf.ly

9. USB Browsing
You can use this method if you have access to usb port, you can load usb with your own portable Firefox, with the portable Tor plugin or you can directly use tor-firefox.

10. Proxy Websites
This is the generally known method to access blocked websites. There are thousands of online proxies you can use to surf anonymously or to access blocked websites. Here is 90+ Proxy Websites To Access Blocked Websites.

Monday, June 20, 2011

3 buttons with same method as “Show Popup” for showing popup applets

This Req/Solution i got it from Karthik . Thanks Karthik

Issue: We have 3 buttons with same method as “Show Popup” for showing popup applets, but the buttons need to enable/disable based on the conditions. It would be difficult to enable/disable button as the all buttons are sharing the same method name.

Solution:

Inputs taken from another Siebel blog.

Give different method names for 3 buttons.

Alternative way to invoke the show popup using browser script

Write the below Browser script to invoke the “Show popup” method, when the button is clicked.

function Applet_PreInvokeMethod (name, inputPropSet)

{

// code to enable the buttons as show popup

try

{

if(name == "XXX" || name == "YYY" || name == "ZZZ")

{

inputPropSet.SetProperty("SWEMethod","ShowPopup");

this.InvokeMethod("ShowPopup",inputPropSet);

return("CancelOperation");

}

}

}

Write the server script in Pre Can Invoke method as usual to disable/enable button based on conditions.

function WebApplet_PreCanInvokeMethod (MethodName, &CanInvoke)

{

try

{

var pstntype = TheApplication().GetProfileAttr("Primary Position Type");

if((MethodName == "XXX" || MethodName == "YYY") && (pstntype == "CCC" || pstntype == "DDD"))

{

CanInvoke = "FALSE";

return(CancelOperation);

}

else

{

CanInvoke = "TRUE";

return(CancelOperation);

}

}

catch(e)

{

TheApplication().RaiseErrorText(e.tostring());

}

finally

{

pstntype = null;

}s

return (ContinueOperation);

}

Thursday, June 16, 2011

Some more Business Component Methods

ActivateMultipleFields
Property set containing a collection of properties representing the fields that are to be activated

SetMultipleFieldValues assigns a new value to the fields specified in the property set for the current row of the business component.

GetMultipleFieldValues returns values for the fields specified in the property set.

Code
var ContactBO = TheApplication().GetBusObject("Contact");
var ContactBC = ContactBO.GetBusComp("Contact");
with (ContactBC)
{
SetViewMode(AllView);
var fieldsPS = TheApplication().NewPropertySet();
var valuesPS = TheApplication().NewPropertySet();
fieldsPS. SetProperty("Last Name", "");
fieldsPS.SetProperty("First Name", "");
ActivateMultipleFields(fieldsPS);
ClearToQuery();
ExecuteQuery();
if (FirstRecord())
{
GetMultipleFieldValues(fieldsPS, valuesPS);
var slName = valuesPS.GetProperty("Last Name");
var sfName = valuesPS.GetProperty("First Name");
}
}




GetFormattedFieldValue Method

A string containing the value of the requested field, in the same format as displayed in the user interface, or an empty string ("") if the field is inactive or empty.


Usage
GetFormattedFieldValue is useful for code that is used in multiple countries with different formats for currency, date, and number. This method can be used only on fields that have been activated using ActivateField.

Some special behavior is associated with particular data types.