Demo Discussion
Forum Config Examples Contributions Vulnerabilities
  Discussion forum about ELOG, Page 164 of 807  Not logged in ELOG logo
New entries since:Thu Jan 1 01:00:00 1970
ID Date Icon Author Author Email Category OS ELOG Version Subjectdown
  68627   Wed May 31 13:28:51 2017 Warning Andreas Luedekeandreas.luedeke@psi.chBug reportLinux3.1.1Re: inactive users
> Hi,
>   I reopen this old thread since I'm having a similar problem.
> 
> I'm running ELOG V3.1.1-0767eb0 on ubuntu with webserver authentication, and I'd like to remove 'active' checkbox as well.
> 
> The problem that we found is that if any user click on the [Set None] button at the bottom of the Config page in order to unsubscribe from all mail notification,
> *all* the checkbox are toggled, not only those for the email notification. And this includes also the "active user" as well.

I can confirm that this bug is present even in this forum and in my current version (ELOG V3.1.3-aded4ae).
And I am positive that this is a bug: it was certainly not the intended behaviour.
  68628   Wed May 31 16:02:46 2017 Reply Stefano Lacaprarastefano.lacaprara@pd.infn.itBug reportLinux3.1.1Re: inactive users
Hi,
  a possible solution is to change the current SetAll() and SetNone() javascript functions to something like:


  <!--
function SetNone()
{
  for(var i=0,els=document.querySelectorAll('[name^="sub_lb"]'); i<els.length; i++)
  {
    els[i].checked = false;
  }
}
function SetAll()
{
  for(var i=0,els=document.querySelectorAll('[name^="sub_lb"]'); i<els.length; i++)
  {
    els[i].checked = true;
  }
}
//-->

It works on Chromium 58.x and Firefox 53.x, I don't know about other browsers.

The javascript snippet is generated in function elogd.c: void show_config_page(LOGBOOK * lbs) (line 13960-984 on my version of the source code).

Best,
  Stefano
  Draft   Mon Feb 26 18:16:35 2018 Reply Stefano Lacaprarastefano.lacaprara@pd.infn.itBug reportLinux3.1.1Re: inactive users
Hi,
  sorry to bother again on this issue, but it is causing me some trouble, as many of my users are using the "SetNone" button in their config page, and doing so they deactivate their account, which I have to re-activate manually.

The warning about "Are you sure you want to deactivate your own account ..." is actually triggered only when someone toggle the "active" radio button, but not when the "SetNone" function is used. In that case no warning is present, and the user just deactivate his/her account. I'm sure that this is not the intended behavior.

I attach a modified version of elogd.c (based on git c1866af75bb2fe62aa868c4cf562f43a08e4b499 ) with the modified javascript I proposed earlier in this thread.

best,
  Stefano
Attachment 1: elogd.c
/********************************************************************

   Name:         elogd.c
   Created by:   Stefan Ritt
   Copyright 2000 + Stefan Ritt

   ELOG is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation, either version 3 of the License, or
   (at your option) any later version.

   ELOG is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.

   In addition, as a special exception, the copyright holders give
   permission to link the code of portions of this program with the
   OpenSSL library under certain conditions as described in each
   individual source file, and distribute linked combinations
   including the two.
   You must obey the GNU General Public License in all respects
   for all of the code used other than OpenSSL.  If you modify
   file(s) with this exception, you may extend this exception to your
   version of the file(s), but you are not obligated to do so.  If you
   do not wish to do so, delete this exception statement from your
   version.  If you delete this exception statement from all source
   files in the program, then also delete it here.

   You should have received a copy of the GNU General Public License
   along with ELOG.  If not, see <http://www.gnu.org/licenses/>.


   Contents:     Web server program for Electronic Logbook ELOG

\********************************************************************/

#include "elogd.h"
#include "git-revision.h"

const char *_git_revision = GIT_REVISION;

BOOL running_as_daemon;         /* Running as a daemon/service? */
int elog_tcp_port;              /* Server's TCP port            */

static void (*printf_handler) (const char *);   /* Handler to printf for logging */
static void (*fputs_handler) (const char *);    /* Handler to fputs for logging  */
static FILE *current_output_stream = NULL;      /* Currently used output stream  */

char *return_buffer;
int return_buffer_size;
int strlen_retbuf;
int keep_alive;
char header_buffer[20000];
int return_length;
char host_name[256];
char referer[256];
char browser[256];
char config_file[256];
char resource_dir[256];
char logbook_dir[256];
char listen_interface[256];
char theme_name[80];
char http_host[256];
char http_user[256];

char _param[MAX_PARAM][NAME_LENGTH];
char _value[MAX_PARAM][NAME_LENGTH];
char _mtext[TEXT_SIZE];
char _cmdline[CMD_SIZE];
char *_attachment_buffer;
int _attachment_size;
int _max_content_length = MAX_CONTENT_LENGTH;
struct in_addr rem_addr;
char rem_host[256];
char rem_host_ip[256];
int _sock;
BOOL use_keepalive, enable_execute = FALSE;
BOOL ckedit_exist, image_magick_exist;
int _verbose_level, _current_message_id;
int _logging_level, _ssl_flag;

LOGBOOK *lb_list = NULL;

#define VERBOSE_URL     1
#define VERBOSE_INFO    2
#define VERBOSE_DEBUG   3

#ifdef HAVE_SSL
SSL *_ssl_con;
#endif

char *mname[] = { "January", "February", "March", "April", "May", "June", "July", "August", "September",
   "October", "November", "December"
};

char type_list[MAX_N_LIST][NAME_LENGTH] = { "Routine", "Other" };

char category_list[MAX_N_LIST][NAME_LENGTH] = { "General", "Other",
};

char author_list[MAX_N_LIST][NAME_LENGTH] = { "" };

char attr_list[MAX_N_ATTR][NAME_LENGTH];
char attr_options[MAX_N_ATTR][MAX_N_LIST][NAME_LENGTH];
int attr_flags[MAX_N_ATTR];

char attr_list_default[][NAME_LENGTH] = { "Author", "Type", "Category", "Subject", "" };

char attr_options_default[][MAX_N_LIST][NAME_LENGTH] = { {""}, {"Routine", "Other"},
{"General", "Other"}, {""}
};

int attr_flags_default[] = { AF_REQUIRED, 0, 0, 0 };

struct {
   char ext[32];
   char type[80];
} filetype[] = {

   {
   ".AI", "application/postscript"}, {
   ".ASC", "text/plain"}, {
   ".BZ2", "application/x-bzip2"}, {
   ".CFG", "text/plain"}, {
   ".CHRT", "application/x-kchart"}, {
   ".CONF", "text/plain"}, {
   ".CSH", "application/x-csh"}, {
   ".CSS", "text/css"}, {
   ".DOC", "application/msword"}, {
   ".DVI", "application/x-dvi"}, {
   ".EPS", "application/postscript"}, {
   ".GIF", "image/gif"}, {
   ".GZ", "application/x-gzip"}, {
   ".HTM", "text/html"}, {
   ".HTML", "text/html"}, {
   ".ICO", "image/x-icon"}, {
   ".JPEG", "image/jpeg"}, {
   ".JPG", "image/jpeg"}, {
   ".JS", "application/x-javascript"}, {
   ".KPR", "application/x-kpresenter"}, {
   ".KSP", "application/x-kspread"}, {
   ".KWD", "application/x-kword"}, {
   ".MP3", "audio/mpeg"}, {
   ".OGG", "application/x-ogg"}, {
   ".PDF", "application/pdf"}, {
   ".PNG", "image/png"}, {
   ".PS", "application/postscript"}, {
   ".RAM", "audio/x-pn-realaudio"}, {
   ".RM", "audio/x-pn-realaudio"}, {
   ".RM", "audio/x-pn-realaudio"}, {
   ".RM", "audio/x-pn-realaudio"}, {
   ".RPM", "application/x-rpm"}, {
   ".RTF", "application/rtf"}, {
   ".SH", "application/x-sh"}, {
   ".SVG", "image/svg+xml"}, {
   ".TAR", "application/x-tar"}, {
   ".TCL", "application/x-tcl"}, {
   ".TEX", "application/x-tex"}, {
   ".TGZ", "application/x-gzip"}, {
   ".TIF", "image/tiff"}, {
   ".TIFF", "image/tiff"}, {
   ".TXT", "text/plain"}, {
   ".WAV", "audio/x-wav"}, {
   ".XLS", "application/x-msexcel"}, {
   ".XML", "text/xml"}, {
   ".XSL", "text/xml"}, {
   ".ZIP", "application/x-zip-compressed"}, {

      /* Open XML file types */
   ".DOCM", "application/vnd.ms-word.document.macroEnabled.12"}, {
   ".DOCX", "application/vnd.openxmlformats-officedocument.wordprocessingml.document"}, {
   ".DOTM", "application/vnd.ms-word.template.macroEnabled.12"}, {
   ".DOTX", "application/vnd.openxmlformats-officedocument.wordprocessingml.template"}, {
   ".PPSM", "application/vnd.ms-powerpoint.slideshow.macroEnabled.12"}, {
   ".PPSX", "application/vnd.openxmlformats-officedocument.presentationml.slideshow"}, {
   ".PPTM", "application/vnd.ms-powerpoint.presentation.macroEnabled.12"}, {
   ".PPTX", "application/vnd.openxmlformats-officedocument.presentationml.presentation"}, {
   ".XLSB", "application/vnd.ms-excel.sheet.binary.macroEnabled.12"}, {
   ".XLSM", "application/vnd.ms-excel.sheet.macroEnabled.12"}, {
   ".XLSX", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"}, {
   ".XPS", "application/vnd.ms-xpsdocument"}, {

"", ""},};

struct {
   char language[32];
   char abbrev[32];
} lang_table[] = {
   
   { "brazilian",    "br"},
   { "bulgarian",    "bg"},
   { "czech",        "cz"},
   { "danish",       "dk"},
   { "dutch",        "nl"},
   { "french",       "fr"},
   { "german",       "de"},
   { "indonesia",    "id"},
   { "italian",      "it"},
   { "japanese",     "jp"},
   { "polish",       "pl"},
   { "ru_CP1251",    "ru"},
   { "slowak",       "sk"},
   { "spanish",      "es"},
   { "swedish",      "se"},
   { "turkish",      "tr"},
   { "zh_CN-GB2314", "zh"},
   { "zh_CN-UTF8",   "zh"},
   { "", "" }
};

char _convert_cmd[256];
char _identify_cmd[256];

#ifdef OS_WINNT
int run_service(void);
#endif

#ifdef OS_UNIX
gid_t orig_gid;                 /* Original effective GID before dropping privilege */
uid_t orig_uid;                 /* Original effective UID before dropping privilege */
char pidfile[256];              /* Pidfile name                                     */
#endif

#ifdef __CYGWIN__               /* bug in cygwin, 'timezone' not linked automatically */
long _timezone;
#endif

/*---- Funcions from the MIDAS library -----------------------------*/

#define my_toupper(_c)    ( ((_c)>='a' && (_c)<='z') ? ((_c)-'a'+'A') : (_c) )
#define my_tolower(_c)    ( ((_c)>='A' && (_c)<='Z') ? ((_c)-'A'+'a') : (_c) )

BOOL strieq(const char *str1, const char *str2)
{
   char c1, c2;

   if (str1 == NULL && str2 == NULL)
      return TRUE;
   if (str1 == NULL || str2 == NULL)
      return FALSE;
   if (strlen(str1) != strlen(str2))
      return FALSE;

   while (*str1) {
      c1 = *str1++;
      c2 = *str2++;
      if (my_toupper(c1) != my_toupper(c2))
         return FALSE;
   }

   if (*str2)
      return FALSE;

   return TRUE;
}

BOOL strnieq(const char *str1, const char *str2, int n)
{
   char c1, c2;
   int i;

   if (str1 == NULL && str2 == NULL && n == 0)
      return TRUE;
   if (str1 == NULL || str2 == NULL)
      return FALSE;
   if ((int) strlen(str1) < n || (int) strlen(str2) < n)
      return FALSE;

   for (i = 0; i < n && *str1; i++) {
      c1 = *str1++;
      c2 = *str2++;
      if (my_toupper(c1) != my_toupper(c2))
         return FALSE;
   }

   if (i < n)
      return FALSE;

   return TRUE;
}

char *stristr(const char *str, const char *pattern)
{
   char c1, c2, *ps, *pp;

   if (str == NULL || pattern == NULL)
      return NULL;

   while (*str) {
      ps = (char *) str;
      pp = (char *) pattern;
      c1 = *ps;
      c2 = *pp;
      if (my_toupper(c1) == my_toupper(c2)) {
         while (*pp) {
            c1 = *ps;
            c2 = *pp;

            if (my_toupper(c1) != my_toupper(c2))
... 30944 more lines ...
  68745   Mon Feb 26 18:27:09 2018 Reply Stefano Lacaprarastefano.lacaprara@pd.infn.itBug reportLinux3.1.3Re: inactive users
Hi,
  sorry to bother again on this issue, but it is causing me some trouble, as many of my users are using the "SetNone" button in their config page, and doing so they deactivate their account, which I have to 
re-activate manually.

The warning about "Are you sure you want to deactivate your own account ..." is actually triggered only when someone toggle the "active" radio button, but not when the "SetNone" function is used. In that 
case no warning is present, and the user just deactivate his/her account. I'm sure that this is not the intended behavior.

I attach a modified version of elogd.c (based on git c1866af75bb2fe62aa868c4cf562f43a08e4b499 ) with the modified javascript I proposed earlier in this thread.

best,
  Stefano
Attachment 1: elogd.c
/********************************************************************

   Name:         elogd.c
   Created by:   Stefan Ritt
   Copyright 2000 + Stefan Ritt

   ELOG is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation, either version 3 of the License, or
   (at your option) any later version.

   ELOG is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.

   In addition, as a special exception, the copyright holders give
   permission to link the code of portions of this program with the
   OpenSSL library under certain conditions as described in each
   individual source file, and distribute linked combinations
   including the two.
   You must obey the GNU General Public License in all respects
   for all of the code used other than OpenSSL.  If you modify
   file(s) with this exception, you may extend this exception to your
   version of the file(s), but you are not obligated to do so.  If you
   do not wish to do so, delete this exception statement from your
   version.  If you delete this exception statement from all source
   files in the program, then also delete it here.

   You should have received a copy of the GNU General Public License
   along with ELOG.  If not, see <http://www.gnu.org/licenses/>.


   Contents:     Web server program for Electronic Logbook ELOG

\********************************************************************/

#include "elogd.h"
#include "git-revision.h"

const char *_git_revision = GIT_REVISION;

BOOL running_as_daemon;         /* Running as a daemon/service? */
int elog_tcp_port;              /* Server's TCP port            */

static void (*printf_handler) (const char *);   /* Handler to printf for logging */
static void (*fputs_handler) (const char *);    /* Handler to fputs for logging  */
static FILE *current_output_stream = NULL;      /* Currently used output stream  */

char *return_buffer;
int return_buffer_size;
int strlen_retbuf;
int keep_alive;
char header_buffer[20000];
int return_length;
char host_name[256];
char referer[256];
char browser[256];
char config_file[256];
char resource_dir[256];
char logbook_dir[256];
char listen_interface[256];
char theme_name[80];
char http_host[256];
char http_user[256];

char _param[MAX_PARAM][NAME_LENGTH];
char _value[MAX_PARAM][NAME_LENGTH];
char _mtext[TEXT_SIZE];
char _cmdline[CMD_SIZE];
char *_attachment_buffer;
int _attachment_size;
int _max_content_length = MAX_CONTENT_LENGTH;
struct in_addr rem_addr;
char rem_host[256];
char rem_host_ip[256];
int _sock;
BOOL use_keepalive, enable_execute = FALSE;
BOOL ckedit_exist, image_magick_exist;
int _verbose_level, _current_message_id;
int _logging_level, _ssl_flag;

LOGBOOK *lb_list = NULL;

#define VERBOSE_URL     1
#define VERBOSE_INFO    2
#define VERBOSE_DEBUG   3

#ifdef HAVE_SSL
SSL *_ssl_con;
#endif

char *mname[] = { "January", "February", "March", "April", "May", "June", "July", "August", "September",
   "October", "November", "December"
};

char type_list[MAX_N_LIST][NAME_LENGTH] = { "Routine", "Other" };

char category_list[MAX_N_LIST][NAME_LENGTH] = { "General", "Other",
};

char author_list[MAX_N_LIST][NAME_LENGTH] = { "" };

char attr_list[MAX_N_ATTR][NAME_LENGTH];
char attr_options[MAX_N_ATTR][MAX_N_LIST][NAME_LENGTH];
int attr_flags[MAX_N_ATTR];

char attr_list_default[][NAME_LENGTH] = { "Author", "Type", "Category", "Subject", "" };

char attr_options_default[][MAX_N_LIST][NAME_LENGTH] = { {""}, {"Routine", "Other"},
{"General", "Other"}, {""}
};

int attr_flags_default[] = { AF_REQUIRED, 0, 0, 0 };

struct {
   char ext[32];
   char type[80];
} filetype[] = {

   {
   ".AI", "application/postscript"}, {
   ".ASC", "text/plain"}, {
   ".BZ2", "application/x-bzip2"}, {
   ".CFG", "text/plain"}, {
   ".CHRT", "application/x-kchart"}, {
   ".CONF", "text/plain"}, {
   ".CSH", "application/x-csh"}, {
   ".CSS", "text/css"}, {
   ".DOC", "application/msword"}, {
   ".DVI", "application/x-dvi"}, {
   ".EPS", "application/postscript"}, {
   ".GIF", "image/gif"}, {
   ".GZ", "application/x-gzip"}, {
   ".HTM", "text/html"}, {
   ".HTML", "text/html"}, {
   ".ICO", "image/x-icon"}, {
   ".JPEG", "image/jpeg"}, {
   ".JPG", "image/jpeg"}, {
   ".JS", "application/x-javascript"}, {
   ".KPR", "application/x-kpresenter"}, {
   ".KSP", "application/x-kspread"}, {
   ".KWD", "application/x-kword"}, {
   ".MP3", "audio/mpeg"}, {
   ".OGG", "application/x-ogg"}, {
   ".PDF", "application/pdf"}, {
   ".PNG", "image/png"}, {
   ".PS", "application/postscript"}, {
   ".RAM", "audio/x-pn-realaudio"}, {
   ".RM", "audio/x-pn-realaudio"}, {
   ".RM", "audio/x-pn-realaudio"}, {
   ".RM", "audio/x-pn-realaudio"}, {
   ".RPM", "application/x-rpm"}, {
   ".RTF", "application/rtf"}, {
   ".SH", "application/x-sh"}, {
   ".SVG", "image/svg+xml"}, {
   ".TAR", "application/x-tar"}, {
   ".TCL", "application/x-tcl"}, {
   ".TEX", "application/x-tex"}, {
   ".TGZ", "application/x-gzip"}, {
   ".TIF", "image/tiff"}, {
   ".TIFF", "image/tiff"}, {
   ".TXT", "text/plain"}, {
   ".WAV", "audio/x-wav"}, {
   ".XLS", "application/x-msexcel"}, {
   ".XML", "text/xml"}, {
   ".XSL", "text/xml"}, {
   ".ZIP", "application/x-zip-compressed"}, {

      /* Open XML file types */
   ".DOCM", "application/vnd.ms-word.document.macroEnabled.12"}, {
   ".DOCX", "application/vnd.openxmlformats-officedocument.wordprocessingml.document"}, {
   ".DOTM", "application/vnd.ms-word.template.macroEnabled.12"}, {
   ".DOTX", "application/vnd.openxmlformats-officedocument.wordprocessingml.template"}, {
   ".PPSM", "application/vnd.ms-powerpoint.slideshow.macroEnabled.12"}, {
   ".PPSX", "application/vnd.openxmlformats-officedocument.presentationml.slideshow"}, {
   ".PPTM", "application/vnd.ms-powerpoint.presentation.macroEnabled.12"}, {
   ".PPTX", "application/vnd.openxmlformats-officedocument.presentationml.presentation"}, {
   ".XLSB", "application/vnd.ms-excel.sheet.binary.macroEnabled.12"}, {
   ".XLSM", "application/vnd.ms-excel.sheet.macroEnabled.12"}, {
   ".XLSX", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"}, {
   ".XPS", "application/vnd.ms-xpsdocument"}, {

"", ""},};

struct {
   char language[32];
   char abbrev[32];
} lang_table[] = {
   
   { "brazilian",    "br"},
   { "bulgarian",    "bg"},
   { "czech",        "cz"},
   { "danish",       "dk"},
   { "dutch",        "nl"},
   { "french",       "fr"},
   { "german",       "de"},
   { "indonesia",    "id"},
   { "italian",      "it"},
   { "japanese",     "jp"},
   { "polish",       "pl"},
   { "ru_CP1251",    "ru"},
   { "slowak",       "sk"},
   { "spanish",      "es"},
   { "swedish",      "se"},
   { "turkish",      "tr"},
   { "zh_CN-GB2314", "zh"},
   { "zh_CN-UTF8",   "zh"},
   { "", "" }
};

char _convert_cmd[256];
char _identify_cmd[256];

#ifdef OS_WINNT
int run_service(void);
#endif

#ifdef OS_UNIX
gid_t orig_gid;                 /* Original effective GID before dropping privilege */
uid_t orig_uid;                 /* Original effective UID before dropping privilege */
char pidfile[256];              /* Pidfile name                                     */
#endif

#ifdef __CYGWIN__               /* bug in cygwin, 'timezone' not linked automatically */
long _timezone;
#endif

/*---- Funcions from the MIDAS library -----------------------------*/

#define my_toupper(_c)    ( ((_c)>='a' && (_c)<='z') ? ((_c)-'a'+'A') : (_c) )
#define my_tolower(_c)    ( ((_c)>='A' && (_c)<='Z') ? ((_c)-'A'+'a') : (_c) )

BOOL strieq(const char *str1, const char *str2)
{
   char c1, c2;

   if (str1 == NULL && str2 == NULL)
      return TRUE;
   if (str1 == NULL || str2 == NULL)
      return FALSE;
   if (strlen(str1) != strlen(str2))
      return FALSE;

   while (*str1) {
      c1 = *str1++;
      c2 = *str2++;
      if (my_toupper(c1) != my_toupper(c2))
         return FALSE;
   }

   if (*str2)
      return FALSE;

   return TRUE;
}

BOOL strnieq(const char *str1, const char *str2, int n)
{
   char c1, c2;
   int i;

   if (str1 == NULL && str2 == NULL && n == 0)
      return TRUE;
   if (str1 == NULL || str2 == NULL)
      return FALSE;
   if ((int) strlen(str1) < n || (int) strlen(str2) < n)
      return FALSE;

   for (i = 0; i < n && *str1; i++) {
      c1 = *str1++;
      c2 = *str2++;
      if (my_toupper(c1) != my_toupper(c2))
         return FALSE;
   }

   if (i < n)
      return FALSE;

   return TRUE;
}

char *stristr(const char *str, const char *pattern)
{
   char c1, c2, *ps, *pp;

   if (str == NULL || pattern == NULL)
      return NULL;

   while (*str) {
      ps = (char *) str;
      pp = (char *) pattern;
      c1 = *ps;
      c2 = *pp;
      if (my_toupper(c1) == my_toupper(c2)) {
         while (*pp) {
            c1 = *ps;
            c2 = *pp;

            if (my_toupper(c1) != my_toupper(c2))
... 30944 more lines ...
  68880   Fri Dec 21 14:59:05 2018 Reply Stefan Rittstefan.ritt@psi.chBug reportLinux3.1.3Re: inactive users
Thanks for the fix, I merged it into the current development branch.

Stefan
  866   Thu Jan 6 11:25:54 2005 Reply Stefan Rittstefan.ritt@psi.chRequestLinux Re: implement 'hide attribute' and 'sort attribute'
> Could you implement a 'hide attribute' and 'sort attribute' config option?

I implemented it as 'hidden attributes = <list>' and 'sort attributes'.
  870   Mon Jan 10 19:44:16 2005 Reply Heiko Scheith.scheit@mpi-hd.mpg.deRequestLinux Re: implement 'hide attribute' and 'sort attribute'
> > Could you implement a 'hide attribute' and 'sort attribute' config option?
> 
> I implemented it as 'hidden attributes = <list>' and 'sort attributes'.

'sort attributes' sorts the logbook entries when they are displayed.  Or?

What I want is to rearrange the entry mask.  E.g. if 'Entry type' article is
selected then the attributes 'Author', 'Journal', 'Title', and 'Year' 
should be listed first, as they are required for this bibtex entry type.
Is it possible with the current elogd version to also sort (rearrange) the 
attributes in the entry mask?  If yes, how?  

Thanks for your time.
  871   Mon Jan 10 20:23:35 2005 Reply Stefan Rittstefan.ritt@psi.chRequestLinux Re: implement 'hide attribute' and 'sort attribute'
> 'sort attributes' sorts the logbook entries when they are displayed.  Or?

Right

> What I want is to rearrange the entry mask.  E.g. if 'Entry type' article is
> selected then the attributes 'Author', 'Journal', 'Title', and 'Year' 
> should be listed first, as they are required for this bibtex entry type.
> Is it possible with the current elogd version to also sort (rearrange) the 
> attributes in the entry mask?  If yes, how?  

Attributes are shown in the order you specify them in the config file, so what about

Attributes = Entry type, Author, Journal, Title, Year     ???
ELOG V3.1.5-3fb85fa6