Open URL in new tab instead of new window in FPM application - abap

I'm building an application in FPM and I'm trying to open an external URL in a new tab. I'm using the following code:
data: lr_fpm type ref to if_fpm,
lr_nav type ref to if_fpm_navigate_to,
ls_url type fpm_s_launch_url,
ls_nav_additional_parameters type apb_lpd_s_portal_parameters.
if lr_fpm is not bound.
lr_fpm = cl_fpm_factory=>get_instance( ).
endif.
lr_nav = lr_fpm->get_navigate_to( ).
ls_url-url = '<A URL leading to a different application within my organisation>'.
ls_nav_additional_parameters-navigation_mode = 'EXTERNAL'.
call method lr_nav->launch_url
exporting
is_additional_parameters = ls_nav_additional_parameters
is_url_fields = ls_url_oi.
Unfortunately, in all browsers this opens a new window instead of a new tab. Is there some parameter that changes this behavior to opening the external URL in a new tab?
Thank you in advance,
Joshua

you can add the attribute target="_blank" to the end of your url.
Maybe if you add this to the "IS_ADDITIONAL_PARAMETERS" it will work as well.
Unfortunately, I currently do not have access to my SAP system to test this.
But it is worth a try

Related

Geb: Open new tab for each test

I am trying to open new tab for each iteration of the test for each set of data in the where block.
I am trying like:
setup:
Keys.chord(Keys.CONTROL, "t")
but it does not work.
How to do it?
I solved this problem by this [WRITING AT THE BEGGINING OF THE TEST]:
def cachedDriver = CachingDriverFactory.clearCacheAndQuitDriver()
Now a new window is opened and previous window is closed for every set of data in the where block and it is very helpful for executing thousands of tests.
To open a new window using WebDriver and therefore Geb as well you need to call the window.open() javascript method in the browser you're driving. Using Geb it can be done in the following way:
js.exec "window.open('about:blank', '', '')"

Not able to get file object Using YUI IN Internext Explorer

I am trying to upload a file using YUI.
Below is my code that works fine in Firefox and Chrome.But not working in IE 8.
this.portlet_view_object.delegate('change', function(e) {
......
var fileField = Y.one('#newcase_file_'+context.imageCount);
var file = fileField._node.files[0];
if(!context.maxFileSize.call(context,file)){
return;
}
....
Here, the maxFileSize, is the method to which i pass the file object and perform operation related to fiel(e.g. fileSize, fileName).
In firefox and chrome, i am getting the file object by fileField._node.files[0];
But the same thing is not working in IE 8,and getting below error.
_node.files.0' is null or not an object
Any suggestions are welcomed.
Thanks.
This issue isn't related to YUI, just to IE.
.files holds multiple selected files, but IE8 does not support this methos and can only select one file. Therefore this property isn't recognized.
You can use this workaround:
if ('files' in fileField._node)
var file = fileField._node.files[0];
else
var file = fileField._node.value;
Or skip the whole .files completely if you want to, although I personally wouldn't recommend it.

IntelliJ and xDebug - xdebug.file_link_format

I've searched much time about IntelliJ IDEA 12 and the xdebug.file_link_format configuration value.
I found nothing which works...
Using protocols like "idea", "intellij", "txmt", or other protocols doesn't work.
I found nothing about a plugin which register the IntelliJ protocol...
Is it possible to use the xdebug file links with IntelliJ IDEA or PhpStorm?
Yes and No.
No -- there is no proper built-in support for this. Watch this ticket for details: http://youtrack.jetbrains.com/issue/IDEA-65879
Yes -- you may find some workaround, at very least the aforementioned ticket has recipes for Mac OS (using AppleScript) or via Remote Call etc.
Update: as of PhpStorm 8 you may use:
xdebug.file_link_format = "phpstorm://open?file=%f&line=%l"
Not out of the box, but it is possible to get the links to work. I have this working with Windows 7, Firefox and PhpStorm 10 - in this example, I'm using the protocol phpstorm://, but this will work regardless of the name.
create a custom protocol handler: Any executable will do, here I have modified a WScript from https://pla.nette.org/en/how-open-files-in-ide-from-debugger . Save as run-editor.js :
// note: edit the path, with backslashes escaped
var editor = '"c:\\Program Files (x86)\\JetBrains\\PhpStorm 143.434\\bin\\PhpStorm.exe" nosplash --line %line% "%file%"';
var url = WScript.Arguments(0);
var match = /^phpstorm:\/\/open\/\?file=(.+)&line=(\d+)$/.exec(url);
if (match) {
var file = decodeURIComponent(match[1]).replace(/\+/g, ' ');
var command = editor.replace(/%line%/g, match[2]).replace(/%file%/g, file);
var shell = new ActiveXObject("WScript.Shell");
shell.Exec(command.replace(/\\/g, '\\\\'));
}
create the protocol in registry: create the following as editor.reg and import to Registry. Note that you again need to double-escape the path to the above file, and set it to wherever yours is saved:
REGEDIT4
[HKEY_CLASSES_ROOT\phpstorm]
#="URL:phpstorm Protocol"
"URL Protocol"=""
[HKEY_CLASSES_ROOT\phpstorm\shell\open\command]
#="wscript \"C:\\path\\to\\run-editor.js\" \"%1\""
enable the protocol in Firefox:
in about:config, create a "logical value" named
network.protocol-handler.expose.phpstorm and set it to false
open one such link in Firefox, e.g. phpstorm://open?file=somefile.html&line=123 - it should open in PhpStorm.
Per the comment from #gapple, this will make Xdebug link to the file/link in PhpStorm:
xdebug.file_link_format = "phpstorm://open?file=%f&line=%l"
I tested this in PhpStorm 10 on Mac and it works great.
You need to ad to the php.ini file in the [xdebug] section the following line:
xdebug.file_link_format = "phpstorm://open?file=%f&line=%l"
Then restart your web server (Apache for me on Mac)
The REST API is probably the best option now:
http://localhost:63342/api/file%f:%l
Wrapping in a javascript protocol and AJAX request allows the permission approval to be saved so you don't have to approve every time you click:
javascript: var r = new XMLHttpRequest; r.open('get', 'http://localhost:63342/api/file%f:%l');r.send()
API specs:
https://www.develar.org/idea-rest-api/

Change ItemFileWriteStore URL, get data and refresh Grid

I have an EnhancedGrid with ItemFileWriteStore. After calling startup() on the grid, I hide the same by using following code:
dojo.style(grid.domNode, 'display', 'none');
And then on the click of a button, I change the URL of store for this grid and try to refresh the store and show the grid by using following code:
store.save();
store.close();
store.url='AjaxPopulate.json?os_type='+dijit.byId('osType').get('value');
store.save();
store.fetch({query:{id: '*'}});
dojo.style(grid.domNode, 'display', '');
grid.store.close();
grid.setStore(store);
The above code works fine with Firefox and Chrome but not on IE8 and IE9. I simply get "Object Error" message in IE Developer tools console.
Pls. help me identify any issues with the above code.
Howto reload store
If using the 'data' property to populate store initially (via constructor), you should set clearOnClose: true as well.
Use of .save() is only for a ItemFileWriteStore that has some settings changed (isDirty) and needs to propagate these to server. That said, you dont need .save on a closed store (allthough url has changed, no fetch has been run and definately no items has changed).
Try the following code, you'd only need the grid component to do it as calling .render() on the grid will get it to reload it's data.
// save if dirty, otherwise we cannot close a store unless its reset
grid.store.save();
// close store, this should clear data
grid.store.close();
// set new URL
grid.store.url = '??';
// rerun fetch XHR
// reload grid data with new items (no need to setStore as its same object reused)
grid.store.fetch({query:{id: '*'}, onComplete: function() {grid.render}});
Problem was that I had invalid JSON coming from server with one extra comma.
IE is very specific on these things.
Thanks everyone who viewed and tried to reply.

How to link a PDF Document to a Record using Visual Studio LightSwitch 2011?

I'm Stuck the following problem: How can I link a PDF Document to a Record in a Data Grid using Visual Studio LightSwitch 2011 and Visual Basic?
Any help would be awesome, thanks!
Here's the simplest way to do this: add a custom command to the Command Bar of the Data Grid Row for your Data Grid. In this example I'm calling the command Open PDF File. Then add this code to Execute code for the command:
partial void OpenPDFFile_Execute()
{
const string LOCAL_SERVER_PDF_DIR = #"\\MyServer\PDFs\";
const string WEB_SERVER_PDF_DIR = "http://myweb.server/PDFs/";
const string PDF_SUFFIX = ".pdf"; //assumes you do not include the extension in the db field value
if (AutomationFactory.IsAvailable)
{
//if the AutomationFactory is available, this is a desktop deployment
//use the shell to open a PDF file from the local network
dynamic shell = AutomationFactory.CreateObject("Shell.Application");
string filePath = LOCAL_SERVER_PDF_DIR + this.PDFFiles.SelectedItem.FileName + PDF_SUFFIX;
shell.ShellExecute(filePath);
}
else
{
//otherwise this must be a web deployment
//in order to make this work you must add a reference to System.Windows.Browser
//to the Client project of your LS solution
var uri = new Uri(WEB_SERVER_PDF_DIR + this.PDFFiles.SelectedItem.FileName + PDF_SUFFIX);
HtmlPage.Window.Navigate(uri, "_blank");
}
}
You will need to add the following imports to the top of your user code file to make this code compile:
using System.Runtime.InteropServices.Automation;
using System.Windows.Browser;
I should mention that you need a directory to server the PDFs up from. This example is flexible with respect to deployment, because it handles both desktop and web configurations. Since you'll need to set up the PDF directoy, you may want to just handle one configuration option to simply things (or you could expose the same PDF directory over http and as a local network share).
You may also want to present this as a true link instead of a button. In order to do this, you'll need a custom SilverLight control. In any case, I would recommend implementing the PDF link using a button first. You can then move this same code to a link event handler as a separate project if that is worth spending time on.