diff --git a/.gitattributes b/.gitattributes deleted file mode 100644 index bdb0cab..0000000 --- a/.gitattributes +++ /dev/null @@ -1,17 +0,0 @@ -# Auto detect text files and perform LF normalization -* text=auto - -# Custom for Visual Studio -*.cs diff=csharp - -# Standard to msysgit -*.doc diff=astextplain -*.DOC diff=astextplain -*.docx diff=astextplain -*.DOCX diff=astextplain -*.dot diff=astextplain -*.DOT diff=astextplain -*.pdf diff=astextplain -*.PDF diff=astextplain -*.rtf diff=astextplain -*.RTF diff=astextplain diff --git a/.gitignore b/.gitignore deleted file mode 100644 index cd2946a..0000000 --- a/.gitignore +++ /dev/null @@ -1,47 +0,0 @@ -# Windows image file caches -Thumbs.db -ehthumbs.db - -# Folder config file -Desktop.ini - -# Recycle Bin used on file shares -$RECYCLE.BIN/ - -# Windows Installer files -*.cab -*.msi -*.msm -*.msp - -# Windows shortcuts -*.lnk - -# ========================= -# Operating System Files -# ========================= - -# OSX -# ========================= - -.DS_Store -.AppleDouble -.LSOverride - -# Thumbnails -._* - -# Files that might appear in the root of a volume -.DocumentRevisions-V100 -.fseventsd -.Spotlight-V100 -.TemporaryItems -.Trashes -.VolumeIcon.icns - -# Directories potentially created on remote AFP share -.AppleDB -.AppleDesktop -Network Trash Folder -Temporary Items -.apdisk diff --git a/README.MD b/README.MD index c7f4f62..f53219b 100644 --- a/README.MD +++ b/README.MD @@ -1,8 +1,6 @@ # Bootstrap theme for BoxBilling -This is an easily customisable Bootstrap theme for BoxBilling. - -![Dashboard](https://framapic.org/pwGGIsDG9g5v/GyObwZB9W4dm) +This is an easily customisable Bootstrap theme for BoxBilling. This theme looks is based on WHMCS. Please report issues and suggestions within this git. The theme is licensed under GPLv3 so please feed back your improvements to this git. @@ -12,13 +10,27 @@ Please report issues and suggestions within this git. The theme is licensed unde - Easily customisable theme with Bootswatch pre-made templates - Customisable home page for non-clients - Beautiful and efficient dashboard -- Markdown editors for tickets and forum messages - +- Markdown / Wysiwyg tinyMCE editors for tickets and forum messages +- WHMCS Style User Interface ## Installation - Copy the "bootstrap" folder in *bb-themes* - Configure the theme -![Order](https://framapic.org/9hHZFbG1NY9t/iukgZlrehmWv) +`If you need any customization / integration help. Freel free to contact me` + + +Some Images : + +### Dashboard +![](https://github.com/yokowasis/boxbilling-whmcs-bootstrap/raw/master/images/dashboard.png) + +### Order Page +![](https://github.com/yokowasis/boxbilling-whmcs-bootstrap/blob/master/images/order.png) + +### Product and Services Page +![](https://github.com/yokowasis/boxbilling-whmcs-bootstrap/raw/master/images/services.png) + +### Ticket +![](https://github.com/yokowasis/boxbilling-whmcs-bootstrap/raw/master/images/tickets.png) -![Services](https://framapic.org/JH2twTKmobr9/AQ8wm8RzN4vb) \ No newline at end of file diff --git a/bootstrap/assets/css/bimasoft.css b/bootstrap/assets/css/bimasoft.css new file mode 100644 index 0000000..cf4912b --- /dev/null +++ b/bootstrap/assets/css/bimasoft.css @@ -0,0 +1,697 @@ +.navbar-inverse { + background: none; + border: none; + box-shadow: none; + margin-bottom: 0; + min-height: 0; +} + +body { + padding-top: 10px; +} +.navbar-inverse .navbar-nav>li>a:hover, .navbar-inverse .navbar-nav>li>a:focus { + background: none; + color: #888; + text-decoration: underline; +} + +.navbar-inverse .navbar-nav>li>a +{ + color: #888; + text-shadow: none; + font-size: 12px; +} + +.nav>li>a { + padding: 5px 10px; +} + +.navbar2 { + background: #006687; + margin-bottom: 30px; +} + +.navbar2 .list-group { + margin-bottom: 0; +} + +.navbar2 .list-group:after { + content: ""; + clear: both; + display: block; +} + +.navbar2 .list-group-item { + float: left; + border: none; + background: none; +} + +.navbar2 a.list-group-item, .navbar2 button.list-group-item { + color: #fff; +} + +.navbar2 .list-group-item.active, .navbar2 .list-group-item.active:hover, .navbar2 .list-group-item.active:focus { + background: none; +} + +.navbar2 a.active.list-group-item:hover { + background: #fff; + color: #555; +} + +.navbar2 a.list-group-item:hover, +.navbar2 button.list-group-item:hover, +.navbar2 a.list-group-item:focus, +.navbar2 button.list-group-item:focus { + color: #555; +} + +.navbar2 .float-right { + float: right; +} +.page-header { + margin-top: 0; + font-size: 25px; + color: #033c73; +} + +.panel-default>.panel-heading { + font-size: 14px; + color: #000; + font-weight: bold; +} + +.fullname { + font-weight: bold; + color: #000; + margin-bottom: 10px; +} + +.layanan a:hover { + text-decoration: none; + background: #f3f3f3 +} + +.layanan a { + display: block; + color: #777; + border-top: solid 1px #ccc; + padding: 5px; + font-size: 12px; + padding-left: 20px; +} + +.panel-body.layanan { + padding: 0; +} + +.panel-body.categories { + padding: 0; +} + +.panel-body.categories a { + display: block; + color: #777; + border-top: solid 1px #ccc; + padding: 5px; + font-size: 13px; + padding-left: 20px; +} + +.panel-body.categories a:hover, +.panel-body.categories a:focus { + text-decoration: none; + background: #006687; + color: #fff; +} + +.panel-primary>.panel-heading#replyticket { + background: #d9edf7; + color : #31708f; + font-weight: bold; +} + +.panel.panel-techsupport { + border: 1px solid #CCE4FC; +} + + + +.panel.panel-techsupport .panel-heading { + background: #F2F9FF; +} + +.panel.panel-client { + border: 1px solid #ccc; +} + +.panel.panel-client .panel-heading { + background: #f8f8f8; +} + +#ticketinfo { + font-size: 14px; +} + +#ticketinfo p { + margin : 0; + padding: 8px 15px; +} + +#ticketinfo p:nth-child(even) { + background: #efefef; +} + +#ticket-info-footer { + text-align: center; +} + +#ticket-info-footer .btn { + padding : 5px 15px; +} + +#close-ticket-a { + display: none; +} + +.tiles { + margin : 0 15px 15px 15px; +} + +.tiles .tile { + padding: 12px 20px; + background-color: #f8f8f8; + border-right: 1px solid #ccc; +} + +.tile .icon { + position: absolute; + top: 10px; + right: 10px; + font-size: 48px; + line-height: 1; + color: #ccc; +} + +.tile .stat { + margin-top: 20px; + font-size: 40px; + line-height: 1; +} + +a .stat { + color: #058; +} + +.tile .title { + font-weight: bold; + color: #888; + text-transform: uppercase; + font-size: 12px; +} + +.tiles .tile:hover { + background-color: #eee; + cursor: pointer; +} + +.tiles .tile .highlight { + margin-top: 4px; + height: 2px; + border-radius: 2px; +} + +.bg-color-blue { + background-color: #5bc0de; +} + +.bg-color-green { + background-color: #5cb85c; +} + +.bg-color-red { + background-color: #d9534f; +} + +.bg-color-gold { + background-color: #f0ad4e; +} + +.tiles a:hover, +.tiles a:focus { + color: #157ab5; + text-decoration: none; +} + +.client-home-panels .panel-default>.panel-heading { + background-color: #fff; + border-color: #ddd; + padding: 10px 15px; +} + +.client-home-panels .panel-default>.panel-heading h4 { + color: #333; + font-weight: bold; + font-size: 16px; + margin: 0; +} + +a:hover { + text-decoration: none; +} + +.last-updated { + display: block; + font-size: 12px; + color: #888; + margin-top: 3px; +} + +#dashboard-support .list-group-item { + padding: 5px 16px; +} + +.bg-color-gold { + background: #f0ad4e; +} + +.panel.panel-accent-gold { + border-top: 3px solid #f0ad4e; +} + +.panel.panel-accent-red { + border-top: 3px solid #c71c22; +} + +.panel.panel-accent-blue { + border-top: 3px solid #5bc0de; +} + +.panel.panel-accent-green { + border-top: 3px solid #468847; +} + +.panel.panel-accent-grey { + border-top: 3px solid #999999; +} + +.home-kb-search .form-control { + background-color: #444; + color: #fff; + padding-left: 50px; + width: 100%; + border-radius: 6px !important; + border: 0; + padding: 11px 50px; + height: auto; + margin-bottom: 15px; +} + +.home-kb-search i { + position: absolute; + left: 17px; + color: #777; + top: 14px; + z-index: 20; + font-size: 18px;; +} + +.home-kb-search .input-group { + width: 100%; + position: relative; +} + + +.dash-news a { + font-size: 12px; + text-align: left; +} + +.dash-news a.list-group-item { + padding: 5px 15px; + color: #555; +} + +.footer-btn { + display: block; + width: 100%; + padding: 7px; + color: #fff; + background: #5cb85c; + font-size:12px; + border-radius: 4px; +} + +.footer-btn:hover { + background: #398439; + color: #fff; +} + +#my-accounts-panel ul { + list-style: none; + padding: 0; + margin-bottom: 0; +} + +.list-group-item:last-child, .list-group-item:first-child { + border-radius: 0; +} + +#service-all { + display: none; +} + +#company-logo h1 { + margin-top: -20px; +} + +.list-group-item.category-group-item { + border: none; +} + +.product_frame { + border: solid 1px #ccc; + padding: 15px; + border-radius: 10px; + margin-bottom: 25px; +} + +.btn.btn-primary, +.btn.btn-primary-blue { + background: #006687; + color: #fff; +} + +h4.order_title { + color: #033c73; + font-size: 24px; + font-weight: bold; + margin-bottom: 15px; +} + +.starting_price { + font-size: 24px; + font-weight: normal; + color: #333; +} + +.btn.btn-order { + background: #337ab7; +} + +.starting_price.form-control { + height: auto; + font-size: 18px; + padding: 10px; + margin-top: 5px; +} + +.product_frame.list-group-item-text { + line-height: 1.3em; +} + +a, h1, h2, h3, h4, h5, h6, .h1, .h2, .h3, .h4, .h5, .h6 { + color: #033c73; +} + +.order_period { + display: block; + font-size: 11px; + color: #999999; +} + +table.dataTable thead th { + background-color: #E6ECEF; + border-bottom: 1px solid #ccc; + color: #333; + font-size: 13px; + text-align: center; +} + +.dataTables_wrapper .dataTables_filter { + background-color: #006587; + border: 0; + font-size: 12px; + border-radius: 4px 4px 0 0; + padding: 9px 10px; + color: #006587; + float: none; +} + +.dataTables_wrapper .dataTables_filter input { + font-weight: normal; + color: #333; + border: none; + padding: 4px 10px; + border-radius: 3px; +} + +.dataTables_wrapper .dataTables_filter label { + margin-bottom: 0; +} + +.dataTables_wrapper .dataTables_length label { + padding: 10px; + padding-left: 15px; + font-weight: normal; + color: #fff; + padding-bottom: 0; +} + +.dataTables_wrapper .dataTables_length label select { + color: #555555; + border: none; + padding: 3px; + border-radius: 3px; + font-size: 12px; +} + +.dataTables_wrapper { +} + +.dataTables_wrapper td { + background: #FAFAFA; +} + + +table.dataTable.no-footer { + border : 1px solid #ccc; + border-radius: 6px; + border-bottom: 7px solid #ccc; + border-top-left-radius : 0; + border-top-right-radius: 0; +} + +table.dataTable.no-footer > tbody > tr:nth-child(odd) > td { + background: #EAEAEA; +} + +table.dataTable.no-footer > tbody > tr:nth-child(even) > td { + background: #FFF; +} + +table.dataTable.no-footer td { + border-top: solid 1px #ddd; + font-size: 12px; + padding: 5px 10px; + text-align: center; +} + +table.dataTable.no-footer td span.label { + width : 105px; + display: block; + padding: 7px 10px; + font-weight: normal; + font-size: 11px; + border-radius : 0; +} + +table.dataTable.no-footer td:first-child { + text-align: left; +} + + +.dataTables_info { + font-size: 12px; + margin-left: 10px; +} + +.dataTables_wrapper .dataTables_paginate .paginate_button.disabled, .dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover, +.dataTables_wrapper .dataTables_paginate .paginate_button, +.dataTables_wrapper .dataTables_paginate .paginate_button.disabled { + border : solid 1px #ccc; + margin: 0; + font-size : 11px; + padding: 5px 10px; + margin-right: -1px; + border-radius: 0; + color: #aaa; +} + +.dataTables_wrapper .dataTables_paginate .paginate_button.disabled, .dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover { + cursor: not-allowed; +} + +.dataTables_wrapper .dataTables_paginate .paginate_button.current, .dataTables_wrapper .dataTables_paginate .paginate_button.current:hover { + margin: 0; + margin-right: -1px; + background: #006687; + color: #fff !important; + border-top: solid 1px #006687; + border-radius: 0; +} + +.dataTables_wrapper .dataTables_paginate .paginate_button:hover, +.dataTables_wrapper .dataTables_paginate .paginate_button:active { + background: #EEE; + border : solid 1px #ccc; +} + +.dataTables_wrapper .dataTables_paginate .previous.paginate_button.disabled, +.dataTables_wrapper .dataTables_paginate .previous.paginate_button.disabled:hover, +.dataTables_wrapper .dataTables_paginate .previous.paginate_button, +.dataTables_wrapper .dataTables_paginate .previous.paginate_button.disabled { + border-top-left-radius: 3px; + border-bottom-left-radius: 3px; +} + +.dataTables_wrapper .dataTables_paginate .next.paginate_button.disabled, +.dataTables_wrapper .dataTables_paginate .next.paginate_button.disabled:hover, +.dataTables_wrapper .dataTables_paginate .next.paginate_button, +.dataTables_wrapper .dataTables_paginate .next.paginate_button.disabled { + border-top-right-radius: 3px; + border-bottom-right-radius: 3px; +} + +.dataTables_wrapper .dataTables_paginate { + padding-top: 10px; + padding-right: 3px; +} + +.dataTables_wrapper .dataTables_paginate .paginate_button:hover, +.dataTables_wrapper .dataTables_paginate .paginate_button:active, +.dataTables_wrapper .dataTables_paginate .paginate_button { + color: #777 !important; +} + + +.dtt td a { + color: #555555; +} + +.domain_tld { + display: block; + font-size: 11px; + color: #033c73; +} + +#loaderwrapper { + display: none; + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: rgba(0,0,0,0.5); + z-index: 2000; +} + +#loaderwrapper2 { + position: absolute; + top: 30%; + width: 100%; + text-align: center; + color: #fff; +} + +.loader { + border: 16px solid #f3f3f3; /* Light grey */ + border-top: 16px solid #3498db; /* Blue */ + border-radius: 50%; + width: 120px; + height: 120px; + animation: spin 2s linear infinite; + margin : auto; +} + +@keyframes spin { + 0% { transform: rotate(0deg); } + 100% { transform: rotate(360deg); } +} + + +ul.data-header-actions li.domain-tabs { + list-style: none; + float: left; +} + +ul.data-header-actions:after { + content: ""; + clear: both; + display: block; +} + +ul.data-header-actions { + padding-left: 0; + border-bottom: solid 1px #ccc; +} + +ul.data-header-actions li.domain-tabs a { + position: relative; + top: 3px; + margin-left: 0px; + margin-right: 0px; + padding-left: 20px; + padding-right: 20px; +} + +ul.data-header-actions li.domain-tabs.active a { + border: solid 1px #ccc; + border-bottom: #fff; + background: #fff; +} + +form#change-password .control-group { + width: 50%; + float: left; +} + +form#change-password .control-group input { + border : solid 1px #ccc; + padding: 3px; + border-radius: 3px; + width: 80%; + margin-top: 10px; + margin-bottom: 20px; +} + +.service-get-list a { + padding: 5px 10px; + display: block; + color: #000; + border-bottom: solid 1px #ccc; +} + +.list-invoices a { + font-size: 13px; +} +.service-get-list a, +.list-invoices a { + padding: 5px 16px; +} + +a.list-group-item-danger:hover, +.navbar2 a.list-group-item:hover, +a.list-group-item-info:hover +{ + background: #fff; +} + +.dtt td { + cursor: pointer; +} + +.dtt tr:hover td { + background: #dddddd !important; +} diff --git a/bootstrap/assets/images/logo.png b/bootstrap/assets/images/logo.png deleted file mode 100644 index 2318975..0000000 Binary files a/bootstrap/assets/images/logo.png and /dev/null differ diff --git a/bootstrap/assets/images/logo_new.svg b/bootstrap/assets/images/logo_new.svg new file mode 100644 index 0000000..9aa6e9c --- /dev/null +++ b/bootstrap/assets/images/logo_new.svg @@ -0,0 +1,427 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bootstrap/assets/js/bimasoft.js b/bootstrap/assets/js/bimasoft.js new file mode 100644 index 0000000..63c7621 --- /dev/null +++ b/bootstrap/assets/js/bimasoft.js @@ -0,0 +1,169 @@ +function generatePassword() { + len = 21; + var length = (len)?(len):(10); + var string = "abcdefghijklmnopqrstuvwxyz"; //to upper + var numeric = '0123456789'; + var punctuation = '!@#$%^&*()_+~`|}{[]\:;?><,./-='; + var password = ""; + var character = ""; + var crunch = true; + while( password.length -1) { + hostname = url.split('/')[2]; + } + else { + hostname = url.split('/')[0]; + } + + //find & remove port number + hostname = hostname.split(':')[0]; + //find & remove "?" + hostname = hostname.split('?')[0]; + + return hostname; +} + +function extractRootDomain(url) { + var domain = extractHostname(url), + splitArr = domain.split('.'), + arrLen = splitArr.length; + + //extracting the root domain here + if (arrLen > 2) { + domain = splitArr[arrLen - 2] + '.' + splitArr[arrLen - 1]; + } + return domain; +} + +jQuery(document).ready(function($) { + + tinymce.init({ + selector: '#tiny', + setup: function (editor) { + editor.on('change', function () { + editor.save(); + }); + }, + height: 200, + menubar: false, + fontsize_formats: "8px 10px 12px 14px 18px 24px 36px", + plugins: [ + 'advlist autolink lists link image charmap print preview anchor textcolor', + 'searchreplace visualblocks code fullscreen', + 'insertdatetime media table contextmenu paste code help' + ], + toolbar: ' insert | image | link | styleselect | fontsizeselect bold italic forecolor | alignleft aligncenter alignright alignjustify | bullist numlist | removeformat ' + }); + $('#tiny').after(`

Upload Files       Dropbox       Google Drive

`); + + + $('.dtt').DataTable({ + "initComplete": function(settings, json) { + $('.dataTables_filter input[type=search]').prop({ + placeholder: 'Enter search term...' + }); + } + }); + + $('.ajaxsubmit').click(function(event) { + $('#loaderwrapper').show(); + }); + + $('body').on('click', '.dtt td', function(event) { + url = $(this).closest('tr').find('td').eq(0).find('a').prop('href'); + window.location = url; + }); + + $('#optional_manage button[value="Change password"]').click(function(event) { + $('#loaderwrapper').show(); + var myVar = setInterval(function(){ + if (($(".bootbox").data('bs.modal') || {}).isShown) { + clearInterval(myVar); + $('#loaderwrapper').hide(); + } + }, 300); + }); + + $('#optional_manage a').each(function(index, el) { + href = $(this).prop('href'); + if (href.indexOf('2031') !== -1) { + href = href.replace ('https','http'); + href = href.replace ('http','https'); + $(this).before(` +
+ + + + +
`); + $(this).remove(); + $('#cwpanel_login_btn').click(function(event) { + window.open("https://client.bimasoft.web.id/wait.html",'cwpanel_window'); + randompass = generatePassword(); + username = $('#tab-details').find('tr').eq(3).find('td').eq(1).text(); + $('#optional_manage input[type="password"][name="password"]').val(randompass); + $('#optional_manage input[type="password"][name="password_confirm"]').val(randompass); + $('#optional_manage button[type=submit][value="Change password"]').click(); + var myVar = setInterval(function(){ + if (($(".bootbox").data('bs.modal') || {}).isShown) { + clearInterval(myVar); + $('#loaderwrapper').hide(); + $(".bootbox.modal").modal('hide'); + $('#cwpanel_login input[name="username"]').val(username); + $('#cwpanel_login input[name="password"]').val(randompass); + $('#cwpanel_login').submit(); + } + }, 300); + }); + } + if (href.indexOf('/cpanel') !== -1) { + href = href.replace ('/cpanel',':2083') + href = href.replace ('https','http'); + href = href.replace ('http','https'); + $(this).before(` +
+ + + + +
`); + $(this).remove(); + $('#cwpanel_login_btn').click(function(event) { + window.open("https://client.bimasoft.web.id/wait.html",'cwpanel_window'); + randompass = generatePassword(); + username = $('#tab-details').find('tr').eq(3).find('td').eq(1).text(); + $('#optional_manage input[type="password"][name="password"]').val(randompass); + $('#optional_manage input[type="password"][name="password_confirm"]').val(randompass); + $('#optional_manage button[type=submit][value="Change password"]').click(); + var myVar = setInterval(function(){ + if (($(".bootbox").data('bs.modal') || {}).isShown) { + clearInterval(myVar); + $('#loaderwrapper').hide(); + $(".bootbox.modal").modal('hide'); + $('#cwpanel_login input[name="user"]').val(username); + $('#cwpanel_login input[name="pass"]').val(randompass); + $('#cwpanel_login').submit(); + } + }, 300); + }); + } + }); + +}); + diff --git a/bootstrap/config/settings_data.json b/bootstrap/config/settings_data.json index e69de29..e806c3c 100644 --- a/bootstrap/config/settings_data.json +++ b/bootstrap/config/settings_data.json @@ -0,0 +1 @@ +{"presets":{"Default":{"theme":"cerulean","lumen":"journal","dash_services":"1","dash_support":"1","dash_invoices":"1","dash_orders":"1","dash_messages":"1","dash_kb":"1","dash_news":"1","dash_forum":"1","home_page":"order","home_sidemenu":"1","showcase_enabled":"0","showcase_heading":"","showcase_text":"","showcase_button_title":"","showcase_button_url":"","side_menu_home":"1","side_menu_order":"1","side_menu_blog":"1","side_menu_forum":"1","side_menu_kb":"1","side_menu_contact":"1","side_menu_services":"1","side_menu_support":"1","side_menu_invoices":"1","side_menu_register":"1","sidebar_note_enabled":"1","sidebar_note_title":"","sidebar_note_content":"","meta_title":"","meta_description":"","meta_keywords":"","meta_robots":"","meta_author":"","show_page_footer":"1","footer_branding_enabled":"1","footer_to_top_enabled":"1","footer_signature":"","footer_link_1_title":"","footer_link_1_page":"","footer_link_2_title":"","footer_link_2_page":"","footer_link_3_title":"","footer_link_3_page":"","footer_link_4_title":"","footer_link_4_page":"","footer_link_5_title":"","footer_link_5_page":"","inject_javascript":"","inject_css":""}},"current":"Default"} \ No newline at end of file diff --git a/bootstrap/html/layout_default.phtml b/bootstrap/html/layout_default.phtml index ec37e16..bfa4574 100644 --- a/bootstrap/html/layout_default.phtml +++ b/bootstrap/html/layout_default.phtml @@ -1,4 +1,5 @@ {% set company = guest.system_company %} +{% set profile = client.client_get %} @@ -16,10 +17,8 @@ - {% if settings.theme != "default" %} - {% else %} - {% endif %} - + + @@ -34,22 +33,33 @@ {% endif %} - + - - + + + - + - - + - + + + + + + + + + + + + @@ -79,7 +89,7 @@ {% endif %} -