login_form.php 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261
  1. <html>
  2. <head>
  3. <title>Tiny Tiny RSS : Login</title>
  4. <link rel="stylesheet" type="text/css" href="lib/dijit/themes/claro/claro.css"/>
  5. <link rel="stylesheet" type="text/css" href="tt-rss.css">
  6. <link rel="shortcut icon" type="image/png" href="images/favicon.png">
  7. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  8. <script type="text/javascript" src="lib/dojo/dojo.js"></script>
  9. <script type="text/javascript" src="lib/dijit/dijit.js"></script>
  10. <script type="text/javascript" src="lib/dojo/tt-rss-layer.js"></script>
  11. <script type="text/javascript" src="lib/prototype.js"></script>
  12. <script type="text/javascript" src="js/functions.js"></script>
  13. <script type="text/javascript" charset="utf-8" src="errors.php?mode=js"></script>
  14. <script type="text/javascript">
  15. Event.observe(window, 'load', function() {
  16. init();
  17. });
  18. </script>
  19. <style type="text/css">
  20. body#ttrssLogin {
  21. padding : 2em;
  22. font-size : 14px;
  23. }
  24. fieldset {
  25. margin-left : auto;
  26. margin-right : auto;
  27. display : block;
  28. width : 400px;
  29. border-width : 0px;
  30. }
  31. input.input {
  32. font-family : sans-serif;
  33. font-size : medium;
  34. border-spacing : 2px;
  35. border : 1px solid #b5bcc7;
  36. padding : 2px;
  37. }
  38. label {
  39. width : 120px;
  40. margin-right : 20px;
  41. display : inline-block;
  42. text-align : right;
  43. color : gray;
  44. }
  45. div.header {
  46. border-width : 0px 0px 1px 0px;
  47. border-style : solid;
  48. border-color : #88b0f0;
  49. margin-bottom : 1em;
  50. padding-bottom : 5px;
  51. }
  52. div.footer {
  53. margin-top : 1em;
  54. padding-top : 5px;
  55. border-width : 1px 0px 0px 0px;
  56. border-style : solid;
  57. border-color : #88b0f0;
  58. text-align : center;
  59. color : gray;
  60. font-size : 12px;
  61. }
  62. a.forgotpass {
  63. text-align : right;
  64. font-size : 11px;
  65. display : inline-block;
  66. }
  67. a {
  68. color : #4684ff;
  69. }
  70. a:hover {
  71. color : black;
  72. }
  73. div.footer a {
  74. color : gray;
  75. }
  76. div.footer a:hover {
  77. color : #88b0f0;
  78. }
  79. div.row {
  80. padding : 0px 0px 5px 0px;
  81. }
  82. div.row-error {
  83. color : red;
  84. text-align : center;
  85. padding : 0px 0px 5px 0px;
  86. }
  87. </style>
  88. </head>
  89. <body id="ttrssLogin" class="claro">
  90. <script type="text/javascript">
  91. function init() {
  92. dojo.require("dijit.form.Button");
  93. dojo.require("dijit.form.CheckBox");
  94. dojo.require("dijit.form.Form");
  95. dojo.require("dijit.form.Select");
  96. dojo.require("dijit.form.TextBox");
  97. dojo.require("dijit.form.ValidationTextBox");
  98. dojo.parser.parse();
  99. fetchProfiles();
  100. dijit.byId("bw_limit").attr("checked", getCookie("ttrss_bwlimit") == 'true');
  101. document.forms.loginForm.login.focus();
  102. }
  103. function fetchProfiles() {
  104. try {
  105. var query = "op=getProfiles&login=" + param_escape(document.forms["loginForm"].login.value);
  106. if (query) {
  107. new Ajax.Request("public.php", {
  108. parameters: query,
  109. onComplete: function(transport) {
  110. if (transport.responseText.match("select")) {
  111. $('profile_box').innerHTML = transport.responseText;
  112. dojo.parser.parse('profile_box');
  113. }
  114. } });
  115. }
  116. } catch (e) {
  117. exception_error("fetchProfiles", e);
  118. }
  119. }
  120. function gotoRegForm() {
  121. window.location.href = "register.php";
  122. return false;
  123. }
  124. function bwLimitChange(elem) {
  125. try {
  126. var limit_set = elem.checked;
  127. setCookie("ttrss_bwlimit", limit_set,
  128. <?php print SESSION_COOKIE_LIFETIME ?>);
  129. } catch (e) {
  130. exception_error("bwLimitChange", e);
  131. }
  132. }
  133. </script>
  134. <?php $return = urlencode($_SERVER["REQUEST_URI"]) ?>
  135. <form action="public.php?return=<?php echo $return ?>"
  136. dojoType="dijit.form.Form" method="POST" id="loginForm" name="loginForm">
  137. <input dojoType="dijit.form.TextBox" style="display : none" name="op" value="login">
  138. <div class='header'>
  139. <img src="images/logo_wide.png">
  140. </div>
  141. <div class='form'>
  142. <fieldset>
  143. <?php if ($_SESSION["login_error_msg"]) { ?>
  144. <div class="row-error">
  145. <?php echo $_SESSION["login_error_msg"] ?>
  146. </div>
  147. <?php $_SESSION["login_error_msg"] = ""; ?>
  148. <?php } ?>
  149. <div class="row">
  150. <label><?php echo __("Login:") ?></label>
  151. <input name="login" class="input"
  152. onchange="fetchProfiles()" onfocus="fetchProfiles()" onblur="fetchProfiles()"
  153. style="width : 220px"
  154. required="1"
  155. value="<?php echo $_SESSION["fake_login"] ?>" />
  156. </div>
  157. <?php if (strpos(PLUGINS, "auth_internal") !== FALSE) { ?>
  158. <div class="row">
  159. <label><?php echo __("Password:") ?></label>
  160. <input type="password" name="password" required="1"
  161. style="width : 220px" class="input"
  162. value="<?php echo $_SESSION["fake_password"] ?>"/>
  163. <label></label>
  164. <a class='forgotpass' href="public.php?op=forgotpass"><?php echo __("I forgot my password") ?></a>
  165. </div>
  166. <?php } ?>
  167. <div class="row">
  168. <label><?php echo __("Language:") ?></label>
  169. <?php
  170. print_select_hash("language", $_COOKIE["ttrss_lang"], get_translations(),
  171. "style='width : 220px; margin : 0px' dojoType='dijit.form.Select'");
  172. ?>
  173. </div>
  174. <div class="row">
  175. <label><?php echo __("Profile:") ?></label>
  176. <span id='profile_box'><select disabled='disabled' dojoType='dijit.form.Select'
  177. style='width : 220px; margin : 0px'>
  178. <option><?php echo __("Default profile") ?></option></select></span>
  179. </div>
  180. <div class="row">
  181. <label>&nbsp;</label>
  182. <input dojoType="dijit.form.CheckBox" name="bw_limit" id="bw_limit" type="checkbox"
  183. onchange="bwLimitChange(this)">
  184. <label style='display : inline' for="bw_limit"><?php echo __("Use less traffic") ?></label>
  185. </div>
  186. <?php if (SESSION_COOKIE_LIFETIME > 0) { ?>
  187. <div class="row">
  188. <label>&nbsp;</label>
  189. <input dojoType="dijit.form.CheckBox" name="remember_me" id="remember_me" type="checkbox">
  190. <label style='display : inline' for="remember_me"><?php echo __("Remember me") ?></label>
  191. </div>
  192. <?php } ?>
  193. <div class="row" style='text-align : right'>
  194. <button dojoType="dijit.form.Button" type="submit"><?php echo __('Log in') ?></button>
  195. <?php if (defined('ENABLE_REGISTRATION') && ENABLE_REGISTRATION) { ?>
  196. <button onclick="return gotoRegForm()" dojoType="dijit.form.Button">
  197. <?php echo __("Create new account") ?></button>
  198. <?php } ?>
  199. </div>
  200. </fieldset>
  201. </div>
  202. <div class='footer'>
  203. <a href="http://tt-rss.org/">Tiny Tiny RSS</a>
  204. <?php if (!defined('HIDE_VERSION')) { ?>
  205. v<?php echo VERSION ?>
  206. <?php } ?>
  207. &copy; 2005&ndash;<?php echo date('Y') ?> <a href="http://fakecake.org/">Andrew Dolgov</a>
  208. </div>
  209. </form>
  210. </body></html>