You can customize everything you like in RASD environment.
Here you can customize all default settings in generated programs and include your own security politics.
c_date_transform - setting for conversion beween PL/SQL date formats to Javascript date formats
c_date_transform constant dttab := dttab( -- PL/SQL type , jQuery type : format is case sensitive dt('yyyy-mm-dd','yy-mm-dd') , dt('yyyy/mm/dd','yy/mm/dd') , dt('dd.mm.yyyy','dd.mm.yy') , dt('dd/mm/yyyy', 'dd/mm/yy') , dt('dd-mm-yyyy', 'dd-mm-yy') , dt('mm/dd/yyyy', 'mm/dd/yy') , -- default type NULL must always be the last element dt('NULL','mm/dd/yy') );
c_time_transform - setting for conversion beween PL/SQL time formats to Javascript time formats
c_time_transform constant dtttab := dtttab( -- PL/SQL type , jQuery type : ime format is case sensitive dtt('hh24:mi','hh:mm') , dtt('hh24:mi:ss','hh:mm:ss'), -- default type NULL must always be the last element dtt('NULL','hh:mm') );
C_DATE_FORMAT - setting for default date format
C_DATE_FORMAT constant varchar2(10) := 'mm/dd/yyyy';
Sample for Slovenia
C_DATE_FORMAT constant varchar2(10) := 'dd.mm.rrrr';
C_TIMESTAMP_FORMAT - setting for default timestamp format
C_TIMESTAMP_FORMAT constant varchar2(30) := 'mm/dd/yyyy hh24:mi:ss.ff';
Sample for Slovenia
C_TIMESTAMP_FORMAT constant varchar2(30) := 'dd.mm.rrrr hh24:mi:ss.ff';
C_NUMBER_DECIMAL - setting for default decimal sign in number (D)
C_NUMBER_DECIMAL constant varchar2(1) := '.';
Sample for Slovenia
C_NUMBER_DECIMAL constant varchar2(1) := ',';
C_NUMBER_THOUSAND - setting for default thousand sign in number (G)
C_NUMBER_THOUSAND constant varchar2(1) := ',';
Sample for Slovenia
C_NUMBER_THOUSAND constant varchar2(1) := '.';
C_NLS_DATE_LANGUAGE - setting for default defaut date language
C_NLS_DATE_LANGUAGE constant varchar2(20) := 'AMERICAN';
Sample for Slovenia
C_NLS_DATE_LANGUAGE constant varchar2(20) := 'SLOVENIAN';
C_NLS_LANGUAGE - setting for default language
C_NLS_LANGUAGE constant varchar2(20) := 'AMERICAN';
Sample for Slovenia
C_NLS_LANGUAGE constant varchar2(20) := 'SLOVENIAN';
C_DOC_ACCESS_PATH - setting for default doc path
c_DOC_ACCESS_PATH varchar2(30) := '/rasdlib/docs';
getHtmlMenuList - function for generating defaut program menu
function getHtmlMenuList(p_formname varchar2) return varchar2;
Sample
function getHtmlMenuList(p_formname varchar2) return varchar2 is v_menu varchar2(5000); begin v_menu := ' <div id="wrapper"> <div class="overlay"></div> <!-- Sidebar --> <nav class="navbar navbar-inverse navbar-fixed-top" id="sidebar-wrapper" role="navigation"> <ul class="nav sidebar-nav"> <li class="sidebar-brand"> <a href="#"> Brand </a> </li> <li> <a href="#">Home</a> </li> <li> <a href="#">About</a> </li> <li> <a href="#">Events</a> </li> <li> <a href="#">Team</a> </li> <li class="dropdown"> <a href="#" class="dropdown-toggle" data-toggle="dropdown">Works <span class="caret"></span></a> <ul class="dropdown-menu" role="menu"> <li class="dropdown-header">Dropdown heading</li> <li><a href="#">Action</a></li> <li><a href="#">Another action</a></li> <li><a href="#">Something else here</a></li> <li><a href="#">Separated link</a></li> <li><a href="#">One more separated link</a></li> </ul> </li> <li> <a href="#">Services</a> </li> <li> <a href="#">Contact</a> </li> <li> <a href="https://twitter.com/maridlcrmn">Follow me</a> </li> </ul> </nav> <!-- /#sidebar-wrapper --> <!-- Page Content --> <div id="page-content-wrapper"> <button type="button" class="hamburger is-closed" data-toggle="offcanvas"> <span class="hamb-top"></span> <span class="hamb-middle"></span> <span class="hamb-bottom"></span> </button> </div> <!-- /#page-content-wrapper --> </div> <!-- /#wrapper -->'; return v_menu; end;
secCheckPermission - function for checking permissions on programs - returns exception if permissions are false
procedure secCheckPermission(p_form varchar2, p_action varchar2);
procedure secCheckPermission(p_form varchar2, p_action varchar2) is begin vcv := getGuid; v_app := getApp(p_form); if p_action is null then v_action := 'SELECT'; elsif p_action = 'Shrani' then v_action := 'MODIFY'; else v_action := 'SELECT'; end if; if checkPrivileges(vcv , p_form , v_app , v_action , loggedUser(vcv)) <> 1 then raise_application_error('-20000', 'No privileges ('||p_form||','||v_app||','||v_action||')'); end if; end;
secCheckCredentials - function for checking user credentials (user is logged) - returns exception if permissions are false
procedure secCheckCredentials(p_username varchar2, p_password varchar2, p_other varchar2 default null); procedure secCheckCredentials( name_array in owa.vc_arr, value_array in owa.vc_arr);
Sample:
procedure secCheckCredentials(p_username varchar2, p_password varchar2, p_other varchar2 default null) is begin if your_loggedUser(p_other) is null then raise_application_error('-20000', 'Loggin error!'); end if; end;
procedure secCheckCredentials( name_array in owa.vc_arr, value_array in owa.vc_arr ) is begin vcv := getGuid; if vcv is null or upper(vcv) = 'NO GUID' then for i__ in 1 .. nvl(name_array.count, 0) loop if upper(name_array(i__)) = upper('SECCLIENTUSER') then vu := value_array(i__); elsif upper(name_array(i__)) = upper('SECCLIENTPWD') then vp := value_array(i__); elsif upper(name_array(i__)) = upper('SECCLIENTOTHER') then vo:= value_array(i__); elsif upper(name_array(i__)) = upper('GUID') then guid:= value_array(i__); elsif upper(name_array(i__)) = upper('SECCLIENTURL') then vl:= value_array(i__); elsif upper(name_array(i__)) = upper('R') then rl:= value_array(i__); end if; if upper(name_array(i__)) not in ( upper('SECCLIENTURL') ) then vlpar := vlpar||'&'||name_array(i__)||'='||value_array(i__); end if; end loop; if upper(rl) = 'DIR' then htp.p('GUID not exists. Need login!'); else vl1:= substr(owa_util.get_cgi_env('PATH_INFO'),2)||'?r=dir'||vlpar; begin owa_util.mime_header('text/html', FALSE); OWA_COOKIE.SEND('guid', nvl(guid,'no guid') , null,null); if vl is not null then OWA_UTIL.REDIRECT_URL(vl||'?r=url'||vlpar); owa_util.http_header_close; else if instr(vl1,'r=dir&r=dir') > 0 then raise error; else OWA_UTIL.REDIRECT_URL(vl1); owa_util.http_header_close; end if; end if; exception when others then null; end ; end if; end if; exception when others then OWA_UTIL.REDIRECT_URL('your redirectino to login page'); owa_util.http_header_close; end;
callLog - function for setting global logging
procedure callLog(p_form varchar2, p_content varchar2, p_date timestamp, p_token varchar2 );
in each program next code is executed:
EXECUTE IMMEDIATE 'ALTER SESSION SET NLS_NUMERIC_CHARACTERS= '''||C_NUMBER_DECIMAL||''||C_NUMBER_THOUSAND||''' '; EXECUTE IMMEDIATE 'ALTER SESSION SET NLS_DATE_LANGUAGE = '''||C_NLS_DATE_LANGUAGE||''' '; EXECUTE IMMEDIATE 'ALTER SESSION SET NLS_LANGUAGE = '''||C_NLS_LANGUAGE||''' ';
Design of generated programs is controled through css, js and html files. All these files are stored in table DOCUMENTS. The data can be updated directly on table or with using RASD development tool. On link !RASDC_FILES.page you can upload and see you own files. Go to the
rasd/rasd.css - setting for default visualisation settings
rasd/rasd.js - setting for common Javascript libraries
rasd/rasd_datatable.html - settings for default DataTable visualisation
<script> const _rasd_dataTableProperties = { "bJQueryUI": true, "aaSorting": [], "oLanguage": { "sSearch": "Search on table", "sZeroRecords": "No data available in table" }, "bPaginate": false, "bLengthChange": true, "bFilter": true, "bSort": true, "bInfo": false, "bAutoWidth": false //have to be false because otherwise radio buttons on first line are not checked - known bug in 1.9.4 }; $(document).ready(function() { oTable = $(".rasdTableN").dataTable( _rasd_dataTableProperties ); } ); </script> <div id="rasdHeaderInfo" class="rasdHeaderInfo" ></div> <div id="rasdSpinner" class="rasdSpinner" style="display:none;"></div>
Sample for Slovenia
<script> const _rasd_dataTableProperties = { "responsive": false, "bJQueryUI": true, "oLanguage": {"sEmptyTable": "Ni podatkov", "sInfo": "Prikazani zapisi: _START_ - _END_ (od _TOTAL_)", "sInfoEmpty": "", "sInfoFiltered": "(filtrirano od _MAX_ zapisov)", "sInfoPostFix": "", "sLengthMenu": "Prikaži _MENU_ zapisov", "sLoadingRecords": "Nalagam...", "sProcessing": "Obdelujem...", "sSearch": "Išči:", "sZeroRecords": "Nobeden zapis ne ustreza", "oPaginate": {"sFirst": "Na začetek", "sLast": "Na konec", "sNext": "Naprej", "sPrevious": "Nazaj"}}, "bPaginate": false, "pageLength": 10, "bLengthChange": true, "bFilter": true, "bSort": true, "aaSorting": [], "bInfo": false, "bAutoWidth": false //have to be false because otherwise radio buttons on first line are not checked - known bug in 1.9.4 }; $(document).ready(function() { $(".rasdTableN").addClass( "compact" ); oTable = $(".rasdTableN").DataTable( _rasd_dataTableProperties ); } ); </script> <div id="rasdHeaderInfo" class="rasdHeaderInfo" ></div> <div id="rasdSpinner" class="rasdSpinner" style="display:none;"></div>
rasd/rasd_datepicker.html - settings for default Date picker object visualisation
<script> $(function() { $("#:NAME" ).datetimepicker({ dateFormat: ':DFORMAT', timeFormat: ':TFORMAT' :PROPERTIES ,showOn: "button", buttonImage: "DOCUMENTS_API2.download_direct?file=calendar.png" }); }); </script>
Sample for Slovenia
<script> $(function() { $("#:NAME" ).datetimepicker({ dateFormat: ':DFORMAT', timeFormat: ':TFORMAT' :PROPERTIES ,showOn: "button", buttonImage: "DOCUMENTS_API2.download_direct?file=calendar.gif" , closeText: "Zapri", currentText: "Danes", nextText: ">>", prevText: "<<", monthNames: ["Januar", "Februar", "Marec", "April", "Maj", "Junij", "Julij", "Avgust", "September", "Oktober", "November", "December"], monthNamesShort: ["Jan", "Feb", "Mar", "Apr", "Maj", "Jun", "Jul", "Avg", "Sep", "Okt", "Nov", "Dec"], dayNames: ["Nedelja","Ponedeljek", "Torek", "Sreda", "Četrtek", "Petek", "Sobota"], dayNamesShort: ["Ned","Pon","Tor", "Sre", "Čet", "Pet", "Sob"], dayNamesMin: ["Ne","Po", "To", "Sr", "Če", "Pe", "So"] , firstDay: 1 }); }); </script>
rasd/rasd_footer.html - settings for default footer visualisation
</BR> </BR> <div class="version"> :VERSION :PROGRAM (:USER) </div>
rasd/rasd_jslib.html - settings for included libraries into the programs
<!--HEAD script. --> <meta http-equiv="content-type" content="text/html; charset=UTF-8" /> <meta http-equiv="pragma" content="no-cache" /> <meta http-equiv="expires" content="-1" /> <meta name="DESCRIPTION" content="description of the site" /> <meta name="KEYWORDS" content="keywords of the site" /> <title>:VALUE</title> <!--ALL LIBS are included by CDN--> <script src="https://code.jquery.com/jquery-3.3.1.js" integrity="sha256-2Kok7MbOyxpgUVvAk/HJ2jigOSYS2auK4Pfzbm7uH60=" crossorigin="anonymous"></script> <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js" integrity="sha256-T0Vest3yCU7pafRw9r+settMBX6JkKN06dqBnpQ8d30=" crossorigin="anonymous"></script> <link rel="stylesheet" href="https://code.jquery.com/ui/1.12.1/themes/redmond/jquery-ui.css" /> <script type="text/javascript" src="https://cdn.datatables.net/1.10.19/js/jquery.dataTables.min.js"></script> <link rel="stylesheet" href="https://cdn.datatables.net/1.10.19/css/jquery.dataTables.min.css" /> <script type="text/javascript" src="https://cdn.datatables.net/responsive/2.2.3/js/dataTables.responsive.min.js"></script> <link rel="stylesheet" href="https://cdn.datatables.net/responsive/2.2.3/css/responsive.dataTables.min.css" /> <link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/buttons/1.5.6/css/buttons.dataTables.min.css" /> <script type="text/javascript" language="javascript" src="https://cdn.datatables.net/buttons/1.5.6/js/dataTables.buttons.min.js"></script> <script type="text/javascript" language="javascript" src="https://cdn.datatables.net/buttons/1.5.6/js/buttons.html5.min.js"></script> <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery-ui-timepicker-addon/1.6.3/jquery-ui-timepicker-addon.js"></script> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jquery-ui-timepicker-addon/1.6.3/jquery-ui-timepicker-addon.css" /> <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.8.1/css/all.css" integrity="sha384-50oBUHEmvpQ+1lW4y57PTFmhCaXp0ML5d60M1M7uH2+nqUivzIebhndOJK28anvf" crossorigin="anonymous"> <!--RASD LIBS --> <link rel="stylesheet" type="text/css" href="documents_api.download_direct?file=rasd/rasd.css" /> <script type="text/javascript" src="documents_api.download_direct?file=rasd/rasd.js"></script>
Upload your own pictures- objects
You use program in RASD Tool to upload your own pictures for your project.
http://...:port/ords/.../!DOCUMENTS_API2.page?showfiles=true
All trigges code can be predefined. You put your own code to table RASD.RASD_TRIGGERS_TEMPLATE.
Sample for default code in trigger FORM_JS
$(function() { addSpinner(); // initRowStatus(); // transformVerticalTable("B15_TABLE", 4 ); // setShowHideDiv("BLOCK_NAME_DIV", true); // CheckFieldValue(pid , pname) // CheckFieldMandatory(pid , pname) });
Here you can customize all default settings for development tool and include your own security politics.
c_registerTo - set your organisation description
c_defaultLanguage - set your default language for RASD Tool
c_WalletLocation - set wallet location for accesin souceforge.net
c_WalletPwd - set pwd for wallet
secSuperUsers - returns list of superusers. This users can see all RASD programs
secGetUsername - returns user name od developer
secGetLOB - returns the Line Of Business
secCheckPermission - checks premisions for RASd development program
secCheckCredentials - set the security politics for development enviorment. This procedure is run in login program /!rasdc_security.logon where the login credentials (USERNAME, LOB) are set.
Pictures and other objects are stored in table RASD.RASD_FILES. You can upload pictures with RASD tool:
http://...:port/ords/.../!RASDC_FILES.page
The librarys for RASD programs are stored in procedure RASD.RASDC_LIBRARY.RASD_UI_Libs
PLSQL
Design
Go back to [Welcome]