Menu

Customization

Domen Dolar

Customization

You can customize everything you like in RASD environment.


Customizing generated programs in RASD (schema your_app_schema)

Here you can customize all default settings in generated programs and include your own security politics.

  • RASD_CLIENT (your dev. schema) is PLSQL API to integrate your environment with generated programs
  • Design (RASD environment ) to change design of your own applications you can do it through environment
  • Code (RASD environment ) to overwrite generated code you have triggers (ON triggers)

RASD_CLIENT

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

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

Changing design data

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


Code

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)
 });

 

 


Customizing RASD development tool environment (schema RASD)

Here you can customize all default settings for development tool and include your own security politics.

  • RASDI_CLIENT (schema RASD) is PLSQL API to connect your own functionality with RASD
  • RASD_FILES (schema RASD) is TABLE where you can change rasd.css file with your own design - upload and see files in tool on link !RASDC_FILES.page

RASDI_CLIENT

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.


RASD_FILES

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


Integrated projects - concepts [RASD_LIBS]

PLSQL

  • AS_ZIP in PLSQL from Anton Scheffer (http://technology.amis.nl/blog)

Design

  • JQuery UI
  • DataTables
  • CKEditor
  • CSSMenuBuilder

Go back to [Welcome]


Related

Wiki: Installation
Wiki: RASD_LIBS
Wiki: Welcome

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.