first
This commit is contained in:
942
installer/assets/css/style.css
Executable file
942
installer/assets/css/style.css
Executable file
@@ -0,0 +1,942 @@
|
||||
/* CSS Reset */
|
||||
html, body, div, span, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, code, del, dfn, em, img, q, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td {
|
||||
margin:0;
|
||||
padding:0;
|
||||
border:0;
|
||||
font-weight:inherit;
|
||||
font-style:inherit;
|
||||
font-size:100%;
|
||||
font-family:inherit;
|
||||
vertical-align:baseline;
|
||||
}
|
||||
blockquote:before, blockquote:after, q:before, q:after {
|
||||
content:"";
|
||||
}
|
||||
blockquote, q {
|
||||
quotes:"" "";
|
||||
}
|
||||
a img {
|
||||
border:none;
|
||||
}
|
||||
p {
|
||||
margin:0 0 20px;
|
||||
clear:both;
|
||||
line-height:1.6;
|
||||
}
|
||||
/* Headings */
|
||||
h1, h2, h3, h4, h5, h6 {
|
||||
font-weight:normal;
|
||||
margin-bottom:10px;
|
||||
}
|
||||
h1 {
|
||||
font-size:24px;
|
||||
font-weight:bold;
|
||||
}
|
||||
h2 {
|
||||
font-size:18px;
|
||||
font-weight:bold;
|
||||
border-bottom:1px solid #ccc;
|
||||
padding-bottom:5px;
|
||||
margin-bottom:25px;
|
||||
}
|
||||
h3 {
|
||||
font-size:14px;
|
||||
font-weight:bold;
|
||||
}
|
||||
h4 {
|
||||
font-weight:bold;
|
||||
}
|
||||
h5 {
|
||||
font-size:12px;
|
||||
}
|
||||
h6 {
|
||||
font-size:11px;
|
||||
}
|
||||
|
||||
/* Base */
|
||||
body {
|
||||
background:#D6E4EE;
|
||||
font-family:"Helvetica Neue", Arial, Helvetica, sans-serif;
|
||||
color:#666;
|
||||
line-height:1.5;
|
||||
font-size:75%;
|
||||
}
|
||||
|
||||
#statusBar {
|
||||
width:780px;
|
||||
margin:0 auto;
|
||||
text-align:right;
|
||||
}
|
||||
#statusBar a {
|
||||
color:#666;
|
||||
text-decoration:none;
|
||||
padding:0 0 0 20px;
|
||||
background:url('../img/warning_16.png') center left no-repeat;
|
||||
}
|
||||
#wrapper {
|
||||
width:960px;
|
||||
margin: 60px auto;
|
||||
}
|
||||
|
||||
#wrapper h1 a.homelink {
|
||||
padding:40px;
|
||||
text-indent:-9999px;
|
||||
display:block;
|
||||
width:260px;
|
||||
}
|
||||
|
||||
|
||||
.home #wrapper {
|
||||
margin:20px auto;
|
||||
}
|
||||
|
||||
#wrapper p.error {
|
||||
color:#990000;
|
||||
padding:10px 20px;
|
||||
}
|
||||
|
||||
#wrapper p.success {
|
||||
color:green;
|
||||
border:1px solid green;
|
||||
padding:5px 20px;
|
||||
background:#f3f3f3;
|
||||
}
|
||||
|
||||
#header {
|
||||
|
||||
}
|
||||
|
||||
|
||||
span.small_instruction {
|
||||
font-size:12px;
|
||||
line-height:10px!important;
|
||||
display:block;
|
||||
margin:0 0 20px 0 ;
|
||||
}
|
||||
|
||||
.col2 {
|
||||
width:200px;
|
||||
}
|
||||
|
||||
td.col3 {
|
||||
font-size:12px;
|
||||
background-color:rgba(255,255,255,0.8);
|
||||
text-indent:20px;
|
||||
color:#777;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
#headerInvoice {
|
||||
height:118px;
|
||||
margin:0 auto;
|
||||
background:url('../img/invoice_header.png') no-repeat;
|
||||
}
|
||||
|
||||
|
||||
|
||||
#header ul#navigation {
|
||||
width:400px;
|
||||
float:right;
|
||||
list-style:none;
|
||||
padding:0;
|
||||
margin:20px 0 0 0;
|
||||
}
|
||||
|
||||
#header ul#navigation li {
|
||||
float:left;
|
||||
margin:0 10px 0 0;
|
||||
padding:0;
|
||||
}
|
||||
|
||||
#header ul#navigation li a {
|
||||
padding:5px 10px 3px 10px;
|
||||
background:#f2f2f2;
|
||||
margin:0;
|
||||
text-decoration:none;
|
||||
color:#69D2E7;
|
||||
}
|
||||
|
||||
#header ul#navigation li a:hover, #header ul#navigation li a.active {
|
||||
background:#fff;
|
||||
}
|
||||
|
||||
|
||||
#content {
|
||||
background: #fff;
|
||||
padding:10px 40px 20px;
|
||||
clear:both;
|
||||
margin-bottom:10px;
|
||||
-moz-border-radius:10px 0 10px 10px;
|
||||
-webkit-border-radius:10px 0 10px 10px;
|
||||
}
|
||||
|
||||
#footer {
|
||||
text-align:right;
|
||||
}
|
||||
|
||||
#wrapper h1 {
|
||||
margin:0px 0 50px 0 ;
|
||||
text-indent:-9999px;
|
||||
}
|
||||
|
||||
h2.toggle {
|
||||
line-height:46px;
|
||||
text-indent:60px;
|
||||
cursor:pointer;
|
||||
}
|
||||
|
||||
|
||||
h1, h3, h4 {
|
||||
color:#69D2E7;
|
||||
}
|
||||
a {
|
||||
color:#69D2E7;
|
||||
}
|
||||
h2 {
|
||||
color:#fa6900;
|
||||
}
|
||||
|
||||
.orangered {
|
||||
color:#fa6900
|
||||
}
|
||||
|
||||
h2.plus {
|
||||
background:url('../img/add_48.png') center left no-repeat;
|
||||
}
|
||||
|
||||
h2.minus {
|
||||
background:url('../img/cancel_48.png') center left no-repeat;
|
||||
}
|
||||
/*
|
||||
input[type="text"], input[type="password"], textarea {
|
||||
-moz-border-radius:5px;
|
||||
-webkit-border-radius:5px;
|
||||
background-color:#F2F2F2;
|
||||
border:1px solid #69D2E7;
|
||||
border-radius:5px;
|
||||
font: inherit;
|
||||
color:#F38630;
|
||||
padding:4px 2px;
|
||||
}
|
||||
*/
|
||||
.col2 input[type="text"] {
|
||||
width:180px;
|
||||
}
|
||||
|
||||
|
||||
|
||||
.center {
|
||||
text-align:center;
|
||||
padding:40px 0 10px 0;
|
||||
}
|
||||
|
||||
#addSuccess {
|
||||
height:175px;
|
||||
margin:10px 0;
|
||||
|
||||
}
|
||||
|
||||
#addSuccess h1 {
|
||||
line-height:46px;
|
||||
text-indent:60px;
|
||||
background:url('../img/accepted_48.png') center left no-repeat;
|
||||
margin:0 0 0 0;
|
||||
}
|
||||
|
||||
#addSuccess a {
|
||||
|
||||
}
|
||||
|
||||
#addSuccess span {
|
||||
padding:10px 40px;
|
||||
border:1px solid #69D2E7;
|
||||
color:#F38630;
|
||||
margin:20px auto;
|
||||
font-size:160%;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
.receipt {
|
||||
margin-left: 20px
|
||||
}
|
||||
.receipt th {
|
||||
text-align: right;
|
||||
font-size: 1.3em;
|
||||
}
|
||||
.receipt td {
|
||||
font-size: 1.3em
|
||||
}
|
||||
|
||||
.centered_x {
|
||||
margin-left: auto; margin-right: auto
|
||||
}
|
||||
|
||||
.bordered {
|
||||
padding: 15px;
|
||||
border: 1px solid #ddd;
|
||||
background-color: #ffffff
|
||||
}
|
||||
|
||||
.pad_left {
|
||||
padding: 0 0 0 15px
|
||||
}
|
||||
.pad_right {
|
||||
padding: 0 15px 0 0
|
||||
}
|
||||
|
||||
.tight {
|
||||
line-height:140%;
|
||||
}
|
||||
|
||||
|
||||
p.pancake {
|
||||
text-align:right;
|
||||
font-size:12px;
|
||||
}
|
||||
|
||||
p.pancake a {
|
||||
text-decoration:none;
|
||||
}
|
||||
|
||||
span.small {
|
||||
font-size:10px;
|
||||
}
|
||||
|
||||
span.small a, p.key a {
|
||||
text-decoration:none;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
.paidInv {
|
||||
background:#f1ffbf;
|
||||
border:1px solid #a6d50f;
|
||||
padding:10px 20px 15px;
|
||||
margin-bottom:20px;
|
||||
-moz-border-radius:5px;
|
||||
-webkit-border:5px;
|
||||
border-radius:5px;
|
||||
-moz-box-shadow:1px 1px rgba(255, 255, 255, 0.6) inset;
|
||||
-webkit-box-shadow:1px 1px rgba(255, 255, 255, 0.6) inset;
|
||||
}
|
||||
|
||||
.paidInv span {
|
||||
color:green;
|
||||
font-size:24px;
|
||||
}
|
||||
|
||||
.outstanding {
|
||||
background:#fecdc6;
|
||||
border:1px solid #f45d43;
|
||||
padding:10px 20px 15px;
|
||||
margin-bottom:20px;
|
||||
-moz-border-radius:5px;
|
||||
-webkit-border:5px;
|
||||
border-radius:5px;
|
||||
-moz-box-shadow:1px 1px rgba(255, 255, 255, 0.6) inset;
|
||||
-webkit-box-shadow:1px 1px rgba(255, 255, 255, 0.6) inset;
|
||||
}
|
||||
|
||||
.outstanding span {
|
||||
color:#990000;
|
||||
font-size:24px;
|
||||
}
|
||||
|
||||
|
||||
|
||||
.notification {
|
||||
border-width:1px;
|
||||
border-style:solid;
|
||||
padding:17px 17px 17px 17px;
|
||||
margin-bottom:15px;
|
||||
-moz-border-radius:5px;
|
||||
-webkit-border:5px;
|
||||
border-radius:5px;
|
||||
-moz-box-shadow:1px 1px rgba(255, 255, 255, 0.6) inset;
|
||||
-webkit-box-shadow:1px 1px rgba(255, 255, 255, 0.6) inset;
|
||||
}
|
||||
.notification.success {
|
||||
background:#f1ffbf;
|
||||
border-color:#a6d50f;
|
||||
}
|
||||
.notification.error {
|
||||
background:#fecdc6;
|
||||
border-color:#f45d43;
|
||||
}
|
||||
|
||||
div.notification p {
|
||||
margin: 0 0 3px 0;
|
||||
padding: 0px;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#logo {
|
||||
float:left;
|
||||
position:relative;
|
||||
top:22px;
|
||||
}
|
||||
|
||||
table {
|
||||
border-collapse:separate;
|
||||
border-spacing:0px;
|
||||
}
|
||||
caption, th, td {
|
||||
text-align:left;
|
||||
font-weight:normal;
|
||||
}
|
||||
table, td, th {
|
||||
vertical-align:middle;
|
||||
}
|
||||
td {
|
||||
width:230px;
|
||||
}
|
||||
table {
|
||||
width:100%;
|
||||
}
|
||||
thead td, thead th {
|
||||
background-color:#E6E6E6;
|
||||
}
|
||||
tr td, thead th {
|
||||
color:#404040;
|
||||
padding:8px 0;
|
||||
}
|
||||
tr td.first, thead th.first {
|
||||
border-left:0;
|
||||
}
|
||||
tr td {
|
||||
vertical-align:middle;
|
||||
}
|
||||
thead td, thead th {
|
||||
font-weight:bold;
|
||||
padding:8px;
|
||||
color:#333333;
|
||||
}
|
||||
|
||||
tbody th {
|
||||
padding:0 8px;
|
||||
text-align:left;
|
||||
}
|
||||
td.alt {
|
||||
background: #F5FAFA;
|
||||
}
|
||||
|
||||
.listtable {
|
||||
border: 1px solid #999999;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
.listtable thead td, .listtable thead th {
|
||||
background: #394754 url('../img/nav-bg.gif') repeat-x top;
|
||||
color: #FFFFFF;
|
||||
padding: 5px 8px;
|
||||
}
|
||||
|
||||
.listtable tr td {
|
||||
border: 1px solid #999999;
|
||||
padding: 5px 5px 5px 8px;
|
||||
}
|
||||
|
||||
#nav {
|
||||
line-height: 100%;
|
||||
float:right;
|
||||
margin-top:47px;
|
||||
}
|
||||
#nav li {
|
||||
margin: 0 0 0 10px;
|
||||
float: left;
|
||||
position: relative;
|
||||
list-style: none;
|
||||
}
|
||||
/* main level link */
|
||||
#nav a {
|
||||
background: #394754 url('../img/nav-bg.gif') repeat-x top;
|
||||
font-weight: bold;
|
||||
color: #fff;
|
||||
text-decoration: none;
|
||||
display: block;
|
||||
padding: 8px 15px;
|
||||
margin: 0;
|
||||
border: 1px solid #394754;
|
||||
-webkit-border-radius: 5px 5px 0px 0px;
|
||||
-moz-border-radius: 5px 5px 0px 0px;
|
||||
text-shadow: 0 1px 1px rgba(0, 0, 0, .3);
|
||||
}
|
||||
#nav a:hover {
|
||||
background: #525f6d;
|
||||
text-shadow: 0 1px 0 rgba(255, 255, 255, 1);
|
||||
}
|
||||
/* main level link hover */
|
||||
#nav .current a, #nav li:hover > a {
|
||||
background: #525f6d url('../img/nav-hover.gif') repeat-x top;
|
||||
text-shadow: 0 1px 0 #394754;
|
||||
}
|
||||
/* sub levels link hover */
|
||||
#nav ul li:hover a, #nav li:hover li a {
|
||||
background: none;
|
||||
border: none;
|
||||
color: #666;
|
||||
-webkit-box-shadow: none;
|
||||
-moz-box-shadow: none;
|
||||
}
|
||||
#nav ul a:hover {
|
||||
background: #728496 !important;
|
||||
color: #fff !important;
|
||||
-webkit-border-radius: 0;
|
||||
-moz-border-radius: 0;
|
||||
text-shadow: 0 1px 1px rgba(0, 0, 0, .1);
|
||||
}
|
||||
/* dropdown */
|
||||
#nav li:hover > ul {
|
||||
display: block;
|
||||
}
|
||||
/* level 2 list */
|
||||
#nav ul {
|
||||
display: none;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
width: 120px;
|
||||
position: absolute;
|
||||
top: 30px;
|
||||
left: 0;
|
||||
background: #f2f2f2 url('../img/nav-dd-bg.gif') repeat-x bottom;
|
||||
border: solid 1px #d9d9d9;
|
||||
-webkit-border-radius: 0px 5px 5px 5px;
|
||||
-moz-border-radius: 0px 5px 5px 5px;
|
||||
border-radius: 0px 5px 5px 5px;
|
||||
-webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, .3);
|
||||
-moz-box-shadow: 0 1px 3px rgba(0, 0, 0, .3);
|
||||
box-shadow: 0 1px 3px rgba(0, 0, 0, .3);
|
||||
}
|
||||
#nav ul li {
|
||||
float: none;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
z-index:10;
|
||||
}
|
||||
#nav ul a {
|
||||
font-weight: normal;
|
||||
text-shadow: 0 1px 0 #fff;
|
||||
}
|
||||
/* level 3+ list */
|
||||
#nav ul ul {
|
||||
left: 181px;
|
||||
top: -3px;
|
||||
}
|
||||
/* rounded corners of first and last link */
|
||||
#nav ul li:first-child > a {
|
||||
-webkit-border-top-left-radius: 0;
|
||||
-moz-border-radius-topleft: 0;
|
||||
-webkit-border-top-right-radius: 5px;
|
||||
-moz-border-radius-topright: 5px;
|
||||
}
|
||||
#nav ul li:last-child > a {
|
||||
-webkit-border-bottom-left-radius: 5px;
|
||||
-moz-border-radius-bottomleft: 5px;
|
||||
-webkit-border-bottom-right-radius: 5px;
|
||||
-moz-border-radius-bottomright: 5px;
|
||||
}
|
||||
/* clearfix */
|
||||
#nav:after {
|
||||
content: ".";
|
||||
display: block;
|
||||
clear: both;
|
||||
visibility: hidden;
|
||||
line-height: 0;
|
||||
height: 0;
|
||||
}
|
||||
#nav {
|
||||
display: inline-block;
|
||||
}
|
||||
html[xmlns] #nav {
|
||||
display: block;
|
||||
}
|
||||
* html #nav {
|
||||
height: 1%;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* Forms */
|
||||
form label {
|
||||
padding-top:2px;
|
||||
display: block;
|
||||
color:#444;
|
||||
font-size:14px;
|
||||
font-weight:bold;
|
||||
float:left;
|
||||
width:150px;
|
||||
}
|
||||
form p {
|
||||
margin-bottom:10px;
|
||||
padding-bottom:20px;
|
||||
}
|
||||
form div.row {
|
||||
clear:both;
|
||||
margin-bottom:20px;
|
||||
}
|
||||
form .row label {
|
||||
width:130px;
|
||||
}
|
||||
form input[type="radio"], form input[type="checkbox"] {
|
||||
width:auto;
|
||||
}
|
||||
form .row .checkbox, form .row .radio {
|
||||
width:auto;
|
||||
margin-right:10px;
|
||||
}
|
||||
form .row .checkbox {
|
||||
margin-left:10px;
|
||||
}
|
||||
form input, form textarea, form select {
|
||||
background: #FFFFFF url('../img/input-bg.gif') repeat-x top;
|
||||
-moz-border-radius:4px;
|
||||
-webkit-border-radius:4px;
|
||||
border:1px solid #afafaf;
|
||||
outline:medium none;
|
||||
padding:4px 6px;
|
||||
margin:0;
|
||||
color:#555;
|
||||
}
|
||||
|
||||
form input:focus, form textarea:focus {
|
||||
color: #000;
|
||||
background: #FFFEDE;
|
||||
border: 1px solid #aaa;
|
||||
}
|
||||
|
||||
form input.error {
|
||||
border:1px solid #e17984;
|
||||
background:#f8dbdd;
|
||||
color:#b36069;
|
||||
}
|
||||
form input {
|
||||
/* width:150px; */
|
||||
}
|
||||
form input.small {
|
||||
width:50px;
|
||||
}
|
||||
form input.large {
|
||||
width:250px;
|
||||
}
|
||||
form optgroup {
|
||||
background:#f7f7f7;
|
||||
}
|
||||
fieldset {
|
||||
margin-bottom:15px;
|
||||
}
|
||||
form.nocol label {
|
||||
float:none;
|
||||
margin-bottom:5px;
|
||||
}
|
||||
form.nocol div.row {
|
||||
margin-bottom:15px;
|
||||
}
|
||||
.auto {
|
||||
width:100px;
|
||||
}
|
||||
|
||||
.25 {
|
||||
width:25px!important;
|
||||
}
|
||||
|
||||
.50 {
|
||||
width:50px!important;
|
||||
}
|
||||
|
||||
.75 {
|
||||
width:75px!important;
|
||||
}
|
||||
|
||||
.100 {
|
||||
width:100px;
|
||||
}
|
||||
|
||||
.200 {
|
||||
width:200px;
|
||||
}
|
||||
|
||||
.300 {
|
||||
width:300px;
|
||||
}
|
||||
#add-row {
|
||||
margin:10px 0;
|
||||
}
|
||||
form textarea {
|
||||
margin-bottom:20px;
|
||||
}
|
||||
|
||||
ul#file-inputs,
|
||||
ul#file-inputs li {
|
||||
list-style: none;
|
||||
margin: 0px;
|
||||
padding: 0px;
|
||||
}
|
||||
.file_remove td {
|
||||
text-decoration: line-through;
|
||||
}
|
||||
.btn_remove {
|
||||
color: #C60D22;
|
||||
padding:5px 0px 5px 26px;
|
||||
border:0;
|
||||
font-size:12px;
|
||||
background:url('../img/cross_24.png') center left no-repeat;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.button, button, .button2, .button:visited, .button2:visited {
|
||||
-webkit-border-radius:5px 5px 5px 5px;
|
||||
-o-border-radius:5px 5px 5px 5px;
|
||||
-moz-border-radius:5px 5px 5px 5px;
|
||||
border-radius:5px 5px 5px 5px;
|
||||
|
||||
background: #6abe18;
|
||||
background: -moz-linear-gradient(top, #cbe951, #9dd254 5%, #5eac11);
|
||||
background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #cbe951), color-stop(.03, #9dd254), to(#5eac11));
|
||||
border-color:#53A40C #53A40C #468F0A;
|
||||
border-style:solid;
|
||||
border-width:1px;
|
||||
color:#FFFFFF;
|
||||
display:inline-block;
|
||||
font-family:Arial,Helvetica,sans-serif;
|
||||
font-size:14px;
|
||||
font-weight:bold;
|
||||
padding:9px 18px;
|
||||
text-align:center;
|
||||
text-decoration:none;
|
||||
text-shadow:0 1px 1px #316903;
|
||||
width:auto;
|
||||
}
|
||||
.button:hover, button:hover, .button2:hover {
|
||||
background: #61b212;
|
||||
background: -moz-linear-gradient(top, #cbe951, #98ca53 5%, #55a10b);
|
||||
background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #cbe951), color-stop(.03, #98ca53), to(#55a10b));
|
||||
border-bottom:1px solid #468F0A;
|
||||
color:#FFFFFF;
|
||||
}
|
||||
.button:focus, button:focus, .button2:focus {
|
||||
-moz-box-shadow:0 2px 5px #346C13 inset, 0 1px 0 #D0E0C7;
|
||||
background: #61b212;
|
||||
background: -moz-linear-gradient(top, #cbe951, #98ca53 5%, #55a10b);
|
||||
background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #cbe951), color-stop(.03, #98ca53), to(#55a10b));
|
||||
border:medium none;
|
||||
color:#FFFFFF;
|
||||
padding:10px 19px;
|
||||
text-shadow:0 -1px 1px #316903;
|
||||
}
|
||||
|
||||
|
||||
.btn_grey{
|
||||
|
||||
/* GENERAL */
|
||||
padding:5px 10px;
|
||||
text-decoration: none;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
font-size: 11px;
|
||||
font-weight: bold;
|
||||
text-align: center;
|
||||
display:inline-block;
|
||||
margin-top:-10px;
|
||||
|
||||
|
||||
/* BACKGROUND GRADIENTS */
|
||||
background: #E6E6E6;
|
||||
background: -moz-linear-gradient(top, #FFF, #f5f5f5 5%, #e2e2e2 100%);
|
||||
background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #FFF), color-stop(.03, #f5f5f5), to(#e2e2e2));
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#f5f5f5', EndColorStr='#e2e2e2'); /* IE6,IE7 only */
|
||||
-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorStr='#f5f5f5', EndColorStr='#e2e2e2')"; /* IE8 only */
|
||||
|
||||
/* BORDER RADIUS */
|
||||
-moz-border-radius: 4px;
|
||||
-webkit-border-radius: 4px;
|
||||
border-radius: 4px;
|
||||
|
||||
/* BORDERS */
|
||||
border:1px solid #d0d0d0;
|
||||
border-bottom:1px solid #b5b5b5;
|
||||
|
||||
/* TEXT COLOR & SHADOW */
|
||||
color:#5e5e5e;
|
||||
text-shadow: 1px 1px 1px #FFF;
|
||||
}
|
||||
|
||||
.btn_grey:hover {
|
||||
|
||||
/* BACKGROUND GRADIENTS */
|
||||
background: #EEE;
|
||||
background: -moz-linear-gradient(top, #FFF, #e5e5e5 100%);
|
||||
background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #FFF), to(#e5e5e5));
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#FFFFFF', EndColorStr='#e5e5e5'); /* IE6,IE7 only */
|
||||
-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorStr='#FFFFFF', EndColorStr='#e5e5e5')"; /* IE8 only */
|
||||
}
|
||||
|
||||
.btn_grey:focus {
|
||||
|
||||
/* GENERAL */
|
||||
padding:5px 10px 4px 10px;
|
||||
|
||||
/* TEXT COLOR & SHADOW */
|
||||
color:#FFF;
|
||||
text-shadow: -1px -1px 1px #888;
|
||||
|
||||
/* BORDERS */
|
||||
border:none;
|
||||
|
||||
/* BACKGROUND GRADIENTS */
|
||||
background:#999;
|
||||
background: -moz-linear-gradient(top, #999, #777 5%, #AFAFAF);
|
||||
background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #999), color-stop(.05, #777), to(#AFAFAF));
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#777777', EndColorStr='#AFAFAF'); /* IE6,IE7 only */
|
||||
-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorStr='#777777', EndColorStr='#AFAFAF')"; /* IE8 only */
|
||||
|
||||
/* INNER SHADOW & OUTER SHADOW */
|
||||
box-shadow: inset 0px 2px 5px #444, 0 1px 0px #DDD;
|
||||
-webkit-box-shadow: inset 0px 2px 5px #444, 0 1px 0px #DDD;
|
||||
-moz-box-shadow: inset 0px 2px 7px #444, 0 1px 0px #DDD;
|
||||
}
|
||||
|
||||
/* ========================== */
|
||||
/* = Big notification boxes = */
|
||||
/* ========================== */
|
||||
|
||||
.no_object_notification {
|
||||
min-height:800px;
|
||||
border:8px solid #ccc;
|
||||
background:#f2f2f2 url('../../../third_party/themes/admin/pancake/img/good_stack.png') 650px 560px no-repeat!important;
|
||||
margin:20px 0 20px 40px;
|
||||
overflow:hidden;
|
||||
}
|
||||
|
||||
.super-warning {
|
||||
border:8px solid #DF0B24!important;
|
||||
}
|
||||
|
||||
span.bad-news {
|
||||
color:red;
|
||||
display:block;
|
||||
clear:both;
|
||||
}
|
||||
|
||||
.no_object_notification h2, .no_object_notification h4 {
|
||||
color:#666;
|
||||
font-size:36px!important;
|
||||
margin: 20px 0 0 0px!important;
|
||||
font-family: 'Paytone One', arial, serif!important;
|
||||
text-shadow:0 2px #fff!important;
|
||||
}
|
||||
|
||||
.no_object_notification p {
|
||||
margin:20px 0 0 0px;
|
||||
font-size:18px;
|
||||
}
|
||||
|
||||
.no_object_notification p.call_to_action {
|
||||
clear:both;
|
||||
width:450px;
|
||||
}
|
||||
|
||||
|
||||
.no_object_notification p.call_to_action a.blue-btn {
|
||||
float:right;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/* ==================== */
|
||||
/* = Installer Styles = */
|
||||
/* ==================== */
|
||||
|
||||
ul.requirements {
|
||||
list-style:none;
|
||||
margin:20px 0 20px 20px ;
|
||||
}
|
||||
|
||||
ul.requirements {
|
||||
/*color:#4ECDC4;*/
|
||||
color:#999;
|
||||
}
|
||||
|
||||
ul.requirements li {
|
||||
height:26px;
|
||||
padding:2px 0 0 30px;
|
||||
background:url('../../../third_party/themes/pancake/img/ui_icons/arrow_right_small.png') top left no-repeat;
|
||||
}
|
||||
|
||||
.success {
|
||||
color:#6abe18;
|
||||
}
|
||||
|
||||
.col1 {
|
||||
width:140px;
|
||||
text-align:right;
|
||||
padding-right:4px;
|
||||
}
|
||||
|
||||
.col3 {
|
||||
font-size:12px;
|
||||
color:#69D2E7;
|
||||
}
|
||||
|
||||
.pass {
|
||||
color: #3EA224;
|
||||
font-weight: bold;
|
||||
font-size: 200%;
|
||||
}
|
||||
.fail {
|
||||
color: #FF3000;
|
||||
font-weight: bold;
|
||||
font-size: 200%;
|
||||
}
|
||||
|
||||
|
||||
.focus {
|
||||
background:#C5D4D9;
|
||||
}
|
||||
|
||||
hr {
|
||||
margin-top: 20px;
|
||||
margin-left: 0px;
|
||||
border: 0;
|
||||
border-bottom: 1px solid #ccc;
|
||||
}
|
||||
|
||||
.checks-table {
|
||||
margin-top: 30px;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.checks-table td {
|
||||
background-color: rgba(242, 242, 242, 0.75);
|
||||
}
|
||||
|
||||
p.notification {
|
||||
-webkit-box-sizing: border-box;
|
||||
-moz-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
code {
|
||||
white-space: pre;
|
||||
font-family: monospace;
|
||||
background: #ddd;
|
||||
padding: 4px;
|
||||
border-radius: 4px;
|
||||
}
|
||||
BIN
installer/assets/img/good_stack.png
Executable file
BIN
installer/assets/img/good_stack.png
Executable file
Binary file not shown.
|
After Width: | Height: | Size: 118 KiB |
BIN
installer/assets/img/logo.png
Executable file
BIN
installer/assets/img/logo.png
Executable file
Binary file not shown.
|
After Width: | Height: | Size: 23 KiB |
BIN
installer/assets/img/nav-bg.gif
Executable file
BIN
installer/assets/img/nav-bg.gif
Executable file
Binary file not shown.
|
After Width: | Height: | Size: 264 B |
4
installer/assets/js/jquery-1.11.2.min.js
vendored
Executable file
4
installer/assets/js/jquery-1.11.2.min.js
vendored
Executable file
File diff suppressed because one or more lines are too long
10
installer/assets/js/main.js
Executable file
10
installer/assets/js/main.js
Executable file
@@ -0,0 +1,10 @@
|
||||
$('input, select, textarea').bind({
|
||||
focusin: function () {
|
||||
var wrapper = $(this).closest('tr');
|
||||
$(wrapper).addClass('focus');
|
||||
},
|
||||
focusout: function () {
|
||||
var wrapper = $(this).closest('tr');
|
||||
$(wrapper).removeClass('focus');
|
||||
}
|
||||
});
|
||||
103
installer/config/autoload.php
Executable file
103
installer/config/autoload.php
Executable file
@@ -0,0 +1,103 @@
|
||||
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
|
||||
/*
|
||||
| -------------------------------------------------------------------
|
||||
| AUTO-LOADER
|
||||
| -------------------------------------------------------------------
|
||||
| This file specifies which systems should be loaded by default.
|
||||
|
|
||||
| In order to keep the framework as light-weight as possible only the
|
||||
| absolute minimal resources are loaded by default. For example,
|
||||
| the database is not connected to automatically since no assumption
|
||||
| is made regarding whether you intend to use it. This file lets
|
||||
| you globally define which systems you would like loaded with every
|
||||
| request.
|
||||
|
|
||||
| -------------------------------------------------------------------
|
||||
| Instructions
|
||||
| -------------------------------------------------------------------
|
||||
|
|
||||
| These are the things you can load automatically:
|
||||
|
|
||||
| 1. Libraries
|
||||
| 2. Helper files
|
||||
| 3. Custom config files
|
||||
| 4. Language files
|
||||
| 5. Models
|
||||
|
|
||||
*/
|
||||
|
||||
/*
|
||||
| -------------------------------------------------------------------
|
||||
| Auto-load Libraries
|
||||
| -------------------------------------------------------------------
|
||||
| These are the classes located in the system/libraries folder
|
||||
| or in your application/libraries folder.
|
||||
|
|
||||
| Prototype:
|
||||
|
|
||||
| $autoload['libraries'] = array('database', 'session', 'xmlrpc');
|
||||
*/
|
||||
|
||||
$autoload['libraries'] = array('session');
|
||||
|
||||
|
||||
/*
|
||||
| -------------------------------------------------------------------
|
||||
| Auto-load Helper Files
|
||||
| -------------------------------------------------------------------
|
||||
| Prototype:
|
||||
|
|
||||
| $autoload['helper'] = array('url', 'file');
|
||||
*/
|
||||
|
||||
$autoload['helper'] = array('url', 'form', 'language');
|
||||
|
||||
|
||||
/*
|
||||
| -------------------------------------------------------------------
|
||||
| Auto-load Config files
|
||||
| -------------------------------------------------------------------
|
||||
| Prototype:
|
||||
|
|
||||
| $autoload['config'] = array('config1', 'config2');
|
||||
|
|
||||
| NOTE: This item is intended for use ONLY if you have created custom
|
||||
| config files. Otherwise, leave it blank.
|
||||
|
|
||||
*/
|
||||
|
||||
$autoload['config'] = array();
|
||||
|
||||
|
||||
/*
|
||||
| -------------------------------------------------------------------
|
||||
| Auto-load Language files
|
||||
| -------------------------------------------------------------------
|
||||
| Prototype:
|
||||
|
|
||||
| $autoload['language'] = array('lang1', 'lang2');
|
||||
|
|
||||
| NOTE: Do not include the "_lang" part of your file. For example
|
||||
| "codeigniter_lang.php" would be referenced as array('codeigniter');
|
||||
|
|
||||
*/
|
||||
|
||||
$autoload['language'] = array();
|
||||
|
||||
|
||||
/*
|
||||
| -------------------------------------------------------------------
|
||||
| Auto-load Models
|
||||
| -------------------------------------------------------------------
|
||||
| Prototype:
|
||||
|
|
||||
| $autoload['model'] = array('model1', 'model2');
|
||||
|
|
||||
*/
|
||||
|
||||
$autoload['model'] = array();
|
||||
|
||||
|
||||
|
||||
/* End of file autoload.php */
|
||||
/* Location: ./application/config/autoload.php */
|
||||
3
installer/config/config.php
Executable file
3
installer/config/config.php
Executable file
@@ -0,0 +1,3 @@
|
||||
<?php include FCPATH.'system/pancake/config/config.php';
|
||||
|
||||
$config['sess_use_database'] = FALSE;
|
||||
1
installer/config/constants.php
Executable file
1
installer/config/constants.php
Executable file
@@ -0,0 +1 @@
|
||||
<?php include FCPATH.'system/pancake/config/constants.php';
|
||||
62
installer/config/database.php
Executable file
62
installer/config/database.php
Executable file
@@ -0,0 +1,62 @@
|
||||
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
|
||||
/*
|
||||
| -------------------------------------------------------------------
|
||||
| DATABASE CONNECTIVITY SETTINGS
|
||||
| -------------------------------------------------------------------
|
||||
| This file will contain the settings needed to access your database.
|
||||
|
|
||||
| For complete instructions please consult the "Database Connection"
|
||||
| page of the User Guide.
|
||||
|
|
||||
| -------------------------------------------------------------------
|
||||
| EXPLANATION OF VARIABLES
|
||||
| -------------------------------------------------------------------
|
||||
|
|
||||
| ['hostname'] The hostname of your database server.
|
||||
| ['username'] The username used to connect to the database
|
||||
| ['password'] The password used to connect to the database
|
||||
| ['database'] The name of the database you want to connect to
|
||||
| ['dbdriver'] The database type. ie: mysql. Currently supported:
|
||||
mysql, mysqli, postgre, odbc, mssql, sqlite, oci8
|
||||
| ['dbprefix'] You can add an optional prefix, which will be added
|
||||
| to the table name when using the Active Record class
|
||||
| ['pconnect'] TRUE/FALSE - Whether to use a persistent connection
|
||||
| ['db_debug'] TRUE/FALSE - Whether database errors should be displayed.
|
||||
| ['cache_on'] TRUE/FALSE - Enables/disables query caching
|
||||
| ['cachedir'] The path to the folder where cache files should be stored
|
||||
| ['char_set'] The character set used in communicating with the database
|
||||
| ['dbcollat'] The character collation used in communicating with the database
|
||||
| ['swap_pre'] A default table prefix that should be swapped with the dbprefix
|
||||
| ['autoinit'] Whether or not to automatically initialize the database.
|
||||
| ['stricton'] TRUE/FALSE - forces "Strict Mode" connections
|
||||
| - good for ensuring strict SQL while developing
|
||||
|
|
||||
| The $active_group variable lets you choose which connection group to
|
||||
| make active. By default there is only one group (the "default" group).
|
||||
|
|
||||
| The $active_record variables lets you determine whether or not to load
|
||||
| the active record class
|
||||
*/
|
||||
|
||||
$active_group = "default";
|
||||
$active_record = TRUE;
|
||||
|
||||
$db['default']['hostname'] = "localhost";
|
||||
$db['default']['username'] = "";
|
||||
$db['default']['password'] = "";
|
||||
$db['default']['database'] = "";
|
||||
$db['default']['dbdriver'] = "mysql";
|
||||
$db['default']['dbprefix'] = "";
|
||||
$db['default']['pconnect'] = TRUE;
|
||||
$db['default']['db_debug'] = TRUE;
|
||||
$db['default']['cache_on'] = FALSE;
|
||||
$db['default']['cachedir'] = "";
|
||||
$db['default']['char_set'] = "utf8";
|
||||
$db['default']['dbcollat'] = "utf8_general_ci";
|
||||
$db['default']['swap_pre'] = "";
|
||||
$db['default']['autoinit'] = TRUE;
|
||||
$db['default']['stricton'] = FALSE;
|
||||
|
||||
|
||||
/* End of file database.php */
|
||||
/* Location: ./application/config/database.php */
|
||||
15
installer/config/doctypes.php
Executable file
15
installer/config/doctypes.php
Executable file
@@ -0,0 +1,15 @@
|
||||
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
|
||||
|
||||
$_doctypes = array(
|
||||
'xhtml11' => '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">',
|
||||
'xhtml1-strict' => '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">',
|
||||
'xhtml1-trans' => '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">',
|
||||
'xhtml1-frame' => '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">',
|
||||
'html5' => '<!DOCTYPE html>',
|
||||
'html4-strict' => '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">',
|
||||
'html4-trans' => '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">',
|
||||
'html4-frame' => '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">'
|
||||
);
|
||||
|
||||
/* End of file doctypes.php */
|
||||
/* Location: ./application/config/doctypes.php */
|
||||
64
installer/config/foreign_chars.php
Executable file
64
installer/config/foreign_chars.php
Executable file
@@ -0,0 +1,64 @@
|
||||
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
|
||||
/*
|
||||
| -------------------------------------------------------------------
|
||||
| Foreign Characters
|
||||
| -------------------------------------------------------------------
|
||||
| This file contains an array of foreign characters for transliteration
|
||||
| conversion used by the Text helper
|
||||
|
|
||||
*/
|
||||
$foreign_characters = array('223' => "ss", // ß
|
||||
'224' => "a",
|
||||
'225' => "a",
|
||||
'226' => "a",
|
||||
'229' => "a",
|
||||
'227' => "ae",
|
||||
'230' => "ae",
|
||||
'228' => "ae",
|
||||
'231' => "c",
|
||||
'232' => "e", // è
|
||||
'233' => "e", // é
|
||||
'234' => "e", // ê
|
||||
'235' => "e", // ë
|
||||
'236' => "i",
|
||||
'237' => "i",
|
||||
'238' => "i",
|
||||
'239' => "i",
|
||||
'241' => "n",
|
||||
'242' => "o",
|
||||
'243' => "o",
|
||||
'244' => "o",
|
||||
'245' => "o",
|
||||
'246' => "oe", // ö
|
||||
'249' => "u",
|
||||
'250' => "u",
|
||||
'251' => "u",
|
||||
'252' => "ue", // ü
|
||||
'255' => "y",
|
||||
'257' => "aa",
|
||||
'269' => "ch",
|
||||
'275' => "ee",
|
||||
'291' => "gj",
|
||||
'299' => "ii",
|
||||
'311' => "kj",
|
||||
'316' => "lj",
|
||||
'326' => "nj",
|
||||
'353' => "sh",
|
||||
'363' => "uu",
|
||||
'382' => "zh",
|
||||
'256' => "aa",
|
||||
'268' => "ch",
|
||||
'274' => "ee",
|
||||
'290' => "gj",
|
||||
'298' => "ii",
|
||||
'310' => "kj",
|
||||
'315' => "lj",
|
||||
'325' => "nj",
|
||||
'352' => "sh",
|
||||
'362' => "uu",
|
||||
'381' => "zh",
|
||||
);
|
||||
|
||||
|
||||
/* End of file foreign_chars.php */
|
||||
/* Location: ./application/config/foreign_chars.php */
|
||||
16
installer/config/hooks.php
Executable file
16
installer/config/hooks.php
Executable file
@@ -0,0 +1,16 @@
|
||||
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
|
||||
/*
|
||||
| -------------------------------------------------------------------------
|
||||
| Hooks
|
||||
| -------------------------------------------------------------------------
|
||||
| This file lets you define "hooks" to extend CI without hacking the core
|
||||
| files. Please see the user guide for info:
|
||||
|
|
||||
| http://codeigniter.com/user_guide/general/hooks.html
|
||||
|
|
||||
*/
|
||||
|
||||
|
||||
|
||||
/* End of file hooks.php */
|
||||
/* Location: ./application/config/hooks.php */
|
||||
10
installer/config/index.html
Executable file
10
installer/config/index.html
Executable file
@@ -0,0 +1,10 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>403 Forbidden</title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<p>Directory access is forbidden.</p>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
11
installer/config/license.php
Executable file
11
installer/config/license.php
Executable file
@@ -0,0 +1,11 @@
|
||||
<?php
|
||||
|
||||
if (!defined('BASEPATH')) {
|
||||
exit('No direct script access allowed');
|
||||
}
|
||||
|
||||
$config = [];
|
||||
$config["first_name"] = "Timothy";
|
||||
$config["last_name"] = "Bendt";
|
||||
$config["license_key"] = "PAN-B144B7ZGZ1J8QPMK";
|
||||
$config["email"] = "sirtimbly@gmail.com";
|
||||
105
installer/config/mimes.php
Executable file
105
installer/config/mimes.php
Executable file
@@ -0,0 +1,105 @@
|
||||
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
|
||||
/*
|
||||
| -------------------------------------------------------------------
|
||||
| MIME TYPES
|
||||
| -------------------------------------------------------------------
|
||||
| This file contains an array of mime types. It is used by the
|
||||
| Upload class to help identify allowed file types.
|
||||
|
|
||||
*/
|
||||
|
||||
$mimes = array( 'hqx' => 'application/mac-binhex40',
|
||||
'cpt' => 'application/mac-compactpro',
|
||||
'csv' => array('text/x-comma-separated-values', 'text/comma-separated-values', 'application/octet-stream', 'application/vnd.ms-excel', 'text/csv', 'application/csv', 'application/excel', 'application/vnd.msexcel'),
|
||||
'bin' => 'application/macbinary',
|
||||
'dms' => 'application/octet-stream',
|
||||
'lha' => 'application/octet-stream',
|
||||
'lzh' => 'application/octet-stream',
|
||||
'exe' => array('application/octet-stream', 'application/x-msdownload'),
|
||||
'class' => 'application/octet-stream',
|
||||
'psd' => 'application/x-photoshop',
|
||||
'so' => 'application/octet-stream',
|
||||
'sea' => 'application/octet-stream',
|
||||
'dll' => 'application/octet-stream',
|
||||
'oda' => 'application/oda',
|
||||
'pdf' => array('application/pdf', 'application/x-download'),
|
||||
'ai' => 'application/postscript',
|
||||
'eps' => 'application/postscript',
|
||||
'ps' => 'application/postscript',
|
||||
'smi' => 'application/smil',
|
||||
'smil' => 'application/smil',
|
||||
'mif' => 'application/vnd.mif',
|
||||
'xls' => array('application/excel', 'application/vnd.ms-excel', 'application/msexcel'),
|
||||
'ppt' => array('application/powerpoint', 'application/vnd.ms-powerpoint'),
|
||||
'wbxml' => 'application/wbxml',
|
||||
'wmlc' => 'application/wmlc',
|
||||
'dcr' => 'application/x-director',
|
||||
'dir' => 'application/x-director',
|
||||
'dxr' => 'application/x-director',
|
||||
'dvi' => 'application/x-dvi',
|
||||
'gtar' => 'application/x-gtar',
|
||||
'gz' => 'application/x-gzip',
|
||||
'php' => 'application/x-httpd-php',
|
||||
'php4' => 'application/x-httpd-php',
|
||||
'php3' => 'application/x-httpd-php',
|
||||
'phtml' => 'application/x-httpd-php',
|
||||
'phps' => 'application/x-httpd-php-source',
|
||||
'js' => 'application/x-javascript',
|
||||
'swf' => 'application/x-shockwave-flash',
|
||||
'sit' => 'application/x-stuffit',
|
||||
'tar' => 'application/x-tar',
|
||||
'tgz' => array('application/x-tar', 'application/x-gzip-compressed'),
|
||||
'xhtml' => 'application/xhtml+xml',
|
||||
'xht' => 'application/xhtml+xml',
|
||||
'zip' => array('application/x-zip', 'application/zip', 'application/x-zip-compressed'),
|
||||
'mid' => 'audio/midi',
|
||||
'midi' => 'audio/midi',
|
||||
'mpga' => 'audio/mpeg',
|
||||
'mp2' => 'audio/mpeg',
|
||||
'mp3' => array('audio/mpeg', 'audio/mpg'),
|
||||
'aif' => 'audio/x-aiff',
|
||||
'aiff' => 'audio/x-aiff',
|
||||
'aifc' => 'audio/x-aiff',
|
||||
'ram' => 'audio/x-pn-realaudio',
|
||||
'rm' => 'audio/x-pn-realaudio',
|
||||
'rpm' => 'audio/x-pn-realaudio-plugin',
|
||||
'ra' => 'audio/x-realaudio',
|
||||
'rv' => 'video/vnd.rn-realvideo',
|
||||
'wav' => 'audio/x-wav',
|
||||
'bmp' => 'image/bmp',
|
||||
'gif' => 'image/gif',
|
||||
'jpeg' => array('image/jpeg', 'image/pjpeg'),
|
||||
'jpg' => array('image/jpeg', 'image/pjpeg'),
|
||||
'jpe' => array('image/jpeg', 'image/pjpeg'),
|
||||
'png' => array('image/png', 'image/x-png'),
|
||||
'tiff' => 'image/tiff',
|
||||
'tif' => 'image/tiff',
|
||||
'css' => 'text/css',
|
||||
'html' => 'text/html',
|
||||
'htm' => 'text/html',
|
||||
'shtml' => 'text/html',
|
||||
'txt' => 'text/plain',
|
||||
'text' => 'text/plain',
|
||||
'log' => array('text/plain', 'text/x-log'),
|
||||
'rtx' => 'text/richtext',
|
||||
'rtf' => 'text/rtf',
|
||||
'xml' => 'text/xml',
|
||||
'xsl' => 'text/xml',
|
||||
'mpeg' => 'video/mpeg',
|
||||
'mpg' => 'video/mpeg',
|
||||
'mpe' => 'video/mpeg',
|
||||
'qt' => 'video/quicktime',
|
||||
'mov' => 'video/quicktime',
|
||||
'avi' => 'video/x-msvideo',
|
||||
'movie' => 'video/x-sgi-movie',
|
||||
'doc' => 'application/msword',
|
||||
'docx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
|
||||
'xlsx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
|
||||
'word' => array('application/msword', 'application/octet-stream'),
|
||||
'xl' => 'application/excel',
|
||||
'eml' => 'message/rfc822'
|
||||
);
|
||||
|
||||
|
||||
/* End of file mimes.php */
|
||||
/* Location: ./application/config/mimes.php */
|
||||
17
installer/config/profiler.php
Executable file
17
installer/config/profiler.php
Executable file
@@ -0,0 +1,17 @@
|
||||
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
|
||||
/*
|
||||
| -------------------------------------------------------------------------
|
||||
| Profiler Sections
|
||||
| -------------------------------------------------------------------------
|
||||
| This file lets you determine whether or not various sections of Profiler
|
||||
| data are displayed when the Profiler is enabled.
|
||||
| Please see the user guide for info:
|
||||
|
|
||||
| http://codeigniter.com/user_guide/general/profiling.html
|
||||
|
|
||||
*/
|
||||
|
||||
|
||||
|
||||
/* End of file profiler.php */
|
||||
/* Location: ./application/config/profiler.php */
|
||||
43
installer/config/routes.php
Executable file
43
installer/config/routes.php
Executable file
@@ -0,0 +1,43 @@
|
||||
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
|
||||
/*
|
||||
| -------------------------------------------------------------------------
|
||||
| URI ROUTING
|
||||
| -------------------------------------------------------------------------
|
||||
| This file lets you re-map URI requests to specific controller functions.
|
||||
|
|
||||
| Typically there is a one-to-one relationship between a URL string
|
||||
| and its corresponding controller class/method. The segments in a
|
||||
| URL normally follow this pattern:
|
||||
|
|
||||
| example.com/class/method/id/
|
||||
|
|
||||
| In some instances, however, you may want to remap this relationship
|
||||
| so that a different class/function is called than the one
|
||||
| corresponding to the URL.
|
||||
|
|
||||
| Please see the user guide for complete details:
|
||||
|
|
||||
| http://codeigniter.com/user_guide/general/routing.html
|
||||
|
|
||||
| -------------------------------------------------------------------------
|
||||
| RESERVED ROUTES
|
||||
| -------------------------------------------------------------------------
|
||||
|
|
||||
| There is one reserved routes:
|
||||
|
|
||||
| $route['default_controller'] = 'welcome';
|
||||
|
|
||||
| This route indicates which controller class should be loaded if the
|
||||
| URI contains no data. In the above example, the "welcome" class
|
||||
| would be loaded.
|
||||
*/
|
||||
|
||||
$route['default_controller'] = "wizard";
|
||||
|
||||
$route['wizard(:any)'] = "wizard$1";
|
||||
|
||||
$route['(:any)'] = "wizard/error";
|
||||
|
||||
|
||||
/* End of file routes.php */
|
||||
/* Location: ./application/config/routes.php */
|
||||
66
installer/config/smileys.php
Executable file
66
installer/config/smileys.php
Executable file
@@ -0,0 +1,66 @@
|
||||
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
|
||||
/*
|
||||
| -------------------------------------------------------------------
|
||||
| SMILEYS
|
||||
| -------------------------------------------------------------------
|
||||
| This file contains an array of smileys for use with the emoticon helper.
|
||||
| Individual images can be used to replace multiple simileys. For example:
|
||||
| :-) and :) use the same image replacement.
|
||||
|
|
||||
| Please see user guide for more info:
|
||||
| http://codeigniter.com/user_guide/helpers/smiley_helper.html
|
||||
|
|
||||
*/
|
||||
|
||||
$smileys = array(
|
||||
|
||||
// smiley image name width height alt
|
||||
|
||||
':-)' => array('grin.gif', '19', '19', 'grin'),
|
||||
':lol:' => array('lol.gif', '19', '19', 'LOL'),
|
||||
':cheese:' => array('cheese.gif', '19', '19', 'cheese'),
|
||||
':)' => array('smile.gif', '19', '19', 'smile'),
|
||||
';-)' => array('wink.gif', '19', '19', 'wink'),
|
||||
';)' => array('wink.gif', '19', '19', 'wink'),
|
||||
':smirk:' => array('smirk.gif', '19', '19', 'smirk'),
|
||||
':roll:' => array('rolleyes.gif', '19', '19', 'rolleyes'),
|
||||
':-S' => array('confused.gif', '19', '19', 'confused'),
|
||||
':wow:' => array('surprise.gif', '19', '19', 'surprised'),
|
||||
':bug:' => array('bigsurprise.gif', '19', '19', 'big surprise'),
|
||||
':-P' => array('tongue_laugh.gif', '19', '19', 'tongue laugh'),
|
||||
'%-P' => array('tongue_rolleye.gif', '19', '19', 'tongue rolleye'),
|
||||
';-P' => array('tongue_wink.gif', '19', '19', 'tongue wink'),
|
||||
':P' => array('raspberry.gif', '19', '19', 'raspberry'),
|
||||
':blank:' => array('blank.gif', '19', '19', 'blank stare'),
|
||||
':long:' => array('longface.gif', '19', '19', 'long face'),
|
||||
':ohh:' => array('ohh.gif', '19', '19', 'ohh'),
|
||||
':grrr:' => array('grrr.gif', '19', '19', 'grrr'),
|
||||
':gulp:' => array('gulp.gif', '19', '19', 'gulp'),
|
||||
'8-/' => array('ohoh.gif', '19', '19', 'oh oh'),
|
||||
':down:' => array('downer.gif', '19', '19', 'downer'),
|
||||
':red:' => array('embarrassed.gif', '19', '19', 'red face'),
|
||||
':sick:' => array('sick.gif', '19', '19', 'sick'),
|
||||
':shut:' => array('shuteye.gif', '19', '19', 'shut eye'),
|
||||
':-/' => array('hmm.gif', '19', '19', 'hmmm'),
|
||||
'>:(' => array('mad.gif', '19', '19', 'mad'),
|
||||
':mad:' => array('mad.gif', '19', '19', 'mad'),
|
||||
'>:-(' => array('angry.gif', '19', '19', 'angry'),
|
||||
':angry:' => array('angry.gif', '19', '19', 'angry'),
|
||||
':zip:' => array('zip.gif', '19', '19', 'zipper'),
|
||||
':kiss:' => array('kiss.gif', '19', '19', 'kiss'),
|
||||
':ahhh:' => array('shock.gif', '19', '19', 'shock'),
|
||||
':coolsmile:' => array('shade_smile.gif', '19', '19', 'cool smile'),
|
||||
':coolsmirk:' => array('shade_smirk.gif', '19', '19', 'cool smirk'),
|
||||
':coolgrin:' => array('shade_grin.gif', '19', '19', 'cool grin'),
|
||||
':coolhmm:' => array('shade_hmm.gif', '19', '19', 'cool hmm'),
|
||||
':coolmad:' => array('shade_mad.gif', '19', '19', 'cool mad'),
|
||||
':coolcheese:' => array('shade_cheese.gif', '19', '19', 'cool cheese'),
|
||||
':vampire:' => array('vampire.gif', '19', '19', 'vampire'),
|
||||
':snake:' => array('snake.gif', '19', '19', 'snake'),
|
||||
':exclaim:' => array('exclaim.gif', '19', '19', 'excaim'),
|
||||
':question:' => array('question.gif', '19', '19', 'question') // no comma after last item
|
||||
|
||||
);
|
||||
|
||||
/* End of file smileys.php */
|
||||
/* Location: ./application/config/smileys.php */
|
||||
177
installer/config/user_agents.php
Executable file
177
installer/config/user_agents.php
Executable file
@@ -0,0 +1,177 @@
|
||||
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
|
||||
/*
|
||||
| -------------------------------------------------------------------
|
||||
| USER AGENT TYPES
|
||||
| -------------------------------------------------------------------
|
||||
| This file contains four arrays of user agent data. It is used by the
|
||||
| User Agent Class to help identify browser, platform, robot, and
|
||||
| mobile device data. The array keys are used to identify the device
|
||||
| and the array values are used to set the actual name of the item.
|
||||
|
|
||||
*/
|
||||
|
||||
$platforms = array (
|
||||
'windows nt 6.0' => 'Windows Longhorn',
|
||||
'windows nt 5.2' => 'Windows 2003',
|
||||
'windows nt 5.0' => 'Windows 2000',
|
||||
'windows nt 5.1' => 'Windows XP',
|
||||
'windows nt 4.0' => 'Windows NT 4.0',
|
||||
'winnt4.0' => 'Windows NT 4.0',
|
||||
'winnt 4.0' => 'Windows NT',
|
||||
'winnt' => 'Windows NT',
|
||||
'windows 98' => 'Windows 98',
|
||||
'win98' => 'Windows 98',
|
||||
'windows 95' => 'Windows 95',
|
||||
'win95' => 'Windows 95',
|
||||
'windows' => 'Unknown Windows OS',
|
||||
'os x' => 'Mac OS X',
|
||||
'ppc mac' => 'Power PC Mac',
|
||||
'freebsd' => 'FreeBSD',
|
||||
'ppc' => 'Macintosh',
|
||||
'linux' => 'Linux',
|
||||
'debian' => 'Debian',
|
||||
'sunos' => 'Sun Solaris',
|
||||
'beos' => 'BeOS',
|
||||
'apachebench' => 'ApacheBench',
|
||||
'aix' => 'AIX',
|
||||
'irix' => 'Irix',
|
||||
'osf' => 'DEC OSF',
|
||||
'hp-ux' => 'HP-UX',
|
||||
'netbsd' => 'NetBSD',
|
||||
'bsdi' => 'BSDi',
|
||||
'openbsd' => 'OpenBSD',
|
||||
'gnu' => 'GNU/Linux',
|
||||
'unix' => 'Unknown Unix OS'
|
||||
);
|
||||
|
||||
|
||||
// The order of this array should NOT be changed. Many browsers return
|
||||
// multiple browser types so we want to identify the sub-type first.
|
||||
$browsers = array(
|
||||
'Flock' => 'Flock',
|
||||
'Chrome' => 'Chrome',
|
||||
'Opera' => 'Opera',
|
||||
'MSIE' => 'Internet Explorer',
|
||||
'Internet Explorer' => 'Internet Explorer',
|
||||
'Shiira' => 'Shiira',
|
||||
'Firefox' => 'Firefox',
|
||||
'Chimera' => 'Chimera',
|
||||
'Phoenix' => 'Phoenix',
|
||||
'Firebird' => 'Firebird',
|
||||
'Camino' => 'Camino',
|
||||
'Netscape' => 'Netscape',
|
||||
'OmniWeb' => 'OmniWeb',
|
||||
'Safari' => 'Safari',
|
||||
'Mozilla' => 'Mozilla',
|
||||
'Konqueror' => 'Konqueror',
|
||||
'icab' => 'iCab',
|
||||
'Lynx' => 'Lynx',
|
||||
'Links' => 'Links',
|
||||
'hotjava' => 'HotJava',
|
||||
'amaya' => 'Amaya',
|
||||
'IBrowse' => 'IBrowse'
|
||||
);
|
||||
|
||||
$mobiles = array(
|
||||
// legacy array, old values commented out
|
||||
'mobileexplorer' => 'Mobile Explorer',
|
||||
// 'openwave' => 'Open Wave',
|
||||
// 'opera mini' => 'Opera Mini',
|
||||
// 'operamini' => 'Opera Mini',
|
||||
// 'elaine' => 'Palm',
|
||||
'palmsource' => 'Palm',
|
||||
// 'digital paths' => 'Palm',
|
||||
// 'avantgo' => 'Avantgo',
|
||||
// 'xiino' => 'Xiino',
|
||||
'palmscape' => 'Palmscape',
|
||||
// 'nokia' => 'Nokia',
|
||||
// 'ericsson' => 'Ericsson',
|
||||
// 'blackberry' => 'BlackBerry',
|
||||
// 'motorola' => 'Motorola'
|
||||
|
||||
// Phones and Manufacturers
|
||||
'motorola' => "Motorola",
|
||||
'nokia' => "Nokia",
|
||||
'palm' => "Palm",
|
||||
'iphone' => "Apple iPhone",
|
||||
'ipod' => "Apple iPod Touch",
|
||||
'sony' => "Sony Ericsson",
|
||||
'ericsson' => "Sony Ericsson",
|
||||
'blackberry' => "BlackBerry",
|
||||
'cocoon' => "O2 Cocoon",
|
||||
'blazer' => "Treo",
|
||||
'lg' => "LG",
|
||||
'amoi' => "Amoi",
|
||||
'xda' => "XDA",
|
||||
'mda' => "MDA",
|
||||
'vario' => "Vario",
|
||||
'htc' => "HTC",
|
||||
'samsung' => "Samsung",
|
||||
'sharp' => "Sharp",
|
||||
'sie-' => "Siemens",
|
||||
'alcatel' => "Alcatel",
|
||||
'benq' => "BenQ",
|
||||
'ipaq' => "HP iPaq",
|
||||
'mot-' => "Motorola",
|
||||
'playstation portable' => "PlayStation Portable",
|
||||
'hiptop' => "Danger Hiptop",
|
||||
'nec-' => "NEC",
|
||||
'panasonic' => "Panasonic",
|
||||
'philips' => "Philips",
|
||||
'sagem' => "Sagem",
|
||||
'sanyo' => "Sanyo",
|
||||
'spv' => "SPV",
|
||||
'zte' => "ZTE",
|
||||
'sendo' => "Sendo",
|
||||
|
||||
// Operating Systems
|
||||
'symbian' => "Symbian",
|
||||
'SymbianOS' => "SymbianOS",
|
||||
'elaine' => "Palm",
|
||||
'palm' => "Palm",
|
||||
'series60' => "Symbian S60",
|
||||
'windows ce' => "Windows CE",
|
||||
|
||||
// Browsers
|
||||
'obigo' => "Obigo",
|
||||
'netfront' => "Netfront Browser",
|
||||
'openwave' => "Openwave Browser",
|
||||
'mobilexplorer' => "Mobile Explorer",
|
||||
'operamini' => "Opera Mini",
|
||||
'opera mini' => "Opera Mini",
|
||||
|
||||
// Other
|
||||
'digital paths' => "Digital Paths",
|
||||
'avantgo' => "AvantGo",
|
||||
'xiino' => "Xiino",
|
||||
'novarra' => "Novarra Transcoder",
|
||||
'vodafone' => "Vodafone",
|
||||
'docomo' => "NTT DoCoMo",
|
||||
'o2' => "O2",
|
||||
|
||||
// Fallback
|
||||
'mobile' => "Generic Mobile",
|
||||
'wireless' => "Generic Mobile",
|
||||
'j2me' => "Generic Mobile",
|
||||
'midp' => "Generic Mobile",
|
||||
'cldc' => "Generic Mobile",
|
||||
'up.link' => "Generic Mobile",
|
||||
'up.browser' => "Generic Mobile",
|
||||
'smartphone' => "Generic Mobile",
|
||||
'cellphone' => "Generic Mobile"
|
||||
);
|
||||
|
||||
// There are hundreds of bots but these are the most common.
|
||||
$robots = array(
|
||||
'googlebot' => 'Googlebot',
|
||||
'msnbot' => 'MSNBot',
|
||||
'slurp' => 'Inktomi Slurp',
|
||||
'yahoo' => 'Yahoo',
|
||||
'askjeeves' => 'AskJeeves',
|
||||
'fastcrawler' => 'FastCrawler',
|
||||
'infoseek' => 'InfoSeek Robot 1.0',
|
||||
'lycos' => 'Lycos'
|
||||
);
|
||||
|
||||
/* End of file user_agents.php */
|
||||
/* Location: ./application/config/user_agents.php */
|
||||
10
installer/controllers/index.html
Executable file
10
installer/controllers/index.html
Executable file
@@ -0,0 +1,10 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>403 Forbidden</title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<p>Directory access is forbidden.</p>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
332
installer/controllers/wizard.php
Executable file
332
installer/controllers/wizard.php
Executable file
@@ -0,0 +1,332 @@
|
||||
<?php
|
||||
|
||||
defined('BASEPATH') OR exit('No direct script access allowed');
|
||||
/**
|
||||
* Pancake
|
||||
* A simple, fast, self-hosted invoicing application
|
||||
*
|
||||
* @package Pancake
|
||||
* @author Pancake Dev Team
|
||||
* @copyright Copyright (c) 2014, Pancake Payments
|
||||
* @license http://pancakeapp.com/license
|
||||
* @link http://pancakeapp.com
|
||||
* @since Version 1.0
|
||||
*/
|
||||
// ------------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* The install wizard controller
|
||||
*
|
||||
* @subpackage Controllers
|
||||
* @category Wizard
|
||||
* @property Installer $installer
|
||||
*/
|
||||
class Wizard extends CI_Controller {
|
||||
|
||||
/**
|
||||
* @var string The path to the config folder
|
||||
*/
|
||||
private $config_path;
|
||||
|
||||
/**
|
||||
* @var string The path to the config.php file
|
||||
*/
|
||||
private $config_file;
|
||||
|
||||
/**
|
||||
* @var string The path to the stripe.php config file
|
||||
*/
|
||||
private $stripe_config_file;
|
||||
|
||||
/**
|
||||
* @var string The path to the uploads folder
|
||||
*/
|
||||
private $upload_path;
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
|
||||
public function __construct() {
|
||||
parent::__construct();
|
||||
|
||||
# Disable all caching for Varnish.
|
||||
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
|
||||
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
|
||||
header("Cache-Control: private");
|
||||
header("Pragma: no-cache");
|
||||
|
||||
$this->config_path = FCPATH . 'system/pancake/config';
|
||||
$this->config_file = $this->config_path . "/config.php";
|
||||
$this->stripe_config_file = $this->config_path . "/stripe.php";
|
||||
$this->upload_path = FCPATH . 'uploads/';
|
||||
require_once FCPATH . 'system/pancake/helpers/pancake_helper.php';
|
||||
include_once FCPATH . 'system/pancake/libraries/Asset.php';
|
||||
Asset::add_path(APPPATH . 'assets/');
|
||||
Asset::set_asset_url(BASE_URL);
|
||||
}
|
||||
|
||||
public function _detect_url_rewriting() {
|
||||
include_once APPPATH . 'libraries/HTTP_Request.php';
|
||||
$http = new HTTP_Request();
|
||||
try {
|
||||
$url_without_index_php = BASE_URL . "admin";
|
||||
$contents = $http->request($url_without_index_php);
|
||||
if (stristr($contents, "run the installer") === false) {
|
||||
$contents = $http->request(BASE_URL . "index.php/admin");
|
||||
if (stristr($contents, "run the installer") === false) {
|
||||
$contents = $http->request(BASE_URL . "index.php?/admin");
|
||||
if (stristr($contents, "run the installer") === false) {
|
||||
# Could not detect any valid way to access Pancake, so assume it works if there's a .htaccess and it's Apache, otherwise default to "index.php".
|
||||
|
||||
$htaccess_servers = array(
|
||||
"Apache",
|
||||
"LiteSpeed",
|
||||
"WebServerX",
|
||||
"1984",
|
||||
);
|
||||
|
||||
$use_index_php = "index.php";
|
||||
foreach ($htaccess_servers as $server) {
|
||||
if (strpos($_SERVER["SERVER_SOFTWARE"], $server) !== false) {
|
||||
$use_index_php = is_file(FCPATH . '.htaccess') ? '' : 'index.php';
|
||||
}
|
||||
}
|
||||
} else {
|
||||
# Found "run the installer", works with index.php?.
|
||||
$use_index_php = "index.php?";
|
||||
}
|
||||
|
||||
} else {
|
||||
# Found "run the installer", works with index.php.
|
||||
$use_index_php = "index.php";
|
||||
}
|
||||
} else {
|
||||
# Found "run the installer", works without index.php.
|
||||
$use_index_php = "";
|
||||
}
|
||||
} catch (Exception $e) {
|
||||
# Could not detect URL Rewriting correctly; defaulting to "index.php?".
|
||||
$use_index_php = "index.php?";
|
||||
}
|
||||
|
||||
if ($use_index_php !== $this->config->item("index_page")) {
|
||||
if (is_really_writable($this->config_file)) {
|
||||
file_put_contents($this->config_file, str_replace("\$config['index_page'] = \$config['index_page'];", "\$config['index_page'] = '$use_index_php'; #CORRECTED", file_get_contents($this->config_file)));
|
||||
if (strstr(file_get_contents($this->config_file), "#CORRECTED") !== false) {
|
||||
# Everything is OK; the file was corrected.
|
||||
return true;
|
||||
} else {
|
||||
# Something went wrong while updating the file.
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
# The file can't be corrected.
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
# Everything is OK; detection was correct.
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
public function _detect_tls12() {
|
||||
\Stripe\Stripe::setApiKey("sk_test_BQokikJOvBiI2HlWgH4olfQ2");
|
||||
\Stripe\Stripe::$apiBase = "https://api-tls12.stripe.com";
|
||||
$curl = new \Stripe\HttpClient\CurlClient([CURLOPT_SSLVERSION => CURL_SSLVERSION_TLSv1_2]);
|
||||
\Stripe\ApiRequestor::setHttpClient($curl);
|
||||
|
||||
try {
|
||||
\Stripe\Charge::all();
|
||||
return true;
|
||||
} catch (\Stripe\Error\ApiConnection $e) {
|
||||
# Try without the CURLOPT.
|
||||
$curl = new \Stripe\HttpClient\CurlClient();
|
||||
\Stripe\ApiRequestor::setHttpClient($curl);
|
||||
try {
|
||||
\Stripe\Charge::all();
|
||||
|
||||
# Fix stripe.php config file.
|
||||
if (is_really_writable($this->stripe_config_file)) {
|
||||
file_put_contents($this->stripe_config_file, str_replace("[CURLOPT_SSLVERSION => CURL_SSLVERSION_TLSv1_2]", "[]", file_get_contents($this->stripe_config_file)));
|
||||
if (strstr(file_get_contents($this->stripe_config_file), "\$config['stripe_curlopts'] = [];") !== false) {
|
||||
# Everything is OK; the file was corrected.
|
||||
return true;
|
||||
} else {
|
||||
# Something went wrong while updating the file.
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
# The file can't be corrected.
|
||||
return false;
|
||||
}
|
||||
} catch (\Stripe\Error\ApiConnection $e) {
|
||||
# Cannot work with or without the CURLOPT trickery.
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function index() {
|
||||
if ($_POST) {
|
||||
$this->load->library('form_validation');
|
||||
$data = [];
|
||||
|
||||
$this->form_validation->set_rules('db_host', 'Database Host', 'required');
|
||||
$this->form_validation->set_rules('db_user', 'Database Username', 'required');
|
||||
$this->form_validation->set_rules('db_pass', 'Database Password', 'required');
|
||||
$this->form_validation->set_rules('db_name', 'Database Name', 'required');
|
||||
$this->form_validation->set_rules('db_port', 'Database Port', 'required');
|
||||
$this->form_validation->set_rules('username', 'Username', 'required|xss_clean');
|
||||
$this->form_validation->set_rules('password', 'Password', 'required|min_length[5]|matches[password_confirm]');
|
||||
$this->form_validation->set_rules('password_confirm', 'Password Confirmation', 'required');
|
||||
|
||||
if ($this->form_validation->run()) {
|
||||
$data['hostname'] = $this->input->post('db_host');
|
||||
$data['database'] = $this->input->post('db_name');
|
||||
$data['dbprefix'] = 'pancake_';
|
||||
$data['username'] = $this->input->post('db_user');
|
||||
$data['password'] = $this->input->post('db_pass');
|
||||
$data['port'] = $this->input->post('db_port');
|
||||
$data['port'] = (!$data['port']) ? '3306' : $data['port'];
|
||||
$db = $this->_check_db($data["hostname"], $data["username"], $data["password"], $data["database"], $data["port"]);
|
||||
|
||||
if ($db["success"]) {
|
||||
if ($db["is_installed"]) {
|
||||
$this->_output_step("steps/stop");
|
||||
return;
|
||||
} else {
|
||||
$this->load->library('installer');
|
||||
if ($this->installer->install($data, $this->input->post("username"), $this->input->post("password"))) {
|
||||
# Redirect to Pancake, showing successful install modal.
|
||||
redirect("admin");
|
||||
} else {
|
||||
$data['error'] = "The installer could not store the database configurations. Make sure that system/pancake/config is writable.";
|
||||
$this->_output_step('steps/single_step', $data);
|
||||
return;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$data['error'] = 'Database Error: ' . $db["error"];
|
||||
$this->_output_step('steps/single_step', $data);
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
$this->_output_step('steps/single_step', $data);
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
$this->config->load("license");
|
||||
$checks = $this->_run_checks();
|
||||
if ($checks['can_continue']) {
|
||||
$this->_output_step('steps/single_step');
|
||||
} else {
|
||||
$this->_output_step('steps/checks', $checks);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function error() {
|
||||
$this->_output_step('error');
|
||||
}
|
||||
|
||||
protected function _run_checks() {
|
||||
$data = array();
|
||||
$data['is_url_rewriting_working'] = $this->_detect_url_rewriting();
|
||||
$data['config_writable'] = is_really_writable($this->config_path) ? true : false;
|
||||
$data['upload_writable'] = is_really_writable($this->upload_path) ? true : false;
|
||||
$data['license_valid'] = $this->_check_license($this->config->item("license_key"));
|
||||
$data['curl_installed'] = function_exists('curl_init');
|
||||
$data['tls12'] = $this->_detect_tls12();
|
||||
|
||||
$data['installed'] = array(
|
||||
'gd' => (extension_loaded('gd') && function_exists('gd_info')),
|
||||
'json' => (extension_loaded('json') && function_exists('json_encode')),
|
||||
'dom' => (extension_loaded('dom')),
|
||||
'xml' => (extension_loaded('xml')),
|
||||
'mysql' => (extension_loaded('mysqli') || extension_loaded('mysql')),
|
||||
);
|
||||
|
||||
include_once APPPATH . 'libraries/HTTP_Request.php';
|
||||
$http = new HTTP_Request();
|
||||
try {
|
||||
$http->request(MANAGE_PANCAKE_BASE_URL);
|
||||
$data['manage_pancakeapp'] = true;
|
||||
} catch (Exception $e) {
|
||||
$data['manage_pancakeapp'] = false;
|
||||
}
|
||||
|
||||
$can_continue = true;
|
||||
foreach ($data as $value) {
|
||||
if (is_array($value)) {
|
||||
foreach ($value as $subvalue) {
|
||||
if (!$subvalue) {
|
||||
$can_continue = false;
|
||||
break 2;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (!$value) {
|
||||
$can_continue = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$data['can_continue'] = $can_continue;
|
||||
return $data;
|
||||
}
|
||||
|
||||
protected function _check_db($host, $user, $pass, $name, $port, $prefix = "pancake_") {
|
||||
$is_installed = false;
|
||||
|
||||
if (function_exists("mysqli_connect")) {
|
||||
$mysqli = @new mysqli($host, $user, $pass, $name, $port);
|
||||
$success = !$mysqli->connect_error;
|
||||
$error = $mysqli->connect_error;
|
||||
if ($success) {
|
||||
$is_installed = $mysqli->query("show tables like '" . $mysqli->real_escape_string($prefix) . "%'")->num_rows > 0;
|
||||
}
|
||||
} else {
|
||||
$link = @mysql_connect($host . ':' . $port, $user, $pass, true);
|
||||
|
||||
if ($link) {
|
||||
// If the database is not there create it
|
||||
mysql_query('CREATE DATABASE IF NOT EXISTS ' . $name, $link);
|
||||
}
|
||||
|
||||
$success = ($link && @ mysql_select_db($name, $link));
|
||||
$error = mysql_error();
|
||||
|
||||
if ($success) {
|
||||
$result = mysql_query("show tables like '" . mysql_real_escape_string($prefix, $link) . "%'", $link);
|
||||
$is_installed = mysql_num_rows($result) > 0;
|
||||
}
|
||||
}
|
||||
|
||||
return [
|
||||
"success" => $success,
|
||||
"error" => $error,
|
||||
"is_installed" => $is_installed,
|
||||
];
|
||||
}
|
||||
|
||||
private function _check_license($key) {
|
||||
$key = trim($key);
|
||||
|
||||
$result = get_url_contents(MANAGE_PANCAKE_BASE_URL . 'verify/key/' . $key, false);
|
||||
if (empty($result)) {
|
||||
show_error('Pancake could not verify if the key "' . $key . '" is valid.');
|
||||
}
|
||||
|
||||
return ($result === 'valid');
|
||||
}
|
||||
|
||||
private function _output_step($view, $data = array()) {
|
||||
$content = $this->load->view($view, $data, true);
|
||||
|
||||
$this->load->view('template', array('content' => $content));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/* End of file wizard.php */
|
||||
1
installer/core/Pancake_Exceptions.php
Executable file
1
installer/core/Pancake_Exceptions.php
Executable file
@@ -0,0 +1 @@
|
||||
<?php include FCPATH.'system/pancake/core/Pancake_Exceptions.php';
|
||||
1
installer/core/Pancake_URI.php
Executable file
1
installer/core/Pancake_URI.php
Executable file
@@ -0,0 +1 @@
|
||||
<?php include FCPATH.'system/pancake/core/Pancake_URI.php';
|
||||
10
installer/core/index.html
Executable file
10
installer/core/index.html
Executable file
@@ -0,0 +1,10 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>403 Forbidden</title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<p>Directory access is forbidden.</p>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
34
installer/errors/error_404.php
Executable file
34
installer/errors/error_404.php
Executable file
@@ -0,0 +1,34 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>404 Page Not Found</title>
|
||||
<style type="text/css">
|
||||
|
||||
body {
|
||||
background-color: #fff;
|
||||
margin: 40px;
|
||||
font-family: Lucida Grande, Verdana, Sans-serif;
|
||||
font-size: 12px;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
#content {
|
||||
border: #999 1px solid;
|
||||
background-color: #fff;
|
||||
padding: 20px 20px 12px 20px;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-weight: normal;
|
||||
font-size: 14px;
|
||||
color: #990000;
|
||||
margin: 0 0 4px 0;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div id="content">
|
||||
<h1><?php echo $heading; ?></h1>
|
||||
<?php echo $message; ?>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
34
installer/errors/error_db.php
Executable file
34
installer/errors/error_db.php
Executable file
@@ -0,0 +1,34 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>Database Error</title>
|
||||
<style type="text/css">
|
||||
|
||||
body {
|
||||
background-color: #fff;
|
||||
margin: 40px;
|
||||
font-family: Lucida Grande, Verdana, Sans-serif;
|
||||
font-size: 12px;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
#content {
|
||||
border: #999 1px solid;
|
||||
background-color: #fff;
|
||||
padding: 20px 20px 12px 20px;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-weight: normal;
|
||||
font-size: 14px;
|
||||
color: #990000;
|
||||
margin: 0 0 4px 0;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div id="content">
|
||||
<h1><?php echo $heading; ?></h1>
|
||||
<?php echo $message; ?>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
34
installer/errors/error_general.php
Executable file
34
installer/errors/error_general.php
Executable file
@@ -0,0 +1,34 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>Error</title>
|
||||
<style type="text/css">
|
||||
|
||||
body {
|
||||
background-color: #fff;
|
||||
margin: 40px;
|
||||
font-family: Lucida Grande, Verdana, Sans-serif;
|
||||
font-size: 12px;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
#content {
|
||||
border: #999 1px solid;
|
||||
background-color: #fff;
|
||||
padding: 20px 20px 12px 20px;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-weight: normal;
|
||||
font-size: 14px;
|
||||
color: #990000;
|
||||
margin: 0 0 4px 0;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div id="content">
|
||||
<h1><?php echo $heading; ?></h1>
|
||||
<?php echo $message; ?>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
10
installer/errors/error_php.php
Executable file
10
installer/errors/error_php.php
Executable file
@@ -0,0 +1,10 @@
|
||||
<div style="border:1px solid #990000;padding-left:20px;margin:0 0 10px 0;">
|
||||
|
||||
<h4>A PHP Error was encountered</h4>
|
||||
|
||||
<p>Severity: <?php echo $severity; ?></p>
|
||||
<p>Message: <?php echo $message; ?></p>
|
||||
<p>Filename: <?php echo $filepath; ?></p>
|
||||
<p>Line Number: <?php echo $line; ?></p>
|
||||
|
||||
</div>
|
||||
1
installer/errors/error_php_custom.php
Executable file
1
installer/errors/error_php_custom.php
Executable file
@@ -0,0 +1 @@
|
||||
<?php include FCPATH.'system/pancake/errors/error_php_custom.php';
|
||||
1
installer/errors/error_php_enduser.php
Executable file
1
installer/errors/error_php_enduser.php
Executable file
@@ -0,0 +1 @@
|
||||
<?php include FCPATH.'system/pancake/errors/error_php_custom.php';
|
||||
10
installer/errors/index.html
Executable file
10
installer/errors/index.html
Executable file
@@ -0,0 +1,10 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>403 Forbidden</title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<p>Directory access is forbidden.</p>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
19
installer/helpers/MY_form_helper.php
Executable file
19
installer/helpers/MY_form_helper.php
Executable file
@@ -0,0 +1,19 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Set Value
|
||||
*
|
||||
* We have removed the part using form validation.
|
||||
*
|
||||
* @access public
|
||||
* @param string
|
||||
* @return mixed
|
||||
*/
|
||||
function set_value($field = '', $default = '')
|
||||
{
|
||||
if ( ! isset($_POST[$field]))
|
||||
{
|
||||
return $default;
|
||||
}
|
||||
return form_prep($_POST[$field], $field);
|
||||
}
|
||||
10
installer/helpers/index.html
Executable file
10
installer/helpers/index.html
Executable file
@@ -0,0 +1,10 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>403 Forbidden</title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<p>Directory access is forbidden.</p>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
10
installer/hooks/index.html
Executable file
10
installer/hooks/index.html
Executable file
@@ -0,0 +1,10 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>403 Forbidden</title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<p>Directory access is forbidden.</p>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
10
installer/index.html
Executable file
10
installer/index.html
Executable file
@@ -0,0 +1,10 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>403 Forbidden</title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<p>Directory access is forbidden.</p>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
10
installer/language/english/index.html
Executable file
10
installer/language/english/index.html
Executable file
@@ -0,0 +1,10 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>403 Forbidden</title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<p>Directory access is forbidden.</p>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
1
installer/libraries/HTTP_Request.php
Executable file
1
installer/libraries/HTTP_Request.php
Executable file
@@ -0,0 +1 @@
|
||||
<?php include FCPATH.'system/pancake/libraries/HTTP_Request.php';
|
||||
10
installer/libraries/index.html
Executable file
10
installer/libraries/index.html
Executable file
@@ -0,0 +1,10 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>403 Forbidden</title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<p>Directory access is forbidden.</p>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
239
installer/libraries/installer.php
Executable file
239
installer/libraries/installer.php
Executable file
@@ -0,0 +1,239 @@
|
||||
<?php defined('BASEPATH') OR exit('No direct script access allowed');
|
||||
/**
|
||||
* Pancake
|
||||
* A simple, fast, self-hosted invoicing application
|
||||
*
|
||||
* @package Pancake
|
||||
* @author Pancake Dev Team
|
||||
* @copyright Copyright (c) 2010, Pancake Payments
|
||||
* @license http://pancakeapp.com/license
|
||||
* @link http://pancakeapp.com
|
||||
* @since Version 1.0
|
||||
*/
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* Installer Library
|
||||
*
|
||||
* @subpackage Libraries
|
||||
* @category Installer
|
||||
*/
|
||||
class Installer {
|
||||
|
||||
/**
|
||||
* @var object The global CI object
|
||||
*/
|
||||
private $_ci;
|
||||
|
||||
public $dbdriver = 'mysqli';
|
||||
|
||||
/**
|
||||
* Loads in the CI super object
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function __construct() {
|
||||
$this->_ci = &get_instance();
|
||||
|
||||
if (!function_exists('mysqli_connect')) {
|
||||
$this->dbdriver = 'mysql';
|
||||
}
|
||||
}
|
||||
|
||||
public function install($config, $username, $password) {
|
||||
$config['dbdriver'] = $this->dbdriver;
|
||||
$config['db_debug'] = true;
|
||||
$config['char_set'] = "utf8";
|
||||
$config['dbcollat'] = "utf8_general_ci";
|
||||
$config['autoinit'] = true;
|
||||
|
||||
$this->_ci->load->database($config);
|
||||
$this->_ci->load->dbforge();
|
||||
$has_utf8mb4 = (version_compare($this->_ci->db->version(), "5.5") == 1);
|
||||
|
||||
if ($has_utf8mb4) {
|
||||
$config['char_set'] = "utf8mb4";
|
||||
$config['dbcollat'] = "utf8mb4_general_ci";
|
||||
}
|
||||
|
||||
$schema = file_get_contents(APPPATH . 'schema/pancake.sql');
|
||||
|
||||
if (!$this->_write_db_config($config, $has_utf8mb4)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$data["username"] = $username;
|
||||
$data["password"] = $password;
|
||||
|
||||
$data['salt'] = substr(md5(uniqid(rand(), true)), 0, 10);
|
||||
$data['password'] = sha1($data['password'] . $data['salt']);
|
||||
|
||||
$data['dbprefix'] = $config['dbprefix'];
|
||||
$data['version'] = file_get_contents(FCPATH . 'system/pancake/VERSION');
|
||||
$data['rss_password'] = random_string('alnum', 12);
|
||||
$data['timezone'] = @date_default_timezone_get();
|
||||
|
||||
// Include migration config to know which migration to start from
|
||||
include './system/pancake/config/migration.php';
|
||||
|
||||
$data['migration'] = $config['migration_version'];
|
||||
$data['now'] = time();
|
||||
$data['now_datetime'] = date("Y-m-d H:i:s");
|
||||
|
||||
$this->_ci->config->load("license");
|
||||
|
||||
$data["site_name"] = "Pancake";
|
||||
$data["first_name"] = $this->_ci->config->item("first_name");
|
||||
$data["notify_email"] = $this->_ci->config->item("email");
|
||||
$data["last_name"] = $this->_ci->config->item("last_name");
|
||||
$data["license_key"] = $this->_ci->config->item("license_key");
|
||||
$data["currency"] = "USD";
|
||||
$data["tax_rate"] = "0";
|
||||
$data["theme"] = "flat-pancake";
|
||||
$data["mailing_address"] = "";
|
||||
|
||||
foreach ($data as $key => $val) {
|
||||
|
||||
if (strtoupper($key) == "TAX_RATE") {
|
||||
// Fixes an issue with MySQL in Strict Mode if the tax was empty.
|
||||
$val = (float) $val;
|
||||
}
|
||||
|
||||
$escaped_val = $this->_ci->db->escape_str($val);
|
||||
$schema = str_replace('{' . strtoupper($key) . '}', $escaped_val, $schema);
|
||||
}
|
||||
|
||||
$schema = explode('-- split --', $schema);
|
||||
|
||||
foreach ($schema as $query) {
|
||||
if (stristr($query, "charset = utf8") !== false && $has_utf8mb4) {
|
||||
$query = str_ireplace("charset = utf8", "charset = utf8mb4", $query);
|
||||
}
|
||||
|
||||
if (!$this->_ci->db->query(rtrim(trim($query), "\n;"))) {
|
||||
|
||||
switch ($this->dbdriver) {
|
||||
case 'mysql':
|
||||
$error = mysql_error();
|
||||
break;
|
||||
case 'mysqli':
|
||||
$error = mysqli_error($this->_ci->db->conn_id);
|
||||
break;
|
||||
}
|
||||
|
||||
show_error(strtoupper($this->dbdriver) . ' ERROR: ' . $error);
|
||||
}
|
||||
}
|
||||
|
||||
$this->_ci->load->helper("cookie");
|
||||
|
||||
set_cookie(array(
|
||||
'name' => 'identity',
|
||||
'value' => $username,
|
||||
'expire' => 60 * 60 * 24 * 365 * 2,
|
||||
));
|
||||
|
||||
$salt = sha1($password);
|
||||
$this->_ci->db->update("users", ['remember_code' => $salt]);
|
||||
|
||||
set_cookie(array(
|
||||
'name' => 'remember_code',
|
||||
'value' => $salt,
|
||||
'expire' => 60 * 60 * 24 * 365 * 2,
|
||||
));
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
private function _write_db_config($config, $has_utf8mb4) {
|
||||
$replace = array(
|
||||
'{HOSTNAME}' => $config['hostname'],
|
||||
'{USERNAME}' => $config['username'],
|
||||
'{PASSWORD}' => $config['password'],
|
||||
'{DATABASE}' => $config['database'],
|
||||
'{PORT}' => $config['port'],
|
||||
'{DBPREFIX}' => $config['dbprefix'],
|
||||
);
|
||||
|
||||
$charset = $has_utf8mb4 ? "utf8mb4" : "utf8";
|
||||
|
||||
$template = <<<TEMP
|
||||
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
|
||||
/*
|
||||
| -------------------------------------------------------------------
|
||||
| DATABASE CONNECTIVITY SETTINGS
|
||||
| -------------------------------------------------------------------
|
||||
| This file will contain the settings needed to access your database.
|
||||
|
|
||||
| For complete instructions please consult the 'Database Connection'
|
||||
| page of the User Guide.
|
||||
|
|
||||
| -------------------------------------------------------------------
|
||||
| EXPLANATION OF VARIABLES
|
||||
| -------------------------------------------------------------------
|
||||
|
|
||||
| ['hostname'] The hostname of your database server.
|
||||
| ['username'] The username used to connect to the database
|
||||
| ['password'] The password used to connect to the database
|
||||
| ['database'] The name of the database you want to connect to
|
||||
| ['dbdriver'] The database type. ie: mysql. Currently supported:
|
||||
mysql, mysqli, postgre, odbc, mssql, sqlite, oci8
|
||||
| ['dbprefix'] You can add an optional prefix, which will be added
|
||||
| to the table name when using the Active Record class
|
||||
| ['pconnect'] TRUE/FALSE - Whether to use a persistent connection
|
||||
| ['db_debug'] TRUE/FALSE - Whether database errors should be displayed.
|
||||
| ['cache_on'] TRUE/FALSE - Enables/disables query caching
|
||||
| ['cachedir'] The path to the folder where cache files should be stored
|
||||
| ['char_set'] The character set used in communicating with the database
|
||||
| ['dbcollat'] The character collation used in communicating with the database
|
||||
| ['swap_pre'] A default table prefix that should be swapped with the dbprefix
|
||||
| ['autoinit'] Whether or not to automatically initialize the database.
|
||||
| ['stricton'] TRUE/FALSE - forces 'Strict Mode' connections
|
||||
| - good for ensuring strict SQL while developing
|
||||
|
|
||||
| The \$active_group variable lets you choose which connection group to
|
||||
| make active. By default there is only one group (the 'default' group).
|
||||
|
|
||||
| The \$active_record variables lets you determine whether or not to load
|
||||
| the active record class
|
||||
*/
|
||||
|
||||
\$active_group = 'default';
|
||||
\$active_record = TRUE;
|
||||
|
||||
\$db['default']['hostname'] = '{HOSTNAME}';
|
||||
\$db['default']['username'] = '{USERNAME}';
|
||||
\$db['default']['password'] = '{PASSWORD}';
|
||||
\$db['default']['database'] = '{DATABASE}';
|
||||
\$db['default']['dbdriver'] = '{$this->dbdriver}';
|
||||
\$db['default']['dbprefix'] = '{DBPREFIX}';
|
||||
\$db['default']['pconnect'] = FALSE;
|
||||
\$db['default']['db_debug'] = TRUE;
|
||||
\$db['default']['cache_on'] = FALSE;
|
||||
\$db['default']['cachedir'] = '';
|
||||
\$db['default']['char_set'] = '$charset';
|
||||
\$db['default']['dbcollat'] = '{$charset}_general_ci';
|
||||
\$db['default']['swap_pre'] = '';
|
||||
\$db['default']['autoinit'] = TRUE;
|
||||
\$db['default']['stricton'] = TRUE;
|
||||
\$db['default']['port'] = {PORT};
|
||||
|
||||
/* End of file database.php */
|
||||
/* Location: ./application/config/database.php */
|
||||
TEMP;
|
||||
|
||||
$new_file = str_replace(array_keys($replace), $replace, $template);
|
||||
|
||||
$handle = @fopen(FCPATH . 'system/pancake/config/database.php', 'w+');
|
||||
|
||||
if ($handle !== false) {
|
||||
return @fwrite($handle, $new_file);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/* End of file installer.php */
|
||||
10
installer/models/index.html
Executable file
10
installer/models/index.html
Executable file
@@ -0,0 +1,10 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>403 Forbidden</title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<p>Directory access is forbidden.</p>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
1362
installer/schema/pancake.sql
Executable file
1362
installer/schema/pancake.sql
Executable file
File diff suppressed because it is too large
Load Diff
14
installer/views/error.php
Executable file
14
installer/views/error.php
Executable file
@@ -0,0 +1,14 @@
|
||||
<h2>Error</h2>
|
||||
|
||||
<p>
|
||||
It looks like Pancake has not been installed. <strong>To run the installer, <?php echo anchor('', 'click here'); ?></strong>.
|
||||
</p>
|
||||
<p>Pancake thinks that the URL to your Pancake is:<br /><strong><?php echo BASE_URL;?></strong></p><p>Pancake thinks that you were trying to load the following page:<br /><strong><?php echo $this->uri->uri_string();?></strong></p>
|
||||
<p>If you haven't installed, and the above information is incorrect, that means that Pancake is having problems making sense of your server's configurations. <a href="<?php echo PANCAKEAPP_COM_BASE_URL; ?>account/support/ticket/new">Start a <strong>free</strong> support ticket</a>, and we'll help you sort it out.</p>
|
||||
|
||||
<p class="fail">
|
||||
If you have any difficulty installing Pancake, don't forget:<br/>
|
||||
<strong>We can install Pancake for you, for free.</strong><br/>Just
|
||||
<a href="<?php echo PANCAKEAPP_COM_BASE_URL; ?>account/support/ticket/new">start a
|
||||
<strong>free</strong> support ticket</a>.
|
||||
</p>
|
||||
10
installer/views/index.html
Executable file
10
installer/views/index.html
Executable file
@@ -0,0 +1,10 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>403 Forbidden</title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<p>Directory access is forbidden.</p>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
96
installer/views/steps/checks.php
Executable file
96
installer/views/steps/checks.php
Executable file
@@ -0,0 +1,96 @@
|
||||
<h2>Your server is missing a couple of things.</h2>
|
||||
<p class="fail">
|
||||
If you have any difficulty installing Pancake, don't forget:<br/>
|
||||
<strong>We can install Pancake for you, for free.</strong><br/>Just
|
||||
<a href="<?php echo PANCAKEAPP_COM_BASE_URL; ?>account/support/ticket/new">start a
|
||||
<strong>free</strong> support ticket</a>.
|
||||
</p>
|
||||
<p>Please fix the below errors and refresh to re-check.</p>
|
||||
|
||||
<table cellspacing="0" class="listtable checks-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th width="10%">Status</th>
|
||||
<th>Requirement</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>
|
||||
<span class="<?php echo $is_url_rewriting_working ? 'pass' : 'fail'; ?>"><?php echo $is_url_rewriting_working ? 'PASS' : 'FAIL'; ?></span>
|
||||
</td>
|
||||
<td>Pancake must be able to reliably detect whether URL rewriting is on or off.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<span class="<?php echo $manage_pancakeapp ? 'pass' : 'fail'; ?>"><?php echo $manage_pancakeapp ? 'PASS' : 'FAIL'; ?></span>
|
||||
</td>
|
||||
<td>Your server must be able to communicate with pancakeapp.com (otherwise you won't be able to receive updates).</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<span class="<?php echo $license_valid ? 'pass' : 'fail'; ?>"><?php echo $license_valid ? 'PASS' : 'FAIL'; ?></span>
|
||||
</td>
|
||||
<td>
|
||||
<?php if ($license_valid): ?>
|
||||
Your license key is valid.
|
||||
<?php else: ?>
|
||||
Your license key is not valid.
|
||||
<?php endif; ?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<span class="<?php echo $curl_installed ? 'pass' : 'fail'; ?>"><?php echo $curl_installed ? 'PASS' : 'FAIL'; ?></span>
|
||||
</td>
|
||||
<td>The Curl PHP extension must be installed.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<span class="<?php echo $installed['gd'] ? 'pass' : 'fail'; ?>"><?php echo $installed['gd'] ? 'PASS' : 'FAIL'; ?></span>
|
||||
</td>
|
||||
<td>The GD PHP extension must be installed.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<span class="<?php echo $installed['json'] ? 'pass' : 'fail'; ?>"><?php echo $installed['json'] ? 'PASS' : 'FAIL'; ?></span>
|
||||
</td>
|
||||
<td>The JSON PHP extension must be installed.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<span class="<?php echo $installed['dom'] ? 'pass' : 'fail'; ?>"><?php echo $installed['dom'] ? 'PASS' : 'FAIL'; ?></span>
|
||||
</td>
|
||||
<td>The DOM PHP extension must be installed.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<span class="<?php echo $installed['mysql'] ? 'pass' : 'fail'; ?>"><?php echo $installed['mysql'] ? 'PASS' : 'FAIL'; ?></span>
|
||||
</td>
|
||||
<td>The MySQL (or MySQLi) PHP extension must be installed.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<span class="<?php echo $installed['xml'] ? 'pass' : 'fail'; ?>"><?php echo $installed['xml'] ? 'PASS' : 'FAIL'; ?></span>
|
||||
</td>
|
||||
<td>The XML PHP extension must be installed.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><span class="<?php echo $tls12 ? 'pass' : 'fail'; ?>"><?php echo $tls12 ? 'PASS' : 'FAIL'; ?></span>
|
||||
</td>
|
||||
<td>Your server must be able to make TLS 1.2 connections to other servers.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<span class="<?php echo $config_writable ? 'pass' : 'fail'; ?>"><?php echo $config_writable ? 'PASS' : 'FAIL</span>'; ?></span>
|
||||
</td>
|
||||
<td>The system/pancake/config folder must be writable.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<span class="<?php echo $upload_writable ? 'pass' : 'fail'; ?>"><?php echo $upload_writable ? 'PASS' : 'FAIL'; ?></span>
|
||||
</td>
|
||||
<td>The uploads directory must be writable.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
8
installer/views/steps/complete.php
Executable file
8
installer/views/steps/complete.php
Executable file
@@ -0,0 +1,8 @@
|
||||
<h2 class="installed">Congratulations!</h2>
|
||||
<p>Pancake has been successfully installed on your server!</p>
|
||||
|
||||
<p>If you have a couple seconds would you mind telling your friends about us? A quick <a href="http://twitter.com/home?status=I%20just%20installed%20@pancakeapp%20and%20it%20looks%20awesome!%20http://pancakeapp.com">tweet</a> or mention on <a href="http://facebook.com">Facebook</a> is awesome!</p>
|
||||
|
||||
<h4>You rule! Now go collect stacks!</h4>
|
||||
|
||||
<p class="center"><a href="<?php echo site_url('admin/users/login'); ?>" class="button">Login!</a></p>
|
||||
89
installer/views/steps/single_step.php
Executable file
89
installer/views/steps/single_step.php
Executable file
@@ -0,0 +1,89 @@
|
||||
<h2>Let's make some Pancakes!</h2>
|
||||
<?php
|
||||
$errors = validation_errors(' ', '<br />');
|
||||
$has_errors = ($errors || isset($error));
|
||||
?>
|
||||
<p class="<?php echo $has_errors ? "fail" : ""; ?>">
|
||||
If you have any difficulty installing Pancake, don't forget:<br/>
|
||||
<strong>We can install Pancake for you, for free.</strong><br/>Just
|
||||
<a href="<?php echo PANCAKEAPP_COM_BASE_URL; ?>account/support/ticket/new">start a
|
||||
<strong>free</strong> support ticket</a>.
|
||||
</p>
|
||||
<hr>
|
||||
|
||||
<?php if (isset($error)): ?>
|
||||
<p class="notification error"><?php echo $error; ?></p>
|
||||
<?php endif; ?>
|
||||
<?php if ($errors): ?>
|
||||
<p class="notification error"><?php echo $errors; ?></p>
|
||||
<?php endif; ?>
|
||||
|
||||
<form method="post" action="" id="form" name="form">
|
||||
<p>Enter your database connection settings.</p>
|
||||
<table style="width: 100%;">
|
||||
<tr>
|
||||
<th class="col1"><label for="db_host">Database Host:</label></th>
|
||||
<td class="col2">
|
||||
<input id="db_host" name="db_host" type="text" size="20" value="<?php echo set_value("db_host", "localhost"); ?>"/>
|
||||
</td>
|
||||
<td class="col3">localhost or an ip (192.168.0.1)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="col1"><label for="db_port">Database Port:</label></th>
|
||||
<td class="col2">
|
||||
<input id="db_port" name="db_port" type="text" size="20" value="<?php echo set_value("db_port", "3306"); ?>"/>
|
||||
</td>
|
||||
<td class="col3">Which port is MySQL running on? Usually 3306.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="col1"><label for="db_name">Database Name:</label></th>
|
||||
<td class="col2">
|
||||
<input id="db_name" name="db_name" type="text" size="20" value="<?php echo set_value("db_name"); ?>"/>
|
||||
</td>
|
||||
<td class="col3">The name of the database to use.</td>
|
||||
</tr>
|
||||
<input name="dbprefix" type="hidden" value="pancake_"/>
|
||||
<tr>
|
||||
<th class="col1"><label for="db_user">Username:</label></th>
|
||||
<td class="col2">
|
||||
<input id="db_user" name="db_user" type="text" size="20" value="<?php echo set_value("db_user"); ?>"/>
|
||||
</td>
|
||||
<td class="col3">Your MySQL username.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="col1"><label for="db_pass">Password:</label></th>
|
||||
<td class="col2"><input id="db_pass" name="db_pass" type="password" size="20" value=""/>
|
||||
</td>
|
||||
<td class="col3">Your MySQL password.</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br/>
|
||||
<p>Enter the login details you want to use for Pancake.</p>
|
||||
<table style="width: 100%;">
|
||||
<tr>
|
||||
<th class="col1"><label for="username">Admin Username</label></th>
|
||||
<td class="col2">
|
||||
<input id="username" name="username" type="text" size="20" value="<?php echo set_value('username', 'admin'); ?>"/>
|
||||
</td>
|
||||
<td class="col3">What you want to login with.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<th class="col1"><label for="password">Password</label></th>
|
||||
<td class="col2"><input id="password" name="password" type="password" size="20"/></td>
|
||||
<td class="col3">Choose a password.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<th class="col1"><label for="password_confirm">Confirm Password</label></th>
|
||||
<td class="col2"><input id="password_confirm" name="password_confirm" type="password" size="20"/></td>
|
||||
<td class="col3">Confirm the password.</td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
<br/>
|
||||
|
||||
<p class="center">
|
||||
<button type="submit" class="button">Mmmm... Let's Eat!</button>
|
||||
</p>
|
||||
</form>
|
||||
13
installer/views/steps/stop.php
Executable file
13
installer/views/steps/stop.php
Executable file
@@ -0,0 +1,13 @@
|
||||
<h2>Stop!</h2>
|
||||
<p>You have already installed Pancake!<br/>You almost certainly don't want to overwrite all the data you had.</p>
|
||||
<p>
|
||||
If you are just updating your Pancake's files manually, you should find the file that was in
|
||||
<code>system/pancake/config/database.php</code> before the update, and put it back there.
|
||||
</p>
|
||||
<p>You cannot use the installer because you've already installed Pancake.</p>
|
||||
<p class="fail">
|
||||
If you have any difficulty installing Pancake, don't forget:<br/>
|
||||
<strong>We can install Pancake for you, for free.</strong><br/>Just
|
||||
<a href="<?php echo PANCAKEAPP_COM_BASE_URL; ?>account/support/ticket/new">start a
|
||||
<strong>free</strong> support ticket</a>.
|
||||
</p>
|
||||
13
installer/views/steps/welcome.php
Executable file
13
installer/views/steps/welcome.php
Executable file
@@ -0,0 +1,13 @@
|
||||
<h2>Let's make some Pancakes!</h2>
|
||||
<p>Ingredient list, make sure you have these to hand:</p>
|
||||
<ul class="requirements">
|
||||
<li>License key (in receipt email)</li>
|
||||
<li>Database name</li>
|
||||
<li>Database username</li>
|
||||
<li>Database password</li>
|
||||
<li>Database host</li>
|
||||
</ul>
|
||||
<p>If you have all the information ready yourself, then you're ready to go. Hit the "Install Pancake!" link below to continue.</p>
|
||||
<p>If for any reason this recipe fails and the file creation doesn't work please try again then <a href="<?php echo PANCAKEAPP_COM_BASE_URL; ?>account/support/ticket/new">open a <strong>free</strong> support ticket</a> if it still does not work.</p>
|
||||
|
||||
<p class="center"><a href="<?php echo BASE_URL."index.php?/wizard/step1"; ?>" class="button">Install Pancake!</a></p>
|
||||
27
installer/views/template.php
Executable file
27
installer/views/template.php
Executable file
@@ -0,0 +1,27 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Pancake Payments Install Wizard</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
|
||||
<link rel="stylesheet" href="<?php echo Asset::get_src('style.css', 'css'); ?>" media="screen">
|
||||
<link rel='stylesheet' href='//fonts.googleapis.com/css?family=Paytone+One&v1' media="screen">
|
||||
</head>
|
||||
<body>
|
||||
<div id="wrapper">
|
||||
|
||||
<div id="content" class="no_object_notification">
|
||||
<?php echo $content; ?>
|
||||
</div>
|
||||
<!-- /content -->
|
||||
|
||||
<div id="footer">
|
||||
</div>
|
||||
<!-- /footer -->
|
||||
|
||||
</div>
|
||||
<!-- /wrapper -->
|
||||
|
||||
<script src="<?php echo Asset::get_src('jquery-1.11.2.min.js', 'js'); ?>"></script>
|
||||
<script src="<?php echo Asset::get_src('main.js', 'js'); ?>"></script>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user