2015-11-03 01:25:08 +01:00
< ? php
2015-11-04 22:52:12 +01:00
require_once ( 'required.php' );
2015-11-03 01:25:08 +01:00
2015-11-04 22:52:12 +01:00
session_start ();
$current_user = isset ( $_SESSION [ 'user' ]) ? $_SESSION [ 'user' ] : 0 ;
2016-06-07 01:41:02 +02:00
$dictionary_to_load = ( isset ( $_GET [ 'dict' ])) ? intval ( $_GET [ 'dict' ]) : 0 ;
$the_public_dictionary = '"That dictionary doesn\'t exist."' ;
$dictionary_name = 'ERROR' ;
$dictionary_creator = 'nobody' ;
$word_to_load = ( isset ( $_GET [ 'word' ])) ? intval ( $_GET [ 'word' ]) : 0 ;
$the_public_word = '"That word doesn\'t exist."' ;
$word_name = 'ERROR' ;
2016-06-21 01:13:51 +02:00
$is_owner = false ;
2016-06-20 06:58:27 +02:00
$display_mode = ( $dictionary_to_load > 0 ) ? (( $word_to_load > 0 ) ? " word " : " view " ) : " build " ;
2015-12-17 02:13:45 +01:00
$announcement = get_include_contents ( SITE_LOCATION . '/announcement.php' );
2015-11-04 22:52:12 +01:00
$notificationMessage = " " ;
2015-12-12 02:06:47 +01:00
if ( $current_user > 0 || ! isset ( $_SESSION [ 'loginfailures' ]) || ( isset ( $_SESSION [ 'loginlockouttime' ]) && time () - $_SESSION [ 'loginlockouttime' ] >= 3600 )) {
// If logged in, never failed, or more than 1 hour has passed, reset login failures.
2015-12-02 01:24:43 +01:00
$_SESSION [ 'loginfailures' ] = 0 ;
} else {
2019-06-13 19:11:42 +02:00
$hoverlockoutmessage = '' ;
if ( isset ( $_SESSION [ 'loginlockouttime' ])) {
$alertlockoutmessage = " You failed logging in 10 times. To prevent request flooding and hacking attempts, you may not log in or create an account for 1 hour. \\ n \\ nThe last time this page was loaded, you had been locked out for " . time_elapsed ( time () - $_SESSION [ 'loginlockouttime' ]) . " \\ n \\ nRefresh the page once the hour has passed. " ;
$hoverlockoutmessage = str_replace ( " \\ n " , " \n " , $alertlockoutmessage );
}
2015-12-02 01:24:43 +01:00
}
2015-12-12 02:06:47 +01:00
require_once ( SITE_LOCATION . '/php/notificationconditiontree.php' );
2016-06-20 06:58:27 +02:00
if ( $display_mode != " build " ) {
2016-06-07 01:41:02 +02:00
$dbconnection = new PDO ( 'mysql:host=' . DATABASE_SERVERNAME . ';dbname=' . DATABASE_NAME . ';charset=utf8' , DATABASE_USERNAME , DATABASE_PASSWORD );
$dbconnection -> setAttribute ( PDO :: ATTR_ERRMODE , PDO :: ERRMODE_EXCEPTION );
$dbconnection -> setAttribute ( PDO :: ATTR_EMULATE_PREPARES , true );
$dbconnection -> setAttribute ( PDO :: ATTR_DEFAULT_FETCH_MODE , PDO :: FETCH_ASSOC );
2016-06-20 06:58:27 +02:00
2016-06-21 01:13:51 +02:00
$dictionary_query = " SELECT `d`.`id`, `d`.`user`, `d`.`name`, `d`.`description`, `u`.`public_name`, `d`.`parts_of_speech`, `d`.`is_complete` " ;
$dictionary_query .= " FROM `dictionaries` AS `d` LEFT JOIN `users` AS `u` ON `d`.`user`=`u`.`id` " ;
$dictionary_query .= " WHERE `d`.`is_public`=1 AND `d`.`id`= " . $dictionary_to_load . " ; " ;
$word_query = " SELECT `w`.`word_id`, `w`.`name`, `w`.`pronunciation`, `w`.`part_of_speech`, `w`.`simple_definition`, `w`.`long_definition` " ;
$word_query .= " FROM `words` AS `w` LEFT JOIN `dictionaries` AS `d` ON `w`.`dictionary`=`d`.`id` " ;
$word_query .= " WHERE `d`.`is_public`=1 AND `w`.`dictionary`= " . $dictionary_to_load . (( $display_mode == " word " ) ? " AND `w`.`word_id`= " . $word_to_load : " " ) . " " ;
$word_query .= " ORDER BY IF(`d`.`sort_by_equivalent`, `w`.`simple_definition`, `w`.`name`) COLLATE utf8_unicode_ci; " ;
try {
$dictionary_results = $dbconnection -> prepare ( $dictionary_query );
$dictionary_results -> execute ();
if ( $dictionary_results ) {
$word_results = $dbconnection -> prepare ( $word_query );
$word_results -> execute ();
$dictionary_words = " [ " ;
if ( $word_results ) {
$words_counted = 0 ;
$words_total = num_rows ( $word_results );
while ( $word = fetch ( $word_results )) {
$words_counted ++ ;
$word_name = $word [ 'name' ];
$dictionary_words .= '{"name":"' . $word [ 'name' ] . '",' ;
$dictionary_words .= '"pronunciation":"' . $word [ 'pronunciation' ] . '",' ;
$dictionary_words .= '"partOfSpeech":"' . $word [ 'part_of_speech' ] . '",' ;
$dictionary_words .= '"simpleDefinition":"' . $word [ 'simple_definition' ] . '",' ;
$dictionary_words .= '"longDefinition":"' . $word [ 'long_definition' ] . '",' ;
$dictionary_words .= '"wordId":"' . $word [ 'word_id' ] . '"' ;
$dictionary_words .= '}' ;
if ( $words_counted < $words_total ) {
$dictionary_words .= ',' ;
2016-06-20 06:58:27 +02:00
}
}
}
2016-06-21 01:13:51 +02:00
$dictionary_words .= " ] " ;
2016-06-20 06:58:27 +02:00
2016-06-21 01:13:51 +02:00
if ( num_rows ( $dictionary_results ) === 1 ) {
while ( $dict = fetch ( $dictionary_results )) {
$dictionary_name = $dict [ 'name' ];
$dictionary_creator = $dict [ 'public_name' ];
$is_owner = $current_user == $dict [ 'user' ];
$the_public_dictionary = '{"name":"' . $dict [ 'name' ] . '",' ;
$the_public_dictionary .= '"description":"' . $dict [ 'description' ] . '",' ;
$the_public_dictionary .= '"createdBy":"' . $dict [ 'public_name' ] . '",' ;
$the_public_dictionary .= '"words":' . $dictionary_words . ',' ;
$the_public_dictionary .= '"settings":{' ;
$the_public_dictionary .= '"partsOfSpeech":"' . $dict [ 'parts_of_speech' ] . '",' ;
$the_public_dictionary .= '"isComplete":' . (( $dict [ 'is_complete' ] == 1 ) ? 'true' : 'false' ) . '},' ;
$the_public_dictionary .= '"id":"' . $dictionary_to_load . '"' ;
$the_public_dictionary .= '}' ;
2016-06-07 01:41:02 +02:00
}
}
}
}
2016-06-21 01:13:51 +02:00
catch ( PDOException $ex ) {}
2016-06-07 01:41:02 +02:00
}
2015-11-03 01:25:08 +01:00
?>
<! DOCTYPE html >
2015-10-26 05:41:25 +01:00
< html >
< head >
< meta charset = " utf-8 " />
2015-10-28 23:11:33 +01:00
< meta name = " viewport " content = " width=device-width, initial-scale=1 " >
2016-07-11 03:38:57 +02:00
2016-06-20 06:58:27 +02:00
< ? php if ( $display_mode != " build " ) { ?>
< title >< ? php echo (( $display_mode == " word " ) ? ( $word_name . " | " ) : " " ) . $dictionary_name ; ?> Dictionary on Lexiconga</title>
< meta property = " og:url " content = " http://lexicon.ga/<?php echo $dictionary_to_load . (( $display_mode == " word " ) ? ( " / " . $word_to_load ) : " " ); ?> " />
2016-06-07 01:41:02 +02:00
< meta property = " og:type " content = " article " />
2016-06-20 06:58:27 +02:00
< meta property = " og:title " content = " <?php echo (( $display_mode == " word " ) ? ( " \ " " . $word_name . " \" in the " ) : " " ) . $dictionary_name ; ?> Dictionary" />
2016-06-07 01:41:02 +02:00
< meta property = " og:description " content = " A Lexiconga dictionary by <?php echo $dictionary_creator ; ?> " />
< meta property = " og:image " content = " http://lexicon.ga/images/logo.svg " />
2016-06-21 01:13:51 +02:00
< script > var publicDictionary = < ? php echo $the_public_dictionary ; ?> </script>
< ? php } else { ?>
2016-06-07 01:41:02 +02:00
< title > Lexiconga Dictionary Builder </ title >
2016-06-20 06:58:27 +02:00
< meta property = " og:url " content = " http://lexicon.ga " />
< meta property = " og:type " content = " website " />
< meta property = " og:title " content = " Lexiconga Dictionary Builder " />
< meta property = " og:description " content = " Build lexicons for contructed languages or anything that you can think of! " />
< meta property = " og:image " content = " http://lexicon.ga/images/logo.svg " />
2016-06-07 01:41:02 +02:00
< ? php } ?>
2015-10-26 05:41:25 +01:00
2016-06-20 06:58:27 +02:00
< link href = " /css/styles.css " rel = " stylesheet " />
< link href = " /css/lexiconga.css " rel = " stylesheet " />
2016-07-06 15:36:24 +02:00
< link href = " /css/mobile.css " rel = " stylesheet " />
2015-10-26 05:41:25 +01:00
</ head >
< body >
2015-11-01 21:35:59 +01:00
< header >
< div id = " headerPadder " >
2016-03-09 21:23:18 +01:00
< a href = " / " id = " siteLogo " > Lexiconga Dictionary Builder </ a >
2015-11-02 04:09:20 +01:00
< div style = " float:right;margin: 16px 8px;font-size:12px; " >
2015-12-12 02:06:47 +01:00
< span id = " aboutButton " class = " clickable " onclick = " ShowInfo('aboutText') " > About Lexiconga </ span >
2015-11-02 04:04:44 +01:00
</ div >
2015-11-04 22:52:12 +01:00
< div id = " loginoutArea " style = " font-size:12px; " >
2016-06-21 01:13:51 +02:00
< ? php if ( $display_mode == " build " ) { ?>
2015-11-04 22:52:12 +01:00
< ? php if ( $current_user > 0 ) { //If logged in, show the log out button. ?>
2015-12-12 02:06:47 +01:00
< span id = " accountSettings " class = " clickable " onclick = " ShowAccountSettings() " > Account Settings </ span > < a href = " ?logout " id = " logoutLink " class = " clickable " > Log Out </ a >
2015-12-02 01:24:43 +01:00
< ? php } elseif ( ! isset ( $_SESSION [ 'loginfailures' ]) || ( isset ( $_SESSION [ 'loginfailures' ]) && $_SESSION [ 'loginfailures' ] < 10 )) { ?>
2015-12-12 02:06:47 +01:00
< span id = " loginLink " class = " clickable " onclick = " ShowInfo('loginForm') " > Log In / Create Account </ span >
2015-11-04 22:52:12 +01:00
< ? php } else { ?>
2015-12-02 01:24:43 +01:00
< span id = " loginLink " class = " clickable " title = " <?php echo $hoverlockoutmessage ; ?> " onclick = " alert('<?php echo $alertlockoutmessage ; ?>'); " > Can ' t Login </ span >
2016-06-21 01:13:51 +02:00
< ? php }
} else { ?>
< h3 style = " display:inline; margin:0 5px; " > Viewing </ h3 >
< ? php if ( $is_owner ) { ?>
< span class = " clickable " onclick = " ChangeDictionaryToId(<?php echo $dictionary_to_load ; ?>, function(response) { if (response.length >= 60) window.location.href = '/';}); " >& laquo ; Edit Dictionary </ span >
< ? php } else { ?>
< a class = " clickable " href = " / " >& laquo ; Go Home to Lexiconga </ a >
< ? php } ?>
< ? php } ?>
2015-11-01 21:35:59 +01:00
</ div >
</ div >
</ header >
< contents >
2016-06-20 06:58:27 +02:00
< ? php if ( $display_mode == " build " ) { ?>
2016-07-03 05:25:26 +02:00
< div id = " announcementArea " style = " display:<?php echo (( $announcement ) ? " block " : " none " ); ?>; " >
2016-07-11 03:38:57 +02:00
< span id = " announcementCloseButton " class = " clickable rightButton " onclick = " document.getElementById('announcementArea').style.display='none'; " > Close </ span >
2015-12-21 21:36:25 +01:00
< div id = " announcement " >< ? php echo $announcement ; ?> </div>
</ div >
< div id = " notificationArea " style = " display:<?php echo (( $notificationMessage ) ? " block " : " none " ); ?>; " >
2016-07-11 03:38:57 +02:00
< span id = " notificationCloseButton " class = " clickable rightButton " onclick = " document.getElementById('notificationArea').style.display='none'; " > Close </ span >
2015-11-10 01:53:01 +01:00
< div id = " notificationMessage " >< ? php echo $notificationMessage ; ?> </div>
2015-11-09 19:45:46 +01:00
</ div >
2015-10-28 22:53:59 +01:00
< div id = " leftColumn " >
2016-06-07 01:41:02 +02:00
< form id = " wordEntryForm " >
< div id = " formLockButton " class = " clickable " onclick = " ToggleWordFormLock() " title = " Lock/unlock form from the top of the page " >& #128274;</div>
< label >< span > Word </ span >
< input type = " text " id = " word " onkeydown = " SubmitWordOnCtrlEnter(this) " />
</ label >
2016-06-29 18:40:10 +02:00
< label >< span > Pronunciation < a class = " clickable inline-button " href = " http://r12a.github.io/pickers/ipa/ " target = " _blank " title = " IPA Character Picker located at http://r12a.github.io/pickers/ipa/ " > IPA Characters </ a ></ span >
2016-06-07 01:41:02 +02:00
< input type = " text " id = " pronunciation " onkeydown = " SubmitWordOnCtrlEnter(this) " />
</ label >
< label >< span > Part of Speech </ span >
< select id = " partOfSpeech " onkeydown = " SubmitWordOnCtrlEnter(this) " ></ select >
</ label >
2016-07-03 05:25:26 +02:00
< label >< span > Definition /< wbr >< b class = wbr ></ b > Equivalent Word ( s ) </ span >
2016-06-07 01:41:02 +02:00
< input type = " text " id = " simpleDefinition " onkeydown = " SubmitWordOnCtrlEnter(this) " />
</ label >
2016-07-03 05:25:26 +02:00
< label >< span > Explanation /< wbr >< b class = wbr ></ b > Long Definition < span id = " showFullScreenTextbox " class = " clickable inline-button " onclick = " ShowFullScreenTextbox('longDefinition', 'Explanation/Long Definition') " > Maximize </ span ></ span >
2016-06-22 16:26:54 +02:00
< textarea id = " longDefinition " class = " longDefinition " onkeydown = " SubmitWordOnCtrlEnter(this) " ></ textarea >
2016-06-07 01:41:02 +02:00
</ label >
< input type = " hidden " id = " editIndex " />
< span id = " errorMessage " ></ span >
< div id = " newWordButtonArea " style = " display: block; " >
< button type = " button " onclick = " AddWord(); return false; " > Add Word </ button >
</ div >
< div id = " editWordButtonArea " style = " display: none; " >
< button type = " button " onclick = " AddWord(); return false; " > Edit Word </ button > < button type = " button " onclick = " ClearForm(); window.scroll(savedScroll.x, savedScroll.y); return false; " > Cancel </ button >
</ div >
< div id = " updateConflict " style = " display: none; " ></ div >
</ form >
2015-10-28 22:53:59 +01:00
</ div >
2016-07-06 20:44:24 +02:00
< div id = " mobileWordFormPullout " onclick = " MobileToggleWordForm(); " style = " display:none; " >+</ div >
2016-06-07 01:41:02 +02:00
< ? php } ?>
2015-10-26 05:41:25 +01:00
2016-07-06 15:36:24 +02:00
< div id = " dictionaryColumn " >< div id = " dictionaryContent " >
2016-06-20 06:58:27 +02:00
< ? php if ( $display_mode == " build " ) { ?>
2016-07-11 03:38:57 +02:00
< span id = " settingsButton " class = " clickable rightButton " onclick = " ShowSettings() " > Settings </ span >
2016-06-07 01:41:02 +02:00
< ? php } ?>
2015-11-01 21:35:59 +01:00
< h1 id = " dictionaryName " ></ h1 >
2016-06-07 01:41:02 +02:00
2016-06-21 01:13:51 +02:00
< ? php if ( $display_mode != " build " ) { ?>
2016-06-07 01:41:02 +02:00
< h4 id = " dictionaryBy " ></ h4 >
< div id = " incompleteNotice " ></ div >
< ? php } ?>
2016-07-11 03:38:57 +02:00
2016-06-21 01:13:51 +02:00
< ? php if ( $display_mode == " word " ) { ?>
2016-06-22 20:43:39 +02:00
< a class = " clickable toggleButton " href = " /<?php echo $dictionary_to_load ; ?> " > View Full Dictionary </ a >
2016-06-21 01:13:51 +02:00
< ? php } ?>
2016-06-22 20:43:39 +02:00
< span id = " descriptionToggle " class = " clickable toggleButton " onclick = " ToggleDescription(); " >< ? php if ( $display_mode == " view " ) { ?> Hide<?php } else { ?>Show<?php } ?> Description</span>
2016-06-20 06:58:27 +02:00
< div id = " dictionaryDescription " style = " display:<?php if ( $display_mode == " view " ) { ?>block<?php } else { ?>none<?php } ?>; " ></ div >
2016-07-11 03:38:57 +02:00
2016-06-20 06:58:27 +02:00
< ? php if ( $display_mode != " word " ) { ?>
2016-06-22 20:43:39 +02:00
< span id = " searchFilterToggle " class = " clickable toggleButton " onclick = " ToggleSearchFilter(); " >< ? php if ( $display_mode == " view " ) { ?> Hide <?php } ?>Search/Filter Options</span>
2016-06-20 06:58:27 +02:00
< div id = " searchFilterArea " style = " display:<?php if ( $display_mode == " view " ) { ?>block<?php } else { ?>none<?php } ?>; " >
2015-12-03 00:03:23 +01:00
< div id = " searchArea " style = " display:block; " >
< label style = " margin-top:10px; " >
< span > Search </ span >
< div style = " display:block; " >
2016-06-20 06:58:27 +02:00
< input type = " text " id = " searchBox " onclick = " this.select(); " onchange = " <?php Show_Dictionary_Function( $display_mode == " view " ) ?> " style = " display:inline; " />& nbsp ;
< span class = " clickable inline-button " onclick = " document.getElementById('searchBox').value='';<?php Show_Dictionary_Function( $display_mode == " view " ) ?>; " > Clear Search </ span >
2015-12-03 00:03:23 +01:00
</ div >
2016-05-27 01:37:37 +02:00
< div id = " searchOptions " >
2016-06-20 06:58:27 +02:00
< label class = " searchOption " > Word < input type = " checkbox " id = " searchOptionWord " checked = " checked " onchange = " <?php Show_Dictionary_Function( $display_mode == " view " ) ?> " /></ label >
2016-06-29 21:27:14 +02:00
< label class = " searchOption " > Definition < input type = " checkbox " id = " searchOptionSimple " checked = " checked " onchange = " <?php Show_Dictionary_Function( $display_mode == " view " ) ?> " /></ label >
2016-06-20 06:58:27 +02:00
< label class = " searchOption " > Explanation < input type = " checkbox " id = " searchOptionLong " checked = " checked " onchange = " <?php Show_Dictionary_Function( $display_mode == " view " ) ?> " /></ label >
2015-12-03 00:03:23 +01:00
< br />
2016-06-20 06:58:27 +02:00
< label class = " searchOption " > Search Case - Sensitive < input type = " checkbox " id = " searchCaseSensitive " onchange = " <?php Show_Dictionary_Function( $display_mode == " view " ) ?> " /></ label >
< label class = " searchOption " title = " Note: Matching diacritics will appear but may not highlight. " > Ignore Diacritics / Accents < input type = " checkbox " id = " searchIgnoreDiacritics " onchange = " <?php Show_Dictionary_Function( $display_mode == " view " ) ?> " /></ label >
2015-12-03 00:03:23 +01:00
</ div >
</ label >
</ div >
2016-07-11 03:38:57 +02:00
2016-05-27 01:37:37 +02:00
< label style = " display:block;margin-bottom:0; " >< b > Filter Words </ b ></ label >
< div id = " filterOptions " style = " display:block " ></ div >
< div style = " display:block; " >
2016-06-20 06:58:27 +02:00
< span class = " clickable inline-button " onclick = " ToggleAllFilters(true);<?php Show_Dictionary_Function( $display_mode == " view " ) ?>; " >
2016-06-08 02:20:16 +02:00
Check All
</ span >
& nbsp ;
2016-06-20 06:58:27 +02:00
< span class = " clickable inline-button " onclick = " ToggleAllFilters(false);<?php Show_Dictionary_Function( $display_mode == " view " ) ?>; " >
2016-06-08 02:20:16 +02:00
Uncheck All
</ span >
2016-05-27 01:37:37 +02:00
</ div >
2015-10-30 20:23:04 +01:00
</ div >
2016-01-18 20:23:47 +01:00
< div id = " filterWordCount " ></ div >
2016-06-20 06:58:27 +02:00
< ? php } ?>
2016-07-11 03:38:57 +02:00
2016-06-21 01:13:51 +02:00
< div id = " theDictionary " ></ div >
2016-07-06 15:36:24 +02:00
</ div ></ div >
2016-07-11 03:38:57 +02:00
2015-11-03 01:25:08 +01:00
< div id = " rightColumn " class = " googleads " style = " float:right;width:20%;max-width:300px;min-width:200px;overflow:hidden; " >
2015-12-02 01:24:43 +01:00
< ? php if ( $_GET [ 'adminoverride' ] != " noadsortracking " ) { include_once ( " php/google/adsense.php " ); } ?>
2015-11-02 18:28:43 +01:00
</ div >
2015-10-26 22:50:09 +01:00
2016-06-20 06:58:27 +02:00
< ? php if ( $display_mode == " build " ) { ?>
2016-06-07 01:41:02 +02:00
2015-10-26 22:50:09 +01:00
< div id = " settingsScreen " style = " display:none; " >
2016-07-11 03:38:57 +02:00
< div id = " settingsBackgroundFade " class = " fixedFade " onclick = " HideSettings() " ></ div >
< div id = " settingsOptions " class = " fixedPage " >
< span id = " settingsScreenCloseButton " class = " clickable rightButton " onclick = " HideSettings() " > Close </ span >
2015-10-27 23:36:24 +01:00
< h2 > Dictionary Settings </ h2 >
< form id = " settingsForm " >
< div class = " settingsCol " >
2015-10-30 18:38:41 +01:00
< div id = " hideIfComplete " >
2015-10-27 23:36:24 +01:00
< label >
2015-10-30 18:38:41 +01:00
< span > Dictionary Name </ span >
2015-10-27 23:36:24 +01:00
< input type = " text " id = " dictionaryNameEdit " />
</ label >
2016-06-08 02:20:16 +02:00
< label >< span > Dictionary Details < span id = " showFullScreenTextbox " class = " clickable inline-button " onclick = " ShowFullScreenTextbox('dictionaryDescriptionEdit', 'Dictionary Details') " > Maximize </ span ></ span >
2015-10-28 06:41:01 +01:00
< textarea id = " dictionaryDescriptionEdit " ></ textarea >
</ label >
2016-02-27 02:01:05 +01:00
2015-10-27 23:36:24 +01:00
< label >
< span > Parts of Speech </ span >
< input type = " text " id = " dictionaryPartsOfSpeechEdit " />
</ label >
< label >
2015-10-30 18:38:41 +01:00
< span class = " checkboxlabel " > Allow Duplicates </ span >
< input type = " checkbox " id = " dictionaryAllowDuplicates " onchange = " ToggleCaseSensitiveOption() " />
< label >
< span class = " checkboxlabel " > Case - Sensitive </ span >
< input type = " checkbox " id = " dictionaryCaseSensitive " />
</ label >
</ label >
2015-11-07 18:40:28 +01:00
< label class = " inline " >
2016-06-29 21:27:14 +02:00
< span class = " checkboxlabel " > Sort by Definition / Equivalent Word </ span >
2015-11-07 18:40:28 +01:00
< input type = " checkbox " id = " dictionarySortByEquivalent " />
2016-06-29 21:27:14 +02:00
</ label > < span class = " clickable inline-button " onclick = 'alert("By default, your dictionary is organized alphabetically by word. Checking this box will organize it by the \"Definition/Equivalent Word\" field instead");' > ? </ span >
2015-10-30 18:38:41 +01:00
</ div >
2015-11-07 18:40:28 +01:00
< br >
2015-10-30 18:38:41 +01:00
< label >
< span class = " checkboxlabel " > Dictionary is Complete </ span >
2015-10-27 23:36:24 +01:00
< input type = " checkbox " id = " dictionaryIsComplete " />
</ label >
2015-12-22 19:20:33 +01:00
< ? php if ( $current_user > 0 ) { //If logged in, show the log out button. ?>
< label class = " inline " >
< span class = " checkboxlabel " > Dictionary is Public </ span >
< input type = " checkbox " id = " dictionaryIsPublic " onchange = " TogglePublicLink() " />
2016-06-08 02:20:16 +02:00
</ label > < span class = " clickable inline-button " onclick = 'alert("If you save your settings with this checked, your dictionary will be viewable by anyone if they have the public link.");' > ? </ span >
2015-12-22 19:20:33 +01:00
< div id = " publicLink " ></ div >
< ? php } ?>
2015-10-27 23:36:24 +01:00
</ div >
< div class = " settingsCol " >
2015-10-30 20:23:04 +01:00
< label >
< b > Total Entries :</ b > < i id = " numberOfWordsInDictionary " ></ i >
</ label >
2016-06-21 20:30:00 +02:00
< br >
2015-12-22 19:20:33 +01:00
< ? php if ( $current_user > 0 ) { //If logged in, show the special options. ?>
2015-11-26 00:08:24 +01:00
< label >< span > Change Dictionaries </ span >
2015-11-28 07:17:52 +01:00
< select id = " userDictionaries " onchange = " ChangeDictionary(); " ></ select >
2015-11-26 00:08:24 +01:00
</ label >
2016-06-21 20:30:00 +02:00
< br >
2015-11-26 00:08:24 +01:00
< label >< button type = " button " onclick = " CreateNewDictionary() " style = " cursor:pointer; " > Create a New Dictionary </ button ></ label >
< ? php } ?>
2016-06-21 20:30:00 +02:00
< label style = " display:inline-block;margin-right:8px; " >< button type = " button " onclick = " ShowInfo('exportForm') " > Export ...</ button ></ label >
< label style = " display:inline-block; " >< button type = " button " onclick = " ShowInfo('importForm') " > Import ...</ button ></ label >
< br >< br >
2015-12-01 00:08:43 +01:00
< ? php if ( $current_user > 0 ) { //If logged in, show the log out button. ?>
< label >< button type = " button " onclick = " DeleteCurrentDictionary() " style = " cursor:pointer; " > Delete Current Dictionary </ button ></ label >
< ? php } else { //If logged in, show the log out button. ?>
< label >< button type = " button " onclick = " EmptyWholeDictionary() " style = " cursor:pointer; " > Empty Current Dictionary </ button ></ label >
< ? php } ?>
2015-10-27 23:36:24 +01:00
</ div >
< div id = " settingsSaveButtons " >
< span id = " settingsErrorMessage " ></ span >< br >
2016-07-11 03:38:57 +02:00
< button type = " button " class = " rightButton " onclick = " SaveSettings(); HideSettings(); return false; " > Save and Close </ button >
< button type = " button " class = " rightButton " onclick = " SaveSettings(); return false; " style = " margin-right:2px; " > Save </ button >
2015-10-27 23:36:24 +01:00
</ div >
</ form >
</ div >
2015-10-26 22:50:09 +01:00
</ div >
2016-07-11 03:38:57 +02:00
2016-02-27 02:01:05 +01:00
< div id = " fullScreenTextboxScreen " style = " display:none; " >
2016-07-11 03:38:57 +02:00
< div id = " fullScreenTextboxBackgroundFade " class = " fixedFade " onclick = " HideFullScreenTextbox() " ></ div >
2016-02-27 02:13:52 +01:00
< div id = " expandedTextboxId " style = " display:none;width:0px;height:0px; " ></ div >
2016-07-11 03:38:57 +02:00
< div id = " fullScreenTextboxPage " class = " fixedPage " >
< span id = " fullScreenTextboxScreenCloseButton " class = " clickable rightButton " onclick = " HideFullScreenTextbox() " > Minimize </ span >
2016-02-27 16:54:13 +01:00
< label >< span id = " fullScreenTextboxLabel " ></ span ></ label >
2016-02-27 02:01:05 +01:00
< textarea id = " fullScreenTextbox " ></ textarea >
</ div >
</ div >
2016-06-07 01:41:02 +02:00
< ? php } ?>
2016-07-11 03:38:57 +02:00
2015-11-02 18:28:43 +01:00
< div id = " infoScreen " style = " display:none; " >
2016-07-11 03:38:57 +02:00
< div id = " infoBackgroundFade " class = " fixedFade " onclick = " HideInfo() " ></ div >
< div id = " infoPage " class = " fixedPage " >
< span id = " infoScreenCloseButton " class = " clickable rightButton " onclick = " HideInfo() " > Close </ span >
2015-11-02 18:28:43 +01:00
< div id = " infoText " ></ div >
2015-11-01 21:35:59 +01:00
</ div >
</ div >
2015-12-01 00:08:43 +01:00
2015-12-12 02:06:47 +01:00
< ? php if ( $current_user > 0 ) {
$user_email = Get_User_Email ( $current_user );
?>
< div id = " accountSettingsScreen " style = " display:none; " >
2016-07-11 03:38:57 +02:00
< div id = " accountSettingsBackgroundFade " class = " fixedFade " onclick = " HideAccountSettings() " ></ div >
< div id = " accountSettingsPage " class = " fixedPage " >
< span id = " accountSettingsScreenCloseButton " class = " clickable rightButton " onclick = " HideAccountSettings() " > Close </ span >
2015-12-12 02:06:47 +01:00
< div class = " settingsCol " >< form id = " accountSettingsForm " method = " post " action = " ?accountsettings " >
< h2 > Account Settings </ h2 >
< label >< span > Email </ span >
< input type = " email " id = " accountSettingsEmailField " name = " email " value = " <?php echo $user_email ; ?> " onchange = " WarnEmailChange() " />
< input type = " hidden " id = " accountSettingsPreviousEmailField " name = " previousemail " value = " <?php echo $user_email ; ?> " />
</ label >
< div id = " accountSettingsEmailChangeWarning " style = " display:none;font-weight:bold;color:#dd5500;font-size:11px;margin-bottom:10px; " > If you change your email address , please note that you will no longer be able to log in with your old email address , < ? php echo $user_email ; ?> .<br>Change it back unless you are completely sure that you want to change your email address!</div>
2016-06-08 04:31:52 +02:00
< label >< span > Public Name < span class = " clickable inline-button " onclick = " ExplainPublicName() " > ? </ span ></ span >
2015-12-12 02:06:47 +01:00
< input type = " text " id = " accountSettingsPublicNameField " name = " publicname " value = " <?php echo Get_Public_Name_By_Id( $current_user ); ?> " />
</ label >
2015-12-17 02:13:45 +01:00
< label style = " display:inline; " >< b > Allow Emails </ b >
< input type = " checkbox " id = " createAccountAllowEmailsField " name = " allowemails " checked = " checked " />
2016-06-08 04:31:52 +02:00
</ label > < span class = " clickable inline-button " onclick = " ExplainAllowEmails() " > ? </ span >
2015-12-12 02:06:47 +01:00
< div id = " accountSettingsError " style = " font-weight:bold;color:red; " ></ div >
< button type = " submit " id = " accountSettingsSubmitButton " onclick = " ValidateAccountSettings(); return false; " > Save Settings </ button >
2016-06-22 20:43:39 +02:00
< br >
</ form ></ div >
< div class = " settingsCol " >
< br >
2015-12-12 02:06:47 +01:00
< h2 > Reset Your Password </ h2 >
< p style = " font-size: 12px; " > Click the button below to reload the page and show the Reset Password form . Filling out this form will instantly change your password , and you will need to log in using the new password from that point forward .</ p >
< span id = " resetPassword " class = " clickable " onclick = " this.innerHTML='Loading...';LoggedInResetPassword(); " style = " margin-top:20px; " > Reset Password </ span >
2018-05-16 21:04:36 +02:00
< br >
< h2 > Request Your Data </ h2 >
< p style = " font-size: 12px; " >
Per your < a href = " https://www.eugdpr.org/ " target = " _blank " > GDPR </ a > rights in Articles 13 – 15 and 20 , we allow you to request any and all data we have stored about you . The only data we have about you personally is your email address and your Public Name , if you decided to set one . All other data ( your Dictionary data ) is visible and accessible via the Export button under your Dictionary ' s Settings . Send an email to help @ lexicon . ga to request your information .
</ p >
< h2 > Delete Your Account </ h2 >
< p style = " font-size: 12px; " >
Per your < a href = " https://www.eugdpr.org/ " target = " _blank " > GDPR </ a > rights in Articles 17 , if you wish for your account to be deleted , please contact us at help @ lexicon . ga , and we will delete your account and all associated dictionaries and words as quickly as possible . Note that you can delete dictionaries yourself via your Dictionary ' s Settings .
</ p >
< p style = " font-size: 12px; " >
Anything that is deleted from our system is permanently and irretrievably removed from our system and cannot be restored , though search engines or internet archives may retain a cached version of your content ( there is nothing we can do about this , and you will need to seek out removal of that information by directly contacting the services that are caching your data ) .
</ p >
2016-06-22 20:43:39 +02:00
</ div >
2015-12-12 02:06:47 +01:00
</ div >
</ div >
< ? php
}
?>
2016-06-20 06:58:27 +02:00
< ? php if ( $display_mode == " build " ) { ?>
2015-12-12 20:24:47 +01:00
< div id = " loadAfterDeleteScreen " style = " display:none; " >
2016-07-11 03:38:57 +02:00
< div id = " loadAfterDeleteFade " class = " fixedFade " ></ div >
< div id = " loadAfterDeletePage " class = " fixedPage " >
2015-12-12 20:24:47 +01:00
< div class = " settingsCol " >
< h1 > Dictionary Deleted </ h1 >
< label > Select dictionary to load :< br />
< select id = " loadAfterDelete " onchange = " ChangeDictionary(this);document.getElementById('loadAfterDeleteScreen').style.display = 'none'; " ></ select >
</ label >
< p > Or </ p >
2016-06-08 04:31:52 +02:00
< label >< button type = " button " onclick = " CreateNewDictionary();document.getElementById('loadAfterDeleteScreen').style.display = 'none'; " > Create a New Dictionary </ button ></ label >
2015-12-12 20:24:47 +01:00
</ div >
</ div >
</ div >
2016-06-07 01:41:02 +02:00
< ? php } ?>
2015-12-12 20:24:47 +01:00
2015-11-01 21:35:59 +01:00
</ contents >
2015-10-30 20:23:04 +01:00
< footer >
2016-07-03 05:25:26 +02:00
< div id = " footer-content " >
2019-06-13 19:11:42 +02:00
Lexiconga only guaranteed to work in up - to - date browsers . < a href = " https://buymeacoff.ee/robbieantenesse " class = " clickable inline-button " target = " _blank " > Support </ a > < a href = " https://blog.lexicon.ga " class = " clickable inline-button " target = " _blank " > Blog </ a > < a href = " /issues " class = " clickable inline-button " target = " _blank " > Issues </ a > < a href = " /updates " class = " clickable inline-button " target = " _blank " > Updates </ a > | < span class = " clickable inline-button " onclick = " ShowInfo('termsText') " style = " font-size:12px; " > Terms </ span > < span class = " clickable inline-button " onclick = " ShowInfo('privacyText') " style = " font-size:12px; " > Privacy </ span >
2016-07-03 05:25:26 +02:00
</ div >
2015-10-30 20:23:04 +01:00
</ footer >
2016-07-11 03:38:57 +02:00
2015-11-02 18:28:43 +01:00
<!-- Markdown Parser -->
2016-06-20 06:58:27 +02:00
< script src = " /js/marked.js " ></ script >
2016-06-08 21:43:58 +02:00
<!-- CSV Parser -->
2016-06-20 06:58:27 +02:00
< script src = " /js/papaparse.js " ></ script >
2016-06-10 07:27:41 +02:00
<!-- JSON Search -->
2016-06-20 06:58:27 +02:00
< script src = " /js/defiant.js " ></ script >
2015-12-02 01:24:43 +01:00
<!-- Diacritics Removal for Exports -->
2016-06-20 06:58:27 +02:00
< script src = " /js/removeDiacritics.js " ></ script >
2016-03-11 17:54:25 +01:00
<!-- Helper Functions -->
2016-06-20 06:58:27 +02:00
< script src = " /js/helpers.js " ></ script >
2016-03-11 17:54:25 +01:00
<!-- Main Functions -->
2016-06-20 06:58:27 +02:00
< script src = " /js/dictionaryBuilder.js " ></ script >
2016-03-11 17:54:25 +01:00
<!-- UI Functions -->
2016-06-20 06:58:27 +02:00
< script src = " /js/ui.js " ></ script >
2016-06-21 01:13:51 +02:00
< ? php if ( $display_mode != " build " ) { ?>
2016-06-07 01:41:02 +02:00
<!-- Public View Functions -->
2016-06-20 06:58:27 +02:00
< script src = " /js/publicView.js " ></ script >
2016-06-07 01:41:02 +02:00
< ? php } ?>
2019-06-13 19:11:42 +02:00
< ? php if ( ! isset ( $_GET [ 'adminoverride' ]) || $_GET [ 'adminoverride' ] != " noadsortracking " ) { include_once ( " php/google/analytics.php " ); } ?>
2015-12-22 01:52:56 +01:00
< script >
2016-06-21 20:30:00 +02:00
var aboutText = termsText = privacyText = loginForm = forgotForm = exportForm = importForm = " Loading... " ;
2016-06-21 01:13:51 +02:00
< ? php if ( $display_mode != " build " ) { ?>
2016-06-07 01:41:02 +02:00
window . onload = function () {
2016-06-21 01:13:51 +02:00
ShowPublicDictionary ( < ? php if ( $display_mode == " word " ) echo " true " ; ?> );
< ? php
if ( $display_mode != " word " ) { // don't try to set the filters
echo " SetPublicPartsOfSpeech() " ;
} ?>
2016-07-11 03:38:57 +02:00
2016-06-21 01:13:51 +02:00
GetTextFile ( " /README.md " , " aboutText " , true );
GetTextFile ( " /TERMS.md " , " termsText " , true );
GetTextFile ( " /PRIVACY.md " , " privacyText " , true );
GetTextFile ( " /LOGIN.form " , " loginForm " , false );
GetTextFile ( " /FORGOT.form " , " forgotForm " , false );
2016-06-21 20:30:00 +02:00
GetTextFile ( " /EXPORT.form " , " exportForm " , false );
2016-06-21 01:13:51 +02:00
GetTextFile ( " /IMPORT.form " , " importForm " , false );
2016-06-07 01:41:02 +02:00
}
< ? php } else { ?>
2016-03-11 17:54:25 +01:00
ready ( function () {
Initialize ();
2016-07-11 03:38:57 +02:00
});
2016-06-07 01:41:02 +02:00
< ? php } ?>
2016-06-22 20:43:39 +02:00
var loggedIn = < ? php echo ( $current_user > 0 ) ? " true " : " false " ; ?> ;
2015-12-22 01:52:56 +01:00
</ script >
2015-10-26 05:41:25 +01:00
</ body >
</ html >