⚝
One Hat Cyber Team
⚝
Your IP:
216.73.216.19
Server IP:
178.33.27.10
Server:
Linux cpanel.dev-unit.com 3.10.0-1160.108.1.el7.x86_64 #1 SMP Thu Jan 25 16:17:31 UTC 2024 x86_64
Server Software:
Apache/2.4.57 (Unix) OpenSSL/1.0.2k-fips
PHP Version:
8.2.11
Buat File
|
Buat Folder
Eksekusi
Dir :
~
/
usr
/
local
/
softaculous
/
enduser
/
themes
/
default
/
View File Name :
python_theme.php
<?php ////////////////////////////////////////////////////////////// //=========================================================== // python_theme.php //=========================================================== // SOFTACULOUS // Version : 1.1 // Inspired by the DESIRE to be the BEST OF ALL // ---------------------------------------------------------- // Started by: Alons // Date: 10th Jan 2009 // Time: 21:00 hrs // Site: http://www.softaculous.com/ (SOFTACULOUS) // ---------------------------------------------------------- // Please Read the Terms of use at http://www.softaculous.com // ---------------------------------------------------------- //=========================================================== // (c)Softaculous Inc. //=========================================================== ////////////////////////////////////////////////////////////// if(!defined('SOFTACULOUS')){ die('Hacking Attempt'); } function python_theme(){ global $user, $globals, $l, $theme, $softpanel, $iscripts, $catwise, $error, $scripts, $allcatwise; global $software, $soft, $info, $settings, $init_tab, $dbtype, $dbs, $installed, $__settings, $setupcontinue, $installations, $notes, $cron, $datadir, $ajaxdb, $ajaxdbexists, $overwrite_option, $protocols, $nopackage, $www, $ajaxhttpsexists, $ajaxhttps, $new_insid; if(optGET('notify')){ get_softaculous_file('http://www.softaculous.com/notifyversion.php?softid="'.$soft.'"'); echo 1; return true; } if(optGET('ajaxdownload') && !empty($nopackage)){ if(!csrf_validate()){ return false; } // Try to download the package if(method_exists($softpanel, 'updatesoftwares')){ _updatesoftwares($soft, 0, 0, 1); echo 1; return true; } // False call echo 0; return false; } // Give the staus if(optGET('ajaxstatus')){ $_status = soft_progress(optGET('ajaxstatus')); $tmp_status = unserialize($_status[1]); $_status[1] = $tmp_status['current_status']; if(!empty($_status)){ echo implode('|', $_status); return true; } // False call echo 0; return false; } if(!empty($ajaxdb)){ echo $ajaxdbexists; return true; } if(!empty($ajaxhttps)){ echo $ajaxhttpsexists; return true; } // Auto Installation responses if(isset($_GET['autoinstall'])){ // Installed successfully if(!empty($installed)){ echo 'installed'; return true; } // Are there errors if(!empty($error)){ echo serialize($error); return false; } } $outdated_script = is_outdated_script($soft); //First add the installation info if(empty($installed)){ $random_username = true; // This is to see if a script has predefined username and cannot be changed foreach($settings as $ik => $iv){ if($ik == 'hidden') continue; foreach($iv as $ikk => $ivv){ if($ikk == 'admin_username' && preg_match('/disabled=\"disabled\"/is', $ivv['tag'])){ $random_username = false; } } } $info['install'] = '<div id="fadeout_div"> <form accept-charset="'.$globals['charset'].'" name="installsoftware" method="post" action="" onsubmit="return checkform();" id="installsoftware" class="form-horizontal">'; if(ampps() && !is_ampps_premium() && count($user['ins']) >= 3){ $info['install'] .= '<center class="alert alert-warning">'.$l['ampps_notify_premium'].'</center>'; } if(!can_use_soft($soft, $use_msg)){ $info['install'] .= '<center class="alert alert-warning">'.$use_msg.'</center>'; } $info['install'] .= error_handle($error, "100%", 0, 1).'<script language="javascript" type="text/javascript"><!-- // --><![CDATA['; //If domain has SSL installed then select protocol https:// by default on page load. if((empty($globals['default_protocol']) || $globals['default_protocol'] <= 1) && empty($globals['off_checkhttps'])){ $info['install'] .= ' $(document).ready(function(){ $("#install, #install_now").click(function(){ check_https(); }); if($("#install_win").is(":visible")){ check_https(); } shift_check_all("shift_select_ins"); }); function check_https(){ $.ajax({ type: "POST", url: "'.$globals['index'].'act=python&soft='.$soft.'&checkhttps="+encodeURIComponent($("#softdomain").val()), timeout:10000, // Checking for success success: function(data){ if(data == "true"){ $("#softproto").val(3); } } }); }'; } $info['install'] .= ' $("#quick_install_btn, #show_less_form").click(function(){ quick_install(); }); //Handling if user clicked on quick install and come back to custom install. $("#custom_install_btn, #show_full_form").click(function(){ custom_install(); }); '; // This is because we do not want to overwrite the value in case of AJAX calls if(empty($_GET['jsnohf'])){ $info['install'] .= 'var is_quick_install = '.(!empty($globals['quick_install_default']) ? '1' : '0').'; $("#show_install_option").click(function(){ $("#quick_install_dropdown").slideToggle("fast"); });'; } $info['install'] .= ' $(document).ready(function(){ //Get width of install tab to show the dropdown with correct width var installwidth = $("#install").width(); var caretwidth = $("#show_install_option").width(); var total_instab_width = installwidth+caretwidth; $("#quick_install_dropdown").css("width",total_instab_width); if($("#install_win").is(":visible")){ post_install_but(); } }); $("#install, #install_now").click(function(){ post_install_but(); }); function toggle_advoptions(ele){ //alert("#"+ele); if ($("#"+ele).is(":hidden")){ $("#"+ele).slideDown("slow"); $("#"+ele+"_toggle_plus").attr("class", "fas fa-minus-square"); } else{ $("#"+ele).slideUp("slow"); $("#"+ele+"_toggle_plus").attr("class", "fas fa-plus-square"); } } function plus_onmouseover(ele){ $("#"+ele.id+"_plus").attr("src", "'.$theme['images'].'plus_hover.gif"); } function plus_onmouseout(ele){ $("#"+ele.id+"_plus").attr("src", "'.$theme['images'].'plus.gif"); } function display_pass_strength(score, per){ var lang; //disp_per = $("#pass-strength-hidden").val(); if(typeof per == "undefined") per = 0; if(score == "bad") lang = "'.$l['bad'].'"; if(score == "good") lang = "'.$l['good'].'"; if(score == "strong") lang = "'.$l['strong'].'"; if(score == "short") lang = "'.$l['short'].'"; if(score == "strength_indicator") lang = "'.$l['strength_indicator'].'"; $("#pass-strength-result").addClass(score).html( lang+" ("+per+"/100)" ); } function checkform(dosubmit){ // If admin has set the password strength than only we will check for it. '.(!empty($globals['pass_strength']) ? ' //alert($("#pass-strength-hidden").val()); if(parseInt($("#pass-strength-hidden").val()) < '.$globals['pass_strength'].'){ alert("'.$l['err_pass_strength'].'"+'.$globals['pass_strength'].'); return false; }' : '').' try{ if(!formcheck()){ return false; } }catch(e){ //Do nothing } $_("softsubmitbut").disabled = true; if(!get_package()){ return false; } if(useprog){ // Send a request to check the status progressbar.start(); // Return false so that the form is not submitted return false; // This is OLD School ! }else{ if(dosubmit == 1){ $_("installsoftware").submit(); } show_msg("'.$l['installing'].'"); } return true; }; var progressbar = { timer: 0, total_width: 0, status_key: "", synctimer: 0, fadeout_div: "#fadeout_div", win_div: "#install_win", progress_div: "#progress_bar", formid: "#installsoftware", frequency: 8000, current: function(){ try{ var tmp_cur = Math.round(parseInt($_("progress_color").width)/parseInt($_("table_progress").width)*100); if(tmp_cur > 100){ tmp_cur = 99; } return tmp_cur; }catch(e){ return -1; } }, reset: function(){ try{ clearTimeout(this.timer); $_("progress_color").width = 1; }catch(e){ }}, move: function(dest, speed, todo){ try{ var cur = this.current(); if(cur < 0){ clearTimeout(this.timer); return false; } var cent = cur + 1; var new_width = cent/100*this.total_width; if(new_width < 1){ new_width = 1; } //alert(new_width+" "+dest+" "+cent); $_("progress_color").width = new_width; $_("progress_percent").innerHTML = "("+cent+" %)"; if(cent < dest){ this.timer = setTimeout("progressbar.move("+dest+", "+speed+")", speed); }else{ eval(todo); } }catch(e){ }}, text: function(txt){ try{ $_("progress_txt").innerHTML = txt; }catch(e){ }}, sync: function(){ if(progressbar.status_key.length < 2){ return false; } $.ajax({ url: window.location+"&ajaxstatus="+progressbar.status_key+"&random="+Math.random(), type: "GET", success: function(data){ if(data == 0) return false; var tmp = data.split("|"); var cur = progressbar.current(); tmp[2] = (3000/(tmp[0]-cur)); //alert(tmp); if(tmp[0] > cur){ if(parseInt(tmp[2]) == 0){ tmp[2] = 800; } progressbar.move(tmp[0], tmp[2]); } progressbar.text(tmp[1]); progressbar.synctimer = setTimeout("progressbar.sync()", progressbar.frequency); } }); }, sync_abort: function(){ clearTimeout(this.synctimer); }, start: function(){ try{ this.post(); this.reset(); this.total_width = parseInt($_("table_progress").width); this.move(95, 800); this.status_key = $("#soft_status_key").attr("value"); this.sync(); }catch(e){ }}, post: function(){ // Scroll to the Top and show the progress bar goto_top(); $(progressbar.fadeout_div).fadeOut(500, function(){ $(progressbar.progress_div).fadeOut(1); $(progressbar.progress_div).fadeIn(500); } ); try{ var sid = $_("softbranch").value; }catch(e){ var sid = '.$soft.' } $.ajax({ url: window.location+"&jsnohf=1&soft="+sid+"&multi_ver=1", type: "POST", data: $(progressbar.formid).serialize(), complete: function( jqXHR, status, responseText ) { progressbar.sync_abort(); // Store the response as specified by the jqXHR object responseText = jqXHR.responseText; try{ //alert(responseText); if(responseText.match(/\<\!\-\-PROC_DONE\-\-\>/gi)){ progressbar.text("'.addslashes($l['finishing_process']).'"); progressbar.move(99, 10, "$(progressbar.progress_div).fadeOut(1)"); }else{ progressbar.reset(); } }catch(e){ } if ( jqXHR.state() == "resolved" ) { // #4825: Get the actual response in case // a dataFilter is present in ajaxSettings jqXHR.done(function( r ) { responseText = r; }); // Create a dummy div to hold the results // inject the contents of the document in, removing the scripts // to avoid any "Permission Denied" errors in IE var newhtml = jQuery("<div>").append(responseText).find(progressbar.win_div).html(); $(progressbar.win_div).animate({opacity: 0}, 1000, "", function(){ $(progressbar.win_div).html(newhtml); //quick install? this is because now the newhtml has been filled in win_div(for error and selectversion) post_install_but(); show_backup(); check_pass_strength(); new_theme_funcs_init(); $(document).trigger("reinit_install_window"); }).delay(50).animate({opacity: 1}, 500); //alert(newhtml); }else{ alert("Oops ... the connection was lost"); } } }); } }; function show_msg(msg){ $_("show_txt").innerHTML = "<br /><br /> "+msg+" <img src=\"'.$theme['images'].'progress.gif\" />"; $_("show_txt").style.display = ""; } // Is the package there ? var nopackage = '.(empty($nopackage) ? 0 : 1).'; // Use the Progress Bar ? var useprog = 1; try{ if(BrowserDetect.browser.toLowerCase() == "safari" && BrowserDetect.version.toString().substr(0, 1) == "3"){ useprog = 0; } }catch(e){ } function get_package(){ if(nopackage){ show_msg("'.$l['downloading'].'"); var csrf_token = $("#csrf_token").val(); try{ $.ajax({ type: "POST", data: "csrf_token="+csrf_token, url: "'.$globals['index'].'act=python&soft='.$soft.'&ajaxdownload=1&random="+Math.random(), // Checking for error success: function(data){ get_package_handle(data); } }); }catch(e){ } return false; }else{ $_("show_txt").style.display = "none"; return true; } }; function get_package_handle(resp){ nopackage = 0; show_msg("'.$l['installing'].'"); checkform(1); }; softemail = new Object(); function softmail(){ try{ var use_eu_email = "'.(!empty($globals['use_eu_email']) ? $globals['use_eu_email'] : 0).'"; if(use_eu_email > 0){ return true; } var sofdom = "softdomain"; for(x in softemail){ if(softemail[x] == true) continue; var temp = $_(x).value.split("@"); if($_(sofdom).value.indexOf("/") > 0){ var dom_value = $_(sofdom).value.substring(0, $_(sofdom).value.indexOf("/")); }else{ var dom_value = $_(sofdom).value; } $_(x).value = temp[0] + "@" + dom_value; } }catch(e){ return false; } }; function checkhttps(proto_id, softdomain_id, alrt){ try{ var id = $_(proto_id); var proto = id.options[id.selectedIndex].text; var no_proto = proto.replace("https://", ""); $("#checkhttps_wait").css("display","inline-block"); if(proto.indexOf("https") !== -1){ $.ajax({ type: "POST", url: "'.$globals['index'].'act=python&soft='.$soft.'&checkhttps="+encodeURIComponent(no_proto+$_(softdomain_id).value), timeout:10000, // Checking for error success: function(data){ $("#checkhttps_wait").css("display","none"); is_https(trim(data)); }, error: function(jqXHR, status, e) { $("#checkhttps_wait").css("display","none"); is_https(e); return false; } }); //AJAX("'.$globals['index'].'act=software&soft='.$soft.'&checkhttps="+id.options[id.selectedIndex].text+$_(softdomain_id).value, "is_https(re)"); }else{ $("#checkhttps_wait").css("display","none"); is_https("true"); } if(alrt == true){ alert(proto+$_(softdomain_id).value); } }catch(e){ // } return true; }; function is_https(re){ try{ httpserror = ""; //Check if it exists if(re !== "true"){ httpserror = "'.$l['no_https'].'"; } if(httpserror != ""){ $_("httpserror").style.display = "block"; $_("httpserror").innerHTML = httpserror; return false; }else{ $_("httpserror").style.display = "none"; } }catch(e){ // } return true; }; function prepend_prefix(prefix){ // Decide prefix USERNAME, DOMAIN OR USER DEFINED if(prefix != "" && prefix == "username") prefix = "'.$softpanel->user['name'].'"; if(prefix != "" && prefix == "domain") prefix = "'.current(array_keys($softpanel->domainroots)).'"; if(prefix != "" && prefix != "domain" && prefix != "username"); // APPEND OLD USERNAME OR DEFAULT USERNAME var old = $_("admin_username").value temp = $_("admin_username").value.split("-"); if (typeof temp[1] == \'string\' || temp[1] instanceof String){ $_("admin_username").value = prefix+"-"+temp[1]; }else{ $_("admin_username").value = prefix+"-"+old; } } function change_admin_prefix(domain){ var admin_prefix = \''.$globals['admin_prefix'].'\'; var random_username = \''.(!empty($random_username) ? 'true' : '').'\'; var empty_username = \''.(empty($globals['empty_username']) ? 'true' : '').'\'; var gl_random_username = \''.(empty($globals['random_username']) ? 'true' : '').'\'; if(admin_prefix == "domain" && random_username == "true" && empty_username == "true" && gl_random_username == "true"){ prepend_prefix(domain); } } // show/hide backup options function show_backup(){ var auto_backup = $("#auto_backup").val(); if(auto_backup == 0){ $("#auto_backup_rotation").attr("disabled", true); $("#custom_autobackup_cron").css("display", "none"); }else{ if(auto_backup == "custom"){ $("#custom_autobackup_cron").css("display", "block"); }else{ $("#custom_autobackup_cron").css("display", "none"); } $("#auto_backup_rotation").attr("disabled", false); } return true; }; '.(!empty($_POST) ? '' : 'addonload(\'softmail();show_backup();\');'); if(!empty($dbtype)){ $info['install'] .= 'function checkdbname(id, alrt){ try{ AJAX("'.$globals['index'].'act=python&soft='.$soft.'&checkdbexists="+$_(id).value, "dbexists(\'"+id+"\', "+alrt+", re)"); }catch(e){ // } return true; }; function dbexists(id, alrt, re){ try{ dberror = ""; //Is the length fine if($_(id).value.length > '.(empty($softpanel->maxdblen) ? 7 : $softpanel->maxdblen).'){ dberror = "'.lang_vars($l['max_db_length'], array(empty($softpanel->maxdblen) ? 7 : $softpanel->maxdblen)).'"; } //There should be only alphanumeric characters if(/[^a-zA-Z0-9'.(!empty($softpanel->allowed_db_special_char) ? implode('\\', $softpanel->allowed_db_special_char) : '').']/.test($_(id).value) && !'.aefer().'0){ dberror = "'.$l['db_alpha_num'].'"; } //Check if it exists if(re == "true"){ dberror = "'.$l['database_exists'].'"; } if(dberror != ""){ $_(id+"error").style.display = "block"; $_(id+"error").innerHTML = dberror; if(alrt == true){ alert(dberror); } return false; }else{ $_(id+"error").style.display = "none"; } }catch(e){ // } return true; };'; }//End of if($dbtype) $info['install'] .= '// ]]></script>'; $info['install'] .= '<div class="row"> <div class="col-12 mb-4"> <div class="bg"> <button type="button" class="btn pull-right btn sai-button quick_form_toggle_btn" id="show_full_form" style="display:none;" onclick="custom_install();return false;">'.$l['custom_install'].'</button> <button type="button" class="btn pull-right btn sai-button quick_form_toggle_btn" id="show_less_form" style="display:none;" onclick="quick_install();return false;">'.$l['quick_install'].'</button> <div class="sai_sub_head">'.$l['setup'].'</div> <hr class="sai_main_head_hr" />'; $info['install'] .= ' <div class="row"> <div class="col-sm-7"> <label class="form-label d-block mb-0" for="softdirectory">'.$l['choose_url'].'</label> <span class="sai_exp2">'.$l['choose_url_exp'].'</span> <div class="row mt-2" style="margin-left:0px; margin-right:0px;">'; if(empty($softpanel->noprotocol) && empty($globals['hide_protocol'])){ $info['install'] .= ' <div class="col-sm-3 custom_install" style="padding-left:0px; padding-right:1px; width:24%;"> <select name="softproto" class="form-control" id="softproto" onblur="checkhttps(\'softproto\', \'softdomain\', false)">'; foreach($protocols as $k => $v){ $info['install'] .= '<option value="'.$k.'" '.(optPOST('softproto') == $k || ($globals['default_protocol'] == $k && empty($_POST['softproto'])) ? 'selected="selected"' : '').'>'.$v.'</option>'; } $info['install'] .= '</select> <span class="sai_exp2 ml-1">'.$l['choose_protocol'].' <span class="sai_exp">'.$l['choose_protocol_exp'].'</span> </span> </div> <div class="col-sm-6" style="padding-left:0px; padding-right:0px;"> <select name="softdomain" class="form-control" id="softdomain" onchange="softmail();change_admin_prefix(this.value);" onblur="checkhttps(\'softproto\', \'softdomain\', false)">'; if(!empty($globals['blank_domain'])){ $info['install'] .= '<option value="" '.(empty($_POST['softdomain']) ? 'selected="selected"' : '').'>('.$l['select_domain'].')</option>'; } foreach($softpanel->webroots as $domain => $dompath){ $info['install'] .= '<option value="'.$domain.'" '.((!empty($_POST['softdomain']) && $_POST['softdomain'] == $domain) ? 'selected="selected"' : '').'>'.$domain.'</option>'; } $info['install'] .= ' </select> <span class="sai_exp2 ml-1">'.$l['choose_domain'].' <span class="sai_exp">'.$l['choose_domain_exp'].'</span> </span>'; } $info['install'] .= ' </div> <div class="col-sm-3" style="padding-left:1px;padding-right:0px;">'; if(empty($globals['no_indir'])){ $info['install'] .= ' <input type="text" name="softdirectory" class="form-control" id="softdirectory" size="30" value="'.POSTval('softdirectory', (!empty($globals['no_prefill']) ? '' : $software['softname'])).'" /> <span class="sai_exp2" style="margin-left:4px;">'.$l['in_directory'].' <span class="sai_exp">'.$l['in_directory_exp'].'</span> </span>'; } $info['install'] .= ' </div> <div class="row col-sm-12"> <div style="display:none;" id="checkhttps_wait"> <img src="'.$theme['images'].'progress.gif" alt="Please wait.."> </div> <span id="httpserror" style="display:none; padding:10px; margin-bottom:0px;" class="alert alert-warning"></span> </div> </div><! -- row mt-2 --> </div><! -- col-7 -->'; // A data Directory ? if(!empty($datadir)){ $info['install'] .= ' <div class="col-12 col-md-6 mt-2 mb-2"> <label for="datadir" class="form-label">'.$l['datadir'].'</label> <span class="sai_exp">'.$l['datadir_exp'].'</span> <input type="text" name="datadir" class="form-control" id="datadir" size="30" value="'.POSTval('datadir', $datadir).'" /> </div>'; } if(!empty($dbtype)){ $dbdetails = array(); $dbdetails['dbname'] = ''; $dbdetails['dbhost'] = ''; $dbdetails['dbusername'] = ''; $dbdetails['dbuserpass'] = ''; $dbdetails['dbname'] = mysqldbname($software['softname']); if(method_exists($softpanel, 'mysqldbname')){ $dbdetails['dbname'] = $softpanel->mysqldbname(); } // This is default $dbdetails['dbhost'] = 'localhost'; // Don't prefill database details if(!empty($globals['no_prefill_db'])){ $dbdetails['dbname'] = ''; $dbdetails['dbhost'] = ''; } $dbdetails = apply_filters('post_load_dbdetails', $dbdetails); if(aefer() && empty($softpanel->auto_managedb)){ $info['install'] .= ' <div class="col-12 col-md-6 mt-2 mb-2"> <label for="softdb" class="form-label">'.$l['database_name'].'</label> <span class="sai_exp">'.$l['database_name_exp_aefer'].'</span> <input type="text" name="softdb" class="form-control" id="softdb" size="30" value="'.POSTval('softdb', $dbdetails['dbname']).'" onblur="checkdbname(\'softdb\', false)" autocomplete="false" /> <span id="softdberror" style="background: #FDB3B3; display:none; width:200px;"></span> </div>'; } } // Are there any cron jobs if(!empty($cron)){ $info['install'] .= ' <div class="col-12 col-md-6 mt-2 mb-2 custom_install"> <label class="form-label" for="cron_min">'.$l['cron_job'].'</label> <span class="sai_exp">'.$l['cron_job_exp'].'</span> <div class="row"> <div class="col-sm-2"> <label for="cron_min">'.$l['cron_min'].'</label> <input type="text" class="form-control" name="cron_min" id="cron_min" size="2" value="'.POSTval('cron_min', $cron['min']).'" /> </div> <div class="col-sm-2"> <label for="cron_hour">'.$l['cron_hour'].'</label> <input type="text" class="form-control" name="cron_hour" id="cron_hour" size="2" value="'.POSTval('cron_hour', $cron['hour']).'" /> </div> <div class="col-sm-2"> <label for="cron_day">'.$l['cron_day'].'</label> <input type="text" class="form-control" name="cron_day" id="cron_day" size="2" value="'.POSTval('cron_day', $cron['day']).'" /> </div> <div class="col-sm-2"> <label for="cron_month">'.$l['cron_month'].'</label> <input type="text" class="form-control" name="cron_month" id="cron_month" size="2" value="'.POSTval('cron_month', $cron['month']).'" /> </div> <div class="col-sm-2"> <label for="cron_weekday">'.$l['cron_weekday'].'</label> <input type="text" class="form-control" name="cron_weekday" id="cron_weekday" size="2" value="'.POSTval('cron_weekday', $cron['weekday']).'" /> </div> </div> </div>'; } // Do we need to load any additional fields required by server admin ? if(!empty($GLOBALS['install_fields'])){ foreach($GLOBALS['install_fields'] as $ifk => $ifv){ if(empty($ifv['input'])) continue; //Adding class to input if(preg_match('/type="text"/is', $ifv['input']) && !preg_match('/class="form-control"/is', $ifv['input'])){ $ifv['input'] = preg_replace('/>/is', ' class="form-control">',$ifv['input']); } if(preg_match('/<select/is', $ifv['input']) && !preg_match('/class="form-control"/is', $ifv['input'])){ $ifv['input'] = preg_replace('/<select/is', '<select class="form-control"',$ifv['input']); } $info['install'] .= ' <div class="col-12 col-md-6 mt-2 mb-2 custom_install"> <label class="sai_head">'.$ifv['head'].'</label><br /> <span class="sai_exp2">'.$ifv['exp'].'</span> '.$ifv['input'].' </div>'; } } $info['install'] .= ' </div><! -- row --> </div><! -- bg --> </div><! -- col-12 -->'; if(!empty($settings)){ if(file_exists($software['path'].'/install.js')){ $info['install'] .= '<script language="javascript" type="text/javascript"><!--// --><![CDATA['; $info['install'] .= @parselanguages(str_replace('$(', '$_(', file_get_contents($software['path'].'/install.js'))); $info['install'] .= '// ]]></script>'; } foreach($settings as $group => $sets){ // Do we have anything in the set ? if($group == 'hidden' || empty($sets)) continue; // We will show dbprefix under advanced options if(count($sets) == 1 && array_key_exists('dbprefix', $sets)){ $dbprefix = $sets; continue; } $info['install'] .= '<div class="col-12 col-md-6 script_blocks mb-4"> <div class="bg h-100 ">'; $info['install'] .= ' <div class="sai_sub_head">'.$group.'</div> <hr class="sai_main_head_hr">'; foreach($sets as $sk => $sv){ //Adding class to input if(preg_match('/type="text"/is', $sv['tag'])){ $sv['tag'] = preg_replace('/>/is', ' class="form-control">',$sv['tag']); } if(preg_match('/<select/is', $sv['tag'])){ $sv['tag'] = preg_replace('/<select/is', '<select class="form-control"',$sv['tag']); } $info['install'] .= ' <div class="script_fields" '.(!empty($sv['quick_install']) ? 'quick_install="1"' : '').'> <label for='.$sk.' class="form-label" id="sai_head">'.$sv['head'].'</label> '.(empty($sv['exp']) ? '' : '<span class="sai_exp">'.$sv['exp'].'</span>').' '.(preg_match('/admin_pass|softpass/is', $sv['tag']) ? preg_replace('/>|\/>/is',' onkeyup="check_pass_strength();">', ' '.$sv['tag'].' <div class="strength-indicator w-90 d-inline-block"><div id="pass-strength-result" class="d-inline-block pass-strength-result">'.$l['strength_indicator'].'</div></div>') : $sv['tag']).' '.(preg_match('/softmail/is', $sv['tag']) ? '<script language="javascript" type="text/javascript"><!-- // --><![CDATA[ softemail["'.$sk.'"] = false; //Add an event handler $_("'.$sk.'").onkeydown = function(){ softemail["'.$sk.'"] = true; } // ]]></script> ' : '').' '.(preg_match('/admin_pass|softpass/is', $sv['tag']) ? ' <input id="toggle_pass_admin" type="checkbox" style="display:none;" onclick="toggle_pass(\'show_hide_admin\', \'admin_pass\');"/> <label for="toggle_pass_admin" style="margin-top:6px;"> <span class="sai_toggle-pass mt-1 mr-1" id="show_hide_admin">'.$l['hide'].'</span> </label> <a class="generate-password" href="javascript: void(0);" onclick="$_(\''.$sk.'\').value=randstr(10, 1, '.(!empty($globals['pass_strength']) ? $globals['pass_strength'] : 0).');check_pass_strength();return false;" title="'.$l['randpass'].'"><i class="fas fa-key"></i></a>' : '').' '.(preg_match('/admin_pass|softpass/is', $sv['tag']) && (!empty($softpanel->securepass) || !empty($globals['random_pass'])) ? ' <script language="javascript" type="text/javascript"><!-- // --><![CDATA[ addonload(\'$_("'.$sk.'").value=randstr(10, 1, '.(!empty($globals['pass_strength']) ? $globals['pass_strength'] : 0).');check_pass_strength();\'); // ]]></script> ' : '').' '.(preg_match('/admin_pass|softpass/is', $sv['tag']) && !empty($globals['empty_pass']) ? ' <script language="javascript" type="text/javascript"><!-- // --><![CDATA[ addonload(\'$_("'.$sk.'").value="";check_pass_strength();\'); // ]]></script> ' : '').' '.(preg_match('/dbprefix/is', $sv['tag']) && !empty($globals['random_dbprefix']) ? ' <script language="javascript" type="text/javascript"><!-- // --><![CDATA[ addonload(\'$_("'.$sk.'").value=randstr(3)+"_";\'); // ]]></script> ' : '').' '.(preg_match('/admin_username/is', $sv['tag']) && !empty($globals['random_username']) && !empty($random_username) ? ' <script language="javascript" type="text/javascript"><!-- // --><![CDATA[ addonload(\'$_("'.$sk.'").value=randstr(5);\'); // ]]></script> ' : '').' '.(preg_match('/admin_username/is', $sv['tag']) && !empty($globals['empty_username']) && !empty($random_username) ? ' <script language="javascript" type="text/javascript"><!-- // --><![CDATA[ addonload(\'$_("'.$sk.'").value="";\'); // ]]></script> ' : '').' '.(preg_match('/admin_username/is', $sv['tag']) && !empty($globals['admin_prefix']) && empty($globals['empty_username']) && empty($globals['random_username']) && !empty($random_username) ? '<script language="javascript" type="text/javascript"><!-- // --><![CDATA[ addonload(\'prepend_prefix("'.$globals['admin_prefix'].'");\'); // ]]></script> ' : '').'<!--//Code for admin setting for admin email and admin username--> '.(preg_match('/admin_username/is', $sv['tag']) && !empty($globals['use_eu_username']) && empty($globals['empty_username']) && !empty($random_username) && empty($globals['random_username']) ? ' <script language="javascript" type="text/javascript"><!-- // --><![CDATA[ $(document).ready(function(){$_("'.$sk.'").value="'.$softpanel->user['name'].'";}); // ]]></script> ' : '').' '.(preg_match('/admin_email|board_email|site_email|bug_email|noreply_email|feedback_email|wiki_mail/is', $sv['tag']) && !empty($globals['use_eu_email']) ? ' <script language="javascript" type="text/javascript"><!-- // --><![CDATA[ $(document).ready(function(){$_("'.$sk.'").value="'.$user['email'].'";}); // ]]></script> ' : '').' <br /> </div>'; } $info['install'] .= '<br /> </div><!--end of script_blocks--> </div><!--end of bg class-->'; } $info['install'] .= '</div><!-- row ended -->'; //The Hidden groups if(!empty($settings['hidden'])){ foreach($settings['hidden'] as $sk => $sv){ $info['install'] .= $sv['tag'].' '.(preg_match('/softmail/is', $sv['tag']) ? '<script language="javascript" type="text/javascript"><!-- // --><![CDATA[ softemail["'.$sk.'"] = false; //Add an event handler $_("'.$sk.'").onkeydown = function(){ softemail["'.$sk.'"] = true; } // ]]></script> ' : ''); } } }//End of if($settings) //Is it a SOFTCOPY, then Leave a NOTE if(!empty($setupcontinue)){ $info['install'] .= ' '.$l['softcopy_note'].' '; } // Advance option $info['install'] .= ' <div class="bg custom_install"> <div class="sai_sub_head" id="advoptions_toggle" onclick="toggle_advoptions(\'advoptions\');" style="cursor:pointer"> <i id="advoptions_toggle_plus" class="fas fa-plus-square" class="mr-2"></i> <span class="">'.$l['adv_option'].'</span> <hr class="sai_main_head_hr d-block mt-3 ml-4 m-0"> </div> <div id="advoptions" class="mt-4" style="display:none;"> '; if(empty($dbtype) || aefer() || !empty($softpanel->auto_managedb)){ // Do nothing $info['install'] .= '<div class="row">'; }else{ $info['install'] .= '<div class="row"> <div class="col-12 col-md-6 mb-2"> <label for="softdb" class="sai_head ">'.$l['database_name'].'</label><br /> <span class="sai_exp2 mb-2">'.$l['database_name_exp'].'</span>'; $dbfield = '<input type="text" name="softdb" class="form-control" id="softdb" size="30" value="'.POSTval('softdb', $dbdetails['dbname']).'" onblur="checkdbname(\'softdb\', false)" autocomplete="false" />'; $soft_dbprefix = $softpanel->dbname(''); if(!empty($soft_dbprefix) && $soft_dbprefix != '_'){ $dbfield = ' <div class="input-group"> <div class="input-group-addon"> <span class="input-group-text">'.$soft_dbprefix.'</span> </div> '.$dbfield.' </div>'; } $info['install'] .= $dbfield.' <span id="softdberror" style="background: #FDB3B3; display:none; width:auto;"></span><br /> </div>'; } $info['install'] .= ' <div class="col-12 col-md-6 mb-2">'; //Do not show 'disable update notifications' option if both 'Turn off all Emails sent to endusers' and 'Disable End User Update E-Mails' or either is enabled in Admin Panel if(empty($globals['off_email_link']) && empty($globals['eu_email_off'])){ $info['install'] .= ' <div> <label class="sai_head mb-2" for="disable_notify_update">'.$l['disable_notify_update'].'</label> <span class="sai_exp">'.$l['exp_disable_notify_update'].'</span> <input type="checkbox" name="disable_notify_update" id="disable_notify_update" '.POSTchecked('disable_notify_update').' /><br /> </div>'; } $info['install'] .= ' </div>'; // Auto backups option only if backups is not disabled and panel is not remote if(empty($globals['disable_backup_restore']) && empty($globals['disable_auto_backup']) && empty($softpanel->disable_auto_backup)){ $info['install'] .= ' <div class="col-12 col-md-6 mb-2"> <label for="auto_backup" class="sai_head mb-2">'.$l['auto_backup'].'</label> <span class="sai_exp">'.$l['exp_auto_backup'].'</span> <select name="auto_backup" class="form-control" id="auto_backup" onchange="show_backup();"> <option value="0" '.POSTselect('auto_backup', '0', 1).'>'.$l['no_backup'].'</option>'. (empty($globals['disable_auto_backup_daily']) ? '<option value="daily" '.POSTselect('auto_backup', 'daily', ($globals['auto_backup'] == 'daily' ? 1 : '')).'>'.$l['daily'].'</option>' : ''). (empty($globals['disable_auto_backup_weekly']) ? '<option value="weekly" '.POSTselect('auto_backup', 'weekly', ($globals['auto_backup'] == 'weekly' ? 1 : '')).'>'.$l['weekly'].'</option>' : ''). (empty($globals['disable_auto_backup_monthly']) ? '<option value="monthly" '.POSTselect('auto_backup', 'monthly', ($globals['auto_backup'] == 'monthly' ? 1 : '')).'>'.$l['monthly'].'</option>' : ''). (empty($globals['disable_auto_backup_custom']) ? '<option value="custom" '.POSTselect('auto_backup', 'custom').'>'.$l['custom_autobackup'].'</option>' : '').' </select><br /> </div> <div class="col-12 col-md-6 mb-2" id="custom_autobackup_cron" style="display:none;"> <label for="autobackup_cron_min" class="sai_head">'.$l['custom_autobackup_cron'].'</label> <span class="sai_exp">'.$l['custom_autobackup_cron_exp'].'</span> <div class="row"> <div class="col-sm-2"> <label for="autobackup_cron_min">'.$l['cron_min'].'</label> <input type="text" class="form-control" name="autobackup_cron_min" id="autobackup_cron_min" size="2" value="'.POSTval('autobackup_cron_min', '').'" /> </div> <div class="col-sm-2"> <label for="autobackup_cron_hour">'.$l['cron_hour'].'</label> <input type="text" class="form-control" name="autobackup_cron_hour" id="autobackup_cron_hour" size="2" value="'.POSTval('autobackup_cron_hour', '').'" /> </div> <div class="col-sm-2"> <label for="autobackup_cron_day">'.$l['cron_day'].'</label> <input type="text" class="form-control" name="autobackup_cron_day" id="autobackup_cron_day" size="2" value="'.POSTval('autobackup_cron_day', '').'" /> </div> <div class="col-sm-2"> <label for="autobackup_cron_month">'.$l['cron_month'].'</label> <input type="text" class="form-control" name="autobackup_cron_month" id="autobackup_cron_month" size="2" value="'.POSTval('autobackup_cron_month', '').'" /> </div> <div class="col-sm-2"> <label for="autobackup_cron_weekday">'.$l['cron_weekday'].'</label> <input type="text" class="form-control" name="autobackup_cron_weekday" id="autobackup_cron_weekday" size="2" value="'.POSTval('autobackup_cron_weekday', '').'" /> </div> </div><br /> </div> <div class="col-12 col-md-6 mb-2"> <label class="sai_head mb-2" for="auto_backup_rotation">'.$l['auto_backup_rotation'].'</label> <span class="sai_exp">'.$l['exp_auto_backup_rotation'].'</span> <select name="auto_backup_rotation" class="form-control" id="auto_backup_rotation">'; for($i=0; $i<=10; $i++){ // Do we have a limit from admin ? if(!empty($globals['auto_backup_limit']) && ($i > $globals['auto_backup_limit'] || $i == 0) || !empty($globals['max_backups']) && ($i > $globals['max_backups'] || $i == 0)) continue; $info['install'] .= '<option value="'.$i.'" '.POSTselect('auto_backup_rotation', $i, (!empty($globals['auto_backup_rotation']) ? $i == $globals['auto_backup_rotation'] : $i == 4) ? '1' : '0').'>'.(empty($i) ? $l['unlimited'] : $i).'</option>'; } $info['install'] .= '</select><br /> </div>'; } $info['install'] .= '</div> </div><br /> </div><!--end of bg-->'; $info['install'] .= ' <div class="text-center mt-4"> <input type="hidden" name="softsubmit" id="softsubmit" value="'.$l['softsubmit'].'" /> <input type="hidden" name="pass-strength-hidden" id="pass-strength-hidden" value="" /> <input type="submit" name="softsubmitbut" id="softsubmitbut" class="btn sai-button" value="'.$l['softsubmit'].'"/><span id="show_txt" style="display:none;"></span> <br /><br /><br /> '.(empty($globals['off_email_link']) && empty($globals['off_install_mail']) ? '<span class="sai_head">'.$l['ins_emailto'].'</span> : <input type="text" name="emailto" id="emailto" size="20" value="'.POSTval('emailto', '').'" />' : '').' </div> <input type="hidden" name="soft_status_key" id="soft_status_key" value="'.POSTval('soft_status_key', generateRandStr(32)).'" /> '.csrf_display().' </form></div> '; $info['install'] .= ' <div id="progress_bar" style="height:125px; width:100%; display: none;"> <br /> <center> <font size="4" id="progress_txt" style="width:100%;">'.$l['checking_data'].'</font> <font style="font-size: 18px;font-weight: 400;width:100%;" id="progress_percent">(0 %)</font><br /><br /> </center> <table width="500" cellpadding="0" cellspacing="0" id="table_progress" border="0" align="center" height="28" style="border:1px solid #CCC; -moz-border-radius: 5px; -webkit-border-radius: 5px; border-radius: 5px; width:50%"> <tr> <td id="progress_color" width="1" style="background-image: url('.$theme['images'].'bar.gif); -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px;"></td> <td id="progress_nocolor"> </td> </tr> </table><br /> <center>'.$l['wait_note'].'</center> </div> <br /><br /><br />'; }elseif(!empty($installed)){ $info['install'] = ' <div class="bg2"> <h5>'.$l['congrats'].'</h5> <hr class="sai_main_head_hr" style="width:20%;"> <p style="font-size:13px;"> '.$software['name'].' '.$l['succesful'].' : <br /> <a href="'.$__settings['softurl'].'" target="_blank">'.$__settings['softurl'].'</a> '.(!empty($software['adminurl']) ? '<br />'.$l['admin_url'].' : <a href="'.$__settings['softurl'].'/'.$software['adminurl'].'" target="_blank" id="adminurl">'.$__settings['softurl'].'/'.$software['adminurl'].'</a>' : '').'<br /><br /> '.(!empty($setupcontinue) ? $l['setup_continue'].' : <br /> <a href="'.$__settings['softurl'].'/'.$setupcontinue.'" target="_blank">'.$__settings['softurl'].'/'.$setupcontinue.'</a><br /><br />' : '').' '.$l['enjoy'].'<br /><br /> '.(!empty($notes) ? $l['install_notes'].' : <br /> <div class="sai_notes">'.softparse($notes, $soft).'</div><br /><br />' : '').' '.$l['please_note'].'<br /><br /> '.$l['regards'].',<br /> '.$l['softinstaller'].' </p><br /><br /> <center><b><a href="'.script_link($soft).'&highlight='.$new_insid.'&postact=install" class="sai_head">'.$l['return'].'</a></b></center><br /><br />'; if(empty($globals['install_tweet_off']) || empty($globals['lictype'])){ $info['install'] .= '<form method="get" action="https://twitter.com/intent/tweet" id="tweet" onsubmit="return dotweet(this);"> <div class="row justify-content-center"> <div class="col-sm-7"> <div class="card"> <div class="card-header" style="font-size:14px;"> <font><b>'.$l['install_tweet_sub'].' :</b></font> </div> <div class="card-body"> <div class="row"> <div class="col-sm-12"> <textarea id="txttweet" name="text" cols="80" row="3" style="resize:none; width:100%;">'.loadtweetdata('install_tweet', $l['install_tweet']).'</textarea> </div> </div> <br /> <div class="row"> <div class="col-sm-12"> <input type="submit" value="Tweet!" class="btn btn-info pull-right" onsubmit="return false;" id="twitter-btn" /> </div> </div> </div> </div> </div> </div> </form>'; } $info['install'] .= '<br /></div><!--end of bg2 class--><!--PROC_DONE--> <br /><br />'; } softheader($l['<title>'].$software['name']); //Added the show_text & hide_text variable for when the header is not loaded (Iframe) echo ' <script> var show_text = "'.$l['show'].'"; var hide_text = "'.$l['hide'].'"; </script>'; $loadedinfo = array('install', 'overview', 'features', 'reviews', 'screenshots', 'ratings'); ?> <script language="JavaScript" src="<?php echo $theme['url'].'/js/tabber.js';?>" type="text/javascript"> </script> <script language="JavaScript" id="ratings_js_file" type="text/javascript"></script> <script language="JavaScript" id="review_js_file" type="text/javascript"></script> <script language="JavaScript" id="reviews_js_file" type="text/javascript"></script> <script type="text/javascript"> tabs = new tabber; tabs.tabs = new Array('<?php echo implode('\', \'', $loadedinfo);?>'); tabs.tabwindows = new Array('<?php echo implode('_win\', \'', $loadedinfo);?>_win'); tabs.inittab = <?php echo '\''.$init_tab.'\';';?> addonload('tabs.init();loadraterev();check_pass_strength();'); function loadraterev(){ <?php if(empty($globals['off_rating_link']) && $soft < 10000){ echo '$_(\'ratings_js_file\').src = "'.fastestmirror().'/ratingsjs.php?soft='.$soft.'&user='.$softpanel->user['name'].'&ip='.$_SERVER['SERVER_ADDR'].'";'; } if(empty($globals['off_review_link']) && $soft < 10000){ echo '$_(\'review_js_file\').src = "'.fastestmirror().'/reviewjs.php?soft='.$soft.'&user='.$softpanel->user['name'].'&ip='.$_SERVER['SERVER_ADDR'].'";'; echo '$_(\'reviews_js_file\').src = "'.fastestmirror().'/reviewsjs.php?soft='.$soft.'&user='.$softpanel->user['name'].'&ip='.$_SERVER['SERVER_ADDR'].'";'; } ?> }; function notifyversion(){ if(AJAX(window.location+"¬ify=true", "notified(re)")){ return false; }else{ return true; } }; function notified(re){ if(re == 1){ alert('<?php echo $l['notifyversion'] ?>'); } }; function loadScreenshots(){ $_('screenshots_iframe').src = '<?php echo fastestmirror().'/screenshots/screenshots1.php?sid='.$soft;?>'; }; </script> <?php $url = $theme['images']; $ratings = array(); $deduct = 1; $r = $scripts[$soft]['ratings']; for($i_r=1; $i_r<=5; $i_r++){ if($r >= 1){ $ratings[$i_r] = '<i class="fas fa-star" alt="('.number_format($scripts[$soft]['ratings'], 2).' out of 5)"></i>'; }elseif($r > 0){ $ratings[$i_r] = '<i class="fas fa-star-half-alt" alt="('.number_format($scripts[$soft]['ratings'], 2).' out of 5)"></i>'; }else{ $ratings[$i_r] = '<i class="far fa-star" alt="('.number_format($scripts[$soft]['ratings'], 2).' out of 5)"></i>'; } $r = $r - $deduct; } // For custom themes if($soft > 10000){ if(file_exists($globals['euthemes'].'/'.$globals['theme_folder'].'/images/topscripts/48/'.$iscripts[$soft]['softname'].'.png')){ $custom_48 = $theme['images'].'topscripts/48/'.$iscripts[$soft]['softname'].'.png'; }else{ $custom_48 = $theme['images'].'/custom.png'; } } echo '<div class="bg"> <div id="currentrating" style="display:none"></div> <div class="row"> <div class="col-md-1 col-sm-2 col-2 logo_style"> '.(!empty($custom_48) ? '<img src="'.$custom_48.'" alt="">' : '<img src="'.$globals['softimages'].'top15/48/'.$scripts[$soft]['softname'].'.png" >').' </div> <div class="col-md-11 col-sm-10 col-10 details_style" style="padding-left:0px;"> <span class="sai_process_heading mr-1">'.$software['name'].'</span>'.($soft > 10000 ? '' : ' <span class="someclass sai_coverstars" title="'.$scripts[$soft]['ratings'].'">'.implode('', $ratings).'</span><br/>').' <p class="details pl-2"> <span class="details-label">'.$l['software_ver'].'</span> : '.(!empty($tmp_ver) ? $tmp_ver : $software['ver']).' <a href="javascript" onclick="notifyversion(); return false;" class="someclass" title="'.$l['notify_ver'].'"> <i class="fas fa-comment-alt px-1 sai_icons" style="color:#4099FF;"></i> </a> </p> <p class="details pl-2"> <span class="details-label">'.(!empty($info['release_date']) ? $l['release_date'].'</span> : '.$info['release_date'] : '').' '.(!empty($info['changelog']) ? ' <a href="" data-toggle="modal" data-target="#changelog_div" class="sai_changelogbut">'.$l['changelog'].'</a>' : '').' </p> </div> </div><br /> <style> .logo_style{ padding-left: 25px !important; padding-top: 12px !important; } @media screen and (min-width: 360px) and (max-width: 767px){ .logo_style{ padding: 18px 0px 10px 8px !important; } .related_scripts{ padding-left: 0px !important; } } @media screen and (min-width: 768px) and (max-width: 799px){ .logo_style{ padding: 18px 0px 10px 8px !important; } } </style> <script type=text/javascript>'; if(!empty($softpanel->pheader)){ if(is_cp_theme('x3')){ echo ' $(document).ready(function(){ // This is as per new method. Required $(".details_style").css("padding-left","40px"); $(".ver_style").css("margin-left","0px"); $(".release_style").css("margin-left","0px"); $(".change_style").css({"margin-left":"0px", "margin-top":"-15px"}); });'; }else{ echo ' $(document).ready(function(){ $(".ver_style").css("margin-left","0px"); $(".release_style").css("margin-left","0px"); $(".change_style").css({"margin-left":"0px", "margin-top":"-10px"}); });'; } } echo ' </script> <div class="old_tab"> <div class="sai_tabs row"> <div class="sai_single-tab" style="width:14%"> <a href="javascript:tabs.tab(\'install\')" class="sai_tab" id="install">'.$l['install'].'</a> </div> <div> <a class="sai_insbut" id="show_install_option"><span class="caret" style="cursor:pointer; padding:6px;"></span></a> </div> <div class="sai_single-tab" style="width:14%"> <a href="javascript:tabs.tab(\'overview\')" class="sai_tab" id="overview">'.$l['overview'].'</a> </div> <div class="sai_single-tab" style="width:14%"> <a href="javascript:tabs.tab(\'features\')" class="sai_tab" id="features">'.$l['features'].'</a> </div> '.(empty($globals['off_screenshot_link']) ? '<div class="sai_single-tab" style="width:14%"><a href="javascript:tabs.tab(\'screenshots\'); loadScreenshots();" class="sai_tab" id="screenshots">'.$l['screenshots'].'</a></div>' : '').' '.(empty($globals['off_demo_link']) ? '<div class="sai_single-tab" style="width:14%"><a href="'.($soft >= 10000 && !empty($info['demo']) ? $info['demo'] : $globals['ind'].'act=demos&soft='.$soft).'" class="sai_tab" id="demo" target="_blank">'.$l['demo'].'</a></div>' : '').' '.(empty($globals['off_rating_link']) && $soft < 10000 ? '<div class="sai_single-tab" style="width:14%"><a href="javascript:tabs.tab(\'ratings\')" class="sai_tab" id="ratings">'.$l['ratings'].'</a></div>' : '').' '.(empty($globals['off_review_link']) && $soft < 10000 ? '<div class="sai_single-tab" style="width:14%"><a href="javascript:tabs.tab(\'reviews\')" class="sai_tab" id="reviews">'.$l['reviews'].'</a></div>' : '').' '.((empty($info['import']) || !empty($globals['disable_import'])) ? '' : '<div class="sai_single-tab" style="width:14%"><a href="'.$globals['ind'].'act=import&soft='.$soft.'" class="sai_tab" id="import">'.$l['import'].'</a></div>').' </div> <div class="quick_install_dropdown sai_single-tab" id="quick_install_dropdown" style="display:none;"> <div id="quick_install_btn" class="quick_install_dropdown_btn"> <a href="javascript:tabs.tab(\'install\')">'.$l['quick_install'].'</a> </div> <div id="custom_install_btn" class="quick_install_dropdown_btn"> <a href="javascript:tabs.tab(\'install\')">'.$l['custom_install'].'</a> </div> </div> </div><br /> <div class="new_tab"> <nav class="navbar navbar-default p-0"> <div class="navbar-header w-100 p-3"> <button type="button" class="navbar-toggle d-inline-block pull-right" data-toggle="collapse" data-target="#myNavbar"> <i class="fas fa-bars"></i> </button> <ul class="nav"> <li class="active"> <a href="javascript:tabs.tab(\'install\')" id="install" class="sai_tab2 text text-decoration-none" style="height:40px; top:5px;">'.$l['install'].'</a> </li> <li class="nav-item dropdown"> <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" style="font-size:16px;"> </a> <div class="dropdown-menu" aria-labelledby="navbarDropdown"> <a href="javascript:tabs.tab(\'install\')" id="quick_install_btn" class="dropdown-item sai_tab2 text-decoration-none">'.$l['quick_install'].'</a> <div class="dropdown-divider"></div> <a href="javascript:tabs.tab(\'install\')" id="custom_install_btn" class="dropdown-item sai_tab2 text-decoration-none">'.$l['custom_install'].'</a> </div> </li> </ul> </div> <div class="collapse navbar-collapse soft-options p-2 px-3" id="myNavbar" data-toggle="collapse" data-target=".navbar-collapse"> <ul class="nav navbar-nav"> <a href="javascript:tabs.tab(\'overview\')" id="overview" class="sai_tab2 text-decoration-none"> <li> '.$l['overview'].' </li> </a> <div class="dropdown-divider"></div> <a href="javascript:tabs.tab(\'features\')" id="features" class="sai_tab2 text-decoration-none"> <li> '.$l['features'].' </li> </a> <div class="dropdown-divider"></div> '.(empty($globals['off_screenshot_link']) ? ' <a href="javascript:tabs.tab(\'screenshots\'); loadScreenshots();" class="sai_tab2 text-decoration-none" id="screenshots"> <li> '.$l['screenshots'].' </li> </a>' : '').' <div class="dropdown-divider"></div> '.(empty($globals['off_demo_link']) ? ' <a href="'.($soft >= 10000 && !empty($info['demo']) ? $info['demo'] : $globals['ind'].'act=demos&soft='.$soft).'" class="sai_tab2 text-decoration-none" id="demo" target="_blank"> <li> '.$l['demo'].' </li> </a>' : '').' <div class="dropdown-divider"></div> '.(empty($globals['off_rating_link']) && $soft < 10000 ? ' <a href="javascript:tabs.tab(\'ratings\')" class="sai_tab2 text-decoration-none" id="ratings"> <li> '.$l['ratings'].' </li> </a>' : '').' <div class="dropdown-divider"></div> '.(empty($globals['off_review_link']) && $soft < 10000 ? ' <a href="javascript:tabs.tab(\'reviews\')" class="sai_tab2 text-decoration-none" id="reviews"> <li> '.$l['reviews'].' </li> </a>' : '').' <div class="dropdown-divider"></div> '.((empty($info['import']) || !empty($globals['disable_import'])) ? '' : ' <a href="'.$globals['ind'].'act=import&soft='.$soft.'" class="sai_tab2 text-decoration-none" id="import"> <li> '.$l['import'].' </li> </a>').' </ul> </div> </nav> </div>'; apply_filters('pre_software_overview_theme', $soft); //Maximum Installation Limit per script if(!empty($globals['max_ins_script']) && $ins_count_per_script >= $globals['max_ins_script']){ echo '<br /> <div class="alert alert-danger"> <a href="#close" class="close" data-dismiss="alert" aria-label="close">×</a> <center>'.lang_vars($l['error_max_ins_script'], array($globals['max_ins_script'])).'</center> </div>'; } if(!empty($outdated_script)){ echo '<div class="alert alert-warning text-center mt-2">'.lang_vars($l['outdated_script'], array($software['name'])).'</div>'; } echo ' <script type="text/javascript"> $_(tabs.inittab).className = tabs.tabbedclass; var softid = '.$soft.' tabs.override = function(id){ if(id == \'install\'){ $_(\'install\').className = \'sai_insbutclicked\'; }else{ $_(\'install\').className = \'sai_insbut\'; } }; </script>'; if(!empty($scripts[$soft]['screenshots'])){ $screenshot_src = $globals['mirror_images'].'softimages/screenshots/'.$soft.'_screenshot1.gif'; }elseif($soft >= 10000){ if(file_exists($theme['images'].'topscripts/screenshots/'.$soft.'_screenshot1.gif')){ $screenshot_src = $theme['images'].'topscripts/screenshots/'.$soft.'_screenshot1.gif'; } } //Parse and take care of images $info['overview'] = (!empty($info['changelog']) ? ' <div class="modal fade" id="changelog_div" role="dialog"> <div class="modal-dialog modal-lg"> <!-- Modal content--> <div class="modal-content"> <div class="modal-header"> <h4 class="modal-title">Changelog</h4> <button type="button" class="close" data-dismiss="modal">×</button> </div> <div class="modal-body"> '.$info['changelog'].' </div> </div> </div> </div>' : '').' <div class="bg2"> <div class="row"> '.(!empty($screenshot_src) && (empty($softpanel->pheader) || (!empty($softpanel->pheader) && is_cp_theme('paper_lantern'))) ? ' <div class="col-12 col-sm-6 col-md-6 col-xl-6"> <div id="overview_img" class="overview-img"> <img src="'.$screenshot_src.'" class="img-fluid" alt=""> </div> <div class="row mt-4 text-center"> <div class="offset-0 offset-lg-2 col-6 col-lg-4"> <a href="javascript:tabs.tab(\'install\')" id="install_now"> <span class="btn sai-button">'.$l['install_now'].'</span> </a> </div> <div class="col-6 col-lg-4"> <a href="javascript:tabs.tab(\'overview\')" id="my_app"> <span class="btn sai-button">'.$l['my_apps'].'</span> </a> </div> </div> </div> <div class="col-sm-6 col-md-6 col-12">': '<div class="col-sm-12 col-12">').' <p class="softphrase-overview">'.softparse($info['overview'], $soft).'</p> <div class="row"> <div class="col-sm-12 col-md-6 col-xs-12"> <span class="sai-icon-style"> <i class="fas fa-inbox"></i> </span> <span class="sai_head">'.$l['space_req'].'</span> <span class="sai_exp2 mt-2 d-block">'. (!empty($globals['off_available_space']) ? '' : $l['available_space'].' : '.(is_numeric($softpanel->spaceremain) ? number_format($softpanel->spaceremain/1024/1024, 2) : $softpanel->spaceremain).' '.$l['mb'].'<br />') .$l['req_space'].' : '.number_format($software['spacereq']/1024/1024, 2).' '.$l['mb'] .'</span> </div> <div class="col-sm-12 col-md-6 col-xs-12"> <a href="'.$info['support'].'" class="text-decoration-none"> <span class="sai-icon-style"> <i class="fas fa-question-circle"></i> </span> </a> <span class="sai_head">'.$l['software_support'].'</span><br/> <a class="mt-2 d-block support-link" href="'.$info['support'].'" target="_blank">'.$l['support_link'].'</a> <span class="sai_exp2">'.$l['support_note'].'</span> </div> </div>'; $info['overview'] .=' </div> </div> </div><!--end of bg2 class-->'; if((!empty($installations[$soft]) || array_intersect(array_keys($installations), array_keys($software['branch']))) && empty($globals['disable_current_ins'])){ $info['overview'] .= ' <div class="row mt-5"> <div class="col-12"> <div class="text-center"> <span class="sai_newhead d-block" id="current_ins">'.$l['current_ins'].'</span> <hr class="sai_main_head_hr"> </div> <div class="table-responsive">'; $info['overview'] .= ' <table class="table table-hover installation-list-table"> <thead class="sai_head2"> <tr> <th>'.$l['link'].'</th> <th>'.$l['admin'].'</th> <th>'.$l['ins_time'].'</th> <th>'.$l['version'].'</th> <th style="text-align:center;">'.$l['options'].'</th> <th><input type="checkbox" id="check_all"></th> </tr> </thead>'; $i=1; $highlight = optGET('highlight'); $action = optGET('postact'); foreach($installations[$soft] as $ik => $iv){ $iv['sid'] = get_sid_by_version($iv['ver'], $iv['sid']); $is_cloneable = is_cloneable($iv['sid']); $is_upgradable = is_upgradable($ik); $info['overview'] .= '<tr id="trid' . $ik . '"> <td class="endurl"><a href="'.$iv['softurl'].'" target="_blank" id="insurl'.$ik.'">'.$iv['softurl'].'</a>'.(($highlight == $ik && !empty($action)) ? '<span id="highlight" class="ml-1"><b class="sai_highlight">'.$l['act_'.$action].'</b></span>' : '').'</td> <td> <a href="'.$iv['softurl'].'/'.(!empty($iv['admin_folder']) ? $iv['admin_folder'] : admin_folder($iv['sid'])).'" target="_blank" title="'.$l['login_exp'].'" class="someclass"><i class="fas fa-user px-1 sai_icons"></i></a></a> </td> <td> '.datify($iv['itime']).' </td> <td> '.$iv['ver'].(!empty($is_upgradable) ? ' <a href="'.$globals['ind'].'act=upgrade&insid='.$ik.'" title="'.$l['upd_to'].' '.implode(' or ', $is_upgradable).'" class="someclass"><i class="fas fa-sync-alt px-1 sai_icons" style="color:#1565C0; font-size:1.2em;"></i></a>' : '').' </td> <td align="right">'. (!empty($is_cloneable) ? ' <a href="'.$globals['ind'].'act=sclone&insid='.$ik.'" title="'.$l['clone'].'" class="someclass mr-1"><i class="fas fa-copy px-1 sai_icons" style="color:#1565C0;"></i></a>' : ''). (empty($globals['disable_backup_restore']) ? '<a href="'.$globals['ind'].'act=backup&insid='.$ik.'" title="'.$l['backup'].'" class="someclass mr-1"><i class="fas fa-file-archive px-1 sai_icons" style="color:#119768;"></i></a>' : ''). '<a href="'.$globals['ind'].'act=editdetail&insid='.$ik.'" title="'.$l['editdetail'].'" class="someclass"><i class="fas fa-pencil-alt px-1 sai_icons" style="color:#FF5D00;"></i></a> <a href="'.$globals['ind'].'act=remove&insid='.$ik.'" title="'.$l['remove'].'" class="someclass"><i class="fas fa-trash-alt sai_icons" style="color:red;"></i></a> <td> <input type="checkbox" name="insids[]" id="'.$iv['softurl'].'" value="'.$ik.'" class="shift_select_ins soft_inslist"> </td> </tr>'; $i++; } $info['overview'] .= '</table> </div> </div> </div> <p class="text-right"> <span class="sai_head">'.$l['with_selected'].':</span> <select name="multi_options" id="multi_options" class="mr-1"> <option name="todo" id="todo" value="0">---</option> <option name="todo" id="todo" value="mult_rem">'.$l['remove_complete'].'</option> <option name="todo" id="todo" value="mult_rem_info">'.$l['remove_info'].'</option> </select> <input type="button" value="'.$l['go'].'" onclick="show_confirm()" class="btn sai-button"> </p> <div id="rem_div"></div> <script language="javascript" type="text/javascript"><!-- // --><![CDATA[ insids = new Array(); removed = new Object(); function show_confirm(){ insids = new Array(); removed = new Object(); $sel_opt = $_("multi_options").value; if($sel_opt != "mult_rem" && $sel_opt != "mult_rem_info"){ return false; } // Build the list of Installations to remove var field = document.getElementsByName(\'insids[]\'); insids = new Array(); var c = 0; for(i = 0; i < field.length; i++){ if(field[i].checked == true){ insids[c] = field[i].value; c++; } } //alert(insids); if(c == 0){ alert("'.$l['no_sel_inst'].'"); return false; } var r = confirm("'.$l['del_insid'].'"); if(r != true){ return false; } if($sel_opt == "mult_rem_info"){ remove_by_id(insids[0], "", 0, 1); }else{ remove_by_id(insids[0], "", 0); } } function remove_by_id(insid, re, oldinsid, info_only){ removed[insid] = false; info_only = info_only || 0; if(re.length > 0 && oldinsid > 0){ if(re == "removed"){ removed[insid] = true; } } nextinsid = 0; // Find the next INSTALLATION to remove for(i = 0; i < insids.length; i++){ if(typeof(removed[insids[i]]) != "undefined"){ continue; } nextinsid = insids[i]; break; } // If there is something left to be removed if(insid != 0){ var csrf_token = $("#csrf_token").val(); try{ $.ajax({ type: "POST", data: "csrf_token="+csrf_token, url: "'.$globals['index'].'act=remove&insid="+insid+"&ajax=1&ssk="+randomstring(32)+"&random="+Math.random()+"&info_only="+info_only, // Checking for error success: function(data){ remove_by_id(nextinsid, data, insid, info_only); } }); $_("rem_div").innerHTML = "<br /><br /><p align=\"center\"><img src=\"' . $theme['images'] . 'ajax_remove.gif\"> <br />'.$l['rem_inst_id']. ' ID: " +insid+ ", URL: " + $_("insurl"+insid)+"<br /></p>"; return true; }catch(e){ return false; } } $_("rem_div").innerHTML = ""; alert("'.$l['inst_remvd'].'"); location.reload(true); return true; } $(document).ready(function(){ $("#check_all").on("click", function(event){ if(this.checked == true){ $(".soft_inslist").prop("checked", true); }else{ $(".soft_inslist").prop("checked", false); } }); $(".sai_altrowstable tr").mouseover(function(){ var old_class = $(this).attr("class"); if(old_class == "nohover") return; //alert(old_class); $(this).attr("class", "sai_tr_bgcolor"); $(this).mouseout(function(){ $(this).attr("class", old_class); }); }); $("#my_app").click(function(){ goto_id("current_ins"); });'; // If we get anything in $highlight than only we have to call this JS function other wise it will cause the JS error. if(!empty($highlight)){ $info['overview'] .= 'goto_id("insurl'.$highlight.'"); $("#highlight").fadeOut(10000);'; } $info['overview'] .= '}); // ]]></script>'; } if(count($allcatwise[$software['type']][$software['cat']]) > 2 && $software['cat'] != 'others' && empty($globals['disable_related_scripts'])){ $info['overview'] .= ' <div class="bg2"> <div class="row mt-2"> <div class="col-12 "> <span class="sai_newhead d-block" id="current_ins">'.$l['related_scripts'].'</span> <hr class="sai_main_head_hr"> </div> </div> <div class="row related_scripts">'; $i = 0; foreach($allcatwise[$software['type']][$software['cat']] as $k => $v){ if(($k == $soft) || (!empty($scripts[$k]['parent']) && !empty($iscripts[$scripts[$k]['parent']]))){ continue; } // Show only 5 scripts if($i == 5){ break; } $info['overview'] .=' <div class="col-sm-3 col-md-2 col-6"> <a href="'.script_link($k).'" title="'.$v['desc'].'" alt="" class="someclass softtooltip related-scripts"> <div class="sai_blog_script"> <div class="sai_demo_script_logo"> <img src="'.$globals['softimages'].'top15/48/'.$v['softname'].'.png" > </div> <div class="sai_script_name">'.$v['name'].'</div> </div> </a> </div>'; $i++; } $info['overview'] .='</div><!--end of row--> </div><!--end of bg2 class-->'; } //Parse and take care of images $info['features'] = '<div class="bg2"><br />'.softparse($info['features'], $soft).'</div><!--end of bg2 class-->'; $info['ratings'] = ''; $info['screenshots'] = '<div class="row"> <div class="col-12 mx-auto"> <iframe src="" id="screenshots_iframe" class="screenshots_iframe" frameborder="0" scrolling="no"></iframe> </div> </div>'; $info['reviews'] = '<div class="bg2"><div id="allreviews"></div></div><!--end of bg2 class-->'; foreach($info as $k => $v){ if(in_array($k, array('demo', 'support', 'import', 'changelog'))) continue; echo '<div id="'.$k.'_win" style="display: '.($init_tab == $k ? "block" : "none").'; width:100%;"><br /> '.$v.' </div>'; } echo '</div>'; softfooter(); } ?>