Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
WEBUI: fix the default ui language handling, fixes #3097
  • Loading branch information
perexg committed Sep 27, 2015
1 parent 0b27363 commit 99a8a7b
Show file tree
Hide file tree
Showing 5 changed files with 30 additions and 31 deletions.
10 changes: 8 additions & 2 deletions src/access.c
Expand Up @@ -31,6 +31,7 @@
#include <sys/socket.h>

#include "tvheadend.h"
#include "config.h"
#include "access.h"
#include "settings.h"
#include "channels.h"
Expand Down Expand Up @@ -495,6 +496,7 @@ static void
access_update(access_t *a, access_entry_t *ae)
{
idnode_list_mapping_t *ilm;
const char *s;

switch (ae->ae_conn_limit_type) {
case ACCESS_CONN_LIMIT_TYPE_ALL:
Expand Down Expand Up @@ -567,8 +569,12 @@ access_update(access_t *a, access_entry_t *ae)
if (!a->aa_lang && ae->ae_lang && ae->ae_lang[0])
a->aa_lang = lang_code_user(ae->ae_lang);

if (!a->aa_lang_ui && ae->ae_lang_ui && ae->ae_lang_ui[0])
a->aa_lang_ui = lang_code_user(ae->ae_lang_ui);
if (!a->aa_lang_ui) {
if (ae->ae_lang_ui && ae->ae_lang_ui[0])
a->aa_lang_ui = lang_code_user(ae->ae_lang_ui);
else if ((s = config_get_language_ui()) != NULL)
a->aa_lang_ui = lang_code_user(s);
}

a->aa_rights |= ae->ae_rights;
}
Expand Down
8 changes: 4 additions & 4 deletions src/config.c
Expand Up @@ -1913,10 +1913,10 @@ const idclass_t config_class = {
},
{
.type = PT_STR,
.id = "ulanguage",
.id = "language_ui",
.name = N_("User language"),
.list = language_get_list,
.off = offsetof(config_t, ulanguage),
.off = offsetof(config_t, language_ui),
.group = 3
},
{
Expand Down Expand Up @@ -1996,9 +1996,9 @@ const char *config_get_language ( void )
return s;
}

const char *config_get_ulanguage ( void )
const char *config_get_language_ui ( void )
{
const char *s = config.ulanguage;
const char *s = config.language_ui;
if (s == NULL || *s == '\0')
return NULL;
return s;
Expand Down
4 changes: 2 additions & 2 deletions src/config.h
Expand Up @@ -34,7 +34,7 @@ typedef struct config {
char *server_name;
char *language;
char *info_area;
char *ulanguage;
char *language_ui;
char *muxconf_path;
int prefer_picon;
char *chicon_path;
Expand All @@ -58,6 +58,6 @@ void config_save ( void );

const char *config_get_server_name ( void );
const char *config_get_language ( void );
const char *config_get_ulanguage ( void );
const char *config_get_language_ui ( void );

#endif /* __TVH_CONFIG__H__ */
37 changes: 15 additions & 22 deletions src/lang_codes.c
Expand Up @@ -698,33 +698,26 @@ const char *lang_code_preferred( void )

char *lang_code_user( const char *ucode )
{
const char *pucode = config_get_ulanguage(), *s;
const char *codes = config_get_language();
const char *codes = config_get_language(), *s;
char *ret;

if (!pucode && !codes)
if (!codes)
return ucode ? strdup(ucode) : NULL;
ret = malloc(strlen(pucode ?: "") + strlen(codes ?: "") +
strlen(ucode ?: "") + 3);
if (!ucode)
return codes ? strdup(codes) : NULL;
ret = malloc(strlen(codes) + strlen(ucode ?: "") + 1);
strcpy(ret, ucode);
if (pucode && strcmp(ret, pucode)) {
strcat(ret, ",");
strcat(ret, pucode);
}
if (codes) {
while (codes && *codes) {
s = codes;
while (*s && *s != ',')
s++;
if (strncmp(codes, ucode ?: "", s - codes) &&
strncmp(codes, pucode ?: "", s - codes)) {
strcat(ret, ",");
strncat(ret, codes, s - codes);
}
if (*s && *s == ',')
s++;
codes = s;
while (codes && *codes) {
s = codes;
while (*s && *s != ',')
s++;
if (strncmp(codes, ucode ?: "", s - codes)) {
strcat(ret, ",");
strncat(ret, codes, s - codes);
}
if (*s && *s == ',')
s++;
codes = s;
}
return ret;
}
Expand Down
2 changes: 1 addition & 1 deletion src/webui/extjs.c
Expand Up @@ -187,7 +187,7 @@ static int
page_about(http_connection_t *hc, const char *remain, void *opaque)
{
htsbuf_queue_t *hq = &hc->hc_reply;
const char *lang = hc->hc_access->aa_lang;
const char *lang = hc->hc_access->aa_lang_ui;

htsbuf_qprintf(hq, "<center>\n\
<div class=\"about-title\">HTS Tvheadend %s</div>\n\
Expand Down

0 comments on commit 99a8a7b

Please sign in to comment.