webcit-8.24-dfsg.orig/0000755000175000017500000000000012271477140014377 5ustar michaelmichaelwebcit-8.24-dfsg.orig/downloads.c0000644000175000017500000003252112271477123016541 0ustar michaelmichael/* * Copyright (c) 1996-2012 by the citadel.org team * * This program is open source software. You can redistribute it and/or * modify it under the terms of the GNU General Public License, version 3. * * This program 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. */ #include "webcit.h" #include "webserver.h" CtxType CTX_FILELIST = CTX_NONE; extern void output_static(const char* What); extern char* static_dirs[]; typedef struct _FileListStruct { StrBuf *Filename; long FileSize; StrBuf *MimeType; StrBuf *Comment; int IsPic; int Sequence; } FileListStruct; void FreeFiles(void *vFile) { FileListStruct *F = (FileListStruct*) vFile; FreeStrBuf(&F->Filename); FreeStrBuf(&F->MimeType); FreeStrBuf(&F->Comment); free(F); } /* -------------------------------------------------------------------------------- */ void tmplput_FILE_NAME(StrBuf *Target, WCTemplputParams *TP) { FileListStruct *F = (FileListStruct*) CTX(CTX_FILELIST); StrBufAppendTemplate(Target, TP, F->Filename, 0); } void tmplput_FILE_SIZE(StrBuf *Target, WCTemplputParams *TP) { FileListStruct *F = (FileListStruct*) CTX(CTX_FILELIST); StrBufAppendPrintf(Target, "%ld", F->FileSize); } void tmplput_FILEMIMETYPE(StrBuf *Target, WCTemplputParams *TP) { FileListStruct *F = (FileListStruct*) CTX(CTX_FILELIST); StrBufAppendTemplate(Target, TP, F->MimeType, 0); } void tmplput_FILE_COMMENT(StrBuf *Target, WCTemplputParams *TP) { FileListStruct *F = (FileListStruct*) CTX(CTX_FILELIST); StrBufAppendTemplate(Target, TP, F->Comment, 0); } /* -------------------------------------------------------------------------------- */ int Conditional_FILE_ISPIC(StrBuf *Target, WCTemplputParams *TP) { FileListStruct *F = (FileListStruct*) CTX(CTX_FILELIST); return F->IsPic; } /* -------------------------------------------------------------------------------- */ int CompareFilelistByMime(const void *vFile1, const void *vFile2) { FileListStruct *File1 = (FileListStruct*) GetSearchPayload(vFile1); FileListStruct *File2 = (FileListStruct*) GetSearchPayload(vFile2); if (File1->IsPic != File2->IsPic) return File1->IsPic > File2->IsPic; return strcasecmp(ChrPtr(File1->MimeType), ChrPtr(File2->MimeType)); } int CompareFilelistByMimeRev(const void *vFile1, const void *vFile2) { FileListStruct *File1 = (FileListStruct*) GetSearchPayload(vFile1); FileListStruct *File2 = (FileListStruct*) GetSearchPayload(vFile2); if (File1->IsPic != File2->IsPic) return File1->IsPic < File2->IsPic; return strcasecmp(ChrPtr(File2->MimeType), ChrPtr(File1->MimeType)); } int GroupchangeFilelistByMime(const void *vFile1, const void *vFile2) { FileListStruct *File1 = (FileListStruct*) vFile1; FileListStruct *File2 = (FileListStruct*) vFile2; if (File1->IsPic != File2->IsPic) return File1->IsPic > File2->IsPic; return strcasecmp(ChrPtr(File1->MimeType), ChrPtr(File2->MimeType)) != 0; } int CompareFilelistByName(const void *vFile1, const void *vFile2) { FileListStruct *File1 = (FileListStruct*) GetSearchPayload(vFile1); FileListStruct *File2 = (FileListStruct*) GetSearchPayload(vFile2); if (File1->IsPic != File2->IsPic) return File1->IsPic > File2->IsPic; return strcasecmp(ChrPtr(File1->Filename), ChrPtr(File2->Filename)); } int CompareFilelistByNameRev(const void *vFile1, const void *vFile2) { FileListStruct *File1 = (FileListStruct*) GetSearchPayload(vFile1); FileListStruct *File2 = (FileListStruct*) GetSearchPayload(vFile2); if (File1->IsPic != File2->IsPic) return File1->IsPic < File2->IsPic; return strcasecmp(ChrPtr(File2->Filename), ChrPtr(File1->Filename)); } int GroupchangeFilelistByName(const void *vFile1, const void *vFile2) { FileListStruct *File1 = (FileListStruct*) vFile1; FileListStruct *File2 = (FileListStruct*) vFile2; return ChrPtr(File1->Filename)[0] != ChrPtr(File2->Filename)[0]; } int CompareFilelistBySize(const void *vFile1, const void *vFile2) { FileListStruct *File1 = (FileListStruct*) GetSearchPayload(vFile1); FileListStruct *File2 = (FileListStruct*) GetSearchPayload(vFile2); if (File1->FileSize == File2->FileSize) return 0; return (File1->FileSize > File2->FileSize); } int CompareFilelistBySizeRev(const void *vFile1, const void *vFile2) { FileListStruct *File1 = (FileListStruct*) GetSearchPayload(vFile1); FileListStruct *File2 = (FileListStruct*) GetSearchPayload(vFile2); if (File1->FileSize == File2->FileSize) return 0; return (File1->FileSize < File2->FileSize); } int GroupchangeFilelistBySize(const void *vFile1, const void *vFile2) { return 0; } int CompareFilelistByComment(const void *vFile1, const void *vFile2) { FileListStruct *File1 = (FileListStruct*) GetSearchPayload(vFile1); FileListStruct *File2 = (FileListStruct*) GetSearchPayload(vFile2); return strcasecmp(ChrPtr(File1->Comment), ChrPtr(File2->Comment)); } int CompareFilelistByCommentRev(const void *vFile1, const void *vFile2) { FileListStruct *File1 = (FileListStruct*) GetSearchPayload(vFile1); FileListStruct *File2 = (FileListStruct*) GetSearchPayload(vFile2); return strcasecmp(ChrPtr(File2->Comment), ChrPtr(File1->Comment)); } int GroupchangeFilelistByComment(const void *vFile1, const void *vFile2) { FileListStruct *File1 = (FileListStruct*) vFile1; FileListStruct *File2 = (FileListStruct*) vFile2; return ChrPtr(File1->Comment)[9] != ChrPtr(File2->Comment)[0]; } int CompareFilelistBySequence(const void *vFile1, const void *vFile2) { FileListStruct *File1 = (FileListStruct*) GetSearchPayload(vFile1); FileListStruct *File2 = (FileListStruct*) GetSearchPayload(vFile2); return (File2->Sequence > File1->Sequence); } int GroupchangeFilelistBySequence(const void *vFile1, const void *vFile2) { return 0; } /* -------------------------------------------------------------------------------- */ HashList* LoadFileList(StrBuf *Target, WCTemplputParams *TP) { FileListStruct *Entry; StrBuf *Buf; HashList *Files; int Done = 0; int sequence = 0; char buf[1024]; CompareFunc SortIt; int HavePic = 0; WCTemplputParams SubTP; memset(&SubTP, 0, sizeof(WCTemplputParams)); serv_puts("RDIR"); serv_getln(buf, sizeof buf); if (buf[0] != '1') return NULL; Buf = NewStrBuf(); Files = NewHash(1, NULL); while (!Done && (StrBuf_ServGetln(Buf)>=0)) { if ( (StrLength(Buf)==3) && !strcmp(ChrPtr(Buf), "000")) { Done = 1; continue; } Entry = (FileListStruct*) malloc(sizeof (FileListStruct)); Entry->Filename = NewStrBufPlain(NULL, StrLength(Buf)); Entry->MimeType = NewStrBufPlain(NULL, StrLength(Buf)); Entry->Comment = NewStrBufPlain(NULL, StrLength(Buf)); Entry->Sequence = sequence++; StrBufExtract_token(Entry->Filename, Buf, 0, '|'); Entry->FileSize = StrBufExtract_long(Buf, 1, '|'); StrBufExtract_token(Entry->MimeType, Buf, 2, '|'); StrBufExtract_token(Entry->Comment, Buf, 3, '|'); Entry->IsPic = (strstr(ChrPtr(Entry->MimeType), "image") != NULL); if (Entry->IsPic) { HavePic = 1; } Put(Files, SKEY(Entry->Filename), Entry, FreeFiles); } if (HavePic) putbstr("__HAVE_PIC", NewStrBufPlain(HKEY("1"))); SubTP.Filter.ContextType = CTX_FILELIST; SortIt = RetrieveSort(&SubTP, NULL, 0, HKEY("fileunsorted"), 0); if (SortIt != NULL) SortByPayload(Files, SortIt); else SortByPayload(Files, CompareFilelistBySequence); FreeStrBuf(&Buf); return Files; } void display_mime_icon(void) { char FileBuf[SIZ]; const char *FileName; char *MimeType; size_t tlen; MimeType = xbstr("type", &tlen); FileName = GetIconFilename(MimeType, tlen); if (FileName == NULL) snprintf (FileBuf, SIZ, "%s%s", static_dirs[0], "/webcit_icons/essen/16x16/file.png"); else snprintf (FileBuf, SIZ, "%s%s", static_dirs[3], FileName); output_static(FileBuf); } void download_file(void) { wcsession *WCC = WC; StrBuf *Buf; off_t bytes; StrBuf *ContentType = NewStrBufPlain(HKEY("application/octet-stream")); /* Setting to nonzero forces a MIME type of application/octet-stream */ int force_download = 1; Buf = NewStrBuf(); StrBufExtract_token(Buf, WCC->Hdr->HR.ReqLine, 0, '/'); StrBufUnescape(Buf, 1); serv_printf("OPEN %s", ChrPtr(Buf)); StrBuf_ServGetln(Buf); if (GetServerStatus(Buf, NULL) == 2) { StrBufCutLeft(Buf, 4); bytes = StrBufExtract_long(Buf, 0, '|'); if (!force_download) { StrBufExtract_token(ContentType, Buf, 3, '|'); } serv_read_binary(WCC->WBuf, bytes, Buf); serv_puts("CLOS"); StrBuf_ServGetln(Buf); http_transmit_thing(ChrPtr(ContentType), 0); } else { StrBufCutLeft(Buf, 4); hprintf("HTTP/1.1 404 %s\n", ChrPtr(Buf)); output_headers(0, 0, 0, 0, 0, 0); hprintf("Content-Type: text/plain\r\n"); wc_printf(_("An error occurred while retrieving this file: %s\n"), ChrPtr(Buf)); end_burst(); } FreeStrBuf(&ContentType); FreeStrBuf(&Buf); } void delete_file(void) { const StrBuf *MimeType; StrBuf *Line; char buf[256]; safestrncpy(buf, bstr("file"), sizeof buf); unescape_input(buf); serv_printf("DELF %s", buf); StrBuf_ServGetln(Line); GetServerStatusMsg(Line, NULL, 1, 0); MimeType = DoTemplate(HKEY("files"), NULL, &NoCtx); http_transmit_thing(ChrPtr(MimeType), 0); FreeStrBuf(&Line); } void upload_file(void) { const StrBuf *RetMimeType; const char *MimeType; StrBuf *Line; long bytes_transmitted = 0; long blocksize; const StrBuf *Desc; wcsession *WCC = WC; /* stack this for faster access (WC is a function) */ MimeType = GuessMimeType(ChrPtr(WCC->upload), WCC->upload_length); Desc = sbstr("description"); serv_printf("UOPN %s|%s|%s", ChrPtr(WCC->upload_filename), MimeType, ChrPtr(Desc)); Line = NewStrBuf(); StrBuf_ServGetln(Line); if (GetServerStatusMsg(Line, NULL, 1, 2) != 2) { RetMimeType = DoTemplate(HKEY("files"), NULL, &NoCtx); http_transmit_thing(ChrPtr(RetMimeType), 0); FreeStrBuf(&Line); return; } while (bytes_transmitted < WCC->upload_length) { blocksize = 4096; if (blocksize > (WCC->upload_length - bytes_transmitted)) { blocksize = (WCC->upload_length - bytes_transmitted); } serv_printf("WRIT %ld", blocksize); StrBuf_ServGetln(Line); if (GetServerStatusMsg(Line, NULL, 0, 0) == 7) { blocksize = atoi(ChrPtr(Line) + 4); serv_write(&ChrPtr(WCC->upload)[bytes_transmitted], blocksize); bytes_transmitted += blocksize; } else break; } serv_puts("UCLS 1"); StrBuf_ServGetln(Line); GetServerStatusMsg(Line, NULL, 1, 0); RetMimeType = DoTemplate(HKEY("files"), NULL, &NoCtx); http_transmit_thing(ChrPtr(RetMimeType), 0); FreeStrBuf(&Line); } /* * When the browser requests an image file from the Citadel server, * this function is called to transmit it. */ void output_image(void) { StrBuf *Buf; wcsession *WCC = WC; off_t bytes; const char *MimeType; Buf = NewStrBuf(); serv_printf("OIMG %s|%s", bstr("name"), bstr("parm")); StrBuf_ServGetln(Buf); if (GetServerStatus(Buf, NULL) == 2) { int rc; StrBufCutLeft(Buf, 4); bytes = StrBufExtract_long(Buf, 0, '|'); /** Read it from the server */ rc = serv_read_binary(WCC->WBuf, bytes, Buf); serv_puts("CLOS"); StrBuf_ServGetln(Buf); if (rc > 0) { MimeType = GuessMimeType (ChrPtr(WCC->WBuf), StrLength(WCC->WBuf)); /** Write it to the browser */ if (!IsEmptyStr(MimeType)) { http_transmit_thing(MimeType, 0); FreeStrBuf(&Buf); return; } } /* hm... unknown mimetype? fallback to blank gif */ } else { syslog(LOG_DEBUG, "OIMG failed: %s", ChrPtr(Buf)); } /* * Instead of an ugly 404, send a 1x1 transparent GIF * when there's no such image on the server. */ StrBufPrintf (Buf, "%s%s", static_dirs[0], "/webcit_icons/blank.gif"); output_static(ChrPtr(Buf)); FreeStrBuf(&Buf); } void InitModule_DOWNLOAD (void) { RegisterCTX(CTX_FILELIST); RegisterIterator("ROOM:FILES", 0, NULL, LoadFileList, NULL, DeleteHash, CTX_FILELIST, CTX_NONE, IT_FLAG_DETECT_GROUPCHANGE); RegisterSortFunc(HKEY("filemime"), NULL, 0, CompareFilelistByMime, CompareFilelistByMimeRev, GroupchangeFilelistByMime, CTX_FILELIST); RegisterSortFunc(HKEY("filename"), NULL, 0, CompareFilelistByName, CompareFilelistByNameRev, GroupchangeFilelistByName, CTX_FILELIST); RegisterSortFunc(HKEY("filesize"), NULL, 0, CompareFilelistBySize, CompareFilelistBySizeRev, GroupchangeFilelistBySize, CTX_FILELIST); RegisterSortFunc(HKEY("filesubject"), NULL, 0, CompareFilelistByComment, CompareFilelistByCommentRev, GroupchangeFilelistByComment, CTX_FILELIST); RegisterSortFunc(HKEY("fileunsorted"), NULL, 0, CompareFilelistBySequence, CompareFilelistBySequence, GroupchangeFilelistBySequence, CTX_FILELIST); RegisterNamespace("FILE:NAME", 0, 2, tmplput_FILE_NAME, NULL, CTX_FILELIST); RegisterNamespace("FILE:SIZE", 0, 1, tmplput_FILE_SIZE, NULL, CTX_FILELIST); RegisterNamespace("FILE:MIMETYPE", 0, 2, tmplput_FILEMIMETYPE, NULL, CTX_FILELIST); RegisterNamespace("FILE:COMMENT", 0, 2, tmplput_FILE_COMMENT, NULL, CTX_FILELIST); RegisterConditional("COND:FILE:ISPIC", 0, Conditional_FILE_ISPIC, CTX_FILELIST); WebcitAddUrlHandler(HKEY("image"), "", 0, output_image, ANONYMOUS); WebcitAddUrlHandler(HKEY("display_mime_icon"), "", 0, display_mime_icon , ANONYMOUS); WebcitAddUrlHandler(HKEY("download_file"), "", 0, download_file, NEED_URL); WebcitAddUrlHandler(HKEY("delete_file"), "", 0, delete_file, NEED_URL); WebcitAddUrlHandler(HKEY("upload_file"), "", 0, upload_file, 0); } webcit-8.24-dfsg.orig/blogview_renderer.c0000644000175000017500000002300612271477123020251 0ustar michaelmichael/* * Blog view renderer module for WebCit * * Copyright (c) 1996-2012 by the citadel.org team * * This program is open source software. You can redistribute it and/or * modify it under the terms of the GNU General Public License, version 3. * * This program 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. */ #include "webcit.h" #include "webserver.h" #include "dav.h" /* * Generate a permalink for a post * (Call with NULL arguments to make this function wcprintf() the permalink * instead of writing it to the template) */ void tmplput_blog_permalink(StrBuf *Target, WCTemplputParams *TP) { char perma[SIZ]; strcpy(perma, "/readfwd?go="); urlesc(&perma[strlen(perma)], sizeof(perma)-strlen(perma), (char *)ChrPtr(WC->CurRoom.name)); snprintf(&perma[strlen(perma)], sizeof(perma)-strlen(perma), "?p=%d", WC->bptlid); if (!Target) { wc_printf("%s", perma); } else { StrBufAppendPrintf(Target, "%s", perma); } } /* * Render a single blog post and (optionally) its comments */ void blogpost_render(struct blogpost *bp, int with_comments) { const StrBuf *Mime; int i; WC->bptlid = bp->top_level_id; /* This is used in templates; do not remove it */ /* Always show the top level post, unless we somehow ended up with an empty list */ if (bp->num_msgs > 0) { read_message(WC->WBuf, HKEY("view_blog_post"), bp->msgs[0], NULL, &Mime); } if (with_comments) { /* Show any existing comments, then offer the comment box */ wc_printf("\n"); wc_printf(_("%d comments"), bp->num_msgs - 1); wc_printf(" | %s", _("permalink")); wc_printf("\n"); for (i=1; inum_msgs; ++i) { read_message(WC->WBuf, HKEY("view_blog_comment"), bp->msgs[i], NULL, &Mime); } do_template("view_blog_comment_box"); } else { /* Show only the number of comments */ wc_printf("top_level_id); urlescputs(ChrPtr(WC->CurRoom.name)); wc_printf("#comments\">"); wc_printf(_("%d comments"), bp->num_msgs - 1); wc_printf(" | %s", _("permalink")); wc_printf("
\n\n"); } } /* * Destructor for "struct blogpost" */ void blogpost_destroy(struct blogpost *bp) { if (bp->alloc_msgs > 0) { free(bp->msgs); } free(bp); } /* * Entry point for message read operations. */ int blogview_GetParamsGetServerCall(SharedMessageStatus *Stat, void **ViewSpecific, long oper, char *cmd, long len, char *filter, long flen) { HashList *BLOG = NewHash(1, NULL); *ViewSpecific = BLOG; Stat->startmsg = (-1); /* not used here */ Stat->sortit = 1; /* not used here */ Stat->num_displayed = DEFAULT_MAXMSGS; /* not used here */ if (Stat->maxmsgs == 0) Stat->maxmsgs = DEFAULT_MAXMSGS; /* perform a "read all" call to fetch the message list -- we'll cut it down later */ rlid[2].cmd(cmd, len); return 200; } /* * Given a msgnum, populate the id and refs fields of * a "struct bltr" by fetching them from the Citadel server */ struct bltr blogview_learn_thread_references(long msgnum) { StrBuf *Buf; StrBuf *r; int len; struct bltr bltr = { 0, 0 } ; Buf = NewStrBuf(); r = NewStrBuf(); serv_printf("MSG0 %ld|1", msgnum); /* top level citadel headers only */ StrBuf_ServGetln(Buf); if (GetServerStatus(Buf, NULL) == 1) { while (len = StrBuf_ServGetln(Buf), ((len >= 0) && ((len != 3) || strcmp(ChrPtr(Buf), "000") ))) { if (!strncasecmp(ChrPtr(Buf), "msgn=", 5)) { StrBufCutLeft(Buf, 5); bltr.id = ThreadIdHash(Buf); } else if (!strncasecmp(ChrPtr(Buf), "wefw=", 5)) { StrBufCutLeft(Buf, 5); /* trim the field name */ StrBufExtract_token(r, Buf, 0, '|'); bltr.refs = ThreadIdHash(r); } } } FreeStrBuf(&Buf); FreeStrBuf(&r); return(bltr); } /* * This function is called for every message in the list. */ int blogview_LoadMsgFromServer(SharedMessageStatus *Stat, void **ViewSpecific, message_summary* Msg, int is_new, int i) { HashList *BLOG = (HashList *) *ViewSpecific; struct bltr b; struct blogpost *bp = NULL; int p = 0; b = blogview_learn_thread_references(Msg->msgnum); /* Stop processing if the viewer is only interested in a single post and * that message ID is neither the id nor the refs. */ p = atoi(BSTR("p")); /* are we looking for a specific post? */ if ((p != 0) && (p != b.id) && (p != b.refs)) { return 200; } /* * Add our little bundle of blogworthy wonderfulness to the hash table */ if (b.refs == 0) { bp = malloc(sizeof(struct blogpost)); if (!bp) return(200); memset(bp, 0, sizeof (struct blogpost)); bp->top_level_id = b.id; Put(BLOG, (const char *)&b.id, sizeof(b.id), bp, (DeleteHashDataFunc)blogpost_destroy); } else { GetHash(BLOG, (const char *)&b.refs , sizeof(b.refs), (void *)&bp); } /* * Now we have a 'struct blogpost' to which we can add a message. It's either the * blog post itself or a comment attached to it; either way, the code is the same from * this point onward. */ if (bp != NULL) { if (bp->alloc_msgs == 0) { bp->alloc_msgs = 1000; bp->msgs = malloc(bp->alloc_msgs * sizeof(long)); memset(bp->msgs, 0, (bp->alloc_msgs * sizeof(long)) ); } if (bp->num_msgs >= bp->alloc_msgs) { bp->alloc_msgs *= 2; bp->msgs = realloc(bp->msgs, (bp->alloc_msgs * sizeof(long))); memset(&bp->msgs[bp->num_msgs], 0, ((bp->alloc_msgs - bp->num_msgs) * sizeof(long)) ); } bp->msgs[bp->num_msgs++] = Msg->msgnum; } else { syslog(LOG_DEBUG, "** comment %ld is unparented", Msg->msgnum); } return 200; } /* * Sort a list of 'struct blogpost' pointers by newest-to-oldest msgnum. * With big thanks to whoever wrote http://www.c.happycodings.com/Sorting_Searching/code14.html */ static int blogview_sortfunc(const void *a, const void *b) { struct blogpost * const *one = a; struct blogpost * const *two = b; if ( (*one)->msgs[0] > (*two)->msgs[0] ) return(-1); if ( (*one)->msgs[0] < (*two)->msgs[0] ) return(+1); return(0); } /* * All blogpost entries are now in the hash list. * Sort them, select the desired range, and render what we want to see. */ int blogview_render(SharedMessageStatus *Stat, void **ViewSpecific, long oper) { HashList *BLOG = (HashList *) *ViewSpecific; HashPos *it; const char *Key; void *Data; long len; int i; struct blogpost **blogposts = NULL; int num_blogposts = 0; int num_blogposts_alloc = 0; int with_comments = 0; int firstp = 0; int maxp = 0; /* Comments are shown if we are only viewing a single blog post */ if (atoi(BSTR("p"))) with_comments = 1; firstp = atoi(BSTR("firstp")); /* start reading at... */ maxp = atoi(BSTR("maxp")); /* max posts to show... */ if (maxp < 1) maxp = 5; /* default; move somewhere else? */ /* Iterate through the hash list and copy the data pointers into an array */ it = GetNewHashPos(BLOG, 0); while (GetNextHashPos(BLOG, it, &len, &Key, &Data)) { if (num_blogposts >= num_blogposts_alloc) { if (num_blogposts_alloc == 0) { num_blogposts_alloc = 100; } else { num_blogposts_alloc *= 2; } blogposts = realloc(blogposts, (num_blogposts_alloc * sizeof (struct blogpost *))); } blogposts[num_blogposts++] = (struct blogpost *) Data; } DeleteHashPos(&it); /* Now we have our array. It is ONLY an array of pointers. The objects to * which they point are still owned by the hash list. */ if (num_blogposts > 0) { int start_here = 0; /* Sort newest-to-oldest */ qsort(blogposts, num_blogposts, sizeof(void *), blogview_sortfunc); /* allow the user to select a starting point in the list */ for (i=0; itop_level_id == firstp) { start_here = i; } } /* FIXME -- allow the user (or a default setting) to select a maximum number of posts to display */ /* Now go through the list and render what we've got */ for (i=start_here; i 0) && (i == start_here)) { int j = i - maxp; if (j < 0) j = 0; wc_printf("\n", _("Newer posts")); } if (i < (start_here + maxp)) { blogpost_render(blogposts[i], with_comments); } else if (i == (start_here + maxp)) { wc_printf("\n", _("Older posts")); } } /* Done. We are only freeing the array of pointers; the data itself * will be freed along with the hash list. */ free(blogposts); } return(0); } int blogview_Cleanup(void **ViewSpecific) { HashList *BLOG = (HashList *) *ViewSpecific; DeleteHash(&BLOG); wDumpContent(1); return 0; } void InitModule_BLOGVIEWRENDERERS (void) { RegisterReadLoopHandlerset( VIEW_BLOG, blogview_GetParamsGetServerCall, NULL, NULL, NULL, blogview_LoadMsgFromServer, blogview_render, blogview_Cleanup ); RegisterNamespace("BLOG:PERMALINK", 0, 0, tmplput_blog_permalink, NULL, CTX_NONE); } webcit-8.24-dfsg.orig/utils.c0000644000175000017500000001012412271477123015702 0ustar michaelmichael/* * de/encoding stuff. hopefully mostly to be depricated in favour of subst.c + strbuf */ #define SHOW_ME_VAPPEND_PRINTF #include #include #include "webcit.h" /* * remove escaped strings from i.e. the url string (like %20 for blanks) */ long unescape_input(char *buf) { unsigned int a, b; char hex[3]; long buflen; long len; buflen = strlen(buf); while ((buflen > 0) && (isspace(buf[buflen - 1]))){ buf[buflen - 1] = 0; buflen --; } a = 0; while (a < buflen) { if (buf[a] == '+') buf[a] = ' '; if (buf[a] == '%') { /* don't let % chars through, rather truncate the input. */ if (a + 2 > buflen) { buf[a] = '\0'; buflen = a; } else { hex[0] = buf[a + 1]; hex[1] = buf[a + 2]; hex[2] = 0; b = 0; b = decode_hex(hex); buf[a] = (char) b; len = buflen - a - 2; if (len > 0) memmove(&buf[a + 1], &buf[a + 3], len); buflen -=2; } } a++; } return a; } /* * Copy a string, escaping characters which have meaning in HTML. * * target target buffer * strbuf source buffer * nbsp If nonzero, spaces are converted to non-breaking spaces. * nolinebreaks if set, linebreaks are removed from the string. */ long stresc(char *target, long tSize, char *strbuf, int nbsp, int nolinebreaks) { char *aptr, *bptr, *eptr; *target = '\0'; aptr = strbuf; bptr = target; eptr = target + tSize - 6; /* our biggest unit to put in... */ while ((bptr < eptr) && !IsEmptyStr(aptr) ){ if (*aptr == '<') { memcpy(bptr, "<", 4); bptr += 4; } else if (*aptr == '>') { memcpy(bptr, ">", 4); bptr += 4; } else if (*aptr == '&') { memcpy(bptr, "&", 5); bptr += 5; } else if (*aptr == '\"') { memcpy(bptr, """, 6); bptr += 6; } else if (*aptr == '\'') { memcpy(bptr, "'", 5); bptr += 5; } else if (*aptr == LB) { *bptr = '<'; bptr ++; } else if (*aptr == RB) { *bptr = '>'; bptr ++; } else if (*aptr == QU) { *bptr ='"'; bptr ++; } else if ((*aptr == 32) && (nbsp == 1)) { memcpy(bptr, " ", 6); bptr += 6; } else if ((*aptr == '\n') && (nolinebreaks)) { *bptr='\0'; /* nothing */ } else if ((*aptr == '\r') && (nolinebreaks)) { *bptr='\0'; /* nothing */ } else{ *bptr = *aptr; bptr++; } aptr ++; } *bptr = '\0'; if ((bptr = eptr - 1 ) && !IsEmptyStr(aptr) ) return -1; return (bptr - target); } /* * static wrapper for ecsputs1 */ void escputs(const char *strbuf) { StrEscAppend(WC->WBuf, NULL, strbuf, 0, 0); } /* * urlescape buffer and print it to the client */ void urlescputs(const char *strbuf) { StrBufUrlescAppend(WC->WBuf, NULL, strbuf); } /** * urlescape buffer and print it as header */ void hurlescputs(const char *strbuf) { StrBufUrlescAppend(WC->HBuf, NULL, strbuf); } /* * Output a string to the client as a CDATA block */ void cdataout(char *rawdata) { char *ptr = rawdata; wc_printf("", 3)) { wc_printf("]]]]>"); ++ptr; ++ptr; ++ptr; } else { wc_printf("%c", ptr[0]); ++ptr; } } wc_printf("]]>"); } webcit-8.24-dfsg.orig/dav_get.c0000644000175000017500000001621312271477123016160 0ustar michaelmichael/* * Handles GroupDAV GET requests. * * Copyright (c) 2005-2012 by the citadel.org team * * This program is open source software. You can redistribute it and/or * modify it under the terms of the GNU General Public License, version 3. * * This program 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. */ #include "webcit.h" #include "webserver.h" #include "dav.h" /* * Fetch the entire contents of the room as one big ics file. * This is for "webcal://" type access. */ void dav_get_big_ics(void) { char buf[1024]; serv_puts("ICAL getics"); serv_getln(buf, sizeof buf); if (buf[0] != '1') { hprintf("HTTP/1.1 404 not found\r\n"); dav_common_headers(); hprintf("Content-Type: text/plain\r\n"); begin_burst(); wc_printf("%s\r\n", &buf[4] ); end_burst(); return; } hprintf("HTTP/1.1 200 OK\r\n"); dav_common_headers(); hprintf("Content-type: text/calendar; charset=UTF-8\r\n"); begin_burst(); while (serv_getln(buf, sizeof buf), strcmp(buf, "000")) { wc_printf("%s\r\n", buf); } end_burst(); } /* * MIME parser callback function for dav_get() * Helps identify the relevant section of a multipart message */ void extract_preferred(char *name, char *filename, char *partnum, char *disp, void *content, char *cbtype, char *cbcharset, size_t length, char *encoding, char *cbid, void *userdata) { struct epdata *epdata = (struct epdata *)userdata; int hit = 0; /* We only want the first one that we found */ if (!IsEmptyStr(epdata->found_section)) return; /* Check for a content type match */ if (strlen(epdata->desired_content_type_1) > 0) { if (!strcasecmp(epdata->desired_content_type_1, cbtype)) { hit = 1; } } if (!IsEmptyStr(epdata->desired_content_type_2)) { if (!strcasecmp(epdata->desired_content_type_2, cbtype)) { hit = 1; } } /* Is this the one? If so, output it. */ if (hit) { safestrncpy(epdata->found_section, partnum, sizeof epdata->found_section); if (!IsEmptyStr(cbcharset)) { safestrncpy(epdata->charset, cbcharset, sizeof epdata->charset); } hprintf("Content-type: %s; charset=%s\r\n", cbtype, epdata->charset); begin_burst(); StrBufAppendBufPlain(WC->WBuf, content, length, 0); end_burst(); } } /* * The pathname is always going to take one of two formats: * /groupdav/room_name/euid (GroupDAV) * /groupdav/room_name (webcal) */ void dav_get(void) { wcsession *WCC = WC; StrBuf *dav_roomname; StrBuf *dav_uid; long dav_msgnum = (-1); char buf[1024]; int in_body = 0; char *ptr; char *endptr; char *msgtext = NULL; size_t msglen = 0; size_t msgalloc = 0; int linelen; char content_type[128]; char charset[128]; char date[128]; struct epdata epdata; if (StrBufNum_tokens(WCC->Hdr->HR.ReqLine, '/') < 2) { hprintf("HTTP/1.1 404 not found\r\n"); dav_common_headers(); hprintf("Content-Type: text/plain\r\n"); wc_printf("The object you requested was not found.\r\n"); end_burst(); return; } dav_roomname = NewStrBuf();; dav_uid = NewStrBuf();; StrBufExtract_token(dav_roomname, WCC->Hdr->HR.ReqLine, 0, '/'); StrBufExtract_token(dav_uid, WCC->Hdr->HR.ReqLine, 1, '/'); if ((!strcasecmp(ChrPtr(dav_uid), "ics")) || (!strcasecmp(ChrPtr(dav_uid), "calendar.ics"))) { FlushStrBuf(dav_uid); } /* Go to the correct room. */ if (strcasecmp(ChrPtr(WCC->CurRoom.name), ChrPtr(dav_roomname))) { gotoroom(dav_roomname); } if (strcasecmp(ChrPtr(WCC->CurRoom.name), ChrPtr(dav_roomname))) { hprintf("HTTP/1.1 404 not found\r\n"); dav_common_headers(); hprintf("Content-Type: text/plain\r\n"); wc_printf("There is no folder called \"%s\" on this server.\r\n", ChrPtr(dav_roomname)); end_burst(); FreeStrBuf(&dav_roomname); FreeStrBuf(&dav_uid); return; } /** GET on the collection itself returns an ICS of the entire collection. */ if (StrLength(dav_uid) == 0) { dav_get_big_ics(); FreeStrBuf(&dav_roomname); FreeStrBuf(&dav_uid); return; } dav_msgnum = locate_message_by_uid(ChrPtr(dav_uid)); serv_printf("MSG2 %ld", dav_msgnum); serv_getln(buf, sizeof buf); if (buf[0] != '1') { hprintf("HTTP/1.1 404 not found\r\n"); dav_common_headers(); hprintf("Content-Type: text/plain\r\n"); wc_printf("Object \"%s\" was not found in the \"%s\" folder.\r\n", ChrPtr(dav_uid), ChrPtr(dav_roomname)); end_burst(); FreeStrBuf(&dav_roomname); FreeStrBuf(&dav_uid); return; } FreeStrBuf(&dav_roomname); FreeStrBuf(&dav_uid); /* We got it; a message is now arriving from the server. Read it in. */ in_body = 0; strcpy(charset, "UTF-8"); strcpy(content_type, "text/plain"); strcpy(date, ""); while (serv_getln(buf, sizeof buf), strcmp(buf, "000")) { linelen = strlen(buf); /* Append it to the buffer */ if ((msglen + linelen + 3) > msgalloc) { msgalloc = ( (msgalloc > 0) ? (msgalloc * 2) : 1024 ); msgtext = realloc(msgtext, msgalloc); } strcpy(&msgtext[msglen], buf); msglen += linelen; strcpy(&msgtext[msglen], "\n"); msglen += 1; /* Also learn some things about the message */ if (linelen == 0) { in_body = 1; } if (!in_body) { if (!strncasecmp(buf, "Date:", 5)) { safestrncpy(date, &buf[5], sizeof date); striplt(date); } if (!strncasecmp(buf, "Content-type:", 13)) { safestrncpy(content_type, &buf[13], sizeof content_type); striplt(content_type); ptr = bmstrcasestr(&buf[13], "charset="); if (ptr) { safestrncpy(charset, ptr+8, sizeof charset); striplt(charset); endptr = strchr(charset, ';'); if (endptr != NULL) strcpy(endptr, ""); } endptr = strchr(content_type, ';'); if (endptr != NULL) strcpy(endptr, ""); } } } msgtext[msglen] = 0; /* Output headers common to single or multi part messages */ hprintf("HTTP/1.1 200 OK\r\n"); dav_common_headers(); hprintf("etag: \"%ld\"\r\n", dav_msgnum); hprintf("Date: %s\r\n", date); memset(&epdata, 0, sizeof(struct epdata)); safestrncpy(epdata.charset, charset, sizeof epdata.charset); /* If we have a multipart message on our hands, and we are in a groupware room, * strip it down to only the relevant part. */ if (!strncasecmp(content_type, "multipart/", 10)) { if ( (WCC->CurRoom.defview == VIEW_CALENDAR) || (WCC->CurRoom.defview == VIEW_TASKS) ) { strcpy(epdata.desired_content_type_1, "text/calendar"); } else if (WCC->CurRoom.defview == VIEW_ADDRESSBOOK) { strcpy(epdata.desired_content_type_1, "text/vcard"); strcpy(epdata.desired_content_type_2, "text/x-vcard"); } mime_parser(msgtext, &msgtext[msglen], extract_preferred, NULL, NULL, (void *)&epdata, 0); } /* If epdata.found_section is empty, we haven't output anything yet, so output the whole thing */ if (IsEmptyStr(epdata.found_section)) { ptr = msgtext; endptr = &msgtext[msglen]; hprintf("Content-type: %s; charset=%s\r\n", content_type, charset); in_body = 0; do { ptr = memreadline(ptr, buf, sizeof buf); if (in_body) { wc_printf("%s\r\n", buf); } else if ((buf[0] == 0) && (in_body == 0)) { in_body = 1; begin_burst(); } } while (ptr < endptr); end_burst(); } free(msgtext); } webcit-8.24-dfsg.orig/.cvsignore0000644000175000017500000000017412271477123016402 0ustar michaelmichael*.o Makefile config.cache config.log config.status config.h.in configure webcit webserver content autom4te.cache setup keys webcit-8.24-dfsg.orig/Make_modules0000644000175000017500000000027112271477140016727 0ustar michaelmichael# # Make_modules # This file is to be included by Makefile to dynamically add modules to the build process # THIS FILE WAS AUTO GENERATED BY mk_modules_init.sh DO NOT EDIT THIS FILE # webcit-8.24-dfsg.orig/pushemail.c0000644000175000017500000000743112271477123016540 0ustar michaelmichael/* * Edits a users push email settings * Author: Mathew McBride */ #include "webcit.h" void display_pushemail(void) { folder Room; int Done = 0; StrBuf *Buf; long vector[8] = {8, 0, 0, 1, 2, 3, 4, 5}; WCTemplputParams SubTP; char mobnum[20]; StackContext(NULL, &SubTP, &vector, CTX_LONGVECTOR, 0, NULL); vector[0] = 16; /* Find any existing settings*/ Buf = NewStrBuf(); memset(&Room, 0, sizeof(folder)); if (goto_config_room(Buf, &Room) == 0) { int msgnum = 0; serv_puts("MSGS ALL|0|1"); StrBuf_ServGetln(Buf); if (GetServerStatus(Buf, NULL) == 8) { serv_puts("subj|__ Push email settings __"); serv_puts("000"); while (!Done && StrBuf_ServGetln(Buf) >= 0) { if ( (StrLength(Buf)==3) && !strcmp(ChrPtr(Buf), "000")) { Done = 1; break; } msgnum = StrTol(Buf); } } if (msgnum > 0L) { serv_printf("MSG0 %d", msgnum); StrBuf_ServGetln(Buf); if (GetServerStatus(Buf, NULL) == 1) { int i =0; Done = 0; while (!Done && StrBuf_ServGetln(Buf) >= 0) { if (( (StrLength(Buf)==3) && !strcmp(ChrPtr(Buf), "000"))|| ((StrLength(Buf)==4) && !strcmp(ChrPtr(Buf), "text"))) { Done = 1; break; } } if (!strcmp(ChrPtr(Buf), "text")) { Done = 0; while (!Done && StrBuf_ServGetln(Buf) >= 0) { if ( (StrLength(Buf)==3) && !strcmp(ChrPtr(Buf), "000")) { Done = 1; break; } if (strncasecmp(ChrPtr(Buf), "none", 4) == 0) { vector[1] = 0; } else if (strncasecmp(ChrPtr(Buf), "textmessage", 11) == 0) { vector[1] = 1; i++; } else if (strncasecmp(ChrPtr(Buf), "funambol", 8) == 0) { vector[1] = 2; } else if (strncasecmp(ChrPtr(Buf), "httpmessage", 12) == 0) { vector[1] = 3; } else if (i == 1) { strncpy(mobnum, ChrPtr(Buf), 20); i++; } } } } } serv_printf("GOTO %s", ChrPtr(WC->CurRoom.name)); StrBuf_ServGetln(Buf); GetServerStatus(Buf, NULL); } FlushFolder(&Room); output_headers(1, 1, 1, 0, 0, 0); DoTemplate(HKEY("prefs_pushemail"), NULL, &SubTP); wDumpContent(1); UnStackContext(&SubTP); FreeStrBuf(&Buf); } void save_pushemail(void) { folder Room; int Done = 0; StrBuf *Buf; char buf[SIZ]; int msgnum = 0; char *pushsetting = bstr("pushsetting"); char *sms = NULL; if (strncasecmp(pushsetting, "textmessage", 11) == 0) { sms = bstr("user_sms_number"); } Buf = NewStrBuf(); memset(&Room, 0, sizeof(folder)); if (goto_config_room(Buf, &Room) != 0) { FreeStrBuf(&Buf); FlushFolder(&Room); return; /* oh well. */ } FlushFolder(&Room); serv_puts("MSGS ALL|0|1"); StrBuf_ServGetln(Buf); if (GetServerStatus(Buf, NULL) == 8) { serv_puts("subj|__ Push email settings __"); serv_puts("000"); } else { printf("Junk in save_pushemail buffer!: %s\n", buf); FreeStrBuf(&Buf); return; } while (!Done && StrBuf_ServGetln(Buf) >= 0) { if ( (StrLength(Buf)==3) && !strcmp(ChrPtr(Buf), "000")) { Done = 1; break; } msgnum = StrTol(Buf); } if (msgnum > 0L) { serv_printf("DELE %d", msgnum); StrBuf_ServGetln(Buf); GetServerStatus(Buf, NULL); } serv_printf("ENT0 1||0|1|__ Push email settings __|"); StrBuf_ServGetln(Buf); if (GetServerStatus(Buf, NULL) == 4) { serv_puts(pushsetting); if (sms != NULL) { serv_puts(sms); } serv_puts(""); serv_puts("000"); } /** Go back to the room we're supposed to be in */ serv_printf("GOTO %s", ChrPtr(WC->CurRoom.name)); StrBuf_ServGetln(Buf); GetServerStatus(Buf, NULL); http_redirect("display_pushemail"); FreeStrBuf(&Buf); } void InitModule_PUSHMAIL (void) { WebcitAddUrlHandler(HKEY("display_pushemail"), "", 0, display_pushemail, 0); WebcitAddUrlHandler(HKEY("save_pushemail"), "", 0, save_pushemail, 0); } webcit-8.24-dfsg.orig/dav_report.c0000644000175000017500000000514412271477123016715 0ustar michaelmichael/* * Handles GroupDAV REPORT requests. * * Copyright (c) 2005-2012 by the citadel.org team * * This program is open source software; you can redistribute it and/or * modify it under the terms of the GNU General Public License version 3. * * This program 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. */ /* SAMPLE QUERIES TO WORK WITH * REPORT /groupdav/calendar/ HTTP/1.1 Content-type: application/xml Content-length: 349 REPORT /groupdav/calendar/ HTTP/1.1 Content-type: application/xml Content-length: 255 */ #include "webcit.h" #include "webserver.h" #include "dav.h" /* * The pathname is always going to be /groupdav/room_name/msg_num */ void dav_report(void) { char datestring[256]; time_t now = time(NULL); http_datestring(datestring, sizeof datestring, now); const char *req = ChrPtr(WC->upload); syslog(LOG_DEBUG, "REPORT: \033[31m%s\033[0m", req); hprintf("HTTP/1.1 500 Internal Server Error\r\n"); dav_common_headers(); hprintf("Date: %s\r\n", datestring); hprintf("Content-Type: text/plain\r\n"); wc_printf("An internal error has occurred at %s:%d.\r\n", __FILE__ , __LINE__ ); end_burst(); return; } extern int ParseMessageListHeaders_EUID(StrBuf *Line, const char **pos, message_summary *Msg, StrBuf *ConversionBuffer); extern int DavUIDL_GetParamsGetServerCall(SharedMessageStatus *Stat, void **ViewSpecific, long oper, char *cmd, long len, char *filter, long flen); extern int DavUIDL_RenderView_or_Tail(SharedMessageStatus *Stat, void **ViewSpecific, long oper); extern int DavUIDL_Cleanup(void **ViewSpecific); void InitModule_REPORT (void) { RegisterReadLoopHandlerset( eReadEUIDS, DavUIDL_GetParamsGetServerCall, NULL, NULL, ParseMessageListHeaders_EUID, NULL, DavUIDL_RenderView_or_Tail, DavUIDL_Cleanup ); } webcit-8.24-dfsg.orig/bootstrap0000755000175000017500000000160212271477123016342 0ustar michaelmichael#!/bin/sh # # run me after checking WebCit out of svn. # # Remove any vestiges of pre-6.05 build environments rm -f .libs modules *.so *.lo *.la 2>/dev/null if ./scripts/get_ical_data.sh; then echo ... running aclocal ... aclocal echo ... running autoconf ... autoconf # If your autoconf version changes, the autom4te.cache stuff will mess you up. # Get rid of it. echo ... removing autoheader cache files ... rm -rf autom4te*.cache echo ... running autoheader ... autoheader echo ... mk_module_init.sh ... ./scripts/mk_module_init.sh echo echo This script has been tested with autoconf 2.53 and echo automake 1.5. Other versions may work, but I recommend the latest echo compatible versions of these. echo echo Also note that autoconf and automake should be configured echo with the same prefix. echo fi webcit-8.24-dfsg.orig/event.c0000644000175000017500000010436712271477123015700 0ustar michaelmichael/* * Editing calendar events. * * Copyright (c) 1996-2012 by the citadel.org team * * This program is open source software. You can redistribute it and/or * modify it under the terms of the GNU General Public License, version 3. * * This program 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. */ #include "webcit.h" #include "webserver.h" #include "calendar.h" /* * Display an event by itself (for editing) * supplied_vevent the event to edit * msgnum reference on the citserver */ void display_edit_individual_event(icalcomponent *supplied_vevent, long msgnum, char *from, int unread, calview *calv) { wcsession *WCC = WC; icalcomponent *vevent; icalproperty *p; icalvalue *v; struct icaltimetype t_start, t_end; time_t now; struct tm tm_now; int created_new_vevent = 0; icalproperty *organizer = NULL; char organizer_string[SIZ]; icalproperty *attendee = NULL; char attendee_string[SIZ]; char buf[SIZ]; int organizer_is_me = 0; int i, j = 0; /************************************************************ * Uncomment this to see the UID in calendar events for debugging int sequence = 0; */ char weekday_labels[7][32]; char month_labels[12][32]; long weekstart = 0; icalproperty *rrule = NULL; struct icalrecurrencetype recur; char weekday_is_selected[7]; int which_rrmonthtype_is_preselected = 0; int rrmday; int rrmweekday; icaltimetype day1; int weekbase; int rrmweek; int rrymweek; int rrymweekday; int rrymonth; int which_rrend_is_preselected; int which_rryeartype_is_preselected; const char *ch; char *tabnames[3]; const char *frequency_units[8]; const char *ordinals[6]; frequency_units[0] = _("seconds"); frequency_units[1] = _("minutes"); frequency_units[2] = _("hours"); frequency_units[3] = _("days"); frequency_units[4] = _("weeks"); frequency_units[5] = _("months"); frequency_units[6] = _("years"); frequency_units[7] = _("never"); ordinals[0] = "0"; ordinals[1] = _("first"); ordinals[2] = _("second"); ordinals[3] = _("third"); ordinals[4] = _("fourth"); ordinals[5] = _("fifth"); tabnames[0] = _("Event"); tabnames[1] = _("Attendees"); tabnames[2] = _("Recurrence"); get_pref_long("weekstart", &weekstart, 17); if (weekstart > 6) weekstart = 0; syslog(LOG_DEBUG, "display_edit_individual_event(%ld) calview=%s year=%s month=%s day=%s\n", msgnum, bstr("calview"), bstr("year"), bstr("month"), bstr("day") ); /* populate the weekday names - begin */ now = time(NULL); localtime_r(&now, &tm_now); while (tm_now.tm_wday != 0) { now -= 86400L; localtime_r(&now, &tm_now); } for (i=0; i<7; ++i) { localtime_r(&now, &tm_now); wc_strftime(weekday_labels[i], 32, "%A", &tm_now); now += 86400L; } /* populate the weekday names - end */ /* populate the month names - begin */ now = 259200L; /* 1970-jan-04 is the first Sunday ever */ localtime_r(&now, &tm_now); for (i=0; i<12; ++i) { localtime_r(&now, &tm_now); wc_strftime(month_labels[i], 32, "%B", &tm_now); now += 2678400L; } /* populate the month names - end */ now = time(NULL); strcpy(organizer_string, ""); strcpy(attendee_string, ""); if (supplied_vevent != NULL) { vevent = supplied_vevent; /* Convert all timestamps to UTC to make them easier to process. */ ical_dezonify(vevent); /* * If we're looking at a fully encapsulated VCALENDAR * rather than a VEVENT component, attempt to use the first * relevant VEVENT subcomponent. If there is none, the * NULL returned by icalcomponent_get_first_component() will * tell the next iteration of this function to create a * new one. */ if (icalcomponent_isa(vevent) == ICAL_VCALENDAR_COMPONENT) { display_edit_individual_event( icalcomponent_get_first_component( vevent, ICAL_VEVENT_COMPONENT), msgnum, from, unread, NULL ); return; } } else { vevent = icalcomponent_new(ICAL_VEVENT_COMPONENT); created_new_vevent = 1; } /* Learn the sequence */ p = icalcomponent_get_first_property(vevent, ICAL_SEQUENCE_PROPERTY); /************************************************************ * Uncomment this to see the UID in calendar events for debugging if (p != NULL) { sequence = icalproperty_get_sequence(p); } */ /* Begin output */ output_headers(1, 1, 1, 0, 0, 0); wc_printf("
\n"); wc_printf("

"); wc_printf(_("Add or edit an event")); wc_printf("

"); wc_printf("
\n"); wc_printf("
\n"); /************************************************************ * Uncomment this to see the UID in calendar events for debugging wc_printf("UID == "); p = icalcomponent_get_first_property(vevent, ICAL_UID_PROPERTY); if (p != NULL) { escputs((char *)icalproperty_get_comment(p)); } wc_printf("
\n"); wc_printf("SEQUENCE == %d
\n", sequence); *************************************************************/ wc_printf("
\n"); wc_printf("\n", WC->nonce); wc_printf("WBuf, WCC->CurRoom.name, NULL, 0, 0); wc_printf("\">\n"); wc_printf("\n", msgnum); wc_printf("\n", bstr("calview")); wc_printf("\n", bstr("year")); wc_printf("\n", bstr("month")); wc_printf("\n", bstr("day")); tabbed_dialog(3, tabnames); begin_tab(0, 3); /* Put it in a borderless table so it lines up nicely */ wc_printf("\n"); wc_printf("\n"); wc_printf("\n"); wc_printf("\n"); wc_printf("\n"); wc_printf(""); /* * For a new event, the user creating the event should be the * organizer. Set this field accordingly. */ if (icalcomponent_get_first_property(vevent, ICAL_ORGANIZER_PROPERTY) == NULL) { sprintf(organizer_string, "mailto:%s", ChrPtr(WC->cs_inet_email)); icalcomponent_add_property(vevent, icalproperty_new_organizer(organizer_string) ); } /* * Determine who is the organizer of this event. * We need to determine "me" or "not me." */ organizer = icalcomponent_get_first_property(vevent, ICAL_ORGANIZER_PROPERTY); if (organizer != NULL) { strcpy(organizer_string, icalproperty_get_organizer(organizer)); if (!strncasecmp(organizer_string, "mailto:", 7)) { strcpy(organizer_string, &organizer_string[7]); striplt(organizer_string); serv_printf("ISME %s", organizer_string); serv_getln(buf, sizeof buf); if (buf[0] == '2') { organizer_is_me = 1; } } } wc_printf("\n"); /* Transparency */ wc_printf("\n"); /* Done with properties. */ wc_printf("
"); wc_printf(_("Summary")); wc_printf("\n" "
"); wc_printf(_("Location")); wc_printf("\n" "
"); wc_printf(_("Start")); wc_printf("\n"); p = icalcomponent_get_first_property(vevent, ICAL_DTSTART_PROPERTY); if (p != NULL) { t_start = icalproperty_get_dtstart(p); if (t_start.is_date) { t_start.hour = 0; t_start.minute = 0; t_start.second = 0; } } else { localtime_r(&now, &tm_now); if (havebstr("year")) { tm_now.tm_year = ibstr("year") - 1900; tm_now.tm_mon = ibstr("month") - 1; tm_now.tm_mday = ibstr("day"); } if (havebstr("hour")) { tm_now.tm_hour = ibstr("hour"); tm_now.tm_min = ibstr("minute"); tm_now.tm_sec = 0; } else { tm_now.tm_hour = 0; tm_now.tm_min = 0; tm_now.tm_sec = 0; } t_start = icaltime_from_timet_with_zone( mktime(&tm_now), ((yesbstr("alldayevent")) ? 1 : 0), icaltimezone_get_utc_timezone() ); t_start.is_utc = 1; } display_icaltimetype_as_webform(&t_start, "dtstart", 0); wc_printf("%s", (t_start.is_date ? "checked=\"checked\"" : "" ), _("All day event") ); wc_printf("
"); wc_printf(_("End")); wc_printf("\n"); p = icalcomponent_get_first_property(vevent, ICAL_DTEND_PROPERTY); if (p != NULL) { t_end = icalproperty_get_dtend(p); /* * If this is an all-day-event, the end time is set to real end * day + 1, so we have to adjust accordingly. */ if (t_start.is_date) { icaltime_adjust(&t_end, -1, 0, 0, 0); } } else { if (created_new_vevent == 1) { /* set default duration */ if (t_start.is_date) { /* * If this is an all-day-event, set the end time to be identical to * the start time (the hour/minute/second will be set to midnight). */ t_end = t_start; } else { /* * If this is not an all-day event and there is no * end time specified, make the default one hour * from the start time. */ t_end = t_start; t_end.hour += 1; t_end.second = 0; t_end = icaltime_normalize(t_end); /* t_end = icaltime_from_timet(now, 0); */ } } else { /* * If an existing event has no end date/time this is * supposed to mean end = start. */ t_end = t_start; } } display_icaltimetype_as_webform(&t_end, "dtend", 0); wc_printf("
"); wc_printf(_("Notes")); wc_printf("\n" "
"); wc_printf(_("Organizer")); wc_printf(""); escputs(organizer_string); if (organizer_is_me) { wc_printf(" "); wc_printf(_("(you are the organizer)")); wc_printf("\n"); } /* * Transmit the organizer as a hidden field. We don't want the user * to be able to change it, but we do want it fed back to the server, * especially if this is a new event and there is no organizer already * in the calendar object. */ wc_printf(""); wc_printf("
"); wc_printf(_("Show time as:")); wc_printf(""); p = icalcomponent_get_first_property(vevent, ICAL_TRANSP_PROPERTY); if (p == NULL) { /* No transparency found. Default to opaque (busy). */ p = icalproperty_new_transp(ICAL_TRANSP_OPAQUE); if (p != NULL) { icalcomponent_add_property(vevent, p); } } if (p != NULL) { v = icalproperty_get_value(p); } else { v = NULL; } wc_printf(""); wc_printf(_("Free")); wc_printf("  "); wc_printf(""); wc_printf(_("Busy")); wc_printf("
\n"); end_tab(0, 3); /* Attendees tab (need to move things here) */ begin_tab(1, 3); wc_printf("\n"); /* same table style as the event tab */ wc_printf("\n"); wc_printf("
"); wc_printf(_("Attendees")); wc_printf("
" ""); wc_printf(_("(One per line)")); wc_printf("\n"); /* Pop open an address book -- begin */ wc_printf( " " "" "", _("Attendees"), _("Contacts") ); /* Pop open an address book -- end */ wc_printf("
" "
\n"); end_tab(1, 3); /* Recurrence tab */ begin_tab(2, 3); rrule = icalcomponent_get_first_property(vevent, ICAL_RRULE_PROPERTY); if (rrule) { recur = icalproperty_get_rrule(rrule); } else { /* blank recurrence with some sensible defaults */ memset(&recur, 0, sizeof(struct icalrecurrencetype)); recur.count = 3; recur.until = icaltime_null_time(); recur.interval = 1; recur.freq = ICAL_WEEKLY_RECURRENCE; } wc_printf("%s", (rrule ? "checked=\"checked\"" : "" ), _("This is a recurring event") ); wc_printf("
\n"); /* begin 'rrule_div' div */ wc_printf("\n"); wc_printf("\n"); which_rrend_is_preselected = 0; if (!icaltime_is_null_time(recur.until)) which_rrend_is_preselected = 2; if (recur.count > 0) which_rrend_is_preselected = 1; wc_printf("\n"); wc_printf("
"); wc_printf(_("Recurrence rule")); wc_printf(""); if ((recur.freq < 0) || (recur.freq > 6)) recur.freq = 4; wc_printf("%s ", _("Repeats every")); wc_printf(" ", recur.interval); wc_printf("\n"); wc_printf("
"); /* begin 'weekday_selector' div */ wc_printf("%s
", _("on these weekdays:")); memset(weekday_is_selected, 0, 7); for (i=0; i%s\n", weekday_labels[i]); } wc_printf("
\n"); /* end 'weekday_selector' div */ wc_printf("
"); /* begin 'monthday_selector' div */ wc_printf("", ((which_rrmonthtype_is_preselected == 0) ? "checked='checked'" : "") ); rrmday = t_start.day; rrmweekday = icaltime_day_of_week(t_start) - 1; /* Figure out what week of the month we're in */ day1 = t_start; day1.day = 1; weekbase = icaltime_week_number(day1); rrmweek = icaltime_week_number(t_start) - weekbase + 1; /* Are we going by day of the month or week/day? */ if (recur.by_month_day[0] != ICAL_RECURRENCE_ARRAY_MAX) { which_rrmonthtype_is_preselected = 0; rrmday = recur.by_month_day[0]; } else if (recur.by_day[0] != ICAL_RECURRENCE_ARRAY_MAX) { which_rrmonthtype_is_preselected = 1; rrmweek = icalrecurrencetype_day_position(recur.by_day[0]); rrmweekday = icalrecurrencetype_day_day_of_week(recur.by_day[0]) - 1; } wc_printf(_("on day %s%d%s of the month"), "", rrmday, ""); wc_printf("
\n"); wc_printf("", ((which_rrmonthtype_is_preselected == 1) ? "checked='checked'" : "") ); wc_printf(_("on the ")); wc_printf(" \n"); wc_printf(""); wc_printf(" %s
\n", _("of the month")); wc_printf("
\n"); /* end 'monthday_selector' div */ rrymweek = rrmweek; rrymweekday = rrmweekday; rrymonth = t_start.month; which_rryeartype_is_preselected = 0; if ( (recur.by_day[0] != ICAL_RECURRENCE_ARRAY_MAX) && (recur.by_day[0] != 0) && (recur.by_month[0] != ICAL_RECURRENCE_ARRAY_MAX) && (recur.by_month[0] != 0) ) { which_rryeartype_is_preselected = 1; rrymweek = icalrecurrencetype_day_position(recur.by_day[0]); rrymweekday = icalrecurrencetype_day_day_of_week(recur.by_day[0]) - 1; rrymonth = recur.by_month[0]; } wc_printf("
"); /* begin 'yearday_selector' div */ wc_printf("", ((which_rryeartype_is_preselected == 0) ? "checked='checked'" : "") ); wc_printf(_("every ")); wc_printf("%s
", _("year on this date")); wc_printf("", ((which_rryeartype_is_preselected == 1) ? "checked='checked'" : "") ); wc_printf(_("on the ")); wc_printf(" \n"); wc_printf(""); wc_printf(" %s ", _("of")); wc_printf(""); wc_printf("
\n"); wc_printf("
\n"); /* end 'yearday_selector' div */ wc_printf("
"); wc_printf(_("Recurrence range")); wc_printf("\n"); wc_printf("", ((which_rrend_is_preselected == 0) ? "checked='checked'" : "") ); wc_printf("%s
\n", _("No ending date")); wc_printf("", ((which_rrend_is_preselected == 1) ? "checked='checked'" : "") ); wc_printf(_("Repeat this event")); wc_printf(" ", recur.count); wc_printf(_("times")); wc_printf("
\n"); wc_printf("", ((which_rrend_is_preselected == 2) ? "checked='checked'" : "") ); wc_printf(_("Repeat this event until ")); if (icaltime_is_null_time(recur.until)) { recur.until = icaltime_add(t_start, icaldurationtype_from_int(604800)); } display_icaltimetype_as_webform(&recur.until, "rruntil", 1); wc_printf("
\n"); wc_printf("
\n"); wc_printf("
\n"); /* end 'rrule' div */ end_tab(2, 3); /* submit buttons (common area beneath the tabs) */ begin_tab(3, 3); wc_printf("
" "" "  " "\n" "  " "\n" "  " "\n" "
\n", _("Save"), _("Delete"), _("Check attendee availability"), _("Cancel") ); end_tab(3, 3); wc_printf("
\n"); StrBufAppendPrintf(WC->trailing_javascript, "eventEditAllDay(); \n" "RecurrenceShowHide(); \n" "EnableOrDisableCheckButton(); \n" ); do_template("addressbook_popup"); wDumpContent(1); if (created_new_vevent) { icalcomponent_free(vevent); } } /* * Save an edited event * * supplied_vevent: the event to save * msgnum: the index on the citserver */ void save_individual_event(icalcomponent *supplied_vevent, long msgnum, char *from, int unread, calview *calv) { char buf[SIZ]; icalproperty *prop; icalcomponent *vevent, *encaps; int created_new_vevent = 0; int all_day_event = 0; struct icaltimetype event_start, t; icalproperty *attendee = NULL; char attendee_string[SIZ]; int i, j; int foundit; char form_attendees[SIZ]; char organizer_string[SIZ]; int sequence = 0; enum icalproperty_transp formtransp = ICAL_TRANSP_NONE; const char *ch; if (supplied_vevent != NULL) { vevent = supplied_vevent; /* Convert all timestamps to UTC to make them easier to process. */ ical_dezonify(vevent); /* * If we're looking at a fully encapsulated VCALENDAR * rather than a VEVENT component, attempt to use the first * relevant VEVENT subcomponent. If there is none, the * NULL returned by icalcomponent_get_first_component() will * tell the next iteration of this function to create a * new one. */ if (icalcomponent_isa(vevent) == ICAL_VCALENDAR_COMPONENT) { save_individual_event( icalcomponent_get_first_component( vevent, ICAL_VEVENT_COMPONENT), msgnum, from, unread, NULL ); return; } } else { vevent = icalcomponent_new(ICAL_VEVENT_COMPONENT); created_new_vevent = 1; } if ( (havebstr("save_button")) || (havebstr("check_button")) ) { /* Replace values in the component with ones from the form */ while (prop = icalcomponent_get_first_property(vevent, ICAL_SUMMARY_PROPERTY), prop != NULL) { icalcomponent_remove_property(vevent, prop); icalproperty_free(prop); } /* Add NOW() to the calendar object... */ icalcomponent_set_dtstamp(vevent, icaltime_from_timet( time(NULL), 0)); if (havebstr("summary")) { icalcomponent_add_property(vevent, icalproperty_new_summary(bstr("summary"))); } else { icalcomponent_add_property(vevent, icalproperty_new_summary(_("Untitled Event"))); } while (prop = icalcomponent_get_first_property(vevent, ICAL_LOCATION_PROPERTY), prop != NULL) { icalcomponent_remove_property(vevent, prop); icalproperty_free(prop); } if (havebstr("location")) { icalcomponent_add_property(vevent, icalproperty_new_location(bstr("location"))); } while (prop = icalcomponent_get_first_property(vevent, ICAL_DESCRIPTION_PROPERTY), prop != NULL) { icalcomponent_remove_property(vevent, prop); icalproperty_free(prop); } if (havebstr("description")) { icalcomponent_add_property(vevent, icalproperty_new_description(bstr("description"))); } while (prop = icalcomponent_get_first_property(vevent, ICAL_DTSTART_PROPERTY), prop != NULL) { icalcomponent_remove_property(vevent, prop); icalproperty_free(prop); } if (yesbstr("alldayevent")) { all_day_event = 1; } else { all_day_event = 0; } if (all_day_event) { icaltime_from_webform_dateonly(&event_start, "dtstart"); } else { icaltime_from_webform(&event_start, "dtstart"); } prop = icalproperty_new_dtstart(event_start); if (all_day_event) { /* Force it to serialize as a date-only rather than date/time */ icalproperty_set_value(prop, icalvalue_new_date(event_start)); } if (prop) icalcomponent_add_property(vevent, prop); else icalproperty_free(prop); while (prop = icalcomponent_get_first_property(vevent, ICAL_DTEND_PROPERTY), prop != NULL) { icalcomponent_remove_property(vevent, prop); icalproperty_free(prop); } while (prop = icalcomponent_get_first_property(vevent, ICAL_DURATION_PROPERTY), prop != NULL) { icalcomponent_remove_property(vevent, prop); icalproperty_free(prop); } if (all_day_event) { icaltime_from_webform_dateonly(&t, "dtend"); /* with this field supposed to be non-inclusive we have to add one day */ icaltime_adjust(&t, 1, 0, 0, 0); } else { icaltime_from_webform(&t, "dtend"); } icalcomponent_add_property(vevent, icalproperty_new_dtend(icaltime_normalize(t) ) ); /* recurrence rules -- begin */ /* remove any existing rule */ while (prop = icalcomponent_get_first_property(vevent, ICAL_RRULE_PROPERTY), prop != NULL) { icalcomponent_remove_property(vevent, prop); icalproperty_free(prop); } if (yesbstr("is_recur")) { struct icalrecurrencetype recur; icalrecurrencetype_clear(&recur); recur.interval = atoi(bstr("interval")); recur.freq = atoi(bstr("freq")); switch(recur.freq) { /* These can't happen; they're disabled. */ case ICAL_SECONDLY_RECURRENCE: break; case ICAL_MINUTELY_RECURRENCE: break; case ICAL_HOURLY_RECURRENCE: break; /* Daily is valid but there are no further inputs. */ case ICAL_DAILY_RECURRENCE: break; /* These are the real options. */ case ICAL_WEEKLY_RECURRENCE: j=0; for (i=0; i<7; ++i) { snprintf(buf, sizeof buf, "weekday%d", i); if (YESBSTR(buf)) recur.by_day[j++] = icalrecurrencetype_day_day_of_week(i+1); } recur.by_day[j++] = ICAL_RECURRENCE_ARRAY_MAX; break; case ICAL_MONTHLY_RECURRENCE: if (!strcasecmp(bstr("rrmonthtype"), "rrmonthtype_mday")) { recur.by_month_day[0] = event_start.day; recur.by_month_day[1] = ICAL_RECURRENCE_ARRAY_MAX; } else if (!strcasecmp(bstr("rrmonthtype"), "rrmonthtype_wday")) { recur.by_day[0] = (atoi(bstr("rrmweek")) * 8) + atoi(bstr("rrmweekday")) + 1; recur.by_day[1] = ICAL_RECURRENCE_ARRAY_MAX; } break; case ICAL_YEARLY_RECURRENCE: if (!strcasecmp(bstr("rryeartype"), "rryeartype_ymday")) { /* no further action is needed here */ } else if (!strcasecmp(bstr("rryeartype"), "rryeartype_ywday")) { recur.by_month[0] = atoi(bstr("rrymonth")); recur.by_month[1] = ICAL_RECURRENCE_ARRAY_MAX; recur.by_day[0] = (atoi(bstr("rrymweek")) * 8) + atoi(bstr("rrymweekday")) + 1; recur.by_day[1] = ICAL_RECURRENCE_ARRAY_MAX; } break; /* This one can't happen either. */ case ICAL_NO_RECURRENCE: break; } if (!strcasecmp(bstr("rrend"), "rrend_count")) { recur.count = atoi(bstr("rrcount")); } else if (!strcasecmp(bstr("rrend"), "rrend_until")) { icaltime_from_webform_dateonly(&recur.until, "rruntil"); } icalcomponent_add_property(vevent, icalproperty_new_rrule(recur)); } /* recurrence rules -- end */ /* See if transparency is indicated */ if (havebstr("transp")) { if (!strcasecmp(bstr("transp"), "opaque")) { formtransp = ICAL_TRANSP_OPAQUE; } else if (!strcasecmp(bstr("transp"), "transparent")) { formtransp = ICAL_TRANSP_TRANSPARENT; } while (prop = icalcomponent_get_first_property(vevent, ICAL_TRANSP_PROPERTY), (prop != NULL)) { icalcomponent_remove_property(vevent, prop); icalproperty_free(prop); } icalcomponent_add_property(vevent, icalproperty_new_transp(formtransp)); } /* Give this event a UID if it doesn't have one. */ if (icalcomponent_get_first_property(vevent, ICAL_UID_PROPERTY) == NULL) { generate_uuid(buf); icalcomponent_add_property(vevent, icalproperty_new_uid(buf)); } /* Increment the sequence ID */ while (prop = icalcomponent_get_first_property(vevent, ICAL_SEQUENCE_PROPERTY), (prop != NULL) ) { i = icalproperty_get_sequence(prop); if (i > sequence) sequence = i; icalcomponent_remove_property(vevent, prop); icalproperty_free(prop); } ++sequence; icalcomponent_add_property(vevent, icalproperty_new_sequence(sequence) ); /* * Set the organizer, only if one does not already exist *and* * the form is supplying one */ strcpy(buf, bstr("organizer")); if ( (icalcomponent_get_first_property(vevent, ICAL_ORGANIZER_PROPERTY) == NULL) && (!IsEmptyStr(buf)) ) { /* set new organizer */ sprintf(organizer_string, "MAILTO:%s", buf); icalcomponent_add_property(vevent, icalproperty_new_organizer(organizer_string) ); } /* * Add any new attendees listed in the web form */ /* First, strip out the parenthesized partstats. */ strcpy(form_attendees, bstr("attendees")); while ( stripout(form_attendees, '(', ')') != 0); /* Next, change any commas to newlines, because we want newline-separated attendees. */ j = strlen(form_attendees); for (i=0; i 0L) ) { serv_printf("DELE %ld", lbstr("msgnum")); serv_getln(buf, sizeof buf); } if (created_new_vevent) { icalcomponent_free(vevent); } /* If this was a save or delete, go back to the calendar or summary view. */ if (!havebstr("check_button")) { if (!strcasecmp(bstr("calview"), "summary")) { display_summary_page(); } else { readloop(readfwd, eUseDefault); } } } webcit-8.24-dfsg.orig/webcit.c0000644000175000017500000006004412271477123016025 0ustar michaelmichael/* * This is the main transaction loop of the web service. It maintains a * persistent session to the Citadel server, handling HTTP WebCit requests as * they arrive and presenting a user interface. * * Copyright (c) 1996-2013 by the citadel.org team * * This program is open source software. You can redistribute it and/or * modify it under the terms of the GNU General Public License, version 3. */ #define SHOW_ME_VAPPEND_PRINTF #include #include #include "webcit.h" #include "dav.h" #include "webserver.h" StrBuf *csslocal = NULL; HashList *HandlerHash = NULL; void stuff_to_cookie(int unset_cookie); extern int GetConnected(void); void PutRequestLocalMem(void *Data, DeleteHashDataFunc DeleteIt) { wcsession *WCC = WC; int n; n = GetCount(WCC->Hdr->HTTPHeaders); Put(WCC->Hdr->HTTPHeaders, IKEY(n), Data, DeleteIt); } void DeleteWebcitHandler(void *vHandler) { WebcitHandler *Handler = (WebcitHandler*) vHandler; FreeStrBuf(&Handler->Name); FreeStrBuf(&Handler->DisplayName); free (Handler); } void WebcitAddUrlHandler(const char * UrlString, long UrlSLen, const char *DisplayName, long dslen, WebcitHandlerFunc F, long Flags) { WebcitHandler *NewHandler; NewHandler = (WebcitHandler*) malloc(sizeof(WebcitHandler)); NewHandler->F = F; NewHandler->Flags = Flags; NewHandler->Name = NewStrBufPlain(UrlString, UrlSLen); StrBufShrinkToFit(NewHandler->Name, 1); NewHandler->DisplayName = NewStrBufPlain(DisplayName, dslen); StrBufShrinkToFit(NewHandler->DisplayName, 1); Put(HandlerHash, UrlString, UrlSLen, NewHandler, DeleteWebcitHandler); } void tmplput_HANDLER_DISPLAYNAME(StrBuf *Target, WCTemplputParams *TP) { wcsession *WCC = WC; if (WCC->Hdr->HR.Handler != NULL) StrBufAppendTemplate(Target, TP, WCC->Hdr->HR.Handler->DisplayName, 0); } /* * web-printing funcion. uses our vsnprintf wrapper */ #ifdef UBER_VERBOSE_DEBUGGING void wcc_printf(const char *FILE, const char *FUNCTION, long LINE, const char *format,...) #else void wc_printf(const char *format,...) #endif { wcsession *WCC = WC; va_list arg_ptr; if (WCC->WBuf == NULL) WCC->WBuf = NewStrBuf(); #ifdef UBER_VERBOSE_DEBUGGING StrBufAppendPrintf(WCC->WBuf, "\n%s:%s:%d[", FILE, FUNCTION, LINE); #endif va_start(arg_ptr, format); StrBufVAppendPrintf(WCC->WBuf, format, arg_ptr); va_end(arg_ptr); #ifdef UBER_VERBOSE_DEBUGGING StrBufAppendPrintf(WCC->WBuf, "]\n"); #endif } /* * http-header-printing funcion. uses our vsnprintf wrapper */ void hprintf(const char *format,...) { wcsession *WCC = WC; va_list arg_ptr; va_start(arg_ptr, format); StrBufVAppendPrintf(WCC->HBuf, format, arg_ptr); va_end(arg_ptr); } /* * wrap up an HTTP session, closes tags, etc. * * print_standard_html_footer should be set to: * 0 - to transmit only, * nonzero - to append the closing tags */ void wDumpContent(int print_standard_html_footer) { if (print_standard_html_footer) { wc_printf("
\n"); do_template("trailing"); } /* If we've been saving it all up for one big output burst, * go ahead and do that now. */ end_burst(); } /* * Output HTTP headers and leading HTML for a page */ void output_headers( int do_httpheaders, /* 1 = output HTTP headers */ int do_htmlhead, /* 1 = output HTML section and opener */ int do_room_banner, /* 1 = include the room banner and
*/ int unset_cookies, /* 1 = session is terminating, so unset the cookies */ int suppress_check, /* 1 = suppress check for instant messages */ int cache /* 1 = allow browser to cache this page */ ) { wcsession *WCC = WC; char httpnow[128]; hprintf("HTTP/1.1 200 OK\n"); http_datestring(httpnow, sizeof httpnow, time(NULL)); if (do_httpheaders) { if (WCC->serv_info != NULL) hprintf("Content-type: text/html; charset=utf-8\r\n" "Server: %s / %s\n" "Connection: close\r\n", PACKAGE_STRING, ChrPtr(WCC->serv_info->serv_software)); else hprintf("Content-type: text/html; charset=utf-8\r\n" "Server: %s / [n/a]\n" "Connection: close\r\n", PACKAGE_STRING); } if (cache > 0) { char httpTomorow[128]; http_datestring(httpTomorow, sizeof httpTomorow, time(NULL) + 60 * 60 * 24 * 2); hprintf("Pragma: public\r\n" "Cache-Control: max-age=3600, must-revalidate\r\n" "Last-modified: %s\r\n" "Expires: %s\r\n", httpnow, httpTomorow ); } else { hprintf("Pragma: no-cache\r\n" "Cache-Control: no-store\r\n" "Expires: -1\r\n" ); } if (cache < 2) stuff_to_cookie(unset_cookies); if (do_htmlhead) { begin_burst(); do_template("head"); if ( (WCC->logged_in) && (!unset_cookies) ) { DoTemplate(HKEY("paging"), NULL, &NoCtx); } if (do_room_banner) { tmplput_roombanner(NULL, NULL); } } if (do_room_banner) { wc_printf("
\n"); } } void output_custom_content_header(const char *ctype) { hprintf("HTTP/1.1 200 OK\r\n"); hprintf("Content-type: %s; charset=utf-8\r\n",ctype); hprintf("Server: %s / %s\r\n", PACKAGE_STRING, ChrPtr(WC->serv_info->serv_software)); hprintf("Connection: close\r\n"); } /* * Generic function to do an HTTP redirect. Easy and fun. */ void http_redirect(const char *whichpage) { hprintf("HTTP/1.1 302 Moved Temporarily\n"); hprintf("Location: %s\r\n", whichpage); hprintf("URI: %s\r\n", whichpage); hprintf("Content-type: text/html; charset=utf-8\r\n"); stuff_to_cookie(0); begin_burst(); wc_printf(""); wc_printf("Go here.", whichpage); wc_printf("\n"); end_burst(); } /* * Output a piece of content to the web browser using conformant HTTP and MIME semantics. * * If this function is called, it is expected that begin_burst() has already been called * and some sort of content has been fed into the buffer. This function will transmit a * bunch of headers to the client. end_burst() will add some headers of its own, and then * transmit the buffered content to the client. */ void http_transmit_thing(const char *content_type, int is_static) { syslog(LOG_DEBUG, "http_transmit_thing(%s)%s", content_type, ((is_static > 0) ? " (static)" : "")); output_headers(0, 0, 0, 0, 0, is_static); hprintf("Content-type: %s\r\n" "Server: %s\r\n" "Connection: close\r\n", content_type, PACKAGE_STRING); end_burst(); } /* * Convenience functions to display a page containing only a string * * titlebarcolor color of the titlebar of the frame * titlebarmsg text to display in the title bar * messagetext body of the box */ void convenience_page(const char *titlebarcolor, const char *titlebarmsg, const char *messagetext) { hprintf("HTTP/1.1 200 OK\n"); output_headers(1, 1, 1, 0, 0, 0); wc_printf("
\n"); wc_printf("
", titlebarcolor); wc_printf("%s\n", titlebarmsg); wc_printf("
\n"); wc_printf("
\n
\n"); escputs(messagetext); wc_printf("
\n"); wDumpContent(1); } /* * Display a blank page. */ void blank_page(void) { output_headers(1, 1, 0, 0, 0, 0); wDumpContent(2); } /* * A template has been requested */ void url_do_template(void) { const StrBuf *MimeType; const StrBuf *Tmpl = sbstr("template"); begin_burst(); MimeType = DoTemplate(SKEY(Tmpl), NULL, &NoCtx); http_transmit_thing(ChrPtr(MimeType), 0); } /* * convenience function to indicate success */ void display_success(const char *successmessage) { convenience_page("007700", "OK", successmessage); } /* * Authorization required page (sends a 401, causing the browser to request login credentials) */ void authorization_required(void) { wcsession *WCC = WC; const char *message = ""; hprintf("HTTP/1.1 401 Authorization Required\r\n"); hprintf( "Server: %s / %s\r\n" "Connection: close\r\n", PACKAGE_STRING, ChrPtr(WC->serv_info->serv_software) ); hprintf("WWW-Authenticate: Basic realm=\"%s\"\r\n", ChrPtr(WC->serv_info->serv_humannode)); /* if this is a false cookie authentication, remove it to avoid endless loops. */ if (StrLength(WCC->Hdr->HR.RawCookie) > 0) stuff_to_cookie(1); hprintf("Content-Type: text/html\r\n"); begin_burst(); wc_printf("

"); wc_printf(_("Authorization Required")); wc_printf("

\r\n"); if (WCC->ImportantMsg != NULL) { message = ChrPtr(WCC->ImportantMsg); } wc_printf( _("The resource you requested requires a valid username and password. " "You could not be logged in: %s\n"), message ); wDumpContent(0); } /* * Convenience functions to wrap around asynchronous ajax responses */ void begin_ajax_response(void) { wcsession *WCC = WC; FlushStrBuf(WCC->HBuf); output_headers(0, 0, 0, 0, 0, 0); hprintf("Content-type: text/html; charset=UTF-8\r\n" "Server: %s\r\n" "Connection: close\r\n" , PACKAGE_STRING); begin_burst(); } /* * print ajax response footer */ void end_ajax_response(void) { wDumpContent(0); } /* * Wraps a Citadel server command in an AJAX transaction. */ void ajax_servcmd(void) { wcsession *WCC = WC; int Done = 0; StrBuf *Buf; char *junk; size_t len; syslog(LOG_DEBUG, "ajax_servcmd() g_cmd=\"%s\"", bstr("g_cmd") ); begin_ajax_response(); Buf = NewStrBuf(); serv_puts(bstr("g_cmd")); StrBuf_ServGetln(Buf); StrBufAppendBuf(WCC->WBuf, Buf, 0); StrBufAppendBufPlain(WCC->WBuf, HKEY("\n"), 0); switch (GetServerStatus(Buf, NULL)) { case 8: serv_puts("\n\n000"); if ( (StrLength(Buf)==3) && !strcmp(ChrPtr(Buf), "000")) { StrBufAppendBufPlain(WCC->WBuf, HKEY("\000"), 0); break; } case 1: while (!Done) { if (StrBuf_ServGetln(Buf) < 0) break; if ( (StrLength(Buf)==3) && !strcmp(ChrPtr(Buf), "000")) { Done = 1; } StrBufAppendBuf(WCC->WBuf, Buf, 0); StrBufAppendBufPlain(WCC->WBuf, HKEY("\n"), 0); } break; case 4: text_to_server(bstr("g_input")); serv_puts("000"); break; case 6: len = atol(&ChrPtr(Buf)[4]); StrBuf_ServGetBLOBBuffered(Buf, len); break; case 7: len = atol(&ChrPtr(Buf)[4]); junk = malloc(len); memset(junk, 0, len); serv_write(junk, len); free(junk); } end_ajax_response(); /* * This is kind of an ugly hack, but this is the only place it can go. * If the command was GEXP, then the instant messenger window must be * running, so reset the "last_pager_check" watchdog timer so * that page_popup() doesn't try to open it a second time. TODO: page_popup isn't with us anymore. */ if (!strncasecmp(bstr("g_cmd"), "GEXP", 4)) { WCC->last_pager_check = time(NULL); } FreeStrBuf(&Buf); } /* * Helper function for the asynchronous check to see if we need * to open the instant messenger window. */ void seconds_since_last_gexp(void) { char buf[256]; if ( (time(NULL) - WC->last_pager_check) < 30) { wc_printf("NO\n"); } else { memset(buf, 0, 5); serv_puts("NOOP"); serv_getln(buf, sizeof buf); if (buf[3] == '*') { wc_printf("YES"); } else { wc_printf("NO"); } } } /* * Save a URL destination so we can go to it later */ void push_destination(void) { wcsession *WCC = WC; if (!WCC) { wc_printf("no session"); return; } FreeStrBuf(&WCC->PushedDestination); WCC->PushedDestination = NewStrBufDup(SBSTR("url")); syslog(LOG_DEBUG, "Push: %s", ChrPtr(WCC->PushedDestination)); wc_printf("OK"); } /* * Go to the URL saved by push_destination() */ void pop_destination(void) { wcsession *WCC = WC; /* * If we are in the middle of a new user signup, the server may request that * we first pass through a registration screen. */ if ((WCC) && (WCC->need_regi)) { if ((WCC->PushedDestination != NULL) && (StrLength(WCC->PushedDestination) > 0)) { /* Registering will take us to the My Citadel Config room, so save our place */ StrBufAppendBufPlain(WCC->PushedDestination, HKEY("?go="), 0); StrBufUrlescAppend(WCC->PushedDestination, WCC->CurRoom.name, NULL); } WCC->need_regi = 0; display_reg(1); return; } /* * Do something reasonable if we somehow ended up requesting a pop without * having first done a push. */ if ( (!WCC) || (WCC->PushedDestination == NULL) || (StrLength(WCC->PushedDestination) == 0) ) { do_welcome(); return; } /* * All righty then! We have a destination saved, so go there now. */ syslog(LOG_DEBUG, "Pop: %s", ChrPtr(WCC->PushedDestination)); http_redirect(ChrPtr(WCC->PushedDestination)); } int ReadPostData(void) { int rc; int urlencoded_post = 0; wcsession *WCC = WC; StrBuf *content = NULL; urlencoded_post = (strncasecmp(ChrPtr(WCC->Hdr->HR.ContentType), "application/x-www-form-urlencoded", 33) == 0) ; content = NewStrBufPlain(NULL, WCC->Hdr->HR.ContentLength + 256); if (!urlencoded_post) { StrBufPrintf(content, "Content-type: %s\n" "Content-length: %ld\n\n", ChrPtr(WCC->Hdr->HR.ContentType), WCC->Hdr->HR.ContentLength); } /** Read the entire input data at once. */ rc = client_read_to(WCC->Hdr, content, WCC->Hdr->HR.ContentLength, SLEEPING); if (rc < 0) return rc; if (urlencoded_post) { ParseURLParams(content); } else if (!strncasecmp(ChrPtr(WCC->Hdr->HR.ContentType), "multipart", 9)) { char *Buf; char *BufEnd; long len; len = StrLength(content); Buf = SmashStrBuf(&content); BufEnd = Buf + len; mime_parser(Buf, BufEnd, *upload_handler, NULL, NULL, NULL, 0); free(Buf); } else if (WCC->Hdr->HR.ContentLength > 0) { WCC->upload = content; WCC->upload_length = StrLength(WCC->upload); content = NULL; } FreeStrBuf(&content); return 1; } int Conditional_REST_DEPTH(StrBuf *Target, WCTemplputParams *TP) { long Depth, IsDepth; long offset = 0; wcsession *WCC = WC; if (WCC->Hdr->HR.Handler != NULL) offset ++; Depth = GetTemplateTokenNumber(Target, TP, 2, 0); IsDepth = GetCount(WCC->Directory) + offset; // LogTemplateError(Target, "bla", 1, TP, "REST_DEPTH: %ld : %ld\n", Depth, IsDepth); if (Depth < 0) { Depth = -Depth; return IsDepth > Depth; } else return Depth == IsDepth; } /* * Entry point for WebCit transaction */ void session_loop(void) { int xhttp; StrBuf *Buf; /* * We stuff these with the values coming from the client cookies, * so we can use them to reconnect a timed out session if we have to. */ wcsession *WCC; WCC= WC; WCC->upload_length = 0; WCC->upload = NULL; WCC->Hdr->nWildfireHeaders = 0; if (WCC->Hdr->HR.ContentLength > 0) { if (ReadPostData() < 0) { return; } } Buf = NewStrBuf(); WCC->trailing_javascript = NewStrBuf(); /* Convert base64-encoded URL's back to plain text */ if (!strncmp(ChrPtr(WCC->Hdr->this_page), "/B64", 4)) { StrBufCutLeft(WCC->Hdr->this_page, 4); StrBufDecodeBase64(WCC->Hdr->this_page); http_redirect(ChrPtr(WCC->Hdr->this_page)); goto SKIP_ALL_THIS_CRAP; } /* If there are variables in the URL, we must grab them now */ if (WCC->Hdr->PlainArgs != NULL) ParseURLParams(WCC->Hdr->PlainArgs); /* If the client sent a nonce that is incorrect, kill the request. */ if (havebstr("nonce")) { syslog(LOG_DEBUG, "Comparing supplied nonce %s to session nonce %d", bstr("nonce"), WCC->nonce ); if (ibstr("nonce") != WCC->nonce) { syslog(LOG_INFO, "Ignoring request with mismatched nonce."); hprintf("HTTP/1.1 404 Security check failed\r\n"); hprintf("Content-Type: text/plain\r\n"); begin_burst(); wc_printf("Security check failed.\r\n"); end_burst(); goto SKIP_ALL_THIS_CRAP; } } /* * If we're not connected to a Citadel server, try to hook up the connection now. */ if (!WCC->connected) { if (GetConnected()) { hprintf("HTTP/1.1 503 Service Unavailable\r\n"); hprintf("Content-Type: text/html\r\n"); begin_burst(); wc_printf("503 Service Unavailable\n"); wc_printf(_("This program was unable to connect or stay " "connected to the Citadel server. Please report " "this problem to your system administrator.") ); wc_printf("
"); wc_printf("%s", _("Read More...") ); wc_printf("\n"); end_burst(); goto SKIP_ALL_THIS_CRAP; } } /* * If we're not logged in, but we have authentication data (either from * a cookie or from http-auth), try logging in to Citadel using that. */ if ( (!WCC->logged_in) && (StrLength(WCC->Hdr->c_username) > 0) && (StrLength(WCC->Hdr->c_password) > 0) ) { long Status; FlushStrBuf(Buf); serv_printf("USER %s", ChrPtr(WCC->Hdr->c_username)); StrBuf_ServGetln(Buf); if (GetServerStatus(Buf, &Status) == 3) { serv_printf("PASS %s", ChrPtr(WCC->Hdr->c_password)); StrBuf_ServGetln(Buf); if (GetServerStatus(Buf, NULL) == 2) { become_logged_in(WCC->Hdr->c_username, WCC->Hdr->c_password, Buf); } else { /* Should only display when password is wrong */ WCC->ImportantMsg = NewStrBufPlain(ChrPtr(Buf) + 4, StrLength(Buf) - 4); authorization_required(); FreeStrBuf(&Buf); goto SKIP_ALL_THIS_CRAP; } } else if (Status == 541) { WCC->logged_in = 1; } } xhttp = (WCC->Hdr->HR.eReqType != eGET) && (WCC->Hdr->HR.eReqType != ePOST) && (WCC->Hdr->HR.eReqType != eHEAD); /* * If a 'go' (or 'gotofirst') parameter has been specified, attempt to goto that room * prior to doing anything else. */ if (havebstr("go")) { int ret; syslog(LOG_DEBUG, "Explicit room selection: %s", bstr("go")); ret = gotoroom(sbstr("go")); /* do quietly to avoid session output! */ if ((ret/100) != 2) { syslog(LOG_DEBUG, "Unable to change to [%s]; Reason: %d", bstr("go"), ret); } } else if (havebstr("gotofirst")) { int ret; syslog(LOG_DEBUG, "Explicit room selection: %s", bstr("gotofirst")); ret = gotoroom(sbstr("gotofirst")); /* do quietly to avoid session output! */ if ((ret/100) != 2) { syslog(LOG_INFO, "Unable to change to [%s]; Reason: %d", bstr("gotofirst"), ret); } } /* * If we aren't in any room yet, but we have cookie data telling us where we're * supposed to be, and 'go' was not specified, then go there. */ else if ( (StrLength(WCC->CurRoom.name) == 0) && ( (StrLength(WCC->Hdr->c_roomname) > 0) )) { int ret; syslog(LOG_DEBUG, "We are in '%s' but cookie indicates '%s', going there...", ChrPtr(WCC->CurRoom.name), ChrPtr(WCC->Hdr->c_roomname) ); ret = gotoroom(WCC->Hdr->c_roomname); /* do quietly to avoid session output! */ if ((ret/100) != 2) { syslog(LOG_DEBUG, "COOKIEGOTO: Unable to change to [%s]; Reason: %d", ChrPtr(WCC->Hdr->c_roomname), ret); } } if (WCC->Hdr->HR.Handler != NULL) { if ( (!WCC->logged_in) && ((WCC->Hdr->HR.Handler->Flags & ANONYMOUS) == 0) && (WCC->serv_info != NULL) && (WCC->serv_info->serv_supports_guest == 0) ) { display_login(); } else { if ((WCC->Hdr->HR.Handler->Flags & AJAX) != 0) { begin_ajax_response(); } WCC->Hdr->HR.Handler->F(); if ((WCC->Hdr->HR.Handler->Flags & AJAX) != 0) { end_ajax_response(); } } } /* When all else fails, display the default landing page or a main menu. */ else { /* * ordinary browser users get a nice login screen, DAV etc. requsets * are given a 401 so they can handle it appropriate. */ if (!WCC->logged_in) { if (xhttp) { authorization_required(); } else { display_default_landing_page(); } } /* * Toplevel dav requests? or just a flat browser request? */ else { if (xhttp) { dav_main(); } else { display_main_menu(); } } } SKIP_ALL_THIS_CRAP: FreeStrBuf(&Buf); fflush(stdout); } /* * Display the appropriate landing page for this site. */ void display_default_landing_page(void) { wcsession *WCC = WC; if (WCC && WCC->serv_info && WCC->serv_info->serv_supports_guest) { /* default action */ if (havebstr("go")) { syslog(LOG_DEBUG, "Explicit room selection: %s", bstr("go")); StrBuf *teh_room = NewStrBufPlain(bstr("go"), strlen(bstr("go"))); smart_goto(teh_room); FreeStrBuf(&teh_room); } else if (default_landing_page) { http_redirect(default_landing_page); } else { StrBuf *teh_lobby = NewStrBufPlain(HKEY("_BASEROOM_")); smart_goto(teh_lobby); FreeStrBuf(&teh_lobby); } } else { display_login(); } } /* * Replacement for sleep() that uses select() in order to avoid SIGALRM */ void sleeeeeeeeeep(int seconds) { struct timeval tv; tv.tv_sec = seconds; tv.tv_usec = 0; select(0, NULL, NULL, NULL, &tv); } int Conditional_IS_HTTPS(StrBuf *Target, WCTemplputParams *TP) { return is_https != 0; } void AppendImportantMessage(const char *pch, long len) { wcsession *WCC = WC; if (StrLength(WCC->ImportantMsg) > 0) { StrBufAppendBufPlain(WCC->ImportantMsg, HKEY("\n"), 0); } StrBufAppendBufPlain(WCC->ImportantMsg, pch, len, 0); } int ConditionalImportantMesage(StrBuf *Target, WCTemplputParams *TP) { wcsession *WCC = WC; if (WCC != NULL) return (StrLength(WCC->ImportantMsg) > 0); else return 0; } void tmplput_importantmessage(StrBuf *Target, WCTemplputParams *TP) { wcsession *WCC = WC; if (WCC != NULL) { if (StrLength(WCC->ImportantMsg) > 0) { StrEscAppend(Target, WCC->ImportantMsg, NULL, 0, 0); } } } void tmplput_trailing_javascript(StrBuf *Target, WCTemplputParams *TP) { wcsession *WCC = WC; if (WCC != NULL) StrBufAppendTemplate(Target, TP, WCC->trailing_javascript, 0); } void tmplput_csslocal(StrBuf *Target, WCTemplputParams *TP) { StrBufAppendBuf(Target, csslocal, 0); } void tmplput_packagestring(StrBuf *Target, WCTemplputParams *TP) { StrBufAppendBufPlain(Target, HKEY(PACKAGE_STRING), 0); } extern char static_local_dir[PATH_MAX]; void InitModule_WEBCIT (void) { char dir[SIZ]; WebcitAddUrlHandler(HKEY("blank"), "", 0, blank_page, ANONYMOUS|COOKIEUNNEEDED|ISSTATIC); WebcitAddUrlHandler(HKEY("landing"), "", 0, display_default_landing_page, ANONYMOUS|COOKIEUNNEEDED); WebcitAddUrlHandler(HKEY("do_template"), "", 0, url_do_template, ANONYMOUS); WebcitAddUrlHandler(HKEY("sslg"), "", 0, seconds_since_last_gexp, AJAX|LOGCHATTY); WebcitAddUrlHandler(HKEY("ajax_servcmd"), "", 0, ajax_servcmd, 0); WebcitAddUrlHandler(HKEY("webcit"), "", 0, blank_page, URLNAMESPACE); WebcitAddUrlHandler(HKEY("push"), "", 0, push_destination, AJAX); WebcitAddUrlHandler(HKEY("pop"), "", 0, pop_destination, 0); WebcitAddUrlHandler(HKEY("401"), "", 0, authorization_required, ANONYMOUS|COOKIEUNNEEDED); RegisterConditional("COND:IMPMSG", 0, ConditionalImportantMesage, CTX_NONE); RegisterConditional("COND:REST:DEPTH", 0, Conditional_REST_DEPTH, CTX_NONE); RegisterConditional("COND:IS_HTTPS", 0, Conditional_IS_HTTPS, CTX_NONE); RegisterNamespace("CSSLOCAL", 0, 0, tmplput_csslocal, NULL, CTX_NONE); RegisterNamespace("IMPORTANTMESSAGE", 0, 0, tmplput_importantmessage, NULL, CTX_NONE); RegisterNamespace("TRAILING_JAVASCRIPT", 0, 0, tmplput_trailing_javascript, NULL, CTX_NONE); RegisterNamespace("URL:DISPLAYNAME", 0, 1, tmplput_HANDLER_DISPLAYNAME, NULL, CTX_NONE); RegisterNamespace("PACKAGESTRING", 0, 1, tmplput_packagestring, NULL, CTX_NONE); snprintf(dir, SIZ, "%s/webcit.css", static_local_dir); if (!access(dir, R_OK)) { syslog(LOG_INFO, "Using local Stylesheet [%s]", dir); csslocal = NewStrBufPlain(HKEY("")); } else syslog(LOG_INFO, "No Site-local Stylesheet [%s] installed.", dir); } void ServerStartModule_WEBCIT (void) { HandlerHash = NewHash(1, NULL); } void ServerShutdownModule_WEBCIT (void) { FreeStrBuf(&csslocal); DeleteHash(&HandlerHash); } void SessionNewModule_WEBCIT (wcsession *sess) { sess->ImportantMsg = NewStrBuf(); sess->WBuf = NewStrBufPlain(NULL, SIZ * 4); sess->HBuf = NewStrBufPlain(NULL, SIZ / 4); } void SessionDetachModule_WEBCIT (wcsession *sess) { DeleteHash(&sess->Directory); FreeStrBuf(&sess->upload); sess->upload_length = 0; FreeStrBuf(&sess->trailing_javascript); if (StrLength(sess->WBuf) > SIZ * 30) /* Bigger than 120K? release. */ { FreeStrBuf(&sess->WBuf); sess->WBuf = NewStrBuf(); } else FlushStrBuf(sess->WBuf); FlushStrBuf(sess->HBuf); if (StrLength(sess->ImportantMsg) > 0) { FlushStrBuf(sess->ImportantMsg); } } void SessionDestroyModule_WEBCIT (wcsession *sess) { FreeStrBuf(&sess->WBuf); FreeStrBuf(&sess->HBuf); FreeStrBuf(&sess->ImportantMsg); FreeStrBuf(&sess->PushedDestination); } webcit-8.24-dfsg.orig/setup_wizard.c0000644000175000017500000000226412271477123017270 0ustar michaelmichael/* * First-time setup wizard */ #include "webcit.h" void do_setup_wizard(void) { char *step; FILE *fp; step = bstr("step"); if (!strcasecmp(step, "Finish")) { fp = fopen(wizard_filename, "w"); if (fp != NULL) { fprintf(fp, "%d\n", WC->serv_info->serv_rev_level); fclose(fp); } do_welcome(); return; } output_headers(1, 1, 1, 0, 0, 0); wc_printf("
\n"); wc_printf(" First time setup"); wc_printf("
\n"); wc_printf("
\n"); wc_printf("
\n"); wc_printf("\n", WC->nonce); wc_printf("
" "This is where the setup wizard will be placed.
\n" "For now, just click Finish.

\n" ); wc_printf("\n"); wc_printf("\n"); wc_printf("
\n"); wDumpContent(1); } void InitModule_SETUP_WIZARD (void) { WebcitAddUrlHandler(HKEY("setup_wizard"), "", 0, do_setup_wizard, 0); } webcit-8.24-dfsg.orig/gettext.c0000644000175000017500000002651212271477123016236 0ustar michaelmichael/* * Copyright (c) 1996-2012 by the citadel.org team * * This program is open source software. You can redistribute it and/or * modify it under the terms of the GNU General Public License version 3. * * This program 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. */ #include "webcit.h" #include "webserver.h" #define SEARCH_LANG 20 /* how many langs should we parse? */ #ifdef ENABLE_NLS /* actual supported locales */ const char *AvailLang[] = { "en_US", "ar_AE", "bg_BG", "cs_CZ", "en_US", "da_DK", "de_DE", "el_GR", "en_GB", "es_ES", "et_EE", "fi_FI", "fr_FR", "hu_HU", "it_IT", "ko_KO", "nl_NL", "pl_PL", "pt_BR", "ru_RU", "zh_CN", "he_IL", "kk_KK", "ro_RO", "sl_SL", "tr_TR", "" }; const char **AvailLangLoaded; long nLocalesLoaded = 0; #ifdef HAVE_USELOCALE locale_t *wc_locales; /* here we keep the parsed stuff */ #endif /* Keep information about one locale */ typedef struct _lang_pref { char lang[16]; /* the language locale string */ char region[16]; /* the region locale string */ long priority; /* which priority does it have */ int availability; /* do we know it? */ int selectedlang; /* is this the selected language? */ } LangStruct; /* parse browser locale header * * seems as most browsers just do a one after comma value even if more than 10 locales are available. Sample strings: * opera: * Accept-Language: sq;q=1.0,de;q=0.9,as;q=0.8,ar;q=0.7,bn;q=0.6,zh-cn;q=0.5,kn;q=0.4,ch;q=0.3,fo;q=0.2,gn;q=0.1,ce;q=0.1,ie;q=0.1 * Firefox * Accept-Language: 'de-de,en-us;q=0.7,en;q=0.3' * Accept-Language: de,en-ph;q=0.8,en-us;q=0.5,de-at;q=0.3 * Accept-Language: de,en-us;q=0.9,it;q=0.9,de-de;q=0.8,en-ph;q=0.7,de-at;q=0.7,zh-cn;q=0.6,cy;q=0.5,ar-om;q=0.5,en-tt;q=0.4,xh;q=0.3,nl-be;q=0.3,cs;q=0.2,sv;q=0.1,tk;q=0.1 */ void httplang_to_locale(StrBuf *LocaleString, wcsession *sess) { LangStruct wanted_locales[SEARCH_LANG]; LangStruct *ls; long len; int i = 0; int j = 0; /* size_t len = strlen(LocaleString); */ long prio; int av; int nBest; int nParts; StrBuf *Buf = NULL; StrBuf *SBuf = NULL; nParts = StrBufNum_tokens(LocaleString, ','); for (i=0; ((ipriority = StrTol(SBuf); } else { ls->priority = 1000; } /* get the locale part */ StrBufExtract_token(SBuf, Buf, 0, ';'); /* get the lang part, which should be allways there */ extract_token(ls->lang, ChrPtr(SBuf), 0, '-', sizeof(ls->lang)); /* get the area code if any. */ if (StrBufNum_tokens(SBuf, '-') > 1) { extract_token(ls->region, ChrPtr(SBuf), 1, '-', sizeof(ls->region) ); } else { /* no ara code? use lang code */ blen = strlen(ls->lang); memcpy(ls->region, ls->lang, blen); ls->region[blen] = '\0'; } /* area codes are uppercase */ blen = strlen(&ls->region[0]); for (j = 0; j < blen; j++) { int chars; chars = toupper(ls->region[j]); ls->region[j] = (char)chars; /* todo ? */ } snprintf(lbuf, sizeof(lbuf), "%s_%s", ls->lang, ls->region); /* check if we have this lang */ ls->availability = 1; ls->selectedlang = -1; len = strlen(ls->lang); for (j = 0; j < nLocalesLoaded; j++) { int result; /* match against the LANG part */ result = strncasecmp(ls->lang, AvailLangLoaded[j], len); if ((result == 0) && (result < ls->availability)){ ls->availability = result; ls->selectedlang = j; } /* match against lang and locale */ if (0 == strcasecmp(lbuf, AvailLangLoaded[j])){ ls->availability = 0; ls->selectedlang = j; j = nLocalesLoaded; } } } prio = 0; av = -1000; nBest = -1; for (i = 0; ((i < nParts) && (iavailability <= 0) && (av < ls->availability) && (prio < ls->priority) && (ls->selectedlang != -1) ) { nBest = ls->selectedlang; av = ls->availability; prio = ls->priority; } } if (nBest == -1) { /* fall back to C */ nBest=0; } sess->selected_language = nBest; syslog(LOG_DEBUG, "language found: %s", AvailLangLoaded[sess->selected_language]); FreeStrBuf(&Buf); FreeStrBuf(&SBuf); } /* * show the language chooser on the login dialog * depending on the browser locale change the sequence of the * language chooser. */ void tmplput_offer_languages(StrBuf *Target, WCTemplputParams *TP) { int i; #ifndef HAVE_USELOCALE char *Lang = getenv("LANG"); if (Lang == NULL) Lang = "C"; #endif if (nLocalesLoaded == 1) { wc_printf("

%s

", AvailLangLoaded[0]); return; } wc_printf("\n"); } /* * Set the selected language for this session. */ void set_selected_language(const char *lang) { #ifdef HAVE_USELOCALE int i; for (i = 0; iselected_language = i; break; } } #endif } /* * Activate the selected language for this session. */ void go_selected_language(void) { #ifdef HAVE_USELOCALE wcsession *WCC = WC; if (WCC->selected_language < 0) { httplang_to_locale(WCC->Hdr->HR.browser_language, WCC); if (WCC->selected_language < 0) return; } uselocale(wc_locales[WCC->selected_language]); /* switch locales */ textdomain(textdomain(NULL)); /* clear the cache */ #else char *language; language = getenv("LANG"); setlocale(LC_MESSAGES, language); #endif } /* * Deactivate the selected language for this session. */ void stop_selected_language(void) { #ifdef HAVE_USELOCALE uselocale(LC_GLOBAL_LOCALE); /* switch locales */ textdomain(textdomain(NULL)); /* clear the cache */ #endif } #ifdef HAVE_USELOCALE locale_t Empty_Locale; #endif /* * Create a locale_t for each available language */ void initialize_locales(void) { int nLocales; int i; char buf[32]; char *language = NULL; nLocales = 0; while (!IsEmptyStr(AvailLang[nLocales])) nLocales++; language = getenv("WEBCIT_LANG"); if ((language) && (!IsEmptyStr(language)) && (strcmp(language, "UNLIMITED") != 0)) { syslog(LOG_INFO, "Nailing locale to %s", language); } else language = NULL; AvailLangLoaded = malloc (sizeof(char*) * nLocales); memset(AvailLangLoaded, 0, sizeof(char*) * nLocales); #ifdef HAVE_USELOCALE wc_locales = malloc (sizeof(locale_t) * nLocales); memset(wc_locales,0, sizeof(locale_t) * nLocales); /* create default locale */ Empty_Locale = newlocale(LC_ALL_MASK, NULL, NULL); #endif for (i = 0; i < nLocales; ++i) { if ((language != NULL) && (strcmp(AvailLang[i], language) != 0)) continue; if (i == 0) { sprintf(buf, "C"); /* locale 0 (C) is ascii, not utf-8 */ } else { sprintf(buf, "%s.UTF8", AvailLang[i]); } #ifdef HAVE_USELOCALE wc_locales[nLocalesLoaded] = newlocale( (LC_MESSAGES_MASK|LC_TIME_MASK), buf, (((i > 0) && (wc_locales[0] != NULL)) ? wc_locales[0] : Empty_Locale) ); if (wc_locales[nLocalesLoaded] == NULL) { syslog(LOG_NOTICE, "locale for %s disabled: %s", buf, strerror(errno)); } else { syslog(LOG_INFO, "Found locale: %s - %s", buf, AvailLang[i]); AvailLangLoaded[nLocalesLoaded] = AvailLang[i]; nLocalesLoaded++; } #else if ((language != NULL) && (strcmp(language, AvailLang[i]) == 0)) { setenv("LANG", buf, 1); AvailLangLoaded[nLocalesLoaded] = AvailLang[i]; setlocale(LC_MESSAGES, AvailLang[i]); nLocalesLoaded++; } else if (nLocalesLoaded == 0) { setenv("LANG", buf, 1); AvailLangLoaded[nLocalesLoaded] = AvailLang[i]; nLocalesLoaded++; } #endif } if ((language != NULL) && (nLocalesLoaded == 0)) { syslog(LOG_WARNING, "Your selected locale [%s] isn't available on your system. falling back to C", language); #ifdef HAVE_USELOCALE wc_locales[0] = newlocale( (LC_MESSAGES_MASK|LC_TIME_MASK), AvailLang[0], Empty_Locale ); #else setlocale(LC_MESSAGES, AvailLang[0]); setenv("LANG", AvailLang[0], 1); #endif AvailLangLoaded[0] = AvailLang[0]; nLocalesLoaded = 1; } #ifdef ENABLE_NLS setlocale(LC_ALL, ""); syslog(LOG_DEBUG, "Text domain: %s", textdomain("webcit")); syslog(LOG_DEBUG, "Text domain Charset: %s", bind_textdomain_codeset("webcit", "UTF8")); syslog(LOG_DEBUG, "Message catalog directory: %s", bindtextdomain(textdomain(NULL), LOCALEDIR"/locale")); #endif } void ServerShutdownModule_GETTEXT (void) { #ifdef HAVE_USELOCALE int i; for (i = 0; i < nLocalesLoaded; ++i) { if (Empty_Locale != wc_locales[i]) { freelocale(wc_locales[i]); } } free(wc_locales); #endif free(AvailLangLoaded); } #else /* ENABLE_NLS */ const char *AvailLang[] = { "C", "" }; /* dummy for non NLS enabled systems */ void ServerShutdownModule_GETTEXT (void) { } void tmplput_offer_languages(StrBuf *Target, WCTemplputParams *TP) { wc_printf("English (US)"); } /* dummy for non NLS enabled systems */ void set_selected_language(const char *lang) { } /* dummy for non NLS enabled systems */ void go_selected_language(void) { } /* dummy for non NLS enabled systems */ void stop_selected_language(void) { } void initialize_locales(void) { } #endif /* ENABLE_NLS */ void TmplGettext(StrBuf *Target, WCTemplputParams *TP) { const char *Text = _(TP->Tokens->Params[0]->Start); StrBufAppendTemplateStr(Target, TP, Text, 1); } /* * Returns the language currently in use. * This function returns a static string, so don't do anything stupid please. */ const char *get_selected_language(void) { #ifdef ENABLE_NLS #ifdef HAVE_USELOCALE return AvailLangLoaded[WC->selected_language]; #else return "en"; #endif #else return "en"; #endif } void Header_HandleAcceptLanguage(StrBuf *Line, ParsedHttpHdrs *hdr) { hdr->HR.browser_language = Line; } void InitModule_GETTEXT (void) { initialize_locales(); RegisterHeaderHandler(HKEY("ACCEPT-LANGUAGE"), Header_HandleAcceptLanguage); RegisterNamespace("LANG:SELECT", 0, 0, tmplput_offer_languages, NULL, CTX_NONE); } void SessionNewModule_GETTEXT (wcsession *sess) { #ifdef ENABLE_NLS if ( (sess != NULL) && (!sess->Hdr->HR.Static) && (sess->Hdr->HR.browser_language != NULL) ) { httplang_to_locale(sess->Hdr->HR.browser_language, sess); } #endif } void SessionAttachModule_GETTEXT (wcsession *sess) { #ifdef ENABLE_NLS go_selected_language(); /* set locale */ #endif } void SessionDestroyModule_GETTEXT (wcsession *sess) { #ifdef ENABLE_NLS stop_selected_language(); /* unset locale */ #endif } webcit-8.24-dfsg.orig/tcp_sockets.c0000644000175000017500000005262012271477123017072 0ustar michaelmichael/* * Copyright (c) 1987-2012 by the citadel.org team * * This program is open source software; you can redistribute it and/or modify * it under the terms of the GNU General Public License, version 3. * * This program 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. */ /* * Uncomment this to log all communications with the Citadel server #define SERV_TRACE 1 */ #include "webcit.h" #include "webserver.h" long MaxRead = -1; /* should we do READ scattered or all at once? */ /* * register the timeout */ RETSIGTYPE timeout(int signum) { syslog(LOG_WARNING, "Connection timed out; unable to reach citserver\n"); /* no exit here, since we need to server the connection unreachable thing. exit(3); */ } /* * Client side - connect to a unix domain socket */ int uds_connectsock(char *sockpath) { struct sockaddr_un addr; int s; memset(&addr, 0, sizeof(addr)); addr.sun_family = AF_UNIX; strncpy(addr.sun_path, sockpath, sizeof addr.sun_path); s = socket(AF_UNIX, SOCK_STREAM, 0); if (s < 0) { syslog(LOG_WARNING, "Can't create socket [%s]: %s\n", sockpath, strerror(errno)); return(-1); } if (connect(s, (struct sockaddr *) &addr, sizeof(addr)) < 0) { syslog(LOG_WARNING, "Can't connect [%s]: %s\n", sockpath, strerror(errno)); close(s); return(-1); } return s; } /* * TCP client - connect to a host/port */ int tcp_connectsock(char *host, char *service) { struct in6_addr serveraddr; struct addrinfo hints; struct addrinfo *res = NULL; struct addrinfo *ai = NULL; int rc = (-1); int s = (-1); if ((host == NULL) || IsEmptyStr(host)) return (-1); if ((service == NULL) || IsEmptyStr(service)) return (-1); syslog(LOG_DEBUG, "tcp_connectsock(%s,%s)\n", host, service); memset(&hints, 0x00, sizeof(hints)); hints.ai_flags = AI_NUMERICSERV; hints.ai_family = AF_UNSPEC; hints.ai_socktype = SOCK_STREAM; /* * Handle numeric IPv4 and IPv6 addresses */ rc = inet_pton(AF_INET, host, &serveraddr); if (rc == 1) { /* dotted quad */ hints.ai_family = AF_INET; hints.ai_flags |= AI_NUMERICHOST; } else { rc = inet_pton(AF_INET6, host, &serveraddr); if (rc == 1) { /* IPv6 address */ hints.ai_family = AF_INET6; hints.ai_flags |= AI_NUMERICHOST; } } /* Begin the connection process */ rc = getaddrinfo(host, service, &hints, &res); if (rc != 0) { syslog(LOG_DEBUG, "%s: %s\n", host, gai_strerror(rc)); freeaddrinfo(res); return(-1); } /* * Try all available addresses until we connect to one or until we run out. */ for (ai = res; ai != NULL; ai = ai->ai_next) { if (ai->ai_family == AF_INET) syslog(LOG_DEBUG, "Trying IPv4\n"); else if (ai->ai_family == AF_INET6) syslog(LOG_DEBUG, "Trying IPv6\n"); else syslog(LOG_WARNING, "This is going to fail.\n"); s = socket(ai->ai_family, ai->ai_socktype, ai->ai_protocol); if (s < 0) { syslog(LOG_WARNING, "socket() failed: %s\n", strerror(errno)); freeaddrinfo(res); return(-1); } rc = connect(s, ai->ai_addr, ai->ai_addrlen); if (rc >= 0) { int fdflags; freeaddrinfo(res); fdflags = fcntl(rc, F_GETFL); if (fdflags < 0) { syslog(LOG_ERR, "unable to get socket %d flags! %s \n", rc, strerror(errno)); close(rc); return -1; } fdflags = fdflags | O_NONBLOCK; if (fcntl(rc, F_SETFL, fdflags) < 0) { syslog(LOG_ERR, "unable to set socket %d nonblocking flags! %s \n", rc, strerror(errno)); close(s); return -1; } return(s); } else { syslog(LOG_WARNING, "connect() failed: %s\n", strerror(errno)); close(s); } } freeaddrinfo(res); return(-1); } /* * input string from pipe */ int serv_getln(char *strbuf, int bufsize) { wcsession *WCC = WC; int len; *strbuf = '\0'; StrBuf_ServGetln(WCC->MigrateReadLineBuf); len = StrLength(WCC->MigrateReadLineBuf); if (len > bufsize) len = bufsize - 1; memcpy(strbuf, ChrPtr(WCC->MigrateReadLineBuf), len); FlushStrBuf(WCC->MigrateReadLineBuf); strbuf[len] = '\0'; #ifdef SERV_TRACE syslog(LOG_DEBUG, "%3d<<<%s\n", WCC->serv_sock, strbuf); #endif return len; } int StrBuf_ServGetln(StrBuf *buf) { wcsession *WCC = WC; const char *ErrStr = NULL; int rc; if (!WCC->connected) return -1; FlushStrBuf(buf); rc = StrBufTCP_read_buffered_line_fast(buf, WCC->ReadBuf, &WCC->ReadPos, &WCC->serv_sock, 5, 1, &ErrStr); if (rc < 0) { syslog(LOG_INFO, "StrBuf_ServGetln(): Server connection broken: %s\n", (ErrStr)?ErrStr:""); wc_backtrace(LOG_INFO); if (WCC->serv_sock > 0) close(WCC->serv_sock); WCC->serv_sock = (-1); WCC->connected = 0; WCC->logged_in = 0; } #ifdef SERV_TRACE else { long pos = 0; if (WCC->ReadPos != NULL) pos = WCC->ReadPos - ChrPtr(WCC->ReadBuf); syslog(LOG_DEBUG, "%3d<<<[%ld]%s\n", WC->serv_sock, pos, ChrPtr(buf)); } #endif return rc; } int StrBuf_ServGetBLOBBuffered(StrBuf *buf, long BlobSize) { wcsession *WCC = WC; const char *ErrStr; int rc; rc = StrBufReadBLOBBuffered(buf, WCC->ReadBuf, &WCC->ReadPos, &WCC->serv_sock, 1, BlobSize, NNN_TERM, &ErrStr); if (rc < 0) { syslog(LOG_INFO, "StrBuf_ServGetBLOBBuffered(): Server connection broken: %s\n", (ErrStr)?ErrStr:""); wc_backtrace(LOG_INFO); if (WCC->serv_sock > 0) close(WCC->serv_sock); WCC->serv_sock = (-1); WCC->connected = 0; WCC->logged_in = 0; } #ifdef SERV_TRACE else syslog(LOG_DEBUG, "%3d<<serv_sock, StrLength(buf)); #endif return rc; } int StrBuf_ServGetBLOB(StrBuf *buf, long BlobSize) { wcsession *WCC = WC; const char *ErrStr; int rc; WCC->ReadPos = NULL; rc = StrBufReadBLOB(buf, &WCC->serv_sock, 1, BlobSize, &ErrStr); if (rc < 0) { syslog(LOG_INFO, "StrBuf_ServGetBLOB(): Server connection broken: %s\n", (ErrStr)?ErrStr:""); wc_backtrace(LOG_INFO); if (WCC->serv_sock > 0) close(WCC->serv_sock); WCC->serv_sock = (-1); WCC->connected = 0; WCC->logged_in = 0; } #ifdef SERV_TRACE else syslog(LOG_DEBUG, "%3d<<serv_sock, StrLength(buf)); #endif return rc; } void FlushReadBuf (void) { long len; const char *pch; const char *pche; wcsession *WCC = WC; len = StrLength(WCC->ReadBuf); if ((len > 0) && (WCC->ReadPos != NULL) && (WCC->ReadPos != StrBufNOTNULL)) { pch = ChrPtr(WCC->ReadBuf); pche = pch + len; if (WCC->ReadPos != pche) { syslog(LOG_EMERG, "ERROR: somebody didn't eat his soup! Remaing Chars: %ld [%s]\n", (long)(pche - WCC->ReadPos), pche ); syslog(LOG_EMERG, "--------------------------------------------------------------------------------\n" "Whole buf: [%s]\n" "--------------------------------------------------------------------------------\n", pch); AppendImportantMessage(HKEY("Suppenkasper alert! watch your webcit logfile and get connected to your favourite opensource Crew.")); } } FlushStrBuf(WCC->ReadBuf); WCC->ReadPos = NULL; } /* * send binary to server * buf the buffer to write to citadel server * nbytes how many bytes to send to citadel server */ int serv_write(const char *buf, int nbytes) { wcsession *WCC = WC; int bytes_written = 0; int retval; FlushReadBuf(); while (bytes_written < nbytes) { retval = write(WCC->serv_sock, &buf[bytes_written], nbytes - bytes_written); if (retval < 1) { const char *ErrStr = strerror(errno); syslog(LOG_INFO, "serv_write(): Server connection broken: %s\n", (ErrStr)?ErrStr:""); if (WCC->serv_sock > 0) close(WCC->serv_sock); WCC->serv_sock = (-1); WCC->connected = 0; WCC->logged_in = 0; return 0; } bytes_written = bytes_written + retval; } return 1; } /* * send line to server * string the line to send to the citadel server */ int serv_puts(const char *string) { #ifdef SERV_TRACE syslog(LOG_DEBUG, "%3d>>>%s\n", WC->serv_sock, string); #endif FlushReadBuf(); if (!serv_write(string, strlen(string))) return 0; return serv_write("\n", 1); } /* * send line to server * string the line to send to the citadel server */ int serv_putbuf(const StrBuf *string) { #ifdef SERV_TRACE syslog(LOG_DEBUG, "%3d>>>%s\n", WC->serv_sock, ChrPtr(string)); #endif FlushReadBuf(); if (!serv_write(ChrPtr(string), StrLength(string))) return 0; return serv_write("\n", 1); } /* * convenience function to send stuff to the server * format the formatstring * ... the entities to insert into format */ int serv_printf(const char *format,...) { va_list arg_ptr; char buf[SIZ]; size_t len; int rc; FlushReadBuf(); va_start(arg_ptr, format); vsnprintf(buf, sizeof buf, format, arg_ptr); va_end(arg_ptr); len = strlen(buf); buf[len++] = '\n'; buf[len] = '\0'; rc = serv_write(buf, len); #ifdef SERV_TRACE syslog(LOG_DEBUG, ">>>%s", buf); #endif return rc; } /* * Read binary data from server into memory using a series of server READ commands. * returns the read content as StrBuf */ int serv_read_binary(StrBuf *Ret, size_t total_len, StrBuf *Buf) { wcsession *WCC = WC; size_t bytes_read = 0; size_t this_block = 0; int rc = 6; int ServerRc = 6; if (Ret == NULL) { return -1; } while ((bytes_read < total_len) && (ServerRc == 6)) { if (WCC->serv_sock==-1) { FlushStrBuf(Ret); return -1; } serv_printf("READ "SIZE_T_FMT"|"SIZE_T_FMT, bytes_read, total_len-bytes_read); if ( (rc = StrBuf_ServGetln(Buf) > 0) && (ServerRc = GetServerStatus(Buf, NULL), ServerRc == 6) ) { if (rc < 0) return rc; StrBufCutLeft(Buf, 4); this_block = StrTol(Buf); rc = StrBuf_ServGetBLOBBuffered(Ret, this_block); if (rc < 0) { syslog(LOG_INFO, "Server connection broken during download\n"); wc_backtrace(LOG_INFO); if (WCC->serv_sock > 0) close(WCC->serv_sock); WCC->serv_sock = (-1); WCC->connected = 0; WCC->logged_in = 0; return rc; } bytes_read += rc; } } return StrLength(Ret); } int ClientGetLine(ParsedHttpHdrs *Hdr, StrBuf *Target) { const char *Error; #ifdef HAVE_OPENSSL const char *pch, *pchs; int rlen, len, retval = 0; if (is_https) { int ntries = 0; if (StrLength(Hdr->ReadBuf) > 0) { pchs = ChrPtr(Hdr->ReadBuf); pch = strchr(pchs, '\n'); if (pch != NULL) { rlen = 0; len = pch - pchs; if (len > 0 && (*(pch - 1) == '\r') ) rlen ++; StrBufSub(Target, Hdr->ReadBuf, 0, len - rlen); StrBufCutLeft(Hdr->ReadBuf, len + 1); return len - rlen; } } while (retval == 0) { pch = NULL; pchs = ChrPtr(Hdr->ReadBuf); if (*pchs != '\0') pch = strchr(pchs, '\n'); if (pch == NULL) { retval = client_read_sslbuffer(Hdr->ReadBuf, SLEEPING); pchs = ChrPtr(Hdr->ReadBuf); pch = strchr(pchs, '\n'); if (pch == NULL) retval = 0; } if (retval == 0) { sleeeeeeeeeep(1); ntries ++; } if (ntries > 10) return 0; } if ((retval > 0) && (pch != NULL)) { rlen = 0; len = pch - pchs; if (len > 0 && (*(pch - 1) == '\r') ) rlen ++; StrBufSub(Target, Hdr->ReadBuf, 0, len - rlen); StrBufCutLeft(Hdr->ReadBuf, len + 1); return len - rlen; } else return -1; } else #endif return StrBufTCP_read_buffered_line_fast(Target, Hdr->ReadBuf, &Hdr->Pos, &Hdr->http_sock, 5, 1, &Error); } /* * This is a generic function to set up a master socket for listening on * a TCP port. The server shuts down if the bind fails. (IPv4/IPv6 version) * * ip_addr IP address to bind * port_number port number to bind * queue_len number of incoming connections to allow in the queue */ int webcit_tcp_server(const char *ip_addr, int port_number, int queue_len) { const char *ipv4broadcast = "0.0.0.0"; int IsDefault = 0; struct protoent *p; struct sockaddr_in6 sin6; struct sockaddr_in sin4; int s, i, b; int ip_version = 6; retry: memset(&sin6, 0, sizeof(sin6)); memset(&sin4, 0, sizeof(sin4)); sin6.sin6_family = AF_INET6; sin4.sin_family = AF_INET; if ( (ip_addr == NULL) /* any IPv6 */ || (IsEmptyStr(ip_addr)) || (!strcmp(ip_addr, "*")) ) { IsDefault = 1; ip_version = 6; sin6.sin6_addr = in6addr_any; } else if (!strcmp(ip_addr, "0.0.0.0")) /* any IPv4 */ { ip_version = 4; sin4.sin_addr.s_addr = INADDR_ANY; } else if ((strchr(ip_addr, '.')) && (!strchr(ip_addr, ':'))) /* specific IPv4 */ { ip_version = 4; if (inet_pton(AF_INET, ip_addr, &sin4.sin_addr) <= 0) { syslog(LOG_WARNING, "Error binding to [%s] : %s\n", ip_addr, strerror(errno)); return (-WC_EXIT_BIND); } } else /* specific IPv6 */ { ip_version = 6; if (inet_pton(AF_INET6, ip_addr, &sin6.sin6_addr) <= 0) { syslog(LOG_WARNING, "Error binding to [%s] : %s\n", ip_addr, strerror(errno)); return (-WC_EXIT_BIND); } } if (port_number == 0) { syslog(LOG_WARNING, "Cannot start: no port number specified.\n"); return (-WC_EXIT_BIND); } sin6.sin6_port = htons((u_short) port_number); sin4.sin_port = htons((u_short) port_number); p = getprotobyname("tcp"); s = socket( ((ip_version == 6) ? PF_INET6 : PF_INET), SOCK_STREAM, (p->p_proto)); if (s < 0) { if (IsDefault && (errno == EAFNOSUPPORT)) { s = 0; ip_addr = ipv4broadcast; goto retry; } syslog(LOG_WARNING, "Can't create a listening socket: %s\n", strerror(errno)); return (-WC_EXIT_BIND); } /* Set some socket options that make sense. */ i = 1; setsockopt(s, SOL_SOCKET, SO_REUSEADDR, &i, sizeof(i)); if (ip_version == 6) { b = bind(s, (struct sockaddr *) &sin6, sizeof(sin6)); } else { b = bind(s, (struct sockaddr *) &sin4, sizeof(sin4)); } if (b < 0) { syslog(LOG_EMERG, "Can't bind: %s\n", strerror(errno)); close(s); return (-WC_EXIT_BIND); } if (listen(s, queue_len) < 0) { syslog(LOG_EMERG, "Can't listen: %s\n", strerror(errno)); close(s); return (-WC_EXIT_BIND); } return (s); } /* * Create a Unix domain socket and listen on it * sockpath - file name of the unix domain socket * queue_len - Number of incoming connections to allow in the queue */ int webcit_uds_server(char *sockpath, int queue_len) { struct sockaddr_un addr; int s; int i; int actual_queue_len; actual_queue_len = queue_len; if (actual_queue_len < 5) actual_queue_len = 5; i = unlink(sockpath); if ((i != 0) && (errno != ENOENT)) { syslog(LOG_WARNING, "webcit: can't unlink %s: %s\n", sockpath, strerror(errno)); return (-WC_EXIT_BIND); } memset(&addr, 0, sizeof(addr)); addr.sun_family = AF_UNIX; safestrncpy(addr.sun_path, sockpath, sizeof addr.sun_path); s = socket(AF_UNIX, SOCK_STREAM, 0); if (s < 0) { syslog(LOG_WARNING, "webcit: Can't create a unix domain socket: %s\n", strerror(errno)); return (-WC_EXIT_BIND); } if (bind(s, (struct sockaddr *)&addr, sizeof(addr)) < 0) { syslog(LOG_WARNING, "webcit: Can't bind: %s\n", strerror(errno)); close(s); return (-WC_EXIT_BIND); } if (listen(s, actual_queue_len) < 0) { syslog(LOG_WARNING, "webcit: Can't listen: %s\n", strerror(errno)); close(s); return (-WC_EXIT_BIND); } chmod(sockpath, 0777); return(s); } /* * Read data from the client socket. * * sock socket fd to read from * buf buffer to read into * bytes number of bytes to read * timeout Number of seconds to wait before timing out * * Possible return values: * 1 Requested number of bytes has been read. * 0 Request timed out. * -1 Connection is broken, or other error. */ int client_read_to(ParsedHttpHdrs *Hdr, StrBuf *Target, int bytes, int timeout) { const char *Error; int retval = 0; #ifdef HAVE_OPENSSL if (is_https) { long bufremain = 0; long baselen; baselen = StrLength(Target); if (Hdr->Pos == NULL) Hdr->Pos = ChrPtr(Hdr->ReadBuf); if (StrLength(Hdr->ReadBuf) > 0) { bufremain = StrLength(Hdr->ReadBuf) - (Hdr->Pos - ChrPtr(Hdr->ReadBuf)); if (bytes < bufremain) bufremain = bytes; StrBufAppendBufPlain(Target, Hdr->Pos, bufremain, 0); StrBufCutLeft(Hdr->ReadBuf, bufremain); } if (bytes > bufremain) { while ((StrLength(Hdr->ReadBuf) + StrLength(Target) < bytes + baselen) && (retval >= 0)) retval = client_read_sslbuffer(Hdr->ReadBuf, timeout); if (retval >= 0) { StrBufAppendBuf(Target, Hdr->ReadBuf, 0); /* todo: Buf > bytes? */ return 1; } else { syslog(LOG_INFO, "client_read_ssl() failed\n"); return -1; } } else return 1; } #endif retval = StrBufReadBLOBBuffered(Target, Hdr->ReadBuf, &Hdr->Pos, &Hdr->http_sock, 1, bytes, O_TERM, &Error); if (retval < 0) { syslog(LOG_INFO, "client_read() failed: %s\n", Error); wc_backtrace(LOG_DEBUG); return retval; } return 1; } /* * Begin buffering HTTP output so we can transmit it all in one write operation later. */ void begin_burst(void) { if (WC->WBuf == NULL) { WC->WBuf = NewStrBufPlain(NULL, 32768); } } /* * Finish buffering HTTP output. [Compress using zlib and] output with a Content-Length: header. */ long end_burst(void) { wcsession *WCC = WC; const char *ptr, *eptr; long count; ssize_t res = 0; fd_set wset; int fdflags; if (!DisableGzip && (WCC->Hdr->HR.gzip_ok)) { if (CompressBuffer(WCC->WBuf) > 0) hprintf("Content-encoding: gzip\r\n"); else { syslog(LOG_ALERT, "Compression failed: %d [%s] sending uncompressed\n", errno, strerror(errno)); wc_backtrace(LOG_INFO); } } if (WCC->WFBuf != NULL) { WildFireSerializePayload(WCC->WFBuf, WCC->HBuf, &WCC->Hdr->nWildfireHeaders, NULL); FreeStrBuf(&WCC->WFBuf); } if (WCC->Hdr->HR.prohibit_caching) hprintf("Pragma: no-cache\r\nCache-Control: no-store\r\nExpires:-1\r\n"); hprintf("Content-length: %d\r\n\r\n", StrLength(WCC->WBuf)); ptr = ChrPtr(WCC->HBuf); count = StrLength(WCC->HBuf); eptr = ptr + count; #ifdef HAVE_OPENSSL if (is_https) { client_write_ssl(WCC->HBuf); client_write_ssl(WCC->WBuf); return (count); } #endif if (WCC->Hdr->http_sock == -1) return -1; fdflags = fcntl(WC->Hdr->http_sock, F_GETFL); while ((ptr < eptr) && (WCC->Hdr->http_sock != -1)){ if ((fdflags & O_NONBLOCK) == O_NONBLOCK) { FD_ZERO(&wset); FD_SET(WCC->Hdr->http_sock, &wset); if (select(WCC->Hdr->http_sock + 1, NULL, &wset, NULL, NULL) == -1) { syslog(LOG_DEBUG, "client_write: Socket select failed (%s)\n", strerror(errno)); return -1; } } if ((WCC->Hdr->http_sock == -1) || (res = write(WCC->Hdr->http_sock, ptr, count)) == -1) { syslog(LOG_DEBUG, "client_write: Socket write failed (%s)\n", strerror(errno)); wc_backtrace(LOG_INFO); return res; } count -= res; ptr += res; } ptr = ChrPtr(WCC->WBuf); count = StrLength(WCC->WBuf); eptr = ptr + count; while ((ptr < eptr) && (WCC->Hdr->http_sock != -1)) { if ((fdflags & O_NONBLOCK) == O_NONBLOCK) { FD_ZERO(&wset); FD_SET(WCC->Hdr->http_sock, &wset); if (select(WCC->Hdr->http_sock + 1, NULL, &wset, NULL, NULL) == -1) { syslog(LOG_INFO, "client_write: Socket select failed (%s)\n", strerror(errno)); return -1; } } if ((WCC->Hdr->http_sock == -1) || (res = write(WCC->Hdr->http_sock, ptr, count)) == -1) { syslog(LOG_INFO, "client_write: Socket write failed (%s)\n", strerror(errno)); wc_backtrace(LOG_INFO); return res; } count -= res; ptr += res; } return StrLength(WCC->WBuf); } /* * lingering_close() a`la Apache. see * http://www.apache.org/docs/misc/fin_wait_2.html for rationale */ int lingering_close(int fd) { char buf[SIZ]; int i; fd_set set; struct timeval tv, start; gettimeofday(&start, NULL); if (fd == -1) return -1; shutdown(fd, 1); do { do { gettimeofday(&tv, NULL); tv.tv_sec = SLEEPING - (tv.tv_sec - start.tv_sec); tv.tv_usec = start.tv_usec - tv.tv_usec; if (tv.tv_usec < 0) { tv.tv_sec--; tv.tv_usec += 1000000; } FD_ZERO(&set); FD_SET(fd, &set); i = select(fd + 1, &set, NULL, NULL, &tv); } while (i == -1 && errno == EINTR); if (i <= 0) break; i = read(fd, buf, sizeof buf); } while (i != 0 && (i != -1 || errno == EINTR)); return close(fd); } void HttpNewModule_TCPSOCKETS (ParsedHttpHdrs *httpreq) { httpreq->ReadBuf = NewStrBufPlain(NULL, SIZ * 4); } void HttpDetachModule_TCPSOCKETS (ParsedHttpHdrs *httpreq) { FlushStrBuf(httpreq->ReadBuf); ReAdjustEmptyBuf(httpreq->ReadBuf, 4 * SIZ, SIZ); } void HttpDestroyModule_TCPSOCKETS (ParsedHttpHdrs *httpreq) { FreeStrBuf(&httpreq->ReadBuf); } void SessionNewModule_TCPSOCKETS (wcsession *sess) { sess->CLineBuf = NewStrBuf(); sess->MigrateReadLineBuf = NewStrBuf(); } void SessionDestroyModule_TCPSOCKETS (wcsession *sess) { FreeStrBuf(&sess->CLineBuf); FreeStrBuf(&sess->ReadBuf); sess->connected = 0; sess->ReadPos = NULL; FreeStrBuf(&sess->MigrateReadLineBuf); if (sess->serv_sock > 0) { syslog(LOG_DEBUG, "Closing socket %d", sess->serv_sock); close(sess->serv_sock); } sess->serv_sock = -1; } webcit-8.24-dfsg.orig/static/0000755000175000017500000000000012271477123015667 5ustar michaelmichaelwebcit-8.24-dfsg.orig/static/util.js0000644000175000017500000003322712271477123017211 0ustar michaelmichael// small but works-for-me stuff for testing javascripts // not ready for "production" use Object.inspect = function(obj) { var info = []; if(typeof obj in ["string","number"]) { return obj; } else { for(property in obj) if(typeof obj[property]!="function") info.push(property + ' => ' + (typeof obj[property] == "string" ? '"' + obj[property] + '"' : obj[property])); } return ("'" + obj + "' #" + typeof obj + ": {" + info.join(", ") + "}"); } // borrowed from http://www.schuerig.de/michael/javascript/stdext.js // Copyright (c) 2005, Michael Schuerig, michael@schuerig.de // License // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the // See http://www.gnu.org/copyleft/lesser.html Array.flatten = function(array, excludeUndefined) { if (excludeUndefined === undefined) { excludeUndefined = false; } var result = []; var len = array.length; for (var i = 0; i < len; i++) { var el = array[i]; if (el instanceof Array) { var flat = el.flatten(excludeUndefined); result = result.concat(flat); } else if (!excludeUndefined || el != undefined) { result.push(el); } } return result; }; if (!Array.prototype.flatten) { Array.prototype.flatten = function(excludeUndefined) { return Array.flatten(this, excludeUndefined); } } /*--------------------------------------------------------------------------*/ var Builder = { node: function(elementName) { var element = document.createElement('div'); element.innerHTML = "<" + elementName + ">"; // attributes (or text) if(arguments[1]) if(this._isStringOrNumber(arguments[1]) || (arguments[1] instanceof Array)) { this._children(element.firstChild, arguments[1]); } else { var attrs = this._attributes(arguments[1]); if(attrs.length) element.innerHTML = "<" +elementName + " " + attrs + ">"; } // text, or array of children if(arguments[2]) this._children(element.firstChild, arguments[2]); return element.firstChild; }, _text: function(text) { return document.createTextNode(text); }, _attributes: function(attributes) { var attrs = []; for(attribute in attributes) attrs.push((attribute=='className' ? 'class' : attribute) + '="' + attributes[attribute].toString().escapeHTML() + '"'); return attrs.join(" "); }, _children: function(element, children) { if(typeof children=='object') { // array can hold nodes and text children = children.flatten(); for(var i = 0; i 0 ? ' ' : '') + arguments[i]; } }, // returns true if all given classes exist in said element has: function(element) { element = $(element); if(!element || !element.className) return false; var regEx; for(var i = 1; i < arguments.length; i++) { if((typeof arguments[i] == 'object') && (arguments[i].constructor == Array)) { for(var j = 0; j < arguments[i].length; j++) { regEx = new RegExp("(^|\\s)" + arguments[i][j] + "(\\s|$)"); if(!regEx.test(element.className)) return false; } } else { regEx = new RegExp("(^|\\s)" + arguments[i] + "(\\s|$)"); if(!regEx.test(element.className)) return false; } } return true; }, // expects arrays of strings and/or strings as optional paramters // Element.Class.has_any(element, ['classA','classB','classC'], 'classD') has_any: function(element) { element = $(element); if(!element || !element.className) return false; var regEx; for(var i = 1; i < arguments.length; i++) { if((typeof arguments[i] == 'object') && (arguments[i].constructor == Array)) { for(var j = 0; j < arguments[i].length; j++) { regEx = new RegExp("(^|\\s)" + arguments[i][j] + "(\\s|$)"); if(regEx.test(element.className)) return true; } } else { regEx = new RegExp("(^|\\s)" + arguments[i] + "(\\s|$)"); if(regEx.test(element.className)) return true; } } return false; }, childrenWith: function(element, className) { var children = $(element).getElementsByTagName('*'); var elements = new Array(); for (var i = 0; i < children.length; i++) { if (Element.Class.has(children[i], className)) { elements.push(children[i]); break; } } return elements; } } /*--------------------------------------------------------------------------*/ String.prototype.parseQuery = function() { var str = this; if(str.substring(0,1) == '?') { str = this.substring(1); } var result = {}; var pairs = str.split('&'); for(var i = 0; i < pairs.length; i++) { var pair = pairs[i].split('='); result[pair[0]] = pair[1]; } return result; }webcit-8.24-dfsg.orig/static/prototype.js0000644000175000017500000047676012271477123020316 0ustar michaelmichael/* Prototype JavaScript framework, version 1.7 * (c) 2005-2010 Sam Stephenson * * Prototype is freely distributable under the terms of an MIT-style license. * For details, see the Prototype web site: http://www.prototypejs.org/ * *--------------------------------------------------------------------------*/ var Prototype = { Version: '1.7', Browser: (function(){ var ua = navigator.userAgent; var isOpera = Object.prototype.toString.call(window.opera) == '[object Opera]'; return { IE: !!window.attachEvent && !isOpera, Opera: isOpera, WebKit: ua.indexOf('AppleWebKit/') > -1, Gecko: ua.indexOf('Gecko') > -1 && ua.indexOf('KHTML') === -1, MobileSafari: /Apple.*Mobile/.test(ua) } })(), BrowserFeatures: { XPath: !!document.evaluate, SelectorsAPI: !!document.querySelector, ElementExtensions: (function() { var constructor = window.Element || window.HTMLElement; return !!(constructor && constructor.prototype); })(), SpecificElementExtensions: (function() { if (typeof window.HTMLDivElement !== 'undefined') return true; var div = document.createElement('div'), form = document.createElement('form'), isSupported = false; if (div['__proto__'] && (div['__proto__'] !== form['__proto__'])) { isSupported = true; } div = form = null; return isSupported; })() }, ScriptFragment: ']*>([\\S\\s]*?)<\/script>', JSONFilter: /^\/\*-secure-([\s\S]*)\*\/\s*$/, emptyFunction: function() { }, K: function(x) { return x } }; if (Prototype.Browser.MobileSafari) Prototype.BrowserFeatures.SpecificElementExtensions = false; /* Based on Alex Arnell's inheritance implementation. */ var Class = (function() { var IS_DONTENUM_BUGGY = (function(){ for (var p in { toString: 1 }) { if (p === 'toString') return false; } return true; })(); function subclass() {}; function create() { var parent = null, properties = $A(arguments); if (Object.isFunction(properties[0])) parent = properties.shift(); function klass() { this.initialize.apply(this, arguments); } Object.extend(klass, Class.Methods); klass.superclass = parent; klass.subclasses = []; if (parent) { subclass.prototype = parent.prototype; klass.prototype = new subclass; parent.subclasses.push(klass); } for (var i = 0, length = properties.length; i < length; i++) klass.addMethods(properties[i]); if (!klass.prototype.initialize) klass.prototype.initialize = Prototype.emptyFunction; klass.prototype.constructor = klass; return klass; } function addMethods(source) { var ancestor = this.superclass && this.superclass.prototype, properties = Object.keys(source); if (IS_DONTENUM_BUGGY) { if (source.toString != Object.prototype.toString) properties.push("toString"); if (source.valueOf != Object.prototype.valueOf) properties.push("valueOf"); } for (var i = 0, length = properties.length; i < length; i++) { var property = properties[i], value = source[property]; if (ancestor && Object.isFunction(value) && value.argumentNames()[0] == "$super") { var method = value; value = (function(m) { return function() { return ancestor[m].apply(this, arguments); }; })(property).wrap(method); value.valueOf = method.valueOf.bind(method); value.toString = method.toString.bind(method); } this.prototype[property] = value; } return this; } return { create: create, Methods: { addMethods: addMethods } }; })(); (function() { var _toString = Object.prototype.toString, NULL_TYPE = 'Null', UNDEFINED_TYPE = 'Undefined', BOOLEAN_TYPE = 'Boolean', NUMBER_TYPE = 'Number', STRING_TYPE = 'String', OBJECT_TYPE = 'Object', FUNCTION_CLASS = '[object Function]', BOOLEAN_CLASS = '[object Boolean]', NUMBER_CLASS = '[object Number]', STRING_CLASS = '[object String]', ARRAY_CLASS = '[object Array]', DATE_CLASS = '[object Date]', NATIVE_JSON_STRINGIFY_SUPPORT = window.JSON && typeof JSON.stringify === 'function' && JSON.stringify(0) === '0' && typeof JSON.stringify(Prototype.K) === 'undefined'; function Type(o) { switch(o) { case null: return NULL_TYPE; case (void 0): return UNDEFINED_TYPE; } var type = typeof o; switch(type) { case 'boolean': return BOOLEAN_TYPE; case 'number': return NUMBER_TYPE; case 'string': return STRING_TYPE; } return OBJECT_TYPE; } function extend(destination, source) { for (var property in source) destination[property] = source[property]; return destination; } function inspect(object) { try { if (isUndefined(object)) return 'undefined'; if (object === null) return 'null'; return object.inspect ? object.inspect() : String(object); } catch (e) { if (e instanceof RangeError) return '...'; throw e; } } function toJSON(value) { return Str('', { '': value }, []); } function Str(key, holder, stack) { var value = holder[key], type = typeof value; if (Type(value) === OBJECT_TYPE && typeof value.toJSON === 'function') { value = value.toJSON(key); } var _class = _toString.call(value); switch (_class) { case NUMBER_CLASS: case BOOLEAN_CLASS: case STRING_CLASS: value = value.valueOf(); } switch (value) { case null: return 'null'; case true: return 'true'; case false: return 'false'; } type = typeof value; switch (type) { case 'string': return value.inspect(true); case 'number': return isFinite(value) ? String(value) : 'null'; case 'object': for (var i = 0, length = stack.length; i < length; i++) { if (stack[i] === value) { throw new TypeError(); } } stack.push(value); var partial = []; if (_class === ARRAY_CLASS) { for (var i = 0, length = value.length; i < length; i++) { var str = Str(i, value, stack); partial.push(typeof str === 'undefined' ? 'null' : str); } partial = '[' + partial.join(',') + ']'; } else { var keys = Object.keys(value); for (var i = 0, length = keys.length; i < length; i++) { var key = keys[i], str = Str(key, value, stack); if (typeof str !== "undefined") { partial.push(key.inspect(true)+ ':' + str); } } partial = '{' + partial.join(',') + '}'; } stack.pop(); return partial; } } function stringify(object) { return JSON.stringify(object); } function toQueryString(object) { return $H(object).toQueryString(); } function toHTML(object) { return object && object.toHTML ? object.toHTML() : String.interpret(object); } function keys(object) { if (Type(object) !== OBJECT_TYPE) { throw new TypeError(); } var results = []; for (var property in object) { if (object.hasOwnProperty(property)) { results.push(property); } } return results; } function values(object) { var results = []; for (var property in object) results.push(object[property]); return results; } function clone(object) { return extend({ }, object); } function isElement(object) { return !!(object && object.nodeType == 1); } function isArray(object) { return _toString.call(object) === ARRAY_CLASS; } var hasNativeIsArray = (typeof Array.isArray == 'function') && Array.isArray([]) && !Array.isArray({}); if (hasNativeIsArray) { isArray = Array.isArray; } function isHash(object) { return object instanceof Hash; } function isFunction(object) { return _toString.call(object) === FUNCTION_CLASS; } function isString(object) { return _toString.call(object) === STRING_CLASS; } function isNumber(object) { return _toString.call(object) === NUMBER_CLASS; } function isDate(object) { return _toString.call(object) === DATE_CLASS; } function isUndefined(object) { return typeof object === "undefined"; } extend(Object, { extend: extend, inspect: inspect, toJSON: NATIVE_JSON_STRINGIFY_SUPPORT ? stringify : toJSON, toQueryString: toQueryString, toHTML: toHTML, keys: Object.keys || keys, values: values, clone: clone, isElement: isElement, isArray: isArray, isHash: isHash, isFunction: isFunction, isString: isString, isNumber: isNumber, isDate: isDate, isUndefined: isUndefined }); })(); Object.extend(Function.prototype, (function() { var slice = Array.prototype.slice; function update(array, args) { var arrayLength = array.length, length = args.length; while (length--) array[arrayLength + length] = args[length]; return array; } function merge(array, args) { array = slice.call(array, 0); return update(array, args); } function argumentNames() { var names = this.toString().match(/^[\s\(]*function[^(]*\(([^)]*)\)/)[1] .replace(/\/\/.*?[\r\n]|\/\*(?:.|[\r\n])*?\*\//g, '') .replace(/\s+/g, '').split(','); return names.length == 1 && !names[0] ? [] : names; } function bind(context) { if (arguments.length < 2 && Object.isUndefined(arguments[0])) return this; var __method = this, args = slice.call(arguments, 1); return function() { var a = merge(args, arguments); return __method.apply(context, a); } } function bindAsEventListener(context) { var __method = this, args = slice.call(arguments, 1); return function(event) { var a = update([event || window.event], args); return __method.apply(context, a); } } function curry() { if (!arguments.length) return this; var __method = this, args = slice.call(arguments, 0); return function() { var a = merge(args, arguments); return __method.apply(this, a); } } function delay(timeout) { var __method = this, args = slice.call(arguments, 1); timeout = timeout * 1000; return window.setTimeout(function() { return __method.apply(__method, args); }, timeout); } function defer() { var args = update([0.01], arguments); return this.delay.apply(this, args); } function wrap(wrapper) { var __method = this; return function() { var a = update([__method.bind(this)], arguments); return wrapper.apply(this, a); } } function methodize() { if (this._methodized) return this._methodized; var __method = this; return this._methodized = function() { var a = update([this], arguments); return __method.apply(null, a); }; } return { argumentNames: argumentNames, bind: bind, bindAsEventListener: bindAsEventListener, curry: curry, delay: delay, defer: defer, wrap: wrap, methodize: methodize } })()); (function(proto) { function toISOString() { return this.getUTCFullYear() + '-' + (this.getUTCMonth() + 1).toPaddedString(2) + '-' + this.getUTCDate().toPaddedString(2) + 'T' + this.getUTCHours().toPaddedString(2) + ':' + this.getUTCMinutes().toPaddedString(2) + ':' + this.getUTCSeconds().toPaddedString(2) + 'Z'; } function toJSON() { return this.toISOString(); } if (!proto.toISOString) proto.toISOString = toISOString; if (!proto.toJSON) proto.toJSON = toJSON; })(Date.prototype); RegExp.prototype.match = RegExp.prototype.test; RegExp.escape = function(str) { return String(str).replace(/([.*+?^=!:${}()|[\]\/\\])/g, '\\$1'); }; var PeriodicalExecuter = Class.create({ initialize: function(callback, frequency) { this.callback = callback; this.frequency = frequency; this.currentlyExecuting = false; this.registerCallback(); }, registerCallback: function() { this.timer = setInterval(this.onTimerEvent.bind(this), this.frequency * 1000); }, execute: function() { this.callback(this); }, stop: function() { if (!this.timer) return; clearInterval(this.timer); this.timer = null; }, onTimerEvent: function() { if (!this.currentlyExecuting) { try { this.currentlyExecuting = true; this.execute(); this.currentlyExecuting = false; } catch(e) { this.currentlyExecuting = false; throw e; } } } }); Object.extend(String, { interpret: function(value) { return value == null ? '' : String(value); }, specialChar: { '\b': '\\b', '\t': '\\t', '\n': '\\n', '\f': '\\f', '\r': '\\r', '\\': '\\\\' } }); Object.extend(String.prototype, (function() { var NATIVE_JSON_PARSE_SUPPORT = window.JSON && typeof JSON.parse === 'function' && JSON.parse('{"test": true}').test; function prepareReplacement(replacement) { if (Object.isFunction(replacement)) return replacement; var template = new Template(replacement); return function(match) { return template.evaluate(match) }; } function gsub(pattern, replacement) { var result = '', source = this, match; replacement = prepareReplacement(replacement); if (Object.isString(pattern)) pattern = RegExp.escape(pattern); if (!(pattern.length || pattern.source)) { replacement = replacement(''); return replacement + source.split('').join(replacement) + replacement; } while (source.length > 0) { if (match = source.match(pattern)) { result += source.slice(0, match.index); result += String.interpret(replacement(match)); source = source.slice(match.index + match[0].length); } else { result += source, source = ''; } } return result; } function sub(pattern, replacement, count) { replacement = prepareReplacement(replacement); count = Object.isUndefined(count) ? 1 : count; return this.gsub(pattern, function(match) { if (--count < 0) return match[0]; return replacement(match); }); } function scan(pattern, iterator) { this.gsub(pattern, iterator); return String(this); } function truncate(length, truncation) { length = length || 30; truncation = Object.isUndefined(truncation) ? '...' : truncation; return this.length > length ? this.slice(0, length - truncation.length) + truncation : String(this); } function strip() { return this.replace(/^\s+/, '').replace(/\s+$/, ''); } function stripTags() { return this.replace(/<\w+(\s+("[^"]*"|'[^']*'|[^>])+)?>|<\/\w+>/gi, ''); } function stripScripts() { return this.replace(new RegExp(Prototype.ScriptFragment, 'img'), ''); } function extractScripts() { var matchAll = new RegExp(Prototype.ScriptFragment, 'img'), matchOne = new RegExp(Prototype.ScriptFragment, 'im'); return (this.match(matchAll) || []).map(function(scriptTag) { return (scriptTag.match(matchOne) || ['', ''])[1]; }); } function evalScripts() { return this.extractScripts().map(function(script) { return eval(script) }); } function escapeHTML() { return this.replace(/&/g,'&').replace(//g,'>'); } function unescapeHTML() { return this.stripTags().replace(/</g,'<').replace(/>/g,'>').replace(/&/g,'&'); } function toQueryParams(separator) { var match = this.strip().match(/([^?#]*)(#.*)?$/); if (!match) return { }; return match[1].split(separator || '&').inject({ }, function(hash, pair) { if ((pair = pair.split('='))[0]) { var key = decodeURIComponent(pair.shift()), value = pair.length > 1 ? pair.join('=') : pair[0]; if (value != undefined) value = decodeURIComponent(value); if (key in hash) { if (!Object.isArray(hash[key])) hash[key] = [hash[key]]; hash[key].push(value); } else hash[key] = value; } return hash; }); } function toArray() { return this.split(''); } function succ() { return this.slice(0, this.length - 1) + String.fromCharCode(this.charCodeAt(this.length - 1) + 1); } function times(count) { return count < 1 ? '' : new Array(count + 1).join(this); } function camelize() { return this.replace(/-+(.)?/g, function(match, chr) { return chr ? chr.toUpperCase() : ''; }); } function capitalize() { return this.charAt(0).toUpperCase() + this.substring(1).toLowerCase(); } function underscore() { return this.replace(/::/g, '/') .replace(/([A-Z]+)([A-Z][a-z])/g, '$1_$2') .replace(/([a-z\d])([A-Z])/g, '$1_$2') .replace(/-/g, '_') .toLowerCase(); } function dasherize() { return this.replace(/_/g, '-'); } function inspect(useDoubleQuotes) { var escapedString = this.replace(/[\x00-\x1f\\]/g, function(character) { if (character in String.specialChar) { return String.specialChar[character]; } return '\\u00' + character.charCodeAt().toPaddedString(2, 16); }); if (useDoubleQuotes) return '"' + escapedString.replace(/"/g, '\\"') + '"'; return "'" + escapedString.replace(/'/g, '\\\'') + "'"; } function unfilterJSON(filter) { return this.replace(filter || Prototype.JSONFilter, '$1'); } function isJSON() { var str = this; if (str.blank()) return false; str = str.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@'); str = str.replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']'); str = str.replace(/(?:^|:|,)(?:\s*\[)+/g, ''); return (/^[\],:{}\s]*$/).test(str); } function evalJSON(sanitize) { var json = this.unfilterJSON(), cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g; if (cx.test(json)) { json = json.replace(cx, function (a) { return '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4); }); } try { if (!sanitize || json.isJSON()) return eval('(' + json + ')'); } catch (e) { } throw new SyntaxError('Badly formed JSON string: ' + this.inspect()); } function parseJSON() { var json = this.unfilterJSON(); return JSON.parse(json); } function include(pattern) { return this.indexOf(pattern) > -1; } function startsWith(pattern) { return this.lastIndexOf(pattern, 0) === 0; } function endsWith(pattern) { var d = this.length - pattern.length; return d >= 0 && this.indexOf(pattern, d) === d; } function empty() { return this == ''; } function blank() { return /^\s*$/.test(this); } function interpolate(object, pattern) { return new Template(this, pattern).evaluate(object); } return { gsub: gsub, sub: sub, scan: scan, truncate: truncate, strip: String.prototype.trim || strip, stripTags: stripTags, stripScripts: stripScripts, extractScripts: extractScripts, evalScripts: evalScripts, escapeHTML: escapeHTML, unescapeHTML: unescapeHTML, toQueryParams: toQueryParams, parseQuery: toQueryParams, toArray: toArray, succ: succ, times: times, camelize: camelize, capitalize: capitalize, underscore: underscore, dasherize: dasherize, inspect: inspect, unfilterJSON: unfilterJSON, isJSON: isJSON, evalJSON: NATIVE_JSON_PARSE_SUPPORT ? parseJSON : evalJSON, include: include, startsWith: startsWith, endsWith: endsWith, empty: empty, blank: blank, interpolate: interpolate }; })()); var Template = Class.create({ initialize: function(template, pattern) { this.template = template.toString(); this.pattern = pattern || Template.Pattern; }, evaluate: function(object) { if (object && Object.isFunction(object.toTemplateReplacements)) object = object.toTemplateReplacements(); return this.template.gsub(this.pattern, function(match) { if (object == null) return (match[1] + ''); var before = match[1] || ''; if (before == '\\') return match[2]; var ctx = object, expr = match[3], pattern = /^([^.[]+|\[((?:.*?[^\\])?)\])(\.|\[|$)/; match = pattern.exec(expr); if (match == null) return before; while (match != null) { var comp = match[1].startsWith('[') ? match[2].replace(/\\\\]/g, ']') : match[1]; ctx = ctx[comp]; if (null == ctx || '' == match[3]) break; expr = expr.substring('[' == match[3] ? match[1].length : match[0].length); match = pattern.exec(expr); } return before + String.interpret(ctx); }); } }); Template.Pattern = /(^|.|\r|\n)(#\{(.*?)\})/; var $break = { }; var Enumerable = (function() { function each(iterator, context) { var index = 0; try { this._each(function(value) { iterator.call(context, value, index++); }); } catch (e) { if (e != $break) throw e; } return this; } function eachSlice(number, iterator, context) { var index = -number, slices = [], array = this.toArray(); if (number < 1) return array; while ((index += number) < array.length) slices.push(array.slice(index, index+number)); return slices.collect(iterator, context); } function all(iterator, context) { iterator = iterator || Prototype.K; var result = true; this.each(function(value, index) { result = result && !!iterator.call(context, value, index); if (!result) throw $break; }); return result; } function any(iterator, context) { iterator = iterator || Prototype.K; var result = false; this.each(function(value, index) { if (result = !!iterator.call(context, value, index)) throw $break; }); return result; } function collect(iterator, context) { iterator = iterator || Prototype.K; var results = []; this.each(function(value, index) { results.push(iterator.call(context, value, index)); }); return results; } function detect(iterator, context) { var result; this.each(function(value, index) { if (iterator.call(context, value, index)) { result = value; throw $break; } }); return result; } function findAll(iterator, context) { var results = []; this.each(function(value, index) { if (iterator.call(context, value, index)) results.push(value); }); return results; } function grep(filter, iterator, context) { iterator = iterator || Prototype.K; var results = []; if (Object.isString(filter)) filter = new RegExp(RegExp.escape(filter)); this.each(function(value, index) { if (filter.match(value)) results.push(iterator.call(context, value, index)); }); return results; } function include(object) { if (Object.isFunction(this.indexOf)) if (this.indexOf(object) != -1) return true; var found = false; this.each(function(value) { if (value == object) { found = true; throw $break; } }); return found; } function inGroupsOf(number, fillWith) { fillWith = Object.isUndefined(fillWith) ? null : fillWith; return this.eachSlice(number, function(slice) { while(slice.length < number) slice.push(fillWith); return slice; }); } function inject(memo, iterator, context) { this.each(function(value, index) { memo = iterator.call(context, memo, value, index); }); return memo; } function invoke(method) { var args = $A(arguments).slice(1); return this.map(function(value) { return value[method].apply(value, args); }); } function max(iterator, context) { iterator = iterator || Prototype.K; var result; this.each(function(value, index) { value = iterator.call(context, value, index); if (result == null || value >= result) result = value; }); return result; } function min(iterator, context) { iterator = iterator || Prototype.K; var result; this.each(function(value, index) { value = iterator.call(context, value, index); if (result == null || value < result) result = value; }); return result; } function partition(iterator, context) { iterator = iterator || Prototype.K; var trues = [], falses = []; this.each(function(value, index) { (iterator.call(context, value, index) ? trues : falses).push(value); }); return [trues, falses]; } function pluck(property) { var results = []; this.each(function(value) { results.push(value[property]); }); return results; } function reject(iterator, context) { var results = []; this.each(function(value, index) { if (!iterator.call(context, value, index)) results.push(value); }); return results; } function sortBy(iterator, context) { return this.map(function(value, index) { return { value: value, criteria: iterator.call(context, value, index) }; }).sort(function(left, right) { var a = left.criteria, b = right.criteria; return a < b ? -1 : a > b ? 1 : 0; }).pluck('value'); } function toArray() { return this.map(); } function zip() { var iterator = Prototype.K, args = $A(arguments); if (Object.isFunction(args.last())) iterator = args.pop(); var collections = [this].concat(args).map($A); return this.map(function(value, index) { return iterator(collections.pluck(index)); }); } function size() { return this.toArray().length; } function inspect() { return '#'; } return { each: each, eachSlice: eachSlice, all: all, every: all, any: any, some: any, collect: collect, map: collect, detect: detect, findAll: findAll, select: findAll, filter: findAll, grep: grep, include: include, member: include, inGroupsOf: inGroupsOf, inject: inject, invoke: invoke, max: max, min: min, partition: partition, pluck: pluck, reject: reject, sortBy: sortBy, toArray: toArray, entries: toArray, zip: zip, size: size, inspect: inspect, find: detect }; })(); function $A(iterable) { if (!iterable) return []; if ('toArray' in Object(iterable)) return iterable.toArray(); var length = iterable.length || 0, results = new Array(length); while (length--) results[length] = iterable[length]; return results; } function $w(string) { if (!Object.isString(string)) return []; string = string.strip(); return string ? string.split(/\s+/) : []; } Array.from = $A; (function() { var arrayProto = Array.prototype, slice = arrayProto.slice, _each = arrayProto.forEach; // use native browser JS 1.6 implementation if available function each(iterator, context) { for (var i = 0, length = this.length >>> 0; i < length; i++) { if (i in this) iterator.call(context, this[i], i, this); } } if (!_each) _each = each; function clear() { this.length = 0; return this; } function first() { return this[0]; } function last() { return this[this.length - 1]; } function compact() { return this.select(function(value) { return value != null; }); } function flatten() { return this.inject([], function(array, value) { if (Object.isArray(value)) return array.concat(value.flatten()); array.push(value); return array; }); } function without() { var values = slice.call(arguments, 0); return this.select(function(value) { return !values.include(value); }); } function reverse(inline) { return (inline === false ? this.toArray() : this)._reverse(); } function uniq(sorted) { return this.inject([], function(array, value, index) { if (0 == index || (sorted ? array.last() != value : !array.include(value))) array.push(value); return array; }); } function intersect(array) { return this.uniq().findAll(function(item) { return array.detect(function(value) { return item === value }); }); } function clone() { return slice.call(this, 0); } function size() { return this.length; } function inspect() { return '[' + this.map(Object.inspect).join(', ') + ']'; } function indexOf(item, i) { i || (i = 0); var length = this.length; if (i < 0) i = length + i; for (; i < length; i++) if (this[i] === item) return i; return -1; } function lastIndexOf(item, i) { i = isNaN(i) ? this.length : (i < 0 ? this.length + i : i) + 1; var n = this.slice(0, i).reverse().indexOf(item); return (n < 0) ? n : i - n - 1; } function concat() { var array = slice.call(this, 0), item; for (var i = 0, length = arguments.length; i < length; i++) { item = arguments[i]; if (Object.isArray(item) && !('callee' in item)) { for (var j = 0, arrayLength = item.length; j < arrayLength; j++) array.push(item[j]); } else { array.push(item); } } return array; } Object.extend(arrayProto, Enumerable); if (!arrayProto._reverse) arrayProto._reverse = arrayProto.reverse; Object.extend(arrayProto, { _each: _each, clear: clear, first: first, last: last, compact: compact, flatten: flatten, without: without, reverse: reverse, uniq: uniq, intersect: intersect, clone: clone, toArray: clone, size: size, inspect: inspect }); var CONCAT_ARGUMENTS_BUGGY = (function() { return [].concat(arguments)[0][0] !== 1; })(1,2) if (CONCAT_ARGUMENTS_BUGGY) arrayProto.concat = concat; if (!arrayProto.indexOf) arrayProto.indexOf = indexOf; if (!arrayProto.lastIndexOf) arrayProto.lastIndexOf = lastIndexOf; })(); function $H(object) { return new Hash(object); }; var Hash = Class.create(Enumerable, (function() { function initialize(object) { this._object = Object.isHash(object) ? object.toObject() : Object.clone(object); } function _each(iterator) { for (var key in this._object) { var value = this._object[key], pair = [key, value]; pair.key = key; pair.value = value; iterator(pair); } } function set(key, value) { return this._object[key] = value; } function get(key) { if (this._object[key] !== Object.prototype[key]) return this._object[key]; } function unset(key) { var value = this._object[key]; delete this._object[key]; return value; } function toObject() { return Object.clone(this._object); } function keys() { return this.pluck('key'); } function values() { return this.pluck('value'); } function index(value) { var match = this.detect(function(pair) { return pair.value === value; }); return match && match.key; } function merge(object) { return this.clone().update(object); } function update(object) { return new Hash(object).inject(this, function(result, pair) { result.set(pair.key, pair.value); return result; }); } function toQueryPair(key, value) { if (Object.isUndefined(value)) return key; return key + '=' + encodeURIComponent(String.interpret(value)); } function toQueryString() { return this.inject([], function(results, pair) { var key = encodeURIComponent(pair.key), values = pair.value; if (values && typeof values == 'object') { if (Object.isArray(values)) { var queryValues = []; for (var i = 0, len = values.length, value; i < len; i++) { value = values[i]; queryValues.push(toQueryPair(key, value)); } return results.concat(queryValues); } } else results.push(toQueryPair(key, values)); return results; }).join('&'); } function inspect() { return '#'; } function clone() { return new Hash(this); } return { initialize: initialize, _each: _each, set: set, get: get, unset: unset, toObject: toObject, toTemplateReplacements: toObject, keys: keys, values: values, index: index, merge: merge, update: update, toQueryString: toQueryString, inspect: inspect, toJSON: toObject, clone: clone }; })()); Hash.from = $H; Object.extend(Number.prototype, (function() { function toColorPart() { return this.toPaddedString(2, 16); } function succ() { return this + 1; } function times(iterator, context) { $R(0, this, true).each(iterator, context); return this; } function toPaddedString(length, radix) { var string = this.toString(radix || 10); return '0'.times(length - string.length) + string; } function abs() { return Math.abs(this); } function round() { return Math.round(this); } function ceil() { return Math.ceil(this); } function floor() { return Math.floor(this); } return { toColorPart: toColorPart, succ: succ, times: times, toPaddedString: toPaddedString, abs: abs, round: round, ceil: ceil, floor: floor }; })()); function $R(start, end, exclusive) { return new ObjectRange(start, end, exclusive); } var ObjectRange = Class.create(Enumerable, (function() { function initialize(start, end, exclusive) { this.start = start; this.end = end; this.exclusive = exclusive; } function _each(iterator) { var value = this.start; while (this.include(value)) { iterator(value); value = value.succ(); } } function include(value) { if (value < this.start) return false; if (this.exclusive) return value < this.end; return value <= this.end; } return { initialize: initialize, _each: _each, include: include }; })()); var Abstract = { }; var Try = { these: function() { var returnValue; for (var i = 0, length = arguments.length; i < length; i++) { var lambda = arguments[i]; try { returnValue = lambda(); break; } catch (e) { } } return returnValue; } }; var Ajax = { getTransport: function() { return Try.these( function() {return new XMLHttpRequest()}, function() {return new ActiveXObject('Msxml2.XMLHTTP')}, function() {return new ActiveXObject('Microsoft.XMLHTTP')} ) || false; }, activeRequestCount: 0 }; Ajax.Responders = { responders: [], _each: function(iterator) { this.responders._each(iterator); }, register: function(responder) { if (!this.include(responder)) this.responders.push(responder); }, unregister: function(responder) { this.responders = this.responders.without(responder); }, dispatch: function(callback, request, transport, json) { this.each(function(responder) { if (Object.isFunction(responder[callback])) { try { responder[callback].apply(responder, [request, transport, json]); } catch (e) { } } }); } }; Object.extend(Ajax.Responders, Enumerable); Ajax.Responders.register({ onCreate: function() { Ajax.activeRequestCount++ }, onComplete: function() { Ajax.activeRequestCount-- } }); Ajax.Base = Class.create({ initialize: function(options) { this.options = { method: 'post', asynchronous: true, contentType: 'application/x-www-form-urlencoded', encoding: 'UTF-8', parameters: '', evalJSON: true, evalJS: true }; Object.extend(this.options, options || { }); this.options.method = this.options.method.toLowerCase(); if (Object.isHash(this.options.parameters)) this.options.parameters = this.options.parameters.toObject(); } }); Ajax.Request = Class.create(Ajax.Base, { _complete: false, initialize: function($super, url, options) { $super(options); this.transport = Ajax.getTransport(); this.request(url); }, request: function(url) { this.url = url; this.method = this.options.method; var params = Object.isString(this.options.parameters) ? this.options.parameters : Object.toQueryString(this.options.parameters); if (!['get', 'post'].include(this.method)) { params += (params ? '&' : '') + "_method=" + this.method; this.method = 'post'; } if (params && this.method === 'get') { this.url += (this.url.include('?') ? '&' : '?') + params; } this.parameters = params.toQueryParams(); try { var response = new Ajax.Response(this); if (this.options.onCreate) this.options.onCreate(response); Ajax.Responders.dispatch('onCreate', this, response); this.transport.open(this.method.toUpperCase(), this.url, this.options.asynchronous); if (this.options.asynchronous) this.respondToReadyState.bind(this).defer(1); this.transport.onreadystatechange = this.onStateChange.bind(this); this.setRequestHeaders(); this.body = this.method == 'post' ? (this.options.postBody || params) : null; this.transport.send(this.body); /* Force Firefox to handle ready state 4 for synchronous requests */ if (!this.options.asynchronous && this.transport.overrideMimeType) this.onStateChange(); } catch (e) { this.dispatchException(e); } }, onStateChange: function() { var readyState = this.transport.readyState; if (readyState > 1 && !((readyState == 4) && this._complete)) this.respondToReadyState(this.transport.readyState); }, setRequestHeaders: function() { var headers = { 'X-Requested-With': 'XMLHttpRequest', 'X-Prototype-Version': Prototype.Version, 'Accept': 'text/javascript, text/html, application/xml, text/xml, */*' }; if (this.method == 'post') { headers['Content-type'] = this.options.contentType + (this.options.encoding ? '; charset=' + this.options.encoding : ''); /* Force "Connection: close" for older Mozilla browsers to work * around a bug where XMLHttpRequest sends an incorrect * Content-length header. See Mozilla Bugzilla #246651. */ if (this.transport.overrideMimeType && (navigator.userAgent.match(/Gecko\/(\d{4})/) || [0,2005])[1] < 2005) headers['Connection'] = 'close'; } if (typeof this.options.requestHeaders == 'object') { var extras = this.options.requestHeaders; if (Object.isFunction(extras.push)) for (var i = 0, length = extras.length; i < length; i += 2) headers[extras[i]] = extras[i+1]; else $H(extras).each(function(pair) { headers[pair.key] = pair.value }); } for (var name in headers) this.transport.setRequestHeader(name, headers[name]); }, success: function() { var status = this.getStatus(); return !status || (status >= 200 && status < 300) || status == 304; }, getStatus: function() { try { if (this.transport.status === 1223) return 204; return this.transport.status || 0; } catch (e) { return 0 } }, respondToReadyState: function(readyState) { var state = Ajax.Request.Events[readyState], response = new Ajax.Response(this); if (state == 'Complete') { try { this._complete = true; (this.options['on' + response.status] || this.options['on' + (this.success() ? 'Success' : 'Failure')] || Prototype.emptyFunction)(response, response.headerJSON); } catch (e) { this.dispatchException(e); } var contentType = response.getHeader('Content-type'); if (this.options.evalJS == 'force' || (this.options.evalJS && this.isSameOrigin() && contentType && contentType.match(/^\s*(text|application)\/(x-)?(java|ecma)script(;.*)?\s*$/i))) this.evalResponse(); } try { (this.options['on' + state] || Prototype.emptyFunction)(response, response.headerJSON); Ajax.Responders.dispatch('on' + state, this, response, response.headerJSON); } catch (e) { this.dispatchException(e); } if (state == 'Complete') { this.transport.onreadystatechange = Prototype.emptyFunction; } }, isSameOrigin: function() { var m = this.url.match(/^\s*https?:\/\/[^\/]*/); return !m || (m[0] == '#{protocol}//#{domain}#{port}'.interpolate({ protocol: location.protocol, domain: document.domain, port: location.port ? ':' + location.port : '' })); }, getHeader: function(name) { try { return this.transport.getResponseHeader(name) || null; } catch (e) { return null; } }, evalResponse: function() { try { return eval((this.transport.responseText || '').unfilterJSON()); } catch (e) { this.dispatchException(e); } }, dispatchException: function(exception) { (this.options.onException || Prototype.emptyFunction)(this, exception); Ajax.Responders.dispatch('onException', this, exception); } }); Ajax.Request.Events = ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete']; Ajax.Response = Class.create({ initialize: function(request){ this.request = request; var transport = this.transport = request.transport, readyState = this.readyState = transport.readyState; if ((readyState > 2 && !Prototype.Browser.IE) || readyState == 4) { this.status = this.getStatus(); this.statusText = this.getStatusText(); this.responseText = String.interpret(transport.responseText); this.headerJSON = this._getHeaderJSON(); } if (readyState == 4) { var xml = transport.responseXML; this.responseXML = Object.isUndefined(xml) ? null : xml; this.responseJSON = this._getResponseJSON(); } }, status: 0, statusText: '', getStatus: Ajax.Request.prototype.getStatus, getStatusText: function() { try { return this.transport.statusText || ''; } catch (e) { return '' } }, getHeader: Ajax.Request.prototype.getHeader, getAllHeaders: function() { try { return this.getAllResponseHeaders(); } catch (e) { return null } }, getResponseHeader: function(name) { return this.transport.getResponseHeader(name); }, getAllResponseHeaders: function() { return this.transport.getAllResponseHeaders(); }, _getHeaderJSON: function() { var json = this.getHeader('X-JSON'); if (!json) return null; json = decodeURIComponent(escape(json)); try { return json.evalJSON(this.request.options.sanitizeJSON || !this.request.isSameOrigin()); } catch (e) { this.request.dispatchException(e); } }, _getResponseJSON: function() { var options = this.request.options; if (!options.evalJSON || (options.evalJSON != 'force' && !(this.getHeader('Content-type') || '').include('application/json')) || this.responseText.blank()) return null; try { return this.responseText.evalJSON(options.sanitizeJSON || !this.request.isSameOrigin()); } catch (e) { this.request.dispatchException(e); } } }); Ajax.Updater = Class.create(Ajax.Request, { initialize: function($super, container, url, options) { this.container = { success: (container.success || container), failure: (container.failure || (container.success ? null : container)) }; options = Object.clone(options); var onComplete = options.onComplete; options.onComplete = (function(response, json) { this.updateContent(response.responseText); if (Object.isFunction(onComplete)) onComplete(response, json); }).bind(this); $super(url, options); }, updateContent: function(responseText) { var receiver = this.container[this.success() ? 'success' : 'failure'], options = this.options; if (!options.evalScripts) responseText = responseText.stripScripts(); if (receiver = $(receiver)) { if (options.insertion) { if (Object.isString(options.insertion)) { var insertion = { }; insertion[options.insertion] = responseText; receiver.insert(insertion); } else options.insertion(receiver, responseText); } else receiver.update(responseText); } } }); Ajax.PeriodicalUpdater = Class.create(Ajax.Base, { initialize: function($super, container, url, options) { $super(options); this.onComplete = this.options.onComplete; this.frequency = (this.options.frequency || 2); this.decay = (this.options.decay || 1); this.updater = { }; this.container = container; this.url = url; this.start(); }, start: function() { this.options.onComplete = this.updateComplete.bind(this); this.onTimerEvent(); }, stop: function() { this.updater.options.onComplete = undefined; clearTimeout(this.timer); (this.onComplete || Prototype.emptyFunction).apply(this, arguments); }, updateComplete: function(response) { if (this.options.decay) { this.decay = (response.responseText == this.lastText ? this.decay * this.options.decay : 1); this.lastText = response.responseText; } this.timer = this.onTimerEvent.bind(this).delay(this.decay * this.frequency); }, onTimerEvent: function() { this.updater = new Ajax.Updater(this.container, this.url, this.options); } }); function $(element) { if (arguments.length > 1) { for (var i = 0, elements = [], length = arguments.length; i < length; i++) elements.push($(arguments[i])); return elements; } if (Object.isString(element)) element = document.getElementById(element); return Element.extend(element); } if (Prototype.BrowserFeatures.XPath) { document._getElementsByXPath = function(expression, parentElement) { var results = []; var query = document.evaluate(expression, $(parentElement) || document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null); for (var i = 0, length = query.snapshotLength; i < length; i++) results.push(Element.extend(query.snapshotItem(i))); return results; }; } /*--------------------------------------------------------------------------*/ if (!Node) var Node = { }; if (!Node.ELEMENT_NODE) { Object.extend(Node, { ELEMENT_NODE: 1, ATTRIBUTE_NODE: 2, TEXT_NODE: 3, CDATA_SECTION_NODE: 4, ENTITY_REFERENCE_NODE: 5, ENTITY_NODE: 6, PROCESSING_INSTRUCTION_NODE: 7, COMMENT_NODE: 8, DOCUMENT_NODE: 9, DOCUMENT_TYPE_NODE: 10, DOCUMENT_FRAGMENT_NODE: 11, NOTATION_NODE: 12 }); } (function(global) { function shouldUseCache(tagName, attributes) { if (tagName === 'select') return false; if ('type' in attributes) return false; return true; } var HAS_EXTENDED_CREATE_ELEMENT_SYNTAX = (function(){ try { var el = document.createElement(''); return el.tagName.toLowerCase() === 'input' && el.name === 'x'; } catch(err) { return false; } })(); var element = global.Element; global.Element = function(tagName, attributes) { attributes = attributes || { }; tagName = tagName.toLowerCase(); var cache = Element.cache; if (HAS_EXTENDED_CREATE_ELEMENT_SYNTAX && attributes.name) { tagName = '<' + tagName + ' name="' + attributes.name + '">'; delete attributes.name; return Element.writeAttribute(document.createElement(tagName), attributes); } if (!cache[tagName]) cache[tagName] = Element.extend(document.createElement(tagName)); var node = shouldUseCache(tagName, attributes) ? cache[tagName].cloneNode(false) : document.createElement(tagName); return Element.writeAttribute(node, attributes); }; Object.extend(global.Element, element || { }); if (element) global.Element.prototype = element.prototype; })(this); Element.idCounter = 1; Element.cache = { }; Element._purgeElement = function(element) { var uid = element._prototypeUID; if (uid) { Element.stopObserving(element); element._prototypeUID = void 0; delete Element.Storage[uid]; } } Element.Methods = { visible: function(element) { return $(element).style.display != 'none'; }, toggle: function(element) { element = $(element); Element[Element.visible(element) ? 'hide' : 'show'](element); return element; }, hide: function(element) { element = $(element); element.style.display = 'none'; return element; }, show: function(element) { element = $(element); element.style.display = ''; return element; }, remove: function(element) { element = $(element); element.parentNode.removeChild(element); return element; }, update: (function(){ var SELECT_ELEMENT_INNERHTML_BUGGY = (function(){ var el = document.createElement("select"), isBuggy = true; el.innerHTML = ""; if (el.options && el.options[0]) { isBuggy = el.options[0].nodeName.toUpperCase() !== "OPTION"; } el = null; return isBuggy; })(); var TABLE_ELEMENT_INNERHTML_BUGGY = (function(){ try { var el = document.createElement("table"); if (el && el.tBodies) { el.innerHTML = "test"; var isBuggy = typeof el.tBodies[0] == "undefined"; el = null; return isBuggy; } } catch (e) { return true; } })(); var LINK_ELEMENT_INNERHTML_BUGGY = (function() { try { var el = document.createElement('div'); el.innerHTML = ""; var isBuggy = (el.childNodes.length === 0); el = null; return isBuggy; } catch(e) { return true; } })(); var ANY_INNERHTML_BUGGY = SELECT_ELEMENT_INNERHTML_BUGGY || TABLE_ELEMENT_INNERHTML_BUGGY || LINK_ELEMENT_INNERHTML_BUGGY; var SCRIPT_ELEMENT_REJECTS_TEXTNODE_APPENDING = (function () { var s = document.createElement("script"), isBuggy = false; try { s.appendChild(document.createTextNode("")); isBuggy = !s.firstChild || s.firstChild && s.firstChild.nodeType !== 3; } catch (e) { isBuggy = true; } s = null; return isBuggy; })(); function update(element, content) { element = $(element); var purgeElement = Element._purgeElement; var descendants = element.getElementsByTagName('*'), i = descendants.length; while (i--) purgeElement(descendants[i]); if (content && content.toElement) content = content.toElement(); if (Object.isElement(content)) return element.update().insert(content); content = Object.toHTML(content); var tagName = element.tagName.toUpperCase(); if (tagName === 'SCRIPT' && SCRIPT_ELEMENT_REJECTS_TEXTNODE_APPENDING) { element.text = content; return element; } if (ANY_INNERHTML_BUGGY) { if (tagName in Element._insertionTranslations.tags) { while (element.firstChild) { element.removeChild(element.firstChild); } Element._getContentFromAnonymousElement(tagName, content.stripScripts()) .each(function(node) { element.appendChild(node) }); } else if (LINK_ELEMENT_INNERHTML_BUGGY && Object.isString(content) && content.indexOf(' -1) { while (element.firstChild) { element.removeChild(element.firstChild); } var nodes = Element._getContentFromAnonymousElement(tagName, content.stripScripts(), true); nodes.each(function(node) { element.appendChild(node) }); } else { element.innerHTML = content.stripScripts(); } } else { element.innerHTML = content.stripScripts(); } content.evalScripts.bind(content).defer(); return element; } return update; })(), replace: function(element, content) { element = $(element); if (content && content.toElement) content = content.toElement(); else if (!Object.isElement(content)) { content = Object.toHTML(content); var range = element.ownerDocument.createRange(); range.selectNode(element); content.evalScripts.bind(content).defer(); content = range.createContextualFragment(content.stripScripts()); } element.parentNode.replaceChild(content, element); return element; }, insert: function(element, insertions) { element = $(element); if (Object.isString(insertions) || Object.isNumber(insertions) || Object.isElement(insertions) || (insertions && (insertions.toElement || insertions.toHTML))) insertions = {bottom:insertions}; var content, insert, tagName, childNodes; for (var position in insertions) { content = insertions[position]; position = position.toLowerCase(); insert = Element._insertionTranslations[position]; if (content && content.toElement) content = content.toElement(); if (Object.isElement(content)) { insert(element, content); continue; } content = Object.toHTML(content); tagName = ((position == 'before' || position == 'after') ? element.parentNode : element).tagName.toUpperCase(); childNodes = Element._getContentFromAnonymousElement(tagName, content.stripScripts()); if (position == 'top' || position == 'after') childNodes.reverse(); childNodes.each(insert.curry(element)); content.evalScripts.bind(content).defer(); } return element; }, wrap: function(element, wrapper, attributes) { element = $(element); if (Object.isElement(wrapper)) $(wrapper).writeAttribute(attributes || { }); else if (Object.isString(wrapper)) wrapper = new Element(wrapper, attributes); else wrapper = new Element('div', wrapper); if (element.parentNode) element.parentNode.replaceChild(wrapper, element); wrapper.appendChild(element); return wrapper; }, inspect: function(element) { element = $(element); var result = '<' + element.tagName.toLowerCase(); $H({'id': 'id', 'className': 'class'}).each(function(pair) { var property = pair.first(), attribute = pair.last(), value = (element[property] || '').toString(); if (value) result += ' ' + attribute + '=' + value.inspect(true); }); return result + '>'; }, recursivelyCollect: function(element, property, maximumLength) { element = $(element); maximumLength = maximumLength || -1; var elements = []; while (element = element[property]) { if (element.nodeType == 1) elements.push(Element.extend(element)); if (elements.length == maximumLength) break; } return elements; }, ancestors: function(element) { return Element.recursivelyCollect(element, 'parentNode'); }, descendants: function(element) { return Element.select(element, "*"); }, firstDescendant: function(element) { element = $(element).firstChild; while (element && element.nodeType != 1) element = element.nextSibling; return $(element); }, immediateDescendants: function(element) { var results = [], child = $(element).firstChild; while (child) { if (child.nodeType === 1) { results.push(Element.extend(child)); } child = child.nextSibling; } return results; }, previousSiblings: function(element, maximumLength) { return Element.recursivelyCollect(element, 'previousSibling'); }, nextSiblings: function(element) { return Element.recursivelyCollect(element, 'nextSibling'); }, siblings: function(element) { element = $(element); return Element.previousSiblings(element).reverse() .concat(Element.nextSiblings(element)); }, match: function(element, selector) { element = $(element); if (Object.isString(selector)) return Prototype.Selector.match(element, selector); return selector.match(element); }, up: function(element, expression, index) { element = $(element); if (arguments.length == 1) return $(element.parentNode); var ancestors = Element.ancestors(element); return Object.isNumber(expression) ? ancestors[expression] : Prototype.Selector.find(ancestors, expression, index); }, down: function(element, expression, index) { element = $(element); if (arguments.length == 1) return Element.firstDescendant(element); return Object.isNumber(expression) ? Element.descendants(element)[expression] : Element.select(element, expression)[index || 0]; }, previous: function(element, expression, index) { element = $(element); if (Object.isNumber(expression)) index = expression, expression = false; if (!Object.isNumber(index)) index = 0; if (expression) { return Prototype.Selector.find(element.previousSiblings(), expression, index); } else { return element.recursivelyCollect("previousSibling", index + 1)[index]; } }, next: function(element, expression, index) { element = $(element); if (Object.isNumber(expression)) index = expression, expression = false; if (!Object.isNumber(index)) index = 0; if (expression) { return Prototype.Selector.find(element.nextSiblings(), expression, index); } else { var maximumLength = Object.isNumber(index) ? index + 1 : 1; return element.recursivelyCollect("nextSibling", index + 1)[index]; } }, select: function(element) { element = $(element); var expressions = Array.prototype.slice.call(arguments, 1).join(', '); return Prototype.Selector.select(expressions, element); }, adjacent: function(element) { element = $(element); var expressions = Array.prototype.slice.call(arguments, 1).join(', '); return Prototype.Selector.select(expressions, element.parentNode).without(element); }, identify: function(element) { element = $(element); var id = Element.readAttribute(element, 'id'); if (id) return id; do { id = 'anonymous_element_' + Element.idCounter++ } while ($(id)); Element.writeAttribute(element, 'id', id); return id; }, readAttribute: function(element, name) { element = $(element); if (Prototype.Browser.IE) { var t = Element._attributeTranslations.read; if (t.values[name]) return t.values[name](element, name); if (t.names[name]) name = t.names[name]; if (name.include(':')) { return (!element.attributes || !element.attributes[name]) ? null : element.attributes[name].value; } } return element.getAttribute(name); }, writeAttribute: function(element, name, value) { element = $(element); var attributes = { }, t = Element._attributeTranslations.write; if (typeof name == 'object') attributes = name; else attributes[name] = Object.isUndefined(value) ? true : value; for (var attr in attributes) { name = t.names[attr] || attr; value = attributes[attr]; if (t.values[attr]) name = t.values[attr](element, value); if (value === false || value === null) element.removeAttribute(name); else if (value === true) element.setAttribute(name, name); else element.setAttribute(name, value); } return element; }, getHeight: function(element) { return Element.getDimensions(element).height; }, getWidth: function(element) { return Element.getDimensions(element).width; }, classNames: function(element) { return new Element.ClassNames(element); }, hasClassName: function(element, className) { if (!(element = $(element))) return; var elementClassName = element.className; return (elementClassName.length > 0 && (elementClassName == className || new RegExp("(^|\\s)" + className + "(\\s|$)").test(elementClassName))); }, addClassName: function(element, className) { if (!(element = $(element))) return; if (!Element.hasClassName(element, className)) element.className += (element.className ? ' ' : '') + className; return element; }, removeClassName: function(element, className) { if (!(element = $(element))) return; element.className = element.className.replace( new RegExp("(^|\\s+)" + className + "(\\s+|$)"), ' ').strip(); return element; }, toggleClassName: function(element, className) { if (!(element = $(element))) return; return Element[Element.hasClassName(element, className) ? 'removeClassName' : 'addClassName'](element, className); }, cleanWhitespace: function(element) { element = $(element); var node = element.firstChild; while (node) { var nextNode = node.nextSibling; if (node.nodeType == 3 && !/\S/.test(node.nodeValue)) element.removeChild(node); node = nextNode; } return element; }, empty: function(element) { return $(element).innerHTML.blank(); }, descendantOf: function(element, ancestor) { element = $(element), ancestor = $(ancestor); if (element.compareDocumentPosition) return (element.compareDocumentPosition(ancestor) & 8) === 8; if (ancestor.contains) return ancestor.contains(element) && ancestor !== element; while (element = element.parentNode) if (element == ancestor) return true; return false; }, scrollTo: function(element) { element = $(element); var pos = Element.cumulativeOffset(element); window.scrollTo(pos[0], pos[1]); return element; }, getStyle: function(element, style) { element = $(element); style = style == 'float' ? 'cssFloat' : style.camelize(); var value = element.style[style]; if (!value || value == 'auto') { var css = document.defaultView.getComputedStyle(element, null); value = css ? css[style] : null; } if (style == 'opacity') return value ? parseFloat(value) : 1.0; return value == 'auto' ? null : value; }, getOpacity: function(element) { return $(element).getStyle('opacity'); }, setStyle: function(element, styles) { element = $(element); var elementStyle = element.style, match; if (Object.isString(styles)) { element.style.cssText += ';' + styles; return styles.include('opacity') ? element.setOpacity(styles.match(/opacity:\s*(\d?\.?\d*)/)[1]) : element; } for (var property in styles) if (property == 'opacity') element.setOpacity(styles[property]); else elementStyle[(property == 'float' || property == 'cssFloat') ? (Object.isUndefined(elementStyle.styleFloat) ? 'cssFloat' : 'styleFloat') : property] = styles[property]; return element; }, setOpacity: function(element, value) { element = $(element); element.style.opacity = (value == 1 || value === '') ? '' : (value < 0.00001) ? 0 : value; return element; }, makePositioned: function(element) { element = $(element); var pos = Element.getStyle(element, 'position'); if (pos == 'static' || !pos) { element._madePositioned = true; element.style.position = 'relative'; if (Prototype.Browser.Opera) { element.style.top = 0; element.style.left = 0; } } return element; }, undoPositioned: function(element) { element = $(element); if (element._madePositioned) { element._madePositioned = undefined; element.style.position = element.style.top = element.style.left = element.style.bottom = element.style.right = ''; } return element; }, makeClipping: function(element) { element = $(element); if (element._overflow) return element; element._overflow = Element.getStyle(element, 'overflow') || 'auto'; if (element._overflow !== 'hidden') element.style.overflow = 'hidden'; return element; }, undoClipping: function(element) { element = $(element); if (!element._overflow) return element; element.style.overflow = element._overflow == 'auto' ? '' : element._overflow; element._overflow = null; return element; }, clonePosition: function(element, source) { var options = Object.extend({ setLeft: true, setTop: true, setWidth: true, setHeight: true, offsetTop: 0, offsetLeft: 0 }, arguments[2] || { }); source = $(source); var p = Element.viewportOffset(source), delta = [0, 0], parent = null; element = $(element); if (Element.getStyle(element, 'position') == 'absolute') { parent = Element.getOffsetParent(element); delta = Element.viewportOffset(parent); } if (parent == document.body) { delta[0] -= document.body.offsetLeft; delta[1] -= document.body.offsetTop; } if (options.setLeft) element.style.left = (p[0] - delta[0] + options.offsetLeft) + 'px'; if (options.setTop) element.style.top = (p[1] - delta[1] + options.offsetTop) + 'px'; if (options.setWidth) element.style.width = source.offsetWidth + 'px'; if (options.setHeight) element.style.height = source.offsetHeight + 'px'; return element; } }; Object.extend(Element.Methods, { getElementsBySelector: Element.Methods.select, childElements: Element.Methods.immediateDescendants }); Element._attributeTranslations = { write: { names: { className: 'class', htmlFor: 'for' }, values: { } } }; if (Prototype.Browser.Opera) { Element.Methods.getStyle = Element.Methods.getStyle.wrap( function(proceed, element, style) { switch (style) { case 'height': case 'width': if (!Element.visible(element)) return null; var dim = parseInt(proceed(element, style), 10); if (dim !== element['offset' + style.capitalize()]) return dim + 'px'; var properties; if (style === 'height') { properties = ['border-top-width', 'padding-top', 'padding-bottom', 'border-bottom-width']; } else { properties = ['border-left-width', 'padding-left', 'padding-right', 'border-right-width']; } return properties.inject(dim, function(memo, property) { var val = proceed(element, property); return val === null ? memo : memo - parseInt(val, 10); }) + 'px'; default: return proceed(element, style); } } ); Element.Methods.readAttribute = Element.Methods.readAttribute.wrap( function(proceed, element, attribute) { if (attribute === 'title') return element.title; return proceed(element, attribute); } ); } else if (Prototype.Browser.IE) { Element.Methods.getStyle = function(element, style) { element = $(element); style = (style == 'float' || style == 'cssFloat') ? 'styleFloat' : style.camelize(); var value = element.style[style]; if (!value && element.currentStyle) value = element.currentStyle[style]; if (style == 'opacity') { if (value = (element.getStyle('filter') || '').match(/alpha\(opacity=(.*)\)/)) if (value[1]) return parseFloat(value[1]) / 100; return 1.0; } if (value == 'auto') { if ((style == 'width' || style == 'height') && (element.getStyle('display') != 'none')) return element['offset' + style.capitalize()] + 'px'; return null; } return value; }; Element.Methods.setOpacity = function(element, value) { function stripAlpha(filter){ return filter.replace(/alpha\([^\)]*\)/gi,''); } element = $(element); var currentStyle = element.currentStyle; if ((currentStyle && !currentStyle.hasLayout) || (!currentStyle && element.style.zoom == 'normal')) element.style.zoom = 1; var filter = element.getStyle('filter'), style = element.style; if (value == 1 || value === '') { (filter = stripAlpha(filter)) ? style.filter = filter : style.removeAttribute('filter'); return element; } else if (value < 0.00001) value = 0; style.filter = stripAlpha(filter) + 'alpha(opacity=' + (value * 100) + ')'; return element; }; Element._attributeTranslations = (function(){ var classProp = 'className', forProp = 'for', el = document.createElement('div'); el.setAttribute(classProp, 'x'); if (el.className !== 'x') { el.setAttribute('class', 'x'); if (el.className === 'x') { classProp = 'class'; } } el = null; el = document.createElement('label'); el.setAttribute(forProp, 'x'); if (el.htmlFor !== 'x') { el.setAttribute('htmlFor', 'x'); if (el.htmlFor === 'x') { forProp = 'htmlFor'; } } el = null; return { read: { names: { 'class': classProp, 'className': classProp, 'for': forProp, 'htmlFor': forProp }, values: { _getAttr: function(element, attribute) { return element.getAttribute(attribute); }, _getAttr2: function(element, attribute) { return element.getAttribute(attribute, 2); }, _getAttrNode: function(element, attribute) { var node = element.getAttributeNode(attribute); return node ? node.value : ""; }, _getEv: (function(){ var el = document.createElement('div'), f; el.onclick = Prototype.emptyFunction; var value = el.getAttribute('onclick'); if (String(value).indexOf('{') > -1) { f = function(element, attribute) { attribute = element.getAttribute(attribute); if (!attribute) return null; attribute = attribute.toString(); attribute = attribute.split('{')[1]; attribute = attribute.split('}')[0]; return attribute.strip(); }; } else if (value === '') { f = function(element, attribute) { attribute = element.getAttribute(attribute); if (!attribute) return null; return attribute.strip(); }; } el = null; return f; })(), _flag: function(element, attribute) { return $(element).hasAttribute(attribute) ? attribute : null; }, style: function(element) { return element.style.cssText.toLowerCase(); }, title: function(element) { return element.title; } } } } })(); Element._attributeTranslations.write = { names: Object.extend({ cellpadding: 'cellPadding', cellspacing: 'cellSpacing' }, Element._attributeTranslations.read.names), values: { checked: function(element, value) { element.checked = !!value; }, style: function(element, value) { element.style.cssText = value ? value : ''; } } }; Element._attributeTranslations.has = {}; $w('colSpan rowSpan vAlign dateTime accessKey tabIndex ' + 'encType maxLength readOnly longDesc frameBorder').each(function(attr) { Element._attributeTranslations.write.names[attr.toLowerCase()] = attr; Element._attributeTranslations.has[attr.toLowerCase()] = attr; }); (function(v) { Object.extend(v, { href: v._getAttr2, src: v._getAttr2, type: v._getAttr, action: v._getAttrNode, disabled: v._flag, checked: v._flag, readonly: v._flag, multiple: v._flag, onload: v._getEv, onunload: v._getEv, onclick: v._getEv, ondblclick: v._getEv, onmousedown: v._getEv, onmouseup: v._getEv, onmouseover: v._getEv, onmousemove: v._getEv, onmouseout: v._getEv, onfocus: v._getEv, onblur: v._getEv, onkeypress: v._getEv, onkeydown: v._getEv, onkeyup: v._getEv, onsubmit: v._getEv, onreset: v._getEv, onselect: v._getEv, onchange: v._getEv }); })(Element._attributeTranslations.read.values); if (Prototype.BrowserFeatures.ElementExtensions) { (function() { function _descendants(element) { var nodes = element.getElementsByTagName('*'), results = []; for (var i = 0, node; node = nodes[i]; i++) if (node.tagName !== "!") // Filter out comment nodes. results.push(node); return results; } Element.Methods.down = function(element, expression, index) { element = $(element); if (arguments.length == 1) return element.firstDescendant(); return Object.isNumber(expression) ? _descendants(element)[expression] : Element.select(element, expression)[index || 0]; } })(); } } else if (Prototype.Browser.Gecko && /rv:1\.8\.0/.test(navigator.userAgent)) { Element.Methods.setOpacity = function(element, value) { element = $(element); element.style.opacity = (value == 1) ? 0.999999 : (value === '') ? '' : (value < 0.00001) ? 0 : value; return element; }; } else if (Prototype.Browser.WebKit) { Element.Methods.setOpacity = function(element, value) { element = $(element); element.style.opacity = (value == 1 || value === '') ? '' : (value < 0.00001) ? 0 : value; if (value == 1) if (element.tagName.toUpperCase() == 'IMG' && element.width) { element.width++; element.width--; } else try { var n = document.createTextNode(' '); element.appendChild(n); element.removeChild(n); } catch (e) { } return element; }; } if ('outerHTML' in document.documentElement) { Element.Methods.replace = function(element, content) { element = $(element); if (content && content.toElement) content = content.toElement(); if (Object.isElement(content)) { element.parentNode.replaceChild(content, element); return element; } content = Object.toHTML(content); var parent = element.parentNode, tagName = parent.tagName.toUpperCase(); if (Element._insertionTranslations.tags[tagName]) { var nextSibling = element.next(), fragments = Element._getContentFromAnonymousElement(tagName, content.stripScripts()); parent.removeChild(element); if (nextSibling) fragments.each(function(node) { parent.insertBefore(node, nextSibling) }); else fragments.each(function(node) { parent.appendChild(node) }); } else element.outerHTML = content.stripScripts(); content.evalScripts.bind(content).defer(); return element; }; } Element._returnOffset = function(l, t) { var result = [l, t]; result.left = l; result.top = t; return result; }; Element._getContentFromAnonymousElement = function(tagName, html, force) { var div = new Element('div'), t = Element._insertionTranslations.tags[tagName]; var workaround = false; if (t) workaround = true; else if (force) { workaround = true; t = ['', '', 0]; } if (workaround) { div.innerHTML = ' ' + t[0] + html + t[1]; div.removeChild(div.firstChild); for (var i = t[2]; i--; ) { div = div.firstChild; } } else { div.innerHTML = html; } return $A(div.childNodes); }; Element._insertionTranslations = { before: function(element, node) { element.parentNode.insertBefore(node, element); }, top: function(element, node) { element.insertBefore(node, element.firstChild); }, bottom: function(element, node) { element.appendChild(node); }, after: function(element, node) { element.parentNode.insertBefore(node, element.nextSibling); }, tags: { TABLE: ['', '
', 1], TBODY: ['', '
', 2], TR: ['', '
', 3], TD: ['
', '
', 4], SELECT: ['', 1] } }; (function() { var tags = Element._insertionTranslations.tags; Object.extend(tags, { THEAD: tags.TBODY, TFOOT: tags.TBODY, TH: tags.TD }); })(); Element.Methods.Simulated = { hasAttribute: function(element, attribute) { attribute = Element._attributeTranslations.has[attribute] || attribute; var node = $(element).getAttributeNode(attribute); return !!(node && node.specified); } }; Element.Methods.ByTag = { }; Object.extend(Element, Element.Methods); (function(div) { if (!Prototype.BrowserFeatures.ElementExtensions && div['__proto__']) { window.HTMLElement = { }; window.HTMLElement.prototype = div['__proto__']; Prototype.BrowserFeatures.ElementExtensions = true; } div = null; })(document.createElement('div')); Element.extend = (function() { function checkDeficiency(tagName) { if (typeof window.Element != 'undefined') { var proto = window.Element.prototype; if (proto) { var id = '_' + (Math.random()+'').slice(2), el = document.createElement(tagName); proto[id] = 'x'; var isBuggy = (el[id] !== 'x'); delete proto[id]; el = null; return isBuggy; } } return false; } function extendElementWith(element, methods) { for (var property in methods) { var value = methods[property]; if (Object.isFunction(value) && !(property in element)) element[property] = value.methodize(); } } var HTMLOBJECTELEMENT_PROTOTYPE_BUGGY = checkDeficiency('object'); if (Prototype.BrowserFeatures.SpecificElementExtensions) { if (HTMLOBJECTELEMENT_PROTOTYPE_BUGGY) { return function(element) { if (element && typeof element._extendedByPrototype == 'undefined') { var t = element.tagName; if (t && (/^(?:object|applet|embed)$/i.test(t))) { extendElementWith(element, Element.Methods); extendElementWith(element, Element.Methods.Simulated); extendElementWith(element, Element.Methods.ByTag[t.toUpperCase()]); } } return element; } } return Prototype.K; } var Methods = { }, ByTag = Element.Methods.ByTag; var extend = Object.extend(function(element) { if (!element || typeof element._extendedByPrototype != 'undefined' || element.nodeType != 1 || element == window) return element; var methods = Object.clone(Methods), tagName = element.tagName.toUpperCase(); if (ByTag[tagName]) Object.extend(methods, ByTag[tagName]); extendElementWith(element, methods); element._extendedByPrototype = Prototype.emptyFunction; return element; }, { refresh: function() { if (!Prototype.BrowserFeatures.ElementExtensions) { Object.extend(Methods, Element.Methods); Object.extend(Methods, Element.Methods.Simulated); } } }); extend.refresh(); return extend; })(); if (document.documentElement.hasAttribute) { Element.hasAttribute = function(element, attribute) { return element.hasAttribute(attribute); }; } else { Element.hasAttribute = Element.Methods.Simulated.hasAttribute; } Element.addMethods = function(methods) { var F = Prototype.BrowserFeatures, T = Element.Methods.ByTag; if (!methods) { Object.extend(Form, Form.Methods); Object.extend(Form.Element, Form.Element.Methods); Object.extend(Element.Methods.ByTag, { "FORM": Object.clone(Form.Methods), "INPUT": Object.clone(Form.Element.Methods), "SELECT": Object.clone(Form.Element.Methods), "TEXTAREA": Object.clone(Form.Element.Methods), "BUTTON": Object.clone(Form.Element.Methods) }); } if (arguments.length == 2) { var tagName = methods; methods = arguments[1]; } if (!tagName) Object.extend(Element.Methods, methods || { }); else { if (Object.isArray(tagName)) tagName.each(extend); else extend(tagName); } function extend(tagName) { tagName = tagName.toUpperCase(); if (!Element.Methods.ByTag[tagName]) Element.Methods.ByTag[tagName] = { }; Object.extend(Element.Methods.ByTag[tagName], methods); } function copy(methods, destination, onlyIfAbsent) { onlyIfAbsent = onlyIfAbsent || false; for (var property in methods) { var value = methods[property]; if (!Object.isFunction(value)) continue; if (!onlyIfAbsent || !(property in destination)) destination[property] = value.methodize(); } } function findDOMClass(tagName) { var klass; var trans = { "OPTGROUP": "OptGroup", "TEXTAREA": "TextArea", "P": "Paragraph", "FIELDSET": "FieldSet", "UL": "UList", "OL": "OList", "DL": "DList", "DIR": "Directory", "H1": "Heading", "H2": "Heading", "H3": "Heading", "H4": "Heading", "H5": "Heading", "H6": "Heading", "Q": "Quote", "INS": "Mod", "DEL": "Mod", "A": "Anchor", "IMG": "Image", "CAPTION": "TableCaption", "COL": "TableCol", "COLGROUP": "TableCol", "THEAD": "TableSection", "TFOOT": "TableSection", "TBODY": "TableSection", "TR": "TableRow", "TH": "TableCell", "TD": "TableCell", "FRAMESET": "FrameSet", "IFRAME": "IFrame" }; if (trans[tagName]) klass = 'HTML' + trans[tagName] + 'Element'; if (window[klass]) return window[klass]; klass = 'HTML' + tagName + 'Element'; if (window[klass]) return window[klass]; klass = 'HTML' + tagName.capitalize() + 'Element'; if (window[klass]) return window[klass]; var element = document.createElement(tagName), proto = element['__proto__'] || element.constructor.prototype; element = null; return proto; } var elementPrototype = window.HTMLElement ? HTMLElement.prototype : Element.prototype; if (F.ElementExtensions) { copy(Element.Methods, elementPrototype); copy(Element.Methods.Simulated, elementPrototype, true); } if (F.SpecificElementExtensions) { for (var tag in Element.Methods.ByTag) { var klass = findDOMClass(tag); if (Object.isUndefined(klass)) continue; copy(T[tag], klass.prototype); } } Object.extend(Element, Element.Methods); delete Element.ByTag; if (Element.extend.refresh) Element.extend.refresh(); Element.cache = { }; }; document.viewport = { getDimensions: function() { return { width: this.getWidth(), height: this.getHeight() }; }, getScrollOffsets: function() { return Element._returnOffset( window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft, window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop); } }; (function(viewport) { var B = Prototype.Browser, doc = document, element, property = {}; function getRootElement() { if (B.WebKit && !doc.evaluate) return document; if (B.Opera && window.parseFloat(window.opera.version()) < 9.5) return document.body; return document.documentElement; } function define(D) { if (!element) element = getRootElement(); property[D] = 'client' + D; viewport['get' + D] = function() { return element[property[D]] }; return viewport['get' + D](); } viewport.getWidth = define.curry('Width'); viewport.getHeight = define.curry('Height'); })(document.viewport); Element.Storage = { UID: 1 }; Element.addMethods({ getStorage: function(element) { if (!(element = $(element))) return; var uid; if (element === window) { uid = 0; } else { if (typeof element._prototypeUID === "undefined") element._prototypeUID = Element.Storage.UID++; uid = element._prototypeUID; } if (!Element.Storage[uid]) Element.Storage[uid] = $H(); return Element.Storage[uid]; }, store: function(element, key, value) { if (!(element = $(element))) return; if (arguments.length === 2) { Element.getStorage(element).update(key); } else { Element.getStorage(element).set(key, value); } return element; }, retrieve: function(element, key, defaultValue) { if (!(element = $(element))) return; var hash = Element.getStorage(element), value = hash.get(key); if (Object.isUndefined(value)) { hash.set(key, defaultValue); value = defaultValue; } return value; }, clone: function(element, deep) { if (!(element = $(element))) return; var clone = element.cloneNode(deep); clone._prototypeUID = void 0; if (deep) { var descendants = Element.select(clone, '*'), i = descendants.length; while (i--) { descendants[i]._prototypeUID = void 0; } } return Element.extend(clone); }, purge: function(element) { if (!(element = $(element))) return; var purgeElement = Element._purgeElement; purgeElement(element); var descendants = element.getElementsByTagName('*'), i = descendants.length; while (i--) purgeElement(descendants[i]); return null; } }); (function() { function toDecimal(pctString) { var match = pctString.match(/^(\d+)%?$/i); if (!match) return null; return (Number(match[1]) / 100); } function getPixelValue(value, property, context) { var element = null; if (Object.isElement(value)) { element = value; value = element.getStyle(property); } if (value === null) { return null; } if ((/^(?:-)?\d+(\.\d+)?(px)?$/i).test(value)) { return window.parseFloat(value); } var isPercentage = value.include('%'), isViewport = (context === document.viewport); if (/\d/.test(value) && element && element.runtimeStyle && !(isPercentage && isViewport)) { var style = element.style.left, rStyle = element.runtimeStyle.left; element.runtimeStyle.left = element.currentStyle.left; element.style.left = value || 0; value = element.style.pixelLeft; element.style.left = style; element.runtimeStyle.left = rStyle; return value; } if (element && isPercentage) { context = context || element.parentNode; var decimal = toDecimal(value); var whole = null; var position = element.getStyle('position'); var isHorizontal = property.include('left') || property.include('right') || property.include('width'); var isVertical = property.include('top') || property.include('bottom') || property.include('height'); if (context === document.viewport) { if (isHorizontal) { whole = document.viewport.getWidth(); } else if (isVertical) { whole = document.viewport.getHeight(); } } else { if (isHorizontal) { whole = $(context).measure('width'); } else if (isVertical) { whole = $(context).measure('height'); } } return (whole === null) ? 0 : whole * decimal; } return 0; } function toCSSPixels(number) { if (Object.isString(number) && number.endsWith('px')) { return number; } return number + 'px'; } function isDisplayed(element) { var originalElement = element; while (element && element.parentNode) { var display = element.getStyle('display'); if (display === 'none') { return false; } element = $(element.parentNode); } return true; } var hasLayout = Prototype.K; if ('currentStyle' in document.documentElement) { hasLayout = function(element) { if (!element.currentStyle.hasLayout) { element.style.zoom = 1; } return element; }; } function cssNameFor(key) { if (key.include('border')) key = key + '-width'; return key.camelize(); } Element.Layout = Class.create(Hash, { initialize: function($super, element, preCompute) { $super(); this.element = $(element); Element.Layout.PROPERTIES.each( function(property) { this._set(property, null); }, this); if (preCompute) { this._preComputing = true; this._begin(); Element.Layout.PROPERTIES.each( this._compute, this ); this._end(); this._preComputing = false; } }, _set: function(property, value) { return Hash.prototype.set.call(this, property, value); }, set: function(property, value) { throw "Properties of Element.Layout are read-only."; }, get: function($super, property) { var value = $super(property); return value === null ? this._compute(property) : value; }, _begin: function() { if (this._prepared) return; var element = this.element; if (isDisplayed(element)) { this._prepared = true; return; } var originalStyles = { position: element.style.position || '', width: element.style.width || '', visibility: element.style.visibility || '', display: element.style.display || '' }; element.store('prototype_original_styles', originalStyles); var position = element.getStyle('position'), width = element.getStyle('width'); if (width === "0px" || width === null) { element.style.display = 'block'; width = element.getStyle('width'); } var context = (position === 'fixed') ? document.viewport : element.parentNode; element.setStyle({ position: 'absolute', visibility: 'hidden', display: 'block' }); var positionedWidth = element.getStyle('width'); var newWidth; if (width && (positionedWidth === width)) { newWidth = getPixelValue(element, 'width', context); } else if (position === 'absolute' || position === 'fixed') { newWidth = getPixelValue(element, 'width', context); } else { var parent = element.parentNode, pLayout = $(parent).getLayout(); newWidth = pLayout.get('width') - this.get('margin-left') - this.get('border-left') - this.get('padding-left') - this.get('padding-right') - this.get('border-right') - this.get('margin-right'); } element.setStyle({ width: newWidth + 'px' }); this._prepared = true; }, _end: function() { var element = this.element; var originalStyles = element.retrieve('prototype_original_styles'); element.store('prototype_original_styles', null); element.setStyle(originalStyles); this._prepared = false; }, _compute: function(property) { var COMPUTATIONS = Element.Layout.COMPUTATIONS; if (!(property in COMPUTATIONS)) { throw "Property not found."; } return this._set(property, COMPUTATIONS[property].call(this, this.element)); }, toObject: function() { var args = $A(arguments); var keys = (args.length === 0) ? Element.Layout.PROPERTIES : args.join(' ').split(' '); var obj = {}; keys.each( function(key) { if (!Element.Layout.PROPERTIES.include(key)) return; var value = this.get(key); if (value != null) obj[key] = value; }, this); return obj; }, toHash: function() { var obj = this.toObject.apply(this, arguments); return new Hash(obj); }, toCSS: function() { var args = $A(arguments); var keys = (args.length === 0) ? Element.Layout.PROPERTIES : args.join(' ').split(' '); var css = {}; keys.each( function(key) { if (!Element.Layout.PROPERTIES.include(key)) return; if (Element.Layout.COMPOSITE_PROPERTIES.include(key)) return; var value = this.get(key); if (value != null) css[cssNameFor(key)] = value + 'px'; }, this); return css; }, inspect: function() { return "#"; } }); Object.extend(Element.Layout, { PROPERTIES: $w('height width top left right bottom border-left border-right border-top border-bottom padding-left padding-right padding-top padding-bottom margin-top margin-bottom margin-left margin-right padding-box-width padding-box-height border-box-width border-box-height margin-box-width margin-box-height'), COMPOSITE_PROPERTIES: $w('padding-box-width padding-box-height margin-box-width margin-box-height border-box-width border-box-height'), COMPUTATIONS: { 'height': function(element) { if (!this._preComputing) this._begin(); var bHeight = this.get('border-box-height'); if (bHeight <= 0) { if (!this._preComputing) this._end(); return 0; } var bTop = this.get('border-top'), bBottom = this.get('border-bottom'); var pTop = this.get('padding-top'), pBottom = this.get('padding-bottom'); if (!this._preComputing) this._end(); return bHeight - bTop - bBottom - pTop - pBottom; }, 'width': function(element) { if (!this._preComputing) this._begin(); var bWidth = this.get('border-box-width'); if (bWidth <= 0) { if (!this._preComputing) this._end(); return 0; } var bLeft = this.get('border-left'), bRight = this.get('border-right'); var pLeft = this.get('padding-left'), pRight = this.get('padding-right'); if (!this._preComputing) this._end(); return bWidth - bLeft - bRight - pLeft - pRight; }, 'padding-box-height': function(element) { var height = this.get('height'), pTop = this.get('padding-top'), pBottom = this.get('padding-bottom'); return height + pTop + pBottom; }, 'padding-box-width': function(element) { var width = this.get('width'), pLeft = this.get('padding-left'), pRight = this.get('padding-right'); return width + pLeft + pRight; }, 'border-box-height': function(element) { if (!this._preComputing) this._begin(); var height = element.offsetHeight; if (!this._preComputing) this._end(); return height; }, 'border-box-width': function(element) { if (!this._preComputing) this._begin(); var width = element.offsetWidth; if (!this._preComputing) this._end(); return width; }, 'margin-box-height': function(element) { var bHeight = this.get('border-box-height'), mTop = this.get('margin-top'), mBottom = this.get('margin-bottom'); if (bHeight <= 0) return 0; return bHeight + mTop + mBottom; }, 'margin-box-width': function(element) { var bWidth = this.get('border-box-width'), mLeft = this.get('margin-left'), mRight = this.get('margin-right'); if (bWidth <= 0) return 0; return bWidth + mLeft + mRight; }, 'top': function(element) { var offset = element.positionedOffset(); return offset.top; }, 'bottom': function(element) { var offset = element.positionedOffset(), parent = element.getOffsetParent(), pHeight = parent.measure('height'); var mHeight = this.get('border-box-height'); return pHeight - mHeight - offset.top; }, 'left': function(element) { var offset = element.positionedOffset(); return offset.left; }, 'right': function(element) { var offset = element.positionedOffset(), parent = element.getOffsetParent(), pWidth = parent.measure('width'); var mWidth = this.get('border-box-width'); return pWidth - mWidth - offset.left; }, 'padding-top': function(element) { return getPixelValue(element, 'paddingTop'); }, 'padding-bottom': function(element) { return getPixelValue(element, 'paddingBottom'); }, 'padding-left': function(element) { return getPixelValue(element, 'paddingLeft'); }, 'padding-right': function(element) { return getPixelValue(element, 'paddingRight'); }, 'border-top': function(element) { return getPixelValue(element, 'borderTopWidth'); }, 'border-bottom': function(element) { return getPixelValue(element, 'borderBottomWidth'); }, 'border-left': function(element) { return getPixelValue(element, 'borderLeftWidth'); }, 'border-right': function(element) { return getPixelValue(element, 'borderRightWidth'); }, 'margin-top': function(element) { return getPixelValue(element, 'marginTop'); }, 'margin-bottom': function(element) { return getPixelValue(element, 'marginBottom'); }, 'margin-left': function(element) { return getPixelValue(element, 'marginLeft'); }, 'margin-right': function(element) { return getPixelValue(element, 'marginRight'); } } }); if ('getBoundingClientRect' in document.documentElement) { Object.extend(Element.Layout.COMPUTATIONS, { 'right': function(element) { var parent = hasLayout(element.getOffsetParent()); var rect = element.getBoundingClientRect(), pRect = parent.getBoundingClientRect(); return (pRect.right - rect.right).round(); }, 'bottom': function(element) { var parent = hasLayout(element.getOffsetParent()); var rect = element.getBoundingClientRect(), pRect = parent.getBoundingClientRect(); return (pRect.bottom - rect.bottom).round(); } }); } Element.Offset = Class.create({ initialize: function(left, top) { this.left = left.round(); this.top = top.round(); this[0] = this.left; this[1] = this.top; }, relativeTo: function(offset) { return new Element.Offset( this.left - offset.left, this.top - offset.top ); }, inspect: function() { return "#".interpolate(this); }, toString: function() { return "[#{left}, #{top}]".interpolate(this); }, toArray: function() { return [this.left, this.top]; } }); function getLayout(element, preCompute) { return new Element.Layout(element, preCompute); } function measure(element, property) { return $(element).getLayout().get(property); } function getDimensions(element) { element = $(element); var display = Element.getStyle(element, 'display'); if (display && display !== 'none') { return { width: element.offsetWidth, height: element.offsetHeight }; } var style = element.style; var originalStyles = { visibility: style.visibility, position: style.position, display: style.display }; var newStyles = { visibility: 'hidden', display: 'block' }; if (originalStyles.position !== 'fixed') newStyles.position = 'absolute'; Element.setStyle(element, newStyles); var dimensions = { width: element.offsetWidth, height: element.offsetHeight }; Element.setStyle(element, originalStyles); return dimensions; } function getOffsetParent(element) { element = $(element); if (isDocument(element) || isDetached(element) || isBody(element) || isHtml(element)) return $(document.body); var isInline = (Element.getStyle(element, 'display') === 'inline'); if (!isInline && element.offsetParent) return $(element.offsetParent); while ((element = element.parentNode) && element !== document.body) { if (Element.getStyle(element, 'position') !== 'static') { return isHtml(element) ? $(document.body) : $(element); } } return $(document.body); } function cumulativeOffset(element) { element = $(element); var valueT = 0, valueL = 0; if (element.parentNode) { do { valueT += element.offsetTop || 0; valueL += element.offsetLeft || 0; element = element.offsetParent; } while (element); } return new Element.Offset(valueL, valueT); } function positionedOffset(element) { element = $(element); var layout = element.getLayout(); var valueT = 0, valueL = 0; do { valueT += element.offsetTop || 0; valueL += element.offsetLeft || 0; element = element.offsetParent; if (element) { if (isBody(element)) break; var p = Element.getStyle(element, 'position'); if (p !== 'static') break; } } while (element); valueL -= layout.get('margin-top'); valueT -= layout.get('margin-left'); return new Element.Offset(valueL, valueT); } function cumulativeScrollOffset(element) { var valueT = 0, valueL = 0; do { valueT += element.scrollTop || 0; valueL += element.scrollLeft || 0; element = element.parentNode; } while (element); return new Element.Offset(valueL, valueT); } function viewportOffset(forElement) { element = $(element); var valueT = 0, valueL = 0, docBody = document.body; var element = forElement; do { valueT += element.offsetTop || 0; valueL += element.offsetLeft || 0; if (element.offsetParent == docBody && Element.getStyle(element, 'position') == 'absolute') break; } while (element = element.offsetParent); element = forElement; do { if (element != docBody) { valueT -= element.scrollTop || 0; valueL -= element.scrollLeft || 0; } } while (element = element.parentNode); return new Element.Offset(valueL, valueT); } function absolutize(element) { element = $(element); if (Element.getStyle(element, 'position') === 'absolute') { return element; } var offsetParent = getOffsetParent(element); var eOffset = element.viewportOffset(), pOffset = offsetParent.viewportOffset(); var offset = eOffset.relativeTo(pOffset); var layout = element.getLayout(); element.store('prototype_absolutize_original_styles', { left: element.getStyle('left'), top: element.getStyle('top'), width: element.getStyle('width'), height: element.getStyle('height') }); element.setStyle({ position: 'absolute', top: offset.top + 'px', left: offset.left + 'px', width: layout.get('width') + 'px', height: layout.get('height') + 'px' }); return element; } function relativize(element) { element = $(element); if (Element.getStyle(element, 'position') === 'relative') { return element; } var originalStyles = element.retrieve('prototype_absolutize_original_styles'); if (originalStyles) element.setStyle(originalStyles); return element; } if (Prototype.Browser.IE) { getOffsetParent = getOffsetParent.wrap( function(proceed, element) { element = $(element); if (isDocument(element) || isDetached(element) || isBody(element) || isHtml(element)) return $(document.body); var position = element.getStyle('position'); if (position !== 'static') return proceed(element); element.setStyle({ position: 'relative' }); var value = proceed(element); element.setStyle({ position: position }); return value; } ); positionedOffset = positionedOffset.wrap(function(proceed, element) { element = $(element); if (!element.parentNode) return new Element.Offset(0, 0); var position = element.getStyle('position'); if (position !== 'static') return proceed(element); var offsetParent = element.getOffsetParent(); if (offsetParent && offsetParent.getStyle('position') === 'fixed') hasLayout(offsetParent); element.setStyle({ position: 'relative' }); var value = proceed(element); element.setStyle({ position: position }); return value; }); } else if (Prototype.Browser.Webkit) { cumulativeOffset = function(element) { element = $(element); var valueT = 0, valueL = 0; do { valueT += element.offsetTop || 0; valueL += element.offsetLeft || 0; if (element.offsetParent == document.body) if (Element.getStyle(element, 'position') == 'absolute') break; element = element.offsetParent; } while (element); return new Element.Offset(valueL, valueT); }; } Element.addMethods({ getLayout: getLayout, measure: measure, getDimensions: getDimensions, getOffsetParent: getOffsetParent, cumulativeOffset: cumulativeOffset, positionedOffset: positionedOffset, cumulativeScrollOffset: cumulativeScrollOffset, viewportOffset: viewportOffset, absolutize: absolutize, relativize: relativize }); function isBody(element) { return element.nodeName.toUpperCase() === 'BODY'; } function isHtml(element) { return element.nodeName.toUpperCase() === 'HTML'; } function isDocument(element) { return element.nodeType === Node.DOCUMENT_NODE; } function isDetached(element) { return element !== document.body && !Element.descendantOf(element, document.body); } if ('getBoundingClientRect' in document.documentElement) { Element.addMethods({ viewportOffset: function(element) { element = $(element); if (isDetached(element)) return new Element.Offset(0, 0); var rect = element.getBoundingClientRect(), docEl = document.documentElement; return new Element.Offset(rect.left - docEl.clientLeft, rect.top - docEl.clientTop); } }); } })(); window.$$ = function() { var expression = $A(arguments).join(', '); return Prototype.Selector.select(expression, document); }; Prototype.Selector = (function() { function select() { throw new Error('Method "Prototype.Selector.select" must be defined.'); } function match() { throw new Error('Method "Prototype.Selector.match" must be defined.'); } function find(elements, expression, index) { index = index || 0; var match = Prototype.Selector.match, length = elements.length, matchIndex = 0, i; for (i = 0; i < length; i++) { if (match(elements[i], expression) && index == matchIndex++) { return Element.extend(elements[i]); } } } function extendElements(elements) { for (var i = 0, length = elements.length; i < length; i++) { Element.extend(elements[i]); } return elements; } var K = Prototype.K; return { select: select, match: match, find: find, extendElements: (Element.extend === K) ? K : extendElements, extendElement: Element.extend }; })(); /*! * Sizzle CSS Selector Engine - v1.0 * Copyright 2009, The Dojo Foundation * Released under the MIT, BSD, and GPL Licenses. * More information: http://sizzlejs.com/ */ (function(){ var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g, done = 0, toString = Object.prototype.toString, hasDuplicate = false, baseHasDuplicate = true; [0, 0].sort(function(){ baseHasDuplicate = false; return 0; }); var Sizzle = function(selector, context, results, seed) { results = results || []; var origContext = context = context || document; if ( context.nodeType !== 1 && context.nodeType !== 9 ) { return []; } if ( !selector || typeof selector !== "string" ) { return results; } var parts = [], m, set, checkSet, check, mode, extra, prune = true, contextXML = isXML(context), soFar = selector; while ( (chunker.exec(""), m = chunker.exec(soFar)) !== null ) { soFar = m[3]; parts.push( m[1] ); if ( m[2] ) { extra = m[3]; break; } } if ( parts.length > 1 && origPOS.exec( selector ) ) { if ( parts.length === 2 && Expr.relative[ parts[0] ] ) { set = posProcess( parts[0] + parts[1], context ); } else { set = Expr.relative[ parts[0] ] ? [ context ] : Sizzle( parts.shift(), context ); while ( parts.length ) { selector = parts.shift(); if ( Expr.relative[ selector ] ) selector += parts.shift(); set = posProcess( selector, set ); } } } else { if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML && Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) { var ret = Sizzle.find( parts.shift(), context, contextXML ); context = ret.expr ? Sizzle.filter( ret.expr, ret.set )[0] : ret.set[0]; } if ( context ) { var ret = seed ? { expr: parts.pop(), set: makeArray(seed) } : Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML ); set = ret.expr ? Sizzle.filter( ret.expr, ret.set ) : ret.set; if ( parts.length > 0 ) { checkSet = makeArray(set); } else { prune = false; } while ( parts.length ) { var cur = parts.pop(), pop = cur; if ( !Expr.relative[ cur ] ) { cur = ""; } else { pop = parts.pop(); } if ( pop == null ) { pop = context; } Expr.relative[ cur ]( checkSet, pop, contextXML ); } } else { checkSet = parts = []; } } if ( !checkSet ) { checkSet = set; } if ( !checkSet ) { throw "Syntax error, unrecognized expression: " + (cur || selector); } if ( toString.call(checkSet) === "[object Array]" ) { if ( !prune ) { results.push.apply( results, checkSet ); } else if ( context && context.nodeType === 1 ) { for ( var i = 0; checkSet[i] != null; i++ ) { if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && contains(context, checkSet[i])) ) { results.push( set[i] ); } } } else { for ( var i = 0; checkSet[i] != null; i++ ) { if ( checkSet[i] && checkSet[i].nodeType === 1 ) { results.push( set[i] ); } } } } else { makeArray( checkSet, results ); } if ( extra ) { Sizzle( extra, origContext, results, seed ); Sizzle.uniqueSort( results ); } return results; }; Sizzle.uniqueSort = function(results){ if ( sortOrder ) { hasDuplicate = baseHasDuplicate; results.sort(sortOrder); if ( hasDuplicate ) { for ( var i = 1; i < results.length; i++ ) { if ( results[i] === results[i-1] ) { results.splice(i--, 1); } } } } return results; }; Sizzle.matches = function(expr, set){ return Sizzle(expr, null, null, set); }; Sizzle.find = function(expr, context, isXML){ var set, match; if ( !expr ) { return []; } for ( var i = 0, l = Expr.order.length; i < l; i++ ) { var type = Expr.order[i], match; if ( (match = Expr.leftMatch[ type ].exec( expr )) ) { var left = match[1]; match.splice(1,1); if ( left.substr( left.length - 1 ) !== "\\" ) { match[1] = (match[1] || "").replace(/\\/g, ""); set = Expr.find[ type ]( match, context, isXML ); if ( set != null ) { expr = expr.replace( Expr.match[ type ], "" ); break; } } } } if ( !set ) { set = context.getElementsByTagName("*"); } return {set: set, expr: expr}; }; Sizzle.filter = function(expr, set, inplace, not){ var old = expr, result = [], curLoop = set, match, anyFound, isXMLFilter = set && set[0] && isXML(set[0]); while ( expr && set.length ) { for ( var type in Expr.filter ) { if ( (match = Expr.match[ type ].exec( expr )) != null ) { var filter = Expr.filter[ type ], found, item; anyFound = false; if ( curLoop == result ) { result = []; } if ( Expr.preFilter[ type ] ) { match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter ); if ( !match ) { anyFound = found = true; } else if ( match === true ) { continue; } } if ( match ) { for ( var i = 0; (item = curLoop[i]) != null; i++ ) { if ( item ) { found = filter( item, match, i, curLoop ); var pass = not ^ !!found; if ( inplace && found != null ) { if ( pass ) { anyFound = true; } else { curLoop[i] = false; } } else if ( pass ) { result.push( item ); anyFound = true; } } } } if ( found !== undefined ) { if ( !inplace ) { curLoop = result; } expr = expr.replace( Expr.match[ type ], "" ); if ( !anyFound ) { return []; } break; } } } if ( expr == old ) { if ( anyFound == null ) { throw "Syntax error, unrecognized expression: " + expr; } else { break; } } old = expr; } return curLoop; }; var Expr = Sizzle.selectors = { order: [ "ID", "NAME", "TAG" ], match: { ID: /#((?:[\w\u00c0-\uFFFF-]|\\.)+)/, CLASS: /\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/, NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/, ATTR: /\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/, TAG: /^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/, CHILD: /:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/, POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/, PSEUDO: /:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/ }, leftMatch: {}, attrMap: { "class": "className", "for": "htmlFor" }, attrHandle: { href: function(elem){ return elem.getAttribute("href"); } }, relative: { "+": function(checkSet, part, isXML){ var isPartStr = typeof part === "string", isTag = isPartStr && !/\W/.test(part), isPartStrNotTag = isPartStr && !isTag; if ( isTag && !isXML ) { part = part.toUpperCase(); } for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) { if ( (elem = checkSet[i]) ) { while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {} checkSet[i] = isPartStrNotTag || elem && elem.nodeName === part ? elem || false : elem === part; } } if ( isPartStrNotTag ) { Sizzle.filter( part, checkSet, true ); } }, ">": function(checkSet, part, isXML){ var isPartStr = typeof part === "string"; if ( isPartStr && !/\W/.test(part) ) { part = isXML ? part : part.toUpperCase(); for ( var i = 0, l = checkSet.length; i < l; i++ ) { var elem = checkSet[i]; if ( elem ) { var parent = elem.parentNode; checkSet[i] = parent.nodeName === part ? parent : false; } } } else { for ( var i = 0, l = checkSet.length; i < l; i++ ) { var elem = checkSet[i]; if ( elem ) { checkSet[i] = isPartStr ? elem.parentNode : elem.parentNode === part; } } if ( isPartStr ) { Sizzle.filter( part, checkSet, true ); } } }, "": function(checkSet, part, isXML){ var doneName = done++, checkFn = dirCheck; if ( !/\W/.test(part) ) { var nodeCheck = part = isXML ? part : part.toUpperCase(); checkFn = dirNodeCheck; } checkFn("parentNode", part, doneName, checkSet, nodeCheck, isXML); }, "~": function(checkSet, part, isXML){ var doneName = done++, checkFn = dirCheck; if ( typeof part === "string" && !/\W/.test(part) ) { var nodeCheck = part = isXML ? part : part.toUpperCase(); checkFn = dirNodeCheck; } checkFn("previousSibling", part, doneName, checkSet, nodeCheck, isXML); } }, find: { ID: function(match, context, isXML){ if ( typeof context.getElementById !== "undefined" && !isXML ) { var m = context.getElementById(match[1]); return m ? [m] : []; } }, NAME: function(match, context, isXML){ if ( typeof context.getElementsByName !== "undefined" ) { var ret = [], results = context.getElementsByName(match[1]); for ( var i = 0, l = results.length; i < l; i++ ) { if ( results[i].getAttribute("name") === match[1] ) { ret.push( results[i] ); } } return ret.length === 0 ? null : ret; } }, TAG: function(match, context){ return context.getElementsByTagName(match[1]); } }, preFilter: { CLASS: function(match, curLoop, inplace, result, not, isXML){ match = " " + match[1].replace(/\\/g, "") + " "; if ( isXML ) { return match; } for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) { if ( elem ) { if ( not ^ (elem.className && (" " + elem.className + " ").indexOf(match) >= 0) ) { if ( !inplace ) result.push( elem ); } else if ( inplace ) { curLoop[i] = false; } } } return false; }, ID: function(match){ return match[1].replace(/\\/g, ""); }, TAG: function(match, curLoop){ for ( var i = 0; curLoop[i] === false; i++ ){} return curLoop[i] && isXML(curLoop[i]) ? match[1] : match[1].toUpperCase(); }, CHILD: function(match){ if ( match[1] == "nth" ) { var test = /(-?)(\d*)n((?:\+|-)?\d*)/.exec( match[2] == "even" && "2n" || match[2] == "odd" && "2n+1" || !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]); match[2] = (test[1] + (test[2] || 1)) - 0; match[3] = test[3] - 0; } match[0] = done++; return match; }, ATTR: function(match, curLoop, inplace, result, not, isXML){ var name = match[1].replace(/\\/g, ""); if ( !isXML && Expr.attrMap[name] ) { match[1] = Expr.attrMap[name]; } if ( match[2] === "~=" ) { match[4] = " " + match[4] + " "; } return match; }, PSEUDO: function(match, curLoop, inplace, result, not){ if ( match[1] === "not" ) { if ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\w/.test(match[3]) ) { match[3] = Sizzle(match[3], null, null, curLoop); } else { var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not); if ( !inplace ) { result.push.apply( result, ret ); } return false; } } else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) { return true; } return match; }, POS: function(match){ match.unshift( true ); return match; } }, filters: { enabled: function(elem){ return elem.disabled === false && elem.type !== "hidden"; }, disabled: function(elem){ return elem.disabled === true; }, checked: function(elem){ return elem.checked === true; }, selected: function(elem){ elem.parentNode.selectedIndex; return elem.selected === true; }, parent: function(elem){ return !!elem.firstChild; }, empty: function(elem){ return !elem.firstChild; }, has: function(elem, i, match){ return !!Sizzle( match[3], elem ).length; }, header: function(elem){ return /h\d/i.test( elem.nodeName ); }, text: function(elem){ return "text" === elem.type; }, radio: function(elem){ return "radio" === elem.type; }, checkbox: function(elem){ return "checkbox" === elem.type; }, file: function(elem){ return "file" === elem.type; }, password: function(elem){ return "password" === elem.type; }, submit: function(elem){ return "submit" === elem.type; }, image: function(elem){ return "image" === elem.type; }, reset: function(elem){ return "reset" === elem.type; }, button: function(elem){ return "button" === elem.type || elem.nodeName.toUpperCase() === "BUTTON"; }, input: function(elem){ return /input|select|textarea|button/i.test(elem.nodeName); } }, setFilters: { first: function(elem, i){ return i === 0; }, last: function(elem, i, match, array){ return i === array.length - 1; }, even: function(elem, i){ return i % 2 === 0; }, odd: function(elem, i){ return i % 2 === 1; }, lt: function(elem, i, match){ return i < match[3] - 0; }, gt: function(elem, i, match){ return i > match[3] - 0; }, nth: function(elem, i, match){ return match[3] - 0 == i; }, eq: function(elem, i, match){ return match[3] - 0 == i; } }, filter: { PSEUDO: function(elem, match, i, array){ var name = match[1], filter = Expr.filters[ name ]; if ( filter ) { return filter( elem, i, match, array ); } else if ( name === "contains" ) { return (elem.textContent || elem.innerText || "").indexOf(match[3]) >= 0; } else if ( name === "not" ) { var not = match[3]; for ( var i = 0, l = not.length; i < l; i++ ) { if ( not[i] === elem ) { return false; } } return true; } }, CHILD: function(elem, match){ var type = match[1], node = elem; switch (type) { case 'only': case 'first': while ( (node = node.previousSibling) ) { if ( node.nodeType === 1 ) return false; } if ( type == 'first') return true; node = elem; case 'last': while ( (node = node.nextSibling) ) { if ( node.nodeType === 1 ) return false; } return true; case 'nth': var first = match[2], last = match[3]; if ( first == 1 && last == 0 ) { return true; } var doneName = match[0], parent = elem.parentNode; if ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) { var count = 0; for ( node = parent.firstChild; node; node = node.nextSibling ) { if ( node.nodeType === 1 ) { node.nodeIndex = ++count; } } parent.sizcache = doneName; } var diff = elem.nodeIndex - last; if ( first == 0 ) { return diff == 0; } else { return ( diff % first == 0 && diff / first >= 0 ); } } }, ID: function(elem, match){ return elem.nodeType === 1 && elem.getAttribute("id") === match; }, TAG: function(elem, match){ return (match === "*" && elem.nodeType === 1) || elem.nodeName === match; }, CLASS: function(elem, match){ return (" " + (elem.className || elem.getAttribute("class")) + " ") .indexOf( match ) > -1; }, ATTR: function(elem, match){ var name = match[1], result = Expr.attrHandle[ name ] ? Expr.attrHandle[ name ]( elem ) : elem[ name ] != null ? elem[ name ] : elem.getAttribute( name ), value = result + "", type = match[2], check = match[4]; return result == null ? type === "!=" : type === "=" ? value === check : type === "*=" ? value.indexOf(check) >= 0 : type === "~=" ? (" " + value + " ").indexOf(check) >= 0 : !check ? value && result !== false : type === "!=" ? value != check : type === "^=" ? value.indexOf(check) === 0 : type === "$=" ? value.substr(value.length - check.length) === check : type === "|=" ? value === check || value.substr(0, check.length + 1) === check + "-" : false; }, POS: function(elem, match, i, array){ var name = match[2], filter = Expr.setFilters[ name ]; if ( filter ) { return filter( elem, i, match, array ); } } } }; var origPOS = Expr.match.POS; for ( var type in Expr.match ) { Expr.match[ type ] = new RegExp( Expr.match[ type ].source + /(?![^\[]*\])(?![^\(]*\))/.source ); Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source ); } var makeArray = function(array, results) { array = Array.prototype.slice.call( array, 0 ); if ( results ) { results.push.apply( results, array ); return results; } return array; }; try { Array.prototype.slice.call( document.documentElement.childNodes, 0 ); } catch(e){ makeArray = function(array, results) { var ret = results || []; if ( toString.call(array) === "[object Array]" ) { Array.prototype.push.apply( ret, array ); } else { if ( typeof array.length === "number" ) { for ( var i = 0, l = array.length; i < l; i++ ) { ret.push( array[i] ); } } else { for ( var i = 0; array[i]; i++ ) { ret.push( array[i] ); } } } return ret; }; } var sortOrder; if ( document.documentElement.compareDocumentPosition ) { sortOrder = function( a, b ) { if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) { if ( a == b ) { hasDuplicate = true; } return 0; } var ret = a.compareDocumentPosition(b) & 4 ? -1 : a === b ? 0 : 1; if ( ret === 0 ) { hasDuplicate = true; } return ret; }; } else if ( "sourceIndex" in document.documentElement ) { sortOrder = function( a, b ) { if ( !a.sourceIndex || !b.sourceIndex ) { if ( a == b ) { hasDuplicate = true; } return 0; } var ret = a.sourceIndex - b.sourceIndex; if ( ret === 0 ) { hasDuplicate = true; } return ret; }; } else if ( document.createRange ) { sortOrder = function( a, b ) { if ( !a.ownerDocument || !b.ownerDocument ) { if ( a == b ) { hasDuplicate = true; } return 0; } var aRange = a.ownerDocument.createRange(), bRange = b.ownerDocument.createRange(); aRange.setStart(a, 0); aRange.setEnd(a, 0); bRange.setStart(b, 0); bRange.setEnd(b, 0); var ret = aRange.compareBoundaryPoints(Range.START_TO_END, bRange); if ( ret === 0 ) { hasDuplicate = true; } return ret; }; } (function(){ var form = document.createElement("div"), id = "script" + (new Date).getTime(); form.innerHTML = ""; var root = document.documentElement; root.insertBefore( form, root.firstChild ); if ( !!document.getElementById( id ) ) { Expr.find.ID = function(match, context, isXML){ if ( typeof context.getElementById !== "undefined" && !isXML ) { var m = context.getElementById(match[1]); return m ? m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ? [m] : undefined : []; } }; Expr.filter.ID = function(elem, match){ var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id"); return elem.nodeType === 1 && node && node.nodeValue === match; }; } root.removeChild( form ); root = form = null; // release memory in IE })(); (function(){ var div = document.createElement("div"); div.appendChild( document.createComment("") ); if ( div.getElementsByTagName("*").length > 0 ) { Expr.find.TAG = function(match, context){ var results = context.getElementsByTagName(match[1]); if ( match[1] === "*" ) { var tmp = []; for ( var i = 0; results[i]; i++ ) { if ( results[i].nodeType === 1 ) { tmp.push( results[i] ); } } results = tmp; } return results; }; } div.innerHTML = ""; if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" && div.firstChild.getAttribute("href") !== "#" ) { Expr.attrHandle.href = function(elem){ return elem.getAttribute("href", 2); }; } div = null; // release memory in IE })(); if ( document.querySelectorAll ) (function(){ var oldSizzle = Sizzle, div = document.createElement("div"); div.innerHTML = "

"; if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) { return; } Sizzle = function(query, context, extra, seed){ context = context || document; if ( !seed && context.nodeType === 9 && !isXML(context) ) { try { return makeArray( context.querySelectorAll(query), extra ); } catch(e){} } return oldSizzle(query, context, extra, seed); }; for ( var prop in oldSizzle ) { Sizzle[ prop ] = oldSizzle[ prop ]; } div = null; // release memory in IE })(); if ( document.getElementsByClassName && document.documentElement.getElementsByClassName ) (function(){ var div = document.createElement("div"); div.innerHTML = "
"; if ( div.getElementsByClassName("e").length === 0 ) return; div.lastChild.className = "e"; if ( div.getElementsByClassName("e").length === 1 ) return; Expr.order.splice(1, 0, "CLASS"); Expr.find.CLASS = function(match, context, isXML) { if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) { return context.getElementsByClassName(match[1]); } }; div = null; // release memory in IE })(); function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { var sibDir = dir == "previousSibling" && !isXML; for ( var i = 0, l = checkSet.length; i < l; i++ ) { var elem = checkSet[i]; if ( elem ) { if ( sibDir && elem.nodeType === 1 ){ elem.sizcache = doneName; elem.sizset = i; } elem = elem[dir]; var match = false; while ( elem ) { if ( elem.sizcache === doneName ) { match = checkSet[elem.sizset]; break; } if ( elem.nodeType === 1 && !isXML ){ elem.sizcache = doneName; elem.sizset = i; } if ( elem.nodeName === cur ) { match = elem; break; } elem = elem[dir]; } checkSet[i] = match; } } } function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { var sibDir = dir == "previousSibling" && !isXML; for ( var i = 0, l = checkSet.length; i < l; i++ ) { var elem = checkSet[i]; if ( elem ) { if ( sibDir && elem.nodeType === 1 ) { elem.sizcache = doneName; elem.sizset = i; } elem = elem[dir]; var match = false; while ( elem ) { if ( elem.sizcache === doneName ) { match = checkSet[elem.sizset]; break; } if ( elem.nodeType === 1 ) { if ( !isXML ) { elem.sizcache = doneName; elem.sizset = i; } if ( typeof cur !== "string" ) { if ( elem === cur ) { match = true; break; } } else if ( Sizzle.filter( cur, [elem] ).length > 0 ) { match = elem; break; } } elem = elem[dir]; } checkSet[i] = match; } } } var contains = document.compareDocumentPosition ? function(a, b){ return a.compareDocumentPosition(b) & 16; } : function(a, b){ return a !== b && (a.contains ? a.contains(b) : true); }; var isXML = function(elem){ return elem.nodeType === 9 && elem.documentElement.nodeName !== "HTML" || !!elem.ownerDocument && elem.ownerDocument.documentElement.nodeName !== "HTML"; }; var posProcess = function(selector, context){ var tmpSet = [], later = "", match, root = context.nodeType ? [context] : context; while ( (match = Expr.match.PSEUDO.exec( selector )) ) { later += match[0]; selector = selector.replace( Expr.match.PSEUDO, "" ); } selector = Expr.relative[selector] ? selector + "*" : selector; for ( var i = 0, l = root.length; i < l; i++ ) { Sizzle( selector, root[i], tmpSet ); } return Sizzle.filter( later, tmpSet ); }; window.Sizzle = Sizzle; })(); Prototype._original_property = window.Sizzle; ;(function(engine) { var extendElements = Prototype.Selector.extendElements; function select(selector, scope) { return extendElements(engine(selector, scope || document)); } function match(element, selector) { return engine.matches(selector, [element]).length == 1; } Prototype.Selector.engine = engine; Prototype.Selector.select = select; Prototype.Selector.match = match; })(Sizzle); window.Sizzle = Prototype._original_property; delete Prototype._original_property; var Form = { reset: function(form) { form = $(form); form.reset(); return form; }, serializeElements: function(elements, options) { if (typeof options != 'object') options = { hash: !!options }; else if (Object.isUndefined(options.hash)) options.hash = true; var key, value, submitted = false, submit = options.submit, accumulator, initial; if (options.hash) { initial = {}; accumulator = function(result, key, value) { if (key in result) { if (!Object.isArray(result[key])) result[key] = [result[key]]; result[key].push(value); } else result[key] = value; return result; }; } else { initial = ''; accumulator = function(result, key, value) { return result + (result ? '&' : '') + encodeURIComponent(key) + '=' + encodeURIComponent(value); } } return elements.inject(initial, function(result, element) { if (!element.disabled && element.name) { key = element.name; value = $(element).getValue(); if (value != null && element.type != 'file' && (element.type != 'submit' || (!submitted && submit !== false && (!submit || key == submit) && (submitted = true)))) { result = accumulator(result, key, value); } } return result; }); } }; Form.Methods = { serialize: function(form, options) { return Form.serializeElements(Form.getElements(form), options); }, getElements: function(form) { var elements = $(form).getElementsByTagName('*'), element, arr = [ ], serializers = Form.Element.Serializers; for (var i = 0; element = elements[i]; i++) { arr.push(element); } return arr.inject([], function(elements, child) { if (serializers[child.tagName.toLowerCase()]) elements.push(Element.extend(child)); return elements; }) }, getInputs: function(form, typeName, name) { form = $(form); var inputs = form.getElementsByTagName('input'); if (!typeName && !name) return $A(inputs).map(Element.extend); for (var i = 0, matchingInputs = [], length = inputs.length; i < length; i++) { var input = inputs[i]; if ((typeName && input.type != typeName) || (name && input.name != name)) continue; matchingInputs.push(Element.extend(input)); } return matchingInputs; }, disable: function(form) { form = $(form); Form.getElements(form).invoke('disable'); return form; }, enable: function(form) { form = $(form); Form.getElements(form).invoke('enable'); return form; }, findFirstElement: function(form) { var elements = $(form).getElements().findAll(function(element) { return 'hidden' != element.type && !element.disabled; }); var firstByIndex = elements.findAll(function(element) { return element.hasAttribute('tabIndex') && element.tabIndex >= 0; }).sortBy(function(element) { return element.tabIndex }).first(); return firstByIndex ? firstByIndex : elements.find(function(element) { return /^(?:input|select|textarea)$/i.test(element.tagName); }); }, focusFirstElement: function(form) { form = $(form); var element = form.findFirstElement(); if (element) element.activate(); return form; }, request: function(form, options) { form = $(form), options = Object.clone(options || { }); var params = options.parameters, action = form.readAttribute('action') || ''; if (action.blank()) action = window.location.href; options.parameters = form.serialize(true); if (params) { if (Object.isString(params)) params = params.toQueryParams(); Object.extend(options.parameters, params); } if (form.hasAttribute('method') && !options.method) options.method = form.method; return new Ajax.Request(action, options); } }; /*--------------------------------------------------------------------------*/ Form.Element = { focus: function(element) { $(element).focus(); return element; }, select: function(element) { $(element).select(); return element; } }; Form.Element.Methods = { serialize: function(element) { element = $(element); if (!element.disabled && element.name) { var value = element.getValue(); if (value != undefined) { var pair = { }; pair[element.name] = value; return Object.toQueryString(pair); } } return ''; }, getValue: function(element) { element = $(element); var method = element.tagName.toLowerCase(); return Form.Element.Serializers[method](element); }, setValue: function(element, value) { element = $(element); var method = element.tagName.toLowerCase(); Form.Element.Serializers[method](element, value); return element; }, clear: function(element) { $(element).value = ''; return element; }, present: function(element) { return $(element).value != ''; }, activate: function(element) { element = $(element); try { element.focus(); if (element.select && (element.tagName.toLowerCase() != 'input' || !(/^(?:button|reset|submit)$/i.test(element.type)))) element.select(); } catch (e) { } return element; }, disable: function(element) { element = $(element); element.disabled = true; return element; }, enable: function(element) { element = $(element); element.disabled = false; return element; } }; /*--------------------------------------------------------------------------*/ var Field = Form.Element; var $F = Form.Element.Methods.getValue; /*--------------------------------------------------------------------------*/ Form.Element.Serializers = (function() { function input(element, value) { switch (element.type.toLowerCase()) { case 'checkbox': case 'radio': return inputSelector(element, value); default: return valueSelector(element, value); } } function inputSelector(element, value) { if (Object.isUndefined(value)) return element.checked ? element.value : null; else element.checked = !!value; } function valueSelector(element, value) { if (Object.isUndefined(value)) return element.value; else element.value = value; } function select(element, value) { if (Object.isUndefined(value)) return (element.type === 'select-one' ? selectOne : selectMany)(element); var opt, currentValue, single = !Object.isArray(value); for (var i = 0, length = element.length; i < length; i++) { opt = element.options[i]; currentValue = this.optionValue(opt); if (single) { if (currentValue == value) { opt.selected = true; return; } } else opt.selected = value.include(currentValue); } } function selectOne(element) { var index = element.selectedIndex; return index >= 0 ? optionValue(element.options[index]) : null; } function selectMany(element) { var values, length = element.length; if (!length) return null; for (var i = 0, values = []; i < length; i++) { var opt = element.options[i]; if (opt.selected) values.push(optionValue(opt)); } return values; } function optionValue(opt) { return Element.hasAttribute(opt, 'value') ? opt.value : opt.text; } return { input: input, inputSelector: inputSelector, textarea: valueSelector, select: select, selectOne: selectOne, selectMany: selectMany, optionValue: optionValue, button: valueSelector }; })(); /*--------------------------------------------------------------------------*/ Abstract.TimedObserver = Class.create(PeriodicalExecuter, { initialize: function($super, element, frequency, callback) { $super(callback, frequency); this.element = $(element); this.lastValue = this.getValue(); }, execute: function() { var value = this.getValue(); if (Object.isString(this.lastValue) && Object.isString(value) ? this.lastValue != value : String(this.lastValue) != String(value)) { this.callback(this.element, value); this.lastValue = value; } } }); Form.Element.Observer = Class.create(Abstract.TimedObserver, { getValue: function() { return Form.Element.getValue(this.element); } }); Form.Observer = Class.create(Abstract.TimedObserver, { getValue: function() { return Form.serialize(this.element); } }); /*--------------------------------------------------------------------------*/ Abstract.EventObserver = Class.create({ initialize: function(element, callback) { this.element = $(element); this.callback = callback; this.lastValue = this.getValue(); if (this.element.tagName.toLowerCase() == 'form') this.registerFormCallbacks(); else this.registerCallback(this.element); }, onElementEvent: function() { var value = this.getValue(); if (this.lastValue != value) { this.callback(this.element, value); this.lastValue = value; } }, registerFormCallbacks: function() { Form.getElements(this.element).each(this.registerCallback, this); }, registerCallback: function(element) { if (element.type) { switch (element.type.toLowerCase()) { case 'checkbox': case 'radio': Event.observe(element, 'click', this.onElementEvent.bind(this)); break; default: Event.observe(element, 'change', this.onElementEvent.bind(this)); break; } } } }); Form.Element.EventObserver = Class.create(Abstract.EventObserver, { getValue: function() { return Form.Element.getValue(this.element); } }); Form.EventObserver = Class.create(Abstract.EventObserver, { getValue: function() { return Form.serialize(this.element); } }); (function() { var Event = { KEY_BACKSPACE: 8, KEY_TAB: 9, KEY_RETURN: 13, KEY_ESC: 27, KEY_LEFT: 37, KEY_UP: 38, KEY_RIGHT: 39, KEY_DOWN: 40, KEY_DELETE: 46, KEY_HOME: 36, KEY_END: 35, KEY_PAGEUP: 33, KEY_PAGEDOWN: 34, KEY_INSERT: 45, cache: {} }; var docEl = document.documentElement; var MOUSEENTER_MOUSELEAVE_EVENTS_SUPPORTED = 'onmouseenter' in docEl && 'onmouseleave' in docEl; var isIELegacyEvent = function(event) { return false; }; if (window.attachEvent) { if (window.addEventListener) { isIELegacyEvent = function(event) { return !(event instanceof window.Event); }; } else { isIELegacyEvent = function(event) { return true; }; } } var _isButton; function _isButtonForDOMEvents(event, code) { return event.which ? (event.which === code + 1) : (event.button === code); } var legacyButtonMap = { 0: 1, 1: 4, 2: 2 }; function _isButtonForLegacyEvents(event, code) { return event.button === legacyButtonMap[code]; } function _isButtonForWebKit(event, code) { switch (code) { case 0: return event.which == 1 && !event.metaKey; case 1: return event.which == 2 || (event.which == 1 && event.metaKey); case 2: return event.which == 3; default: return false; } } if (window.attachEvent) { if (!window.addEventListener) { _isButton = _isButtonForLegacyEvents; } else { _isButton = function(event, code) { return isIELegacyEvent(event) ? _isButtonForLegacyEvents(event, code) : _isButtonForDOMEvents(event, code); } } } else if (Prototype.Browser.WebKit) { _isButton = _isButtonForWebKit; } else { _isButton = _isButtonForDOMEvents; } function isLeftClick(event) { return _isButton(event, 0) } function isMiddleClick(event) { return _isButton(event, 1) } function isRightClick(event) { return _isButton(event, 2) } function element(event) { event = Event.extend(event); var node = event.target, type = event.type, currentTarget = event.currentTarget; if (currentTarget && currentTarget.tagName) { if (type === 'load' || type === 'error' || (type === 'click' && currentTarget.tagName.toLowerCase() === 'input' && currentTarget.type === 'radio')) node = currentTarget; } if (node.nodeType == Node.TEXT_NODE) node = node.parentNode; return Element.extend(node); } function findElement(event, expression) { var element = Event.element(event); if (!expression) return element; while (element) { if (Object.isElement(element) && Prototype.Selector.match(element, expression)) { return Element.extend(element); } element = element.parentNode; } } function pointer(event) { return { x: pointerX(event), y: pointerY(event) }; } function pointerX(event) { var docElement = document.documentElement, body = document.body || { scrollLeft: 0 }; return event.pageX || (event.clientX + (docElement.scrollLeft || body.scrollLeft) - (docElement.clientLeft || 0)); } function pointerY(event) { var docElement = document.documentElement, body = document.body || { scrollTop: 0 }; return event.pageY || (event.clientY + (docElement.scrollTop || body.scrollTop) - (docElement.clientTop || 0)); } function stop(event) { Event.extend(event); event.preventDefault(); event.stopPropagation(); event.stopped = true; } Event.Methods = { isLeftClick: isLeftClick, isMiddleClick: isMiddleClick, isRightClick: isRightClick, element: element, findElement: findElement, pointer: pointer, pointerX: pointerX, pointerY: pointerY, stop: stop }; var methods = Object.keys(Event.Methods).inject({ }, function(m, name) { m[name] = Event.Methods[name].methodize(); return m; }); if (window.attachEvent) { function _relatedTarget(event) { var element; switch (event.type) { case 'mouseover': case 'mouseenter': element = event.fromElement; break; case 'mouseout': case 'mouseleave': element = event.toElement; break; default: return null; } return Element.extend(element); } var additionalMethods = { stopPropagation: function() { this.cancelBubble = true }, preventDefault: function() { this.returnValue = false }, inspect: function() { return '[object Event]' } }; Event.extend = function(event, element) { if (!event) return false; if (!isIELegacyEvent(event)) return event; if (event._extendedByPrototype) return event; event._extendedByPrototype = Prototype.emptyFunction; var pointer = Event.pointer(event); Object.extend(event, { target: event.srcElement || element, relatedTarget: _relatedTarget(event), pageX: pointer.x, pageY: pointer.y }); Object.extend(event, methods); Object.extend(event, additionalMethods); return event; }; } else { Event.extend = Prototype.K; } if (window.addEventListener) { Event.prototype = window.Event.prototype || document.createEvent('HTMLEvents').__proto__; Object.extend(Event.prototype, methods); } function _createResponder(element, eventName, handler) { var registry = Element.retrieve(element, 'prototype_event_registry'); if (Object.isUndefined(registry)) { CACHE.push(element); registry = Element.retrieve(element, 'prototype_event_registry', $H()); } var respondersForEvent = registry.get(eventName); if (Object.isUndefined(respondersForEvent)) { respondersForEvent = []; registry.set(eventName, respondersForEvent); } if (respondersForEvent.pluck('handler').include(handler)) return false; var responder; if (eventName.include(":")) { responder = function(event) { if (Object.isUndefined(event.eventName)) return false; if (event.eventName !== eventName) return false; Event.extend(event, element); handler.call(element, event); }; } else { if (!MOUSEENTER_MOUSELEAVE_EVENTS_SUPPORTED && (eventName === "mouseenter" || eventName === "mouseleave")) { if (eventName === "mouseenter" || eventName === "mouseleave") { responder = function(event) { Event.extend(event, element); var parent = event.relatedTarget; while (parent && parent !== element) { try { parent = parent.parentNode; } catch(e) { parent = element; } } if (parent === element) return; handler.call(element, event); }; } } else { responder = function(event) { Event.extend(event, element); handler.call(element, event); }; } } responder.handler = handler; respondersForEvent.push(responder); return responder; } function _destroyCache() { for (var i = 0, length = CACHE.length; i < length; i++) { Event.stopObserving(CACHE[i]); CACHE[i] = null; } } var CACHE = []; if (Prototype.Browser.IE) window.attachEvent('onunload', _destroyCache); if (Prototype.Browser.WebKit) window.addEventListener('unload', Prototype.emptyFunction, false); var _getDOMEventName = Prototype.K, translations = { mouseenter: "mouseover", mouseleave: "mouseout" }; if (!MOUSEENTER_MOUSELEAVE_EVENTS_SUPPORTED) { _getDOMEventName = function(eventName) { return (translations[eventName] || eventName); }; } function observe(element, eventName, handler) { element = $(element); var responder = _createResponder(element, eventName, handler); if (!responder) return element; if (eventName.include(':')) { if (element.addEventListener) element.addEventListener("dataavailable", responder, false); else { element.attachEvent("ondataavailable", responder); element.attachEvent("onlosecapture", responder); } } else { var actualEventName = _getDOMEventName(eventName); if (element.addEventListener) element.addEventListener(actualEventName, responder, false); else element.attachEvent("on" + actualEventName, responder); } return element; } function stopObserving(element, eventName, handler) { element = $(element); var registry = Element.retrieve(element, 'prototype_event_registry'); if (!registry) return element; if (!eventName) { registry.each( function(pair) { var eventName = pair.key; stopObserving(element, eventName); }); return element; } var responders = registry.get(eventName); if (!responders) return element; if (!handler) { responders.each(function(r) { stopObserving(element, eventName, r.handler); }); return element; } var i = responders.length, responder; while (i--) { if (responders[i].handler === handler) { responder = responders[i]; break; } } if (!responder) return element; if (eventName.include(':')) { if (element.removeEventListener) element.removeEventListener("dataavailable", responder, false); else { element.detachEvent("ondataavailable", responder); element.detachEvent("onlosecapture", responder); } } else { var actualEventName = _getDOMEventName(eventName); if (element.removeEventListener) element.removeEventListener(actualEventName, responder, false); else element.detachEvent('on' + actualEventName, responder); } registry.set(eventName, responders.without(responder)); return element; } function fire(element, eventName, memo, bubble) { element = $(element); if (Object.isUndefined(bubble)) bubble = true; if (element == document && document.createEvent && !element.dispatchEvent) element = document.documentElement; var event; if (document.createEvent) { event = document.createEvent('HTMLEvents'); event.initEvent('dataavailable', bubble, true); } else { event = document.createEventObject(); event.eventType = bubble ? 'ondataavailable' : 'onlosecapture'; } event.eventName = eventName; event.memo = memo || { }; if (document.createEvent) element.dispatchEvent(event); else element.fireEvent(event.eventType, event); return Event.extend(event); } Event.Handler = Class.create({ initialize: function(element, eventName, selector, callback) { this.element = $(element); this.eventName = eventName; this.selector = selector; this.callback = callback; this.handler = this.handleEvent.bind(this); }, start: function() { Event.observe(this.element, this.eventName, this.handler); return this; }, stop: function() { Event.stopObserving(this.element, this.eventName, this.handler); return this; }, handleEvent: function(event) { var element = Event.findElement(event, this.selector); if (element) this.callback.call(this.element, event, element); } }); function on(element, eventName, selector, callback) { element = $(element); if (Object.isFunction(selector) && Object.isUndefined(callback)) { callback = selector, selector = null; } return new Event.Handler(element, eventName, selector, callback).start(); } Object.extend(Event, Event.Methods); Object.extend(Event, { fire: fire, observe: observe, stopObserving: stopObserving, on: on }); Element.addMethods({ fire: fire, observe: observe, stopObserving: stopObserving, on: on }); Object.extend(document, { fire: fire.methodize(), observe: observe.methodize(), stopObserving: stopObserving.methodize(), on: on.methodize(), loaded: false }); if (window.Event) Object.extend(window.Event, Event); else window.Event = Event; })(); (function() { /* Support for the DOMContentLoaded event is based on work by Dan Webb, Matthias Miller, Dean Edwards, John Resig, and Diego Perini. */ var timer; function fireContentLoadedEvent() { if (document.loaded) return; if (timer) window.clearTimeout(timer); document.loaded = true; document.fire('dom:loaded'); } function checkReadyState() { if (document.readyState === 'complete') { document.stopObserving('readystatechange', checkReadyState); fireContentLoadedEvent(); } } function pollDoScroll() { try { document.documentElement.doScroll('left'); } catch(e) { timer = pollDoScroll.defer(); return; } fireContentLoadedEvent(); } if (document.addEventListener) { document.addEventListener('DOMContentLoaded', fireContentLoadedEvent, false); } else { document.observe('readystatechange', checkReadyState); if (window == top) timer = pollDoScroll.defer(); } Event.observe(window, 'load', fireContentLoadedEvent); })(); Element.addMethods(); /*------------------------------- DEPRECATED -------------------------------*/ Hash.toQueryString = Object.toQueryString; var Toggle = { display: Element.toggle }; Element.Methods.childOf = Element.Methods.descendantOf; var Insertion = { Before: function(element, content) { return Element.insert(element, {before:content}); }, Top: function(element, content) { return Element.insert(element, {top:content}); }, Bottom: function(element, content) { return Element.insert(element, {bottom:content}); }, After: function(element, content) { return Element.insert(element, {after:content}); } }; var $continue = new Error('"throw $continue" is deprecated, use "return" instead'); var Position = { includeScrollOffsets: false, prepare: function() { this.deltaX = window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft || 0; this.deltaY = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0; }, within: function(element, x, y) { if (this.includeScrollOffsets) return this.withinIncludingScrolloffsets(element, x, y); this.xcomp = x; this.ycomp = y; this.offset = Element.cumulativeOffset(element); return (y >= this.offset[1] && y < this.offset[1] + element.offsetHeight && x >= this.offset[0] && x < this.offset[0] + element.offsetWidth); }, withinIncludingScrolloffsets: function(element, x, y) { var offsetcache = Element.cumulativeScrollOffset(element); this.xcomp = x + offsetcache[0] - this.deltaX; this.ycomp = y + offsetcache[1] - this.deltaY; this.offset = Element.cumulativeOffset(element); return (this.ycomp >= this.offset[1] && this.ycomp < this.offset[1] + element.offsetHeight && this.xcomp >= this.offset[0] && this.xcomp < this.offset[0] + element.offsetWidth); }, overlap: function(mode, element) { if (!mode) return 0; if (mode == 'vertical') return ((this.offset[1] + element.offsetHeight) - this.ycomp) / element.offsetHeight; if (mode == 'horizontal') return ((this.offset[0] + element.offsetWidth) - this.xcomp) / element.offsetWidth; }, cumulativeOffset: Element.Methods.cumulativeOffset, positionedOffset: Element.Methods.positionedOffset, absolutize: function(element) { Position.prepare(); return Element.absolutize(element); }, relativize: function(element) { Position.prepare(); return Element.relativize(element); }, realOffset: Element.Methods.cumulativeScrollOffset, offsetParent: Element.Methods.getOffsetParent, page: Element.Methods.viewportOffset, clone: function(source, target, options) { options = options || { }; return Element.clonePosition(target, source, options); } }; /*--------------------------------------------------------------------------*/ if (!document.getElementsByClassName) document.getElementsByClassName = function(instanceMethods){ function iter(name) { return name.blank() ? null : "[contains(concat(' ', @class, ' '), ' " + name + " ')]"; } instanceMethods.getElementsByClassName = Prototype.BrowserFeatures.XPath ? function(element, className) { className = className.toString().strip(); var cond = /\s/.test(className) ? $w(className).map(iter).join('') : iter(className); return cond ? document._getElementsByXPath('.//*' + cond, element) : []; } : function(element, className) { className = className.toString().strip(); var elements = [], classNames = (/\s/.test(className) ? $w(className) : null); if (!classNames && !className) return elements; var nodes = $(element).getElementsByTagName('*'); className = ' ' + className + ' '; for (var i = 0, child, cn; child = nodes[i]; i++) { if (child.className && (cn = ' ' + child.className + ' ') && (cn.include(className) || (classNames && classNames.all(function(name) { return !name.toString().blank() && cn.include(' ' + name + ' '); })))) elements.push(Element.extend(child)); } return elements; }; return function(className, parentElement) { return $(parentElement || document.body).getElementsByClassName(className); }; }(Element.Methods); /*--------------------------------------------------------------------------*/ Element.ClassNames = Class.create(); Element.ClassNames.prototype = { initialize: function(element) { this.element = $(element); }, _each: function(iterator) { this.element.className.split(/\s+/).select(function(name) { return name.length > 0; })._each(iterator); }, set: function(className) { this.element.className = className; }, add: function(classNameToAdd) { if (this.include(classNameToAdd)) return; this.set($A(this).concat(classNameToAdd).join(' ')); }, remove: function(classNameToRemove) { if (!this.include(classNameToRemove)) return; this.set($A(this).without(classNameToRemove).join(' ')); }, toString: function() { return $A(this).join(' '); } }; Object.extend(Element.ClassNames.prototype, Enumerable); /*--------------------------------------------------------------------------*/ (function() { window.Selector = Class.create({ initialize: function(expression) { this.expression = expression.strip(); }, findElements: function(rootElement) { return Prototype.Selector.select(this.expression, rootElement); }, match: function(element) { return Prototype.Selector.match(element, this.expression); }, toString: function() { return this.expression; }, inspect: function() { return "#"; } }); Object.extend(Selector, { matchElements: function(elements, expression) { var match = Prototype.Selector.match, results = []; for (var i = 0, length = elements.length; i < length; i++) { var element = elements[i]; if (match(element, expression)) { results.push(Element.extend(element)); } } return results; }, findElement: function(elements, expression, index) { index = index || 0; var matchIndex = 0, element; for (var i = 0, length = elements.length; i < length; i++) { element = elements[i]; if (Prototype.Selector.match(element, expression) && index === matchIndex++) { return Element.extend(element); } } }, findChildElements: function(element, expressions) { var selector = expressions.toArray().join(', '); return Prototype.Selector.select(selector, element || document); } }); })(); webcit-8.24-dfsg.orig/static/loading.gif0000755000175000017500000000323012271477123017774 0ustar michaelmichaelGIF89aD><|z|\Z\LNLdfdDFDlnľd^\\VTlfdLFDDBD\^\TNL䜞ljlLJL! NETSCAPE2.0! !,wpH, dH X, Sga0X@ŋي"ed ![C$6!BXBLCjy!~DCD &!YE YE ! tLBLA! &,D> " + message); } } } }; qq.isObject = function(variable) { return variable && !variable.nodeType && Object.prototype.toString.call(variable) === "[object Object]"; }; qq.isFunction = function(variable) { return typeof(variable) === "function"; }; /** * Check the type of a value. Is it an "array"? * * @param value value to test. * @returns true if the value is an array or associated with an `ArrayBuffer` */ qq.isArray = function(value) { return Object.prototype.toString.call(value) === "[object Array]" || (value && window.ArrayBuffer && value.buffer && value.buffer.constructor === ArrayBuffer); }; // Looks for an object on a `DataTransfer` object that is associated with drop events when utilizing the Filesystem API. qq.isItemList = function(maybeItemList) { return Object.prototype.toString.call(maybeItemList) === "[object DataTransferItemList]"; }; // Looks for an object on a `NodeList` or an `HTMLCollection`|`HTMLFormElement`|`HTMLSelectElement` // object that is associated with collections of Nodes. qq.isNodeList = function(maybeNodeList) { return Object.prototype.toString.call(maybeNodeList) === "[object NodeList]" || // If `HTMLCollection` is the actual type of the object, we must determine this // by checking for expected properties/methods on the object (maybeNodeList.item && maybeNodeList.namedItem); }; qq.isString = function(maybeString) { return Object.prototype.toString.call(maybeString) === "[object String]"; }; qq.trimStr = function(string) { if (String.prototype.trim) { return string.trim(); } return string.replace(/^\s+|\s+$/g,""); }; /** * @param str String to format. * @returns {string} A string, swapping argument values with the associated occurrence of {} in the passed string. */ qq.format = function(str) { var args = Array.prototype.slice.call(arguments, 1), newStr = str, nextIdxToReplace = newStr.indexOf("{}"); qq.each(args, function(idx, val) { var strBefore = newStr.substring(0, nextIdxToReplace), strAfter = newStr.substring(nextIdxToReplace+2); newStr = strBefore + val + strAfter; nextIdxToReplace = newStr.indexOf("{}", nextIdxToReplace + val.length); // End the loop if we have run out of tokens (when the arguments exceed the # of tokens) if (nextIdxToReplace < 0) { return false; } }); return newStr; }; qq.isFile = function(maybeFile) { return window.File && Object.prototype.toString.call(maybeFile) === "[object File]"; }; qq.isFileList = function(maybeFileList) { return window.FileList && Object.prototype.toString.call(maybeFileList) === "[object FileList]"; }; qq.isFileOrInput = function(maybeFileOrInput) { return qq.isFile(maybeFileOrInput) || qq.isInput(maybeFileOrInput); }; qq.isInput = function(maybeInput) { if (window.HTMLInputElement) { if (Object.prototype.toString.call(maybeInput) === "[object HTMLInputElement]") { if (maybeInput.type && maybeInput.type.toLowerCase() === "file") { return true; } } } if (maybeInput.tagName) { if (maybeInput.tagName.toLowerCase() === "input") { if (maybeInput.type && maybeInput.type.toLowerCase() === "file") { return true; } } } return false; }; qq.isBlob = function(maybeBlob) { return window.Blob && Object.prototype.toString.call(maybeBlob) === "[object Blob]"; }; qq.isXhrUploadSupported = function() { var input = document.createElement("input"); input.type = "file"; return ( input.multiple !== undefined && typeof File !== "undefined" && typeof FormData !== "undefined" && typeof (qq.createXhrInstance()).upload !== "undefined" ); }; // Fall back to ActiveX is native XHR is disabled (possible in any version of IE). qq.createXhrInstance = function() { if (window.XMLHttpRequest) { return new XMLHttpRequest(); } try { return new ActiveXObject("MSXML2.XMLHTTP.3.0"); } catch(error) { qq.log("Neither XHR or ActiveX are supported!", "error"); return null; } }; qq.isFolderDropSupported = function(dataTransfer) { return (dataTransfer.items && dataTransfer.items[0].webkitGetAsEntry); }; qq.isFileChunkingSupported = function() { return !qq.android() && //android's impl of Blob.slice is broken qq.isXhrUploadSupported() && (File.prototype.slice !== undefined || File.prototype.webkitSlice !== undefined || File.prototype.mozSlice !== undefined); }; qq.sliceBlob = function(fileOrBlob, start, end) { var slicer = fileOrBlob.slice || fileOrBlob.mozSlice || fileOrBlob.webkitSlice; return slicer.call(fileOrBlob, start, end); }; qq.arrayBufferToHex = function(buffer) { var bytesAsHex = "", bytes = new Uint8Array(buffer); qq.each(bytes, function(idx, byte) { var byteAsHexStr = byte.toString(16); if (byteAsHexStr.length < 2) { byteAsHexStr = "0" + byteAsHexStr; } bytesAsHex += byteAsHexStr; }); return bytesAsHex; }; qq.readBlobToHex = function(blob, startOffset, length) { var initialBlob = qq.sliceBlob(blob, startOffset, startOffset + length), fileReader = new FileReader(), promise = new qq.Promise(); fileReader.onload = function() { promise.success(qq.arrayBufferToHex(fileReader.result)); }; fileReader.readAsArrayBuffer(initialBlob); return promise; }; qq.extend = function(first, second, extendNested) { qq.each(second, function(prop, val) { if (extendNested && qq.isObject(val)) { if (first[prop] === undefined) { first[prop] = {}; } qq.extend(first[prop], val, true); } else { first[prop] = val; } }); return first; }; /** * Allow properties in one object to override properties in another, * keeping track of the original values from the target object. * * Note that the pre-overriden properties to be overriden by the source will be passed into the `sourceFn` when it is invoked. * * @param target Update properties in this object from some source * @param sourceFn A function that, when invoked, will return properties that will replace properties with the same name in the target. * @returns {object} The target object */ qq.override = function(target, sourceFn) { var super_ = {}, source = sourceFn(super_); qq.each(source, function(srcPropName, srcPropVal) { if (target[srcPropName] !== undefined) { super_[srcPropName] = target[srcPropName]; } target[srcPropName] = srcPropVal; }); return target; }; /** * Searches for a given element in the array, returns -1 if it is not present. * @param {Number} [from] The index at which to begin the search */ qq.indexOf = function(arr, elt, from){ if (arr.indexOf) { return arr.indexOf(elt, from); } from = from || 0; var len = arr.length; if (from < 0) { from += len; } for (; from < len; from+=1){ if (arr.hasOwnProperty(from) && arr[from] === elt){ return from; } } return -1; }; //this is a version 4 UUID qq.getUniqueId = function(){ return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, function(c) { /*jslint eqeq: true, bitwise: true*/ var r = Math.random()*16|0, v = c == "x" ? r : (r&0x3|0x8); return v.toString(16); }); }; // // Browsers and platforms detection qq.ie = function(){ return navigator.userAgent.indexOf("MSIE") !== -1; }; qq.ie7 = function(){ return navigator.userAgent.indexOf("MSIE 7") !== -1; }; qq.ie10 = function(){ return navigator.userAgent.indexOf("MSIE 10") !== -1; }; qq.ie11 = function(){ return (navigator.userAgent.indexOf("Trident") !== -1 && navigator.userAgent.indexOf("rv:11") !== -1); }; qq.safari = function(){ return navigator.vendor !== undefined && navigator.vendor.indexOf("Apple") !== -1; }; qq.chrome = function(){ return navigator.vendor !== undefined && navigator.vendor.indexOf("Google") !== -1; }; qq.opera = function(){ return navigator.vendor !== undefined && navigator.vendor.indexOf("Opera") !== -1; }; qq.firefox = function(){ return (!qq.ie11() && navigator.userAgent.indexOf("Mozilla") !== -1 && navigator.vendor !== undefined && navigator.vendor === ""); }; qq.windows = function(){ return navigator.platform === "Win32"; }; qq.android = function(){ return navigator.userAgent.toLowerCase().indexOf("android") !== -1; }; qq.ios7 = function() { return qq.ios() && navigator.userAgent.indexOf(" OS 7_") !== -1; }; qq.ios = function() { /*jshint -W014 */ return navigator.userAgent.indexOf("iPad") !== -1 || navigator.userAgent.indexOf("iPod") !== -1 || navigator.userAgent.indexOf("iPhone") !== -1; }; // // Events qq.preventDefault = function(e){ if (e.preventDefault){ e.preventDefault(); } else{ e.returnValue = false; } }; /** * Creates and returns element from html string * Uses innerHTML to create an element */ qq.toElement = (function(){ var div = document.createElement("div"); return function(html){ div.innerHTML = html; var element = div.firstChild; div.removeChild(element); return element; }; }()); //key and value are passed to callback for each entry in the iterable item qq.each = function(iterableItem, callback) { var keyOrIndex, retVal; if (iterableItem) { // Iterate through [`Storage`](http://www.w3.org/TR/webstorage/#the-storage-interface) items if (window.Storage && iterableItem.constructor === window.Storage) { for (keyOrIndex = 0; keyOrIndex < iterableItem.length; keyOrIndex++) { retVal = callback(iterableItem.key(keyOrIndex), iterableItem.getItem(iterableItem.key(keyOrIndex))); if (retVal === false) { break; } } } // `DataTransferItemList` & `NodeList` objects are array-like and should be treated as arrays // when iterating over items inside the object. else if (qq.isArray(iterableItem) || qq.isItemList(iterableItem) || qq.isNodeList(iterableItem)) { for (keyOrIndex = 0; keyOrIndex < iterableItem.length; keyOrIndex++) { retVal = callback(keyOrIndex, iterableItem[keyOrIndex]); if (retVal === false) { break; } } } else if (qq.isString(iterableItem)) { for (keyOrIndex = 0; keyOrIndex < iterableItem.length; keyOrIndex++) { retVal = callback(keyOrIndex, iterableItem.charAt(keyOrIndex)); if (retVal === false) { break; } } } else { for (keyOrIndex in iterableItem) { if (Object.prototype.hasOwnProperty.call(iterableItem, keyOrIndex)) { retVal = callback(keyOrIndex, iterableItem[keyOrIndex]); if (retVal === false) { break; } } } } } }; //include any args that should be passed to the new function after the context arg qq.bind = function(oldFunc, context) { if (qq.isFunction(oldFunc)) { var args = Array.prototype.slice.call(arguments, 2); return function() { var newArgs = qq.extend([], args); if (arguments.length) { newArgs = newArgs.concat(Array.prototype.slice.call(arguments)); } return oldFunc.apply(context, newArgs); }; } throw new Error("first parameter must be a function!"); }; /** * obj2url() takes a json-object as argument and generates * a querystring. pretty much like jQuery.param() * * how to use: * * `qq.obj2url({a:'b',c:'d'},'http://any.url/upload?otherParam=value');` * * will result in: * * `http://any.url/upload?otherParam=value&a=b&c=d` * * @param Object JSON-Object * @param String current querystring-part * @return String encoded querystring */ qq.obj2url = function(obj, temp, prefixDone){ /*jshint laxbreak: true*/ var uristrings = [], prefix = "&", add = function(nextObj, i){ var nextTemp = temp ? (/\[\]$/.test(temp)) // prevent double-encoding ? temp : temp+"["+i+"]" : i; if ((nextTemp !== "undefined") && (i !== "undefined")) { uristrings.push( (typeof nextObj === "object") ? qq.obj2url(nextObj, nextTemp, true) : (Object.prototype.toString.call(nextObj) === "[object Function]") ? encodeURIComponent(nextTemp) + "=" + encodeURIComponent(nextObj()) : encodeURIComponent(nextTemp) + "=" + encodeURIComponent(nextObj) ); } }; if (!prefixDone && temp) { prefix = (/\?/.test(temp)) ? (/\?$/.test(temp)) ? "" : "&" : "?"; uristrings.push(temp); uristrings.push(qq.obj2url(obj)); } else if ((Object.prototype.toString.call(obj) === "[object Array]") && (typeof obj !== "undefined") ) { qq.each(obj, function(idx, val) { add(val, idx); }); } else if ((typeof obj !== "undefined") && (obj !== null) && (typeof obj === "object")){ qq.each(obj, function(prop, val) { add(val, prop); }); } else { uristrings.push(encodeURIComponent(temp) + "=" + encodeURIComponent(obj)); } if (temp) { return uristrings.join(prefix); } else { return uristrings.join(prefix) .replace(/^&/, "") .replace(/%20/g, "+"); } }; qq.obj2FormData = function(obj, formData, arrayKeyName) { if (!formData) { formData = new FormData(); } qq.each(obj, function(key, val) { key = arrayKeyName ? arrayKeyName + "[" + key + "]" : key; if (qq.isObject(val)) { qq.obj2FormData(val, formData, key); } else if (qq.isFunction(val)) { formData.append(key, val()); } else { formData.append(key, val); } }); return formData; }; qq.obj2Inputs = function(obj, form) { var input; if (!form) { form = document.createElement("form"); } qq.obj2FormData(obj, { append: function(key, val) { input = document.createElement("input"); input.setAttribute("name", key); input.setAttribute("value", val); form.appendChild(input); } }); return form; }; qq.setCookie = function(name, value, days) { var date = new Date(), expires = ""; if (days) { date.setTime(date.getTime()+(days*24*60*60*1000)); expires = "; expires="+date.toGMTString(); } document.cookie = name+"="+value+expires+"; path=/"; }; qq.getCookie = function(name) { var nameEQ = name + "=", ca = document.cookie.split(";"), cookie; qq.each(ca, function(idx, part) { /*jshint -W116 */ var cookiePart = part; while (cookiePart.charAt(0) == " ") { cookiePart = cookiePart.substring(1, cookiePart.length); } if (cookiePart.indexOf(nameEQ) === 0) { cookie = cookiePart.substring(nameEQ.length, cookiePart.length); return false; } }); return cookie; }; qq.getCookieNames = function(regexp) { var cookies = document.cookie.split(";"), cookieNames = []; qq.each(cookies, function(idx, cookie) { cookie = qq.trimStr(cookie); var equalsIdx = cookie.indexOf("="); if (cookie.match(regexp)) { cookieNames.push(cookie.substr(0, equalsIdx)); } }); return cookieNames; }; qq.deleteCookie = function(name) { qq.setCookie(name, "", -1); }; qq.areCookiesEnabled = function() { var randNum = Math.random() * 100000, name = "qqCookieTest:" + randNum; qq.setCookie(name, 1); if (qq.getCookie(name)) { qq.deleteCookie(name); return true; } return false; }; /** * Not recommended for use outside of Fine Uploader since this falls back to an unchecked eval if JSON.parse is not * implemented. For a more secure JSON.parse polyfill, use Douglas Crockford's json2.js. */ qq.parseJson = function(json) { /*jshint evil: true*/ if (window.JSON && qq.isFunction(JSON.parse)) { return JSON.parse(json); } else { return eval("(" + json + ")"); } }; /** * Retrieve the extension of a file, if it exists. * * @param filename * @returns {string || undefined} */ qq.getExtension = function(filename) { var extIdx = filename.lastIndexOf(".") + 1; if (extIdx > 0) { return filename.substr(extIdx, filename.length - extIdx); } }; qq.getFilename = function(blobOrFileInput) { /*jslint regexp: true*/ if (qq.isInput(blobOrFileInput)) { // get input value and remove path to normalize return blobOrFileInput.value.replace(/.*(\/|\\)/, ""); } else if (qq.isFile(blobOrFileInput)) { if (blobOrFileInput.fileName !== null && blobOrFileInput.fileName !== undefined) { return blobOrFileInput.fileName; } } return blobOrFileInput.name; }; /** * A generic module which supports object disposing in dispose() method. * */ qq.DisposeSupport = function() { var disposers = []; return { /** Run all registered disposers */ dispose: function() { var disposer; do { disposer = disposers.shift(); if (disposer) { disposer(); } } while (disposer); }, /** Attach event handler and register de-attacher as a disposer */ attach: function() { var args = arguments; /*jslint undef:true*/ this.addDisposer(qq(args[0]).attach.apply(this, Array.prototype.slice.call(arguments, 1))); }, /** Add disposer to the collection */ addDisposer: function(disposeFunction) { disposers.push(disposeFunction); } }; }; }()); /* globals qq */ /** * Fine Uploader top-level Error container. Inherits from `Error`. */ (function() { "use strict"; qq.Error = function(message) { this.message = message; }; qq.Error.prototype = new Error(); }()); /*global qq */ qq.version="4.2.1"; /* globals qq */ qq.supportedFeatures = (function () { "use strict"; var supportsUploading, supportsAjaxFileUploading, supportsFolderDrop, supportsChunking, supportsResume, supportsUploadViaPaste, supportsUploadCors, supportsDeleteFileXdr, supportsDeleteFileCorsXhr, supportsDeleteFileCors, supportsFolderSelection, supportsImagePreviews; function testSupportsFileInputElement() { var supported = true, tempInput; try { tempInput = document.createElement("input"); tempInput.type = "file"; qq(tempInput).hide(); if (tempInput.disabled) { supported = false; } } catch (ex) { supported = false; } return supported; } //only way to test for Filesystem API support since webkit does not expose the DataTransfer interface function isChrome21OrHigher() { return (qq.chrome() || qq.opera()) && navigator.userAgent.match(/Chrome\/[2][1-9]|Chrome\/[3-9][0-9]/) !== undefined; } //only way to test for complete Clipboard API support at this time function isChrome14OrHigher() { return (qq.chrome() || qq.opera()) && navigator.userAgent.match(/Chrome\/[1][4-9]|Chrome\/[2-9][0-9]/) !== undefined; } //Ensure we can send cross-origin `XMLHttpRequest`s function isCrossOriginXhrSupported() { if (window.XMLHttpRequest) { var xhr = qq.createXhrInstance(); //Commonly accepted test for XHR CORS support. return xhr.withCredentials !== undefined; } return false; } //Test for (terrible) cross-origin ajax transport fallback for IE9 and IE8 function isXdrSupported() { return window.XDomainRequest !== undefined; } // CORS Ajax requests are supported if it is either possible to send credentialed `XMLHttpRequest`s, // or if `XDomainRequest` is an available alternative. function isCrossOriginAjaxSupported() { if (isCrossOriginXhrSupported()) { return true; } return isXdrSupported(); } function isFolderSelectionSupported() { // We know that folder selection is only supported in Chrome via this proprietary attribute for now return document.createElement("input").webkitdirectory !== undefined; } supportsUploading = testSupportsFileInputElement(); supportsAjaxFileUploading = supportsUploading && qq.isXhrUploadSupported(); supportsFolderDrop = supportsAjaxFileUploading && isChrome21OrHigher(); supportsChunking = supportsAjaxFileUploading && qq.isFileChunkingSupported(); supportsResume = supportsAjaxFileUploading && supportsChunking && qq.areCookiesEnabled(); supportsUploadViaPaste = supportsAjaxFileUploading && isChrome14OrHigher(); supportsUploadCors = supportsUploading && (window.postMessage !== undefined || supportsAjaxFileUploading); supportsDeleteFileCorsXhr = isCrossOriginXhrSupported(); supportsDeleteFileXdr = isXdrSupported(); supportsDeleteFileCors = isCrossOriginAjaxSupported(); supportsFolderSelection = isFolderSelectionSupported(); supportsImagePreviews = supportsAjaxFileUploading && window.FileReader !== undefined; return { uploading: supportsUploading, ajaxUploading: supportsAjaxFileUploading, fileDrop: supportsAjaxFileUploading, //NOTE: will also return true for touch-only devices. It's not currently possible to accurately test for touch-only devices folderDrop: supportsFolderDrop, chunking: supportsChunking, resume: supportsResume, uploadCustomHeaders: supportsAjaxFileUploading, uploadNonMultipart: supportsAjaxFileUploading, itemSizeValidation: supportsAjaxFileUploading, uploadViaPaste: supportsUploadViaPaste, progressBar: supportsAjaxFileUploading, uploadCors: supportsUploadCors, deleteFileCorsXhr: supportsDeleteFileCorsXhr, deleteFileCorsXdr: supportsDeleteFileXdr, //NOTE: will also return true in IE10, where XDR is also supported deleteFileCors: supportsDeleteFileCors, canDetermineSize: supportsAjaxFileUploading, folderSelection: supportsFolderSelection, imagePreviews: supportsImagePreviews, imageValidation: supportsImagePreviews, pause: supportsChunking }; }()); /*globals qq*/ qq.Promise = function() { "use strict"; var successArgs, failureArgs, successCallbacks = [], failureCallbacks = [], doneCallbacks = [], state = 0; qq.extend(this, { then: function(onSuccess, onFailure) { if (state === 0) { if (onSuccess) { successCallbacks.push(onSuccess); } if (onFailure) { failureCallbacks.push(onFailure); } } else if (state === -1) { onFailure && onFailure.apply(null, failureArgs); } else if (onSuccess) { onSuccess.apply(null,successArgs); } return this; }, done: function(callback) { if (state === 0) { doneCallbacks.push(callback); } else { callback.apply(null, failureArgs === undefined ? successArgs : failureArgs); } return this; }, success: function() { state = 1; successArgs = arguments; if (successCallbacks.length) { qq.each(successCallbacks, function(idx, callback) { callback.apply(null, successArgs); }); } if(doneCallbacks.length) { qq.each(doneCallbacks, function(idx, callback) { callback.apply(null, successArgs); }); } return this; }, failure: function() { state = -1; failureArgs = arguments; if (failureCallbacks.length) { qq.each(failureCallbacks, function(idx, callback) { callback.apply(null, failureArgs); }); } if(doneCallbacks.length) { qq.each(doneCallbacks, function(idx, callback) { callback.apply(null, failureArgs); }); } return this; } }); }; /*globals qq*/ /** * This module represents an upload or "Select File(s)" button. It's job is to embed an opaque `` * element as a child of a provided "container" element. This "container" element (`options.element`) is used to provide * a custom style for the `` element. The ability to change the style of the container element is also * provided here by adding CSS classes to the container on hover/focus. * * TODO Eliminate the mouseover and mouseout event handlers since the :hover CSS pseudo-class should now be * available on all supported browsers. * * @param o Options to override the default values */ qq.UploadButton = function(o) { "use strict"; var disposeSupport = new qq.DisposeSupport(), options = { // "Container" element element: null, // If true adds `multiple` attribute to `` multiple: false, // Corresponds to the `accept` attribute on the associated `` acceptFiles: null, // A true value allows folders to be selected, if supported by the UA folders: false, // `name` attribute of `` name: "qqfile", // Called when the browser invokes the onchange handler on the `` onChange: function(input) {}, // **This option will be removed** in the future as the :hover CSS pseudo-class is available on all supported browsers hoverClass: "qq-upload-button-hover", focusClass: "qq-upload-button-focus" }, input, buttonId; // Overrides any of the default option values with any option values passed in during construction. qq.extend(options, o); buttonId = qq.getUniqueId(); // Embed an opaque `` element as a child of `options.element`. function createInput() { var input = document.createElement("input"); input.setAttribute(qq.UploadButton.BUTTON_ID_ATTR_NAME, buttonId); if (options.multiple) { input.setAttribute("multiple", ""); } if (options.folders && qq.supportedFeatures.folderSelection) { // selecting directories is only possible in Chrome now, via a vendor-specific prefixed attribute input.setAttribute("webkitdirectory", ""); } if (options.acceptFiles) { input.setAttribute("accept", options.acceptFiles); } input.setAttribute("type", "file"); input.setAttribute("name", options.name); qq(input).css({ position: "absolute", // in Opera only 'browse' button // is clickable and it is located at // the right side of the input right: 0, top: 0, fontFamily: "Arial", // 4 persons reported this, the max values that worked for them were 243, 236, 236, 118 fontSize: "118px", margin: 0, padding: 0, cursor: "pointer", opacity: 0 }); options.element.appendChild(input); disposeSupport.attach(input, "change", function(){ options.onChange(input); }); // **These event handlers will be removed** in the future as the :hover CSS pseudo-class is available on all supported browsers disposeSupport.attach(input, "mouseover", function(){ qq(options.element).addClass(options.hoverClass); }); disposeSupport.attach(input, "mouseout", function(){ qq(options.element).removeClass(options.hoverClass); }); disposeSupport.attach(input, "focus", function(){ qq(options.element).addClass(options.focusClass); }); disposeSupport.attach(input, "blur", function(){ qq(options.element).removeClass(options.focusClass); }); // IE and Opera, unfortunately have 2 tab stops on file input // which is unacceptable in our case, disable keyboard access if (window.attachEvent) { // it is IE or Opera input.setAttribute("tabIndex", "-1"); } return input; } // Make button suitable container for input qq(options.element).css({ position: "relative", overflow: "hidden", // Make sure browse button is in the right side in Internet Explorer direction: "ltr" }); input = createInput(); // Exposed API qq.extend(this, { getInput: function() { return input; }, getButtonId: function() { return buttonId; }, setMultiple: function(isMultiple) { if (isMultiple !== options.multiple) { if (isMultiple) { input.setAttribute("multiple", ""); } else { input.removeAttribute("multiple"); } } }, setAcceptFiles: function(acceptFiles) { if (acceptFiles !== options.acceptFiles) { input.setAttribute("accept", acceptFiles); } }, reset: function(){ if (input.parentNode){ qq(input).remove(); } qq(options.element).removeClass(options.focusClass); input = createInput(); } }); }; qq.UploadButton.BUTTON_ID_ATTR_NAME = "qq-button-id"; /*globals qq */ qq.UploadData = function(uploaderProxy) { "use strict"; var data = [], byUuid = {}, byStatus = {}; function getDataByIds(idOrIds) { if (qq.isArray(idOrIds)) { var entries = []; qq.each(idOrIds, function(idx, id) { entries.push(data[id]); }); return entries; } return data[idOrIds]; } function getDataByUuids(uuids) { if (qq.isArray(uuids)) { var entries = []; qq.each(uuids, function(idx, uuid) { entries.push(data[byUuid[uuid]]); }); return entries; } return data[byUuid[uuids]]; } function getDataByStatus(status) { var statusResults = [], statuses = [].concat(status); qq.each(statuses, function(index, statusEnum) { var statusResultIndexes = byStatus[statusEnum]; if (statusResultIndexes !== undefined) { qq.each(statusResultIndexes, function(i, dataIndex) { statusResults.push(data[dataIndex]); }); } }); return statusResults; } qq.extend(this, { /** * Adds a new file to the data cache for tracking purposes. * * @param uuid Initial UUID for this file. * @param name Initial name of this file. * @param size Size of this file, -1 if this cannot be determined * @param status Initial `qq.status` for this file. If null/undefined, `qq.status.SUBMITTING`. * @returns {number} Internal ID for this file. */ addFile: function(uuid, name, size, status) { status = status || qq.status.SUBMITTING; var id = data.push({ name: name, originalName: name, uuid: uuid, size: size, status: status }) - 1; data[id].id = id; byUuid[uuid] = id; if (byStatus[status] === undefined) { byStatus[status] = []; } byStatus[status].push(id); uploaderProxy.onStatusChange(id, null, status); return id; }, retrieve: function(optionalFilter) { if (qq.isObject(optionalFilter) && data.length) { if (optionalFilter.id !== undefined) { return getDataByIds(optionalFilter.id); } else if (optionalFilter.uuid !== undefined) { return getDataByUuids(optionalFilter.uuid); } else if (optionalFilter.status) { return getDataByStatus(optionalFilter.status); } } else { return qq.extend([], data, true); } }, reset: function() { data = []; byUuid = {}; byStatus = {}; }, setStatus: function(id, newStatus) { var oldStatus = data[id].status, byStatusOldStatusIndex = qq.indexOf(byStatus[oldStatus], id); byStatus[oldStatus].splice(byStatusOldStatusIndex, 1); data[id].status = newStatus; if (byStatus[newStatus] === undefined) { byStatus[newStatus] = []; } byStatus[newStatus].push(id); uploaderProxy.onStatusChange(id, oldStatus, newStatus); }, uuidChanged: function(id, newUuid) { var oldUuid = data[id].uuid; data[id].uuid = newUuid; byUuid[newUuid] = id; delete byUuid[oldUuid]; }, updateName: function(id, newName) { data[id].name = newName; } }); }; qq.status = { SUBMITTING: "submitting", SUBMITTED: "submitted", REJECTED: "rejected", QUEUED: "queued", CANCELED: "canceled", PAUSED: "paused", UPLOADING: "uploading", UPLOAD_RETRYING: "retrying upload", UPLOAD_SUCCESSFUL: "upload successful", UPLOAD_FAILED: "upload failed", DELETE_FAILED: "delete failed", DELETING: "deleting", DELETED: "deleted" }; /*globals qq*/ /** * Defines the public API for FineUploaderBasic mode. */ (function(){ "use strict"; qq.basePublicApi = { log: function(str, level) { if (this._options.debug && (!level || level === "info")) { qq.log("[FineUploader " + qq.version + "] " + str); } else if (level && level !== "info") { qq.log("[FineUploader " + qq.version + "] " + str, level); } }, setParams: function(params, id) { /*jshint eqeqeq: true, eqnull: true*/ if (id == null) { this._options.request.params = params; } else { this._paramsStore.setParams(params, id); } }, setDeleteFileParams: function(params, id) { /*jshint eqeqeq: true, eqnull: true*/ if (id == null) { this._options.deleteFile.params = params; } else { this._deleteFileParamsStore.setParams(params, id); } }, // Re-sets the default endpoint, an endpoint for a specific file, or an endpoint for a specific button setEndpoint: function(endpoint, id) { /*jshint eqeqeq: true, eqnull: true*/ if (id == null) { this._options.request.endpoint = endpoint; } else { this._endpointStore.setEndpoint(endpoint, id); } }, getInProgress: function() { return this._uploadData.retrieve({ status: [ qq.status.UPLOADING, qq.status.UPLOAD_RETRYING, qq.status.QUEUED ] }).length; }, getNetUploads: function() { return this._netUploaded; }, uploadStoredFiles: function() { var idToUpload; if (this._storedIds.length === 0) { this._itemError("noFilesError"); } else { while (this._storedIds.length) { idToUpload = this._storedIds.shift(); this._handler.upload(idToUpload); } } }, clearStoredFiles: function(){ this._storedIds = []; }, retry: function(id) { return this._manualRetry(id); }, cancel: function(id) { this._handler.cancel(id); }, cancelAll: function() { var storedIdsCopy = [], self = this; qq.extend(storedIdsCopy, this._storedIds); qq.each(storedIdsCopy, function(idx, storedFileId) { self.cancel(storedFileId); }); this._handler.cancelAll(); }, reset: function() { this.log("Resetting uploader..."); this._handler.reset(); this._storedIds = []; this._autoRetries = []; this._retryTimeouts = []; this._preventRetries = []; this._thumbnailUrls = []; qq.each(this._buttons, function(idx, button) { button.reset(); }); this._paramsStore.reset(); this._endpointStore.reset(); this._netUploadedOrQueued = 0; this._netUploaded = 0; this._uploadData.reset(); this._buttonIdsForFileIds = []; this._pasteHandler && this._pasteHandler.reset(); this._options.session.refreshOnReset && this._refreshSessionData(); }, addFiles: function(filesOrInputs, params, endpoint) { var verifiedFilesOrInputs = [], fileOrInputIndex, fileOrInput, fileIndex; if (filesOrInputs) { if (!qq.isFileList(filesOrInputs)) { filesOrInputs = [].concat(filesOrInputs); } for (fileOrInputIndex = 0; fileOrInputIndex < filesOrInputs.length; fileOrInputIndex+=1) { fileOrInput = filesOrInputs[fileOrInputIndex]; if (qq.isFileOrInput(fileOrInput)) { if (qq.isInput(fileOrInput) && qq.supportedFeatures.ajaxUploading) { for (fileIndex = 0; fileIndex < fileOrInput.files.length; fileIndex++) { this._handleNewFile(fileOrInput.files[fileIndex], verifiedFilesOrInputs); } } else { this._handleNewFile(fileOrInput, verifiedFilesOrInputs); } } else { this.log(fileOrInput + " is not a File or INPUT element! Ignoring!", "warn"); } } this.log("Received " + verifiedFilesOrInputs.length + " files or inputs."); this._prepareItemsForUpload(verifiedFilesOrInputs, params, endpoint); } }, addBlobs: function(blobDataOrArray, params, endpoint) { if (blobDataOrArray) { var blobDataArray = [].concat(blobDataOrArray), verifiedBlobDataList = [], self = this; qq.each(blobDataArray, function(idx, blobData) { var blobOrBlobData; if (qq.isBlob(blobData) && !qq.isFileOrInput(blobData)) { blobOrBlobData = { blob: blobData, name: self._options.blobs.defaultName }; } else if (qq.isObject(blobData) && blobData.blob && blobData.name) { blobOrBlobData = blobData; } else { self.log("addBlobs: entry at index " + idx + " is not a Blob or a BlobData object", "error"); } blobOrBlobData && self._handleNewFile(blobOrBlobData, verifiedBlobDataList); }); this._prepareItemsForUpload(verifiedBlobDataList, params, endpoint); } else { this.log("undefined or non-array parameter passed into addBlobs", "error"); } }, getUuid: function(id) { return this._uploadData.retrieve({id: id}).uuid; }, setUuid: function(id, newUuid) { return this._uploadData.uuidChanged(id, newUuid); }, getResumableFilesData: function() { return this._handler.getResumableFilesData(); }, getSize: function(id) { return this._uploadData.retrieve({id: id}).size; }, getName: function(id) { return this._uploadData.retrieve({id: id}).name; }, setName: function(id, newName) { this._uploadData.updateName(id, newName); }, getFile: function(fileOrBlobId) { return this._handler.getFile(fileOrBlobId); }, deleteFile: function(id) { this._onSubmitDelete(id); }, setDeleteFileEndpoint: function(endpoint, id) { /*jshint eqeqeq: true, eqnull: true*/ if (id == null) { this._options.deleteFile.endpoint = endpoint; } else { this._deleteFileEndpointStore.setEndpoint(endpoint, id); } }, doesExist: function(fileOrBlobId) { return this._handler.isValid(fileOrBlobId); }, getUploads: function(optionalFilter) { return this._uploadData.retrieve(optionalFilter); }, getButton: function(fileId) { return this._getButton(this._buttonIdsForFileIds[fileId]); }, // Generate a variable size thumbnail on an img or canvas, // returning a promise that is fulfilled when the attempt completes. // Thumbnail can either be based off of a URL for an image returned // by the server in the upload response, or the associated `Blob`. drawThumbnail: function(fileId, imgOrCanvas, maxSize, fromServer) { if (this._imageGenerator) { var fileOrUrl = this._thumbnailUrls[fileId], options = { scale: maxSize > 0, maxSize: maxSize > 0 ? maxSize : null }; // If client-side preview generation is possible // and we are not specifically looking for the image URl returned by the server... if (!fromServer && qq.supportedFeatures.imagePreviews) { fileOrUrl = this.getFile(fileId); } /* jshint eqeqeq:false,eqnull:true */ if (fileOrUrl == null) { return new qq.Promise().failure(imgOrCanvas, "File or URL not found."); } return this._imageGenerator.generate(fileOrUrl, imgOrCanvas, options); } }, pauseUpload: function(id) { var uploadData = this._uploadData.retrieve({id: id}); if (!qq.supportedFeatures.pause || !this._options.chunking.enabled) { return false; } // Pause only really makes sense if the file is uploading or retrying if (qq.indexOf([qq.status.UPLOADING, qq.status.UPLOAD_RETRYING], uploadData.status) >= 0) { if (this._handler.pause(id)) { this._uploadData.setStatus(id, qq.status.PAUSED); return true; } else { qq.log(qq.format("Unable to pause file ID {} ({}).", id, this.getName(id)), "error"); } } else { qq.log(qq.format("Ignoring pause for file ID {} ({}). Not in progress.", id, this.getName(id)), "error"); } return false; }, continueUpload: function(id) { var uploadData = this._uploadData.retrieve({id: id}); if (!qq.supportedFeatures.pause || !this._options.chunking.enabled) { return false; } if (uploadData.status === qq.status.PAUSED) { qq.log(qq.format("Paused file ID {} ({}) will be continued. Not paused.", id, this.getName(id))); if (!this._handler.upload(id)) { this._uploadData.setStatus(id, qq.status.QUEUED); } return true; } else { qq.log(qq.format("Ignoring continue for file ID {} ({}). Not paused.", id, this.getName(id)), "error"); } return false; }, getRemainingAllowedItems: function() { var allowedItems = this._options.validation.itemLimit; if (allowedItems > 0) { return this._options.validation.itemLimit - this._netUploadedOrQueued; } return null; } }; /** * Defines the private (internal) API for FineUploaderBasic mode. */ qq.basePrivateApi = { // Attempts to refresh session data only if the `qq.Session` module exists // and a session endpoint has been specified. The `onSessionRequestComplete` // callback will be invoked once the refresh is complete. _refreshSessionData: function() { var self = this, options = this._options.session; /* jshint eqnull:true */ if (qq.Session && this._options.session.endpoint != null) { if (!this._session) { qq.extend(options, this._options.cors); options.log = qq.bind(this.log, this); options.addFileRecord = qq.bind(this._addCannedFile, this); this._session = new qq.Session(options); } setTimeout(function() { self._session.refresh().then(function(response, xhrOrXdr) { self._options.callbacks.onSessionRequestComplete(response, true, xhrOrXdr); }, function(response, xhrOrXdr) { self._options.callbacks.onSessionRequestComplete(response, false, xhrOrXdr); }); }, 0); } }, // Updates internal state with a file record (not backed by a live file). Returns the assigned ID. _addCannedFile: function(sessionData) { var id = this._uploadData.addFile(sessionData.uuid, sessionData.name, sessionData.size, qq.status.UPLOAD_SUCCESSFUL); sessionData.deleteFileEndpoint && this.setDeleteFileEndpoint(sessionData.deleteFileEndpoint, id); sessionData.deleteFileParams && this.setDeleteFileParams(sessionData.deleteFileParams, id); if (sessionData.thumbnailUrl) { this._thumbnailUrls[id] = sessionData.thumbnailUrl; } this._netUploaded++; this._netUploadedOrQueued++; return id; }, // Updates internal state when a new file has been received, and adds it along with its ID to a passed array. _handleNewFile: function(file, newFileWrapperList) { var size = -1, uuid = qq.getUniqueId(), name = qq.getFilename(file), id; if (file.size >= 0) { size = file.size; } else if (file.blob) { size = file.blob.size; } id = this._uploadData.addFile(uuid, name, size); this._handler.add(id, file); this._netUploadedOrQueued++; newFileWrapperList.push({id: id, file: file}); }, // Creates an internal object that tracks various properties of each extra button, // and then actually creates the extra button. _generateExtraButtonSpecs: function() { var self = this; this._extraButtonSpecs = {}; qq.each(this._options.extraButtons, function(idx, extraButtonOptionEntry) { var multiple = extraButtonOptionEntry.multiple, validation = qq.extend({}, self._options.validation, true), extraButtonSpec = qq.extend({}, extraButtonOptionEntry); if (multiple === undefined) { multiple = self._options.multiple; } if (extraButtonSpec.validation) { qq.extend(validation, extraButtonOptionEntry.validation, true); } qq.extend(extraButtonSpec, { multiple: multiple, validation: validation }, true); self._initExtraButton(extraButtonSpec); }); }, // Creates an extra button element _initExtraButton: function(spec) { var button = this._createUploadButton({ element: spec.element, multiple: spec.multiple, accept: spec.validation.acceptFiles, folders: spec.folders, allowedExtensions: spec.validation.allowedExtensions }); this._extraButtonSpecs[button.getButtonId()] = spec; }, /** * Gets the internally used tracking ID for a button. * * @param buttonOrFileInputOrFile `File`, ``, or a button container element * @returns {*} The button's ID, or undefined if no ID is recoverable * @private */ _getButtonId: function(buttonOrFileInputOrFile) { var inputs, fileInput; // If the item is a `Blob` it will never be associated with a button or drop zone. if (buttonOrFileInputOrFile && !buttonOrFileInputOrFile.blob && !qq.isBlob(buttonOrFileInputOrFile)) { if (qq.isFile(buttonOrFileInputOrFile)) { return buttonOrFileInputOrFile.qqButtonId; } else if (buttonOrFileInputOrFile.tagName.toLowerCase() === "input" && buttonOrFileInputOrFile.type.toLowerCase() === "file") { return buttonOrFileInputOrFile.getAttribute(qq.UploadButton.BUTTON_ID_ATTR_NAME); } inputs = buttonOrFileInputOrFile.getElementsByTagName("input"); qq.each(inputs, function(idx, input) { if (input.getAttribute("type") === "file") { fileInput = input; return false; } }); if (fileInput) { return fileInput.getAttribute(qq.UploadButton.BUTTON_ID_ATTR_NAME); } } }, _annotateWithButtonId: function(file, associatedInput) { if (qq.isFile(file)) { file.qqButtonId = this._getButtonId(associatedInput); } }, _getButton: function(buttonId) { var extraButtonsSpec = this._extraButtonSpecs[buttonId]; if (extraButtonsSpec) { return extraButtonsSpec.element; } else if (buttonId === this._defaultButtonId) { return this._options.button; } }, _handleCheckedCallback: function(details) { var self = this, callbackRetVal = details.callback(); if (callbackRetVal instanceof qq.Promise) { this.log(details.name + " - waiting for " + details.name + " promise to be fulfilled for " + details.identifier); return callbackRetVal.then( function(successParam) { self.log(details.name + " promise success for " + details.identifier); details.onSuccess(successParam); }, function() { if (details.onFailure) { self.log(details.name + " promise failure for " + details.identifier); details.onFailure(); } else { self.log(details.name + " promise failure for " + details.identifier); } }); } if (callbackRetVal !== false) { details.onSuccess(callbackRetVal); } else { if (details.onFailure) { this.log(details.name + " - return value was 'false' for " + details.identifier + ". Invoking failure callback."); details.onFailure(); } else { this.log(details.name + " - return value was 'false' for " + details.identifier + ". Will not proceed."); } } return callbackRetVal; }, /** * Generate a tracked upload button. * * @param spec Object containing a required `element` property * along with optional `multiple`, `accept`, and `folders`. * @returns {qq.UploadButton} * @private */ _createUploadButton: function(spec) { var self = this, acceptFiles = spec.accept || this._options.validation.acceptFiles, allowedExtensions = spec.allowedExtensions || this._options.validation.allowedExtensions; function allowMultiple() { if (qq.supportedFeatures.ajaxUploading) { // Workaround for bug in iOS7 (see #1039) if (qq.ios7() && self._isAllowedExtension(allowedExtensions, ".mov")) { return false; } if (spec.multiple === undefined) { return self._options.multiple; } return spec.multiple; } return false; } var button = new qq.UploadButton({ element: spec.element, folders: spec.folders, name: this._options.request.inputName, multiple: allowMultiple(), acceptFiles: acceptFiles, onChange: function(input) { self._onInputChange(input); }, hoverClass: this._options.classes.buttonHover, focusClass: this._options.classes.buttonFocus }); this._disposeSupport.addDisposer(function() { button.dispose(); }); self._buttons.push(button); return button; }, _createUploadHandler: function(additionalOptions, namespace) { var self = this, options = { debug: this._options.debug, maxConnections: this._options.maxConnections, cors: this._options.cors, demoMode: this._options.demoMode, paramsStore: this._paramsStore, endpointStore: this._endpointStore, chunking: this._options.chunking, resume: this._options.resume, blobs: this._options.blobs, log: qq.bind(self.log, self), onProgress: function(id, name, loaded, total){ self._onProgress(id, name, loaded, total); self._options.callbacks.onProgress(id, name, loaded, total); }, onComplete: function(id, name, result, xhr){ var retVal = self._onComplete(id, name, result, xhr); // If the internal `_onComplete` handler returns a promise, don't invoke the `onComplete` callback // until the promise has been fulfilled. if (retVal instanceof qq.Promise) { retVal.done(function() { self._options.callbacks.onComplete(id, name, result, xhr); }); } else { self._options.callbacks.onComplete(id, name, result, xhr); } }, onCancel: function(id, name) { return self._handleCheckedCallback({ name: "onCancel", callback: qq.bind(self._options.callbacks.onCancel, self, id, name), onSuccess: qq.bind(self._onCancel, self, id, name), identifier: id }); }, onUpload: function(id, name) { self._onUpload(id, name); self._options.callbacks.onUpload(id, name); }, onUploadChunk: function(id, name, chunkData) { self._onUploadChunk(id, chunkData); self._options.callbacks.onUploadChunk(id, name, chunkData); }, onUploadChunkSuccess: function(id, chunkData, result, xhr) { self._options.callbacks.onUploadChunkSuccess.apply(self, arguments); }, onResume: function(id, name, chunkData) { return self._options.callbacks.onResume(id, name, chunkData); }, onAutoRetry: function(id, name, responseJSON, xhr) { return self._onAutoRetry.apply(self, arguments); }, onUuidChanged: function(id, newUuid) { self.log("Server requested UUID change from '" + self.getUuid(id) + "' to '" + newUuid + "'"); self.setUuid(id, newUuid); }, getName: qq.bind(self.getName, self), getUuid: qq.bind(self.getUuid, self), getSize: qq.bind(self.getSize, self) }; qq.each(this._options.request, function(prop, val) { options[prop] = val; }); if (additionalOptions) { qq.each(additionalOptions, function(key, val) { options[key] = val; }); } return new qq.UploadHandler(options, namespace); }, _createDeleteHandler: function() { var self = this; return new qq.DeleteFileAjaxRequester({ method: this._options.deleteFile.method.toUpperCase(), maxConnections: this._options.maxConnections, uuidParamName: this._options.request.uuidName, customHeaders: this._options.deleteFile.customHeaders, paramsStore: this._deleteFileParamsStore, endpointStore: this._deleteFileEndpointStore, demoMode: this._options.demoMode, cors: this._options.cors, log: qq.bind(self.log, self), onDelete: function(id) { self._onDelete(id); self._options.callbacks.onDelete(id); }, onDeleteComplete: function(id, xhrOrXdr, isError) { self._onDeleteComplete(id, xhrOrXdr, isError); self._options.callbacks.onDeleteComplete(id, xhrOrXdr, isError); } }); }, _createPasteHandler: function() { var self = this; return new qq.PasteSupport({ targetElement: this._options.paste.targetElement, callbacks: { log: qq.bind(self.log, self), pasteReceived: function(blob) { self._handleCheckedCallback({ name: "onPasteReceived", callback: qq.bind(self._options.callbacks.onPasteReceived, self, blob), onSuccess: qq.bind(self._handlePasteSuccess, self, blob), identifier: "pasted image" }); } } }); }, _createUploadDataTracker: function() { var self = this; return new qq.UploadData({ getName: function(id) { return self.getName(id); }, getUuid: function(id) { return self.getUuid(id); }, getSize: function(id) { return self.getSize(id); }, onStatusChange: function(id, oldStatus, newStatus) { self._onUploadStatusChange(id, oldStatus, newStatus); self._options.callbacks.onStatusChange(id, oldStatus, newStatus); } }); }, _onUploadStatusChange: function(id, oldStatus, newStatus) { // Make sure a "queued" retry attempt is canceled if the upload has been paused if (newStatus === qq.status.PAUSED) { clearTimeout(this._retryTimeouts[id]); } }, _handlePasteSuccess: function(blob, extSuppliedName) { var extension = blob.type.split("/")[1], name = extSuppliedName; /*jshint eqeqeq: true, eqnull: true*/ if (name == null) { name = this._options.paste.defaultName; } name += "." + extension; this.addBlobs({ name: name, blob: blob }); }, _preventLeaveInProgress: function(){ var self = this; this._disposeSupport.attach(window, "beforeunload", function(e){ if (self.getInProgress()) { e = e || window.event; // for ie, ff e.returnValue = self._options.messages.onLeave; // for webkit return self._options.messages.onLeave; } }); }, _onSubmit: function(id, name) { //nothing to do yet in core uploader }, _onProgress: function(id, name, loaded, total) { //nothing to do yet in core uploader }, _onComplete: function(id, name, result, xhr) { if (!result.success) { this._netUploadedOrQueued--; this._uploadData.setStatus(id, qq.status.UPLOAD_FAILED); } else { if (result.thumbnailUrl) { this._thumbnailUrls[id] = result.thumbnailUrl; } this._netUploaded++; this._uploadData.setStatus(id, qq.status.UPLOAD_SUCCESSFUL); } this._maybeParseAndSendUploadError(id, name, result, xhr); return result.success ? true : false; }, _onCancel: function(id, name) { this._netUploadedOrQueued--; clearTimeout(this._retryTimeouts[id]); var storedItemIndex = qq.indexOf(this._storedIds, id); if (!this._options.autoUpload && storedItemIndex >= 0) { this._storedIds.splice(storedItemIndex, 1); } this._uploadData.setStatus(id, qq.status.CANCELED); }, _isDeletePossible: function() { if (!qq.DeleteFileAjaxRequester || !this._options.deleteFile.enabled) { return false; } if (this._options.cors.expected) { if (qq.supportedFeatures.deleteFileCorsXhr) { return true; } if (qq.supportedFeatures.deleteFileCorsXdr && this._options.cors.allowXdr) { return true; } return false; } return true; }, _onSubmitDelete: function(id, onSuccessCallback, additionalMandatedParams) { var uuid = this.getUuid(id), adjustedOnSuccessCallback; if (onSuccessCallback) { adjustedOnSuccessCallback = qq.bind(onSuccessCallback, this, id, uuid, additionalMandatedParams); } if (this._isDeletePossible()) { return this._handleCheckedCallback({ name: "onSubmitDelete", callback: qq.bind(this._options.callbacks.onSubmitDelete, this, id), onSuccess: adjustedOnSuccessCallback || qq.bind(this._deleteHandler.sendDelete, this, id, uuid, additionalMandatedParams), identifier: id }); } else { this.log("Delete request ignored for ID " + id + ", delete feature is disabled or request not possible " + "due to CORS on a user agent that does not support pre-flighting.", "warn"); return false; } }, _onDelete: function(id) { this._uploadData.setStatus(id, qq.status.DELETING); }, _onDeleteComplete: function(id, xhrOrXdr, isError) { var name = this.getName(id); if (isError) { this._uploadData.setStatus(id, qq.status.DELETE_FAILED); this.log("Delete request for '" + name + "' has failed.", "error"); // For error reporing, we only have accesss to the response status if this is not // an `XDomainRequest`. if (xhrOrXdr.withCredentials === undefined) { this._options.callbacks.onError(id, name, "Delete request failed", xhrOrXdr); } else { this._options.callbacks.onError(id, name, "Delete request failed with response code " + xhrOrXdr.status, xhrOrXdr); } } else { this._netUploadedOrQueued--; this._netUploaded--; this._handler.expunge(id); this._uploadData.setStatus(id, qq.status.DELETED); this.log("Delete request for '" + name + "' has succeeded."); } }, _onUpload: function(id, name) { this._uploadData.setStatus(id, qq.status.UPLOADING); }, _onUploadChunk: function(id, chunkData) { //nothing to do in the base uploader }, _onInputChange: function(input) { var fileIndex; if (qq.supportedFeatures.ajaxUploading) { for (fileIndex = 0; fileIndex < input.files.length; fileIndex++) { this._annotateWithButtonId(input.files[fileIndex], input); } this.addFiles(input.files); } // Android 2.3.x will fire `onchange` even if no file has been selected else if (input.value.length > 0) { this.addFiles(input); } qq.each(this._buttons, function(idx, button) { button.reset(); }); }, _onBeforeAutoRetry: function(id, name) { this.log("Waiting " + this._options.retry.autoAttemptDelay + " seconds before retrying " + name + "..."); }, /** * Attempt to automatically retry a failed upload. * * @param id The file ID of the failed upload * @param name The name of the file associated with the failed upload * @param responseJSON Response from the server, parsed into a javascript object * @param xhr Ajax transport used to send the failed request * @param callback Optional callback to be invoked if a retry is prudent. * Invoked in lieu of asking the upload handler to retry. * @returns {boolean} true if an auto-retry will occur * @private */ _onAutoRetry: function(id, name, responseJSON, xhr, callback) { var self = this; self._preventRetries[id] = responseJSON[self._options.retry.preventRetryResponseProperty]; if (self._shouldAutoRetry(id, name, responseJSON)) { self._maybeParseAndSendUploadError.apply(self, arguments); self._options.callbacks.onAutoRetry(id, name, self._autoRetries[id] + 1); self._onBeforeAutoRetry(id, name); self._retryTimeouts[id] = setTimeout(function() { self.log("Retrying " + name + "..."); self._autoRetries[id]++; self._uploadData.setStatus(id, qq.status.UPLOAD_RETRYING); if (callback) { callback(id); } else { self._handler.retry(id); } }, self._options.retry.autoAttemptDelay * 1000); return true; } }, _shouldAutoRetry: function(id, name, responseJSON) { var uploadData = this._uploadData.retrieve({id: id}); /*jshint laxbreak: true */ if (!this._preventRetries[id] && this._options.retry.enableAuto && uploadData.status !== qq.status.PAUSED) { if (this._autoRetries[id] === undefined) { this._autoRetries[id] = 0; } return this._autoRetries[id] < this._options.retry.maxAutoAttempts; } return false; }, //return false if we should not attempt the requested retry _onBeforeManualRetry: function(id) { var itemLimit = this._options.validation.itemLimit; if (this._preventRetries[id]) { this.log("Retries are forbidden for id " + id, "warn"); return false; } else if (this._handler.isValid(id)) { var fileName = this.getName(id); if (this._options.callbacks.onManualRetry(id, fileName) === false) { return false; } if (itemLimit > 0 && this._netUploadedOrQueued+1 > itemLimit) { this._itemError("retryFailTooManyItems"); return false; } this.log("Retrying upload for '" + fileName + "' (id: " + id + ")..."); return true; } else { this.log("'" + id + "' is not a valid file ID", "error"); return false; } }, /** * Conditionally orders a manual retry of a failed upload. * * @param id File ID of the failed upload * @param callback Optional callback to invoke if a retry is prudent. * In lieu of asking the upload handler to retry. * @returns {boolean} true if a manual retry will occur * @private */ _manualRetry: function(id, callback) { if (this._onBeforeManualRetry(id)) { this._netUploadedOrQueued++; this._uploadData.setStatus(id, qq.status.UPLOAD_RETRYING); if (callback) { callback(id); } else { this._handler.retry(id); } return true; } }, _maybeParseAndSendUploadError: function(id, name, response, xhr) { // Assuming no one will actually set the response code to something other than 200 // and still set 'success' to true... if (!response.success){ if (xhr && xhr.status !== 200 && !response.error) { this._options.callbacks.onError(id, name, "XHR returned response code " + xhr.status, xhr); } else { var errorReason = response.error ? response.error : this._options.text.defaultResponseError; this._options.callbacks.onError(id, name, errorReason, xhr); } } }, _prepareItemsForUpload: function(items, params, endpoint) { var validationDescriptors = this._getValidationDescriptors(items), buttonId = this._getButtonId(items[0].file), button = this._getButton(buttonId); this._handleCheckedCallback({ name: "onValidateBatch", callback: qq.bind(this._options.callbacks.onValidateBatch, this, validationDescriptors, button), onSuccess: qq.bind(this._onValidateBatchCallbackSuccess, this, validationDescriptors, items, params, endpoint, button), onFailure: qq.bind(this._onValidateBatchCallbackFailure, this, items), identifier: "batch validation" }); }, _upload: function(id, params, endpoint) { var name = this.getName(id); if (params) { this.setParams(params, id); } if (endpoint) { this.setEndpoint(endpoint, id); } this._handleCheckedCallback({ name: "onSubmit", callback: qq.bind(this._options.callbacks.onSubmit, this, id, name), onSuccess: qq.bind(this._onSubmitCallbackSuccess, this, id, name), onFailure: qq.bind(this._fileOrBlobRejected, this, id, name), identifier: id }); }, _onSubmitCallbackSuccess: function(id, name) { var buttonId; if (qq.supportedFeatures.ajaxUploading) { buttonId = this._handler.getFile(id).qqButtonId; } else { buttonId = this._getButtonId(this._handler.getInput(id)); } if (buttonId) { this._buttonIdsForFileIds[id] = buttonId; } this._onSubmit.apply(this, arguments); this._uploadData.setStatus(id, qq.status.SUBMITTED); this._onSubmitted.apply(this, arguments); this._options.callbacks.onSubmitted.apply(this, arguments); if (this._options.autoUpload) { if (!this._handler.upload(id)) { this._uploadData.setStatus(id, qq.status.QUEUED); } } else { this._storeForLater(id); } }, _onSubmitted: function(id) { //nothing to do in the base uploader }, _storeForLater: function(id) { this._storedIds.push(id); }, _onValidateBatchCallbackSuccess: function(validationDescriptors, items, params, endpoint, button) { var errorMessage, itemLimit = this._options.validation.itemLimit, proposedNetFilesUploadedOrQueued = this._netUploadedOrQueued; if (itemLimit === 0 || proposedNetFilesUploadedOrQueued <= itemLimit) { if (items.length > 0) { this._handleCheckedCallback({ name: "onValidate", callback: qq.bind(this._options.callbacks.onValidate, this, validationDescriptors[0], button), onSuccess: qq.bind(this._onValidateCallbackSuccess, this, items, 0, params, endpoint), onFailure: qq.bind(this._onValidateCallbackFailure, this, items, 0, params, endpoint), identifier: "Item '" + items[0].file.name + "', size: " + items[0].file.size }); } else { this._itemError("noFilesError"); } } else { this._onValidateBatchCallbackFailure(items); errorMessage = this._options.messages.tooManyItemsError .replace(/\{netItems\}/g, proposedNetFilesUploadedOrQueued) .replace(/\{itemLimit\}/g, itemLimit); this._batchError(errorMessage); } }, _onValidateBatchCallbackFailure: function(fileWrappers) { var self = this; qq.each(fileWrappers, function(idx, fileWrapper) { self._fileOrBlobRejected(fileWrapper.id); }); }, _onValidateCallbackSuccess: function(items, index, params, endpoint) { var self = this, nextIndex = index+1, validationDescriptor = this._getValidationDescriptor(items[index].file); this._validateFileOrBlobData(items[index], validationDescriptor) .then( function() { self._upload(items[index].id, params, endpoint); self._maybeProcessNextItemAfterOnValidateCallback(true, items, nextIndex, params, endpoint); }, function() { self._maybeProcessNextItemAfterOnValidateCallback(false, items, nextIndex, params, endpoint); } ); }, _onValidateCallbackFailure: function(items, index, params, endpoint) { var nextIndex = index+ 1; this._fileOrBlobRejected(items[0].id, items[0].file.name); this._maybeProcessNextItemAfterOnValidateCallback(false, items, nextIndex, params, endpoint); }, _maybeProcessNextItemAfterOnValidateCallback: function(validItem, items, index, params, endpoint) { var self = this; if (items.length > index) { if (validItem || !this._options.validation.stopOnFirstInvalidFile) { //use setTimeout to prevent a stack overflow with a large number of files in the batch & non-promissory callbacks setTimeout(function() { var validationDescriptor = self._getValidationDescriptor(items[index].file); self._handleCheckedCallback({ name: "onValidate", callback: qq.bind(self._options.callbacks.onValidate, self, items[index].file), onSuccess: qq.bind(self._onValidateCallbackSuccess, self, items, index, params, endpoint), onFailure: qq.bind(self._onValidateCallbackFailure, self, items, index, params, endpoint), identifier: "Item '" + validationDescriptor.name + "', size: " + validationDescriptor.size }); }, 0); } else if (!validItem) { for (; index < items.length; index++) { self._fileOrBlobRejected(items[index].id); } } } }, /** * Performs some internal validation checks on an item, defined in the `validation` option. * * @param fileWrapper Wrapper containing a `file` along with an `id` * @param validationDescriptor Normalized information about the item (`size`, `name`). * @returns qq.Promise with appropriate callbacks invoked depending on the validity of the file * @private */ _validateFileOrBlobData: function(fileWrapper, validationDescriptor) { var self = this, file = fileWrapper.file, name = validationDescriptor.name, size = validationDescriptor.size, buttonId = this._getButtonId(file), validationBase = this._getValidationBase(buttonId), validityChecker = new qq.Promise(); validityChecker.then( function() {}, function() { self._fileOrBlobRejected(fileWrapper.id, name); }); if (qq.isFileOrInput(file) && !this._isAllowedExtension(validationBase.allowedExtensions, name)) { this._itemError("typeError", name, file); return validityChecker.failure(); } if (size === 0) { this._itemError("emptyError", name, file); return validityChecker.failure(); } if (size && validationBase.sizeLimit && size > validationBase.sizeLimit) { this._itemError("sizeError", name, file); return validityChecker.failure(); } if (size && size < validationBase.minSizeLimit) { this._itemError("minSizeError", name, file); return validityChecker.failure(); } if (qq.ImageValidation && qq.supportedFeatures.imagePreviews && qq.isFile(file)) { new qq.ImageValidation(file, qq.bind(self.log, self)).validate(validationBase.image).then( validityChecker.success, function(errorCode) { self._itemError(errorCode + "ImageError", name, file); validityChecker.failure(); } ); } else { validityChecker.success(); } return validityChecker; }, _fileOrBlobRejected: function(id) { this._netUploadedOrQueued--; this._uploadData.setStatus(id, qq.status.REJECTED); }, /** * Constructs and returns a message that describes an item/file error. Also calls `onError` callback. * * @param code REQUIRED - a code that corresponds to a stock message describing this type of error * @param maybeNameOrNames names of the items that have failed, if applicable * @param item `File`, `Blob`, or `` * @private */ _itemError: function(code, maybeNameOrNames, item) { var message = this._options.messages[code], allowedExtensions = [], names = [].concat(maybeNameOrNames), name = names[0], buttonId = this._getButtonId(item), validationBase = this._getValidationBase(buttonId), extensionsForMessage, placeholderMatch; function r(name, replacement){ message = message.replace(name, replacement); } qq.each(validationBase.allowedExtensions, function(idx, allowedExtension) { /** * If an argument is not a string, ignore it. Added when a possible issue with MooTools hijacking the * `allowedExtensions` array was discovered. See case #735 in the issue tracker for more details. */ if (qq.isString(allowedExtension)) { allowedExtensions.push(allowedExtension); } }); extensionsForMessage = allowedExtensions.join(", ").toLowerCase(); r("{file}", this._options.formatFileName(name)); r("{extensions}", extensionsForMessage); r("{sizeLimit}", this._formatSize(validationBase.sizeLimit)); r("{minSizeLimit}", this._formatSize(validationBase.minSizeLimit)); placeholderMatch = message.match(/(\{\w+\})/g); if (placeholderMatch !== null) { qq.each(placeholderMatch, function(idx, placeholder) { r(placeholder, names[idx]); }); } this._options.callbacks.onError(null, name, message, undefined); return message; }, _batchError: function(message) { this._options.callbacks.onError(null, null, message, undefined); }, _isAllowedExtension: function(allowed, fileName) { var valid = false; if (!allowed.length) { return true; } qq.each(allowed, function(idx, allowedExt) { /** * If an argument is not a string, ignore it. Added when a possible issue with MooTools hijacking the * `allowedExtensions` array was discovered. See case #735 in the issue tracker for more details. */ if (qq.isString(allowedExt)) { /*jshint eqeqeq: true, eqnull: true*/ var extRegex = new RegExp("\\." + allowedExt + "$", "i"); if (fileName.match(extRegex) != null) { valid = true; return false; } } }); return valid; }, _formatSize: function(bytes){ var i = -1; do { bytes = bytes / 1000; i++; } while (bytes > 999); return Math.max(bytes, 0.1).toFixed(1) + this._options.text.sizeSymbols[i]; }, _wrapCallbacks: function() { var self, safeCallback; self = this; safeCallback = function(name, callback, args) { var errorMsg; try { return callback.apply(self, args); } catch (exception) { errorMsg = exception.message || exception.toString(); self.log("Caught exception in '" + name + "' callback - " + errorMsg, "error"); } }; /* jshint forin: false, loopfunc: true */ for (var prop in this._options.callbacks) { (function() { var callbackName, callbackFunc; callbackName = prop; callbackFunc = self._options.callbacks[callbackName]; self._options.callbacks[callbackName] = function() { return safeCallback(callbackName, callbackFunc, arguments); }; }()); } }, _parseFileOrBlobDataName: function(fileOrBlobData) { var name; if (qq.isFileOrInput(fileOrBlobData)) { if (fileOrBlobData.value) { // it is a file input // get input value and remove path to normalize name = fileOrBlobData.value.replace(/.*(\/|\\)/, ""); } else { // fix missing properties in Safari 4 and firefox 11.0a2 name = (fileOrBlobData.fileName !== null && fileOrBlobData.fileName !== undefined) ? fileOrBlobData.fileName : fileOrBlobData.name; } } else { name = fileOrBlobData.name; } return name; }, _parseFileOrBlobDataSize: function(fileOrBlobData) { var size; if (qq.isFileOrInput(fileOrBlobData)) { if (fileOrBlobData.value === undefined) { // fix missing properties in Safari 4 and firefox 11.0a2 size = (fileOrBlobData.fileSize !== null && fileOrBlobData.fileSize !== undefined) ? fileOrBlobData.fileSize : fileOrBlobData.size; } } else { size = fileOrBlobData.blob.size; } return size; }, _getValidationDescriptor: function(fileOrBlobData) { var fileDescriptor = {}, name = this._parseFileOrBlobDataName(fileOrBlobData), size = this._parseFileOrBlobDataSize(fileOrBlobData); fileDescriptor.name = name; if (size !== undefined) { fileDescriptor.size = size; } return fileDescriptor; }, _getValidationDescriptors: function(fileWrappers) { var self = this, fileDescriptors = []; qq.each(fileWrappers, function(idx, fileWrapper) { fileDescriptors.push(self._getValidationDescriptor(fileWrapper.file)); }); return fileDescriptors; }, _createParamsStore: function(type) { var paramsStore = {}, self = this; return { setParams: function(params, id) { var paramsCopy = {}; qq.extend(paramsCopy, params); paramsStore[id] = paramsCopy; }, getParams: function(id) { /*jshint eqeqeq: true, eqnull: true*/ var paramsCopy = {}; if (id != null && paramsStore[id]) { qq.extend(paramsCopy, paramsStore[id]); } else { qq.extend(paramsCopy, self._options[type].params); } return paramsCopy; }, remove: function(fileId) { return delete paramsStore[fileId]; }, reset: function() { paramsStore = {}; } }; }, _createEndpointStore: function(type) { var endpointStore = {}, self = this; return { setEndpoint: function(endpoint, id) { endpointStore[id] = endpoint; }, getEndpoint: function(id) { /*jshint eqeqeq: true, eqnull: true*/ if (id != null && endpointStore[id]) { return endpointStore[id]; } return self._options[type].endpoint; }, remove: function(fileId) { return delete endpointStore[fileId]; }, reset: function() { endpointStore = {}; } }; }, // Allows camera access on either the default or an extra button for iOS devices. _handleCameraAccess: function() { if (this._options.camera.ios && qq.ios()) { var acceptIosCamera = "image/*;capture=camera", button = this._options.camera.button, buttonId = button ? this._getButtonId(button) : this._defaultButtonId, optionRoot = this._options; // If we are not targeting the default button, it is an "extra" button if (buttonId && buttonId !== this._defaultButtonId) { optionRoot = this._extraButtonSpecs[buttonId]; } // Camera access won't work in iOS if the `multiple` attribute is present on the file input optionRoot.multiple = false; // update the options if (optionRoot.validation.acceptFiles === null) { optionRoot.validation.acceptFiles = acceptIosCamera; } else { optionRoot.validation.acceptFiles += "," + acceptIosCamera; } // update the already-created button qq.each(this._buttons, function(idx, button) { if (button.getButtonId() === buttonId) { button.setMultiple(optionRoot.multiple); button.setAcceptFiles(optionRoot.acceptFiles); return false; } }); } }, // Get the validation options for this button. Could be the default validation option // or a specific one assigned to this particular button. _getValidationBase: function(buttonId) { var extraButtonSpec = this._extraButtonSpecs[buttonId]; return extraButtonSpec ? extraButtonSpec.validation : this._options.validation; } }; }()); /*globals qq*/ (function(){ "use strict"; qq.FineUploaderBasic = function(o) { // These options define FineUploaderBasic mode. this._options = { debug: false, button: null, multiple: true, maxConnections: 3, disableCancelForFormUploads: false, autoUpload: true, request: { endpoint: "/server/upload", params: {}, paramsInBody: true, customHeaders: {}, forceMultipart: true, inputName: "qqfile", uuidName: "qquuid", totalFileSizeName: "qqtotalfilesize", filenameParam: "qqfilename" }, validation: { allowedExtensions: [], sizeLimit: 0, minSizeLimit: 0, itemLimit: 0, stopOnFirstInvalidFile: true, acceptFiles: null, image: { maxHeight: 0, maxWidth: 0, minHeight: 0, minWidth: 0 } }, callbacks: { onSubmit: function(id, name){}, onSubmitted: function(id, name){}, onComplete: function(id, name, responseJSON, maybeXhr){}, onCancel: function(id, name){}, onUpload: function(id, name){}, onUploadChunk: function(id, name, chunkData){}, onUploadChunkSuccess: function(id, chunkData, responseJSON, xhr){}, onResume: function(id, fileName, chunkData){}, onProgress: function(id, name, loaded, total){}, onError: function(id, name, reason, maybeXhrOrXdr) {}, onAutoRetry: function(id, name, attemptNumber) {}, onManualRetry: function(id, name) {}, onValidateBatch: function(fileOrBlobData) {}, onValidate: function(fileOrBlobData) {}, onSubmitDelete: function(id) {}, onDelete: function(id){}, onDeleteComplete: function(id, xhrOrXdr, isError){}, onPasteReceived: function(blob) {}, onStatusChange: function(id, oldStatus, newStatus) {}, onSessionRequestComplete: function(response, success, xhrOrXdr) {} }, messages: { typeError: "{file} has an invalid extension. Valid extension(s): {extensions}.", sizeError: "{file} is too large, maximum file size is {sizeLimit}.", minSizeError: "{file} is too small, minimum file size is {minSizeLimit}.", emptyError: "{file} is empty, please select files again without it.", noFilesError: "No files to upload.", tooManyItemsError: "Too many items ({netItems}) would be uploaded. Item limit is {itemLimit}.", maxHeightImageError: "Image is too tall.", maxWidthImageError: "Image is too wide.", minHeightImageError: "Image is not tall enough.", minWidthImageError: "Image is not wide enough.", retryFailTooManyItems: "Retry failed - you have reached your file limit.", onLeave: "The files are being uploaded, if you leave now the upload will be canceled." }, retry: { enableAuto: false, maxAutoAttempts: 3, autoAttemptDelay: 5, preventRetryResponseProperty: "preventRetry" }, classes: { buttonHover: "qq-upload-button-hover", buttonFocus: "qq-upload-button-focus" }, chunking: { enabled: false, partSize: 2000000, paramNames: { partIndex: "qqpartindex", partByteOffset: "qqpartbyteoffset", chunkSize: "qqchunksize", totalFileSize: "qqtotalfilesize", totalParts: "qqtotalparts" } }, resume: { enabled: false, id: null, cookiesExpireIn: 7, //days paramNames: { resuming: "qqresume" } }, formatFileName: function(fileOrBlobName) { if (fileOrBlobName !== undefined && fileOrBlobName.length > 33) { fileOrBlobName = fileOrBlobName.slice(0, 19) + "..." + fileOrBlobName.slice(-14); } return fileOrBlobName; }, text: { defaultResponseError: "Upload failure reason unknown", sizeSymbols: ["kB", "MB", "GB", "TB", "PB", "EB"] }, deleteFile : { enabled: false, method: "DELETE", endpoint: "/server/upload", customHeaders: {}, params: {} }, cors: { expected: false, sendCredentials: false, allowXdr: false }, blobs: { defaultName: "misc_data" }, paste: { targetElement: null, defaultName: "pasted_image" }, camera: { ios: false, // if ios is true: button is null means target the default button, otherwise target the button specified button: null }, // This refers to additional upload buttons to be handled by Fine Uploader. // Each element is an object, containing `element` as the only required // property. The `element` must be a container that will ultimately // contain an invisible `` created by Fine Uploader. // Optional properties of each object include `multiple`, `validation`, // and `folders`. extraButtons: [], // Depends on the session module. Used to query the server for an initial file list // during initialization and optionally after a `reset`. session: { endpoint: null, params: {}, customHeaders: {}, refreshOnReset: true } }; // Replace any default options with user defined ones qq.extend(this._options, o, true); this._buttons = []; this._extraButtonSpecs = {}; this._buttonIdsForFileIds = []; this._wrapCallbacks(); this._disposeSupport = new qq.DisposeSupport(); this._storedIds = []; this._autoRetries = []; this._retryTimeouts = []; this._preventRetries = []; this._thumbnailUrls = []; this._netUploadedOrQueued = 0; this._netUploaded = 0; this._uploadData = this._createUploadDataTracker(); this._paramsStore = this._createParamsStore("request"); this._deleteFileParamsStore = this._createParamsStore("deleteFile"); this._endpointStore = this._createEndpointStore("request"); this._deleteFileEndpointStore = this._createEndpointStore("deleteFile"); this._handler = this._createUploadHandler(); this._deleteHandler = qq.DeleteFileAjaxRequester && this._createDeleteHandler(); if (this._options.button) { this._defaultButtonId = this._createUploadButton({element: this._options.button}).getButtonId(); } this._generateExtraButtonSpecs(); this._handleCameraAccess(); if (this._options.paste.targetElement) { if (qq.PasteSupport) { this._pasteHandler = this._createPasteHandler(); } else { qq.log("Paste support module not found", "info"); } } this._preventLeaveInProgress(); this._imageGenerator = qq.ImageGenerator && new qq.ImageGenerator(qq.bind(this.log, this)); this._refreshSessionData(); }; // Define the private & public API methods. qq.FineUploaderBasic.prototype = qq.basePublicApi; qq.extend(qq.FineUploaderBasic.prototype, qq.basePrivateApi); }()); /*globals qq, XDomainRequest*/ /** Generic class for sending non-upload ajax requests and handling the associated responses **/ qq.AjaxRequester = function (o) { "use strict"; var log, shouldParamsBeInQueryString, queue = [], requestData = [], options = { validMethods: ["POST"], method: "POST", contentType: "application/x-www-form-urlencoded", maxConnections: 3, customHeaders: {}, endpointStore: {}, paramsStore: {}, mandatedParams: {}, allowXRequestedWithAndCacheControl: true, successfulResponseCodes: { "DELETE": [200, 202, 204], "POST": [200, 204], "GET": [200] }, cors: { expected: false, sendCredentials: false }, log: function (str, level) {}, onSend: function (id) {}, onComplete: function (id, xhrOrXdr, isError) {} }; qq.extend(options, o); log = options.log; if (qq.indexOf(options.validMethods, options.method) < 0) { throw new Error("'" + options.method + "' is not a supported method for this type of request!"); } // [Simple methods](http://www.w3.org/TR/cors/#simple-method) // are defined by the W3C in the CORS spec as a list of methods that, in part, // make a CORS request eligible to be exempt from preflighting. function isSimpleMethod() { return qq.indexOf(["GET", "POST", "HEAD"], options.method) >= 0; } // [Simple headers](http://www.w3.org/TR/cors/#simple-header) // are defined by the W3C in the CORS spec as a list of headers that, in part, // make a CORS request eligible to be exempt from preflighting. function containsNonSimpleHeaders(headers) { var containsNonSimple = false; qq.each(containsNonSimple, function(idx, header) { if (qq.indexOf(["Accept", "Accept-Language", "Content-Language", "Content-Type"], header) < 0) { containsNonSimple = true; return false; } }); return containsNonSimple; } function isXdr(xhr) { //The `withCredentials` test is a commonly accepted way to determine if XHR supports CORS. return options.cors.expected && xhr.withCredentials === undefined; } // Returns either a new `XMLHttpRequest` or `XDomainRequest` instance. function getCorsAjaxTransport() { var xhrOrXdr; if (window.XMLHttpRequest || window.ActiveXObject) { xhrOrXdr = qq.createXhrInstance(); if (xhrOrXdr.withCredentials === undefined) { xhrOrXdr = new XDomainRequest(); } } return xhrOrXdr; } // Returns either a new XHR/XDR instance, or an existing one for the associated `File` or `Blob`. function getXhrOrXdr(id, dontCreateIfNotExist) { var xhrOrXdr = requestData[id].xhr; if (!xhrOrXdr && !dontCreateIfNotExist) { if (options.cors.expected) { xhrOrXdr = getCorsAjaxTransport(); } else { xhrOrXdr = qq.createXhrInstance(); } requestData[id].xhr = xhrOrXdr; } return xhrOrXdr; } // Removes element from queue, sends next request function dequeue(id) { var i = qq.indexOf(queue, id), max = options.maxConnections, nextId; delete requestData[id]; queue.splice(i, 1); if (queue.length >= max && i < max) { nextId = queue[max - 1]; sendRequest(nextId); } } function onComplete(id, xdrError) { var xhr = getXhrOrXdr(id), method = options.method, isError = xdrError === true; dequeue(id); if (isError) { log(method + " request for " + id + " has failed", "error"); } else if (!isXdr(xhr) && !isResponseSuccessful(xhr.status)) { isError = true; log(method + " request for " + id + " has failed - response code " + xhr.status, "error"); } options.onComplete(id, xhr, isError); } function getParams(id) { var onDemandParams = requestData[id].additionalParams, mandatedParams = options.mandatedParams, params; if (options.paramsStore.getParams) { params = options.paramsStore.getParams(id); } if (onDemandParams) { qq.each(onDemandParams, function (name, val) { params = params || {}; params[name] = val; }); } if (mandatedParams) { qq.each(mandatedParams, function (name, val) { params = params || {}; params[name] = val; }); } return params; } function sendRequest(id) { var xhr = getXhrOrXdr(id), method = options.method, params = getParams(id), payload = requestData[id].payload, url; options.onSend(id); url = createUrl(id, params); // XDR and XHR status detection APIs differ a bit. if (isXdr(xhr)) { xhr.onload = getXdrLoadHandler(id); xhr.onerror = getXdrErrorHandler(id); } else { xhr.onreadystatechange = getXhrReadyStateChangeHandler(id); } // The last parameter is assumed to be ignored if we are actually using `XDomainRequest`. xhr.open(method, url, true); // Instruct the transport to send cookies along with the CORS request, // unless we are using `XDomainRequest`, which is not capable of this. if (options.cors.expected && options.cors.sendCredentials && !isXdr(xhr)) { xhr.withCredentials = true; } setHeaders(id); log("Sending " + method + " request for " + id); if (payload) { xhr.send(payload); } else if (shouldParamsBeInQueryString || !params) { xhr.send(); } else if (params && options.contentType.toLowerCase().indexOf("application/x-www-form-urlencoded") >= 0) { xhr.send(qq.obj2url(params, "")); } else if (params && options.contentType.toLowerCase().indexOf("application/json") >= 0) { xhr.send(JSON.stringify(params)); } else { xhr.send(params); } } function createUrl(id, params) { var endpoint = options.endpointStore.getEndpoint(id), addToPath = requestData[id].addToPath; /*jshint -W116,-W041 */ if (addToPath != undefined) { endpoint += "/" + addToPath; } if (shouldParamsBeInQueryString && params) { return qq.obj2url(params, endpoint); } else { return endpoint; } } // Invoked by the UA to indicate a number of possible states that describe // a live `XMLHttpRequest` transport. function getXhrReadyStateChangeHandler(id) { return function () { if (getXhrOrXdr(id).readyState === 4) { onComplete(id); } }; } // This will be called by IE to indicate **success** for an associated // `XDomainRequest` transported request. function getXdrLoadHandler(id) { return function () { onComplete(id); }; } // This will be called by IE to indicate **failure** for an associated // `XDomainRequest` transported request. function getXdrErrorHandler(id) { return function () { onComplete(id, true); }; } function setHeaders(id) { var xhr = getXhrOrXdr(id), customHeaders = options.customHeaders, onDemandHeaders = requestData[id].additionalHeaders || {}, method = options.method, allHeaders = {}; // If XDomainRequest is being used, we can't set headers, so just ignore this block. if (!isXdr(xhr)) { // Only attempt to add X-Requested-With & Cache-Control if permitted if (options.allowXRequestedWithAndCacheControl) { // Do not add X-Requested-With & Cache-Control if this is a cross-origin request // OR the cross-origin request contains a non-simple method or header. // This is done to ensure a preflight is not triggered exclusively based on the // addition of these 2 non-simple headers. if (!options.cors.expected || (!isSimpleMethod() || containsNonSimpleHeaders(customHeaders))) { xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest"); xhr.setRequestHeader("Cache-Control", "no-cache"); } } if (options.contentType && (method === "POST" || method === "PUT")) { xhr.setRequestHeader("Content-Type", options.contentType); } qq.extend(allHeaders, customHeaders); qq.extend(allHeaders, onDemandHeaders); qq.each(allHeaders, function (name, val) { xhr.setRequestHeader(name, val); }); } } function isResponseSuccessful(responseCode) { return qq.indexOf(options.successfulResponseCodes[options.method], responseCode) >= 0; } function prepareToSend(id, addToPath, additionalParams, additionalHeaders, payload) { requestData[id] = { addToPath: addToPath, additionalParams: additionalParams, additionalHeaders: additionalHeaders, payload: payload }; var len = queue.push(id); // if too many active connections, wait... if (len <= options.maxConnections) { sendRequest(id); } } shouldParamsBeInQueryString = options.method === "GET" || options.method === "DELETE"; qq.extend(this, { // Start the process of sending the request. The ID refers to the file associated with the request. initTransport: function(id) { var path, params, headers, payload; return { // Optionally specify the end of the endpoint path for the request. withPath: function(appendToPath) { path = appendToPath; return this; }, // Optionally specify additional parameters to send along with the request. // These will be added to the query string for GET/DELETE requests or the payload // for POST/PUT requests. The Content-Type of the request will be used to determine // how these parameters should be formatted as well. withParams: function(additionalParams) { params = additionalParams; return this; }, // Optionally specify additional headers to send along with the request. withHeaders: function(additionalHeaders) { headers = additionalHeaders; return this; }, // Optionally specify a payload/body for the request. withPayload: function(thePayload) { payload = thePayload; return this; }, // Send the constructed request. send: function() { prepareToSend(id, path, params, headers, payload); } }; } }); }; /*globals qq*/ /** * Base upload handler module. Delegates to more specific handlers. * * @param o Options. Passed along to the specific handler submodule as well. * @param namespace [optional] Namespace for the specific handler. */ qq.UploadHandler = function(o, namespace) { "use strict"; var queue = [], options, log, handlerImpl; // Default options, can be overridden by the user options = { debug: false, forceMultipart: true, paramsInBody: false, paramsStore: {}, endpointStore: {}, filenameParam: "qqfilename", cors: { expected: false, sendCredentials: false }, maxConnections: 3, // maximum number of concurrent uploads uuidName: "qquuid", totalFileSizeName: "qqtotalfilesize", chunking: { enabled: false, partSize: 2000000, //bytes paramNames: { partIndex: "qqpartindex", partByteOffset: "qqpartbyteoffset", chunkSize: "qqchunksize", totalParts: "qqtotalparts", filename: "qqfilename" } }, resume: { enabled: false, id: null, cookiesExpireIn: 7, //days paramNames: { resuming: "qqresume" } }, log: function(str, level) {}, onProgress: function(id, fileName, loaded, total){}, onComplete: function(id, fileName, response, xhr){}, onCancel: function(id, fileName){}, onUpload: function(id, fileName){}, onUploadChunk: function(id, fileName, chunkData){}, onUploadChunkSuccess: function(id, chunkData, response, xhr){}, onAutoRetry: function(id, fileName, response, xhr){}, onResume: function(id, fileName, chunkData){}, onUuidChanged: function(id, newUuid){}, getName: function(id) {} }; qq.extend(options, o); log = options.log; /** * Removes element from queue, starts upload of next */ function dequeue(id) { var i = qq.indexOf(queue, id), max = options.maxConnections, nextId; if (i >= 0) { queue.splice(i, 1); if (queue.length >= max && i < max){ nextId = queue[max-1]; handlerImpl.upload(nextId); } } } function cancelSuccess(id) { log("Cancelling " + id); options.paramsStore.remove(id); dequeue(id); } function determineHandlerImpl() { var handlerType = namespace ? qq[namespace] : qq, handlerModuleSubtype = qq.supportedFeatures.ajaxUploading ? "Xhr" : "Form"; handlerImpl = new handlerType["UploadHandler" + handlerModuleSubtype]( options, {onUploadComplete: dequeue, onUuidChanged: options.onUuidChanged, getName: options.getName, getUuid: options.getUuid, getSize: options.getSize, log: log} ); } qq.extend(this, { /** * Adds file or file input to the queue * @returns id **/ add: function(id, file) { return handlerImpl.add.apply(this, arguments); }, /** * Sends the file identified by id */ upload: function(id) { var len = queue.push(id); // if too many active uploads, wait... if (len <= options.maxConnections){ handlerImpl.upload(id); return true; } return false; }, retry: function(id) { var i = qq.indexOf(queue, id); if (i >= 0) { return handlerImpl.upload(id, true); } else { return this.upload(id); } }, /** * Cancels file upload by id */ cancel: function(id) { var cancelRetVal = handlerImpl.cancel(id); if (cancelRetVal instanceof qq.Promise) { cancelRetVal.then(function() { cancelSuccess(id); }); } else if (cancelRetVal !== false) { cancelSuccess(id); } }, /** * Cancels all queued or in-progress uploads */ cancelAll: function() { var self = this, queueCopy = []; qq.extend(queueCopy, queue); qq.each(queueCopy, function(idx, fileId) { self.cancel(fileId); }); queue = []; }, getFile: function(id) { if (handlerImpl.getFile) { return handlerImpl.getFile(id); } }, getInput: function(id) { if (handlerImpl.getInput) { return handlerImpl.getInput(id); } }, reset: function() { log("Resetting upload handler"); this.cancelAll(); queue = []; handlerImpl.reset(); }, expunge: function(id) { if (this.isValid(id)) { return handlerImpl.expunge(id); } }, /** * Determine if the file exists. */ isValid: function(id) { return handlerImpl.isValid(id); }, getResumableFilesData: function() { if (handlerImpl.getResumableFilesData) { return handlerImpl.getResumableFilesData(); } return []; }, /** * This may or may not be implemented, depending on the handler. For handlers where a third-party ID is * available (such as the "key" for Amazon S3), this will return that value. Otherwise, the return value * will be undefined. * * @param id Internal file ID * @returns {*} Some identifier used by a 3rd-party service involved in the upload process */ getThirdPartyFileId: function(id) { if (handlerImpl.getThirdPartyFileId && this.isValid(id)) { return handlerImpl.getThirdPartyFileId(id); } }, /** * Attempts to pause the associated upload if the specific handler supports this and the file is "valid". * @param id ID of the upload/file to pause * @returns {boolean} true if the upload was paused */ pause: function(id) { if (handlerImpl.pause && this.isValid(id) && handlerImpl.pause(id)) { dequeue(id); return true; } } }); determineHandlerImpl(); }; /* globals qq */ /** * Common APIs exposed to creators of upload via form/iframe handlers. This is reused and possibly overridden * in some cases by specific form upload handlers. * * @param internalApi Object that will be filled with internal API methods * @param spec Options/static values used to configure this handler * @param proxy Callbacks & methods used to query for or push out data/changes * @constructor */ qq.UploadHandlerFormApi = function(internalApi, spec, proxy) { "use strict"; var formHandlerInstanceId = qq.getUniqueId(), onloadCallbacks = {}, detachLoadEvents = {}, postMessageCallbackTimers = {}, publicApi = this, isCors = spec.isCors, fileState = spec.fileState, inputName = spec.inputName, onCancel = proxy.onCancel, onUuidChanged = proxy.onUuidChanged, getName = proxy.getName, getUuid = proxy.getUuid, log = proxy.log, corsMessageReceiver = new qq.WindowReceiveMessage({log: log}); /** * Remove any trace of the file from the handler. * * @param id ID of the associated file */ function expungeFile(id) { delete detachLoadEvents[id]; delete fileState[id]; // If we are dealing with CORS, we might still be waiting for a response from a loaded iframe. // In that case, terminate the timer waiting for a message from the loaded iframe // and stop listening for any more messages coming from this iframe. if (isCors) { clearTimeout(postMessageCallbackTimers[id]); delete postMessageCallbackTimers[id]; corsMessageReceiver.stopReceivingMessages(id); } var iframe = document.getElementById(internalApi.getIframeName(id)); if (iframe) { // To cancel request set src to something else. We use src="javascript:false;" // because it doesn't trigger ie6 prompt on https iframe.setAttribute("src", "java" + String.fromCharCode(115) + "cript:false;"); //deal with "JSLint: javascript URL" warning, which apparently cannot be turned off qq(iframe).remove(); } } /** * If we are in CORS mode, we must listen for messages (containing the server response) from the associated * iframe, since we cannot directly parse the content of the iframe due to cross-origin restrictions. * * @param iframe Listen for messages on this iframe. * @param callback Invoke this callback with the message from the iframe. */ function registerPostMessageCallback(iframe, callback) { var iframeName = iframe.id, fileId = getFileIdForIframeName(iframeName), uuid = getUuid(fileId); onloadCallbacks[uuid] = callback; // When the iframe has loaded (after the server responds to an upload request) // declare the attempt a failure if we don't receive a valid message shortly after the response comes in. detachLoadEvents[fileId] = qq(iframe).attach("load", function() { if (fileState[fileId].input) { log("Received iframe load event for CORS upload request (iframe name " + iframeName + ")"); postMessageCallbackTimers[iframeName] = setTimeout(function() { var errorMessage = "No valid message received from loaded iframe for iframe name " + iframeName; log(errorMessage, "error"); callback({ error: errorMessage }); }, 1000); } }); // Listen for messages coming from this iframe. When a message has been received, cancel the timer // that declares the upload a failure if a message is not received within a reasonable amount of time. corsMessageReceiver.receiveMessage(iframeName, function(message) { log("Received the following window message: '" + message + "'"); var fileId = getFileIdForIframeName(iframeName), response = internalApi.parseJsonResponse(fileId, message), uuid = response.uuid, onloadCallback; if (uuid && onloadCallbacks[uuid]) { log("Handling response for iframe name " + iframeName); clearTimeout(postMessageCallbackTimers[iframeName]); delete postMessageCallbackTimers[iframeName]; internalApi.detachLoadEvent(iframeName); onloadCallback = onloadCallbacks[uuid]; delete onloadCallbacks[uuid]; corsMessageReceiver.stopReceivingMessages(iframeName); onloadCallback(response); } else if (!uuid) { log("'" + message + "' does not contain a UUID - ignoring."); } }); } /** * Generates an iframe to be used as a target for upload-related form submits. This also adds the iframe * to the current `document`. Note that the iframe is hidden from view. * * @param name Name of the iframe. * @returns {HTMLIFrameElement} The created iframe */ function initIframeForUpload(name) { var iframe = qq.toElement("
webcit-8.24-dfsg.orig/static/t/section_mailsummary_m.html0000644000175000017500000000062612271477123023424 0ustar michaelmichael
;" onClick="CtdlLoadMsgMouseDown(event,)">
webcit-8.24-dfsg.orig/static/t/msg_listview.html0000644000175000017500000000206012271477123021532 0ustar michaelmichael






webcit-8.24-dfsg.orig/static/t/get_logged_in.html0000644000175000017500000001146612271477123021616 0ustar michaelmichael

webcit-8.24-dfsg.orig/static/t/floors_edit_one.html0000644000175000017500000000234112271477123022172 0ustar michaelmichael

">
">
webcit-8.24-dfsg.orig/static/t/vnoteitem.html0000644000175000017500000000562112271477123021036 0ustar michaelmichael
# ')" src="static/webcit_icons/closewindow.gif" alt="x" >
webcit-8.24-dfsg.orig/static/t/mailsummary_json.html0000644000175000017500000000034712271477123022415 0ustar michaelmichael{ "nummsgs": , "startmsg": , "roomname": "", "msgs": [ ] } webcit-8.24-dfsg.orig/static/t/openid_manual_create.html0000644000175000017500000000163012271477123023156 0ustar michaelmichael
">
" class="logbutton" > " class="logbutton">
webcit-8.24-dfsg.orig/static/t/searchomatic.html0000644000175000017500000000060112271477123021457 0ustar michaelmichael
type="text" name="query" id="srchquery" size="15" maxlength="128" class="inputbox">
webcit-8.24-dfsg.orig/static/t/view_message.html0000644000175000017500000000705312271477123021503 0ustar michaelmichael webcit-8.24-dfsg.orig/static/t/viewomatic.html0000644000175000017500000000536612271477123021201 0ustar michaelmichael
webcit-8.24-dfsg.orig/static/t/sieve/0000755000175000017500000000000012271477123017245 5ustar michaelmichaelwebcit-8.24-dfsg.orig/static/t/sieve/display_one_script.html0000644000175000017500000000030312271477123024021 0ustar michaelmichael webcit-8.24-dfsg.orig/static/t/sieve/list_select_one.html0000644000175000017500000000020612271477123023304 0ustar michaelmichael webcit-8.24-dfsg.orig/static/t/sieve/script_select.html0000644000175000017500000000020412271477123022772 0ustar michaelmichael webcit-8.24-dfsg.orig/static/t/sieve/none.html0000644000175000017500000000063212271477123021073 0ustar michaelmichael

Please contact your system administrator if you require this feature.
")>
webcit-8.24-dfsg.orig/static/t/sieve/display.html0000644000175000017500000000624512271477123021607 0ustar michaelmichael webcit-8.24-dfsg.orig/static/t/sieve/empty.html0000644000175000017500000000006012271477123021265 0ustar michaelmichael webcit-8.24-dfsg.orig/static/t/sieve/list.html0000644000175000017500000000651312271477123021113 0ustar michaelmichael

 
webcit-8.24-dfsg.orig/static/t/sieve/add.html0000644000175000017500000000271412271477123020667 0ustar michaelmichael









webcit-8.24-dfsg.orig/static/t/sieve/display_one.html0000644000175000017500000001367712271477123022457 0ustar michaelmichael
>
">

webcit-8.24-dfsg.orig/static/t/sieve/roomlist.html0000644000175000017500000000017512271477123022006 0ustar michaelmichael webcit-8.24-dfsg.orig/static/t/view_message/0000755000175000017500000000000012271477123020610 5ustar michaelmichaelwebcit-8.24-dfsg.orig/static/t/view_message/wikiedit.html0000644000175000017500000000022412271477123023305 0ustar michaelmichael webcit-8.24-dfsg.orig/static/t/view_message/replyquote.html0000644000175000017500000000144712271477123023715 0ustar michaelmichael
"" <> @ ***
webcit-8.24-dfsg.orig/static/t/view_message/inline_attach.html0000644000175000017500000000110112271477123024271 0ustar michaelmichael
" border="0" align="middle" alt=""> (, bytes) [')">| ">]
" style="display:none">
webcit-8.24-dfsg.orig/static/t/view_message/list_attach.html0000644000175000017500000000072312271477123023777 0ustar michaelmichael" border="0" align="middle" alt=""> (, bytes) [ " target="wc.."> | "> ]
webcit-8.24-dfsg.orig/static/t/view_message/print.html0000644000175000017500000000206412271477123022634 0ustar michaelmichael <?CURRENT_USER>
@ ***

webcit-8.24-dfsg.orig/static/t/msg_listselector_bottom.html0000644000175000017500000000126312271477123023770 0ustar michaelmichael

>      >

webcit-8.24-dfsg.orig/static/instant_messenger.html0000644000175000017500000001303412271477123022306 0ustar michaelmichael Citadel Instant Messenger

  

webcit-8.24-dfsg.orig/static/effects.js0000644000175000017500000011310712271477123017647 0ustar michaelmichael// script.aculo.us effects.js v1.9.0, Thu Dec 23 16:54:48 -0500 2010 // Copyright (c) 2005-2010 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us) // Contributors: // Justin Palmer (http://encytemedia.com/) // Mark Pilgrim (http://diveintomark.org/) // Martin Bialasinki // // script.aculo.us is freely distributable under the terms of an MIT-style license. // For details, see the script.aculo.us web site: http://script.aculo.us/ // converts rgb() and #xxx to #xxxxxx format, // returns self (or first argument) if not convertable String.prototype.parseColor = function() { var color = '#'; if (this.slice(0,4) == 'rgb(') { var cols = this.slice(4,this.length-1).split(','); var i=0; do { color += parseInt(cols[i]).toColorPart() } while (++i<3); } else { if (this.slice(0,1) == '#') { if (this.length==4) for(var i=1;i<4;i++) color += (this.charAt(i) + this.charAt(i)).toLowerCase(); if (this.length==7) color = this.toLowerCase(); } } return (color.length==7 ? color : (arguments[0] || this)); }; /*--------------------------------------------------------------------------*/ Element.collectTextNodes = function(element) { return $A($(element).childNodes).collect( function(node) { return (node.nodeType==3 ? node.nodeValue : (node.hasChildNodes() ? Element.collectTextNodes(node) : '')); }).flatten().join(''); }; Element.collectTextNodesIgnoreClass = function(element, className) { return $A($(element).childNodes).collect( function(node) { return (node.nodeType==3 ? node.nodeValue : ((node.hasChildNodes() && !Element.hasClassName(node,className)) ? Element.collectTextNodesIgnoreClass(node, className) : '')); }).flatten().join(''); }; Element.setContentZoom = function(element, percent) { element = $(element); element.setStyle({fontSize: (percent/100) + 'em'}); if (Prototype.Browser.WebKit) window.scrollBy(0,0); return element; }; Element.getInlineOpacity = function(element){ return $(element).style.opacity || ''; }; Element.forceRerendering = function(element) { try { element = $(element); var n = document.createTextNode(' '); element.appendChild(n); element.removeChild(n); } catch(e) { } }; /*--------------------------------------------------------------------------*/ var Effect = { _elementDoesNotExistError: { name: 'ElementDoesNotExistError', message: 'The specified DOM element does not exist, but is required for this effect to operate' }, Transitions: { linear: Prototype.K, sinoidal: function(pos) { return (-Math.cos(pos*Math.PI)/2) + .5; }, reverse: function(pos) { return 1-pos; }, flicker: function(pos) { var pos = ((-Math.cos(pos*Math.PI)/4) + .75) + Math.random()/4; return pos > 1 ? 1 : pos; }, wobble: function(pos) { return (-Math.cos(pos*Math.PI*(9*pos))/2) + .5; }, pulse: function(pos, pulses) { return (-Math.cos((pos*((pulses||5)-.5)*2)*Math.PI)/2) + .5; }, spring: function(pos) { return 1 - (Math.cos(pos * 4.5 * Math.PI) * Math.exp(-pos * 6)); }, none: function(pos) { return 0; }, full: function(pos) { return 1; } }, DefaultOptions: { duration: 1.0, // seconds fps: 100, // 100= assume 66fps max. sync: false, // true for combining from: 0.0, to: 1.0, delay: 0.0, queue: 'parallel' }, tagifyText: function(element) { var tagifyStyle = 'position:relative'; if (Prototype.Browser.IE) tagifyStyle += ';zoom:1'; element = $(element); $A(element.childNodes).each( function(child) { if (child.nodeType==3) { child.nodeValue.toArray().each( function(character) { element.insertBefore( new Element('span', {style: tagifyStyle}).update( character == ' ' ? String.fromCharCode(160) : character), child); }); Element.remove(child); } }); }, multiple: function(element, effect) { var elements; if (((typeof element == 'object') || Object.isFunction(element)) && (element.length)) elements = element; else elements = $(element).childNodes; var options = Object.extend({ speed: 0.1, delay: 0.0 }, arguments[2] || { }); var masterDelay = options.delay; $A(elements).each( function(element, index) { new effect(element, Object.extend(options, { delay: index * options.speed + masterDelay })); }); }, PAIRS: { 'slide': ['SlideDown','SlideUp'], 'blind': ['BlindDown','BlindUp'], 'appear': ['Appear','Fade'] }, toggle: function(element, effect, options) { element = $(element); effect = (effect || 'appear').toLowerCase(); return Effect[ Effect.PAIRS[ effect ][ element.visible() ? 1 : 0 ] ](element, Object.extend({ queue: { position:'end', scope:(element.id || 'global'), limit: 1 } }, options || {})); } }; Effect.DefaultOptions.transition = Effect.Transitions.sinoidal; /* ------------- core effects ------------- */ Effect.ScopedQueue = Class.create(Enumerable, { initialize: function() { this.effects = []; this.interval = null; }, _each: function(iterator) { this.effects._each(iterator); }, add: function(effect) { var timestamp = new Date().getTime(); var position = Object.isString(effect.options.queue) ? effect.options.queue : effect.options.queue.position; switch(position) { case 'front': // move unstarted effects after this effect this.effects.findAll(function(e){ return e.state=='idle' }).each( function(e) { e.startOn += effect.finishOn; e.finishOn += effect.finishOn; }); break; case 'with-last': timestamp = this.effects.pluck('startOn').max() || timestamp; break; case 'end': // start effect after last queued effect has finished timestamp = this.effects.pluck('finishOn').max() || timestamp; break; } effect.startOn += timestamp; effect.finishOn += timestamp; if (!effect.options.queue.limit || (this.effects.length < effect.options.queue.limit)) this.effects.push(effect); if (!this.interval) this.interval = setInterval(this.loop.bind(this), 15); }, remove: function(effect) { this.effects = this.effects.reject(function(e) { return e==effect }); if (this.effects.length == 0) { clearInterval(this.interval); this.interval = null; } }, loop: function() { var timePos = new Date().getTime(); for(var i=0, len=this.effects.length;i= this.startOn) { if (timePos >= this.finishOn) { this.render(1.0); this.cancel(); this.event('beforeFinish'); if (this.finish) this.finish(); this.event('afterFinish'); return; } var pos = (timePos - this.startOn) / this.totalTime, frame = (pos * this.totalFrames).round(); if (frame > this.currentFrame) { this.render(pos); this.currentFrame = frame; } } }, cancel: function() { if (!this.options.sync) Effect.Queues.get(Object.isString(this.options.queue) ? 'global' : this.options.queue.scope).remove(this); this.state = 'finished'; }, event: function(eventName) { if (this.options[eventName + 'Internal']) this.options[eventName + 'Internal'](this); if (this.options[eventName]) this.options[eventName](this); }, inspect: function() { var data = $H(); for(property in this) if (!Object.isFunction(this[property])) data.set(property, this[property]); return '#'; } }); Effect.Parallel = Class.create(Effect.Base, { initialize: function(effects) { this.effects = effects || []; this.start(arguments[1]); }, update: function(position) { this.effects.invoke('render', position); }, finish: function(position) { this.effects.each( function(effect) { effect.render(1.0); effect.cancel(); effect.event('beforeFinish'); if (effect.finish) effect.finish(position); effect.event('afterFinish'); }); } }); Effect.Tween = Class.create(Effect.Base, { initialize: function(object, from, to) { object = Object.isString(object) ? $(object) : object; var args = $A(arguments), method = args.last(), options = args.length == 5 ? args[3] : null; this.method = Object.isFunction(method) ? method.bind(object) : Object.isFunction(object[method]) ? object[method].bind(object) : function(value) { object[method] = value }; this.start(Object.extend({ from: from, to: to }, options || { })); }, update: function(position) { this.method(position); } }); Effect.Event = Class.create(Effect.Base, { initialize: function() { this.start(Object.extend({ duration: 0 }, arguments[0] || { })); }, update: Prototype.emptyFunction }); Effect.Opacity = Class.create(Effect.Base, { initialize: function(element) { this.element = $(element); if (!this.element) throw(Effect._elementDoesNotExistError); // make this work on IE on elements without 'layout' if (Prototype.Browser.IE && (!this.element.currentStyle.hasLayout)) this.element.setStyle({zoom: 1}); var options = Object.extend({ from: this.element.getOpacity() || 0.0, to: 1.0 }, arguments[1] || { }); this.start(options); }, update: function(position) { this.element.setOpacity(position); } }); Effect.Move = Class.create(Effect.Base, { initialize: function(element) { this.element = $(element); if (!this.element) throw(Effect._elementDoesNotExistError); var options = Object.extend({ x: 0, y: 0, mode: 'relative' }, arguments[1] || { }); this.start(options); }, setup: function() { this.element.makePositioned(); this.originalLeft = parseFloat(this.element.getStyle('left') || '0'); this.originalTop = parseFloat(this.element.getStyle('top') || '0'); if (this.options.mode == 'absolute') { this.options.x = this.options.x - this.originalLeft; this.options.y = this.options.y - this.originalTop; } }, update: function(position) { this.element.setStyle({ left: (this.options.x * position + this.originalLeft).round() + 'px', top: (this.options.y * position + this.originalTop).round() + 'px' }); } }); // for backwards compatibility Effect.MoveBy = function(element, toTop, toLeft) { return new Effect.Move(element, Object.extend({ x: toLeft, y: toTop }, arguments[3] || { })); }; Effect.Scale = Class.create(Effect.Base, { initialize: function(element, percent) { this.element = $(element); if (!this.element) throw(Effect._elementDoesNotExistError); var options = Object.extend({ scaleX: true, scaleY: true, scaleContent: true, scaleFromCenter: false, scaleMode: 'box', // 'box' or 'contents' or { } with provided values scaleFrom: 100.0, scaleTo: percent }, arguments[2] || { }); this.start(options); }, setup: function() { this.restoreAfterFinish = this.options.restoreAfterFinish || false; this.elementPositioning = this.element.getStyle('position'); this.originalStyle = { }; ['top','left','width','height','fontSize'].each( function(k) { this.originalStyle[k] = this.element.style[k]; }.bind(this)); this.originalTop = this.element.offsetTop; this.originalLeft = this.element.offsetLeft; var fontSize = this.element.getStyle('font-size') || '100%'; ['em','px','%','pt'].each( function(fontSizeType) { if (fontSize.indexOf(fontSizeType)>0) { this.fontSize = parseFloat(fontSize); this.fontSizeType = fontSizeType; } }.bind(this)); this.factor = (this.options.scaleTo - this.options.scaleFrom)/100; this.dims = null; if (this.options.scaleMode=='box') this.dims = [this.element.offsetHeight, this.element.offsetWidth]; if (/^content/.test(this.options.scaleMode)) this.dims = [this.element.scrollHeight, this.element.scrollWidth]; if (!this.dims) this.dims = [this.options.scaleMode.originalHeight, this.options.scaleMode.originalWidth]; }, update: function(position) { var currentScale = (this.options.scaleFrom/100.0) + (this.factor * position); if (this.options.scaleContent && this.fontSize) this.element.setStyle({fontSize: this.fontSize * currentScale + this.fontSizeType }); this.setDimensions(this.dims[0] * currentScale, this.dims[1] * currentScale); }, finish: function(position) { if (this.restoreAfterFinish) this.element.setStyle(this.originalStyle); }, setDimensions: function(height, width) { var d = { }; if (this.options.scaleX) d.width = width.round() + 'px'; if (this.options.scaleY) d.height = height.round() + 'px'; if (this.options.scaleFromCenter) { var topd = (height - this.dims[0])/2; var leftd = (width - this.dims[1])/2; if (this.elementPositioning == 'absolute') { if (this.options.scaleY) d.top = this.originalTop-topd + 'px'; if (this.options.scaleX) d.left = this.originalLeft-leftd + 'px'; } else { if (this.options.scaleY) d.top = -topd + 'px'; if (this.options.scaleX) d.left = -leftd + 'px'; } } this.element.setStyle(d); } }); Effect.Highlight = Class.create(Effect.Base, { initialize: function(element) { this.element = $(element); if (!this.element) throw(Effect._elementDoesNotExistError); var options = Object.extend({ startcolor: '#ffff99' }, arguments[1] || { }); this.start(options); }, setup: function() { // Prevent executing on elements not in the layout flow if (this.element.getStyle('display')=='none') { this.cancel(); return; } // Disable background image during the effect this.oldStyle = { }; if (!this.options.keepBackgroundImage) { this.oldStyle.backgroundImage = this.element.getStyle('background-image'); this.element.setStyle({backgroundImage: 'none'}); } if (!this.options.endcolor) this.options.endcolor = this.element.getStyle('background-color').parseColor('#ffffff'); if (!this.options.restorecolor) this.options.restorecolor = this.element.getStyle('background-color'); // init color calculations this._base = $R(0,2).map(function(i){ return parseInt(this.options.startcolor.slice(i*2+1,i*2+3),16) }.bind(this)); this._delta = $R(0,2).map(function(i){ return parseInt(this.options.endcolor.slice(i*2+1,i*2+3),16)-this._base[i] }.bind(this)); }, update: function(position) { this.element.setStyle({backgroundColor: $R(0,2).inject('#',function(m,v,i){ return m+((this._base[i]+(this._delta[i]*position)).round().toColorPart()); }.bind(this)) }); }, finish: function() { this.element.setStyle(Object.extend(this.oldStyle, { backgroundColor: this.options.restorecolor })); } }); Effect.ScrollTo = function(element) { var options = arguments[1] || { }, scrollOffsets = document.viewport.getScrollOffsets(), elementOffsets = $(element).cumulativeOffset(); if (options.offset) elementOffsets[1] += options.offset; return new Effect.Tween(null, scrollOffsets.top, elementOffsets[1], options, function(p){ scrollTo(scrollOffsets.left, p.round()); } ); }; /* ------------- combination effects ------------- */ Effect.Fade = function(element) { element = $(element); var oldOpacity = element.getInlineOpacity(); var options = Object.extend({ from: element.getOpacity() || 1.0, to: 0.0, afterFinishInternal: function(effect) { if (effect.options.to!=0) return; effect.element.hide().setStyle({opacity: oldOpacity}); } }, arguments[1] || { }); return new Effect.Opacity(element,options); }; Effect.Appear = function(element) { element = $(element); var options = Object.extend({ from: (element.getStyle('display') == 'none' ? 0.0 : element.getOpacity() || 0.0), to: 1.0, // force Safari to render floated elements properly afterFinishInternal: function(effect) { effect.element.forceRerendering(); }, beforeSetup: function(effect) { effect.element.setOpacity(effect.options.from).show(); }}, arguments[1] || { }); return new Effect.Opacity(element,options); }; Effect.Puff = function(element) { element = $(element); var oldStyle = { opacity: element.getInlineOpacity(), position: element.getStyle('position'), top: element.style.top, left: element.style.left, width: element.style.width, height: element.style.height }; return new Effect.Parallel( [ new Effect.Scale(element, 200, { sync: true, scaleFromCenter: true, scaleContent: true, restoreAfterFinish: true }), new Effect.Opacity(element, { sync: true, to: 0.0 } ) ], Object.extend({ duration: 1.0, beforeSetupInternal: function(effect) { Position.absolutize(effect.effects[0].element); }, afterFinishInternal: function(effect) { effect.effects[0].element.hide().setStyle(oldStyle); } }, arguments[1] || { }) ); }; Effect.BlindUp = function(element) { element = $(element); element.makeClipping(); return new Effect.Scale(element, 0, Object.extend({ scaleContent: false, scaleX: false, restoreAfterFinish: true, afterFinishInternal: function(effect) { effect.element.hide().undoClipping(); } }, arguments[1] || { }) ); }; Effect.BlindDown = function(element) { element = $(element); var elementDimensions = element.getDimensions(); return new Effect.Scale(element, 100, Object.extend({ scaleContent: false, scaleX: false, scaleFrom: 0, scaleMode: {originalHeight: elementDimensions.height, originalWidth: elementDimensions.width}, restoreAfterFinish: true, afterSetup: function(effect) { effect.element.makeClipping().setStyle({height: '0px'}).show(); }, afterFinishInternal: function(effect) { effect.element.undoClipping(); } }, arguments[1] || { })); }; Effect.SwitchOff = function(element) { element = $(element); var oldOpacity = element.getInlineOpacity(); return new Effect.Appear(element, Object.extend({ duration: 0.4, from: 0, transition: Effect.Transitions.flicker, afterFinishInternal: function(effect) { new Effect.Scale(effect.element, 1, { duration: 0.3, scaleFromCenter: true, scaleX: false, scaleContent: false, restoreAfterFinish: true, beforeSetup: function(effect) { effect.element.makePositioned().makeClipping(); }, afterFinishInternal: function(effect) { effect.element.hide().undoClipping().undoPositioned().setStyle({opacity: oldOpacity}); } }); } }, arguments[1] || { })); }; Effect.DropOut = function(element) { element = $(element); var oldStyle = { top: element.getStyle('top'), left: element.getStyle('left'), opacity: element.getInlineOpacity() }; return new Effect.Parallel( [ new Effect.Move(element, {x: 0, y: 100, sync: true }), new Effect.Opacity(element, { sync: true, to: 0.0 }) ], Object.extend( { duration: 0.5, beforeSetup: function(effect) { effect.effects[0].element.makePositioned(); }, afterFinishInternal: function(effect) { effect.effects[0].element.hide().undoPositioned().setStyle(oldStyle); } }, arguments[1] || { })); }; Effect.Shake = function(element) { element = $(element); var options = Object.extend({ distance: 20, duration: 0.5 }, arguments[1] || {}); var distance = parseFloat(options.distance); var split = parseFloat(options.duration) / 10.0; var oldStyle = { top: element.getStyle('top'), left: element.getStyle('left') }; return new Effect.Move(element, { x: distance, y: 0, duration: split, afterFinishInternal: function(effect) { new Effect.Move(effect.element, { x: -distance*2, y: 0, duration: split*2, afterFinishInternal: function(effect) { new Effect.Move(effect.element, { x: distance*2, y: 0, duration: split*2, afterFinishInternal: function(effect) { new Effect.Move(effect.element, { x: -distance*2, y: 0, duration: split*2, afterFinishInternal: function(effect) { new Effect.Move(effect.element, { x: distance*2, y: 0, duration: split*2, afterFinishInternal: function(effect) { new Effect.Move(effect.element, { x: -distance, y: 0, duration: split, afterFinishInternal: function(effect) { effect.element.undoPositioned().setStyle(oldStyle); }}); }}); }}); }}); }}); }}); }; Effect.SlideDown = function(element) { element = $(element).cleanWhitespace(); // SlideDown need to have the content of the element wrapped in a container element with fixed height! var oldInnerBottom = element.down().getStyle('bottom'); var elementDimensions = element.getDimensions(); return new Effect.Scale(element, 100, Object.extend({ scaleContent: false, scaleX: false, scaleFrom: window.opera ? 0 : 1, scaleMode: {originalHeight: elementDimensions.height, originalWidth: elementDimensions.width}, restoreAfterFinish: true, afterSetup: function(effect) { effect.element.makePositioned(); effect.element.down().makePositioned(); if (window.opera) effect.element.setStyle({top: ''}); effect.element.makeClipping().setStyle({height: '0px'}).show(); }, afterUpdateInternal: function(effect) { effect.element.down().setStyle({bottom: (effect.dims[0] - effect.element.clientHeight) + 'px' }); }, afterFinishInternal: function(effect) { effect.element.undoClipping().undoPositioned(); effect.element.down().undoPositioned().setStyle({bottom: oldInnerBottom}); } }, arguments[1] || { }) ); }; Effect.SlideUp = function(element) { element = $(element).cleanWhitespace(); var oldInnerBottom = element.down().getStyle('bottom'); var elementDimensions = element.getDimensions(); return new Effect.Scale(element, window.opera ? 0 : 1, Object.extend({ scaleContent: false, scaleX: false, scaleMode: 'box', scaleFrom: 100, scaleMode: {originalHeight: elementDimensions.height, originalWidth: elementDimensions.width}, restoreAfterFinish: true, afterSetup: function(effect) { effect.element.makePositioned(); effect.element.down().makePositioned(); if (window.opera) effect.element.setStyle({top: ''}); effect.element.makeClipping().show(); }, afterUpdateInternal: function(effect) { effect.element.down().setStyle({bottom: (effect.dims[0] - effect.element.clientHeight) + 'px' }); }, afterFinishInternal: function(effect) { effect.element.hide().undoClipping().undoPositioned(); effect.element.down().undoPositioned().setStyle({bottom: oldInnerBottom}); } }, arguments[1] || { }) ); }; // Bug in opera makes the TD containing this element expand for a instance after finish Effect.Squish = function(element) { return new Effect.Scale(element, window.opera ? 1 : 0, { restoreAfterFinish: true, beforeSetup: function(effect) { effect.element.makeClipping(); }, afterFinishInternal: function(effect) { effect.element.hide().undoClipping(); } }); }; Effect.Grow = function(element) { element = $(element); var options = Object.extend({ direction: 'center', moveTransition: Effect.Transitions.sinoidal, scaleTransition: Effect.Transitions.sinoidal, opacityTransition: Effect.Transitions.full }, arguments[1] || { }); var oldStyle = { top: element.style.top, left: element.style.left, height: element.style.height, width: element.style.width, opacity: element.getInlineOpacity() }; var dims = element.getDimensions(); var initialMoveX, initialMoveY; var moveX, moveY; switch (options.direction) { case 'top-left': initialMoveX = initialMoveY = moveX = moveY = 0; break; case 'top-right': initialMoveX = dims.width; initialMoveY = moveY = 0; moveX = -dims.width; break; case 'bottom-left': initialMoveX = moveX = 0; initialMoveY = dims.height; moveY = -dims.height; break; case 'bottom-right': initialMoveX = dims.width; initialMoveY = dims.height; moveX = -dims.width; moveY = -dims.height; break; case 'center': initialMoveX = dims.width / 2; initialMoveY = dims.height / 2; moveX = -dims.width / 2; moveY = -dims.height / 2; break; } return new Effect.Move(element, { x: initialMoveX, y: initialMoveY, duration: 0.01, beforeSetup: function(effect) { effect.element.hide().makeClipping().makePositioned(); }, afterFinishInternal: function(effect) { new Effect.Parallel( [ new Effect.Opacity(effect.element, { sync: true, to: 1.0, from: 0.0, transition: options.opacityTransition }), new Effect.Move(effect.element, { x: moveX, y: moveY, sync: true, transition: options.moveTransition }), new Effect.Scale(effect.element, 100, { scaleMode: { originalHeight: dims.height, originalWidth: dims.width }, sync: true, scaleFrom: window.opera ? 1 : 0, transition: options.scaleTransition, restoreAfterFinish: true}) ], Object.extend({ beforeSetup: function(effect) { effect.effects[0].element.setStyle({height: '0px'}).show(); }, afterFinishInternal: function(effect) { effect.effects[0].element.undoClipping().undoPositioned().setStyle(oldStyle); } }, options) ); } }); }; Effect.Shrink = function(element) { element = $(element); var options = Object.extend({ direction: 'center', moveTransition: Effect.Transitions.sinoidal, scaleTransition: Effect.Transitions.sinoidal, opacityTransition: Effect.Transitions.none }, arguments[1] || { }); var oldStyle = { top: element.style.top, left: element.style.left, height: element.style.height, width: element.style.width, opacity: element.getInlineOpacity() }; var dims = element.getDimensions(); var moveX, moveY; switch (options.direction) { case 'top-left': moveX = moveY = 0; break; case 'top-right': moveX = dims.width; moveY = 0; break; case 'bottom-left': moveX = 0; moveY = dims.height; break; case 'bottom-right': moveX = dims.width; moveY = dims.height; break; case 'center': moveX = dims.width / 2; moveY = dims.height / 2; break; } return new Effect.Parallel( [ new Effect.Opacity(element, { sync: true, to: 0.0, from: 1.0, transition: options.opacityTransition }), new Effect.Scale(element, window.opera ? 1 : 0, { sync: true, transition: options.scaleTransition, restoreAfterFinish: true}), new Effect.Move(element, { x: moveX, y: moveY, sync: true, transition: options.moveTransition }) ], Object.extend({ beforeStartInternal: function(effect) { effect.effects[0].element.makePositioned().makeClipping(); }, afterFinishInternal: function(effect) { effect.effects[0].element.hide().undoClipping().undoPositioned().setStyle(oldStyle); } }, options) ); }; Effect.Pulsate = function(element) { element = $(element); var options = arguments[1] || { }, oldOpacity = element.getInlineOpacity(), transition = options.transition || Effect.Transitions.linear, reverser = function(pos){ return 1 - transition((-Math.cos((pos*(options.pulses||5)*2)*Math.PI)/2) + .5); }; return new Effect.Opacity(element, Object.extend(Object.extend({ duration: 2.0, from: 0, afterFinishInternal: function(effect) { effect.element.setStyle({opacity: oldOpacity}); } }, options), {transition: reverser})); }; Effect.Fold = function(element) { element = $(element); var oldStyle = { top: element.style.top, left: element.style.left, width: element.style.width, height: element.style.height }; element.makeClipping(); return new Effect.Scale(element, 5, Object.extend({ scaleContent: false, scaleX: false, afterFinishInternal: function(effect) { new Effect.Scale(element, 1, { scaleContent: false, scaleY: false, afterFinishInternal: function(effect) { effect.element.hide().undoClipping().setStyle(oldStyle); } }); }}, arguments[1] || { })); }; Effect.Morph = Class.create(Effect.Base, { initialize: function(element) { this.element = $(element); if (!this.element) throw(Effect._elementDoesNotExistError); var options = Object.extend({ style: { } }, arguments[1] || { }); if (!Object.isString(options.style)) this.style = $H(options.style); else { if (options.style.include(':')) this.style = options.style.parseStyle(); else { this.element.addClassName(options.style); this.style = $H(this.element.getStyles()); this.element.removeClassName(options.style); var css = this.element.getStyles(); this.style = this.style.reject(function(style) { return style.value == css[style.key]; }); options.afterFinishInternal = function(effect) { effect.element.addClassName(effect.options.style); effect.transforms.each(function(transform) { effect.element.style[transform.style] = ''; }); }; } } this.start(options); }, setup: function(){ function parseColor(color){ if (!color || ['rgba(0, 0, 0, 0)','transparent'].include(color)) color = '#ffffff'; color = color.parseColor(); return $R(0,2).map(function(i){ return parseInt( color.slice(i*2+1,i*2+3), 16 ); }); } this.transforms = this.style.map(function(pair){ var property = pair[0], value = pair[1], unit = null; if (value.parseColor('#zzzzzz') != '#zzzzzz') { value = value.parseColor(); unit = 'color'; } else if (property == 'opacity') { value = parseFloat(value); if (Prototype.Browser.IE && (!this.element.currentStyle.hasLayout)) this.element.setStyle({zoom: 1}); } else if (Element.CSS_LENGTH.test(value)) { var components = value.match(/^([\+\-]?[0-9\.]+)(.*)$/); value = parseFloat(components[1]); unit = (components.length == 3) ? components[2] : null; } var originalValue = this.element.getStyle(property); return { style: property.camelize(), originalValue: unit=='color' ? parseColor(originalValue) : parseFloat(originalValue || 0), targetValue: unit=='color' ? parseColor(value) : value, unit: unit }; }.bind(this)).reject(function(transform){ return ( (transform.originalValue == transform.targetValue) || ( transform.unit != 'color' && (isNaN(transform.originalValue) || isNaN(transform.targetValue)) ) ); }); }, update: function(position) { var style = { }, transform, i = this.transforms.length; while(i--) style[(transform = this.transforms[i]).style] = transform.unit=='color' ? '#'+ (Math.round(transform.originalValue[0]+ (transform.targetValue[0]-transform.originalValue[0])*position)).toColorPart() + (Math.round(transform.originalValue[1]+ (transform.targetValue[1]-transform.originalValue[1])*position)).toColorPart() + (Math.round(transform.originalValue[2]+ (transform.targetValue[2]-transform.originalValue[2])*position)).toColorPart() : (transform.originalValue + (transform.targetValue - transform.originalValue) * position).toFixed(3) + (transform.unit === null ? '' : transform.unit); this.element.setStyle(style, true); } }); Effect.Transform = Class.create({ initialize: function(tracks){ this.tracks = []; this.options = arguments[1] || { }; this.addTracks(tracks); }, addTracks: function(tracks){ tracks.each(function(track){ track = $H(track); var data = track.values().first(); this.tracks.push($H({ ids: track.keys().first(), effect: Effect.Morph, options: { style: data } })); }.bind(this)); return this; }, play: function(){ return new Effect.Parallel( this.tracks.map(function(track){ var ids = track.get('ids'), effect = track.get('effect'), options = track.get('options'); var elements = [$(ids) || $$(ids)].flatten(); return elements.map(function(e){ return new effect(e, Object.extend({ sync:true }, options)) }); }).flatten(), this.options ); } }); Element.CSS_PROPERTIES = $w( 'backgroundColor backgroundPosition borderBottomColor borderBottomStyle ' + 'borderBottomWidth borderLeftColor borderLeftStyle borderLeftWidth ' + 'borderRightColor borderRightStyle borderRightWidth borderSpacing ' + 'borderTopColor borderTopStyle borderTopWidth bottom clip color ' + 'fontSize fontWeight height left letterSpacing lineHeight ' + 'marginBottom marginLeft marginRight marginTop markerOffset maxHeight '+ 'maxWidth minHeight minWidth opacity outlineColor outlineOffset ' + 'outlineWidth paddingBottom paddingLeft paddingRight paddingTop ' + 'right textIndent top width wordSpacing zIndex'); Element.CSS_LENGTH = /^(([\+\-]?[0-9\.]+)(em|ex|px|in|cm|mm|pt|pc|\%))|0$/; String.__parseStyleElement = document.createElement('div'); String.prototype.parseStyle = function(){ var style, styleRules = $H(); if (Prototype.Browser.WebKit) style = new Element('div',{style:this}).style; else { String.__parseStyleElement.innerHTML = '
'; style = String.__parseStyleElement.childNodes[0].style; } Element.CSS_PROPERTIES.each(function(property){ if (style[property]) styleRules.set(property, style[property]); }); if (Prototype.Browser.IE && this.include('opacity')) styleRules.set('opacity', this.match(/opacity:\s*((?:0|1)?(?:\.\d*)?)/)[1]); return styleRules; }; if (document.defaultView && document.defaultView.getComputedStyle) { Element.getStyles = function(element) { var css = document.defaultView.getComputedStyle($(element), null); return Element.CSS_PROPERTIES.inject({ }, function(styles, property) { styles[property] = css[property]; return styles; }); }; } else { Element.getStyles = function(element) { element = $(element); var css = element.currentStyle, styles; styles = Element.CSS_PROPERTIES.inject({ }, function(results, property) { results[property] = css[property]; return results; }); if (!styles.opacity) styles.opacity = element.getOpacity(); return styles; }; } Effect.Methods = { morph: function(element, style) { element = $(element); new Effect.Morph(element, Object.extend({ style: style }, arguments[2] || { })); return element; }, visualEffect: function(element, effect, options) { element = $(element); var s = effect.dasherize().camelize(), klass = s.charAt(0).toUpperCase() + s.substring(1); new Effect[klass](element, options); return element; }, highlight: function(element, options) { element = $(element); new Effect.Highlight(element, options); return element; } }; $w('fade appear grow shrink fold blindUp blindDown slideUp slideDown '+ 'pulsate shake puff squish switchOff dropOut').each( function(effect) { Effect.Methods[effect] = function(element, options){ element = $(element); Effect[effect.charAt(0).toUpperCase() + effect.substring(1)](element, options); return element; }; } ); $w('getInlineOpacity forceRerendering setContentZoom collectTextNodes collectTextNodesIgnoreClass getStyles').each( function(f) { Effect.Methods[f] = Element[f]; } ); Element.addMethods(Effect.Methods);webcit-8.24-dfsg.orig/static/wcpref.js0000644000175000017500000000420712271477123017516 0ustar michaelmichael/* * Copyright 2005 - 2009 The Citadel Team * Licensed under the GPL V3 * Webcit preference code */ var persistentStorage = false; /* DOM5 storage disabled for now.. we want localStorage which isn't as widely available yet */ //if (window.sessionStorage) { // persistentStorage = true; //} function WCPrefs() { this.cookieValCache = new Object(); this.noExpire = "Mon, 18 Jan 2038 5:14:07 AM"; } function readPref(name) { if (persistentStorage) { return sessionStorage.getItem(name); } else { return this.cookieValCache[name]; } } function setPref(name, value) { if (persistentStorage) { sessionStorage.setItem(name, value); } else { document.cookie = "WC_" + name + "="+value+";expires="+this.noExpire; // this.cookieValCache[name] = value; //this.saveLocal(); } } function loadLocal() { if (!persistentStorage) { var cookies = document.cookie.split(";"); for(var i=0; i / * * Copyright 2009 The Citadel Team * Licensed under the GPL V3 */ var draggedElement = null; var currentDropTargets = null; var dropTarget = null; var dragAndDropElement = null; var oldSelectHandler = null; function mouseDownHandler(event) { var target = event.target; var actualTarget = target; if (target.nodeName.toLowerCase() == "td") { actualTarget = target.parentNode; } if (!actualTarget.dropEnabled && actualTarget.getAttribute("citadel:dropenabled") == null) { return; } turnOffTextSelect(); draggedElement = actualTarget; return false; } function mouseUpHandler(event) { var target = event.target; var dropped = dropTarget; if (dragAndDropElement != null) { if (dropped != null && dropped.dropHandler) { dropped.dropHandler(dropped,draggedElement); } document.body.removeChild(dragAndDropElement); } dragAndDropElement = null; draggedElement = null; dropTarget = null; turnOnTextSelect(); return true; } function mouseMoveHandler(event) { if (draggedElement != null) { if (dragAndDropElement == null) { var dragAndDropElementFunction = (draggedElement.ctdlDnDElement) ? draggedElement.ctdlDndElement : eval(draggedElement.getAttribute("citadel:dndelement")); dragAndDropElement = dragAndDropElementFunction.call(); dragAndDropElement.className = "draganddrop"; document.body.appendChild(dragAndDropElement); } var clientX = event.clientX+5; var clientY = event.clientY+5; dragAndDropElement.style.top = clientY + "px"; dragAndDropElement.style.left = clientX + "px"; } return false; } function mouseMoveOver(event) { if (event.target.dropTarget) { dropTarget = event.target; } } function mouseMoveOut(event) { if (dropTarget) { dropTarget = null; } } function setupDragDrop() { $(document.body).observe('mousedown', mouseDownHandler); $(document.body).observe('mouseup',mouseUpHandler); $(document.body).observe('mousemove',mouseMoveHandler); $(document.body).observe('mouseover', mouseMoveOver); $(document.body).observe('mouseout', mouseMoveOut); } function turnOffTextSelect() { document.onmousedown = new Function("return false"); document.onmouseup = new Function("return true"); oldSelectHandler = document.onselectstart; document.onselectstart = function() { return false; }; } function turnOnTextSelect() { document.onmousedown = null; document.onmouseup = null; document.onselectstart = oldSelectHandler; } webcit-8.24-dfsg.orig/static/sound.js0000644000175000017500000000463012271477123017360 0ustar michaelmichael// script.aculo.us sound.js v1.9.0, Thu Dec 23 16:54:48 -0500 2010 // Copyright (c) 2005-2010 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us) // // Based on code created by Jules Gravinese (http://www.webveteran.com/) // // script.aculo.us is freely distributable under the terms of an MIT-style license. // For details, see the script.aculo.us web site: http://script.aculo.us/ Sound = { tracks: {}, _enabled: true, template: new Template(''), enable: function(){ Sound._enabled = true; }, disable: function(){ Sound._enabled = false; }, play: function(url){ if(!Sound._enabled) return; var options = Object.extend({ track: 'global', url: url, replace: false }, arguments[1] || {}); if(options.replace && this.tracks[options.track]) { $R(0, this.tracks[options.track].id).each(function(id){ var sound = $('sound_'+options.track+'_'+id); sound.Stop && sound.Stop(); sound.remove(); }); this.tracks[options.track] = null; } if(!this.tracks[options.track]) this.tracks[options.track] = { id: 0 }; else this.tracks[options.track].id++; options.id = this.tracks[options.track].id; $$('body')[0].insert( Prototype.Browser.IE ? new Element('bgsound',{ id: 'sound_'+options.track+'_'+options.id, src: options.url, loop: 1, autostart: true }) : Sound.template.evaluate(options)); } }; if(Prototype.Browser.Gecko && navigator.userAgent.indexOf("Win") > 0){ if(navigator.plugins && $A(navigator.plugins).detect(function(p){ return p.name.indexOf('QuickTime') != -1 })) Sound.template = new Template(''); else if(navigator.plugins && $A(navigator.plugins).detect(function(p){ return p.name.indexOf('Windows Media') != -1 })) Sound.template = new Template(''); else if(navigator.plugins && $A(navigator.plugins).detect(function(p){ return p.name.indexOf('RealPlayer') != -1 })) Sound.template = new Template(''); else Sound.play = function(){}; } webcit-8.24-dfsg.orig/static/modal.js0000644000175000017500000000375412271477123017332 0ustar michaelmichaelvar focusedElement = null; var modal = document.getElementById('modal'); var dialog = document.getElementById('dialog'); var body = document.getElementById('global'); var html = document.documentElement; var modalShowing = (html.className === 'modal'); // Have to hack for Safari, due to poor support for the focus() function. try { var isSafari = window.navigator.vendor.match(/Apple/); } catch (ex) { isSafari = false; } if ( isSafari ) { var dialogFocuser = document.createElement('a'); dialogFocuser.href="#"; dialogFocuser.style.display='block'; dialogFocuser.style.height='0'; dialogFocuser.style.width='0'; dialogFocuser.style.position = 'absolute'; dialog.insertBefore(dialogFocuser, dialog.firstChild); } else { dialogFocuser = dialog; } window.onunload = function () { dialogFocuser = focusedElement = modal = dialog = body = html = null; }; var onfocus = function (e) { e = e || window.event; var el = e.target || e.srcElement; // save the last focused element when the modal is hidden. if ( !modalShowing ) { focusedElement = el; return; } // if we're focusing the dialog, then just clear the blurring flag. // else, focus the dialog and prevent the other event. var p = el.parentNode; while ( p && p.parentNode && p !== dialog ) { p=p.parentNode; } if ( p !== dialog ) { dialogFocuser.focus(); } }; var onblur = function () { if ( !modalShowing ) { focusedElement = body; } }; html.onfocus = html.onfocusin = onfocus; html.onblur = html.onfocusout = onblur; if ( isSafari ) { html.addEventListener('DOMFocusIn',onfocus); html.addEventListener('DOMFocusOut',onblur); } // focus and blur events are tricky to bubble. // need to do some special stuff to handle MSIE. function toggleModal (b) { if (modalShowing && b) return; if (!modalShowing && !b) return; html.className=modalShowing?'':'modal'; modalShowing = !modalShowing; if (modalShowing) { dialog.focus(); } else if (focusedElement) { try { focusedElement.focus(); } catch(ex) {} } }; webcit-8.24-dfsg.orig/static/summaryview.js0000644000175000017500000004425612271477123020630 0ustar michaelmichael/* * Webcit Summary View v2 * All comments, flowers and death threats to Mathew McBride * / * Copyright 2009 The Citadel Team * Licensed under the GPL V3 * * QA reminders: because I keep forgetting / get cursed. * After changing anything in here, make sure that you still can: * 1. Resort messages in both normal and paged view. * 2. Select a range with shift-click * 3. Select messages with ctrl-click * 4. Normal click will deselect everything done above * 5. Move messages, and they will disappear */ document.observe("dom:loaded", createMessageView); var msgs = null; var message_view = null; var loadingMsg = null; var rowArray = null; var currentSortMode = null; // Header elements var mlh_date = null; var mlh_subject = null; var mlh_from = null; var currentSorterToggle = null; var query = ""; var currentlyMarkedRows = new Object(); var markedRowIndex = null; var currentlyHasRowsSelected = false; var mouseDownEvent = null; var exitedMouseDown = false; var originalMarkedRow = null; var previousFinish = 0; var markedFrom = 0; var trTemplate = new Array(11); trTemplate[0] = ""; trTemplate[10] = ""; trTemplate[12] = ""; trTemplate[14] = ""; var currentPage = 0; var sortModes = { "rdate" : sortRowsByDateDescending, "date" : sortRowsByDateAscending, "subj" : sortRowsBySubjectAscending, "rsubj" : sortRowsBySubjectDescending, "sender": sortRowsByFromAscending, "rsender" : sortRowsByFromDescending }; var toggles = {}; var nummsgs = 0; var startmsg = 0; function createMessageView() { message_view = document.getElementById("message_list_body"); loadingMsg = document.getElementById("loading"); getMessages(); mlh_date = $("mlh_date"); mlh_subject = $('mlh_subject'); mlh_from = $('mlh_from'); toggles["rdate"] = mlh_date; toggles["date"] = mlh_date; toggles["subj"] = mlh_subject; toggles["rsubj"] = mlh_subject; toggles["sender"] = mlh_from; toggles["rsender"] = mlh_from; mlh_date.observe('click',ApplySort); mlh_subject.observe('click',ApplySort); mlh_from.observe('click',ApplySort); $(document).observe('keyup',CtdlMessageListKeyUp,false); $('resize_msglist').observe('mousedown', CtdlResizeMouseDown); $('m_refresh').observe('click', getMessages); document.getElementById('m_refresh').setAttribute("href","#"); Event.observe(document.onresize ? document : window, "resize", normalizeHeaderTable); Event.observe(document.onresize ? document : window, "resize", sizePreviewPane); if ( $('summpage') ) { $('summpage').observe('change', getPage); } else { alert('error: summpage does not exist'); } takeOverSearchOMatic(); setupDragDrop(); // here for now } function getMessages() { if (loadingMsg.parentNode == null) { message_view.innerHTML = ""; message_view.appendChild(loadingMsg); } roomName = getTextContent(document.getElementById("rmname")); var parameters = {'room':roomName, 'startmsg': startmsg, 'stopmsg': -1}; if (is_safe_mode) { parameters['stopmsg'] = parseInt(startmsg)+499; //parameters['maxmsgs'] = 500; if (currentSortMode != null) { var SortBy = currentSortMode[0]; if (SortBy.charAt(0) == 'r') { SortBy = SortBy.substr(1); parameters["SortOrder"] = "0"; } parameters["SortBy"] = SortBy; } } if (query.length > 0) { parameters["query"] = query; } new Ajax.Request("roommsgs", { method: 'get', onSuccess: loadMessages, parameters: parameters, sanitize: false, evalJSON: false, onFailure: function(e) { alert("Failure: " + e);} }); } function evalJSON(data) { var jsonData = null; if (typeof(JSON) === 'object' && typeof(JSON.parse) === 'function') { try { jsonData = JSON.parse(data); } catch (e) { // ignore } } if (jsonData == null) { jsonData = eval('('+data+')'); } return jsonData; } function loadMessages(transport) { try { var data = evalJSON(transport.responseText); if (!!data && transport.responseText.length < 2) { alert("Message loading failed"); } nummsgs = data['nummsgs']; msgs = data['msgs']; var length = msgs.length; rowArray = new Array(length); // store so they can be sorted WCLog("Row array length: "+rowArray.length); } catch (e) { //window.alert(e+"|"+e.description); } if (currentSortMode == null) { if (sortmode.length < 1) { sortmode = "rdate"; } currentSortMode = [sortmode, sortModes[sortmode]]; currentSorterToggle = toggles[sortmode]; } if (!is_safe_mode) { resortAndDisplay(currentSortMode[1]); } else { setupPageSelector(); resortAndDisplay(null); } if (loadingMsg.parentNode != null) { loadingMsg.parentNode.removeChild(loadingMsg); } sizePreviewPane(); } function resortAndDisplay(sortMode) { WCLog("Begin resortAndDisplay"); /* We used to try and clear out the message_view element, but stupid IE doesn't even do that properly */ var message_view_parent = message_view.parentNode; message_view_parent.removeChild(message_view); var startSort = new Date(); try { if (sortMode != null) { msgs.sort(sortMode); } } catch (e) { WCLog("Sort error: " + e); } var endSort = new Date(); WCLog("Sort rowArray in " + (endSort-startSort)); var start = new Date(); var length = msgs.length; var compiled = new Array(length+2); compiled[0] = ""; for(var x=0; x markedRowIndex) { startMarkingFrom = markedRowIndex+1; finish = rowIndex; } else if (rowIndex < markedRowIndex) { startMarkingFrom = rowIndex+1; finish = markedRowIndex; } previousFinish = finish; WCLog('startMarkingFrom=' + startMarkingFrom + ', finish=' + finish); for(var x = startMarkingFrom; x 800) { if (!room_is_trash) { mvCommand = encodeURI("g_cmd=MOVE " + msgIds + "|_TRASH_|0"); } else { mvCommand = encodeURI("g_cmd=DELE " + msgIds); } new Ajax.Request("ajax_servcmd", { parameters: mvCommand, method: 'post', onSuccess: function(transport) { WCLog(transport.responseText); } }); msgIds = ""; } } if (!room_is_trash) { mvCommand = encodeURI("g_cmd=MOVE " + msgIds + "|_TRASH_|0"); } else { mvCommand = encodeURI("g_cmd=DELE " + msgIds); } new Ajax.Request("ajax_servcmd", { parameters: mvCommand, method: 'post', onSuccess: function(transport) { WCLog(transport.responseText); } }); document.getElementById("preview_pane").innerHTML = ""; deleteAllMarkedRows(); } function CtdlMessageListKeyUp(event) { var key = event.which || event.keyCode; if (key == 46) { /* DELETE */ deleteAllSelectedMessages(); } } function clearMessage(msgId) { var row = document.getElementById('msg_'+msgId); row.parentNode.removeChild(row); delete currentlyMarkedRows[msgId]; } function summaryViewContextMenu() { if (!exitedMouseDown) { var contextSource = document.getElementById("listViewContextMenu"); CtdlSpawnContextMenu(mouseDownEvent, contextSource); } } function summaryViewDragAndDropHandler() { var element = document.createElement("div"); var msgList = document.createElement("ul"); element.appendChild(msgList); for(msgId in currentlyMarkedRows) { msgRow = currentlyMarkedRows[msgId]; var subject = getTextContent(msgRow.getElementsByTagName("td")[0]); var li = document.createElement("li"); msgList.appendChild(li); setTextContent(li, subject); li.ctdlMsgId = msgId; } return element; } var saved_y = 0; function CtdlResizeMouseDown(event) { $(document).observe('mousemove', CtdlResizeMouseMove); $(document).observe('mouseup', CtdlResizeMouseUp); saved_y = event.clientY; } function sizePreviewPane() { var preview_pane = document.getElementById("preview_pane"); var summary_view = document.getElementById("summary_view"); var banner = document.getElementById("banner"); var message_list_hdr = document.getElementById("message_list_hdr"); var content = $('global'); // we'd like to use prototype methods here var childElements = content.childElements(); var sizeOfElementsAbove = 0; var heightOfViewPort = document.viewport.getHeight() // prototypejs method var bannerHeight = banner.offsetHeight; var contentViewPortHeight = heightOfViewPort-banner.offsetHeight-message_list_hdr.offsetHeight; contentViewPortHeight = 0.95 * contentViewPortHeight; // leave some error (especially for FF3!!) // Set summary_view to 20%; var summary_height = ctdlLocalPrefs.readPref("svheight"); if (summary_height == null) { summary_height = 0.20 * contentViewPortHeight; } // Set preview_pane to the remainder var preview_height = contentViewPortHeight - summary_height; summary_view.style.height = (summary_height)+"px"; preview_pane.style.height = (preview_height)+"px"; } function CtdlResizeMouseMove(event) { var clientX = event.clientX; var clientY = event.clientY; var summary_view = document.getElementById("summary_view"); var summaryViewHeight = summary_view.offsetHeight; var increment = clientY-saved_y; var summary_view_height = increment+summaryViewHeight; summary_view.style.height = (summary_view_height)+"px"; // store summary view height ctdlLocalPrefs.setPref("svheight",summary_view_height); var msglist = document.getElementById("preview_pane"); var msgListHeight = msglist.offsetHeight; msglist.style.height = (msgListHeight-increment)+"px"; saved_y = clientY; /* For some reason the grippy doesn't work without position: absolute so we need to set its top pos manually all the time */ var resize = document.getElementById("resize_msglist"); var resizePos = resize.offsetTop; resize.style.top = (resizePos+increment)+"px"; } function CtdlResizeMouseUp(event) { $(document).stopObserving('mousemove', CtdlResizeMouseMove); $(document).stopObserving('mouseup', CtdlResizeMouseUp); } function ApplySorterToggle() { var className = currentSorterToggle.className; className += " current_sort_mode"; if (currentSortMode[1] == sortRowsByDateDescending || currentSortMode[1] == sortRowsBySubjectDescending || currentSortMode[1] == sortRowsByFromDescending) { className += " sort_descending"; } else { className += " sort_ascending"; } currentSorterToggle.className = className; } /* Hack to make the header table line up with the data */ function normalizeHeaderTable() { var message_list_hdr = document.getElementById("message_list_hdr"); var summary_view = document.getElementById("summary_view"); var resize_msglist = document.getElementById("resize_msglist"); var headerTable = message_list_hdr.getElementsByTagName("table")[0]; var dataTable = summary_view.getElementsByTagName("table")[0]; var dataTableWidth = dataTable.offsetWidth; headerTable.style.width = dataTableWidth+"px"; } function setupPageSelector() { var summpage = document.getElementById("summpage"); var select_page = document.getElementById("selectpage"); summpage.innerHTML = ""; if (is_safe_mode) { WCLog("unhiding parent page"); select_page.className = ""; } else { return; } var pages = nummsgs / 499; for(var i=0; i End Chat ugly hack to enable an onUnload event webcit-8.24-dfsg.orig/static/citadel-logo.gif0000644000175000017500000000430512271477123020723 0ustar michaelmichaelGIF89ax#rmr~}z~{v{z~wrw狅»Йwsw|xsx|w||㛔~}wsx{vz~y~ሃxtxļ|氭}x|}{Ėzuz˅xty}x}üzuy|w{ƾڹ~y}ۚǿ嗓刄⢟upu㪧͇źӠztzԙֽ݅tptқ|w}֋vrvvqvz|oko׊ytzᖓ͸ÏߘŽ̎܇zŽ»uqvƫ݁|}~x~~ypkp{w|⡝댆yty!,x# H*\ȰÇ#JHŋ3:<%ޙyKA_<g׫/ ]C&;êSHB4/ЫX}Qx:)p#ZZ: pK8 oӣ~="K غ(MC, 4i`0NÁ@p E(Dn%9赇cb`7 oJF $2@(N^Pu| : bDD -d pDd':貓4k:Qb0D^̀A`! @M 8J0C&8(dqjr85M drՌ.v.ijСL.SDPKb } p.diMj &5OXP/?\48@ iN!@QrXAJ $ GX1 N: _T تNM`PJ : ;webcit-8.24-dfsg.orig/static/roomops.js0000644000175000017500000000404212271477123017723 0ustar michaelmichael/* * Copyright 1998 - 2009 The Citadel Team * Licensed under the GPL V3 */ // ROOM list vars: var rooms = null; // FLOOR list var floors = null; var roomsForFloors = new Array(); /* STRUCT KEYS */ /* LKRN etc. */ var RN_ROOM_NAME = 0; var RN_ROOM_FLAG = 1; var RN_FLOOR_NUM = 2; var RN_LIST_ORDER = 3; var RN_ACCESS_CONTROL = 4; var RN_CUR_VIEW = 5; var RN_DEF_VIEW = 6; var RN_LAST_CHANGE = 7; var RN_RAFLAGS = 8; var QR_PRIVATE = 4; var QR_MAILBOX = 16384; var UA_KNOWN = 2; var UA_GOTOALLOWED = 4; var UA_HASNEWMSGS = 8; var UA_ZAPPED = 16; var VIEW_BBS = 0; var VIEW_MAILBOX = 1; var VIEW_ADDRESSBOOK = 2; var VIEW_CALENDAR = 3; var VIEW_TASKS = 4; var VIEW_NOTES = 5; var VIEW_WIKI = 6; var VIEW_CALBRIEF = 7; var VIEW_JOURNAL = 8; function FillRooms(callback) { var roomFlr = new Ajax.Request("json_roomflr?SortBy=byfloorroom?SortOrder=1", {method: 'get', onSuccess: function(transport) { ProcessRoomFlr(transport); callback.call(); }}); } function ProcessRoomFlr(transport) { var data = eval('('+transport.responseText+')'); floors = data["floors"]; rooms = data["rooms"]; } function GetRoomsByFloorNum(flnum) { var roomsForFloor = new Array(); var x=0; for(var i=0; i( TJ$ǁ P Źh-H|UE#oCRUBc##O#DE cO Flc$ eB EcB ER $c]O B$ BA! &,LJL,*,dfdtvt TVT424|~|LNL,.,trt|z|  \Z\464@pH,FN)A:% "(0"VM)!DJM#9(? @#}DH|_&FmBp_C  D#G !N E$pFpD"!B#DRR#R[&`p F"iBUOA! (,DBD$"$䴲dfd424,*,켺trtLJL$&$䴶lnl<:<,.,켾tvtLNL@pH,GM$jesXUP鴐p-yG|fNd! '(fw ii %i}L!!i%H!(xB|y'!!z~L & FiGi "E C"CiE'$E W( ]w("swCLA! (,DFD$"$ljltvt \^\TRT,.,|~|LJLtrt|z|  424@pH,ȤIxN(GE\K$0F_dY #&~I VI!"!B yK!\\ s (~"s"(J!#\#D J xF'G\F{\$HsSD BBC 'm_ {~\CJ\D $G! %,<:<\^\lnl  LNLdfdtvt LJLdbd,.,trtTVTljlpHd< rY$h,L C"3P̀#܌HB\Jf LtJo~SYK_KD!Bb_OBSLS mN_\ KB!OK!OC LB ) ! #,DBD촲dfd TVT424LJL|~|DFD,*,켺ljl  464pHl6 rIL`AY4 =OvG G4l*1Ѓ2LGS[J [zL bK^XT^T  Lo""#x[ "P"o^Br SC ^aK l_D# bC gA;webcit-8.24-dfsg.orig/static/webcit_icons/0000755000175000017500000000000012271670427020341 5ustar michaelmichaelwebcit-8.24-dfsg.orig/static/webcit_icons/resizegrippy.gif0000644000175000017500000000022012271477123023554 0ustar michaelmichaelGIF89as11c!,s@=0 8ͻ_$ik,lYY `@H "rl&LsI1جvˍ;webcit-8.24-dfsg.orig/static/webcit_icons/aol-32x32.gif0000644000175000017500000000317412271477123022365 0ustar michaelmichaelGIF89a       !"'(  *!+"###.$$$$%%%'''((()))4*+++8-9----111222333A4444555:::<<===>>>P@UDCCCYGFFFIII^KJJJNNNdPfQfRQQQhSRRRoXu]\\\x_^^^y`za```fffggghhhjjjjnnnpppqqqttttvvvzyyy|||}}}~~~šƞǞˢթ׫ج٬ۮ!By viewing this comment you agree that Barack Saddam Hussein Osama Obama is a muslim terrorist who was born in Kenya and is the most America-hating son of a bitch ever to set foot in the White House.! ,  H*\ڵl"JHb6k R- Cm5jeƲhК)S hҲIK̙ϟ@G_ˀs`3fPF]LVhQ+T&K,`(…&Kݻx-"-[3rk`È3/; XK|˘3 d`(-` | ӨSE\$8Kirk.@T^}żs]iJD08\G [;88 *ΚO>B"}h0 J}b~ -q$ H*f(@V+l q(hH),آ&)lV)9X,ʏ@$P&AI'PF&4>5?5?4>7@6@6@7@8A7A7A9B9C9C9C;D;DF?G=G>H?H>H?H@ICKAJCLAKBKBLBLBLFNCMDMDMENGPEOEOHQFPFPJRHRJSIRKUKULUPYOXNXRZPYS[QZR[PZPZQZS]S]T^U^U_U_V`XaXa^eZdZd^f[e]f\f^h`ibkemakcmdnkrhqhqgqmtjrmvryr{w}yy{w||ӆ͆ʇˆ놎֔ДԕєܖӖ֘חꝢݟޠߡաء٣ۤ楪槬驭⬰宲ۮܰݮ水䴸嶹淺綺縼㼿ỿ컿! , @ #J(ȱ#+I#ďs"hH˗/x8#j7Yjӥ!*TL[ȐKʴ)=D"(ȍիn`"7w\1MUAY˶M*]4N[}I÷oHLS,i/}cc3ylFSʍ31^ )pºOLqq-)i,׭,ӥ.|c!`I]*УCŴ D%$]T/ /z!G&{*ă6T4* Cɤ@ti0qJpL)zNR$h'ZA2( (udpF&\B,2CV[@(#vA0 + 04k/#O lp PB 7l@;webcit-8.24-dfsg.orig/static/webcit_icons/up_pointer.gif0000644000175000017500000000024512271477123023213 0ustar michaelmichaelGIF89a JZRkc{c{k{)s)s11BRR!, R{ރ{|{= 0{=QMcTSA %x{{/;webcit-8.24-dfsg.orig/static/webcit_icons/down_pointer.gif0000644000175000017500000000024512271477123023536 0ustar michaelmichaelGIF89a JZRkc{c{k{)s)s11BRR!, R{\!x@5e1%PMx3<{{{{{{{/;webcit-8.24-dfsg.orig/static/webcit_icons/old/0000755000175000017500000000000012271477123021115 5ustar michaelmichaelwebcit-8.24-dfsg.orig/static/webcit_icons/old/chatrooms_16x.gif0000644000175000017500000000034712271477123024305 0ustar michaelmichaelGIF89aһ hefffecbxooovl!VVV<<<333!,d %XTlKcRO*(Yv}> e'DR2LB!`D ߘ*!4rz(kR1<1R$0!;webcit-8.24-dfsg.orig/static/webcit_icons/old/taskmanag_24x.gif0000644000175000017500000000220212271477123024243 0ustar michaelmichaelGIF89a}wwίnʹؚlɾjȾiꥸєꕺùh菶袳Ȥddbba_^ZxVzgf~~~iQs|xxxnywwwmylwivou}itdtppp`rWoUoUmUnTnplJTmdipafn___X[^[ZL\ZBQV\SV[VUCTR?TQ?PPPSQ>LPUQO>MNMMMMKMOKLMJLOGIKGHHGHJFFFCDEAA@@@@???==9<=><<=:::<;699999:9::::6888777666664566555444333222000///...---(((%%%$$$### !,g H@+N2`BKHj8ʢP2j,EJ!( DD *b"%ЫbI?Slj#+^ y 'z8hCK~N7(pF) %F=r +Pj% ֡<,4 ShhN6pDPS  RYFNCZTZSj !04nqj˩ +?%A k9Ƃ سc&{_`M>5s*Gȟ@M@J\@'&Cq,$B8&E NhAdžv0E%hdTE,";webcit-8.24-dfsg.orig/static/webcit_icons/old/week_view.gif0000644000175000017500000000047312271477123023575 0ustar michaelmichaelGIF89aoݍ⢽rϗzЃҬ쳳k^!, 'dihXp `Z6l&>>===<<<:::999888777666555444333!,!ZY͘)\`Ae9s@3jԨf fhcɌo%j҆˓'rY38ɓ'Fj6AL E$4ӞPw6&3X%OVa&QBպO@$B,TOHYM7 (]ƌi& E2uj)!s p@ ]4ʔ)Urm a3eM# U+n HQbǑ/X%f ,|@! K({*hg6@2@ @P0ju;@h HyBF,YMr1s0f(c˄rDž&C 1thV-$Ň0~\ 8 BZ.8 !ɜv3@dڐ@2ёH&L6d@;webcit-8.24-dfsg.orig/static/webcit_icons/old/viewnotes_24x.gif0000644000175000017500000000226512271477123024331 0ustar michaelmichaelGIF89asCP^ltiؙ,:JIgf@@@333BQdps2ASdt쑯ǐivGHJåNX`[[[xꀤд޳:::jzzz|TmNb{RRRBJcꞳϽc|좵s|ށ rrr÷S`k}PfHFDƙ˜ꗿpLPUץARh5<@5FYmyУ::BWoKMOzNSX፲JkIWhsꆠJRZ!,- ON82#_4X dE&8lxĄ 50IA$0cxrʖ.eDRZ!ѣQlXCQ+jT!#(TJ(`!e X #Ԃ'o S sX.|H+DkCx,Ҡˡ.~` <:Ç@S*ɑ)# -,pVzT`dC?l0, ][` 3nB4ҀCQ1`#=0c{ tj (^#B6mpD4gI  h ;webcit-8.24-dfsg.orig/static/webcit_icons/old/year_view.gif0000644000175000017500000000047112271477123023600 0ustar michaelmichaelGIF89arύԬ䗷עكҷzkoГ^!, &dihUp`W| a Ml"ШtJ YvzWQaLe|^׌0bP;^ rz|x ^ oifmih ~xy\njh } ցM0+!;webcit-8.24-dfsg.orig/static/webcit_icons/old/advanpage2_48x.gif0000644000175000017500000000372512271477123024326 0ustar michaelmichaelGIF89a00333UlDYtQ%ڑZQOLbCgy+{vsd|Y@-c`]uwdks}LOR9AKƉ[dఋ݂=aGxO2lF*Jh嶔ÿgP=/y_ ˻pwgʠV#SwTIA֨]9wh^kKmizYWVYF9x[i{B81KEAŋ)tR8x{Bo`ẞe`[}tCY"tI)jj^fådSEXTRQ'OsqdZH͂|\C0fff^]cɸq_z/cŜ53S$E\y}XʙvleLGCeƙWPKspT@JʥoB{$dsL.V*ZJ1ZH:i{Z!cJ)[W[Ll!,00 H*\ȰÇ#J81^:pIŅ A%2*%jPPAThb*M S9Z 5K=269)35t.8tjQGx਩휞prbW Ξaǟwfxjc qɸ˷˘RcFe IJPd qA3D D1K((1 >trC6MށIgʈLJd[( c҃; Ě!D, N.$ćoE3pp$ $`π3+3"Ç`(A3 @8H҅?XL8GPPBDH#aYSO-C*@ | +l1$ J /d#( &/&]C/08b3 42 $4wv9`(ϔQ(!x2è_1F m9 05-` ($N6{Q@L`A0Jxv6pE,t|Ap]8Rm aR# L0*=*bĩP tbMT4Dt!#?8 `'8._\pC+p_4Pm| A R1E$1C("V oː<J0D E0)s30!*ۃ*sѤlP+&yn{ nP!kp3.8]EMc"|̘M  q,bbTEt'\O)$ȉ Մ1qK8I dPJU@3D16̏TЊhC+Ģ?B@WD #,wD/vA5XV ,*QjG( pg@`Ph Є"9D jm02xP)0Ɛb \ t~L!gٚ2Ġ\ Ḻ^%B D;hİHHHLuQO=cTll@@@}T즧RRRAuRfffCr̈́OZRBQfMKEMYvJB:WVV{ssȾiqXXXGLSi?uifM@l:dŭF}Zf!s, s)-M6M-)1Z6 Z1^k5)^dH?5-@H@- H& M6fһf6΄M9]ӻ]9ׂ-D44Ds)@..@bX9f&f9XİsЄX1(>a-ʠR!FPQ̑3UTx l ɌPd93L^@#1,fjBnx`Ct P`Ȉ#ŊՂp-@VAI@)R ȝ+WZ F9ܞ@pa*s8 -+Z%S6<33Zْ$/-G1 '[v@:C N6BM(#nF rb Ep#:pZ ()ʤXdއnLfA!؇{X< A ;ւD ;webcit-8.24-dfsg.orig/static/webcit_icons/old/taskmanag_16x.gif0000644000175000017500000000111112271477123024242 0ustar michaelmichaelGIF89azݽt̳۬蝿ɾjɿjѬƼi覱ɵbóbZxVnmS~~~|||s}zzzyyyoz{Ooy}xNhvsuxbrbswrLZrmpsYqnnbegk_dkheJgcEY^eb_DTUNKS]@@@=>?<<<==7;;;:::99:999777667774555444544333222.02***&%$!c,cc4RNc2SYYZYX*,58>\)0$/7C\ EHLK1FT"A QU\\WO(`<&[V'J\G6^:I\S\+\ _abMЄP;\9#%܃P\P=\= cPԸ8xw@PB~U\!Bb~3tۈcE;webcit-8.24-dfsg.orig/static/webcit_icons/old/readallmess3_24x.gif0000644000175000017500000000231212271477123024656 0ustar michaelmichaelGIF89aֱկհԮӫ΢̟Ɩ›ďԌ۴ء洒맽xش١ޢڦҲ˘RQ֤ШePɠWЎ͑NDŘk™o8ՐLy!w!w"u"Ht"s"r"p#{FdzFm$wEk%i%zzzg&qDf&oCmBlBg>ppp`'^(jjj_4iiljffZ)Y)X)`?ga]e`^T+]_bS+tX=_\ZX[^rW=XZ^O,`UI`TIzM0|L-yL.zK-XNIVMEMMMKMOKLMfE.dD/PIAOGBNGAGHJSE8_B/DFIKE?JD>Y@0W?0X@0CDE@@@;;<<:7:;<;:7;978:;A829::99:999888>72986777976775765953566853444333222111///---!, (mn- E@sq`s I6IN b,"JVB&Aچ@hq&0E mDF]*s i$ @hAefR2 8_n(!15+^4 QF j@H5,QDڒC|X VnJe./׶0/,r%,VL2s5D¥*B>*$Y0cfffJsyy!B::szzzOL?khwrtXJ7=GTTTTQ?ϭPެ]̪MYkyv_Ǻoѥ~𹪎DjRޔR_\CXWP!,  m 0Pd'(9ㅠEAjܸ@%PZs`(r0L(Dxmv%DB 0Bd&XT<ˀ.Cpf/ J  (fk (8Ff&&pv pV!àjX(l@B< Ϫ<"LiM*6^jAF)jq6У#8Z)wz-)J}Jtdq3kzcKTkCI5.,0?@@D0ȆHAp+ .db 0߆  m`qXb4mL"x Pb,@Ɉ 4X!J(qF2o 1 M$QH ()ty,VXˆ`H6%0'k &ҙ3̧6Ǡ. 0qҩIJ &NleŒ "̚ -r̞ C k:@:QI2)5L00JBd#!L4z% ZkJ{ /L@4K@0E5)R@B.b 5EA Ar`Lk#F ͬ0ͮOm6:@f[:DB=J?=8jyQQQ^|ہLH;ΌcrkG/RL9cO?rmM:QfҡT{{HNJB:q?͋Q+2H@/$vX_VQWɪKs[89:?CI׶PRJJa^]u`oaF֍{AԷ!,00 H*,H fD UYjAb ` dF@YcBl)Ut&"piEL"06ro߬4֒@!XoX) 2/pJWĪd1 ʝ<<YH >*a-V U9="?xFcӞiT% $ABE2V :Y f V :hxPOLZ n9fB(GU-Dp]l) nAh "6:!ː%:@ ֭HS pDUc -L2 . 9@r *(h lz8 $s9w>ɐ!=o!O|O>3M< *_.ܫ#?BC( E>L=O~9H`p> _T@{q|#sƠB#/H @x9P <4bcG$%(Ahæ SJrψXB1 8!"Fx/lHX;8)PBFuq Ȣ航(|H9*Y8|SZJMla& N(ncXRJQ:*)d-B^ܥ0;webcit-8.24-dfsg.orig/static/webcit_icons/old/storenotes_16x.gif0000644000175000017500000000112712271477123024510 0ustar michaelmichaelGIF89a߬蝿詼ј谰]ldeJJ-.*~vĀMvKnmomtzzzyyyh"mEsuxf$cg@ZrmpsYqjjjegkdddX:Y]f'A*2AI 8(dF!xF xÇ_x`Z(;webcit-8.24-dfsg.orig/static/webcit_icons/old/gradient_background.jpg0000644000175000017500000000077312271477123025622 0ustar michaelmichaelJFIFHHExifMM*C  !"$"$C"!a ? ,PUPj(*@X,E (D  hApQj ,Q`X,E@AZ@/E`,DX( TP  X( E ( ( E ,E@, `kUA @U5Q` (,X"Qg(webcit-8.24-dfsg.orig/static/webcit_icons/old/plus_last_no_root.gif0000644000175000017500000000021412271477123025346 0ustar michaelmichaelGIF89a{{{!,9pI8;(@(!h Ak8NOTN?L0b"tJZ;webcit-8.24-dfsg.orig/static/webcit_icons/old/bgcolor.gif0000644000175000017500000000022412271477123023231 0ustar michaelmichaelGIF89a!,Yh0Im"q]P[|C0paۙDe%]03aTʁKFA`+Ud-@.πz]V9E;webcit-8.24-dfsg.orig/static/webcit_icons/old/t.gif0000644000175000017500000000152712271477123022054 0ustar michaelmichaelGIF89a{{{!,4(*LhpÇBP"ŋ j "FC#I&OVT0 ;webcit-8.24-dfsg.orig/static/webcit_icons/old/outdent.gif0000644000175000017500000000014012271477123023261 0ustar michaelmichaelGIF89a!,1TarW^甔V{|\{[xxwvvvutsponmQk}}}j~PtttdbbrrraxsMPuOt_iMiX\iii[ZXaF>g^^^qZHpZHeP@UTJmN6aPDPPPNNNLLLYI?HHH^A+5G^5G]X>+V>-N;->>>8>E7TTTYV;XU;TT9YT(TT8RRIUT0RR7OOOTP+SO5MMMQN3RM$RM%RM#PL2RM"NK3PK#LK,LK+IIFHHHKH'JI)JI*KH&IF3EEEHF3KG'KG&IF&DDDIE&EC6BBBB@3;;;993774!,  H*\ȰÇ#JH":Rjp]ԺiPjD<5wպzqaz_,/3cJE;]rR)쌺{IFBqajt٥mtIbcF̙ŦKWf19CۜMORn~bJ\suqYYYm{rtP=/v]{n@A:~fffJMPs)*, 1?EMdq岻S@3ئO]n[!;GVůUeπiCϦNd~dΫo:::xPPPzt;=?JJJ?Oc~{gtfABB|x|PCXsYXCcxkwJ)c{QQKRkßj|(`333Ŝ펽ޕ@:7y9ETTZbBIR6=G曵e{dUf{uJBBF\xku%yك{dnychIKS]Ճ*,.ȺxnjX\G!,00 H*\ȰÇ#JHŋ3j܈T CIHRYɲ˗0clR̛8eI٘@29'HcFT`3,$:M5IT[AgJX'6+*?b4Iq6eje(iA%2=/`hk|ibi-(„I6I)ϟk9xHO<"2dI(ITqM҈`DE7p̧|`N^SHXS`Ŭ؄.E9^Hr  H,6,'pQTǑSf)t? k1͸R;)Q * QD) Em! 6s| ΀ƽ.14`./LP2 tR ,ȫD!n=2$P@0$H8L4*W<*O- )/!Jc2ZSE 50t/ _[ Y`]Q*bx J,jp߀.n;webcit-8.24-dfsg.orig/static/webcit_icons/old/body-background.gif0000644000175000017500000000013512271477123024655 0ustar michaelmichaelGIF87a ,p2"v.A iW;webcit-8.24-dfsg.orig/static/webcit_icons/old/taskmanag_32x.gif0000644000175000017500000000236312271477123024252 0ustar michaelmichaelGIF89a ~yPoIJJyhTnxjfGWi9::pb[XBoz񗞥333حЙwwwarX]bOM=rx~̒~@?8ɿj]'''RXWtŕ}KOTUS?B:BssoI뱨aR!!!Աit|EIO`]DfffeZRBs|lDC@zmiH۝GD=b_Dvss{램LRYTTItuqLSLMP!,  H*\Ȑ V4lxbÐm0P'6=9Ћ2.| f%%"ʅ,{a'@@Dpl*O*,dswwp}4ȑ A+\Ywk@Tha* *8/\/$ (n@0" +A0<&?QcML`F41d39ÔTV90PÐ:,`hih0ixy@8DQHj衈&*P@;webcit-8.24-dfsg.orig/static/webcit_icons/old/logoff_32x.gif0000644000175000017500000000236112271477123023556 0ustar michaelmichaelGIF89a }}|xuwյˤŚqyxdo_YUJšbkjhh?ghggM_RF:DPD?;6@KB=;L;0===A<9C:57>>{2?>7?>:==:==9=<6999;:6888875985775776666664554444533443433333:2,!,Q HP)"2Â#y2ESNDJa"'X!g!Z gLZLlP 6 % MAx&ȩi+Bzu/U4KlcJt))&#ېтI2e˒$F}G\')ܑwGOX` q!!8„1젇!|Z,B"cIjh#R8T@;webcit-8.24-dfsg.orig/static/webcit_icons/old/lastnode.gif0000644000175000017500000000152412271477123023417 0ustar michaelmichaelGIF89a{{{!,1(0*LhpÇBP"ŋ-bh7Iɓ(;webcit-8.24-dfsg.orig/static/webcit_icons/old/white.gif0000644000175000017500000000150512271477123022725 0ustar michaelmichaelGIF89a{{{!,"H*\ȰÇ#JHŋ3j(0 ;webcit-8.24-dfsg.orig/static/webcit_icons/old/page.gif0000644000175000017500000000022012271477123022512 0ustar michaelmichaelGIF89a UWW2eq,,_~~!Made with GIMP!d, +I)u^{B(@Dy IFPB!<lt*;webcit-8.24-dfsg.orig/static/webcit_icons/old/viewcontacts_32x.gif0000644000175000017500000000301412271477123025007 0ustar michaelmichaelGIF89a jPR\W=wJb}¢I<8-ȂyrBqvzHúФP^oPIG:uf~r·l帬h̄AHI]]]v=]tf僙ն]333q侴efffanN}EC9CVs|HձPsԿlZ*YP8wڅD_wRRR_dbO6Ta2u7taui;F8 "MĢh E%s|ԪS;webcit-8.24-dfsg.orig/static/webcit_icons/old/monthview2_24x.gif0000644000175000017500000000232712271477123024407 0ustar michaelmichaelGIF89a333dozNaQO<ղ W·ɦk{AQcshd@%5BA?3R%VfffxsLߚMjǽb|{lI^>M^;62xZZZvBBBrY\!fZco^QwѬljWiRJ:̙RRR]A-gtu|||G:::»xf3toJ`|xWέfffJJJsssŮBRQHN ii\sŽOlzvYRsϦ f{|h"ԯtpJX\YFnJBB ]¢V^άÅsBA6kkBZdqq}M6R"WoxPND󺽵k߼r(!,WyтHDlѢAPԢ*x ,TR)( `9!?KH,31@z\⁨$%R.,J$%ѡ#.<ᔃhӪ=KeK&/DUvLl !M H/&fAc 0`a4(# fs 3Ԩdme-i9cؐG+@dOmbh#c;# +<1aG$) Ѵ=͎X~͇F` ?e&&8 D'W](,R|,sFu#hPE d <]1!) )@I5 $1ƔTa(rH\1%?6 d˜e6q_p)';webcit-8.24-dfsg.orig/static/webcit_icons/old/enternewnote_24x.gif0000644000175000017500000000233212271477123025016 0ustar michaelmichaelGIF89a}|԰ҶϰΦίͪƻ˧ѿ؛}}y}}}ꕺ곳߲ů豱R`֠HEDC{@~{yx}zhn~nfgis|o{YWeyyyexxxssnywwwmydvvvt_ivzwO`dtlqvkps`r_V_WoDDkkkUnUmTmUmrfRRiVewraUbbbYdpYdra``Kb}k\Ma^]i[MhZLH^yE?=;U[ecYKX[^aYWdXLNZhkU?QV\VTPOOOLPUfGFyE$MMMKMOuC"KLMDMXsC$mB&DJQIIAGGGGHJi?&FGHHE>CDEBBBAAA@@@p4.???<=>;;;:::999N419::99:998888777555566444333222233111000///3.(...---,,,+++***)))*)'%%%"! !, H`A5{ *\h'&[% ŋ׸EѡNx R4 Y=daK62y@'4dmPRknliN †=s @B޴Zɥ]i^% W-rӢ+^6^DLX1`@yD FlZ 7O.$t)O@;webcit-8.24-dfsg.orig/static/webcit_icons/old/right_just.gif0000644000175000017500000000011412271477123023762 0ustar michaelmichaelGIF89a!,#ֶyHbWbnkվL׶X;webcit-8.24-dfsg.orig/static/webcit_icons/old/minus_last.gif0000644000175000017500000000021212271477123023755 0ustar michaelmichaelGIF89a{{{!,7pIgcIriiܾDA-zcQcjШtJD;webcit-8.24-dfsg.orig/static/webcit_icons/old/spellcheck.gif0000644000175000017500000000015312271477123023720 0ustar michaelmichaelGIF89a!,<`oNa^ G v`,4bF<L?P "u"ɌJh;webcit-8.24-dfsg.orig/static/webcit_icons/old/citadelchat_16x.gif0000644000175000017500000000105412271477123024547 0ustar michaelmichaelGIF89aklmokjwyRRRSQPPT6445λ"ɸ4ɸ3ȷ5soV4TFG~~~|||4yyyw)wo%hhheeZee[]Y4PPFPOEMMMLLLNL9OL8@@@><3:::<;2;:1![,[3CKRWWRKC3,EL@12AME,[/P:9O/F;  Z 8FU UF>лp)8ld DjfhyHp񄟗Tlqd`]DLJ8yu]RSQBvXuZYRplSupDRRRϑx󛹯`zfffkcZkcRqn[ZX@sqbdUfffL[III|YebEB::u{sJ~|elhHӉszOԙ{zqtoHXtpT!, 8P H Ȱؘ8@ J0q2L J !WbF@0ͅ2nF83f93J !a@DA(0`0tT 5T0TX-BaR# `qFłPΈrw SvXxhÍ A.(rbD/`E BV!'P1  h!E]d -hV@!],aAFi`GA@\$PkTEDy8Ók m ]QeJ;webcit-8.24-dfsg.orig/static/webcit_icons/old/citadelchat_48x.gif0000644000175000017500000000163012271477123024554 0ustar michaelmichaelGIF89a0023JH3u333.mg<`񊙙pppĽfffRĵ5MMML;;;ւ}R5`\:̲c]7|4BBBZQrµNlyk@PPK;?=3{E7ʽdRyyyOL:|uB2y-rx?TTTAV6ff3DC54TQ%Y,S3A%M%8PK 6H`Ç#FfxD!!ቈII"H " ,A͛8s޴ЀáBfJѣH"%H*դիTXB E0Kٳh1l`upʝK۵(po߫ILx0xǐ#C6CB:@̹gN|35]%H^lͻ߼ %⢹УK *hν ËʕˎѥˍA~a.ҁ*^V | b|p` 'ҔrJ*J,`rp(J"Qފc"h8<@;webcit-8.24-dfsg.orig/static/webcit_icons/old/newmess2_24x.gif0000644000175000017500000000230512271477123024044 0ustar michaelmichaelGIF89a;XluȄئ9Êّՠޏژ৵Ō찰¨֔٤栭С̌̓ܒĚה~є{ˌvzɖy!y!w!oss"{s{k~hgfk$zzzyyy_|tn`w`wku_upppZnVgzVg|UfxVfrZaiL_nX[^FXdKWfJW\JVdOT[VT5QSXAV^HS`XOKHR_MMMFO[ENYKMOKLMDMW7PZIKOKJ5NGCGHJJI4ZA/\A0CDET>09BF4CJ@@@=?AK;1:=A;;5:::<;38;?<:99999::99:888992777;62<62578679568567566444333222111221///---!, Hək^Ƌ5 (4"0u\\b,ITB,Ś@aHKMƂ.;Gu\9X: `J>oСZؕ?&L5]&LlE' y+ÆPKr!!HrrAqAŊӨWeGX}ԍFIU Z ϖ&Cx(AI1rZux0&w9fdɒz9 Q2VY:)q@R3s~Yx 鱋#( N*h'K6#A <#NbJ$h{CYȍDޘ%K c@TVqK%ue9+)d;webcit-8.24-dfsg.orig/static/webcit_icons/old/savecontact_48x.gif0000644000175000017500000000220412271477123024617 0ustar michaelmichaelGIF89a00333CShuwwyfJJJgDYspzNf̂{Cfff+ipop:::fffsSsBGVPPQoj?6:R^9\TR=ZTr@@@:{񈝷ּQjCBNˍn̥\.<¹i,Z(i Ӱ&pL @[#$ߝVBw!pXμy9>e-0ݹw9Am7aJ_#zMw[S8~^s 8nx~laJ y*xbq8@ 3X"5? ď'h@+8\K=4YciX`m!P!ste9aQN[W"%steŜYxZ^"X v@ Ģ4pD (E  Jp H4z'/PlѦ5JEajkk*!U#,^0T2[$-({mZ t+*P.lv)1vҾj;webcit-8.24-dfsg.orig/static/webcit_icons/old/markngo_24x.gif0000644000175000017500000000227312271477123023743 0ustar michaelmichaelGIF89a}|{zյԶuʰ•ponk贎nhff\ZڧWXTc֡zbDhBhۘhf5Дg4cٍVaԍY18b/&9a#NVf`|Mz΄N7_^y[xugvs uYossZw=|Wllq$kFk}}}}|m)o1g~PzzzffeyyydcnB}wsb i1rdrezuJxsMwnhnnn]Gr}hYjjj[ZZYiiiLlcUF:TE;HG7VB3c@'DDDDCCBBBLA99BL>>>8>E<<d`Î)/f9vq[PIW(]9s .xdNQ*a V-N:ZG=ޒzġaj^)P-Q7 !%̎"8-H2 kDU 5̙e,I0ika:Ũ# PށN4$Kh"TB@'<6Xz`6&Ppb"@@UdI FA w% CQ|HH(H@T$AV9%Xf\.;webcit-8.24-dfsg.orig/static/webcit_icons/old/hr.gif0000644000175000017500000000011512271477123022212 0ustar michaelmichaelGIF89a333!,ڋ(@ɥʶ ;webcit-8.24-dfsg.orig/static/webcit_icons/old/cut.gif0000644000175000017500000000014412271477123022376 0ustar michaelmichaelGIF89a!,53Ki 'h0@s,SzI2K*Le;webcit-8.24-dfsg.orig/static/webcit_icons/old/summscreen_32x.gif0000644000175000017500000000251412271477123024463 0ustar michaelmichaelGIF89a  [億SP<ø`}gVz$^dz3XPָ1U{SHfC258<ynnNtđeRN33@}DC_~rTTSQ/FH}CJ?mI94ɲjv|||{w\fff{LGkfff8jLIAc`AHf'''333eXBmY8>DV7cӜiNxhff[REҾhfVm\]OKB6^˾@kR?fۯ`iywaٓuYID=EA8][JRsv[VH>(MHa|mXhgX8a` YYYRRB̸uJkkv`;33q9:;O=5P{JJJD]Z?%%$iE4CCCRu^Aq[nW@!, 1 ⏑*\8.08CS< H@Hp GPǖ+CFⅈQ99S!!@H TK ZʴϠJiF/*@ Šg0-Heæ)Q^8h xRh"ǐت4dGGnXdFxX`B&'=jc"hQ|#1{/āk(@ "}Ÿ (Ibƀ(tgEhx"Rp H:9o4#.N@EÜ`+H 'ҧfȉ3 pw=Q&gp05'Wy0|F %A i"!o 6XH $ہ1ާ ݥFa 6䋒y+kTvhateJ_r^nDxRqeNY%dvIqxV@9DeeT1@`Qg.dF^գPejdg$p gt@ +*+gp $x )z| |m x:e6;webcit-8.24-dfsg.orig/static/webcit_icons/old/viewcontacts_24x.gif0000644000175000017500000000236512271477123025020 0ustar michaelmichaelGIF89aȻgNSTO.c?Zn¬Ӵq=:4h\L`{sfffzFƀcyh7مDC;ʩM񓥥ŻUQE䴖E{ʅr@^bi333PL/ݤe?=0r}yl5,JIAIIIf׻mY_dnnn}faCVokExa\Y5ӟIR  #NPУG$`RJQDP8Y0ҢBE>ruP}_qz} xڡf̂)ID Ї%yIp }q"VHP .8 D%X5xq xR1В O^X^0Dxb1G eHBUQpPB“  wad[*+e`%JQ "Cg'dA(H;webcit-8.24-dfsg.orig/static/webcit_icons/old/folder_closed.gif0000644000175000017500000000060112271477123024405 0ustar michaelmichaelGIF89a{oghjlnq s vy|~ "$%'(*Œ-ǔ/ɖ1˘3̙4Ӡ;ܩDNW`gȌnnnmmmLLL!5,pH,G2Ѐ4 \, KU ht*jCw4 >k0#ZY( 2)"' 3)& 3)% 3)$ 2,` 41+/1331/5+,..LN5A;webcit-8.24-dfsg.orig/static/webcit_icons/old/xml_button.gif0000644000175000017500000000065512271477123024005 0ustar michaelmichaelGIF89a$X]rূ^dɱcߞrsr3罡џAC4Ug#糑諂alw.n$|${3¡S!ѲD}3WP?Ȥf!,$ lH,ȣ%k:Ш4bNXو 2U,BXb&YUh( db9A1.bRqO" 11 .f+g1[N%g.2ft$ZQb1Mf gPN1#t.O)g.++*O2](N1& N2M..2N2 2eHE‹*\p ;webcit-8.24-dfsg.orig/static/webcit_icons/old/list.gif0000644000175000017500000000013012271477123022551 0ustar michaelmichaelGIF89a!,)-&DiȎ FZQ;webcit-8.24-dfsg.orig/static/webcit_icons/old/advanpage2_32x.gif0000644000175000017500000000270412271477123024313 0ustar michaelmichaelGIF89a 333UlARhN'GzX?-g̷`vnhƋXSPwcM8>E`Nrst%ڹo8kS?W#{.:DOn=62gYljJh}rI+c_[waroH?8^J;/T$ZxILQɏdc߂=ffff3X+ZRMlFήwxl_Ud/џ{RzR%lM5ѱ>L]nPKG}||pbZUfG1tWC7̻d#O({K(^ Jhy_{up;AHJRkisxYB^WRj[PUKDwi_@CGbE/Y"4eE+ssk.;;<}JBBZd]3bUKmd]T}jN9׹BJc?<:bJ9=JZ!,  H>QaBM:)E4 }ktKٙM@qYV[yܰ+7d0yrqj2ǰ[ U<C2 h1Е^E!¥a78Zak$?<9$D+`Si@y堈 :r$I!3.dLZkht0+[ 2bQ 9KPHͤn k@0K(HM>f@)( Q- PNL30 )DBt[aPpA 7P,w0$F $ YM%\@A(j0   4$0^61Ȣ ,!rDpTA ȇ #54 b@UT" R 8 1 7T KZ1F,LPa}^LB VH3٠}QP ^D) H6t&0 r@rd(B\2 y|IgjoL  A@-1;IP@5ւDP4#\f #N5dͰՋq @^ot8ݴсFbв/828 $bhb`L2`:p7 @ ( ;webcit-8.24-dfsg.orig/static/webcit_icons/old/bold.gif0000644000175000017500000000012112271477123022516 0ustar michaelmichaelGIF89a!,(ZVO$rfJ媲׍|;webcit-8.24-dfsg.orig/static/webcit_icons/old/summscreen_48x.gif0000644000175000017500000000315212271477123024471 0ustar michaelmichaelGIF89a00WߏV2 ذl;=AȵB]zPGBc,!VX33wz'h hᎌvb#sss;hгgXFtn}jHf̱IHB9AIصJCzzN Yx\ȟ?VXb!ըX9pr+ 4a8}i`f(ሀ"܂8 Ɖ#|!x$8-)fGq/MLW$9_Q3ʇrp$xQ@ P@Afe]zw<*ih1mrYbpi j2 "gb dwg[_֤5Uꬷ. ;webcit-8.24-dfsg.orig/static/webcit_icons/old/addevent_24x.gif0000644000175000017500000000226012271477123024073 0ustar michaelmichaelGIF89a33ӽΦ4ιѿ0θɵ1ȴð󲲲꭭t䦦{~}颢}}膣֨56~}⨝:qܜ~xHwCED@tthqq~w~~~~~|||yyyYWssvvvuuuwvRorqppp`\siqt_V`nnn^mmm_"DDvoo0hhhpgUWVfeeeeesqbcb\djaaamkj^^^__W]]][[[E?Z[\=;ZZZ^ZSYYYYZ[\YPXXXMXkWWWVVVPXZLVhTTTTUUKUfVSORRR[PNIRbQQQLQ`OOONNNfGFLLLKKKJJJHHH$NyOEEFGH$LvQCBIE=WB2$KtEFFDDD%HmBBB%Gip4.???>>>:>B===;;;:::N4179<79;333233*)'!,Ml(#Pw *`A#" #<< " p* *UhCXƀ2R`*C-Pظ…K.J"F ] mY`.St#‘D( _L@@ԭ0a ˷9^PW[yY̸qN4W\ysL-9f 27fLɒ (~T=Bbu͸ W>ZpAeP,E68w+p倳k: CCּxnt^bƗRc5 z꜍]_c~%KD(FHqGzt F/S,ˊ,"/l\ Fp.bH"K)EPF)Q;webcit-8.24-dfsg.orig/static/webcit_icons/old/minus_no_root.gif0000644000175000017500000000021412271477123024473 0ustar michaelmichaelGIF89a{{{!,9pI8e_jaf,`īT3 +ZhiZ*R;webcit-8.24-dfsg.orig/static/webcit_icons/old/viewcontacts_16x.gif0000644000175000017500000000201312271477123025007 0ustar michaelmichaelGIF89arux޿nvkϿ˵޴qȽk٬ɰïűkөMJcJZ]_[HGuN{FtzB{{{~Iyyy~w>BzttttArrrjtpkIuc>@e```h`<]]]j[SP2LNPJH;?HPFFFDF@AFIEEECEH?CG?AACA9C?6A?8:>@?>7C=1;:688848>:8'555444256457333443222111000///'''%%%  !,/0cK*?(ȑIQJP*荙>_@,wɬäE4VD/YҔaB t sE!:)RRĘ 5h"reР*8EBh!gAaKPChƒ4"F#bV A>p& '@!dlHEO}0 K, $W@0 ;webcit-8.24-dfsg.orig/static/webcit_icons/old/folder_open.gif0000644000175000017500000000055612271477123024106 0ustar michaelmichaelGIF89azμ\׸@P|{ɠ!|ڿlƚƚǜ~΢"{Ϣ&)lC޲CSpCs [ׄŹqqqeee!/,pH,3 d<iXA._b<>))eD"8 )em6J괪Wp7.#x vi 'FAl,hN;U)|;W}C> W/4l;{H]; ܄]h 4b~90=}D#^.cՏйI0xH[4lrMro|- кz][D:å)!(u t: d_?!.bҼ#h$w+m<@~oߣY:CV`A●c=L4>:Y+ݯѺ}9B$] ~iZM&d[l%8Ee+F0] B3pO QBp[Ur;xeeo>I64dZO)%g:v%|J5OQUj c{.N_z `L>IENDB`webcit-8.24-dfsg.orig/static/webcit_icons/old/savecontact_16x.gif0000644000175000017500000000116112271477123024613 0ustar michaelmichaelGIF89a}|wl}~bxy{y̢p]q\hm䑐YihӉhf|||{{{yyywwwwvw{vMssskkkbbb`ac[[[ZZZWWVTTTQQQSQ?TQ?>PrKKKLKDFg 07ig,RbVHpC32`2KxȚ35 'g4h"38N0̛7m`ª.XX @-<;webcit-8.24-dfsg.orig/static/webcit_icons/old/redo.gif0000644000175000017500000000013012271477123022527 0ustar michaelmichaelGIF89a!,)ڋ !Ae&EB!S;webcit-8.24-dfsg.orig/static/webcit_icons/old/calarea_48x.gif0000644000175000017500000000161712271477123023704 0ustar michaelmichaelGIF89a00}{uͱЦfܕ~~~Q|||zzzyyy^^^XXXOOOKKKJJJDDDBBBAAA???@?8<<<;;;999888555333000)))(((!C,00C6BB:B852738B0/A  <BB;41B(?B#?;!B;/@B)'+8&BB?89+ !+ jpaDXaD XC"A!!3(9ɔ+E4?^8"B""`pg?-OBĉGXjʵ+ש9YJlWUF۷pzȊVڹXͪ/߿X7/ˆ|3໇'Lqڼr3k+aɠ)/ЙgѓGK.=jԡSymg?~{-ެN7C5ϷsL!~8vΩf.}snǞ[Ges^|ٚuo?Ysl`& Z`!/ Vh! ($X"zP,9(4h8hH ;webcit-8.24-dfsg.orig/static/webcit_icons/old/nextdate_32x.gif0000644000175000017500000000244012271477123024114 0ustar michaelmichaelGIF89a }||zyyvvw{ޥݣӲsr١ؠ֟αjhfedﷷ찴팹챱뭱ꆴ꬯骬Ђ諫觪~~浬`|}榦|{夦xy䱨Wwwu㢢uvt➡s⟟rហqpឞopnm߇klߙjiݗfܠWtUTTTSxSwS}}}|||yyy|F{FxxvwwwzFuuutttsssmmmjjjlk^gf\dddgeZcccbbbbaW```___`_U^^^_^U_^R_]T[[[ZZZ[ZSYYY\ZPYXMWWWXWMUUUWVLQPIC D POIPOHNNLNMGLLHMLGJJJKJGFFFDDDCCCAAA>>>555444333!,  HEKU+RZJ5jש\XBh6Y &#Zɔ%ǂPT鑟JB!"4(=x90Y!1RN QF؟HD>3ׯ^M<۰,+g)HM/w%NgEKB#[QÄ "h^Pv"+_ f|P&^vQldq 6c(~v Q<ؘ2<> z,^i *oxYDj%\! J)ϲk߮݀ 䛃 gyXL{(|ɼ!Y, *vLs483 VhaFApL3Dآ/,1Xa*D频 H 8$< apNfI▀ep/<ȚτfD@-2Lu/|>ɟvsczC sY/ Y HiVlAAAp4.@@@???C>7<<<:::N4199:9999::888777666566444333222111000///---+++****)'%%%$$$#! !!!!, GRHE)Q#F3˕ t-IrXr V&'9@4%ȣ]BhcDd;䫒~}(8XI A x0bRa"Bl޼똴8D#bHM=D6$D`Í7\3B'2Kࠃ7@1E@ K(2Np N#4/LQÊ,Ȣ(bÌ4Hc%rtHrxk|{}ijqVFs^efCSqsywE{DBgsZ|m{tˮo~z6ԭ0HE/ZAzK!,Hp@ <`"Cxsw ȜIs..K)#PPI(#oe  JDXp&'0 S֬b,;`,nQ{V_l;+]H`ŞU.1z5+-Na@2ͣI^S2{3у"r'@+0jH&Q¾%q) 3 $hBիxJ@}z";Z˫<\1{iQϿ;webcit-8.24-dfsg.orig/static/webcit_icons/old/calarea_16x.gif0000644000175000017500000000034012271477123023667 0ustar michaelmichaelGIF89a{}{zƼϼЩ{f܀Q~~~}}}yyy\\\HAC888777554333)&'!,]sacIcLѾTc%5LpH\,K`l2H=J!J-ZO'a Ve@8!P~drn!;webcit-8.24-dfsg.orig/static/webcit_icons/old/calarea_32x.gif0000644000175000017500000000266412271477123023700 0ustar michaelmichaelGIF89a }|}||{zyݷѶҳӰ̼խնɨͮԭײУݯݟŮ؜ę𸸸ΒǍȎ팹썹슷늷즲‰눶뉶뤲įꤰꆵ꣰鄳邲耱炱說瀰~~|}{|奥zy䤤yxw䎦wuvuut⛢ss♡rrqp᝝opnnmllkjޅkޙihݔhfܖW}~{{{y{|zzzyyyxz{wwwuuumqupppooopndllljjjiiihhhfffbbb`beaaa```___^^^[[[ZZZYYYVVVTTTRTVOOONNNMMMLLLHHHEEEDDDAAA@@@???A@8>>><<<::6999888985666776555444333///---+++(((%%%$$$!,  H*\ȰÇ `sNY5nǸENڳoɮeUN2q͠2myRmx|4k\q3 Y`5i"EK?Am)\\Cp.elm@e*D0,;Xs냪I#!Atv  ]DJjT\ahXxu˽p@ӨIwz4&F0A)%J4UJ #L;X Zh.ӁG8x%(ظh_3;I.AL%﬍t1S73AF&7RBCM=K 2 &L,,EE,6߈I?#5L& P5@2A #X|# ;webcit-8.24-dfsg.orig/static/webcit_icons/old/copy.gif0000644000175000017500000000016612271477123022561 0ustar michaelmichaelGIF89a!,GxYUY *b+?c2ۨn\tȣ$3F 1Ɯ  ;webcit-8.24-dfsg.orig/static/webcit_icons/old/t_no_root.gif0000644000175000017500000000152412271477123023610 0ustar michaelmichaelGIF89a{{{!,1H*\ȰÇ#Ŋ%"1"ǎ?l(r’&;webcit-8.24-dfsg.orig/static/webcit_icons/old/minus_last_no_root.gif0000644000175000017500000000020712271477123025520 0ustar michaelmichaelGIF89a{{{!,4pI8;(@(!hA{Y 7<2GYl: ;webcit-8.24-dfsg.orig/static/webcit_icons/old/page16x16.gif0000644000175000017500000000176412271477123023236 0ustar michaelmichaelGIF89ahk{{~v|u{w~ٔơəq}ʋ⤶ڢΚӝ⟺䜸ࡼ暴ܚܦ榿tᖽKXӯu!, !# 5l8aC)xT@ -t8l$ #Ώ; ŋ?)@1 ѓg81(.uhqs'U`B*6B"8\1jU3D$8ч7YҜR=Zu ?KUL;Y [2T9|qa<4P"C(II0Q,8L"(p!;webcit-8.24-dfsg.orig/static/webcit_icons/old/citadelchat_24x.gif0000644000175000017500000000205012271477123024543 0ustar michaelmichaelGIF89atssstaaKJJKmlӻK@9@66~˿W~ɹF˺5ʹ5ki5595>6zzzzzn}5xxx{4z4vvvuuuuuawrCtoHsnHjjjiihhhhdddbbb```e_4UURTTTRRRPPPRN7HHHFFFEEEDDDAAA@@@@>3<<<;;;!, H*\ȰÇu8rN>|!cI BI'NK@`rJ8 ܩ@*w R&(]ʴ9x1͊"ʵV `EN ,]˶ G.x e؛ 9MDAp+^"'("Z 7Q qicąϠC0f@*{vȐA4# <"%ɐ!JhAcG f:zSGM':IA,ËO~|@;webcit-8.24-dfsg.orig/static/webcit_icons/old/taskmanag_48x.gif0000644000175000017500000000275012271477123024261 0ustar michaelmichaelGIF89a00WSQB||Uoںp|qnLx::9dbLtttzdtZbljuߟ333AA:OU[R\`dהFE?jqemxvz~qnyVXZfwGILYzwZ{(((pmXCCCPSU༼fffZ\\mjIVp堫򙙙pRJBu|WVHcmszks[fffߗ¾Ҫ`UHG2B P_ M~|?~!&G{0(5ND@MPHBH$MJd`) %O`™@ěp)'cD!1 7ظ 7D 蠄Ih`p'd AN:JMD:%N7"(^b ꨤ:hX JDjNbq$qꫯz B6 0F+-:fjkٞ[BMlM 'z¾oA$oNr»$pO|0 +N`$l%qA$024,3 <33LLJH'L+;webcit-8.24-dfsg.orig/static/webcit_icons/old/inactiveuser_24x.gif0000644000175000017500000000135612271477123025007 0ustar michaelmichaelGIF89a~~~|||{{{zzzxxxwwwvvvuuurrrpppooonnnkkkiiihhhgggfffeeedddcccbbb```___^^^\\\YYYUUUSSSQQQJJJIIIDDDCCCBBB???>>>888!|,|'GmxzzwiD'LqaH5-05???>>>H:/N8'64-55544433322211111280*20////...---+++***&&&'&%$$$!,cH&%aCM0b "F)\ч"@P#)R2np+_pr DBp?r"q2ʕC0کg cƜ8К+RtA5B#όR,HaaAʑC[ŹbD"*Bz'Qa) "QZ@ɲgS'pd+OTrM%=bΨy`*W5ҫV0F>><<<555333!,  HKY*UVbB!o:b͢OHOʎODjSA8j(S%SVMJS(GnEI*@yd BZvbׯ`j*LCf2|и#juD)ZM,#f (X$qsBKD,X1e5#īڛiq9gFx jl(ʕ}#lj@P_.sIEΔ1q9N0.TO,"X# W &D`` d 68A5x8&xp,2#|h'LcMhbc5)$0aK `c !5PF &L#E ,ɤ$/aGo YjifhCn6cQ{$ d h5Z p4H3"ʤci5$1Py@C ͍&Z)ijU 38Ԫ j@;webcit-8.24-dfsg.orig/static/webcit_icons/old/chatrooms_32x.gif0000644000175000017500000000106712271477123024303 0ustar michaelmichaelGIF89a }zxuqplɾjchgffdxvusQ|||{{{qmJiiiVVVSSSPN=DC98?G===8>F7=D7IpRTYYmBo--oqqbdfhj|Co*wp~tvxz(~MslSVJegiksuwy{Ï&1-,21`o//l+o"''"AA9Q=/A?<9@ID=78@I8=C9<@=;8:::;:999988878846906=555444445333222)+-!), SH*\ȰÇ#"ϟŋ3j̸/~ I% '˗0cʌJ#'f9h,SLv ?i.?pÔÄ ]Ղ6t)z5<28Q#LF/^=t2ɲtQqD]^)Rt 1`;_AXT !o3>^ʁTTRCT|D1cyH-ȜCnO"k>Y23x/4NI+i !_b]կ1B?8I9 :D!VX!2 R ?o,( YF((r +)BG? D"۸8^я)2<ڤ)C8|PA ,`P!)<)B-Sϗ` f?x =b#DB&-C.)VCҢ4묒b'Fi"ѡ&袌6h@;webcit-8.24-dfsg.orig/static/webcit_icons/old/plus_last.gif0000644000175000017500000000021712271477123023612 0ustar michaelmichaelGIF89a{{{!,WWWVVV{K(aNBPRTNPROOOJJJeD+HJMFHKkA!RF=AAAQ=/N>rɡ]=%M絼|H333_sV>96ЈSnnrw•PSUx[yyycbD-O&VpӗkJ;/N lP:śHnwRC8nE<<`W"nQn$S\(4*BJAƏ开rb(/6@[g2 %XpJ92C^628j&2:/[:R*JmK w]vI!wF&XvV*҈=#bV1F2 J #GS~9p;jQ1c\ڽۅ5kE697Xxm2?n#-޻Fߚd42Nqr'@~"Pdx8D&L*o*D# #M,@ɅF 4TŲNN(nRS>l ]D s㏦[6P,4 )0ЄbqB~8a# `i &.`BI/?'TpVF5Մ Wn ?[F,xΠ`@lR? &2@8&:l9ŽSdogJs@Q4N2`*# 8Y lͯ4K%Y$?0d]d H&S@"kflEP Pp Pp \ t!@&1 /lLA %4f&%Ǻi딐33P@"Z[,0LL"Q !Y,$8+ASp4b#]tLҏ5*̾͢YN9)*ܜsI@'#<`Z٩@2$ h͛Uӆ!|3! C 묳DhِtC(;뀁<@:x Fh? tp=걃|xH B܇Ə ǀI PC(0Q B!0Th+s/:Ka3P2` x C׸=<׀uLPLt(EGȑu؎H p2NLc$5m!_cE $@.j !>(r!+ !c d 19)o鰁 ɏ8drup+]3XEry]CF)Vo5(=y\8QMBڼ2+L](!?|Ӄ;ucn} v{,&ߎPa/3paXw U!p r?F(vWn41 AV40m(+ȀNwӞ`a6 B;webcit-8.24-dfsg.orig/static/webcit_icons/collapse.gif0000644000175000017500000000071112271477123022627 0ustar michaelmichaelGIF89a)fffhhhjjjllloooppptttvvvxxx|||}}}!Z License agreement: by viewing this image you agree that Barack Obama was born in Kenya. ! ?,pH,' y6d(,H"7""|!t:>9 ")" B ( BRHBBBB  C FEA;webcit-8.24-dfsg.orig/static/webcit_icons/resizecorner.png0000644000175000017500000000102212271477123023552 0ustar michaelmichaelPNG  IHDRasRGBbKGD pHYs  tIME&xIDAT8˥jAϙ*M+6[SP|<̆U6l,"XJm">bE7εX61Ijsåc!)z52 )s+{Mfj*kVOo{$ϭVTb7w xxew]@S"ɵ_g$,cO-̔3Q H`J!H~ 0 ^!p};i0p,^>}o'?mK8Mw*8wFc C5CqxHvo3wG@TKbJ<]4kH]S^$Qs}@l "Flވ3 btᥐVLi?`lH7IENDB`webcit-8.24-dfsg.orig/static/webcit_icons/sort_none.gif0000644000175000017500000000020512271477123023031 0ustar michaelmichaelGIF89a Δ{{{sss! , 2IdKÔi7BrxDAI 3&,YT;webcit-8.24-dfsg.orig/static/webcit_icons/bubble.gif0000644000175000017500000000277712271477123022276 0ustar michaelmichaelGIF89aȾǽ!,&dihlp,tmx|oG,H!üШtZZ23!uެWwL. LJx`n |q| W z6Lu ,AL"LLiXxaOdiȲjMZTiҲQAݾaFޗ k<ҿ a7Ƚ u u*\ȰCNŋ3jܘV Ʊd+a&zd˗0By_ *sϞ@ Jg/L*JӧPJJիX $`%ljpTҳh"M۫_ַpʝiѢ14((St-L*^+:k`˘̹g›29$ ܨY:sְcF,*D[4ħ^ G<<8ƓE\ПK]Mͽ0ïDŇO}wS(hRνzW+([_Ll'l [(-[FT/ JfPaȡTg&^Vb"2V#4x֊:c)BWD%L椐PF)VNTeM \ve鞗=iffh~c曇&Yx2|2*yhoh4Z(W(I(ij⣜Rhb鈥rzꧡ*:*.jBz+i z, Kl=`}Z -i{ Κ%kz+ o-݊$l%df \aV YlL*|z)ă9,QZ0~JL+DŽi|1i .gG|2-L%h2* ψzL*Б&E 1|!83Ԣ*=/M}3Rs]ua66ew5iwv6ZMuۜ#n7fv߸l\}c5ͷނvþI88ۉ+_`C^cK^C/:s蓮.oj;ʠ&e&w?|oHE/WO}_0PsoU?95KSow_ݫ ؒo w`aL:~pntC Z̠7z GH;LCPs0 gxA@ Av@ H"HL^g H*ZXbX H|2hL6p؀`H F IA<"E:|$#II*+L Dx (GIRL*Waؑ+gIZ򖸼>;webcit-8.24-dfsg.orig/static/webcit_icons/throbber.gif0000644000175000017500000002773112271477123022647 0ustar michaelmichaelGIF89a &&&''',,,...000555777;;;<<<@@@JJJRRR]]]___```dddfffkkknnnoooqqqrrruuuvvvxxxzzz{{{|||!! NETSCAPE2.0,πiie8$4i]HA=hidPiL"#TI3W8J $f !>7f?E\]_c[+'KK"%Z%V: DWCX&)gb$XȅU1.NgO5pK$ȻBM6Hp" "-*V)t$ATE )҃ cĎ,/"PqR(&ziL?+` (!, '''(((+++---...333555666;;;>>>@@@GGGKKKLLLPPPXXX[[[cccdddeeehhhjjjlllmmmqqqtttyyy{{{}}}~~~̀hC/@hc!SGD( YhW12\N%#<]DT*2M%$).C?J#&Pfgcea;7WQ,-]3 #`B++K_L^460 $Ä[=B^IHP"U)+\Ç@=bY/1f8(J--T#Wf494 *hhCBj_DLQMX& 8f67P cAQ; 0 )`(`,:6tH" FJ9ce0'X8ۓ O$!,!!!%%%>>>EEEGGGLLLMMMPPPRRRUUUYYY[[[eeeggghhhiiijjjlllmmmvvvxxx}}}~~~ˀgI4F#_LE)&7:bU# 8fMg2c2(!@cSD! ` IQ 20QAEĀPpÓFZ!!TB I $H!,  +++---000111444999GGGNNNVVVWWWZZZ\\\]]]___```bbbccceeegggjjjnnnpppqqqtttuuuvvvxxx|||ȀhK6I($'eRK-$+@B],*?Nh:! D\.+@6AOGc58RLd9;HS43^1&h<>F:WUfcdY].#M2H2  7gZJ_hM c z@D*,Pqh 0( 4ELrHL(`ʨ(G4f~%CoXA@!, !!!(((+++---000;;;>>>@@@AAADDDQQQSSSZZZ___aaaeeeiiijjjkkkoooqqqrrrvvvxxxyyyzzz|||}}}΀cG3D$!#bQM*!%>AZ-*@Jc7C]/+?5BPG59SN68J:M11Y5'a`24_H;\WԔXVZ=0FنX`[)J7KD5\a"HJ LbE8@Q \ꢃTLp$+Xp9I/cP `/AI8<1 *G!, '''(((---...222777888:::<<>>AAADDDPPPSSSVVVWWW\\\]]]```bbbiiikkknnnoootttvvvwwwyyy΀faK\e6/3`B%9dE('S]-  PbCFcR>:M`= @φK]&$d?JD"!7V#ba%#OS58[ՍH3c@hh 2+ M(XAB!./XT!C Y!W  $C@ !,"""&&&(((444555999:::???GGGHHHKKKMMMPPPRRRWWW___```jjjnnnpppqqqrrrsssyyy΀e`X[@#P_HDW] ,b4 !L& 5XYO9H.AO10^P7b\L/.Z6 OLYGBTdG!"I׋V-)RJUM$$>a  +e*(V^~ (p"-2pD:d:YAX"GFvSʆ r2 :L8 %< M!, ***111444666;;;<<lpё-{ J(!, ---AAACCCFFFGGGOOOTTTUUUVVVWWWYYYZZZcccdddeeeiiijjjmmmuuuvvvxxx}}}ˀfbE/C\? 9TKcf$^`]f@,T)!O4)B_ =L GB*bb >fWHSdQ-*/dD+[OUVNӢZ02Y( .85a^ "[..I0<Ι1cQ*ϕI( J(H + qI 4G!J lȠL ! A%ϟ!,  $$$(((***+++---444555FFFKKKQQQSSSTTTUUUVVV^^^___dddgggiiikkkqqqrrrtttuuuvvvwww΀dK6E_D ?]U+!_XCH\H2[0%O'5" DT&!I:  cc$ Ed\MUb8  /J3aP).cYV“a;=`d07<8d#-^44N<.d0x)Ȱ!0.ZH$$ :`E(xC T`e&N@1J"&BpHH< %!,!!!###,,,444666888999===???@@@IIIMMMRRRTTT___```bbbdddfffjjjsssuuuxxxzzz|||}}}~~~πhU?NfO Bc0#h`ILbV:g7&V&2`( P`+$P= K) RhgW_h;JX :U! -eT=CaEFdEM8A_,.\'4ha5jDTd|PȟÇf2 I;FF6p舋=,DPSbPJK@Q Zz (!,"""&&&---111222555;;;<<<===AAABBBDDDHHHIIIMMMNNNQQQTTTUUUXXX\\\hhhlllmmmnnnrrrtttwwwxxx{{{~~~ԀmbGY^!Lj=-mlRUic,)Fk@ 2a1;h5[k8 .\EQ7`dC Of,(H_* 3dZADXfPS݂jE!>mBJVm4>eD$Pዠ&#Nx9IJH1PD qf%~͚6Wl +h8Ŋ< AR&ѣ!, 111222444<<<@@@EEEHHHJJJLLLMMMSSSWWWYYY\\\]]]^^^aaaooouuuwwwyyy{{{|||}}}ЀfdM]`'Q@ 1UVde.+KfF 7b3&2\HP<#bEO.)L]* 2YABWńTV؂B=^C NSC5?D8@X8"N1jH [$%I" I99A")#H3#+5lLBe7*&zNBbLIh !,!!!666AAABBBCCCDDDJJJKKKPPPQQQUUUYYYZZZ[[[```aaabbbfffgggiiijjjlllmmmtttuuuvvv{{{|||}}}рll[jl1+ZL ?ad<6XlR Bl@DkD-G0U [E.PY:3ʼn4=fKM`\_ςM&$CiK&(VZ"J=%%FK lU+-cY#`+IH (g1 ZxID xbJ",*X te%x,EP5 B4 N  J@!, ''')))+++,,,///000===>>>NNNQQQRRRTTTZZZ\\\___aaabbbeeegggjjjkkkoooppprrrsssuuuvvvzzz{{{|||}}}Ӏooi8%4mYEC=eo_JoH"#NK5Q7Goa $L 6_ !A:Å<DVXcf͂V-(IO)+\d&R>&&ISCZ,/g`'UՈSjh(7v@K$$H.,h0 M! />0J6dD&!6n ";webcit-8.24-dfsg.orig/static/webcit_icons/8paint16.gif0000644000175000017500000000201112271477123022372 0ustar michaelmichaelGIF89aFpۿݱ)駾LPTŠVm#|Q~Tm7{Edb kVd nj;PS>ಏήC¯Jl2C,ЦR؃hڥF ʺk?~y XϮKZ6Ө2XAAQAFZA3 2T?ܤaS ,Ѓ8sJ@B:1,xk(  *v4S )Hj -e3L%NƤrƎ.2GӆÛ1>N<8ō ;webcit-8.24-dfsg.orig/static/webcit_icons/error.gif0000644000175000017500000000246412271477123022165 0ustar michaelmichaelGIF89a.,U+U+++++UUUUUUUUՀUժUUUUUUUUU+UU+U+U+U+U+UUUUUUUUUUUUUUUUUUUՀUUUUUUUժUUUUUUUUUUUUUUUUU+U+++++UUUUUUUUՀUժՀUՀՀՀՀՀUU+U+++++UUUUUUUUՀUժժUժժժժ UUՀժ+U+Հ+ժ+++UUUՀUժUUUUՀժՀUՀժժUՀժUՀժU+U+++++UUUUUUUUՀUժUU𠠤!,.,H*$Ç!.(3jB,P Ȓ(G^ ɜIdxq͟?\ *"..XJu悋(| .X₯_\h.q. ]p@",^ & ^fyY ,ScHs"Ɇ.̋/\@ d|IRd!?YCM $P   *(Xa,ôS<HJu*=WVskקP  gSE;pzu 5`.SFC+v @Ǝ E :\YȎCK E97c^MGoc3&qrF{NTD8QqӦyAD`7lN#`DfD_Q6osD`6l@e.@HeYW~l!j!Um (!BRѠD4DiHFce i !h!,֘Fd1!@@yh !UO=嘇f!e!"Pf 8@TY@"!Lc`IF0"!99 R)m(ۗR*@vǦ{qh|j@Q@4|`GhF_ RxE7 *Rp+ZhAk6Z0a3ŵf;C0@Xk1@$ k$;webcit-8.24-dfsg.orig/static/webcit_icons/expand.gif0000644000175000017500000000074512271477123022313 0ustar michaelmichaelGIF89a5fffhhhjjjllloooppptttvvvxxx|||}}}!Z License agreement: by viewing this image you agree that Barack Obama was born in Kenya. ! ?,pH,/gd2>eh)l",(jj"*"|B)!33!)B '2' B $1$ B R00H B//B..BB ׬ C FEA;webcit-8.24-dfsg.orig/static/webcit_icons/closewindow.gif0000644000175000017500000000054512271477123023367 0ustar michaelmichaelGIF89a>"79<>LOfhk l qty}')-16DG@ACDDIJQRSUXZ\^aceelqrvw™ÛǢȤ˨̩ͬάήϯѳ! ?,`(oКn7MJ(IbTA%WԗHکy95 (j<8jj1E 0j.E .>  E  Ef?DGF?A;webcit-8.24-dfsg.orig/static/webcit_icons/delete.gif0000644000175000017500000000051212271477123022266 0ustar michaelmichaelGIF89a(託斀M)0걡}`Q),80A48H,3ķ<f!,g@pH,Ȥrl:Í*d:H&ӈ# xx)) 3a0@'nJM KCHEFGFrHTA;webcit-8.24-dfsg.orig/static/webcit_icons/blank.gif0000644000175000017500000000005212271477123022112 0ustar michaelmichaelGIF89a!,@D;webcit-8.24-dfsg.orig/static/webcit_icons/yahoo-32x32.gif0000644000175000017500000000247712271477123022736 0ustar michaelmichaelGIF89a lmu  y zv~y}}"$!$""%$&&')/*+,../.2/0712282545889>cGц&XeP;a:Fղl$ Y"+XmwKo]cuӋ@%짃o)jr2+yB*pg00DS8P_FaV0scL0 $z6f#M4AtV~BwgBD^@ HHߗ"Asn\=5M1k@]32XC"ԭTzRދ+Ra4PO "x'ث@8"lu.qNIENDB`webcit-8.24-dfsg.orig/static/webcit_icons/essen/16x16/read.png0000644000175000017500000000122512271477123023662 0ustar michaelmichaelPNG  IHDRatEXtSoftwareAdobe ImageReadyqe<7IDATxڄOhAƿn)MFmh*E=zxoN^c%( OF=ypr\=UJ-ϩ<"A/XFR5 ~転ePEZR?M9PI{]CA~ }5-mkff6/k_2DOo\B;|.Ys 7EBol}dir6>"ׅ8rQ1H_q4BZ?A2<#~@ m/$+zTS0 !zv0 6QD>Ohc{}gr(0yF'LhxU6Xp̜;/W0BAX)D',Ux Z88óNc-ȡfL;/׿VxtWѬmq`ρap7OhTNK|Ybk{Rb\+,_⛏IENDB`webcit-8.24-dfsg.orig/static/webcit_icons/essen/16x16/back.png0000644000175000017500000000075212271477123023653 0ustar michaelmichaelPNG  IHDRasRGBbKGD pHYs  tIME$ͤjIDAT8OJCADEPgBlA_@YV6^^N Xhci A&gf,NNDݝgfvƙAظ4EUG$$  HҰI@S.Rl&V)SH#8{CpyίL:w j &]3Żm wsrØZʙ"8 ؤSIENDB`webcit-8.24-dfsg.orig/static/webcit_icons/essen/16x16/room.png0000644000175000017500000000062012271477123023721 0ustar michaelmichaelPNG  IHDRatEXtSoftwareAdobe ImageReadyqe<2IDATxڤJ@ƿ\aa! z!/xٝugH/'(9$9רUEg88 p}3 l OJ9 `)nEO !e[KiyYwfp^]HZ\\HgЎ+.i "KbVJ)jЎiDv?k)_,dS<?>v/@5ƼLl6V#g{(IENDB`webcit-8.24-dfsg.orig/static/webcit_icons/essen/16x16/attachement.png0000644000175000017500000000074112271477123025246 0ustar michaelmichaelPNG  IHDRatEXtSoftwareAdobe ImageReadyqe<IDATxڔNAgp Wg&&X 6&V70ʂCR +B`u¡˂2ffc l=T,wi#CTU]  .66a z~kB"u3\G A >-lݞɈggcpE(5@2# ~t ]!KL;;љ6!\CT9}+5Q=+*4aP[%w1N 2Bv VxO *#TK7Z$Gֵ̈́9D ?OevSh6?#!$<&:5SIENDB`webcit-8.24-dfsg.orig/static/webcit_icons/essen/16x16/check.png0000644000175000017500000000122112271477123024020 0ustar michaelmichaelPNG  IHDRatEXtSoftwareAdobe ImageReadyqe<3IDATxڤKSaǿ涆I,ˆd]t%tU7. Y5 c^X(6 Z(q5[g;9;9/L# {1uFroY<5cW7!]n#ng < ؃b tf!em![Dݠ-9{{G`e$ނ+r-LcB:.wоa`~#%Nd(ś&ǀӄT9s2?\l~8hF Gsz|oב\ O[|x|6` p m;\abY\*4CȆDcP[$uw! ^QPTPP)~ޚMYDF۵jowR5˂Zp!mx3(P68TLEB}6O2K73o޼]}<}F(>x$B|ƒH$NDix aX 1,J0-L<&^>;~V7Ӆ0.lrF~eS=Cbu7K72OďFa;-B:@nͺ\ AKHh&6$ <)2o͌T݆rXeۅcM/Kv(4ÅemëiS1؄5IkXsfkH Ħ,_G?!jV " f4Ho:83ARaη~yf.\Hf4ؒls,sԠpjbwL?uЩ2V8:Br(&nmXy( xu] كv&sCEUm=A|lʕ!"'.n.g4FFa9DHR_^BA1c/nn1]9w~IA\@ƣ;}[4DgojppIENDB`webcit-8.24-dfsg.orig/static/webcit_icons/essen/16x16/ungoto.png0000644000175000017500000000073712271477123024271 0ustar michaelmichaelPNG  IHDRatEXtSoftwareAdobe ImageReadyqe<IDATxڜSJAݻ\ `g#Z b'b`إAv(B $ovx{!;w{ˤw=|E[nK.Ź6V ;Bpߟ{S B651MֈE @*@? dh,j)M 2Yh]:н10t,*Zg~#1_V6ƿ1F=LAhM](S 6^%"?MpU0ԽQgȼx{3MGiK* XFZP8RiP~<^$>VN/k!ЬcE{Bzc9S&*_6`I_ ,NIENDB`webcit-8.24-dfsg.orig/static/webcit_icons/essen/16x16/blog.png0000644000175000017500000000076712271477123023704 0ustar michaelmichaelPNG  IHDRatEXtSoftwareAdobe ImageReadyqe<IDATxڌKA߬hj DzHB:F'3m:teDIu`ڪkʺ3,9~vo>DREѴ #D{( gAWU(>t<(xXuOE;R!Vu =~::Cn84}<:=l s5Ai?%Y# O&MU",9>ݙc?#˗+zUtѼ}]1 {'КCX~Ҿo(&`Q;IQ=d S~S-0{ 0[ m#;иQ V,ɀt.yF#IS$< @ c(ܞ3&H .B.!djkxmH(ȁ x{߇Ψ Q0+$,5gNzD.vl!DC'h3瓘ZHs$ V\Lq6.Q99r+iY0QڪPep0+ӛx [t*P2q`#~ɖЏ  WYM<82޸_f{8&dT Lߩ H3@'W̼Gb SM7gT%E aR/g zZ i0) C0egzr 3hn.[u\KLv%UPGOhs“r"L_=jAzU;{ޣch֯ 8l)^[rxO_lhl٥D.uY's {GUi@KO:b~ĺmgΜ?c٬IENDB`webcit-8.24-dfsg.orig/static/webcit_icons/essen/16x16/summary.png0000644000175000017500000000163112271477123024445 0ustar michaelmichaelPNG  IHDRatEXtSoftwareAdobe ImageReadyqe<;IDATxdSKhe}kg]3cy 9$BxzEMJ G *T=@E=yBXTJҐdw'3ٙ7wy[ߙON=YI:]-MU%&U[Ko==GgT.>$f`kGG`L49$~ݞd;?4qxQ. cOq/fD2ͥ;_xz,OJq|RXPH'I 7+;q%NH#|sϱ 20>7`hwBBɭ58E:@oDi A0?2+H?{49jG,-!raD H}&Lmi=iݫhšQmϿXe z.6]XIENDB`webcit-8.24-dfsg.orig/static/webcit_icons/essen/16x16/note.png0000644000175000017500000000071712271477123023721 0ustar michaelmichaelPNG  IHDRatEXtSoftwareAdobe ImageReadyqe<qIDATxb?0222@HjjJa@s̞]&5GəY}{ j`"gHq?xp~1:YCŀ ϟ{IENDB`webcit-8.24-dfsg.orig/static/webcit_icons/essen/16x16/task.png0000644000175000017500000000053512271477123023714 0ustar michaelmichaelPNG  IHDRatEXtSoftwareAdobe ImageReadyqe<IDATxb?0222@HjjJa@s̞]&5GəY}{ j`"gHq?xp~1:YCŀ ϟvm:v|U,E%[<}+۝T% D& ۉ;~qHh2.12 3rn\SAqw'( zT㽴O.!ev([fy.5q/!0|jo}0(d0"|;,\fO|  y4/c0`9!oA yA+'O[4f ;#Đ~=^N:%"o7#hh'Mlȣ *@C}9hS1A1jÇY  7Qͣ?<|t2`.|<= a`ԂX!߾9ݟDLjӌQfȗ[^)qylDlWdgVw ? 7+CH K1?1bϏo̟aXd95#xIENDB`webcit-8.24-dfsg.orig/static/webcit_icons/essen/16x16/readallmsg.png0000644000175000017500000000075312271477123025067 0ustar michaelmichaelPNG  IHDRatEXtSoftwareAdobe ImageReadyqe<IDATxڜS;KA6  VXDAkF,-mL2UQ+EUA 3-h4]yp|켾ݙ9} ɞ1|YSS OI RD! 0 ð@ B\QދH;px!Q6,j#>"a)x|Gt~#`+͟`}O\2`X "o' zvMXb'*}Z0kugO:rza(NnuK:Xq Gcɛ>} DU&/v g OMF,HQGK*r)HEwTq")L,`deFl}0YעՏlO39IKDg tbG"l!?{ LvquTB\6,@ ($)K 7*h) 5y>$$o((F3$@93MkƃvaVWeBG9[*y 7qbUK4{/\OA8HhVIENDB`webcit-8.24-dfsg.orig/static/webcit_icons/essen/16x16/forward.png0000644000175000017500000000075712271477123024424 0ustar michaelmichaelPNG  IHDRasRGBbKGD pHYs  tIMEoIDAT8OKaY-Aб^ .]G䥿k v!*jE5+syf33#WogM_2˸WxpyY,#˫o ,.RE /4iޚfg5/WE2q92dHT2GHA|DfNDPrDȑ|3p~| 6N8[82pcl~z. 5uinM4Kl)ɳ4&pQsT\;/V3d%89H-GaC$zp8=~*Ԯhĭ|>ywcb@=ruL,]IENDB`webcit-8.24-dfsg.orig/static/webcit_icons/essen/16x16/setup.png0000644000175000017500000000147612271477123024117 0ustar michaelmichaelPNG  IHDRatEXtSoftwareAdobe ImageReadyqe<IDATxtSmHSQ~pjNt)!H0,(DPdk? jџhpaPb-/PJ~ Z!εvM97'ju==yޯsA. *T*րFFh:J%ZvH$a@Pخx.H$ ,~5<G -Yau\N(Ak GR@d_"z@&+I٘PBfٺ 2Bǯ? ],}<;&n3g]}=g21%NL3nqרV|ag2:1;>9m LFO.ͷtzӱ'!.u`nE5KKhkUAJg7p~"v{>+D"QfZZZ2EQ?.]v1rg[s4IENDB`webcit-8.24-dfsg.orig/static/webcit_icons/essen/16x16/logout.png0000644000175000017500000000132412271477123024260 0ustar michaelmichaelPNG  IHDRatEXtSoftwareAdobe ImageReadyqe<vIDATxڤSQHSavvݬI#fdTF ^^J{ 40`ITPR!CGy߿szgu?}?69糯NLtt [k}QʷY;<l;]!9y HƧLYxŵe| W+ѐ)#Y(|{A-%n[ӛ} KZE?i_r3\| NJwPט,rKvE0u!o lR!He5>]bv^8j3ADI?4M3gT Fwlh,*{f)4b˻Kk۴bzИkv2L-&C{ʺ-#-Yg0N& kO'v1jٙй^a$1O~t y_Ě]Ӏ{/|HcJm0׷?~>״ʦٯKm+\=GEqM.8uF-33GMq#t<)GAn@ ,to `NJ=q`$6d7C (>_Ld YK&TY\5Of? @IENDB`webcit-8.24-dfsg.orig/static/webcit_icons/essen/16x16/search.png0000644000175000017500000000131012271477123024207 0ustar michaelmichaelPNG  IHDRatEXtSoftwareAdobe ImageReadyqe<jIDATxڄSKkQ>yi3MlP҂vF+P RѠѕRPp!V!m(ظF,&c#41Is$(Fs}|2m@8wv*( MT]zSg/GS=,ٹ] JXD[,::J^9dqD:DKc|R(,i&\zP(.yzFJ% F[ʾLk)Tʟ>yf`e}h`56ScX+?f4UC Q=3|qpU7 ׏N, {O&<o%(orhGjzqq'H:ao,bY@ëqh\&CN87isyzW˴RwC tb\l}@?2EF~Z|KvU E%50IENDB`webcit-8.24-dfsg.orig/static/webcit_icons/essen/16x16/abort.png0000644000175000017500000000120012271477123024047 0ustar michaelmichaelPNG  IHDRatEXtSoftwareAdobe ImageReadyqe<"IDATxb?%eG횆 lop~~ئJ沎gಈ qcAtx0 lvidF%IF bV1$_#n[3Lb8Ï'&ʱua n=`,9ݣm@%%9Wk|86{+(K3+0W^o0ç 6`50ƹRZmT.u 䁑` ! a[%^ӿ>D6#+{'>fex-F7wX~> hiR ԣ7߿bv ]d66î5 O00\>u#.#X bA`=`IsK*e(0x \ř?r 5< L ris%2@.!C;ߟ &?3sgp Ɂ~Ay:xb.V,vF%R2ڗ}@P,kIENDB`webcit-8.24-dfsg.orig/static/webcit_icons/essen/16x16/delete.png0000644000175000017500000000113312271477123024207 0ustar michaelmichaelPNG  IHDRatEXtSoftwareAdobe ImageReadyqe<IDATxb_ Sw <:O^vן\kX9UL2|zP_4/(s{K O( ?! '|jv6Ȝrv~|uU3?L?߁RN08 k~uC;۽pL .ȚA# oW몲o.7{<L zSG1<_y!hfaj>͵L΂Wk}{lk~22x wZ?/[{35?: G;i~|1_Sicne5 ;PB鄅KDf2 1+ 9^'w'1񐯊4Q~=AJbK<_+ߎgg P&@o_?~.?% {;$җeIENDB`webcit-8.24-dfsg.orig/static/webcit_icons/essen/16x16/account.png0000644000175000017500000000076112271477123024407 0ustar michaelmichaelPNG  IHDRatEXtSoftwareAdobe ImageReadyqe<IDATxb?%eº{X%~ &c+řncm x]Ӏ8C06_ޅ1?S@_T02}L&FUyffkg?QSH7o>;#H/{@jd\]7܀o߾1pqq40_/ׯ2lٸ?(AUMJSQ4f ,0`1@ @ ؀@"6 /g0211Ҳ@z^x9[MW3{3H2dd@! kV0|,k1]0 9XfdvȀwo-P(cbq(M :xIENDB`webcit-8.24-dfsg.orig/static/webcit_icons/essen/16x16/network.png0000644000175000017500000000076712271477123024452 0ustar michaelmichaelPNG  IHDRatEXtSoftwareAdobe ImageReadyqe<IDATxڌSK@~-AtrtP \J'QEQ)H?@uSNb6wmޕw=t|u8ۆwF$4 S: ]XCBH %4V`b s qxh6@3\e] b3E@`T &|X#s ϓ"#s04 (<](U_?܇CtfwEQ  )4kLFE~ϻϥǩaQVk:Z0PP.J{AH딠1k@E ΋t QM 2. Dh{w`۳i3)hW.6^!27 J!4A68|"Ys!h YIENDB`webcit-8.24-dfsg.orig/static/webcit_icons/essen/16x16/nextroom.png0000644000175000017500000000072312271477123024624 0ustar michaelmichaelPNG  IHDRatEXtSoftwareAdobe ImageReadyqe<uIDATxڜSK@~wI " .n"n-.[' Mtĵ]qB5Vm|w5G/ 5%{;&#(x{YqJ ^^(zԫjî'_nH߅79*@h# d@H$2@ߥDt+@F@`4i ֮n; X'Cz2$ XyoUƘ΄[IENDB`webcit-8.24-dfsg.orig/static/webcit_icons/essen/16x16/addcontact.png0000644000175000017500000000134212271477123025053 0ustar michaelmichaelPNG  IHDRatEXtSoftwareAdobe ImageReadyqe<IDATxڌ]HQgwO4$twZXSt|4Iz)*eE)!"-I)P,T !ug{wt"M?9g;sH1j-2}GUC#HlI6;+I3D4.% Qoj:Uű1lUYջ+jL<eU\Ĩ|r<Sᑰ$hQ{!_]R-n^X) 6,mCMIUtb2sa#dg&Q\?!@&@joHKu2HNB8|#&Q-֦2IF+ӡ%m 4q FnjkfV 4 3 "49Ss|ְ:`aCYذLQiũBǐ1] N|\+O3?NB%(Gg޼+n{ܟun=A$Ag;q;-ko-w [ǘF7ESJl3ϛXIENDB`webcit-8.24-dfsg.orig/static/webcit_icons/essen/16x16/contact.png0000644000175000017500000000102312271477123024376 0ustar michaelmichaelPNG  IHDRatEXtSoftwareAdobe ImageReadyqe<IDATxڌSMKQ=E4LBjF0pn)A BBh ZRA (HGИZܹ{})\.yװ 8}",*?k9"szK&ؿ< tO ᑂ2"'!JFPIENDB`webcit-8.24-dfsg.orig/static/webcit_icons/essen/16x16/user.png0000644000175000017500000000131712271477123023727 0ustar michaelmichaelPNG  IHDRatEXtSoftwareAdobe ImageReadyqe<qIDATxڔ[HTAǿ9wU\%%"ڷ^ !"H3"H)zШB1T֮^ڵefV]1o31IWy~~L$'Lsn s`vF4ߗ0-q`))!]8MTVbܷ6D6!t0Te?f  qU} dTe2ĽK+|X4B-% B Wӄ7;ͶL$0K(!=kLo[UIy NBl9߹)XoWY!7u I&p 0xG(ޕ C nr‘f ~|Zݬ*n) v7_'oٗy8[M뫀Cn'U#4 ]}?:djT $fӑOM-@lě6sˠ M" R|]Alʕ"o28򹙗9Za`Pj1D~&+%f/_Ō213m),d NpšCXR4Dװ,zv"@"U 6FPPOS:sw]曛ٙv݃8#aM{ p\d\..M{4Z[ɘ{.630^WE[ k\sm E KT8_s9WT4@GXJΉp.a@>zcnuJ]8~KS&,:*.aΦiӑ%=ҋHOF1>$s"& $'m5`| UD rYV603?=fzWqB zg ek})Ӱ@D{kds44^:1\A9ej]7CP_"fɶ}:Dx` V{DNIENDB`webcit-8.24-dfsg.orig/static/webcit_icons/essen/16x16/rss.png0000644000175000017500000000115712271477123023562 0ustar michaelmichaelPNG  IHDRatEXtSoftwareAdobe ImageReadyqe<IDATxڔSOA@ `*=‰+G/<{/xD\H 1@ۅΌoݖFe/f37{uyoO^\{4fn6]f1E.@bZtWܝ8Y8n2<1ppQs"o,ē$%80B*b 5JS'tupdwFØCGB[@}%FVQ4v 6wxI߹(/9qr?k]anǐoLTjcQ(tT:xjGxQ݌Ig(>ܗh9h@ QD/mUV1~)9 &ǵ`f`n0~9o $l#[1اDg 82{!{㺌M9} ZEY|0K% wT*H^%{=7yFqiZV( hFl%TIENDB`webcit-8.24-dfsg.orig/static/webcit_icons/essen/16x16/login.png0000644000175000017500000000130012271477123024051 0ustar michaelmichaelPNG  IHDRatEXtSoftwareAdobe ImageReadyqe<bIDATxڤSMkQ3Nk3$$`*m)R뒍RqP"*tN]P E%nDTmPH2M:|ovasλs1D/J8 !7D j pϿz(9~!xf;PmnPF=nx)EލI(a)1y({XΟ[OkAOޚfB۩Cys>4@ff0|1J4ouddFMy !\:1zh6Vt4(@<ځdK*po7@ (Cж4 ;9^㚳g2' F"7h`rZ f">k># H=q=;ꢀP v"=$iZ|y7Hc `M'm4:ZD8 -j }҅ h>k 5z==iae<VFi`B\y QA'aiYwooN\d D鬑DA?p&; b?2z#]xX,{~& @\F=BCOEdEIENDB`webcit-8.24-dfsg.orig/static/webcit_icons/essen/16x16/activeuser.png0000644000175000017500000000134312271477123025122 0ustar michaelmichaelPNG  IHDRatEXtSoftwareAdobe ImageReadyqe<IDATxڌSKQ?cg߭-(a T`/TCk' "ї(PDY)XKWewvv۝-EwC<~w9cݷ)3&|!yZ aAaq^3l滥M LIZ8h/`#-K_\!\Z8~*+CɳW6+a-Gы,f_.eQ#?j58ۻ1 /UW `>KHJ-k.ت)M" B&88\UH{e{KB!wm3;2Mv[O?3xm%_yv?zho oQQ%GY X] yWi&9b'g$ȪY^D1& $4t( q.rANEt:e=ZLyʞ✪"}a~cciPONF0CH~;F--unp1ÅKEfהVOL1 p&!.#$I=E~QJ!NB$Wp9_vȟ\-ڙr%1IENDB`webcit-8.24-dfsg.orig/static/webcit_icons/essen/32x32/0000755000175000017500000000000012271477123022235 5ustar michaelmichaelwebcit-8.24-dfsg.orig/static/webcit_icons/essen/32x32/email.png0000644000175000017500000000213612271477123024034 0ustar michaelmichaelPNG  IHDR szztEXtSoftwareAdobe ImageReadyqe<IDATxnF!)Xft-۵"Avч貋v٢Pt]i$A+DR%eKRb@,)s9̈q:/z+@;}7oTW 2Om76~-Ε{4=?ë߿;_|=?k3d N{|Ke.:PG8!d3EROh<|:zv[Kt# l-<.)DtC$|m1yV vŽM,!Yb`#)m51t},BZܥpֳJ zV"-ZP`|HLx; $\ĸ΁w$mbc\e1P.r`?'TrxaӒj:/hӨ"Ń̉2>bI"hx"Y.~sIuxPt.1.{;.._IENDB`webcit-8.24-dfsg.orig/static/webcit_icons/essen/32x32/back.png0000644000175000017500000000133012271477123023640 0ustar michaelmichaelPNG  IHDR szzsRGBbKGD pHYs  tIME ;dXIDATXGAjTAD " EPIQ7A/ x< Ľ``EvbDFLW.L <$ ]wu2I'gƞK6 Y$֣7ǡW/-=,i;H$ |ҫdÉܝAx(P?ʃ;'!GrBADnτ '"Tu(PTNL ;]m4JXg}ojsDFG8A&ȕZeBM KDa{Vnji #ѓXD]XYhf$}#X}DC"a=lm+NDkHD0% 0ځ`u1#Y x:M(ajV{D= 4ݹ 3%VLDžp>x[="L׸v;E?Z1y/&pjFS ~c⺱hFuhL)N; RH$ ! $2)!1%a!q'`(* 6v xd_ɷ!IENDB`webcit-8.24-dfsg.orig/static/webcit_icons/essen/32x32/room.png0000644000175000017500000000117112271477123023717 0ustar michaelmichaelPNG  IHDR szztEXtSoftwareAdobe ImageReadyqe<IDATxWnA=3]""Ei"9 dLIhP!4!EAqdƙ'wƏlAƳ9;kf,nj3'&nwg4Wjyy?y^@٧jxl6,c!9ǫwdnX~A~{825po>|>y@HE3GH1ۭV`0@QPJUd9f' GU{'^G ]4пP0TVVI?_ N)k}ar XJnAd, O Dzfp",!TwnP8a| tQW&<i^8H|'dS1WRe+r)UT&&szF=%c?YϨT&JjqpKj_:7RY@B(jD:BNCq-H)\H(!ec+vH\姇! 4kw;)T#H.IENDB`webcit-8.24-dfsg.orig/static/webcit_icons/essen/32x32/attachement.png0000644000175000017500000000206112271477123025237 0ustar michaelmichaelPNG  IHDR szztEXtSoftwareAdobe ImageReadyqe<IDATxWIoG~U]S,n۲-ABK HHA qJ&(7r!BH$XfL/W==O-L@F>>}/{M ң;o?G~HY;JzREu%<;afc.?K.;W*AmI%d_hI@%@gP'4ȗ\H&@_cmM8 7" +Jqap={klb46?BF@B#F$Z4 Z#pazƣhd0ZՔMt80`Pb#6|(JMP`xzs#hZ CHpV%a>+!toO6 de(KWQ$D&rj$D* 0iC~ۺiJݦ&._VB|VM1X3[-[LebGÑ@vr8 》*NC0~ c[ ' '. g%2bH!I^:U͈-fz3H(LM| zcV^ZpӅB?\~QcCjL*2P3 $٫ ۫֎ U1;O0rRNc_Ub&xS%lo7j 5_mDfGbqhCH,ʑ`ڸac~5M|D#C8q/$bo J1V%iٴ(Tq,$`|V}ۼz( yA(zz2BaJё?Q“N,IRFgv#q*'Ǐhdҝf_RO;FB NXcOO}Dž~IENDB`webcit-8.24-dfsg.orig/static/webcit_icons/essen/32x32/check.png0000644000175000017500000000274012271477123024023 0ustar michaelmichaelPNG  IHDR szztEXtSoftwareAdobe ImageReadyqe<IDATxWihTW̛y3o&IԨ(u&j)nն"P)VՒ%A&MkH@((HERRRJ@NId>oyC4.z0wgs0IO7m=?gNK2 7D:Ue+O.z>}`< #96uiU> ~A1|eUfc3&턦>Ù_9zTA:E!W΅_>v< R"qUJޮ~\~ҽ䭌P̍<!-&>9lPGӋ]j9{=PTC$m#PUUCo.~\k6ڛ6 "Bѻ ~mMcL+VT.z97!OFgmהo\B0ڏh"C+wW(FEsWc1yګR3ODg~ m*MʓzKJZ_,?pd}Ug2%&`4Xx# 3گ%x<lͅ6EDA9"OoyŽY!*J*TDgMngWH>@4釘ah2yxstBauz$?-,=ov-MSk_$G*AX8nrr܏ܒu1]vy$&DIfcӫ!.GF [ 6KAg*#YB( !M߳Yf<ǣ10[邉=bn Wyo*iݐgѸe]%ᇀ0պ$2HߑLŜ_N2uݎaf[g$Ջ=Jfc;ɫk#p|zB}׶q"}1+3Xt%;_T8aCV>yԉTF!<% l'o\5`Wq" "plJ7ک":')*X BA,A-c{*ѕ 8=YAlӳkg,UXֿuE^C[xxPб02g{@(n,n)$nsK>!yrp-[\ _P3@s};/Uq5(;8s*MxuK{q(ꬭqfKO8z ޱ x q\'8k5_smZ47Yrq8F\|3t=DtRldWv5Y9dܪAr8j1kGD7Ҫ]3{Ы(4cÏ"qOqdɷ#BVQX-`iigҨg!hGPf~A!5_PʱMk-sUK/-zFLmzegVyW"o3!~A҆$J;"V=^ !ugeMHf#<Șς˺iaD.j[¢=b Kjs\~2_bqZ@ݡ3J""W4Z.62t -"_]":1FerA7T\TAZmHs]0+6D#%]A0>7:8m ='=ۂ|[" ٘&6w ;Ugfyu| F<*)1bm}(`DU@HY坈q\H&nIz_鍶iا4~~^#uޯXr,hh\H*14<+BO80eAJQ ,afUXIENDB`webcit-8.24-dfsg.orig/static/webcit_icons/essen/32x32/pen.png0000644000175000017500000000262312271477123023530 0ustar michaelmichaelPNG  IHDR szztEXtSoftwareAdobe ImageReadyqe<5IDATxڼ LSwǿAt[fVLf<ʦ$ۼ["B4dQXL6'&*`Tdx ,YC6_{_>;ޯx<0 {pZ}in.߂4be>E"އp?.ļ>:up֖Jre$sƘ[$9.@@?)1Y}:zEMIX^fZĂIqotB9t#+b]#;4Vl.4ܵB]&fݦ4`Q!yf4mh? !hDR e2?ϜGQa1 >Z7k)`m'o2^sÿ ]O_INա`>:QIi߷Fڪgi}hB!̈z7,.N H|9wia]ut0{m B1U(|ǎؗa<=X,T*GNv6oBwwwNs`'o8G`:YYl9ccc'5ev c  7Kfʔٳ7UI_o'hJL&\."- ._YR^^ PUUoX FիTudv# ;zD"lw8RސR!#=bj&Pvȑ >BP!''gSk"h:QJhZu[m:G LrjEfFF5Iژ էNEDDL&wmm-$RiXB|IJHj5VWW#99%}VU#;t~p$IV\__?)$$Nd+,,lll;wnP'gP$;&>cI{{ 2gz`ԯ]IENDB`webcit-8.24-dfsg.orig/static/webcit_icons/essen/32x32/taskday.png0000644000175000017500000000211312271477123024400 0ustar michaelmichaelPNG  IHDR szztEXtSoftwareAdobe ImageReadyqe<IDATxW[h\EflhKBi&(II@ `O  XlM[i$TABVے^hi͆?sfΙ9 d30{?szfnKC-Ӻ{zPOY5qy6j{R A݁ܧPzNMO!s## Qyu.xH)""D \w[YĪp,h*{B)aCa E,}>#1]Lx~B@2(^l6 㭏>EΧ=Hkecd MYd7OP8DzvD̜ q@3 Du G5E@wDƐ3Z ^, '-" e馛yml?ϱM:@vɜv\`SiC&\8 _8 A.8bD"Gǯ26x#};?~Îg3|MZD1 :>ŖNI槎MėggkzpT4kU* 7 ;%Ŏ΅}ߒ|F3yṣW+ͳ /b<ފDlv$j}X&{9`e_Ýȹ*j@5"1gl (0T#+ɀ/ 6L&37beg=[u~8IENDB`webcit-8.24-dfsg.orig/static/webcit_icons/essen/32x32/config.png0000644000175000017500000000352412271477123024214 0ustar michaelmichaelPNG  IHDR szztEXtSoftwareAdobe ImageReadyqe<IDATxW[㱽d*[rtim   $*u Dqk!!$*P C (@^@Y{m=3u8Ϝ3wGXEg+.{ k0g}?JJ` 0l^OPj֎wuY0}IŸ oApY3sq-"ݳ=9 atURϵF_ܽ/b7@ء?D<Ñq NJ&)JQ6a#_kږ ^_qP77F[h"8' jff漖qtthO _\NcT//]֒ ^|ŋ ¤|>OccIg G `#0}4480@N*,2N B07w\x|433CDdfvb45=mk@gYbaXɄ7;v~7d)>7gĉWQ&Xh?@ > 3Kh+`/ y3OxէWvD,N*BQb9TO< 5Kd:_ (*skocoe1$Ϸas-sV < TvO%S[ֶ8a*v&'iTuhij[I, N%^ΜmC~?N*I0|Pzx|T$k*WFA'U!T4 2l2k ^$7Z_mdD+7m`.tdeÏ9y5DA5DbHr ``kGޒNB zIͷn* yqu hsCa>=_ V?ho%&?@KQr9ekMԱ}P/U(>;k'D*P՚7}X yTJ|mt0;%p>cǜ1k Ы+ppwɬ!C׉o1RYۉ"eqM+`{la^U>>b ֊]]r(z|^maݻ~"  ؎}html'd2EM_f ltxXl쬀X\=p3a)Y|xK-NFhmRL23u!m@|!L$rymec}+!1uHԕIENDB`webcit-8.24-dfsg.orig/static/webcit_icons/essen/32x32/ungoto.png0000644000175000017500000000157312271477123024264 0ustar michaelmichaelPNG  IHDR szztEXtSoftwareAdobe ImageReadyqe<IDATxڼWMkAYBV$1Q4A7x'?H.=? ? A FUtj骶fg{BgWfvfzy<|5aƷsfqa>8G#C6&k䥗jra/ v(H$PK;gd"lxQ)@p;D~r dL"(x=>qQvp(qOK V* \G*}U[0WzB@#fo0މňR=* _ hCs->[KRafT[,:3G^PU!O[@a2\@mh)@k=ODmW"[ц(Dhn`t:XSȂ&1ϖ*9^_`5 ,eKp)8A[J?#Õ y@0\@i~隃`3~$ӹ. nkH6z5X\Ii4O>06QmϞ|N8Tt< XELd}K)ry ˴FbX6iQ#_qcSe@ H(5q JӸ-ry A.uQk.߉Cڐc@nD>t|tYPp[5P.:uc4@^mmblHp&ґqI?7Gdm%zy<mĎ z=+oDIENDB`webcit-8.24-dfsg.orig/static/webcit_icons/essen/32x32/feed.png0000644000175000017500000000232012271477123023643 0ustar michaelmichaelPNG  IHDR szztEXtSoftwareAdobe ImageReadyqe<rIDATxWkedfĚ&hUPOTo>*kE}(%KQIsm{yov'#8;󝙑c?%>.׺;g ]}dOHo44Itr(;9ʩ( Ь='0Ȼ޵00t9(φ{NFZgӵ.[NÀf-}JyKd`b=o +- ?PʮZMGPSM,0Ъvߺp7<2W(.P_߫8eK엍C@XL OF-WLC"&ut o_s[䈆OsVs3_Kgg}պ_lIz` \0Ɖ g~a+睎#\a`*6j@\mG/}͟k1M.4vELOG35'Iŝ+CAyLF NQ~j+CվSm &m}¥Z7pVcy{EK}n} HP | :zH@n9_oQ$II$Mv Ct|W`W]IENDB`webcit-8.24-dfsg.orig/static/webcit_icons/essen/32x32/draft.png0000644000175000017500000000222012271477123024037 0ustar michaelmichaelPNG  IHDR szztEXtSoftwareAdobe ImageReadyqe<2IDATxėku3-YhEQuTd`X[)"ΉllW"!eO| hń?ʔd)M&i]r^.kZry{R+$B<ƚ5(^s&mI38 aC|dMzq8m@v:\wGU7,/1( ,  1`_u ]!~5 V Yp`lE/R0\SS'Тb\V@º!0xc=D}($Z :;FPע?!r)`2r@U-K2ː)'A ģ&\rO5"A7, 56Ī'$l P ;m8zFN`˥O|; D@-C( &VkW!bP q5$| 8DD)~?*$Iۣ6=fW0ӧ`v ց]zg(+_*v;j݆"ơ#4h%ςEX߭d]pPAPP'F;ܡshzϞ[eCiٗ181XNU5*? +_}$Q}b A b0APeuqtKRxYBeW*U͓$d6zo%#k\ <{~ 6•,JK3;vgq$);+`sЏ|/&.h%p&>ܾ7mn䕺Y3B\ ! ay?>f^|1y6um=ne0Cix"ԐJURCl|4Q)I>&Vkb+ѦFCXL+cf}{l}af(8s>{o}[kc(,'^ݼmh+i!"L{vKs B'2ǻk W!I9H!YM)?侟;V`3#ϝgҟ7 kM cAc6M3`΋QDI/ t}Kyy4z}/}ua"`(DµcqHI2Ȃ hş u[k!tϽ|߿c=I##&43:vX1 _xLg5QZ\1xe dm1(^IF/X|~K_:d8cyboGˌ#k[bC)`eP8(<ԛKyA\` q+wK[Vm1$hmNa&EMT^*/h (c,#wZ,]H$+'-(O?w ($m9ˑ"+8E Qdo,q{(uEVXߥY1`5G'X¹ַ̿֜I+rƂJmf.)2 d5U3$Ѳ(Lm}"A"LעY~C >7IARXF*ӅRPl1:7 +0MGآL]+1oRL[0Y׵fŞ"BLfh凖턊CYBj!hY:~Q51O[%k0)o4TȬ?d tטL2f45e@%ihB_8_JQsF_h1J?Z3Ċ$,iM-$x=o0[arVyȏc/eBWt`SEkjcƦBT*KN3x0Gg@ԅRvF`> > ϩo-0w`iT(~ Jh6>AFVT:i) KV)u&թ >熙Yʥ|raOԛ:Nyҗ[^l"dW*WLJZR٢'j {BtVӘϿ9ex\]=n4m!+Pk([Tx+F#yӉ^#}FUj*^ n%FtZ(4JzQJc-tf\-IƬwS6Z!A&ʟz6+-`vxcݟ,/sBt6&wKc1Ǚ4ǡn*oX uGv%(4[mȼͨGNVէ7sjLEq 횎>ꉏ?@kɌY{^ *Z{єb(+19+un,jeJod(rG/_yыd"RT٭k멟̷IvƦ9)qLMԪZ?@ '_[ȑ0 hmZbgFjCmrcn΅íXr&Wv>yF/3:-KiPsb}t[&/,ҭwt uٹ- ^S#ۍ摾EIENDB`webcit-8.24-dfsg.orig/static/webcit_icons/essen/32x32/note.png0000644000175000017500000000145112271477123023711 0ustar michaelmichaelPNG  IHDR szztEXtSoftwareAdobe ImageReadyqe<IDATxb?:MKc Tq$akfP<ه#fa <-ϗ_isѓ'321M ,FR~fd~!M[H)$,q] ?k׬^/79)Zbމ30 18j0((*1:gp_?2&&%2}/1}`G'p/Z I(%, 0($`d\ˠ KP4|7 ?~bz1222031p3H 2ǖvb FSĶfؼ <#y 0F48!>pfoS5P=7R!) T5@Nn0&-XB?T,l )<; P1ɂ+Q!@DoH% T RZ!,!@D%%)|02"[3"E+)?edDr 3e"?YEv#ZOi[0Ad -Ĉ&!}d)*t2!=<Hh +ab"ݷqM8 3#ɾER,Ir$Ec p:`Ϟ=mw 5j~Nl!0g) svNQÁ8uh& ^`R=W?IENDB`webcit-8.24-dfsg.orig/static/webcit_icons/essen/32x32/task.png0000644000175000017500000000204412271477123023705 0ustar michaelmichaelPNG  IHDR szztEXtSoftwareAdobe ImageReadyqe<IDATxڴWYHTa>?6jnh긴FE:"Z V[QPR/)ZH=h"eksosgQ9ssA4MX.WV RG?%z϶,1~>ջdk )6-)wV!Bbԓ/p#H۠¢b݇2S^]7,֧-[KZ8EcN篽Y 9Yqi Kii~ϕ H$V_@"7ɤ&*vHH9*I18S;<--h $L&om? !@̪,|[3(8z]&G!""xIQ@ll)ђfw">`A\CK#*%4Bh'htK5Ӻbֺ|{MX`&xBjI%:BPO.Ά$x@#lh%WhC\#-E-1PKvnA_Hƈ/CLEkIrBTb0Ԅ|wG. MAkM0!4"*+ T ϐ ˁ@O[J9?\Xo`@9 !GXD 4>X:'q0c!$0bt|ѢcIm)#&݈dSպn4KњҕzL5Ońl R2w|ҦP(eF6/fՎLjKW0%hh?%0W'߽|!*?+>Ś$_wqNE}[.?۠ot IENDB`webcit-8.24-dfsg.orig/static/webcit_icons/essen/32x32/file.png0000644000175000017500000000177212271477123023671 0ustar michaelmichaelPNG  IHDR szztEXtSoftwareAdobe ImageReadyqe<IDATxWn1{ppH (R$:Ro(HxDEGK@6ƈqR`B z0d{K )h mDVY-,V4 +(z9fRS!<ΛhQf0$,Pv5CJ'H#G@ĮiR%!/4yI`{p>b%pTB 6(q)ÒخF = TFAyV e`K ; pB @9,]LjL*$y+׌ l\\P2'1 *˳~ΤG=='EmM1R,lVB$ܹڃ{5d?NJ>T..lޮ:VMҋ"!gv\Ҫ2*F8 /97{t~lM9QЇqFH/Nty{S#y^5 TLpEq$RuH|d:PG]$ nS4R;Wɛ_/vtp7o' e/`QcD '"dJ,$ڿ '&"Y 7?~VXs3&Sѕnbj 6w yr0Uhഘ䎬 LA$h~aia,K FE$3/ÐjozF-"w=.NE,$${{XI:& ]%$YdB`Fn2al_vJaMxLΟE|Bb[Aailey .A C#"%e/zX$6);C^Dg}TB4 ,a-944zC(P!|dd ˃6-?1.豩裨&#!]=0-&gKF4@ktF}06:~#4^(הW yxǀ 'DQ,ǚn~{_Hܩը>;3m퐟9`tԸA~W w#pC2'l6dc19R^nO0,Tq}#n[7'\KJWʴP?]B'c mat=AIi'>Jbᅋ׻ ;3ADzJr&,nVp8SMQF5}ۅS!JbhoBL=xB2Y\^#?˰vbX D( $e! )Ҳthi *(Jd{ϷmY 1s D.>|ཛྷ>`A|\y>|^z0 + zOnwJ4O.dI/>{|i7M=ߥ ֌t,6L/,$9 W@kQ\W >Bдa&T}Mg!|ؚ,9 p#py*HJ\饥+ߺuF@Y/\,xc,K @N[l&> dܿu A"Fe:fGA;97K (XqWLf$@ϋPO6rFQkZW!G~ ؉2en|bL_^"{2fco) Rtd.E B掟sD:ӥKE$ N0hVeZ3>PVˎjWx롊#$hr'ҲÊ{_i&%Q0l (kD3[G:]FДaI#pu]!/^v;ߝwϞ}.Xel7)/,ִiM%P|FVh޸V55Wj6uuX.=-0Y䀋Av 6s TK uA#ss֟qOZP%cd&{}"5=N(i%zY ps_u죦VZ5A\IpV15`vXM>IbsO@E۳{ϋ>_Ԟ")74 .N?$ahPQ9)s2M4e… ƞS]"a|դ>c0=۹4N_ U۫IENDB`webcit-8.24-dfsg.orig/static/webcit_icons/essen/32x32/abort.png0000644000175000017500000000260112271477123024051 0ustar michaelmichaelPNG  IHDR szztEXtSoftwareAdobe ImageReadyqe<#IDATxW[lUff/ҖB@im %(PC!Jڔ<@ (苚`| _%P0T.@k[v{ϖʔbO%s9g8tca]}:ߤ~7VF;ٜv&E+?(Xƫ QVw_s?sej.- Iuo}$I8U aKZj`{Rv/*֒0%D$Ӧ2TsOɕ4)⇵d-?0y+6BeQ@ 0Qc$uC!нzuE !"yaʙ ;}[*&@Ͼ `AC7GnR 3?H^:7E{<@;9 > H*\]~za U,Sg֘r2 E.B pH.p'Ȝ PqO9q\9҆Xڋ_U 5JZ}(awY\#PT=pݼ'UEur0;h(@8i5{L'9yn} >zZΤ|HJ>t Pºmd@ 6UY޷\&̓J("Ѝ HDA5&TЉ/iI{B9pnS3{&sfxG1waQ\Lf uZbmS#OeB)x Cjξu"U$dK+]q<hC! Rނ#Q^+QY: 1u"<M)ϕ/C ^$o{K$z%uJ8 1w͍2 Ѡ(ruLYXqkѩ+,Gg1Q*kn682fqUάJ+JޓVn`6K2X\pNϮ 2EVOpDiIENDB`webcit-8.24-dfsg.orig/static/webcit_icons/essen/32x32/delete.png0000644000175000017500000000251112271477123024204 0ustar michaelmichaelPNG  IHDR szztEXtSoftwareAdobe ImageReadyqe<IDATxڴ{L[U޶P^sA6d7]b6M Iluel-Ʊ\(G`@XG(UZ{=TXahorsO=|={0GVu5:c?ϥٱ[`3rN&j5j&;5f5F9NQ\jLt jom6K斯0sc#Z~^O>]eF[5c@$3X{s;۷_/REX%'NB3ކI3N 6`亰Zo,s }G2(A#;ޱa=c':]8{ 7 OIx{׊WnJ!<C ?ߢ}208fn,P%lj ?gA8rrx#,r4@+gp9tmMs&d@zUѤ Oƕ$#x*ʀgD-23xܰm$@1Lik2)DnքO#4͸xv䲠rZFTxEBS NO5FKR25 >Q^Qָ%[ (مInJYMݯ3d;!9Z\,s'Z|USdOtg2}12s#ւ*y~5BJ-8v_z"~_zh_[I?)})o토K{w3޾d t>8o Zpڄ0;Ih߃𶍬Vt֝B\ Lф+"g~k%뀌| q+8r}*/WmXN|_i܌z}_+wF y&8 }\_Wl8d9 jG ]3€oSj[ o֒|v0rN8`3Y:hಜm/7ju ks]E@WRjxV{iQ4杸%^QT@}R*C=£`xtDZ]K6@uK]7B$9Qt($L;9#:5]uNÂW]' XIENDB`webcit-8.24-dfsg.orig/static/webcit_icons/essen/32x32/account.png0000644000175000017500000000201612271477123024376 0ustar michaelmichaelPNG  IHDR szztEXtSoftwareAdobe ImageReadyqe<IDATxWOA9cTMĨ11b4($k (O$!@D AAGK鵷zbfs7;"!v\Xl^8gMlu_$I􍡇ix=4v;j]lI% iT:͟υm½*H$W 0 M9C]s:whtg=~2($/rŃIGLNW41 9LVLQW{-KiHl'A$ .*(#^~ kqwTZ%29gbT0%YP Dj ^'TFh%5:mEK7B+2gfcu9\`S0($])eGPК?V~t³30?c#<- )sfd17Va3Kܬh4 Zo6 FPREZt@^GWYsYq遃PVV9nHKc$I8758S5B(p{Q.sI-m`D-&x+gkQ|xRlTظuYb@_0 LqJ)||*8y4﷜jeӓSjdC[ ,..ػƹ F#+ Ǔ:FG%͛1Mt';jּbK7-ORN'R ]Fe y!`.PhہUU 5oѡNoO[q2nVJhD,u=zp}uK7je3_#J:X] $ oS~,IENDB`webcit-8.24-dfsg.orig/static/webcit_icons/essen/32x32/network.png0000644000175000017500000000154712271477123024443 0ustar michaelmichaelPNG  IHDR szztEXtSoftwareAdobe ImageReadyqe< IDATxڴWkAIZͿ@TPjҜKDl'S<1$=xA"z mn>y~Lf.;3~fcۋVW%ms7k!UΖ(9ˑ7A1D$ɰ?3'=&b z}槳n>wm]1dܦm[d|!_b섞!6&{V@tP2"sd2R\JJY/&`CCr@8Ä P %h}a1!pX0:L]PN=ڽ#e qD-RJL OP`[uB`.b+ Xb!Pi/ D O10eMdxM{[uOH}NpöDv,Y^OT0LL b^@g9sQR?D5LHVeQ`@LN{L_)`nng' V+ե4mZ(8 ?=Rb]ǵr˝vˈv: ӌ(-0 bf `4@,c0/67\n |>o5i3t:v(k//7о&R"qʣ U*,-K3KX %ٗWqw ![RFCыNYU H5puUʇ'igRiho5IENDB`webcit-8.24-dfsg.orig/static/webcit_icons/essen/32x32/nextroom.png0000644000175000017500000000162112271477123024616 0ustar michaelmichaelPNG  IHDR szztEXtSoftwareAdobe ImageReadyqe<3IDATxڼWn@PZP SHIK$ @MO@EhRHHi ޙafs/dw{o{?^<^3ե'LcC6&Ou8L~4d~ @rK?m+ l7'W I5jhDrrW]>Nj2Wj uPh,`, }7X8Œ,/\Q~xA 2M-|ؼhLt|0}+q/֪\t0-3s uU0N Pق!_ݺ~av`( 2@H{qkZabs|'USݒ#K  $z+lK _J@4갉ZJ@3 $#Q{ .&bd^KwVGqxL䆅>"x9?ۻO_9Aqʅ)9/f:ܓ}?8kdIENDB`webcit-8.24-dfsg.orig/static/webcit_icons/essen/32x32/addcontact.png0000644000175000017500000000403312271477123025047 0ustar michaelmichaelPNG  IHDR szztEXtSoftwareAdobe ImageReadyqe<IDATxڬW{TWs;w;bXb(h!44JZIIT4)jGll5nl(M(D#FHS75Pq ۲؝}=~̲.bA$ߝ;s0!Ə{JOM3ReBij!0:H8yehph_?;oq֢4%sfK}}ӆwMƇxi]ӖlN.F4L @L05Ldes֮_l *3B:6 mL: Asj5?=ڔ0 &L˂aXS*ANkvg V&ݖH$Lq!",AF؃^  Z=xsJ%V;%x1Q>wŹE %9w OM 0 jx:eK֠ Ŋt&FDDk"$uNQ9e>!'k[0kr !A^ @xHQdsZuH|$(Gy뿌 (|. "7B1OXWRiƊdyg7 ŭI/|1;P(`hjj?WG c]k>ڦuv}#u1|*]CߦB4q''z= ֺT%tϏU!LbT.gϞELa8܃?=zzz\wO?=O qu>RR[kY\Yhd i/xj&MwY5-Van*7}>M%4Ofe㓖(p])V;?p6~S{2$&d 3+3AGEk}P~F^Fmϲ^i{H Cʔ^گ>9.OVy%޲CWIENDB`webcit-8.24-dfsg.orig/static/webcit_icons/essen/32x32/contact.png0000644000175000017500000000237012271477123024400 0ustar michaelmichaelPNG  IHDR szztEXtSoftwareAdobe ImageReadyqe<IDATxڼWk\EͲ[lmZi#b(QB|Lq#APD *4 ]icۤI̝93s?vs?9s""D[& $Ij<г*NHRގl6V\;o7uSN-g`08؇Rlwln{XTt&UVo}Etqf;3xy.3}!XQAf < yO>GV i_]*.x} O\5fE ˟#  a@ ?l?o[ VsZ\ᮟSN%N`)4尓7BVIENDB`webcit-8.24-dfsg.orig/static/webcit_icons/essen/32x32/user.png0000644000175000017500000000373712271477123023733 0ustar michaelmichaelPNG  IHDR szztEXtSoftwareAdobe ImageReadyqe<IDATxWil\W>oތĎIC&jP M r_UR)Z)` *"*HSM"JKP"'L:[¹ϋlǡij{9YFRFϏw7ο;6;i[{fI)BQxm|ž+ e=?ѱ]5Y5ܾiuGsP76f4_1\ex'](x82,LYc`U[/o+ LyΓ^΃90Le^ ]6b!9%1V X]'oel8 v!RQ" $_kܜeYKTe߭:0!D!XGHs"YM  K7I@J~0śADLn#:w%LNVp?WG! > ~dE0^]۶"CKK3ʵ^.A$=SV Ym[1iFcQ*LN]LwI?g yׄ$Y+i8XIFAy8(pV6Fcx򩓓#.Q/Vjꛅ=9=13_CZߙy2="nTz#U=#IENDB`webcit-8.24-dfsg.orig/static/webcit_icons/essen/32x32/chat.png0000644000175000017500000000132112271477123023657 0ustar michaelmichaelPNG  IHDR szztEXtSoftwareAdobe ImageReadyqe<sIDATxėn0Ǐ5Jdž:uBBH1 CFx^%B$;V1$К  %͉da+D:->ΉsBeyԾzFW,$P_0WIPB`[Ζ'@H$%@D!ܹדKbEas M%$ADT@\ܿƢFP@OQH*ȅT&Y,'wCs'Pr:Q'Y9+B%ٓ0$! {IEl PjEYjfP$!2!H #B1?&Jb'l{w`TH睳wkB27;Czkإ6Z o`d9~lIENDB`webcit-8.24-dfsg.orig/static/webcit_icons/essen/32x32/calendar.png0000644000175000017500000000171012271477123024513 0ustar michaelmichaelPNG  IHDR szztEXtSoftwareAdobe ImageReadyqe<jIDATxĖ]HTAϬW Cޢw!BIJ"KY"!v.DҚFDXZ&EDSDKo"̽wY̽sܹwu~^Ʀ&Z )(ec#R¾yM͢d2`+#-"5T)dQ=ykǜZ+?B)R"yvj.Ls [c ,+Zܰr*$F yDU-Ŗv9rPHew!0 \ ((Tvjc~}1C NKA`N'd9 TK9Gs Jǘk\:idQ:jFdzG@?"4n@42" 8fpa ΐ L u{BwV!AaBaS eEA>E* yUHYSss2MH}-5?)'/ dr\RZDۯcGeLM865*7L8%qeY<ID+娡uӯ: !L} /Pr1\NE=l]H"Qm g.n*ZԔu)h2x5-ttc`L* LKDy]sw׋[_;^`Db jxx7JVjU K Z(,J g1Ц2$ Ia;~~g];N79{gs~sfFH)F>܅0dt@>LO^OXٰ/:NՏ\sh w8ӣeI lE"_$)jO~yb-;S]^J9kã李vޓ6M!e\(M:iAj'99/O=wɗG93>:iv[J\ςa6a<_(q iZtK4_D'ǖB4>&'hE%"RP TJ8J8iӲ>-*!2Hfsu‹*#\wޓu4j̩T<>S~Vfuu]o=羚+ _y"T^yփ\G4VcRán{\?u|arfA9PIB4x]-/&Y[k 7!$9nOLl cݹ;/_e&4P9GdF+m Sո뚺|M]7'4 3\#*3iI;DܭV,Jb %q ⡍J:իR~&wmYBAˆ!ij 'v|z";"'ߝ,ʽ,޸i9~L7j:t %#/:!@V/}Сegĉ&0@gSp h4CV+WϧKXZg\QRz Z rvZ(UJgQo) #~̊&e]R( aQo^wGuMWKOIHFUꮰc.=w\gВbt_s(SC{GSTS&2UFA[uW^KʒkO s,ISSCzX3㛒lL7 >c(x11;XavS/"Ag}gφNT~#bȱ#Gpe&ؽoZD.dd͙@L*97,0mE}]g(,9Yȣ7:t"7L`d;&+ H(C{"rF &9u[% j(UF9jNsw\gwbΪ4fAzBtGqΧYW7O2Mo4/h.MhEjS̿/^SIts~e#ZI< IENDB`webcit-8.24-dfsg.orig/static/datepicker-dev.js0000644000175000017500000006755212271477123021133 0ustar michaelmichael/** * DatePicker widget using Prototype and Scriptaculous. * (c) 2007 Mathieu Jondet * Eulerian Technologies * * DatePicker is freely distributable under the same terms as Prototype. * */ /** * DatePickerFormatter class for matching and stringifying dates. * * By Arturas Slajus . */ var DatePickerFormatter = Class.create(); DatePickerFormatter.prototype = { /** * Create a DatePickerFormatter. * * format: specify a format by passing 3 value array consisting of * "yyyy", "mm", "dd". Default: ["yyyy", "mm", "dd"]. * * separator: string for splitting the values. Default: "-". * * Use it like this: * var df = new DatePickerFormatter(["dd", "mm", "yyyy"], "/"); * df.current_date(); * df.match("7/7/2007"); */ initialize: function(format, separator) { if (Object.isUndefined(format)) format = ["yyyy", "mm", "dd"]; if (Object.isUndefined(separator)) separator = "-"; this._format = format; this.separator = separator; this._format_year_index = format.indexOf("yyyy"); this._format_month_index= format.indexOf("mm"); this._format_day_index = format.indexOf("dd"); this._year_regexp = /^\d{4}$/; this._month_regexp = /^0\d|1[012]|\d$/; this._day_regexp = /^0\d|[12]\d|3[01]|\d$/; }, /** * Match a string against date format. * Returns: [year, month, day] */ match: function(str) { var d = str.split(this.separator); if (d.length < 3) return false; var year = d[this._format_year_index].match(this._year_regexp); if (year) { year = year[0] } else { return false } var month = d[this._format_month_index].match(this._month_regexp); if (month) { month = month[0] } else { return false } var day = d[this._format_day_index].match(this._day_regexp); if (day) { day = day[0] } else { return false } return [year, month, day]; }, /** * Return current date according to format. */ current_date: function() { var d = new Date; return this.date_to_string( d.getFullYear(), d.getMonth() + 1, d.getDate() ); }, /** * Return a stringified date accordint to format. */ date_to_string: function(year, month, day, separator) { if (Object.isUndefined(separator)) separator = this.separator; var a = [0, 0, 0]; a[this._format_year_index] = year; a[this._format_month_index] = month.toPaddedString(2); a[this._format_day_index] = day.toPaddedString(2); return a.join(separator); } }; /** * DatePicker */ var DatePicker = Class.create(); DatePicker.prototype = { Version : '0.9.4', _relative : null, _div : null, _zindex : 1, _keepFieldEmpty: false, _daysInMonth : [31,28,31,30,31,30,31,31,30,31,30,31], _dateFormat : [ ["dd", "mm", "yyyy"], "/" ], /* language */ _language : 'fr', _language_month : $H({ 'fr' : [ 'Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Aout', 'Septembre', 'Octobre', 'Novembre', 'Décembre' ], 'en' : [ 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December' ], 'sp' : [ 'Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio', 'Agosto', 'Septiembre', 'Octubre', 'Noviembre', 'Diciembre' ], 'it' : [ 'Gennaio', 'Febbraio', 'Marzo', 'Aprile', 'Maggio', 'Giugno', 'Luglio', 'Agosto', 'Settembre', 'Ottobre', 'Novembre', 'Dicembre' ], 'de' : [ 'Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember' ], 'pt' : [ 'Janeiro', 'Fevereiro', 'Março', 'Abril', 'Maio', 'Junho', 'Julho', 'Agosto', 'Setembro', 'Outubro', 'Novembro', 'Dezembro' ], 'hu' : [ 'Január', 'Február', 'Március', 'Április', 'Május', 'Június', 'Július', 'Augusztus', 'Szeptember', 'Október', 'November', 'December' ], 'lt' : [ 'Sausis', 'Vasaris', 'Kovas', 'Balandis', 'Gegužė', 'Birželis', 'Liepa', 'Rugjūtis', 'Rusėjis', 'Spalis', 'Lapkritis', 'Gruodis' ], 'nl' : [ 'januari', 'februari', 'maart', 'april', 'mei', 'juni', 'juli', 'augustus', 'september', 'oktober', 'november', 'december' ], 'dk' : [ 'Januar', 'Februar', 'Marts', 'April', 'Maj', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'December' ], 'no' : [ 'Januar', 'Februar', 'Mars', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Desember' ], 'lv' : [ 'Janvāris', 'Februāris', 'Marts', 'Aprīlis', 'Maijs', 'Jūnijs', 'Jūlijs', 'Augusts', 'Septembris', 'Oktobris', 'Novembris', 'Decemberis' ], 'ja' : [ '1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月' ], 'fi' : [ 'Tammikuu', 'Helmikuu', 'Maaliskuu', 'Huhtikuu', 'Toukokuu', 'Kesäkuu', 'Heinäkuu', 'Elokuu', 'Syyskuu', 'Lokakuu', 'Marraskuu', 'Joulukuu' ], 'ro' : [ 'Ianuarie', 'Februarie', 'Martie', 'Aprilie', 'Mai', 'Junie', 'Julie', 'August', 'Septembrie', 'Octombrie', 'Noiembrie', 'Decembrie' ], 'zh' : [ '1 月', '2 月', '3 月', '4 月', '5 月', '6 月', '7 月', '8 月', '9 月', '10月', '11月', '12月'], 'sv' : [ 'Januari', 'Februari', 'Mars', 'April', 'Maj', 'Juni', 'Juli', 'Augusti', 'September', 'Oktober', 'November', 'December' ] }), _language_day : $H({ 'fr' : [ 'Lun', 'Mar', 'Mer', 'Jeu', 'Ven', 'Sam', 'Dim' ], 'en' : [ 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun' ], 'sp' : [ 'Lun', 'Mar', 'Mie', 'Jue', 'Vie', 'Sáb', 'Dom' ], 'it' : [ 'Lun', 'Mar', 'Mer', 'Gio', 'Ven', 'Sab', 'Dom' ], 'de' : [ 'Mon', 'Die', 'Mit', 'Don', 'Fre', 'Sam', 'Son' ], 'pt' : [ 'Seg', 'Ter', 'Qua', 'Qui', 'Sex', 'Sáb', 'Dom' ], 'hu' : [ 'Hé', 'Ke', 'Sze', 'Csü', 'Pé', 'Szo', 'Vas' ], 'lt' : [ 'Pir', 'Ant', 'Tre', 'Ket', 'Pen', 'Šeš', 'Sek' ], 'nl' : [ 'ma', 'di', 'wo', 'do', 'vr', 'za', 'zo' ], 'dk' : [ 'Man', 'Tir', 'Ons', 'Tor', 'Fre', 'Lør', 'Søn' ], 'no' : [ 'Man', 'Tir', 'Ons', 'Tor', 'Fre', 'Lør', 'Sun' ], 'lv' : [ 'P', 'O', 'T', 'C', 'Pk', 'S', 'Sv' ], 'ja' : [ '月', '火', '水', '木', '金', '土', '日' ], 'fi' : [ 'Ma', 'Ti', 'Ke', 'To', 'Pe', 'La', 'Su' ], 'ro' : [ 'Lun', 'Mar', 'Mie', 'Joi', 'Vin', 'Sam', 'Dum' ], 'zh' : [ '周一', '周二', '周三', '周四', '周五', '周六', '周日' ], 'sv' : [ 'Mån', 'Tis', 'Ons', 'Tor', 'Fre', 'Lör', 'Sön' ] }), _language_close : $H({ 'fr' : 'fermer', 'en' : 'close', 'sp' : 'cerrar', 'it' : 'fine', 'de' : 'schliessen', 'pt' : 'fim', 'hu' : 'bezár', 'lt' : 'udaryti', 'nl' : 'sluiten', 'dk' : 'luk', 'no' : 'lukk', 'lv' : 'aizvērt', 'ja' : '閉じる', 'fi' : 'sulje', 'ro' : 'inchide', 'zh' : '关 闭', 'sv' : 'stäng' }), _language_reset : $H({ // FILL ME IN 'en' : 'reset' }), /* date manipulation */ _todayDate : new Date(), _current_date : null, _clickCallback : Prototype.emptyFunction, _cellCallback : Prototype.emptyFunction, _id_datepicker : null, _disablePastDate : false, _disableFutureDate : true, _enableYearBrowse : false, _oneDayInMs : 24 * 3600 * 1000, /* positionning */ _topOffset : 30, _leftOffset : 0, _isPositionned : false, _relativePosition : true, _setPositionTop : 0, _setPositionLeft : 0, _bodyAppend : false, _contentAppend : '', _showEvent : 'click', /* Effects Adjustment */ _showEffect : "appear", _showDuration : 1, _enableShowEffect : true, _closeEffect : "fade", _closeEffectDuration : 0.3, _enableCloseEffect : true, _closeTimer : null, _enableCloseOnBlur : false, /* afterClose : called when the close function is executed */ _afterClose : Prototype.emptyFunction, /* return the name of current month in appropriate language */ getMonthLocale : function ( month ) { return this._language_month.get(this._language)[month]; }, getLocaleClose : function () { return this._language_close.get(this._language); }, getLocaleReset : function() { return this._language_reset.get(this._language); }, _initCurrentDate : function () { /* Create the DateFormatter */ this._df = new DatePickerFormatter(this._dateFormat[0], this._dateFormat[1]); /* check if value in field is proper, if not set to today */ this._current_date = $F(this._relative); if (! this._df.match(this._current_date)) { this._current_date = this._df.current_date(); /* set the field value ? */ if (!this._keepFieldEmpty) $(this._relative).value = this._current_date; } var a_date = this._df.match(this._current_date); this._current_year = Number(a_date[0]); this._current_mon = Number(a_date[1]) - 1; this._current_day = Number(a_date[2]); }, /* init */ initialize : function ( h_p ) { /* arguments */ this._relative= h_p["relative"]; if (h_p["language"]) this._language = h_p["language"]; this._zindex = ( h_p["zindex"] ) ? parseInt(Number(h_p["zindex"])) : 1; if (!Object.isUndefined(h_p["keepFieldEmpty"])) this._keepFieldEmpty = h_p["keepFieldEmpty"]; if (Object.isFunction(h_p["clickCallback"])) this._clickCallback = h_p["clickCallback"]; if (!Object.isUndefined(h_p["leftOffset"])) this._leftOffset = parseInt(h_p["leftOffset"]); if (!Object.isUndefined(h_p["topOffset"])) this._topOffset = parseInt(h_p["topOffset"]); if (!Object.isUndefined(h_p["relativePosition"])) this._relativePosition = h_p["relativePosition"]; if (!Object.isUndefined(h_p["showEvent"])) this._showEvent = h_p["showEvent"]; if (!Object.isUndefined(h_p["showEffect"])) this._showEffect = h_p["showEffect"]; if (!Object.isUndefined(h_p["contentAppend"])) this._contentAppend = h_p["contentAppend"]; if (!Object.isUndefined(h_p["enableShowEffect"])) this._enableShowEffect = h_p["enableShowEffect"]; if (!Object.isUndefined(h_p["showDuration"])) this._showDuration = h_p["showDuration"]; if (!Object.isUndefined(h_p["closeEffect"])) this._closeEffect = h_p["closeEffect"]; if (!Object.isUndefined(h_p["enableCloseEffect"])) this._enableCloseEffect = h_p["enableCloseEffect"]; if (!Object.isUndefined(h_p["closeEffectDuration"])) this._closeEffectDuration = h_p["closeEffectDuration"]; if (Object.isFunction(h_p["afterClose"])) this._afterClose = h_p["afterClose"]; if (!Object.isUndefined(h_p["externalControl"])) this._externalControl= h_p["externalControl"]; if (!Object.isUndefined(h_p["dateFormat"])) this._dateFormat = h_p["dateFormat"]; if (Object.isFunction(h_p["cellCallback"])) this._cellCallback = h_p["cellCallback"]; this._setPositionTop = ( h_p["setPositionTop"] ) ? parseInt(Number(h_p["setPositionTop"])) : 0; this._setPositionLeft = ( h_p["setPositionLeft"] ) ? parseInt(Number(h_p["setPositionLeft"])) : 0; if (!Object.isUndefined(h_p["enableCloseOnBlur"]) && h_p["enableCloseOnBlur"]) this._enableCloseOnBlur = true; if (!Object.isUndefined(h_p["disablePastDate"]) && h_p["disablePastDate"]) this._disablePastDate = true; if (!Object.isUndefined(h_p["disableFutureDate"]) && !h_p["disableFutureDate"]) this._disableFutureDate = false; if (!Object.isUndefined(h_p["enableYearBrowse"])) this._enableYearBrowse = true; this._id_datepicker = 'datepicker-'+this._relative; this._id_datepicker_prev = this._id_datepicker+'-prev'; this._id_datepicker_next = this._id_datepicker+'-next'; this._id_datepicker_prev_year = this._id_datepicker_prev+'-year'; this._id_datepicker_next_year = this._id_datepicker_next+'-year'; this._id_datepicker_hdr = this._id_datepicker+'-header'; this._id_datepicker_ftr = this._id_datepicker+'-footer'; this._id_datepicker_rst = this._id_datepicker+'-reset'; /* build up calendar skel */ this._div = new Element('div', { id : this._id_datepicker, className : 'datepicker', style : 'display: none;' }); this._div.innerHTML = '
'+((this._enableYearBrowse) ? '' : '')+''+((this._enableYearBrowse) ? '' : '')+'
 <  <<  >>  > 
'; /* finally declare the event listener on input field */ Event.observe(this._relative, this._showEvent, this.click.bindAsEventListener(this), false); /* need to append on body when doc is loaded for IE */ document.observe('dom:loaded', this.load.bindAsEventListener(this), false); /* automatically close when blur event is triggered */ if ( this._enableCloseOnBlur ) { Event.observe(this._relative, 'blur', function (e) { this._closeTimer = this.close.bind(this).delay(2); }.bindAsEventListener(this)); Event.observe(this._div, 'click', function (e) { if (this._closeTimer) { window.clearTimeout(this._closeTimer); this._closeTimer = null; } }); } }, /** * load : called when document is fully-loaded to append datepicker * to main object. */ load : function () { /* if externalControl defined set the observer on it */ if (this._externalControl) Event.observe(this._externalControl, 'click', this.click.bindAsEventListener(this), false); /* append to page */ if (this._relativeAppend) { /* append to parent node */ if ($(this._relative).parentNode) { this._div.innerHTML = this._wrap_in_iframe(this._div.innerHTML); $(this._relative).parentNode.appendChild( this._div ); } } else { /* append to body tag or to provided contentAppend id */ var body = ( this._contentAppend ) ? $(this._contentAppend) : document.getElementsByTagName("body").item(0); if (body) { this._div.innerHTML = this._wrap_in_iframe(this._div.innerHTML); body.appendChild(this._div); } if ( this._relativePosition ) { var a_pos = Element.cumulativeOffset($(this._relative)); this.setPosition(a_pos[1], a_pos[0]); } else { if (this._setPositionTop || this._setPositionLeft) this.setPosition(this._setPositionTop, this._setPositionLeft); } } /* init the date in field if needed */ this._initCurrentDate(); /* set the close locale content */ $(this._id_datepicker_ftr).innerHTML = this.getLocaleClose(); $(this._id_datepicker_rst).innerHTML = this.getLocaleReset(); /* declare the observers for UI control */ Event.observe($(this._id_datepicker_prev), 'click', this.prevMonth.bindAsEventListener(this), false); Event.observe($(this._id_datepicker_next), 'click', this.nextMonth.bindAsEventListener(this), false); if ( this._enableYearBrowse ) { Event.observe($(this._id_datepicker_prev_year), 'click', this.prevYear.bindAsEventListener(this), false); Event.observe($(this._id_datepicker_next_year), 'click', this.nextYear.bindAsEventListener(this), false); } Event.observe($(this._id_datepicker_ftr), 'click', this.close.bindAsEventListener(this), false); Event.observe($(this._id_datepicker_rst), 'click', this.reset.bindAsEventListener(this), false); }, /* hack for buggy form elements layering in IE */ _wrap_in_iframe : function ( content ) { var _iframe_src = 'javascript:false'; return ( Prototype.Browser.IE ) ? "
" + content + "
" : content; }, /** * visible : return the visibility status of the datepicker. */ visible : function () { return ( $(this._id_datepicker) ) ? $(this._id_datepicker).visible() : false; }, /** * click : called when input element is clicked */ click : function () { /* init the datepicker if it doesn't exists */ if ( $(this._id_datepicker) == null ) this.load(); if (!this._isPositionned && this._relativePosition) { /* position the datepicker relatively to element */ var a_lt = Element.positionedOffset($(this._relative)); $(this._id_datepicker).setStyle({ 'left' : Number(a_lt[0]+this._leftOffset)+'px', 'top' : Number(a_lt[1]+this._topOffset)+'px' }); this._isPositionned = true; } if (!this.visible()) { this._initCurrentDate(); this._redrawCalendar(); } /* eval the clickCallback function */ eval(this._clickCallback()); /* Effect toggle to fade-in / fade-out the datepicker */ if ( this._enableShowEffect ) { new Effect.toggle(this._id_datepicker, this._showEffect, { duration: this._showDuration }); } else { $(this._id_datepicker).show(); } /* clean timer */ if (this._closeTimer) { window.clearTimeout(this._closeTimer); this._closeTimer = null; } }, /** * close : called when the datepicker is closed */ close : function () { if ( this._enableCloseEffect ) { switch(this._closeEffect) { case 'puff': new Effect.Puff(this._id_datepicker, { duration : this._closeEffectDuration }); break; case 'blindUp': new Effect.BlindUp(this._id_datepicker, { duration : this._closeEffectDuration }); break; case 'dropOut': new Effect.DropOut(this._id_datepicker, { duration : this._closeEffectDuration }); break; case 'switchOff': new Effect.SwitchOff(this._id_datepicker, { duration : this._closeEffectDuration }); break; case 'squish': new Effect.Squish(this._id_datepicker, { duration : this._closeEffectDuration }); break; case 'fold': new Effect.Fold(this._id_datepicker, { duration : this._closeEffectDuration }); break; case 'shrink': new Effect.Shrink(this._id_datepicker, { duration : this._closeEffectDuration }); break; default: new Effect.Fade(this._id_datepicker, { duration : this._closeEffectDuration }); break; }; } else { $(this._id_datepicker).hide(); } eval(this._afterClose()); }, // Reset function reset: function() { $(this._relative).value = ""; this._initCurrentDate(); }, /** * setDateFormat */ setDateFormat : function ( format, separator ) { if (Object.isUndefined(format)) format = this._dateFormat[0]; if (Object.isUndefined(separator)) separator = this._dateFormat[1]; this._dateFormat = [ format, separator ]; }, /** * setPosition : set the position of the datepicker. * param : t=top | l=left */ setPosition : function ( t, l ) { var h_pos = { 'top' : '0px', 'left' : '0px' }; if (!Object.isUndefined(t)) h_pos['top'] = Number(t)+this._topOffset+'px'; if (!Object.isUndefined(l)) h_pos['left']= Number(l)+this._leftOffset+'px'; $(this._id_datepicker).setStyle(h_pos); this._isPositionned = true; }, /** * _getMonthDays : given the year and month find the number of days. */ _getMonthDays : function ( year, month ) { if (((0 == (year%4)) && ( (0 != (year%100)) || (0 == (year%400)))) && (month == 1)) return 29; return this._daysInMonth[month]; }, /** * _buildCalendar : draw the days array for current date */ _buildCalendar : function () { var _self = this; var tbody = $(this._id_datepicker+'-tbody'); try { while ( tbody.hasChildNodes() ) tbody.removeChild(tbody.childNodes[0]); } catch ( e ) {}; /* generate day headers */ var trDay = new Element('tr'); this._language_day.get(this._language).each( function ( item ) { var td = new Element('td'); td.innerHTML = item; td.className = 'wday'; trDay.appendChild( td ); }); tbody.appendChild( trDay ); /* generate the content of days */ /* build-up days matrix */ var a_d = [ [ 0, 0, 0, 0, 0, 0, 0 ] ,[ 0, 0, 0, 0, 0, 0, 0 ] ,[ 0, 0, 0, 0, 0, 0, 0 ], [ 0, 0, 0, 0, 0, 0, 0 ], [ 0, 0, 0, 0, 0, 0, 0 ] ,[ 0, 0, 0, 0, 0, 0, 0 ] ]; /* set date at beginning of month to display */ var d = new Date(this._current_year, this._current_mon, 1, 12); /* start the day list on monday */ var startIndex = ( !d.getDay() ) ? 6 : d.getDay() - 1; var nbDaysInMonth = this._getMonthDays( this._current_year, this._current_mon); var daysIndex = 1; for ( var j = startIndex; j < 7; j++ ) { a_d[0][j] = { d : daysIndex ,m : this._current_mon ,y : this._current_year }; daysIndex++; } var a_prevMY = this._prevMonthYear(); var nbDaysInMonthPrev = this._getMonthDays(a_prevMY[1], a_prevMY[0]); for ( var j = 0; j < startIndex; j++ ) { a_d[0][j] = { d : Number(nbDaysInMonthPrev - startIndex + j + 1) ,m : Number(a_prevMY[0]) ,y : a_prevMY[1] ,c : 'outbound' }; } var switchNextMonth = false; var currentMonth = this._current_mon; var currentYear = this._current_year; for ( var i = 1; i < 6; i++ ) { for ( var j = 0; j < 7; j++ ) { a_d[i][j] = { d : daysIndex ,m : currentMonth ,y : currentYear ,c : ( switchNextMonth ) ? 'outbound' : ( ((daysIndex == this._todayDate.getDate()) && (this._current_mon == this._todayDate.getMonth()) && (this._current_year == this._todayDate.getFullYear())) ? 'today' : null) }; daysIndex++; /* if at the end of the month : reset counter */ if (daysIndex > nbDaysInMonth ) { daysIndex = 1; switchNextMonth = true; if (this._current_mon + 1 > 11 ) { currentMonth = 0; currentYear += 1; } else { currentMonth += 1; } } } } /* generate days for current date */ for ( var i = 0; i < 6; i++ ) { var tr = new Element('tr'); for ( var j = 0; j < 7; j++ ) { var h_ij = a_d[i][j]; var td = new Element('td'); /* id is : datepicker-day-mon-year or depending on language other way */ /* don't forget to add 1 on month for proper formmatting */ var id = $A([ this._relative, this._df.date_to_string(h_ij["y"], h_ij["m"]+1, h_ij["d"], '-') ]).join('-'); /* set id and classname for cell if exists */ td.setAttribute('id', id); if (h_ij["c"]) td.className = h_ij["c"]; /* on onclick : rebuild date value from id of current cell */ var _curDate = new Date(); _curDate.setFullYear(h_ij["y"], h_ij["m"], h_ij["d"]); if ( this._disablePastDate || this._disableFutureDate ) { if ( this._disablePastDate ) { var _res = ( _curDate >= this._todayDate ) ? true : false; this._bindCellOnClick( td, true, _res, h_ij["c"] ); } if ( this._disableFutureDate ) { var _res = ( this._todayDate.getTime() + this._oneDayInMs > _curDate.getTime() ) ? true : false; this._bindCellOnClick( td, true, _res, h_ij["c"] ); } } else { this._bindCellOnClick( td, false ); } td.innerHTML= h_ij["d"]; tr.appendChild( td ); } tbody.appendChild( tr ); } return tbody; }, /** * _bindCellOnClick : bind the cell onclick depending on status. */ _bindCellOnClick : function ( td, wcompare, compareresult, h_ij_c ) { var doBind = false; if ( wcompare ) { if ( compareresult ) { doBind = true; } else { td.className= ( h_ij_c ) ? 'nclick_outbound' : 'nclick'; } } else { doBind = true; } if ( doBind ) { var _self = this; td.onclick = function () { $(_self._relative).value = String($(this).readAttribute('id') ).replace(_self._relative+'-','').replace(/-/g, _self._df.separator); /* if we have a cellCallback defined call it and pass it the cell */ if (_self._cellCallback) _self._cellCallback(this); _self.close(); }; } }, /** * nextMonth : redraw the calendar content for next month. */ _nextMonthYear : function () { var c_mon = this._current_mon; var c_year = this._current_year; if (c_mon + 1 > 11) { c_mon = 0; c_year += 1; } else { c_mon += 1; } return [ c_mon, c_year ]; }, nextMonth : function () { var a_next = this._nextMonthYear(); var _nextMon = a_next[0]; var _nextYear = a_next[1]; var _curDate = new Date(); _curDate.setFullYear(_nextYear, _nextMon, 1); var _res = ( this._todayDate.getTime() + this._oneDayInMs > _curDate.getTime() ) ? true : false; if ( this._disableFutureDate && !_res ) return; this._current_mon = _nextMon; this._current_year = _nextYear; this._redrawCalendar(); }, /** * prevMonth : redraw the calendar content for previous month. */ _prevMonthYear : function () { var c_mon = this._current_mon; var c_year = this._current_year; if (c_mon - 1 < 0) { c_mon = 11; c_year -= 1; } else { c_mon -= 1; } return [ c_mon, c_year ]; }, prevMonth : function () { var a_prev = this._prevMonthYear(); var _prevMon = a_prev[0]; var _prevYear = a_prev[1]; var _curDate = new Date(); _curDate.setFullYear(_prevYear, _prevMon, 1); var _res = ( _curDate >= this._todayDate ) ? true : false; if ( this._disablePastDate && !_res && (_prevMon!=this._todayDate.getMonth())) return; this._current_mon = _prevMon; this._current_year = _prevYear; this._redrawCalendar(); }, /** * prevYear : redraw the calendar content for prev year. */ _prevYear : function () { var c_mon = this._current_mon; var c_year = (this._current_year - 1); return [ c_mon, c_year ]; }, prevYear : function () { var a_next = this._prevYear(); var _nextMon = a_next[0]; var _nextYear = a_next[1]; var _curDate = new Date(); _curDate.setFullYear(_nextYear, _nextMon, 1); var _res = ( this._todayDate.getTime() + this._oneDayInMs > _curDate.getTime() ) ? true : false; if ( this._disableFutureDate && !_res ) return; this._current_mon = _nextMon; this._current_year = _nextYear; this._redrawCalendar(); }, /** * nextYear : redraw the calendar content for next year. */ _nextYear : function () { var c_mon = this._current_mon; var c_year = (this._current_year + 1); return [ c_mon, c_year ]; }, nextYear : function () { var a_next = this._nextYear(); var _nextMon = a_next[0]; var _nextYear = a_next[1]; var _curDate = new Date(); _curDate.setFullYear(_nextYear, _nextMon, 1); var _res = ( this._todayDate.getTime() + this._oneDayInMs > _curDate.getTime() ) ? true : false; if ( this._disableFutureDate && !_res ) return; this._current_mon = _nextMon; this._current_year = _nextYear; this._redrawCalendar(); }, _redrawCalendar : function () { this._setLocaleHdr(); this._buildCalendar(); }, _setLocaleHdr : function () { /* next link */ var a_next = this._nextMonthYear(); $(this._id_datepicker_next).setAttribute('title', this.getMonthLocale(a_next[0])+' '+a_next[1]); /* prev link */ var a_prev = this._prevMonthYear(); $(this._id_datepicker_prev).setAttribute('title', this.getMonthLocale(a_prev[0])+' '+a_prev[1]); /* year browse */ if ( this._enableYearBrowse ) { var a_next_y = this._nextYear(); $(this._id_datepicker_next_year).setAttribute('title', this.getMonthLocale(a_next_y[0])+' '+a_next_y[1]); var a_prev_y = this._prevYear(); $(this._id_datepicker_prev_year).setAttribute('title', this.getMonthLocale(a_prev_y[0])+' '+a_prev_y[1]); } /* header */ $(this._id_datepicker_hdr).update('   '+this.getMonthLocale(this._current_mon)+' '+this._current_year+'   '); } }; webcit-8.24-dfsg.orig/static/nanotree.js0000644000175000017500000006607612271477123020057 0ustar michaelmichael/** * Original Author of this file: Martin Mouritzen. (martin@nano.dk) * * * (Lack of) Documentation: * * * If a finishedLoading method exists, it will be called when the tree is loaded. * (good to display a div, etc.). * * * You have to set the variable rootNode (as a TreeNode). * * You have to set a container element, this is the element in which the tree will be. * * * TODO: * Save cookies better (only 1 cookie for each tree). Else the page will totally cookieclutter. * *********************************************************************** * Configuration variables. ************************************************************************/ // Should the rootNode be displayed. var showRootNode = true; // Should the dashed lines between nodes be shown. var showLines = true; // Should the nodes be sorted? (You can either specify a number, then it will be sorted by that, else it will // be sorted alphabetically (by name). var sortNodes = true; // This is IMPORTANT... use an unique id for each document you use the tree in. (else they'll get mixed up). var documentID = window.location.href; // being read from cookie. var nodesOpen = new Array(); // RootNode of the tree. var rootNode; // Container to display the Tree in. var container; // Shows/Hides subnodes on startup var showAllNodesOnStartup = false; // Is the roots dragable? var dragable = false; /************************************************************************ * The following is just instancevariables. ************************************************************************/ var href = ''; // rootNodeCallBack name (if null, it's not selectable). var rootNodeCallBack = null; // selectedNode var selectedNode = null; var states = ''; var statearray = new Array(); var treeNodeEdited = null; var editaborted = false; var floatDragElement = null; var colouredElement = null; var draggedNodeID = null; var lastDraggedOnNodeID = null; /** * The TreeNode Object * @param id unique id of this treenode * @param name The title of this node * @param icon The icon if this node (Can also be an array with 2 elements, the first one will represent the closed state, and the next one the open state) * @param param A parameter, this can be pretty much anything. (eg. an array with information). * @param orderNumber an orderNumber If one is given the nodes will be sorted by this (else they'll be sorted alphabetically (If sorting is on). */ function TreeNode(id,name,icon,param,orderNumber) { this.id = id; this.childs = new Array(); this.name = (name == null ? 'unset name' : name); this.icon = (icon == null ? '' : icon); this.parent = null; this.handler = null; this.param = (param == null ? '' : param); this.orderNumber = (orderNumber == null ? -1 : orderNumber); this.openeventlisteners = new Array(); this.editeventlisteners = new Array(); this.moveeventlisteners = new Array(); this.haschilds = false; this.editable = false; this.linestring = ''; this.nextSibling = null; this.prevSibling = null; this.childsHasBeenFetched = false; this.getID = function() { return this.id; } this.setName = function(newname) { this.name = newname; } this.getName = function() { return this.name; } this.getParam = function() { return this.param; } this.setIcon = function(icon) { this.icon = icon; } this.getIcon = function() { if (typeof(this.icon) == 'object') { return this.icon[0]; } return this.icon; } this.getOpenIcon = function() { if (typeof(this.icon) == 'object') { return this.icon[1]; } return this.icon; } this.hasIcon = function () { return this.icon != ''; } this.getOrderNumber = function() { return this.orderNumber; } this.addOpenEventListener = function(event) { this.openeventlisteners[this.openeventlisteners.length] = event; } this.gotOpenEventListeners = function() { return (this.openeventlisteners.length > 0); } this.addEditEventListener = function(event) { this.editeventlisteners[this.editeventlisteners.length] = event; } this.gotEditEventListeners = function() { return (this.editeventlisteners.length > 0); } this.addMoveEventListener = function(event) { this.moveeventlisteners[this.moveeventlisteners.length] = event; } this.gotMoveEventListeners = function() { return (this.moveeventlisteners.length > 0); } this.addChild = function(childNode) { var possiblePrevNode = this.childs[this.childs.length - 1] if (possiblePrevNode) { possiblePrevNode.nextSibling = childNode; childNode.prevSibling = possiblePrevNode; // alert(childNode.prevSibling); } this.childs[this.childs.length] = childNode; childNode.setParent(this); if (sortNodes) { function sortByOrder(a,b) { var order1 = a.getOrderNumber(); var order2 = b.getOrderNumber(); if (order1 == -1 || order2 == -1) { return a.getName().toLowerCase() > b.getName().toLowerCase() ? 1 : -1; } else { if (order1 == order2) { // If they got the same order number, then we'll sort by their title. return a.getName().toLowerCase() > b.getName().toLowerCase() ? 1 : -1; } else { return order1 - order2; } } } this.childs.sort(sortByOrder); } } this.removeChild = function(childNode) { var found = false; for (var i=0;i 0); } this.getChildCount = function() { return this.childs.length; } this.getFirstChild = function() { if (this.hasChilds()) { return this.childs[0]; } return null; } this.gotHandler = function() { return this.handler != null; } this.setHandler = function(handler) { this.handler = handler; } this.getHandler = function() { return this.handler; } this.setParent = function(parent) { this.parent = parent; } this.getParent = function() { return this.parent; } this.getLineString = function() { return this.linestring; } this.setLineString = function(string) { this.linestring = string; } this.isEditable = function() { return this.editable; } this.setEditable = function(editable) { this.editable = editable; } } function getTreeNode(nodeID) { return findNodeWithID(rootNode,nodeID); } function findNodeWithID(node,nodeID) { if (node.getID() == nodeID) { return node; } else { if (node.hasChilds()) { for(var i=0;i'; str += ''; if (rootNode.hasIcon()) { str += ''; } str += ' ' + rootNode.getName() + ''; str += ''; if (rootNode.hasChilds()) { for(i=0;i'; str += ''; for(var y=0;y'; } else if (linestring.charAt(y) == 'B') { str += ''; } } if (treeNode.hasChilds()) { // If this is the first child of the rootNode, and showRootNode is false, we want to display a different icon. if (!showRootNode && (treeNode.getParent() == rootNode) && (treeNode.getParent().getFirstChild() == treeNode)) { if (!lastNode) { str += ''; } else { str += ''; } } else { if (!lastNode) { str += ''; } else { str += ''; } } } else { // If this is the first child of the rootNode, and showRootNode is false, we want to display a different icon. if (!showRootNode && (treeNode.getParent() == rootNode) && (treeNode.getParent().getFirstChild() == treeNode)) { if (!lastNode) { str += ''; } else { str += ''; } } else { if (!lastNode) { str += ''; } else { str += ''; } } } iconStartImage = treeNode.getIcon(); if (state != 'closed') { if (treeNode.hasChilds()) { iconStartImage = treeNode.getOpenIcon(); } } str += ''; str += ' '; str += treeNode.getName(); str += ''; str += ''; str += ''; if (treeNode.hasChilds()) { if (state == 'open') { str += '
'; fireOpenEvent(treeNode); // alert('openevent: ' + treeNode.getName()); } else { str += '
'; } var subgroupstr = ''; var newChar = ''; if (!lastNode) { newChar = 'I'; } else { newChar = 'B'; } for(var z=0;z'; str += '
'; } return str; } /* function mouseMove() { if (dragging) { alert('bob'); } } function mouseUp() { if (dragging) { alert('dropped on something!'); } } */ function startDrag(nodeID) { if (!dragable) { return; } draggedNodeID = nodeID; var srcObj = window.event.srcElement; while(srcObj.tagName != 'DIV') { srcObj = srcObj.parentElement; } floatDragElement = document.createElement('DIV'); floatDragElement.innerHTML = srcObj.innerHTML; floatDragElement.childNodes[0].removeChild(floatDragElement.childNodes[0].childNodes[0]); document.body.appendChild(floatDragElement); floatDragElement.style.zIndex = 100; floatDragElement.style.position = 'absolute'; floatDragElement.style.filter='progid:DXImageTransform.Microsoft.Alpha(1,opacity=60);'; } function findSpanChild(element) { if (element.tagName == 'SPAN') { return element; } else { if (element.childNodes) { for(var i=0;i!'); return; } } findSpanChild(colouredElement).className = 'treetitleselectedfocused'; } function dragLeave() { if (!dragable) { return; } } function endDrag(nodeID) { if (!dragable) { return; } if (lastDraggedOnNodeID != null) { fireMoveEvent(getTreeNode(lastDraggedOnNodeID),draggedNodeID,lastDraggedOnNodeID); } } function dragProceed() { if (!dragable) { return; } var dragged = getTreeNode(draggedNodeID); var newparent = getTreeNode(lastDraggedOnNodeID); var oldparent = dragged.getParent(); oldparent.removeChild(dragged); newparent.addChild(dragged); refreshNode(oldparent); refreshNode(newparent); _dragClean() } function dragCancel() { if (!dragable) { return; } _dragClean() } /** * Don't call this yourself. */ function _dragClean() { if (!dragable) { return; } if (colouredElement) { findSpanChild(colouredElement).className = 'treetitle'; } floatDragElement.parentElement.removeChild(floatDragElement); floatDragElement = null; colouredElement = null; draggedNodeID = null; lastDraggedOnNodeID = null; } function dragMove() { if (!dragable) { return; } floatDragElement.style.top = window.event.clientY; floatDragElement.style.left = window.event.clientX; } function editEnded() { if (treeNodeEdited != null) { // treeNodeEdited.getID(); var editTitle = document.getElementById('title' + treeNodeEdited.getID()); var input = editTitle.childNodes[0]; var newValue = input.value; if (newValue == treeNodeEdited.getName()) { editTitle.innerHTML = newValue; treeNodeEdited = null; return; } fireEditEvent(treeNodeEdited,newValue); if (!editaborted) { treeNodeEdited.setName(newValue); editTitle.innerHTML = newValue; } treeNodeEdited = null; } } function selectNode(nodeID) { var treeNode = getTreeNode(nodeID); if (selectedNode != null) { if (selectedNode == nodeID) { if (treeNode.isEditable()) { if (treeNodeEdited == treeNode) { return; } treeNodeEdited = treeNode; var editTitle = document.getElementById('title' + treeNode.getID()); editTitle.className = 'editednode'; editTitle.innerHTML = ''; var input = editTitle.childNodes[0]; input.value = treeNode.getName(); input.focus(); input.select(); input.onblur = editEnded; } return; } if (treeNodeEdited != null) { editEnded(); } var oldNodeTitle = document.getElementById('title' + selectedNode); oldNodeTitle.className = 'treetitle'; } selectedNode = nodeID; var nodetitle = document.getElementById('title' + selectedNode); nodetitle.className = 'treetitleselectedfocused'; if (treeNode.gotHandler()) { eval(treeNode.getHandler() + '(getTreeNode(' + nodeID + '));'); } else { standardClick(treeNode); } } function refreshNode(treeNode) { var submenu = document.getElementById('node' + treeNode.getID() + 'sub'); var str = ''; for(var i=0;i'; } else { actionimage.outerHTML = ''; } } } submenu.innerHTML = str; } function handleNode(nodeID) { var treeNode = getTreeNode(nodeID); if (!treeNode.hasChilds()) { // No reason to handle a node without childs. return; } var submenu = document.getElementById('node' + nodeID + 'sub'); var iconimageholder = document.getElementById('iconimage' + nodeID); var actionimage = document.getElementById('handler' + nodeID); // This will be used if showRootNode is set to false. var firstChildOfRoot = false; if (actionimage.src.indexOf('_no_root') != -1) { firstChildOfRoot = true; } if (submenu.style.display == 'none') { writeStates(nodeID,'open'); fireOpenEvent(treeNode); submenu.style.display = 'block'; iconimageholder.src = treeNode.getOpenIcon(); if (actionimage.src.indexOf('last') == -1) { actionimage.src = href + 'static/' + ((firstChildOfRoot) ? 'minus_no_root' : (showLines ? 'minus' : 'minus_nolines')) + '.gif'; } else { actionimage.src = href + 'static/' + ((firstChildOfRoot) ? 'minus_last_no_root' : (showLines ? 'minus_last' : 'minus_nolines')) + '.gif'; } } else { writeStates(nodeID,'closed'); submenu.style.display = 'none'; iconimageholder.src = treeNode.getIcon(); if (actionimage.src.indexOf('last') == -1) { actionimage.src = href + 'static/' + ((firstChildOfRoot) ? 'plus_no_root' : (showLines ? 'plus' : 'plus_nolines')) + '.gif'; } else { actionimage.src = href + 'static/' + ((firstChildOfRoot) ? 'plus_last_no_root' : (showLines ? 'plus_last' : 'plus_nolines')) + '.gif'; } } } function fireOpenEvent(treeNode) { if (treeNode.gotOpenEventListeners()) { for(var i=0;i 2) ? argv[2] : null; var path = (argc > 3) ? argv[3] : null; var domain = (argc > 4) ? argv[4] : null; var secure = (argc > 5) ? argv[5] : false; document.cookie = name + "=" + escape (value) + ((expires == null) ? "" : ("; expires=" + expires.toGMTString())) + ((path == null) ? "" : ("; path=" + path)) + ((domain == null) ? "" : ("; domain=" + domain)) + ((secure == true) ? "; secure" : ""); } function expandNode() { var state = getState(selectedNode); if (state == 'open') { var currentTreeNode = getTreeNode(selectedNode); if (currentTreeNode.hasChilds()) { selectNode(currentTreeNode.childs[0].getID()); } } else { handleNode(selectedNode); } } function subtractNode() { var state = getState(selectedNode); if (state == 'closed') { var currentTreeNode = getTreeNode(selectedNode); var parent = currentTreeNode.getParent(); if (parent != null && parent != rootNode) { selectNode(parent.getID()); } } else { handleNode(selectedNode); } } function selectPrevNode() { var currentTreeNode = getTreeNode(selectedNode); if (currentTreeNode.prevSibling != null) { var state = getState(currentTreeNode.prevSibling.getID()); if (state == 'open' && currentTreeNode.prevSibling.hasChilds()) { // We have to find the last open child of the previoussiblings childs. var current = currentTreeNode.prevSibling.childs[currentTreeNode.prevSibling.childs.length - 1]; var currentstate = 'open'; while (current.hasChilds() && (getState(current.getID()) == 'open')) { current = current.childs[current.childs.length - 1]; } selectNode(current.getID()); } else { selectNode(currentTreeNode.prevSibling.getID()); } } else { if (currentTreeNode.getParent() != null && currentTreeNode.getParent() != rootNode) { selectNode(currentTreeNode.getParent().getID()); } } } function selectNextNode() { var currentTreeNode = getTreeNode(selectedNode); var state = getState(selectedNode); if (state == 'open' && currentTreeNode.hasChilds()) { selectNode(currentTreeNode.childs[0].getID()); } else { if (currentTreeNode.nextSibling != null) { selectNode(currentTreeNode.nextSibling.getID()); } else { // Continue up the tree until we either hit null, or a parent which have a child. var parent = currentTreeNode; while ((parent = parent.getParent()) != rootNode) { if (parent.nextSibling != null) { selectNode(parent.nextSibling.getID()); break; } } /* if (currentTreeNode.getParent().nextSibling != null) { selectNode(currentTreeNode.getParent().nextSibling.getID()); } */ } } } function keyDown(event) { if (window.event) { event = window.event; } if (event.keyCode == 38) { // Up selectPrevNode(); return false; } else if (event.keyCode == 40) { // Down selectNextNode(); return false; } else if (event.keyCode == 37) { // left subtractNode(); return false; } else if (event.keyCode == 39) { // right expandNode(); return false; } } document.onkeydown = keyDown; webcit-8.24-dfsg.orig/static/edit.gif0000755000175000017500000000022112271477123017301 0ustar michaelmichaelGIF89a :I*0Z0 qq//ˈH B8$'ʥD;webcit-8.24-dfsg.orig/static/unittest.js0000644000175000017500000004736112271477123020117 0ustar michaelmichael// script.aculo.us unittest.js v1.9.0, Thu Dec 23 16:54:48 -0500 2010 // Copyright (c) 2005-2010 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us) // (c) 2005-2010 Jon Tirsen (http://www.tirsen.com) // (c) 2005-2010 Michael Schuerig (http://www.schuerig.de/michael/) // // script.aculo.us is freely distributable under the terms of an MIT-style license. // For details, see the script.aculo.us web site: http://script.aculo.us/ // experimental, Firefox-only Event.simulateMouse = function(element, eventName) { var options = Object.extend({ pointerX: 0, pointerY: 0, buttons: 0, ctrlKey: false, altKey: false, shiftKey: false, metaKey: false }, arguments[2] || {}); var oEvent = document.createEvent("MouseEvents"); oEvent.initMouseEvent(eventName, true, true, document.defaultView, options.buttons, options.pointerX, options.pointerY, options.pointerX, options.pointerY, options.ctrlKey, options.altKey, options.shiftKey, options.metaKey, 0, $(element)); if(this.mark) Element.remove(this.mark); this.mark = document.createElement('div'); this.mark.appendChild(document.createTextNode(" ")); document.body.appendChild(this.mark); this.mark.style.position = 'absolute'; this.mark.style.top = options.pointerY + "px"; this.mark.style.left = options.pointerX + "px"; this.mark.style.width = "5px"; this.mark.style.height = "5px;"; this.mark.style.borderTop = "1px solid red;"; this.mark.style.borderLeft = "1px solid red;"; if(this.step) alert('['+new Date().getTime().toString()+'] '+eventName+'/'+Test.Unit.inspect(options)); $(element).dispatchEvent(oEvent); }; // Note: Due to a fix in Firefox 1.0.5/6 that probably fixed "too much", this doesn't work in 1.0.6 or DP2. // You need to downgrade to 1.0.4 for now to get this working // See https://bugzilla.mozilla.org/show_bug.cgi?id=289940 for the fix that fixed too much Event.simulateKey = function(element, eventName) { var options = Object.extend({ ctrlKey: false, altKey: false, shiftKey: false, metaKey: false, keyCode: 0, charCode: 0 }, arguments[2] || {}); var oEvent = document.createEvent("KeyEvents"); oEvent.initKeyEvent(eventName, true, true, window, options.ctrlKey, options.altKey, options.shiftKey, options.metaKey, options.keyCode, options.charCode ); $(element).dispatchEvent(oEvent); }; Event.simulateKeys = function(element, command) { for(var i=0; i' + 'StatusTestMessage' + '' + ''; this.logsummary = $('logsummary'); this.loglines = $('loglines'); }, _toHTML: function(txt) { return txt.escapeHTML().replace(/\n/g,"
"); }, addLinksToResults: function(){ $$("tr.failed .nameCell").each( function(td){ // todo: limit to children of this.log td.title = "Run only this test"; Event.observe(td, 'click', function(){ window.location.search = "?tests=" + td.innerHTML;}); }); $$("tr.passed .nameCell").each( function(td){ // todo: limit to children of this.log td.title = "Run all tests"; Event.observe(td, 'click', function(){ window.location.search = "";}); }); } }; Test.Unit.Runner = Class.create(); Test.Unit.Runner.prototype = { initialize: function(testcases) { this.options = Object.extend({ testLog: 'testlog' }, arguments[1] || {}); this.options.resultsURL = this.parseResultsURLQueryParameter(); this.options.tests = this.parseTestsQueryParameter(); if (this.options.testLog) { this.options.testLog = $(this.options.testLog) || null; } if(this.options.tests) { this.tests = []; for(var i = 0; i < this.options.tests.length; i++) { if(/^test/.test(this.options.tests[i])) { this.tests.push(new Test.Unit.Testcase(this.options.tests[i], testcases[this.options.tests[i]], testcases["setup"], testcases["teardown"])); } } } else { if (this.options.test) { this.tests = [new Test.Unit.Testcase(this.options.test, testcases[this.options.test], testcases["setup"], testcases["teardown"])]; } else { this.tests = []; for(var testcase in testcases) { if(/^test/.test(testcase)) { this.tests.push( new Test.Unit.Testcase( this.options.context ? ' -> ' + this.options.titles[testcase] : testcase, testcases[testcase], testcases["setup"], testcases["teardown"] )); } } } } this.currentTest = 0; this.logger = new Test.Unit.Logger(this.options.testLog); setTimeout(this.runTests.bind(this), 1000); }, parseResultsURLQueryParameter: function() { return window.location.search.parseQuery()["resultsURL"]; }, parseTestsQueryParameter: function(){ if (window.location.search.parseQuery()["tests"]){ return window.location.search.parseQuery()["tests"].split(','); }; }, // Returns: // "ERROR" if there was an error, // "FAILURE" if there was a failure, or // "SUCCESS" if there was neither getResult: function() { var hasFailure = false; for(var i=0;i 0) { return "ERROR"; } if (this.tests[i].failures > 0) { hasFailure = true; } } if (hasFailure) { return "FAILURE"; } else { return "SUCCESS"; } }, postResults: function() { if (this.options.resultsURL) { new Ajax.Request(this.options.resultsURL, { method: 'get', parameters: 'result=' + this.getResult(), asynchronous: false }); } }, runTests: function() { var test = this.tests[this.currentTest]; if (!test) { // finished! this.postResults(); this.logger.summary(this.summary()); return; } if(!test.isWaiting) { this.logger.start(test.name); } test.run(); if(test.isWaiting) { this.logger.message("Waiting for " + test.timeToWait + "ms"); setTimeout(this.runTests.bind(this), test.timeToWait || 1000); } else { this.logger.finish(test.status(), test.summary()); this.currentTest++; // tail recursive, hopefully the browser will skip the stackframe this.runTests(); } }, summary: function() { var assertions = 0; var failures = 0; var errors = 0; var messages = []; for(var i=0;i 0) return 'failed'; if (this.errors > 0) return 'error'; return 'passed'; }, assert: function(expression) { var message = arguments[1] || 'assert: got "' + Test.Unit.inspect(expression) + '"'; try { expression ? this.pass() : this.fail(message); } catch(e) { this.error(e); } }, assertEqual: function(expected, actual) { var message = arguments[2] || "assertEqual"; try { (expected == actual) ? this.pass() : this.fail(message + ': expected "' + Test.Unit.inspect(expected) + '", actual "' + Test.Unit.inspect(actual) + '"'); } catch(e) { this.error(e); } }, assertInspect: function(expected, actual) { var message = arguments[2] || "assertInspect"; try { (expected == actual.inspect()) ? this.pass() : this.fail(message + ': expected "' + Test.Unit.inspect(expected) + '", actual "' + Test.Unit.inspect(actual) + '"'); } catch(e) { this.error(e); } }, assertEnumEqual: function(expected, actual) { var message = arguments[2] || "assertEnumEqual"; try { $A(expected).length == $A(actual).length && expected.zip(actual).all(function(pair) { return pair[0] == pair[1] }) ? this.pass() : this.fail(message + ': expected ' + Test.Unit.inspect(expected) + ', actual ' + Test.Unit.inspect(actual)); } catch(e) { this.error(e); } }, assertNotEqual: function(expected, actual) { var message = arguments[2] || "assertNotEqual"; try { (expected != actual) ? this.pass() : this.fail(message + ': got "' + Test.Unit.inspect(actual) + '"'); } catch(e) { this.error(e); } }, assertIdentical: function(expected, actual) { var message = arguments[2] || "assertIdentical"; try { (expected === actual) ? this.pass() : this.fail(message + ': expected "' + Test.Unit.inspect(expected) + '", actual "' + Test.Unit.inspect(actual) + '"'); } catch(e) { this.error(e); } }, assertNotIdentical: function(expected, actual) { var message = arguments[2] || "assertNotIdentical"; try { !(expected === actual) ? this.pass() : this.fail(message + ': expected "' + Test.Unit.inspect(expected) + '", actual "' + Test.Unit.inspect(actual) + '"'); } catch(e) { this.error(e); } }, assertNull: function(obj) { var message = arguments[1] || 'assertNull'; try { (obj==null) ? this.pass() : this.fail(message + ': got "' + Test.Unit.inspect(obj) + '"'); } catch(e) { this.error(e); } }, assertMatch: function(expected, actual) { var message = arguments[2] || 'assertMatch'; var regex = new RegExp(expected); try { (regex.exec(actual)) ? this.pass() : this.fail(message + ' : regex: "' + Test.Unit.inspect(expected) + ' did not match: ' + Test.Unit.inspect(actual) + '"'); } catch(e) { this.error(e); } }, assertHidden: function(element) { var message = arguments[1] || 'assertHidden'; this.assertEqual("none", element.style.display, message); }, assertNotNull: function(object) { var message = arguments[1] || 'assertNotNull'; this.assert(object != null, message); }, assertType: function(expected, actual) { var message = arguments[2] || 'assertType'; try { (actual.constructor == expected) ? this.pass() : this.fail(message + ': expected "' + Test.Unit.inspect(expected) + '", actual "' + (actual.constructor) + '"'); } catch(e) { this.error(e); } }, assertNotOfType: function(expected, actual) { var message = arguments[2] || 'assertNotOfType'; try { (actual.constructor != expected) ? this.pass() : this.fail(message + ': expected "' + Test.Unit.inspect(expected) + '", actual "' + (actual.constructor) + '"'); } catch(e) { this.error(e); } }, assertInstanceOf: function(expected, actual) { var message = arguments[2] || 'assertInstanceOf'; try { (actual instanceof expected) ? this.pass() : this.fail(message + ": object was not an instance of the expected type"); } catch(e) { this.error(e); } }, assertNotInstanceOf: function(expected, actual) { var message = arguments[2] || 'assertNotInstanceOf'; try { !(actual instanceof expected) ? this.pass() : this.fail(message + ": object was an instance of the not expected type"); } catch(e) { this.error(e); } }, assertRespondsTo: function(method, obj) { var message = arguments[2] || 'assertRespondsTo'; try { (obj[method] && typeof obj[method] == 'function') ? this.pass() : this.fail(message + ": object doesn't respond to [" + method + "]"); } catch(e) { this.error(e); } }, assertReturnsTrue: function(method, obj) { var message = arguments[2] || 'assertReturnsTrue'; try { var m = obj[method]; if(!m) m = obj['is'+method.charAt(0).toUpperCase()+method.slice(1)]; m() ? this.pass() : this.fail(message + ": method returned false"); } catch(e) { this.error(e); } }, assertReturnsFalse: function(method, obj) { var message = arguments[2] || 'assertReturnsFalse'; try { var m = obj[method]; if(!m) m = obj['is'+method.charAt(0).toUpperCase()+method.slice(1)]; !m() ? this.pass() : this.fail(message + ": method returned true"); } catch(e) { this.error(e); } }, assertRaise: function(exceptionName, method) { var message = arguments[2] || 'assertRaise'; try { method(); this.fail(message + ": exception expected but none was raised"); } catch(e) { ((exceptionName == null) || (e.name==exceptionName)) ? this.pass() : this.error(e); } }, assertElementsMatch: function() { var expressions = $A(arguments), elements = $A(expressions.shift()); if (elements.length != expressions.length) { this.fail('assertElementsMatch: size mismatch: ' + elements.length + ' elements, ' + expressions.length + ' expressions'); return false; } elements.zip(expressions).all(function(pair, index) { var element = $(pair.first()), expression = pair.last(); if (element.match(expression)) return true; this.fail('assertElementsMatch: (in index ' + index + ') expected ' + expression.inspect() + ' but got ' + element.inspect()); }.bind(this)) && this.pass(); }, assertElementMatches: function(element, expression) { this.assertElementsMatch([element], expression); }, benchmark: function(operation, iterations) { var startAt = new Date(); (iterations || 1).times(operation); var timeTaken = ((new Date())-startAt); this.info((arguments[2] || 'Operation') + ' finished ' + iterations + ' iterations in ' + (timeTaken/1000)+'s' ); return timeTaken; }, _isVisible: function(element) { element = $(element); if(!element.parentNode) return true; this.assertNotNull(element); if(element.style && Element.getStyle(element, 'display') == 'none') return false; return this._isVisible(element.parentNode); }, assertNotVisible: function(element) { this.assert(!this._isVisible(element), Test.Unit.inspect(element) + " was not hidden and didn't have a hidden parent either. " + ("" || arguments[1])); }, assertVisible: function(element) { this.assert(this._isVisible(element), Test.Unit.inspect(element) + " was not visible. " + ("" || arguments[1])); }, benchmark: function(operation, iterations) { var startAt = new Date(); (iterations || 1).times(operation); var timeTaken = ((new Date())-startAt); this.info((arguments[2] || 'Operation') + ' finished ' + iterations + ' iterations in ' + (timeTaken/1000)+'s' ); return timeTaken; } }; Test.Unit.Testcase = Class.create(); Object.extend(Object.extend(Test.Unit.Testcase.prototype, Test.Unit.Assertions.prototype), { initialize: function(name, test, setup, teardown) { Test.Unit.Assertions.prototype.initialize.bind(this)(); this.name = name; if(typeof test == 'string') { test = test.gsub(/(\.should[^\(]+\()/,'#{0}this,'); test = test.gsub(/(\.should[^\(]+)\(this,\)/,'#{1}(this)'); this.test = function() { eval('with(this){'+test+'}'); } } else { this.test = test || function() {}; } this.setup = setup || function() {}; this.teardown = teardown || function() {}; this.isWaiting = false; this.timeToWait = 1000; }, wait: function(time, nextPart) { this.isWaiting = true; this.test = nextPart; this.timeToWait = time; }, run: function() { try { try { if (!this.isWaiting) this.setup.bind(this)(); this.isWaiting = false; this.test.bind(this)(); } finally { if(!this.isWaiting) { this.teardown.bind(this)(); } } } catch(e) { this.error(e); } } }); // *EXPERIMENTAL* BDD-style testing to please non-technical folk // This draws many ideas from RSpec http://rspec.rubyforge.org/ Test.setupBDDExtensionMethods = function(){ var METHODMAP = { shouldEqual: 'assertEqual', shouldNotEqual: 'assertNotEqual', shouldEqualEnum: 'assertEnumEqual', shouldBeA: 'assertType', shouldNotBeA: 'assertNotOfType', shouldBeAn: 'assertType', shouldNotBeAn: 'assertNotOfType', shouldBeNull: 'assertNull', shouldNotBeNull: 'assertNotNull', shouldBe: 'assertReturnsTrue', shouldNotBe: 'assertReturnsFalse', shouldRespondTo: 'assertRespondsTo' }; var makeAssertion = function(assertion, args, object) { this[assertion].apply(this,(args || []).concat([object])); }; Test.BDDMethods = {}; $H(METHODMAP).each(function(pair) { Test.BDDMethods[pair.key] = function() { var args = $A(arguments); var scope = args.shift(); makeAssertion.apply(scope, [pair.value, args, this]); }; }); [Array.prototype, String.prototype, Number.prototype, Boolean.prototype].each( function(p){ Object.extend(p, Test.BDDMethods) } ); }; Test.context = function(name, spec, log){ Test.setupBDDExtensionMethods(); var compiledSpec = {}; var titles = {}; for(specName in spec) { switch(specName){ case "setup": case "teardown": compiledSpec[specName] = spec[specName]; break; default: var testName = 'test'+specName.gsub(/\s+/,'-').camelize(); var body = spec[specName].toString().split('\n').slice(1); if(/^\{/.test(body[0])) body = body.slice(1); body.pop(); body = body.map(function(statement){ return statement.strip() }); compiledSpec[testName] = body.join('\n'); titles[testName] = specName; } } new Test.Unit.Runner(compiledSpec, { titles: titles, testLog: log || 'testlog', context: name }); }; webcit-8.24-dfsg.orig/static/table.js0000644000175000017500000000633112271477123017317 0ustar michaelmichaelvar categories; /** * Task view table sorter * Written by Mathew McBride * Copyright 2009 The Citadel Team * Licensed under the GPL V3 */ function gatherCategoriesFromTable() { var tbody = document.getElementById("taskview"); var childNodes = tbody.childNodes; for (i=0; i<=childNodes.length; i++) { var child = childNodes[i]; // Should be TR if (child != undefined && child.nodeName == "TR") { var childTds = child.getElementsByTagName("TD"); if (childTds.length == 4) { var categoryTd = childTds[3]; if (categoryTd != undefined) { // Get text child if (categoryTd.childNodes.length > 0 && categoryTd.childNodes[0].nodeType == 3) { categories[categoryTd.childNodes[0].nodeValue] = categoryTd.childNodes[0].nodeValue; } } } } } } function addCategoriesToSelector() { var selector = document.getElementById("selectcategory"); for (description in categories) { var newOptionElement = document.createElement("option"); newOptionElement.setAttribute("value", categories[description]); var text = document.createTextNode(categories[description]); newOptionElement.appendChild(text); selector.appendChild(newOptionElement); } } function filterCategories(event) { hideAllExistingRows(); var selector = document.getElementById("selectcategory"); var selected = selector.selectedIndex; var selectedCategory = selector.options[selected]; var tbody = document.getElementById("taskview"); var cat = selectedCategory.getAttribute("value"); var nodesToUnhide = new Array(); var curIndex = 0; // Hunt down all the rows with this category using XPath if (document.evaluate) { // Only if we can do so, of course var debugText = ""; var toEvaluate = null; if (cat != 'showall') { toEvaluate = "//tr[td='"+cat+"']"; } else { toEvaluate = "//tr[td]"; } var trNodes = document.evaluate(toEvaluate, document, null, XPathResult.ANY_TYPE, null); var trNode = trNodes.iterateNext(); while(trNode) { debugText += "
"+trNode.nodeName; nodesToUnhide[curIndex++] = trNode; trNode = trNodes.iterateNext(); } } for (i=0;iCD>CD>CD>ӕnӕnӕnӕnӕnӕnӕnCD>CD>CD>CD>CD>xXԖpԖp՚tԚtϖqϖpϖqԚt՚tԖpԖpxXCD>CD>ԗr՘sٟyםv֛tt[gVGs[֛tםvٟy՘sԗrCD>CD>ՙtޥЙujÑoaTF^REaTFÑojЙuݦՙtCD>֛vܥ䪂lggq[VMCq[ggl䪂ܥ֛v֝y籌鬅ȗthl檂鬃檂lhȗu鬅籌֝yן{𼒐u_HF?p\믆믆r]HF?t^ן{ء™GG@CD>GG@GG@CD>GG@™ءؠ~٢ƟwbCD>r^𴊋r^CD>wbƟ٢ڤş˜͠}mx񺓹um͠}˜şڤڦ㴓ͦá§rsn§~ͦ㴓ڦCD>ۨȥֿƯƯжǤۨCD>CD>ܪݫ¶¶еݫܪCD>CD>ܫݭƭܫܫCD>CD>CD>ݬݬݬݬݬݬݬCD>CD>??webcit-8.24-dfsg.orig/static/styles/0000755000175000017500000000000012271477123017212 5ustar michaelmichaelwebcit-8.24-dfsg.orig/static/styles/fineuploader.css0000644000175000017500000001155012271477123022403 0ustar michaelmichael/*! * Fine Uploader * * Copyright 2013, Widen Enterprises, Inc. info@fineuploader.com * * Version: 4.2.1 * * Homepage: http://fineuploader.com * * Repository: git://github.com/Widen/fine-uploader.git * * Licensed under GNU GPL v3, see LICENSE */ .qq-uploader { position: relative; width: 100%; } .qq-upload-button { display: block; width: 105px; padding: 7px 0; text-align: center; background: #880000; border-bottom: 1px solid #DDD; color: #FFF; } .qq-upload-button-hover { background: #CC0000; } .qq-upload-button-focus { outline: 1px dotted #000000; } .qq-upload-drop-area, .qq-upload-extra-drop-area { position: absolute; top: 0; left: 0; width: 100%; height: 100%; min-height: 30px; z-index: 2; background: #FF9797; text-align: center; } .qq-upload-drop-area span { display: block; position: absolute; top: 50%; width: 100%; margin-top: -8px; font-size: 16px; } .qq-upload-extra-drop-area { position: relative; margin-top: 50px; font-size: 16px; padding-top: 30px; height: 20px; min-height: 40px; } .qq-upload-drop-area-active { background: #FF7171; } .qq-upload-list { margin: 0; padding: 0; list-style: none; } .qq-upload-list li { margin: 0; padding: 9px; line-height: 15px; font-size: 16px; background-color: #FFF0BD; } .qq-upload-file, .qq-upload-spinner, .qq-upload-size, .qq-upload-cancel, .qq-upload-retry, .qq-upload-failed-text, .qq-upload-delete, .qq-upload-pause, .qq-upload-continue { margin-right: 12px; display: inline; } .qq-upload-file { } .qq-upload-spinner { display: inline-block; background: url("loading.gif"); width: 15px; height: 15px; vertical-align: text-bottom; } .qq-drop-processing { display: block; } .qq-drop-processing-spinner { display: inline-block; background: url("processing.gif"); width: 24px; height: 24px; vertical-align: text-bottom; } .qq-upload-delete, .qq-upload-pause, .qq-upload-continue { display: inline; } .qq-upload-retry, .qq-upload-delete, .qq-upload-cancel, .qq-upload-pause, .qq-upload-continue { color: #000000; } .qq-upload-retryable .qq-upload-retry { display: inline; } .qq-upload-size, .qq-upload-cancel, .qq-upload-retry, .qq-upload-delete, .qq-upload-pause, .qq-upload-continue { font-size: 12px; font-weight: normal; } .qq-upload-failed-text { display: none; font-style: italic; font-weight: bold; } .qq-upload-failed-icon { display:none; width:15px; height:15px; vertical-align:text-bottom; } .qq-upload-fail .qq-upload-failed-text { display: inline; } .qq-upload-retrying .qq-upload-failed-text { display: inline; color: #D60000; } .qq-upload-list li.qq-upload-success { background-color: #5DA30C; color: #FFFFFF; } .qq-upload-list li.qq-upload-fail { background-color: #D60000; color: #FFFFFF; } .qq-progress-bar { display: block; background: -moz-linear-gradient(top, rgba(30,87,153,1) 0%, rgba(41,137,216,1) 50%, rgba(32,124,202,1) 51%, rgba(125,185,232,1) 100%); /* FF3.6+ */ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(30,87,153,1)), color-stop(50%,rgba(41,137,216,1)), color-stop(51%,rgba(32,124,202,1)), color-stop(100%,rgba(125,185,232,1))); /* Chrome,Safari4+ */ background: -webkit-linear-gradient(top, rgba(30,87,153,1) 0%,rgba(41,137,216,1) 50%,rgba(32,124,202,1) 51%,rgba(125,185,232,1) 100%); /* Chrome10+,Safari5.1+ */ background: -o-linear-gradient(top, rgba(30,87,153,1) 0%,rgba(41,137,216,1) 50%,rgba(32,124,202,1) 51%,rgba(125,185,232,1) 100%); /* Opera 11.10+ */ background: -ms-linear-gradient(top, rgba(30,87,153,1) 0%,rgba(41,137,216,1) 50%,rgba(32,124,202,1) 51%,rgba(125,185,232,1) 100%); /* IE10+ */ background: linear-gradient(to bottom, rgba(30,87,153,1) 0%,rgba(41,137,216,1) 50%,rgba(32,124,202,1) 51%,rgba(125,185,232,1) 100%); /* W3C */ width: 0%; height: 15px; border-radius: 6px; margin-bottom: 3px; } INPUT.qq-edit-filename { position: absolute; opacity: 0; filter: alpha(opacity=0); z-index: -1; -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; } .qq-upload-file.qq-editable { cursor: pointer; } .qq-edit-filename-icon.qq-editable { display: inline-block; cursor: pointer; } INPUT.qq-edit-filename.qq-editing { position: static; margin-top: -5px; margin-right: 10px; margin-bottom: -5px; opacity: 1; filter: alpha(opacity=100); -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"; } .qq-edit-filename-icon { display: none; background: url("edit.gif"); width: 15px; height: 15px; vertical-align: text-bottom; margin-right: 5px; } INPUT.qq-edit-filename.qq-editing ~ .qq-upload-cancel { display: none; } .qq-hide { display: none; } /*! 2014-01-19 */ webcit-8.24-dfsg.orig/static/styles/navbar.css0000644000175000017500000000152112271477123021174 0ustar michaelmichael#navbar { font-size: 70%; font-weight: bold; height: 2em; position: absolute; bottom: 0; width: 100%; background-color: #7D858C; border-top: 2px solid #424b52; color: #FFF; } #navbar ul, .selector_top, .selector_bottom { width: 100%; margin: 0 auto 0 auto; white-space: nowrap; text-align: center; vertical-align: middle; } #navbar ul li { display: inline; list-style: none; vertical-align: middle; padding: 0 0.2em; } #navbar ul li a { padding: 0.3em; display: inline-block; white-space: nowrap; } #navbar ul li a:hover { padding: 0.3em; background-color: #5c646b; border: 0px solid #5c646b; border-radius: 5px; -webkit-border-radius: 5px; -moz-border-radius: 5px; } #navbar ul li img { float: none; margin: 0 2px; } #navbar ul li a img { vertical-align: middle; border: none; } webcit-8.24-dfsg.orig/static/styles/box.css0000644000175000017500000000142612271477123020517 0ustar michaelmichael.box { background-color: transparent; width: 100%; padding: 0; margin: 0; } #content .box { text-align: center; } .boxlabel, .boxcontent { margin: 0 } #content .boxlabel, #global .boxlabel { padding: 0; width: 100%; text-align: center; } .boxlabel { background-color: #5C646B; color: #FEFFFC; font-weight: 700; text-align: center; padding: 0; border-radius: 8px 8px 0 0; -webkit-border-radius: 8px 8px 0 0; -moz-border-radius: 8px 8px 0 0; } .boxcontent { text-align: left; padding: 5px; background-color: #FEFFFC; color: #000; border: 2px solid #5C646B; border-radius: 0 0 8px 8px; -webkit-border-radius: 0 0 8px 8px; -moz-border-radius: 0 0 8px 8px; -webkit-box-shadow: #666 0px 1px 2px; -moz-box-shadow: #666 0px 2px 3px; box-shadow: #666 0px 2px 3px; } webcit-8.24-dfsg.orig/static/styles/service.css0000644000175000017500000000205012271477123021361 0ustar michaelmichael.service {} .service .edit_col, .service .host_col { display: none } .bio table { margin-top: 0.5em; padding: 0 0.5em; width: 95%; font-family: monospace; background-color: #fff; border: 1px solid #5C646B; -webkit-box-shadow: #666 0px 1px 2px; -moz-box-shadow: #666 0px 2px 3px; box-shadow: #666 0px 2px 3px; behavior: url(/static/styles/PIE.htc); } .bio table table { border: 0; padding: 0; margin: 0.5em 0; box-shadow: none; -moz-box-shadow: none; -webkit-box-shadow: none; } .bio table table img { max-width: 250px; padding: 0.2em; background-color: #f0feff; border: 1px solid #5C646B; box-shadow: none; -moz-box-shadow: none; -webkit-box-shadow: none; } .bio h1 { float: right; } .who_is_online tr { height: 1.5em; padding: 0; margin: 0; } .who_is_online td { padding: 0 0.3em; } .who_is_online td img { border: none; margin: 0 auto; } .who_is_online .edit_col {} .who_is_online .host_col { font-family: monospace; font-size: 90%; } div#who_inner th.host_col { font-family: sans-serif; font-size: 100%; } webcit-8.24-dfsg.orig/static/styles/rte.css0000644000175000017500000000110212271477123020510 0ustar michaelmichael/* * Copyright 2005 - 2009 The Citadel Team * Licensed under the GPL V3 */ .rteImage { background: #D3D3D3; border: 1px solid #D3D3D3; cursor: pointer; cursor: hand; } .rteImageRaised { background: #D3D3D3; border: 1px outset; cursor: pointer; cursor: hand; } .rteImageLowered { background: #D3D3D3; border: 1px inset; cursor: pointer; cursor: hand; } .rteVertSep { margin: 0 4px 0 4px; } .rteBack { background: #D3D3D3; border: 1px outset; letter-spacing: 0; padding: 2px; } .rteBack tbody tr td, .rteBack tr td { background: #D3D3D3; padding: 0; } webcit-8.24-dfsg.orig/static/styles/modal.css0000644000175000017500000000215412271477123021022 0ustar michaelmichael.md-overlay-decorator { background: #222; height: 100%; width: 100%; position: absolute; top:0; left:0; opacity:0.8; z-index:2000; *display:none; } .md-overlay-wrap { height:100%; width:100%; display:block; position:absolute; top:0; left:0; z-index:2001; overflow:auto; *overflow-x:hidden; *zoom:1; /* (0.8 * 255).toString(16) = cc */ *filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#cc222222,endColorstr=#cc222222); *background:transparent url(../pixel.gif); } .md-overlay { z-index:2001; position:relative; margin:0 auto; display:table; height:100%; vertical-align:middle; width:80%; z-index:9999; *width:100%; *text-align:center; *position:static; *display:block; } .md-dialog-wrap { display:table-cell; vertical-align:middle; *width:80%; *text-align:left; *zoom:1; *display:inline; } .md-dialog-decorator { display:none; *vertical-align:middle; *zoom:1; *display:inline; *height:100%; *width:0; *background:#022750; } #modal { display:none; } .modal #modal { display:block; } .md-dialog { background: white; border: 2px solid #022750; padding: 10px; } webcit-8.24-dfsg.orig/static/styles/blog.css0000644000175000017500000000221712271477123020651 0ustar michaelmichael.blog_post { margin: 0.5em; width: 38em; } .blog_post hr { margin: 1em 0.25em; padding: 0 0.25em; border: 1px dotted #5C646B; } .blog_post_title a:link, .blog_post_title a:visited, .blog_post_title a:active { font-size: 150%; font-weight: bold; color: #000; } .blog_post_title a:hover { color: #0E73E3; } .blog_post_header a:link, .blog_comment_header a:link { font-style: italic; color: #000; } .blog_post_header { margin: 0 1em; /* adjust with .blog_show_comments_link */ font-size: smaller; } .blog_post_content, .blog_comment_content { font-family: serif; font-size: 90%; } a.blog_show_comments_link:link, a.blog_show_comments_link:active, a.blog_show_comments_link:visited { margin-left: 1em; color: #000; font-size: smaller; } .blog_permalink_link { font-size: smaller; } .blog_comment { margin: 0.5em; padding: 0.5em 0.25em 0.25em; width: 35em; border-top: 1px dotted grey; background-color: #EDEDE0; } .blog_comment_header { font-size: smaller; } .blog_comment_date {float:right} .blog_comment_content { margin: 0.25em; } .post_a_comment_title { font-size: 120%; } webcit-8.24-dfsg.orig/static/styles/banner.css0000644000175000017500000000451612271477123021177 0ustar michaelmichael#banner { background: #4D555C; background: -webkit-gradient(linear, 0 0, 0 bottom, from(#4D555C), to(#7D858C)); background: -moz-linear-gradient(#4D555C, #7D858C); background: linear-gradient(#4D555C, #7D858C); -pie-background: linear-gradient(#4D555C, #7D858C); behavior: url(/static/styles/PIE.htc); border-bottom: 2px solid #424b52; color: #f0feff; margin: 0; padding: 0; top: 0; height: 100px; /* when changing this, also change #content */ position: fixed; width: 84%; /* when changing this, also change #iconbar and #content */ left: 16%; /* when changing this, also change #iconbar and #content */ z-index: 3; overflow: hidden; } #banner table { width: 100% } #banner a { color: #f0feff } #banner h1 { font-size: 160%; font-weight: 700; } #banner #rmname { white-space: nowrap; } #banner h2 { font-weight: 700} #banner h2, #banner .titlebar { font-size: 130% } #banner ul.room_actions li.start_page a { background-color: #5C646B; color: #FEFFFC; border: 1px solid black; } #banner .banner {} /* style for the rooom picture */ #banner td img { padding: 0; margin: 0.5em; max-height: 64px; float: left; } #banner h1, #banner h2 { padding: 0; margin: 0; } #banner .banner p { padding: 0; margin: 0; } /* style for the feed, file, etc picture */ #banner .banner td a > img { clear: both; padding: 0; margin: 0 0.3em; border: none; } #banner .infos{ margin: 0.5em } #room_infos { position: absolute; top: 0; left: 50%; width: 45%; z-index: 10; cursor: pointer; text-align: left; padding: 10px 2px 2px 2px; } #room_infos img.close_infos { float: right } #actiondiv { float: right; margin: 0; padding: 0; text-align: right; font-size: 70%; font-weight: bold; } #banner ul.room_actions { list-style: none; margin: 0; padding: 0; } #banner ul.room_actions li { white-space: nowrap; } #banner ul.room_actions li form { margin: 0; padding: 0; } #banner ul.room_actions li select, #banner ul.room_actions li input { margin-top: 2px; margin-right: 2px; } #room_banner_override { display: none; } #nummsgs, #numfiles { font-size: 75%; margin-left: 0.5em; } #selectpage.hidden { display: none !important } .banner .infos { cursor: help } .room_actions form select { cursor: pointer } .start_page { font-size: 50% } webcit-8.24-dfsg.orig/static/styles/login.css0000644000175000017500000000334312271477123021037 0ustar michaelmichael#login_screen, #logout_screen { position: fixed; left: 0; right: 0; margin: 5em auto; width: 42em; overflow: auto; } /*because our current layout is a little complicated, we need this: */ #login_screen .box, #logout_screen .box { width: 40em; padding: 1em 0; } #login_screen .login_message, .login_hello, #login_screen #login_form { display: block; margin: 5px auto 5px auto; } #login_screen .login_message, .login_hello { width: 80% } #login_screen .login_image { width: 135px; margin: 0 auto; } #login_screen .login_image img { margin: 0 auto; } #login_screen #login_form { padding: 10px; width: 330px; } #login_form input, #login_form label, #login_form select { display: block; float: left; margin: 6pt; } #login_form label, #pname, #uname { width: 130px; text-align: left; } #login_form br { clear: left } .login_infos { bottom: 0; display: block; margin: 20px auto 0 auto; width: 80%; text-align: left; } #convlogin { text-align: center } #login_form{ background-color: #CCC} .login_message { color: #AD1C00; font-weight: 700; text-transform: uppercase; } #login_form #uname, #login_form #pname { background-color: #fbf4ca !important; /* needed for li.activeuser */ border: 1px solid #999; color: #333; } .logbuttons input { cursor: pointer; text-align: center; font-weight: bold; } .logbuttons, .registernow { width: 50%; margin: 1em auto; text-align: center; display: block; height: 2em; line-height: 2em; background-color: #4d555c; font-weight: bold; -khtml-border-radius: 5px; -moz-border-radius: 5px; border-radius: 5px; behavior: url(static/styles/PIE.htc); } .logbuttons a:link, .registernow a:link { color: #f0feff; } webcit-8.24-dfsg.orig/static/styles/mobile.css0000644000175000017500000000215412271477123021175 0ustar michaelmichael/* * Copyright 2005 - 2009 The Citadel Team * Licensed under the GPL V3 * styles for mobile clients */ body { } #button li { display: inline; padding-right: 5px; } #button li img { display: none; } img { border: none; text-decoration: none; } #message_list div div { border-bottom: 1px dotted black; padding: 5px 5px 5px 5px; /* background-color: white; */ } .subject { color: gray; } body[orient="portrait"] { max-width: 320px; } body { font-family: sans-serif; font-size: 11px; } .msgview { display: none; background-color: white !important; } .message_content { background-color: white; } #login_form label, #login_form input, #login_form select, #login_form div{ display: list-item; text-align: center !important; margin: 0px auto; } #navbar ul li { display: inline; padding-right: 5px; } #navbar ul li img { vertical-align: middle; } #navbar ul li a { text-decoration: none; } .sticky { background-color: gray; border: 1px solid black; width: 100%; } #vcontent { } .roomname { background-color: #022750; color: white; border-radius: 5px; } .roomname img{ vertical-align: middle; } webcit-8.24-dfsg.orig/static/styles/ie_lte8.css0000644000175000017500000000057712271477123021266 0ustar michaelmichael.message, .box { zoom: 1; filter: progid:DXImageTransform.Microsoft.Shadow(color='#666666', Direction=135, Strength=4) progid:DXImageTransform.Microsoft.Shadow(color='#666666', Direction=180, Strength=5) progid:DXImageTransform.Microsoft.Shadow(color='#666666', Direction=225, Strength=2) progid:DXImageTransform.Microsoft.Shadow(color='#666666', Direction=260, Strength=1); } webcit-8.24-dfsg.orig/static/styles/iconbarpiconly.css0000644000175000017500000000045312271477123022741 0ustar michaelmichael/* * Copyright 2005 - 2011 The Citadel Team * Licensed under the GPL V3 * * Styles for the WebCit Iconbar in pics only mode. */ @import url("/static/styles/iconbaricns.css"); .ib_button { width: 35px; } .ib_button_link { padding-left: 0; } .ib_button_link span { display: none; } webcit-8.24-dfsg.orig/static/styles/global.css0000644000175000017500000000023512271477123021164 0ustar michaelmichael#global { margin-left: 0; padding: 0; position: absolute; bottom: 0; top: 0; right: 0; left: 0; overflow-y: hidden; } #global center { width: 80% } webcit-8.24-dfsg.orig/static/styles/iconbaricns.css0000644000175000017500000000312112271477123022213 0ustar michaelmichael/* * Copyright 2005 - 2009 The Citadel Team * Licensed under the GPL V3 * * Styles for the WebCit Iconbar. */ .ib_button { min-height: 38px; background-repeat: no-repeat !important; background-position: 7px 3px; vertical-align: middle; } .ib_button_link { padding-top: 0.8em; padding-left: 48px; height: 100%; min-height: 25px; /* Makes all of the 'button' to be clickable */ } #ib_summary { background-image: url("/static/webcit_icons/essen/32x32/summary.png"); } #ib_inbox { background-image: url("/static/webcit_icons/essen/32x32/email.png"); } #ib_calendar { background-image: url("/static/webcit_icons/essen/32x32/calendar.png"); } #ib_contacts { background-image: url("/static/webcit_icons/essen/32x32/contact.png"); } #ib_notes { background-image: url("/static/webcit_icons/essen/32x32/note.png"); } #ib_tasks { background-image: url("/static/webcit_icons/essen/32x32/task.png"); } #ib_rooms { background-image: url("/static/webcit_icons/essen/32x32/room.png"); } #ib_users { background-image: url("/static/webcit_icons/essen/32x32/user.png"); } #ib_chat { background-image: url("/static/webcit_icons/essen/32x32/chat.png"); } #ib_advanced, #ib_admin { background-image: url("/static/webcit_icons/essen/32x32/config.png"); } #ib_aide { background-image: url("/static/webcit_icons/essen/32x32/config.png"); } #ib_logoff { background-image: url("/static/webcit_icons/essen/32x32/logout.png"); } #ib_login { background-image: url("/static/webcit_icons/essen/32x32/login.png"); } #citlogo { display: block !important; } webcit-8.24-dfsg.orig/static/styles/webcit-tinymce.css0000644000175000017500000000346112271477123022653 0ustar michaelmichael/* styles applied to the TinyMCE editor component when used in WebCit */ body {font-size: 12px;} blockquote{ background-color: #deded0; } .message_header { font-size: x-small; padding: 0.5em; } .message_content { background-color: #fff; padding: 0.5em; clear: both; } .message_subject { font-size: medium; font-style: italic; float: left; } .message_header span, .message_header a { font-weight: bold; } .message_header p { margin: 3px 0; padding: 0; } .message_content > div > div { text-align: justify !important } .message form div label, .entmsg form div label { display: block; float: left; margin: 0.3em; width: 9em; text-align: right; } .message form div input, .message form div select, .entmsg form div input, .entmsg form div select { margin: 0.3em } /* make blockquotes in messages distingushable */ /* there is a lot of cascading happen io order to make it look beautiful */ .message_content blockquote { padding: 0.2em; margin: 0.3em 0.5em; } blockquote .message_header { padding: 0; background-color: #deded0; } .message_content blockquote .message_header span { display: inline-block; } .message_content blockquote .message_header span.message_subject { display: block; float: none; } blockquote .message_content { padding: 0; background-color: transparent; } blockquote { background-color: #f0f0f0 !important; color: navy !important; } blockquote blockquote { background-color: #ebebeb !important; color: maroon !important; } blockquote blockquote blockquote { background-color: #e1e1e1 !important; color: green !important; } blockquote blockquote blockquote blockquote { background-color: #d7d7d7 !important; color: purple !important; } .message img { max-width: 700px; padding: 10px; background-color: #fff; border: 1px solid #5C646B; } webcit-8.24-dfsg.orig/static/styles/content.css0000644000175000017500000000235212271477123021400 0ustar michaelmichael#content { position: fixed; top: 100px; /* when changing this, also change #banner and #iconbar */ left: 16%; /* when changing this, also change #banner and #iconbar */ bottom: 0; width: 84%; /* when changing this, also change #banner and #iconbar */ background: #F3F6F2; color: #000; z-index: 2; overflow-y: auto; padding-top: 0.5em; } .boxcontent table { margin: 0; padding: 0; } #content table .box { margin: 0; width: 100%; text-align: left; } .service, .who_is_online { text-align: center; width: 100%; } .service table { margin: 0 auto 0 auto; width: 100%; text-align: left; } .instructions { text-align: center; } .moreprompt { margin: 0 1em; text-align: center; font-size: small; background-color: #4d555c; color: #ddd; border: 2px solid #4d555c; /*in order to make the hover effect pop out nice */ /*border-radius: 5px; -webkit-border-radius: 5px; -moz-border-radius: 5px; */ } .moreprompt_link { color: #ddd; font-weight: bold; } .moreprompt_link:hover { background-color: #ddd; color: #4d555c; border: 0px solid #5c646b; border-radius: 5px; -webkit-border-radius: 5px; -moz-border-radius: 5px; } /* a > div.moreprompt { border: none; border-radius: 0; } */ webcit-8.24-dfsg.orig/static/styles/PIE.htc0000644000175000017500000010165412271477123020336 0ustar michaelmichael webcit-8.24-dfsg.orig/static/styles/datepicker.css0000644000175000017500000000361212271477123022041 0ustar michaelmichael/** * DatePicker widget using Prototype and Scriptaculous. * (c) 2007 Mathieu Jondet * Eulerian Technologies * * DatePicker is freely distributable under the same terms as Prototype. * */ div.datepicker { position: absolute; text-align: center; border: 1px #C4D5E3 solid; font-family: arial; background: #FFFFFF; font-size: 10px; padding: 0px; z-index: 4; } div.datepicker table { font-size: 10px; margin: 0px; padding: 0px; text-align: center; width: 180px; } div.datepicker table thead tr th { font-size: 12px; font-weight: bold; background: #e9eff4; border-bottom:1px solid #c4d5e3; padding: 0px; margin: 0px; } div.datepicker table tbody tr { border: 1px white solid; margin: 0px; padding: 0px; } div.datepicker table tbody tr td { border: 1px #eaeaea solid; margin: 0px; padding: 0px; text-align: center; } div.datepicker table tbody tr td:hover, div.datepicker table tbody tr td.outbound:hover, div.datepicker table tbody tr td.today:hover { border: 1px #c4d5e3 solid; background: #e9eff4; cursor: pointer; } div.datepicker table tbody tr td.wday { border: 1px #ffffff solid; background: #ffffff; cursor: text; } div.datepicker table tbody tr td.outbound { background: #e8e4e4; } div.datepicker table tbody tr td.today { border: 1px #16518e solid; background: #c4d5e3; } div.datepicker table tbody tr td.nclick, div.datepicker table tbody tr td.nclick_outbound { cursor:default; color:#aaa; } div.datepicker table tbody tr td.nclick_outbound { background:#E8E4E4; } div.datepicker table tbody tr td.nclick:hover, div.datepicker table tbody tr td.nclick_outbound:hover { border: 1px #eaeaea solid; background: #FFF; } div.datepicker table tbody tr td.nclick_outbound:hover { background:#E8E4E4; } div.datepicker table tfoot { font-size: 10px; background: #e9eff4; border-top:1px solid #c4d5e3; cursor: pointer; text-align: center; padding: 0px; } webcit-8.24-dfsg.orig/static/styles/iconbar.css0000644000175000017500000000610412271477123021342 0ustar michaelmichael#iconbar { position: absolute; top: 0; left: 0; bottom: 0; width: 16%; /* when changing this, also change #banner width */ z-index: 0; overflow: auto; overflow-x: hidden !important; } #iconbar_container {} #citlogo { height: 76px; background: #4D555C; background: -webkit-gradient(linear, 0 0, 0 bottom, from(#4D555C), to(#7D858C)); background: -moz-linear-gradient(#4D555C, #7D858C); background: linear-gradient(#4D555C, #7D858C); -pie-background: linear-gradient(#4D555C, #7D858C); behavior: url(/static/styles/PIE.htc); } .logo_citadel, li.ib_button a img { border: none; } .logo_citadel img{ padding: 3px; margin-top: 16px; background-color: #edede0; border: 2px solid #edede0; -khtml-border-radius: 8px; -moz-border-radius: 8px; border-radius: 8px; behavior: url(/static/styles/PIE.htc); } .iconbar_text { height: 22px; font-size: 70%; font-weight: bold; color: #fff; background-color: #7d858c; border-top-color: #424b52; border-top-style: solid; border-top-width: 2px; border-bottom-color: #424b52; border-bottom-style: solid; border-bottom-width: 2px; } .iconbar_text > span { cursor: pointer } div.iconbar_text select { border: 1px solid #424b52; } #iconbar_menu {} #iconbar #button { padding: 0; margin: 5px 0; border: none; list-style: none; } .ib_button_link, .ib_button_link:visited, .ib_button_link:link, #online_users a { display: block; text-decoration: none; color: #F0FEFF; } .ib_button, .floor { margin: 0.2em; display: block; font-size: 90%; background-color: #4d555c; color: #F0FEFF; font-weight: bold; -khtml-border-radius: 5px; -moz-border-radius: 5px; border-radius: 5px; } .logo, #citlogo, .iconbar_text, #online_users li { text-align: center; } #button li:hover, #ib_logoff:hover, #ib_login:hover { background-color: #5c646b; } #online_users { display: none; /* Hide by default */ border: 0; max-height: 200px; overflow: auto; padding-left: 0; padding-bottom: 5px; } #online_users li { list-style: none; margin: 0; padding: 2px; white-space: nowrap; border: none; border-top: 1px solid #777277; } #online_users li a { font-size: 80% !important } #online_users li.inactiveuser { background-color: #9c959d; } #online_users li.activeuser { background-color: #4d555c; } #online_users li:hover { /* separate in order for override */ } .ib_roomlist_floor, .ib_roomlist_new, .ib_roomlist_old { margin: 4px; padding: 0; } .ib_roomlist_floor, .ib_roomlist_new, .ib_roomlist_old { cursor: pointer; } .ib_roomlist_floor, .roomlist_new, .ib_roomlist_new { font-weight: 700; } .ib_roomlist_floor {} .ib_roomlist_new { color: #800; } .ib_roomlist_old { color: #008; } #iconbar_container #customize { margin: 0 9px; border: 2px solid #424b52; -khtml-border-radius: 8px; -moz-border-radius: 8px; border-radius: 8px; behavior: url(/static/styles/PIE.htc); } #iconbar_container #customize a:active, #iconbar_container #customize a:link, #iconbar_container #customize a:visited { color: #fff; line-height:2em; display: block; } webcit-8.24-dfsg.orig/static/styles/webcit.css0000644000175000017500000005755412271477123021221 0ustar michaelmichael/* * Copyright 2005 - 2011 The Citadel Team * Licensed under the GPL V3 */ /* These stylesheets were split from this one for convenience */ @import url("login.css"); @import url("global.css"); @import url("iconbar.css"); @import url("banner.css"); @import url("navbar.css"); @import url("content.css"); @import url("box.css"); @import url("message.css"); @import url("modal.css"); @import url("service.css"); @import url("blog.css"); @media print { input#toggler, .toolbar { display: none } } html, body { font-size: 100%; height:100%; width:100%; margin:0; padding:0; overflow:hidden; } .address_book_popup_title { font-size: 130% } #button, #content .button_link a, input#delbutton,.attachfile, .buttons input, .buttons a, .customize, .menubar_link, #banner ul.room_actions li, .selector_top, .selector_bottom, .banner .infos,li.search,li.view, .room_actions form select option, .selectbox, ul.adminitems li span, #message_list tr > td { font-size: 100%; } #message_list_hdr table { font-size: 80% } .mailbox_summary { font-size: 80% } /* Color */ body { background-color: #F3F6F2; font-family: sans-serif; } .marked_row { color: white; background-color: #69aaff !important; } .service form div,table.altern .odd, #message_list, #roomlist_div,.editednode,.mailbox_summary, .auth_validate, .event_background, .calendar_background, .calendar_view_background, .graphics_background, .messages_background, .paging_background, .preferences_background, .roomops_background, .sieve_background, .siteconfig_background, .smtpqueue_background, .tabs_background, .useredit_background, .userlist_background, .wiki_history_background, .wiki_pagelist_background, .downloads_background, .vcard_edit_background, div.auto_complete, div.auto_complete ul, #summary_view { background-color: #FFF; color: #000; } #message_list_hdr table, #resize_msglist, .vcard_edit_background_alt,.roomops_background_alt { background-color: #CCC; } #room_infos, #address_book_popup, .roomops_cell, .roomops_cell_edit, .mimepart { background-color: #deded0; color: #5C646B; } #room_infos, #address_book_popup, .mimepart, .room_actions form select { border: 1px solid #5C646B; overflow: scroll; } .buttons a,.tablabel,.treetitle { color: #000; font-weight: 700; } .mimepart div,.required { font-weight: 700 } .selector_top,.selector_bottom { background-color: #022750; border-top: 1px solid black; border-bottom: 1px solid black; color: #FFF; } #message_list_hdr form input { border: 0 } #message_list_hdr select { background-color: #3E65AF; color: #F1BD22; border: 1px solid #6C91A6; } #message_list_hdr table { font-style: italic } #resize_msglist { background-image: url(/static/webcit_icons/resizegrippy.gif); background-position: center; background-repeat: no-repeat; } #resize_msglist hr { background-color: #999; border: 0; color: #999; height: 3px; } .adminlist { list-style: none } .customize { background-color: #DDC; color: #004; font-style: italic; } .default { font-style: normal; text-decoration: underline; } .editednodeinput { background-color: #FFF; border: 1px solid #000; color: #000; height: 17px; width: 150px; } .error a:link, .error a:visited, .error a:active { background: none; color: #DC143C; text-decoration: underline; } .error strong { background: #FFD700; color: #DC143C; text-decoration: none; } .error strong a:link,.error strong a:visited,.error strong a:active { background: #FFD700; color: #DC143C; } .errormsg { background: none; color: #A00; font-style: italic; font-weight: 700; } .floors_config, .roomops_zap { background-color: #700; border: 0; } .imsg { background: none; color: #EEE; font-style: italic; font-weight: 700; text-align: center; } .menubar_bg { background-color: red } .mimepart div span { display: block; font-style: italic; } .mimepart dl dd, .mimepart dl dt { border-top: 1px solid #AAA; } .mailbox_summary td { /* border-top: 1px solid #AAA; */ white-space: nowrap; overflow: hidden; } .mimepart dl dt { font-weight: 700 } .roomops_cell_label, .tab_cell_label { background-color: #424b52; color: #EABB3A; font-size: 80%; font-weight: bold; border-radius: 8px 8px 0 0; -webkit-border-radius: 8px 8px 0 0; -moz-border-radius: 8px 8px 0 0; } .selectbox { background-color: #FF8000; } .tab_cell, .tab_cell_edit { background-color: #5c646b; color: #F9FDFB; font-size: 80%; font-weight: bold; border-radius: 8px 8px 0 0; -webkit-border-radius: 8px 8px 0 0; -moz-border-radius: 8px 8px 0 0; } .tabcontent { background-color: #FEFFFC; border: 2px solid #424B52; } .treetitleselectedblured { background-color: menu; color: windowtext; } .treetitleselectedfocused { background-color: highlight; color: highlighttext; } .warning a:link, .warning a:visited, .warning a:active, .warning { background: none; color: #FF4500; } .warning, .warning strong { text-decoration: none } .warning a:link,.warning a:visited,.warning a:active { text-decoration: underline; } .warning strong { background: #FFD700; color: #FF4500; } .warning strong a:link,.warning strong a:visited,.warning strong a:active { background: #FFD700; color: #FF4500; } blockquote { background-color: #f5f5f5 !important; color: navy !important; } blockquote blockquote { background-color: #ebebeb !important; color: maroon !important; } blockquote blockquote blockquote { background-color: #e1e1e1 !important; color: green !important; } blockquote blockquote blockquote blockquote { background-color: #d7d7d7 !important; color: purple !important; } blockquote blockquote blockquote blockquote blockquote { background-color: #cdcdcd !important; color: teal !important; } blockquote pre { margin-left: 1%; margin-right: 1%; } div.auto_complete ul { background: #fff; border: 1px solid #888; list-style-type: none; } div.auto_complete ul li.selected { background-color: #ffc; } div.auto_complete ul strong.highlight { color: #800 } table.altern { border-bottom: solid 2px #AAA; border-top: solid 2px #AAA; } table.altern .even { background-color: #DDD; } td li.frameset,.elements li.frameset { background: none; color: gray; font-weight: lighter; } td li.transitional,.elements li.transitional { background: none; color: #696969; font-weight: lighter; } ul.adminitems { list-style-type: disc; padding: 0; } ul.adminitems li { font-weight: 700 } ul.adminitems li span { color: #666 } var sub { font-style: normal } .week_of_year { background-color: #e1e1e1; font-size: 70%; } .day { font-weight: 700 } .calout { background-color: #DDDDDD } .calday { background-color: #FFFFFF } .calweekend { background-color: #EEEECC } .caltoday { background-color: #EEEEFF } .current_sort_mode { background-color: white } #loading { background-color: white } /* Message list in mailbox/summaryview */ .table-row { background-color: white } .table-alt-row { background-color: #DDDDDD } /* Links */ a { text-decoration: none } a:link, .calendar a:visited { color: #0e73e3 } /*color: #2F65DD;*/ a:active { color: #3E65AF } a:visited { color: #70342e } .roomlist_old { color: #424b52 } .roomlist_new { color: #ef7114 } .roomlist_new, .roomlist_old { font-size: medium; font-weight: bold; padding: 0.1em 0.3em; } .roomlist_new:hover, .roomlist_old:hover{ outline: 1px solid #7d858c; outline-radius: 5px; -khtml-outline-radius: 5px; -moz-outline-radius: 5px; behavior: url(/static/styles/PIE.htc); } #customize a:active, #customize a:link, #customize a:visited { color: black; } input, select, .room_actions form select, .room_actions li.search input, .address_book_popup_title { background-color: #efefe0; /*#fbf4ca;*/ border: 2px solid #5c646b; color: #333; } .buttons a:hover { background-color: #5c646b; } .button_link a, input#delbutton,.attachfile, .buttons input { background-color: #4d555c; } .button_link a, input#delbutton,.attachfile, .buttons input { border: 2px solid #5c646b; color: #F0FEFF; } .button_link a, input#delbutton,.attachfile, .buttons input { cursor: pointer; -webkit-border-radius: 8px; -moz-border-radius: 8px; border-radius: 8px; behavior: url(/static/styles/PIE.htc); text-align: center; } .button_link a, .attachfile,.buttons input { font-weight: bold; } input#delbutton { font-weight: normal } /* Layout */ * html { overflow: hidden } html { overflow: auto } body { height: 100%; overflow: hidden; text-align: center; margin-left: 0; padding: 0; } #important_message { background-color: #3E65AF; color: #FFF; position: absolute; top: 25px; z-index: 4; padding: 3px; margin: 0px auto; } #hellomsg, .fmout, .nomsgs { text-align: center; } #validate { text-align: center } #iconbar, #banner, #content, #message_list_hdr, #message_list, #preview_pane { text-align: left } /* Please avoid setting heights for any of the mailbox view elements (except summary_view * and resize). In particular, do NOT set any for message_list_hdr as its not good feng shui */ #message_listview th { border-right: 0.2em solid #fff; } #message_listview td { padding-left: 1em; } #message_list_hdr { display: block; padding-bottom: 0; margin-bottom: 0; background-color: #CCCCCC; } #summary_view { overflow-y: scroll; overflow-x: hidden; cursor: pointer; } #summary_headers { background-color: white; table-layout: fixed; } #summary_headers tr td { overflow-y: hidden; overflow-x: hidden; /* stop long subjects overflowing */ } #message_listview .col1 { width: 66% } #message_listview .col2 { width: 22% } #message_listview .col3 { width: 12% } .col1, .col2, .col3 { cursor: pointer; text-overflow: ellipsis; -o-text-overflow: ellipsis; } .new_message { font-weight: bold !important } #loading { text-align: center} #resize_msglist { width: 100%; overflow: hidden; cursor: s-resize; height: 6px; } #preview_pane { overflow: auto } .ctdlTemplate { display: none } #ctdlContextMenu { position: fixed; background-color: white; border: 1px solid black; } .draganddrop { position: fixed; display: block; border: 1px solid black; z-index: 65535; background-color: white; text-align: left; opacity: 0.9; } .draganddrop > ul { list-style: none; padding-left: 0; margin-left: 0; } .hidden { display: none } .floor { margin-left: 0px } .floor > ul { display: none } .floor-expanded > ul{ display: block !important } #roomlist > ul { margin: 0; padding: 0; } #roomlist > div > ul > li { margin: 0; padding: 0; } /* Override to disable list-style-image" */ .room a, .room a, .room a:visited, .room a:link { color: #f0feff } .room-private { list-style-image: url("/static/webcit_icons/essen/16x16/email.png") } .room-addr { list-style-image: url("/static/webcit_icons/essen/16x16/contact.png") } .room-cal { list-style-image: url("/static/webcit_icons/essen/16x16/calendar.png") } .room-tasks { list-style-image: url("/static/webcit_icons/essen/16x16/task.png") } .room-notes { list-style-image: url("/static/webcit_icons/essen/16x16/note.png") } .room-chat { list-style-image: url("/static/webcit_icons/essen/16x16/room.png") } .room-newmsgs { font-weight: bold } .room-emphasized { text-decoration: underline } #message_list_hdr table { width: 100% } .selector_top, .selector_bottom { text-align: center } .selector_top p,.selector_bottom p { margin: 0; padding: 2px; } .button_link a, .attachfile, .buttons input .logbutton { margin: 3px; padding: 2px 4px 2px 4px; } input#delbutton { margin: 0 3px 0 3px; padding: 2px 4px 2px 4px; } .mimepart { margin-top: 15px; margin-bottom: 15px; margin-left: 15%; width: 70%; padding: 0; } .mimepart img { vertical-align: middle; float: left; } .mimepart div { vertical-align: middle; margin: 0 0 15px 0 ; padding: 5px; } .mimepart div span { vertical-align: top } .mimepart dl { width: 100%; margin-left: 5px; padding: 5px; } .mimepart dl dt { width: 30%; float: left; margin: 0 0 0 0; padding: .5em; } .mimepart dl dd { float: left; width: 62%; margin: 0; padding: .5em; } .mimepart p { margin-top: 1em; margin-bottom: 0; clear: both; } .buttons a { text-align: center } .imgedit { vertical-align: middle } .edit_msg_table th { text-align: right; padding: 0px; padding-right: 5px; color: #333; width: 20%; } .edit_msg_table td { padding: 0px; } .edit_msg_table #recp_id, .edit_msg_table #cc_id, .edit_msg_table #bcc_id, .edit_msg_table #subject_id { width: 98%; } .note { font-size: 85%; margin-left: 10%; } .toolbar { text-align: center } .toolbar img { float: right } colgroup.entity { text-align: center } div.auto_complete ul { margin: 0; padding: 0; width: 100%; } div.auto_complete ul li { margin: 0; padding: 3px; } div.auto_complete ul strong.highlight { margin: 0; padding: 0; } .auth_validate, .event_background, .calendar_background, .calendar_view_background, .graphics_background, .messages_background, .paging_background, .preferences_background, .roomops_background, .sieve_background, .siteconfig_background, .smtpqueue_background, .tabs_background, .useredit_background, .userlist_background, .downloads_background, .vcard_edit_background, .vcard_edit_background_alt, .roomops_background_alt, .floors_config, .roomops_zap { width: 100%; } #address_book_popup { position: absolute; top: 100px; right: 25px; width: 320px; height: auto; z-index: 100; display: none; -webkit-box-shadow: #666 0px 2px 3px; -moz-box-shadow: #666 0px 2px 3px; box-shadow: #666 0px 2px 3px; } #address_book_popup_container_div { position: relative; width: 100%; height: 100%; } #address_book_popup_middle_div { position: relative } #address_book_inner_div { margin: 5px } #address_book_inner_div select { width: 100% } #address_book_inner_div input { margin: 4px 5px 0 5px } #citlogo { display: none; /* Overriden later */ } .sort_ascending, .sort_descending { background-repeat: no-repeat; background-position: center right; } .sort_ascending { background-image: url("/static/webcit_icons/down_pointer.gif") } .sort_descending { background-image: url("/static/webcit_icons/up_pointer.gif") } #message_list_hdr > table { border-collapse: collapse } #summary_view > table { border-collapse: collapse } /* System Administration Menu */ ul.adminitems { margin: 15px; padding: 0; } ul.adminitems li { margin: 0.5em; padding: 0; } ul.adminitems li span { display: block } /* Mailq */ table.mailstatus {background-color: lightgray } td.mailstatus_0 {background-color: gray } td.mailstatus_1 {background-color: gray } td.mailstatus_2 {background-color: green } td.mailstatus_3 {background-color: orange } td.mailstatus_4 {background-color: yellow } td.mailstatus_5 {background-color: red } /* Room list - Tree Node */ .treetitle, .editednode, .treetitleselectedfocused, .treetitleselectedblured { padding: 2px; cursor: default; } table.altern { margin: 0 auto 0 auto; width: 98% } table.altern tr td { height: 2em; } /* Advanced menu */ table.advanced { margin: 0 auto 0 auto; width: 96%; border-collapse: separate; border-spacing: 15px; } .advanced .boxcontent ul { margin-left: 4em } .advanced .boxcontent .col1, .advanced .boxcontent .col2 { float: left; width: 33%; } .advanced .boxcontent .col2, .advanced .boxcontent .lastcol { margin-left: 0; margin-bottom: 4em; } /* Site configuration */ .tabs_background { margin-top: 0 } /* Links and buttons */ .buttons { margin: 2px auto 2px auto; width: 96%; text-align: center; } /* Tabs */ #TheTabs { margin: 3% auto 0 auto; width: 94%; } ul.tabbed_dialog { list-style: none; margin: 3% auto 0 auto; width: 96%; padding: 0; white-space: nowrap; text-align: center; vertical-align: middle; } ul.tabbed_dialog li { margin: 0 3% 0 3%; padding: 4px; float: left; } .tabcontent { margin: 0 auto 0 auto; width: 96%; padding: 10px; clear: both; } .tabcontent_submit { margin: 0 auto 0 auto; width: 96%; padding: 10px; text-align: center; } /* Calendar view */ .calendar { background-color: #424b52; margin: 0 auto; width: 98%; height: 302px; border-radius: 8px; -webkit-border-radius: 8px; -moz-border-radius: 8px; behavior: url(/static/styles/PIE.htc); } .calendar th { background-color: #424b52; border-color: #424b52; } #inner_day { padding: 0.1em; } td.events_of_the_day { width: 50% } .events_of_the_day dl { margin: 0; /* padding: 0; position: absolute; top: 0; left:0; */ width: 100%; } .events_of_the_day dl dt { background-color: #FFFFFF; margin: 0; width: 500px; border: 1px solid #CCC; } .events_of_the_day dl dt.hour { /* font-size: 160%; commenting out because we need to line it up with the actual size */ } .events_of_the_day dl dt.extrahour { /* font-size: 80%; commenting out because we need to line it up with the actual size */ } .hour_label, .extra_events dl dt { background-color: #CCCCDD; vertical-align: middle; text-align: left; } .hour_events, .extra_events { background-color: #FFFFFF; vertical-align: top; text-align: left; } .extra_events { border: 1px solid #ccc } .extra_events ul { list-style: none; padding: 0; margin: 0; } .extra_events ul li { margin: 4px } .calday, .calout, .calweekend, .caltoday { width: 14%; height: 60px; text-align: left; vertical-align: top; } .event_framed_unread { -webkit-border-radius: 8px; -moz-border-radius: 8px; border-radius: 8px; behavior: url(/static/styles/PIE.htc); border: solid 1px red; background-color: yellow; z-index: 10; padding: 0 4px 0 4px; } li.event_framed_unread span, a.event_title { font-size: 100% } .event_framed_read { -webkit-border-radius: 8px; -moz-border-radius: 8px; border-radius: 8px; behavior: url(/static/styles/PIE.htc); border: solid 1px red; background-color: yellow; z-index: 10; padding: 0 4px 0 4px; } li.event_framed_read span, a.event_title { font-size: 100% } .event_read {} li.event_read span, a.event_read_title { font-size: 100% } .event_unread {} li.event_unread span, a.event_read_title { font-size: 100% } .mini_calendar { color: #fff } .mini_calendar a { color: #fff } .mini_calendar a:link,.mini_calendar a:visited { color: #fff } .mini_calendar a:hover,.mini_calendar a:active { color: #3E65AF; background-color: #3E65AF; } .mini_calendar td a { color: #fff } .mini_calendar td a:link,.mini_calendar td a:visited { color: #fff } .mini_calendar td a:hover,.mini_calendar td a:active { color: #3E65AF; background-color: #3E65AF; } .menudesc { margin: 4px; padding: 4px; } .roompic { border: none; } .table-row, .table-alt-row { width: 100% } .stickynote_outer { position: absolute; width: 200px; height: 200px; border: 1px solid #333; background-color: #ffff00; overflow: hidden; -webkit-box-shadow: #666 0px 2px 3px; -moz-box-shadow: #666 0px 2px 3px; box-shadow: #666 0px 2px 3px; behavior: url(/static/styles/PIE.htc); } .stickynote_titlebar { position: relative; width: 100%; height: 16px; top: 0px; left: 0px; background-color: #888800; font-size: 60%; } .stickynote_body { position: relative; font-family: "Comic Sans MS", sans-serif; } .stickynote_resize { position: absolute; background-image: url('resizecorner.png'); height: 16px; width: 16px; right: -1px; bottom: -1px; } .stickynote_palette { position: absolute; width: 48px; height: 48px; top: 16px; left: 0px; background-color: #ffffff; border: 1px solid #333; display: none; } .stickynote_palette table { margin: 0; padding: 0; } .stickynote_palette td { width: 16px; height: 16px; } .conftitle { font-size: 140%; font-weight: bold; text-align: center; } .confdescr { font-size: 110%; text-align: center; } #noscript_warning { position: fixed; z-index: 999; top: 0; right: 0; background-color: #FF0000; color: #FFFFFF; font-size: 120%; border: 2px solid #FF0000; } .chatrecv_history_class { position: absolute; top: 0.5em; left: 0.5%; width: 700px; height: 70%; background-color: #edede0; overflow: auto; border: 2px solid #424d52; border-radius: 8px; -khtml-border-radius: 8px; -moz-border-radius: 8px; behavior: url(/static/styles/PIE.htc); -webkit-box-shadow: #666 0px 1px 2px; -moz-box-shadow: #666 0px 2px 3px; box-shadow: #666 0px 2px 3px; padding: 0.5em; } .chat_userlist_class { position: absolute; top: 0.5em; right: 0.5%; width: 110px; height: 92%; background-color: #edede0; overflow: auto; border: 2px solid #424d52; border-radius: 8px; -khtml-border-radius: 8px; -moz-border-radius: 8px; box-shadow: #666 0px 2px 3px; -webkit-box-shadow: #666 0px 1px 2px; -moz-box-shadow: #666 0px 2px 3px; behavior: url(/static/styles/PIE.htc); padding: 0.5em; } .chatrecv_class { display: none } .chatsend_class { position: absolute; left: 0.5%; bottom: 3%; height: 95px; width: 700px; border: 2px solid #424d52; border-radius: 8px; -khtml-border-radius: 8px; -moz-border-radius: 8px; box-shadow: #666 0px 2px 3px; -webkit-box-shadow: #666 0px 1px 2px; -moz-box-shadow: #666 0px 2px 3px; behavior: url(/static/styles/PIE.htc); background-color: #7d858c; padding: 0.5em; } .chat_myname_class { font-weight: bold; color: #ff0000; } .chat_notmyname_class { font-weight: bold; color: #0000ff; } .chat_text_class {} /*---------- bubble tooltips start -----------*/ a.event_title, a.event_unread, a.event_read { position:relative; z-index:24; } a.event_title span, a.event_unread span, a.event_read span { display: none; } /* background:; ie hack, something must be changed in a for ie to execute it */ a.event_title:hover, a.event_unread:hover, a.event_read:hover { z-index:25; } a.event_title:hover span.tooltip, a.event_unread:hover span.tooltip, a.event_read:hover span.tooltip { display:block; position:absolute; top:0px; left:0; padding: 15px 0 0 0; width:200px; text-align: center; } a.event_title:hover span.btttop, a.event_unread:hover span.btttop, a.event_read:hover span.btttop { display: block; padding: 30px 8px 0; background: url(/static/webcit_icons/bubble.gif) no-repeat top; } /* different middle bg for stretch */ a.event_title:hover span.bttmiddle, a.event_unread:hover span.bttmiddle, a.event_read:hover span.bttmiddle { display: block; padding: 0 8px; background: url(/static/webcit_icons/bubble_filler.gif) repeat bottom; color: #022750; font-size: 10px; } a.event_title:hover span.bttbottom, a.event_unread:hover span.bttbottom, a.event_read:hover span.bttbottom { display: block; padding:3px 8px 10px; background: url(/static/webcit_icons/bubble.gif) no-repeat bottom; } /*---------- styles for the attachments form -----------*/ #attachments_form { display:none; position:absolute; top:5%; bottom:5%; right:5%; left:5%; z-index: 10; padding: 5px; border-width: 1px; border-style: solid; border-color: #022750; -webkit-border-radius: 10px; -moz-border-radius: 10px; border-radius: 10px; background: #FFFFFF; background: -webkit-gradient(linear, 0 0, 0 bottom, from(#FFFFFF), to(#DDDDEE)); background: -moz-linear-gradient(#FFFFFF, #DDDDEE); background: linear-gradient(#FFFFFF, #DDDDEE); -pie-background: linear-gradient(#FFFFFF, #DDDDEE); -webkit-box-shadow: #666 0px 2px 3px; -moz-box-shadow: #666 0px 2px 3px; box-shadow: #666 0px 2px 3px; } /*---------- styles for the login modal box -----------*/ #loginbox_topline_container { position: relative; font-size: 110%; color: white; } #loginbox_title { float: left; width: 75%; text-align: center; background-color: #022750; border: 3px solid #022750; } #loginbox_closebutton { float: right; width: 23%; text-align: right; background-color: #ddd; border: 3px solid #ddd; } #auth_container { position: relative; border: 1px solid #777; } #authbar { top: 0; left: 0; width: 23%; z-index: 0; overflow: auto; overflow-x: hidden !important; } #authbar ul { margin-top: 1px; margin-bottom: 0; } .authbox { text-align: center; position: absolute; top: 0; right: 0; width: 75%; height: 100%; z-index: 0; overflow: auto; overflow-x: hidden !important; background-color: #ddd; } #ajax_username_password_form, #ajax_newuser_form { margin: auto; width: 20em; } #ajax_username_password_form label, #ajax_newuser_form label { float: left; width: 10em; } .openid_urlarea { background: url('../webcit_icons/openid-small.gif') no-repeat scroll 0pt 50%; padding-left: 18px; } webcit-8.24-dfsg.orig/static/styles/message.css0000644000175000017500000000417412271477123021356 0ustar michaelmichael.message, .entmsg{ background-color: #deded0; margin: 0.5em 1em; /* border: 1px solid #5C646B; */ -webkit-box-shadow: #666 0px 2px 3px; -moz-box-shadow: #666 0px 2px 3px; box-shadow: #666 0px 2px 3px; /* behavior: url(/static/styles/PIE.htc);*/ } .entmsg { height: 95%; } .message_header { font-size: x-small; padding: 0.5em; } .message_content { background-color: #fff; padding: 0.5em; clear: both; } .message_subject { font-size: medium; font-style: italic; float: left; } .message_header span, .message_header a { font-weight: bold; } .message_header p { margin: 3px 0; padding: 0; } .message_content > div > div { text-align: justify !important } .message form div label, .entmsg form div label { display: block; float: left; margin: 0.3em; width: 9em; text-align: right; } .message form div input, .message form div select, .entmsg form div input, .entmsg form div select { margin: 0.3em; } .msgbuttons { float: right; font-size: 80%; line-height: 2em; } .msgbuttons a { font-size: x-small; display: inline-block; margin-left: 0.3em; } /* Blockquotes in messages need to be distingushable */ /* there is a lot of cascading happen io order to make it look beautiful */ /* if you make changes here, port them to WEBCIT-TINYMCE.css! */ .message_content blockquote { /*border: 1px solid #5C646B;*/ padding: 0.2em; margin: 0.3em 0.5em; } .message_content blockquote .message_header span { display: inline-block; } .message_content blockquote .message_header span.message_subject { display: block; float: none; } /*top border of message headerrs in a blockquote need to be transparent*/ blockquote .message_header { padding: 0; background-color: #deded0; } /*make bottom border of content inside of a blockquote rounded, so it fits the blockquote*/ blockquote .message_content { padding: 0; background-color: transparent; margin: 0.3em; } /* --- End of blockquoting block --- */ .message img { max-width: 700px; padding: 10px; background-color: #fff; border: 1px solid #5C646B; box-shadow: #666 0px 2px 3px; -webkit-box-shadow: #666 0px 1px 2px; -moz-box-shadow: #666 0px 2px 3px; } webcit-8.24-dfsg.orig/static/styles/rss_browser.css0000644000175000017500000000140112271477123022272 0ustar michaelmichael/* * Copyright 2005 - 2009 The Citadel Team * Licensed under the GPL V3 */ * { display: block; } :root { margin: 50px; } channel > title { font-size: x-large; text-align: center; } channel > title:after { display: block; padding: 50px; content: "This is an RSS feed, designed to be read in an RSS application."; background-color: grey; color: white; } item { margin: 25px 0 20px 0; } item > title { font-size: medium; margin-bottom: 20px; } item > link { font-size: small; margin-top: 6px; margin-bottom: 6px; } item > description { font-size: small; } item > pubDate { font-size: small; } channel > link, channel > copyright, channel > lastBuildDate, channel > generator, channel > docs, language, lastBuildDate, ttl, guid, category { display: none; } webcit-8.24-dfsg.orig/static/mobile.js0000644000175000017500000000165412271477123017502 0ustar michaelmichael/* * Copyright 2005 - 2009 The Citadel Team * Licensed under the GPL V3 */ var currentMsgDisplay = null; function CtdlLoadMsgMouseDown(event, msgnum) { /* if (currentMsgDisplay != null) { currentMsgDisplay.style.display = "none"; } var id = "m_"+msgnum; var preview_pane = document.getElementById(id); preview_pane.style.display = "block"; preview_pane.innerHTML = "Loading message"; currentMsgDisplay = preview_pane; var req = new XMLHttpRequest(); req.open('GET', '/msg/'+msgnum, true); req.onreadystatechange = function (aEvt) { if (req.readyState == 4) { if(req.status == 200) currentMsgDisplay.innerHTML = "
"+req.responseText; else currentMsgDisplay.innerHTML = "Error loading message"; } }; req.send(null); */ window.location = "/mobilemsg/"+msgnum; } function CtdlHideMsg() { currentMsgDisplay.style.display = "none"; } webcit-8.24-dfsg.orig/static/controls.js0000644000175000017500000010374312271477123020100 0ustar michaelmichael// script.aculo.us controls.js v1.9.0, Thu Dec 23 16:54:48 -0500 2010 // Copyright (c) 2005-2010 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us) // (c) 2005-2010 Ivan Krstic (http://blogs.law.harvard.edu/ivan) // (c) 2005-2010 Jon Tirsen (http://www.tirsen.com) // Contributors: // Richard Livsey // Rahul Bhargava // Rob Wills // // script.aculo.us is freely distributable under the terms of an MIT-style license. // For details, see the script.aculo.us web site: http://script.aculo.us/ // Autocompleter.Base handles all the autocompletion functionality // that's independent of the data source for autocompletion. This // includes drawing the autocompletion menu, observing keyboard // and mouse events, and similar. // // Specific autocompleters need to provide, at the very least, // a getUpdatedChoices function that will be invoked every time // the text inside the monitored textbox changes. This method // should get the text for which to provide autocompletion by // invoking this.getToken(), NOT by directly accessing // this.element.value. This is to allow incremental tokenized // autocompletion. Specific auto-completion logic (AJAX, etc) // belongs in getUpdatedChoices. // // Tokenized incremental autocompletion is enabled automatically // when an autocompleter is instantiated with the 'tokens' option // in the options parameter, e.g.: // new Ajax.Autocompleter('id','upd', '/url/', { tokens: ',' }); // will incrementally autocomplete with a comma as the token. // Additionally, ',' in the above example can be replaced with // a token array, e.g. { tokens: [',', '\n'] } which // enables autocompletion on multiple tokens. This is most // useful when one of the tokens is \n (a newline), as it // allows smart autocompletion after linebreaks. if(typeof Effect == 'undefined') throw("controls.js requires including script.aculo.us' effects.js library"); var Autocompleter = { }; Autocompleter.Base = Class.create({ baseInitialize: function(element, update, options) { element = $(element); this.element = element; this.update = $(update); this.hasFocus = false; this.changed = false; this.active = false; this.index = 0; this.entryCount = 0; this.oldElementValue = this.element.value; if(this.setOptions) this.setOptions(options); else this.options = options || { }; this.options.paramName = this.options.paramName || this.element.name; this.options.tokens = this.options.tokens || []; this.options.frequency = this.options.frequency || 0.4; this.options.minChars = this.options.minChars || 1; this.options.onShow = this.options.onShow || function(element, update){ if(!update.style.position || update.style.position=='absolute') { update.style.position = 'absolute'; Position.clone(element, update, { setHeight: false, offsetTop: element.offsetHeight }); } Effect.Appear(update,{duration:0.15}); }; this.options.onHide = this.options.onHide || function(element, update){ new Effect.Fade(update,{duration:0.15}) }; if(typeof(this.options.tokens) == 'string') this.options.tokens = new Array(this.options.tokens); // Force carriage returns as token delimiters anyway if (!this.options.tokens.include('\n')) this.options.tokens.push('\n'); this.observer = null; this.element.setAttribute('autocomplete','off'); Element.hide(this.update); Event.observe(this.element, 'blur', this.onBlur.bindAsEventListener(this)); Event.observe(this.element, 'keydown', this.onKeyPress.bindAsEventListener(this)); }, show: function() { if(Element.getStyle(this.update, 'display')=='none') this.options.onShow(this.element, this.update); if(!this.iefix && (Prototype.Browser.IE) && (Element.getStyle(this.update, 'position')=='absolute')) { new Insertion.After(this.update, ''); this.iefix = $(this.update.id+'_iefix'); } if(this.iefix) setTimeout(this.fixIEOverlapping.bind(this), 50); }, fixIEOverlapping: function() { Position.clone(this.update, this.iefix, {setTop:(!this.update.style.height)}); this.iefix.style.zIndex = 1; this.update.style.zIndex = 2; Element.show(this.iefix); }, hide: function() { this.stopIndicator(); if(Element.getStyle(this.update, 'display')!='none') this.options.onHide(this.element, this.update); if(this.iefix) Element.hide(this.iefix); }, startIndicator: function() { if(this.options.indicator) Element.show(this.options.indicator); }, stopIndicator: function() { if(this.options.indicator) Element.hide(this.options.indicator); }, onKeyPress: function(event) { if(this.active) switch(event.keyCode) { case Event.KEY_TAB: case Event.KEY_RETURN: this.selectEntry(); Event.stop(event); case Event.KEY_ESC: this.hide(); this.active = false; Event.stop(event); return; case Event.KEY_LEFT: case Event.KEY_RIGHT: return; case Event.KEY_UP: this.markPrevious(); this.render(); Event.stop(event); return; case Event.KEY_DOWN: this.markNext(); this.render(); Event.stop(event); return; } else if(event.keyCode==Event.KEY_TAB || event.keyCode==Event.KEY_RETURN || (Prototype.Browser.WebKit > 0 && event.keyCode == 0)) return; this.changed = true; this.hasFocus = true; if(this.observer) clearTimeout(this.observer); this.observer = setTimeout(this.onObserverEvent.bind(this), this.options.frequency*1000); }, activate: function() { this.changed = false; this.hasFocus = true; this.getUpdatedChoices(); }, onHover: function(event) { var element = Event.findElement(event, 'LI'); if(this.index != element.autocompleteIndex) { this.index = element.autocompleteIndex; this.render(); } Event.stop(event); }, onClick: function(event) { var element = Event.findElement(event, 'LI'); this.index = element.autocompleteIndex; this.selectEntry(); this.hide(); }, onBlur: function(event) { // needed to make click events working setTimeout(this.hide.bind(this), 250); this.hasFocus = false; this.active = false; }, render: function() { if(this.entryCount > 0) { for (var i = 0; i < this.entryCount; i++) this.index==i ? Element.addClassName(this.getEntry(i),"selected") : Element.removeClassName(this.getEntry(i),"selected"); if(this.hasFocus) { this.show(); this.active = true; } } else { this.active = false; this.hide(); } }, markPrevious: function() { if(this.index > 0) this.index--; else this.index = this.entryCount-1; this.getEntry(this.index).scrollIntoView(true); }, markNext: function() { if(this.index < this.entryCount-1) this.index++; else this.index = 0; this.getEntry(this.index).scrollIntoView(false); }, getEntry: function(index) { return this.update.firstChild.childNodes[index]; }, getCurrentEntry: function() { return this.getEntry(this.index); }, selectEntry: function() { this.active = false; this.updateElement(this.getCurrentEntry()); }, updateElement: function(selectedElement) { if (this.options.updateElement) { this.options.updateElement(selectedElement); return; } var value = ''; if (this.options.select) { var nodes = $(selectedElement).select('.' + this.options.select) || []; if(nodes.length>0) value = Element.collectTextNodes(nodes[0], this.options.select); } else value = Element.collectTextNodesIgnoreClass(selectedElement, 'informal'); var bounds = this.getTokenBounds(); if (bounds[0] != -1) { var newValue = this.element.value.substr(0, bounds[0]); var whitespace = this.element.value.substr(bounds[0]).match(/^\s+/); if (whitespace) newValue += whitespace[0]; this.element.value = newValue + value + this.element.value.substr(bounds[1]); } else { this.element.value = value; } this.oldElementValue = this.element.value; this.element.focus(); if (this.options.afterUpdateElement) this.options.afterUpdateElement(this.element, selectedElement); }, updateChoices: function(choices) { if(!this.changed && this.hasFocus) { this.update.innerHTML = choices; Element.cleanWhitespace(this.update); Element.cleanWhitespace(this.update.down()); if(this.update.firstChild && this.update.down().childNodes) { this.entryCount = this.update.down().childNodes.length; for (var i = 0; i < this.entryCount; i++) { var entry = this.getEntry(i); entry.autocompleteIndex = i; this.addObservers(entry); } } else { this.entryCount = 0; } this.stopIndicator(); this.index = 0; if(this.entryCount==1 && this.options.autoSelect) { this.selectEntry(); this.hide(); } else { this.render(); } } }, addObservers: function(element) { Event.observe(element, "mouseover", this.onHover.bindAsEventListener(this)); Event.observe(element, "click", this.onClick.bindAsEventListener(this)); }, onObserverEvent: function() { this.changed = false; this.tokenBounds = null; if(this.getToken().length>=this.options.minChars) { this.getUpdatedChoices(); } else { this.active = false; this.hide(); } this.oldElementValue = this.element.value; }, getToken: function() { var bounds = this.getTokenBounds(); return this.element.value.substring(bounds[0], bounds[1]).strip(); }, getTokenBounds: function() { if (null != this.tokenBounds) return this.tokenBounds; var value = this.element.value; if (value.strip().empty()) return [-1, 0]; var diff = arguments.callee.getFirstDifferencePos(value, this.oldElementValue); var offset = (diff == this.oldElementValue.length ? 1 : 0); var prevTokenPos = -1, nextTokenPos = value.length; var tp; for (var index = 0, l = this.options.tokens.length; index < l; ++index) { tp = value.lastIndexOf(this.options.tokens[index], diff + offset - 1); if (tp > prevTokenPos) prevTokenPos = tp; tp = value.indexOf(this.options.tokens[index], diff + offset); if (-1 != tp && tp < nextTokenPos) nextTokenPos = tp; } return (this.tokenBounds = [prevTokenPos + 1, nextTokenPos]); } }); Autocompleter.Base.prototype.getTokenBounds.getFirstDifferencePos = function(newS, oldS) { var boundary = Math.min(newS.length, oldS.length); for (var index = 0; index < boundary; ++index) if (newS[index] != oldS[index]) return index; return boundary; }; Ajax.Autocompleter = Class.create(Autocompleter.Base, { initialize: function(element, update, url, options) { this.baseInitialize(element, update, options); this.options.asynchronous = true; this.options.onComplete = this.onComplete.bind(this); this.options.defaultParams = this.options.parameters || null; this.url = url; }, getUpdatedChoices: function() { this.startIndicator(); var entry = encodeURIComponent(this.options.paramName) + '=' + encodeURIComponent(this.getToken()); this.options.parameters = this.options.callback ? this.options.callback(this.element, entry) : entry; if(this.options.defaultParams) this.options.parameters += '&' + this.options.defaultParams; new Ajax.Request(this.url, this.options); }, onComplete: function(request) { this.updateChoices(request.responseText); } }); // The local array autocompleter. Used when you'd prefer to // inject an array of autocompletion options into the page, rather // than sending out Ajax queries, which can be quite slow sometimes. // // The constructor takes four parameters. The first two are, as usual, // the id of the monitored textbox, and id of the autocompletion menu. // The third is the array you want to autocomplete from, and the fourth // is the options block. // // Extra local autocompletion options: // - choices - How many autocompletion choices to offer // // - partialSearch - If false, the autocompleter will match entered // text only at the beginning of strings in the // autocomplete array. Defaults to true, which will // match text at the beginning of any *word* in the // strings in the autocomplete array. If you want to // search anywhere in the string, additionally set // the option fullSearch to true (default: off). // // - fullSsearch - Search anywhere in autocomplete array strings. // // - partialChars - How many characters to enter before triggering // a partial match (unlike minChars, which defines // how many characters are required to do any match // at all). Defaults to 2. // // - ignoreCase - Whether to ignore case when autocompleting. // Defaults to true. // // It's possible to pass in a custom function as the 'selector' // option, if you prefer to write your own autocompletion logic. // In that case, the other options above will not apply unless // you support them. Autocompleter.Local = Class.create(Autocompleter.Base, { initialize: function(element, update, array, options) { this.baseInitialize(element, update, options); this.options.array = array; }, getUpdatedChoices: function() { this.updateChoices(this.options.selector(this)); }, setOptions: function(options) { this.options = Object.extend({ choices: 10, partialSearch: true, partialChars: 2, ignoreCase: true, fullSearch: false, selector: function(instance) { var ret = []; // Beginning matches var partial = []; // Inside matches var entry = instance.getToken(); var count = 0; for (var i = 0; i < instance.options.array.length && ret.length < instance.options.choices ; i++) { var elem = instance.options.array[i]; var foundPos = instance.options.ignoreCase ? elem.toLowerCase().indexOf(entry.toLowerCase()) : elem.indexOf(entry); while (foundPos != -1) { if (foundPos == 0 && elem.length != entry.length) { ret.push("
  • " + elem.substr(0, entry.length) + "" + elem.substr(entry.length) + "
  • "); break; } else if (entry.length >= instance.options.partialChars && instance.options.partialSearch && foundPos != -1) { if (instance.options.fullSearch || /\s/.test(elem.substr(foundPos-1,1))) { partial.push("
  • " + elem.substr(0, foundPos) + "" + elem.substr(foundPos, entry.length) + "" + elem.substr( foundPos + entry.length) + "
  • "); break; } } foundPos = instance.options.ignoreCase ? elem.toLowerCase().indexOf(entry.toLowerCase(), foundPos + 1) : elem.indexOf(entry, foundPos + 1); } } if (partial.length) ret = ret.concat(partial.slice(0, instance.options.choices - ret.length)); return "
      " + ret.join('') + "
    "; } }, options || { }); } }); // AJAX in-place editor and collection editor // Full rewrite by Christophe Porteneuve (April 2007). // Use this if you notice weird scrolling problems on some browsers, // the DOM might be a bit confused when this gets called so do this // waits 1 ms (with setTimeout) until it does the activation Field.scrollFreeActivate = function(field) { setTimeout(function() { Field.activate(field); }, 1); }; Ajax.InPlaceEditor = Class.create({ initialize: function(element, url, options) { this.url = url; this.element = element = $(element); this.prepareOptions(); this._controls = { }; arguments.callee.dealWithDeprecatedOptions(options); // DEPRECATION LAYER!!! Object.extend(this.options, options || { }); if (!this.options.formId && this.element.id) { this.options.formId = this.element.id + '-inplaceeditor'; if ($(this.options.formId)) this.options.formId = ''; } if (this.options.externalControl) this.options.externalControl = $(this.options.externalControl); if (!this.options.externalControl) this.options.externalControlOnly = false; this._originalBackground = this.element.getStyle('background-color') || 'transparent'; this.element.title = this.options.clickToEditText; this._boundCancelHandler = this.handleFormCancellation.bind(this); this._boundComplete = (this.options.onComplete || Prototype.emptyFunction).bind(this); this._boundFailureHandler = this.handleAJAXFailure.bind(this); this._boundSubmitHandler = this.handleFormSubmission.bind(this); this._boundWrapperHandler = this.wrapUp.bind(this); this.registerListeners(); }, checkForEscapeOrReturn: function(e) { if (!this._editing || e.ctrlKey || e.altKey || e.shiftKey) return; if (Event.KEY_ESC == e.keyCode) this.handleFormCancellation(e); else if (Event.KEY_RETURN == e.keyCode) this.handleFormSubmission(e); }, createControl: function(mode, handler, extraClasses) { var control = this.options[mode + 'Control']; var text = this.options[mode + 'Text']; if ('button' == control) { var btn = document.createElement('input'); btn.type = 'submit'; btn.value = text; btn.className = 'editor_' + mode + '_button'; if ('cancel' == mode) btn.onclick = this._boundCancelHandler; this._form.appendChild(btn); this._controls[mode] = btn; } else if ('link' == control) { var link = document.createElement('a'); link.href = '#'; link.appendChild(document.createTextNode(text)); link.onclick = 'cancel' == mode ? this._boundCancelHandler : this._boundSubmitHandler; link.className = 'editor_' + mode + '_link'; if (extraClasses) link.className += ' ' + extraClasses; this._form.appendChild(link); this._controls[mode] = link; } }, createEditField: function() { var text = (this.options.loadTextURL ? this.options.loadingText : this.getText()); var fld; if (1 >= this.options.rows && !/\r|\n/.test(this.getText())) { fld = document.createElement('input'); fld.type = 'text'; var size = this.options.size || this.options.cols || 0; if (0 < size) fld.size = size; } else { fld = document.createElement('textarea'); fld.rows = (1 >= this.options.rows ? this.options.autoRows : this.options.rows); fld.cols = this.options.cols || 40; } fld.name = this.options.paramName; fld.value = text; // No HTML breaks conversion anymore fld.className = 'editor_field'; if (this.options.submitOnBlur) fld.onblur = this._boundSubmitHandler; this._controls.editor = fld; if (this.options.loadTextURL) this.loadExternalText(); this._form.appendChild(this._controls.editor); }, createForm: function() { var ipe = this; function addText(mode, condition) { var text = ipe.options['text' + mode + 'Controls']; if (!text || condition === false) return; ipe._form.appendChild(document.createTextNode(text)); }; this._form = $(document.createElement('form')); this._form.id = this.options.formId; this._form.addClassName(this.options.formClassName); this._form.onsubmit = this._boundSubmitHandler; this.createEditField(); if ('textarea' == this._controls.editor.tagName.toLowerCase()) this._form.appendChild(document.createElement('br')); if (this.options.onFormCustomization) this.options.onFormCustomization(this, this._form); addText('Before', this.options.okControl || this.options.cancelControl); this.createControl('ok', this._boundSubmitHandler); addText('Between', this.options.okControl && this.options.cancelControl); this.createControl('cancel', this._boundCancelHandler, 'editor_cancel'); addText('After', this.options.okControl || this.options.cancelControl); }, destroy: function() { if (this._oldInnerHTML) this.element.innerHTML = this._oldInnerHTML; this.leaveEditMode(); this.unregisterListeners(); }, enterEditMode: function(e) { if (this._saving || this._editing) return; this._editing = true; this.triggerCallback('onEnterEditMode'); if (this.options.externalControl) this.options.externalControl.hide(); this.element.hide(); this.createForm(); this.element.parentNode.insertBefore(this._form, this.element); if (!this.options.loadTextURL) this.postProcessEditField(); if (e) Event.stop(e); }, enterHover: function(e) { if (this.options.hoverClassName) this.element.addClassName(this.options.hoverClassName); if (this._saving) return; this.triggerCallback('onEnterHover'); }, getText: function() { return this.element.innerHTML.unescapeHTML(); }, handleAJAXFailure: function(transport) { this.triggerCallback('onFailure', transport); if (this._oldInnerHTML) { this.element.innerHTML = this._oldInnerHTML; this._oldInnerHTML = null; } }, handleFormCancellation: function(e) { this.wrapUp(); if (e) Event.stop(e); }, handleFormSubmission: function(e) { var form = this._form; var value = $F(this._controls.editor); this.prepareSubmission(); var params = this.options.callback(form, value) || ''; if (Object.isString(params)) params = params.toQueryParams(); params.editorId = this.element.id; if (this.options.htmlResponse) { var options = Object.extend({ evalScripts: true }, this.options.ajaxOptions); Object.extend(options, { parameters: params, onComplete: this._boundWrapperHandler, onFailure: this._boundFailureHandler }); new Ajax.Updater({ success: this.element }, this.url, options); } else { var options = Object.extend({ method: 'get' }, this.options.ajaxOptions); Object.extend(options, { parameters: params, onComplete: this._boundWrapperHandler, onFailure: this._boundFailureHandler }); new Ajax.Request(this.url, options); } if (e) Event.stop(e); }, leaveEditMode: function() { this.element.removeClassName(this.options.savingClassName); this.removeForm(); this.leaveHover(); this.element.style.backgroundColor = this._originalBackground; this.element.show(); if (this.options.externalControl) this.options.externalControl.show(); this._saving = false; this._editing = false; this._oldInnerHTML = null; this.triggerCallback('onLeaveEditMode'); }, leaveHover: function(e) { if (this.options.hoverClassName) this.element.removeClassName(this.options.hoverClassName); if (this._saving) return; this.triggerCallback('onLeaveHover'); }, loadExternalText: function() { this._form.addClassName(this.options.loadingClassName); this._controls.editor.disabled = true; var options = Object.extend({ method: 'get' }, this.options.ajaxOptions); Object.extend(options, { parameters: 'editorId=' + encodeURIComponent(this.element.id), onComplete: Prototype.emptyFunction, onSuccess: function(transport) { this._form.removeClassName(this.options.loadingClassName); var text = transport.responseText; if (this.options.stripLoadedTextTags) text = text.stripTags(); this._controls.editor.value = text; this._controls.editor.disabled = false; this.postProcessEditField(); }.bind(this), onFailure: this._boundFailureHandler }); new Ajax.Request(this.options.loadTextURL, options); }, postProcessEditField: function() { var fpc = this.options.fieldPostCreation; if (fpc) $(this._controls.editor)['focus' == fpc ? 'focus' : 'activate'](); }, prepareOptions: function() { this.options = Object.clone(Ajax.InPlaceEditor.DefaultOptions); Object.extend(this.options, Ajax.InPlaceEditor.DefaultCallbacks); [this._extraDefaultOptions].flatten().compact().each(function(defs) { Object.extend(this.options, defs); }.bind(this)); }, prepareSubmission: function() { this._saving = true; this.removeForm(); this.leaveHover(); this.showSaving(); }, registerListeners: function() { this._listeners = { }; var listener; $H(Ajax.InPlaceEditor.Listeners).each(function(pair) { listener = this[pair.value].bind(this); this._listeners[pair.key] = listener; if (!this.options.externalControlOnly) this.element.observe(pair.key, listener); if (this.options.externalControl) this.options.externalControl.observe(pair.key, listener); }.bind(this)); }, removeForm: function() { if (!this._form) return; this._form.remove(); this._form = null; this._controls = { }; }, showSaving: function() { this._oldInnerHTML = this.element.innerHTML; this.element.innerHTML = this.options.savingText; this.element.addClassName(this.options.savingClassName); this.element.style.backgroundColor = this._originalBackground; this.element.show(); }, triggerCallback: function(cbName, arg) { if ('function' == typeof this.options[cbName]) { this.options[cbName](this, arg); } }, unregisterListeners: function() { $H(this._listeners).each(function(pair) { if (!this.options.externalControlOnly) this.element.stopObserving(pair.key, pair.value); if (this.options.externalControl) this.options.externalControl.stopObserving(pair.key, pair.value); }.bind(this)); }, wrapUp: function(transport) { this.leaveEditMode(); // Can't use triggerCallback due to backward compatibility: requires // binding + direct element this._boundComplete(transport, this.element); } }); Object.extend(Ajax.InPlaceEditor.prototype, { dispose: Ajax.InPlaceEditor.prototype.destroy }); Ajax.InPlaceCollectionEditor = Class.create(Ajax.InPlaceEditor, { initialize: function($super, element, url, options) { this._extraDefaultOptions = Ajax.InPlaceCollectionEditor.DefaultOptions; $super(element, url, options); }, createEditField: function() { var list = document.createElement('select'); list.name = this.options.paramName; list.size = 1; this._controls.editor = list; this._collection = this.options.collection || []; if (this.options.loadCollectionURL) this.loadCollection(); else this.checkForExternalText(); this._form.appendChild(this._controls.editor); }, loadCollection: function() { this._form.addClassName(this.options.loadingClassName); this.showLoadingText(this.options.loadingCollectionText); var options = Object.extend({ method: 'get' }, this.options.ajaxOptions); Object.extend(options, { parameters: 'editorId=' + encodeURIComponent(this.element.id), onComplete: Prototype.emptyFunction, onSuccess: function(transport) { var js = transport.responseText.strip(); if (!/^\[.*\]$/.test(js)) // TODO: improve sanity check throw('Server returned an invalid collection representation.'); this._collection = eval(js); this.checkForExternalText(); }.bind(this), onFailure: this.onFailure }); new Ajax.Request(this.options.loadCollectionURL, options); }, showLoadingText: function(text) { this._controls.editor.disabled = true; var tempOption = this._controls.editor.firstChild; if (!tempOption) { tempOption = document.createElement('option'); tempOption.value = ''; this._controls.editor.appendChild(tempOption); tempOption.selected = true; } tempOption.update((text || '').stripScripts().stripTags()); }, checkForExternalText: function() { this._text = this.getText(); if (this.options.loadTextURL) this.loadExternalText(); else this.buildOptionList(); }, loadExternalText: function() { this.showLoadingText(this.options.loadingText); var options = Object.extend({ method: 'get' }, this.options.ajaxOptions); Object.extend(options, { parameters: 'editorId=' + encodeURIComponent(this.element.id), onComplete: Prototype.emptyFunction, onSuccess: function(transport) { this._text = transport.responseText.strip(); this.buildOptionList(); }.bind(this), onFailure: this.onFailure }); new Ajax.Request(this.options.loadTextURL, options); }, buildOptionList: function() { this._form.removeClassName(this.options.loadingClassName); this._collection = this._collection.map(function(entry) { return 2 === entry.length ? entry : [entry, entry].flatten(); }); var marker = ('value' in this.options) ? this.options.value : this._text; var textFound = this._collection.any(function(entry) { return entry[0] == marker; }.bind(this)); this._controls.editor.update(''); var option; this._collection.each(function(entry, index) { option = document.createElement('option'); option.value = entry[0]; option.selected = textFound ? entry[0] == marker : 0 == index; option.appendChild(document.createTextNode(entry[1])); this._controls.editor.appendChild(option); }.bind(this)); this._controls.editor.disabled = false; Field.scrollFreeActivate(this._controls.editor); } }); //**** DEPRECATION LAYER FOR InPlace[Collection]Editor! **** //**** This only exists for a while, in order to let **** //**** users adapt to the new API. Read up on the new **** //**** API and convert your code to it ASAP! **** Ajax.InPlaceEditor.prototype.initialize.dealWithDeprecatedOptions = function(options) { if (!options) return; function fallback(name, expr) { if (name in options || expr === undefined) return; options[name] = expr; }; fallback('cancelControl', (options.cancelLink ? 'link' : (options.cancelButton ? 'button' : options.cancelLink == options.cancelButton == false ? false : undefined))); fallback('okControl', (options.okLink ? 'link' : (options.okButton ? 'button' : options.okLink == options.okButton == false ? false : undefined))); fallback('highlightColor', options.highlightcolor); fallback('highlightEndColor', options.highlightendcolor); }; Object.extend(Ajax.InPlaceEditor, { DefaultOptions: { ajaxOptions: { }, autoRows: 3, // Use when multi-line w/ rows == 1 cancelControl: 'link', // 'link'|'button'|false cancelText: 'cancel', clickToEditText: 'Click to edit', externalControl: null, // id|elt externalControlOnly: false, fieldPostCreation: 'activate', // 'activate'|'focus'|false formClassName: 'inplaceeditor-form', formId: null, // id|elt highlightColor: '#ffff99', highlightEndColor: '#ffffff', hoverClassName: '', htmlResponse: true, loadingClassName: 'inplaceeditor-loading', loadingText: 'Loading...', okControl: 'button', // 'link'|'button'|false okText: 'ok', paramName: 'value', rows: 1, // If 1 and multi-line, uses autoRows savingClassName: 'inplaceeditor-saving', savingText: 'Saving...', size: 0, stripLoadedTextTags: false, submitOnBlur: false, textAfterControls: '', textBeforeControls: '', textBetweenControls: '' }, DefaultCallbacks: { callback: function(form) { return Form.serialize(form); }, onComplete: function(transport, element) { // For backward compatibility, this one is bound to the IPE, and passes // the element directly. It was too often customized, so we don't break it. new Effect.Highlight(element, { startcolor: this.options.highlightColor, keepBackgroundImage: true }); }, onEnterEditMode: null, onEnterHover: function(ipe) { ipe.element.style.backgroundColor = ipe.options.highlightColor; if (ipe._effect) ipe._effect.cancel(); }, onFailure: function(transport, ipe) { alert('Error communication with the server: ' + transport.responseText.stripTags()); }, onFormCustomization: null, // Takes the IPE and its generated form, after editor, before controls. onLeaveEditMode: null, onLeaveHover: function(ipe) { ipe._effect = new Effect.Highlight(ipe.element, { startcolor: ipe.options.highlightColor, endcolor: ipe.options.highlightEndColor, restorecolor: ipe._originalBackground, keepBackgroundImage: true }); } }, Listeners: { click: 'enterEditMode', keydown: 'checkForEscapeOrReturn', mouseover: 'enterHover', mouseout: 'leaveHover' } }); Ajax.InPlaceCollectionEditor.DefaultOptions = { loadingCollectionText: 'Loading options...' }; // Delayed observer, like Form.Element.Observer, // but waits for delay after last key input // Ideal for live-search fields Form.Element.DelayedObserver = Class.create({ initialize: function(element, delay, callback) { this.delay = delay || 0.5; this.element = $(element); this.callback = callback; this.timer = null; this.lastValue = $F(this.element); Event.observe(this.element,'keyup',this.delayedListener.bindAsEventListener(this)); }, delayedListener: function(event) { if(this.lastValue == $F(this.element)) return; if(this.timer) clearTimeout(this.timer); this.timer = setTimeout(this.onTimerEvent.bind(this), this.delay * 1000); this.lastValue = $F(this.element); }, onTimerEvent: function() { this.timer = null; this.callback(this.element, $F(this.element)); } });webcit-8.24-dfsg.orig/static/scriptaculous.js0000644000175000017500000000556312271477123021136 0ustar michaelmichael// script.aculo.us scriptaculous.js v1.9.0, Thu Dec 23 16:54:48 -0500 2010 // Copyright (c) 2005-2010 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us) // // Permission is hereby granted, free of charge, to any person obtaining // a copy of this software and associated documentation files (the // "Software"), to deal in the Software without restriction, including // without limitation the rights to use, copy, modify, merge, publish, // distribute, sublicense, and/or sell copies of the Software, and to // permit persons to whom the Software is furnished to do so, subject to // the following conditions: // // The above copyright notice and this permission notice shall be // included in all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // // For details, see the script.aculo.us web site: http://script.aculo.us/ var Scriptaculous = { Version: '1.9.0', require: function(libraryName) { try{ // inserting via DOM fails in Safari 2.0, so brute force approach document.write('\n", ((WC->CurRoom.RAFlags & UA_ISTRASH) != 0) ); /* * If the user happens to select the "make this my start page" link, * we want it to remember the URL as a "/dotskip" one instead of * a "skip" or "gotonext" or something like that. */ if (WCC->Hdr->this_page == NULL) { WCC->Hdr->this_page = NewStrBuf(); } StrBufPrintf(WCC->Hdr->this_page, "dotskip?room=%s", ChrPtr(WC->CurRoom.name)); do_template("roombanner"); do_template("navbar"); wc_printf("
    \n"); } /******************************************************************************* ********************** FLOOR Tokens ******************************************* *******************************************************************************/ void tmplput_FLOOR_ID(StrBuf *Target, WCTemplputParams *TP) { Floor *myFloor = (Floor *)CTX(CTX_FLOORS); StrBufAppendPrintf(Target, "%d", myFloor->ID); } void tmplput_ROOM_FLOORID(StrBuf *Target, WCTemplputParams *TP) { folder *Folder = (folder *)CTX(CTX_ROOMS); StrBufAppendPrintf(Target, "%d", Folder->floorid); } void tmplput_ROOM_FLOOR_ID(StrBuf *Target, WCTemplputParams *TP) { folder *Folder = (folder *)CTX(CTX_ROOMS); const Floor *pFloor = Folder->Floor; if (pFloor == NULL) return; StrBufAppendPrintf(Target, "%d", pFloor->ID); } void tmplput_ROOM_FLOOR_NAME(StrBuf *Target, WCTemplputParams *TP) { folder *Folder = (folder *)CTX(CTX_ROOMS); const Floor *pFloor = Folder->Floor; if (pFloor == NULL) return; StrBufAppendTemplate(Target, TP, pFloor->Name, 0); } void tmplput_ThisRoomFloorName(StrBuf *Target, WCTemplputParams *TP) { wcsession *WCC = WC; folder *Folder = &WCC->CurRoom; const Floor *pFloor; if (Folder == NULL) return; pFloor = Folder->Floor; if (pFloor == NULL) return; StrBufAppendTemplate(Target, TP, pFloor->Name, 0); } void tmplput_FLOOR_NAME(StrBuf *Target, WCTemplputParams *TP) { Floor *myFloor = (Floor *)CTX(CTX_FLOORS); StrBufAppendTemplate(Target, TP, myFloor->Name, 0); } void tmplput_FLOOR_NROOMS(StrBuf *Target, WCTemplputParams *TP) { Floor *myFloor = (Floor *)CTX(CTX_FLOORS); StrBufAppendPrintf(Target, "%d", myFloor->NRooms); } void tmplput_ROOM_FLOOR_NROOMS(StrBuf *Target, WCTemplputParams *TP) { folder *Folder = (folder *)CTX(CTX_ROOMS); const Floor *pFloor = Folder->Floor; if (pFloor == NULL) return; StrBufAppendPrintf(Target, "%d", pFloor->NRooms); } int ConditionalFloorHaveNRooms(StrBuf *Target, WCTemplputParams *TP) { Floor *MyFloor = (Floor *)CTX(CTX_FLOORS); int HaveN; HaveN = GetTemplateTokenNumber(Target, TP, 0, 0); return HaveN == MyFloor->NRooms; } int ConditionalFloorIsRESTSubFloor(StrBuf *Target, WCTemplputParams *TP) { wcsession *WCC = WC; Floor *MyFloor = (Floor *)CTX(CTX_FLOORS); /** if we have dav_depth the client just wants the subfloors */ if ((WCC->Hdr->HR.dav_depth == 1) && (GetCount(WCC->Directory) == 0)) return 1; return WCC->CurrentFloor == MyFloor; } int ConditionalFloorIsSUBROOM(StrBuf *Target, WCTemplputParams *TP) { wcsession *WCC = WC; Floor *MyFloor = (Floor *)CTX(CTX_FLOORS); return WCC->CurRoom.floorid == MyFloor->ID; } int ConditionalFloorIsVirtual(StrBuf *Target, WCTemplputParams *TP) { Floor *MyFloor = (Floor *)CTX(CTX_FLOORS); return MyFloor->ID == VIRTUAL_MY_FLOOR; } /******************************************************************************* ********************** ROOM Tokens ******************************************** *******************************************************************************/ /**** Name ******/ void tmplput_ThisRoom(StrBuf *Target, WCTemplputParams *TP) { wcsession *WCC = WC; if (WCC != NULL) { StrBufAppendTemplate(Target, TP, WCC->CurRoom.name, 0 ); } } void tmplput_ROOM_NAME(StrBuf *Target, WCTemplputParams *TP) { folder *Folder = (folder *)CTX(CTX_ROOMS); StrBufAppendTemplate(Target, TP, Folder->name, 0); } void tmplput_ROOM_BASENAME(StrBuf *Target, WCTemplputParams *TP) { folder *room = (folder *)CTX(CTX_ROOMS); if (room->nRoomNameParts > 1) StrBufAppendTemplate(Target, TP, room->RoomNameParts[room->nRoomNameParts - 1], 0); else StrBufAppendTemplate(Target, TP, room->name, 0); } void tmplput_ROOM_LEVEL_N_TIMES(StrBuf *Target, WCTemplputParams *TP) { folder *room = (folder *)CTX(CTX_ROOMS); int i; const char *AppendMe; long AppendMeLen; if (room->nRoomNameParts > 1) { GetTemplateTokenString(Target, TP, 0, &AppendMe, &AppendMeLen); for (i = 0; i < room->nRoomNameParts; i++) StrBufAppendBufPlain(Target, AppendMe, AppendMeLen, 0); } } int ConditionalRoomIsInbox(StrBuf *Target, WCTemplputParams *TP) { folder *Folder = (folder *)CTX(CTX_ROOMS); return Folder->is_inbox; } int ConditionalRoomIsType(StrBuf *Target, WCTemplputParams *TP) { folder *Folder = (folder *)CTX(CTX_ROOMS); if (Folder == NULL) return 0; if ((TP->Tokens->nParameters < 3)) { return ((Folder->view < VIEW_BBS) || (Folder->view > VIEW_MAX)); } return Folder->view == GetTemplateTokenNumber(Target, TP, 2, VIEW_BBS); } /****** Properties ******/ int ConditionalRoom_MayEdit(StrBuf *Target, WCTemplputParams *TP) { wcsession *WCC = WC; LoadRoomXA (); return WCC->CurRoom.XALoaded == 1; } int ConditionalThisRoomHas_QRFlag(StrBuf *Target, WCTemplputParams *TP) { long QR_CheckFlag; wcsession *WCC = WC; QR_CheckFlag = GetTemplateTokenNumber(Target, TP, 2, 0); if (QR_CheckFlag == 0) LogTemplateError(Target, "Conditional", ERR_PARM1, TP, "requires one of the #\"QR*\"- defines or an integer flag 0 is invalid!"); if (WCC == NULL) return 0; if ((TP->Tokens->Params[2]->MaskBy == eOR) || (TP->Tokens->Params[2]->MaskBy == eNO)) return (WCC->CurRoom.QRFlags & QR_CheckFlag) != 0; else return (WCC->CurRoom.QRFlags & QR_CheckFlag) == QR_CheckFlag; } int ConditionalRoomHas_QRFlag(StrBuf *Target, WCTemplputParams *TP) { long QR_CheckFlag; folder *Folder = (folder *)(TP->Context); QR_CheckFlag = GetTemplateTokenNumber(Target, TP, 2, 0); if (QR_CheckFlag == 0) LogTemplateError(Target, "Conditional", ERR_PARM1, TP, "requires one of the #\"QR*\"- defines or an integer flag 0 is invalid!"); if ((TP->Tokens->Params[2]->MaskBy == eOR) || (TP->Tokens->Params[2]->MaskBy == eNO)) return (Folder->QRFlags & QR_CheckFlag) != 0; else return (Folder->QRFlags & QR_CheckFlag) == QR_CheckFlag; } void tmplput_ROOM_QRFLAGS(StrBuf *Target, WCTemplputParams *TP) { folder *Folder = (folder *)CTX(CTX_ROOMS); StrBufAppendPrintf(Target, "%d", Folder->QRFlags); } int ConditionalThisRoomHas_QRFlag2(StrBuf *Target, WCTemplputParams *TP) { long QR2_CheckFlag; wcsession *WCC = WC; QR2_CheckFlag = GetTemplateTokenNumber(Target, TP, 2, 0); if (QR2_CheckFlag == 0) LogTemplateError(Target, "Conditional", ERR_PARM1, TP, "requires one of the #\"QR2*\"- defines or an integer flag 0 is invalid!"); if (WCC == NULL) return 0; if ((TP->Tokens->Params[2]->MaskBy == eOR) || (TP->Tokens->Params[2]->MaskBy == eNO)) return (WCC->CurRoom.QRFlags2 & QR2_CheckFlag) != 0; else return (WCC->CurRoom.QRFlags2 & QR2_CheckFlag) == QR2_CheckFlag; } int ConditionalRoomHas_QRFlag2(StrBuf *Target, WCTemplputParams *TP) { long QR2_CheckFlag; folder *Folder = (folder *)(TP->Context); QR2_CheckFlag = GetTemplateTokenNumber(Target, TP, 2, 0); if (QR2_CheckFlag == 0) LogTemplateError(Target, "Conditional", ERR_PARM1, TP, "requires one of the #\"QR2*\"- defines or an integer flag 0 is invalid!"); return ((Folder->QRFlags2 & QR2_CheckFlag) != 0); } int ConditionalRoomHas_UAFlag(StrBuf *Target, WCTemplputParams *TP) { folder *Folder = (folder *)(TP->Context); long UA_CheckFlag; UA_CheckFlag = GetTemplateTokenNumber(Target, TP, 2, 0); if (UA_CheckFlag == 0) LogTemplateError(Target, "Conditional", ERR_PARM1, TP, "requires one of the #\"UA_*\"- defines or an integer flag 0 is invalid!"); return ((Folder->RAFlags & UA_CheckFlag) != 0); } void tmplput_ROOM_ACL(StrBuf *Target, WCTemplputParams *TP) { folder *Folder = (folder *)CTX(CTX_ROOMS); StrBufAppendPrintf(Target, "%ld", Folder->RAFlags, 0); } void tmplput_ROOM_RAFLAGS(StrBuf *Target, WCTemplputParams *TP) { folder *Folder = (folder *)(TP->Context); StrBufAppendPrintf(Target, "%d", Folder->RAFlags); } void tmplput_ThisRoomAide(StrBuf *Target, WCTemplputParams *TP) { wcsession *WCC = WC; LoadRoomAide(); StrBufAppendTemplate(Target, TP, WCC->CurRoom.RoomAide, 0); } int ConditionalRoomAide(StrBuf *Target, WCTemplputParams *TP) { wcsession *WCC = WC; return (WCC != NULL)? ((WCC->CurRoom.RAFlags & UA_ADMINALLOWED) != 0) : 0; } int ConditionalRoomAcessDelete(StrBuf *Target, WCTemplputParams *TP) { wcsession *WCC = WC; return (WCC == NULL)? 0 : ( ((WCC->CurRoom.RAFlags & UA_ADMINALLOWED) != 0) || (WCC->CurRoom.is_inbox) || (WCC->CurRoom.QRFlags2 & QR2_COLLABDEL) ); } int ConditionalHaveRoomeditRights(StrBuf *Target, WCTemplputParams *TP) { wcsession *WCC = WC; return ( (WCC != NULL) && (WCC->logged_in) && ( (WCC->axlevel >= 6) || ((WCC->CurRoom.RAFlags & UA_ADMINALLOWED) != 0) || (WCC->CurRoom.is_inbox) ) ); } void tmplput_ThisRoomPass(StrBuf *Target, WCTemplputParams *TP) { wcsession *WCC = WC; LoadRoomXA(); StrBufAppendTemplate(Target, TP, WCC->CurRoom.XAPass, 0); } void tmplput_ThisRoom_nNewMessages(StrBuf *Target, WCTemplputParams *TP) { wcsession *WCC = WC; StrBufAppendPrintf(Target, "%d", WCC->CurRoom.nNewMessages); } void tmplput_ThisRoom_nTotalMessages(StrBuf *Target, WCTemplputParams *TP) { wcsession *WCC = WC; StrBufAppendPrintf(Target, "%d", WCC->CurRoom.nTotalMessages); } void tmplput_ThisRoomOrder(StrBuf *Target, WCTemplputParams *TP) { wcsession *WCC = WC; LoadRoomXA(); StrBufAppendPrintf(Target, "%d", WCC->CurRoom.Order); } int ConditionalThisRoomOrder(StrBuf *Target, WCTemplputParams *TP) { wcsession *WCC = WC; long CheckThis; if (WCC == NULL) return 0; LoadRoomXA(); CheckThis = GetTemplateTokenNumber(Target, TP, 2, 0); return CheckThis == WCC->CurRoom.Order; } void tmplput_ROOM_LISTORDER(StrBuf *Target, WCTemplputParams *TP) { folder *Folder = (folder *)CTX(CTX_ROOMS); StrBufAppendPrintf(Target, "%d", Folder->Order); } int ConditionalThisRoomXHavePic(StrBuf *Target, WCTemplputParams *TP) { wcsession *WCC = WC; if (WCC == NULL) return 0; LoadXRoomPic(); return WCC->CurRoom.XHaveRoomPic == 1; } int ConditionalThisRoomXHaveInfoText(StrBuf *Target, WCTemplputParams *TP) { wcsession *WCC = WC; if (WCC == NULL) return 0; LoadXRoomInfoText(); return (StrLength(WCC->CurRoom.XInfoText)>0); } void tmplput_ThisRoomInfoText(StrBuf *Target, WCTemplputParams *TP) { wcsession *WCC = WC; long nchars = 0; LoadXRoomInfoText(); nchars = GetTemplateTokenNumber(Target, TP, 0, 0); if (!nchars) { /* the whole thing */ StrBufAppendTemplate(Target, TP, WCC->CurRoom.XInfoText, 1); } else { /* only a certain number of characters */ StrBuf *SubBuf; SubBuf = NewStrBufDup(WCC->CurRoom.XInfoText); if (StrLength(SubBuf) > nchars) { StrBuf_Utf8StrCut(SubBuf, nchars); StrBufAppendBufPlain(SubBuf, HKEY("..."), 0); } StrBufAppendTemplate(Target, TP, SubBuf, 1); FreeStrBuf(&SubBuf); } } void tmplput_ROOM_LASTCHANGE(StrBuf *Target, WCTemplputParams *TP) { folder *Folder = (folder *)CTX(CTX_ROOMS); StrBufAppendPrintf(Target, "%d", Folder->lastchange); } void tmplput_ThisRoomDirectory(StrBuf *Target, WCTemplputParams *TP) { wcsession *WCC = WC; LoadRoomXA(); StrBufAppendTemplate(Target, TP, WCC->CurRoom.Directory, 0); } void tmplput_ThisRoomXNFiles(StrBuf *Target, WCTemplputParams *TP) { wcsession *WCC = WC; LoadXRoomXCountFiles(); StrBufAppendPrintf(Target, "%d", WCC->CurRoom.XDownloadCount); } void tmplput_ThisRoomX_FileString(StrBuf *Target, WCTemplputParams *TP) { wcsession *WCC = WC; LoadXRoomXCountFiles(); if (WCC->CurRoom.XDownloadCount == 1) StrBufAppendBufPlain(Target, _("file"), -1, 0); else StrBufAppendBufPlain(Target, _("files"), -1, 0); } int ConditionalIsThisThatRoom(StrBuf *Target, WCTemplputParams *TP) { folder *Folder = (folder *)CTX(CTX_ROOMS); wcsession *WCC = WC; if (WCC == NULL) return 0; return Folder == WCC->ThisRoom; } int ConditionalRoomIsName(StrBuf *Target, WCTemplputParams *TP) { folder *Folder = (folder *)CTX(CTX_ROOMS); const char *CheckRoomName = NULL; long CheckRoomNameLen; GetTemplateTokenString(Target, TP, 3, &CheckRoomName, &CheckRoomNameLen); if (CheckRoomName == NULL) return 0; return strcmp(ChrPtr(Folder->name), CheckRoomName) == 0; } void InitModule_ROOMTOKENS (void) { /* we duplicate this, just to be shure its already done. */ RegisterCTX(CTX_ROOMS); RegisterCTX(CTX_FLOORS); RegisterNamespace("ROOMBANNER", 0, 1, tmplput_roombanner, NULL, CTX_NONE); RegisterNamespace("FLOOR:ID", 0, 0, tmplput_FLOOR_ID, NULL, CTX_FLOORS); RegisterNamespace("ROOM:INFO:FLOORID", 0, 1, tmplput_ROOM_FLOORID, NULL, CTX_ROOMS); RegisterNamespace("ROOM:INFO:FLOOR:ID", 0, 0, tmplput_ROOM_FLOOR_ID, NULL, CTX_ROOMS); RegisterNamespace("FLOOR:NAME", 0, 1, tmplput_FLOOR_NAME, NULL, CTX_FLOORS); RegisterNamespace("ROOM:INFO:FLOOR:NAME", 0, 1, tmplput_ROOM_FLOOR_NAME, NULL, CTX_ROOMS); RegisterNamespace("THISROOM:FLOOR:NAME", 0, 1, tmplput_ThisRoomFloorName, NULL, CTX_NONE); RegisterNamespace("FLOOR:NROOMS", 0, 0, tmplput_FLOOR_NROOMS, NULL, CTX_FLOORS); RegisterNamespace("ROOM:INFO:FLOOR:NROOMS", 0, 0, tmplput_ROOM_FLOOR_NROOMS, NULL, CTX_ROOMS); RegisterConditional("COND:FLOOR:ISSUBROOM", 0, ConditionalFloorIsSUBROOM, CTX_FLOORS); RegisterConditional("COND:FLOOR:NROOMS", 1, ConditionalFloorHaveNRooms, CTX_FLOORS); RegisterConditional("COND:ROOM:REST:ISSUBFLOOR", 0, ConditionalFloorIsRESTSubFloor, CTX_FLOORS); RegisterConditional("COND:FLOOR:ISVIRTUAL", 0, ConditionalFloorIsVirtual, CTX_FLOORS); /**** Room... ******/ /**** Name ******/ RegisterNamespace("THISROOM:NAME", 0, 1, tmplput_ThisRoom, NULL, CTX_NONE); RegisterNamespace("ROOM:INFO:NAME", 0, 1, tmplput_ROOM_NAME, NULL, CTX_ROOMS); RegisterNamespace("ROOM:INFO:BASENAME", 0, 1, tmplput_ROOM_BASENAME, NULL, CTX_ROOMS); RegisterNamespace("ROOM:INFO:LEVELNTIMES", 1, 2, tmplput_ROOM_LEVEL_N_TIMES, NULL, CTX_ROOMS); RegisterConditional("COND:ROOM:INFO:IS_INBOX", 0, ConditionalRoomIsInbox, CTX_ROOMS); RegisterConditional("COND:ROOM:INFO:TYPE_IS", 0, ConditionalRoomIsType, CTX_ROOMS); RegisterConditional("COND:ROOM:INFO:NAME_IS", 1, ConditionalRoomIsName, CTX_ROOMS); /****** Properties ******/ RegisterNamespace("ROOM:INFO:QRFLAGS", 0, 1, tmplput_ROOM_QRFLAGS, NULL, CTX_ROOMS); RegisterConditional("COND:THISROOM:FLAG:QR", 0, ConditionalThisRoomHas_QRFlag, CTX_NONE); RegisterConditional("COND:THISROOM:EDIT", 0, ConditionalRoom_MayEdit, CTX_NONE); RegisterConditional("COND:ROOM:FLAG:QR", 0, ConditionalRoomHas_QRFlag, CTX_ROOMS); RegisterConditional("COND:THISROOM:FLAG:QR2", 0, ConditionalThisRoomHas_QRFlag2, CTX_NONE); RegisterConditional("COND:ROOM:FLAG:QR2", 0, ConditionalRoomHas_QRFlag2, CTX_ROOMS); RegisterConditional("COND:ROOM:FLAG:UA", 0, ConditionalRoomHas_UAFlag, CTX_ROOMS); RegisterNamespace("ROOM:INFO:RAFLAGS", 0, 1, tmplput_ROOM_RAFLAGS, NULL, CTX_ROOMS); RegisterNamespace("ROOM:INFO:LISTORDER", 0, 1, tmplput_ROOM_LISTORDER, NULL, CTX_ROOMS); RegisterNamespace("THISROOM:ORDER", 0, 0, tmplput_ThisRoomOrder, NULL, CTX_NONE); RegisterConditional("COND:THISROOM:ORDER", 0, ConditionalThisRoomOrder, CTX_NONE); RegisterNamespace("ROOM:INFO:LASTCHANGE", 0, 1, tmplput_ROOM_LASTCHANGE, NULL, CTX_ROOMS); RegisterNamespace("THISROOM:MSGS:NEW", 0, 0, tmplput_ThisRoom_nNewMessages, NULL, CTX_NONE); RegisterNamespace("THISROOM:MSGS:TOTAL", 0, 0, tmplput_ThisRoom_nTotalMessages, NULL, CTX_NONE); RegisterNamespace("THISROOM:PASS", 0, 1, tmplput_ThisRoomPass, NULL, CTX_NONE); RegisterNamespace("THISROOM:AIDE", 0, 1, tmplput_ThisRoomAide, NULL, CTX_NONE); RegisterConditional("COND:ROOMAIDE", 2, ConditionalRoomAide, CTX_NONE); RegisterConditional("COND:ACCESS:DELETE", 2, ConditionalRoomAcessDelete, CTX_NONE); RegisterConditional("COND:ROOM:EDITACCESS", 0, ConditionalHaveRoomeditRights, CTX_NONE); RegisterConditional("COND:THISROOM:HAVE_PIC", 0, ConditionalThisRoomXHavePic, CTX_NONE); RegisterNamespace("THISROOM:INFOTEXT", 1, 2, tmplput_ThisRoomInfoText, NULL, CTX_NONE); RegisterConditional("COND:THISROOM:HAVE_INFOTEXT", 0, ConditionalThisRoomXHaveInfoText, CTX_NONE); RegisterNamespace("THISROOM:FILES:N", 0, 1, tmplput_ThisRoomXNFiles, NULL, CTX_NONE); RegisterNamespace("THISROOM:FILES:STR", 0, 1, tmplput_ThisRoomX_FileString, NULL, CTX_NONE); RegisterNamespace("THISROOM:DIRECTORY", 0, 1, tmplput_ThisRoomDirectory, NULL, CTX_NONE); RegisterNamespace("ROOM:INFO:ACL", 0, 1, tmplput_ROOM_ACL, NULL, CTX_ROOMS); RegisterConditional("COND:THIS:THAT:ROOM", 0, ConditionalIsThisThatRoom, CTX_ROOMS); } webcit-8.24-dfsg.orig/selenium/0000755000175000017500000000000012271477123016221 5ustar michaelmichaelwebcit-8.24-dfsg.orig/selenium/login_out0000644000175000017500000000174012271477123020145 0ustar michaelmichael login_out
    login_out
    open /
    type uname testuser
    type pname testpass
    clickAndWait login_action
    click link=Abmelden
    assertConfirmation Jetzt abmelden?
    webcit-8.24-dfsg.orig/selenium/Tasks0000644000175000017500000000415012271477123017231 0ustar michaelmichael Tasks
    Tasks
    open /
    type uname testuser
    type pname testpass
    select lname label=C
    clickAndWait login_action
    clickAndWait //ul[@id='button']/li[7]/a/img
    clickAndWait //div[@id='navbar']/ul/li[3]/a/span
    clickAndWait link=Add new task
    type summary testtask
    type category testcategory
    type description test description
    clickAndWait save_button
    clickAndWait link=testtask
    type description test description edited
    clickAndWait save_button
    clickAndWait link=testtask
    type description test description edited cancel
    clickAndWait cancel_button
    clickAndWait link=testtask
    clickAndWait delete_button
    clickAndWait //ul[@id='button']/li[12]/a/img
    assertConfirmation Log off now?
    webcit-8.24-dfsg.orig/selenium/LoginLogOut0000644000175000017500000000203312271477123020344 0ustar michaelmichael LoginLogOut
    LoginLogOut
    open /
    type uname testuser
    type pname testpass
    select lname label=C
    clickAndWait login_action
    click //ul[@id='button']/li[12]/a/img
    assertConfirmation Log off now?
    webcit-8.24-dfsg.orig/selenium/LoginEditcontactLogout0000644000175000017500000000641712271477123022600 0ustar michaelmichael LoginEditcontactLogout
    LoginEditcontactLogout
    open /
    type uname testuser
    type pname testpass
    select lname label=C
    clickAndWait login_action
    clickAndWait link=Summary
    clickAndWait link=testuser
    clickAndWait //ul[@id='button']/li[2]/a/img
    clickAndWait //div[@id='msg_inner']/table/tbody/tr[1]/td[1]/a
    clickAndWait //div[@id='navbar']/ul/li[3]/a/span
    type subject_id hallo
    clickAndWait send_button
    clickAndWait //ul[@id='button']/li[4]/a/img
    clickAndWait link=17
    clickAndWait link=exact:12:00
    type summary testevent
    type location testcity
    type description testing events
    click tabtd1
    type attendees_box testtest@outgesourced.org
    click tabtd2
    click tabtd1
    clickAndWait save_button
    clickAndWait link=testevent
    clickAndWait save_button
    clickAndWait link=testevent
    clickAndWait delete_button
    clickAndWait //ul[@id='button']/li[5]/a/img
    clickAndWait link=Add new contact
    type firstname testcontact
    type lastname testname
    type primary_inetemail testtest@outgesourced.org
    clickAndWait ok_button
    clickAndWait link=testname, testcontact
    clickAndWait link=[edit]
    type extadr testroad
    clickAndWait ok_button
    click link=Log off
    assertConfirmation Log off now?
    webcit-8.24-dfsg.orig/selenium/webcit0000644000175000017500000000146312271477123017425 0ustar michaelmichael Test Suite
    Test Suite
    LoginLogOut
    LoginEditcontactLogout
    LoginNoteseditingLogout
    Tasks
    ChangeIdentity
    webcit-8.24-dfsg.orig/selenium/ChangeIdentity0000644000175000017500000000354512271477123021052 0ustar michaelmichael ChangeIdentity
    ChangeIdentity
    open /
    type uname testuser
    type pname testpass
    select lname label=C
    clickAndWait login_action
    clickAndWait //ul[@id='button']/li[9]/a/img
    clickAndWait link=(edit)
    type fake_roomname test fake room
    click change_room_name_button
    clickAndWait //ul[@id='button']/li[9]/a/img
    clickAndWait link=(edit)
    type fake_hostname test fake host
    clickAndWait change_host_name_button
    clickAndWait //ul[@id='button']/li[9]/a/img
    clickAndWait link=(edit)
    clickAndWait cancel_button
    clickAndWait //ul[@id='button']/li[12]/a/img
    assertConfirmation Log off now?
    webcit-8.24-dfsg.orig/selenium/LoginNoteseditingLogout0000644000175000017500000000376112271477123022772 0ustar michaelmichael LoginNoteseditingLogout
    LoginNoteseditingLogout
    open /
    type uname testuser
    type pname testpass
    select lname label=C
    clickAndWait login_action
    clickAndWait //ul[@id='button']/li[6]/a/img
    clickAndWait link=Add new note
    click class=stickynote_body
    type value testnote
    click //input[@value='Save']
    clickAndWait //ul[@id='button']/li[6]/a/img
    click class=stickynote_body
    type value testnote edited
    click //input[@value='Save']
    clickAndWait //ul[@id='button']/li[6]/a/img
    click class=stickynote_body
    type value testnote edited not saving
    click link=Cancel
    clickAndWait //ul[@id='button']/li[12]/a/img
    assertConfirmation Log off now?
    webcit-8.24-dfsg.orig/msg_renderers.c0000644000175000017500000014174512271477123017417 0ustar michaelmichael#include "webcit.h" #include "webserver.h" #include "dav.h" CtxType CTX_MAILSUM = CTX_NONE; CtxType CTX_MIME_ATACH = CTX_NONE; inline void CheckConvertBufs(struct wcsession *WCC) { if (WCC->ConvertBuf1 == NULL) WCC->ConvertBuf1 = NewStrBuf(); if (WCC->ConvertBuf2 == NULL) WCC->ConvertBuf2 = NewStrBuf(); } /* * message index functions */ void DestroyMimeParts(wc_mime_attachment *Mime) { FreeStrBuf(&Mime->Name); FreeStrBuf(&Mime->FileName); FreeStrBuf(&Mime->PartNum); FreeStrBuf(&Mime->Disposition); FreeStrBuf(&Mime->ContentType); FreeStrBuf(&Mime->Charset); FreeStrBuf(&Mime->Data); } void DestroyMime(void *vMime) { wc_mime_attachment *Mime = (wc_mime_attachment*)vMime; DestroyMimeParts(Mime); free(Mime); } void DestroyMessageSummary(void *vMsg) { message_summary *Msg = (message_summary*) vMsg; FreeStrBuf(&Msg->from); FreeStrBuf(&Msg->to); FreeStrBuf(&Msg->subj); FreeStrBuf(&Msg->reply_inreplyto); FreeStrBuf(&Msg->reply_references); FreeStrBuf(&Msg->cccc); FreeStrBuf(&Msg->ReplyTo); FreeStrBuf(&Msg->hnod); FreeStrBuf(&Msg->AllRcpt); FreeStrBuf(&Msg->Room); FreeStrBuf(&Msg->Rfca); FreeStrBuf(&Msg->EnvTo); FreeStrBuf(&Msg->OtherNode); DeleteHash(&Msg->Attachments); /* list of Attachments */ DeleteHash(&Msg->Submessages); DeleteHash(&Msg->AttachLinks); DeleteHash(&Msg->AllAttach); free(Msg); } void RegisterMsgHdr(const char *HeaderName, long HdrNLen, ExamineMsgHeaderFunc evaluator, int type) { headereval *ev; ev = (headereval*) malloc(sizeof(headereval)); ev->evaluator = evaluator; ev->Type = type; Put(MsgHeaderHandler, HeaderName, HdrNLen, ev, NULL); } void RegisterMimeRenderer(const char *HeaderName, long HdrNLen, RenderMimeFunc MimeRenderer, int InlineRenderable, int Priority) { RenderMimeFuncStruct *f; f = (RenderMimeFuncStruct*) malloc(sizeof(RenderMimeFuncStruct)); f->f = MimeRenderer; Put(MimeRenderHandler, HeaderName, HdrNLen, f, NULL); if (InlineRenderable) RegisterEmbeddableMimeType(HeaderName, HdrNLen, 10000 - Priority); } /*----------------------------------------------------------------------------*/ /* * comparator for two longs in descending order. */ int longcmp_r(const void *s1, const void *s2) { long l1; long l2; l1 = *(long *)GetSearchPayload(s1); l2 = *(long *)GetSearchPayload(s2); if (l1 > l2) return(-1); if (l1 < l2) return(+1); return(0); } /* * comparator for longs; descending order. */ int qlongcmp_r(const void *s1, const void *s2) { long l1 = (long) s1; long l2 = (long) s2; if (l1 > l2) return(-1); if (l1 < l2) return(+1); return(0); } /* * comparator for message summary structs by ascending subject. */ int summcmp_subj(const void *s1, const void *s2) { message_summary *summ1; message_summary *summ2; summ1 = (message_summary *)GetSearchPayload(s1); summ2 = (message_summary *)GetSearchPayload(s2); return strcasecmp(ChrPtr(summ1->subj), ChrPtr(summ2->subj)); } /* * comparator for message summary structs by descending subject. */ int summcmp_rsubj(const void *s1, const void *s2) { message_summary *summ1; message_summary *summ2; summ1 = (message_summary *)GetSearchPayload(s1); summ2 = (message_summary *)GetSearchPayload(s2); return strcasecmp(ChrPtr(summ2->subj), ChrPtr(summ1->subj)); } /* * comparator for message summary structs by descending subject. */ int groupchange_subj(const void *s1, const void *s2) { message_summary *summ1; message_summary *summ2; summ1 = (message_summary *)s1; summ2 = (message_summary *)s2; return ChrPtr(summ2->subj)[0] != ChrPtr(summ1->subj)[0]; } /* * comparator for message summary structs by ascending sender. */ int summcmp_sender(const void *s1, const void *s2) { message_summary *summ1; message_summary *summ2; summ1 = (message_summary *)GetSearchPayload(s1); summ2 = (message_summary *)GetSearchPayload(s2); return strcasecmp(ChrPtr(summ1->from), ChrPtr(summ2->from)); } /* * comparator for message summary structs by descending sender. */ int summcmp_rsender(const void *s1, const void *s2) { message_summary *summ1; message_summary *summ2; summ1 = (message_summary *)GetSearchPayload(s1); summ2 = (message_summary *)GetSearchPayload(s2); return strcasecmp(ChrPtr(summ2->from), ChrPtr(summ1->from)); } /* * comparator for message summary structs by descending sender. */ int groupchange_sender(const void *s1, const void *s2) { message_summary *summ1; message_summary *summ2; summ1 = (message_summary *)s1; summ2 = (message_summary *)s2; return strcasecmp(ChrPtr(summ2->from), ChrPtr(summ1->from)) != 0; } /* * comparator for message summary structs by ascending date. */ int summcmp_date(const void *s1, const void *s2) { message_summary *summ1; message_summary *summ2; summ1 = (message_summary *)GetSearchPayload(s1); summ2 = (message_summary *)GetSearchPayload(s2); if (summ1->date < summ2->date) return -1; else if (summ1->date > summ2->date) return +1; else return 0; } /* * comparator for message summary structs by descending date. */ int summcmp_rdate(const void *s1, const void *s2) { message_summary *summ1; message_summary *summ2; summ1 = (message_summary *)GetSearchPayload(s1); summ2 = (message_summary *)GetSearchPayload(s2); if (summ1->date < summ2->date) return +1; else if (summ1->date > summ2->date) return -1; else return 0; } /* * comparator for message summary structs by descending date. */ const long DAYSECONDS = 24 * 60 * 60; int groupchange_date(const void *s1, const void *s2) { message_summary *summ1; message_summary *summ2; summ1 = (message_summary *)s1; summ2 = (message_summary *)s2; return (summ1->date % DAYSECONDS) != (summ2->date %DAYSECONDS); } /*----------------------------------------------------------------------------*/ /* Don't wanna know... or? */ void examine_pref(message_summary *Msg, StrBuf *HdrLine, StrBuf *FoundCharset) {return;} void examine_suff(message_summary *Msg, StrBuf *HdrLine, StrBuf *FoundCharset) {return;} void examine_path(message_summary *Msg, StrBuf *HdrLine, StrBuf *FoundCharset) {return;} void examine_content_encoding(message_summary *Msg, StrBuf *HdrLine, StrBuf *FoundCharset) { /* TODO: do we care? */ } void examine_nhdr(message_summary *Msg, StrBuf *HdrLine, StrBuf *FoundCharset) { Msg->nhdr = 0; if (!strncasecmp(ChrPtr(HdrLine), "yes", 8)) Msg->nhdr = 1; } int Conditional_ANONYMOUS_MESSAGE(StrBuf *Target, WCTemplputParams *TP) { message_summary *Msg = (message_summary*) CTX(CTX_MAILSUM); return Msg->nhdr != 0; } void examine_type(message_summary *Msg, StrBuf *HdrLine, StrBuf *FoundCharset) { Msg->format_type = StrToi(HdrLine); } void examine_from(message_summary *Msg, StrBuf *HdrLine, StrBuf *FoundCharset) { wcsession *WCC = WC; CheckConvertBufs(WCC); FreeStrBuf(&Msg->from); Msg->from = NewStrBufPlain(NULL, StrLength(HdrLine)); StrBuf_RFC822_2_Utf8(Msg->from, HdrLine, WCC->DefaultCharset, FoundCharset, WCC->ConvertBuf1, WCC->ConvertBuf2); } void tmplput_MAIL_SUMM_FROM(StrBuf *Target, WCTemplputParams *TP) { message_summary *Msg = (message_summary*) CTX(CTX_MAILSUM); StrBufAppendTemplate(Target, TP, Msg->from, 0); } void examine_subj(message_summary *Msg, StrBuf *HdrLine, StrBuf *FoundCharset) { wcsession *WCC = WC; CheckConvertBufs(WCC); FreeStrBuf(&Msg->subj); Msg->subj = NewStrBufPlain(NULL, StrLength(HdrLine)); StrBuf_RFC822_2_Utf8(Msg->subj, HdrLine, WCC->DefaultCharset, FoundCharset, WCC->ConvertBuf1, WCC->ConvertBuf2); } void tmplput_MAIL_SUMM_SUBJECT(StrBuf *Target, WCTemplputParams *TP) { message_summary *Msg = (message_summary*) CTX(CTX_MAILSUM); if (TP->Tokens->nParameters == 4) { const char *pch; long len; GetTemplateTokenString(Target, TP, 3, &pch, &len); if ((len > 0)&& (strstr(ChrPtr(Msg->subj), pch) == NULL)) { GetTemplateTokenString(Target, TP, 2, &pch, &len); StrBufAppendBufPlain(Target, pch, len, 0); } } StrBufAppendTemplate(Target, TP, Msg->subj, 0); } int Conditional_MAIL_SUMM_SUBJECT(StrBuf *Target, WCTemplputParams *TP) { message_summary *Msg = (message_summary*) CTX(CTX_MAILSUM); return StrLength(Msg->subj) > 0; } void examine_msgn(message_summary *Msg, StrBuf *HdrLine, StrBuf *FoundCharset) { wcsession *WCC = WC; CheckConvertBufs(WCC); FreeStrBuf(&Msg->reply_inreplyto); Msg->reply_inreplyto = NewStrBufPlain(NULL, StrLength(HdrLine)); StrBuf_RFC822_2_Utf8(Msg->reply_inreplyto, HdrLine, WCC->DefaultCharset, FoundCharset, WCC->ConvertBuf1, WCC->ConvertBuf2); } void tmplput_MAIL_SUMM_INREPLYTO(StrBuf *Target, WCTemplputParams *TP) { message_summary *Msg = (message_summary*) CTX(CTX_MAILSUM); StrBufAppendTemplate(Target, TP, Msg->reply_inreplyto, 0); } int Conditional_MAIL_SUMM_UNREAD(StrBuf *Target, WCTemplputParams *TP) { message_summary *Msg = (message_summary*) CTX(CTX_MAILSUM); return (Msg->Flags & MSGFLAG_READ) != 0; } void examine_wefw(message_summary *Msg, StrBuf *HdrLine, StrBuf *FoundCharset) { wcsession *WCC = WC; CheckConvertBufs(WCC); FreeStrBuf(&Msg->reply_references); Msg->reply_references = NewStrBufPlain(NULL, StrLength(HdrLine)); StrBuf_RFC822_2_Utf8(Msg->reply_references, HdrLine, WCC->DefaultCharset, FoundCharset, WCC->ConvertBuf1, WCC->ConvertBuf2); } void tmplput_MAIL_SUMM_REFIDS(StrBuf *Target, WCTemplputParams *TP) { message_summary *Msg = (message_summary*) CTX(CTX_MAILSUM); StrBufAppendTemplate(Target, TP, Msg->reply_references, 0); } void examine_replyto(message_summary *Msg, StrBuf *HdrLine, StrBuf *FoundCharset) { wcsession *WCC = WC; CheckConvertBufs(WCC); FreeStrBuf(&Msg->ReplyTo); Msg->ReplyTo = NewStrBufPlain(NULL, StrLength(HdrLine)); StrBuf_RFC822_2_Utf8(Msg->ReplyTo, HdrLine, WCC->DefaultCharset, FoundCharset, WCC->ConvertBuf1, WCC->ConvertBuf2); if (Msg->AllRcpt == NULL) Msg->AllRcpt = NewStrBufPlain(NULL, StrLength(HdrLine)); if (StrLength(Msg->AllRcpt) > 0) { StrBufAppendBufPlain(Msg->AllRcpt, HKEY(", "), 0); } StrBufAppendBuf(Msg->AllRcpt, Msg->ReplyTo, 0); } void tmplput_MAIL_SUMM_REPLYTO(StrBuf *Target, WCTemplputParams *TP) { message_summary *Msg = (message_summary*) CTX(CTX_MAILSUM); StrBufAppendTemplate(Target, TP, Msg->ReplyTo, 0); } void examine_cccc(message_summary *Msg, StrBuf *HdrLine, StrBuf *FoundCharset) { wcsession *WCC = WC; CheckConvertBufs(WCC); FreeStrBuf(&Msg->cccc); Msg->cccc = NewStrBufPlain(NULL, StrLength(HdrLine)); StrBuf_RFC822_2_Utf8(Msg->cccc, HdrLine, WCC->DefaultCharset, FoundCharset, WCC->ConvertBuf1, WCC->ConvertBuf2); if (Msg->AllRcpt == NULL) Msg->AllRcpt = NewStrBufPlain(NULL, StrLength(HdrLine)); if (StrLength(Msg->AllRcpt) > 0) { StrBufAppendBufPlain(Msg->AllRcpt, HKEY(", "), 0); } StrBufAppendBuf(Msg->AllRcpt, Msg->cccc, 0); } void tmplput_MAIL_SUMM_CCCC(StrBuf *Target, WCTemplputParams *TP) { message_summary *Msg = (message_summary*) CTX(CTX_MAILSUM); StrBufAppendTemplate(Target, TP, Msg->cccc, 0); } void examine_room(message_summary *Msg, StrBuf *HdrLine, StrBuf *FoundCharset) { if ((StrLength(HdrLine) > 0) && (strcasecmp(ChrPtr(HdrLine), ChrPtr(WC->CurRoom.name)))) { FreeStrBuf(&Msg->Room); Msg->Room = NewStrBufDup(HdrLine); } } void tmplput_MAIL_SUMM_ORGROOM(StrBuf *Target, WCTemplputParams *TP) { message_summary *Msg = (message_summary*) CTX(CTX_MAILSUM); StrBufAppendTemplate(Target, TP, Msg->Room, 0); } void examine_rfca(message_summary *Msg, StrBuf *HdrLine, StrBuf *FoundCharset) { FreeStrBuf(&Msg->Rfca); Msg->Rfca = NewStrBufDup(HdrLine); } void tmplput_MAIL_SUMM_RFCA(StrBuf *Target, WCTemplputParams *TP) { message_summary *Msg = (message_summary*) CTX(CTX_MAILSUM); StrBufAppendTemplate(Target, TP, Msg->Rfca, 0); } int Conditional_MAIL_SUMM_RFCA(StrBuf *Target, WCTemplputParams *TP) { message_summary *Msg = (message_summary*) CTX(CTX_MAILSUM); return StrLength(Msg->Rfca) > 0; } int Conditional_MAIL_SUMM_CCCC(StrBuf *Target, WCTemplputParams *TP) { message_summary *Msg = (message_summary*) CTX(CTX_MAILSUM); return StrLength(Msg->cccc) > 0; } int Conditional_MAIL_SUMM_REPLYTO(StrBuf *Target, WCTemplputParams *TP) { message_summary *Msg = (message_summary*) CTX(CTX_MAILSUM); return StrLength(Msg->ReplyTo) > 0; } void examine_node(message_summary *Msg, StrBuf *HdrLine, StrBuf *FoundCharset) { wcsession *WCC = WC; if ( (StrLength(HdrLine) > 0) && ((WC->CurRoom.QRFlags & QR_NETWORK) || ((strcasecmp(ChrPtr(HdrLine), ChrPtr(WCC->serv_info->serv_nodename)) && (strcasecmp(ChrPtr(HdrLine), ChrPtr(WCC->serv_info->serv_fqdn))))))) { FreeStrBuf(&Msg->OtherNode); Msg->OtherNode = NewStrBufDup(HdrLine); } } void tmplput_MAIL_SUMM_OTHERNODE(StrBuf *Target, WCTemplputParams *TP) { message_summary *Msg = (message_summary*) CTX(CTX_MAILSUM); StrBufAppendTemplate(Target, TP, Msg->OtherNode, 0); } int Conditional_MAIL_SUMM_OTHERNODE(StrBuf *Target, WCTemplputParams *TP) { message_summary *Msg = (message_summary*) CTX(CTX_MAILSUM); return StrLength(Msg->OtherNode) > 0; } void examine_nvto(message_summary *Msg, StrBuf *HdrLine, StrBuf *FoundCharset) { wcsession *WCC = WC; CheckConvertBufs(WCC); FreeStrBuf(&Msg->EnvTo); Msg->EnvTo = NewStrBufPlain(NULL, StrLength(HdrLine)); StrBuf_RFC822_2_Utf8(Msg->EnvTo, HdrLine, WCC->DefaultCharset, FoundCharset, WCC->ConvertBuf1, WCC->ConvertBuf2); } void examine_rcpt(message_summary *Msg, StrBuf *HdrLine, StrBuf *FoundCharset) { wcsession *WCC = WC; CheckConvertBufs(WCC); FreeStrBuf(&Msg->to); Msg->to = NewStrBufPlain(NULL, StrLength(HdrLine)); StrBuf_RFC822_2_Utf8(Msg->to, HdrLine, WCC->DefaultCharset, FoundCharset, WCC->ConvertBuf1, WCC->ConvertBuf2); if (Msg->AllRcpt == NULL) Msg->AllRcpt = NewStrBufPlain(NULL, StrLength(HdrLine)); if (StrLength(Msg->AllRcpt) > 0) { StrBufAppendBufPlain(Msg->AllRcpt, HKEY(", "), 0); } StrBufAppendBuf(Msg->AllRcpt, Msg->to, 0); } void tmplput_MAIL_SUMM_TO(StrBuf *Target, WCTemplputParams *TP) { message_summary *Msg = (message_summary*) CTX(CTX_MAILSUM); StrBufAppendTemplate(Target, TP, Msg->to, 0); } int Conditional_MAIL_SUMM_TO(StrBuf *Target, WCTemplputParams *TP) { message_summary *Msg = (message_summary*) CTX(CTX_MAILSUM); return StrLength(Msg->to) != 0; } int Conditional_MAIL_SUMM_SUBJ(StrBuf *Target, WCTemplputParams *TP) { message_summary *Msg = (message_summary*) CTX(CTX_MAILSUM); return StrLength(Msg->subj) != 0; } void tmplput_MAIL_SUMM_ALLRCPT(StrBuf *Target, WCTemplputParams *TP) { message_summary *Msg = (message_summary*) CTX(CTX_MAILSUM); StrBufAppendTemplate(Target, TP, Msg->AllRcpt, 0); } void tmplput_SUMM_COUNT(StrBuf *Target, WCTemplputParams *TP) { StrBufAppendPrintf(Target, "%d", GetCount( WC->summ)); } HashList *iterate_get_mailsumm_All(StrBuf *Target, WCTemplputParams *TP) { return WC->summ; } void examine_time(message_summary *Msg, StrBuf *HdrLine, StrBuf *FoundCharset) { Msg->date = StrTol(HdrLine); } void tmplput_MAIL_SUMM_DATE_BRIEF(StrBuf *Target, WCTemplputParams *TP) { char datebuf[64]; message_summary *Msg = (message_summary*) CTX(CTX_MAILSUM); webcit_fmt_date(datebuf, 64, Msg->date, DATEFMT_BRIEF); StrBufAppendBufPlain(Target, datebuf, -1, 0); } void tmplput_MAIL_SUMM_EUID(StrBuf *Target, WCTemplputParams *TP) { message_summary *Msg = (message_summary*) CTX(CTX_MAILSUM); StrBufAppendTemplate(Target, TP, Msg->euid, 0); } void tmplput_MAIL_SUMM_DATE_FULL(StrBuf *Target, WCTemplputParams *TP) { char datebuf[64]; message_summary *Msg = (message_summary*) CTX(CTX_MAILSUM); webcit_fmt_date(datebuf, 64, Msg->date, DATEFMT_FULL); StrBufAppendBufPlain(Target, datebuf, -1, 0); } void tmplput_MAIL_SUMM_DATE_NO(StrBuf *Target, WCTemplputParams *TP) { message_summary *Msg = (message_summary*) CTX(CTX_MAILSUM); StrBufAppendPrintf(Target, "%ld", Msg->date, 0); } void render_MAIL(StrBuf *Target, WCTemplputParams *TP, StrBuf *FoundCharset) { wc_mime_attachment *Mime = (wc_mime_attachment *) CTX(CTX_MIME_ATACH); const StrBuf *TemplateMime; if (Mime->Data == NULL) Mime->Data = NewStrBufPlain(NULL, Mime->length); else FlushStrBuf(Mime->Data); read_message(Mime->Data, HKEY("view_submessage"), Mime->msgnum, Mime->PartNum, &TemplateMime); /* if ( (!IsEmptyStr(mime_submessages)) && (!section[0]) ) { for (i=0; i"); read_message(Mime->msgnum, 1, ChrPtr(Mime->Section)); wc_printf(""); } } */ } void render_MIME_VCard(StrBuf *Target, WCTemplputParams *TP, StrBuf *FoundCharset) { wc_mime_attachment *Mime = (wc_mime_attachment *) CTX(CTX_MIME_ATACH); wcsession *WCC = WC; if (StrLength(Mime->Data) == 0) MimeLoadData(Mime); if (StrLength(Mime->Data) > 0) { StrBuf *Buf; Buf = NewStrBuf(); /** If it's my vCard I can edit it */ if ( (!strcasecmp(ChrPtr(WCC->CurRoom.name), USERCONFIGROOM)) || (!strcasecmp(&(ChrPtr(WCC->CurRoom.name)[11]), USERCONFIGROOM)) || (WC->CurRoom.view == VIEW_ADDRESSBOOK) ) { StrBufAppendPrintf(Buf, "", Mime->msgnum, ChrPtr(Mime->PartNum)); StrBufAppendPrintf(Buf, "[%s]", _("edit")); } /* In all cases, display the full card */ display_vcard(Buf, Mime, 0, 1, NULL, -1); FreeStrBuf(&Mime->Data); Mime->Data = Buf; } } void render_MIME_ICS(StrBuf *Target, WCTemplputParams *TP, StrBuf *FoundCharset) { wc_mime_attachment *Mime = (wc_mime_attachment *) CTX(CTX_MIME_ATACH); if (StrLength(Mime->Data) == 0) { MimeLoadData(Mime); } if (StrLength(Mime->Data) > 0) { cal_process_attachment(Mime); } } void examine_mime_part(message_summary *Msg, StrBuf *HdrLine, StrBuf *FoundCharset) { const char *Ptr = NULL; wc_mime_attachment *Mime; StrBuf *Buf; wcsession *WCC = WC; CheckConvertBufs(WCC); Mime = (wc_mime_attachment*) malloc(sizeof(wc_mime_attachment)); memset(Mime, 0, sizeof(wc_mime_attachment)); Mime->msgnum = Msg->msgnum; Buf = NewStrBuf(); Mime->Name = NewStrBuf(); StrBufExtract_NextToken(Buf, HdrLine, &Ptr, '|'); StrBuf_RFC822_2_Utf8(Mime->Name, Buf, WCC->DefaultCharset, FoundCharset, WCC->ConvertBuf1, WCC->ConvertBuf2); StrBufTrim(Mime->Name); StrBufExtract_NextToken(Buf, HdrLine, &Ptr, '|'); Mime->FileName = NewStrBuf(); StrBuf_RFC822_2_Utf8(Mime->FileName, Buf, WCC->DefaultCharset, FoundCharset, WCC->ConvertBuf1, WCC->ConvertBuf2); StrBufTrim(Mime->FileName); Mime->PartNum = NewStrBuf(); StrBufExtract_NextToken(Mime->PartNum, HdrLine, &Ptr, '|'); StrBufTrim(Mime->PartNum); if (strchr(ChrPtr(Mime->PartNum), '.') != NULL) Mime->level = 2; else Mime->level = 1; Mime->Disposition = NewStrBuf(); StrBufExtract_NextToken(Mime->Disposition, HdrLine, &Ptr, '|'); Mime->ContentType = NewStrBuf(); StrBufExtract_NextToken(Mime->ContentType, HdrLine, &Ptr, '|'); StrBufTrim(Mime->ContentType); StrBufLowerCase(Mime->ContentType); if (!strcmp(ChrPtr(Mime->ContentType), "application/octet-stream")) { StrBufPlain(Mime->ContentType, GuessMimeByFilename(SKEY(Mime->FileName)), -1); } Mime->length = StrBufExtractNext_int(HdrLine, &Ptr, '|'); StrBufSkip_NTokenS(HdrLine, &Ptr, '|', 1); /* cbid?? */ Mime->Charset = NewStrBuf(); StrBufExtract_NextToken(Mime->Charset, HdrLine, &Ptr, '|'); if ( (StrLength(Mime->FileName) == 0) && (StrLength(Mime->Name) > 0) ) { StrBufAppendBuf(Mime->FileName, Mime->Name, 0); } if (StrLength(Msg->PartNum) > 0) { StrBuf *tmp; StrBufPrintf(Buf, "%s.%s", ChrPtr(Msg->PartNum), ChrPtr(Mime->PartNum)); tmp = Mime->PartNum; Mime->PartNum = Buf; Buf = tmp; } if (Msg->AllAttach == NULL) Msg->AllAttach = NewHash(1,NULL); Put(Msg->AllAttach, SKEY(Mime->PartNum), Mime, DestroyMime); FreeStrBuf(&Buf); } void evaluate_mime_part(StrBuf *Target, WCTemplputParams *TP) { message_summary *Msg = (message_summary*) CTX(CTX_MAILSUM); wc_mime_attachment *Mime = (wc_mime_attachment *) CTX(CTX_MIME_ATACH); void *vMimeRenderer; /* just print the root-node */ if ((Mime->level >= 1) && GetHash(MimeRenderHandler, SKEY(Mime->ContentType), &vMimeRenderer) && vMimeRenderer != NULL) { Mime->Renderer = (RenderMimeFuncStruct*) vMimeRenderer; if (Msg->Submessages == NULL) Msg->Submessages = NewHash(1,NULL); Put(Msg->Submessages, SKEY(Mime->PartNum), Mime, reference_free_handler); } else if ((Mime->level >= 1) && (!strcasecmp(ChrPtr(Mime->Disposition), "inline")) && (!strncasecmp(ChrPtr(Mime->ContentType), "image/", 6)) ){ if (Msg->AttachLinks == NULL) Msg->AttachLinks = NewHash(1,NULL); Put(Msg->AttachLinks, SKEY(Mime->PartNum), Mime, reference_free_handler); } else if ((Mime->level >= 1) && (StrLength(Mime->ContentType) > 0) && ( (!strcasecmp(ChrPtr(Mime->Disposition), "attachment")) || (!strcasecmp(ChrPtr(Mime->Disposition), "inline")) || (!strcasecmp(ChrPtr(Mime->Disposition), "")))) { if (Msg->AttachLinks == NULL) Msg->AttachLinks = NewHash(1,NULL); Put(Msg->AttachLinks, SKEY(Mime->PartNum), Mime, reference_free_handler); if ((strcasecmp(ChrPtr(Mime->ContentType), "application/octet-stream") == 0) && (StrLength(Mime->FileName) > 0)) { FlushStrBuf(Mime->ContentType); StrBufAppendBufPlain(Mime->ContentType, GuessMimeByFilename(SKEY(Mime->FileName)), -1, 0); } } } void tmplput_MAIL_SUMM_NATTACH(StrBuf *Target, WCTemplputParams *TP) { message_summary *Msg = (message_summary*) CTX(CTX_MAILSUM); StrBufAppendPrintf(Target, "%ld", GetCount(Msg->Attachments)); } void examine_hnod(message_summary *Msg, StrBuf *HdrLine, StrBuf *FoundCharset) { wcsession *WCC = WC; CheckConvertBufs(WCC); FreeStrBuf(&Msg->hnod); Msg->hnod = NewStrBufPlain(NULL, StrLength(HdrLine)); StrBuf_RFC822_2_Utf8(Msg->hnod, HdrLine, WCC->DefaultCharset, FoundCharset, WCC->ConvertBuf1, WCC->ConvertBuf2); } void tmplput_MAIL_SUMM_H_NODE(StrBuf *Target, WCTemplputParams *TP) { message_summary *Msg = (message_summary*) CTX(CTX_MAILSUM); StrBufAppendTemplate(Target, TP, Msg->hnod, 0); } int Conditional_MAIL_SUMM_H_NODE(StrBuf *Target, WCTemplputParams *TP) { message_summary *Msg = (message_summary*) CTX(CTX_MAILSUM); return StrLength(Msg->hnod) > 0; } void examine_text(message_summary *Msg, StrBuf *HdrLine, StrBuf *FoundCharset) { if (Msg->MsgBody->Data == NULL) Msg->MsgBody->Data = NewStrBufPlain(NULL, SIZ); else FlushStrBuf(Msg->MsgBody->Data); } void examine_msg4_partnum(message_summary *Msg, StrBuf *HdrLine, StrBuf *FoundCharset) { Msg->MsgBody->PartNum = NewStrBufDup(HdrLine); StrBufTrim(Msg->MsgBody->PartNum); } void examine_content_lengh(message_summary *Msg, StrBuf *HdrLine, StrBuf *FoundCharset) { Msg->MsgBody->length = StrTol(HdrLine); Msg->MsgBody->size_known = 1; } void examine_content_type(message_summary *Msg, StrBuf *HdrLine, StrBuf *FoundCharset) { void *vHdr; headereval *Hdr; StrBuf *Token; StrBuf *Value; const char* sem; const char *eq; int len; StrBufTrim(HdrLine); Msg->MsgBody->ContentType = NewStrBufDup(HdrLine); sem = strchr(ChrPtr(HdrLine), ';'); if (sem != NULL) { Token = NewStrBufPlain(NULL, StrLength(HdrLine)); Value = NewStrBufPlain(NULL, StrLength(HdrLine)); len = sem - ChrPtr(HdrLine); StrBufCutAt(Msg->MsgBody->ContentType, len, NULL); while (sem != NULL) { while (isspace(*(sem + 1))) sem ++; StrBufCutLeft(HdrLine, sem - ChrPtr(HdrLine)); sem = strchr(ChrPtr(HdrLine), ';'); if (sem != NULL) len = sem - ChrPtr(HdrLine); else len = StrLength(HdrLine); FlushStrBuf(Token); FlushStrBuf(Value); StrBufAppendBufPlain(Token, ChrPtr(HdrLine), len, 0); eq = strchr(ChrPtr(Token), '='); if (eq != NULL) { len = eq - ChrPtr(Token); StrBufAppendBufPlain(Value, eq + 1, StrLength(Token) - len - 1, 0); StrBufCutAt(Token, len, NULL); StrBufTrim(Value); } StrBufTrim(Token); if (GetHash(MsgHeaderHandler, SKEY(Token), &vHdr) && (vHdr != NULL)) { Hdr = (headereval*)vHdr; Hdr->evaluator(Msg, Value, FoundCharset); } else syslog(LOG_WARNING, "don't know how to handle content type sub-header[%s]\n", ChrPtr(Token)); } FreeStrBuf(&Token); FreeStrBuf(&Value); } } void tmplput_MAIL_SUMM_N(StrBuf *Target, WCTemplputParams *TP) { message_summary *Msg = (message_summary*) CTX(CTX_MAILSUM); StrBufAppendPrintf(Target, "%ld", Msg->msgnum); } void tmplput_MAIL_SUMM_PERMALINK(StrBuf *Target, WCTemplputParams *TP) { message_summary *Msg = (message_summary*) CTX(CTX_MAILSUM); char perma_link[1024]; strcpy(perma_link, "/readfwd?go="); urlesc(&perma_link[12], sizeof(perma_link) - 12, (char *)ChrPtr(WC->CurRoom.name) ); sprintf(&perma_link[strlen(perma_link)], "?start_reading_at=%ld#%ld", Msg->msgnum, Msg->msgnum); StrBufAppendPrintf(Target, "%s", perma_link); } int Conditional_MAIL_MIME_ALL(StrBuf *Target, WCTemplputParams *TP) { message_summary *Msg = (message_summary*) CTX(CTX_MAILSUM); return GetCount(Msg->Attachments) > 0; } int Conditional_MAIL_MIME_SUBMESSAGES(StrBuf *Target, WCTemplputParams *TP) { message_summary *Msg = (message_summary*) CTX(CTX_MAILSUM); return GetCount(Msg->Submessages) > 0; } int Conditional_MAIL_MIME_ATTACHLINKS(StrBuf *Target, WCTemplputParams *TP) { message_summary *Msg = (message_summary*) CTX(CTX_MAILSUM); return GetCount(Msg->AttachLinks) > 0; } int Conditional_MAIL_MIME_ATTACH(StrBuf *Target, WCTemplputParams *TP) { message_summary *Msg = (message_summary*) CTX(CTX_MAILSUM); return GetCount(Msg->AllAttach) > 0; } void tmplput_QUOTED_MAIL_BODY(StrBuf *Target, WCTemplputParams *TP) { const StrBuf *Mime; long MsgNum; StrBuf *Buf; MsgNum = LBstr(TKEY(0)); Buf = NewStrBuf(); read_message(Buf, HKEY("view_message_replyquote"), MsgNum, NULL, &Mime); StrBufAppendTemplate(Target, TP, Buf, 1); FreeStrBuf(&Buf); } void tmplput_EDIT_MAIL_BODY(StrBuf *Target, WCTemplputParams *TP) { const StrBuf *Mime; long MsgNum; StrBuf *Buf; MsgNum = LBstr(TKEY(0)); Buf = NewStrBuf(); read_message(Buf, HKEY("view_message_edit"), MsgNum, NULL, &Mime); StrBufAppendTemplate(Target, TP, Buf, 1); FreeStrBuf(&Buf); } void tmplput_EDIT_WIKI_BODY(StrBuf *Target, WCTemplputParams *TP) { const StrBuf *Mime; long msgnum; StrBuf *Buf; /* Insert the existing content of the wiki page into the editor. But we only want * to do this the first time -- if the user is uploading an attachment we don't want * to do it again. */ if (!havebstr("attach_button")) { char *wikipage = strdup(bstr("page")); str_wiki_index(wikipage); msgnum = locate_message_by_uid(wikipage); free(wikipage); if (msgnum >= 0L) { Buf = NewStrBuf(); read_message(Buf, HKEY("view_message_wikiedit"), msgnum, NULL, &Mime); StrBufAppendTemplate(Target, TP, Buf, 1); FreeStrBuf(&Buf); } } } void tmplput_MAIL_BODY(StrBuf *Target, WCTemplputParams *TP) { message_summary *Msg = (message_summary*) CTX(CTX_MAILSUM); StrBufAppendTemplate(Target, TP, Msg->MsgBody->Data, 0); } void render_MAIL_variformat(StrBuf *Target, WCTemplputParams *TP, StrBuf *FoundCharset) { /* Messages in legacy Citadel variformat get handled thusly... */ wc_mime_attachment *Mime = (wc_mime_attachment *) CTX(CTX_MIME_ATACH); StrBuf *TTarget = NewStrBufPlain(NULL, StrLength(Mime->Data)); FmOut(TTarget, "JUSTIFY", Mime->Data); FreeStrBuf(&Mime->Data); Mime->Data = TTarget; } void render_MAIL_text_plain(StrBuf *Target, WCTemplputParams *TP, StrBuf *FoundCharset) { wc_mime_attachment *Mime = (wc_mime_attachment *) CTX(CTX_MIME_ATACH); const char *ptr, *pte; const char *BufPtr = NULL; StrBuf *Line; StrBuf *Line1; StrBuf *Line2; StrBuf *TTarget; long Linecount; long nEmptyLines; int bn = 0; int bq = 0; int i; long len; #ifdef HAVE_ICONV StrBuf *cs = NULL; int ConvertIt = 1; iconv_t ic = (iconv_t)(-1) ; #endif if ((StrLength(Mime->Data) == 0) && (Mime->length > 0)) { FreeStrBuf(&Mime->Data); MimeLoadData(Mime); } #ifdef HAVE_ICONV if (ConvertIt) { if (StrLength(Mime->Charset) != 0) cs = Mime->Charset; else if (StrLength(FoundCharset) > 0) cs = FoundCharset; else if (StrLength(WC->DefaultCharset) > 0) cs = WC->DefaultCharset; if (cs == NULL) { ConvertIt = 0; } else if (!strcasecmp(ChrPtr(cs), "utf-8")) { ConvertIt = 0; } else if (!strcasecmp(ChrPtr(cs), "us-ascii")) { ConvertIt = 0; } else { ctdl_iconv_open("UTF-8", ChrPtr(cs), &ic); if (ic == (iconv_t)(-1) ) { syslog(LOG_WARNING, "%s:%d iconv_open(UTF-8, %s) failed: %s\n", __FILE__, __LINE__, ChrPtr(Mime->Charset), strerror(errno)); } } } #endif Line = NewStrBufPlain(NULL, SIZ); Line1 = NewStrBufPlain(NULL, SIZ); Line2 = NewStrBufPlain(NULL, SIZ); TTarget = NewStrBufPlain(NULL, StrLength(Mime->Data)); Linecount = 0; nEmptyLines = 0; if (StrLength(Mime->Data) > 0) do { StrBufSipLine(Line, Mime->Data, &BufPtr); bq = 0; i = 0; ptr = ChrPtr(Line); len = StrLength(Line); pte = ptr + len; while ((ptr < pte) && ((*ptr == '>') || isspace(*ptr))) { if (*ptr == '>') bq++; ptr ++; i++; } if (i > 0) StrBufCutLeft(Line, i); if (StrLength(Line) == 0) { if (Linecount == 0) continue; StrBufAppendBufPlain(TTarget, HKEY("
    \n"), 0); nEmptyLines ++; continue; } nEmptyLines = 0; for (i = bn; i < bq; i++) StrBufAppendBufPlain(TTarget, HKEY("
    "), 0); for (i = bq; i < bn; i++) StrBufAppendBufPlain(TTarget, HKEY("
    "), 0); #ifdef HAVE_ICONV if (ConvertIt) { StrBufConvert(Line, Line1, &ic); } #endif StrBufAppendBufPlain(TTarget, HKEY(""), 0); UrlizeText(Line1, Line, Line2); StrEscAppend(TTarget, Line1, NULL, 0, 0); StrBufAppendBufPlain(TTarget, HKEY("
    \n"), 0); bn = bq; Linecount ++; } while ((BufPtr != StrBufNOTNULL) && (BufPtr != NULL)); if (nEmptyLines > 0) StrBufCutRight(TTarget, nEmptyLines * (sizeof ("
    \n") - 1)); for (i = 0; i < bn; i++) StrBufAppendBufPlain(TTarget, HKEY(""), 0); StrBufAppendBufPlain(TTarget, HKEY("
    "), 0); #ifdef HAVE_ICONV if (ic != (iconv_t)(-1) ) { iconv_close(ic); } #endif FreeStrBuf(&Mime->Data); Mime->Data = TTarget; FlushStrBuf(Mime->ContentType); StrBufAppendBufPlain(Mime->ContentType, HKEY("text/html"), 0); FlushStrBuf(Mime->Charset); StrBufAppendBufPlain(Mime->Charset, HKEY("UTF-8"), 0); FreeStrBuf(&Line); FreeStrBuf(&Line1); FreeStrBuf(&Line2); } void render_MAIL_html(StrBuf *Target, WCTemplputParams *TP, StrBuf *FoundCharset) { wc_mime_attachment *Mime = (wc_mime_attachment *) CTX(CTX_MIME_ATACH); StrBuf *Buf; if (StrLength(Mime->Data) == 0) return; Buf = NewStrBufPlain(NULL, StrLength(Mime->Data)); /* HTML is fun, but we've got to strip it first */ output_html(ChrPtr(Mime->Charset), (WC->CurRoom.view == VIEW_WIKI ? 1 : 0), Mime->msgnum, Mime->Data, Buf); FreeStrBuf(&Mime->Data); Mime->Data = Buf; } void render_MAIL_UNKNOWN(StrBuf *Target, WCTemplputParams *TP, StrBuf *FoundCharset) { wc_mime_attachment *Mime = (wc_mime_attachment *) CTX(CTX_MIME_ATACH); /* Unknown weirdness */ FlushStrBuf(Mime->Data); StrBufAppendBufPlain(Mime->Data, _("I don't know how to display "), -1, 0); StrBufAppendBuf(Mime->Data, Mime->ContentType, 0); StrBufAppendBufPlain(Mime->Data, HKEY("
    \n"), 0); } HashList *iterate_get_mime_All(StrBuf *Target, WCTemplputParams *TP) { message_summary *Msg = (message_summary*) CTX(CTX_MAILSUM); return Msg->Attachments; } HashList *iterate_get_mime_Submessages(StrBuf *Target, WCTemplputParams *TP) { message_summary *Msg = (message_summary*) CTX(CTX_MAILSUM); return Msg->Submessages; } HashList *iterate_get_mime_AttachLinks(StrBuf *Target, WCTemplputParams *TP) { message_summary *Msg = (message_summary*) CTX(CTX_MAILSUM); return Msg->AttachLinks; } HashList *iterate_get_mime_Attachments(StrBuf *Target, WCTemplputParams *TP) { message_summary *Msg = (message_summary*) CTX(CTX_MAILSUM); return Msg->AllAttach; } void tmplput_MIME_Name(StrBuf *Target, WCTemplputParams *TP) { wc_mime_attachment *mime = (wc_mime_attachment*) CTX(CTX_MIME_ATACH); StrBufAppendTemplate(Target, TP, mime->Name, 0); } void tmplput_MIME_FileName(StrBuf *Target, WCTemplputParams *TP) { wc_mime_attachment *mime = (wc_mime_attachment*) CTX(CTX_MIME_ATACH); StrBufAppendTemplate(Target, TP, mime->FileName, 0); } void tmplput_MIME_PartNum(StrBuf *Target, WCTemplputParams *TP) { wc_mime_attachment *mime = (wc_mime_attachment*) CTX(CTX_MIME_ATACH); StrBufAppendTemplate(Target, TP, mime->PartNum, 0); } void tmplput_MIME_MsgNum(StrBuf *Target, WCTemplputParams *TP) { wc_mime_attachment *mime = (wc_mime_attachment*) CTX(CTX_MIME_ATACH); StrBufAppendPrintf(Target, "%ld", mime->msgnum); } void tmplput_MIME_Disposition(StrBuf *Target, WCTemplputParams *TP) { wc_mime_attachment *mime = (wc_mime_attachment*) CTX(CTX_MIME_ATACH); StrBufAppendTemplate(Target, TP, mime->Disposition, 0); } void tmplput_MIME_ContentType(StrBuf *Target, WCTemplputParams *TP) { wc_mime_attachment *mime = (wc_mime_attachment*) CTX(CTX_MIME_ATACH); StrBufAppendTemplate(Target, TP, mime->ContentType, 0); } void examine_charset(message_summary *Msg, StrBuf *HdrLine, StrBuf *FoundCharset) { Msg->MsgBody->Charset = NewStrBufDup(HdrLine); } void tmplput_MIME_Charset(StrBuf *Target, WCTemplputParams *TP) { wc_mime_attachment *mime = (wc_mime_attachment*) CTX(CTX_MIME_ATACH); StrBufAppendTemplate(Target, TP, mime->Charset, 0); } void tmplput_MIME_Data(StrBuf *Target, WCTemplputParams *TP) { wc_mime_attachment *mime = (wc_mime_attachment*) CTX(CTX_MIME_ATACH); if (mime->Renderer != NULL) mime->Renderer->f(Target, TP, NULL); StrBufAppendTemplate(Target, TP, mime->Data, 0); /* TODO: check whether we need to load it now? */ } void tmplput_MIME_LoadData(StrBuf *Target, WCTemplputParams *TP) { wcsession *WCC = WC; wc_mime_attachment *mime = (wc_mime_attachment*) CTX(CTX_MIME_ATACH); wc_mime_attachment *att; if (( (!strcasecmp(ChrPtr(mime->Disposition), "inline"))|| (!strcasecmp(ChrPtr(mime->Disposition), "attachment"))) && (strcasecmp(ChrPtr(mime->ContentType), "application/ms-tnef")!=0)) { int n; char N[64]; /* steal this mime part... */ att = malloc(sizeof(wc_mime_attachment)); memcpy(att, mime, sizeof(wc_mime_attachment)); memset(mime, 0, sizeof(wc_mime_attachment)); if (att->Data == NULL) MimeLoadData(att); if (WCC->attachments == NULL) WCC->attachments = NewHash(1, NULL); /* And add it to the list. */ n = snprintf(N, sizeof N, "%d", GetCount(WCC->attachments) + 1); Put(WCC->attachments, N, n, att, DestroyMime); } } void tmplput_MIME_Length(StrBuf *Target, WCTemplputParams *TP) { wc_mime_attachment *mime = (wc_mime_attachment*) CTX(CTX_MIME_ATACH); StrBufAppendPrintf(Target, "%ld", mime->length); } HashList *iterate_get_registered_Attachments(StrBuf *Target, WCTemplputParams *TP) { return WC->attachments; } void get_registered_Attachments_Count(StrBuf *Target, WCTemplputParams *TP) { StrBufAppendPrintf(Target, "%ld", GetCount (WC->attachments)); } void servcmd_do_search(char *buf, long bufsize) { snprintf(buf, bufsize, "MSGS SEARCH|%s", bstr("query")); } void servcmd_headers(char *buf, long bufsize) { snprintf(buf, bufsize, "MSGS ALL"); } void servcmd_readfwd(char *buf, long bufsize) { snprintf(buf, bufsize, "MSGS ALL"); } void servcmd_readgt(char *buf, long bufsize) { snprintf(buf, bufsize, "MSGS GT|%s", bstr("gt")); } void servcmd_readlt(char *buf, long bufsize) { snprintf(buf, bufsize, "MSGS LT|%s", bstr("lt")); } void servcmd_readnew(char *buf, long bufsize) { snprintf(buf, bufsize, "MSGS NEW"); } void servcmd_readold(char *buf, long bufsize) { snprintf(buf, bufsize, "MSGS OLD"); } /* DO NOT REORDER OR REMOVE ANY OF THESE */ readloop_struct rlid[] = { { {HKEY("do_search")}, servcmd_do_search }, { {HKEY("headers")}, servcmd_headers }, { {HKEY("readfwd")}, servcmd_readfwd }, { {HKEY("readnew")}, servcmd_readnew }, { {HKEY("readold")}, servcmd_readold }, { {HKEY("readgt")}, servcmd_readgt }, { {HKEY("readlt")}, servcmd_readlt } }; int ParseMessageListHeaders_Detail(StrBuf *Line, const char **pos, message_summary *Msg, StrBuf *ConversionBuffer) { wcsession *WCC = WC; long len; long totallen; CheckConvertBufs(WCC); totallen = StrLength(Line); Msg->from = NewStrBufPlain(NULL, totallen); len = StrBufExtract_NextToken(ConversionBuffer, Line, pos, '|'); if (len > 0) { /* Handle senders with RFC2047 encoding */ StrBuf_RFC822_2_Utf8(Msg->from, ConversionBuffer, WCC->DefaultCharset, NULL, WCC->ConvertBuf1, WCC->ConvertBuf2); } /* node name */ len = StrBufExtract_NextToken(ConversionBuffer, Line, pos, '|'); if ((len > 0 ) && ( ((WCC->CurRoom.QRFlags & QR_NETWORK) || ((strcasecmp(ChrPtr(ConversionBuffer), ChrPtr(WCC->serv_info->serv_nodename)) && (strcasecmp(ChrPtr(ConversionBuffer), ChrPtr(WCC->serv_info->serv_fqdn)))))))) { StrBufAppendBufPlain(Msg->from, HKEY(" @ "), 0); StrBufAppendBuf(Msg->from, ConversionBuffer, 0); } /* Internet address (not used) * StrBufExtract_token(Msg->inetaddr, Line, 4, '|'); */ StrBufSkip_NTokenS(Line, pos, '|', 1); Msg->subj = NewStrBufPlain(NULL, totallen); FlushStrBuf(ConversionBuffer); /* we assume the subject is the last parameter inside of the list; * thus we don't use the tokenizer to fetch it, since it will hick up * on tokenizer chars inside of the subjects StrBufExtract_NextToken(ConversionBuffer, Line, pos, '|'); */ len = 0; if (*pos != StrBufNOTNULL) { len = totallen - (*pos - ChrPtr(Line)); StrBufPlain(ConversionBuffer, *pos, len); *pos = StrBufNOTNULL; if ((len > 0) && (*(ChrPtr(ConversionBuffer) + len - 1) == '|')) StrBufCutRight(ConversionBuffer, 1); } if (len == 0) StrBufAppendBufPlain(Msg->subj, _("(no subject)"), -1,0); else { StrBuf_RFC822_2_Utf8(Msg->subj, ConversionBuffer, WCC->DefaultCharset, NULL, WCC->ConvertBuf1, WCC->ConvertBuf2); } return 1; } int mailview_GetParamsGetServerCall(SharedMessageStatus *Stat, void **ViewSpecific, long oper, char *cmd, long len, char *filter, long flen) { DoTemplate(HKEY("msg_listview"),NULL,&NoCtx); return 200; } int mailview_Cleanup(void **ViewSpecific) { /* Note: wDumpContent() will output one additional tag. */ /* We ought to move this out into template */ wDumpContent(1); return 0; } int json_GetParamsGetServerCall(SharedMessageStatus *Stat, void **ViewSpecific, long oper, char *cmd, long len, char *filter, long flen) { Stat->defaultsortorder = 2; Stat->sortit = 1; Stat->load_seen = 1; /* Generally using maxmsgs|startmsg is not required in mailbox view, but we have a 'safemode' for clients (*cough* Exploder) that simply can't handle too many */ if (havebstr("maxmsgs")) Stat->maxmsgs = ibstr("maxmsgs"); else Stat->maxmsgs = 9999999; if (havebstr("startmsg")) Stat->startmsg = lbstr("startmsg"); snprintf(cmd, len, "MSGS %s|%s||1", (oper == do_search) ? "SEARCH" : "ALL", (oper == do_search) ? bstr("query") : "" ); return 200; } int json_MessageListHdr(SharedMessageStatus *Stat, void **ViewSpecific) { /* TODO: make a generic function */ hprintf("HTTP/1.1 200 OK\r\n"); hprintf("Content-type: application/json; charset=utf-8\r\n"); hprintf("Server: %s / %s\r\n", PACKAGE_STRING, ChrPtr(WC->serv_info->serv_software)); hprintf("Connection: close\r\n"); hprintf("Pragma: no-cache\r\nCache-Control: no-store\r\nExpires:-1\r\n"); begin_burst(); return 0; } int json_RenderView_or_Tail(SharedMessageStatus *Stat, void **ViewSpecific, long oper) { DoTemplate(HKEY("mailsummary_json"),NULL, NULL); return 0; } int json_Cleanup(void **ViewSpecific) { /* Note: wDumpContent() will output one additional tag. */ /* We ought to move this out into template */ end_burst(); return 0; } void InitModule_MSGRENDERERS (void) { RegisterCTX(CTX_MAILSUM); RegisterCTX(CTX_MIME_ATACH); RegisterReadLoopHandlerset( VIEW_MAILBOX, mailview_GetParamsGetServerCall, NULL, /* TODO: is this right? */ NULL, ParseMessageListHeaders_Detail, NULL, NULL, mailview_Cleanup); RegisterReadLoopHandlerset( VIEW_JSON_LIST, json_GetParamsGetServerCall, json_MessageListHdr, NULL, /* TODO: is this right? */ ParseMessageListHeaders_Detail, NULL, json_RenderView_or_Tail, json_Cleanup); RegisterSortFunc(HKEY("date"), NULL, 0, summcmp_date, summcmp_rdate, groupchange_date, CTX_MAILSUM); RegisterSortFunc(HKEY("subject"), NULL, 0, summcmp_subj, summcmp_rsubj, groupchange_subj, CTX_MAILSUM); RegisterSortFunc(HKEY("sender"), NULL, 0, summcmp_sender, summcmp_rsender, groupchange_sender, CTX_MAILSUM); RegisterNamespace("SUMM:COUNT", 0, 0, tmplput_SUMM_COUNT, NULL, CTX_NONE); /* iterate over all known mails in WC->summ */ RegisterIterator("MAIL:SUMM:MSGS", 0, NULL, iterate_get_mailsumm_All, NULL,NULL, CTX_MAILSUM, CTX_NONE, IT_NOFLAG); RegisterNamespace("MAIL:SUMM:EUID", 0, 1, tmplput_MAIL_SUMM_EUID, NULL, CTX_MAILSUM); RegisterNamespace("MAIL:SUMM:DATEBRIEF", 0, 0, tmplput_MAIL_SUMM_DATE_BRIEF, NULL, CTX_MAILSUM); RegisterNamespace("MAIL:SUMM:DATEFULL", 0, 0, tmplput_MAIL_SUMM_DATE_FULL, NULL, CTX_MAILSUM); RegisterNamespace("MAIL:SUMM:DATENO", 0, 0, tmplput_MAIL_SUMM_DATE_NO, NULL, CTX_MAILSUM); RegisterNamespace("MAIL:SUMM:N", 0, 0, tmplput_MAIL_SUMM_N, NULL, CTX_MAILSUM); RegisterNamespace("MAIL:SUMM:PERMALINK", 0, 0, tmplput_MAIL_SUMM_PERMALINK, NULL, CTX_MAILSUM); RegisterNamespace("MAIL:SUMM:FROM", 0, 2, tmplput_MAIL_SUMM_FROM, NULL, CTX_MAILSUM); RegisterNamespace("MAIL:SUMM:TO", 0, 2, tmplput_MAIL_SUMM_TO, NULL, CTX_MAILSUM); RegisterNamespace("MAIL:SUMM:SUBJECT", 0, 4, tmplput_MAIL_SUMM_SUBJECT, NULL, CTX_MAILSUM); RegisterNamespace("MAIL:SUMM:NTATACH", 0, 0, tmplput_MAIL_SUMM_NATTACH, NULL, CTX_MAILSUM); RegisterNamespace("MAIL:SUMM:CCCC", 0, 2, tmplput_MAIL_SUMM_CCCC, NULL, CTX_MAILSUM); RegisterNamespace("MAIL:SUMM:REPLYTO", 0, 2, tmplput_MAIL_SUMM_REPLYTO, NULL, CTX_MAILSUM); RegisterNamespace("MAIL:SUMM:H_NODE", 0, 2, tmplput_MAIL_SUMM_H_NODE, NULL, CTX_MAILSUM); RegisterNamespace("MAIL:SUMM:ALLRCPT", 0, 2, tmplput_MAIL_SUMM_ALLRCPT, NULL, CTX_MAILSUM); RegisterNamespace("MAIL:SUMM:ORGROOM", 0, 2, tmplput_MAIL_SUMM_ORGROOM, NULL, CTX_MAILSUM); RegisterNamespace("MAIL:SUMM:RFCA", 0, 2, tmplput_MAIL_SUMM_RFCA, NULL, CTX_MAILSUM); RegisterNamespace("MAIL:SUMM:OTHERNODE", 2, 0, tmplput_MAIL_SUMM_OTHERNODE, NULL, CTX_MAILSUM); RegisterNamespace("MAIL:SUMM:REFIDS", 0, 1, tmplput_MAIL_SUMM_REFIDS, NULL, CTX_MAILSUM); RegisterNamespace("MAIL:SUMM:INREPLYTO", 0, 2, tmplput_MAIL_SUMM_INREPLYTO, NULL, CTX_MAILSUM); RegisterNamespace("MAIL:BODY", 0, 2, tmplput_MAIL_BODY, NULL, CTX_MAILSUM); RegisterNamespace("MAIL:QUOTETEXT", 1, 2, tmplput_QUOTED_MAIL_BODY, NULL, CTX_NONE); RegisterNamespace("MAIL:EDITTEXT", 1, 2, tmplput_EDIT_MAIL_BODY, NULL, CTX_NONE); RegisterNamespace("MAIL:EDITWIKI", 1, 2, tmplput_EDIT_WIKI_BODY, NULL, CTX_NONE); RegisterConditional("COND:MAIL:SUMM:RFCA", 0, Conditional_MAIL_SUMM_RFCA, CTX_MAILSUM); RegisterConditional("COND:MAIL:SUMM:CCCC", 0, Conditional_MAIL_SUMM_CCCC, CTX_MAILSUM); RegisterConditional("COND:MAIL:SUMM:REPLYTO", 0, Conditional_MAIL_SUMM_REPLYTO, CTX_MAILSUM); RegisterConditional("COND:MAIL:SUMM:UNREAD", 0, Conditional_MAIL_SUMM_UNREAD, CTX_MAILSUM); RegisterConditional("COND:MAIL:SUMM:H_NODE", 0, Conditional_MAIL_SUMM_H_NODE, CTX_MAILSUM); RegisterConditional("COND:MAIL:SUMM:OTHERNODE", 0, Conditional_MAIL_SUMM_OTHERNODE, CTX_MAILSUM); RegisterConditional("COND:MAIL:SUMM:SUBJECT", 0, Conditional_MAIL_SUMM_SUBJECT, CTX_MAILSUM); RegisterConditional("COND:MAIL:ANON", 0, Conditional_ANONYMOUS_MESSAGE, CTX_MAILSUM); RegisterConditional("COND:MAIL:TO", 0, Conditional_MAIL_SUMM_TO, CTX_MAILSUM); RegisterConditional("COND:MAIL:SUBJ", 0, Conditional_MAIL_SUMM_SUBJ, CTX_MAILSUM); /* do we have mimetypes to iterate over? */ RegisterConditional("COND:MAIL:MIME:ATTACH", 0, Conditional_MAIL_MIME_ALL, CTX_MAILSUM); RegisterConditional("COND:MAIL:MIME:ATTACH:SUBMESSAGES", 0, Conditional_MAIL_MIME_SUBMESSAGES, CTX_MAILSUM); RegisterConditional("COND:MAIL:MIME:ATTACH:LINKS", 0, Conditional_MAIL_MIME_ATTACHLINKS, CTX_MAILSUM); RegisterConditional("COND:MAIL:MIME:ATTACH:ATT", 0, Conditional_MAIL_MIME_ATTACH, CTX_MAILSUM); RegisterIterator("MAIL:MIME:ATTACH", 0, NULL, iterate_get_mime_All, NULL, NULL, CTX_MIME_ATACH, CTX_MAILSUM, IT_NOFLAG); RegisterIterator("MAIL:MIME:ATTACH:SUBMESSAGES", 0, NULL, iterate_get_mime_Submessages, NULL, NULL, CTX_MIME_ATACH, CTX_MAILSUM, IT_NOFLAG); RegisterIterator("MAIL:MIME:ATTACH:LINKS", 0, NULL, iterate_get_mime_AttachLinks, NULL, NULL, CTX_MIME_ATACH, CTX_MAILSUM, IT_NOFLAG); RegisterIterator("MAIL:MIME:ATTACH:ATT", 0, NULL, iterate_get_mime_Attachments, NULL, NULL, CTX_MIME_ATACH, CTX_MAILSUM, IT_NOFLAG); /* Parts of a mime attachent */ RegisterNamespace("MAIL:MIME:NAME", 0, 2, tmplput_MIME_Name, NULL, CTX_MIME_ATACH); RegisterNamespace("MAIL:MIME:FILENAME", 0, 2, tmplput_MIME_FileName, NULL, CTX_MIME_ATACH); RegisterNamespace("MAIL:MIME:PARTNUM", 0, 2, tmplput_MIME_PartNum, NULL, CTX_MIME_ATACH); RegisterNamespace("MAIL:MIME:MSGNUM", 0, 2, tmplput_MIME_MsgNum, NULL, CTX_MIME_ATACH); RegisterNamespace("MAIL:MIME:DISPOSITION", 0, 2, tmplput_MIME_Disposition, NULL, CTX_MIME_ATACH); RegisterNamespace("MAIL:MIME:CONTENTTYPE", 0, 2, tmplput_MIME_ContentType, NULL, CTX_MIME_ATACH); RegisterNamespace("MAIL:MIME:CHARSET", 0, 2, tmplput_MIME_Charset, NULL, CTX_MIME_ATACH); RegisterNamespace("MAIL:MIME:LENGTH", 0, 2, tmplput_MIME_Length, NULL, CTX_MIME_ATACH); RegisterNamespace("MAIL:MIME:DATA", 0, 2, tmplput_MIME_Data, NULL, CTX_MIME_ATACH); /* load the actual attachment into WC->attachments; no output!!! */ RegisterNamespace("MAIL:MIME:LOADDATA", 0, 0, tmplput_MIME_LoadData, NULL, CTX_MIME_ATACH); /* iterate the WC->attachments; use the above tokens for their contents */ RegisterIterator("MSG:ATTACHNAMES", 0, NULL, iterate_get_registered_Attachments, NULL, NULL, CTX_MIME_ATACH, CTX_NONE, IT_NOFLAG); RegisterNamespace("MSG:NATTACH", 0, 0, get_registered_Attachments_Count, NULL, CTX_NONE); /* mime renderers translate an attachment into webcit viewable html text */ RegisterMimeRenderer(HKEY("message/rfc822"), render_MAIL, 0, 150); RegisterMimeRenderer(HKEY("text/x-vcard"), render_MIME_VCard, 1, 201); RegisterMimeRenderer(HKEY("text/vcard"), render_MIME_VCard, 1, 200); //* RegisterMimeRenderer(HKEY("text/calendar"), render_MIME_ICS, 1, 501); RegisterMimeRenderer(HKEY("application/ics"), render_MIME_ICS, 1, 500); //*/ RegisterMimeRenderer(HKEY("text/x-citadel-variformat"), render_MAIL_variformat, 1, 2); RegisterMimeRenderer(HKEY("text/plain"), render_MAIL_text_plain, 1, 3); RegisterMimeRenderer(HKEY("text"), render_MAIL_text_plain, 1, 1); RegisterMimeRenderer(HKEY("text/html"), render_MAIL_html, 1, 100); RegisterMimeRenderer(HKEY(""), render_MAIL_UNKNOWN, 0, 0); /* these headers are citserver replies to MSG4 and friends. one evaluator for each */ RegisterMsgHdr(HKEY("nhdr"), examine_nhdr, 0); RegisterMsgHdr(HKEY("type"), examine_type, 0); RegisterMsgHdr(HKEY("from"), examine_from, 0); RegisterMsgHdr(HKEY("subj"), examine_subj, 0); RegisterMsgHdr(HKEY("msgn"), examine_msgn, 0); RegisterMsgHdr(HKEY("wefw"), examine_wefw, 0); RegisterMsgHdr(HKEY("cccc"), examine_cccc, 0); RegisterMsgHdr(HKEY("rep2"), examine_replyto, 0); RegisterMsgHdr(HKEY("hnod"), examine_hnod, 0); RegisterMsgHdr(HKEY("room"), examine_room, 0); RegisterMsgHdr(HKEY("rfca"), examine_rfca, 0); RegisterMsgHdr(HKEY("node"), examine_node, 0); RegisterMsgHdr(HKEY("rcpt"), examine_rcpt, 0); RegisterMsgHdr(HKEY("nvto"), examine_nvto, 0); RegisterMsgHdr(HKEY("time"), examine_time, 0); RegisterMsgHdr(HKEY("part"), examine_mime_part, 0); RegisterMsgHdr(HKEY("text"), examine_text, 1); /* these are the content-type headers we get infront of a message; put it into the same hash since it doesn't clash. */ RegisterMsgHdr(HKEY("X-Citadel-MSG4-Partnum"), examine_msg4_partnum, 0); RegisterMsgHdr(HKEY("Content-type"), examine_content_type, 0); RegisterMsgHdr(HKEY("Content-length"), examine_content_lengh, 0); RegisterMsgHdr(HKEY("Content-transfer-encoding"), examine_content_encoding, 0); /* do we care? */ RegisterMsgHdr(HKEY("charset"), examine_charset, 0); /* Don't care about these... */ RegisterMsgHdr(HKEY("pref"), examine_pref, 0); RegisterMsgHdr(HKEY("suff"), examine_suff, 0); RegisterMsgHdr(HKEY("path"), examine_path, 0); } void InitModule2_MSGRENDERERS (void) { /* and finalize the anouncement to the server... */ CreateMimeStr(); } void ServerStartModule_MSGRENDERERS (void) { MsgHeaderHandler = NewHash(1, NULL); MimeRenderHandler = NewHash(1, NULL); ReadLoopHandler = NewHash(1, NULL); } void ServerShutdownModule_MSGRENDERERS (void) { DeleteHash(&MsgHeaderHandler); DeleteHash(&MimeRenderHandler); DeleteHash(&ReadLoopHandler); } void SessionDestroyModule_MSGRENDERERS (wcsession *sess) { DeleteHash(&sess->attachments); FreeStrBuf(&sess->ConvertBuf1); FreeStrBuf(&sess->ConvertBuf2); } webcit-8.24-dfsg.orig/paramhandling.c0000644000175000017500000003300712271477123017354 0ustar michaelmichael/* * parse urlparts and post data * * Copyright (c) 1996-2013 by the citadel.org team * * This program is open source software. You can redistribute it and/or * modify it under the terms of the GNU General Public License, version 3. * * This program 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. */ #include "webcit.h" #include "webserver.h" /* uncomment to see all parameters sent to the server by the browser. */ /* #define DEBUG_URLSTRINGS */ void free_url(void *U) { urlcontent *u = (urlcontent*) U; FreeStrBuf(&u->url_data); free(u); } /* * Extract variables from the URL. */ void ParseURLParams(StrBuf *url) { const char *aptr, *bptr, *eptr, *up = NULL; int len, keylen = 0; urlcontent *u = NULL; wcsession *WCC = WC; if (WCC->Hdr->urlstrings == NULL) { WCC->Hdr->urlstrings = NewHash(1, NULL); } eptr = ChrPtr(url) + StrLength(url); up = ChrPtr(url); while ((up < eptr) && (!IsEmptyStr(up))) { aptr = up; while ((aptr < eptr) && (*aptr != '\0') && (*aptr != '=')) { aptr++; } if (*aptr != '=') { return; } aptr++; bptr = aptr; while ((bptr < eptr) && (*bptr != '\0') && (*bptr != '&') && (*bptr != '?') && (*bptr != ' ')) { bptr++; } keylen = aptr - up - 1; /* -1 -> '=' */ if (keylen > sizeof(u->url_key)) { syslog(LOG_WARNING, "%s:%d: invalid url_key of size %d in string size %d", __FILE__, __LINE__, keylen, sizeof(u->url_key) ); } u = (urlcontent *) malloc(sizeof(urlcontent)); memcpy(u->url_key, up, keylen); u->url_key[keylen] = '\0'; if (keylen < 0) { syslog(LOG_WARNING, "%s:%d: invalid url_key of size %d", __FILE__, __LINE__, keylen); free(u); return; } if (strncmp(u->url_key, "__", 2) != 0) { Put(WCC->Hdr->urlstrings, u->url_key, keylen, u, free_url); len = bptr - aptr; u->url_data = NewStrBufPlain(aptr, len); StrBufUnescape(u->url_data, 1); #ifdef DEBUG_URLSTRINGS syslog(LOG_DEBUG, "%s = [%d] %s\n", u->url_key, StrLength(u->url_data), ChrPtr(u->url_data)); #endif } else { len = bptr - aptr; u->url_data = NewStrBufPlain(aptr, len); StrBufUnescape(u->url_data, 1); syslog(LOG_WARNING, "REJECTED because of __ is internal only: %s = [%d] %s\n", u->url_key, StrLength(u->url_data), ChrPtr(u->url_data)); free_url(u); } up = bptr; ++up; } } /* * free urlstring memory */ void free_urls(void) { DeleteHash(&WC->Hdr->urlstrings); } /* * Diagnostic function to display the contents of all variables */ void dump_vars(void) { wcsession *WCC = WC; urlcontent *u; void *U; long HKLen; const char *HKey; HashPos *Cursor; Cursor = GetNewHashPos (WCC->Hdr->urlstrings, 0); while (GetNextHashPos(WCC->Hdr->urlstrings, Cursor, &HKLen, &HKey, &U)) { u = (urlcontent*) U; wc_printf("%38s = %s\n", u->url_key, ChrPtr(u->url_data)); } } /* * Return the value of a variable supplied to the current web page (from the url or a form) */ const char *XBstr(const char *key, size_t keylen, size_t *len) { void *U; if ((WC->Hdr->urlstrings != NULL) && GetHash(WC->Hdr->urlstrings, key, keylen, &U)) { *len = StrLength(((urlcontent *)U)->url_data); return ChrPtr(((urlcontent *)U)->url_data); } else { *len = 0; return (""); } } const char *XBSTR(const char *key, size_t *len) { void *U; if ((WC->Hdr->urlstrings != NULL) && GetHash(WC->Hdr->urlstrings, key, strlen (key), &U)){ *len = StrLength(((urlcontent *)U)->url_data); return ChrPtr(((urlcontent *)U)->url_data); } else { *len = 0; return (""); } } const char *BSTR(const char *key) { void *U; if ((WC->Hdr->urlstrings != NULL) && GetHash(WC->Hdr->urlstrings, key, strlen (key), &U)) return ChrPtr(((urlcontent *)U)->url_data); else return (""); } const char *Bstr(const char *key, size_t keylen) { void *U; if ((WC->Hdr->urlstrings != NULL) && GetHash(WC->Hdr->urlstrings, key, keylen, &U)) return ChrPtr(((urlcontent *)U)->url_data); else return (""); } const StrBuf *SBSTR(const char *key) { void *U; if ((WC->Hdr->urlstrings != NULL) && GetHash(WC->Hdr->urlstrings, key, strlen (key), &U)) return ((urlcontent *)U)->url_data; else return NULL; } const StrBuf *SBstr(const char *key, size_t keylen) { void *U; if ((WC->Hdr->urlstrings != NULL) && GetHash(WC->Hdr->urlstrings, key, keylen, &U)) return ((urlcontent *)U)->url_data; else return NULL; } long LBstr(const char *key, size_t keylen) { void *U; if ((WC->Hdr->urlstrings != NULL) && GetHash(WC->Hdr->urlstrings, key, keylen, &U)) return StrTol(((urlcontent *)U)->url_data); else return (0); } long LBSTR(const char *key) { void *U; if ((WC->Hdr->urlstrings != NULL) && GetHash(WC->Hdr->urlstrings, key, strlen(key), &U)) return StrTol(((urlcontent *)U)->url_data); else return (0); } int IBstr(const char *key, size_t keylen) { void *U; if ((WC->Hdr->urlstrings != NULL) && GetHash(WC->Hdr->urlstrings, key, keylen, &U)) return StrTol(((urlcontent *)U)->url_data); else return (0); } int IBSTR(const char *key) { void *U; if ((WC->Hdr->urlstrings != NULL) && GetHash(WC->Hdr->urlstrings, key, strlen(key), &U)) return StrToi(((urlcontent *)U)->url_data); else return (0); } int HaveBstr(const char *key, size_t keylen) { void *U; if ((WC->Hdr->urlstrings != NULL) && GetHash(WC->Hdr->urlstrings, key, keylen, &U)) return (StrLength(((urlcontent *)U)->url_data) != 0); else return (0); } int HAVEBSTR(const char *key) { void *U; if ((WC->Hdr->urlstrings != NULL) && GetHash(WC->Hdr->urlstrings, key, strlen(key), &U)) return (StrLength(((urlcontent *)U)->url_data) != 0); else return (0); } int YesBstr(const char *key, size_t keylen) { void *U; if ((WC->Hdr->urlstrings != NULL) && GetHash(WC->Hdr->urlstrings, key, keylen, &U)) return strcmp( ChrPtr(((urlcontent *)U)->url_data), "yes") == 0; else return (0); } int YESBSTR(const char *key) { void *U; if ((WC->Hdr->urlstrings != NULL) && GetHash(WC->Hdr->urlstrings, key, strlen(key), &U)) return strcmp( ChrPtr(((urlcontent *)U)->url_data), "yes") == 0; else return (0); } /* * This function is called by the MIME parser to handle data uploaded by * the browser. Form data, uploaded files, and the data from HTTP PUT * operations (such as those found in GroupDAV) all arrive this way. * * name Name of the item being uploaded * filename Filename of the item being uploaded * partnum MIME part identifier (not needed) * disp MIME content disposition (not needed) * content The actual data * cbtype MIME content-type * cbcharset Character set * length Content length * encoding MIME encoding type (not needed) * cbid Content ID (not needed) * userdata Not used here */ void upload_handler(char *name, char *filename, char *partnum, char *disp, void *content, char *cbtype, char *cbcharset, size_t length, char *encoding, char *cbid, void *userdata) { wcsession *WCC = WC; urlcontent *u; long keylen; #ifdef DEBUG_URLSTRINGS syslog(LOG_DEBUG, "upload_handler() name=%s, type=%s, len="SIZE_T_FMT, name, cbtype, length); #endif if (WCC->Hdr->urlstrings == NULL) WCC->Hdr->urlstrings = NewHash(1, NULL); /* Form fields */ if ( (length > 0) && (IsEmptyStr(cbtype)) ) { u = (urlcontent *) malloc(sizeof(urlcontent)); keylen = safestrncpy(u->url_key, name, sizeof(u->url_key)); u->url_data = NewStrBufPlain(content, length); if (strncmp(u->url_key, "__", 2) != 0) { Put(WCC->Hdr->urlstrings, u->url_key, keylen, u, free_url); } else { syslog(LOG_INFO, "REJECTED because of __ is internal only: %s = [%d] %s\n", u->url_key, StrLength(u->url_data), ChrPtr(u->url_data)); free_url(u); } #ifdef DEBUG_URLSTRINGS syslog(LOG_DEBUG, "Key: <%s> len: [%d] Data: <%s>", u->url_key, StrLength(u->url_data), ChrPtr(u->url_data)); #endif } /* Uploaded files */ if ( (length > 0) && (!IsEmptyStr(cbtype)) ) { WCC->upload = NewStrBufPlain(content, length); WCC->upload_length = length; WCC->upload_filename = NewStrBufPlain(filename, -1); safestrncpy(WCC->upload_content_type, cbtype, sizeof(WC->upload_content_type)); #ifdef DEBUG_URLSTRINGS syslog(LOG_DEBUG, "File: <%s> len: [%ld]", filename, (long int)length); #endif } } void PutBstr(const char *key, long keylen, StrBuf *Value) { urlcontent *u; if(keylen >= sizeof(u->url_key)) { syslog(LOG_WARNING, "%s:%d: invalid url_key of size %ld", __FILE__, __LINE__, keylen); FreeStrBuf(&Value); return; } u = (urlcontent*)malloc(sizeof(urlcontent)); memcpy(u->url_key, key, keylen + 1); u->url_data = Value; Put(WC->Hdr->urlstrings, u->url_key, keylen, u, free_url); } void PutlBstr(const char *key, long keylen, long Value) { StrBuf *Buf; Buf = NewStrBufPlain(NULL, sizeof(long) * 16); StrBufPrintf(Buf, "%ld", Value); PutBstr(key, keylen, Buf); } int ConditionalBstr(StrBuf *Target, WCTemplputParams *TP) { if(TP->Tokens->nParameters == 3) return HaveBstr(TKEY(2)); else { if (IS_NUMBER(TP->Tokens->Params[3]->Type)) { return LBstr(TKEY(2)) == GetTemplateTokenNumber(Target, TP, 3, 0); } else { const char *pch; long len; GetTemplateTokenString (Target, TP, 3, &pch, &len); return strcmp(Bstr(TKEY(2)), pch) == 0; } } } void tmplput_bstr(StrBuf *Target, WCTemplputParams *TP) { const StrBuf *Buf = SBstr(TKEY(0)); if (Buf != NULL) StrBufAppendTemplate(Target, TP, Buf, 1); } void tmplput_bstrforward(StrBuf *Target, WCTemplputParams *TP) { const StrBuf *Buf = SBstr(TKEY(0)); if (Buf != NULL) { StrBufAppendBufPlain(Target, HKEY("?"), 0); StrBufAppendBufPlain(Target, TKEY(0), 0); StrBufAppendBufPlain(Target, HKEY("="), 0); StrBufAppendTemplate(Target, TP, Buf, 1); } } void diagnostics(void) { output_headers(1, 1, 1, 0, 0, 0); wc_printf("Session: %d
    \n", WC->wc_session); wc_printf("Command:
    \n");
    /*	
    StrEscAppend(WC->WBuf, NULL, WC->UrlFragment1, 0, 0);
    	wc_printf("
    \n"); StrEscAppend(WC->WBuf, NULL, WC->UrlFragment12 0, 0); wc_printf("
    \n"); StrEscAppend(WC->WBuf, NULL, WC->UrlFragment3, 0, 0); */ wc_printf("

    \n"); wc_printf("Variables:
    \n");
    	dump_vars();
    	wc_printf("

    \n"); wDumpContent(1); } void tmplput_url_part(StrBuf *Target, WCTemplputParams *TP) { StrBuf *Name = NULL; StrBuf *UrlBuf = NULL; wcsession *WCC = WC; if (WCC != NULL) { long n; n = GetTemplateTokenNumber(Target, TP, 0, 0); if (n == 0) { if (WCC->Hdr->HR.Handler != NULL) UrlBuf = Name = WCC->Hdr->HR.Handler->Name; } else if (n == 1) { UrlBuf = NewStrBuf(); StrBufExtract_token(UrlBuf, WCC->Hdr->HR.ReqLine, 0, '/'); } else { UrlBuf = NewStrBuf(); StrBufExtract_token(UrlBuf, WCC->Hdr->HR.ReqLine, 1, '/'); } if (UrlBuf == NULL) { LogTemplateError(Target, "urlbuf", ERR_PARM1, TP, "not set."); } StrBufAppendTemplate(Target, TP, UrlBuf, 2); if (Name == NULL) FreeStrBuf(&UrlBuf); } } typedef struct __BstrPair { StrBuf *x; StrBuf *y; }BstrPair; CtxType CTX_BSTRPAIRS = CTX_NONE; void HFreeBstrPair(void *pv) { BstrPair *p = (BstrPair*) pv; FreeStrBuf(&p->x); FreeStrBuf(&p->y); free(pv); } HashList *iterate_GetBstrPairs(StrBuf *Target, WCTemplputParams *TP) { StrBuf *X, *Y; const char *ch = NULL; long len; const StrBuf *TheBStr; BstrPair *OnePair; HashList *List; const char *Pos = NULL; int i = 0; if (HaveTemplateTokenString(NULL, TP, 2, &ch, &len)) { GetTemplateTokenString(Target, TP, 2, &ch, &len); } else { return NULL; } TheBStr = SBstr(ch, len); if ((TheBStr == NULL) || (StrLength(TheBStr) == 0)) return NULL; List = NewHash(1, NULL); while (Pos != StrBufNOTNULL) { X = NewStrBufPlain(NULL, StrLength(TheBStr)); StrBufExtract_NextToken(X, TheBStr, &Pos, '|'); if (Pos == StrBufNOTNULL) { FreeStrBuf(&X); DeleteHash(&List); return NULL; } Y = NewStrBufPlain(NULL, StrLength(TheBStr)); StrBufExtract_NextToken(Y, TheBStr, &Pos, '|'); OnePair = (BstrPair*)malloc(sizeof(BstrPair)); OnePair->x = X; OnePair->y = Y; Put(List, IKEY(i), OnePair, HFreeBstrPair); i++; } return List; } void tmplput_bstr_pair(StrBuf *Target, WCTemplputParams *TP, int XY) { BstrPair *Pair = (BstrPair*) CTX(CTX_BSTRPAIRS); StrBufAppendTemplate(Target, TP, (XY)?Pair->y:Pair->x, 0); } void tmplput_bstr_pair_x(StrBuf *Target, WCTemplputParams *TP) { tmplput_bstr_pair(Target, TP, 0); } void tmplput_bstr_pair_y(StrBuf *Target, WCTemplputParams *TP) { tmplput_bstr_pair(Target, TP, 1); } void InitModule_PARAMHANDLING (void) { RegisterCTX(CTX_BSTRPAIRS); WebcitAddUrlHandler(HKEY("diagnostics"), "", 0, diagnostics, NEED_URL); RegisterIterator("ITERATE:BSTR:PAIR", 1, NULL, iterate_GetBstrPairs, NULL, DeleteHash, CTX_BSTRPAIRS, CTX_NONE, IT_NOFLAG); RegisterNamespace("BSTR:PAIR:X", 1, 2, tmplput_bstr_pair_x, NULL, CTX_BSTRPAIRS); RegisterNamespace("BSTR:PAIR:Y", 1, 2, tmplput_bstr_pair_y, NULL, CTX_BSTRPAIRS); RegisterConditional("COND:BSTR", 1, ConditionalBstr, CTX_NONE); RegisterNamespace("BSTR", 1, 2, tmplput_bstr, NULL, CTX_NONE); RegisterNamespace("BSTR:FORWARD", 1, 2, tmplput_bstrforward, NULL, CTX_NONE); RegisterNamespace("URLPART", 1, 2, tmplput_url_part, NULL, CTX_NONE); } void SessionAttachModule_PARAMHANDLING (wcsession *sess) { sess->Hdr->urlstrings = NewHash(1,NULL); } void SessionDetachModule_PARAMHANDLING (wcsession *sess) { DeleteHash(&sess->Hdr->urlstrings); FreeStrBuf(&sess->upload_filename); } webcit-8.24-dfsg.orig/autocompletion.c0000644000175000017500000000324112271477123017606 0ustar michaelmichael/* * ajax-powered autocompletion... * * Copyright (c) 1996-2012 by the citadel.org team * * This program is open source software: you can redistribute it and/or modify * it under the terms of the GNU General Public License, version 3. * * This program 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. */ #include "webcit.h" /* * Recipient autocompletion results */ void recp_autocomplete(char *partial) { char buf[1024]; char name[128]; output_headers(0, 0, 0, 0, 0, 0); hprintf("Content-type: text/html\r\n" "Server: %s\r\n" "Connection: close\r\n" "Pragma: no-cache\r\n" "Cache-Control: no-store\r\n" "Expires: -1\r\n" , PACKAGE_STRING); begin_burst(); wc_printf("
      "); serv_printf("AUTO %s", partial); serv_getln(buf, sizeof buf); if (buf[0] == '1') { while(serv_getln(buf, sizeof buf), strcmp(buf, "000")) { extract_token(name, buf, 0, '|', sizeof name); wc_printf("
    • "); escputs(name); wc_printf("
    • "); } } wc_printf("
    "); wc_printf("\r\n\r\n"); wDumpContent(0); } void _recp_autocomplete(void) {recp_autocomplete(bstr("recp"));} void _cc_autocomplete(void) {recp_autocomplete(bstr("cc"));} void _bcc_autocomplete(void) {recp_autocomplete(bstr("bcc"));} void InitModule_AUTO_COMPLETE (void) { WebcitAddUrlHandler(HKEY("recp_autocomplete"), "", 0, _recp_autocomplete, 0); WebcitAddUrlHandler(HKEY("cc_autocomplete"), "", 0, _cc_autocomplete, 0); WebcitAddUrlHandler(HKEY("bcc_autocomplete"), "", 0, _bcc_autocomplete, 0); } webcit-8.24-dfsg.orig/ical_maps.c0000644000175000017500000012107312271477136016504 0ustar michaelmichael#include "webcit.h" typedef struct _Ical_icalproperty_kind { const char *Name; long NameLen; icalproperty_kind map; } Ical_icalproperty_kind; typedef struct _Ical_icalcomponent_kind { const char *Name; long NameLen; icalcomponent_kind map; } Ical_icalcomponent_kind; typedef struct _Ical_icalrequeststatus { const char *Name; long NameLen; icalrequeststatus map; } Ical_icalrequeststatus; typedef struct _Ical_ical_unknown_token_handling { const char *Name; long NameLen; ical_unknown_token_handling map; } Ical_ical_unknown_token_handling; typedef struct _Ical_icalrecurrencetype_frequency { const char *Name; long NameLen; icalrecurrencetype_frequency map; } Ical_icalrecurrencetype_frequency; typedef struct _Ical_icalrecurrencetype_weekday { const char *Name; long NameLen; icalrecurrencetype_weekday map; } Ical_icalrecurrencetype_weekday; typedef struct _Ical_icalvalue_kind { const char *Name; long NameLen; icalvalue_kind map; } Ical_icalvalue_kind; typedef struct _Ical_icalproperty_action { const char *Name; long NameLen; icalproperty_action map; } Ical_icalproperty_action; typedef struct _Ical_icalproperty_carlevel { const char *Name; long NameLen; icalproperty_carlevel map; } Ical_icalproperty_carlevel; typedef struct _Ical_icalproperty_class { const char *Name; long NameLen; icalproperty_class map; } Ical_icalproperty_class; typedef struct _Ical_icalproperty_cmd { const char *Name; long NameLen; icalproperty_cmd map; } Ical_icalproperty_cmd; typedef struct _Ical_icalproperty_method { const char *Name; long NameLen; icalproperty_method map; } Ical_icalproperty_method; typedef struct _Ical_icalproperty_querylevel { const char *Name; long NameLen; icalproperty_querylevel map; } Ical_icalproperty_querylevel; typedef struct _Ical_icalproperty_status { const char *Name; long NameLen; icalproperty_status map; } Ical_icalproperty_status; typedef struct _Ical_icalproperty_transp { const char *Name; long NameLen; icalproperty_transp map; } Ical_icalproperty_transp; typedef struct _Ical_icalproperty_xlicclass { const char *Name; long NameLen; icalproperty_xlicclass map; } Ical_icalproperty_xlicclass; typedef struct _Ical_icalparameter_kind { const char *Name; long NameLen; icalparameter_kind map; } Ical_icalparameter_kind; typedef struct _Ical_icalparameter_action { const char *Name; long NameLen; icalparameter_action map; } Ical_icalparameter_action; typedef struct _Ical_icalparameter_cutype { const char *Name; long NameLen; icalparameter_cutype map; } Ical_icalparameter_cutype; typedef struct _Ical_icalparameter_enable { const char *Name; long NameLen; icalparameter_enable map; } Ical_icalparameter_enable; typedef struct _Ical_icalparameter_encoding { const char *Name; long NameLen; icalparameter_encoding map; } Ical_icalparameter_encoding; typedef struct _Ical_icalparameter_fbtype { const char *Name; long NameLen; icalparameter_fbtype map; } Ical_icalparameter_fbtype; typedef struct _Ical_icalparameter_local { const char *Name; long NameLen; icalparameter_local map; } Ical_icalparameter_local; typedef struct _Ical_icalparameter_partstat { const char *Name; long NameLen; icalparameter_partstat map; } Ical_icalparameter_partstat; typedef struct _Ical_icalparameter_range { const char *Name; long NameLen; icalparameter_range map; } Ical_icalparameter_range; typedef struct _Ical_icalparameter_related { const char *Name; long NameLen; icalparameter_related map; } Ical_icalparameter_related; typedef struct _Ical_icalparameter_reltype { const char *Name; long NameLen; icalparameter_reltype map; } Ical_icalparameter_reltype; typedef struct _Ical_icalparameter_role { const char *Name; long NameLen; icalparameter_role map; } Ical_icalparameter_role; typedef struct _Ical_icalparameter_rsvp { const char *Name; long NameLen; icalparameter_rsvp map; } Ical_icalparameter_rsvp; typedef struct _Ical_icalparameter_value { const char *Name; long NameLen; icalparameter_value map; } Ical_icalparameter_value; typedef struct _Ical_icalparameter_xliccomparetype { const char *Name; long NameLen; icalparameter_xliccomparetype map; } Ical_icalparameter_xliccomparetype; typedef struct _Ical_icalparameter_xlicerrortype { const char *Name; long NameLen; icalparameter_xlicerrortype map; } Ical_icalparameter_xlicerrortype; typedef struct _Ical_icalparser_state { const char *Name; long NameLen; icalparser_state map; } Ical_icalparser_state; typedef struct _Ical_icalerrorenum { const char *Name; long NameLen; icalerrorenum map; } Ical_icalerrorenum; typedef struct _Ical_icalerrorstate { const char *Name; long NameLen; icalerrorstate map; } Ical_icalerrorstate; typedef struct _Ical_icalrestriction_kind { const char *Name; long NameLen; icalrestriction_kind map; } Ical_icalrestriction_kind; Ical_icalproperty_kind icalproperty_kind_map[] = { {HKEY("ICAL_ANY_PROPERTY"), ICAL_ANY_PROPERTY}, {HKEY("ICAL_ACTION_PROPERTY"), ICAL_ACTION_PROPERTY}, {HKEY("ICAL_ALLOWCONFLICT_PROPERTY"), ICAL_ALLOWCONFLICT_PROPERTY}, {HKEY("ICAL_ATTACH_PROPERTY"), ICAL_ATTACH_PROPERTY}, {HKEY("ICAL_ATTENDEE_PROPERTY"), ICAL_ATTENDEE_PROPERTY}, {HKEY("ICAL_CALID_PROPERTY"), ICAL_CALID_PROPERTY}, {HKEY("ICAL_CALMASTER_PROPERTY"), ICAL_CALMASTER_PROPERTY}, {HKEY("ICAL_CALSCALE_PROPERTY"), ICAL_CALSCALE_PROPERTY}, {HKEY("ICAL_CAPVERSION_PROPERTY"), ICAL_CAPVERSION_PROPERTY}, {HKEY("ICAL_CARLEVEL_PROPERTY"), ICAL_CARLEVEL_PROPERTY}, {HKEY("ICAL_CARID_PROPERTY"), ICAL_CARID_PROPERTY}, {HKEY("ICAL_CATEGORIES_PROPERTY"), ICAL_CATEGORIES_PROPERTY}, {HKEY("ICAL_CLASS_PROPERTY"), ICAL_CLASS_PROPERTY}, {HKEY("ICAL_CMD_PROPERTY"), ICAL_CMD_PROPERTY}, {HKEY("ICAL_COMMENT_PROPERTY"), ICAL_COMMENT_PROPERTY}, {HKEY("ICAL_COMPLETED_PROPERTY"), ICAL_COMPLETED_PROPERTY}, {HKEY("ICAL_COMPONENTS_PROPERTY"), ICAL_COMPONENTS_PROPERTY}, {HKEY("ICAL_CONTACT_PROPERTY"), ICAL_CONTACT_PROPERTY}, {HKEY("ICAL_CREATED_PROPERTY"), ICAL_CREATED_PROPERTY}, {HKEY("ICAL_CSID_PROPERTY"), ICAL_CSID_PROPERTY}, {HKEY("ICAL_DATEMAX_PROPERTY"), ICAL_DATEMAX_PROPERTY}, {HKEY("ICAL_DATEMIN_PROPERTY"), ICAL_DATEMIN_PROPERTY}, {HKEY("ICAL_DECREED_PROPERTY"), ICAL_DECREED_PROPERTY}, {HKEY("ICAL_DEFAULTCHARSET_PROPERTY"), ICAL_DEFAULTCHARSET_PROPERTY}, {HKEY("ICAL_DEFAULTLOCALE_PROPERTY"), ICAL_DEFAULTLOCALE_PROPERTY}, {HKEY("ICAL_DEFAULTTZID_PROPERTY"), ICAL_DEFAULTTZID_PROPERTY}, {HKEY("ICAL_DEFAULTVCARS_PROPERTY"), ICAL_DEFAULTVCARS_PROPERTY}, {HKEY("ICAL_DENY_PROPERTY"), ICAL_DENY_PROPERTY}, {HKEY("ICAL_DESCRIPTION_PROPERTY"), ICAL_DESCRIPTION_PROPERTY}, {HKEY("ICAL_DTEND_PROPERTY"), ICAL_DTEND_PROPERTY}, {HKEY("ICAL_DTSTAMP_PROPERTY"), ICAL_DTSTAMP_PROPERTY}, {HKEY("ICAL_DTSTART_PROPERTY"), ICAL_DTSTART_PROPERTY}, {HKEY("ICAL_DUE_PROPERTY"), ICAL_DUE_PROPERTY}, {HKEY("ICAL_DURATION_PROPERTY"), ICAL_DURATION_PROPERTY}, {HKEY("ICAL_EXDATE_PROPERTY"), ICAL_EXDATE_PROPERTY}, {HKEY("ICAL_EXPAND_PROPERTY"), ICAL_EXPAND_PROPERTY}, {HKEY("ICAL_EXRULE_PROPERTY"), ICAL_EXRULE_PROPERTY}, {HKEY("ICAL_FREEBUSY_PROPERTY"), ICAL_FREEBUSY_PROPERTY}, {HKEY("ICAL_GEO_PROPERTY"), ICAL_GEO_PROPERTY}, {HKEY("ICAL_GRANT_PROPERTY"), ICAL_GRANT_PROPERTY}, {HKEY("ICAL_ITIPVERSION_PROPERTY"), ICAL_ITIPVERSION_PROPERTY}, {HKEY("ICAL_LASTMODIFIED_PROPERTY"), ICAL_LASTMODIFIED_PROPERTY}, {HKEY("ICAL_LOCATION_PROPERTY"), ICAL_LOCATION_PROPERTY}, {HKEY("ICAL_MAXCOMPONENTSIZE_PROPERTY"), ICAL_MAXCOMPONENTSIZE_PROPERTY}, {HKEY("ICAL_MAXDATE_PROPERTY"), ICAL_MAXDATE_PROPERTY}, {HKEY("ICAL_MAXRESULTS_PROPERTY"), ICAL_MAXRESULTS_PROPERTY}, {HKEY("ICAL_MAXRESULTSSIZE_PROPERTY"), ICAL_MAXRESULTSSIZE_PROPERTY}, {HKEY("ICAL_METHOD_PROPERTY"), ICAL_METHOD_PROPERTY}, {HKEY("ICAL_MINDATE_PROPERTY"), ICAL_MINDATE_PROPERTY}, {HKEY("ICAL_MULTIPART_PROPERTY"), ICAL_MULTIPART_PROPERTY}, {HKEY("ICAL_NAME_PROPERTY"), ICAL_NAME_PROPERTY}, {HKEY("ICAL_ORGANIZER_PROPERTY"), ICAL_ORGANIZER_PROPERTY}, {HKEY("ICAL_OWNER_PROPERTY"), ICAL_OWNER_PROPERTY}, {HKEY("ICAL_PERCENTCOMPLETE_PROPERTY"), ICAL_PERCENTCOMPLETE_PROPERTY}, {HKEY("ICAL_PERMISSION_PROPERTY"), ICAL_PERMISSION_PROPERTY}, {HKEY("ICAL_PRIORITY_PROPERTY"), ICAL_PRIORITY_PROPERTY}, {HKEY("ICAL_PRODID_PROPERTY"), ICAL_PRODID_PROPERTY}, {HKEY("ICAL_QUERY_PROPERTY"), ICAL_QUERY_PROPERTY}, {HKEY("ICAL_QUERYLEVEL_PROPERTY"), ICAL_QUERYLEVEL_PROPERTY}, {HKEY("ICAL_QUERYID_PROPERTY"), ICAL_QUERYID_PROPERTY}, {HKEY("ICAL_QUERYNAME_PROPERTY"), ICAL_QUERYNAME_PROPERTY}, {HKEY("ICAL_RDATE_PROPERTY"), ICAL_RDATE_PROPERTY}, {HKEY("ICAL_RECURACCEPTED_PROPERTY"), ICAL_RECURACCEPTED_PROPERTY}, {HKEY("ICAL_RECUREXPAND_PROPERTY"), ICAL_RECUREXPAND_PROPERTY}, {HKEY("ICAL_RECURLIMIT_PROPERTY"), ICAL_RECURLIMIT_PROPERTY}, {HKEY("ICAL_RECURRENCEID_PROPERTY"), ICAL_RECURRENCEID_PROPERTY}, {HKEY("ICAL_RELATEDTO_PROPERTY"), ICAL_RELATEDTO_PROPERTY}, {HKEY("ICAL_RELCALID_PROPERTY"), ICAL_RELCALID_PROPERTY}, {HKEY("ICAL_REPEAT_PROPERTY"), ICAL_REPEAT_PROPERTY}, {HKEY("ICAL_REQUESTSTATUS_PROPERTY"), ICAL_REQUESTSTATUS_PROPERTY}, {HKEY("ICAL_RESOURCES_PROPERTY"), ICAL_RESOURCES_PROPERTY}, {HKEY("ICAL_RESTRICTION_PROPERTY"), ICAL_RESTRICTION_PROPERTY}, {HKEY("ICAL_RRULE_PROPERTY"), ICAL_RRULE_PROPERTY}, {HKEY("ICAL_SCOPE_PROPERTY"), ICAL_SCOPE_PROPERTY}, {HKEY("ICAL_SEQUENCE_PROPERTY"), ICAL_SEQUENCE_PROPERTY}, {HKEY("ICAL_STATUS_PROPERTY"), ICAL_STATUS_PROPERTY}, {HKEY("ICAL_STORESEXPANDED_PROPERTY"), ICAL_STORESEXPANDED_PROPERTY}, {HKEY("ICAL_SUMMARY_PROPERTY"), ICAL_SUMMARY_PROPERTY}, {HKEY("ICAL_TARGET_PROPERTY"), ICAL_TARGET_PROPERTY}, {HKEY("ICAL_TRANSP_PROPERTY"), ICAL_TRANSP_PROPERTY}, {HKEY("ICAL_TRIGGER_PROPERTY"), ICAL_TRIGGER_PROPERTY}, {HKEY("ICAL_TZID_PROPERTY"), ICAL_TZID_PROPERTY}, {HKEY("ICAL_TZNAME_PROPERTY"), ICAL_TZNAME_PROPERTY}, {HKEY("ICAL_TZOFFSETFROM_PROPERTY"), ICAL_TZOFFSETFROM_PROPERTY}, {HKEY("ICAL_TZOFFSETTO_PROPERTY"), ICAL_TZOFFSETTO_PROPERTY}, {HKEY("ICAL_TZURL_PROPERTY"), ICAL_TZURL_PROPERTY}, {HKEY("ICAL_UID_PROPERTY"), ICAL_UID_PROPERTY}, {HKEY("ICAL_URL_PROPERTY"), ICAL_URL_PROPERTY}, {HKEY("ICAL_VERSION_PROPERTY"), ICAL_VERSION_PROPERTY}, {HKEY("ICAL_X_PROPERTY"), ICAL_X_PROPERTY}, {HKEY("ICAL_XLICCLASS_PROPERTY"), ICAL_XLICCLASS_PROPERTY}, {HKEY("ICAL_XLICCLUSTERCOUNT_PROPERTY"), ICAL_XLICCLUSTERCOUNT_PROPERTY}, {HKEY("ICAL_XLICERROR_PROPERTY"), ICAL_XLICERROR_PROPERTY}, {HKEY("ICAL_XLICMIMECHARSET_PROPERTY"), ICAL_XLICMIMECHARSET_PROPERTY}, {HKEY("ICAL_XLICMIMECID_PROPERTY"), ICAL_XLICMIMECID_PROPERTY}, {HKEY("ICAL_XLICMIMECONTENTTYPE_PROPERTY"), ICAL_XLICMIMECONTENTTYPE_PROPERTY}, {HKEY("ICAL_XLICMIMEENCODING_PROPERTY"), ICAL_XLICMIMEENCODING_PROPERTY}, {HKEY("ICAL_XLICMIMEFILENAME_PROPERTY"), ICAL_XLICMIMEFILENAME_PROPERTY}, {HKEY("ICAL_XLICMIMEOPTINFO_PROPERTY"), ICAL_XLICMIMEOPTINFO_PROPERTY}, {HKEY("ICAL_NO_PROPERTY"), ICAL_NO_PROPERTY}, {"", 0, 0} }; Ical_icalcomponent_kind icalcomponent_kind_map[] = { {HKEY("ICAL_NO_COMPONENT"), ICAL_NO_COMPONENT}, {HKEY("ICAL_ANY_COMPONENT"), ICAL_ANY_COMPONENT}, {HKEY("ICAL_XROOT_COMPONENT"), ICAL_XROOT_COMPONENT}, {HKEY("ICAL_XATTACH_COMPONENT"), ICAL_XATTACH_COMPONENT}, {HKEY("ICAL_VEVENT_COMPONENT"), ICAL_VEVENT_COMPONENT}, {HKEY("ICAL_VTODO_COMPONENT"), ICAL_VTODO_COMPONENT}, {HKEY("ICAL_VJOURNAL_COMPONENT"), ICAL_VJOURNAL_COMPONENT}, {HKEY("ICAL_VCALENDAR_COMPONENT"), ICAL_VCALENDAR_COMPONENT}, {HKEY("ICAL_VAGENDA_COMPONENT"), ICAL_VAGENDA_COMPONENT}, {HKEY("ICAL_VFREEBUSY_COMPONENT"), ICAL_VFREEBUSY_COMPONENT}, {HKEY("ICAL_VALARM_COMPONENT"), ICAL_VALARM_COMPONENT}, {HKEY("ICAL_XAUDIOALARM_COMPONENT"), ICAL_XAUDIOALARM_COMPONENT}, {HKEY("ICAL_XDISPLAYALARM_COMPONENT"), ICAL_XDISPLAYALARM_COMPONENT}, {HKEY("ICAL_XEMAILALARM_COMPONENT"), ICAL_XEMAILALARM_COMPONENT}, {HKEY("ICAL_XPROCEDUREALARM_COMPONENT"), ICAL_XPROCEDUREALARM_COMPONENT}, {HKEY("ICAL_VTIMEZONE_COMPONENT"), ICAL_VTIMEZONE_COMPONENT}, {HKEY("ICAL_XSTANDARD_COMPONENT"), ICAL_XSTANDARD_COMPONENT}, {HKEY("ICAL_XDAYLIGHT_COMPONENT"), ICAL_XDAYLIGHT_COMPONENT}, {HKEY("ICAL_X_COMPONENT"), ICAL_X_COMPONENT}, {HKEY("ICAL_VSCHEDULE_COMPONENT"), ICAL_VSCHEDULE_COMPONENT}, {HKEY("ICAL_VQUERY_COMPONENT"), ICAL_VQUERY_COMPONENT}, {HKEY("ICAL_VREPLY_COMPONENT"), ICAL_VREPLY_COMPONENT}, {HKEY("ICAL_VCAR_COMPONENT"), ICAL_VCAR_COMPONENT}, {HKEY("ICAL_VCOMMAND_COMPONENT"), ICAL_VCOMMAND_COMPONENT}, {HKEY("ICAL_XLICINVALID_COMPONENT"), ICAL_XLICINVALID_COMPONENT}, {HKEY("ICAL_XLICMIMEPART_COMPONENT"), ICAL_XLICMIMEPART_COMPONENT}, {"", 0, 0} }; Ical_icalrequeststatus icalrequeststatus_map[] = { {HKEY("ICAL_UNKNOWN_STATUS"), ICAL_UNKNOWN_STATUS}, {HKEY("ICAL_2_0_SUCCESS_STATUS"), ICAL_2_0_SUCCESS_STATUS}, {HKEY("ICAL_2_1_FALLBACK_STATUS"), ICAL_2_1_FALLBACK_STATUS}, {HKEY("ICAL_2_2_IGPROP_STATUS"), ICAL_2_2_IGPROP_STATUS}, {HKEY("ICAL_2_3_IGPARAM_STATUS"), ICAL_2_3_IGPARAM_STATUS}, {HKEY("ICAL_2_4_IGXPROP_STATUS"), ICAL_2_4_IGXPROP_STATUS}, {HKEY("ICAL_2_5_IGXPARAM_STATUS"), ICAL_2_5_IGXPARAM_STATUS}, {HKEY("ICAL_2_6_IGCOMP_STATUS"), ICAL_2_6_IGCOMP_STATUS}, {HKEY("ICAL_2_7_FORWARD_STATUS"), ICAL_2_7_FORWARD_STATUS}, {HKEY("ICAL_2_8_ONEEVENT_STATUS"), ICAL_2_8_ONEEVENT_STATUS}, {HKEY("ICAL_2_9_TRUNC_STATUS"), ICAL_2_9_TRUNC_STATUS}, {HKEY("ICAL_2_10_ONETODO_STATUS"), ICAL_2_10_ONETODO_STATUS}, {HKEY("ICAL_2_11_TRUNCRRULE_STATUS"), ICAL_2_11_TRUNCRRULE_STATUS}, {HKEY("ICAL_3_0_INVPROPNAME_STATUS"), ICAL_3_0_INVPROPNAME_STATUS}, {HKEY("ICAL_3_1_INVPROPVAL_STATUS"), ICAL_3_1_INVPROPVAL_STATUS}, {HKEY("ICAL_3_2_INVPARAM_STATUS"), ICAL_3_2_INVPARAM_STATUS}, {HKEY("ICAL_3_3_INVPARAMVAL_STATUS"), ICAL_3_3_INVPARAMVAL_STATUS}, {HKEY("ICAL_3_4_INVCOMP_STATUS"), ICAL_3_4_INVCOMP_STATUS}, {HKEY("ICAL_3_5_INVTIME_STATUS"), ICAL_3_5_INVTIME_STATUS}, {HKEY("ICAL_3_6_INVRULE_STATUS"), ICAL_3_6_INVRULE_STATUS}, {HKEY("ICAL_3_7_INVCU_STATUS"), ICAL_3_7_INVCU_STATUS}, {HKEY("ICAL_3_8_NOAUTH_STATUS"), ICAL_3_8_NOAUTH_STATUS}, {HKEY("ICAL_3_9_BADVERSION_STATUS"), ICAL_3_9_BADVERSION_STATUS}, {HKEY("ICAL_3_10_TOOBIG_STATUS"), ICAL_3_10_TOOBIG_STATUS}, {HKEY("ICAL_3_11_MISSREQCOMP_STATUS"), ICAL_3_11_MISSREQCOMP_STATUS}, {HKEY("ICAL_3_12_UNKCOMP_STATUS"), ICAL_3_12_UNKCOMP_STATUS}, {HKEY("ICAL_3_13_BADCOMP_STATUS"), ICAL_3_13_BADCOMP_STATUS}, {HKEY("ICAL_3_14_NOCAP_STATUS"), ICAL_3_14_NOCAP_STATUS}, {HKEY("ICAL_3_15_INVCOMMAND"), ICAL_3_15_INVCOMMAND}, {HKEY("ICAL_4_0_BUSY_STATUS"), ICAL_4_0_BUSY_STATUS}, {HKEY("ICAL_4_1_STORE_ACCESS_DENIED"), ICAL_4_1_STORE_ACCESS_DENIED}, {HKEY("ICAL_4_2_STORE_FAILED"), ICAL_4_2_STORE_FAILED}, {HKEY("ICAL_4_3_STORE_NOT_FOUND"), ICAL_4_3_STORE_NOT_FOUND}, {HKEY("ICAL_5_0_MAYBE_STATUS"), ICAL_5_0_MAYBE_STATUS}, {HKEY("ICAL_5_1_UNAVAIL_STATUS"), ICAL_5_1_UNAVAIL_STATUS}, {HKEY("ICAL_5_2_NOSERVICE_STATUS"), ICAL_5_2_NOSERVICE_STATUS}, {HKEY("ICAL_5_3_NOSCHED_STATUS"), ICAL_5_3_NOSCHED_STATUS}, {HKEY("ICAL_6_1_CONTAINER_NOT_FOUND"), ICAL_6_1_CONTAINER_NOT_FOUND}, {HKEY("ICAL_9_0_UNRECOGNIZED_COMMAND"), ICAL_9_0_UNRECOGNIZED_COMMAND}, {"", 0, 0} }; Ical_ical_unknown_token_handling ical_unknown_token_handling_map[] = { {HKEY("ICAL_ASSUME_IANA_TOKEN"), ICAL_ASSUME_IANA_TOKEN}, {HKEY("ICAL_DISCARD_TOKEN"), ICAL_DISCARD_TOKEN}, {HKEY("ICAL_TREAT_AS_ERROR"), ICAL_TREAT_AS_ERROR}, {"", 0, 0} }; Ical_icalrecurrencetype_frequency icalrecurrencetype_frequency_map[] = { {HKEY("ICAL_SECONDLY_RECURRENCE"), ICAL_SECONDLY_RECURRENCE}, {HKEY("ICAL_MINUTELY_RECURRENCE"), ICAL_MINUTELY_RECURRENCE}, {HKEY("ICAL_HOURLY_RECURRENCE"), ICAL_HOURLY_RECURRENCE}, {HKEY("ICAL_DAILY_RECURRENCE"), ICAL_DAILY_RECURRENCE}, {HKEY("ICAL_WEEKLY_RECURRENCE"), ICAL_WEEKLY_RECURRENCE}, {HKEY("ICAL_MONTHLY_RECURRENCE"), ICAL_MONTHLY_RECURRENCE}, {HKEY("ICAL_YEARLY_RECURRENCE"), ICAL_YEARLY_RECURRENCE}, {HKEY("ICAL_NO_RECURRENCE"), ICAL_NO_RECURRENCE}, {"", 0, 0} }; Ical_icalrecurrencetype_weekday icalrecurrencetype_weekday_map[] = { {HKEY("ICAL_NO_WEEKDAY"), ICAL_NO_WEEKDAY}, {HKEY("ICAL_SUNDAY_WEEKDAY"), ICAL_SUNDAY_WEEKDAY}, {HKEY("ICAL_MONDAY_WEEKDAY"), ICAL_MONDAY_WEEKDAY}, {HKEY("ICAL_TUESDAY_WEEKDAY"), ICAL_TUESDAY_WEEKDAY}, {HKEY("ICAL_WEDNESDAY_WEEKDAY"), ICAL_WEDNESDAY_WEEKDAY}, {HKEY("ICAL_THURSDAY_WEEKDAY"), ICAL_THURSDAY_WEEKDAY}, {HKEY("ICAL_FRIDAY_WEEKDAY"), ICAL_FRIDAY_WEEKDAY}, {HKEY("ICAL_SATURDAY_WEEKDAY"), ICAL_SATURDAY_WEEKDAY}, {"", 0, 0} }; Ical_icalvalue_kind icalvalue_kind_map[] = { {HKEY("ICAL_ANY_VALUE"), ICAL_ANY_VALUE}, {HKEY("ICAL_QUERY_VALUE"), ICAL_QUERY_VALUE}, {HKEY("ICAL_DATE_VALUE"), ICAL_DATE_VALUE}, {HKEY("ICAL_ATTACH_VALUE"), ICAL_ATTACH_VALUE}, {HKEY("ICAL_GEO_VALUE"), ICAL_GEO_VALUE}, {HKEY("ICAL_STATUS_VALUE"), ICAL_STATUS_VALUE}, {HKEY("ICAL_TRANSP_VALUE"), ICAL_TRANSP_VALUE}, {HKEY("ICAL_STRING_VALUE"), ICAL_STRING_VALUE}, {HKEY("ICAL_TEXT_VALUE"), ICAL_TEXT_VALUE}, {HKEY("ICAL_REQUESTSTATUS_VALUE"), ICAL_REQUESTSTATUS_VALUE}, {HKEY("ICAL_CMD_VALUE"), ICAL_CMD_VALUE}, {HKEY("ICAL_BINARY_VALUE"), ICAL_BINARY_VALUE}, {HKEY("ICAL_QUERYLEVEL_VALUE"), ICAL_QUERYLEVEL_VALUE}, {HKEY("ICAL_PERIOD_VALUE"), ICAL_PERIOD_VALUE}, {HKEY("ICAL_FLOAT_VALUE"), ICAL_FLOAT_VALUE}, {HKEY("ICAL_DATETIMEPERIOD_VALUE"), ICAL_DATETIMEPERIOD_VALUE}, {HKEY("ICAL_CARLEVEL_VALUE"), ICAL_CARLEVEL_VALUE}, {HKEY("ICAL_INTEGER_VALUE"), ICAL_INTEGER_VALUE}, {HKEY("ICAL_CLASS_VALUE"), ICAL_CLASS_VALUE}, {HKEY("ICAL_URI_VALUE"), ICAL_URI_VALUE}, {HKEY("ICAL_DURATION_VALUE"), ICAL_DURATION_VALUE}, {HKEY("ICAL_BOOLEAN_VALUE"), ICAL_BOOLEAN_VALUE}, {HKEY("ICAL_X_VALUE"), ICAL_X_VALUE}, {HKEY("ICAL_CALADDRESS_VALUE"), ICAL_CALADDRESS_VALUE}, {HKEY("ICAL_TRIGGER_VALUE"), ICAL_TRIGGER_VALUE}, {HKEY("ICAL_XLICCLASS_VALUE"), ICAL_XLICCLASS_VALUE}, {HKEY("ICAL_RECUR_VALUE"), ICAL_RECUR_VALUE}, {HKEY("ICAL_ACTION_VALUE"), ICAL_ACTION_VALUE}, {HKEY("ICAL_DATETIME_VALUE"), ICAL_DATETIME_VALUE}, {HKEY("ICAL_UTCOFFSET_VALUE"), ICAL_UTCOFFSET_VALUE}, {HKEY("ICAL_METHOD_VALUE"), ICAL_METHOD_VALUE}, {HKEY("ICAL_NO_VALUE"), ICAL_NO_VALUE}, {"", 0, 0} }; Ical_icalproperty_action icalproperty_action_map[] = { {HKEY("ICAL_ACTION_X"), ICAL_ACTION_X}, {HKEY("ICAL_ACTION_AUDIO"), ICAL_ACTION_AUDIO}, {HKEY("ICAL_ACTION_DISPLAY"), ICAL_ACTION_DISPLAY}, {HKEY("ICAL_ACTION_EMAIL"), ICAL_ACTION_EMAIL}, {HKEY("ICAL_ACTION_PROCEDURE"), ICAL_ACTION_PROCEDURE}, {HKEY("ICAL_ACTION_NONE"), ICAL_ACTION_NONE}, {"", 0, 0} }; Ical_icalproperty_carlevel icalproperty_carlevel_map[] = { {HKEY("ICAL_CARLEVEL_X"), ICAL_CARLEVEL_X}, {HKEY("ICAL_CARLEVEL_CARNONE"), ICAL_CARLEVEL_CARNONE}, {HKEY("ICAL_CARLEVEL_CARMIN"), ICAL_CARLEVEL_CARMIN}, {HKEY("ICAL_CARLEVEL_CARFULL1"), ICAL_CARLEVEL_CARFULL1}, {HKEY("ICAL_CARLEVEL_NONE"), ICAL_CARLEVEL_NONE}, {"", 0, 0} }; Ical_icalproperty_class icalproperty_class_map[] = { {HKEY("ICAL_CLASS_X"), ICAL_CLASS_X}, {HKEY("ICAL_CLASS_PUBLIC"), ICAL_CLASS_PUBLIC}, {HKEY("ICAL_CLASS_PRIVATE"), ICAL_CLASS_PRIVATE}, {HKEY("ICAL_CLASS_CONFIDENTIAL"), ICAL_CLASS_CONFIDENTIAL}, {HKEY("ICAL_CLASS_NONE"), ICAL_CLASS_NONE}, {"", 0, 0} }; Ical_icalproperty_cmd icalproperty_cmd_map[] = { {HKEY("ICAL_CMD_X"), ICAL_CMD_X}, {HKEY("ICAL_CMD_ABORT"), ICAL_CMD_ABORT}, {HKEY("ICAL_CMD_CONTINUE"), ICAL_CMD_CONTINUE}, {HKEY("ICAL_CMD_CREATE"), ICAL_CMD_CREATE}, {HKEY("ICAL_CMD_DELETE"), ICAL_CMD_DELETE}, {HKEY("ICAL_CMD_GENERATEUID"), ICAL_CMD_GENERATEUID}, {HKEY("ICAL_CMD_GETCAPABILITY"), ICAL_CMD_GETCAPABILITY}, {HKEY("ICAL_CMD_IDENTIFY"), ICAL_CMD_IDENTIFY}, {HKEY("ICAL_CMD_MODIFY"), ICAL_CMD_MODIFY}, {HKEY("ICAL_CMD_MOVE"), ICAL_CMD_MOVE}, {HKEY("ICAL_CMD_REPLY"), ICAL_CMD_REPLY}, {HKEY("ICAL_CMD_SEARCH"), ICAL_CMD_SEARCH}, {HKEY("ICAL_CMD_SETLOCALE"), ICAL_CMD_SETLOCALE}, {HKEY("ICAL_CMD_NONE"), ICAL_CMD_NONE}, {"", 0, 0} }; Ical_icalproperty_method icalproperty_method_map[] = { {HKEY("ICAL_METHOD_X"), ICAL_METHOD_X}, {HKEY("ICAL_METHOD_PUBLISH"), ICAL_METHOD_PUBLISH}, {HKEY("ICAL_METHOD_REQUEST"), ICAL_METHOD_REQUEST}, {HKEY("ICAL_METHOD_REPLY"), ICAL_METHOD_REPLY}, {HKEY("ICAL_METHOD_ADD"), ICAL_METHOD_ADD}, {HKEY("ICAL_METHOD_CANCEL"), ICAL_METHOD_CANCEL}, {HKEY("ICAL_METHOD_REFRESH"), ICAL_METHOD_REFRESH}, {HKEY("ICAL_METHOD_COUNTER"), ICAL_METHOD_COUNTER}, {HKEY("ICAL_METHOD_DECLINECOUNTER"), ICAL_METHOD_DECLINECOUNTER}, {HKEY("ICAL_METHOD_CREATE"), ICAL_METHOD_CREATE}, {HKEY("ICAL_METHOD_READ"), ICAL_METHOD_READ}, {HKEY("ICAL_METHOD_RESPONSE"), ICAL_METHOD_RESPONSE}, {HKEY("ICAL_METHOD_MOVE"), ICAL_METHOD_MOVE}, {HKEY("ICAL_METHOD_MODIFY"), ICAL_METHOD_MODIFY}, {HKEY("ICAL_METHOD_GENERATEUID"), ICAL_METHOD_GENERATEUID}, {HKEY("ICAL_METHOD_DELETE"), ICAL_METHOD_DELETE}, {HKEY("ICAL_METHOD_NONE"), ICAL_METHOD_NONE}, {"", 0, 0} }; Ical_icalproperty_querylevel icalproperty_querylevel_map[] = { {HKEY("ICAL_QUERYLEVEL_X"), ICAL_QUERYLEVEL_X}, {HKEY("ICAL_QUERYLEVEL_CALQL1"), ICAL_QUERYLEVEL_CALQL1}, {HKEY("ICAL_QUERYLEVEL_CALQLNONE"), ICAL_QUERYLEVEL_CALQLNONE}, {HKEY("ICAL_QUERYLEVEL_NONE"), ICAL_QUERYLEVEL_NONE}, {"", 0, 0} }; Ical_icalproperty_status icalproperty_status_map[] = { {HKEY("ICAL_STATUS_X"), ICAL_STATUS_X}, {HKEY("ICAL_STATUS_TENTATIVE"), ICAL_STATUS_TENTATIVE}, {HKEY("ICAL_STATUS_CONFIRMED"), ICAL_STATUS_CONFIRMED}, {HKEY("ICAL_STATUS_COMPLETED"), ICAL_STATUS_COMPLETED}, {HKEY("ICAL_STATUS_NEEDSACTION"), ICAL_STATUS_NEEDSACTION}, {HKEY("ICAL_STATUS_CANCELLED"), ICAL_STATUS_CANCELLED}, {HKEY("ICAL_STATUS_INPROCESS"), ICAL_STATUS_INPROCESS}, {HKEY("ICAL_STATUS_DRAFT"), ICAL_STATUS_DRAFT}, {HKEY("ICAL_STATUS_FINAL"), ICAL_STATUS_FINAL}, {HKEY("ICAL_STATUS_NONE"), ICAL_STATUS_NONE}, {"", 0, 0} }; Ical_icalproperty_transp icalproperty_transp_map[] = { {HKEY("ICAL_TRANSP_X"), ICAL_TRANSP_X}, {HKEY("ICAL_TRANSP_OPAQUE"), ICAL_TRANSP_OPAQUE}, {HKEY("ICAL_TRANSP_OPAQUENOCONFLICT"), ICAL_TRANSP_OPAQUENOCONFLICT}, {HKEY("ICAL_TRANSP_TRANSPARENT"), ICAL_TRANSP_TRANSPARENT}, {HKEY("ICAL_TRANSP_TRANSPARENTNOCONFLICT"), ICAL_TRANSP_TRANSPARENTNOCONFLICT}, {HKEY("ICAL_TRANSP_NONE"), ICAL_TRANSP_NONE}, {"", 0, 0} }; Ical_icalproperty_xlicclass icalproperty_xlicclass_map[] = { {HKEY("ICAL_XLICCLASS_X"), ICAL_XLICCLASS_X}, {HKEY("ICAL_XLICCLASS_PUBLISHNEW"), ICAL_XLICCLASS_PUBLISHNEW}, {HKEY("ICAL_XLICCLASS_PUBLISHUPDATE"), ICAL_XLICCLASS_PUBLISHUPDATE}, {HKEY("ICAL_XLICCLASS_PUBLISHFREEBUSY"), ICAL_XLICCLASS_PUBLISHFREEBUSY}, {HKEY("ICAL_XLICCLASS_REQUESTNEW"), ICAL_XLICCLASS_REQUESTNEW}, {HKEY("ICAL_XLICCLASS_REQUESTUPDATE"), ICAL_XLICCLASS_REQUESTUPDATE}, {HKEY("ICAL_XLICCLASS_REQUESTRESCHEDULE"), ICAL_XLICCLASS_REQUESTRESCHEDULE}, {HKEY("ICAL_XLICCLASS_REQUESTDELEGATE"), ICAL_XLICCLASS_REQUESTDELEGATE}, {HKEY("ICAL_XLICCLASS_REQUESTNEWORGANIZER"), ICAL_XLICCLASS_REQUESTNEWORGANIZER}, {HKEY("ICAL_XLICCLASS_REQUESTFORWARD"), ICAL_XLICCLASS_REQUESTFORWARD}, {HKEY("ICAL_XLICCLASS_REQUESTSTATUS"), ICAL_XLICCLASS_REQUESTSTATUS}, {HKEY("ICAL_XLICCLASS_REQUESTFREEBUSY"), ICAL_XLICCLASS_REQUESTFREEBUSY}, {HKEY("ICAL_XLICCLASS_REPLYACCEPT"), ICAL_XLICCLASS_REPLYACCEPT}, {HKEY("ICAL_XLICCLASS_REPLYDECLINE"), ICAL_XLICCLASS_REPLYDECLINE}, {HKEY("ICAL_XLICCLASS_REPLYDELEGATE"), ICAL_XLICCLASS_REPLYDELEGATE}, {HKEY("ICAL_XLICCLASS_REPLYCRASHERACCEPT"), ICAL_XLICCLASS_REPLYCRASHERACCEPT}, {HKEY("ICAL_XLICCLASS_REPLYCRASHERDECLINE"), ICAL_XLICCLASS_REPLYCRASHERDECLINE}, {HKEY("ICAL_XLICCLASS_ADDINSTANCE"), ICAL_XLICCLASS_ADDINSTANCE}, {HKEY("ICAL_XLICCLASS_CANCELEVENT"), ICAL_XLICCLASS_CANCELEVENT}, {HKEY("ICAL_XLICCLASS_CANCELINSTANCE"), ICAL_XLICCLASS_CANCELINSTANCE}, {HKEY("ICAL_XLICCLASS_CANCELALL"), ICAL_XLICCLASS_CANCELALL}, {HKEY("ICAL_XLICCLASS_REFRESH"), ICAL_XLICCLASS_REFRESH}, {HKEY("ICAL_XLICCLASS_COUNTER"), ICAL_XLICCLASS_COUNTER}, {HKEY("ICAL_XLICCLASS_DECLINECOUNTER"), ICAL_XLICCLASS_DECLINECOUNTER}, {HKEY("ICAL_XLICCLASS_MALFORMED"), ICAL_XLICCLASS_MALFORMED}, {HKEY("ICAL_XLICCLASS_OBSOLETE"), ICAL_XLICCLASS_OBSOLETE}, {HKEY("ICAL_XLICCLASS_MISSEQUENCED"), ICAL_XLICCLASS_MISSEQUENCED}, {HKEY("ICAL_XLICCLASS_UNKNOWN"), ICAL_XLICCLASS_UNKNOWN}, {HKEY("ICAL_XLICCLASS_NONE"), ICAL_XLICCLASS_NONE}, {"", 0, 0} }; Ical_icalparameter_kind icalparameter_kind_map[] = { {HKEY("ICAL_ANY_PARAMETER"), ICAL_ANY_PARAMETER}, {HKEY("ICAL_ACTIONPARAM_PARAMETER"), ICAL_ACTIONPARAM_PARAMETER}, {HKEY("ICAL_ALTREP_PARAMETER"), ICAL_ALTREP_PARAMETER}, {HKEY("ICAL_CHARSET_PARAMETER"), ICAL_CHARSET_PARAMETER}, {HKEY("ICAL_CN_PARAMETER"), ICAL_CN_PARAMETER}, {HKEY("ICAL_CUTYPE_PARAMETER"), ICAL_CUTYPE_PARAMETER}, {HKEY("ICAL_DELEGATEDFROM_PARAMETER"), ICAL_DELEGATEDFROM_PARAMETER}, {HKEY("ICAL_DELEGATEDTO_PARAMETER"), ICAL_DELEGATEDTO_PARAMETER}, {HKEY("ICAL_DIR_PARAMETER"), ICAL_DIR_PARAMETER}, {HKEY("ICAL_ENABLE_PARAMETER"), ICAL_ENABLE_PARAMETER}, {HKEY("ICAL_ENCODING_PARAMETER"), ICAL_ENCODING_PARAMETER}, {HKEY("ICAL_FBTYPE_PARAMETER"), ICAL_FBTYPE_PARAMETER}, {HKEY("ICAL_FMTTYPE_PARAMETER"), ICAL_FMTTYPE_PARAMETER}, {HKEY("ICAL_IANA_PARAMETER"), ICAL_IANA_PARAMETER}, {HKEY("ICAL_ID_PARAMETER"), ICAL_ID_PARAMETER}, {HKEY("ICAL_LANGUAGE_PARAMETER"), ICAL_LANGUAGE_PARAMETER}, {HKEY("ICAL_LATENCY_PARAMETER"), ICAL_LATENCY_PARAMETER}, {HKEY("ICAL_LOCAL_PARAMETER"), ICAL_LOCAL_PARAMETER}, {HKEY("ICAL_LOCALIZE_PARAMETER"), ICAL_LOCALIZE_PARAMETER}, {HKEY("ICAL_MEMBER_PARAMETER"), ICAL_MEMBER_PARAMETER}, {HKEY("ICAL_OPTIONS_PARAMETER"), ICAL_OPTIONS_PARAMETER}, {HKEY("ICAL_PARTSTAT_PARAMETER"), ICAL_PARTSTAT_PARAMETER}, {HKEY("ICAL_RANGE_PARAMETER"), ICAL_RANGE_PARAMETER}, {HKEY("ICAL_RELATED_PARAMETER"), ICAL_RELATED_PARAMETER}, {HKEY("ICAL_RELTYPE_PARAMETER"), ICAL_RELTYPE_PARAMETER}, {HKEY("ICAL_ROLE_PARAMETER"), ICAL_ROLE_PARAMETER}, {HKEY("ICAL_RSVP_PARAMETER"), ICAL_RSVP_PARAMETER}, {HKEY("ICAL_SENTBY_PARAMETER"), ICAL_SENTBY_PARAMETER}, {HKEY("ICAL_TZID_PARAMETER"), ICAL_TZID_PARAMETER}, {HKEY("ICAL_VALUE_PARAMETER"), ICAL_VALUE_PARAMETER}, {HKEY("ICAL_X_PARAMETER"), ICAL_X_PARAMETER}, {HKEY("ICAL_XLICCOMPARETYPE_PARAMETER"), ICAL_XLICCOMPARETYPE_PARAMETER}, {HKEY("ICAL_XLICERRORTYPE_PARAMETER"), ICAL_XLICERRORTYPE_PARAMETER}, {HKEY("ICAL_NO_PARAMETER"), ICAL_NO_PARAMETER}, {"", 0, 0} }; Ical_icalparameter_action icalparameter_action_map[] = { {HKEY("ICAL_ACTIONPARAM_X"), ICAL_ACTIONPARAM_X}, {HKEY("ICAL_ACTIONPARAM_ASK"), ICAL_ACTIONPARAM_ASK}, {HKEY("ICAL_ACTIONPARAM_ABORT"), ICAL_ACTIONPARAM_ABORT}, {HKEY("ICAL_ACTIONPARAM_NONE"), ICAL_ACTIONPARAM_NONE}, {"", 0, 0} }; Ical_icalparameter_cutype icalparameter_cutype_map[] = { {HKEY("ICAL_CUTYPE_X"), ICAL_CUTYPE_X}, {HKEY("ICAL_CUTYPE_INDIVIDUAL"), ICAL_CUTYPE_INDIVIDUAL}, {HKEY("ICAL_CUTYPE_GROUP"), ICAL_CUTYPE_GROUP}, {HKEY("ICAL_CUTYPE_RESOURCE"), ICAL_CUTYPE_RESOURCE}, {HKEY("ICAL_CUTYPE_ROOM"), ICAL_CUTYPE_ROOM}, {HKEY("ICAL_CUTYPE_UNKNOWN"), ICAL_CUTYPE_UNKNOWN}, {HKEY("ICAL_CUTYPE_NONE"), ICAL_CUTYPE_NONE}, {"", 0, 0} }; Ical_icalparameter_enable icalparameter_enable_map[] = { {HKEY("ICAL_ENABLE_X"), ICAL_ENABLE_X}, {HKEY("ICAL_ENABLE_TRUE"), ICAL_ENABLE_TRUE}, {HKEY("ICAL_ENABLE_FALSE"), ICAL_ENABLE_FALSE}, {HKEY("ICAL_ENABLE_NONE"), ICAL_ENABLE_NONE}, {"", 0, 0} }; Ical_icalparameter_encoding icalparameter_encoding_map[] = { {HKEY("ICAL_ENCODING_X"), ICAL_ENCODING_X}, {HKEY("ICAL_ENCODING_8BIT"), ICAL_ENCODING_8BIT}, {HKEY("ICAL_ENCODING_BASE64"), ICAL_ENCODING_BASE64}, {HKEY("ICAL_ENCODING_NONE"), ICAL_ENCODING_NONE}, {"", 0, 0} }; Ical_icalparameter_fbtype icalparameter_fbtype_map[] = { {HKEY("ICAL_FBTYPE_X"), ICAL_FBTYPE_X}, {HKEY("ICAL_FBTYPE_FREE"), ICAL_FBTYPE_FREE}, {HKEY("ICAL_FBTYPE_BUSY"), ICAL_FBTYPE_BUSY}, {HKEY("ICAL_FBTYPE_BUSYUNAVAILABLE"), ICAL_FBTYPE_BUSYUNAVAILABLE}, {HKEY("ICAL_FBTYPE_BUSYTENTATIVE"), ICAL_FBTYPE_BUSYTENTATIVE}, {HKEY("ICAL_FBTYPE_NONE"), ICAL_FBTYPE_NONE}, {"", 0, 0} }; Ical_icalparameter_local icalparameter_local_map[] = { {HKEY("ICAL_LOCAL_X"), ICAL_LOCAL_X}, {HKEY("ICAL_LOCAL_TRUE"), ICAL_LOCAL_TRUE}, {HKEY("ICAL_LOCAL_FALSE"), ICAL_LOCAL_FALSE}, {HKEY("ICAL_LOCAL_NONE"), ICAL_LOCAL_NONE}, {"", 0, 0} }; Ical_icalparameter_partstat icalparameter_partstat_map[] = { {HKEY("ICAL_PARTSTAT_X"), ICAL_PARTSTAT_X}, {HKEY("ICAL_PARTSTAT_NEEDSACTION"), ICAL_PARTSTAT_NEEDSACTION}, {HKEY("ICAL_PARTSTAT_ACCEPTED"), ICAL_PARTSTAT_ACCEPTED}, {HKEY("ICAL_PARTSTAT_DECLINED"), ICAL_PARTSTAT_DECLINED}, {HKEY("ICAL_PARTSTAT_TENTATIVE"), ICAL_PARTSTAT_TENTATIVE}, {HKEY("ICAL_PARTSTAT_DELEGATED"), ICAL_PARTSTAT_DELEGATED}, {HKEY("ICAL_PARTSTAT_COMPLETED"), ICAL_PARTSTAT_COMPLETED}, {HKEY("ICAL_PARTSTAT_INPROCESS"), ICAL_PARTSTAT_INPROCESS}, {HKEY("ICAL_PARTSTAT_NONE"), ICAL_PARTSTAT_NONE}, {"", 0, 0} }; Ical_icalparameter_range icalparameter_range_map[] = { {HKEY("ICAL_RANGE_X"), ICAL_RANGE_X}, {HKEY("ICAL_RANGE_THISANDPRIOR"), ICAL_RANGE_THISANDPRIOR}, {HKEY("ICAL_RANGE_THISANDFUTURE"), ICAL_RANGE_THISANDFUTURE}, {HKEY("ICAL_RANGE_NONE"), ICAL_RANGE_NONE}, {"", 0, 0} }; Ical_icalparameter_related icalparameter_related_map[] = { {HKEY("ICAL_RELATED_X"), ICAL_RELATED_X}, {HKEY("ICAL_RELATED_START"), ICAL_RELATED_START}, {HKEY("ICAL_RELATED_END"), ICAL_RELATED_END}, {HKEY("ICAL_RELATED_NONE"), ICAL_RELATED_NONE}, {"", 0, 0} }; Ical_icalparameter_reltype icalparameter_reltype_map[] = { {HKEY("ICAL_RELTYPE_X"), ICAL_RELTYPE_X}, {HKEY("ICAL_RELTYPE_PARENT"), ICAL_RELTYPE_PARENT}, {HKEY("ICAL_RELTYPE_CHILD"), ICAL_RELTYPE_CHILD}, {HKEY("ICAL_RELTYPE_SIBLING"), ICAL_RELTYPE_SIBLING}, {HKEY("ICAL_RELTYPE_NONE"), ICAL_RELTYPE_NONE}, {"", 0, 0} }; Ical_icalparameter_role icalparameter_role_map[] = { {HKEY("ICAL_ROLE_X"), ICAL_ROLE_X}, {HKEY("ICAL_ROLE_CHAIR"), ICAL_ROLE_CHAIR}, {HKEY("ICAL_ROLE_REQPARTICIPANT"), ICAL_ROLE_REQPARTICIPANT}, {HKEY("ICAL_ROLE_OPTPARTICIPANT"), ICAL_ROLE_OPTPARTICIPANT}, {HKEY("ICAL_ROLE_NONPARTICIPANT"), ICAL_ROLE_NONPARTICIPANT}, {HKEY("ICAL_ROLE_NONE"), ICAL_ROLE_NONE}, {"", 0, 0} }; Ical_icalparameter_rsvp icalparameter_rsvp_map[] = { {HKEY("ICAL_RSVP_X"), ICAL_RSVP_X}, {HKEY("ICAL_RSVP_TRUE"), ICAL_RSVP_TRUE}, {HKEY("ICAL_RSVP_FALSE"), ICAL_RSVP_FALSE}, {HKEY("ICAL_RSVP_NONE"), ICAL_RSVP_NONE}, {"", 0, 0} }; Ical_icalparameter_value icalparameter_value_map[] = { {HKEY("ICAL_VALUE_X"), ICAL_VALUE_X}, {HKEY("ICAL_VALUE_BINARY"), ICAL_VALUE_BINARY}, {HKEY("ICAL_VALUE_BOOLEAN"), ICAL_VALUE_BOOLEAN}, {HKEY("ICAL_VALUE_DATE"), ICAL_VALUE_DATE}, {HKEY("ICAL_VALUE_DURATION"), ICAL_VALUE_DURATION}, {HKEY("ICAL_VALUE_FLOAT"), ICAL_VALUE_FLOAT}, {HKEY("ICAL_VALUE_INTEGER"), ICAL_VALUE_INTEGER}, {HKEY("ICAL_VALUE_PERIOD"), ICAL_VALUE_PERIOD}, {HKEY("ICAL_VALUE_RECUR"), ICAL_VALUE_RECUR}, {HKEY("ICAL_VALUE_TEXT"), ICAL_VALUE_TEXT}, {HKEY("ICAL_VALUE_URI"), ICAL_VALUE_URI}, {HKEY("ICAL_VALUE_ERROR"), ICAL_VALUE_ERROR}, {HKEY("ICAL_VALUE_DATETIME"), ICAL_VALUE_DATETIME}, {HKEY("ICAL_VALUE_UTCOFFSET"), ICAL_VALUE_UTCOFFSET}, {HKEY("ICAL_VALUE_CALADDRESS"), ICAL_VALUE_CALADDRESS}, {HKEY("ICAL_VALUE_NONE"), ICAL_VALUE_NONE}, {"", 0, 0} }; Ical_icalparameter_xliccomparetype icalparameter_xliccomparetype_map[] = { {HKEY("ICAL_XLICCOMPARETYPE_X"), ICAL_XLICCOMPARETYPE_X}, {HKEY("ICAL_XLICCOMPARETYPE_EQUAL"), ICAL_XLICCOMPARETYPE_EQUAL}, {HKEY("ICAL_XLICCOMPARETYPE_NOTEQUAL"), ICAL_XLICCOMPARETYPE_NOTEQUAL}, {HKEY("ICAL_XLICCOMPARETYPE_LESS"), ICAL_XLICCOMPARETYPE_LESS}, {HKEY("ICAL_XLICCOMPARETYPE_GREATER"), ICAL_XLICCOMPARETYPE_GREATER}, {HKEY("ICAL_XLICCOMPARETYPE_LESSEQUAL"), ICAL_XLICCOMPARETYPE_LESSEQUAL}, {HKEY("ICAL_XLICCOMPARETYPE_GREATEREQUAL"), ICAL_XLICCOMPARETYPE_GREATEREQUAL}, {HKEY("ICAL_XLICCOMPARETYPE_REGEX"), ICAL_XLICCOMPARETYPE_REGEX}, {HKEY("ICAL_XLICCOMPARETYPE_ISNULL"), ICAL_XLICCOMPARETYPE_ISNULL}, {HKEY("ICAL_XLICCOMPARETYPE_ISNOTNULL"), ICAL_XLICCOMPARETYPE_ISNOTNULL}, {HKEY("ICAL_XLICCOMPARETYPE_NONE"), ICAL_XLICCOMPARETYPE_NONE}, {"", 0, 0} }; Ical_icalparameter_xlicerrortype icalparameter_xlicerrortype_map[] = { {HKEY("ICAL_XLICERRORTYPE_X"), ICAL_XLICERRORTYPE_X}, {HKEY("ICAL_XLICERRORTYPE_COMPONENTPARSEERROR"), ICAL_XLICERRORTYPE_COMPONENTPARSEERROR}, {HKEY("ICAL_XLICERRORTYPE_PROPERTYPARSEERROR"), ICAL_XLICERRORTYPE_PROPERTYPARSEERROR}, {HKEY("ICAL_XLICERRORTYPE_PARAMETERNAMEPARSEERROR"), ICAL_XLICERRORTYPE_PARAMETERNAMEPARSEERROR}, {HKEY("ICAL_XLICERRORTYPE_PARAMETERVALUEPARSEERROR"), ICAL_XLICERRORTYPE_PARAMETERVALUEPARSEERROR}, {HKEY("ICAL_XLICERRORTYPE_VALUEPARSEERROR"), ICAL_XLICERRORTYPE_VALUEPARSEERROR}, {HKEY("ICAL_XLICERRORTYPE_INVALIDITIP"), ICAL_XLICERRORTYPE_INVALIDITIP}, {HKEY("ICAL_XLICERRORTYPE_UNKNOWNVCALPROPERROR"), ICAL_XLICERRORTYPE_UNKNOWNVCALPROPERROR}, {HKEY("ICAL_XLICERRORTYPE_MIMEPARSEERROR"), ICAL_XLICERRORTYPE_MIMEPARSEERROR}, {HKEY("ICAL_XLICERRORTYPE_VCALPROPPARSEERROR"), ICAL_XLICERRORTYPE_VCALPROPPARSEERROR}, {HKEY("ICAL_XLICERRORTYPE_NONE"), ICAL_XLICERRORTYPE_NONE}, {"", 0, 0} }; Ical_icalparser_state icalparser_state_map[] = { {HKEY("ICALPARSER_ERROR"), ICALPARSER_ERROR}, {HKEY("ICALPARSER_SUCCESS"), ICALPARSER_SUCCESS}, {HKEY("ICALPARSER_BEGIN_COMP"), ICALPARSER_BEGIN_COMP}, {HKEY("ICALPARSER_END_COMP"), ICALPARSER_END_COMP}, {HKEY("ICALPARSER_IN_PROGRESS"), ICALPARSER_IN_PROGRESS}, {"", 0, 0} }; Ical_icalerrorenum icalerrorenum_map[] = { {HKEY("ICAL_NO_ERROR"), ICAL_NO_ERROR}, {HKEY("ICAL_BADARG_ERROR"), ICAL_BADARG_ERROR}, {HKEY("ICAL_NEWFAILED_ERROR"), ICAL_NEWFAILED_ERROR}, {HKEY("ICAL_ALLOCATION_ERROR"), ICAL_ALLOCATION_ERROR}, {HKEY("ICAL_MALFORMEDDATA_ERROR"), ICAL_MALFORMEDDATA_ERROR}, {HKEY("ICAL_PARSE_ERROR"), ICAL_PARSE_ERROR}, {HKEY("ICAL_INTERNAL_ERROR"), ICAL_INTERNAL_ERROR}, {HKEY("ICAL_FILE_ERROR"), ICAL_FILE_ERROR}, {HKEY("ICAL_USAGE_ERROR"), ICAL_USAGE_ERROR}, {HKEY("ICAL_UNIMPLEMENTED_ERROR"), ICAL_UNIMPLEMENTED_ERROR}, {HKEY("ICAL_UNKNOWN_ERROR"), ICAL_UNKNOWN_ERROR}, {"", 0, 0} }; Ical_icalerrorstate icalerrorstate_map[] = { {HKEY("ICAL_ERROR_FATAL"), ICAL_ERROR_FATAL}, {HKEY("ICAL_ERROR_NONFATAL"), ICAL_ERROR_NONFATAL}, {HKEY("ICAL_ERROR_DEFAULT"), ICAL_ERROR_DEFAULT}, {HKEY("ICAL_ERROR_UNKNOWN"), ICAL_ERROR_UNKNOWN}, {"", 0, 0} }; Ical_icalrestriction_kind icalrestriction_kind_map[] = { {HKEY("ICAL_RESTRICTION_NONE"), ICAL_RESTRICTION_NONE}, {HKEY("ICAL_RESTRICTION_ZERO"), ICAL_RESTRICTION_ZERO}, {HKEY("ICAL_RESTRICTION_ONE"), ICAL_RESTRICTION_ONE}, {HKEY("ICAL_RESTRICTION_ZEROPLUS"), ICAL_RESTRICTION_ZEROPLUS}, {HKEY("ICAL_RESTRICTION_ONEPLUS"), ICAL_RESTRICTION_ONEPLUS}, {HKEY("ICAL_RESTRICTION_ZEROORONE"), ICAL_RESTRICTION_ZEROORONE}, {HKEY("ICAL_RESTRICTION_ONEEXCLUSIVE"), ICAL_RESTRICTION_ONEEXCLUSIVE}, {HKEY("ICAL_RESTRICTION_ONEMUTUAL"), ICAL_RESTRICTION_ONEMUTUAL}, {HKEY("ICAL_RESTRICTION_UNKNOWN"), ICAL_RESTRICTION_UNKNOWN}, {"", 0, 0} }; void InitModule_ICAL_MAPS (void) { int i; for (i=0; icalproperty_kind_map[i].NameLen > 0; i++) RegisterTokenParamDefine ( icalproperty_kind_map[i].Name, icalproperty_kind_map[i].NameLen, icalproperty_kind_map[i].map); for (i=0; icalcomponent_kind_map[i].NameLen > 0; i++) RegisterTokenParamDefine ( icalcomponent_kind_map[i].Name, icalcomponent_kind_map[i].NameLen, icalcomponent_kind_map[i].map); for (i=0; icalrequeststatus_map[i].NameLen > 0; i++) RegisterTokenParamDefine ( icalrequeststatus_map[i].Name, icalrequeststatus_map[i].NameLen, icalrequeststatus_map[i].map); for (i=0; ical_unknown_token_handling_map[i].NameLen > 0; i++) RegisterTokenParamDefine ( ical_unknown_token_handling_map[i].Name, ical_unknown_token_handling_map[i].NameLen, ical_unknown_token_handling_map[i].map); for (i=0; icalrecurrencetype_frequency_map[i].NameLen > 0; i++) RegisterTokenParamDefine ( icalrecurrencetype_frequency_map[i].Name, icalrecurrencetype_frequency_map[i].NameLen, icalrecurrencetype_frequency_map[i].map); for (i=0; icalrecurrencetype_weekday_map[i].NameLen > 0; i++) RegisterTokenParamDefine ( icalrecurrencetype_weekday_map[i].Name, icalrecurrencetype_weekday_map[i].NameLen, icalrecurrencetype_weekday_map[i].map); for (i=0; icalvalue_kind_map[i].NameLen > 0; i++) RegisterTokenParamDefine ( icalvalue_kind_map[i].Name, icalvalue_kind_map[i].NameLen, icalvalue_kind_map[i].map); for (i=0; icalproperty_action_map[i].NameLen > 0; i++) RegisterTokenParamDefine ( icalproperty_action_map[i].Name, icalproperty_action_map[i].NameLen, icalproperty_action_map[i].map); for (i=0; icalproperty_carlevel_map[i].NameLen > 0; i++) RegisterTokenParamDefine ( icalproperty_carlevel_map[i].Name, icalproperty_carlevel_map[i].NameLen, icalproperty_carlevel_map[i].map); for (i=0; icalproperty_class_map[i].NameLen > 0; i++) RegisterTokenParamDefine ( icalproperty_class_map[i].Name, icalproperty_class_map[i].NameLen, icalproperty_class_map[i].map); for (i=0; icalproperty_cmd_map[i].NameLen > 0; i++) RegisterTokenParamDefine ( icalproperty_cmd_map[i].Name, icalproperty_cmd_map[i].NameLen, icalproperty_cmd_map[i].map); for (i=0; icalproperty_method_map[i].NameLen > 0; i++) RegisterTokenParamDefine ( icalproperty_method_map[i].Name, icalproperty_method_map[i].NameLen, icalproperty_method_map[i].map); for (i=0; icalproperty_querylevel_map[i].NameLen > 0; i++) RegisterTokenParamDefine ( icalproperty_querylevel_map[i].Name, icalproperty_querylevel_map[i].NameLen, icalproperty_querylevel_map[i].map); for (i=0; icalproperty_status_map[i].NameLen > 0; i++) RegisterTokenParamDefine ( icalproperty_status_map[i].Name, icalproperty_status_map[i].NameLen, icalproperty_status_map[i].map); for (i=0; icalproperty_transp_map[i].NameLen > 0; i++) RegisterTokenParamDefine ( icalproperty_transp_map[i].Name, icalproperty_transp_map[i].NameLen, icalproperty_transp_map[i].map); for (i=0; icalproperty_xlicclass_map[i].NameLen > 0; i++) RegisterTokenParamDefine ( icalproperty_xlicclass_map[i].Name, icalproperty_xlicclass_map[i].NameLen, icalproperty_xlicclass_map[i].map); for (i=0; icalparameter_kind_map[i].NameLen > 0; i++) RegisterTokenParamDefine ( icalparameter_kind_map[i].Name, icalparameter_kind_map[i].NameLen, icalparameter_kind_map[i].map); for (i=0; icalparameter_action_map[i].NameLen > 0; i++) RegisterTokenParamDefine ( icalparameter_action_map[i].Name, icalparameter_action_map[i].NameLen, icalparameter_action_map[i].map); for (i=0; icalparameter_cutype_map[i].NameLen > 0; i++) RegisterTokenParamDefine ( icalparameter_cutype_map[i].Name, icalparameter_cutype_map[i].NameLen, icalparameter_cutype_map[i].map); for (i=0; icalparameter_enable_map[i].NameLen > 0; i++) RegisterTokenParamDefine ( icalparameter_enable_map[i].Name, icalparameter_enable_map[i].NameLen, icalparameter_enable_map[i].map); for (i=0; icalparameter_encoding_map[i].NameLen > 0; i++) RegisterTokenParamDefine ( icalparameter_encoding_map[i].Name, icalparameter_encoding_map[i].NameLen, icalparameter_encoding_map[i].map); for (i=0; icalparameter_fbtype_map[i].NameLen > 0; i++) RegisterTokenParamDefine ( icalparameter_fbtype_map[i].Name, icalparameter_fbtype_map[i].NameLen, icalparameter_fbtype_map[i].map); for (i=0; icalparameter_local_map[i].NameLen > 0; i++) RegisterTokenParamDefine ( icalparameter_local_map[i].Name, icalparameter_local_map[i].NameLen, icalparameter_local_map[i].map); for (i=0; icalparameter_partstat_map[i].NameLen > 0; i++) RegisterTokenParamDefine ( icalparameter_partstat_map[i].Name, icalparameter_partstat_map[i].NameLen, icalparameter_partstat_map[i].map); for (i=0; icalparameter_range_map[i].NameLen > 0; i++) RegisterTokenParamDefine ( icalparameter_range_map[i].Name, icalparameter_range_map[i].NameLen, icalparameter_range_map[i].map); for (i=0; icalparameter_related_map[i].NameLen > 0; i++) RegisterTokenParamDefine ( icalparameter_related_map[i].Name, icalparameter_related_map[i].NameLen, icalparameter_related_map[i].map); for (i=0; icalparameter_reltype_map[i].NameLen > 0; i++) RegisterTokenParamDefine ( icalparameter_reltype_map[i].Name, icalparameter_reltype_map[i].NameLen, icalparameter_reltype_map[i].map); for (i=0; icalparameter_role_map[i].NameLen > 0; i++) RegisterTokenParamDefine ( icalparameter_role_map[i].Name, icalparameter_role_map[i].NameLen, icalparameter_role_map[i].map); for (i=0; icalparameter_rsvp_map[i].NameLen > 0; i++) RegisterTokenParamDefine ( icalparameter_rsvp_map[i].Name, icalparameter_rsvp_map[i].NameLen, icalparameter_rsvp_map[i].map); for (i=0; icalparameter_value_map[i].NameLen > 0; i++) RegisterTokenParamDefine ( icalparameter_value_map[i].Name, icalparameter_value_map[i].NameLen, icalparameter_value_map[i].map); for (i=0; icalparameter_xliccomparetype_map[i].NameLen > 0; i++) RegisterTokenParamDefine ( icalparameter_xliccomparetype_map[i].Name, icalparameter_xliccomparetype_map[i].NameLen, icalparameter_xliccomparetype_map[i].map); for (i=0; icalparameter_xlicerrortype_map[i].NameLen > 0; i++) RegisterTokenParamDefine ( icalparameter_xlicerrortype_map[i].Name, icalparameter_xlicerrortype_map[i].NameLen, icalparameter_xlicerrortype_map[i].map); for (i=0; icalparser_state_map[i].NameLen > 0; i++) RegisterTokenParamDefine ( icalparser_state_map[i].Name, icalparser_state_map[i].NameLen, icalparser_state_map[i].map); for (i=0; icalerrorenum_map[i].NameLen > 0; i++) RegisterTokenParamDefine ( icalerrorenum_map[i].Name, icalerrorenum_map[i].NameLen, icalerrorenum_map[i].map); for (i=0; icalerrorstate_map[i].NameLen > 0; i++) RegisterTokenParamDefine ( icalerrorstate_map[i].Name, icalerrorstate_map[i].NameLen, icalerrorstate_map[i].map); for (i=0; icalrestriction_kind_map[i].NameLen > 0; i++) RegisterTokenParamDefine ( icalrestriction_kind_map[i].Name, icalrestriction_kind_map[i].NameLen, icalrestriction_kind_map[i].map); } webcit-8.24-dfsg.orig/cookie_conversion.c0000644000175000017500000000457412271477123020274 0ustar michaelmichael/* * Copyright (c) 1996-2012 by the citadel.org team * * This program is open source software. You can redistribute it and/or * modify it under the terms of the GNU General Public License, version 3. * * This program 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. */ #include "webcit.h" /* * String to unset the cookie. * Any date "in the past" will work, so I chose my birthday, right down to * the exact minute. :) */ static char *unset = "; expires=28-May-1971 18:10:00 GMT"; typedef unsigned char byte; /* Byte type used by cookie_to_stuff() */ extern const char *get_selected_language(void); /* * Pack all session info into one easy-to-digest cookie. Healthy and delicious! */ void stuff_to_cookie(int unset_cookies) { wcsession *WCC = WC; char buf[SIZ]; if (unset_cookies) { hprintf("Set-cookie: webcit=%s; path=/\r\n", unset); } else { StrBufAppendPrintf(WCC->HBuf, "Set-cookie: webcit="); snprintf(buf, sizeof(buf), "%d", WCC->wc_session); StrBufHexescAppend(WCC->HBuf, NULL, buf); StrBufHexescAppend(WCC->HBuf, NULL, "|"); StrBufHexescAppend(WCC->HBuf, WCC->wc_username, NULL); StrBufHexescAppend(WCC->HBuf, NULL, "|"); StrBufHexescAppend(WCC->HBuf, WCC->wc_password, NULL); StrBufHexescAppend(WCC->HBuf, NULL, "|"); StrBufHexescAppend(WCC->HBuf, WCC->CurRoom.name, NULL); StrBufHexescAppend(WCC->HBuf, NULL, "|"); StrBufHexescAppend(WCC->HBuf, NULL, get_selected_language()); StrBufHexescAppend(WCC->HBuf, NULL, "|"); if (server_cookie != NULL) { StrBufAppendPrintf(WCC->HBuf, ";path=/ \r\n%s\r\n", server_cookie); } else { StrBufAppendBufPlain(WCC->HBuf, HKEY("; path=/\r\n"), 0); } } } /* * Extract all that fun stuff out of the cookie. */ void cookie_to_stuff(StrBuf *cookie, int *session, StrBuf *user, StrBuf *pass, StrBuf *room, StrBuf *language) { if (session != NULL) { *session = StrBufExtract_int(cookie, 0, '|'); } if (user != NULL) { StrBufExtract_token(user, cookie, 1, '|'); } if (pass != NULL) { StrBufExtract_token(pass, cookie, 2, '|'); } if (room != NULL) { StrBufExtract_token(room, cookie, 3, '|'); } if (language != NULL) { StrBufExtract_token(language, cookie, 4, '|'); } } webcit-8.24-dfsg.orig/calendar.c0000644000175000017500000006512112271477123016322 0ustar michaelmichael/* * Functions which handle calendar objects and their processing/display. * * Copyright (c) 1996-2012 by the citadel.org team * * This program is open source software. You can redistribute it and/or * modify it under the terms of the GNU General Public License, version 3. * * This program 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. */ #include "webcit.h" #include "webserver.h" #include "calendar.h" /* * Process a calendar object. At this point it's already been deserialized by cal_process_attachment() * * cal: the calendar object * recursion_level: Number of times we've recursed into this function * msgnum: Message number on the Citadel server * cal_partnum: MIME part number within that message containing the calendar object */ void cal_process_object(StrBuf *Target, icalcomponent *cal, int recursion_level, long msgnum, const char *cal_partnum) { icalcomponent *c; icalproperty *method = NULL; icalproperty_method the_method = ICAL_METHOD_NONE; icalproperty *p; struct icaltimetype t; time_t tt; char buf[256]; char conflict_name[256]; char conflict_message[256]; int is_update = 0; char divname[32]; static int divcount = 0; const char *ch; sprintf(divname, "rsvp%04x", ++divcount); /* Convert timezones to something easy to display. * It's safe to do this in memory because we're only changing it on the * display side -- when we tell the server to do something with the object, * the server will be working with its original copy in the database. */ if ((cal) && (recursion_level == 0)) { ical_dezonify(cal); } /* Leading HTML for the display of this object */ if (recursion_level == 0) { StrBufAppendPrintf(Target, "
    \n"); } /* Look for a method */ method = icalcomponent_get_first_property(cal, ICAL_METHOD_PROPERTY); /* See what we need to do with this */ if (method != NULL) { char *title; the_method = icalproperty_get_method(method); StrBufAppendPrintf(Target, "
    ", divname); StrBufAppendPrintf(Target, ""); StrBufAppendPrintf(Target, ""); switch(the_method) { case ICAL_METHOD_REQUEST: title = _("Meeting invitation"); break; case ICAL_METHOD_REPLY: title = _("Attendee's reply to your invitation"); break; case ICAL_METHOD_PUBLISH: title = _("Published event"); break; default: title = _("This is an unknown type of calendar item."); break; } StrBufAppendPrintf(Target, ""); StrBufAppendPrintf(Target, "  %s",title); StrBufAppendPrintf(Target, "
    "); } StrBufAppendPrintf(Target, "
    "); p = icalcomponent_get_first_property(cal, ICAL_SUMMARY_PROPERTY); if (p != NULL) { StrBufAppendPrintf(Target, "
    "); StrBufAppendPrintf(Target, _("Summary:")); StrBufAppendPrintf(Target, "
    "); StrEscAppend(Target, NULL, (char *)icalproperty_get_comment(p), 0, 0); StrBufAppendPrintf(Target, "
    \n"); } p = icalcomponent_get_first_property(cal, ICAL_LOCATION_PROPERTY); if (p != NULL) { StrBufAppendPrintf(Target, "
    "); StrBufAppendPrintf(Target, _("Location:")); StrBufAppendPrintf(Target, "
    "); StrEscAppend(Target, NULL, (char *)icalproperty_get_comment(p), 0, 0); StrBufAppendPrintf(Target, "
    \n"); } /* * Only show start/end times if we're actually looking at the VEVENT * component. Otherwise it shows bogus dates for things like timezone. */ if (icalcomponent_isa(cal) == ICAL_VEVENT_COMPONENT) { p = icalcomponent_get_first_property(cal, ICAL_DTSTART_PROPERTY); if (p != NULL) { t = icalproperty_get_dtstart(p); if (t.is_date) { struct tm d_tm; char d_str[32]; memset(&d_tm, 0, sizeof d_tm); d_tm.tm_year = t.year - 1900; d_tm.tm_mon = t.month - 1; d_tm.tm_mday = t.day; wc_strftime(d_str, sizeof d_str, "%x", &d_tm); StrBufAppendPrintf(Target, "
    "); StrBufAppendPrintf(Target, _("Date:")); StrBufAppendPrintf(Target, "
    %s
    ", d_str); } else { tt = icaltime_as_timet(t); webcit_fmt_date(buf, 256, tt, DATEFMT_FULL); StrBufAppendPrintf(Target, "
    "); StrBufAppendPrintf(Target, _("Starting date/time:")); StrBufAppendPrintf(Target, "
    %s
    ", buf); } } p = icalcomponent_get_first_property(cal, ICAL_DTEND_PROPERTY); if (p != NULL) { t = icalproperty_get_dtend(p); tt = icaltime_as_timet(t); webcit_fmt_date(buf, 256, tt, DATEFMT_FULL); StrBufAppendPrintf(Target, "
    "); StrBufAppendPrintf(Target, _("Ending date/time:")); StrBufAppendPrintf(Target, "
    %s
    ", buf); } } p = icalcomponent_get_first_property(cal, ICAL_DESCRIPTION_PROPERTY); if (p != NULL) { StrBufAppendPrintf(Target, "
    "); StrBufAppendPrintf(Target, _("Description:")); StrBufAppendPrintf(Target, "
    "); StrEscAppend(Target, NULL, (char *)icalproperty_get_comment(p), 0, 0); StrBufAppendPrintf(Target, "
    \n"); } if (icalcomponent_get_first_property(cal, ICAL_RRULE_PROPERTY)) { /* Unusual string syntax used here in order to re-use existing translations */ StrBufAppendPrintf(Target, "
    %s:
    %s.
    \n", _("Recurrence"), _("This is a recurring event") ); } /* If the component has attendees, iterate through them. */ for (p = icalcomponent_get_first_property(cal, ICAL_ATTENDEE_PROPERTY); (p != NULL); p = icalcomponent_get_next_property(cal, ICAL_ATTENDEE_PROPERTY)) { StrBufAppendPrintf(Target, "
    "); StrBufAppendPrintf(Target, _("Attendee:")); StrBufAppendPrintf(Target, "
    "); ch = icalproperty_get_attendee(p); if ((ch != NULL) && !strncasecmp(ch, "MAILTO:", 7)) { /** screen name or email address */ safestrncpy(buf, ch + 7, sizeof(buf)); striplt(buf); StrEscAppend(Target, NULL, buf, 0, 0); StrBufAppendPrintf(Target, " "); /** participant status */ partstat_as_string(buf, p); StrEscAppend(Target, NULL, buf, 0, 0); } StrBufAppendPrintf(Target, "
    \n"); } /* If the component has subcomponents, recurse through them. */ for (c = icalcomponent_get_first_component(cal, ICAL_ANY_COMPONENT); (c != 0); c = icalcomponent_get_next_component(cal, ICAL_ANY_COMPONENT)) { /* Recursively process subcomponent */ cal_process_object(Target, c, recursion_level+1, msgnum, cal_partnum); } /* If this is a REQUEST, display conflicts and buttons */ if (the_method == ICAL_METHOD_REQUEST) { /* Check for conflicts */ syslog(LOG_DEBUG, "Checking server calendar for conflicts...\n"); serv_printf("ICAL conflicts|%ld|%s|", msgnum, cal_partnum); serv_getln(buf, sizeof buf); if (buf[0] == '1') { while (serv_getln(buf, sizeof buf), strcmp(buf, "000")) { extract_token(conflict_name, buf, 3, '|', sizeof conflict_name); is_update = extract_int(buf, 4); if (is_update) { snprintf(conflict_message, sizeof conflict_message, _("This is an update of '%s' which is already in your calendar."), conflict_name); } else { snprintf(conflict_message, sizeof conflict_message, _("This event would conflict with '%s' which is already in your calendar."), conflict_name); } StrBufAppendPrintf(Target, "
    %s", (is_update ? _("Update:") : _("CONFLICT:") ) ); StrBufAppendPrintf(Target, "
    "); StrEscAppend(Target, NULL, conflict_message, 0, 0); StrBufAppendPrintf(Target, "
    \n"); } } syslog(LOG_DEBUG, "...done.\n"); StrBufAppendPrintf(Target, "
    "); /* Display the Accept/Decline buttons */ StrBufAppendPrintf(Target, "

    " "%s " "    " "%s" "   " "%s" "   " "%s" "

    \n", divname, _("How would you like to respond to this invitation?"), divname, divname, msgnum, cal_partnum, _("Accept"), divname, divname, msgnum, cal_partnum, _("Tentative"), divname, divname, msgnum, cal_partnum, _("Decline") ); } /* If this is a REPLY, display update button */ if (the_method == ICAL_METHOD_REPLY) { /* Display the update buttons */ StrBufAppendPrintf(Target, "

    " "%s " "    " "%s" "   " "%s" "

    \n", divname, _("Click Update to accept this reply and update your calendar."), divname, divname, msgnum, cal_partnum, _("Update"), divname, divname, msgnum, cal_partnum, _("Ignore") ); } /* Trailing HTML for the display of this object */ if (recursion_level == 0) { StrBufAppendPrintf(Target, "

     

    \n"); } } /* * Deserialize a calendar object in a message so it can be displayed. */ void cal_process_attachment(wc_mime_attachment *Mime) { icalcomponent *cal; cal = icalcomponent_new_from_string(ChrPtr(Mime->Data)); FlushStrBuf(Mime->Data); if (cal == NULL) { StrBufAppendPrintf(Mime->Data, _("There was an error parsing this calendar item.")); StrBufAppendPrintf(Mime->Data, "
    \n"); return; } cal_process_object(Mime->Data, cal, 0, Mime->msgnum, ChrPtr(Mime->PartNum)); /* Free the memory we obtained from libical's constructor */ icalcomponent_free(cal); } /* * Respond to a meeting request - accept/decline meeting */ void respond_to_request(void) { char buf[1024]; begin_ajax_response(); serv_printf("ICAL respond|%s|%s|%s|", bstr("msgnum"), bstr("cal_partnum"), bstr("sc") ); serv_getln(buf, sizeof buf); if (buf[0] == '2') { wc_printf(""); if (!strcasecmp(bstr("sc"), "accept")) { wc_printf(_("You have accepted this meeting invitation. " "It has been entered into your calendar.") ); } else if (!strcasecmp(bstr("sc"), "tentative")) { wc_printf(_("You have tentatively accepted this meeting invitation. " "It has been 'pencilled in' to your calendar.") ); } else if (!strcasecmp(bstr("sc"), "decline")) { wc_printf(_("You have declined this meeting invitation. " "It has not been entered into your calendar.") ); } wc_printf(" "); wc_printf(_("A reply has been sent to the meeting organizer.")); wc_printf(""); } else { wc_printf(""); wc_printf("%s\n", &buf[4]); wc_printf(""); } end_ajax_response(); } /* * Handle an incoming RSVP */ void handle_rsvp(void) { char buf[1024]; begin_ajax_response(); serv_printf("ICAL handle_rsvp|%s|%s|%s|", bstr("msgnum"), bstr("cal_partnum"), bstr("sc") ); serv_getln(buf, sizeof buf); if (buf[0] == '2') { wc_printf(""); if (!strcasecmp(bstr("sc"), "update")) { /// Translators: RSVP aka Répondez s'il-vous-plaît Is the term /// that the recipient of an ical-invitation should please /// answer this request. wc_printf(_("Your calendar has been updated to reflect this RSVP.")); } else if (!strcasecmp(bstr("sc"), "ignore")) { wc_printf(_("You have chosen to ignore this RSVP. " "Your calendar has not been updated.") ); } wc_printf(""); } else { wc_printf(" %s\n", &buf[4]); wc_printf(""); } end_ajax_response(); } /* * free memory allocated using libical */ void delete_cal(void *vCal) { disp_cal *Cal = (disp_cal*) vCal; icalcomponent_free(Cal->cal); free(Cal->from); free(Cal); } /* * This is the meat-and-bones of the first part of our two-phase calendar display. * As we encounter calendar items in messages being read from the server, we break out * any iCalendar objects and store them in a hash table. Later on, the second phase will * use this hash table to render the calendar for display. */ void display_individual_cal(icalcomponent *event, long msgnum, char *from, int unread, calview *calv) { icalproperty *ps = NULL; struct icaltimetype dtstart, dtend; struct icaldurationtype dur; wcsession *WCC = WC; disp_cal *Cal; size_t len; time_t final_recurrence = 0; icalcomponent *cptr = NULL; /* recur variables */ icalproperty *rrule = NULL; struct icalrecurrencetype recur; icalrecur_iterator *ritr = NULL; struct icaltimetype next; int num_recur = 0; int stop_rr = 0; /* first and foremost, check for bogosity. bail if we see no DTSTART property */ if (icalcomponent_get_first_property(icalcomponent_get_first_component( event, ICAL_VEVENT_COMPONENT), ICAL_DTSTART_PROPERTY) == NULL) { return; } /* ok, chances are we've got a live one here. let's try to figure out where it goes. */ dtstart = icaltime_null_time(); dtend = icaltime_null_time(); if (WCC->disp_cal_items == NULL) { WCC->disp_cal_items = NewHash(0, Flathash); } /* Note: anything we do here, we also have to do below for the recurrences. */ Cal = (disp_cal*) malloc(sizeof(disp_cal)); memset(Cal, 0, sizeof(disp_cal)); Cal->cal = icalcomponent_new_clone(event); /* Dezonify and decapsulate at the very last moment */ ical_dezonify(Cal->cal); if (icalcomponent_isa(Cal->cal) != ICAL_VEVENT_COMPONENT) { cptr = icalcomponent_get_first_component(Cal->cal, ICAL_VEVENT_COMPONENT); if (cptr) { cptr = icalcomponent_new_clone(cptr); icalcomponent_free(Cal->cal); Cal->cal = cptr; } } Cal->unread = unread; len = strlen(from); Cal->from = (char*)malloc(len+ 1); memcpy(Cal->from, from, len + 1); Cal->cal_msgnum = msgnum; /* Precalculate the starting date and time of this event, and store it in our top-level * structure. Later, when we are rendering the calendar, we can just peek at these values * without having to break apart every calendar item. */ ps = icalcomponent_get_first_property(Cal->cal, ICAL_DTSTART_PROPERTY); if (ps != NULL) { dtstart = icalproperty_get_dtstart(ps); Cal->event_start = icaltime_as_timet(dtstart); } /* Do the same for the ending date and time. It makes the day view much easier to render. */ ps = icalcomponent_get_first_property(Cal->cal, ICAL_DTEND_PROPERTY); if (ps != NULL) { dtend = icalproperty_get_dtend(ps); Cal->event_end = icaltime_as_timet(dtend); } /* Store it in the hash list. */ /* syslog(LOG_DEBUG, "INITIAL: %s", ctime(&Cal->event_start)); */ Put(WCC->disp_cal_items, (char*) &Cal->event_start, sizeof(Cal->event_start), Cal, delete_cal); /****************************** handle recurring events ******************************/ if (icaltime_is_null_time(dtstart)) return; /* Can't recur without a start time */ if (!icaltime_is_null_time(dtend)) { /* Need duration for recurrences */ dur = icaltime_subtract(dtend, dtstart); } else { dur = icaltime_subtract(dtstart, dtstart); } /* * Just let libical iterate the recurrence, and keep looping back to the top of this function, * adding new hash entries that all point back to the same msgnum, until either the iteration * stops or some outer bound is reached. The display code will automatically do the Right Thing. */ cptr = event; if (icalcomponent_isa(cptr) != ICAL_VEVENT_COMPONENT) { cptr = icalcomponent_get_first_component(cptr, ICAL_VEVENT_COMPONENT); } if (!cptr) return; ps = icalcomponent_get_first_property(cptr, ICAL_DTSTART_PROPERTY); if (ps == NULL) return; dtstart = icalproperty_get_dtstart(ps); rrule = icalcomponent_get_first_property(cptr, ICAL_RRULE_PROPERTY); if (!rrule) return; recur = icalproperty_get_rrule(rrule); ritr = icalrecur_iterator_new(recur, dtstart); if (!ritr) return; while (next = icalrecur_iterator_next(ritr), ((!icaltime_is_null_time(next))&&(!stop_rr)) ) { ++num_recur; if (num_recur > 1) { /* Skip the first one. We already did it at the root. */ icalcomponent *cptr; /* Note: anything we do here, we also have to do above for the root event. */ Cal = (disp_cal*) malloc(sizeof(disp_cal)); memset(Cal, 0, sizeof(disp_cal)); Cal->cal = icalcomponent_new_clone(event); Cal->unread = unread; len = strlen(from); Cal->from = (char*)malloc(len+ 1); memcpy(Cal->from, from, len + 1); Cal->cal_msgnum = msgnum; if (icalcomponent_isa(Cal->cal) == ICAL_VEVENT_COMPONENT) { cptr = Cal->cal; } else { cptr = icalcomponent_get_first_component(Cal->cal, ICAL_VEVENT_COMPONENT); } if (cptr) { /* Remove any existing DTSTART properties */ while ( ps = icalcomponent_get_first_property(cptr, ICAL_DTSTART_PROPERTY), ps != NULL ) { icalcomponent_remove_property(cptr, ps); } /* Add our shiny new DTSTART property from the iteration */ ps = icalproperty_new_dtstart(next); icalcomponent_add_property(cptr, ps); Cal->event_start = icaltime_as_timet(next); final_recurrence = Cal->event_start; /* Remove any existing DTEND properties */ while ( ps = icalcomponent_get_first_property(cptr, ICAL_DTEND_PROPERTY), (ps != NULL) ) { icalcomponent_remove_property(cptr, ps); } /* Add our shiny new DTEND property from the iteration */ ps = icalproperty_new_dtend(icaltime_add(next, dur)); icalcomponent_add_property(cptr, ps); } /* Dezonify and decapsulate at the very last moment */ ical_dezonify(Cal->cal); if (icalcomponent_isa(Cal->cal) != ICAL_VEVENT_COMPONENT) { cptr = icalcomponent_get_first_component(Cal->cal, ICAL_VEVENT_COMPONENT); if (cptr) { cptr = icalcomponent_new_clone(cptr); icalcomponent_free(Cal->cal); Cal->cal = cptr; } } if ( (Cal->event_start > calv->lower_bound) && (Cal->event_start < calv->upper_bound) ) { /* syslog(LOG_DEBUG, "REPEATS: %s", ctime(&Cal->event_start)); */ Put(WCC->disp_cal_items, (char*) &Cal->event_start, sizeof(Cal->event_start), Cal, delete_cal ); } else { delete_cal(Cal); } /* If an upper bound is set, stop when we go out of scope */ if (final_recurrence > calv->upper_bound) stop_rr = 1; } } icalrecur_iterator_free(ritr); /* syslog(LOG_DEBUG, "Performed %d recurrences; final one is %s", num_recur, ctime(&final_recurrence)); */ } void process_ical_object(long msgnum, int unread, char *from, char *FlatIcal, icalcomponent_kind which_kind, IcalCallbackFunc CallBack, calview *calv ) { icalcomponent *cal, *c; cal = icalcomponent_new_from_string(FlatIcal); if (cal != NULL) { /* A which_kind of (-1) means just load the whole thing */ if (which_kind == (-1)) { CallBack(cal, msgnum, from, unread, calv); } /* Otherwise recurse and hunt */ else { /* Simple components of desired type */ if (icalcomponent_isa(cal) == which_kind) { CallBack(cal, msgnum, from, unread, calv); } /* Subcomponents of desired type */ for (c = icalcomponent_get_first_component(cal, which_kind); (c != 0); c = icalcomponent_get_next_component(cal, which_kind)) { CallBack(c, msgnum, from, unread, calv); } } icalcomponent_free(cal); } } /* * Code common to all icalendar display handlers. Given a message number and a MIME * type, we load the message and hunt for that MIME type. If found, we load * the relevant part, deserialize it into a libical component, filter it for * the requested object type, and feed it to the specified handler. */ void load_ical_object(long msgnum, int unread, icalcomponent_kind which_kind, IcalCallbackFunc CallBack, calview *calv, int RenderAsync ) { StrBuf *Buf; StrBuf *Data = NULL; const char *bptr; int Done = 0; char from[128] = ""; char mime_partnum[256]; char mime_filename[256]; char mime_content_type[256]; char mime_disposition[256]; char relevant_partnum[256]; char *relevant_source = NULL; int phase = 0; /* 0 = citadel headers, 1 = mime headers, 2 = body */ char msg4_content_type[256] = ""; char msg4_content_encoding[256] = ""; int msg4_content_length = 0; relevant_partnum[0] = '\0'; serv_printf("MSG4 %ld", msgnum); /* we need the mime headers */ Buf = NewStrBuf(); StrBuf_ServGetln(Buf); if (GetServerStatus(Buf, NULL) != 1) { FreeStrBuf (&Buf); return; } while (!Done && (StrBuf_ServGetln(Buf)>=0)) { if ( (StrLength(Buf)==3) && !strcmp(ChrPtr(Buf), "000")) { Done = 1; break; } bptr = ChrPtr(Buf); switch (phase) { case 0: if (!strncasecmp(bptr, "part=", 5)) { extract_token(mime_filename, &bptr[5], 1, '|', sizeof mime_filename); extract_token(mime_partnum, &bptr[5], 2, '|', sizeof mime_partnum); extract_token(mime_disposition, &bptr[5], 3, '|', sizeof mime_disposition); extract_token(mime_content_type, &bptr[5], 4, '|', sizeof mime_content_type); /* do we care? mime_length = */extract_int(&bptr[5], 5); if ( (!strcasecmp(mime_content_type, "text/calendar")) || (!strcasecmp(mime_content_type, "application/ics")) || (!strcasecmp(mime_content_type, "text/vtodo")) || (!strcasecmp(mime_content_type, "text/todo")) ) { strcpy(relevant_partnum, mime_partnum); } } else if (!strncasecmp(bptr, "from=", 4)) { extract_token(from, bptr, 1, '=', sizeof(from)); } else if ((phase == 0) && (!strncasecmp(bptr, "text", 4))) { phase = 1; } break; case 1: if (!IsEmptyStr(bptr)) { if (!strncasecmp(bptr, "Content-type: ", 14)) { safestrncpy(msg4_content_type, &bptr[14], sizeof msg4_content_type); striplt(msg4_content_type); } else if (!strncasecmp(bptr, "Content-transfer-encoding: ", 27)) { safestrncpy(msg4_content_encoding, &bptr[27], sizeof msg4_content_encoding); striplt(msg4_content_type); } else if ((!strncasecmp(bptr, "Content-length: ", 16))) { msg4_content_length = atoi(&bptr[16]); } break; } else { phase++; if ((msg4_content_length > 0) && ( !strcasecmp(msg4_content_encoding, "7bit")) && ((!strcasecmp(mime_content_type, "text/calendar")) || (!strcasecmp(mime_content_type, "application/ics")) || (!strcasecmp(mime_content_type, "text/vtodo")) || (!strcasecmp(mime_content_type, "text/todo")) ) ) { } } case 2: if (Data == NULL) Data = NewStrBufPlain(NULL, msg4_content_length * 2); if (msg4_content_length > 0) { StrBuf_ServGetBLOBBuffered(Data, msg4_content_length); phase ++; } else { StrBufAppendBuf(Data, Buf, 0); StrBufAppendBufPlain(Data, "\r\n", 1, 0); } case 3: StrBufAppendBuf(Data, Buf, 0); } } FreeStrBuf(&Buf); /* If MSG4 didn't give us the part we wanted, but we know that we can find it * as one of the other MIME parts, attempt to load it now. */ if ((Data == NULL) && (!IsEmptyStr(relevant_partnum))) { Data = load_mimepart(msgnum, relevant_partnum); } if (Data != NULL) { relevant_source = (char*) ChrPtr(Data); process_ical_object(msgnum, unread, from, relevant_source, which_kind, CallBack, calv); } FreeStrBuf (&Data); icalmemory_free_ring(); } /* * Display a calendar item */ int calendar_LoadMsgFromServer(SharedMessageStatus *Stat, void **ViewSpecific, message_summary* Msg, int is_new, int i) { calview *c = (calview*) *ViewSpecific; load_ical_object(Msg->msgnum, is_new, (-1), display_individual_cal, c, 1); return 0; } /* * display the editor component for an event */ void display_edit_event(void) { long msgnum = 0L; msgnum = lbstr("msgnum"); if (msgnum > 0L) { /* existing event */ load_ical_object(msgnum, 0, ICAL_VEVENT_COMPONENT, display_edit_individual_event, NULL, 0); } else { /* new event */ display_edit_individual_event(NULL, 0L, "", 0, NULL); } } /* * save an edited event */ void save_event(void) { long msgnum = 0L; msgnum = lbstr("msgnum"); if (msgnum > 0L) { load_ical_object(msgnum, 0, (-1), save_individual_event, NULL, 0); } else { save_individual_event(NULL, 0L, "", 0, NULL); } } /* * Anonymous request of freebusy data for a user */ void do_freebusy(void) { const char *req = ChrPtr(WC->Hdr->HR.ReqLine); char who[SIZ]; char buf[SIZ]; int len; long lines; extract_token(who, req, 0, ' ', sizeof who); if (!strncasecmp(who, "/freebusy/", 10)) { strcpy(who, &who[10]); } unescape_input(who); len = strlen(who); if ( (!strcasecmp(&who[len-4], ".vcf")) || (!strcasecmp(&who[len-4], ".ifb")) || (!strcasecmp(&who[len-4], ".vfb")) ) { who[len-4] = 0; } syslog(LOG_INFO, "freebusy requested for <%s>\n", who); serv_printf("ICAL freebusy|%s", who); serv_getln(buf, sizeof buf); if (buf[0] != '1') { hprintf("HTTP/1.1 404 %s\n", &buf[4]); output_headers(0, 0, 0, 0, 0, 0); hprintf("Content-Type: text/plain\r\n"); wc_printf("%s\n", &buf[4]); end_burst(); return; } read_server_text(WC->WBuf, &lines); http_transmit_thing("text/calendar", 0); } int calendar_Cleanup(void **ViewSpecific) { calview *c; c = (calview *) *ViewSpecific; wDumpContent(1); free (c); *ViewSpecific = NULL; return 0; } int __calendar_Cleanup(void **ViewSpecific) { calview *c; c = (calview *) *ViewSpecific; free (c); *ViewSpecific = NULL; return 0; } void InitModule_CALENDAR (void) { RegisterReadLoopHandlerset( VIEW_CALENDAR, calendar_GetParamsGetServerCall, NULL, NULL, NULL, calendar_LoadMsgFromServer, calendar_RenderView_or_Tail, calendar_Cleanup); RegisterReadLoopHandlerset( VIEW_CALBRIEF, calendar_GetParamsGetServerCall, NULL, NULL, NULL, calendar_LoadMsgFromServer, calendar_RenderView_or_Tail, calendar_Cleanup); RegisterPreference("daystart", _("Calendar day view begins at:"), PRF_INT, NULL); RegisterPreference("dayend", _("Calendar day view ends at:"), PRF_INT, NULL); RegisterPreference("weekstart", _("Week starts on:"), PRF_INT, NULL); WebcitAddUrlHandler(HKEY("freebusy"), "", 0, do_freebusy, COOKIEUNNEEDED|ANONYMOUS|FORCE_SESSIONCLOSE); WebcitAddUrlHandler(HKEY("display_edit_task"), "", 0, display_edit_task, 0); WebcitAddUrlHandler(HKEY("display_edit_event"), "", 0, display_edit_event, 0); WebcitAddUrlHandler(HKEY("save_event"), "", 0, save_event, 0); WebcitAddUrlHandler(HKEY("respond_to_request"), "", 0, respond_to_request, 0); WebcitAddUrlHandler(HKEY("handle_rsvp"), "", 0, handle_rsvp, 0); } webcit-8.24-dfsg.orig/missing0000755000175000017500000001400212271477123015774 0ustar michaelmichael#! /bin/sh # Common stub for a few missing GNU programs while installing. # Copyright (C) 1996, 1997 Free Software Foundation, Inc. # Franc,ois Pinard , 1996. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License, version 3. # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program 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. # # # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. if test $# -eq 0; then echo 1>&2 "Try \`$0 --help' for more information" exit 1 fi case "$1" in -h|--h|--he|--hel|--help) echo "\ $0 [OPTION]... PROGRAM [ARGUMENT]... Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an error status if there is no known handling for PROGRAM. Options: -h, --help display this help and exit -v, --version output version information and exit Supported PROGRAM values: aclocal touch file \`aclocal.m4' autoconf touch file \`configure' autoheader touch file \`config.h.in' automake touch all \`Makefile.in' files bison create \`y.tab.[ch]', if possible, from existing .[ch] flex create \`lex.yy.c', if possible, from existing .c lex create \`lex.yy.c', if possible, from existing .c makeinfo touch the output file yacc create \`y.tab.[ch]', if possible, from existing .[ch]" ;; -v|--v|--ve|--ver|--vers|--versi|--versio|--version) echo "missing - GNU libit 0.0" ;; -*) echo 1>&2 "$0: Unknown \`$1' option" echo 1>&2 "Try \`$0 --help' for more information" exit 1 ;; aclocal) echo 1>&2 "\ WARNING: \`$1' is missing on your system. You should only need it if you modified \`acinclude.m4' or \`configure.in'. You might want to install the \`Automake' and \`Perl' packages. Grab them from any GNU archive site." touch aclocal.m4 ;; autoconf) echo 1>&2 "\ WARNING: \`$1' is missing on your system. You should only need it if you modified \`configure.in'. You might want to install the \`Autoconf' and \`GNU m4' packages. Grab them from any GNU archive site." touch configure ;; autoheader) echo 1>&2 "\ WARNING: \`$1' is missing on your system. You should only need it if you modified \`acconfig.h' or \`configure.in'. You might want to install the \`Autoconf' and \`GNU m4' packages. Grab them from any GNU archive site." files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER([^):]*:\([^)]*\)).*/\1/p' configure.in` if test -z "$files"; then files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^):]*\)).*/\1/p' configure.in` test -z "$files" || files="$files.in" else files=`echo "$files" | sed -e 's/:/ /g'` fi test -z "$files" && files="config.h.in" touch $files ;; automake) echo 1>&2 "\ WARNING: \`$1' is missing on your system. You should only need it if you modified \`Makefile.am', \`acinclude.m4' or \`configure.in'. You might want to install the \`Automake' and \`Perl' packages. Grab them from any GNU archive site." find . -type f -name Makefile.am -print \ | sed 's/^\(.*\).am$/touch \1.in/' \ | sh ;; bison|yacc) echo 1>&2 "\ WARNING: \`$1' is missing on your system. You should only need it if you modified a \`.y' file. You may need the \`Bison' package in order for those modifications to take effect. You can get \`Bison' from any GNU archive site." rm -f y.tab.c y.tab.h if [ $# -ne 1 ]; then eval LASTARG="\${$#}" case "$LASTARG" in *.y) SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` if [ -f "$SRCFILE" ]; then cp "$SRCFILE" y.tab.c fi SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` if [ -f "$SRCFILE" ]; then cp "$SRCFILE" y.tab.h fi ;; esac fi if [ ! -f y.tab.h ]; then echo >y.tab.h fi if [ ! -f y.tab.c ]; then echo 'main() { return 0; }' >y.tab.c fi ;; lex|flex) echo 1>&2 "\ WARNING: \`$1' is missing on your system. You should only need it if you modified a \`.l' file. You may need the \`Flex' package in order for those modifications to take effect. You can get \`Flex' from any GNU archive site." rm -f lex.yy.c if [ $# -ne 1 ]; then eval LASTARG="\${$#}" case "$LASTARG" in *.l) SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` if [ -f "$SRCFILE" ]; then cp "$SRCFILE" lex.yy.c fi ;; esac fi if [ ! -f lex.yy.c ]; then echo 'main() { return 0; }' >lex.yy.c fi ;; makeinfo) echo 1>&2 "\ WARNING: \`$1' is missing on your system. You should only need it if you modified a \`.texi' or \`.texinfo' file, or any other file indirectly affecting the aspect of the manual. The spurious call might also be the consequence of using a buggy \`make' (AIX, DU, IRIX). You might want to install the \`Texinfo' package or the \`GNU make' package. Grab either from any GNU archive site." file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` if test -z "$file"; then file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file` fi touch $file ;; *) echo 1>&2 "\ WARNING: \`$1' is needed, and you do not seem to have it handy on your system. You might have modified some files without having the proper tools for further handling them. Check the \`README' file, it often tells you about the needed prerequirements for installing this package. You may also peek at any GNU archive site, in case some other package would contain this missing \`$1' program." exit 1 ;; esac exit 0 webcit-8.24-dfsg.orig/availability.c0000644000175000017500000001662012271477123017223 0ustar michaelmichael/* * Copyright (c) 1996-2012 by the citadel.org team * * This program is open source software. You can redistribute it and/or * modify it under the terms of the GNU General Public License, version 3. * * This program 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. */ #include "webcit.h" #include "webserver.h" #include "calendar.h" /* * Utility function to fetch a VFREEBUSY type of thing for any specified user. */ icalcomponent *get_freebusy_for_user(char *who) { long nLines; char buf[SIZ]; StrBuf *serialized_fb = NewStrBuf(); icalcomponent *fb = NULL; serv_printf("ICAL freebusy|%s", who); serv_getln(buf, sizeof buf); if (buf[0] == '1') { read_server_text(serialized_fb, &nLines); } if (serialized_fb == NULL) { return NULL; } fb = icalcomponent_new_from_string(ChrPtr(serialized_fb)); FreeStrBuf(&serialized_fb); if (fb == NULL) { return NULL; } return(fb); } /* * Check to see if two events overlap. * (This function is used in both Citadel and WebCit. If you change it in * one place, change it in the other. We should seriously consider moving * this function upstream into libical.) * * Returns nonzero if they do overlap. */ int ical_ctdl_is_overlap( struct icaltimetype t1start, struct icaltimetype t1end, struct icaltimetype t2start, struct icaltimetype t2end ) { if (icaltime_is_null_time(t1start)) return(0); if (icaltime_is_null_time(t2start)) return(0); /* if either event lacks end time, assume end = start */ if (icaltime_is_null_time(t1end)) memcpy(&t1end, &t1start, sizeof(struct icaltimetype)); else { if (t1end.is_date && icaltime_compare(t1start, t1end)) { /* * the end date is non-inclusive so adjust it by one * day because our test is inclusive, note that a day is * not too much because we are talking about all day * events * if start = end we assume that nevertheless the whole * day is meant */ icaltime_adjust(&t1end, -1, 0, 0, 0); } } if (icaltime_is_null_time(t2end)) memcpy(&t2end, &t2start, sizeof(struct icaltimetype)); else { if (t2end.is_date && icaltime_compare(t2start, t2end)) { icaltime_adjust(&t2end, -1, 0, 0, 0); } } /* First, check for all-day events */ if (t1start.is_date || t2start.is_date) { /* If event 1 ends before event 2 starts, we're in the clear. */ if (icaltime_compare_date_only(t1end, t2start) < 0) return(0); /* If event 2 ends before event 1 starts, we're also ok. */ if (icaltime_compare_date_only(t2end, t1start) < 0) return(0); return(1); } /* syslog(LOG_DEBUG, "Comparing t1start %d:%d t1end %d:%d t2start %d:%d t2end %d:%d \n", t1start.hour, t1start.minute, t1end.hour, t1end.minute, t2start.hour, t2start.minute, t2end.hour, t2end.minute); */ /* Now check for overlaps using date *and* time. */ /* If event 1 ends before event 2 starts, we're in the clear. */ if (icaltime_compare(t1end, t2start) <= 0) return(0); /* syslog(LOG_DEBUG, "first passed\n"); */ /* If event 2 ends before event 1 starts, we're also ok. */ if (icaltime_compare(t2end, t1start) <= 0) return(0); /* syslog(LOG_DEBUG, "second passed\n"); */ /* Otherwise, they overlap. */ return(1); } /* * Back end function for check_attendee_availability() * This one checks an individual attendee against a supplied * event start and end time. All these fields have already been * broken out. * * attendee_string name of the attendee * event_start start time of the event to check * event_end end time of the event to check * * The result is placed in 'annotation'. */ void check_individual_attendee(char *attendee_string, struct icaltimetype event_start, struct icaltimetype event_end, char *annotation) { icalcomponent *fbc = NULL; icalcomponent *fb = NULL; icalproperty *thisfb = NULL; struct icalperiodtype period; /* * Set to 'unknown' right from the beginning. Unless we learn * something else, that's what we'll go with. */ strcpy(annotation, _("availability unknown")); fbc = get_freebusy_for_user(attendee_string); if (fbc == NULL) { return; } /* * Make sure we're looking at a VFREEBUSY by itself. What we're probably * looking at initially is a VFREEBUSY encapsulated in a VCALENDAR. */ if (icalcomponent_isa(fbc) == ICAL_VCALENDAR_COMPONENT) { fb = icalcomponent_get_first_component(fbc, ICAL_VFREEBUSY_COMPONENT); } else if (icalcomponent_isa(fbc) == ICAL_VFREEBUSY_COMPONENT) { fb = fbc; } /* Iterate through all FREEBUSY's looking for conflicts. */ if (fb != NULL) { strcpy(annotation, _("free")); for (thisfb = icalcomponent_get_first_property(fb, ICAL_FREEBUSY_PROPERTY); thisfb != NULL; thisfb = icalcomponent_get_next_property(fb, ICAL_FREEBUSY_PROPERTY) ) { /** Do the check */ period = icalproperty_get_freebusy(thisfb); if (ical_ctdl_is_overlap(period.start, period.end, event_start, event_end)) { strcpy(annotation, _("BUSY")); } } } icalcomponent_free(fbc); } /* * Check the availability of all attendees for an event (when possible) * and annotate accordingly. * * vevent the event which should be compared with attendees calendar */ void check_attendee_availability(icalcomponent *vevent) { icalproperty *attendee = NULL; icalproperty *dtstart_p = NULL; icalproperty *dtend_p = NULL; struct icaltimetype dtstart_t; struct icaltimetype dtend_t; char attendee_string[SIZ]; char annotated_attendee_string[SIZ]; char annotation[SIZ]; const char *ch; if (vevent == NULL) { return; } /* * If we're looking at a fully encapsulated VCALENDAR * rather than a VEVENT component, attempt to use the first * relevant VEVENT subcomponent. If there is none, the * NULL returned by icalcomponent_get_first_component() will * tell the next iteration of this function to create a * new one. */ if (icalcomponent_isa(vevent) == ICAL_VCALENDAR_COMPONENT) { check_attendee_availability( icalcomponent_get_first_component( vevent, ICAL_VEVENT_COMPONENT ) ); return; } ical_dezonify(vevent); /**< Convert everything to UTC */ /* * Learn the start and end times. */ dtstart_p = icalcomponent_get_first_property(vevent, ICAL_DTSTART_PROPERTY); if (dtstart_p != NULL) dtstart_t = icalproperty_get_dtstart(dtstart_p); dtend_p = icalcomponent_get_first_property(vevent, ICAL_DTEND_PROPERTY); if (dtend_p != NULL) dtend_t = icalproperty_get_dtend(dtend_p); /* * Iterate through attendees. */ for (attendee = icalcomponent_get_first_property(vevent, ICAL_ATTENDEE_PROPERTY); attendee != NULL; attendee = icalcomponent_get_next_property(vevent, ICAL_ATTENDEE_PROPERTY)) { ch = icalproperty_get_attendee(attendee); if ((ch != NULL) && !strncasecmp(ch, "MAILTO:", 7)) { /** screen name or email address */ safestrncpy(attendee_string, ch + 7, sizeof(attendee_string)); striplt(attendee_string); check_individual_attendee(attendee_string, dtstart_t, dtend_t, annotation); /** Replace the attendee name with an annotated one. */ snprintf(annotated_attendee_string, sizeof annotated_attendee_string, "MAILTO:%s (%s)", attendee_string, annotation); icalproperty_set_attendee(attendee, annotated_attendee_string); } } } webcit-8.24-dfsg.orig/graphics.c0000644000175000017500000001200312271477123016340 0ustar michaelmichael/* * Handles HTTP upload of graphics files into the system. * * Copyright (c) 1996-2012 by the citadel.org team * * This program is open source software. You can redistribute it and/or * modify it under the terms of the GNU General Public License, version 3. * * This program 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. */ #include "webcit.h" extern void output_static(const char* What); void display_graphics_upload(char *filename) { StrBuf *Line; Line = NewStrBuf(); serv_printf("UIMG 0||%s", filename); StrBuf_ServGetln(Line); if (GetServerStatusMsg(Line, NULL, 1, 2) != 2) { display_main_menu(); return; } else { output_headers(1, 0, 0, 0, 1, 0); do_template("files_graphicsupload"); end_burst(); } FreeStrBuf(&Line); } void do_graphics_upload(char *filename) { StrBuf *Line; const char *MimeType; wcsession *WCC = WC; int bytes_remaining; int pos = 0; int thisblock; bytes_remaining = WCC->upload_length; if (havebstr("cancel_button")) { AppendImportantMessage(_("Graphics upload has been cancelled."), -1); display_main_menu(); return; } if (WCC->upload_length == 0) { AppendImportantMessage(_("You didn't upload a file."), -1); display_main_menu(); return; } MimeType = GuessMimeType(ChrPtr(WCC->upload), bytes_remaining); serv_printf("UIMG 1|%s|%s", MimeType, filename); Line = NewStrBuf(); StrBuf_ServGetln(Line); if (GetServerStatusMsg(Line, NULL, 1, 2) != 2) { display_main_menu(); FreeStrBuf(&Line); return; } while (bytes_remaining) { thisblock = ((bytes_remaining > 4096) ? 4096 : bytes_remaining); serv_printf("WRIT %d", thisblock); StrBuf_ServGetln(Line); if (GetServerStatusMsg(Line, NULL, 1, 7) != 7) { serv_puts("UCLS 0"); StrBuf_ServGetln(Line); display_main_menu(); FreeStrBuf(&Line); return; } thisblock = extract_int(ChrPtr(Line) +4, 0); serv_write(&ChrPtr(WCC->upload)[pos], thisblock); pos += thisblock; bytes_remaining -= thisblock; } serv_puts("UCLS 1"); StrBuf_ServGetln(Line); if (*ChrPtr(Line) != 'x') { display_success(ChrPtr(Line) + 4); } FreeStrBuf(&Line); } void edithellopic(void) { do_graphics_upload("hello"); } void editpic(void) { do_graphics_upload("_userpic_"); } void editgoodbuyepic(void) { do_graphics_upload("UIMG 1|%s|goodbuye"); } /* The users photo display / upload facility */ void display_editpic(void) { putbstr("__WHICHPIC", NewStrBufPlain(HKEY("_userpic_"))); putbstr("__PICDESC", NewStrBufPlain(_("your photo"), -1)); putbstr("__UPLURL", NewStrBufPlain(HKEY("editpic"))); display_graphics_upload("editpic"); } /* room picture dispay / upload facility */ void display_editroompic(void) { putbstr("__WHICHPIC", NewStrBufPlain(HKEY("_roompic_"))); putbstr("__PICDESC", NewStrBufPlain(_("the icon for this room"), -1)); putbstr("__UPLURL", NewStrBufPlain(HKEY("editroompic"))); display_graphics_upload("editroompic"); } /* the greetingpage hello pic */ void display_edithello(void) { putbstr("__WHICHPIC", NewStrBufPlain(HKEY("hello"))); putbstr("__PICDESC", NewStrBufPlain(_("the Greetingpicture for the login prompt"), -1)); putbstr("__UPLURL", NewStrBufPlain(HKEY("edithellopic"))); display_graphics_upload("edithellopic"); } /* the logoff banner */ void display_editgoodbyepic(void) { putbstr("__WHICHPIC", NewStrBufPlain(HKEY("UIMG 0|%s|goodbuye"))); putbstr("__PICDESC", NewStrBufPlain(_("the Logoff banner picture"), -1)); putbstr("__UPLURL", NewStrBufPlain(HKEY("editgoodbuyepic"))); display_graphics_upload("editgoodbuyepic"); } void display_editfloorpic(void) { StrBuf *PicAction; PicAction = NewStrBuf(); StrBufPrintf(PicAction, "_floorpic_|%s", bstr("which_floor")); putbstr("__WHICHPIC", PicAction); putbstr("__PICDESC", NewStrBufPlain(_("the icon for this floor"), -1)); putbstr("__UPLURL", NewStrBufPlain(HKEY("editfloorpic"))); display_graphics_upload("editfloorpic"); } void editroompic(void) { char buf[SIZ]; snprintf(buf, SIZ, "_roompic_|%s", bstr("which_room")); do_graphics_upload(buf); } void editfloorpic(void){ char buf[SIZ]; snprintf(buf, SIZ, "_floorpic_|%s", bstr("which_floor")); do_graphics_upload(buf); } void InitModule_GRAPHICS (void) { WebcitAddUrlHandler(HKEY("display_editpic"), "", 0, display_editpic, 0); WebcitAddUrlHandler(HKEY("editpic"), "", 0, editpic, 0); WebcitAddUrlHandler(HKEY("display_editroompic"), "", 0, display_editroompic, 0); WebcitAddUrlHandler(HKEY("editroompic"), "", 0, editroompic, 0); WebcitAddUrlHandler(HKEY("display_edithello"), "", 0, display_edithello, 0); WebcitAddUrlHandler(HKEY("edithellopic"), "", 0, edithellopic, 0); WebcitAddUrlHandler(HKEY("display_editgoodbuye"), "", 0, display_editgoodbyepic, 0); WebcitAddUrlHandler(HKEY("editgoodbuyepic"), "", 0, editgoodbuyepic, 0); WebcitAddUrlHandler(HKEY("display_editfloorpic"), "", 0, display_editfloorpic, 0); WebcitAddUrlHandler(HKEY("editfloorpic"), "", 0, editfloorpic, 0); } webcit-8.24-dfsg.orig/dav.h0000644000175000017500000000243512271477123015327 0ustar michaelmichael/* * Copyright (c) 1996-2013 by the citadel.org team * * This program is open source software. You can redistribute it and/or * modify it under the terms of the GNU General Public License, version 3. * * This program 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. */ /* * Data passed back and forth between dav_get() and its callback functions called by the MIME parser */ struct epdata { char desired_content_type_1[128]; char desired_content_type_2[128]; char found_section[128]; char charset[128]; }; void dav_common_headers(void); void dav_main(void); void dav_get(void); void dav_put(void); void dav_delete(void); void dav_propfind(void); void dav_options(void); void dav_report(void); long locate_message_by_uid(const char *); void dav_folder_list(void); void euid_escapize(char *, const char *); void euid_unescapize(char *, const char *); void dav_identify_host(void); void dav_identify_hosthdr(void); void RegisterDAVNamespace(const char * UrlString, long UrlSLen, const char *DisplayName, long dslen, WebcitHandlerFunc F, WebcitRESTDispatchID RID, long Flags); webcit-8.24-dfsg.orig/iconbar.c0000644000175000017500000001712112271477123016163 0ustar michaelmichael/* * Displays and customizes the iconbar. * * Copyright (c) 1996-2012 by the citadel.org team * * This program is open source software. You can redistribute it and/or * modify it under the terms of the GNU General Public License, version 3. * * This program 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. */ #include "webcit.h" /* Values for ib_displayas ... don't change these or you will break the templates */ #define IB_PICTEXT 0 /* picture and text */ #define IB_PICONLY 1 /* just a picture */ #define IB_TEXTONLY 2 /* just text */ void DontDeleteThis(void *Data){} #define IconbarIsEnabled(a, b) IconbarIsENABLED(a, sizeof(a) - 1, b) HashList *IB_Seeting_Order = NULL; typedef struct _dflt_IB_Setting { int DefVal; /* default value for non-set users */ long n; /* counter for internal purposes */ const char *Key; /* Stringvalue */ long len; /* Length... */ }dflt_IB_Setting; long nIBV = 0; dflt_IB_Setting IconbarDefaults[] = { {0, 0, HKEY("unused")}, {0, 1, HKEY("ib_displayas")}, {0, 2, HKEY("ib_logo")}, {1, 3, HKEY("ib_summary")}, {1, 4, HKEY("ib_inbox")}, {1, 5, HKEY("ib_calendar")}, {1, 6, HKEY("ib_contacts")}, {1, 7, HKEY("ib_notes")}, {1, 8, HKEY("ib_tasks")}, {1, 9, HKEY("ib_rooms")}, {1, 10, HKEY("ib_users")}, {1, 11, HKEY("ib_chat")}, {1, 12, HKEY("ib_advanced")}, {1, 13, HKEY("ib_logoff")}, {1, 14, HKEY("ib_citadel")}, {0, 15, HKEY("")} }; HashList *IBDfl = NULL; long IconbarIsENABLED(long val, const char *key, size_t keylen) { void *vIBDfl = NULL; wcsession *WCC = WC; if ((WCC != NULL) && (WCC->IBSettingsVec != NULL) && (val < nIBV)) { return WCC->IBSettingsVec[val]; } if (GetHash(IBDfl, key, keylen, &vIBDfl)) { dflt_IB_Setting *Set = (dflt_IB_Setting*)vIBDfl; return Set->DefVal; } else return 1; } #ifdef DBG_ICONBAR_HASH static char nbuf[32]; inline const char *PrintInt(void *Prefstr) { snprintf(nbuf, sizeof(nbuf), "%ld", (long)Prefstr); return nbuf; } #endif /* hprintf("Cache-Control: private\r\n"); */ int ConditionalIsActiveStylesheet(StrBuf *Target, WCTemplputParams *TP) { long testFor; long lookAt; long ib_displayas; lookAt = GetTemplateTokenNumber(Target, TP, 3, IB_PICTEXT); testFor = GetTemplateTokenNumber(Target, TP, 2, IB_PICTEXT); ib_displayas = IconbarIsENABLED(lookAt, TKEY(3)); /* printf ("%ld == %ld ? %s : %s\n", testFor, ib_displayas, IconbarDefaults[lookAt ].Key, ChrPtr(TP->Tokens->FlatToken)); */ return (testFor == ib_displayas); } void LoadIconSettings(StrBuf *iconbar, long lvalue) { void *vIBDfl; dflt_IB_Setting *Set; const char *pCh = NULL; wcsession *WCC = WC; StrBuf *buf; StrBuf *key; long val; buf = NewStrBuf(); key = NewStrBuf(); if (WCC->IBSettingsVec == NULL) { WCC->IBSettingsVec = (long*) malloc (nIBV * sizeof(long)); } /* * The initialized values of these variables also happen to * specify the default values for users who haven't customized * their iconbars. These should probably be set in a master * configuration somewhere. */ while (StrBufExtract_NextToken(buf, iconbar, &pCh, ',') >= 0) { StrBufExtract_token(key, buf, 0, '='); val = StrBufExtract_long(buf, 1, '='); if (!GetHash(IBDfl, SKEY(key), &vIBDfl)) continue; Set = (dflt_IB_Setting*)vIBDfl; WCC->IBSettingsVec[Set->n] = val; /* printf("%ld %s %s -> %ld \n", Set->n, Set->Key, IconbarDefaults[Set->n].Key, val);*/ } #ifdef DBG_ICONBAR_HASH dbg_PrintHash(WCC->IconBarSetttings, PrintInt, NULL); #endif FreeStrBuf(&key); FreeStrBuf(&buf); } /* * save changes to iconbar settings */ void commit_iconbar(void) { const StrBuf *MimeType; StrBuf *iconbar; StrBuf *buf; int i; if (!havebstr("ok_button")) { display_main_menu(); return; } iconbar = NewStrBuf(); buf = NewStrBuf(); StrBufPrintf(iconbar, "ib_displayas=%d", ibstr("ib_displayas")); for (i=0; i<(sizeof(IconbarDefaults)/sizeof(dflt_IB_Setting )); ++i) { char *Val; if (!strcasecmp(Bstr(IconbarDefaults[i].Key, IconbarDefaults[i].len), "yes")) { Val = "1"; } else if (!strcasecmp(Bstr(IconbarDefaults[i].Key, IconbarDefaults[i].len), "yeslist")) { Val = "2"; } else { Val = "0"; } StrBufPrintf(buf, ",%s=%s", IconbarDefaults[i].Key, Val); StrBufAppendBuf(iconbar, buf, 0); } FreeStrBuf(&buf); set_preference("iconbar", iconbar, 1); begin_burst(); MimeType = DoTemplate(HKEY("iconbar_save"), NULL, &NoCtx); http_transmit_thing(ChrPtr(MimeType), 0); #ifdef DBG_ICONBAR_HASH dbg_PrintHash(WC->IconBarSetttings, PrintInt, NULL); #endif } /* * Display the icon bar as long as we have an active session, * and either the user is logged in or the server allows guest mode. */ void tmplput_iconbar(StrBuf *Target, WCTemplputParams *TP) { wcsession *WCC = WC; if ( (WCC != NULL) && ((WCC->logged_in) || ((WCC->serv_info != NULL) && (WCC->serv_info->serv_supports_guest)) ) ) { DoTemplate(HKEY("iconbar"), NULL, &NoCtx); } } void ServerShutdownModule_ICONBAR (void) { DeleteHash(&IBDfl); } void ServerStartModule_ICONBAR (void) { int i = 1; IBDfl = NewHash(1, NULL); while (IconbarDefaults[i].len != 0) { Put(IBDfl, IconbarDefaults[i].Key, IconbarDefaults[i].len, &IconbarDefaults[i], reference_free_handler); i++; } } int ConditionalWholistExpanded(StrBuf *Target, WCTemplputParams *TP) { int r = 0; if (WC) r = WC->ib_wholist_expanded; syslog(LOG_DEBUG, "ConditionalWholistExpanded() returns %d", r); return(r); } int ConditionalRoomlistExpanded(StrBuf *Target, WCTemplputParams *TP) { if (WC) return(WC->ib_roomlist_expanded); return(0); } /* * Toggle the roomlist expanded state in session memory */ void toggle_roomlist_expanded_state(void) { wcsession *WCC = WC; if (!WCC) { wc_printf("no session"); return; } WCC->ib_roomlist_expanded = IBSTR("wstate"); wc_printf("%d", WCC->ib_roomlist_expanded); syslog(LOG_DEBUG, "ib_roomlist_expanded set to %d", WCC->ib_roomlist_expanded); } /* * Toggle the wholist expanded state in session memory */ void toggle_wholist_expanded_state(void) { wcsession *WCC = WC; if (!WCC) { wc_printf("no session"); return; } WCC->ib_wholist_expanded = IBSTR("wstate"); wc_printf("%d", WCC->ib_wholist_expanded); syslog(LOG_DEBUG, "ib_wholist_expanded set to %d", WCC->ib_wholist_expanded); } void InitModule_ICONBAR (void) { long l; /*WebcitAddUrlHandler(HKEY("user_iconbar"), "", 0, doUserIconStylesheet, 0); */ WebcitAddUrlHandler(HKEY("commit_iconbar"), "", 0, commit_iconbar, 0); WebcitAddUrlHandler(HKEY("toggle_wholist_expanded_state"), "", 0, toggle_wholist_expanded_state, AJAX); WebcitAddUrlHandler(HKEY("toggle_roomlist_expanded_state"), "", 0, toggle_roomlist_expanded_state, AJAX); RegisterConditional("COND:ICONBAR:ACTIVE", 3, ConditionalIsActiveStylesheet, CTX_NONE); RegisterNamespace("ICONBAR", 0, 0, tmplput_iconbar, NULL, CTX_NONE); RegisterConditional("COND:ICONBAR:WHOLISTEXPANDED", 0, ConditionalWholistExpanded, CTX_NONE); RegisterConditional("COND:ICONBAR:ROOMLISTEXPANDED", 0, ConditionalRoomlistExpanded, CTX_NONE); RegisterPreference("iconbar", _("Iconbar Setting"), PRF_STRING, LoadIconSettings); l = 1; while (IconbarDefaults[l].len != 0) { RegisterTokenParamDefine(IconbarDefaults[l].Key, IconbarDefaults[l].len, l); l ++; } nIBV = l; } void SessionDestroyModule_ICONBAR (wcsession *sess) { if (sess->IBSettingsVec != NULL) free(sess->IBSettingsVec); } webcit-8.24-dfsg.orig/calendar_view.c0000644000175000017500000013070512271477123017355 0ustar michaelmichael/* * Handles the HTML display of calendar items. * * Copyright (c) 1996-2012 by the citadel.org team * * This program is open source software. You can redistribute it and/or * modify it under the terms of the GNU General Public License, version 3. * * This program 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. */ #include "webcit.h" #include "webserver.h" #include "calendar.h" /* These define how high the hour rows are in the day view */ #define TIMELINE 30 #define EXTRATIMELINE (TIMELINE / 2) void embeddable_mini_calendar(int year, int month) { struct tm starting_tm; struct tm tm; time_t thetime; int i; time_t previous_month; time_t next_month; time_t colheader_time; struct tm colheader_tm; char colheader_label[32]; long weekstart = 0; char url[256]; char div_id[256]; snprintf(div_id, sizeof div_id, "mini_calendar_%d", rand() ); /* Determine what day to start. If an impossible value is found, start on Sunday. */ get_pref_long("weekstart", &weekstart, 17); if (weekstart > 6) weekstart = 0; /* * Now back up to the 1st of the month... */ memset(&starting_tm, 0, sizeof(struct tm)); starting_tm.tm_year = year - 1900; starting_tm.tm_mon = month - 1; starting_tm.tm_mday = 1; thetime = mktime(&starting_tm); memcpy(&tm, &starting_tm, sizeof(struct tm)); while (tm.tm_mday != 1) { thetime = thetime - (time_t)86400; /* go back 24 hours */ localtime_r(&thetime, &tm); } /* Determine previous and next months ... for links */ previous_month = thetime - (time_t)864000L; /* back 10 days */ next_month = thetime + (time_t)(31L * 86400L); /* ahead 31 days */ /* Now back up until we're on the user's preferred start day */ localtime_r(&thetime, &tm); while (tm.tm_wday != weekstart) { thetime = thetime - (time_t)86400; /* go back 24 hours */ localtime_r(&thetime, &tm); } wc_printf("
    \n", div_id); /* Previous month link */ localtime_r(&previous_month, &tm); wc_printf("«", (int)(tm.tm_year)+1900, tm.tm_mon + 1); wc_strftime(colheader_label, sizeof colheader_label, "%B", &starting_tm); wc_printf("  " "" "%s %d" "" "  ", colheader_label, year); /* Next month link */ localtime_r(&next_month, &tm); wc_printf("»", (int)(tm.tm_year)+1900, tm.tm_mon + 1); wc_printf("" ""); colheader_time = thetime; for (i=0; i<7; ++i) { colheader_time = thetime + (i * 86400) ; localtime_r(&colheader_time, &colheader_tm); wc_strftime(colheader_label, sizeof colheader_label, "%A", &colheader_tm); wc_printf("", colheader_label[0]); } wc_printf("\n"); /* Now do 35 or 42 days */ for (i = 0; i < 42; ++i) { localtime_r(&thetime, &tm); if (i < 35) { /* Before displaying Sunday, start a new row */ if ((i % 7) == 0) { wc_printf(""); } if (tm.tm_mon == month-1) { snprintf(url, sizeof url, "readfwd?calview=day?year=%d?month=%d?day=%d", tm.tm_year+1900, tm.tm_mon+1, tm.tm_mday); wc_printf("", url, tm.tm_mday); } else { wc_printf(""); } /* After displaying one week, end the row */ if ((i % 7) == 6) { wc_printf("\n"); } } thetime += (time_t)86400; /* ahead 24 hours */ } wc_printf("
    %c
    %d
    " /* end of inner table */ "
    \n"); StrBufAppendPrintf(WC->trailing_javascript, " function minical_change_month(year, month) { \n" " p = 'year=' + year + '&month=' + month \n" " + '&r=' + CtdlRandomString(); \n" " new Ajax.Updater('%s', 'mini_calendar', \n" " { method: 'get', parameters: p, evalScripts: true } ); \n" " } \n" "", div_id ); } /* * ajax embedder for the above mini calendar */ void ajax_mini_calendar(void) { embeddable_mini_calendar( ibstr("year"), ibstr("month")); } /* * Display one day of a whole month view of a calendar */ void calendar_month_view_display_events(int year, int month, int day) { long hklen; const char *HashKey; void *vCal; HashPos *Pos; disp_cal *Cal; icalproperty *p = NULL; icalproperty *q = NULL; struct icaltimetype t; struct icaltimetype end_t; struct icaltimetype today_start_t; struct icaltimetype today_end_t; struct icaltimetype today_t; struct tm starting_tm; struct tm ending_tm; int all_day_event = 0; int show_event = 0; char buf[256]; wcsession *WCC = WC; time_t tt; if (GetCount(WCC->disp_cal_items) == 0) { wc_printf("
    \n"); return; } /* * Create an imaginary event which spans the 24 hours of today. Any events which * overlap with this one take place at least partially in this day. We have to * convert it from a struct tm in order to make it UTC. */ memset(&starting_tm, 0, sizeof(struct tm)); starting_tm.tm_year = year - 1900; starting_tm.tm_mon = month - 1; starting_tm.tm_mday = day; starting_tm.tm_hour = 0; starting_tm.tm_min = 0; today_start_t = icaltime_from_timet_with_zone(mktime(&starting_tm), 0, icaltimezone_get_utc_timezone()); today_start_t.is_utc = 1; memset(&ending_tm, 0, sizeof(struct tm)); ending_tm.tm_year = year - 1900; ending_tm.tm_mon = month - 1; ending_tm.tm_mday = day; ending_tm.tm_hour = 23; ending_tm.tm_min = 59; today_end_t = icaltime_from_timet_with_zone(mktime(&ending_tm), 0, icaltimezone_get_utc_timezone()); today_end_t.is_utc = 1; /* * Create another one without caring about the timezone for all day events. */ today_t = icaltime_null_date(); today_t.year = year; today_t.month = month; today_t.day = day; /* * Now loop through our list of events to see which ones occur today. */ Pos = GetNewHashPos(WCC->disp_cal_items, 0); while (GetNextHashPos(WCC->disp_cal_items, Pos, &hklen, &HashKey, &vCal)) { Cal = (disp_cal*)vCal; all_day_event = 0; q = icalcomponent_get_first_property(Cal->cal, ICAL_DTSTART_PROPERTY); if (q != NULL) { t = icalproperty_get_dtstart(q); } else { memset(&t, 0, sizeof t); } q = icalcomponent_get_first_property(Cal->cal, ICAL_DTEND_PROPERTY); if (q != NULL) { end_t = icalproperty_get_dtend(q); } else { memset(&end_t, 0, sizeof end_t); } if (t.is_date) all_day_event = 1; if (all_day_event) { show_event = ical_ctdl_is_overlap(t, end_t, today_t, icaltime_null_time()); } else { show_event = ical_ctdl_is_overlap(t, end_t, today_start_t, today_end_t); } /* * If we determined that this event occurs today, then display it. */ if (show_event) { /* time_t logtt = icaltime_as_timet(t); syslog(LOG_DEBUG, "Match on %04d-%02d-%02d for event %x%s on %s", year, month, day, (int)Cal, ((all_day_event) ? " (all day)" : ""), ctime(&logtt) ); */ p = icalcomponent_get_first_property(Cal->cal, ICAL_SUMMARY_PROPERTY); if (p == NULL) { p = icalproperty_new_summary(_("Untitled Event")); icalcomponent_add_property(Cal->cal, p); } if (p != NULL) { if (all_day_event) { wc_printf("" "
    " ); } wc_printf("" "" , (Cal->unread)?"_unread":"_read", Cal->cal_msgnum, year, month, day ); escputs((char *) icalproperty_get_comment(p)); wc_printf(""); wc_printf("%s: %s
    ", _("From"), Cal->from); wc_printf("%s ", _("Summary:")); escputs((char *)icalproperty_get_comment(p)); wc_printf("
    "); q = icalcomponent_get_first_property( Cal->cal, ICAL_LOCATION_PROPERTY); if (q) { wc_printf("%s ", _("Location:")); escputs((char *)icalproperty_get_comment(q)); wc_printf("
    "); } /* * Only show start/end times if we're actually looking at the VEVENT * component. Otherwise it shows bogus dates for e.g. timezones */ if (icalcomponent_isa(Cal->cal) == ICAL_VEVENT_COMPONENT) { q = icalcomponent_get_first_property(Cal->cal, ICAL_DTSTART_PROPERTY); if (q != NULL) { int no_end = 0; t = icalproperty_get_dtstart(q); q = icalcomponent_get_first_property(Cal->cal, ICAL_DTEND_PROPERTY); if (q != NULL) { end_t = icalproperty_get_dtend(q); } else { /* * events with starting date/time equal * ending date/time might get only * DTSTART but no DTEND */ no_end = 1; } if (t.is_date) { /* all day event */ struct tm d_tm; if (!no_end) { /* end given, have to adjust it */ icaltime_adjust(&end_t, -1, 0, 0, 0); } memset(&d_tm, 0, sizeof d_tm); d_tm.tm_year = t.year - 1900; d_tm.tm_mon = t.month - 1; d_tm.tm_mday = t.day; wc_strftime(buf, sizeof buf, "%x", &d_tm); if (no_end || !icaltime_compare(t, end_t)) { wc_printf("%s %s
    ", _("Date:"), buf); } else { wc_printf("%s %s
    ", _("Starting date:"), buf); d_tm.tm_year = end_t.year - 1900; d_tm.tm_mon = end_t.month - 1; d_tm.tm_mday = end_t.day; wc_strftime(buf, sizeof buf, "%x", &d_tm); wc_printf("%s %s
    ", _("Ending date:"), buf); } } else { tt = icaltime_as_timet(t); webcit_fmt_date(buf, 256, tt, DATEFMT_BRIEF); if (no_end || !icaltime_compare(t, end_t)) { wc_printf("%s %s
    ", _("Date/time:"), buf); } else { wc_printf("%s %s
    ", _("Starting date/time:"), buf); tt = icaltime_as_timet(end_t); webcit_fmt_date(buf, 256, tt, DATEFMT_BRIEF); wc_printf("%s %s
    ", _("Ending date/time:"), buf); } } } } q = icalcomponent_get_first_property(Cal->cal, ICAL_DESCRIPTION_PROPERTY); if (q) { wc_printf("%s ", _("Notes:")); escputs((char *)icalproperty_get_comment(q)); wc_printf("
    "); } wc_printf("
    "); wc_printf("

    \n"); if (all_day_event) { wc_printf("
    "); } } } } DeleteHashPos(&Pos); } /* * Display one day of a whole month view of a calendar */ void calendar_month_view_brief_events(time_t thetime, const char *daycolor) { long hklen; const char *HashKey; void *vCal; HashPos *Pos; time_t event_tt; time_t event_tts; time_t event_tte; wcsession *WCC = WC; struct tm event_tms; struct tm event_tme; struct tm today_tm; icalproperty *p; icalproperty *e; struct icaltimetype t; disp_cal *Cal; int all_day_event = 0; char *timeformat; int time_format; time_format = get_time_format_cached (); if (time_format == WC_TIMEFORMAT_24) timeformat="%k:%M"; else timeformat="%I:%M %p"; localtime_r(&thetime, &today_tm); Pos = GetNewHashPos(WCC->disp_cal_items, 0); while (GetNextHashPos(WCC->disp_cal_items, Pos, &hklen, &HashKey, &vCal)) { Cal = (disp_cal*)vCal; p = icalcomponent_get_first_property(Cal->cal, ICAL_DTSTART_PROPERTY); if (p != NULL) { t = icalproperty_get_dtstart(p); event_tt = icaltime_as_timet(t); event_tts=event_tt; if (t.is_date) all_day_event = 1; else all_day_event = 0; if (all_day_event) { gmtime_r(&event_tts, &event_tms); } else { localtime_r(&event_tts, &event_tms); } /* \todo epoch &! daymask */ if ((event_tms.tm_year == today_tm.tm_year) && (event_tms.tm_mon == today_tm.tm_mon) && (event_tms.tm_mday == today_tm.tm_mday)) { char sbuf[255]; char ebuf[255]; p = icalcomponent_get_first_property( Cal->cal, ICAL_SUMMARY_PROPERTY); if (p == NULL) { p = icalproperty_new_summary(_("Untitled Event")); icalcomponent_add_property(Cal->cal, p); } e = icalcomponent_get_first_property( Cal->cal, ICAL_DTEND_PROPERTY); if ((p != NULL) && (e != NULL)) { time_t difftime; int hours, minutes; t = icalproperty_get_dtend(e); event_tte = icaltime_as_timet(t); localtime_r(&event_tte, &event_tme); difftime=(event_tte-event_tts)/60; hours=(int)(difftime / 60); minutes=difftime % 60; wc_printf("%i:%2i" "" "", daycolor, hours, minutes, (Cal->unread)?"_unread":"_read", daycolor, Cal->cal_msgnum, bstr("year"), bstr("month"), bstr("day") ); escputs((char *) icalproperty_get_comment(p)); /* \todo: allso ammitime format */ wc_strftime(&sbuf[0], sizeof(sbuf), timeformat, &event_tms); wc_strftime(&ebuf[0], sizeof(sbuf), timeformat, &event_tme); wc_printf("" "%s%s", daycolor, sbuf, daycolor, ebuf); } } } } DeleteHashPos(&Pos); } /* * view one month. pretty view */ void calendar_month_view(int year, int month, int day) { struct tm starting_tm; struct tm tm; struct tm today_tm; time_t thetime; int i; time_t previous_month; time_t next_month; time_t colheader_time; time_t today_timet; struct tm colheader_tm; char colheader_label[32]; long weekstart = 0; /* * Make sure we know which day is today. */ today_timet = time(NULL); localtime_r(&today_timet, &today_tm); /* * Determine what day to start. If an impossible value is found, start on Sunday. */ get_pref_long("weekstart", &weekstart, 17); if (weekstart > 6) weekstart = 0; /* * Now back up to the 1st of the month... */ memset(&starting_tm, 0, sizeof(struct tm)); starting_tm.tm_year = year - 1900; starting_tm.tm_mon = month - 1; starting_tm.tm_mday = day; thetime = mktime(&starting_tm); memcpy(&tm, &starting_tm, sizeof(struct tm)); while (tm.tm_mday != 1) { thetime = thetime - (time_t)86400; /* go back 24 hours */ localtime_r(&thetime, &tm); } /* Determine previous and next months ... for links */ previous_month = thetime - (time_t)864000L; /* back 10 days */ next_month = thetime + (time_t)(31L * 86400L); /* ahead 31 days */ /* Now back up until we're on the user's preferred start day */ localtime_r(&thetime, &tm); while (tm.tm_wday != weekstart) { thetime = thetime - (time_t)86400; /* go back 24 hours */ localtime_r(&thetime, &tm); } /* Outer table (to get the background color) */ wc_printf(" \n
    "); wc_printf("\n"); wc_printf("
    "); localtime_r(&previous_month, &tm); wc_printf("", (int)(tm.tm_year)+1900, tm.tm_mon + 1); wc_printf("\"%s\"\n", _("previous")); wc_strftime(colheader_label, sizeof colheader_label, "%B", &starting_tm); wc_printf("  " "" "%s %d" "" "  ", colheader_label, year); localtime_r(&next_month, &tm); wc_printf("", (int)(tm.tm_year)+1900, tm.tm_mon + 1); wc_printf("\"%s\"\n", _("next")); wc_printf("
    \n"); /* Inner table (the real one) */ wc_printf(""); wc_printf(""); colheader_time = thetime; for (i=0; i<7; ++i) { colheader_time = thetime + (i * 86400) ; localtime_r(&colheader_time, &colheader_tm); wc_strftime(colheader_label, sizeof colheader_label, "%A", &colheader_tm); wc_printf("", colheader_label); } wc_printf("\n"); /* Now do 35 or 42 days */ localtime_r(&thetime, &tm); for (i = 0; i<42; ++i) { /* Before displaying the first day of the week, start a new row */ if ((i % 7) == 0) { wc_printf(""); /* After displaying the last day of the week, end the row */ if ((i % 7) == 6) { wc_printf("\n"); } thetime += (time_t)86400; /* ahead 24 hours */ localtime_r(&thetime, &tm); if ( ((i % 7) == 6) && (tm.tm_mon != month-1) && (tm.tm_mday < 15) ) { i = 100; /* break out of the loop */ } } wc_printf("
    " "%s
    "); wc_strftime(colheader_label, sizeof colheader_label, "%V", &tm); wc_printf("%s ", colheader_label); } wc_printf("
    ", ((tm.tm_mon != month-1) ? "out" : (((tm.tm_year == today_tm.tm_year) && (tm.tm_mon == today_tm.tm_mon) && (tm.tm_mday == today_tm.tm_mday)) ? "today" : ((tm.tm_wday==0 || tm.tm_wday==6) ? "weekend" : "day"))) ); if ((i==0) || (tm.tm_mday == 1)) { wc_strftime(colheader_label, sizeof colheader_label, "%B", &tm); wc_printf("%s ", colheader_label); } wc_printf("" "%d
    ", tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday, tm.tm_mday); /* put the data here, stupid */ calendar_month_view_display_events( tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday ); wc_printf("
    " /* end of inner table */ "
    \n" /* end of outer table */ ); } /* * view one month. brief view */ void calendar_brief_month_view(int year, int month, int day) { struct tm starting_tm; struct tm tm; time_t thetime; int i; time_t previous_month; time_t next_month; char month_label[32]; /* Determine what day to start. * First, back up to the 1st of the month... */ memset(&starting_tm, 0, sizeof(struct tm)); starting_tm.tm_year = year - 1900; starting_tm.tm_mon = month - 1; starting_tm.tm_mday = day; thetime = mktime(&starting_tm); memcpy(&tm, &starting_tm, sizeof(struct tm)); while (tm.tm_mday != 1) { thetime = thetime - (time_t)86400; /* go back 24 hours */ localtime_r(&thetime, &tm); } /* Determine previous and next months ... for links */ previous_month = thetime - (time_t)864000L; /* back 10 days */ next_month = thetime + (time_t)(31L * 86400L); /* ahead 31 days */ /* Now back up until we're on a Sunday */ localtime_r(&thetime, &tm); while (tm.tm_wday != 0) { thetime = thetime - (time_t)86400; /* go back 24 hours */ localtime_r(&thetime, &tm); } /* Outer table (to get the background color) */ wc_printf("
    \n"); wc_printf("\n"); wc_printf("
    "); localtime_r(&previous_month, &tm); wc_printf("", (int)(tm.tm_year)+1900, tm.tm_mon + 1); wc_printf("\"%s\"\n", _("previous")); wc_strftime(month_label, sizeof month_label, "%B", &tm); wc_printf("  " "" "%s %d" "" "  ", month_label, year); localtime_r(&next_month, &tm); wc_printf("", (int)(tm.tm_year)+1900, tm.tm_mon + 1); wc_printf("\"%s\"\n", _("next")); wc_printf("
    \n"); /* Inner table (the real one) */ wc_printf(""); wc_printf("\n"); wc_printf("
    \n"); /* Now do 35 days */ for (i = 0; i < 35; ++i) { char weeknumber[255]; char weekday_name[32]; char *daycolor; localtime_r(&thetime, &tm); /* Before displaying Sunday, start a new CELL */ if ((i % 7) == 0) { wc_strftime(&weeknumber[0], sizeof(weeknumber), "%U", &tm); wc_printf("" " \n", _("Week"), weeknumber, _("Hours"), _("Subject"), _("Start"), _("End") ); } daycolor=((tm.tm_mon != month-1) ? "DDDDDD" : ((tm.tm_wday==0 || tm.tm_wday==6) ? "EEEECC" : "FFFFFF")); /* Day Header */ wc_strftime(weekday_name, sizeof weekday_name, "%A", &tm); wc_printf("\n", daycolor, weekday_name,tm.tm_mday, daycolor); /* put the data of one day here, stupid */ calendar_month_view_brief_events(thetime, daycolor); /* After displaying Saturday, end the row */ if ((i % 7) == 6) { wc_printf("
    %s %s
    %s%s%s%s
    %s,%i." "
    \n"); } thetime += (time_t)86400; /* ahead 24 hours */ } wc_printf("
    " /* end of inner table */ "
    \n" /* end of outer table */ ); } /* * Calendar week view -- not implemented yet, this is a stub function */ void calendar_week_view(int year, int month, int day) { wc_printf("
    week view FIXME

    \n"); } /* * display one day * Display events for a particular hour of a particular day. * (Specify hour < 0 to show "all day" events) * * dstart and dend indicate which hours our "daytime" begins and end */ void calendar_day_view_display_events(time_t thetime, int year, int month, int day, int notime_events, int dstart, int dend) { long hklen; const char *HashKey; void *vCal; HashPos *Pos; icalproperty *p = NULL; icalproperty *q = NULL; time_t event_tt; time_t event_tte; struct tm event_te; struct tm event_tm; int show_event = 0; int all_day_event = 0; int ongoing_event = 0; wcsession *WCC = WC; disp_cal *Cal; struct icaltimetype t; struct icaltimetype end_t; struct icaltimetype today_start_t; struct icaltimetype today_end_t; struct icaltimetype today_t; struct tm starting_tm; struct tm ending_tm; int top = 0; int bottom = 0; int gap = 1; int startmin = 0; int diffmin = 0; int endmin = 0; char buf[256]; if (GetCount(WCC->disp_cal_items) == 0) { /* nothing to display */ return; } /* Create an imaginary event which spans the current day. Any events which * overlap with this one take place at least partially in this day. */ memset(&starting_tm, 0, sizeof(struct tm)); starting_tm.tm_year = year - 1900; starting_tm.tm_mon = month - 1; starting_tm.tm_mday = day; starting_tm.tm_hour = 0; starting_tm.tm_min = 0; today_start_t = icaltime_from_timet_with_zone(mktime(&starting_tm), 0, icaltimezone_get_utc_timezone()); today_start_t.is_utc = 1; memset(&ending_tm, 0, sizeof(struct tm)); ending_tm.tm_year = year - 1900; ending_tm.tm_mon = month - 1; ending_tm.tm_mday = day; ending_tm.tm_hour = 23; ending_tm.tm_min = 59; today_end_t = icaltime_from_timet_with_zone(mktime(&ending_tm), 0, icaltimezone_get_utc_timezone()); today_end_t.is_utc = 1; /* * Create another one without caring about the timezone for all day events. */ today_t = icaltime_null_date(); today_t.year = year; today_t.month = month; today_t.day = day; /* Now loop through our list of events to see which ones occur today. */ Pos = GetNewHashPos(WCC->disp_cal_items, 0); while (GetNextHashPos(WCC->disp_cal_items, Pos, &hklen, &HashKey, &vCal)) { Cal = (disp_cal*)vCal; all_day_event = 0; ongoing_event=0; q = icalcomponent_get_first_property(Cal->cal, ICAL_DTSTART_PROPERTY); if (q != NULL) { t = icalproperty_get_dtstart(q); event_tt = icaltime_as_timet(t); localtime_r(&event_tt, &event_te); } else { memset(&t, 0, sizeof t); } if (t.is_date) all_day_event = 1; q = icalcomponent_get_first_property(Cal->cal, ICAL_DTEND_PROPERTY); if (q != NULL) { end_t = icalproperty_get_dtend(q); } else { /* no end given means end = start */ memcpy(&end_t, &t, sizeof(struct icaltimetype)); } if (all_day_event) { show_event = ical_ctdl_is_overlap(t, end_t, today_t, icaltime_null_time()); if (icaltime_compare(t, end_t)) { /* * the end date is non-inclusive so adjust it by one * day because our test is inclusive, note that a day is * not to much because we are talking about all day * events */ icaltime_adjust(&end_t, -1, 0, 0, 0); } } else { show_event = ical_ctdl_is_overlap(t, end_t, today_start_t, today_end_t); } event_tte = icaltime_as_timet(end_t); localtime_r(&event_tte, &event_tm); /* If we determined that this event occurs today, then display it. */ p = icalcomponent_get_first_property(Cal->cal,ICAL_SUMMARY_PROPERTY); if (p == NULL) { p = icalproperty_new_summary(_("Untitled Event")); icalcomponent_add_property(Cal->cal, p); } if ((show_event) && (p != NULL)) { if ((event_te.tm_mday != day) || (event_tm.tm_mday != day)) ongoing_event = 1; if (all_day_event && notime_events) { wc_printf("
  • " "" , (Cal->unread)?"_unread":"_read", Cal->cal_msgnum, year, month, day ); escputs((char *) icalproperty_get_comment(p)); wc_printf(""); wc_printf("%s
    ", _("All day event")); wc_printf("%s: %s
    ", _("From"), Cal->from); wc_printf("%s ", _("Summary:")); escputs((char *) icalproperty_get_comment(p)); wc_printf("
    "); q = icalcomponent_get_first_property(Cal->cal,ICAL_LOCATION_PROPERTY); if (q) { wc_printf("%s ", _("Location:")); escputs((char *)icalproperty_get_comment(q)); wc_printf("
    "); } if (!icaltime_compare(t, end_t)) { /* one day only */ webcit_fmt_date(buf, 256, event_tt, DATEFMT_LOCALEDATE); wc_printf("%s %s
    ", _("Date:"), buf); } else { webcit_fmt_date(buf, 256, event_tt, DATEFMT_LOCALEDATE); wc_printf("%s %s
    ", _("Starting date:"), buf); webcit_fmt_date(buf, 256, event_tte, DATEFMT_LOCALEDATE); wc_printf("%s %s
    ", _("Ending date:"), buf); } q = icalcomponent_get_first_property(Cal->cal,ICAL_DESCRIPTION_PROPERTY); if (q) { wc_printf("%s ", _("Notes:")); escputs((char *)icalproperty_get_comment(q)); wc_printf("
    "); } wc_printf("
    "); wc_printf("
    ("); wc_printf(_("All day event")); wc_printf(")
  • \n"); } else if (ongoing_event && notime_events) { wc_printf("
  • " "" , (Cal->unread)?"_unread":"_read", Cal->cal_msgnum, year, month, day ); escputs((char *) icalproperty_get_comment(p)); wc_printf(""); wc_printf("%s
    ", _("Ongoing event")); wc_printf("%s: %s
    ", _("From"), Cal->from); wc_printf("%s ", _("Summary:")); escputs((char *) icalproperty_get_comment(p)); wc_printf("
    "); q = icalcomponent_get_first_property(Cal->cal,ICAL_LOCATION_PROPERTY); if (q) { wc_printf("%s ", _("Location:")); escputs((char *)icalproperty_get_comment(q)); wc_printf("
    "); } webcit_fmt_date(buf, 256, event_tt, DATEFMT_BRIEF); wc_printf("%s %s
    ", _("Starting date/time:"), buf); webcit_fmt_date(buf, 256, event_tte, DATEFMT_BRIEF); wc_printf("%s %s
    ", _("Ending date/time:"), buf); q = icalcomponent_get_first_property(Cal->cal,ICAL_DESCRIPTION_PROPERTY); if (q) { wc_printf("%s ", _("Notes:")); escputs((char *)icalproperty_get_comment(q)); wc_printf("
    "); } wc_printf("
    "); wc_printf("
    ("); wc_printf(_("Ongoing event")); wc_printf(")
  • \n"); } else if (!all_day_event && !notime_events) { gap++; if (event_te.tm_mday != day) event_te.tm_hour = 0; if (event_tm.tm_mday != day) event_tm.tm_hour = 24; /* Calculate the location of the top of the box */ if (event_te.tm_hour < dstart) { startmin = diffmin = event_te.tm_min / 6; top = (event_te.tm_hour * EXTRATIMELINE) + startmin; } else if ((event_te.tm_hour >= dstart) && (event_te.tm_hour <= dend)) { startmin = diffmin = (event_te.tm_min / 2); top = (dstart * EXTRATIMELINE) + ((event_te.tm_hour - dstart) * TIMELINE) + startmin; } else if (event_te.tm_hour >dend) { startmin = diffmin = event_te.tm_min / 6; top = (dstart * EXTRATIMELINE) + ((dend - dstart - 1) * TIMELINE) + ((event_tm.tm_hour - dend + 1) * EXTRATIMELINE) + startmin ; } else { /* should never get here */ } /* Calculate the location of the bottom of the box */ if (event_tm.tm_hour < dstart) { endmin = diffmin = event_tm.tm_min / 6; bottom = (event_tm.tm_hour * EXTRATIMELINE) + endmin; } else if ((event_tm.tm_hour >= dstart) && (event_tm.tm_hour <= dend)) { endmin = diffmin = (event_tm.tm_min / 2); bottom = (dstart * EXTRATIMELINE) + ((event_tm.tm_hour - dstart) * TIMELINE) + endmin ; } else if (event_tm.tm_hour >dend) { endmin = diffmin = event_tm.tm_min / 6; bottom = (dstart * EXTRATIMELINE) + ((dend - dstart + 1) * TIMELINE) + ((event_tm.tm_hour - dend - 1) * EXTRATIMELINE) + endmin; } else { /* should never get here */ } wc_printf("
    ", (Cal->unread)?"_unread":"_read", top, (gap * 40), (bottom-top) ); wc_printf("" , Cal->cal_msgnum, year, month, day, t.hour ); escputs((char *) icalproperty_get_comment(p)); wc_printf(""); wc_printf("%s: %s
    ", _("From"), Cal->from); wc_printf("%s ", _("Summary:")); escputs((char *) icalproperty_get_comment(p)); wc_printf("
    "); q = icalcomponent_get_first_property(Cal->cal,ICAL_LOCATION_PROPERTY); if (q) { wc_printf("%s ", _("Location:")); escputs((char *)icalproperty_get_comment(q)); wc_printf("
    "); } if (!icaltime_compare(t, end_t)) { /* one day only */ webcit_fmt_date(buf, 256, event_tt, DATEFMT_BRIEF); wc_printf("%s %s
    ", _("Date/time:"), buf); } else { webcit_fmt_date(buf, 256, event_tt, DATEFMT_BRIEF); wc_printf("%s %s
    ", _("Starting date/time:"), buf); webcit_fmt_date(buf, 256, event_tte, DATEFMT_BRIEF); wc_printf("%s %s
    ", _("Ending date/time:"), buf); } q = icalcomponent_get_first_property(Cal->cal,ICAL_DESCRIPTION_PROPERTY); if (q) { wc_printf("%s ", _("Notes:")); escputs((char *)icalproperty_get_comment(q)); wc_printf("
    "); } wc_printf("
    "); wc_printf("
    \n"); } } } DeleteHashPos(&Pos); } /* * view one day */ void calendar_day_view(int year, int month, int day) { int hour; struct icaltimetype today, yesterday, tomorrow; long daystart; long dayend; struct tm d_tm; char d_str[160]; int time_format; time_t today_t; int timeline = TIMELINE; int extratimeline = EXTRATIMELINE; int gap = 0; int hourlabel; int extrahourlabel; time_format = get_time_format_cached (); get_pref_long("daystart", &daystart, 8); get_pref_long("dayend", &dayend, 17); /* when loading daystart/dayend, replace missing, corrupt, or impossible values with defaults */ if ((daystart < 0) || (dayend < 2) || (daystart >= 23) || (dayend > 23) || (dayend <= daystart)) { daystart = 9; dayend = 17; } /* Today's date */ memset(&d_tm, 0, sizeof d_tm); d_tm.tm_year = year - 1900; d_tm.tm_mon = month - 1; d_tm.tm_mday = day; today_t = mktime(&d_tm); /* Figure out the dates for "yesterday" and "tomorrow" links */ memset(&today, 0, sizeof(struct icaltimetype)); today.year = year; today.month = month; today.day = day; today.is_date = 1; memcpy(&yesterday, &today, sizeof(struct icaltimetype)); --yesterday.day; yesterday = icaltime_normalize(yesterday); memcpy(&tomorrow, &today, sizeof(struct icaltimetype)); ++tomorrow.day; tomorrow = icaltime_normalize(tomorrow); /* Inner table (the real one) */ wc_printf(" \n"); /* Innermost cell (contains hours etc.) */ wc_printf(""); /* end of innermost table */ /* Display extra events (start/end times not present or not today) in the middle column */ wc_printf(""); /* end extra on the middle */ wc_printf(""); /* end stuff-on-the-right */ wc_printf("
    "); wc_printf("
    "); /* Now the middle of the day... */ extrahourlabel = extratimeline - 2; hourlabel = extrahourlabel * 150 / 100; if (hourlabel > (timeline - 2)) hourlabel = timeline - 2; for (hour = 0; hour < daystart; ++hour) { /* could do HEIGHT=xx */ wc_printf("
    " "", /* TODO: what have these been used for? (hour * extratimeline ), extratimeline, extrahourlabel, */ year, month, day, hour ); if (time_format == WC_TIMEFORMAT_24) { wc_printf("%2d:00 ", hour); } else { wc_printf("%d:00%s ", ((hour == 0) ? 12 : (hour <= 12 ? hour : hour-12)), (hour < 12 ? "am" : "pm") ); } wc_printf("
    "); } gap = daystart * extratimeline; for (hour = daystart; hour <= dayend; ++hour) { /* could do HEIGHT=xx */ wc_printf("
    " "", /*TODO: what have these been used for? gap + ((hour - daystart) * timeline ), timeline, hourlabel, */ year, month, day, hour ); if (time_format == WC_TIMEFORMAT_24) { wc_printf("%2d:00 ", hour); } else { wc_printf("%d:00%s ", (hour <= 12 ? hour : hour-12), (hour < 12 ? "am" : "pm") ); } wc_printf("
    "); } gap = gap + ((dayend - daystart + 1) * timeline); for (hour = (dayend + 1); hour < 24; ++hour) { /* could do HEIGHT=xx */ wc_printf("
    " "", /*TODO: what have these been used for? gap + ((hour - dayend - 1) * extratimeline ), extratimeline, extrahourlabel, */ year, month, day, hour ); if (time_format == WC_TIMEFORMAT_24) { wc_printf("%2d:00 ", hour); } else { wc_printf("%d:00%s ", (hour <= 12 ? hour : hour-12), (hour < 12 ? "am" : "pm") ); } wc_printf("
    "); } /* Display events with start and end times on this day */ calendar_day_view_display_events(today_t, year, month, day, 0, daystart, dayend); wc_printf("
    "); wc_printf("
    "); wc_printf("
      "); /* Display all-day events */ calendar_day_view_display_events(today_t, year, month, day, 1, daystart, dayend); wc_printf("
    "); wc_printf("
    "); /* begin stuff-on-the-right */ /* Begin todays-date-with-left-and-right-arrows */ wc_printf("\n"); wc_printf(""); /* Left arrow */ wc_printf(""); wc_strftime(d_str, sizeof d_str, "", &d_tm ); wc_printf("%s", d_str); /* Right arrow */ wc_printf(""); wc_printf("
    "); wc_printf("", yesterday.year, yesterday.month, yesterday.day); wc_printf("\"previous\""); wc_printf("" "%A
    " "%B
    " "%d
    " "%Y
    " "
    "); wc_printf("", tomorrow.year, tomorrow.month, tomorrow.day); wc_printf("\"%s\"\n", _("next")); wc_printf("
    \n"); /* End todays-date-with-left-and-right-arrows */ /* Embed a mini month calendar in this space */ wc_printf("
    \n"); embeddable_mini_calendar(year, month); wc_printf("
    \n"); /* end of inner table */ } /* * Display today's events. Returns the number of items displayed. */ int calendar_summary_view(void) { long hklen; const char *HashKey; void *vCal; HashPos *Pos; disp_cal *Cal; icalproperty *p; struct icaltimetype t; time_t event_tt; struct tm event_tm; struct tm today_tm; time_t now; int all_day_event = 0; char timestring[SIZ]; wcsession *WCC = WC; int num_displayed = 0; if (GetCount(WC->disp_cal_items) == 0) { return(0); } now = time(NULL); localtime_r(&now, &today_tm); Pos = GetNewHashPos(WCC->disp_cal_items, 0); while (GetNextHashPos(WCC->disp_cal_items, Pos, &hklen, &HashKey, &vCal)) { Cal = (disp_cal*)vCal; p = icalcomponent_get_first_property(Cal->cal, ICAL_DTSTART_PROPERTY); if (p != NULL) { t = icalproperty_get_dtstart(p); event_tt = icaltime_as_timet(t); if (t.is_date) { all_day_event = 1; } else { all_day_event = 0; } fmt_time(timestring, SIZ, event_tt); if (all_day_event) { gmtime_r(&event_tt, &event_tm); } else { localtime_r(&event_tt, &event_tm); } if ( (event_tm.tm_year == today_tm.tm_year) && (event_tm.tm_mon == today_tm.tm_mon) && (event_tm.tm_mday == today_tm.tm_mday) ) { p = icalcomponent_get_first_property(Cal->cal, ICAL_SUMMARY_PROPERTY); if (p == NULL) { p = icalproperty_new_summary(_("Untitled Task")); icalcomponent_add_property(Cal->cal, p); } if (p != NULL) { if (WCC->CurRoom.view == VIEW_TASKS) { wc_printf(""); } else { wc_printf(""); } escputs((char *) icalproperty_get_comment(p)); if (!all_day_event) { wc_printf(" (%s)", timestring); } wc_printf("
    \n"); ++num_displayed; } } } } DeleteHashPos(&Pos); DeleteHash(&WC->disp_cal_items); return(num_displayed); } /* * Parse the URL variables in order to determine the scope and display of a calendar view */ int calendar_GetParamsGetServerCall(SharedMessageStatus *Stat, void **ViewSpecific, long oper, char *cmd, long len, char *filter, long flen) { wcsession *WCC = WC; calview *c; time_t now; struct tm tm; char cv[32]; int span = 3888000; c = (calview*) malloc(sizeof(calview)); memset(c, 0, sizeof(calview)); *ViewSpecific = (void*)c; Stat->load_seen = 1; strcpy(cmd, "MSGS ALL"); Stat->maxmsgs = 32767; /* In case no date was specified, go with today */ now = time(NULL); localtime_r(&now, &tm); c->year = tm.tm_year + 1900; c->month = tm.tm_mon + 1; c->day = tm.tm_mday; /* Now see if a date was specified */ if (havebstr("year")) c->year = ibstr("year"); if (havebstr("month")) c->month = ibstr("month"); if (havebstr("day")) c->day = ibstr("day"); /* How would you like that cooked? */ if (havebstr("calview")) { strcpy(cv, bstr("calview")); } else { strcpy(cv, "month"); } /* Display the selected view */ if (!strcasecmp(cv, "day")) { c->view = calview_day; } else if (!strcasecmp(cv, "week")) { c->view = calview_week; } else if (!strcasecmp(cv, "summary")) { /* shouldn't ever happen, but just in case */ c->view = calview_day; } else { if (WCC->CurRoom.view == VIEW_CALBRIEF) { c->view = calview_brief; } else { c->view = calview_month; } } /* Now try and set the lower and upper bounds so that we don't * burn too many cpu cycles parsing data way in the past or future */ tm.tm_year = c->year - 1900; tm.tm_mon = c->month - 1; tm.tm_mday = c->day; now = mktime(&tm); if (c->view == calview_month) span = 3888000; if (c->view == calview_brief) span = 3888000; if (c->view == calview_week) span = 604800; if (c->view == calview_day) span = 86400; if (c->view == calview_summary) span = 86400; c->lower_bound = now - span; c->upper_bound = now + span; return 200; } /* * Render a calendar view from data previously loaded into memory */ int calendar_RenderView_or_Tail(SharedMessageStatus *Stat, void **ViewSpecific, long oper) { wcsession *WCC = WC; calview *c = (calview*) *ViewSpecific; if (c->view == calview_day) { calendar_day_view(c->year, c->month, c->day); } else if (c->view == calview_week) { calendar_week_view(c->year, c->month, c->day); } else { if (WCC->CurRoom.view == VIEW_CALBRIEF) { calendar_brief_month_view(c->year, c->month, c->day); } else { calendar_month_view(c->year, c->month, c->day); } } /* Free the in-memory list of calendar items */ DeleteHash(&WC->disp_cal_items); return 0; } void InitModule_CALENDAR_VIEW (void) { WebcitAddUrlHandler(HKEY("mini_calendar"), "", 0, ajax_mini_calendar, AJAX); } webcit-8.24-dfsg.orig/context_loop.c0000644000175000017500000005570112271477123017271 0ustar michaelmichael/* * This is the other half of the webserver. It handles the task of hooking * up HTTP requests with the sessions they belong to, using HTTP cookies to * keep track of things. If the HTTP request doesn't belong to any currently * active session, a new session is started. * * Copyright (c) 1996-2012 by the citadel.org team * * This program is open source software. You can redistribute it and/or * modify it under the terms of the GNU General Public License version 3. * * This program 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. */ #include "webcit.h" #include "webserver.h" #include "modules_init.h" /* Only one thread may manipulate SessionList at a time... */ pthread_mutex_t SessionListMutex; wcsession *SessionList = NULL; /* Linked list of all webcit sessions */ pthread_key_t MyConKey; /* TSD key for MySession() */ HashList *HttpReqTypes = NULL; HashList *HttpHeaderHandler = NULL; extern HashList *HandlerHash; /* the following two values start at 1 because the initial parent thread counts as one. */ int num_threads_existing = 1; /* Number of worker threads which exist. */ int num_threads_executing = 1; /* Number of worker threads currently executing. */ extern void session_loop(void); void spawn_another_worker_thread(void); void DestroyHttpHeaderHandler(void *V) { OneHttpHeader *pHdr; pHdr = (OneHttpHeader*) V; FreeStrBuf(&pHdr->Val); free(pHdr); } void shutdown_sessions(void) { wcsession *sptr; for (sptr = SessionList; sptr != NULL; sptr = sptr->next) { sptr->killthis = 1; } } void do_housekeeping(void) { wcsession *sptr, *ss; wcsession *sessions_to_kill = NULL; time_t the_time; /* * Lock the session list, moving any candidates for euthanasia into * a separate list. */ the_time = 0; CtdlLogResult(pthread_mutex_lock(&SessionListMutex)); for (sptr = SessionList; sptr != NULL; sptr = sptr->next) { if (the_time == 0) the_time = time(NULL); /* Kill idle sessions */ if ((sptr->inuse == 0) && ((the_time - (sptr->lastreq)) > (time_t) WEBCIT_TIMEOUT)) { syslog(LOG_DEBUG, "Timeout session %d", sptr->wc_session); sptr->killthis = 1; } /* Remove sessions flagged for kill */ if (sptr->killthis) { /* remove session from linked list */ if (sptr == SessionList) { SessionList = SessionList->next; } else for (ss=SessionList;ss!=NULL;ss=ss->next) { if (ss->next == sptr) { ss->next = ss->next->next; } } sptr->next = sessions_to_kill; sessions_to_kill = sptr; } } CtdlLogResult(pthread_mutex_unlock(&SessionListMutex)); /* * Now free up and destroy the culled sessions. */ while (sessions_to_kill != NULL) { syslog(LOG_DEBUG, "Destroying session %d", sessions_to_kill->wc_session); sptr = sessions_to_kill->next; session_destroy_modules(&sessions_to_kill); sessions_to_kill = sptr; } } /* * Check the size of our thread pool. If all threads are executing, spawn another. */ void check_thread_pool_size(void) { if (time_to_die) return; /* don't expand the thread pool during shutdown */ begin_critical_section(S_SPAWNER); /* only one of these should run at a time */ if ( (num_threads_executing >= num_threads_existing) && (num_threads_existing < MAX_WORKER_THREADS) ) { syslog(LOG_DEBUG, "%d of %d threads are executing. Adding another worker thread.", num_threads_executing, num_threads_existing ); spawn_another_worker_thread(); } end_critical_section(S_SPAWNER); } /* * Wake up occasionally and clean house */ void housekeeping_loop(void) { while (1) { sleeeeeeeeeep(HOUSEKEEPING); do_housekeeping(); } } /* * Create a Session id * Generate a unique WebCit session ID (which is not the same thing as the * Citadel session ID). */ int GenerateSessionID(void) { static int seq = (-1); if (seq < 0) { seq = (int) time(NULL); } return ++seq; } wcsession *FindSession(wcsession **wclist, ParsedHttpHdrs *Hdr, pthread_mutex_t *ListMutex) { wcsession *sptr = NULL; wcsession *TheSession = NULL; if (Hdr->HR.got_auth == AUTH_BASIC) { GetAuthBasic(Hdr); } CtdlLogResult(pthread_mutex_lock(ListMutex)); for (sptr = *wclist; ((sptr != NULL) && (TheSession == NULL)); sptr = sptr->next) { /* If HTTP-AUTH, look for a session with matching credentials */ switch (Hdr->HR.got_auth) { case AUTH_BASIC: if ( (!strcasecmp(ChrPtr(Hdr->c_username), ChrPtr(sptr->wc_username))) && (!strcasecmp(ChrPtr(Hdr->c_password), ChrPtr(sptr->wc_password))) && (sptr->killthis == 0) ) { syslog(LOG_DEBUG, "Matched a session with the same http-auth"); TheSession = sptr; } break; case AUTH_COOKIE: /* If cookie-session, look for a session with matching session ID */ if ( (Hdr->HR.desired_session != 0) && (sptr->wc_session == Hdr->HR.desired_session) ) { syslog(LOG_DEBUG, "Matched a session with the same cookie"); TheSession = sptr; } break; case NO_AUTH: /* Any unbound session is a candidate */ if ( (sptr->wc_session == 0) && (sptr->inuse == 0) ) { syslog(LOG_DEBUG, "Reusing an unbound session"); TheSession = sptr; } break; } } CtdlLogResult(pthread_mutex_unlock(ListMutex)); if (TheSession == NULL) { syslog(LOG_DEBUG, "No existing session was matched"); } return TheSession; } wcsession *CreateSession(int Lockable, int Static, wcsession **wclist, ParsedHttpHdrs *Hdr, pthread_mutex_t *ListMutex) { wcsession *TheSession; TheSession = (wcsession *) malloc(sizeof(wcsession)); memset(TheSession, 0, sizeof(wcsession)); TheSession->Hdr = Hdr; TheSession->serv_sock = (-1); TheSession->lastreq = time(NULL);; pthread_setspecific(MyConKey, (void *)TheSession); /* If we're recreating a session that expired, it's best to give it the same * session number that it had before. The client browser ought to pick up * the new session number and start using it, but in some rare situations it * doesn't, and that's a Bad Thing because it causes lots of spurious sessions * to get created. */ if (Hdr->HR.desired_session == 0) { TheSession->wc_session = GenerateSessionID(); syslog(LOG_DEBUG, "Created new session %d", TheSession->wc_session); } else { TheSession->wc_session = Hdr->HR.desired_session; syslog(LOG_DEBUG, "Re-created session %d", TheSession->wc_session); } Hdr->HR.Static = Static; session_new_modules(TheSession); if (Lockable) { pthread_mutex_init(&TheSession->SessionMutex, NULL); if (ListMutex != NULL) CtdlLogResult(pthread_mutex_lock(ListMutex)); if (wclist != NULL) { TheSession->nonce = rand(); TheSession->next = *wclist; *wclist = TheSession; } if (ListMutex != NULL) CtdlLogResult(pthread_mutex_unlock(ListMutex)); } return TheSession; } /* If it's a "force 404" situation then display the error and bail. */ void do_404(void) { hprintf("HTTP/1.1 404 Not found\r\n"); hprintf("Content-Type: text/plain\r\n"); wc_printf("Not found\r\n"); end_burst(); } int ReadHttpSubject(ParsedHttpHdrs *Hdr, StrBuf *Line, StrBuf *Buf) { const char *Args; void *vLine, *vHandler; const char *Pos = NULL; Hdr->HR.ReqLine = Line; /* The requesttype... GET, POST... */ StrBufExtract_token(Buf, Hdr->HR.ReqLine, 0, ' '); if (GetHash(HttpReqTypes, SKEY(Buf), &vLine) && (vLine != NULL)) { Hdr->HR.eReqType = *(long*)vLine; } else { Hdr->HR.eReqType = eGET; return 1; } StrBufCutLeft(Hdr->HR.ReqLine, StrLength(Buf) + 1); /* the HTTP Version... */ StrBufExtract_token(Buf, Hdr->HR.ReqLine, 1, ' '); StrBufCutRight(Hdr->HR.ReqLine, StrLength(Buf) + 1); if (StrLength(Buf) == 0) { Hdr->HR.eReqType = eGET; return 1; } StrBufAppendBuf(Hdr->this_page, Hdr->HR.ReqLine, 0); /* chop Filename / query arguments */ Args = strchr(ChrPtr(Hdr->HR.ReqLine), '?'); if (Args == NULL) /* whe're not that picky about params... TODO: this will spoil '&' in filenames.*/ Args = strchr(ChrPtr(Hdr->HR.ReqLine), '&'); if (Args != NULL) { Args ++; /* skip the ? */ StrBufPlain(Hdr->PlainArgs, Args, StrLength(Hdr->HR.ReqLine) - (Args - ChrPtr(Hdr->HR.ReqLine))); StrBufCutAt(Hdr->HR.ReqLine, 0, Args - 1); } /* don't parse them yet, maybe we don't even care... */ /* now lookup what we are going to do with this... */ /* skip first slash */ StrBufExtract_NextToken(Buf, Hdr->HR.ReqLine, &Pos, '/'); do { StrBufExtract_NextToken(Buf, Hdr->HR.ReqLine, &Pos, '/'); GetHash(HandlerHash, SKEY(Buf), &vHandler), Hdr->HR.Handler = (WebcitHandler*) vHandler; if (Hdr->HR.Handler == NULL) break; /* * If the request is prefixed by "/webcit" then chop that off. This * allows a front end web server to forward all /webcit requests to us * while still using the same web server port for other things. */ if ((Hdr->HR.Handler->Flags & URLNAMESPACE) != 0) continue; break; } while (1); /* remove the handlername from the URL */ if ((Pos != NULL) && (Pos != StrBufNOTNULL)){ StrBufCutLeft(Hdr->HR.ReqLine, Pos - ChrPtr(Hdr->HR.ReqLine)); } if (Hdr->HR.Handler != NULL) { if ((Hdr->HR.Handler->Flags & BOGUS) != 0) { return 1; } Hdr->HR.DontNeedAuth = ( ((Hdr->HR.Handler->Flags & ISSTATIC) != 0) || ((Hdr->HR.Handler->Flags & ANONYMOUS) != 0) ); } else { /* If this is a "flat" request for the root, display the configured landing page. */ int return_value; StrBuf *NewLine = NewStrBuf(); Hdr->HR.DontNeedAuth = 1; StrBufAppendPrintf(NewLine, "GET /landing?go=%s HTTP/1.0", ChrPtr(Buf)); syslog(LOG_DEBUG, "Replacing with: %s", ChrPtr(NewLine)); return_value = ReadHttpSubject(Hdr, NewLine, Buf); FreeStrBuf(&NewLine); return return_value; } return 0; } int AnalyseHeaders(ParsedHttpHdrs *Hdr) { OneHttpHeader *pHdr; void *vHdr; long HKLen; const char *HashKey; HashPos *at = GetNewHashPos(Hdr->HTTPHeaders, 0); while (GetNextHashPos(Hdr->HTTPHeaders, at, &HKLen, &HashKey, &vHdr) && (vHdr != NULL)) { pHdr = (OneHttpHeader *)vHdr; if (pHdr->HaveEvaluator) pHdr->H(pHdr->Val, Hdr); } DeleteHashPos(&at); return 0; } /*const char *nix(void *vptr) {return ChrPtr( (StrBuf*)vptr);}*/ /* * Read in the request */ int ReadHTTPRequest (ParsedHttpHdrs *Hdr) { const char *pch, *pchs, *pche; OneHttpHeader *pHdr; StrBuf *Line, *LastLine, *HeaderName; int nLine = 0; void *vF; int isbogus = 0; HeaderName = NewStrBuf(); LastLine = NULL; do { nLine ++; Line = NewStrBufPlain(NULL, SIZ / 4); if (ClientGetLine(Hdr, Line) < 0) return 1; if (StrLength(Line) == 0) { FreeStrBuf(&Line); continue; } if (nLine == 1) { Hdr->HTTPHeaders = NewHash(1, NULL); pHdr = (OneHttpHeader*) malloc(sizeof(OneHttpHeader)); memset(pHdr, 0, sizeof(OneHttpHeader)); pHdr->Val = Line; Put(Hdr->HTTPHeaders, HKEY("GET /"), pHdr, DestroyHttpHeaderHandler); syslog(LOG_DEBUG, "%s", ChrPtr(Line)); isbogus = ReadHttpSubject(Hdr, Line, HeaderName); if (isbogus) break; continue; } /* Do we need to Unfold? */ if ((LastLine != NULL) && (isspace(*ChrPtr(Line)))) { pch = pchs = ChrPtr(Line); pche = pchs + StrLength(Line); while (isspace(*pch) && (pch < pche)) pch ++; StrBufCutLeft(Line, pch - pchs); StrBufAppendBuf(LastLine, Line, 0); FreeStrBuf(&Line); continue; } StrBufSanitizeAscii(Line, ''); StrBufExtract_token(HeaderName, Line, 0, ':'); pchs = ChrPtr(Line); pche = pchs + StrLength(Line); pch = pchs + StrLength(HeaderName) + 1; pche = pchs + StrLength(Line); while ((pch < pche) && isspace(*pch)) pch ++; StrBufCutLeft(Line, pch - pchs); StrBufUpCase(HeaderName); pHdr = (OneHttpHeader*) malloc(sizeof(OneHttpHeader)); memset(pHdr, 0, sizeof(OneHttpHeader)); pHdr->Val = Line; if (GetHash(HttpHeaderHandler, SKEY(HeaderName), &vF) && (vF != NULL)) { OneHttpHeader *FHdr = (OneHttpHeader*) vF; pHdr->H = FHdr->H; pHdr->HaveEvaluator = 1; } Put(Hdr->HTTPHeaders, SKEY(HeaderName), pHdr, DestroyHttpHeaderHandler); LastLine = Line; } while (Line != NULL); FreeStrBuf(&HeaderName); return isbogus; } void OverrideRequest(ParsedHttpHdrs *Hdr, const char *Line, long len) { StrBuf *Buf = NewStrBuf(); if (Hdr->HR.ReqLine != NULL) { FlushStrBuf(Hdr->HR.ReqLine); StrBufPlain(Hdr->HR.ReqLine, Line, len); } else { Hdr->HR.ReqLine = NewStrBufPlain(Line, len); } ReadHttpSubject(Hdr, Hdr->HR.ReqLine, Buf); FreeStrBuf(&Buf); } /* * handle one request * * This loop gets called once for every HTTP connection made to WebCit. At * this entry point we have an HTTP socket with a browser allegedly on the * other end, but we have not yet bound to a WebCit session. * * The job of this function is to locate the correct session and bind to it, * or create a session if necessary and bind to it, then run the WebCit * transaction loop. Afterwards, we unbind from the session. When this * function returns, the worker thread is then free to handle another * transaction. */ void context_loop(ParsedHttpHdrs *Hdr) { int isbogus = 0; wcsession *TheSession; struct timeval tx_start; struct timeval tx_finish; int session_may_be_reused = 1; time_t now; gettimeofday(&tx_start, NULL); /* start a stopwatch for performance timing */ /* * Find out what it is that the web browser is asking for */ isbogus = ReadHTTPRequest(Hdr); Hdr->HR.dav_depth = 32767; /* TODO: find a general way to have non-0 defaults */ if (!isbogus) { isbogus = AnalyseHeaders(Hdr); } if ( (isbogus) || ((Hdr->HR.Handler != NULL) && ((Hdr->HR.Handler->Flags & BOGUS) != 0)) ) { wcsession *Bogus; Bogus = CreateSession(0, 1, NULL, Hdr, NULL); do_404(); syslog(LOG_WARNING, "HTTP: 404 [%ld.%06ld] %s %s", ((tx_finish.tv_sec*1000000 + tx_finish.tv_usec) - (tx_start.tv_sec*1000000 + tx_start.tv_usec)) / 1000000, ((tx_finish.tv_sec*1000000 + tx_finish.tv_usec) - (tx_start.tv_sec*1000000 + tx_start.tv_usec)) % 1000000, ReqStrs[Hdr->HR.eReqType], ChrPtr(Hdr->this_page) ); session_detach_modules(Bogus); session_destroy_modules(&Bogus); return; } if ((Hdr->HR.Handler != NULL) && ((Hdr->HR.Handler->Flags & ISSTATIC) != 0)) { wcsession *Static; Static = CreateSession(0, 1, NULL, Hdr, NULL); Hdr->HR.Handler->F(); /* How long did this transaction take? */ gettimeofday(&tx_finish, NULL); syslog(LOG_DEBUG, "HTTP: 200 [%ld.%06ld] %s %s", ((tx_finish.tv_sec*1000000 + tx_finish.tv_usec) - (tx_start.tv_sec*1000000 + tx_start.tv_usec)) / 1000000, ((tx_finish.tv_sec*1000000 + tx_finish.tv_usec) - (tx_start.tv_sec*1000000 + tx_start.tv_usec)) % 1000000, ReqStrs[Hdr->HR.eReqType], ChrPtr(Hdr->this_page) ); session_detach_modules(Static); session_destroy_modules(&Static); return; } if (Hdr->HR.got_auth == AUTH_BASIC) { CheckAuthBasic(Hdr); } if (Hdr->HR.got_auth) { session_may_be_reused = 0; } /* * See if there's an existing session open with any of: * - The desired Session ID * - A matching http-auth username and password * - An unbound session flagged as reusable */ TheSession = FindSession(&SessionList, Hdr, &SessionListMutex); /* * If there were no qualifying sessions, then create a new one. */ if ((TheSession == NULL) || (TheSession->killthis != 0)) { TheSession = CreateSession(1, 0, &SessionList, Hdr, &SessionListMutex); } /* * Reject transactions which require http-auth, if http-auth was not provided */ if ( (StrLength(Hdr->c_username) == 0) && (!Hdr->HR.DontNeedAuth) && (Hdr->HR.Handler != NULL) && ((XHTTP_COMMANDS & Hdr->HR.Handler->Flags) == XHTTP_COMMANDS) ) { syslog(LOG_DEBUG, "http-auth required but not provided"); OverrideRequest(Hdr, HKEY("GET /401 HTTP/1.0")); Hdr->HR.prohibit_caching = 1; } /* * A future improvement might be to check the session integrity * at this point before continuing. */ /* * Bind to the session and perform the transaction */ now = time(NULL);; CtdlLogResult(pthread_mutex_lock(&TheSession->SessionMutex)); pthread_setspecific(MyConKey, (void *)TheSession); TheSession->inuse = 1; /* mark the session as bound */ TheSession->lastreq = now; /* log */ TheSession->Hdr = Hdr; /* * If a language was requested via a cookie, select that language now. */ if (StrLength(Hdr->c_language) > 0) { syslog(LOG_DEBUG, "Session cookie requests language '%s'", ChrPtr(Hdr->c_language)); set_selected_language(ChrPtr(Hdr->c_language)); go_selected_language(); } /* * do the transaction */ session_attach_modules(TheSession); session_loop(); /* How long did this transaction take? */ gettimeofday(&tx_finish, NULL); syslog(LOG_INFO, "HTTP: 200 [%ld.%06ld] %s %s", ((tx_finish.tv_sec*1000000 + tx_finish.tv_usec) - (tx_start.tv_sec*1000000 + tx_start.tv_usec)) / 1000000, ((tx_finish.tv_sec*1000000 + tx_finish.tv_usec) - (tx_start.tv_sec*1000000 + tx_start.tv_usec)) % 1000000, ReqStrs[Hdr->HR.eReqType], ChrPtr(Hdr->this_page) ); session_detach_modules(TheSession); /* If *this* very transaction did not explicitly specify a session cookie, * and it did not log in, we want to flag the session as a candidate for * re-use by the next unbound client that comes along. This keeps our session * table from getting bombarded with new sessions when, for example, a web * spider crawls the site without using cookies. */ if ((session_may_be_reused) && (!TheSession->logged_in)) { TheSession->wc_session = 0; /* flag as available for re-use */ TheSession->selected_language = -1; /* clear any non-default language setting */ } TheSession->Hdr = NULL; TheSession->inuse = 0; /* mark the session as unbound */ CtdlLogResult(pthread_mutex_unlock(&TheSession->SessionMutex)); } void tmplput_nonce(StrBuf *Target, WCTemplputParams *TP) { wcsession *WCC = WC; StrBufAppendPrintf(Target, "%ld", (WCC != NULL)? WCC->nonce:0); } void tmplput_current_user(StrBuf *Target, WCTemplputParams *TP) { StrBufAppendTemplate(Target, TP, WC->wc_fullname, 0); } void Header_HandleContentLength(StrBuf *Line, ParsedHttpHdrs *hdr) { hdr->HR.ContentLength = StrToi(Line); } void Header_HandleContentType(StrBuf *Line, ParsedHttpHdrs *hdr) { hdr->HR.ContentType = Line; } void Header_HandleHost(StrBuf *Line, ParsedHttpHdrs *hdr) { if (hdr->HostHeader != NULL) { FreeStrBuf(&hdr->HostHeader); } hdr->HostHeader = NewStrBuf(); StrBufAppendPrintf(hdr->HostHeader, "%s://", (is_https ? "https" : "http") ); StrBufAppendBuf(hdr->HostHeader, Line, 0); } void Header_HandleXFFHost(StrBuf *Line, ParsedHttpHdrs *hdr) { if (!follow_xff) return; if (hdr->HostHeader != NULL) { FreeStrBuf(&hdr->HostHeader); } hdr->HostHeader = NewStrBuf(); StrBufAppendPrintf(hdr->HostHeader, "http://"); /* this is naive; do something about it */ StrBufAppendBuf(hdr->HostHeader, Line, 0); } void Header_HandleXFF(StrBuf *Line, ParsedHttpHdrs *hdr) { hdr->HR.browser_host = Line; while (StrBufNum_tokens(hdr->HR.browser_host, ',') > 1) { StrBufRemove_token(hdr->HR.browser_host, 0, ','); } StrBufTrim(hdr->HR.browser_host); } void Header_HandleIfModSince(StrBuf *Line, ParsedHttpHdrs *hdr) { hdr->HR.if_modified_since = httpdate_to_timestamp(Line); } void Header_HandleAcceptEncoding(StrBuf *Line, ParsedHttpHdrs *hdr) { /* * Can we compress? */ if (strstr(&ChrPtr(Line)[16], "gzip")) { hdr->HR.gzip_ok = 1; } } const char *ReqStrs[eNONE] = { "GET", "POST", "OPTIONS", "PROPFIND", "PUT", "DELETE", "HEAD", "MOVE", "COPY", "REPORT" }; void ServerStartModule_CONTEXT (void) { long *v; HttpReqTypes = NewHash(1, NULL); HttpHeaderHandler = NewHash(1, NULL); v = malloc(sizeof(long)); *v = eGET; Put(HttpReqTypes, HKEY("GET"), v, NULL); v = malloc(sizeof(long)); *v = ePOST; Put(HttpReqTypes, HKEY("POST"), v, NULL); v = malloc(sizeof(long)); *v = eOPTIONS; Put(HttpReqTypes, HKEY("OPTIONS"), v, NULL); v = malloc(sizeof(long)); *v = ePROPFIND; Put(HttpReqTypes, HKEY("PROPFIND"), v, NULL); v = malloc(sizeof(long)); *v = ePUT; Put(HttpReqTypes, HKEY("PUT"), v, NULL); v = malloc(sizeof(long)); *v = eDELETE; Put(HttpReqTypes, HKEY("DELETE"), v, NULL); v = malloc(sizeof(long)); *v = eHEAD; Put(HttpReqTypes, HKEY("HEAD"), v, NULL); v = malloc(sizeof(long)); *v = eMOVE; Put(HttpReqTypes, HKEY("MOVE"), v, NULL); v = malloc(sizeof(long)); *v = eCOPY; Put(HttpReqTypes, HKEY("COPY"), v, NULL); v = malloc(sizeof(long)); *v = eREPORT; Put(HttpReqTypes, HKEY("REPORT"), v, NULL); } void ServerShutdownModule_CONTEXT (void) { DeleteHash(&HttpReqTypes); DeleteHash(&HttpHeaderHandler); } void RegisterHeaderHandler(const char *Name, long Len, Header_Evaluator F) { OneHttpHeader *pHdr; pHdr = (OneHttpHeader*) malloc(sizeof(OneHttpHeader)); memset(pHdr, 0, sizeof(OneHttpHeader)); pHdr->H = F; Put(HttpHeaderHandler, Name, Len, pHdr, DestroyHttpHeaderHandler); } void InitModule_CONTEXT (void) { RegisterHeaderHandler(HKEY("CONTENT-LENGTH"), Header_HandleContentLength); RegisterHeaderHandler(HKEY("CONTENT-TYPE"), Header_HandleContentType); RegisterHeaderHandler(HKEY("X-FORWARDED-HOST"), Header_HandleXFFHost); /* Apache way... */ RegisterHeaderHandler(HKEY("X-REAL-IP"), Header_HandleXFFHost); /* NGinX way... */ RegisterHeaderHandler(HKEY("HOST"), Header_HandleHost); RegisterHeaderHandler(HKEY("X-FORWARDED-FOR"), Header_HandleXFF); RegisterHeaderHandler(HKEY("ACCEPT-ENCODING"), Header_HandleAcceptEncoding); RegisterHeaderHandler(HKEY("IF-MODIFIED-SINCE"), Header_HandleIfModSince); RegisterNamespace("CURRENT_USER", 0, 1, tmplput_current_user, NULL, CTX_NONE); RegisterNamespace("NONCE", 0, 0, tmplput_nonce, NULL, 0); WebcitAddUrlHandler(HKEY("404"), "", 0, do_404, ANONYMOUS|COOKIEUNNEEDED); /* * Look for commonly-found probes of malware such as worms, viruses, trojans, and Microsoft Office. * Short-circuit these requests so we don't have to send them through the full processing loop. */ WebcitAddUrlHandler(HKEY("scripts"), "", 0, do_404, ANONYMOUS|BOGUS); /* /root.exe - Worms and trojans and viruses, oh my! */ WebcitAddUrlHandler(HKEY("c"), "", 0, do_404, ANONYMOUS|BOGUS); /* /winnt */ WebcitAddUrlHandler(HKEY("MSADC"), "", 0, do_404, ANONYMOUS|BOGUS); WebcitAddUrlHandler(HKEY("_vti"), "", 0, do_404, ANONYMOUS|BOGUS); /* Broken Microsoft DAV implementation */ WebcitAddUrlHandler(HKEY("MSOffice"), "", 0, do_404, ANONYMOUS|BOGUS); /* Stoopid MSOffice thinks everyone is IIS */ WebcitAddUrlHandler(HKEY("nonexistenshit"), "", 0, do_404, ANONYMOUS|BOGUS); /* Exploit found in the wild January 2009 */ } void HttpNewModule_CONTEXT (ParsedHttpHdrs *httpreq) { httpreq->PlainArgs = NewStrBufPlain(NULL, SIZ); httpreq->this_page = NewStrBufPlain(NULL, SIZ); } void HttpDetachModule_CONTEXT (ParsedHttpHdrs *httpreq) { FlushStrBuf(httpreq->PlainArgs); FlushStrBuf(httpreq->HostHeader); FlushStrBuf(httpreq->this_page); FlushStrBuf(httpreq->PlainArgs); DeleteHash(&httpreq->HTTPHeaders); memset(&httpreq->HR, 0, sizeof(HdrRefs)); } void HttpDestroyModule_CONTEXT (ParsedHttpHdrs *httpreq) { FreeStrBuf(&httpreq->this_page); FreeStrBuf(&httpreq->PlainArgs); FreeStrBuf(&httpreq->this_page); FreeStrBuf(&httpreq->PlainArgs); FreeStrBuf(&httpreq->HostHeader); DeleteHash(&httpreq->HTTPHeaders); } webcit-8.24-dfsg.orig/README.txt0000644000175000017500000003272312271477123016105 0ustar michaelmichael WEBCIT for the Citadel System Copyright (C) 1996-2012 by the authors. Portions written by: Art Cancro Wilfried Goesgens Dave West Thierry Pasquier Nathan Bryant Nick Grossman Andru Luvisi Alessandro Fulciniti Dave Lindquist Matt Pfleger Martin Mouritzen Stefan Garthe This program is open source software released under the terms of the GNU General Public License, version 3. Please read COPYING.txt for more licensing information. WebCit bundles the Prototype JavaScript Framework, writen by Sam Stephenson [http://prototype.conio.net]. These components are licensed to you under the terms of an MIT-style license. WebCit bundles the script.aculo.us JavaScript library, written by Thomas Fuchs [http://script.aculo.us, http://mir.aculo.us]. These components are licensed to you under the terms of an MIT-style license. WebCit bundles the TinyMCE text editor, written by Moxiecode Systems AB (http://tinymce.moxiecode.com/tinymce/docs/credits.html). This component is licensed to you under the terms of the GNU Lesser General Public License. Most of our Icons are taken from the "Essen" set by the people on http://pc.de/icons/. We like to thank them for their astonishing work! Their site explicitly states: "Free for commercial use as well." One or more icons are from Milosz Wlazlo [http://miloszwl.deviantart.com] whose license explicitly allows inclusion in open source projects on the condition of this attribution. WebCit bundles the CSS3PIE library [http://css3pie.com] which is offered under both the Apache license and the GNU General Public License. The Citadel logo was designed by Lisa Aurigemma. INTRODUCTION ------------ Citadel is a sophisticated groupware platform which allows multiple users to simultaneously access the system using a variety of user interfaces. This package (WebCit) is a web based front end and user interface to the Citadel system. What this means in practice is that after you've installed WebCit, users can access all functions of your system using any web browser. Since this may be the first Citadel experience for many new users, the screens have been designed to be attractive and easy to navigate. INSTALLATION ------------ Unlike some web-based packages, WebCit contains its own standalone HTTP engine. As a result, you can get it running quickly without all that tedious mucking about with Apache configuration files and directories. WebCit is not intended to be a general-purpose web server, however -- it *only* provides a front end to Citadel. If you do not have another web server running, you may run WebCit on port 80; however, if you have Apache or some other web server listening on port 80, you must run WebCit on another port. If you do not specify a port number, WebCit will bind to port 2000. To compile from source, enter the usual commands: ./configure --prefix=/usr/local/webcit [or whatever directory you prefer] make make install Package/Ports Maintainers: to make webcit fit smart into LHFS-ified systems read on at the end of this file, Advanced configure options. Then to initialize it: cd /usr/local/webcit ./setup After running setup, you just point your web browser to whatever port you specified, such as: http://your.host.name (or if you specified some other port, such as 2000 in this example...) http://your.host.name:2000 ...and log in. The included "setup" program is basically just an installation helper that asks a series of questions and then adds the appropriate init files to start WebCit. For most installations, this will do just fine. If you have special circumstances, or if you'd prefer to configure WebCit manually, you may skip the setup program. Instead, open /etc/inittab and add an entry something like this: wc:2345:respawn:/usr/local/webcit/webcit Several command-line options are also available. Here's the usage for the "webcit" program: webcit [-i ip_addr] [-p http_port] [-s] [-S cipher_suite] [-g guest_landing_page] [-c] [-f] [remotehost [remoteport]] *or* webcit [-i ip_addr] [-p http_port] [-s] [-S cipher_suite] [-g guest_landing_page] [-c] [-f] uds /your/citadel/directory Explained: -> ip_addr: the IP address on which you wish your WebCit server to run. You can leave this out, in which case WebCit will listen on all available network interfaces. Normally this will be the case, but if you are running multiple Citadel systems on one host, it can be useful. You can also use this option to run Apache and WebCit on different IP addresses instead of different ports, if you have them available. -> http_port: the TCP port on which you wish your WebCit server to run. If you are installing WebCit on a dedicated server, you can use the standard port 80. Otherwise, if port 80 is already occupied by some other web service (probably Apache), then you'll need to select a different port. If you do not specify a port number, WebCit will attempt to use port 80. -> The "guest landing page" is a location on your WebCit installation where unauthenticated guest users are taken when they first enter the root of your site. If guest mode is not enabled on your Citadel server, they will be taken to a login page instead. If guest mode is enabled but no landing page is defined, they will be taken to the Lobby. -> The "-c" option causes WebCit to output an extra cookie containing the identity of the WebCit server. The cookie will look like this: Set-cookie: wcserver=your.host.name This is useful if you have a cluster of WebCit servers sitting behind a load balancer, and the load balancer has the ability to use cookies to keep track of which server to send HTTP requests to. -> The "-s" option causes WebCit to present an HTTPS (SSL-encrypted) web service. If you want to do both HTTP and HTTPS, you can simply run two instances of WebCit on two different ports. -> The "-S" option also enables HTTPS, but must be followed by a list of cipher suites you wish to enable. Please see http://openssl.org/docs/apps/ciphers.html for a list of cipher strings. -> The "-f" option tells WebCit that it is allowed to follow the "X-Forwarded-For:" HTTP headers which may be added if your WebCit service is sitting behind a front end proxy. This will allow users in your "Who is online?" list to appear as connecting from their actual host address instead of the address of the proxy. In addition, the "X-Forwarded-Host:" header from the front end proxy will also be honored, which will help to make automatically generated absolute URL's (for things like GroupDAV and mailing list subscriptions) correct. -> remotehost: the name or IP address of the host on which your Citadel server is running. The default is "localhost". -> remoteport: the port number on which your Citadel server is running. The default is port 504, the IANA-designated standard port for Citadel. -> "uds" is a keyword which tells WebCit that you wish to connect to a Citadel server running on the same computer, rather than using a TCP/IP socket. /your/citadel/directory should be set to the actual name of the directory in which you have Citadel installed (such as /usr/local/citadel). If you run Citadel and WebCit on the same computer, this is recommended, as it will run much faster. GRAPHICS -------- WebCit contains graphics, templates, JavaScript code, etc. which are kept in its "static" subdirectory. All site-specific graphics, however, are fetched from the Citadel server. The "images" directory on a Citadel system contains these graphics. The ones which you may be interested in are: -> background.gif: a background texture displayed under all web pages -> hello.gif: your system's logo. It is displayed along with the logon banner, and on the top left corner of each page. If you would like to deploy a "favicon.ico" graphic, please put it in the static/ directory. WebCit will properly serve it from there. CUSTOMIZATION ------------- The default WebCit installation will create an empty directory called "static.local". In this directory you may place a file called "webcit.css" into the "styles" directory which, if present, is referenced *after* the default stylesheet. If you know CSS and wish to customize your WebCit installation, any styles you declare in static.local/styles/webcit.css will override the styles found in static/styles/webcit.css -- and your customizations will not be overwritten when you upgrade WebCit later. You may also place other files, such as images, in static.local for further customization. CALENDAR SERVICE ---------------- WebCit contains support for calendaring and scheduling. In order to use it you must have libical v0.26 (or newer) on your system. WebCit also provides iCalendar format free/busy data for calendar clients. Unlike with some other servers, there is no need for each user to "publish" free/busy data -- it is generated on-the-fly from the server-side calendar of the user being queried. HTTPS (encryption) SUPPORT -------------------------- WebCit now supports HTTPS for encrypted connections. When a secure server port is specified via the "-s" flag, an HTTPS service is enabled. The service will look in the "keys" directory for the following files: citadel.key (your server's private key) citadel.csr (a certificate signing request) citadel.cer (your server's public certificate) If any of these files are not found, WebCit will first attempt to link to the SSL files in the Citadel service's directory (if Citadel is running on the same host as WebCit), and if that does not succeed, it will automatically generate a key and certificate. It is up to you to decide whether to use an automatically generated, self-signed certificate, or purchase a certificate signed by a well known authority. INTEGRATING INTO APACHE ----------------------- It is best to run WebCit natively on its own HTTP port. If, however, you wish to have WebCit run as part of an Apache web server installation (for example, you only have one IP address and you need to stay on port 80 or 443 in order to maintain compatibility with corporate firewall policy), you can do this with the "mod_proxy" Apache module. The preferred way to do this is to configure a NameVirtualHost for your WebCit installation (for example, http://webcit.example.com) and then proxy that virtual host through to WebCit. The alternative way, which does work but is not quite as robust, is to "mount" the WebCit paths as directory aliases to your main document root. Here is how to configure the NameVirtualHost method (recommended) : #here some of your config stuff like logging, serveradmin... NameVirtualHost www.mydomain.com allow from all ProxyPass / http://127.0.0.1:2000/ ProxyPassReverse / http://127.0.0.1:2000/ # The following line is optional. It allows WebCit's static content # such as images to be served directly by Apache. alias /static /var/lib/citadel/www/static Here is how to configure the "subdirectory" method (not recommended) : #here some of your config stuff like logging, serveradmin... NameVirtualHost www.mydomain.com allow from all allow from all allow from all allow from all ProxyPass /webcit/ http://127.0.0.1:2000/webcit/ ProxyPassReverse /webcit/ http://127.0.0.1:2000/webcit/ ProxyPass /listsub/ http://127.0.0.1:2000/listsub/ ProxyPassReverse /listsub/ http://127.0.0.1:2000/listsub/ ProxyPass /groupdav/ http://127.0.0.1:2000/groupdav/ ProxyPassReverse /groupdav/ http://127.0.0.1:2000/groupdav/ ProxyPass /who_inner_html http://127.0.0.1:2000/who_inner_html ProxyPassReverse /who_inner_html http://127.0.0.1:2000/who_inner_html ADVANCED CONFIGURATION OPTIONS ------------------------------ If you are building packages and prefer not to have WebCit reside entirely in a single directory, there are several compile-time options available. --with-wwwdir defines where webcit should locate and search its templates and images. --with-localedir defines where to put webcits locale files. Also, there are possibilities to load the TinyMCE editor into a system-wide location. WebCit uses this standard component to compose its messages for messages and postings. Several WebCit installations that may differ in design but use the same TinyMCE (which is the default that WebCit ships with) (set --with-editordir for that, it defaults to the dir the templates go) Install targets have diversified to reflect these changes too: (make install-.....) locale: the webcit .mo files for gettext & locales. tinymce: the editor. if your system brings one, just ommit this. wwwdata: our templates. setupbin: if you want to use webcits setup facility... but isn't needed in case you provide own init & config scripts. bin: the binaries. CONCLUSION ---------- That's all you need to know to get started. If you have any questions or comments, visit the Citadel Support room on UNCENSORED! BBS, the home of Citadel: http://uncensored.citadel.org/dotgoto?room=Citadel%20Support webcit-8.24-dfsg.orig/locate_host.c0000644000175000017500000000203112271477123017044 0ustar michaelmichael/* * Given a socket, supply the name of the host at the other end. * * Copyright (c) 1996-2012 by the citadel.org team * * This program is open source software; you can redistribute it and/or modify * it under the terms of the GNU General Public License, version 3. * * This program 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. */ #include "webcit.h" #include "webserver.h" /* * IPv4/IPv6 locate_host() */ void locate_host(StrBuf *tbuf, int client_socket) { struct sockaddr_in6 clientaddr; unsigned int addrlen = sizeof(clientaddr); char clienthost[NI_MAXHOST] = ""; getpeername(client_socket, (struct sockaddr *)&clientaddr, &addrlen); getnameinfo((struct sockaddr *)&clientaddr, addrlen, clienthost, sizeof(clienthost), NULL, 0, 0); StrBufAppendBufPlain(tbuf, clienthost, -1, 0); syslog(LOG_DEBUG, "Client is at %s\n", clienthost); } webcit-8.24-dfsg.orig/decode.c0000644000175000017500000001772512271477123016003 0ustar michaelmichael/* * Copyright (c) 1996-2012 by the citadel.org team * * This program is open source software. You can redistribute it and/or * modify it under the terms of the GNU General Public License, version 3. * * This program 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. */ #include "webcit.h" #ifdef HAVE_ICONV /* * Wrapper around iconv_open() * Our version adds aliases for non-standard Microsoft charsets * such as 'MS950', aliasing them to names like 'CP950' * * tocode Target encoding * fromcode Source encoding * / iconv_t ctdl_iconv_open(const char *tocode, const char *fromcode) { iconv_t ic = (iconv_t)(-1) ; ic = iconv_open(tocode, fromcode); if (ic == (iconv_t)(-1) ) { char alias_fromcode[64]; if ( (strlen(fromcode) == 5) && (!strncasecmp(fromcode, "MS", 2)) ) { safestrncpy(alias_fromcode, fromcode, sizeof alias_fromcode); alias_fromcode[0] = 'C'; alias_fromcode[1] = 'P'; ic = iconv_open(tocode, alias_fromcode); } } return(ic); } */ static inline char *FindNextEnd (char *bptr) { char * end; /* Find the next ?Q? */ end = strchr(bptr + 2, '?'); if (end == NULL) return NULL; if (((*(end + 1) == 'B') || (*(end + 1) == 'Q')) && (*(end + 2) == '?')) { /* skip on to the end of the cluster, the next ?= */ end = strstr(end + 3, "?="); } else /* sort of half valid encoding, try to find an end. */ end = strstr(bptr, "?="); return end; } /* * Handle subjects with RFC2047 encoding such as: * =?koi8-r?B?78bP0s3Mxc7JxSDXz9rE1dvO2c3JINvB0sHNySDP?= */ void utf8ify_rfc822_string(char **buf) { char *start, *end, *next, *nextend, *ptr; char newbuf[1024]; char charset[128]; char encoding[16]; char istr[1024]; iconv_t ic = (iconv_t)(-1) ; char *ibuf; /* Buffer of characters to be converted */ char *obuf; /* Buffer for converted characters */ size_t ibuflen; /* Length of input buffer */ size_t obuflen; /* Length of output buffer */ char *isav; /* Saved pointer to input buffer */ char *osav; /* Saved pointer to output buffer */ int passes = 0; int i, len, delta; int illegal_non_rfc2047_encoding = 0; /* Sometimes, badly formed messages contain strings which were simply * written out directly in some foreign character set instead of * using RFC2047 encoding. This is illegal but we will attempt to * handle it anyway by converting from a user-specified default * charset to UTF-8 if we see any nonprintable characters. */ len = strlen(*buf); for (i=0; i 126)) { illegal_non_rfc2047_encoding = 1; i = len; /*< take a shortcut, it won't be more than one. */ } } if (illegal_non_rfc2047_encoding) { StrBuf *default_header_charset; get_preference("default_header_charset", &default_header_charset); if ( (strcasecmp(ChrPtr(default_header_charset), "UTF-8")) && (strcasecmp(ChrPtr(default_header_charset), "us-ascii")) ) { ctdl_iconv_open("UTF-8", ChrPtr(default_header_charset), &ic); if (ic != (iconv_t)(-1) ) { ibuf = malloc(1024); isav = ibuf; safestrncpy(ibuf, *buf, 1023); ibuflen = strlen(ibuf); obuflen = 1024; obuf = (char *) malloc(obuflen); osav = obuf; iconv(ic, &ibuf, &ibuflen, &obuf, &obuflen); osav[1023-obuflen] = 0; free(*buf); *buf = osav; iconv_close(ic); free(isav); } } } /* pre evaluate the first pair */ nextend = end = NULL; len = strlen(*buf); start = strstr(*buf, "=?"); if (start != NULL) end = FindNextEnd (start); while ((start != NULL) && (end != NULL)) { next = strstr(end, "=?"); if (next != NULL) nextend = FindNextEnd(next); if (nextend == NULL) next = NULL; /* did we find two partitions */ if ((next != NULL) && ((next - end) > 2)) { ptr = end + 2; while ((ptr < next) && (isspace(*ptr) || (*ptr == '\r') || (*ptr == '\n') || (*ptr == '\t'))) ptr ++; /* did we find a gab just filled with blanks? */ if (ptr == next) { memmove (end + 2, next, len - (next - start)); /* now terminate the gab at the end */ delta = (next - end) - 2; len -= delta; (*buf)[len] = '\0'; /* move next to its new location. */ next -= delta; nextend -= delta; } } /* our next-pair is our new first pair now. */ start = next; end = nextend; } /* Now we handle foreign character sets properly encoded * in RFC2047 format. */ while (start=strstr((*buf), "=?"), end=FindNextEnd((start != NULL)? start : (*buf)), ((start != NULL) && (end != NULL) && (end > start)) ) { extract_token(charset, start, 1, '?', sizeof charset); extract_token(encoding, start, 2, '?', sizeof encoding); extract_token(istr, start, 3, '?', sizeof istr); ibuf = malloc(1024); isav = ibuf; if (!strcasecmp(encoding, "B")) { /* base64 */ ibuflen = CtdlDecodeBase64(ibuf, istr, strlen(istr)); } else if (!strcasecmp(encoding, "Q")) { /* quoted-printable */ size_t len; long pos; len = strlen(istr); pos = 0; while (pos < len) { if (istr[pos] == '_') istr[pos] = ' '; pos++; } ibuflen = CtdlDecodeQuotedPrintable(ibuf, istr, len); } else { strcpy(ibuf, istr); /* unknown encoding */ ibuflen = strlen(istr); } ctdl_iconv_open("UTF-8", charset, &ic); if (ic != (iconv_t)(-1) ) { obuflen = 1024; obuf = (char *) malloc(obuflen); osav = obuf; iconv(ic, &ibuf, &ibuflen, &obuf, &obuflen); osav[1024-obuflen] = 0; end = start; end++; strcpy(start, ""); remove_token(end, 0, '?'); remove_token(end, 0, '?'); remove_token(end, 0, '?'); remove_token(end, 0, '?'); strcpy(end, &end[1]); snprintf(newbuf, sizeof newbuf, "%s%s%s", *buf, osav, end); strcpy(*buf, newbuf); free(osav); iconv_close(ic); } else { end = start; end++; strcpy(start, ""); remove_token(end, 0, '?'); remove_token(end, 0, '?'); remove_token(end, 0, '?'); remove_token(end, 0, '?'); strcpy(end, &end[1]); snprintf(newbuf, sizeof newbuf, "%s(unreadable)%s", *buf, end); strcpy(*buf, newbuf); } free(isav); /* * Since spammers will go to all sorts of absurd lengths to get their * messages through, there are LOTS of corrupt headers out there. * So, prevent a really badly formed RFC2047 header from throwing * this function into an infinite loop. */ ++passes; if (passes > 20) return; } } #else inline void utf8ify_rfc822_string(char **a){}; #endif /* * RFC2047-encode a header field if necessary. * If no non-ASCII characters are found, the string will be copied verbatim without encoding. * Returns encoded length; -1 if non success. * * target Target buffer. * maxlen Maximum size of target buffer. * source Source string to be encoded. * SourceLen Length of the source string */ int webcit_rfc2047encode(char *target, int maxlen, char *source, long SourceLen) { const char headerStr[] = "=?UTF-8?Q?"; int need_to_encode = 0; int i = 0; int len; unsigned char ch; if ((source == NULL) || (target == NULL) || (SourceLen > maxlen)) return -1; while ((!IsEmptyStr (&source[i])) && (need_to_encode == 0) && (i < SourceLen) ) { if (((unsigned char) source[i] < 32) || ((unsigned char) source[i] > 126)) { need_to_encode = 1; } i++; } if (!need_to_encode) { memcpy (target, source, SourceLen); target[SourceLen] = '\0'; return SourceLen; } if (sizeof (headerStr + SourceLen + 2) > maxlen) return -1; memcpy (target, headerStr, sizeof (headerStr)); len = sizeof (headerStr) - 1; for (i=0; (i < SourceLen) && (len + 3< maxlen) ; ++i) { ch = (unsigned char) source[i]; if ((ch < 32) || (ch > 126) || (ch == 61)) { sprintf(&target[len], "=%02X", ch); len += 3; } else { sprintf(&target[len], "%c", ch); len ++; } } if (len + 2 < maxlen) { strcat(&target[len], "?="); len +=2; return len; } else return -1; } webcit-8.24-dfsg.orig/config.sub0000755000175000017500000010532712271477123016373 0ustar michaelmichael#! /bin/sh # Configuration validation subroutine script. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, # 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, # 2011, 2012 Free Software Foundation, Inc. timestamp='2012-04-18' # This file is (in principle) common to ALL GNU software. # The presence of a machine in this file suggests that SOME GNU software # can handle that machine. It does not imply ALL GNU software can. # # This file 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 2 of the License, or # (at your option) any later version. # # This program 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. # # You should have received a copy of the GNU General Public License # along with this program; if not, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Please send patches to . Submit a context # diff and a properly formatted GNU ChangeLog entry. # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. # If it is invalid, we print an error message on stderr and exit with code 1. # Otherwise, we print the canonical config type on stdout and succeed. # You can get the latest version of this script from: # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases # that are meaningful with *any* GNU software. # Each package is responsible for reporting which valid configurations # it does not support. The user should be able to distinguish # a failure to support a valid configuration from a meaningless # configuration. # The goal of this file is to map all the various variations of a given # machine specification into a single specification in the form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or in some cases, the newer four-part form: # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # It is wrong to echo any other type of specification. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] CPU-MFR-OPSYS $0 [OPTION] ALIAS Canonicalize a configuration name. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.sub ($timestamp) Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" exit 1 ;; *local*) # First pass through any local machine types. echo $1 exit ;; * ) break ;; esac done case $# in 0) echo "$me: missing argument$help" >&2 exit 1;; 1) ;; *) echo "$me: too many arguments$help" >&2 exit 1;; esac # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). # Here we must recognize all the valid KERNEL-OS combinations. maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ knetbsd*-gnu* | netbsd*-gnu* | \ kopensolaris*-gnu* | \ storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` ;; android-linux) os=-linux-android basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown ;; *) basic_machine=`echo $1 | sed 's/-[^-]*$//'` if [ $basic_machine != $1 ] then os=`echo $1 | sed 's/.*-/-/'` else os=; fi ;; esac ### Let's recognize common machines as not being operating systems so ### that things like config.sub decstation-3100 work. We also ### recognize some manufacturers as not being operating systems, so we ### can provide default operating systems below. case $os in -sun*os*) # Prevent following clause from handling this invalid input. ;; -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ -apple | -axis | -knuth | -cray | -microblaze) os= basic_machine=$1 ;; -bluegene*) os=-cnk ;; -sim | -cisco | -oki | -wec | -winbond) os= basic_machine=$1 ;; -scout) ;; -wrs) os=-vxworks basic_machine=$1 ;; -chorusos*) os=-chorusos basic_machine=$1 ;; -chorusrdb) os=-chorusrdb basic_machine=$1 ;; -hiux*) os=-hiuxwe2 ;; -sco6) os=-sco5v6 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5) os=-sco3.2v5 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco4) os=-sco3.2v4 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2.[4-9]*) os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2v[4-9]*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5v6*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco*) os=-sco3.2v2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -udk*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -isc) os=-isc2.2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -clix*) basic_machine=clipper-intergraph ;; -isc*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -lynx*178) os=-lynxos178 ;; -lynx*5) os=-lynxos5 ;; -lynx*) os=-lynxos ;; -ptx*) basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` ;; -windowsnt*) os=`echo $os | sed -e 's/windowsnt/winnt/'` ;; -psos*) os=-psos ;; -mint | -mint[0-9]*) basic_machine=m68k-atari os=-mint ;; esac # Decode aliases for certain CPU-COMPANY combinations. case $basic_machine in # Recognize the basic CPU types without company name. # Some are omitted here because they have special meanings below. 1750a | 580 \ | a29k \ | aarch64 | aarch64_be \ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | am33_2.0 \ | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ | be32 | be64 \ | bfin \ | c4x | clipper \ | d10v | d30v | dlx | dsp16xx \ | epiphany \ | fido | fr30 | frv \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | hexagon \ | i370 | i860 | i960 | ia64 \ | ip2k | iq2000 \ | le32 | le64 \ | lm32 \ | m32c | m32r | m32rle | m68000 | m68k | m88k \ | maxq | mb | microblaze | mcore | mep | metag \ | mips | mipsbe | mipseb | mipsel | mipsle \ | mips16 \ | mips64 | mips64el \ | mips64octeon | mips64octeonel \ | mips64orion | mips64orionel \ | mips64r5900 | mips64r5900el \ | mips64vr | mips64vrel \ | mips64vr4100 | mips64vr4100el \ | mips64vr4300 | mips64vr4300el \ | mips64vr5000 | mips64vr5000el \ | mips64vr5900 | mips64vr5900el \ | mipsisa32 | mipsisa32el \ | mipsisa32r2 | mipsisa32r2el \ | mipsisa64 | mipsisa64el \ | mipsisa64r2 | mipsisa64r2el \ | mipsisa64sb1 | mipsisa64sb1el \ | mipsisa64sr71k | mipsisa64sr71kel \ | mipstx39 | mipstx39el \ | mn10200 | mn10300 \ | moxie \ | mt \ | msp430 \ | nds32 | nds32le | nds32be \ | nios | nios2 \ | ns16k | ns32k \ | open8 \ | or32 \ | pdp10 | pdp11 | pj | pjl \ | powerpc | powerpc64 | powerpc64le | powerpcle \ | pyramid \ | rl78 | rx \ | score \ | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ | sh64 | sh64le \ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ | spu \ | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ | ubicom32 \ | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ | we32k \ | x86 | xc16x | xstormy16 | xtensa \ | z8k | z80) basic_machine=$basic_machine-unknown ;; c54x) basic_machine=tic54x-unknown ;; c55x) basic_machine=tic55x-unknown ;; c6x) basic_machine=tic6x-unknown ;; m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip) basic_machine=$basic_machine-unknown os=-none ;; m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) ;; ms1) basic_machine=mt-unknown ;; strongarm | thumb | xscale) basic_machine=arm-unknown ;; xgate) basic_machine=$basic_machine-unknown os=-none ;; xscaleeb) basic_machine=armeb-unknown ;; xscaleel) basic_machine=armel-unknown ;; # We use `pc' rather than `unknown' # because (1) that's what they normally are, and # (2) the word "unknown" tends to confuse beginning users. i*86 | x86_64) basic_machine=$basic_machine-pc ;; # Object if more than one company name word. *-*-*) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; # Recognize the basic CPU types with company name. 580-* \ | a29k-* \ | aarch64-* | aarch64_be-* \ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | avr-* | avr32-* \ | be32-* | be64-* \ | bfin-* | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c4x-* \ | clipper-* | craynv-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ | elxsi-* \ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | hexagon-* \ | i*86-* | i860-* | i960-* | ia64-* \ | ip2k-* | iq2000-* \ | le32-* | le64-* \ | lm32-* \ | m32c-* | m32r-* | m32rle-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ | mips16-* \ | mips64-* | mips64el-* \ | mips64octeon-* | mips64octeonel-* \ | mips64orion-* | mips64orionel-* \ | mips64r5900-* | mips64r5900el-* \ | mips64vr-* | mips64vrel-* \ | mips64vr4100-* | mips64vr4100el-* \ | mips64vr4300-* | mips64vr4300el-* \ | mips64vr5000-* | mips64vr5000el-* \ | mips64vr5900-* | mips64vr5900el-* \ | mipsisa32-* | mipsisa32el-* \ | mipsisa32r2-* | mipsisa32r2el-* \ | mipsisa64-* | mipsisa64el-* \ | mipsisa64r2-* | mipsisa64r2el-* \ | mipsisa64sb1-* | mipsisa64sb1el-* \ | mipsisa64sr71k-* | mipsisa64sr71kel-* \ | mipstx39-* | mipstx39el-* \ | mmix-* \ | mt-* \ | msp430-* \ | nds32-* | nds32le-* | nds32be-* \ | nios-* | nios2-* \ | none-* | np1-* | ns16k-* | ns32k-* \ | open8-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ | pyramid-* \ | rl78-* | romp-* | rs6000-* | rx-* \ | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ | sparclite-* \ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \ | tahoe-* \ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ | tile*-* \ | tron-* \ | ubicom32-* \ | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ | vax-* \ | we32k-* \ | x86-* | x86_64-* | xc16x-* | xps100-* \ | xstormy16-* | xtensa*-* \ | ymp-* \ | z8k-* | z80-*) ;; # Recognize the basic CPU types without company name, with glob match. xtensa*) basic_machine=$basic_machine-unknown ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. 386bsd) basic_machine=i386-unknown os=-bsd ;; 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) basic_machine=m68000-att ;; 3b*) basic_machine=we32k-att ;; a29khif) basic_machine=a29k-amd os=-udi ;; abacus) basic_machine=abacus-unknown ;; adobe68k) basic_machine=m68010-adobe os=-scout ;; alliant | fx80) basic_machine=fx80-alliant ;; altos | altos3068) basic_machine=m68k-altos ;; am29k) basic_machine=a29k-none os=-bsd ;; amd64) basic_machine=x86_64-pc ;; amd64-*) basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; amdahl) basic_machine=580-amdahl os=-sysv ;; amiga | amiga-*) basic_machine=m68k-unknown ;; amigaos | amigados) basic_machine=m68k-unknown os=-amigaos ;; amigaunix | amix) basic_machine=m68k-unknown os=-sysv4 ;; apollo68) basic_machine=m68k-apollo os=-sysv ;; apollo68bsd) basic_machine=m68k-apollo os=-bsd ;; aros) basic_machine=i386-pc os=-aros ;; aux) basic_machine=m68k-apple os=-aux ;; balance) basic_machine=ns32k-sequent os=-dynix ;; blackfin) basic_machine=bfin-unknown os=-linux ;; blackfin-*) basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; bluegene*) basic_machine=powerpc-ibm os=-cnk ;; c54x-*) basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c55x-*) basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c6x-*) basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c90) basic_machine=c90-cray os=-unicos ;; cegcc) basic_machine=arm-unknown os=-cegcc ;; convex-c1) basic_machine=c1-convex os=-bsd ;; convex-c2) basic_machine=c2-convex os=-bsd ;; convex-c32) basic_machine=c32-convex os=-bsd ;; convex-c34) basic_machine=c34-convex os=-bsd ;; convex-c38) basic_machine=c38-convex os=-bsd ;; cray | j90) basic_machine=j90-cray os=-unicos ;; craynv) basic_machine=craynv-cray os=-unicosmp ;; cr16 | cr16-*) basic_machine=cr16-unknown os=-elf ;; crds | unos) basic_machine=m68k-crds ;; crisv32 | crisv32-* | etraxfs*) basic_machine=crisv32-axis ;; cris | cris-* | etrax*) basic_machine=cris-axis ;; crx) basic_machine=crx-unknown os=-elf ;; da30 | da30-*) basic_machine=m68k-da30 ;; decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) basic_machine=mips-dec ;; decsystem10* | dec10*) basic_machine=pdp10-dec os=-tops10 ;; decsystem20* | dec20*) basic_machine=pdp10-dec os=-tops20 ;; delta | 3300 | motorola-3300 | motorola-delta \ | 3300-motorola | delta-motorola) basic_machine=m68k-motorola ;; delta88) basic_machine=m88k-motorola os=-sysv3 ;; dicos) basic_machine=i686-pc os=-dicos ;; djgpp) basic_machine=i586-pc os=-msdosdjgpp ;; dpx20 | dpx20-*) basic_machine=rs6000-bull os=-bosx ;; dpx2* | dpx2*-bull) basic_machine=m68k-bull os=-sysv3 ;; ebmon29k) basic_machine=a29k-amd os=-ebmon ;; elxsi) basic_machine=elxsi-elxsi os=-bsd ;; encore | umax | mmax) basic_machine=ns32k-encore ;; es1800 | OSE68k | ose68k | ose | OSE) basic_machine=m68k-ericsson os=-ose ;; fx2800) basic_machine=i860-alliant ;; genix) basic_machine=ns32k-ns ;; gmicro) basic_machine=tron-gmicro os=-sysv ;; go32) basic_machine=i386-pc os=-go32 ;; h3050r* | hiux*) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; h8300hms) basic_machine=h8300-hitachi os=-hms ;; h8300xray) basic_machine=h8300-hitachi os=-xray ;; h8500hms) basic_machine=h8500-hitachi os=-hms ;; harris) basic_machine=m88k-harris os=-sysv3 ;; hp300-*) basic_machine=m68k-hp ;; hp300bsd) basic_machine=m68k-hp os=-bsd ;; hp300hpux) basic_machine=m68k-hp os=-hpux ;; hp3k9[0-9][0-9] | hp9[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k2[0-9][0-9] | hp9k31[0-9]) basic_machine=m68000-hp ;; hp9k3[2-9][0-9]) basic_machine=m68k-hp ;; hp9k6[0-9][0-9] | hp6[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k7[0-79][0-9] | hp7[0-79][0-9]) basic_machine=hppa1.1-hp ;; hp9k78[0-9] | hp78[0-9]) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[0-9][13679] | hp8[0-9][13679]) basic_machine=hppa1.1-hp ;; hp9k8[0-9][0-9] | hp8[0-9][0-9]) basic_machine=hppa1.0-hp ;; hppa-next) os=-nextstep3 ;; hppaosf) basic_machine=hppa1.1-hp os=-osf ;; hppro) basic_machine=hppa1.1-hp os=-proelf ;; i370-ibm* | ibm*) basic_machine=i370-ibm ;; i*86v32) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv32 ;; i*86v4*) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv4 ;; i*86v) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv ;; i*86sol2) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-solaris2 ;; i386mach) basic_machine=i386-mach os=-mach ;; i386-vsta | vsta) basic_machine=i386-unknown os=-vsta ;; iris | iris4d) basic_machine=mips-sgi case $os in -irix*) ;; *) os=-irix4 ;; esac ;; isi68 | isi) basic_machine=m68k-isi os=-sysv ;; m68knommu) basic_machine=m68k-unknown os=-linux ;; m68knommu-*) basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; m88k-omron*) basic_machine=m88k-omron ;; magnum | m3230) basic_machine=mips-mips os=-sysv ;; merlin) basic_machine=ns32k-utek os=-sysv ;; microblaze) basic_machine=microblaze-xilinx ;; mingw32) basic_machine=i386-pc os=-mingw32 ;; mingw32ce) basic_machine=arm-unknown os=-mingw32ce ;; miniframe) basic_machine=m68000-convergent ;; *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) basic_machine=m68k-atari os=-mint ;; mips3*-*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` ;; mips3*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown ;; monitor) basic_machine=m68k-rom68k os=-coff ;; morphos) basic_machine=powerpc-unknown os=-morphos ;; msdos) basic_machine=i386-pc os=-msdos ;; ms1-*) basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` ;; msys) basic_machine=i386-pc os=-msys ;; mvs) basic_machine=i370-ibm os=-mvs ;; nacl) basic_machine=le32-unknown os=-nacl ;; ncr3000) basic_machine=i486-ncr os=-sysv4 ;; netbsd386) basic_machine=i386-unknown os=-netbsd ;; netwinder) basic_machine=armv4l-rebel os=-linux ;; news | news700 | news800 | news900) basic_machine=m68k-sony os=-newsos ;; news1000) basic_machine=m68030-sony os=-newsos ;; news-3600 | risc-news) basic_machine=mips-sony os=-newsos ;; necv70) basic_machine=v70-nec os=-sysv ;; next | m*-next ) basic_machine=m68k-next case $os in -nextstep* ) ;; -ns2*) os=-nextstep2 ;; *) os=-nextstep3 ;; esac ;; nh3000) basic_machine=m68k-harris os=-cxux ;; nh[45]000) basic_machine=m88k-harris os=-cxux ;; nindy960) basic_machine=i960-intel os=-nindy ;; mon960) basic_machine=i960-intel os=-mon960 ;; nonstopux) basic_machine=mips-compaq os=-nonstopux ;; np1) basic_machine=np1-gould ;; neo-tandem) basic_machine=neo-tandem ;; nse-tandem) basic_machine=nse-tandem ;; nsr-tandem) basic_machine=nsr-tandem ;; op50n-* | op60c-*) basic_machine=hppa1.1-oki os=-proelf ;; openrisc | openrisc-*) basic_machine=or32-unknown ;; os400) basic_machine=powerpc-ibm os=-os400 ;; OSE68000 | ose68000) basic_machine=m68000-ericsson os=-ose ;; os68k) basic_machine=m68k-none os=-os68k ;; pa-hitachi) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; paragon) basic_machine=i860-intel os=-osf ;; parisc) basic_machine=hppa-unknown os=-linux ;; parisc-*) basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; pbd) basic_machine=sparc-tti ;; pbb) basic_machine=m68k-tti ;; pc532 | pc532-*) basic_machine=ns32k-pc532 ;; pc98) basic_machine=i386-pc ;; pc98-*) basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium | p5 | k5 | k6 | nexgen | viac3) basic_machine=i586-pc ;; pentiumpro | p6 | 6x86 | athlon | athlon_*) basic_machine=i686-pc ;; pentiumii | pentium2 | pentiumiii | pentium3) basic_machine=i686-pc ;; pentium4) basic_machine=i786-pc ;; pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumpro-* | p6-* | 6x86-* | athlon-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium4-*) basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pn) basic_machine=pn-gould ;; power) basic_machine=power-ibm ;; ppc | ppcbe) basic_machine=powerpc-unknown ;; ppc-* | ppcbe-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppcle | powerpclittle | ppc-le | powerpc-little) basic_machine=powerpcle-unknown ;; ppcle-* | powerpclittle-*) basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64) basic_machine=powerpc64-unknown ;; ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64le | powerpc64little | ppc64-le | powerpc64-little) basic_machine=powerpc64le-unknown ;; ppc64le-* | powerpc64little-*) basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ps2) basic_machine=i386-ibm ;; pw32) basic_machine=i586-unknown os=-pw32 ;; rdos) basic_machine=i386-pc os=-rdos ;; rom68k) basic_machine=m68k-rom68k os=-coff ;; rm[46]00) basic_machine=mips-siemens ;; rtpc | rtpc-*) basic_machine=romp-ibm ;; s390 | s390-*) basic_machine=s390-ibm ;; s390x | s390x-*) basic_machine=s390x-ibm ;; sa29200) basic_machine=a29k-amd os=-udi ;; sb1) basic_machine=mipsisa64sb1-unknown ;; sb1el) basic_machine=mipsisa64sb1el-unknown ;; sde) basic_machine=mipsisa32-sde os=-elf ;; sei) basic_machine=mips-sei os=-seiux ;; sequent) basic_machine=i386-sequent ;; sh) basic_machine=sh-hitachi os=-hms ;; sh5el) basic_machine=sh5le-unknown ;; sh64) basic_machine=sh64-unknown ;; sparclite-wrs | simso-wrs) basic_machine=sparclite-wrs os=-vxworks ;; sps7) basic_machine=m68k-bull os=-sysv2 ;; spur) basic_machine=spur-unknown ;; st2000) basic_machine=m68k-tandem ;; stratus) basic_machine=i860-stratus os=-sysv4 ;; strongarm-* | thumb-*) basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'` ;; sun2) basic_machine=m68000-sun ;; sun2os3) basic_machine=m68000-sun os=-sunos3 ;; sun2os4) basic_machine=m68000-sun os=-sunos4 ;; sun3os3) basic_machine=m68k-sun os=-sunos3 ;; sun3os4) basic_machine=m68k-sun os=-sunos4 ;; sun4os3) basic_machine=sparc-sun os=-sunos3 ;; sun4os4) basic_machine=sparc-sun os=-sunos4 ;; sun4sol2) basic_machine=sparc-sun os=-solaris2 ;; sun3 | sun3-*) basic_machine=m68k-sun ;; sun4) basic_machine=sparc-sun ;; sun386 | sun386i | roadrunner) basic_machine=i386-sun ;; sv1) basic_machine=sv1-cray os=-unicos ;; symmetry) basic_machine=i386-sequent os=-dynix ;; t3e) basic_machine=alphaev5-cray os=-unicos ;; t90) basic_machine=t90-cray os=-unicos ;; tile*) basic_machine=$basic_machine-unknown os=-linux-gnu ;; tx39) basic_machine=mipstx39-unknown ;; tx39el) basic_machine=mipstx39el-unknown ;; toad1) basic_machine=pdp10-xkl os=-tops20 ;; tower | tower-32) basic_machine=m68k-ncr ;; tpf) basic_machine=s390x-ibm os=-tpf ;; udi29k) basic_machine=a29k-amd os=-udi ;; ultra3) basic_machine=a29k-nyu os=-sym1 ;; v810 | necv810) basic_machine=v810-nec os=-none ;; vaxv) basic_machine=vax-dec os=-sysv ;; vms) basic_machine=vax-dec os=-vms ;; vpp*|vx|vx-*) basic_machine=f301-fujitsu ;; vxworks960) basic_machine=i960-wrs os=-vxworks ;; vxworks68) basic_machine=m68k-wrs os=-vxworks ;; vxworks29k) basic_machine=a29k-wrs os=-vxworks ;; w65*) basic_machine=w65-wdc os=-none ;; w89k-*) basic_machine=hppa1.1-winbond os=-proelf ;; xbox) basic_machine=i686-pc os=-mingw32 ;; xps | xps100) basic_machine=xps100-honeywell ;; xscale-* | xscalee[bl]-*) basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'` ;; ymp) basic_machine=ymp-cray os=-unicos ;; z8k-*-coff) basic_machine=z8k-unknown os=-sim ;; z80-*-coff) basic_machine=z80-unknown os=-sim ;; none) basic_machine=none-none os=-none ;; # Here we handle the default manufacturer of certain CPU types. It is in # some cases the only manufacturer, in others, it is the most popular. w89k) basic_machine=hppa1.1-winbond ;; op50n) basic_machine=hppa1.1-oki ;; op60c) basic_machine=hppa1.1-oki ;; romp) basic_machine=romp-ibm ;; mmix) basic_machine=mmix-knuth ;; rs6000) basic_machine=rs6000-ibm ;; vax) basic_machine=vax-dec ;; pdp10) # there are many clones, so DEC is not a safe bet basic_machine=pdp10-unknown ;; pdp11) basic_machine=pdp11-dec ;; we32k) basic_machine=we32k-att ;; sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) basic_machine=sh-unknown ;; sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) basic_machine=sparc-sun ;; cydra) basic_machine=cydra-cydrome ;; orion) basic_machine=orion-highlevel ;; orion105) basic_machine=clipper-highlevel ;; mac | mpw | mac-mpw) basic_machine=m68k-apple ;; pmac | pmac-mpw) basic_machine=powerpc-apple ;; *-unknown) # Make sure to match an already-canonicalized machine name. ;; *) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; esac # Here we canonicalize certain aliases for manufacturers. case $basic_machine in *-digital*) basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` ;; *-commodore*) basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` ;; *) ;; esac # Decode manufacturer-specific aliases for certain operating systems. if [ x"$os" != x"" ] then case $os in # First match some system type aliases # that might get confused with valid system types. # -solaris* is a basic system type, with this one exception. -auroraux) os=-auroraux ;; -solaris1 | -solaris1.*) os=`echo $os | sed -e 's|solaris1|sunos4|'` ;; -solaris) os=-solaris2 ;; -svr4*) os=-sysv4 ;; -unixware*) os=-sysv4.2uw ;; -gnu/linux*) os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` ;; # First accept the basic system types. # The portable systems comes first. # Each alternative MUST END IN A *, to match a version number. # -sysv* is not here because it comes later, after sysvr4. -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ | -sym* | -kopensolaris* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -aos* | -aros* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ | -openbsd* | -solidbsd* \ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -chorusos* | -chorusrdb* | -cegcc* \ | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -mingw32* | -linux-gnu* | -linux-android* \ | -linux-newlib* | -linux-uclibc* \ | -uxpv* | -beos* | -mpeix* | -udk* \ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) case $basic_machine in x86-* | i*86-*) ;; *) os=-nto$os ;; esac ;; -nto-qnx*) ;; -nto*) os=`echo $os | sed -e 's|nto|nto-qnx|'` ;; -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) ;; -mac*) os=`echo $os | sed -e 's|mac|macos|'` ;; -linux-dietlibc) os=-linux-dietlibc ;; -linux*) os=`echo $os | sed -e 's|linux|linux-gnu|'` ;; -sunos5*) os=`echo $os | sed -e 's|sunos5|solaris2|'` ;; -sunos6*) os=`echo $os | sed -e 's|sunos6|solaris3|'` ;; -opened*) os=-openedition ;; -os400*) os=-os400 ;; -wince*) os=-wince ;; -osfrose*) os=-osfrose ;; -osf*) os=-osf ;; -utek*) os=-bsd ;; -dynix*) os=-bsd ;; -acis*) os=-aos ;; -atheos*) os=-atheos ;; -syllable*) os=-syllable ;; -386bsd) os=-bsd ;; -ctix* | -uts*) os=-sysv ;; -nova*) os=-rtmk-nova ;; -ns2 ) os=-nextstep2 ;; -nsk*) os=-nsk ;; # Preserve the version number of sinix5. -sinix5.*) os=`echo $os | sed -e 's|sinix|sysv|'` ;; -sinix*) os=-sysv4 ;; -tpf*) os=-tpf ;; -triton*) os=-sysv3 ;; -oss*) os=-sysv3 ;; -svr4) os=-sysv4 ;; -svr3) os=-sysv3 ;; -sysvr4) os=-sysv4 ;; # This must come after -sysvr4. -sysv*) ;; -ose*) os=-ose ;; -es1800*) os=-ose ;; -xenix) os=-xenix ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) os=-mint ;; -aros*) os=-aros ;; -kaos*) os=-kaos ;; -zvmoe) os=-zvmoe ;; -dicos*) os=-dicos ;; -nacl*) ;; -none) ;; *) # Get rid of the `-' at the beginning of $os. os=`echo $os | sed 's/[^-]*-//'` echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 exit 1 ;; esac else # Here we handle the default operating systems that come with various machines. # The value should be what the vendor currently ships out the door with their # machine or put another way, the most popular os provided with the machine. # Note that if you're going to try to match "-MANUFACTURER" here (say, # "-sun"), then you have to tell the case statement up towards the top # that MANUFACTURER isn't an operating system. Otherwise, code above # will signal an error saying that MANUFACTURER isn't an operating # system, and we'll never get to this point. case $basic_machine in score-*) os=-elf ;; spu-*) os=-elf ;; *-acorn) os=-riscix1.2 ;; arm*-rebel) os=-linux ;; arm*-semi) os=-aout ;; c4x-* | tic4x-*) os=-coff ;; hexagon-*) os=-elf ;; tic54x-*) os=-coff ;; tic55x-*) os=-coff ;; tic6x-*) os=-coff ;; # This must come before the *-dec entry. pdp10-*) os=-tops20 ;; pdp11-*) os=-none ;; *-dec | vax-*) os=-ultrix4.2 ;; m68*-apollo) os=-domain ;; i386-sun) os=-sunos4.0.2 ;; m68000-sun) os=-sunos3 ;; m68*-cisco) os=-aout ;; mep-*) os=-elf ;; mips*-cisco) os=-elf ;; mips*-*) os=-elf ;; or32-*) os=-coff ;; *-tti) # must be before sparc entry or we get the wrong os. os=-sysv3 ;; sparc-* | *-sun) os=-sunos4.1.1 ;; *-be) os=-beos ;; *-haiku) os=-haiku ;; *-ibm) os=-aix ;; *-knuth) os=-mmixware ;; *-wec) os=-proelf ;; *-winbond) os=-proelf ;; *-oki) os=-proelf ;; *-hp) os=-hpux ;; *-hitachi) os=-hiux ;; i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) os=-sysv ;; *-cbm) os=-amigaos ;; *-dg) os=-dgux ;; *-dolphin) os=-sysv3 ;; m68k-ccur) os=-rtu ;; m88k-omron*) os=-luna ;; *-next ) os=-nextstep ;; *-sequent) os=-ptx ;; *-crds) os=-unos ;; *-ns) os=-genix ;; i370-*) os=-mvs ;; *-next) os=-nextstep3 ;; *-gould) os=-sysv ;; *-highlevel) os=-bsd ;; *-encore) os=-bsd ;; *-sgi) os=-irix ;; *-siemens) os=-sysv4 ;; *-masscomp) os=-rtu ;; f30[01]-fujitsu | f700-fujitsu) os=-uxpv ;; *-rom68k) os=-coff ;; *-*bug) os=-coff ;; *-apple) os=-macos ;; *-atari*) os=-mint ;; *) os=-none ;; esac fi # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. vendor=unknown case $basic_machine in *-unknown) case $os in -riscix*) vendor=acorn ;; -sunos*) vendor=sun ;; -cnk*|-aix*) vendor=ibm ;; -beos*) vendor=be ;; -hpux*) vendor=hp ;; -mpeix*) vendor=hp ;; -hiux*) vendor=hitachi ;; -unos*) vendor=crds ;; -dgux*) vendor=dg ;; -luna*) vendor=omron ;; -genix*) vendor=ns ;; -mvs* | -opened*) vendor=ibm ;; -os400*) vendor=ibm ;; -ptx*) vendor=sequent ;; -tpf*) vendor=ibm ;; -vxsim* | -vxworks* | -windiss*) vendor=wrs ;; -aux*) vendor=apple ;; -hms*) vendor=hitachi ;; -mpw* | -macos*) vendor=apple ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) vendor=atari ;; -vos*) vendor=stratus ;; esac basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` ;; esac echo $basic_machine$os exit # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: webcit-8.24-dfsg.orig/bbsview_renderer.c0000644000175000017500000002423112271477123020075 0ustar michaelmichael/* * BBS View renderer module for WebCit * * Note: we briefly had a dynamic UI for this. I thought it was cool, but * it was not received well by the user community. If you want to play * with it, go get commit dcf99fe61379b78436c387ea3f89ebfd4ffaf635 of * bbsview_renderer.c and have fun. * * Copyright (c) 1996-2012 by the citadel.org team * * This program is open source software. You can redistribute it and/or * modify it under the terms of the GNU General Public License, version 3. * * This program 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. */ #define RANGE 5 #include "webcit.h" #include "webserver.h" #include "dav.h" /* * Data which gets passed around between the various functions in this module * */ struct bbsview { long *msgs; /* Array of msgnums for messages we are displaying */ int num_msgs; /* Number of msgnums stored in 'msgs' */ long lastseen; /* The number of the last seen message in this room */ int alloc_msgs; /* Currently allocated size of array */ int requested_page; /* Which page number did the user request? */ int num_pages; /* Total number of pages in this room */ long start_reading_at; /* Start reading at the page containing this message */ }; /* * Attempt to determine the closest thing to the "last seen message number" using the * results of the GTSN command */ long bbsview_get_last_seen(void) { char buf[SIZ] = "0"; serv_puts("GTSN"); serv_getln(buf, sizeof buf); if (buf[0] == '2') { char *colon_pos; char *comma_pos; comma_pos = strchr(buf, ','); /* kill first comma and everything to its right */ if (comma_pos) { *comma_pos = 0; } colon_pos = strchr(buf, ':'); /* kill first colon and everything to its left */ if (colon_pos) { strcpy(buf, ++colon_pos); } } return(atol(buf)); } /* * Entry point for message read operations. */ int bbsview_GetParamsGetServerCall(SharedMessageStatus *Stat, void **ViewSpecific, long oper, char *cmd, long len, char *filter, long flen) { struct bbsview *BBS = malloc(sizeof(struct bbsview)); memset(BBS, 0, sizeof(struct bbsview)); *ViewSpecific = BBS; Stat->startmsg = (-1); /* not used here */ Stat->sortit = 1; /* not used here */ Stat->num_displayed = DEFAULT_MAXMSGS; /* not used here */ BBS->requested_page = 0; BBS->lastseen = bbsview_get_last_seen(); BBS->start_reading_at = 0; /* By default, the requested page is the first one. */ if (havebstr("start_reading_at")) { BBS->start_reading_at = lbstr("start_reading_at"); BBS->requested_page = (-4); } /* However, if we are asked to start with a specific message number, make sure * we start on the page containing that message */ /* Or, if a specific page was requested, make sure we go there */ else if (havebstr("page")) { BBS->requested_page = ibstr("page"); } /* Otherwise, if this is a "read new" operation, make sure we start on the page * containing the first new message */ else if (oper == 3) { BBS->requested_page = (-3); } if (havebstr("maxmsgs")) { Stat->maxmsgs = ibstr("maxmsgs"); } if (Stat->maxmsgs == 0) Stat->maxmsgs = DEFAULT_MAXMSGS; /* perform a "read all" call to fetch the message list -- we'll cut it down later */ rlid[2].cmd(cmd, len); return 200; } /* * This function is called for every message in the list. */ int bbsview_LoadMsgFromServer(SharedMessageStatus *Stat, void **ViewSpecific, message_summary* Msg, int is_new, int i) { struct bbsview *BBS = (struct bbsview *) *ViewSpecific; if (BBS->alloc_msgs == 0) { BBS->alloc_msgs = 1000; BBS->msgs = malloc(BBS->alloc_msgs * sizeof(long)); memset(BBS->msgs, 0, (BBS->alloc_msgs * sizeof(long)) ); } /* Check our buffer size */ if (BBS->num_msgs >= BBS->alloc_msgs) { BBS->alloc_msgs *= 2; BBS->msgs = realloc(BBS->msgs, (BBS->alloc_msgs * sizeof(long))); memset(&BBS->msgs[BBS->num_msgs], 0, ((BBS->alloc_msgs - BBS->num_msgs) * sizeof(long)) ); } BBS->msgs[BBS->num_msgs++] = Msg->msgnum; return 200; } int bbsview_sortfunc(const void *s1, const void *s2) { long l1; long l2; l1 = *(long *)(s1); l2 = *(long *)(s2); if (l1 > l2) return(+1); if (l1 < l2) return(-1); return(0); } int bbsview_RenderView_or_Tail(SharedMessageStatus *Stat, void **ViewSpecific, long oper) { struct bbsview *BBS = (struct bbsview *) *ViewSpecific; int i; int seq; const StrBuf *Mime; int start_index = 0; int end_index = 0; int go_to_the_very_end = 0; if (Stat->nummsgs > 0) { syslog(LOG_DEBUG, "sorting %d messages\n", BBS->num_msgs); qsort(BBS->msgs, (size_t)(BBS->num_msgs), sizeof(long), bbsview_sortfunc); } if ((BBS->num_msgs % Stat->maxmsgs) == 0) { BBS->num_pages = BBS->num_msgs / Stat->maxmsgs; } else { BBS->num_pages = (BBS->num_msgs / Stat->maxmsgs) + 1; } /* If the requested page number is -4, * it means "whichever page on which msg#xxxxx starts" * Change to the page number which contains that message. */ if (BBS->requested_page == (-4)) { if (BBS->num_msgs == 0) { BBS->requested_page = 0; } else { for (i=0; inum_msgs; ++i) { if ( (BBS->msgs[i] >= BBS->start_reading_at) && (BBS->requested_page == (-4)) ) { BBS->requested_page = (i / Stat->maxmsgs) ; } } } } /* If the requested page number is -3, * it means "whichever page on which new messages start" * Change that to an actual page number now. */ if (BBS->requested_page == (-3)) { if (BBS->num_msgs == 0) { /* * The room is empty; just start at the top and leave it there. */ BBS->requested_page = 0; } else if ( (BBS->num_msgs > 0) && (BBS->lastseen <= BBS->msgs[0]) ) { /* * All messages are new; this is probably the user's first visit to the room, * so start at the last page instead of showing ancient history. */ BBS->requested_page = BBS->num_pages - 1; go_to_the_very_end = 1; } else { /* * Some messages are old and some are new. Go to the start of new messages. */ for (i=0; inum_msgs; ++i) { if ( (BBS->msgs[i] > BBS->lastseen) && ( (i == 0) || (BBS->msgs[i-1] <= BBS->lastseen) ) ) { BBS->requested_page = (i / Stat->maxmsgs) ; } } } } /* Still set to -3 ? If so, that probably means that there are no new messages, * so we'll go to the *end* of the final page. */ if (BBS->requested_page == (-3)) { if (BBS->num_msgs == 0) { BBS->requested_page = 0; } else { BBS->requested_page = BBS->num_pages - 1; } } /* keep the requested page within bounds */ if (BBS->requested_page < 0) BBS->requested_page = 0; if (BBS->requested_page >= BBS->num_pages) BBS->requested_page = BBS->num_pages - 1; start_index = BBS->requested_page * Stat->maxmsgs; if (start_index < 0) start_index = 0; end_index = start_index + Stat->maxmsgs - 1; for (seq = 0; seq < 3; ++seq) { /* cheap & sleazy way of rendering the page numbers twice */ if ( (seq == 1) && (Stat->nummsgs > 0)) { /* display the selected range of messages */ for (i=start_index; (i<=end_index && inum_msgs); ++i) { if ( (BBS->msgs[i] > BBS->lastseen) && ( (i == 0) || (BBS->msgs[i-1] <= BBS->lastseen) ) ) { /* new messages start here */ do_template("start_of_new_msgs"); if (!go_to_the_very_end) { StrBufAppendPrintf(WC->trailing_javascript, "location.href=\"#newmsgs\";\n"); } } if (BBS->msgs[i] > 0L) { read_message(WC->WBuf, HKEY("view_message"), BBS->msgs[i], NULL, &Mime); } if ( (i == (BBS->num_msgs - 1)) && (BBS->msgs[i] <= BBS->lastseen) ) { /* no new messages */ do_template("no_new_msgs"); if (!go_to_the_very_end) { StrBufAppendPrintf(WC->trailing_javascript, "location.href=\"#nonewmsgs\";\n"); } } } } else if ( (seq == 0) || (seq == 2) ) { int first; int last; /* Display the selecto-bar with the page numbers */ wc_printf("
    "); if (seq == 2) { wc_printf(""); } wc_printf(_("Go to page: ")); if (seq == 2) { wc_printf(""); } first = 0; last = BBS->num_pages - 1; for (i=0; i<=last; ++i) { if ( (i == first) || (i == last) || (i == BBS->requested_page) || ( ((BBS->requested_page - i) < RANGE) && ((BBS->requested_page - i) > (0 - RANGE)) ) ) { if ( (i == last) && (last - BBS->requested_page > RANGE) ) { wc_printf("... "); } if (i == BBS->requested_page) { wc_printf("["); } else { wc_printf("CurRoom.name)); wc_printf("?start_reading_at=%ld\">", BBS->msgs[i*Stat->maxmsgs] ); /* wc_printf("?page=%d\">", i); */ wc_printf(""); } if ( (i == first) && (BBS->requested_page > (RANGE + 1)) ) { wc_printf(_("First")); } else if ( (i == last) && (last - BBS->requested_page > RANGE) ) { wc_printf(_("Last")); } else { wc_printf("%d", i + 1); /* change to one-based for display */ } if (i == BBS->requested_page) { wc_printf("]"); } else { wc_printf(""); wc_printf(""); } if ( (i == first) && (BBS->requested_page > (RANGE + 1)) ) { wc_printf(" ..."); } if (i != last) { wc_printf(" "); } } } wc_printf("
    \n"); } } if (go_to_the_very_end) { StrBufAppendPrintf(WC->trailing_javascript, "location.href=\"#end_of_msgs\";\n"); } return(0); } int bbsview_Cleanup(void **ViewSpecific) { struct bbsview *BBS = (struct bbsview *) *ViewSpecific; if (BBS->alloc_msgs != 0) { free(BBS->msgs); } free(BBS); wDumpContent(1); return 0; } void InitModule_BBSVIEWRENDERERS (void) { RegisterReadLoopHandlerset( VIEW_BBS, bbsview_GetParamsGetServerCall, NULL, NULL, NULL, bbsview_LoadMsgFromServer, bbsview_RenderView_or_Tail, bbsview_Cleanup ); } webcit-8.24-dfsg.orig/webserver.h0000644000175000017500000000151612271477123016560 0ustar michaelmichael/* * Copyright (c) 1996-2013 by the citadel.org team * * This program is open source software. You can redistribute it and/or * modify it under the terms of the GNU General Public License, version 3. * * This program 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. */ extern char *static_dirs[PATH_MAX]; /**< Web representation */ extern int ndirs; extern char socket_dir[PATH_MAX]; extern char *default_landing_page; int ClientGetLine(ParsedHttpHdrs *Hdr, StrBuf *Target); int client_read_to(ParsedHttpHdrs *Hdr, StrBuf *Target, int bytes, int timeout); void wc_backtrace(long LogLevel); void ShutDownWebcit(void); void shutdown_ssl(void); webcit-8.24-dfsg.orig/aclocal.m40000644000175000017500000001026712271477136016252 0ustar michaelmichael# generated automatically by aclocal 1.11.1 -*- Autoconf -*- # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, # 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. # AM_AUX_DIR_EXPAND -*- Autoconf -*- # Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets # $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to # `$srcdir', `$srcdir/..', or `$srcdir/../..'. # # Of course, Automake must honor this variable whenever it calls a # tool from the auxiliary directory. The problem is that $srcdir (and # therefore $ac_aux_dir as well) can be either absolute or relative, # depending on how configure is run. This is pretty annoying, since # it makes $ac_aux_dir quite unusable in subdirectories: in the top # source directory, any form will work fine, but in subdirectories a # relative path needs to be adjusted first. # # $ac_aux_dir/missing # fails when called from a subdirectory if $ac_aux_dir is relative # $top_srcdir/$ac_aux_dir/missing # fails if $ac_aux_dir is absolute, # fails when called from a subdirectory in a VPATH build with # a relative $ac_aux_dir # # The reason of the latter failure is that $top_srcdir and $ac_aux_dir # are both prefixed by $srcdir. In an in-source build this is usually # harmless because $srcdir is `.', but things will broke when you # start a VPATH build or use an absolute $srcdir. # # So we could use something similar to $top_srcdir/$ac_aux_dir/missing, # iff we strip the leading $srcdir from $ac_aux_dir. That would be: # am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` # and then we would define $MISSING as # MISSING="\${SHELL} $am_aux_dir/missing" # This will work as long as MISSING is not called from configure, because # unfortunately $(top_srcdir) has no meaning in configure. # However there are other variables, like CC, which are often used in # configure, and could therefore not use this "fixed" $ac_aux_dir. # # Another solution, used here, is to always expand $ac_aux_dir to an # absolute PATH. The drawback is that using absolute paths prevent a # configured tree to be moved without reconfiguration. AC_DEFUN([AM_AUX_DIR_EXPAND], [dnl Rely on autoconf to set up CDPATH properly. AC_PREREQ([2.50])dnl # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` ]) # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- # Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 6 # AM_MISSING_PROG(NAME, PROGRAM) # ------------------------------ AC_DEFUN([AM_MISSING_PROG], [AC_REQUIRE([AM_MISSING_HAS_RUN]) $1=${$1-"${am_missing_run}$2"} AC_SUBST($1)]) # AM_MISSING_HAS_RUN # ------------------ # Define MISSING if not defined so far and test if it supports --run. # If it does, set am_missing_run to use it, otherwise, to nothing. AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([missing])dnl if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --run true"; then am_missing_run="$MISSING --run " else am_missing_run= AC_MSG_WARN([`missing' script is too old or missing]) fi ]) m4_include([acinclude.m4]) webcit-8.24-dfsg.orig/Makefile.in0000644000175000017500000001414512271477123016452 0ustar michaelmichaelprefix=@prefix@ srcdir=@srcdir@ VPATH=$(srcdir) AUTOCONF=@AUTOCONF@ CC=@CC@ CFLAGS=@CFLAGS@ DEFS=@DEFS@ INSTALL=@INSTALL@ LIBOBJS=@LIBOBJS@ LIBS=@LIBS@ LDFLAGS=@LDFLAGS@ SED=@SED@ SETUP_LIBS=@SETUP_LIBS@ PTHREAD_DEFS=@PTHREAD_DEFS@ LIB_SUBDIRS= PROG_SUBDIRS=@PROG_SUBDIRS@ SUBDIRS=$(LIB_SUBDIRS) $(PROG_SUBDIRS) LOCALEDIR=@LOCALEDIR@ WWWDIR=@WWWDIR@ HEADERS=calendar.h dav.h messages.h modules_init.h paramhandling.h preferences.h roomops.h subst.h sysdep.h tcp_sockets.h utils.h webcit.h webserver.h # End of configuration section all: buildinfo all-progs-recursive webcit setup buildinfo: echo echo Compiler: $(CC) $(CFLAGS) $(DEFS) $(PTHREAD_DEFS) -c -o $@ echo Linker: $(CC) $(LDFLAGS) $(LIBOBJS) $(LIBS) echo # for VPATH builds (invoked by configure) mkdir-init: mkdir locale .SILENT: .SUFFIXES: .cpp .c .o clean: rm -f *.o webcit webcit setup rm -fr locale/* distclean: clean rm -f Makefile config.cache config.log config.status \ po/webcit/Makefile \ $(srcdir)/TAGS setup: setup.o gettext.o $(CC) $(LDFLAGS) $(LIBOBJS) gettext.o setup.o -o setup \ $(LIBS) $(SETUP_LIBS) webcit: webserver.o context_loop.o ical_dezonify.o \ cookie_conversion.o locate_host.o summary.o \ webcit.o auth.o tcp_sockets.o mainmenu.o serv_func.o who.o marchlist.o \ roomops.o roomlist.o roomtokens.o roomviews.o blogview_renderer.o \ messages.o msg_renderers.o paging.o sysmsgs.o \ useredit.o vcard_edit.o preferences.o html2html.o listsub.o roomchat.o \ graphics.o netconf.o siteconfig.o subst.o bbsview_renderer.o \ calendar.o calendar_tools.o calendar_view.o tasks.o event.o smtpqueue.o \ availability.o iconbar.o icontheme.o crypto.o inetconf.o notes.o wiki.o \ dav_main.o dav_get.o dav_propfind.o dav_report.o fmt_date.o \ dav_options.o autocompletion.o gettext.o tabs.o sieve.o sitemap.o \ dav_delete.o dav_put.o http_datestring.o setup_wizard.o \ downloads.o addressbook_popup.o pushemail.o sysdep.o openid.o \ decode.o modules_init.o paramhandling.o utils.o \ ical_maps.o ical_subst.o static.o feed_generator.o \ $(LIBOBJS) echo LD: webcit $(CC) $(LDFLAGS) -o webcit $(LIBOBJS) \ webserver.o context_loop.o cookie_conversion.o marchlist.o \ webcit.o auth.o tcp_sockets.o mainmenu.o serv_func.o who.o listsub.o \ roomops.o roomlist.o roomtokens.o roomviews.o blogview_renderer.o \ messages.o msg_renderers.o paging.o sysmsgs.o \ useredit.o locate_host.o siteconfig.o subst.o vcard_edit.o roomchat.o \ graphics.o netconf.o preferences.o html2html.o openid.o bbsview_renderer.o \ summary.o calendar.o calendar_tools.o calendar_view.o tasks.o event.o wiki.o \ availability.o ical_dezonify.o iconbar.o icontheme.o crypto.o inetconf.o notes.o \ dav_main.o dav_get.o dav_propfind.o dav_report.o dav_delete.o \ dav_options.o autocompletion.o tabs.o smtpqueue.o sieve.o sitemap.o \ dav_put.o http_datestring.o setup_wizard.o fmt_date.o modules_init.o \ gettext.o downloads.o addressbook_popup.o pushemail.o sysdep.o decode.o \ paramhandling.o utils.o ical_maps.o ical_subst.o static.o feed_generator.o \ $(LIBS) %.o: %.c ${HEADERS} echo "CC $<" $(CC) $(CFLAGS) $(DEFS) $(PTHREAD_DEFS) -c -o $@ $< %.o: %.cpp ${HEADERS} echo "CC+ $<" $(CC) $(CFLAGS) $(DEFS) $(PTHREAD_DEFS) -c -o $@ $< Makefile: $(srcdir)/Makefile.in config.status CONFIG_FILES=Makefile CONFIG_HEADERS= $(SHELL) ./config.status config.status: $(srcdir)/configure $(SHELL) ./config.status --recheck $(srcdir)/configure: $(srcdir)/configure.ac $(srcdir)/aclocal.m4 cd $(srcdir) && $(AUTOCONF) $(srcdir)/aclocal.m4: $(srcdir)/acinclude.m4 cd $(srcdir) && $(ACLOCAL) install: install-bin install-setupbin install-wwwdata install-tinymce install-locale install-bin: test -d $(DESTDIR)$(prefix) || mkdir -p $(DESTDIR)$(prefix) $(INSTALL) webcit $(DESTDIR)$(prefix)/webcit if test -f $(DESTDIR)$(prefix)/webserver; then \ rm -f $(DESTDIR)$(prefix)/webserver; \ ln -s $(DESTDIR)$(prefix)/webcit $(DESTDIR)$(prefix)/webserver; \ fi install-setupbin: install-bin $(INSTALL) setup $(DESTDIR)$(prefix)/setup install-wwwdata: test -d $(DESTDIR)$(WWWDIR)/static.local/t || mkdir -p $(DESTDIR)$(WWWDIR)/static.local/t test -d $(DESTDIR)$(WWWDIR)/static/t || mkdir -p $(DESTDIR)$(WWWDIR)/static/t for i in `find static -type d | grep -v .svn` \ ; do \ test -d $(DESTDIR)$(WWWDIR)/$$i || mkdir -p $(DESTDIR)$(WWWDIR)/$$i; \ done for i in `find static -type f | grep -v .svn`; do \ $(INSTALL) $$i $(DESTDIR)$(WWWDIR)/$$i; \ done install-tinymce: test -d $(DESTDIR)$(WWWDIR)/static || mkdir -p $(DESTDIR)$(WWWDIR)/static for i in `find tiny_mce -type d | grep -v .svn` \ ; do \ test -d $(DESTDIR)$(WWWDIR)/$$i || mkdir -p $(DESTDIR)$(WWWDIR)/$$i; \ done for i in \ `find tiny_mce -type f | grep -v .svn` \ ; do \ $(INSTALL) $$i $(DESTDIR)$(WWWDIR)/$$i; \ done install-locale: cd po/webcit/; $(MAKE) for i in `find locale -type d | grep -v .svn` \ ; do \ test -d $(DESTDIR)$(LOCALEDIR)/$$i || mkdir -p $(DESTDIR)$(LOCALEDIR)/$$i; \ done for i in `find locale -type f | grep -v .svn`; do \ $(INSTALL) $$i $(DESTDIR)$(LOCALEDIR)/$$i; \ done TAGS clean-recursive distclean-recursive depend-recursive check-recursive \ mostlyclean-recursive realclean-recursive: @for subdir in $(SUBDIRS); do \ if test -d $$subdir ; then \ target=`echo $@|$(SED) 's/-recursive//'`; \ echo making $$target in $$subdir; \ (cd $$subdir && $(MAKE) $$target) || exit 1; \ fi ; \ done all-progs-recursive install-progs-recursive install-strip-progs-recursive \ uninstall-progs-recursive: # @for subdir in $(PROG_SUBDIRS); do \ # if test -d $$subdir ; then \ # target=`echo $@|$(SED) 's/-progs-recursive//'`; \ # echo making $$target in $$subdir; \ # (cd $$subdir && $(MAKE) $$target) || exit 1; \ # fi ; \ # done all-libs-recursive install-libs-recursive install-strip-libs-recursive \ uninstall-libs-recursive install-shlibs-libs-recursive \ install-shlibs-strip-libs-recursive uninstall-shlibs-libs-recursive: # @for subdir in $(LIB_SUBDIRS); do \ # if test -d $$subdir ; then \ # target=`echo $@|$(SED) 's/-libs-recursive//'`; \ # echo making $$target in $$subdir; \ # (cd $$subdir && $(MAKE) $$target) || exit 1; \ # fi ; \ # done webcit-8.24-dfsg.orig/addressbook_popup.c0000644000175000017500000000361412271477123020273 0ustar michaelmichael/* * AJAX-powered auto-completion * * Copyright (c) 1996-2012 by the citadel.org team * * This program is open source software: you can redistribute it and/or modify * it under the terms of the GNU General Public License, version 3. * * This program 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. */ #include "webcit.h" /* * Address book popup results */ HashList* GetAddressbookList() { HashList *List = NULL; const StrBuf *WhichAddrBook; StrBuf *saved_roomname; StrBuf *Name; StrBuf *Line; long BufLen; int IsLocalAddrBook; WhichAddrBook = SBSTR("which_addr_book"); IsLocalAddrBook = strcasecmp(ChrPtr(WhichAddrBook), "__LOCAL_USERS__") == 1; if (IsLocalAddrBook) { serv_puts("LIST"); } else { /* remember the default addressbook for this room */ set_room_pref("defaddrbook", NewStrBufDup(WhichAddrBook), 0); saved_roomname = NewStrBufDup(WC->CurRoom.name); gotoroom(WhichAddrBook); serv_puts("DVCA"); } Line = NewStrBuf(); StrBuf_ServGetln(Line); if (GetServerStatus(Line, NULL) == 1) { List = NewHash(1, NULL); while (BufLen = StrBuf_ServGetln(Line), ((BufLen >= 0) && ((BufLen != 3) || strcmp(ChrPtr(Line), "000")))) { if (IsLocalAddrBook && (BufLen > 5) && (strncmp(ChrPtr(Line), "SYS_", 4) == 0)) { continue; } Name = NewStrBufPlain(NULL, StrLength(Line)); StrBufExtract_token(Name, Line, 0, '|'); Put(List, SKEY(Name), Name, HFreeStrBuf); } SortByHashKey(List, 1); } if (!IsLocalAddrBook) { gotoroom(saved_roomname); FreeStrBuf(&saved_roomname); } return List; } void InitModule_ADDRBOOK_POPUP (void) { RegisterIterator("ITERATE:ABNAMES", 0, NULL, GetAddressbookList, NULL, NULL, CTX_STRBUF, CTX_NONE, IT_NOFLAG); } webcit-8.24-dfsg.orig/listsub.c0000644000175000017500000000726512271477123016243 0ustar michaelmichael/* * Web forms for handling mailing list subscribe/unsubscribe requests. * * Copyright (c) 1996-2012 by the citadel.org team * * This program is open source software. You can redistribute it and/or * modify it under the terms of the GNU General Public License, version 3. * * This program 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. */ #include "webcit.h" /* * List subscription handling */ int Conditional_LISTSUB_EXECUTE_SUBSCRIBE(StrBuf *Target, WCTemplputParams *TP) { int rc; StrBuf *Line; const char *ImpMsg; const StrBuf *Room, *Email, *SubType; Room = sbstr("room"); if (Room == NULL) { ImpMsg = _("You need to specify the mailinglist to subscribe to."); AppendImportantMessage(ImpMsg, -1); return 0; } Email = sbstr("email"); if (Email == NULL) { ImpMsg = _("You need to specify the email address you'd like to subscribe with."); AppendImportantMessage(ImpMsg, -1); return 0; } SubType = sbstr("subtype"); Line = NewStrBuf(); serv_printf("SUBS subscribe|%s|%s|%s|%s/listsub", ChrPtr(Room), ChrPtr(Email), ChrPtr(SubType), ChrPtr(site_prefix) ); StrBuf_ServGetln(Line); rc = GetServerStatusMsg(Line, NULL, 1, 2); FreeStrBuf(&Line); if (rc == 2) putbstr("__FAIL", NewStrBufPlain(HKEY("1"))); return rc == 2; } int Conditional_LISTSUB_EXECUTE_UNSUBSCRIBE(StrBuf *Target, WCTemplputParams *TP) { int rc; StrBuf *Line; const char *ImpMsg; const StrBuf *Room, *Email; Room = sbstr("room"); if (Room == NULL) { ImpMsg = _("You need to specify the mailinglist to subscribe to."); AppendImportantMessage(ImpMsg, -1); return 0; } Email = sbstr("email"); if (Email == NULL) { ImpMsg = _("You need to specify the email address you'd like to subscribe with."); AppendImportantMessage(ImpMsg, -1); return 0; } serv_printf("SUBS unsubscribe|%s|%s|%s/listsub", ChrPtr(Room), ChrPtr(Email), ChrPtr(site_prefix) ); Line = NewStrBuf(); StrBuf_ServGetln(Line); rc = GetServerStatusMsg(Line, NULL, 1, 2); FreeStrBuf(&Line); if (rc == 2) putbstr("__FAIL", NewStrBufPlain(HKEY("1"))); return rc == 2; } int Conditional_LISTSUB_EXECUTE_CONFIRM_SUBSCRIBE(StrBuf *Target, WCTemplputParams *TP) { int rc; StrBuf *Line; const char *ImpMsg; const StrBuf *Room, *Token; Room = sbstr("room"); if (Room == NULL) { ImpMsg = _("You need to specify the mailinglist to subscribe to."); AppendImportantMessage(ImpMsg, -1); return 0; } Token = sbstr("token"); if (Room == NULL) { ImpMsg = _("You need to specify the mailinglist to subscribe to."); AppendImportantMessage(ImpMsg, -1); return 0; } Line = NewStrBuf(); serv_printf("SUBS confirm|%s|%s", ChrPtr(Room), ChrPtr(Token) ); StrBuf_ServGetln(Line); rc = GetServerStatusMsg(Line, NULL, 1, 2); FreeStrBuf(&Line); if (rc == 2) putbstr("__FAIL", NewStrBufPlain(HKEY("1"))); return rc == 2; } void do_listsub(void) { if (!havebstr("cmd")) { putbstr("cmd", NewStrBufPlain(HKEY("choose"))); } output_headers(1, 0, 0, 0, 1, 0); do_template("listsub_display"); end_burst(); } void InitModule_LISTSUB (void) { RegisterConditional("COND:LISTSUB:EXECUTE:SUBSCRIBE", 0, Conditional_LISTSUB_EXECUTE_SUBSCRIBE, CTX_NONE); RegisterConditional("COND:LISTSUB:EXECUTE:UNSUBSCRIBE", 0, Conditional_LISTSUB_EXECUTE_UNSUBSCRIBE, CTX_NONE); RegisterConditional("COND:LISTSUB:EXECUTE:CONFIRM:SUBSCRIBE", 0, Conditional_LISTSUB_EXECUTE_CONFIRM_SUBSCRIBE, CTX_NONE); WebcitAddUrlHandler(HKEY("listsub"), "", 0, do_listsub, ANONYMOUS|COOKIEUNNEEDED|FORCE_SESSIONCLOSE); } webcit-8.24-dfsg.orig/html2html.c0000644000175000017500000004505412271477123016467 0ustar michaelmichael/* * Output an HTML message, modifying it slightly to make sure it plays nice * with the rest of our web framework. * * Copyright (c) 2005-2012 by the citadel.org team * * This program is open source software; you can redistribute it and/or modify * it under the terms of the GNU General Public License, version 3. * * This program 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. */ #include "webcit.h" #include "webserver.h" /* * Strip surrounding single or double quotes from a string. */ void stripquotes(char *s) { int len; if (!s) return; len = strlen(s); if (len < 2) return; if ( ( (s[0] == '\"') && (s[len-1] == '\"') ) || ( (s[0] == '\'') && (s[len-1] == '\'') ) ) { s[len-1] = 0; strcpy(s, &s[1]); } } /* * Check to see if a META tag has overridden the declared MIME character set. * * charset Character set name (left unchanged if we don't do anything) * meta_http_equiv Content of the "http-equiv" portion of the META tag * meta_content Content of the "content" portion of the META tag */ void extract_charset_from_meta(char *charset, char *meta_http_equiv, char *meta_content) { char *ptr; char buf[64]; if (!charset) return; if (!meta_http_equiv) return; if (!meta_content) return; if (strcasecmp(meta_http_equiv, "Content-type")) return; ptr = strchr(meta_content, ';'); if (!ptr) return; safestrncpy(buf, ++ptr, sizeof buf); striplt(buf); if (!strncasecmp(buf, "charset=", 8)) { strcpy(charset, &buf[8]); /* * The brain-damaged webmail program in Microsoft Exchange declares * a charset of "unicode" when they really mean "UTF-8". GNU iconv * treats "unicode" as an alias for "UTF-16" so we have to manually * fix this here, otherwise messages generated in Exchange webmail * show up as a big pile of weird characters. */ if (!strcasecmp(charset, "unicode")) { strcpy(charset, "UTF-8"); } /* Remove wandering punctuation */ if ((ptr=strchr(charset, '\"'))) *ptr = 0; striplt(charset); } } /* * Sanitize and enhance an HTML message for display. * Also convert weird character sets to UTF-8 if necessary. * Also fixup img src="cid:..." type inline images to fetch the image * */ void output_html(const char *supplied_charset, int treat_as_wiki, int msgnum, StrBuf *Source, StrBuf *Target) { char buf[SIZ]; char *msg; char *ptr; char *msgstart; char *msgend; StrBuf *converted_msg; int buffer_length = 1; int line_length = 0; int content_length = 0; char new_window[SIZ]; int brak = 0; int alevel = 0; int scriptlevel = 0; int script_start_pos = (-1); int i; int linklen; char charset[128]; StrBuf *BodyArea = NULL; #ifdef HAVE_ICONV iconv_t ic = (iconv_t)(-1) ; char *ibuf; /* Buffer of characters to be converted */ char *obuf; /* Buffer for converted characters */ size_t ibuflen; /* Length of input buffer */ size_t obuflen; /* Length of output buffer */ char *osav; /* Saved pointer to output buffer */ #endif if (Target == NULL) Target = WC->WBuf; safestrncpy(charset, supplied_charset, sizeof charset); msg = strdup(""); sprintf(new_window, ""); StrBufAppendPrintf(Target, _("realloc() error! couldn't get %d bytes: %s"), buffer_length + 1, strerror(errno)); StrBufAppendPrintf(Target, "

    \n"); while (serv_getln(buf, sizeof buf), strcmp(buf, "000")) { /** flush */ } free(msg); return; } msg = ptr; strcpy(&msg[content_length], buf); content_length += line_length; strcpy(&msg[content_length], "\n"); content_length += 1; } else { content_length = StrLength(Source); free(msg); msg = (char*) ChrPtr(Source);/* TODO: remove cast */ buffer_length = content_length; } /** Do a first pass to isolate the message body */ ptr = msg + 1; msgstart = msg; msgend = &msg[content_length]; while (ptr < msgend) { /** Advance to next tag */ ptr = strchr(ptr, '<'); if ((ptr == NULL) || (ptr >= msgend)) break; ++ptr; if ((ptr == NULL) || (ptr >= msgend)) break; /* * Look for META tags. Some messages (particularly in * Asian locales) illegally declare a message's character * set in the HTML instead of in the MIME headers. This * is wrong but we have to work around it anyway. */ if (!strncasecmp(ptr, "META", 4)) { char *meta_start; char *meta_end; int meta_length; char *meta; char *meta_http_equiv; char *meta_content; char *spaceptr; meta_start = &ptr[4]; meta_end = strchr(ptr, '>'); if ((meta_end != NULL) && (meta_end <= msgend)) { meta_length = meta_end - meta_start + 1; meta = malloc(meta_length + 1); safestrncpy(meta, meta_start, meta_length); meta[meta_length] = 0; striplt(meta); if (!strncasecmp(meta, "HTTP-EQUIV=", 11)) { meta_http_equiv = strdup(&meta[11]); spaceptr = strchr(meta_http_equiv, ' '); if (spaceptr != NULL) { *spaceptr = 0; meta_content = strdup(++spaceptr); if (!strncasecmp(meta_content, "content=", 8)) { strcpy(meta_content, &meta_content[8]); stripquotes(meta_http_equiv); stripquotes(meta_content); extract_charset_from_meta(charset, meta_http_equiv, meta_content); } free(meta_content); } free(meta_http_equiv); } free(meta); } } /* * Any of these tags cause everything up to and including * the tag to be removed. */ if ( (!strncasecmp(ptr, "HTML", 4)) ||(!strncasecmp(ptr, "HEAD", 4)) ||(!strncasecmp(ptr, "/HEAD", 5)) ||(!strncasecmp(ptr, "BODY", 4)) ) { char *pBody = NULL; if (!strncasecmp(ptr, "BODY", 4)) { pBody = ptr; } ptr = strchr(ptr, '>'); if ((ptr == NULL) || (ptr >= msgend)) break; if ((pBody != NULL) && (ptr - pBody > 4)) { char* src; char *cid_start, *cid_end; *ptr = '\0'; pBody += 4; while ((isspace(*pBody)) && (pBody < ptr)) pBody ++; BodyArea = NewStrBufPlain(NULL, ptr - pBody); if (pBody < ptr) { src = strstr(pBody, "cid:"); if (src) { cid_start = src + 4; cid_end = cid_start; while ((*cid_end != '"') && !isspace(*cid_end) && (cid_end < ptr)) cid_end ++; /* copy tag and attributes up to src="cid: */ StrBufAppendBufPlain(BodyArea, pBody, src - pBody, 0); /* add in /webcit/mimepart//CID/ trailing / stops dumb URL filters getting excited */ StrBufAppendPrintf(BodyArea, "/webcit/mimepart/%d/",msgnum); StrBufAppendBufPlain(BodyArea, cid_start, cid_end - cid_start, 0); if (ptr - cid_end > 0) StrBufAppendBufPlain(BodyArea, cid_end + 1, ptr - cid_end, 0); } else StrBufAppendBufPlain(BodyArea, pBody, ptr - pBody, 0); } *ptr = '>'; } ++ptr; if ((ptr == NULL) || (ptr >= msgend)) break; msgstart = ptr; } /* * Any of these tags cause everything including and following * the tag to be removed. */ if ( (!strncasecmp(ptr, "/HTML", 5)) ||(!strncasecmp(ptr, "/BODY", 5)) ) { --ptr; msgend = ptr; strcpy(ptr, ""); } ++ptr; } if (msgstart > msg) { strcpy(msg, msgstart); } /* Now go through the message, parsing tags as necessary. */ converted_msg = NewStrBufPlain(NULL, content_length + 8192); /** Convert foreign character sets to UTF-8 if necessary. */ #ifdef HAVE_ICONV if ( (strcasecmp(charset, "us-ascii")) && (strcasecmp(charset, "UTF-8")) && (strcasecmp(charset, "")) ) { syslog(LOG_DEBUG, "Converting %s to UTF-8\n", charset); ctdl_iconv_open("UTF-8", charset, &ic); if (ic == (iconv_t)(-1) ) { syslog(LOG_WARNING, "%s:%d iconv_open() failed: %s\n", __FILE__, __LINE__, strerror(errno)); } } if (Source == NULL) { if (ic != (iconv_t)(-1) ) { ibuf = msg; ibuflen = content_length; obuflen = content_length + (content_length / 2) ; obuf = (char *) malloc(obuflen); osav = obuf; iconv(ic, &ibuf, &ibuflen, &obuf, &obuflen); content_length = content_length + (content_length / 2) - obuflen; osav[content_length] = 0; free(msg); msg = osav; iconv_close(ic); } } else { if (ic != (iconv_t)(-1) ) { StrBuf *Buf = NewStrBufPlain(NULL, StrLength(Source) + 8096);; StrBufConvert(Source, Buf, &ic); FreeStrBuf(&Buf); iconv_close(ic); msg = (char*)ChrPtr(Source); /* TODO: get rid of this. */ } } #endif /* * At this point, the message has been stripped down to * only the content inside the tags, and has * been converted to UTF-8 if it was originally in a foreign * character set. The text is also guaranteed to be null * terminated now. */ if (converted_msg == NULL) { StrBufAppendPrintf(Target, "Error %d: %s
    %s:%d", errno, strerror(errno), __FILE__, __LINE__); goto BAIL; } if (BodyArea != NULL) { StrBufAppendBufPlain(converted_msg, HKEY("
    "), 0); } ptr = msg; msgend = strchr(msg, 0); while (ptr < msgend) { /** Try to sanitize the html of any rogue scripts */ if (!strncasecmp(ptr, "'))) ) { /* open external links to new window */ StrBufAppendPrintf(converted_msg, new_window); ptr = &ptr[8]; } else if ( (treat_as_wiki) && (strncasecmp(ptr, "CurRoom.name, NULL); StrBufAppendPrintf(converted_msg, "?page="); ptr = &ptr[9]; } else { StrBufAppendPrintf(converted_msg, "'); char* src; /* FIXME - handle this situation (maybe someone opened an ') ||(ptr[i]=='[') ||(ptr[i]==']') ||(ptr[i]=='"') ||(ptr[i]=='\'') ) linklen = i; /* did s.b. send us an entity? */ if (ptr[i] == '&') { if ((ptr[i+2] ==';') || (ptr[i+3] ==';') || (ptr[i+5] ==';') || (ptr[i+6] ==';') || (ptr[i+7] ==';')) linklen = i; } if (linklen > 0) break; } if (linklen > 0) { char *ltreviewptr; char *nbspreviewptr; char linkedchar; int len; len = linklen; linkedchar = ptr[len]; ptr[len] = '\0'; /* spot for some subject strings tinymce tends to give us. */ ltreviewptr = strchr(ptr, '<'); if (ltreviewptr != NULL) { *ltreviewptr = '\0'; linklen = ltreviewptr - ptr; } nbspreviewptr = strstr(ptr, " "); if (nbspreviewptr != NULL) { /* nbspreviewptr = '\0'; */ linklen = nbspreviewptr - ptr; } if (ltreviewptr != 0) *ltreviewptr = '<'; ptr[len] = linkedchar; content_length += (32 + linklen); StrBufAppendPrintf(converted_msg, "%s\"", new_window); StrBufAppendBufPlain(converted_msg, ptr, linklen, 0); StrBufAppendPrintf(converted_msg, "\">"); StrBufAppendBufPlain(converted_msg, ptr, linklen, 0); ptr += linklen; StrBufAppendPrintf(converted_msg, ""); } } else { StrBufAppendBufPlain(converted_msg, ptr, 1, 0); ptr++; } if ((ptr >= msg) && (ptr <= msgend)) { /* * We need to know when we're inside a tag, * so we don't turn things that look like URL's into * links, when they're already links - or image sources. */ if ((ptr > msg) && (*(ptr-1) == '<')) { ++brak; } if ((ptr > msg) && (*(ptr-1) == '>')) { --brak; if ((scriptlevel == 0) && (script_start_pos >= 0)) { StrBufCutRight(converted_msg, StrLength(converted_msg) - script_start_pos); script_start_pos = (-1); } } if (!strncasecmp(ptr, "", 3)) --alevel; } } if (BodyArea != NULL) { StrBufAppendBufPlain(converted_msg, HKEY("
    "), 0); FreeStrBuf(&BodyArea); } /** uncomment these two lines to override conversion */ /** memcpy(converted_msg, msg, content_length); */ /** output_length = content_length; */ /** Output our big pile of markup */ StrBufAppendBuf(Target, converted_msg, 0); BAIL: /** A little trailing vertical whitespace... */ StrBufAppendPrintf(Target, "

    \n"); /** Now give back the memory */ FreeStrBuf(&converted_msg); if ((msg != NULL) && (Source == NULL)) free(msg); } /* * Look for URL's embedded in a buffer and make them linkable. We use a * target window in order to keep the Citadel session in its own window. */ void UrlizeText(StrBuf* Target, StrBuf *Source, StrBuf *WrkBuf) { int len, UrlLen, Offset, TrailerLen; const char *start, *end, *pos; FlushStrBuf(Target); start = NULL; len = StrLength(Source); end = ChrPtr(Source) + len; for (pos = ChrPtr(Source); (pos < end) && (start == NULL); ++pos) { if (!strncasecmp(pos, "http://", 7)) start = pos; else if (!strncasecmp(pos, "ftp://", 6)) start = pos; } if (start == NULL) { StrBufAppendBuf(Target, Source, 0); return; } FlushStrBuf(WrkBuf); for (pos = ChrPtr(Source) + len; pos > start; --pos) { if ( (!isprint(*pos)) || (isspace(*pos)) || (*pos == '{') || (*pos == '}') || (*pos == '|') || (*pos == '\\') || (*pos == '^') || (*pos == '[') || (*pos == ']') || (*pos == '`') || (*pos == '<') || (*pos == '>') || (*pos == '(') || (*pos == ')') ) { end = pos; } } UrlLen = end - start; StrBufAppendBufPlain(WrkBuf, start, UrlLen, 0); Offset = start - ChrPtr(Source); if (Offset != 0) StrBufAppendBufPlain(Target, ChrPtr(Source), Offset, 0); StrBufAppendPrintf(Target, "%ca href=%c%s%c TARGET=%c%s%c%c%s%c/A%c", LB, QU, ChrPtr(WrkBuf), QU, QU, TARGET, QU, RB, ChrPtr(WrkBuf), LB, RB); TrailerLen = StrLength(Source) - (end - ChrPtr(Source)); if (TrailerLen > 0) StrBufAppendBufPlain(Target, end, TrailerLen, 0); } void url(char *buf, size_t bufsize) { int len, UrlLen, Offset, TrailerLen, outpos; char *start, *end, *pos; char urlbuf[SIZ]; char outbuf[SIZ]; start = NULL; len = strlen(buf); if (len > bufsize) { syslog(LOG_WARNING, "URL: content longer than buffer!"); return; } end = buf + len; for (pos = buf; (pos < end) && (start == NULL); ++pos) { if (!strncasecmp(pos, "http://", 7)) start = pos; if (!strncasecmp(pos, "ftp://", 6)) start = pos; } if (start == NULL) return; for (pos = buf+len; pos > start; --pos) { if ( (!isprint(*pos)) || (isspace(*pos)) || (*pos == '{') || (*pos == '}') || (*pos == '|') || (*pos == '\\') || (*pos == '^') || (*pos == '[') || (*pos == ']') || (*pos == '`') || (*pos == '<') || (*pos == '>') || (*pos == '(') || (*pos == ')') ) { end = pos; } } UrlLen = end - start; if (UrlLen > sizeof(urlbuf)){ syslog(LOG_WARNING, "URL: content longer than buffer!"); return; } memcpy(urlbuf, start, UrlLen); urlbuf[UrlLen] = '\0'; Offset = start - buf; if ((Offset != 0) && (Offset < sizeof(outbuf))) memcpy(outbuf, buf, Offset); outpos = snprintf(&outbuf[Offset], sizeof(outbuf) - Offset, "%ca href=%c%s%c TARGET=%c%s%c%c%s%c/A%c", LB, QU, urlbuf, QU, QU, TARGET, QU, RB, urlbuf, LB, RB); if (outpos >= sizeof(outbuf) - Offset) { syslog(LOG_WARNING, "URL: content longer than buffer!"); return; } TrailerLen = len - (end - start); if (TrailerLen > 0) memcpy(outbuf + Offset + outpos, end, TrailerLen); if (Offset + outpos + TrailerLen > bufsize) { syslog(LOG_WARNING, "URL: content longer than buffer!"); return; } memcpy (buf, outbuf, Offset + outpos + TrailerLen); *(buf + Offset + outpos + TrailerLen) = '\0'; } webcit-8.24-dfsg.orig/http_datestring.c0000644000175000017500000000365012271477123017753 0ustar michaelmichael#include "webcit.h" /** HTTP Months - do not translate - these are not for human consumption */ static char *httpdate_months[] = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" }; /** HTTP Weekdays - do not translate - these are not for human consumption */ static char *httpdate_weekdays[] = { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" }; /** * \brief Supplied with a unix timestamp, generate a textual time/date stamp * \param buf the return buffer * \param n the size of the buffer * \param xtime the time to format as string */ void http_datestring(char *buf, size_t n, time_t xtime) { struct tm t; long offset; char offsign; localtime_r(&xtime, &t); /** Convert "seconds west of GMT" to "hours/minutes offset" */ #ifdef HAVE_STRUCT_TM_TM_GMTOFF offset = t.tm_gmtoff; #else offset = timezone; #endif if (offset > 0) { offsign = '+'; } else { offset = 0L - offset; offsign = '-'; } offset = ( (offset / 3600) * 100 ) + ( offset % 60 ); snprintf(buf, n, "%s, %02d %s %04d %02d:%02d:%02d %c%04ld", httpdate_weekdays[t.tm_wday], t.tm_mday, httpdate_months[t.tm_mon], t.tm_year + 1900, t.tm_hour, t.tm_min, t.tm_sec, offsign, offset ); } void tmplput_nowstr(StrBuf *Target, WCTemplputParams *TP) { char buf[64]; long bufused; time_t now; now = time(NULL); #ifdef HAVE_SOLARIS_LOCALTIME_R asctime_r(localtime(&now), buf, sizeof(buf)); #else asctime_r(localtime(&now), buf); #endif bufused = strlen(buf); if ((bufused > 0) && (buf[bufused - 1] == '\n')) { buf[bufused - 1] = '\0'; bufused --; } StrEscAppend(Target, NULL, buf, 0, 0); } void tmplput_nowno(StrBuf *Target, WCTemplputParams *TP) { time_t now; now = time(NULL); StrBufAppendPrintf(Target, "%ld", now); } void InitModule_DATE (void) { RegisterNamespace("DATE:NOW:STR", 0, 0, tmplput_nowstr, NULL, CTX_NONE); RegisterNamespace("DATE:NOW:NO", 0, 0, tmplput_nowno, NULL, CTX_NONE); } webcit-8.24-dfsg.orig/sieve.c0000644000175000017500000006217512271477123015672 0ustar michaelmichael/* * Copyright (c) 1996-2012 by the citadel.org team * * This program is open source software. You can redistribute it and/or * modify it under the terms of the GNU General Public License version 3. * * This program 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. * * FIXME: add logic to exclude the webcit-generated script from the manual script selection */ #include "webcit.h" CtxType CTX_SIEVELIST = CTX_NONE; CtxType CTX_SIEVESCRIPT = CTX_NONE; #define MAX_SCRIPTS 100 #define MAX_RULES 50 #define RULES_SCRIPT "__WebCit_Generated_Script__" /* * Helper function for output_sieve_rule() to output strings with quotes escaped */ void osr_sanitize(char *str) { int i, len; if (str == NULL) return; len = strlen(str); for (i=0; i 0) { for (i=0; iIsActive; } int ConditionalSieveScriptIsRulesScript(StrBuf *Target, WCTemplputParams *TP) { SieveListing *SieveList = (SieveListing *)CTX(CTX_SIEVELIST); return SieveList->IsActive; } void tmplput_SieveScriptName(StrBuf *Target, WCTemplputParams *TP) { SieveListing *SieveList = (SieveListing *)CTX(CTX_SIEVELIST); StrBufAppendTemplate(Target, TP, SieveList->Name, 0); } void tmplput_SieveScriptContent(StrBuf *Target, WCTemplputParams *TP) { SieveListing *SieveList = (SieveListing *)CTX(CTX_SIEVELIST); StrBufAppendTemplate(Target, TP, SieveList->Content, 0); } void FreeSieveListing(void *vSieveListing) { SieveListing *List = (SieveListing*) vSieveListing; FreeStrBuf(&List->Name); free(List); } HashList *GetSieveScriptListing(StrBuf *Target, WCTemplputParams *TP) { wcsession *WCC = WC; StrBuf *Line; int num_scripts = 0; int rules_script_active = 0; int have_rules_script = 0; const char *pch; HashPos *it; int Done = 0; SieveListing *Ruleset; if (WCC->KnownSieveScripts != NULL) { return WCC->KnownSieveScripts; } serv_puts("MSIV listscripts"); Line = NewStrBuf(); StrBuf_ServGetln(Line); if (GetServerStatus(Line, NULL) == 1) { WCC->KnownSieveScripts = NewHash(1, Flathash); while(!Done && (StrBuf_ServGetln(Line) >= 0) ) if ( (StrLength(Line)==3) && !strcmp(ChrPtr(Line), "000")) { Done = 1; } else { pch = NULL; Ruleset = (SieveListing *) malloc(sizeof(SieveListing)); Ruleset->Name = NewStrBufPlain(NULL, StrLength(Line)); StrBufExtract_NextToken(Ruleset->Name, Line, &pch, '|'); Ruleset->IsActive = StrBufExtractNext_int(Line, &pch, '|'); Ruleset->Content = NULL; if (!strcasecmp(ChrPtr(Ruleset->Name), RULES_SCRIPT)) { Ruleset->IsRulesScript = 1; have_rules_script = 1; if (Ruleset->IsActive) { rules_script_active = 1; PutBstr(HKEY("__SIEVE:RULESSCRIPT"), NewStrBufPlain(HKEY("1"))); } } Put(WCC->KnownSieveScripts, IKEY(num_scripts), Ruleset, FreeSieveListing); ++num_scripts; } } if ((num_scripts > 0) && (rules_script_active == 0)) { PutBstr(HKEY("__SIEVE:EXTERNAL_SCRIPT"), NewStrBufPlain(HKEY("1"))); } if (num_scripts > have_rules_script) { long rc = 0; long len; const char *Key; void *vRuleset; /* * ok; we have custom scripts, expose that via bstr, and load the payload. */ PutBstr(HKEY("__SIEVE:HAVE_EXTERNAL_SCRIPT"), NewStrBufPlain(HKEY("1"))); it = GetNewHashPos(WCC->KnownSieveScripts, 0); while (GetNextHashPos(WCC->KnownSieveScripts, it, &len, &Key, &vRuleset) && (vRuleset != NULL)) { Ruleset = (SieveListing *) vRuleset; serv_printf("MSIV getscript|%s", ChrPtr(Ruleset->Name)); StrBuf_ServGetln(Line); if (GetServerStatus(Line, NULL) == 1) { Ruleset->Content = NewStrBuf(); Done = 0; while(!Done && (rc = StrBuf_ServGetln(Line), rc >= 0) ) if ( (StrLength(Line)==3) && !strcmp(ChrPtr(Line), "000")) { Done = 1; } else { if (StrLength(Ruleset->Content)>0) StrBufAppendBufPlain(Ruleset->Content, HKEY("\n"), 0); StrBufAppendBuf(Ruleset->Content, Line, 0); } if (rc < 0) break; } } } FreeStrBuf(&Line); return WCC->KnownSieveScripts; } typedef enum __eSieveHfield { from, tocc, subject, replyto, sender, resentfrom, resentto, envfrom, envto, xmailer, xspamflag, xspamstatus, listid, size, all } eSieveHfield; typedef enum __eSieveCompare { contains, notcontains, is, isnot, matches, notmatches } eSieveCompare; typedef enum __eSieveAction { keep, discard, reject, fileinto, redirect, vacation } eSieveAction; typedef enum __eSieveSizeComp { larger, smaller } eSieveSizeComp; typedef enum __eSieveFinal { econtinue, estop } eSieveFinal; typedef struct __SieveRule { int active; int sizeval; eSieveHfield hfield; eSieveCompare compare; StrBuf *htext; eSieveSizeComp sizecomp; eSieveAction Action; StrBuf *fileinto; StrBuf *redirect; StrBuf *automsg; eSieveFinal final; }SieveRule; int ConditionalSieveRule_hfield(StrBuf *Target, WCTemplputParams *TP) { SieveRule *Rule = (SieveRule *)CTX(CTX_SIEVESCRIPT); return GetTemplateTokenNumber(Target, TP, 3, from) == Rule->hfield; } int ConditionalSieveRule_compare(StrBuf *Target, WCTemplputParams *TP) { SieveRule *Rule = (SieveRule *)CTX(CTX_SIEVESCRIPT); return GetTemplateTokenNumber(Target, TP, 3, contains) == Rule->compare; } int ConditionalSieveRule_action(StrBuf *Target, WCTemplputParams *TP) { SieveRule *Rule = (SieveRule *)CTX(CTX_SIEVESCRIPT); return GetTemplateTokenNumber(Target, TP, 3, keep) == Rule->Action; } int ConditionalSieveRule_sizecomp(StrBuf *Target, WCTemplputParams *TP) { SieveRule *Rule = (SieveRule *)CTX(CTX_SIEVESCRIPT); return GetTemplateTokenNumber(Target, TP, 3, larger) == Rule->sizecomp; } int ConditionalSieveRule_final(StrBuf *Target, WCTemplputParams *TP) { SieveRule *Rule = (SieveRule *)CTX(CTX_SIEVESCRIPT); return GetTemplateTokenNumber(Target, TP, 3, econtinue) == Rule->final; } int ConditionalSieveRule_ThisRoom(StrBuf *Target, WCTemplputParams *TP) { SieveRule *Rule = (SieveRule *)CTX(CTX_SIEVESCRIPT); return GetTemplateTokenNumber(Target, TP, 3, econtinue) == Rule->final; } int ConditionalSieveRule_Active(StrBuf *Target, WCTemplputParams *TP) { SieveRule *Rule = (SieveRule *)CTX(CTX_SIEVESCRIPT); return Rule->active; } void tmplput_SieveRule_htext(StrBuf *Target, WCTemplputParams *TP) { SieveRule *Rule = (SieveRule *)CTX(CTX_SIEVESCRIPT); StrBufAppendTemplate(Target, TP, Rule->htext, 0); } void tmplput_SieveRule_fileinto(StrBuf *Target, WCTemplputParams *TP) { SieveRule *Rule = (SieveRule *)CTX(CTX_SIEVESCRIPT); StrBufAppendTemplate(Target, TP, Rule->fileinto, 0); } void tmplput_SieveRule_redirect(StrBuf *Target, WCTemplputParams *TP) { SieveRule *Rule = (SieveRule *)CTX(CTX_SIEVESCRIPT); StrBufAppendTemplate(Target, TP, Rule->redirect, 0); } void tmplput_SieveRule_automsg(StrBuf *Target, WCTemplputParams *TP) { SieveRule *Rule = (SieveRule *)CTX(CTX_SIEVESCRIPT); StrBufAppendTemplate(Target, TP, Rule->automsg, 0); } void tmplput_SieveRule_sizeval(StrBuf *Target, WCTemplputParams *TP) { SieveRule *Rule = (SieveRule *)CTX(CTX_SIEVESCRIPT); StrBufAppendPrintf(Target, "%d", Rule->sizeval); } void tmplput_SieveRule_lookup_FileIntoRoom(StrBuf *Target, WCTemplputParams *TP) { void *vRoom; SieveRule *Rule = (SieveRule *)CTX(CTX_SIEVESCRIPT); wcsession *WCC = WC; HashList *Rooms = GetRoomListHashLKRA(Target, TP); GetHash(Rooms, SKEY(Rule->fileinto), &vRoom); WCC->ThisRoom = (folder*) vRoom; } void FreeSieveRule(void *vRule) { SieveRule *Rule = (SieveRule*) vRule; FreeStrBuf(&Rule->htext); FreeStrBuf(&Rule->fileinto); FreeStrBuf(&Rule->redirect); FreeStrBuf(&Rule->automsg); free(Rule); } #define WC_RULE_HEADER "# WEBCIT_RULE|" HashList *GetSieveRules(StrBuf *Target, WCTemplputParams *TP) { StrBuf *Line = NULL; StrBuf *EncodedRule = NULL; int n = 0; const char *pch = NULL; HashList *SieveRules = NULL; int Done = 0; SieveRule *Rule = NULL; SieveRules = NewHash(1, Flathash); serv_printf("MSIV getscript|"RULES_SCRIPT); Line = NewStrBuf(); EncodedRule = NewStrBuf(); StrBuf_ServGetln(Line); if (GetServerStatus(Line, NULL) == 1) { while(!Done && (StrBuf_ServGetln(Line) >= 0) ) if ( (StrLength(Line)==3) && !strcmp(ChrPtr(Line), "000")) { Done = 1; } else { pch = NULL; /* We just care for our encoded header and skip everything else */ if ((StrLength(Line) > sizeof(WC_RULE_HEADER) - 1) && (!strncasecmp(ChrPtr(Line), HKEY(WC_RULE_HEADER)))) { StrBufSkip_NTokenS(Line, &pch, '|', 1); n = StrBufExtractNext_int(Line, &pch, '|'); StrBufExtract_NextToken(EncodedRule, Line, &pch, '|'); StrBufDecodeBase64(EncodedRule); Rule = (SieveRule*) malloc(sizeof(SieveRule)); Rule->htext = NewStrBufPlain (NULL, StrLength(EncodedRule)); Rule->fileinto = NewStrBufPlain (NULL, StrLength(EncodedRule)); Rule->redirect = NewStrBufPlain (NULL, StrLength(EncodedRule)); Rule->automsg = NewStrBufPlain (NULL, StrLength(EncodedRule)); /* Grab our existing values to populate */ pch = NULL; Rule->active = StrBufExtractNext_int(EncodedRule, &pch, '|'); StrBufExtract_NextToken(Line, EncodedRule, &pch, '|'); Rule->hfield = (eSieveHfield) GetTokenDefine(SKEY(Line), tocc); StrBufExtract_NextToken(Line, EncodedRule, &pch, '|'); Rule->compare = (eSieveCompare) GetTokenDefine(SKEY(Line), contains); StrBufExtract_NextToken(Rule->htext, EncodedRule, &pch, '|'); StrBufExtract_NextToken(Line, EncodedRule, &pch, '|'); Rule->sizecomp = (eSieveSizeComp) GetTokenDefine(SKEY(Line), larger); Rule->sizeval = StrBufExtractNext_int(EncodedRule, &pch, '|'); StrBufExtract_NextToken(Line, EncodedRule, &pch, '|'); Rule->Action = (eSieveAction) GetTokenDefine(SKEY(Line), keep); StrBufExtract_NextToken(Rule->fileinto, EncodedRule, &pch, '|'); StrBufExtract_NextToken(Rule->redirect, EncodedRule, &pch, '|'); StrBufExtract_NextToken(Rule->automsg, EncodedRule, &pch, '|'); StrBufExtract_NextToken(Line, EncodedRule, &pch, '|'); Rule->final = (eSieveFinal) GetTokenDefine(SKEY(Line), econtinue); Put(SieveRules, IKEY(n), Rule, FreeSieveRule); n++; } } } while (n < MAX_RULES) { Rule = (SieveRule*) malloc(sizeof(SieveRule)); memset(Rule, 0, sizeof(SieveRule)); Put(SieveRules, IKEY(n), Rule, FreeSieveRule); n++; } FreeStrBuf(&EncodedRule); FreeStrBuf(&Line); return SieveRules; } void SessionDetachModule_SIEVE (wcsession *sess) { DeleteHash(&sess->KnownSieveScripts); } void InitModule_SIEVE (void) { RegisterCTX(CTX_SIEVELIST); RegisterCTX(CTX_SIEVESCRIPT); REGISTERTokenParamDefine(from); REGISTERTokenParamDefine(tocc); REGISTERTokenParamDefine(subject); REGISTERTokenParamDefine(replyto); REGISTERTokenParamDefine(sender); REGISTERTokenParamDefine(resentfrom); REGISTERTokenParamDefine(resentto); REGISTERTokenParamDefine(envfrom); REGISTERTokenParamDefine(envto); REGISTERTokenParamDefine(xmailer); REGISTERTokenParamDefine(xspamflag); REGISTERTokenParamDefine(xspamstatus); REGISTERTokenParamDefine(listid); REGISTERTokenParamDefine(size); REGISTERTokenParamDefine(all); REGISTERTokenParamDefine(contains); REGISTERTokenParamDefine(notcontains); REGISTERTokenParamDefine(is); REGISTERTokenParamDefine(isnot); REGISTERTokenParamDefine(matches); REGISTERTokenParamDefine(notmatches); REGISTERTokenParamDefine(keep); REGISTERTokenParamDefine(discard); REGISTERTokenParamDefine(reject); REGISTERTokenParamDefine(fileinto); REGISTERTokenParamDefine(redirect); REGISTERTokenParamDefine(vacation); REGISTERTokenParamDefine(larger); REGISTERTokenParamDefine(smaller); /* these are c-keyworads, so do it by hand. */ RegisterTokenParamDefine(HKEY("continue"), econtinue); RegisterTokenParamDefine(HKEY("stop"), estop); RegisterIterator("SIEVE:SCRIPTS", 0, NULL, GetSieveScriptListing, NULL, NULL, CTX_SIEVELIST, CTX_NONE, IT_NOFLAG); RegisterConditional("COND:SIEVE:SCRIPT:ACTIVE", 0, ConditionalSieveScriptIsActive, CTX_SIEVELIST); RegisterConditional("COND:SIEVE:SCRIPT:ISRULES", 0, ConditionalSieveScriptIsRulesScript, CTX_SIEVELIST); RegisterNamespace("SIEVE:SCRIPT:NAME", 0, 1, tmplput_SieveScriptName, NULL, CTX_SIEVELIST); RegisterNamespace("SIEVE:SCRIPT:CONTENT", 0, 1, tmplput_SieveScriptContent, NULL, CTX_SIEVELIST); RegisterIterator("SIEVE:RULES", 0, NULL, GetSieveRules, NULL, DeleteHash, CTX_SIEVESCRIPT, CTX_NONE, IT_NOFLAG); RegisterConditional("COND:SIEVE:ACTIVE", 1, ConditionalSieveRule_Active, CTX_SIEVESCRIPT); RegisterConditional("COND:SIEVE:HFIELD", 1, ConditionalSieveRule_hfield, CTX_SIEVESCRIPT); RegisterConditional("COND:SIEVE:COMPARE", 1, ConditionalSieveRule_compare, CTX_SIEVESCRIPT); RegisterConditional("COND:SIEVE:ACTION", 1, ConditionalSieveRule_action, CTX_SIEVESCRIPT); RegisterConditional("COND:SIEVE:SIZECOMP", 1, ConditionalSieveRule_sizecomp, CTX_SIEVESCRIPT); RegisterConditional("COND:SIEVE:FINAL", 1, ConditionalSieveRule_final, CTX_SIEVESCRIPT); RegisterConditional("COND:SIEVE:THISROOM", 1, ConditionalSieveRule_ThisRoom, CTX_SIEVESCRIPT); RegisterNamespace("SIEVE:SCRIPT:HTEXT", 0, 1, tmplput_SieveRule_htext, NULL, CTX_SIEVESCRIPT); RegisterNamespace("SIEVE:SCRIPT:SIZE", 0, 1, tmplput_SieveRule_sizeval, NULL, CTX_SIEVESCRIPT); RegisterNamespace("SIEVE:SCRIPT:FILEINTO", 0, 1, tmplput_SieveRule_fileinto, NULL, CTX_SIEVESCRIPT); RegisterNamespace("SIEVE:SCRIPT:REDIRECT", 0, 1, tmplput_SieveRule_redirect, NULL, CTX_SIEVESCRIPT); RegisterNamespace("SIEVE:SCRIPT:AUTOMSG", 0, 1, tmplput_SieveRule_automsg, NULL, CTX_SIEVESCRIPT); /* fetch our room into WCC->ThisRoom, to evaluate while iterating over rooms with COND:THIS:THAT:ROOM */ RegisterNamespace("SIEVE:SCRIPT:LOOKUP_FILEINTO", 0, 1, tmplput_SieveRule_lookup_FileIntoRoom, NULL, CTX_SIEVESCRIPT); WebcitAddUrlHandler(HKEY("save_sieve"), "", 0, save_sieve, 0); WebcitAddUrlHandler(HKEY("create_script"), "", 0, create_script, 0); WebcitAddUrlHandler(HKEY("delete_script"), "", 0, delete_script, 0); WebcitAddUrlHandler(HKEY("display_sieve_add_or_delete"), "", 0, display_sieve_add_or_delete, 0); } webcit-8.24-dfsg.orig/webcit.h0000644000175000017500000005441312271477123016035 0ustar michaelmichael/* * Copyright (c) 1987-2013 by the citadel.org team * * This program is open source software; you can redistribute it and/or * modify it under the terms of the GNU General Public License version 3. * * This program 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. */ #include "sysdep.h" #include #include #include #ifdef HAVE_UNISTD_H #include #endif #include #ifdef HAVE_FCNTL_H #include #endif #include #include #include #include #ifdef HAVE_SYS_TIME_H #include #endif #include #ifdef HAVE_LIMITS_H #include #endif #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #ifdef HAVE_ICONV #include #endif #ifdef ENABLE_NLS #ifdef HAVE_XLOCALE_H #include #endif #include #include #define _(string) gettext(string) #else #define _(string) (string) #endif #define IsEmptyStr(a) ((a)[0] == '\0') #define DO_DBG_QR 0 #define DBG_QR(x) if(DO_DBG_QR) _DBG_QR(x) #define DBG_QR2(x) if(DO_DBG_QR) _DBG_QR2(x) #include #include #undef PACKAGE #undef VERSION #undef PACKAGE_NAME #undef PACKAGE_STRING #undef PACKAGE_TARNAME #undef PACKAGE_VERSION #undef PACKAGE_BUGREPORT typedef struct wcsession wcsession; #include "sysdep.h" #include "subst.h" #include "messages.h" #include "paramhandling.h" #include "roomops.h" #include "preferences.h" #include "tcp_sockets.h" #include "utils.h" #ifdef HAVE_OPENSSL /* Work around RedHat's b0rken OpenSSL includes */ #define OPENSSL_NO_KRB5 #include #include #include extern char *ssl_cipher_list; #define DEFAULT_SSL_CIPHER_LIST "DEFAULT" /* See http://openssl.org/docs/apps/ciphers.html */ #endif #if SIZEOF_SIZE_T == SIZEOF_INT #define SIZE_T_FMT "%d" #else #define SIZE_T_FMT "%ld" #endif #if SIZEOF_LONG_UNSIGNED_INT == SIZEOF_INT #define ULONG_FMT "%d" #else #define ULONG_FMT "%ld" #endif #define CALENDAR_ROOM_NAME "Calendar" #define PRODID "-//Citadel//NONSGML Citadel Calendar//EN" #define SIZ 4096 /* generic buffer size */ #define TRACE syslog(LOG_DEBUG, "\033[3%dmCHECKPOINT: %s:%d\033[0m", ((__LINE__%6)+1), __FILE__, __LINE__) #ifdef UNDEF_MEMCPY #undef memcpy #endif #define SLEEPING 180 /* TCP connection timeout */ #define WEBCIT_TIMEOUT 900 /* WebCit session timeout */ #define PORT_NUM 2000 /* port number to listen on */ #define DEVELOPER_ID 0 #define CLIENT_ID 4 #define CLIENT_VERSION 824 /* This version of WebCit */ #define MINIMUM_CIT_VERSION 824 /* Minimum required version of Citadel server */ #define LIBCITADEL_MIN 821 /* Minimum required version of libcitadel */ #define DEFAULT_HOST "localhost" /* Default Citadel server */ #define DEFAULT_PORT "504" #define TARGET "webcit01" /* Window target for inline URL's */ #define HOUSEKEEPING 15 /* Housekeeping frequency */ #define MAX_WORKER_THREADS 250 #define LISTEN_QUEUE_LENGTH 100 /* listen() backlog queue */ #define USERCONFIGROOM "My Citadel Config" #define DEFAULT_MAXMSGS 20 #ifdef LIBCITADEL_VERSION_NUMBER #if LIBCITADEL_VERSION_NUMBER < LIBCITADEL_MIN #error libcitadel is too old. Please upgrade it before continuing. #endif #endif #define SRV_STATUS_MSG(ServerLineBuf) (ChrPtr(ServerLineBuf) + 4), (StrLength(ServerLineBuf) - 4) #define MAJORCODE(a) (((int)(a / 100) ) * 100) #define LISTING_FOLLOWS 100 #define CIT_OK 200 #define MORE_DATA 300 #define SEND_LISTING 400 #define ERROR 500 #define BINARY_FOLLOWS 600 #define SEND_BINARY 700 #define START_CHAT_MODE 800 #define ASYNC_MSG 900 #define MINORCODE(a) (a % 100) #define ASYNC_GEXP 02 #define INTERNAL_ERROR 10 #define TOO_BIG 11 #define ILLEGAL_VALUE 12 #define NOT_LOGGED_IN 20 #define CMD_NOT_SUPPORTED 30 #define SERVER_SHUTTING_DOWN 31 #define PASSWORD_REQUIRED 40 #define ALREADY_LOGGED_IN 41 #define USERNAME_REQUIRED 42 #define HIGHER_ACCESS_REQUIRED 50 #define MAX_SESSIONS_EXCEEDED 51 #define RESOURCE_BUSY 52 #define RESOURCE_NOT_OPEN 53 #define NOT_HERE 60 #define INVALID_FLOOR_OPERATION 61 #define NO_SUCH_USER 70 #define FILE_NOT_FOUND 71 #define ROOM_NOT_FOUND 72 #define NO_SUCH_SYSTEM 73 #define ALREADY_EXISTS 74 #define MESSAGE_NOT_FOUND 75 /* * NLI is the string that shows up in a who's online listing for sessions * that are active but do not (yet) have a user logged in. */ #define NLI "(not logged in)" /* * Expiry policy for the autopurger */ #define EXPIRE_NEXTLEVEL 0 /* Inherit expiration policy */ #define EXPIRE_MANUAL 1 /* Don't expire messages at all */ #define EXPIRE_NUMMSGS 2 /* Keep only latest n messages */ #define EXPIRE_AGE 3 /* Expire messages after n days */ typedef struct __ExpirePolicy { int expire_mode; int expire_value; } ExpirePolicy; void LoadExpirePolicy(GPEXWhichPolicy which); void SaveExpirePolicyFromHTTP(GPEXWhichPolicy which); /* * Linked list of session variables encoded in an x-www-urlencoded content type */ typedef struct urlcontent urlcontent; struct urlcontent { char url_key[32]; /* key */ StrBuf *url_data; /* value */ }; /* * Information about the Citadel server to which we are connected */ typedef struct _serv_info { int serv_pid; /* Process ID of the Citadel server */ StrBuf *serv_nodename; /* Node name of the Citadel server */ StrBuf *serv_humannode; /* Juman readable node name of the Citadel server */ StrBuf *serv_fqdn; /* Fully qualified Domain Name (such as uncensored.citadel.org) */ StrBuf *serv_software; /* Free form text description of the server software in use */ int serv_rev_level; /* Server version number (times 100) */ StrBuf *serv_bbs_city; /* Geographic location of the Citadel server */ StrBuf *serv_sysadm; /* Name of system administrator */ int serv_supports_ldap; /* is the server linked against an ldap tree for adresses? */ int serv_newuser_disabled; /* Has the server disabled self-service new user creation? */ StrBuf *serv_default_cal_zone; /* Default timezone for unspecified calendar items */ int serv_supports_sieve; /* Server supports Sieve mail filtering */ int serv_fulltext_enabled; /* Full text index is enabled */ StrBuf *serv_svn_revision; /* svn or git revision of the server */ int serv_supports_openid; /* Server supports authentication via OpenID */ int serv_supports_guest; /* Server supports unauthenticated guest logins */ } ServInfo; typedef struct _disp_cal { icalcomponent *cal; /* cal items for display */ long cal_msgnum; /* cal msgids for display */ char *from; /* owner of this component */ int unread; /* already seen by the user? */ time_t event_start; time_t event_end; int multi_day_event; int is_repeat; icalcomponent *SortBy; /* cal items for display */ icalproperty_status Status; } disp_cal; typedef struct _IcalKindEnumMap { const char *Name; long NameLen; icalproperty_kind map; } IcalKindEnumMap; typedef struct _IcalMethodEnumMap { const char *Name; long NameLen; icalproperty_method map; } IcalMethodEnumMap; /* * Address book entry (keep it short and sweet, it's just a quickie lookup * which we can use to get to the real meat and bones later) */ typedef struct _addrbookent { char ab_name[64]; /* name string */ long ab_msgnum; /* message number of address book entry */ } addrbookent; #define AJAX (1<<0) #define ANONYMOUS (1<<1) #define NEED_URL (1<<2) #define XHTTP_COMMANDS (1<<3) #define BOGUS (1<<4) #define URLNAMESPACE (1<<4) #define LOGCHATTY (1<<5) #define COOKIEUNNEEDED (1<<6) #define ISSTATIC (1<<7) #define FORCE_SESSIONCLOSE (1<<8) #define PARSE_REST_URL (1<<9) #define PROHIBIT_STARTPAGE (1<<10) #define DATEFMT_FULL 0 #define DATEFMT_BRIEF 1 #define DATEFMT_RAWDATE 2 #define DATEFMT_LOCALEDATE 3 long webcit_fmt_date(char *buf, size_t siz, time_t thetime, int Format); typedef enum _RESTDispatchID { ExistsID, PutID, DeleteID } RESTDispatchID; typedef int (*WebcitRESTDispatchID)(RESTDispatchID WhichAction, int IgnoreFloor); typedef void (*WebcitHandlerFunc)(void); typedef struct _WebcitHandler{ WebcitHandlerFunc F; WebcitRESTDispatchID RID; long Flags; StrBuf *Name; StrBuf *DisplayName; } WebcitHandler; void WebcitAddUrlHandler(const char * UrlString, long UrlSLen, const char *DisplayName, long dslen, WebcitHandlerFunc F, long Flags); typedef struct _headereval { ExamineMsgHeaderFunc evaluator; int Type; } headereval; struct attach_link { char partnum[32]; char html[1024]; }; enum { eUp, eDown, eNone }; enum { eGET, ePOST, eOPTIONS, ePROPFIND, ePUT, eDELETE, eHEAD, eMOVE, eCOPY, eREPORT, eNONE }; extern const char *ReqStrs[eNONE]; #define NO_AUTH 0 #define AUTH_COOKIE 1 #define AUTH_BASIC 2 typedef struct _HdrRefs { long eReqType; /* HTTP method */ int desired_session; int SessionKey; int got_auth; int DontNeedAuth; long ContentLength; time_t if_modified_since; int gzip_ok; /* Nonzero if Accept-encoding: gzip */ int prohibit_caching; int dav_depth; int Static; /* these are references into Hdr->HTTPHeaders, so we don't need to free them. */ StrBuf *ContentType; StrBuf *RawCookie; StrBuf *ReqLine; StrBuf *browser_host; StrBuf *browser_language; StrBuf *user_agent; StrBuf *plainauth; StrBuf *dav_ifmatch; const WebcitHandler *Handler; } HdrRefs; typedef struct _ParsedHttpHdrs { int http_sock; /* HTTP server socket */ const char *Pos; StrBuf *ReadBuf; StrBuf *c_username; StrBuf *c_password; StrBuf *c_roomname; StrBuf *c_language; StrBuf *this_page; /* URL of current page */ StrBuf *PlainArgs; StrBuf *HostHeader; HashList *urlstrings; /* variables passed to webcit in a URL */ HashList *HTTPHeaders; /* the headers the client sent us */ int nWildfireHeaders; /* how many wildfire headers did we already send? */ HdrRefs HR; } ParsedHttpHdrs; /* * One of these is kept for each active Citadel session. * HTTP transactions are bound to one at a time. */ struct wcsession { /* infrastructural members */ wcsession *next; /* Linked list */ pthread_mutex_t SessionMutex; /* mutex for exclusive access */ int wc_session; /* WebCit session ID */ int killthis; /* Nonzero == purge this session */ int ctdl_pid; /* Session ID on the Citadel server */ int nonce; /* session nonce (to prevent session riding) */ int inuse; /* set to nonzero if bound to a running thread */ /* Session local Members */ int serv_sock; /* Client socket to Citadel server */ StrBuf *ReadBuf; /* linebuffered reads from the server */ StrBuf *MigrateReadLineBuf; /* here we buffer legacy server read stuff */ const char *ReadPos; /* whats our read position in ReadBuf? */ int last_chat_seq; /* When in chat - last message seq# we saw */ time_t lastreq; /* Timestamp of most recent HTTP */ time_t last_pager_check; /* last time we polled for instant msgs */ ServInfo *serv_info; /* Information about the citserver we're connected to */ StrBuf *PushedDestination; /* Where to go after login, registration, etc. */ /* Request local Members */ StrBuf *CLineBuf; /* linebuffering client stuff */ ParsedHttpHdrs *Hdr; StrBuf *WBuf; /* Our output buffer */ StrBuf *HBuf; /* Our HeaderBuffer */ StrBuf *WFBuf; /* Wildfire error logging buffer */ StrBuf *trailing_javascript; /* extra javascript to be appended to page */ StrBuf *ImportantMsg; HashList *Directory; /* Parts of the directory URL in snippets */ const Floor *CurrentFloor; /* when Parsing REST, which floor are we on? */ /* accounting */ StrBuf *wc_username; /* login name of current user */ StrBuf *wc_fullname; /* Screen name of current user */ StrBuf *wc_password; /* Password of current user */ StrBuf *httpauth_pass; /* only for GroupDAV sessions */ int axlevel; /* this user's access level */ int is_aide; /* nonzero == this user is an Admin */ int connected; /* nonzero == we are connected to Citadel */ int logged_in; /* nonzero == we are logged in */ int need_regi; /* This user needs to register. */ int need_vali; /* New users require validation. */ /* Preferences */ StrBuf *cs_inet_email; /* User's preferred Internet addr. */ HashList *hash_prefs; /* WebCit preferences for this user */ StrBuf *DefaultCharset; /* Charset the user preferes */ int downloaded_prefs; /* Has the client download its prefs yet? */ int SavePrefsToServer; /* Should we save our preferences to the server at the end of the request? */ int selected_language; /* Language selected by user */ int time_format_cache; /* which timeformat does our user like? */ folder CurRoom; /* information about our current room */ const folder *ThisRoom; /* if REST found a room, remember it here. */ /* next/previous room thingabob */ struct march *march; /* march mode room list */ char ugname[128]; /* where does 'ungoto' take us */ long uglsn; /* last seen message number for ungoto */ /* Uploading; mime attachments for composing messages */ HashList *attachments; /* list of attachments for 'enter message' */ int upload_length; /* content length of http-uploaded data */ StrBuf *upload; /* pointer to http-uploaded data */ StrBuf *upload_filename; /* filename of http-uploaded data */ char upload_content_type[256]; /* content type of http-uploaded data */ int remember_new_mail; /* last count of new mail messages */ /* Roomiew control */ HashList *Floors; /* floors our citserver has hashed numeric for quicker access*/ HashList *FloorsByName; /* same but hashed by its name */ HashList *Rooms; /* our directory structure as loaded by LKRA */ HashList *summ; /* list of messages for mailbox summary view */ /** Perhaps these should be within a struct instead */ long startmsg; /* message number to start at */ long maxmsgs; /* maximum messages to display */ long num_displayed; /* number of messages actually displayed */ HashList *disp_cal_items; /* sorted list of calendar items; startdate is the sort criteria. */ char last_chat_user[256]; StrBuf *IconTheme; /* Icontheme setting */ /* Iconbar controls */ int cache_max_folders; int cache_num_floors; long *IBSettingsVec; /* which icons should be shown / not shown? */ const StrBuf *floordiv_expanded; /* which floordiv currently expanded */ int ib_wholist_expanded; int ib_roomlist_expanded; /* our known Sieve scripts; loaded by SIEVE:SCRIPTS iterator. */ HashList *KnownSieveScripts; /* Transcoding cache buffers; used to avoid to frequent realloc */ StrBuf *ConvertBuf1; StrBuf *ConvertBuf2; /* cache stuff for templates. TODO: find a smarter way */ HashList *ServCfg; /* cache our server config for editing */ HashList *InetCfg; /* Our inet server config for editing */ ExpirePolicy Policy[maxpolicy]; /* used by the blog viewer */ int bptlid; /* hash of thread currently being rendered */ }; typedef void (*Header_Evaluator)(StrBuf *Line, ParsedHttpHdrs *hdr); typedef struct _HttpHeader { Header_Evaluator H; StrBuf *Val; int HaveEvaluator; } OneHttpHeader; void RegisterHeaderHandler(const char *Name, long Len, Header_Evaluator F); enum { S_SHUTDOWN, S_SPAWNER, MAX_SEMAPHORES }; #ifndef num_parms #define num_parms(source) num_tokens(source, '|') #endif #define site_prefix (WC ? (WC->Hdr->HostHeader) : NULL) /* Per-session data */ #define WC ((struct wcsession *)pthread_getspecific(MyConKey)) extern pthread_key_t MyConKey; /* Per-thread SSL context */ #ifdef HAVE_OPENSSL #define THREADSSL ((SSL *)pthread_getspecific(ThreadSSL)) extern pthread_key_t ThreadSSL; extern char ctdl_key_dir[PATH_MAX]; extern char file_crpt_file_key[PATH_MAX]; extern char file_crpt_file_csr[PATH_MAX]; extern char file_crpt_file_cer[PATH_MAX]; void init_ssl(void); void endtls(void); void ssl_lock(int mode, int n, const char *file, int line); int starttls(int sock); extern SSL_CTX *ssl_ctx; int client_read_sslbuffer(StrBuf *buf, int timeout); void client_write_ssl(const StrBuf *Buf); #endif extern int is_https; extern int follow_xff; extern char *server_cookie; extern char *ctdlhost, *ctdlport; extern char *axdefs[]; extern int num_threads_existing; extern int num_threads_executing; extern int setup_wizard; extern char wizard_filename[]; void InitialiseSemaphores(void); void begin_critical_section(int which_one); void end_critical_section(int which_one); extern void do_404(void); void http_redirect(const char *); #ifdef UBER_VERBOSE_DEBUGGING #define wc_printf(...) wcc_printf(__FILE__, __FUNCTION__, __LINE__, __VA_ARGS__) void wcc_printf(const char *FILE, const char *FUNCTION, long LINE, const char *format, ...); #else void wc_printf(const char *format,...)__attribute__((__format__(__printf__,1,2))); #endif void hprintf(const char *format,...)__attribute__((__format__(__printf__,1,2))); void CheckAuthBasic(ParsedHttpHdrs *hdr); void GetAuthBasic(ParsedHttpHdrs *hdr); void sleeeeeeeeeep(int); size_t wc_strftime(char *s, size_t max, const char *format, const struct tm *tm); void fmt_time(char *buf, size_t siz, time_t thetime); void httpdate(char *buf, time_t thetime); time_t httpdate_to_timestamp(StrBuf *buf); void end_webcit_session(void); void cookie_to_stuff(StrBuf *cookie, int *session, StrBuf *user, StrBuf *pass, StrBuf *room, StrBuf *language ); void locate_host(StrBuf *TBuf, int); void become_logged_in(const StrBuf *user, const StrBuf *pass, StrBuf *serv_response); void display_login(void); void display_openids(void); void display_default_landing_page(void); void do_welcome(void); void display_reg(int during_login); void display_main_menu(void); void display_aide_menu(void); void RegisterEmbeddableMimeType(const char *MimeType, long MTLen, int Priority); void CreateMimeStr(void); void pop_destination(void); void FmOut(StrBuf *Target, const char *align, const StrBuf *Source); void wDumpContent(int); void PutRequestLocalMem(void *Data, DeleteHashDataFunc DeleteIt); void output_headers( int do_httpheaders, int do_htmlhead, int do_room_banner, int unset_cookies, int suppress_check, int cache); void output_custom_content_header(const char *ctype); void cdataout(char *rawdata); void url(char *buf, size_t bufsize); void UrlizeText(StrBuf* Target, StrBuf *Source, StrBuf *WrkBuf); void display_vcard(StrBuf *Target, wc_mime_attachment *Mime, char alpha, int full, char **storename, long msgnum); void display_success(const char *successmessage); void shutdown_sessions(void); StrBuf *load_mimepart(long msgnum, char *partnum); void MimeLoadData(wc_mime_attachment *Mime); void do_edit_vcard(long msgnum, char *partnum, message_summary *VCMsg, wc_mime_attachment *VCAtt, const char *return_to, const char *force_room); void select_user_to_edit(const char *preselect); void convenience_page(const char *titlebarcolor, const char *titlebarmsg, const char *messagetext); void output_html(const char *, int, int, StrBuf *, StrBuf *); ssize_t write(int fd, const void *buf, size_t count); void cal_process_attachment(wc_mime_attachment *Mime); void begin_ajax_response(void); void end_ajax_response(void); extern char *months[]; extern char *days[]; long locate_user_vcard_in_this_room(message_summary **VCMsg, wc_mime_attachment **VCAtt); void http_transmit_thing(const char *content_type, int is_static); long unescape_input(char *buf); void check_thread_pool_size(void); void StrEndTab(StrBuf *Target, int tabnum, int num_tabs); void StrBeginTab(StrBuf *Target, int tabnum, int num_tabs, StrBuf **Names); void StrTabbedDialog(StrBuf *Target, int num_tabs, StrBuf *tabnames[]); void tabbed_dialog(int num_tabs, char *tabnames[]); void begin_tab(int tabnum, int num_tabs); void end_tab(int tabnum, int num_tabs); int get_time_format_cached (void); void display_wiki_pagelist(void); void str_wiki_index(char *); HashList *GetRoomListHashLKRA(StrBuf *Target, WCTemplputParams *TP); /* actual supported locales */ void TmplGettext(StrBuf *Target, WCTemplputParams *TP); void set_selected_language(const char *); void go_selected_language(void); void stop_selected_language(void); const char *get_selected_language(void); void utf8ify_rfc822_string(char **buf); void begin_burst(void); long end_burst(void); void AppendImportantMessage(const char *pch, long len); void http_datestring(char *buf, size_t n, time_t xtime); /* These should be empty, but we have them for testing */ #define DEFAULT_HTTPAUTH_USER "" #define DEFAULT_HTTPAUTH_PASS "" /* Exit codes 101 through 109 are initialization failures so we don't want to * just keep respawning indefinitely. */ #define WC_EXIT_BIND 101 /* Can't bind to the port */ #define WC_EXIT_SSL 102 /* Can't initialize SSL */ #define WC_TIMEFORMAT_NONE 0 #define WC_TIMEFORMAT_AMPM 1 #define WC_TIMEFORMAT_24 2 extern int time_to_die; /* Nonzero if server is shutting down */ extern int DisableGzip; /* * Array type for a blog post. The first message is the post; the rest are comments */ struct blogpost { int top_level_id; long *msgs; /* Array of msgnums for messages we are displaying */ int num_msgs; /* Number of msgnums stored in 'msgs' */ int alloc_msgs; /* Currently allocated size of array */ }; /* * Data which gets returned from a call to blogview_learn_thread_references() */ struct bltr { int id; int refs; }; struct bltr blogview_learn_thread_references(long msgnum); void tmplput_blog_permalink(StrBuf *Target, WCTemplputParams *TP); void display_summary_page(void); HashList *GetValidDomainNames(StrBuf *Target, WCTemplputParams *TP); webcit-8.24-dfsg.orig/messages.h0000644000175000017500000002003612271477123016361 0ustar michaelmichael/* * Copyright (c) 1996-2013 by the citadel.org team * * This program is open source software. You can redistribute it and/or * modify it under the terms of the GNU General Public License, version 3. * * This program 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. */ extern CtxType CTX_MAILSUM; extern CtxType CTX_MIME_ATACH; extern HashList *MsgHeaderHandler; extern HashList *MimeRenderHandler; extern HashList *ReadLoopHandler; typedef struct wc_mime_attachment wc_mime_attachment; typedef void (*RenderMimeFunc)(StrBuf *Target, WCTemplputParams *TP, StrBuf *FoundCharset); typedef struct _RenderMimeFuncStruct { RenderMimeFunc f; } RenderMimeFuncStruct; struct wc_mime_attachment { int level; StrBuf *Name; StrBuf *FileName; StrBuf *PartNum; StrBuf *Disposition; StrBuf *ContentType; StrBuf *Charset; StrBuf *Data; size_t length; /* length of the mimeattachment */ long size_known; long lvalue; /* if we put a long... */ long msgnum; /* the message number on the citadel server derived from message_summary */ const RenderMimeFuncStruct *Renderer; }; void DestroyMime(void *vMime); #define MSGFLAG_READ (1<<0) typedef struct _message_summary { long msgnum; /* the message number on the citadel server */ int Flags; time_t date; /* its creation date */ int nhdr; int format_type; StrBuf *euid; StrBuf *from; /* the author */ StrBuf *to; /* the recipient */ StrBuf *subj; /* the title / subject */ StrBuf *reply_inreplyto; StrBuf *reply_references; StrBuf *ReplyTo; StrBuf *cccc; StrBuf *hnod; StrBuf *AllRcpt; StrBuf *Room; StrBuf *Rfca; StrBuf *EnvTo; StrBuf *OtherNode; const StrBuf *PartNum; HashList *Attachments; /* list of attachments */ HashList *Submessages; HashList *AttachLinks; HashList *AllAttach; int hasattachments; /* The mime part of the message */ wc_mime_attachment *MsgBody; } message_summary; void DestroyMessageSummary(void *vMsg); static inline message_summary* GetMessagePtrAt(int n, HashList *Summ) { const char *Key; long HKLen; void *vMsg; if (Summ == NULL) return NULL; GetHashAt(Summ, n, &HKLen, &Key, &vMsg); return (message_summary*) vMsg; } typedef void (*ExamineMsgHeaderFunc)(message_summary *Msg, StrBuf *HdrLine, StrBuf *FoundCharset); void evaluate_mime_part(StrBuf *Target, WCTemplputParams *TP); typedef enum _eCustomRoomRenderer { eUseDefault = VIEW_JOURNAL + 100, eReadEUIDS }eCustomRoomRenderer; enum { do_search, headers, readfwd, readnew, readold, readgt, readlt }; /** * @brief function to parse the | separated message headers list * @param Line the raw line with your message data * @param Msg put your parser results here... * @param ConversionBuffer if you need some workbuffer, don't free me! * @returns 0: failure, trash this message. 1: all right, store it */ typedef int (*load_msg_ptrs_detailheaders) (StrBuf *Line, const char **pos, message_summary *Msg, StrBuf *ConversionBuffer); typedef void (*readloop_servcmd)(char *buf, long bufsize); typedef struct _readloopstruct { ConstStr name; readloop_servcmd cmd; } readloop_struct; extern readloop_struct rlid[]; void readloop(long oper, eCustomRoomRenderer ForceRenderer); int read_message(StrBuf *Target, const char *tmpl, long tmpllen, long msgnum, const StrBuf *section, const StrBuf **OutMime); int load_message(message_summary *Msg, StrBuf *FoundCharset, StrBuf **Error); typedef struct _SharedMessageStatus { long load_seen; /* should read information be loaded */ long sortit; /* should we sort it using the standard sort API? */ long defaultsortorder; /* if we should sort it, which direction should be the default? */ long maxload; /* how many headers should we accept from the server? defaults to 10k */ long maxmsgs; /* how many message bodies do you want to load at most?*/ long startmsg; /* which is the start message? */ long nummsgs; /* How many messages are available to your view? */ long num_displayed; /* counted up for LoadMsgFromServer */ /* TODO: unclear who should access this and why */ long lowest_found; /* smallest Message ID found; */ long highest_found; /* highest Message ID found; */ } SharedMessageStatus; int load_msg_ptrs(const char *servcmd, const char *filter, SharedMessageStatus *Stat, load_msg_ptrs_detailheaders LH); typedef int (*GetParamsGetServerCall_func)(SharedMessageStatus *Stat, void **ViewSpecific, long oper, char *cmd, long len, char *filter, long flen); typedef int (*PrintViewHeader_func)(SharedMessageStatus *Stat, void **ViewSpecific); typedef int (*LoadMsgFromServer_func)(SharedMessageStatus *Stat, void **ViewSpecific, message_summary* Msg, int is_new, int i); typedef int (*RenderView_or_Tail_func)(SharedMessageStatus *Stat, void **ViewSpecific, long oper); typedef int (*View_Cleanup_func)(void **ViewSpecific); void RegisterReadLoopHandlerset( /** * RoomType: which View definition are you going to be called for */ int RoomType, /** * GetParamsGetServerCall should do the following: * * allocate your private context structure * * evaluate your commandline arguments, put results to your private struct. * * fill cmd with the command to load the message pointer list: * * might depend on bstr/oper depending on your needs * * might stay empty if no list should loaded and LoadMsgFromServer * is skipped. * * influence the behaviour by presetting values on SharedMessageStatus */ GetParamsGetServerCall_func GetParamsGetServerCall, /** * PrintpageHeader prints the surrounding information like iconbar, header etc. * by default, output_headers() is called. * */ PrintViewHeader_func PrintPageHeader, /** * PrintViewHeader is here to print informations infront of your messages. * The message list is already loaded & sorted (if) so you can evaluate * its result on the SharedMessageStatus struct. */ PrintViewHeader_func PrintViewHeader, /** * LH is the function, you specify if you want to load more than just message * numbers from the server during the listing fetch operation. */ load_msg_ptrs_detailheaders LH, /** * LoadMsgFromServer is called for every message in the message list: * * which is * * after 'startmsg' * * up to 'maxmsgs' after your 'startmsg' * * it should load and parse messages from citserer. * * depending on your needs you might want to print your message here... * * if cmd was empty, its skipped alltogether. */ LoadMsgFromServer_func LoadMsgFromServer, /** * RenderView_or_Tail is called last; * * if you used PrintViewHeader to print messages, you might want to print * trailing information here * * if you just pre-loaded your messages, put your render code here. */ RenderView_or_Tail_func RenderView_or_Tail, /** * ViewCleanup should just clear your private data so all your mem can go back to * VALgrindHALLA. * it also should release the content for delivery via end_burst() or wDumpContent(1); */ View_Cleanup_func ViewCleanup ); /* GetParamsGetServerCall PrintViewHeader LoadMsgFromServer RenderView_or_Tail */ int ParseMessageListHeaders_Detail(StrBuf *Line, const char **pos, message_summary *Msg, StrBuf *ConversionBuffer); /** * @brief function to register the availability to render a specific message * @param HeaderName Mimetype we know howto display * @param HdrNLen length... * @param InlineRenderable Should we announce to citserver that we want to receive these mimeparts immediately? * @param Priority if multipart/alternative; which mimepart/Renderer should be prefered? (only applies if InlineRenderable) */ void RegisterMimeRenderer(const char *HeaderName, long HdrNLen, RenderMimeFunc MimeRenderer, int InlineRenderable, int Priority); webcit-8.24-dfsg.orig/useredit.c0000644000175000017500000005611512271477123016400 0ustar michaelmichael/* * Copyright (c) 1996-2012 by the citadel.org team * * This program is open source software. You can redistribute it and/or * modify it under the terms of the GNU General Public License, version 3. * * This program 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. */ #include "webcit.h" #include "webserver.h" CtxType CTX_USERLIST = CTX_NONE; /* * show a list of available users to edit them * message the header message??? * preselect = which user should be selected in the browser */ void select_user_to_edit(const char *preselect) { output_headers(1, 0, 0, 0, 1, 0); do_template("aide_edituser_select"); end_burst(); } typedef struct _UserListEntry { int UID; int AccessLevel; int nLogons; int nPosts; StrBuf *UserName; StrBuf *Passvoid; time_t LastLogonT; /* Just available for Single users to view: */ unsigned int Flags; int DaysTillPurge; int HasBio; } UserListEntry; UserListEntry* NewUserListOneEntry(StrBuf *SerializedUser, const char *Pos) { UserListEntry *ul; if (StrLength(SerializedUser) < 8) return NULL; ul = (UserListEntry*) malloc(sizeof(UserListEntry)); ul->UserName = NewStrBuf(); ul->Passvoid = NewStrBuf(); StrBufExtract_NextToken(ul->UserName, SerializedUser, &Pos, '|'); StrBufExtract_NextToken(ul->Passvoid, SerializedUser, &Pos, '|'); ul->Flags = StrBufExtractNext_unsigned_long(SerializedUser, &Pos, '|'); ul->nLogons = StrBufExtractNext_int( SerializedUser, &Pos, '|'); ul->nPosts = StrBufExtractNext_int( SerializedUser, &Pos, '|'); ul->AccessLevel = StrBufExtractNext_int( SerializedUser, &Pos, '|'); ul->UID = StrBufExtractNext_int( SerializedUser, &Pos, '|'); ul->LastLogonT = StrBufExtractNext_long( SerializedUser, &Pos, '|'); ul->DaysTillPurge = StrBufExtractNext_int( SerializedUser, &Pos, '|'); return ul; } void DeleteUserListEntry(void *vUserList) { UserListEntry *ul = (UserListEntry*) vUserList; if (!ul) return; FreeStrBuf(&ul->UserName); FreeStrBuf(&ul->Passvoid); free(ul); } UserListEntry* NewUserListEntry(StrBuf *SerializedUserList) { const char *Pos = NULL; UserListEntry *ul; if (StrLength(SerializedUserList) < 8) return NULL; ul = (UserListEntry*) malloc(sizeof(UserListEntry)); ul->UserName = NewStrBuf(); ul->Passvoid = NewStrBuf(); StrBufExtract_NextToken(ul->UserName, SerializedUserList, &Pos, '|'); ul->AccessLevel = StrBufExtractNext_int( SerializedUserList, &Pos, '|'); ul->UID = StrBufExtractNext_int( SerializedUserList, &Pos, '|'); ul->LastLogonT = StrBufExtractNext_long(SerializedUserList, &Pos, '|'); ul->nLogons = StrBufExtractNext_int( SerializedUserList, &Pos, '|'); ul->nPosts = StrBufExtractNext_int( SerializedUserList, &Pos, '|'); StrBufExtract_NextToken(ul->Passvoid, SerializedUserList, &Pos, '|'); ul->Flags = 0; ul->HasBio = 0; ul->DaysTillPurge = -1; return ul; } /* * Sort by Username */ int CompareUserListName(const void *vUser1, const void *vUser2) { UserListEntry *u1 = (UserListEntry*) GetSearchPayload(vUser1); UserListEntry *u2 = (UserListEntry*) GetSearchPayload(vUser2); return strcmp(ChrPtr(u1->UserName), ChrPtr(u2->UserName)); } int CompareUserListNameRev(const void *vUser1, const void *vUser2) { UserListEntry *u1 = (UserListEntry*) GetSearchPayload(vUser1); UserListEntry *u2 = (UserListEntry*) GetSearchPayload(vUser2); return strcmp(ChrPtr(u2->UserName), ChrPtr(u1->UserName)); } int GroupchangeUserListName(const void *vUser1, const void *vUser2) { UserListEntry *u1 = (UserListEntry*) vUser1; UserListEntry *u2 = (UserListEntry*) vUser2; return ChrPtr(u2->UserName)[0] != ChrPtr(u1->UserName)[0]; } /* * Sort by access level */ int CompareAccessLevel(const void *vUser1, const void *vUser2) { UserListEntry *u1 = (UserListEntry*) GetSearchPayload(vUser1); UserListEntry *u2 = (UserListEntry*) GetSearchPayload(vUser2); return (u1->AccessLevel > u2->AccessLevel); } int CompareAccessLevelRev(const void *vUser1, const void *vUser2) { UserListEntry *u1 = (UserListEntry*) GetSearchPayload(vUser1); UserListEntry *u2 = (UserListEntry*) GetSearchPayload(vUser2); return (u2->AccessLevel > u1->AccessLevel); } int GroupchangeAccessLevel(const void *vUser1, const void *vUser2) { UserListEntry *u1 = (UserListEntry*) vUser1; UserListEntry *u2 = (UserListEntry*) vUser2; return u2->AccessLevel != u1->AccessLevel; } /* * Sort by UID */ int CompareUID(const void *vUser1, const void *vUser2) { UserListEntry *u1 = (UserListEntry*) GetSearchPayload(vUser1); UserListEntry *u2 = (UserListEntry*) GetSearchPayload(vUser2); return (u1->UID > u2->UID); } int CompareUIDRev(const void *vUser1, const void *vUser2) { UserListEntry *u1 = (UserListEntry*) GetSearchPayload(vUser1); UserListEntry *u2 = (UserListEntry*) GetSearchPayload(vUser2); return (u2->UID > u1->UID); } int GroupchangeUID(const void *vUser1, const void *vUser2) { UserListEntry *u1 = (UserListEntry*) vUser1; UserListEntry *u2 = (UserListEntry*) vUser2; return (u2->UID / 10) != (u1->UID / 10); } /* * Sort By Date /// TODO! */ int CompareLastLogon(const void *vUser1, const void *vUser2) { UserListEntry *u1 = (UserListEntry*) GetSearchPayload(vUser1); UserListEntry *u2 = (UserListEntry*) GetSearchPayload(vUser2); return (u1->LastLogonT > u2->LastLogonT); } int CompareLastLogonRev(const void *vUser1, const void *vUser2) { UserListEntry *u1 = (UserListEntry*) GetSearchPayload(vUser1); UserListEntry *u2 = (UserListEntry*) GetSearchPayload(vUser2); return (u2->LastLogonT > u1->LastLogonT); } int GroupchangeLastLogon(const void *vUser1, const void *vUser2) { UserListEntry *u1 = (UserListEntry*) vUser1; UserListEntry *u2 = (UserListEntry*) vUser2; return (u2->LastLogonT != u1->LastLogonT); } /* * Sort By Number of Logons */ int ComparenLogons(const void *vUser1, const void *vUser2) { UserListEntry *u1 = (UserListEntry*) GetSearchPayload(vUser1); UserListEntry *u2 = (UserListEntry*) GetSearchPayload(vUser2); return (u1->nLogons > u2->nLogons); } int ComparenLogonsRev(const void *vUser1, const void *vUser2) { UserListEntry *u1 = (UserListEntry*) GetSearchPayload(vUser1); UserListEntry *u2 = (UserListEntry*) GetSearchPayload(vUser2); return (u2->nLogons > u1->nLogons); } int GroupchangenLogons(const void *vUser1, const void *vUser2) { UserListEntry *u1 = (UserListEntry*) vUser1; UserListEntry *u2 = (UserListEntry*) vUser2; return (u2->nLogons / 100) != (u1->nLogons / 100); } /* * Sort By Number of Posts */ int ComparenPosts(const void *vUser1, const void *vUser2) { UserListEntry *u1 = (UserListEntry*) GetSearchPayload(vUser1); UserListEntry *u2 = (UserListEntry*) GetSearchPayload(vUser2); return (u1->nPosts > u2->nPosts); } int ComparenPostsRev(const void *vUser1, const void *vUser2) { UserListEntry *u1 = (UserListEntry*) GetSearchPayload(vUser1); UserListEntry *u2 = (UserListEntry*) GetSearchPayload(vUser2); return (u2->nPosts > u1->nPosts); } int GroupchangenPosts(const void *vUser1, const void *vUser2) { UserListEntry *u1 = (UserListEntry*) vUser1; UserListEntry *u2 = (UserListEntry*) vUser2; return (u2->nPosts / 100) != (u1->nPosts / 100); } HashList *iterate_load_userlist(StrBuf *Target, WCTemplputParams *TP) { int Done = 0; CompareFunc SortIt; HashList *Hash = NULL; StrBuf *Buf; UserListEntry* ul; int len; int UID; void *vData; WCTemplputParams SubTP; memset(&SubTP, 0, sizeof(WCTemplputParams)); serv_puts("LIST"); Buf = NewStrBuf(); StrBuf_ServGetln(Buf); if (GetServerStatus(Buf, NULL) == 1) { Hash = NewHash(1, Flathash); while (!Done) { len = StrBuf_ServGetln(Buf); if ((len <0) || ((len == 3) && !strcmp(ChrPtr(Buf), "000"))) { Done = 1; break; } ul = NewUserListEntry(Buf); if (ul == NULL) continue; Put(Hash, IKEY(ul->UID), ul, DeleteUserListEntry); } serv_puts("LBIO 1"); StrBuf_ServGetln(Buf); if (GetServerStatus(Buf, NULL) == 1) Done = 0; while (!Done) { len = StrBuf_ServGetln(Buf); if ((len <0) || ((len == 3) && !strcmp(ChrPtr(Buf), "000"))) { Done = 1; break; } UID = atoi(ChrPtr(Buf)); if (GetHash(Hash, IKEY(UID), &vData) && vData != 0) { ul = (UserListEntry*)vData; ul->HasBio = 1; } } SubTP.Filter.ContextType = CTX_USERLIST; SortIt = RetrieveSort(&SubTP, HKEY("USER"), HKEY("user:uid"), 0); if (SortIt != NULL) SortByPayload(Hash, SortIt); else SortByPayload(Hash, CompareUID); } FreeStrBuf(&Buf); return Hash; } void tmplput_USERLIST_UserName(StrBuf *Target, WCTemplputParams *TP) { UserListEntry *ul = (UserListEntry*) CTX(CTX_USERLIST); StrBufAppendTemplate(Target, TP, ul->UserName, 0); } void tmplput_USERLIST_Password(StrBuf *Target, WCTemplputParams *TP) { UserListEntry *ul = (UserListEntry*) CTX(CTX_USERLIST); StrBufAppendTemplate(Target, TP, ul->Passvoid, 0); } void tmplput_USERLIST_AccessLevelNo(StrBuf *Target, WCTemplputParams *TP) { UserListEntry *ul = (UserListEntry*) CTX(CTX_USERLIST); StrBufAppendPrintf(Target, "%d", ul->AccessLevel, 0); } void tmplput_USERLIST_AccessLevelStr(StrBuf *Target, WCTemplputParams *TP) { UserListEntry *ul = (UserListEntry*) CTX(CTX_USERLIST); StrBufAppendBufPlain(Target, _(axdefs[ul->AccessLevel]), -1, 0); } void tmplput_USERLIST_UID(StrBuf *Target, WCTemplputParams *TP) { UserListEntry *ul = (UserListEntry*) CTX(CTX_USERLIST); StrBufAppendPrintf(Target, "%d", ul->UID, 0); } void tmplput_USERLIST_LastLogonNo(StrBuf *Target, WCTemplputParams *TP) { UserListEntry *ul = (UserListEntry*) CTX(CTX_USERLIST); StrBufAppendPrintf(Target,"%ld", ul->LastLogonT, 0); } void tmplput_USERLIST_LastLogonStr(StrBuf *Target, WCTemplputParams *TP) { UserListEntry *ul = (UserListEntry*) CTX(CTX_USERLIST); StrEscAppend(Target, NULL, asctime(localtime(&ul->LastLogonT)), 0, 0); } void tmplput_USERLIST_nLogons(StrBuf *Target, WCTemplputParams *TP) { UserListEntry *ul = (UserListEntry*) CTX(CTX_USERLIST); StrBufAppendPrintf(Target, "%d", ul->nLogons, 0); } void tmplput_USERLIST_nPosts(StrBuf *Target, WCTemplputParams *TP) { UserListEntry *ul = (UserListEntry*) CTX(CTX_USERLIST); StrBufAppendPrintf(Target, "%d", ul->nPosts, 0); } void tmplput_USERLIST_Flags(StrBuf *Target, WCTemplputParams *TP) { UserListEntry *ul = (UserListEntry*) CTX(CTX_USERLIST); StrBufAppendPrintf(Target, "%d", ul->Flags, 0); } void tmplput_USERLIST_DaysTillPurge(StrBuf *Target, WCTemplputParams *TP) { UserListEntry *ul = (UserListEntry*) CTX(CTX_USERLIST); StrBufAppendPrintf(Target, "%d", ul->DaysTillPurge, 0); } int ConditionalUser(StrBuf *Target, WCTemplputParams *TP) { UserListEntry *ul = (UserListEntry*) CTX(CTX_USERLIST); if (havebstr("usernum")) { return ibstr("usernum") == ul->UID; } else if (havebstr("username")) { return strcmp(bstr("username"), ChrPtr(ul->UserName)) == 0; } else return 0; } int ConditionalFlagINetEmail(StrBuf *Target, WCTemplputParams *TP) { UserListEntry *ul = (UserListEntry*) CTX(CTX_USERLIST); return (ul->Flags & US_INTERNET) != 0; } int ConditionalUserAccess(StrBuf *Target, WCTemplputParams *TP) { UserListEntry *ul = (UserListEntry*) CTX(CTX_USERLIST); if (ul == NULL) return 0; return GetTemplateTokenNumber(Target, TP, 3, AxNewU) == ul->AccessLevel; } int ConditionalHaveBIO(StrBuf *Target, WCTemplputParams *TP) { UserListEntry *ul = (UserListEntry*) CTX(CTX_USERLIST); if (ul == NULL) return 0; return ul->HasBio; } void tmplput_USER_BIO(StrBuf *Target, WCTemplputParams *TP) { int Done = 0; StrBuf *Buf; const char *who; long len; GetTemplateTokenString(Target, TP, 0, &who, &len); Buf = NewStrBuf(); serv_printf("RBIO %s", who); StrBuf_ServGetln(Buf); if (GetServerStatus(Buf, NULL) == 1) { StrBuf *BioBuf = NewStrBufPlain(NULL, SIZ); while (!Done && StrBuf_ServGetln(Buf)>=0) { if ( (StrLength(Buf)==3) && !strcmp(ChrPtr(Buf), "000")) Done = 1; else { StrBufAppendBuf(BioBuf, Buf, 0); StrBufAppendBufPlain(BioBuf, HKEY("\n"), 0); } } StrBufAppendTemplate(Target, TP, BioBuf, 1); FreeStrBuf(&BioBuf); } FreeStrBuf(&Buf); } int Conditional_USER_HAS_PIC(StrBuf *Target, WCTemplputParams *TP) { StrBuf *Buf; const char *who; long len; int r = 0; GetTemplateTokenString(Target, TP, 2, &who, &len); Buf = NewStrBuf(); serv_printf("OIMG _userpic_|%s", who); StrBuf_ServGetln(Buf); if (GetServerStatus(Buf, NULL) != 2) { r = 1; } else { r = 0; } serv_puts("CLOS"); StrBuf_ServGetln(Buf); GetServerStatus(Buf, NULL); FreeStrBuf(&Buf); return(r); } /* * Locate the message number of a user's vCard in the current room * Returns the message id of his vcard */ long locate_user_vcard_in_this_room(message_summary **VCMsg, wc_mime_attachment **VCAtt) { wcsession *WCC = WC; HashPos *at; HashPos *att; const char *HashKey; long HKLen; void *vMsg; message_summary *Msg; wc_mime_attachment *Att; StrBuf *Buf; long vcard_msgnum = (-1L); int already_tried_creating_one = 0; StrBuf *FoundCharset = NewStrBuf(); StrBuf *Error = NULL; SharedMessageStatus Stat; Buf = NewStrBuf(); TRYAGAIN: memset(&Stat, 0, sizeof(SharedMessageStatus)); Stat.maxload = 10000; Stat.lowest_found = (-1); Stat.highest_found = (-1); /* Search for the user's vCard */ if (load_msg_ptrs("MSGS ALL||||1", NULL, &Stat, NULL) > 0) { at = GetNewHashPos(WCC->summ, 0); while (GetNextHashPos(WCC->summ, at, &HKLen, &HashKey, &vMsg)) { Msg = (message_summary*) vMsg; Msg->MsgBody = (wc_mime_attachment*) malloc(sizeof(wc_mime_attachment)); memset(Msg->MsgBody, 0, sizeof(wc_mime_attachment)); Msg->MsgBody->msgnum = Msg->msgnum; load_message(Msg, FoundCharset, &Error); if (Msg->AllAttach != NULL) { att = GetNewHashPos(Msg->AllAttach, 0); while (GetNextHashPos(Msg->AllAttach, att, &HKLen, &HashKey, &vMsg) && (vcard_msgnum == -1)) { Att = (wc_mime_attachment*) vMsg; if ( (strcasecmp(ChrPtr(Att->ContentType), "text/x-vcard") == 0) || (strcasecmp(ChrPtr(Att->ContentType), "text/vcard") == 0) ) { *VCAtt = Att; *VCMsg = Msg; vcard_msgnum = Msg->msgnum; if (Att->Data == NULL) { MimeLoadData(Att); } } } DeleteHashPos(&att); } FreeStrBuf(&Error); /* don't care... */ } DeleteHashPos(&at); } /* If there's no vcard, create one */ if ((*VCMsg == NULL) && (already_tried_creating_one == 0)) { FlushStrBuf(Buf); already_tried_creating_one = 1; serv_puts("ENT0 1|||4"); StrBuf_ServGetln(Buf); if (GetServerStatus(Buf, NULL) == 4) { serv_puts("Content-type: text/x-vcard"); serv_puts(""); serv_puts("begin:vcard"); serv_puts("end:vcard"); serv_puts("000"); } else syslog(LOG_WARNING, "Error while creating user vcard: %s\n", ChrPtr(Buf)); goto TRYAGAIN; } FreeStrBuf(&Buf); FreeStrBuf(&FoundCharset); return(vcard_msgnum); } /* * Display the form for editing a user's address book entry * username the name of the user * usernum the citadel-uid of the user */ void display_edit_address_book_entry(const char *username, long usernum) { message_summary *VCMsg = NULL; wc_mime_attachment *VCAtt = NULL; StrBuf *roomname; StrBuf *Buf; long vcard_msgnum = (-1L); /* Locate the user's config room, creating it if necessary */ Buf = NewStrBuf(); roomname = NewStrBuf(); StrBufPrintf(roomname, "%010ld.%s", usernum, USERCONFIGROOM); serv_printf("GOTO %s||1", ChrPtr(roomname)); StrBuf_ServGetln(Buf); if (GetServerStatus(Buf, NULL) != 2) { serv_printf("CRE8 1|%s|5|||1|", ChrPtr(roomname)); StrBuf_ServGetln(Buf); GetServerStatus(Buf, NULL); serv_printf("GOTO %s||1", ChrPtr(roomname)); StrBuf_ServGetln(Buf); if (GetServerStatusMsg(Buf, NULL, 1, 2) != 2) { select_user_to_edit(username); FreeStrBuf(&Buf); FreeStrBuf(&roomname); return; } } FreeStrBuf(&Buf); locate_user_vcard_in_this_room(&VCMsg, &VCAtt); if (VCMsg == NULL) { AppendImportantMessage(_("An error occurred while trying to create or edit this address book entry."), -1); select_user_to_edit(username); FreeStrBuf(&roomname); return; } do_edit_vcard(vcard_msgnum, "1", VCMsg, VCAtt, "select_user_to_edit", ChrPtr(roomname)); FreeStrBuf(&roomname); } /* * burge a user * username the name of the user to remove */ void delete_user(char *username) { StrBuf *Buf; Buf = NewStrBuf(); serv_printf("ASUP %s|0|0|0|0|0|", username); StrBuf_ServGetln(Buf); GetServerStatusMsg(Buf, NULL, 1, 2); select_user_to_edit( bstr("username")); FreeStrBuf(&Buf); } void display_edituser(const char *supplied_username, int is_new) { const char *Pos; UserListEntry* UL; StrBuf *Buf; char username[256]; if (supplied_username != NULL) { safestrncpy(username, supplied_username, sizeof username); } else { safestrncpy(username, bstr("username"), sizeof username); } Buf = NewStrBuf(); serv_printf("AGUP %s", username); StrBuf_ServGetln(Buf); if (GetServerStatusMsg(Buf, NULL, 1, 2) != 2) { select_user_to_edit(username); FreeStrBuf(&Buf); return; } else { Pos = ChrPtr(Buf) + 4; UL = NewUserListOneEntry(Buf, Pos); if ((UL != NULL) && havebstr("edit_abe_button")) { display_edit_address_book_entry(username, UL->UID); } else if ((UL != NULL) && havebstr("delete_button")) { delete_user(username); } else if (UL != NULL) { WCTemplputParams SubTP; memset(&SubTP, 0, sizeof(WCTemplputParams)); SubTP.Filter.ContextType = CTX_USERLIST; SubTP.Context = UL; output_headers(1, 0, 0, 0, 1, 0); DoTemplate(HKEY("aide_edituser_detailview"), NULL, &SubTP); end_burst(); } DeleteUserListEntry(UL); } FreeStrBuf(&Buf); } /* * do the backend operation of the user edit on the server */ void edituser(void) { int is_new = 0; unsigned int flags = 0; const char *username; is_new = ibstr("is_new"); username = bstr("username"); if (!havebstr("ok_button")) { AppendImportantMessage(_("Changes were not saved."), -1); } else { StrBuf *Buf = NewStrBuf(); flags = ibstr("flags"); if (yesbstr("inetmail")) { flags |= US_INTERNET; } else { flags &= ~US_INTERNET ; } if ((havebstr("newname")) && (strcasecmp(bstr("username"), bstr("newname")))) { serv_printf("RENU %s|%s", bstr("username"), bstr("newname")); StrBuf_ServGetln(Buf); if (GetServerStatusMsg(Buf, NULL, 1, 2) != 2) { username = bstr("newname"); } } serv_printf("ASUP %s|%s|%d|%s|%s|%s|%s|%s|%s|", username, bstr("password"), flags, bstr("timescalled"), bstr("msgsposted"), bstr("axlevel"), bstr("usernum"), bstr("lastcall"), bstr("purgedays") ); StrBuf_ServGetln(Buf); GetServerStatusMsg(Buf, NULL, 1, 2); FreeStrBuf(&Buf); } /* * If we are in the middle of creating a new user, move on to * the vCard edit screen. */ if (is_new) { display_edit_address_book_entry(username, lbstr("usernum") ); } else { select_user_to_edit(username); } } /* * create a new user * take the web environment username and create it on the citadel server */ void create_user(void) { long FullState; StrBuf *Buf; const char *username; Buf = NewStrBuf(); username = bstr("username"); serv_printf("CREU %s", username); StrBuf_ServGetln(Buf); if (GetServerStatus(Buf, &FullState) == 2) { AppendImportantMessage(_("A new user has been created."), -1); display_edituser(username, 1); } else if (FullState == 570) { AppendImportantMessage(_("You are attempting to create a new user from within Citadel " "while running in host based authentication mode. In this mode, " "you must create new users on the host system, not within Citadel."), -1); select_user_to_edit(NULL); } else { AppendImportantMessage(ChrPtr(Buf) + 4, StrLength(Buf) - 4); select_user_to_edit(NULL); } FreeStrBuf(&Buf); } void _select_user_to_edit(void) { select_user_to_edit(NULL); } void _display_edituser(void) { display_edituser(NULL, 0); } void InitModule_USEREDIT (void) { RegisterCTX(CTX_USERLIST); WebcitAddUrlHandler(HKEY("select_user_to_edit"), "", 0, _select_user_to_edit, 0); WebcitAddUrlHandler(HKEY("display_edituser"), "", 0, _display_edituser, 0); WebcitAddUrlHandler(HKEY("edituser"), "", 0, edituser, 0); WebcitAddUrlHandler(HKEY("create_user"), "", 0, create_user, 0); RegisterNamespace("USERLIST:USERNAME", 0, 1, tmplput_USERLIST_UserName, NULL, CTX_USERLIST); RegisterNamespace("USERLIST:PASSWD", 0, 1, tmplput_USERLIST_Password, NULL, CTX_USERLIST); RegisterNamespace("USERLIST:ACCLVLNO", 0, 0, tmplput_USERLIST_AccessLevelNo, NULL, CTX_USERLIST); RegisterNamespace("USERLIST:ACCLVLSTR", 0, 0, tmplput_USERLIST_AccessLevelStr, NULL, CTX_USERLIST); RegisterNamespace("USERLIST:UID", 0, 0, tmplput_USERLIST_UID, NULL, CTX_USERLIST); RegisterNamespace("USERLIST:LASTLOGON:STR", 0, 0, tmplput_USERLIST_LastLogonStr, NULL, CTX_USERLIST); RegisterNamespace("USERLIST:LASTLOGON:NO", 0, 0, tmplput_USERLIST_LastLogonNo, NULL, CTX_USERLIST); RegisterNamespace("USERLIST:NLOGONS", 0, 0, tmplput_USERLIST_nLogons, NULL, CTX_USERLIST); RegisterNamespace("USERLIST:NPOSTS", 0, 0, tmplput_USERLIST_nPosts, NULL, CTX_USERLIST); RegisterNamespace("USERLIST:FLAGS", 0, 0, tmplput_USERLIST_Flags, NULL, CTX_USERLIST); RegisterNamespace("USERLIST:DAYSTILLPURGE", 0, 0, tmplput_USERLIST_DaysTillPurge, NULL, CTX_USERLIST); RegisterNamespace("USER:BIO", 1, 2, tmplput_USER_BIO, NULL, CTX_NONE); RegisterConditional("COND:USERNAME", 0, ConditionalUser, CTX_USERLIST); RegisterConditional("COND:USERACCESS", 0, ConditionalUserAccess, CTX_USERLIST); RegisterConditional("COND:USERLIST:FLAG:USE_INTERNET", 0, ConditionalFlagINetEmail, CTX_USERLIST); RegisterConditional("COND:USERLIST:HAVEBIO", 0, ConditionalHaveBIO, CTX_USERLIST); RegisterConditional("COND:USER:PIC", 1, Conditional_USER_HAS_PIC, CTX_NONE); RegisterIterator("USERLIST", 0, NULL, iterate_load_userlist, NULL, DeleteHash, CTX_USERLIST, CTX_NONE, IT_FLAG_DETECT_GROUPCHANGE); RegisterSortFunc(HKEY("user:name"), HKEY("userlist"), CompareUserListName, CompareUserListNameRev, GroupchangeUserListName, CTX_USERLIST); RegisterSortFunc(HKEY("user:accslvl"), HKEY("userlist"), CompareAccessLevel, CompareAccessLevelRev, GroupchangeAccessLevel, CTX_USERLIST); RegisterSortFunc(HKEY("user:nlogons"), HKEY("userlist"), ComparenLogons, ComparenLogonsRev, GroupchangenLogons, CTX_USERLIST); RegisterSortFunc(HKEY("user:uid"), HKEY("userlist"), CompareUID, CompareUIDRev, GroupchangeUID, CTX_USERLIST); RegisterSortFunc(HKEY("user:lastlogon"), HKEY("userlist"), CompareLastLogon, CompareLastLogonRev, GroupchangeLastLogon, CTX_USERLIST); RegisterSortFunc(HKEY("user:nmsgposts"), HKEY("userlist"), ComparenPosts, ComparenPostsRev, GroupchangenPosts, CTX_USERLIST); REGISTERTokenParamDefine(AxDeleted); REGISTERTokenParamDefine(AxNewU); REGISTERTokenParamDefine(AxProbU); REGISTERTokenParamDefine(AxLocU); REGISTERTokenParamDefine(AxNetU); REGISTERTokenParamDefine(AxPrefU); REGISTERTokenParamDefine(AxAideU); } webcit-8.24-dfsg.orig/subst.c0000644000175000017500000021707512271477123015720 0ustar michaelmichael#include "sysdep.h" #include #include #include #include #include #include #include #include #define SHOW_ME_VAPPEND_PRINTF #include "webcit.h" #include "webserver.h" extern char *static_dirs[PATH_MAX]; /* Disk representation */ HashList *TemplateCache; HashList *LocalTemplateCache; HashList *GlobalNS; HashList *Iterators; HashList *Conditionals; HashList *SortHash; HashList *Defines; int DumpTemplateI18NStrings = 0; int LoadTemplates = 0; int dbg_backtrace_template_errors = 0; WCTemplputParams NoCtx; StrBuf *I18nDump = NULL; const char EmptyStr[]=""; #define SV_GETTEXT 1 #define SV_CONDITIONAL 2 #define SV_NEG_CONDITIONAL 3 #define SV_CUST_STR_CONDITIONAL 4 #define SV_SUBTEMPL 5 #define SV_PREEVALUATED 6 /* * Dynamic content for variable substitution in templates */ typedef struct _wcsubst { ContextFilter Filter; int wcs_type; /* which type of Substitution are we */ char wcs_key[32]; /* copy of our hashkey for debugging */ StrBuf *wcs_value; /* if we're a string, keep it here */ long lvalue; /* type long? keep data here */ WCHandlerFunc wcs_function; /* funcion hook ???*/ } wcsubst; typedef struct _WCTemplate { StrBuf *Data; StrBuf *FileName; int nTokensUsed; int TokenSpace; StrBuf *MimeType; WCTemplateToken **Tokens; } WCTemplate; typedef struct _HashHandler { ContextFilter Filter; WCPreevalFunc PreEvalFunc; WCHandlerFunc HandlerFunc; }HashHandler; typedef enum _estate { eNext, eSkipTilEnd } TemplState; void *load_template(StrBuf *Target, WCTemplate *NewTemplate); int EvaluateConditional(StrBuf *Target, int Neg, int state, WCTemplputParams **TPP); typedef struct _SortStruct { StrBuf *Name; StrBuf *PrefPrepend; CompareFunc Forward; CompareFunc Reverse; CompareFunc GroupChange; CtxType ContextType; }SortStruct; HashList *CtxList = NULL; static CtxType CtxCounter = CTX_NONE; CtxType CTX_STRBUF = CTX_NONE; CtxType CTX_STRBUFARR = CTX_NONE; CtxType CTX_LONGVECTOR = CTX_NONE; CtxType CTX_ITERATE = CTX_NONE; CtxType CTX_TAB = CTX_NONE; void HFreeContextType(void *pCtx) { CtxTypeStruct *FreeStruct = (CtxTypeStruct *) pCtx; FreeStrBuf(&FreeStruct->Name); free(FreeStruct); } void PutContextType(const char *name, long len, CtxType TheCtx) { CtxTypeStruct *NewStruct; NewStruct = (CtxTypeStruct*) malloc(sizeof(CtxTypeStruct)); NewStruct->Name = NewStrBufPlain(name, len); NewStruct->Type = TheCtx; Put(CtxList, IKEY(NewStruct->Type), NewStruct, HFreeContextType); } void RegisterContextType(const char *name, long len, CtxType *TheCtx) { if (*TheCtx != CTX_NONE) return; *TheCtx = ++CtxCounter; PutContextType(name, len, *TheCtx); } CtxTypeStruct *GetContextType(CtxType Type) { void *pv = NULL; GetHash(CtxList, IKEY(Type), &pv); return pv; } const char *UnknownContext = "CTX_UNKNOWN"; const char *ContextName(CtxType ContextType) { CtxTypeStruct *pCtx; pCtx = GetContextType(ContextType); if (pCtx != NULL) return ChrPtr(pCtx->Name); else return UnknownContext; } void StackDynamicContext(WCTemplputParams *Super, WCTemplputParams *Sub, void *Context, CtxType ContextType, int nArgs, WCTemplateToken *Tokens, WCConditionalFunc ExitCtx, long ExitCTXID) { memset(Sub, 0, sizeof(WCTemplputParams)); if (Super != NULL) { Sub->Sub = Super->Sub; Super->Sub = Sub; } if (Sub->Sub != NULL) Sub->Sub->Super = Sub; Sub->Super = Super; Sub->Context = Context; Sub->Filter.ContextType = ContextType; Sub->nArgs = nArgs; Sub->Tokens = Tokens; Sub->ExitCtx = ExitCtx; Sub->ExitCTXID = ExitCTXID; } void UnStackContext(WCTemplputParams *Sub) { if (Sub->Super != NULL) { Sub->Super->Sub = Sub->Sub; } if (Sub->Sub != NULL) { Sub->Sub->Super = Sub->Super; } } void UnStackDynamicContext(StrBuf *Target, WCTemplputParams **TPP) { WCTemplputParams *TP = *TPP; WCTemplputParams *Super = TP->Super; TP->ExitCtx(Target, TP); *TPP = Super; } void *GetContextPayload(WCTemplputParams *TP, CtxType ContextType) { WCTemplputParams *whichTP = TP; if (ContextType == CTX_NONE) return TP->Context; while ((whichTP != NULL) && (whichTP->Filter.ContextType != ContextType)) whichTP = whichTP->Super; return whichTP->Context; } void DestroySortStruct(void *vSort) { SortStruct *Sort = (SortStruct*) vSort; FreeStrBuf(&Sort->Name); FreeStrBuf(&Sort->PrefPrepend); free (Sort); } void LogTemplateError (StrBuf *Target, const char *Type, int ErrorPos, WCTemplputParams *TP, const char *Format, ...) { wcsession *WCC; StrBuf *Error; StrBuf *Info; va_list arg_ptr; const char *Err = NULL; Info = NewStrBuf(); Error = NewStrBuf(); va_start(arg_ptr, Format); StrBufVAppendPrintf(Error, Format, arg_ptr); va_end(arg_ptr); switch (ErrorPos) { case ERR_NAME: /* the main token name... */ Err = (TP->Tokens!= NULL)? TP->Tokens->pName:""; break; default: Err = ((TP->Tokens!= NULL) && (TP->Tokens->nParameters > ErrorPos - 1))? TP->Tokens->Params[ErrorPos - 1]->Start : ""; break; } if (TP->Tokens != NULL) { syslog(LOG_WARNING, "%s [%s] (in '%s' line %ld); %s; [%s]\n", Type, Err, ChrPtr(TP->Tokens->FileName), TP->Tokens->Line, ChrPtr(Error), ChrPtr(TP->Tokens->FlatToken)); } else { syslog(LOG_WARNING, "%s: %s;\n", Type, ChrPtr(Error)); } WCC = WC; if (WCC == NULL) { FreeStrBuf(&Info); FreeStrBuf(&Error); return; } if (WCC->WFBuf == NULL) WCC->WFBuf = NewStrBuf(); if (TP->Tokens != NULL) { /* deprecated: StrBufAppendPrintf( Target, "
    \n%s [%s] (in '%s' line %ld); %s\n[%s]\n
    \n", Type, Err, ChrPtr(TP->Tokens->FileName), TP->Tokens->Line, ChrPtr(Error), ChrPtr(TP->Tokens->FlatToken)); */ StrBufPrintf(Info, "%s [%s] %s; [%s]", Type, Err, ChrPtr(Error), ChrPtr(TP->Tokens->FlatToken)); SerializeJson(WCC->WFBuf, WildFireException(SKEY(TP->Tokens->FileName), TP->Tokens->Line, Info, 1), 1); /* SerializeJson(Header, WildFireMessage(SKEY(TP->Tokens->FileName), TP->Tokens->Line, Error, eERROR), 1); */ } else { /* deprecated. StrBufAppendPrintf( Target, "
    \n%s: %s\n
    \n", Type, ChrPtr(Error)); */ StrBufPrintf(Info, "%s [%s] %s; [%s]", Type, Err, ChrPtr(Error), ChrPtr(TP->Tokens->FlatToken)); SerializeJson(WCC->WFBuf, WildFireException(HKEY(__FILE__), __LINE__, Info, 1), 1); } FreeStrBuf(&Info); FreeStrBuf(&Error); /* if (dbg_backtrace_template_errors) wc_backtrace(LOG_DEBUG); */ } void LogError (StrBuf *Target, const char *Type, const char *Format, ...) { wcsession *WCC; StrBuf *Error; StrBuf *Info; va_list arg_ptr; Info = NewStrBuf(); Error = NewStrBuf(); va_start(arg_ptr, Format); StrBufVAppendPrintf(Error, Format, arg_ptr); va_end(arg_ptr); syslog(LOG_WARNING, "%s", ChrPtr(Error)); WCC = WC; if (WCC->WFBuf == NULL) WCC->WFBuf = NewStrBuf(); SerializeJson(WCC->WFBuf, WildFireException(Type, strlen(Type), 0, Info, 1), 1); FreeStrBuf(&Info); FreeStrBuf(&Error); /* if (dbg_backtrace_template_errors) wc_backtrace(LOG_DEBUG); */ } void RegisterNS(const char *NSName, long len, int nMinArgs, int nMaxArgs, WCHandlerFunc HandlerFunc, WCPreevalFunc PreevalFunc, CtxType ContextRequired) { HashHandler *NewHandler; NewHandler = (HashHandler*) malloc(sizeof(HashHandler)); memset(NewHandler, 0, sizeof(HashHandler)); NewHandler->Filter.nMinArgs = nMinArgs; NewHandler->Filter.nMaxArgs = nMaxArgs; NewHandler->Filter.ContextType = ContextRequired; NewHandler->PreEvalFunc = PreevalFunc; NewHandler->HandlerFunc = HandlerFunc; Put(GlobalNS, NSName, len, NewHandler, NULL); } int CheckContext(StrBuf *Target, ContextFilter *Need, WCTemplputParams *TP, const char *ErrType) { WCTemplputParams *TPP = TP; if ((Need != NULL) && (Need->ContextType != CTX_NONE) && (Need->ContextType != TPP->Filter.ContextType)) { while ((TPP != NULL) && (Need->ContextType != TPP->Filter.ContextType)) { TPP = TPP->Super; } if (TPP != NULL) return 1; LogTemplateError( Target, ErrType, ERR_NAME, TP, " WARNING: requires Context: [%s], have [%s]!", ContextName(Need->ContextType), ContextName(TP->Filter.ContextType)); return 0; } /* if (TP->Tokens->nParameters < Need->nMinArgs) { LogTemplateError(Target, ErrType, ERR_NAME, TP, "needs at least %ld params, have %ld", Need->nMinArgs, TP->Tokens->nParameters); return 0; } else if (TP->Tokens->nParameters > Need->nMaxArgs) { LogTemplateError(Target, ErrType, ERR_NAME, TP, "just needs %ld params, you gave %ld", Need->nMaxArgs, TP->Tokens->nParameters); return 0; } */ return 1; } void FreeToken(WCTemplateToken **Token) { int i; FreeStrBuf(&(*Token)->FlatToken); if ((*Token)->HaveParameters) for (i = 0; i < (*Token)->nParameters; i++) free((*Token)->Params[i]); free(*Token); *Token = NULL; } void FreeWCTemplate(void *vFreeMe) { int i; WCTemplate *FreeMe = (WCTemplate*)vFreeMe; if (FreeMe->TokenSpace > 0) { for (i = 0; i < FreeMe->nTokensUsed; i ++) { FreeToken(&FreeMe->Tokens[i]); } free(FreeMe->Tokens); } FreeStrBuf(&FreeMe->FileName); FreeStrBuf(&FreeMe->Data); FreeStrBuf(&FreeMe->MimeType); free(FreeMe); } int HaveTemplateTokenString(StrBuf *Target, WCTemplputParams *TP, int N, const char **Value, long *len) { if (N >= TP->Tokens->nParameters) { return 0; } switch (TP->Tokens->Params[N]->Type) { case TYPE_INTDEFINE: case TYPE_STR: case TYPE_BSTR: case TYPE_PREFSTR: case TYPE_ROOMPREFSTR: case TYPE_GETTEXT: case TYPE_SUBTEMPLATE: return 1; case TYPE_LONG: case TYPE_PREFINT: default: return 0; } } void GetTemplateTokenString(StrBuf *Target, WCTemplputParams *TP, int N, const char **Value, long *len) { StrBuf *Buf; if (N >= TP->Tokens->nParameters) { LogTemplateError(Target, "TokenParameter", N, TP, "invalid token %d. this shouldn't have come till here.\n", N); *Value = ""; *len = 0; return; } switch (TP->Tokens->Params[N]->Type) { case TYPE_INTDEFINE: case TYPE_STR: *Value = TP->Tokens->Params[N]->Start; *len = TP->Tokens->Params[N]->len; break; case TYPE_BSTR: if (TP->Tokens->Params[N]->len == 0) { LogTemplateError(Target, "TokenParameter", N, TP, "Requesting parameter %d; of type BSTR, empty lookup string not admitted.", N); *len = 0; *Value = EmptyStr; break; } Buf = (StrBuf*) SBstr(TKEY(N)); *Value = ChrPtr(Buf); *len = StrLength(Buf); break; case TYPE_PREFSTR: if (TP->Tokens->Params[N]->len == 0) { LogTemplateError(Target, "TokenParameter", N, TP, "Requesting parameter %d; of type PREFSTR, empty lookup string not admitted.", N); *len = 0; *Value = EmptyStr; break; } get_PREFERENCE(TKEY(N), &Buf); *Value = ChrPtr(Buf); *len = StrLength(Buf); break; case TYPE_ROOMPREFSTR: if (TP->Tokens->Params[N]->len == 0) { LogTemplateError(Target, "TokenParameter", N, TP, "Requesting parameter %d; of type PREFSTR, empty lookup string not admitted.", N); *len = 0; *Value = EmptyStr; break; } Buf = get_ROOM_PREFS(TKEY(N)); *Value = ChrPtr(Buf); *len = StrLength(Buf); break; case TYPE_LONG: LogTemplateError(Target, "TokenParameter", N, TP, "Requesting parameter %d; of type LONG, want string.", N); break; case TYPE_PREFINT: LogTemplateError(Target, "TokenParameter", N, TP, "Requesting parameter %d; of type PREFINT, want string.", N); break; case TYPE_GETTEXT: *Value = _(TP->Tokens->Params[N]->Start); *len = strlen(*Value); break; case TYPE_SUBTEMPLATE: if (TP->Tokens->Params[N]->len == 0) { LogTemplateError(Target, "TokenParameter", N, TP, "Requesting parameter %d; of type SUBTEMPLATE, empty lookup string not admitted.", N); *len = 0; *Value = EmptyStr; break; } Buf = NewStrBuf(); DoTemplate(TKEY(N), Buf, TP); *Value = ChrPtr(Buf); *len = StrLength(Buf); /* we can't free it here, so we put it into the subst so its discarded later on. */ PutRequestLocalMem(Buf, HFreeStrBuf); break; default: LogTemplateError(Target, "TokenParameter", N, TP, "unknown param type %d; [%d]", N, TP->Tokens->Params[N]->Type); break; } } long GetTemplateTokenNumber(StrBuf *Target, WCTemplputParams *TP, int N, long dflt) { long Ret; if (N >= TP->Tokens->nParameters) { LogTemplateError(Target, "TokenParameter", N, TP, "invalid token %d. this shouldn't have come till here.\n", N); wc_backtrace(LOG_DEBUG); return 0; } switch (TP->Tokens->Params[N]->Type) { case TYPE_STR: return atol(TP->Tokens->Params[N]->Start); break; case TYPE_BSTR: if (TP->Tokens->Params[N]->len == 0) { LogTemplateError(Target, "TokenParameter", N, TP, "Requesting parameter %d; of type BSTR, empty lookup string not admitted.", N); return 0; } return LBstr(TKEY(N)); break; case TYPE_PREFSTR: LogTemplateError(Target, "TokenParameter", N, TP, "requesting a prefstring in param %d want a number", N); if (TP->Tokens->Params[N]->len == 0) { LogTemplateError(Target, "TokenParameter", N, TP, "Requesting parameter %d; of type PREFSTR, empty lookup string not admitted.", N); return 0; } if (get_PREF_LONG(TKEY(N), &Ret, dflt)) return Ret; return 0; case TYPE_ROOMPREFSTR: LogTemplateError(Target, "TokenParameter", N, TP, "requesting a prefstring in param %d want a number", N); if (TP->Tokens->Params[N]->len == 0) { LogTemplateError(Target, "TokenParameter", N, TP, "Requesting parameter %d; of type PREFSTR, empty lookup string not admitted.", N); return 0; } if (get_ROOM_PREFS_LONG(TKEY(N), &Ret, dflt)) return Ret; return 0; case TYPE_INTDEFINE: case TYPE_LONG: return TP->Tokens->Params[N]->lvalue; case TYPE_PREFINT: if (TP->Tokens->Params[N]->len == 0) { LogTemplateError(Target, "TokenParameter", N, TP, "Requesting parameter %d; of type PREFINT, empty lookup string not admitted.", N); return 0; } if (get_PREF_LONG(TKEY(N), &Ret, dflt)) return Ret; return 0; case TYPE_GETTEXT: LogTemplateError(Target, "TokenParameter", N, TP, "requesting a I18N string in param %d; want a number", N); return 0; case TYPE_SUBTEMPLATE: LogTemplateError(Target, "TokenParameter", N, TP, "requesting a subtemplate in param %d; not supported for numbers", N); return 0; default: LogTemplateError(Target, "TokenParameter", N, TP, "unknown param type %d; [%d]", N, TP->Tokens->Params[N]->Type); return 0; } } /* * puts string into the template and computes which escape methon we should use * Source = the string we should put into the template * FormatTypeIndex = where should we look for escape types if? */ void StrBufAppendTemplate(StrBuf *Target, WCTemplputParams *TP, const StrBuf *Source, int FormatTypeIndex) { const char *pFmt = NULL; char EscapeAs = ' '; if ((FormatTypeIndex < TP->Tokens->nParameters) && (TP->Tokens->Params[FormatTypeIndex]->Type == TYPE_STR) && (TP->Tokens->Params[FormatTypeIndex]->len >= 1)) { pFmt = TP->Tokens->Params[FormatTypeIndex]->Start; EscapeAs = *pFmt; } switch(EscapeAs) { case 'H': StrEscAppend(Target, Source, NULL, 0, 2); break; case 'X': StrEscAppend(Target, Source, NULL, 0, 0); break; case 'J': StrECMAEscAppend(Target, Source, NULL); break; case 'K': StrHtmlEcmaEscAppend(Target, Source, NULL, 0, 0); break; case 'U': StrBufUrlescAppend(Target, Source, NULL); break; case 'F': if (pFmt != NULL) pFmt++; else pFmt = "JUSTIFY"; if (*pFmt == '\0') pFmt = "JUSTIFY"; FmOut(Target, pFmt, Source); break; default: StrBufAppendBuf(Target, Source, 0); } } /* * puts string into the template and computes which escape methon we should use * Source = the string we should put into the template * FormatTypeIndex = where should we look for escape types if? */ void StrBufAppendTemplateStr(StrBuf *Target, WCTemplputParams *TP, const char *Source, int FormatTypeIndex) { const char *pFmt = NULL; char EscapeAs = ' '; if ((FormatTypeIndex < TP->Tokens->nParameters) && (TP->Tokens->Params[FormatTypeIndex]->Type == TYPE_STR) && (TP->Tokens->Params[FormatTypeIndex]->len >= 1)) { pFmt = TP->Tokens->Params[FormatTypeIndex]->Start; EscapeAs = *pFmt; } switch(EscapeAs) { case 'H': StrEscAppend(Target, NULL, Source, 0, 2); break; case 'X': StrEscAppend(Target, NULL, Source, 0, 0); break; case 'J': StrECMAEscAppend(Target, NULL, Source); break; case 'K': StrHtmlEcmaEscAppend(Target, NULL, Source, 0, 0); break; case 'U': StrBufUrlescAppend(Target, NULL, Source); break; /* case 'F': if (pFmt != NULL) pFmt++; else pFmt = "JUSTIFY"; if (*pFmt == '\0') pFmt = "JUSTIFY"; FmOut(Target, pFmt, Source); break; */ default: StrBufAppendBufPlain(Target, Source, -1, 0); } } void PutNewToken(WCTemplate *Template, WCTemplateToken *NewToken) { if (Template->nTokensUsed + 1 >= Template->TokenSpace) { if (Template->TokenSpace <= 0) { Template->Tokens = (WCTemplateToken**)malloc( sizeof(WCTemplateToken*) * 10); memset(Template->Tokens, 0, sizeof(WCTemplateToken*) * 10); Template->TokenSpace = 10; } else { WCTemplateToken **NewTokens; NewTokens= (WCTemplateToken**) malloc( sizeof(WCTemplateToken*) * Template->TokenSpace * 2); memset(NewTokens, 0, sizeof(WCTemplateToken*) * Template->TokenSpace * 2); memcpy(NewTokens, Template->Tokens, sizeof(WCTemplateToken*) * Template->nTokensUsed); free(Template->Tokens); Template->TokenSpace *= 2; Template->Tokens = NewTokens; } } Template->Tokens[(Template->nTokensUsed)++] = NewToken; } int GetNextParameter(StrBuf *Buf, const char **pCh, const char *pe, WCTemplateToken *Tokens, WCTemplate *pTmpl, WCTemplputParams *TP, TemplateParam **pParm) { const char *pch = *pCh; const char *pchs, *pche; TemplateParam *Parm; char quote = '\0'; int ParamBrace = 0; *pParm = Parm = (TemplateParam *) malloc(sizeof(TemplateParam)); memset(Parm, 0, sizeof(TemplateParam)); Parm->Type = TYPE_STR; /* Skip leading whitespaces */ while ((*pch == ' ' )|| (*pch == '\t')|| (*pch == '\r')|| (*pch == '\n')) pch ++; if (*pch == ':') { Parm->Type = TYPE_PREFSTR; pch ++; if (*pch == '(') { pch ++; ParamBrace = 1; } } else if (*pch == '.') { Parm->Type = TYPE_ROOMPREFSTR; pch ++; if (*pch == '(') { pch ++; ParamBrace = 1; } } else if (*pch == ';') { Parm->Type = TYPE_PREFINT; pch ++; if (*pch == '(') { pch ++; ParamBrace = 1; } } else if (*pch == '#') { Parm->Type = TYPE_INTDEFINE; pch ++; } else if (*pch == '_') { Parm->Type = TYPE_GETTEXT; pch ++; if (*pch == '(') { pch ++; ParamBrace = 1; } } else if (*pch == 'B') { Parm->Type = TYPE_BSTR; pch ++; if (*pch == '(') { pch ++; ParamBrace = 1; } } else if (*pch == '=') { Parm->Type = TYPE_SUBTEMPLATE; pch ++; if (*pch == '(') { pch ++; ParamBrace = 1; } } if (*pch == '"') quote = '"'; else if (*pch == '\'') quote = '\''; if (quote != '\0') { pch ++; pchs = pch; while (pch <= pe && ((*pch != quote) || ( (pch > pchs) && (*(pch - 1) == '\\')) )) { pch ++; } pche = pch; if (*pch != quote) { syslog(LOG_WARNING, "Error (in '%s' line %ld); " "evaluating template param [%s] in Token [%s]\n", ChrPtr(pTmpl->FileName), Tokens->Line, ChrPtr(Tokens->FlatToken), *pCh); pch ++; free(Parm); *pParm = NULL; return 0; } else { StrBufPeek(Buf, pch, -1, '\0'); if (LoadTemplates > 1) { syslog(LOG_DEBUG, "DBG: got param [%s] "SIZE_T_FMT" "SIZE_T_FMT"\n", pchs, pche - pchs, strlen(pchs) ); } Parm->Start = pchs; Parm->len = pche - pchs; pch ++; /* move after trailing quote */ if (ParamBrace && (*pch == ')')) { pch ++; } } } else { Parm->Type = TYPE_LONG; pchs = pch; while ((pch <= pe) && (isdigit(*pch) || (*pch == '+') || (*pch == '-'))) pch ++; pch ++; if (pch - pchs > 1){ StrBufPeek(Buf, pch, -1, '\0'); Parm->lvalue = atol(pchs); Parm->Start = pchs; pch++; } else { Parm->lvalue = 0; /* TODO whUT? syslog(LOG_DEBUG, "Error (in '%s' line %ld); " "evaluating long template param [%s] in Token [%s]\n", ChrPtr(pTmpl->FileName), Tokens->Line, ChrPtr(Tokens->FlatToken), *pCh); */ free(Parm); *pParm = NULL; return 0; } } while ((*pch == ' ' )|| (*pch == '\t')|| (*pch == '\r')|| (*pch == ',' )|| (*pch == '\n')) pch ++; switch (Parm->Type) { case TYPE_GETTEXT: if (DumpTemplateI18NStrings) { StrBufAppendPrintf(I18nDump, "_(\"%s\");\n", Parm->Start); } break; case TYPE_INTDEFINE: { void *vPVal; if (GetHash(Defines, Parm->Start, Parm->len, &vPVal) && (vPVal != NULL)) { long *PVal; PVal = (long*) vPVal; Parm->lvalue = *PVal; } else if (strchr(Parm->Start, '|') != NULL) { const char *Pos; StrBuf *pToken; StrBuf *Match; Parm->MaskBy = eOR; pToken = NewStrBufPlain (Parm->Start, Parm->len); Match = NewStrBufPlain (NULL, Parm->len); Pos = ChrPtr(pToken); while ((Pos != NULL) && (Pos != StrBufNOTNULL)) { StrBufExtract_NextToken(Match, pToken, &Pos, '|'); StrBufTrim(Match); if (StrLength (Match) > 0) { if (GetHash(Defines, SKEY(Match), &vPVal) && (vPVal != NULL)) { long *PVal; PVal = (long*) vPVal; Parm->lvalue |= *PVal; } else { LogTemplateError(NULL, "Define", Tokens->nParameters, TP, "%s isn't known!!", ChrPtr(Match)); } } } FreeStrBuf(&pToken); FreeStrBuf(&Match); } else if (strchr(Parm->Start, '&') != NULL) { const char *Pos; StrBuf *pToken; StrBuf *Match; Parm->MaskBy = eAND; pToken = NewStrBufPlain (Parm->Start, Parm->len); Match = NewStrBufPlain (NULL, Parm->len); Pos = ChrPtr(pToken); while ((Pos != NULL) && (Pos != StrBufNOTNULL)) { StrBufExtract_NextToken(Match, pToken, &Pos, '&'); StrBufTrim(Match); if (StrLength (Match) > 0) { if (GetHash(Defines, SKEY(Match), &vPVal) && (vPVal != NULL)) { long *PVal; PVal = (long*) vPVal; Parm->lvalue |= *PVal; } else { LogTemplateError(NULL, "Define", Tokens->nParameters, TP, "%s isn't known!!", ChrPtr(Match)); } } } FreeStrBuf(&Match); FreeStrBuf(&pToken); } else { LogTemplateError(NULL, "Define", Tokens->nParameters, TP, "%s isn't known!!", Parm->Start); }} break; case TYPE_SUBTEMPLATE:{ void *vTmpl; /* well, we don't check the mobile stuff here... */ if (!GetHash(LocalTemplateCache, Parm->Start, Parm->len, &vTmpl) && !GetHash(TemplateCache, Parm->Start, Parm->len, &vTmpl)) { LogTemplateError(NULL, "SubTemplate", Tokens->nParameters, TP, "referenced here doesn't exist"); }} break; } *pCh = pch; return 1; } WCTemplateToken *NewTemplateSubstitute(StrBuf *Buf, const char *pStart, const char *pTokenStart, const char *pTokenEnd, long Line, WCTemplate *pTmpl) { void *vVar; const char *pch; WCTemplateToken *NewToken; WCTemplputParams TP; NewToken = (WCTemplateToken*)malloc(sizeof(WCTemplateToken)); memset(NewToken, 0, sizeof(WCTemplateToken)); TP.Tokens = NewToken; NewToken->FileName = pTmpl->FileName; /* to print meaningfull log messages... */ NewToken->Flags = 0; NewToken->Line = Line + 1; NewToken->pTokenStart = pTokenStart; NewToken->TokenStart = pTokenStart - pStart; NewToken->TokenEnd = (pTokenEnd - pStart) - NewToken->TokenStart; NewToken->pTokenEnd = pTokenEnd; NewToken->NameEnd = NewToken->TokenEnd - 2; NewToken->PreEval = NULL; NewToken->FlatToken = NewStrBufPlain(pTokenStart + 2, pTokenEnd - pTokenStart - 2); StrBufShrinkToFit(NewToken->FlatToken, 1); StrBufPeek(Buf, pTokenStart, + 1, '\0'); StrBufPeek(Buf, pTokenEnd, -1, '\0'); pch = NewToken->pName = pTokenStart + 2; NewToken->HaveParameters = 0;; NewToken->nParameters = 0; while (pch < pTokenEnd - 1) { if (*pch == '(') { StrBufPeek(Buf, pch, -1, '\0'); NewToken->NameEnd = pch - NewToken->pName; pch ++; if (*(pTokenEnd - 1) != ')') { LogTemplateError( NULL, "Parseerror", ERR_NAME, &TP, "Warning, Non welformed Token; missing right parenthesis"); } while (pch < pTokenEnd - 1) { NewToken->nParameters++; if (GetNextParameter(Buf, &pch, pTokenEnd - 1, NewToken, pTmpl, &TP, &NewToken->Params[NewToken->nParameters - 1])) { NewToken->HaveParameters = 1; if (NewToken->nParameters >= MAXPARAM) { LogTemplateError( NULL, "Parseerror", ERR_NAME, &TP, "only [%d] Params allowed in Tokens", MAXPARAM); FreeToken(&NewToken); return NULL; } } else break; } if((NewToken->NameEnd == 1) && (NewToken->HaveParameters == 1)) { if (*(NewToken->pName) == '_') NewToken->Flags = SV_GETTEXT; else if (*(NewToken->pName) == '=') NewToken->Flags = SV_SUBTEMPL; else if (*(NewToken->pName) == '%') NewToken->Flags = SV_CUST_STR_CONDITIONAL; else if (*(NewToken->pName) == '?') NewToken->Flags = SV_CONDITIONAL; else if (*(NewToken->pName) == '!') NewToken->Flags = SV_NEG_CONDITIONAL; } } else pch ++; } switch (NewToken->Flags) { case 0: /* If we're able to find out more about the token, do it now while its fresh. */ pch = NewToken->pName; while (pch < NewToken->pName + NewToken->NameEnd) { if (((*pch >= 'A') && (*pch <= 'Z')) || ((*pch >= '0') && (*pch <= '9')) || (*pch == ':') || (*pch == '-') || (*pch == '_')) pch ++; else { LogTemplateError( NULL, "Token Name", ERR_NAME, &TP, "contains illegal char: '%c'", *pch); pch++; } } if (GetHash(GlobalNS, NewToken->pName, NewToken->NameEnd, &vVar)) { HashHandler *Handler; Handler = (HashHandler*) vVar; if ((NewToken->nParameters < Handler->Filter.nMinArgs) || (NewToken->nParameters > Handler->Filter.nMaxArgs)) { LogTemplateError( NULL, "Token", ERR_NAME, &TP, "doesn't work with %d params", NewToken->nParameters); } else { NewToken->PreEval = Handler; NewToken->Flags = SV_PREEVALUATED; if (Handler->PreEvalFunc != NULL) Handler->PreEvalFunc(NewToken); } } else { LogTemplateError( NULL, "Token ", ERR_NAME, &TP, " isn't known to us."); } break; case SV_GETTEXT: if ((NewToken->nParameters < 1) || (NewToken->nParameters > 2)) { LogTemplateError( NULL, "Gettext", ERR_NAME, &TP, "requires 1 or 2 parameter, you gave %d params", NewToken->nParameters); NewToken->Flags = 0; break; } if (DumpTemplateI18NStrings) { StrBufAppendPrintf(I18nDump, "_(\"%s\");\n", NewToken->Params[0]->Start); } break; case SV_SUBTEMPL: if (NewToken->nParameters != 1) { LogTemplateError( NULL, "Subtemplates", ERR_NAME, &TP, "require exactly 1 parameter, you gave %d params", NewToken->nParameters); break; } else { void *vTmpl; /* well, we don't check the mobile stuff here... */ if (!GetHash(LocalTemplateCache, NewToken->Params[0]->Start, NewToken->Params[0]->len, &vTmpl) && !GetHash(TemplateCache, NewToken->Params[0]->Start, NewToken->Params[0]->len, &vTmpl)) { LogTemplateError( NULL, "SubTemplate", ERR_PARM1, &TP, "doesn't exist"); } } break; case SV_CUST_STR_CONDITIONAL: case SV_CONDITIONAL: case SV_NEG_CONDITIONAL: if (NewToken->nParameters <2) { LogTemplateError( NULL, "Conditional", ERR_PARM1, &TP, "require at least 2 parameters, you gave %d params", NewToken->nParameters); NewToken->Flags = 0; break; } if (NewToken->Params[1]->lvalue == 0) { LogTemplateError( NULL, "Conditional", ERR_PARM1, &TP, "Conditional ID (Parameter 1) mustn't be 0!"); NewToken->Flags = 0; break; } if (!GetHash(Conditionals, NewToken->Params[0]->Start, NewToken->Params[0]->len, &vVar) || (vVar == NULL)) { if ((NewToken->Params[0]->len == 1) && (NewToken->Params[0]->Start[0] == 'X')) break; LogTemplateError( NULL, "Conditional", ERR_PARM1, &TP, "Not found!"); /* NewToken->Error = NewStrBuf(); StrBufAppendPrintf( NewToken->Error, "
    \nConditional [%s] (in '%s' line %ld); Not found!\n[%s]\n
    \n", NewToken->Params[0]->Start, ChrPtr(pTmpl->FileName), NewToken->Line, ChrPtr(NewToken->FlatToken)); */ } else { NewToken->PreEval = vVar; } break; } return NewToken; } /** * \brief Display a variable-substituted template * \param templatename template file to load */ void *prepare_template(StrBuf *filename, StrBuf *Key, HashList *PutThere) { WCTemplate *NewTemplate; NewTemplate = (WCTemplate *) malloc(sizeof(WCTemplate)); memset(NewTemplate, 0, sizeof(WCTemplate)); NewTemplate->Data = NULL; NewTemplate->FileName = NewStrBufDup(filename); StrBufShrinkToFit(NewTemplate->FileName, 1); NewTemplate->nTokensUsed = 0; NewTemplate->TokenSpace = 0; NewTemplate->Tokens = NULL; NewTemplate->MimeType = NewStrBufPlain(GuessMimeByFilename (SKEY(NewTemplate->FileName)), -1); if (strstr(ChrPtr(NewTemplate->MimeType), "text") != NULL) { StrBufAppendBufPlain(NewTemplate->MimeType, HKEY("; charset=utf-8"), 0); } if (strstr(ChrPtr(NewTemplate->MimeType), "text") != NULL) { StrBufAppendBufPlain(NewTemplate->MimeType, HKEY("; charset=utf-8"), 0); } Put(PutThere, ChrPtr(Key), StrLength(Key), NewTemplate, FreeWCTemplate); return NewTemplate; } /** * \brief Display a variable-substituted template * \param templatename template file to load */ void *duplicate_template(WCTemplate *OldTemplate) { WCTemplate *NewTemplate; NewTemplate = (WCTemplate *) malloc(sizeof(WCTemplate)); memset(NewTemplate, 0, sizeof(WCTemplate)); NewTemplate->Data = NULL; NewTemplate->FileName = NewStrBufDup(OldTemplate->FileName); StrBufShrinkToFit(NewTemplate->FileName, 1); NewTemplate->nTokensUsed = 0; NewTemplate->TokenSpace = 0; NewTemplate->Tokens = NULL; NewTemplate->MimeType = NewStrBufDup(OldTemplate->MimeType); return NewTemplate; } void SanityCheckTemplate(StrBuf *Target, WCTemplate *CheckMe) { int i = 0; int j; int FoundConditionalEnd; for (i = 0; i < CheckMe->nTokensUsed; i++) { switch(CheckMe->Tokens[i]->Flags) { case SV_CONDITIONAL: case SV_NEG_CONDITIONAL: FoundConditionalEnd = 0; if ((CheckMe->Tokens[i]->Params[0]->len == 1) && (CheckMe->Tokens[i]->Params[0]->Start[0] == 'X')) break; for (j = i + 1; j < CheckMe->nTokensUsed; j++) { if (((CheckMe->Tokens[j]->Flags == SV_CONDITIONAL) || (CheckMe->Tokens[j]->Flags == SV_NEG_CONDITIONAL)) && (CheckMe->Tokens[i]->Params[1]->lvalue == CheckMe->Tokens[j]->Params[1]->lvalue)) { FoundConditionalEnd = 1; break; } } if (!FoundConditionalEnd) { WCTemplputParams TP; memset(&TP, 0, sizeof(WCTemplputParams)); TP.Tokens = CheckMe->Tokens[i]; LogTemplateError( Target, "Token", ERR_PARM1, &TP, "Conditional without Endconditional" ); } break; default: break; } } } /** * \brief Display a variable-substituted template * \param templatename template file to load */ void *load_template(StrBuf *Target, WCTemplate *NewTemplate) { int fd; struct stat statbuf; const char *pS, *pE, *pch, *Err; long Line; fd = open(ChrPtr(NewTemplate->FileName), O_RDONLY); if (fd <= 0) { syslog(LOG_WARNING, "ERROR: could not open template '%s' - %s\n", ChrPtr(NewTemplate->FileName), strerror(errno)); return NULL; } if (fstat(fd, &statbuf) == -1) { syslog(LOG_WARNING, "ERROR: could not stat template '%s' - %s\n", ChrPtr(NewTemplate->FileName), strerror(errno)); return NULL; } NewTemplate->Data = NewStrBufPlain(NULL, statbuf.st_size + 1); if (StrBufReadBLOB(NewTemplate->Data, &fd, 1, statbuf.st_size, &Err) < 0) { close(fd); syslog(LOG_WARNING, "ERROR: reading template '%s' - %s
    \n", ChrPtr(NewTemplate->FileName), strerror(errno)); return NULL; } close(fd); Line = 0; StrBufShrinkToFit(NewTemplate->Data, 1); StrBufShrinkToFit(NewTemplate->MimeType, 1); pS = pch = ChrPtr(NewTemplate->Data); pE = pS + StrLength(NewTemplate->Data); while (pch < pE) { const char *pts, *pte; char InQuotes = '\0'; void *pv; /** Find one */ for (; pch < pE; pch ++) { if ((*pch=='<')&&(*(pch + 1)=='?') && !((pch == pS) && /* we must ommit a = pE) continue; pts = pch; /** Found one? parse it. */ for (; pch <= pE - 1; pch ++) { if ((!InQuotes) && ((*pch == '\'') || (*pch == '"'))) { InQuotes = *pch; } else if (InQuotes && (InQuotes == *pch)) { InQuotes = '\0'; } else if ((InQuotes) && (*pch == '\\') && (*(pch + 1) == InQuotes)) { pch++; } else if ((!InQuotes) && (*pch == '>')) { break; } } if (pch + 1 > pE) continue; pte = pch; pv = NewTemplateSubstitute(NewTemplate->Data, pS, pts, pte, Line, NewTemplate); if (pv != NULL) { PutNewToken(NewTemplate, pv); pch ++; } } SanityCheckTemplate(NULL, NewTemplate); return NewTemplate; } const char* PrintTemplate(void *vSubst) { WCTemplate *Tmpl = vSubst; return ChrPtr(Tmpl->FileName); } int LoadTemplateDir(const StrBuf *DirName, HashList *big, const StrBuf *BaseKey) { int Toplevel; StrBuf *FileName; StrBuf *Key; StrBuf *SubKey; StrBuf *SubDirectory; DIR *filedir = NULL; struct dirent *filedir_entry; struct dirent *d; int d_type = 0; int d_namelen; int d_without_ext; d = (struct dirent *)malloc(offsetof(struct dirent, d_name) + PATH_MAX + 1); if (d == NULL) { return 0; } filedir = opendir (ChrPtr(DirName)); if (filedir == NULL) { free(d); return 0; } Toplevel = StrLength(BaseKey) == 0; SubDirectory = NewStrBuf(); SubKey = NewStrBuf(); FileName = NewStrBufPlain(NULL, PATH_MAX); Key = NewStrBuf(); while ((readdir_r(filedir, d, &filedir_entry) == 0) && (filedir_entry != NULL)) { char *MinorPtr; #ifdef _DIRENT_HAVE_D_NAMLEN d_namelen = filedir_entry->d_namlen; #else d_namelen = strlen(filedir_entry->d_name); #endif #ifdef _DIRENT_HAVE_D_TYPE d_type = filedir_entry->d_type; #else #ifndef DT_UNKNOWN #define DT_UNKNOWN 0 #define DT_DIR 4 #define DT_REG 8 #define DT_LNK 10 #define IFTODT(mode) (((mode) & 0170000) >> 12) #define DTTOIF(dirtype) ((dirtype) << 12) #endif d_type = DT_UNKNOWN; #endif d_without_ext = d_namelen; if ((d_namelen > 1) && filedir_entry->d_name[d_namelen - 1] == '~') continue; /* Ignore backup files... */ if ((d_namelen == 1) && (filedir_entry->d_name[0] == '.')) continue; if ((d_namelen == 2) && (filedir_entry->d_name[0] == '.') && (filedir_entry->d_name[1] == '.')) continue; if (d_type == DT_UNKNOWN) { struct stat s; char path[PATH_MAX]; snprintf(path, PATH_MAX, "%s/%s", ChrPtr(DirName), filedir_entry->d_name); if (lstat(path, &s) == 0) { d_type = IFTODT(s.st_mode); } } switch (d_type) { case DT_DIR: /* Skip directories we are not interested in... */ if (strcmp(filedir_entry->d_name, ".svn") == 0) continue; FlushStrBuf(SubKey); if (!Toplevel) { /* If we're not toplevel, the upper dirs count as foo_bar_*/ StrBufAppendBuf(SubKey, BaseKey, 0); StrBufAppendBufPlain(SubKey, HKEY("_"), 0); } StrBufAppendBufPlain(SubKey, filedir_entry->d_name, d_namelen, 0); FlushStrBuf(SubDirectory); StrBufAppendBuf(SubDirectory, DirName, 0); if (ChrPtr(SubDirectory)[StrLength(SubDirectory) - 1] != '/') StrBufAppendBufPlain(SubDirectory, HKEY("/"), 0); StrBufAppendBufPlain(SubDirectory, filedir_entry->d_name, d_namelen, 0); LoadTemplateDir(SubDirectory, big, SubKey); break; case DT_LNK: case DT_REG: while ((d_without_ext > 0) && (filedir_entry->d_name[d_without_ext] != '.')) d_without_ext --; if ((d_without_ext == 0) || (d_namelen < 3)) continue; if (((d_namelen > 1) && filedir_entry->d_name[d_namelen - 1] == '~') || (strcmp(&filedir_entry->d_name[d_without_ext], ".orig") == 0) || (strcmp(&filedir_entry->d_name[d_without_ext], ".swp") == 0)) continue; /* Ignore backup files... */ StrBufPrintf(FileName, "%s/%s", ChrPtr(DirName), filedir_entry->d_name); MinorPtr = strchr(filedir_entry->d_name, '.'); if (MinorPtr != NULL) *MinorPtr = '\0'; FlushStrBuf(Key); if (!Toplevel) { /* If we're not toplevel, the upper dirs count as foo_bar_*/ StrBufAppendBuf(Key, BaseKey, 0); StrBufAppendBufPlain(Key, HKEY("_"), 0); } StrBufAppendBufPlain(Key, filedir_entry->d_name, MinorPtr - filedir_entry->d_name, 0); if (LoadTemplates >= 1) syslog(LOG_DEBUG, "%s %s\n", ChrPtr(FileName), ChrPtr(Key)); prepare_template(FileName, Key, big); default: break; } } free(d); closedir(filedir); FreeStrBuf(&FileName); FreeStrBuf(&Key); FreeStrBuf(&SubDirectory); FreeStrBuf(&SubKey); return 1; } void InitTemplateCache(void) { int i; StrBuf *Key; StrBuf *Dir; HashList *Templates[2]; Dir = NewStrBuf(); Key = NewStrBuf(); /* Primary Template set... */ StrBufPrintf(Dir, "%s/t", static_dirs[0]); LoadTemplateDir(Dir, TemplateCache, Key); /* User local Template set */ StrBufPrintf(Dir, "%s/t", static_dirs[1]); LoadTemplateDir(Dir, LocalTemplateCache, Key); /* Debug Templates, just to be loaded while debugging. */ StrBufPrintf(Dir, "%s/dbg", static_dirs[0]); LoadTemplateDir(Dir, TemplateCache, Key); Templates[0] = TemplateCache; Templates[1] = LocalTemplateCache; if (LoadTemplates == 0) for (i=0; i < 2; i++) { const char *Key; long KLen; HashPos *At; void *vTemplate; At = GetNewHashPos(Templates[i], 0); while (GetNextHashPos(Templates[i], At, &KLen, &Key, &vTemplate) && (vTemplate != NULL)) { load_template(NULL, (WCTemplate *)vTemplate); } DeleteHashPos(&At); } FreeStrBuf(&Dir); FreeStrBuf(&Key); } /*----------------------------------------------------------------------------- * Filling & processing Templates */ /** * \brief executes one token * \param Target buffer to append to * \param Token da to process. * \param Template we're iterating * \param Context Contextpoointer to pass in * \param state are we in conditional state? * \param ContextType what type of information does context giv us? */ int EvaluateToken(StrBuf *Target, int state, WCTemplputParams **TPP) { const char *AppendMe; long AppendMeLen; HashHandler *Handler; void *vVar; WCTemplputParams *TP = *TPP; /* much output, since pName is not terminated... syslog(LOG_DEBUG,"Doing token: %s\n",Token->pName); */ switch (TP->Tokens->Flags) { case SV_GETTEXT: TmplGettext(Target, TP); break; case SV_CONDITIONAL: /** Forward conditional evaluation */ Handler = (HashHandler*) TP->Tokens->PreEval; if (!CheckContext(Target, &Handler->Filter, TP, "Conditional")) { return 0; } return EvaluateConditional(Target, 1, state, TPP); break; case SV_NEG_CONDITIONAL: /** Reverse conditional evaluation */ Handler = (HashHandler*) TP->Tokens->PreEval; if (!CheckContext(Target, &Handler->Filter, TP, "Conditional")) { return 0; } return EvaluateConditional(Target, 0, state, TPP); break; case SV_CUST_STR_CONDITIONAL: /** Conditional put custom strings from params */ Handler = (HashHandler*) TP->Tokens->PreEval; if (!CheckContext(Target, &Handler->Filter, TP, "Conditional")) { return 0; } if (TP->Tokens->nParameters >= 6) { if (EvaluateConditional(Target, 0, state, TPP)) { GetTemplateTokenString(Target, TP, 5, &AppendMe, &AppendMeLen); StrBufAppendBufPlain(Target, AppendMe, AppendMeLen, 0); } else{ GetTemplateTokenString(Target, TP, 4, &AppendMe, &AppendMeLen); StrBufAppendBufPlain(Target, AppendMe, AppendMeLen, 0); } if (*TPP != TP) { UnStackDynamicContext(Target, TPP); } } else { LogTemplateError( Target, "Conditional", ERR_NAME, TP, "needs at least 6 Params!"); } break; case SV_SUBTEMPL: if (TP->Tokens->nParameters == 1) DoTemplate(TKEY(0), Target, TP); break; case SV_PREEVALUATED: Handler = (HashHandler*) TP->Tokens->PreEval; if (!CheckContext(Target, &Handler->Filter, TP, "Token")) { return 0; } Handler->HandlerFunc(Target, TP); break; default: if (GetHash(GlobalNS, TP->Tokens->pName, TP->Tokens->NameEnd, &vVar)) { Handler = (HashHandler*) vVar; if (!CheckContext(Target, &Handler->Filter, TP, "Token")) { return 0; } else { Handler->HandlerFunc(Target, TP); } } else { LogTemplateError( Target, "Token UNKNOWN", ERR_NAME, TP, "You've specified a token that isn't known to webcit.!"); } } return 0; } const StrBuf *ProcessTemplate(WCTemplate *Tmpl, StrBuf *Target, WCTemplputParams *CallingTP) { WCTemplate *pTmpl = Tmpl; int done = 0; int i; TemplState state; const char *pData, *pS; long len; WCTemplputParams TP; WCTemplputParams *TPtr = &TP; memset(TPtr, 0, sizeof(WCTemplputParams)); memcpy(&TP.Filter, &CallingTP->Filter, sizeof(ContextFilter)); TP.Context = CallingTP->Context; TP.Sub = CallingTP->Sub; TP.Super = CallingTP->Super; if (LoadTemplates != 0) { if (LoadTemplates > 1) syslog(LOG_DEBUG, "DBG: ----- loading: [%s] ------ \n", ChrPtr(Tmpl->FileName)); pTmpl = duplicate_template(Tmpl); if(load_template(Target, pTmpl) == NULL) { StrBufAppendPrintf( Target, "
    \nError loading Template [%s]\n See Logfile for details\n
    \n", ChrPtr(Tmpl->FileName)); FreeWCTemplate(pTmpl); return NULL; } } pS = pData = ChrPtr(pTmpl->Data); len = StrLength(pTmpl->Data); i = 0; state = eNext; while (!done) { if (i >= pTmpl->nTokensUsed) { StrBufAppendBufPlain(Target, pData, len - (pData - pS), 0); done = 1; } else { int TokenRc = 0; StrBufAppendBufPlain( Target, pData, pTmpl->Tokens[i]->pTokenStart - pData, 0); TPtr->Tokens = pTmpl->Tokens[i]; TPtr->nArgs = pTmpl->Tokens[i]->nParameters; TokenRc = EvaluateToken(Target, TokenRc, &TPtr); if (TokenRc > 0) { state = eSkipTilEnd; } else if (TokenRc < 0) { if ((TPtr != &TP) && (TPtr->ExitCTXID == -TokenRc)) { UnStackDynamicContext(Target, &TPtr); } TokenRc = 0; } while ((state != eNext) && (i+1 < pTmpl->nTokensUsed)) { /* condition told us to skip till its end condition */ i++; TPtr->Tokens = pTmpl->Tokens[i]; TPtr->nArgs = pTmpl->Tokens[i]->nParameters; if ((pTmpl->Tokens[i]->Flags == SV_CONDITIONAL) || (pTmpl->Tokens[i]->Flags == SV_NEG_CONDITIONAL)) { int rc; rc = EvaluateConditional( Target, pTmpl->Tokens[i]->Flags, TokenRc, &TPtr); if (-rc == TokenRc) { TokenRc = 0; state = eNext; if ((TPtr != &TP) && (TPtr->ExitCTXID == - rc)) { UnStackDynamicContext(Target, &TPtr); } } } } pData = pTmpl->Tokens[i++]->pTokenEnd + 1; if (i > pTmpl->nTokensUsed) done = 1; } } if (LoadTemplates != 0) { FreeWCTemplate(pTmpl); } return Tmpl->MimeType; } /** * \brief Display a variable-substituted template * \param templatename template file to load * \returns the mimetype of the template its doing */ const StrBuf *DoTemplate(const char *templatename, long len, StrBuf *Target, WCTemplputParams *TP) { WCTemplputParams LocalTP; HashList *Static; HashList *StaticLocal; void *vTmpl; if (Target == NULL) Target = WC->WBuf; if (TP == NULL) { memset(&LocalTP, 0, sizeof(WCTemplputParams)); TP = &LocalTP; } Static = TemplateCache; StaticLocal = LocalTemplateCache; if (len == 0) { syslog(LOG_WARNING, "Can't to load a template with empty name!\n"); StrBufAppendPrintf(Target, "
    \nCan't to load a template with empty name!\n
    "); return NULL; } if (!GetHash(StaticLocal, templatename, len, &vTmpl) && !GetHash(Static, templatename, len, &vTmpl)) { syslog(LOG_WARNING, "didn't find Template [%s] %ld %ld\n", templatename, len , (long)strlen(templatename)); StrBufAppendPrintf(Target, "
    \ndidn't find Template [%s] %ld %ld\n
    ", templatename, len, (long)strlen(templatename)); #if 0 dbg_PrintHash(Static, PrintTemplate, NULL); PrintHash(Static, VarPrintTransition, PrintTemplate); #endif return NULL; } if (vTmpl == NULL) return NULL; return ProcessTemplate(vTmpl, Target, TP); } void tmplput_Comment(StrBuf *Target, WCTemplputParams *TP) { if (LoadTemplates != 0) { StrBuf *Comment; const char *pch; long len; GetTemplateTokenString(Target, TP, 0, &pch, &len); Comment = NewStrBufPlain(pch, len); StrBufAppendBufPlain(Target, HKEY(""), 0); FreeStrBuf(&Comment); } } /*----------------------------------------------------------------------------- * Iterators */ typedef struct _HashIterator { HashList *StaticList; int AdditionalParams; CtxType ContextType; CtxType XPectContextType; int Flags; RetrieveHashlistFunc GetHash; HashDestructorFunc Destructor; SubTemplFunc DoSubTemplate; } HashIterator; void RegisterITERATOR(const char *Name, long len, int AdditionalParams, HashList *StaticList, RetrieveHashlistFunc GetHash, SubTemplFunc DoSubTempl, HashDestructorFunc Destructor, CtxType ContextType, CtxType XPectContextType, int Flags) { HashIterator *It; It = (HashIterator*)malloc(sizeof(HashIterator)); memset(It, 0, sizeof(HashIterator)); It->StaticList = StaticList; It->AdditionalParams = AdditionalParams; It->GetHash = GetHash; It->DoSubTemplate = DoSubTempl; It->Destructor = Destructor; It->ContextType = ContextType; It->XPectContextType = XPectContextType; It->Flags = Flags; Put(Iterators, Name, len, It, NULL); } typedef struct _iteratestruct { int GroupChange; int oddeven; const char *Key; long KeyLen; int n; int LastN; }IterateStruct; int preeval_iterate(WCTemplateToken *Token) { WCTemplputParams TPP; WCTemplputParams *TP; void *vTmpl; void *vIt; HashIterator *It; memset(&TPP, 0, sizeof(WCTemplputParams)); TP = &TPP; TP->Tokens = Token; if (!GetHash(Iterators, TKEY(0), &vIt)) { LogTemplateError( NULL, "Iterator", ERR_PARM1, TP, "not found"); return 0; } if (TP->Tokens->Params[1]->Type != TYPE_SUBTEMPLATE) { LogTemplateError(NULL, "Iterator", ERR_PARM1, TP, "Need token with type Subtemplate as param 1, have %s", TP->Tokens->Params[1]->Start); } /* well, we don't check the mobile stuff here... */ if (!GetHash(LocalTemplateCache, TKEY(1), &vTmpl) && !GetHash(TemplateCache, TKEY(1), &vTmpl)) { LogTemplateError(NULL, "SubTemplate", ERR_PARM1, TP, "referenced here doesn't exist"); } Token->Preeval2 = vIt; It = (HashIterator *) vIt; if (TP->Tokens->nParameters < It->AdditionalParams + 2) { LogTemplateError( NULL, "Iterator", ERR_PARM1, TP, "doesn't work with %d params", TP->Tokens->nParameters); } return 1; } void tmpl_iterate_subtmpl(StrBuf *Target, WCTemplputParams *TP) { HashIterator *It; HashList *List; HashPos *it; SortStruct *SortBy = NULL; void *vSortBy; int DetectGroupChange = 0; int nMembersUsed; void *vContext; void *vLastContext = NULL; StrBuf *SubBuf; WCTemplputParams IterateTP; WCTemplputParams SubTP; IterateStruct Status; long StartAt = 0; long StepWidth = 0; long StopAt = -1; memset(&Status, 0, sizeof(IterateStruct)); It = (HashIterator*) TP->Tokens->Preeval2; if (It == NULL) { LogTemplateError( Target, "Iterator", ERR_PARM1, TP, "Unknown!"); return; } if (TP->Tokens->nParameters < It->AdditionalParams + 2) { LogTemplateError( Target, "Iterator", ERR_PARM1, TP, "doesn't work with %d params", TP->Tokens->nParameters - 1); return; } if ((It->XPectContextType != CTX_NONE) && (It->XPectContextType != TP->Filter.ContextType)) { LogTemplateError( Target, "Iterator", ERR_PARM1, TP, "requires context of type %s, have %s", ContextName(It->XPectContextType), ContextName(TP->Filter.ContextType)); return ; } if (It->StaticList == NULL) List = It->GetHash(Target, TP); else List = It->StaticList; DetectGroupChange = (It->Flags & IT_FLAG_DETECT_GROUPCHANGE) != 0; if (DetectGroupChange) { const StrBuf *BSort; DetectGroupChange = 0; if (havebstr("SortBy")) { BSort = sbstr("SortBy"); if (GetHash(SortHash, SKEY(BSort), &vSortBy) && (vSortBy != NULL)) { SortBy = (SortStruct*)vSortBy; /* first check whether its intended for us... */ if ((SortBy->ContextType == It->ContextType)&& /** Ok, its us, lets see in which direction we should sort... */ (havebstr("SortOrder"))) { int SortOrder; SortOrder = LBSTR("SortOrder"); if (SortOrder != 0) DetectGroupChange = 1; } } } } nMembersUsed = GetCount(List); StackContext (TP, &IterateTP, &Status, CTX_ITERATE, 0, TP->Tokens); { SubBuf = NewStrBuf(); if (HAVE_PARAM(2)) { StartAt = GetTemplateTokenNumber(Target, TP, 2, 0); } if (HAVE_PARAM(3)) { StepWidth = GetTemplateTokenNumber(Target, TP, 3, 0); } if (HAVE_PARAM(4)) { StopAt = GetTemplateTokenNumber(Target, TP, 4, -1); } it = GetNewHashPos(List, StepWidth); if (StopAt < 0) { StopAt = GetCount(List); } while (GetNextHashPos(List, it, &Status.KeyLen, &Status.Key, &vContext)) { if ((Status.n >= StartAt) && (Status.n <= StopAt)) { if (DetectGroupChange && Status.n > 0) { Status.GroupChange = SortBy->GroupChange(vContext, vLastContext); } Status.LastN = (Status.n + 1) == nMembersUsed; StackContext(&IterateTP, &SubTP, vContext, It->ContextType, 0, NULL); { if (It->DoSubTemplate != NULL) It->DoSubTemplate(SubBuf, &SubTP); DoTemplate(TKEY(1), SubBuf, &SubTP); StrBufAppendBuf(Target, SubBuf, 0); FlushStrBuf(SubBuf); } UnStackContext(&SubTP); Status.oddeven = ! Status.oddeven; vLastContext = vContext; } Status.n++; } } UnStackContext(&IterateTP); FreeStrBuf(&SubBuf); DeleteHashPos(&it); if (It->Destructor != NULL) It->Destructor(&List); } int conditional_ITERATE_ISGROUPCHANGE(StrBuf *Target, WCTemplputParams *TP) { IterateStruct *Ctx = CTX(CTX_ITERATE); if (TP->Tokens->nParameters < 3) return Ctx->GroupChange; return TP->Tokens->Params[2]->lvalue == Ctx->GroupChange; } void tmplput_ITERATE_ODDEVEN(StrBuf *Target, WCTemplputParams *TP) { IterateStruct *Ctx = CTX(CTX_ITERATE); if (Ctx->oddeven) StrBufAppendBufPlain(Target, HKEY("odd"), 0); else StrBufAppendBufPlain(Target, HKEY("even"), 0); } void tmplput_ITERATE_KEY(StrBuf *Target, WCTemplputParams *TP) { IterateStruct *Ctx = CTX(CTX_ITERATE); StrBufAppendBufPlain(Target, Ctx->Key, Ctx->KeyLen, 0); } void tmplput_ITERATE_LASTN(StrBuf *Target, WCTemplputParams *TP) { IterateStruct *Ctx = CTX(CTX_ITERATE); StrBufAppendPrintf(Target, "%d", Ctx->n); } int conditional_ITERATE_FIRSTN(StrBuf *Target, WCTemplputParams *TP) { IterateStruct *Ctx = CTX(CTX_ITERATE); return Ctx->n == 0; } int conditional_ITERATE_LASTN(StrBuf *Target, WCTemplputParams *TP) { IterateStruct *Ctx = CTX(CTX_ITERATE); return Ctx->LastN; } /*----------------------------------------------------------------------------- * Conditionals */ int EvaluateConditional(StrBuf *Target, int Neg, int state, WCTemplputParams **TPP) { ConditionalStruct *Cond; int rc = 0; int res; WCTemplputParams *TP = *TPP; if ((TP->Tokens->Params[0]->len == 1) && (TP->Tokens->Params[0]->Start[0] == 'X')) { return - (TP->Tokens->Params[1]->lvalue); } Cond = (ConditionalStruct *) TP->Tokens->PreEval; if (Cond == NULL) { LogTemplateError( Target, "Conditional", ERR_PARM1, TP, "unknown!"); return 0; } if (!CheckContext(Target, &Cond->Filter, TP, "Conditional")) { return 0; } res = Cond->CondF(Target, TP); if (res == Neg) rc = TP->Tokens->Params[1]->lvalue; if (LoadTemplates > 5) syslog(LOG_DEBUG, "<%s> : %d %d==%d\n", ChrPtr(TP->Tokens->FlatToken), rc, res, Neg); if (TP->Sub != NULL) { *TPP = TP->Sub; } return rc; } void RegisterContextConditional(const char *Name, long len, int nParams, WCConditionalFunc CondF, WCConditionalFunc ExitCtxCond, int ContextRequired) { ConditionalStruct *Cond; Cond = (ConditionalStruct*)malloc(sizeof(ConditionalStruct)); memset(Cond, 0, sizeof(ConditionalStruct)); Cond->PlainName = Name; Cond->Filter.nMaxArgs = nParams; Cond->Filter.nMinArgs = nParams; Cond->CondF = CondF; Cond->CondExitCtx = ExitCtxCond; Cond->Filter.ContextType = ContextRequired; Put(Conditionals, Name, len, Cond, NULL); } void RegisterTokenParamDefine(const char *Name, long len, long Value) { long *PVal; PVal = (long*)malloc(sizeof(long)); *PVal = Value; Put(Defines, Name, len, PVal, NULL); } long GetTokenDefine(const char *Name, long len, long DefValue) { void *vPVal; if (GetHash(Defines, Name, len, &vPVal) && (vPVal != NULL)) { return *(long*) vPVal; } else { return DefValue; } } void tmplput_DefStr(StrBuf *Target, WCTemplputParams *TP) { const char *Str; long len; GetTemplateTokenString(Target, TP, 2, &Str, &len); StrBufAppendBufPlain(Target, Str, len, 0); } void tmplput_DefVal(StrBuf *Target, WCTemplputParams *TP) { int val; val = GetTemplateTokenNumber(Target, TP, 0, 0); StrBufAppendPrintf(Target, "%d", val); } HashList *Defines; /*----------------------------------------------------------------------------- * Context Strings */ void tmplput_ContextString(StrBuf *Target, WCTemplputParams *TP) { StrBufAppendTemplate(Target, TP, (StrBuf*)CTX(CTX_STRBUF), 0); } int ConditionalContextStr(StrBuf *Target, WCTemplputParams *TP) { StrBuf *TokenText = (StrBuf*) CTX((CTX_STRBUF)); const char *CompareToken; long len; GetTemplateTokenString(Target, TP, 2, &CompareToken, &len); return strcmp(ChrPtr(TokenText), CompareToken) == 0; } void tmplput_ContextStringArray(StrBuf *Target, WCTemplputParams *TP) { HashList *Arr = (HashList*) CTX(CTX_STRBUFARR); void *pV; int val; val = GetTemplateTokenNumber(Target, TP, 0, 0); if (GetHash(Arr, IKEY(val), &pV) && (pV != NULL)) { StrBufAppendTemplate(Target, TP, (StrBuf*)pV, 1); } } int ConditionalContextStrinArray(StrBuf *Target, WCTemplputParams *TP) { HashList *Arr = (HashList*) CTX(CTX_STRBUFARR); void *pV; int val; const char *CompareToken; long len; GetTemplateTokenString(Target, TP, 2, &CompareToken, &len); val = GetTemplateTokenNumber(Target, TP, 0, 0); if (GetHash(Arr, IKEY(val), &pV) && (pV != NULL)) { return strcmp(ChrPtr((StrBuf*)pV), CompareToken) == 0; } else return 0; } /*----------------------------------------------------------------------------- * Boxed-API */ void tmpl_do_boxed(StrBuf *Target, WCTemplputParams *TP) { WCTemplputParams SubTP; StrBuf *Headline = NULL; if (TP->Tokens->nParameters == 2) { if (TP->Tokens->Params[1]->Type == TYPE_STR) { Headline = NewStrBuf(); DoTemplate(TKEY(1), Headline, TP); } else { const char *Ch; long len; GetTemplateTokenString(Target, TP, 1, &Ch, &len); Headline = NewStrBufPlain(Ch, len); } } /* else TODO error? logging? */ StackContext (TP, &SubTP, Headline, CTX_STRBUF, 0, NULL); { DoTemplate(HKEY("box_begin"), Target, &SubTP); } UnStackContext(&SubTP); DoTemplate(TKEY(0), Target, TP); DoTemplate(HKEY("box_end"), Target, TP); FreeStrBuf(&Headline); } /*----------------------------------------------------------------------------- * Tabbed-API */ typedef struct _tab_struct { long CurrentTab; StrBuf *TabTitle; } tab_struct; int preeval_do_tabbed(WCTemplateToken *Token) { WCTemplputParams TPP; WCTemplputParams *TP; const char *Ch; long len; int i, nTabs; memset(&TPP, 0, sizeof(WCTemplputParams)); TP = &TPP; TP->Tokens = Token; nTabs = TP->Tokens->nParameters / 2 - 1; if (TP->Tokens->nParameters % 2 != 0) { LogTemplateError(NULL, "TabbedApi", ERR_PARM1, TP, "need even number of arguments"); return 0; } else for (i = 0; i < nTabs; i++) { if (!HaveTemplateTokenString(NULL, TP, i * 2, &Ch, &len) || (TP->Tokens->Params[i * 2]->len == 0)) { LogTemplateError(NULL, "TabbedApi", ERR_PARM1, TP, "Tab-Subject %d needs to be able to produce a string, have %s", i, TP->Tokens->Params[i * 2]->Start); return 0; } if (!HaveTemplateTokenString(NULL, TP, i * 2 + 1, &Ch, &len) || (TP->Tokens->Params[i * 2 + 1]->len == 0)) { LogTemplateError(NULL, "TabbedApi", ERR_PARM1, TP, "Tab-Content %d needs to be able to produce a string, have %s", i, TP->Tokens->Params[i * 2 + 1]->Start); return 0; } } if (!HaveTemplateTokenString(NULL, TP, i * 2 + 1, &Ch, &len) || (TP->Tokens->Params[i * 2 + 1]->len == 0)) { LogTemplateError(NULL, "TabbedApi", ERR_PARM1, TP, "Tab-Content %d needs to be able to produce a string, have %s", i, TP->Tokens->Params[i * 2 + 1]->Start); return 0; } return 1; } void tmpl_do_tabbed(StrBuf *Target, WCTemplputParams *TP) { StrBuf **TabNames; int i, ntabs, nTabs; tab_struct TS; WCTemplputParams SubTP; memset(&TS, 0, sizeof(tab_struct)); nTabs = ntabs = TP->Tokens->nParameters / 2; TabNames = (StrBuf **) malloc(ntabs * sizeof(StrBuf*)); memset(TabNames, 0, ntabs * sizeof(StrBuf*)); for (i = 0; i < ntabs; i++) { if ((TP->Tokens->Params[i * 2]->Type == TYPE_STR) && (TP->Tokens->Params[i * 2]->len > 0)) { TabNames[i] = NewStrBuf(); DoTemplate(TKEY(i * 2), TabNames[i], TP); } else if (TP->Tokens->Params[i * 2]->Type == TYPE_GETTEXT) { const char *Ch; long len; GetTemplateTokenString(Target, TP, i * 2, &Ch, &len); TabNames[i] = NewStrBufPlain(Ch, -1); } else { /** A Tab without subject? we can't count that, add it as silent */ nTabs --; } } StackContext (TP, &SubTP, &TS, CTX_TAB, 0, NULL); { StrTabbedDialog(Target, nTabs, TabNames); for (i = 0; i < ntabs; i++) { memset(&TS, 0, sizeof(tab_struct)); TS.CurrentTab = i; TS.TabTitle = TabNames[i]; StrBeginTab(Target, i, nTabs, TabNames); DoTemplate(TKEY(i * 2 + 1), Target, &SubTP); StrEndTab(Target, i, nTabs); } for (i = 0; i < ntabs; i++) FreeStrBuf(&TabNames[i]); free(TabNames); } UnStackContext(&SubTP); } void tmplput_TAB_N(StrBuf *Target, WCTemplputParams *TP) { tab_struct *Ctx = CTX(CTX_TAB); StrBufAppendPrintf(Target, "%d", Ctx->CurrentTab); } void tmplput_TAB_TITLE(StrBuf *Target, WCTemplputParams *TP) { tab_struct *Ctx = CTX(CTX_TAB); StrBufAppendTemplate(Target, TP, Ctx->TabTitle, 0); } /*----------------------------------------------------------------------------- * Sorting-API */ void RegisterSortFunc(const char *name, long len, const char *prepend, long preplen, CompareFunc Forward, CompareFunc Reverse, CompareFunc GroupChange, CtxType ContextType) { SortStruct *NewSort; NewSort = (SortStruct*) malloc(sizeof(SortStruct)); memset(NewSort, 0, sizeof(SortStruct)); NewSort->Name = NewStrBufPlain(name, len); if (prepend != NULL) NewSort->PrefPrepend = NewStrBufPlain(prepend, preplen); else NewSort->PrefPrepend = NULL; NewSort->Forward = Forward; NewSort->Reverse = Reverse; NewSort->GroupChange = GroupChange; NewSort->ContextType = ContextType; if (ContextType == CTX_NONE) { syslog(LOG_WARNING, "sorting requires a context. CTX_NONE won't make it.\n"); exit(1); } Put(SortHash, name, len, NewSort, DestroySortStruct); } CompareFunc RetrieveSort(WCTemplputParams *TP, const char *OtherPrefix, long OtherPrefixLen, const char *Default, long ldefault, long DefaultDirection) { const StrBuf *BSort = NULL; SortStruct *SortBy; void *vSortBy; long SortOrder = -1; if (havebstr("SortBy")) { BSort = sbstr("SortBy"); if (OtherPrefix == NULL) { set_room_pref("sort", NewStrBufDup(BSort), 0); } else { set_X_PREFS(HKEY("sort"), OtherPrefix, OtherPrefixLen, NewStrBufDup(BSort), 0); } } else { /** Try to fallback to our remembered values... */ if (OtherPrefix == NULL) { BSort = get_room_pref("sort"); } else { BSort = get_X_PREFS(HKEY("sort"), OtherPrefix, OtherPrefixLen); } if (BSort != NULL) putbstr("SortBy", NewStrBufDup(BSort)); else { StrBuf *Buf; BSort = Buf = NewStrBufPlain(Default, ldefault); putbstr("SortBy", Buf); } } if (!GetHash(SortHash, SKEY(BSort), &vSortBy) || (vSortBy == NULL)) { if (!GetHash(SortHash, Default, ldefault, &vSortBy) || (vSortBy == NULL)) { LogTemplateError( NULL, "Sorting", ERR_PARM1, TP, "Illegal default sort: [%s]", Default); wc_backtrace(LOG_WARNING); } } SortBy = (SortStruct*)vSortBy; if (SortBy->ContextType != TP->Filter.ContextType) return NULL; /** Ok, its us, lets see in which direction we should sort... */ if (havebstr("SortOrder")) { SortOrder = LBSTR("SortOrder"); } else { /** Try to fallback to our remembered values... */ StrBuf *Buf = NULL; if (SortBy->PrefPrepend == NULL) { Buf = get_room_pref("SortOrder"); SortOrder = StrTol(Buf); } else { BSort = get_X_PREFS(HKEY("SortOrder"), OtherPrefix, OtherPrefixLen); } if (Buf == NULL) SortOrder = DefaultDirection; Buf = NewStrBufPlain(NULL, 64); StrBufPrintf(Buf, "%ld", SortOrder); putbstr("SortOrder", Buf); } switch (SortOrder) { default: case 0: return NULL; case 1: return SortBy->Forward; case 2: return SortBy->Reverse; } } enum { eNO_SUCH_SORT, eNOT_SPECIFIED, eINVALID_PARAM, eFOUND }; ConstStr SortIcons[] = { {HKEY("static/webcit_icons/sort_none.gif")}, {HKEY("static/webcit_icons/up_pointer.gif")}, {HKEY("static/webcit_icons/down_pointer.gif")}, }; ConstStr SortNextOrder[] = { {HKEY("1")}, {HKEY("2")}, {HKEY("0")}, }; int GetSortMetric(WCTemplputParams *TP, SortStruct **Next, SortStruct **Param, long *SortOrder, int N) { int bSortError = eNOT_SPECIFIED; const StrBuf *BSort; void *vSort; *SortOrder = 0; *Next = NULL; if (!GetHash(SortHash, TKEY(0), &vSort) || (vSort == NULL)) return eNO_SUCH_SORT; *Param = (SortStruct*) vSort; if (havebstr("SortBy")) { BSort = sbstr("SortBy"); bSortError = eINVALID_PARAM; if ((*Param)->PrefPrepend == NULL) { set_room_pref("sort", NewStrBufDup(BSort), 0); } else { set_X_PREFS(HKEY("sort"), TKEY(N), NewStrBufDup(BSort), 0); } } else { /** Try to fallback to our remembered values... */ if ((*Param)->PrefPrepend == NULL) { BSort = get_room_pref("sort"); } else { BSort = get_X_PREFS(HKEY("sort"), TKEY(N)); } } if (!GetHash(SortHash, SKEY(BSort), &vSort) || (vSort == NULL)) return bSortError; *Next = (SortStruct*) vSort; /** Ok, its us, lets see in which direction we should sort... */ if (havebstr("SortOrder")) { *SortOrder = LBSTR("SortOrder"); } else { /** Try to fallback to our remembered values... */ if ((*Param)->PrefPrepend == NULL) { *SortOrder = StrTol(get_room_pref("SortOrder")); } else { *SortOrder = StrTol(get_X_PREFS(HKEY("SortOrder"), TKEY(N))); } } if (*SortOrder > 2) *SortOrder = 0; return eFOUND; } void tmplput_SORT_ICON(StrBuf *Target, WCTemplputParams *TP) { long SortOrder; SortStruct *Next; SortStruct *Param; const ConstStr *SortIcon; switch (GetSortMetric(TP, &Next, &Param, &SortOrder, 2)){ case eNO_SUCH_SORT: LogTemplateError( Target, "Sorter", ERR_PARM1, TP, " Sorter [%s] unknown!", TP->Tokens->Params[0]->Start); break; case eINVALID_PARAM: LogTemplateError(NULL, "Sorter", ERR_PARM1, TP, " Sorter specified by BSTR 'SortBy' [%s] unknown!", bstr("SortBy")); case eNOT_SPECIFIED: case eFOUND: if (Next == Param) { SortIcon = &SortIcons[SortOrder]; } else { /** Not Us... */ SortIcon = &SortIcons[0]; } StrBufAppendBufPlain(Target, SortIcon->Key, SortIcon->len, 0); } } void tmplput_SORT_NEXT(StrBuf *Target, WCTemplputParams *TP) { long SortOrder; SortStruct *Next; SortStruct *Param; switch (GetSortMetric(TP, &Next, &Param, &SortOrder, 2)){ case eNO_SUCH_SORT: LogTemplateError( Target, "Sorter", ERR_PARM1, TP, " Sorter [%s] unknown!", TP->Tokens->Params[0]->Start); break; case eINVALID_PARAM: LogTemplateError( NULL, "Sorter", ERR_PARM1, TP, " Sorter specified by BSTR 'SortBy' [%s] unknown!", bstr("SortBy")); case eNOT_SPECIFIED: case eFOUND: StrBufAppendBuf(Target, Param->Name, 0); } } void tmplput_SORT_ORDER(StrBuf *Target, WCTemplputParams *TP) { long SortOrder; const ConstStr *SortOrderStr; SortStruct *Next; SortStruct *Param; switch (GetSortMetric(TP, &Next, &Param, &SortOrder, 2)){ case eNO_SUCH_SORT: LogTemplateError( Target, "Sorter", ERR_PARM1, TP, " Sorter [%s] unknown!", TP->Tokens->Params[0]->Start); break; case eINVALID_PARAM: LogTemplateError( NULL, "Sorter", ERR_PARM1, TP, " Sorter specified by BSTR 'SortBy' [%s] unknown!", bstr("SortBy")); case eNOT_SPECIFIED: case eFOUND: if (Next == Param) { SortOrderStr = &SortNextOrder[SortOrder]; } else { /** Not Us... */ SortOrderStr = &SortNextOrder[0]; } StrBufAppendBufPlain(Target, SortOrderStr->Key, SortOrderStr->len, 0); } } void tmplput_long_vector(StrBuf *Target, WCTemplputParams *TP) { long *LongVector = (long*) CTX(CTX_LONGVECTOR); if ((TP->Tokens->Params[0]->Type == TYPE_LONG) && (TP->Tokens->Params[0]->lvalue <= LongVector[0])) { StrBufAppendPrintf(Target, "%ld", LongVector[TP->Tokens->Params[0]->lvalue]); } else { if (TP->Tokens->Params[0]->Type != TYPE_LONG) { LogTemplateError( Target, "Longvector", ERR_NAME, TP, "needs a numerical Parameter!"); } else { LogTemplateError( Target, "LongVector", ERR_PARM1, TP, "doesn't have %ld Parameters, its just the size of %ld!", TP->Tokens->Params[0]->lvalue, LongVector[0]); } } } void dbg_print_longvector(long *LongVector) { StrBuf *Buf = NewStrBufPlain(HKEY("Longvector: [")); int nItems = LongVector[0]; int i; for (i = 0; i < nItems; i++) { if (i + 1 < nItems) StrBufAppendPrintf(Buf, "%d: %ld | ", i, LongVector[i]); else StrBufAppendPrintf(Buf, "%d: %ld]\n", i, LongVector[i]); } syslog(LOG_DEBUG, "%s", ChrPtr(Buf)); FreeStrBuf(&Buf); } int ConditionalLongVector(StrBuf *Target, WCTemplputParams *TP) { long *LongVector = (long*) CTX(CTX_LONGVECTOR); if ((TP->Tokens->Params[2]->Type == TYPE_LONG) && (TP->Tokens->Params[2]->lvalue <= LongVector[0])&& (TP->Tokens->Params[3]->Type == TYPE_LONG) && (TP->Tokens->Params[3]->lvalue <= LongVector[0])) { return LongVector[TP->Tokens->Params[2]->lvalue] == LongVector[TP->Tokens->Params[3]->lvalue]; } else { if ((TP->Tokens->Params[2]->Type == TYPE_LONG) || (TP->Tokens->Params[2]->Type == TYPE_LONG)) { LogTemplateError( Target, "ConditionalLongvector", ERR_PARM1, TP, "needs two long Parameter!"); } else { LogTemplateError( Target, "Longvector", ERR_PARM1, TP, "doesn't have %ld / %ld Parameters, its just the size of %ld!", TP->Tokens->Params[2]->lvalue, TP->Tokens->Params[3]->lvalue, LongVector[0]); } } return 0; } void tmplput_CURRENT_FILE(StrBuf *Target, WCTemplputParams *TP) { StrBufAppendTemplate(Target, TP, TP->Tokens->FileName, 0); } void InitModule_SUBST (void) { RegisterCTX(CTX_TAB); RegisterCTX(CTX_ITERATE); memset(&NoCtx, 0, sizeof(WCTemplputParams)); RegisterNamespace("--", 0, 2, tmplput_Comment, NULL, CTX_NONE); RegisterNamespace("SORT:ICON", 1, 2, tmplput_SORT_ICON, NULL, CTX_NONE); RegisterNamespace("SORT:ORDER", 1, 2, tmplput_SORT_ORDER, NULL, CTX_NONE); RegisterNamespace("SORT:NEXT", 1, 2, tmplput_SORT_NEXT, NULL, CTX_NONE); RegisterNamespace("CONTEXTSTR", 0, 1, tmplput_ContextString, NULL, CTX_STRBUF); RegisterNamespace("CONTEXTSTRARR", 1, 2, tmplput_ContextStringArray, NULL, CTX_STRBUFARR); RegisterNamespace("ITERATE", 2, 100, tmpl_iterate_subtmpl, preeval_iterate, CTX_NONE); RegisterNamespace("DOBOXED", 1, 2, tmpl_do_boxed, NULL, CTX_NONE); RegisterNamespace("DOTABBED", 2, 100, tmpl_do_tabbed, preeval_do_tabbed, CTX_NONE); RegisterNamespace("TAB:N", 0, 0, tmplput_TAB_N, NULL, CTX_TAB); RegisterNamespace("TAB:SUBJECT", 0, 1, tmplput_TAB_TITLE, NULL, CTX_TAB); RegisterNamespace("LONGVECTOR", 1, 1, tmplput_long_vector, NULL, CTX_LONGVECTOR); RegisterConditional("COND:CONTEXTSTR", 3, ConditionalContextStr, CTX_STRBUF); RegisterConditional("COND:CONTEXTSTRARR", 4, ConditionalContextStrinArray, CTX_STRBUFARR); RegisterConditional("COND:LONGVECTOR", 4, ConditionalLongVector, CTX_LONGVECTOR); RegisterConditional("COND:ITERATE:ISGROUPCHANGE", 2, conditional_ITERATE_ISGROUPCHANGE, CTX_ITERATE); RegisterConditional("COND:ITERATE:LASTN", 2, conditional_ITERATE_LASTN, CTX_ITERATE); RegisterConditional("COND:ITERATE:FIRSTN", 2, conditional_ITERATE_FIRSTN, CTX_ITERATE); RegisterNamespace("ITERATE:ODDEVEN", 0, 0, tmplput_ITERATE_ODDEVEN, NULL, CTX_ITERATE); RegisterNamespace("ITERATE:KEY", 0, 0, tmplput_ITERATE_KEY, NULL, CTX_ITERATE); RegisterNamespace("ITERATE:N", 0, 0, tmplput_ITERATE_LASTN, NULL, CTX_ITERATE); RegisterNamespace("CURRENTFILE", 0, 1, tmplput_CURRENT_FILE, NULL, CTX_NONE); RegisterNamespace("DEF:STR", 1, 1, tmplput_DefStr, NULL, CTX_NONE); RegisterNamespace("DEF:VAL", 1, 1, tmplput_DefVal, NULL, CTX_NONE); } void ServerStartModule_SUBST (void) { LocalTemplateCache = NewHash(1, NULL); TemplateCache = NewHash(1, NULL); GlobalNS = NewHash(1, NULL); Iterators = NewHash(1, NULL); Conditionals = NewHash(1, NULL); SortHash = NewHash(1, NULL); Defines = NewHash(1, NULL); CtxList = NewHash(1, NULL); PutContextType(HKEY("CTX_NONE"), 0); RegisterCTX(CTX_STRBUF); RegisterCTX(CTX_STRBUFARR); RegisterCTX(CTX_LONGVECTOR); } void FinalizeModule_SUBST (void) { } void ServerShutdownModule_SUBST (void) { DeleteHash(&TemplateCache); DeleteHash(&LocalTemplateCache); DeleteHash(&GlobalNS); DeleteHash(&Iterators); DeleteHash(&Conditionals); DeleteHash(&SortHash); DeleteHash(&Defines); DeleteHash(&CtxList); } void SessionNewModule_SUBST (wcsession *sess) { } void SessionAttachModule_SUBST (wcsession *sess) { } void SessionDetachModule_SUBST (wcsession *sess) { FreeStrBuf(&sess->WFBuf); } void SessionDestroyModule_SUBST (wcsession *sess) { } webcit-8.24-dfsg.orig/roomlist.c0000644000175000017500000005435312271477123016426 0ustar michaelmichael/* * room listings and filters. */ #include "webcit.h" #include "webserver.h" typedef enum __eRoomParamType { eNotSet, eDomain, eAlias }eRoomParamType; HashList *GetWhoKnowsHash(StrBuf *Target, WCTemplputParams *TP) { StrBuf *Line; StrBuf *Token; long State; HashList *Whok = NULL; int Done = 0; int n = 0; serv_puts("WHOK"); Line = NewStrBuf(); StrBuf_ServGetln(Line); if (GetServerStatus(Line, &State) == 1) { Whok = NewHash(1, Flathash); while(!Done && (StrBuf_ServGetln(Line) >= 0) ) if ( (StrLength(Line)==3) && !strcmp(ChrPtr(Line), "000")) { Done = 1; } else { const char *Pos = NULL; Token = NewStrBufPlain (NULL, StrLength(Line)); StrBufExtract_NextToken(Token, Line, &Pos, '|'); Put(Whok, IKEY(n), Token, HFreeStrBuf); n++; } } else if (State == 550) AppendImportantMessage(_("Higher access is required to access this function."), -1); FreeStrBuf(&Line); return Whok; } void DeleteFloor(void *vFloor) { Floor *pFloor; pFloor = (Floor*) vFloor; FreeStrBuf(&pFloor->Name); free(pFloor); } int SortFloorsByNameOrder(const void *vfloor1, const void *vfloor2) { Floor *f1 = (Floor*) GetSearchPayload(vfloor1); Floor *f2 = (Floor*) GetSearchPayload(vfloor2); /* prefer My floor over alpabetical sort */ if (f1->ID == VIRTUAL_MY_FLOOR) return 1; if (f2->ID == VIRTUAL_MY_FLOOR) return -1; return strcmp(ChrPtr(f1->Name), ChrPtr(f2->Name)); } HashList *GetFloorListHash(StrBuf *Target, WCTemplputParams *TP) { int Done = 0; const char *Err; StrBuf *Buf; HashList *floors; HashList *floorsbyname; HashPos *it; Floor *pFloor; void *vFloor; const char *Pos; int i; wcsession *WCC = WC; const char *HashKey; long HKLen; if (WCC->Floors != NULL) return WCC->Floors; WCC->Floors = floors = NewHash(1, Flathash); WCC->FloorsByName = floorsbyname = NewHash(1, NULL); Buf = NewStrBuf(); pFloor = (Floor*) malloc(sizeof(Floor)); pFloor->ID = VIRTUAL_MY_FLOOR; pFloor->Name = NewStrBufPlain(_("My Folders"), -1); pFloor->NRooms = 0; Put(floors, IKEY(pFloor->ID), pFloor, DeleteFloor); Put(floorsbyname, SKEY(pFloor->Name), pFloor, reference_free_handler); serv_puts("LFLR"); /* get floors */ StrBufTCP_read_line(Buf, &WC->serv_sock, 0, &Err); /* '100', we hope */ if (GetServerStatus(Buf, NULL) == 1) { while(!Done && StrBuf_ServGetln(Buf) >= 0) if ( (StrLength(Buf)==3) && !strcmp(ChrPtr(Buf), "000")) { Done = 1; } else { Pos = NULL; pFloor = (Floor*) malloc(sizeof(Floor)); pFloor->ID = StrBufExtractNext_int(Buf, &Pos, '|'); pFloor->Name = NewStrBufPlain(NULL, StrLength(Buf)); StrBufExtract_NextToken(pFloor->Name, Buf, &Pos, '|'); pFloor->NRooms = StrBufExtractNext_long(Buf, &Pos, '|'); Put(floors, IKEY(pFloor->ID), pFloor, DeleteFloor); Put(floorsbyname, SKEY(pFloor->Name), pFloor, reference_free_handler); } } FreeStrBuf(&Buf); /* now lets pre-sort them alphabeticaly. */ i = 1; SortByPayload(floors, SortFloorsByNameOrder); it = GetNewHashPos(floors, 0); while ( GetNextHashPos(floors, it, &HKLen, &HashKey, &vFloor)) ((Floor*) vFloor)->AlphaN = i++; DeleteHashPos(&it); SortByHashKeyStr(floors); return floors; } HashList *GetZappedRoomListHash(StrBuf *Target, WCTemplputParams *TP) { wcsession *WCC = WC; if (WCC->Floors == NULL) GetFloorListHash(Target, TP); serv_puts("LZRM -1"); return GetRoomListHash(Target, TP); } HashList *GetRoomListHashLKRA(StrBuf *Target, WCTemplputParams *TP) { wcsession *WCC = WC; if (WCC->Floors == NULL) GetFloorListHash(Target, TP); if (WCC->Rooms == NULL) { serv_puts("LKRA"); WCC->Rooms = GetRoomListHash(Target, TP); } return WCC->Rooms; } HashList *GetRoomListHashLPRM(StrBuf *Target, WCTemplputParams *TP) { serv_puts("LPRM"); return GetRoomListHash(Target, TP); } void FlushIgnetCfgs(folder *room) { int i; if (room->IgnetCfgs[maxRoomNetCfg] == (HashList*) StrBufNOTNULL) { for (i = ignet_push_share; i < maxRoomNetCfg; i++) DeleteHash(&room->IgnetCfgs[i]); } memset(&room->IgnetCfgs, 0, sizeof(HashList *) * (maxRoomNetCfg + 1)); room->RoomAlias = NULL; } void FlushFolder(folder *room) { int i; FreeStrBuf(&room->XAPass); FreeStrBuf(&room->Directory); FreeStrBuf(&room->RoomAide); FreeStrBuf(&room->XInfoText); room->XHaveInfoTextLoaded = 0; FreeStrBuf(&room->name); FlushIgnetCfgs(room); if (room->RoomNameParts != NULL) { for (i=0; i < room->nRoomNameParts; i++) FreeStrBuf(&room->RoomNameParts[i]); free(room->RoomNameParts); } memset(room, 0, sizeof(folder)); } void vDeleteFolder(void *vFolder) { folder *room; room = (folder*) vFolder; FlushFolder(room); free(room); } HashList *GetRoomListHash(StrBuf *Target, WCTemplputParams *TP) { int Done = 0; HashList *rooms; folder *room; StrBuf *Buf; const char *Pos; void *vFloor; wcsession *WCC = WC; CompareFunc SortIt; WCTemplputParams SubTP; Buf = NewStrBuf(); rooms = NewHash(1, NULL); StrBuf_ServGetln(Buf); if (GetServerStatus(Buf, NULL) == 1) { while(!Done && (StrBuf_ServGetln(Buf) >= 0)) if ( (StrLength(Buf)==3) && !strcmp(ChrPtr(Buf), "000")) { Done = 1; } else { Pos = NULL; room = (folder*) malloc (sizeof(folder)); memset(room, 0, sizeof(folder)); /* Load the base data from the server reply */ room->name = NewStrBufPlain(NULL, StrLength(Buf)); StrBufExtract_NextToken(room->name, Buf, &Pos, '|'); room->QRFlags = StrBufExtractNext_long(Buf, &Pos, '|'); room->floorid = StrBufExtractNext_int(Buf, &Pos, '|'); room->Order = StrBufExtractNext_long(Buf, &Pos, '|'); room->QRFlags2 = StrBufExtractNext_long(Buf, &Pos, '|'); room->RAFlags = StrBufExtractNext_long(Buf, &Pos, '|'); /* ACWHUT? room->ACL = NewStrBufPlain(NULL, StrLength(Buf)); StrBufExtract_NextToken(room->ACL, Buf, &Pos, '|'); */ room->view = StrBufExtractNext_long(Buf, &Pos, '|'); room->defview = StrBufExtractNext_long(Buf, &Pos, '|'); room->lastchange = StrBufExtractNext_long(Buf, &Pos, '|'); /* Evaluate the Server sent data for later use */ /* find out, whether we are in a sub-room */ room->nRoomNameParts = StrBufNum_tokens(room->name, '\\'); if (room->nRoomNameParts > 1) { int i; Pos = NULL; room->RoomNameParts = malloc(sizeof(StrBuf*) * (room->nRoomNameParts + 1)); memset(room->RoomNameParts, 0, sizeof(StrBuf*) * (room->nRoomNameParts + 1)); for (i=0; i < room->nRoomNameParts; i++) { room->RoomNameParts[i] = NewStrBuf(); StrBufExtract_NextToken(room->RoomNameParts[i], room->name, &Pos, '\\'); } } /* Private mailboxes on the main floor get remapped to the personal folder */ if ((room->QRFlags & QR_MAILBOX) && (room->floorid == 0)) { room->floorid = VIRTUAL_MY_FLOOR; if ((room->nRoomNameParts == 1) && (StrLength(room->name) == 4) && (strcmp(ChrPtr(room->name), "Mail") == 0)) { room->is_inbox = 1; } } /* get a pointer to the floor we're on: */ GetHash(WCC->Floors, IKEY(room->floorid), &vFloor); room->Floor = (const Floor*) vFloor; /* now we know everything, remember it... */ Put(rooms, SKEY(room->name), room, vDeleteFolder); } } SubTP.Filter.ContextType = CTX_ROOMS; SortIt = RetrieveSort(&SubTP, NULL, 0, HKEY("fileunsorted"), 0); if (SortIt != NULL) SortByPayload(rooms, SortIt); else SortByPayload(rooms, SortRoomsByListOrder); FreeStrBuf(&Buf); return rooms; } HashList *GetThisRoomMAlias(StrBuf *Target, WCTemplputParams *TP) { wcsession *WCC = WC; StrBuf *Line; StrBuf *Token; HashList *Aliases = NULL; const char *pComma; long aliaslen; long locallen; long State; serv_puts("GNET "FILE_MAILALIAS); Line = NewStrBuf(); StrBuf_ServGetln(Line); if (GetServerStatus(Line, &State) == 1) { int Done = 0; int n = 0; Aliases = NewHash(1, NULL); while(!Done && (StrBuf_ServGetln(Line) >= 0)) if ( (StrLength(Line)==3) && !strcmp(ChrPtr(Line), "000")) { Done = 1; } else { pComma = strchr(ChrPtr(Line), ','); if (pComma == NULL) continue; aliaslen = pComma - ChrPtr(Line); locallen = StrLength(Line) - 1 - aliaslen; if (locallen - 5 != StrLength(WCC->CurRoom.name)) continue; if (strncmp(pComma + 1, "room_", 5) != 0) continue; if (strcasecmp(pComma + 6, ChrPtr(WCC->CurRoom.name)) != 0) continue; Token = NewStrBufPlain(ChrPtr(Line), aliaslen); Put(Aliases, IKEY(n), Token, HFreeStrBuf); n++; } } else if (State == 550) AppendImportantMessage(_("Higher access is required to access this function."), -1); FreeStrBuf(&Line); return Aliases; } void AppendPossibleAliasWithDomain( HashList *PossibleAliases, long *nPossibleAliases, const HashList *Domains, const char *prefix, long len, const char* Alias, long AliasLen) { const StrBuf *OneDomain; StrBuf *Line; HashPos *It = NULL; const char *Key; long KLen; void *pV; int n; It = GetNewHashPos(Domains, 1); n = *nPossibleAliases; while (GetNextHashPos(Domains, It, &KLen, &Key, &pV)) { OneDomain = (const StrBuf*) pV; Line = NewStrBuf(); StrBufAppendBufPlain(Line, prefix, len, 0); StrBufAppendBufPlain(Line, Alias, AliasLen, 0); StrBufAppendBufPlain(Line, HKEY("@"), 0); StrBufAppendBuf(Line, OneDomain, 0); Put(PossibleAliases, IKEY(n), Line, HFreeStrBuf); n++; } DeleteHashPos(&It); *nPossibleAliases = n; } HashList *GetThisRoomPossibleMAlias(StrBuf *Target, WCTemplputParams *TP) { wcsession *WCC = WC; HashList *Domains; StrBuf *Line; StrBuf *Token; StrBuf *RoomName; HashList *PossibleAliases = NULL; const char *pComma; const char *pAt; long aliaslen; long locallen; long State; long n = 0; Domains = GetValidDomainNames(Target, TP); if (Domains == NULL) return NULL; PossibleAliases = NewHash(1, NULL); Line = NewStrBuf(); RoomName = NewStrBufDup(WCC->CurRoom.name); StrBufAsciify(RoomName, '_'); StrBufReplaceChars(RoomName, ' ', '_'); AppendPossibleAliasWithDomain(PossibleAliases, &n, Domains, HKEY("room_"), SKEY(RoomName)); serv_puts("GNET "FILE_MAILALIAS); StrBuf_ServGetln(Line); if (GetServerStatus(Line, &State) == 1) { int Done = 0; while(!Done && (StrBuf_ServGetln(Line) >= 0)) if ( (StrLength(Line)==3) && !strcmp(ChrPtr(Line), "000")) { Done = 1; } else { pComma = strchr(ChrPtr(Line), ','); if (pComma == NULL) continue; aliaslen = pComma - ChrPtr(Line); locallen = StrLength(Line) - 1 - aliaslen; if (locallen - 5 != StrLength(WCC->CurRoom.name)) continue; if (strncmp(pComma + 1, "room_", 5) != 0) continue; if (strcasecmp(pComma + 6, ChrPtr(WCC->CurRoom.name)) != 0) continue; pAt = strchr(ChrPtr(Line), '@'); if ((pAt == NULL) || (pAt > pComma)) { AppendPossibleAliasWithDomain(PossibleAliases, &n, Domains, HKEY(""), ChrPtr(Line), aliaslen); n++; } else { Token = NewStrBufPlain(ChrPtr(Line), aliaslen); Put(PossibleAliases, IKEY(n), Token, HFreeStrBuf); n++; } } } else if (State == 550) AppendImportantMessage(_("Higher access is required to access this function."), -1); FreeStrBuf(&Line); FreeStrBuf(&RoomName); return PossibleAliases; } HashList *GetNetConfigHash(StrBuf *Target, WCTemplputParams *TP) { wcsession *WCC = WC; StrBuf *Line; StrBuf *Token; StrBuf *Content; long WantThisOne; long PutTo; long State; WantThisOne = GetTemplateTokenNumber(Target, TP, 5, -1); if ((WantThisOne < 0) || (WantThisOne > maxRoomNetCfg)) return NULL; if (WCC->CurRoom.IgnetCfgs[maxRoomNetCfg] == (HashList*) StrBufNOTNULL) return WCC->CurRoom.IgnetCfgs[WantThisOne]; WCC->CurRoom.IgnetCfgs[maxRoomNetCfg] = (HashList*) StrBufNOTNULL; serv_puts("GNET"); Line = NewStrBuf(); Token = NewStrBuf(); StrBuf_ServGetln(Line); if (GetServerStatus(Line, &State) == 1) { const char *Pos = NULL; int Done = 0; int HaveRoomMailAlias = 0; while(!Done && (StrBuf_ServGetln(Line) >= 0)) { if (StrLength(Line) == 0) continue; if ( (StrLength(Line)==3) && !strcmp(ChrPtr(Line), "000")) { Done = 1; } else { StrBufExtract_NextToken(Token, Line, &Pos, '|'); PutTo = GetTokenDefine(SKEY(Token), -1); if (PutTo == roommailalias) { if (HaveRoomMailAlias > 0) continue; /* Only ONE alias possible! */ HaveRoomMailAlias++; } if ((PutTo >= 0) && (PutTo < maxRoomNetCfg) && (Pos != StrBufNOTNULL)) { int n; HashList *SubH; if (WCC->CurRoom.IgnetCfgs[PutTo] == NULL) { n = 0; WCC->CurRoom.IgnetCfgs[PutTo] = NewHash(1, NULL); } else { n = GetCount(WCC->CurRoom.IgnetCfgs[PutTo]); } SubH = NewHash(1, NULL); Put(WCC->CurRoom.IgnetCfgs[PutTo], IKEY(n), SubH, HDeleteHash); n = 1; /* #0 is the type... */ while (Pos != StrBufNOTNULL) { Content = NewStrBuf(); StrBufExtract_NextToken(Content, Line, &Pos, '|'); if ((PutTo == roommailalias) && n == 1) WCC->CurRoom.RoomAlias = Content; Put(SubH, IKEY(n), Content, HFreeStrBuf); n++; } } Pos = NULL; } } } else if (State == 550) AppendImportantMessage(_("Higher access is required to access this function."), -1); FreeStrBuf(&Line); FreeStrBuf(&Token); return WCC->CurRoom.IgnetCfgs[WantThisOne]; } /** Unused function that orders rooms by the listorder flag */ int SortRoomsByListOrder(const void *room1, const void *room2) { folder *r1 = (folder*) GetSearchPayload(room1); folder *r2 = (folder*) GetSearchPayload(room2); if (r1->Order == r2->Order) return 0; if (r1->Order > r2->Order) return 1; return -1; } int CompareRoomListByFloorRoomPrivFirst(const void *room1, const void *room2) { folder *r1 = (folder*) GetSearchPayload(room1); folder *r2 = (folder*) GetSearchPayload(room2); if ((r1->Floor == NULL) || (r2->Floor == NULL)) return 0; /** * are we on the same floor? else sort by floor. */ if (r1->Floor != r2->Floor) { /** * the private rooms are first in any case. */ if (r1->Floor->ID == VIRTUAL_MY_FLOOR) return -1; if (r2->Floor->ID == VIRTUAL_MY_FLOOR) return 1; /** * else decide alpaheticaly by floorname */ return (r1->Floor->AlphaN > r2->Floor->AlphaN)? 1 : -1; } /** * if we have different levels of subdirectories, * we want the toplevel to be first, regardless of sort * sequence. */ if (((r1->nRoomNameParts > 1) || (r2->nRoomNameParts > 1) )&& (r1->nRoomNameParts != r2->nRoomNameParts)) { int i, ret; int nparts = (r1->nRoomNameParts > r2->nRoomNameParts)? r2->nRoomNameParts : r1->nRoomNameParts; for (i=0; i < nparts; i++) { ret = strcmp (ChrPtr(r1->name), ChrPtr(r2->name)); /** * Deltas in common parts? exit here. */ if (ret != 0) return ret; } /** * who's a subdirectory of whom? */ if (r1->nRoomNameParts > r2->nRoomNameParts) return 1; else return -1; } /** * else just sort alphabeticaly. */ return strcmp (ChrPtr(r1->name), ChrPtr(r2->name)); } int CompareRoomListByFloorRoomPrivFirstRev(const void *room1, const void *room2) { folder *r1 = (folder*) GetSearchPayload(room1); folder *r2 = (folder*) GetSearchPayload(room2); if ((r1->Floor == NULL) || (r2->Floor == NULL)) return 0; /** * are we on the same floor? else sort by floor. */ if (r2->Floor != r1->Floor) { /** * the private rooms are first in any case. */ if (r1->Floor->ID == VIRTUAL_MY_FLOOR) return -1; if (r2->Floor->ID == VIRTUAL_MY_FLOOR) return 1; /** * else decide alpaheticaly by floorname */ return (r1->Floor->AlphaN < r2->Floor->AlphaN)? 1 : -1; } /** * if we have different levels of subdirectories, * we want the toplevel to be first, regardless of sort * sequence. */ if (((r1->nRoomNameParts > 1) || (r2->nRoomNameParts > 1) )&& (r1->nRoomNameParts != r2->nRoomNameParts)) { int i, ret; int nparts = (r1->nRoomNameParts > r2->nRoomNameParts)? r2->nRoomNameParts : r1->nRoomNameParts; for (i=0; i < nparts; i++) { /** * special cases if one room is top-level... */ if (r2->nRoomNameParts == 1) ret = strcmp (ChrPtr(r2->name), ChrPtr(r1->RoomNameParts[i])); else if (r1->nRoomNameParts == 1) ret = strcmp (ChrPtr(r2->RoomNameParts[i]), ChrPtr(r1->name)); else ret = strcmp (ChrPtr(r2->RoomNameParts[i]), ChrPtr(r1->RoomNameParts[i])); /** * Deltas in common parts? exit here. */ if (ret != 0) return ret; } /** * who's a subdirectory of whom? */ if (r1->nRoomNameParts > r2->nRoomNameParts) return 1; else return -1; } return strcmp (ChrPtr(r2->name), ChrPtr(r1->name)); } int GroupchangeRoomListByFloorRoomPrivFirst(const void *room1, const void *room2) { folder *r1 = (folder*) room1; folder *r2 = (folder*) room2; if ((r1->Floor == NULL) || (r2->Floor == NULL)) return 0; if (r1->Floor == r2->Floor) return 0; else { wcsession *WCC = WC; static int columns = 3; int boxes_per_column = 0; int nf; nf = GetCount(WCC->Floors); while (nf % columns != 0) ++nf; boxes_per_column = (nf / columns); if (boxes_per_column < 1) boxes_per_column = 1; if (r1->Floor->AlphaN % boxes_per_column == 0) return 2; else return 1; } } int CompareRooms(const folder *room1, const folder *room2) { if ((room1 == NULL) || (room2 == NULL)) return -1; return CompareRoomListByFloorRoomPrivFirst(room1, room2); } int ConditionalThisRoomIsStrBufContextAlias(StrBuf *Target, WCTemplputParams *TP) { wcsession *WCC = WC; const char *pVal; long len; eRoomParamType ParamType; ParamType = GetTemplateTokenNumber(Target, TP, 2, eNotSet); GetTemplateTokenString(Target, TP, 3, &pVal, &len); if (ParamType == eNotSet) { return StrLength(WCC->CurRoom.RoomAlias) == 0; } else if (ParamType == eDomain) { const StrBuf *CtxStr = (const StrBuf*) CTX(CTX_STRBUF); const char *pAt; if (CtxStr == NULL) return 0; if (StrLength(WCC->CurRoom.RoomAlias) == 0) return 0; if (strncmp(ChrPtr(WCC->CurRoom.RoomAlias), "room_", 5) != 0) return 0; pAt = strchr(ChrPtr(WCC->CurRoom.RoomAlias), '@'); if (pAt == NULL) return 0; return strcmp(pAt + 1, ChrPtr(CtxStr)) == 0; } else if (ParamType == eAlias) { const StrBuf *CtxStr = (const StrBuf*) CTX(CTX_STRBUF); if (CtxStr == NULL) return 0; if (StrLength(WCC->CurRoom.RoomAlias) == 0) return 0; return strcmp(ChrPtr(WCC->CurRoom.RoomAlias), ChrPtr(CtxStr)) == 0; } else { LogTemplateError(Target, "TokenParameter", 2, TP, "Invalid paramtype; need one of [eNotSet|eDomain|eAlias]"); return 0; } } int ConditionalRoomIsRESTSubRoom(StrBuf *Target, WCTemplputParams *TP) { wcsession *WCC = WC; folder *Folder = (folder *)CTX(CTX_ROOMS); HashPos *it; StrBuf * Dir; void *vDir; long len; const char *Key; int i, j, urlp; int delta; /* list only folders relative to the current floor... */ if (Folder->Floor != WCC->CurrentFloor) return 0; urlp = GetCount(WCC->Directory); delta = Folder->nRoomNameParts - urlp + 1; syslog(LOG_DEBUG, "\n->%s: %d - %ld ", ChrPtr(Folder->name), urlp, Folder->nRoomNameParts); /* list only the floors which are in relation to the dav_depth header */ if (WCC->Hdr->HR.dav_depth != delta) { syslog(LOG_DEBUG, "1\n"); return 0; } it = GetNewHashPos(WCC->Directory, 0); /* Fast forward the floorname we checked above... */ GetNextHashPos(WCC->Directory, it, &len, &Key, &vDir); if (Folder->nRoomNameParts > 1) { for (i = 0, j = 1; (i > Folder->nRoomNameParts) && (j > urlp); i++, j++) { if (!GetNextHashPos(WCC->Directory, it, &len, &Key, &vDir) || (vDir == NULL)) { DeleteHashPos(&it); syslog(LOG_DEBUG, "3\n"); return 0; } Dir = (StrBuf*) vDir; if (strcmp(ChrPtr(Folder->RoomNameParts[i]), ChrPtr(Dir)) != 0) { DeleteHashPos(&it); syslog(LOG_DEBUG, "4\n"); return 0; } } DeleteHashPos(&it); return 1; } else { if (!GetNextHashPos(WCC->Directory, it, &len, &Key, &vDir) || (vDir == NULL)) { DeleteHashPos(&it); syslog(LOG_DEBUG, "5\n"); return WCC->Hdr->HR.dav_depth == 1; } DeleteHashPos(&it); Dir = (StrBuf*) vDir; if (WCC->Hdr->HR.dav_depth == 0) { return (strcmp(ChrPtr(Folder->name), ChrPtr(Dir)) == 0); } return 0; } } void InitModule_ROOMLIST (void) { /* we duplicate this, just to be shure its already done. */ RegisterCTX(CTX_ROOMS); RegisterCTX(CTX_FLOORS); RegisterIterator("ITERATE:THISROOM:WHO_KNOWS", 0, NULL, GetWhoKnowsHash, NULL, DeleteHash, CTX_STRBUF, CTX_NONE, IT_NOFLAG); RegisterIterator("ITERATE:THISROOM:GNET", 1, NULL, GetNetConfigHash, NULL, NULL, CTX_STRBUFARR, CTX_NONE, IT_NOFLAG); RegisterIterator("ITERATE:THISROOM:MALIAS", 1, NULL, GetThisRoomMAlias, NULL, NULL, CTX_STRBUF, CTX_NONE, IT_NOFLAG); RegisterIterator("ITERATE:THISROOM:POSSIBLE:MALIAS", 1, NULL, GetThisRoomPossibleMAlias, NULL, NULL, CTX_STRBUF, CTX_NONE, IT_NOFLAG); RegisterIterator("LFLR", 0, NULL, GetFloorListHash, NULL, NULL, CTX_FLOORS, CTX_NONE, IT_FLAG_DETECT_GROUPCHANGE); RegisterIterator("LKRA", 0, NULL, GetRoomListHashLKRA, NULL, NULL, CTX_ROOMS, CTX_NONE, IT_FLAG_DETECT_GROUPCHANGE); RegisterIterator("LZRM", 0, NULL, GetZappedRoomListHash, NULL, DeleteHash, CTX_ROOMS, CTX_NONE, IT_FLAG_DETECT_GROUPCHANGE); RegisterIterator("LPRM", 0, NULL, GetRoomListHashLPRM, NULL, DeleteHash, CTX_ROOMS, CTX_NONE, IT_FLAG_DETECT_GROUPCHANGE); REGISTERTokenParamDefine(eNotSet); REGISTERTokenParamDefine(eDomain); REGISTERTokenParamDefine(eAlias); RegisterConditional("COND:ROOM:REST:ISSUBROOM", 0, ConditionalRoomIsRESTSubRoom, CTX_ROOMS); RegisterConditional("COND:THISROOM:ISALIAS:CONTEXTSTR", 0, ConditionalThisRoomIsStrBufContextAlias, CTX_NONE); RegisterSortFunc(HKEY("byfloorroom"), NULL, 0, CompareRoomListByFloorRoomPrivFirst, CompareRoomListByFloorRoomPrivFirstRev, GroupchangeRoomListByFloorRoomPrivFirst, CTX_ROOMS); } webcit-8.24-dfsg.orig/ical_subst.c0000644000175000017500000003775112271477123016711 0ustar michaelmichael/* * Copyright (c) 1996-2012 by the citadel.org team * * This program is open source software. You can redistribute it and/or * modify it under the terms of the GNU General Public License, version 3. * * This program 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. */ #include "webcit.h" extern IcalKindEnumMap icalproperty_kind_map[]; extern IcalMethodEnumMap icalproperty_method_map[]; HashList *IcalComponentMap = NULL; CtxType CTX_ICAL = CTX_NONE; CtxType CTX_ICALPROPERTY = CTX_NONE; CtxType CTX_ICALMETHOD = CTX_NONE; CtxType CTX_ICALTIME = CTX_NONE; CtxType CTX_ICALATTENDEE = CTX_NONE; CtxType CTX_ICALCONFLICT = CTX_NONE; #if 0 void SortPregetMatter(HashList *Cals) { disp_cal *Cal; void *vCal; const char *Key; long KLen; IcalEnumMap *SortMap[10]; IcalEnumMap *Map; void *vSort; const char *Next = NULL; const StrBuf *SortVector; StrBuf *SortBy; int i = 0; HashPos *It; SortVector = SBSTR("ICALSortVec"); if (SortVector == NULL) return; for (i = 0; i < 10; i++) SortMap[i] = NULL; SortBy = NewStrBuf(); while (StrBufExtract_NextToken(SortBy, SortVector, &Next, ':') > 0) { GetHash(IcalComponentMap, SKEY(SortBy), &vSort); Map = (IcalEnumMap*) vSort; SortMap[i] = Map; i++; if (i > 9) break; } if (i == 0) return; switch (SortMap[i - 1]->map) { /* case */ default: break; } It = GetNewHashPos(Cals, 0); while (GetNextHashPos(Cals, It, &KLen, &Key, &vCal)) { i = 0; Cal = (disp_cal*) vCal; Cal->Status = icalcomponent_get_status(Cal->cal); Cal->SortBy = Cal->cal; while ((SortMap[i] != NULL) && (Cal->SortBy != NULL)) { /****Cal->SortBy = icalcomponent_get_first_property(Cal->SortBy, SortMap[i++]->map); */ } } } #endif void tmplput_ICalItem(StrBuf *Target, WCTemplputParams *TP) { icalcomponent *cal = (icalcomponent *) CTX(CTX_ICAL); icalproperty *p; icalproperty_kind Kind; const char *str; Kind = (icalproperty_kind) GetTemplateTokenNumber(Target, TP, 0, ICAL_ANY_PROPERTY); p = icalcomponent_get_first_property(cal, Kind); if (p != NULL) { str = icalproperty_get_comment (p); StrBufAppendTemplateStr(Target, TP, str, 1); } } void tmplput_CtxICalProperty(StrBuf *Target, WCTemplputParams *TP) { icalproperty *p = (icalproperty *) CTX(CTX_ICALPROPERTY); const char *str; str = icalproperty_get_comment (p); StrBufAppendTemplateStr(Target, TP, str, 0); } int ReleaseIcalSubCtx(StrBuf *Target, WCTemplputParams *TP) { WCTemplputParams *TPP = TP; UnStackContext(TP); free(TPP); return 0; } int cond_ICalIsA(StrBuf *Target, WCTemplputParams *TP) { icalcomponent *cal = (icalcomponent *) CTX(CTX_ICAL); icalcomponent_kind c = GetTemplateTokenNumber(Target, TP, 2, ICAL_NO_COMPONENT); return icalcomponent_isa(cal) == c; } int cond_ICalHaveItem(StrBuf *Target, WCTemplputParams *TP) { icalcomponent *cal = (icalcomponent *) CTX(CTX_ICAL); icalproperty *p; icalproperty_kind Kind; Kind = (icalproperty_kind) GetTemplateTokenNumber(Target, TP, 2, ICAL_ANY_PROPERTY); p = icalcomponent_get_first_property(cal, Kind); if (p != NULL) { WCTemplputParams *DynamicTP; DynamicTP = (WCTemplputParams*) malloc(sizeof(WCTemplputParams)); StackDynamicContext (TP, DynamicTP, p, CTX_ICALPROPERTY, 0, TP->Tokens, ReleaseIcalSubCtx, TP->Tokens->Params[1]->lvalue); return 1; } return 0; } int ReleaseIcalTimeCtx(StrBuf *Target, WCTemplputParams *TP) { WCTemplputParams *TPP = TP; UnStackContext(TP); free(TPP); return 0; } int cond_ICalHaveTimeItem(StrBuf *Target, WCTemplputParams *TP) { icalcomponent *cal = (icalcomponent *) CTX(CTX_ICAL); icalproperty *p; icalproperty_kind Kind; Kind = (icalproperty_kind) GetTemplateTokenNumber(Target, TP, 2, ICAL_ANY_PROPERTY); p = icalcomponent_get_first_property(cal, Kind); if (p != NULL) { struct icaltimetype *t; struct icaltimetype tt; WCTemplputParams *DynamicTP; DynamicTP = (WCTemplputParams*) malloc(sizeof(WCTemplputParams) + sizeof(struct icaltimetype)); t = (struct icaltimetype *) &DynamicTP[1]; memset(&tt, 0, sizeof(struct icaltimetype)); switch (Kind) { case ICAL_DTSTART_PROPERTY: tt = icalproperty_get_dtstart(p); break; case ICAL_DTEND_PROPERTY: tt = icalproperty_get_dtend(p); break; default: break; } memcpy(t, &tt, sizeof(struct icaltimetype)); StackDynamicContext (TP, DynamicTP, t, CTX_ICALTIME, 0, TP->Tokens, ReleaseIcalTimeCtx, TP->Tokens->Params[1]->lvalue); return 1; } return 0; } int cond_ICalTimeIsDate(StrBuf *Target, WCTemplputParams *TP) { struct icaltimetype *t = (struct icaltimetype *) CTX(CTX_ICALTIME); return t->is_date; } void tmplput_ICalTime_Date(StrBuf *Target, WCTemplputParams *TP) { struct tm d_tm; long len; char buf[256]; struct icaltimetype *t = (struct icaltimetype *) CTX(CTX_ICALTIME); memset(&d_tm, 0, sizeof d_tm); d_tm.tm_year = t->year - 1900; d_tm.tm_mon = t->month - 1; d_tm.tm_mday = t->day; len = wc_strftime(buf, sizeof(buf), "%x", &d_tm); StrBufAppendBufPlain(Target, buf, len, 0); } void tmplput_ICalTime_Time(StrBuf *Target, WCTemplputParams *TP) { long len; char buf[256]; struct icaltimetype *t = (struct icaltimetype *) CTX(CTX_ICALTIME); time_t tt; tt = icaltime_as_timet(*t); len = webcit_fmt_date(buf, sizeof(buf), tt, DATEFMT_FULL); StrBufAppendBufPlain(Target, buf, len, 0); } void tmplput_ICalDate(StrBuf *Target, WCTemplputParams *TP) { icalcomponent *cal = (icalcomponent *) CTX(CTX_ICAL); icalproperty *p; icalproperty_kind Kind; struct icaltimetype t; time_t tt; char buf[256]; Kind = (icalproperty_kind) GetTemplateTokenNumber(Target, TP, 0, ICAL_ANY_PROPERTY); p = icalcomponent_get_first_property(cal, Kind); if (p != NULL) { long len; t = icalproperty_get_dtend(p); tt = icaltime_as_timet(t); len = webcit_fmt_date(buf, 256, tt, DATEFMT_FULL); StrBufAppendBufPlain(Target, buf, len, 0); } } void tmplput_CtxICalPropertyDate(StrBuf *Target, WCTemplputParams *TP) { icalproperty *p = (icalproperty *) CTX(CTX_ICALPROPERTY); struct icaltimetype t; time_t tt; char buf[256]; long len; t = icalproperty_get_dtend(p); tt = icaltime_as_timet(t); len = webcit_fmt_date(buf, sizeof(buf), tt, DATEFMT_FULL); StrBufAppendBufPlain(Target, buf, len, 0); } void render_MIME_ICS_TPL(StrBuf *Target, WCTemplputParams *TP, StrBuf *FoundCharset) { wc_mime_attachment *Mime = CTX(CTX_MIME_ATACH); icalproperty_method the_method = ICAL_METHOD_NONE; icalproperty *method = NULL; icalcomponent *cal = NULL; icalcomponent *c = NULL; WCTemplputParams SubTP; WCTemplputParams SuperTP; static int divcount = 0; if (StrLength(Mime->Data) == 0) { MimeLoadData(Mime); } if (StrLength(Mime->Data) > 0) { cal = icalcomponent_new_from_string(ChrPtr(Mime->Data)); } if (cal == NULL) { StrBufAppendPrintf(Mime->Data, _("There was an error parsing this calendar item.")); StrBufAppendPrintf(Mime->Data, "
    \n"); return; } putlbstr("divname", ++divcount); putbstr("cal_partnum", NewStrBufDup(Mime->PartNum)); putlbstr("msgnum", Mime->msgnum); memset(&SubTP, 0, sizeof(WCTemplputParams)); memset(&SuperTP, 0, sizeof(WCTemplputParams)); /*//ical_dezonify(cal); */ /* If the component has subcomponents, recurse through them. */ c = icalcomponent_get_first_component(cal, ICAL_ANY_COMPONENT); c = (c != NULL) ? c : cal; method = icalcomponent_get_first_property(cal, ICAL_METHOD_PROPERTY); if (method != NULL) { the_method = icalproperty_get_method(method); } StackContext (TP, &SuperTP, &the_method, CTX_ICALMETHOD, 0, TP->Tokens); StackContext (&SuperTP, &SubTP, c, CTX_ICAL, 0, SuperTP.Tokens); FlushStrBuf(Mime->Data); /// DoTemplate(HKEY("ical_attachment_display"), Mime->Data, &SubTP); DoTemplate(HKEY("ical_edit"), Mime->Data, &SubTP); /*/ cal_process_object(Mime->Data, cal, 0, Mime->msgnum, ChrPtr(Mime->PartNum)); */ /* Free the memory we obtained from libical's constructor */ StrBufPlain(Mime->ContentType, HKEY("text/html")); StrBufAppendPrintf(WC->trailing_javascript, "eventEditAllDay(); \n" "RecurrenceShowHide(); \n" "EnableOrDisableCheckButton(); \n" ); UnStackContext(&SuperTP); UnStackContext(&SubTP); icalcomponent_free(cal); } void CreateIcalComponendKindLookup(void) { int i = 0; IcalComponentMap = NewHash (1, NULL); while (icalproperty_kind_map[i].NameLen != 0) { RegisterNS(icalproperty_kind_map[i].Name, icalproperty_kind_map[i].NameLen, 0, 10, tmplput_ICalItem, NULL, CTX_ICAL); Put(IcalComponentMap, icalproperty_kind_map[i].Name, icalproperty_kind_map[i].NameLen, &icalproperty_kind_map[i], reference_free_handler); i++; } } int cond_ICalIsMethod(StrBuf *Target, WCTemplputParams *TP) { icalproperty_method *the_method = (icalproperty_method *) CTX(CTX_ICALMETHOD); icalproperty_method which_method; which_method = GetTemplateTokenNumber(Target, TP, 2, ICAL_METHOD_X); return *the_method == which_method; } typedef struct CalendarConflict { long is_update; long existing_msgnum; StrBuf *conflict_event_uid; StrBuf *conflict_event_summary; }CalendarConflict; void DeleteConflict(void *vConflict) { CalendarConflict *c = (CalendarConflict *) vConflict; FreeStrBuf(&c->conflict_event_uid); FreeStrBuf(&c->conflict_event_summary); free(c); } HashList *iterate_FindConflict(StrBuf *Target, WCTemplputParams *TP) { StrBuf *Line; HashList *Conflicts = NULL; CalendarConflict *Conflict; wc_mime_attachment *Mime = (wc_mime_attachment *) CTX(CTX_MIME_ATACH); serv_printf("ICAL conflicts|%ld|%s|", Mime->msgnum, ChrPtr(Mime->PartNum)); Line = NewStrBuf(); StrBuf_ServGetln(Line); if (GetServerStatus(Line, NULL) == 1) { const char *Pos = NULL; int Done = 0; int n = 0; Conflicts = NewHash(1, Flathash); while(!Done && (StrBuf_ServGetln(Line) >= 0) ) if ( (StrLength(Line)==3) && !strcmp(ChrPtr(Line), "000")) { Done = 1; } else { Conflict = (CalendarConflict *) malloc(sizeof(CalendarConflict)); Conflict->conflict_event_uid = NewStrBufPlain(NULL, StrLength(Line)); Conflict->conflict_event_summary = NewStrBufPlain(NULL, StrLength(Line)); Conflict->existing_msgnum = StrBufExtractNext_long(Line, &Pos, '|'); StrBufSkip_NTokenS(Line, &Pos, '|', 1); StrBufExtract_NextToken(Conflict->conflict_event_uid, Line, &Pos, '|'); StrBufExtract_NextToken(Conflict->conflict_event_summary, Line, &Pos, '|'); Conflict->is_update = StrBufExtractNext_long(Line, &Pos, '|'); Put(Conflicts, IKEY(n), Conflict, DeleteConflict); n++; Pos = NULL; } } FreeStrBuf(&Line); syslog(LOG_DEBUG, "...done.\n"); return Conflicts; } void tmplput_ConflictEventMsgID(StrBuf *Target, WCTemplputParams *TP) { CalendarConflict *C = (CalendarConflict *) CTX(CTX_ICALCONFLICT); char buf[sizeof(long) * 16]; snprintf(buf, sizeof(buf), "%ld", C->existing_msgnum); StrBufAppendTemplateStr(Target, TP, buf, 0); } void tmplput_ConflictEUID(StrBuf *Target, WCTemplputParams *TP) { CalendarConflict *C = (CalendarConflict *) CTX(CTX_ICALCONFLICT); StrBufAppendTemplate(Target, TP, C->conflict_event_uid, 0); } void tmplput_ConflictSummary(StrBuf *Target, WCTemplputParams *TP) { CalendarConflict *C = (CalendarConflict *) CTX(CTX_ICALCONFLICT); StrBufAppendTemplate(Target, TP, C->conflict_event_summary, 0); } int cond_ConflictIsUpdate(StrBuf *Target, WCTemplputParams *TP) { CalendarConflict *C = (CalendarConflict *) CTX(CTX_ICALCONFLICT); return C->is_update; } typedef struct CalAttendee { StrBuf *AttendeeStr; icalparameter_partstat partstat; } CalAttendee; void DeleteAtt(void *vAtt) { CalAttendee *att = (CalAttendee*) vAtt; FreeStrBuf(&att->AttendeeStr); free(vAtt); } HashList *iterate_get_ical_attendees(StrBuf *Target, WCTemplputParams *TP) { icalcomponent *cal = (icalcomponent *) CTX(CTX_ICAL); icalparameter *partstat_param; icalproperty *p; CalAttendee *Att; HashList *Attendees = NULL; const char *ch; int n = 0; /* If the component has attendees, iterate through them. */ for (p = icalcomponent_get_first_property(cal, ICAL_ATTENDEE_PROPERTY); (p != NULL); p = icalcomponent_get_next_property(cal, ICAL_ATTENDEE_PROPERTY)) { ch = icalproperty_get_attendee(p); if ((ch != NULL) && !strncasecmp(ch, "MAILTO:", 7)) { Att = (CalAttendee*) malloc(sizeof(CalAttendee)); /** screen name or email address */ Att->AttendeeStr = NewStrBufPlain(ch + 7, -1); StrBufTrim(Att->AttendeeStr); /** participant status */ partstat_param = icalproperty_get_first_parameter( p, ICAL_PARTSTAT_PARAMETER ); if (partstat_param == NULL) { Att->partstat = ICAL_PARTSTAT_X; } else { Att->partstat = icalparameter_get_partstat(partstat_param); } if (Attendees == NULL) Attendees = NewHash(1, Flathash); Put(Attendees, IKEY(n), Att, DeleteAtt); n++; } } return Attendees; } void tmplput_ICalAttendee(StrBuf *Target, WCTemplputParams *TP) { CalAttendee *Att = (CalAttendee*) CTX(CTX_ICALATTENDEE); StrBufAppendTemplate(Target, TP, Att->AttendeeStr, 0); } int cond_ICalAttendeeState(StrBuf *Target, WCTemplputParams *TP) { CalAttendee *Att = (CalAttendee*) CTX(CTX_ICALATTENDEE); icalparameter_partstat which_partstat; which_partstat = GetTemplateTokenNumber(Target, TP, 2, ICAL_PARTSTAT_X); return Att->partstat == which_partstat; } /* If the component has subcomponents, recurse through them. * / for (c = icalcomponent_get_first_component(cal, ICAL_ANY_COMPONENT); (c != 0); c = icalcomponent_get_next_component(cal, ICAL_ANY_COMPONENT)) { / * Recursively process subcomponent * / cal_process_object(Target, c, recursion_level+1, msgnum, cal_partnum); } */ void InitModule_ICAL_SUBST (void) { RegisterCTX(CTX_ICAL); /* RegisterMimeRenderer(HKEY("text/calendar"), render_MIME_ICS_TPL, 1, 501); RegisterMimeRenderer(HKEY("application/ics"), render_MIME_ICS_TPL, 1, 500); */ CreateIcalComponendKindLookup (); RegisterConditional("COND:ICAL:PROPERTY", 1, cond_ICalHaveItem, CTX_ICAL); RegisterConditional("COND:ICAL:IS:A", 1, cond_ICalIsA, CTX_ICAL); RegisterIterator("ICAL:CONFLICT", 0, NULL, iterate_FindConflict, NULL, DeleteHash, CTX_MIME_ATACH, CTX_ICALCONFLICT, IT_NOFLAG); RegisterNamespace("ICAL:CONFLICT:MSGID", 0, 1, tmplput_ConflictEventMsgID, NULL, CTX_ICALCONFLICT); RegisterNamespace("ICAL:CONFLICT:EUID", 0, 1, tmplput_ConflictEUID, NULL, CTX_ICALCONFLICT); RegisterNamespace("ICAL:CONFLICT:SUMMARY", 0, 1, tmplput_ConflictSummary, NULL, CTX_ICALCONFLICT); RegisterConditional("ICAL:CONFLICT:IS:UPDATE", 0, cond_ConflictIsUpdate, CTX_ICALCONFLICT); RegisterCTX(CTX_ICALATTENDEE); RegisterIterator("ICAL:ATTENDEES", 0, NULL, iterate_get_ical_attendees, NULL, DeleteHash, CTX_ICALATTENDEE, CTX_ICAL, IT_NOFLAG); RegisterNamespace("ICAL:ATTENDEE", 1, 2, tmplput_ICalAttendee, NULL, CTX_ICALATTENDEE); RegisterConditional("COND:ICAL:ATTENDEE", 1, cond_ICalAttendeeState, CTX_ICALATTENDEE); RegisterCTX(CTX_ICALPROPERTY); RegisterNamespace("ICAL:ITEM", 1, 2, tmplput_ICalItem, NULL, CTX_ICAL); RegisterNamespace("ICAL:PROPERTY:STR", 0, 1, tmplput_CtxICalProperty, NULL, CTX_ICALPROPERTY); RegisterNamespace("ICAL:PROPERTY:DATE", 0, 1, tmplput_CtxICalPropertyDate, NULL, CTX_ICALPROPERTY); RegisterCTX(CTX_ICALMETHOD); RegisterConditional("COND:ICAL:METHOD", 1, cond_ICalIsMethod, CTX_ICALMETHOD); RegisterCTX(CTX_ICALTIME); RegisterConditional("COND:ICAL:DT:PROPERTY", 1, cond_ICalHaveTimeItem, CTX_ICAL); RegisterConditional("COND:ICAL:DT:ISDATE", 0, cond_ICalTimeIsDate, CTX_ICALTIME); RegisterNamespace("ICAL:DT:DATE", 0, 1, tmplput_ICalTime_Date, NULL, CTX_ICALTIME); RegisterNamespace("ICAL:DT:DATETIME", 0, 1, tmplput_ICalTime_Time, NULL, CTX_ICALTIME); } void ServerShutdownModule_ICAL (void) { DeleteHash(&IcalComponentMap); } webcit-8.24-dfsg.orig/notes.c0000644000175000017500000003145012271477123015677 0ustar michaelmichael #include "webcit.h" #include "dav.h" #include "webserver.h" CtxType CTX_VNOTE = CTX_NONE; int pastel_palette[9][3] = { { 0x80, 0x80, 0x80 }, { 0xff, 0x80, 0x80 }, { 0x80, 0x80, 0xff }, { 0xff, 0xff, 0x80 }, { 0x80, 0xff, 0x80 }, { 0xff, 0x80, 0xff }, { 0x80, 0xff, 0xff }, { 0xff, 0x80, 0x80 }, { 0x80, 0x80, 0x80 } }; /* * Fetch a message from the server and extract a vNote from it */ struct vnote *vnote_new_from_msg(long msgnum,int unread) { StrBuf *Buf; StrBuf *Data = NULL; const char *bptr; int Done = 0; char uid_from_headers[256]; char mime_partnum[256]; char mime_filename[256]; char mime_content_type[256]; char mime_disposition[256]; char relevant_partnum[256]; int phase = 0; /* 0 = citadel headers, 1 = mime headers, 2 = body */ char msg4_content_type[256] = ""; char msg4_content_encoding[256] = ""; int msg4_content_length = 0; struct vnote *vnote_from_body = NULL; int vnote_inline = 0; /* 1 = MSG4 gave us a text/x-vnote top level */ relevant_partnum[0] = '\0'; serv_printf("MSG4 %ld", msgnum); /* we need the mime headers */ Buf = NewStrBuf(); StrBuf_ServGetln(Buf); if (GetServerStatus(Buf, NULL) != 1) { FreeStrBuf (&Buf); return NULL; } while ((StrBuf_ServGetln(Buf)>=0) && !Done) { if ( (StrLength(Buf)==3) && !strcmp(ChrPtr(Buf), "000")) { Done = 1; break; } bptr = ChrPtr(Buf); switch (phase) { case 0: if (!strncasecmp(bptr, "exti=", 5)) { safestrncpy(uid_from_headers, &(ChrPtr(Buf)[5]), sizeof uid_from_headers); } else if (!strncasecmp(bptr, "part=", 5)) { extract_token(mime_filename, &bptr[5], 1, '|', sizeof mime_filename); extract_token(mime_partnum, &bptr[5], 2, '|', sizeof mime_partnum); extract_token(mime_disposition, &bptr[5], 3, '|', sizeof mime_disposition); extract_token(mime_content_type, &bptr[5], 4, '|', sizeof mime_content_type); if (!strcasecmp(mime_content_type, "text/vnote")) { strcpy(relevant_partnum, mime_partnum); } } else if ((phase == 0) && (!strncasecmp(bptr, "text", 4))) { phase = 1; } break; case 1: if (!IsEmptyStr(bptr)) { if (!strncasecmp(bptr, "Content-type: ", 14)) { safestrncpy(msg4_content_type, &bptr[14], sizeof msg4_content_type); striplt(msg4_content_type); } else if (!strncasecmp(bptr, "Content-transfer-encoding: ", 27)) { safestrncpy(msg4_content_encoding, &bptr[27], sizeof msg4_content_encoding); striplt(msg4_content_type); } else if ((!strncasecmp(bptr, "Content-length: ", 16))) { msg4_content_length = atoi(&bptr[16]); } break; } else { phase++; if ((msg4_content_length > 0) && ( !strcasecmp(msg4_content_encoding, "7bit")) && (!strcasecmp(msg4_content_type, "text/vnote")) ) { vnote_inline = 1; } } case 2: if (vnote_inline) { Data = NewStrBufPlain(NULL, msg4_content_length * 2); if (msg4_content_length > 0) { StrBuf_ServGetBLOBBuffered(Data, msg4_content_length); phase ++; } else { StrBufAppendBuf(Data, Buf, 0); StrBufAppendBufPlain(Data, "\r\n", 1, 0); } } case 3: if (vnote_inline) { StrBufAppendBuf(Data, Buf, 0); } } } FreeStrBuf(&Buf); /* If MSG4 didn't give us the part we wanted, but we know that we can find it * as one of the other MIME parts, attempt to load it now. */ if ((!vnote_inline) && (!IsEmptyStr(relevant_partnum))) { Data = load_mimepart(msgnum, relevant_partnum); } if (StrLength(Data) > 0) { if (IsEmptyStr(uid_from_headers)) { /* Convert an old-style note to a vNote */ vnote_from_body = vnote_new(); vnote_from_body->uid = strdup(uid_from_headers); vnote_from_body->color_red = pastel_palette[3][0]; vnote_from_body->color_green = pastel_palette[3][1]; vnote_from_body->color_blue = pastel_palette[3][2]; vnote_from_body->body = malloc(StrLength(Data) + 1); vnote_from_body->body[0] = 0; memcpy(vnote_from_body->body, ChrPtr(Data), StrLength(Data) + 1); FreeStrBuf(&Data); return vnote_from_body; } else { char *Buf = SmashStrBuf(&Data); struct vnote *v = vnote_new_from_str(Buf); free(Buf); return(v); } } return NULL; } /* * Serialize a vnote and write it to the server */ void write_vnote_to_server(struct vnote *v) { char buf[1024]; char *pch; char boundary[256]; static int seq = 0; snprintf(boundary, sizeof boundary, "Citadel--Multipart--%s--%04x--%04x", ChrPtr(WC->serv_info->serv_fqdn), getpid(), ++seq ); serv_puts("ENT0 1|||4"); serv_getln(buf, sizeof buf); if (buf[0] == '4') { /* Remember, serv_printf() appends an extra newline */ serv_printf("Content-type: multipart/alternative; " "boundary=\"%s\"\n", boundary); serv_printf("This is a multipart message in MIME format.\n"); serv_printf("--%s", boundary); serv_puts("Content-type: text/plain; charset=utf-8"); serv_puts("Content-Transfer-Encoding: 7bit"); serv_puts(""); serv_puts(v->body); serv_puts(""); serv_printf("--%s", boundary); serv_puts("Content-type: text/vnote"); serv_puts("Content-Transfer-Encoding: 7bit"); serv_puts(""); pch = vnote_serialize(v); serv_puts(pch); free(pch); serv_printf("--%s--", boundary); serv_puts("000"); } } /* * Background ajax call to receive updates from the browser when a note is moved, resized, or updated. */ void ajax_update_note(void) { char buf[1024]; int msgnum; struct vnote *v = NULL; if (!havebstr("note_uid")) { begin_ajax_response(); wc_printf("Received ajax_update_note() request without a note UID."); end_ajax_response(); return; } serv_printf("EUID %s", bstr("note_uid")); serv_getln(buf, sizeof buf); if (buf[0] != '2') { begin_ajax_response(); wc_printf("Cannot find message containing vNote with the requested uid!"); end_ajax_response(); return; } msgnum = atol(&buf[4]); /* Was this request a delete operation? If so, nuke it... */ if (havebstr("deletenote")) { if (!strcasecmp(bstr("deletenote"), "yes")) { serv_printf("DELE %d", msgnum); serv_getln(buf, sizeof buf); begin_ajax_response(); wc_printf("%s", buf); end_ajax_response(); return; } } /* If we get to this point it's an update, not a delete */ v = vnote_new_from_msg(msgnum, 0); if (!v) { begin_ajax_response(); wc_printf("Cannot locate a vNote within message %d\n", msgnum); end_ajax_response(); return; } /* Make any requested changes */ if (havebstr("top")) { v->pos_top = atoi(bstr("top")); } if (havebstr("left")) { v->pos_left = atoi(bstr("left")); } if (havebstr("height")) { v->pos_height = atoi(bstr("height")); } if (havebstr("width")) { v->pos_width = atoi(bstr("width")); } if (havebstr("red")) { v->color_red = atoi(bstr("red")); } if (havebstr("green")) { v->color_green = atoi(bstr("green")); } if (havebstr("blue")) { v->color_blue = atoi(bstr("blue")); } if (havebstr("value")) { /* I would have preferred 'body' but InPlaceEditor hardcodes 'value' */ if (v->body) free(v->body); v->body = strdup(bstr("value")); } /* Serialize it and save it to the message base. Server will delete the old one. */ write_vnote_to_server(v); begin_ajax_response(); if (v->body) { escputs(v->body); } end_ajax_response(); vnote_free(v); } /* * display sticky notes * * msgnum = Message number on the local server of the note to be displayed */ /*TODO: wrong hook */ int notes_LoadMsgFromServer(SharedMessageStatus *Stat, void **ViewSpecific, message_summary* Msg, int is_new, int i) { struct vnote *v; WCTemplputParams TP; memset(&TP, 0, sizeof(WCTemplputParams)); TP.Filter.ContextType = CTX_VNOTE; v = vnote_new_from_msg(Msg->msgnum, is_new); if (v) { TP.Context = v; DoTemplate(HKEY("vnoteitem"), WC->WBuf, &TP); /* uncomment these lines to see ugly debugging info StrBufAppendPrintf(WC->trailing_javascript, "document.write('L: ' + $('note-%s').style.left + '; ');", v->uid); StrBufAppendPrintf(WC->trailing_javascript, "document.write('T: ' + $('note-%s').style.top + '; ');", v->uid); StrBufAppendPrintf(WC->trailing_javascript, "document.write('W: ' + $('note-%s').style.width + '; ');", v->uid); StrBufAppendPrintf(WC->trailing_javascript, "document.write('H: ' + $('note-%s').style.height + '
    ');", v->uid); */ vnote_free(v); } return 0; } /* * Create a new note */ void add_new_note(void) { struct vnote *v; v = vnote_new(); if (v) { v->uid = malloc(128); generate_uuid(v->uid); v->color_red = pastel_palette[3][0]; v->color_green = pastel_palette[3][1]; v->color_blue = pastel_palette[3][2]; v->body = strdup(_("Click on any note to edit it.")); write_vnote_to_server(v); vnote_free(v); } readloop(readfwd, eUseDefault); } void tmpl_vcard_put_posleft(StrBuf *Target, WCTemplputParams *TP) { struct vnote *v = (struct vnote *) CTX(CTX_VNOTE); StrBufAppendPrintf(Target, "%d", v->pos_left); } void tmpl_vcard_put_postop(StrBuf *Target, WCTemplputParams *TP) { struct vnote *v = (struct vnote *) CTX(CTX_VNOTE); StrBufAppendPrintf(Target, "%d", v->pos_top); } void tmpl_vcard_put_poswidth(StrBuf *Target, WCTemplputParams *TP) { struct vnote *v = (struct vnote *) CTX(CTX_VNOTE); StrBufAppendPrintf(Target, "%d", v->pos_width); } void tmpl_vcard_put_posheight(StrBuf *Target, WCTemplputParams *TP) { struct vnote *v = (struct vnote *) CTX(CTX_VNOTE); StrBufAppendPrintf(Target, "%d", v->pos_height); } void tmpl_vcard_put_posheight2(StrBuf *Target, WCTemplputParams *TP) { struct vnote *v = (struct vnote *) CTX(CTX_VNOTE); StrBufAppendPrintf(Target, "%d", (v->pos_height / 16) - 5); } void tmpl_vcard_put_width2(StrBuf *Target, WCTemplputParams *TP) { struct vnote *v = (struct vnote *) CTX(CTX_VNOTE); StrBufAppendPrintf(Target, "%d", (v->pos_width / 9) - 1); } void tmpl_vcard_put_color(StrBuf *Target, WCTemplputParams *TP) { struct vnote *v = (struct vnote *) CTX(CTX_VNOTE); StrBufAppendPrintf(Target, "%02X%02X%02X", v->color_red, v->color_green, v->color_blue); } void tmpl_vcard_put_bgcolor(StrBuf *Target, WCTemplputParams *TP) { struct vnote *v = (struct vnote *) CTX(CTX_VNOTE); StrBufAppendPrintf(Target, "%02X%02X%02X", v->color_red/2, v->color_green/2, v->color_blue/2); } void tmpl_vcard_put_message(StrBuf *Target, WCTemplputParams *TP) { struct vnote *v = (struct vnote *) CTX(CTX_VNOTE); StrEscAppend(Target, NULL, v->body, 0, 0); /*TODO?*/ } void tmpl_vcard_put_uid(StrBuf *Target, WCTemplputParams *TP) { struct vnote *v = (struct vnote *) CTX(CTX_VNOTE); StrBufAppendBufPlain(Target, v->uid, -1, 0); } int notes_GetParamsGetServerCall(SharedMessageStatus *Stat, void **ViewSpecific, long oper, char *cmd, long len, char *filter, long flen) { strcpy(cmd, "MSGS ALL"); Stat->maxmsgs = 32767; wc_printf("
    \n"); return 200; } int notes_Cleanup(void **ViewSpecific) { wDumpContent(1); return 0; } void render_MIME_VNote(StrBuf *Target, WCTemplputParams *TP, StrBuf *FoundCharset) { wc_mime_attachment *Mime = CTX(CTX_MIME_ATACH); if (StrLength(Mime->Data) == 0) MimeLoadData(Mime); if (StrLength(Mime->Data) > 0) { struct vnote *v; StrBuf *Buf; char *vcard; Buf = NewStrBuf(); vcard = SmashStrBuf(&Mime->Data); v = vnote_new_from_str(vcard); free (vcard); if (v) { WCTemplputParams TP; memset(&TP, 0, sizeof(WCTemplputParams)); TP.Filter.ContextType = CTX_VNOTE; TP.Context = v; DoTemplate(HKEY("mail_vnoteitem"), Buf, &TP); vnote_free(v); Mime->Data = Buf; } else { if (Mime->Data == NULL) Mime->Data = NewStrBuf(); else FlushStrBuf(Mime->Data); } } } void InitModule_NOTES (void) { RegisterCTX(CTX_VNOTE); RegisterReadLoopHandlerset( VIEW_NOTES, notes_GetParamsGetServerCall, NULL, NULL, NULL, notes_LoadMsgFromServer, NULL, notes_Cleanup); WebcitAddUrlHandler(HKEY("add_new_note"), "", 0, add_new_note, 0); WebcitAddUrlHandler(HKEY("ajax_update_note"), "", 0, ajax_update_note, 0); RegisterNamespace("VNOTE:POS:LEFT", 0, 0, tmpl_vcard_put_posleft, NULL, CTX_VNOTE); RegisterNamespace("VNOTE:POS:TOP", 0, 0, tmpl_vcard_put_postop, NULL, CTX_VNOTE); RegisterNamespace("VNOTE:POS:WIDTH", 0, 0, tmpl_vcard_put_poswidth, NULL, CTX_VNOTE); RegisterNamespace("VNOTE:POS:HEIGHT", 0, 0, tmpl_vcard_put_posheight, NULL, CTX_VNOTE); RegisterNamespace("VNOTE:POS:HEIGHT2", 0, 0, tmpl_vcard_put_posheight2, NULL, CTX_VNOTE); RegisterNamespace("VNOTE:POS:WIDTH2", 0, 0, tmpl_vcard_put_width2, NULL, CTX_VNOTE); RegisterNamespace("VNOTE:COLOR", 0, 0, tmpl_vcard_put_color, NULL, CTX_VNOTE); RegisterNamespace("VNOTE:BGCOLOR", 0, 0,tmpl_vcard_put_bgcolor, NULL, CTX_VNOTE); RegisterNamespace("VNOTE:MSG", 0, 1, tmpl_vcard_put_message, NULL, CTX_VNOTE); RegisterNamespace("VNOTE:UID", 0, 0, tmpl_vcard_put_uid, NULL, CTX_VNOTE); RegisterMimeRenderer(HKEY("text/vnote"), render_MIME_VNote, 1, 300); } webcit-8.24-dfsg.orig/roomviews.c0000644000175000017500000001633412271477123016605 0ustar michaelmichael/* * Lots of different room-related operations. */ #include "webcit.h" #include "webserver.h" char *viewdefs[VIEW_MAX]; /* * This table defines which views may be selected as the * default view for a room at the time of its creation. */ ROOM_VIEWS allowed_default_views[VIEW_MAX] = { 1, /* VIEW_BBS Bulletin board */ 1, /* VIEW_MAILBOX Mailbox summary */ 1, /* VIEW_ADDRESSBOOK Address book */ 1, /* VIEW_CALENDAR Calendar */ 1, /* VIEW_TASKS Tasks */ 1, /* VIEW_NOTES Notes */ 1, /* VIEW_WIKI Wiki */ 0, /* VIEW_CALBRIEF Brief Calendar */ 0, /* VIEW_JOURNAL Journal */ 0, /* VIEW_DRAFTS Drafts */ 1 /* VIEW_BLOG Blog */ }; /* * Given the default view for a room, this table defines * which alternate views may be selected by the user. */ ROOM_VIEWS exchangeable_views[VIEW_MAX][VIEW_MAX] = { { 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1 }, /* bulletin board */ { 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1 }, /* mailbox summary */ { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 }, /* address book */ { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 }, /* calendar */ { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 }, /* tasks */ { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, /* notes */ { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 }, /* wiki */ { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 }, /* brief calendar */ { 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0 }, /* journal */ { 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1 }, /* drafts */ { 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1 } /* blog */ }; /* * Initialize the viewdefs with localized strings */ void initialize_viewdefs(void) { viewdefs[VIEW_BBS] = _("Bulletin Board"); viewdefs[VIEW_MAILBOX] = _("Mail Folder"); viewdefs[VIEW_ADDRESSBOOK] = _("Address Book"); viewdefs[VIEW_CALENDAR] = _("Calendar"); viewdefs[VIEW_TASKS] = _("Task List"); viewdefs[VIEW_NOTES] = _("Notes List"); viewdefs[VIEW_WIKI] = _("Wiki"); viewdefs[VIEW_CALBRIEF] = _("Calendar List"); viewdefs[VIEW_JOURNAL] = _("Journal"); viewdefs[VIEW_DRAFTS] = _("Drafts"); viewdefs[VIEW_BLOG] = _("Blog"); } void tmplput_ROOM_COLLECTIONTYPE(StrBuf *Target, WCTemplputParams *TP) { folder *Folder = (folder *)CTX(CTX_ROOMS); switch(Folder->view) { case VIEW_CALENDAR: StrBufAppendBufPlain(Target, HKEY("vevent"), 0); break; case VIEW_TASKS: StrBufAppendBufPlain(Target, HKEY("vtodo"), 0); break; case VIEW_ADDRESSBOOK: StrBufAppendBufPlain(Target, HKEY("vcard"), 0); break; case VIEW_NOTES: StrBufAppendBufPlain(Target, HKEY("vnotes"), 0); break; case VIEW_JOURNAL: StrBufAppendBufPlain(Target, HKEY("vjournal"), 0); break; case VIEW_WIKI: StrBufAppendBufPlain(Target, HKEY("wiki"), 0); break; } } int ConditionalRoomHasGroupdavContent(StrBuf *Target, WCTemplputParams *TP) { folder *Folder = (folder *)CTX(CTX_ROOMS); syslog(LOG_DEBUG, "-> %s: %d\n", ChrPtr(Folder->name), Folder->view); return ((Folder->view == VIEW_CALENDAR) || (Folder->view == VIEW_TASKS) || (Folder->view == VIEW_ADDRESSBOOK) || (Folder->view == VIEW_NOTES) || (Folder->view == VIEW_JOURNAL) ); } int ConditionalIsRoomtype(StrBuf *Target, WCTemplputParams *TP) { wcsession *WCC = WC; if ((WCC == NULL) || (TP->Tokens->nParameters < 3)) { return ((WCC->CurRoom.view < VIEW_BBS) || (WCC->CurRoom.view > VIEW_MAX)); } return WCC->CurRoom.view == GetTemplateTokenNumber(Target, TP, 2, VIEW_BBS); } void tmplput_CurrentRoomViewString(StrBuf *Target, WCTemplputParams *TP) { wcsession *WCC = WC; StrBuf *Buf; if ((WCC == NULL) || (WCC->CurRoom.defview >= VIEW_MAX) || (WCC->CurRoom.defview < VIEW_BBS)) { LogTemplateError(Target, "Token", ERR_PARM2, TP, "Roomview [%ld] not valid\n", (WCC != NULL)? WCC->CurRoom.defview : -1); return; } Buf = NewStrBufPlain(_(viewdefs[WCC->CurRoom.defview]), -1); StrBufAppendTemplate(Target, TP, Buf, 0); FreeStrBuf(&Buf); } void tmplput_RoomViewString(StrBuf *Target, WCTemplputParams *TP) { long CheckThis; StrBuf *Buf; CheckThis = GetTemplateTokenNumber(Target, TP, 0, 0); if ((CheckThis >= VIEW_MAX) || (CheckThis < VIEW_BBS)) { LogTemplateError(Target, "Token", ERR_PARM2, TP, "Roomview [%ld] not valid\n", CheckThis); return; } Buf = NewStrBufPlain(_(viewdefs[CheckThis]), -1); StrBufAppendTemplate(Target, TP, Buf, 0); FreeStrBuf(&Buf); } int ConditionalIsAllowedDefaultView(StrBuf *Target, WCTemplputParams *TP) { wcsession *WCC = WC; long CheckThis; if (WCC == NULL) return 0; CheckThis = GetTemplateTokenNumber(Target, TP, 2, 0); if ((CheckThis >= VIEW_MAX) || (CheckThis < VIEW_BBS)) { LogTemplateError(Target, "Conditional", ERR_PARM2, TP, "Roomview [%ld] not valid\n", CheckThis); return 0; } return allowed_default_views[CheckThis] != 0; } int ConditionalThisRoomDefView(StrBuf *Target, WCTemplputParams *TP) { wcsession *WCC = WC; long CheckThis; if (WCC == NULL) return 0; CheckThis = GetTemplateTokenNumber(Target, TP, 2, 0); return CheckThis == WCC->CurRoom.defview; } int ConditionalThisRoomCurrView(StrBuf *Target, WCTemplputParams *TP) { wcsession *WCC = WC; long CheckThis; if (WCC == NULL) return 0; CheckThis = GetTemplateTokenNumber(Target, TP, 2, 0); return CheckThis == WCC->CurRoom.view; } int ConditionalThisRoomHaveView(StrBuf *Target, WCTemplputParams *TP) { wcsession *WCC = WC; long CheckThis; if (WCC == NULL) return 0; CheckThis = GetTemplateTokenNumber(Target, TP, 2, 0); if ((CheckThis >= VIEW_MAX) || (CheckThis < VIEW_BBS)) { LogTemplateError(Target, "Conditional", ERR_PARM2, TP, "Roomview [%ld] not valid\n", CheckThis); return 0; } return exchangeable_views [WCC->CurRoom.defview][CheckThis] ; } void tmplput_ROOM_VIEW(StrBuf *Target, WCTemplputParams *TP) { folder *Folder = (folder *)CTX(CTX_ROOMS); StrBufAppendPrintf(Target, "%d", Folder->view); } void tmplput_ROOM_DEFVIEW(StrBuf *Target, WCTemplputParams *TP) { folder *Folder = (folder *)CTX(CTX_ROOMS); StrBufAppendPrintf(Target, "%d", Folder->defview); } void tmplput_CurrentRoomDefView(StrBuf *Target, WCTemplputParams *TP) { wcsession *WCC = WC; StrBufAppendPrintf(Target, "%d", WCC->CurRoom.defview); } void InitModule_ROOMVIEWS (void) { /* we duplicate this, just to be shure its already done. */ RegisterCTX(CTX_ROOMS); RegisterCTX(CTX_FLOORS); initialize_viewdefs(); RegisterNamespace("THISROOM:VIEW_STRING", 0, 1, tmplput_CurrentRoomViewString, NULL, CTX_NONE); RegisterNamespace("ROOM:VIEW_STRING", 1, 2, tmplput_RoomViewString, NULL, CTX_NONE); RegisterConditional("COND:ALLOWED_DEFAULT_VIEW", 0, ConditionalIsAllowedDefaultView, CTX_NONE); RegisterConditional("COND:THISROOM:DEFAULT_VIEW", 0, ConditionalThisRoomDefView, CTX_NONE); RegisterNamespace("THISROOM:DEFAULT_VIEW", 0, 0, tmplput_CurrentRoomDefView, NULL, CTX_NONE); RegisterNamespace("ROOM:INFO:DEFVIEW", 0, 1, tmplput_ROOM_DEFVIEW, NULL, CTX_ROOMS); RegisterConditional("COND:ROOM:TYPE_IS", 0, ConditionalIsRoomtype, CTX_NONE); RegisterConditional("COND:THISROOM:HAVE_VIEW", 0, ConditionalThisRoomHaveView, CTX_NONE); RegisterConditional("COND:ROOM:DAV_CONTENT", 0, ConditionalRoomHasGroupdavContent, CTX_ROOMS); RegisterConditional("COND:THISROOM:CURR_VIEW", 0, ConditionalThisRoomCurrView, CTX_NONE); RegisterNamespace("ROOM:INFO:VIEW", 0, 1, tmplput_ROOM_VIEW, NULL, CTX_ROOMS); RegisterNamespace("ROOM:INFO:COLLECTIONTYPE", 0, 1, tmplput_ROOM_COLLECTIONTYPE, NULL, CTX_ROOMS); } webcit-8.24-dfsg.orig/smtpqueue.c0000644000175000017500000003020412271477123016573 0ustar michaelmichael/* * Display the outbound SMTP queue */ #include "webcit.h" CtxType CTX_MAILQITEM = CTX_NONE; CtxType CTX_MAILQ_RCPT = CTX_NONE; HashList *QItemHandlers = NULL; typedef struct _mailq_entry { StrBuf *Recipient; StrBuf *StatusMessage; int Status; /**< * 0 = No delivery has yet been attempted * 2 = Delivery was successful * 3 = Transient error like connection problem. Try next remote if available. * 4 = A transient error was experienced ... try again later * 5 = Delivery to this address failed permanently. The error message * should be placed in the fourth field so that a bounce message may * be generated. */ int n; int Active; }MailQEntry; typedef struct queueitem { long MessageID; long QueMsgID; long Submitted; int FailNow; HashList *MailQEntries; /* copy of the currently parsed item in the MailQEntries list; * if null add a new one. */ MailQEntry *Current; time_t ReattemptWhen; time_t Retry; long ActiveDeliveries; StrBuf *EnvelopeFrom; StrBuf *BounceTo; StrBuf *SenderRoom; ParsedURL *URL; ParsedURL *FallBackHost; } OneQueItem; typedef void (*QItemHandler)(OneQueItem *Item, StrBuf *Line, const char **Pos); typedef struct __QItemHandlerStruct { QItemHandler H; } QItemHandlerStruct; void RegisterQItemHandler(const char *Key, long Len, QItemHandler H) { QItemHandlerStruct *HS = (QItemHandlerStruct*)malloc(sizeof(QItemHandlerStruct)); HS->H = H; Put(QItemHandlers, Key, Len, HS, NULL); } void FreeMailQEntry(void *qv) { MailQEntry *Q = qv; FreeStrBuf(&Q->Recipient); FreeStrBuf(&Q->StatusMessage); free(Q); } void FreeQueItem(OneQueItem **Item) { DeleteHash(&(*Item)->MailQEntries); FreeStrBuf(&(*Item)->EnvelopeFrom); FreeStrBuf(&(*Item)->BounceTo); FreeStrBuf(&(*Item)->SenderRoom); FreeURL(&(*Item)->URL); free(*Item); Item = NULL; } void HFreeQueItem(void *Item) { FreeQueItem((OneQueItem**)&Item); } OneQueItem *DeserializeQueueItem(StrBuf *RawQItem, long QueMsgID) { OneQueItem *Item; const char *pLine = NULL; StrBuf *Line; StrBuf *Token; Item = (OneQueItem*)malloc(sizeof(OneQueItem)); memset(Item, 0, sizeof(OneQueItem)); Item->Retry = 0; Item->MessageID = -1; Item->QueMsgID = QueMsgID; Token = NewStrBuf(); Line = NewStrBufPlain(NULL, 128); while (pLine != StrBufNOTNULL) { const char *pItemPart = NULL; void *vHandler; StrBufExtract_NextToken(Line, RawQItem, &pLine, '\n'); if (StrLength(Line) == 0) continue; StrBufExtract_NextToken(Token, Line, &pItemPart, '|'); if (GetHash(QItemHandlers, SKEY(Token), &vHandler)) { QItemHandlerStruct *HS; HS = (QItemHandlerStruct*) vHandler; HS->H(Item, Line, &pItemPart); } } FreeStrBuf(&Line); FreeStrBuf(&Token); /* Put(ActiveQItems, LKEY(Item->MessageID), Item, HFreeQueItem); */ return Item; } void tmplput_MailQID(StrBuf *Target, WCTemplputParams *TP) { OneQueItem *Item = (OneQueItem*) CTX(CTX_MAILQITEM); StrBufAppendPrintf(Target, "%ld", Item->QueMsgID);; } void tmplput_MailQPayloadID(StrBuf *Target, WCTemplputParams *TP) { OneQueItem *Item = (OneQueItem*) CTX(CTX_MAILQITEM); StrBufAppendPrintf(Target, "%ld", Item->MessageID); } void tmplput_MailQBounceTo(StrBuf *Target, WCTemplputParams *TP) { OneQueItem *Item = (OneQueItem*) CTX(CTX_MAILQITEM); StrBufAppendTemplate(Target, TP, Item->BounceTo, 0); } void tmplput_MailQAttempted(StrBuf *Target, WCTemplputParams *TP) { char datebuf[64]; OneQueItem *Item = (OneQueItem*) CTX(CTX_MAILQITEM); webcit_fmt_date(datebuf, 64, Item->ReattemptWhen, DATEFMT_BRIEF); StrBufAppendBufPlain(Target, datebuf, -1, 0); } void tmplput_MailQSubmitted(StrBuf *Target, WCTemplputParams *TP) { char datebuf[64]; OneQueItem *Item = (OneQueItem*) CTX(CTX_MAILQITEM); webcit_fmt_date(datebuf, 64, Item->Submitted, DATEFMT_BRIEF); StrBufAppendBufPlain(Target, datebuf, -1, 0); } void tmplput_MailQEnvelopeFrom(StrBuf *Target, WCTemplputParams *TP) { OneQueItem *Item = (OneQueItem*) CTX(CTX_MAILQITEM); StrBufAppendTemplate(Target, TP, Item->EnvelopeFrom, 0); } void tmplput_MailQSourceRoom(StrBuf *Target, WCTemplputParams *TP) { OneQueItem *Item = (OneQueItem*) CTX(CTX_MAILQITEM); StrBufAppendTemplate(Target, TP, Item->SenderRoom, 0); } int Conditional_MailQ_HaveSourceRoom(StrBuf *Target, WCTemplputParams *TP) { OneQueItem *Item = (OneQueItem*) CTX(CTX_MAILQITEM); return StrLength(Item->SenderRoom) > 0; } void tmplput_MailQRetry(StrBuf *Target, WCTemplputParams *TP) { char datebuf[64]; OneQueItem *Item = (OneQueItem*) CTX(CTX_MAILQITEM); if (Item->Retry == 0) { StrBufAppendBufPlain(Target, _("First Attempt pending"), -1, 0); } else { webcit_fmt_date(datebuf, sizeof(datebuf), Item->Retry, DATEFMT_BRIEF); StrBufAppendBufPlain(Target, datebuf, -1, 0); } } void tmplput_MailQRCPT(StrBuf *Target, WCTemplputParams *TP) { MailQEntry *Entry = (MailQEntry*) CTX(CTX_MAILQ_RCPT); StrBufAppendTemplate(Target, TP, Entry->Recipient, 0); } void tmplput_MailQRCPTStatus(StrBuf *Target, WCTemplputParams *TP) { MailQEntry *Entry = (MailQEntry*) CTX(CTX_MAILQ_RCPT); StrBufAppendPrintf(Target, "%ld", Entry->Status); } void tmplput_MailQStatusMsg(StrBuf *Target, WCTemplputParams *TP) { MailQEntry *Entry = (MailQEntry*) CTX(CTX_MAILQ_RCPT); StrBufAppendTemplate(Target, TP, Entry->StatusMessage, 0); } HashList *iterate_get_Recipients(StrBuf *Target, WCTemplputParams *TP) { OneQueItem *Item = (OneQueItem*) CTX(CTX_MAILQITEM); return Item->MailQEntries; } void NewMailQEntry(OneQueItem *Item) { Item->Current = (MailQEntry*) malloc(sizeof(MailQEntry)); memset(Item->Current, 0, sizeof(MailQEntry)); if (Item->MailQEntries == NULL) Item->MailQEntries = NewHash(1, Flathash); Item->Current->StatusMessage = NewStrBuf(); Item->Current->n = GetCount(Item->MailQEntries); Put(Item->MailQEntries, IKEY(Item->Current->n), Item->Current, FreeMailQEntry); } void QItem_Handle_MsgID(OneQueItem *Item, StrBuf *Line, const char **Pos) { Item->MessageID = StrBufExtractNext_long(Line, Pos, '|'); } void QItem_Handle_EnvelopeFrom(OneQueItem *Item, StrBuf *Line, const char **Pos) { if (Item->EnvelopeFrom == NULL) Item->EnvelopeFrom = NewStrBufPlain(NULL, StrLength(Line)); StrBufExtract_NextToken(Item->EnvelopeFrom, Line, Pos, '|'); } void QItem_Handle_BounceTo(OneQueItem *Item, StrBuf *Line, const char **Pos) { if (Item->BounceTo == NULL) Item->BounceTo = NewStrBufPlain(NULL, StrLength(Line)); StrBufExtract_NextToken(Item->BounceTo, Line, Pos, '|'); } void QItem_Handle_SenderRoom(OneQueItem *Item, StrBuf *Line, const char **Pos) { if (Item->SenderRoom == NULL) Item->SenderRoom = NewStrBufPlain(NULL, StrLength(Line)); StrBufExtract_NextToken(Item->SenderRoom, Line, Pos, '|'); } void QItem_Handle_Recipient(OneQueItem *Item, StrBuf *Line, const char **Pos) { const char *pch; if (Item->Current == NULL) NewMailQEntry(Item); if (Item->Current->Recipient == NULL) Item->Current->Recipient=NewStrBufPlain(NULL, StrLength(Line)); StrBufExtract_NextToken(Item->Current->Recipient, Line, Pos, '|'); Item->Current->Status = StrBufExtractNext_int(Line, Pos, '|'); StrBufExtract_NextToken(Item->Current->StatusMessage, Line, Pos, '|'); pch = ChrPtr(Item->Current->StatusMessage); while ((pch != NULL) && (*pch != '\0')) { pch = strchr(pch, ';'); if (pch != NULL) { pch ++; if (*pch == ' ') { StrBufPeek(Item->Current->StatusMessage, pch, -1, '\n'); } } } Item->Current = NULL; // TODO: is this always right? } void QItem_Handle_retry(OneQueItem *Item, StrBuf *Line, const char **Pos) { Item->Retry = StrBufExtractNext_int(Line, Pos, '|'); } void QItem_Handle_Submitted(OneQueItem *Item, StrBuf *Line, const char **Pos) { Item->Submitted = atol(*Pos); } void QItem_Handle_Attempted(OneQueItem *Item, StrBuf *Line, const char **Pos) { Item->ReattemptWhen = StrBufExtractNext_int(Line, Pos, '|'); } void render_QUEUE(StrBuf *Target, WCTemplputParams *TP, StrBuf *FoundCharset) { wc_mime_attachment *Mime = CTX(CTX_MIME_ATACH); WCTemplputParams SubTP; OneQueItem* Context; Context = DeserializeQueueItem(Mime->Data, Mime->msgnum); StackContext(TP, &SubTP, Context, CTX_MAILQITEM, 0, TP->Tokens); { DoTemplate(HKEY("view_mailq_message"), NULL, &SubTP); } UnStackContext(&SubTP); FreeQueItem (&Context); } void ServerShutdownModule_SMTP_QUEUE (void) { DeleteHash(&QItemHandlers); } void ServerStartModule_SMTP_QUEUE (void) { QItemHandlers = NewHash(0, NULL); } int qview_PrintPageHeader(SharedMessageStatus *Stat, void **ViewSpecific) { if (yesbstr("ListOnly")) output_headers(1, 0, 0, 0, 0, 0); else output_headers(1, 1, 1, 0, 0, 0); return 0; } int qview_GetParamsGetServerCall(SharedMessageStatus *Stat, void **ViewSpecific, long oper, char *cmd, long len, char *filter, long flen) { if (!WC->is_aide) { DoTemplate(HKEY("aide_required"), NULL, NULL); end_burst(); return 300; } else { snprintf(cmd, len, "MSGS ALL|0|1"); snprintf(filter, flen, "SUBJ|QMSG"); if (yesbstr("ListOnly")) DoTemplate(HKEY("view_mailq_table"), NULL, NULL); else DoTemplate(HKEY("view_mailq_header"), NULL, NULL); return 200; } } /* * Display task view */ int qview_LoadMsgFromServer(SharedMessageStatus *Stat, void **ViewSpecific, message_summary* Msg, int is_new, int i) { wcsession *WCC = WC; const StrBuf *Mime; /* Not (yet?) needed here? calview *c = (calview *) *ViewSpecific; */ read_message(WCC->WBuf, HKEY("view_mailq_message_bearer"), Msg->msgnum, NULL, &Mime); return 0; } int qview_RenderView_or_Tail(SharedMessageStatus *Stat, void **ViewSpecific, long oper) { wcsession *WCC = WC; WCTemplputParams SubTP; memset(&SubTP, 0, sizeof(WCTemplputParams)); if (yesbstr("ListOnly")) DoTemplate(HKEY("view_mailq_footer_listonly"),NULL, &SubTP); else { if (GetCount(WCC->summ) == 0) DoTemplate(HKEY("view_mailq_footer_empty"),NULL, &SubTP); else DoTemplate(HKEY("view_mailq_footer"),NULL, &SubTP); } return 0; } int qview_Cleanup(void **ViewSpecific) { wDumpContent(yesbstr("ListOnly")?0:1); return 0; } void InitModule_SMTP_QUEUE (void) { RegisterCTX(CTX_MAILQITEM); RegisterCTX(CTX_MAILQ_RCPT); RegisterQItemHandler(HKEY("msgid"), QItem_Handle_MsgID); RegisterQItemHandler(HKEY("envelope_from"), QItem_Handle_EnvelopeFrom); RegisterQItemHandler(HKEY("retry"), QItem_Handle_retry); RegisterQItemHandler(HKEY("attempted"), QItem_Handle_Attempted); RegisterQItemHandler(HKEY("remote"), QItem_Handle_Recipient); RegisterQItemHandler(HKEY("bounceto"), QItem_Handle_BounceTo); RegisterQItemHandler(HKEY("source_room"), QItem_Handle_SenderRoom); RegisterQItemHandler(HKEY("submitted"), QItem_Handle_Submitted); RegisterMimeRenderer(HKEY("application/x-citadel-delivery-list"), render_QUEUE, 1, 9000); RegisterNamespace("MAILQ:ID", 0, 0, tmplput_MailQID, NULL, CTX_MAILQITEM); RegisterNamespace("MAILQ:PAYLOAD:ID", 0, 0, tmplput_MailQPayloadID, NULL, CTX_MAILQITEM); RegisterNamespace("MAILQ:BOUNCETO", 0, 1, tmplput_MailQBounceTo, NULL, CTX_MAILQITEM); RegisterNamespace("MAILQ:ATTEMPTED", 0, 0, tmplput_MailQAttempted, NULL, CTX_MAILQITEM); RegisterNamespace("MAILQ:SUBMITTED", 0, 0, tmplput_MailQSubmitted, NULL, CTX_MAILQITEM); RegisterNamespace("MAILQ:ENVELOPEFROM", 0, 1, tmplput_MailQEnvelopeFrom, NULL, CTX_MAILQITEM); RegisterNamespace("MAILQ:SRCROOM", 0, 1, tmplput_MailQSourceRoom, NULL, CTX_MAILQITEM); RegisterConditional("COND:MAILQ:HAVESRCROOM", 0, Conditional_MailQ_HaveSourceRoom, CTX_MAILQITEM); RegisterNamespace("MAILQ:RETRY", 0, 0, tmplput_MailQRetry, NULL, CTX_MAILQITEM); RegisterNamespace("MAILQ:RCPT:ADDR", 0, 1, tmplput_MailQRCPT, NULL, CTX_MAILQ_RCPT); RegisterNamespace("MAILQ:RCPT:STATUS", 0, 0, tmplput_MailQRCPTStatus, NULL, CTX_MAILQ_RCPT); RegisterNamespace("MAILQ:RCPT:STATUSMSG", 0, 1, tmplput_MailQStatusMsg, NULL, CTX_MAILQ_RCPT); RegisterIterator("MAILQ:RCPT", 0, NULL, iterate_get_Recipients, NULL, NULL, CTX_MAILQ_RCPT, CTX_MAILQITEM, IT_NOFLAG); RegisterReadLoopHandlerset( VIEW_QUEUE, qview_GetParamsGetServerCall, qview_PrintPageHeader, NULL, /* TODO: is this right? */ NULL, qview_LoadMsgFromServer, qview_RenderView_or_Tail, qview_Cleanup); } webcit-8.24-dfsg.orig/acinclude.m40000644000175000017500000000301212271477123016565 0ustar michaelmichael# CIT_STRUCT_TM # ------------------ # Figure out how to get the current GMT offset. If `struct tm' has a # `tm_gmtoff' member, define `HAVE_STRUCT_TM_TM_GMTOFF'. Otherwise, if the # external variable `timezone' is found, define `HAVE_TIMEZONE'. AC_DEFUN([CIT_STRUCT_TM], [AC_REQUIRE([AC_STRUCT_TM])dnl AC_CHECK_MEMBERS([struct tm.tm_gmtoff],,,[#include #include <$ac_cv_struct_tm> ]) if test "$ac_cv_member_struct_tm_tm_gmtoff" != yes; then AC_CACHE_CHECK(for timezone, ac_cv_var_timezone, [AC_TRY_LINK( [#include ], [printf("%ld", (long)timezone);], ac_cv_var_timezone=yes, ac_cv_var_timezone=no)]) if test $ac_cv_var_timezone = yes; then AC_DEFINE(HAVE_TIMEZONE, 1, [Define if you don't have `tm_gmtoff' but do have the external variable `timezone'.]) fi fi ])# CIT_STRUCT_TM AC_DEFUN([AC_CHECK_DB],[ for lib in $1 do AS_VAR_PUSHDEF([ac_tr_db], [ac_cv_db_lib_${lib}])dnl bogo_saved_LIBS="$LIBS" LIBS="$LIBS -l$lib" AC_CACHE_CHECK([for db_create in -l${lib}], ac_tr_db, [AC_TRY_LINK([#include ], [int foo=db_create((void *)0, (void *) 0, 0 )], [AS_VAR_SET(ac_tr_db, yes)], [AS_VAR_SET(ac_tr_db, no)]) ]) AS_IF([test AS_VAR_GET(ac_tr_db) = yes], [$2 LIBS="$bogo_saved_LIBS" SERVER_LIBS="$SERVER_LIBS -l$lib" db=yes], [LIBS="$bogo_saved_LIBS" db=no]) AS_VAR_POPDEF([ac_tr_db])dnl test "$db" = "yes" && break done if test "$db" = "no"; then $3 fi ])# AC_CHECK_DB webcit-8.24-dfsg.orig/tasks.c0000644000175000017500000005016712271477123015702 0ustar michaelmichael#include "webcit.h" #include "calendar.h" #include "webserver.h" /* * qsort filter to move completed tasks to bottom of task list */ int task_completed_cmp(const void *vtask1, const void *vtask2) { disp_cal * Task1 = (disp_cal *)GetSearchPayload(vtask1); /* disp_cal * Task2 = (disp_cal *)GetSearchPayload(vtask2); */ icalproperty_status t1 = icalcomponent_get_status((Task1)->cal); /* icalproperty_status t2 = icalcomponent_get_status(((struct disp_cal *)task2)->cal); */ if (t1 == ICAL_STATUS_COMPLETED) return 1; return 0; } /* * Helper function for do_tasks_view(). Returns the due date/time of a vtodo. */ time_t get_task_due_date(icalcomponent *vtodo, int *is_date) { icalproperty *p; if (vtodo == NULL) { return(0L); } /* * If we're looking at a fully encapsulated VCALENDAR * rather than a VTODO component, recurse into the data * structure until we get a VTODO. */ if (icalcomponent_isa(vtodo) == ICAL_VCALENDAR_COMPONENT) { return get_task_due_date( icalcomponent_get_first_component( vtodo, ICAL_VTODO_COMPONENT ), is_date ); } p = icalcomponent_get_first_property(vtodo, ICAL_DUE_PROPERTY); if (p != NULL) { struct icaltimetype t = icalproperty_get_due(p); if (is_date) *is_date = t.is_date; return(icaltime_as_timet(t)); } else { return(0L); } } /* * Compare the due dates of two tasks (this is for sorting) */ int task_due_cmp(const void *vtask1, const void *vtask2) { disp_cal * Task1 = (disp_cal *)GetSearchPayload(vtask1); disp_cal * Task2 = (disp_cal *)GetSearchPayload(vtask2); time_t t1; time_t t2; t1 = get_task_due_date(Task1->cal, NULL); t2 = get_task_due_date(Task2->cal, NULL); if (t1 < t2) return(-1); if (t1 > t2) return(1); return(0); } /* * do the whole task view stuff */ int tasks_RenderView_or_Tail(SharedMessageStatus *Stat, void **ViewSpecific, long oper) { long hklen; const char *HashKey; void *vCal; disp_cal *Cal; HashPos *Pos; int nItems; time_t due; char buf[SIZ]; icalproperty *p; wcsession *WCC = WC; wc_printf("\n\n\n", _("Show All")); nItems = GetCount(WC->disp_cal_items); /* Sort them if necessary if (nItems > 1) { SortByPayload(WC->disp_cal_items, task_due_cmp); } * this shouldn't be neccessary, since we sort by the start time. */ /* And then again, by completed */ if (nItems > 1) { SortByPayload(WC->disp_cal_items, task_completed_cmp); } Pos = GetNewHashPos(WCC->disp_cal_items, 0); while (GetNextHashPos(WCC->disp_cal_items, Pos, &hklen, &HashKey, &vCal)) { icalproperty_status todoStatus; int is_date; Cal = (disp_cal*)vCal; wc_printf("\n"); due = get_task_due_date(Cal->cal, &is_date); wc_printf(""); wc_printf(""); wc_printf(""); } wc_printf("
    "); wc_printf(_("Completed?")); wc_printf(""); wc_printf(_("Name of task")); wc_printf(""); wc_printf(_("Date due")); wc_printf(""); wc_printf(_("Category")); wc_printf(" ()
    "); todoStatus = icalcomponent_get_status(Cal->cal); wc_printf("\n"); p = icalcomponent_get_first_property(Cal->cal, ICAL_SUMMARY_PROPERTY); wc_printf("cal_msgnum); urlescputs(ChrPtr(WC->CurRoom.name)); wc_printf("\">"); /* wc_printf(" "); */ if (p != NULL) { escputs((char *)icalproperty_get_comment(p)); } wc_printf("\n"); wc_printf(" 0) { webcit_fmt_date(buf, SIZ, due, is_date ? DATEFMT_RAWDATE : DATEFMT_FULL); wc_printf(">%s",buf); } else { wc_printf(">"); } wc_printf(""); p = icalcomponent_get_first_property(Cal->cal, ICAL_CATEGORIES_PROPERTY); if (p != NULL) { escputs((char *)icalproperty_get_categories(p)); } wc_printf("
    \n"); /* Free the list */ DeleteHash(&WC->disp_cal_items); DeleteHashPos(&Pos); return 0; } /* * Display a task by itself (for editing) */ void display_edit_individual_task(icalcomponent *supplied_vtodo, long msgnum, char *from, int unread, calview *calv) { wcsession *WCC = WC; icalcomponent *vtodo; icalproperty *p; struct icaltimetype IcalTime; int created_new_vtodo = 0; icalproperty_status todoStatus; if (supplied_vtodo != NULL) { vtodo = supplied_vtodo; /* * It's safe to convert to UTC here because there are no recurrences to worry about. */ ical_dezonify(vtodo); /* * If we're looking at a fully encapsulated VCALENDAR * rather than a VTODO component, attempt to use the first * relevant VTODO subcomponent. If there is none, the * NULL returned by icalcomponent_get_first_component() will * tell the next iteration of this function to create a * new one. */ if (icalcomponent_isa(vtodo) == ICAL_VCALENDAR_COMPONENT) { display_edit_individual_task( icalcomponent_get_first_component( vtodo, ICAL_VTODO_COMPONENT ), msgnum, from, unread, calv ); return; } } else { vtodo = icalcomponent_new(ICAL_VTODO_COMPONENT); created_new_vtodo = 1; } /* TODO: Can we take all this and move it into a template? */ output_headers(1, 1, 1, 0, 0, 0); wc_printf(""); p = icalcomponent_get_first_property(vtodo, ICAL_SUMMARY_PROPERTY); /* Get summary early for title */ wc_printf("
    \n"); wc_printf("
    "); wc_printf(_("Edit task")); wc_printf("- "); if (p != NULL) { escputs((char *)icalproperty_get_comment(p)); } wc_printf("
    "); wc_printf("
    \n"); wc_printf("
    \n"); wc_printf("
    \n "); wc_printf("WBuf, WCC->CurRoom.name, NULL, 0, 0); wc_printf("\">\n"); wc_printf("\n", WC->nonce); wc_printf("\n", msgnum); wc_printf("\n", ibstr("return_to_summary")); wc_printf("
    "); wc_printf("
    "); wc_printf("\n"); wc_printf("\n"); wc_printf("\n"); wc_printf("\n"); todoStatus = icalcomponent_get_status(vtodo); wc_printf(""); /* start category field */ p = icalcomponent_get_first_property(vtodo, ICAL_CATEGORIES_PROPERTY); wc_printf("\n "); /* end category field */ wc_printf("
    "); wc_printf(_("Summary:")); wc_printf("" "
    "); wc_printf(_("Start date:")); wc_printf(""); p = icalcomponent_get_first_property(vtodo, ICAL_DTSTART_PROPERTY); wc_printf(""); wc_printf(_("No date")); wc_printf(" "); wc_printf(""); wc_printf(_("or")); wc_printf(" "); if (p != NULL) { IcalTime = icalproperty_get_dtstart(p); } else IcalTime = icaltime_current_time_with_zone(get_default_icaltimezone()); display_icaltimetype_as_webform(&IcalTime, "dtstart", 0); wc_printf(""); wc_printf(_("Time associated")); wc_printf("
    "); wc_printf(_("Due date:")); wc_printf(""); p = icalcomponent_get_first_property(vtodo, ICAL_DUE_PROPERTY); wc_printf(""); wc_printf(_("No date")); wc_printf(" "); wc_printf("\n"); wc_printf(_("or")); wc_printf(" "); if (p != NULL) { IcalTime = icalproperty_get_due(p); } else IcalTime = icaltime_current_time_with_zone(get_default_icaltimezone()); display_icaltimetype_as_webform(&IcalTime, "due", 0); wc_printf(""); wc_printf(_("Time associated")); wc_printf("
    \n"); wc_printf(_("Completed:")); wc_printf(""); wc_printf(""); wc_printf("
    "); wc_printf(_("Category:")); wc_printf(""); wc_printf(""); wc_printf("
    "); wc_printf(_("Description:")); wc_printf(""); wc_printf("
    \n"); wc_printf("" "" "  " "\n" "  " "\n" "\n", _("Save"), _("Delete"), _("Cancel") ); wc_printf("
    "); wc_printf("
    \n"); wc_printf("
    \n"); wc_printf(""); wDumpContent(1); if (created_new_vtodo) { icalcomponent_free(vtodo); } } /* * Save an edited task * * supplied_vtodo the task to save * msgnum number of the mesage in our db */ void save_individual_task(icalcomponent *supplied_vtodo, long msgnum, char* from, int unread, calview *calv) { char buf[SIZ]; int delete_existing = 0; icalproperty *prop; icalcomponent *vtodo, *encaps; int created_new_vtodo = 0; int i; int sequence = 0; struct icaltimetype t; if (supplied_vtodo != NULL) { vtodo = supplied_vtodo; /** * If we're looking at a fully encapsulated VCALENDAR * rather than a VTODO component, attempt to use the first * relevant VTODO subcomponent. If there is none, the * NULL returned by icalcomponent_get_first_component() will * tell the next iteration of this function to create a * new one. */ if (icalcomponent_isa(vtodo) == ICAL_VCALENDAR_COMPONENT) { save_individual_task( icalcomponent_get_first_component( vtodo, ICAL_VTODO_COMPONENT), msgnum, from, unread, calv ); return; } } else { vtodo = icalcomponent_new(ICAL_VTODO_COMPONENT); created_new_vtodo = 1; } if (havebstr("save_button")) { /** Replace values in the component with ones from the form */ while (prop = icalcomponent_get_first_property(vtodo, ICAL_SUMMARY_PROPERTY), prop != NULL) { icalcomponent_remove_property(vtodo, prop); icalproperty_free(prop); } if (havebstr("summary")) { icalcomponent_add_property(vtodo, icalproperty_new_summary(bstr("summary"))); } else { icalcomponent_add_property(vtodo, icalproperty_new_summary(_("Untitled Task"))); } while (prop = icalcomponent_get_first_property(vtodo, ICAL_DESCRIPTION_PROPERTY), prop != NULL) { icalcomponent_remove_property(vtodo, prop); icalproperty_free(prop); } if (havebstr("description")) { icalcomponent_add_property(vtodo, icalproperty_new_description(bstr("description"))); } while (prop = icalcomponent_get_first_property(vtodo, ICAL_DTSTART_PROPERTY), prop != NULL) { icalcomponent_remove_property(vtodo, prop); icalproperty_free(prop); } if (IsEmptyStr(bstr("nodtstart"))) { if (yesbstr("dtstart_time")) { icaltime_from_webform(&t, "dtstart"); } else { icaltime_from_webform_dateonly(&t, "dtstart"); } icalcomponent_add_property(vtodo, icalproperty_new_dtstart(t) ); } while(prop = icalcomponent_get_first_property(vtodo, ICAL_STATUS_PROPERTY), prop != NULL) { icalcomponent_remove_property(vtodo,prop); icalproperty_free(prop); } while(prop = icalcomponent_get_first_property(vtodo, ICAL_PERCENTCOMPLETE_PROPERTY), prop != NULL) { icalcomponent_remove_property(vtodo,prop); icalproperty_free(prop); } if (havebstr("status")) { icalproperty_status taskStatus = icalproperty_string_to_status(bstr("status")); icalcomponent_set_status(vtodo, taskStatus); icalcomponent_add_property(vtodo, icalproperty_new_percentcomplete( (strcasecmp(bstr("status"), "completed") ? 0 : 100) ) ); } else { icalcomponent_add_property(vtodo, icalproperty_new_percentcomplete(0)); } while (prop = icalcomponent_get_first_property(vtodo, ICAL_CATEGORIES_PROPERTY), prop != NULL) { icalcomponent_remove_property(vtodo,prop); icalproperty_free(prop); } if (!IsEmptyStr(bstr("category"))) { prop = icalproperty_new_categories(bstr("category")); icalcomponent_add_property(vtodo,prop); } while (prop = icalcomponent_get_first_property(vtodo, ICAL_DUE_PROPERTY), prop != NULL) { icalcomponent_remove_property(vtodo, prop); icalproperty_free(prop); } if (IsEmptyStr(bstr("nodue"))) { if (yesbstr("due_time")) { icaltime_from_webform(&t, "due"); } else { icaltime_from_webform_dateonly(&t, "due"); } icalcomponent_add_property(vtodo, icalproperty_new_due(t) ); } /** Give this task a UID if it doesn't have one. */ syslog(LOG_DEBUG, "Give this task a UID if it doesn't have one.\n"); if (icalcomponent_get_first_property(vtodo, ICAL_UID_PROPERTY) == NULL) { generate_uuid(buf); icalcomponent_add_property(vtodo, icalproperty_new_uid(buf) ); } /* Increment the sequence ID */ syslog(LOG_DEBUG, "Increment the sequence ID\n"); while (prop = icalcomponent_get_first_property(vtodo, ICAL_SEQUENCE_PROPERTY), (prop != NULL) ) { i = icalproperty_get_sequence(prop); syslog(LOG_DEBUG, "Sequence was %d\n", i); if (i > sequence) sequence = i; icalcomponent_remove_property(vtodo, prop); icalproperty_free(prop); } ++sequence; syslog(LOG_DEBUG, "New sequence is %d. Adding...\n", sequence); icalcomponent_add_property(vtodo, icalproperty_new_sequence(sequence) ); /* * Encapsulate event into full VCALENDAR component. Clone it first, * for two reasons: one, it's easier to just free the whole thing * when we're done instead of unbundling, but more importantly, we * can't encapsulate something that may already be encapsulated * somewhere else. */ syslog(LOG_DEBUG, "Encapsulating into a full VCALENDAR component\n"); encaps = ical_encapsulate_subcomponent(icalcomponent_new_clone(vtodo)); /* Serialize it and save it to the message base */ serv_puts("ENT0 1|||4"); serv_getln(buf, sizeof buf); if (buf[0] == '4') { serv_puts("Content-type: text/calendar"); serv_puts(""); serv_puts(icalcomponent_as_ical_string(encaps)); serv_puts("000"); /* * Probably not necessary; the server will see the UID * of the object and delete the old one anyway, but * just in case... */ delete_existing = 1; } icalcomponent_free(encaps); } /** * If the user clicked 'Delete' then explicitly delete the message. */ if (havebstr("delete_button")) { delete_existing = 1; } if ( (delete_existing) && (msgnum > 0L) ) { serv_printf("DELE %ld", lbstr("msgnum")); serv_getln(buf, sizeof buf); } if (created_new_vtodo) { icalcomponent_free(vtodo); } /* Go back to wherever we came from */ if (ibstr("return_to_summary") == 1) { display_summary_page(); } else { readloop(readfwd, eUseDefault); } } /* * free memory allocated using libical */ void delete_task(void *vCal) { disp_cal *Cal = (disp_cal*) vCal; icalcomponent_free(Cal->cal); free(Cal->from); free(Cal); } /* * Load a Task into a hash table for later display. */ void load_task(icalcomponent *event, long msgnum, char *from, int unread, calview *calv) { icalproperty *ps = NULL; struct icaltimetype dtstart, dtend; wcsession *WCC = WC; disp_cal *Cal; size_t len; icalcomponent *cptr = NULL; dtstart = icaltime_null_time(); dtend = icaltime_null_time(); if (WCC->disp_cal_items == NULL) { WCC->disp_cal_items = NewHash(0, Flathash); } Cal = (disp_cal*) malloc(sizeof(disp_cal)); memset(Cal, 0, sizeof(disp_cal)); Cal->cal = icalcomponent_new_clone(event); /* Dezonify and decapsulate at the very last moment */ ical_dezonify(Cal->cal); if (icalcomponent_isa(Cal->cal) != ICAL_VTODO_COMPONENT) { cptr = icalcomponent_get_first_component(Cal->cal, ICAL_VTODO_COMPONENT); if (cptr) { cptr = icalcomponent_new_clone(cptr); icalcomponent_free(Cal->cal); Cal->cal = cptr; } } Cal->unread = unread; len = strlen(from); Cal->from = (char*)malloc(len+ 1); memcpy(Cal->from, from, len + 1); Cal->cal_msgnum = msgnum; /* Precalculate the starting date and time of this event, and store it in our top-level * structure. Later, when we are rendering the calendar, we can just peek at these values * without having to break apart every calendar item. */ ps = icalcomponent_get_first_property(Cal->cal, ICAL_DTSTART_PROPERTY); if (ps != NULL) { dtstart = icalproperty_get_dtstart(ps); Cal->event_start = icaltime_as_timet(dtstart); } /* Do the same for the ending date and time. It makes the day view much easier to render. */ ps = icalcomponent_get_first_property(Cal->cal, ICAL_DTEND_PROPERTY); if (ps != NULL) { dtend = icalproperty_get_dtend(ps); Cal->event_end = icaltime_as_timet(dtend); } /* Store it in the hash list. */ /* syslog(LOG_DEBUG, "INITIAL: %s", ctime(&Cal->event_start)); */ Put(WCC->disp_cal_items, (char*) &Cal->event_start, sizeof(Cal->event_start), Cal, delete_task ); } /* * Display task view */ int tasks_LoadMsgFromServer(SharedMessageStatus *Stat, void **ViewSpecific, message_summary* Msg, int is_new, int i) { /* Not (yet?) needed here? calview *c = (calview *) *ViewSpecific; */ load_ical_object(Msg->msgnum, is_new, ICAL_VTODO_COMPONENT, load_task, NULL, 0); return 0; } /* * Display the editor component for a task */ void display_edit_task(void) { long msgnum = 0L; /* Force change the room if we have to */ if (havebstr("taskrm")) { gotoroom(sbstr("taskrm")); } msgnum = lbstr("msgnum"); if (msgnum > 0L) { /* existing task */ load_ical_object(msgnum, 0, ICAL_VTODO_COMPONENT, display_edit_individual_task, NULL, 0 ); } else { /* new task */ display_edit_individual_task(NULL, 0L, "", 0, NULL); } } /* * save an edited task */ void save_task(void) { long msgnum = 0L; msgnum = lbstr("msgnum"); if (msgnum > 0L) { load_ical_object(msgnum, 0, ICAL_VTODO_COMPONENT, save_individual_task, NULL, 0); } else { save_individual_task(NULL, 0L, "", 0, NULL); } } int tasks_GetParamsGetServerCall(SharedMessageStatus *Stat, void **ViewSpecific, long oper, char *cmd, long len, char *filter, long flen) { strcpy(cmd, "MSGS ALL"); Stat->maxmsgs = 32767; return 200; } int tasks_Cleanup(void **ViewSpecific) { wDumpContent(1); /* Tasks doesn't need the calview struct... free (*ViewSpecific); *ViewSpecific = NULL; */ return 0; } void InitModule_TASKS (void) { RegisterReadLoopHandlerset( VIEW_TASKS, tasks_GetParamsGetServerCall, NULL, NULL, NULL, tasks_LoadMsgFromServer, tasks_RenderView_or_Tail, tasks_Cleanup); WebcitAddUrlHandler(HKEY("save_task"), "", 0, save_task, 0); } webcit-8.24-dfsg.orig/dav_delete.c0000644000175000017500000000550512271477123016645 0ustar michaelmichael/* * Handles GroupDAV DELETE requests. * * Copyright (c) 2005-2012 by the citadel.org team * * This program is open source software. You can redistribute it and/or * modify it under the terms of the GNU General Public License, version 3. * * This program 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. */ #include "webcit.h" #include "webserver.h" #include "dav.h" /* * The pathname is always going to be /groupdav/room_name/euid */ void dav_delete(void) { wcsession *WCC = WC; char dav_uid[SIZ]; long dav_msgnum = (-1); char buf[SIZ]; int n = 0; StrBuf *dav_roomname = NewStrBuf(); /* Now extract the message euid */ n = StrBufNum_tokens(WCC->Hdr->HR.ReqLine, '/'); extract_token(dav_uid, ChrPtr(WCC->Hdr->HR.ReqLine), n-1, '/', sizeof dav_uid); StrBufExtract_token(dav_roomname, WCC->Hdr->HR.ReqLine, 0, '/'); ///* What's left is the room name. Remove trailing slashes. */ //len = StrLength(WCC->Hdr->HR.ReqLine); //if ((len > 0) && (ChrPtr(WCC->Hdr->HR.ReqLinee)[len-1] == '/')) { // StrBufCutRight(WCC->Hdr->HR.ReqLine, 1); //} //StrBufCutLeft(WCC->Hdr->HR.ReqLine, 1); /* Go to the correct room. */ if (strcasecmp(ChrPtr(WC->CurRoom.name), ChrPtr(dav_roomname))) { gotoroom(dav_roomname); } if (strcasecmp(ChrPtr(WC->CurRoom.name), ChrPtr(dav_roomname))) { hprintf("HTTP/1.1 404 not found\r\n"); dav_common_headers(); hprintf("Content-Length: 0\r\n\r\n"); begin_burst(); end_burst(); FreeStrBuf(&dav_roomname); return; } dav_msgnum = locate_message_by_uid(dav_uid); /* * If no item exists with the requested uid ... simple error. */ if (dav_msgnum < 0L) { hprintf("HTTP/1.1 404 Not Found\r\n"); dav_common_headers(); hprintf("Content-Length: 0\r\n\r\n"); begin_burst(); end_burst(); FreeStrBuf(&dav_roomname); return; } /* * It's there ... check the ETag and make sure it matches * the message number. */ if (StrLength(WCC->Hdr->HR.dav_ifmatch) > 0) { if (StrTol(WCC->Hdr->HR.dav_ifmatch) != dav_msgnum) { hprintf("HTTP/1.1 412 Precondition Failed\r\n"); dav_common_headers(); hprintf("Content-Length: 0\r\n\r\n"); begin_burst(); end_burst(); FreeStrBuf(&dav_roomname); return; } } /* * Ok, attempt to delete the item. */ serv_printf("DELE %ld", dav_msgnum); serv_getln(buf, sizeof buf); if (buf[0] == '2') { hprintf("HTTP/1.1 204 No Content\r\n"); /* success */ dav_common_headers(); hprintf("Content-Length: 0\r\n\r\n"); begin_burst(); end_burst(); } else { hprintf("HTTP/1.1 403 Forbidden\r\n"); /* access denied */ dav_common_headers(); hprintf("Content-Length: 0\r\n\r\n"); begin_burst(); end_burst(); } FreeStrBuf(&dav_roomname); return; } webcit-8.24-dfsg.orig/sysmsgs.c0000644000175000017500000000730612271477123016262 0ustar michaelmichael/* * Copyright (c) 1996-2012 by the citadel.org team * * This program is open source software. You can redistribute it and/or * modify it under the terms of the GNU General Public License, version 3. * * This program 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. */ #include "webcit.h" /** * display the form for editing something (room info, bio, etc) * description the descriptive text for the box * check_cmd command to check???? * read_cmd read answer from citadel server??? * save_cmd save comand to the citadel server?? * with_room_banner should we bisplay a room banner? */ void display_edit(char *description, char *check_cmd, char *read_cmd, char *save_cmd, int with_room_banner) { StrBuf *Line; serv_puts(check_cmd); Line = NewStrBuf(); StrBuf_ServGetln(Line); if (GetServerStatusMsg(Line, NULL, 1, 2) != 2) { FreeStrBuf(&Line); display_main_menu(); FreeStrBuf(&Line); return; } if (with_room_banner) { output_headers(1, 1, 1, 0, 0, 0); } else { output_headers(1, 1, 0, 0, 0, 0); } do_template("box_begin_1"); StrBufAppendPrintf (WC->WBuf, _("Edit %s"), description); do_template("box_begin_2"); wc_printf(_("Enter %s below. Text is formatted to the reader's browser." " A newline is forced by preceding the next line by a blank."), description); wc_printf("
    \n", save_cmd); wc_printf("\n", WC->nonce); wc_printf("
    \n"); wc_printf("", _("Save changes")); wc_printf(" "); wc_printf("
    \n", _("Cancel")); wc_printf("
    \n"); do_template("box_end"); wDumpContent(1); FreeStrBuf(&Line); } /** * save a screen which was displayed with display_edit() * description the window title??? * enter_cmd which command to enter at the citadel server??? * regoto should we go to that room again after executing that command? */ void save_edit(char *description, char *enter_cmd, int regoto) { StrBuf *Line; if (!havebstr("save_button")) { AppendImportantMessage(_("Cancelled. %s was not saved."), -1); display_main_menu(); return; } Line = NewStrBuf(); serv_puts(enter_cmd); StrBuf_ServGetln(Line); if (GetServerStatusMsg(Line, NULL, 1, 0) != 4) { FreeStrBuf(&Line); display_main_menu(); return; } FreeStrBuf(&Line); text_to_server(bstr("msgtext")); serv_puts("000"); if (regoto) { smart_goto(WC->CurRoom.name); } else { AppendImportantMessage(description, -1); AppendImportantMessage(_(" has been saved."), -1); display_main_menu(); return; } } void display_editinfo(void){ display_edit(_("Room info"), "EINF 0", "RINF", "editinfo", 1);} void editinfo(void) {save_edit(_("Room info"), "EINF 1", 1);} void display_editbio(void) { char buf[SIZ]; snprintf(buf, SIZ, "RBIO %s", ChrPtr(WC->wc_fullname)); display_edit(_("Your bio"), "NOOP", buf, "editbio", 3); } void editbio(void) { save_edit(_("Your bio"), "EBIO", 0); } void InitModule_SYSMSG (void) { WebcitAddUrlHandler(HKEY("display_editinfo"), "", 0, display_editinfo, 0); WebcitAddUrlHandler(HKEY("editinfo"), "", 0, editinfo, 0); WebcitAddUrlHandler(HKEY("display_editbio"), "", 0, display_editbio, 0); WebcitAddUrlHandler(HKEY("editbio"), "", 0, editbio, 0); } webcit-8.24-dfsg.orig/debian/0000755000175000017500000000000012271477123015622 5ustar michaelmichaelwebcit-8.24-dfsg.orig/ical_dezonify.c0000644000175000017500000001432212271477123017365 0ustar michaelmichael/* * Function to go through an ical component set and convert all non-UTC * date/time properties to UTC. It also strips out any VTIMEZONE * subcomponents afterwards, because they're irrelevant. * * Everything here will work on both a fully encapsulated VCALENDAR component * or any type of subcomponent. */ #include "webcit.h" #include "webserver.h" /* * Figure out which time zone needs to be used for timestamps that are * not UTC and do not have a time zone specified. * */ icaltimezone *get_default_icaltimezone(void) { icaltimezone *zone = NULL; const char *default_zone_name = ChrPtr(WC->serv_info->serv_default_cal_zone); if (!zone) { zone = icaltimezone_get_builtin_timezone(default_zone_name); } if (!zone) { syslog(LOG_WARNING, "Unable to load '%s' time zone. Defaulting to UTC.\n", default_zone_name); zone = icaltimezone_get_utc_timezone(); } if (!zone) { syslog(LOG_EMERG, "Unable to load UTC time zone!\n"); } return zone; } /* * Back end function for ical_dezonify() * * We supply this with the master component, the relevant component, * and the property (which will be a DTSTART, DTEND, etc.) * which we want to convert to UTC. */ void ical_dezonify_backend(icalcomponent *cal, icalcomponent *rcal, icalproperty *prop) { icaltimezone *t = NULL; icalparameter *param; const char *tzid = NULL; struct icaltimetype TheTime; int utc_declared_as_tzid = 0; /* Component declared 'TZID=GMT' instead of using Z syntax */ /* Give me nothing and I will give you nothing in return. */ if (cal == NULL) return; /* Hunt for a TZID parameter in this property. */ param = icalproperty_get_first_parameter(prop, ICAL_TZID_PARAMETER); /* Get the stringish name of this TZID. */ if (param != NULL) { tzid = icalparameter_get_tzid(param); /* Convert it to an icaltimezone type. */ if (tzid != NULL) { #ifdef DBG_ICAL syslog(LOG_DEBUG, " * Stringy supplied timezone is: '%s'\n", tzid); #endif if ( (!strcasecmp(tzid, "UTC")) || (!strcasecmp(tzid, "GMT")) ) { utc_declared_as_tzid = 1; #ifdef DBG_ICAL syslog(LOG_DEBUG, " * ...and we handle that internally.\n"); #endif } else { /* try attached first */ t = icalcomponent_get_timezone(cal, tzid); #ifdef DBG_ICAL syslog(LOG_DEBUG, " * ...and I %s have tzdata for that zone.\n", (t ? "DO" : "DO NOT") ); #endif /* then try built-in timezones */ if (!t) { t = icaltimezone_get_builtin_timezone(tzid); #ifdef DBG_ICAL if (t) { syslog(LOG_DEBUG, " * Using system tzdata!\n"); } #endif } } } } /* Now we know the timezone. Convert to UTC. */ if (icalproperty_isa(prop) == ICAL_DTSTART_PROPERTY) { TheTime = icalproperty_get_dtstart(prop); } else if (icalproperty_isa(prop) == ICAL_DTEND_PROPERTY) { TheTime = icalproperty_get_dtend(prop); } else if (icalproperty_isa(prop) == ICAL_DUE_PROPERTY) { TheTime = icalproperty_get_due(prop); } else if (icalproperty_isa(prop) == ICAL_EXDATE_PROPERTY) { TheTime = icalproperty_get_exdate(prop); } else { return; } #ifdef DBG_ICAL syslog(LOG_DEBUG, " * Was: %s\n", icaltime_as_ical_string(TheTime)); #endif if (TheTime.is_utc) { #ifdef DBG_ICAL syslog(LOG_DEBUG, " * This property is ALREADY UTC.\n"); #endif } else if (utc_declared_as_tzid) { #ifdef DBG_ICAL syslog(LOG_DEBUG, " * Replacing '%s' TZID with 'Z' suffix.\n", tzid); #endif TheTime.is_utc = 1; } else { /* Do the conversion. */ if (t != NULL) { #ifdef DBG_ICAL syslog(LOG_DEBUG, " * Timezone prop found. Converting to UTC.\n"); #endif } else { #ifdef DBG_ICAL syslog(LOG_DEBUG, " * Converting default timezone to UTC.\n"); #endif } if (t == NULL) { t = get_default_icaltimezone(); } icaltimezone_convert_time(&TheTime, t, icaltimezone_get_utc_timezone()); TheTime.is_utc = 1; } icalproperty_remove_parameter_by_kind(prop, ICAL_TZID_PARAMETER); #ifdef DBG_ICAL syslog(LOG_DEBUG, " * Now: %s\n", icaltime_as_ical_string(TheTime)); #endif /* Now add the converted property back in. */ if (icalproperty_isa(prop) == ICAL_DTSTART_PROPERTY) { icalproperty_set_dtstart(prop, TheTime); } else if (icalproperty_isa(prop) == ICAL_DTEND_PROPERTY) { icalproperty_set_dtend(prop, TheTime); } else if (icalproperty_isa(prop) == ICAL_DUE_PROPERTY) { icalproperty_set_due(prop, TheTime); } else if (icalproperty_isa(prop) == ICAL_EXDATE_PROPERTY) { icalproperty_set_exdate(prop, TheTime); } } /* * Recursive portion of ical_dezonify() */ void ical_dezonify_recurse(icalcomponent *cal, icalcomponent *rcal) { icalcomponent *c; icalproperty *p; /* * Recurse through all subcomponents *except* VTIMEZONE ones. */ for (c=icalcomponent_get_first_component( rcal, ICAL_ANY_COMPONENT); c != NULL; c = icalcomponent_get_next_component( rcal, ICAL_ANY_COMPONENT) ) { if (icalcomponent_isa(c) != ICAL_VTIMEZONE_COMPONENT) { ical_dezonify_recurse(cal, c); } } /* * Now look for DTSTART and DTEND properties */ for (p=icalcomponent_get_first_property(rcal, ICAL_ANY_PROPERTY); p != NULL; p = icalcomponent_get_next_property(rcal, ICAL_ANY_PROPERTY) ) { if ( (icalproperty_isa(p) == ICAL_DTSTART_PROPERTY) || (icalproperty_isa(p) == ICAL_DTEND_PROPERTY) || (icalproperty_isa(p) == ICAL_DUE_PROPERTY) || (icalproperty_isa(p) == ICAL_EXDATE_PROPERTY) ) { ical_dezonify_backend(cal, rcal, p); } } } /* * Convert all DTSTART and DTEND properties in all subcomponents to UTC. * This function will search any VTIMEZONE subcomponents to learn the * relevant timezone information. */ void ical_dezonify(icalcomponent *cal) { icalcomponent *vt = NULL; #ifdef DBG_ICAL syslog(LOG_DEBUG, "ical_dezonify() started\n"); #endif /* Convert all times to UTC */ ical_dezonify_recurse(cal, cal); /* Strip out VTIMEZONE subcomponents -- we don't need them anymore */ while (vt = icalcomponent_get_first_component( cal, ICAL_VTIMEZONE_COMPONENT), vt != NULL) { icalcomponent_remove_component(cal, vt); icalcomponent_free(vt); } #ifdef DBG_ICAL syslog(LOG_DEBUG, "ical_dezonify() completed\n"); #endif } webcit-8.24-dfsg.orig/mkinstalldirs0000755000175000017500000000370412271477123017212 0ustar michaelmichael#! /bin/sh # mkinstalldirs --- make directory hierarchy # Author: Noah Friedman # Created: 1993-05-16 # Public domain errstatus=0 dirmode="" usage="\ Usage: mkinstalldirs [-h] [--help] [-m mode] dir ..." # process command line arguments while test $# -gt 0 ; do case $1 in -h | --help | --h*) # -h for help echo "$usage" 1>&2 exit 0 ;; -m) # -m PERM arg shift test $# -eq 0 && { echo "$usage" 1>&2; exit 1; } dirmode=$1 shift ;; --) # stop option processing shift break ;; -*) # unknown option echo "$usage" 1>&2 exit 1 ;; *) # first non-opt arg break ;; esac done for file do if test -d "$file"; then shift else break fi done case $# in 0) exit 0 ;; esac case $dirmode in '') if mkdir -p -- . 2>/dev/null; then echo "mkdir -p -- $*" exec mkdir -p -- "$@" fi ;; *) if mkdir -m "$dirmode" -p -- . 2>/dev/null; then echo "mkdir -m $dirmode -p -- $*" exec mkdir -m "$dirmode" -p -- "$@" fi ;; esac for file do set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'` shift pathcomp= for d do pathcomp="$pathcomp$d" case $pathcomp in -*) pathcomp=./$pathcomp ;; esac if test ! -d "$pathcomp"; then echo "mkdir $pathcomp" mkdir "$pathcomp" || lasterr=$? if test ! -d "$pathcomp"; then errstatus=$lasterr else if test ! -z "$dirmode"; then echo "chmod $dirmode $pathcomp" lasterr="" chmod "$dirmode" "$pathcomp" || lasterr=$? if test ! -z "$lasterr"; then errstatus=$lasterr fi fi fi fi pathcomp="$pathcomp/" done done exit $errstatus # Local Variables: # mode: shell-script # sh-indentation: 2 # End: # mkinstalldirs ends here webcit-8.24-dfsg.orig/configure0000755000175000017500000062600512271477137016325 0ustar michaelmichael#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.67 for WebCit 8.24. # # Report bugs to . # # # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, # 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software # Foundation, Inc. # # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : else exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 test \$(( 1 + 1 )) = 2 || exit 1" if (eval "$as_required") 2>/dev/null; then : as_have_required=yes else as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir/$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : CONFIG_SHELL=$as_shell as_have_required=yes if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : break 2 fi fi done;; esac as_found=false done $as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : CONFIG_SHELL=$SHELL as_have_required=yes fi; } IFS=$as_save_IFS if test "x$CONFIG_SHELL" != x; then : # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV export CONFIG_SHELL exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"} fi if test x$as_have_required = xno; then : $as_echo "$0: This script requires a shell more modern than all" $as_echo "$0: the shells that I found on your system." if test x${ZSH_VERSION+set} = xset ; then $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" $as_echo "$0: be upgraded to zsh 4.3.4 or later." else $as_echo "$0: Please tell bug-autoconf@gnu.org and $0: http://www.citadel.org/ about your system, including $0: any error possibly output before this message. Then $0: install a modern shell, or manually run the script $0: under such a shell if you do have one." fi exit 1 fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -p'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -p' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi if test -x / >/dev/null 2>&1; then as_test_x='test -x' else if ls -dL / >/dev/null 2>&1; then as_ls_L_option=L else as_ls_L_option= fi as_test_x=' eval sh -c '\'' if test -d "$1"; then test -d "$1/."; else case $1 in #( -*)set "./$1";; esac; case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( ???[sx]*):;;*)false;;esac;fi '\'' sh ' fi as_executable_p=$as_test_x # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='WebCit' PACKAGE_TARNAME='webcit' PACKAGE_VERSION='8.24' PACKAGE_STRING='WebCit 8.24' PACKAGE_BUGREPORT='http://www.citadel.org/' PACKAGE_URL='' # Factoring default headers for most tests. ac_includes_default="\ #include #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif #ifdef STDC_HEADERS # include # include #else # ifdef HAVE_STDLIB_H # include # endif #endif #ifdef HAVE_STRING_H # if !defined STDC_HEADERS && defined HAVE_MEMORY_H # include # endif # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_UNISTD_H # include #endif" ac_default_prefix=/usr/local/webcit ac_subst_vars='LTLIBOBJS MAKE_RUN_DIR WWWDIR LOCALEDIR SETUP_LIBS ok_msgfmt ok_msgmerge ok_xgettext MAKE_SSL_DIR LIBOBJS PTHREAD_DEFS SED EGREP GREP CPP OBJEXT EXEEXT ac_ct_CC CPPFLAGS LDFLAGS CFLAGS CC ACLOCAL AUTOCONF INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM host_os host_vendor host_cpu host build_os build_vendor build_cpu build PROG_SUBDIRS target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking with_ssl enable_iconv with_ssldir with_gprof with_backtrace with_localedir with_wwwdir with_rundir with_datadir with_editordir ' ac_precious_vars='build_alias host_alias target_alias CC CFLAGS LDFLAGS LIBS CPPFLAGS CPP' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *=) ac_optarg= ;; *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error $? "unrecognized option: \`$ac_option' Try \`$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe $as_echo "$as_me: WARNING: if you wanted to set the --build type, don't use --host. If a cross compiler is detected then cross compile mode will be used" >&2 elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures WebCit 8.24 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/webcit] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of WebCit 8.24:";; esac cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --disable-iconv do not use iconv charset conversion Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-ssl=PATH Specify path to OpenSSL installation --with-ssldir directory to store the ssl certificates under --with-gprof enable profiling --with-backtrace enable backtrace dumps in the syslog --with-localedir directory to put the locale files to --with-wwwdir directory to put our templates --with-rundir directory to place runtime files (UDS) to? --with-datadir directory to store the databases under --with-editordir directory to put our editor Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory CPP C preprocessor Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to . _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for guested configure. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF WebCit configure 8.24 generated by GNU Autoconf 2.67 Copyright (C) 2010 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## # ac_fn_c_try_compile LINENO # -------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} as_fn_set_status $ac_retval } # ac_fn_c_try_compile # ac_fn_c_try_cpp LINENO # ---------------------- # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} as_fn_set_status $ac_retval } # ac_fn_c_try_cpp # ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists, giving a warning if it cannot be compiled using # the include files in INCLUDES and setting the cache variable VAR # accordingly. ac_fn_c_check_header_mongrel () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if eval "test \"\${$3+set}\"" = set; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval "test \"\${$3+set}\"" = set; then : $as_echo_n "(cached) " >&6 fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } else # Is the header compilable? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 $as_echo_n "checking $2 usability... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_header_compiler=yes else ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 $as_echo_n "checking $2 presence... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <$2> _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : ac_header_preproc=yes else ac_header_preproc=no fi rm -f conftest.err conftest.i conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( yes:no: ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; no:yes:* ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ( $as_echo "## -------------------------------------- ## ## Report this to http://www.citadel.org/ ## ## -------------------------------------- ##" ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval "test \"\${$3+set}\"" = set; then : $as_echo_n "(cached) " >&6 else eval "$3=\$ac_header_compiler" fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } fi eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} } # ac_fn_c_check_header_mongrel # ac_fn_c_try_run LINENO # ---------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. Assumes # that executables *can* be run. ac_fn_c_try_run () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then : ac_retval=0 else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=$ac_status fi rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} as_fn_set_status $ac_retval } # ac_fn_c_try_run # ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists and can be compiled using the include files in # INCLUDES, setting the cache variable VAR accordingly. ac_fn_c_check_header_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval "test \"\${$3+set}\"" = set; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} } # ac_fn_c_check_header_compile # ac_fn_c_try_link LINENO # ----------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} as_fn_set_status $ac_retval } # ac_fn_c_try_link # ac_fn_c_check_type LINENO TYPE VAR INCLUDES # ------------------------------------------- # Tests whether TYPE exists after having included INCLUDES, setting cache # variable VAR accordingly. ac_fn_c_check_type () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval "test \"\${$3+set}\"" = set; then : $as_echo_n "(cached) " >&6 else eval "$3=no" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { if (sizeof ($2)) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { if (sizeof (($2))) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else eval "$3=yes" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} } # ac_fn_c_check_type # ac_fn_c_compute_int LINENO EXPR VAR INCLUDES # -------------------------------------------- # Tries to find the compile-time value of EXPR in a program that includes # INCLUDES, setting VAR accordingly. Returns whether the value could be # computed ac_fn_c_compute_int () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if test "$cross_compiling" = yes; then # Depending upon the size, compute the lo and hi bounds. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { static int test_array [1 - 2 * !(($2) >= 0)]; test_array [0] = 0 ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_lo=0 ac_mid=0 while :; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { static int test_array [1 - 2 * !(($2) <= $ac_mid)]; test_array [0] = 0 ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_hi=$ac_mid; break else as_fn_arith $ac_mid + 1 && ac_lo=$as_val if test $ac_lo -le $ac_mid; then ac_lo= ac_hi= break fi as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { static int test_array [1 - 2 * !(($2) < 0)]; test_array [0] = 0 ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_hi=-1 ac_mid=-1 while :; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { static int test_array [1 - 2 * !(($2) >= $ac_mid)]; test_array [0] = 0 ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_lo=$ac_mid; break else as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val if test $ac_mid -le $ac_hi; then ac_lo= ac_hi= break fi as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done else ac_lo= ac_hi= fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext # Binary search between lo and hi bounds. while test "x$ac_lo" != "x$ac_hi"; do as_fn_arith '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo && ac_mid=$as_val cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { static int test_array [1 - 2 * !(($2) <= $ac_mid)]; test_array [0] = 0 ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_hi=$ac_mid else as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done case $ac_lo in #(( ?*) eval "$3=\$ac_lo"; ac_retval=0 ;; '') ac_retval=1 ;; esac else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 static long int longval () { return $2; } static unsigned long int ulongval () { return $2; } #include #include int main () { FILE *f = fopen ("conftest.val", "w"); if (! f) return 1; if (($2) < 0) { long int i = longval (); if (i != ($2)) return 1; fprintf (f, "%ld", i); } else { unsigned long int i = ulongval (); if (i != ($2)) return 1; fprintf (f, "%lu", i); } /* Do not output a trailing newline, as this causes \r\n confusion on some platforms. */ return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : echo >>conftest.val; read $3 &5 $as_echo_n "checking for $2... " >&6; } if eval "test \"\${$3+set}\"" = set; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Define $2 to an innocuous variant, in case declares $2. For example, HP-UX 11i declares gettimeofday. */ #define $2 innocuous_$2 /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $2 (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $2 /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $2 (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_$2 || defined __stub___$2 choke me #endif int main () { return $2 (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} } # ac_fn_c_check_func cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by WebCit $as_me 8.24, which was generated by GNU Autoconf 2.67. Invocation command line was $ $0 $@ _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. $as_echo "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo $as_echo "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo $as_echo "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then $as_echo "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then $as_echo "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && $as_echo "$as_me: caught signal $ac_signal" $as_echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h $as_echo "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_URL "$PACKAGE_URL" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. ac_site_file1=NONE ac_site_file2=NONE if test -n "$CONFIG_SITE"; then # We do not want a PATH search for config.site. case $CONFIG_SITE in #(( -*) ac_site_file1=./$CONFIG_SITE;; */*) ac_site_file1=$CONFIG_SITE;; *) ac_site_file1=./$CONFIG_SITE;; esac elif test "x$prefix" != xNONE; then ac_site_file1=$prefix/share/config.site ac_site_file2=$prefix/etc/config.site else ac_site_file1=$ac_default_prefix/share/config.site ac_site_file2=$ac_default_prefix/etc/config.site fi for ac_site_file in "$ac_site_file1" "$ac_site_file2" do test "x$ac_site_file" = xNONE && continue if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 $as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5 ; } fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 $as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 $as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu $as_echo "#define PROG_SUBDIRS /**/" >>confdefs.h ac_aux_dir= for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do if test -f "$ac_dir/install-sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f "$ac_dir/install.sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f "$ac_dir/shtool"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. # Make sure we can run config.sub. $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 $as_echo_n "checking build system type... " >&6; } if test "${ac_cv_build+set}" = set; then : $as_echo_n "(cached) " >&6 else ac_build_alias=$build_alias test "x$ac_build_alias" = x && ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` test "x$ac_build_alias" = x && as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 $as_echo "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) as_fn_error $? "invalid value of canonical build" "$LINENO" 5 ;; esac build=$ac_cv_build ac_save_IFS=$IFS; IFS='-' set x $ac_cv_build shift build_cpu=$1 build_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: build_os=$* IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 $as_echo_n "checking host system type... " >&6; } if test "${ac_cv_host+set}" = set; then : $as_echo_n "(cached) " >&6 else if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 $as_echo "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) as_fn_error $? "invalid value of canonical host" "$LINENO" 5 ;; esac host=$ac_cv_host ac_save_IFS=$IFS; IFS='-' set x $ac_cv_host shift host_cpu=$1 host_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: host_os=$* IFS=$ac_save_IFS case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 $as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if test "${ac_cv_path_install+set}" = set; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in #(( ./ | .// | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 $as_echo "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' missing_dir=`cd $ac_aux_dir && pwd` # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --run true"; then am_missing_run="$MISSING --run " else am_missing_run= { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`missing' script is too old or missing" >&5 $as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} fi AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal"} ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CC+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_CC+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CC+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CC+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CC+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_CC+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5 ; } # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 $as_echo_n "checking whether the C compiler works... " >&6; } ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { { ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else ac_file='' fi if test -z "$ac_file"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "C compiler cannot create executables See \`config.log' for more details" "$LINENO" 5 ; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 $as_echo_n "checking for C compiler default output file name... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 $as_echo "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 $as_echo_n "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details" "$LINENO" 5 ; } fi rm -f conftest conftest$ac_cv_exeext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 $as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 $as_echo_n "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details" "$LINENO" 5 ; } fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 $as_echo "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 $as_echo_n "checking for suffix of object files... " >&6; } if test "${ac_cv_objext+set}" = set; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See \`config.log' for more details" "$LINENO" 5 ; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 $as_echo "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } if test "${ac_cv_c_compiler_gnu+set}" = set; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 $as_echo "$ac_cv_c_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 $as_echo_n "checking whether $CC accepts -g... " >&6; } if test "${ac_cv_prog_cc_g+set}" = set; then : $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes else CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 $as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if test "${ac_cv_prog_cc_c89+set}" = set; then : $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac if test "x$ac_cv_prog_cc_c89" != xno; then : fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 $as_echo_n "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if test "${ac_cv_prog_CPP+set}" = set; then : $as_echo_n "(cached) " >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 $as_echo "$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5 ; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 $as_echo_n "checking for grep that handles long lines and -e... " >&6; } if test "${ac_cv_path_GREP+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -z "$GREP"; then ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in grep ggrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_GREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_GREP"; then as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_GREP=$GREP fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 $as_echo "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 $as_echo_n "checking for egrep... " >&6; } if test "${ac_cv_path_EGREP+set}" = set; then : $as_echo_n "(cached) " >&6 else if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else if test -z "$EGREP"; then ac_path_EGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in egrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_EGREP"; then as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_EGREP=$EGREP fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 $as_echo "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if test "${ac_cv_header_stdc+set}" = set; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_stdc=yes else ac_cv_header_stdc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : : else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) return 2; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : else ac_cv_header_stdc=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then $as_echo "#define STDC_HEADERS 1" >>confdefs.h fi # On IRIX 5.3, sys/types and inttypes.h are conflicting. for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default " if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done ac_fn_c_check_header_mongrel "$LINENO" "minix/config.h" "ac_cv_header_minix_config_h" "$ac_includes_default" if test "x$ac_cv_header_minix_config_h" = x""yes; then : MINIX=yes else MINIX= fi if test "$MINIX" = yes; then $as_echo "#define _POSIX_SOURCE 1" >>confdefs.h $as_echo "#define _POSIX_1_SOURCE 2" >>confdefs.h $as_echo "#define _MINIX 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5 $as_echo_n "checking whether it is safe to define __EXTENSIONS__... " >&6; } if test "${ac_cv_safe_to_define___extensions__+set}" = set; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ # define __EXTENSIONS__ 1 $ac_includes_default int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_safe_to_define___extensions__=yes else ac_cv_safe_to_define___extensions__=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5 $as_echo "$ac_cv_safe_to_define___extensions__" >&6; } test $ac_cv_safe_to_define___extensions__ = yes && $as_echo "#define __EXTENSIONS__ 1" >>confdefs.h $as_echo "#define _ALL_SOURCE 1" >>confdefs.h $as_echo "#define _GNU_SOURCE 1" >>confdefs.h $as_echo "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h $as_echo "#define _TANDEM_SOURCE 1" >>confdefs.h # Extract the first word of "sed", so it can be a program name with args. set dummy sed; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_SED+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$SED"; then ac_cv_prog_SED="$SED" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_SED="sed" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_prog_SED" && ac_cv_prog_SED="no" fi fi SED=$ac_cv_prog_SED if test -n "$SED"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SED" >&5 $as_echo "$SED" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "$prefix" = NONE; then cat >>confdefs.h <<_ACEOF #define WEBCITDIR "$ac_default_prefix" _ACEOF ssl_dir="$ac_default_prefix/keys" else cat >>confdefs.h <<_ACEOF #define WEBCITDIR "$prefix" _ACEOF ssl_dir="$prefix/keys" fi # Check whether --with-ssl was given. if test "${with_ssl+set}" = set; then : withval=$with_ssl; if test "x$withval" != "xno" ; then tryssldir=$withval fi fi PTHREAD_DEFS=-D_REENTRANT case "$host" in alpha*-dec-osf*) test -z "$CC" && CC=cc LIBS=-pthread ;; *-*-freebsd*) LIBS=-pthread PTHREAD_DEFS=-D_THREAD_SAFE ;; *-*-solaris*) PTHREAD_DEFS='-D_REENTRANT -D_PTHREADS' ;; *-*-darwin*) LIBS=-lintl esac ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CC+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_CC+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CC+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CC+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CC+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_CC+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5 ; } # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } if test "${ac_cv_c_compiler_gnu+set}" = set; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 $as_echo "$ac_cv_c_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 $as_echo_n "checking whether $CC accepts -g... " >&6; } if test "${ac_cv_prog_cc_g+set}" = set; then : $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes else CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 $as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if test "${ac_cv_prog_cc_c89+set}" = set; then : $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac if test "x$ac_cv_prog_cc_c89" != xno; then : fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test "$GCC" = yes; then case "$host" in *-*-solaris*) CFLAGS="$CFLAGS -Wall -Wno-char-subscripts" ;; *) CFLAGS="$CFLAGS -Wall" ;; esac fi # missing_dir=`cd $ac_aux_dir && pwd` # AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir) if test "$LIBS" != -pthread; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_create in -lpthread" >&5 $as_echo_n "checking for pthread_create in -lpthread... " >&6; } if test "${ac_cv_lib_pthread_pthread_create+set}" = set; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lpthread $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char pthread_create (); int main () { return pthread_create (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_pthread_pthread_create=yes else ac_cv_lib_pthread_pthread_create=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthread_pthread_create" >&5 $as_echo "$ac_cv_lib_pthread_pthread_create" >&6; } if test "x$ac_cv_lib_pthread_pthread_create" = x""yes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBPTHREAD 1 _ACEOF LIBS="-lpthread $LIBS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_create in -lpthreads" >&5 $as_echo_n "checking for pthread_create in -lpthreads... " >&6; } if test "${ac_cv_lib_pthreads_pthread_create+set}" = set; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lpthreads $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char pthread_create (); int main () { return pthread_create (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_pthreads_pthread_create=yes else ac_cv_lib_pthreads_pthread_create=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthreads_pthread_create" >&5 $as_echo "$ac_cv_lib_pthreads_pthread_create" >&6; } if test "x$ac_cv_lib_pthreads_pthread_create" = x""yes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBPTHREADS 1 _ACEOF LIBS="-lpthreads $LIBS" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing gethostbyname" >&5 $as_echo_n "checking for library containing gethostbyname... " >&6; } if test "${ac_cv_search_gethostbyname+set}" = set; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char gethostbyname (); int main () { return gethostbyname (); ; return 0; } _ACEOF for ac_lib in '' nsl; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : ac_cv_search_gethostbyname=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if test "${ac_cv_search_gethostbyname+set}" = set; then : break fi done if test "${ac_cv_search_gethostbyname+set}" = set; then : else ac_cv_search_gethostbyname=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_gethostbyname" >&5 $as_echo "$ac_cv_search_gethostbyname" >&6; } ac_res=$ac_cv_search_gethostbyname if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing connect" >&5 $as_echo_n "checking for library containing connect... " >&6; } if test "${ac_cv_search_connect+set}" = set; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char connect (); int main () { return connect (); ; return 0; } _ACEOF for ac_lib in '' socket; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : ac_cv_search_connect=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if test "${ac_cv_search_connect+set}" = set; then : break fi done if test "${ac_cv_search_connect+set}" = set; then : else ac_cv_search_connect=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_connect" >&5 $as_echo "$ac_cv_search_connect" >&6; } ac_res=$ac_cv_search_connect if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if test "${ac_cv_header_stdc+set}" = set; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_stdc=yes else ac_cv_header_stdc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : : else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) return 2; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : else ac_cv_header_stdc=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then $as_echo "#define STDC_HEADERS 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for call semantics from getpwuid_r" >&5 $as_echo_n "checking for call semantics from getpwuid_r... " >&6; } if test "${ac_cv_call_getpwuid_r+set}" = set; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { struct passwd pw, *pwp; char pwbuf[64]; uid_t uid; getpwuid_r(uid, &pw, pwbuf, sizeof(pwbuf), &pwp); ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_call_getpwuid_r=yes else ac_cv_call_getpwuid_r=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_call_getpwuid_r" >&5 $as_echo "$ac_cv_call_getpwuid_r" >&6; } if test $ac_cv_call_getpwuid_r = no; then $as_echo "#define SOLARIS_GETPWUID /**/" >>confdefs.h $as_echo "#define SOLARIS_LOCALTIME_R /**/" >>confdefs.h $as_echo "#define F_UID_T \"%ld\"" >>confdefs.h $as_echo "#define F_PID_T \"%ld\"" >>confdefs.h $as_echo "#define F_XPID_T \"%lx\"" >>confdefs.h else $as_echo "#define F_UID_T \"%d\"" >>confdefs.h $as_echo "#define F_PID_T \"%d\"" >>confdefs.h $as_echo "#define F_XPID_T \"%x\"" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5 $as_echo_n "checking for an ANSI C-conforming const... " >&6; } if test "${ac_cv_c_const+set}" = set; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { /* FIXME: Include the comments suggested by Paul. */ #ifndef __cplusplus /* Ultrix mips cc rejects this. */ typedef int charset[2]; const charset cs; /* SunOS 4.1.1 cc rejects this. */ char const *const *pcpcc; char **ppc; /* NEC SVR4.0.2 mips cc rejects this. */ struct point {int x, y;}; static struct point const zero = {0,0}; /* AIX XL C 1.02.0.0 rejects this. It does not let you subtract one const X* pointer from another in an arm of an if-expression whose if-part is not a constant expression */ const char *g = "string"; pcpcc = &g + (g ? g-g : 0); /* HPUX 7.0 cc rejects these. */ ++pcpcc; ppc = (char**) pcpcc; pcpcc = (char const *const *) ppc; { /* SCO 3.2v4 cc rejects this. */ char *t; char const *s = 0 ? (char *) 0 : (char const *) 0; *t++ = 0; if (s) return 0; } { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ int x[] = {25, 17}; const int *foo = &x[0]; ++foo; } { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ typedef const int *iptr; iptr p = 0; ++p; } { /* AIX XL C 1.02.0.0 rejects this saying "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ struct s { int j; const int *ap[3]; }; struct s *b; b->j = 5; } { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ const int foo = 10; if (!foo) return 0; } return !cs[0] && !zero.x; #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_c_const=yes else ac_cv_c_const=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5 $as_echo "$ac_cv_c_const" >&6; } if test $ac_cv_c_const = no; then $as_echo "#define const /**/" >>confdefs.h fi ac_fn_c_check_type "$LINENO" "off_t" "ac_cv_type_off_t" "$ac_includes_default" if test "x$ac_cv_type_off_t" = x""yes; then : else cat >>confdefs.h <<_ACEOF #define off_t long int _ACEOF fi ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" if test "x$ac_cv_type_size_t" = x""yes; then : else cat >>confdefs.h <<_ACEOF #define size_t unsigned int _ACEOF fi # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. { $as_echo "$as_me:${as_lineno-$LINENO}: checking size of char" >&5 $as_echo_n "checking size of char... " >&6; } if test "${ac_cv_sizeof_char+set}" = set; then : $as_echo_n "(cached) " >&6 else if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (char))" "ac_cv_sizeof_char" "$ac_includes_default"; then : else if test "$ac_cv_type_char" = yes; then { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "cannot compute sizeof (char) See \`config.log' for more details" "$LINENO" 5 ; } else ac_cv_sizeof_char=0 fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_char" >&5 $as_echo "$ac_cv_sizeof_char" >&6; } cat >>confdefs.h <<_ACEOF #define SIZEOF_CHAR $ac_cv_sizeof_char _ACEOF # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. { $as_echo "$as_me:${as_lineno-$LINENO}: checking size of short" >&5 $as_echo_n "checking size of short... " >&6; } if test "${ac_cv_sizeof_short+set}" = set; then : $as_echo_n "(cached) " >&6 else if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (short))" "ac_cv_sizeof_short" "$ac_includes_default"; then : else if test "$ac_cv_type_short" = yes; then { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "cannot compute sizeof (short) See \`config.log' for more details" "$LINENO" 5 ; } else ac_cv_sizeof_short=0 fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_short" >&5 $as_echo "$ac_cv_sizeof_short" >&6; } cat >>confdefs.h <<_ACEOF #define SIZEOF_SHORT $ac_cv_sizeof_short _ACEOF # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. { $as_echo "$as_me:${as_lineno-$LINENO}: checking size of int" >&5 $as_echo_n "checking size of int... " >&6; } if test "${ac_cv_sizeof_int+set}" = set; then : $as_echo_n "(cached) " >&6 else if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (int))" "ac_cv_sizeof_int" "$ac_includes_default"; then : else if test "$ac_cv_type_int" = yes; then { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "cannot compute sizeof (int) See \`config.log' for more details" "$LINENO" 5 ; } else ac_cv_sizeof_int=0 fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_int" >&5 $as_echo "$ac_cv_sizeof_int" >&6; } cat >>confdefs.h <<_ACEOF #define SIZEOF_INT $ac_cv_sizeof_int _ACEOF # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. { $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long" >&5 $as_echo_n "checking size of long... " >&6; } if test "${ac_cv_sizeof_long+set}" = set; then : $as_echo_n "(cached) " >&6 else if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long))" "ac_cv_sizeof_long" "$ac_includes_default"; then : else if test "$ac_cv_type_long" = yes; then { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "cannot compute sizeof (long) See \`config.log' for more details" "$LINENO" 5 ; } else ac_cv_sizeof_long=0 fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long" >&5 $as_echo "$ac_cv_sizeof_long" >&6; } cat >>confdefs.h <<_ACEOF #define SIZEOF_LONG $ac_cv_sizeof_long _ACEOF # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. { $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long unsigned int" >&5 $as_echo_n "checking size of long unsigned int... " >&6; } if test "${ac_cv_sizeof_long_unsigned_int+set}" = set; then : $as_echo_n "(cached) " >&6 else if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long unsigned int))" "ac_cv_sizeof_long_unsigned_int" "$ac_includes_default"; then : else if test "$ac_cv_type_long_unsigned_int" = yes; then { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "cannot compute sizeof (long unsigned int) See \`config.log' for more details" "$LINENO" 5 ; } else ac_cv_sizeof_long_unsigned_int=0 fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long_unsigned_int" >&5 $as_echo "$ac_cv_sizeof_long_unsigned_int" >&6; } cat >>confdefs.h <<_ACEOF #define SIZEOF_LONG_UNSIGNED_INT $ac_cv_sizeof_long_unsigned_int _ACEOF # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. { $as_echo "$as_me:${as_lineno-$LINENO}: checking size of size_t" >&5 $as_echo_n "checking size of size_t... " >&6; } if test "${ac_cv_sizeof_size_t+set}" = set; then : $as_echo_n "(cached) " >&6 else if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (size_t))" "ac_cv_sizeof_size_t" "$ac_includes_default"; then : else if test "$ac_cv_type_size_t" = yes; then { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "cannot compute sizeof (size_t) See \`config.log' for more details" "$LINENO" 5 ; } else ac_cv_sizeof_size_t=0 fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_size_t" >&5 $as_echo "$ac_cv_sizeof_size_t" >&6; } cat >>confdefs.h <<_ACEOF #define SIZEOF_SIZE_T $ac_cv_sizeof_size_t _ACEOF { $as_echo "$as_me:${as_lineno-$LINENO}: checking return type of signal handlers" >&5 $as_echo_n "checking return type of signal handlers... " >&6; } if test "${ac_cv_type_signal+set}" = set; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { return *(signal (0, 0)) (0) == 1; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_type_signal=int else ac_cv_type_signal=void fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_signal" >&5 $as_echo "$ac_cv_type_signal" >&6; } cat >>confdefs.h <<_ACEOF #define RETSIGTYPE $ac_cv_type_signal _ACEOF ac_fn_c_check_func "$LINENO" "snprintf" "ac_cv_func_snprintf" if test "x$ac_cv_func_snprintf" = x""yes; then : $as_echo "#define HAVE_SNPRINTF 1" >>confdefs.h else case " $LIBOBJS " in *" snprintf.$ac_objext "* ) ;; *) LIBOBJS="$LIBOBJS snprintf.$ac_objext" ;; esac fi ac_fn_c_check_header_mongrel "$LINENO" "CUnit/CUnit.h" "ac_cv_header_CUnit_CUnit_h" "$ac_includes_default" if test "x$ac_cv_header_CUnit_CUnit_h" = x""yes; then : $as_echo "#define ENABLE_TESTS /**/" >>confdefs.h fi for ac_header in fcntl.h limits.h sys/time.h unistd.h iconv.h xlocale.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done saved_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $SERVER_LIBS" ac_fn_c_check_header_mongrel "$LINENO" "zlib.h" "ac_cv_header_zlib_h" "$ac_includes_default" if test "x$ac_cv_header_zlib_h" = x""yes; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for zlibVersion in -lz" >&5 $as_echo_n "checking for zlibVersion in -lz... " >&6; } if test "${ac_cv_lib_z_zlibVersion+set}" = set; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lz $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char zlibVersion (); int main () { return zlibVersion (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_z_zlibVersion=yes else ac_cv_lib_z_zlibVersion=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_z_zlibVersion" >&5 $as_echo "$ac_cv_lib_z_zlibVersion" >&6; } if test "x$ac_cv_lib_z_zlibVersion" = x""yes; then : LIBS="-lz $LIBS $SERVER_LIBS" else as_fn_error $? "zlib was not found or is not usable. Please install zlib." "$LINENO" 5 fi else as_fn_error $? "zlib.h was not found or is not usable. Please install zlib." "$LINENO" 5 fi CFLAGS="$saved_CFLAGS" # Check whether --enable-iconv was given. if test "${enable_iconv+set}" = set; then : enableval=$enable_iconv; ok_iconv=no else ok_iconv=yes fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking Checking to see if your system supports iconv" >&5 $as_echo_n "checking Checking to see if your system supports iconv... " >&6; } if test "$cross_compiling" = yes; then : { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run test program while cross compiling See \`config.log' for more details" "$LINENO" 5 ; } else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include main() { iconv_t ic = (iconv_t)(-1) ; ic = iconv_open("UTF-8", "us-ascii"); iconv_close(ic); exit(0); } _ACEOF if ac_fn_c_try_run "$LINENO"; then : ok_iconv=yes { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else ok_iconv=no { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi if test "$ok_iconv" = no; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking Checking for an external libiconv" >&5 $as_echo_n "checking Checking for an external libiconv... " >&6; } OLD_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS -liconv" if test "$cross_compiling" = yes; then : { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run test program while cross compiling See \`config.log' for more details" "$LINENO" 5 ; } else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include main() { iconv_t ic = (iconv_t)(-1) ; ic = iconv_open("UTF-8", "us-ascii"); iconv_close(ic); } _ACEOF if ac_fn_c_try_run "$LINENO"; then : ok_iconv=yes { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else ok_iconv=no LDFLAGS="$OLD_LDFLAGS" { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi if test "$ok_iconv" != "no"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: webcit will be built with character set conversion." >&5 $as_echo "webcit will be built with character set conversion." >&6; } $as_echo "#define HAVE_ICONV /**/" >>confdefs.h else { $as_echo "$as_me:${as_lineno-$LINENO}: result: webcit will be built without character set conversion." >&5 $as_echo "webcit will be built without character set conversion." >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libintl_bindtextdomain in -lintl" >&5 $as_echo_n "checking for libintl_bindtextdomain in -lintl... " >&6; } if test "${ac_cv_lib_intl_libintl_bindtextdomain+set}" = set; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lintl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char libintl_bindtextdomain (); int main () { return libintl_bindtextdomain (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_intl_libintl_bindtextdomain=yes else ac_cv_lib_intl_libintl_bindtextdomain=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_libintl_bindtextdomain" >&5 $as_echo "$ac_cv_lib_intl_libintl_bindtextdomain" >&6; } if test "x$ac_cv_lib_intl_libintl_bindtextdomain" = x""yes; then : LDFLAGS="$LDFLAGS -lintl" fi ac_fn_c_check_header_mongrel "$LINENO" "libical/ical.h" "ac_cv_header_libical_ical_h" "$ac_includes_default" if test "x$ac_cv_header_libical_ical_h" = x""yes; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for icaltimezone_set_tzid_prefix in -lical" >&5 $as_echo_n "checking for icaltimezone_set_tzid_prefix in -lical... " >&6; } if test "${ac_cv_lib_ical_icaltimezone_set_tzid_prefix+set}" = set; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lical $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char icaltimezone_set_tzid_prefix (); int main () { return icaltimezone_set_tzid_prefix (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_ical_icaltimezone_set_tzid_prefix=yes else ac_cv_lib_ical_icaltimezone_set_tzid_prefix=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ical_icaltimezone_set_tzid_prefix" >&5 $as_echo "$ac_cv_lib_ical_icaltimezone_set_tzid_prefix" >&6; } if test "x$ac_cv_lib_ical_icaltimezone_set_tzid_prefix" = x""yes; then : LIBS="-lical $LIBS" else as_fn_error $? "libical was not found and is required. More info: http://www.citadel.org/doku.php/installation:start" "$LINENO" 5 fi else as_fn_error $? "libical/ical.h was not found and is required. More info: http://www.citadel.org/doku.php/installation:start" "$LINENO" 5 fi ac_fn_c_check_header_mongrel "$LINENO" "libcitadel.h" "ac_cv_header_libcitadel_h" "$ac_includes_default" if test "x$ac_cv_header_libcitadel_h" = x""yes; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libcitadel_version_string in -lcitadel" >&5 $as_echo_n "checking for libcitadel_version_string in -lcitadel... " >&6; } if test "${ac_cv_lib_citadel_libcitadel_version_string+set}" = set; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lcitadel $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char libcitadel_version_string (); int main () { return libcitadel_version_string (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_citadel_libcitadel_version_string=yes else ac_cv_lib_citadel_libcitadel_version_string=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_citadel_libcitadel_version_string" >&5 $as_echo "$ac_cv_lib_citadel_libcitadel_version_string" >&6; } if test "x$ac_cv_lib_citadel_libcitadel_version_string" = x""yes; then : LIBS="-lcitadel $LIBS" SETUP_LIBS="-lcitadel $SETUP_LIBS" else as_fn_error $? "libcitadel was not found or is not usable. Please install libcitadel." "$LINENO" 5 fi else as_fn_error $? "libcitadel.h was not found or is not usable. Please install libcitadel." "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether your system likes memcpy + HKEY" >&5 $as_echo_n "checking whether your system likes memcpy + HKEY... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define _GNU_SOURCE #include #include #include #include #include #include #include #include #include #include "lib/libcitadel.h" int main () { char foo[22]; memcpy(foo, HKEY("foo")); ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else $as_echo "#define UNDEF_MEMCPY /**/" >>confdefs.h { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_fn_c_check_header_mongrel "$LINENO" "expat.h" "ac_cv_header_expat_h" "$ac_includes_default" if test "x$ac_cv_header_expat_h" = x""yes; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for XML_ParserCreateNS in -lexpat" >&5 $as_echo_n "checking for XML_ParserCreateNS in -lexpat... " >&6; } if test "${ac_cv_lib_expat_XML_ParserCreateNS+set}" = set; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lexpat $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char XML_ParserCreateNS (); int main () { return XML_ParserCreateNS (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_expat_XML_ParserCreateNS=yes else ac_cv_lib_expat_XML_ParserCreateNS=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_expat_XML_ParserCreateNS" >&5 $as_echo "$ac_cv_lib_expat_XML_ParserCreateNS" >&6; } if test "x$ac_cv_lib_expat_XML_ParserCreateNS" = x""yes; then : LIBS="-lexpat $LIBS" else as_fn_error $? "The Expat XML parser was not found and is required. More info: http://www.citadel.org/doku.php/installation:start" "$LINENO" 5 fi else as_fn_error $? "expat.h was not found and is required. More info: http://www.citadel.org/doku.php/installation:start" "$LINENO" 5 fi found_ssl=no # The big search for OpenSSL if test "$with_ssl" != "no"; then saved_LIBS="$LIBS" saved_LDFLAGS="$LDFLAGS" saved_CFLAGS="$CFLAGS" if test "x$prefix" != "xNONE"; then tryssldir="$tryssldir $prefix" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for OpenSSL" >&5 $as_echo_n "checking for OpenSSL... " >&6; } if test "${ac_cv_openssldir+set}" = set; then : $as_echo_n "(cached) " >&6 else for ssldir in $tryssldir "" /usr /usr/local/openssl /usr/lib/openssl /usr/local/ssl /usr/lib/ssl /usr/local /usr/pkg /opt /opt/openssl ; do CFLAGS="$saved_CFLAGS" LDFLAGS="$saved_LDFLAGS" LIBS="$saved_LIBS -lssl -lcrypto" # Skip directories if they don't exist if test ! -z "$ssldir" -a ! -d "$ssldir" ; then continue; fi if test ! -z "$ssldir" -a "x$ssldir" != "x/usr"; then # Try to use $ssldir/lib if it exists, otherwise # $ssldir if test -d "$ssldir/lib" ; then LDFLAGS="-L$ssldir/lib $saved_LDFLAGS" if test ! -z "$need_dash_r" ; then LDFLAGS="-R$ssldir/lib $LDFLAGS" fi else LDFLAGS="-L$ssldir $saved_LDFLAGS" if test ! -z "$need_dash_r" ; then LDFLAGS="-R$ssldir $LDFLAGS" fi fi # Try to use $ssldir/include if it exists, otherwise # $ssldir if test -d "$ssldir/include" ; then CFLAGS="-I$ssldir/include $saved_CFLAGS" else CFLAGS="-I$ssldir $saved_CFLAGS" fi fi # Basic test to check for compatible version and correct linking # *does not* test for RSA - that comes later. if test "$cross_compiling" = yes; then : { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run test program while cross compiling See \`config.log' for more details" "$LINENO" 5 ; } else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main(void) { char a[2048]; memset(a, 0, sizeof(a)); RAND_add(a, sizeof(a), sizeof(a)); return(RAND_status() <= 0); } _ACEOF if ac_fn_c_try_run "$LINENO"; then : found_crypto=1 break; fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi if test ! -z "$found_crypto" ; then break; fi done if test -z "$ssldir" ; then ssldir="(system)" fi if test ! -z "$found_crypto" ; then ac_cv_openssldir=$ssldir else ac_cv_openssldir="no" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_openssldir" >&5 $as_echo "$ac_cv_openssldir" >&6; } LIBS="$saved_LIBS" LDFLAGS="$saved_LDFLAGS" CFLAGS="$saved_CFLAGS" if test "x$ac_cv_openssldir" != "xno" ; then $as_echo "#define HAVE_OPENSSL /**/" >>confdefs.h found_ssl=yes LIBS="-lssl -lcrypto $LIBS" ssldir=$ac_cv_openssldir if test ! -z "$ssldir" -a "x$ssldir" != "x/usr" -a "x$ssldir" != "x(system)"; then # Try to use $ssldir/lib if it exists, otherwise # $ssldir if test -d "$ssldir/lib" ; then LDFLAGS="-L$ssldir/lib $saved_LDFLAGS" if test ! -z "$need_dash_r" ; then LDFLAGS="-R$ssldir/lib $LDFLAGS" fi else LDFLAGS="-L$ssldir $saved_LDFLAGS" if test ! -z "$need_dash_r" ; then LDFLAGS="-R$ssldir $LDFLAGS" fi fi # Try to use $ssldir/include if it exists, otherwise # $ssldir if test -d "$ssldir/include" ; then CFLAGS="-I$ssldir/include $saved_CFLAGS" else CFLAGS="-I$ssldir $saved_CFLAGS" fi fi fi fi # Check whether --with-ssldir was given. if test "${with_ssldir+set}" = set; then : withval=$with_ssldir; if test "x$withval" != "xno" ; then ssl_dir="$withval" if test "$found_ssl" = "no"; then echo "Your setup was incomplete; ssldir doesn't make sense without openssl" exit fi fi fi cat >>confdefs.h <<_ACEOF #define SSL_DIR "$ssl_dir" _ACEOF for ac_func in strftime_l uselocale gettext do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" if eval test \"x\$"$as_ac_var"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done if test "$ok_nls" != "no"; then # Extract the first word of "xgettext", so it can be a program name with args. set dummy xgettext; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ok_xgettext+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$ok_xgettext"; then ac_cv_prog_ok_xgettext="$ok_xgettext" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ok_xgettext="yes" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_prog_ok_xgettext" && ac_cv_prog_ok_xgettext="no" fi fi ok_xgettext=$ac_cv_prog_ok_xgettext if test -n "$ok_xgettext"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ok_xgettext" >&5 $as_echo "$ok_xgettext" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi ok_nls=$ok_xgettext fi if test "$ok_nls" != "no"; then # Extract the first word of "msgmerge", so it can be a program name with args. set dummy msgmerge; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ok_msgmerge+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$ok_msgmerge"; then ac_cv_prog_ok_msgmerge="$ok_msgmerge" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ok_msgmerge="yes" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_prog_ok_msgmerge" && ac_cv_prog_ok_msgmerge="no" fi fi ok_msgmerge=$ac_cv_prog_ok_msgmerge if test -n "$ok_msgmerge"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ok_msgmerge" >&5 $as_echo "$ok_msgmerge" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi ok_nls=$ok_msgmerge fi if test "$ok_nls" != "no"; then # Extract the first word of "msgfmt", so it can be a program name with args. set dummy msgfmt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ok_msgfmt+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$ok_msgfmt"; then ac_cv_prog_ok_msgfmt="$ok_msgfmt" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ok_msgfmt="yes" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_prog_ok_msgfmt" && ac_cv_prog_ok_msgfmt="no" fi fi ok_msgfmt=$ac_cv_prog_ok_msgfmt if test -n "$ok_msgfmt"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ok_msgfmt" >&5 $as_echo "$ok_msgfmt" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi ok_nls=$ok_msgfmt fi if test "$ok_nls" != "no"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: WebCit will be built with national language support." >&5 $as_echo "WebCit will be built with national language support." >&6; } $as_echo "#define ENABLE_NLS /**/" >>confdefs.h PROG_SUBDIRS="$PROG_SUBDIRS po/webcit/" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: WebCit will be built without national language support." >&5 $as_echo "WebCit will be built without national language support." >&6; } fi # Check whether --with-gprof was given. if test "${with_gprof+set}" = set; then : withval=$with_gprof; if test "x$withval" != "xno" ; then CFLAGS="$CFLAGS -pg " LDFLAGS="$LDFLAGS -pg " fi fi # Check whether --with-backtrace was given. if test "${with_backtrace+set}" = set; then : withval=$with_backtrace; if test "x$withval" != "xno" ; then CFLAGS="$CFLAGS -rdynamic " LDFLAGS="$LDFLAGS -rdynamic " for ac_func in backtrace do : ac_fn_c_check_func "$LINENO" "backtrace" "ac_cv_func_backtrace" if test "x$ac_cv_func_backtrace" = x""yes; then : cat >>confdefs.h <<_ACEOF #define HAVE_BACKTRACE 1 _ACEOF fi done fi fi if test "$prefix" = NONE; then datadir=$ac_default_prefix localedir=$ac_default_prefix wwwdir=$ac_default_prefix rundir=$ac_default_prefix editordir=$ac_default_prefix/tiny_mce else localedir=$prefix wwwdir=$prefix datadir=$prefix rundir=$prefix editordir=$prefix/tiny_mce fi # Check whether --with-localedir was given. if test "${with_localedir+set}" = set; then : withval=$with_localedir; if test "x$withval" != "xno" ; then localedir=$withval fi fi cat >>confdefs.h <<_ACEOF #define LOCALEDIR "$localedir" _ACEOF LOCALEDIR=$localedir # Check whether --with-wwwdir was given. if test "${with_wwwdir+set}" = set; then : withval=$with_wwwdir; if test "x$withval" != "xno" ; then wwwdir=$withval fi fi cat >>confdefs.h <<_ACEOF #define WWWDIR "$wwwdir" _ACEOF WWWDIR=$wwwdir # Check whether --with-rundir was given. if test "${with_rundir+set}" = set; then : withval=$with_rundir; if test "x$withval" != "xno" ; then $as_echo "#define HAVE_RUN_DIR /**/" >>confdefs.h rundir=$withval fi fi cat >>confdefs.h <<_ACEOF #define RUNDIR "$rundir" _ACEOF # Check whether --with-datadir was given. if test "${with_datadir+set}" = set; then : withval=$with_datadir; if test "x$withval" != "xno" ; then datadir=$withval fi fi cat >>confdefs.h <<_ACEOF #define DATADIR "$datadir" _ACEOF # Check whether --with-editordir was given. if test "${with_editordir+set}" = set; then : withval=$with_editordir; if test "x$withval" != "xno" ; then editordir=$withval fi fi cat >>confdefs.h <<_ACEOF #define EDITORDIR "$editordir" _ACEOF abs_srcdir="`cd $srcdir && pwd`" abs_builddir="`pwd`" if test "$abs_srcdir" != "$abs_builddir"; then CFLAGS="$CFLAGS -I $abs_builddir" fi ac_config_headers="$ac_config_headers sysdep.h" ac_config_files="$ac_config_files Makefile po/webcit/Makefile tests/Makefile" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then test "x$cache_file" != "x/dev/null" && { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} cat confcache >$cache_file else { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`$as_echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs : ${CONFIG_STATUS=./config.status} ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -p'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -p' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi if test -x / >/dev/null 2>&1; then as_test_x='test -x' else if ls -dL / >/dev/null 2>&1; then as_ls_L_option=L else as_ls_L_option= fi as_test_x=' eval sh -c '\'' if test -d "$1"; then test -d "$1/."; else case $1 in #( -*)set "./$1";; esac; case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( ???[sx]*):;;*)false;;esac;fi '\'' sh ' fi as_executable_p=$as_test_x # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by WebCit $as_me 8.24, which was generated by GNU Autoconf 2.67. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac case $ac_config_headers in *" "*) set x $ac_config_headers; shift; ac_config_headers=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Report bugs to ." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ WebCit config.status 8.24 configured by $0, generated by GNU Autoconf 2.67, with options \\"\$ac_cs_config\\" Copyright (C) 2010 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; --*=) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) $as_echo "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) $as_echo "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append CONFIG_HEADERS " '$ac_optarg'" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header as_fn_error $? "ambiguous option: \`$1' Try \`$0 --help' for more information.";; --help | --hel | -h ) $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error $? "unrecognized option: \`$1' Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX $as_echo "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "sysdep.h") CONFIG_HEADERS="$CONFIG_HEADERS sysdep.h" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "po/webcit/Makefile") CONFIG_FILES="$CONFIG_FILES po/webcit/Makefile" ;; "tests/Makefile") CONFIG_FILES="$CONFIG_FILES tests/Makefile" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5 ;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= trap 'exit_status=$? { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$tmp/subs1.awk" > "$tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" # Set up the scripts for CONFIG_HEADERS section. # No need to generate them if there are no CONFIG_HEADERS. # This happens for instance with `./config.status Makefile'. if test -n "$CONFIG_HEADERS"; then cat >"$tmp/defines.awk" <<\_ACAWK || BEGIN { _ACEOF # Transform confdefs.h into an awk script `defines.awk', embedded as # here-document in config.status, that substitutes the proper values into # config.h.in to produce config.h. # Create a delimiter string that does not exist in confdefs.h, to ease # handling of long lines. ac_delim='%!_!# ' for ac_last_try in false false :; do ac_t=`sed -n "/$ac_delim/p" confdefs.h` if test -z "$ac_t"; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done # For the awk script, D is an array of macro values keyed by name, # likewise P contains macro parameters if any. Preserve backslash # newline sequences. ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* sed -n ' s/.\{148\}/&'"$ac_delim"'/g t rset :rset s/^[ ]*#[ ]*define[ ][ ]*/ / t def d :def s/\\$// t bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3"/p s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p d :bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3\\\\\\n"\\/p t cont s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p t cont d :cont n s/.\{148\}/&'"$ac_delim"'/g t clear :clear s/\\$// t bsnlc s/["\\]/\\&/g; s/^/"/; s/$/"/p d :bsnlc s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p b cont ' >$CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 for (key in D) D_is_set[key] = 1 FS = "" } /^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { line = \$ 0 split(line, arg, " ") if (arg[1] == "#") { defundef = arg[2] mac1 = arg[3] } else { defundef = substr(arg[1], 2) mac1 = arg[2] } split(mac1, mac2, "(") #) macro = mac2[1] prefix = substr(line, 1, index(line, defundef) - 1) if (D_is_set[macro]) { # Preserve the white space surrounding the "#". print prefix "define", macro P[macro] D[macro] next } else { # Replace #undef with comments. This is necessary, for example, # in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. if (defundef == "undef") { print "/*", prefix defundef, macro, "*/" next } } } { print } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 fi # test -n "$CONFIG_HEADERS" eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS " shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5 ;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5 ;; esac case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 $as_echo "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`$as_echo "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$tmp/subs.awk" >$tmp/out \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } && { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$tmp/stdin" case $ac_file in -) cat "$tmp/out" && rm -f "$tmp/out";; *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; :H) # # CONFIG_HEADER # if test x"$ac_file" != x-; then { $as_echo "/* $configure_input */" \ && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" } >"$tmp/config.h" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 if diff "$ac_file" "$tmp/config.h" >/dev/null 2>&1; then { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 $as_echo "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" mv "$tmp/config.h" "$ac_file" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 fi else $as_echo "/* $configure_input */" \ && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" \ || as_fn_error $? "could not create -" "$LINENO" 5 fi ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi if test "$abs_srcdir" != "$abs_builddir"; then ln -s $abs_srcdir/static $abs_builddir ln -s $abs_srcdir/tiny_mce $abs_builddir ln -s $abs_srcdir/*.h $abs_builddir make mkdir-init else if test -d .svn; then ./mk_module_init.sh fi fi if test -n "$srcdir"; then export srcdir=. fi echo ------------------------------------------------------------------------ echo 'Character set conversion support:' $ok_iconv echo 'National language support: ' $ok_nls echo webcit-8.24-dfsg.orig/auth.c0000644000175000017500000005542412271477123015517 0ustar michaelmichael/* * These functions handle authentication of users to a Citadel server. * * Copyright (c) 1996-2012 by the citadel.org team * * This program is open source software: you can redistribute it and/or modify * it under the terms of the GNU General Public License, version 3. * * This program 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. */ #include "webcit.h" #include "webserver.h" #include extern uint32_t hashlittle( const void *key, size_t length, uint32_t initval); /* * Access level definitions. This is initialized from a function rather than a * static array so that the strings may be localized. */ char *axdefs[7]; void initialize_axdefs(void) { /* an erased user */ axdefs[0] = _("Deleted"); /* a new user */ axdefs[1] = _("New User"); /* a trouble maker */ axdefs[2] = _("Problem User"); /* user with normal privileges */ axdefs[3] = _("Local User"); /* a user that may access network resources */ axdefs[4] = _("Network User"); /* a moderator */ axdefs[5] = _("Preferred User"); /* chief */ axdefs[6] = _("Admin"); } /* * Display the login screen * mesg = the error message if last attempt failed. */ void display_login(void) { begin_burst(); output_headers(1, 0, 0, 0, 1, 0); do_template("login"); end_burst(); } /* Initialize the session * * This function needs to get called whenever the session changes from * not-logged-in to logged-in, either by an explicit login by the user or * by a timed-out session automatically re-establishing with a little help * from the browser cookie. Either way, we need to load access controls and * preferences from the server. * * user the username * pass his password * serv_response The parameters returned from a Citadel USER or NEWU command */ void become_logged_in(const StrBuf *user, const StrBuf *pass, StrBuf *serv_response) { wcsession *WCC = WC; StrBuf *Buf; StrBuf *FloorDiv; WCC->logged_in = 1; if (WCC->wc_fullname == NULL) WCC->wc_fullname = NewStrBufPlain(NULL, StrLength(serv_response)); StrBufExtract_token(WCC->wc_fullname, serv_response, 0, '|'); StrBufCutLeft(WCC->wc_fullname, 4 ); if (WCC->wc_username == NULL) WCC->wc_username = NewStrBufDup(user); else { FlushStrBuf(WCC->wc_username); StrBufAppendBuf(WCC->wc_username, user, 0); } if (WCC->wc_password == NULL) WCC->wc_password = NewStrBufDup(pass); else { FlushStrBuf(WCC->wc_password); StrBufAppendBuf(WCC->wc_password, pass, 0); } WCC->axlevel = StrBufExtract_int(serv_response, 1, '|'); if (WCC->axlevel >= 6) { WCC->is_aide = 1; } load_preferences(); Buf = NewStrBuf(); serv_puts("CHEK"); StrBuf_ServGetln(Buf); if (GetServerStatus(Buf, NULL) == 2) { const char *pch; pch = ChrPtr(Buf) + 4; /*WCC->new_mail =*/ StrBufExtractNext_long(Buf, &pch, '|'); WCC->need_regi = StrBufExtractNext_long(Buf, &pch, '|'); WCC->need_vali = StrBufExtractNext_long(Buf, &pch, '|'); if (WCC->cs_inet_email == NULL) WCC->cs_inet_email = NewStrBuf(); StrBufExtract_NextToken(WCC->cs_inet_email, Buf, &pch, '|'); } get_preference("floordiv_expanded", &FloorDiv); WCC->floordiv_expanded = FloorDiv; FreeStrBuf(&Buf); FlushRoomlist(); } /* * modal/ajax version of 'login' (username and password) */ void ajax_login_username_password(void) { StrBuf *Buf = NewStrBuf(); serv_printf("USER %s", bstr("name")); StrBuf_ServGetln(Buf); if (GetServerStatus(Buf, NULL) == 3) { serv_printf("PASS %s", bstr("pass")); StrBuf_ServGetln(Buf); if (GetServerStatus(Buf, NULL) == 2) { become_logged_in(sbstr("name"), sbstr("pass"), Buf); } } /* The client is expecting to read back a citadel protocol response */ wc_printf("%s", ChrPtr(Buf)); FreeStrBuf(&Buf); } /* * modal/ajax version of 'new user' (username and password) */ void ajax_login_newuser(void) { StrBuf *NBuf = NewStrBuf(); StrBuf *SBuf = NewStrBuf(); serv_printf("NEWU %s", bstr("name")); StrBuf_ServGetln(NBuf); if (GetServerStatus(NBuf, NULL) == 2) { become_logged_in(sbstr("name"), sbstr("pass"), NBuf); serv_printf("SETP %s", bstr("pass")); StrBuf_ServGetln(SBuf); } /* The client is expecting to read back a citadel protocol response */ wc_printf("%s", ChrPtr(NBuf)); FreeStrBuf(&NBuf); FreeStrBuf(&SBuf); } /* * Try to create an account manually after an OpenID was verified */ void openid_manual_create(void) { StrBuf *Buf; /* Did the user change his mind? Pack up and go home. */ if (havebstr("exit_action")) { begin_burst(); output_headers(1, 0, 0, 0, 1, 0); do_template("authpopup_finished"); end_burst(); return; } /* Ok, let's give this a try. Can we create the new user? */ Buf = NewStrBuf(); serv_printf("OIDC %s", bstr("name")); StrBuf_ServGetln(Buf); if (GetServerStatus(Buf, NULL) == 2) { StrBuf *gpass; gpass = NewStrBuf(); serv_puts("SETP GENERATE_RANDOM_PASSWORD"); StrBuf_ServGetln(gpass); StrBufCutLeft(gpass, 4); become_logged_in(sbstr("name"), gpass, Buf); FreeStrBuf(&gpass); } FreeStrBuf(&Buf); /* Did we manage to log in? If so, continue with the normal flow... */ if (WC->logged_in) { if (WC->logged_in) { begin_burst(); output_headers(1, 0, 0, 0, 1, 0); do_template("authpopup_finished"); end_burst(); } } else { /* Still no good! Go back to teh dialog to select a username */ const StrBuf *Buf; putbstr("__claimed_id", NewStrBufDup(sbstr("openid_url"))); Buf = sbstr("name"); if (StrLength(Buf) > 0) putbstr("__username", NewStrBufDup(Buf)); begin_burst(); output_headers(1, 0, 0, 0, 1, 0); wc_printf(""); do_template("openid_manual_create"); wc_printf(""); end_burst(); } } /* * Perform authentication using OpenID * assemble the checkid_setup request and then redirect to the user's identity provider */ void do_openid_login(void) { char buf[4096]; snprintf(buf, sizeof buf, "OIDS %s|%s/finalize_openid_login|%s", bstr("openid_url"), ChrPtr(site_prefix), ChrPtr(site_prefix) ); serv_puts(buf); serv_getln(buf, sizeof buf); if (buf[0] == '2') { syslog(LOG_DEBUG, "OpenID server contacted; redirecting to %s\n", &buf[4]); http_redirect(&buf[4]); return; } begin_burst(); output_headers(1, 0, 0, 0, 1, 0); wc_printf(""); escputs(&buf[4]); wc_printf(""); end_burst(); } /* * Complete the authentication using OpenID * This function handles the positive or negative assertion from the user's Identity Provider */ void finalize_openid_login(void) { StrBuf *Buf; wcsession *WCC = WC; int linecount = 0; StrBuf *result = NULL; StrBuf *username = NULL; StrBuf *password = NULL; StrBuf *logged_in_response = NULL; StrBuf *claimed_id = NULL; if (havebstr("openid.mode")) { if (!strcasecmp(bstr("openid.mode"), "id_res")) { Buf = NewStrBuf(); serv_puts("OIDF"); StrBuf_ServGetln(Buf); if (GetServerStatus(Buf, NULL) == 8) { urlcontent *u; void *U; long HKLen; const char *HKey; HashPos *Cursor; int len; Cursor = GetNewHashPos (WCC->Hdr->urlstrings, 0); while (GetNextHashPos(WCC->Hdr->urlstrings, Cursor, &HKLen, &HKey, &U)) { u = (urlcontent*) U; if (!strncasecmp(u->url_key, "openid.", 7)) { serv_printf("%s|%s", &u->url_key[7], ChrPtr(u->url_data)); } } serv_puts("000"); linecount = 0; while (len = StrBuf_ServGetln(Buf), ((len >= 0) && ((len != 3) || strcmp(ChrPtr(Buf), "000") ))) { if (linecount == 0) result = NewStrBufDup(Buf); if (!strcasecmp(ChrPtr(result), "authenticate")) { if (linecount == 1) { username = NewStrBufDup(Buf); } else if (linecount == 2) { password = NewStrBufDup(Buf); } else if (linecount == 3) { logged_in_response = NewStrBufDup(Buf); } } else if (!strcasecmp(ChrPtr(result), "verify_only")) { if (linecount == 1) { claimed_id = NewStrBufDup(Buf); } if (linecount == 2) { username = NewStrBufDup(Buf); } } ++linecount; } } FreeStrBuf(&Buf); } } /* * Is this an attempt to associate a new OpenID with an account that is already logged in? */ if ( (WCC->logged_in) && (havebstr("attach_existing")) ) { display_openids(); } /* If this operation logged us in, either by connecting with an existing account or by * auto-creating one using Simple Registration Extension, we're already on our way. */ else if (!strcasecmp(ChrPtr(result), "authenticate")) { become_logged_in(username, password, logged_in_response); /* Did we manage to log in? If so, continue with the normal flow... */ if (WC->logged_in) { begin_burst(); output_headers(1, 0, 0, 0, 1, 0); do_template("authpopup_finished"); end_burst(); } else { begin_burst(); output_headers(1, 0, 0, 0, 1, 0); wc_printf(""); wc_printf(_("An error has occurred.")); wc_printf(""); end_burst(); } } /* The specified OpenID was verified but the desired user name was either not specified via SRE * or conflicts with an existing user. Either way the user will need to specify a new name. */ else if (!strcasecmp(ChrPtr(result), "verify_only")) { putbstr("__claimed_id", claimed_id); claimed_id = NULL; if (StrLength(username) > 0) { putbstr("__username", username); username = NULL; } begin_burst(); output_headers(1, 0, 0, 0, 1, 0); wc_printf(""); do_template("openid_manual_create"); wc_printf(""); end_burst(); } /* Something went VERY wrong if we get to this point */ else { syslog(LOG_DEBUG, "finalize_openid_login() failed to do anything. This is a code problem.\n"); begin_burst(); output_headers(1, 0, 0, 0, 1, 0); wc_printf(""); wc_printf(_("An error has occurred.")); wc_printf(""); end_burst(); } FreeStrBuf(&result); FreeStrBuf(&username); FreeStrBuf(&password); FreeStrBuf(&claimed_id); FreeStrBuf(&logged_in_response); } /* * Display a welcome screen to the user. * * If this is the first time login, and the web based setup is enabled, * lead the user through the setup routines */ void do_welcome(void) { StrBuf *Buf; #ifdef XXX_NOT_FINISHED_YET_XXX FILE *fp; int i; /** * See if we have to run the first-time setup wizard */ if (WC->is_aide) { if (!setup_wizard) { int len; sprintf(wizard_filename, "setupwiz.%s.%s", abs(HashLittle(ctdlhost, strlen(ctdlhost))), abs(HashLittle(ctdlport, strlen(ctdlport))) ); fp = fopen(wizard_filename, "r"); if (fp != NULL) { fgets(buf, sizeof buf, fp); buf[strlen(buf)-1] = 0; fclose(fp); if (atoi(buf) == serv_info.serv_rev_level) { setup_wizard = 1; /* already run */ } } } if (!setup_wizard) { http_redirect("setup_wizard"); } } #endif /* * Go to the user's preferred start page */ if (!get_preference("startpage", &Buf)) { Buf = NewStrBuf (); StrBufPrintf(Buf, "dotskip?room=_BASEROOM_"); set_preference("startpage", Buf, 1); } if (ChrPtr(Buf)[0] == '/') { StrBufCutLeft(Buf, 1); } if (StrLength(Buf) == 0) { StrBufAppendBufPlain(Buf, "dotgoto?room=_BASEROOM_", -1, 0); } syslog(LOG_DEBUG, "Redirecting to user's start page: %s\n", ChrPtr(Buf)); http_redirect(ChrPtr(Buf)); } /* * Disconnect from the Citadel server, and end this WebCit session */ void end_webcit_session(void) { serv_puts("QUIT"); WC->killthis = 1; /* close() of citadel socket will be done by do_housekeeping() */ } /* * Log out the session with the Citadel server */ void do_logout(void) { wcsession *WCC = WC; char buf[SIZ]; FlushStrBuf(WCC->wc_username); FlushStrBuf(WCC->wc_password); FlushStrBuf(WCC->wc_fullname); FlushRoomlist(); serv_puts("LOUT"); serv_getln(buf, sizeof buf); WCC->logged_in = 0; FlushStrBuf(WCC->CurRoom.name); /* Calling output_headers() this way causes the cookies to be un-set */ output_headers(1, 1, 0, 1, 0, 0); do_template("logout"); if ((WCC->serv_info != NULL) && WCC->serv_info->serv_supports_guest) { display_default_landing_page(); return; } wDumpContent(2); end_webcit_session(); } /* * Special page for monitoring scripts etc */ void monitor(void) { output_headers(0, 0, 0, 0, 0, 0); hprintf("Content-type: text/plain\r\n" "Server: " PACKAGE_STRING "\r\n" "Connection: close\r\n" ); begin_burst(); wc_printf("Connection to Citadel server at %s:%s : %s\r\n", ctdlhost, ctdlport, (WC->connected ? "SUCCESS" : "FAIL") ); wDumpContent(0); } /* * validate new users */ void validate(void) { char cmd[SIZ]; char user[SIZ]; char buf[SIZ]; int a; output_headers(1, 1, 1, 0, 0, 0); do_template("box_begin_1"); StrBufAppendBufPlain(WC->WBuf, _("Validate new users"), -1, 0); do_template("box_begin_2"); /* If the user just submitted a validation, process it... */ safestrncpy(buf, bstr("user"), sizeof buf); if (!IsEmptyStr(buf)) { if (havebstr("axlevel")) { serv_printf("VALI %s|%s", buf, bstr("axlevel")); serv_getln(buf, sizeof buf); if (buf[0] != '2') { wc_printf("%s
    \n", &buf[4]); } } } /* Now see if any more users require validation. */ serv_puts("GNUR"); serv_getln(buf, sizeof buf); if (buf[0] == '2') { wc_printf(""); wc_printf(_("No users require validation at this time.")); wc_printf("
    \n"); wDumpContent(1); return; } if (buf[0] != '3') { wc_printf("%s
    \n", &buf[4]); wDumpContent(1); return; } wc_printf("
    \n"); wc_printf("
    "); safestrncpy(user, &buf[4], sizeof user); serv_printf("GREG %s", user); serv_getln(cmd, sizeof cmd); if (cmd[0] == '1') { a = 0; do { serv_getln(buf, sizeof buf); ++a; if (a == 1) wc_printf("#%s

    %s

    ", buf, &cmd[4]); if (a == 2) { char *pch; int haveChar = 0; int haveNum = 0; int haveOther = 0; int haveLong = 0; pch = buf; while (!IsEmptyStr(pch)) { if (isdigit(*pch)) haveNum = 1; else if (isalpha(*pch)) haveChar = 1; else haveOther = 1; pch ++; } if (pch - buf > 7) haveLong = 1; switch (haveLong + haveChar + haveNum + haveOther) { case 0: pch = _("very weak"); break; case 1: pch = _("weak"); break; case 2: pch = _("ok"); break; case 3: default: pch = _("strong"); } wc_printf("PW: %s
    \n", pch); } if (a == 3) wc_printf("%s
    \n", buf); if (a == 4) wc_printf("%s
    \n", buf); if (a == 5) wc_printf("%s, ", buf); if (a == 6) wc_printf("%s ", buf); if (a == 7) wc_printf("%s
    \n", buf); if (a == 8) wc_printf("%s
    \n", buf); if (a == 9) wc_printf(_("Current access level: %d (%s)\n"), atoi(buf), axdefs[atoi(buf)]); } while (strcmp(buf, "000")); } else { wc_printf("

    %s

    %s
    \n", user, &cmd[4]); } wc_printf("
    "); wc_printf(_("Select access level for this user:")); wc_printf("
    \n"); for (a = 0; a <= 6; ++a) { wc_printf("nonce); urlescputs(user); wc_printf("&axlevel=%d\">%s   \n", a, axdefs[a]); } wc_printf("
    \n"); wc_printf("
    \n"); wc_printf("
    \n"); do_template("box_end"); wDumpContent(1); } /* * Display form for registration. * * (Set during_login to 1 if this registration is being performed during * new user login and will require chaining to the proper screen.) */ void display_reg(int during_login) { folder Room; StrBuf *Buf; message_summary *VCMsg = NULL; wc_mime_attachment *VCAtt = NULL; long vcard_msgnum; Buf = NewStrBuf(); memset(&Room, 0, sizeof(folder)); if (goto_config_room(Buf, &Room) != 0) { syslog(LOG_WARNING, "display_reg() exiting because goto_config_room() failed\n"); if (during_login) { pop_destination(); } else { display_main_menu(); } FreeStrBuf(&Buf); FlushFolder(&Room); return; } FlushFolder(&Room); FreeStrBuf(&Buf); vcard_msgnum = locate_user_vcard_in_this_room(&VCMsg, &VCAtt); if (vcard_msgnum < 0L) { syslog(LOG_WARNING, "display_reg() exiting because locate_user_vcard_in_this_room() failed\n"); if (during_login) { pop_destination(); } else { display_main_menu(); } return; } if (during_login) { do_edit_vcard(vcard_msgnum, "1", VCMsg, VCAtt, "pop", USERCONFIGROOM); } else { StrBuf *ReturnTo; ReturnTo = NewStrBufPlain(HKEY("display_main_menu?go=")); StrBufAppendBuf(ReturnTo, WC->CurRoom.name, 0); do_edit_vcard(vcard_msgnum, "1", VCMsg, VCAtt, ChrPtr(ReturnTo), USERCONFIGROOM); FreeStrBuf(&ReturnTo); } } /* * change password * if passwords match, propagate it to citserver. */ void changepw(void) { StrBuf *Line; char newpass1[32], newpass2[32]; if (!havebstr("change_action")) { AppendImportantMessage(_("Cancelled. Password was not changed."), -1); display_main_menu(); return; } safestrncpy(newpass1, bstr("newpass1"), sizeof newpass1); safestrncpy(newpass2, bstr("newpass2"), sizeof newpass2); if (strcasecmp(newpass1, newpass2)) { AppendImportantMessage(_("They don't match. Password was not changed."), -1); do_template("menu_change_pw"); return; } if (IsEmptyStr(newpass1)) { AppendImportantMessage(_("Blank passwords are not allowed."), -1); do_template("menu_change_pw"); return; } Line = NewStrBuf(); serv_printf("SETP %s", newpass1); StrBuf_ServGetln(Line); if (GetServerStatusMsg(Line, NULL, 1, 0) == 2) { if (WC->wc_password == NULL) WC->wc_password = NewStrBufPlain( ChrPtr(Line) + 4, StrLength(Line) - 4); else { FlushStrBuf(WC->wc_password); StrBufAppendBufPlain(WC->wc_password, ChrPtr(Line) + 4, StrLength(Line) - 4, 0); } display_main_menu(); } else { do_template("menu_change_pw"); } FreeStrBuf(&Line); } int ConditionalHaveAccessCreateRoom(StrBuf *Target, WCTemplputParams *TP) { StrBuf *Buf; Buf = NewStrBuf(); serv_puts("CRE8 0"); StrBuf_ServGetln(Buf); if (GetServerStatus(Buf, NULL) == 2) { StrBufCutLeft(Buf, 4); AppendImportantMessage(SKEY(Buf)); FreeStrBuf(&Buf); return 0; } FreeStrBuf(&Buf); return 1; } int ConditionalAide(StrBuf *Target, WCTemplputParams *TP) { wcsession *WCC = WC; return (WCC != NULL) ? ((WCC->logged_in == 0)||(WC->is_aide == 0)) : 0; } int ConditionalIsLoggedIn(StrBuf *Target, WCTemplputParams *TP) { wcsession *WCC = WC; return (WCC != NULL) ? (WCC->logged_in == 0) : 0; } /* * toggle the session over to a different language */ void switch_language(void) { set_selected_language(bstr("lang")); pop_destination(); } void _display_reg(void) { display_reg(0); } void Header_HandleAuth(StrBuf *Line, ParsedHttpHdrs *hdr) { if (hdr->HR.got_auth == NO_AUTH) /* don't override cookie auth... */ { if (strncasecmp(ChrPtr(Line), "Basic", 5) == 0) { StrBufCutLeft(Line, 6); StrBufDecodeBase64(Line); hdr->HR.plainauth = Line; hdr->HR.got_auth = AUTH_BASIC; } else syslog(LOG_WARNING, "Authentication scheme not supported! [%s]\n", ChrPtr(Line)); } } void CheckAuthBasic(ParsedHttpHdrs *hdr) { /* todo: enable this if we can have other sessions than authenticated ones. if (hdr->DontNeedAuth) return; */ StrBufAppendBufPlain(hdr->HR.plainauth, HKEY(":"), 0); StrBufAppendBuf(hdr->HR.plainauth, hdr->HR.user_agent, 0); } void GetAuthBasic(ParsedHttpHdrs *hdr) { const char *Pos = NULL; if (hdr->c_username == NULL) hdr->c_username = NewStrBufPlain(HKEY(DEFAULT_HTTPAUTH_USER)); if (hdr->c_password == NULL) hdr->c_password = NewStrBufPlain(HKEY(DEFAULT_HTTPAUTH_PASS)); StrBufExtract_NextToken(hdr->c_username, hdr->HR.plainauth, &Pos, ':'); StrBufExtract_NextToken(hdr->c_password, hdr->HR.plainauth, &Pos, ':'); } void Header_HandleCookie(StrBuf *Line, ParsedHttpHdrs *hdr) { const char *pch; /* todo: enable this if we can have other sessions than authenticated ones. if (hdr->DontNeedAuth) return; */ pch = strstr(ChrPtr(Line), "webcit="); if (pch == NULL) { return; } hdr->HR.RawCookie = Line; StrBufCutLeft(hdr->HR.RawCookie, (pch - ChrPtr(hdr->HR.RawCookie)) + 7); StrBufDecodeHex(hdr->HR.RawCookie); cookie_to_stuff(Line, &hdr->HR.desired_session, hdr->c_username, hdr->c_password, hdr->c_roomname, hdr->c_language ); hdr->HR.got_auth = AUTH_COOKIE; } void HttpNewModule_AUTH (ParsedHttpHdrs *httpreq) { httpreq->c_username = NewStrBufPlain(HKEY(DEFAULT_HTTPAUTH_USER)); httpreq->c_password = NewStrBufPlain(HKEY(DEFAULT_HTTPAUTH_PASS)); httpreq->c_roomname = NewStrBuf(); httpreq->c_language = NewStrBuf(); } void HttpDetachModule_AUTH (ParsedHttpHdrs *httpreq) { FLUSHStrBuf(httpreq->c_username); FLUSHStrBuf(httpreq->c_password); FLUSHStrBuf(httpreq->c_roomname); FLUSHStrBuf(httpreq->c_language); } void HttpDestroyModule_AUTH (ParsedHttpHdrs *httpreq) { FreeStrBuf(&httpreq->c_username); FreeStrBuf(&httpreq->c_password); FreeStrBuf(&httpreq->c_roomname); FreeStrBuf(&httpreq->c_language); } void InitModule_AUTH (void) { initialize_axdefs(); RegisterHeaderHandler(HKEY("COOKIE"), Header_HandleCookie); RegisterHeaderHandler(HKEY("AUTHORIZATION"), Header_HandleAuth); /* no url pattern at all? Show login. */ WebcitAddUrlHandler(HKEY(""), "", 0, do_welcome, ANONYMOUS|COOKIEUNNEEDED); WebcitAddUrlHandler(HKEY("do_welcome"), "", 0, do_welcome, ANONYMOUS|COOKIEUNNEEDED); WebcitAddUrlHandler(HKEY("openid_login"), "", 0, do_openid_login, ANONYMOUS); WebcitAddUrlHandler(HKEY("finalize_openid_login"), "", 0, finalize_openid_login, ANONYMOUS); WebcitAddUrlHandler(HKEY("openid_manual_create"), "", 0, openid_manual_create, ANONYMOUS); WebcitAddUrlHandler(HKEY("validate"), "", 0, validate, 0); WebcitAddUrlHandler(HKEY("do_welcome"), "", 0, do_welcome, 0); WebcitAddUrlHandler(HKEY("display_reg"), "", 0, _display_reg, 0); WebcitAddUrlHandler(HKEY("changepw"), "", 0, changepw, 0); WebcitAddUrlHandler(HKEY("termquit"), "", 0, do_logout, 0); WebcitAddUrlHandler(HKEY("do_logout"), "", 0, do_logout, ANONYMOUS|COOKIEUNNEEDED|FORCE_SESSIONCLOSE); WebcitAddUrlHandler(HKEY("monitor"), "", 0, monitor, ANONYMOUS|COOKIEUNNEEDED|FORCE_SESSIONCLOSE); WebcitAddUrlHandler(HKEY("ajax_login_username_password"), "", 0, ajax_login_username_password, AJAX|ANONYMOUS); WebcitAddUrlHandler(HKEY("ajax_login_newuser"), "", 0, ajax_login_newuser, AJAX|ANONYMOUS); WebcitAddUrlHandler(HKEY("switch_language"), "", 0, switch_language, ANONYMOUS); RegisterConditional("COND:AIDE", 2, ConditionalAide, CTX_NONE); RegisterConditional("COND:LOGGEDIN", 2, ConditionalIsLoggedIn, CTX_NONE); RegisterConditional("COND:MAY_CREATE_ROOM", 2, ConditionalHaveAccessCreateRoom, CTX_NONE); return; } void SessionDestroyModule_AUTH (wcsession *sess) { FreeStrBuf(&sess->wc_username); FreeStrBuf(&sess->wc_fullname); FreeStrBuf(&sess->wc_password); FreeStrBuf(&sess->httpauth_pass); FreeStrBuf(&sess->cs_inet_email); } webcit-8.24-dfsg.orig/autom4te.cache/0000755000175000017500000000000012271477137017211 5ustar michaelmichaelwebcit-8.24-dfsg.orig/serv_func.c0000644000175000017500000004210212271477123016535 0ustar michaelmichael #include "webcit.h" #include "webserver.h" int is_uds = 0; char serv_sock_name[PATH_MAX] = ""; HashList *EmbeddableMimes = NULL; StrBuf *EmbeddableMimeStrs = NULL; void SetInlinMimeRenderers(void) { StrBuf *Buf; Buf = NewStrBuf(); /* Tell the server what kind of richtext we prefer */ serv_putbuf(EmbeddableMimeStrs); StrBuf_ServGetln(Buf); FreeStrBuf(&Buf); } void DeleteServInfo(ServInfo **FreeMe) { if (*FreeMe == NULL) return; FreeStrBuf(&(*FreeMe)->serv_nodename); FreeStrBuf(&(*FreeMe)->serv_humannode); FreeStrBuf(&(*FreeMe)->serv_fqdn); FreeStrBuf(&(*FreeMe)->serv_software); FreeStrBuf(&(*FreeMe)->serv_bbs_city); FreeStrBuf(&(*FreeMe)->serv_sysadm); FreeStrBuf(&(*FreeMe)->serv_default_cal_zone); FreeStrBuf(&(*FreeMe)->serv_svn_revision); free(*FreeMe); *FreeMe = NULL; } /* * get info about the server we've connected to * * browser_host the citadel we want to connect to * user_agent which browser uses our client? */ ServInfo *get_serv_info(StrBuf *browser_host, StrBuf *user_agent) { ServInfo *info; StrBuf *Buf; int a; int rc; Buf = NewStrBuf(); /* Tell the server what kind of client is connecting */ serv_printf("IDEN %d|%d|%d|%s|%s", DEVELOPER_ID, CLIENT_ID, CLIENT_VERSION, ChrPtr(user_agent), ChrPtr(browser_host) ); StrBuf_ServGetln(Buf); if (GetServerStatus(Buf, NULL) != 2) { syslog(LOG_WARNING, "get_serv_info(IDEN): unexpected answer [%s]\n", ChrPtr(Buf)); FreeStrBuf(&Buf); return NULL; } /* * Tell the server that when we save a calendar event, we * want invitations to be generated by the Citadel server * instead of by the client. */ serv_puts("ICAL sgi|1"); StrBuf_ServGetln(Buf); if (GetServerStatus(Buf, NULL) != 2) { syslog(LOG_WARNING, "get_serv_info(ICAL sgi|1): unexpected answer [%s]\n", ChrPtr(Buf)); FreeStrBuf(&Buf); return NULL; } /* Now ask the server to tell us a little bit about itself... */ serv_puts("INFO"); StrBuf_ServGetln(Buf); if (GetServerStatus(Buf, NULL) != 1) { syslog(LOG_WARNING, "get_serv_info(INFO sgi|1): unexpected answer [%s]\n", ChrPtr(Buf)); FreeStrBuf(&Buf); return NULL; } info = (ServInfo*)malloc(sizeof(ServInfo)); memset(info, 0, sizeof(ServInfo)); a = 0; while (rc = StrBuf_ServGetln(Buf), (rc >= 0) && ((rc != 3) || strcmp(ChrPtr(Buf), "000"))) { switch (a) { case 0: info->serv_pid = StrToi(Buf); WC->ctdl_pid = info->serv_pid; break; case 1: info->serv_nodename = NewStrBufDup(Buf); break; case 2: info->serv_humannode = NewStrBufDup(Buf); break; case 3: info->serv_fqdn = NewStrBufDup(Buf); break; case 4: info->serv_software = NewStrBufDup(Buf); break; case 5: info->serv_rev_level = StrToi(Buf); break; case 6: info->serv_bbs_city = NewStrBufDup(Buf); break; case 7: info->serv_sysadm = NewStrBufDup(Buf); break; case 14: info->serv_supports_ldap = StrToi(Buf); break; case 15: info->serv_newuser_disabled = StrToi(Buf); break; case 16: info->serv_default_cal_zone = NewStrBufDup(Buf); break; case 20: info->serv_supports_sieve = StrToi(Buf); break; case 21: info->serv_fulltext_enabled = StrToi(Buf); break; case 22: info->serv_svn_revision = NewStrBufDup(Buf); break; case 23: info->serv_supports_openid = StrToi(Buf); break; case 24: info->serv_supports_guest = StrToi(Buf); break; } ++a; } FreeStrBuf(&Buf); return info; } int GetConnected (void) { StrBuf *Buf; wcsession *WCC = WC; if (WCC->ReadBuf == NULL) WCC->ReadBuf = NewStrBufPlain(NULL, SIZ * 4); if (is_uds) /* unix domain socket */ WCC->serv_sock = uds_connectsock(serv_sock_name); else /* tcp socket */ WCC->serv_sock = tcp_connectsock(ctdlhost, ctdlport); if (WCC->serv_sock < 0) { WCC->connected = 0; FreeStrBuf(&WCC->ReadBuf); return 1; } else { long Status; int short_status; Buf = NewStrBuf(); WCC->connected = 1; StrBuf_ServGetln(Buf); /* get the server greeting */ short_status = GetServerStatus(Buf, &Status); FreeStrBuf(&Buf); /* Server isn't ready for us? */ if (short_status != 2) { if (Status == 571) { hprintf("HTTP/1.1 503 Service Unavailable\r\n"); hprintf("Content-type: text/plain; charset=utf-8\r\n"); wc_printf(_("This server is already serving its maximum number of users and cannot accept any additional logins at this time. Please try again later or contact your system administrator.")); } else { wc_printf("%ld %s\n", Status, _("Received unexpected answer from Citadel server; bailing out.") ); hprintf("HTTP/1.1 502 Bad Gateway\r\n"); hprintf("Content-type: text/plain; charset=utf-8\r\n"); } end_burst(); end_webcit_session(); return 1; } /* * From what host is our user connecting? Go with * the host at the other end of the HTTP socket, * unless we are following X-Forwarded-For: headers * and such a header has already turned up something. */ if ( (!follow_xff) || (StrLength(WCC->Hdr->HR.browser_host) == 0) ) { if (WCC->Hdr->HR.browser_host == NULL) { WCC->Hdr->HR.browser_host = NewStrBuf(); Put(WCC->Hdr->HTTPHeaders, HKEY("FreeMeWithTheOtherHeaders"), WCC->Hdr->HR.browser_host, HFreeStrBuf); } locate_host(WCC->Hdr->HR.browser_host, WCC->Hdr->http_sock); } if (WCC->serv_info == NULL) { WCC->serv_info = get_serv_info(WCC->Hdr->HR.browser_host, WCC->Hdr->HR.user_agent); } if (WCC->serv_info == NULL){ begin_burst(); wc_printf(_("Received unexpected answer from Citadel server; bailing out.")); hprintf("HTTP/1.1 502 Bad Gateway\r\n"); hprintf("Content-type: text/plain; charset=utf-8\r\n"); end_burst(); end_webcit_session(); return 1; } if (WCC->serv_info->serv_rev_level < MINIMUM_CIT_VERSION) { begin_burst(); wc_printf(_("You are connected to a Citadel " "server running Citadel %d.%02d. \n" "In order to run this version of WebCit " "you must also have Citadel %d.%02d or" " newer.\n\n\n"), WCC->serv_info->serv_rev_level / 100, WCC->serv_info->serv_rev_level % 100, MINIMUM_CIT_VERSION / 100, MINIMUM_CIT_VERSION % 100 ); hprintf("HTTP/1.1 200 OK\r\n"); hprintf("Content-type: text/plain; charset=utf-8\r\n"); end_burst(); end_webcit_session(); return 1; } SetInlinMimeRenderers(); } return 0; } void FmOut(StrBuf *Target, const char *align, const StrBuf *Source) { const char *ptr, *pte; const char *BufPtr = NULL; StrBuf *Line = NewStrBufPlain(NULL, SIZ); StrBuf *Line1 = NewStrBufPlain(NULL, SIZ); StrBuf *Line2 = NewStrBufPlain(NULL, SIZ); int bn = 0; int bq = 0; int i; long len; int intext = 0; StrBufAppendPrintf(Target, "
    \n", align); if (StrLength(Source) > 0) do { StrBufSipLine(Line, Source, &BufPtr); bq = 0; i = 0; ptr = ChrPtr(Line); len = StrLength(Line); pte = ptr + len; if ((intext == 1) && (isspace(*ptr))) { StrBufAppendBufPlain(Target, HKEY("
    "), 0); } intext = 1; if (isspace(*ptr)) while ((ptr < pte) && ((*ptr == '>') || isspace(*ptr))) { if (*ptr == '>') bq++; ptr ++; i++; } /* * Quoted text should be displayed in italics and in a * different colour. This code understands Citadel-style * " >" quotes and will convert to
    tags. */ if (i > 0) StrBufCutLeft(Line, i); for (i = bn; i < bq; i++) StrBufAppendBufPlain(Target, HKEY("
    "), 0); for (i = bq; i < bn; i++) StrBufAppendBufPlain(Target, HKEY("
    "), 0); bn = bq; if (StrLength(Line) == 0) continue; /* Activate embedded URL's */ UrlizeText(Line1, Line, Line2); StrEscAppend(Target, Line1, NULL, 0, 0); StrBufAppendBufPlain(Target, HKEY("\n"), 0); } while ((BufPtr != StrBufNOTNULL) && (BufPtr != NULL)); for (i = 0; i < bn; i++) { StrBufAppendBufPlain(Target, HKEY("
    "), 0); } StrBufAppendBufPlain(Target, HKEY("

    \n"), 0); FreeStrBuf(&Line); FreeStrBuf(&Line1); FreeStrBuf(&Line2); } /* * Transmit message text (in memory) to the server. */ void text_to_server(char *ptr) { char buf[256]; int ch, a, pos, len; pos = 0; buf[0] = 0; while (ptr[pos] != 0) { ch = ptr[pos++]; if (ch == 10) { len = strlen(buf); while ( (isspace(buf[len - 1])) && (buf[0] != '\0') && (buf[1] != '\0') ) buf[--len] = 0; serv_puts(buf); buf[0] = 0; if (ptr[pos] != 0) strcat(buf, " "); } else { a = strlen(buf); buf[a + 1] = 0; buf[a] = ch; if ((ch == 32) && (strlen(buf) > 200)) { buf[a] = 0; serv_puts(buf); buf[0] = 0; } if (strlen(buf) > 250) { serv_puts(buf); buf[0] = 0; } } } serv_puts(buf); } /* * Transmit message text (in memory) to the server, converting to Quoted-Printable encoding as we go. */ void text_to_server_qp(char *ptr) { unsigned char ch, buf[256]; int pos; int output_len = 0; pos = 0; buf[0] = 0; output_len = 0; while (ptr[pos] != 0) { ch = (unsigned char)(ptr[pos++]); if (ch == 13) { /* ignore carriage returns */ } else if (ch == 10) { /* hard line break */ if (output_len > 0) { if (isspace(buf[output_len-1])) { sprintf((char *)&buf[output_len-1], "=%02X", buf[output_len-1]); output_len += 2; } } buf[output_len++] = 0; serv_puts((char *)buf); output_len = 0; } else if (ch == 9) { buf[output_len++] = ch; } else if ( (ch >= 32) && (ch <= 60) ) { buf[output_len++] = ch; } else if ( (ch >= 62) && (ch <= 126) ) { buf[output_len++] = ch; } else { sprintf((char *)&buf[output_len], "=%02X", ch); output_len += 3; } if (output_len > 72) { /* soft line break */ if (isspace(buf[output_len-1])) { sprintf((char *)&buf[output_len-1], "=%02X", buf[output_len-1]); output_len += 2; } buf[output_len++] = '='; buf[output_len++] = 0; serv_puts((char *)buf); output_len = 0; } } /* end of data - transmit anything that's left */ if (output_len > 0) { if (isspace(buf[output_len-1])) { sprintf((char *)&buf[output_len-1], "=%02X", buf[output_len-1]); output_len += 2; } buf[output_len++] = 0; serv_puts((char *)buf); output_len = 0; } } /* * translate server message output to text (used for editing room info files and such) */ void server_to_text() { char buf[SIZ]; int count = 0; while (serv_getln(buf, sizeof buf), strcmp(buf, "000")) { if ((buf[0] == 32) && (count > 0)) { wc_printf("\n"); } wc_printf("%s", buf); ++count; } } /* * Read text from server, appending to a string buffer until the * usual 000 terminator is found. Caller is responsible for freeing * the returned pointer. */ int read_server_text(StrBuf *Buf, long *nLines) { wcsession *WCC = WC; StrBuf *ReadBuf; long nRead; long nTotal = 0; long nlines; nlines = 0; ReadBuf = NewStrBuf(); while ((WCC->serv_sock!=-1) && (nRead = StrBuf_ServGetln(ReadBuf), (nRead >= 0) && ((nRead != 3)||(strcmp(ChrPtr(ReadBuf), "000") != 0)))) { StrBufAppendBuf(Buf, ReadBuf, 0); StrBufAppendBufPlain(Buf, HKEY("\n"), 0); nTotal += nRead; nlines ++; } FreeStrBuf(&ReadBuf); *nLines = nlines; return nTotal; } int GetServerStatusMsg(StrBuf *Line, long* FullState, int PutImportantMessage, int MajorOK) { int rc; if (FullState != NULL) *FullState = StrTol(Line); rc = ChrPtr(Line)[0] - 48; if ((!PutImportantMessage) || (MajorOK == rc)|| (StrLength(Line) <= 4)) return rc; AppendImportantMessage(ChrPtr(Line) + 4, StrLength(Line) - 4); return rc; } void tmplput_serv_ip(StrBuf *Target, WCTemplputParams *TP) { StrBufAppendPrintf(Target, "%d", WC->ctdl_pid); } void tmplput_serv_admin(StrBuf *Target, WCTemplputParams *TP) { wcsession *WCC = WC; if (WCC->serv_info == NULL) return; StrBufAppendTemplate(Target, TP, WCC->serv_info->serv_sysadm, 0); } void tmplput_serv_nodename(StrBuf *Target, WCTemplputParams *TP) { wcsession *WCC = WC; if (WCC->serv_info == NULL) return; StrBufAppendTemplate(Target, TP, WCC->serv_info->serv_nodename, 0); } void tmplput_serv_humannode(StrBuf *Target, WCTemplputParams *TP) { wcsession *WCC = WC; if (WCC->serv_info == NULL) return; StrBufAppendTemplate(Target, TP, WCC->serv_info->serv_humannode, 0); } void tmplput_serv_fqdn(StrBuf *Target, WCTemplputParams *TP) { wcsession *WCC = WC; if (WCC->serv_info == NULL) return; StrBufAppendTemplate(Target, TP, WCC->serv_info->serv_fqdn, 0); } void tmplput_serv_software(StrBuf *Target, WCTemplputParams *TP) { wcsession *WCC = WC; if (WCC->serv_info == NULL) return; StrBufAppendTemplate(Target, TP, WCC->serv_info->serv_software, 0); } void tmplput_serv_rev_level(StrBuf *Target, WCTemplputParams *TP) { wcsession *WCC = WC; if (WCC->serv_info == NULL) return; StrBufAppendPrintf(Target, "%d.%02d", WCC->serv_info->serv_rev_level / 100, WCC->serv_info->serv_rev_level % 100); } int conditional_serv_newuser_disabled(StrBuf *Target, WCTemplputParams *TP) { wcsession *WCC = WC; if (WCC->serv_info == NULL) return 0; return WCC->serv_info->serv_newuser_disabled != 0; } int conditional_serv_supports_guest(StrBuf *Target, WCTemplputParams *TP) { wcsession *WCC = WC; if (WCC->serv_info == NULL) return 0; return WCC->serv_info->serv_supports_guest != 0; } int conditional_serv_supports_openid(StrBuf *Target, WCTemplputParams *TP) { wcsession *WCC = WC; if (WCC->serv_info == NULL) return 0; return WCC->serv_info->serv_supports_openid != 0; } int conditional_serv_fulltext_enabled(StrBuf *Target, WCTemplputParams *TP) { wcsession *WCC = WC; if (WCC->serv_info == NULL) return 0; return WCC->serv_info->serv_fulltext_enabled != 0; } int conditional_serv_ldap_enabled(StrBuf *Target, WCTemplputParams *TP) { wcsession *WCC = WC; if (WCC->serv_info == NULL) return 0; return WCC->serv_info->serv_supports_ldap != 0; } void tmplput_serv_bbs_city(StrBuf *Target, WCTemplputParams *TP) { wcsession *WCC = WC; if (WCC->serv_info == NULL) return; StrBufAppendTemplate(Target, TP, WC->serv_info->serv_bbs_city, 0); } void tmplput_mesg(StrBuf *Target, WCTemplputParams *TP) { int n = 0; int Done = 0; StrBuf *Line; StrBuf *Buf; Buf = NewStrBuf(); Line = NewStrBuf(); serv_printf("MESG %s", TP->Tokens->Params[0]->Start); StrBuf_ServGetln(Line); if (GetServerStatus(Line, NULL) == 1) { while (!Done && (StrBuf_ServGetln(Line)>=0)) { if ( (StrLength(Line)==3) && !strcmp(ChrPtr(Line), "000")) Done = 1; else { if (n > 0) StrBufAppendBufPlain(Buf, "\n", 1, 0); StrBufAppendBuf(Buf, Line, 0); } n++; } FlushStrBuf(Line); FmOut(Line, "center", Buf); StrBufAppendTemplate(Target, TP, Line, 1); } FreeStrBuf(&Buf); FreeStrBuf(&Line); } void RegisterEmbeddableMimeType(const char *MimeType, long MTLen, int Priority) { StrBuf *MT; MT = NewStrBufPlain(MimeType, MTLen); Put(EmbeddableMimes, IKEY(Priority), MT, HFreeStrBuf); } void CreateMimeStr(void) { HashPos *it; void *vMime; long len = 0; const char *Key; it = GetNewHashPos(EmbeddableMimes, 0); while (GetNextHashPos(EmbeddableMimes, it, &len, &Key, &vMime) && (vMime != NULL)) { if (StrLength(EmbeddableMimeStrs) > 0) StrBufAppendBufPlain(EmbeddableMimeStrs, HKEY("|"), 0); else StrBufAppendBufPlain(EmbeddableMimeStrs, HKEY("MSGP "), 0); StrBufAppendBuf(EmbeddableMimeStrs, (StrBuf*) vMime, 0); } DeleteHashPos(&it); } void ServerStartModule_SERV_FUNC (void) { EmbeddableMimes = NewHash(1, Flathash); EmbeddableMimeStrs = NewStrBuf(); } void ServerShutdownModule_SERV_FUNC (void) { FreeStrBuf(&EmbeddableMimeStrs); DeleteHash(&EmbeddableMimes); } void InitModule_SERVFUNC (void) { is_uds = strcasecmp(ctdlhost, "uds") == 0; if (is_uds) snprintf(serv_sock_name, PATH_MAX, "%s/citadel.socket", ctdlport); RegisterConditional("COND:SERV:OPENID", 2, conditional_serv_supports_openid, CTX_NONE); RegisterConditional("COND:SERV:NEWU", 2, conditional_serv_newuser_disabled, CTX_NONE); RegisterConditional("COND:SERV:FULLTEXT_ENABLED", 2, conditional_serv_fulltext_enabled, CTX_NONE); RegisterConditional("COND:SERV:LDAP_ENABLED", 2, conditional_serv_ldap_enabled, CTX_NONE); RegisterConditional("COND:SERV:SUPPORTS_GUEST", 2, conditional_serv_supports_guest, CTX_NONE); RegisterNamespace("SERV:PID", 0, 0, tmplput_serv_ip, NULL, CTX_NONE); RegisterNamespace("SERV:NODENAME", 0, 1, tmplput_serv_nodename, NULL, CTX_NONE); RegisterNamespace("SERV:HUMANNODE", 0, 1, tmplput_serv_humannode, NULL, CTX_NONE); RegisterNamespace("SERV:FQDN", 0, 1, tmplput_serv_fqdn, NULL, CTX_NONE); RegisterNamespace("SERV:SOFTWARE", 0, 1, tmplput_serv_software, NULL, CTX_NONE); RegisterNamespace("SERV:REV_LEVEL", 0, 0, tmplput_serv_rev_level, NULL, CTX_NONE); RegisterNamespace("SERV:BBS_CITY", 0, 1, tmplput_serv_bbs_city, NULL, CTX_NONE); RegisterNamespace("SERV:MESG", 1, 2, tmplput_mesg, NULL, CTX_NONE); RegisterNamespace("SERV:ADMIN", 0, 1, tmplput_serv_admin, NULL, CTX_NONE); } void SessionDestroyModule_SERVFUNC (wcsession *sess) { DeleteServInfo(&sess->serv_info); } webcit-8.24-dfsg.orig/calendar.h0000644000175000017500000000565012271477123016330 0ustar michaelmichael/* * Copyright (c) 1996-2013 by the citadel.org team * * This program is open source software. You can redistribute it and/or * modify it under the terms of the GNU General Public License, version 3. * * This program 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. */ #ifndef __CALENDAR_H__ #define __CALENDAR_H__ /* * calview contains data passed back and forth between the message fetching loop * and the calendar view renderer. */ enum { calview_month, calview_day, calview_week, calview_brief, calview_summary }; typedef struct _calview { int view; int year; int month; int day; time_t lower_bound; time_t upper_bound; }calview; typedef void (*IcalCallbackFunc)(icalcomponent *, long, char*, int, calview *); void display_individual_cal(icalcomponent *cal, long msgnum, char *from, int unread, calview *calv); void load_ical_object(long msgnum, int unread, icalcomponent_kind which_kind, IcalCallbackFunc CallBack, calview *calv, int RenderAsync ); int calendar_LoadMsgFromServer(SharedMessageStatus *Stat, void **ViewSpecific, message_summary* Msg, int is_new, int i); int calendar_RenderView_or_Tail(SharedMessageStatus *Stat, void **ViewSpecific, long oper); int calendar_GetParamsGetServerCall(SharedMessageStatus *Stat, void **ViewSpecific, long oper, char *cmd, long len, char *filter, long flen); int calendar_Cleanup(void **ViewSpecific); int __calendar_Cleanup(void **ViewSpecific); void render_calendar_view(calview *c); void display_edit_individual_event(icalcomponent *supplied_vtodo, long msgnum, char *from, int unread, calview *calv); void save_individual_event(icalcomponent *supplied_vtodo, long msgnum, char *from, int unread, calview *calv); void ical_dezonify(icalcomponent *cal); int tasks_LoadMsgFromServer(SharedMessageStatus *Stat, void **ViewSpecific, message_summary* Msg, int is_new, int i); void display_edit_task(void); void display_edit_event(void); icaltimezone *get_default_icaltimezone(void); void display_icaltimetype_as_webform(struct icaltimetype *, char *, int); void icaltime_from_webform(struct icaltimetype *result, char *prefix); void icaltime_from_webform_dateonly(struct icaltimetype *result, char *prefix); void partstat_as_string(char *buf, icalproperty *attendee); icalcomponent *ical_encapsulate_subcomponent(icalcomponent *subcomp); void check_attendee_availability(icalcomponent *supplied_vevent); int ical_ctdl_is_overlap( struct icaltimetype t1start, struct icaltimetype t1end, struct icaltimetype t2start, struct icaltimetype t2end ); #endif webcit-8.24-dfsg.orig/Make_sources0000644000175000017500000000027112271477140016742 0ustar michaelmichael# # Make_sources # This file is to be included by Makefile to dynamically add modules to the build process # THIS FILE WAS AUTO GENERATED BY mk_modules_init.sh DO NOT EDIT THIS FILE # webcit-8.24-dfsg.orig/preferences.c0000644000175000017500000007132312271477123017053 0ustar michaelmichael/* * Manage user preferences with a little help from the Citadel server. * * Copyright (c) 1996-2012 by the citadel.org team * * This program is open source software. You can redistribute it and/or * modify it under the terms of the GNU General Public License, version 3. * * This program 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. */ #include "webcit.h" #include "webserver.h" #include "dav.h" HashList *PreferenceHooks; extern HashList *HandlerHash; typedef struct _PrefDef { ePrefType eType; StrBuf *Setting; const char *PrefStr; PrefEvalFunc OnLoad; StrBuf *OnLoadName; } PrefDef; typedef struct _Preference { PrefDef *Type; ePrefType eFlatPrefType; StrBuf *Key; StrBuf *Val; long lval; long decoded; StrBuf *DeQPed; } Preference; void DestroyPrefDef(void *vPrefDef) { PrefDef *Prefdef = (PrefDef*) vPrefDef; FreeStrBuf(&Prefdef->Setting); FreeStrBuf(&Prefdef->OnLoadName); free(Prefdef); } void DestroyPreference(void *vPref) { Preference *Pref = (Preference*) vPref; FreeStrBuf(&Pref->Key); FreeStrBuf(&Pref->Val); FreeStrBuf(&Pref->DeQPed); free(Pref); } void _RegisterPreference(const char *Setting, long SettingLen, const char *PrefStr, ePrefType Type, PrefEvalFunc OnLoad, const char *OnLoadName) { PrefDef *Newpref = (PrefDef*) malloc(sizeof(PrefDef)); Newpref->Setting = NewStrBufPlain(Setting, SettingLen); Newpref->PrefStr = PrefStr; Newpref->eType = Type; Newpref->OnLoad = OnLoad; if (Newpref->OnLoad != NULL) { Newpref->OnLoadName = NewStrBufPlain(OnLoadName, -1); } else Newpref->OnLoadName = NULL; Put(PreferenceHooks, Setting, SettingLen, Newpref, DestroyPrefDef); } const char *PrefGetLocalStr(const char *Setting, long len) { void *hash_value; if (GetHash(PreferenceHooks, Setting, len, &hash_value) != 0) { PrefDef *Newpref = (PrefDef*) hash_value; return _(Newpref->PrefStr); } return ""; } #ifdef DBG_PREFS_HASH inline const char *PrintPref(void *vPref) { Preference *Pref = (Preference*) vPref; if (Pref->DeQPed != NULL) return ChrPtr(Pref->DeQPed); else return ChrPtr(Pref->Val); } #endif void GetPrefTypes(HashList *List) { HashPos *It; long len; const char *Key; void *vSetting; void *vPrefDef; Preference *Pref; PrefDef *PrefType; It = GetNewHashPos(List, 0); while (GetNextHashPos(List, It, &len, &Key, &vSetting)) { Pref = (Preference*) vSetting; if (GetHash(PreferenceHooks, SKEY(Pref->Key), &vPrefDef) && (vPrefDef != NULL)) { PrefType = (PrefDef*) vPrefDef; Pref->Type = PrefType; Pref->eFlatPrefType = Pref->Type->eType; syslog(LOG_DEBUG, "Loading [%s]with type [%d] [\"%s\"]\n", ChrPtr(Pref->Key), Pref->Type->eType, ChrPtr(Pref->Val)); switch (Pref->Type->eType) { case PRF_UNSET: /* WHUT? */ break; case PRF_STRING: break; case PRF_INT: Pref->lval = StrTol(Pref->Val); Pref->decoded = 1; break; case PRF_QP_STRING: Pref->DeQPed = NewStrBufPlain(NULL, StrLength(Pref->Val)); StrBufEUid_unescapize(Pref->DeQPed, Pref->Val); Pref->decoded = 1; break; case PRF_YESNO: Pref->lval = strcmp(ChrPtr(Pref->Val), "yes") == 0; Pref->decoded = 1; break; } if (PrefType->OnLoad != NULL){ syslog(LOG_DEBUG, "Loading with: -> %s(\"%s\", %ld)\n", ChrPtr(PrefType->OnLoadName), ChrPtr(Pref->Val), Pref->lval); PrefType->OnLoad(Pref->Val, Pref->lval); } } } DeleteHashPos(&It); } void ParsePref(HashList **List, StrBuf *ReadBuf) { int Done = 0; Preference *Data = NULL; Preference *LastData = NULL; while (!Done) { if (StrBuf_ServGetln(ReadBuf) < 0) break; if ( (StrLength(ReadBuf)==3) && !strcmp(ChrPtr(ReadBuf), "000")) { Done = 1; break; } if ((ChrPtr(ReadBuf)[0] == ' ') && (LastData != NULL)) { StrBufAppendBuf(LastData->Val, ReadBuf, 1); } else { LastData = Data = malloc(sizeof(Preference)); memset(Data, 0, sizeof(Preference)); Data->Key = NewStrBuf(); Data->Val = NewStrBuf(); StrBufExtract_token(Data->Key, ReadBuf, 0, '|'); StrBufExtract_token(Data->Val, ReadBuf, 1, '|'); /***************** BEGIN VILE SLEAZY HACK ************************/ /* some users might still have this start page configured, which now breaks */ if ( (!strcasecmp(ChrPtr(Data->Key), "startpage")) && (!strcasecmp(ChrPtr(Data->Val), "/do_template?template=summary_page")) ) { FreeStrBuf(&Data->Val); Data->Val = NewStrBufPlain(HKEY("/summary")); } /******************* END VILE SLEAZY HACK ************************/ if (!IsEmptyStr(ChrPtr(Data->Key))) { Put(*List, SKEY(Data->Key), Data, DestroyPreference); } else { StrBufTrim(ReadBuf); syslog(LOG_INFO, "ignoring spurious preference line: [%s]\n", ChrPtr(ReadBuf)); DestroyPreference(Data); LastData = NULL; } Data = NULL; } } GetPrefTypes(*List); } /* * display preferences dialog */ void load_preferences(void) { folder Room; wcsession *WCC = WC; int Done = 0; StrBuf *ReadBuf; long msgnum = 0L; memset(&Room, 0, sizeof(folder)); ReadBuf = NewStrBufPlain(NULL, SIZ * 4); if (goto_config_room(ReadBuf, &Room) != 0) { FreeStrBuf(&ReadBuf); FlushFolder(&Room); return; /* oh well. */ } serv_puts("MSGS ALL|0|1"); StrBuf_ServGetln(ReadBuf); if (GetServerStatus(ReadBuf, NULL) == 8) { serv_puts("subj|__ WebCit Preferences __"); serv_puts("000"); } while (!Done && (StrBuf_ServGetln(ReadBuf) >= 0)) { if ( (StrLength(ReadBuf)==3) && !strcmp(ChrPtr(ReadBuf), "000")) { Done = 1; break; } msgnum = StrTol(ReadBuf); } if (msgnum > 0L) { serv_printf("MSG0 %ld", msgnum); StrBuf_ServGetln(ReadBuf); if (GetServerStatus(ReadBuf, NULL) == 1) { while ( (StrBuf_ServGetln(ReadBuf) >= 0) && (strcmp(ChrPtr(ReadBuf), "text") && strcmp(ChrPtr(ReadBuf), "000")) ) { /* flush */ } if (!strcmp(ChrPtr(ReadBuf), "text")) { ParsePref(&WCC->hash_prefs, ReadBuf); } } } /* Go back to the room we're supposed to be in */ if (StrLength(WCC->CurRoom.name) > 0) { serv_printf("GOTO %s", ChrPtr(WCC->CurRoom.name)); StrBuf_ServGetln(ReadBuf); GetServerStatus(ReadBuf, NULL); } FreeStrBuf(&ReadBuf); FlushFolder(&Room); } /* * Go to the user's configuration room, creating it if necessary. * returns 0 on success or nonzero upon failure. */ int goto_config_room(StrBuf *Buf, folder *Room) { serv_printf("GOTO %s", USERCONFIGROOM); StrBuf_ServGetln(Buf); if (GetServerStatus(Buf, NULL) != 2) { /* try to create the config room if not there */ serv_printf("CRE8 1|%s|4|0", USERCONFIGROOM); StrBuf_ServGetln(Buf); GetServerStatus(Buf, NULL); serv_printf("GOTO %s", USERCONFIGROOM); StrBuf_ServGetln(Buf); if (GetServerStatus(Buf, NULL) != 2) { return(1); } } ParseGoto(Room, Buf); return(0); } void WritePrefsToServer(HashList *Hash) { wcsession *WCC = WC; long len; HashPos *HashPos; void *vPref; const char *Key; Preference *Pref; StrBuf *SubBuf = NULL; Hash = WCC->hash_prefs; #ifdef DBG_PREFS_HASH dbg_PrintHash(Hash, PrintPref, NULL); #endif HashPos = GetNewHashPos(Hash, 0); while (GetNextHashPos(Hash, HashPos, &len, &Key, &vPref)!=0) { size_t nchars; if (vPref == NULL) continue; Pref = (Preference*) vPref; nchars = StrLength(Pref->Val); if (nchars > 80){ int n = 0; size_t offset, nchars; if (SubBuf == NULL) SubBuf = NewStrBufPlain(NULL, SIZ); nchars = 1; offset = 0; while (nchars > 0) { if (n == 0) nchars = 70; else nchars = 80; nchars = StrBufSub(SubBuf, Pref->Val, offset, nchars); if (n == 0) { serv_printf("%s|%s", ChrPtr(Pref->Key), ChrPtr(SubBuf)); } else { serv_printf(" %s", ChrPtr(SubBuf)); } offset += nchars; nchars = StrLength(Pref->Val) - offset; n++; } } else { serv_printf("%s|%s", ChrPtr(Pref->Key), ChrPtr(Pref->Val)); } } FreeStrBuf(&SubBuf); DeleteHashPos(&HashPos); } /* * save the modifications */ void save_preferences(void) { folder Room; wcsession *WCC = WC; int Done = 0; StrBuf *ReadBuf; long msgnum = 0L; ReadBuf = NewStrBuf(); memset(&Room, 0, sizeof(folder)); if (goto_config_room(ReadBuf, &Room) != 0) { FreeStrBuf(&ReadBuf); FlushFolder(&Room); return; /* oh well. */ } /* make shure the config room has the right type, else it might reject our config */ if (Room.view != VIEW_BBS) { serv_printf("VIEW %d", VIEW_BBS); StrBuf_ServGetln(ReadBuf); if (GetServerStatus(ReadBuf, NULL) != 2) { /* UPS? */ } else if (goto_config_room(ReadBuf, &Room) != 0) { FreeStrBuf(&ReadBuf); FlushFolder(&Room); return; /* oh well. */ } } serv_puts("MSGS ALL|0|1"); StrBuf_ServGetln(ReadBuf); if (GetServerStatus(ReadBuf, NULL) == 8) { serv_puts("subj|__ WebCit Preferences __"); serv_puts("000"); } while (!Done && (StrBuf_ServGetln(ReadBuf) >= 0)) { if ( (StrLength(ReadBuf)==3) && !strcmp(ChrPtr(ReadBuf), "000")) { Done = 1; break; } msgnum = StrTol(ReadBuf); } if (msgnum > 0L) { serv_printf("DELE %ld", msgnum); StrBuf_ServGetln(ReadBuf); GetServerStatus(ReadBuf, NULL); } serv_printf("ENT0 1||0|1|__ WebCit Preferences __|"); StrBuf_ServGetln(ReadBuf); if (GetServerStatus(ReadBuf, NULL) == 4) { WritePrefsToServer(WCC->hash_prefs); serv_puts(""); serv_puts("000"); } /** Go back to the room we're supposed to be in */ if (StrLength(WCC->CurRoom.name) > 0) { serv_printf("GOTO %s", ChrPtr(WCC->CurRoom.name)); StrBuf_ServGetln(ReadBuf); GetServerStatus(ReadBuf, NULL); } FreeStrBuf(&ReadBuf); FlushFolder(&Room); } /* * query the actual setting of key in the citadel database * * key config key to query * keylen length of the key string * value StrBuf-value to the key to get * returns: found? */ int get_pref_backend(const char *key, size_t keylen, Preference **Pref) { void *hash_value = NULL; #ifdef DBG_PREFS_HASH dbg_PrintHash(WC->hash_prefs, PrintPref, NULL); #endif if (GetHash(WC->hash_prefs, key, keylen, &hash_value) == 0) { *Pref = NULL; return 0; } else { *Pref = (Preference*) hash_value; return 1; } } int get_PREFERENCE(const char *key, size_t keylen, StrBuf **value) { Preference *Pref; int Ret; Ret = get_pref_backend(key, keylen, &Pref); if (Ret != 0) *value = Pref->Val; else *value = NULL; return Ret; } /* * Write a key into the webcit preferences database for this user * * key key whichs value is to be modified * keylen length of the key string * value value to set * save_to_server 1 = flush all data to the server, 0 = cache it for now */ long compare_preference(const Preference *PrefA, const Preference *PrefB) { ePrefType TypeA, TypeB; if (PrefA->Type != NULL) { TypeA = PrefA->Type->eType; } else { TypeA = PrefA->eFlatPrefType; } if (PrefB->Type != NULL) { TypeB = PrefB->Type->eType; } else { TypeB = PrefB->eFlatPrefType; } if ( (TypeA != PRF_UNSET) && (TypeB != PRF_UNSET) && (TypeA != TypeB) ) { if (TypeA > TypeB) { return 1; } else { /* (PrefA->Type < PrefB->Type) */ return -1; } } if (TypeB == PRF_UNSET) { TypeA = PRF_UNSET; } switch (TypeA) { default: case PRF_UNSET: case PRF_STRING: return strcmp(ChrPtr(PrefA->Val), ChrPtr(PrefB->Val)); case PRF_YESNO: case PRF_INT: if (PrefA->lval == PrefB->lval) return 0; else if (PrefA->lval > PrefB->lval) return 1; else return -1; case PRF_QP_STRING: return strcmp(ChrPtr(PrefA->DeQPed), ChrPtr(PrefB->DeQPed)); } } /* * Write a key into the webcit preferences database for this user * * key key which value is to be modified * keylen length of the key string * value value to set * save_to_server 1 = flush all data to the server, 0 = cache it for now */ void set_preference_backend(const char *key, size_t keylen, long lvalue, StrBuf *value, long lPrefType, int save_to_server, PrefDef *PrefType) { wcsession *WCC = WC; void *vPrefDef; void *vPrefB; Preference *Pref; Pref = (Preference*) malloc(sizeof(Preference)); memset(Pref, 0, sizeof(Preference)); Pref->Key = NewStrBufPlain(key, keylen); if ((PrefType == NULL) && GetHash(PreferenceHooks, SKEY(Pref->Key), &vPrefDef) && (vPrefDef != NULL)) PrefType = (PrefDef*) vPrefDef; if (PrefType != NULL) { Pref->Type = PrefType; Pref->eFlatPrefType = PrefType->eType; if (Pref->Type->eType != lPrefType) syslog(LOG_WARNING, "warning: saving preference with wrong type [%s] %d != %ld \n", key, Pref->Type->eType, lPrefType); switch (Pref->Type->eType) { case PRF_UNSET: /* default to string... */ case PRF_STRING: Pref->Val = value; Pref->decoded = 1; break; case PRF_INT: Pref->lval = lvalue; Pref->Val = value; if (Pref->Val == NULL) Pref->Val = NewStrBufPlain(NULL, 64); StrBufPrintf(Pref->Val, "%ld", lvalue); Pref->decoded = 1; break; case PRF_QP_STRING: Pref->DeQPed = value; Pref->Val = NewStrBufPlain(NULL, StrLength(Pref->DeQPed) * 3); StrBufEUid_escapize(Pref->Val, Pref->DeQPed); Pref->decoded = 1; break; case PRF_YESNO: Pref->lval = lvalue; if (lvalue) Pref->Val = NewStrBufPlain(HKEY("yes")); else Pref->Val = NewStrBufPlain(HKEY("no")); Pref->decoded = 1; break; } if (Pref->Type->OnLoad != NULL) Pref->Type->OnLoad(Pref->Val, Pref->lval); } else { Pref->eFlatPrefType = lPrefType; switch (lPrefType) { case PRF_STRING: Pref->Val = value; Pref->decoded = 1; break; case PRF_INT: Pref->lval = lvalue; Pref->Val = value; if (Pref->Val == NULL) Pref->Val = NewStrBufPlain(NULL, 64); StrBufPrintf(Pref->Val, "%ld", lvalue); Pref->decoded = 1; break; case PRF_QP_STRING: Pref->DeQPed = value; Pref->Val = NewStrBufPlain(NULL, StrLength(Pref->DeQPed) * 3); StrBufEUid_escapize(Pref->Val, Pref->DeQPed); Pref->decoded = 1; break; case PRF_YESNO: Pref->lval = lvalue; if (lvalue) Pref->Val = NewStrBufPlain(HKEY("yes")); else Pref->Val = NewStrBufPlain(HKEY("no")); Pref->decoded = 1; break; } } if ((save_to_server != 0) && GetHash(WCC->hash_prefs, key, keylen, &vPrefB) && (vPrefB != NULL) && (compare_preference (Pref, vPrefB) == 0)) save_to_server = 0; Put(WCC->hash_prefs, key, keylen, Pref, DestroyPreference); if (save_to_server) WCC->SavePrefsToServer = 1; } void set_PREFERENCE(const char *key, size_t keylen, StrBuf *value, int save_to_server) { set_preference_backend(key, keylen, 0, value, PRF_STRING, save_to_server, NULL); } int get_PREF_LONG(const char *key, size_t keylen, long *value, long Default) { Preference *Pref; int Ret; Ret = get_pref_backend(key, keylen, &Pref); if (Ret == 0) { *value = Default; return 0; } if (Pref->decoded) *value = Pref->lval; else { *value = Pref->lval = atol(ChrPtr(Pref->Val)); Pref->decoded = 1; } return Ret; } void set_PREF_LONG(const char *key, size_t keylen, long value, int save_to_server) { set_preference_backend(key, keylen, value, NULL, PRF_INT, save_to_server, NULL); } int get_PREF_YESNO(const char *key, size_t keylen, int *value, int Default) { Preference *Pref; int Ret; Ret = get_pref_backend(key, keylen, &Pref); if (Ret == 0) { *value = Default; return 0; } if (Pref->decoded) *value = Pref->lval; else { *value = Pref->lval = strcmp(ChrPtr(Pref->Val), "yes") == 0; Pref->decoded = 1; } return Ret; } void set_PREF_YESNO(const char *key, size_t keylen, long value, int save_to_server) { set_preference_backend(key, keylen, value, NULL, PRF_YESNO, save_to_server, NULL); } int get_room_prefs_backend(const char *key, size_t keylen, Preference **Pref) { StrBuf *pref_name; int Ret; pref_name = NewStrBufPlain (HKEY("ROOM:")); StrBufAppendBuf(pref_name, WC->CurRoom.name, 0); StrBufAppendBufPlain(pref_name, HKEY(":"), 0); StrBufAppendBufPlain(pref_name, key, keylen, 0); Ret = get_pref_backend(SKEY(pref_name), Pref); FreeStrBuf(&pref_name); return Ret; } const StrBuf *get_X_PREFS(const char *key, size_t keylen, const char *xkey, size_t xkeylen) { int ret; StrBuf *pref_name; Preference *Prf; pref_name = NewStrBufPlain (HKEY("XPREF:")); StrBufAppendBufPlain(pref_name, xkey, xkeylen, 0); StrBufAppendBufPlain(pref_name, HKEY(":"), 0); StrBufAppendBufPlain(pref_name, key, keylen, 0); ret = get_pref_backend(SKEY(pref_name), &Prf); FreeStrBuf(&pref_name); if (ret) return Prf->Val; else return NULL; } void set_X_PREFS(const char *key, size_t keylen, const char *xkey, size_t xkeylen, StrBuf *value, int save_to_server) { StrBuf *pref_name; pref_name = NewStrBufPlain (HKEY("XPREF:")); StrBufAppendBufPlain(pref_name, xkey, xkeylen, 0); StrBufAppendBufPlain(pref_name, HKEY(":"), 0); StrBufAppendBufPlain(pref_name, key, keylen, 0); set_preference_backend(SKEY(pref_name), 0, value, PRF_STRING, save_to_server, NULL); FreeStrBuf(&pref_name); } long get_ROOM_PREFS_LONG(const char *key, size_t keylen, long *value, long Default) { Preference *Pref; int Ret; Ret = get_room_prefs_backend(key, keylen, &Pref); if (Ret == 0) { *value = Default; return 0; } if (Pref->decoded) *value = Pref->lval; else { *value = Pref->lval = atol(ChrPtr(Pref->Val)); Pref->decoded = 1; } return Ret; } StrBuf *get_ROOM_PREFS(const char *key, size_t keylen) { Preference *Pref; int Ret; Ret = get_room_prefs_backend(key, keylen, &Pref); if (Ret == 0) { return NULL; } else return Pref->Val; } void set_ROOM_PREFS(const char *key, size_t keylen, StrBuf *value, int save_to_server) { StrBuf *pref_name; pref_name = NewStrBufPlain (HKEY("ROOM:")); StrBufAppendBuf(pref_name, WC->CurRoom.name, 0); StrBufAppendBufPlain(pref_name, HKEY(":"), 0); StrBufAppendBufPlain(pref_name, key, keylen, 0); set_preference_backend(SKEY(pref_name), 0, value, PRF_STRING, save_to_server, NULL); FreeStrBuf(&pref_name); } void GetPreferences(HashList *Setting) { wcsession *WCC = WC; HashPos *It; long len; const char *Key; void *vSetting; PrefDef *PrefType; StrBuf *Buf; long lval; HashList *Tmp; Tmp = WCC->hash_prefs; WCC->hash_prefs = Setting; It = GetNewHashPos(PreferenceHooks, 0); while (GetNextHashPos(PreferenceHooks, It, &len, &Key, &vSetting)) { PrefType = (PrefDef*) vSetting; if (!HaveBstr(SKEY(PrefType->Setting))) continue; switch (PrefType->eType) { case PRF_UNSET: case PRF_STRING: Buf = NewStrBufDup(SBstr(SKEY(PrefType->Setting))); set_preference_backend(SKEY(PrefType->Setting), 0, Buf, PRF_STRING, 1, PrefType); break; case PRF_INT: lval = LBstr(SKEY(PrefType->Setting)); set_preference_backend(SKEY(PrefType->Setting), lval, NULL, PRF_INT, 1, PrefType); break; case PRF_QP_STRING: Buf = NewStrBufDup(SBstr(SKEY(PrefType->Setting))); set_preference_backend(SKEY(PrefType->Setting), 0, Buf, PRF_QP_STRING, 1, PrefType); break; case PRF_YESNO: lval = YesBstr(SKEY(PrefType->Setting)); set_preference_backend(SKEY(PrefType->Setting), lval, NULL, PRF_YESNO, 1, PrefType); break; } } WCC->hash_prefs = Tmp; DeleteHashPos(&It); } /* * Commit new preferences and settings */ void set_preferences(void) { if (!havebstr("change_button")) { AppendImportantMessage(_("Cancelled. No settings were changed."), -1); display_main_menu(); return; } GetPreferences(WC->hash_prefs); display_main_menu(); } void tmplput_CFG_Value(StrBuf *Target, WCTemplputParams *TP) { Preference *Pref; if (get_pref_backend(TKEY(0), &Pref)) { if (Pref->Type == NULL) { StrBufAppendTemplate(Target, TP, Pref->Val, 1); } switch (Pref->Type->eType) { case PRF_UNSET: /* default to string... */ case PRF_STRING: StrBufAppendTemplate(Target, TP, Pref->Val, 1); break; case PRF_INT: if (Pref->decoded != 1) { if (Pref->Val == NULL) Pref->Val = NewStrBufPlain(NULL, 64); StrBufPrintf(Pref->Val, "%ld", Pref->lval); Pref->decoded = 1; } StrBufAppendTemplate(Target, TP, Pref->Val, 1); break; case PRF_QP_STRING: if (Pref->decoded != 1) { if (Pref->DeQPed == NULL) Pref->DeQPed = NewStrBufPlain(NULL, StrLength(Pref->Val)); StrBufEUid_unescapize(Pref->DeQPed, Pref->Val); Pref->decoded = 1; } StrBufAppendTemplate(Target, TP, Pref->DeQPed, 1); break; case PRF_YESNO: if (Pref->decoded != 1) { Pref->lval = strcmp(ChrPtr(Pref->Val), "yes") == 0; Pref->decoded = 1; } StrBufAppendTemplate(Target, TP, Pref->Val, 1); break; } } } void tmplput_CFG_Descr(StrBuf *Target, WCTemplputParams *TP) { const char *SettingStr; SettingStr = PrefGetLocalStr(TKEY(0)); if (SettingStr != NULL) StrBufAppendBufPlain(Target, SettingStr, -1, 0); } void tmplput_CFG_RoomValueLong(StrBuf *Target, WCTemplputParams *TP) { long lvalue; long defval = 0; if (HAVE_PARAM(1)) defval = GetTemplateTokenNumber(Target, TP, 1, 0); get_ROOM_PREFS_LONG(TKEY(0), &lvalue, defval); StrBufAppendPrintf(Target, "%ld", lvalue); } void tmplput_CFG_RoomValue(StrBuf *Target, WCTemplputParams *TP) { StrBuf *pref = get_ROOM_PREFS(TKEY(0)); if (pref != NULL) StrBufAppendBuf(Target, pref, 0); } int ConditionalHasRoomPreference(StrBuf *Target, WCTemplputParams *TP) { if (get_ROOM_PREFS(TP->Tokens->Params[0]->Start, TP->Tokens->Params[0]->len) != NULL) return 1; return 0; } int ConditionalPreference(StrBuf *Target, WCTemplputParams *TP) { StrBuf *Pref; if (!get_PREFERENCE(TKEY(2), &Pref)) return 0; if (!HAVE_PARAM(3)) { return 1; } else if (IS_NUMBER(TP->Tokens->Params[3]->Type)) { return StrTol(Pref) == GetTemplateTokenNumber (Target, TP, 3, 0); } else { const char *pch; long len; GetTemplateTokenString(Target, TP, 3, &pch, &len); return ((len == StrLength(Pref)) && (strcmp(pch, ChrPtr(Pref)) == 0)); } } int ConditionalHasPreference(StrBuf *Target, WCTemplputParams *TP) { StrBuf *Pref; if (!get_PREFERENCE(TKEY(2), &Pref) || (Pref == NULL)) return 0; else return 1; } /******************************************************************************** * preferences stored discrete in citserver ********************************************************************************/ CtxType CTX_VEA = CTX_NONE; typedef struct __ValidEmailAddress { StrBuf *Address; int IsDefault; }ValidEmailAddress; void DeleteValidEmailAddress(void *v) { ValidEmailAddress *VEA = (ValidEmailAddress*)v; FreeStrBuf(&VEA->Address); free(VEA); } void tmplput_VEA(StrBuf *Target, WCTemplputParams *TP) { ValidEmailAddress* VEA = (ValidEmailAddress*) CTX((CTX_VEA)); StrBufAppendTemplate(Target, TP, VEA->Address, 0); } int ConditionalPreferenceIsDefaulVEA(StrBuf *Target, WCTemplputParams *TP) { ValidEmailAddress* VEA = (ValidEmailAddress*) CTX((CTX_VEA)); return VEA->IsDefault; } HashList *GetGVEAHash(StrBuf *Target, WCTemplputParams *TP) { StrBuf *Rcp; HashList *List = NULL; int Done = 0; int i, n = 1; char N[64]; StrBuf *DefaultFrom = NULL; const StrBuf *EnvelopeTo; ValidEmailAddress *VEA; get_preference("defaultfrom", &DefaultFrom); EnvelopeTo = sbstr("nvto"); Rcp = NewStrBuf(); serv_puts("GVEA"); StrBuf_ServGetln(Rcp); if (GetServerStatus(Rcp, NULL) == 1) { FlushStrBuf(Rcp); List = NewHash(1, NULL); while (!Done && (StrBuf_ServGetln(Rcp)>=0)) { if ( (StrLength(Rcp)==3) && !strcmp(ChrPtr(Rcp), "000")) { Done = 1; } else { VEA = (ValidEmailAddress*) malloc(sizeof(ValidEmailAddress)); i = snprintf(N, sizeof(N), "%d", n); StrBufTrim(Rcp); VEA->Address = Rcp; if (StrLength(EnvelopeTo) > 0) VEA->IsDefault = strstr(ChrPtr(EnvelopeTo), ChrPtr(Rcp)) != NULL; else if (StrLength(DefaultFrom) > 0) VEA->IsDefault = !strcmp(ChrPtr(Rcp), ChrPtr(DefaultFrom)); else VEA->IsDefault = 0; Put(List, N, i, VEA, DeleteValidEmailAddress); Rcp = NewStrBuf(); } n++; } } FreeStrBuf(&Rcp); return List; } void DeleteGVEAHash(HashList **KillMe) { DeleteHash(KillMe); } HashList *GetGVSNHash(StrBuf *Target, WCTemplputParams *TP) { StrBuf *Rcp; HashList *List = NULL; int Done = 0; int i, n = 1; char N[64]; Rcp = NewStrBuf(); serv_puts("GVSN"); StrBuf_ServGetln(Rcp); if (GetServerStatus(Rcp, NULL) == 1) { FlushStrBuf(Rcp); List = NewHash(1, NULL); while (!Done && (StrBuf_ServGetln(Rcp)>=0)) { if ( (StrLength(Rcp)==3) && !strcmp(ChrPtr(Rcp), "000")) { Done = 1; } else { i = snprintf(N, sizeof(N), "%d", n); StrBufTrim(Rcp); Put(List, N, i, Rcp, HFreeStrBuf); Rcp = NewStrBuf(); } n++; } } FreeStrBuf(&Rcp); return List; } void DeleteGVSNHash(HashList **KillMe) { DeleteHash(KillMe); } /* * Offer to make any page the user's "start page" (only if logged in) */ void offer_start_page(StrBuf *Target, WCTemplputParams *TP) { if (WC->logged_in) { wc_printf("
    Hdr->this_page)); wc_printf("\">"); wc_printf(_("Make this my start page")); wc_printf(""); }; } /* * Change the user's start page */ void change_start_page(void) { const char *pch; void *vHandler; int ProhibitSave = 0; const StrBuf *pStartPage = sbstr("startpage"); if (pStartPage != NULL) { pch = strchr(ChrPtr(pStartPage), '?'); if ((pch != NULL) && ( GetHash(HandlerHash, ChrPtr(pStartPage), pch - ChrPtr(pStartPage), &vHandler), (vHandler != NULL) && ((((WebcitHandler*)vHandler)->Flags & PROHIBIT_STARTPAGE) != 0))) { /* OK, This handler doesn't want to be set as start page, prune it. */ ProhibitSave = 1; } } if ((pStartPage == NULL) || (ProhibitSave == 1)) { set_preference_backend(HKEY("startpage"), 0, NewStrBufPlain(HKEY("")), PRF_STRING, 1, NULL); if (ProhibitSave == 1) AppendImportantMessage(_("This isn't allowed to become the start page."), -1); else AppendImportantMessage(_("You no longer have a start page selected."), -1); display_main_menu(); return; } set_preference_backend(HKEY("startpage"), 0, NewStrBufDup(pStartPage), PRF_STRING, 1, NULL); output_headers(1, 1, 0, 0, 0, 0); do_template("newstartpage"); wDumpContent(1); } void LoadStartpage(StrBuf *URL, long lvalue) { const char *pch; void *vHandler; pch = strchr(ChrPtr(URL), '?'); if (pch == NULL) { /* purge the sins of the past... */ pch = strchr(ChrPtr(URL), '&'); if (pch != NULL) { StrBufPeek(URL, pch, -1, '?'); WC->SavePrefsToServer = 1; } } else if (GetHash(HandlerHash, ChrPtr(URL), pch - ChrPtr(URL), &vHandler), (vHandler != NULL) && ((((WebcitHandler*)vHandler)->Flags & PROHIBIT_STARTPAGE) != 0)) { /* OK, This handler doesn't want to be set as start page, prune it. */ FlushStrBuf(URL); WC->SavePrefsToServer = 1; } } void InitModule_PREFERENCES (void) { RegisterCTX(CTX_VEA); WebcitAddUrlHandler(HKEY("set_preferences"), "", 0, set_preferences, 0); WebcitAddUrlHandler(HKEY("change_start_page"), "", 0, change_start_page, 0); RegisterPreference("startpage", _("Prefered startpage"), PRF_STRING, LoadStartpage); RegisterNamespace("OFFERSTARTPAGE", 0, 0, offer_start_page, NULL, CTX_NONE); RegisterNamespace("PREF:ROOM:VALUE", 1, 2, tmplput_CFG_RoomValue, NULL, CTX_NONE); RegisterNamespace("PREF:ROOM:VALUE:INT", 1, 2, tmplput_CFG_RoomValueLong, NULL, CTX_NONE); RegisterNamespace("PREF:VALUE", 1, 2, tmplput_CFG_Value, NULL, CTX_NONE); RegisterNamespace("PREF:DESCR", 1, 1, tmplput_CFG_Descr, NULL, CTX_NONE); RegisterConditional("COND:PREF", 4, ConditionalPreference, CTX_NONE); RegisterConditional("COND:PREF:SET", 4, ConditionalHasPreference, CTX_NONE); RegisterConditional("COND:ROOM:SET", 4, ConditionalHasRoomPreference, CTX_NONE); RegisterIterator("PREF:VALID:EMAIL:ADDR", 0, NULL, GetGVEAHash, NULL, DeleteGVEAHash, CTX_VEA, CTX_NONE, IT_NOFLAG); RegisterNamespace("PREF:VALID:EMAIL:ADDR:STR", 1, 1, tmplput_VEA, NULL, CTX_VEA); RegisterConditional("COND:PREF:VALID:EMAIL:ADDR:STR", 4, ConditionalPreferenceIsDefaulVEA, CTX_VEA); RegisterIterator("PREF:VALID:EMAIL:NAME", 0, NULL, GetGVSNHash, NULL, DeleteGVSNHash, CTX_STRBUF, CTX_NONE, IT_NOFLAG); } void ServerStartModule_PREFERENCES (void) { PreferenceHooks = NewHash(1, NULL); } void ServerShutdownModule_PREFERENCES (void) { DeleteHash(&PreferenceHooks); } void SessionDetachModule__PREFERENCES (wcsession *sess) { if (sess->SavePrefsToServer) { save_preferences(); sess->SavePrefsToServer = 0; } } void SessionNewModule_PREFERENCES (wcsession *sess) { sess->hash_prefs = NewHash(1,NULL); } void SessionDestroyModule_PREFERENCES (wcsession *sess) { DeleteHash(&sess->hash_prefs); } webcit-8.24-dfsg.orig/buildpackages0000755000175000017500000000430312271477123017124 0ustar michaelmichael#!/bin/bash if test -x Makefile; then make clean fi ./bootstrap export `grep PACKAGE_VERSION= configure |sed -e "s;';;g" -e "s;PACKAGE;WEBCIT;"` PACKAGE_VERSION=`cat packageversion` DATE=`date '+%a, %d %b %Y %H:%I:00 %z'` ACTUAL_DIR=`pwd` rm -rf debian/citadel-webcit debian/tmp/ if echo "$ACTUAL_DIR" |grep -q "$WEBCIT_VERSION"; then echo "directory ($ACTUAL_DIR) naming scheme seems right. nothing done." else done=false if test -L "$ACTUAL_DIR"; then SYMLINK_=`pwd` SYMLINK=`ls -l $SYMLINK_|sed "s;.*-> ;;"` if ls -l $SYMLINK_|grep -q "$WEBCIT_VERSION"; then done=true fi else SYMLINK=`pwd|sed "s;.*/;;"` fi if test "$done" = "false"; then cd .. ln -sf webcit "webcit-$WEBCIT_VERSION" cd "webcit-$WEBCIT_VERSION" else cd "../webcit-$WEBCIT_VERSION" fi fi case $1 in debian) if grep -q "($WEBCIT_VERSION" debian/changelog; then echo rebuilding package. else echo "Upstream Version higher than local." fi if test "$2" == "src"; then cd .. rm -rf tmp mkdir tmp cp -rL webcit-$WEBCIT_VERSION tmp cd tmp/webcit-$WEBCIT_VERSION rm -rf `find -name .svn ` svn*tmp* build-stamp configure-stamp *~ config.guess config.log config.status autom4te.cache Makefile find -type f -exec chmod a-x {} \; chmod a+x configure debian/rules po/create-pot.sh mk_module_init.sh cd .. tar -chzf webcit_${WEBCIT_VERSION}.orig.tar.gz webcit-${WEBCIT_VERSION}/ --exclude "debian/*" pwd cd webcit-${WEBCIT_VERSION}; debuild -S -sa -kw.goesgens@outgesourced.org else fakeroot dpkg-buildpackage fi ;; sourcedist) if test "$2" == "dfsg"; then NONDFSG=-"-exclude static/webcit_icons/openid-small.gif" fi cd ..; tar \ --exclude ".gitignore" \ --exclude "*.lo" \ --exclude "*.o" \ --exclude "*.d" \ --exclude "autom4te.cache/*" \ --exclude "debian/*" \ --exclude "sysdep.h" \ \ $NONDFSG \ \ -cvhzf webcit-${WEBCIT_VERSION}.tar.gz webcit-${WEBCIT_VERSION}/ ;; i18n) ./webcit -G `pwd`/i18n_templatelist.c cd po; ./create-pot.sh ;; *) echo "Not yet implemented. we have: debian, sourcedist, i18n (needs ready compiled & installed webcit in your system)" ;; esac webcit-8.24-dfsg.orig/modules_init.c0000644000175000017500000003526712271477143017256 0ustar michaelmichael/* * /var/www/easyinstall/citadel/webcit/modules_init.c * Auto generated by mk_modules_init.sh DO NOT EDIT THIS FILE */ #include "sysdep.h" #include #include #include #include #include #include #include #include "webcit.h" #include "modules_init.h" #include "webserver.h" void LogPrintMessages(long err); extern long DetailErrorFlags; void start_modules (void) { #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Starting CONTEXT\n"); #endif ServerStartModule_CONTEXT(); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Starting DAV\n"); #endif ServerStartModule_DAV(); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Starting ICONBAR\n"); #endif ServerStartModule_ICONBAR(); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Starting ICONTHEME\n"); #endif ServerStartModule_ICONTHEME(); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Starting MSGRENDERERS\n"); #endif ServerStartModule_MSGRENDERERS(); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Starting PREFERENCES\n"); #endif ServerStartModule_PREFERENCES(); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Starting SERV_FUNC\n"); #endif ServerStartModule_SERV_FUNC(); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Starting SITECONFIG\n"); #endif ServerStartModule_SITECONFIG(); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Starting SMTP_QUEUE\n"); #endif ServerStartModule_SMTP_QUEUE(); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Starting STATIC\n"); #endif ServerStartModule_STATIC(); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Starting SUBST\n"); #endif ServerStartModule_SUBST(); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Starting VCARD\n"); #endif ServerStartModule_VCARD(); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Starting WEBCIT\n"); #endif ServerStartModule_WEBCIT(); } void initialise_modules (void) { #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Initializing ADDRBOOK_POPUP\n"); #endif InitModule_ADDRBOOK_POPUP(); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Initializing AUTH\n"); #endif InitModule_AUTH(); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Initializing AUTO_COMPLETE\n"); #endif InitModule_AUTO_COMPLETE(); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Initializing BBSVIEWRENDERERS\n"); #endif InitModule_BBSVIEWRENDERERS(); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Initializing BLOGVIEWRENDERERS\n"); #endif InitModule_BLOGVIEWRENDERERS(); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Initializing CALENDAR\n"); #endif InitModule_CALENDAR(); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Initializing CALENDAR_VIEW\n"); #endif InitModule_CALENDAR_VIEW(); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Initializing CONTEXT\n"); #endif InitModule_CONTEXT(); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Initializing DATE\n"); #endif InitModule_DATE(); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Initializing DATETIME\n"); #endif InitModule_DATETIME(); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Initializing DOWNLOAD\n"); #endif InitModule_DOWNLOAD(); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Initializing GETTEXT\n"); #endif InitModule_GETTEXT(); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Initializing GRAPHICS\n"); #endif InitModule_GRAPHICS(); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Initializing GROUPDAV\n"); #endif InitModule_GROUPDAV(); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Initializing ICAL_MAPS\n"); #endif InitModule_ICAL_MAPS(); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Initializing ICAL_SUBST\n"); #endif InitModule_ICAL_SUBST(); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Initializing ICONBAR\n"); #endif InitModule_ICONBAR(); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Initializing ICONTHEME\n"); #endif InitModule_ICONTHEME(); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Initializing INETCONF\n"); #endif InitModule_INETCONF(); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Initializing LISTSUB\n"); #endif InitModule_LISTSUB(); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Initializing MAINMENU\n"); #endif InitModule_MAINMENU(); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Initializing MARCHLIST\n"); #endif InitModule_MARCHLIST(); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Initializing MSG\n"); #endif InitModule_MSG(); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Initializing MSGRENDERERS\n"); #endif InitModule_MSGRENDERERS(); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Initializing NETCONF\n"); #endif InitModule_NETCONF(); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Initializing NOTES\n"); #endif InitModule_NOTES(); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Initializing OPENID\n"); #endif InitModule_OPENID(); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Initializing PAGING\n"); #endif InitModule_PAGING(); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Initializing PARAMHANDLING\n"); #endif InitModule_PARAMHANDLING(); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Initializing PREFERENCES\n"); #endif InitModule_PREFERENCES(); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Initializing PROPFIND\n"); #endif InitModule_PROPFIND(); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Initializing PUSHMAIL\n"); #endif InitModule_PUSHMAIL(); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Initializing REPORT\n"); #endif InitModule_REPORT(); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Initializing ROOMCHAT\n"); #endif InitModule_ROOMCHAT(); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Initializing ROOMLIST\n"); #endif InitModule_ROOMLIST(); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Initializing ROOMOPS\n"); #endif InitModule_ROOMOPS(); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Initializing ROOMTOKENS\n"); #endif InitModule_ROOMTOKENS(); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Initializing ROOMVIEWS\n"); #endif InitModule_ROOMVIEWS(); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Initializing RSS\n"); #endif InitModule_RSS(); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Initializing SERVFUNC\n"); #endif InitModule_SERVFUNC(); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Initializing SETUP_WIZARD\n"); #endif InitModule_SETUP_WIZARD(); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Initializing SIEVE\n"); #endif InitModule_SIEVE(); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Initializing SITECONFIG\n"); #endif InitModule_SITECONFIG(); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Initializing SITEMAP\n"); #endif InitModule_SITEMAP(); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Initializing SMTP_QUEUE\n"); #endif InitModule_SMTP_QUEUE(); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Initializing STATIC\n"); #endif InitModule_STATIC(); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Initializing SUBST\n"); #endif InitModule_SUBST(); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Initializing SUMMARY\n"); #endif InitModule_SUMMARY(); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Initializing SYSMSG\n"); #endif InitModule_SYSMSG(); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Initializing TASKS\n"); #endif InitModule_TASKS(); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Initializing USEREDIT\n"); #endif InitModule_USEREDIT(); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Initializing VCARD\n"); #endif InitModule_VCARD(); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Initializing WEBCIT\n"); #endif InitModule_WEBCIT(); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Initializing WHO\n"); #endif InitModule_WHO(); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Initializing WIKI\n"); #endif InitModule_WIKI(); } void initialise2_modules (void) { #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Initializing MSGRENDERERS\n"); #endif InitModule2_MSGRENDERERS(); } void shutdown_modules (void) { #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Shutting down CONTEXT\n"); #endif ServerShutdownModule_CONTEXT(); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Shutting down DAV\n"); #endif ServerShutdownModule_DAV(); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Shutting down GETTEXT\n"); #endif ServerShutdownModule_GETTEXT(); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Shutting down ICAL\n"); #endif ServerShutdownModule_ICAL(); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Shutting down ICONBAR\n"); #endif ServerShutdownModule_ICONBAR(); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Shutting down ICONTHEME\n"); #endif ServerShutdownModule_ICONTHEME(); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Shutting down MSGRENDERERS\n"); #endif ServerShutdownModule_MSGRENDERERS(); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Shutting down PREFERENCES\n"); #endif ServerShutdownModule_PREFERENCES(); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Shutting down SERV_FUNC\n"); #endif ServerShutdownModule_SERV_FUNC(); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Shutting down SITECONFIG\n"); #endif ServerShutdownModule_SITECONFIG(); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Shutting down SMTP_QUEUE\n"); #endif ServerShutdownModule_SMTP_QUEUE(); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Shutting down STATIC\n"); #endif ServerShutdownModule_STATIC(); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Shutting down SUBST\n"); #endif ServerShutdownModule_SUBST(); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Shutting down VCARD\n"); #endif ServerShutdownModule_VCARD(); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Shutting down WEBCIT\n"); #endif ServerShutdownModule_WEBCIT(); } void session_new_modules (wcsession *sess) { #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Initializing GETTEXT\n"); #endif SessionNewModule_GETTEXT(sess); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Initializing PREFERENCES\n"); #endif SessionNewModule_PREFERENCES(sess); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Initializing SUBST\n"); #endif SessionNewModule_SUBST(sess); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Initializing TCPSOCKETS\n"); #endif SessionNewModule_TCPSOCKETS(sess); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Initializing WEBCIT\n"); #endif SessionNewModule_WEBCIT(sess); } void session_attach_modules (wcsession *sess) { #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Attaching Session; GETTEXT\n"); #endif SessionAttachModule_GETTEXT(sess); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Attaching Session; PARAMHANDLING\n"); #endif SessionAttachModule_PARAMHANDLING(sess); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Attaching Session; SUBST\n"); #endif SessionAttachModule_SUBST(sess); } void session_detach_modules (wcsession *sess) { #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Initializing MSG\n"); #endif SessionDetachModule_MSG(sess); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Initializing PARAMHANDLING\n"); #endif SessionDetachModule_PARAMHANDLING(sess); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Initializing _PREFERENCES\n"); #endif SessionDetachModule__PREFERENCES(sess); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Initializing SIEVE\n"); #endif SessionDetachModule_SIEVE(sess); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Initializing SUBST\n"); #endif SessionDetachModule_SUBST(sess); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Initializing WEBCIT\n"); #endif SessionDetachModule_WEBCIT(sess); } void session_destroy_modules (wcsession **sess) { #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Initializing AUTH\n"); #endif SessionDestroyModule_AUTH(*sess); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Initializing GETTEXT\n"); #endif SessionDestroyModule_GETTEXT(*sess); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Initializing ICONBAR\n"); #endif SessionDestroyModule_ICONBAR(*sess); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Initializing ICONTHEME\n"); #endif SessionDestroyModule_ICONTHEME(*sess); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Initializing MSGRENDERERS\n"); #endif SessionDestroyModule_MSGRENDERERS(*sess); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Initializing PAGING\n"); #endif SessionDestroyModule_PAGING(*sess); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Initializing PREFERENCES\n"); #endif SessionDestroyModule_PREFERENCES(*sess); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Initializing ROOMCHAT\n"); #endif SessionDestroyModule_ROOMCHAT(*sess); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Initializing ROOMOPS\n"); #endif SessionDestroyModule_ROOMOPS(*sess); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Initializing SERVFUNC\n"); #endif SessionDestroyModule_SERVFUNC(*sess); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Initializing SITECONFIG\n"); #endif SessionDestroyModule_SITECONFIG(*sess); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Initializing SUBST\n"); #endif SessionDestroyModule_SUBST(*sess); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Initializing TCPSOCKETS\n"); #endif SessionDestroyModule_TCPSOCKETS(*sess); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Initializing WEBCIT\n"); #endif SessionDestroyModule_WEBCIT(*sess); free((*sess)); (*sess) = NULL; } void http_new_modules (ParsedHttpHdrs *httpreq) { #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "NEW AUTH\n"); #endif HttpNewModule_AUTH(httpreq); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "NEW CONTEXT\n"); #endif HttpNewModule_CONTEXT(httpreq); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "NEW TCPSOCKETS\n"); #endif HttpNewModule_TCPSOCKETS(httpreq); } void http_detach_modules (ParsedHttpHdrs *httpreq) { #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Detaching AUTH\n"); #endif HttpDetachModule_AUTH(httpreq); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Detaching CONTEXT\n"); #endif HttpDetachModule_CONTEXT(httpreq); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Detaching TCPSOCKETS\n"); #endif HttpDetachModule_TCPSOCKETS(httpreq); } void http_destroy_modules (ParsedHttpHdrs *httpreq) { #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Destructing AUTH\n"); #endif HttpDestroyModule_AUTH(httpreq); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Destructing CONTEXT\n"); #endif HttpDestroyModule_CONTEXT(httpreq); #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Destructing TCPSOCKETS\n"); #endif HttpDestroyModule_TCPSOCKETS(httpreq); } webcit-8.24-dfsg.orig/roomops.c0000644000175000017500000010121512271477123016242 0ustar michaelmichael/* * Lots of different room-related operations. * * Copyright (c) 1996-2012 by the citadel.org team * * This program is open source software. You can redistribute it and/or * modify it under the terms of the GNU General Public License, version 3. * * This program 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. */ #include "webcit.h" #include "webserver.h" ConstStr QRFlagList[] = { {HKEY(strof(QR_PERMANENT))}, {HKEY(strof(QR_INUSE))}, {HKEY(strof(QR_PRIVATE))}, {HKEY(strof(QR_PASSWORDED))}, {HKEY(strof(QR_GUESSNAME))}, {HKEY(strof(QR_DIRECTORY))}, {HKEY(strof(QR_UPLOAD))}, {HKEY(strof(QR_DOWNLOAD))}, {HKEY(strof(QR_VISDIR))}, {HKEY(strof(QR_ANONONLY))}, {HKEY(strof(QR_ANONOPT))}, {HKEY(strof(QR_NETWORK))}, {HKEY(strof(QR_PREFONLY))}, {HKEY(strof(QR_READONLY))}, {HKEY(strof(QR_MAILBOX))} }; ConstStr QR2FlagList[] = { {HKEY(strof(QR2_SYSTEM))}, {HKEY(strof(QR2_SELFLIST))}, {HKEY(strof(QR2_COLLABDEL))}, {HKEY(strof(QR2_SUBJECTREQ))}, {HKEY(strof(QR2_SMTP_PUBLIC))}, {HKEY(strof(QR2_MODERATED))}, {HKEY("")}, {HKEY("")}, {HKEY("")}, {HKEY("")}, {HKEY("")}, {HKEY("")}, {HKEY("")}, {HKEY("")}, {HKEY("")} }; void _DBG_QR(long QR) { int i = 1; int j=0; StrBuf *QRVec; QRVec = NewStrBufPlain(NULL, 256); while (i != 0) { if ((QR & i) != 0) { if (StrLength(QRVec) > 0) StrBufAppendBufPlain(QRVec, HKEY(" | "), 0); StrBufAppendBufPlain(QRVec, CKEY(QRFlagList[j]), 0); } i = i << 1; j++; } syslog(LOG_DEBUG, "DBG: QR-Vec [%ld] [%s]\n", QR, ChrPtr(QRVec)); FreeStrBuf(&QRVec); } void _DBG_QR2(long QR2) { int i = 1; int j=0; StrBuf *QR2Vec; QR2Vec = NewStrBufPlain(NULL, 256); while (i != 0) { if ((QR2 & i) != 0) { if (StrLength(QR2Vec) > 0) StrBufAppendBufPlain(QR2Vec, HKEY(" | "), 0); StrBufAppendBufPlain(QR2Vec, CKEY(QR2FlagList[j]), 0); } i = i << 1; j++; } syslog(LOG_DEBUG, "DBG: QR2-Vec [%ld] [%s]\n", QR2, ChrPtr(QR2Vec)); FreeStrBuf(&QR2Vec); } /******************************************************************************* ***************************** Goto Commands *********************************** ******************************************************************************/ void dotskip(void) { smart_goto(sbstr("room")); } void dotgoto(void) { if (!havebstr("room")) { readloop(readnew, eUseDefault); return; } if (WC->CurRoom.view != VIEW_MAILBOX) { /* dotgoto acts like dotskip when we're in a mailbox view */ slrp_highest(); } smart_goto(sbstr("room")); } /* * goto next room */ void smart_goto(const StrBuf *next_room) { gotoroom(next_room); readloop(readnew, eUseDefault); } /* * goto a private room */ void goto_private(void) { char hold_rm[SIZ]; StrBuf *Buf; const StrBuf *gr_name; long err; if (!havebstr("ok_button")) { display_main_menu(); return; } gr_name = sbstr("gr_name"); Buf = NewStrBuf(); strcpy(hold_rm, ChrPtr(WC->CurRoom.name)); serv_printf("GOTO %s|%s", ChrPtr(gr_name), bstr("gr_pass")); StrBuf_ServGetln(Buf); if (GetServerStatus(Buf, &err) == 2) { FlushRoomlist(); smart_goto(gr_name); FreeStrBuf(&Buf); return; } if (err == 540) { DoTemplate(HKEY("room_display_private"), NULL, &NoCtx); FreeStrBuf(&Buf); return; } StrBufCutLeft(Buf, 4); AppendImportantMessage (SKEY(Buf)); Buf = NewStrBufPlain(HKEY("_BASEROOM_")); smart_goto(Buf); FreeStrBuf(&Buf); return; } /* * back end routine to take the session to a new room */ long gotoroom(const StrBuf *gname) { wcsession *WCC = WC; StrBuf *Buf; static long ls = (-1L); long err = 0; int room_name_supplied = 0; int is_baseroom = 0; /* store ungoto information */ if (StrLength(gname) > 0) { room_name_supplied = 1; } if (room_name_supplied) { strcpy(WCC->ugname, ChrPtr(WCC->CurRoom.name)); if (!strcasecmp(ChrPtr(gname), "_BASEROOM_")) { is_baseroom = 1; } } WCC->uglsn = ls; Buf = NewStrBuf(); /* move to the new room */ if (room_name_supplied) { serv_printf("GOTO %s", ChrPtr(gname)); } else { /* or just refresh the current state... */ serv_printf("GOTO 00000000000000000000"); } StrBuf_ServGetln(Buf); if (GetServerStatus(Buf, &err) != 2) { serv_puts("GOTO _BASEROOM_"); StrBuf_ServGetln(Buf); /* * well, we know that this is the fallback case, * but we're interested that the first command * didn't work out in first place. */ if (GetServerStatus(Buf, NULL) != 2) { FreeStrBuf(&Buf); return err; } } FlushFolder(&WCC->CurRoom); ParseGoto(&WCC->CurRoom, Buf); if (room_name_supplied) { remove_march(WCC->CurRoom.name); if (is_baseroom) { remove_march(gname); } } FreeStrBuf(&Buf); return err; } void ParseGoto(folder *room, StrBuf *Line) { wcsession *WCC = WC; const char *Pos; int flag; void *vFloor = NULL; StrBuf *pBuf; if (StrLength(Line) < 4) { return; } /* ignore the commandstate... */ Pos = ChrPtr(Line) + 4; if (room->RoomNameParts != NULL) { int i; for (i=0; i < room->nRoomNameParts; i++) FreeStrBuf(&room->RoomNameParts[i]); free(room->RoomNameParts); room->RoomNameParts = NULL; } pBuf = room->name; if (pBuf == NULL) pBuf = NewStrBufPlain(NULL, StrLength(Line)); else FlushStrBuf(pBuf); memset(room, 0, sizeof(folder)); room->name = pBuf; StrBufExtract_NextToken(room->name, Line, &Pos, '|'); room->nNewMessages = StrBufExtractNext_long(Line, &Pos, '|'); if (room->nNewMessages > 0) room->RAFlags |= UA_HASNEWMSGS; room->nTotalMessages = StrBufExtractNext_long(Line, &Pos, '|'); room->ShowInfo = StrBufExtractNext_long(Line, &Pos, '|'); room->QRFlags = StrBufExtractNext_long(Line, &Pos, '|'); DBG_QR(room->QRFlags); room->HighestRead = StrBufExtractNext_long(Line, &Pos, '|'); room->LastMessageRead = StrBufExtractNext_long(Line, &Pos, '|'); room->is_inbox = StrBufExtractNext_long(Line, &Pos, '|'); flag = StrBufExtractNext_long(Line, &Pos, '|'); if (WCC->is_aide || flag) { room->RAFlags |= UA_ADMINALLOWED; } room->UsersNewMAilboxMessages = StrBufExtractNext_long(Line, &Pos, '|'); room->floorid = StrBufExtractNext_int(Line, &Pos, '|'); room->view = StrBufExtractNext_long(Line, &Pos, '|'); room->defview = StrBufExtractNext_long(Line, &Pos, '|'); flag = StrBufExtractNext_long(Line, &Pos, '|'); if (flag) room->RAFlags |= UA_ISTRASH; room->QRFlags2 = StrBufExtractNext_long(Line, &Pos, '|'); DBG_QR2(room->QRFlags2); /* find out, whether we are in a sub-room */ room->nRoomNameParts = StrBufNum_tokens(room->name, '\\'); if (room->nRoomNameParts > 1) { int i; Pos = NULL; room->RoomNameParts = malloc(sizeof(StrBuf*) * (room->nRoomNameParts + 1)); memset(room->RoomNameParts, 0, sizeof(StrBuf*) * (room->nRoomNameParts + 1)); for (i=0; i < room->nRoomNameParts; i++) { room->RoomNameParts[i] = NewStrBuf(); StrBufExtract_NextToken(room->RoomNameParts[i], room->name, &Pos, '\\'); } } /* Private mailboxes on the main floor get remapped to the personal folder */ if ((room->QRFlags & QR_MAILBOX) && (room->floorid == 0)) { room->floorid = VIRTUAL_MY_FLOOR; if ((room->nRoomNameParts == 1) && (StrLength(room->name) == 4) && (strcmp(ChrPtr(room->name), "Mail") == 0)) { room->is_inbox = 1; } } /* get a pointer to the floor we're on: */ if (WCC->Floors == NULL) GetFloorListHash(NULL, NULL); GetHash(WCC->Floors, IKEY(room->floorid), &vFloor); room->Floor = (const Floor*) vFloor; } /* * Delete the current room */ void delete_room(void) { StrBuf *Line = NewStrBuf(); const StrBuf *GoBstr; GoBstr = sbstr("go"); if (GoBstr != NULL) { if (gotoroom(GoBstr) == 200) { serv_puts("KILL 1"); StrBuf_ServGetln(Line); if (GetServerStatusMsg(Line, NULL, 1, 2) == 2) { StrBuf *Buf; FlushRoomlist (); Buf = NewStrBufPlain(HKEY("_BASEROOM_")); smart_goto(Buf); FreeStrBuf(&Buf); FreeStrBuf(&Line); return; } } } display_main_menu(); FreeStrBuf(&Line); } /* * zap a room */ void zap(void) { char buf[SIZ]; StrBuf *final_destination; /** * If the forget-room routine fails for any reason, we fall back * to the current room; otherwise, we go to the Lobby */ final_destination = NewStrBufDup(WC->CurRoom.name); if (havebstr("ok_button")) { serv_printf("GOTO %s", ChrPtr(WC->CurRoom.name)); serv_getln(buf, sizeof buf); if (buf[0] == '2') { serv_puts("FORG"); serv_getln(buf, sizeof buf); if (buf[0] == '2') { FlushStrBuf(final_destination); StrBufAppendBufPlain(final_destination, HKEY("_BASEROOM_"), 0); } } FlushRoomlist (); } smart_goto(final_destination); FreeStrBuf(&final_destination); } /* * mark all messages in current room as having been read */ void slrp_highest(void) { char buf[256]; serv_puts("SLRP HIGHEST"); serv_getln(buf, sizeof buf); } /******************************************************************************* ***************************** Modify Rooms ************************************ ******************************************************************************/ void LoadRoomAide(void) { wcsession *WCC = WC; StrBuf *Buf; if (WCC->CurRoom.RoomAideLoaded) return; WCC->CurRoom.RoomAideLoaded = 1; Buf = NewStrBuf(); serv_puts("GETA"); StrBuf_ServGetln(Buf); if (GetServerStatus(Buf, NULL) != 2) { FlushStrBuf(WCC->CurRoom.RoomAide); AppendImportantMessage (ChrPtr(Buf) + 4, StrLength(Buf) - 4); } else { const char *Pos; Pos = ChrPtr(Buf) + 4; FreeStrBuf(&WCC->CurRoom.RoomAide); WCC->CurRoom.RoomAide = NewStrBufPlain (NULL, StrLength (Buf)); StrBufExtract_NextToken(WCC->CurRoom.RoomAide, Buf, &Pos, '|'); } FreeStrBuf (&Buf); } int SaveRoomAide(folder *Room) { StrBuf *Buf; Buf = NewStrBuf (); serv_printf("SETA %s", ChrPtr(Room->RoomAide)); StrBuf_ServGetln(Buf); if (GetServerStatus(Buf, NULL) != 2) { StrBufCutLeft(Buf, 4); AppendImportantMessage (SKEY(Buf)); FreeStrBuf(&Buf); return 0; } FreeStrBuf(&Buf); return 1; } int GetCurrentRoomFlags(folder *Room, int CareForStatusMessage) { StrBuf *Buf; Buf = NewStrBuf(); serv_puts("GETR"); StrBuf_ServGetln(Buf); if (GetServerStatus(Buf, NULL) != 2) { FlushStrBuf(Room->XAPass); FlushStrBuf(Room->Directory); StrBufCutLeft(Buf, 4); if (CareForStatusMessage) AppendImportantMessage (SKEY(Buf)); FreeStrBuf(&Buf); Room->XALoaded = 2; return 0; } else { const char *Pos; Pos = ChrPtr(Buf) + 4; FreeStrBuf(&Room->XAPass); FreeStrBuf(&Room->Directory); Room->XAPass = NewStrBufPlain (NULL, StrLength (Buf)); Room->Directory = NewStrBufPlain (NULL, StrLength (Buf)); FreeStrBuf(&Room->name); Room->name = NewStrBufPlain(NULL, StrLength(Buf)); StrBufExtract_NextToken(Room->name, Buf, &Pos, '|'); StrBufExtract_NextToken(Room->XAPass, Buf, &Pos, '|'); StrBufExtract_NextToken(Room->Directory, Buf, &Pos, '|'); Room->QRFlags = StrBufExtractNext_long(Buf, &Pos, '|'); Room->floorid = StrBufExtractNext_long(Buf, &Pos, '|'); Room->Order = StrBufExtractNext_long(Buf, &Pos, '|'); Room->defview = StrBufExtractNext_long(Buf, &Pos, '|'); Room->QRFlags2 = StrBufExtractNext_long(Buf, &Pos, '|'); FreeStrBuf (&Buf); Room->XALoaded = 1; return 1; } } int SetCurrentRoomFlags(folder *Room) { StrBuf *Buf; Buf = NewStrBuf(); DBG_QR(Room->QRFlags); DBG_QR2(Room->QRFlags2); serv_printf("SETR %s|%s|%s|%ld|%d|%d|%ld|%ld|%ld", ChrPtr(Room->name), ChrPtr(Room->XAPass), ChrPtr(Room->Directory), Room->QRFlags, Room->BumpUsers, Room->floorid, Room->Order, Room->defview, Room->QRFlags2); StrBuf_ServGetln(Buf); if (GetServerStatus(Buf, NULL) != 2) { StrBufCutLeft(Buf, 4); AppendImportantMessage (SKEY(Buf)); FreeStrBuf(&Buf); return 0; } else { FreeStrBuf(&Buf); return 1; } } void LoadRoomXA (void) { wcsession *WCC = WC; if (WCC->CurRoom.XALoaded > 0) return; GetCurrentRoomFlags(&WCC->CurRoom, 0); } void LoadXRoomPic(void) { wcsession *WCC = WC; StrBuf *Buf; if (WCC->CurRoom.XHaveRoomPicLoaded) return; WCC->CurRoom.XHaveRoomPicLoaded = 1; Buf = NewStrBuf(); serv_puts("OIMG _roompic_"); StrBuf_ServGetln(Buf); if (GetServerStatus(Buf, NULL) != 2) { WCC->CurRoom.XHaveRoomPic = 0; } else { WCC->CurRoom.XHaveRoomPic = 1; } serv_puts("CLOS"); StrBuf_ServGetln(Buf); GetServerStatus(Buf, NULL); FreeStrBuf (&Buf); } void LoadXRoomInfoText(void) { wcsession *WCC = WC; StrBuf *Buf; int Done = 0; if (WCC->CurRoom.XHaveInfoTextLoaded) { return; } WCC->CurRoom.XHaveInfoTextLoaded = 1; Buf = NewStrBuf(); serv_puts("RINF"); StrBuf_ServGetln(Buf); if (GetServerStatus(Buf, NULL) == 1) { WCC->CurRoom.XInfoText = NewStrBuf (); while (!Done && StrBuf_ServGetln(Buf)>=0) { if ( (StrLength(Buf)==3) && !strcmp(ChrPtr(Buf), "000")) Done = 1; else StrBufAppendBuf(WCC->CurRoom.XInfoText, Buf, 0); } } FreeStrBuf(&Buf); } void LoadXRoomXCountFiles(void) { wcsession *WCC = WC; StrBuf *Buf; int Done = 0; if (WCC->CurRoom.XHaveDownloadCount) return; WCC->CurRoom.XHaveDownloadCount = 1; Buf = NewStrBuf(); serv_puts("RDIR"); StrBuf_ServGetln(Buf); if (GetServerStatus(Buf, NULL) == 1) { while (!Done && StrBuf_ServGetln(Buf)>=0) { if ( (StrLength(Buf)==3) && !strcmp(ChrPtr(Buf), "000")) Done = 1; else WCC->CurRoom.XDownloadCount++; } } FreeStrBuf (&Buf); } /* * Toggle self-service list subscription */ void toggle_self_service(void) { wcsession *WCC = WC; if (GetCurrentRoomFlags (&WCC->CurRoom, 1) == 0) return; if (yesbstr("QR2_SelfList")) WCC->CurRoom.QRFlags2 = WCC->CurRoom.QRFlags2 | QR2_SELFLIST; else WCC->CurRoom.QRFlags2 = WCC->CurRoom.QRFlags2 & ~QR2_SELFLIST; if (yesbstr("QR2_SMTP_PUBLIC")) WCC->CurRoom.QRFlags2 = WCC->CurRoom.QRFlags2 | QR2_SMTP_PUBLIC; else WCC->CurRoom.QRFlags2 = WCC->CurRoom.QRFlags2 & ~QR2_SMTP_PUBLIC; if (yesbstr("QR2_Moderated")) WCC->CurRoom.QRFlags2 = WCC->CurRoom.QRFlags2 | QR2_MODERATED; else WCC->CurRoom.QRFlags2 = WCC->CurRoom.QRFlags2 & ~QR2_MODERATED; if (yesbstr("QR2_SubsOnly")) WCC->CurRoom.QRFlags2 = WCC->CurRoom.QRFlags2 | QR2_SMTP_PUBLIC; else WCC->CurRoom.QRFlags2 = WCC->CurRoom.QRFlags2 & ~QR2_SMTP_PUBLIC; SetCurrentRoomFlags (&WCC->CurRoom); output_headers(1, 1, 1, 0, 0, 0); do_template("room_edit"); wDumpContent(1); } /* * save new parameters for a room */ void editroom(void) { wcsession *WCC = WC; const StrBuf *Ptr; const StrBuf *er_name; const StrBuf *er_password; const StrBuf *er_dirname; const StrBuf *er_roomaide; int succ1, succ2; if (!havebstr("ok_button")) { AppendImportantMessage(_("Cancelled. Changes were not saved."), -1); output_headers(1, 1, 1, 0, 0, 0); do_template("room_edit"); wDumpContent(1); return; } if (GetCurrentRoomFlags (&WCC->CurRoom, 1) == 0) { output_headers(1, 1, 1, 0, 0, 0); do_template("room_edit"); wDumpContent(1); return; } LoadRoomAide(); WCC->CurRoom.QRFlags &= !(QR_PRIVATE | QR_PASSWORDED | QR_GUESSNAME); Ptr = sbstr("type"); if (!strcmp(ChrPtr(Ptr), "invonly")) { WCC->CurRoom.QRFlags |= (QR_PRIVATE); } if (!strcmp(ChrPtr(Ptr), "hidden")) { WCC->CurRoom.QRFlags |= (QR_PRIVATE | QR_GUESSNAME); } if (!strcmp(ChrPtr(Ptr), "passworded")) { WCC->CurRoom.QRFlags |= (QR_PRIVATE | QR_PASSWORDED); } if (!strcmp(ChrPtr(Ptr), "personal")) { WCC->CurRoom.QRFlags |= QR_MAILBOX; } else { WCC->CurRoom.QRFlags &= ~QR_MAILBOX; } if (yesbstr("prefonly")) { WCC->CurRoom.QRFlags |= QR_PREFONLY; } else { WCC->CurRoom.QRFlags &= ~QR_PREFONLY; } if (yesbstr("readonly")) { WCC->CurRoom.QRFlags |= QR_READONLY; } else { WCC->CurRoom.QRFlags &= ~QR_READONLY; } if (yesbstr("collabdel")) { WCC->CurRoom.QRFlags2 |= QR2_COLLABDEL; } else { WCC->CurRoom.QRFlags2 &= ~QR2_COLLABDEL; } if (yesbstr("permanent")) { WCC->CurRoom.QRFlags |= QR_PERMANENT; } else { WCC->CurRoom.QRFlags &= ~QR_PERMANENT; } if (yesbstr("subjectreq")) { WCC->CurRoom.QRFlags2 |= QR2_SUBJECTREQ; } else { WCC->CurRoom.QRFlags2 &= ~QR2_SUBJECTREQ; } if (yesbstr("network")) { WCC->CurRoom.QRFlags |= QR_NETWORK; } else { WCC->CurRoom.QRFlags &= ~QR_NETWORK; } if (yesbstr("directory")) { WCC->CurRoom.QRFlags |= QR_DIRECTORY; } else { WCC->CurRoom.QRFlags &= ~QR_DIRECTORY; } if (yesbstr("ulallowed")) { WCC->CurRoom.QRFlags |= QR_UPLOAD; } else { WCC->CurRoom.QRFlags &= ~QR_UPLOAD; } if (yesbstr("dlallowed")) { WCC->CurRoom.QRFlags |= QR_DOWNLOAD; } else { WCC->CurRoom.QRFlags &= ~QR_DOWNLOAD; } if (yesbstr("visdir")) { WCC->CurRoom.QRFlags |= QR_VISDIR; } else { WCC->CurRoom.QRFlags &= ~QR_VISDIR; } Ptr = sbstr("anon"); WCC->CurRoom.QRFlags &= ~(QR_ANONONLY | QR_ANONOPT); if (!strcmp(ChrPtr(Ptr), "anononly")) WCC->CurRoom.QRFlags |= QR_ANONONLY; if (!strcmp(ChrPtr(Ptr), "anon2")) WCC->CurRoom.QRFlags |= QR_ANONOPT; er_name = sbstr("er_name"); er_dirname = sbstr("er_dirname"); er_roomaide = sbstr("er_roomaide"); er_password = sbstr("er_password"); FlushStrBuf(WCC->CurRoom.name); StrBufAppendBuf(WCC->CurRoom.name, er_name, 0); FlushStrBuf(WCC->CurRoom.Directory); StrBufAppendBuf(WCC->CurRoom.Directory, er_dirname, 0); FlushStrBuf(WCC->CurRoom.RoomAide); StrBufAppendBuf(WCC->CurRoom.RoomAide, er_roomaide, 0); FlushStrBuf(WCC->CurRoom.XAPass); StrBufAppendBuf(WCC->CurRoom.XAPass, er_password, 0); WCC->CurRoom.BumpUsers = yesbstr("bump"); WCC->CurRoom.floorid = ibstr("er_floor"); succ1 = SetCurrentRoomFlags(&WCC->CurRoom); succ2 = SaveRoomAide (&WCC->CurRoom); if (succ1 + succ2 == 0) { AppendImportantMessage (_("Your changes have been saved."), -1); } output_headers(1, 1, 1, 0, 0, 0); do_template("room_edit"); wDumpContent(1); return; } /* * Display form for Invite, Kick, and show Who Knows a room */ void do_invt_kick(void) { StrBuf *Buf, *User; const StrBuf *UserNames; int Kick, Invite; wcsession *WCC = WC; if (GetCurrentRoomFlags(&WCC->CurRoom, 1) == 1) { const char *Pos; UserNames = sbstr("username"); Kick = havebstr("kick_button"); Invite = havebstr("invite_button"); User = NewStrBufPlain(NULL, StrLength(UserNames)); Buf = NewStrBuf(); Pos = ChrPtr(UserNames); while (Pos != StrBufNOTNULL) { StrBufExtract_NextToken(User, UserNames, &Pos, ','); StrBufTrim(User); if ((StrLength(User) > 0) && (Kick)) { serv_printf("KICK %s", ChrPtr(User)); if (StrBuf_ServGetln(Buf) < 0) break; if (GetServerStatus(Buf, NULL) != 2) { StrBufCutLeft(Buf, 4); AppendImportantMessage(SKEY(Buf)); } else { StrBufPrintf(Buf, _("User '%s' kicked out of room '%s'."), ChrPtr(User), ChrPtr(WCC->CurRoom.name) ); AppendImportantMessage(SKEY(Buf)); } } else if ((StrLength(User) > 0) && (Invite)) { serv_printf("INVT %s", ChrPtr(User)); if (StrBuf_ServGetln(Buf) < 0) break; if (GetServerStatus(Buf, NULL) != 2) { StrBufCutLeft(Buf, 4); AppendImportantMessage(SKEY(Buf)); } else { StrBufPrintf(Buf, _("User '%s' invited to room '%s'."), ChrPtr(User), ChrPtr(WCC->CurRoom.name) ); AppendImportantMessage(SKEY(Buf)); } } } } output_headers(1, 1, 1, 0, 0, 0); do_template("room_edit"); wDumpContent(1); } /* * Create a new room */ void entroom(void) { StrBuf *Line; const StrBuf *er_name; const StrBuf *er_type; const StrBuf *er_password; int er_floor; int er_num_type; int er_view; wcsession *WCC = WC; if (!havebstr("ok_button")) { AppendImportantMessage(_("Cancelled. No new room was created."), -1); display_main_menu(); return; } er_name = sbstr("er_name"); er_type = sbstr("type"); er_password = sbstr("er_password"); er_floor = ibstr("er_floor"); er_view = ibstr("er_view"); er_num_type = 0; if (!strcmp(ChrPtr(er_type), "hidden")) er_num_type = 1; else if (!strcmp(ChrPtr(er_type), "passworded")) er_num_type = 2; else if (!strcmp(ChrPtr(er_type), "invonly")) er_num_type = 3; else if (!strcmp(ChrPtr(er_type), "personal")) er_num_type = 4; serv_printf("CRE8 1|%s|%d|%s|%d|%d|%d", ChrPtr(er_name), er_num_type, ChrPtr(er_password), er_floor, 0, er_view); Line = NewStrBuf(); StrBuf_ServGetln(Line); if (GetServerStatusMsg(Line, NULL, 1, 2) != 2) { FreeStrBuf(&Line); display_main_menu(); return; } /** TODO: Room created, now update the left hand icon bar for this user */ gotoroom(er_name); serv_printf("VIEW %d", er_view); StrBuf_ServGetln(Line); FreeStrBuf(&Line); /* TODO: should we care about errors? */ WCC->CurRoom.view = er_view; if ( (WCC != NULL) && ( (WCC->CurRoom.RAFlags & UA_ADMINALLOWED) != 0) ) { output_headers(1, 1, 1, 0, 0, 0); do_template("room_edit"); wDumpContent(1); } else { smart_goto(WCC->CurRoom.name); } FreeStrBuf(&Line); } /* * Change the view for this room */ void change_view(void) { int newview; char buf[SIZ]; newview = lbstr("view"); serv_printf("VIEW %d", newview); serv_getln(buf, sizeof buf); WC->CurRoom.view = newview; smart_goto(WC->CurRoom.name); } /* * Set the message expire policy for this room and/or floor */ void set_room_policy(void) { StrBuf *Line; if (!havebstr("ok_button")) { AppendImportantMessage(_("Cancelled. Changes were not saved."), -1); output_headers(1, 1, 1, 0, 0, 0); do_template("room_edit"); wDumpContent(1); return; } Line = NewStrBuf(); serv_printf("SPEX room|%d|%d", ibstr("roompolicy"), ibstr("roomvalue")); StrBuf_ServGetln(Line); GetServerStatusMsg(Line, NULL, 1, 0); if (WC->axlevel >= 6) { serv_printf("SPEX floor|%d|%d", ibstr("floorpolicy"), ibstr("floorvalue")); StrBuf_ServGetln(Line); GetServerStatusMsg(Line, NULL, 1, 0); } FreeStrBuf(&Line); ReloadCurrentRoom(); output_headers(1, 1, 1, 0, 0, 0); do_template("room_edit"); wDumpContent(1); } /* * Perform changes to a room's network configuration */ void netedit(void) { char buf[SIZ]; char line[SIZ]; char cmpa0[SIZ]; char cmpa1[SIZ]; char cmpb0[SIZ]; char cmpb1[SIZ]; int i, num_addrs; StrBuf *Line; StrBuf *TmpBuf; int malias = 0; int malias_set_default = 0; char sepchar = '|'; int Done; line[0] = '\0'; if (havebstr("force_room")) { gotoroom(sbstr("force_room")); } /*/ TODO: do line dynamic! */ if (havebstr("line_pop3host")) { strcpy(line, bstr("prefix")); strcat(line, bstr("line_pop3host")); strcat(line, "|"); strcat(line, bstr("line_pop3user")); strcat(line, "|"); strcat(line, bstr("line_pop3pass")); strcat(line, "|"); strcat(line, ibstr("line_pop3keep") ? "1" : "0" ); strcat(line, "|"); sprintf(&line[strlen(line)],"%ld", lbstr("line_pop3int")); strcat(line, bstr("suffix")); } else if (havebstr("line")) { strcpy(line, bstr("prefix")); strcat(line, bstr("line")); strcat(line, bstr("suffix")); } else if (havebstr("alias")) { const char *domain; domain = bstr("aliasdomain"); if ((domain == NULL) || IsEmptyStr(domain)) { malias_set_default = 1; strcpy(line, bstr("prefix")); strcat(line, bstr("default_aliasdomain")); } else { malias = 1; sepchar = ','; strcat(line, bstr("prefix")); if (!IsEmptyStr(domain)) { strcat(line, "@"); strcat(line, domain); } strcat(line, ","); strcat(line, "room_"); strcat(line, ChrPtr(WC->CurRoom.name)); } } else { output_headers(1, 1, 1, 0, 0, 0); do_template("room_edit"); wDumpContent(1); return; } Line = NewStrBuf(); TmpBuf = NewStrBuf(); if (malias) serv_puts("GNET "FILE_MAILALIAS); else serv_puts("GNET"); StrBuf_ServGetln(Line); if (GetServerStatus(Line, NULL) != 1) { AppendImportantMessage(SRV_STATUS_MSG(Line)); FreeStrBuf(&Line); output_headers(1, 1, 1, 0, 0, 0); do_template("room_edit"); wDumpContent(1); return; } /** This loop works for add *or* remove. Spiffy, eh? */ Done = 0; extract_token(cmpb0, line, 0, sepchar, sizeof cmpb0); extract_token(cmpb1, line, 1, sepchar, sizeof cmpb1); while (!Done && StrBuf_ServGetln(Line)>=0) { if ( (StrLength(Line)==3) && !strcmp(ChrPtr(Line), "000")) { Done = 1; } else { if (StrLength(Line) == 0) continue; if (malias_set_default) { if (strncasecmp(ChrPtr(Line), HKEY("roommailalias|")) != 0) { StrBufAppendBufPlain(Line, HKEY("\n"), 0); StrBufAppendBuf(TmpBuf, Line, 0); } } else { extract_token(cmpa0, ChrPtr(Line), 0, sepchar, sizeof cmpa0); extract_token(cmpa1, ChrPtr(Line), 1, sepchar, sizeof cmpa1); if ( (strcasecmp(cmpa0, cmpb0)) || (strcasecmp(cmpa1, cmpb1)) ) { StrBufAppendBufPlain(Line, HKEY("\n"), 0); StrBufAppendBuf(TmpBuf, Line, 0); } } } } if (malias) serv_puts("SNET "FILE_MAILALIAS); else serv_puts("SNET"); StrBuf_ServGetln(Line); if (GetServerStatus(Line, NULL) != 4) { AppendImportantMessage(SRV_STATUS_MSG(Line)); output_headers(1, 1, 1, 0, 0, 0); do_template("room_edit"); wDumpContent(1); FreeStrBuf(&Line); FreeStrBuf(&TmpBuf); return; } serv_putbuf(TmpBuf); FreeStrBuf(&TmpBuf); if (havebstr("add_button")) { num_addrs = num_tokens(bstr("line"), ','); if (num_addrs < 2) { /* just adding one node or address */ serv_puts(line); } else { /* adding multiple addresses separated by commas */ for (i=0; iCurRoom); FreeStrBuf(&Line); output_headers(1, 1, 1, 0, 0, 0); do_template("room_edit"); wDumpContent(1); } /* * Known rooms list (box style) */ void knrooms(void) { DeleteHash(&WC->Rooms); output_headers(1, 1, 1, 0, 0, 0); do_template("knrooms"); wDumpContent(1); } /******************************************************************************* ********************** FLOOR Coomands ***************************************** ******************************************************************************/ /* * delete the actual floor */ void delete_floor(void) { int floornum; StrBuf *Buf; const char *Err; floornum = ibstr("floornum"); Buf = NewStrBuf(); serv_printf("KFLR %d|1", floornum); StrBufTCP_read_line(Buf, &WC->serv_sock, 0, &Err); if (GetServerStatus(Buf, NULL) == 2) { StrBufPlain(Buf, _("Floor has been deleted."),-1); } else { StrBufCutLeft(Buf, 4); } AppendImportantMessage (SKEY(Buf)); FlushRoomlist(); http_transmit_thing(ChrPtr(do_template("floors")), 0); FreeStrBuf(&Buf); } /* * start creating a new floor */ void create_floor(void) { StrBuf *Buf; const char *Err; Buf = NewStrBuf(); serv_printf("CFLR %s|1", bstr("floorname")); StrBufTCP_read_line(Buf, &WC->serv_sock, 0, &Err); if (GetServerStatus(Buf, NULL) == 2) { StrBufPlain(Buf, _("New floor has been created."),-1); } else { StrBufCutLeft(Buf, 4); } AppendImportantMessage (SKEY(Buf)); FlushRoomlist(); http_transmit_thing(ChrPtr(do_template("floors")), 0); FreeStrBuf(&Buf); } /* * rename this floor */ void rename_floor(void) { StrBuf *Buf; Buf = NewStrBuf(); FlushRoomlist(); serv_printf("EFLR %d|%s", ibstr("floornum"), bstr("floorname")); StrBuf_ServGetln(Buf); StrBufCutLeft(Buf, 4); AppendImportantMessage (SKEY(Buf)); http_transmit_thing(ChrPtr(do_template("floors")), 0); FreeStrBuf(&Buf); } void jsonRoomFlr(void) { /* Send as our own (application/json) content type */ hprintf("HTTP/1.1 200 OK\r\n"); hprintf("Content-type: application/json; charset=utf-8\r\n"); hprintf("Server: %s / %s\r\n", PACKAGE_STRING, ChrPtr(WC->serv_info->serv_software)); hprintf("Connection: close\r\n"); hprintf("Pragma: no-cache\r\nCache-Control: no-store\r\nExpires:-1\r\n"); begin_burst(); DoTemplate(HKEY("json_roomflr"),NULL,&NoCtx); end_burst(); } void _FlushRoomList(wcsession *WCC) { free_march_list(WCC); DeleteHash(&WCC->Floors); DeleteHash(&WCC->Rooms); DeleteHash(&WCC->FloorsByName); FlushFolder(&WCC->CurRoom); } void ReloadCurrentRoom(void) { wcsession *WCC = WC; StrBuf *CurRoom; CurRoom = WCC->CurRoom.name; WCC->CurRoom.name = NULL; _FlushRoomList(WCC); gotoroom(CurRoom); FreeStrBuf(&CurRoom); } void FlushRoomlist(void) { wcsession *WCC = WC; _FlushRoomList(WCC); } void InitModule_ROOMOPS (void) { RegisterPreference("roomlistview", _("Room list view"), PRF_STRING, NULL); RegisterPreference("emptyfloors", _("Show empty floors"), PRF_YESNO, NULL); WebcitAddUrlHandler(HKEY("json_roomflr"), "", 0, jsonRoomFlr, 0); WebcitAddUrlHandler(HKEY("delete_floor"), "", 0, delete_floor, 0); WebcitAddUrlHandler(HKEY("rename_floor"), "", 0, rename_floor, 0); WebcitAddUrlHandler(HKEY("create_floor"), "", 0, create_floor, 0); WebcitAddUrlHandler(HKEY("knrooms"), "", 0, knrooms, ANONYMOUS); WebcitAddUrlHandler(HKEY("dotgoto"), "", 0, dotgoto, NEED_URL); WebcitAddUrlHandler(HKEY("dotskip"), "", 0, dotskip, NEED_URL); WebcitAddUrlHandler(HKEY("goto_private"), "", 0, goto_private, NEED_URL); WebcitAddUrlHandler(HKEY("zap"), "", 0, zap, 0); WebcitAddUrlHandler(HKEY("entroom"), "", 0, entroom, 0); WebcitAddUrlHandler(HKEY("do_invt_kick"), "", 0, do_invt_kick, 0); WebcitAddUrlHandler(HKEY("netedit"), "", 0, netedit, 0); WebcitAddUrlHandler(HKEY("editroom"), "", 0, editroom, 0); WebcitAddUrlHandler(HKEY("delete_room"), "", 0, delete_room, 0); WebcitAddUrlHandler(HKEY("set_room_policy"), "", 0, set_room_policy, 0); WebcitAddUrlHandler(HKEY("changeview"), "", 0, change_view, 0); WebcitAddUrlHandler(HKEY("toggle_self_service"), "", 0, toggle_self_service, 0); REGISTERTokenParamDefine(QR_PERMANENT); REGISTERTokenParamDefine(QR_INUSE); REGISTERTokenParamDefine(QR_PRIVATE); REGISTERTokenParamDefine(QR_PASSWORDED); REGISTERTokenParamDefine(QR_GUESSNAME); REGISTERTokenParamDefine(QR_DIRECTORY); REGISTERTokenParamDefine(QR_UPLOAD); REGISTERTokenParamDefine(QR_DOWNLOAD); REGISTERTokenParamDefine(QR_VISDIR); REGISTERTokenParamDefine(QR_ANONONLY); REGISTERTokenParamDefine(QR_ANONOPT); REGISTERTokenParamDefine(QR_NETWORK); REGISTERTokenParamDefine(QR_PREFONLY); REGISTERTokenParamDefine(QR_READONLY); REGISTERTokenParamDefine(QR_MAILBOX); REGISTERTokenParamDefine(QR2_SYSTEM); REGISTERTokenParamDefine(QR2_SELFLIST); REGISTERTokenParamDefine(QR2_COLLABDEL); REGISTERTokenParamDefine(QR2_SUBJECTREQ); REGISTERTokenParamDefine(QR2_SMTP_PUBLIC); REGISTERTokenParamDefine(QR2_MODERATED); REGISTERTokenParamDefine(UA_KNOWN); REGISTERTokenParamDefine(UA_GOTOALLOWED); REGISTERTokenParamDefine(UA_HASNEWMSGS); REGISTERTokenParamDefine(UA_ZAPPED); REGISTERTokenParamDefine(UA_POSTALLOWED); REGISTERTokenParamDefine(UA_ADMINALLOWED); REGISTERTokenParamDefine(UA_DELETEALLOWED); REGISTERTokenParamDefine(UA_REPLYALLOWED); REGISTERTokenParamDefine(UA_ISTRASH); REGISTERTokenParamDefine(US_NEEDVALID); REGISTERTokenParamDefine(US_PERM); REGISTERTokenParamDefine(US_LASTOLD); REGISTERTokenParamDefine(US_EXPERT); REGISTERTokenParamDefine(US_UNLISTED); REGISTERTokenParamDefine(US_NOPROMPT); REGISTERTokenParamDefine(US_PROMPTCTL); REGISTERTokenParamDefine(US_DISAPPEAR); REGISTERTokenParamDefine(US_REGIS); REGISTERTokenParamDefine(US_PAGINATOR); REGISTERTokenParamDefine(US_INTERNET); REGISTERTokenParamDefine(US_FLOORS); REGISTERTokenParamDefine(US_COLOR); REGISTERTokenParamDefine(US_USER_SET); REGISTERTokenParamDefine(VIEW_BBS); REGISTERTokenParamDefine(VIEW_MAILBOX); REGISTERTokenParamDefine(VIEW_ADDRESSBOOK); REGISTERTokenParamDefine(VIEW_CALENDAR); REGISTERTokenParamDefine(VIEW_TASKS); REGISTERTokenParamDefine(VIEW_NOTES); REGISTERTokenParamDefine(VIEW_WIKI); REGISTERTokenParamDefine(VIEW_CALBRIEF); REGISTERTokenParamDefine(VIEW_JOURNAL); REGISTERTokenParamDefine(VIEW_BLOG); REGISTERTokenParamDefine(VIEW_QUEUE); /* GNET types: */ /* server internal, we need to know but ignore them. */ REGISTERTokenParamDefine(subpending); REGISTERTokenParamDefine(unsubpending); REGISTERTokenParamDefine(lastsent); REGISTERTokenParamDefine(ignet_push_share); { /* these are the parts of an IGNET push config */ REGISTERTokenParamDefine(GNET_IGNET_NODE); REGISTERTokenParamDefine(GNET_IGNET_ROOM); } REGISTERTokenParamDefine(listrecp); REGISTERTokenParamDefine(digestrecp); REGISTERTokenParamDefine(pop3client); { /* These are the parts of a pop3 client line... */ REGISTERTokenParamDefine(GNET_POP3_HOST); REGISTERTokenParamDefine(GNET_POP3_USER); REGISTERTokenParamDefine(GNET_POP3_DONT_DELETE_REMOTE); REGISTERTokenParamDefine(GNET_POP3_INTERVAL); } REGISTERTokenParamDefine(rssclient); REGISTERTokenParamDefine(participate); REGISTERTokenParamDefine(roommailalias); } void SessionDestroyModule_ROOMOPS (wcsession *sess) { _FlushRoomList (sess); } webcit-8.24-dfsg.orig/po/0000755000175000017500000000000012271477123015016 5ustar michaelmichaelwebcit-8.24-dfsg.orig/po/webcit/0000755000175000017500000000000012271477123016273 5ustar michaelmichaelwebcit-8.24-dfsg.orig/po/webcit/fi.po0000644000175000017500000025301512271477123017237 0ustar michaelmichael# Finnish translation for citadel # Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 # This file is distributed under the same license as the citadel package. # FIRST AUTHOR , 2011. # msgid "" msgstr "" "Project-Id-Version: citadel\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-03-20 01:03-0400\n" "PO-Revision-Date: 2011-01-15 08:57+0000\n" "Last-Translator: Esa Hulkko \n" "Language-Team: Finnish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2012-08-01 04:33+0000\n" "X-Generator: Launchpad (build 15719)\n" "Language: fi\n" #: ../../roomops.c:708 ../../roomops.c:1005 ../../sieve.c:364 msgid "Cancelled. Changes were not saved." msgstr "Peruutettu. Muutoksia ei tallennettu." #: ../../roomops.c:838 ../../sieve.c:417 msgid "Your changes have been saved." msgstr "Muutoksesi on tallennettu." #: ../../roomops.c:881 #, c-format msgid "User '%s' kicked out of room '%s'." msgstr "" #: ../../roomops.c:898 #, c-format msgid "User '%s' invited to room '%s'." msgstr "" #: ../../roomops.c:927 msgid "Cancelled. No new room was created." msgstr "" #: ../../roomops.c:1187 msgid "Floor has been deleted." msgstr "" #: ../../roomops.c:1211 msgid "New floor has been created." msgstr "" #: ../../roomops.c:1290 msgid "Room list view" msgstr "" #: ../../roomops.c:1293 msgid "Show empty floors" msgstr "" #: ../../roomviews.c:50 msgid "Bulletin Board" msgstr "" #: ../../roomviews.c:51 msgid "Mail Folder" msgstr "" #: ../../roomviews.c:52 msgid "Address Book" msgstr "" #: ../../roomviews.c:53 ../../static/t/iconbar.html:24 #: ../../static/t/iconbar/edit.html:55 msgid "Calendar" msgstr "" #: ../../roomviews.c:54 msgid "Task List" msgstr "" #: ../../roomviews.c:55 msgid "Notes List" msgstr "" #: ../../roomviews.c:56 msgid "Wiki" msgstr "" #: ../../roomviews.c:57 msgid "Calendar List" msgstr "" #: ../../roomviews.c:58 msgid "Journal" msgstr "" #: ../../roomviews.c:59 msgid "Drafts" msgstr "" #: ../../roomviews.c:60 msgid "Blog" msgstr "" #: ../../tasks.c:93 msgid "Completed?" msgstr "Valmis?" #: ../../tasks.c:95 msgid "Name of task" msgstr "Tehtävän nimi" #: ../../tasks.c:97 msgid "Date due" msgstr "Tavoitepäivämäärä" #: ../../tasks.c:99 msgid "Category" msgstr "Kategoria" #: ../../tasks.c:101 msgid "Show All" msgstr "Näytä kaikki" #: ../../tasks.c:223 msgid "Edit task" msgstr "Muokkaa tehtävää" #: ../../tasks.c:242 ../../calendar.c:98 ../../calendar_view.c:298 #: ../../calendar_view.c:959 ../../calendar_view.c:1003 #: ../../calendar_view.c:1084 msgid "Summary:" msgstr "Yhteenveto:" #: ../../tasks.c:253 msgid "Start date:" msgstr "Aloituspäivämäärä:" #: ../../tasks.c:261 ../../tasks.c:291 msgid "No date" msgstr "Ei päivämäärää" #: ../../tasks.c:265 ../../tasks.c:294 msgid "or" msgstr "tai" #: ../../tasks.c:279 ../../tasks.c:308 msgid "Time associated" msgstr "" #: ../../tasks.c:283 msgid "Due date:" msgstr "Tavoitepäivämäärä:" #: ../../tasks.c:312 msgid "Completed:" msgstr "Valmis:" #: ../../tasks.c:323 msgid "Category:" msgstr "Kategoria:" #: ../../tasks.c:333 ../../calendar.c:159 ../../static/t/files.html:12 msgid "Description:" msgstr "Kuvaus:" #: ../../tasks.c:351 ../../event.c:764 msgid "Save" msgstr "Tallenna" #: ../../tasks.c:352 ../../event.c:765 ../../static/t/aide/inet/section.html:5 #: ../../static/t/view_blog/comment.html:12 #: ../../static/t/view_blog/post.html:15 ../../static/t/view_message.html:32 #: ../../static/t/navbar.html:116 ../../static/t/msg_listview.html:27 msgid "Delete" msgstr "Poista" #: ../../tasks.c:353 ../../vcard_edit.c:1216 ../../paging.c:66 #: ../../event.c:767 ../../sysmsgs.c:69 ../../who.c:200 ../../auth.c:812 #: ../../static/t/edit_message.html:135 ../../static/t/confirmlogoff.html:4 msgid "Cancel" msgstr "Keskeytä" #: ../../tasks.c:423 ../../calendar_view.c:1379 msgid "Untitled Task" msgstr "" #: ../../fmt_date.c:310 msgid "Time format" msgstr "" #: ../../listsub.c:54 ../../static/t/listsub/display.html:5 msgid "List subscription" msgstr "" #: ../../listsub.c:67 ../../static/t/listsub/display.html:9 msgid "List subscribe/unsubscribe" msgstr "" #: ../../listsub.c:87 ../../static/t/listsub/display.html:15 #: ../../static/t/listsub/display.html:34 msgid "Confirmation request sent" msgstr "" #: ../../listsub.c:89 #, c-format msgid "" "You are subscribing %s to the %s mailing list. The " "listserver has sent you an e-mail with one additional Web link for you to " "click on to confirm your subscription. This extra step is for your " "protection, as it prevents others from being able to subscribe you to lists " "without your consent.

    Please click on the link which is being e-" "mailed to you and your subscription will be confirmed.
    \n" msgstr "" #: ../../listsub.c:102 ../../static/t/listsub/display.html:24 msgid "Go back..." msgstr "" #: ../../listsub.c:253 ../../listsub.c:291 ../../listsub.c:327 #: ../../listsub.c:334 msgid "You need to specify the mailinglist to subscribe to." msgstr "" #: ../../listsub.c:260 ../../listsub.c:298 msgid "You need to specify the email address you'd like to subscribe with." msgstr "" #: ../../blogview_renderer.c:58 ../../blogview_renderer.c:74 #, c-format msgid "%d comments" msgstr "" #: ../../blogview_renderer.c:61 ../../blogview_renderer.c:77 msgid "permalink" msgstr "" #: ../../blogview_renderer.c:302 msgid "Newer posts" msgstr "uudempia virkaa" #: ../../blogview_renderer.c:311 msgid "Older posts" msgstr "vanhemmat viestit" #: ../../useredit.c:629 msgid "" "An error occurred while trying to create or edit this address book entry." msgstr "" #: ../../useredit.c:717 msgid "Changes were not saved." msgstr "" #: ../../useredit.c:782 msgid "A new user has been created." msgstr "" #: ../../useredit.c:786 msgid "" "You are attempting to create a new user from within Citadel while running in " "host based authentication mode. In this mode, you must create new users on " "the host system, not within Citadel." msgstr "" #: ../../bbsview_renderer.c:312 msgid "Go to page: " msgstr "" #: ../../bbsview_renderer.c:354 msgid "First" msgstr "" #: ../../bbsview_renderer.c:360 msgid "Last" msgstr "" #: ../../graphics.c:56 msgid "Graphics upload has been cancelled." msgstr "" #: ../../graphics.c:62 msgid "You didn't upload a file." msgstr "" #: ../../graphics.c:112 msgid "your photo" msgstr "" #: ../../graphics.c:119 msgid "the icon for this room" msgstr "" #: ../../graphics.c:127 msgid "the Greetingpicture for the login prompt" msgstr "" #: ../../graphics.c:135 msgid "the Logoff banner picture" msgstr "" #: ../../graphics.c:146 msgid "the icon for this floor" msgstr "" #: ../../calendar_tools.c:100 msgid "Hour: " msgstr "" #: ../../calendar_tools.c:120 msgid "Minute: " msgstr "" #: ../../calendar_tools.c:191 msgid "(status unknown)" msgstr "" #: ../../calendar_tools.c:207 msgid "(needs action)" msgstr "" #: ../../calendar_tools.c:210 msgid "(accepted)" msgstr "" #: ../../calendar_tools.c:213 msgid "(declined)" msgstr "" #: ../../calendar_tools.c:216 msgid "(tenative)" msgstr "alustava" #: ../../calendar_tools.c:219 msgid "(delegated)" msgstr "" #: ../../calendar_tools.c:222 msgid "(completed)" msgstr "valmis" #: ../../calendar_tools.c:225 msgid "(in process)" msgstr "käsittelee" #: ../../calendar_tools.c:228 msgid "(none)" msgstr "(ei mitään)" #: ../../notes.c:343 msgid "Click on any note to edit it." msgstr "" #: ../../vcard_edit.c:175 ../../vcard_edit.c:178 msgid "(no name)" msgstr "(nimetön)" #: ../../vcard_edit.c:443 msgid " (work)" msgstr "" #: ../../vcard_edit.c:445 msgid " (home)" msgstr "" #: ../../vcard_edit.c:447 msgid " (cell)" msgstr "" #: ../../vcard_edit.c:458 ../../vcard_edit.c:1120 msgid "Address:" msgstr "Osoite:" #: ../../vcard_edit.c:526 msgid "Telephone:" msgstr "" #: ../../vcard_edit.c:531 msgid "E-mail:" msgstr "Sähköpostiosoite:" #: ../../vcard_edit.c:779 msgid "This address book is empty." msgstr "Tämä osoitekirja on tyhjä." #: ../../vcard_edit.c:793 msgid "An internal error has occurred." msgstr "" #: ../../vcard_edit.c:944 msgid "Error" msgstr "Virhe" #: ../../vcard_edit.c:1048 msgid "Edit contact information" msgstr "" #: ../../vcard_edit.c:1068 msgid "Prefix" msgstr "" #: ../../vcard_edit.c:1068 msgid "First Name" msgstr "Etunimi" #: ../../vcard_edit.c:1068 msgid "Middle Name" msgstr "Toinen nimi" #: ../../vcard_edit.c:1068 msgid "Last Name" msgstr "Sukunimi" #: ../../vcard_edit.c:1068 msgid "Suffix" msgstr "Jälkiliite" #: ../../vcard_edit.c:1089 msgid "Display name:" msgstr "Näyttönimi:" #: ../../vcard_edit.c:1096 msgid "Title:" msgstr "Nimike:" #: ../../vcard_edit.c:1103 msgid "Organization:" msgstr "Organisaatio:" #: ../../vcard_edit.c:1114 msgid "PO box:" msgstr "Postilokero:" #: ../../vcard_edit.c:1130 msgid "City:" msgstr "Kaupunki:" #: ../../vcard_edit.c:1136 msgid "State:" msgstr "Osavaltio:" #: ../../vcard_edit.c:1142 msgid "ZIP code:" msgstr "Postinumero:" #: ../../vcard_edit.c:1148 msgid "Country:" msgstr "Maa:" #: ../../vcard_edit.c:1158 msgid "Home telephone:" msgstr "Kotipuhelin:" #: ../../vcard_edit.c:1164 msgid "Work telephone:" msgstr "Työpuhelin:" #: ../../vcard_edit.c:1170 msgid "Mobile telephone:" msgstr "Matkapuhelin:" #: ../../vcard_edit.c:1176 msgid "Fax number:" msgstr "FAX:" #: ../../vcard_edit.c:1187 msgid "Primary Internet e-mail address" msgstr "Ensisijainen sähköpostiosoite:" #: ../../vcard_edit.c:1194 msgid "Internet e-mail aliases" msgstr "" #: ../../vcard_edit.c:1215 ../../sysmsgs.c:67 msgid "Save changes" msgstr "Tallenna muutokset" #: ../../vcard_edit.c:1261 msgid "Unable to enter the room to save your message" msgstr "" #: ../../vcard_edit.c:1265 msgid "Aborting." msgstr "" #: ../../vcard_edit.c:1297 ../../vcard_edit.c:1341 ../../auth.c:367 #: ../../auth.c:397 msgid "An error has occurred." msgstr "Tapahtui virhe." #: ../../vcard_edit.c:1399 msgid "Could Not decode vcard photo\n" msgstr "" #: ../../preferences.c:880 msgid "Cancelled. No settings were changed." msgstr "" #: ../../preferences.c:1092 msgid "Make this my start page" msgstr "Tee tästä aloitussivuni" #: ../../preferences.c:1130 msgid "This isn't allowed to become the start page." msgstr "Tästä ei voi tehdä aloitussivua" #: ../../preferences.c:1132 msgid "You no longer have a start page selected." msgstr "Aloitussivua ei ole enää valittu" #: ../../preferences.c:1182 msgid "Prefered startpage" msgstr "" #: ../../calendar.c:76 msgid "Meeting invitation" msgstr "" #: ../../calendar.c:79 msgid "Attendee's reply to your invitation" msgstr "" #: ../../calendar.c:82 msgid "Published event" msgstr "" #: ../../calendar.c:85 msgid "This is an unknown type of calendar item." msgstr "" #: ../../calendar.c:107 ../../calendar_view.c:306 ../../calendar_view.c:964 #: ../../calendar_view.c:1008 ../../calendar_view.c:1089 msgid "Location:" msgstr "Sijainti:" #: ../../calendar.c:132 ../../calendar_view.c:351 ../../calendar_view.c:970 msgid "Date:" msgstr "Päivämäärä:" #: ../../calendar.c:139 ../../calendar_view.c:373 ../../calendar_view.c:1013 #: ../../calendar_view.c:1099 msgid "Starting date/time:" msgstr "Alkamis päivä/aika:" #: ../../calendar.c:150 ../../calendar_view.c:376 ../../calendar_view.c:1015 #: ../../calendar_view.c:1101 msgid "Ending date/time:" msgstr "Loppumis päivä/aika:" #: ../../calendar.c:168 ../../event.c:90 msgid "Recurrence" msgstr "Toistuvuus" #: ../../calendar.c:169 ../../event.c:505 msgid "This is a recurring event" msgstr "" #: ../../calendar.c:178 msgid "Attendee:" msgstr "" #: ../../calendar.c:218 #, c-format msgid "This is an update of '%s' which is already in your calendar." msgstr "" #: ../../calendar.c:222 #, c-format msgid "This event would conflict with '%s' which is already in your calendar." msgstr "" #: ../../calendar.c:227 msgid "Update:" msgstr "" #: ../../calendar.c:228 msgid "CONFLICT:" msgstr "" #: ../../calendar.c:251 msgid "How would you like to respond to this invitation?" msgstr "" #: ../../calendar.c:252 msgid "Accept" msgstr "" #: ../../calendar.c:253 msgid "Tentative" msgstr "" #: ../../calendar.c:254 msgid "Decline" msgstr "" #: ../../calendar.c:271 msgid "Click Update to accept this reply and update your calendar." msgstr "" #: ../../calendar.c:272 msgid "Update" msgstr "" #: ../../calendar.c:273 msgid "Ignore" msgstr "" #: ../../calendar.c:295 msgid "There was an error parsing this calendar item." msgstr "" #: ../../calendar.c:328 msgid "" "You have accepted this meeting invitation. It has been entered into your " "calendar." msgstr "" #: ../../calendar.c:332 msgid "" "You have tentatively accepted this meeting invitation. It has been " "'pencilled in' to your calendar." msgstr "" #: ../../calendar.c:336 msgid "" "You have declined this meeting invitation. It has not been entered " "into your calendar." msgstr "" #: ../../calendar.c:341 msgid "A reply has been sent to the meeting organizer." msgstr "" #. / Translators: RSVP aka Répondez s'il-vous-plaît Is the term #. / that the recipient of an ical-invitation should please #. / answer this request. #: ../../calendar.c:376 msgid "Your calendar has been updated to reflect this RSVP." msgstr "" #: ../../calendar.c:378 msgid "" "You have chosen to ignore this RSVP. Your calendar has not been " "updated." msgstr "" #: ../../calendar.c:932 msgid "Calendar day view begins at:" msgstr "" #: ../../calendar.c:933 msgid "Calendar day view ends at:" msgstr "" #: ../../calendar.c:934 msgid "Week starts on:" msgstr "" #: ../../paging.c:35 msgid "Send instant message" msgstr "" #: ../../paging.c:43 msgid "Send an instant message to: " msgstr "" #: ../../paging.c:57 msgid "Enter message text:" msgstr "" #: ../../paging.c:65 ../../static/t/edit_message.html:109 msgid "Send message" msgstr "" #: ../../paging.c:84 msgid "Message was not sent." msgstr "" #: ../../paging.c:95 msgid "Message has been sent to " msgstr "" #: ../../iconbar.c:328 msgid "Iconbar Setting" msgstr "" #. #. * Set to 'unknown' right from the beginning. Unless we learn #. * something else, that's what we'll go with. #. #: ../../availability.c:148 msgid "availability unknown" msgstr "" #: ../../availability.c:169 msgid "free" msgstr "vapaa" #: ../../availability.c:179 msgid "BUSY" msgstr "VARATTU" #: ../../serv_func.c:193 msgid "" "This server is already serving its maximum number of users and cannot accept " "any additional logins at this time. Please try again later or contact your " "system administrator." msgstr "" #: ../../serv_func.c:198 ../../serv_func.c:227 msgid "Received unexpected answer from Citadel server; bailing out." msgstr "" #: ../../serv_func.c:236 #, c-format msgid "" "You are connected to a Citadel server running Citadel %d.%02d. \n" "In order to run this version of WebCit you must also have Citadel %d.%02d or " "newer.\n" "\n" "\n" msgstr "" #: ../../event.c:70 msgid "seconds" msgstr "sekuntia" #: ../../event.c:71 msgid "minutes" msgstr "minuuttia" #: ../../event.c:72 msgid "hours" msgstr "tuntia" #: ../../event.c:73 msgid "days" msgstr "vuorokautta" #: ../../event.c:74 msgid "weeks" msgstr "viikkoa" #: ../../event.c:75 msgid "months" msgstr "kuukautta" #: ../../event.c:76 msgid "years" msgstr "vuotta" #: ../../event.c:77 msgid "never" msgstr "ei koskaan" #: ../../event.c:81 msgid "first" msgstr "ensimmäinen" #: ../../event.c:82 msgid "second" msgstr "sekunti" #: ../../event.c:83 msgid "third" msgstr "3." #: ../../event.c:84 msgid "fourth" msgstr "4." #: ../../event.c:85 msgid "fifth" msgstr "5." #: ../../event.c:88 msgid "Event" msgstr "Tapahtuma" #: ../../event.c:89 ../../event.c:437 ../../event.c:449 msgid "Attendees" msgstr "Osallistujat" #: ../../event.c:167 msgid "Add or edit an event" msgstr "Lisää tai muokkaa tapahtumaa" #: ../../event.c:206 ../../static/t/iconbar.html:13 #: ../../static/t/iconbar/edit.html:29 msgid "Summary" msgstr "Yhteenveto" #: ../../event.c:217 msgid "Location" msgstr "Sijainti" #: ../../event.c:228 ../../calendar_view.c:760 msgid "Start" msgstr "Käynnistä" #: ../../event.c:271 ../../calendar_view.c:957 ../../calendar_view.c:986 msgid "All day event" msgstr "Kestää koko päivän" #: ../../event.c:277 ../../calendar_view.c:761 msgid "End" msgstr "" #: ../../event.c:327 ../../static/t/iconbar.html:34 #: ../../static/t/iconbar/edit.html:49 msgid "Notes" msgstr "Muistiinpanot" #: ../../event.c:369 msgid "Organizer" msgstr "" #: ../../event.c:374 msgid "(you are the organizer)" msgstr "" #: ../../event.c:392 msgid "Show time as:" msgstr "" #: ../../event.c:415 msgid "Free" msgstr "" #: ../../event.c:423 msgid "Busy" msgstr "" #: ../../event.c:440 msgid "(One per line)" msgstr "" #: ../../event.c:450 ../../static/t/edit_message.html:143 #: ../../static/t/iconbar.html:29 ../../static/t/iconbar/edit.html:42 msgid "Contacts" msgstr "" #: ../../event.c:513 msgid "Recurrence rule" msgstr "" #: ../../event.c:517 msgid "Repeats every" msgstr "" #. begin 'weekday_selector' div #: ../../event.c:535 msgid "on these weekdays:" msgstr "" #: ../../event.c:593 #, c-format msgid "on day %s%d%s of the month" msgstr "" #: ../../event.c:602 ../../event.c:664 msgid "on the " msgstr "" #: ../../event.c:626 msgid "of the month" msgstr "" #: ../../event.c:655 msgid "every " msgstr "" #: ../../event.c:656 msgid "year on this date" msgstr "" #: ../../event.c:688 ../../static/t/msg_listselector_bottom.html:7 #: ../../static/t/msg_listselector_top.html:7 msgid "of" msgstr "" #: ../../event.c:712 msgid "Recurrence range" msgstr "" #: ../../event.c:720 msgid "No ending date" msgstr "" #: ../../event.c:727 msgid "Repeat this event" msgstr "" #: ../../event.c:730 msgid "times" msgstr "" #: ../../event.c:738 msgid "Repeat this event until " msgstr "" #: ../../event.c:766 msgid "Check attendee availability" msgstr "" #: ../../event.c:858 ../../calendar_view.c:272 ../../calendar_view.c:468 #: ../../calendar_view.c:937 msgid "Untitled Event" msgstr "" #: ../../sysmsgs.c:52 #, c-format msgid "Edit %s" msgstr "Muokkaa %s" #: ../../sysmsgs.c:55 #, c-format msgid "" "Enter %s below. Text is formatted to the reader's browser. A newline is " "forced by preceding the next line by a blank." msgstr "" #: ../../sysmsgs.c:89 #, c-format msgid "Cancelled. %s was not saved." msgstr "" #: ../../sysmsgs.c:109 #, fuzzy msgid " has been saved." msgstr "%s on tallennettu." #: ../../sysmsgs.c:116 ../../sysmsgs.c:117 msgid "Room info" msgstr "" #: ../../sysmsgs.c:122 ../../sysmsgs.c:124 msgid "Your bio" msgstr "" #: ../../calendar_view.c:297 ../../calendar_view.c:958 #: ../../calendar_view.c:1002 ../../calendar_view.c:1083 #: ../../static/t/sieve/display_one.html:20 msgid "From" msgstr "Lähettäjä:" #: ../../calendar_view.c:355 ../../calendar_view.c:974 msgid "Starting date:" msgstr "" #: ../../calendar_view.c:361 ../../calendar_view.c:976 msgid "Ending date:" msgstr "c" #: ../../calendar_view.c:369 ../../calendar_view.c:1095 msgid "Date/time:" msgstr "Päiväys/aika:" #: ../../calendar_view.c:386 ../../calendar_view.c:980 #: ../../calendar_view.c:1018 ../../calendar_view.c:1105 #: ../../static/t/room/edit/tab_share.html:32 msgid "Notes:" msgstr "Muistiinpanot:" #: ../../calendar_view.c:585 ../../calendar_view.c:721 msgid "previous" msgstr "edellinen" #: ../../calendar_view.c:597 ../../calendar_view.c:733 #: ../../calendar_view.c:1308 msgid "next" msgstr "seuraava" #: ../../calendar_view.c:756 msgid "Week" msgstr "Viikko" #: ../../calendar_view.c:758 msgid "Hours" msgstr "Tuntia" #: ../../calendar_view.c:759 ../../static/t/sieve/display_one.html:22 #: ../../static/t/msg_listview.html:9 msgid "Subject" msgstr "aihe" #: ../../calendar_view.c:1001 ../../calendar_view.c:1024 msgid "Ongoing event" msgstr "Menneillään oleva tapahtuma" #: ../../messages.c:70 msgid "ERROR:" msgstr "" #: ../../messages.c:88 msgid "Empty message" msgstr "" #: ../../messages.c:1010 msgid "Cancelled. Message was not posted." msgstr "" #: ../../messages.c:1013 msgid "Automatically cancelled because you have already saved this message." msgstr "" #: ../../messages.c:1037 msgid "Saved to Drafts failed: " msgstr "" #: ../../messages.c:1102 msgid "Refusing to post empty message.\n" msgstr "" #: ../../messages.c:1128 msgid "Message has been saved to Drafts.\n" msgstr "" #: ../../messages.c:1137 msgid "Message has been sent.\n" msgstr "" #: ../../messages.c:1140 msgid "Message has been posted.\n" msgstr "" #: ../../messages.c:1679 msgid "The message was not moved." msgstr "" #: ../../messages.c:1719 #, c-format msgid "An error occurred while retrieving this part: %s/%s\n" msgstr "" #: ../../messages.c:1796 #, c-format msgid "An error occurred while retrieving this part: %s\n" msgstr "" #: ../../messages.c:1956 msgid "Attach signature to email messages?" msgstr "" #: ../../messages.c:1959 msgid "Use this signature:" msgstr "" #: ../../messages.c:1961 msgid "Default character set for email headers:" msgstr "" #: ../../messages.c:1964 msgid "Preferred email address" msgstr "" #: ../../messages.c:1966 msgid "Preferred display name for email messages" msgstr "" #: ../../messages.c:1970 msgid "Preferred display name for bulletin board posts" msgstr "" #: ../../messages.c:1973 msgid "Mailbox view mode" msgstr "" #: ../../inetconf.c:110 ../../inetconf.c:119 ../../inetconf.c:133 #: ../../inetconf.c:159 ../../netconf.c:156 ../../netconf.c:183 #: ../../netconf.c:191 ../../netconf.c:239 ../../netconf.c:247 msgid "Invalid Parameter" msgstr "" #: ../../inetconf.c:126 #, fuzzy msgid " has been deleted." msgstr "%s on tallennettu." #. added status message #: ../../inetconf.c:144 msgid " added." msgstr "" #: ../../who.c:154 msgid "Edit your session display" msgstr "" #: ../../who.c:158 msgid "" "This screen allows you to change the way your session appears in the 'Who is " "online' listing. To turn off any 'fake' name you've previously set, simply " "click the appropriate 'change' button without typing anything in the " "corresponding box. " msgstr "" #: ../../who.c:171 msgid "Room name:" msgstr "" #: ../../who.c:176 msgid "Change room name" msgstr "" #: ../../who.c:180 msgid "Host name:" msgstr "" #: ../../who.c:185 msgid "Change host name" msgstr "" #: ../../who.c:190 ../../static/t/aide/edituser/detailview.html:20 #: ../../static/t/openid_manual_create.html:9 #: ../../static/t/get_logged_in.html:57 ../../static/t/get_logged_in.html:72 msgid "User name:" msgstr "Käyttäjänimi:" #: ../../who.c:195 msgid "Change user name" msgstr "Vaihda käyttäjänimeä" #: ../../siteconfig.c:46 ../../siteconfig.c:64 ../../roomlist.c:44 #: ../../roomlist.c:394 ../../static/t/room/edit/tab_expire.html:72 #: ../../static/t/room/edit/tab_config.html:149 #: ../../static/t/room/edit/tab_access.html:42 msgid "Higher access is required to access this function." msgstr "" #: ../../siteconfig.c:256 msgid "WARNING: Failed to parse Server Config; do you run a to new citserver?" msgstr "" #: ../../siteconfig.c:319 msgid "Your system configuration has been updated." msgstr "Järjestelmän asetukset on päivitetty." #: ../../wiki.c:69 ../../wiki.c:162 ../../wiki.c:282 #, c-format msgid "There is no room called '%s'." msgstr "" #: ../../wiki.c:76 #, c-format msgid "'%s' is not a Wiki room." msgstr "" #: ../../wiki.c:110 #, c-format msgid "There is no page called '%s' here." msgstr "" #: ../../wiki.c:112 msgid "" "Select the 'Edit this page' link in the room banner if you would like to " "create this page." msgstr "" #: ../../wiki.c:181 ../../static/t/msg_listview.html:11 msgid "Date" msgstr "" #: ../../wiki.c:182 msgid "Author" msgstr "" #: ../../wiki.c:209 ../../wiki.c:218 msgid "(show)" msgstr "" #: ../../wiki.c:211 ../../static/t/navbar.html:145 msgid "Current version" msgstr "" #: ../../wiki.c:223 msgid "(revert)" msgstr "" #: ../../wiki.c:300 msgid "Page title" msgstr "" #: ../../webcit.c:316 msgid "Authorization Required" msgstr "" #: ../../webcit.c:324 #, c-format msgid "" "The resource you requested requires a valid username and password. You could " "not be logged in: %s\n" msgstr "" #: ../../webcit.c:647 ../../auth.c:526 msgid "" "This program was unable to connect or stay connected to the Citadel server. " "Please report this problem to your system administrator." msgstr "" #: ../../webcit.c:654 ../../auth.c:532 msgid "Read More..." msgstr "Lue lisää..." #: ../../smtpqueue.c:134 ../../static/t/aide/ignetconf/section.html:5 #: ../../static/t/view_mailq/message.html:2 msgid "(Delete)" msgstr "" #: ../../smtpqueue.c:334 msgid "First Attempt pending" msgstr "" #: ../../roomlist.c:99 msgid "My Folders" msgstr "" #: ../../downloads.c:289 #, c-format msgid "An error occurred while retrieving this file: %s\n" msgstr "" #: ../../roomtokens.c:572 msgid "file" msgstr "" #: ../../roomtokens.c:574 msgid "files" msgstr "" #: ../../summary.c:128 msgid "(None)" msgstr "(Ei mitään)" #: ../../summary.c:184 msgid "(Nothing)" msgstr "(Ei mitään)" #: ../../msg_renderers.c:579 ../../static/t/who/bio.html:15 msgid "edit" msgstr "" #: ../../msg_renderers.c:1119 msgid "I don't know how to display " msgstr "" #: ../../msg_renderers.c:1353 msgid "(no subject)" msgstr "" #: ../../addressbook_popup.c:186 msgid "Add" msgstr "Lisää" #. an erased user #: ../../auth.c:30 ../../static/t/aide/edituser/detailview.html:43 #: ../../static/t/aide/siteconfig/tab_access.html:40 #: ../../static/t/aide/siteconfig/tab_access.html:51 msgid "Deleted" msgstr "Tuhottu" #. a new user #: ../../auth.c:33 ../../static/t/aide/edituser/detailview.html:44 #: ../../static/t/aide/siteconfig/tab_access.html:41 #: ../../static/t/aide/siteconfig/tab_access.html:52 #: ../../static/t/get_logged_in.html:79 msgid "New User" msgstr "Uusi käyttäjä" #. a trouble maker #: ../../auth.c:36 ../../static/t/aide/edituser/detailview.html:45 #: ../../static/t/aide/siteconfig/tab_access.html:42 #: ../../static/t/aide/siteconfig/tab_access.html:53 msgid "Problem User" msgstr "" #. user with normal privileges #: ../../auth.c:39 ../../static/t/aide/edituser/detailview.html:46 #: ../../static/t/aide/siteconfig/tab_access.html:43 #: ../../static/t/aide/siteconfig/tab_access.html:54 msgid "Local User" msgstr "Paikallinen käyttäjä" #. a user that may access network resources #: ../../auth.c:42 ../../static/t/aide/edituser/detailview.html:47 #: ../../static/t/aide/siteconfig/tab_access.html:44 #: ../../static/t/aide/siteconfig/tab_access.html:55 msgid "Network User" msgstr "Verkkokäyttäjä" #. a moderator #: ../../auth.c:45 ../../static/t/aide/edituser/detailview.html:48 #: ../../static/t/aide/siteconfig/tab_access.html:45 #: ../../static/t/aide/siteconfig/tab_access.html:56 msgid "Preferred User" msgstr "Ylläpitäjä" #. chief #: ../../auth.c:48 ../../static/t/aide/edituser/detailview.html:49 #: ../../static/t/aide/siteconfig/tab_access.html:46 #: ../../static/t/aide/siteconfig/tab_access.html:57 msgid "Admin" msgstr "" #: ../../auth.c:513 ../../static/t/iconbar.html:80 #: ../../static/t/confirmlogoff.html:3 #: ../../static/t/menu/basic_commands.html:19 msgid "Log off" msgstr "Kirjaudu ulos" #: ../../auth.c:537 msgid "Log in again" msgstr "Kirjaudu uudestaan" #: ../../auth.c:585 ../../static/t/aide/usermanagement.html:3 msgid "Validate new users" msgstr "Hyväksy uudet käyttäjät" #: ../../auth.c:605 msgid "No users require validation at this time." msgstr "" #: ../../auth.c:655 msgid "very weak" msgstr "Erittäin heikko" #: ../../auth.c:658 msgid "weak" msgstr "heikko" #: ../../auth.c:661 msgid "ok" msgstr "ok" #: ../../auth.c:665 msgid "strong" msgstr "vahva" #: ../../auth.c:683 #, c-format msgid "Current access level: %d (%s)\n" msgstr "" #: ../../auth.c:691 msgid "Select access level for this user:" msgstr "" #: ../../auth.c:776 ../../static/t/menu/your_info.html:4 msgid "Change your password" msgstr "Vaihda salasanasi" #: ../../auth.c:800 msgid "Enter new password:" msgstr "Kirjoita uusi salasana:" #: ../../auth.c:804 msgid "Enter it again to confirm:" msgstr "Kirjoita salasana uudestaan:" #: ../../auth.c:810 msgid "Change password" msgstr "Vaihda salasana" #: ../../auth.c:830 msgid "Cancelled. Password was not changed." msgstr "Peruutettu. Salasanaa ei vaihdettu." #: ../../auth.c:839 msgid "They don't match. Password was not changed." msgstr "Salasanat eivät täsmää. Salasanaa ei vaihdettu." #: ../../auth.c:845 msgid "Blank passwords are not allowed." msgstr "Tyhjä salasana ei ole sallittu" #: ../../openid.c:34 msgid "Manage Account/OpenID Associations" msgstr "" #: ../../openid.c:52 msgid "Do you really want to delete this OpenID?" msgstr "" #: ../../openid.c:53 msgid "(delete)" msgstr "" #: ../../openid.c:61 msgid "Add an OpenID: " msgstr "" #: ../../openid.c:64 msgid "Attach" msgstr "" #: ../../openid.c:68 #, c-format msgid "%s does not permit authentication via OpenID." msgstr "" #: ../../html2html.c:136 #, c-format msgid "realloc() error! couldn't get %d bytes: %s" msgstr "" #: ../../static/t/viewomatic.html:4 msgid "View as:" msgstr "" #: ../../static/t/sieve/list.html:32 ../../static/t/sieve/none.html:4 #: ../../static/t/menu/your_info.html:7 msgid "View/edit server-side mail filters" msgstr "" #: ../../static/t/sieve/list.html:41 msgid "When new mail arrives: " msgstr "Kun uusi sähköposti saapuu: " #: ../../static/t/sieve/list.html:43 msgid "Leave it in my inbox without filtering" msgstr "" #: ../../static/t/sieve/list.html:44 msgid "Filter it according to rules selected below" msgstr "" #: ../../static/t/sieve/list.html:45 msgid "Filter it through a manually edited script (advanced users only)" msgstr "" #: ../../static/t/sieve/list.html:52 msgid "Your incoming mail will not be filtered through any scripts." msgstr "" #: ../../static/t/sieve/list.html:64 msgid "Add rule" msgstr "Lisää sääntö" #: ../../static/t/sieve/list.html:71 msgid "The currently active script is: " msgstr "" #: ../../static/t/sieve/list.html:76 ../../static/t/sieve/add.html:3 msgid "Add or delete scripts" msgstr "" #: ../../static/t/sieve/display_one.html:16 msgid "If" msgstr "" #: ../../static/t/sieve/display_one.html:21 msgid "To or Cc" msgstr "" #: ../../static/t/sieve/display_one.html:23 msgid "Reply-to" msgstr "" #: ../../static/t/sieve/display_one.html:24 #: ../../static/t/msg_listview.html:10 #: ../../static/t/view_mailq/header.html:27 msgid "Sender" msgstr "Lähettäjä" #: ../../static/t/sieve/display_one.html:25 msgid "Resent-From" msgstr "" #: ../../static/t/sieve/display_one.html:26 msgid "Resent-To" msgstr "" #: ../../static/t/sieve/display_one.html:27 msgid "Envelope From" msgstr "" #: ../../static/t/sieve/display_one.html:28 msgid "Envelope To" msgstr "" #: ../../static/t/sieve/display_one.html:29 msgid "X-Mailer" msgstr "" #: ../../static/t/sieve/display_one.html:30 msgid "X-Spam-Flag" msgstr "" #: ../../static/t/sieve/display_one.html:31 msgid "X-Spam-Status" msgstr "" #: ../../static/t/sieve/display_one.html:32 msgid "List-ID" msgstr "" #: ../../static/t/sieve/display_one.html:33 msgid "Message size" msgstr "Viestin koko" #: ../../static/t/sieve/display_one.html:34 #: ../../static/t/select_messageindex_all.html:1 msgid "All" msgstr "Kaikki" #: ../../static/t/sieve/display_one.html:41 msgid "contains" msgstr "sisältää" #: ../../static/t/sieve/display_one.html:42 msgid "does not contain" msgstr "ei sisällä" #: ../../static/t/sieve/display_one.html:43 msgid "is" msgstr "on" #: ../../static/t/sieve/display_one.html:44 msgid "is not" msgstr "ei ole" #: ../../static/t/sieve/display_one.html:45 msgid "matches" msgstr "" #: ../../static/t/sieve/display_one.html:46 msgid "does not match" msgstr "" #: ../../static/t/sieve/display_one.html:52 msgid "(All messages)" msgstr "(Kaikki viestit)" #: ../../static/t/sieve/display_one.html:56 msgid "is larger than" msgstr "on suurempi kuin" #: ../../static/t/sieve/display_one.html:57 msgid "is smaller than" msgstr "on pienempi kuin" #: ../../static/t/sieve/display_one.html:59 #, fuzzy msgid "bytes" msgstr "vuotta" #: ../../static/t/sieve/display_one.html:65 msgid "Keep" msgstr "Säilytä" #: ../../static/t/sieve/display_one.html:66 msgid "Discard silently" msgstr "" #: ../../static/t/sieve/display_one.html:67 msgid "Reject" msgstr "" #: ../../static/t/sieve/display_one.html:68 msgid "Move message to" msgstr "" #: ../../static/t/sieve/display_one.html:69 msgid "Forward to" msgstr "Välitä" #: ../../static/t/sieve/display_one.html:70 msgid "Vacation" msgstr "Loma" #: ../../static/t/sieve/display_one.html:82 msgid "Message:" msgstr "Viesti:" #: ../../static/t/sieve/display_one.html:90 msgid "and then" msgstr "" #: ../../static/t/sieve/display_one.html:93 msgid "continue processing" msgstr "" #: ../../static/t/sieve/display_one.html:94 msgid "stop" msgstr "pysäytä" #: ../../static/t/sieve/none.html:9 msgid "" "This installation of Citadel was built without support for server-side mail " "filtering.
    Please contact your system administrator if you require this " "feature.
    " msgstr "" #: ../../static/t/sieve/add.html:9 msgid "Add a new script" msgstr "" #: ../../static/t/sieve/add.html:10 msgid "" "To create a new script, enter the desired script name in the box below and " "click 'Create'." msgstr "" #: ../../static/t/sieve/add.html:14 msgid "Script name: " msgstr "" #: ../../static/t/sieve/add.html:18 msgid "Edit scripts" msgstr "" #: ../../static/t/sieve/add.html:20 msgid "Return to the script editing screen" msgstr "" #: ../../static/t/sieve/add.html:23 msgid "Delete scripts" msgstr "" #: ../../static/t/sieve/add.html:24 msgid "" "To delete an existing script, select the script name from the list and click " "'Delete'." msgstr "" #: ../../static/t/msg/confirm_move.html:4 msgid "Confirm move of message" msgstr "" #: ../../static/t/msg/confirm_move.html:12 msgid "Move this message to:" msgstr "" #: ../../static/t/login.html:5 msgid "powered by" msgstr "" #: ../../static/t/login.html:15 ../../static/t/iconbar.html:88 #: ../../static/t/get_logged_in.html:64 ../../static/t/get_logged_in.html:88 #: ../../static/t/get_logged_in.html:93 ../../static/t/get_logged_in.html:98 #: ../../static/t/get_logged_in.html:107 msgid "Log in" msgstr "" #: ../../static/t/trailing.html:14 msgid "" "WARNING: You have JavaScript disabled in your web browser. Many functions " "of this system will not work properly." msgstr "" #: ../../static/t/view_submessage.html:4 #: ../../static/t/view_message/replyquote.html:3 #: ../../static/t/view_message/replyquote.html:7 #: ../../static/t/view_message/print.html:8 ../../static/t/view_message.html:7 msgid "from " msgstr "" #: ../../static/t/searchomatic.html:4 msgid "Search: " msgstr "" #: ../../static/t/listsub/display.html:16 msgid "You are subscribing " msgstr "" #: ../../static/t/listsub/display.html:17 msgid " to the " msgstr "" #: ../../static/t/listsub/display.html:18 msgid " mailing list." msgstr "" #: ../../static/t/listsub/display.html:19 msgid "" "The listserver has sent you an e-mail with one additional Web link for you " "to click on to confirm your subscription." msgstr "" #: ../../static/t/listsub/display.html:20 msgid "" "This extra step is for your protection, as it prevents others from being " "able to subscribe you to lists without your consent." msgstr "" #: ../../static/t/listsub/display.html:22 msgid "" "Please click on the link which is being e-mailed to you and your " "subscription will be confirmed." msgstr "" #: ../../static/t/listsub/display.html:27 #: ../../static/t/listsub/display.html:47 msgid "ERROR" msgstr "" #: ../../static/t/listsub/display.html:35 msgid "You are unsubscribing" msgstr "" #: ../../static/t/listsub/display.html:37 msgid "from the" msgstr "" #: ../../static/t/listsub/display.html:39 msgid "mailing list." msgstr "" #: ../../static/t/listsub/display.html:40 msgid "" "The listserver has sent you an e-mail with one additional Web link for you " "to click on to confirm your unsubscription." msgstr "" #: ../../static/t/listsub/display.html:41 msgid "" "This extra step is for your protection, as it prevents others from being " "able to unsubscribe you from lists without your consent." msgstr "" #: ../../static/t/listsub/display.html:43 msgid "" "Please click on the link which is being e-mailed to you and your " "unsubscription will be confirmed." msgstr "" #: ../../static/t/listsub/display.html:44 msgid "Back..." msgstr "" #: ../../static/t/listsub/display.html:54 msgid "Confirmation successful!" msgstr "" #: ../../static/t/listsub/display.html:56 msgid "Confirmation failed." msgstr "" #: ../../static/t/listsub/display.html:57 msgid "This could mean one of two things:" msgstr "" #: ../../static/t/listsub/display.html:59 msgid "" "You waited too long to confirm your subscribe/unsubscribe request (the " "confirmation link is only valid for three days)" msgstr "" #: ../../static/t/listsub/display.html:60 msgid "" "You have already successfully confirmed your subscribe/unsubscribe " "request and are attempting to do it again." msgstr "" #: ../../static/t/listsub/display.html:62 msgid "The error returned by the server was: " msgstr "" #: ../../static/t/listsub/display.html:70 #, fuzzy msgid "Name of list:" msgstr "Tehtävän nimi" #: ../../static/t/listsub/display.html:75 #, fuzzy msgid "Your e-mail address:" msgstr "Ensisijainen sähköpostiosoite:" #: ../../static/t/listsub/display.html:79 msgid "(If subscribing) preferred format: " msgstr "" #: ../../static/t/listsub/display.html:80 msgid "One message at a time" msgstr "" #: ../../static/t/listsub/display.html:81 msgid "Digest format" msgstr "" #: ../../static/t/listsub/display.html:89 msgid "" "When you attempt to subscribe or unsubscribe to a mailing list, you will " "receive an e-mail containing one additional web link to click on for final " "confirmation." msgstr "" #: ../../static/t/listsub/display.html:90 msgid "" "This extra step is for your protection, as it prevents others from being " "able to subscribe or unsubscribe you to lists." msgstr "" #: ../../static/t/floors_edit_one.html:11 msgid "(delete floor)" msgstr "" #: ../../static/t/floors_edit_one.html:13 msgid "(edit graphic)" msgstr "" #: ../../static/t/floors.html:4 msgid "Add/change/delete floors" msgstr "" #: ../../static/t/floors.html:10 msgid "Floor number" msgstr "" #: ../../static/t/floors.html:11 msgid "Floor name" msgstr "" #: ../../static/t/floors.html:12 msgid "Number of rooms" msgstr "" #: ../../static/t/floors.html:13 msgid "Floor CSS" msgstr "" #: ../../static/t/files.html:4 msgid "Files available for download in" msgstr "" #: ../../static/t/files.html:9 msgid "Upload a file:" msgstr "" #: ../../static/t/files.html:30 msgid "Filename" msgstr "" #: ../../static/t/files.html:31 msgid "Size" msgstr "" #: ../../static/t/files.html:32 msgid "Content" msgstr "" #: ../../static/t/files.html:33 msgid "Description" msgstr "" #: ../../static/t/edit_message.html:9 ../../static/t/iconbar.html:50 #: ../../static/t/iconbar.html:59 msgid "Loading" msgstr "" #: ../../static/t/edit_message.html:23 msgid "from" msgstr "" #: ../../static/t/edit_message.html:29 ../../static/t/edit_message.html:38 msgid "Anonymous" msgstr "" #: ../../static/t/edit_message.html:47 msgid "in" msgstr "" #: ../../static/t/edit_message.html:51 msgid "To:" msgstr "" #: ../../static/t/edit_message.html:57 #: ../../static/t/view_message/print.html:15 #: ../../static/t/view_message.html:15 msgid "CC:" msgstr "" #: ../../static/t/edit_message.html:63 msgid "BCC:" msgstr "" #: ../../static/t/edit_message.html:71 msgid "Subject (optional):" msgstr "" #: ../../static/t/edit_message.html:71 #: ../../static/t/view_message/replyquote.html:8 #: ../../static/t/view_message/print.html:16 #: ../../static/t/view_message.html:16 msgid "Subject:" msgstr "" #: ../../static/t/edit_message.html:86 msgid "--- forwarded message ---" msgstr "" #: ../../static/t/edit_message.html:110 msgid "Post message" msgstr "" #: ../../static/t/edit_message.html:118 msgid "Save to Drafts" msgstr "" #: ../../static/t/edit_message.html:126 #: ../../static/t/edit_message/attachments_pane.html:5 msgid "Attachments:" msgstr "" #: ../../static/t/aide/display_serverrestart_page.html:4 msgid "Message to your Users:" msgstr "" #: ../../static/t/aide/display_generic_result.html:2 msgid "Server command results" msgstr "" #: ../../static/t/aide/display_generic_result.html:18 msgid "Enter another command" msgstr "" #: ../../static/t/aide/display_generic_result.html:19 msgid "Return to menu" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:3 msgid "Site configuration" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:6 #: ../../static/t/aide/edituser/select.html:9 msgid "You need to be aide to view this." msgstr "" #: ../../static/t/aide/display_sitewide_config.html:11 msgid "General" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:12 msgid "Access" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:13 msgid "Network" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:14 msgid "Tuning" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:15 msgid "Directory" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:16 msgid "Auto-purger" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:17 msgid "Indexing/Journaling" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:18 #: ../../static/t/aide/siteconfig/tab_pushmail.html:1 msgid "Push Email" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:19 msgid "Pop3" msgstr "" #: ../../static/t/aide/usermanagement.html:2 msgid "Add, change, delete user accounts" msgstr "" #: ../../static/t/aide/display_inetconf.html:5 #: ../../static/t/aide/display_menu.html:5 msgid "System Administration Menu" msgstr "" #: ../../static/t/aide/display_inetconf.html:6 #: ../../static/t/aide/display_menu.html:6 msgid "Room Admin Menu" msgstr "" #: ../../static/t/aide/display_inetconf.html:13 msgid "Local host aliases" msgstr "" #: ../../static/t/aide/display_inetconf.html:14 msgid "Directory domains" msgstr "" #: ../../static/t/aide/display_inetconf.html:15 msgid "Smart hosts" msgstr "" #: ../../static/t/aide/display_inetconf.html:16 msgid "Fallback smart hosts" msgstr "" #: ../../static/t/aide/display_inetconf.html:17 msgid "Notification hosts" msgstr "" #: ../../static/t/aide/display_inetconf.html:22 msgid "RBL hosts" msgstr "" #: ../../static/t/aide/display_inetconf.html:23 msgid "SpamAssassin hosts" msgstr "" #: ../../static/t/aide/display_inetconf.html:24 msgid "ClamAV clamd hosts" msgstr "" #: ../../static/t/aide/display_inetconf.html:25 msgid "Masqueradable domains" msgstr "" #: ../../static/t/aide/edituser/select.html:5 msgid "Edit or delete users" msgstr "" #: ../../static/t/aide/edituser/select.html:17 msgid "Add users" msgstr "" #: ../../static/t/aide/edituser/select.html:20 msgid "Edit or Delete users" msgstr "" #: ../../static/t/aide/edituser/box_select.html:1 msgid "" "To edit an existing user account, select the user name from the list and " "click 'Edit'." msgstr "" #: ../../static/t/aide/edituser/detailview.html:4 msgid "Edit user account: " msgstr "" #: ../../static/t/aide/edituser/detailview.html:24 #: ../../static/t/room/edit/tab_feed.html:14 msgid "Password" msgstr "" #: ../../static/t/aide/edituser/detailview.html:28 msgid "Permission to send Internet mail" msgstr "" #: ../../static/t/aide/edituser/detailview.html:32 msgid "Number of logins" msgstr "" #: ../../static/t/aide/edituser/detailview.html:36 msgid "Messages submitted" msgstr "" #: ../../static/t/aide/edituser/detailview.html:40 msgid "Access level" msgstr "" #: ../../static/t/aide/edituser/detailview.html:54 msgid "User ID number" msgstr "" #: ../../static/t/aide/edituser/detailview.html:58 msgid "Date and time of last login" msgstr "" #: ../../static/t/aide/edituser/detailview.html:68 msgid "Auto-purge after this many days" msgstr "" #: ../../static/t/aide/edituser/add.html:1 msgid "" "To create a new user account, enter the desired user name in the box below " "and click 'Create'." msgstr "" #: ../../static/t/aide/edituser/add.html:5 msgid "New user: " msgstr "" #: ../../static/t/aide/display_generic_cmd.html:4 msgid "Enter a server command" msgstr "" #: ../../static/t/aide/display_generic_cmd.html:12 msgid "" "This screen allows you to enter Citadel server commands which are not " "supported by WebCit. If you do not know what that means, then this screen " "will not be of much use to you." msgstr "" #: ../../static/t/aide/display_generic_cmd.html:15 msgid "Enter command:" msgstr "" #: ../../static/t/aide/display_generic_cmd.html:17 msgid "Command input (if requesting SEND_LISTING transfer mode):" msgstr "" #: ../../static/t/aide/display_generic_cmd.html:20 msgid "Detected host header is " msgstr "" #: ../../static/t/aide/display_ignetconf.html:4 msgid "Network configuration" msgstr "" #: ../../static/t/aide/display_ignetconf.html:10 #: ../../static/t/aide/ignetconf/edit_node.html:5 #: ../../static/t/aide/ignetconf/add.html:5 msgid "Add a new node" msgstr "" #: ../../static/t/aide/display_ignetconf.html:14 msgid "Currently configured nodes" msgstr "" #: ../../static/t/aide/display_serverrestart.html:26 msgid "Restart Citadel" msgstr "" #: ../../static/t/aide/floorconfig.html:2 msgid "Add, change, or delete floors" msgstr "" #: ../../static/t/aide/serverrestart/box.html:3 msgid "Please wait while the Citadel server is restarted... " msgstr "" #: ../../static/t/aide/serverrestart/box_page_do.html:3 msgid "" "Please wait while your users are being paged, the citadel server will be " "restarted after that... " msgstr "" #: ../../static/t/aide/inet/masqdomains.html:2 msgid "(Domains as which users are allowed to masquerade)" msgstr "" #: ../../static/t/aide/inet/rbldns.html:2 msgid "(hosts running a Realtime Blackhole List)" msgstr "" #: ../../static/t/aide/inet/dirnames.html:2 msgid "(domains mapped with the Global Address Book)" msgstr "" #: ../../static/t/aide/inet/notify.html:2 msgid "(URLS for notifications when users receive new mails; )" msgstr "" #: ../../static/t/aide/inet/notify.html:2 msgid "Syntax: Notificationtemplatename:http[s]://user:password@hostname/path" msgstr "" #: ../../static/t/aide/inet/smarthosts.html:2 msgid "(if present, forward all outbound mail to one of these hosts)" msgstr "" #: ../../static/t/aide/inet/aliases.html:2 msgid "(domains for which this host receives mail)" msgstr "" #: ../../static/t/aide/inet/clamav.html:2 msgid "(hosts running the ClamAV clamd service)" msgstr "" #: ../../static/t/aide/inet/spamass.html:2 msgid "(hosts running the SpamAssassin service)" msgstr "" #: ../../static/t/aide/inet/fallbackhosts.html:2 msgid "(send outbound mail to these hosts only when direct delivery fails)" msgstr "" #: ../../static/t/aide/ignetconf/display_confirm_delete.html:5 msgid "Confirm delete" msgstr "" #: ../../static/t/aide/ignetconf/display_confirm_delete.html:11 msgid "Are you sure you want to delete " msgstr "" #: ../../static/t/aide/ignetconf/display_confirm_delete.html:14 #: ../../static/t/prefs/box.html:198 ../../static/t/iconbar/edit.html:19 #: ../../static/t/iconbar/edit.html:26 ../../static/t/iconbar/edit.html:32 #: ../../static/t/iconbar/edit.html:39 ../../static/t/iconbar/edit.html:45 #: ../../static/t/iconbar/edit.html:52 ../../static/t/iconbar/edit.html:58 #: ../../static/t/iconbar/edit.html:64 ../../static/t/iconbar/edit.html:70 #: ../../static/t/iconbar/edit.html:76 ../../static/t/iconbar/edit.html:82 #: ../../static/t/iconbar/edit.html:88 msgid "Yes" msgstr "" #: ../../static/t/aide/ignetconf/display_confirm_delete.html:16 #: ../../static/t/prefs/box.html:200 ../../static/t/iconbar/edit.html:20 #: ../../static/t/iconbar/edit.html:27 ../../static/t/iconbar/edit.html:33 #: ../../static/t/iconbar/edit.html:40 ../../static/t/iconbar/edit.html:46 #: ../../static/t/iconbar/edit.html:53 ../../static/t/iconbar/edit.html:59 #: ../../static/t/iconbar/edit.html:65 ../../static/t/iconbar/edit.html:71 #: ../../static/t/iconbar/edit.html:77 ../../static/t/iconbar/edit.html:83 #: ../../static/t/iconbar/edit.html:89 msgid "No" msgstr "" #: ../../static/t/aide/ignetconf/edit_node.html:15 #: ../../static/t/aide/ignetconf/add.html:15 #: ../../static/t/aide/siteconfig/tab_general.html:8 msgid "Node name" msgstr "" #: ../../static/t/aide/ignetconf/edit_node.html:17 #: ../../static/t/aide/ignetconf/add.html:17 msgid "Shared secret" msgstr "" #: ../../static/t/aide/ignetconf/edit_node.html:19 #: ../../static/t/aide/ignetconf/add.html:19 msgid "Host or IP address" msgstr "" #: ../../static/t/aide/ignetconf/edit_node.html:21 #: ../../static/t/aide/ignetconf/add.html:21 msgid "Port number" msgstr "" #: ../../static/t/aide/ignetconf/section.html:4 msgid "(Edit)" msgstr "" #: ../../static/t/aide/display_menu.html:12 msgid "Global Configuration" msgstr "" #: ../../static/t/aide/display_menu.html:14 msgid "User account management" msgstr "" #: ../../static/t/aide/display_menu.html:16 msgid "Shutdown Citadel" msgstr "" #: ../../static/t/aide/display_menu.html:18 msgid "Rooms and Floors" msgstr "" #: ../../static/t/aide/global_config.html:2 msgid "Edit site-wide configuration" msgstr "" #: ../../static/t/aide/global_config.html:3 msgid "Domain names and Internet mail configuration" msgstr "" #: ../../static/t/aide/global_config.html:4 msgid "Configure replication with other Citadel servers" msgstr "" #: ../../static/t/aide/global_config.html:5 #: ../../static/t/view_mailq/header.html:3 msgid "View the outbound SMTP queue" msgstr "" #: ../../static/t/aide/restart.html:2 msgid "Restart Now" msgstr "" #: ../../static/t/aide/restart.html:3 msgid "Restart after paging users" msgstr "" #: ../../static/t/aide/restart.html:4 msgid "Restart when all users are idle" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:1 msgid "General site configuration items" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:5 msgid "Change Login Logo" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:6 msgid "Change Logout Logo" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:11 msgid "Fully qualified domain name" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:14 msgid "Human-readable node name" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:17 msgid "Telephone number" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:20 msgid "Paginator prompt (for text mode clients)" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:23 msgid "Geographic location of this system" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:26 msgid "Name of system administrator" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:29 msgid "Default timezone for unzoned calendar items" msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:1 msgid "Configure automatic expiry of old messages" msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:2 msgid "These settings may be overridden on a per-floor or per-room basis." msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:6 msgid "Hour to run database auto-purge" msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:66 msgid "Default message expire policy for public rooms" msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:68 #: ../../static/t/aide/siteconfig/tab_autopurger.html:86 #: ../../static/t/room/edit/tab_expire.html:17 #: ../../static/t/room/edit/tab_expire.html:45 msgid "Never automatically expire messages" msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:71 #: ../../static/t/aide/siteconfig/tab_autopurger.html:89 #: ../../static/t/room/edit/tab_expire.html:20 #: ../../static/t/room/edit/tab_expire.html:48 msgid "Expire by message count" msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:73 #: ../../static/t/aide/siteconfig/tab_autopurger.html:92 #: ../../static/t/room/edit/tab_expire.html:23 #: ../../static/t/room/edit/tab_expire.html:51 msgid "Expire by message age" msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:75 #: ../../static/t/aide/siteconfig/tab_autopurger.html:94 #: ../../static/t/room/edit/tab_expire.html:25 #: ../../static/t/room/edit/tab_expire.html:53 msgid "Number of messages or days: " msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:81 msgid "Default message expire policy for private mailboxes" msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:83 msgid "Same policy as public rooms" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:1 msgid "Network services" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:2 #: ../../static/t/aide/siteconfig/tab_directory.html:3 msgid "" "Changes made on this screen will not take effect until you restart the " "Citadel server." msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:6 msgid "SMTP MTA port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:9 msgid "Correct forged From: lines during authenticated SMTP" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:12 msgid "Flag message as spam, instead of rejecting it" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:15 msgid "IMAP listener port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:19 msgid "Network run frequency (in seconds)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:22 msgid "Server IP address (0.0.0.0 for 'any')" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:25 msgid "SMTP MSA port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:28 msgid "IMAP over SSL port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:31 msgid "SMTP over SSL port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:34 msgid "Instantly expunge deleted messages in IMAP" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:38 msgid "Allow unauthenticated SMTP clients to spoof this sites domains" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:41 msgid "Postfix TCP Dictionary Port" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:41 msgid "-1 to disable" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:44 msgid "ManageSieve Port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:47 msgid "Perform RBL checks upon connect instead of after RCPT" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:50 msgid "Keep original from headers in IMAP" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:53 msgid "XMPP (Jabber) client to server port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:56 msgid "XMPP (Jabber) server to server port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_pop3.html:1 msgid "POP3" msgstr "" #: ../../static/t/aide/siteconfig/tab_pop3.html:6 msgid "POP3 listener port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_pop3.html:9 msgid "POP3 over SSL port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_pop3.html:12 msgid "POP3 fetch frequency in seconds" msgstr "" #: ../../static/t/aide/siteconfig/tab_pop3.html:15 msgid "POP3 fastest fetch frequency in seconds" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:1 msgid "Advanced server fine-tuning controls" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:5 msgid "Server connection idle timeout (in seconds)" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:8 msgid "Maximum concurrent sessions (0 = no limit)" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:11 msgid "Default user purge time (days)" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:14 msgid "Default room purge time (days)" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:17 msgid "Maximum message length" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:20 msgid "Minimum number of worker threads" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:23 msgid "Maximum number of worker threads" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:26 msgid "Automatically delete committed database logs" msgstr "" #: ../../static/t/aide/siteconfig/tab_pushmail.html:5 msgid "Funambol server host (blank to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_pushmail.html:8 msgid "Funambol server port " msgstr "" #: ../../static/t/aide/siteconfig/tab_pushmail.html:11 msgid "Funambol sync source" msgstr "" #: ../../static/t/aide/siteconfig/tab_pushmail.html:14 msgid "Funambol auth details (user:pass)" msgstr "" #: ../../static/t/aide/siteconfig/tab_pushmail.html:17 msgid "External pager tool (blank to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:1 msgid "Access controls and site policy settings" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:5 msgid "Allow aides to zap (forget) rooms" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:9 msgid "Quarantine messages from problem users" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:12 msgid "Name of quarantine room" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:17 msgid "Name of room to log pages" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:22 msgid "Authentication mode" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:24 msgid "Self contained" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:25 msgid "Host based" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:26 msgid "LDAP (RFC2307)" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:27 msgid "LDAP (Active Directory)" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:30 msgid "Master user name (blank to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:33 msgid "Master user password" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:38 msgid "Initial access level for new users" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:49 msgid "Access level required to create rooms" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:60 msgid "Automatically grant room-aide status to users who create private rooms" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:63 msgid "Automatically grant room-aide status to users who create BLOG rooms" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:66 msgid "Restrict access to Internet mail" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:71 msgid "Disable self-service user account creation" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:71 msgid "Hint: do not select both!" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:74 msgid "Require registration for new users" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:77 msgid "Allow anonymous guest access" msgstr "" #: ../../static/t/aide/siteconfig/tab_indexing.html:1 msgid "Indexing and Journaling" msgstr "" #: ../../static/t/aide/siteconfig/tab_indexing.html:2 msgid "Warning: these facilities are resource intensive." msgstr "" #: ../../static/t/aide/siteconfig/tab_indexing.html:6 msgid "Enable full text index" msgstr "" #: ../../static/t/aide/siteconfig/tab_indexing.html:9 msgid "Perform journaling of email messages" msgstr "" #: ../../static/t/aide/siteconfig/tab_indexing.html:13 msgid "Perform journaling of non-email messages" msgstr "" #: ../../static/t/aide/siteconfig/tab_indexing.html:16 msgid "Email destination of journalized messages" msgstr "" #: ../../static/t/aide/siteconfig/tab_directory.html:1 msgid "Configure the LDAP connector for Citadel" msgstr "" #: ../../static/t/aide/siteconfig/tab_directory.html:4 msgid "" "NOTE: This Citadel server has been built without LDAP support. These " "options will have no effect." msgstr "" #: ../../static/t/aide/siteconfig/tab_directory.html:9 msgid "Host name of LDAP server (blank to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_directory.html:13 msgid "Port number of LDAP server (blank to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_directory.html:16 msgid "Base DN" msgstr "" #: ../../static/t/aide/siteconfig/tab_directory.html:19 msgid "Bind DN" msgstr "" #: ../../static/t/aide/siteconfig/tab_directory.html:22 msgid "Password for bind DN" msgstr "" #: ../../static/t/iconbar.html:7 msgid "Language:" msgstr "" #: ../../static/t/iconbar.html:19 msgid "Mail" msgstr "" #: ../../static/t/iconbar.html:39 ../../static/t/iconbar/edit.html:61 #: ../../static/t/summary/page.html:30 msgid "Tasks" msgstr "Tehtävät" #: ../../static/t/iconbar.html:48 ../../static/t/iconbar/edit.html:67 msgid "Rooms" msgstr "" #: ../../static/t/iconbar.html:57 msgid "Online users" msgstr "" #: ../../static/t/iconbar.html:62 ../../static/t/iconbar/edit.html:79 msgid "Chat" msgstr "" #: ../../static/t/iconbar.html:65 msgid "Advanced" msgstr "" #: ../../static/t/iconbar.html:72 ../../static/t/room/edit/editroom.html:4 #: ../../static/t/room/edit.html:5 msgid "Administration" msgstr "" #: ../../static/t/iconbar.html:83 msgid "customize this menu" msgstr "" #: ../../static/t/iconbar.html:92 msgid "switch to room list" msgstr "" #: ../../static/t/iconbar.html:93 msgid "switch to menu" msgstr "" #: ../../static/t/iconbar.html:94 msgid "My folders" msgstr "" #: ../../static/t/view_message/list_attach.html:3 #: ../../static/t/view_message/inline_attach.html:4 msgid "View" msgstr "" #: ../../static/t/view_message/list_attach.html:4 #: ../../static/t/view_message/inline_attach.html:5 msgid "Download" msgstr "" #: ../../static/t/view_message/print.html:14 #: ../../static/t/view_message.html:14 msgid "to" msgstr "" #: ../../static/t/openid_manual_create.html:2 msgid "Your OpenID" msgstr "" #: ../../static/t/openid_manual_create.html:2 msgid "was successfully verified." msgstr "" #: ../../static/t/openid_manual_create.html:3 msgid "However, the user name" msgstr "" #: ../../static/t/openid_manual_create.html:3 msgid "conflicts with an existing user." msgstr "" #: ../../static/t/openid_manual_create.html:5 msgid "Please specify the user name you would like to use." msgstr "" #: ../../static/t/files/graphicsupload.html:2 msgid "Image upload" msgstr "" #: ../../static/t/files/graphicsupload.html:6 msgid "You can upload an image directly from your computer" msgstr "" #: ../../static/t/files/graphicsupload.html:8 msgid "Please select a file to upload:" msgstr "" #: ../../static/t/files/section_onefile.html:20 msgid "Slideshow" msgstr "" #: ../../static/t/roombanner.html:10 ../../static/t/roombanner.html:11 msgid "new of" msgstr "" #: ../../static/t/roombanner.html:10 ../../static/t/roombanner.html:11 #: ../../static/t/msg_listselector_bottom.html:7 #: ../../static/t/msg_listselector_top.html:7 msgid "messages" msgstr "" #: ../../static/t/roombanner.html:28 msgid "Select page: " msgstr "" #: ../../static/t/who.html:13 msgid "Users currently on " msgstr "" #: ../../static/t/who.html:22 msgid "Click on a name to read user info. Click on" msgstr "" #: ../../static/t/who.html:24 msgid "to send an instant message to that user." msgstr "" #: ../../static/t/msg_listselector_bottom.html:2 #: ../../static/t/msg_listselector_top.html:2 msgid "Reading #" msgstr "" #: ../../static/t/msg_listselector_bottom.html:12 #: ../../static/t/msg_listselector_top.html:12 msgid "oldest to newest" msgstr "" #: ../../static/t/msg_listselector_bottom.html:20 #: ../../static/t/msg_listselector_top.html:20 msgid "newest to oldest" msgstr "" #: ../../static/t/newstartpage.html:4 msgid "New start page" msgstr "" #: ../../static/t/newstartpage.html:9 msgid "Your start page has been changed." msgstr "" #: ../../static/t/newstartpage.html:12 msgid "" "(Note: this does not change your browser's home page. It changes the page " "you begin on when you log on to" msgstr "" #: ../../static/t/no_new_msgs.html:3 msgid "No new messages." msgstr "" #: ../../static/t/view_blog/comment_box.html:8 msgid "Post a comment" msgstr "Lähetä kommentti" #: ../../static/t/prefs/pushemail.html:2 msgid "Configure Push Email" msgstr "" #: ../../static/t/prefs/pushemail.html:9 msgid "Push email and SMS settings" msgstr "" #: ../../static/t/prefs/pushemail.html:17 msgid "" "If your administrator has enabled the functionality, Citadel can notify a " "Funambol server that you haved recieved new email and automatically " "syncronize any devices you have with the Funambol client installed." msgstr "" #: ../../static/t/prefs/pushemail.html:20 msgid "" "Alternatively, if the administrator has configured it, Citadel can send a " "text message to you when new mail arrives." msgstr "" #: ../../static/t/prefs/pushemail.html:26 msgid "Notify Funambol server" msgstr "" #: ../../static/t/prefs/pushemail.html:31 msgid "Send a text message to..." msgstr "" #: ../../static/t/prefs/pushemail.html:33 msgid "" "(Use international format, without any leading zeros, spaces or hypens, like " "+61415011501)" msgstr "" #: ../../static/t/prefs/pushemail.html:38 msgid "Use custom notification scheme configured by your Admin" msgstr "" #: ../../static/t/prefs/pushemail.html:43 msgid "Don‘t send any notifications" msgstr "" #: ../../static/t/prefs/box.html:9 msgid "Tree (folders) view" msgstr "" #: ../../static/t/prefs/box.html:11 msgid "Table (rooms) view" msgstr "" #: ../../static/t/prefs/box.html:20 msgid "12 hour (am/pm)" msgstr "" #: ../../static/t/prefs/box.html:25 msgid "24 hour" msgstr "" #: ../../static/t/prefs/box.html:152 msgid "Sunday" msgstr "" #: ../../static/t/prefs/box.html:153 msgid "Monday" msgstr "" #: ../../static/t/prefs/box.html:174 msgid "No signature" msgstr "" #: ../../static/t/prefs/box.html:238 msgid "Full-functionality" msgstr "" #: ../../static/t/prefs/box.html:241 msgid "Safe mode" msgstr "" #: ../../static/t/prefs/box.html:242 msgid "" "Safe mode is less intensive on your web browser, but not as fully featured." msgstr "" #: ../../static/t/wiki/pagelist.html:1 msgid "List of Wiki pages" msgstr "" #: ../../static/t/wiki/history.html:1 msgid "History of edits for this page" msgstr "" #: ../../static/t/who/list_static_header.html:1 msgid "Users currently on" msgstr "" #: ../../static/t/who/section.html:4 msgid "(kill)" msgstr "" #: ../../static/t/who/bio.html:4 ../../static/t/user/show.html:4 msgid "User profile" msgstr "" #: ../../static/t/who/summary.html:5 ../../static/t/who/box_list_static.html:6 #: ../../static/t/room/edit/tab_feed.html:13 msgid "User name" msgstr "" #: ../../static/t/who/summary.html:6 ../../static/t/who/box_list_static.html:7 msgid "Room" msgstr "" #: ../../static/t/who/box_list_static.html:8 msgid "From host" msgstr "" #: ../../static/t/view_message.html:19 msgid "Edit" msgstr "" #: ../../static/t/view_message.html:22 ../../static/t/view_message.html:26 msgid "Reply" msgstr "" #: ../../static/t/view_message.html:23 msgid "ReplyQuoted" msgstr "" #: ../../static/t/view_message.html:27 msgid "ReplyAll" msgstr "" #: ../../static/t/view_message.html:28 msgid "Forward" msgstr "" #: ../../static/t/view_message.html:31 ../../static/t/msg_listview.html:25 msgid "Move" msgstr "" #: ../../static/t/view_message.html:34 msgid "Headers" msgstr "" #: ../../static/t/view_message.html:35 ../../static/t/msg_listview.html:28 msgid "Print" msgstr "" #: ../../static/t/preferences.html:4 ../../static/t/preferences.html:7 msgid "Preferences and settings" msgstr "" #: ../../static/t/user/list.html:3 msgid "User list for " msgstr "" #: ../../static/t/user/list.html:9 msgid "User Name" msgstr "" #: ../../static/t/user/list.html:10 msgid "Number" msgstr "" #: ../../static/t/user/list.html:11 msgid "Access Level" msgstr "" #: ../../static/t/user/list.html:12 msgid "Last Login" msgstr "" #: ../../static/t/user/list.html:13 msgid "Total Logins" msgstr "" #: ../../static/t/user/list.html:14 msgid "Total Posts" msgstr "" #: ../../static/t/user/show.html:9 msgid "Click here to send an instant message to" msgstr "" #: ../../static/t/start_of_new_msgs.html:4 msgid "Old messages" msgstr "" #: ../../static/t/start_of_new_msgs.html:8 msgid "New messages" msgstr "" #: ../../static/t/display_main_menu.html:7 msgid "Basic commands" msgstr "" #: ../../static/t/display_main_menu.html:10 msgid "Your info" msgstr "" #: ../../static/t/display_main_menu.html:12 msgid "Advanced room commands" msgstr "" #: ../../static/t/iconbar/save.html:4 ../../static/t/iconbar/edit.html:4 msgid "Customize the icon bar" msgstr "" #: ../../static/t/iconbar/save.html:11 msgid "" "Your icon bar has been updated. Please select any of its choices to continue." msgstr "" #: ../../static/t/iconbar/save.html:11 msgid "" "You may need to force refresh (SHIFT-F5)> in order for changes to take effect" msgstr "" #: ../../static/t/iconbar/edit.html:11 msgid "Display icons as:" msgstr "" #: ../../static/t/iconbar/edit.html:12 msgid "pictures and text" msgstr "" #: ../../static/t/iconbar/edit.html:13 msgid "pictures only" msgstr "" #: ../../static/t/iconbar/edit.html:14 msgid "text only" msgstr "" #: ../../static/t/iconbar/edit.html:16 msgid "" "Select the icons you would like to see displayed in the 'icon bar' menu on " "the left side of the screen." msgstr "" #: ../../static/t/iconbar/edit.html:23 msgid "Site logo" msgstr "" #: ../../static/t/iconbar/edit.html:23 msgid "An icon describing this site" msgstr "" #: ../../static/t/iconbar/edit.html:29 msgid "Your summary page" msgstr "" #: ../../static/t/iconbar/edit.html:36 msgid "Mail (inbox)" msgstr "" #: ../../static/t/iconbar/edit.html:36 msgid "A shortcut to your email Inbox" msgstr "" #: ../../static/t/iconbar/edit.html:42 msgid "Your personal address book" msgstr "" #: ../../static/t/iconbar/edit.html:49 msgid "Your personal notes" msgstr "" #: ../../static/t/iconbar/edit.html:55 msgid "A shortcut to your personal calendar" msgstr "" #: ../../static/t/iconbar/edit.html:61 msgid "A shortcut to your personal task list" msgstr "" #: ../../static/t/iconbar/edit.html:67 msgid "" "Clicking this icon displays a list of all accessible rooms (or folders) " "available." msgstr "" #: ../../static/t/iconbar/edit.html:73 msgid "Who is online?" msgstr "" #: ../../static/t/iconbar/edit.html:73 msgid "Clicking this icon displays a list of all users currently logged in." msgstr "" #: ../../static/t/iconbar/edit.html:79 msgid "" "Clicking this icon enters real-time chat mode with other users in the same " "room." msgstr "" #: ../../static/t/iconbar/edit.html:85 msgid "Advanced options" msgstr "" #: ../../static/t/iconbar/edit.html:85 msgid "Access to the complete menu of Citadel functions." msgstr "" #: ../../static/t/iconbar/edit.html:91 msgid "Citadel logo" msgstr "" #: ../../static/t/iconbar/edit.html:91 msgid "Displays the 'Powered by Citadel' icon" msgstr "" #: ../../static/t/room/edit/tab_expire.html:8 msgid "Message expire policy for this room" msgstr "" #: ../../static/t/room/edit/tab_expire.html:14 msgid "Use the default policy for this floor" msgstr "" #: ../../static/t/room/edit/tab_expire.html:36 msgid "Message expire policy for this floor" msgstr "" #: ../../static/t/room/edit/tab_expire.html:42 msgid "Use the system default" msgstr "" #: ../../static/t/room/edit/editroom.html:5 ../../static/t/room/edit.html:6 msgid "Configuration" msgstr "" #: ../../static/t/room/edit/editroom.html:6 ../../static/t/room/edit.html:7 msgid "Message expire policy" msgstr "" #: ../../static/t/room/edit/editroom.html:7 ../../static/t/room/edit.html:8 msgid "Access controls" msgstr "" #: ../../static/t/room/edit/editroom.html:8 ../../static/t/room/edit.html:9 msgid "Sharing" msgstr "" #: ../../static/t/room/edit/editroom.html:9 ../../static/t/room/edit.html:10 msgid "Mailing list service" msgstr "" #: ../../static/t/room/edit/editroom.html:10 ../../static/t/room/edit.html:11 msgid "Remote retrieval" msgstr "" #: ../../static/t/room/edit/tab_config.html:6 msgid "name of room: " msgstr "" #: ../../static/t/room/edit/tab_config.html:10 #: ../../static/t/room/create.html:20 msgid "Resides on floor: " msgstr "" #: ../../static/t/room/edit/tab_config.html:16 #: ../../static/t/room/create.html:68 msgid "Type of room:" msgstr "" #: ../../static/t/room/edit/tab_config.html:22 #: ../../static/t/room/create.html:73 msgid "Public (automatically appears to everyone)" msgstr "" #: ../../static/t/room/edit/tab_config.html:28 #: ../../static/t/room/create.html:77 msgid "Private - hidden (accessible to anyone who knows its name)" msgstr "" #: ../../static/t/room/edit/tab_config.html:35 #: ../../static/t/room/create.html:81 msgid "Private - require password: " msgstr "" #: ../../static/t/room/edit/tab_config.html:44 #: ../../static/t/room/create.html:86 msgid "Private - invitation only" msgstr "" #: ../../static/t/room/edit/tab_config.html:51 #: ../../static/t/room/create.html:90 msgid "Personal (mailbox for you only)" msgstr "" #: ../../static/t/room/edit/tab_config.html:55 msgid "If private, cause current users to forget room" msgstr "" #: ../../static/t/room/edit/tab_config.html:61 msgid "Preferred users only" msgstr "" #: ../../static/t/room/edit/tab_config.html:66 msgid "Read-only room" msgstr "" #: ../../static/t/room/edit/tab_config.html:71 msgid "All users allowed to post may also delete messages" msgstr "" #: ../../static/t/room/edit/tab_config.html:76 msgid "File directory room" msgstr "" #: ../../static/t/room/edit/tab_config.html:80 msgid "Directory name: " msgstr "" #: ../../static/t/room/edit/tab_config.html:86 msgid "Uploading allowed" msgstr "" #: ../../static/t/room/edit/tab_config.html:91 msgid "Downloading allowed" msgstr "" #: ../../static/t/room/edit/tab_config.html:96 msgid "Visible directory" msgstr "" #: ../../static/t/room/edit/tab_config.html:103 msgid "Network shared room" msgstr "" #: ../../static/t/room/edit/tab_config.html:108 msgid "Permanent (does not auto-purge)" msgstr "" #: ../../static/t/room/edit/tab_config.html:113 msgid "Subject Required (Force users to specify a message subject)" msgstr "" #: ../../static/t/room/edit/tab_config.html:116 msgid "Anonymous messages" msgstr "" #: ../../static/t/room/edit/tab_config.html:122 msgid "No anonymous messages" msgstr "" #: ../../static/t/room/edit/tab_config.html:127 msgid "All messages are anonymous" msgstr "" #: ../../static/t/room/edit/tab_config.html:132 msgid "Prompt user when entering messages" msgstr "" #: ../../static/t/room/edit/tab_config.html:136 msgid "Room aide: " msgstr "" #: ../../static/t/room/edit/tab_listserv.html:5 msgid "" "The contents of this room are being mailed as individual messages " "to the following list recipients:

    " msgstr "" #: ../../static/t/room/edit/tab_listserv.html:19 msgid "" "The contents of this room are being mailed in digest form to the " "following list recipients:

    " msgstr "" #: ../../static/t/room/edit/tab_listserv.html:39 msgid "Add recipients from Contacts or other address books" msgstr "" #: ../../static/t/room/edit/tab_listserv.html:48 msgid "Allow non-subscribers to mail to this room." msgstr "" #: ../../static/t/room/edit/tab_listserv.html:54 msgid "Room post publication needs Admin permission." msgstr "" #: ../../static/t/room/edit/tab_listserv.html:59 msgid "Allow self-service subscribe/unsubscribe requests." msgstr "" #: ../../static/t/room/edit/tab_listserv.html:65 msgid "The URL for subscribe/unsubscribe is: " msgstr "" #: ../../static/t/room/edit/digestrecp_removal.html:1 #: ../../static/t/room/edit/pop3client_removal.html:9 #: ../../static/t/room/edit/listrecp_removal.html:1 #: ../../static/t/room/edit/rssclient_removal.html:5 msgid "(remove)" msgstr "" #: ../../static/t/room/edit/tab_admin.html:5 msgid "Delete this room" msgstr "" #: ../../static/t/room/edit/tab_admin.html:10 msgid "Set or change the icon for this rooms banner" msgstr "" #: ../../static/t/room/edit/tab_admin.html:14 msgid "Edit this rooms Info file" msgstr "" #: ../../static/t/room/edit/tab_share.html:5 msgid "Shared with" msgstr "" #: ../../static/t/room/edit/tab_share.html:6 msgid "Not shared with" msgstr "" #: ../../static/t/room/edit/tab_share.html:11 #: ../../static/t/room/edit/tab_share.html:21 msgid "Remote node name" msgstr "" #: ../../static/t/room/edit/tab_share.html:12 #: ../../static/t/room/edit/tab_share.html:22 msgid "Remote room name" msgstr "" #: ../../static/t/room/edit/tab_share.html:13 #: ../../static/t/room/edit/tab_share.html:23 msgid "Actions" msgstr "" #: ../../static/t/room/edit/tab_share.html:35 msgid "" "When sharing a room, it must be shared from both ends. Adding a node to the " "'shared' list sends messages out, but in order to receive messages, the " "other nodes must be configured to send messages out to your system as well. " "
  • If the remote room name is blank, it is assumed that the room name is " "identical on the remote node.
  • If the remote room name is different, the " "remote node must also configure the name of the room here." msgstr "" #: ../../static/t/room/edit/tab_feed.html:2 msgid "" "Retrieve messages from these remote POP3 accounts and store them in this " "room:" msgstr "" #: ../../static/t/room/edit/tab_feed.html:12 msgid "Remote host" msgstr "" #: ../../static/t/room/edit/tab_feed.html:15 msgid "Keep messages on server?" msgstr "" #: ../../static/t/room/edit/tab_feed.html:16 msgid "Interval" msgstr "" #: ../../static/t/room/edit/tab_feed.html:31 msgid "Fetch the following RSS feeds and store them in this room:" msgstr "" #: ../../static/t/room/edit/tab_feed.html:43 msgid "Feed URL" msgstr "" #: ../../static/t/room/edit/tab_access.html:5 msgid "" "The users listed below have access to this room. To remove a user from the " "access list, select the user name from the list and click 'Kick'." msgstr "" #: ../../static/t/room/edit/tab_access.html:20 msgid "" "To grant another user access to this room, enter the user name in the box " "below and click 'Invite'." msgstr "" #: ../../static/t/room/edit/tab_access.html:26 msgid "Invite:" msgstr "" #: ../../static/t/room/edit/tab_access.html:35 msgid "Users" msgstr "" #: ../../static/t/room/zapped_list.html:7 msgid "Zapped (forgotten) rooms" msgstr "" #: ../../static/t/room/zapped_list.html:10 msgid "Click on any room to un-zap it and goto that room." msgstr "" #: ../../static/t/room/display_private.html:7 msgid "Go to a hidden room" msgstr "" #: ../../static/t/room/display_private.html:8 msgid "" "If you know the name of a hidden (guess-name) or passworded room, you can " "enter that room by typing its name below. Once you gain access to a private " "room, it will appear in your regular room listings so you don‘t have to keep " "returning here." msgstr "" #: ../../static/t/room/display_private.html:14 msgid "Enter room name:" msgstr "" #: ../../static/t/room/display_private.html:21 msgid "Enter room password:" msgstr "" #: ../../static/t/room/create.html:11 #: ../../static/t/menu/advanced_roomcommands.html:6 msgid "Create a new room" msgstr "" #: ../../static/t/room/create.html:18 msgid "Name of room: " msgstr "" #: ../../static/t/room/create.html:32 msgid "Default view for room: " msgstr "" #: ../../static/t/room/zap_this.html:3 msgid "Zap (forget/unsubscribe) the current room" msgstr "" #: ../../static/t/room/zap_this.html:6 msgid "If you select this option," msgstr "" #: ../../static/t/room/zap_this.html:8 msgid "will disappear from your room list. Is this what you wish to do?" msgstr "" #: ../../static/t/menu/your_info.html:2 msgid "Change your preferences and settings" msgstr "" #: ../../static/t/menu/your_info.html:3 msgid "Update your contact information" msgstr "" #: ../../static/t/menu/your_info.html:5 msgid "Enter your 'bio'" msgstr "" #: ../../static/t/menu/your_info.html:6 msgid "Edit your online photo" msgstr "" #: ../../static/t/menu/your_info.html:8 msgid "Edit your push email settings" msgstr "" #: ../../static/t/menu/your_info.html:9 msgid "Manage your OpenIDs" msgstr "" #: ../../static/t/menu/basic_commands.html:3 msgid "List known rooms" msgstr "" #: ../../static/t/menu/basic_commands.html:3 msgid "Where can I go from here?" msgstr "" #: ../../static/t/menu/basic_commands.html:4 ../../static/t/navbar.html:168 msgid "Goto next room" msgstr "" #: ../../static/t/menu/basic_commands.html:4 msgid "...with unread messages" msgstr "" #: ../../static/t/menu/basic_commands.html:5 msgid "Skip to next room" msgstr "" #: ../../static/t/menu/basic_commands.html:5 msgid "(come back here later)" msgstr "" #: ../../static/t/menu/basic_commands.html:6 ../../static/t/navbar.html:5 msgid "Ungoto" msgstr "" #: ../../static/t/menu/basic_commands.html:6 msgid "oops! Back to " msgstr "" #: ../../static/t/menu/basic_commands.html:10 ../../static/t/navbar.html:13 msgid "Read new messages" msgstr "" #: ../../static/t/menu/basic_commands.html:10 msgid "...in this room" msgstr "" #: ../../static/t/menu/basic_commands.html:11 ../../static/t/navbar.html:19 msgid "Read all messages" msgstr "" #: ../../static/t/menu/basic_commands.html:11 msgid "...old and new" msgstr "" #: ../../static/t/menu/basic_commands.html:12 ../../static/t/navbar.html:25 msgid "Enter a message" msgstr "" #: ../../static/t/menu/basic_commands.html:12 msgid "(post in this room)" msgstr "" #: ../../static/t/menu/basic_commands.html:13 msgid "File library" msgstr "" #: ../../static/t/menu/basic_commands.html:13 msgid "(List files available for download)" msgstr "" #: ../../static/t/menu/basic_commands.html:17 msgid "Summary page" msgstr "" #: ../../static/t/menu/basic_commands.html:17 msgid "Summary of my account" msgstr "" #: ../../static/t/menu/basic_commands.html:18 msgid "User list" msgstr "" #: ../../static/t/menu/basic_commands.html:18 msgid "(all registered users)" msgstr "" #: ../../static/t/menu/basic_commands.html:19 msgid "Bye!" msgstr "" #: ../../static/t/menu/advanced_roomcommands.html:3 msgid "Edit or delete this room" msgstr "" #: ../../static/t/menu/advanced_roomcommands.html:5 msgid "Go to a 'hidden' room" msgstr "" #: ../../static/t/menu/advanced_roomcommands.html:7 msgid "Zap (forget) this room" msgstr "" #: ../../static/t/menu/advanced_roomcommands.html:8 msgid "List all forgotten rooms" msgstr "" #: ../../static/t/navbar.html:34 msgid "View contacts" msgstr "" #: ../../static/t/navbar.html:40 msgid "Add new contact" msgstr "" #: ../../static/t/navbar.html:49 msgid "Day view" msgstr "" #: ../../static/t/navbar.html:55 msgid "Month view" msgstr "" #: ../../static/t/navbar.html:61 msgid "Add new event" msgstr "" #: ../../static/t/navbar.html:70 msgid "Calendar list" msgstr "" #: ../../static/t/navbar.html:79 msgid "View tasks" msgstr "" #: ../../static/t/navbar.html:85 msgid "Add new task" msgstr "" #: ../../static/t/navbar.html:94 msgid "View notes" msgstr "" #: ../../static/t/navbar.html:101 msgid "Add new note" msgstr "" #: ../../static/t/navbar.html:110 msgid "Refresh message list" msgstr "" #: ../../static/t/navbar.html:122 msgid "Write mail" msgstr "" #: ../../static/t/navbar.html:132 msgid "Wiki home" msgstr "" #: ../../static/t/navbar.html:139 msgid "Edit this page" msgstr "" #: ../../static/t/navbar.html:145 msgid "History" msgstr "" #: ../../static/t/navbar.html:154 #, fuzzy msgid "New blog post" msgstr "uudempia virkaa" #: ../../static/t/navbar.html:162 msgid "Skip this room" msgstr "" #: ../../static/t/msg_listview.html:18 msgid "Loading messages from server, please wait" msgstr "" #: ../../static/t/msg_listview.html:24 msgid "Open in new window" msgstr "" #: ../../static/t/msg_listview.html:26 msgid "Copy" msgstr "" #: ../../static/t/view_mailq/message.html:6 msgid "Originaly posted in: " msgstr "" #: ../../static/t/view_mailq/header.html:15 msgid "Refresh this page" msgstr "" #: ../../static/t/view_mailq/header.html:21 msgid "Message ID" msgstr "" #: ../../static/t/view_mailq/header.html:23 msgid "Date/time submitted" msgstr "" #: ../../static/t/view_mailq/header.html:25 msgid "Next attempt" msgstr "" #: ../../static/t/view_mailq/header.html:29 msgid "Recipients" msgstr "" #: ../../static/t/view_mailq/footer_empty.html:4 msgid "The queue is empty." msgstr "" #: ../../static/t/view_mailq/footer_empty.html:9 #: ../../static/t/view_mailq/footer.html:5 msgid "You do not have permission to view this resource." msgstr "" #: ../../static/t/get_logged_in.html:5 msgid "You must be logged in to access this page." msgstr "" #: ../../static/t/get_logged_in.html:9 #: ../../static/t/edit_message/attachments_pane.html:3 msgid "Close window" msgstr "" #: ../../static/t/get_logged_in.html:55 msgid "Log in using a user name and password" msgstr "" #: ../../static/t/get_logged_in.html:60 ../../static/t/get_logged_in.html:75 msgid "Password:" msgstr "" #: ../../static/t/get_logged_in.html:65 ../../static/t/get_logged_in.html:69 msgid "New user? Register now" msgstr "" #: ../../static/t/get_logged_in.html:70 msgid "" "enter the name and password you wish to use, and click "New User." " msgstr "" #: ../../static/t/get_logged_in.html:83 msgid "Log in using OpenID" msgstr "" #: ../../static/t/get_logged_in.html:85 msgid "OpenID URL:" msgstr "" #: ../../static/t/get_logged_in.html:92 msgid "Log in using Google" msgstr "" #: ../../static/t/get_logged_in.html:97 #, fuzzy msgid "Log in using Yahoo" msgstr "Kirjaudu uudestaan" #: ../../static/t/get_logged_in.html:102 msgid "Log in using AOL or AIM" msgstr "" #: ../../static/t/get_logged_in.html:104 msgid "Enter your AOL or AIM screen name:" msgstr "" #: ../../static/t/get_logged_in.html:115 msgid "Please wait" msgstr "" #: ../../static/t/summary/page.html:4 msgid "Summary page for " msgstr "" #: ../../static/t/summary/page.html:21 msgid "Messages" msgstr "Viestit" #: ../../static/t/summary/page.html:39 msgid "Today on your calendar" msgstr "" #: ../../static/t/summary/page.html:51 msgid "Who‘s online now" msgstr "" #: ../../static/t/summary/page.html:60 msgid "About this server" msgstr "" #: ../../static/t/summary/page.html:63 msgid "You are connected to" msgstr "" #: ../../static/t/summary/page.html:64 msgid "running" msgstr "" #: ../../static/t/summary/page.html:65 msgid "with" msgstr "" #: ../../static/t/summary/page.html:66 msgid "server build" msgstr "" #: ../../static/t/summary/page.html:67 msgid "and located in" msgstr "" #: ../../static/t/summary/page.html:68 msgid "Your system administrator is" msgstr "" #: ../../static/t/edit_message/attachments_pane.html:16 msgid "Attach file" msgstr "" #: ../../static/t/edit_message/attachments_pane.html:21 msgid "Upload" msgstr "" #: ../../static/t/edit_message/section_attach_select.html:4 msgid "Remove" msgstr "" #: ../../static/t/loggedinas.html:3 msgid "Logged in as" msgstr "" #: ../../static/t/loggedinas.html:6 msgid "Not logged in." msgstr "" #~ msgid "Create" #~ msgstr "Luo" #~ msgid "Your password was not accepted." #~ msgstr "Salasana ei kelpaa" webcit-8.24-dfsg.orig/po/webcit/nl.po0000644000175000017500000036033512271477123017256 0ustar michaelmichael# translation of nl.po to Nederlands # Copyright (C) 2006-2008 The Citadel Project - http://www.citadel.org # This file is distributed under the GNU General Public License # # Wim Kuilman , 2006, 2007. # Wim Kuilman , 2008, 2009. # Sander Bosman msgid "" msgstr "" "Project-Id-Version: WebCit\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-03-20 01:03-0400\n" "PO-Revision-Date: 2013-05-22 11:47+0000\n" "Last-Translator: Sander Bosman \n" "Language-Team: Dutch \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2013-05-23 05:12+0000\n" "X-Generator: Launchpad (build 16640)\n" "Language: nl\n" #: ../../roomops.c:708 ../../roomops.c:1005 ../../sieve.c:364 msgid "Cancelled. Changes were not saved." msgstr "Afgebroken. Wijzigingen niet bewaard." #: ../../roomops.c:838 ../../sieve.c:417 msgid "Your changes have been saved." msgstr "Uw wijzigingen zijn bewaard." #: ../../roomops.c:881 #, c-format msgid "User '%s' kicked out of room '%s'." msgstr "Gebruiker %s uit deze ruimte verwijderd. %s." #: ../../roomops.c:898 #, c-format msgid "User '%s' invited to room '%s'." msgstr "Gebruiker %s uitgenodigd in deze ruimte %s." #: ../../roomops.c:927 msgid "Cancelled. No new room was created." msgstr "Afgebroken. Geen nieuwe ruimte aangemaakt" #: ../../roomops.c:1187 msgid "Floor has been deleted." msgstr "Verdieping is verwijderd" #: ../../roomops.c:1211 msgid "New floor has been created." msgstr "Nieuwe verdieping aangemaakt" #: ../../roomops.c:1290 msgid "Room list view" msgstr "Bekijk als ruimte" #: ../../roomops.c:1293 msgid "Show empty floors" msgstr "Toon lege verdiepingen" #: ../../roomviews.c:50 msgid "Bulletin Board" msgstr "Bulletin Board" #: ../../roomviews.c:51 msgid "Mail Folder" msgstr "Mailmap" #: ../../roomviews.c:52 msgid "Address Book" msgstr "Adresboek" #: ../../roomviews.c:53 ../../static/t/iconbar.html:24 #: ../../static/t/iconbar/edit.html:55 msgid "Calendar" msgstr "Agenda" #: ../../roomviews.c:54 msgid "Task List" msgstr "Takenlijst" #: ../../roomviews.c:55 msgid "Notes List" msgstr "Lijst notities" #: ../../roomviews.c:56 msgid "Wiki" msgstr "Wiki" #: ../../roomviews.c:57 msgid "Calendar List" msgstr "Agendalijst" #: ../../roomviews.c:58 msgid "Journal" msgstr "Verslag" #: ../../roomviews.c:59 msgid "Drafts" msgstr "Concepten" #: ../../roomviews.c:60 msgid "Blog" msgstr "Blog" #: ../../tasks.c:93 msgid "Completed?" msgstr "Afgehandeld?" #: ../../tasks.c:95 msgid "Name of task" msgstr "Naam van taak" #: ../../tasks.c:97 msgid "Date due" msgstr "Streefdatum" #: ../../tasks.c:99 msgid "Category" msgstr "Categorie" #: ../../tasks.c:101 msgid "Show All" msgstr "Toon alles" #: ../../tasks.c:223 msgid "Edit task" msgstr "Taak bewerken" #: ../../tasks.c:242 ../../calendar.c:98 ../../calendar_view.c:298 #: ../../calendar_view.c:959 ../../calendar_view.c:1003 #: ../../calendar_view.c:1084 msgid "Summary:" msgstr "Omschrijving:" #: ../../tasks.c:253 msgid "Start date:" msgstr "Startdatum:" #: ../../tasks.c:261 ../../tasks.c:291 msgid "No date" msgstr "Geen datum" #: ../../tasks.c:265 ../../tasks.c:294 msgid "or" msgstr "of" #: ../../tasks.c:279 ../../tasks.c:308 msgid "Time associated" msgstr "Tijd gekoppeld" #: ../../tasks.c:283 msgid "Due date:" msgstr "Streefdatum:" #: ../../tasks.c:312 msgid "Completed:" msgstr "Afgehandeld:" #: ../../tasks.c:323 msgid "Category:" msgstr "Categorie:" #: ../../tasks.c:333 ../../calendar.c:159 ../../static/t/files.html:12 msgid "Description:" msgstr "Beschrijving:" #: ../../tasks.c:351 ../../event.c:764 msgid "Save" msgstr "Bewaren" #: ../../tasks.c:352 ../../event.c:765 ../../static/t/aide/inet/section.html:5 #: ../../static/t/view_blog/comment.html:12 #: ../../static/t/view_blog/post.html:15 ../../static/t/view_message.html:32 #: ../../static/t/navbar.html:116 ../../static/t/msg_listview.html:27 msgid "Delete" msgstr "Verwijderen" #: ../../tasks.c:353 ../../vcard_edit.c:1216 ../../paging.c:66 #: ../../event.c:767 ../../sysmsgs.c:69 ../../who.c:200 ../../auth.c:812 #: ../../static/t/edit_message.html:135 ../../static/t/confirmlogoff.html:4 msgid "Cancel" msgstr "Annuleren" #: ../../tasks.c:423 ../../calendar_view.c:1379 msgid "Untitled Task" msgstr "Naamloze taak" #: ../../fmt_date.c:310 msgid "Time format" msgstr "uurformaat" #: ../../listsub.c:54 ../../static/t/listsub/display.html:5 msgid "List subscription" msgstr "Abonneer op lijst" #: ../../listsub.c:67 ../../static/t/listsub/display.html:9 msgid "List subscribe/unsubscribe" msgstr "Abonneer op/ verwijder van lijst" #: ../../listsub.c:87 ../../static/t/listsub/display.html:15 #: ../../static/t/listsub/display.html:34 msgid "Confirmation request sent" msgstr "Bevestigingsverzoek verstuurd" #: ../../listsub.c:89 #, c-format msgid "" "You are subscribing %s to the %s mailing list. The " "listserver has sent you an e-mail with one additional Web link for you to " "click on to confirm your subscription. This extra step is for your " "protection, as it prevents others from being able to subscribe you to lists " "without your consent.

    Please click on the link which is being e-" "mailed to you and your subscription will be confirmed.
    \n" msgstr "" "U abonneert %s op de %s mailinglijst. De listserver heeft u " "een e-mail gestuurd met een extra link waarop u moet klikken om het " "abonnement te bevestigen. Deze extra stap is voor uw bescherming, want het " "voorkomt dat anderen zonder uw toestemming u abonneren op " "mailinglijsten.

    Klik alstublieft op de gemailde link om uw " "abonnement te bevestigen
    \n" #: ../../listsub.c:102 ../../static/t/listsub/display.html:24 msgid "Go back..." msgstr "Ga terug..." #: ../../listsub.c:253 ../../listsub.c:291 ../../listsub.c:327 #: ../../listsub.c:334 msgid "You need to specify the mailinglist to subscribe to." msgstr "Je moet de mailinglist specificeren waarop je jezelf wilt abonneren." #: ../../listsub.c:260 ../../listsub.c:298 msgid "You need to specify the email address you'd like to subscribe with." msgstr "Je moet het e-mail adres waarmee je je wilt abonneren specificeren." #: ../../blogview_renderer.c:58 ../../blogview_renderer.c:74 #, c-format msgid "%d comments" msgstr "%d commentaren" #: ../../blogview_renderer.c:61 ../../blogview_renderer.c:77 msgid "permalink" msgstr "permalink" #: ../../blogview_renderer.c:302 msgid "Newer posts" msgstr "nieuwere berichten" #: ../../blogview_renderer.c:311 msgid "Older posts" msgstr "oudere berichten" #: ../../useredit.c:629 msgid "" "An error occurred while trying to create or edit this address book entry." msgstr "" "Er is een fout opgetreden tijdens het aanmaken of bewerken van dit adresboek " "item." #: ../../useredit.c:717 msgid "Changes were not saved." msgstr "Wijzigingen niet bewaard." #: ../../useredit.c:782 msgid "A new user has been created." msgstr "Nieuwe gebruiker aangemaakt." #: ../../useredit.c:786 msgid "" "You are attempting to create a new user from within Citadel while running in " "host based authentication mode. In this mode, you must create new users on " "the host system, not within Citadel." msgstr "" "U probeert een nieuwe gebruiker aan te maken binnen Citadel terwijl " "uhostbased authenticatie gebruikt. Dan moet u een nieuwe gebruiker aanmaken " "op het hostsysteem en niet in Citadel." #: ../../bbsview_renderer.c:312 msgid "Go to page: " msgstr "Ga naar pagina: " #: ../../bbsview_renderer.c:354 msgid "First" msgstr "Eerste" #: ../../bbsview_renderer.c:360 msgid "Last" msgstr "Laatste" #: ../../graphics.c:56 msgid "Graphics upload has been cancelled." msgstr "Uploaden van afbeelding is afgebroken." #: ../../graphics.c:62 msgid "You didn't upload a file." msgstr "U heeft geen bestand geüpload." #: ../../graphics.c:112 msgid "your photo" msgstr "uw foto" #: ../../graphics.c:119 msgid "the icon for this room" msgstr "het icoontje voor deze ruimte" #: ../../graphics.c:127 msgid "the Greetingpicture for the login prompt" msgstr "het welkomsplaatje voor de login prompt" #: ../../graphics.c:135 msgid "the Logoff banner picture" msgstr "het plaatje voor de Uitlog banner" #: ../../graphics.c:146 msgid "the icon for this floor" msgstr "het icoontje voor deze verdieping" #: ../../calendar_tools.c:100 msgid "Hour: " msgstr "Uur: " #: ../../calendar_tools.c:120 msgid "Minute: " msgstr "Minuut: " #: ../../calendar_tools.c:191 msgid "(status unknown)" msgstr "(status onbekend)" #: ../../calendar_tools.c:207 msgid "(needs action)" msgstr "(actie gevraagd)" #: ../../calendar_tools.c:210 msgid "(accepted)" msgstr "(geaccepteerd)" #: ../../calendar_tools.c:213 msgid "(declined)" msgstr "(afgewezen)" #: ../../calendar_tools.c:216 msgid "(tenative)" msgstr "(voorwaardelijk)" #: ../../calendar_tools.c:219 msgid "(delegated)" msgstr "(gedelegeerd)" #: ../../calendar_tools.c:222 msgid "(completed)" msgstr "(afgehandeld)" #: ../../calendar_tools.c:225 msgid "(in process)" msgstr "(in bewerking)" #: ../../calendar_tools.c:228 msgid "(none)" msgstr "(geen)" #: ../../notes.c:343 msgid "Click on any note to edit it." msgstr "Klik op willekeurige notitie om te bewerken." #: ../../vcard_edit.c:175 ../../vcard_edit.c:178 msgid "(no name)" msgstr "(geen naam)" #: ../../vcard_edit.c:443 msgid " (work)" msgstr " (werk)" #: ../../vcard_edit.c:445 msgid " (home)" msgstr " (thuis)" #: ../../vcard_edit.c:447 msgid " (cell)" msgstr " (mobiel)" #: ../../vcard_edit.c:458 ../../vcard_edit.c:1120 msgid "Address:" msgstr "Adres:" #: ../../vcard_edit.c:526 msgid "Telephone:" msgstr "Telefoon:" #: ../../vcard_edit.c:531 msgid "E-mail:" msgstr "E-mail:" #: ../../vcard_edit.c:779 msgid "This address book is empty." msgstr "Dit adresboek is leeg." #: ../../vcard_edit.c:793 msgid "An internal error has occurred." msgstr "Er is een interne fout opgetreden." #: ../../vcard_edit.c:944 msgid "Error" msgstr "Fout" #: ../../vcard_edit.c:1048 msgid "Edit contact information" msgstr "Bewerk contactinformatie" #: ../../vcard_edit.c:1068 msgid "Prefix" msgstr "Aanhef" #: ../../vcard_edit.c:1068 msgid "First Name" msgstr "Voornaam" #: ../../vcard_edit.c:1068 msgid "Middle Name" msgstr "Voorvoegsel" #: ../../vcard_edit.c:1068 msgid "Last Name" msgstr "Achternaam" #: ../../vcard_edit.c:1068 msgid "Suffix" msgstr "Suffix" #: ../../vcard_edit.c:1089 msgid "Display name:" msgstr "Naamweergave:" #: ../../vcard_edit.c:1096 msgid "Title:" msgstr "Titel:" #: ../../vcard_edit.c:1103 msgid "Organization:" msgstr "Organisatie:" #: ../../vcard_edit.c:1114 msgid "PO box:" msgstr "Postbus:" #: ../../vcard_edit.c:1130 msgid "City:" msgstr "Plaats:" #: ../../vcard_edit.c:1136 msgid "State:" msgstr "Prov.:" #: ../../vcard_edit.c:1142 msgid "ZIP code:" msgstr "Postcode:" #: ../../vcard_edit.c:1148 msgid "Country:" msgstr "Land:" #: ../../vcard_edit.c:1158 msgid "Home telephone:" msgstr "Telefoon thuis:" #: ../../vcard_edit.c:1164 msgid "Work telephone:" msgstr "Telefoon werk:" #: ../../vcard_edit.c:1170 msgid "Mobile telephone:" msgstr "Mobiele telefoon:" #: ../../vcard_edit.c:1176 msgid "Fax number:" msgstr "Faxnummer:" #: ../../vcard_edit.c:1187 msgid "Primary Internet e-mail address" msgstr "Primair e-mailadres:" #: ../../vcard_edit.c:1194 msgid "Internet e-mail aliases" msgstr "Internet e-mail aliases" #: ../../vcard_edit.c:1215 ../../sysmsgs.c:67 msgid "Save changes" msgstr "Wijzigingen bewaren" #: ../../vcard_edit.c:1261 msgid "Unable to enter the room to save your message" msgstr "Ruimte niet toegankelijk om bericht te bewaren" #: ../../vcard_edit.c:1265 msgid "Aborting." msgstr "Afgebroken" #: ../../vcard_edit.c:1297 ../../vcard_edit.c:1341 ../../auth.c:367 #: ../../auth.c:397 msgid "An error has occurred." msgstr "Er is een fout opgetreden." #: ../../vcard_edit.c:1399 msgid "Could Not decode vcard photo\n" msgstr "Kon de vcard foto niet decoderen\n" #: ../../preferences.c:880 msgid "Cancelled. No settings were changed." msgstr "Afgebroken. Geen instellingen gewijzigd." #: ../../preferences.c:1092 msgid "Make this my start page" msgstr "Maak hiervan mijn startpagina" #: ../../preferences.c:1130 msgid "This isn't allowed to become the start page." msgstr "Niet toegestaan hier de startpagina van te maken." #: ../../preferences.c:1132 msgid "You no longer have a start page selected." msgstr "U heeft geen startpagina meer geselecteerd." #: ../../preferences.c:1182 msgid "Prefered startpage" msgstr "Voorkeur startpagina" #: ../../calendar.c:76 msgid "Meeting invitation" msgstr "Uitnodiging bijeenkomst" #: ../../calendar.c:79 msgid "Attendee's reply to your invitation" msgstr "Antwoord van de deelnemer op uw uitnodiging" #: ../../calendar.c:82 msgid "Published event" msgstr "Gepubliceerde afspraak" #: ../../calendar.c:85 msgid "This is an unknown type of calendar item." msgstr "Dit is een onbekend agenda item." #: ../../calendar.c:107 ../../calendar_view.c:306 ../../calendar_view.c:964 #: ../../calendar_view.c:1008 ../../calendar_view.c:1089 msgid "Location:" msgstr "Locatie:" #: ../../calendar.c:132 ../../calendar_view.c:351 ../../calendar_view.c:970 msgid "Date:" msgstr "Datum:" #: ../../calendar.c:139 ../../calendar_view.c:373 ../../calendar_view.c:1013 #: ../../calendar_view.c:1099 msgid "Starting date/time:" msgstr "Startdatum/-tijd:" #: ../../calendar.c:150 ../../calendar_view.c:376 ../../calendar_view.c:1015 #: ../../calendar_view.c:1101 msgid "Ending date/time:" msgstr "Einddatum/-tijd:" #: ../../calendar.c:168 ../../event.c:90 msgid "Recurrence" msgstr "Herhalend" #: ../../calendar.c:169 ../../event.c:505 msgid "This is a recurring event" msgstr "Dit is een zich herhalende gebeurtenis" #: ../../calendar.c:178 msgid "Attendee:" msgstr "Deelnemer:" #: ../../calendar.c:218 #, c-format msgid "This is an update of '%s' which is already in your calendar." msgstr "Dit is een update van '%s' die al in uw agenda staat." #: ../../calendar.c:222 #, c-format msgid "" "This event would conflict with '%s' which is already in your calendar." msgstr "Deze afspraak zou botsen met '%s' , die al in uw agenda staat." #: ../../calendar.c:227 msgid "Update:" msgstr "Update:" #: ../../calendar.c:228 msgid "CONFLICT:" msgstr "CONFLICT:" #: ../../calendar.c:251 msgid "How would you like to respond to this invitation?" msgstr "Hoe wilt u reageren op deze uitnodiging?" #: ../../calendar.c:252 msgid "Accept" msgstr "Accepteren" #: ../../calendar.c:253 msgid "Tentative" msgstr "Voorwaardelijk" #: ../../calendar.c:254 msgid "Decline" msgstr "Afwijzen" #: ../../calendar.c:271 msgid "Click Update to accept this reply and update your calendar." msgstr "" "Klik Bijwerken om deze reactie te accepteren en uw agenda bij te " "werken." #: ../../calendar.c:272 msgid "Update" msgstr "Bijwerken" #: ../../calendar.c:273 msgid "Ignore" msgstr "Negeren" #: ../../calendar.c:295 msgid "There was an error parsing this calendar item." msgstr "Fout opgetreden bij het plaatsen van dit agenda-item." #: ../../calendar.c:328 msgid "" "You have accepted this meeting invitation. It has been entered into your " "calendar." msgstr "" "U heeft de uitnodiging voor deze bijeenkomst geaccepteerd. Uw agenda is " "bijgewerkt." #: ../../calendar.c:332 msgid "" "You have tentatively accepted this meeting invitation. It has been " "'pencilled in' to your calendar." msgstr "" "U heeft de uitnodiging voor deze bijeenkomst voorwaardelijk geaccepteerd. " "Het staat 'met potlood' in uw agenda." #: ../../calendar.c:336 msgid "" "You have declined this meeting invitation. It has not been entered " "into your calendar." msgstr "" "U heeft de uitnodiging voor deze bijeenkomst afgewezen. Het is niet in uw " "agenda opgenomen." #: ../../calendar.c:341 msgid "A reply has been sent to the meeting organizer." msgstr "Een antwoord is gestuurd naar de organisator van deze bijeenkomst." #. / Translators: RSVP aka Répondez s'il-vous-plaît Is the term #. / that the recipient of an ical-invitation should please #. / answer this request. #: ../../calendar.c:376 msgid "Your calendar has been updated to reflect this RSVP." msgstr "Uw agenda is bijgewerkt om dit 'verzoek om antwoord' weer te geven." #: ../../calendar.c:378 msgid "" "You have chosen to ignore this RSVP. Your calendar has not been " "updated." msgstr "" "U heeft gekozen dit verzoek om antwoord te negeren. Uw agenda is " "niet bijgewerkt." #: ../../calendar.c:932 msgid "Calendar day view begins at:" msgstr "Dag in agenda begint om:" #: ../../calendar.c:933 msgid "Calendar day view ends at:" msgstr "Dag in agenda eindigt om:" #: ../../calendar.c:934 msgid "Week starts on:" msgstr "Week begint op:" #: ../../paging.c:35 msgid "Send instant message" msgstr "Stuur direct bericht" #: ../../paging.c:43 msgid "Send an instant message to: " msgstr "Stuur direct bericht naar: " #: ../../paging.c:57 msgid "Enter message text:" msgstr "Tekst bericht toevoegen:" #: ../../paging.c:65 ../../static/t/edit_message.html:109 msgid "Send message" msgstr "Bericht versturen" #: ../../paging.c:84 msgid "Message was not sent." msgstr "Bericht is niet verstuurd!" #: ../../paging.c:95 msgid "Message has been sent to " msgstr "Bericht is verstuurd naar " #: ../../iconbar.c:328 msgid "Iconbar Setting" msgstr "Instellingen iconbalk" #. #. * Set to 'unknown' right from the beginning. Unless we learn #. * something else, that's what we'll go with. #. #: ../../availability.c:148 msgid "availability unknown" msgstr "beschikbaarheid niet bekend" #: ../../availability.c:169 msgid "free" msgstr "vrij" #: ../../availability.c:179 msgid "BUSY" msgstr "BEZET" #: ../../serv_func.c:193 msgid "" "This server is already serving its maximum number of users and cannot accept " "any additional logins at this time. Please try again later or contact your " "system administrator." msgstr "" "De server draait al met het maximaal aantal gebruikers en kan op dit moment " "geen nieuwe login aannemen. Probeer het later nog eens of neem contact op " "met uw systeembeheerder." #: ../../serv_func.c:198 ../../serv_func.c:227 msgid "Received unexpected answer from Citadel server; bailing out." msgstr "Ontving onverwacht bericht van de Citadel server; afgesloten." #: ../../serv_func.c:236 #, c-format msgid "" "You are connected to a Citadel server running Citadel %d.%02d. \n" "In order to run this version of WebCit you must also have Citadel %d.%02d or " "newer.\n" "\n" "\n" msgstr "" "U bent verbonden met een Citadel server draaiend op Citadel %d.%02d. \n" "Om deze versie van Webcit de kunnen gebruiken moet u ook Citadel versie " "%d.%02d of nieuwer hebben.\n" "\n" "\n" #: ../../event.c:70 msgid "seconds" msgstr "seconden" #: ../../event.c:71 msgid "minutes" msgstr "minuten" #: ../../event.c:72 msgid "hours" msgstr "uren" #: ../../event.c:73 msgid "days" msgstr "dagen" #: ../../event.c:74 msgid "weeks" msgstr "weken" #: ../../event.c:75 msgid "months" msgstr "maanden" #: ../../event.c:76 msgid "years" msgstr "jaren" #: ../../event.c:77 msgid "never" msgstr "nooit" #: ../../event.c:81 msgid "first" msgstr "eerste" #: ../../event.c:82 msgid "second" msgstr "tweede" #: ../../event.c:83 msgid "third" msgstr "derde" #: ../../event.c:84 msgid "fourth" msgstr "vierde" #: ../../event.c:85 msgid "fifth" msgstr "vijfde" #: ../../event.c:88 msgid "Event" msgstr "Gebeurtenis" #: ../../event.c:89 ../../event.c:437 ../../event.c:449 msgid "Attendees" msgstr "Deelnemers" #: ../../event.c:167 msgid "Add or edit an event" msgstr "Gebeurtenis toevoegen of bewerken" #: ../../event.c:206 ../../static/t/iconbar.html:13 #: ../../static/t/iconbar/edit.html:29 msgid "Summary" msgstr "Samenvatting" #: ../../event.c:217 msgid "Location" msgstr "Locatie" #: ../../event.c:228 ../../calendar_view.c:760 msgid "Start" msgstr "Start" #: ../../event.c:271 ../../calendar_view.c:957 ../../calendar_view.c:986 msgid "All day event" msgstr "Gebeurtenis hele dag" #: ../../event.c:277 ../../calendar_view.c:761 msgid "End" msgstr "Eind" #: ../../event.c:327 ../../static/t/iconbar.html:34 #: ../../static/t/iconbar/edit.html:49 msgid "Notes" msgstr "Notities" #: ../../event.c:369 msgid "Organizer" msgstr "Organisator" #: ../../event.c:374 msgid "(you are the organizer)" msgstr "(u bent de organisator)" #: ../../event.c:392 msgid "Show time as:" msgstr "Toon tijd als:" #: ../../event.c:415 msgid "Free" msgstr "Vrij" #: ../../event.c:423 msgid "Busy" msgstr "Bezet" #: ../../event.c:440 msgid "(One per line)" msgstr "(Een per regel)" #: ../../event.c:450 ../../static/t/edit_message.html:143 #: ../../static/t/iconbar.html:29 ../../static/t/iconbar/edit.html:42 msgid "Contacts" msgstr "Contacten" #: ../../event.c:513 msgid "Recurrence rule" msgstr "Zich herhalende regel" #: ../../event.c:517 msgid "Repeats every" msgstr "Herhaalt zich elke" #. begin 'weekday_selector' div #: ../../event.c:535 msgid "on these weekdays:" msgstr "op deze weekdagen:" #: ../../event.c:593 #, c-format msgid "on day %s%d%s of the month" msgstr "op dag %s%d%s van de maand" #: ../../event.c:602 ../../event.c:664 msgid "on the " msgstr "op de " #: ../../event.c:626 msgid "of the month" msgstr "van de maand" #: ../../event.c:655 msgid "every " msgstr "iedere " #: ../../event.c:656 msgid "year on this date" msgstr "jaar op deze datum" #: ../../event.c:688 ../../static/t/msg_listselector_bottom.html:7 #: ../../static/t/msg_listselector_top.html:7 msgid "of" msgstr "van" #: ../../event.c:712 msgid "Recurrence range" msgstr "Zich herhalende periode" #: ../../event.c:720 msgid "No ending date" msgstr "Geen einddatum" #: ../../event.c:727 msgid "Repeat this event" msgstr "Deze gebeurtenis herhalen" #: ../../event.c:730 msgid "times" msgstr "maal" #: ../../event.c:738 msgid "Repeat this event until " msgstr "Herhaal deze gebeurtenis tot " #: ../../event.c:766 msgid "Check attendee availability" msgstr "Controleer beschikbaarheid deelnemers" #: ../../event.c:858 ../../calendar_view.c:272 ../../calendar_view.c:468 #: ../../calendar_view.c:937 msgid "Untitled Event" msgstr "Naamloze gebeurtenis" #: ../../sysmsgs.c:52 #, c-format msgid "Edit %s" msgstr "Bewerk %s" #: ../../sysmsgs.c:55 #, c-format msgid "" "Enter %s below. Text is formatted to the reader's browser. A newline is " "forced by preceding the next line by a blank." msgstr "" "Voeg hieronder %s toe. Tekst wordt weergegeven op de breedte van het scherm " "van de lezer. Voor de goede weergave zorg dat een regel in elk geval een " "spatie bevat." #: ../../sysmsgs.c:89 #, c-format msgid "Cancelled. %s was not saved." msgstr "Afgebroken. %s is niet bewaard." #: ../../sysmsgs.c:109 msgid " has been saved." msgstr " is opgeslagen." #: ../../sysmsgs.c:116 ../../sysmsgs.c:117 msgid "Room info" msgstr "Informatie over deze ruimte" #: ../../sysmsgs.c:122 ../../sysmsgs.c:124 msgid "Your bio" msgstr "Uw CV" #: ../../calendar_view.c:297 ../../calendar_view.c:958 #: ../../calendar_view.c:1002 ../../calendar_view.c:1083 #: ../../static/t/sieve/display_one.html:20 msgid "From" msgstr "van" #: ../../calendar_view.c:355 ../../calendar_view.c:974 msgid "Starting date:" msgstr "Begindatum" #: ../../calendar_view.c:361 ../../calendar_view.c:976 msgid "Ending date:" msgstr "Einddatum" #: ../../calendar_view.c:369 ../../calendar_view.c:1095 msgid "Date/time:" msgstr "Datum/tijd" #: ../../calendar_view.c:386 ../../calendar_view.c:980 #: ../../calendar_view.c:1018 ../../calendar_view.c:1105 #: ../../static/t/room/edit/tab_share.html:32 msgid "Notes:" msgstr "Notities:" #: ../../calendar_view.c:585 ../../calendar_view.c:721 msgid "previous" msgstr "vorige" #: ../../calendar_view.c:597 ../../calendar_view.c:733 #: ../../calendar_view.c:1308 msgid "next" msgstr "volgende" #: ../../calendar_view.c:756 msgid "Week" msgstr "Week" #: ../../calendar_view.c:758 msgid "Hours" msgstr "Uren" #: ../../calendar_view.c:759 ../../static/t/sieve/display_one.html:22 #: ../../static/t/msg_listview.html:9 msgid "Subject" msgstr "Onderwerp" #: ../../calendar_view.c:1001 ../../calendar_view.c:1024 msgid "Ongoing event" msgstr "Doorlopende afspraak" #: ../../messages.c:70 msgid "ERROR:" msgstr "FOUT:" #: ../../messages.c:88 msgid "Empty message" msgstr "Leeg bericht" #: ../../messages.c:1010 msgid "Cancelled. Message was not posted." msgstr "Afgebroken. Bericht is niet geplaatst." #: ../../messages.c:1013 msgid "Automatically cancelled because you have already saved this message." msgstr "Automatisch afgebroken omdat u dit bericht al heeft bewaard." #: ../../messages.c:1037 msgid "Saved to Drafts failed: " msgstr "Opslaan als concept mislukt: " #: ../../messages.c:1102 msgid "Refusing to post empty message.\n" msgstr "Weigering leeg bericht te versturen.\n" #: ../../messages.c:1128 msgid "Message has been saved to Drafts.\n" msgstr "Bericht opgelagen als concept.\n" #: ../../messages.c:1137 msgid "Message has been sent.\n" msgstr "Bericht is verstuurd.\n" #: ../../messages.c:1140 msgid "Message has been posted.\n" msgstr "Bericht is geplaatst.\n" #: ../../messages.c:1679 msgid "The message was not moved." msgstr "Het bericht is niet verplaatst." #: ../../messages.c:1719 #, c-format msgid "An error occurred while retrieving this part: %s/%s\n" msgstr "Fout opgetreden bij ophalen dit deel: %s/%s\n" #: ../../messages.c:1796 #, c-format msgid "An error occurred while retrieving this part: %s\n" msgstr "Fout opgetreden bij ophalen dit deel: %s\n" #: ../../messages.c:1956 msgid "Attach signature to email messages?" msgstr "Ondertekening aan emailberichten toevoegen?" #: ../../messages.c:1959 msgid "Use this signature:" msgstr "Gebruik deze ondertekening:" #: ../../messages.c:1961 msgid "Default character set for email headers:" msgstr "Standaard tekenset voor emailheaders:" #: ../../messages.c:1964 msgid "Preferred email address" msgstr "Voorkeur e-mailadres" #: ../../messages.c:1966 msgid "Preferred display name for email messages" msgstr "Weergegeven naam voor emailberichten" #: ../../messages.c:1970 msgid "Preferred display name for bulletin board posts" msgstr "Voorkeursnaam voor bulletinboard berichten" #: ../../messages.c:1973 msgid "Mailbox view mode" msgstr "Mailboxweergave" #: ../../inetconf.c:110 ../../inetconf.c:119 ../../inetconf.c:133 #: ../../inetconf.c:159 ../../netconf.c:156 ../../netconf.c:183 #: ../../netconf.c:191 ../../netconf.c:239 ../../netconf.c:247 msgid "Invalid Parameter" msgstr "Ongeldige parameter" #: ../../inetconf.c:126 msgid " has been deleted." msgstr " is verwijderd." #. added status message #: ../../inetconf.c:144 #, fuzzy msgid " added." msgstr "toegevoegd" #: ../../who.c:154 msgid "Edit your session display" msgstr "Bewerk uw sessie weergave" #: ../../who.c:158 msgid "" "This screen allows you to change the way your session appears in the 'Who is " "online' listing. To turn off any 'fake' name you've previously set, simply " "click the appropriate 'change' button without typing anything in the " "corresponding box. " msgstr "" "Dit scherm maakt het mogelijk de wijze waarop uw sessie wordt getoond in de " "'Wie is online' lijst te wijzigen. Om een nepnaam uit te schakelen, die u " "eerst had geplaatst klik eenvoudig op de 'Wijzig' knop zonder iets in te " "vullen in het betreffende veld. " #: ../../who.c:171 msgid "Room name:" msgstr "Naam ruimte:" #: ../../who.c:176 msgid "Change room name" msgstr "Naam ruimte wijzigen" #: ../../who.c:180 msgid "Host name:" msgstr "Hostnaam:" #: ../../who.c:185 msgid "Change host name" msgstr "Hostnaam wijzigen" #: ../../who.c:190 ../../static/t/aide/edituser/detailview.html:20 #: ../../static/t/openid_manual_create.html:9 #: ../../static/t/get_logged_in.html:57 ../../static/t/get_logged_in.html:72 msgid "User name:" msgstr "Gebruikersnaam:" #: ../../who.c:195 msgid "Change user name" msgstr "Gebruikersnaam wijzigen" #: ../../siteconfig.c:46 ../../siteconfig.c:64 ../../roomlist.c:44 #: ../../roomlist.c:394 ../../static/t/room/edit/tab_expire.html:72 #: ../../static/t/room/edit/tab_config.html:149 #: ../../static/t/room/edit/tab_access.html:42 msgid "Higher access is required to access this function." msgstr "Hogere toegangrechten nodig voor deze functie." #: ../../siteconfig.c:256 msgid "" "WARNING: Failed to parse Server Config; do you run a to new citserver?" msgstr "" "LET OP: mislukt Server Config te sturen; loopt er een te nieuwe citserver?" #: ../../siteconfig.c:319 msgid "Your system configuration has been updated." msgstr "Uw systeeminstellingen zijn bijgewerkt." #: ../../wiki.c:69 ../../wiki.c:162 ../../wiki.c:282 #, c-format msgid "There is no room called '%s'." msgstr "Er is geen ruimte genaamd '%s'" #: ../../wiki.c:76 #, c-format msgid "'%s' is not a Wiki room." msgstr "'%s'is geen Wiki ruimte." #: ../../wiki.c:110 #, c-format msgid "There is no page called '%s' here." msgstr "Er is hier geen pagina genaamd '%s'" #: ../../wiki.c:112 msgid "" "Select the 'Edit this page' link in the room banner if you would like to " "create this page." msgstr "" "Selecteer de 'Deze pagina bewerken' link in de banner van de ruimte als u " "deze pagina wilt aanmaken." #: ../../wiki.c:181 ../../static/t/msg_listview.html:11 msgid "Date" msgstr "Datum" #: ../../wiki.c:182 msgid "Author" msgstr "Auteur" #: ../../wiki.c:209 ../../wiki.c:218 msgid "(show)" msgstr "(toon)" #: ../../wiki.c:211 ../../static/t/navbar.html:145 msgid "Current version" msgstr "Huidige versie" #: ../../wiki.c:223 msgid "(revert)" msgstr "(terugplaatsen)" #: ../../wiki.c:300 msgid "Page title" msgstr "Paginatitel" #: ../../webcit.c:316 msgid "Authorization Required" msgstr "Autorisatie vereist" #: ../../webcit.c:324 #, c-format msgid "" "The resource you requested requires a valid username and password. You could " "not be logged in: %s\n" msgstr "" "De opgevraagde bron vereist een geldige gebruikersnaam en wachtwoord. U kon " "niet worden ingelogd in: %s\n" #: ../../webcit.c:647 ../../auth.c:526 msgid "" "This program was unable to connect or stay connected to the Citadel server. " "Please report this problem to your system administrator." msgstr "" "Dit programma was niet in staat om contact te maken - of te houden met de " "Citadel server. Meld dit probleem alstublieft bij uw systeembeheerder." #: ../../webcit.c:654 ../../auth.c:532 msgid "Read More..." msgstr "Lees verder..." #: ../../smtpqueue.c:134 ../../static/t/aide/ignetconf/section.html:5 #: ../../static/t/view_mailq/message.html:2 msgid "(Delete)" msgstr "(Verwijderen)" #: ../../smtpqueue.c:334 msgid "First Attempt pending" msgstr "Eerste poging loopt" #: ../../roomlist.c:99 msgid "My Folders" msgstr "Mijn mappen" #: ../../downloads.c:289 #, c-format msgid "An error occurred while retrieving this file: %s\n" msgstr "Fout opgetreden bij ophalen dit bestand: %s\n" #: ../../roomtokens.c:572 msgid "file" msgstr "bestand" #: ../../roomtokens.c:574 msgid "files" msgstr "bestanden" #: ../../summary.c:128 msgid "(None)" msgstr "(Niemand)" #: ../../summary.c:184 msgid "(Nothing)" msgstr "(Niets)" #: ../../msg_renderers.c:579 ../../static/t/who/bio.html:15 msgid "edit" msgstr "bewerken" #: ../../msg_renderers.c:1119 msgid "I don't know how to display " msgstr "Ik weet niet hoe ik moet tonen " #: ../../msg_renderers.c:1353 msgid "(no subject)" msgstr "(geen onderwerp)" #: ../../addressbook_popup.c:186 msgid "Add" msgstr "Toevoegen" #. an erased user #: ../../auth.c:30 ../../static/t/aide/edituser/detailview.html:43 #: ../../static/t/aide/siteconfig/tab_access.html:40 #: ../../static/t/aide/siteconfig/tab_access.html:51 msgid "Deleted" msgstr "Verwijderd" #. a new user #: ../../auth.c:33 ../../static/t/aide/edituser/detailview.html:44 #: ../../static/t/aide/siteconfig/tab_access.html:41 #: ../../static/t/aide/siteconfig/tab_access.html:52 #: ../../static/t/get_logged_in.html:79 msgid "New User" msgstr "Nieuwe gebruiker" #. a trouble maker #: ../../auth.c:36 ../../static/t/aide/edituser/detailview.html:45 #: ../../static/t/aide/siteconfig/tab_access.html:42 #: ../../static/t/aide/siteconfig/tab_access.html:53 msgid "Problem User" msgstr "Probleemgebruiker" #. user with normal privileges #: ../../auth.c:39 ../../static/t/aide/edituser/detailview.html:46 #: ../../static/t/aide/siteconfig/tab_access.html:43 #: ../../static/t/aide/siteconfig/tab_access.html:54 msgid "Local User" msgstr "Lokale gebruiker" #. a user that may access network resources #: ../../auth.c:42 ../../static/t/aide/edituser/detailview.html:47 #: ../../static/t/aide/siteconfig/tab_access.html:44 #: ../../static/t/aide/siteconfig/tab_access.html:55 msgid "Network User" msgstr "Netwerkgebruiker" #. a moderator #: ../../auth.c:45 ../../static/t/aide/edituser/detailview.html:48 #: ../../static/t/aide/siteconfig/tab_access.html:45 #: ../../static/t/aide/siteconfig/tab_access.html:56 msgid "Preferred User" msgstr "Voorkeursgebruiker" #. chief #: ../../auth.c:48 ../../static/t/aide/edituser/detailview.html:49 #: ../../static/t/aide/siteconfig/tab_access.html:46 #: ../../static/t/aide/siteconfig/tab_access.html:57 msgid "Admin" msgstr "Beheerder" #: ../../auth.c:513 ../../static/t/iconbar.html:80 #: ../../static/t/confirmlogoff.html:3 #: ../../static/t/menu/basic_commands.html:19 msgid "Log off" msgstr "Uitloggen" #: ../../auth.c:537 msgid "Log in again" msgstr "Opnieuw inloggen" #: ../../auth.c:585 ../../static/t/aide/usermanagement.html:3 msgid "Validate new users" msgstr "Nieuwe gebruikers goedkeuren" #: ../../auth.c:605 msgid "No users require validation at this time." msgstr "Er zijn geen gebruikers die goedgekeurd moeten worden." #: ../../auth.c:655 msgid "very weak" msgstr "erg zwak" #: ../../auth.c:658 msgid "weak" msgstr "zwak" #: ../../auth.c:661 msgid "ok" msgstr "ok" #: ../../auth.c:665 msgid "strong" msgstr "sterk" #: ../../auth.c:683 #, c-format msgid "Current access level: %d (%s)\n" msgstr "Huidig toegangsniveau %d (%s)\n" #: ../../auth.c:691 msgid "Select access level for this user:" msgstr "Selecteer toegangsniveau voor deze gebruiker:" #: ../../auth.c:776 ../../static/t/menu/your_info.html:4 msgid "Change your password" msgstr "Uw wachtwoord wijzigen" #: ../../auth.c:800 msgid "Enter new password:" msgstr "Uw nieuwe wachtwoord:" #: ../../auth.c:804 msgid "Enter it again to confirm:" msgstr "Nogmaals als bevestiging:" #: ../../auth.c:810 msgid "Change password" msgstr "Wachtwoord wijzigen" #: ../../auth.c:830 msgid "Cancelled. Password was not changed." msgstr "Geannuleerd: Wachtwoord niet gewijzigd." #: ../../auth.c:839 msgid "They don't match. Password was not changed." msgstr "Ze komen niet overeen. Wachtwoord is niet gewijzigd." #: ../../auth.c:845 msgid "Blank passwords are not allowed." msgstr "Wachtwoorden mogen niet leeg zijn." #: ../../openid.c:34 msgid "Manage Account/OpenID Associations" msgstr "Beheer account/OpenID verbindingen" #: ../../openid.c:52 msgid "Do you really want to delete this OpenID?" msgstr "Wilt u dit OpenID echt verwijderen?" #: ../../openid.c:53 msgid "(delete)" msgstr "(verwijderen)" #: ../../openid.c:61 msgid "Add an OpenID: " msgstr "Voeg een OpenID toe: " #: ../../openid.c:64 msgid "Attach" msgstr "Bijlage" #: ../../openid.c:68 #, c-format msgid "%s does not permit authentication via OpenID." msgstr "%s staat authentificatie via OpenID niet toe." #: ../../html2html.c:136 #, c-format msgid "realloc() error! couldn't get %d bytes: %s" msgstr "realloc() fout! kon niet %d bytes krijgen: %s" #: ../../static/t/viewomatic.html:4 msgid "View as:" msgstr "Toon als:" #: ../../static/t/sieve/list.html:32 ../../static/t/sieve/none.html:4 #: ../../static/t/menu/your_info.html:7 msgid "View/edit server-side mail filters" msgstr "Mailfilters op de server bekijken/bewerken" #: ../../static/t/sieve/list.html:41 msgid "When new mail arrives: " msgstr "Als nieuwe mail binnenkomt: " #: ../../static/t/sieve/list.html:43 msgid "Leave it in my inbox without filtering" msgstr "Laat het in mijn Inbox zonder filtering" #: ../../static/t/sieve/list.html:44 msgid "Filter it according to rules selected below" msgstr "Filter het volgens onderstaande regels" #: ../../static/t/sieve/list.html:45 msgid "Filter it through a manually edited script (advanced users only)" msgstr "" "Filter het door een handmatig aangemaakt script (alleen gevorderde " "gebruikers)" #: ../../static/t/sieve/list.html:52 msgid "Your incoming mail will not be filtered through any scripts." msgstr "Uw inkomende mail zal door geen enkel script worden gefilterd." #: ../../static/t/sieve/list.html:64 msgid "Add rule" msgstr "Voeg regel toe" #: ../../static/t/sieve/list.html:71 msgid "The currently active script is: " msgstr "Het nu actieve script is: " #: ../../static/t/sieve/list.html:76 ../../static/t/sieve/add.html:3 msgid "Add or delete scripts" msgstr "Toevoegen of verwijderen scripts" #: ../../static/t/sieve/display_one.html:16 msgid "If" msgstr "als" #: ../../static/t/sieve/display_one.html:21 msgid "To or Cc" msgstr "Aan of Cc" #: ../../static/t/sieve/display_one.html:23 msgid "Reply-to" msgstr "Antwoord aan" #: ../../static/t/sieve/display_one.html:24 #: ../../static/t/msg_listview.html:10 #: ../../static/t/view_mailq/header.html:27 msgid "Sender" msgstr "Afzender" #: ../../static/t/sieve/display_one.html:25 msgid "Resent-From" msgstr "Afwijzen-Van" #: ../../static/t/sieve/display_one.html:26 msgid "Resent-To" msgstr "Afwijzen-Aan" #: ../../static/t/sieve/display_one.html:27 msgid "Envelope From" msgstr "Envelop Van" #: ../../static/t/sieve/display_one.html:28 msgid "Envelope To" msgstr "Envelop Aan" #: ../../static/t/sieve/display_one.html:29 msgid "X-Mailer" msgstr "X-Mailer" #: ../../static/t/sieve/display_one.html:30 msgid "X-Spam-Flag" msgstr "X-Spam-Flag" #: ../../static/t/sieve/display_one.html:31 msgid "X-Spam-Status" msgstr "X-Spam-Status" #: ../../static/t/sieve/display_one.html:32 msgid "List-ID" msgstr "Lijst-ID" #: ../../static/t/sieve/display_one.html:33 msgid "Message size" msgstr "Berichtgrootte" #: ../../static/t/sieve/display_one.html:34 #: ../../static/t/select_messageindex_all.html:1 msgid "All" msgstr "Alles" #: ../../static/t/sieve/display_one.html:41 msgid "contains" msgstr "bevat" #: ../../static/t/sieve/display_one.html:42 msgid "does not contain" msgstr "bevat niet" #: ../../static/t/sieve/display_one.html:43 msgid "is" msgstr "is" #: ../../static/t/sieve/display_one.html:44 msgid "is not" msgstr "is niet" #: ../../static/t/sieve/display_one.html:45 msgid "matches" msgstr "komt overeen met" #: ../../static/t/sieve/display_one.html:46 msgid "does not match" msgstr "komt niet overeen met" #: ../../static/t/sieve/display_one.html:52 msgid "(All messages)" msgstr "(Alle berichten)" #: ../../static/t/sieve/display_one.html:56 msgid "is larger than" msgstr "is groter dan" #: ../../static/t/sieve/display_one.html:57 msgid "is smaller than" msgstr "is kleiner dan" #: ../../static/t/sieve/display_one.html:59 msgid "bytes" msgstr "bytes" #: ../../static/t/sieve/display_one.html:65 msgid "Keep" msgstr "Bewaren" #: ../../static/t/sieve/display_one.html:66 msgid "Discard silently" msgstr "Stil verwijderen" #: ../../static/t/sieve/display_one.html:67 msgid "Reject" msgstr "Afwijzen" #: ../../static/t/sieve/display_one.html:68 msgid "Move message to" msgstr "Verplaats bericht naar" #: ../../static/t/sieve/display_one.html:69 msgid "Forward to" msgstr "Doorsturen naar" #: ../../static/t/sieve/display_one.html:70 msgid "Vacation" msgstr "Vakantie" #: ../../static/t/sieve/display_one.html:82 msgid "Message:" msgstr "Bericht:" #: ../../static/t/sieve/display_one.html:90 msgid "and then" msgstr "en dan" #: ../../static/t/sieve/display_one.html:93 msgid "continue processing" msgstr "doorgaan met bewerking" #: ../../static/t/sieve/display_one.html:94 msgid "stop" msgstr "stop" #: ../../static/t/sieve/none.html:9 msgid "" "This installation of Citadel was built without support for server-side mail " "filtering.
    Please contact your system administrator if you require this " "feature.
    " msgstr "" "Deze installatie van Citadel is gebouwd zonder ondersteuning voor " "mailfilters.
    Neem contact op met de beheerder als u deze functie nodig " "heeft." #: ../../static/t/sieve/add.html:9 msgid "Add a new script" msgstr "Voeg een nieuw script toe" #: ../../static/t/sieve/add.html:10 msgid "" "To create a new script, enter the desired script name in the box below and " "click 'Create'." msgstr "" "Om een nieuw script te maken voer de gewenste scriptnaam in en klik op " "'Aanmaken'" #: ../../static/t/sieve/add.html:14 msgid "Script name: " msgstr "Naam van het script: " #: ../../static/t/sieve/add.html:18 msgid "Edit scripts" msgstr "Scripts bewerken" #: ../../static/t/sieve/add.html:20 msgid "Return to the script editing screen" msgstr "Terug naar het bewerkingsscherm voor script" #: ../../static/t/sieve/add.html:23 msgid "Delete scripts" msgstr "Scripts verwijderen" #: ../../static/t/sieve/add.html:24 msgid "" "To delete an existing script, select the script name from the list and click " "'Delete'." msgstr "" "Om een bestaand script te verwijderen, selecteer de scriptnaam en klik " "'Verwijderen'." #: ../../static/t/msg/confirm_move.html:4 msgid "Confirm move of message" msgstr "Bevestig verplaatsen bericht" #: ../../static/t/msg/confirm_move.html:12 msgid "Move this message to:" msgstr "Dit bericht verplaatsen naar:" #: ../../static/t/login.html:5 msgid "powered by" msgstr "op basis van" #: ../../static/t/login.html:15 ../../static/t/iconbar.html:88 #: ../../static/t/get_logged_in.html:64 ../../static/t/get_logged_in.html:88 #: ../../static/t/get_logged_in.html:93 ../../static/t/get_logged_in.html:98 #: ../../static/t/get_logged_in.html:107 msgid "Log in" msgstr "Laatste login" #: ../../static/t/trailing.html:14 msgid "" "WARNING: You have JavaScript disabled in your web browser. Many functions " "of this system will not work properly." msgstr "" "LET OP: JavaScript is uitgeschakeld op uw computer. Veel functies van dit " "systeem zullen niet goed werken." #: ../../static/t/view_submessage.html:4 #: ../../static/t/view_message/replyquote.html:3 #: ../../static/t/view_message/replyquote.html:7 #: ../../static/t/view_message/print.html:8 ../../static/t/view_message.html:7 msgid "from " msgstr "van " #: ../../static/t/searchomatic.html:4 msgid "Search: " msgstr "Zoek: " #: ../../static/t/listsub/display.html:16 msgid "You are subscribing " msgstr "Je bent aan het abonneren " #: ../../static/t/listsub/display.html:17 msgid " to the " msgstr " naar de " #: ../../static/t/listsub/display.html:18 msgid " mailing list." msgstr " mailing list." #: ../../static/t/listsub/display.html:19 msgid "" "The listserver has sent you an e-mail with one additional Web link for you " "to click on to confirm your subscription." msgstr "" #: ../../static/t/listsub/display.html:20 msgid "" "This extra step is for your protection, as it prevents others from being " "able to subscribe you to lists without your consent." msgstr "" #: ../../static/t/listsub/display.html:22 msgid "" "Please click on the link which is being e-mailed to you and your " "subscription will be confirmed." msgstr "" #: ../../static/t/listsub/display.html:27 #: ../../static/t/listsub/display.html:47 msgid "ERROR" msgstr "FOUT" #: ../../static/t/listsub/display.html:35 msgid "You are unsubscribing" msgstr "" #: ../../static/t/listsub/display.html:37 msgid "from the" msgstr "van de" #: ../../static/t/listsub/display.html:39 msgid "mailing list." msgstr "mailing list." #: ../../static/t/listsub/display.html:40 msgid "" "The listserver has sent you an e-mail with one additional Web link for you " "to click on to confirm your unsubscription." msgstr "" #: ../../static/t/listsub/display.html:41 msgid "" "This extra step is for your protection, as it prevents others from being " "able to unsubscribe you from lists without your consent." msgstr "" #: ../../static/t/listsub/display.html:43 msgid "" "Please click on the link which is being e-mailed to you and your " "unsubscription will be confirmed." msgstr "" #: ../../static/t/listsub/display.html:44 #, fuzzy msgid "Back..." msgstr "Ga terug..." #: ../../static/t/listsub/display.html:54 #, fuzzy msgid "Confirmation successful!" msgstr "Bevestigingsverzoek verstuurd" #: ../../static/t/listsub/display.html:56 #, fuzzy msgid "Confirmation failed." msgstr "Instellingen" #: ../../static/t/listsub/display.html:57 msgid "This could mean one of two things:" msgstr "" #: ../../static/t/listsub/display.html:59 msgid "" "You waited too long to confirm your subscribe/unsubscribe request (the " "confirmation link is only valid for three days)" msgstr "" #: ../../static/t/listsub/display.html:60 msgid "" "You have already successfully confirmed your subscribe/unsubscribe " "request and are attempting to do it again." msgstr "" #: ../../static/t/listsub/display.html:62 msgid "The error returned by the server was: " msgstr "" #: ../../static/t/listsub/display.html:70 #, fuzzy msgid "Name of list:" msgstr "Naam van taak" #: ../../static/t/listsub/display.html:75 #, fuzzy msgid "Your e-mail address:" msgstr "Voorkeur e-mailadres" #: ../../static/t/listsub/display.html:79 msgid "(If subscribing) preferred format: " msgstr "" #: ../../static/t/listsub/display.html:80 #, fuzzy msgid "One message at a time" msgstr "Tekst bericht toevoegen:" #: ../../static/t/listsub/display.html:81 #, fuzzy msgid "Digest format" msgstr "uurformaat" #: ../../static/t/listsub/display.html:89 msgid "" "When you attempt to subscribe or unsubscribe to a mailing list, you will " "receive an e-mail containing one additional web link to click on for final " "confirmation." msgstr "" #: ../../static/t/listsub/display.html:90 msgid "" "This extra step is for your protection, as it prevents others from being " "able to subscribe or unsubscribe you to lists." msgstr "" #: ../../static/t/floors_edit_one.html:11 msgid "(delete floor)" msgstr "(verwijder verdieping)" #: ../../static/t/floors_edit_one.html:13 msgid "(edit graphic)" msgstr "(bewerk afbeelding)" #: ../../static/t/floors.html:4 msgid "Add/change/delete floors" msgstr "Toevoegen, wijzigen of verwijderen verdiepingen" #: ../../static/t/floors.html:10 msgid "Floor number" msgstr "Nummer verdieping" #: ../../static/t/floors.html:11 msgid "Floor name" msgstr "Naam verdieping" #: ../../static/t/floors.html:12 msgid "Number of rooms" msgstr "Aantal ruimtes" #: ../../static/t/floors.html:13 msgid "Floor CSS" msgstr "CSS ruimte" #: ../../static/t/files.html:4 msgid "Files available for download in" msgstr "Bestanden beschikbaar voor downloaden in" #: ../../static/t/files.html:9 msgid "Upload a file:" msgstr "Upload een bestand:" #: ../../static/t/files.html:30 msgid "Filename" msgstr "Bestandsnaam" #: ../../static/t/files.html:31 msgid "Size" msgstr "Grootte" #: ../../static/t/files.html:32 msgid "Content" msgstr "Inhoud" #: ../../static/t/files.html:33 msgid "Description" msgstr "Beschrijving" #: ../../static/t/edit_message.html:9 ../../static/t/iconbar.html:50 #: ../../static/t/iconbar.html:59 msgid "Loading" msgstr "Laden" #: ../../static/t/edit_message.html:23 msgid "from" msgstr "van" #: ../../static/t/edit_message.html:29 ../../static/t/edit_message.html:38 msgid "Anonymous" msgstr "Anoniem" #: ../../static/t/edit_message.html:47 msgid "in" msgstr "in" #: ../../static/t/edit_message.html:51 msgid "To:" msgstr "Aan:" #: ../../static/t/edit_message.html:57 #: ../../static/t/view_message/print.html:15 #: ../../static/t/view_message.html:15 msgid "CC:" msgstr "CC:" #: ../../static/t/edit_message.html:63 msgid "BCC:" msgstr "BCC:" #: ../../static/t/edit_message.html:71 msgid "Subject (optional):" msgstr "Onderwerp (optioneel):" #: ../../static/t/edit_message.html:71 #: ../../static/t/view_message/replyquote.html:8 #: ../../static/t/view_message/print.html:16 #: ../../static/t/view_message.html:16 msgid "Subject:" msgstr "Onderwerp:" #: ../../static/t/edit_message.html:86 msgid "--- forwarded message ---" msgstr "--- doorgestuurd bericht ---" #: ../../static/t/edit_message.html:110 msgid "Post message" msgstr "Bericht plaatsen" #: ../../static/t/edit_message.html:118 #, fuzzy msgid "Save to Drafts" msgstr "Opslaan als concept mislukt: " #: ../../static/t/edit_message.html:126 #: ../../static/t/edit_message/attachments_pane.html:5 msgid "Attachments:" msgstr "Bijlagen:" #: ../../static/t/aide/display_serverrestart_page.html:4 msgid "Message to your Users:" msgstr "Bericht aan uw gebruikers:" #: ../../static/t/aide/display_generic_result.html:2 msgid "Server command results" msgstr "Resultaten servercommando" #: ../../static/t/aide/display_generic_result.html:18 #, fuzzy msgid "Enter another command" msgstr "Voer een servercommando in" #: ../../static/t/aide/display_generic_result.html:19 #, fuzzy msgid "Return to menu" msgstr "Switch naar menu" #: ../../static/t/aide/display_sitewide_config.html:3 msgid "Site configuration" msgstr "Site instellingen" #: ../../static/t/aide/display_sitewide_config.html:6 #: ../../static/t/aide/edituser/select.html:9 msgid "You need to be aide to view this." msgstr "U moet beheerder zijn om dit te bekijken." #: ../../static/t/aide/display_sitewide_config.html:11 msgid "General" msgstr "Algemeen" #: ../../static/t/aide/display_sitewide_config.html:12 msgid "Access" msgstr "Toegang" #: ../../static/t/aide/display_sitewide_config.html:13 msgid "Network" msgstr "Netwerk" #: ../../static/t/aide/display_sitewide_config.html:14 msgid "Tuning" msgstr "Afstemmen" #: ../../static/t/aide/display_sitewide_config.html:15 #, fuzzy msgid "Directory" msgstr "Naam van map: " #: ../../static/t/aide/display_sitewide_config.html:16 msgid "Auto-purger" msgstr "Auto-wisser" #: ../../static/t/aide/display_sitewide_config.html:17 msgid "Indexing/Journaling" msgstr "Indexing/Journaling" #: ../../static/t/aide/display_sitewide_config.html:18 #: ../../static/t/aide/siteconfig/tab_pushmail.html:1 msgid "Push Email" msgstr "Push Email" #: ../../static/t/aide/display_sitewide_config.html:19 msgid "Pop3" msgstr "Pop3" #: ../../static/t/aide/usermanagement.html:2 msgid "Add, change, delete user accounts" msgstr "Gebruikeraccounts toevoegen, wijzigen of verwijderen" #: ../../static/t/aide/display_inetconf.html:5 #: ../../static/t/aide/display_menu.html:5 msgid "System Administration Menu" msgstr "Menu Systeembeheer" #: ../../static/t/aide/display_inetconf.html:6 #: ../../static/t/aide/display_menu.html:6 msgid "Room Admin Menu" msgstr "Menu ruimte beheerder" #: ../../static/t/aide/display_inetconf.html:13 msgid "Local host aliases" msgstr "Local host aliases" #: ../../static/t/aide/display_inetconf.html:14 msgid "Directory domains" msgstr "Directory domeinen" #: ../../static/t/aide/display_inetconf.html:15 msgid "Smart hosts" msgstr "Smart hosts" #: ../../static/t/aide/display_inetconf.html:16 #, fuzzy msgid "Fallback smart hosts" msgstr "Smart hosts" #: ../../static/t/aide/display_inetconf.html:17 msgid "Notification hosts" msgstr "" #: ../../static/t/aide/display_inetconf.html:22 msgid "RBL hosts" msgstr "RBL hosts" #: ../../static/t/aide/display_inetconf.html:23 msgid "SpamAssassin hosts" msgstr "SpamAssasin hosts" #: ../../static/t/aide/display_inetconf.html:24 msgid "ClamAV clamd hosts" msgstr "ClamAV clamd hosts" #: ../../static/t/aide/display_inetconf.html:25 msgid "Masqueradable domains" msgstr "Masqueradable domeinen" #: ../../static/t/aide/edituser/select.html:5 msgid "Edit or delete users" msgstr "Gebruikers bewerken of verwijderen" #: ../../static/t/aide/edituser/select.html:17 msgid "Add users" msgstr "Gebruikers toevoegen" #: ../../static/t/aide/edituser/select.html:20 msgid "Edit or Delete users" msgstr "Gebruikers bewerken of verwijderen" #: ../../static/t/aide/edituser/box_select.html:1 msgid "" "To edit an existing user account, select the user name from the list and " "click 'Edit'." msgstr "" "Om een bestaande gebruiker te bewerken, selecteer de gebruikersnaam en klik " "op 'Bewerken'" #: ../../static/t/aide/edituser/detailview.html:4 msgid "Edit user account: " msgstr "Gebruikersaccount bewerken: " #: ../../static/t/aide/edituser/detailview.html:24 #: ../../static/t/room/edit/tab_feed.html:14 msgid "Password" msgstr "Wachtwoord" #: ../../static/t/aide/edituser/detailview.html:28 msgid "Permission to send Internet mail" msgstr "Toestemming om Internetmail te verzenden" #: ../../static/t/aide/edituser/detailview.html:32 msgid "Number of logins" msgstr "Aantal logins" #: ../../static/t/aide/edituser/detailview.html:36 msgid "Messages submitted" msgstr "Bericht geplaatst" #: ../../static/t/aide/edituser/detailview.html:40 msgid "Access level" msgstr "Toegangsniveau" #: ../../static/t/aide/edituser/detailview.html:54 msgid "User ID number" msgstr "Gebruiker ID nummer" #: ../../static/t/aide/edituser/detailview.html:58 msgid "Date and time of last login" msgstr "Datum en tijd laatste login" #: ../../static/t/aide/edituser/detailview.html:68 msgid "Auto-purge after this many days" msgstr "Opruimen na dit aantal dagen" #: ../../static/t/aide/edituser/add.html:1 msgid "" "To create a new user account, enter the desired user name in the box below " "and click 'Create'." msgstr "" "Om een nieuw gebruikersaccount aan te maken vul de gewenste gebruikersnaam " "hieronder in en klik op 'Aanmaken'." #: ../../static/t/aide/edituser/add.html:5 msgid "New user: " msgstr "Nieuwe gebruiker: " #: ../../static/t/aide/display_generic_cmd.html:4 msgid "Enter a server command" msgstr "Voer een servercommando in" #: ../../static/t/aide/display_generic_cmd.html:12 msgid "" "This screen allows you to enter Citadel server commands which are not " "supported by WebCit. If you do not know what that means, then this screen " "will not be of much use to you." msgstr "" "Dit scherm geeft de mogelijkheid Citadel servercommando's in te voeren, die " "niet worden ondersteund door Webcit. Als u niet weet wat dat betekent, dan " "is dit scherm van weinig nut voor u." #: ../../static/t/aide/display_generic_cmd.html:15 msgid "Enter command:" msgstr "Voer commando in:" #: ../../static/t/aide/display_generic_cmd.html:17 msgid "Command input (if requesting SEND_LISTING transfer mode):" msgstr "Commando invoer (indien aanvraag SEND_LISTING overdrachtsmode):" #: ../../static/t/aide/display_generic_cmd.html:20 #, fuzzy msgid "Detected host header is " msgstr "Gevonden host header is %s://%s" #: ../../static/t/aide/display_ignetconf.html:4 msgid "Network configuration" msgstr "Netwerk instellingen" #: ../../static/t/aide/display_ignetconf.html:10 #: ../../static/t/aide/ignetconf/edit_node.html:5 #: ../../static/t/aide/ignetconf/add.html:5 msgid "Add a new node" msgstr "Een nieuw knooppunt toevoegen" #: ../../static/t/aide/display_ignetconf.html:14 msgid "Currently configured nodes" msgstr "Nu ingestelde knooppunten" #: ../../static/t/aide/display_serverrestart.html:26 #, fuzzy msgid "Restart Citadel" msgstr "Maak hiervan mijn startpagina" #: ../../static/t/aide/floorconfig.html:2 msgid "Add, change, or delete floors" msgstr "Verdiepingen toevoegen, wijzigen of verwijderen" #: ../../static/t/aide/serverrestart/box.html:3 msgid "Please wait while the Citadel server is restarted... " msgstr "Even geduld a.u.b. tot Citadel server is opgestart... " #: ../../static/t/aide/serverrestart/box_page_do.html:3 msgid "" "Please wait while your users are being paged, the citadel server will be " "restarted after that... " msgstr "" "Even geduld terwijl gebruikers een berichtje hebben, de citadel server zal " "daarna opstarten... " #: ../../static/t/aide/inet/masqdomains.html:2 msgid "(Domains as which users are allowed to masquerade)" msgstr "(Domeinen die gebruikers mogen gebruiken als 'masquerade')" #: ../../static/t/aide/inet/rbldns.html:2 msgid "(hosts running a Realtime Blackhole List)" msgstr "(hosts met de Realtime Blackhole Lijst)" #: ../../static/t/aide/inet/dirnames.html:2 msgid "(domains mapped with the Global Address Book)" msgstr "(domeinen in het Algemene adresboek)" #: ../../static/t/aide/inet/notify.html:2 msgid "(URLS for notifications when users receive new mails; )" msgstr "" #: ../../static/t/aide/inet/notify.html:2 msgid "Syntax: Notificationtemplatename:http[s]://user:password@hostname/path" msgstr "" #: ../../static/t/aide/inet/smarthosts.html:2 msgid "(if present, forward all outbound mail to one of these hosts)" msgstr "(indien aanwezig, stuur alle mail naar buiten naar een van deze hosts)" #: ../../static/t/aide/inet/aliases.html:2 msgid "(domains for which this host receives mail)" msgstr "(domeinen waarvoor deze host mail ontvangt)" #: ../../static/t/aide/inet/clamav.html:2 msgid "(hosts running the ClamAV clamd service)" msgstr "(hosts waarop de ClamAV clamd service draait)" #: ../../static/t/aide/inet/spamass.html:2 msgid "(hosts running the SpamAssassin service)" msgstr "(hosts waarop SpamAssassin draait)" #: ../../static/t/aide/inet/fallbackhosts.html:2 msgid "(send outbound mail to these hosts only when direct delivery fails)" msgstr "" #: ../../static/t/aide/ignetconf/display_confirm_delete.html:5 msgid "Confirm delete" msgstr "Verwijdering bevestigen" #: ../../static/t/aide/ignetconf/display_confirm_delete.html:11 msgid "Are you sure you want to delete " msgstr "Weet u zeker dat u wilt verwijderen " #: ../../static/t/aide/ignetconf/display_confirm_delete.html:14 #: ../../static/t/prefs/box.html:198 ../../static/t/iconbar/edit.html:19 #: ../../static/t/iconbar/edit.html:26 ../../static/t/iconbar/edit.html:32 #: ../../static/t/iconbar/edit.html:39 ../../static/t/iconbar/edit.html:45 #: ../../static/t/iconbar/edit.html:52 ../../static/t/iconbar/edit.html:58 #: ../../static/t/iconbar/edit.html:64 ../../static/t/iconbar/edit.html:70 #: ../../static/t/iconbar/edit.html:76 ../../static/t/iconbar/edit.html:82 #: ../../static/t/iconbar/edit.html:88 msgid "Yes" msgstr "Ja" #: ../../static/t/aide/ignetconf/display_confirm_delete.html:16 #: ../../static/t/prefs/box.html:200 ../../static/t/iconbar/edit.html:20 #: ../../static/t/iconbar/edit.html:27 ../../static/t/iconbar/edit.html:33 #: ../../static/t/iconbar/edit.html:40 ../../static/t/iconbar/edit.html:46 #: ../../static/t/iconbar/edit.html:53 ../../static/t/iconbar/edit.html:59 #: ../../static/t/iconbar/edit.html:65 ../../static/t/iconbar/edit.html:71 #: ../../static/t/iconbar/edit.html:77 ../../static/t/iconbar/edit.html:83 #: ../../static/t/iconbar/edit.html:89 msgid "No" msgstr "Nee" #: ../../static/t/aide/ignetconf/edit_node.html:15 #: ../../static/t/aide/ignetconf/add.html:15 #: ../../static/t/aide/siteconfig/tab_general.html:8 msgid "Node name" msgstr "Naam knooppunt" #: ../../static/t/aide/ignetconf/edit_node.html:17 #: ../../static/t/aide/ignetconf/add.html:17 msgid "Shared secret" msgstr "Gedeeld geheim" #: ../../static/t/aide/ignetconf/edit_node.html:19 #: ../../static/t/aide/ignetconf/add.html:19 msgid "Host or IP address" msgstr "Host of IP adres" #: ../../static/t/aide/ignetconf/edit_node.html:21 #: ../../static/t/aide/ignetconf/add.html:21 msgid "Port number" msgstr "Poortnummer" #: ../../static/t/aide/ignetconf/section.html:4 #, fuzzy msgid "(Edit)" msgstr "(bewerk)" #: ../../static/t/aide/display_menu.html:12 msgid "Global Configuration" msgstr "Instellingen Totaal" #: ../../static/t/aide/display_menu.html:14 msgid "User account management" msgstr "Beheer gebruikeraccounts" #: ../../static/t/aide/display_menu.html:16 msgid "Shutdown Citadel" msgstr "Citadel afsluiten" #: ../../static/t/aide/display_menu.html:18 msgid "Rooms and Floors" msgstr "Ruimtes en Verdiepingen" #: ../../static/t/aide/global_config.html:2 msgid "Edit site-wide configuration" msgstr "Bewerk 'site-brede' instellingen" #: ../../static/t/aide/global_config.html:3 msgid "Domain names and Internet mail configuration" msgstr "Domeinnamen en Internet mail instellingen" #: ../../static/t/aide/global_config.html:4 msgid "Configure replication with other Citadel servers" msgstr "Stel replicatie met andere Citadel servers in" #: ../../static/t/aide/global_config.html:5 #: ../../static/t/view_mailq/header.html:3 msgid "View the outbound SMTP queue" msgstr "Toon de SMTP-wachtrij naar buiten" #: ../../static/t/aide/restart.html:2 msgid "Restart Now" msgstr "Nu opnieuw opstarten" #: ../../static/t/aide/restart.html:3 msgid "Restart after paging users" msgstr "Herstarten na bericht aan gebruikers." #: ../../static/t/aide/restart.html:4 msgid "Restart when all users are idle" msgstr "Herstarten als geen gebruikers actief" #: ../../static/t/aide/siteconfig/tab_general.html:1 msgid "General site configuration items" msgstr "Algemene items site instellingen" #: ../../static/t/aide/siteconfig/tab_general.html:5 msgid "Change Login Logo" msgstr "Wijzig logo Inloggen" #: ../../static/t/aide/siteconfig/tab_general.html:6 msgid "Change Logout Logo" msgstr "Wijzig logo Uitloggen" #: ../../static/t/aide/siteconfig/tab_general.html:11 msgid "Fully qualified domain name" msgstr "Fully qualified domain name" #: ../../static/t/aide/siteconfig/tab_general.html:14 msgid "Human-readable node name" msgstr "Leesbare knooppuntnaam" #: ../../static/t/aide/siteconfig/tab_general.html:17 msgid "Telephone number" msgstr "Telefoonnummer" #: ../../static/t/aide/siteconfig/tab_general.html:20 msgid "Paginator prompt (for text mode clients)" msgstr "Prompt volgende pagina (voor textmode clients)" #: ../../static/t/aide/siteconfig/tab_general.html:23 msgid "Geographic location of this system" msgstr "Geografische locatie van dit systeem" #: ../../static/t/aide/siteconfig/tab_general.html:26 msgid "Name of system administrator" msgstr "Naam van de systeembeheerder" #: ../../static/t/aide/siteconfig/tab_general.html:29 msgid "Default timezone for unzoned calendar items" msgstr "Standaard tijdzone voor agenda-items zonder zone" #: ../../static/t/aide/siteconfig/tab_autopurger.html:1 msgid "Configure automatic expiry of old messages" msgstr "Stel het automatisch verlopen van oude berichten in." #: ../../static/t/aide/siteconfig/tab_autopurger.html:2 msgid "These settings may be overridden on a per-floor or per-room basis." msgstr "" "Deze instellingen kunnen worden overschreven op verdieping- of ruimteniveau." #: ../../static/t/aide/siteconfig/tab_autopurger.html:6 msgid "Hour to run database auto-purge" msgstr "Tijd waarop database opgeruimd wordt" #: ../../static/t/aide/siteconfig/tab_autopurger.html:66 msgid "Default message expire policy for public rooms" msgstr "Standaardinstelling voor het laten verlopen van openbare ruimtes" #: ../../static/t/aide/siteconfig/tab_autopurger.html:68 #: ../../static/t/aide/siteconfig/tab_autopurger.html:86 #: ../../static/t/room/edit/tab_expire.html:17 #: ../../static/t/room/edit/tab_expire.html:45 msgid "Never automatically expire messages" msgstr "Nooit berichten automatisch laten verlopen" #: ../../static/t/aide/siteconfig/tab_autopurger.html:71 #: ../../static/t/aide/siteconfig/tab_autopurger.html:89 #: ../../static/t/room/edit/tab_expire.html:20 #: ../../static/t/room/edit/tab_expire.html:48 msgid "Expire by message count" msgstr "Verlopen door aantal berichten" #: ../../static/t/aide/siteconfig/tab_autopurger.html:73 #: ../../static/t/aide/siteconfig/tab_autopurger.html:92 #: ../../static/t/room/edit/tab_expire.html:23 #: ../../static/t/room/edit/tab_expire.html:51 msgid "Expire by message age" msgstr "Verlopen door ouderdom bericht" #: ../../static/t/aide/siteconfig/tab_autopurger.html:75 #: ../../static/t/aide/siteconfig/tab_autopurger.html:94 #: ../../static/t/room/edit/tab_expire.html:25 #: ../../static/t/room/edit/tab_expire.html:53 msgid "Number of messages or days: " msgstr "Aantal berichten of dagen: " #: ../../static/t/aide/siteconfig/tab_autopurger.html:81 msgid "Default message expire policy for private mailboxes" msgstr "Standaardinstelling voor het laten verlopen van privé mailboxen" #: ../../static/t/aide/siteconfig/tab_autopurger.html:83 msgid "Same policy as public rooms" msgstr "Zelfde instelling als openbare ruimtes" #: ../../static/t/aide/siteconfig/tab_network.html:1 msgid "Network services" msgstr "Netwerk services" #: ../../static/t/aide/siteconfig/tab_network.html:2 #: ../../static/t/aide/siteconfig/tab_directory.html:3 msgid "" "Changes made on this screen will not take effect until you restart the " "Citadel server." msgstr "" "Wijzigingen gemaakt in dit scherm zullen pas actief worden nadat u de " "Citadel server opnieuw heeft gestart." #: ../../static/t/aide/siteconfig/tab_network.html:6 msgid "SMTP MTA port (-1 to disable)" msgstr "SMTP MTA port (-1 to disable)" #: ../../static/t/aide/siteconfig/tab_network.html:9 msgid "Correct forged From: lines during authenticated SMTP" msgstr "Corrigeer gedwongen Van: regels tijdens authenticated SMTP" #: ../../static/t/aide/siteconfig/tab_network.html:12 msgid "Flag message as spam, instead of rejecting it" msgstr "Markeer bericht als spam i.p.v. het af te wijzen" #: ../../static/t/aide/siteconfig/tab_network.html:15 msgid "IMAP listener port (-1 to disable)" msgstr "IMAP listener port (-1 to disable)" #: ../../static/t/aide/siteconfig/tab_network.html:19 msgid "Network run frequency (in seconds)" msgstr "Network run frequency (in seconden)" #: ../../static/t/aide/siteconfig/tab_network.html:22 msgid "Server IP address (0.0.0.0 for 'any')" msgstr "Server IP adres (0.0.0.0 voor 'elk')" #: ../../static/t/aide/siteconfig/tab_network.html:25 msgid "SMTP MSA port (-1 to disable)" msgstr "SMTP MSA port (-1 to disable)" #: ../../static/t/aide/siteconfig/tab_network.html:28 msgid "IMAP over SSL port (-1 to disable)" msgstr "IMAP over SSL port (-1 to disable)" #: ../../static/t/aide/siteconfig/tab_network.html:31 msgid "SMTP over SSL port (-1 to disable)" msgstr "SMTP over SSL port (-1 to disable)" #: ../../static/t/aide/siteconfig/tab_network.html:34 msgid "Instantly expunge deleted messages in IMAP" msgstr "Verwijder direct gewiste berichten in IMAP" #: ../../static/t/aide/siteconfig/tab_network.html:38 msgid "Allow unauthenticated SMTP clients to spoof this sites domains" msgstr "" "Sta unauthenticated SMTP clients toe het domein van deze site te spoofen" #: ../../static/t/aide/siteconfig/tab_network.html:41 msgid "Postfix TCP Dictionary Port" msgstr "Postfix TCP Dictionary Port" #: ../../static/t/aide/siteconfig/tab_network.html:41 msgid "-1 to disable" msgstr "-1 voor uitschakelen" #: ../../static/t/aide/siteconfig/tab_network.html:44 msgid "ManageSieve Port (-1 to disable)" msgstr "ManageSieve Port (-1 to disable)" #: ../../static/t/aide/siteconfig/tab_network.html:47 msgid "Perform RBL checks upon connect instead of after RCPT" msgstr "Voer RBL controles uit bij verbinding i.p.v. na RCPT" #: ../../static/t/aide/siteconfig/tab_network.html:50 msgid "Keep original from headers in IMAP" msgstr "Bewaar origineel van headers in IMAP" #: ../../static/t/aide/siteconfig/tab_network.html:53 msgid "XMPP (Jabber) client to server port (-1 to disable)" msgstr "XMPP (Jabber) client to server port (-1 voor uitschakelen)" #: ../../static/t/aide/siteconfig/tab_network.html:56 msgid "XMPP (Jabber) server to server port (-1 to disable)" msgstr "POP3 listener port (-1 voor uitschakelen)" #: ../../static/t/aide/siteconfig/tab_pop3.html:1 msgid "POP3" msgstr "POP3" #: ../../static/t/aide/siteconfig/tab_pop3.html:6 msgid "POP3 listener port (-1 to disable)" msgstr "POP3 listener port (-1 to disable)" #: ../../static/t/aide/siteconfig/tab_pop3.html:9 msgid "POP3 over SSL port (-1 to disable)" msgstr "POP3 over SSL port (-1 to disable)" #: ../../static/t/aide/siteconfig/tab_pop3.html:12 msgid "POP3 fetch frequency in seconds" msgstr "POP3 ophaalfrequentie in seconden" #: ../../static/t/aide/siteconfig/tab_pop3.html:15 msgid "POP3 fastest fetch frequency in seconds" msgstr "POP3 snelste ophaalfrequentie in seconden" #: ../../static/t/aide/siteconfig/tab_tuning.html:1 msgid "Advanced server fine-tuning controls" msgstr "Uitgebreide server fine-tuning" #: ../../static/t/aide/siteconfig/tab_tuning.html:5 msgid "Server connection idle timeout (in seconds)" msgstr "Serververbinding timeout (in seconden)" #: ../../static/t/aide/siteconfig/tab_tuning.html:8 msgid "Maximum concurrent sessions (0 = no limit)" msgstr "Maximale gelijktijdige sessies (0 = geen limiet)" #: ../../static/t/aide/siteconfig/tab_tuning.html:11 msgid "Default user purge time (days)" msgstr "Standaard opruimen gebruiker (dagen)" #: ../../static/t/aide/siteconfig/tab_tuning.html:14 msgid "Default room purge time (days)" msgstr "Standaard opruimen ruimte (dagen)" #: ../../static/t/aide/siteconfig/tab_tuning.html:17 msgid "Maximum message length" msgstr "Maximale lengte bericht" #: ../../static/t/aide/siteconfig/tab_tuning.html:20 msgid "Minimum number of worker threads" msgstr "Minimum aantal worker threads" #: ../../static/t/aide/siteconfig/tab_tuning.html:23 msgid "Maximum number of worker threads" msgstr "Maximum aantal worker threads" #: ../../static/t/aide/siteconfig/tab_tuning.html:26 msgid "Automatically delete committed database logs" msgstr "Wis automatisch bewaarde database logs" #: ../../static/t/aide/siteconfig/tab_pushmail.html:5 msgid "Funambol server host (blank to disable)" msgstr "Funambol server (blanco is uit)" #: ../../static/t/aide/siteconfig/tab_pushmail.html:8 msgid "Funambol server port " msgstr "Funambol serverpoort " #: ../../static/t/aide/siteconfig/tab_pushmail.html:11 msgid "Funambol sync source" msgstr "Funambol sync bron" #: ../../static/t/aide/siteconfig/tab_pushmail.html:14 msgid "Funambol auth details (user:pass)" msgstr "Funambol auth details (user:pass)" #: ../../static/t/aide/siteconfig/tab_pushmail.html:17 msgid "External pager tool (blank to disable)" msgstr "Externe pager tool (blanco is uit)" #: ../../static/t/aide/siteconfig/tab_access.html:1 msgid "Access controls and site policy settings" msgstr "Toegangscontrole en instellingen site policy" #: ../../static/t/aide/siteconfig/tab_access.html:5 msgid "Allow aides to zap (forget) rooms" msgstr "Sta beheerders toe ruimtes te zappen (vergeten)" #: ../../static/t/aide/siteconfig/tab_access.html:9 msgid "Quarantine messages from problem users" msgstr "Quarantaine berichten van probleemgebruikers" #: ../../static/t/aide/siteconfig/tab_access.html:12 msgid "Name of quarantine room" msgstr "Naam van de quarantaineruimte" #: ../../static/t/aide/siteconfig/tab_access.html:17 msgid "Name of room to log pages" msgstr "Naam van de ruimte voor log pagina's" #: ../../static/t/aide/siteconfig/tab_access.html:22 #, fuzzy msgid "Authentication mode" msgstr "Authenticatie toe" #: ../../static/t/aide/siteconfig/tab_access.html:24 #, fuzzy msgid "Self contained" msgstr "bevat" #: ../../static/t/aide/siteconfig/tab_access.html:25 #, fuzzy msgid "Host based" msgstr "Hostnaam:" #: ../../static/t/aide/siteconfig/tab_access.html:26 msgid "LDAP (RFC2307)" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:27 msgid "LDAP (Active Directory)" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:30 msgid "Master user name (blank to disable)" msgstr "Gebruikersnaam beheerder (blanco is uit)" #: ../../static/t/aide/siteconfig/tab_access.html:33 msgid "Master user password" msgstr "Wachtwoord beheerder:" #: ../../static/t/aide/siteconfig/tab_access.html:38 msgid "Initial access level for new users" msgstr "Begin toegangsniveau voor nieuwe gebruikers" #: ../../static/t/aide/siteconfig/tab_access.html:49 msgid "Access level required to create rooms" msgstr "Benodigd toegangsniveau om ruimte aan te maken" #: ../../static/t/aide/siteconfig/tab_access.html:60 msgid "Automatically grant room-aide status to users who create private rooms" msgstr "" "Sta automatisch beheerdersstatus in voor gebruikers die privé ruimtes " "aanmaken" #: ../../static/t/aide/siteconfig/tab_access.html:63 #, fuzzy msgid "Automatically grant room-aide status to users who create BLOG rooms" msgstr "" "Sta automatisch beheerdersstatus in voor gebruikers die BLOG ruimtes aanmaken" #: ../../static/t/aide/siteconfig/tab_access.html:66 msgid "Restrict access to Internet mail" msgstr "Toegang tot Internetmail beperken" #: ../../static/t/aide/siteconfig/tab_access.html:71 msgid "Disable self-service user account creation" msgstr "Schakel de self-service uit bij het aanmaken van een account" #: ../../static/t/aide/siteconfig/tab_access.html:71 msgid "Hint: do not select both!" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:74 msgid "Require registration for new users" msgstr "Registratie nodig voor nieuwe gebruikers" #: ../../static/t/aide/siteconfig/tab_access.html:77 #, fuzzy msgid "Allow anonymous guest access" msgstr "Geen anonieme berichten" #: ../../static/t/aide/siteconfig/tab_indexing.html:1 msgid "Indexing and Journaling" msgstr "Indexering en Journaling" #: ../../static/t/aide/siteconfig/tab_indexing.html:2 msgid "Warning: these facilities are resource intensive." msgstr "Waarschuwing: dit vraagt veel van het systeem." #: ../../static/t/aide/siteconfig/tab_indexing.html:6 msgid "Enable full text index" msgstr "Geef full-text index vrij" #: ../../static/t/aide/siteconfig/tab_indexing.html:9 msgid "Perform journaling of email messages" msgstr "Voer journaliseren van emailberichten uit" #: ../../static/t/aide/siteconfig/tab_indexing.html:13 msgid "Perform journaling of non-email messages" msgstr "Voer journaliseren van niet-emailberichten uit" #: ../../static/t/aide/siteconfig/tab_indexing.html:16 msgid "Email destination of journalized messages" msgstr "Bestemming voor gejournaliseerde berichten" #: ../../static/t/aide/siteconfig/tab_directory.html:1 msgid "Configure the LDAP connector for Citadel" msgstr "Stel de LDAP connector voor Citadel in." #: ../../static/t/aide/siteconfig/tab_directory.html:4 msgid "" "NOTE: This Citadel server has been built without LDAP support. These " "options will have no effect." msgstr "" "LET OP: Deze Citadel server is gebouwd zonder LDAP ondersteuning. Deze " "opties zullen geen effect hebben." #: ../../static/t/aide/siteconfig/tab_directory.html:9 msgid "Host name of LDAP server (blank to disable)" msgstr "Hostnaam van de LDAP server (blanco is uit)" #: ../../static/t/aide/siteconfig/tab_directory.html:13 msgid "Port number of LDAP server (blank to disable)" msgstr "Poortnummer van de LDAP server (blanco is uit)" #: ../../static/t/aide/siteconfig/tab_directory.html:16 msgid "Base DN" msgstr "Base DN" #: ../../static/t/aide/siteconfig/tab_directory.html:19 msgid "Bind DN" msgstr "Bind DN" #: ../../static/t/aide/siteconfig/tab_directory.html:22 msgid "Password for bind DN" msgstr "Wachtwoord voor bind DN" #: ../../static/t/iconbar.html:7 msgid "Language:" msgstr "Taal:" #: ../../static/t/iconbar.html:19 msgid "Mail" msgstr "Mail" #: ../../static/t/iconbar.html:39 ../../static/t/iconbar/edit.html:61 #: ../../static/t/summary/page.html:30 msgid "Tasks" msgstr "Taken" #: ../../static/t/iconbar.html:48 ../../static/t/iconbar/edit.html:67 msgid "Rooms" msgstr "Ruimtes" #: ../../static/t/iconbar.html:57 msgid "Online users" msgstr "Online gebruikers" #: ../../static/t/iconbar.html:62 ../../static/t/iconbar/edit.html:79 msgid "Chat" msgstr "Chat" #: ../../static/t/iconbar.html:65 msgid "Advanced" msgstr "Uitgebreid" #: ../../static/t/iconbar.html:72 ../../static/t/room/edit/editroom.html:4 #: ../../static/t/room/edit.html:5 msgid "Administration" msgstr "Beheer" #: ../../static/t/iconbar.html:83 msgid "customize this menu" msgstr "Dit menu aanpassen" #: ../../static/t/iconbar.html:92 msgid "switch to room list" msgstr "Switch naar lijst ruimtes" #: ../../static/t/iconbar.html:93 msgid "switch to menu" msgstr "Switch naar menu" #: ../../static/t/iconbar.html:94 msgid "My folders" msgstr "Mijn mappen" #: ../../static/t/view_message/list_attach.html:3 #: ../../static/t/view_message/inline_attach.html:4 msgid "View" msgstr "View" #: ../../static/t/view_message/list_attach.html:4 #: ../../static/t/view_message/inline_attach.html:5 msgid "Download" msgstr "Download" #: ../../static/t/view_message/print.html:14 #: ../../static/t/view_message.html:14 msgid "to" msgstr "aan" #: ../../static/t/openid_manual_create.html:2 msgid "Your OpenID" msgstr "Uw OpenID" #: ../../static/t/openid_manual_create.html:2 msgid "was successfully verified." msgstr "is goedgekeurd." #: ../../static/t/openid_manual_create.html:3 msgid "However, the user name" msgstr "Echter, de gebruikersnaam" #: ../../static/t/openid_manual_create.html:3 msgid "conflicts with an existing user." msgstr "botst met een bestaande gebruiker." #: ../../static/t/openid_manual_create.html:5 msgid "Please specify the user name you would like to use." msgstr "Geef alstublieft de gebruikersnaam die u wilt gebruiken." #: ../../static/t/files/graphicsupload.html:2 msgid "Image upload" msgstr "Afbeelding uploaden" #: ../../static/t/files/graphicsupload.html:6 msgid "You can upload an image directly from your computer" msgstr "U kunt direct vanaf uw computer een plaatje uploaden." #: ../../static/t/files/graphicsupload.html:8 msgid "Please select a file to upload:" msgstr "Selecteer een bestand om te uploaden:" #: ../../static/t/files/section_onefile.html:20 msgid "Slideshow" msgstr "Diashow" #: ../../static/t/roombanner.html:10 ../../static/t/roombanner.html:11 msgid "new of" msgstr "nieuw van" #: ../../static/t/roombanner.html:10 ../../static/t/roombanner.html:11 #: ../../static/t/msg_listselector_bottom.html:7 #: ../../static/t/msg_listselector_top.html:7 msgid "messages" msgstr "berichten" #: ../../static/t/roombanner.html:28 msgid "Select page: " msgstr "Kies pagina: " #: ../../static/t/who.html:13 msgid "Users currently on " msgstr "Gebruikers op dit moment op " #: ../../static/t/who.html:22 msgid "Click on a name to read user info. Click on" msgstr "Klik op een naam om de gebruikersinfo te lezen. Klik op" #: ../../static/t/who.html:24 msgid "to send an instant message to that user." msgstr "Stuur een direct bericht naar die gebruiker." #: ../../static/t/msg_listselector_bottom.html:2 #: ../../static/t/msg_listselector_top.html:2 msgid "Reading #" msgstr "Lezen #" #: ../../static/t/msg_listselector_bottom.html:12 #: ../../static/t/msg_listselector_top.html:12 msgid "oldest to newest" msgstr "oudste naar nieuwste" #: ../../static/t/msg_listselector_bottom.html:20 #: ../../static/t/msg_listselector_top.html:20 msgid "newest to oldest" msgstr "nieuwste naar oudste" #: ../../static/t/newstartpage.html:4 msgid "New start page" msgstr "Nieuwe startpagina" #: ../../static/t/newstartpage.html:9 msgid "Your start page has been changed." msgstr "De startpagina is gewijzigd" #: ../../static/t/newstartpage.html:12 msgid "" "(Note: this does not change your browser's home page. It changes the page " "you begin on when you log on to" msgstr "" "(Opmerking: dit verandert niet de startpagina van de browser. Het verandert " "de pagina waarop u begint na het inloggen" #: ../../static/t/no_new_msgs.html:3 msgid "No new messages." msgstr "Geen nieuwe berichten." #: ../../static/t/view_blog/comment_box.html:8 msgid "Post a comment" msgstr "Schrijf een reactie" #: ../../static/t/prefs/pushemail.html:2 #, fuzzy msgid "Configure Push Email" msgstr "Push Email" #: ../../static/t/prefs/pushemail.html:9 msgid "Push email and SMS settings" msgstr "Push email en SMS instellingen" #: ../../static/t/prefs/pushemail.html:17 msgid "" "If your administrator has enabled the functionality, Citadel can notify a " "Funambol server that you haved recieved new email and automatically " "syncronize any devices you have with the Funambol client installed." msgstr "" #: ../../static/t/prefs/pushemail.html:20 msgid "" "Alternatively, if the administrator has configured it, Citadel can send a " "text message to you when new mail arrives." msgstr "" #: ../../static/t/prefs/pushemail.html:26 #, fuzzy msgid "Notify Funambol server" msgstr "Funambol serverpoort " #: ../../static/t/prefs/pushemail.html:31 #, fuzzy msgid "Send a text message to..." msgstr "Stuur direct bericht naar: " #: ../../static/t/prefs/pushemail.html:33 msgid "" "(Use international format, without any leading zeros, spaces or hypens, like " "+61415011501)" msgstr "" #: ../../static/t/prefs/pushemail.html:38 msgid "Use custom notification scheme configured by your Admin" msgstr "" #: ../../static/t/prefs/pushemail.html:43 msgid "Don‘t send any notifications" msgstr "" #: ../../static/t/prefs/box.html:9 msgid "Tree (folders) view" msgstr "Bekijk als boomstructuur (mappen)" #: ../../static/t/prefs/box.html:11 msgid "Table (rooms) view" msgstr "Tabel (ruimte) instelling" #: ../../static/t/prefs/box.html:20 msgid "12 hour (am/pm)" msgstr "12 uurs (vm/nm)" #: ../../static/t/prefs/box.html:25 msgid "24 hour" msgstr "24 uur" #: ../../static/t/prefs/box.html:152 msgid "Sunday" msgstr "Zondag" #: ../../static/t/prefs/box.html:153 msgid "Monday" msgstr "Maandag" #: ../../static/t/prefs/box.html:174 msgid "No signature" msgstr "Geen ondertekening" #: ../../static/t/prefs/box.html:238 msgid "Full-functionality" msgstr "Volledig functioneel" #: ../../static/t/prefs/box.html:241 msgid "Safe mode" msgstr "Veilige modus" #: ../../static/t/prefs/box.html:242 msgid "" "Safe mode is less intensive on your web browser, but not as fully featured." msgstr "" #: ../../static/t/wiki/pagelist.html:1 msgid "List of Wiki pages" msgstr "" #: ../../static/t/wiki/history.html:1 msgid "History of edits for this page" msgstr "" #: ../../static/t/who/list_static_header.html:1 msgid "Users currently on" msgstr "Gebruikers op dit moment op" #: ../../static/t/who/section.html:4 msgid "(kill)" msgstr "(beëindig)" #: ../../static/t/who/bio.html:4 ../../static/t/user/show.html:4 msgid "User profile" msgstr "Gebruikersprofiel" #: ../../static/t/who/summary.html:5 ../../static/t/who/box_list_static.html:6 #: ../../static/t/room/edit/tab_feed.html:13 msgid "User name" msgstr "Gebruikersnaam" #: ../../static/t/who/summary.html:6 ../../static/t/who/box_list_static.html:7 msgid "Room" msgstr "Ruimte" #: ../../static/t/who/box_list_static.html:8 msgid "From host" msgstr "Van host" #: ../../static/t/view_message.html:19 msgid "Edit" msgstr "Bewerk" #: ../../static/t/view_message.html:22 ../../static/t/view_message.html:26 msgid "Reply" msgstr "Antwoord" #: ../../static/t/view_message.html:23 msgid "ReplyQuoted" msgstr "AntwoordQuoted" #: ../../static/t/view_message.html:27 msgid "ReplyAll" msgstr "AntwoordAllen" #: ../../static/t/view_message.html:28 msgid "Forward" msgstr "Doorsturen" #: ../../static/t/view_message.html:31 ../../static/t/msg_listview.html:25 msgid "Move" msgstr "Verplaatsen" #: ../../static/t/view_message.html:34 msgid "Headers" msgstr "Headers" #: ../../static/t/view_message.html:35 ../../static/t/msg_listview.html:28 msgid "Print" msgstr "Print" #: ../../static/t/preferences.html:4 ../../static/t/preferences.html:7 msgid "Preferences and settings" msgstr "Voorkeuren en instellingen" #: ../../static/t/user/list.html:3 #, fuzzy msgid "User list for " msgstr "Gebruikerslijst voor %s" #: ../../static/t/user/list.html:9 msgid "User Name" msgstr "Gebruikersnaam" #: ../../static/t/user/list.html:10 msgid "Number" msgstr "Nummer" #: ../../static/t/user/list.html:11 msgid "Access Level" msgstr "Toegangsniveau" #: ../../static/t/user/list.html:12 msgid "Last Login" msgstr "Laatste login" #: ../../static/t/user/list.html:13 msgid "Total Logins" msgstr "Totaal aantal logins" #: ../../static/t/user/list.html:14 msgid "Total Posts" msgstr "Totaal aantal berichten" #: ../../static/t/user/show.html:9 #, fuzzy msgid "Click here to send an instant message to" msgstr "Klik hier om direct een bericht te sturen naar %s" #: ../../static/t/start_of_new_msgs.html:4 msgid "Old messages" msgstr "Oude berichten" #: ../../static/t/start_of_new_msgs.html:8 msgid "New messages" msgstr "Nieuwe berichten" #: ../../static/t/display_main_menu.html:7 msgid "Basic commands" msgstr "Basiscommando's" #: ../../static/t/display_main_menu.html:10 msgid "Your info" msgstr "Uw informatie" #: ../../static/t/display_main_menu.html:12 msgid "Advanced room commands" msgstr "Uitgebreide opdrachten ruimtes" #: ../../static/t/iconbar/save.html:4 ../../static/t/iconbar/edit.html:4 msgid "Customize the icon bar" msgstr "Lijst menuitems aanpassen." #: ../../static/t/iconbar/save.html:11 #, fuzzy msgid "" "Your icon bar has been updated. Please select any of its choices to continue." msgstr "" "Uw menubalk is bijgewerkt. U kunt nu hieruit een keuze om verder te gaan." #: ../../static/t/iconbar/save.html:11 msgid "" "You may need to force refresh (SHIFT-F5)> in order for changes to take effect" msgstr "" #: ../../static/t/iconbar/edit.html:11 msgid "Display icons as:" msgstr "Laat menuitems zien als:" #: ../../static/t/iconbar/edit.html:12 msgid "pictures and text" msgstr "plaatjes en tekst" #: ../../static/t/iconbar/edit.html:13 msgid "pictures only" msgstr "alleen plaatjes" #: ../../static/t/iconbar/edit.html:14 msgid "text only" msgstr "alleen tekst" #: ../../static/t/iconbar/edit.html:16 msgid "" "Select the icons you would like to see displayed in the 'icon bar' menu on " "the left side of the screen." msgstr "" "Selecteer de menuitems die u graag weergegeven wilt zien in menubalk aan de " "linkerzijde van het scherm" #: ../../static/t/iconbar/edit.html:23 msgid "Site logo" msgstr "Logo van de site" #: ../../static/t/iconbar/edit.html:23 msgid "An icon describing this site" msgstr "Logo van het bedrijf of de instelling" #: ../../static/t/iconbar/edit.html:29 msgid "Your summary page" msgstr "Uw samenvattingspagina" #: ../../static/t/iconbar/edit.html:36 msgid "Mail (inbox)" msgstr "Mail (inbox)" #: ../../static/t/iconbar/edit.html:36 msgid "A shortcut to your email Inbox" msgstr "Een snelkoppeling naar uw email Inbox" #: ../../static/t/iconbar/edit.html:42 msgid "Your personal address book" msgstr "Uw persoonlijk adresboek" #: ../../static/t/iconbar/edit.html:49 msgid "Your personal notes" msgstr "Uw persoonlijke notities" #: ../../static/t/iconbar/edit.html:55 msgid "A shortcut to your personal calendar" msgstr "Uw persoonlijke agenda" #: ../../static/t/iconbar/edit.html:61 msgid "A shortcut to your personal task list" msgstr "Uw persoonlijke takenlijst" #: ../../static/t/iconbar/edit.html:67 msgid "" "Clicking this icon displays a list of all accessible rooms (or folders) " "available." msgstr "" "Hiermee wordt u een lijst van alle toegankelijke ruimtes (of mappen) getoond" #: ../../static/t/iconbar/edit.html:73 msgid "Who is online?" msgstr "Wie is online?" #: ../../static/t/iconbar/edit.html:73 msgid "Clicking this icon displays a list of all users currently logged in." msgstr "" "Hiermee wordt een lijst getoond van alle gebruikers die op dat moment zijn " "ingelogd." #: ../../static/t/iconbar/edit.html:79 msgid "" "Clicking this icon enters real-time chat mode with other users in the same " "room." msgstr "" "Hiermee kunt u in 'real-time' chatten met andere gebruikers in dezelfde " "ruimte." #: ../../static/t/iconbar/edit.html:85 msgid "Advanced options" msgstr "Uitgebreide opties" #: ../../static/t/iconbar/edit.html:85 msgid "Access to the complete menu of Citadel functions." msgstr "Toegang tot het complete menu van Citadelfuncties." #: ../../static/t/iconbar/edit.html:91 msgid "Citadel logo" msgstr "Citadel logo" #: ../../static/t/iconbar/edit.html:91 msgid "Displays the 'Powered by Citadel' icon" msgstr "Toont het 'Powered by Citadel' icoontje." #: ../../static/t/room/edit/tab_expire.html:8 msgid "Message expire policy for this room" msgstr "Instelling voor verlopen berichten in deze ruimte" #: ../../static/t/room/edit/tab_expire.html:14 msgid "Use the default policy for this floor" msgstr "Gebruik de standaardinstelling voor deze ruimte" #: ../../static/t/room/edit/tab_expire.html:36 msgid "Message expire policy for this floor" msgstr "Instelling voor het verlopen van berichten op deze verdieping" #: ../../static/t/room/edit/tab_expire.html:42 msgid "Use the system default" msgstr "Gebruik systeemstandaard" #: ../../static/t/room/edit/editroom.html:5 ../../static/t/room/edit.html:6 msgid "Configuration" msgstr "Instellingen" #: ../../static/t/room/edit/editroom.html:6 ../../static/t/room/edit.html:7 msgid "Message expire policy" msgstr "Instelling bericht verlopen" #: ../../static/t/room/edit/editroom.html:7 ../../static/t/room/edit.html:8 msgid "Access controls" msgstr "Toegangscontrole" #: ../../static/t/room/edit/editroom.html:8 ../../static/t/room/edit.html:9 msgid "Sharing" msgstr "Delen" #: ../../static/t/room/edit/editroom.html:9 ../../static/t/room/edit.html:10 msgid "Mailing list service" msgstr "Mailinglist service" #: ../../static/t/room/edit/editroom.html:10 ../../static/t/room/edit.html:11 msgid "Remote retrieval" msgstr "Herstel op afstand" #: ../../static/t/room/edit/tab_config.html:6 #, fuzzy msgid "name of room: " msgstr "Naam van de ruimte: " #: ../../static/t/room/edit/tab_config.html:10 #: ../../static/t/room/create.html:20 msgid "Resides on floor: " msgstr "Bevindt zich op verdieping: " #: ../../static/t/room/edit/tab_config.html:16 #: ../../static/t/room/create.html:68 msgid "Type of room:" msgstr "Soort ruimte:" #: ../../static/t/room/edit/tab_config.html:22 #: ../../static/t/room/create.html:73 msgid "Public (automatically appears to everyone)" msgstr "Openbaar (verschijnt automatisch voor iedereen)" #: ../../static/t/room/edit/tab_config.html:28 #: ../../static/t/room/create.html:77 msgid "Private - hidden (accessible to anyone who knows its name)" msgstr "Privé - verborgen (toegankelijk voor iedereen die z'n naam kent)" #: ../../static/t/room/edit/tab_config.html:35 #: ../../static/t/room/create.html:81 msgid "Private - require password: " msgstr "Privé - wachtwoord nodig: " #: ../../static/t/room/edit/tab_config.html:44 #: ../../static/t/room/create.html:86 msgid "Private - invitation only" msgstr "Privé - Alleen op uitnodiging" #: ../../static/t/room/edit/tab_config.html:51 #: ../../static/t/room/create.html:90 msgid "Personal (mailbox for you only)" msgstr "Persoonlijk (mailbox voor u alleen)" #: ../../static/t/room/edit/tab_config.html:55 msgid "If private, cause current users to forget room" msgstr "Als privé, zorg dat huidige gebruikers ruimte vergeten" #: ../../static/t/room/edit/tab_config.html:61 msgid "Preferred users only" msgstr "Alleen beheerders" #: ../../static/t/room/edit/tab_config.html:66 msgid "Read-only room" msgstr "Alleen-lezen ruimte" #: ../../static/t/room/edit/tab_config.html:71 msgid "All users allowed to post may also delete messages" msgstr "Alle gebruikers die berichten mogen plaatsen mogen ook wissen" #: ../../static/t/room/edit/tab_config.html:76 msgid "File directory room" msgstr "Ruimte met Bestandsmappen" #: ../../static/t/room/edit/tab_config.html:80 msgid "Directory name: " msgstr "Naam van map: " #: ../../static/t/room/edit/tab_config.html:86 msgid "Uploading allowed" msgstr "Uploaden toegestaan" #: ../../static/t/room/edit/tab_config.html:91 msgid "Downloading allowed" msgstr "Downloaden toegestaan" #: ../../static/t/room/edit/tab_config.html:96 msgid "Visible directory" msgstr "Zichtbare map" #: ../../static/t/room/edit/tab_config.html:103 msgid "Network shared room" msgstr "Netwerkgedeelde ruimte" #: ../../static/t/room/edit/tab_config.html:108 msgid "Permanent (does not auto-purge)" msgstr "Permanent (wordt niet automatisch opgeruimd)" #: ../../static/t/room/edit/tab_config.html:113 msgid "Subject Required (Force users to specify a message subject)" msgstr "Onderwerp vereist (Dwing gebruikers een onderwerp op te geven)" #: ../../static/t/room/edit/tab_config.html:116 msgid "Anonymous messages" msgstr "Anonieme berichten" #: ../../static/t/room/edit/tab_config.html:122 msgid "No anonymous messages" msgstr "Geen anonieme berichten" #: ../../static/t/room/edit/tab_config.html:127 msgid "All messages are anonymous" msgstr "Alle berichten zijn anoniem" #: ../../static/t/room/edit/tab_config.html:132 msgid "Prompt user when entering messages" msgstr "Gebruiker vragen bij invoer bericht" #: ../../static/t/room/edit/tab_config.html:136 msgid "Room aide: " msgstr "Ruimte Beheerder: " #: ../../static/t/room/edit/tab_listserv.html:5 #, fuzzy msgid "" "The contents of this room are being mailed as individual messages " "to the following list recipients:

    " msgstr "" "De berichten in deze ruimte worden als losse berichten gemaild " "naar de volgende ontvangers:

    \n" #: ../../static/t/room/edit/tab_listserv.html:19 #, fuzzy msgid "" "The contents of this room are being mailed in digest form to the " "following list recipients:

    " msgstr "" "De berichten in deze ruimte worden als als één pakket gemaild naar " "de volgende ontvangers:

    \n" #: ../../static/t/room/edit/tab_listserv.html:39 msgid "Add recipients from Contacts or other address books" msgstr "Voeg ontvangers toe uit 'Contacten' of andere adresboeken" #: ../../static/t/room/edit/tab_listserv.html:48 msgid "Allow non-subscribers to mail to this room." msgstr "Niet geabonneerden toestaan deze ruimte te mailen." #: ../../static/t/room/edit/tab_listserv.html:54 msgid "Room post publication needs Admin permission." msgstr "Beheersrechten nodig" #: ../../static/t/room/edit/tab_listserv.html:59 msgid "Allow self-service subscribe/unsubscribe requests." msgstr "Deze ruimte is ingesteld voor zelf-service bij abonneren/verwijderen." #: ../../static/t/room/edit/tab_listserv.html:65 msgid "The URL for subscribe/unsubscribe is: " msgstr "De URL voor abonneren/verwijderen is: " #: ../../static/t/room/edit/digestrecp_removal.html:1 #: ../../static/t/room/edit/pop3client_removal.html:9 #: ../../static/t/room/edit/listrecp_removal.html:1 #: ../../static/t/room/edit/rssclient_removal.html:5 msgid "(remove)" msgstr "(verwijderen)" #: ../../static/t/room/edit/tab_admin.html:5 msgid "Delete this room" msgstr "Deze ruimte verwijderen" #: ../../static/t/room/edit/tab_admin.html:10 #, fuzzy msgid "Set or change the icon for this rooms banner" msgstr "Zet of wijzig het icoontje voor de banner van deze ruimte" #: ../../static/t/room/edit/tab_admin.html:14 #, fuzzy msgid "Edit this rooms Info file" msgstr "Bewerk het Infobestand van deze ruimte" #: ../../static/t/room/edit/tab_share.html:5 msgid "Shared with" msgstr "Gedeeld met" #: ../../static/t/room/edit/tab_share.html:6 msgid "Not shared with" msgstr "Niet gedeeld met" #: ../../static/t/room/edit/tab_share.html:11 #: ../../static/t/room/edit/tab_share.html:21 msgid "Remote node name" msgstr "Knooppunt op afstand" #: ../../static/t/room/edit/tab_share.html:12 #: ../../static/t/room/edit/tab_share.html:22 msgid "Remote room name" msgstr "Naam van ruimte op afstand" #: ../../static/t/room/edit/tab_share.html:13 #: ../../static/t/room/edit/tab_share.html:23 msgid "Actions" msgstr "Acties" #: ../../static/t/room/edit/tab_share.html:35 #, fuzzy msgid "" "When sharing a room, it must be shared from both ends. Adding a node to the " "'shared' list sends messages out, but in order to receive messages, the " "other nodes must be configured to send messages out to your system as well. " "
  • If the remote room name is blank, it is assumed that the room name is " "identical on the remote node.
  • If the remote room name is different, the " "remote node must also configure the name of the room here." msgstr "" "Als u een ruimte deelt, moeten beide kanten meewerken. Een knooppunt " "toevoegen aan de 'gedeelde' lijst stuurt berichten naar buiten, maar om " "berichten te ontvangen, moet het andere knooppunt ook zijn ingesteld om " "berichten naar uw systeem te verzenden.
  • Als de naam van de ruimte op " "afstand leeg is weet u zeker dat de naam van de ruimte gelijk wordt geacht " "aan de ruimte op het knooppunt op afstand.
  • Als de naam van de ruimte op " "afstand verschilt moet de ruimte op afstand zelf ook een naam ingesteld " "krijgen.
    \n" #: ../../static/t/room/edit/tab_feed.html:2 msgid "" "Retrieve messages from these remote POP3 accounts and store them in this " "room:" msgstr "Haal berichten van deze POP3 accounts en sla ze op in deze ruimte:" #: ../../static/t/room/edit/tab_feed.html:12 msgid "Remote host" msgstr "Hosts op afstand" #: ../../static/t/room/edit/tab_feed.html:15 msgid "Keep messages on server?" msgstr "Bewaar berichten op de server?" #: ../../static/t/room/edit/tab_feed.html:16 msgid "Interval" msgstr "interval" #: ../../static/t/room/edit/tab_feed.html:31 msgid "Fetch the following RSS feeds and store them in this room:" msgstr "Haal berichten van deze RSS-feeds en sla ze op in deze ruimte:" #: ../../static/t/room/edit/tab_feed.html:43 msgid "Feed URL" msgstr "Feed URL" #: ../../static/t/room/edit/tab_access.html:5 #, fuzzy msgid "" "The users listed below have access to this room. To remove a user from the " "access list, select the user name from the list and click 'Kick'." msgstr "" "De gebruikers hieronder hebben toegang tot deze ruimte. Om een gebruiker te " "verwijderen uit de toegangslijst, selecteer de gebruikersnaam en klik " "'Verwijderen'" #: ../../static/t/room/edit/tab_access.html:20 msgid "" "To grant another user access to this room, enter the user name in the box " "below and click 'Invite'." msgstr "" "Om een andere gebruiker toegang te geven tot deze ruimte vul hieronder de " "gebruikersnaam in en klik op 'Uitnodigen'." #: ../../static/t/room/edit/tab_access.html:26 msgid "Invite:" msgstr "Uitnodigen:" #: ../../static/t/room/edit/tab_access.html:35 msgid "Users" msgstr "Gebruikers" #: ../../static/t/room/zapped_list.html:7 msgid "Zapped (forgotten) rooms" msgstr "Zapped (vergeten) ruimtes" #: ../../static/t/room/zapped_list.html:10 #, fuzzy msgid "Click on any room to un-zap it and goto that room." msgstr "Klik op willekeurige ruimte om te unzappen en ga naar die ruimte.\n" #: ../../static/t/room/display_private.html:7 msgid "Go to a hidden room" msgstr "Ga naar een verborgen ruimte" #: ../../static/t/room/display_private.html:8 #, fuzzy msgid "" "If you know the name of a hidden (guess-name) or passworded room, you can " "enter that room by typing its name below. Once you gain access to a private " "room, it will appear in your regular room listings so you don‘t have to keep " "returning here." msgstr "" "Als u de naam kent van een verborgen (raden naam) ruimte of een ruimte met " "wachtwoord, kunt u de ruimte binnenkomen door de naam in te vullen.Als u " "eenmaal toegang heeft tot een privéruimte, zal het verschijnen in uw normale " "lijst met ruimtes, zodat u hier niet steeds hoeft terug te keren." #: ../../static/t/room/display_private.html:14 msgid "Enter room name:" msgstr "Geef naam ruimte:" #: ../../static/t/room/display_private.html:21 msgid "Enter room password:" msgstr "Geef wachtwoord ruimte:" #: ../../static/t/room/create.html:11 #: ../../static/t/menu/advanced_roomcommands.html:6 msgid "Create a new room" msgstr "Maak een nieuwe ruimte aan" #: ../../static/t/room/create.html:18 msgid "Name of room: " msgstr "Naam van de ruimte: " #: ../../static/t/room/create.html:32 msgid "Default view for room: " msgstr "Standaard weergave voor ruimte: " #: ../../static/t/room/zap_this.html:3 msgid "Zap (forget/unsubscribe) the current room" msgstr "Zap (vergeet/verwijder uit) de huidige ruimte" #: ../../static/t/room/zap_this.html:6 #, fuzzy msgid "If you select this option," msgstr "Bewerk of verwijder deze ruimte" #: ../../static/t/room/zap_this.html:8 #, fuzzy msgid "will disappear from your room list. Is this what you wish to do?" msgstr "" "Als u deze optie selecteert verdwijnt %s uit uw lijst met ruimtes. " "Is dat wat u wilt?
    \n" #: ../../static/t/menu/your_info.html:2 msgid "Change your preferences and settings" msgstr "Uw voorkeuren en instellingen wijzigen" #: ../../static/t/menu/your_info.html:3 msgid "Update your contact information" msgstr "Uw contactinformatie bijwerken" #: ../../static/t/menu/your_info.html:5 msgid "Enter your 'bio'" msgstr "Uw 'CV' toevoegen" #: ../../static/t/menu/your_info.html:6 msgid "Edit your online photo" msgstr "Uw online foto bewerken" #: ../../static/t/menu/your_info.html:8 msgid "Edit your push email settings" msgstr "Bewerk uw push email instellingen" #: ../../static/t/menu/your_info.html:9 #, fuzzy msgid "Manage your OpenIDs" msgstr "Uw OpenID" #: ../../static/t/menu/basic_commands.html:3 msgid "List known rooms" msgstr "Lijst van bekende ruimtes" #: ../../static/t/menu/basic_commands.html:3 msgid "Where can I go from here?" msgstr "Waar kan ik van hieruit naar toe?" #: ../../static/t/menu/basic_commands.html:4 ../../static/t/navbar.html:168 msgid "Goto next room" msgstr "Volgende ruimte" #: ../../static/t/menu/basic_commands.html:4 msgid "...with unread messages" msgstr "...met ongelezen berichten" #: ../../static/t/menu/basic_commands.html:5 msgid "Skip to next room" msgstr "Ga naar volgende ruimte" #: ../../static/t/menu/basic_commands.html:5 msgid "(come back here later)" msgstr "(kom hier later terug)" #: ../../static/t/menu/basic_commands.html:6 ../../static/t/navbar.html:5 msgid "Ungoto" msgstr "Ongedaan maken" #: ../../static/t/menu/basic_commands.html:6 msgid "oops! Back to " msgstr "oeps! Terug naar " #: ../../static/t/menu/basic_commands.html:10 ../../static/t/navbar.html:13 msgid "Read new messages" msgstr "Lees nieuwe berichten" #: ../../static/t/menu/basic_commands.html:10 msgid "...in this room" msgstr "...in deze ruimte" #: ../../static/t/menu/basic_commands.html:11 ../../static/t/navbar.html:19 msgid "Read all messages" msgstr "Lees alle berichten" #: ../../static/t/menu/basic_commands.html:11 msgid "...old and new" msgstr "...oude en nieuwe" #: ../../static/t/menu/basic_commands.html:12 ../../static/t/navbar.html:25 msgid "Enter a message" msgstr "Bericht opstellen" #: ../../static/t/menu/basic_commands.html:12 msgid "(post in this room)" msgstr "(in deze ruimte plaatsen)" #: ../../static/t/menu/basic_commands.html:13 msgid "File library" msgstr "Bestandsbibliotheek" #: ../../static/t/menu/basic_commands.html:13 msgid "(List files available for download)" msgstr "(Toon bestanden beschikbaar voor download)" #: ../../static/t/menu/basic_commands.html:17 msgid "Summary page" msgstr "Samenvattingspagina" #: ../../static/t/menu/basic_commands.html:17 msgid "Summary of my account" msgstr "Samenvatting van mijn account" #: ../../static/t/menu/basic_commands.html:18 msgid "User list" msgstr "Gebruikerslijst" #: ../../static/t/menu/basic_commands.html:18 msgid "(all registered users)" msgstr "(alle geregistreerde gebruikers)" #: ../../static/t/menu/basic_commands.html:19 msgid "Bye!" msgstr "Tot ziens!" #: ../../static/t/menu/advanced_roomcommands.html:3 msgid "Edit or delete this room" msgstr "Bewerk of verwijder deze ruimte" #: ../../static/t/menu/advanced_roomcommands.html:5 msgid "Go to a 'hidden' room" msgstr "Ga naar een 'verborgen' ruimte" #: ../../static/t/menu/advanced_roomcommands.html:7 msgid "Zap (forget) this room" msgstr "Zap (vergeet) deze ruimte" #: ../../static/t/menu/advanced_roomcommands.html:8 msgid "List all forgotten rooms" msgstr "Toon alle vergeten ruimtes" #: ../../static/t/navbar.html:34 msgid "View contacts" msgstr "Toon contacten" #: ../../static/t/navbar.html:40 msgid "Add new contact" msgstr "Contact toevoegen" #: ../../static/t/navbar.html:49 msgid "Day view" msgstr "Toon dag" #: ../../static/t/navbar.html:55 msgid "Month view" msgstr "Toon maand" #: ../../static/t/navbar.html:61 msgid "Add new event" msgstr "Afspraak toevoegen" #: ../../static/t/navbar.html:70 msgid "Calendar list" msgstr "Agendalijst" #: ../../static/t/navbar.html:79 msgid "View tasks" msgstr "Toon taken" #: ../../static/t/navbar.html:85 msgid "Add new task" msgstr "Taak toevoegen" #: ../../static/t/navbar.html:94 msgid "View notes" msgstr "Toon notities" #: ../../static/t/navbar.html:101 msgid "Add new note" msgstr "Notitie toevoegen" #: ../../static/t/navbar.html:110 msgid "Refresh message list" msgstr "Verversen" #: ../../static/t/navbar.html:122 msgid "Write mail" msgstr "Opstellen" #: ../../static/t/navbar.html:132 msgid "Wiki home" msgstr "Wiki home" #: ../../static/t/navbar.html:139 msgid "Edit this page" msgstr "Deze pagina bewerken" #: ../../static/t/navbar.html:145 msgid "History" msgstr "Geschiedenis" #: ../../static/t/navbar.html:154 #, fuzzy msgid "New blog post" msgstr "nieuwere berichten" #: ../../static/t/navbar.html:162 msgid "Skip this room" msgstr "Ruimte overslaan" #: ../../static/t/msg_listview.html:18 msgid "Loading messages from server, please wait" msgstr "Laad berichten van de server, een ogenblik" #: ../../static/t/msg_listview.html:24 msgid "Open in new window" msgstr "Open in nieuw venster" #: ../../static/t/msg_listview.html:26 msgid "Copy" msgstr "Kopieer" #: ../../static/t/view_mailq/message.html:6 msgid "Originaly posted in: " msgstr "" #: ../../static/t/view_mailq/header.html:15 msgid "Refresh this page" msgstr "Ververs deze pagina" #: ../../static/t/view_mailq/header.html:21 msgid "Message ID" msgstr "Message ID" #: ../../static/t/view_mailq/header.html:23 msgid "Date/time submitted" msgstr "Datum/tijd ingesteld" #: ../../static/t/view_mailq/header.html:25 #, fuzzy msgid "Next attempt" msgstr "Laatste poging" #: ../../static/t/view_mailq/header.html:29 msgid "Recipients" msgstr "Ontvangers" #: ../../static/t/view_mailq/footer_empty.html:4 msgid "The queue is empty." msgstr "De queue is leeg" #: ../../static/t/view_mailq/footer_empty.html:9 #: ../../static/t/view_mailq/footer.html:5 msgid "You do not have permission to view this resource." msgstr "U heeft geen toestemming deze bron te bekijken." #: ../../static/t/get_logged_in.html:5 msgid "You must be logged in to access this page." msgstr "Je moet ingelogd zijn om deze pagina te openen." #: ../../static/t/get_logged_in.html:9 #: ../../static/t/edit_message/attachments_pane.html:3 msgid "Close window" msgstr "Venster sluiten" #: ../../static/t/get_logged_in.html:55 msgid "Log in using a user name and password" msgstr "Log in met gebruikersnaam en wachtwoord" #: ../../static/t/get_logged_in.html:60 ../../static/t/get_logged_in.html:75 msgid "Password:" msgstr "Wachtwoord:" #: ../../static/t/get_logged_in.html:65 ../../static/t/get_logged_in.html:69 msgid "New user? Register now" msgstr "Nieuwe gebruiker? Schrijf u nu in" #: ../../static/t/get_logged_in.html:70 msgid "" "enter the name and password you wish to use, and click "New User." " msgstr "" "vul uw gebruikersnaam in en het wachtwoord dat u wilt gebruiken en klik op " ""Nieuwe gebruiker. " #: ../../static/t/get_logged_in.html:83 msgid "Log in using OpenID" msgstr "Login met OpenID" #: ../../static/t/get_logged_in.html:85 msgid "OpenID URL:" msgstr "OpenID URL:" #: ../../static/t/get_logged_in.html:92 #, fuzzy msgid "Log in using Google" msgstr "Login met OpenID" #: ../../static/t/get_logged_in.html:97 #, fuzzy msgid "Log in using Yahoo" msgstr "Login met OpenID" #: ../../static/t/get_logged_in.html:102 #, fuzzy msgid "Log in using AOL or AIM" msgstr "Login met OpenID" #: ../../static/t/get_logged_in.html:104 msgid "Enter your AOL or AIM screen name:" msgstr "" #: ../../static/t/get_logged_in.html:115 msgid "Please wait" msgstr "Even geduld" #: ../../static/t/summary/page.html:4 #, fuzzy msgid "Summary page for " msgstr "Samenvattingspagina voor %s" #: ../../static/t/summary/page.html:21 msgid "Messages" msgstr "Berichten" #: ../../static/t/summary/page.html:39 msgid "Today on your calendar" msgstr "Vandaag op uw agenda" #: ../../static/t/summary/page.html:51 #, fuzzy msgid "Who‘s online now" msgstr "Wie is nu online" #: ../../static/t/summary/page.html:60 msgid "About this server" msgstr "Over deze server" #: ../../static/t/summary/page.html:63 msgid "You are connected to" msgstr "" #: ../../static/t/summary/page.html:64 #, fuzzy msgid "running" msgstr "Afstemmen" #: ../../static/t/summary/page.html:65 #, fuzzy msgid "with" msgstr "vijfde" #: ../../static/t/summary/page.html:66 msgid "server build" msgstr "" #: ../../static/t/summary/page.html:67 #, fuzzy msgid "and located in" msgstr "en dan" #: ../../static/t/summary/page.html:68 #, fuzzy msgid "Your system administrator is" msgstr "Naam van de systeembeheerder" #: ../../static/t/edit_message/attachments_pane.html:16 msgid "Attach file" msgstr "Bijlage toevoegen" #: ../../static/t/edit_message/attachments_pane.html:21 msgid "Upload" msgstr "Uploaden" #: ../../static/t/edit_message/section_attach_select.html:4 #, fuzzy msgid "Remove" msgstr "(verwijderen)" #: ../../static/t/loggedinas.html:3 #, fuzzy msgid "Logged in as" msgstr "Laatste login" #: ../../static/t/loggedinas.html:6 #, fuzzy msgid "Not logged in." msgstr "Niet ingelogd" #~ msgid "A script by that name already exists." #~ msgstr "Een script met die naam bestaat al" #~ msgid "" #~ "A new script has been created. Return to the script editing screen to " #~ "edit and activate it." #~ msgstr "" #~ "Een nieuw script is aangemaakt. Terug naar het bewerkingsscherm voor " #~ "bewerking en activering." #~ msgid "Create" #~ msgstr "Aanmaken" #~ msgid "Delete script" #~ msgstr "Script verwijderen" #~ msgid "Delete this script?" #~ msgstr "Dit script verwijderen?" #~ msgid "Move rule up" #~ msgstr "Regel naar boven" #~ msgid "Move rule down" #~ msgstr "Regel naar beneden" #~ msgid "Delete rule" #~ msgstr "Verwijder regel" #~ msgid "Reset form" #~ msgstr "Formulier wissen" #~ msgid "" #~ "You are connected to %s, running %s with %s, server build %s and located " #~ "in %s. Your system administrator is %s." #~ msgstr "" #~ "U bent verbonden met %s, waar %s op draait met %s, server build %s en " #~ "gevestigd in %s. Uw systeembeheerder is %s." #~ msgid "Yes with users list" #~ msgstr "Ja met gebruikerslijst" #~ msgid "Room list" #~ msgstr "Lijst van ruimtes" #~ msgid "View as room list" #~ msgstr "Toon als lijst met ruimtes" #~ msgid "View as folder list" #~ msgstr "Toon als mappenstructuur" #~ msgid "Room Listing" #~ msgstr "Lijst met ruimtes" #~ msgid " - powered by Citadel" #~ msgstr " - op basis van Citadel" #, fuzzy #~ msgid "uname" #~ msgstr "Bestandsnaam" #, fuzzy #~ msgid "text" #~ msgstr "volgende" #, fuzzy #~ msgid "name" #~ msgstr "Bestandsnaam" #, fuzzy #~ msgid "pname" #~ msgstr "Bestandsnaam" #, fuzzy #~ msgid "password" #~ msgstr "Wachtwoord" #, fuzzy #~ msgid "pass" #~ msgstr "Taken" #, fuzzy #~ msgid "authbox" #~ msgstr "Auteur" #, fuzzy #~ msgid "display: none" #~ msgstr "Naamweergave:" #~ msgid "Your password was not accepted." #~ msgstr "Uw wachtwoord is niet geaccepteerd." #~ msgid "If you already have an account on" #~ msgstr "Als u al een account heeft op" #~ msgid "enter your user name and password and click "Log in."" #~ msgstr "" #~ "vul dan uw gebruikersnaam en wachtwoord in en klik op "Log in."" #~ msgid "Please log off properly when finished. " #~ msgstr "Log correct uit als u klaar bent. " #~ msgid "See the" #~ msgstr "Bekijk de" #~ msgid "recommended browser list" #~ msgstr "aanbevolen browser lijst" #~ msgid "" #~ "if you have trouble using Webcit.
  • You must have cookies " #~ "turned on. " #~ msgstr "" #~ "als u problemen heeft met Webcit.
  • Cookies moeten worden " #~ "toegestaan. " #~ msgid "" #~ "Also keep in mind that if your browser is configured to block pop-up " #~ "windows, you will not be able to receive any instant messages." #~ msgstr "" #~ "Als uw browser pop-up vensters blokkeert, zult u geen directe berichten " #~ "kunnen ontvangen." #~ msgid "Enter your OpenID URL and click "Log in"." #~ msgstr "Vul uw OpenID URL in en klik op "Inloggen."" #~ msgid "Click here to learn what OpenID is and how Citadel is using it." #~ msgstr "Klik hier voor meer info over OpenID en hoe Citadel het gebruikt." #~ msgid "Exit" #~ msgstr "Stoppen" #~ msgid "Change name" #~ msgstr "Naam wijzigen" #~ msgid "Change CSS" #~ msgstr "CSS wijzigen" #~ msgid "Create new floor" #~ msgstr "Maak nieuwe verdieping aan" #~ msgid "" #~ "You have one or more instant messages waiting, but the Citadel Instant " #~ "Messenger window failed to open. This is probably because you have a " #~ "popup blocker installed. Please configure your popup blocker to allow " #~ "popups from this site if you wish to receive instant messages." #~ msgstr "" #~ "U heeft een of meer wachtende directe berichten, maar het Instant " #~ "Messenger venster kon niet worden geopend. Dit komt waarschijnlijk omdat " #~ "uw browser pop-up vensters blokkeert. Zorg alstublieft dat uw pop-up " #~ "blocker popups van deze site accepteert als u directe berichten wilt " #~ "ontvangen." #, fuzzy #~ msgid "The citadel server has to be restarted. It will be back in a minute." #~ msgstr "" #~ "De Citadel server moet opnieuw opstarten. Het is zo weer beschikbaar." #~ msgid "Change" #~ msgstr "Wijzigen" #, fuzzy #~ msgid "Add node?" #~ msgstr "Knooppunt toevoegen" #, fuzzy #~ msgid "Minutes" #~ msgstr "minuten " #, fuzzy #~ msgid "active" #~ msgstr "Voorwaardelijk" #~ msgid "Send" #~ msgstr "Versturen" #~ msgid "Pictures in" #~ msgstr "Plaatjes in " #~ msgid "Edit configuration" #~ msgstr "Instellingen bewerken" #~ msgid "Edit address book entry" #~ msgstr "Item adresboek bewerken" #~ msgid "Delete user" #~ msgstr "Gebruiker verwijderen" #~ msgid "Delete this user?" #~ msgstr "Deze gebruiker verwijderen?" #, fuzzy #~ msgid "Delete File" #~ msgstr "Verwijder regel" #~ msgid "Delete this message?" #~ msgstr "Verwijder dit bericht?" #, fuzzy #~ msgid "Powered by Citadel" #~ msgstr "Toont het 'Powered by Citadel' icoontje." #~ msgid "Go to your email inbox" #~ msgstr "Ga naar uw email inbox" #~ msgid "Go to your personal calendar" #~ msgstr "Ga naar uw persoonlijke agenda" #~ msgid "Go to your personal address book" #~ msgstr "Ga naar uw persoonlijk adresboek" #~ msgid "Go to your personal notes" #~ msgstr "Ga naar uw persoonlijke notities" #~ msgid "Go to your personal task list" #~ msgstr "Ga naar uw persoonlijke takenlijst" #, fuzzy #~ msgid "List all your accessible rooms" #~ msgstr "Lijst van voor u toegankelijke ruimtes" #~ msgid "See who is online right now" #~ msgstr "Bekijk wie nu online is" #~ msgid "" #~ "Advanced Options Menu: Advanced Room commands, Account Info, and Chat" #~ msgstr "" #~ "Uitgebreide menuopties: Uitgebreide opdrachten ruimtes, Account info, enz." #~ msgid "Room and system administration functions" #~ msgstr "Functies ruimte- en systeembeheer" #~ msgid "Log off now?" #~ msgstr "Nu uitloggen?" #, fuzzy #~ msgid "Delete this entry?" #~ msgstr "Deze notitie verwijderen?" #~ msgid "Delete this note?" #~ msgstr "Deze notitie verwijderen?" #, fuzzy #~ msgid "Do you really want to kill this session?" #~ msgstr "Wilt u dit OpenID echt verwijderen?" #, fuzzy #~ msgid "Save changes?" #~ msgstr "Wijzigingen bewaren" #~ msgid "%d new of %d messages%s" #~ msgstr "%d nieuw van in totaal %d berichten%s" #~ msgid "" #~ "Leave all messages marked as unread, go to next room with unread messages" #~ msgstr "" #~ "Laat alle berichten gemarkeerd als ongelezen, ga naar de volgende ruimte " #~ "met ongelezen berichten" #~ msgid "Mark all messages as read, go to next room with unread messages" #~ msgstr "" #~ "Markeer alle berichten als gelezen, ga naar de volgende ruimte met " #~ "ongelezen berichten" #~ msgid "Are you sure you want to delete this room?" #~ msgstr "Weet u zeker dat u deze ruimte wilt verwijderen?" #~ msgid "Unshare" #~ msgstr "Niet delen" #~ msgid "Share" #~ msgstr "Delen" #~ msgid "List" #~ msgstr "Los" #~ msgid "Digest" #~ msgstr "Pakket" #~ msgid "Kick" #~ msgstr "Verwijderen" #~ msgid "Invite" #~ msgstr "Uitnodigen" #~ msgid "User" #~ msgstr "Gebruiker" #~ msgid "Create new room" #~ msgstr "Maak een nieuwe ruimte aan" #~ msgid "Go there" #~ msgstr "Ga er naar toe" #~ msgid "Zap this room" #~ msgstr "Zap deze ruimte" #~ msgid "(nothing)" #~ msgstr "(niets)" #~ msgid "unexpected end of message" #~ msgstr "onverwacht einde van bericht" #~ msgid "An error occurred while setting up the chat socket." #~ msgstr "Er is een fout opgetreden bij het opzetten van de chat socket." #~ msgid "Now exiting chat mode." #~ msgstr "Nu chatmode verlaten." #~ msgid "Help" #~ msgstr "Help" #~ msgid "List users" #~ msgstr "Gebruikerslijst" #~ msgid "No messages here." #~ msgstr "Hier geen berichten." #, fuzzy #~ msgid "no more messages" #~ msgstr "Anonieme berichten" #~ msgid "" #~ "Your icon bar has been updated. Please select any of its choices to " #~ "continue.
    You may need to force " #~ "refresh (SHIFT-F5) in order for changes to take effect" #~ msgstr "" #~ "Uw iconenbalk is geupdate. Maak een willekeurige keuze om door te gaan." #~ "
    Wellicht moet u verversen (SHIFT-" #~ "F5) om te zorgen dat de veranderingen getoond worden" #~ msgid "Email" #~ msgstr "Email" #~ msgid "Error retrieving RSS feed: couldn't find messages\n" #~ msgstr "Fout in binnenhalen RSS feed: kon geen berichten vinden\n" #~ msgid "%s from" #~ msgstr "%s van " #~ msgid "%s in %s" #~ msgstr "%s in %s" #~ msgid " on %s" #~ msgstr "op %s" #~ msgid "%s" #~ msgstr "%s" #~ msgid ")>
  • " #~ msgstr ",1)>" #~ msgid "" #~ "
    • Enter your OpenID URL and click "Log in".
    • Click here to " #~ "learn what OpenID is and how Citadel is using it.
    • Please log off " #~ "properly when finished.
    • You must use a browser that supports " #~ "frames and cookies.
    • Also keep in mind that if your " #~ "browser is configured to block pop-up windows, you will not be able to " #~ "receive any instant messages.
    " #~ msgstr "" #~ "" #~ msgid "" #~ "enter your user name and password and click "Log in."
  • If " #~ "you are a new user, enter the name and password you wish to use, and " #~ "click "New User."
  • Please log off properly when finished. " #~ "
  • You must use a browser that supports frames and cookies.
  • Also keep in mind that if your browser is configured to block pop-" #~ "up windows, you will not be able to receive any instant messages." #~ msgstr "" #~ "Vul uw gebruikersnaam en wachtwoord in en klik op "Inloggen." " #~ "
  • Als u een nieuwe gebruiker bent, vul uw gebruikersnaam in en " #~ "het wachtwoord dat u wilt gebruiken en klik op "Nieuwe gebruiker." #~ ""
  • Log correct uit als u klaar bent.
  • Uw browser moet " #~ "frames en cookies ondersteunen.
  • Als uw browser pop-up " #~ "vensters blokkeert, zult u geen directe berichten kunnen ontvangen.
    " #~ msgid "Find out more about Citadel" #~ msgstr "Meer informatie over Citadel" #~ msgid "CITADEL" #~ msgstr "CITADEL" #~ msgid "Customize this menu" #~ msgstr "Dit menu aanpassen" #~ msgid "Internet configuration" #~ msgstr "Internet configuratie" #~ msgid "of %d messages." #~ msgstr "van %d berichten." #~ msgid " from " #~ msgstr " van " #~ msgid " in " #~ msgstr " in " #~ msgid "Edit node configuration for " #~ msgstr "Knooppunt instellingen bewerken voor " #~ msgid "" #~ "Postfix TCP " #~ "Dictionary Port (-1 to disable)" #~ msgstr "" #~ "Postfix TCP " #~ "Dictionary Port (-1 to disable)" #~ msgid "ERROR: could not open template " #~ msgstr "FOUT: kon template niet openen" #~ msgid "" #~ "This message contains calendaring/scheduling information, but support " #~ "for calendars is not available on this particular system. Please ask " #~ "your system administrator to install a new version of the Citadel web " #~ "service with calendaring enabled.
    \n" #~ msgstr "" #~ "Dit bericht bevat agenda/rooster informatie, maar ondersteuning voor " #~ "agenda's is niet beschikbaar op dit systeem. Vraag uw systeembeheerder a." #~ "u.b. een nieuwe versie van Citadel te installeren met ondersteuning voor " #~ "agenda's
    \n" #~ msgid "" #~ "Cannot display calendar item. You are seeing this error because your " #~ "WebCit service has not been installed with calendar support. Please " #~ "contact your system administrator.
    \n" #~ msgstr "" #~ "Kan agenda-item niet weergeven. U ziet deze foutmelding omdat de " #~ "Webcit service niet is geinstalleerd met agenda-ondersteun. Neem " #~ "alstublieft contact op met uw systeembeheerder.
    \n" #~ msgid "" #~ "Cannot display to-do item. You are seeing this error because your " #~ "WebCit service has not been installed with calendar support. Please " #~ "contact your system administrator.
    \n" #~ msgstr "" #~ "Kan het 'te-doen'-item niet weergeven. U ziet deze foutmelding omdat " #~ "de Webcit service niet is geïnstalleerd met 'te-doen'-ondersteuning. Neem " #~ "alstublieft contact op met uw systeembeheerder.
    \n" #~ msgid "Day: " #~ msgstr "Dag: " #~ msgid "Year: " #~ msgstr "Jaar: " #~ msgid "The calendar view is not available." #~ msgstr "De agenda view is niet beschikbaar." #~ msgid "The tasks view is not available." #~ msgstr "De weergave taken is niet beschikbaar." #~ msgid "Gateway domains" #~ msgstr "Gateway domeinen" #~ msgid "(domains whose subdomains match Citadel hosts)" #~ msgstr "(domeinen waarvan de subdomeinen vallen onder Citadel hosts)" #~ msgid "(This server does not support task lists)" #~ msgstr "(Deze server ondersteunt geen takenlijsten)" #~ msgid "(This server does not support calendars)" #~ msgstr "(Deze server ondersteunt geen agenda's)" webcit-8.24-dfsg.orig/po/webcit/cs.po0000644000175000017500000032740112271477123017247 0ustar michaelmichael# Czech translation for citadel # Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010 # This file is distributed under the same license as the citadel package. # FIRST AUTHOR , 2010. # msgid "" msgstr "" "Project-Id-Version: citadel\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-03-20 01:03-0400\n" "PO-Revision-Date: 2013-08-20 09:48+0000\n" "Last-Translator: Vilem Kebrt \n" "Language-Team: Czech \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2013-08-21 04:32+0000\n" "X-Generator: Launchpad (build 16731)\n" "Language: cs\n" #: ../../roomops.c:708 ../../roomops.c:1005 ../../sieve.c:364 msgid "Cancelled. Changes were not saved." msgstr "Zrušeno. Změny se neuloží." #: ../../roomops.c:838 ../../sieve.c:417 msgid "Your changes have been saved." msgstr "Vaše změny byly uloženy." #: ../../roomops.c:881 #, c-format msgid "User '%s' kicked out of room '%s'." msgstr "Uživatel '%s' byl vykopnut z místnosti '%s'." #: ../../roomops.c:898 #, c-format msgid "User '%s' invited to room '%s'." msgstr "Uživatel '%s' pozván do místnosti '%s'." #: ../../roomops.c:927 msgid "Cancelled. No new room was created." msgstr "Zrušeno. Nová místnost nebyla vytvořena" #: ../../roomops.c:1187 msgid "Floor has been deleted." msgstr "Podlaží bylo vymazáno." #: ../../roomops.c:1211 msgid "New floor has been created." msgstr "Nové podlaží bylo vytvořeno." #: ../../roomops.c:1290 msgid "Room list view" msgstr "Pohled na místnosti" #: ../../roomops.c:1293 msgid "Show empty floors" msgstr "Zobrazit prázdná podlaží" #: ../../roomviews.c:50 msgid "Bulletin Board" msgstr "Nástěnka" #: ../../roomviews.c:51 msgid "Mail Folder" msgstr "Poštovní složka" #: ../../roomviews.c:52 msgid "Address Book" msgstr "Adresář" #: ../../roomviews.c:53 ../../static/t/iconbar.html:24 #: ../../static/t/iconbar/edit.html:55 msgid "Calendar" msgstr "Kalendář" #: ../../roomviews.c:54 msgid "Task List" msgstr "Seznam úkolů" #: ../../roomviews.c:55 msgid "Notes List" msgstr "Seznam poznámek" #: ../../roomviews.c:56 msgid "Wiki" msgstr "Wiki" #: ../../roomviews.c:57 msgid "Calendar List" msgstr "Kalendářní pohled" #: ../../roomviews.c:58 msgid "Journal" msgstr "Deník" #: ../../roomviews.c:59 msgid "Drafts" msgstr "Koncepty" #: ../../roomviews.c:60 msgid "Blog" msgstr "Blog" #: ../../tasks.c:93 msgid "Completed?" msgstr "Dokončeno?" #: ../../tasks.c:95 msgid "Name of task" msgstr "Název úlohy" #: ../../tasks.c:97 msgid "Date due" msgstr "Plánované dokončení" #: ../../tasks.c:99 msgid "Category" msgstr "Kategorie" #: ../../tasks.c:101 msgid "Show All" msgstr "Zobrazit vše" #: ../../tasks.c:223 msgid "Edit task" msgstr "Upravit úlohu" #: ../../tasks.c:242 ../../calendar.c:98 ../../calendar_view.c:298 #: ../../calendar_view.c:959 ../../calendar_view.c:1003 #: ../../calendar_view.c:1084 msgid "Summary:" msgstr "Shrnutí:" #: ../../tasks.c:253 msgid "Start date:" msgstr "Začátek:" #: ../../tasks.c:261 ../../tasks.c:291 msgid "No date" msgstr "Žádné datum" #: ../../tasks.c:265 ../../tasks.c:294 msgid "or" msgstr "nebo" #: ../../tasks.c:279 ../../tasks.c:308 msgid "Time associated" msgstr "Přiřazený čas" #: ../../tasks.c:283 msgid "Due date:" msgstr "Konec:" #: ../../tasks.c:312 msgid "Completed:" msgstr "Dokončeno:" #: ../../tasks.c:323 msgid "Category:" msgstr "Kategorie:" #: ../../tasks.c:333 ../../calendar.c:159 ../../static/t/files.html:12 msgid "Description:" msgstr "Popis:" #: ../../tasks.c:351 ../../event.c:764 msgid "Save" msgstr "Uložit" #: ../../tasks.c:352 ../../event.c:765 ../../static/t/aide/inet/section.html:5 #: ../../static/t/view_blog/comment.html:12 #: ../../static/t/view_blog/post.html:15 ../../static/t/view_message.html:32 #: ../../static/t/navbar.html:116 ../../static/t/msg_listview.html:27 msgid "Delete" msgstr "Odstranit" #: ../../tasks.c:353 ../../vcard_edit.c:1216 ../../paging.c:66 #: ../../event.c:767 ../../sysmsgs.c:69 ../../who.c:200 ../../auth.c:812 #: ../../static/t/edit_message.html:135 ../../static/t/confirmlogoff.html:4 msgid "Cancel" msgstr "Zrušit" #: ../../tasks.c:423 ../../calendar_view.c:1379 msgid "Untitled Task" msgstr "Nepojmenovaná úloha" #: ../../fmt_date.c:310 msgid "Time format" msgstr "Formát času" #: ../../listsub.c:54 ../../static/t/listsub/display.html:5 msgid "List subscription" msgstr "Seznam odebírání" #: ../../listsub.c:67 ../../static/t/listsub/display.html:9 msgid "List subscribe/unsubscribe" msgstr "Seznam přihlášených/odhlášených" #: ../../listsub.c:87 ../../static/t/listsub/display.html:15 #: ../../static/t/listsub/display.html:34 msgid "Confirmation request sent" msgstr "Potvrzovací požadavek odeslán" #: ../../listsub.c:89 #, c-format msgid "" "You are subscribing %s to the %s mailing list. The " "listserver has sent you an e-mail with one additional Web link for you to " "click on to confirm your subscription. This extra step is for your " "protection, as it prevents others from being able to subscribe you to lists " "without your consent.

    Please click on the link which is being e-" "mailed to you and your subscription will be confirmed.
    \n" msgstr "" "Zaregistroval jste se %s do %s distribučního seznamu. " "Seznamový server Vám poslal mail s webovým odkazem, kterým potvrdíte své " "přihlášení. Tento zvláštní krok je pro Vaši ochranu, aby Vás zapsali na " "seznam bez Vašeho vědomí. Prosím klikněte na odkaz, který Vám byl poslán a " "Vaše registrace bude potvrzena.
    \n" #: ../../listsub.c:102 ../../static/t/listsub/display.html:24 msgid "Go back..." msgstr "Zpět..." #: ../../listsub.c:253 ../../listsub.c:291 ../../listsub.c:327 #: ../../listsub.c:334 msgid "You need to specify the mailinglist to subscribe to." msgstr "Musíte zadat poštovní seznam, který chcete použít." #: ../../listsub.c:260 ../../listsub.c:298 msgid "You need to specify the email address you'd like to subscribe with." msgstr "Musíte zadat poštovní adresu, kterou chcete použít." #: ../../blogview_renderer.c:58 ../../blogview_renderer.c:74 #, c-format msgid "%d comments" msgstr "%d komentářů" #: ../../blogview_renderer.c:61 ../../blogview_renderer.c:77 msgid "permalink" msgstr "pevný odkaz" #: ../../blogview_renderer.c:302 msgid "Newer posts" msgstr "Novější příspěvky" #: ../../blogview_renderer.c:311 msgid "Older posts" msgstr "Starší příspěvky" #: ../../useredit.c:629 msgid "" "An error occurred while trying to create or edit this address book entry." msgstr "Vznikla chyba při vytváření nebo úpravě položky v adresáři." #: ../../useredit.c:717 msgid "Changes were not saved." msgstr "Změny nebyly uloženy." #: ../../useredit.c:782 msgid "A new user has been created." msgstr "Nový uživatel byl vytvořen." #: ../../useredit.c:786 msgid "" "You are attempting to create a new user from within Citadel while running in " "host based authentication mode. In this mode, you must create new users on " "the host system, not within Citadel." msgstr "" "Pokoušíte se vytvořit uživatele v Citadel avšak systém je nastaven na HOST " "autentifikaci. V tomto módu musíte vytvořit uživatele na servru/hostu." #: ../../bbsview_renderer.c:312 msgid "Go to page: " msgstr "Jdi na stranu: " #: ../../bbsview_renderer.c:354 msgid "First" msgstr "První" #: ../../bbsview_renderer.c:360 msgid "Last" msgstr "Poslední" #: ../../graphics.c:56 msgid "Graphics upload has been cancelled." msgstr "Nahrání obrázku bylo zrušeno." #: ../../graphics.c:62 msgid "You didn't upload a file." msgstr "Nenahrál jste soubor." #: ../../graphics.c:112 msgid "your photo" msgstr "fotografie" #: ../../graphics.c:119 msgid "the icon for this room" msgstr "ikona této místnosti" #: ../../graphics.c:127 msgid "the Greetingpicture for the login prompt" msgstr "Uvítací obrázek pro přihlášení" #: ../../graphics.c:135 msgid "the Logoff banner picture" msgstr "obrázek - odhlášení" #: ../../graphics.c:146 msgid "the icon for this floor" msgstr "ikona pro toto podlaží" #: ../../calendar_tools.c:100 msgid "Hour: " msgstr "Hodina: " #: ../../calendar_tools.c:120 msgid "Minute: " msgstr "Minuta: " #: ../../calendar_tools.c:191 msgid "(status unknown)" msgstr "(neznámý stav)" #: ../../calendar_tools.c:207 msgid "(needs action)" msgstr "(potřebuje akci)" #: ../../calendar_tools.c:210 msgid "(accepted)" msgstr "(přijato)" #: ../../calendar_tools.c:213 msgid "(declined)" msgstr "(zamítnuto)" #: ../../calendar_tools.c:216 msgid "(tenative)" msgstr "(předběžně)" #: ../../calendar_tools.c:219 msgid "(delegated)" msgstr "(delegováno)" #: ../../calendar_tools.c:222 msgid "(completed)" msgstr "(dokončeno)" #: ../../calendar_tools.c:225 msgid "(in process)" msgstr "(zpracovává se)" #: ../../calendar_tools.c:228 msgid "(none)" msgstr "(nic)" #: ../../notes.c:343 msgid "Click on any note to edit it." msgstr "Klikněte na poznámku pro její úpravu." #: ../../vcard_edit.c:175 ../../vcard_edit.c:178 msgid "(no name)" msgstr "(beze jména)" #: ../../vcard_edit.c:443 msgid " (work)" msgstr " (práce)" #: ../../vcard_edit.c:445 msgid " (home)" msgstr " (domů)" #: ../../vcard_edit.c:447 msgid " (cell)" msgstr " (mobil)" #: ../../vcard_edit.c:458 ../../vcard_edit.c:1120 msgid "Address:" msgstr "Adresa:" #: ../../vcard_edit.c:526 msgid "Telephone:" msgstr "Telefon:" #: ../../vcard_edit.c:531 msgid "E-mail:" msgstr "E-mail:" #: ../../vcard_edit.c:779 msgid "This address book is empty." msgstr "Tato kniha adres je prázdná." #: ../../vcard_edit.c:793 msgid "An internal error has occurred." msgstr "Objevila se vnitřní chyba." #: ../../vcard_edit.c:944 msgid "Error" msgstr "Chyba" #: ../../vcard_edit.c:1048 msgid "Edit contact information" msgstr "Upravit kontaktní údaje" #: ../../vcard_edit.c:1068 msgid "Prefix" msgstr "Titul před jménem" #: ../../vcard_edit.c:1068 msgid "First Name" msgstr "Křestní jméno" #: ../../vcard_edit.c:1068 msgid "Middle Name" msgstr "Druhé jméno" #: ../../vcard_edit.c:1068 msgid "Last Name" msgstr "Příjmení" #: ../../vcard_edit.c:1068 msgid "Suffix" msgstr "Titul za jménem" #: ../../vcard_edit.c:1089 msgid "Display name:" msgstr "Zobrazované jméno:" #: ../../vcard_edit.c:1096 msgid "Title:" msgstr "Titul:" #: ../../vcard_edit.c:1103 msgid "Organization:" msgstr "Organizace:" #: ../../vcard_edit.c:1114 msgid "PO box:" msgstr "Poštovní schránka:" #: ../../vcard_edit.c:1130 msgid "City:" msgstr "Obec:" #: ../../vcard_edit.c:1136 msgid "State:" msgstr "Stát:" #: ../../vcard_edit.c:1142 msgid "ZIP code:" msgstr "PSČ:" #: ../../vcard_edit.c:1148 msgid "Country:" msgstr "Země:" #: ../../vcard_edit.c:1158 msgid "Home telephone:" msgstr "Telefon domů:" #: ../../vcard_edit.c:1164 msgid "Work telephone:" msgstr "Telefon do práce:" #: ../../vcard_edit.c:1170 msgid "Mobile telephone:" msgstr "Mobilní telefon:" #: ../../vcard_edit.c:1176 msgid "Fax number:" msgstr "Fax:" #: ../../vcard_edit.c:1187 msgid "Primary Internet e-mail address" msgstr "Primární e-mailová adresa" #: ../../vcard_edit.c:1194 msgid "Internet e-mail aliases" msgstr "Ostatní e-mailové adresy" #: ../../vcard_edit.c:1215 ../../sysmsgs.c:67 msgid "Save changes" msgstr "Uložit změny" #: ../../vcard_edit.c:1261 msgid "Unable to enter the room to save your message" msgstr "Nelze vstoupit do této místnosti pro uložení zprávy" #: ../../vcard_edit.c:1265 msgid "Aborting." msgstr "Přerušuji." #: ../../vcard_edit.c:1297 ../../vcard_edit.c:1341 ../../auth.c:367 #: ../../auth.c:397 msgid "An error has occurred." msgstr "Došlo k chybě." #: ../../vcard_edit.c:1399 msgid "Could Not decode vcard photo\n" msgstr "Nepodařilo se dekódovat VCard fotografii\n" #: ../../preferences.c:880 msgid "Cancelled. No settings were changed." msgstr "Zrušeno. Nastavení se nezměnilo." #: ../../preferences.c:1092 msgid "Make this my start page" msgstr "Toto bude má startovní stránka" #: ../../preferences.c:1130 msgid "This isn't allowed to become the start page." msgstr "Toto nemůže být startovní stránkou" #: ../../preferences.c:1132 msgid "You no longer have a start page selected." msgstr "Nyní nemáte nastavenou startovací stránku." #: ../../preferences.c:1182 msgid "Prefered startpage" msgstr "Upřednostňovaná startovní stránka" #: ../../calendar.c:76 msgid "Meeting invitation" msgstr "Pozvánka na schůzku" #: ../../calendar.c:79 msgid "Attendee's reply to your invitation" msgstr "Odpověď účastníka na pozvánku" #: ../../calendar.c:82 msgid "Published event" msgstr "Publikovaná událost" #: ../../calendar.c:85 msgid "This is an unknown type of calendar item." msgstr "Toto je neznámý typ kalendářového objektu." #: ../../calendar.c:107 ../../calendar_view.c:306 ../../calendar_view.c:964 #: ../../calendar_view.c:1008 ../../calendar_view.c:1089 msgid "Location:" msgstr "Umístění:" #: ../../calendar.c:132 ../../calendar_view.c:351 ../../calendar_view.c:970 msgid "Date:" msgstr "Datum:" #: ../../calendar.c:139 ../../calendar_view.c:373 ../../calendar_view.c:1013 #: ../../calendar_view.c:1099 msgid "Starting date/time:" msgstr "Počáteční datum/čas:" #: ../../calendar.c:150 ../../calendar_view.c:376 ../../calendar_view.c:1015 #: ../../calendar_view.c:1101 msgid "Ending date/time:" msgstr "Konečný datum/čas:" #: ../../calendar.c:168 ../../event.c:90 msgid "Recurrence" msgstr "Opakování" #: ../../calendar.c:169 ../../event.c:505 msgid "This is a recurring event" msgstr "Toto je opakující se událost" #: ../../calendar.c:178 msgid "Attendee:" msgstr "Účastník:" #: ../../calendar.c:218 #, c-format msgid "This is an update of '%s' which is already in your calendar." msgstr "Toto je aktualizace události '%s' která už je ve vašem kalendáři." #: ../../calendar.c:222 #, c-format msgid "" "This event would conflict with '%s' which is already in your calendar." msgstr "Tato událost bude v konfliktu s '%s' která už je ve vašem kalendáři." #: ../../calendar.c:227 msgid "Update:" msgstr "Aktualizace:" #: ../../calendar.c:228 msgid "CONFLICT:" msgstr "KONFLIFT:" #: ../../calendar.c:251 msgid "How would you like to respond to this invitation?" msgstr "Jak odpovědět na toto pozvání?" #: ../../calendar.c:252 msgid "Accept" msgstr "Potvrdit" #: ../../calendar.c:253 msgid "Tentative" msgstr "Předběžné" #: ../../calendar.c:254 msgid "Decline" msgstr "Zamítnout" #: ../../calendar.c:271 msgid "Click Update to accept this reply and update your calendar." msgstr "" "Klikněte na Aktualizovat pro potvrzení a aktualizování kalendáře." #: ../../calendar.c:272 msgid "Update" msgstr "Aktualizovat" #: ../../calendar.c:273 msgid "Ignore" msgstr "Ignorovat" #: ../../calendar.c:295 msgid "There was an error parsing this calendar item." msgstr "Chyba při zpracování této kalendářové položky." #: ../../calendar.c:328 msgid "" "You have accepted this meeting invitation. It has been entered into your " "calendar." msgstr "Provedeno potvrzení na pozvánku. Událost byla vložena do kalendáře." #: ../../calendar.c:332 msgid "" "You have tentatively accepted this meeting invitation. It has been " "'pencilled in' to your calendar." msgstr "" "Byl jste předběžně přijat na tuto schůzku. Tato schůzka byla poznačena ve " "vašem kalendáři." #: ../../calendar.c:336 msgid "" "You have declined this meeting invitation. It has not been entered " "into your calendar." msgstr "" "Zamítl jste pozvání na tuto schůzku. Schůzka nebyla poznačena v kalendáři." #: ../../calendar.c:341 msgid "A reply has been sent to the meeting organizer." msgstr "Odpověď byla zaslána organizátorovi." #. / Translators: RSVP aka Répondez s'il-vous-plaît Is the term #. / that the recipient of an ical-invitation should please #. / answer this request. #: ../../calendar.c:376 msgid "Your calendar has been updated to reflect this RSVP." msgstr "Kalendář byl aktualizován na základě RSVP." #: ../../calendar.c:378 msgid "" "You have chosen to ignore this RSVP. Your calendar has not been " "updated." msgstr "" "Rozhodli jste se ignorovat tento \"RSVP.\" Váš kalendář nebyl " "aktualizován." #: ../../calendar.c:932 msgid "Calendar day view begins at:" msgstr "Začáteční den kalendáře:" #: ../../calendar.c:933 msgid "Calendar day view ends at:" msgstr "Koncový den kalendáře:" #: ../../calendar.c:934 msgid "Week starts on:" msgstr "Týden začíná v:" #: ../../paging.c:35 msgid "Send instant message" msgstr "Odeslat okamžitou zprávu" #: ../../paging.c:43 msgid "Send an instant message to: " msgstr "Odeslat okamžitou zprávu: " #: ../../paging.c:57 msgid "Enter message text:" msgstr "Zadejte text zprávy:" #: ../../paging.c:65 ../../static/t/edit_message.html:109 msgid "Send message" msgstr "Odeslat zprávu" #: ../../paging.c:84 msgid "Message was not sent." msgstr "Zpráva nebyla odeslána." #: ../../paging.c:95 msgid "Message has been sent to " msgstr "Zpráva byla odeslána na " #: ../../iconbar.c:328 msgid "Iconbar Setting" msgstr "Nastavení Iconbaru" #. #. * Set to 'unknown' right from the beginning. Unless we learn #. * something else, that's what we'll go with. #. #: ../../availability.c:148 msgid "availability unknown" msgstr "dostupnost neznámá" #: ../../availability.c:169 msgid "free" msgstr "volný" #: ../../availability.c:179 msgid "BUSY" msgstr "ZAMĚSTNANÝ" #: ../../serv_func.c:193 msgid "" "This server is already serving its maximum number of users and cannot accept " "any additional logins at this time. Please try again later or contact your " "system administrator." msgstr "" "Tento server již obsluhuje nejvyšší možný počet uživatelů a nyní nemůže " "příjmat žádná další přihlášení. Zkuste to, prosím, později, nebo kontaktujte " "správce systému." #: ../../serv_func.c:198 ../../serv_func.c:227 msgid "Received unexpected answer from Citadel server; bailing out." msgstr "Přijata neočekávaná odpověď od Citadel servru; zachraňuji se." #: ../../serv_func.c:236 #, c-format msgid "" "You are connected to a Citadel server running Citadel %d.%02d. \n" "In order to run this version of WebCit you must also have Citadel %d.%02d or " "newer.\n" "\n" "\n" msgstr "" "Jste připojeni k Citadel serveru verze %d.%02d. \n" "Pro možný běh této verze WebCit musíte mít Citadel verze %d.%02d nebo " "novější.\n" "\n" "\n" #: ../../event.c:70 msgid "seconds" msgstr "sekundy" #: ../../event.c:71 msgid "minutes" msgstr "minuty" #: ../../event.c:72 msgid "hours" msgstr "hodiny" #: ../../event.c:73 msgid "days" msgstr "dny" #: ../../event.c:74 msgid "weeks" msgstr "týdny" #: ../../event.c:75 msgid "months" msgstr "měsíce" #: ../../event.c:76 msgid "years" msgstr "let" #: ../../event.c:77 msgid "never" msgstr "nikdy" #: ../../event.c:81 msgid "first" msgstr "první" #: ../../event.c:82 msgid "second" msgstr "druhý" #: ../../event.c:83 msgid "third" msgstr "třetí" #: ../../event.c:84 msgid "fourth" msgstr "čtvrtý" #: ../../event.c:85 msgid "fifth" msgstr "pátý" #: ../../event.c:88 msgid "Event" msgstr "Událost" #: ../../event.c:89 ../../event.c:437 ../../event.c:449 msgid "Attendees" msgstr "Účastníci" #: ../../event.c:167 msgid "Add or edit an event" msgstr "Přidat nebo upravit událost" #: ../../event.c:206 ../../static/t/iconbar.html:13 #: ../../static/t/iconbar/edit.html:29 msgid "Summary" msgstr "Přehled" #: ../../event.c:217 msgid "Location" msgstr "Umístění" #: ../../event.c:228 ../../calendar_view.c:760 msgid "Start" msgstr "Start" #: ../../event.c:271 ../../calendar_view.c:957 ../../calendar_view.c:986 msgid "All day event" msgstr "Celodenní událost" #: ../../event.c:277 ../../calendar_view.c:761 msgid "End" msgstr "Konec" #: ../../event.c:327 ../../static/t/iconbar.html:34 #: ../../static/t/iconbar/edit.html:49 msgid "Notes" msgstr "Poznámky" #: ../../event.c:369 msgid "Organizer" msgstr "Organizátor" #: ../../event.c:374 msgid "(you are the organizer)" msgstr "(jste organizátor)" #: ../../event.c:392 msgid "Show time as:" msgstr "Ukaž čas jako:" #: ../../event.c:415 msgid "Free" msgstr "Volný" #: ../../event.c:423 msgid "Busy" msgstr "Obsazený" #: ../../event.c:440 msgid "(One per line)" msgstr "(jeden na řádku)" #: ../../event.c:450 ../../static/t/edit_message.html:143 #: ../../static/t/iconbar.html:29 ../../static/t/iconbar/edit.html:42 msgid "Contacts" msgstr "Kontakty" #: ../../event.c:513 msgid "Recurrence rule" msgstr "Pravidlo pro opakování" #: ../../event.c:517 msgid "Repeats every" msgstr "Opakovat vždy" #. begin 'weekday_selector' div #: ../../event.c:535 msgid "on these weekdays:" msgstr "v těchto dnech" #: ../../event.c:593 #, c-format msgid "on day %s%d%s of the month" msgstr "v dni %s%d%s měsíce" #: ../../event.c:602 ../../event.c:664 msgid "on the " msgstr "na " #: ../../event.c:626 msgid "of the month" msgstr "měsíce" #: ../../event.c:655 msgid "every " msgstr "každý " #: ../../event.c:656 msgid "year on this date" msgstr "ročně" #: ../../event.c:688 ../../static/t/msg_listselector_bottom.html:7 #: ../../static/t/msg_listselector_top.html:7 msgid "of" msgstr "z" #: ../../event.c:712 msgid "Recurrence range" msgstr "Délka opakování" #: ../../event.c:720 msgid "No ending date" msgstr "Chybí datum ukončení" #: ../../event.c:727 msgid "Repeat this event" msgstr "Opakovat tuto událost" #: ../../event.c:730 msgid "times" msgstr "krát" #: ../../event.c:738 msgid "Repeat this event until " msgstr "Opakovat do " #: ../../event.c:766 msgid "Check attendee availability" msgstr "Zkontrolovat dostupnost účastníka" #: ../../event.c:858 ../../calendar_view.c:272 ../../calendar_view.c:468 #: ../../calendar_view.c:937 msgid "Untitled Event" msgstr "Nepojmenovaná akce" #: ../../sysmsgs.c:52 #, c-format msgid "Edit %s" msgstr "Upravit %s" #: ../../sysmsgs.c:55 #, c-format msgid "" "Enter %s below. Text is formatted to the reader's browser. A newline is " "forced by preceding the next line by a blank." msgstr "" "Vložte %s dolu. Text je formátován pro prohlížeč návštěvníka. Nová řádka je " "vynucena následující druhou prázdnou řádkou." #: ../../sysmsgs.c:89 #, c-format msgid "Cancelled. %s was not saved." msgstr "Zrušeno. %s se neuloží." #: ../../sysmsgs.c:109 msgid " has been saved." msgstr " byl uložen." #: ../../sysmsgs.c:116 ../../sysmsgs.c:117 msgid "Room info" msgstr "Informace o místnosti" #: ../../sysmsgs.c:122 ../../sysmsgs.c:124 msgid "Your bio" msgstr "biografii" #: ../../calendar_view.c:297 ../../calendar_view.c:958 #: ../../calendar_view.c:1002 ../../calendar_view.c:1083 #: ../../static/t/sieve/display_one.html:20 msgid "From" msgstr "Z" #: ../../calendar_view.c:355 ../../calendar_view.c:974 msgid "Starting date:" msgstr "Počáteční datum:" #: ../../calendar_view.c:361 ../../calendar_view.c:976 msgid "Ending date:" msgstr "Konečné datum:" #: ../../calendar_view.c:369 ../../calendar_view.c:1095 msgid "Date/time:" msgstr "Datum/čas:" #: ../../calendar_view.c:386 ../../calendar_view.c:980 #: ../../calendar_view.c:1018 ../../calendar_view.c:1105 #: ../../static/t/room/edit/tab_share.html:32 msgid "Notes:" msgstr "Poznámky:" #: ../../calendar_view.c:585 ../../calendar_view.c:721 msgid "previous" msgstr "předchozí" #: ../../calendar_view.c:597 ../../calendar_view.c:733 #: ../../calendar_view.c:1308 msgid "next" msgstr "další" #: ../../calendar_view.c:756 msgid "Week" msgstr "Týden" #: ../../calendar_view.c:758 msgid "Hours" msgstr "Hodiny" #: ../../calendar_view.c:759 ../../static/t/sieve/display_one.html:22 #: ../../static/t/msg_listview.html:9 msgid "Subject" msgstr "Předmět" #: ../../calendar_view.c:1001 ../../calendar_view.c:1024 msgid "Ongoing event" msgstr "Probíhající akce" #: ../../messages.c:70 msgid "ERROR:" msgstr "CHYBA:" #: ../../messages.c:88 msgid "Empty message" msgstr "Prázdná zpráva" #: ../../messages.c:1010 msgid "Cancelled. Message was not posted." msgstr "Zrušeno. Zpráva nebyla odeslána." #: ../../messages.c:1013 msgid "Automatically cancelled because you have already saved this message." msgstr "Automaticky zrušeno, jelikož zpráva už byla uložena." #: ../../messages.c:1037 msgid "Saved to Drafts failed: " msgstr "Uložení do Konceptů selhalo: " #: ../../messages.c:1102 msgid "Refusing to post empty message.\n" msgstr "Odmítám odeslat prázdnou zprávu.\n" #: ../../messages.c:1128 msgid "Message has been saved to Drafts.\n" msgstr "Zpráva byla uložena do Konceptů.\n" #: ../../messages.c:1137 msgid "Message has been sent.\n" msgstr "Zpráva byla odeslána.\n" #: ../../messages.c:1140 msgid "Message has been posted.\n" msgstr "Zpráva byla vystavena.\n" #: ../../messages.c:1679 msgid "The message was not moved." msgstr "Zpráva nebyla přesunuta." #: ../../messages.c:1719 #, c-format msgid "An error occurred while retrieving this part: %s/%s\n" msgstr "Vyskytla se chyba při zpracování této části: %s/%s\n" #: ../../messages.c:1796 #, c-format msgid "An error occurred while retrieving this part: %s\n" msgstr "Vyskytla se chyba při zpracování této části: %s\n" #: ../../messages.c:1956 msgid "Attach signature to email messages?" msgstr "Připojit podpis k e-mailu?" #: ../../messages.c:1959 msgid "Use this signature:" msgstr "Použít tento podpis:" #: ../../messages.c:1961 msgid "Default character set for email headers:" msgstr "Základní kódování pro hlavičku e-mailu:" #: ../../messages.c:1964 msgid "Preferred email address" msgstr "Preferovaná e-mailová adresa" #: ../../messages.c:1966 msgid "Preferred display name for email messages" msgstr "Zobrazené jméno pro e-maily" #: ../../messages.c:1970 msgid "Preferred display name for bulletin board posts" msgstr "Preferovaný pohled na zobrazení příspěvků na BBS" #: ../../messages.c:1973 msgid "Mailbox view mode" msgstr "Zobrazení pošty" #: ../../inetconf.c:110 ../../inetconf.c:119 ../../inetconf.c:133 #: ../../inetconf.c:159 ../../netconf.c:156 ../../netconf.c:183 #: ../../netconf.c:191 ../../netconf.c:239 ../../netconf.c:247 msgid "Invalid Parameter" msgstr "Neplatný parametr" #: ../../inetconf.c:126 msgid " has been deleted." msgstr " bylo smazáno." #. added status message #: ../../inetconf.c:144 msgid " added." msgstr " přidáno." #: ../../who.c:154 msgid "Edit your session display" msgstr "Upravte nastavení sezení" #: ../../who.c:158 msgid "" "This screen allows you to change the way your session appears in the 'Who is " "online' listing. To turn off any 'fake' name you've previously set, simply " "click the appropriate 'change' button without typing anything in the " "corresponding box. " msgstr "" "Tato obrazovka dovoluje změnit způsob, jakým se zobrazuje seznam \"Kdo je " "online\". Pro vypnutí \"falešných\" jmen, před tím nastavených, klikněte na " "odpovídající \"změnové\" tlačítko bez psaní do příslušného boxu. " #: ../../who.c:171 msgid "Room name:" msgstr "Jméno místnosti:" #: ../../who.c:176 msgid "Change room name" msgstr "Změnit jméno místnosti" #: ../../who.c:180 msgid "Host name:" msgstr "Označení systému:" #: ../../who.c:185 msgid "Change host name" msgstr "Změnit označení systému" #: ../../who.c:190 ../../static/t/aide/edituser/detailview.html:20 #: ../../static/t/openid_manual_create.html:9 #: ../../static/t/get_logged_in.html:57 ../../static/t/get_logged_in.html:72 msgid "User name:" msgstr "Uživatelské jméno:" #: ../../who.c:195 msgid "Change user name" msgstr "Změnit uživatelské jméno" #: ../../siteconfig.c:46 ../../siteconfig.c:64 ../../roomlist.c:44 #: ../../roomlist.c:394 ../../static/t/room/edit/tab_expire.html:72 #: ../../static/t/room/edit/tab_config.html:149 #: ../../static/t/room/edit/tab_access.html:42 msgid "Higher access is required to access this function." msgstr "Pro přístup k této funkci jsou zapotřebí vyšší práva." #: ../../siteconfig.c:256 msgid "" "WARNING: Failed to parse Server Config; do you run a to new citserver?" msgstr "" "VAROVÁNÍ: Nepodařilo se zpracovat nastavení serveru; spustit nový citserver?" #: ../../siteconfig.c:319 msgid "Your system configuration has been updated." msgstr "Vaše systémová konfigurace byla změněna" #: ../../wiki.c:69 ../../wiki.c:162 ../../wiki.c:282 #, c-format msgid "There is no room called '%s'." msgstr "Místnost '%s' není k nalezení." #: ../../wiki.c:76 #, c-format msgid "'%s' is not a Wiki room." msgstr "'%s' není wiki místnost" #: ../../wiki.c:110 #, c-format msgid "There is no page called '%s' here." msgstr "Strana '%s' není k nalezení zde." #: ../../wiki.c:112 msgid "" "Select the 'Edit this page' link in the room banner if you would like to " "create this page." msgstr "" "Vyberte 'Upravte tuto stránku' odkaz v názvu místnosti, pokud chcete " "vytvořit tuto stránku." #: ../../wiki.c:181 ../../static/t/msg_listview.html:11 msgid "Date" msgstr "Datum" #: ../../wiki.c:182 msgid "Author" msgstr "Autor:" #: ../../wiki.c:209 ../../wiki.c:218 msgid "(show)" msgstr "(zobrazit)" #: ../../wiki.c:211 ../../static/t/navbar.html:145 msgid "Current version" msgstr "Aktuální verze" #: ../../wiki.c:223 msgid "(revert)" msgstr "(vrátit zpět)" #: ../../wiki.c:300 msgid "Page title" msgstr "Název stránky" #: ../../webcit.c:316 msgid "Authorization Required" msgstr "Vyžadována autorizace" #: ../../webcit.c:324 #, c-format msgid "" "The resource you requested requires a valid username and password. You could " "not be logged in: %s\n" msgstr "" "Pro přístup je potřeba platné uživatelské jméno a heslo. Nemohl jste být " "přihlášen: %s\n" #: ../../webcit.c:647 ../../auth.c:526 msgid "" "This program was unable to connect or stay connected to the Citadel server. " "Please report this problem to your system administrator." msgstr "" "Tento program neměl možnost se připojit nebo zůstat připojený k Citadel " "servru. Prosím ohlašte tento problém vašemu administrátorovi." #: ../../webcit.c:654 ../../auth.c:532 msgid "Read More..." msgstr "Přečtěte více…" #: ../../smtpqueue.c:134 ../../static/t/aide/ignetconf/section.html:5 #: ../../static/t/view_mailq/message.html:2 msgid "(Delete)" msgstr "(Smazat)" #: ../../smtpqueue.c:334 msgid "First Attempt pending" msgstr "První pokus probíhá" #: ../../roomlist.c:99 msgid "My Folders" msgstr "Mé složky" #: ../../downloads.c:289 #, c-format msgid "An error occurred while retrieving this file: %s\n" msgstr "Došlo k chybě během získávání souboru: %s\n" #: ../../roomtokens.c:572 msgid "file" msgstr "soubor" #: ../../roomtokens.c:574 msgid "files" msgstr "soubory" #: ../../summary.c:128 msgid "(None)" msgstr "(Žádný)" #: ../../summary.c:184 msgid "(Nothing)" msgstr "(Nic)" #: ../../msg_renderers.c:579 ../../static/t/who/bio.html:15 msgid "edit" msgstr "upravit" #: ../../msg_renderers.c:1119 msgid "I don't know how to display " msgstr "Nevím jak zobrazit " #: ../../msg_renderers.c:1353 msgid "(no subject)" msgstr "(bez předmětu)" #: ../../addressbook_popup.c:186 msgid "Add" msgstr "Přidat" #. an erased user #: ../../auth.c:30 ../../static/t/aide/edituser/detailview.html:43 #: ../../static/t/aide/siteconfig/tab_access.html:40 #: ../../static/t/aide/siteconfig/tab_access.html:51 msgid "Deleted" msgstr "Smazáno" #. a new user #: ../../auth.c:33 ../../static/t/aide/edituser/detailview.html:44 #: ../../static/t/aide/siteconfig/tab_access.html:41 #: ../../static/t/aide/siteconfig/tab_access.html:52 #: ../../static/t/get_logged_in.html:79 msgid "New User" msgstr "Nový uživatel" #. a trouble maker #: ../../auth.c:36 ../../static/t/aide/edituser/detailview.html:45 #: ../../static/t/aide/siteconfig/tab_access.html:42 #: ../../static/t/aide/siteconfig/tab_access.html:53 msgid "Problem User" msgstr "Problémový uživatel" #. user with normal privileges #: ../../auth.c:39 ../../static/t/aide/edituser/detailview.html:46 #: ../../static/t/aide/siteconfig/tab_access.html:43 #: ../../static/t/aide/siteconfig/tab_access.html:54 msgid "Local User" msgstr "Klasický uživatel" #. a user that may access network resources #: ../../auth.c:42 ../../static/t/aide/edituser/detailview.html:47 #: ../../static/t/aide/siteconfig/tab_access.html:44 #: ../../static/t/aide/siteconfig/tab_access.html:55 msgid "Network User" msgstr "Síťový uživatel" #. a moderator #: ../../auth.c:45 ../../static/t/aide/edituser/detailview.html:48 #: ../../static/t/aide/siteconfig/tab_access.html:45 #: ../../static/t/aide/siteconfig/tab_access.html:56 msgid "Preferred User" msgstr "Preferovaný uživatel" #. chief #: ../../auth.c:48 ../../static/t/aide/edituser/detailview.html:49 #: ../../static/t/aide/siteconfig/tab_access.html:46 #: ../../static/t/aide/siteconfig/tab_access.html:57 msgid "Admin" msgstr "Poradce" #: ../../auth.c:513 ../../static/t/iconbar.html:80 #: ../../static/t/confirmlogoff.html:3 #: ../../static/t/menu/basic_commands.html:19 msgid "Log off" msgstr "Odhlásit" #: ../../auth.c:537 msgid "Log in again" msgstr "Přihlašte se znovu" #: ../../auth.c:585 ../../static/t/aide/usermanagement.html:3 msgid "Validate new users" msgstr "Potvrdit nové uživatele" #: ../../auth.c:605 msgid "No users require validation at this time." msgstr "Žádný uživatel právě nevyžaduje potvrzení." #: ../../auth.c:655 msgid "very weak" msgstr "velmi slabé" #: ../../auth.c:658 msgid "weak" msgstr "slabé" #: ../../auth.c:661 msgid "ok" msgstr "dobré" #: ../../auth.c:665 msgid "strong" msgstr "silné" #: ../../auth.c:683 #, c-format msgid "Current access level: %d (%s)\n" msgstr "Aktuální úroveň přístupových práv: %d (%s)\n" #: ../../auth.c:691 msgid "Select access level for this user:" msgstr "Úroveň přístupových práv tohoto uživatele:" #: ../../auth.c:776 ../../static/t/menu/your_info.html:4 msgid "Change your password" msgstr "Změnit heslo" #: ../../auth.c:800 msgid "Enter new password:" msgstr "Zadejte nové heslo:" #: ../../auth.c:804 msgid "Enter it again to confirm:" msgstr "Pro ověření heslo zopakujte:" #: ../../auth.c:810 msgid "Change password" msgstr "Změnit heslo" #: ../../auth.c:830 msgid "Cancelled. Password was not changed." msgstr "Zrušeno. Heslo se nezmění." #: ../../auth.c:839 msgid "They don't match. Password was not changed." msgstr "Hesla nesouhlasí. Heslo nezměněno." #: ../../auth.c:845 msgid "Blank passwords are not allowed." msgstr "Heslo nemůže být prázdné." #: ../../openid.c:34 msgid "Manage Account/OpenID Associations" msgstr "Nastavení účtu/OpenID associace" #: ../../openid.c:52 msgid "Do you really want to delete this OpenID?" msgstr "Chcete opravdu smazat toto OpenID?" #: ../../openid.c:53 msgid "(delete)" msgstr "(smazat)" #: ../../openid.c:61 msgid "Add an OpenID: " msgstr "Přidat OpenID: " #: ../../openid.c:64 msgid "Attach" msgstr "Připojit" #: ../../openid.c:68 #, c-format msgid "%s does not permit authentication via OpenID." msgstr "%s nepodporuje přihlášení přes OpenID." #: ../../html2html.c:136 #, c-format msgid "realloc() error! couldn't get %d bytes: %s" msgstr "chyba v realloc() nelze získat %d bytes: %s" #: ../../static/t/viewomatic.html:4 msgid "View as:" msgstr "Zobrazit jako:" #: ../../static/t/sieve/list.html:32 ../../static/t/sieve/none.html:4 #: ../../static/t/menu/your_info.html:7 msgid "View/edit server-side mail filters" msgstr "Zobrazit/upravit e-mailové filtry na straně serveru" #: ../../static/t/sieve/list.html:41 msgid "When new mail arrives: " msgstr "Kdy e-mail přišel: " #: ../../static/t/sieve/list.html:43 msgid "Leave it in my inbox without filtering" msgstr "Zanechat v mé doručené poště bez filtrování" #: ../../static/t/sieve/list.html:44 msgid "Filter it according to rules selected below" msgstr "Provést filtraci na základě pravidel dole" #: ../../static/t/sieve/list.html:45 msgid "Filter it through a manually edited script (advanced users only)" msgstr "Filtrovat skrz manuálně editované skripty (pokročilý uživatelé)" #: ../../static/t/sieve/list.html:52 msgid "Your incoming mail will not be filtered through any scripts." msgstr "Vaše příchozí pošta nebude filtrována žádnými skripty." #: ../../static/t/sieve/list.html:64 msgid "Add rule" msgstr "Přidat pravidlo" #: ../../static/t/sieve/list.html:71 msgid "The currently active script is: " msgstr "Právě je aktivní skript: " #: ../../static/t/sieve/list.html:76 ../../static/t/sieve/add.html:3 msgid "Add or delete scripts" msgstr "Přidat nebo odstranit text" #: ../../static/t/sieve/display_one.html:16 msgid "If" msgstr "Jestliže" #: ../../static/t/sieve/display_one.html:21 msgid "To or Cc" msgstr "Příjemce nebo kopie" #: ../../static/t/sieve/display_one.html:23 msgid "Reply-to" msgstr "Odpovědět na" #: ../../static/t/sieve/display_one.html:24 #: ../../static/t/msg_listview.html:10 #: ../../static/t/view_mailq/header.html:27 msgid "Sender" msgstr "Odesílatel" #: ../../static/t/sieve/display_one.html:25 msgid "Resent-From" msgstr "Přeposláno z" #: ../../static/t/sieve/display_one.html:26 msgid "Resent-To" msgstr "Přeposlat kam" #: ../../static/t/sieve/display_one.html:27 msgid "Envelope From" msgstr "Obálka z" #: ../../static/t/sieve/display_one.html:28 msgid "Envelope To" msgstr "Obálka k" #: ../../static/t/sieve/display_one.html:29 msgid "X-Mailer" msgstr "X-Mailer" #: ../../static/t/sieve/display_one.html:30 msgid "X-Spam-Flag" msgstr "X-Spam-Flag" #: ../../static/t/sieve/display_one.html:31 msgid "X-Spam-Status" msgstr "X-Spam-Status" #: ../../static/t/sieve/display_one.html:32 msgid "List-ID" msgstr "Seznam ID" #: ../../static/t/sieve/display_one.html:33 msgid "Message size" msgstr "Velikost zprávy" #: ../../static/t/sieve/display_one.html:34 #: ../../static/t/select_messageindex_all.html:1 msgid "All" msgstr "Vše" #: ../../static/t/sieve/display_one.html:41 msgid "contains" msgstr "obsahující" #: ../../static/t/sieve/display_one.html:42 msgid "does not contain" msgstr "neobsahující" #: ../../static/t/sieve/display_one.html:43 msgid "is" msgstr "je" #: ../../static/t/sieve/display_one.html:44 msgid "is not" msgstr "není" #: ../../static/t/sieve/display_one.html:45 msgid "matches" msgstr "odpovídá" #: ../../static/t/sieve/display_one.html:46 msgid "does not match" msgstr "neodpovídá" #: ../../static/t/sieve/display_one.html:52 msgid "(All messages)" msgstr "(Všechny zprávy)" #: ../../static/t/sieve/display_one.html:56 msgid "is larger than" msgstr "je větší než" #: ../../static/t/sieve/display_one.html:57 msgid "is smaller than" msgstr "je menší než" #: ../../static/t/sieve/display_one.html:59 msgid "bytes" msgstr "bajtů" #: ../../static/t/sieve/display_one.html:65 msgid "Keep" msgstr "Nechat" #: ../../static/t/sieve/display_one.html:66 msgid "Discard silently" msgstr "Tiše zahodit" #: ../../static/t/sieve/display_one.html:67 msgid "Reject" msgstr "Odmítnout" #: ../../static/t/sieve/display_one.html:68 msgid "Move message to" msgstr "Přesunout zprávu do" #: ../../static/t/sieve/display_one.html:69 msgid "Forward to" msgstr "Přeposlat kam" #: ../../static/t/sieve/display_one.html:70 msgid "Vacation" msgstr "Dovolená" #: ../../static/t/sieve/display_one.html:82 msgid "Message:" msgstr "Zpráva:" #: ../../static/t/sieve/display_one.html:90 msgid "and then" msgstr "potom" #: ../../static/t/sieve/display_one.html:93 msgid "continue processing" msgstr "pokračovat ve zpracovávání" #: ../../static/t/sieve/display_one.html:94 msgid "stop" msgstr "Zastavit" #: ../../static/t/sieve/none.html:9 msgid "" "This installation of Citadel was built without support for server-side mail " "filtering.
    Please contact your system administrator if you require this " "feature.
    " msgstr "" "Tato instalace Citadely nepodporuje filtrování pošty na straně " "serveru.
    Pokud tuto funkci potřebujete, kontaktujte administrátora Vašeho " "systému." #: ../../static/t/sieve/add.html:9 msgid "Add a new script" msgstr "Přidat nový skript" #: ../../static/t/sieve/add.html:10 msgid "" "To create a new script, enter the desired script name in the box below and " "click 'Create'." msgstr "" "Pro vytvoření skriptu napište požadované jméno a klikněte na 'vytvořit'." #: ../../static/t/sieve/add.html:14 msgid "Script name: " msgstr "Jméno skriptu: " #: ../../static/t/sieve/add.html:18 msgid "Edit scripts" msgstr "Upravit skripty" #: ../../static/t/sieve/add.html:20 msgid "Return to the script editing screen" msgstr "Jít zpět na editaci skriptů" #: ../../static/t/sieve/add.html:23 msgid "Delete scripts" msgstr "Smazat skripty" #: ../../static/t/sieve/add.html:24 msgid "" "To delete an existing script, select the script name from the list and click " "'Delete'." msgstr "" "Pro smazání existujících skriptů, vyberte jejich jména ze seznamu a klikněte " "na 'Smazat'" #: ../../static/t/msg/confirm_move.html:4 msgid "Confirm move of message" msgstr "Potvrďte přesun zpráv" #: ../../static/t/msg/confirm_move.html:12 msgid "Move this message to:" msgstr "Přesunout zprávu do:" #: ../../static/t/login.html:5 msgid "powered by" msgstr "běží na" #: ../../static/t/login.html:15 ../../static/t/iconbar.html:88 #: ../../static/t/get_logged_in.html:64 ../../static/t/get_logged_in.html:88 #: ../../static/t/get_logged_in.html:93 ../../static/t/get_logged_in.html:98 #: ../../static/t/get_logged_in.html:107 msgid "Log in" msgstr "Přihlásit se" #: ../../static/t/trailing.html:14 msgid "" "WARNING: You have JavaScript disabled in your web browser. Many functions " "of this system will not work properly." msgstr "" "Varování: Máte zakázaný JavaScript ve vašem webovém prohlížeči. Většina " "funkcí tohoto systému nebude správně fungovat." #: ../../static/t/view_submessage.html:4 #: ../../static/t/view_message/replyquote.html:3 #: ../../static/t/view_message/replyquote.html:7 #: ../../static/t/view_message/print.html:8 ../../static/t/view_message.html:7 msgid "from " msgstr "od " #: ../../static/t/searchomatic.html:4 msgid "Search: " msgstr "Hledat: " #: ../../static/t/listsub/display.html:16 msgid "You are subscribing " msgstr "Jste přihlášen " #: ../../static/t/listsub/display.html:17 msgid " to the " msgstr " k " #: ../../static/t/listsub/display.html:18 msgid " mailing list." msgstr " poštovnímu seznamu." #: ../../static/t/listsub/display.html:19 msgid "" "The listserver has sent you an e-mail with one additional Web link for you " "to click on to confirm your subscription." msgstr "" "Distribuční server Vám zaslal e-mail s webovým odkazem, kliknutím na něj " "potvrdíte vaše přihlášení." #: ../../static/t/listsub/display.html:20 msgid "" "This extra step is for your protection, as it prevents others from being " "able to subscribe you to lists without your consent." msgstr "" "Tento krok navíc je pro vaši ochranu, aby vás ostatní nemohli přidat do " "seznamu bez vašeho souhlasu." #: ../../static/t/listsub/display.html:22 msgid "" "Please click on the link which is being e-mailed to you and your " "subscription will be confirmed." msgstr "" "Prosím klikněte na odkaz, který vám byl zaslán pro potvrzení přihlášení." #: ../../static/t/listsub/display.html:27 #: ../../static/t/listsub/display.html:47 msgid "ERROR" msgstr "CHYBA" #: ../../static/t/listsub/display.html:35 msgid "You are unsubscribing" msgstr "Nejste přihlášen" #: ../../static/t/listsub/display.html:37 msgid "from the" msgstr "od" #: ../../static/t/listsub/display.html:39 msgid "mailing list." msgstr "poštovní seznam" #: ../../static/t/listsub/display.html:40 msgid "" "The listserver has sent you an e-mail with one additional Web link for you " "to click on to confirm your unsubscription." msgstr "" "Poštovní server vám poslal e-mail, který obsahuje odkaz na potvrzení vašeho " "odhlášení." #: ../../static/t/listsub/display.html:41 msgid "" "This extra step is for your protection, as it prevents others from being " "able to unsubscribe you from lists without your consent." msgstr "" "Tento krok je pro vaši opchranu, aby vás ostatní nemohli odhlásit ze seznamu " "bez vašeho souhlasu." #: ../../static/t/listsub/display.html:43 msgid "" "Please click on the link which is being e-mailed to you and your " "unsubscription will be confirmed." msgstr "" "Prosím klikněte na odkaz, který vám byl zaslám e-mailem k potvrzení vašeho " "odhlášení." #: ../../static/t/listsub/display.html:44 msgid "Back..." msgstr "Zpátky..." #: ../../static/t/listsub/display.html:54 msgid "Confirmation successful!" msgstr "Přihlášení úspěšné!" #: ../../static/t/listsub/display.html:56 msgid "Confirmation failed." msgstr "Přihlášení selhalo." #: ../../static/t/listsub/display.html:57 msgid "This could mean one of two things:" msgstr "To může znamenat dvě věci:" #: ../../static/t/listsub/display.html:59 msgid "" "You waited too long to confirm your subscribe/unsubscribe request (the " "confirmation link is only valid for three days)" msgstr "" "Čekáte příliš dlouho na potvrzení vašeho požadavku na přihlášení/odhlášení " "(potvrzující odkaz je funkční pouze tři dny)" #: ../../static/t/listsub/display.html:60 msgid "" "You have already successfully confirmed your subscribe/unsubscribe " "request and are attempting to do it again." msgstr "" "Již \"jste\" úspěšně potvrdil přihlášovací/odhlášovací požadave a není nutné " "provádět znova." #: ../../static/t/listsub/display.html:62 msgid "The error returned by the server was: " msgstr "Chyba vrácená serverem byla: " #: ../../static/t/listsub/display.html:70 msgid "Name of list:" msgstr "Název seznamu:" #: ../../static/t/listsub/display.html:75 msgid "Your e-mail address:" msgstr "Vaše e-mailová adresa:" #: ../../static/t/listsub/display.html:79 msgid "(If subscribing) preferred format: " msgstr "(Pokud jste přihlášen) preferovaný formát: " #: ../../static/t/listsub/display.html:80 msgid "One message at a time" msgstr "Jedna zpráva v čase" #: ../../static/t/listsub/display.html:81 msgid "Digest format" msgstr "Vybraný formát" #: ../../static/t/listsub/display.html:89 msgid "" "When you attempt to subscribe or unsubscribe to a mailing list, you will " "receive an e-mail containing one additional web link to click on for final " "confirmation." msgstr "" "Při pokusu o přihlášení/odhlášení z poštovního seznamu přijmete e-mail " "obsahující webový odkaz potřebný ke konečnému potvrzení." #: ../../static/t/listsub/display.html:90 msgid "" "This extra step is for your protection, as it prevents others from being " "able to subscribe or unsubscribe you to lists." msgstr "" "Tento krok je pro vaši ochranu, brání ostatním uživatelům aby vás mohli " "přihlásit nebo odhlásit z poštovního seznamu." #: ../../static/t/floors_edit_one.html:11 msgid "(delete floor)" msgstr "(odstranit podlaží)" #: ../../static/t/floors_edit_one.html:13 msgid "(edit graphic)" msgstr "(upravit obrázek)" #: ../../static/t/floors.html:4 msgid "Add/change/delete floors" msgstr "Přidat/upravit/smazat podlaží" #: ../../static/t/floors.html:10 msgid "Floor number" msgstr "Číslo podlaží" #: ../../static/t/floors.html:11 msgid "Floor name" msgstr "Jméno podlaží" #: ../../static/t/floors.html:12 msgid "Number of rooms" msgstr "Počet místností" #: ../../static/t/floors.html:13 msgid "Floor CSS" msgstr "CSS úrovně" #: ../../static/t/files.html:4 msgid "Files available for download in" msgstr "Soubory dostupné pro stažení v" #: ../../static/t/files.html:9 msgid "Upload a file:" msgstr "Nahrát soubor:" #: ../../static/t/files.html:30 msgid "Filename" msgstr "Název souboru:" #: ../../static/t/files.html:31 msgid "Size" msgstr "Velikosti" #: ../../static/t/files.html:32 msgid "Content" msgstr "Obsah" #: ../../static/t/files.html:33 msgid "Description" msgstr "Popis" #: ../../static/t/edit_message.html:9 ../../static/t/iconbar.html:50 #: ../../static/t/iconbar.html:59 msgid "Loading" msgstr "Načítání" #: ../../static/t/edit_message.html:23 msgid "from" msgstr "od" #: ../../static/t/edit_message.html:29 ../../static/t/edit_message.html:38 msgid "Anonymous" msgstr "Anonymní" #: ../../static/t/edit_message.html:47 msgid "in" msgstr "v" #: ../../static/t/edit_message.html:51 msgid "To:" msgstr "Příjemce:" #: ../../static/t/edit_message.html:57 #: ../../static/t/view_message/print.html:15 #: ../../static/t/view_message.html:15 msgid "CC:" msgstr "Kopie:" #: ../../static/t/edit_message.html:63 msgid "BCC:" msgstr "Skrytá kopie:" #: ../../static/t/edit_message.html:71 msgid "Subject (optional):" msgstr "Předmět (volitelný):" #: ../../static/t/edit_message.html:71 #: ../../static/t/view_message/replyquote.html:8 #: ../../static/t/view_message/print.html:16 #: ../../static/t/view_message.html:16 msgid "Subject:" msgstr "Předmět:" #: ../../static/t/edit_message.html:86 msgid "--- forwarded message ---" msgstr "--- přeposlaná zpráva ---" #: ../../static/t/edit_message.html:110 msgid "Post message" msgstr "Odeslat zprávu" #: ../../static/t/edit_message.html:118 msgid "Save to Drafts" msgstr "Uložit do Konceptů" #: ../../static/t/edit_message.html:126 #: ../../static/t/edit_message/attachments_pane.html:5 msgid "Attachments:" msgstr "Přílohy:" #: ../../static/t/aide/display_serverrestart_page.html:4 msgid "Message to your Users:" msgstr "Zpráva pro uživatele:" #: ../../static/t/aide/display_generic_result.html:2 msgid "Server command results" msgstr "Výsledek příkazu" #: ../../static/t/aide/display_generic_result.html:18 msgid "Enter another command" msgstr "Vložte další příkaz" #: ../../static/t/aide/display_generic_result.html:19 msgid "Return to menu" msgstr "Zpět do menu" #: ../../static/t/aide/display_sitewide_config.html:3 msgid "Site configuration" msgstr "Nastavení webu" #: ../../static/t/aide/display_sitewide_config.html:6 #: ../../static/t/aide/edituser/select.html:9 msgid "You need to be aide to view this." msgstr "Musíte být Admin pro zobrazení tohoto." #: ../../static/t/aide/display_sitewide_config.html:11 msgid "General" msgstr "Obecné" #: ../../static/t/aide/display_sitewide_config.html:12 msgid "Access" msgstr "Přístup" #: ../../static/t/aide/display_sitewide_config.html:13 msgid "Network" msgstr "Síť" #: ../../static/t/aide/display_sitewide_config.html:14 msgid "Tuning" msgstr "Ladění" #: ../../static/t/aide/display_sitewide_config.html:15 msgid "Directory" msgstr "Adresář" #: ../../static/t/aide/display_sitewide_config.html:16 msgid "Auto-purger" msgstr "Automatické čištění" #: ../../static/t/aide/display_sitewide_config.html:17 msgid "Indexing/Journaling" msgstr "Indexování/žurnálovaní" #: ../../static/t/aide/display_sitewide_config.html:18 #: ../../static/t/aide/siteconfig/tab_pushmail.html:1 msgid "Push Email" msgstr "Odeslat Email" #: ../../static/t/aide/display_sitewide_config.html:19 msgid "Pop3" msgstr "Pop3" #: ../../static/t/aide/usermanagement.html:2 msgid "Add, change, delete user accounts" msgstr "Přidat, upravit nebo vymazat uživatelské účty" #: ../../static/t/aide/display_inetconf.html:5 #: ../../static/t/aide/display_menu.html:5 msgid "System Administration Menu" msgstr "Systémové Administrační menu" #: ../../static/t/aide/display_inetconf.html:6 #: ../../static/t/aide/display_menu.html:6 msgid "Room Admin Menu" msgstr "Menu poradce pro pokoj" #: ../../static/t/aide/display_inetconf.html:13 msgid "Local host aliases" msgstr "Lokální alias klienta" #: ../../static/t/aide/display_inetconf.html:14 msgid "Directory domains" msgstr "Adresář domén" #: ../../static/t/aide/display_inetconf.html:15 msgid "Smart hosts" msgstr "" #: ../../static/t/aide/display_inetconf.html:16 msgid "Fallback smart hosts" msgstr "" #: ../../static/t/aide/display_inetconf.html:17 msgid "Notification hosts" msgstr "Oznámení hostů" #: ../../static/t/aide/display_inetconf.html:22 msgid "RBL hosts" msgstr "" #: ../../static/t/aide/display_inetconf.html:23 msgid "SpamAssassin hosts" msgstr "" #: ../../static/t/aide/display_inetconf.html:24 msgid "ClamAV clamd hosts" msgstr "" #: ../../static/t/aide/display_inetconf.html:25 msgid "Masqueradable domains" msgstr "Domény, mající povolenou maškarádu" #: ../../static/t/aide/edituser/select.html:5 msgid "Edit or delete users" msgstr "Upravit nebo smazat uživatele" #: ../../static/t/aide/edituser/select.html:17 msgid "Add users" msgstr "Přidat uživatele" #: ../../static/t/aide/edituser/select.html:20 msgid "Edit or Delete users" msgstr "Upravit nebo smazat uživatele" #: ../../static/t/aide/edituser/box_select.html:1 msgid "" "To edit an existing user account, select the user name from the list and " "click 'Edit'." msgstr "" "Pro upravení existujícího uživatelského účtu, vyberte jméno ze seznamu a " "klikněte na 'Upravit'" #: ../../static/t/aide/edituser/detailview.html:4 msgid "Edit user account: " msgstr "Upravit nastavení uživatele: " #: ../../static/t/aide/edituser/detailview.html:24 #: ../../static/t/room/edit/tab_feed.html:14 msgid "Password" msgstr "Heslo:" #: ../../static/t/aide/edituser/detailview.html:28 msgid "Permission to send Internet mail" msgstr "Oprávnění pro odeslání Internetového e-mailu" #: ../../static/t/aide/edituser/detailview.html:32 msgid "Number of logins" msgstr "Počet přihlášení" #: ../../static/t/aide/edituser/detailview.html:36 msgid "Messages submitted" msgstr "Vložené zprávy" #: ../../static/t/aide/edituser/detailview.html:40 msgid "Access level" msgstr "Úroveň přístupu" #: ../../static/t/aide/edituser/detailview.html:54 msgid "User ID number" msgstr "ID uživatele" #: ../../static/t/aide/edituser/detailview.html:58 msgid "Date and time of last login" msgstr "Datum a čas posledního přihlášení" #: ../../static/t/aide/edituser/detailview.html:68 msgid "Auto-purge after this many days" msgstr "Automaticky vymazat po dnech" #: ../../static/t/aide/edituser/add.html:1 msgid "" "To create a new user account, enter the desired user name in the box below " "and click 'Create'." msgstr "" "Pro vytvoření nového uživatelského účtu vložte požadované jméno do textového " "pole dole a klikněte 'Vytvořit'" #: ../../static/t/aide/edituser/add.html:5 msgid "New user: " msgstr "Nový uživatel: " #: ../../static/t/aide/display_generic_cmd.html:4 msgid "Enter a server command" msgstr "Vložte příkaz pro server" #: ../../static/t/aide/display_generic_cmd.html:12 msgid "" "This screen allows you to enter Citadel server commands which are not " "supported by WebCit. If you do not know what that means, then this screen " "will not be of much use to you." msgstr "" "Tato část umožňuje vložit příkaz pro Citadel server, který není podporován " "přes WebCit. Pokud nevíte co to znamená, tato stránka pro vás nebude moc " "užitečná." #: ../../static/t/aide/display_generic_cmd.html:15 msgid "Enter command:" msgstr "Vložte příkaz:" #: ../../static/t/aide/display_generic_cmd.html:17 msgid "Command input (if requesting SEND_LISTING transfer mode):" msgstr "Vstupní příkaz (pokud požaduje SEND_LISTING přenosový mód):" #: ../../static/t/aide/display_generic_cmd.html:20 msgid "Detected host header is " msgstr "Detekovaná hlavička hosta je " #: ../../static/t/aide/display_ignetconf.html:4 msgid "Network configuration" msgstr "Nastavení sítě" #: ../../static/t/aide/display_ignetconf.html:10 #: ../../static/t/aide/ignetconf/edit_node.html:5 #: ../../static/t/aide/ignetconf/add.html:5 msgid "Add a new node" msgstr "Přidat nový uzel" #: ../../static/t/aide/display_ignetconf.html:14 msgid "Currently configured nodes" msgstr "Současné uzly" #: ../../static/t/aide/display_serverrestart.html:26 msgid "Restart Citadel" msgstr "Restartovat Citadel" #: ../../static/t/aide/floorconfig.html:2 msgid "Add, change, or delete floors" msgstr "Přidat, upravit nebo odstranit podlaží" #: ../../static/t/aide/serverrestart/box.html:3 msgid "Please wait while the Citadel server is restarted... " msgstr "Prosím čekejte dokud Citadel server je restartován... " #: ../../static/t/aide/serverrestart/box_page_do.html:3 msgid "" "Please wait while your users are being paged, the citadel server will be " "restarted after that... " msgstr "" "Prosím počkejte dokud nebudou uživatelé nastránkováni, citadel server se " "poté restartuje. " #: ../../static/t/aide/inet/masqdomains.html:2 msgid "(Domains as which users are allowed to masquerade)" msgstr "(Domény, jejichž uživatelé mají povolenu maškarádu)" #: ../../static/t/aide/inet/rbldns.html:2 msgid "(hosts running a Realtime Blackhole List)" msgstr "(List běžících Realtime Blackhole)" #: ../../static/t/aide/inet/dirnames.html:2 msgid "(domains mapped with the Global Address Book)" msgstr "(domény uvedené v Globálním Adresáři)" #: ../../static/t/aide/inet/notify.html:2 msgid "(URLS for notifications when users receive new mails; )" msgstr "(URLS pro oznámení, když uživatel dostane nový email; )" #: ../../static/t/aide/inet/notify.html:2 msgid "" "Syntax: Notificationtemplatename:http[s]://user:password@hostname/path" msgstr "" "Zápis syntaxe: Šablona pro oznánení:http[s]://user:password@hostname/path" #: ../../static/t/aide/inet/smarthosts.html:2 msgid "(if present, forward all outbound mail to one of these hosts)" msgstr "" "(Pokud je potvrzeno, přepošle všechny odchozí maily na jednoho z těchto " "hostů)" #: ../../static/t/aide/inet/aliases.html:2 msgid "(domains for which this host receives mail)" msgstr "(domény, ze kterých tento host přijímá emaily)" #: ../../static/t/aide/inet/clamav.html:2 msgid "(hosts running the ClamAV clamd service)" msgstr "(hosti využívající ClamAV clamd službu)" #: ../../static/t/aide/inet/spamass.html:2 msgid "(hosts running the SpamAssassin service)" msgstr "(hosti využívající SpamAssassin službu)" #: ../../static/t/aide/inet/fallbackhosts.html:2 msgid "(send outbound mail to these hosts only when direct delivery fails)" msgstr "" "(zasílání odchozích mailů na tyto hosty pouze, pokud přímé doručení selže)" #: ../../static/t/aide/ignetconf/display_confirm_delete.html:5 msgid "Confirm delete" msgstr "Potvrdit smazání" #: ../../static/t/aide/ignetconf/display_confirm_delete.html:11 msgid "Are you sure you want to delete " msgstr "Opravdu chcete odstranit " #: ../../static/t/aide/ignetconf/display_confirm_delete.html:14 #: ../../static/t/prefs/box.html:198 ../../static/t/iconbar/edit.html:19 #: ../../static/t/iconbar/edit.html:26 ../../static/t/iconbar/edit.html:32 #: ../../static/t/iconbar/edit.html:39 ../../static/t/iconbar/edit.html:45 #: ../../static/t/iconbar/edit.html:52 ../../static/t/iconbar/edit.html:58 #: ../../static/t/iconbar/edit.html:64 ../../static/t/iconbar/edit.html:70 #: ../../static/t/iconbar/edit.html:76 ../../static/t/iconbar/edit.html:82 #: ../../static/t/iconbar/edit.html:88 msgid "Yes" msgstr "Ano" #: ../../static/t/aide/ignetconf/display_confirm_delete.html:16 #: ../../static/t/prefs/box.html:200 ../../static/t/iconbar/edit.html:20 #: ../../static/t/iconbar/edit.html:27 ../../static/t/iconbar/edit.html:33 #: ../../static/t/iconbar/edit.html:40 ../../static/t/iconbar/edit.html:46 #: ../../static/t/iconbar/edit.html:53 ../../static/t/iconbar/edit.html:59 #: ../../static/t/iconbar/edit.html:65 ../../static/t/iconbar/edit.html:71 #: ../../static/t/iconbar/edit.html:77 ../../static/t/iconbar/edit.html:83 #: ../../static/t/iconbar/edit.html:89 msgid "No" msgstr "Ne" #: ../../static/t/aide/ignetconf/edit_node.html:15 #: ../../static/t/aide/ignetconf/add.html:15 #: ../../static/t/aide/siteconfig/tab_general.html:8 msgid "Node name" msgstr "Jméno uzlu" #: ../../static/t/aide/ignetconf/edit_node.html:17 #: ../../static/t/aide/ignetconf/add.html:17 msgid "Shared secret" msgstr "Sdílené heslo" #: ../../static/t/aide/ignetconf/edit_node.html:19 #: ../../static/t/aide/ignetconf/add.html:19 msgid "Host or IP address" msgstr "Host nebo IP adresa" #: ../../static/t/aide/ignetconf/edit_node.html:21 #: ../../static/t/aide/ignetconf/add.html:21 msgid "Port number" msgstr "Číslo portu" #: ../../static/t/aide/ignetconf/section.html:4 msgid "(Edit)" msgstr "(Upravit)" #: ../../static/t/aide/display_menu.html:12 msgid "Global Configuration" msgstr "Globální Configurace" #: ../../static/t/aide/display_menu.html:14 msgid "User account management" msgstr "Nastavení uživatelů" #: ../../static/t/aide/display_menu.html:16 msgid "Shutdown Citadel" msgstr "Vypnout Citadel" #: ../../static/t/aide/display_menu.html:18 msgid "Rooms and Floors" msgstr "Místnosti a podlaží" #: ../../static/t/aide/global_config.html:2 msgid "Edit site-wide configuration" msgstr "Upravit nastavení" #: ../../static/t/aide/global_config.html:3 msgid "Domain names and Internet mail configuration" msgstr "Doménová jména a nastavení Internetových e-mailů" #: ../../static/t/aide/global_config.html:4 msgid "Configure replication with other Citadel servers" msgstr "Nastavit replikaci ostatních Citadel servrů" #: ../../static/t/aide/global_config.html:5 #: ../../static/t/view_mailq/header.html:3 msgid "View the outbound SMTP queue" msgstr "Zobrazit odchozí frontu na SMTP servru" #: ../../static/t/aide/restart.html:2 msgid "Restart Now" msgstr "Restartovat nyní" #: ../../static/t/aide/restart.html:3 msgid "Restart after paging users" msgstr "Restartovat after paging users" #: ../../static/t/aide/restart.html:4 msgid "Restart when all users are idle" msgstr "Restartovat až budou všichni uživatelé nečinní" #: ../../static/t/aide/siteconfig/tab_general.html:1 msgid "General site configuration items" msgstr "Obecné nastavení služby" #: ../../static/t/aide/siteconfig/tab_general.html:5 msgid "Change Login Logo" msgstr "Změnit logo při přihlašování" #: ../../static/t/aide/siteconfig/tab_general.html:6 msgid "Change Logout Logo" msgstr "Změnit logo při odhlašování" #: ../../static/t/aide/siteconfig/tab_general.html:11 msgid "Fully qualified domain name" msgstr "Plně kvalifikované doménové jméno" #: ../../static/t/aide/siteconfig/tab_general.html:14 msgid "Human-readable node name" msgstr "Člověku čitelný název nodu" #: ../../static/t/aide/siteconfig/tab_general.html:17 msgid "Telephone number" msgstr "Telefonní číslo" #: ../../static/t/aide/siteconfig/tab_general.html:20 msgid "Paginator prompt (for text mode clients)" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:23 msgid "Geographic location of this system" msgstr "Zeměpisná poloha tohoto systému" #: ../../static/t/aide/siteconfig/tab_general.html:26 msgid "Name of system administrator" msgstr "Jméno systéového administrátora" #: ../../static/t/aide/siteconfig/tab_general.html:29 msgid "Default timezone for unzoned calendar items" msgstr "Základní časová zóna pro nepřiřazené kalendáře" #: ../../static/t/aide/siteconfig/tab_autopurger.html:1 msgid "Configure automatic expiry of old messages" msgstr "Automatické nastavení vypršení starých zpráv" #: ../../static/t/aide/siteconfig/tab_autopurger.html:2 msgid "These settings may be overridden on a per-floor or per-room basis." msgstr "" "Toto nastavení může být změněno na úrovni nastavení podlaží nebo místností." #: ../../static/t/aide/siteconfig/tab_autopurger.html:6 msgid "Hour to run database auto-purge" msgstr "Hodina ke spuštění automatického čištění databáze." #: ../../static/t/aide/siteconfig/tab_autopurger.html:66 msgid "Default message expire policy for public rooms" msgstr "Výchozí pravidlo pro zprávy o vypršeníl ve veřejných místnostech" #: ../../static/t/aide/siteconfig/tab_autopurger.html:68 #: ../../static/t/aide/siteconfig/tab_autopurger.html:86 #: ../../static/t/room/edit/tab_expire.html:17 #: ../../static/t/room/edit/tab_expire.html:45 msgid "Never automatically expire messages" msgstr "Nikdy nevymazávat prošlé zprávy" #: ../../static/t/aide/siteconfig/tab_autopurger.html:71 #: ../../static/t/aide/siteconfig/tab_autopurger.html:89 #: ../../static/t/room/edit/tab_expire.html:20 #: ../../static/t/room/edit/tab_expire.html:48 msgid "Expire by message count" msgstr "Zprávy vyprší počtem" #: ../../static/t/aide/siteconfig/tab_autopurger.html:73 #: ../../static/t/aide/siteconfig/tab_autopurger.html:92 #: ../../static/t/room/edit/tab_expire.html:23 #: ../../static/t/room/edit/tab_expire.html:51 msgid "Expire by message age" msgstr "Zprávy propadnou stářím" #: ../../static/t/aide/siteconfig/tab_autopurger.html:75 #: ../../static/t/aide/siteconfig/tab_autopurger.html:94 #: ../../static/t/room/edit/tab_expire.html:25 #: ../../static/t/room/edit/tab_expire.html:53 msgid "Number of messages or days: " msgstr "Počet zprávy nebo dní: " #: ../../static/t/aide/siteconfig/tab_autopurger.html:81 msgid "Default message expire policy for private mailboxes" msgstr "Výchozí pravidlo prošlých zpráv pro soukromé složky" #: ../../static/t/aide/siteconfig/tab_autopurger.html:83 msgid "Same policy as public rooms" msgstr "Stejné pravidla jako veřejné místnosti" #: ../../static/t/aide/siteconfig/tab_network.html:1 msgid "Network services" msgstr "Síťové služby" #: ../../static/t/aide/siteconfig/tab_network.html:2 #: ../../static/t/aide/siteconfig/tab_directory.html:3 msgid "" "Changes made on this screen will not take effect until you restart the " "Citadel server." msgstr "" "Změny provedené v této části nebudou provedeny dokud nerestartujete server " "Citadelu." #: ../../static/t/aide/siteconfig/tab_network.html:6 msgid "SMTP MTA port (-1 to disable)" msgstr "SMTP MTA port (-1 pro vypnutí)" #: ../../static/t/aide/siteconfig/tab_network.html:9 msgid "Correct forged From: lines during authenticated SMTP" msgstr "Opravit upravené \"From:\" řádky při autentifikovaném SMTP přenosu" #: ../../static/t/aide/siteconfig/tab_network.html:12 msgid "Flag message as spam, instead of rejecting it" msgstr "Označit zprávu jako spam, místo odmítnutí" #: ../../static/t/aide/siteconfig/tab_network.html:15 msgid "IMAP listener port (-1 to disable)" msgstr "IMAP naslouchací port (-1 pro vypnutí)" #: ../../static/t/aide/siteconfig/tab_network.html:19 msgid "Network run frequency (in seconds)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:22 msgid "Server IP address (0.0.0.0 for 'any')" msgstr "IP adresa serveru (0.0.0.0 pro \"jakákoli\")" #: ../../static/t/aide/siteconfig/tab_network.html:25 msgid "SMTP MSA port (-1 to disable)" msgstr "SMTP MSA port (-1 pro vypnutí)" #: ../../static/t/aide/siteconfig/tab_network.html:28 msgid "IMAP over SSL port (-1 to disable)" msgstr "IMAP přes SSL port (-1 pro vypnutí)" #: ../../static/t/aide/siteconfig/tab_network.html:31 msgid "SMTP over SSL port (-1 to disable)" msgstr "SMTP přes SSL port (-1 pro vypnutí)" #: ../../static/t/aide/siteconfig/tab_network.html:34 msgid "Instantly expunge deleted messages in IMAP" msgstr "Okamžitě vymazat smazané zprávy přes IMAP" #: ../../static/t/aide/siteconfig/tab_network.html:38 msgid "Allow unauthenticated SMTP clients to spoof this sites domains" msgstr "Povolit neuatentifikované SMTP klienty" #: ../../static/t/aide/siteconfig/tab_network.html:41 msgid "Postfix TCP Dictionary Port" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:41 msgid "-1 to disable" msgstr "-1 pro vypnutí" #: ../../static/t/aide/siteconfig/tab_network.html:44 msgid "ManageSieve Port (-1 to disable)" msgstr "ManageSieve Port (-1 pro vypnutí)" #: ../../static/t/aide/siteconfig/tab_network.html:47 msgid "Perform RBL checks upon connect instead of after RCPT" msgstr "Provést RBL kontolu před připojením místo pro připojení k RCPT" #: ../../static/t/aide/siteconfig/tab_network.html:50 msgid "Keep original from headers in IMAP" msgstr "Zachovat originální hlavičky na IMAP" #: ../../static/t/aide/siteconfig/tab_network.html:53 msgid "XMPP (Jabber) client to server port (-1 to disable)" msgstr "XMPP (Jabber) server <> klient port (-1 pro vypnutí)" #: ../../static/t/aide/siteconfig/tab_network.html:56 msgid "XMPP (Jabber) server to server port (-1 to disable)" msgstr "XMPP (Jabber) server <> server port (-1 pro vypnutí)" #: ../../static/t/aide/siteconfig/tab_pop3.html:1 msgid "POP3" msgstr "POP3" #: ../../static/t/aide/siteconfig/tab_pop3.html:6 msgid "POP3 listener port (-1 to disable)" msgstr "POP3 naslouchací port (-1 pro vypnutí)" #: ../../static/t/aide/siteconfig/tab_pop3.html:9 msgid "POP3 over SSL port (-1 to disable)" msgstr "POP3 přes SSL port (-1 pro vypnutí)" #: ../../static/t/aide/siteconfig/tab_pop3.html:12 msgid "POP3 fetch frequency in seconds" msgstr "" #: ../../static/t/aide/siteconfig/tab_pop3.html:15 msgid "POP3 fastest fetch frequency in seconds" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:1 msgid "Advanced server fine-tuning controls" msgstr "Pokročilé nastavení serveru" #: ../../static/t/aide/siteconfig/tab_tuning.html:5 msgid "Server connection idle timeout (in seconds)" msgstr "Spojení se serverem v nečinnosti - timeout (sekundy)" #: ../../static/t/aide/siteconfig/tab_tuning.html:8 msgid "Maximum concurrent sessions (0 = no limit)" msgstr "Maximální množství spojení (0 = bez omezení)" #: ../../static/t/aide/siteconfig/tab_tuning.html:11 msgid "Default user purge time (days)" msgstr "Default user purge time (days)" #: ../../static/t/aide/siteconfig/tab_tuning.html:14 msgid "Default room purge time (days)" msgstr "Výchozí čas pro vyčištění místnosti (dny)" #: ../../static/t/aide/siteconfig/tab_tuning.html:17 msgid "Maximum message length" msgstr "Maximální délka zprávy" #: ../../static/t/aide/siteconfig/tab_tuning.html:20 msgid "Minimum number of worker threads" msgstr "Minimální počet pracovních vláken" #: ../../static/t/aide/siteconfig/tab_tuning.html:23 msgid "Maximum number of worker threads" msgstr "Maximální počet pracovních vláken" #: ../../static/t/aide/siteconfig/tab_tuning.html:26 msgid "Automatically delete committed database logs" msgstr "Automaticky smazat odeslaný databázový záznam" #: ../../static/t/aide/siteconfig/tab_pushmail.html:5 msgid "Funambol server host (blank to disable)" msgstr "Hostitelský server Funambol (prázdné pole pro vypnutí)" #: ../../static/t/aide/siteconfig/tab_pushmail.html:8 msgid "Funambol server port " msgstr "Port serveru Funambol. " #: ../../static/t/aide/siteconfig/tab_pushmail.html:11 msgid "Funambol sync source" msgstr "Funambol sync zdroje" #: ../../static/t/aide/siteconfig/tab_pushmail.html:14 msgid "Funambol auth details (user:pass)" msgstr "Funambol autorizační detaily (uživatel:heslo)" #: ../../static/t/aide/siteconfig/tab_pushmail.html:17 msgid "External pager tool (blank to disable)" msgstr "Externí pager nástroje (prázdné pole pro vypnutí)" #: ../../static/t/aide/siteconfig/tab_access.html:1 msgid "Access controls and site policy settings" msgstr "Kontrola přístupu a nastavení politiky stránky" #: ../../static/t/aide/siteconfig/tab_access.html:5 msgid "Allow aides to zap (forget) rooms" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:9 msgid "Quarantine messages from problem users" msgstr "Karanténí zprávy pro problémové uživatele" #: ../../static/t/aide/siteconfig/tab_access.html:12 msgid "Name of quarantine room" msgstr "Jméno karanténí místnosti" #: ../../static/t/aide/siteconfig/tab_access.html:17 msgid "Name of room to log pages" msgstr "Jméno místnosti pro stránky s logy" #: ../../static/t/aide/siteconfig/tab_access.html:22 msgid "Authentication mode" msgstr "Ověřovací mód" #: ../../static/t/aide/siteconfig/tab_access.html:24 msgid "Self contained" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:25 msgid "Host based" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:26 msgid "LDAP (RFC2307)" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:27 msgid "LDAP (Active Directory)" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:30 msgid "Master user name (blank to disable)" msgstr "Administrátorské jméno" #: ../../static/t/aide/siteconfig/tab_access.html:33 msgid "Master user password" msgstr "Administrátorské heslo" #: ../../static/t/aide/siteconfig/tab_access.html:38 msgid "Initial access level for new users" msgstr "Počáteční úroveň přístupu pro nové uživatele" #: ../../static/t/aide/siteconfig/tab_access.html:49 msgid "Access level required to create rooms" msgstr "Potřebné oprávnění pro vytváření nových místností" #: ../../static/t/aide/siteconfig/tab_access.html:60 msgid "" "Automatically grant room-aide status to users who create private rooms" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:63 msgid "Automatically grant room-aide status to users who create BLOG rooms" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:66 msgid "Restrict access to Internet mail" msgstr "Zakázat přístup k Internetovému e-mailu" #: ../../static/t/aide/siteconfig/tab_access.html:71 msgid "Disable self-service user account creation" msgstr "Zakázat vlastní vytvoření uživatele" #: ../../static/t/aide/siteconfig/tab_access.html:71 msgid "Hint: do not select both!" msgstr "Tip: nevybírejte obě!" #: ../../static/t/aide/siteconfig/tab_access.html:74 msgid "Require registration for new users" msgstr "Požadovat registraci pro nové uživatele" #: ../../static/t/aide/siteconfig/tab_access.html:77 msgid "Allow anonymous guest access" msgstr "Povolit anonymní přístup" #: ../../static/t/aide/siteconfig/tab_indexing.html:1 msgid "Indexing and Journaling" msgstr "Indexování a Žurnálování" #: ../../static/t/aide/siteconfig/tab_indexing.html:2 msgid "Warning: these facilities are resource intensive." msgstr "Varování: tyto možnosti jsou systémově náročné." #: ../../static/t/aide/siteconfig/tab_indexing.html:6 msgid "Enable full text index" msgstr "Aktivovat full-textové indexování" #: ../../static/t/aide/siteconfig/tab_indexing.html:9 msgid "Perform journaling of email messages" msgstr "" #: ../../static/t/aide/siteconfig/tab_indexing.html:13 msgid "Perform journaling of non-email messages" msgstr "" #: ../../static/t/aide/siteconfig/tab_indexing.html:16 msgid "Email destination of journalized messages" msgstr "" #: ../../static/t/aide/siteconfig/tab_directory.html:1 msgid "Configure the LDAP connector for Citadel" msgstr "Nastavení LDAP konektoru pro Citadel" #: ../../static/t/aide/siteconfig/tab_directory.html:4 msgid "" "NOTE: This Citadel server has been built without LDAP support. These " "options will have no effect." msgstr "" "Poznámka: Tento Citadel server byl postaven bez podpory LDAP. Toto nastavení " "nebude mít vliv." #: ../../static/t/aide/siteconfig/tab_directory.html:9 msgid "Host name of LDAP server (blank to disable)" msgstr "Název hosta LDAP serveru (nechte prázdné pro vypnutí)" #: ../../static/t/aide/siteconfig/tab_directory.html:13 msgid "Port number of LDAP server (blank to disable)" msgstr "Číslo portu LDAP serveru (prázdné pole pro vypnutí)" #: ../../static/t/aide/siteconfig/tab_directory.html:16 msgid "Base DN" msgstr "" #: ../../static/t/aide/siteconfig/tab_directory.html:19 msgid "Bind DN" msgstr "" #: ../../static/t/aide/siteconfig/tab_directory.html:22 msgid "Password for bind DN" msgstr "" #: ../../static/t/iconbar.html:7 msgid "Language:" msgstr "Jazyk:" #: ../../static/t/iconbar.html:19 msgid "Mail" msgstr "E-mail" #: ../../static/t/iconbar.html:39 ../../static/t/iconbar/edit.html:61 #: ../../static/t/summary/page.html:30 msgid "Tasks" msgstr "Úlohy" #: ../../static/t/iconbar.html:48 ../../static/t/iconbar/edit.html:67 msgid "Rooms" msgstr "Místnosti" #: ../../static/t/iconbar.html:57 msgid "Online users" msgstr "Připojení uživatelé" #: ../../static/t/iconbar.html:62 ../../static/t/iconbar/edit.html:79 msgid "Chat" msgstr "Diskuze" #: ../../static/t/iconbar.html:65 msgid "Advanced" msgstr "Pokročilý" #: ../../static/t/iconbar.html:72 ../../static/t/room/edit/editroom.html:4 #: ../../static/t/room/edit.html:5 msgid "Administration" msgstr "Administrace" #: ../../static/t/iconbar.html:83 msgid "customize this menu" msgstr "upravit toto menu" #: ../../static/t/iconbar.html:92 msgid "switch to room list" msgstr "přepnout do seznamu místností" #: ../../static/t/iconbar.html:93 msgid "switch to menu" msgstr "přepnout na menu" #: ../../static/t/iconbar.html:94 msgid "My folders" msgstr "Moje složky" #: ../../static/t/view_message/list_attach.html:3 #: ../../static/t/view_message/inline_attach.html:4 msgid "View" msgstr "Zobrazit" #: ../../static/t/view_message/list_attach.html:4 #: ../../static/t/view_message/inline_attach.html:5 msgid "Download" msgstr "Stáhnout" #: ../../static/t/view_message/print.html:14 #: ../../static/t/view_message.html:14 msgid "to" msgstr "komu" #: ../../static/t/openid_manual_create.html:2 msgid "Your OpenID" msgstr "Vaše OpenID" #: ../../static/t/openid_manual_create.html:2 msgid "was successfully verified." msgstr "bylo úspěšně ověřeno." #: ../../static/t/openid_manual_create.html:3 msgid "However, the user name" msgstr "Avšak toto uživatelské jméno" #: ../../static/t/openid_manual_create.html:3 msgid "conflicts with an existing user." msgstr "je v konfliktu s existujícím uživatelem." #: ../../static/t/openid_manual_create.html:5 msgid "Please specify the user name you would like to use." msgstr "Prosím specifikujte uživatele, kterého použít." #: ../../static/t/files/graphicsupload.html:2 msgid "Image upload" msgstr "Nahrát obrázek" #: ../../static/t/files/graphicsupload.html:6 msgid "You can upload an image directly from your computer" msgstr "Můžete nahrát obrázek přímo z vašeho počítače" #: ../../static/t/files/graphicsupload.html:8 msgid "Please select a file to upload:" msgstr "Prosím vyberte soubor k nahrání:" #: ../../static/t/files/section_onefile.html:20 msgid "Slideshow" msgstr "Prezentace" #: ../../static/t/roombanner.html:10 ../../static/t/roombanner.html:11 msgid "new of" msgstr "nový z" #: ../../static/t/roombanner.html:10 ../../static/t/roombanner.html:11 #: ../../static/t/msg_listselector_bottom.html:7 #: ../../static/t/msg_listselector_top.html:7 msgid "messages" msgstr "zprávy" #: ../../static/t/roombanner.html:28 msgid "Select page: " msgstr "Vyberte stránku: " #: ../../static/t/who.html:13 msgid "Users currently on " msgstr "Nyní připojení uživatelé " #: ../../static/t/who.html:22 msgid "Click on a name to read user info. Click on" msgstr "Klikněte na jméno pro informace o uživateli" #: ../../static/t/who.html:24 msgid "to send an instant message to that user." msgstr "pro odeslání okamžité zprávy tomuto uživateli" #: ../../static/t/msg_listselector_bottom.html:2 #: ../../static/t/msg_listselector_top.html:2 msgid "Reading #" msgstr "Čtení #" #: ../../static/t/msg_listselector_bottom.html:12 #: ../../static/t/msg_listselector_top.html:12 msgid "oldest to newest" msgstr "nejstařší po nejnovější" #: ../../static/t/msg_listselector_bottom.html:20 #: ../../static/t/msg_listselector_top.html:20 msgid "newest to oldest" msgstr "nejnovější po nejstarší" #: ../../static/t/newstartpage.html:4 msgid "New start page" msgstr "Nová startovní stránka" #: ../../static/t/newstartpage.html:9 msgid "Your start page has been changed." msgstr "Vaše startovní stránka byla upravena." #: ../../static/t/newstartpage.html:12 msgid "" "(Note: this does not change your browser's home page. It changes the page " "you begin on when you log on to" msgstr "" "(Poznámka: tato akce nezmění domovskou stránku prohlížeče. Pouze startovní " "stránku po přihlášení do" #: ../../static/t/no_new_msgs.html:3 msgid "No new messages." msgstr "Žádné nové zprávy." #: ../../static/t/view_blog/comment_box.html:8 msgid "Post a comment" msgstr "Přidat komentář" #: ../../static/t/prefs/pushemail.html:2 msgid "Configure Push Email" msgstr "Nastavit Push Email" #: ../../static/t/prefs/pushemail.html:9 msgid "Push email and SMS settings" msgstr "Push email a SMS nastavení" #: ../../static/t/prefs/pushemail.html:17 msgid "" "If your administrator has enabled the functionality, Citadel can notify a " "Funambol server that you haved recieved new email and automatically " "syncronize any devices you have with the Funambol client installed." msgstr "" "Pokud správce povolil tuto funkci, Citadel může oznámit Funambol servru, že " "jste obdrželi novou zprávu a automaticky se sesynchronizovat se zařízením na " "kterém máte nainstalován Funambol klient." #: ../../static/t/prefs/pushemail.html:20 msgid "" "Alternatively, if the administrator has configured it, Citadel can send a " "text message to you when new mail arrives." msgstr "" "Pokud to správce nastavil, Citadel vám může poslat sms když přijde nová " "zpráva." #: ../../static/t/prefs/pushemail.html:26 msgid "Notify Funambol server" msgstr "Oznámit Funambol serveru" #: ../../static/t/prefs/pushemail.html:31 msgid "Send a text message to..." msgstr "Poslat sms na číslo..." #: ../../static/t/prefs/pushemail.html:33 msgid "" "(Use international format, without any leading zeros, spaces or hypens, like " "+61415011501)" msgstr "" "(použijte mezinárodní formát bez úvodních nul, mezer nebo pomlček, např " "+61415011501)" #: ../../static/t/prefs/pushemail.html:38 msgid "Use custom notification scheme configured by your Admin" msgstr "Použit vlastní schéma oznámení nastavené Administrátorem" #: ../../static/t/prefs/pushemail.html:43 msgid "Don‘t send any notifications" msgstr "Neposílat žádná upozornění" #: ../../static/t/prefs/box.html:9 msgid "Tree (folders) view" msgstr "Stromový (adresářový) pohled" #: ../../static/t/prefs/box.html:11 msgid "Table (rooms) view" msgstr "Table (rooms) view" #: ../../static/t/prefs/box.html:20 msgid "12 hour (am/pm)" msgstr "12 hodin (am/pm)" #: ../../static/t/prefs/box.html:25 msgid "24 hour" msgstr "24 hodin" #: ../../static/t/prefs/box.html:152 msgid "Sunday" msgstr "Neděle" #: ../../static/t/prefs/box.html:153 msgid "Monday" msgstr "Pondělí" #: ../../static/t/prefs/box.html:174 msgid "No signature" msgstr "Bez podpisu" #: ../../static/t/prefs/box.html:238 msgid "Full-functionality" msgstr "Plná funkcionalita" #: ../../static/t/prefs/box.html:241 msgid "Safe mode" msgstr "Bezpečný mód" #: ../../static/t/prefs/box.html:242 msgid "" "Safe mode is less intensive on your web browser, but not as fully featured." msgstr "" "Bezpečný mód je méně náročný pro prohlížeč, ale ne všechny funkce budou " "fungovat." #: ../../static/t/wiki/pagelist.html:1 msgid "List of Wiki pages" msgstr "Seznam stránek Wiki" #: ../../static/t/wiki/history.html:1 msgid "History of edits for this page" msgstr "Historie editací této stránky" #: ../../static/t/who/list_static_header.html:1 msgid "Users currently on" msgstr "Uživatelé kteří jsou online" #: ../../static/t/who/section.html:4 msgid "(kill)" msgstr "(ukončit)" #: ../../static/t/who/bio.html:4 ../../static/t/user/show.html:4 msgid "User profile" msgstr "Uživatelský profil" #: ../../static/t/who/summary.html:5 ../../static/t/who/box_list_static.html:6 #: ../../static/t/room/edit/tab_feed.html:13 msgid "User name" msgstr "Jméno uživatele" #: ../../static/t/who/summary.html:6 ../../static/t/who/box_list_static.html:7 msgid "Room" msgstr "Místnost" #: ../../static/t/who/box_list_static.html:8 msgid "From host" msgstr "" #: ../../static/t/view_message.html:19 msgid "Edit" msgstr "Upravit" #: ../../static/t/view_message.html:22 ../../static/t/view_message.html:26 msgid "Reply" msgstr "Odpovědět" #: ../../static/t/view_message.html:23 msgid "ReplyQuoted" msgstr "Odpovědět citací" #: ../../static/t/view_message.html:27 msgid "ReplyAll" msgstr "Odpovědět všem" #: ../../static/t/view_message.html:28 msgid "Forward" msgstr "Přeposlat" #: ../../static/t/view_message.html:31 ../../static/t/msg_listview.html:25 msgid "Move" msgstr "Přesunout" #: ../../static/t/view_message.html:34 msgid "Headers" msgstr "Hlavičky" #: ../../static/t/view_message.html:35 ../../static/t/msg_listview.html:28 msgid "Print" msgstr "Vytisknout" #: ../../static/t/preferences.html:4 ../../static/t/preferences.html:7 msgid "Preferences and settings" msgstr "Preference a nastavení" #: ../../static/t/user/list.html:3 msgid "User list for " msgstr "Seznam uživatelů pro " #: ../../static/t/user/list.html:9 msgid "User Name" msgstr "Uživatelské jméno" #: ../../static/t/user/list.html:10 msgid "Number" msgstr "Číslo" #: ../../static/t/user/list.html:11 msgid "Access Level" msgstr "Úroveň přístupu" #: ../../static/t/user/list.html:12 msgid "Last Login" msgstr "Poslední přihlášení" #: ../../static/t/user/list.html:13 msgid "Total Logins" msgstr "Celkem přihlášení" #: ../../static/t/user/list.html:14 msgid "Total Posts" msgstr "Celkem příspěvků" #: ../../static/t/user/show.html:9 msgid "Click here to send an instant message to" msgstr "Klikněte zde pro odeslání okamžité zprávy pro" #: ../../static/t/start_of_new_msgs.html:4 msgid "Old messages" msgstr "Staré zprávy" #: ../../static/t/start_of_new_msgs.html:8 msgid "New messages" msgstr "Nové zprávy" #: ../../static/t/display_main_menu.html:7 msgid "Basic commands" msgstr "Základní příkazy" #: ../../static/t/display_main_menu.html:10 msgid "Your info" msgstr "Informace o vás" #: ../../static/t/display_main_menu.html:12 msgid "Advanced room commands" msgstr "Pokročilé příkazy místnosti" #: ../../static/t/iconbar/save.html:4 ../../static/t/iconbar/edit.html:4 msgid "Customize the icon bar" msgstr "Upravte menu ikon" #: ../../static/t/iconbar/save.html:11 msgid "" "Your icon bar has been updated. Please select any of its choices to continue." msgstr "" "Panel ikon byl aktualizován. Prosím vyberte nějakou volbu pro pokračování." #: ../../static/t/iconbar/save.html:11 msgid "" "You may need to force refresh (SHIFT-F5)> in order for changes to take effect" msgstr "" "Možná budete potřebovat obnovit stránku (SHIFT - F5) > aby byly změny " "provedeny" #: ../../static/t/iconbar/edit.html:11 msgid "Display icons as:" msgstr "Zobraz ikony jako:" #: ../../static/t/iconbar/edit.html:12 msgid "pictures and text" msgstr "obrázky a text" #: ../../static/t/iconbar/edit.html:13 msgid "pictures only" msgstr "pouze obrázky" #: ../../static/t/iconbar/edit.html:14 msgid "text only" msgstr "pouze text" #: ../../static/t/iconbar/edit.html:16 msgid "" "Select the icons you would like to see displayed in the 'icon bar' menu on " "the left side of the screen." msgstr "Vyberte ikony, které chcete vidět v liště ikon na levé straně okna." #: ../../static/t/iconbar/edit.html:23 msgid "Site logo" msgstr "Logo webu" #: ../../static/t/iconbar/edit.html:23 msgid "An icon describing this site" msgstr "Ikona popisující tuto stránku" #: ../../static/t/iconbar/edit.html:29 msgid "Your summary page" msgstr "Souhrnná stránka" #: ../../static/t/iconbar/edit.html:36 msgid "Mail (inbox)" msgstr "Pošta (příchozí)" #: ../../static/t/iconbar/edit.html:36 msgid "A shortcut to your email Inbox" msgstr "Zkratka do složky přijatých zpráv" #: ../../static/t/iconbar/edit.html:42 msgid "Your personal address book" msgstr "Osobní adresář" #: ../../static/t/iconbar/edit.html:49 msgid "Your personal notes" msgstr "Osobní poznámky" #: ../../static/t/iconbar/edit.html:55 msgid "A shortcut to your personal calendar" msgstr "Zkratka do kalendáře" #: ../../static/t/iconbar/edit.html:61 msgid "A shortcut to your personal task list" msgstr "Zkratka do seznamu" #: ../../static/t/iconbar/edit.html:67 msgid "" "Clicking this icon displays a list of all accessible rooms (or folders) " "available." msgstr "" "Kliknutím na tuto ikonu zobrazíte seznam přístupných místností (adresářů), " "které jsou dostupné." #: ../../static/t/iconbar/edit.html:73 msgid "Who is online?" msgstr "Kdo je online?" #: ../../static/t/iconbar/edit.html:73 msgid "Clicking this icon displays a list of all users currently logged in." msgstr "" "Kliknutím na tuto ikonu zobrazíte seznam všech přihlášených uživatelů." #: ../../static/t/iconbar/edit.html:79 msgid "" "Clicking this icon enters real-time chat mode with other users in the same " "room." msgstr "" "Kliknutím na tuto ikonu vstoupíte do chatu s ostatními uživateli stejné " "místnosti." #: ../../static/t/iconbar/edit.html:85 msgid "Advanced options" msgstr "Pokročilé nastavení" #: ../../static/t/iconbar/edit.html:85 msgid "Access to the complete menu of Citadel functions." msgstr "Přístup do kompletního menu funkcí Citadel server." #: ../../static/t/iconbar/edit.html:91 msgid "Citadel logo" msgstr "Citadel logo" #: ../../static/t/iconbar/edit.html:91 msgid "Displays the 'Powered by Citadel' icon" msgstr "Zobrazit \"Poháněno přes Citadel\" ikonu" #: ../../static/t/room/edit/tab_expire.html:8 msgid "Message expire policy for this room" msgstr "Vymazávací politika pro tuto místnost" #: ../../static/t/room/edit/tab_expire.html:14 msgid "Use the default policy for this floor" msgstr "Použij základní politiku pro tuto místnost" #: ../../static/t/room/edit/tab_expire.html:36 msgid "Message expire policy for this floor" msgstr "" #: ../../static/t/room/edit/tab_expire.html:42 msgid "Use the system default" msgstr "Použít výchozí nastavení systému" #: ../../static/t/room/edit/editroom.html:5 ../../static/t/room/edit.html:6 msgid "Configuration" msgstr "Nastavení" #: ../../static/t/room/edit/editroom.html:6 ../../static/t/room/edit.html:7 msgid "Message expire policy" msgstr "Doba platnosti zprávy" #: ../../static/t/room/edit/editroom.html:7 ../../static/t/room/edit.html:8 msgid "Access controls" msgstr "Kontrola přístupu" #: ../../static/t/room/edit/editroom.html:8 ../../static/t/room/edit.html:9 msgid "Sharing" msgstr "Sdílení" #: ../../static/t/room/edit/editroom.html:9 ../../static/t/room/edit.html:10 msgid "Mailing list service" msgstr "Služba mailing seznamů" #: ../../static/t/room/edit/editroom.html:10 ../../static/t/room/edit.html:11 msgid "Remote retrieval" msgstr "Vzdálené stažení" #: ../../static/t/room/edit/tab_config.html:6 msgid "name of room: " msgstr "jméno místnosti: " #: ../../static/t/room/edit/tab_config.html:10 #: ../../static/t/room/create.html:20 msgid "Resides on floor: " msgstr "Nachází se na podlaží: " #: ../../static/t/room/edit/tab_config.html:16 #: ../../static/t/room/create.html:68 msgid "Type of room:" msgstr "Typ místnosti:" #: ../../static/t/room/edit/tab_config.html:22 #: ../../static/t/room/create.html:73 msgid "Public (automatically appears to everyone)" msgstr "Veřejná (místnost je viditelná pro všechny)" #: ../../static/t/room/edit/tab_config.html:28 #: ../../static/t/room/create.html:77 msgid "Private - hidden (accessible to anyone who knows its name)" msgstr "Sokromá - skrytá (přístupná pouze pro ty, kteří znají jméno)" #: ../../static/t/room/edit/tab_config.html:35 #: ../../static/t/room/create.html:81 msgid "Private - require password: " msgstr "Soukromá - vyžaduje heslo: " #: ../../static/t/room/edit/tab_config.html:44 #: ../../static/t/room/create.html:86 msgid "Private - invitation only" msgstr "Soukromé - pouze na pozvání" #: ../../static/t/room/edit/tab_config.html:51 #: ../../static/t/room/create.html:90 msgid "Personal (mailbox for you only)" msgstr "Osobní (pošta pouze pro vás)" #: ../../static/t/room/edit/tab_config.html:55 msgid "If private, cause current users to forget room" msgstr "" #: ../../static/t/room/edit/tab_config.html:61 msgid "Preferred users only" msgstr "Pouze preferovaný uživatel" #: ../../static/t/room/edit/tab_config.html:66 msgid "Read-only room" msgstr "Místnost pouze pro čtení" #: ../../static/t/room/edit/tab_config.html:71 msgid "All users allowed to post may also delete messages" msgstr "Uživatelé, kteří můžou psát zprávy je můžou i mazat." #: ../../static/t/room/edit/tab_config.html:76 msgid "File directory room" msgstr "Místnost pro soubory" #: ../../static/t/room/edit/tab_config.html:80 msgid "Directory name: " msgstr "Jméno adresáře: " #: ../../static/t/room/edit/tab_config.html:86 msgid "Uploading allowed" msgstr "Nahrávání povoleno" #: ../../static/t/room/edit/tab_config.html:91 msgid "Downloading allowed" msgstr "Stahování povoleno" #: ../../static/t/room/edit/tab_config.html:96 msgid "Visible directory" msgstr "Viditelný adresář" #: ../../static/t/room/edit/tab_config.html:103 msgid "Network shared room" msgstr "Síťová sdílená místnost" #: ../../static/t/room/edit/tab_config.html:108 msgid "Permanent (does not auto-purge)" msgstr "Trvalý (nedojde ke smazání)" #: ../../static/t/room/edit/tab_config.html:113 msgid "Subject Required (Force users to specify a message subject)" msgstr "Předmět vyžadován" #: ../../static/t/room/edit/tab_config.html:116 msgid "Anonymous messages" msgstr "Anonymní zpráva" #: ../../static/t/room/edit/tab_config.html:122 msgid "No anonymous messages" msgstr "Žádné anonymní zprávy" #: ../../static/t/room/edit/tab_config.html:127 msgid "All messages are anonymous" msgstr "Všechny zprávy jsou anonymní" #: ../../static/t/room/edit/tab_config.html:132 msgid "Prompt user when entering messages" msgstr "Vyzvat uživatele při psaní zpráv" #: ../../static/t/room/edit/tab_config.html:136 msgid "Room aide: " msgstr "Admin místnosti: " #: ../../static/t/room/edit/tab_listserv.html:5 msgid "" "The contents of this room are being mailed as individual messages " "to the following list recipients:

    " msgstr "" "Obsah této místnosti je odesílán jako samostatné zprávy na " "následující seznam příjemců:

    " #: ../../static/t/room/edit/tab_listserv.html:19 msgid "" "The contents of this room are being mailed in digest form to the " "following list recipients:

    " msgstr "" "Obsah této místnosti je odesílán ve formě digest na následující " "seznam příjemců:

    " #: ../../static/t/room/edit/tab_listserv.html:39 msgid "Add recipients from Contacts or other address books" msgstr "Přidejte příjemce z Kontaktů nebo ostatních adresních seznamů" #: ../../static/t/room/edit/tab_listserv.html:48 msgid "Allow non-subscribers to mail to this room." msgstr "Povolit neodběratelům odesílat mail na tuto místnost." #: ../../static/t/room/edit/tab_listserv.html:54 msgid "Room post publication needs Admin permission." msgstr "Publikace příspěvků v místnosti vyžaduje oprávnění Admin." #: ../../static/t/room/edit/tab_listserv.html:59 msgid "Allow self-service subscribe/unsubscribe requests." msgstr "" #: ../../static/t/room/edit/tab_listserv.html:65 msgid "The URL for subscribe/unsubscribe is: " msgstr "Adresa pro odběratele/neodběratele: " #: ../../static/t/room/edit/digestrecp_removal.html:1 #: ../../static/t/room/edit/pop3client_removal.html:9 #: ../../static/t/room/edit/listrecp_removal.html:1 #: ../../static/t/room/edit/rssclient_removal.html:5 msgid "(remove)" msgstr "(odstranit)" #: ../../static/t/room/edit/tab_admin.html:5 msgid "Delete this room" msgstr "Odstranit tuto místnost" #: ../../static/t/room/edit/tab_admin.html:10 msgid "Set or change the icon for this rooms banner" msgstr "Nastavit nebo upravit ikonu pro návěstí této místnosti" #: ../../static/t/room/edit/tab_admin.html:14 msgid "Edit this rooms Info file" msgstr "Upravit Informace o místnosti" #: ../../static/t/room/edit/tab_share.html:5 msgid "Shared with" msgstr "Sdíleno s" #: ../../static/t/room/edit/tab_share.html:6 msgid "Not shared with" msgstr "Nesdíleno s" #: ../../static/t/room/edit/tab_share.html:11 #: ../../static/t/room/edit/tab_share.html:21 msgid "Remote node name" msgstr "Jméno vzdáleného uzlu" #: ../../static/t/room/edit/tab_share.html:12 #: ../../static/t/room/edit/tab_share.html:22 msgid "Remote room name" msgstr "Jméno vzdálené místnosti" #: ../../static/t/room/edit/tab_share.html:13 #: ../../static/t/room/edit/tab_share.html:23 msgid "Actions" msgstr "Akce" #: ../../static/t/room/edit/tab_share.html:35 msgid "" "When sharing a room, it must be shared from both ends. Adding a node to the " "'shared' list sends messages out, but in order to receive messages, the " "other nodes must be configured to send messages out to your system as well. " "
  • If the remote room name is blank, it is assumed that the room name is " "identical on the remote node.
  • If the remote room name is different, the " "remote node must also configure the name of the room here." msgstr "" #: ../../static/t/room/edit/tab_feed.html:2 msgid "" "Retrieve messages from these remote POP3 accounts and store them in this " "room:" msgstr "" "Stáhnout zprávy ze vzdáleného POP3 servru a ulož je v této místnosti:" #: ../../static/t/room/edit/tab_feed.html:12 msgid "Remote host" msgstr "Vzdálený host" #: ../../static/t/room/edit/tab_feed.html:15 msgid "Keep messages on server?" msgstr "Ponechat zprávy na servru?" #: ../../static/t/room/edit/tab_feed.html:16 msgid "Interval" msgstr "Rozmezí" #: ../../static/t/room/edit/tab_feed.html:31 msgid "Fetch the following RSS feeds and store them in this room:" msgstr "Načti RSS feedy a ulož je v této místnosti:" #: ../../static/t/room/edit/tab_feed.html:43 msgid "Feed URL" msgstr "Adresa kanálu" #: ../../static/t/room/edit/tab_access.html:5 msgid "" "The users listed below have access to this room. To remove a user from the " "access list, select the user name from the list and click 'Kick'." msgstr "" "Níže zobrazení uživatelé mají přístup do této místnosti. Pro odstranění " "uživatele z přístupového seznamu, vyberte uživatele a klikněte \"Vykopnout\"" #: ../../static/t/room/edit/tab_access.html:20 msgid "" "To grant another user access to this room, enter the user name in the box " "below and click 'Invite'." msgstr "" "Pokud chcete umožnit přístup ostatním uživatelům do této místnosti, vložte " "jejich jméno klikněte \"Pozvat\"" #: ../../static/t/room/edit/tab_access.html:26 msgid "Invite:" msgstr "Pozvat:" #: ../../static/t/room/edit/tab_access.html:35 msgid "Users" msgstr "Uživatelé" #: ../../static/t/room/zapped_list.html:7 msgid "Zapped (forgotten) rooms" msgstr "Schované místnosti" #: ../../static/t/room/zapped_list.html:10 msgid "Click on any room to un-zap it and goto that room." msgstr "Klikněte na místnost pro obnovení a vstup do této místnosti." #: ../../static/t/room/display_private.html:7 msgid "Go to a hidden room" msgstr "Jít do skryté místnosti" #: ../../static/t/room/display_private.html:8 msgid "" "If you know the name of a hidden (guess-name) or passworded room, you can " "enter that room by typing its name below. Once you gain access to a private " "room, it will appear in your regular room listings so you don‘t have to keep " "returning here." msgstr "" "Pokud znáte jméno skryté nebo zaheslované místnosti, můžete vstoupit zadáním " "jejího jméno níže. Jakmile získáte přístup do soukromé místnosti, objeví se " "vám mezi běžnými místnostmi, takže se sem nemusíte vracet." #: ../../static/t/room/display_private.html:14 msgid "Enter room name:" msgstr "Vložte jméno místnosti:" #: ../../static/t/room/display_private.html:21 msgid "Enter room password:" msgstr "Vložte heslo místnosti" #: ../../static/t/room/create.html:11 #: ../../static/t/menu/advanced_roomcommands.html:6 msgid "Create a new room" msgstr "Vytvořit novou místnost" #: ../../static/t/room/create.html:18 msgid "Name of room: " msgstr "Jméno místnosti: " #: ../../static/t/room/create.html:32 msgid "Default view for room: " msgstr "Základní pohled pro místnost: " #: ../../static/t/room/zap_this.html:3 msgid "Zap (forget/unsubscribe) the current room" msgstr "Schovat současnou místnost" #: ../../static/t/room/zap_this.html:6 msgid "If you select this option," msgstr "Pokud vyberete tuto možnost," #: ../../static/t/room/zap_this.html:8 msgid "will disappear from your room list. Is this what you wish to do?" msgstr "zmizí ze seznamu místností. Přejete si to udělat?" #: ../../static/t/menu/your_info.html:2 msgid "Change your preferences and settings" msgstr "Upravte své preference a nastavení" #: ../../static/t/menu/your_info.html:3 msgid "Update your contact information" msgstr "Aktualizujte své kontaktní informace" #: ../../static/t/menu/your_info.html:5 msgid "Enter your 'bio'" msgstr "Vložte vaše 'bio'" #: ../../static/t/menu/your_info.html:6 msgid "Edit your online photo" msgstr "Upravit online foto" #: ../../static/t/menu/your_info.html:8 msgid "Edit your push email settings" msgstr "Upravit nastavení push email" #: ../../static/t/menu/your_info.html:9 msgid "Manage your OpenIDs" msgstr "Upravit OpenID" #: ../../static/t/menu/basic_commands.html:3 msgid "List known rooms" msgstr "Zobraz místnosti" #: ../../static/t/menu/basic_commands.html:3 msgid "Where can I go from here?" msgstr "Kam můžu pokračovat?" #: ../../static/t/menu/basic_commands.html:4 ../../static/t/navbar.html:168 msgid "Goto next room" msgstr "Jít do vedlejší místnosti" #: ../../static/t/menu/basic_commands.html:4 msgid "...with unread messages" msgstr "...s nepřečtenými zprávami" #: ../../static/t/menu/basic_commands.html:5 msgid "Skip to next room" msgstr "Přeskoč do další místnosti" #: ../../static/t/menu/basic_commands.html:5 msgid "(come back here later)" msgstr "(vraťte se sem později)" #: ../../static/t/menu/basic_commands.html:6 ../../static/t/navbar.html:5 msgid "Ungoto" msgstr "Jít zpět" #: ../../static/t/menu/basic_commands.html:6 msgid "oops! Back to " msgstr "oops! Zpět na " #: ../../static/t/menu/basic_commands.html:10 ../../static/t/navbar.html:13 msgid "Read new messages" msgstr "Přečíst nové zprávy" #: ../../static/t/menu/basic_commands.html:10 msgid "...in this room" msgstr "...v této místnosti" #: ../../static/t/menu/basic_commands.html:11 ../../static/t/navbar.html:19 msgid "Read all messages" msgstr "Přečíst všechny zprávy" #: ../../static/t/menu/basic_commands.html:11 msgid "...old and new" msgstr "...staré a nové" #: ../../static/t/menu/basic_commands.html:12 ../../static/t/navbar.html:25 msgid "Enter a message" msgstr "Vložte zprávu" #: ../../static/t/menu/basic_commands.html:12 msgid "(post in this room)" msgstr "(posláno v této místnosti)" #: ../../static/t/menu/basic_commands.html:13 msgid "File library" msgstr "Knihovna souborů" #: ../../static/t/menu/basic_commands.html:13 msgid "(List files available for download)" msgstr "(Zobrazit dostupné soubory pro stáhnutí)" #: ../../static/t/menu/basic_commands.html:17 msgid "Summary page" msgstr "Stránka s přehledem" #: ../../static/t/menu/basic_commands.html:17 msgid "Summary of my account" msgstr "Přehled mého účtu" #: ../../static/t/menu/basic_commands.html:18 msgid "User list" msgstr "Seznam uživatelů" #: ../../static/t/menu/basic_commands.html:18 msgid "(all registered users)" msgstr "(všichni registrovaní uživatelé)" #: ../../static/t/menu/basic_commands.html:19 msgid "Bye!" msgstr "Mějte se!" #: ../../static/t/menu/advanced_roomcommands.html:3 msgid "Edit or delete this room" msgstr "Upravit nebo odstranit místnost" #: ../../static/t/menu/advanced_roomcommands.html:5 msgid "Go to a 'hidden' room" msgstr "Jdi do 'skryté' místnosti" #: ../../static/t/menu/advanced_roomcommands.html:7 msgid "Zap (forget) this room" msgstr "Schovat tuto místnost" #: ../../static/t/menu/advanced_roomcommands.html:8 msgid "List all forgotten rooms" msgstr "Seznam všech schovaných místností" #: ../../static/t/navbar.html:34 msgid "View contacts" msgstr "Zobrazit kontakty" #: ../../static/t/navbar.html:40 msgid "Add new contact" msgstr "Přidat kontakt" #: ../../static/t/navbar.html:49 msgid "Day view" msgstr "Denní pohled" #: ../../static/t/navbar.html:55 msgid "Month view" msgstr "Měsíční pohled" #: ../../static/t/navbar.html:61 msgid "Add new event" msgstr "Přidat událost" #: ../../static/t/navbar.html:70 msgid "Calendar list" msgstr "" #: ../../static/t/navbar.html:79 msgid "View tasks" msgstr "Zobrazit úkoly" #: ../../static/t/navbar.html:85 msgid "Add new task" msgstr "Přidat nový úkol" #: ../../static/t/navbar.html:94 msgid "View notes" msgstr "Zobrazit poznámky" #: ../../static/t/navbar.html:101 msgid "Add new note" msgstr "Přidat novou poznámku" #: ../../static/t/navbar.html:110 msgid "Refresh message list" msgstr "Aktualizovat list zpráv" #: ../../static/t/navbar.html:122 msgid "Write mail" msgstr "Napsat e-mail" #: ../../static/t/navbar.html:132 msgid "Wiki home" msgstr "Wiki" #: ../../static/t/navbar.html:139 msgid "Edit this page" msgstr "Upravit tuto stránku" #: ../../static/t/navbar.html:145 msgid "History" msgstr "Historie" #: ../../static/t/navbar.html:154 msgid "New blog post" msgstr "Nový zápisek na blog" #: ../../static/t/navbar.html:162 msgid "Skip this room" msgstr "Přeskočit tuto místnost" #: ../../static/t/msg_listview.html:18 msgid "Loading messages from server, please wait" msgstr "Načítám zprávy ze serveru, prosím čekejte" #: ../../static/t/msg_listview.html:24 msgid "Open in new window" msgstr "Otevřít v novém okně" #: ../../static/t/msg_listview.html:26 msgid "Copy" msgstr "Kopírovat" #: ../../static/t/view_mailq/message.html:6 msgid "Originaly posted in: " msgstr "Originálně zasláno v " #: ../../static/t/view_mailq/header.html:15 msgid "Refresh this page" msgstr "Obnovit tuto stránku" #: ../../static/t/view_mailq/header.html:21 msgid "Message ID" msgstr "ID zprávy" #: ../../static/t/view_mailq/header.html:23 msgid "Date/time submitted" msgstr "Datum a čas poslání" #: ../../static/t/view_mailq/header.html:25 msgid "Next attempt" msgstr "Další pokus" #: ../../static/t/view_mailq/header.html:29 msgid "Recipients" msgstr "Příjemci" #: ../../static/t/view_mailq/footer_empty.html:4 msgid "The queue is empty." msgstr "Fronta je prázdná." #: ../../static/t/view_mailq/footer_empty.html:9 #: ../../static/t/view_mailq/footer.html:5 msgid "You do not have permission to view this resource." msgstr "Nemáte povolení vidět tento zdroj." #: ../../static/t/get_logged_in.html:5 msgid "You must be logged in to access this page." msgstr "Musíte být přihlášen pro přístup k této stránce." #: ../../static/t/get_logged_in.html:9 #: ../../static/t/edit_message/attachments_pane.html:3 msgid "Close window" msgstr "Zavřít okno" #: ../../static/t/get_logged_in.html:55 msgid "Log in using a user name and password" msgstr "Přihlašte se s uživatelským jménem a heslem" #: ../../static/t/get_logged_in.html:60 ../../static/t/get_logged_in.html:75 msgid "Password:" msgstr "Heslo:" #: ../../static/t/get_logged_in.html:65 ../../static/t/get_logged_in.html:69 msgid "New user? Register now" msgstr "Nový uživatel? Zaregistrujte se" #: ../../static/t/get_logged_in.html:70 msgid "" "enter the name and password you wish to use, and click "New User." " msgstr "" #: ../../static/t/get_logged_in.html:83 msgid "Log in using OpenID" msgstr "Přihlašte se s pomocí OpenID" #: ../../static/t/get_logged_in.html:85 msgid "OpenID URL:" msgstr "OpenID URL:" #: ../../static/t/get_logged_in.html:92 msgid "Log in using Google" msgstr "Přihlásit se použitím Google" #: ../../static/t/get_logged_in.html:97 msgid "Log in using Yahoo" msgstr "Přihlásit se použitím Yahoo" #: ../../static/t/get_logged_in.html:102 msgid "Log in using AOL or AIM" msgstr "Přihlásit použitím AOL nebo AIM" #: ../../static/t/get_logged_in.html:104 msgid "Enter your AOL or AIM screen name:" msgstr "" #: ../../static/t/get_logged_in.html:115 msgid "Please wait" msgstr "Čekejte prosím" #: ../../static/t/summary/page.html:4 msgid "Summary page for " msgstr "Souhrná strana pro " #: ../../static/t/summary/page.html:21 msgid "Messages" msgstr "Zprávy" #: ../../static/t/summary/page.html:39 msgid "Today on your calendar" msgstr "Dnes ve vašem kalendáři" #: ../../static/t/summary/page.html:51 msgid "Who‘s online now" msgstr "Kdo je nyní  online " #: ../../static/t/summary/page.html:60 msgid "About this server" msgstr "O tomto serveru" #: ../../static/t/summary/page.html:63 msgid "You are connected to" msgstr "Připojen k" #: ../../static/t/summary/page.html:64 msgid "running" msgstr "běží" #: ../../static/t/summary/page.html:65 msgid "with" msgstr "s" #: ../../static/t/summary/page.html:66 msgid "server build" msgstr "sestavení serveru" #: ../../static/t/summary/page.html:67 msgid "and located in" msgstr "nachází se v" #: ../../static/t/summary/page.html:68 msgid "Your system administrator is" msgstr "Váš systémový administrátor je" #: ../../static/t/edit_message/attachments_pane.html:16 msgid "Attach file" msgstr "Připojit soubor" #: ../../static/t/edit_message/attachments_pane.html:21 msgid "Upload" msgstr "Nahrát" #: ../../static/t/edit_message/section_attach_select.html:4 msgid "Remove" msgstr "Odstranit" #: ../../static/t/loggedinas.html:3 msgid "Logged in as" msgstr "Přihlášen jako" #: ../../static/t/loggedinas.html:6 msgid "Not logged in." msgstr "Nepřihlášen." webcit-8.24-dfsg.orig/po/webcit/webcit.pot0000644000175000017500000024652412271477123020311 0ustar michaelmichael# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR The Citadel Project - http://www.citadel.org # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-03-20 01:03-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: ../../roomops.c:708 ../../roomops.c:1005 ../../sieve.c:364 msgid "Cancelled. Changes were not saved." msgstr "" #: ../../roomops.c:838 ../../sieve.c:417 msgid "Your changes have been saved." msgstr "" #: ../../roomops.c:881 #, c-format msgid "User '%s' kicked out of room '%s'." msgstr "" #: ../../roomops.c:898 #, c-format msgid "User '%s' invited to room '%s'." msgstr "" #: ../../roomops.c:927 msgid "Cancelled. No new room was created." msgstr "" #: ../../roomops.c:1187 msgid "Floor has been deleted." msgstr "" #: ../../roomops.c:1211 msgid "New floor has been created." msgstr "" #: ../../roomops.c:1290 msgid "Room list view" msgstr "" #: ../../roomops.c:1293 msgid "Show empty floors" msgstr "" #: ../../roomviews.c:50 msgid "Bulletin Board" msgstr "" #: ../../roomviews.c:51 msgid "Mail Folder" msgstr "" #: ../../roomviews.c:52 msgid "Address Book" msgstr "" #: ../../roomviews.c:53 ../../static/t/iconbar.html:24 #: ../../static/t/iconbar/edit.html:55 msgid "Calendar" msgstr "" #: ../../roomviews.c:54 msgid "Task List" msgstr "" #: ../../roomviews.c:55 msgid "Notes List" msgstr "" #: ../../roomviews.c:56 msgid "Wiki" msgstr "" #: ../../roomviews.c:57 msgid "Calendar List" msgstr "" #: ../../roomviews.c:58 msgid "Journal" msgstr "" #: ../../roomviews.c:59 msgid "Drafts" msgstr "" #: ../../roomviews.c:60 msgid "Blog" msgstr "" #: ../../tasks.c:93 msgid "Completed?" msgstr "" #: ../../tasks.c:95 msgid "Name of task" msgstr "" #: ../../tasks.c:97 msgid "Date due" msgstr "" #: ../../tasks.c:99 msgid "Category" msgstr "" #: ../../tasks.c:101 msgid "Show All" msgstr "" #: ../../tasks.c:223 msgid "Edit task" msgstr "" #: ../../tasks.c:242 ../../calendar.c:98 ../../calendar_view.c:298 #: ../../calendar_view.c:959 ../../calendar_view.c:1003 #: ../../calendar_view.c:1084 msgid "Summary:" msgstr "" #: ../../tasks.c:253 msgid "Start date:" msgstr "" #: ../../tasks.c:261 ../../tasks.c:291 msgid "No date" msgstr "" #: ../../tasks.c:265 ../../tasks.c:294 msgid "or" msgstr "" #: ../../tasks.c:279 ../../tasks.c:308 msgid "Time associated" msgstr "" #: ../../tasks.c:283 msgid "Due date:" msgstr "" #: ../../tasks.c:312 msgid "Completed:" msgstr "" #: ../../tasks.c:323 msgid "Category:" msgstr "" #: ../../tasks.c:333 ../../calendar.c:159 ../../static/t/files.html:12 msgid "Description:" msgstr "" #: ../../tasks.c:351 ../../event.c:764 msgid "Save" msgstr "" #: ../../tasks.c:352 ../../event.c:765 ../../static/t/aide/inet/section.html:5 #: ../../static/t/view_blog/comment.html:12 #: ../../static/t/view_blog/post.html:15 ../../static/t/view_message.html:32 #: ../../static/t/navbar.html:116 ../../static/t/msg_listview.html:27 msgid "Delete" msgstr "" #: ../../tasks.c:353 ../../vcard_edit.c:1216 ../../paging.c:66 #: ../../event.c:767 ../../sysmsgs.c:69 ../../who.c:200 ../../auth.c:812 #: ../../static/t/edit_message.html:135 ../../static/t/confirmlogoff.html:4 msgid "Cancel" msgstr "" #: ../../tasks.c:423 ../../calendar_view.c:1379 msgid "Untitled Task" msgstr "" #: ../../fmt_date.c:310 msgid "Time format" msgstr "" #: ../../listsub.c:54 ../../static/t/listsub/display.html:5 msgid "List subscription" msgstr "" #: ../../listsub.c:67 ../../static/t/listsub/display.html:9 msgid "List subscribe/unsubscribe" msgstr "" #: ../../listsub.c:87 ../../static/t/listsub/display.html:15 #: ../../static/t/listsub/display.html:34 msgid "Confirmation request sent" msgstr "" #: ../../listsub.c:89 #, c-format msgid "" "You are subscribing %s to the %s mailing list. The " "listserver has sent you an e-mail with one additional Web link for you to " "click on to confirm your subscription. This extra step is for your " "protection, as it prevents others from being able to subscribe you to lists " "without your consent.

    Please click on the link which is being e-" "mailed to you and your subscription will be confirmed.
    \n" msgstr "" #: ../../listsub.c:102 ../../static/t/listsub/display.html:24 msgid "Go back..." msgstr "" #: ../../listsub.c:253 ../../listsub.c:291 ../../listsub.c:327 #: ../../listsub.c:334 msgid "You need to specify the mailinglist to subscribe to." msgstr "" #: ../../listsub.c:260 ../../listsub.c:298 msgid "You need to specify the email address you'd like to subscribe with." msgstr "" #: ../../blogview_renderer.c:58 ../../blogview_renderer.c:74 #, c-format msgid "%d comments" msgstr "" #: ../../blogview_renderer.c:61 ../../blogview_renderer.c:77 msgid "permalink" msgstr "" #: ../../blogview_renderer.c:302 msgid "Newer posts" msgstr "" #: ../../blogview_renderer.c:311 msgid "Older posts" msgstr "" #: ../../useredit.c:629 msgid "" "An error occurred while trying to create or edit this address book entry." msgstr "" #: ../../useredit.c:717 msgid "Changes were not saved." msgstr "" #: ../../useredit.c:782 msgid "A new user has been created." msgstr "" #: ../../useredit.c:786 msgid "" "You are attempting to create a new user from within Citadel while running in " "host based authentication mode. In this mode, you must create new users on " "the host system, not within Citadel." msgstr "" #: ../../bbsview_renderer.c:312 msgid "Go to page: " msgstr "" #: ../../bbsview_renderer.c:354 msgid "First" msgstr "" #: ../../bbsview_renderer.c:360 msgid "Last" msgstr "" #: ../../graphics.c:56 msgid "Graphics upload has been cancelled." msgstr "" #: ../../graphics.c:62 msgid "You didn't upload a file." msgstr "" #: ../../graphics.c:112 msgid "your photo" msgstr "" #: ../../graphics.c:119 msgid "the icon for this room" msgstr "" #: ../../graphics.c:127 msgid "the Greetingpicture for the login prompt" msgstr "" #: ../../graphics.c:135 msgid "the Logoff banner picture" msgstr "" #: ../../graphics.c:146 msgid "the icon for this floor" msgstr "" #: ../../calendar_tools.c:100 msgid "Hour: " msgstr "" #: ../../calendar_tools.c:120 msgid "Minute: " msgstr "" #: ../../calendar_tools.c:191 msgid "(status unknown)" msgstr "" #: ../../calendar_tools.c:207 msgid "(needs action)" msgstr "" #: ../../calendar_tools.c:210 msgid "(accepted)" msgstr "" #: ../../calendar_tools.c:213 msgid "(declined)" msgstr "" #: ../../calendar_tools.c:216 msgid "(tenative)" msgstr "" #: ../../calendar_tools.c:219 msgid "(delegated)" msgstr "" #: ../../calendar_tools.c:222 msgid "(completed)" msgstr "" #: ../../calendar_tools.c:225 msgid "(in process)" msgstr "" #: ../../calendar_tools.c:228 msgid "(none)" msgstr "" #: ../../notes.c:343 msgid "Click on any note to edit it." msgstr "" #: ../../vcard_edit.c:175 ../../vcard_edit.c:178 msgid "(no name)" msgstr "" #: ../../vcard_edit.c:443 msgid " (work)" msgstr "" #: ../../vcard_edit.c:445 msgid " (home)" msgstr "" #: ../../vcard_edit.c:447 msgid " (cell)" msgstr "" #: ../../vcard_edit.c:458 ../../vcard_edit.c:1120 msgid "Address:" msgstr "" #: ../../vcard_edit.c:526 msgid "Telephone:" msgstr "" #: ../../vcard_edit.c:531 msgid "E-mail:" msgstr "" #: ../../vcard_edit.c:779 msgid "This address book is empty." msgstr "" #: ../../vcard_edit.c:793 msgid "An internal error has occurred." msgstr "" #: ../../vcard_edit.c:944 msgid "Error" msgstr "" #: ../../vcard_edit.c:1048 msgid "Edit contact information" msgstr "" #: ../../vcard_edit.c:1068 msgid "Prefix" msgstr "" #: ../../vcard_edit.c:1068 msgid "First Name" msgstr "" #: ../../vcard_edit.c:1068 msgid "Middle Name" msgstr "" #: ../../vcard_edit.c:1068 msgid "Last Name" msgstr "" #: ../../vcard_edit.c:1068 msgid "Suffix" msgstr "" #: ../../vcard_edit.c:1089 msgid "Display name:" msgstr "" #: ../../vcard_edit.c:1096 msgid "Title:" msgstr "" #: ../../vcard_edit.c:1103 msgid "Organization:" msgstr "" #: ../../vcard_edit.c:1114 msgid "PO box:" msgstr "" #: ../../vcard_edit.c:1130 msgid "City:" msgstr "" #: ../../vcard_edit.c:1136 msgid "State:" msgstr "" #: ../../vcard_edit.c:1142 msgid "ZIP code:" msgstr "" #: ../../vcard_edit.c:1148 msgid "Country:" msgstr "" #: ../../vcard_edit.c:1158 msgid "Home telephone:" msgstr "" #: ../../vcard_edit.c:1164 msgid "Work telephone:" msgstr "" #: ../../vcard_edit.c:1170 msgid "Mobile telephone:" msgstr "" #: ../../vcard_edit.c:1176 msgid "Fax number:" msgstr "" #: ../../vcard_edit.c:1187 msgid "Primary Internet e-mail address" msgstr "" #: ../../vcard_edit.c:1194 msgid "Internet e-mail aliases" msgstr "" #: ../../vcard_edit.c:1215 ../../sysmsgs.c:67 msgid "Save changes" msgstr "" #: ../../vcard_edit.c:1261 msgid "Unable to enter the room to save your message" msgstr "" #: ../../vcard_edit.c:1265 msgid "Aborting." msgstr "" #: ../../vcard_edit.c:1297 ../../vcard_edit.c:1341 ../../auth.c:367 #: ../../auth.c:397 msgid "An error has occurred." msgstr "" #: ../../vcard_edit.c:1399 msgid "Could Not decode vcard photo\n" msgstr "" #: ../../preferences.c:880 msgid "Cancelled. No settings were changed." msgstr "" #: ../../preferences.c:1092 msgid "Make this my start page" msgstr "" #: ../../preferences.c:1130 msgid "This isn't allowed to become the start page." msgstr "" #: ../../preferences.c:1132 msgid "You no longer have a start page selected." msgstr "" #: ../../preferences.c:1182 msgid "Prefered startpage" msgstr "" #: ../../calendar.c:76 msgid "Meeting invitation" msgstr "" #: ../../calendar.c:79 msgid "Attendee's reply to your invitation" msgstr "" #: ../../calendar.c:82 msgid "Published event" msgstr "" #: ../../calendar.c:85 msgid "This is an unknown type of calendar item." msgstr "" #: ../../calendar.c:107 ../../calendar_view.c:306 ../../calendar_view.c:964 #: ../../calendar_view.c:1008 ../../calendar_view.c:1089 msgid "Location:" msgstr "" #: ../../calendar.c:132 ../../calendar_view.c:351 ../../calendar_view.c:970 msgid "Date:" msgstr "" #: ../../calendar.c:139 ../../calendar_view.c:373 ../../calendar_view.c:1013 #: ../../calendar_view.c:1099 msgid "Starting date/time:" msgstr "" #: ../../calendar.c:150 ../../calendar_view.c:376 ../../calendar_view.c:1015 #: ../../calendar_view.c:1101 msgid "Ending date/time:" msgstr "" #: ../../calendar.c:168 ../../event.c:90 msgid "Recurrence" msgstr "" #: ../../calendar.c:169 ../../event.c:505 msgid "This is a recurring event" msgstr "" #: ../../calendar.c:178 msgid "Attendee:" msgstr "" #: ../../calendar.c:218 #, c-format msgid "This is an update of '%s' which is already in your calendar." msgstr "" #: ../../calendar.c:222 #, c-format msgid "This event would conflict with '%s' which is already in your calendar." msgstr "" #: ../../calendar.c:227 msgid "Update:" msgstr "" #: ../../calendar.c:228 msgid "CONFLICT:" msgstr "" #: ../../calendar.c:251 msgid "How would you like to respond to this invitation?" msgstr "" #: ../../calendar.c:252 msgid "Accept" msgstr "" #: ../../calendar.c:253 msgid "Tentative" msgstr "" #: ../../calendar.c:254 msgid "Decline" msgstr "" #: ../../calendar.c:271 msgid "Click Update to accept this reply and update your calendar." msgstr "" #: ../../calendar.c:272 msgid "Update" msgstr "" #: ../../calendar.c:273 msgid "Ignore" msgstr "" #: ../../calendar.c:295 msgid "There was an error parsing this calendar item." msgstr "" #: ../../calendar.c:328 msgid "" "You have accepted this meeting invitation. It has been entered into your " "calendar." msgstr "" #: ../../calendar.c:332 msgid "" "You have tentatively accepted this meeting invitation. It has been " "'pencilled in' to your calendar." msgstr "" #: ../../calendar.c:336 msgid "" "You have declined this meeting invitation. It has not been entered " "into your calendar." msgstr "" #: ../../calendar.c:341 msgid "A reply has been sent to the meeting organizer." msgstr "" #. / Translators: RSVP aka Répondez s'il-vous-plaît Is the term #. / that the recipient of an ical-invitation should please #. / answer this request. #: ../../calendar.c:376 msgid "Your calendar has been updated to reflect this RSVP." msgstr "" #: ../../calendar.c:378 msgid "" "You have chosen to ignore this RSVP. Your calendar has not been " "updated." msgstr "" #: ../../calendar.c:932 msgid "Calendar day view begins at:" msgstr "" #: ../../calendar.c:933 msgid "Calendar day view ends at:" msgstr "" #: ../../calendar.c:934 msgid "Week starts on:" msgstr "" #: ../../paging.c:35 msgid "Send instant message" msgstr "" #: ../../paging.c:43 msgid "Send an instant message to: " msgstr "" #: ../../paging.c:57 msgid "Enter message text:" msgstr "" #: ../../paging.c:65 ../../static/t/edit_message.html:109 msgid "Send message" msgstr "" #: ../../paging.c:84 msgid "Message was not sent." msgstr "" #: ../../paging.c:95 msgid "Message has been sent to " msgstr "" #: ../../iconbar.c:328 msgid "Iconbar Setting" msgstr "" #. #. * Set to 'unknown' right from the beginning. Unless we learn #. * something else, that's what we'll go with. #. #: ../../availability.c:148 msgid "availability unknown" msgstr "" #: ../../availability.c:169 msgid "free" msgstr "" #: ../../availability.c:179 msgid "BUSY" msgstr "" #: ../../serv_func.c:193 msgid "" "This server is already serving its maximum number of users and cannot accept " "any additional logins at this time. Please try again later or contact your " "system administrator." msgstr "" #: ../../serv_func.c:198 ../../serv_func.c:227 msgid "Received unexpected answer from Citadel server; bailing out." msgstr "" #: ../../serv_func.c:236 #, c-format msgid "" "You are connected to a Citadel server running Citadel %d.%02d. \n" "In order to run this version of WebCit you must also have Citadel %d.%02d or " "newer.\n" "\n" "\n" msgstr "" #: ../../event.c:70 msgid "seconds" msgstr "" #: ../../event.c:71 msgid "minutes" msgstr "" #: ../../event.c:72 msgid "hours" msgstr "" #: ../../event.c:73 msgid "days" msgstr "" #: ../../event.c:74 msgid "weeks" msgstr "" #: ../../event.c:75 msgid "months" msgstr "" #: ../../event.c:76 msgid "years" msgstr "" #: ../../event.c:77 msgid "never" msgstr "" #: ../../event.c:81 msgid "first" msgstr "" #: ../../event.c:82 msgid "second" msgstr "" #: ../../event.c:83 msgid "third" msgstr "" #: ../../event.c:84 msgid "fourth" msgstr "" #: ../../event.c:85 msgid "fifth" msgstr "" #: ../../event.c:88 msgid "Event" msgstr "" #: ../../event.c:89 ../../event.c:437 ../../event.c:449 msgid "Attendees" msgstr "" #: ../../event.c:167 msgid "Add or edit an event" msgstr "" #: ../../event.c:206 ../../static/t/iconbar.html:13 #: ../../static/t/iconbar/edit.html:29 msgid "Summary" msgstr "" #: ../../event.c:217 msgid "Location" msgstr "" #: ../../event.c:228 ../../calendar_view.c:760 msgid "Start" msgstr "" #: ../../event.c:271 ../../calendar_view.c:957 ../../calendar_view.c:986 msgid "All day event" msgstr "" #: ../../event.c:277 ../../calendar_view.c:761 msgid "End" msgstr "" #: ../../event.c:327 ../../static/t/iconbar.html:34 #: ../../static/t/iconbar/edit.html:49 msgid "Notes" msgstr "" #: ../../event.c:369 msgid "Organizer" msgstr "" #: ../../event.c:374 msgid "(you are the organizer)" msgstr "" #: ../../event.c:392 msgid "Show time as:" msgstr "" #: ../../event.c:415 msgid "Free" msgstr "" #: ../../event.c:423 msgid "Busy" msgstr "" #: ../../event.c:440 msgid "(One per line)" msgstr "" #: ../../event.c:450 ../../static/t/edit_message.html:143 #: ../../static/t/iconbar.html:29 ../../static/t/iconbar/edit.html:42 msgid "Contacts" msgstr "" #: ../../event.c:513 msgid "Recurrence rule" msgstr "" #: ../../event.c:517 msgid "Repeats every" msgstr "" #. begin 'weekday_selector' div #: ../../event.c:535 msgid "on these weekdays:" msgstr "" #: ../../event.c:593 #, c-format msgid "on day %s%d%s of the month" msgstr "" #: ../../event.c:602 ../../event.c:664 msgid "on the " msgstr "" #: ../../event.c:626 msgid "of the month" msgstr "" #: ../../event.c:655 msgid "every " msgstr "" #: ../../event.c:656 msgid "year on this date" msgstr "" #: ../../event.c:688 ../../static/t/msg_listselector_bottom.html:7 #: ../../static/t/msg_listselector_top.html:7 msgid "of" msgstr "" #: ../../event.c:712 msgid "Recurrence range" msgstr "" #: ../../event.c:720 msgid "No ending date" msgstr "" #: ../../event.c:727 msgid "Repeat this event" msgstr "" #: ../../event.c:730 msgid "times" msgstr "" #: ../../event.c:738 msgid "Repeat this event until " msgstr "" #: ../../event.c:766 msgid "Check attendee availability" msgstr "" #: ../../event.c:858 ../../calendar_view.c:272 ../../calendar_view.c:468 #: ../../calendar_view.c:937 msgid "Untitled Event" msgstr "" #: ../../sysmsgs.c:52 #, c-format msgid "Edit %s" msgstr "" #: ../../sysmsgs.c:55 #, c-format msgid "" "Enter %s below. Text is formatted to the reader's browser. A newline is " "forced by preceding the next line by a blank." msgstr "" #: ../../sysmsgs.c:89 #, c-format msgid "Cancelled. %s was not saved." msgstr "" #: ../../sysmsgs.c:109 msgid " has been saved." msgstr "" #: ../../sysmsgs.c:116 ../../sysmsgs.c:117 msgid "Room info" msgstr "" #: ../../sysmsgs.c:122 ../../sysmsgs.c:124 msgid "Your bio" msgstr "" #: ../../calendar_view.c:297 ../../calendar_view.c:958 #: ../../calendar_view.c:1002 ../../calendar_view.c:1083 #: ../../static/t/sieve/display_one.html:20 msgid "From" msgstr "" #: ../../calendar_view.c:355 ../../calendar_view.c:974 msgid "Starting date:" msgstr "" #: ../../calendar_view.c:361 ../../calendar_view.c:976 msgid "Ending date:" msgstr "" #: ../../calendar_view.c:369 ../../calendar_view.c:1095 msgid "Date/time:" msgstr "" #: ../../calendar_view.c:386 ../../calendar_view.c:980 #: ../../calendar_view.c:1018 ../../calendar_view.c:1105 #: ../../static/t/room/edit/tab_share.html:32 msgid "Notes:" msgstr "" #: ../../calendar_view.c:585 ../../calendar_view.c:721 msgid "previous" msgstr "" #: ../../calendar_view.c:597 ../../calendar_view.c:733 #: ../../calendar_view.c:1308 msgid "next" msgstr "" #: ../../calendar_view.c:756 msgid "Week" msgstr "" #: ../../calendar_view.c:758 msgid "Hours" msgstr "" #: ../../calendar_view.c:759 ../../static/t/sieve/display_one.html:22 #: ../../static/t/msg_listview.html:9 msgid "Subject" msgstr "" #: ../../calendar_view.c:1001 ../../calendar_view.c:1024 msgid "Ongoing event" msgstr "" #: ../../messages.c:70 msgid "ERROR:" msgstr "" #: ../../messages.c:88 msgid "Empty message" msgstr "" #: ../../messages.c:1010 msgid "Cancelled. Message was not posted." msgstr "" #: ../../messages.c:1013 msgid "Automatically cancelled because you have already saved this message." msgstr "" #: ../../messages.c:1037 msgid "Saved to Drafts failed: " msgstr "" #: ../../messages.c:1102 msgid "Refusing to post empty message.\n" msgstr "" #: ../../messages.c:1128 msgid "Message has been saved to Drafts.\n" msgstr "" #: ../../messages.c:1137 msgid "Message has been sent.\n" msgstr "" #: ../../messages.c:1140 msgid "Message has been posted.\n" msgstr "" #: ../../messages.c:1679 msgid "The message was not moved." msgstr "" #: ../../messages.c:1719 #, c-format msgid "An error occurred while retrieving this part: %s/%s\n" msgstr "" #: ../../messages.c:1796 #, c-format msgid "An error occurred while retrieving this part: %s\n" msgstr "" #: ../../messages.c:1956 msgid "Attach signature to email messages?" msgstr "" #: ../../messages.c:1959 msgid "Use this signature:" msgstr "" #: ../../messages.c:1961 msgid "Default character set for email headers:" msgstr "" #: ../../messages.c:1964 msgid "Preferred email address" msgstr "" #: ../../messages.c:1966 msgid "Preferred display name for email messages" msgstr "" #: ../../messages.c:1970 msgid "Preferred display name for bulletin board posts" msgstr "" #: ../../messages.c:1973 msgid "Mailbox view mode" msgstr "" #: ../../inetconf.c:110 ../../inetconf.c:119 ../../inetconf.c:133 #: ../../inetconf.c:159 ../../netconf.c:156 ../../netconf.c:183 #: ../../netconf.c:191 ../../netconf.c:239 ../../netconf.c:247 msgid "Invalid Parameter" msgstr "" #: ../../inetconf.c:126 msgid " has been deleted." msgstr "" #. added status message #: ../../inetconf.c:144 msgid " added." msgstr "" #: ../../who.c:154 msgid "Edit your session display" msgstr "" #: ../../who.c:158 msgid "" "This screen allows you to change the way your session appears in the 'Who is " "online' listing. To turn off any 'fake' name you've previously set, simply " "click the appropriate 'change' button without typing anything in the " "corresponding box. " msgstr "" #: ../../who.c:171 msgid "Room name:" msgstr "" #: ../../who.c:176 msgid "Change room name" msgstr "" #: ../../who.c:180 msgid "Host name:" msgstr "" #: ../../who.c:185 msgid "Change host name" msgstr "" #: ../../who.c:190 ../../static/t/aide/edituser/detailview.html:20 #: ../../static/t/openid_manual_create.html:9 #: ../../static/t/get_logged_in.html:57 ../../static/t/get_logged_in.html:72 msgid "User name:" msgstr "" #: ../../who.c:195 msgid "Change user name" msgstr "" #: ../../siteconfig.c:46 ../../siteconfig.c:64 ../../roomlist.c:44 #: ../../roomlist.c:394 ../../static/t/room/edit/tab_expire.html:72 #: ../../static/t/room/edit/tab_config.html:149 #: ../../static/t/room/edit/tab_access.html:42 msgid "Higher access is required to access this function." msgstr "" #: ../../siteconfig.c:256 msgid "WARNING: Failed to parse Server Config; do you run a to new citserver?" msgstr "" #: ../../siteconfig.c:319 msgid "Your system configuration has been updated." msgstr "" #: ../../wiki.c:69 ../../wiki.c:162 ../../wiki.c:282 #, c-format msgid "There is no room called '%s'." msgstr "" #: ../../wiki.c:76 #, c-format msgid "'%s' is not a Wiki room." msgstr "" #: ../../wiki.c:110 #, c-format msgid "There is no page called '%s' here." msgstr "" #: ../../wiki.c:112 msgid "" "Select the 'Edit this page' link in the room banner if you would like to " "create this page." msgstr "" #: ../../wiki.c:181 ../../static/t/msg_listview.html:11 msgid "Date" msgstr "" #: ../../wiki.c:182 msgid "Author" msgstr "" #: ../../wiki.c:209 ../../wiki.c:218 msgid "(show)" msgstr "" #: ../../wiki.c:211 ../../static/t/navbar.html:145 msgid "Current version" msgstr "" #: ../../wiki.c:223 msgid "(revert)" msgstr "" #: ../../wiki.c:300 msgid "Page title" msgstr "" #: ../../webcit.c:316 msgid "Authorization Required" msgstr "" #: ../../webcit.c:324 #, c-format msgid "" "The resource you requested requires a valid username and password. You could " "not be logged in: %s\n" msgstr "" #: ../../webcit.c:647 ../../auth.c:526 msgid "" "This program was unable to connect or stay connected to the Citadel server. " "Please report this problem to your system administrator." msgstr "" #: ../../webcit.c:654 ../../auth.c:532 msgid "Read More..." msgstr "" #: ../../smtpqueue.c:134 ../../static/t/aide/ignetconf/section.html:5 #: ../../static/t/view_mailq/message.html:2 msgid "(Delete)" msgstr "" #: ../../smtpqueue.c:334 msgid "First Attempt pending" msgstr "" #: ../../roomlist.c:99 msgid "My Folders" msgstr "" #: ../../downloads.c:289 #, c-format msgid "An error occurred while retrieving this file: %s\n" msgstr "" #: ../../roomtokens.c:572 msgid "file" msgstr "" #: ../../roomtokens.c:574 msgid "files" msgstr "" #: ../../summary.c:128 msgid "(None)" msgstr "" #: ../../summary.c:184 msgid "(Nothing)" msgstr "" #: ../../msg_renderers.c:579 ../../static/t/who/bio.html:15 msgid "edit" msgstr "" #: ../../msg_renderers.c:1119 msgid "I don't know how to display " msgstr "" #: ../../msg_renderers.c:1353 msgid "(no subject)" msgstr "" #: ../../addressbook_popup.c:186 msgid "Add" msgstr "" #. an erased user #: ../../auth.c:30 ../../static/t/aide/edituser/detailview.html:43 #: ../../static/t/aide/siteconfig/tab_access.html:40 #: ../../static/t/aide/siteconfig/tab_access.html:51 msgid "Deleted" msgstr "" #. a new user #: ../../auth.c:33 ../../static/t/aide/edituser/detailview.html:44 #: ../../static/t/aide/siteconfig/tab_access.html:41 #: ../../static/t/aide/siteconfig/tab_access.html:52 #: ../../static/t/get_logged_in.html:79 msgid "New User" msgstr "" #. a trouble maker #: ../../auth.c:36 ../../static/t/aide/edituser/detailview.html:45 #: ../../static/t/aide/siteconfig/tab_access.html:42 #: ../../static/t/aide/siteconfig/tab_access.html:53 msgid "Problem User" msgstr "" #. user with normal privileges #: ../../auth.c:39 ../../static/t/aide/edituser/detailview.html:46 #: ../../static/t/aide/siteconfig/tab_access.html:43 #: ../../static/t/aide/siteconfig/tab_access.html:54 msgid "Local User" msgstr "" #. a user that may access network resources #: ../../auth.c:42 ../../static/t/aide/edituser/detailview.html:47 #: ../../static/t/aide/siteconfig/tab_access.html:44 #: ../../static/t/aide/siteconfig/tab_access.html:55 msgid "Network User" msgstr "" #. a moderator #: ../../auth.c:45 ../../static/t/aide/edituser/detailview.html:48 #: ../../static/t/aide/siteconfig/tab_access.html:45 #: ../../static/t/aide/siteconfig/tab_access.html:56 msgid "Preferred User" msgstr "" #. chief #: ../../auth.c:48 ../../static/t/aide/edituser/detailview.html:49 #: ../../static/t/aide/siteconfig/tab_access.html:46 #: ../../static/t/aide/siteconfig/tab_access.html:57 msgid "Admin" msgstr "" #: ../../auth.c:513 ../../static/t/iconbar.html:80 #: ../../static/t/confirmlogoff.html:3 #: ../../static/t/menu/basic_commands.html:19 msgid "Log off" msgstr "" #: ../../auth.c:537 msgid "Log in again" msgstr "" #: ../../auth.c:585 ../../static/t/aide/usermanagement.html:3 msgid "Validate new users" msgstr "" #: ../../auth.c:605 msgid "No users require validation at this time." msgstr "" #: ../../auth.c:655 msgid "very weak" msgstr "" #: ../../auth.c:658 msgid "weak" msgstr "" #: ../../auth.c:661 msgid "ok" msgstr "" #: ../../auth.c:665 msgid "strong" msgstr "" #: ../../auth.c:683 #, c-format msgid "Current access level: %d (%s)\n" msgstr "" #: ../../auth.c:691 msgid "Select access level for this user:" msgstr "" #: ../../auth.c:776 ../../static/t/menu/your_info.html:4 msgid "Change your password" msgstr "" #: ../../auth.c:800 msgid "Enter new password:" msgstr "" #: ../../auth.c:804 msgid "Enter it again to confirm:" msgstr "" #: ../../auth.c:810 msgid "Change password" msgstr "" #: ../../auth.c:830 msgid "Cancelled. Password was not changed." msgstr "" #: ../../auth.c:839 msgid "They don't match. Password was not changed." msgstr "" #: ../../auth.c:845 msgid "Blank passwords are not allowed." msgstr "" #: ../../openid.c:34 msgid "Manage Account/OpenID Associations" msgstr "" #: ../../openid.c:52 msgid "Do you really want to delete this OpenID?" msgstr "" #: ../../openid.c:53 msgid "(delete)" msgstr "" #: ../../openid.c:61 msgid "Add an OpenID: " msgstr "" #: ../../openid.c:64 msgid "Attach" msgstr "" #: ../../openid.c:68 #, c-format msgid "%s does not permit authentication via OpenID." msgstr "" #: ../../html2html.c:136 #, c-format msgid "realloc() error! couldn't get %d bytes: %s" msgstr "" #: ../../static/t/viewomatic.html:4 msgid "View as:" msgstr "" #: ../../static/t/sieve/list.html:32 ../../static/t/sieve/none.html:4 #: ../../static/t/menu/your_info.html:7 msgid "View/edit server-side mail filters" msgstr "" #: ../../static/t/sieve/list.html:41 msgid "When new mail arrives: " msgstr "" #: ../../static/t/sieve/list.html:43 msgid "Leave it in my inbox without filtering" msgstr "" #: ../../static/t/sieve/list.html:44 msgid "Filter it according to rules selected below" msgstr "" #: ../../static/t/sieve/list.html:45 msgid "Filter it through a manually edited script (advanced users only)" msgstr "" #: ../../static/t/sieve/list.html:52 msgid "Your incoming mail will not be filtered through any scripts." msgstr "" #: ../../static/t/sieve/list.html:64 msgid "Add rule" msgstr "" #: ../../static/t/sieve/list.html:71 msgid "The currently active script is: " msgstr "" #: ../../static/t/sieve/list.html:76 ../../static/t/sieve/add.html:3 msgid "Add or delete scripts" msgstr "" #: ../../static/t/sieve/display_one.html:16 msgid "If" msgstr "" #: ../../static/t/sieve/display_one.html:21 msgid "To or Cc" msgstr "" #: ../../static/t/sieve/display_one.html:23 msgid "Reply-to" msgstr "" #: ../../static/t/sieve/display_one.html:24 #: ../../static/t/msg_listview.html:10 #: ../../static/t/view_mailq/header.html:27 msgid "Sender" msgstr "" #: ../../static/t/sieve/display_one.html:25 msgid "Resent-From" msgstr "" #: ../../static/t/sieve/display_one.html:26 msgid "Resent-To" msgstr "" #: ../../static/t/sieve/display_one.html:27 msgid "Envelope From" msgstr "" #: ../../static/t/sieve/display_one.html:28 msgid "Envelope To" msgstr "" #: ../../static/t/sieve/display_one.html:29 msgid "X-Mailer" msgstr "" #: ../../static/t/sieve/display_one.html:30 msgid "X-Spam-Flag" msgstr "" #: ../../static/t/sieve/display_one.html:31 msgid "X-Spam-Status" msgstr "" #: ../../static/t/sieve/display_one.html:32 msgid "List-ID" msgstr "" #: ../../static/t/sieve/display_one.html:33 msgid "Message size" msgstr "" #: ../../static/t/sieve/display_one.html:34 #: ../../static/t/select_messageindex_all.html:1 msgid "All" msgstr "" #: ../../static/t/sieve/display_one.html:41 msgid "contains" msgstr "" #: ../../static/t/sieve/display_one.html:42 msgid "does not contain" msgstr "" #: ../../static/t/sieve/display_one.html:43 msgid "is" msgstr "" #: ../../static/t/sieve/display_one.html:44 msgid "is not" msgstr "" #: ../../static/t/sieve/display_one.html:45 msgid "matches" msgstr "" #: ../../static/t/sieve/display_one.html:46 msgid "does not match" msgstr "" #: ../../static/t/sieve/display_one.html:52 msgid "(All messages)" msgstr "" #: ../../static/t/sieve/display_one.html:56 msgid "is larger than" msgstr "" #: ../../static/t/sieve/display_one.html:57 msgid "is smaller than" msgstr "" #: ../../static/t/sieve/display_one.html:59 msgid "bytes" msgstr "" #: ../../static/t/sieve/display_one.html:65 msgid "Keep" msgstr "" #: ../../static/t/sieve/display_one.html:66 msgid "Discard silently" msgstr "" #: ../../static/t/sieve/display_one.html:67 msgid "Reject" msgstr "" #: ../../static/t/sieve/display_one.html:68 msgid "Move message to" msgstr "" #: ../../static/t/sieve/display_one.html:69 msgid "Forward to" msgstr "" #: ../../static/t/sieve/display_one.html:70 msgid "Vacation" msgstr "" #: ../../static/t/sieve/display_one.html:82 msgid "Message:" msgstr "" #: ../../static/t/sieve/display_one.html:90 msgid "and then" msgstr "" #: ../../static/t/sieve/display_one.html:93 msgid "continue processing" msgstr "" #: ../../static/t/sieve/display_one.html:94 msgid "stop" msgstr "" #: ../../static/t/sieve/none.html:9 msgid "" "This installation of Citadel was built without support for server-side mail " "filtering.
    Please contact your system administrator if you require this " "feature.
    " msgstr "" #: ../../static/t/sieve/add.html:9 msgid "Add a new script" msgstr "" #: ../../static/t/sieve/add.html:10 msgid "" "To create a new script, enter the desired script name in the box below and " "click 'Create'." msgstr "" #: ../../static/t/sieve/add.html:14 msgid "Script name: " msgstr "" #: ../../static/t/sieve/add.html:18 msgid "Edit scripts" msgstr "" #: ../../static/t/sieve/add.html:20 msgid "Return to the script editing screen" msgstr "" #: ../../static/t/sieve/add.html:23 msgid "Delete scripts" msgstr "" #: ../../static/t/sieve/add.html:24 msgid "" "To delete an existing script, select the script name from the list and click " "'Delete'." msgstr "" #: ../../static/t/msg/confirm_move.html:4 msgid "Confirm move of message" msgstr "" #: ../../static/t/msg/confirm_move.html:12 msgid "Move this message to:" msgstr "" #: ../../static/t/login.html:5 msgid "powered by" msgstr "" #: ../../static/t/login.html:15 ../../static/t/iconbar.html:88 #: ../../static/t/get_logged_in.html:64 ../../static/t/get_logged_in.html:88 #: ../../static/t/get_logged_in.html:93 ../../static/t/get_logged_in.html:98 #: ../../static/t/get_logged_in.html:107 msgid "Log in" msgstr "" #: ../../static/t/trailing.html:14 msgid "" "WARNING: You have JavaScript disabled in your web browser. Many functions " "of this system will not work properly." msgstr "" #: ../../static/t/view_submessage.html:4 #: ../../static/t/view_message/replyquote.html:3 #: ../../static/t/view_message/replyquote.html:7 #: ../../static/t/view_message/print.html:8 ../../static/t/view_message.html:7 msgid "from " msgstr "" #: ../../static/t/searchomatic.html:4 msgid "Search: " msgstr "" #: ../../static/t/listsub/display.html:16 msgid "You are subscribing " msgstr "" #: ../../static/t/listsub/display.html:17 msgid " to the " msgstr "" #: ../../static/t/listsub/display.html:18 msgid " mailing list." msgstr "" #: ../../static/t/listsub/display.html:19 msgid "" "The listserver has sent you an e-mail with one additional Web link for you " "to click on to confirm your subscription." msgstr "" #: ../../static/t/listsub/display.html:20 msgid "" "This extra step is for your protection, as it prevents others from being " "able to subscribe you to lists without your consent." msgstr "" #: ../../static/t/listsub/display.html:22 msgid "" "Please click on the link which is being e-mailed to you and your " "subscription will be confirmed." msgstr "" #: ../../static/t/listsub/display.html:27 #: ../../static/t/listsub/display.html:47 msgid "ERROR" msgstr "" #: ../../static/t/listsub/display.html:35 msgid "You are unsubscribing" msgstr "" #: ../../static/t/listsub/display.html:37 msgid "from the" msgstr "" #: ../../static/t/listsub/display.html:39 msgid "mailing list." msgstr "" #: ../../static/t/listsub/display.html:40 msgid "" "The listserver has sent you an e-mail with one additional Web link for you " "to click on to confirm your unsubscription." msgstr "" #: ../../static/t/listsub/display.html:41 msgid "" "This extra step is for your protection, as it prevents others from being " "able to unsubscribe you from lists without your consent." msgstr "" #: ../../static/t/listsub/display.html:43 msgid "" "Please click on the link which is being e-mailed to you and your " "unsubscription will be confirmed." msgstr "" #: ../../static/t/listsub/display.html:44 msgid "Back..." msgstr "" #: ../../static/t/listsub/display.html:54 msgid "Confirmation successful!" msgstr "" #: ../../static/t/listsub/display.html:56 msgid "Confirmation failed." msgstr "" #: ../../static/t/listsub/display.html:57 msgid "This could mean one of two things:" msgstr "" #: ../../static/t/listsub/display.html:59 msgid "" "You waited too long to confirm your subscribe/unsubscribe request (the " "confirmation link is only valid for three days)" msgstr "" #: ../../static/t/listsub/display.html:60 msgid "" "You have already successfully confirmed your subscribe/unsubscribe " "request and are attempting to do it again." msgstr "" #: ../../static/t/listsub/display.html:62 msgid "The error returned by the server was: " msgstr "" #: ../../static/t/listsub/display.html:70 msgid "Name of list:" msgstr "" #: ../../static/t/listsub/display.html:75 msgid "Your e-mail address:" msgstr "" #: ../../static/t/listsub/display.html:79 msgid "(If subscribing) preferred format: " msgstr "" #: ../../static/t/listsub/display.html:80 msgid "One message at a time" msgstr "" #: ../../static/t/listsub/display.html:81 msgid "Digest format" msgstr "" #: ../../static/t/listsub/display.html:89 msgid "" "When you attempt to subscribe or unsubscribe to a mailing list, you will " "receive an e-mail containing one additional web link to click on for final " "confirmation." msgstr "" #: ../../static/t/listsub/display.html:90 msgid "" "This extra step is for your protection, as it prevents others from being " "able to subscribe or unsubscribe you to lists." msgstr "" #: ../../static/t/floors_edit_one.html:11 msgid "(delete floor)" msgstr "" #: ../../static/t/floors_edit_one.html:13 msgid "(edit graphic)" msgstr "" #: ../../static/t/floors.html:4 msgid "Add/change/delete floors" msgstr "" #: ../../static/t/floors.html:10 msgid "Floor number" msgstr "" #: ../../static/t/floors.html:11 msgid "Floor name" msgstr "" #: ../../static/t/floors.html:12 msgid "Number of rooms" msgstr "" #: ../../static/t/floors.html:13 msgid "Floor CSS" msgstr "" #: ../../static/t/files.html:4 msgid "Files available for download in" msgstr "" #: ../../static/t/files.html:9 msgid "Upload a file:" msgstr "" #: ../../static/t/files.html:30 msgid "Filename" msgstr "" #: ../../static/t/files.html:31 msgid "Size" msgstr "" #: ../../static/t/files.html:32 msgid "Content" msgstr "" #: ../../static/t/files.html:33 msgid "Description" msgstr "" #: ../../static/t/edit_message.html:9 ../../static/t/iconbar.html:50 #: ../../static/t/iconbar.html:59 msgid "Loading" msgstr "" #: ../../static/t/edit_message.html:23 msgid "from" msgstr "" #: ../../static/t/edit_message.html:29 ../../static/t/edit_message.html:38 msgid "Anonymous" msgstr "" #: ../../static/t/edit_message.html:47 msgid "in" msgstr "" #: ../../static/t/edit_message.html:51 msgid "To:" msgstr "" #: ../../static/t/edit_message.html:57 #: ../../static/t/view_message/print.html:15 #: ../../static/t/view_message.html:15 msgid "CC:" msgstr "" #: ../../static/t/edit_message.html:63 msgid "BCC:" msgstr "" #: ../../static/t/edit_message.html:71 msgid "Subject (optional):" msgstr "" #: ../../static/t/edit_message.html:71 #: ../../static/t/view_message/replyquote.html:8 #: ../../static/t/view_message/print.html:16 #: ../../static/t/view_message.html:16 msgid "Subject:" msgstr "" #: ../../static/t/edit_message.html:86 msgid "--- forwarded message ---" msgstr "" #: ../../static/t/edit_message.html:110 msgid "Post message" msgstr "" #: ../../static/t/edit_message.html:118 msgid "Save to Drafts" msgstr "" #: ../../static/t/edit_message.html:126 #: ../../static/t/edit_message/attachments_pane.html:5 msgid "Attachments:" msgstr "" #: ../../static/t/aide/display_serverrestart_page.html:4 msgid "Message to your Users:" msgstr "" #: ../../static/t/aide/display_generic_result.html:2 msgid "Server command results" msgstr "" #: ../../static/t/aide/display_generic_result.html:18 msgid "Enter another command" msgstr "" #: ../../static/t/aide/display_generic_result.html:19 msgid "Return to menu" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:3 msgid "Site configuration" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:6 #: ../../static/t/aide/edituser/select.html:9 msgid "You need to be aide to view this." msgstr "" #: ../../static/t/aide/display_sitewide_config.html:11 msgid "General" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:12 msgid "Access" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:13 msgid "Network" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:14 msgid "Tuning" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:15 msgid "Directory" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:16 msgid "Auto-purger" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:17 msgid "Indexing/Journaling" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:18 #: ../../static/t/aide/siteconfig/tab_pushmail.html:1 msgid "Push Email" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:19 msgid "Pop3" msgstr "" #: ../../static/t/aide/usermanagement.html:2 msgid "Add, change, delete user accounts" msgstr "" #: ../../static/t/aide/display_inetconf.html:5 #: ../../static/t/aide/display_menu.html:5 msgid "System Administration Menu" msgstr "" #: ../../static/t/aide/display_inetconf.html:6 #: ../../static/t/aide/display_menu.html:6 msgid "Room Admin Menu" msgstr "" #: ../../static/t/aide/display_inetconf.html:13 msgid "Local host aliases" msgstr "" #: ../../static/t/aide/display_inetconf.html:14 msgid "Directory domains" msgstr "" #: ../../static/t/aide/display_inetconf.html:15 msgid "Smart hosts" msgstr "" #: ../../static/t/aide/display_inetconf.html:16 msgid "Fallback smart hosts" msgstr "" #: ../../static/t/aide/display_inetconf.html:17 msgid "Notification hosts" msgstr "" #: ../../static/t/aide/display_inetconf.html:22 msgid "RBL hosts" msgstr "" #: ../../static/t/aide/display_inetconf.html:23 msgid "SpamAssassin hosts" msgstr "" #: ../../static/t/aide/display_inetconf.html:24 msgid "ClamAV clamd hosts" msgstr "" #: ../../static/t/aide/display_inetconf.html:25 msgid "Masqueradable domains" msgstr "" #: ../../static/t/aide/edituser/select.html:5 msgid "Edit or delete users" msgstr "" #: ../../static/t/aide/edituser/select.html:17 msgid "Add users" msgstr "" #: ../../static/t/aide/edituser/select.html:20 msgid "Edit or Delete users" msgstr "" #: ../../static/t/aide/edituser/box_select.html:1 msgid "" "To edit an existing user account, select the user name from the list and " "click 'Edit'." msgstr "" #: ../../static/t/aide/edituser/detailview.html:4 msgid "Edit user account: " msgstr "" #: ../../static/t/aide/edituser/detailview.html:24 #: ../../static/t/room/edit/tab_feed.html:14 msgid "Password" msgstr "" #: ../../static/t/aide/edituser/detailview.html:28 msgid "Permission to send Internet mail" msgstr "" #: ../../static/t/aide/edituser/detailview.html:32 msgid "Number of logins" msgstr "" #: ../../static/t/aide/edituser/detailview.html:36 msgid "Messages submitted" msgstr "" #: ../../static/t/aide/edituser/detailview.html:40 msgid "Access level" msgstr "" #: ../../static/t/aide/edituser/detailview.html:54 msgid "User ID number" msgstr "" #: ../../static/t/aide/edituser/detailview.html:58 msgid "Date and time of last login" msgstr "" #: ../../static/t/aide/edituser/detailview.html:68 msgid "Auto-purge after this many days" msgstr "" #: ../../static/t/aide/edituser/add.html:1 msgid "" "To create a new user account, enter the desired user name in the box below " "and click 'Create'." msgstr "" #: ../../static/t/aide/edituser/add.html:5 msgid "New user: " msgstr "" #: ../../static/t/aide/display_generic_cmd.html:4 msgid "Enter a server command" msgstr "" #: ../../static/t/aide/display_generic_cmd.html:12 msgid "" "This screen allows you to enter Citadel server commands which are not " "supported by WebCit. If you do not know what that means, then this screen " "will not be of much use to you." msgstr "" #: ../../static/t/aide/display_generic_cmd.html:15 msgid "Enter command:" msgstr "" #: ../../static/t/aide/display_generic_cmd.html:17 msgid "Command input (if requesting SEND_LISTING transfer mode):" msgstr "" #: ../../static/t/aide/display_generic_cmd.html:20 msgid "Detected host header is " msgstr "" #: ../../static/t/aide/display_ignetconf.html:4 msgid "Network configuration" msgstr "" #: ../../static/t/aide/display_ignetconf.html:10 #: ../../static/t/aide/ignetconf/edit_node.html:5 #: ../../static/t/aide/ignetconf/add.html:5 msgid "Add a new node" msgstr "" #: ../../static/t/aide/display_ignetconf.html:14 msgid "Currently configured nodes" msgstr "" #: ../../static/t/aide/display_serverrestart.html:26 msgid "Restart Citadel" msgstr "" #: ../../static/t/aide/floorconfig.html:2 msgid "Add, change, or delete floors" msgstr "" #: ../../static/t/aide/serverrestart/box.html:3 msgid "Please wait while the Citadel server is restarted... " msgstr "" #: ../../static/t/aide/serverrestart/box_page_do.html:3 msgid "" "Please wait while your users are being paged, the citadel server will be " "restarted after that... " msgstr "" #: ../../static/t/aide/inet/masqdomains.html:2 msgid "(Domains as which users are allowed to masquerade)" msgstr "" #: ../../static/t/aide/inet/rbldns.html:2 msgid "(hosts running a Realtime Blackhole List)" msgstr "" #: ../../static/t/aide/inet/dirnames.html:2 msgid "(domains mapped with the Global Address Book)" msgstr "" #: ../../static/t/aide/inet/notify.html:2 msgid "(URLS for notifications when users receive new mails; )" msgstr "" #: ../../static/t/aide/inet/notify.html:2 msgid "Syntax: Notificationtemplatename:http[s]://user:password@hostname/path" msgstr "" #: ../../static/t/aide/inet/smarthosts.html:2 msgid "(if present, forward all outbound mail to one of these hosts)" msgstr "" #: ../../static/t/aide/inet/aliases.html:2 msgid "(domains for which this host receives mail)" msgstr "" #: ../../static/t/aide/inet/clamav.html:2 msgid "(hosts running the ClamAV clamd service)" msgstr "" #: ../../static/t/aide/inet/spamass.html:2 msgid "(hosts running the SpamAssassin service)" msgstr "" #: ../../static/t/aide/inet/fallbackhosts.html:2 msgid "(send outbound mail to these hosts only when direct delivery fails)" msgstr "" #: ../../static/t/aide/ignetconf/display_confirm_delete.html:5 msgid "Confirm delete" msgstr "" #: ../../static/t/aide/ignetconf/display_confirm_delete.html:11 msgid "Are you sure you want to delete " msgstr "" #: ../../static/t/aide/ignetconf/display_confirm_delete.html:14 #: ../../static/t/prefs/box.html:198 ../../static/t/iconbar/edit.html:19 #: ../../static/t/iconbar/edit.html:26 ../../static/t/iconbar/edit.html:32 #: ../../static/t/iconbar/edit.html:39 ../../static/t/iconbar/edit.html:45 #: ../../static/t/iconbar/edit.html:52 ../../static/t/iconbar/edit.html:58 #: ../../static/t/iconbar/edit.html:64 ../../static/t/iconbar/edit.html:70 #: ../../static/t/iconbar/edit.html:76 ../../static/t/iconbar/edit.html:82 #: ../../static/t/iconbar/edit.html:88 msgid "Yes" msgstr "" #: ../../static/t/aide/ignetconf/display_confirm_delete.html:16 #: ../../static/t/prefs/box.html:200 ../../static/t/iconbar/edit.html:20 #: ../../static/t/iconbar/edit.html:27 ../../static/t/iconbar/edit.html:33 #: ../../static/t/iconbar/edit.html:40 ../../static/t/iconbar/edit.html:46 #: ../../static/t/iconbar/edit.html:53 ../../static/t/iconbar/edit.html:59 #: ../../static/t/iconbar/edit.html:65 ../../static/t/iconbar/edit.html:71 #: ../../static/t/iconbar/edit.html:77 ../../static/t/iconbar/edit.html:83 #: ../../static/t/iconbar/edit.html:89 msgid "No" msgstr "" #: ../../static/t/aide/ignetconf/edit_node.html:15 #: ../../static/t/aide/ignetconf/add.html:15 #: ../../static/t/aide/siteconfig/tab_general.html:8 msgid "Node name" msgstr "" #: ../../static/t/aide/ignetconf/edit_node.html:17 #: ../../static/t/aide/ignetconf/add.html:17 msgid "Shared secret" msgstr "" #: ../../static/t/aide/ignetconf/edit_node.html:19 #: ../../static/t/aide/ignetconf/add.html:19 msgid "Host or IP address" msgstr "" #: ../../static/t/aide/ignetconf/edit_node.html:21 #: ../../static/t/aide/ignetconf/add.html:21 msgid "Port number" msgstr "" #: ../../static/t/aide/ignetconf/section.html:4 msgid "(Edit)" msgstr "" #: ../../static/t/aide/display_menu.html:12 msgid "Global Configuration" msgstr "" #: ../../static/t/aide/display_menu.html:14 msgid "User account management" msgstr "" #: ../../static/t/aide/display_menu.html:16 msgid "Shutdown Citadel" msgstr "" #: ../../static/t/aide/display_menu.html:18 msgid "Rooms and Floors" msgstr "" #: ../../static/t/aide/global_config.html:2 msgid "Edit site-wide configuration" msgstr "" #: ../../static/t/aide/global_config.html:3 msgid "Domain names and Internet mail configuration" msgstr "" #: ../../static/t/aide/global_config.html:4 msgid "Configure replication with other Citadel servers" msgstr "" #: ../../static/t/aide/global_config.html:5 #: ../../static/t/view_mailq/header.html:3 msgid "View the outbound SMTP queue" msgstr "" #: ../../static/t/aide/restart.html:2 msgid "Restart Now" msgstr "" #: ../../static/t/aide/restart.html:3 msgid "Restart after paging users" msgstr "" #: ../../static/t/aide/restart.html:4 msgid "Restart when all users are idle" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:1 msgid "General site configuration items" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:5 msgid "Change Login Logo" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:6 msgid "Change Logout Logo" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:11 msgid "Fully qualified domain name" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:14 msgid "Human-readable node name" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:17 msgid "Telephone number" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:20 msgid "Paginator prompt (for text mode clients)" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:23 msgid "Geographic location of this system" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:26 msgid "Name of system administrator" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:29 msgid "Default timezone for unzoned calendar items" msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:1 msgid "Configure automatic expiry of old messages" msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:2 msgid "These settings may be overridden on a per-floor or per-room basis." msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:6 msgid "Hour to run database auto-purge" msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:66 msgid "Default message expire policy for public rooms" msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:68 #: ../../static/t/aide/siteconfig/tab_autopurger.html:86 #: ../../static/t/room/edit/tab_expire.html:17 #: ../../static/t/room/edit/tab_expire.html:45 msgid "Never automatically expire messages" msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:71 #: ../../static/t/aide/siteconfig/tab_autopurger.html:89 #: ../../static/t/room/edit/tab_expire.html:20 #: ../../static/t/room/edit/tab_expire.html:48 msgid "Expire by message count" msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:73 #: ../../static/t/aide/siteconfig/tab_autopurger.html:92 #: ../../static/t/room/edit/tab_expire.html:23 #: ../../static/t/room/edit/tab_expire.html:51 msgid "Expire by message age" msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:75 #: ../../static/t/aide/siteconfig/tab_autopurger.html:94 #: ../../static/t/room/edit/tab_expire.html:25 #: ../../static/t/room/edit/tab_expire.html:53 msgid "Number of messages or days: " msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:81 msgid "Default message expire policy for private mailboxes" msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:83 msgid "Same policy as public rooms" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:1 msgid "Network services" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:2 #: ../../static/t/aide/siteconfig/tab_directory.html:3 msgid "" "Changes made on this screen will not take effect until you restart the " "Citadel server." msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:6 msgid "SMTP MTA port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:9 msgid "Correct forged From: lines during authenticated SMTP" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:12 msgid "Flag message as spam, instead of rejecting it" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:15 msgid "IMAP listener port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:19 msgid "Network run frequency (in seconds)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:22 msgid "Server IP address (0.0.0.0 for 'any')" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:25 msgid "SMTP MSA port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:28 msgid "IMAP over SSL port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:31 msgid "SMTP over SSL port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:34 msgid "Instantly expunge deleted messages in IMAP" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:38 msgid "Allow unauthenticated SMTP clients to spoof this sites domains" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:41 msgid "Postfix TCP Dictionary Port" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:41 msgid "-1 to disable" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:44 msgid "ManageSieve Port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:47 msgid "Perform RBL checks upon connect instead of after RCPT" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:50 msgid "Keep original from headers in IMAP" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:53 msgid "XMPP (Jabber) client to server port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:56 msgid "XMPP (Jabber) server to server port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_pop3.html:1 msgid "POP3" msgstr "" #: ../../static/t/aide/siteconfig/tab_pop3.html:6 msgid "POP3 listener port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_pop3.html:9 msgid "POP3 over SSL port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_pop3.html:12 msgid "POP3 fetch frequency in seconds" msgstr "" #: ../../static/t/aide/siteconfig/tab_pop3.html:15 msgid "POP3 fastest fetch frequency in seconds" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:1 msgid "Advanced server fine-tuning controls" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:5 msgid "Server connection idle timeout (in seconds)" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:8 msgid "Maximum concurrent sessions (0 = no limit)" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:11 msgid "Default user purge time (days)" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:14 msgid "Default room purge time (days)" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:17 msgid "Maximum message length" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:20 msgid "Minimum number of worker threads" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:23 msgid "Maximum number of worker threads" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:26 msgid "Automatically delete committed database logs" msgstr "" #: ../../static/t/aide/siteconfig/tab_pushmail.html:5 msgid "Funambol server host (blank to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_pushmail.html:8 msgid "Funambol server port " msgstr "" #: ../../static/t/aide/siteconfig/tab_pushmail.html:11 msgid "Funambol sync source" msgstr "" #: ../../static/t/aide/siteconfig/tab_pushmail.html:14 msgid "Funambol auth details (user:pass)" msgstr "" #: ../../static/t/aide/siteconfig/tab_pushmail.html:17 msgid "External pager tool (blank to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:1 msgid "Access controls and site policy settings" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:5 msgid "Allow aides to zap (forget) rooms" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:9 msgid "Quarantine messages from problem users" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:12 msgid "Name of quarantine room" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:17 msgid "Name of room to log pages" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:22 msgid "Authentication mode" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:24 msgid "Self contained" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:25 msgid "Host based" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:26 msgid "LDAP (RFC2307)" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:27 msgid "LDAP (Active Directory)" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:30 msgid "Master user name (blank to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:33 msgid "Master user password" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:38 msgid "Initial access level for new users" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:49 msgid "Access level required to create rooms" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:60 msgid "Automatically grant room-aide status to users who create private rooms" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:63 msgid "Automatically grant room-aide status to users who create BLOG rooms" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:66 msgid "Restrict access to Internet mail" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:71 msgid "Disable self-service user account creation" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:71 msgid "Hint: do not select both!" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:74 msgid "Require registration for new users" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:77 msgid "Allow anonymous guest access" msgstr "" #: ../../static/t/aide/siteconfig/tab_indexing.html:1 msgid "Indexing and Journaling" msgstr "" #: ../../static/t/aide/siteconfig/tab_indexing.html:2 msgid "Warning: these facilities are resource intensive." msgstr "" #: ../../static/t/aide/siteconfig/tab_indexing.html:6 msgid "Enable full text index" msgstr "" #: ../../static/t/aide/siteconfig/tab_indexing.html:9 msgid "Perform journaling of email messages" msgstr "" #: ../../static/t/aide/siteconfig/tab_indexing.html:13 msgid "Perform journaling of non-email messages" msgstr "" #: ../../static/t/aide/siteconfig/tab_indexing.html:16 msgid "Email destination of journalized messages" msgstr "" #: ../../static/t/aide/siteconfig/tab_directory.html:1 msgid "Configure the LDAP connector for Citadel" msgstr "" #: ../../static/t/aide/siteconfig/tab_directory.html:4 msgid "" "NOTE: This Citadel server has been built without LDAP support. These " "options will have no effect." msgstr "" #: ../../static/t/aide/siteconfig/tab_directory.html:9 msgid "Host name of LDAP server (blank to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_directory.html:13 msgid "Port number of LDAP server (blank to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_directory.html:16 msgid "Base DN" msgstr "" #: ../../static/t/aide/siteconfig/tab_directory.html:19 msgid "Bind DN" msgstr "" #: ../../static/t/aide/siteconfig/tab_directory.html:22 msgid "Password for bind DN" msgstr "" #: ../../static/t/iconbar.html:7 msgid "Language:" msgstr "" #: ../../static/t/iconbar.html:19 msgid "Mail" msgstr "" #: ../../static/t/iconbar.html:39 ../../static/t/iconbar/edit.html:61 #: ../../static/t/summary/page.html:30 msgid "Tasks" msgstr "" #: ../../static/t/iconbar.html:48 ../../static/t/iconbar/edit.html:67 msgid "Rooms" msgstr "" #: ../../static/t/iconbar.html:57 msgid "Online users" msgstr "" #: ../../static/t/iconbar.html:62 ../../static/t/iconbar/edit.html:79 msgid "Chat" msgstr "" #: ../../static/t/iconbar.html:65 msgid "Advanced" msgstr "" #: ../../static/t/iconbar.html:72 ../../static/t/room/edit/editroom.html:4 #: ../../static/t/room/edit.html:5 msgid "Administration" msgstr "" #: ../../static/t/iconbar.html:83 msgid "customize this menu" msgstr "" #: ../../static/t/iconbar.html:92 msgid "switch to room list" msgstr "" #: ../../static/t/iconbar.html:93 msgid "switch to menu" msgstr "" #: ../../static/t/iconbar.html:94 msgid "My folders" msgstr "" #: ../../static/t/view_message/list_attach.html:3 #: ../../static/t/view_message/inline_attach.html:4 msgid "View" msgstr "" #: ../../static/t/view_message/list_attach.html:4 #: ../../static/t/view_message/inline_attach.html:5 msgid "Download" msgstr "" #: ../../static/t/view_message/print.html:14 #: ../../static/t/view_message.html:14 msgid "to" msgstr "" #: ../../static/t/openid_manual_create.html:2 msgid "Your OpenID" msgstr "" #: ../../static/t/openid_manual_create.html:2 msgid "was successfully verified." msgstr "" #: ../../static/t/openid_manual_create.html:3 msgid "However, the user name" msgstr "" #: ../../static/t/openid_manual_create.html:3 msgid "conflicts with an existing user." msgstr "" #: ../../static/t/openid_manual_create.html:5 msgid "Please specify the user name you would like to use." msgstr "" #: ../../static/t/files/graphicsupload.html:2 msgid "Image upload" msgstr "" #: ../../static/t/files/graphicsupload.html:6 msgid "You can upload an image directly from your computer" msgstr "" #: ../../static/t/files/graphicsupload.html:8 msgid "Please select a file to upload:" msgstr "" #: ../../static/t/files/section_onefile.html:20 msgid "Slideshow" msgstr "" #: ../../static/t/roombanner.html:10 ../../static/t/roombanner.html:11 msgid "new of" msgstr "" #: ../../static/t/roombanner.html:10 ../../static/t/roombanner.html:11 #: ../../static/t/msg_listselector_bottom.html:7 #: ../../static/t/msg_listselector_top.html:7 msgid "messages" msgstr "" #: ../../static/t/roombanner.html:28 msgid "Select page: " msgstr "" #: ../../static/t/who.html:13 msgid "Users currently on " msgstr "" #: ../../static/t/who.html:22 msgid "Click on a name to read user info. Click on" msgstr "" #: ../../static/t/who.html:24 msgid "to send an instant message to that user." msgstr "" #: ../../static/t/msg_listselector_bottom.html:2 #: ../../static/t/msg_listselector_top.html:2 msgid "Reading #" msgstr "" #: ../../static/t/msg_listselector_bottom.html:12 #: ../../static/t/msg_listselector_top.html:12 msgid "oldest to newest" msgstr "" #: ../../static/t/msg_listselector_bottom.html:20 #: ../../static/t/msg_listselector_top.html:20 msgid "newest to oldest" msgstr "" #: ../../static/t/newstartpage.html:4 msgid "New start page" msgstr "" #: ../../static/t/newstartpage.html:9 msgid "Your start page has been changed." msgstr "" #: ../../static/t/newstartpage.html:12 msgid "" "(Note: this does not change your browser's home page. It changes the page " "you begin on when you log on to" msgstr "" #: ../../static/t/no_new_msgs.html:3 msgid "No new messages." msgstr "" #: ../../static/t/view_blog/comment_box.html:8 msgid "Post a comment" msgstr "" #: ../../static/t/prefs/pushemail.html:2 msgid "Configure Push Email" msgstr "" #: ../../static/t/prefs/pushemail.html:9 msgid "Push email and SMS settings" msgstr "" #: ../../static/t/prefs/pushemail.html:17 msgid "" "If your administrator has enabled the functionality, Citadel can notify a " "Funambol server that you haved recieved new email and automatically " "syncronize any devices you have with the Funambol client installed." msgstr "" #: ../../static/t/prefs/pushemail.html:20 msgid "" "Alternatively, if the administrator has configured it, Citadel can send a " "text message to you when new mail arrives." msgstr "" #: ../../static/t/prefs/pushemail.html:26 msgid "Notify Funambol server" msgstr "" #: ../../static/t/prefs/pushemail.html:31 msgid "Send a text message to..." msgstr "" #: ../../static/t/prefs/pushemail.html:33 msgid "" "(Use international format, without any leading zeros, spaces or hypens, like " "+61415011501)" msgstr "" #: ../../static/t/prefs/pushemail.html:38 msgid "Use custom notification scheme configured by your Admin" msgstr "" #: ../../static/t/prefs/pushemail.html:43 msgid "Don‘t send any notifications" msgstr "" #: ../../static/t/prefs/box.html:9 msgid "Tree (folders) view" msgstr "" #: ../../static/t/prefs/box.html:11 msgid "Table (rooms) view" msgstr "" #: ../../static/t/prefs/box.html:20 msgid "12 hour (am/pm)" msgstr "" #: ../../static/t/prefs/box.html:25 msgid "24 hour" msgstr "" #: ../../static/t/prefs/box.html:152 msgid "Sunday" msgstr "" #: ../../static/t/prefs/box.html:153 msgid "Monday" msgstr "" #: ../../static/t/prefs/box.html:174 msgid "No signature" msgstr "" #: ../../static/t/prefs/box.html:238 msgid "Full-functionality" msgstr "" #: ../../static/t/prefs/box.html:241 msgid "Safe mode" msgstr "" #: ../../static/t/prefs/box.html:242 msgid "" "Safe mode is less intensive on your web browser, but not as fully featured." msgstr "" #: ../../static/t/wiki/pagelist.html:1 msgid "List of Wiki pages" msgstr "" #: ../../static/t/wiki/history.html:1 msgid "History of edits for this page" msgstr "" #: ../../static/t/who/list_static_header.html:1 msgid "Users currently on" msgstr "" #: ../../static/t/who/section.html:4 msgid "(kill)" msgstr "" #: ../../static/t/who/bio.html:4 ../../static/t/user/show.html:4 msgid "User profile" msgstr "" #: ../../static/t/who/summary.html:5 ../../static/t/who/box_list_static.html:6 #: ../../static/t/room/edit/tab_feed.html:13 msgid "User name" msgstr "" #: ../../static/t/who/summary.html:6 ../../static/t/who/box_list_static.html:7 msgid "Room" msgstr "" #: ../../static/t/who/box_list_static.html:8 msgid "From host" msgstr "" #: ../../static/t/view_message.html:19 msgid "Edit" msgstr "" #: ../../static/t/view_message.html:22 ../../static/t/view_message.html:26 msgid "Reply" msgstr "" #: ../../static/t/view_message.html:23 msgid "ReplyQuoted" msgstr "" #: ../../static/t/view_message.html:27 msgid "ReplyAll" msgstr "" #: ../../static/t/view_message.html:28 msgid "Forward" msgstr "" #: ../../static/t/view_message.html:31 ../../static/t/msg_listview.html:25 msgid "Move" msgstr "" #: ../../static/t/view_message.html:34 msgid "Headers" msgstr "" #: ../../static/t/view_message.html:35 ../../static/t/msg_listview.html:28 msgid "Print" msgstr "" #: ../../static/t/preferences.html:4 ../../static/t/preferences.html:7 msgid "Preferences and settings" msgstr "" #: ../../static/t/user/list.html:3 msgid "User list for " msgstr "" #: ../../static/t/user/list.html:9 msgid "User Name" msgstr "" #: ../../static/t/user/list.html:10 msgid "Number" msgstr "" #: ../../static/t/user/list.html:11 msgid "Access Level" msgstr "" #: ../../static/t/user/list.html:12 msgid "Last Login" msgstr "" #: ../../static/t/user/list.html:13 msgid "Total Logins" msgstr "" #: ../../static/t/user/list.html:14 msgid "Total Posts" msgstr "" #: ../../static/t/user/show.html:9 msgid "Click here to send an instant message to" msgstr "" #: ../../static/t/start_of_new_msgs.html:4 msgid "Old messages" msgstr "" #: ../../static/t/start_of_new_msgs.html:8 msgid "New messages" msgstr "" #: ../../static/t/display_main_menu.html:7 msgid "Basic commands" msgstr "" #: ../../static/t/display_main_menu.html:10 msgid "Your info" msgstr "" #: ../../static/t/display_main_menu.html:12 msgid "Advanced room commands" msgstr "" #: ../../static/t/iconbar/save.html:4 ../../static/t/iconbar/edit.html:4 msgid "Customize the icon bar" msgstr "" #: ../../static/t/iconbar/save.html:11 msgid "" "Your icon bar has been updated. Please select any of its choices to continue." msgstr "" #: ../../static/t/iconbar/save.html:11 msgid "" "You may need to force refresh (SHIFT-F5)> in order for changes to take effect" msgstr "" #: ../../static/t/iconbar/edit.html:11 msgid "Display icons as:" msgstr "" #: ../../static/t/iconbar/edit.html:12 msgid "pictures and text" msgstr "" #: ../../static/t/iconbar/edit.html:13 msgid "pictures only" msgstr "" #: ../../static/t/iconbar/edit.html:14 msgid "text only" msgstr "" #: ../../static/t/iconbar/edit.html:16 msgid "" "Select the icons you would like to see displayed in the 'icon bar' menu on " "the left side of the screen." msgstr "" #: ../../static/t/iconbar/edit.html:23 msgid "Site logo" msgstr "" #: ../../static/t/iconbar/edit.html:23 msgid "An icon describing this site" msgstr "" #: ../../static/t/iconbar/edit.html:29 msgid "Your summary page" msgstr "" #: ../../static/t/iconbar/edit.html:36 msgid "Mail (inbox)" msgstr "" #: ../../static/t/iconbar/edit.html:36 msgid "A shortcut to your email Inbox" msgstr "" #: ../../static/t/iconbar/edit.html:42 msgid "Your personal address book" msgstr "" #: ../../static/t/iconbar/edit.html:49 msgid "Your personal notes" msgstr "" #: ../../static/t/iconbar/edit.html:55 msgid "A shortcut to your personal calendar" msgstr "" #: ../../static/t/iconbar/edit.html:61 msgid "A shortcut to your personal task list" msgstr "" #: ../../static/t/iconbar/edit.html:67 msgid "" "Clicking this icon displays a list of all accessible rooms (or folders) " "available." msgstr "" #: ../../static/t/iconbar/edit.html:73 msgid "Who is online?" msgstr "" #: ../../static/t/iconbar/edit.html:73 msgid "Clicking this icon displays a list of all users currently logged in." msgstr "" #: ../../static/t/iconbar/edit.html:79 msgid "" "Clicking this icon enters real-time chat mode with other users in the same " "room." msgstr "" #: ../../static/t/iconbar/edit.html:85 msgid "Advanced options" msgstr "" #: ../../static/t/iconbar/edit.html:85 msgid "Access to the complete menu of Citadel functions." msgstr "" #: ../../static/t/iconbar/edit.html:91 msgid "Citadel logo" msgstr "" #: ../../static/t/iconbar/edit.html:91 msgid "Displays the 'Powered by Citadel' icon" msgstr "" #: ../../static/t/room/edit/tab_expire.html:8 msgid "Message expire policy for this room" msgstr "" #: ../../static/t/room/edit/tab_expire.html:14 msgid "Use the default policy for this floor" msgstr "" #: ../../static/t/room/edit/tab_expire.html:36 msgid "Message expire policy for this floor" msgstr "" #: ../../static/t/room/edit/tab_expire.html:42 msgid "Use the system default" msgstr "" #: ../../static/t/room/edit/editroom.html:5 ../../static/t/room/edit.html:6 msgid "Configuration" msgstr "" #: ../../static/t/room/edit/editroom.html:6 ../../static/t/room/edit.html:7 msgid "Message expire policy" msgstr "" #: ../../static/t/room/edit/editroom.html:7 ../../static/t/room/edit.html:8 msgid "Access controls" msgstr "" #: ../../static/t/room/edit/editroom.html:8 ../../static/t/room/edit.html:9 msgid "Sharing" msgstr "" #: ../../static/t/room/edit/editroom.html:9 ../../static/t/room/edit.html:10 msgid "Mailing list service" msgstr "" #: ../../static/t/room/edit/editroom.html:10 ../../static/t/room/edit.html:11 msgid "Remote retrieval" msgstr "" #: ../../static/t/room/edit/tab_config.html:6 msgid "name of room: " msgstr "" #: ../../static/t/room/edit/tab_config.html:10 #: ../../static/t/room/create.html:20 msgid "Resides on floor: " msgstr "" #: ../../static/t/room/edit/tab_config.html:16 #: ../../static/t/room/create.html:68 msgid "Type of room:" msgstr "" #: ../../static/t/room/edit/tab_config.html:22 #: ../../static/t/room/create.html:73 msgid "Public (automatically appears to everyone)" msgstr "" #: ../../static/t/room/edit/tab_config.html:28 #: ../../static/t/room/create.html:77 msgid "Private - hidden (accessible to anyone who knows its name)" msgstr "" #: ../../static/t/room/edit/tab_config.html:35 #: ../../static/t/room/create.html:81 msgid "Private - require password: " msgstr "" #: ../../static/t/room/edit/tab_config.html:44 #: ../../static/t/room/create.html:86 msgid "Private - invitation only" msgstr "" #: ../../static/t/room/edit/tab_config.html:51 #: ../../static/t/room/create.html:90 msgid "Personal (mailbox for you only)" msgstr "" #: ../../static/t/room/edit/tab_config.html:55 msgid "If private, cause current users to forget room" msgstr "" #: ../../static/t/room/edit/tab_config.html:61 msgid "Preferred users only" msgstr "" #: ../../static/t/room/edit/tab_config.html:66 msgid "Read-only room" msgstr "" #: ../../static/t/room/edit/tab_config.html:71 msgid "All users allowed to post may also delete messages" msgstr "" #: ../../static/t/room/edit/tab_config.html:76 msgid "File directory room" msgstr "" #: ../../static/t/room/edit/tab_config.html:80 msgid "Directory name: " msgstr "" #: ../../static/t/room/edit/tab_config.html:86 msgid "Uploading allowed" msgstr "" #: ../../static/t/room/edit/tab_config.html:91 msgid "Downloading allowed" msgstr "" #: ../../static/t/room/edit/tab_config.html:96 msgid "Visible directory" msgstr "" #: ../../static/t/room/edit/tab_config.html:103 msgid "Network shared room" msgstr "" #: ../../static/t/room/edit/tab_config.html:108 msgid "Permanent (does not auto-purge)" msgstr "" #: ../../static/t/room/edit/tab_config.html:113 msgid "Subject Required (Force users to specify a message subject)" msgstr "" #: ../../static/t/room/edit/tab_config.html:116 msgid "Anonymous messages" msgstr "" #: ../../static/t/room/edit/tab_config.html:122 msgid "No anonymous messages" msgstr "" #: ../../static/t/room/edit/tab_config.html:127 msgid "All messages are anonymous" msgstr "" #: ../../static/t/room/edit/tab_config.html:132 msgid "Prompt user when entering messages" msgstr "" #: ../../static/t/room/edit/tab_config.html:136 msgid "Room aide: " msgstr "" #: ../../static/t/room/edit/tab_listserv.html:5 msgid "" "The contents of this room are being mailed as individual messages " "to the following list recipients:

    " msgstr "" #: ../../static/t/room/edit/tab_listserv.html:19 msgid "" "The contents of this room are being mailed in digest form to the " "following list recipients:

    " msgstr "" #: ../../static/t/room/edit/tab_listserv.html:39 msgid "Add recipients from Contacts or other address books" msgstr "" #: ../../static/t/room/edit/tab_listserv.html:48 msgid "Allow non-subscribers to mail to this room." msgstr "" #: ../../static/t/room/edit/tab_listserv.html:54 msgid "Room post publication needs Admin permission." msgstr "" #: ../../static/t/room/edit/tab_listserv.html:59 msgid "Allow self-service subscribe/unsubscribe requests." msgstr "" #: ../../static/t/room/edit/tab_listserv.html:65 msgid "The URL for subscribe/unsubscribe is: " msgstr "" #: ../../static/t/room/edit/digestrecp_removal.html:1 #: ../../static/t/room/edit/pop3client_removal.html:9 #: ../../static/t/room/edit/listrecp_removal.html:1 #: ../../static/t/room/edit/rssclient_removal.html:5 msgid "(remove)" msgstr "" #: ../../static/t/room/edit/tab_admin.html:5 msgid "Delete this room" msgstr "" #: ../../static/t/room/edit/tab_admin.html:10 msgid "Set or change the icon for this rooms banner" msgstr "" #: ../../static/t/room/edit/tab_admin.html:14 msgid "Edit this rooms Info file" msgstr "" #: ../../static/t/room/edit/tab_share.html:5 msgid "Shared with" msgstr "" #: ../../static/t/room/edit/tab_share.html:6 msgid "Not shared with" msgstr "" #: ../../static/t/room/edit/tab_share.html:11 #: ../../static/t/room/edit/tab_share.html:21 msgid "Remote node name" msgstr "" #: ../../static/t/room/edit/tab_share.html:12 #: ../../static/t/room/edit/tab_share.html:22 msgid "Remote room name" msgstr "" #: ../../static/t/room/edit/tab_share.html:13 #: ../../static/t/room/edit/tab_share.html:23 msgid "Actions" msgstr "" #: ../../static/t/room/edit/tab_share.html:35 msgid "" "When sharing a room, it must be shared from both ends. Adding a node to the " "'shared' list sends messages out, but in order to receive messages, the " "other nodes must be configured to send messages out to your system as well. " "
  • If the remote room name is blank, it is assumed that the room name is " "identical on the remote node.
  • If the remote room name is different, the " "remote node must also configure the name of the room here." msgstr "" #: ../../static/t/room/edit/tab_feed.html:2 msgid "" "Retrieve messages from these remote POP3 accounts and store them in this " "room:" msgstr "" #: ../../static/t/room/edit/tab_feed.html:12 msgid "Remote host" msgstr "" #: ../../static/t/room/edit/tab_feed.html:15 msgid "Keep messages on server?" msgstr "" #: ../../static/t/room/edit/tab_feed.html:16 msgid "Interval" msgstr "" #: ../../static/t/room/edit/tab_feed.html:31 msgid "Fetch the following RSS feeds and store them in this room:" msgstr "" #: ../../static/t/room/edit/tab_feed.html:43 msgid "Feed URL" msgstr "" #: ../../static/t/room/edit/tab_access.html:5 msgid "" "The users listed below have access to this room. To remove a user from the " "access list, select the user name from the list and click 'Kick'." msgstr "" #: ../../static/t/room/edit/tab_access.html:20 msgid "" "To grant another user access to this room, enter the user name in the box " "below and click 'Invite'." msgstr "" #: ../../static/t/room/edit/tab_access.html:26 msgid "Invite:" msgstr "" #: ../../static/t/room/edit/tab_access.html:35 msgid "Users" msgstr "" #: ../../static/t/room/zapped_list.html:7 msgid "Zapped (forgotten) rooms" msgstr "" #: ../../static/t/room/zapped_list.html:10 msgid "Click on any room to un-zap it and goto that room." msgstr "" #: ../../static/t/room/display_private.html:7 msgid "Go to a hidden room" msgstr "" #: ../../static/t/room/display_private.html:8 msgid "" "If you know the name of a hidden (guess-name) or passworded room, you can " "enter that room by typing its name below. Once you gain access to a private " "room, it will appear in your regular room listings so you don‘t have to keep " "returning here." msgstr "" #: ../../static/t/room/display_private.html:14 msgid "Enter room name:" msgstr "" #: ../../static/t/room/display_private.html:21 msgid "Enter room password:" msgstr "" #: ../../static/t/room/create.html:11 #: ../../static/t/menu/advanced_roomcommands.html:6 msgid "Create a new room" msgstr "" #: ../../static/t/room/create.html:18 msgid "Name of room: " msgstr "" #: ../../static/t/room/create.html:32 msgid "Default view for room: " msgstr "" #: ../../static/t/room/zap_this.html:3 msgid "Zap (forget/unsubscribe) the current room" msgstr "" #: ../../static/t/room/zap_this.html:6 msgid "If you select this option," msgstr "" #: ../../static/t/room/zap_this.html:8 msgid "will disappear from your room list. Is this what you wish to do?" msgstr "" #: ../../static/t/menu/your_info.html:2 msgid "Change your preferences and settings" msgstr "" #: ../../static/t/menu/your_info.html:3 msgid "Update your contact information" msgstr "" #: ../../static/t/menu/your_info.html:5 msgid "Enter your 'bio'" msgstr "" #: ../../static/t/menu/your_info.html:6 msgid "Edit your online photo" msgstr "" #: ../../static/t/menu/your_info.html:8 msgid "Edit your push email settings" msgstr "" #: ../../static/t/menu/your_info.html:9 msgid "Manage your OpenIDs" msgstr "" #: ../../static/t/menu/basic_commands.html:3 msgid "List known rooms" msgstr "" #: ../../static/t/menu/basic_commands.html:3 msgid "Where can I go from here?" msgstr "" #: ../../static/t/menu/basic_commands.html:4 ../../static/t/navbar.html:168 msgid "Goto next room" msgstr "" #: ../../static/t/menu/basic_commands.html:4 msgid "...with unread messages" msgstr "" #: ../../static/t/menu/basic_commands.html:5 msgid "Skip to next room" msgstr "" #: ../../static/t/menu/basic_commands.html:5 msgid "(come back here later)" msgstr "" #: ../../static/t/menu/basic_commands.html:6 ../../static/t/navbar.html:5 msgid "Ungoto" msgstr "" #: ../../static/t/menu/basic_commands.html:6 msgid "oops! Back to " msgstr "" #: ../../static/t/menu/basic_commands.html:10 ../../static/t/navbar.html:13 msgid "Read new messages" msgstr "" #: ../../static/t/menu/basic_commands.html:10 msgid "...in this room" msgstr "" #: ../../static/t/menu/basic_commands.html:11 ../../static/t/navbar.html:19 msgid "Read all messages" msgstr "" #: ../../static/t/menu/basic_commands.html:11 msgid "...old and new" msgstr "" #: ../../static/t/menu/basic_commands.html:12 ../../static/t/navbar.html:25 msgid "Enter a message" msgstr "" #: ../../static/t/menu/basic_commands.html:12 msgid "(post in this room)" msgstr "" #: ../../static/t/menu/basic_commands.html:13 msgid "File library" msgstr "" #: ../../static/t/menu/basic_commands.html:13 msgid "(List files available for download)" msgstr "" #: ../../static/t/menu/basic_commands.html:17 msgid "Summary page" msgstr "" #: ../../static/t/menu/basic_commands.html:17 msgid "Summary of my account" msgstr "" #: ../../static/t/menu/basic_commands.html:18 msgid "User list" msgstr "" #: ../../static/t/menu/basic_commands.html:18 msgid "(all registered users)" msgstr "" #: ../../static/t/menu/basic_commands.html:19 msgid "Bye!" msgstr "" #: ../../static/t/menu/advanced_roomcommands.html:3 msgid "Edit or delete this room" msgstr "" #: ../../static/t/menu/advanced_roomcommands.html:5 msgid "Go to a 'hidden' room" msgstr "" #: ../../static/t/menu/advanced_roomcommands.html:7 msgid "Zap (forget) this room" msgstr "" #: ../../static/t/menu/advanced_roomcommands.html:8 msgid "List all forgotten rooms" msgstr "" #: ../../static/t/navbar.html:34 msgid "View contacts" msgstr "" #: ../../static/t/navbar.html:40 msgid "Add new contact" msgstr "" #: ../../static/t/navbar.html:49 msgid "Day view" msgstr "" #: ../../static/t/navbar.html:55 msgid "Month view" msgstr "" #: ../../static/t/navbar.html:61 msgid "Add new event" msgstr "" #: ../../static/t/navbar.html:70 msgid "Calendar list" msgstr "" #: ../../static/t/navbar.html:79 msgid "View tasks" msgstr "" #: ../../static/t/navbar.html:85 msgid "Add new task" msgstr "" #: ../../static/t/navbar.html:94 msgid "View notes" msgstr "" #: ../../static/t/navbar.html:101 msgid "Add new note" msgstr "" #: ../../static/t/navbar.html:110 msgid "Refresh message list" msgstr "" #: ../../static/t/navbar.html:122 msgid "Write mail" msgstr "" #: ../../static/t/navbar.html:132 msgid "Wiki home" msgstr "" #: ../../static/t/navbar.html:139 msgid "Edit this page" msgstr "" #: ../../static/t/navbar.html:145 msgid "History" msgstr "" #: ../../static/t/navbar.html:154 msgid "New blog post" msgstr "" #: ../../static/t/navbar.html:162 msgid "Skip this room" msgstr "" #: ../../static/t/msg_listview.html:18 msgid "Loading messages from server, please wait" msgstr "" #: ../../static/t/msg_listview.html:24 msgid "Open in new window" msgstr "" #: ../../static/t/msg_listview.html:26 msgid "Copy" msgstr "" #: ../../static/t/view_mailq/message.html:6 msgid "Originaly posted in: " msgstr "" #: ../../static/t/view_mailq/header.html:15 msgid "Refresh this page" msgstr "" #: ../../static/t/view_mailq/header.html:21 msgid "Message ID" msgstr "" #: ../../static/t/view_mailq/header.html:23 msgid "Date/time submitted" msgstr "" #: ../../static/t/view_mailq/header.html:25 msgid "Next attempt" msgstr "" #: ../../static/t/view_mailq/header.html:29 msgid "Recipients" msgstr "" #: ../../static/t/view_mailq/footer_empty.html:4 msgid "The queue is empty." msgstr "" #: ../../static/t/view_mailq/footer_empty.html:9 #: ../../static/t/view_mailq/footer.html:5 msgid "You do not have permission to view this resource." msgstr "" #: ../../static/t/get_logged_in.html:5 msgid "You must be logged in to access this page." msgstr "" #: ../../static/t/get_logged_in.html:9 #: ../../static/t/edit_message/attachments_pane.html:3 msgid "Close window" msgstr "" #: ../../static/t/get_logged_in.html:55 msgid "Log in using a user name and password" msgstr "" #: ../../static/t/get_logged_in.html:60 ../../static/t/get_logged_in.html:75 msgid "Password:" msgstr "" #: ../../static/t/get_logged_in.html:65 ../../static/t/get_logged_in.html:69 msgid "New user? Register now" msgstr "" #: ../../static/t/get_logged_in.html:70 msgid "" "enter the name and password you wish to use, and click "New User." " msgstr "" #: ../../static/t/get_logged_in.html:83 msgid "Log in using OpenID" msgstr "" #: ../../static/t/get_logged_in.html:85 msgid "OpenID URL:" msgstr "" #: ../../static/t/get_logged_in.html:92 msgid "Log in using Google" msgstr "" #: ../../static/t/get_logged_in.html:97 msgid "Log in using Yahoo" msgstr "" #: ../../static/t/get_logged_in.html:102 msgid "Log in using AOL or AIM" msgstr "" #: ../../static/t/get_logged_in.html:104 msgid "Enter your AOL or AIM screen name:" msgstr "" #: ../../static/t/get_logged_in.html:115 msgid "Please wait" msgstr "" #: ../../static/t/summary/page.html:4 msgid "Summary page for " msgstr "" #: ../../static/t/summary/page.html:21 msgid "Messages" msgstr "" #: ../../static/t/summary/page.html:39 msgid "Today on your calendar" msgstr "" #: ../../static/t/summary/page.html:51 msgid "Who‘s online now" msgstr "" #: ../../static/t/summary/page.html:60 msgid "About this server" msgstr "" #: ../../static/t/summary/page.html:63 msgid "You are connected to" msgstr "" #: ../../static/t/summary/page.html:64 msgid "running" msgstr "" #: ../../static/t/summary/page.html:65 msgid "with" msgstr "" #: ../../static/t/summary/page.html:66 msgid "server build" msgstr "" #: ../../static/t/summary/page.html:67 msgid "and located in" msgstr "" #: ../../static/t/summary/page.html:68 msgid "Your system administrator is" msgstr "" #: ../../static/t/edit_message/attachments_pane.html:16 msgid "Attach file:" msgstr "" #: ../../static/t/edit_message/attachments_pane.html:21 msgid "Upload" msgstr "" #: ../../static/t/edit_message/section_attach_select.html:4 msgid "Remove" msgstr "" #: ../../static/t/loggedinas.html:3 msgid "Logged in as" msgstr "" #: ../../static/t/loggedinas.html:6 msgid "Not logged in." msgstr "" webcit-8.24-dfsg.orig/po/webcit/sv.po0000644000175000017500000025077712271477123017305 0ustar michaelmichael# Swedish translation for citadel # Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010 # This file is distributed under the same license as the citadel package. # Henric, 2010. # Mikael Mustonen # msgid "" msgstr "" "Project-Id-Version: citadel\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-03-20 01:03-0400\n" "PO-Revision-Date: 2013-06-11 20:01+0000\n" "Last-Translator: Mikael Mustonen \n" "Language-Team: Swedish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2013-06-12 05:10+0000\n" "X-Generator: Launchpad (build 16667)\n" "Language: sv\n" #: ../../roomops.c:708 ../../roomops.c:1005 ../../sieve.c:364 msgid "Cancelled. Changes were not saved." msgstr "Avbruten. Ändringarna sparades ej." #: ../../roomops.c:838 ../../sieve.c:417 msgid "Your changes have been saved." msgstr "Dina ändringar har sparats." #: ../../roomops.c:881 #, c-format msgid "User '%s' kicked out of room '%s'." msgstr "Användaren '%s' har sparkats ut från rum '%s'." #: ../../roomops.c:898 #, c-format msgid "User '%s' invited to room '%s'." msgstr "Användaren '%s' är inbjuden till rum '%s'." #: ../../roomops.c:927 msgid "Cancelled. No new room was created." msgstr "Avbruten. Inget nytt rum skapades." #: ../../roomops.c:1187 msgid "Floor has been deleted." msgstr "Våningen har raderats." #: ../../roomops.c:1211 msgid "New floor has been created." msgstr "Ny våning har skapats." #: ../../roomops.c:1290 msgid "Room list view" msgstr "Rums lista" #: ../../roomops.c:1293 msgid "Show empty floors" msgstr "Visa tomma våningar." #: ../../roomviews.c:50 msgid "Bulletin Board" msgstr "Anslagstavla" #: ../../roomviews.c:51 msgid "Mail Folder" msgstr "Mailkatalog" #: ../../roomviews.c:52 msgid "Address Book" msgstr "Adressbok" #: ../../roomviews.c:53 ../../static/t/iconbar.html:24 #: ../../static/t/iconbar/edit.html:55 msgid "Calendar" msgstr "Kalender" #: ../../roomviews.c:54 msgid "Task List" msgstr "Aktivitetsfält" #: ../../roomviews.c:55 msgid "Notes List" msgstr "" #: ../../roomviews.c:56 msgid "Wiki" msgstr "Wiki" #: ../../roomviews.c:57 msgid "Calendar List" msgstr "" #: ../../roomviews.c:58 msgid "Journal" msgstr "Dagbok" #: ../../roomviews.c:59 msgid "Drafts" msgstr "Utkast" #: ../../roomviews.c:60 msgid "Blog" msgstr "Blogg" #: ../../tasks.c:93 msgid "Completed?" msgstr "" #: ../../tasks.c:95 msgid "Name of task" msgstr "" #: ../../tasks.c:97 msgid "Date due" msgstr "" #: ../../tasks.c:99 msgid "Category" msgstr "Kategori" #: ../../tasks.c:101 msgid "Show All" msgstr "Visa alla" #: ../../tasks.c:223 msgid "Edit task" msgstr "Redigera aktivitet" #: ../../tasks.c:242 ../../calendar.c:98 ../../calendar_view.c:298 #: ../../calendar_view.c:959 ../../calendar_view.c:1003 #: ../../calendar_view.c:1084 msgid "Summary:" msgstr "Sammanfattning:" #: ../../tasks.c:253 msgid "Start date:" msgstr "Startdatum:" #: ../../tasks.c:261 ../../tasks.c:291 msgid "No date" msgstr "Inget datum" #: ../../tasks.c:265 ../../tasks.c:294 msgid "or" msgstr "eller" #: ../../tasks.c:279 ../../tasks.c:308 msgid "Time associated" msgstr "Tid kopplad till" #: ../../tasks.c:283 msgid "Due date:" msgstr "Förfallodag:" #: ../../tasks.c:312 msgid "Completed:" msgstr "Klar:" #: ../../tasks.c:323 msgid "Category:" msgstr "" #: ../../tasks.c:333 ../../calendar.c:159 ../../static/t/files.html:12 msgid "Description:" msgstr "" #: ../../tasks.c:351 ../../event.c:764 msgid "Save" msgstr "" #: ../../tasks.c:352 ../../event.c:765 ../../static/t/aide/inet/section.html:5 #: ../../static/t/view_blog/comment.html:12 #: ../../static/t/view_blog/post.html:15 ../../static/t/view_message.html:32 #: ../../static/t/navbar.html:116 ../../static/t/msg_listview.html:27 msgid "Delete" msgstr "" #: ../../tasks.c:353 ../../vcard_edit.c:1216 ../../paging.c:66 #: ../../event.c:767 ../../sysmsgs.c:69 ../../who.c:200 ../../auth.c:812 #: ../../static/t/edit_message.html:135 ../../static/t/confirmlogoff.html:4 msgid "Cancel" msgstr "" #: ../../tasks.c:423 ../../calendar_view.c:1379 msgid "Untitled Task" msgstr "" #: ../../fmt_date.c:310 msgid "Time format" msgstr "Tidsformat" #: ../../listsub.c:54 ../../static/t/listsub/display.html:5 msgid "List subscription" msgstr "" #: ../../listsub.c:67 ../../static/t/listsub/display.html:9 msgid "List subscribe/unsubscribe" msgstr "" #: ../../listsub.c:87 ../../static/t/listsub/display.html:15 #: ../../static/t/listsub/display.html:34 msgid "Confirmation request sent" msgstr "" #: ../../listsub.c:89 #, c-format msgid "" "You are subscribing %s to the %s mailing list. The " "listserver has sent you an e-mail with one additional Web link for you to " "click on to confirm your subscription. This extra step is for your " "protection, as it prevents others from being able to subscribe you to lists " "without your consent.

    Please click on the link which is being e-" "mailed to you and your subscription will be confirmed.
    \n" msgstr "" #: ../../listsub.c:102 ../../static/t/listsub/display.html:24 msgid "Go back..." msgstr "" #: ../../listsub.c:253 ../../listsub.c:291 ../../listsub.c:327 #: ../../listsub.c:334 msgid "You need to specify the mailinglist to subscribe to." msgstr "" #: ../../listsub.c:260 ../../listsub.c:298 msgid "You need to specify the email address you'd like to subscribe with." msgstr "" #: ../../blogview_renderer.c:58 ../../blogview_renderer.c:74 #, c-format msgid "%d comments" msgstr "%d kommentarer" #: ../../blogview_renderer.c:61 ../../blogview_renderer.c:77 msgid "permalink" msgstr "permalänk" #: ../../blogview_renderer.c:302 msgid "Newer posts" msgstr "nyare tjänster" #: ../../blogview_renderer.c:311 msgid "Older posts" msgstr "äldre inlägg" #: ../../useredit.c:629 msgid "" "An error occurred while trying to create or edit this address book entry." msgstr "" #: ../../useredit.c:717 msgid "Changes were not saved." msgstr "" #: ../../useredit.c:782 msgid "A new user has been created." msgstr "En ny användare har skapats." #: ../../useredit.c:786 msgid "" "You are attempting to create a new user from within Citadel while running in " "host based authentication mode. In this mode, you must create new users on " "the host system, not within Citadel." msgstr "" #: ../../bbsview_renderer.c:312 msgid "Go to page: " msgstr "" #: ../../bbsview_renderer.c:354 msgid "First" msgstr "Första" #: ../../bbsview_renderer.c:360 msgid "Last" msgstr "Sista" #: ../../graphics.c:56 msgid "Graphics upload has been cancelled." msgstr "" #: ../../graphics.c:62 msgid "You didn't upload a file." msgstr "" #: ../../graphics.c:112 msgid "your photo" msgstr "" #: ../../graphics.c:119 msgid "the icon for this room" msgstr "" #: ../../graphics.c:127 msgid "the Greetingpicture for the login prompt" msgstr "" #: ../../graphics.c:135 msgid "the Logoff banner picture" msgstr "bilden på rubriken vid utloggning" #: ../../graphics.c:146 msgid "the icon for this floor" msgstr "" #: ../../calendar_tools.c:100 msgid "Hour: " msgstr "" #: ../../calendar_tools.c:120 msgid "Minute: " msgstr "" #: ../../calendar_tools.c:191 msgid "(status unknown)" msgstr "" #: ../../calendar_tools.c:207 msgid "(needs action)" msgstr "" #: ../../calendar_tools.c:210 msgid "(accepted)" msgstr "(accepterad)" #: ../../calendar_tools.c:213 msgid "(declined)" msgstr "" #: ../../calendar_tools.c:216 msgid "(tenative)" msgstr "" #: ../../calendar_tools.c:219 msgid "(delegated)" msgstr "" #: ../../calendar_tools.c:222 msgid "(completed)" msgstr "" #: ../../calendar_tools.c:225 msgid "(in process)" msgstr "" #: ../../calendar_tools.c:228 msgid "(none)" msgstr "" #: ../../notes.c:343 msgid "Click on any note to edit it." msgstr "" #: ../../vcard_edit.c:175 ../../vcard_edit.c:178 msgid "(no name)" msgstr "" #: ../../vcard_edit.c:443 msgid " (work)" msgstr "" #: ../../vcard_edit.c:445 msgid " (home)" msgstr "" #: ../../vcard_edit.c:447 msgid " (cell)" msgstr "" #: ../../vcard_edit.c:458 ../../vcard_edit.c:1120 msgid "Address:" msgstr "" #: ../../vcard_edit.c:526 msgid "Telephone:" msgstr "" #: ../../vcard_edit.c:531 msgid "E-mail:" msgstr "" #: ../../vcard_edit.c:779 msgid "This address book is empty." msgstr "" #: ../../vcard_edit.c:793 msgid "An internal error has occurred." msgstr "" #: ../../vcard_edit.c:944 msgid "Error" msgstr "" #: ../../vcard_edit.c:1048 msgid "Edit contact information" msgstr "" #: ../../vcard_edit.c:1068 msgid "Prefix" msgstr "" #: ../../vcard_edit.c:1068 msgid "First Name" msgstr "" #: ../../vcard_edit.c:1068 msgid "Middle Name" msgstr "" #: ../../vcard_edit.c:1068 msgid "Last Name" msgstr "" #: ../../vcard_edit.c:1068 msgid "Suffix" msgstr "" #: ../../vcard_edit.c:1089 msgid "Display name:" msgstr "" #: ../../vcard_edit.c:1096 msgid "Title:" msgstr "" #: ../../vcard_edit.c:1103 msgid "Organization:" msgstr "" #: ../../vcard_edit.c:1114 msgid "PO box:" msgstr "" #: ../../vcard_edit.c:1130 msgid "City:" msgstr "" #: ../../vcard_edit.c:1136 msgid "State:" msgstr "" #: ../../vcard_edit.c:1142 msgid "ZIP code:" msgstr "" #: ../../vcard_edit.c:1148 msgid "Country:" msgstr "" #: ../../vcard_edit.c:1158 msgid "Home telephone:" msgstr "" #: ../../vcard_edit.c:1164 msgid "Work telephone:" msgstr "" #: ../../vcard_edit.c:1170 msgid "Mobile telephone:" msgstr "" #: ../../vcard_edit.c:1176 msgid "Fax number:" msgstr "" #: ../../vcard_edit.c:1187 msgid "Primary Internet e-mail address" msgstr "" #: ../../vcard_edit.c:1194 msgid "Internet e-mail aliases" msgstr "" #: ../../vcard_edit.c:1215 ../../sysmsgs.c:67 msgid "Save changes" msgstr "" #: ../../vcard_edit.c:1261 msgid "Unable to enter the room to save your message" msgstr "" #: ../../vcard_edit.c:1265 msgid "Aborting." msgstr "" #: ../../vcard_edit.c:1297 ../../vcard_edit.c:1341 ../../auth.c:367 #: ../../auth.c:397 msgid "An error has occurred." msgstr "" #: ../../vcard_edit.c:1399 msgid "Could Not decode vcard photo\n" msgstr "" #: ../../preferences.c:880 msgid "Cancelled. No settings were changed." msgstr "" #: ../../preferences.c:1092 msgid "Make this my start page" msgstr "" #: ../../preferences.c:1130 msgid "This isn't allowed to become the start page." msgstr "" #: ../../preferences.c:1132 msgid "You no longer have a start page selected." msgstr "" #: ../../preferences.c:1182 msgid "Prefered startpage" msgstr "" #: ../../calendar.c:76 msgid "Meeting invitation" msgstr "" #: ../../calendar.c:79 msgid "Attendee's reply to your invitation" msgstr "" #: ../../calendar.c:82 msgid "Published event" msgstr "" #: ../../calendar.c:85 msgid "This is an unknown type of calendar item." msgstr "" #: ../../calendar.c:107 ../../calendar_view.c:306 ../../calendar_view.c:964 #: ../../calendar_view.c:1008 ../../calendar_view.c:1089 msgid "Location:" msgstr "" #: ../../calendar.c:132 ../../calendar_view.c:351 ../../calendar_view.c:970 msgid "Date:" msgstr "" #: ../../calendar.c:139 ../../calendar_view.c:373 ../../calendar_view.c:1013 #: ../../calendar_view.c:1099 msgid "Starting date/time:" msgstr "" #: ../../calendar.c:150 ../../calendar_view.c:376 ../../calendar_view.c:1015 #: ../../calendar_view.c:1101 msgid "Ending date/time:" msgstr "" #: ../../calendar.c:168 ../../event.c:90 msgid "Recurrence" msgstr "" #: ../../calendar.c:169 ../../event.c:505 msgid "This is a recurring event" msgstr "" #: ../../calendar.c:178 msgid "Attendee:" msgstr "" #: ../../calendar.c:218 #, c-format msgid "This is an update of '%s' which is already in your calendar." msgstr "" #: ../../calendar.c:222 #, c-format msgid "" "This event would conflict with '%s' which is already in your calendar." msgstr "" #: ../../calendar.c:227 msgid "Update:" msgstr "" #: ../../calendar.c:228 msgid "CONFLICT:" msgstr "" #: ../../calendar.c:251 msgid "How would you like to respond to this invitation?" msgstr "" #: ../../calendar.c:252 msgid "Accept" msgstr "" #: ../../calendar.c:253 msgid "Tentative" msgstr "" #: ../../calendar.c:254 msgid "Decline" msgstr "" #: ../../calendar.c:271 msgid "Click Update to accept this reply and update your calendar." msgstr "" #: ../../calendar.c:272 msgid "Update" msgstr "" #: ../../calendar.c:273 msgid "Ignore" msgstr "" #: ../../calendar.c:295 msgid "There was an error parsing this calendar item." msgstr "" #: ../../calendar.c:328 msgid "" "You have accepted this meeting invitation. It has been entered into your " "calendar." msgstr "" #: ../../calendar.c:332 msgid "" "You have tentatively accepted this meeting invitation. It has been " "'pencilled in' to your calendar." msgstr "" #: ../../calendar.c:336 msgid "" "You have declined this meeting invitation. It has not been entered " "into your calendar." msgstr "" #: ../../calendar.c:341 msgid "A reply has been sent to the meeting organizer." msgstr "" #. / Translators: RSVP aka Répondez s'il-vous-plaît Is the term #. / that the recipient of an ical-invitation should please #. / answer this request. #: ../../calendar.c:376 msgid "Your calendar has been updated to reflect this RSVP." msgstr "" #: ../../calendar.c:378 msgid "" "You have chosen to ignore this RSVP. Your calendar has not been " "updated." msgstr "" #: ../../calendar.c:932 msgid "Calendar day view begins at:" msgstr "" #: ../../calendar.c:933 msgid "Calendar day view ends at:" msgstr "" #: ../../calendar.c:934 msgid "Week starts on:" msgstr "" #: ../../paging.c:35 msgid "Send instant message" msgstr "" #: ../../paging.c:43 msgid "Send an instant message to: " msgstr "" #: ../../paging.c:57 msgid "Enter message text:" msgstr "" #: ../../paging.c:65 ../../static/t/edit_message.html:109 msgid "Send message" msgstr "" #: ../../paging.c:84 msgid "Message was not sent." msgstr "" #: ../../paging.c:95 msgid "Message has been sent to " msgstr "" #: ../../iconbar.c:328 msgid "Iconbar Setting" msgstr "" #. #. * Set to 'unknown' right from the beginning. Unless we learn #. * something else, that's what we'll go with. #. #: ../../availability.c:148 msgid "availability unknown" msgstr "" #: ../../availability.c:169 msgid "free" msgstr "" #: ../../availability.c:179 msgid "BUSY" msgstr "" #: ../../serv_func.c:193 msgid "" "This server is already serving its maximum number of users and cannot accept " "any additional logins at this time. Please try again later or contact your " "system administrator." msgstr "" #: ../../serv_func.c:198 ../../serv_func.c:227 msgid "Received unexpected answer from Citadel server; bailing out." msgstr "" #: ../../serv_func.c:236 #, c-format msgid "" "You are connected to a Citadel server running Citadel %d.%02d. \n" "In order to run this version of WebCit you must also have Citadel %d.%02d or " "newer.\n" "\n" "\n" msgstr "" #: ../../event.c:70 msgid "seconds" msgstr "" #: ../../event.c:71 msgid "minutes" msgstr "" #: ../../event.c:72 msgid "hours" msgstr "" #: ../../event.c:73 msgid "days" msgstr "" #: ../../event.c:74 msgid "weeks" msgstr "" #: ../../event.c:75 msgid "months" msgstr "" #: ../../event.c:76 msgid "years" msgstr "" #: ../../event.c:77 msgid "never" msgstr "" #: ../../event.c:81 msgid "first" msgstr "" #: ../../event.c:82 msgid "second" msgstr "" #: ../../event.c:83 msgid "third" msgstr "" #: ../../event.c:84 msgid "fourth" msgstr "" #: ../../event.c:85 msgid "fifth" msgstr "" #: ../../event.c:88 msgid "Event" msgstr "" #: ../../event.c:89 ../../event.c:437 ../../event.c:449 msgid "Attendees" msgstr "" #: ../../event.c:167 msgid "Add or edit an event" msgstr "" #: ../../event.c:206 ../../static/t/iconbar.html:13 #: ../../static/t/iconbar/edit.html:29 msgid "Summary" msgstr "" #: ../../event.c:217 msgid "Location" msgstr "" #: ../../event.c:228 ../../calendar_view.c:760 msgid "Start" msgstr "" #: ../../event.c:271 ../../calendar_view.c:957 ../../calendar_view.c:986 msgid "All day event" msgstr "" #: ../../event.c:277 ../../calendar_view.c:761 msgid "End" msgstr "" #: ../../event.c:327 ../../static/t/iconbar.html:34 #: ../../static/t/iconbar/edit.html:49 msgid "Notes" msgstr "" #: ../../event.c:369 msgid "Organizer" msgstr "" #: ../../event.c:374 msgid "(you are the organizer)" msgstr "" #: ../../event.c:392 msgid "Show time as:" msgstr "" #: ../../event.c:415 msgid "Free" msgstr "" #: ../../event.c:423 msgid "Busy" msgstr "" #: ../../event.c:440 msgid "(One per line)" msgstr "" #: ../../event.c:450 ../../static/t/edit_message.html:143 #: ../../static/t/iconbar.html:29 ../../static/t/iconbar/edit.html:42 msgid "Contacts" msgstr "" #: ../../event.c:513 msgid "Recurrence rule" msgstr "" #: ../../event.c:517 msgid "Repeats every" msgstr "" #. begin 'weekday_selector' div #: ../../event.c:535 msgid "on these weekdays:" msgstr "" #: ../../event.c:593 #, c-format msgid "on day %s%d%s of the month" msgstr "" #: ../../event.c:602 ../../event.c:664 msgid "on the " msgstr "" #: ../../event.c:626 msgid "of the month" msgstr "" #: ../../event.c:655 msgid "every " msgstr "" #: ../../event.c:656 msgid "year on this date" msgstr "" #: ../../event.c:688 ../../static/t/msg_listselector_bottom.html:7 #: ../../static/t/msg_listselector_top.html:7 msgid "of" msgstr "" #: ../../event.c:712 msgid "Recurrence range" msgstr "" #: ../../event.c:720 msgid "No ending date" msgstr "" #: ../../event.c:727 msgid "Repeat this event" msgstr "" #: ../../event.c:730 msgid "times" msgstr "" #: ../../event.c:738 msgid "Repeat this event until " msgstr "" #: ../../event.c:766 msgid "Check attendee availability" msgstr "" #: ../../event.c:858 ../../calendar_view.c:272 ../../calendar_view.c:468 #: ../../calendar_view.c:937 msgid "Untitled Event" msgstr "" #: ../../sysmsgs.c:52 #, c-format msgid "Edit %s" msgstr "" #: ../../sysmsgs.c:55 #, c-format msgid "" "Enter %s below. Text is formatted to the reader's browser. A newline is " "forced by preceding the next line by a blank." msgstr "" #: ../../sysmsgs.c:89 #, c-format msgid "Cancelled. %s was not saved." msgstr "" #: ../../sysmsgs.c:109 msgid " has been saved." msgstr "" #: ../../sysmsgs.c:116 ../../sysmsgs.c:117 msgid "Room info" msgstr "" #: ../../sysmsgs.c:122 ../../sysmsgs.c:124 msgid "Your bio" msgstr "" #: ../../calendar_view.c:297 ../../calendar_view.c:958 #: ../../calendar_view.c:1002 ../../calendar_view.c:1083 #: ../../static/t/sieve/display_one.html:20 msgid "From" msgstr "" #: ../../calendar_view.c:355 ../../calendar_view.c:974 msgid "Starting date:" msgstr "" #: ../../calendar_view.c:361 ../../calendar_view.c:976 msgid "Ending date:" msgstr "" #: ../../calendar_view.c:369 ../../calendar_view.c:1095 msgid "Date/time:" msgstr "" #: ../../calendar_view.c:386 ../../calendar_view.c:980 #: ../../calendar_view.c:1018 ../../calendar_view.c:1105 #: ../../static/t/room/edit/tab_share.html:32 msgid "Notes:" msgstr "" #: ../../calendar_view.c:585 ../../calendar_view.c:721 msgid "previous" msgstr "" #: ../../calendar_view.c:597 ../../calendar_view.c:733 #: ../../calendar_view.c:1308 msgid "next" msgstr "" #: ../../calendar_view.c:756 msgid "Week" msgstr "" #: ../../calendar_view.c:758 msgid "Hours" msgstr "" #: ../../calendar_view.c:759 ../../static/t/sieve/display_one.html:22 #: ../../static/t/msg_listview.html:9 msgid "Subject" msgstr "" #: ../../calendar_view.c:1001 ../../calendar_view.c:1024 msgid "Ongoing event" msgstr "" #: ../../messages.c:70 msgid "ERROR:" msgstr "" #: ../../messages.c:88 msgid "Empty message" msgstr "" #: ../../messages.c:1010 msgid "Cancelled. Message was not posted." msgstr "" #: ../../messages.c:1013 msgid "Automatically cancelled because you have already saved this message." msgstr "" #: ../../messages.c:1037 msgid "Saved to Drafts failed: " msgstr "" #: ../../messages.c:1102 msgid "Refusing to post empty message.\n" msgstr "" #: ../../messages.c:1128 msgid "Message has been saved to Drafts.\n" msgstr "" #: ../../messages.c:1137 msgid "Message has been sent.\n" msgstr "" #: ../../messages.c:1140 msgid "Message has been posted.\n" msgstr "" #: ../../messages.c:1679 msgid "The message was not moved." msgstr "" #: ../../messages.c:1719 #, c-format msgid "An error occurred while retrieving this part: %s/%s\n" msgstr "" #: ../../messages.c:1796 #, c-format msgid "An error occurred while retrieving this part: %s\n" msgstr "" #: ../../messages.c:1956 msgid "Attach signature to email messages?" msgstr "" #: ../../messages.c:1959 msgid "Use this signature:" msgstr "" #: ../../messages.c:1961 msgid "Default character set for email headers:" msgstr "" #: ../../messages.c:1964 msgid "Preferred email address" msgstr "" #: ../../messages.c:1966 msgid "Preferred display name for email messages" msgstr "" #: ../../messages.c:1970 msgid "Preferred display name for bulletin board posts" msgstr "" #: ../../messages.c:1973 msgid "Mailbox view mode" msgstr "" #: ../../inetconf.c:110 ../../inetconf.c:119 ../../inetconf.c:133 #: ../../inetconf.c:159 ../../netconf.c:156 ../../netconf.c:183 #: ../../netconf.c:191 ../../netconf.c:239 ../../netconf.c:247 msgid "Invalid Parameter" msgstr "" #: ../../inetconf.c:126 msgid " has been deleted." msgstr "" #. added status message #: ../../inetconf.c:144 msgid " added." msgstr "" #: ../../who.c:154 msgid "Edit your session display" msgstr "" #: ../../who.c:158 msgid "" "This screen allows you to change the way your session appears in the 'Who is " "online' listing. To turn off any 'fake' name you've previously set, simply " "click the appropriate 'change' button without typing anything in the " "corresponding box. " msgstr "" #: ../../who.c:171 msgid "Room name:" msgstr "" #: ../../who.c:176 msgid "Change room name" msgstr "" #: ../../who.c:180 msgid "Host name:" msgstr "" #: ../../who.c:185 msgid "Change host name" msgstr "" #: ../../who.c:190 ../../static/t/aide/edituser/detailview.html:20 #: ../../static/t/openid_manual_create.html:9 #: ../../static/t/get_logged_in.html:57 ../../static/t/get_logged_in.html:72 msgid "User name:" msgstr "" #: ../../who.c:195 msgid "Change user name" msgstr "" #: ../../siteconfig.c:46 ../../siteconfig.c:64 ../../roomlist.c:44 #: ../../roomlist.c:394 ../../static/t/room/edit/tab_expire.html:72 #: ../../static/t/room/edit/tab_config.html:149 #: ../../static/t/room/edit/tab_access.html:42 msgid "Higher access is required to access this function." msgstr "" #: ../../siteconfig.c:256 msgid "WARNING: Failed to parse Server Config; do you run a to new citserver?" msgstr "" #: ../../siteconfig.c:319 msgid "Your system configuration has been updated." msgstr "" #: ../../wiki.c:69 ../../wiki.c:162 ../../wiki.c:282 #, c-format msgid "There is no room called '%s'." msgstr "" #: ../../wiki.c:76 #, c-format msgid "'%s' is not a Wiki room." msgstr "" #: ../../wiki.c:110 #, c-format msgid "There is no page called '%s' here." msgstr "" #: ../../wiki.c:112 msgid "" "Select the 'Edit this page' link in the room banner if you would like to " "create this page." msgstr "" #: ../../wiki.c:181 ../../static/t/msg_listview.html:11 msgid "Date" msgstr "" #: ../../wiki.c:182 msgid "Author" msgstr "" #: ../../wiki.c:209 ../../wiki.c:218 msgid "(show)" msgstr "" #: ../../wiki.c:211 ../../static/t/navbar.html:145 msgid "Current version" msgstr "" #: ../../wiki.c:223 msgid "(revert)" msgstr "" #: ../../wiki.c:300 msgid "Page title" msgstr "" #: ../../webcit.c:316 msgid "Authorization Required" msgstr "" #: ../../webcit.c:324 #, c-format msgid "" "The resource you requested requires a valid username and password. You could " "not be logged in: %s\n" msgstr "" #: ../../webcit.c:647 ../../auth.c:526 msgid "" "This program was unable to connect or stay connected to the Citadel server. " "Please report this problem to your system administrator." msgstr "" #: ../../webcit.c:654 ../../auth.c:532 msgid "Read More..." msgstr "" #: ../../smtpqueue.c:134 ../../static/t/aide/ignetconf/section.html:5 #: ../../static/t/view_mailq/message.html:2 msgid "(Delete)" msgstr "" #: ../../smtpqueue.c:334 msgid "First Attempt pending" msgstr "" #: ../../roomlist.c:99 msgid "My Folders" msgstr "" #: ../../downloads.c:289 #, c-format msgid "An error occurred while retrieving this file: %s\n" msgstr "" #: ../../roomtokens.c:572 msgid "file" msgstr "" #: ../../roomtokens.c:574 msgid "files" msgstr "" #: ../../summary.c:128 msgid "(None)" msgstr "" #: ../../summary.c:184 msgid "(Nothing)" msgstr "" #: ../../msg_renderers.c:579 ../../static/t/who/bio.html:15 msgid "edit" msgstr "" #: ../../msg_renderers.c:1119 msgid "I don't know how to display " msgstr "" #: ../../msg_renderers.c:1353 msgid "(no subject)" msgstr "" #: ../../addressbook_popup.c:186 msgid "Add" msgstr "äLägg till" #. an erased user #: ../../auth.c:30 ../../static/t/aide/edituser/detailview.html:43 #: ../../static/t/aide/siteconfig/tab_access.html:40 #: ../../static/t/aide/siteconfig/tab_access.html:51 msgid "Deleted" msgstr "Raderad" #. a new user #: ../../auth.c:33 ../../static/t/aide/edituser/detailview.html:44 #: ../../static/t/aide/siteconfig/tab_access.html:41 #: ../../static/t/aide/siteconfig/tab_access.html:52 #: ../../static/t/get_logged_in.html:79 msgid "New User" msgstr "Ny Användare" #. a trouble maker #: ../../auth.c:36 ../../static/t/aide/edituser/detailview.html:45 #: ../../static/t/aide/siteconfig/tab_access.html:42 #: ../../static/t/aide/siteconfig/tab_access.html:53 msgid "Problem User" msgstr "Oönskad användare" #. user with normal privileges #: ../../auth.c:39 ../../static/t/aide/edituser/detailview.html:46 #: ../../static/t/aide/siteconfig/tab_access.html:43 #: ../../static/t/aide/siteconfig/tab_access.html:54 msgid "Local User" msgstr "Lokal Användare" #. a user that may access network resources #: ../../auth.c:42 ../../static/t/aide/edituser/detailview.html:47 #: ../../static/t/aide/siteconfig/tab_access.html:44 #: ../../static/t/aide/siteconfig/tab_access.html:55 msgid "Network User" msgstr "Nätverks Användare" #. a moderator #: ../../auth.c:45 ../../static/t/aide/edituser/detailview.html:48 #: ../../static/t/aide/siteconfig/tab_access.html:45 #: ../../static/t/aide/siteconfig/tab_access.html:56 msgid "Preferred User" msgstr "Moderator" #. chief #: ../../auth.c:48 ../../static/t/aide/edituser/detailview.html:49 #: ../../static/t/aide/siteconfig/tab_access.html:46 #: ../../static/t/aide/siteconfig/tab_access.html:57 msgid "Admin" msgstr "Chef" #: ../../auth.c:513 ../../static/t/iconbar.html:80 #: ../../static/t/confirmlogoff.html:3 #: ../../static/t/menu/basic_commands.html:19 msgid "Log off" msgstr "" #: ../../auth.c:537 msgid "Log in again" msgstr "" #: ../../auth.c:585 ../../static/t/aide/usermanagement.html:3 msgid "Validate new users" msgstr "" #: ../../auth.c:605 msgid "No users require validation at this time." msgstr "" #: ../../auth.c:655 msgid "very weak" msgstr "" #: ../../auth.c:658 msgid "weak" msgstr "" #: ../../auth.c:661 msgid "ok" msgstr "" #: ../../auth.c:665 msgid "strong" msgstr "" #: ../../auth.c:683 #, c-format msgid "Current access level: %d (%s)\n" msgstr "" #: ../../auth.c:691 msgid "Select access level for this user:" msgstr "" #: ../../auth.c:776 ../../static/t/menu/your_info.html:4 msgid "Change your password" msgstr "" #: ../../auth.c:800 msgid "Enter new password:" msgstr "" #: ../../auth.c:804 msgid "Enter it again to confirm:" msgstr "" #: ../../auth.c:810 msgid "Change password" msgstr "" #: ../../auth.c:830 msgid "Cancelled. Password was not changed." msgstr "" #: ../../auth.c:839 msgid "They don't match. Password was not changed." msgstr "" #: ../../auth.c:845 msgid "Blank passwords are not allowed." msgstr "Tomt lösenord är inte tillåtet." #: ../../openid.c:34 msgid "Manage Account/OpenID Associations" msgstr "" #: ../../openid.c:52 msgid "Do you really want to delete this OpenID?" msgstr "" #: ../../openid.c:53 msgid "(delete)" msgstr "" #: ../../openid.c:61 msgid "Add an OpenID: " msgstr "" #: ../../openid.c:64 msgid "Attach" msgstr "" #: ../../openid.c:68 #, c-format msgid "%s does not permit authentication via OpenID." msgstr "" #: ../../html2html.c:136 #, c-format msgid "realloc() error! couldn't get %d bytes: %s" msgstr "" #: ../../static/t/viewomatic.html:4 msgid "View as:" msgstr "" #: ../../static/t/sieve/list.html:32 ../../static/t/sieve/none.html:4 #: ../../static/t/menu/your_info.html:7 msgid "View/edit server-side mail filters" msgstr "" #: ../../static/t/sieve/list.html:41 msgid "When new mail arrives: " msgstr "" #: ../../static/t/sieve/list.html:43 msgid "Leave it in my inbox without filtering" msgstr "" #: ../../static/t/sieve/list.html:44 msgid "Filter it according to rules selected below" msgstr "" #: ../../static/t/sieve/list.html:45 msgid "Filter it through a manually edited script (advanced users only)" msgstr "" #: ../../static/t/sieve/list.html:52 msgid "Your incoming mail will not be filtered through any scripts." msgstr "" #: ../../static/t/sieve/list.html:64 msgid "Add rule" msgstr "" #: ../../static/t/sieve/list.html:71 msgid "The currently active script is: " msgstr "" #: ../../static/t/sieve/list.html:76 ../../static/t/sieve/add.html:3 msgid "Add or delete scripts" msgstr "" #: ../../static/t/sieve/display_one.html:16 msgid "If" msgstr "" #: ../../static/t/sieve/display_one.html:21 msgid "To or Cc" msgstr "" #: ../../static/t/sieve/display_one.html:23 msgid "Reply-to" msgstr "" #: ../../static/t/sieve/display_one.html:24 #: ../../static/t/msg_listview.html:10 #: ../../static/t/view_mailq/header.html:27 msgid "Sender" msgstr "" #: ../../static/t/sieve/display_one.html:25 msgid "Resent-From" msgstr "" #: ../../static/t/sieve/display_one.html:26 msgid "Resent-To" msgstr "" #: ../../static/t/sieve/display_one.html:27 msgid "Envelope From" msgstr "" #: ../../static/t/sieve/display_one.html:28 msgid "Envelope To" msgstr "" #: ../../static/t/sieve/display_one.html:29 msgid "X-Mailer" msgstr "" #: ../../static/t/sieve/display_one.html:30 msgid "X-Spam-Flag" msgstr "" #: ../../static/t/sieve/display_one.html:31 msgid "X-Spam-Status" msgstr "" #: ../../static/t/sieve/display_one.html:32 msgid "List-ID" msgstr "" #: ../../static/t/sieve/display_one.html:33 msgid "Message size" msgstr "" #: ../../static/t/sieve/display_one.html:34 #: ../../static/t/select_messageindex_all.html:1 msgid "All" msgstr "" #: ../../static/t/sieve/display_one.html:41 msgid "contains" msgstr "" #: ../../static/t/sieve/display_one.html:42 msgid "does not contain" msgstr "" #: ../../static/t/sieve/display_one.html:43 msgid "is" msgstr "" #: ../../static/t/sieve/display_one.html:44 msgid "is not" msgstr "" #: ../../static/t/sieve/display_one.html:45 msgid "matches" msgstr "" #: ../../static/t/sieve/display_one.html:46 msgid "does not match" msgstr "" #: ../../static/t/sieve/display_one.html:52 msgid "(All messages)" msgstr "" #: ../../static/t/sieve/display_one.html:56 msgid "is larger than" msgstr "" #: ../../static/t/sieve/display_one.html:57 msgid "is smaller than" msgstr "" #: ../../static/t/sieve/display_one.html:59 msgid "bytes" msgstr "" #: ../../static/t/sieve/display_one.html:65 msgid "Keep" msgstr "" #: ../../static/t/sieve/display_one.html:66 msgid "Discard silently" msgstr "" #: ../../static/t/sieve/display_one.html:67 msgid "Reject" msgstr "" #: ../../static/t/sieve/display_one.html:68 msgid "Move message to" msgstr "" #: ../../static/t/sieve/display_one.html:69 msgid "Forward to" msgstr "" #: ../../static/t/sieve/display_one.html:70 msgid "Vacation" msgstr "" #: ../../static/t/sieve/display_one.html:82 msgid "Message:" msgstr "" #: ../../static/t/sieve/display_one.html:90 msgid "and then" msgstr "" #: ../../static/t/sieve/display_one.html:93 msgid "continue processing" msgstr "" #: ../../static/t/sieve/display_one.html:94 msgid "stop" msgstr "" #: ../../static/t/sieve/none.html:9 msgid "" "This installation of Citadel was built without support for server-side mail " "filtering.
    Please contact your system administrator if you require this " "feature.
    " msgstr "" #: ../../static/t/sieve/add.html:9 msgid "Add a new script" msgstr "" #: ../../static/t/sieve/add.html:10 msgid "" "To create a new script, enter the desired script name in the box below and " "click 'Create'." msgstr "" #: ../../static/t/sieve/add.html:14 msgid "Script name: " msgstr "" #: ../../static/t/sieve/add.html:18 msgid "Edit scripts" msgstr "" #: ../../static/t/sieve/add.html:20 msgid "Return to the script editing screen" msgstr "" #: ../../static/t/sieve/add.html:23 msgid "Delete scripts" msgstr "" #: ../../static/t/sieve/add.html:24 msgid "" "To delete an existing script, select the script name from the list and click " "'Delete'." msgstr "" #: ../../static/t/msg/confirm_move.html:4 msgid "Confirm move of message" msgstr "" #: ../../static/t/msg/confirm_move.html:12 msgid "Move this message to:" msgstr "" #: ../../static/t/login.html:5 msgid "powered by" msgstr "" #: ../../static/t/login.html:15 ../../static/t/iconbar.html:88 #: ../../static/t/get_logged_in.html:64 ../../static/t/get_logged_in.html:88 #: ../../static/t/get_logged_in.html:93 ../../static/t/get_logged_in.html:98 #: ../../static/t/get_logged_in.html:107 msgid "Log in" msgstr "" #: ../../static/t/trailing.html:14 msgid "" "WARNING: You have JavaScript disabled in your web browser. Many functions " "of this system will not work properly." msgstr "" #: ../../static/t/view_submessage.html:4 #: ../../static/t/view_message/replyquote.html:3 #: ../../static/t/view_message/replyquote.html:7 #: ../../static/t/view_message/print.html:8 ../../static/t/view_message.html:7 msgid "from " msgstr "" #: ../../static/t/searchomatic.html:4 msgid "Search: " msgstr "" #: ../../static/t/listsub/display.html:16 msgid "You are subscribing " msgstr "" #: ../../static/t/listsub/display.html:17 msgid " to the " msgstr "" #: ../../static/t/listsub/display.html:18 msgid " mailing list." msgstr "" #: ../../static/t/listsub/display.html:19 msgid "" "The listserver has sent you an e-mail with one additional Web link for you " "to click on to confirm your subscription." msgstr "" #: ../../static/t/listsub/display.html:20 msgid "" "This extra step is for your protection, as it prevents others from being " "able to subscribe you to lists without your consent." msgstr "" #: ../../static/t/listsub/display.html:22 msgid "" "Please click on the link which is being e-mailed to you and your " "subscription will be confirmed." msgstr "" #: ../../static/t/listsub/display.html:27 #: ../../static/t/listsub/display.html:47 msgid "ERROR" msgstr "" #: ../../static/t/listsub/display.html:35 msgid "You are unsubscribing" msgstr "" #: ../../static/t/listsub/display.html:37 msgid "from the" msgstr "" #: ../../static/t/listsub/display.html:39 msgid "mailing list." msgstr "" #: ../../static/t/listsub/display.html:40 msgid "" "The listserver has sent you an e-mail with one additional Web link for you " "to click on to confirm your unsubscription." msgstr "" #: ../../static/t/listsub/display.html:41 msgid "" "This extra step is for your protection, as it prevents others from being " "able to unsubscribe you from lists without your consent." msgstr "" #: ../../static/t/listsub/display.html:43 msgid "" "Please click on the link which is being e-mailed to you and your " "unsubscription will be confirmed." msgstr "" #: ../../static/t/listsub/display.html:44 msgid "Back..." msgstr "" #: ../../static/t/listsub/display.html:54 msgid "Confirmation successful!" msgstr "" #: ../../static/t/listsub/display.html:56 msgid "Confirmation failed." msgstr "" #: ../../static/t/listsub/display.html:57 msgid "This could mean one of two things:" msgstr "" #: ../../static/t/listsub/display.html:59 msgid "" "You waited too long to confirm your subscribe/unsubscribe request (the " "confirmation link is only valid for three days)" msgstr "" #: ../../static/t/listsub/display.html:60 msgid "" "You have already successfully confirmed your subscribe/unsubscribe " "request and are attempting to do it again." msgstr "" #: ../../static/t/listsub/display.html:62 msgid "The error returned by the server was: " msgstr "" #: ../../static/t/listsub/display.html:70 msgid "Name of list:" msgstr "" #: ../../static/t/listsub/display.html:75 msgid "Your e-mail address:" msgstr "" #: ../../static/t/listsub/display.html:79 msgid "(If subscribing) preferred format: " msgstr "" #: ../../static/t/listsub/display.html:80 msgid "One message at a time" msgstr "" #: ../../static/t/listsub/display.html:81 msgid "Digest format" msgstr "" #: ../../static/t/listsub/display.html:89 msgid "" "When you attempt to subscribe or unsubscribe to a mailing list, you will " "receive an e-mail containing one additional web link to click on for final " "confirmation." msgstr "" #: ../../static/t/listsub/display.html:90 msgid "" "This extra step is for your protection, as it prevents others from being " "able to subscribe or unsubscribe you to lists." msgstr "" #: ../../static/t/floors_edit_one.html:11 msgid "(delete floor)" msgstr "" #: ../../static/t/floors_edit_one.html:13 msgid "(edit graphic)" msgstr "" #: ../../static/t/floors.html:4 msgid "Add/change/delete floors" msgstr "" #: ../../static/t/floors.html:10 msgid "Floor number" msgstr "" #: ../../static/t/floors.html:11 msgid "Floor name" msgstr "" #: ../../static/t/floors.html:12 msgid "Number of rooms" msgstr "" #: ../../static/t/floors.html:13 msgid "Floor CSS" msgstr "" #: ../../static/t/files.html:4 msgid "Files available for download in" msgstr "" #: ../../static/t/files.html:9 msgid "Upload a file:" msgstr "" #: ../../static/t/files.html:30 msgid "Filename" msgstr "" #: ../../static/t/files.html:31 msgid "Size" msgstr "" #: ../../static/t/files.html:32 msgid "Content" msgstr "" #: ../../static/t/files.html:33 msgid "Description" msgstr "" #: ../../static/t/edit_message.html:9 ../../static/t/iconbar.html:50 #: ../../static/t/iconbar.html:59 msgid "Loading" msgstr "" #: ../../static/t/edit_message.html:23 msgid "from" msgstr "" #: ../../static/t/edit_message.html:29 ../../static/t/edit_message.html:38 msgid "Anonymous" msgstr "" #: ../../static/t/edit_message.html:47 msgid "in" msgstr "" #: ../../static/t/edit_message.html:51 msgid "To:" msgstr "" #: ../../static/t/edit_message.html:57 #: ../../static/t/view_message/print.html:15 #: ../../static/t/view_message.html:15 msgid "CC:" msgstr "" #: ../../static/t/edit_message.html:63 msgid "BCC:" msgstr "" #: ../../static/t/edit_message.html:71 msgid "Subject (optional):" msgstr "" #: ../../static/t/edit_message.html:71 #: ../../static/t/view_message/replyquote.html:8 #: ../../static/t/view_message/print.html:16 #: ../../static/t/view_message.html:16 msgid "Subject:" msgstr "" #: ../../static/t/edit_message.html:86 msgid "--- forwarded message ---" msgstr "" #: ../../static/t/edit_message.html:110 msgid "Post message" msgstr "" #: ../../static/t/edit_message.html:118 msgid "Save to Drafts" msgstr "" #: ../../static/t/edit_message.html:126 #: ../../static/t/edit_message/attachments_pane.html:5 msgid "Attachments:" msgstr "" #: ../../static/t/aide/display_serverrestart_page.html:4 msgid "Message to your Users:" msgstr "" #: ../../static/t/aide/display_generic_result.html:2 msgid "Server command results" msgstr "" #: ../../static/t/aide/display_generic_result.html:18 msgid "Enter another command" msgstr "" #: ../../static/t/aide/display_generic_result.html:19 msgid "Return to menu" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:3 msgid "Site configuration" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:6 #: ../../static/t/aide/edituser/select.html:9 msgid "You need to be aide to view this." msgstr "" #: ../../static/t/aide/display_sitewide_config.html:11 msgid "General" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:12 msgid "Access" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:13 #, fuzzy msgid "Network" msgstr "Nätverks Användare" #: ../../static/t/aide/display_sitewide_config.html:14 msgid "Tuning" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:15 msgid "Directory" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:16 msgid "Auto-purger" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:17 msgid "Indexing/Journaling" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:18 #: ../../static/t/aide/siteconfig/tab_pushmail.html:1 msgid "Push Email" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:19 msgid "Pop3" msgstr "" #: ../../static/t/aide/usermanagement.html:2 msgid "Add, change, delete user accounts" msgstr "" #: ../../static/t/aide/display_inetconf.html:5 #: ../../static/t/aide/display_menu.html:5 msgid "System Administration Menu" msgstr "" #: ../../static/t/aide/display_inetconf.html:6 #: ../../static/t/aide/display_menu.html:6 msgid "Room Admin Menu" msgstr "" #: ../../static/t/aide/display_inetconf.html:13 msgid "Local host aliases" msgstr "" #: ../../static/t/aide/display_inetconf.html:14 msgid "Directory domains" msgstr "" #: ../../static/t/aide/display_inetconf.html:15 msgid "Smart hosts" msgstr "" #: ../../static/t/aide/display_inetconf.html:16 msgid "Fallback smart hosts" msgstr "" #: ../../static/t/aide/display_inetconf.html:17 msgid "Notification hosts" msgstr "" #: ../../static/t/aide/display_inetconf.html:22 msgid "RBL hosts" msgstr "" #: ../../static/t/aide/display_inetconf.html:23 msgid "SpamAssassin hosts" msgstr "" #: ../../static/t/aide/display_inetconf.html:24 msgid "ClamAV clamd hosts" msgstr "" #: ../../static/t/aide/display_inetconf.html:25 msgid "Masqueradable domains" msgstr "" #: ../../static/t/aide/edituser/select.html:5 msgid "Edit or delete users" msgstr "" #: ../../static/t/aide/edituser/select.html:17 msgid "Add users" msgstr "" #: ../../static/t/aide/edituser/select.html:20 msgid "Edit or Delete users" msgstr "" #: ../../static/t/aide/edituser/box_select.html:1 msgid "" "To edit an existing user account, select the user name from the list and " "click 'Edit'." msgstr "" #: ../../static/t/aide/edituser/detailview.html:4 msgid "Edit user account: " msgstr "" #: ../../static/t/aide/edituser/detailview.html:24 #: ../../static/t/room/edit/tab_feed.html:14 msgid "Password" msgstr "" #: ../../static/t/aide/edituser/detailview.html:28 msgid "Permission to send Internet mail" msgstr "" #: ../../static/t/aide/edituser/detailview.html:32 msgid "Number of logins" msgstr "" #: ../../static/t/aide/edituser/detailview.html:36 msgid "Messages submitted" msgstr "" #: ../../static/t/aide/edituser/detailview.html:40 msgid "Access level" msgstr "" #: ../../static/t/aide/edituser/detailview.html:54 msgid "User ID number" msgstr "" #: ../../static/t/aide/edituser/detailview.html:58 msgid "Date and time of last login" msgstr "" #: ../../static/t/aide/edituser/detailview.html:68 msgid "Auto-purge after this many days" msgstr "" #: ../../static/t/aide/edituser/add.html:1 msgid "" "To create a new user account, enter the desired user name in the box below " "and click 'Create'." msgstr "" #: ../../static/t/aide/edituser/add.html:5 #, fuzzy msgid "New user: " msgstr "Ny Användare" #: ../../static/t/aide/display_generic_cmd.html:4 msgid "Enter a server command" msgstr "" #: ../../static/t/aide/display_generic_cmd.html:12 msgid "" "This screen allows you to enter Citadel server commands which are not " "supported by WebCit. If you do not know what that means, then this screen " "will not be of much use to you." msgstr "" #: ../../static/t/aide/display_generic_cmd.html:15 msgid "Enter command:" msgstr "" #: ../../static/t/aide/display_generic_cmd.html:17 msgid "Command input (if requesting SEND_LISTING transfer mode):" msgstr "" #: ../../static/t/aide/display_generic_cmd.html:20 msgid "Detected host header is " msgstr "" #: ../../static/t/aide/display_ignetconf.html:4 msgid "Network configuration" msgstr "" #: ../../static/t/aide/display_ignetconf.html:10 #: ../../static/t/aide/ignetconf/edit_node.html:5 #: ../../static/t/aide/ignetconf/add.html:5 msgid "Add a new node" msgstr "" #: ../../static/t/aide/display_ignetconf.html:14 msgid "Currently configured nodes" msgstr "" #: ../../static/t/aide/display_serverrestart.html:26 msgid "Restart Citadel" msgstr "" #: ../../static/t/aide/floorconfig.html:2 msgid "Add, change, or delete floors" msgstr "" #: ../../static/t/aide/serverrestart/box.html:3 msgid "Please wait while the Citadel server is restarted... " msgstr "" #: ../../static/t/aide/serverrestart/box_page_do.html:3 msgid "" "Please wait while your users are being paged, the citadel server will be " "restarted after that... " msgstr "" #: ../../static/t/aide/inet/masqdomains.html:2 msgid "(Domains as which users are allowed to masquerade)" msgstr "" #: ../../static/t/aide/inet/rbldns.html:2 msgid "(hosts running a Realtime Blackhole List)" msgstr "" #: ../../static/t/aide/inet/dirnames.html:2 msgid "(domains mapped with the Global Address Book)" msgstr "" #: ../../static/t/aide/inet/notify.html:2 msgid "(URLS for notifications when users receive new mails; )" msgstr "" #: ../../static/t/aide/inet/notify.html:2 msgid "Syntax: Notificationtemplatename:http[s]://user:password@hostname/path" msgstr "" #: ../../static/t/aide/inet/smarthosts.html:2 msgid "(if present, forward all outbound mail to one of these hosts)" msgstr "" #: ../../static/t/aide/inet/aliases.html:2 msgid "(domains for which this host receives mail)" msgstr "" #: ../../static/t/aide/inet/clamav.html:2 msgid "(hosts running the ClamAV clamd service)" msgstr "" #: ../../static/t/aide/inet/spamass.html:2 msgid "(hosts running the SpamAssassin service)" msgstr "" #: ../../static/t/aide/inet/fallbackhosts.html:2 msgid "(send outbound mail to these hosts only when direct delivery fails)" msgstr "" #: ../../static/t/aide/ignetconf/display_confirm_delete.html:5 msgid "Confirm delete" msgstr "" #: ../../static/t/aide/ignetconf/display_confirm_delete.html:11 msgid "Are you sure you want to delete " msgstr "" #: ../../static/t/aide/ignetconf/display_confirm_delete.html:14 #: ../../static/t/prefs/box.html:198 ../../static/t/iconbar/edit.html:19 #: ../../static/t/iconbar/edit.html:26 ../../static/t/iconbar/edit.html:32 #: ../../static/t/iconbar/edit.html:39 ../../static/t/iconbar/edit.html:45 #: ../../static/t/iconbar/edit.html:52 ../../static/t/iconbar/edit.html:58 #: ../../static/t/iconbar/edit.html:64 ../../static/t/iconbar/edit.html:70 #: ../../static/t/iconbar/edit.html:76 ../../static/t/iconbar/edit.html:82 #: ../../static/t/iconbar/edit.html:88 msgid "Yes" msgstr "" #: ../../static/t/aide/ignetconf/display_confirm_delete.html:16 #: ../../static/t/prefs/box.html:200 ../../static/t/iconbar/edit.html:20 #: ../../static/t/iconbar/edit.html:27 ../../static/t/iconbar/edit.html:33 #: ../../static/t/iconbar/edit.html:40 ../../static/t/iconbar/edit.html:46 #: ../../static/t/iconbar/edit.html:53 ../../static/t/iconbar/edit.html:59 #: ../../static/t/iconbar/edit.html:65 ../../static/t/iconbar/edit.html:71 #: ../../static/t/iconbar/edit.html:77 ../../static/t/iconbar/edit.html:83 #: ../../static/t/iconbar/edit.html:89 msgid "No" msgstr "" #: ../../static/t/aide/ignetconf/edit_node.html:15 #: ../../static/t/aide/ignetconf/add.html:15 #: ../../static/t/aide/siteconfig/tab_general.html:8 msgid "Node name" msgstr "" #: ../../static/t/aide/ignetconf/edit_node.html:17 #: ../../static/t/aide/ignetconf/add.html:17 msgid "Shared secret" msgstr "" #: ../../static/t/aide/ignetconf/edit_node.html:19 #: ../../static/t/aide/ignetconf/add.html:19 msgid "Host or IP address" msgstr "" #: ../../static/t/aide/ignetconf/edit_node.html:21 #: ../../static/t/aide/ignetconf/add.html:21 msgid "Port number" msgstr "" #: ../../static/t/aide/ignetconf/section.html:4 msgid "(Edit)" msgstr "" #: ../../static/t/aide/display_menu.html:12 msgid "Global Configuration" msgstr "" #: ../../static/t/aide/display_menu.html:14 msgid "User account management" msgstr "" #: ../../static/t/aide/display_menu.html:16 msgid "Shutdown Citadel" msgstr "" #: ../../static/t/aide/display_menu.html:18 msgid "Rooms and Floors" msgstr "" #: ../../static/t/aide/global_config.html:2 msgid "Edit site-wide configuration" msgstr "" #: ../../static/t/aide/global_config.html:3 msgid "Domain names and Internet mail configuration" msgstr "" #: ../../static/t/aide/global_config.html:4 msgid "Configure replication with other Citadel servers" msgstr "" #: ../../static/t/aide/global_config.html:5 #: ../../static/t/view_mailq/header.html:3 msgid "View the outbound SMTP queue" msgstr "" #: ../../static/t/aide/restart.html:2 msgid "Restart Now" msgstr "" #: ../../static/t/aide/restart.html:3 msgid "Restart after paging users" msgstr "" #: ../../static/t/aide/restart.html:4 msgid "Restart when all users are idle" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:1 msgid "General site configuration items" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:5 msgid "Change Login Logo" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:6 msgid "Change Logout Logo" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:11 msgid "Fully qualified domain name" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:14 msgid "Human-readable node name" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:17 msgid "Telephone number" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:20 msgid "Paginator prompt (for text mode clients)" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:23 msgid "Geographic location of this system" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:26 msgid "Name of system administrator" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:29 msgid "Default timezone for unzoned calendar items" msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:1 msgid "Configure automatic expiry of old messages" msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:2 msgid "These settings may be overridden on a per-floor or per-room basis." msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:6 msgid "Hour to run database auto-purge" msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:66 msgid "Default message expire policy for public rooms" msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:68 #: ../../static/t/aide/siteconfig/tab_autopurger.html:86 #: ../../static/t/room/edit/tab_expire.html:17 #: ../../static/t/room/edit/tab_expire.html:45 msgid "Never automatically expire messages" msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:71 #: ../../static/t/aide/siteconfig/tab_autopurger.html:89 #: ../../static/t/room/edit/tab_expire.html:20 #: ../../static/t/room/edit/tab_expire.html:48 msgid "Expire by message count" msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:73 #: ../../static/t/aide/siteconfig/tab_autopurger.html:92 #: ../../static/t/room/edit/tab_expire.html:23 #: ../../static/t/room/edit/tab_expire.html:51 msgid "Expire by message age" msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:75 #: ../../static/t/aide/siteconfig/tab_autopurger.html:94 #: ../../static/t/room/edit/tab_expire.html:25 #: ../../static/t/room/edit/tab_expire.html:53 msgid "Number of messages or days: " msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:81 msgid "Default message expire policy for private mailboxes" msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:83 msgid "Same policy as public rooms" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:1 #, fuzzy msgid "Network services" msgstr "Nätverks Användare" #: ../../static/t/aide/siteconfig/tab_network.html:2 #: ../../static/t/aide/siteconfig/tab_directory.html:3 msgid "" "Changes made on this screen will not take effect until you restart the " "Citadel server." msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:6 msgid "SMTP MTA port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:9 msgid "Correct forged From: lines during authenticated SMTP" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:12 msgid "Flag message as spam, instead of rejecting it" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:15 msgid "IMAP listener port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:19 msgid "Network run frequency (in seconds)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:22 msgid "Server IP address (0.0.0.0 for 'any')" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:25 msgid "SMTP MSA port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:28 msgid "IMAP over SSL port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:31 msgid "SMTP over SSL port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:34 msgid "Instantly expunge deleted messages in IMAP" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:38 msgid "Allow unauthenticated SMTP clients to spoof this sites domains" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:41 msgid "Postfix TCP Dictionary Port" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:41 msgid "-1 to disable" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:44 msgid "ManageSieve Port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:47 msgid "Perform RBL checks upon connect instead of after RCPT" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:50 msgid "Keep original from headers in IMAP" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:53 msgid "XMPP (Jabber) client to server port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:56 msgid "XMPP (Jabber) server to server port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_pop3.html:1 msgid "POP3" msgstr "" #: ../../static/t/aide/siteconfig/tab_pop3.html:6 msgid "POP3 listener port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_pop3.html:9 msgid "POP3 over SSL port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_pop3.html:12 msgid "POP3 fetch frequency in seconds" msgstr "" #: ../../static/t/aide/siteconfig/tab_pop3.html:15 msgid "POP3 fastest fetch frequency in seconds" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:1 msgid "Advanced server fine-tuning controls" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:5 msgid "Server connection idle timeout (in seconds)" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:8 msgid "Maximum concurrent sessions (0 = no limit)" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:11 msgid "Default user purge time (days)" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:14 msgid "Default room purge time (days)" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:17 msgid "Maximum message length" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:20 msgid "Minimum number of worker threads" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:23 msgid "Maximum number of worker threads" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:26 msgid "Automatically delete committed database logs" msgstr "" #: ../../static/t/aide/siteconfig/tab_pushmail.html:5 msgid "Funambol server host (blank to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_pushmail.html:8 msgid "Funambol server port " msgstr "" #: ../../static/t/aide/siteconfig/tab_pushmail.html:11 msgid "Funambol sync source" msgstr "" #: ../../static/t/aide/siteconfig/tab_pushmail.html:14 msgid "Funambol auth details (user:pass)" msgstr "" #: ../../static/t/aide/siteconfig/tab_pushmail.html:17 msgid "External pager tool (blank to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:1 msgid "Access controls and site policy settings" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:5 msgid "Allow aides to zap (forget) rooms" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:9 msgid "Quarantine messages from problem users" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:12 msgid "Name of quarantine room" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:17 msgid "Name of room to log pages" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:22 msgid "Authentication mode" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:24 msgid "Self contained" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:25 msgid "Host based" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:26 msgid "LDAP (RFC2307)" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:27 msgid "LDAP (Active Directory)" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:30 msgid "Master user name (blank to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:33 msgid "Master user password" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:38 msgid "Initial access level for new users" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:49 msgid "Access level required to create rooms" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:60 msgid "Automatically grant room-aide status to users who create private rooms" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:63 msgid "Automatically grant room-aide status to users who create BLOG rooms" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:66 msgid "Restrict access to Internet mail" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:71 msgid "Disable self-service user account creation" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:71 msgid "Hint: do not select both!" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:74 msgid "Require registration for new users" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:77 msgid "Allow anonymous guest access" msgstr "" #: ../../static/t/aide/siteconfig/tab_indexing.html:1 msgid "Indexing and Journaling" msgstr "" #: ../../static/t/aide/siteconfig/tab_indexing.html:2 msgid "Warning: these facilities are resource intensive." msgstr "" #: ../../static/t/aide/siteconfig/tab_indexing.html:6 msgid "Enable full text index" msgstr "" #: ../../static/t/aide/siteconfig/tab_indexing.html:9 msgid "Perform journaling of email messages" msgstr "" #: ../../static/t/aide/siteconfig/tab_indexing.html:13 msgid "Perform journaling of non-email messages" msgstr "" #: ../../static/t/aide/siteconfig/tab_indexing.html:16 msgid "Email destination of journalized messages" msgstr "" #: ../../static/t/aide/siteconfig/tab_directory.html:1 msgid "Configure the LDAP connector for Citadel" msgstr "" #: ../../static/t/aide/siteconfig/tab_directory.html:4 msgid "" "NOTE: This Citadel server has been built without LDAP support. These " "options will have no effect." msgstr "" #: ../../static/t/aide/siteconfig/tab_directory.html:9 msgid "Host name of LDAP server (blank to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_directory.html:13 msgid "Port number of LDAP server (blank to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_directory.html:16 msgid "Base DN" msgstr "" #: ../../static/t/aide/siteconfig/tab_directory.html:19 msgid "Bind DN" msgstr "" #: ../../static/t/aide/siteconfig/tab_directory.html:22 msgid "Password for bind DN" msgstr "" #: ../../static/t/iconbar.html:7 msgid "Language:" msgstr "" #: ../../static/t/iconbar.html:19 msgid "Mail" msgstr "" #: ../../static/t/iconbar.html:39 ../../static/t/iconbar/edit.html:61 #: ../../static/t/summary/page.html:30 msgid "Tasks" msgstr "" #: ../../static/t/iconbar.html:48 ../../static/t/iconbar/edit.html:67 msgid "Rooms" msgstr "" #: ../../static/t/iconbar.html:57 msgid "Online users" msgstr "" #: ../../static/t/iconbar.html:62 ../../static/t/iconbar/edit.html:79 msgid "Chat" msgstr "" #: ../../static/t/iconbar.html:65 msgid "Advanced" msgstr "" #: ../../static/t/iconbar.html:72 ../../static/t/room/edit/editroom.html:4 #: ../../static/t/room/edit.html:5 msgid "Administration" msgstr "" #: ../../static/t/iconbar.html:83 msgid "customize this menu" msgstr "" #: ../../static/t/iconbar.html:92 msgid "switch to room list" msgstr "" #: ../../static/t/iconbar.html:93 msgid "switch to menu" msgstr "" #: ../../static/t/iconbar.html:94 msgid "My folders" msgstr "" #: ../../static/t/view_message/list_attach.html:3 #: ../../static/t/view_message/inline_attach.html:4 msgid "View" msgstr "" #: ../../static/t/view_message/list_attach.html:4 #: ../../static/t/view_message/inline_attach.html:5 msgid "Download" msgstr "" #: ../../static/t/view_message/print.html:14 #: ../../static/t/view_message.html:14 msgid "to" msgstr "" #: ../../static/t/openid_manual_create.html:2 msgid "Your OpenID" msgstr "" #: ../../static/t/openid_manual_create.html:2 msgid "was successfully verified." msgstr "" #: ../../static/t/openid_manual_create.html:3 msgid "However, the user name" msgstr "" #: ../../static/t/openid_manual_create.html:3 msgid "conflicts with an existing user." msgstr "" #: ../../static/t/openid_manual_create.html:5 msgid "Please specify the user name you would like to use." msgstr "" #: ../../static/t/files/graphicsupload.html:2 msgid "Image upload" msgstr "" #: ../../static/t/files/graphicsupload.html:6 msgid "You can upload an image directly from your computer" msgstr "" #: ../../static/t/files/graphicsupload.html:8 msgid "Please select a file to upload:" msgstr "" #: ../../static/t/files/section_onefile.html:20 msgid "Slideshow" msgstr "" #: ../../static/t/roombanner.html:10 ../../static/t/roombanner.html:11 msgid "new of" msgstr "" #: ../../static/t/roombanner.html:10 ../../static/t/roombanner.html:11 #: ../../static/t/msg_listselector_bottom.html:7 #: ../../static/t/msg_listselector_top.html:7 msgid "messages" msgstr "" #: ../../static/t/roombanner.html:28 msgid "Select page: " msgstr "" #: ../../static/t/who.html:13 msgid "Users currently on " msgstr "" #: ../../static/t/who.html:22 msgid "Click on a name to read user info. Click on" msgstr "" #: ../../static/t/who.html:24 msgid "to send an instant message to that user." msgstr "" #: ../../static/t/msg_listselector_bottom.html:2 #: ../../static/t/msg_listselector_top.html:2 msgid "Reading #" msgstr "" #: ../../static/t/msg_listselector_bottom.html:12 #: ../../static/t/msg_listselector_top.html:12 msgid "oldest to newest" msgstr "" #: ../../static/t/msg_listselector_bottom.html:20 #: ../../static/t/msg_listselector_top.html:20 msgid "newest to oldest" msgstr "" #: ../../static/t/newstartpage.html:4 msgid "New start page" msgstr "" #: ../../static/t/newstartpage.html:9 msgid "Your start page has been changed." msgstr "" #: ../../static/t/newstartpage.html:12 msgid "" "(Note: this does not change your browser's home page. It changes the page " "you begin on when you log on to" msgstr "" #: ../../static/t/no_new_msgs.html:3 msgid "No new messages." msgstr "" #: ../../static/t/view_blog/comment_box.html:8 msgid "Post a comment" msgstr "Skriv en kommentar" #: ../../static/t/prefs/pushemail.html:2 msgid "Configure Push Email" msgstr "" #: ../../static/t/prefs/pushemail.html:9 msgid "Push email and SMS settings" msgstr "" #: ../../static/t/prefs/pushemail.html:17 msgid "" "If your administrator has enabled the functionality, Citadel can notify a " "Funambol server that you haved recieved new email and automatically " "syncronize any devices you have with the Funambol client installed." msgstr "" #: ../../static/t/prefs/pushemail.html:20 msgid "" "Alternatively, if the administrator has configured it, Citadel can send a " "text message to you when new mail arrives." msgstr "" #: ../../static/t/prefs/pushemail.html:26 msgid "Notify Funambol server" msgstr "" #: ../../static/t/prefs/pushemail.html:31 msgid "Send a text message to..." msgstr "" #: ../../static/t/prefs/pushemail.html:33 msgid "" "(Use international format, without any leading zeros, spaces or hypens, like " "+61415011501)" msgstr "" #: ../../static/t/prefs/pushemail.html:38 msgid "Use custom notification scheme configured by your Admin" msgstr "" #: ../../static/t/prefs/pushemail.html:43 msgid "Don‘t send any notifications" msgstr "" #: ../../static/t/prefs/box.html:9 msgid "Tree (folders) view" msgstr "" #: ../../static/t/prefs/box.html:11 msgid "Table (rooms) view" msgstr "" #: ../../static/t/prefs/box.html:20 msgid "12 hour (am/pm)" msgstr "" #: ../../static/t/prefs/box.html:25 msgid "24 hour" msgstr "" #: ../../static/t/prefs/box.html:152 msgid "Sunday" msgstr "" #: ../../static/t/prefs/box.html:153 msgid "Monday" msgstr "" #: ../../static/t/prefs/box.html:174 msgid "No signature" msgstr "" #: ../../static/t/prefs/box.html:238 msgid "Full-functionality" msgstr "" #: ../../static/t/prefs/box.html:241 msgid "Safe mode" msgstr "" #: ../../static/t/prefs/box.html:242 msgid "" "Safe mode is less intensive on your web browser, but not as fully featured." msgstr "" #: ../../static/t/wiki/pagelist.html:1 msgid "List of Wiki pages" msgstr "" #: ../../static/t/wiki/history.html:1 msgid "History of edits for this page" msgstr "" #: ../../static/t/who/list_static_header.html:1 msgid "Users currently on" msgstr "" #: ../../static/t/who/section.html:4 msgid "(kill)" msgstr "" #: ../../static/t/who/bio.html:4 ../../static/t/user/show.html:4 msgid "User profile" msgstr "" #: ../../static/t/who/summary.html:5 ../../static/t/who/box_list_static.html:6 #: ../../static/t/room/edit/tab_feed.html:13 msgid "User name" msgstr "" #: ../../static/t/who/summary.html:6 ../../static/t/who/box_list_static.html:7 msgid "Room" msgstr "" #: ../../static/t/who/box_list_static.html:8 msgid "From host" msgstr "" #: ../../static/t/view_message.html:19 msgid "Edit" msgstr "" #: ../../static/t/view_message.html:22 ../../static/t/view_message.html:26 msgid "Reply" msgstr "" #: ../../static/t/view_message.html:23 msgid "ReplyQuoted" msgstr "" #: ../../static/t/view_message.html:27 msgid "ReplyAll" msgstr "" #: ../../static/t/view_message.html:28 msgid "Forward" msgstr "" #: ../../static/t/view_message.html:31 ../../static/t/msg_listview.html:25 msgid "Move" msgstr "" #: ../../static/t/view_message.html:34 msgid "Headers" msgstr "" #: ../../static/t/view_message.html:35 ../../static/t/msg_listview.html:28 msgid "Print" msgstr "" #: ../../static/t/preferences.html:4 ../../static/t/preferences.html:7 msgid "Preferences and settings" msgstr "" #: ../../static/t/user/list.html:3 msgid "User list for " msgstr "" #: ../../static/t/user/list.html:9 msgid "User Name" msgstr "" #: ../../static/t/user/list.html:10 msgid "Number" msgstr "" #: ../../static/t/user/list.html:11 msgid "Access Level" msgstr "" #: ../../static/t/user/list.html:12 msgid "Last Login" msgstr "" #: ../../static/t/user/list.html:13 msgid "Total Logins" msgstr "" #: ../../static/t/user/list.html:14 msgid "Total Posts" msgstr "" #: ../../static/t/user/show.html:9 msgid "Click here to send an instant message to" msgstr "" #: ../../static/t/start_of_new_msgs.html:4 msgid "Old messages" msgstr "" #: ../../static/t/start_of_new_msgs.html:8 msgid "New messages" msgstr "" #: ../../static/t/display_main_menu.html:7 msgid "Basic commands" msgstr "" #: ../../static/t/display_main_menu.html:10 msgid "Your info" msgstr "" #: ../../static/t/display_main_menu.html:12 msgid "Advanced room commands" msgstr "" #: ../../static/t/iconbar/save.html:4 ../../static/t/iconbar/edit.html:4 msgid "Customize the icon bar" msgstr "" #: ../../static/t/iconbar/save.html:11 msgid "" "Your icon bar has been updated. Please select any of its choices to continue." msgstr "" #: ../../static/t/iconbar/save.html:11 msgid "" "You may need to force refresh (SHIFT-F5)> in order for changes to take effect" msgstr "" #: ../../static/t/iconbar/edit.html:11 msgid "Display icons as:" msgstr "" #: ../../static/t/iconbar/edit.html:12 msgid "pictures and text" msgstr "" #: ../../static/t/iconbar/edit.html:13 msgid "pictures only" msgstr "" #: ../../static/t/iconbar/edit.html:14 msgid "text only" msgstr "" #: ../../static/t/iconbar/edit.html:16 msgid "" "Select the icons you would like to see displayed in the 'icon bar' menu on " "the left side of the screen." msgstr "" #: ../../static/t/iconbar/edit.html:23 msgid "Site logo" msgstr "" #: ../../static/t/iconbar/edit.html:23 msgid "An icon describing this site" msgstr "" #: ../../static/t/iconbar/edit.html:29 msgid "Your summary page" msgstr "" #: ../../static/t/iconbar/edit.html:36 msgid "Mail (inbox)" msgstr "" #: ../../static/t/iconbar/edit.html:36 msgid "A shortcut to your email Inbox" msgstr "" #: ../../static/t/iconbar/edit.html:42 msgid "Your personal address book" msgstr "" #: ../../static/t/iconbar/edit.html:49 msgid "Your personal notes" msgstr "" #: ../../static/t/iconbar/edit.html:55 msgid "A shortcut to your personal calendar" msgstr "" #: ../../static/t/iconbar/edit.html:61 msgid "A shortcut to your personal task list" msgstr "" #: ../../static/t/iconbar/edit.html:67 msgid "" "Clicking this icon displays a list of all accessible rooms (or folders) " "available." msgstr "" #: ../../static/t/iconbar/edit.html:73 msgid "Who is online?" msgstr "" #: ../../static/t/iconbar/edit.html:73 msgid "Clicking this icon displays a list of all users currently logged in." msgstr "" #: ../../static/t/iconbar/edit.html:79 msgid "" "Clicking this icon enters real-time chat mode with other users in the same " "room." msgstr "" #: ../../static/t/iconbar/edit.html:85 msgid "Advanced options" msgstr "" #: ../../static/t/iconbar/edit.html:85 msgid "Access to the complete menu of Citadel functions." msgstr "" #: ../../static/t/iconbar/edit.html:91 msgid "Citadel logo" msgstr "" #: ../../static/t/iconbar/edit.html:91 msgid "Displays the 'Powered by Citadel' icon" msgstr "" #: ../../static/t/room/edit/tab_expire.html:8 msgid "Message expire policy for this room" msgstr "" #: ../../static/t/room/edit/tab_expire.html:14 msgid "Use the default policy for this floor" msgstr "" #: ../../static/t/room/edit/tab_expire.html:36 msgid "Message expire policy for this floor" msgstr "" #: ../../static/t/room/edit/tab_expire.html:42 msgid "Use the system default" msgstr "" #: ../../static/t/room/edit/editroom.html:5 ../../static/t/room/edit.html:6 msgid "Configuration" msgstr "" #: ../../static/t/room/edit/editroom.html:6 ../../static/t/room/edit.html:7 msgid "Message expire policy" msgstr "" #: ../../static/t/room/edit/editroom.html:7 ../../static/t/room/edit.html:8 msgid "Access controls" msgstr "" #: ../../static/t/room/edit/editroom.html:8 ../../static/t/room/edit.html:9 msgid "Sharing" msgstr "" #: ../../static/t/room/edit/editroom.html:9 ../../static/t/room/edit.html:10 msgid "Mailing list service" msgstr "" #: ../../static/t/room/edit/editroom.html:10 ../../static/t/room/edit.html:11 msgid "Remote retrieval" msgstr "" #: ../../static/t/room/edit/tab_config.html:6 msgid "name of room: " msgstr "" #: ../../static/t/room/edit/tab_config.html:10 #: ../../static/t/room/create.html:20 msgid "Resides on floor: " msgstr "" #: ../../static/t/room/edit/tab_config.html:16 #: ../../static/t/room/create.html:68 msgid "Type of room:" msgstr "" #: ../../static/t/room/edit/tab_config.html:22 #: ../../static/t/room/create.html:73 msgid "Public (automatically appears to everyone)" msgstr "" #: ../../static/t/room/edit/tab_config.html:28 #: ../../static/t/room/create.html:77 msgid "Private - hidden (accessible to anyone who knows its name)" msgstr "" #: ../../static/t/room/edit/tab_config.html:35 #: ../../static/t/room/create.html:81 msgid "Private - require password: " msgstr "" #: ../../static/t/room/edit/tab_config.html:44 #: ../../static/t/room/create.html:86 msgid "Private - invitation only" msgstr "" #: ../../static/t/room/edit/tab_config.html:51 #: ../../static/t/room/create.html:90 msgid "Personal (mailbox for you only)" msgstr "" #: ../../static/t/room/edit/tab_config.html:55 msgid "If private, cause current users to forget room" msgstr "" #: ../../static/t/room/edit/tab_config.html:61 msgid "Preferred users only" msgstr "" #: ../../static/t/room/edit/tab_config.html:66 msgid "Read-only room" msgstr "" #: ../../static/t/room/edit/tab_config.html:71 msgid "All users allowed to post may also delete messages" msgstr "" #: ../../static/t/room/edit/tab_config.html:76 msgid "File directory room" msgstr "" #: ../../static/t/room/edit/tab_config.html:80 msgid "Directory name: " msgstr "" #: ../../static/t/room/edit/tab_config.html:86 msgid "Uploading allowed" msgstr "" #: ../../static/t/room/edit/tab_config.html:91 msgid "Downloading allowed" msgstr "" #: ../../static/t/room/edit/tab_config.html:96 msgid "Visible directory" msgstr "" #: ../../static/t/room/edit/tab_config.html:103 #, fuzzy msgid "Network shared room" msgstr "Nätverks Användare" #: ../../static/t/room/edit/tab_config.html:108 msgid "Permanent (does not auto-purge)" msgstr "" #: ../../static/t/room/edit/tab_config.html:113 msgid "Subject Required (Force users to specify a message subject)" msgstr "" #: ../../static/t/room/edit/tab_config.html:116 msgid "Anonymous messages" msgstr "" #: ../../static/t/room/edit/tab_config.html:122 msgid "No anonymous messages" msgstr "" #: ../../static/t/room/edit/tab_config.html:127 msgid "All messages are anonymous" msgstr "" #: ../../static/t/room/edit/tab_config.html:132 msgid "Prompt user when entering messages" msgstr "" #: ../../static/t/room/edit/tab_config.html:136 msgid "Room aide: " msgstr "" #: ../../static/t/room/edit/tab_listserv.html:5 msgid "" "The contents of this room are being mailed as individual messages " "to the following list recipients:

    " msgstr "" #: ../../static/t/room/edit/tab_listserv.html:19 msgid "" "The contents of this room are being mailed in digest form to the " "following list recipients:

    " msgstr "" #: ../../static/t/room/edit/tab_listserv.html:39 msgid "Add recipients from Contacts or other address books" msgstr "" #: ../../static/t/room/edit/tab_listserv.html:48 msgid "Allow non-subscribers to mail to this room." msgstr "" #: ../../static/t/room/edit/tab_listserv.html:54 msgid "Room post publication needs Admin permission." msgstr "" #: ../../static/t/room/edit/tab_listserv.html:59 msgid "Allow self-service subscribe/unsubscribe requests." msgstr "" #: ../../static/t/room/edit/tab_listserv.html:65 msgid "The URL for subscribe/unsubscribe is: " msgstr "" #: ../../static/t/room/edit/digestrecp_removal.html:1 #: ../../static/t/room/edit/pop3client_removal.html:9 #: ../../static/t/room/edit/listrecp_removal.html:1 #: ../../static/t/room/edit/rssclient_removal.html:5 msgid "(remove)" msgstr "" #: ../../static/t/room/edit/tab_admin.html:5 msgid "Delete this room" msgstr "" #: ../../static/t/room/edit/tab_admin.html:10 msgid "Set or change the icon for this rooms banner" msgstr "" #: ../../static/t/room/edit/tab_admin.html:14 msgid "Edit this rooms Info file" msgstr "" #: ../../static/t/room/edit/tab_share.html:5 msgid "Shared with" msgstr "" #: ../../static/t/room/edit/tab_share.html:6 msgid "Not shared with" msgstr "" #: ../../static/t/room/edit/tab_share.html:11 #: ../../static/t/room/edit/tab_share.html:21 msgid "Remote node name" msgstr "" #: ../../static/t/room/edit/tab_share.html:12 #: ../../static/t/room/edit/tab_share.html:22 msgid "Remote room name" msgstr "" #: ../../static/t/room/edit/tab_share.html:13 #: ../../static/t/room/edit/tab_share.html:23 msgid "Actions" msgstr "" #: ../../static/t/room/edit/tab_share.html:35 msgid "" "When sharing a room, it must be shared from both ends. Adding a node to the " "'shared' list sends messages out, but in order to receive messages, the " "other nodes must be configured to send messages out to your system as well. " "
  • If the remote room name is blank, it is assumed that the room name is " "identical on the remote node.
  • If the remote room name is different, the " "remote node must also configure the name of the room here." msgstr "" #: ../../static/t/room/edit/tab_feed.html:2 msgid "" "Retrieve messages from these remote POP3 accounts and store them in this " "room:" msgstr "" #: ../../static/t/room/edit/tab_feed.html:12 msgid "Remote host" msgstr "" #: ../../static/t/room/edit/tab_feed.html:15 msgid "Keep messages on server?" msgstr "" #: ../../static/t/room/edit/tab_feed.html:16 msgid "Interval" msgstr "" #: ../../static/t/room/edit/tab_feed.html:31 msgid "Fetch the following RSS feeds and store them in this room:" msgstr "" #: ../../static/t/room/edit/tab_feed.html:43 msgid "Feed URL" msgstr "" #: ../../static/t/room/edit/tab_access.html:5 msgid "" "The users listed below have access to this room. To remove a user from the " "access list, select the user name from the list and click 'Kick'." msgstr "" #: ../../static/t/room/edit/tab_access.html:20 msgid "" "To grant another user access to this room, enter the user name in the box " "below and click 'Invite'." msgstr "" #: ../../static/t/room/edit/tab_access.html:26 msgid "Invite:" msgstr "" #: ../../static/t/room/edit/tab_access.html:35 #, fuzzy msgid "Users" msgstr "Ny Användare" #: ../../static/t/room/zapped_list.html:7 msgid "Zapped (forgotten) rooms" msgstr "" #: ../../static/t/room/zapped_list.html:10 msgid "Click on any room to un-zap it and goto that room." msgstr "" #: ../../static/t/room/display_private.html:7 msgid "Go to a hidden room" msgstr "" #: ../../static/t/room/display_private.html:8 msgid "" "If you know the name of a hidden (guess-name) or passworded room, you can " "enter that room by typing its name below. Once you gain access to a private " "room, it will appear in your regular room listings so you don‘t have to keep " "returning here." msgstr "" #: ../../static/t/room/display_private.html:14 msgid "Enter room name:" msgstr "" #: ../../static/t/room/display_private.html:21 msgid "Enter room password:" msgstr "" #: ../../static/t/room/create.html:11 #: ../../static/t/menu/advanced_roomcommands.html:6 msgid "Create a new room" msgstr "" #: ../../static/t/room/create.html:18 msgid "Name of room: " msgstr "" #: ../../static/t/room/create.html:32 msgid "Default view for room: " msgstr "" #: ../../static/t/room/zap_this.html:3 msgid "Zap (forget/unsubscribe) the current room" msgstr "" #: ../../static/t/room/zap_this.html:6 msgid "If you select this option," msgstr "" #: ../../static/t/room/zap_this.html:8 msgid "will disappear from your room list. Is this what you wish to do?" msgstr "" #: ../../static/t/menu/your_info.html:2 msgid "Change your preferences and settings" msgstr "" #: ../../static/t/menu/your_info.html:3 msgid "Update your contact information" msgstr "" #: ../../static/t/menu/your_info.html:5 msgid "Enter your 'bio'" msgstr "" #: ../../static/t/menu/your_info.html:6 msgid "Edit your online photo" msgstr "" #: ../../static/t/menu/your_info.html:8 msgid "Edit your push email settings" msgstr "" #: ../../static/t/menu/your_info.html:9 msgid "Manage your OpenIDs" msgstr "" #: ../../static/t/menu/basic_commands.html:3 msgid "List known rooms" msgstr "" #: ../../static/t/menu/basic_commands.html:3 msgid "Where can I go from here?" msgstr "" #: ../../static/t/menu/basic_commands.html:4 ../../static/t/navbar.html:168 msgid "Goto next room" msgstr "" #: ../../static/t/menu/basic_commands.html:4 msgid "...with unread messages" msgstr "" #: ../../static/t/menu/basic_commands.html:5 msgid "Skip to next room" msgstr "" #: ../../static/t/menu/basic_commands.html:5 msgid "(come back here later)" msgstr "" #: ../../static/t/menu/basic_commands.html:6 ../../static/t/navbar.html:5 msgid "Ungoto" msgstr "" #: ../../static/t/menu/basic_commands.html:6 msgid "oops! Back to " msgstr "" #: ../../static/t/menu/basic_commands.html:10 ../../static/t/navbar.html:13 msgid "Read new messages" msgstr "" #: ../../static/t/menu/basic_commands.html:10 msgid "...in this room" msgstr "" #: ../../static/t/menu/basic_commands.html:11 ../../static/t/navbar.html:19 msgid "Read all messages" msgstr "" #: ../../static/t/menu/basic_commands.html:11 msgid "...old and new" msgstr "" #: ../../static/t/menu/basic_commands.html:12 ../../static/t/navbar.html:25 msgid "Enter a message" msgstr "" #: ../../static/t/menu/basic_commands.html:12 msgid "(post in this room)" msgstr "" #: ../../static/t/menu/basic_commands.html:13 msgid "File library" msgstr "" #: ../../static/t/menu/basic_commands.html:13 msgid "(List files available for download)" msgstr "" #: ../../static/t/menu/basic_commands.html:17 msgid "Summary page" msgstr "" #: ../../static/t/menu/basic_commands.html:17 msgid "Summary of my account" msgstr "" #: ../../static/t/menu/basic_commands.html:18 msgid "User list" msgstr "" #: ../../static/t/menu/basic_commands.html:18 msgid "(all registered users)" msgstr "" #: ../../static/t/menu/basic_commands.html:19 msgid "Bye!" msgstr "" #: ../../static/t/menu/advanced_roomcommands.html:3 msgid "Edit or delete this room" msgstr "" #: ../../static/t/menu/advanced_roomcommands.html:5 msgid "Go to a 'hidden' room" msgstr "" #: ../../static/t/menu/advanced_roomcommands.html:7 msgid "Zap (forget) this room" msgstr "" #: ../../static/t/menu/advanced_roomcommands.html:8 msgid "List all forgotten rooms" msgstr "" #: ../../static/t/navbar.html:34 msgid "View contacts" msgstr "" #: ../../static/t/navbar.html:40 msgid "Add new contact" msgstr "" #: ../../static/t/navbar.html:49 msgid "Day view" msgstr "" #: ../../static/t/navbar.html:55 msgid "Month view" msgstr "" #: ../../static/t/navbar.html:61 msgid "Add new event" msgstr "" #: ../../static/t/navbar.html:70 msgid "Calendar list" msgstr "" #: ../../static/t/navbar.html:79 msgid "View tasks" msgstr "" #: ../../static/t/navbar.html:85 msgid "Add new task" msgstr "" #: ../../static/t/navbar.html:94 msgid "View notes" msgstr "" #: ../../static/t/navbar.html:101 msgid "Add new note" msgstr "" #: ../../static/t/navbar.html:110 msgid "Refresh message list" msgstr "" #: ../../static/t/navbar.html:122 msgid "Write mail" msgstr "" #: ../../static/t/navbar.html:132 msgid "Wiki home" msgstr "" #: ../../static/t/navbar.html:139 msgid "Edit this page" msgstr "" #: ../../static/t/navbar.html:145 msgid "History" msgstr "" #: ../../static/t/navbar.html:154 #, fuzzy msgid "New blog post" msgstr "nyare tjänster" #: ../../static/t/navbar.html:162 msgid "Skip this room" msgstr "" #: ../../static/t/msg_listview.html:18 msgid "Loading messages from server, please wait" msgstr "" #: ../../static/t/msg_listview.html:24 msgid "Open in new window" msgstr "" #: ../../static/t/msg_listview.html:26 msgid "Copy" msgstr "" #: ../../static/t/view_mailq/message.html:6 msgid "Originaly posted in: " msgstr "" #: ../../static/t/view_mailq/header.html:15 msgid "Refresh this page" msgstr "" #: ../../static/t/view_mailq/header.html:21 msgid "Message ID" msgstr "" #: ../../static/t/view_mailq/header.html:23 msgid "Date/time submitted" msgstr "" #: ../../static/t/view_mailq/header.html:25 msgid "Next attempt" msgstr "" #: ../../static/t/view_mailq/header.html:29 msgid "Recipients" msgstr "" #: ../../static/t/view_mailq/footer_empty.html:4 msgid "The queue is empty." msgstr "" #: ../../static/t/view_mailq/footer_empty.html:9 #: ../../static/t/view_mailq/footer.html:5 msgid "You do not have permission to view this resource." msgstr "" #: ../../static/t/get_logged_in.html:5 msgid "You must be logged in to access this page." msgstr "Du måste vara inloggad för att nå denna sida." #: ../../static/t/get_logged_in.html:9 #: ../../static/t/edit_message/attachments_pane.html:3 msgid "Close window" msgstr "" #: ../../static/t/get_logged_in.html:55 msgid "Log in using a user name and password" msgstr "" #: ../../static/t/get_logged_in.html:60 ../../static/t/get_logged_in.html:75 msgid "Password:" msgstr "" #: ../../static/t/get_logged_in.html:65 ../../static/t/get_logged_in.html:69 msgid "New user? Register now" msgstr "Ny användare? Registrera dig nu" #: ../../static/t/get_logged_in.html:70 msgid "" "enter the name and password you wish to use, and click "New User." " msgstr "" #: ../../static/t/get_logged_in.html:83 msgid "Log in using OpenID" msgstr "" #: ../../static/t/get_logged_in.html:85 msgid "OpenID URL:" msgstr "" #: ../../static/t/get_logged_in.html:92 msgid "Log in using Google" msgstr "" #: ../../static/t/get_logged_in.html:97 msgid "Log in using Yahoo" msgstr "" #: ../../static/t/get_logged_in.html:102 msgid "Log in using AOL or AIM" msgstr "" #: ../../static/t/get_logged_in.html:104 msgid "Enter your AOL or AIM screen name:" msgstr "" #: ../../static/t/get_logged_in.html:115 msgid "Please wait" msgstr "" #: ../../static/t/summary/page.html:4 msgid "Summary page for " msgstr "" #: ../../static/t/summary/page.html:21 msgid "Messages" msgstr "" #: ../../static/t/summary/page.html:39 msgid "Today on your calendar" msgstr "" #: ../../static/t/summary/page.html:51 msgid "Who‘s online now" msgstr "" #: ../../static/t/summary/page.html:60 msgid "About this server" msgstr "" #: ../../static/t/summary/page.html:63 msgid "You are connected to" msgstr "" #: ../../static/t/summary/page.html:64 msgid "running" msgstr "" #: ../../static/t/summary/page.html:65 msgid "with" msgstr "" #: ../../static/t/summary/page.html:66 msgid "server build" msgstr "" #: ../../static/t/summary/page.html:67 msgid "and located in" msgstr "" #: ../../static/t/summary/page.html:68 msgid "Your system administrator is" msgstr "" #: ../../static/t/edit_message/attachments_pane.html:16 msgid "Attach file" msgstr "" #: ../../static/t/edit_message/attachments_pane.html:21 msgid "Upload" msgstr "" #: ../../static/t/edit_message/section_attach_select.html:4 msgid "Remove" msgstr "" #: ../../static/t/loggedinas.html:3 msgid "Logged in as" msgstr "" #: ../../static/t/loggedinas.html:6 msgid "Not logged in." msgstr "" #~ msgid "Your password was not accepted." #~ msgstr "Ditt lösenord accepterades inte." webcit-8.24-dfsg.orig/po/webcit/ro.po0000644000175000017500000030017612271477123017262 0ustar michaelmichael# Romanian translation for citadel # Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 # This file is distributed under the same license as the citadel package. # FIRST AUTHOR , 2011. # msgid "" msgstr "" "Project-Id-Version: citadel\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-03-20 01:03-0400\n" "PO-Revision-Date: 2011-08-23 01:13+0000\n" "Last-Translator: Ciprian Panaite \n" "Language-Team: Romanian \n" "Language: ro\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2011-08-24 04:34+0000\n" "X-Generator: Launchpad (build 13697)\n" #: ../../roomops.c:708 ../../roomops.c:1005 ../../sieve.c:364 msgid "Cancelled. Changes were not saved." msgstr "Anulat. Modificările nu au fost salvate." #: ../../roomops.c:838 ../../sieve.c:417 msgid "Your changes have been saved." msgstr "Modificările au fost salvate" #: ../../roomops.c:881 #, c-format msgid "User '%s' kicked out of room '%s'." msgstr "Utilizatorul %s' a fost dat afară din spaţiul %s'" #: ../../roomops.c:898 #, c-format msgid "User '%s' invited to room '%s'." msgstr "Utilizatorul '%s' invitat în camera '%s'" #: ../../roomops.c:927 msgid "Cancelled. No new room was created." msgstr "Anulat. Nu a fost creat nici un spaţiu nou." #: ../../roomops.c:1187 msgid "Floor has been deleted." msgstr "Nivelul a fost şters." #: ../../roomops.c:1211 msgid "New floor has been created." msgstr "A fost creat un nou nivel." #: ../../roomops.c:1290 msgid "Room list view" msgstr "Vizualizare listă spaţii" #: ../../roomops.c:1293 msgid "Show empty floors" msgstr "Vezi niveluri libere" #: ../../roomviews.c:50 msgid "Bulletin Board" msgstr "Forum" #: ../../roomviews.c:51 msgid "Mail Folder" msgstr "Dosar poştă" #: ../../roomviews.c:52 msgid "Address Book" msgstr "Carte de adrese" #: ../../roomviews.c:53 ../../static/t/iconbar.html:24 #: ../../static/t/iconbar/edit.html:55 msgid "Calendar" msgstr "Calendar" #: ../../roomviews.c:54 msgid "Task List" msgstr "Listă de sarcini" #: ../../roomviews.c:55 msgid "Notes List" msgstr "Listă note" #: ../../roomviews.c:56 msgid "Wiki" msgstr "Wiki" #: ../../roomviews.c:57 msgid "Calendar List" msgstr "Listă calendar" #: ../../roomviews.c:58 msgid "Journal" msgstr "Jurnal" #: ../../roomviews.c:59 msgid "Drafts" msgstr "Ciorne" #: ../../roomviews.c:60 msgid "Blog" msgstr "Blog" #: ../../tasks.c:93 msgid "Completed?" msgstr "Finalizat?" #: ../../tasks.c:95 msgid "Name of task" msgstr "Numele sarcinii" #: ../../tasks.c:97 msgid "Date due" msgstr "Limită" #: ../../tasks.c:99 msgid "Category" msgstr "Categorie" #: ../../tasks.c:101 msgid "Show All" msgstr "Afișează tot" #: ../../tasks.c:223 msgid "Edit task" msgstr "Editează sarcină" #: ../../tasks.c:242 ../../calendar.c:98 ../../calendar_view.c:298 #: ../../calendar_view.c:959 ../../calendar_view.c:1003 #: ../../calendar_view.c:1084 msgid "Summary:" msgstr "Rezumat" #: ../../tasks.c:253 msgid "Start date:" msgstr "Dată de început:" #: ../../tasks.c:261 ../../tasks.c:291 msgid "No date" msgstr "Nici o dată" #: ../../tasks.c:265 ../../tasks.c:294 msgid "or" msgstr "sau" #: ../../tasks.c:279 ../../tasks.c:308 msgid "Time associated" msgstr "Timp asociat" #: ../../tasks.c:283 msgid "Due date:" msgstr "Termen limită" #: ../../tasks.c:312 msgid "Completed:" msgstr "Îndeplinit:" #: ../../tasks.c:323 msgid "Category:" msgstr "Categorie:" #: ../../tasks.c:333 ../../calendar.c:159 ../../static/t/files.html:12 msgid "Description:" msgstr "Descriere:" #: ../../tasks.c:351 ../../event.c:764 msgid "Save" msgstr "Salvează" #: ../../tasks.c:352 ../../event.c:765 ../../static/t/aide/inet/section.html:5 #: ../../static/t/view_blog/comment.html:12 #: ../../static/t/view_blog/post.html:15 ../../static/t/view_message.html:32 #: ../../static/t/navbar.html:116 ../../static/t/msg_listview.html:27 msgid "Delete" msgstr "Şterge" #: ../../tasks.c:353 ../../vcard_edit.c:1216 ../../paging.c:66 #: ../../event.c:767 ../../sysmsgs.c:69 ../../who.c:200 ../../auth.c:812 #: ../../static/t/edit_message.html:135 ../../static/t/confirmlogoff.html:4 msgid "Cancel" msgstr "Anulare" #: ../../tasks.c:423 ../../calendar_view.c:1379 msgid "Untitled Task" msgstr "Sarcină fără titlu" #: ../../fmt_date.c:310 msgid "Time format" msgstr "Format oră" #: ../../listsub.c:54 ../../static/t/listsub/display.html:5 msgid "List subscription" msgstr "Înscriere pe listă" #: ../../listsub.c:67 ../../static/t/listsub/display.html:9 msgid "List subscribe/unsubscribe" msgstr "Înscriere pe listă / renunţare" #: ../../listsub.c:87 ../../static/t/listsub/display.html:15 #: ../../static/t/listsub/display.html:34 msgid "Confirmation request sent" msgstr "Cerere de confirmare expediată" #: ../../listsub.c:89 #, c-format msgid "" "You are subscribing %s to the %s mailing list. The " "listserver has sent you an e-mail with one additional Web link for you to " "click on to confirm your subscription. This extra step is for your " "protection, as it prevents others from being able to subscribe you to lists " "without your consent.

    Please click on the link which is being e-" "mailed to you and your subscription will be confirmed.
    \n" msgstr "" "Te-ai înscris %s pe lista de mail %s. Serverul ţi-a trimis " "un e-mail cu o adresă web adiţională pe care trebuie să faci click ca să-ţi " "confirmi înscrierea. Acest pas suplimentar te protejează, în sensul că îi " "împiedică pe unii să te înscrie în liste fără ca tu să fii de acord.\n" #: ../../listsub.c:102 ../../static/t/listsub/display.html:24 msgid "Go back..." msgstr "Înapoi..." #: ../../listsub.c:253 ../../listsub.c:291 ../../listsub.c:327 #: ../../listsub.c:334 msgid "You need to specify the mailinglist to subscribe to." msgstr "" #: ../../listsub.c:260 ../../listsub.c:298 msgid "You need to specify the email address you'd like to subscribe with." msgstr "" #: ../../blogview_renderer.c:58 ../../blogview_renderer.c:74 #, c-format msgid "%d comments" msgstr "%d comentarii" #: ../../blogview_renderer.c:61 ../../blogview_renderer.c:77 msgid "permalink" msgstr "permalink" #: ../../blogview_renderer.c:302 msgid "Newer posts" msgstr "Postări mai noi" #: ../../blogview_renderer.c:311 msgid "Older posts" msgstr "Postări mai vechi" #: ../../useredit.c:629 msgid "" "An error occurred while trying to create or edit this address book entry." msgstr "" "A apărut o eroare la încercarea de a crea sau modifica această poziţie din " "cartea de adrese." #: ../../useredit.c:717 msgid "Changes were not saved." msgstr "Modificările nu au fost salvate" #: ../../useredit.c:782 msgid "A new user has been created." msgstr "A fost creat un nou utilizator" #: ../../useredit.c:786 msgid "" "You are attempting to create a new user from within Citadel while running in " "host based authentication mode. In this mode, you must create new users on " "the host system, not within Citadel." msgstr "" "Tocmai încercați să creați un nou user din Citadel în timp ce rulează în " "modul de autentificare bazată pe host. În acest mod, trebuie să creați useri " "noi pe sistemul host, nu din Citafel" #: ../../bbsview_renderer.c:312 msgid "Go to page: " msgstr "Du-te la pagina: " #: ../../bbsview_renderer.c:354 msgid "First" msgstr "Primul" #: ../../bbsview_renderer.c:360 msgid "Last" msgstr "Ultimul" #: ../../graphics.c:56 msgid "Graphics upload has been cancelled." msgstr "Expedierea a fost anulată." #: ../../graphics.c:62 msgid "You didn't upload a file." msgstr "Nu ai trimis nimic." #: ../../graphics.c:112 msgid "your photo" msgstr "poza ta" #: ../../graphics.c:119 msgid "the icon for this room" msgstr "pictograma acestui spaţiu" #: ../../graphics.c:127 msgid "the Greetingpicture for the login prompt" msgstr "fotografia de salut pentru conectare" #: ../../graphics.c:135 msgid "the Logoff banner picture" msgstr "fotografia pentru deconectare" #: ../../graphics.c:146 msgid "the icon for this floor" msgstr "pictograma acestui nivel" #: ../../calendar_tools.c:100 msgid "Hour: " msgstr "Oră " #: ../../calendar_tools.c:120 msgid "Minute: " msgstr "Minut " #: ../../calendar_tools.c:191 msgid "(status unknown)" msgstr "stare necunoscută" #: ../../calendar_tools.c:207 msgid "(needs action)" msgstr "necesită acţiune" #: ../../calendar_tools.c:210 msgid "(accepted)" msgstr "acceptat" #: ../../calendar_tools.c:213 msgid "(declined)" msgstr "refuzat" #: ../../calendar_tools.c:216 msgid "(tenative)" msgstr "(tenative)" #: ../../calendar_tools.c:219 msgid "(delegated)" msgstr "delegat" #: ../../calendar_tools.c:222 msgid "(completed)" msgstr "finalizat" #: ../../calendar_tools.c:225 msgid "(in process)" msgstr "în curs" #: ../../calendar_tools.c:228 msgid "(none)" msgstr "(nimic)" #: ../../notes.c:343 msgid "Click on any note to edit it." msgstr "Click pe orice notă pentru modificare" #: ../../vcard_edit.c:175 ../../vcard_edit.c:178 msgid "(no name)" msgstr "(fără nume)" #: ../../vcard_edit.c:443 msgid " (work)" msgstr " lucru" #: ../../vcard_edit.c:445 msgid " (home)" msgstr " acasă" #: ../../vcard_edit.c:447 msgid " (cell)" msgstr " celulă" #: ../../vcard_edit.c:458 ../../vcard_edit.c:1120 msgid "Address:" msgstr "Adresă:" #: ../../vcard_edit.c:526 msgid "Telephone:" msgstr "Telefon" #: ../../vcard_edit.c:531 msgid "E-mail:" msgstr "E-mail:" #: ../../vcard_edit.c:779 msgid "This address book is empty." msgstr "Această listă de adrese este goală." #: ../../vcard_edit.c:793 msgid "An internal error has occurred." msgstr "A apărut o eroare internă" #: ../../vcard_edit.c:944 msgid "Error" msgstr "Eroare" #: ../../vcard_edit.c:1048 msgid "Edit contact information" msgstr "Modifică informaţiile de contact" #: ../../vcard_edit.c:1068 msgid "Prefix" msgstr "Prefix" #: ../../vcard_edit.c:1068 msgid "First Name" msgstr "Prenume" #: ../../vcard_edit.c:1068 msgid "Middle Name" msgstr "Iniţiala tatălui" #: ../../vcard_edit.c:1068 msgid "Last Name" msgstr "Nume de familie" #: ../../vcard_edit.c:1068 msgid "Suffix" msgstr "Sufix" #: ../../vcard_edit.c:1089 msgid "Display name:" msgstr "Nume afișat:" #: ../../vcard_edit.c:1096 msgid "Title:" msgstr "Titlu:" #: ../../vcard_edit.c:1103 msgid "Organization:" msgstr "Organizație:" #: ../../vcard_edit.c:1114 msgid "PO box:" msgstr "Căsuță poștală:" #: ../../vcard_edit.c:1130 msgid "City:" msgstr "Localitate:" #: ../../vcard_edit.c:1136 msgid "State:" msgstr "Stare:" #: ../../vcard_edit.c:1142 msgid "ZIP code:" msgstr "Cod poştal:" #: ../../vcard_edit.c:1148 msgid "Country:" msgstr "Țară:" #: ../../vcard_edit.c:1158 msgid "Home telephone:" msgstr "Telefon acasă:" #: ../../vcard_edit.c:1164 msgid "Work telephone:" msgstr "Telefon serviciu:" #: ../../vcard_edit.c:1170 msgid "Mobile telephone:" msgstr "Telefon mobil:" #: ../../vcard_edit.c:1176 msgid "Fax number:" msgstr "Fax:" #: ../../vcard_edit.c:1187 msgid "Primary Internet e-mail address" msgstr "Adresă e-mail principală:" #: ../../vcard_edit.c:1194 msgid "Internet e-mail aliases" msgstr "Aliasuri de Internet e-mail" #: ../../vcard_edit.c:1215 ../../sysmsgs.c:67 msgid "Save changes" msgstr "Salvează modificările" #: ../../vcard_edit.c:1261 msgid "Unable to enter the room to save your message" msgstr "Imposibil de intrat în cameră pentru a salva mesajul" #: ../../vcard_edit.c:1265 msgid "Aborting." msgstr "Abandon" #: ../../vcard_edit.c:1297 ../../vcard_edit.c:1341 ../../auth.c:367 #: ../../auth.c:397 msgid "An error has occurred." msgstr "A apărut o eroare." #: ../../vcard_edit.c:1399 msgid "Could Not decode vcard photo\n" msgstr "Nu poate fi decodat foto vcard\n" #: ../../preferences.c:880 msgid "Cancelled. No settings were changed." msgstr "Anulat. Nu a fost schimbat nici un parametru." #: ../../preferences.c:1092 msgid "Make this my start page" msgstr "Configurează ca pagină de start" #: ../../preferences.c:1130 msgid "This isn't allowed to become the start page." msgstr "Configurarea ca pagină de start nu este permisă." #: ../../preferences.c:1132 msgid "You no longer have a start page selected." msgstr "Nu mai aveţi nici o pagină de start selectată." #: ../../preferences.c:1182 msgid "Prefered startpage" msgstr "Pagină de start preferată" #: ../../calendar.c:76 msgid "Meeting invitation" msgstr "Invitaţie la întâlnire" #: ../../calendar.c:79 msgid "Attendee's reply to your invitation" msgstr "Răspunsul participantului la invitaţia ta" #: ../../calendar.c:82 msgid "Published event" msgstr "Eveniment publicat" #: ../../calendar.c:85 msgid "This is an unknown type of calendar item." msgstr "Acesta este un tip necunoscut de element al calendarului." #: ../../calendar.c:107 ../../calendar_view.c:306 ../../calendar_view.c:964 #: ../../calendar_view.c:1008 ../../calendar_view.c:1089 msgid "Location:" msgstr "Loc:" #: ../../calendar.c:132 ../../calendar_view.c:351 ../../calendar_view.c:970 msgid "Date:" msgstr "Data:" #: ../../calendar.c:139 ../../calendar_view.c:373 ../../calendar_view.c:1013 #: ../../calendar_view.c:1099 msgid "Starting date/time:" msgstr "Data şi ora de început" #: ../../calendar.c:150 ../../calendar_view.c:376 ../../calendar_view.c:1015 #: ../../calendar_view.c:1101 msgid "Ending date/time:" msgstr "Data şi ora de sfârşit" #: ../../calendar.c:168 ../../event.c:90 msgid "Recurrence" msgstr "Recurenţă" #: ../../calendar.c:169 ../../event.c:505 msgid "This is a recurring event" msgstr "Acesta este un eveniment care se repetă" #: ../../calendar.c:178 msgid "Attendee:" msgstr "Participant:" #: ../../calendar.c:218 #, c-format msgid "This is an update of '%s' which is already in your calendar." msgstr "Aceasta este o actualizare a '%s', care este deja în calendarul tău." #: ../../calendar.c:222 #, c-format msgid "This event would conflict with '%s' which is already in your calendar." msgstr "" "Acest eveniment va intra în conflict cu '%s' care este deja în calendarul " "tău." #: ../../calendar.c:227 msgid "Update:" msgstr "Actualizare:" #: ../../calendar.c:228 msgid "CONFLICT:" msgstr "CONFLICT:" #: ../../calendar.c:251 msgid "How would you like to respond to this invitation?" msgstr "Cum vrei să răspunzi acestei invitaţii?" #: ../../calendar.c:252 msgid "Accept" msgstr "Accept" #: ../../calendar.c:253 msgid "Tentative" msgstr "Tentativă" #: ../../calendar.c:254 msgid "Decline" msgstr "Refuz" #: ../../calendar.c:271 msgid "Click Update to accept this reply and update your calendar." msgstr "" "Apasă Actualizare pentru a accepta acest răspuns şi a actualiza " "calendarul" #: ../../calendar.c:272 msgid "Update" msgstr "Actualizare" #: ../../calendar.c:273 msgid "Ignore" msgstr "Ignoră" #: ../../calendar.c:295 msgid "There was an error parsing this calendar item." msgstr "A intervenit o eroare la analiza acestui element din calendar" #: ../../calendar.c:328 msgid "" "You have accepted this meeting invitation. It has been entered into your " "calendar." msgstr "" "Ai acceptat această invitaţie la întâlnire. A fost introdusă în calendarul " "tău." #: ../../calendar.c:332 msgid "" "You have tentatively accepted this meeting invitation. It has been " "'pencilled in' to your calendar." msgstr "" "Ai acceptat să încerci să onorezi această invitaţie la întâlnire. A fost " "trecută \"în creion\" în calendarul tău." #: ../../calendar.c:336 msgid "" "You have declined this meeting invitation. It has not been entered " "into your calendar." msgstr "" "Ai refuzat această invitaţie la întâlnire. Nu a fost memorată în calendarul " "tău." #: ../../calendar.c:341 msgid "A reply has been sent to the meeting organizer." msgstr "A fost expediat un răspuns către organizatorul întâlnirii." #. / Translators: RSVP aka Répondez s'il-vous-plaît Is the term #. / that the recipient of an ical-invitation should please #. / answer this request. #: ../../calendar.c:376 msgid "Your calendar has been updated to reflect this RSVP." msgstr "" "Calendarul dumneavoastră a fost actualizat pentru a reflecta acest RSVP" "(Répondez s'il-vous-plaît = Răspundeți vă rog)." #: ../../calendar.c:378 msgid "" "You have chosen to ignore this RSVP. Your calendar has not been " "updated." msgstr "" "Ați ales să ignorați acest RSVP(Répondez s'il-vous-plaît = Răspundeți vă " "rog). Calendarul dumneavoastră nu a fost actualizat." #: ../../calendar.c:932 msgid "Calendar day view begins at:" msgstr "" #: ../../calendar.c:933 msgid "Calendar day view ends at:" msgstr "" #: ../../calendar.c:934 msgid "Week starts on:" msgstr "Săptămâna începe cu:" #: ../../paging.c:35 msgid "Send instant message" msgstr "Trimite mesaj instantaneu" #: ../../paging.c:43 msgid "Send an instant message to: " msgstr "Trimite mesaj instantaneu către: " #: ../../paging.c:57 msgid "Enter message text:" msgstr "Introdu mesaj text:" #: ../../paging.c:65 ../../static/t/edit_message.html:109 msgid "Send message" msgstr "Trimite mesaj" #: ../../paging.c:84 msgid "Message was not sent." msgstr "Mesajul n-a fost trimis" #: ../../paging.c:95 msgid "Message has been sent to " msgstr "Mesajul a fost trimis către " #: ../../iconbar.c:328 msgid "Iconbar Setting" msgstr "Configurare bară pictograme" #. #. * Set to 'unknown' right from the beginning. Unless we learn #. * something else, that's what we'll go with. #. #: ../../availability.c:148 msgid "availability unknown" msgstr "disponibilitate necunoscută" #: ../../availability.c:169 msgid "free" msgstr "liber" #: ../../availability.c:179 msgid "BUSY" msgstr "OCUPAT" #: ../../serv_func.c:193 msgid "" "This server is already serving its maximum number of users and cannot accept " "any additional logins at this time. Please try again later or contact your " "system administrator." msgstr "" "Acest server deserveşte acum numărul maxim admis de utilizatori şi nu poate " "accepta conectări suplimentare în acest moment. Încearcă mai târziu sau " "contactează administratorul sistemului." #: ../../serv_func.c:198 ../../serv_func.c:227 msgid "Received unexpected answer from Citadel server; bailing out." msgstr "" #: ../../serv_func.c:236 #, c-format msgid "" "You are connected to a Citadel server running Citadel %d.%02d. \n" "In order to run this version of WebCit you must also have Citadel %d.%02d or " "newer.\n" "\n" "\n" msgstr "" "Esti conectat la un server Citadel care rulează Citadel %d.%02d.\n" "Pentru a putea rula această versiune a Webcit ai nevoie de versiunea %d." "%02d sau mai nouă.\n" "\n" "\n" #: ../../event.c:70 msgid "seconds" msgstr "secunde" #: ../../event.c:71 msgid "minutes" msgstr "minute" #: ../../event.c:72 msgid "hours" msgstr "ore" #: ../../event.c:73 msgid "days" msgstr "zile" #: ../../event.c:74 msgid "weeks" msgstr "săptămâni" #: ../../event.c:75 msgid "months" msgstr "luni" #: ../../event.c:76 msgid "years" msgstr "ani" #: ../../event.c:77 msgid "never" msgstr "niciodată" #: ../../event.c:81 msgid "first" msgstr "întâi" #: ../../event.c:82 msgid "second" msgstr "al doilea" #: ../../event.c:83 msgid "third" msgstr "al treilea" #: ../../event.c:84 msgid "fourth" msgstr "al patrulea" #: ../../event.c:85 msgid "fifth" msgstr "al cincilea" #: ../../event.c:88 msgid "Event" msgstr "eveniment" #: ../../event.c:89 ../../event.c:437 ../../event.c:449 msgid "Attendees" msgstr "Participanți" #: ../../event.c:167 msgid "Add or edit an event" msgstr "Adaugă sau modifică un eveniment" #: ../../event.c:206 ../../static/t/iconbar.html:13 #: ../../static/t/iconbar/edit.html:29 msgid "Summary" msgstr "Rezumat" #: ../../event.c:217 msgid "Location" msgstr "Loc" #: ../../event.c:228 ../../calendar_view.c:760 msgid "Start" msgstr "Start" #: ../../event.c:271 ../../calendar_view.c:957 ../../calendar_view.c:986 msgid "All day event" msgstr "Eveniment pentru toată ziua" #: ../../event.c:277 ../../calendar_view.c:761 msgid "End" msgstr "Sfârșit" #: ../../event.c:327 ../../static/t/iconbar.html:34 #: ../../static/t/iconbar/edit.html:49 msgid "Notes" msgstr "Note" #: ../../event.c:369 msgid "Organizer" msgstr "Organizator" #: ../../event.c:374 msgid "(you are the organizer)" msgstr "(tu eşti organizatorul)" #: ../../event.c:392 msgid "Show time as:" msgstr "Arată ora ca:" #: ../../event.c:415 msgid "Free" msgstr "Liber" #: ../../event.c:423 msgid "Busy" msgstr "Ocupat(ă)" #: ../../event.c:440 msgid "(One per line)" msgstr "(Unul pe linie)" #: ../../event.c:450 ../../static/t/edit_message.html:143 #: ../../static/t/iconbar.html:29 ../../static/t/iconbar/edit.html:42 msgid "Contacts" msgstr "Contacte" #: ../../event.c:513 msgid "Recurrence rule" msgstr "Regulă de recurenţă" #: ../../event.c:517 msgid "Repeats every" msgstr "Se repetă la fiecare" #. begin 'weekday_selector' div #: ../../event.c:535 msgid "on these weekdays:" msgstr "în zilele săptămânii:" #: ../../event.c:593 #, c-format msgid "on day %s%d%s of the month" msgstr "în ziua %s%d%s a lunii" #: ../../event.c:602 ../../event.c:664 msgid "on the " msgstr "pe " #: ../../event.c:626 msgid "of the month" msgstr "a lunii" #: ../../event.c:655 msgid "every " msgstr "la fiecare " #: ../../event.c:656 msgid "year on this date" msgstr "an pe această dată" #: ../../event.c:688 ../../static/t/msg_listselector_bottom.html:7 #: ../../static/t/msg_listselector_top.html:7 msgid "of" msgstr "de" #: ../../event.c:712 msgid "Recurrence range" msgstr "Interval de recurenţă" #: ../../event.c:720 msgid "No ending date" msgstr "Nu se termină" #: ../../event.c:727 msgid "Repeat this event" msgstr "Repetă acest eveniment" #: ../../event.c:730 msgid "times" msgstr "ori" #: ../../event.c:738 msgid "Repeat this event until " msgstr "Repetă acest eveniment până când " #: ../../event.c:766 msgid "Check attendee availability" msgstr "Verifică disponibilitatea participantului" #: ../../event.c:858 ../../calendar_view.c:272 ../../calendar_view.c:468 #: ../../calendar_view.c:937 msgid "Untitled Event" msgstr "Eveniment fără titlu" #: ../../sysmsgs.c:52 #, c-format msgid "Edit %s" msgstr "Modifică %s" #: ../../sysmsgs.c:55 #, c-format msgid "" "Enter %s below. Text is formatted to the reader's browser. A newline is " "forced by preceding the next line by a blank." msgstr "" "Introdu mai jos %s. Textul este aranjat după browserul cititorului. Trecerea " "la linie nouă poate fi forţată precedând linia următoare cu un spaţiu." #: ../../sysmsgs.c:89 #, c-format msgid "Cancelled. %s was not saved." msgstr "Anulat. %s nu a fost anulat." #: ../../sysmsgs.c:109 msgid " has been saved." msgstr " s-a salvat." #: ../../sysmsgs.c:116 ../../sysmsgs.c:117 msgid "Room info" msgstr "Info spaţiu" #: ../../sysmsgs.c:122 ../../sysmsgs.c:124 msgid "Your bio" msgstr "Biografia ta" #: ../../calendar_view.c:297 ../../calendar_view.c:958 #: ../../calendar_view.c:1002 ../../calendar_view.c:1083 #: ../../static/t/sieve/display_one.html:20 msgid "From" msgstr "de la" #: ../../calendar_view.c:355 ../../calendar_view.c:974 msgid "Starting date:" msgstr "Data de început" #: ../../calendar_view.c:361 ../../calendar_view.c:976 msgid "Ending date:" msgstr "Data de sfârşit" #: ../../calendar_view.c:369 ../../calendar_view.c:1095 msgid "Date/time:" msgstr "Data/ora" #: ../../calendar_view.c:386 ../../calendar_view.c:980 #: ../../calendar_view.c:1018 ../../calendar_view.c:1105 #: ../../static/t/room/edit/tab_share.html:32 msgid "Notes:" msgstr "Observații:" #: ../../calendar_view.c:585 ../../calendar_view.c:721 msgid "previous" msgstr "precedent" #: ../../calendar_view.c:597 ../../calendar_view.c:733 #: ../../calendar_view.c:1308 msgid "next" msgstr "următor" #: ../../calendar_view.c:756 msgid "Week" msgstr "Săptămână" #: ../../calendar_view.c:758 msgid "Hours" msgstr "Ore" #: ../../calendar_view.c:759 ../../static/t/sieve/display_one.html:22 #: ../../static/t/msg_listview.html:9 msgid "Subject" msgstr "Subiect" #: ../../calendar_view.c:1001 ../../calendar_view.c:1024 msgid "Ongoing event" msgstr "Eveniment în desfăşurare" #: ../../messages.c:70 msgid "ERROR:" msgstr "EROARE:" #: ../../messages.c:88 msgid "Empty message" msgstr "Mesaj gol" #: ../../messages.c:1010 msgid "Cancelled. Message was not posted." msgstr "Anulat. Mesajul nu a fost afişat." #: ../../messages.c:1013 msgid "Automatically cancelled because you have already saved this message." msgstr "Anulat automat deoarece deja ai salvat acest mesaj." #: ../../messages.c:1037 msgid "Saved to Drafts failed: " msgstr "Salvarea ca ciornă a eşuat: " #: ../../messages.c:1102 msgid "Refusing to post empty message.\n" msgstr "Este refuzată postarea unui mesaj gol.\n" #: ../../messages.c:1128 msgid "Message has been saved to Drafts.\n" msgstr "Mesajul a fost salvat ca ciornă.\n" #: ../../messages.c:1137 msgid "Message has been sent.\n" msgstr "Mesajul a fost trimis.\n" #: ../../messages.c:1140 msgid "Message has been posted.\n" msgstr "Mesajul a fost postat.\n" #: ../../messages.c:1679 msgid "The message was not moved." msgstr "Mesajul nu a fost mutat." #: ../../messages.c:1719 #, c-format msgid "An error occurred while retrieving this part: %s/%s\n" msgstr "A apărut o eroare la recuperarea acestei părţi: %s/%s\n" #: ../../messages.c:1796 #, c-format msgid "An error occurred while retrieving this part: %s\n" msgstr "A apărut o eroare la recuperarea acestei părţi: %s\n" #: ../../messages.c:1956 msgid "Attach signature to email messages?" msgstr "Doreşti anexarea semnăturii la acest mesaj ?" #: ../../messages.c:1959 msgid "Use this signature:" msgstr "Foloseşte această semnătură:" #: ../../messages.c:1961 msgid "Default character set for email headers:" msgstr "Set de caractere implicit pentru antetul e-mailurilor:" #: ../../messages.c:1964 msgid "Preferred email address" msgstr "Adresă e-mail preferată" #: ../../messages.c:1966 msgid "Preferred display name for email messages" msgstr "Nume preferat afişat în mesajele e-mail" #: ../../messages.c:1970 msgid "Preferred display name for bulletin board posts" msgstr "Nume preferat afişat în mesajele postate pe forum" #: ../../messages.c:1973 msgid "Mailbox view mode" msgstr "Mod vizualizare căsuţă poştală" #: ../../inetconf.c:110 ../../inetconf.c:119 ../../inetconf.c:133 #: ../../inetconf.c:159 ../../netconf.c:156 ../../netconf.c:183 #: ../../netconf.c:191 ../../netconf.c:239 ../../netconf.c:247 msgid "Invalid Parameter" msgstr "Parametru nevalid" #: ../../inetconf.c:126 msgid " has been deleted." msgstr " s-a șters." #. added status message #: ../../inetconf.c:144 msgid " added." msgstr " s-a adăugat." #: ../../who.c:154 msgid "Edit your session display" msgstr "Modifică ecranul sesiunii tale" #: ../../who.c:158 msgid "" "This screen allows you to change the way your session appears in the 'Who is " "online' listing. To turn off any 'fake' name you've previously set, simply " "click the appropriate 'change' button without typing anything in the " "corresponding box. " msgstr "" "Acest ecran îţi permite să modifici modul în care sesiunea ta apare în lista " ". Pentru a dezactiva orice nume pe care l-ai " "configurat anterior, apasă pur şi simplu butonul aferent unei " "casete, fără a scrie nimic în aceasta. " #: ../../who.c:171 msgid "Room name:" msgstr "Nume spaţiu" #: ../../who.c:176 msgid "Change room name" msgstr "Schimbă numele spaţiului" #: ../../who.c:180 msgid "Host name:" msgstr "Nume gazdă:" #: ../../who.c:185 msgid "Change host name" msgstr "Schimbă numele gazdei:" #: ../../who.c:190 ../../static/t/aide/edituser/detailview.html:20 #: ../../static/t/openid_manual_create.html:9 #: ../../static/t/get_logged_in.html:57 ../../static/t/get_logged_in.html:72 msgid "User name:" msgstr "Nume utilizator" #: ../../who.c:195 msgid "Change user name" msgstr "Schimbă nume utilizator:" #: ../../siteconfig.c:46 ../../siteconfig.c:64 ../../roomlist.c:44 #: ../../roomlist.c:394 ../../static/t/room/edit/tab_expire.html:72 #: ../../static/t/room/edit/tab_config.html:149 #: ../../static/t/room/edit/tab_access.html:42 msgid "Higher access is required to access this function." msgstr "Nu ai drepturi suficiente pentru a accesa această funcţie" #: ../../siteconfig.c:256 msgid "WARNING: Failed to parse Server Config; do you run a to new citserver?" msgstr "" "Analiza configuraţiei serverului este imposibilă; rulaţi cumva un nou server " "Citadel ?" #: ../../siteconfig.c:319 msgid "Your system configuration has been updated." msgstr "Configuraţia sistemului tău a fost actualizată." #: ../../wiki.c:69 ../../wiki.c:162 ../../wiki.c:282 #, c-format msgid "There is no room called '%s'." msgstr "Nu există nici un spaţiu numit '%s'" #: ../../wiki.c:76 #, c-format msgid "'%s' is not a Wiki room." msgstr "'%s' nu este un spaţiu Wiki" #: ../../wiki.c:110 #, c-format msgid "There is no page called '%s' here." msgstr "Nu există aici nici o pagină numită '%s'." #: ../../wiki.c:112 msgid "" "Select the 'Edit this page' link in the room banner if you would like to " "create this page." msgstr "" "Selectaţi linkul în bannerul spaţiului dacă doriţi să " "creaţi acest spaţiu." #: ../../wiki.c:181 ../../static/t/msg_listview.html:11 msgid "Date" msgstr "Dată" #: ../../wiki.c:182 msgid "Author" msgstr "Autor" #: ../../wiki.c:209 ../../wiki.c:218 msgid "(show)" msgstr "(arată)" #: ../../wiki.c:211 ../../static/t/navbar.html:145 msgid "Current version" msgstr "Versiune curentă" #: ../../wiki.c:223 msgid "(revert)" msgstr "(inversează)" #: ../../wiki.c:300 msgid "Page title" msgstr "Titlul paginii" #: ../../webcit.c:316 msgid "Authorization Required" msgstr "Este necesară autorizarea" #: ../../webcit.c:324 #, c-format msgid "" "The resource you requested requires a valid username and password. You could " "not be logged in: %s\n" msgstr "" "Resursa la care doreşti acces necesită un nume de utilizator şi o parolă " "valabile. Nu poţi fi conectat.\n" "%s\n" #: ../../webcit.c:647 ../../auth.c:526 msgid "" "This program was unable to connect or stay connected to the Citadel server. " "Please report this problem to your system administrator." msgstr "" "Acest program nu s-a putut conecta sau n-a putut sta conectat la serverul " "Citadel. Eşti rugat(ă) să raportezi această problemă administratorului de " "sistem." #: ../../webcit.c:654 ../../auth.c:532 msgid "Read More..." msgstr "Citeşte mai mult..." #: ../../smtpqueue.c:134 ../../static/t/aide/ignetconf/section.html:5 #: ../../static/t/view_mailq/message.html:2 msgid "(Delete)" msgstr "(Şterge)" #: ../../smtpqueue.c:334 msgid "First Attempt pending" msgstr "" #: ../../roomlist.c:99 msgid "My Folders" msgstr "Dosarele mele" #: ../../downloads.c:289 #, c-format msgid "An error occurred while retrieving this file: %s\n" msgstr "A apărut o eroare în timpul recuperării fişierului %s\n" #: ../../roomtokens.c:572 msgid "file" msgstr "fișier" #: ../../roomtokens.c:574 msgid "files" msgstr "fişiere" #: ../../summary.c:128 msgid "(None)" msgstr "(Nici unul))" #: ../../summary.c:184 msgid "(Nothing)" msgstr "(Nimic)" #: ../../msg_renderers.c:579 ../../static/t/who/bio.html:15 msgid "edit" msgstr "modifică" #: ../../msg_renderers.c:1119 msgid "I don't know how to display " msgstr "Nu ştiu cum să afişez " #: ../../msg_renderers.c:1353 msgid "(no subject)" msgstr "(fără subiect)" #: ../../addressbook_popup.c:186 msgid "Add" msgstr "Adaugă" #. an erased user #: ../../auth.c:30 ../../static/t/aide/edituser/detailview.html:43 #: ../../static/t/aide/siteconfig/tab_access.html:40 #: ../../static/t/aide/siteconfig/tab_access.html:51 msgid "Deleted" msgstr "Șters" #. a new user #: ../../auth.c:33 ../../static/t/aide/edituser/detailview.html:44 #: ../../static/t/aide/siteconfig/tab_access.html:41 #: ../../static/t/aide/siteconfig/tab_access.html:52 #: ../../static/t/get_logged_in.html:79 msgid "New User" msgstr "Utilizator Nou" #. a trouble maker #: ../../auth.c:36 ../../static/t/aide/edituser/detailview.html:45 #: ../../static/t/aide/siteconfig/tab_access.html:42 #: ../../static/t/aide/siteconfig/tab_access.html:53 msgid "Problem User" msgstr "Utilizator problemă" #. user with normal privileges #: ../../auth.c:39 ../../static/t/aide/edituser/detailview.html:46 #: ../../static/t/aide/siteconfig/tab_access.html:43 #: ../../static/t/aide/siteconfig/tab_access.html:54 msgid "Local User" msgstr "Utilizator Local" #. a user that may access network resources #: ../../auth.c:42 ../../static/t/aide/edituser/detailview.html:47 #: ../../static/t/aide/siteconfig/tab_access.html:44 #: ../../static/t/aide/siteconfig/tab_access.html:55 msgid "Network User" msgstr "Utilizator de reţea" #. a moderator #: ../../auth.c:45 ../../static/t/aide/edituser/detailview.html:48 #: ../../static/t/aide/siteconfig/tab_access.html:45 #: ../../static/t/aide/siteconfig/tab_access.html:56 msgid "Preferred User" msgstr "Utilizator preferat" #. chief #: ../../auth.c:48 ../../static/t/aide/edituser/detailview.html:49 #: ../../static/t/aide/siteconfig/tab_access.html:46 #: ../../static/t/aide/siteconfig/tab_access.html:57 msgid "Admin" msgstr "Şef" #: ../../auth.c:513 ../../static/t/iconbar.html:80 #: ../../static/t/confirmlogoff.html:3 #: ../../static/t/menu/basic_commands.html:19 msgid "Log off" msgstr "Deconectare" #: ../../auth.c:537 msgid "Log in again" msgstr "Conectează-te din nou" #: ../../auth.c:585 ../../static/t/aide/usermanagement.html:3 msgid "Validate new users" msgstr "Confirmă utilizatori noi" #: ../../auth.c:605 msgid "No users require validation at this time." msgstr "Nici un utilizator nu trebuie confirmat în acest moment" #: ../../auth.c:655 msgid "very weak" msgstr "foarte slabă" #: ../../auth.c:658 msgid "weak" msgstr "slabă" #: ../../auth.c:661 msgid "ok" msgstr "bună" #: ../../auth.c:665 msgid "strong" msgstr "foarte bună" #: ../../auth.c:683 #, c-format msgid "Current access level: %d (%s)\n" msgstr "Nivel curent de acces: %d (%s)\n" #: ../../auth.c:691 msgid "Select access level for this user:" msgstr "Alege nivelul de acces pentru acest utilizator:" #: ../../auth.c:776 ../../static/t/menu/your_info.html:4 msgid "Change your password" msgstr "Schimbă-ţi parola" #: ../../auth.c:800 msgid "Enter new password:" msgstr "Introdu noua parolă" #: ../../auth.c:804 msgid "Enter it again to confirm:" msgstr "Introdu-o din nou, pentru confirmare:" #: ../../auth.c:810 msgid "Change password" msgstr "Schimbă parola" #: ../../auth.c:830 msgid "Cancelled. Password was not changed." msgstr "Anulat. Parola nu a fost schimbată." #: ../../auth.c:839 msgid "They don't match. Password was not changed." msgstr "Nu sunt identice. Parola n-a fost schimbată." #: ../../auth.c:845 msgid "Blank passwords are not allowed." msgstr "Nu se poate fără parolă." #: ../../openid.c:34 msgid "Manage Account/OpenID Associations" msgstr "Manage Account/OpenID Associations" #: ../../openid.c:52 msgid "Do you really want to delete this OpenID?" msgstr "Chiar vrei să ştergi acest OpenID ?" #: ../../openid.c:53 msgid "(delete)" msgstr "(şterge)" #: ../../openid.c:61 msgid "Add an OpenID: " msgstr "Adaugă un OpenID " #: ../../openid.c:64 msgid "Attach" msgstr "Ataşează" #: ../../openid.c:68 #, c-format msgid "%s does not permit authentication via OpenID." msgstr "%s nu permite autentificare via OpenID" #: ../../html2html.c:136 #, c-format msgid "realloc() error! couldn't get %d bytes: %s" msgstr "erroare realloc() imposibil de obţinut %d bytes: %s" #: ../../static/t/viewomatic.html:4 msgid "View as:" msgstr "" #: ../../static/t/sieve/list.html:32 ../../static/t/sieve/none.html:4 #: ../../static/t/menu/your_info.html:7 msgid "View/edit server-side mail filters" msgstr "Vezi/editează filtre mail pe server" #: ../../static/t/sieve/list.html:41 msgid "When new mail arrives: " msgstr "La primirea unui nou mesaj: " #: ../../static/t/sieve/list.html:43 msgid "Leave it in my inbox without filtering" msgstr "Lasă-l în căsuţa de intrare fără filtrare" #: ../../static/t/sieve/list.html:44 msgid "Filter it according to rules selected below" msgstr "Filtrează-l după regulile de mai jos" #: ../../static/t/sieve/list.html:45 msgid "Filter it through a manually edited script (advanced users only)" msgstr "" "Filtrează-l folosind un script editat manual (numai pentru utilizatorii " "avansaţi)" #: ../../static/t/sieve/list.html:52 msgid "Your incoming mail will not be filtered through any scripts." msgstr "mesajele pe care le vei primi nu vor fi filtrate după nici un script" #: ../../static/t/sieve/list.html:64 msgid "Add rule" msgstr "Adaugă regulă" #: ../../static/t/sieve/list.html:71 msgid "The currently active script is: " msgstr "Scriptul activ este: " #: ../../static/t/sieve/list.html:76 ../../static/t/sieve/add.html:3 msgid "Add or delete scripts" msgstr "Adaugă sau şterge scripturi" #: ../../static/t/sieve/display_one.html:16 msgid "If" msgstr "Dacă" #: ../../static/t/sieve/display_one.html:21 msgid "To or Cc" msgstr "Către sau copie (cc)" #: ../../static/t/sieve/display_one.html:23 msgid "Reply-to" msgstr "Răspuns către" #: ../../static/t/sieve/display_one.html:24 #: ../../static/t/msg_listview.html:10 #: ../../static/t/view_mailq/header.html:27 msgid "Sender" msgstr "Expeditor" #: ../../static/t/sieve/display_one.html:25 msgid "Resent-From" msgstr "Retrimis de la" #: ../../static/t/sieve/display_one.html:26 msgid "Resent-To" msgstr "Retrimis către" #: ../../static/t/sieve/display_one.html:27 msgid "Envelope From" msgstr "Plic de la" #: ../../static/t/sieve/display_one.html:28 msgid "Envelope To" msgstr "Plic către" #: ../../static/t/sieve/display_one.html:29 msgid "X-Mailer" msgstr "X-Mailer" #: ../../static/t/sieve/display_one.html:30 msgid "X-Spam-Flag" msgstr "Fanion X-Spam" #: ../../static/t/sieve/display_one.html:31 msgid "X-Spam-Status" msgstr "Stare X-spam" #: ../../static/t/sieve/display_one.html:32 msgid "List-ID" msgstr "ID listă" #: ../../static/t/sieve/display_one.html:33 msgid "Message size" msgstr "Dimensiune mesaj" #: ../../static/t/sieve/display_one.html:34 #: ../../static/t/select_messageindex_all.html:1 msgid "All" msgstr "Tot" #: ../../static/t/sieve/display_one.html:41 msgid "contains" msgstr "conține" #: ../../static/t/sieve/display_one.html:42 msgid "does not contain" msgstr "nu conține" #: ../../static/t/sieve/display_one.html:43 msgid "is" msgstr "este" #: ../../static/t/sieve/display_one.html:44 msgid "is not" msgstr "nu este" #: ../../static/t/sieve/display_one.html:45 msgid "matches" msgstr "se potriveşte cu" #: ../../static/t/sieve/display_one.html:46 msgid "does not match" msgstr "nu se potrivește" #: ../../static/t/sieve/display_one.html:52 msgid "(All messages)" msgstr "(Toate mesajele)" #: ../../static/t/sieve/display_one.html:56 msgid "is larger than" msgstr "este mai mare decât" #: ../../static/t/sieve/display_one.html:57 msgid "is smaller than" msgstr "este mai mic decât" #: ../../static/t/sieve/display_one.html:59 msgid "bytes" msgstr "" #: ../../static/t/sieve/display_one.html:65 msgid "Keep" msgstr "Păstrează" #: ../../static/t/sieve/display_one.html:66 msgid "Discard silently" msgstr "Aruncă în linişte" #: ../../static/t/sieve/display_one.html:67 msgid "Reject" msgstr "Respinge" #: ../../static/t/sieve/display_one.html:68 msgid "Move message to" msgstr "Mută mesajul în" #: ../../static/t/sieve/display_one.html:69 msgid "Forward to" msgstr "Retrimite către" #: ../../static/t/sieve/display_one.html:70 msgid "Vacation" msgstr "Vacanță" #: ../../static/t/sieve/display_one.html:82 msgid "Message:" msgstr "Mesaj:" #: ../../static/t/sieve/display_one.html:90 msgid "and then" msgstr "şi apoi" #: ../../static/t/sieve/display_one.html:93 msgid "continue processing" msgstr "continuă procesarea" #: ../../static/t/sieve/display_one.html:94 msgid "stop" msgstr "stop" #: ../../static/t/sieve/none.html:9 msgid "" "This installation of Citadel was built without support for server-side mail " "filtering.
    Please contact your system administrator if you require this " "feature.
    " msgstr "" "Această instalare a Citadel a fost făcută fără suport pentru filtrare mail " "dinspre server
    Dacă vă trebuie această facilitate, contactaţi " "administratorul sistemului." #: ../../static/t/sieve/add.html:9 msgid "Add a new script" msgstr "Adaugă un nou script" #: ../../static/t/sieve/add.html:10 msgid "" "To create a new script, enter the desired script name in the box below and " "click 'Create'." msgstr "" "Pentru a crea un script nou, introdu numele pe care doreşti să i-l dai în " "caseta de mai jos şi apasă " #: ../../static/t/sieve/add.html:14 msgid "Script name: " msgstr "Nume script: " #: ../../static/t/sieve/add.html:18 msgid "Edit scripts" msgstr "Modificare scripturi" #: ../../static/t/sieve/add.html:20 msgid "Return to the script editing screen" msgstr "Înapoi la ecranul de modificare scripturi" #: ../../static/t/sieve/add.html:23 msgid "Delete scripts" msgstr "Şterge scripturi" #: ../../static/t/sieve/add.html:24 msgid "" "To delete an existing script, select the script name from the list and click " "'Delete'." msgstr "" "Pentru a şterge un script existent, selectează din listă numele acestuia şi " "apasă <Şterge>" #: ../../static/t/msg/confirm_move.html:4 msgid "Confirm move of message" msgstr "Confirmă mutarea mesajului" #: ../../static/t/msg/confirm_move.html:12 msgid "Move this message to:" msgstr "Mută acest mesaj în:" #: ../../static/t/login.html:5 msgid "powered by" msgstr "" #: ../../static/t/login.html:15 ../../static/t/iconbar.html:88 #: ../../static/t/get_logged_in.html:64 ../../static/t/get_logged_in.html:88 #: ../../static/t/get_logged_in.html:93 ../../static/t/get_logged_in.html:98 #: ../../static/t/get_logged_in.html:107 msgid "Log in" msgstr "" #: ../../static/t/trailing.html:14 msgid "" "WARNING: You have JavaScript disabled in your web browser. Many functions " "of this system will not work properly." msgstr "" #: ../../static/t/view_submessage.html:4 #: ../../static/t/view_message/replyquote.html:3 #: ../../static/t/view_message/replyquote.html:7 #: ../../static/t/view_message/print.html:8 ../../static/t/view_message.html:7 msgid "from " msgstr "" #: ../../static/t/searchomatic.html:4 msgid "Search: " msgstr "" #: ../../static/t/listsub/display.html:16 msgid "You are subscribing " msgstr "" #: ../../static/t/listsub/display.html:17 #, fuzzy msgid " to the " msgstr "pe " #: ../../static/t/listsub/display.html:18 #, fuzzy msgid " mailing list." msgstr "Serviciul de mailing list" #: ../../static/t/listsub/display.html:19 msgid "" "The listserver has sent you an e-mail with one additional Web link for you " "to click on to confirm your subscription." msgstr "" #: ../../static/t/listsub/display.html:20 msgid "" "This extra step is for your protection, as it prevents others from being " "able to subscribe you to lists without your consent." msgstr "" #: ../../static/t/listsub/display.html:22 msgid "" "Please click on the link which is being e-mailed to you and your " "subscription will be confirmed." msgstr "" #: ../../static/t/listsub/display.html:27 #: ../../static/t/listsub/display.html:47 #, fuzzy msgid "ERROR" msgstr "EROARE:" #: ../../static/t/listsub/display.html:35 msgid "You are unsubscribing" msgstr "" #: ../../static/t/listsub/display.html:37 #, fuzzy msgid "from the" msgstr "pe " #: ../../static/t/listsub/display.html:39 #, fuzzy msgid "mailing list." msgstr "Serviciul de mailing list" #: ../../static/t/listsub/display.html:40 msgid "" "The listserver has sent you an e-mail with one additional Web link for you " "to click on to confirm your unsubscription." msgstr "" #: ../../static/t/listsub/display.html:41 msgid "" "This extra step is for your protection, as it prevents others from being " "able to unsubscribe you from lists without your consent." msgstr "" #: ../../static/t/listsub/display.html:43 msgid "" "Please click on the link which is being e-mailed to you and your " "unsubscription will be confirmed." msgstr "" #: ../../static/t/listsub/display.html:44 #, fuzzy msgid "Back..." msgstr "Înapoi..." #: ../../static/t/listsub/display.html:54 #, fuzzy msgid "Confirmation successful!" msgstr "Cerere de confirmare expediată" #: ../../static/t/listsub/display.html:56 #, fuzzy msgid "Confirmation failed." msgstr "Cerere de confirmare expediată" #: ../../static/t/listsub/display.html:57 msgid "This could mean one of two things:" msgstr "" #: ../../static/t/listsub/display.html:59 msgid "" "You waited too long to confirm your subscribe/unsubscribe request (the " "confirmation link is only valid for three days)" msgstr "" #: ../../static/t/listsub/display.html:60 msgid "" "You have already successfully confirmed your subscribe/unsubscribe " "request and are attempting to do it again." msgstr "" #: ../../static/t/listsub/display.html:62 msgid "The error returned by the server was: " msgstr "" #: ../../static/t/listsub/display.html:70 #, fuzzy msgid "Name of list:" msgstr "Numele sarcinii" #: ../../static/t/listsub/display.html:75 #, fuzzy msgid "Your e-mail address:" msgstr "Adresă e-mail preferată" #: ../../static/t/listsub/display.html:79 msgid "(If subscribing) preferred format: " msgstr "" #: ../../static/t/listsub/display.html:80 #, fuzzy msgid "One message at a time" msgstr "Introdu mesaj text:" #: ../../static/t/listsub/display.html:81 #, fuzzy msgid "Digest format" msgstr "Format oră" #: ../../static/t/listsub/display.html:89 msgid "" "When you attempt to subscribe or unsubscribe to a mailing list, you will " "receive an e-mail containing one additional web link to click on for final " "confirmation." msgstr "" #: ../../static/t/listsub/display.html:90 msgid "" "This extra step is for your protection, as it prevents others from being " "able to subscribe or unsubscribe you to lists." msgstr "" #: ../../static/t/floors_edit_one.html:11 msgid "(delete floor)" msgstr "" #: ../../static/t/floors_edit_one.html:13 msgid "(edit graphic)" msgstr "" #: ../../static/t/floors.html:4 msgid "Add/change/delete floors" msgstr "" #: ../../static/t/floors.html:10 msgid "Floor number" msgstr "" #: ../../static/t/floors.html:11 msgid "Floor name" msgstr "" #: ../../static/t/floors.html:12 msgid "Number of rooms" msgstr "" #: ../../static/t/floors.html:13 msgid "Floor CSS" msgstr "" #: ../../static/t/files.html:4 msgid "Files available for download in" msgstr "" #: ../../static/t/files.html:9 msgid "Upload a file:" msgstr "" #: ../../static/t/files.html:30 msgid "Filename" msgstr "" #: ../../static/t/files.html:31 msgid "Size" msgstr "" #: ../../static/t/files.html:32 msgid "Content" msgstr "" #: ../../static/t/files.html:33 msgid "Description" msgstr "" #: ../../static/t/edit_message.html:9 ../../static/t/iconbar.html:50 #: ../../static/t/iconbar.html:59 msgid "Loading" msgstr "" #: ../../static/t/edit_message.html:23 msgid "from" msgstr "" #: ../../static/t/edit_message.html:29 ../../static/t/edit_message.html:38 msgid "Anonymous" msgstr "" #: ../../static/t/edit_message.html:47 msgid "in" msgstr "" #: ../../static/t/edit_message.html:51 msgid "To:" msgstr "" #: ../../static/t/edit_message.html:57 #: ../../static/t/view_message/print.html:15 #: ../../static/t/view_message.html:15 msgid "CC:" msgstr "" #: ../../static/t/edit_message.html:63 msgid "BCC:" msgstr "" #: ../../static/t/edit_message.html:71 msgid "Subject (optional):" msgstr "" #: ../../static/t/edit_message.html:71 #: ../../static/t/view_message/replyquote.html:8 #: ../../static/t/view_message/print.html:16 #: ../../static/t/view_message.html:16 msgid "Subject:" msgstr "" #: ../../static/t/edit_message.html:86 msgid "--- forwarded message ---" msgstr "" #: ../../static/t/edit_message.html:110 msgid "Post message" msgstr "" #: ../../static/t/edit_message.html:118 msgid "Save to Drafts" msgstr "" #: ../../static/t/edit_message.html:126 #: ../../static/t/edit_message/attachments_pane.html:5 msgid "Attachments:" msgstr "" #: ../../static/t/aide/display_serverrestart_page.html:4 msgid "Message to your Users:" msgstr "" #: ../../static/t/aide/display_generic_result.html:2 msgid "Server command results" msgstr "" #: ../../static/t/aide/display_generic_result.html:18 msgid "Enter another command" msgstr "" #: ../../static/t/aide/display_generic_result.html:19 msgid "Return to menu" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:3 msgid "Site configuration" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:6 #: ../../static/t/aide/edituser/select.html:9 msgid "You need to be aide to view this." msgstr "" #: ../../static/t/aide/display_sitewide_config.html:11 msgid "General" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:12 msgid "Access" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:13 msgid "Network" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:14 msgid "Tuning" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:15 msgid "Directory" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:16 msgid "Auto-purger" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:17 msgid "Indexing/Journaling" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:18 #: ../../static/t/aide/siteconfig/tab_pushmail.html:1 msgid "Push Email" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:19 msgid "Pop3" msgstr "" #: ../../static/t/aide/usermanagement.html:2 msgid "Add, change, delete user accounts" msgstr "" #: ../../static/t/aide/display_inetconf.html:5 #: ../../static/t/aide/display_menu.html:5 msgid "System Administration Menu" msgstr "" #: ../../static/t/aide/display_inetconf.html:6 #: ../../static/t/aide/display_menu.html:6 msgid "Room Admin Menu" msgstr "" #: ../../static/t/aide/display_inetconf.html:13 msgid "Local host aliases" msgstr "" #: ../../static/t/aide/display_inetconf.html:14 msgid "Directory domains" msgstr "" #: ../../static/t/aide/display_inetconf.html:15 msgid "Smart hosts" msgstr "" #: ../../static/t/aide/display_inetconf.html:16 msgid "Fallback smart hosts" msgstr "" #: ../../static/t/aide/display_inetconf.html:17 msgid "Notification hosts" msgstr "" #: ../../static/t/aide/display_inetconf.html:22 msgid "RBL hosts" msgstr "" #: ../../static/t/aide/display_inetconf.html:23 msgid "SpamAssassin hosts" msgstr "" #: ../../static/t/aide/display_inetconf.html:24 msgid "ClamAV clamd hosts" msgstr "" #: ../../static/t/aide/display_inetconf.html:25 msgid "Masqueradable domains" msgstr "" #: ../../static/t/aide/edituser/select.html:5 msgid "Edit or delete users" msgstr "" #: ../../static/t/aide/edituser/select.html:17 msgid "Add users" msgstr "" #: ../../static/t/aide/edituser/select.html:20 msgid "Edit or Delete users" msgstr "" #: ../../static/t/aide/edituser/box_select.html:1 msgid "" "To edit an existing user account, select the user name from the list and " "click 'Edit'." msgstr "" #: ../../static/t/aide/edituser/detailview.html:4 msgid "Edit user account: " msgstr "" #: ../../static/t/aide/edituser/detailview.html:24 #: ../../static/t/room/edit/tab_feed.html:14 msgid "Password" msgstr "" #: ../../static/t/aide/edituser/detailview.html:28 msgid "Permission to send Internet mail" msgstr "" #: ../../static/t/aide/edituser/detailview.html:32 msgid "Number of logins" msgstr "" #: ../../static/t/aide/edituser/detailview.html:36 msgid "Messages submitted" msgstr "" #: ../../static/t/aide/edituser/detailview.html:40 msgid "Access level" msgstr "" #: ../../static/t/aide/edituser/detailview.html:54 msgid "User ID number" msgstr "" #: ../../static/t/aide/edituser/detailview.html:58 msgid "Date and time of last login" msgstr "" #: ../../static/t/aide/edituser/detailview.html:68 msgid "Auto-purge after this many days" msgstr "" #: ../../static/t/aide/edituser/add.html:1 msgid "" "To create a new user account, enter the desired user name in the box below " "and click 'Create'." msgstr "" #: ../../static/t/aide/edituser/add.html:5 msgid "New user: " msgstr "" #: ../../static/t/aide/display_generic_cmd.html:4 msgid "Enter a server command" msgstr "" #: ../../static/t/aide/display_generic_cmd.html:12 msgid "" "This screen allows you to enter Citadel server commands which are not " "supported by WebCit. If you do not know what that means, then this screen " "will not be of much use to you." msgstr "" #: ../../static/t/aide/display_generic_cmd.html:15 msgid "Enter command:" msgstr "" #: ../../static/t/aide/display_generic_cmd.html:17 msgid "Command input (if requesting SEND_LISTING transfer mode):" msgstr "" #: ../../static/t/aide/display_generic_cmd.html:20 msgid "Detected host header is " msgstr "" #: ../../static/t/aide/display_ignetconf.html:4 msgid "Network configuration" msgstr "" #: ../../static/t/aide/display_ignetconf.html:10 #: ../../static/t/aide/ignetconf/edit_node.html:5 #: ../../static/t/aide/ignetconf/add.html:5 msgid "Add a new node" msgstr "" #: ../../static/t/aide/display_ignetconf.html:14 msgid "Currently configured nodes" msgstr "" #: ../../static/t/aide/display_serverrestart.html:26 msgid "Restart Citadel" msgstr "" #: ../../static/t/aide/floorconfig.html:2 msgid "Add, change, or delete floors" msgstr "" #: ../../static/t/aide/serverrestart/box.html:3 msgid "Please wait while the Citadel server is restarted... " msgstr "" #: ../../static/t/aide/serverrestart/box_page_do.html:3 msgid "" "Please wait while your users are being paged, the citadel server will be " "restarted after that... " msgstr "" #: ../../static/t/aide/inet/masqdomains.html:2 msgid "(Domains as which users are allowed to masquerade)" msgstr "" #: ../../static/t/aide/inet/rbldns.html:2 msgid "(hosts running a Realtime Blackhole List)" msgstr "" #: ../../static/t/aide/inet/dirnames.html:2 msgid "(domains mapped with the Global Address Book)" msgstr "" #: ../../static/t/aide/inet/notify.html:2 msgid "(URLS for notifications when users receive new mails; )" msgstr "" #: ../../static/t/aide/inet/notify.html:2 msgid "Syntax: Notificationtemplatename:http[s]://user:password@hostname/path" msgstr "" #: ../../static/t/aide/inet/smarthosts.html:2 msgid "(if present, forward all outbound mail to one of these hosts)" msgstr "" #: ../../static/t/aide/inet/aliases.html:2 msgid "(domains for which this host receives mail)" msgstr "" #: ../../static/t/aide/inet/clamav.html:2 msgid "(hosts running the ClamAV clamd service)" msgstr "" #: ../../static/t/aide/inet/spamass.html:2 msgid "(hosts running the SpamAssassin service)" msgstr "" #: ../../static/t/aide/inet/fallbackhosts.html:2 msgid "(send outbound mail to these hosts only when direct delivery fails)" msgstr "" #: ../../static/t/aide/ignetconf/display_confirm_delete.html:5 msgid "Confirm delete" msgstr "" #: ../../static/t/aide/ignetconf/display_confirm_delete.html:11 msgid "Are you sure you want to delete " msgstr "" #: ../../static/t/aide/ignetconf/display_confirm_delete.html:14 #: ../../static/t/prefs/box.html:198 ../../static/t/iconbar/edit.html:19 #: ../../static/t/iconbar/edit.html:26 ../../static/t/iconbar/edit.html:32 #: ../../static/t/iconbar/edit.html:39 ../../static/t/iconbar/edit.html:45 #: ../../static/t/iconbar/edit.html:52 ../../static/t/iconbar/edit.html:58 #: ../../static/t/iconbar/edit.html:64 ../../static/t/iconbar/edit.html:70 #: ../../static/t/iconbar/edit.html:76 ../../static/t/iconbar/edit.html:82 #: ../../static/t/iconbar/edit.html:88 msgid "Yes" msgstr "" #: ../../static/t/aide/ignetconf/display_confirm_delete.html:16 #: ../../static/t/prefs/box.html:200 ../../static/t/iconbar/edit.html:20 #: ../../static/t/iconbar/edit.html:27 ../../static/t/iconbar/edit.html:33 #: ../../static/t/iconbar/edit.html:40 ../../static/t/iconbar/edit.html:46 #: ../../static/t/iconbar/edit.html:53 ../../static/t/iconbar/edit.html:59 #: ../../static/t/iconbar/edit.html:65 ../../static/t/iconbar/edit.html:71 #: ../../static/t/iconbar/edit.html:77 ../../static/t/iconbar/edit.html:83 #: ../../static/t/iconbar/edit.html:89 msgid "No" msgstr "" #: ../../static/t/aide/ignetconf/edit_node.html:15 #: ../../static/t/aide/ignetconf/add.html:15 #: ../../static/t/aide/siteconfig/tab_general.html:8 msgid "Node name" msgstr "" #: ../../static/t/aide/ignetconf/edit_node.html:17 #: ../../static/t/aide/ignetconf/add.html:17 msgid "Shared secret" msgstr "" #: ../../static/t/aide/ignetconf/edit_node.html:19 #: ../../static/t/aide/ignetconf/add.html:19 msgid "Host or IP address" msgstr "" #: ../../static/t/aide/ignetconf/edit_node.html:21 #: ../../static/t/aide/ignetconf/add.html:21 msgid "Port number" msgstr "" #: ../../static/t/aide/ignetconf/section.html:4 msgid "(Edit)" msgstr "" #: ../../static/t/aide/display_menu.html:12 msgid "Global Configuration" msgstr "" #: ../../static/t/aide/display_menu.html:14 msgid "User account management" msgstr "" #: ../../static/t/aide/display_menu.html:16 msgid "Shutdown Citadel" msgstr "" #: ../../static/t/aide/display_menu.html:18 msgid "Rooms and Floors" msgstr "" #: ../../static/t/aide/global_config.html:2 msgid "Edit site-wide configuration" msgstr "" #: ../../static/t/aide/global_config.html:3 msgid "Domain names and Internet mail configuration" msgstr "" #: ../../static/t/aide/global_config.html:4 msgid "Configure replication with other Citadel servers" msgstr "" #: ../../static/t/aide/global_config.html:5 #: ../../static/t/view_mailq/header.html:3 msgid "View the outbound SMTP queue" msgstr "Vezi lista de plecare SMTP" #: ../../static/t/aide/restart.html:2 msgid "Restart Now" msgstr "" #: ../../static/t/aide/restart.html:3 msgid "Restart after paging users" msgstr "" #: ../../static/t/aide/restart.html:4 msgid "Restart when all users are idle" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:1 msgid "General site configuration items" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:5 msgid "Change Login Logo" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:6 msgid "Change Logout Logo" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:11 msgid "Fully qualified domain name" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:14 msgid "Human-readable node name" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:17 msgid "Telephone number" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:20 msgid "Paginator prompt (for text mode clients)" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:23 msgid "Geographic location of this system" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:26 msgid "Name of system administrator" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:29 msgid "Default timezone for unzoned calendar items" msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:1 msgid "Configure automatic expiry of old messages" msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:2 msgid "These settings may be overridden on a per-floor or per-room basis." msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:6 msgid "Hour to run database auto-purge" msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:66 msgid "Default message expire policy for public rooms" msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:68 #: ../../static/t/aide/siteconfig/tab_autopurger.html:86 #: ../../static/t/room/edit/tab_expire.html:17 #: ../../static/t/room/edit/tab_expire.html:45 msgid "Never automatically expire messages" msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:71 #: ../../static/t/aide/siteconfig/tab_autopurger.html:89 #: ../../static/t/room/edit/tab_expire.html:20 #: ../../static/t/room/edit/tab_expire.html:48 msgid "Expire by message count" msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:73 #: ../../static/t/aide/siteconfig/tab_autopurger.html:92 #: ../../static/t/room/edit/tab_expire.html:23 #: ../../static/t/room/edit/tab_expire.html:51 msgid "Expire by message age" msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:75 #: ../../static/t/aide/siteconfig/tab_autopurger.html:94 #: ../../static/t/room/edit/tab_expire.html:25 #: ../../static/t/room/edit/tab_expire.html:53 msgid "Number of messages or days: " msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:81 msgid "Default message expire policy for private mailboxes" msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:83 msgid "Same policy as public rooms" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:1 msgid "Network services" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:2 #: ../../static/t/aide/siteconfig/tab_directory.html:3 msgid "" "Changes made on this screen will not take effect until you restart the " "Citadel server." msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:6 msgid "SMTP MTA port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:9 msgid "Correct forged From: lines during authenticated SMTP" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:12 msgid "Flag message as spam, instead of rejecting it" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:15 msgid "IMAP listener port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:19 msgid "Network run frequency (in seconds)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:22 msgid "Server IP address (0.0.0.0 for 'any')" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:25 msgid "SMTP MSA port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:28 msgid "IMAP over SSL port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:31 msgid "SMTP over SSL port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:34 msgid "Instantly expunge deleted messages in IMAP" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:38 msgid "Allow unauthenticated SMTP clients to spoof this sites domains" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:41 msgid "Postfix TCP Dictionary Port" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:41 msgid "-1 to disable" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:44 msgid "ManageSieve Port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:47 msgid "Perform RBL checks upon connect instead of after RCPT" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:50 msgid "Keep original from headers in IMAP" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:53 msgid "XMPP (Jabber) client to server port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:56 msgid "XMPP (Jabber) server to server port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_pop3.html:1 msgid "POP3" msgstr "" #: ../../static/t/aide/siteconfig/tab_pop3.html:6 msgid "POP3 listener port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_pop3.html:9 msgid "POP3 over SSL port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_pop3.html:12 msgid "POP3 fetch frequency in seconds" msgstr "" #: ../../static/t/aide/siteconfig/tab_pop3.html:15 msgid "POP3 fastest fetch frequency in seconds" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:1 msgid "Advanced server fine-tuning controls" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:5 msgid "Server connection idle timeout (in seconds)" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:8 msgid "Maximum concurrent sessions (0 = no limit)" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:11 msgid "Default user purge time (days)" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:14 msgid "Default room purge time (days)" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:17 msgid "Maximum message length" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:20 msgid "Minimum number of worker threads" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:23 msgid "Maximum number of worker threads" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:26 msgid "Automatically delete committed database logs" msgstr "" #: ../../static/t/aide/siteconfig/tab_pushmail.html:5 msgid "Funambol server host (blank to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_pushmail.html:8 msgid "Funambol server port " msgstr "" #: ../../static/t/aide/siteconfig/tab_pushmail.html:11 msgid "Funambol sync source" msgstr "" #: ../../static/t/aide/siteconfig/tab_pushmail.html:14 msgid "Funambol auth details (user:pass)" msgstr "" #: ../../static/t/aide/siteconfig/tab_pushmail.html:17 msgid "External pager tool (blank to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:1 msgid "Access controls and site policy settings" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:5 msgid "Allow aides to zap (forget) rooms" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:9 msgid "Quarantine messages from problem users" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:12 msgid "Name of quarantine room" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:17 msgid "Name of room to log pages" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:22 msgid "Authentication mode" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:24 msgid "Self contained" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:25 msgid "Host based" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:26 msgid "LDAP (RFC2307)" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:27 msgid "LDAP (Active Directory)" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:30 msgid "Master user name (blank to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:33 msgid "Master user password" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:38 msgid "Initial access level for new users" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:49 msgid "Access level required to create rooms" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:60 msgid "Automatically grant room-aide status to users who create private rooms" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:63 msgid "Automatically grant room-aide status to users who create BLOG rooms" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:66 msgid "Restrict access to Internet mail" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:71 msgid "Disable self-service user account creation" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:71 msgid "Hint: do not select both!" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:74 msgid "Require registration for new users" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:77 msgid "Allow anonymous guest access" msgstr "" #: ../../static/t/aide/siteconfig/tab_indexing.html:1 msgid "Indexing and Journaling" msgstr "" #: ../../static/t/aide/siteconfig/tab_indexing.html:2 msgid "Warning: these facilities are resource intensive." msgstr "" #: ../../static/t/aide/siteconfig/tab_indexing.html:6 msgid "Enable full text index" msgstr "" #: ../../static/t/aide/siteconfig/tab_indexing.html:9 msgid "Perform journaling of email messages" msgstr "" #: ../../static/t/aide/siteconfig/tab_indexing.html:13 msgid "Perform journaling of non-email messages" msgstr "" #: ../../static/t/aide/siteconfig/tab_indexing.html:16 msgid "Email destination of journalized messages" msgstr "" #: ../../static/t/aide/siteconfig/tab_directory.html:1 msgid "Configure the LDAP connector for Citadel" msgstr "" #: ../../static/t/aide/siteconfig/tab_directory.html:4 msgid "" "NOTE: This Citadel server has been built without LDAP support. These " "options will have no effect." msgstr "" #: ../../static/t/aide/siteconfig/tab_directory.html:9 msgid "Host name of LDAP server (blank to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_directory.html:13 msgid "Port number of LDAP server (blank to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_directory.html:16 msgid "Base DN" msgstr "" #: ../../static/t/aide/siteconfig/tab_directory.html:19 msgid "Bind DN" msgstr "" #: ../../static/t/aide/siteconfig/tab_directory.html:22 msgid "Password for bind DN" msgstr "" #: ../../static/t/iconbar.html:7 msgid "Language:" msgstr "" #: ../../static/t/iconbar.html:19 msgid "Mail" msgstr "" #: ../../static/t/iconbar.html:39 ../../static/t/iconbar/edit.html:61 #: ../../static/t/summary/page.html:30 msgid "Tasks" msgstr "Sarcini" #: ../../static/t/iconbar.html:48 ../../static/t/iconbar/edit.html:67 msgid "Rooms" msgstr "" #: ../../static/t/iconbar.html:57 msgid "Online users" msgstr "" #: ../../static/t/iconbar.html:62 ../../static/t/iconbar/edit.html:79 msgid "Chat" msgstr "" #: ../../static/t/iconbar.html:65 msgid "Advanced" msgstr "" #: ../../static/t/iconbar.html:72 ../../static/t/room/edit/editroom.html:4 #: ../../static/t/room/edit.html:5 msgid "Administration" msgstr "" #: ../../static/t/iconbar.html:83 msgid "customize this menu" msgstr "" #: ../../static/t/iconbar.html:92 msgid "switch to room list" msgstr "" #: ../../static/t/iconbar.html:93 msgid "switch to menu" msgstr "" #: ../../static/t/iconbar.html:94 msgid "My folders" msgstr "" #: ../../static/t/view_message/list_attach.html:3 #: ../../static/t/view_message/inline_attach.html:4 msgid "View" msgstr "" #: ../../static/t/view_message/list_attach.html:4 #: ../../static/t/view_message/inline_attach.html:5 msgid "Download" msgstr "" #: ../../static/t/view_message/print.html:14 #: ../../static/t/view_message.html:14 msgid "to" msgstr "" #: ../../static/t/openid_manual_create.html:2 msgid "Your OpenID" msgstr "" #: ../../static/t/openid_manual_create.html:2 msgid "was successfully verified." msgstr "" #: ../../static/t/openid_manual_create.html:3 msgid "However, the user name" msgstr "" #: ../../static/t/openid_manual_create.html:3 msgid "conflicts with an existing user." msgstr "" #: ../../static/t/openid_manual_create.html:5 msgid "Please specify the user name you would like to use." msgstr "" #: ../../static/t/files/graphicsupload.html:2 msgid "Image upload" msgstr "Trimite foto" #: ../../static/t/files/graphicsupload.html:6 msgid "You can upload an image directly from your computer" msgstr "Poţi trimite o fotografie direct din computerul tău" #: ../../static/t/files/graphicsupload.html:8 msgid "Please select a file to upload:" msgstr "Alege o fotografie pentru trimitere:" #: ../../static/t/files/section_onefile.html:20 msgid "Slideshow" msgstr "" #: ../../static/t/roombanner.html:10 ../../static/t/roombanner.html:11 msgid "new of" msgstr "" #: ../../static/t/roombanner.html:10 ../../static/t/roombanner.html:11 #: ../../static/t/msg_listselector_bottom.html:7 #: ../../static/t/msg_listselector_top.html:7 msgid "messages" msgstr "mesaje" #: ../../static/t/roombanner.html:28 msgid "Select page: " msgstr "" #: ../../static/t/who.html:13 msgid "Users currently on " msgstr "" #: ../../static/t/who.html:22 msgid "Click on a name to read user info. Click on" msgstr "" #: ../../static/t/who.html:24 msgid "to send an instant message to that user." msgstr "" #: ../../static/t/msg_listselector_bottom.html:2 #: ../../static/t/msg_listselector_top.html:2 msgid "Reading #" msgstr "Se citește #" #: ../../static/t/msg_listselector_bottom.html:12 #: ../../static/t/msg_listselector_top.html:12 msgid "oldest to newest" msgstr "de la vechi la noi" #: ../../static/t/msg_listselector_bottom.html:20 #: ../../static/t/msg_listselector_top.html:20 msgid "newest to oldest" msgstr "de la noi la vechi" #: ../../static/t/newstartpage.html:4 msgid "New start page" msgstr "" #: ../../static/t/newstartpage.html:9 msgid "Your start page has been changed." msgstr "" #: ../../static/t/newstartpage.html:12 msgid "" "(Note: this does not change your browser's home page. It changes the page " "you begin on when you log on to" msgstr "" #: ../../static/t/no_new_msgs.html:3 msgid "No new messages." msgstr "" #: ../../static/t/view_blog/comment_box.html:8 msgid "Post a comment" msgstr "" #: ../../static/t/prefs/pushemail.html:2 msgid "Configure Push Email" msgstr "" #: ../../static/t/prefs/pushemail.html:9 msgid "Push email and SMS settings" msgstr "" #: ../../static/t/prefs/pushemail.html:17 msgid "" "If your administrator has enabled the functionality, Citadel can notify a " "Funambol server that you haved recieved new email and automatically " "syncronize any devices you have with the Funambol client installed." msgstr "" #: ../../static/t/prefs/pushemail.html:20 msgid "" "Alternatively, if the administrator has configured it, Citadel can send a " "text message to you when new mail arrives." msgstr "" #: ../../static/t/prefs/pushemail.html:26 msgid "Notify Funambol server" msgstr "" #: ../../static/t/prefs/pushemail.html:31 msgid "Send a text message to..." msgstr "" #: ../../static/t/prefs/pushemail.html:33 msgid "" "(Use international format, without any leading zeros, spaces or hypens, like " "+61415011501)" msgstr "" #: ../../static/t/prefs/pushemail.html:38 msgid "Use custom notification scheme configured by your Admin" msgstr "" #: ../../static/t/prefs/pushemail.html:43 msgid "Don‘t send any notifications" msgstr "" #: ../../static/t/prefs/box.html:9 msgid "Tree (folders) view" msgstr "" #: ../../static/t/prefs/box.html:11 msgid "Table (rooms) view" msgstr "" #: ../../static/t/prefs/box.html:20 msgid "12 hour (am/pm)" msgstr "" #: ../../static/t/prefs/box.html:25 msgid "24 hour" msgstr "" #: ../../static/t/prefs/box.html:152 msgid "Sunday" msgstr "" #: ../../static/t/prefs/box.html:153 msgid "Monday" msgstr "" #: ../../static/t/prefs/box.html:174 msgid "No signature" msgstr "" #: ../../static/t/prefs/box.html:238 msgid "Full-functionality" msgstr "" #: ../../static/t/prefs/box.html:241 msgid "Safe mode" msgstr "" #: ../../static/t/prefs/box.html:242 msgid "" "Safe mode is less intensive on your web browser, but not as fully featured." msgstr "" #: ../../static/t/wiki/pagelist.html:1 msgid "List of Wiki pages" msgstr "" #: ../../static/t/wiki/history.html:1 msgid "History of edits for this page" msgstr "" #: ../../static/t/who/list_static_header.html:1 msgid "Users currently on" msgstr "" #: ../../static/t/who/section.html:4 msgid "(kill)" msgstr "" #: ../../static/t/who/bio.html:4 ../../static/t/user/show.html:4 msgid "User profile" msgstr "Profil utilizator" #: ../../static/t/who/summary.html:5 ../../static/t/who/box_list_static.html:6 #: ../../static/t/room/edit/tab_feed.html:13 msgid "User name" msgstr "" #: ../../static/t/who/summary.html:6 ../../static/t/who/box_list_static.html:7 msgid "Room" msgstr "" #: ../../static/t/who/box_list_static.html:8 msgid "From host" msgstr "" #: ../../static/t/view_message.html:19 msgid "Edit" msgstr "" #: ../../static/t/view_message.html:22 ../../static/t/view_message.html:26 msgid "Reply" msgstr "" #: ../../static/t/view_message.html:23 msgid "ReplyQuoted" msgstr "" #: ../../static/t/view_message.html:27 msgid "ReplyAll" msgstr "" #: ../../static/t/view_message.html:28 msgid "Forward" msgstr "" #: ../../static/t/view_message.html:31 ../../static/t/msg_listview.html:25 msgid "Move" msgstr "Mută" #: ../../static/t/view_message.html:34 msgid "Headers" msgstr "" #: ../../static/t/view_message.html:35 ../../static/t/msg_listview.html:28 msgid "Print" msgstr "" #: ../../static/t/preferences.html:4 ../../static/t/preferences.html:7 msgid "Preferences and settings" msgstr "" #: ../../static/t/user/list.html:3 msgid "User list for " msgstr "" #: ../../static/t/user/list.html:9 msgid "User Name" msgstr "Nume utilizator" #: ../../static/t/user/list.html:10 msgid "Number" msgstr "Număr" #: ../../static/t/user/list.html:11 msgid "Access Level" msgstr "Nivel de acces" #: ../../static/t/user/list.html:12 msgid "Last Login" msgstr "Ultima conectare" #: ../../static/t/user/list.html:13 msgid "Total Logins" msgstr "Număr de conectări" #: ../../static/t/user/list.html:14 msgid "Total Posts" msgstr "Număr de postări" #: ../../static/t/user/show.html:9 msgid "Click here to send an instant message to" msgstr "" #: ../../static/t/start_of_new_msgs.html:4 msgid "Old messages" msgstr "" #: ../../static/t/start_of_new_msgs.html:8 msgid "New messages" msgstr "" #: ../../static/t/display_main_menu.html:7 msgid "Basic commands" msgstr "" #: ../../static/t/display_main_menu.html:10 msgid "Your info" msgstr "" #: ../../static/t/display_main_menu.html:12 msgid "Advanced room commands" msgstr "" #: ../../static/t/iconbar/save.html:4 ../../static/t/iconbar/edit.html:4 msgid "Customize the icon bar" msgstr "" #: ../../static/t/iconbar/save.html:11 msgid "" "Your icon bar has been updated. Please select any of its choices to continue." msgstr "" #: ../../static/t/iconbar/save.html:11 msgid "" "You may need to force refresh (SHIFT-F5)> in order for changes to take effect" msgstr "" #: ../../static/t/iconbar/edit.html:11 msgid "Display icons as:" msgstr "" #: ../../static/t/iconbar/edit.html:12 msgid "pictures and text" msgstr "" #: ../../static/t/iconbar/edit.html:13 msgid "pictures only" msgstr "" #: ../../static/t/iconbar/edit.html:14 msgid "text only" msgstr "" #: ../../static/t/iconbar/edit.html:16 msgid "" "Select the icons you would like to see displayed in the 'icon bar' menu on " "the left side of the screen." msgstr "" #: ../../static/t/iconbar/edit.html:23 msgid "Site logo" msgstr "" #: ../../static/t/iconbar/edit.html:23 msgid "An icon describing this site" msgstr "" #: ../../static/t/iconbar/edit.html:29 msgid "Your summary page" msgstr "" #: ../../static/t/iconbar/edit.html:36 msgid "Mail (inbox)" msgstr "" #: ../../static/t/iconbar/edit.html:36 msgid "A shortcut to your email Inbox" msgstr "" #: ../../static/t/iconbar/edit.html:42 msgid "Your personal address book" msgstr "" #: ../../static/t/iconbar/edit.html:49 msgid "Your personal notes" msgstr "" #: ../../static/t/iconbar/edit.html:55 msgid "A shortcut to your personal calendar" msgstr "" #: ../../static/t/iconbar/edit.html:61 msgid "A shortcut to your personal task list" msgstr "" #: ../../static/t/iconbar/edit.html:67 msgid "" "Clicking this icon displays a list of all accessible rooms (or folders) " "available." msgstr "" #: ../../static/t/iconbar/edit.html:73 msgid "Who is online?" msgstr "" #: ../../static/t/iconbar/edit.html:73 msgid "Clicking this icon displays a list of all users currently logged in." msgstr "" #: ../../static/t/iconbar/edit.html:79 msgid "" "Clicking this icon enters real-time chat mode with other users in the same " "room." msgstr "" #: ../../static/t/iconbar/edit.html:85 msgid "Advanced options" msgstr "" #: ../../static/t/iconbar/edit.html:85 msgid "Access to the complete menu of Citadel functions." msgstr "" #: ../../static/t/iconbar/edit.html:91 msgid "Citadel logo" msgstr "" #: ../../static/t/iconbar/edit.html:91 msgid "Displays the 'Powered by Citadel' icon" msgstr "" #: ../../static/t/room/edit/tab_expire.html:8 msgid "Message expire policy for this room" msgstr "" #: ../../static/t/room/edit/tab_expire.html:14 msgid "Use the default policy for this floor" msgstr "" #: ../../static/t/room/edit/tab_expire.html:36 msgid "Message expire policy for this floor" msgstr "" #: ../../static/t/room/edit/tab_expire.html:42 msgid "Use the system default" msgstr "" #: ../../static/t/room/edit/editroom.html:5 ../../static/t/room/edit.html:6 msgid "Configuration" msgstr "" #: ../../static/t/room/edit/editroom.html:6 ../../static/t/room/edit.html:7 msgid "Message expire policy" msgstr "Politica de expirare a mesajelor" #: ../../static/t/room/edit/editroom.html:7 ../../static/t/room/edit.html:8 msgid "Access controls" msgstr "" #: ../../static/t/room/edit/editroom.html:8 ../../static/t/room/edit.html:9 msgid "Sharing" msgstr "" #: ../../static/t/room/edit/editroom.html:9 ../../static/t/room/edit.html:10 msgid "Mailing list service" msgstr "Serviciul de mailing list" #: ../../static/t/room/edit/editroom.html:10 ../../static/t/room/edit.html:11 msgid "Remote retrieval" msgstr "Aducere de la distanță" #: ../../static/t/room/edit/tab_config.html:6 msgid "name of room: " msgstr "" #: ../../static/t/room/edit/tab_config.html:10 #: ../../static/t/room/create.html:20 msgid "Resides on floor: " msgstr "" #: ../../static/t/room/edit/tab_config.html:16 #: ../../static/t/room/create.html:68 msgid "Type of room:" msgstr "Tipul camerei:" #: ../../static/t/room/edit/tab_config.html:22 #: ../../static/t/room/create.html:73 msgid "Public (automatically appears to everyone)" msgstr "Publică (este automat vizibilă tuturor)" #: ../../static/t/room/edit/tab_config.html:28 #: ../../static/t/room/create.html:77 msgid "Private - hidden (accessible to anyone who knows its name)" msgstr "Privată - ascunsă (accesibilă oricui îi cunoaște numele)" #: ../../static/t/room/edit/tab_config.html:35 #: ../../static/t/room/create.html:81 msgid "Private - require password: " msgstr "Privată - necesită parolă: " #: ../../static/t/room/edit/tab_config.html:44 #: ../../static/t/room/create.html:86 msgid "Private - invitation only" msgstr "Privată - doar pe bază de invitație" #: ../../static/t/room/edit/tab_config.html:51 #: ../../static/t/room/create.html:90 msgid "Personal (mailbox for you only)" msgstr "Personală (cutie poștală doar pentru dumneavoiastră)" #: ../../static/t/room/edit/tab_config.html:55 msgid "If private, cause current users to forget room" msgstr "" #: ../../static/t/room/edit/tab_config.html:61 msgid "Preferred users only" msgstr "" #: ../../static/t/room/edit/tab_config.html:66 msgid "Read-only room" msgstr "" #: ../../static/t/room/edit/tab_config.html:71 msgid "All users allowed to post may also delete messages" msgstr "" #: ../../static/t/room/edit/tab_config.html:76 msgid "File directory room" msgstr "Cameră director de fișiere" #: ../../static/t/room/edit/tab_config.html:80 msgid "Directory name: " msgstr "Numele direcorului: " #: ../../static/t/room/edit/tab_config.html:86 msgid "Uploading allowed" msgstr "Încărcare permisă" #: ../../static/t/room/edit/tab_config.html:91 msgid "Downloading allowed" msgstr "Descărcare permisă" #: ../../static/t/room/edit/tab_config.html:96 msgid "Visible directory" msgstr "Director vizibil" #: ../../static/t/room/edit/tab_config.html:103 msgid "Network shared room" msgstr "Cameră partajată în rețea" #: ../../static/t/room/edit/tab_config.html:108 msgid "Permanent (does not auto-purge)" msgstr "Permanentă (nu se auto-curăță)" #: ../../static/t/room/edit/tab_config.html:113 msgid "Subject Required (Force users to specify a message subject)" msgstr "" "Se solicită subiect (utilizatorii sunt obligați să specifice un subiect al " "mesajului)" #: ../../static/t/room/edit/tab_config.html:116 msgid "Anonymous messages" msgstr "Mesaje anonime" #: ../../static/t/room/edit/tab_config.html:122 msgid "No anonymous messages" msgstr "Fără mesaje anonime" #: ../../static/t/room/edit/tab_config.html:127 msgid "All messages are anonymous" msgstr "toate mesajele sunt anonime" #: ../../static/t/room/edit/tab_config.html:132 msgid "Prompt user when entering messages" msgstr "Se întreabă utilizatorul la introducerea mesajelor" #: ../../static/t/room/edit/tab_config.html:136 msgid "Room aide: " msgstr "Admin-ul camerei: " #: ../../static/t/room/edit/tab_listserv.html:5 msgid "" "The contents of this room are being mailed as individual messages " "to the following list recipients:

    " msgstr "" #: ../../static/t/room/edit/tab_listserv.html:19 msgid "" "The contents of this room are being mailed in digest form to the " "following list recipients:

    " msgstr "" "Conținutul acestei camere este expediat sub formă de rezumat " "următoarei liste de destinatari:

    " #: ../../static/t/room/edit/tab_listserv.html:39 msgid "Add recipients from Contacts or other address books" msgstr "Adăugați destinatari din Contacte sau din alte liste de adrese" #: ../../static/t/room/edit/tab_listserv.html:48 msgid "Allow non-subscribers to mail to this room." msgstr "" #: ../../static/t/room/edit/tab_listserv.html:54 msgid "Room post publication needs Admin permission." msgstr "" #: ../../static/t/room/edit/tab_listserv.html:59 msgid "Allow self-service subscribe/unsubscribe requests." msgstr "" #: ../../static/t/room/edit/tab_listserv.html:65 msgid "The URL for subscribe/unsubscribe is: " msgstr "" #: ../../static/t/room/edit/digestrecp_removal.html:1 #: ../../static/t/room/edit/pop3client_removal.html:9 #: ../../static/t/room/edit/listrecp_removal.html:1 #: ../../static/t/room/edit/rssclient_removal.html:5 msgid "(remove)" msgstr "" #: ../../static/t/room/edit/tab_admin.html:5 msgid "Delete this room" msgstr "" #: ../../static/t/room/edit/tab_admin.html:10 msgid "Set or change the icon for this rooms banner" msgstr "" #: ../../static/t/room/edit/tab_admin.html:14 msgid "Edit this rooms Info file" msgstr "" #: ../../static/t/room/edit/tab_share.html:5 msgid "Shared with" msgstr "" #: ../../static/t/room/edit/tab_share.html:6 msgid "Not shared with" msgstr "" #: ../../static/t/room/edit/tab_share.html:11 #: ../../static/t/room/edit/tab_share.html:21 msgid "Remote node name" msgstr "" #: ../../static/t/room/edit/tab_share.html:12 #: ../../static/t/room/edit/tab_share.html:22 msgid "Remote room name" msgstr "" #: ../../static/t/room/edit/tab_share.html:13 #: ../../static/t/room/edit/tab_share.html:23 msgid "Actions" msgstr "" #: ../../static/t/room/edit/tab_share.html:35 msgid "" "When sharing a room, it must be shared from both ends. Adding a node to the " "'shared' list sends messages out, but in order to receive messages, the " "other nodes must be configured to send messages out to your system as well. " "
  • If the remote room name is blank, it is assumed that the room name is " "identical on the remote node.
  • If the remote room name is different, the " "remote node must also configure the name of the room here." msgstr "" #: ../../static/t/room/edit/tab_feed.html:2 msgid "" "Retrieve messages from these remote POP3 accounts and store them in this " "room:" msgstr "" "Se obțin mesaje de la aceste conturi POP3 de la distanță și se stochează în " "această cameră:" #: ../../static/t/room/edit/tab_feed.html:12 msgid "Remote host" msgstr "Hostul de la distanță" #: ../../static/t/room/edit/tab_feed.html:15 msgid "Keep messages on server?" msgstr "Păstrați mesajele pe server?" #: ../../static/t/room/edit/tab_feed.html:16 msgid "Interval" msgstr "" #: ../../static/t/room/edit/tab_feed.html:31 msgid "Fetch the following RSS feeds and store them in this room:" msgstr "Se obțin următoarele feeduri RSS și se stochează în această cameră:" #: ../../static/t/room/edit/tab_feed.html:43 msgid "Feed URL" msgstr "" #: ../../static/t/room/edit/tab_access.html:5 msgid "" "The users listed below have access to this room. To remove a user from the " "access list, select the user name from the list and click 'Kick'." msgstr "" #: ../../static/t/room/edit/tab_access.html:20 msgid "" "To grant another user access to this room, enter the user name in the box " "below and click 'Invite'." msgstr "" #: ../../static/t/room/edit/tab_access.html:26 msgid "Invite:" msgstr "" #: ../../static/t/room/edit/tab_access.html:35 msgid "Users" msgstr "" #: ../../static/t/room/zapped_list.html:7 msgid "Zapped (forgotten) rooms" msgstr "Camere părăsite (uitate)" #: ../../static/t/room/zapped_list.html:10 msgid "Click on any room to un-zap it and goto that room." msgstr "" #: ../../static/t/room/display_private.html:7 msgid "Go to a hidden room" msgstr "Mergeți într-o cameră ascunsă" #: ../../static/t/room/display_private.html:8 msgid "" "If you know the name of a hidden (guess-name) or passworded room, you can " "enter that room by typing its name below. Once you gain access to a private " "room, it will appear in your regular room listings so you don‘t have to keep " "returning here." msgstr "" "Dacă știți (sau ghiciți) numele unei camere ascunse sau parolate, puteți " "intra în acea cameră scriindu-i numele mai jos. Odată ce căpătați acces la o " "cameră privată , aceasta va apărea în lista dumneavoastră obișnuită de " "camere, așa că nu va trebui să continuați să reveniți aici." #: ../../static/t/room/display_private.html:14 msgid "Enter room name:" msgstr "Introduceți numele camerei:" #: ../../static/t/room/display_private.html:21 msgid "Enter room password:" msgstr "introduceți parola camerei:" #: ../../static/t/room/create.html:11 #: ../../static/t/menu/advanced_roomcommands.html:6 msgid "Create a new room" msgstr "Creați o nouă cameră" #: ../../static/t/room/create.html:18 msgid "Name of room: " msgstr "Numele camerei: " #: ../../static/t/room/create.html:32 msgid "Default view for room: " msgstr "Vederea implicită pentru cameră: " #: ../../static/t/room/zap_this.html:3 msgid "Zap (forget/unsubscribe) the current room" msgstr "" #: ../../static/t/room/zap_this.html:6 msgid "If you select this option," msgstr "Dacă selectați această opțiune," #: ../../static/t/room/zap_this.html:8 msgid "will disappear from your room list. Is this what you wish to do?" msgstr "" "va dispărea din lista dumneavoastră de camere. Asta este ceea ce doriți să " "faceți?" #: ../../static/t/menu/your_info.html:2 msgid "Change your preferences and settings" msgstr "" #: ../../static/t/menu/your_info.html:3 msgid "Update your contact information" msgstr "" #: ../../static/t/menu/your_info.html:5 msgid "Enter your 'bio'" msgstr "" #: ../../static/t/menu/your_info.html:6 msgid "Edit your online photo" msgstr "" #: ../../static/t/menu/your_info.html:8 msgid "Edit your push email settings" msgstr "" #: ../../static/t/menu/your_info.html:9 msgid "Manage your OpenIDs" msgstr "" #: ../../static/t/menu/basic_commands.html:3 msgid "List known rooms" msgstr "" #: ../../static/t/menu/basic_commands.html:3 msgid "Where can I go from here?" msgstr "" #: ../../static/t/menu/basic_commands.html:4 ../../static/t/navbar.html:168 msgid "Goto next room" msgstr "" #: ../../static/t/menu/basic_commands.html:4 msgid "...with unread messages" msgstr "" #: ../../static/t/menu/basic_commands.html:5 msgid "Skip to next room" msgstr "" #: ../../static/t/menu/basic_commands.html:5 msgid "(come back here later)" msgstr "" #: ../../static/t/menu/basic_commands.html:6 ../../static/t/navbar.html:5 msgid "Ungoto" msgstr "" #: ../../static/t/menu/basic_commands.html:6 msgid "oops! Back to " msgstr "" #: ../../static/t/menu/basic_commands.html:10 ../../static/t/navbar.html:13 msgid "Read new messages" msgstr "" #: ../../static/t/menu/basic_commands.html:10 msgid "...in this room" msgstr "" #: ../../static/t/menu/basic_commands.html:11 ../../static/t/navbar.html:19 msgid "Read all messages" msgstr "" #: ../../static/t/menu/basic_commands.html:11 msgid "...old and new" msgstr "" #: ../../static/t/menu/basic_commands.html:12 ../../static/t/navbar.html:25 msgid "Enter a message" msgstr "" #: ../../static/t/menu/basic_commands.html:12 msgid "(post in this room)" msgstr "" #: ../../static/t/menu/basic_commands.html:13 msgid "File library" msgstr "" #: ../../static/t/menu/basic_commands.html:13 msgid "(List files available for download)" msgstr "" #: ../../static/t/menu/basic_commands.html:17 msgid "Summary page" msgstr "" #: ../../static/t/menu/basic_commands.html:17 msgid "Summary of my account" msgstr "" #: ../../static/t/menu/basic_commands.html:18 msgid "User list" msgstr "" #: ../../static/t/menu/basic_commands.html:18 msgid "(all registered users)" msgstr "" #: ../../static/t/menu/basic_commands.html:19 msgid "Bye!" msgstr "" #: ../../static/t/menu/advanced_roomcommands.html:3 msgid "Edit or delete this room" msgstr "" #: ../../static/t/menu/advanced_roomcommands.html:5 msgid "Go to a 'hidden' room" msgstr "" #: ../../static/t/menu/advanced_roomcommands.html:7 msgid "Zap (forget) this room" msgstr "" #: ../../static/t/menu/advanced_roomcommands.html:8 msgid "List all forgotten rooms" msgstr "" #: ../../static/t/navbar.html:34 msgid "View contacts" msgstr "" #: ../../static/t/navbar.html:40 msgid "Add new contact" msgstr "" #: ../../static/t/navbar.html:49 msgid "Day view" msgstr "" #: ../../static/t/navbar.html:55 msgid "Month view" msgstr "" #: ../../static/t/navbar.html:61 msgid "Add new event" msgstr "" #: ../../static/t/navbar.html:70 msgid "Calendar list" msgstr "" #: ../../static/t/navbar.html:79 msgid "View tasks" msgstr "" #: ../../static/t/navbar.html:85 msgid "Add new task" msgstr "" #: ../../static/t/navbar.html:94 msgid "View notes" msgstr "" #: ../../static/t/navbar.html:101 msgid "Add new note" msgstr "" #: ../../static/t/navbar.html:110 msgid "Refresh message list" msgstr "" #: ../../static/t/navbar.html:122 msgid "Write mail" msgstr "" #: ../../static/t/navbar.html:132 msgid "Wiki home" msgstr "" #: ../../static/t/navbar.html:139 msgid "Edit this page" msgstr "" #: ../../static/t/navbar.html:145 msgid "History" msgstr "" #: ../../static/t/navbar.html:154 msgid "New blog post" msgstr "" #: ../../static/t/navbar.html:162 msgid "Skip this room" msgstr "" #: ../../static/t/msg_listview.html:18 msgid "Loading messages from server, please wait" msgstr "" #: ../../static/t/msg_listview.html:24 msgid "Open in new window" msgstr "" #: ../../static/t/msg_listview.html:26 msgid "Copy" msgstr "" #: ../../static/t/view_mailq/message.html:6 msgid "Originaly posted in: " msgstr "" #: ../../static/t/view_mailq/header.html:15 msgid "Refresh this page" msgstr "Actualizează această pagină" #: ../../static/t/view_mailq/header.html:21 msgid "Message ID" msgstr "ID mesaj" #: ../../static/t/view_mailq/header.html:23 msgid "Date/time submitted" msgstr "Data şi ora transmiterii" #: ../../static/t/view_mailq/header.html:25 #, fuzzy msgid "Next attempt" msgstr "Ultima încercare" #: ../../static/t/view_mailq/header.html:29 msgid "Recipients" msgstr "Destinatari" #: ../../static/t/view_mailq/footer_empty.html:4 msgid "The queue is empty." msgstr "Lista de aşteptare e goală." #: ../../static/t/view_mailq/footer_empty.html:9 #: ../../static/t/view_mailq/footer.html:5 msgid "You do not have permission to view this resource." msgstr "Nu ai acces la această resursă." #: ../../static/t/get_logged_in.html:5 msgid "You must be logged in to access this page." msgstr "" #: ../../static/t/get_logged_in.html:9 #: ../../static/t/edit_message/attachments_pane.html:3 msgid "Close window" msgstr "" #: ../../static/t/get_logged_in.html:55 msgid "Log in using a user name and password" msgstr "" #: ../../static/t/get_logged_in.html:60 ../../static/t/get_logged_in.html:75 msgid "Password:" msgstr "" #: ../../static/t/get_logged_in.html:65 ../../static/t/get_logged_in.html:69 msgid "New user? Register now" msgstr "" #: ../../static/t/get_logged_in.html:70 msgid "" "enter the name and password you wish to use, and click "New User." " msgstr "" #: ../../static/t/get_logged_in.html:83 msgid "Log in using OpenID" msgstr "" #: ../../static/t/get_logged_in.html:85 msgid "OpenID URL:" msgstr "" #: ../../static/t/get_logged_in.html:92 msgid "Log in using Google" msgstr "" #: ../../static/t/get_logged_in.html:97 #, fuzzy msgid "Log in using Yahoo" msgstr "Conectează-te din nou" #: ../../static/t/get_logged_in.html:102 msgid "Log in using AOL or AIM" msgstr "" #: ../../static/t/get_logged_in.html:104 msgid "Enter your AOL or AIM screen name:" msgstr "" #: ../../static/t/get_logged_in.html:115 msgid "Please wait" msgstr "" #: ../../static/t/summary/page.html:4 msgid "Summary page for " msgstr "" #: ../../static/t/summary/page.html:21 msgid "Messages" msgstr "Mesaje" #: ../../static/t/summary/page.html:39 msgid "Today on your calendar" msgstr "Astăzi în agenda ta" #: ../../static/t/summary/page.html:51 msgid "Who‘s online now" msgstr "" #: ../../static/t/summary/page.html:60 msgid "About this server" msgstr "Despre acest server" #: ../../static/t/summary/page.html:63 msgid "You are connected to" msgstr "" #: ../../static/t/summary/page.html:64 msgid "running" msgstr "" #: ../../static/t/summary/page.html:65 msgid "with" msgstr "" #: ../../static/t/summary/page.html:66 msgid "server build" msgstr "" #: ../../static/t/summary/page.html:67 msgid "and located in" msgstr "" #: ../../static/t/summary/page.html:68 msgid "Your system administrator is" msgstr "" #: ../../static/t/edit_message/attachments_pane.html:16 msgid "Attach file" msgstr "Atașați fișier" #: ../../static/t/edit_message/attachments_pane.html:21 msgid "Upload" msgstr "Trimite" #: ../../static/t/edit_message/section_attach_select.html:4 msgid "Remove" msgstr "" #: ../../static/t/loggedinas.html:3 msgid "Logged in as" msgstr "" #: ../../static/t/loggedinas.html:6 msgid "Not logged in." msgstr "" #~ msgid "A script by that name already exists." #~ msgstr "Deja există un script cu acest nume" #~ msgid "" #~ "A new script has been created. Return to the script editing screen to " #~ "edit and activate it." #~ msgstr "" #~ "A fost creat un nou script. Întoarce-te la ecranul de editare a " #~ "scripturilor pentru a-l modifica şi activa." #~ msgid "Create" #~ msgstr "Creează" #~ msgid "Delete script" #~ msgstr "Şterge script" #~ msgid "Delete this script?" #~ msgstr "Şterg acest script ?" #~ msgid "Move rule up" #~ msgstr "Mută regula mai sus" #~ msgid "Move rule down" #~ msgstr "Mută regula mai jos" #~ msgid "Delete rule" #~ msgstr "Şterge regula" webcit-8.24-dfsg.orig/po/webcit/et.po0000644000175000017500000031642712271477123017260 0ustar michaelmichael# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR The Citadel Project - http://www.citadel.org # Gabriel C. Huertas # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-03-20 01:03-0400\n" "PO-Revision-Date: 2010-10-22 14:52+0000\n" "Last-Translator: Rait Lotamõis \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2012-08-01 04:33+0000\n" "X-Generator: Launchpad (build 15719)\n" "Language: ee\n" #: ../../auth.c:683 #, c-format msgid "Current access level: %d (%s)\n" msgstr "Hetke juurdepääsutase: %d (%s)\n" #: ../../roomops.c:708 ../../roomops.c:1005 ../../sieve.c:364 msgid "Cancelled. Changes were not saved." msgstr "Katkestatud. Muudatusi ei salvestatud." #: ../../roomops.c:838 ../../sieve.c:417 msgid "Your changes have been saved." msgstr "Sinu muudatused on salvestatud." #: ../../roomops.c:881 #, c-format msgid "User '%s' kicked out of room '%s'." msgstr "Kasutaja %s löödi toast %s välja." #: ../../roomops.c:898 #, c-format msgid "User '%s' invited to room '%s'." msgstr "Kasutaja %s kutsutud tuppa %s." #: ../../roomops.c:927 msgid "Cancelled. No new room was created." msgstr "Katkestatud. Uut tuba ei loodud." #: ../../roomops.c:1187 msgid "Floor has been deleted." msgstr "Korrus on kustutatud." #: ../../roomops.c:1211 msgid "New floor has been created." msgstr "Uus korrus on loodud." #: ../../roomops.c:1290 msgid "Room list view" msgstr "Tubade nimekirja vaade" #: ../../roomops.c:1293 msgid "Show empty floors" msgstr "Näita tühje korruseid" #: ../../roomviews.c:50 msgid "Bulletin Board" msgstr "Teadetetahvel" #: ../../roomviews.c:51 msgid "Mail Folder" msgstr "Meilikast" #: ../../roomviews.c:52 msgid "Address Book" msgstr "Aadressiraamat" #: ../../roomviews.c:53 ../../static/t/iconbar.html:24 #: ../../static/t/iconbar/edit.html:55 msgid "Calendar" msgstr "Kalender" #: ../../roomviews.c:54 msgid "Task List" msgstr "Ülesannete nimekiri" #: ../../roomviews.c:55 msgid "Notes List" msgstr "Märkmete nimekiri" #: ../../roomviews.c:56 msgid "Wiki" msgstr "Wiki" #: ../../roomviews.c:57 msgid "Calendar List" msgstr "Kalendri nimekiri" #: ../../roomviews.c:58 msgid "Journal" msgstr "" #: ../../roomviews.c:59 #, fuzzy msgid "Drafts" msgstr "Kuupäev" #: ../../roomviews.c:60 msgid "Blog" msgstr "" #: ../../tasks.c:93 msgid "Completed?" msgstr "Lõpetatud?" #: ../../tasks.c:95 msgid "Name of task" msgstr "Ülesande nimi" #: ../../tasks.c:97 msgid "Date due" msgstr "Lõpetamise kuupäev" #: ../../tasks.c:99 msgid "Category" msgstr "Kategooria" #: ../../tasks.c:101 msgid "Show All" msgstr "Näita kõiki" #: ../../tasks.c:223 msgid "Edit task" msgstr "Muuda ülesannet" #: ../../tasks.c:242 ../../calendar.c:98 ../../calendar_view.c:298 #: ../../calendar_view.c:959 ../../calendar_view.c:1003 #: ../../calendar_view.c:1084 msgid "Summary:" msgstr "Kokkuvõte:" #: ../../tasks.c:253 msgid "Start date:" msgstr "Alguse kuupäev:" #: ../../tasks.c:261 ../../tasks.c:291 msgid "No date" msgstr "Kuupäev puudub" #: ../../tasks.c:265 ../../tasks.c:294 msgid "or" msgstr "või" #: ../../tasks.c:279 ../../tasks.c:308 msgid "Time associated" msgstr "Seostatud aeg" #: ../../tasks.c:283 msgid "Due date:" msgstr "Tähtaeg:" #: ../../tasks.c:312 msgid "Completed:" msgstr "Lõpetatud:" #: ../../tasks.c:323 msgid "Category:" msgstr "Kategooria:" #: ../../tasks.c:333 ../../calendar.c:159 ../../static/t/files.html:12 msgid "Description:" msgstr "Kirjeldus:" #: ../../tasks.c:351 ../../event.c:764 msgid "Save" msgstr "Salvesta" #: ../../tasks.c:352 ../../event.c:765 ../../static/t/aide/inet/section.html:5 #: ../../static/t/view_blog/comment.html:12 #: ../../static/t/view_blog/post.html:15 ../../static/t/view_message.html:32 #: ../../static/t/navbar.html:116 ../../static/t/msg_listview.html:27 msgid "Delete" msgstr "Kustuta" #: ../../tasks.c:353 ../../vcard_edit.c:1216 ../../paging.c:66 #: ../../event.c:767 ../../sysmsgs.c:69 ../../who.c:200 ../../auth.c:812 #: ../../static/t/edit_message.html:135 ../../static/t/confirmlogoff.html:4 msgid "Cancel" msgstr "Katkesta" #: ../../tasks.c:423 ../../calendar_view.c:1379 msgid "Untitled Task" msgstr "Nimetu Ülesanne" #: ../../fmt_date.c:310 msgid "Time format" msgstr "Aja formaat" #: ../../listsub.c:54 ../../static/t/listsub/display.html:5 msgid "List subscription" msgstr "" #: ../../listsub.c:67 ../../static/t/listsub/display.html:9 msgid "List subscribe/unsubscribe" msgstr "" #: ../../listsub.c:87 ../../static/t/listsub/display.html:15 #: ../../static/t/listsub/display.html:34 msgid "Confirmation request sent" msgstr "" #: ../../listsub.c:89 #, c-format msgid "" "You are subscribing %s to the %s mailing list. The " "listserver has sent you an e-mail with one additional Web link for you to " "click on to confirm your subscription. This extra step is for your " "protection, as it prevents others from being able to subscribe you to lists " "without your consent.

    Please click on the link which is being e-" "mailed to you and your subscription will be confirmed.
    \n" msgstr "" #: ../../listsub.c:102 ../../static/t/listsub/display.html:24 msgid "Go back..." msgstr "Mine tagasi..." #: ../../listsub.c:253 ../../listsub.c:291 ../../listsub.c:327 #: ../../listsub.c:334 msgid "You need to specify the mailinglist to subscribe to." msgstr "" #: ../../listsub.c:260 ../../listsub.c:298 #, fuzzy msgid "You need to specify the email address you'd like to subscribe with." msgstr "Palun sisesta kasutajanimi mida soovid kasutada." #: ../../blogview_renderer.c:58 ../../blogview_renderer.c:74 #, c-format msgid "%d comments" msgstr "" #: ../../blogview_renderer.c:61 ../../blogview_renderer.c:77 msgid "permalink" msgstr "" #: ../../blogview_renderer.c:302 msgid "Newer posts" msgstr "uuemad postitused" #: ../../blogview_renderer.c:311 msgid "Older posts" msgstr "vanemad postitused" #: ../../useredit.c:629 msgid "" "An error occurred while trying to create or edit this address book entry." msgstr "" #: ../../useredit.c:717 msgid "Changes were not saved." msgstr "Muudatusi ei salvestatud" #: ../../useredit.c:782 msgid "A new user has been created." msgstr "Uus kasutaja on loodud" #: ../../useredit.c:786 msgid "" "You are attempting to create a new user from within Citadel while running in " "host based authentication mode. In this mode, you must create new users on " "the host system, not within Citadel." msgstr "" #: ../../bbsview_renderer.c:312 msgid "Go to page: " msgstr "" #: ../../bbsview_renderer.c:354 msgid "First" msgstr "" #: ../../bbsview_renderer.c:360 msgid "Last" msgstr "" #: ../../graphics.c:56 msgid "Graphics upload has been cancelled." msgstr "Kujunduse üleslaadimine katkestatud" #: ../../graphics.c:62 msgid "You didn't upload a file." msgstr "Sa ei laadinud faili üles." #: ../../graphics.c:112 msgid "your photo" msgstr "sinu foto" #: ../../graphics.c:119 msgid "the icon for this room" msgstr "selle toa pisipilt" #: ../../graphics.c:127 msgid "the Greetingpicture for the login prompt" msgstr "Tervituspilt sisselogimise aknasse" #: ../../graphics.c:135 msgid "the Logoff banner picture" msgstr "Väljalogimise bannerpilt" #: ../../graphics.c:146 msgid "the icon for this floor" msgstr "selle korruse pisipilt" #: ../../calendar_tools.c:100 msgid "Hour: " msgstr "Tund: " #: ../../calendar_tools.c:120 msgid "Minute: " msgstr "Minut: " #: ../../calendar_tools.c:191 msgid "(status unknown)" msgstr "(olukord teadmata)" #: ../../calendar_tools.c:207 msgid "(needs action)" msgstr "(nõuab tegevust)" #: ../../calendar_tools.c:210 msgid "(accepted)" msgstr "(vastu võetud)" #: ../../calendar_tools.c:213 msgid "(declined)" msgstr "(keeldutud)" #: ../../calendar_tools.c:216 msgid "(tenative)" msgstr "(kahtlane)" #: ../../calendar_tools.c:219 msgid "(delegated)" msgstr "(delegeeritud)" #: ../../calendar_tools.c:222 msgid "(completed)" msgstr "(lõpetatud)" #: ../../calendar_tools.c:225 msgid "(in process)" msgstr "(töös)" #: ../../calendar_tools.c:228 msgid "(none)" msgstr "(none)" #: ../../notes.c:343 msgid "Click on any note to edit it." msgstr "Klõpsa märkmel, et seda muuta." #: ../../vcard_edit.c:175 ../../vcard_edit.c:178 msgid "(no name)" msgstr "(nimetu)" #: ../../vcard_edit.c:443 msgid " (work)" msgstr " (töö)" #: ../../vcard_edit.c:445 msgid " (home)" msgstr " (kodune)" #: ../../vcard_edit.c:447 msgid " (cell)" msgstr " (mobiil)" #: ../../vcard_edit.c:458 ../../vcard_edit.c:1120 msgid "Address:" msgstr "Aadress:" #: ../../vcard_edit.c:526 msgid "Telephone:" msgstr "Telefon:" #: ../../vcard_edit.c:531 msgid "E-mail:" msgstr "E-mail:" #: ../../vcard_edit.c:779 msgid "This address book is empty." msgstr "See aadressiraamat on tühi" #: ../../vcard_edit.c:793 msgid "An internal error has occurred." msgstr "Tekkis sisemine viga" #: ../../vcard_edit.c:944 msgid "Error" msgstr "Viga" #: ../../vcard_edit.c:1048 msgid "Edit contact information" msgstr "Muuda kontaktinfot" #: ../../vcard_edit.c:1068 msgid "Prefix" msgstr "Tiitel" #: ../../vcard_edit.c:1068 msgid "First Name" msgstr "Eesnimi" #: ../../vcard_edit.c:1068 msgid "Middle Name" msgstr "Lisanimi" #: ../../vcard_edit.c:1068 msgid "Last Name" msgstr "Perekonnanimi" #: ../../vcard_edit.c:1068 msgid "Suffix" msgstr "" #: ../../vcard_edit.c:1089 msgid "Display name:" msgstr "Kuvatav nimi:" #: ../../vcard_edit.c:1096 msgid "Title:" msgstr "Ametinimi:" #: ../../vcard_edit.c:1103 msgid "Organization:" msgstr "Organisatsioon:" #: ../../vcard_edit.c:1114 msgid "PO box:" msgstr "Postkast" #: ../../vcard_edit.c:1130 msgid "City:" msgstr "Linn:" #: ../../vcard_edit.c:1136 msgid "State:" msgstr "Maakond:" #: ../../vcard_edit.c:1142 msgid "ZIP code:" msgstr "Postiindeks" #: ../../vcard_edit.c:1148 msgid "Country:" msgstr "Riik" #: ../../vcard_edit.c:1158 msgid "Home telephone:" msgstr "Kodune telefon:" #: ../../vcard_edit.c:1164 msgid "Work telephone:" msgstr "Töötelefon:" #: ../../vcard_edit.c:1170 msgid "Mobile telephone:" msgstr "Mobiiltelefon:" #: ../../vcard_edit.c:1176 msgid "Fax number:" msgstr "Faks:" #: ../../vcard_edit.c:1187 msgid "Primary Internet e-mail address" msgstr "Peamine Interneti e-maili aadress" #: ../../vcard_edit.c:1194 msgid "Internet e-mail aliases" msgstr "Interneti e-maili aliased" #: ../../vcard_edit.c:1215 ../../sysmsgs.c:67 msgid "Save changes" msgstr "Salvesta muudatused" #: ../../vcard_edit.c:1261 msgid "Unable to enter the room to save your message" msgstr "" #: ../../vcard_edit.c:1265 msgid "Aborting." msgstr "" #: ../../vcard_edit.c:1297 ../../vcard_edit.c:1341 ../../auth.c:367 #: ../../auth.c:397 msgid "An error has occurred." msgstr "Tekkis viga." #: ../../vcard_edit.c:1399 msgid "Could Not decode vcard photo\n" msgstr "Ei suutnud dekodeerida visiitkaardi fotot\n" #: ../../preferences.c:880 msgid "Cancelled. No settings were changed." msgstr "Katkestatud. Seadeid ei muudetud." #: ../../preferences.c:1092 msgid "Make this my start page" msgstr "Tee see leht minu Citadeli avaleheks." #: ../../preferences.c:1130 msgid "This isn't allowed to become the start page." msgstr "" #: ../../preferences.c:1132 msgid "You no longer have a start page selected." msgstr "Sul ei ole enam valitud Citadeli avalehte." #: ../../preferences.c:1182 msgid "Prefered startpage" msgstr "" #: ../../calendar.c:76 msgid "Meeting invitation" msgstr "Koosoleku kutse" #: ../../calendar.c:79 msgid "Attendee's reply to your invitation" msgstr "Osaleja vastus sinu kutsele" #: ../../calendar.c:82 msgid "Published event" msgstr "Avaldatud sündmus" #: ../../calendar.c:85 msgid "This is an unknown type of calendar item." msgstr "See on tundmatut tüüpi kalendrisündmus." #: ../../calendar.c:107 ../../calendar_view.c:306 ../../calendar_view.c:964 #: ../../calendar_view.c:1008 ../../calendar_view.c:1089 msgid "Location:" msgstr "Asukoht:" #: ../../calendar.c:132 ../../calendar_view.c:351 ../../calendar_view.c:970 msgid "Date:" msgstr "Kuupäev:" #: ../../calendar.c:139 ../../calendar_view.c:373 ../../calendar_view.c:1013 #: ../../calendar_view.c:1099 msgid "Starting date/time:" msgstr "Alguse kuu/kell:" #: ../../calendar.c:150 ../../calendar_view.c:376 ../../calendar_view.c:1015 #: ../../calendar_view.c:1101 msgid "Ending date/time:" msgstr "Lõpu kuu/kell:" #: ../../calendar.c:168 ../../event.c:90 msgid "Recurrence" msgstr "Korduvus:" #: ../../calendar.c:169 ../../event.c:505 msgid "This is a recurring event" msgstr "See on korduv sündmus" #: ../../calendar.c:178 msgid "Attendee:" msgstr "Osaleja:" #: ../../calendar.c:218 #, c-format msgid "This is an update of '%s' which is already in your calendar." msgstr "See on uuendus sinu kalendris olevale sündmusele '%s'." #: ../../calendar.c:222 #, c-format msgid "This event would conflict with '%s' which is already in your calendar." msgstr "See sündmus läheks vastuollu juba kalendris oleva sündmusega '%s'." #: ../../calendar.c:227 msgid "Update:" msgstr "Uuendus:" #: ../../calendar.c:228 msgid "CONFLICT:" msgstr "VASTUOLU:" #: ../../calendar.c:251 msgid "How would you like to respond to this invitation?" msgstr "Kuidas sa soovid sellele kutsele vastata?" #: ../../calendar.c:252 msgid "Accept" msgstr "Nõustun" #: ../../calendar.c:253 msgid "Tentative" msgstr "Üritan" #: ../../calendar.c:254 msgid "Decline" msgstr "Keeldun" #: ../../calendar.c:271 msgid "Click Update to accept this reply and update your calendar." msgstr "Klõpsa Uuenda, et kanda see vastus oma kalendrisündmusele." #: ../../calendar.c:272 msgid "Update" msgstr "Uuenda" #: ../../calendar.c:273 msgid "Ignore" msgstr "Ignoreeri" #: ../../calendar.c:295 msgid "There was an error parsing this calendar item." msgstr "Selle kalendrikande töötlemisel tekkis viga." #: ../../calendar.c:328 msgid "" "You have accepted this meeting invitation. It has been entered into your " "calendar." msgstr "Sa oled selle kutse vastu võtnud. Sündmus märgiti sinu kalendrisse" #: ../../calendar.c:332 msgid "" "You have tentatively accepted this meeting invitation. It has been " "'pencilled in' to your calendar." msgstr "" "Sa üritad jõuda sellele kohtumisele. Sündmus kanti kalendrisse 'pliiatsiga'." #: ../../calendar.c:336 msgid "" "You have declined this meeting invitation. It has not been entered " "into your calendar." msgstr "Sa keeldusid sellest kutsest. Sündmust ei kantud kalendrisse." #: ../../calendar.c:341 msgid "A reply has been sent to the meeting organizer." msgstr "Vastus on saadetud koosoleku korraldajale." #. / Translators: RSVP aka Répondez s'il-vous-plaît Is the term #. / that the recipient of an ical-invitation should please #. / answer this request. #: ../../calendar.c:376 msgid "Your calendar has been updated to reflect this RSVP." msgstr "" #: ../../calendar.c:378 msgid "" "You have chosen to ignore this RSVP. Your calendar has not been " "updated." msgstr "" #: ../../calendar.c:932 msgid "Calendar day view begins at:" msgstr "Kalendripäeva vaade algab kell:" #: ../../calendar.c:933 msgid "Calendar day view ends at:" msgstr "Kalendripäeva vaade lõppeb kell:" #: ../../calendar.c:934 msgid "Week starts on:" msgstr "Nädal algab:" #: ../../paging.c:35 msgid "Send instant message" msgstr "Saada kiirsõnum" #: ../../paging.c:43 msgid "Send an instant message to: " msgstr "Saada kiirsõnum kasutajale: " #: ../../paging.c:57 msgid "Enter message text:" msgstr "Sisesta sõnumi tekst:" #: ../../paging.c:65 ../../static/t/edit_message.html:109 msgid "Send message" msgstr "Saada sõnum" #: ../../paging.c:84 msgid "Message was not sent." msgstr "Sõnumit ei saadetud." #: ../../paging.c:95 msgid "Message has been sent to " msgstr "Sõnum saadetud kasutajale " #: ../../iconbar.c:328 msgid "Iconbar Setting" msgstr "Ikooniriba seaded" #. #. * Set to 'unknown' right from the beginning. Unless we learn #. * something else, that's what we'll go with. #. #: ../../availability.c:148 msgid "availability unknown" msgstr "saadavus teadmata" #: ../../availability.c:169 msgid "free" msgstr "vaba" #: ../../availability.c:179 msgid "BUSY" msgstr "HÕIVATUD" #: ../../serv_func.c:193 msgid "" "This server is already serving its maximum number of users and cannot accept " "any additional logins at this time. Please try again later or contact your " "system administrator." msgstr "" #: ../../serv_func.c:198 ../../serv_func.c:227 msgid "Received unexpected answer from Citadel server; bailing out." msgstr "" #: ../../serv_func.c:236 #, c-format msgid "" "You are connected to a Citadel server running Citadel %d.%02d. \n" "In order to run this version of WebCit you must also have Citadel %d.%02d or " "newer.\n" "\n" "\n" msgstr "" #: ../../event.c:70 msgid "seconds" msgstr "sekundit" #: ../../event.c:71 msgid "minutes" msgstr "minutit" #: ../../event.c:72 msgid "hours" msgstr "tundi" #: ../../event.c:73 msgid "days" msgstr "päeva" #: ../../event.c:74 msgid "weeks" msgstr "nädalat" #: ../../event.c:75 msgid "months" msgstr "kuud" #: ../../event.c:76 msgid "years" msgstr "aastat" #: ../../event.c:77 msgid "never" msgstr "mitte kunagi" #: ../../event.c:81 msgid "first" msgstr "esimene" #: ../../event.c:82 msgid "second" msgstr "teine" #: ../../event.c:83 msgid "third" msgstr "kolmas" #: ../../event.c:84 msgid "fourth" msgstr "neljas" #: ../../event.c:85 msgid "fifth" msgstr "viies" #: ../../event.c:88 msgid "Event" msgstr "Sündmus" #: ../../event.c:89 ../../event.c:437 ../../event.c:449 msgid "Attendees" msgstr "Osalejad" #: ../../event.c:167 msgid "Add or edit an event" msgstr "Lisa või muuda sündmust" #: ../../event.c:206 ../../static/t/iconbar.html:13 #: ../../static/t/iconbar/edit.html:29 msgid "Summary" msgstr "Kokkuvõte" #: ../../event.c:217 msgid "Location" msgstr "Asukoht" #: ../../event.c:228 ../../calendar_view.c:760 msgid "Start" msgstr "Algus" #: ../../event.c:271 ../../calendar_view.c:957 ../../calendar_view.c:986 msgid "All day event" msgstr "Kogu päeva sündmus" #: ../../event.c:277 ../../calendar_view.c:761 msgid "End" msgstr "Lõpp" #: ../../event.c:327 ../../static/t/iconbar.html:34 #: ../../static/t/iconbar/edit.html:49 msgid "Notes" msgstr "Märkmed" #: ../../event.c:369 msgid "Organizer" msgstr "Korraldaja" #: ../../event.c:374 msgid "(you are the organizer)" msgstr "(sina oled korraldaja)" #: ../../event.c:392 msgid "Show time as:" msgstr "Näita aega kui:" #: ../../event.c:415 msgid "Free" msgstr "Vaba" #: ../../event.c:423 msgid "Busy" msgstr "Hõivatud" #: ../../event.c:440 msgid "(One per line)" msgstr "(iga nimi uuel real)" #: ../../event.c:450 ../../static/t/edit_message.html:143 #: ../../static/t/iconbar.html:29 ../../static/t/iconbar/edit.html:42 msgid "Contacts" msgstr "Kontaktid" #: ../../event.c:513 msgid "Recurrence rule" msgstr "Korduvuse reegel" #: ../../event.c:517 msgid "Repeats every" msgstr "Kordumise intervall" #. begin 'weekday_selector' div #: ../../event.c:535 msgid "on these weekdays:" msgstr "nendel nädalapäevadel:" #: ../../event.c:593 #, c-format msgid "on day %s%d%s of the month" msgstr "kuu %s%d%s päeval" #: ../../event.c:602 ../../event.c:664 msgid "on the " msgstr "" #: ../../event.c:626 msgid "of the month" msgstr "" #: ../../event.c:655 msgid "every " msgstr "" #: ../../event.c:656 msgid "year on this date" msgstr "" #: ../../event.c:688 ../../static/t/msg_listselector_bottom.html:7 #: ../../static/t/msg_listselector_top.html:7 msgid "of" msgstr "" #: ../../event.c:712 msgid "Recurrence range" msgstr "Korduvuse vahemik" #: ../../event.c:720 msgid "No ending date" msgstr "Lõpukuupäev puudub" #: ../../event.c:727 msgid "Repeat this event" msgstr "Korda seda sündmust" #: ../../event.c:730 msgid "times" msgstr "korda" #: ../../event.c:738 msgid "Repeat this event until " msgstr "Korda seda sündmust kuni " #: ../../event.c:766 msgid "Check attendee availability" msgstr "Kontrolli osalejate saadavust" #: ../../event.c:858 ../../calendar_view.c:272 ../../calendar_view.c:468 #: ../../calendar_view.c:937 msgid "Untitled Event" msgstr "Nimetu Sündmus" #: ../../sysmsgs.c:52 #, c-format msgid "Edit %s" msgstr "Muuda %s" #: ../../sysmsgs.c:55 #, c-format msgid "" "Enter %s below. Text is formatted to the reader's browser. A newline is " "forced by preceding the next line by a blank." msgstr "" #: ../../sysmsgs.c:89 #, c-format msgid "Cancelled. %s was not saved." msgstr "Katkestatud. %s ei salvestatud." #: ../../sysmsgs.c:109 #, fuzzy msgid " has been saved." msgstr "%s salvestati." #: ../../sysmsgs.c:116 ../../sysmsgs.c:117 msgid "Room info" msgstr "Toa info" #: ../../sysmsgs.c:122 ../../sysmsgs.c:124 msgid "Your bio" msgstr "Sinu info" #: ../../calendar_view.c:297 ../../calendar_view.c:958 #: ../../calendar_view.c:1002 ../../calendar_view.c:1083 #: ../../static/t/sieve/display_one.html:20 msgid "From" msgstr "Alates:" #: ../../calendar_view.c:355 ../../calendar_view.c:974 msgid "Starting date:" msgstr "Alguse kuupäev:" #: ../../calendar_view.c:361 ../../calendar_view.c:976 msgid "Ending date:" msgstr "Lõpu kuupäev:" #: ../../calendar_view.c:369 ../../calendar_view.c:1095 msgid "Date/time:" msgstr "Kuupäev/kellaaeg:" #: ../../calendar_view.c:386 ../../calendar_view.c:980 #: ../../calendar_view.c:1018 ../../calendar_view.c:1105 #: ../../static/t/room/edit/tab_share.html:32 msgid "Notes:" msgstr "Märkmed:" #: ../../calendar_view.c:585 ../../calendar_view.c:721 msgid "previous" msgstr "" #: ../../calendar_view.c:597 ../../calendar_view.c:733 #: ../../calendar_view.c:1308 msgid "next" msgstr "" #: ../../calendar_view.c:756 msgid "Week" msgstr "Nädal" #: ../../calendar_view.c:758 msgid "Hours" msgstr "Tunnid" #: ../../calendar_view.c:759 ../../static/t/sieve/display_one.html:22 #: ../../static/t/msg_listview.html:9 msgid "Subject" msgstr "Pealkiri" #: ../../calendar_view.c:1001 ../../calendar_view.c:1024 msgid "Ongoing event" msgstr "Käimasolev sündmus" #: ../../messages.c:70 msgid "ERROR:" msgstr "" #: ../../messages.c:88 msgid "Empty message" msgstr "" #: ../../messages.c:1010 msgid "Cancelled. Message was not posted." msgstr "Katkestatud. Sõnumit ei postitatud." #: ../../messages.c:1013 msgid "Automatically cancelled because you have already saved this message." msgstr "Automaatselt katkestatud, sest sa oled selle sõnumi juba salvestanud." #: ../../messages.c:1037 msgid "Saved to Drafts failed: " msgstr "" #: ../../messages.c:1102 msgid "Refusing to post empty message.\n" msgstr "" #: ../../messages.c:1128 msgid "Message has been saved to Drafts.\n" msgstr "" #: ../../messages.c:1137 msgid "Message has been sent.\n" msgstr "Sõnum on saadetud.\n" #: ../../messages.c:1140 msgid "Message has been posted.\n" msgstr "Sõnum on postitatud.\n" #: ../../messages.c:1679 msgid "The message was not moved." msgstr "Sõnumit ei liigutatud." #: ../../messages.c:1719 #, c-format msgid "An error occurred while retrieving this part: %s/%s\n" msgstr "" #: ../../messages.c:1796 #, c-format msgid "An error occurred while retrieving this part: %s\n" msgstr "" #: ../../messages.c:1956 msgid "Attach signature to email messages?" msgstr "Lisa allkiri e-kirjadele?" #: ../../messages.c:1959 msgid "Use this signature:" msgstr "Kasuta seda allkirja:" #: ../../messages.c:1961 msgid "Default character set for email headers:" msgstr "" #: ../../messages.c:1964 msgid "Preferred email address" msgstr "Eelistatud e-maili aadress" #: ../../messages.c:1966 msgid "Preferred display name for email messages" msgstr "Eelistatud nimi e-kirjadele" #: ../../messages.c:1970 msgid "Preferred display name for bulletin board posts" msgstr "Eelistatud nimi teadetetahvlile postitades" #: ../../messages.c:1973 msgid "Mailbox view mode" msgstr "Postkasti vaade" #: ../../inetconf.c:110 ../../inetconf.c:119 ../../inetconf.c:133 #: ../../inetconf.c:159 ../../netconf.c:156 ../../netconf.c:183 #: ../../netconf.c:191 ../../netconf.c:239 ../../netconf.c:247 msgid "Invalid Parameter" msgstr "Vigane Parameeter" #: ../../inetconf.c:126 #, fuzzy msgid " has been deleted." msgstr "%s on kustutatud." #. added status message #: ../../inetconf.c:144 msgid " added." msgstr "" #: ../../who.c:154 msgid "Edit your session display" msgstr "Muuda oma sessiooni väljanägemist" #: ../../who.c:158 msgid "" "This screen allows you to change the way your session appears in the 'Who is " "online' listing. To turn off any 'fake' name you've previously set, simply " "click the appropriate 'change' button without typing anything in the " "corresponding box. " msgstr "" #: ../../who.c:171 msgid "Room name:" msgstr "Toa nimi:" #: ../../who.c:176 msgid "Change room name" msgstr "Muuda toa nime" #: ../../who.c:180 msgid "Host name:" msgstr "" #: ../../who.c:185 msgid "Change host name" msgstr "" #: ../../who.c:190 ../../static/t/aide/edituser/detailview.html:20 #: ../../static/t/openid_manual_create.html:9 #: ../../static/t/get_logged_in.html:57 ../../static/t/get_logged_in.html:72 msgid "User name:" msgstr "Kasutajanimi:" #: ../../who.c:195 msgid "Change user name" msgstr "Muuda kasutajanime" #: ../../siteconfig.c:46 ../../siteconfig.c:64 ../../roomlist.c:44 #: ../../roomlist.c:394 ../../static/t/room/edit/tab_expire.html:72 #: ../../static/t/room/edit/tab_config.html:149 #: ../../static/t/room/edit/tab_access.html:42 msgid "Higher access is required to access this function." msgstr "Kõrgem juurdepääsuluba on vajalik selle funktsiooni kasutamiseks." #: ../../siteconfig.c:256 msgid "WARNING: Failed to parse Server Config; do you run a to new citserver?" msgstr "" #: ../../siteconfig.c:319 msgid "Your system configuration has been updated." msgstr "Sinu süsteemiseaded on uuendatud" #: ../../wiki.c:69 ../../wiki.c:162 ../../wiki.c:282 #, c-format msgid "There is no room called '%s'." msgstr "Ei leia '%s' nimelist tuba." #: ../../wiki.c:76 #, c-format msgid "'%s' is not a Wiki room." msgstr "'%s' ei ole Wiki tuba." #: ../../wiki.c:110 #, c-format msgid "There is no page called '%s' here." msgstr "" #: ../../wiki.c:112 msgid "" "Select the 'Edit this page' link in the room banner if you would like to " "create this page." msgstr "" #: ../../wiki.c:181 ../../static/t/msg_listview.html:11 msgid "Date" msgstr "Kuupäev" #: ../../wiki.c:182 msgid "Author" msgstr "" #: ../../wiki.c:209 ../../wiki.c:218 msgid "(show)" msgstr "" #: ../../wiki.c:211 ../../static/t/navbar.html:145 msgid "Current version" msgstr "" #: ../../wiki.c:223 msgid "(revert)" msgstr "" #: ../../wiki.c:300 msgid "Page title" msgstr "" #: ../../webcit.c:316 msgid "Authorization Required" msgstr "Nõutav Autoriseering" #: ../../webcit.c:324 #, c-format msgid "" "The resource you requested requires a valid username and password. You could " "not be logged in: %s\n" msgstr "" #: ../../webcit.c:647 ../../auth.c:526 msgid "" "This program was unable to connect or stay connected to the Citadel server. " "Please report this problem to your system administrator." msgstr "" "See programm ei suutnud luua või säilitada ühendust Citadeliga. Palun " "teavita oma süsteemiadministraatorit sellest probleemist." #: ../../webcit.c:654 ../../auth.c:532 msgid "Read More..." msgstr "Loe edasi..." #: ../../smtpqueue.c:134 ../../static/t/aide/ignetconf/section.html:5 #: ../../static/t/view_mailq/message.html:2 msgid "(Delete)" msgstr "(Kustuta)" #: ../../smtpqueue.c:334 msgid "First Attempt pending" msgstr "" #: ../../roomlist.c:99 msgid "My Folders" msgstr "" #: ../../downloads.c:289 #, c-format msgid "An error occurred while retrieving this file: %s\n" msgstr "Tekkis viga, kui laadisin seda faili: %s\n" #: ../../roomtokens.c:572 msgid "file" msgstr "fail" #: ../../roomtokens.c:574 msgid "files" msgstr "faili" #: ../../summary.c:128 msgid "(None)" msgstr "" #: ../../summary.c:184 msgid "(Nothing)" msgstr "(Ei midagi)" #: ../../msg_renderers.c:579 ../../static/t/who/bio.html:15 msgid "edit" msgstr "muuda" #: ../../msg_renderers.c:1119 msgid "I don't know how to display " msgstr "Ma ei tea kuidas kuvada " #: ../../msg_renderers.c:1353 msgid "(no subject)" msgstr "(pealkiri puudub)" #: ../../addressbook_popup.c:186 msgid "Add" msgstr "Lisa" #. an erased user #: ../../auth.c:30 ../../static/t/aide/edituser/detailview.html:43 #: ../../static/t/aide/siteconfig/tab_access.html:40 #: ../../static/t/aide/siteconfig/tab_access.html:51 msgid "Deleted" msgstr "Kustutatud" #. a new user #: ../../auth.c:33 ../../static/t/aide/edituser/detailview.html:44 #: ../../static/t/aide/siteconfig/tab_access.html:41 #: ../../static/t/aide/siteconfig/tab_access.html:52 #: ../../static/t/get_logged_in.html:79 msgid "New User" msgstr "Uus Kasutaja" #. a trouble maker #: ../../auth.c:36 ../../static/t/aide/edituser/detailview.html:45 #: ../../static/t/aide/siteconfig/tab_access.html:42 #: ../../static/t/aide/siteconfig/tab_access.html:53 msgid "Problem User" msgstr "Probleemne Kasutaja" #. user with normal privileges #: ../../auth.c:39 ../../static/t/aide/edituser/detailview.html:46 #: ../../static/t/aide/siteconfig/tab_access.html:43 #: ../../static/t/aide/siteconfig/tab_access.html:54 msgid "Local User" msgstr "Kohalik Kasutaja" #. a user that may access network resources #: ../../auth.c:42 ../../static/t/aide/edituser/detailview.html:47 #: ../../static/t/aide/siteconfig/tab_access.html:44 #: ../../static/t/aide/siteconfig/tab_access.html:55 msgid "Network User" msgstr "Võrgukasutaja" #. a moderator #: ../../auth.c:45 ../../static/t/aide/edituser/detailview.html:48 #: ../../static/t/aide/siteconfig/tab_access.html:45 #: ../../static/t/aide/siteconfig/tab_access.html:56 msgid "Preferred User" msgstr "Privilegeeritud Kasutaja" #. chief #: ../../auth.c:48 ../../static/t/aide/edituser/detailview.html:49 #: ../../static/t/aide/siteconfig/tab_access.html:46 #: ../../static/t/aide/siteconfig/tab_access.html:57 msgid "Admin" msgstr "Korrapidaja" #: ../../auth.c:513 ../../static/t/iconbar.html:80 #: ../../static/t/confirmlogoff.html:3 #: ../../static/t/menu/basic_commands.html:19 msgid "Log off" msgstr "Välju" #: ../../auth.c:537 msgid "Log in again" msgstr "Sisene uuesti" #: ../../auth.c:585 ../../static/t/aide/usermanagement.html:3 msgid "Validate new users" msgstr "Kinnita uusi kasutajaid" #: ../../auth.c:605 msgid "No users require validation at this time." msgstr "Ükski kasutaja ei vaja hetkel kinnitamist." #: ../../auth.c:655 msgid "very weak" msgstr "väga nõrk" #: ../../auth.c:658 msgid "weak" msgstr "nõrk" #: ../../auth.c:661 msgid "ok" msgstr "käib kah" #: ../../auth.c:665 msgid "strong" msgstr "tugev" #: ../../auth.c:691 msgid "Select access level for this user:" msgstr "Määra kasutaja juurdepääsutase:" #: ../../auth.c:776 ../../static/t/menu/your_info.html:4 msgid "Change your password" msgstr "Muuda oma salasõna" #: ../../auth.c:800 msgid "Enter new password:" msgstr "Sisesta uus salasõna:" #: ../../auth.c:804 msgid "Enter it again to confirm:" msgstr "Sisesta salasõna uuesti:" #: ../../auth.c:810 msgid "Change password" msgstr "Muuda salasõna" #: ../../auth.c:830 msgid "Cancelled. Password was not changed." msgstr "Katkestatud. Salasõna ei muudetud." #: ../../auth.c:839 msgid "They don't match. Password was not changed." msgstr "Need ei ühti. Salasõna ei muudetud." #: ../../auth.c:845 msgid "Blank passwords are not allowed." msgstr "Tühjad paroolid ei ole lubatud." #: ../../openid.c:34 msgid "Manage Account/OpenID Associations" msgstr "" #: ../../openid.c:52 msgid "Do you really want to delete this OpenID?" msgstr "" #: ../../openid.c:53 msgid "(delete)" msgstr "" #: ../../openid.c:61 msgid "Add an OpenID: " msgstr "" #: ../../openid.c:64 msgid "Attach" msgstr "" #: ../../openid.c:68 #, c-format msgid "%s does not permit authentication via OpenID." msgstr "" #: ../../html2html.c:136 #, c-format msgid "realloc() error! couldn't get %d bytes: %s" msgstr "" #: ../../static/t/viewomatic.html:4 msgid "View as:" msgstr "Kuva kui:" #: ../../static/t/sieve/list.html:32 ../../static/t/sieve/none.html:4 #: ../../static/t/menu/your_info.html:7 msgid "View/edit server-side mail filters" msgstr "Vaata/muuda serveris asuvaid postifiltreid" #: ../../static/t/sieve/list.html:41 msgid "When new mail arrives: " msgstr "Kui uus kiri saabub: " #: ../../static/t/sieve/list.html:43 msgid "Leave it in my inbox without filtering" msgstr "Jäta see minu Kirjakasti ilma filtreerimata" #: ../../static/t/sieve/list.html:44 msgid "Filter it according to rules selected below" msgstr "Filtreeri vastavalt alltoodud reeglitele" #: ../../static/t/sieve/list.html:45 msgid "Filter it through a manually edited script (advanced users only)" msgstr "" "Filtreeri vastavalt käsitsi sisestatud skriptile (pead teadma mida sa teed)" #: ../../static/t/sieve/list.html:52 msgid "Your incoming mail will not be filtered through any scripts." msgstr "Sinu sissetulevaid kirju ei filtreerita." #: ../../static/t/sieve/list.html:64 msgid "Add rule" msgstr "Lisa reegel" #: ../../static/t/sieve/list.html:71 msgid "The currently active script is: " msgstr "Hetkel aktiivne skript on: " #: ../../static/t/sieve/list.html:76 ../../static/t/sieve/add.html:3 msgid "Add or delete scripts" msgstr "Lisa või kustuta skripte" #: ../../static/t/sieve/display_one.html:16 msgid "If" msgstr "Kui" #: ../../static/t/sieve/display_one.html:21 msgid "To or Cc" msgstr "Saaja või Koopia" #: ../../static/t/sieve/display_one.html:23 msgid "Reply-to" msgstr "Vastus" #: ../../static/t/sieve/display_one.html:24 #: ../../static/t/msg_listview.html:10 #: ../../static/t/view_mailq/header.html:27 msgid "Sender" msgstr "Saatja" #: ../../static/t/sieve/display_one.html:25 msgid "Resent-From" msgstr "" #: ../../static/t/sieve/display_one.html:26 msgid "Resent-To" msgstr "" #: ../../static/t/sieve/display_one.html:27 msgid "Envelope From" msgstr "" #: ../../static/t/sieve/display_one.html:28 msgid "Envelope To" msgstr "" #: ../../static/t/sieve/display_one.html:29 msgid "X-Mailer" msgstr "" #: ../../static/t/sieve/display_one.html:30 msgid "X-Spam-Flag" msgstr "" #: ../../static/t/sieve/display_one.html:31 msgid "X-Spam-Status" msgstr "" #: ../../static/t/sieve/display_one.html:32 msgid "List-ID" msgstr "" #: ../../static/t/sieve/display_one.html:33 msgid "Message size" msgstr "Sõnumi suurus" #: ../../static/t/sieve/display_one.html:34 #: ../../static/t/select_messageindex_all.html:1 msgid "All" msgstr "Kõik" #: ../../static/t/sieve/display_one.html:41 msgid "contains" msgstr "sisaldab" #: ../../static/t/sieve/display_one.html:42 msgid "does not contain" msgstr "ei sisalda" #: ../../static/t/sieve/display_one.html:43 msgid "is" msgstr "on" #: ../../static/t/sieve/display_one.html:44 msgid "is not" msgstr "ei ole" #: ../../static/t/sieve/display_one.html:45 msgid "matches" msgstr "kattub" #: ../../static/t/sieve/display_one.html:46 msgid "does not match" msgstr "ei kattu" #: ../../static/t/sieve/display_one.html:52 msgid "(All messages)" msgstr "(Kõik sõnumid)" #: ../../static/t/sieve/display_one.html:56 msgid "is larger than" msgstr "on suurem kui" #: ../../static/t/sieve/display_one.html:57 msgid "is smaller than" msgstr "on väiksem kui" #: ../../static/t/sieve/display_one.html:59 #, fuzzy msgid "bytes" msgstr "aastat" #: ../../static/t/sieve/display_one.html:65 msgid "Keep" msgstr "Säilita" #: ../../static/t/sieve/display_one.html:66 msgid "Discard silently" msgstr "Kustuta vaikides" #: ../../static/t/sieve/display_one.html:67 msgid "Reject" msgstr "Hülga" #: ../../static/t/sieve/display_one.html:68 msgid "Move message to" msgstr "Liiguta kausta" #: ../../static/t/sieve/display_one.html:69 msgid "Forward to" msgstr "Saada edasi" #: ../../static/t/sieve/display_one.html:70 msgid "Vacation" msgstr "Puhkusel" #: ../../static/t/sieve/display_one.html:82 msgid "Message:" msgstr "Vastus:" #: ../../static/t/sieve/display_one.html:90 msgid "and then" msgstr "ja siis" #: ../../static/t/sieve/display_one.html:93 msgid "continue processing" msgstr "jätka töötlemist" #: ../../static/t/sieve/display_one.html:94 msgid "stop" msgstr "peatu" #: ../../static/t/sieve/none.html:9 msgid "" "This installation of Citadel was built without support for server-side mail " "filtering.
    Please contact your system administrator if you require this " "feature.
    " msgstr "" #: ../../static/t/sieve/add.html:9 msgid "Add a new script" msgstr "Lisa uus skript" #: ../../static/t/sieve/add.html:10 msgid "" "To create a new script, enter the desired script name in the box below and " "click 'Create'." msgstr "" #: ../../static/t/sieve/add.html:14 msgid "Script name: " msgstr "Skripti nimi: " #: ../../static/t/sieve/add.html:18 msgid "Edit scripts" msgstr "Muuda skripte" #: ../../static/t/sieve/add.html:20 msgid "Return to the script editing screen" msgstr "Tagasi skript editori aknasse" #: ../../static/t/sieve/add.html:23 msgid "Delete scripts" msgstr "Kustuta skripte" #: ../../static/t/sieve/add.html:24 msgid "" "To delete an existing script, select the script name from the list and click " "'Delete'." msgstr "" #: ../../static/t/msg/confirm_move.html:4 msgid "Confirm move of message" msgstr "Kinnita sõnumi liigutamine" #: ../../static/t/msg/confirm_move.html:12 msgid "Move this message to:" msgstr "Liiguta see sõnum kausta:" #: ../../static/t/login.html:5 msgid "powered by" msgstr "jooksutab" #: ../../static/t/login.html:15 ../../static/t/iconbar.html:88 #: ../../static/t/get_logged_in.html:64 ../../static/t/get_logged_in.html:88 #: ../../static/t/get_logged_in.html:93 ../../static/t/get_logged_in.html:98 #: ../../static/t/get_logged_in.html:107 msgid "Log in" msgstr "Viimati sees" #: ../../static/t/trailing.html:14 msgid "" "WARNING: You have JavaScript disabled in your web browser. Many functions " "of this system will not work properly." msgstr "" #: ../../static/t/view_submessage.html:4 #: ../../static/t/view_message/replyquote.html:3 #: ../../static/t/view_message/replyquote.html:7 #: ../../static/t/view_message/print.html:8 ../../static/t/view_message.html:7 msgid "from " msgstr "postitaja " #: ../../static/t/searchomatic.html:4 msgid "Search: " msgstr "Otsi: " #: ../../static/t/listsub/display.html:16 msgid "You are subscribing " msgstr "" #: ../../static/t/listsub/display.html:17 #, fuzzy msgid " to the " msgstr "Mine sinna" #: ../../static/t/listsub/display.html:18 msgid " mailing list." msgstr "" #: ../../static/t/listsub/display.html:19 msgid "" "The listserver has sent you an e-mail with one additional Web link for you " "to click on to confirm your subscription." msgstr "" #: ../../static/t/listsub/display.html:20 msgid "" "This extra step is for your protection, as it prevents others from being " "able to subscribe you to lists without your consent." msgstr "" #: ../../static/t/listsub/display.html:22 msgid "" "Please click on the link which is being e-mailed to you and your " "subscription will be confirmed." msgstr "" #: ../../static/t/listsub/display.html:27 #: ../../static/t/listsub/display.html:47 msgid "ERROR" msgstr "" #: ../../static/t/listsub/display.html:35 msgid "You are unsubscribing" msgstr "" #: ../../static/t/listsub/display.html:37 #, fuzzy msgid "from the" msgstr "postitaja " #: ../../static/t/listsub/display.html:39 #, fuzzy msgid "mailing list." msgstr "Kalendri nimekiri" #: ../../static/t/listsub/display.html:40 msgid "" "The listserver has sent you an e-mail with one additional Web link for you " "to click on to confirm your unsubscription." msgstr "" #: ../../static/t/listsub/display.html:41 msgid "" "This extra step is for your protection, as it prevents others from being " "able to unsubscribe you from lists without your consent." msgstr "" #: ../../static/t/listsub/display.html:43 msgid "" "Please click on the link which is being e-mailed to you and your " "unsubscription will be confirmed." msgstr "" #: ../../static/t/listsub/display.html:44 #, fuzzy msgid "Back..." msgstr "Mine tagasi..." #: ../../static/t/listsub/display.html:54 msgid "Confirmation successful!" msgstr "" #: ../../static/t/listsub/display.html:56 #, fuzzy msgid "Confirmation failed." msgstr "Konfiguratsioon" #: ../../static/t/listsub/display.html:57 msgid "This could mean one of two things:" msgstr "" #: ../../static/t/listsub/display.html:59 msgid "" "You waited too long to confirm your subscribe/unsubscribe request (the " "confirmation link is only valid for three days)" msgstr "" #: ../../static/t/listsub/display.html:60 msgid "" "You have already successfully confirmed your subscribe/unsubscribe " "request and are attempting to do it again." msgstr "" #: ../../static/t/listsub/display.html:62 msgid "The error returned by the server was: " msgstr "" #: ../../static/t/listsub/display.html:70 #, fuzzy msgid "Name of list:" msgstr "Ülesande nimi" #: ../../static/t/listsub/display.html:75 #, fuzzy msgid "Your e-mail address:" msgstr "Eelistatud e-maili aadress" #: ../../static/t/listsub/display.html:79 msgid "(If subscribing) preferred format: " msgstr "" #: ../../static/t/listsub/display.html:80 #, fuzzy msgid "One message at a time" msgstr "Sisesta sõnumi tekst:" #: ../../static/t/listsub/display.html:81 #, fuzzy msgid "Digest format" msgstr "Aja formaat" #: ../../static/t/listsub/display.html:89 msgid "" "When you attempt to subscribe or unsubscribe to a mailing list, you will " "receive an e-mail containing one additional web link to click on for final " "confirmation." msgstr "" #: ../../static/t/listsub/display.html:90 msgid "" "This extra step is for your protection, as it prevents others from being " "able to subscribe or unsubscribe you to lists." msgstr "" #: ../../static/t/floors_edit_one.html:11 msgid "(delete floor)" msgstr "(kustuta korrus)" #: ../../static/t/floors_edit_one.html:13 msgid "(edit graphic)" msgstr "(muuda kujundust)" #: ../../static/t/floors.html:4 msgid "Add/change/delete floors" msgstr "Lisa/muuda/kustuta korruseid" #: ../../static/t/floors.html:10 msgid "Floor number" msgstr "Korruse number" #: ../../static/t/floors.html:11 msgid "Floor name" msgstr "Korruse nimi" #: ../../static/t/floors.html:12 msgid "Number of rooms" msgstr "Tubade arv" #: ../../static/t/floors.html:13 msgid "Floor CSS" msgstr "Korruse CSS" #: ../../static/t/files.html:4 msgid "Files available for download in" msgstr "Failid kaustas" #: ../../static/t/files.html:9 msgid "Upload a file:" msgstr "Lae fail üles:" #: ../../static/t/files.html:30 msgid "Filename" msgstr "Failinimi" #: ../../static/t/files.html:31 msgid "Size" msgstr "Suurus" #: ../../static/t/files.html:32 msgid "Content" msgstr "Sisu" #: ../../static/t/files.html:33 msgid "Description" msgstr "Kirjeldus" #: ../../static/t/edit_message.html:9 ../../static/t/iconbar.html:50 #: ../../static/t/iconbar.html:59 msgid "Loading" msgstr "Laadimine" #: ../../static/t/edit_message.html:23 msgid "from" msgstr "saatja" #: ../../static/t/edit_message.html:29 ../../static/t/edit_message.html:38 msgid "Anonymous" msgstr "Anonüümne" #: ../../static/t/edit_message.html:47 msgid "in" msgstr "" #: ../../static/t/edit_message.html:51 msgid "To:" msgstr "Saaja:" #: ../../static/t/edit_message.html:57 #: ../../static/t/view_message/print.html:15 #: ../../static/t/view_message.html:15 msgid "CC:" msgstr "Koopia:" #: ../../static/t/edit_message.html:63 msgid "BCC:" msgstr "Pimekoopia:" #: ../../static/t/edit_message.html:71 msgid "Subject (optional):" msgstr "Pealkiri (valikuline)" #: ../../static/t/edit_message.html:71 #: ../../static/t/view_message/replyquote.html:8 #: ../../static/t/view_message/print.html:16 #: ../../static/t/view_message.html:16 msgid "Subject:" msgstr "Pealkiri:" #: ../../static/t/edit_message.html:86 msgid "--- forwarded message ---" msgstr "--- edastatud sõnum ---" #: ../../static/t/edit_message.html:110 #, fuzzy msgid "Post message" msgstr "sõnumist" #: ../../static/t/edit_message.html:118 msgid "Save to Drafts" msgstr "" #: ../../static/t/edit_message.html:126 #: ../../static/t/edit_message/attachments_pane.html:5 msgid "Attachments:" msgstr "Manused:" #: ../../static/t/aide/display_serverrestart_page.html:4 #, fuzzy msgid "Message to your Users:" msgstr "Sõnumit ei saadetud." #: ../../static/t/aide/display_generic_result.html:2 msgid "Server command results" msgstr "" #: ../../static/t/aide/display_generic_result.html:18 msgid "Enter another command" msgstr "" #: ../../static/t/aide/display_generic_result.html:19 #, fuzzy msgid "Return to menu" msgstr "menüü" #: ../../static/t/aide/display_sitewide_config.html:3 #, fuzzy msgid "Site configuration" msgstr "Konfiguratsioon" #: ../../static/t/aide/display_sitewide_config.html:6 #: ../../static/t/aide/edituser/select.html:9 msgid "You need to be aide to view this." msgstr "" #: ../../static/t/aide/display_sitewide_config.html:11 #, fuzzy msgid "General" msgstr "Intervall" #: ../../static/t/aide/display_sitewide_config.html:12 #, fuzzy msgid "Access" msgstr "Juurdepääsutase" #: ../../static/t/aide/display_sitewide_config.html:13 #, fuzzy msgid "Network" msgstr "Võrgukasutaja" #: ../../static/t/aide/display_sitewide_config.html:14 msgid "Tuning" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:15 #, fuzzy msgid "Directory" msgstr "Kataloogi nimi:" #: ../../static/t/aide/display_sitewide_config.html:16 msgid "Auto-purger" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:17 msgid "Indexing/Journaling" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:18 #: ../../static/t/aide/siteconfig/tab_pushmail.html:1 #, fuzzy msgid "Push Email" msgstr "Seadista Push Email" #: ../../static/t/aide/display_sitewide_config.html:19 msgid "Pop3" msgstr "" #: ../../static/t/aide/usermanagement.html:2 #, fuzzy msgid "Add, change, delete user accounts" msgstr "Lisa/muuda/kustuta korruseid" #: ../../static/t/aide/display_inetconf.html:5 #: ../../static/t/aide/display_menu.html:5 #, fuzzy msgid "System Administration Menu" msgstr "Administratsioon" #: ../../static/t/aide/display_inetconf.html:6 #: ../../static/t/aide/display_menu.html:6 #, fuzzy msgid "Room Admin Menu" msgstr "Toa Korrapidaja: " #: ../../static/t/aide/display_inetconf.html:13 msgid "Local host aliases" msgstr "" #: ../../static/t/aide/display_inetconf.html:14 #, fuzzy msgid "Directory domains" msgstr "Kataloogi nimi:" #: ../../static/t/aide/display_inetconf.html:15 #, fuzzy msgid "Smart hosts" msgstr "Serveri aadress" #: ../../static/t/aide/display_inetconf.html:16 #, fuzzy msgid "Fallback smart hosts" msgstr "Serveri aadress" #: ../../static/t/aide/display_inetconf.html:17 msgid "Notification hosts" msgstr "" #: ../../static/t/aide/display_inetconf.html:22 #, fuzzy msgid "RBL hosts" msgstr "Serveri aadress" #: ../../static/t/aide/display_inetconf.html:23 #, fuzzy msgid "SpamAssassin hosts" msgstr "Serveri aadress" #: ../../static/t/aide/display_inetconf.html:24 msgid "ClamAV clamd hosts" msgstr "" #: ../../static/t/aide/display_inetconf.html:25 msgid "Masqueradable domains" msgstr "" #: ../../static/t/aide/edituser/select.html:5 #, fuzzy msgid "Edit or delete users" msgstr "Muuda või kustuta see tuba" #: ../../static/t/aide/edituser/select.html:17 #, fuzzy msgid "Add users" msgstr "Lisa reegel" #: ../../static/t/aide/edituser/select.html:20 #, fuzzy msgid "Edit or Delete users" msgstr "Muuda või kustuta see tuba" #: ../../static/t/aide/edituser/box_select.html:1 #, fuzzy msgid "" "To edit an existing user account, select the user name from the list and " "click 'Edit'." msgstr "" "Et anda kasutajale juurdepääsu sellele toale, sisesta kasutajanimi kasti " "ning klõpsa 'Kutsu'" #: ../../static/t/aide/edituser/detailview.html:4 msgid "Edit user account: " msgstr "" #: ../../static/t/aide/edituser/detailview.html:24 #: ../../static/t/room/edit/tab_feed.html:14 msgid "Password" msgstr "Salasõna" #: ../../static/t/aide/edituser/detailview.html:28 msgid "Permission to send Internet mail" msgstr "" #: ../../static/t/aide/edituser/detailview.html:32 #, fuzzy msgid "Number of logins" msgstr "Tubade arv" #: ../../static/t/aide/edituser/detailview.html:36 #, fuzzy msgid "Messages submitted" msgstr "Sõnumi suurus" #: ../../static/t/aide/edituser/detailview.html:40 #, fuzzy msgid "Access level" msgstr "Juurdepääsutase" #: ../../static/t/aide/edituser/detailview.html:54 #, fuzzy msgid "User ID number" msgstr "Kasutajanimi" #: ../../static/t/aide/edituser/detailview.html:58 msgid "Date and time of last login" msgstr "" #: ../../static/t/aide/edituser/detailview.html:68 msgid "Auto-purge after this many days" msgstr "" #: ../../static/t/aide/edituser/add.html:1 #, fuzzy msgid "" "To create a new user account, enter the desired user name in the box below " "and click 'Create'." msgstr "" "Et anda kasutajale juurdepääsu sellele toale, sisesta kasutajanimi kasti " "ning klõpsa 'Kutsu'" #: ../../static/t/aide/edituser/add.html:5 msgid "New user: " msgstr "Uus kasutaja: " #: ../../static/t/aide/display_generic_cmd.html:4 msgid "Enter a server command" msgstr "" #: ../../static/t/aide/display_generic_cmd.html:12 msgid "" "This screen allows you to enter Citadel server commands which are not " "supported by WebCit. If you do not know what that means, then this screen " "will not be of much use to you." msgstr "" #: ../../static/t/aide/display_generic_cmd.html:15 #, fuzzy msgid "Enter command:" msgstr "Sisesta toa nimi:" #: ../../static/t/aide/display_generic_cmd.html:17 msgid "Command input (if requesting SEND_LISTING transfer mode):" msgstr "" #: ../../static/t/aide/display_generic_cmd.html:20 msgid "Detected host header is " msgstr "" #: ../../static/t/aide/display_ignetconf.html:4 #, fuzzy msgid "Network configuration" msgstr "Konfiguratsioon" #: ../../static/t/aide/display_ignetconf.html:10 #: ../../static/t/aide/ignetconf/edit_node.html:5 #: ../../static/t/aide/ignetconf/add.html:5 #, fuzzy msgid "Add a new node" msgstr "Lisa uus märge" #: ../../static/t/aide/display_ignetconf.html:14 msgid "Currently configured nodes" msgstr "" #: ../../static/t/aide/display_serverrestart.html:26 #, fuzzy msgid "Restart Citadel" msgstr "Uus avaleht" #: ../../static/t/aide/floorconfig.html:2 #, fuzzy msgid "Add, change, or delete floors" msgstr "Lisa/muuda/kustuta korruseid" #: ../../static/t/aide/serverrestart/box.html:3 msgid "Please wait while the Citadel server is restarted... " msgstr "Palun oota kuni Citadeli serverile restarti tehakse..." #: ../../static/t/aide/serverrestart/box_page_do.html:3 #, fuzzy msgid "" "Please wait while your users are being paged, the citadel server will be " "restarted after that... " msgstr "Palun oota kuni Citadeli serverile restarti tehakse..." #: ../../static/t/aide/inet/masqdomains.html:2 msgid "(Domains as which users are allowed to masquerade)" msgstr "" #: ../../static/t/aide/inet/rbldns.html:2 msgid "(hosts running a Realtime Blackhole List)" msgstr "" #: ../../static/t/aide/inet/dirnames.html:2 msgid "(domains mapped with the Global Address Book)" msgstr "" #: ../../static/t/aide/inet/notify.html:2 msgid "(URLS for notifications when users receive new mails; )" msgstr "" #: ../../static/t/aide/inet/notify.html:2 msgid "Syntax: Notificationtemplatename:http[s]://user:password@hostname/path" msgstr "" #: ../../static/t/aide/inet/smarthosts.html:2 msgid "(if present, forward all outbound mail to one of these hosts)" msgstr "" #: ../../static/t/aide/inet/aliases.html:2 msgid "(domains for which this host receives mail)" msgstr "" #: ../../static/t/aide/inet/clamav.html:2 msgid "(hosts running the ClamAV clamd service)" msgstr "" #: ../../static/t/aide/inet/spamass.html:2 msgid "(hosts running the SpamAssassin service)" msgstr "" #: ../../static/t/aide/inet/fallbackhosts.html:2 msgid "(send outbound mail to these hosts only when direct delivery fails)" msgstr "" #: ../../static/t/aide/ignetconf/display_confirm_delete.html:5 msgid "Confirm delete" msgstr "Kinnita kustutamine" #: ../../static/t/aide/ignetconf/display_confirm_delete.html:11 msgid "Are you sure you want to delete " msgstr "Oled sa kindel, et soovid kustutada " #: ../../static/t/aide/ignetconf/display_confirm_delete.html:14 #: ../../static/t/prefs/box.html:198 ../../static/t/iconbar/edit.html:19 #: ../../static/t/iconbar/edit.html:26 ../../static/t/iconbar/edit.html:32 #: ../../static/t/iconbar/edit.html:39 ../../static/t/iconbar/edit.html:45 #: ../../static/t/iconbar/edit.html:52 ../../static/t/iconbar/edit.html:58 #: ../../static/t/iconbar/edit.html:64 ../../static/t/iconbar/edit.html:70 #: ../../static/t/iconbar/edit.html:76 ../../static/t/iconbar/edit.html:82 #: ../../static/t/iconbar/edit.html:88 msgid "Yes" msgstr "Jah" #: ../../static/t/aide/ignetconf/display_confirm_delete.html:16 #: ../../static/t/prefs/box.html:200 ../../static/t/iconbar/edit.html:20 #: ../../static/t/iconbar/edit.html:27 ../../static/t/iconbar/edit.html:33 #: ../../static/t/iconbar/edit.html:40 ../../static/t/iconbar/edit.html:46 #: ../../static/t/iconbar/edit.html:53 ../../static/t/iconbar/edit.html:59 #: ../../static/t/iconbar/edit.html:65 ../../static/t/iconbar/edit.html:71 #: ../../static/t/iconbar/edit.html:77 ../../static/t/iconbar/edit.html:83 #: ../../static/t/iconbar/edit.html:89 msgid "No" msgstr "Ei" #: ../../static/t/aide/ignetconf/edit_node.html:15 #: ../../static/t/aide/ignetconf/add.html:15 #: ../../static/t/aide/siteconfig/tab_general.html:8 #, fuzzy msgid "Node name" msgstr "Kasutajanimi" #: ../../static/t/aide/ignetconf/edit_node.html:17 #: ../../static/t/aide/ignetconf/add.html:17 #, fuzzy msgid "Shared secret" msgstr "Jagatud " #: ../../static/t/aide/ignetconf/edit_node.html:19 #: ../../static/t/aide/ignetconf/add.html:19 msgid "Host or IP address" msgstr "" #: ../../static/t/aide/ignetconf/edit_node.html:21 #: ../../static/t/aide/ignetconf/add.html:21 #, fuzzy msgid "Port number" msgstr "Korruse number" #: ../../static/t/aide/ignetconf/section.html:4 #, fuzzy msgid "(Edit)" msgstr "(Muuda)" #: ../../static/t/aide/display_menu.html:12 #, fuzzy msgid "Global Configuration" msgstr "Konfiguratsioon" #: ../../static/t/aide/display_menu.html:14 msgid "User account management" msgstr "" #: ../../static/t/aide/display_menu.html:16 msgid "Shutdown Citadel" msgstr "" #: ../../static/t/aide/display_menu.html:18 msgid "Rooms and Floors" msgstr "Toad ja Korrused" #: ../../static/t/aide/global_config.html:2 #, fuzzy msgid "Edit site-wide configuration" msgstr "Konfiguratsioon" #: ../../static/t/aide/global_config.html:3 msgid "Domain names and Internet mail configuration" msgstr "" #: ../../static/t/aide/global_config.html:4 msgid "Configure replication with other Citadel servers" msgstr "" #: ../../static/t/aide/global_config.html:5 #: ../../static/t/view_mailq/header.html:3 msgid "View the outbound SMTP queue" msgstr "" #: ../../static/t/aide/restart.html:2 #, fuzzy msgid "Restart Now" msgstr "Nädal algab:" #: ../../static/t/aide/restart.html:3 msgid "Restart after paging users" msgstr "" #: ../../static/t/aide/restart.html:4 msgid "Restart when all users are idle" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:1 #, fuzzy msgid "General site configuration items" msgstr "Konfiguratsioon" #: ../../static/t/aide/siteconfig/tab_general.html:5 msgid "Change Login Logo" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:6 msgid "Change Logout Logo" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:11 msgid "Fully qualified domain name" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:14 msgid "Human-readable node name" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:17 #, fuzzy msgid "Telephone number" msgstr "Telefon:" #: ../../static/t/aide/siteconfig/tab_general.html:20 msgid "Paginator prompt (for text mode clients)" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:23 msgid "Geographic location of this system" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:26 #, fuzzy msgid "Name of system administrator" msgstr "Administratsioon" #: ../../static/t/aide/siteconfig/tab_general.html:29 msgid "Default timezone for unzoned calendar items" msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:1 #, fuzzy msgid "Configure automatic expiry of old messages" msgstr "Sõnumid ei aegu" #: ../../static/t/aide/siteconfig/tab_autopurger.html:2 msgid "These settings may be overridden on a per-floor or per-room basis." msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:6 msgid "Hour to run database auto-purge" msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:66 #, fuzzy msgid "Default message expire policy for public rooms" msgstr "Sõnumite aegumise reeglid siin toas" #: ../../static/t/aide/siteconfig/tab_autopurger.html:68 #: ../../static/t/aide/siteconfig/tab_autopurger.html:86 #: ../../static/t/room/edit/tab_expire.html:17 #: ../../static/t/room/edit/tab_expire.html:45 msgid "Never automatically expire messages" msgstr "Sõnumid ei aegu" #: ../../static/t/aide/siteconfig/tab_autopurger.html:71 #: ../../static/t/aide/siteconfig/tab_autopurger.html:89 #: ../../static/t/room/edit/tab_expire.html:20 #: ../../static/t/room/edit/tab_expire.html:48 msgid "Expire by message count" msgstr "Aeguvad sõnumite üldarvu alusel" #: ../../static/t/aide/siteconfig/tab_autopurger.html:73 #: ../../static/t/aide/siteconfig/tab_autopurger.html:92 #: ../../static/t/room/edit/tab_expire.html:23 #: ../../static/t/room/edit/tab_expire.html:51 msgid "Expire by message age" msgstr "Aeguvad sõnumi vanuse alusel" #: ../../static/t/aide/siteconfig/tab_autopurger.html:75 #: ../../static/t/aide/siteconfig/tab_autopurger.html:94 #: ../../static/t/room/edit/tab_expire.html:25 #: ../../static/t/room/edit/tab_expire.html:53 msgid "Number of messages or days: " msgstr "Sõnumite või päevade arv: " #: ../../static/t/aide/siteconfig/tab_autopurger.html:81 #, fuzzy msgid "Default message expire policy for private mailboxes" msgstr "Sõnumite aegumise reeglid siin korrusel" #: ../../static/t/aide/siteconfig/tab_autopurger.html:83 #, fuzzy msgid "Same policy as public rooms" msgstr "Sõnumite aegumise reeglid siin toas" #: ../../static/t/aide/siteconfig/tab_network.html:1 #, fuzzy msgid "Network services" msgstr "Võrgukasutaja" #: ../../static/t/aide/siteconfig/tab_network.html:2 #: ../../static/t/aide/siteconfig/tab_directory.html:3 msgid "" "Changes made on this screen will not take effect until you restart the " "Citadel server." msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:6 msgid "SMTP MTA port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:9 msgid "Correct forged From: lines during authenticated SMTP" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:12 msgid "Flag message as spam, instead of rejecting it" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:15 msgid "IMAP listener port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:19 msgid "Network run frequency (in seconds)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:22 msgid "Server IP address (0.0.0.0 for 'any')" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:25 msgid "SMTP MSA port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:28 msgid "IMAP over SSL port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:31 msgid "SMTP over SSL port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:34 msgid "Instantly expunge deleted messages in IMAP" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:38 msgid "Allow unauthenticated SMTP clients to spoof this sites domains" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:41 msgid "Postfix TCP Dictionary Port" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:41 msgid "-1 to disable" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:44 msgid "ManageSieve Port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:47 msgid "Perform RBL checks upon connect instead of after RCPT" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:50 msgid "Keep original from headers in IMAP" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:53 msgid "XMPP (Jabber) client to server port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:56 msgid "XMPP (Jabber) server to server port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_pop3.html:1 msgid "POP3" msgstr "" #: ../../static/t/aide/siteconfig/tab_pop3.html:6 msgid "POP3 listener port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_pop3.html:9 msgid "POP3 over SSL port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_pop3.html:12 msgid "POP3 fetch frequency in seconds" msgstr "" #: ../../static/t/aide/siteconfig/tab_pop3.html:15 msgid "POP3 fastest fetch frequency in seconds" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:1 msgid "Advanced server fine-tuning controls" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:5 msgid "Server connection idle timeout (in seconds)" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:8 msgid "Maximum concurrent sessions (0 = no limit)" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:11 msgid "Default user purge time (days)" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:14 msgid "Default room purge time (days)" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:17 msgid "Maximum message length" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:20 msgid "Minimum number of worker threads" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:23 msgid "Maximum number of worker threads" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:26 msgid "Automatically delete committed database logs" msgstr "" #: ../../static/t/aide/siteconfig/tab_pushmail.html:5 msgid "Funambol server host (blank to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_pushmail.html:8 msgid "Funambol server port " msgstr "" #: ../../static/t/aide/siteconfig/tab_pushmail.html:11 msgid "Funambol sync source" msgstr "" #: ../../static/t/aide/siteconfig/tab_pushmail.html:14 msgid "Funambol auth details (user:pass)" msgstr "" #: ../../static/t/aide/siteconfig/tab_pushmail.html:17 msgid "External pager tool (blank to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:1 msgid "Access controls and site policy settings" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:5 msgid "Allow aides to zap (forget) rooms" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:9 msgid "Quarantine messages from problem users" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:12 #, fuzzy msgid "Name of quarantine room" msgstr "Toa nimi: " #: ../../static/t/aide/siteconfig/tab_access.html:17 #, fuzzy msgid "Name of room to log pages" msgstr "Toa nimi: " #: ../../static/t/aide/siteconfig/tab_access.html:22 msgid "Authentication mode" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:24 #, fuzzy msgid "Self contained" msgstr "sisaldab" #: ../../static/t/aide/siteconfig/tab_access.html:25 msgid "Host based" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:26 msgid "LDAP (RFC2307)" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:27 msgid "LDAP (Active Directory)" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:30 msgid "Master user name (blank to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:33 #, fuzzy msgid "Master user password" msgstr "Sisesta uus salasõna:" #: ../../static/t/aide/siteconfig/tab_access.html:38 #, fuzzy msgid "Initial access level for new users" msgstr "Määra kasutaja juurdepääsutase:" #: ../../static/t/aide/siteconfig/tab_access.html:49 msgid "Access level required to create rooms" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:60 msgid "Automatically grant room-aide status to users who create private rooms" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:63 msgid "Automatically grant room-aide status to users who create BLOG rooms" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:66 msgid "Restrict access to Internet mail" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:71 msgid "Disable self-service user account creation" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:71 msgid "Hint: do not select both!" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:74 msgid "Require registration for new users" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:77 #, fuzzy msgid "Allow anonymous guest access" msgstr "Anonüümsed sõnumid keelatud" #: ../../static/t/aide/siteconfig/tab_indexing.html:1 msgid "Indexing and Journaling" msgstr "" #: ../../static/t/aide/siteconfig/tab_indexing.html:2 msgid "Warning: these facilities are resource intensive." msgstr "" #: ../../static/t/aide/siteconfig/tab_indexing.html:6 msgid "Enable full text index" msgstr "" #: ../../static/t/aide/siteconfig/tab_indexing.html:9 #, fuzzy msgid "Perform journaling of email messages" msgstr "Eelistatud nimi e-kirjadele" #: ../../static/t/aide/siteconfig/tab_indexing.html:13 #, fuzzy msgid "Perform journaling of non-email messages" msgstr "Eelistatud nimi e-kirjadele" #: ../../static/t/aide/siteconfig/tab_indexing.html:16 msgid "Email destination of journalized messages" msgstr "" #: ../../static/t/aide/siteconfig/tab_directory.html:1 msgid "Configure the LDAP connector for Citadel" msgstr "" #: ../../static/t/aide/siteconfig/tab_directory.html:4 msgid "" "NOTE: This Citadel server has been built without LDAP support. These " "options will have no effect." msgstr "" #: ../../static/t/aide/siteconfig/tab_directory.html:9 msgid "Host name of LDAP server (blank to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_directory.html:13 msgid "Port number of LDAP server (blank to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_directory.html:16 msgid "Base DN" msgstr "" #: ../../static/t/aide/siteconfig/tab_directory.html:19 msgid "Bind DN" msgstr "" #: ../../static/t/aide/siteconfig/tab_directory.html:22 msgid "Password for bind DN" msgstr "" #: ../../static/t/iconbar.html:7 msgid "Language:" msgstr "Keel:" #: ../../static/t/iconbar.html:19 msgid "Mail" msgstr "Kirjakast" #: ../../static/t/iconbar.html:39 ../../static/t/iconbar/edit.html:61 #: ../../static/t/summary/page.html:30 msgid "Tasks" msgstr "Ülesanded" #: ../../static/t/iconbar.html:48 ../../static/t/iconbar/edit.html:67 msgid "Rooms" msgstr "Toad" #: ../../static/t/iconbar.html:57 msgid "Online users" msgstr "Online kasutajad" #: ../../static/t/iconbar.html:62 ../../static/t/iconbar/edit.html:79 msgid "Chat" msgstr "Vestle" #: ../../static/t/iconbar.html:65 msgid "Advanced" msgstr "Põhjalikum" #: ../../static/t/iconbar.html:72 ../../static/t/room/edit/editroom.html:4 #: ../../static/t/room/edit.html:5 msgid "Administration" msgstr "Administratsioon" #: ../../static/t/iconbar.html:83 msgid "customize this menu" msgstr "muuda menüüd" #: ../../static/t/iconbar.html:92 msgid "switch to room list" msgstr "tubade vaade" #: ../../static/t/iconbar.html:93 msgid "switch to menu" msgstr "menüü" #: ../../static/t/iconbar.html:94 msgid "My folders" msgstr "Minu kaustad" #: ../../static/t/view_message/list_attach.html:3 #: ../../static/t/view_message/inline_attach.html:4 #, fuzzy msgid "View" msgstr "Kuva kui:" #: ../../static/t/view_message/list_attach.html:4 #: ../../static/t/view_message/inline_attach.html:5 msgid "Download" msgstr "Lae" #: ../../static/t/view_message/print.html:14 #: ../../static/t/view_message.html:14 msgid "to" msgstr "" #: ../../static/t/openid_manual_create.html:2 msgid "Your OpenID" msgstr "" #: ../../static/t/openid_manual_create.html:2 msgid "was successfully verified." msgstr "" #: ../../static/t/openid_manual_create.html:3 msgid "However, the user name" msgstr "" #: ../../static/t/openid_manual_create.html:3 msgid "conflicts with an existing user." msgstr "" #: ../../static/t/openid_manual_create.html:5 msgid "Please specify the user name you would like to use." msgstr "Palun sisesta kasutajanimi mida soovid kasutada." #: ../../static/t/files/graphicsupload.html:2 msgid "Image upload" msgstr "Pildi üleslaadimine" #: ../../static/t/files/graphicsupload.html:6 msgid "You can upload an image directly from your computer" msgstr "Sa võid laadida pildi otse oma arvutist" #: ../../static/t/files/graphicsupload.html:8 msgid "Please select a file to upload:" msgstr "Palun vali fail mida soovid üleslaadida:" #: ../../static/t/files/section_onefile.html:20 msgid "Slideshow" msgstr "Pildiesitlus" #: ../../static/t/roombanner.html:10 ../../static/t/roombanner.html:11 msgid "new of" msgstr "" #: ../../static/t/roombanner.html:10 ../../static/t/roombanner.html:11 #: ../../static/t/msg_listselector_bottom.html:7 #: ../../static/t/msg_listselector_top.html:7 msgid "messages" msgstr "sõnumist" #: ../../static/t/roombanner.html:28 msgid "Select page: " msgstr "Vali lehekülg: " #: ../../static/t/who.html:13 msgid "Users currently on " msgstr "Kasutajad hetkel võrgus - " #: ../../static/t/who.html:22 msgid "Click on a name to read user info. Click on" msgstr "Klõpsa nimel et saada kasutaja kohta infot. Klõpsa" #: ../../static/t/who.html:24 msgid "to send an instant message to that user." msgstr "et saata sellele kasutajale kiirsõnum." #: ../../static/t/msg_listselector_bottom.html:2 #: ../../static/t/msg_listselector_top.html:2 msgid "Reading #" msgstr "Loed #" #: ../../static/t/msg_listselector_bottom.html:12 #: ../../static/t/msg_listselector_top.html:12 msgid "oldest to newest" msgstr "vanimast uuemani" #: ../../static/t/msg_listselector_bottom.html:20 #: ../../static/t/msg_listselector_top.html:20 msgid "newest to oldest" msgstr "uuemast vanimani" #: ../../static/t/newstartpage.html:4 msgid "New start page" msgstr "Uus avaleht" #: ../../static/t/newstartpage.html:9 msgid "Your start page has been changed." msgstr "Sinu avaleht on muudetud" #: ../../static/t/newstartpage.html:12 msgid "" "(Note: this does not change your browser's home page. It changes the page " "you begin on when you log on to" msgstr "" "NB: see ei muuda sinu brauseri avalehte. See määrab lehekülje, mida sa " "näedesimesena, kui siia sisse logid" #: ../../static/t/no_new_msgs.html:3 msgid "No new messages." msgstr "" #: ../../static/t/view_blog/comment_box.html:8 msgid "Post a comment" msgstr "Postita kommentaar" #: ../../static/t/prefs/pushemail.html:2 msgid "Configure Push Email" msgstr "Seadista Push Email" #: ../../static/t/prefs/pushemail.html:9 #, fuzzy msgid "Push email and SMS settings" msgstr "Muuda oma push email (mobiili special) seadeid" #: ../../static/t/prefs/pushemail.html:17 msgid "" "If your administrator has enabled the functionality, Citadel can notify a " "Funambol server that you haved recieved new email and automatically " "syncronize any devices you have with the Funambol client installed." msgstr "" #: ../../static/t/prefs/pushemail.html:20 msgid "" "Alternatively, if the administrator has configured it, Citadel can send a " "text message to you when new mail arrives." msgstr "" #: ../../static/t/prefs/pushemail.html:26 msgid "Notify Funambol server" msgstr "" #: ../../static/t/prefs/pushemail.html:31 #, fuzzy msgid "Send a text message to..." msgstr "Saada kiirsõnum kasutajale: " #: ../../static/t/prefs/pushemail.html:33 msgid "" "(Use international format, without any leading zeros, spaces or hypens, like " "+61415011501)" msgstr "" #: ../../static/t/prefs/pushemail.html:38 msgid "Use custom notification scheme configured by your Admin" msgstr "" #: ../../static/t/prefs/pushemail.html:43 msgid "Don‘t send any notifications" msgstr "" #: ../../static/t/prefs/box.html:9 msgid "Tree (folders) view" msgstr "Puu (kataloogidena) vaade" #: ../../static/t/prefs/box.html:11 msgid "Table (rooms) view" msgstr "Tabel (tubadena) vaade" #: ../../static/t/prefs/box.html:20 msgid "12 hour (am/pm)" msgstr "12 tundi (am/pm)" #: ../../static/t/prefs/box.html:25 msgid "24 hour" msgstr "24 tundi" #: ../../static/t/prefs/box.html:152 msgid "Sunday" msgstr "Pühapäevaga" #: ../../static/t/prefs/box.html:153 msgid "Monday" msgstr "Esmaspäevaga" #: ../../static/t/prefs/box.html:174 msgid "No signature" msgstr "Ei kasuta allkirja" #: ../../static/t/prefs/box.html:238 msgid "Full-functionality" msgstr "Täisfunktsionaalsus" #: ../../static/t/prefs/box.html:241 msgid "Safe mode" msgstr "Turvarežiim" #: ../../static/t/prefs/box.html:242 msgid "" "Safe mode is less intensive on your web browser, but not as fully featured." msgstr "" "Turvarežiim ei kurna sinu veebilehitsejat niipalju, kuid ei ole ka kõigi " "võimalustega." #: ../../static/t/wiki/pagelist.html:1 msgid "List of Wiki pages" msgstr "" #: ../../static/t/wiki/history.html:1 msgid "History of edits for this page" msgstr "" #: ../../static/t/who/list_static_header.html:1 #, fuzzy msgid "Users currently on" msgstr "Kasutajad hetkel võrgus - " #: ../../static/t/who/section.html:4 #, fuzzy msgid "(kill)" msgstr " (mobiil)" #: ../../static/t/who/bio.html:4 ../../static/t/user/show.html:4 msgid "User profile" msgstr "Kasutajaprofiil" #: ../../static/t/who/summary.html:5 ../../static/t/who/box_list_static.html:6 #: ../../static/t/room/edit/tab_feed.html:13 msgid "User name" msgstr "Kasutajanimi" #: ../../static/t/who/summary.html:6 ../../static/t/who/box_list_static.html:7 msgid "Room" msgstr "Tuba" #: ../../static/t/who/box_list_static.html:8 msgid "From host" msgstr "Aadressilt" #: ../../static/t/view_message.html:19 msgid "Edit" msgstr "" #: ../../static/t/view_message.html:22 ../../static/t/view_message.html:26 msgid "Reply" msgstr "Vasta" #: ../../static/t/view_message.html:23 msgid "ReplyQuoted" msgstr "Tsiteeri" #: ../../static/t/view_message.html:27 msgid "ReplyAll" msgstr "VastaKõigile" #: ../../static/t/view_message.html:28 msgid "Forward" msgstr "Edasta" #: ../../static/t/view_message.html:31 ../../static/t/msg_listview.html:25 msgid "Move" msgstr "Liiguta" #: ../../static/t/view_message.html:34 msgid "Headers" msgstr "" #: ../../static/t/view_message.html:35 ../../static/t/msg_listview.html:28 msgid "Print" msgstr "Prindi" #: ../../static/t/preferences.html:4 ../../static/t/preferences.html:7 msgid "Preferences and settings" msgstr "Eelistused ja seaded" #: ../../static/t/user/list.html:3 #, fuzzy msgid "User list for " msgstr "%s kasutajate nimekiri" #: ../../static/t/user/list.html:9 msgid "User Name" msgstr "Kasutajanimi" #: ../../static/t/user/list.html:10 msgid "Number" msgstr "Number" #: ../../static/t/user/list.html:11 msgid "Access Level" msgstr "Juurdepääsutase" #: ../../static/t/user/list.html:12 msgid "Last Login" msgstr "Viimati sees" #: ../../static/t/user/list.html:13 msgid "Total Logins" msgstr "Logimisi kokku" #: ../../static/t/user/list.html:14 msgid "Total Posts" msgstr "Postitusi kokku" #: ../../static/t/user/show.html:9 #, fuzzy msgid "Click here to send an instant message to" msgstr "Klõpsa siin, et saata kasutajale %s kiirsõnum" #: ../../static/t/start_of_new_msgs.html:4 msgid "Old messages" msgstr "" #: ../../static/t/start_of_new_msgs.html:8 msgid "New messages" msgstr "" #: ../../static/t/display_main_menu.html:7 msgid "Basic commands" msgstr "Põhikäsud" #: ../../static/t/display_main_menu.html:10 msgid "Your info" msgstr "Sinu info" #: ../../static/t/display_main_menu.html:12 msgid "Advanced room commands" msgstr "Põhjalikumad tubade käsud" #: ../../static/t/iconbar/save.html:4 ../../static/t/iconbar/edit.html:4 msgid "Customize the icon bar" msgstr "Personaliseeri Ikooniriba" #: ../../static/t/iconbar/save.html:11 msgid "" "Your icon bar has been updated. Please select any of its choices to continue." msgstr "" #: ../../static/t/iconbar/save.html:11 msgid "" "You may need to force refresh (SHIFT-F5)> in order for changes to take effect" msgstr "" #: ../../static/t/iconbar/edit.html:11 msgid "Display icons as:" msgstr "Näita ikoone kui:" #: ../../static/t/iconbar/edit.html:12 msgid "pictures and text" msgstr "pildid ja tekst" #: ../../static/t/iconbar/edit.html:13 msgid "pictures only" msgstr "ainult pildid" #: ../../static/t/iconbar/edit.html:14 msgid "text only" msgstr "ainult tekst" #: ../../static/t/iconbar/edit.html:16 msgid "" "Select the icons you would like to see displayed in the 'icon bar' menu on " "the left side of the screen." msgstr "Vali ikoonid mida sa soovid vasakul asuval 'Ikooniribal' näha" #: ../../static/t/iconbar/edit.html:23 msgid "Site logo" msgstr "Lehekülje logo" #: ../../static/t/iconbar/edit.html:23 msgid "An icon describing this site" msgstr "Pisipilt kirjeldamaks seda keskkonda" #: ../../static/t/iconbar/edit.html:29 msgid "Your summary page" msgstr "Sinu kokkuvõttelehekülg" #: ../../static/t/iconbar/edit.html:36 msgid "Mail (inbox)" msgstr "Kirjakast" #: ../../static/t/iconbar/edit.html:36 msgid "A shortcut to your email Inbox" msgstr "Otsetee sinu e-maili kirjakasti" #: ../../static/t/iconbar/edit.html:42 msgid "Your personal address book" msgstr "Sinu isiklik aadressiraamat" #: ../../static/t/iconbar/edit.html:49 msgid "Your personal notes" msgstr "Sinu isiklikud märkmed" #: ../../static/t/iconbar/edit.html:55 msgid "A shortcut to your personal calendar" msgstr "Otsetee sinu kalendri juurde" #: ../../static/t/iconbar/edit.html:61 msgid "A shortcut to your personal task list" msgstr "Otsetee sinu isikliku ülesannete nimekirja juurde" #: ../../static/t/iconbar/edit.html:67 msgid "" "Clicking this icon displays a list of all accessible rooms (or folders) " "available." msgstr "" "Sellel ikoonil klõpsamine kuvab nimekirja kõigist juurdepääsetavatest " "tubadest (või kataloogidest)." #: ../../static/t/iconbar/edit.html:73 msgid "Who is online?" msgstr "Kes on sisse logitud?" #: ../../static/t/iconbar/edit.html:73 msgid "Clicking this icon displays a list of all users currently logged in." msgstr "" "Sellel ikoonil klõpsamine kuvab nimekirja kasutajatest kes on hetkel sisse " "logitud." #: ../../static/t/iconbar/edit.html:79 msgid "" "Clicking this icon enters real-time chat mode with other users in the same " "room." msgstr "" "Sellel ikoonil klõpsamine avab reaalajas vestluse teiste samas ruumis " "asuvate kasutajatega" #: ../../static/t/iconbar/edit.html:85 msgid "Advanced options" msgstr "Veel valikuid" #: ../../static/t/iconbar/edit.html:85 msgid "Access to the complete menu of Citadel functions." msgstr "Juurdepääs täieliku Citadeli funktsioonide menüüle" #: ../../static/t/iconbar/edit.html:91 msgid "Citadel logo" msgstr "Citadeli logo" #: ../../static/t/iconbar/edit.html:91 msgid "Displays the 'Powered by Citadel' icon" msgstr "Kuvab 'Powered by Citadel' ikooni" #: ../../static/t/room/edit/tab_expire.html:8 msgid "Message expire policy for this room" msgstr "Sõnumite aegumise reeglid siin toas" #: ../../static/t/room/edit/tab_expire.html:14 msgid "Use the default policy for this floor" msgstr "Kasuta vaikimisi reegleid sõnumite aegumiseks" #: ../../static/t/room/edit/tab_expire.html:36 msgid "Message expire policy for this floor" msgstr "Sõnumite aegumise reeglid siin korrusel" #: ../../static/t/room/edit/tab_expire.html:42 msgid "Use the system default" msgstr "Kasuta süsteemi vaikimisi seadeid" #: ../../static/t/room/edit/editroom.html:5 ../../static/t/room/edit.html:6 msgid "Configuration" msgstr "Konfiguratsioon" #: ../../static/t/room/edit/editroom.html:6 ../../static/t/room/edit.html:7 msgid "Message expire policy" msgstr "Sõnumite aegumise reeglid" #: ../../static/t/room/edit/editroom.html:7 ../../static/t/room/edit.html:8 msgid "Access controls" msgstr "Juurdepääsuõigused" #: ../../static/t/room/edit/editroom.html:8 ../../static/t/room/edit.html:9 msgid "Sharing" msgstr "Jagamine" #: ../../static/t/room/edit/editroom.html:9 ../../static/t/room/edit.html:10 msgid "Mailing list service" msgstr "" #: ../../static/t/room/edit/editroom.html:10 ../../static/t/room/edit.html:11 msgid "Remote retrieval" msgstr "Mujalt posti kogumine" #: ../../static/t/room/edit/tab_config.html:6 #, fuzzy msgid "name of room: " msgstr "Toa nimi: " #: ../../static/t/room/edit/tab_config.html:10 #: ../../static/t/room/create.html:20 msgid "Resides on floor: " msgstr "Asub korrusel: " #: ../../static/t/room/edit/tab_config.html:16 #: ../../static/t/room/create.html:68 msgid "Type of room:" msgstr "Toa liik:" #: ../../static/t/room/edit/tab_config.html:22 #: ../../static/t/room/create.html:73 msgid "Public (automatically appears to everyone)" msgstr "Avalik (ilmub automaatselt kõigile)" #: ../../static/t/room/edit/tab_config.html:28 #: ../../static/t/room/create.html:77 msgid "Private - hidden (accessible to anyone who knows its name)" msgstr "" "Privaatne - peidetud (juurdepääsetav ainult nendele, kes teavad toa nime)" #: ../../static/t/room/edit/tab_config.html:35 #: ../../static/t/room/create.html:81 msgid "Private - require password: " msgstr "Privaatne - nõua salasõna: " #: ../../static/t/room/edit/tab_config.html:44 #: ../../static/t/room/create.html:86 msgid "Private - invitation only" msgstr "Privaatne - ainult kutse alusel" #: ../../static/t/room/edit/tab_config.html:51 #: ../../static/t/room/create.html:90 msgid "Personal (mailbox for you only)" msgstr "Personaalne (kirjakast ainult sinule)" #: ../../static/t/room/edit/tab_config.html:55 msgid "If private, cause current users to forget room" msgstr "Kui privaatne, sunni kasutajaid tuba unustama" #: ../../static/t/room/edit/tab_config.html:61 msgid "Preferred users only" msgstr "Ainult Privilegeeritud kasutajad" #: ../../static/t/room/edit/tab_config.html:66 msgid "Read-only room" msgstr "Loe-ainult tuba" #: ../../static/t/room/edit/tab_config.html:71 msgid "All users allowed to post may also delete messages" msgstr "Kasutajad, kes tohivad postitada, tohivad ka sõnumeid kustutada" #: ../../static/t/room/edit/tab_config.html:76 msgid "File directory room" msgstr "Failivahetuse tuba" #: ../../static/t/room/edit/tab_config.html:80 msgid "Directory name: " msgstr "Kataloogi nimi:" #: ../../static/t/room/edit/tab_config.html:86 msgid "Uploading allowed" msgstr "Üleslaadimine lubatud" #: ../../static/t/room/edit/tab_config.html:91 msgid "Downloading allowed" msgstr "Allalaadimine lubatud" #: ../../static/t/room/edit/tab_config.html:96 msgid "Visible directory" msgstr "Nähtav kataloog" #: ../../static/t/room/edit/tab_config.html:103 msgid "Network shared room" msgstr "Tuba jagatud võrku" #: ../../static/t/room/edit/tab_config.html:108 msgid "Permanent (does not auto-purge)" msgstr "Permanentne (ei toimu auto-tühjendamist)" #: ../../static/t/room/edit/tab_config.html:113 msgid "Subject Required (Force users to specify a message subject)" msgstr "Pealkiri Nõutud (Sunni kasutajaid sõnumitele pealkirju lisama)" #: ../../static/t/room/edit/tab_config.html:116 msgid "Anonymous messages" msgstr "Anonüümsed sõnumid" #: ../../static/t/room/edit/tab_config.html:122 msgid "No anonymous messages" msgstr "Anonüümsed sõnumid keelatud" #: ../../static/t/room/edit/tab_config.html:127 msgid "All messages are anonymous" msgstr "Kõik sõnumid on anonüümsed" #: ../../static/t/room/edit/tab_config.html:132 msgid "Prompt user when entering messages" msgstr "Teavita kasutajat sõnumi sisestamisel" #: ../../static/t/room/edit/tab_config.html:136 msgid "Room aide: " msgstr "Toa Korrapidaja: " #: ../../static/t/room/edit/tab_listserv.html:5 msgid "" "The contents of this room are being mailed as individual messages " "to the following list recipients:

    " msgstr "" #: ../../static/t/room/edit/tab_listserv.html:19 msgid "" "The contents of this room are being mailed in digest form to the " "following list recipients:

    " msgstr "" #: ../../static/t/room/edit/tab_listserv.html:39 msgid "Add recipients from Contacts or other address books" msgstr "Lisa saajad Kontaktidest või teistest aadressiraamatutest" #: ../../static/t/room/edit/tab_listserv.html:48 msgid "Allow non-subscribers to mail to this room." msgstr "" #: ../../static/t/room/edit/tab_listserv.html:54 msgid "Room post publication needs Admin permission." msgstr "" #: ../../static/t/room/edit/tab_listserv.html:59 msgid "Allow self-service subscribe/unsubscribe requests." msgstr "" #: ../../static/t/room/edit/tab_listserv.html:65 msgid "The URL for subscribe/unsubscribe is: " msgstr "" #: ../../static/t/room/edit/digestrecp_removal.html:1 #: ../../static/t/room/edit/pop3client_removal.html:9 #: ../../static/t/room/edit/listrecp_removal.html:1 #: ../../static/t/room/edit/rssclient_removal.html:5 msgid "(remove)" msgstr "(eemalda)" #: ../../static/t/room/edit/tab_admin.html:5 msgid "Delete this room" msgstr "Kustuta see tuba" #: ../../static/t/room/edit/tab_admin.html:10 #, fuzzy msgid "Set or change the icon for this rooms banner" msgstr "Määra või muuda selle toa banneri ikooni" #: ../../static/t/room/edit/tab_admin.html:14 #, fuzzy msgid "Edit this rooms Info file" msgstr "Muuda selle toa Info faili" #: ../../static/t/room/edit/tab_share.html:5 msgid "Shared with" msgstr "Jagatud" #: ../../static/t/room/edit/tab_share.html:6 msgid "Not shared with" msgstr "Ei ole jagatud" #: ../../static/t/room/edit/tab_share.html:11 #: ../../static/t/room/edit/tab_share.html:21 #, fuzzy msgid "Remote node name" msgstr "Kasutajanimi" #: ../../static/t/room/edit/tab_share.html:12 #: ../../static/t/room/edit/tab_share.html:22 #, fuzzy msgid "Remote room name" msgstr "Sisesta toa nimi:" #: ../../static/t/room/edit/tab_share.html:13 #: ../../static/t/room/edit/tab_share.html:23 msgid "Actions" msgstr "Tegevused" #: ../../static/t/room/edit/tab_share.html:35 msgid "" "When sharing a room, it must be shared from both ends. Adding a node to the " "'shared' list sends messages out, but in order to receive messages, the " "other nodes must be configured to send messages out to your system as well. " "
  • If the remote room name is blank, it is assumed that the room name is " "identical on the remote node.
  • If the remote room name is different, the " "remote node must also configure the name of the room here." msgstr "" #: ../../static/t/room/edit/tab_feed.html:2 msgid "" "Retrieve messages from these remote POP3 accounts and store them in this " "room:" msgstr "Kogu kirju nendelt POP3 kontodelt ja salvesta siia tuppa" #: ../../static/t/room/edit/tab_feed.html:12 msgid "Remote host" msgstr "Serveri aadress" #: ../../static/t/room/edit/tab_feed.html:15 msgid "Keep messages on server?" msgstr "Säilita koopia serveris?" #: ../../static/t/room/edit/tab_feed.html:16 msgid "Interval" msgstr "Intervall" #: ../../static/t/room/edit/tab_feed.html:31 msgid "Fetch the following RSS feeds and store them in this room:" msgstr "Kogu järgmiseid RSS feed'e ja salvesta nad siia tuppa:" #: ../../static/t/room/edit/tab_feed.html:43 msgid "Feed URL" msgstr "Feed'i URL" #: ../../static/t/room/edit/tab_access.html:5 #, fuzzy msgid "" "The users listed below have access to this room. To remove a user from the " "access list, select the user name from the list and click 'Kick'." msgstr "" "Allolevas nimekirjas olevatel kasutajatel on juurdepääs sellele toale. Et " "kasutajatnimekirjast eemaldada, vali kasutajanimi ning klõpsa 'Löö minema'" #: ../../static/t/room/edit/tab_access.html:20 msgid "" "To grant another user access to this room, enter the user name in the box " "below and click 'Invite'." msgstr "" "Et anda kasutajale juurdepääsu sellele toale, sisesta kasutajanimi kasti " "ning klõpsa 'Kutsu'" #: ../../static/t/room/edit/tab_access.html:26 msgid "Invite:" msgstr "Kutsu:" #: ../../static/t/room/edit/tab_access.html:35 msgid "Users" msgstr "Kasutajad" #: ../../static/t/room/zapped_list.html:7 msgid "Zapped (forgotten) rooms" msgstr "Unustatud toad" #: ../../static/t/room/zapped_list.html:10 #, fuzzy msgid "Click on any room to un-zap it and goto that room." msgstr "Klõpsa toal, et seda taas 'meelde tuletada' ning sinna siseneda.\n" #: ../../static/t/room/display_private.html:7 msgid "Go to a hidden room" msgstr "Mine peidetud tuppa" #: ../../static/t/room/display_private.html:8 msgid "" "If you know the name of a hidden (guess-name) or passworded room, you can " "enter that room by typing its name below. Once you gain access to a private " "room, it will appear in your regular room listings so you don‘t have to keep " "returning here." msgstr "" #: ../../static/t/room/display_private.html:14 msgid "Enter room name:" msgstr "Sisesta toa nimi:" #: ../../static/t/room/display_private.html:21 msgid "Enter room password:" msgstr "Sisesta toa salasõna:" #: ../../static/t/room/create.html:11 #: ../../static/t/menu/advanced_roomcommands.html:6 msgid "Create a new room" msgstr "Loo uus tuba" #: ../../static/t/room/create.html:18 msgid "Name of room: " msgstr "Toa nimi: " #: ../../static/t/room/create.html:32 msgid "Default view for room: " msgstr "Vaikimisi vaade sellele toale: " #: ../../static/t/room/zap_this.html:3 msgid "Zap (forget/unsubscribe) the current room" msgstr "Unusta praegune tuba" #: ../../static/t/room/zap_this.html:6 #, fuzzy msgid "If you select this option," msgstr "Muuda või kustuta see tuba" #: ../../static/t/room/zap_this.html:8 msgid "will disappear from your room list. Is this what you wish to do?" msgstr "" #: ../../static/t/menu/your_info.html:2 msgid "Change your preferences and settings" msgstr "Muuda oma eelistusi ja seadeid" #: ../../static/t/menu/your_info.html:3 msgid "Update your contact information" msgstr "Uuenda oma kontaktinfot" #: ../../static/t/menu/your_info.html:5 msgid "Enter your 'bio'" msgstr "Sisesta oma 'resümee'" #: ../../static/t/menu/your_info.html:6 msgid "Edit your online photo" msgstr "Muuda oma online fotot" #: ../../static/t/menu/your_info.html:8 msgid "Edit your push email settings" msgstr "Muuda oma push email (mobiili special) seadeid" #: ../../static/t/menu/your_info.html:9 #, fuzzy msgid "Manage your OpenIDs" msgstr "Muuda oma salasõna" #: ../../static/t/menu/basic_commands.html:3 msgid "List known rooms" msgstr "Näita kõiki teadaolevaid tube" #: ../../static/t/menu/basic_commands.html:3 msgid "Where can I go from here?" msgstr "Kuhu ma saan siit edasi minna?" #: ../../static/t/menu/basic_commands.html:4 ../../static/t/navbar.html:168 msgid "Goto next room" msgstr "Mine järgmisesse tuppa" #: ../../static/t/menu/basic_commands.html:4 msgid "...with unread messages" msgstr "...kus on lugemata sõnumeid" #: ../../static/t/menu/basic_commands.html:5 msgid "Skip to next room" msgstr "Hüppa edasi järgmisesse tuppa" #: ../../static/t/menu/basic_commands.html:5 msgid "(come back here later)" msgstr "(tule siia hiljem tagasi)" #: ../../static/t/menu/basic_commands.html:6 ../../static/t/navbar.html:5 msgid "Ungoto" msgstr "Mine tagasi" #: ../../static/t/menu/basic_commands.html:6 msgid "oops! Back to " msgstr "uups! Tagasi " #: ../../static/t/menu/basic_commands.html:10 ../../static/t/navbar.html:13 msgid "Read new messages" msgstr "Loe uusi sõnumeid" #: ../../static/t/menu/basic_commands.html:10 msgid "...in this room" msgstr "...selles toas" #: ../../static/t/menu/basic_commands.html:11 ../../static/t/navbar.html:19 msgid "Read all messages" msgstr "Loe kõiki sõnumeid" #: ../../static/t/menu/basic_commands.html:11 msgid "...old and new" msgstr "...nii vanu kui uusi" #: ../../static/t/menu/basic_commands.html:12 ../../static/t/navbar.html:25 msgid "Enter a message" msgstr "Sisesta sõnum" #: ../../static/t/menu/basic_commands.html:12 msgid "(post in this room)" msgstr "(postita siia tuppa)" #: ../../static/t/menu/basic_commands.html:13 msgid "File library" msgstr "Failikaust" #: ../../static/t/menu/basic_commands.html:13 msgid "(List files available for download)" msgstr "(Näita faile mida saab allalaadida)" #: ../../static/t/menu/basic_commands.html:17 msgid "Summary page" msgstr "Kokkuvõttelehekülg" #: ../../static/t/menu/basic_commands.html:17 msgid "Summary of my account" msgstr "Minu konto koondülevaade" #: ../../static/t/menu/basic_commands.html:18 msgid "User list" msgstr "Kasutajate nimekiri" #: ../../static/t/menu/basic_commands.html:18 msgid "(all registered users)" msgstr "(kõik registreeritud kasutajad)" #: ../../static/t/menu/basic_commands.html:19 msgid "Bye!" msgstr "Nägemist!" #: ../../static/t/menu/advanced_roomcommands.html:3 msgid "Edit or delete this room" msgstr "Muuda või kustuta see tuba" #: ../../static/t/menu/advanced_roomcommands.html:5 msgid "Go to a 'hidden' room" msgstr "Mine 'peidetud' tuppa" #: ../../static/t/menu/advanced_roomcommands.html:7 msgid "Zap (forget) this room" msgstr "Unusta see tuba" #: ../../static/t/menu/advanced_roomcommands.html:8 msgid "List all forgotten rooms" msgstr "Näita kõiki unustatud tube" #: ../../static/t/navbar.html:34 msgid "View contacts" msgstr "Vaata kontakte" #: ../../static/t/navbar.html:40 msgid "Add new contact" msgstr "Lisa uus kontakt" #: ../../static/t/navbar.html:49 msgid "Day view" msgstr "Päeva vaade" #: ../../static/t/navbar.html:55 msgid "Month view" msgstr "Kuu vaade" #: ../../static/t/navbar.html:61 msgid "Add new event" msgstr "Lisa uus sündmus" #: ../../static/t/navbar.html:70 msgid "Calendar list" msgstr "Kalendri nimekiri" #: ../../static/t/navbar.html:79 msgid "View tasks" msgstr "Vaata ülesandeid" #: ../../static/t/navbar.html:85 msgid "Add new task" msgstr "Lisa uus ülesanne" #: ../../static/t/navbar.html:94 msgid "View notes" msgstr "Vaata märkmeid" #: ../../static/t/navbar.html:101 msgid "Add new note" msgstr "Lisa uus märge" #: ../../static/t/navbar.html:110 msgid "Refresh message list" msgstr "Värskenda sõnumite nimekirja" #: ../../static/t/navbar.html:122 msgid "Write mail" msgstr "Saada kiri" #: ../../static/t/navbar.html:132 msgid "Wiki home" msgstr "Wiki koduleht" #: ../../static/t/navbar.html:139 msgid "Edit this page" msgstr "Muuda seda lehekülge" #: ../../static/t/navbar.html:145 msgid "History" msgstr "" #: ../../static/t/navbar.html:154 #, fuzzy msgid "New blog post" msgstr "uuemad postitused" #: ../../static/t/navbar.html:162 msgid "Skip this room" msgstr "Jäta tuba vahele" #: ../../static/t/msg_listview.html:18 msgid "Loading messages from server, please wait" msgstr "Laen serverist kirju, palun oota" #: ../../static/t/msg_listview.html:24 msgid "Open in new window" msgstr "Ava uues aknas" #: ../../static/t/msg_listview.html:26 msgid "Copy" msgstr "Kopeeri" #: ../../static/t/view_mailq/message.html:6 msgid "Originaly posted in: " msgstr "" #: ../../static/t/view_mailq/header.html:15 msgid "Refresh this page" msgstr "" #: ../../static/t/view_mailq/header.html:21 msgid "Message ID" msgstr "" #: ../../static/t/view_mailq/header.html:23 msgid "Date/time submitted" msgstr "" #: ../../static/t/view_mailq/header.html:25 msgid "Next attempt" msgstr "" #: ../../static/t/view_mailq/header.html:29 msgid "Recipients" msgstr "" #: ../../static/t/view_mailq/footer_empty.html:4 msgid "The queue is empty." msgstr "" #: ../../static/t/view_mailq/footer_empty.html:9 #: ../../static/t/view_mailq/footer.html:5 msgid "You do not have permission to view this resource." msgstr "" #: ../../static/t/get_logged_in.html:5 msgid "You must be logged in to access this page." msgstr "Sa pead olema sisselogitud, et siseneda sellele lehele." #: ../../static/t/get_logged_in.html:9 #: ../../static/t/edit_message/attachments_pane.html:3 msgid "Close window" msgstr "Sulge aken" #: ../../static/t/get_logged_in.html:55 msgid "Log in using a user name and password" msgstr "" #: ../../static/t/get_logged_in.html:60 ../../static/t/get_logged_in.html:75 msgid "Password:" msgstr "Salasõna:" #: ../../static/t/get_logged_in.html:65 ../../static/t/get_logged_in.html:69 msgid "New user? Register now" msgstr "Uus kasutaja? Registreeri nüüd" #: ../../static/t/get_logged_in.html:70 msgid "" "enter the name and password you wish to use, and click "New User." " msgstr "võta ühendust süsteemiadministraatoriga " #: ../../static/t/get_logged_in.html:83 msgid "Log in using OpenID" msgstr "Logi sisse kasutades OpenID'd" #: ../../static/t/get_logged_in.html:85 msgid "OpenID URL:" msgstr "" #: ../../static/t/get_logged_in.html:92 #, fuzzy msgid "Log in using Google" msgstr "Logi sisse kasutades OpenID'd" #: ../../static/t/get_logged_in.html:97 #, fuzzy msgid "Log in using Yahoo" msgstr "Logi sisse kasutades OpenID'd" #: ../../static/t/get_logged_in.html:102 #, fuzzy msgid "Log in using AOL or AIM" msgstr "Logi sisse kasutades OpenID'd" #: ../../static/t/get_logged_in.html:104 msgid "Enter your AOL or AIM screen name:" msgstr "" #: ../../static/t/get_logged_in.html:115 msgid "Please wait" msgstr "Palun oota" #: ../../static/t/summary/page.html:4 #, fuzzy msgid "Summary page for " msgstr "Kasutaja %s kokkuvõtteleht" #: ../../static/t/summary/page.html:21 msgid "Messages" msgstr "Sõnumid" #: ../../static/t/summary/page.html:39 msgid "Today on your calendar" msgstr "Täna sinu Kalendris" #: ../../static/t/summary/page.html:51 #, fuzzy msgid "Who‘s online now" msgstr "Kes on hetkel võrgus" #: ../../static/t/summary/page.html:60 msgid "About this server" msgstr "Sellest serverist" #: ../../static/t/summary/page.html:63 msgid "You are connected to" msgstr "" #: ../../static/t/summary/page.html:64 msgid "running" msgstr "" #: ../../static/t/summary/page.html:65 #, fuzzy msgid "with" msgstr "viies" #: ../../static/t/summary/page.html:66 msgid "server build" msgstr "" #: ../../static/t/summary/page.html:67 #, fuzzy msgid "and located in" msgstr "ja siis" #: ../../static/t/summary/page.html:68 #, fuzzy msgid "Your system administrator is" msgstr "Administratsioon" #: ../../static/t/edit_message/attachments_pane.html:16 msgid "Attach file" msgstr "Lisa manus" #: ../../static/t/edit_message/attachments_pane.html:21 msgid "Upload" msgstr "Lae üles" #: ../../static/t/edit_message/section_attach_select.html:4 #, fuzzy msgid "Remove" msgstr "(eemalda)" #: ../../static/t/loggedinas.html:3 #, fuzzy msgid "Logged in as" msgstr "Viimati sees" #: ../../static/t/loggedinas.html:6 #, fuzzy msgid "Not logged in." msgstr "Ei ole võrgus" #~ msgid "A script by that name already exists." #~ msgstr "Sellenimeline skript on juba olemas." #~ msgid "Create" #~ msgstr "Loo" #~ msgid "Delete script" #~ msgstr "Kustuta skript" #~ msgid "Delete this script?" #~ msgstr "Kas kustutan selle skripti?" #~ msgid "Move rule up" #~ msgstr "Liiguta reeglit üles" #~ msgid "Move rule down" #~ msgstr "Liiguta reeglit alla" #~ msgid "Delete rule" #~ msgstr "Kustuta reegel" #~ msgid "Reset form" #~ msgstr "Tühjenda vorm" #~ msgid "" #~ "You are connected to %s, running %s with %s, server build %s and located " #~ "in %s. Your system administrator is %s." #~ msgstr "" #~ "Sa oled ühendunud võrku %s, mis jookseb tarkvaral %s veebiliidesega %s, " #~ "serveri versioon %s ning asukohaga %s. Sinu süsteemiadministraator on %s." #~ msgid "Yes with users list" #~ msgstr "Jah, koos kasutajanimedega" #~ msgid "Room list" #~ msgstr "Tubade nimekiri" #, fuzzy #~ msgid "uname" #~ msgstr "Failinimi" #, fuzzy #~ msgid "text" #~ msgstr "ainult tekst" #, fuzzy #~ msgid "name" #~ msgstr "Failinimi" #, fuzzy #~ msgid "pname" #~ msgstr "Failinimi" #, fuzzy #~ msgid "password" #~ msgstr "Salasõna" #, fuzzy #~ msgid "pass" #~ msgstr "Ülesanded" #, fuzzy #~ msgid "display: none" #~ msgstr "Kuvatav nimi:" #~ msgid "Your password was not accepted." #~ msgstr "Sinu parooli ei aktsepteeritud." #~ msgid "If you already have an account on" #~ msgstr "Kui sul on juba konto" #~ msgid "enter your user name and password and click "Log in."" #~ msgstr "" #~ "siis sisesta oma kasutajanimi ja salasõna ning klõpsa "Logi sisse." #~ """ #~ msgid "Please log off properly when finished. " #~ msgstr "Kui lõpetad, siis palun logi korrektselt välja. " #~ msgid "See the" #~ msgstr "Vaata" #~ msgid "recommended browser list" #~ msgstr "soovitatud brauserite nimekirja" #~ msgid "" #~ "if you have trouble using Webcit.
  • You must have cookies " #~ "turned on. " #~ msgstr "" #~ "kui sul on Webcit'iga probleeme.
  • Sul peavad küpsisedlubatud olema. " #~ msgid "" #~ "Also keep in mind that if your browser is configured to block pop-up " #~ "windows, you will not be able to receive any instant messages." #~ msgstr "" #~ "Samuti pea meeles, et kui sinu brauser blokeerib hüpikaknaid (pop-up)siis " #~ "ei ole sa suuteline kiirsõnumeid vastu võtma." #~ msgid "Exit" #~ msgstr "Välju" #~ msgid "Change name" #~ msgstr "Muuda nime" #~ msgid "Change CSS" #~ msgstr "Muuda CSS" #~ msgid "Create new floor" #~ msgstr "Loo uus korrus" #~ msgid "" #~ "You have one or more instant messages waiting, but the Citadel Instant " #~ "Messenger window failed to open. This is probably because you have a " #~ "popup blocker installed. Please configure your popup blocker to allow " #~ "popups from this site if you wish to receive instant messages." #~ msgstr "" #~ "Sul on üks või enam kiirsõnumit ootamas, kuid Citadeli Sõnumitooja aken " #~ "ei suutnud avaneda. See on tingitud arvatavasti installeeritud pop-up " #~ "blokeerijast,või on netilehitsejal hüpikaknad keelatud. Palun luba " #~ "hüpikaknad siit lehelt." #, fuzzy #~ msgid "Change" #~ msgstr "Muuda CSS" #, fuzzy #~ msgid "Add node?" #~ msgstr "Lisa uus märge" #, fuzzy #~ msgid "Minutes" #~ msgstr "minutit" #, fuzzy #~ msgid "active" #~ msgstr "Üritan" #~ msgid "Send" #~ msgstr "Saada" #~ msgid "Pictures in" #~ msgstr "Pildid kaustas" #, fuzzy #~ msgid "Edit address book entry" #~ msgstr "See aadressiraamat on tühi" #, fuzzy #~ msgid "Delete user" #~ msgstr "Kustuta reegel" #, fuzzy #~ msgid "Delete this user?" #~ msgstr "Kas kustutan selle skripti?" #, fuzzy #~ msgid "Delete File" #~ msgstr "Kustuta reegel" #, fuzzy #~ msgid "Delete this message?" #~ msgstr "Kustuta see märge?" #, fuzzy #~ msgid "Powered by Citadel" #~ msgstr "Kuvab 'Powered by Citadel' ikooni" #, fuzzy #~ msgid "Go to your email inbox" #~ msgstr "Otsetee sinu e-maili kirjakasti" #, fuzzy #~ msgid "Go to your personal calendar" #~ msgstr "Otsetee sinu kalendri juurde" #, fuzzy #~ msgid "Go to your personal address book" #~ msgstr "Sinu isiklik aadressiraamat" #, fuzzy #~ msgid "Go to your personal notes" #~ msgstr "Sinu isiklikud märkmed" #, fuzzy #~ msgid "Go to your personal task list" #~ msgstr "Otsetee sinu isikliku ülesannete nimekirja juurde" #, fuzzy #~ msgid "List all your accessible rooms" #~ msgstr "Näita kõiki unustatud tube" #, fuzzy #~ msgid "Log off now?" #~ msgstr "Välju" #, fuzzy #~ msgid "Delete this entry?" #~ msgstr "Kustuta see märge?" #~ msgid "Delete this note?" #~ msgstr "Kustuta see märge?" #, fuzzy #~ msgid "Do you really want to kill this session?" #~ msgstr "Oled sa kindel, et soovid seda tuba kustutada?" #, fuzzy #~ msgid "Save changes?" #~ msgstr "Salvesta muudatused" #~ msgid "%d new of %d messages%s" #~ msgstr "%d uut, %d sõnumist%s" #~ msgid "" #~ "Leave all messages marked as unread, go to next room with unread messages" #~ msgstr "" #~ "Jäta kõik sõnumid märgituks kui lugemata ning mine järgmisesse tuppa kus " #~ "on lugemata sõnumeid" #~ msgid "Mark all messages as read, go to next room with unread messages" #~ msgstr "" #~ "Märgi siin sõnumid loetuks ja liigu järgmisesse tuppa kus on lugemata " #~ "sõnumeid" #~ msgid "Are you sure you want to delete this room?" #~ msgstr "Oled sa kindel, et soovid seda tuba kustutada?" #~ msgid "Unshare" #~ msgstr "Lõpeta jagamine" #~ msgid "Share" #~ msgstr "Jaga" #~ msgid "Kick" #~ msgstr "Löö minema" #~ msgid "Invite" #~ msgstr "Kutsu" #~ msgid "User" #~ msgstr "Kasutaja" #~ msgid "Create new room" #~ msgstr "Loo uus tuba" #~ msgid "Zap this room" #~ msgstr "Unusta tuba" #~ msgid "(nothing)" #~ msgstr "(ei midagi)" #~ msgid "Now exiting chat mode." #~ msgstr "Väljun sõnumivahetuse režiimist." #~ msgid "Help" #~ msgstr "Abi" #~ msgid "List users" #~ msgstr "Kuva kasutajad" #~ msgid "No messages here." #~ msgstr "Siin ei ole sõnumeid." #, fuzzy #~ msgid "no more messages" #~ msgstr "Anonüümsed sõnumid" #~ msgid "" #~ "Your icon bar has been updated. Please select any of its choices to " #~ "continue.
    You may need to force " #~ "refresh (SHIFT-F5) in order for changes to take effect" #~ msgstr "" #~ "Sinu ikooniriba on uuendatud. Palun klõpsa sealt mõnel ikoonil et edasi " #~ "minna.
    Võib juhtuda et sa pead " #~ "lehte refreshima (SHIFT-F5) et muudatused teoks saaksid" #~ msgid "Email" #~ msgstr "E-mail" #~ msgid "Error retrieving RSS feed: couldn't find messages\n" #~ msgstr "RSS feed'i vastuvõtmisel tekkis viga: ei leidnud sõnumeid\n" webcit-8.24-dfsg.orig/po/webcit/es.po0000644000175000017500000035643712271477123017264 0ustar michaelmichael# translation of webcit.po to es_ES.po # Copyright (C) 2008 - 2009 The Citadel Project - http://www.citadel.org # Gabriel C. Huertas # Carlos Zayas Guggiari # # Spanish translation # Copyright (C) 2005 - 2009 By Gabriel C. Huertas # This file is distributed under the GNU General Public License; # either Version 2 or # msgid "" msgstr "" "Project-Id-Version: WebCit\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-03-20 01:03-0400\n" "PO-Revision-Date: 2013-05-03 18:39+0000\n" "Last-Translator: Carlos Zayas Guggiari \n" "Language-Team: Spanish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2013-05-04 05:10+0000\n" "X-Generator: Launchpad (build 16598)\n" "Language: es\n" #: ../../roomops.c:708 ../../roomops.c:1005 ../../sieve.c:364 msgid "Cancelled. Changes were not saved." msgstr "Cancelado. Los cambios no se salvaron" #: ../../roomops.c:838 ../../sieve.c:417 msgid "Your changes have been saved." msgstr "Los cambios han sido salvados" #: ../../roomops.c:881 #, c-format msgid "User '%s' kicked out of room '%s'." msgstr "Usuario %s expulado de la sala %s." #: ../../roomops.c:898 #, c-format msgid "User '%s' invited to room '%s'." msgstr "Usuario %s invitado a la sala %s." #: ../../roomops.c:927 msgid "Cancelled. No new room was created." msgstr "Cancelado. Ninguna sala nueva se creó." #: ../../roomops.c:1187 msgid "Floor has been deleted." msgstr "El nivel fue borrado." #: ../../roomops.c:1211 msgid "New floor has been created." msgstr "Un nuevo nivel ha sido creado." #: ../../roomops.c:1290 msgid "Room list view" msgstr "Ver listado de salas" #: ../../roomops.c:1293 msgid "Show empty floors" msgstr "Mostrrar pisos vacíos" #: ../../roomviews.c:50 msgid "Bulletin Board" msgstr "Tablón de anuncios" #: ../../roomviews.c:51 msgid "Mail Folder" msgstr "Carpeta de Correo" #: ../../roomviews.c:52 msgid "Address Book" msgstr "Libreta de Direcciones" #: ../../roomviews.c:53 ../../static/t/iconbar.html:24 #: ../../static/t/iconbar/edit.html:55 msgid "Calendar" msgstr "Calendario" #: ../../roomviews.c:54 msgid "Task List" msgstr "Lista de Tareas" #: ../../roomviews.c:55 msgid "Notes List" msgstr "Lista de Notas" #: ../../roomviews.c:56 msgid "Wiki" msgstr "Wiki" #: ../../roomviews.c:57 msgid "Calendar List" msgstr "Lista de Calendario" #: ../../roomviews.c:58 msgid "Journal" msgstr "Diario" #: ../../roomviews.c:59 msgid "Drafts" msgstr "Borradores" #: ../../roomviews.c:60 msgid "Blog" msgstr "Blog" #: ../../tasks.c:93 msgid "Completed?" msgstr "¿Terminado?" #: ../../tasks.c:95 msgid "Name of task" msgstr "Nombre de la tarea" #: ../../tasks.c:97 msgid "Date due" msgstr "Fecha coclusión" #: ../../tasks.c:99 msgid "Category" msgstr "Categoría" #: ../../tasks.c:101 msgid "Show All" msgstr "Mostrar Todo" #: ../../tasks.c:223 msgid "Edit task" msgstr "Editar tarea" #: ../../tasks.c:242 ../../calendar.c:98 ../../calendar_view.c:298 #: ../../calendar_view.c:959 ../../calendar_view.c:1003 #: ../../calendar_view.c:1084 msgid "Summary:" msgstr "Sumario" #: ../../tasks.c:253 msgid "Start date:" msgstr "Fecha de inicio" #: ../../tasks.c:261 ../../tasks.c:291 msgid "No date" msgstr "Sin fecha" #: ../../tasks.c:265 ../../tasks.c:294 msgid "or" msgstr "o" #: ../../tasks.c:279 ../../tasks.c:308 msgid "Time associated" msgstr "Tiempo asociado" #: ../../tasks.c:283 msgid "Due date:" msgstr "Fecha finalización" #: ../../tasks.c:312 msgid "Completed:" msgstr "Completado:" #: ../../tasks.c:323 msgid "Category:" msgstr "Categoría:" #: ../../tasks.c:333 ../../calendar.c:159 ../../static/t/files.html:12 msgid "Description:" msgstr "Descripción:" #: ../../tasks.c:351 ../../event.c:764 msgid "Save" msgstr "Guardar" #: ../../tasks.c:352 ../../event.c:765 ../../static/t/aide/inet/section.html:5 #: ../../static/t/view_blog/comment.html:12 #: ../../static/t/view_blog/post.html:15 ../../static/t/view_message.html:32 #: ../../static/t/navbar.html:116 ../../static/t/msg_listview.html:27 msgid "Delete" msgstr "Eliminar" #: ../../tasks.c:353 ../../vcard_edit.c:1216 ../../paging.c:66 #: ../../event.c:767 ../../sysmsgs.c:69 ../../who.c:200 ../../auth.c:812 #: ../../static/t/edit_message.html:135 ../../static/t/confirmlogoff.html:4 msgid "Cancel" msgstr "Cancelar" #: ../../tasks.c:423 ../../calendar_view.c:1379 msgid "Untitled Task" msgstr "Tarea sin título" #: ../../fmt_date.c:310 msgid "Time format" msgstr "Formato horario" #: ../../listsub.c:54 ../../static/t/listsub/display.html:5 msgid "List subscription" msgstr "Lista subscripción" #: ../../listsub.c:67 ../../static/t/listsub/display.html:9 msgid "List subscribe/unsubscribe" msgstr "Listar suscribir/cancelar subscripción" #: ../../listsub.c:87 ../../static/t/listsub/display.html:15 #: ../../static/t/listsub/display.html:34 msgid "Confirmation request sent" msgstr "Enviada solicitud de confirmación" #: ../../listsub.c:89 #, c-format msgid "" "You are subscribing %s to the %s mailing list. The " "listserver has sent you an e-mail with one additional Web link for you to " "click on to confirm your subscription. This extra step is for your " "protection, as it prevents others from being able to subscribe you to lists " "without your consent.

    Please click on the link which is being e-" "mailed to you and your subscription will be confirmed.
    \n" msgstr "" "Te estás suscribiendo a %s en la %s lista de correo. El " "servidor de la lista te ha enviado un email con un link web y debe pulsarlo " "par confirmar su suscripción. Esta medida se toma por su seguridad, de " "forma que se impida a otros suscribirle sin su consentimiento.

    Por " "favor, pulse en el link que se le ha enviadoy su suscripción será " "activada.
    \n" #: ../../listsub.c:102 ../../static/t/listsub/display.html:24 msgid "Go back..." msgstr "Ir atrás" #: ../../listsub.c:253 ../../listsub.c:291 ../../listsub.c:327 #: ../../listsub.c:334 msgid "You need to specify the mailinglist to subscribe to." msgstr "Necesita especificar la lista de correo a suscribirse" #: ../../listsub.c:260 ../../listsub.c:298 msgid "You need to specify the email address you'd like to subscribe with." msgstr "" "Necesita especificar la dirección de correo con la que desea suscribirse." #: ../../blogview_renderer.c:58 ../../blogview_renderer.c:74 #, c-format msgid "%d comments" msgstr "%d comentarios" #: ../../blogview_renderer.c:61 ../../blogview_renderer.c:77 msgid "permalink" msgstr "Enlace permanente" #: ../../blogview_renderer.c:302 msgid "Newer posts" msgstr "los nuevos puestos de trabajo" #: ../../blogview_renderer.c:311 msgid "Older posts" msgstr "las entradas más antiguas" #: ../../useredit.c:629 msgid "" "An error occurred while trying to create or edit this address book entry." msgstr "" "Un error ocurrio mientras intentaba crear o editar esta entrada en la " "libreta de direcciones." #: ../../useredit.c:717 msgid "Changes were not saved." msgstr "Los cambios no se salvaron" #: ../../useredit.c:782 msgid "A new user has been created." msgstr "Se creó un nuevo usuario" #: ../../useredit.c:786 msgid "" "You are attempting to create a new user from within Citadel while running in " "host based authentication mode. In this mode, you must create new users on " "the host system, not within Citadel." msgstr "" "Está intentando crear un nuevo usuario denrtro de Citadel el cual está en " "modo de autenticación basado en anfitrión. En este modo, debe crear nuevos " "usuarios en el sistema anfitrión, no dentro de Citadel." #: ../../bbsview_renderer.c:312 msgid "Go to page: " msgstr "Ir a la página: " #: ../../bbsview_renderer.c:354 msgid "First" msgstr "Primera" #: ../../bbsview_renderer.c:360 msgid "Last" msgstr "Última" #: ../../graphics.c:56 msgid "Graphics upload has been cancelled." msgstr "Carga de gafico cancelada." #: ../../graphics.c:62 msgid "You didn't upload a file." msgstr "No subiste ningún fichero." #: ../../graphics.c:112 msgid "your photo" msgstr "tu foto" #: ../../graphics.c:119 msgid "the icon for this room" msgstr "el icono par esta sala" #: ../../graphics.c:127 msgid "the Greetingpicture for the login prompt" msgstr "la imagen de Saludo para el indicador de entrada" #: ../../graphics.c:135 msgid "the Logoff banner picture" msgstr "la imagen de la bandera de cierre de sessión" #: ../../graphics.c:146 msgid "the icon for this floor" msgstr "el icono para este nivel" #: ../../calendar_tools.c:100 msgid "Hour: " msgstr "Hora " #: ../../calendar_tools.c:120 msgid "Minute: " msgstr "Minuto " #: ../../calendar_tools.c:191 msgid "(status unknown)" msgstr "(estado desconocido)" #: ../../calendar_tools.c:207 msgid "(needs action)" msgstr "(requiere actuación)" #: ../../calendar_tools.c:210 msgid "(accepted)" msgstr "(aceptado)" #: ../../calendar_tools.c:213 msgid "(declined)" msgstr "(declinado)" #: ../../calendar_tools.c:216 msgid "(tenative)" msgstr "(tentativo)" #: ../../calendar_tools.c:219 msgid "(delegated)" msgstr "(delegado)" #: ../../calendar_tools.c:222 msgid "(completed)" msgstr "(completado)" #: ../../calendar_tools.c:225 msgid "(in process)" msgstr "(en proceso)" #: ../../calendar_tools.c:228 msgid "(none)" msgstr "(ninguno)" #: ../../notes.c:343 msgid "Click on any note to edit it." msgstr "Pulse en cualquier nota para editarla" #: ../../vcard_edit.c:175 ../../vcard_edit.c:178 msgid "(no name)" msgstr "(sin nombre)" #: ../../vcard_edit.c:443 msgid " (work)" msgstr " (trabajo)" #: ../../vcard_edit.c:445 msgid " (home)" msgstr " (casa)" #: ../../vcard_edit.c:447 msgid " (cell)" msgstr " (celular)" #: ../../vcard_edit.c:458 ../../vcard_edit.c:1120 msgid "Address:" msgstr "Dirección:" #: ../../vcard_edit.c:526 msgid "Telephone:" msgstr "Teléfono:" #: ../../vcard_edit.c:531 msgid "E-mail:" msgstr "Correo-e:" #: ../../vcard_edit.c:779 msgid "This address book is empty." msgstr "Esta libreta de direcciones está vacía." #: ../../vcard_edit.c:793 msgid "An internal error has occurred." msgstr "Un error interno ocurrió." #: ../../vcard_edit.c:944 msgid "Error" msgstr "Error" #: ../../vcard_edit.c:1048 msgid "Edit contact information" msgstr "Editar información de contacto" #: ../../vcard_edit.c:1068 msgid "Prefix" msgstr "Prefijo" #: ../../vcard_edit.c:1068 msgid "First Name" msgstr "Primero" #: ../../vcard_edit.c:1068 msgid "Middle Name" msgstr "Medio" #: ../../vcard_edit.c:1068 msgid "Last Name" msgstr "Apellido" #: ../../vcard_edit.c:1068 msgid "Suffix" msgstr "Sufijo" #: ../../vcard_edit.c:1089 msgid "Display name:" msgstr "Mostrar nombre:" #: ../../vcard_edit.c:1096 msgid "Title:" msgstr "Título:" #: ../../vcard_edit.c:1103 msgid "Organization:" msgstr "Organización:" #: ../../vcard_edit.c:1114 msgid "PO box:" msgstr "Aptdo. Correos" #: ../../vcard_edit.c:1130 msgid "City:" msgstr "Ciudad" #: ../../vcard_edit.c:1136 msgid "State:" msgstr "Estado:" #: ../../vcard_edit.c:1142 msgid "ZIP code:" msgstr "Código postal" #: ../../vcard_edit.c:1148 msgid "Country:" msgstr "País" #: ../../vcard_edit.c:1158 msgid "Home telephone:" msgstr "Teléfono de casa" #: ../../vcard_edit.c:1164 msgid "Work telephone:" msgstr "Teléfono del trabajo" #: ../../vcard_edit.c:1170 msgid "Mobile telephone:" msgstr "Teléfono móvil:" #: ../../vcard_edit.c:1176 msgid "Fax number:" msgstr "Número de fax:" #: ../../vcard_edit.c:1187 msgid "Primary Internet e-mail address" msgstr "Dirección de email primaria" #: ../../vcard_edit.c:1194 msgid "Internet e-mail aliases" msgstr "Alias de email" #: ../../vcard_edit.c:1215 ../../sysmsgs.c:67 msgid "Save changes" msgstr "Salvar cambios" #: ../../vcard_edit.c:1261 msgid "Unable to enter the room to save your message" msgstr "Imposible entrar en la sala para guardar el mensaje" #: ../../vcard_edit.c:1265 msgid "Aborting." msgstr "Abortando." #: ../../vcard_edit.c:1297 ../../vcard_edit.c:1341 ../../auth.c:367 #: ../../auth.c:397 msgid "An error has occurred." msgstr "Se produjo un error" #: ../../vcard_edit.c:1399 msgid "Could Not decode vcard photo\n" msgstr "No se pudo descodificar vcard foto\n" #: ../../preferences.c:880 msgid "Cancelled. No settings were changed." msgstr "Cancelado. No se cambió la configuración." #: ../../preferences.c:1092 msgid "Make this my start page" msgstr "Hacer de esta mi página de inicio" #: ../../preferences.c:1130 msgid "This isn't allowed to become the start page." msgstr "Está no está permitida para ser la página de inicio." #: ../../preferences.c:1132 msgid "You no longer have a start page selected." msgstr "Ya no tiene página de inicio seleccionada." #: ../../preferences.c:1182 msgid "Prefered startpage" msgstr "Página de inicio preferida" #: ../../calendar.c:76 msgid "Meeting invitation" msgstr "Invitación a reunión" #: ../../calendar.c:79 msgid "Attendee's reply to your invitation" msgstr "Respuesta en atención a la invitación" #: ../../calendar.c:82 msgid "Published event" msgstr "Evento publicado" #: ../../calendar.c:85 msgid "This is an unknown type of calendar item." msgstr "Este es un elemento de calendario desconocido." #: ../../calendar.c:107 ../../calendar_view.c:306 ../../calendar_view.c:964 #: ../../calendar_view.c:1008 ../../calendar_view.c:1089 msgid "Location:" msgstr "Localización" #: ../../calendar.c:132 ../../calendar_view.c:351 ../../calendar_view.c:970 msgid "Date:" msgstr "Fecha" #: ../../calendar.c:139 ../../calendar_view.c:373 ../../calendar_view.c:1013 #: ../../calendar_view.c:1099 msgid "Starting date/time:" msgstr "Fecha/hora de comienzo:" #: ../../calendar.c:150 ../../calendar_view.c:376 ../../calendar_view.c:1015 #: ../../calendar_view.c:1101 msgid "Ending date/time:" msgstr "Fecha/hora de finalización:" #: ../../calendar.c:168 ../../event.c:90 msgid "Recurrence" msgstr "Recurrencia" #: ../../calendar.c:169 ../../event.c:505 msgid "This is a recurring event" msgstr "Este es un evento recurrente" #: ../../calendar.c:178 msgid "Attendee:" msgstr "Attn.:" #: ../../calendar.c:218 #, c-format msgid "This is an update of '%s' which is already in your calendar." msgstr "Esta es una actualizaciñon de '%s' que está ya en su calendario." #: ../../calendar.c:222 #, c-format msgid "" "This event would conflict with '%s' which is already in your calendar." msgstr "" "Este evento entrará en conflicto con '%s' que está ya en su calendario." #: ../../calendar.c:227 msgid "Update:" msgstr "Actualizar:" #: ../../calendar.c:228 msgid "CONFLICT:" msgstr "CONFLICTO" #: ../../calendar.c:251 msgid "How would you like to respond to this invitation?" msgstr "¿Como le gustaría responder a esta invitación?" #: ../../calendar.c:252 msgid "Accept" msgstr "Aceptar" #: ../../calendar.c:253 msgid "Tentative" msgstr "Tentativa" #: ../../calendar.c:254 msgid "Decline" msgstr "Declinar" #: ../../calendar.c:271 msgid "Click Update to accept this reply and update your calendar." msgstr "" "Pulse Actualizar para aceptar esta respuesta y actualizar su " "calendario." #: ../../calendar.c:272 msgid "Update" msgstr "Actualizar" #: ../../calendar.c:273 msgid "Ignore" msgstr "Ignorar" #: ../../calendar.c:295 msgid "There was an error parsing this calendar item." msgstr "Se produjo un error al pasar este elemento de calendario." #: ../../calendar.c:328 msgid "" "You have accepted this meeting invitation. It has been entered into your " "calendar." msgstr "Aceptaste la convocatoria de reunión. Se ha anotado en tu calendario" #: ../../calendar.c:332 msgid "" "You have tentatively accepted this meeting invitation. It has been " "'pencilled in' to your calendar." msgstr "" "Aceptaste tentativamente la convocatoria de reunión. Se anotó'a lápiz' en tu " "calendario" #: ../../calendar.c:336 msgid "" "You have declined this meeting invitation. It has not been entered " "into your calendar." msgstr "" "Declinaste la convocatoria de reunión. No se anotó en tu calendario" #: ../../calendar.c:341 msgid "A reply has been sent to the meeting organizer." msgstr "Se envió una respuesta al organizador de la reunión." #. / Translators: RSVP aka Répondez s'il-vous-plaît Is the term #. / that the recipient of an ical-invitation should please #. / answer this request. #: ../../calendar.c:376 msgid "Your calendar has been updated to reflect this RSVP." msgstr "Su calendario se actualizó para reflegar este RSVP." #: ../../calendar.c:378 msgid "" "You have chosen to ignore this RSVP. Your calendar has not been " "updated." msgstr "Eligió ignorar este RSVP. Su calendario no se actualizó" #: ../../calendar.c:932 msgid "Calendar day view begins at:" msgstr "La visualización del calendario comienza por el dia:" #: ../../calendar.c:933 msgid "Calendar day view ends at:" msgstr "Los dias mostrados del calendario finalizan en:" #: ../../calendar.c:934 msgid "Week starts on:" msgstr "La semana comienza el día:" #: ../../paging.c:35 msgid "Send instant message" msgstr "Enviar mensaje instantáneo" #: ../../paging.c:43 msgid "Send an instant message to: " msgstr "Enviar un mensaje instantáneo a: " #: ../../paging.c:57 msgid "Enter message text:" msgstr "Introducir texto de mensaje:" #: ../../paging.c:65 ../../static/t/edit_message.html:109 msgid "Send message" msgstr "Enviar mensaje" #: ../../paging.c:84 msgid "Message was not sent." msgstr "El mensaje no se envió." #: ../../paging.c:95 msgid "Message has been sent to " msgstr "El mensaje ha sido enviado a " #: ../../iconbar.c:328 msgid "Iconbar Setting" msgstr "Configuración de barra de iconos" #. #. * Set to 'unknown' right from the beginning. Unless we learn #. * something else, that's what we'll go with. #. #: ../../availability.c:148 msgid "availability unknown" msgstr "disponibilidad desconocida" #: ../../availability.c:169 msgid "free" msgstr "libre" #: ../../availability.c:179 msgid "BUSY" msgstr "OCUPADO" #: ../../serv_func.c:193 msgid "" "This server is already serving its maximum number of users and cannot accept " "any additional logins at this time. Please try again later or contact your " "system administrator." msgstr "" "Este servidor ya está sirviendo su número máximo de usuarios y no puede " "aceptar inicios de sesión adicionales en este momento. Por favor, inténtelo " "de nuevo más tarde o póngase en contacto con el administrador del sistema." #: ../../serv_func.c:198 ../../serv_func.c:227 msgid "Received unexpected answer from Citadel server; bailing out." msgstr "Respuesta inesperada desde el servidor Citadel; liberando operación." #: ../../serv_func.c:236 #, c-format msgid "" "You are connected to a Citadel server running Citadel %d.%02d. \n" "In order to run this version of WebCit you must also have Citadel %d.%02d or " "newer.\n" "\n" "\n" msgstr "" "Estas conectado a un servidor Citadel, corriendo Citadel %d.%02d. \n" "Para poder correr esta versión de WebCit, también debes tener Citade %d.%02d " "o posterior.\n" "\n" "\n" #: ../../event.c:70 msgid "seconds" msgstr "segundos" #: ../../event.c:71 msgid "minutes" msgstr "minutos" #: ../../event.c:72 msgid "hours" msgstr "horas" #: ../../event.c:73 msgid "days" msgstr "días" #: ../../event.c:74 msgid "weeks" msgstr "semanas" #: ../../event.c:75 msgid "months" msgstr "meses" #: ../../event.c:76 msgid "years" msgstr "años" #: ../../event.c:77 msgid "never" msgstr "nunca" #: ../../event.c:81 msgid "first" msgstr "primero" #: ../../event.c:82 msgid "second" msgstr "segundo" #: ../../event.c:83 msgid "third" msgstr "tercero" #: ../../event.c:84 msgid "fourth" msgstr "cuarto" #: ../../event.c:85 msgid "fifth" msgstr "quinto" #: ../../event.c:88 msgid "Event" msgstr "Evento" #: ../../event.c:89 ../../event.c:437 ../../event.c:449 msgid "Attendees" msgstr "Attn." #: ../../event.c:167 msgid "Add or edit an event" msgstr "Añadir o editar un evento" #: ../../event.c:206 ../../static/t/iconbar.html:13 #: ../../static/t/iconbar/edit.html:29 msgid "Summary" msgstr "Sumario" #: ../../event.c:217 msgid "Location" msgstr "Localización" #: ../../event.c:228 ../../calendar_view.c:760 msgid "Start" msgstr "Comienzo" #: ../../event.c:271 ../../calendar_view.c:957 ../../calendar_view.c:986 msgid "All day event" msgstr "Todos los eventos del día" #: ../../event.c:277 ../../calendar_view.c:761 msgid "End" msgstr "Fin" #: ../../event.c:327 ../../static/t/iconbar.html:34 #: ../../static/t/iconbar/edit.html:49 msgid "Notes" msgstr "Notas" #: ../../event.c:369 msgid "Organizer" msgstr "Organizador" #: ../../event.c:374 msgid "(you are the organizer)" msgstr "(tu eres el organizador)" #: ../../event.c:392 msgid "Show time as:" msgstr "Mostrar hora como:" #: ../../event.c:415 msgid "Free" msgstr "Libre" #: ../../event.c:423 msgid "Busy" msgstr "Ocupado" #: ../../event.c:440 msgid "(One per line)" msgstr "(Uno por línea)" #: ../../event.c:450 ../../static/t/edit_message.html:143 #: ../../static/t/iconbar.html:29 ../../static/t/iconbar/edit.html:42 msgid "Contacts" msgstr "Contactos" #: ../../event.c:513 msgid "Recurrence rule" msgstr "Regla de recuerrencia" #: ../../event.c:517 msgid "Repeats every" msgstr "Se repite cada" #. begin 'weekday_selector' div #: ../../event.c:535 msgid "on these weekdays:" msgstr "en estos días laborables:" #: ../../event.c:593 #, c-format msgid "on day %s%d%s of the month" msgstr "en días %s%d%s de el mes" #: ../../event.c:602 ../../event.c:664 msgid "on the " msgstr "en el " #: ../../event.c:626 msgid "of the month" msgstr "del mes" #: ../../event.c:655 msgid "every " msgstr "cada " #: ../../event.c:656 msgid "year on this date" msgstr "año de esta fecha" #: ../../event.c:688 ../../static/t/msg_listselector_bottom.html:7 #: ../../static/t/msg_listselector_top.html:7 msgid "of" msgstr "de" #: ../../event.c:712 msgid "Recurrence range" msgstr "Rango recurrente" #: ../../event.c:720 msgid "No ending date" msgstr "Sin fecha de finalización" #: ../../event.c:727 msgid "Repeat this event" msgstr "Repetir este evento" #: ../../event.c:730 msgid "times" msgstr "veces" #: ../../event.c:738 msgid "Repeat this event until " msgstr "Repetir este evento hasta " #: ../../event.c:766 msgid "Check attendee availability" msgstr "Comprobar posibilidad de atender" #: ../../event.c:858 ../../calendar_view.c:272 ../../calendar_view.c:468 #: ../../calendar_view.c:937 msgid "Untitled Event" msgstr "Evento sin título" #: ../../sysmsgs.c:52 #, c-format msgid "Edit %s" msgstr "Editar %s" #: ../../sysmsgs.c:55 #, c-format msgid "" "Enter %s below. Text is formatted to the reader's browser. A newline is " "forced by preceding the next line by a blank." msgstr "" "Introducir %s abajo. El texto se reformateará según ancho de pantalla del " "lector. To defeat the formatting, indent a line at least one space." #: ../../sysmsgs.c:89 #, c-format msgid "Cancelled. %s was not saved." msgstr "Cancelado %s no se salvó" #: ../../sysmsgs.c:109 msgid " has been saved." msgstr " a sido guardado." #: ../../sysmsgs.c:116 ../../sysmsgs.c:117 msgid "Room info" msgstr "Información de sala" #: ../../sysmsgs.c:122 ../../sysmsgs.c:124 msgid "Your bio" msgstr "Tu biografía" #: ../../calendar_view.c:297 ../../calendar_view.c:958 #: ../../calendar_view.c:1002 ../../calendar_view.c:1083 #: ../../static/t/sieve/display_one.html:20 msgid "From" msgstr "De" #: ../../calendar_view.c:355 ../../calendar_view.c:974 msgid "Starting date:" msgstr "Fecha de inicio:" #: ../../calendar_view.c:361 ../../calendar_view.c:976 msgid "Ending date:" msgstr "Fecha de fin:" #: ../../calendar_view.c:369 ../../calendar_view.c:1095 msgid "Date/time:" msgstr "Fecha/hora:" #: ../../calendar_view.c:386 ../../calendar_view.c:980 #: ../../calendar_view.c:1018 ../../calendar_view.c:1105 #: ../../static/t/room/edit/tab_share.html:32 msgid "Notes:" msgstr "Notas:" #: ../../calendar_view.c:585 ../../calendar_view.c:721 msgid "previous" msgstr "anterior" #: ../../calendar_view.c:597 ../../calendar_view.c:733 #: ../../calendar_view.c:1308 msgid "next" msgstr "siguiente" #: ../../calendar_view.c:756 msgid "Week" msgstr "Semana" #: ../../calendar_view.c:758 msgid "Hours" msgstr "Horas" #: ../../calendar_view.c:759 ../../static/t/sieve/display_one.html:22 #: ../../static/t/msg_listview.html:9 msgid "Subject" msgstr "Asunto" #: ../../calendar_view.c:1001 ../../calendar_view.c:1024 msgid "Ongoing event" msgstr "Evento en curso" #: ../../messages.c:70 msgid "ERROR:" msgstr "ERROR" #: ../../messages.c:88 msgid "Empty message" msgstr "Mensaje vacío" #: ../../messages.c:1010 msgid "Cancelled. Message was not posted." msgstr "Cancelado. El mensaje no ha sido enviado." #: ../../messages.c:1013 msgid "Automatically cancelled because you have already saved this message." msgstr "Cancelado automáticamente porque ya habías salvado este mensaje." #: ../../messages.c:1037 msgid "Saved to Drafts failed: " msgstr "Guardar a Borradores fallo: " #: ../../messages.c:1102 msgid "Refusing to post empty message.\n" msgstr "Se negó enviar mensaje vacío.\n" #: ../../messages.c:1128 msgid "Message has been saved to Drafts.\n" msgstr "El mensaje ha sido guardado en Borradores.\n" #: ../../messages.c:1137 msgid "Message has been sent.\n" msgstr "El mensaje ha sido enviado.\n" #: ../../messages.c:1140 msgid "Message has been posted.\n" msgstr "El mensaje ha sido enviado.\n" #: ../../messages.c:1679 msgid "The message was not moved." msgstr "No se movió el mensaje." #: ../../messages.c:1719 #, c-format msgid "An error occurred while retrieving this part: %s/%s\n" msgstr "Un error ocurrió mientras se obtenía esta parte: %s/%s\n" #: ../../messages.c:1796 #, c-format msgid "An error occurred while retrieving this part: %s\n" msgstr "Ocurrió un error mientras se recuperaba esta parte: %s\n" #: ../../messages.c:1956 msgid "Attach signature to email messages?" msgstr "¿Añadir firma a el correo electrónico?" #: ../../messages.c:1959 msgid "Use this signature:" msgstr "Usar esta firma:" #: ../../messages.c:1961 msgid "Default character set for email headers:" msgstr "Juego de caracteres por defecto para cabeceras de correo:" #: ../../messages.c:1964 msgid "Preferred email address" msgstr "Dirección de correo preferida" #: ../../messages.c:1966 msgid "Preferred display name for email messages" msgstr "Nombre preferido a mostrar para mensajes de correo" #: ../../messages.c:1970 msgid "Preferred display name for bulletin board posts" msgstr "Nombre preferido a mostrar en envíos al tablero de mensajes" #: ../../messages.c:1973 msgid "Mailbox view mode" msgstr "Modo de vista buzón" #: ../../inetconf.c:110 ../../inetconf.c:119 ../../inetconf.c:133 #: ../../inetconf.c:159 ../../netconf.c:156 ../../netconf.c:183 #: ../../netconf.c:191 ../../netconf.c:239 ../../netconf.c:247 msgid "Invalid Parameter" msgstr "Parámetro inválido" #: ../../inetconf.c:126 msgid " has been deleted." msgstr " ha sido borrado" #. added status message #: ../../inetconf.c:144 msgid " added." msgstr " agregado" #: ../../who.c:154 msgid "Edit your session display" msgstr "Editar la vista de sus sesión" #: ../../who.c:158 msgid "" "This screen allows you to change the way your session appears in the 'Who is " "online' listing. To turn off any 'fake' name you've previously set, simply " "click the appropriate 'change' button without typing anything in the " "corresponding box. " msgstr "" "Esta pantalla te permite cambiar la forma en que tu sesión aparece en 'Quién " "está en línea' Para desactivar cualquier nombre 'fake' (falso alias) creado " "previamente, simplemente pulse el botón apropiado 'cambiar' sin escribir " "nada en la caja correspondiente. " #: ../../who.c:171 msgid "Room name:" msgstr "Nombre de sala" #: ../../who.c:176 msgid "Change room name" msgstr "Cambiar nombre de sala" #: ../../who.c:180 msgid "Host name:" msgstr "Nombre de Host" #: ../../who.c:185 msgid "Change host name" msgstr "Cambiar nombre de host" #: ../../who.c:190 ../../static/t/aide/edituser/detailview.html:20 #: ../../static/t/openid_manual_create.html:9 #: ../../static/t/get_logged_in.html:57 ../../static/t/get_logged_in.html:72 msgid "User name:" msgstr "Nombre de usuario:" #: ../../who.c:195 msgid "Change user name" msgstr "Cambiar nombre de usuario" #: ../../siteconfig.c:46 ../../siteconfig.c:64 ../../roomlist.c:44 #: ../../roomlist.c:394 ../../static/t/room/edit/tab_expire.html:72 #: ../../static/t/room/edit/tab_config.html:149 #: ../../static/t/room/edit/tab_access.html:42 msgid "Higher access is required to access this function." msgstr "" "Para acceder a esta funcionalidad, se necesita tener un mayor nivel de " "acceso." #: ../../siteconfig.c:256 msgid "" "WARNING: Failed to parse Server Config; do you run a to new citserver?" msgstr "" "ADVERTENCIA: No se pudo analizar la configuración del servidor, se ejecuta " "un nuevo citserver?" #: ../../siteconfig.c:319 msgid "Your system configuration has been updated." msgstr "Su confiración de sistema ha sido actualizada" #: ../../wiki.c:69 ../../wiki.c:162 ../../wiki.c:282 #, c-format msgid "There is no room called '%s'." msgstr "No existe la sala denominada '%s'." #: ../../wiki.c:76 #, c-format msgid "'%s' is not a Wiki room." msgstr "'%s' no es una sala Wiki." #: ../../wiki.c:110 #, c-format msgid "There is no page called '%s' here." msgstr "Aquí no existe ninguna página denominada '%s'." #: ../../wiki.c:112 msgid "" "Select the 'Edit this page' link in the room banner if you would like to " "create this page." msgstr "" "Seleccione el enlace 'Editar esta página' en el banner de la sala si " "deseacrear esta página." #: ../../wiki.c:181 ../../static/t/msg_listview.html:11 msgid "Date" msgstr "Fecha" #: ../../wiki.c:182 msgid "Author" msgstr "Autor" #: ../../wiki.c:209 ../../wiki.c:218 msgid "(show)" msgstr "(mostrar)" #: ../../wiki.c:211 ../../static/t/navbar.html:145 msgid "Current version" msgstr "Versión actual" #: ../../wiki.c:223 msgid "(revert)" msgstr "(revertir)" #: ../../wiki.c:300 msgid "Page title" msgstr "Título de página" #: ../../webcit.c:316 msgid "Authorization Required" msgstr "Autorización requerida" #: ../../webcit.c:324 #, c-format msgid "" "The resource you requested requires a valid username and password. You could " "not be logged in: %s\n" msgstr "" "El recurso solicitado rquiere un nombre y contraseña de usuarios válidos. No " "podrás conectarte a: %s\n" #: ../../webcit.c:647 ../../auth.c:526 msgid "" "This program was unable to connect or stay connected to the Citadel server. " "Please report this problem to your system administrator." msgstr "" "Este programa fue incapaz de conectarse o de permanecer conectado al " "servidor Citadel.Por favor, informe de este problema al administrador del " "sistema." #: ../../webcit.c:654 ../../auth.c:532 msgid "Read More..." msgstr "Leer más..." #: ../../smtpqueue.c:134 ../../static/t/aide/ignetconf/section.html:5 #: ../../static/t/view_mailq/message.html:2 msgid "(Delete)" msgstr "(Borrar)" #: ../../smtpqueue.c:334 msgid "First Attempt pending" msgstr "Primer Intento pendiente" #: ../../roomlist.c:99 msgid "My Folders" msgstr "Mis carpetas" #: ../../downloads.c:289 #, c-format msgid "An error occurred while retrieving this file: %s\n" msgstr "Un error ocurrió mientras se obtenía este archivo: %s\n" #: ../../roomtokens.c:572 msgid "file" msgstr "archivo" #: ../../roomtokens.c:574 msgid "files" msgstr "archivos" #: ../../summary.c:128 msgid "(None)" msgstr "(Ninguno)" #: ../../summary.c:184 msgid "(Nothing)" msgstr "(Nada)" #: ../../msg_renderers.c:579 ../../static/t/who/bio.html:15 msgid "edit" msgstr "editar" #: ../../msg_renderers.c:1119 msgid "I don't know how to display " msgstr "No se como mostrarlo " #: ../../msg_renderers.c:1353 msgid "(no subject)" msgstr "(sin asunto)" #: ../../addressbook_popup.c:186 msgid "Add" msgstr "Añadir" #. an erased user #: ../../auth.c:30 ../../static/t/aide/edituser/detailview.html:43 #: ../../static/t/aide/siteconfig/tab_access.html:40 #: ../../static/t/aide/siteconfig/tab_access.html:51 msgid "Deleted" msgstr "Borrado" #. a new user #: ../../auth.c:33 ../../static/t/aide/edituser/detailview.html:44 #: ../../static/t/aide/siteconfig/tab_access.html:41 #: ../../static/t/aide/siteconfig/tab_access.html:52 #: ../../static/t/get_logged_in.html:79 msgid "New User" msgstr "Nuevo Usuario" #. a trouble maker #: ../../auth.c:36 ../../static/t/aide/edituser/detailview.html:45 #: ../../static/t/aide/siteconfig/tab_access.html:42 #: ../../static/t/aide/siteconfig/tab_access.html:53 msgid "Problem User" msgstr "Usuario Problemático" #. user with normal privileges #: ../../auth.c:39 ../../static/t/aide/edituser/detailview.html:46 #: ../../static/t/aide/siteconfig/tab_access.html:43 #: ../../static/t/aide/siteconfig/tab_access.html:54 msgid "Local User" msgstr "Usuario Local" #. a user that may access network resources #: ../../auth.c:42 ../../static/t/aide/edituser/detailview.html:47 #: ../../static/t/aide/siteconfig/tab_access.html:44 #: ../../static/t/aide/siteconfig/tab_access.html:55 msgid "Network User" msgstr "Usuario de la red" #. a moderator #: ../../auth.c:45 ../../static/t/aide/edituser/detailview.html:48 #: ../../static/t/aide/siteconfig/tab_access.html:45 #: ../../static/t/aide/siteconfig/tab_access.html:56 msgid "Preferred User" msgstr "Usuario Preferente" #. chief #: ../../auth.c:48 ../../static/t/aide/edituser/detailview.html:49 #: ../../static/t/aide/siteconfig/tab_access.html:46 #: ../../static/t/aide/siteconfig/tab_access.html:57 msgid "Admin" msgstr "Administrador" #: ../../auth.c:513 ../../static/t/iconbar.html:80 #: ../../static/t/confirmlogoff.html:3 #: ../../static/t/menu/basic_commands.html:19 msgid "Log off" msgstr "Log off (desconectar)" #: ../../auth.c:537 msgid "Log in again" msgstr "Iniciar acceso de nuevo" #: ../../auth.c:585 ../../static/t/aide/usermanagement.html:3 msgid "Validate new users" msgstr "Validación de nuevos usuarios" #: ../../auth.c:605 msgid "No users require validation at this time." msgstr "Ningún usuario requiere validación por el momento" #: ../../auth.c:655 msgid "very weak" msgstr "muy débil" #: ../../auth.c:658 msgid "weak" msgstr "débil" #: ../../auth.c:661 msgid "ok" msgstr "correcto" #: ../../auth.c:665 msgid "strong" msgstr "fuerte" #: ../../auth.c:683 #, c-format msgid "Current access level: %d (%s)\n" msgstr "Nivel actual de acceso: %d (%s)\n" #: ../../auth.c:691 msgid "Select access level for this user:" msgstr "Seleccione el nivel de acceso para este usuario:" #: ../../auth.c:776 ../../static/t/menu/your_info.html:4 msgid "Change your password" msgstr "Cambie su contraseña" #: ../../auth.c:800 msgid "Enter new password:" msgstr "Introducir nueva contraseña" #: ../../auth.c:804 msgid "Enter it again to confirm:" msgstr "Introdúzcala de nuevo como confirmación:" #: ../../auth.c:810 msgid "Change password" msgstr "Cambia contraseña" #: ../../auth.c:830 msgid "Cancelled. Password was not changed." msgstr "Cancelado. No se cambió la contraseña." #: ../../auth.c:839 msgid "They don't match. Password was not changed." msgstr "No cuadran. La contraseña no se cambia." #: ../../auth.c:845 msgid "Blank passwords are not allowed." msgstr "No se permiten contraseñas en blanco" #: ../../openid.c:34 msgid "Manage Account/OpenID Associations" msgstr "Administrar Asociación Cuenta/OpenID" #: ../../openid.c:52 msgid "Do you really want to delete this OpenID?" msgstr "Realmente quiere borrar este OpenID?" #: ../../openid.c:53 msgid "(delete)" msgstr "(eliminar)" #: ../../openid.c:61 msgid "Add an OpenID: " msgstr "Agregar un OpenID: " #: ../../openid.c:64 msgid "Attach" msgstr "Adjuntar" #: ../../openid.c:68 #, c-format msgid "%s does not permit authentication via OpenID." msgstr "%s no permite autenticación vía OpenID." #: ../../html2html.c:136 #, c-format msgid "realloc() error! couldn't get %d bytes: %s" msgstr "¡realloc() error! no se pudieron conseguir %d bytes: %s" #: ../../static/t/viewomatic.html:4 msgid "View as:" msgstr "Ver como:" #: ../../static/t/sieve/list.html:32 ../../static/t/sieve/none.html:4 #: ../../static/t/menu/your_info.html:7 msgid "View/edit server-side mail filters" msgstr "Ver/editar filtros de correo del lado del servidor" #: ../../static/t/sieve/list.html:41 msgid "When new mail arrives: " msgstr "Al llegar nuevos e-mails: " #: ../../static/t/sieve/list.html:43 msgid "Leave it in my inbox without filtering" msgstr "Dejarlos en mi bandeja de entrada sin filtrarlos" #: ../../static/t/sieve/list.html:44 msgid "Filter it according to rules selected below" msgstr "La filtración se hará según las reglas siguientes" #: ../../static/t/sieve/list.html:45 msgid "Filter it through a manually edited script (advanced users only)" msgstr "" "Filtrarlo mediante un script editado manualmente (sólo para los usuarios " "avanzados)" #: ../../static/t/sieve/list.html:52 msgid "Your incoming mail will not be filtered through any scripts." msgstr "Al llegar el correo, no se filtrará mediante ningún script." #: ../../static/t/sieve/list.html:64 msgid "Add rule" msgstr "Agregar regla" #: ../../static/t/sieve/list.html:71 msgid "The currently active script is: " msgstr "El script activo actualmente es: " #: ../../static/t/sieve/list.html:76 ../../static/t/sieve/add.html:3 msgid "Add or delete scripts" msgstr "Añadir o borrar scripts" #: ../../static/t/sieve/display_one.html:16 msgid "If" msgstr "Si" #: ../../static/t/sieve/display_one.html:21 msgid "To or Cc" msgstr "Para o CC" #: ../../static/t/sieve/display_one.html:23 msgid "Reply-to" msgstr "Responder-a" #: ../../static/t/sieve/display_one.html:24 #: ../../static/t/msg_listview.html:10 #: ../../static/t/view_mailq/header.html:27 msgid "Sender" msgstr "Remitente" #: ../../static/t/sieve/display_one.html:25 msgid "Resent-From" msgstr "Reenviado desde" #: ../../static/t/sieve/display_one.html:26 msgid "Resent-To" msgstr "Enviar a" #: ../../static/t/sieve/display_one.html:27 msgid "Envelope From" msgstr "Ensobretado Desde" #: ../../static/t/sieve/display_one.html:28 msgid "Envelope To" msgstr "Ensobretado Para" #: ../../static/t/sieve/display_one.html:29 msgid "X-Mailer" msgstr "X-Mailer" #: ../../static/t/sieve/display_one.html:30 msgid "X-Spam-Flag" msgstr "X-Spam-Flag" #: ../../static/t/sieve/display_one.html:31 msgid "X-Spam-Status" msgstr "X-Spam-Status" #: ../../static/t/sieve/display_one.html:32 msgid "List-ID" msgstr "List-ID" #: ../../static/t/sieve/display_one.html:33 msgid "Message size" msgstr "Tamaño del mensaje" #: ../../static/t/sieve/display_one.html:34 #: ../../static/t/select_messageindex_all.html:1 msgid "All" msgstr "Todo" #: ../../static/t/sieve/display_one.html:41 msgid "contains" msgstr "contiene" #: ../../static/t/sieve/display_one.html:42 msgid "does not contain" msgstr "no contiene" #: ../../static/t/sieve/display_one.html:43 msgid "is" msgstr "corresponde con" #: ../../static/t/sieve/display_one.html:44 msgid "is not" msgstr "no es" #: ../../static/t/sieve/display_one.html:45 msgid "matches" msgstr "coincide" #: ../../static/t/sieve/display_one.html:46 msgid "does not match" msgstr "no coincide" #: ../../static/t/sieve/display_one.html:52 msgid "(All messages)" msgstr "(Todos los mensajes)" #: ../../static/t/sieve/display_one.html:56 msgid "is larger than" msgstr "es más grande que" #: ../../static/t/sieve/display_one.html:57 msgid "is smaller than" msgstr "es más pequeño que" #: ../../static/t/sieve/display_one.html:59 msgid "bytes" msgstr "bytes" #: ../../static/t/sieve/display_one.html:65 msgid "Keep" msgstr "Conservar" #: ../../static/t/sieve/display_one.html:66 msgid "Discard silently" msgstr "Descartar de manera silenciosa" #: ../../static/t/sieve/display_one.html:67 msgid "Reject" msgstr "Rechazar" #: ../../static/t/sieve/display_one.html:68 msgid "Move message to" msgstr "Mover mensaje a" #: ../../static/t/sieve/display_one.html:69 msgid "Forward to" msgstr "Reenviar a" #: ../../static/t/sieve/display_one.html:70 msgid "Vacation" msgstr "Vacaciones" #: ../../static/t/sieve/display_one.html:82 msgid "Message:" msgstr "Mensaje:" #: ../../static/t/sieve/display_one.html:90 msgid "and then" msgstr "y entonces" #: ../../static/t/sieve/display_one.html:93 msgid "continue processing" msgstr "seguir procesando" #: ../../static/t/sieve/display_one.html:94 msgid "stop" msgstr "detener" #: ../../static/t/sieve/none.html:9 msgid "" "This installation of Citadel was built without support for server-side mail " "filtering.
    Please contact your system administrator if you require this " "feature.
    " msgstr "" "Esta instalación de Citadel viene construida sin soporte para la filtración " "de correo server-side.
    Contacte al administrador de su sistema si " "requiere esta funcionalidad.
    " #: ../../static/t/sieve/add.html:9 msgid "Add a new script" msgstr "Añadir un nuevo script" #: ../../static/t/sieve/add.html:10 msgid "" "To create a new script, enter the desired script name in the box below and " "click 'Create'." msgstr "" "Para crear un nuevo script, entrar le nombre deseado para el script en la " "ventana abajo y pulsar \"Crear\"." #: ../../static/t/sieve/add.html:14 msgid "Script name: " msgstr "Nombre del script: " #: ../../static/t/sieve/add.html:18 msgid "Edit scripts" msgstr "Editar scripts" #: ../../static/t/sieve/add.html:20 msgid "Return to the script editing screen" msgstr "Volver a la pantalla de edición de script" #: ../../static/t/sieve/add.html:23 msgid "Delete scripts" msgstr "Borrar scripts" #: ../../static/t/sieve/add.html:24 msgid "" "To delete an existing script, select the script name from the list and click " "'Delete'." msgstr "" "Para borrar un script existente, seleccionar su nombre en la lista y pulsar " "\"Borrar\"." #: ../../static/t/msg/confirm_move.html:4 msgid "Confirm move of message" msgstr "Confirme mover mensaje" #: ../../static/t/msg/confirm_move.html:12 msgid "Move this message to:" msgstr "Mover este mensaje a:" #: ../../static/t/login.html:5 msgid "powered by" msgstr "ofrecido por" #: ../../static/t/login.html:15 ../../static/t/iconbar.html:88 #: ../../static/t/get_logged_in.html:64 ../../static/t/get_logged_in.html:88 #: ../../static/t/get_logged_in.html:93 ../../static/t/get_logged_in.html:98 #: ../../static/t/get_logged_in.html:107 msgid "Log in" msgstr "Última conexión" #: ../../static/t/trailing.html:14 msgid "" "WARNING: You have JavaScript disabled in your web browser. Many functions " "of this system will not work properly." msgstr "" "ADVERTENCIA: Tiene desactivado JavaScript en su navegador. Muchas funciones " "de este sistema no funcionaran apropiadamente." #: ../../static/t/view_submessage.html:4 #: ../../static/t/view_message/replyquote.html:3 #: ../../static/t/view_message/replyquote.html:7 #: ../../static/t/view_message/print.html:8 ../../static/t/view_message.html:7 msgid "from " msgstr "de " #: ../../static/t/searchomatic.html:4 msgid "Search: " msgstr "Buscar: " #: ../../static/t/listsub/display.html:16 msgid "You are subscribing " msgstr "Se está suscribiendo " #: ../../static/t/listsub/display.html:17 msgid " to the " msgstr " a la " #: ../../static/t/listsub/display.html:18 msgid " mailing list." msgstr " lista de mensajes." #: ../../static/t/listsub/display.html:19 msgid "" "The listserver has sent you an e-mail with one additional Web link for you " "to click on to confirm your subscription." msgstr "" "El servidor de listas le ha enviado un e-mail con un enlace Web adicional " "para que usted pueda hacer clic para confirmar su suscripción." #: ../../static/t/listsub/display.html:20 msgid "" "This extra step is for your protection, as it prevents others from being " "able to subscribe you to lists without your consent." msgstr "" "Este paso adicional es para su protección, ya que impide que otros sean " "capaces de suscribirse a las listas sin su consentimiento." #: ../../static/t/listsub/display.html:22 msgid "" "Please click on the link which is being e-mailed to you and your " "subscription will be confirmed." msgstr "" "Por favor, haga clic en el enlace que está siendo enviado por correo " "electrónico a usted y se confirmará su suscripción." #: ../../static/t/listsub/display.html:27 #: ../../static/t/listsub/display.html:47 msgid "ERROR" msgstr "ERROR" #: ../../static/t/listsub/display.html:35 msgid "You are unsubscribing" msgstr "Usted está cancelando su suscripción" #: ../../static/t/listsub/display.html:37 msgid "from the" msgstr "desde el" #: ../../static/t/listsub/display.html:39 msgid "mailing list." msgstr "lista de correo." #: ../../static/t/listsub/display.html:40 msgid "" "The listserver has sent you an e-mail with one additional Web link for you " "to click on to confirm your unsubscription." msgstr "" "El servidor de listas le ha enviado un e-mail con un enlace Web adicional " "para que haga clic en él para confirmar la anulación de la suscripción." #: ../../static/t/listsub/display.html:41 msgid "" "This extra step is for your protection, as it prevents others from being " "able to unsubscribe you from lists without your consent." msgstr "" "Este paso adicional es para su protección, ya que impide que otros sean " "capaces de darse de baja de listas sin su consentimiento." #: ../../static/t/listsub/display.html:43 msgid "" "Please click on the link which is being e-mailed to you and your " "unsubscription will be confirmed." msgstr "" "Por favor, haga clic en el enlace que está siendo enviado por correo " "electrónico a usted y se confirmará la cancelación de su suscripción." #: ../../static/t/listsub/display.html:44 msgid "Back..." msgstr "Atrás..." #: ../../static/t/listsub/display.html:54 msgid "Confirmation successful!" msgstr "" #: ../../static/t/listsub/display.html:56 msgid "Confirmation failed." msgstr "Confirmación falló" #: ../../static/t/listsub/display.html:57 msgid "This could mean one of two things:" msgstr "Esto podría significar una de dos cosas:" #: ../../static/t/listsub/display.html:59 msgid "" "You waited too long to confirm your subscribe/unsubscribe request (the " "confirmation link is only valid for three days)" msgstr "" #: ../../static/t/listsub/display.html:60 msgid "" "You have already successfully confirmed your subscribe/unsubscribe " "request and are attempting to do it again." msgstr "" #: ../../static/t/listsub/display.html:62 msgid "The error returned by the server was: " msgstr "" #: ../../static/t/listsub/display.html:70 #, fuzzy msgid "Name of list:" msgstr "Nombre de la tarea" #: ../../static/t/listsub/display.html:75 #, fuzzy msgid "Your e-mail address:" msgstr "Dirección de correo preferida" #: ../../static/t/listsub/display.html:79 msgid "(If subscribing) preferred format: " msgstr "" #: ../../static/t/listsub/display.html:80 #, fuzzy msgid "One message at a time" msgstr "Introducir texto de mensaje:" #: ../../static/t/listsub/display.html:81 #, fuzzy msgid "Digest format" msgstr "Formato horario" #: ../../static/t/listsub/display.html:89 msgid "" "When you attempt to subscribe or unsubscribe to a mailing list, you will " "receive an e-mail containing one additional web link to click on for final " "confirmation." msgstr "" #: ../../static/t/listsub/display.html:90 msgid "" "This extra step is for your protection, as it prevents others from being " "able to subscribe or unsubscribe you to lists." msgstr "" #: ../../static/t/floors_edit_one.html:11 msgid "(delete floor)" msgstr "(borrar sala)" #: ../../static/t/floors_edit_one.html:13 msgid "(edit graphic)" msgstr "(editar gráfico)" #: ../../static/t/floors.html:4 msgid "Add/change/delete floors" msgstr "Añadir/cambiar/borrar/niveles" #: ../../static/t/floors.html:10 msgid "Floor number" msgstr "Número de nivel" #: ../../static/t/floors.html:11 msgid "Floor name" msgstr "Nombre de nivel" #: ../../static/t/floors.html:12 msgid "Number of rooms" msgstr "Número de salas" #: ../../static/t/floors.html:13 msgid "Floor CSS" msgstr "Sala CSS" #: ../../static/t/files.html:4 msgid "Files available for download in" msgstr "" #: ../../static/t/files.html:9 msgid "Upload a file:" msgstr "" #: ../../static/t/files.html:30 msgid "Filename" msgstr "" #: ../../static/t/files.html:31 msgid "Size" msgstr "" #: ../../static/t/files.html:32 msgid "Content" msgstr "" #: ../../static/t/files.html:33 msgid "Description" msgstr "" #: ../../static/t/edit_message.html:9 ../../static/t/iconbar.html:50 #: ../../static/t/iconbar.html:59 msgid "Loading" msgstr "" #: ../../static/t/edit_message.html:23 msgid "from" msgstr "" #: ../../static/t/edit_message.html:29 ../../static/t/edit_message.html:38 msgid "Anonymous" msgstr "" #: ../../static/t/edit_message.html:47 msgid "in" msgstr "" #: ../../static/t/edit_message.html:51 msgid "To:" msgstr "A" #: ../../static/t/edit_message.html:57 #: ../../static/t/view_message/print.html:15 #: ../../static/t/view_message.html:15 msgid "CC:" msgstr "CC:" #: ../../static/t/edit_message.html:63 msgid "BCC:" msgstr "BCC" #: ../../static/t/edit_message.html:71 msgid "Subject (optional):" msgstr "Asunto" #: ../../static/t/edit_message.html:71 #: ../../static/t/view_message/replyquote.html:8 #: ../../static/t/view_message/print.html:16 #: ../../static/t/view_message.html:16 msgid "Subject:" msgstr "Asunto:" #: ../../static/t/edit_message.html:86 msgid "--- forwarded message ---" msgstr "--- mensaje reenviado ---" #: ../../static/t/edit_message.html:110 msgid "Post message" msgstr "Postear mensaje" #: ../../static/t/edit_message.html:118 msgid "Save to Drafts" msgstr "" #: ../../static/t/edit_message.html:126 #: ../../static/t/edit_message/attachments_pane.html:5 msgid "Attachments:" msgstr "Adjuntos" #: ../../static/t/aide/display_serverrestart_page.html:4 #, fuzzy msgid "Message to your Users:" msgstr "El mensaje no se envió." #: ../../static/t/aide/display_generic_result.html:2 msgid "Server command results" msgstr "Resultado de los comandos de servidor" #: ../../static/t/aide/display_generic_result.html:18 #, fuzzy msgid "Enter another command" msgstr "Introducir comando de servidor" #: ../../static/t/aide/display_generic_result.html:19 #, fuzzy msgid "Return to menu" msgstr "cambiar a menú" #: ../../static/t/aide/display_sitewide_config.html:3 msgid "Site configuration" msgstr "Configuración del sitio" #: ../../static/t/aide/display_sitewide_config.html:6 #: ../../static/t/aide/edituser/select.html:9 msgid "You need to be aide to view this." msgstr "" #: ../../static/t/aide/display_sitewide_config.html:11 msgid "General" msgstr "General" #: ../../static/t/aide/display_sitewide_config.html:12 msgid "Access" msgstr "Acceso" #: ../../static/t/aide/display_sitewide_config.html:13 msgid "Network" msgstr "Red" #: ../../static/t/aide/display_sitewide_config.html:14 msgid "Tuning" msgstr "Afinar" #: ../../static/t/aide/display_sitewide_config.html:15 #, fuzzy msgid "Directory" msgstr "directorio" #: ../../static/t/aide/display_sitewide_config.html:16 msgid "Auto-purger" msgstr "Autopurgar" #: ../../static/t/aide/display_sitewide_config.html:17 msgid "Indexing/Journaling" msgstr "Indexar/Journaling" #: ../../static/t/aide/display_sitewide_config.html:18 #: ../../static/t/aide/siteconfig/tab_pushmail.html:1 #, fuzzy msgid "Push Email" msgstr "Email" #: ../../static/t/aide/display_sitewide_config.html:19 msgid "Pop3" msgstr "" #: ../../static/t/aide/usermanagement.html:2 msgid "Add, change, delete user accounts" msgstr "Añadir, cambiar, borrar cuentas de usuarios" #: ../../static/t/aide/display_inetconf.html:5 #: ../../static/t/aide/display_menu.html:5 msgid "System Administration Menu" msgstr "Menú de Administración de Sistema" #: ../../static/t/aide/display_inetconf.html:6 #: ../../static/t/aide/display_menu.html:6 #, fuzzy msgid "Room Admin Menu" msgstr "Administrador de la sala" #: ../../static/t/aide/display_inetconf.html:13 msgid "Local host aliases" msgstr "Alias del host local" #: ../../static/t/aide/display_inetconf.html:14 msgid "Directory domains" msgstr "Dominios de directorios" #: ../../static/t/aide/display_inetconf.html:15 msgid "Smart hosts" msgstr "Smart hosts" #: ../../static/t/aide/display_inetconf.html:16 #, fuzzy msgid "Fallback smart hosts" msgstr "Smart hosts" #: ../../static/t/aide/display_inetconf.html:17 msgid "Notification hosts" msgstr "" #: ../../static/t/aide/display_inetconf.html:22 msgid "RBL hosts" msgstr "RBL hosts" #: ../../static/t/aide/display_inetconf.html:23 msgid "SpamAssassin hosts" msgstr "SpamAssasin hosts" #: ../../static/t/aide/display_inetconf.html:24 msgid "ClamAV clamd hosts" msgstr "" #: ../../static/t/aide/display_inetconf.html:25 #, fuzzy msgid "Masqueradable domains" msgstr "Dominios de puerta de enlace" #: ../../static/t/aide/edituser/select.html:5 msgid "Edit or delete users" msgstr "Editar o borrar usuarios" #: ../../static/t/aide/edituser/select.html:17 msgid "Add users" msgstr "Añadir usuarios" #: ../../static/t/aide/edituser/select.html:20 msgid "Edit or Delete users" msgstr "Editar o Borrar usuarios" #: ../../static/t/aide/edituser/box_select.html:1 msgid "" "To edit an existing user account, select the user name from the list and " "click 'Edit'." msgstr "" "Para editar una cuenta de usuario existente, seleccione el nombre de usuario " "de la lista y pulse 'Editar'." #: ../../static/t/aide/edituser/detailview.html:4 msgid "Edit user account: " msgstr "Editar cuenta de usuario: " #: ../../static/t/aide/edituser/detailview.html:24 #: ../../static/t/room/edit/tab_feed.html:14 msgid "Password" msgstr "Contraseña" #: ../../static/t/aide/edituser/detailview.html:28 msgid "Permission to send Internet mail" msgstr "Autorización para enviar correo Internet" #: ../../static/t/aide/edituser/detailview.html:32 msgid "Number of logins" msgstr "Número de conexiones" #: ../../static/t/aide/edituser/detailview.html:36 msgid "Messages submitted" msgstr "Mensajes enviados" #: ../../static/t/aide/edituser/detailview.html:40 msgid "Access level" msgstr "Nivel de acceso" #: ../../static/t/aide/edituser/detailview.html:54 msgid "User ID number" msgstr "ID de usuario" #: ../../static/t/aide/edituser/detailview.html:58 msgid "Date and time of last login" msgstr "Fecha y hora de la última conexión" #: ../../static/t/aide/edituser/detailview.html:68 msgid "Auto-purge after this many days" msgstr "Autopurgar despues de estos muchos dias" #: ../../static/t/aide/edituser/add.html:1 msgid "" "To create a new user account, enter the desired user name in the box below " "and click 'Create'." msgstr "" "Para crear una nueva cuenta de usuario, introduzca el usuario deseado en la " "caja de abajo y pulse 'Crear'." #: ../../static/t/aide/edituser/add.html:5 msgid "New user: " msgstr "Nuevo usuario: " #: ../../static/t/aide/display_generic_cmd.html:4 msgid "Enter a server command" msgstr "Introducir comando de servidor" #: ../../static/t/aide/display_generic_cmd.html:12 msgid "" "This screen allows you to enter Citadel server commands which are not " "supported by WebCit. If you do not know what that means, then this screen " "will not be of much use to you." msgstr "" "Esta pantalla te permite introducir comandos del servidor Citadel que no " "están soportados por WebCit. Si no sabes que quiere decir eso, esta pantalla " "no te será de mucha utilidad." #: ../../static/t/aide/display_generic_cmd.html:15 msgid "Enter command:" msgstr "Introducir comando" #: ../../static/t/aide/display_generic_cmd.html:17 msgid "Command input (if requesting SEND_LISTING transfer mode):" msgstr "Introducción de comando (si se pidiera SEND_LISTING transfer mode):" #: ../../static/t/aide/display_generic_cmd.html:20 #, fuzzy msgid "Detected host header is " msgstr "La cabecera detectada del host es %s://%s" #: ../../static/t/aide/display_ignetconf.html:4 msgid "Network configuration" msgstr "Configuración de Red" #: ../../static/t/aide/display_ignetconf.html:10 #: ../../static/t/aide/ignetconf/edit_node.html:5 #: ../../static/t/aide/ignetconf/add.html:5 msgid "Add a new node" msgstr "Añadir un nuevo nodo" #: ../../static/t/aide/display_ignetconf.html:14 msgid "Currently configured nodes" msgstr "Nodos actualmente configurados" #: ../../static/t/aide/display_serverrestart.html:26 #, fuzzy msgid "Restart Citadel" msgstr "Hacer de esta mi página de inicio" #: ../../static/t/aide/floorconfig.html:2 msgid "Add, change, or delete floors" msgstr "Añadir, cambiar o borrar niveles" #: ../../static/t/aide/serverrestart/box.html:3 msgid "Please wait while the Citadel server is restarted... " msgstr "" #: ../../static/t/aide/serverrestart/box_page_do.html:3 msgid "" "Please wait while your users are being paged, the citadel server will be " "restarted after that... " msgstr "" #: ../../static/t/aide/inet/masqdomains.html:2 msgid "(Domains as which users are allowed to masquerade)" msgstr "" #: ../../static/t/aide/inet/rbldns.html:2 msgid "(hosts running a Realtime Blackhole List)" msgstr "(host corriendo una lista Agujero Negro en tiempo real)" #: ../../static/t/aide/inet/dirnames.html:2 msgid "(domains mapped with the Global Address Book)" msgstr "(dominios mapeados con la Libreta de Direcciones Global)" #: ../../static/t/aide/inet/notify.html:2 msgid "(URLS for notifications when users receive new mails; )" msgstr "" #: ../../static/t/aide/inet/notify.html:2 msgid "Syntax: Notificationtemplatename:http[s]://user:password@hostname/path" msgstr "" #: ../../static/t/aide/inet/smarthosts.html:2 msgid "(if present, forward all outbound mail to one of these hosts)" msgstr "" "(si está activo, reenviar todo el correo de salida a uno de estos hosts)" #: ../../static/t/aide/inet/aliases.html:2 msgid "(domains for which this host receives mail)" msgstr "(dominios desde los cuales este host recibirá correo)" #: ../../static/t/aide/inet/clamav.html:2 #, fuzzy msgid "(hosts running the ClamAV clamd service)" msgstr "(host corriendo el servicio SpamAssassin)" #: ../../static/t/aide/inet/spamass.html:2 msgid "(hosts running the SpamAssassin service)" msgstr "(host corriendo el servicio SpamAssassin)" #: ../../static/t/aide/inet/fallbackhosts.html:2 msgid "(send outbound mail to these hosts only when direct delivery fails)" msgstr "" #: ../../static/t/aide/ignetconf/display_confirm_delete.html:5 msgid "Confirm delete" msgstr "Confirmar borrar" #: ../../static/t/aide/ignetconf/display_confirm_delete.html:11 msgid "Are you sure you want to delete " msgstr "¿Estás seguro de querer borrar?" #: ../../static/t/aide/ignetconf/display_confirm_delete.html:14 #: ../../static/t/prefs/box.html:198 ../../static/t/iconbar/edit.html:19 #: ../../static/t/iconbar/edit.html:26 ../../static/t/iconbar/edit.html:32 #: ../../static/t/iconbar/edit.html:39 ../../static/t/iconbar/edit.html:45 #: ../../static/t/iconbar/edit.html:52 ../../static/t/iconbar/edit.html:58 #: ../../static/t/iconbar/edit.html:64 ../../static/t/iconbar/edit.html:70 #: ../../static/t/iconbar/edit.html:76 ../../static/t/iconbar/edit.html:82 #: ../../static/t/iconbar/edit.html:88 msgid "Yes" msgstr "Si" #: ../../static/t/aide/ignetconf/display_confirm_delete.html:16 #: ../../static/t/prefs/box.html:200 ../../static/t/iconbar/edit.html:20 #: ../../static/t/iconbar/edit.html:27 ../../static/t/iconbar/edit.html:33 #: ../../static/t/iconbar/edit.html:40 ../../static/t/iconbar/edit.html:46 #: ../../static/t/iconbar/edit.html:53 ../../static/t/iconbar/edit.html:59 #: ../../static/t/iconbar/edit.html:65 ../../static/t/iconbar/edit.html:71 #: ../../static/t/iconbar/edit.html:77 ../../static/t/iconbar/edit.html:83 #: ../../static/t/iconbar/edit.html:89 msgid "No" msgstr "No" #: ../../static/t/aide/ignetconf/edit_node.html:15 #: ../../static/t/aide/ignetconf/add.html:15 #: ../../static/t/aide/siteconfig/tab_general.html:8 msgid "Node name" msgstr "Nombre de nodo" #: ../../static/t/aide/ignetconf/edit_node.html:17 #: ../../static/t/aide/ignetconf/add.html:17 msgid "Shared secret" msgstr "Secreto compartido" #: ../../static/t/aide/ignetconf/edit_node.html:19 #: ../../static/t/aide/ignetconf/add.html:19 msgid "Host or IP address" msgstr "Host o dirección IP" #: ../../static/t/aide/ignetconf/edit_node.html:21 #: ../../static/t/aide/ignetconf/add.html:21 msgid "Port number" msgstr "Puerto número" #: ../../static/t/aide/ignetconf/section.html:4 #, fuzzy msgid "(Edit)" msgstr "(editar)" #: ../../static/t/aide/display_menu.html:12 msgid "Global Configuration" msgstr "Configuración Global" #: ../../static/t/aide/display_menu.html:14 msgid "User account management" msgstr "Gestión de cuentas de usuario" #: ../../static/t/aide/display_menu.html:16 msgid "Shutdown Citadel" msgstr "" #: ../../static/t/aide/display_menu.html:18 msgid "Rooms and Floors" msgstr "Salas y Niveles" #: ../../static/t/aide/global_config.html:2 msgid "Edit site-wide configuration" msgstr "Editar configuración general del sitio" #: ../../static/t/aide/global_config.html:3 msgid "Domain names and Internet mail configuration" msgstr "Dominios y configuración de correo de internet" #: ../../static/t/aide/global_config.html:4 msgid "Configure replication with other Citadel servers" msgstr "Configurar replicación con otros servidores Citadel" #: ../../static/t/aide/global_config.html:5 #: ../../static/t/view_mailq/header.html:3 msgid "View the outbound SMTP queue" msgstr "" #: ../../static/t/aide/restart.html:2 #, fuzzy msgid "Restart Now" msgstr "Hacer de esta mi página de inicio" #: ../../static/t/aide/restart.html:3 msgid "Restart after paging users" msgstr "" #: ../../static/t/aide/restart.html:4 msgid "Restart when all users are idle" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:1 msgid "General site configuration items" msgstr "Elementos de configuración general del sitio" #: ../../static/t/aide/siteconfig/tab_general.html:5 msgid "Change Login Logo" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:6 msgid "Change Logout Logo" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:11 msgid "Fully qualified domain name" msgstr "Nombre de dominio totalmente cualificado" #: ../../static/t/aide/siteconfig/tab_general.html:14 msgid "Human-readable node name" msgstr "Nombre del nodo humanamente legible" #: ../../static/t/aide/siteconfig/tab_general.html:17 msgid "Telephone number" msgstr "Número de teléfono" #: ../../static/t/aide/siteconfig/tab_general.html:20 msgid "Paginator prompt (for text mode clients)" msgstr "Paginador de texto (para clintes en modo texto)" #: ../../static/t/aide/siteconfig/tab_general.html:23 msgid "Geographic location of this system" msgstr "Localización geográfica de este sistema" #: ../../static/t/aide/siteconfig/tab_general.html:26 msgid "Name of system administrator" msgstr "Nombre del administrador de sistema" #: ../../static/t/aide/siteconfig/tab_general.html:29 msgid "Default timezone for unzoned calendar items" msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:1 msgid "Configure automatic expiry of old messages" msgstr "Configurar expiración automática de mensajes antiguos" #: ../../static/t/aide/siteconfig/tab_autopurger.html:2 msgid "These settings may be overridden on a per-floor or per-room basis." msgstr "" "Esta configuración puede ser obviada en configuraciones por-sala o por-nivel " "aparte." #: ../../static/t/aide/siteconfig/tab_autopurger.html:6 msgid "Hour to run database auto-purge" msgstr "Hora para correr la autopurga de bases de datos" #: ../../static/t/aide/siteconfig/tab_autopurger.html:66 msgid "Default message expire policy for public rooms" msgstr "Política de expiración por defecto para salas públicas" #: ../../static/t/aide/siteconfig/tab_autopurger.html:68 #: ../../static/t/aide/siteconfig/tab_autopurger.html:86 #: ../../static/t/room/edit/tab_expire.html:17 #: ../../static/t/room/edit/tab_expire.html:45 msgid "Never automatically expire messages" msgstr "Nunca producir expiración automática de mensajes" #: ../../static/t/aide/siteconfig/tab_autopurger.html:71 #: ../../static/t/aide/siteconfig/tab_autopurger.html:89 #: ../../static/t/room/edit/tab_expire.html:20 #: ../../static/t/room/edit/tab_expire.html:48 msgid "Expire by message count" msgstr "Expirar según cuenta de mensajes" #: ../../static/t/aide/siteconfig/tab_autopurger.html:73 #: ../../static/t/aide/siteconfig/tab_autopurger.html:92 #: ../../static/t/room/edit/tab_expire.html:23 #: ../../static/t/room/edit/tab_expire.html:51 msgid "Expire by message age" msgstr "Expirar según la edad del mensaje" #: ../../static/t/aide/siteconfig/tab_autopurger.html:75 #: ../../static/t/aide/siteconfig/tab_autopurger.html:94 #: ../../static/t/room/edit/tab_expire.html:25 #: ../../static/t/room/edit/tab_expire.html:53 msgid "Number of messages or days: " msgstr "Número de mensajes o días " #: ../../static/t/aide/siteconfig/tab_autopurger.html:81 msgid "Default message expire policy for private mailboxes" msgstr "Política de expiración de mensajes por defecto para buzones privados" #: ../../static/t/aide/siteconfig/tab_autopurger.html:83 msgid "Same policy as public rooms" msgstr "Misma política que para salas públicas" #: ../../static/t/aide/siteconfig/tab_network.html:1 msgid "Network services" msgstr "Servicios de red" #: ../../static/t/aide/siteconfig/tab_network.html:2 #: ../../static/t/aide/siteconfig/tab_directory.html:3 msgid "" "Changes made on this screen will not take effect until you restart the " "Citadel server." msgstr "" "Los cambios practicados en esta pantalla no surtirán efectos hasta que " "reinicies el Servidor Citadel" #: ../../static/t/aide/siteconfig/tab_network.html:6 msgid "SMTP MTA port (-1 to disable)" msgstr "Puerto SMTP MTA (-1 para desactivar)" #: ../../static/t/aide/siteconfig/tab_network.html:9 msgid "Correct forged From: lines during authenticated SMTP" msgstr "Correfir forged From: lineas durante SMTP autenticada" #: ../../static/t/aide/siteconfig/tab_network.html:12 msgid "Flag message as spam, instead of rejecting it" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:15 msgid "IMAP listener port (-1 to disable)" msgstr "Puerto de escucha IMAP (-1 para desactivar)" #: ../../static/t/aide/siteconfig/tab_network.html:19 msgid "Network run frequency (in seconds)" msgstr "Frecuencia de marcha de red (en segundos)" #: ../../static/t/aide/siteconfig/tab_network.html:22 msgid "Server IP address (0.0.0.0 for 'any')" msgstr "Dirección de servidor IP (0.0.0.0 para 'cualquiera')" #: ../../static/t/aide/siteconfig/tab_network.html:25 msgid "SMTP MSA port (-1 to disable)" msgstr "Puerto SMTP MSA (-1 para desactivar)" #: ../../static/t/aide/siteconfig/tab_network.html:28 msgid "IMAP over SSL port (-1 to disable)" msgstr "Puerto IMAP sobre SSL (-1 para desactivar)" #: ../../static/t/aide/siteconfig/tab_network.html:31 msgid "SMTP over SSL port (-1 to disable)" msgstr "Puerto SMTP sobre SSL (-1 para desactivar)" #: ../../static/t/aide/siteconfig/tab_network.html:34 msgid "Instantly expunge deleted messages in IMAP" msgstr "Desechar automáticamente mensajes borrados en IMAP" #: ../../static/t/aide/siteconfig/tab_network.html:38 #, fuzzy msgid "Allow unauthenticated SMTP clients to spoof this sites domains" msgstr "" "Permitir a cliente SMTP no autenticados hacer spoof a los dominios de este " "sitio" #: ../../static/t/aide/siteconfig/tab_network.html:41 msgid "Postfix TCP Dictionary Port" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:41 #, fuzzy msgid "-1 to disable" msgstr "Pulse para desactivar" #: ../../static/t/aide/siteconfig/tab_network.html:44 #, fuzzy msgid "ManageSieve Port (-1 to disable)" msgstr "Puerto de escucha IMAP (-1 para desactivar)" #: ../../static/t/aide/siteconfig/tab_network.html:47 msgid "Perform RBL checks upon connect instead of after RCPT" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:50 msgid "Keep original from headers in IMAP" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:53 #, fuzzy msgid "XMPP (Jabber) client to server port (-1 to disable)" msgstr "Puerto de escucha POP3 (-1 para desactivar)" #: ../../static/t/aide/siteconfig/tab_network.html:56 #, fuzzy msgid "XMPP (Jabber) server to server port (-1 to disable)" msgstr "Puerto de escucha POP3 (-1 para desactivar)" #: ../../static/t/aide/siteconfig/tab_pop3.html:1 msgid "POP3" msgstr "" #: ../../static/t/aide/siteconfig/tab_pop3.html:6 msgid "POP3 listener port (-1 to disable)" msgstr "Puerto de escucha POP3 (-1 para desactivar)" #: ../../static/t/aide/siteconfig/tab_pop3.html:9 msgid "POP3 over SSL port (-1 to disable)" msgstr "Puerto POP3 sobre SSL (-1 para desactivar)" #: ../../static/t/aide/siteconfig/tab_pop3.html:12 #, fuzzy msgid "POP3 fetch frequency in seconds" msgstr "Frecuencia de marcha de red (en segundos)" #: ../../static/t/aide/siteconfig/tab_pop3.html:15 #, fuzzy msgid "POP3 fastest fetch frequency in seconds" msgstr "Frecuencia de marcha de red (en segundos)" #: ../../static/t/aide/siteconfig/tab_tuning.html:1 msgid "Advanced server fine-tuning controls" msgstr "Control de afinación fina avanzada del servidor" #: ../../static/t/aide/siteconfig/tab_tuning.html:5 msgid "Server connection idle timeout (in seconds)" msgstr "Tiempo máximo de espera de conexión (en segundos)" #: ../../static/t/aide/siteconfig/tab_tuning.html:8 msgid "Maximum concurrent sessions (0 = no limit)" msgstr "Número máximo de sesiones concurrentes (0 = sin límite)" #: ../../static/t/aide/siteconfig/tab_tuning.html:11 msgid "Default user purge time (days)" msgstr "Purga de usuario por defecto (dias)" #: ../../static/t/aide/siteconfig/tab_tuning.html:14 msgid "Default room purge time (days)" msgstr "Purga por defecto de salas (días)" #: ../../static/t/aide/siteconfig/tab_tuning.html:17 msgid "Maximum message length" msgstr "Longitud máxima de mensajes" #: ../../static/t/aide/siteconfig/tab_tuning.html:20 msgid "Minimum number of worker threads" msgstr "Número mínimo de temáticas funcionando" #: ../../static/t/aide/siteconfig/tab_tuning.html:23 msgid "Maximum number of worker threads" msgstr "Número máximo de temáticas funcionando" #: ../../static/t/aide/siteconfig/tab_tuning.html:26 msgid "Automatically delete committed database logs" msgstr "Borrar automáticamente logs de la base de datos pasados" #: ../../static/t/aide/siteconfig/tab_pushmail.html:5 #, fuzzy msgid "Funambol server host (blank to disable)" msgstr "Nombre del Host del sevidor LDAP (en blanco para desactivar)" #: ../../static/t/aide/siteconfig/tab_pushmail.html:8 #, fuzzy msgid "Funambol server port " msgstr "Nombre del Host del sevidor LDAP (en blanco para desactivar)" #: ../../static/t/aide/siteconfig/tab_pushmail.html:11 #, fuzzy msgid "Funambol sync source" msgstr "Nombre del Host del sevidor LDAP (en blanco para desactivar)" #: ../../static/t/aide/siteconfig/tab_pushmail.html:14 msgid "Funambol auth details (user:pass)" msgstr "" #: ../../static/t/aide/siteconfig/tab_pushmail.html:17 #, fuzzy msgid "External pager tool (blank to disable)" msgstr "Nombre del Host del sevidor LDAP (en blanco para desactivar)" #: ../../static/t/aide/siteconfig/tab_access.html:1 msgid "Access controls and site policy settings" msgstr "Control de acceso y política general del sitio" #: ../../static/t/aide/siteconfig/tab_access.html:5 msgid "Allow aides to zap (forget) rooms" msgstr "Permitir a administradores olvidar (zap) salas" #: ../../static/t/aide/siteconfig/tab_access.html:9 msgid "Quarantine messages from problem users" msgstr "Poner en cuarentena mensajes de usuarios problemáticos" #: ../../static/t/aide/siteconfig/tab_access.html:12 msgid "Name of quarantine room" msgstr "Nombre de la sala de cuarentena" #: ../../static/t/aide/siteconfig/tab_access.html:17 msgid "Name of room to log pages" msgstr "Nombre de la sala para páginas de log" #: ../../static/t/aide/siteconfig/tab_access.html:22 msgid "Authentication mode" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:24 #, fuzzy msgid "Self contained" msgstr "Acciones" #: ../../static/t/aide/siteconfig/tab_access.html:25 #, fuzzy msgid "Host based" msgstr "Nombre de Host" #: ../../static/t/aide/siteconfig/tab_access.html:26 msgid "LDAP (RFC2307)" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:27 msgid "LDAP (Active Directory)" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:30 #, fuzzy msgid "Master user name (blank to disable)" msgstr "Nombre del Host del sevidor LDAP (en blanco para desactivar)" #: ../../static/t/aide/siteconfig/tab_access.html:33 #, fuzzy msgid "Master user password" msgstr "Introducir nueva contraseña" #: ../../static/t/aide/siteconfig/tab_access.html:38 msgid "Initial access level for new users" msgstr "Nivel de acceso inicial para nuevos usuarios" #: ../../static/t/aide/siteconfig/tab_access.html:49 msgid "Access level required to create rooms" msgstr "Nivel de acceso requerido para crear salas" #: ../../static/t/aide/siteconfig/tab_access.html:60 msgid "Automatically grant room-aide status to users who create private rooms" msgstr "" "Garantizar automáticamente estatus de administrador de sala al usuario que " "crea una sala privada" #: ../../static/t/aide/siteconfig/tab_access.html:63 #, fuzzy msgid "Automatically grant room-aide status to users who create BLOG rooms" msgstr "" "Garantizar automáticamente estatus de administrador de sala al usuario que " "crea una sala BLOG" #: ../../static/t/aide/siteconfig/tab_access.html:66 msgid "Restrict access to Internet mail" msgstr "Restringir acceso a Correo Internet" #: ../../static/t/aide/siteconfig/tab_access.html:71 msgid "Disable self-service user account creation" msgstr "Desactivar autoservicio en cuanto a creación de cuentas de usuario" #: ../../static/t/aide/siteconfig/tab_access.html:71 msgid "Hint: do not select both!" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:74 msgid "Require registration for new users" msgstr "Se requiere registro para nuevos usuarios" #: ../../static/t/aide/siteconfig/tab_access.html:77 #, fuzzy msgid "Allow anonymous guest access" msgstr "Sin mensajes anónimos" #: ../../static/t/aide/siteconfig/tab_indexing.html:1 msgid "Indexing and Journaling" msgstr "Indexado y jornalización" #: ../../static/t/aide/siteconfig/tab_indexing.html:2 msgid "Warning: these facilities are resource intensive." msgstr "Advertencia: estas utilidades consumen muchos recursos." #: ../../static/t/aide/siteconfig/tab_indexing.html:6 msgid "Enable full text index" msgstr "Activar índice de texto completo" #: ../../static/t/aide/siteconfig/tab_indexing.html:9 msgid "Perform journaling of email messages" msgstr "Realizar jornalización de mensajes de correo electrónico" #: ../../static/t/aide/siteconfig/tab_indexing.html:13 msgid "Perform journaling of non-email messages" msgstr "Realizar jornalización de mensajes de tipo no email" #: ../../static/t/aide/siteconfig/tab_indexing.html:16 msgid "Email destination of journalized messages" msgstr "Correo electrónico de destino de los mensajes jornalizados" #: ../../static/t/aide/siteconfig/tab_directory.html:1 msgid "Configure the LDAP connector for Citadel" msgstr "Configurar la conexión LDAP para Citadel" #: ../../static/t/aide/siteconfig/tab_directory.html:4 msgid "" "NOTE: This Citadel server has been built without LDAP support. These " "options will have no effect." msgstr "" #: ../../static/t/aide/siteconfig/tab_directory.html:9 msgid "Host name of LDAP server (blank to disable)" msgstr "Nombre del Host del sevidor LDAP (en blanco para desactivar)" #: ../../static/t/aide/siteconfig/tab_directory.html:13 msgid "Port number of LDAP server (blank to disable)" msgstr "Número del puerto del servidor LDAP (en blanco para desactivar)" #: ../../static/t/aide/siteconfig/tab_directory.html:16 msgid "Base DN" msgstr "Base DN" #: ../../static/t/aide/siteconfig/tab_directory.html:19 msgid "Bind DN" msgstr "Bind DN" #: ../../static/t/aide/siteconfig/tab_directory.html:22 msgid "Password for bind DN" msgstr "Contraseña para bind DN" #: ../../static/t/iconbar.html:7 msgid "Language:" msgstr "Lenguaje" #: ../../static/t/iconbar.html:19 msgid "Mail" msgstr "Correo" #: ../../static/t/iconbar.html:39 ../../static/t/iconbar/edit.html:61 #: ../../static/t/summary/page.html:30 msgid "Tasks" msgstr "Tareas" #: ../../static/t/iconbar.html:48 ../../static/t/iconbar/edit.html:67 msgid "Rooms" msgstr "Salas" #: ../../static/t/iconbar.html:57 msgid "Online users" msgstr "" #: ../../static/t/iconbar.html:62 ../../static/t/iconbar/edit.html:79 msgid "Chat" msgstr "Chat" #: ../../static/t/iconbar.html:65 msgid "Advanced" msgstr "Avanzado" #: ../../static/t/iconbar.html:72 ../../static/t/room/edit/editroom.html:4 #: ../../static/t/room/edit.html:5 msgid "Administration" msgstr "Administración" #: ../../static/t/iconbar.html:83 msgid "customize this menu" msgstr "personalizar este menú" #: ../../static/t/iconbar.html:92 msgid "switch to room list" msgstr "cambiar a lista de salas" #: ../../static/t/iconbar.html:93 msgid "switch to menu" msgstr "cambiar a menú" #: ../../static/t/iconbar.html:94 msgid "My folders" msgstr "" #: ../../static/t/view_message/list_attach.html:3 #: ../../static/t/view_message/inline_attach.html:4 msgid "View" msgstr "Ver" #: ../../static/t/view_message/list_attach.html:4 #: ../../static/t/view_message/inline_attach.html:5 msgid "Download" msgstr "Descargar" #: ../../static/t/view_message/print.html:14 #: ../../static/t/view_message.html:14 msgid "to" msgstr "" #: ../../static/t/openid_manual_create.html:2 msgid "Your OpenID" msgstr "" #: ../../static/t/openid_manual_create.html:2 msgid "was successfully verified." msgstr "" #: ../../static/t/openid_manual_create.html:3 msgid "However, the user name" msgstr "" #: ../../static/t/openid_manual_create.html:3 msgid "conflicts with an existing user." msgstr "" #: ../../static/t/openid_manual_create.html:5 msgid "Please specify the user name you would like to use." msgstr "" #: ../../static/t/files/graphicsupload.html:2 msgid "Image upload" msgstr "Cargar imagen" #: ../../static/t/files/graphicsupload.html:6 msgid "You can upload an image directly from your computer" msgstr "Puede sugir una imagen directamente desde su equipo" #: ../../static/t/files/graphicsupload.html:8 msgid "Please select a file to upload:" msgstr "Por favor, seleccione el fichero a cargar:" #: ../../static/t/files/section_onefile.html:20 msgid "Slideshow" msgstr "" #: ../../static/t/roombanner.html:10 ../../static/t/roombanner.html:11 msgid "new of" msgstr "" #: ../../static/t/roombanner.html:10 ../../static/t/roombanner.html:11 #: ../../static/t/msg_listselector_bottom.html:7 #: ../../static/t/msg_listselector_top.html:7 msgid "messages" msgstr "" #: ../../static/t/roombanner.html:28 msgid "Select page: " msgstr "" #: ../../static/t/who.html:13 msgid "Users currently on " msgstr "" #: ../../static/t/who.html:22 #, fuzzy msgid "Click on a name to read user info. Click on" msgstr "" "Pulse en un nombre para leer la información del usuario. Pulse en %s para " "enviar un mensaje instantáneo a ese usuario. " #: ../../static/t/who.html:24 #, fuzzy msgid "to send an instant message to that user." msgstr "Enviar un mensaje instantáneo a: " #: ../../static/t/msg_listselector_bottom.html:2 #: ../../static/t/msg_listselector_top.html:2 msgid "Reading #" msgstr "Leyendo #" #: ../../static/t/msg_listselector_bottom.html:12 #: ../../static/t/msg_listselector_top.html:12 msgid "oldest to newest" msgstr "" #: ../../static/t/msg_listselector_bottom.html:20 #: ../../static/t/msg_listselector_top.html:20 msgid "newest to oldest" msgstr "" #: ../../static/t/newstartpage.html:4 msgid "New start page" msgstr "" #: ../../static/t/newstartpage.html:9 msgid "Your start page has been changed." msgstr "" #: ../../static/t/newstartpage.html:12 msgid "" "(Note: this does not change your browser's home page. It changes the page " "you begin on when you log on to" msgstr "" #: ../../static/t/no_new_msgs.html:3 msgid "No new messages." msgstr "" #: ../../static/t/view_blog/comment_box.html:8 msgid "Post a comment" msgstr "Publicar un comentario" #: ../../static/t/prefs/pushemail.html:2 #, fuzzy msgid "Configure Push Email" msgstr "Email" #: ../../static/t/prefs/pushemail.html:9 msgid "Push email and SMS settings" msgstr "" #: ../../static/t/prefs/pushemail.html:17 msgid "" "If your administrator has enabled the functionality, Citadel can notify a " "Funambol server that you haved recieved new email and automatically " "syncronize any devices you have with the Funambol client installed." msgstr "" #: ../../static/t/prefs/pushemail.html:20 msgid "" "Alternatively, if the administrator has configured it, Citadel can send a " "text message to you when new mail arrives." msgstr "" #: ../../static/t/prefs/pushemail.html:26 #, fuzzy msgid "Notify Funambol server" msgstr "Nombre del Host del sevidor LDAP (en blanco para desactivar)" #: ../../static/t/prefs/pushemail.html:31 #, fuzzy msgid "Send a text message to..." msgstr "Enviar un mensaje instantáneo a: " #: ../../static/t/prefs/pushemail.html:33 msgid "" "(Use international format, without any leading zeros, spaces or hypens, like " "+61415011501)" msgstr "" #: ../../static/t/prefs/pushemail.html:38 msgid "Use custom notification scheme configured by your Admin" msgstr "" #: ../../static/t/prefs/pushemail.html:43 msgid "Don‘t send any notifications" msgstr "" #: ../../static/t/prefs/box.html:9 msgid "Tree (folders) view" msgstr "Ver (carpetas) en árbol" #: ../../static/t/prefs/box.html:11 msgid "Table (rooms) view" msgstr "Ver (salas) en tabla" #: ../../static/t/prefs/box.html:20 msgid "12 hour (am/pm)" msgstr "12 horas (am/pm)" #: ../../static/t/prefs/box.html:25 msgid "24 hour" msgstr "24 horas" #: ../../static/t/prefs/box.html:152 #, fuzzy msgid "Sunday" msgstr "Sumario" #: ../../static/t/prefs/box.html:153 #, fuzzy msgid "Monday" msgstr "Sumario" #: ../../static/t/prefs/box.html:174 msgid "No signature" msgstr "Sin firma" #: ../../static/t/prefs/box.html:238 msgid "Full-functionality" msgstr "" #: ../../static/t/prefs/box.html:241 msgid "Safe mode" msgstr "" #: ../../static/t/prefs/box.html:242 msgid "" "Safe mode is less intensive on your web browser, but not as fully featured." msgstr "" #: ../../static/t/wiki/pagelist.html:1 msgid "List of Wiki pages" msgstr "" #: ../../static/t/wiki/history.html:1 msgid "History of edits for this page" msgstr "" #: ../../static/t/who/list_static_header.html:1 #, fuzzy msgid "Users currently on" msgstr "Usuarios actualmente en %s" #: ../../static/t/who/section.html:4 msgid "(kill)" msgstr "(matar)" #: ../../static/t/who/bio.html:4 ../../static/t/user/show.html:4 msgid "User profile" msgstr "Profile de usuario" #: ../../static/t/who/summary.html:5 ../../static/t/who/box_list_static.html:6 #: ../../static/t/room/edit/tab_feed.html:13 msgid "User name" msgstr "Nombre de usuario" #: ../../static/t/who/summary.html:6 ../../static/t/who/box_list_static.html:7 msgid "Room" msgstr "Sala" #: ../../static/t/who/box_list_static.html:8 msgid "From host" msgstr "Desde el host" #: ../../static/t/view_message.html:19 msgid "Edit" msgstr "" #: ../../static/t/view_message.html:22 ../../static/t/view_message.html:26 msgid "Reply" msgstr "Responder" #: ../../static/t/view_message.html:23 msgid "ReplyQuoted" msgstr "Respuesta entrecomillada" #: ../../static/t/view_message.html:27 msgid "ReplyAll" msgstr "Responder Todos" #: ../../static/t/view_message.html:28 msgid "Forward" msgstr "Reenviar" #: ../../static/t/view_message.html:31 ../../static/t/msg_listview.html:25 msgid "Move" msgstr "Mover" #: ../../static/t/view_message.html:34 msgid "Headers" msgstr "Cabeceras" #: ../../static/t/view_message.html:35 ../../static/t/msg_listview.html:28 msgid "Print" msgstr "Imprimir" #: ../../static/t/preferences.html:4 ../../static/t/preferences.html:7 msgid "Preferences and settings" msgstr "Preferencias y configuración" #: ../../static/t/user/list.html:3 #, fuzzy msgid "User list for " msgstr "Lista de usuarios %s" #: ../../static/t/user/list.html:9 msgid "User Name" msgstr "Nombre de Usuario" #: ../../static/t/user/list.html:10 msgid "Number" msgstr "Número" #: ../../static/t/user/list.html:11 msgid "Access Level" msgstr "Nivel de Acceso" #: ../../static/t/user/list.html:12 msgid "Last Login" msgstr "Última conexión" #: ../../static/t/user/list.html:13 msgid "Total Logins" msgstr "Total de conexiones" #: ../../static/t/user/list.html:14 msgid "Total Posts" msgstr "Correos Totales" #: ../../static/t/user/show.html:9 #, fuzzy msgid "Click here to send an instant message to" msgstr "Pulse aquí para enviar un mensaje instantáneo a %s" #: ../../static/t/start_of_new_msgs.html:4 msgid "Old messages" msgstr "" #: ../../static/t/start_of_new_msgs.html:8 msgid "New messages" msgstr "" #: ../../static/t/display_main_menu.html:7 msgid "Basic commands" msgstr "Comandos básicos" #: ../../static/t/display_main_menu.html:10 msgid "Your info" msgstr "Su información" #: ../../static/t/display_main_menu.html:12 msgid "Advanced room commands" msgstr "Comandos avanzados de sala" #: ../../static/t/iconbar/save.html:4 ../../static/t/iconbar/edit.html:4 msgid "Customize the icon bar" msgstr "Personalizar la barra de iconos" #: ../../static/t/iconbar/save.html:11 #, fuzzy msgid "" "Your icon bar has been updated. Please select any of its choices to continue." msgstr "" "Sy barra de iconos ha sido actualizada. Por favor selecciones alguno de sus " "opciones para continuar." #: ../../static/t/iconbar/save.html:11 msgid "" "You may need to force refresh (SHIFT-F5)> in order for changes to take effect" msgstr "" #: ../../static/t/iconbar/edit.html:11 msgid "Display icons as:" msgstr "Mostrar iconos como:" #: ../../static/t/iconbar/edit.html:12 msgid "pictures and text" msgstr "imágenes y texto" #: ../../static/t/iconbar/edit.html:13 msgid "pictures only" msgstr "sólo imágenes" #: ../../static/t/iconbar/edit.html:14 msgid "text only" msgstr "sólo texto" #: ../../static/t/iconbar/edit.html:16 msgid "" "Select the icons you would like to see displayed in the 'icon bar' menu on " "the left side of the screen." msgstr "" "Seleccione los iconos que le gustaría mostrar en la 'icon bar' menú a " "laizquierda de la pantalla" #: ../../static/t/iconbar/edit.html:23 msgid "Site logo" msgstr "Logotipo del sitio" #: ../../static/t/iconbar/edit.html:23 msgid "An icon describing this site" msgstr "Un icono descriptor de este sitio" #: ../../static/t/iconbar/edit.html:29 msgid "Your summary page" msgstr "Tu página sumario" #: ../../static/t/iconbar/edit.html:36 msgid "Mail (inbox)" msgstr "Correo (entrante)" #: ../../static/t/iconbar/edit.html:36 msgid "A shortcut to your email Inbox" msgstr "Atajo a su buzón de correo" #: ../../static/t/iconbar/edit.html:42 msgid "Your personal address book" msgstr "Su libreta de direcciones personal" #: ../../static/t/iconbar/edit.html:49 msgid "Your personal notes" msgstr "Sus notas personales" #: ../../static/t/iconbar/edit.html:55 msgid "A shortcut to your personal calendar" msgstr "Atajo a su calendario personal" #: ../../static/t/iconbar/edit.html:61 msgid "A shortcut to your personal task list" msgstr "Atajo a su lista personal de tareas" #: ../../static/t/iconbar/edit.html:67 msgid "" "Clicking this icon displays a list of all accessible rooms (or folders) " "available." msgstr "" "Pulsando en este icono se mostrará una lista de todas las salas disponibles " "(o carpetas)" #: ../../static/t/iconbar/edit.html:73 msgid "Who is online?" msgstr "¿Quién está en línea?" #: ../../static/t/iconbar/edit.html:73 msgid "Clicking this icon displays a list of all users currently logged in." msgstr "" "Pulsando en este icono se mostrará una lista de todos los usuarios " "actualmente conectados." #: ../../static/t/iconbar/edit.html:79 msgid "" "Clicking this icon enters real-time chat mode with other users in the same " "room." msgstr "" "Pulsando en este icono se entra en el mmodo de chat a tiempor real con otros " "usuarios en la misma sala" #: ../../static/t/iconbar/edit.html:85 msgid "Advanced options" msgstr "Opciones avanzadas" #: ../../static/t/iconbar/edit.html:85 msgid "Access to the complete menu of Citadel functions." msgstr "Acceso al menú completo de funciones de Citadel." #: ../../static/t/iconbar/edit.html:91 msgid "Citadel logo" msgstr "Logotipo de Citadel" #: ../../static/t/iconbar/edit.html:91 msgid "Displays the 'Powered by Citadel' icon" msgstr "Muestra el icono 'Powered by Citadel'" #: ../../static/t/room/edit/tab_expire.html:8 msgid "Message expire policy for this room" msgstr "Política de expiración de mensajes para esta sala" #: ../../static/t/room/edit/tab_expire.html:14 msgid "Use the default policy for this floor" msgstr "Use la política por defecto para esta sala" #: ../../static/t/room/edit/tab_expire.html:36 msgid "Message expire policy for this floor" msgstr "Política de expiración de mensajes para este nivel" #: ../../static/t/room/edit/tab_expire.html:42 msgid "Use the system default" msgstr "Usar las configuraciones por defecto" #: ../../static/t/room/edit/editroom.html:5 ../../static/t/room/edit.html:6 msgid "Configuration" msgstr "Configuración" #: ../../static/t/room/edit/editroom.html:6 ../../static/t/room/edit.html:7 msgid "Message expire policy" msgstr "Política de expiración de mensajes" #: ../../static/t/room/edit/editroom.html:7 ../../static/t/room/edit.html:8 msgid "Access controls" msgstr "Controles de acceso" #: ../../static/t/room/edit/editroom.html:8 ../../static/t/room/edit.html:9 msgid "Sharing" msgstr "Compartir" #: ../../static/t/room/edit/editroom.html:9 ../../static/t/room/edit.html:10 msgid "Mailing list service" msgstr "Servicio de lista de correo" #: ../../static/t/room/edit/editroom.html:10 ../../static/t/room/edit.html:11 msgid "Remote retrieval" msgstr "" #: ../../static/t/room/edit/tab_config.html:6 #, fuzzy msgid "name of room: " msgstr "Nombre de la sala: " #: ../../static/t/room/edit/tab_config.html:10 #: ../../static/t/room/create.html:20 msgid "Resides on floor: " msgstr "Nivel al que pertenece: " #: ../../static/t/room/edit/tab_config.html:16 #: ../../static/t/room/create.html:68 msgid "Type of room:" msgstr "Tipo de sala:" #: ../../static/t/room/edit/tab_config.html:22 #: ../../static/t/room/create.html:73 msgid "Public (automatically appears to everyone)" msgstr "Pública (automáticamente aparece visible a todos)" #: ../../static/t/room/edit/tab_config.html:28 #: ../../static/t/room/create.html:77 msgid "Private - hidden (accessible to anyone who knows its name)" msgstr "Privada - oculta (accesible solo a quienes conocen su nombre)" #: ../../static/t/room/edit/tab_config.html:35 #: ../../static/t/room/create.html:81 msgid "Private - require password: " msgstr "Privada - se requiere contraseña: " #: ../../static/t/room/edit/tab_config.html:44 #: ../../static/t/room/create.html:86 msgid "Private - invitation only" msgstr "Privada - sólo mediante invitación" #: ../../static/t/room/edit/tab_config.html:51 #: ../../static/t/room/create.html:90 msgid "Personal (mailbox for you only)" msgstr "Personal (buzón de correo para tí solo)" #: ../../static/t/room/edit/tab_config.html:55 msgid "If private, cause current users to forget room" msgstr "Si privada, hacer que los usuarios actuales olviden la sala" #: ../../static/t/room/edit/tab_config.html:61 msgid "Preferred users only" msgstr "Usuarios preferentes solamente" #: ../../static/t/room/edit/tab_config.html:66 msgid "Read-only room" msgstr "Sala de sólo lectura" #: ../../static/t/room/edit/tab_config.html:71 msgid "All users allowed to post may also delete messages" msgstr "" #: ../../static/t/room/edit/tab_config.html:76 msgid "File directory room" msgstr "Sala directorio de ficheros" #: ../../static/t/room/edit/tab_config.html:80 msgid "Directory name: " msgstr "Nombre de directorio " #: ../../static/t/room/edit/tab_config.html:86 msgid "Uploading allowed" msgstr "Subidas permitidas" #: ../../static/t/room/edit/tab_config.html:91 msgid "Downloading allowed" msgstr "Bajadas permitidas" #: ../../static/t/room/edit/tab_config.html:96 msgid "Visible directory" msgstr "Directorio visible" #: ../../static/t/room/edit/tab_config.html:103 msgid "Network shared room" msgstr "Sala de intercambio en red" #: ../../static/t/room/edit/tab_config.html:108 msgid "Permanent (does not auto-purge)" msgstr "Permanente (sin purga automática)" #: ../../static/t/room/edit/tab_config.html:113 msgid "Subject Required (Force users to specify a message subject)" msgstr "" #: ../../static/t/room/edit/tab_config.html:116 msgid "Anonymous messages" msgstr "Mensajes anónimos" #: ../../static/t/room/edit/tab_config.html:122 msgid "No anonymous messages" msgstr "Sin mensajes anónimos" #: ../../static/t/room/edit/tab_config.html:127 msgid "All messages are anonymous" msgstr "Todos los mensajes anónimos" #: ../../static/t/room/edit/tab_config.html:132 msgid "Prompt user when entering messages" msgstr "Preguntar al usuario cuando esté introduciendo mensajes" #: ../../static/t/room/edit/tab_config.html:136 msgid "Room aide: " msgstr "Administrador de la sala " #: ../../static/t/room/edit/tab_listserv.html:5 #, fuzzy msgid "" "The contents of this room are being mailed as individual messages " "to the following list recipients:

    " msgstr "" "El contenido de esta sala está siendo enviado por correo como mensajes " "individuales a los siguientes receptores:

    \n" #: ../../static/t/room/edit/tab_listserv.html:19 #, fuzzy msgid "" "The contents of this room are being mailed in digest form to the " "following list recipients:

    " msgstr "" "El contenido de esta sala se envia por correo compilado en boletines " "diarios a los siguientes receptores:

    \n" #: ../../static/t/room/edit/tab_listserv.html:39 msgid "Add recipients from Contacts or other address books" msgstr "" #: ../../static/t/room/edit/tab_listserv.html:48 msgid "Allow non-subscribers to mail to this room." msgstr "" #: ../../static/t/room/edit/tab_listserv.html:54 msgid "Room post publication needs Admin permission." msgstr "" #: ../../static/t/room/edit/tab_listserv.html:59 #, fuzzy msgid "Allow self-service subscribe/unsubscribe requests." msgstr "" "Esta sala está configurada para permitir autoservicio en los porcesos de " "suscripción/cancelación." #: ../../static/t/room/edit/tab_listserv.html:65 msgid "The URL for subscribe/unsubscribe is: " msgstr "La URL para suscribirse/cancelar suscripción es: " #: ../../static/t/room/edit/digestrecp_removal.html:1 #: ../../static/t/room/edit/pop3client_removal.html:9 #: ../../static/t/room/edit/listrecp_removal.html:1 #: ../../static/t/room/edit/rssclient_removal.html:5 msgid "(remove)" msgstr "(remover)" #: ../../static/t/room/edit/tab_admin.html:5 msgid "Delete this room" msgstr "Borrar esta sala" #: ../../static/t/room/edit/tab_admin.html:10 #, fuzzy msgid "Set or change the icon for this rooms banner" msgstr "Determinar o cambiar el icono para el baner de esta sala" #: ../../static/t/room/edit/tab_admin.html:14 #, fuzzy msgid "Edit this rooms Info file" msgstr "Editar el fichero informativo de esta sala" #: ../../static/t/room/edit/tab_share.html:5 msgid "Shared with" msgstr "Compartido con" #: ../../static/t/room/edit/tab_share.html:6 msgid "Not shared with" msgstr "No compartido con" #: ../../static/t/room/edit/tab_share.html:11 #: ../../static/t/room/edit/tab_share.html:21 msgid "Remote node name" msgstr "Nombre del nodo remoto" #: ../../static/t/room/edit/tab_share.html:12 #: ../../static/t/room/edit/tab_share.html:22 msgid "Remote room name" msgstr "Nombre de la sala remota" #: ../../static/t/room/edit/tab_share.html:13 #: ../../static/t/room/edit/tab_share.html:23 msgid "Actions" msgstr "Acciones" #: ../../static/t/room/edit/tab_share.html:35 #, fuzzy msgid "" "When sharing a room, it must be shared from both ends. Adding a node to the " "'shared' list sends messages out, but in order to receive messages, the " "other nodes must be configured to send messages out to your system as well. " "
  • If the remote room name is blank, it is assumed that the room name is " "identical on the remote node.
  • If the remote room name is different, the " "remote node must also configure the name of the room here." msgstr "" "Las sals compartidas deben compartirse desde los dos lados. Añadiendo un " "nodo a la lista 'shared' (compartida) se envían mensajes afuera, pero para " "recibir, los otros nodos tienen que estar configurados para enviar mensajes " "a su tu sistema también.
  • Si el nombre de la sala remota está vacío, se " "asume que su nombre es idéntico en el nodo remoto.
  • Si el nombre de la " "sala remota es diferente, el nodo remoto debe configurar el nombre de la " "sala también aquí.
    \n" #: ../../static/t/room/edit/tab_feed.html:2 msgid "" "Retrieve messages from these remote POP3 accounts and store them in this " "room:" msgstr "" #: ../../static/t/room/edit/tab_feed.html:12 #, fuzzy msgid "Remote host" msgstr "Smart hosts" #: ../../static/t/room/edit/tab_feed.html:15 #, fuzzy msgid "Keep messages on server?" msgstr "No hay mensajes aquí" #: ../../static/t/room/edit/tab_feed.html:16 #, fuzzy msgid "Interval" msgstr "General" #: ../../static/t/room/edit/tab_feed.html:31 msgid "Fetch the following RSS feeds and store them in this room:" msgstr "" #: ../../static/t/room/edit/tab_feed.html:43 msgid "Feed URL" msgstr "" #: ../../static/t/room/edit/tab_access.html:5 #, fuzzy msgid "" "The users listed below have access to this room. To remove a user from the " "access list, select the user name from the list and click 'Kick'." msgstr "" "Los usuarios listados abajo tiene acceso a esta sala. Para borrar un " "usuario seleccione el usuario de la lista de acceso y pulse 'Kick'." #: ../../static/t/room/edit/tab_access.html:20 msgid "" "To grant another user access to this room, enter the user name in the box " "below and click 'Invite'." msgstr "" "Para garantizar el acceso de un usuario a la sala, introduzca su nombre ne " "la caja de abajo y pulse 'Invitar'." #: ../../static/t/room/edit/tab_access.html:26 msgid "Invite:" msgstr "Invitar" #: ../../static/t/room/edit/tab_access.html:35 #, fuzzy msgid "Users" msgstr "Lista de usuarios" #: ../../static/t/room/zapped_list.html:7 msgid "Zapped (forgotten) rooms" msgstr "Salas Zapped (olvidadas)" #: ../../static/t/room/zapped_list.html:10 #, fuzzy msgid "Click on any room to un-zap it and goto that room." msgstr "Pulse en cualqueir sala para recordarla y entrar en ella.\n" #: ../../static/t/room/display_private.html:7 msgid "Go to a hidden room" msgstr "Ir a una sala oculta" #: ../../static/t/room/display_private.html:8 #, fuzzy msgid "" "If you know the name of a hidden (guess-name) or passworded room, you can " "enter that room by typing its name below. Once you gain access to a private " "room, it will appear in your regular room listings so you don‘t have to keep " "returning here." msgstr "" "Si conoces el nombre de una sala oculta (nombre de invitación) o protegida " "con contraseña, puedesentrar en la sala escribiendo el nombre abajo. Una vez " "que hayas ganado acceso a una salaprivada, aparecerá regularmente en tu " "lista de salas disponibles, por lo que no tendrás que repetir este proceso. " #: ../../static/t/room/display_private.html:14 msgid "Enter room name:" msgstr "Intoduzca el nombre de sala:" #: ../../static/t/room/display_private.html:21 msgid "Enter room password:" msgstr "Introduzaca la contraseña de sala:" #: ../../static/t/room/create.html:11 #: ../../static/t/menu/advanced_roomcommands.html:6 msgid "Create a new room" msgstr "Crear nueva sala" #: ../../static/t/room/create.html:18 msgid "Name of room: " msgstr "Nombre de la sala: " #: ../../static/t/room/create.html:32 msgid "Default view for room: " msgstr "Vista por defecto para esta sala " #: ../../static/t/room/zap_this.html:3 msgid "Zap (forget/unsubscribe) the current room" msgstr "Zap (olvidar/cancela suscripción) a la sala actual" #: ../../static/t/room/zap_this.html:6 #, fuzzy msgid "If you select this option," msgstr "Editar o borrar esta sala" #: ../../static/t/room/zap_this.html:8 #, fuzzy msgid "will disappear from your room list. Is this what you wish to do?" msgstr "" "Si selecciona esta opción, %s desaparecerá de su lista de salas. " "¿Es eso lo que desea?
    \n" #: ../../static/t/menu/your_info.html:2 msgid "Change your preferences and settings" msgstr "Cambiar sus preferencias y configuración" #: ../../static/t/menu/your_info.html:3 msgid "Update your contact information" msgstr "Actualizar su información de contacto" #: ../../static/t/menu/your_info.html:5 msgid "Enter your 'bio'" msgstr "Introducir 'bio' (biografía)" #: ../../static/t/menu/your_info.html:6 msgid "Edit your online photo" msgstr "Editar su foto en línea" #: ../../static/t/menu/your_info.html:8 msgid "Edit your push email settings" msgstr "" #: ../../static/t/menu/your_info.html:9 #, fuzzy msgid "Manage your OpenIDs" msgstr "Cambie su contraseña" #: ../../static/t/menu/basic_commands.html:3 msgid "List known rooms" msgstr "Listar salas conocidas" #: ../../static/t/menu/basic_commands.html:3 msgid "Where can I go from here?" msgstr "¿A dónde se puede ir desde aquí?" #: ../../static/t/menu/basic_commands.html:4 ../../static/t/navbar.html:168 msgid "Goto next room" msgstr "Ir a la siguiente sala" #: ../../static/t/menu/basic_commands.html:4 #, fuzzy msgid "...with unread messages" msgstr "...con mensajes no leídos" #: ../../static/t/menu/basic_commands.html:5 msgid "Skip to next room" msgstr "Saltar a la siguiente sala" #: ../../static/t/menu/basic_commands.html:5 msgid "(come back here later)" msgstr "(volver aquí después)" #: ../../static/t/menu/basic_commands.html:6 ../../static/t/navbar.html:5 msgid "Ungoto" msgstr "Atrás" #: ../../static/t/menu/basic_commands.html:6 #, fuzzy msgid "oops! Back to " msgstr "(¡oh! Vuelta a %s)" #: ../../static/t/menu/basic_commands.html:10 ../../static/t/navbar.html:13 msgid "Read new messages" msgstr "Leer mensajes nuevos" #: ../../static/t/menu/basic_commands.html:10 msgid "...in this room" msgstr "... en esta sala" #: ../../static/t/menu/basic_commands.html:11 ../../static/t/navbar.html:19 msgid "Read all messages" msgstr "Leer todos los mensajes" #: ../../static/t/menu/basic_commands.html:11 msgid "...old and new" msgstr "...viejos y nuevos" #: ../../static/t/menu/basic_commands.html:12 ../../static/t/navbar.html:25 msgid "Enter a message" msgstr "Redactar mensaje" #: ../../static/t/menu/basic_commands.html:12 msgid "(post in this room)" msgstr "(postear a esta sala)" #: ../../static/t/menu/basic_commands.html:13 msgid "File library" msgstr "" #: ../../static/t/menu/basic_commands.html:13 msgid "(List files available for download)" msgstr "" #: ../../static/t/menu/basic_commands.html:17 msgid "Summary page" msgstr "Página sumario" #: ../../static/t/menu/basic_commands.html:17 msgid "Summary of my account" msgstr "Sumario de mi cuenta" #: ../../static/t/menu/basic_commands.html:18 msgid "User list" msgstr "Lista de usuarios" #: ../../static/t/menu/basic_commands.html:18 msgid "(all registered users)" msgstr "(todos los usuarios registrados)" #: ../../static/t/menu/basic_commands.html:19 msgid "Bye!" msgstr "¡Adiós!" #: ../../static/t/menu/advanced_roomcommands.html:3 msgid "Edit or delete this room" msgstr "Editar o borrar esta sala" #: ../../static/t/menu/advanced_roomcommands.html:5 msgid "Go to a 'hidden' room" msgstr "Ir a una sala 'hidden' (oculta)" #: ../../static/t/menu/advanced_roomcommands.html:7 #, fuzzy msgid "Zap (forget) this room" msgstr "Zap (olvidar) esta sala (%s)" #: ../../static/t/menu/advanced_roomcommands.html:8 msgid "List all forgotten rooms" msgstr "Listar todas las salas olvidadas" #: ../../static/t/navbar.html:34 msgid "View contacts" msgstr "Ver contactos" #: ../../static/t/navbar.html:40 msgid "Add new contact" msgstr "Añadir nuevo contacto" #: ../../static/t/navbar.html:49 msgid "Day view" msgstr "Visualización de día" #: ../../static/t/navbar.html:55 msgid "Month view" msgstr "VIsualización mensual" #: ../../static/t/navbar.html:61 msgid "Add new event" msgstr "Añadir nuevo evento" #: ../../static/t/navbar.html:70 msgid "Calendar list" msgstr "Lista de calendario" #: ../../static/t/navbar.html:79 msgid "View tasks" msgstr "Ver tareas" #: ../../static/t/navbar.html:85 msgid "Add new task" msgstr "Añadir nueva tarea" #: ../../static/t/navbar.html:94 msgid "View notes" msgstr "Ver notas" #: ../../static/t/navbar.html:101 msgid "Add new note" msgstr "Añadir nueva nota" #: ../../static/t/navbar.html:110 msgid "Refresh message list" msgstr "" #: ../../static/t/navbar.html:122 msgid "Write mail" msgstr "Redactar mensaje" #: ../../static/t/navbar.html:132 msgid "Wiki home" msgstr "Wiki home" #: ../../static/t/navbar.html:139 msgid "Edit this page" msgstr "Editar esta página" #: ../../static/t/navbar.html:145 msgid "History" msgstr "" #: ../../static/t/navbar.html:154 #, fuzzy msgid "New blog post" msgstr "los nuevos puestos de trabajo" #: ../../static/t/navbar.html:162 msgid "Skip this room" msgstr "Saltarse esta sala" #: ../../static/t/msg_listview.html:18 msgid "Loading messages from server, please wait" msgstr "" #: ../../static/t/msg_listview.html:24 msgid "Open in new window" msgstr "" #: ../../static/t/msg_listview.html:26 msgid "Copy" msgstr "" #: ../../static/t/view_mailq/message.html:6 msgid "Originaly posted in: " msgstr "" #: ../../static/t/view_mailq/header.html:15 msgid "Refresh this page" msgstr "" #: ../../static/t/view_mailq/header.html:21 msgid "Message ID" msgstr "" #: ../../static/t/view_mailq/header.html:23 msgid "Date/time submitted" msgstr "" #: ../../static/t/view_mailq/header.html:25 msgid "Next attempt" msgstr "" #: ../../static/t/view_mailq/header.html:29 msgid "Recipients" msgstr "" #: ../../static/t/view_mailq/footer_empty.html:4 msgid "The queue is empty." msgstr "" #: ../../static/t/view_mailq/footer_empty.html:9 #: ../../static/t/view_mailq/footer.html:5 msgid "You do not have permission to view this resource." msgstr "" #: ../../static/t/get_logged_in.html:5 msgid "You must be logged in to access this page." msgstr "iDebe estar registrado para acceder a esta página." #: ../../static/t/get_logged_in.html:9 #: ../../static/t/edit_message/attachments_pane.html:3 msgid "Close window" msgstr "Cerrar ventana" #: ../../static/t/get_logged_in.html:55 msgid "Log in using a user name and password" msgstr "" #: ../../static/t/get_logged_in.html:60 ../../static/t/get_logged_in.html:75 msgid "Password:" msgstr "Contraseña" #: ../../static/t/get_logged_in.html:65 ../../static/t/get_logged_in.html:69 msgid "New user? Register now" msgstr "¿Nuevo usuario? Regístrese ahora" #: ../../static/t/get_logged_in.html:70 msgid "" "enter the name and password you wish to use, and click "New User." " msgstr "" #: ../../static/t/get_logged_in.html:83 msgid "Log in using OpenID" msgstr "" #: ../../static/t/get_logged_in.html:85 msgid "OpenID URL:" msgstr "" #: ../../static/t/get_logged_in.html:92 msgid "Log in using Google" msgstr "" #: ../../static/t/get_logged_in.html:97 #, fuzzy msgid "Log in using Yahoo" msgstr "Iniciar acceso de nuevo" #: ../../static/t/get_logged_in.html:102 msgid "Log in using AOL or AIM" msgstr "" #: ../../static/t/get_logged_in.html:104 msgid "Enter your AOL or AIM screen name:" msgstr "" #: ../../static/t/get_logged_in.html:115 msgid "Please wait" msgstr "" #: ../../static/t/summary/page.html:4 #, fuzzy msgid "Summary page for " msgstr "Página sumario para %s" #: ../../static/t/summary/page.html:21 msgid "Messages" msgstr "Mensajes" #: ../../static/t/summary/page.html:39 msgid "Today on your calendar" msgstr "Hoy en su calendario" #: ../../static/t/summary/page.html:51 #, fuzzy msgid "Who‘s online now" msgstr "Quién está en línea ahora" #: ../../static/t/summary/page.html:60 msgid "About this server" msgstr "Acerca de este servidor" #: ../../static/t/summary/page.html:63 msgid "You are connected to" msgstr "" #: ../../static/t/summary/page.html:64 #, fuzzy msgid "running" msgstr "Afinar" #: ../../static/t/summary/page.html:65 #, fuzzy msgid "with" msgstr "quinto" #: ../../static/t/summary/page.html:66 msgid "server build" msgstr "" #: ../../static/t/summary/page.html:67 msgid "and located in" msgstr "" #: ../../static/t/summary/page.html:68 #, fuzzy msgid "Your system administrator is" msgstr "Nombre del administrador de sistema" #: ../../static/t/edit_message/attachments_pane.html:16 msgid "Attach file" msgstr "Adjuntar fichero" #: ../../static/t/edit_message/attachments_pane.html:21 msgid "Upload" msgstr "Cargar" #: ../../static/t/edit_message/section_attach_select.html:4 #, fuzzy msgid "Remove" msgstr "(remover)" #: ../../static/t/loggedinas.html:3 #, fuzzy msgid "Logged in as" msgstr "Última conexión" #: ../../static/t/loggedinas.html:6 #, fuzzy msgid "Not logged in." msgstr "No conectado ahora" #~ msgid "A script by that name already exists." #~ msgstr "Un script ya tiene este nombre." #~ msgid "" #~ "A new script has been created. Return to the script editing screen to " #~ "edit and activate it." #~ msgstr "" #~ "Un nuevo script ha sido creado. Vuelva a la pantalla de edición de los " #~ "scripts para editarlo y activarlo." #~ msgid "Create" #~ msgstr "Crear" #~ msgid "Delete script" #~ msgstr "Borrar un script" #~ msgid "Delete this script?" #~ msgstr "¿Borrar este script?" #~ msgid "Move rule up" #~ msgstr "Mover la regla hacia arriba" #~ msgid "Move rule down" #~ msgstr "Mover la regla hacia abajo" #~ msgid "Delete rule" #~ msgstr "Eliminar regla" #~ msgid "Reset form" #~ msgstr "Resetear formulario" #~ msgid "" #~ "You are connected to %s, running %s with %s, server build %s and located " #~ "in %s. Your system administrator is %s." #~ msgstr "" #~ "Estás conectado a %s, corriendo %s con %s, server build %s, y localizado " #~ "en %s. Tu administrador de sistema es %s." #, fuzzy #~ msgid "Yes with users list" #~ msgstr "cambiar a lista de salas" #~ msgid "Room list" #~ msgstr "Lista de Salas" #, fuzzy #~ msgid "text" #~ msgstr "siguiente" #, fuzzy #~ msgid "name" #~ msgstr "(sin nombre)" #, fuzzy #~ msgid "password" #~ msgstr "Contraseña" #, fuzzy #~ msgid "pass" #~ msgstr "Tareas" #, fuzzy #~ msgid "display: none" #~ msgstr "Mostrar nombre:" #~ msgid "Your password was not accepted." #~ msgstr "Su contraseña no ha sido aceptada" #~ msgid "Exit" #~ msgstr "Salir" #~ msgid "Change name" #~ msgstr "Cambiar nombre" #~ msgid "Change CSS" #~ msgstr "Cambiar CSS" #~ msgid "Create new floor" #~ msgstr "Crear nuevo nivel" #~ msgid "" #~ "You have one or more instant messages waiting, but the Citadel Instant " #~ "Messenger window failed to open. This is probably because you have a " #~ "popup blocker installed. Please configure your popup blocker to allow " #~ "popups from this site if you wish to receive instant messages." #~ msgstr "" #~ "Tienes uno o más mensajes instantáneos esperando, pero la ventanade " #~ "mensajería instantánea no se pudo abrir. Esto ha sido causado " #~ "probablemente porque tienes instalado un bloqueo de popups, configure su " #~ "herramienta parapermitir poups de este sitio si quiere recibir mensajería " #~ "instantánea." #~ msgid "Change" #~ msgstr "Cambiar" #, fuzzy #~ msgid "Add node?" #~ msgstr "Añadir nodo" #, fuzzy #~ msgid "Minutes" #~ msgstr "Minuto" #, fuzzy #~ msgid "active" #~ msgstr "Tentativa" #~ msgid "Send" #~ msgstr "Enviar" #, fuzzy #~ msgid "Pictures in" #~ msgstr "sólo imágenes" #~ msgid "Edit configuration" #~ msgstr "Editar configuración" #~ msgid "Edit address book entry" #~ msgstr "Editar entrada de la libreta de direcciones" #~ msgid "Delete user" #~ msgstr "Borrar usuario" #~ msgid "Delete this user?" #~ msgstr "¿Borrar este usuario?" #, fuzzy #~ msgid "Delete File" #~ msgstr "Borrar usuario" #~ msgid "Delete this message?" #~ msgstr "¿Borrar este mensaje?" #, fuzzy #~ msgid "Powered by Citadel" #~ msgstr "Muestra el icono 'Powered by Citadel' " #~ msgid "Go to your email inbox" #~ msgstr "Ir a tu buzón de correo entrante" #~ msgid "Go to your personal calendar" #~ msgstr "Ir a tu calendario personal" #~ msgid "Go to your personal address book" #~ msgstr "Ir a tu libreta personal de direcciones" #~ msgid "Go to your personal notes" #~ msgstr "Ir a tus notas personales" #~ msgid "Go to your personal task list" #~ msgstr "Ir a tu lista de tareas personal" #, fuzzy #~ msgid "List all your accessible rooms" #~ msgstr "Listar todas las salas accesibles" #~ msgid "See who is online right now" #~ msgstr "Ver quien está online ahora mismo" #~ msgid "" #~ "Advanced Options Menu: Advanced Room commands, Account Info, and Chat" #~ msgstr "" #~ "Menú de opciones avanzadas: Comandos Avanzados para Salas, información de " #~ "cuentas,y Chat" #~ msgid "Room and system administration functions" #~ msgstr "Funciones de administración de sala y sistema" #~ msgid "Log off now?" #~ msgstr "¿Desconectar ahora?" #, fuzzy #~ msgid "Delete this entry?" #~ msgstr "¿Borrar esta entrada?" #, fuzzy #~ msgid "Delete this note?" #~ msgstr "¿Borrar esta entrada?" #, fuzzy #~ msgid "Do you really want to kill this session?" #~ msgstr "¿Realmente quiere matar esta sesión?" #, fuzzy #~ msgid "Save changes?" #~ msgstr "Salvar cambios" #, fuzzy #~ msgid "%d new of %d messages%s" #~ msgstr "%d nuevo de %d mensajes" #~ msgid "" #~ "Leave all messages marked as unread, go to next room with unread messages" #~ msgstr "" #~ "Dejar todos los mensajes marcados como no leídos, yr a la siguiente sala " #~ "con mensajes no leídos" #~ msgid "Mark all messages as read, go to next room with unread messages" #~ msgstr "" #~ "Marcar todso los mensajes como leídos, ir a la siguiente sala con " #~ "mensajes por leer" #~ msgid "Are you sure you want to delete this room?" #~ msgstr "¿Esta seguro de querer borrar esta sala?" #~ msgid "Unshare" #~ msgstr "Dejar de compartir" #~ msgid "Share" #~ msgstr "Compartir" #, fuzzy #~ msgid "List" #~ msgstr "Primero" #~ msgid "Kick" #~ msgstr "Kick" #~ msgid "Invite" #~ msgstr "Invitar" #, fuzzy #~ msgid "User" #~ msgstr "Nuevo Usuario" #~ msgid "Create new room" #~ msgstr "Crear nueva sala" #~ msgid "Zap this room" #~ msgstr "Zap a esta sala" #~ msgid "(nothing)" #~ msgstr "(nada)" #~ msgid "unexpected end of message" #~ msgstr "finalización inesperada de mensaje" #~ msgid "An error occurred while setting up the chat socket." #~ msgstr "Se produjo un error al intentar activar la conexión de chat. " #~ msgid "Now exiting chat mode." #~ msgstr "Saliendo de modo chat." #~ msgid "Help" #~ msgstr "Ayuda" #~ msgid "List users" #~ msgstr "Listar usuarios" #~ msgid "No messages here." #~ msgstr "No hay mensajes aquí" #, fuzzy #~ msgid "no more messages" #~ msgstr "Mensajes anónimos" #~ msgid "Email" #~ msgstr "Email" #~ msgid "Error retrieving RSS feed: couldn't find messages\n" #~ msgstr "Error de respuesta RSS: no se pudieron encontrar mensajes\n" #, fuzzy #~ msgid "%s from" #~ msgstr "de" #, fuzzy #~ msgid "%s in %s" #~ msgstr "sólo imágenes" #, fuzzy #~ msgid "" #~ "
    • Enter your OpenID URL and click "Log in".
    • Click here to " #~ "learn what OpenID is and how Citadel is using it.
    • Please log off " #~ "properly when finished.
    • You must use a browser that supports " #~ "frames and cookies.
    • Also keep in mind that if your " #~ "browser is configured to block pop-up windows, you will not be able to " #~ "receive any instant messages.
    " #~ msgstr "" #~ "
    • Si ya dispone de una cuenta en %s, introduzca su nombre de " #~ "usuario y contraseña y seleccione "Log in."
    • Si es un " #~ "usuario nuevo, introduzca su nombre y la contraseña que le gustaría " #~ "utilizar, y pulse "Nuevo Usuario."
    • Por favor, cierre su " #~ "conexión adecuadamente al terminar.
    • Debe utilizar un explorador que " #~ "soporte frames y cookies.
    • Tenga también en cuenta que " #~ "si su explorador esta configurado para bloquear pop windows, no podrá " #~ "recibir mensajería instantánea.
    " #, fuzzy #~ msgid "" #~ "enter your user name and password and click "Log in."
  • If " #~ "you are a new user, enter the name and password you wish to use, and " #~ "click "New User."
  • Please log off properly when finished. " #~ "
  • You must use a browser that supports frames and cookies.
  • Also keep in mind that if your browser is configured to block pop-" #~ "up windows, you will not be able to receive any instant messages." #~ msgstr "" #~ "
    • Si ya dispone de una cuenta en %s, introduzca su nombre de " #~ "usuario y contraseña y seleccione "Log in."
    • Si es un " #~ "usuario nuevo, introduzca su nombre y la contraseña que le gustaría " #~ "utilizar, y pulse "Nuevo Usuario."
    • Por favor, cierre su " #~ "conexión adecuadamente al terminar.
    • Debe utilizar un explorador que " #~ "soporte frames y cookies.
    • Tenga también en cuenta que " #~ "si su explorador esta configurado para bloquear pop windows, no podrá " #~ "recibir mensajería instantánea.
    " #~ msgid "Find out more about Citadel" #~ msgstr "Saber más sobre Citadel" #~ msgid "CITADEL" #~ msgstr "CITADEL" #~ msgid "Customize this menu" #~ msgstr "Personalizar este menú" #~ msgid "Internet configuration" #~ msgstr "Configuración de internet" #~ msgid "of %d messages." #~ msgstr "de %d mensajes." #~ msgid " from " #~ msgstr " de " #~ msgid " in " #~ msgstr " en " #~ msgid "Edit node configuration for " #~ msgstr "Editar configuración de nodo para" #~ msgid "ERROR: could not open template " #~ msgstr "ERROR: no se pudo abrir la plantilla (template) " #~ msgid "" #~ "This message contains calendaring/scheduling information, but support " #~ "for calendars is not available on this particular system. Please ask " #~ "your system administrator to install a new version of the Citadel web " #~ "service with calendaring enabled.
    \n" #~ msgstr "" #~ "Este mensaje contiene información sobre porgrmación anticipada de " #~ "tareas y calendarios,perolos calendarios no son soportados por este " #~ "sistema particular. Por favor, pida a su administrador de sistemas que " #~ "instale una nueva versión del servicio web Citadel con activación de " #~ "calendarios.
    \n" #~ msgid "" #~ "Cannot display calendar item. You are seeing this error because your " #~ "WebCit service has not been installed with calendar support. Please " #~ "contact your system administrator.
    \n" #~ msgstr "" #~ "No puedo mostrar elemento del calendario.Este error significa que " #~ "WebCit no está instalado con soporte para calendarios. Contacte con su " #~ "administrador de sistemas.
    \n" #~ msgid "" #~ "Cannot display to-do item. You are seeing this error because your " #~ "WebCit service has not been installed with calendar support. Please " #~ "contact your system administrator.
    \n" #~ msgstr "" #~ "No se puede mostrar el elemento «por hacer». Está viendo este mensaje " #~ "porque su servicio WebCit se instaló sin soporte para calendarios. Por " #~ "favor, contacte con su adminstrador de sistemas.
    \n" #~ msgid "Day: " #~ msgstr "Día" #~ msgid "Year: " #~ msgstr "Año" #~ msgid "The calendar view is not available." #~ msgstr "La visualización del calendario no está disponible." #~ msgid "The tasks view is not available." #~ msgstr "La visualización de tareas no está disponible." #~ msgid "Gateway domains" #~ msgstr "Dominios de puerta de enlace" #~ msgid "(domains whose subdomains match Citadel hosts)" #~ msgstr "" #~ "(dominios cuyos subdominios se corresponden con con el host Citadel)" #~ msgid "(This server does not support task lists)" #~ msgstr "(Este servidro no soporta listas de tarea)" #~ msgid "(This server does not support calendars)" #~ msgstr "(Este servidro no soporta calendarios)" #~ msgid "" #~ "This room is not configured to allow self-service subscribe/" #~ "unsubscribe requests." #~ msgstr "" #~ "Esta sala noestá configurada para permitir autoservicio en cuanto " #~ "peticiones desuscripción/cancelación." #~ msgid "Click to enable." #~ msgstr "Pulse para activar." #~ msgid "Back to menu" #~ msgstr "Volver al menú" #~ msgid "Respond to meeting request" #~ msgstr "Responder a convocatoria de reunión" #~ msgid "Update your calendar with this RSVP" #~ msgstr "Actualizar el calendario con este RVSP" #~ msgid "Public room" #~ msgstr "Sala pública" #~ msgid "Private - guess name" #~ msgstr "Privada - invitación nominativa" #~ msgid "Private - require password:" #~ msgstr "Privada - requiere contraseña:" #~ msgid "localhost" #~ msgstr "localhost" #~ msgid "gatewaydomain" #~ msgstr "gatewaydomain" #~ msgid "rbl" #~ msgstr "rbl" #~ msgid "spamassassin" #~ msgstr "spamassassin" #~ msgid "[ close window ]" #~ msgstr "[ cerrar ventana ]" webcit-8.24-dfsg.orig/po/webcit/ko.po0000644000175000017500000024705512271477123017261 0ustar michaelmichael# Korean translation for citadel # Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 # This file is distributed under the same license as the citadel package. # FIRST AUTHOR , 2013. # msgid "" msgstr "" "Project-Id-Version: citadel\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-03-20 01:03-0400\n" "PO-Revision-Date: 2013-11-20 21:55+0000\n" "Last-Translator: Litty \n" "Language-Team: Korean \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2013-11-21 05:11+0000\n" "X-Generator: Launchpad (build 16831)\n" #: ../../roomops.c:708 ../../roomops.c:1005 ../../sieve.c:364 msgid "Cancelled. Changes were not saved." msgstr "취소되었습니다. 변경 사항이 저장되지 않았습니다." #: ../../roomops.c:838 ../../sieve.c:417 msgid "Your changes have been saved." msgstr "변경 사항이 저장되었습니다." #: ../../roomops.c:881 #, c-format msgid "User '%s' kicked out of room '%s'." msgstr "" #: ../../roomops.c:898 #, c-format msgid "User '%s' invited to room '%s'." msgstr "" #: ../../roomops.c:927 msgid "Cancelled. No new room was created." msgstr "" #: ../../roomops.c:1187 msgid "Floor has been deleted." msgstr "" #: ../../roomops.c:1211 msgid "New floor has been created." msgstr "" #: ../../roomops.c:1290 msgid "Room list view" msgstr "방 목록 보기" #: ../../roomops.c:1293 msgid "Show empty floors" msgstr "" #: ../../roomviews.c:50 msgid "Bulletin Board" msgstr "" #: ../../roomviews.c:51 msgid "Mail Folder" msgstr "" #: ../../roomviews.c:52 msgid "Address Book" msgstr "" #: ../../roomviews.c:53 ../../static/t/iconbar.html:24 #: ../../static/t/iconbar/edit.html:55 msgid "Calendar" msgstr "" #: ../../roomviews.c:54 msgid "Task List" msgstr "" #: ../../roomviews.c:55 msgid "Notes List" msgstr "" #: ../../roomviews.c:56 msgid "Wiki" msgstr "" #: ../../roomviews.c:57 msgid "Calendar List" msgstr "" #: ../../roomviews.c:58 msgid "Journal" msgstr "" #: ../../roomviews.c:59 msgid "Drafts" msgstr "" #: ../../roomviews.c:60 msgid "Blog" msgstr "" #: ../../tasks.c:93 msgid "Completed?" msgstr "" #: ../../tasks.c:95 msgid "Name of task" msgstr "" #: ../../tasks.c:97 msgid "Date due" msgstr "" #: ../../tasks.c:99 msgid "Category" msgstr "" #: ../../tasks.c:101 msgid "Show All" msgstr "" #: ../../tasks.c:223 msgid "Edit task" msgstr "" #: ../../tasks.c:242 ../../calendar.c:98 ../../calendar_view.c:298 #: ../../calendar_view.c:959 ../../calendar_view.c:1003 #: ../../calendar_view.c:1084 msgid "Summary:" msgstr "" #: ../../tasks.c:253 msgid "Start date:" msgstr "" #: ../../tasks.c:261 ../../tasks.c:291 msgid "No date" msgstr "" #: ../../tasks.c:265 ../../tasks.c:294 msgid "or" msgstr "" #: ../../tasks.c:279 ../../tasks.c:308 msgid "Time associated" msgstr "" #: ../../tasks.c:283 msgid "Due date:" msgstr "" #: ../../tasks.c:312 msgid "Completed:" msgstr "" #: ../../tasks.c:323 msgid "Category:" msgstr "" #: ../../tasks.c:333 ../../calendar.c:159 ../../static/t/files.html:12 msgid "Description:" msgstr "" #: ../../tasks.c:351 ../../event.c:764 msgid "Save" msgstr "" #: ../../tasks.c:352 ../../event.c:765 ../../static/t/aide/inet/section.html:5 #: ../../static/t/view_blog/comment.html:12 #: ../../static/t/view_blog/post.html:15 ../../static/t/view_message.html:32 #: ../../static/t/navbar.html:116 ../../static/t/msg_listview.html:27 msgid "Delete" msgstr "" #: ../../tasks.c:353 ../../vcard_edit.c:1216 ../../paging.c:66 #: ../../event.c:767 ../../sysmsgs.c:69 ../../who.c:200 ../../auth.c:812 #: ../../static/t/edit_message.html:135 ../../static/t/confirmlogoff.html:4 msgid "Cancel" msgstr "" #: ../../tasks.c:423 ../../calendar_view.c:1379 msgid "Untitled Task" msgstr "" #: ../../fmt_date.c:310 msgid "Time format" msgstr "" #: ../../listsub.c:54 ../../static/t/listsub/display.html:5 msgid "List subscription" msgstr "" #: ../../listsub.c:67 ../../static/t/listsub/display.html:9 msgid "List subscribe/unsubscribe" msgstr "" #: ../../listsub.c:87 ../../static/t/listsub/display.html:15 #: ../../static/t/listsub/display.html:34 msgid "Confirmation request sent" msgstr "" #: ../../listsub.c:89 #, c-format msgid "" "You are subscribing %s to the %s mailing list. The " "listserver has sent you an e-mail with one additional Web link for you to " "click on to confirm your subscription. This extra step is for your " "protection, as it prevents others from being able to subscribe you to lists " "without your consent.

    Please click on the link which is being e-" "mailed to you and your subscription will be confirmed.
    \n" msgstr "" #: ../../listsub.c:102 ../../static/t/listsub/display.html:24 msgid "Go back..." msgstr "" #: ../../listsub.c:253 ../../listsub.c:291 ../../listsub.c:327 #: ../../listsub.c:334 msgid "You need to specify the mailinglist to subscribe to." msgstr "" #: ../../listsub.c:260 ../../listsub.c:298 msgid "You need to specify the email address you'd like to subscribe with." msgstr "" #: ../../blogview_renderer.c:58 ../../blogview_renderer.c:74 #, c-format msgid "%d comments" msgstr "" #: ../../blogview_renderer.c:61 ../../blogview_renderer.c:77 msgid "permalink" msgstr "" #: ../../blogview_renderer.c:302 msgid "Newer posts" msgstr "" #: ../../blogview_renderer.c:311 msgid "Older posts" msgstr "" #: ../../useredit.c:629 msgid "" "An error occurred while trying to create or edit this address book entry." msgstr "" #: ../../useredit.c:717 msgid "Changes were not saved." msgstr "" #: ../../useredit.c:782 msgid "A new user has been created." msgstr "" #: ../../useredit.c:786 msgid "" "You are attempting to create a new user from within Citadel while running in " "host based authentication mode. In this mode, you must create new users on " "the host system, not within Citadel." msgstr "" #: ../../bbsview_renderer.c:312 msgid "Go to page: " msgstr "" #: ../../bbsview_renderer.c:354 msgid "First" msgstr "" #: ../../bbsview_renderer.c:360 msgid "Last" msgstr "" #: ../../graphics.c:56 msgid "Graphics upload has been cancelled." msgstr "" #: ../../graphics.c:62 msgid "You didn't upload a file." msgstr "" #: ../../graphics.c:112 msgid "your photo" msgstr "" #: ../../graphics.c:119 msgid "the icon for this room" msgstr "" #: ../../graphics.c:127 msgid "the Greetingpicture for the login prompt" msgstr "" #: ../../graphics.c:135 msgid "the Logoff banner picture" msgstr "" #: ../../graphics.c:146 msgid "the icon for this floor" msgstr "" #: ../../calendar_tools.c:100 msgid "Hour: " msgstr "" #: ../../calendar_tools.c:120 msgid "Minute: " msgstr "" #: ../../calendar_tools.c:191 msgid "(status unknown)" msgstr "" #: ../../calendar_tools.c:207 msgid "(needs action)" msgstr "" #: ../../calendar_tools.c:210 msgid "(accepted)" msgstr "" #: ../../calendar_tools.c:213 msgid "(declined)" msgstr "" #: ../../calendar_tools.c:216 msgid "(tenative)" msgstr "" #: ../../calendar_tools.c:219 msgid "(delegated)" msgstr "" #: ../../calendar_tools.c:222 msgid "(completed)" msgstr "" #: ../../calendar_tools.c:225 msgid "(in process)" msgstr "" #: ../../calendar_tools.c:228 msgid "(none)" msgstr "" #: ../../notes.c:343 msgid "Click on any note to edit it." msgstr "" #: ../../vcard_edit.c:175 ../../vcard_edit.c:178 msgid "(no name)" msgstr "" #: ../../vcard_edit.c:443 msgid " (work)" msgstr "" #: ../../vcard_edit.c:445 msgid " (home)" msgstr "" #: ../../vcard_edit.c:447 msgid " (cell)" msgstr "" #: ../../vcard_edit.c:458 ../../vcard_edit.c:1120 msgid "Address:" msgstr "" #: ../../vcard_edit.c:526 msgid "Telephone:" msgstr "" #: ../../vcard_edit.c:531 msgid "E-mail:" msgstr "" #: ../../vcard_edit.c:779 msgid "This address book is empty." msgstr "" #: ../../vcard_edit.c:793 msgid "An internal error has occurred." msgstr "" #: ../../vcard_edit.c:944 msgid "Error" msgstr "" #: ../../vcard_edit.c:1048 msgid "Edit contact information" msgstr "" #: ../../vcard_edit.c:1068 msgid "Prefix" msgstr "" #: ../../vcard_edit.c:1068 msgid "First Name" msgstr "" #: ../../vcard_edit.c:1068 msgid "Middle Name" msgstr "" #: ../../vcard_edit.c:1068 msgid "Last Name" msgstr "" #: ../../vcard_edit.c:1068 msgid "Suffix" msgstr "" #: ../../vcard_edit.c:1089 msgid "Display name:" msgstr "" #: ../../vcard_edit.c:1096 msgid "Title:" msgstr "" #: ../../vcard_edit.c:1103 msgid "Organization:" msgstr "" #: ../../vcard_edit.c:1114 msgid "PO box:" msgstr "" #: ../../vcard_edit.c:1130 msgid "City:" msgstr "" #: ../../vcard_edit.c:1136 msgid "State:" msgstr "" #: ../../vcard_edit.c:1142 msgid "ZIP code:" msgstr "" #: ../../vcard_edit.c:1148 msgid "Country:" msgstr "" #: ../../vcard_edit.c:1158 msgid "Home telephone:" msgstr "" #: ../../vcard_edit.c:1164 msgid "Work telephone:" msgstr "" #: ../../vcard_edit.c:1170 msgid "Mobile telephone:" msgstr "" #: ../../vcard_edit.c:1176 msgid "Fax number:" msgstr "" #: ../../vcard_edit.c:1187 msgid "Primary Internet e-mail address" msgstr "" #: ../../vcard_edit.c:1194 msgid "Internet e-mail aliases" msgstr "" #: ../../vcard_edit.c:1215 ../../sysmsgs.c:67 msgid "Save changes" msgstr "" #: ../../vcard_edit.c:1261 msgid "Unable to enter the room to save your message" msgstr "" #: ../../vcard_edit.c:1265 msgid "Aborting." msgstr "" #: ../../vcard_edit.c:1297 ../../vcard_edit.c:1341 ../../auth.c:367 #: ../../auth.c:397 msgid "An error has occurred." msgstr "" #: ../../vcard_edit.c:1399 msgid "Could Not decode vcard photo\n" msgstr "" #: ../../preferences.c:880 msgid "Cancelled. No settings were changed." msgstr "" #: ../../preferences.c:1092 msgid "Make this my start page" msgstr "" #: ../../preferences.c:1130 msgid "This isn't allowed to become the start page." msgstr "" #: ../../preferences.c:1132 msgid "You no longer have a start page selected." msgstr "" #: ../../preferences.c:1182 msgid "Prefered startpage" msgstr "" #: ../../calendar.c:76 msgid "Meeting invitation" msgstr "" #: ../../calendar.c:79 msgid "Attendee's reply to your invitation" msgstr "" #: ../../calendar.c:82 msgid "Published event" msgstr "" #: ../../calendar.c:85 msgid "This is an unknown type of calendar item." msgstr "" #: ../../calendar.c:107 ../../calendar_view.c:306 ../../calendar_view.c:964 #: ../../calendar_view.c:1008 ../../calendar_view.c:1089 msgid "Location:" msgstr "" #: ../../calendar.c:132 ../../calendar_view.c:351 ../../calendar_view.c:970 msgid "Date:" msgstr "" #: ../../calendar.c:139 ../../calendar_view.c:373 ../../calendar_view.c:1013 #: ../../calendar_view.c:1099 msgid "Starting date/time:" msgstr "" #: ../../calendar.c:150 ../../calendar_view.c:376 ../../calendar_view.c:1015 #: ../../calendar_view.c:1101 msgid "Ending date/time:" msgstr "" #: ../../calendar.c:168 ../../event.c:90 msgid "Recurrence" msgstr "" #: ../../calendar.c:169 ../../event.c:505 msgid "This is a recurring event" msgstr "" #: ../../calendar.c:178 msgid "Attendee:" msgstr "" #: ../../calendar.c:218 #, c-format msgid "This is an update of '%s' which is already in your calendar." msgstr "" #: ../../calendar.c:222 #, c-format msgid "" "This event would conflict with '%s' which is already in your calendar." msgstr "" #: ../../calendar.c:227 msgid "Update:" msgstr "" #: ../../calendar.c:228 msgid "CONFLICT:" msgstr "" #: ../../calendar.c:251 msgid "How would you like to respond to this invitation?" msgstr "" #: ../../calendar.c:252 msgid "Accept" msgstr "" #: ../../calendar.c:253 msgid "Tentative" msgstr "" #: ../../calendar.c:254 msgid "Decline" msgstr "" #: ../../calendar.c:271 msgid "Click Update to accept this reply and update your calendar." msgstr "" #: ../../calendar.c:272 msgid "Update" msgstr "" #: ../../calendar.c:273 msgid "Ignore" msgstr "" #: ../../calendar.c:295 msgid "There was an error parsing this calendar item." msgstr "" #: ../../calendar.c:328 msgid "" "You have accepted this meeting invitation. It has been entered into your " "calendar." msgstr "" #: ../../calendar.c:332 msgid "" "You have tentatively accepted this meeting invitation. It has been " "'pencilled in' to your calendar." msgstr "" #: ../../calendar.c:336 msgid "" "You have declined this meeting invitation. It has not been entered " "into your calendar." msgstr "" #: ../../calendar.c:341 msgid "A reply has been sent to the meeting organizer." msgstr "" #. / Translators: RSVP aka Répondez s'il-vous-plaît Is the term #. / that the recipient of an ical-invitation should please #. / answer this request. #: ../../calendar.c:376 msgid "Your calendar has been updated to reflect this RSVP." msgstr "" #: ../../calendar.c:378 msgid "" "You have chosen to ignore this RSVP. Your calendar has not been " "updated." msgstr "" #: ../../calendar.c:932 msgid "Calendar day view begins at:" msgstr "" #: ../../calendar.c:933 msgid "Calendar day view ends at:" msgstr "" #: ../../calendar.c:934 msgid "Week starts on:" msgstr "" #: ../../paging.c:35 msgid "Send instant message" msgstr "" #: ../../paging.c:43 msgid "Send an instant message to: " msgstr "" #: ../../paging.c:57 msgid "Enter message text:" msgstr "" #: ../../paging.c:65 ../../static/t/edit_message.html:109 msgid "Send message" msgstr "" #: ../../paging.c:84 msgid "Message was not sent." msgstr "" #: ../../paging.c:95 msgid "Message has been sent to " msgstr "" #: ../../iconbar.c:328 msgid "Iconbar Setting" msgstr "" #. #. * Set to 'unknown' right from the beginning. Unless we learn #. * something else, that's what we'll go with. #. #: ../../availability.c:148 msgid "availability unknown" msgstr "" #: ../../availability.c:169 msgid "free" msgstr "" #: ../../availability.c:179 msgid "BUSY" msgstr "" #: ../../serv_func.c:193 msgid "" "This server is already serving its maximum number of users and cannot accept " "any additional logins at this time. Please try again later or contact your " "system administrator." msgstr "" #: ../../serv_func.c:198 ../../serv_func.c:227 msgid "Received unexpected answer from Citadel server; bailing out." msgstr "" #: ../../serv_func.c:236 #, c-format msgid "" "You are connected to a Citadel server running Citadel %d.%02d. \n" "In order to run this version of WebCit you must also have Citadel %d.%02d or " "newer.\n" "\n" "\n" msgstr "" #: ../../event.c:70 msgid "seconds" msgstr "" #: ../../event.c:71 msgid "minutes" msgstr "" #: ../../event.c:72 msgid "hours" msgstr "" #: ../../event.c:73 msgid "days" msgstr "" #: ../../event.c:74 msgid "weeks" msgstr "" #: ../../event.c:75 msgid "months" msgstr "" #: ../../event.c:76 msgid "years" msgstr "" #: ../../event.c:77 msgid "never" msgstr "" #: ../../event.c:81 msgid "first" msgstr "" #: ../../event.c:82 msgid "second" msgstr "" #: ../../event.c:83 msgid "third" msgstr "" #: ../../event.c:84 msgid "fourth" msgstr "" #: ../../event.c:85 msgid "fifth" msgstr "" #: ../../event.c:88 msgid "Event" msgstr "" #: ../../event.c:89 ../../event.c:437 ../../event.c:449 msgid "Attendees" msgstr "" #: ../../event.c:167 msgid "Add or edit an event" msgstr "" #: ../../event.c:206 ../../static/t/iconbar.html:13 #: ../../static/t/iconbar/edit.html:29 msgid "Summary" msgstr "" #: ../../event.c:217 msgid "Location" msgstr "" #: ../../event.c:228 ../../calendar_view.c:760 msgid "Start" msgstr "" #: ../../event.c:271 ../../calendar_view.c:957 ../../calendar_view.c:986 msgid "All day event" msgstr "" #: ../../event.c:277 ../../calendar_view.c:761 msgid "End" msgstr "" #: ../../event.c:327 ../../static/t/iconbar.html:34 #: ../../static/t/iconbar/edit.html:49 msgid "Notes" msgstr "" #: ../../event.c:369 msgid "Organizer" msgstr "" #: ../../event.c:374 msgid "(you are the organizer)" msgstr "" #: ../../event.c:392 msgid "Show time as:" msgstr "" #: ../../event.c:415 msgid "Free" msgstr "" #: ../../event.c:423 msgid "Busy" msgstr "" #: ../../event.c:440 msgid "(One per line)" msgstr "" #: ../../event.c:450 ../../static/t/edit_message.html:143 #: ../../static/t/iconbar.html:29 ../../static/t/iconbar/edit.html:42 msgid "Contacts" msgstr "" #: ../../event.c:513 msgid "Recurrence rule" msgstr "" #: ../../event.c:517 msgid "Repeats every" msgstr "" #. begin 'weekday_selector' div #: ../../event.c:535 msgid "on these weekdays:" msgstr "" #: ../../event.c:593 #, c-format msgid "on day %s%d%s of the month" msgstr "" #: ../../event.c:602 ../../event.c:664 msgid "on the " msgstr "" #: ../../event.c:626 msgid "of the month" msgstr "" #: ../../event.c:655 msgid "every " msgstr "" #: ../../event.c:656 msgid "year on this date" msgstr "" #: ../../event.c:688 ../../static/t/msg_listselector_bottom.html:7 #: ../../static/t/msg_listselector_top.html:7 msgid "of" msgstr "" #: ../../event.c:712 msgid "Recurrence range" msgstr "" #: ../../event.c:720 msgid "No ending date" msgstr "" #: ../../event.c:727 msgid "Repeat this event" msgstr "" #: ../../event.c:730 msgid "times" msgstr "" #: ../../event.c:738 msgid "Repeat this event until " msgstr "" #: ../../event.c:766 msgid "Check attendee availability" msgstr "" #: ../../event.c:858 ../../calendar_view.c:272 ../../calendar_view.c:468 #: ../../calendar_view.c:937 msgid "Untitled Event" msgstr "" #: ../../sysmsgs.c:52 #, c-format msgid "Edit %s" msgstr "" #: ../../sysmsgs.c:55 #, c-format msgid "" "Enter %s below. Text is formatted to the reader's browser. A newline is " "forced by preceding the next line by a blank." msgstr "" #: ../../sysmsgs.c:89 #, c-format msgid "Cancelled. %s was not saved." msgstr "" #: ../../sysmsgs.c:109 msgid " has been saved." msgstr "" #: ../../sysmsgs.c:116 ../../sysmsgs.c:117 msgid "Room info" msgstr "" #: ../../sysmsgs.c:122 ../../sysmsgs.c:124 msgid "Your bio" msgstr "" #: ../../calendar_view.c:297 ../../calendar_view.c:958 #: ../../calendar_view.c:1002 ../../calendar_view.c:1083 #: ../../static/t/sieve/display_one.html:20 msgid "From" msgstr "" #: ../../calendar_view.c:355 ../../calendar_view.c:974 msgid "Starting date:" msgstr "" #: ../../calendar_view.c:361 ../../calendar_view.c:976 msgid "Ending date:" msgstr "" #: ../../calendar_view.c:369 ../../calendar_view.c:1095 msgid "Date/time:" msgstr "" #: ../../calendar_view.c:386 ../../calendar_view.c:980 #: ../../calendar_view.c:1018 ../../calendar_view.c:1105 #: ../../static/t/room/edit/tab_share.html:32 msgid "Notes:" msgstr "" #: ../../calendar_view.c:585 ../../calendar_view.c:721 msgid "previous" msgstr "" #: ../../calendar_view.c:597 ../../calendar_view.c:733 #: ../../calendar_view.c:1308 msgid "next" msgstr "" #: ../../calendar_view.c:756 msgid "Week" msgstr "" #: ../../calendar_view.c:758 msgid "Hours" msgstr "" #: ../../calendar_view.c:759 ../../static/t/sieve/display_one.html:22 #: ../../static/t/msg_listview.html:9 msgid "Subject" msgstr "" #: ../../calendar_view.c:1001 ../../calendar_view.c:1024 msgid "Ongoing event" msgstr "" #: ../../messages.c:70 msgid "ERROR:" msgstr "" #: ../../messages.c:88 msgid "Empty message" msgstr "" #: ../../messages.c:1010 msgid "Cancelled. Message was not posted." msgstr "" #: ../../messages.c:1013 msgid "Automatically cancelled because you have already saved this message." msgstr "" #: ../../messages.c:1037 msgid "Saved to Drafts failed: " msgstr "" #: ../../messages.c:1102 msgid "Refusing to post empty message.\n" msgstr "" #: ../../messages.c:1128 msgid "Message has been saved to Drafts.\n" msgstr "" #: ../../messages.c:1137 msgid "Message has been sent.\n" msgstr "" #: ../../messages.c:1140 msgid "Message has been posted.\n" msgstr "" #: ../../messages.c:1679 msgid "The message was not moved." msgstr "" #: ../../messages.c:1719 #, c-format msgid "An error occurred while retrieving this part: %s/%s\n" msgstr "" #: ../../messages.c:1796 #, c-format msgid "An error occurred while retrieving this part: %s\n" msgstr "" #: ../../messages.c:1956 msgid "Attach signature to email messages?" msgstr "" #: ../../messages.c:1959 msgid "Use this signature:" msgstr "" #: ../../messages.c:1961 msgid "Default character set for email headers:" msgstr "" #: ../../messages.c:1964 msgid "Preferred email address" msgstr "" #: ../../messages.c:1966 msgid "Preferred display name for email messages" msgstr "" #: ../../messages.c:1970 msgid "Preferred display name for bulletin board posts" msgstr "" #: ../../messages.c:1973 msgid "Mailbox view mode" msgstr "" #: ../../inetconf.c:110 ../../inetconf.c:119 ../../inetconf.c:133 #: ../../inetconf.c:159 ../../netconf.c:156 ../../netconf.c:183 #: ../../netconf.c:191 ../../netconf.c:239 ../../netconf.c:247 msgid "Invalid Parameter" msgstr "" #: ../../inetconf.c:126 msgid " has been deleted." msgstr "" #. added status message #: ../../inetconf.c:144 msgid " added." msgstr "" #: ../../who.c:154 msgid "Edit your session display" msgstr "" #: ../../who.c:158 msgid "" "This screen allows you to change the way your session appears in the 'Who is " "online' listing. To turn off any 'fake' name you've previously set, simply " "click the appropriate 'change' button without typing anything in the " "corresponding box. " msgstr "" #: ../../who.c:171 msgid "Room name:" msgstr "" #: ../../who.c:176 msgid "Change room name" msgstr "" #: ../../who.c:180 msgid "Host name:" msgstr "" #: ../../who.c:185 msgid "Change host name" msgstr "" #: ../../who.c:190 ../../static/t/aide/edituser/detailview.html:20 #: ../../static/t/openid_manual_create.html:9 #: ../../static/t/get_logged_in.html:57 ../../static/t/get_logged_in.html:72 msgid "User name:" msgstr "" #: ../../who.c:195 msgid "Change user name" msgstr "" #: ../../siteconfig.c:46 ../../siteconfig.c:64 ../../roomlist.c:44 #: ../../roomlist.c:394 ../../static/t/room/edit/tab_expire.html:72 #: ../../static/t/room/edit/tab_config.html:149 #: ../../static/t/room/edit/tab_access.html:42 msgid "Higher access is required to access this function." msgstr "" #: ../../siteconfig.c:256 msgid "" "WARNING: Failed to parse Server Config; do you run a to new citserver?" msgstr "" #: ../../siteconfig.c:319 msgid "Your system configuration has been updated." msgstr "" #: ../../wiki.c:69 ../../wiki.c:162 ../../wiki.c:282 #, c-format msgid "There is no room called '%s'." msgstr "" #: ../../wiki.c:76 #, c-format msgid "'%s' is not a Wiki room." msgstr "" #: ../../wiki.c:110 #, c-format msgid "There is no page called '%s' here." msgstr "" #: ../../wiki.c:112 msgid "" "Select the 'Edit this page' link in the room banner if you would like to " "create this page." msgstr "" #: ../../wiki.c:181 ../../static/t/msg_listview.html:11 msgid "Date" msgstr "" #: ../../wiki.c:182 msgid "Author" msgstr "" #: ../../wiki.c:209 ../../wiki.c:218 msgid "(show)" msgstr "" #: ../../wiki.c:211 ../../static/t/navbar.html:145 msgid "Current version" msgstr "" #: ../../wiki.c:223 msgid "(revert)" msgstr "" #: ../../wiki.c:300 msgid "Page title" msgstr "" #: ../../webcit.c:316 msgid "Authorization Required" msgstr "" #: ../../webcit.c:324 #, c-format msgid "" "The resource you requested requires a valid username and password. You could " "not be logged in: %s\n" msgstr "" #: ../../webcit.c:647 ../../auth.c:526 msgid "" "This program was unable to connect or stay connected to the Citadel server. " "Please report this problem to your system administrator." msgstr "" #: ../../webcit.c:654 ../../auth.c:532 msgid "Read More..." msgstr "" #: ../../smtpqueue.c:134 ../../static/t/aide/ignetconf/section.html:5 #: ../../static/t/view_mailq/message.html:2 msgid "(Delete)" msgstr "" #: ../../smtpqueue.c:334 msgid "First Attempt pending" msgstr "" #: ../../roomlist.c:99 msgid "My Folders" msgstr "" #: ../../downloads.c:289 #, c-format msgid "An error occurred while retrieving this file: %s\n" msgstr "" #: ../../roomtokens.c:572 msgid "file" msgstr "" #: ../../roomtokens.c:574 msgid "files" msgstr "" #: ../../summary.c:128 msgid "(None)" msgstr "" #: ../../summary.c:184 msgid "(Nothing)" msgstr "" #: ../../msg_renderers.c:579 ../../static/t/who/bio.html:15 msgid "edit" msgstr "" #: ../../msg_renderers.c:1119 msgid "I don't know how to display " msgstr "" #: ../../msg_renderers.c:1353 msgid "(no subject)" msgstr "" #: ../../addressbook_popup.c:186 msgid "Add" msgstr "" #. an erased user #: ../../auth.c:30 ../../static/t/aide/edituser/detailview.html:43 #: ../../static/t/aide/siteconfig/tab_access.html:40 #: ../../static/t/aide/siteconfig/tab_access.html:51 msgid "Deleted" msgstr "" #. a new user #: ../../auth.c:33 ../../static/t/aide/edituser/detailview.html:44 #: ../../static/t/aide/siteconfig/tab_access.html:41 #: ../../static/t/aide/siteconfig/tab_access.html:52 #: ../../static/t/get_logged_in.html:79 msgid "New User" msgstr "" #. a trouble maker #: ../../auth.c:36 ../../static/t/aide/edituser/detailview.html:45 #: ../../static/t/aide/siteconfig/tab_access.html:42 #: ../../static/t/aide/siteconfig/tab_access.html:53 msgid "Problem User" msgstr "" #. user with normal privileges #: ../../auth.c:39 ../../static/t/aide/edituser/detailview.html:46 #: ../../static/t/aide/siteconfig/tab_access.html:43 #: ../../static/t/aide/siteconfig/tab_access.html:54 msgid "Local User" msgstr "" #. a user that may access network resources #: ../../auth.c:42 ../../static/t/aide/edituser/detailview.html:47 #: ../../static/t/aide/siteconfig/tab_access.html:44 #: ../../static/t/aide/siteconfig/tab_access.html:55 msgid "Network User" msgstr "" #. a moderator #: ../../auth.c:45 ../../static/t/aide/edituser/detailview.html:48 #: ../../static/t/aide/siteconfig/tab_access.html:45 #: ../../static/t/aide/siteconfig/tab_access.html:56 msgid "Preferred User" msgstr "" #. chief #: ../../auth.c:48 ../../static/t/aide/edituser/detailview.html:49 #: ../../static/t/aide/siteconfig/tab_access.html:46 #: ../../static/t/aide/siteconfig/tab_access.html:57 msgid "Admin" msgstr "" #: ../../auth.c:513 ../../static/t/iconbar.html:80 #: ../../static/t/confirmlogoff.html:3 #: ../../static/t/menu/basic_commands.html:19 msgid "Log off" msgstr "" #: ../../auth.c:537 msgid "Log in again" msgstr "" #: ../../auth.c:585 ../../static/t/aide/usermanagement.html:3 msgid "Validate new users" msgstr "" #: ../../auth.c:605 msgid "No users require validation at this time." msgstr "" #: ../../auth.c:655 msgid "very weak" msgstr "" #: ../../auth.c:658 msgid "weak" msgstr "" #: ../../auth.c:661 msgid "ok" msgstr "" #: ../../auth.c:665 msgid "strong" msgstr "" #: ../../auth.c:683 #, c-format msgid "Current access level: %d (%s)\n" msgstr "" #: ../../auth.c:691 msgid "Select access level for this user:" msgstr "" #: ../../auth.c:776 ../../static/t/menu/your_info.html:4 msgid "Change your password" msgstr "" #: ../../auth.c:800 msgid "Enter new password:" msgstr "" #: ../../auth.c:804 msgid "Enter it again to confirm:" msgstr "" #: ../../auth.c:810 msgid "Change password" msgstr "" #: ../../auth.c:830 msgid "Cancelled. Password was not changed." msgstr "" #: ../../auth.c:839 msgid "They don't match. Password was not changed." msgstr "" #: ../../auth.c:845 msgid "Blank passwords are not allowed." msgstr "" #: ../../openid.c:34 msgid "Manage Account/OpenID Associations" msgstr "" #: ../../openid.c:52 msgid "Do you really want to delete this OpenID?" msgstr "" #: ../../openid.c:53 msgid "(delete)" msgstr "" #: ../../openid.c:61 msgid "Add an OpenID: " msgstr "" #: ../../openid.c:64 msgid "Attach" msgstr "" #: ../../openid.c:68 #, c-format msgid "%s does not permit authentication via OpenID." msgstr "" #: ../../html2html.c:136 #, c-format msgid "realloc() error! couldn't get %d bytes: %s" msgstr "" #: ../../static/t/viewomatic.html:4 msgid "View as:" msgstr "" #: ../../static/t/sieve/list.html:32 ../../static/t/sieve/none.html:4 #: ../../static/t/menu/your_info.html:7 msgid "View/edit server-side mail filters" msgstr "" #: ../../static/t/sieve/list.html:41 msgid "When new mail arrives: " msgstr "" #: ../../static/t/sieve/list.html:43 msgid "Leave it in my inbox without filtering" msgstr "" #: ../../static/t/sieve/list.html:44 msgid "Filter it according to rules selected below" msgstr "" #: ../../static/t/sieve/list.html:45 msgid "Filter it through a manually edited script (advanced users only)" msgstr "" #: ../../static/t/sieve/list.html:52 msgid "Your incoming mail will not be filtered through any scripts." msgstr "" #: ../../static/t/sieve/list.html:64 msgid "Add rule" msgstr "" #: ../../static/t/sieve/list.html:71 msgid "The currently active script is: " msgstr "" #: ../../static/t/sieve/list.html:76 ../../static/t/sieve/add.html:3 msgid "Add or delete scripts" msgstr "" #: ../../static/t/sieve/display_one.html:16 msgid "If" msgstr "" #: ../../static/t/sieve/display_one.html:21 msgid "To or Cc" msgstr "" #: ../../static/t/sieve/display_one.html:23 msgid "Reply-to" msgstr "" #: ../../static/t/sieve/display_one.html:24 #: ../../static/t/msg_listview.html:10 #: ../../static/t/view_mailq/header.html:27 msgid "Sender" msgstr "" #: ../../static/t/sieve/display_one.html:25 msgid "Resent-From" msgstr "" #: ../../static/t/sieve/display_one.html:26 msgid "Resent-To" msgstr "" #: ../../static/t/sieve/display_one.html:27 msgid "Envelope From" msgstr "" #: ../../static/t/sieve/display_one.html:28 msgid "Envelope To" msgstr "" #: ../../static/t/sieve/display_one.html:29 msgid "X-Mailer" msgstr "" #: ../../static/t/sieve/display_one.html:30 msgid "X-Spam-Flag" msgstr "" #: ../../static/t/sieve/display_one.html:31 msgid "X-Spam-Status" msgstr "" #: ../../static/t/sieve/display_one.html:32 msgid "List-ID" msgstr "" #: ../../static/t/sieve/display_one.html:33 msgid "Message size" msgstr "" #: ../../static/t/sieve/display_one.html:34 #: ../../static/t/select_messageindex_all.html:1 msgid "All" msgstr "" #: ../../static/t/sieve/display_one.html:41 msgid "contains" msgstr "" #: ../../static/t/sieve/display_one.html:42 msgid "does not contain" msgstr "" #: ../../static/t/sieve/display_one.html:43 msgid "is" msgstr "" #: ../../static/t/sieve/display_one.html:44 msgid "is not" msgstr "" #: ../../static/t/sieve/display_one.html:45 msgid "matches" msgstr "" #: ../../static/t/sieve/display_one.html:46 msgid "does not match" msgstr "" #: ../../static/t/sieve/display_one.html:52 msgid "(All messages)" msgstr "" #: ../../static/t/sieve/display_one.html:56 msgid "is larger than" msgstr "" #: ../../static/t/sieve/display_one.html:57 msgid "is smaller than" msgstr "" #: ../../static/t/sieve/display_one.html:59 msgid "bytes" msgstr "" #: ../../static/t/sieve/display_one.html:65 msgid "Keep" msgstr "" #: ../../static/t/sieve/display_one.html:66 msgid "Discard silently" msgstr "" #: ../../static/t/sieve/display_one.html:67 msgid "Reject" msgstr "" #: ../../static/t/sieve/display_one.html:68 msgid "Move message to" msgstr "" #: ../../static/t/sieve/display_one.html:69 msgid "Forward to" msgstr "" #: ../../static/t/sieve/display_one.html:70 msgid "Vacation" msgstr "" #: ../../static/t/sieve/display_one.html:82 msgid "Message:" msgstr "" #: ../../static/t/sieve/display_one.html:90 msgid "and then" msgstr "" #: ../../static/t/sieve/display_one.html:93 msgid "continue processing" msgstr "" #: ../../static/t/sieve/display_one.html:94 msgid "stop" msgstr "" #: ../../static/t/sieve/none.html:9 msgid "" "This installation of Citadel was built without support for server-side mail " "filtering.
    Please contact your system administrator if you require this " "feature.
    " msgstr "" #: ../../static/t/sieve/add.html:9 msgid "Add a new script" msgstr "" #: ../../static/t/sieve/add.html:10 msgid "" "To create a new script, enter the desired script name in the box below and " "click 'Create'." msgstr "" #: ../../static/t/sieve/add.html:14 msgid "Script name: " msgstr "" #: ../../static/t/sieve/add.html:18 msgid "Edit scripts" msgstr "" #: ../../static/t/sieve/add.html:20 msgid "Return to the script editing screen" msgstr "" #: ../../static/t/sieve/add.html:23 msgid "Delete scripts" msgstr "" #: ../../static/t/sieve/add.html:24 msgid "" "To delete an existing script, select the script name from the list and click " "'Delete'." msgstr "" #: ../../static/t/msg/confirm_move.html:4 msgid "Confirm move of message" msgstr "" #: ../../static/t/msg/confirm_move.html:12 msgid "Move this message to:" msgstr "" #: ../../static/t/login.html:5 msgid "powered by" msgstr "" #: ../../static/t/login.html:15 ../../static/t/iconbar.html:88 #: ../../static/t/get_logged_in.html:64 ../../static/t/get_logged_in.html:88 #: ../../static/t/get_logged_in.html:93 ../../static/t/get_logged_in.html:98 #: ../../static/t/get_logged_in.html:107 msgid "Log in" msgstr "" #: ../../static/t/trailing.html:14 msgid "" "WARNING: You have JavaScript disabled in your web browser. Many functions " "of this system will not work properly." msgstr "" #: ../../static/t/view_submessage.html:4 #: ../../static/t/view_message/replyquote.html:3 #: ../../static/t/view_message/replyquote.html:7 #: ../../static/t/view_message/print.html:8 ../../static/t/view_message.html:7 msgid "from " msgstr "" #: ../../static/t/searchomatic.html:4 msgid "Search: " msgstr "" #: ../../static/t/listsub/display.html:16 msgid "You are subscribing " msgstr "" #: ../../static/t/listsub/display.html:17 msgid " to the " msgstr "" #: ../../static/t/listsub/display.html:18 msgid " mailing list." msgstr "" #: ../../static/t/listsub/display.html:19 msgid "" "The listserver has sent you an e-mail with one additional Web link for you " "to click on to confirm your subscription." msgstr "" #: ../../static/t/listsub/display.html:20 msgid "" "This extra step is for your protection, as it prevents others from being " "able to subscribe you to lists without your consent." msgstr "" #: ../../static/t/listsub/display.html:22 msgid "" "Please click on the link which is being e-mailed to you and your " "subscription will be confirmed." msgstr "" #: ../../static/t/listsub/display.html:27 #: ../../static/t/listsub/display.html:47 msgid "ERROR" msgstr "" #: ../../static/t/listsub/display.html:35 msgid "You are unsubscribing" msgstr "" #: ../../static/t/listsub/display.html:37 msgid "from the" msgstr "" #: ../../static/t/listsub/display.html:39 msgid "mailing list." msgstr "" #: ../../static/t/listsub/display.html:40 msgid "" "The listserver has sent you an e-mail with one additional Web link for you " "to click on to confirm your unsubscription." msgstr "" #: ../../static/t/listsub/display.html:41 msgid "" "This extra step is for your protection, as it prevents others from being " "able to unsubscribe you from lists without your consent." msgstr "" #: ../../static/t/listsub/display.html:43 msgid "" "Please click on the link which is being e-mailed to you and your " "unsubscription will be confirmed." msgstr "" #: ../../static/t/listsub/display.html:44 msgid "Back..." msgstr "" #: ../../static/t/listsub/display.html:54 msgid "Confirmation successful!" msgstr "" #: ../../static/t/listsub/display.html:56 msgid "Confirmation failed." msgstr "" #: ../../static/t/listsub/display.html:57 msgid "This could mean one of two things:" msgstr "" #: ../../static/t/listsub/display.html:59 msgid "" "You waited too long to confirm your subscribe/unsubscribe request (the " "confirmation link is only valid for three days)" msgstr "" #: ../../static/t/listsub/display.html:60 msgid "" "You have already successfully confirmed your subscribe/unsubscribe " "request and are attempting to do it again." msgstr "" #: ../../static/t/listsub/display.html:62 msgid "The error returned by the server was: " msgstr "" #: ../../static/t/listsub/display.html:70 msgid "Name of list:" msgstr "" #: ../../static/t/listsub/display.html:75 msgid "Your e-mail address:" msgstr "" #: ../../static/t/listsub/display.html:79 msgid "(If subscribing) preferred format: " msgstr "" #: ../../static/t/listsub/display.html:80 msgid "One message at a time" msgstr "" #: ../../static/t/listsub/display.html:81 msgid "Digest format" msgstr "" #: ../../static/t/listsub/display.html:89 msgid "" "When you attempt to subscribe or unsubscribe to a mailing list, you will " "receive an e-mail containing one additional web link to click on for final " "confirmation." msgstr "" #: ../../static/t/listsub/display.html:90 msgid "" "This extra step is for your protection, as it prevents others from being " "able to subscribe or unsubscribe you to lists." msgstr "" #: ../../static/t/floors_edit_one.html:11 msgid "(delete floor)" msgstr "" #: ../../static/t/floors_edit_one.html:13 msgid "(edit graphic)" msgstr "" #: ../../static/t/floors.html:4 msgid "Add/change/delete floors" msgstr "" #: ../../static/t/floors.html:10 msgid "Floor number" msgstr "" #: ../../static/t/floors.html:11 msgid "Floor name" msgstr "" #: ../../static/t/floors.html:12 msgid "Number of rooms" msgstr "" #: ../../static/t/floors.html:13 msgid "Floor CSS" msgstr "" #: ../../static/t/files.html:4 msgid "Files available for download in" msgstr "" #: ../../static/t/files.html:9 msgid "Upload a file:" msgstr "" #: ../../static/t/files.html:30 msgid "Filename" msgstr "" #: ../../static/t/files.html:31 msgid "Size" msgstr "" #: ../../static/t/files.html:32 msgid "Content" msgstr "" #: ../../static/t/files.html:33 msgid "Description" msgstr "" #: ../../static/t/edit_message.html:9 ../../static/t/iconbar.html:50 #: ../../static/t/iconbar.html:59 msgid "Loading" msgstr "" #: ../../static/t/edit_message.html:23 msgid "from" msgstr "" #: ../../static/t/edit_message.html:29 ../../static/t/edit_message.html:38 msgid "Anonymous" msgstr "" #: ../../static/t/edit_message.html:47 msgid "in" msgstr "" #: ../../static/t/edit_message.html:51 msgid "To:" msgstr "" #: ../../static/t/edit_message.html:57 #: ../../static/t/view_message/print.html:15 #: ../../static/t/view_message.html:15 msgid "CC:" msgstr "" #: ../../static/t/edit_message.html:63 msgid "BCC:" msgstr "" #: ../../static/t/edit_message.html:71 msgid "Subject (optional):" msgstr "" #: ../../static/t/edit_message.html:71 #: ../../static/t/view_message/replyquote.html:8 #: ../../static/t/view_message/print.html:16 #: ../../static/t/view_message.html:16 msgid "Subject:" msgstr "" #: ../../static/t/edit_message.html:86 msgid "--- forwarded message ---" msgstr "" #: ../../static/t/edit_message.html:110 msgid "Post message" msgstr "" #: ../../static/t/edit_message.html:118 msgid "Save to Drafts" msgstr "" #: ../../static/t/edit_message.html:126 #: ../../static/t/edit_message/attachments_pane.html:5 msgid "Attachments:" msgstr "" #: ../../static/t/aide/display_serverrestart_page.html:4 msgid "Message to your Users:" msgstr "" #: ../../static/t/aide/display_generic_result.html:2 msgid "Server command results" msgstr "" #: ../../static/t/aide/display_generic_result.html:18 msgid "Enter another command" msgstr "" #: ../../static/t/aide/display_generic_result.html:19 msgid "Return to menu" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:3 msgid "Site configuration" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:6 #: ../../static/t/aide/edituser/select.html:9 msgid "You need to be aide to view this." msgstr "" #: ../../static/t/aide/display_sitewide_config.html:11 msgid "General" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:12 msgid "Access" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:13 msgid "Network" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:14 msgid "Tuning" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:15 msgid "Directory" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:16 msgid "Auto-purger" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:17 msgid "Indexing/Journaling" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:18 #: ../../static/t/aide/siteconfig/tab_pushmail.html:1 msgid "Push Email" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:19 msgid "Pop3" msgstr "" #: ../../static/t/aide/usermanagement.html:2 msgid "Add, change, delete user accounts" msgstr "" #: ../../static/t/aide/display_inetconf.html:5 #: ../../static/t/aide/display_menu.html:5 msgid "System Administration Menu" msgstr "" #: ../../static/t/aide/display_inetconf.html:6 #: ../../static/t/aide/display_menu.html:6 msgid "Room Admin Menu" msgstr "" #: ../../static/t/aide/display_inetconf.html:13 msgid "Local host aliases" msgstr "" #: ../../static/t/aide/display_inetconf.html:14 msgid "Directory domains" msgstr "" #: ../../static/t/aide/display_inetconf.html:15 msgid "Smart hosts" msgstr "" #: ../../static/t/aide/display_inetconf.html:16 msgid "Fallback smart hosts" msgstr "" #: ../../static/t/aide/display_inetconf.html:17 msgid "Notification hosts" msgstr "" #: ../../static/t/aide/display_inetconf.html:22 msgid "RBL hosts" msgstr "" #: ../../static/t/aide/display_inetconf.html:23 msgid "SpamAssassin hosts" msgstr "" #: ../../static/t/aide/display_inetconf.html:24 msgid "ClamAV clamd hosts" msgstr "" #: ../../static/t/aide/display_inetconf.html:25 msgid "Masqueradable domains" msgstr "" #: ../../static/t/aide/edituser/select.html:5 msgid "Edit or delete users" msgstr "" #: ../../static/t/aide/edituser/select.html:17 msgid "Add users" msgstr "" #: ../../static/t/aide/edituser/select.html:20 msgid "Edit or Delete users" msgstr "" #: ../../static/t/aide/edituser/box_select.html:1 msgid "" "To edit an existing user account, select the user name from the list and " "click 'Edit'." msgstr "" #: ../../static/t/aide/edituser/detailview.html:4 msgid "Edit user account: " msgstr "" #: ../../static/t/aide/edituser/detailview.html:24 #: ../../static/t/room/edit/tab_feed.html:14 msgid "Password" msgstr "" #: ../../static/t/aide/edituser/detailview.html:28 msgid "Permission to send Internet mail" msgstr "" #: ../../static/t/aide/edituser/detailview.html:32 msgid "Number of logins" msgstr "" #: ../../static/t/aide/edituser/detailview.html:36 msgid "Messages submitted" msgstr "" #: ../../static/t/aide/edituser/detailview.html:40 msgid "Access level" msgstr "" #: ../../static/t/aide/edituser/detailview.html:54 msgid "User ID number" msgstr "" #: ../../static/t/aide/edituser/detailview.html:58 msgid "Date and time of last login" msgstr "" #: ../../static/t/aide/edituser/detailview.html:68 msgid "Auto-purge after this many days" msgstr "" #: ../../static/t/aide/edituser/add.html:1 msgid "" "To create a new user account, enter the desired user name in the box below " "and click 'Create'." msgstr "" #: ../../static/t/aide/edituser/add.html:5 msgid "New user: " msgstr "" #: ../../static/t/aide/display_generic_cmd.html:4 msgid "Enter a server command" msgstr "" #: ../../static/t/aide/display_generic_cmd.html:12 msgid "" "This screen allows you to enter Citadel server commands which are not " "supported by WebCit. If you do not know what that means, then this screen " "will not be of much use to you." msgstr "" #: ../../static/t/aide/display_generic_cmd.html:15 msgid "Enter command:" msgstr "" #: ../../static/t/aide/display_generic_cmd.html:17 msgid "Command input (if requesting SEND_LISTING transfer mode):" msgstr "" #: ../../static/t/aide/display_generic_cmd.html:20 msgid "Detected host header is " msgstr "" #: ../../static/t/aide/display_ignetconf.html:4 msgid "Network configuration" msgstr "" #: ../../static/t/aide/display_ignetconf.html:10 #: ../../static/t/aide/ignetconf/edit_node.html:5 #: ../../static/t/aide/ignetconf/add.html:5 msgid "Add a new node" msgstr "" #: ../../static/t/aide/display_ignetconf.html:14 msgid "Currently configured nodes" msgstr "" #: ../../static/t/aide/display_serverrestart.html:26 msgid "Restart Citadel" msgstr "" #: ../../static/t/aide/floorconfig.html:2 msgid "Add, change, or delete floors" msgstr "" #: ../../static/t/aide/serverrestart/box.html:3 msgid "Please wait while the Citadel server is restarted... " msgstr "" #: ../../static/t/aide/serverrestart/box_page_do.html:3 msgid "" "Please wait while your users are being paged, the citadel server will be " "restarted after that... " msgstr "" #: ../../static/t/aide/inet/masqdomains.html:2 msgid "(Domains as which users are allowed to masquerade)" msgstr "" #: ../../static/t/aide/inet/rbldns.html:2 msgid "(hosts running a Realtime Blackhole List)" msgstr "" #: ../../static/t/aide/inet/dirnames.html:2 msgid "(domains mapped with the Global Address Book)" msgstr "" #: ../../static/t/aide/inet/notify.html:2 msgid "(URLS for notifications when users receive new mails; )" msgstr "" #: ../../static/t/aide/inet/notify.html:2 msgid "" "Syntax: Notificationtemplatename:http[s]://user:password@hostname/path" msgstr "" #: ../../static/t/aide/inet/smarthosts.html:2 msgid "(if present, forward all outbound mail to one of these hosts)" msgstr "" #: ../../static/t/aide/inet/aliases.html:2 msgid "(domains for which this host receives mail)" msgstr "" #: ../../static/t/aide/inet/clamav.html:2 msgid "(hosts running the ClamAV clamd service)" msgstr "" #: ../../static/t/aide/inet/spamass.html:2 msgid "(hosts running the SpamAssassin service)" msgstr "" #: ../../static/t/aide/inet/fallbackhosts.html:2 msgid "(send outbound mail to these hosts only when direct delivery fails)" msgstr "" #: ../../static/t/aide/ignetconf/display_confirm_delete.html:5 msgid "Confirm delete" msgstr "" #: ../../static/t/aide/ignetconf/display_confirm_delete.html:11 msgid "Are you sure you want to delete " msgstr "" #: ../../static/t/aide/ignetconf/display_confirm_delete.html:14 #: ../../static/t/prefs/box.html:198 ../../static/t/iconbar/edit.html:19 #: ../../static/t/iconbar/edit.html:26 ../../static/t/iconbar/edit.html:32 #: ../../static/t/iconbar/edit.html:39 ../../static/t/iconbar/edit.html:45 #: ../../static/t/iconbar/edit.html:52 ../../static/t/iconbar/edit.html:58 #: ../../static/t/iconbar/edit.html:64 ../../static/t/iconbar/edit.html:70 #: ../../static/t/iconbar/edit.html:76 ../../static/t/iconbar/edit.html:82 #: ../../static/t/iconbar/edit.html:88 msgid "Yes" msgstr "" #: ../../static/t/aide/ignetconf/display_confirm_delete.html:16 #: ../../static/t/prefs/box.html:200 ../../static/t/iconbar/edit.html:20 #: ../../static/t/iconbar/edit.html:27 ../../static/t/iconbar/edit.html:33 #: ../../static/t/iconbar/edit.html:40 ../../static/t/iconbar/edit.html:46 #: ../../static/t/iconbar/edit.html:53 ../../static/t/iconbar/edit.html:59 #: ../../static/t/iconbar/edit.html:65 ../../static/t/iconbar/edit.html:71 #: ../../static/t/iconbar/edit.html:77 ../../static/t/iconbar/edit.html:83 #: ../../static/t/iconbar/edit.html:89 msgid "No" msgstr "" #: ../../static/t/aide/ignetconf/edit_node.html:15 #: ../../static/t/aide/ignetconf/add.html:15 #: ../../static/t/aide/siteconfig/tab_general.html:8 msgid "Node name" msgstr "" #: ../../static/t/aide/ignetconf/edit_node.html:17 #: ../../static/t/aide/ignetconf/add.html:17 msgid "Shared secret" msgstr "" #: ../../static/t/aide/ignetconf/edit_node.html:19 #: ../../static/t/aide/ignetconf/add.html:19 msgid "Host or IP address" msgstr "" #: ../../static/t/aide/ignetconf/edit_node.html:21 #: ../../static/t/aide/ignetconf/add.html:21 msgid "Port number" msgstr "" #: ../../static/t/aide/ignetconf/section.html:4 msgid "(Edit)" msgstr "" #: ../../static/t/aide/display_menu.html:12 msgid "Global Configuration" msgstr "" #: ../../static/t/aide/display_menu.html:14 msgid "User account management" msgstr "" #: ../../static/t/aide/display_menu.html:16 msgid "Shutdown Citadel" msgstr "" #: ../../static/t/aide/display_menu.html:18 msgid "Rooms and Floors" msgstr "" #: ../../static/t/aide/global_config.html:2 msgid "Edit site-wide configuration" msgstr "" #: ../../static/t/aide/global_config.html:3 msgid "Domain names and Internet mail configuration" msgstr "" #: ../../static/t/aide/global_config.html:4 msgid "Configure replication with other Citadel servers" msgstr "" #: ../../static/t/aide/global_config.html:5 #: ../../static/t/view_mailq/header.html:3 msgid "View the outbound SMTP queue" msgstr "" #: ../../static/t/aide/restart.html:2 msgid "Restart Now" msgstr "" #: ../../static/t/aide/restart.html:3 msgid "Restart after paging users" msgstr "" #: ../../static/t/aide/restart.html:4 msgid "Restart when all users are idle" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:1 msgid "General site configuration items" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:5 msgid "Change Login Logo" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:6 msgid "Change Logout Logo" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:11 msgid "Fully qualified domain name" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:14 msgid "Human-readable node name" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:17 msgid "Telephone number" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:20 msgid "Paginator prompt (for text mode clients)" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:23 msgid "Geographic location of this system" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:26 msgid "Name of system administrator" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:29 msgid "Default timezone for unzoned calendar items" msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:1 msgid "Configure automatic expiry of old messages" msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:2 msgid "These settings may be overridden on a per-floor or per-room basis." msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:6 msgid "Hour to run database auto-purge" msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:66 msgid "Default message expire policy for public rooms" msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:68 #: ../../static/t/aide/siteconfig/tab_autopurger.html:86 #: ../../static/t/room/edit/tab_expire.html:17 #: ../../static/t/room/edit/tab_expire.html:45 msgid "Never automatically expire messages" msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:71 #: ../../static/t/aide/siteconfig/tab_autopurger.html:89 #: ../../static/t/room/edit/tab_expire.html:20 #: ../../static/t/room/edit/tab_expire.html:48 msgid "Expire by message count" msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:73 #: ../../static/t/aide/siteconfig/tab_autopurger.html:92 #: ../../static/t/room/edit/tab_expire.html:23 #: ../../static/t/room/edit/tab_expire.html:51 msgid "Expire by message age" msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:75 #: ../../static/t/aide/siteconfig/tab_autopurger.html:94 #: ../../static/t/room/edit/tab_expire.html:25 #: ../../static/t/room/edit/tab_expire.html:53 msgid "Number of messages or days: " msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:81 msgid "Default message expire policy for private mailboxes" msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:83 msgid "Same policy as public rooms" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:1 msgid "Network services" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:2 #: ../../static/t/aide/siteconfig/tab_directory.html:3 msgid "" "Changes made on this screen will not take effect until you restart the " "Citadel server." msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:6 msgid "SMTP MTA port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:9 msgid "Correct forged From: lines during authenticated SMTP" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:12 msgid "Flag message as spam, instead of rejecting it" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:15 msgid "IMAP listener port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:19 msgid "Network run frequency (in seconds)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:22 msgid "Server IP address (0.0.0.0 for 'any')" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:25 msgid "SMTP MSA port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:28 msgid "IMAP over SSL port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:31 msgid "SMTP over SSL port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:34 msgid "Instantly expunge deleted messages in IMAP" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:38 msgid "Allow unauthenticated SMTP clients to spoof this sites domains" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:41 msgid "Postfix TCP Dictionary Port" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:41 msgid "-1 to disable" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:44 msgid "ManageSieve Port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:47 msgid "Perform RBL checks upon connect instead of after RCPT" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:50 msgid "Keep original from headers in IMAP" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:53 msgid "XMPP (Jabber) client to server port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:56 msgid "XMPP (Jabber) server to server port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_pop3.html:1 msgid "POP3" msgstr "" #: ../../static/t/aide/siteconfig/tab_pop3.html:6 msgid "POP3 listener port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_pop3.html:9 msgid "POP3 over SSL port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_pop3.html:12 msgid "POP3 fetch frequency in seconds" msgstr "" #: ../../static/t/aide/siteconfig/tab_pop3.html:15 msgid "POP3 fastest fetch frequency in seconds" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:1 msgid "Advanced server fine-tuning controls" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:5 msgid "Server connection idle timeout (in seconds)" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:8 msgid "Maximum concurrent sessions (0 = no limit)" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:11 msgid "Default user purge time (days)" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:14 msgid "Default room purge time (days)" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:17 msgid "Maximum message length" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:20 msgid "Minimum number of worker threads" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:23 msgid "Maximum number of worker threads" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:26 msgid "Automatically delete committed database logs" msgstr "" #: ../../static/t/aide/siteconfig/tab_pushmail.html:5 msgid "Funambol server host (blank to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_pushmail.html:8 msgid "Funambol server port " msgstr "" #: ../../static/t/aide/siteconfig/tab_pushmail.html:11 msgid "Funambol sync source" msgstr "" #: ../../static/t/aide/siteconfig/tab_pushmail.html:14 msgid "Funambol auth details (user:pass)" msgstr "" #: ../../static/t/aide/siteconfig/tab_pushmail.html:17 msgid "External pager tool (blank to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:1 msgid "Access controls and site policy settings" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:5 msgid "Allow aides to zap (forget) rooms" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:9 msgid "Quarantine messages from problem users" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:12 msgid "Name of quarantine room" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:17 msgid "Name of room to log pages" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:22 msgid "Authentication mode" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:24 msgid "Self contained" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:25 msgid "Host based" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:26 msgid "LDAP (RFC2307)" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:27 msgid "LDAP (Active Directory)" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:30 msgid "Master user name (blank to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:33 msgid "Master user password" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:38 msgid "Initial access level for new users" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:49 msgid "Access level required to create rooms" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:60 msgid "" "Automatically grant room-aide status to users who create private rooms" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:63 msgid "Automatically grant room-aide status to users who create BLOG rooms" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:66 msgid "Restrict access to Internet mail" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:71 msgid "Disable self-service user account creation" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:71 msgid "Hint: do not select both!" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:74 msgid "Require registration for new users" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:77 msgid "Allow anonymous guest access" msgstr "" #: ../../static/t/aide/siteconfig/tab_indexing.html:1 msgid "Indexing and Journaling" msgstr "" #: ../../static/t/aide/siteconfig/tab_indexing.html:2 msgid "Warning: these facilities are resource intensive." msgstr "" #: ../../static/t/aide/siteconfig/tab_indexing.html:6 msgid "Enable full text index" msgstr "" #: ../../static/t/aide/siteconfig/tab_indexing.html:9 msgid "Perform journaling of email messages" msgstr "" #: ../../static/t/aide/siteconfig/tab_indexing.html:13 msgid "Perform journaling of non-email messages" msgstr "" #: ../../static/t/aide/siteconfig/tab_indexing.html:16 msgid "Email destination of journalized messages" msgstr "" #: ../../static/t/aide/siteconfig/tab_directory.html:1 msgid "Configure the LDAP connector for Citadel" msgstr "" #: ../../static/t/aide/siteconfig/tab_directory.html:4 msgid "" "NOTE: This Citadel server has been built without LDAP support. These " "options will have no effect." msgstr "" #: ../../static/t/aide/siteconfig/tab_directory.html:9 msgid "Host name of LDAP server (blank to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_directory.html:13 msgid "Port number of LDAP server (blank to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_directory.html:16 msgid "Base DN" msgstr "" #: ../../static/t/aide/siteconfig/tab_directory.html:19 msgid "Bind DN" msgstr "" #: ../../static/t/aide/siteconfig/tab_directory.html:22 msgid "Password for bind DN" msgstr "" #: ../../static/t/iconbar.html:7 msgid "Language:" msgstr "" #: ../../static/t/iconbar.html:19 msgid "Mail" msgstr "" #: ../../static/t/iconbar.html:39 ../../static/t/iconbar/edit.html:61 #: ../../static/t/summary/page.html:30 msgid "Tasks" msgstr "" #: ../../static/t/iconbar.html:48 ../../static/t/iconbar/edit.html:67 msgid "Rooms" msgstr "" #: ../../static/t/iconbar.html:57 msgid "Online users" msgstr "" #: ../../static/t/iconbar.html:62 ../../static/t/iconbar/edit.html:79 msgid "Chat" msgstr "" #: ../../static/t/iconbar.html:65 msgid "Advanced" msgstr "" #: ../../static/t/iconbar.html:72 ../../static/t/room/edit/editroom.html:4 #: ../../static/t/room/edit.html:5 msgid "Administration" msgstr "" #: ../../static/t/iconbar.html:83 msgid "customize this menu" msgstr "" #: ../../static/t/iconbar.html:92 msgid "switch to room list" msgstr "" #: ../../static/t/iconbar.html:93 msgid "switch to menu" msgstr "" #: ../../static/t/iconbar.html:94 msgid "My folders" msgstr "" #: ../../static/t/view_message/list_attach.html:3 #: ../../static/t/view_message/inline_attach.html:4 msgid "View" msgstr "" #: ../../static/t/view_message/list_attach.html:4 #: ../../static/t/view_message/inline_attach.html:5 msgid "Download" msgstr "" #: ../../static/t/view_message/print.html:14 #: ../../static/t/view_message.html:14 msgid "to" msgstr "" #: ../../static/t/openid_manual_create.html:2 msgid "Your OpenID" msgstr "" #: ../../static/t/openid_manual_create.html:2 msgid "was successfully verified." msgstr "" #: ../../static/t/openid_manual_create.html:3 msgid "However, the user name" msgstr "" #: ../../static/t/openid_manual_create.html:3 msgid "conflicts with an existing user." msgstr "" #: ../../static/t/openid_manual_create.html:5 msgid "Please specify the user name you would like to use." msgstr "" #: ../../static/t/files/graphicsupload.html:2 msgid "Image upload" msgstr "" #: ../../static/t/files/graphicsupload.html:6 msgid "You can upload an image directly from your computer" msgstr "" #: ../../static/t/files/graphicsupload.html:8 msgid "Please select a file to upload:" msgstr "" #: ../../static/t/files/section_onefile.html:20 msgid "Slideshow" msgstr "" #: ../../static/t/roombanner.html:10 ../../static/t/roombanner.html:11 msgid "new of" msgstr "" #: ../../static/t/roombanner.html:10 ../../static/t/roombanner.html:11 #: ../../static/t/msg_listselector_bottom.html:7 #: ../../static/t/msg_listselector_top.html:7 msgid "messages" msgstr "" #: ../../static/t/roombanner.html:28 msgid "Select page: " msgstr "" #: ../../static/t/who.html:13 msgid "Users currently on " msgstr "" #: ../../static/t/who.html:22 msgid "Click on a name to read user info. Click on" msgstr "" #: ../../static/t/who.html:24 msgid "to send an instant message to that user." msgstr "" #: ../../static/t/msg_listselector_bottom.html:2 #: ../../static/t/msg_listselector_top.html:2 msgid "Reading #" msgstr "" #: ../../static/t/msg_listselector_bottom.html:12 #: ../../static/t/msg_listselector_top.html:12 msgid "oldest to newest" msgstr "" #: ../../static/t/msg_listselector_bottom.html:20 #: ../../static/t/msg_listselector_top.html:20 msgid "newest to oldest" msgstr "" #: ../../static/t/newstartpage.html:4 msgid "New start page" msgstr "" #: ../../static/t/newstartpage.html:9 msgid "Your start page has been changed." msgstr "" #: ../../static/t/newstartpage.html:12 msgid "" "(Note: this does not change your browser's home page. It changes the page " "you begin on when you log on to" msgstr "" #: ../../static/t/no_new_msgs.html:3 msgid "No new messages." msgstr "" #: ../../static/t/view_blog/comment_box.html:8 msgid "Post a comment" msgstr "" #: ../../static/t/prefs/pushemail.html:2 msgid "Configure Push Email" msgstr "" #: ../../static/t/prefs/pushemail.html:9 msgid "Push email and SMS settings" msgstr "" #: ../../static/t/prefs/pushemail.html:17 msgid "" "If your administrator has enabled the functionality, Citadel can notify a " "Funambol server that you haved recieved new email and automatically " "syncronize any devices you have with the Funambol client installed." msgstr "" #: ../../static/t/prefs/pushemail.html:20 msgid "" "Alternatively, if the administrator has configured it, Citadel can send a " "text message to you when new mail arrives." msgstr "" #: ../../static/t/prefs/pushemail.html:26 msgid "Notify Funambol server" msgstr "" #: ../../static/t/prefs/pushemail.html:31 msgid "Send a text message to..." msgstr "" #: ../../static/t/prefs/pushemail.html:33 msgid "" "(Use international format, without any leading zeros, spaces or hypens, like " "+61415011501)" msgstr "" #: ../../static/t/prefs/pushemail.html:38 msgid "Use custom notification scheme configured by your Admin" msgstr "" #: ../../static/t/prefs/pushemail.html:43 msgid "Don‘t send any notifications" msgstr "" #: ../../static/t/prefs/box.html:9 msgid "Tree (folders) view" msgstr "" #: ../../static/t/prefs/box.html:11 msgid "Table (rooms) view" msgstr "" #: ../../static/t/prefs/box.html:20 msgid "12 hour (am/pm)" msgstr "" #: ../../static/t/prefs/box.html:25 msgid "24 hour" msgstr "" #: ../../static/t/prefs/box.html:152 msgid "Sunday" msgstr "" #: ../../static/t/prefs/box.html:153 msgid "Monday" msgstr "" #: ../../static/t/prefs/box.html:174 msgid "No signature" msgstr "" #: ../../static/t/prefs/box.html:238 msgid "Full-functionality" msgstr "" #: ../../static/t/prefs/box.html:241 msgid "Safe mode" msgstr "" #: ../../static/t/prefs/box.html:242 msgid "" "Safe mode is less intensive on your web browser, but not as fully featured." msgstr "" #: ../../static/t/wiki/pagelist.html:1 msgid "List of Wiki pages" msgstr "" #: ../../static/t/wiki/history.html:1 msgid "History of edits for this page" msgstr "" #: ../../static/t/who/list_static_header.html:1 msgid "Users currently on" msgstr "" #: ../../static/t/who/section.html:4 msgid "(kill)" msgstr "" #: ../../static/t/who/bio.html:4 ../../static/t/user/show.html:4 msgid "User profile" msgstr "" #: ../../static/t/who/summary.html:5 ../../static/t/who/box_list_static.html:6 #: ../../static/t/room/edit/tab_feed.html:13 msgid "User name" msgstr "" #: ../../static/t/who/summary.html:6 ../../static/t/who/box_list_static.html:7 msgid "Room" msgstr "" #: ../../static/t/who/box_list_static.html:8 msgid "From host" msgstr "" #: ../../static/t/view_message.html:19 msgid "Edit" msgstr "" #: ../../static/t/view_message.html:22 ../../static/t/view_message.html:26 msgid "Reply" msgstr "" #: ../../static/t/view_message.html:23 msgid "ReplyQuoted" msgstr "" #: ../../static/t/view_message.html:27 msgid "ReplyAll" msgstr "" #: ../../static/t/view_message.html:28 msgid "Forward" msgstr "" #: ../../static/t/view_message.html:31 ../../static/t/msg_listview.html:25 msgid "Move" msgstr "" #: ../../static/t/view_message.html:34 msgid "Headers" msgstr "" #: ../../static/t/view_message.html:35 ../../static/t/msg_listview.html:28 msgid "Print" msgstr "" #: ../../static/t/preferences.html:4 ../../static/t/preferences.html:7 msgid "Preferences and settings" msgstr "" #: ../../static/t/user/list.html:3 msgid "User list for " msgstr "" #: ../../static/t/user/list.html:9 msgid "User Name" msgstr "" #: ../../static/t/user/list.html:10 msgid "Number" msgstr "" #: ../../static/t/user/list.html:11 msgid "Access Level" msgstr "" #: ../../static/t/user/list.html:12 msgid "Last Login" msgstr "" #: ../../static/t/user/list.html:13 msgid "Total Logins" msgstr "" #: ../../static/t/user/list.html:14 msgid "Total Posts" msgstr "" #: ../../static/t/user/show.html:9 msgid "Click here to send an instant message to" msgstr "" #: ../../static/t/start_of_new_msgs.html:4 msgid "Old messages" msgstr "" #: ../../static/t/start_of_new_msgs.html:8 msgid "New messages" msgstr "" #: ../../static/t/display_main_menu.html:7 msgid "Basic commands" msgstr "" #: ../../static/t/display_main_menu.html:10 msgid "Your info" msgstr "" #: ../../static/t/display_main_menu.html:12 msgid "Advanced room commands" msgstr "" #: ../../static/t/iconbar/save.html:4 ../../static/t/iconbar/edit.html:4 msgid "Customize the icon bar" msgstr "" #: ../../static/t/iconbar/save.html:11 msgid "" "Your icon bar has been updated. Please select any of its choices to continue." msgstr "" #: ../../static/t/iconbar/save.html:11 msgid "" "You may need to force refresh (SHIFT-F5)> in order for changes to take effect" msgstr "" #: ../../static/t/iconbar/edit.html:11 msgid "Display icons as:" msgstr "" #: ../../static/t/iconbar/edit.html:12 msgid "pictures and text" msgstr "" #: ../../static/t/iconbar/edit.html:13 msgid "pictures only" msgstr "" #: ../../static/t/iconbar/edit.html:14 msgid "text only" msgstr "" #: ../../static/t/iconbar/edit.html:16 msgid "" "Select the icons you would like to see displayed in the 'icon bar' menu on " "the left side of the screen." msgstr "" #: ../../static/t/iconbar/edit.html:23 msgid "Site logo" msgstr "" #: ../../static/t/iconbar/edit.html:23 msgid "An icon describing this site" msgstr "" #: ../../static/t/iconbar/edit.html:29 msgid "Your summary page" msgstr "" #: ../../static/t/iconbar/edit.html:36 msgid "Mail (inbox)" msgstr "" #: ../../static/t/iconbar/edit.html:36 msgid "A shortcut to your email Inbox" msgstr "" #: ../../static/t/iconbar/edit.html:42 msgid "Your personal address book" msgstr "" #: ../../static/t/iconbar/edit.html:49 msgid "Your personal notes" msgstr "" #: ../../static/t/iconbar/edit.html:55 msgid "A shortcut to your personal calendar" msgstr "" #: ../../static/t/iconbar/edit.html:61 msgid "A shortcut to your personal task list" msgstr "" #: ../../static/t/iconbar/edit.html:67 msgid "" "Clicking this icon displays a list of all accessible rooms (or folders) " "available." msgstr "" #: ../../static/t/iconbar/edit.html:73 msgid "Who is online?" msgstr "" #: ../../static/t/iconbar/edit.html:73 msgid "Clicking this icon displays a list of all users currently logged in." msgstr "" #: ../../static/t/iconbar/edit.html:79 msgid "" "Clicking this icon enters real-time chat mode with other users in the same " "room." msgstr "" #: ../../static/t/iconbar/edit.html:85 msgid "Advanced options" msgstr "" #: ../../static/t/iconbar/edit.html:85 msgid "Access to the complete menu of Citadel functions." msgstr "" #: ../../static/t/iconbar/edit.html:91 msgid "Citadel logo" msgstr "" #: ../../static/t/iconbar/edit.html:91 msgid "Displays the 'Powered by Citadel' icon" msgstr "" #: ../../static/t/room/edit/tab_expire.html:8 msgid "Message expire policy for this room" msgstr "" #: ../../static/t/room/edit/tab_expire.html:14 msgid "Use the default policy for this floor" msgstr "" #: ../../static/t/room/edit/tab_expire.html:36 msgid "Message expire policy for this floor" msgstr "" #: ../../static/t/room/edit/tab_expire.html:42 msgid "Use the system default" msgstr "" #: ../../static/t/room/edit/editroom.html:5 ../../static/t/room/edit.html:6 msgid "Configuration" msgstr "" #: ../../static/t/room/edit/editroom.html:6 ../../static/t/room/edit.html:7 msgid "Message expire policy" msgstr "" #: ../../static/t/room/edit/editroom.html:7 ../../static/t/room/edit.html:8 msgid "Access controls" msgstr "" #: ../../static/t/room/edit/editroom.html:8 ../../static/t/room/edit.html:9 msgid "Sharing" msgstr "" #: ../../static/t/room/edit/editroom.html:9 ../../static/t/room/edit.html:10 msgid "Mailing list service" msgstr "" #: ../../static/t/room/edit/editroom.html:10 ../../static/t/room/edit.html:11 msgid "Remote retrieval" msgstr "" #: ../../static/t/room/edit/tab_config.html:6 msgid "name of room: " msgstr "" #: ../../static/t/room/edit/tab_config.html:10 #: ../../static/t/room/create.html:20 msgid "Resides on floor: " msgstr "" #: ../../static/t/room/edit/tab_config.html:16 #: ../../static/t/room/create.html:68 msgid "Type of room:" msgstr "" #: ../../static/t/room/edit/tab_config.html:22 #: ../../static/t/room/create.html:73 msgid "Public (automatically appears to everyone)" msgstr "" #: ../../static/t/room/edit/tab_config.html:28 #: ../../static/t/room/create.html:77 msgid "Private - hidden (accessible to anyone who knows its name)" msgstr "" #: ../../static/t/room/edit/tab_config.html:35 #: ../../static/t/room/create.html:81 msgid "Private - require password: " msgstr "" #: ../../static/t/room/edit/tab_config.html:44 #: ../../static/t/room/create.html:86 msgid "Private - invitation only" msgstr "" #: ../../static/t/room/edit/tab_config.html:51 #: ../../static/t/room/create.html:90 msgid "Personal (mailbox for you only)" msgstr "" #: ../../static/t/room/edit/tab_config.html:55 msgid "If private, cause current users to forget room" msgstr "" #: ../../static/t/room/edit/tab_config.html:61 msgid "Preferred users only" msgstr "" #: ../../static/t/room/edit/tab_config.html:66 msgid "Read-only room" msgstr "" #: ../../static/t/room/edit/tab_config.html:71 msgid "All users allowed to post may also delete messages" msgstr "" #: ../../static/t/room/edit/tab_config.html:76 msgid "File directory room" msgstr "" #: ../../static/t/room/edit/tab_config.html:80 msgid "Directory name: " msgstr "" #: ../../static/t/room/edit/tab_config.html:86 msgid "Uploading allowed" msgstr "" #: ../../static/t/room/edit/tab_config.html:91 msgid "Downloading allowed" msgstr "" #: ../../static/t/room/edit/tab_config.html:96 msgid "Visible directory" msgstr "" #: ../../static/t/room/edit/tab_config.html:103 msgid "Network shared room" msgstr "" #: ../../static/t/room/edit/tab_config.html:108 msgid "Permanent (does not auto-purge)" msgstr "" #: ../../static/t/room/edit/tab_config.html:113 msgid "Subject Required (Force users to specify a message subject)" msgstr "" #: ../../static/t/room/edit/tab_config.html:116 msgid "Anonymous messages" msgstr "" #: ../../static/t/room/edit/tab_config.html:122 msgid "No anonymous messages" msgstr "" #: ../../static/t/room/edit/tab_config.html:127 msgid "All messages are anonymous" msgstr "" #: ../../static/t/room/edit/tab_config.html:132 msgid "Prompt user when entering messages" msgstr "" #: ../../static/t/room/edit/tab_config.html:136 msgid "Room aide: " msgstr "" #: ../../static/t/room/edit/tab_listserv.html:5 msgid "" "The contents of this room are being mailed as individual messages " "to the following list recipients:

    " msgstr "" #: ../../static/t/room/edit/tab_listserv.html:19 msgid "" "The contents of this room are being mailed in digest form to the " "following list recipients:

    " msgstr "" #: ../../static/t/room/edit/tab_listserv.html:39 msgid "Add recipients from Contacts or other address books" msgstr "" #: ../../static/t/room/edit/tab_listserv.html:48 msgid "Allow non-subscribers to mail to this room." msgstr "" #: ../../static/t/room/edit/tab_listserv.html:54 msgid "Room post publication needs Admin permission." msgstr "" #: ../../static/t/room/edit/tab_listserv.html:59 msgid "Allow self-service subscribe/unsubscribe requests." msgstr "" #: ../../static/t/room/edit/tab_listserv.html:65 msgid "The URL for subscribe/unsubscribe is: " msgstr "" #: ../../static/t/room/edit/digestrecp_removal.html:1 #: ../../static/t/room/edit/pop3client_removal.html:9 #: ../../static/t/room/edit/listrecp_removal.html:1 #: ../../static/t/room/edit/rssclient_removal.html:5 msgid "(remove)" msgstr "" #: ../../static/t/room/edit/tab_admin.html:5 msgid "Delete this room" msgstr "" #: ../../static/t/room/edit/tab_admin.html:10 msgid "Set or change the icon for this rooms banner" msgstr "" #: ../../static/t/room/edit/tab_admin.html:14 msgid "Edit this rooms Info file" msgstr "" #: ../../static/t/room/edit/tab_share.html:5 msgid "Shared with" msgstr "" #: ../../static/t/room/edit/tab_share.html:6 msgid "Not shared with" msgstr "" #: ../../static/t/room/edit/tab_share.html:11 #: ../../static/t/room/edit/tab_share.html:21 msgid "Remote node name" msgstr "" #: ../../static/t/room/edit/tab_share.html:12 #: ../../static/t/room/edit/tab_share.html:22 msgid "Remote room name" msgstr "" #: ../../static/t/room/edit/tab_share.html:13 #: ../../static/t/room/edit/tab_share.html:23 msgid "Actions" msgstr "" #: ../../static/t/room/edit/tab_share.html:35 msgid "" "When sharing a room, it must be shared from both ends. Adding a node to the " "'shared' list sends messages out, but in order to receive messages, the " "other nodes must be configured to send messages out to your system as well. " "
  • If the remote room name is blank, it is assumed that the room name is " "identical on the remote node.
  • If the remote room name is different, the " "remote node must also configure the name of the room here." msgstr "" #: ../../static/t/room/edit/tab_feed.html:2 msgid "" "Retrieve messages from these remote POP3 accounts and store them in this " "room:" msgstr "" #: ../../static/t/room/edit/tab_feed.html:12 msgid "Remote host" msgstr "" #: ../../static/t/room/edit/tab_feed.html:15 msgid "Keep messages on server?" msgstr "" #: ../../static/t/room/edit/tab_feed.html:16 msgid "Interval" msgstr "" #: ../../static/t/room/edit/tab_feed.html:31 msgid "Fetch the following RSS feeds and store them in this room:" msgstr "" #: ../../static/t/room/edit/tab_feed.html:43 msgid "Feed URL" msgstr "" #: ../../static/t/room/edit/tab_access.html:5 msgid "" "The users listed below have access to this room. To remove a user from the " "access list, select the user name from the list and click 'Kick'." msgstr "" #: ../../static/t/room/edit/tab_access.html:20 msgid "" "To grant another user access to this room, enter the user name in the box " "below and click 'Invite'." msgstr "" #: ../../static/t/room/edit/tab_access.html:26 msgid "Invite:" msgstr "" #: ../../static/t/room/edit/tab_access.html:35 msgid "Users" msgstr "" #: ../../static/t/room/zapped_list.html:7 msgid "Zapped (forgotten) rooms" msgstr "" #: ../../static/t/room/zapped_list.html:10 msgid "Click on any room to un-zap it and goto that room." msgstr "" #: ../../static/t/room/display_private.html:7 msgid "Go to a hidden room" msgstr "" #: ../../static/t/room/display_private.html:8 msgid "" "If you know the name of a hidden (guess-name) or passworded room, you can " "enter that room by typing its name below. Once you gain access to a private " "room, it will appear in your regular room listings so you don‘t have to keep " "returning here." msgstr "" #: ../../static/t/room/display_private.html:14 msgid "Enter room name:" msgstr "" #: ../../static/t/room/display_private.html:21 msgid "Enter room password:" msgstr "" #: ../../static/t/room/create.html:11 #: ../../static/t/menu/advanced_roomcommands.html:6 msgid "Create a new room" msgstr "" #: ../../static/t/room/create.html:18 msgid "Name of room: " msgstr "" #: ../../static/t/room/create.html:32 msgid "Default view for room: " msgstr "" #: ../../static/t/room/zap_this.html:3 msgid "Zap (forget/unsubscribe) the current room" msgstr "" #: ../../static/t/room/zap_this.html:6 msgid "If you select this option," msgstr "" #: ../../static/t/room/zap_this.html:8 msgid "will disappear from your room list. Is this what you wish to do?" msgstr "" #: ../../static/t/menu/your_info.html:2 msgid "Change your preferences and settings" msgstr "" #: ../../static/t/menu/your_info.html:3 msgid "Update your contact information" msgstr "" #: ../../static/t/menu/your_info.html:5 msgid "Enter your 'bio'" msgstr "" #: ../../static/t/menu/your_info.html:6 msgid "Edit your online photo" msgstr "" #: ../../static/t/menu/your_info.html:8 msgid "Edit your push email settings" msgstr "" #: ../../static/t/menu/your_info.html:9 msgid "Manage your OpenIDs" msgstr "" #: ../../static/t/menu/basic_commands.html:3 msgid "List known rooms" msgstr "" #: ../../static/t/menu/basic_commands.html:3 msgid "Where can I go from here?" msgstr "" #: ../../static/t/menu/basic_commands.html:4 ../../static/t/navbar.html:168 msgid "Goto next room" msgstr "" #: ../../static/t/menu/basic_commands.html:4 msgid "...with unread messages" msgstr "" #: ../../static/t/menu/basic_commands.html:5 msgid "Skip to next room" msgstr "" #: ../../static/t/menu/basic_commands.html:5 msgid "(come back here later)" msgstr "" #: ../../static/t/menu/basic_commands.html:6 ../../static/t/navbar.html:5 msgid "Ungoto" msgstr "" #: ../../static/t/menu/basic_commands.html:6 msgid "oops! Back to " msgstr "" #: ../../static/t/menu/basic_commands.html:10 ../../static/t/navbar.html:13 msgid "Read new messages" msgstr "" #: ../../static/t/menu/basic_commands.html:10 msgid "...in this room" msgstr "" #: ../../static/t/menu/basic_commands.html:11 ../../static/t/navbar.html:19 msgid "Read all messages" msgstr "" #: ../../static/t/menu/basic_commands.html:11 msgid "...old and new" msgstr "" #: ../../static/t/menu/basic_commands.html:12 ../../static/t/navbar.html:25 msgid "Enter a message" msgstr "" #: ../../static/t/menu/basic_commands.html:12 msgid "(post in this room)" msgstr "" #: ../../static/t/menu/basic_commands.html:13 msgid "File library" msgstr "" #: ../../static/t/menu/basic_commands.html:13 msgid "(List files available for download)" msgstr "" #: ../../static/t/menu/basic_commands.html:17 msgid "Summary page" msgstr "" #: ../../static/t/menu/basic_commands.html:17 msgid "Summary of my account" msgstr "" #: ../../static/t/menu/basic_commands.html:18 msgid "User list" msgstr "" #: ../../static/t/menu/basic_commands.html:18 msgid "(all registered users)" msgstr "" #: ../../static/t/menu/basic_commands.html:19 msgid "Bye!" msgstr "" #: ../../static/t/menu/advanced_roomcommands.html:3 msgid "Edit or delete this room" msgstr "" #: ../../static/t/menu/advanced_roomcommands.html:5 msgid "Go to a 'hidden' room" msgstr "" #: ../../static/t/menu/advanced_roomcommands.html:7 msgid "Zap (forget) this room" msgstr "" #: ../../static/t/menu/advanced_roomcommands.html:8 msgid "List all forgotten rooms" msgstr "" #: ../../static/t/navbar.html:34 msgid "View contacts" msgstr "" #: ../../static/t/navbar.html:40 msgid "Add new contact" msgstr "" #: ../../static/t/navbar.html:49 msgid "Day view" msgstr "" #: ../../static/t/navbar.html:55 msgid "Month view" msgstr "" #: ../../static/t/navbar.html:61 msgid "Add new event" msgstr "" #: ../../static/t/navbar.html:70 msgid "Calendar list" msgstr "" #: ../../static/t/navbar.html:79 msgid "View tasks" msgstr "" #: ../../static/t/navbar.html:85 msgid "Add new task" msgstr "" #: ../../static/t/navbar.html:94 msgid "View notes" msgstr "" #: ../../static/t/navbar.html:101 msgid "Add new note" msgstr "" #: ../../static/t/navbar.html:110 msgid "Refresh message list" msgstr "" #: ../../static/t/navbar.html:122 msgid "Write mail" msgstr "" #: ../../static/t/navbar.html:132 msgid "Wiki home" msgstr "" #: ../../static/t/navbar.html:139 msgid "Edit this page" msgstr "" #: ../../static/t/navbar.html:145 msgid "History" msgstr "" #: ../../static/t/navbar.html:154 msgid "New blog post" msgstr "" #: ../../static/t/navbar.html:162 msgid "Skip this room" msgstr "" #: ../../static/t/msg_listview.html:18 msgid "Loading messages from server, please wait" msgstr "" #: ../../static/t/msg_listview.html:24 msgid "Open in new window" msgstr "" #: ../../static/t/msg_listview.html:26 msgid "Copy" msgstr "" #: ../../static/t/view_mailq/message.html:6 msgid "Originaly posted in: " msgstr "" #: ../../static/t/view_mailq/header.html:15 msgid "Refresh this page" msgstr "" #: ../../static/t/view_mailq/header.html:21 msgid "Message ID" msgstr "" #: ../../static/t/view_mailq/header.html:23 msgid "Date/time submitted" msgstr "" #: ../../static/t/view_mailq/header.html:25 msgid "Next attempt" msgstr "" #: ../../static/t/view_mailq/header.html:29 msgid "Recipients" msgstr "" #: ../../static/t/view_mailq/footer_empty.html:4 msgid "The queue is empty." msgstr "" #: ../../static/t/view_mailq/footer_empty.html:9 #: ../../static/t/view_mailq/footer.html:5 msgid "You do not have permission to view this resource." msgstr "" #: ../../static/t/get_logged_in.html:5 msgid "You must be logged in to access this page." msgstr "" #: ../../static/t/get_logged_in.html:9 #: ../../static/t/edit_message/attachments_pane.html:3 msgid "Close window" msgstr "" #: ../../static/t/get_logged_in.html:55 msgid "Log in using a user name and password" msgstr "" #: ../../static/t/get_logged_in.html:60 ../../static/t/get_logged_in.html:75 msgid "Password:" msgstr "" #: ../../static/t/get_logged_in.html:65 ../../static/t/get_logged_in.html:69 msgid "New user? Register now" msgstr "" #: ../../static/t/get_logged_in.html:70 msgid "" "enter the name and password you wish to use, and click "New User." " msgstr "" #: ../../static/t/get_logged_in.html:83 msgid "Log in using OpenID" msgstr "" #: ../../static/t/get_logged_in.html:85 msgid "OpenID URL:" msgstr "" #: ../../static/t/get_logged_in.html:92 msgid "Log in using Google" msgstr "" #: ../../static/t/get_logged_in.html:97 msgid "Log in using Yahoo" msgstr "" #: ../../static/t/get_logged_in.html:102 msgid "Log in using AOL or AIM" msgstr "" #: ../../static/t/get_logged_in.html:104 msgid "Enter your AOL or AIM screen name:" msgstr "" #: ../../static/t/get_logged_in.html:115 msgid "Please wait" msgstr "" #: ../../static/t/summary/page.html:4 msgid "Summary page for " msgstr "" #: ../../static/t/summary/page.html:21 msgid "Messages" msgstr "" #: ../../static/t/summary/page.html:39 msgid "Today on your calendar" msgstr "" #: ../../static/t/summary/page.html:51 msgid "Who‘s online now" msgstr "" #: ../../static/t/summary/page.html:60 msgid "About this server" msgstr "" #: ../../static/t/summary/page.html:63 msgid "You are connected to" msgstr "" #: ../../static/t/summary/page.html:64 msgid "running" msgstr "" #: ../../static/t/summary/page.html:65 msgid "with" msgstr "" #: ../../static/t/summary/page.html:66 msgid "server build" msgstr "" #: ../../static/t/summary/page.html:67 msgid "and located in" msgstr "" #: ../../static/t/summary/page.html:68 msgid "Your system administrator is" msgstr "" #: ../../static/t/edit_message/attachments_pane.html:16 msgid "Attach file" msgstr "" #: ../../static/t/edit_message/attachments_pane.html:21 msgid "Upload" msgstr "" #: ../../static/t/edit_message/section_attach_select.html:4 msgid "Remove" msgstr "" #: ../../static/t/loggedinas.html:3 msgid "Logged in as" msgstr "" #: ../../static/t/loggedinas.html:6 msgid "Not logged in." msgstr "" webcit-8.24-dfsg.orig/po/webcit/sl.po0000644000175000017500000024665212271477123017270 0ustar michaelmichael# Slovenian translation for citadel # Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 # This file is distributed under the same license as the citadel package. # FIRST AUTHOR , 2011. # msgid "" msgstr "" "Project-Id-Version: citadel\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-03-20 01:03-0400\n" "PO-Revision-Date: 2011-04-30 01:30+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Slovenian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2012-08-01 04:34+0000\n" "X-Generator: Launchpad (build 15719)\n" "Language: sl\n" #: ../../roomops.c:708 ../../roomops.c:1005 ../../sieve.c:364 msgid "Cancelled. Changes were not saved." msgstr "" #: ../../roomops.c:838 ../../sieve.c:417 msgid "Your changes have been saved." msgstr "" #: ../../roomops.c:881 #, c-format msgid "User '%s' kicked out of room '%s'." msgstr "" #: ../../roomops.c:898 #, c-format msgid "User '%s' invited to room '%s'." msgstr "" #: ../../roomops.c:927 msgid "Cancelled. No new room was created." msgstr "" #: ../../roomops.c:1187 msgid "Floor has been deleted." msgstr "" #: ../../roomops.c:1211 msgid "New floor has been created." msgstr "" #: ../../roomops.c:1290 msgid "Room list view" msgstr "" #: ../../roomops.c:1293 msgid "Show empty floors" msgstr "" #: ../../roomviews.c:50 msgid "Bulletin Board" msgstr "" #: ../../roomviews.c:51 msgid "Mail Folder" msgstr "" #: ../../roomviews.c:52 msgid "Address Book" msgstr "" #: ../../roomviews.c:53 ../../static/t/iconbar.html:24 #: ../../static/t/iconbar/edit.html:55 msgid "Calendar" msgstr "" #: ../../roomviews.c:54 msgid "Task List" msgstr "" #: ../../roomviews.c:55 msgid "Notes List" msgstr "" #: ../../roomviews.c:56 msgid "Wiki" msgstr "" #: ../../roomviews.c:57 msgid "Calendar List" msgstr "" #: ../../roomviews.c:58 msgid "Journal" msgstr "" #: ../../roomviews.c:59 msgid "Drafts" msgstr "" #: ../../roomviews.c:60 msgid "Blog" msgstr "" #: ../../tasks.c:93 msgid "Completed?" msgstr "" #: ../../tasks.c:95 msgid "Name of task" msgstr "" #: ../../tasks.c:97 msgid "Date due" msgstr "" #: ../../tasks.c:99 msgid "Category" msgstr "" #: ../../tasks.c:101 msgid "Show All" msgstr "" #: ../../tasks.c:223 msgid "Edit task" msgstr "" #: ../../tasks.c:242 ../../calendar.c:98 ../../calendar_view.c:298 #: ../../calendar_view.c:959 ../../calendar_view.c:1003 #: ../../calendar_view.c:1084 msgid "Summary:" msgstr "" #: ../../tasks.c:253 msgid "Start date:" msgstr "" #: ../../tasks.c:261 ../../tasks.c:291 msgid "No date" msgstr "" #: ../../tasks.c:265 ../../tasks.c:294 msgid "or" msgstr "" #: ../../tasks.c:279 ../../tasks.c:308 msgid "Time associated" msgstr "" #: ../../tasks.c:283 msgid "Due date:" msgstr "" #: ../../tasks.c:312 msgid "Completed:" msgstr "" #: ../../tasks.c:323 msgid "Category:" msgstr "" #: ../../tasks.c:333 ../../calendar.c:159 ../../static/t/files.html:12 msgid "Description:" msgstr "" #: ../../tasks.c:351 ../../event.c:764 msgid "Save" msgstr "" #: ../../tasks.c:352 ../../event.c:765 ../../static/t/aide/inet/section.html:5 #: ../../static/t/view_blog/comment.html:12 #: ../../static/t/view_blog/post.html:15 ../../static/t/view_message.html:32 #: ../../static/t/navbar.html:116 ../../static/t/msg_listview.html:27 msgid "Delete" msgstr "" #: ../../tasks.c:353 ../../vcard_edit.c:1216 ../../paging.c:66 #: ../../event.c:767 ../../sysmsgs.c:69 ../../who.c:200 ../../auth.c:812 #: ../../static/t/edit_message.html:135 ../../static/t/confirmlogoff.html:4 msgid "Cancel" msgstr "" #: ../../tasks.c:423 ../../calendar_view.c:1379 msgid "Untitled Task" msgstr "" #: ../../fmt_date.c:310 msgid "Time format" msgstr "" #: ../../listsub.c:54 ../../static/t/listsub/display.html:5 msgid "List subscription" msgstr "" #: ../../listsub.c:67 ../../static/t/listsub/display.html:9 msgid "List subscribe/unsubscribe" msgstr "" #: ../../listsub.c:87 ../../static/t/listsub/display.html:15 #: ../../static/t/listsub/display.html:34 msgid "Confirmation request sent" msgstr "" #: ../../listsub.c:89 #, c-format msgid "" "You are subscribing %s to the %s mailing list. The " "listserver has sent you an e-mail with one additional Web link for you to " "click on to confirm your subscription. This extra step is for your " "protection, as it prevents others from being able to subscribe you to lists " "without your consent.

    Please click on the link which is being e-" "mailed to you and your subscription will be confirmed.
    \n" msgstr "" #: ../../listsub.c:102 ../../static/t/listsub/display.html:24 msgid "Go back..." msgstr "" #: ../../listsub.c:253 ../../listsub.c:291 ../../listsub.c:327 #: ../../listsub.c:334 msgid "You need to specify the mailinglist to subscribe to." msgstr "" #: ../../listsub.c:260 ../../listsub.c:298 msgid "You need to specify the email address you'd like to subscribe with." msgstr "" #: ../../blogview_renderer.c:58 ../../blogview_renderer.c:74 #, c-format msgid "%d comments" msgstr "" #: ../../blogview_renderer.c:61 ../../blogview_renderer.c:77 msgid "permalink" msgstr "" #: ../../blogview_renderer.c:302 msgid "Newer posts" msgstr "" #: ../../blogview_renderer.c:311 msgid "Older posts" msgstr "" #: ../../useredit.c:629 msgid "" "An error occurred while trying to create or edit this address book entry." msgstr "" #: ../../useredit.c:717 msgid "Changes were not saved." msgstr "" #: ../../useredit.c:782 msgid "A new user has been created." msgstr "" #: ../../useredit.c:786 msgid "" "You are attempting to create a new user from within Citadel while running in " "host based authentication mode. In this mode, you must create new users on " "the host system, not within Citadel." msgstr "" #: ../../bbsview_renderer.c:312 msgid "Go to page: " msgstr "" #: ../../bbsview_renderer.c:354 msgid "First" msgstr "" #: ../../bbsview_renderer.c:360 msgid "Last" msgstr "" #: ../../graphics.c:56 msgid "Graphics upload has been cancelled." msgstr "" #: ../../graphics.c:62 msgid "You didn't upload a file." msgstr "" #: ../../graphics.c:112 msgid "your photo" msgstr "" #: ../../graphics.c:119 msgid "the icon for this room" msgstr "" #: ../../graphics.c:127 msgid "the Greetingpicture for the login prompt" msgstr "" #: ../../graphics.c:135 msgid "the Logoff banner picture" msgstr "" #: ../../graphics.c:146 msgid "the icon for this floor" msgstr "" #: ../../calendar_tools.c:100 msgid "Hour: " msgstr "" #: ../../calendar_tools.c:120 msgid "Minute: " msgstr "" #: ../../calendar_tools.c:191 msgid "(status unknown)" msgstr "" #: ../../calendar_tools.c:207 msgid "(needs action)" msgstr "" #: ../../calendar_tools.c:210 msgid "(accepted)" msgstr "" #: ../../calendar_tools.c:213 msgid "(declined)" msgstr "" #: ../../calendar_tools.c:216 msgid "(tenative)" msgstr "" #: ../../calendar_tools.c:219 msgid "(delegated)" msgstr "" #: ../../calendar_tools.c:222 msgid "(completed)" msgstr "" #: ../../calendar_tools.c:225 msgid "(in process)" msgstr "" #: ../../calendar_tools.c:228 msgid "(none)" msgstr "" #: ../../notes.c:343 msgid "Click on any note to edit it." msgstr "" #: ../../vcard_edit.c:175 ../../vcard_edit.c:178 msgid "(no name)" msgstr "" #: ../../vcard_edit.c:443 msgid " (work)" msgstr "" #: ../../vcard_edit.c:445 msgid " (home)" msgstr "" #: ../../vcard_edit.c:447 msgid " (cell)" msgstr "" #: ../../vcard_edit.c:458 ../../vcard_edit.c:1120 msgid "Address:" msgstr "" #: ../../vcard_edit.c:526 msgid "Telephone:" msgstr "" #: ../../vcard_edit.c:531 msgid "E-mail:" msgstr "" #: ../../vcard_edit.c:779 msgid "This address book is empty." msgstr "" #: ../../vcard_edit.c:793 msgid "An internal error has occurred." msgstr "" #: ../../vcard_edit.c:944 msgid "Error" msgstr "" #: ../../vcard_edit.c:1048 msgid "Edit contact information" msgstr "" #: ../../vcard_edit.c:1068 msgid "Prefix" msgstr "" #: ../../vcard_edit.c:1068 msgid "First Name" msgstr "" #: ../../vcard_edit.c:1068 msgid "Middle Name" msgstr "" #: ../../vcard_edit.c:1068 msgid "Last Name" msgstr "" #: ../../vcard_edit.c:1068 msgid "Suffix" msgstr "" #: ../../vcard_edit.c:1089 msgid "Display name:" msgstr "" #: ../../vcard_edit.c:1096 msgid "Title:" msgstr "" #: ../../vcard_edit.c:1103 msgid "Organization:" msgstr "" #: ../../vcard_edit.c:1114 msgid "PO box:" msgstr "" #: ../../vcard_edit.c:1130 msgid "City:" msgstr "" #: ../../vcard_edit.c:1136 msgid "State:" msgstr "" #: ../../vcard_edit.c:1142 msgid "ZIP code:" msgstr "" #: ../../vcard_edit.c:1148 msgid "Country:" msgstr "" #: ../../vcard_edit.c:1158 msgid "Home telephone:" msgstr "" #: ../../vcard_edit.c:1164 msgid "Work telephone:" msgstr "" #: ../../vcard_edit.c:1170 msgid "Mobile telephone:" msgstr "" #: ../../vcard_edit.c:1176 msgid "Fax number:" msgstr "" #: ../../vcard_edit.c:1187 msgid "Primary Internet e-mail address" msgstr "" #: ../../vcard_edit.c:1194 msgid "Internet e-mail aliases" msgstr "" #: ../../vcard_edit.c:1215 ../../sysmsgs.c:67 msgid "Save changes" msgstr "" #: ../../vcard_edit.c:1261 msgid "Unable to enter the room to save your message" msgstr "" #: ../../vcard_edit.c:1265 msgid "Aborting." msgstr "" #: ../../vcard_edit.c:1297 ../../vcard_edit.c:1341 ../../auth.c:367 #: ../../auth.c:397 msgid "An error has occurred." msgstr "" #: ../../vcard_edit.c:1399 msgid "Could Not decode vcard photo\n" msgstr "" #: ../../preferences.c:880 msgid "Cancelled. No settings were changed." msgstr "" #: ../../preferences.c:1092 msgid "Make this my start page" msgstr "" #: ../../preferences.c:1130 msgid "This isn't allowed to become the start page." msgstr "" #: ../../preferences.c:1132 msgid "You no longer have a start page selected." msgstr "" #: ../../preferences.c:1182 msgid "Prefered startpage" msgstr "" #: ../../calendar.c:76 msgid "Meeting invitation" msgstr "" #: ../../calendar.c:79 msgid "Attendee's reply to your invitation" msgstr "" #: ../../calendar.c:82 msgid "Published event" msgstr "" #: ../../calendar.c:85 msgid "This is an unknown type of calendar item." msgstr "" #: ../../calendar.c:107 ../../calendar_view.c:306 ../../calendar_view.c:964 #: ../../calendar_view.c:1008 ../../calendar_view.c:1089 msgid "Location:" msgstr "" #: ../../calendar.c:132 ../../calendar_view.c:351 ../../calendar_view.c:970 msgid "Date:" msgstr "" #: ../../calendar.c:139 ../../calendar_view.c:373 ../../calendar_view.c:1013 #: ../../calendar_view.c:1099 msgid "Starting date/time:" msgstr "" #: ../../calendar.c:150 ../../calendar_view.c:376 ../../calendar_view.c:1015 #: ../../calendar_view.c:1101 msgid "Ending date/time:" msgstr "" #: ../../calendar.c:168 ../../event.c:90 msgid "Recurrence" msgstr "" #: ../../calendar.c:169 ../../event.c:505 msgid "This is a recurring event" msgstr "" #: ../../calendar.c:178 msgid "Attendee:" msgstr "" #: ../../calendar.c:218 #, c-format msgid "This is an update of '%s' which is already in your calendar." msgstr "" #: ../../calendar.c:222 #, c-format msgid "This event would conflict with '%s' which is already in your calendar." msgstr "" #: ../../calendar.c:227 msgid "Update:" msgstr "" #: ../../calendar.c:228 msgid "CONFLICT:" msgstr "" #: ../../calendar.c:251 msgid "How would you like to respond to this invitation?" msgstr "" #: ../../calendar.c:252 msgid "Accept" msgstr "" #: ../../calendar.c:253 msgid "Tentative" msgstr "" #: ../../calendar.c:254 msgid "Decline" msgstr "" #: ../../calendar.c:271 msgid "Click Update to accept this reply and update your calendar." msgstr "" #: ../../calendar.c:272 msgid "Update" msgstr "" #: ../../calendar.c:273 msgid "Ignore" msgstr "" #: ../../calendar.c:295 msgid "There was an error parsing this calendar item." msgstr "" #: ../../calendar.c:328 msgid "" "You have accepted this meeting invitation. It has been entered into your " "calendar." msgstr "" #: ../../calendar.c:332 msgid "" "You have tentatively accepted this meeting invitation. It has been " "'pencilled in' to your calendar." msgstr "" #: ../../calendar.c:336 msgid "" "You have declined this meeting invitation. It has not been entered " "into your calendar." msgstr "" #: ../../calendar.c:341 msgid "A reply has been sent to the meeting organizer." msgstr "" #. / Translators: RSVP aka Répondez s'il-vous-plaît Is the term #. / that the recipient of an ical-invitation should please #. / answer this request. #: ../../calendar.c:376 msgid "Your calendar has been updated to reflect this RSVP." msgstr "" #: ../../calendar.c:378 msgid "" "You have chosen to ignore this RSVP. Your calendar has not been " "updated." msgstr "" #: ../../calendar.c:932 msgid "Calendar day view begins at:" msgstr "" #: ../../calendar.c:933 msgid "Calendar day view ends at:" msgstr "" #: ../../calendar.c:934 msgid "Week starts on:" msgstr "" #: ../../paging.c:35 msgid "Send instant message" msgstr "" #: ../../paging.c:43 msgid "Send an instant message to: " msgstr "" #: ../../paging.c:57 msgid "Enter message text:" msgstr "" #: ../../paging.c:65 ../../static/t/edit_message.html:109 msgid "Send message" msgstr "" #: ../../paging.c:84 msgid "Message was not sent." msgstr "" #: ../../paging.c:95 msgid "Message has been sent to " msgstr "" #: ../../iconbar.c:328 msgid "Iconbar Setting" msgstr "" #. #. * Set to 'unknown' right from the beginning. Unless we learn #. * something else, that's what we'll go with. #. #: ../../availability.c:148 msgid "availability unknown" msgstr "" #: ../../availability.c:169 msgid "free" msgstr "" #: ../../availability.c:179 msgid "BUSY" msgstr "" #: ../../serv_func.c:193 msgid "" "This server is already serving its maximum number of users and cannot accept " "any additional logins at this time. Please try again later or contact your " "system administrator." msgstr "" #: ../../serv_func.c:198 ../../serv_func.c:227 msgid "Received unexpected answer from Citadel server; bailing out." msgstr "" #: ../../serv_func.c:236 #, c-format msgid "" "You are connected to a Citadel server running Citadel %d.%02d. \n" "In order to run this version of WebCit you must also have Citadel %d.%02d or " "newer.\n" "\n" "\n" msgstr "" #: ../../event.c:70 msgid "seconds" msgstr "" #: ../../event.c:71 msgid "minutes" msgstr "" #: ../../event.c:72 msgid "hours" msgstr "" #: ../../event.c:73 msgid "days" msgstr "" #: ../../event.c:74 msgid "weeks" msgstr "" #: ../../event.c:75 msgid "months" msgstr "" #: ../../event.c:76 msgid "years" msgstr "" #: ../../event.c:77 msgid "never" msgstr "" #: ../../event.c:81 msgid "first" msgstr "" #: ../../event.c:82 msgid "second" msgstr "" #: ../../event.c:83 msgid "third" msgstr "" #: ../../event.c:84 msgid "fourth" msgstr "" #: ../../event.c:85 msgid "fifth" msgstr "" #: ../../event.c:88 msgid "Event" msgstr "" #: ../../event.c:89 ../../event.c:437 ../../event.c:449 msgid "Attendees" msgstr "" #: ../../event.c:167 msgid "Add or edit an event" msgstr "" #: ../../event.c:206 ../../static/t/iconbar.html:13 #: ../../static/t/iconbar/edit.html:29 msgid "Summary" msgstr "" #: ../../event.c:217 msgid "Location" msgstr "" #: ../../event.c:228 ../../calendar_view.c:760 msgid "Start" msgstr "" #: ../../event.c:271 ../../calendar_view.c:957 ../../calendar_view.c:986 msgid "All day event" msgstr "" #: ../../event.c:277 ../../calendar_view.c:761 msgid "End" msgstr "" #: ../../event.c:327 ../../static/t/iconbar.html:34 #: ../../static/t/iconbar/edit.html:49 msgid "Notes" msgstr "" #: ../../event.c:369 msgid "Organizer" msgstr "" #: ../../event.c:374 msgid "(you are the organizer)" msgstr "" #: ../../event.c:392 msgid "Show time as:" msgstr "" #: ../../event.c:415 msgid "Free" msgstr "" #: ../../event.c:423 msgid "Busy" msgstr "" #: ../../event.c:440 msgid "(One per line)" msgstr "" #: ../../event.c:450 ../../static/t/edit_message.html:143 #: ../../static/t/iconbar.html:29 ../../static/t/iconbar/edit.html:42 msgid "Contacts" msgstr "" #: ../../event.c:513 msgid "Recurrence rule" msgstr "" #: ../../event.c:517 msgid "Repeats every" msgstr "" #. begin 'weekday_selector' div #: ../../event.c:535 msgid "on these weekdays:" msgstr "" #: ../../event.c:593 #, c-format msgid "on day %s%d%s of the month" msgstr "" #: ../../event.c:602 ../../event.c:664 msgid "on the " msgstr "" #: ../../event.c:626 msgid "of the month" msgstr "" #: ../../event.c:655 msgid "every " msgstr "" #: ../../event.c:656 msgid "year on this date" msgstr "" #: ../../event.c:688 ../../static/t/msg_listselector_bottom.html:7 #: ../../static/t/msg_listselector_top.html:7 msgid "of" msgstr "" #: ../../event.c:712 msgid "Recurrence range" msgstr "" #: ../../event.c:720 msgid "No ending date" msgstr "" #: ../../event.c:727 msgid "Repeat this event" msgstr "" #: ../../event.c:730 msgid "times" msgstr "" #: ../../event.c:738 msgid "Repeat this event until " msgstr "" #: ../../event.c:766 msgid "Check attendee availability" msgstr "" #: ../../event.c:858 ../../calendar_view.c:272 ../../calendar_view.c:468 #: ../../calendar_view.c:937 msgid "Untitled Event" msgstr "" #: ../../sysmsgs.c:52 #, c-format msgid "Edit %s" msgstr "" #: ../../sysmsgs.c:55 #, c-format msgid "" "Enter %s below. Text is formatted to the reader's browser. A newline is " "forced by preceding the next line by a blank." msgstr "" #: ../../sysmsgs.c:89 #, c-format msgid "Cancelled. %s was not saved." msgstr "" #: ../../sysmsgs.c:109 msgid " has been saved." msgstr "" #: ../../sysmsgs.c:116 ../../sysmsgs.c:117 msgid "Room info" msgstr "" #: ../../sysmsgs.c:122 ../../sysmsgs.c:124 msgid "Your bio" msgstr "" #: ../../calendar_view.c:297 ../../calendar_view.c:958 #: ../../calendar_view.c:1002 ../../calendar_view.c:1083 #: ../../static/t/sieve/display_one.html:20 msgid "From" msgstr "" #: ../../calendar_view.c:355 ../../calendar_view.c:974 msgid "Starting date:" msgstr "" #: ../../calendar_view.c:361 ../../calendar_view.c:976 msgid "Ending date:" msgstr "" #: ../../calendar_view.c:369 ../../calendar_view.c:1095 msgid "Date/time:" msgstr "" #: ../../calendar_view.c:386 ../../calendar_view.c:980 #: ../../calendar_view.c:1018 ../../calendar_view.c:1105 #: ../../static/t/room/edit/tab_share.html:32 msgid "Notes:" msgstr "" #: ../../calendar_view.c:585 ../../calendar_view.c:721 msgid "previous" msgstr "" #: ../../calendar_view.c:597 ../../calendar_view.c:733 #: ../../calendar_view.c:1308 msgid "next" msgstr "" #: ../../calendar_view.c:756 msgid "Week" msgstr "" #: ../../calendar_view.c:758 msgid "Hours" msgstr "" #: ../../calendar_view.c:759 ../../static/t/sieve/display_one.html:22 #: ../../static/t/msg_listview.html:9 msgid "Subject" msgstr "" #: ../../calendar_view.c:1001 ../../calendar_view.c:1024 msgid "Ongoing event" msgstr "" #: ../../messages.c:70 msgid "ERROR:" msgstr "" #: ../../messages.c:88 msgid "Empty message" msgstr "" #: ../../messages.c:1010 msgid "Cancelled. Message was not posted." msgstr "" #: ../../messages.c:1013 msgid "Automatically cancelled because you have already saved this message." msgstr "" #: ../../messages.c:1037 msgid "Saved to Drafts failed: " msgstr "" #: ../../messages.c:1102 msgid "Refusing to post empty message.\n" msgstr "" #: ../../messages.c:1128 msgid "Message has been saved to Drafts.\n" msgstr "" #: ../../messages.c:1137 msgid "Message has been sent.\n" msgstr "" #: ../../messages.c:1140 msgid "Message has been posted.\n" msgstr "" #: ../../messages.c:1679 msgid "The message was not moved." msgstr "" #: ../../messages.c:1719 #, c-format msgid "An error occurred while retrieving this part: %s/%s\n" msgstr "" #: ../../messages.c:1796 #, c-format msgid "An error occurred while retrieving this part: %s\n" msgstr "" #: ../../messages.c:1956 msgid "Attach signature to email messages?" msgstr "" #: ../../messages.c:1959 msgid "Use this signature:" msgstr "" #: ../../messages.c:1961 msgid "Default character set for email headers:" msgstr "" #: ../../messages.c:1964 msgid "Preferred email address" msgstr "" #: ../../messages.c:1966 msgid "Preferred display name for email messages" msgstr "" #: ../../messages.c:1970 msgid "Preferred display name for bulletin board posts" msgstr "" #: ../../messages.c:1973 msgid "Mailbox view mode" msgstr "" #: ../../inetconf.c:110 ../../inetconf.c:119 ../../inetconf.c:133 #: ../../inetconf.c:159 ../../netconf.c:156 ../../netconf.c:183 #: ../../netconf.c:191 ../../netconf.c:239 ../../netconf.c:247 msgid "Invalid Parameter" msgstr "" #: ../../inetconf.c:126 msgid " has been deleted." msgstr "" #. added status message #: ../../inetconf.c:144 msgid " added." msgstr "" #: ../../who.c:154 msgid "Edit your session display" msgstr "" #: ../../who.c:158 msgid "" "This screen allows you to change the way your session appears in the 'Who is " "online' listing. To turn off any 'fake' name you've previously set, simply " "click the appropriate 'change' button without typing anything in the " "corresponding box. " msgstr "" #: ../../who.c:171 msgid "Room name:" msgstr "" #: ../../who.c:176 msgid "Change room name" msgstr "" #: ../../who.c:180 msgid "Host name:" msgstr "" #: ../../who.c:185 msgid "Change host name" msgstr "" #: ../../who.c:190 ../../static/t/aide/edituser/detailview.html:20 #: ../../static/t/openid_manual_create.html:9 #: ../../static/t/get_logged_in.html:57 ../../static/t/get_logged_in.html:72 msgid "User name:" msgstr "" #: ../../who.c:195 msgid "Change user name" msgstr "" #: ../../siteconfig.c:46 ../../siteconfig.c:64 ../../roomlist.c:44 #: ../../roomlist.c:394 ../../static/t/room/edit/tab_expire.html:72 #: ../../static/t/room/edit/tab_config.html:149 #: ../../static/t/room/edit/tab_access.html:42 msgid "Higher access is required to access this function." msgstr "" #: ../../siteconfig.c:256 msgid "WARNING: Failed to parse Server Config; do you run a to new citserver?" msgstr "" #: ../../siteconfig.c:319 msgid "Your system configuration has been updated." msgstr "" #: ../../wiki.c:69 ../../wiki.c:162 ../../wiki.c:282 #, c-format msgid "There is no room called '%s'." msgstr "" #: ../../wiki.c:76 #, c-format msgid "'%s' is not a Wiki room." msgstr "" #: ../../wiki.c:110 #, c-format msgid "There is no page called '%s' here." msgstr "" #: ../../wiki.c:112 msgid "" "Select the 'Edit this page' link in the room banner if you would like to " "create this page." msgstr "" #: ../../wiki.c:181 ../../static/t/msg_listview.html:11 msgid "Date" msgstr "" #: ../../wiki.c:182 msgid "Author" msgstr "" #: ../../wiki.c:209 ../../wiki.c:218 msgid "(show)" msgstr "" #: ../../wiki.c:211 ../../static/t/navbar.html:145 msgid "Current version" msgstr "" #: ../../wiki.c:223 msgid "(revert)" msgstr "" #: ../../wiki.c:300 msgid "Page title" msgstr "" #: ../../webcit.c:316 msgid "Authorization Required" msgstr "" #: ../../webcit.c:324 #, c-format msgid "" "The resource you requested requires a valid username and password. You could " "not be logged in: %s\n" msgstr "" #: ../../webcit.c:647 ../../auth.c:526 msgid "" "This program was unable to connect or stay connected to the Citadel server. " "Please report this problem to your system administrator." msgstr "" #: ../../webcit.c:654 ../../auth.c:532 msgid "Read More..." msgstr "" #: ../../smtpqueue.c:134 ../../static/t/aide/ignetconf/section.html:5 #: ../../static/t/view_mailq/message.html:2 msgid "(Delete)" msgstr "" #: ../../smtpqueue.c:334 msgid "First Attempt pending" msgstr "" #: ../../roomlist.c:99 msgid "My Folders" msgstr "" #: ../../downloads.c:289 #, c-format msgid "An error occurred while retrieving this file: %s\n" msgstr "" #: ../../roomtokens.c:572 msgid "file" msgstr "" #: ../../roomtokens.c:574 msgid "files" msgstr "" #: ../../summary.c:128 msgid "(None)" msgstr "" #: ../../summary.c:184 msgid "(Nothing)" msgstr "" #: ../../msg_renderers.c:579 ../../static/t/who/bio.html:15 msgid "edit" msgstr "" #: ../../msg_renderers.c:1119 msgid "I don't know how to display " msgstr "" #: ../../msg_renderers.c:1353 msgid "(no subject)" msgstr "" #: ../../addressbook_popup.c:186 msgid "Add" msgstr "" #. an erased user #: ../../auth.c:30 ../../static/t/aide/edituser/detailview.html:43 #: ../../static/t/aide/siteconfig/tab_access.html:40 #: ../../static/t/aide/siteconfig/tab_access.html:51 msgid "Deleted" msgstr "" #. a new user #: ../../auth.c:33 ../../static/t/aide/edituser/detailview.html:44 #: ../../static/t/aide/siteconfig/tab_access.html:41 #: ../../static/t/aide/siteconfig/tab_access.html:52 #: ../../static/t/get_logged_in.html:79 msgid "New User" msgstr "" #. a trouble maker #: ../../auth.c:36 ../../static/t/aide/edituser/detailview.html:45 #: ../../static/t/aide/siteconfig/tab_access.html:42 #: ../../static/t/aide/siteconfig/tab_access.html:53 msgid "Problem User" msgstr "" #. user with normal privileges #: ../../auth.c:39 ../../static/t/aide/edituser/detailview.html:46 #: ../../static/t/aide/siteconfig/tab_access.html:43 #: ../../static/t/aide/siteconfig/tab_access.html:54 msgid "Local User" msgstr "" #. a user that may access network resources #: ../../auth.c:42 ../../static/t/aide/edituser/detailview.html:47 #: ../../static/t/aide/siteconfig/tab_access.html:44 #: ../../static/t/aide/siteconfig/tab_access.html:55 msgid "Network User" msgstr "" #. a moderator #: ../../auth.c:45 ../../static/t/aide/edituser/detailview.html:48 #: ../../static/t/aide/siteconfig/tab_access.html:45 #: ../../static/t/aide/siteconfig/tab_access.html:56 msgid "Preferred User" msgstr "" #. chief #: ../../auth.c:48 ../../static/t/aide/edituser/detailview.html:49 #: ../../static/t/aide/siteconfig/tab_access.html:46 #: ../../static/t/aide/siteconfig/tab_access.html:57 msgid "Admin" msgstr "" #: ../../auth.c:513 ../../static/t/iconbar.html:80 #: ../../static/t/confirmlogoff.html:3 #: ../../static/t/menu/basic_commands.html:19 msgid "Log off" msgstr "" #: ../../auth.c:537 msgid "Log in again" msgstr "" #: ../../auth.c:585 ../../static/t/aide/usermanagement.html:3 msgid "Validate new users" msgstr "" #: ../../auth.c:605 msgid "No users require validation at this time." msgstr "" #: ../../auth.c:655 msgid "very weak" msgstr "" #: ../../auth.c:658 msgid "weak" msgstr "" #: ../../auth.c:661 msgid "ok" msgstr "" #: ../../auth.c:665 msgid "strong" msgstr "" #: ../../auth.c:683 #, c-format msgid "Current access level: %d (%s)\n" msgstr "" #: ../../auth.c:691 msgid "Select access level for this user:" msgstr "" #: ../../auth.c:776 ../../static/t/menu/your_info.html:4 msgid "Change your password" msgstr "" #: ../../auth.c:800 msgid "Enter new password:" msgstr "" #: ../../auth.c:804 msgid "Enter it again to confirm:" msgstr "" #: ../../auth.c:810 msgid "Change password" msgstr "" #: ../../auth.c:830 msgid "Cancelled. Password was not changed." msgstr "" #: ../../auth.c:839 msgid "They don't match. Password was not changed." msgstr "" #: ../../auth.c:845 msgid "Blank passwords are not allowed." msgstr "" #: ../../openid.c:34 msgid "Manage Account/OpenID Associations" msgstr "" #: ../../openid.c:52 msgid "Do you really want to delete this OpenID?" msgstr "" #: ../../openid.c:53 msgid "(delete)" msgstr "" #: ../../openid.c:61 msgid "Add an OpenID: " msgstr "" #: ../../openid.c:64 msgid "Attach" msgstr "" #: ../../openid.c:68 #, c-format msgid "%s does not permit authentication via OpenID." msgstr "" #: ../../html2html.c:136 #, c-format msgid "realloc() error! couldn't get %d bytes: %s" msgstr "" #: ../../static/t/viewomatic.html:4 msgid "View as:" msgstr "" #: ../../static/t/sieve/list.html:32 ../../static/t/sieve/none.html:4 #: ../../static/t/menu/your_info.html:7 msgid "View/edit server-side mail filters" msgstr "" #: ../../static/t/sieve/list.html:41 msgid "When new mail arrives: " msgstr "" #: ../../static/t/sieve/list.html:43 msgid "Leave it in my inbox without filtering" msgstr "" #: ../../static/t/sieve/list.html:44 msgid "Filter it according to rules selected below" msgstr "" #: ../../static/t/sieve/list.html:45 msgid "Filter it through a manually edited script (advanced users only)" msgstr "" #: ../../static/t/sieve/list.html:52 msgid "Your incoming mail will not be filtered through any scripts." msgstr "" #: ../../static/t/sieve/list.html:64 msgid "Add rule" msgstr "" #: ../../static/t/sieve/list.html:71 msgid "The currently active script is: " msgstr "" #: ../../static/t/sieve/list.html:76 ../../static/t/sieve/add.html:3 msgid "Add or delete scripts" msgstr "" #: ../../static/t/sieve/display_one.html:16 msgid "If" msgstr "" #: ../../static/t/sieve/display_one.html:21 msgid "To or Cc" msgstr "" #: ../../static/t/sieve/display_one.html:23 msgid "Reply-to" msgstr "" #: ../../static/t/sieve/display_one.html:24 #: ../../static/t/msg_listview.html:10 #: ../../static/t/view_mailq/header.html:27 msgid "Sender" msgstr "" #: ../../static/t/sieve/display_one.html:25 msgid "Resent-From" msgstr "" #: ../../static/t/sieve/display_one.html:26 msgid "Resent-To" msgstr "" #: ../../static/t/sieve/display_one.html:27 msgid "Envelope From" msgstr "" #: ../../static/t/sieve/display_one.html:28 msgid "Envelope To" msgstr "" #: ../../static/t/sieve/display_one.html:29 msgid "X-Mailer" msgstr "" #: ../../static/t/sieve/display_one.html:30 msgid "X-Spam-Flag" msgstr "" #: ../../static/t/sieve/display_one.html:31 msgid "X-Spam-Status" msgstr "" #: ../../static/t/sieve/display_one.html:32 msgid "List-ID" msgstr "" #: ../../static/t/sieve/display_one.html:33 msgid "Message size" msgstr "" #: ../../static/t/sieve/display_one.html:34 #: ../../static/t/select_messageindex_all.html:1 msgid "All" msgstr "" #: ../../static/t/sieve/display_one.html:41 msgid "contains" msgstr "" #: ../../static/t/sieve/display_one.html:42 msgid "does not contain" msgstr "" #: ../../static/t/sieve/display_one.html:43 msgid "is" msgstr "" #: ../../static/t/sieve/display_one.html:44 msgid "is not" msgstr "" #: ../../static/t/sieve/display_one.html:45 msgid "matches" msgstr "" #: ../../static/t/sieve/display_one.html:46 msgid "does not match" msgstr "" #: ../../static/t/sieve/display_one.html:52 msgid "(All messages)" msgstr "" #: ../../static/t/sieve/display_one.html:56 msgid "is larger than" msgstr "" #: ../../static/t/sieve/display_one.html:57 msgid "is smaller than" msgstr "" #: ../../static/t/sieve/display_one.html:59 msgid "bytes" msgstr "" #: ../../static/t/sieve/display_one.html:65 msgid "Keep" msgstr "" #: ../../static/t/sieve/display_one.html:66 msgid "Discard silently" msgstr "" #: ../../static/t/sieve/display_one.html:67 msgid "Reject" msgstr "" #: ../../static/t/sieve/display_one.html:68 msgid "Move message to" msgstr "" #: ../../static/t/sieve/display_one.html:69 msgid "Forward to" msgstr "" #: ../../static/t/sieve/display_one.html:70 msgid "Vacation" msgstr "" #: ../../static/t/sieve/display_one.html:82 msgid "Message:" msgstr "" #: ../../static/t/sieve/display_one.html:90 msgid "and then" msgstr "" #: ../../static/t/sieve/display_one.html:93 msgid "continue processing" msgstr "" #: ../../static/t/sieve/display_one.html:94 msgid "stop" msgstr "" #: ../../static/t/sieve/none.html:9 msgid "" "This installation of Citadel was built without support for server-side mail " "filtering.
    Please contact your system administrator if you require this " "feature.
    " msgstr "" #: ../../static/t/sieve/add.html:9 msgid "Add a new script" msgstr "" #: ../../static/t/sieve/add.html:10 msgid "" "To create a new script, enter the desired script name in the box below and " "click 'Create'." msgstr "" #: ../../static/t/sieve/add.html:14 msgid "Script name: " msgstr "" #: ../../static/t/sieve/add.html:18 msgid "Edit scripts" msgstr "" #: ../../static/t/sieve/add.html:20 msgid "Return to the script editing screen" msgstr "" #: ../../static/t/sieve/add.html:23 msgid "Delete scripts" msgstr "" #: ../../static/t/sieve/add.html:24 msgid "" "To delete an existing script, select the script name from the list and click " "'Delete'." msgstr "" #: ../../static/t/msg/confirm_move.html:4 msgid "Confirm move of message" msgstr "" #: ../../static/t/msg/confirm_move.html:12 msgid "Move this message to:" msgstr "" #: ../../static/t/login.html:5 msgid "powered by" msgstr "" #: ../../static/t/login.html:15 ../../static/t/iconbar.html:88 #: ../../static/t/get_logged_in.html:64 ../../static/t/get_logged_in.html:88 #: ../../static/t/get_logged_in.html:93 ../../static/t/get_logged_in.html:98 #: ../../static/t/get_logged_in.html:107 msgid "Log in" msgstr "" #: ../../static/t/trailing.html:14 msgid "" "WARNING: You have JavaScript disabled in your web browser. Many functions " "of this system will not work properly." msgstr "" #: ../../static/t/view_submessage.html:4 #: ../../static/t/view_message/replyquote.html:3 #: ../../static/t/view_message/replyquote.html:7 #: ../../static/t/view_message/print.html:8 ../../static/t/view_message.html:7 msgid "from " msgstr "" #: ../../static/t/searchomatic.html:4 msgid "Search: " msgstr "" #: ../../static/t/listsub/display.html:16 msgid "You are subscribing " msgstr "" #: ../../static/t/listsub/display.html:17 msgid " to the " msgstr "" #: ../../static/t/listsub/display.html:18 msgid " mailing list." msgstr "" #: ../../static/t/listsub/display.html:19 msgid "" "The listserver has sent you an e-mail with one additional Web link for you " "to click on to confirm your subscription." msgstr "" #: ../../static/t/listsub/display.html:20 msgid "" "This extra step is for your protection, as it prevents others from being " "able to subscribe you to lists without your consent." msgstr "" #: ../../static/t/listsub/display.html:22 msgid "" "Please click on the link which is being e-mailed to you and your " "subscription will be confirmed." msgstr "" #: ../../static/t/listsub/display.html:27 #: ../../static/t/listsub/display.html:47 msgid "ERROR" msgstr "" #: ../../static/t/listsub/display.html:35 msgid "You are unsubscribing" msgstr "" #: ../../static/t/listsub/display.html:37 msgid "from the" msgstr "" #: ../../static/t/listsub/display.html:39 msgid "mailing list." msgstr "" #: ../../static/t/listsub/display.html:40 msgid "" "The listserver has sent you an e-mail with one additional Web link for you " "to click on to confirm your unsubscription." msgstr "" #: ../../static/t/listsub/display.html:41 msgid "" "This extra step is for your protection, as it prevents others from being " "able to unsubscribe you from lists without your consent." msgstr "" #: ../../static/t/listsub/display.html:43 msgid "" "Please click on the link which is being e-mailed to you and your " "unsubscription will be confirmed." msgstr "" #: ../../static/t/listsub/display.html:44 msgid "Back..." msgstr "" #: ../../static/t/listsub/display.html:54 msgid "Confirmation successful!" msgstr "" #: ../../static/t/listsub/display.html:56 msgid "Confirmation failed." msgstr "" #: ../../static/t/listsub/display.html:57 msgid "This could mean one of two things:" msgstr "" #: ../../static/t/listsub/display.html:59 msgid "" "You waited too long to confirm your subscribe/unsubscribe request (the " "confirmation link is only valid for three days)" msgstr "" #: ../../static/t/listsub/display.html:60 msgid "" "You have already successfully confirmed your subscribe/unsubscribe " "request and are attempting to do it again." msgstr "" #: ../../static/t/listsub/display.html:62 msgid "The error returned by the server was: " msgstr "" #: ../../static/t/listsub/display.html:70 msgid "Name of list:" msgstr "" #: ../../static/t/listsub/display.html:75 msgid "Your e-mail address:" msgstr "" #: ../../static/t/listsub/display.html:79 msgid "(If subscribing) preferred format: " msgstr "" #: ../../static/t/listsub/display.html:80 msgid "One message at a time" msgstr "" #: ../../static/t/listsub/display.html:81 msgid "Digest format" msgstr "" #: ../../static/t/listsub/display.html:89 msgid "" "When you attempt to subscribe or unsubscribe to a mailing list, you will " "receive an e-mail containing one additional web link to click on for final " "confirmation." msgstr "" #: ../../static/t/listsub/display.html:90 msgid "" "This extra step is for your protection, as it prevents others from being " "able to subscribe or unsubscribe you to lists." msgstr "" #: ../../static/t/floors_edit_one.html:11 msgid "(delete floor)" msgstr "" #: ../../static/t/floors_edit_one.html:13 msgid "(edit graphic)" msgstr "" #: ../../static/t/floors.html:4 msgid "Add/change/delete floors" msgstr "" #: ../../static/t/floors.html:10 msgid "Floor number" msgstr "" #: ../../static/t/floors.html:11 msgid "Floor name" msgstr "" #: ../../static/t/floors.html:12 msgid "Number of rooms" msgstr "" #: ../../static/t/floors.html:13 msgid "Floor CSS" msgstr "" #: ../../static/t/files.html:4 msgid "Files available for download in" msgstr "" #: ../../static/t/files.html:9 msgid "Upload a file:" msgstr "" #: ../../static/t/files.html:30 msgid "Filename" msgstr "" #: ../../static/t/files.html:31 msgid "Size" msgstr "" #: ../../static/t/files.html:32 msgid "Content" msgstr "" #: ../../static/t/files.html:33 msgid "Description" msgstr "" #: ../../static/t/edit_message.html:9 ../../static/t/iconbar.html:50 #: ../../static/t/iconbar.html:59 msgid "Loading" msgstr "" #: ../../static/t/edit_message.html:23 msgid "from" msgstr "" #: ../../static/t/edit_message.html:29 ../../static/t/edit_message.html:38 msgid "Anonymous" msgstr "" #: ../../static/t/edit_message.html:47 msgid "in" msgstr "" #: ../../static/t/edit_message.html:51 msgid "To:" msgstr "" #: ../../static/t/edit_message.html:57 #: ../../static/t/view_message/print.html:15 #: ../../static/t/view_message.html:15 msgid "CC:" msgstr "" #: ../../static/t/edit_message.html:63 msgid "BCC:" msgstr "" #: ../../static/t/edit_message.html:71 msgid "Subject (optional):" msgstr "" #: ../../static/t/edit_message.html:71 #: ../../static/t/view_message/replyquote.html:8 #: ../../static/t/view_message/print.html:16 #: ../../static/t/view_message.html:16 msgid "Subject:" msgstr "" #: ../../static/t/edit_message.html:86 msgid "--- forwarded message ---" msgstr "" #: ../../static/t/edit_message.html:110 msgid "Post message" msgstr "" #: ../../static/t/edit_message.html:118 msgid "Save to Drafts" msgstr "" #: ../../static/t/edit_message.html:126 #: ../../static/t/edit_message/attachments_pane.html:5 msgid "Attachments:" msgstr "" #: ../../static/t/aide/display_serverrestart_page.html:4 msgid "Message to your Users:" msgstr "" #: ../../static/t/aide/display_generic_result.html:2 msgid "Server command results" msgstr "" #: ../../static/t/aide/display_generic_result.html:18 msgid "Enter another command" msgstr "" #: ../../static/t/aide/display_generic_result.html:19 msgid "Return to menu" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:3 msgid "Site configuration" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:6 #: ../../static/t/aide/edituser/select.html:9 msgid "You need to be aide to view this." msgstr "" #: ../../static/t/aide/display_sitewide_config.html:11 msgid "General" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:12 msgid "Access" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:13 msgid "Network" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:14 msgid "Tuning" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:15 msgid "Directory" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:16 msgid "Auto-purger" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:17 msgid "Indexing/Journaling" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:18 #: ../../static/t/aide/siteconfig/tab_pushmail.html:1 msgid "Push Email" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:19 msgid "Pop3" msgstr "" #: ../../static/t/aide/usermanagement.html:2 msgid "Add, change, delete user accounts" msgstr "" #: ../../static/t/aide/display_inetconf.html:5 #: ../../static/t/aide/display_menu.html:5 msgid "System Administration Menu" msgstr "" #: ../../static/t/aide/display_inetconf.html:6 #: ../../static/t/aide/display_menu.html:6 msgid "Room Admin Menu" msgstr "" #: ../../static/t/aide/display_inetconf.html:13 msgid "Local host aliases" msgstr "" #: ../../static/t/aide/display_inetconf.html:14 msgid "Directory domains" msgstr "" #: ../../static/t/aide/display_inetconf.html:15 msgid "Smart hosts" msgstr "" #: ../../static/t/aide/display_inetconf.html:16 msgid "Fallback smart hosts" msgstr "" #: ../../static/t/aide/display_inetconf.html:17 msgid "Notification hosts" msgstr "" #: ../../static/t/aide/display_inetconf.html:22 msgid "RBL hosts" msgstr "" #: ../../static/t/aide/display_inetconf.html:23 msgid "SpamAssassin hosts" msgstr "" #: ../../static/t/aide/display_inetconf.html:24 msgid "ClamAV clamd hosts" msgstr "" #: ../../static/t/aide/display_inetconf.html:25 msgid "Masqueradable domains" msgstr "" #: ../../static/t/aide/edituser/select.html:5 msgid "Edit or delete users" msgstr "" #: ../../static/t/aide/edituser/select.html:17 msgid "Add users" msgstr "" #: ../../static/t/aide/edituser/select.html:20 msgid "Edit or Delete users" msgstr "" #: ../../static/t/aide/edituser/box_select.html:1 msgid "" "To edit an existing user account, select the user name from the list and " "click 'Edit'." msgstr "" #: ../../static/t/aide/edituser/detailview.html:4 msgid "Edit user account: " msgstr "" #: ../../static/t/aide/edituser/detailview.html:24 #: ../../static/t/room/edit/tab_feed.html:14 msgid "Password" msgstr "" #: ../../static/t/aide/edituser/detailview.html:28 msgid "Permission to send Internet mail" msgstr "" #: ../../static/t/aide/edituser/detailview.html:32 msgid "Number of logins" msgstr "" #: ../../static/t/aide/edituser/detailview.html:36 msgid "Messages submitted" msgstr "" #: ../../static/t/aide/edituser/detailview.html:40 msgid "Access level" msgstr "" #: ../../static/t/aide/edituser/detailview.html:54 msgid "User ID number" msgstr "" #: ../../static/t/aide/edituser/detailview.html:58 msgid "Date and time of last login" msgstr "" #: ../../static/t/aide/edituser/detailview.html:68 msgid "Auto-purge after this many days" msgstr "" #: ../../static/t/aide/edituser/add.html:1 msgid "" "To create a new user account, enter the desired user name in the box below " "and click 'Create'." msgstr "" #: ../../static/t/aide/edituser/add.html:5 msgid "New user: " msgstr "" #: ../../static/t/aide/display_generic_cmd.html:4 msgid "Enter a server command" msgstr "" #: ../../static/t/aide/display_generic_cmd.html:12 msgid "" "This screen allows you to enter Citadel server commands which are not " "supported by WebCit. If you do not know what that means, then this screen " "will not be of much use to you." msgstr "" #: ../../static/t/aide/display_generic_cmd.html:15 msgid "Enter command:" msgstr "" #: ../../static/t/aide/display_generic_cmd.html:17 msgid "Command input (if requesting SEND_LISTING transfer mode):" msgstr "" #: ../../static/t/aide/display_generic_cmd.html:20 msgid "Detected host header is " msgstr "" #: ../../static/t/aide/display_ignetconf.html:4 msgid "Network configuration" msgstr "" #: ../../static/t/aide/display_ignetconf.html:10 #: ../../static/t/aide/ignetconf/edit_node.html:5 #: ../../static/t/aide/ignetconf/add.html:5 msgid "Add a new node" msgstr "" #: ../../static/t/aide/display_ignetconf.html:14 msgid "Currently configured nodes" msgstr "" #: ../../static/t/aide/display_serverrestart.html:26 msgid "Restart Citadel" msgstr "" #: ../../static/t/aide/floorconfig.html:2 msgid "Add, change, or delete floors" msgstr "" #: ../../static/t/aide/serverrestart/box.html:3 msgid "Please wait while the Citadel server is restarted... " msgstr "" #: ../../static/t/aide/serverrestart/box_page_do.html:3 msgid "" "Please wait while your users are being paged, the citadel server will be " "restarted after that... " msgstr "" #: ../../static/t/aide/inet/masqdomains.html:2 msgid "(Domains as which users are allowed to masquerade)" msgstr "" #: ../../static/t/aide/inet/rbldns.html:2 msgid "(hosts running a Realtime Blackhole List)" msgstr "" #: ../../static/t/aide/inet/dirnames.html:2 msgid "(domains mapped with the Global Address Book)" msgstr "" #: ../../static/t/aide/inet/notify.html:2 msgid "(URLS for notifications when users receive new mails; )" msgstr "" #: ../../static/t/aide/inet/notify.html:2 msgid "Syntax: Notificationtemplatename:http[s]://user:password@hostname/path" msgstr "" #: ../../static/t/aide/inet/smarthosts.html:2 msgid "(if present, forward all outbound mail to one of these hosts)" msgstr "" #: ../../static/t/aide/inet/aliases.html:2 msgid "(domains for which this host receives mail)" msgstr "" #: ../../static/t/aide/inet/clamav.html:2 msgid "(hosts running the ClamAV clamd service)" msgstr "" #: ../../static/t/aide/inet/spamass.html:2 msgid "(hosts running the SpamAssassin service)" msgstr "" #: ../../static/t/aide/inet/fallbackhosts.html:2 msgid "(send outbound mail to these hosts only when direct delivery fails)" msgstr "" #: ../../static/t/aide/ignetconf/display_confirm_delete.html:5 msgid "Confirm delete" msgstr "" #: ../../static/t/aide/ignetconf/display_confirm_delete.html:11 msgid "Are you sure you want to delete " msgstr "" #: ../../static/t/aide/ignetconf/display_confirm_delete.html:14 #: ../../static/t/prefs/box.html:198 ../../static/t/iconbar/edit.html:19 #: ../../static/t/iconbar/edit.html:26 ../../static/t/iconbar/edit.html:32 #: ../../static/t/iconbar/edit.html:39 ../../static/t/iconbar/edit.html:45 #: ../../static/t/iconbar/edit.html:52 ../../static/t/iconbar/edit.html:58 #: ../../static/t/iconbar/edit.html:64 ../../static/t/iconbar/edit.html:70 #: ../../static/t/iconbar/edit.html:76 ../../static/t/iconbar/edit.html:82 #: ../../static/t/iconbar/edit.html:88 msgid "Yes" msgstr "" #: ../../static/t/aide/ignetconf/display_confirm_delete.html:16 #: ../../static/t/prefs/box.html:200 ../../static/t/iconbar/edit.html:20 #: ../../static/t/iconbar/edit.html:27 ../../static/t/iconbar/edit.html:33 #: ../../static/t/iconbar/edit.html:40 ../../static/t/iconbar/edit.html:46 #: ../../static/t/iconbar/edit.html:53 ../../static/t/iconbar/edit.html:59 #: ../../static/t/iconbar/edit.html:65 ../../static/t/iconbar/edit.html:71 #: ../../static/t/iconbar/edit.html:77 ../../static/t/iconbar/edit.html:83 #: ../../static/t/iconbar/edit.html:89 msgid "No" msgstr "" #: ../../static/t/aide/ignetconf/edit_node.html:15 #: ../../static/t/aide/ignetconf/add.html:15 #: ../../static/t/aide/siteconfig/tab_general.html:8 msgid "Node name" msgstr "" #: ../../static/t/aide/ignetconf/edit_node.html:17 #: ../../static/t/aide/ignetconf/add.html:17 msgid "Shared secret" msgstr "" #: ../../static/t/aide/ignetconf/edit_node.html:19 #: ../../static/t/aide/ignetconf/add.html:19 msgid "Host or IP address" msgstr "" #: ../../static/t/aide/ignetconf/edit_node.html:21 #: ../../static/t/aide/ignetconf/add.html:21 msgid "Port number" msgstr "" #: ../../static/t/aide/ignetconf/section.html:4 msgid "(Edit)" msgstr "" #: ../../static/t/aide/display_menu.html:12 msgid "Global Configuration" msgstr "" #: ../../static/t/aide/display_menu.html:14 msgid "User account management" msgstr "" #: ../../static/t/aide/display_menu.html:16 msgid "Shutdown Citadel" msgstr "" #: ../../static/t/aide/display_menu.html:18 msgid "Rooms and Floors" msgstr "" #: ../../static/t/aide/global_config.html:2 msgid "Edit site-wide configuration" msgstr "" #: ../../static/t/aide/global_config.html:3 msgid "Domain names and Internet mail configuration" msgstr "" #: ../../static/t/aide/global_config.html:4 msgid "Configure replication with other Citadel servers" msgstr "" #: ../../static/t/aide/global_config.html:5 #: ../../static/t/view_mailq/header.html:3 msgid "View the outbound SMTP queue" msgstr "" #: ../../static/t/aide/restart.html:2 msgid "Restart Now" msgstr "" #: ../../static/t/aide/restart.html:3 msgid "Restart after paging users" msgstr "" #: ../../static/t/aide/restart.html:4 msgid "Restart when all users are idle" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:1 msgid "General site configuration items" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:5 msgid "Change Login Logo" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:6 msgid "Change Logout Logo" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:11 msgid "Fully qualified domain name" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:14 msgid "Human-readable node name" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:17 msgid "Telephone number" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:20 msgid "Paginator prompt (for text mode clients)" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:23 msgid "Geographic location of this system" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:26 msgid "Name of system administrator" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:29 msgid "Default timezone for unzoned calendar items" msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:1 msgid "Configure automatic expiry of old messages" msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:2 msgid "These settings may be overridden on a per-floor or per-room basis." msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:6 msgid "Hour to run database auto-purge" msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:66 msgid "Default message expire policy for public rooms" msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:68 #: ../../static/t/aide/siteconfig/tab_autopurger.html:86 #: ../../static/t/room/edit/tab_expire.html:17 #: ../../static/t/room/edit/tab_expire.html:45 msgid "Never automatically expire messages" msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:71 #: ../../static/t/aide/siteconfig/tab_autopurger.html:89 #: ../../static/t/room/edit/tab_expire.html:20 #: ../../static/t/room/edit/tab_expire.html:48 msgid "Expire by message count" msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:73 #: ../../static/t/aide/siteconfig/tab_autopurger.html:92 #: ../../static/t/room/edit/tab_expire.html:23 #: ../../static/t/room/edit/tab_expire.html:51 msgid "Expire by message age" msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:75 #: ../../static/t/aide/siteconfig/tab_autopurger.html:94 #: ../../static/t/room/edit/tab_expire.html:25 #: ../../static/t/room/edit/tab_expire.html:53 msgid "Number of messages or days: " msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:81 msgid "Default message expire policy for private mailboxes" msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:83 msgid "Same policy as public rooms" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:1 msgid "Network services" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:2 #: ../../static/t/aide/siteconfig/tab_directory.html:3 msgid "" "Changes made on this screen will not take effect until you restart the " "Citadel server." msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:6 msgid "SMTP MTA port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:9 msgid "Correct forged From: lines during authenticated SMTP" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:12 msgid "Flag message as spam, instead of rejecting it" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:15 msgid "IMAP listener port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:19 msgid "Network run frequency (in seconds)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:22 msgid "Server IP address (0.0.0.0 for 'any')" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:25 msgid "SMTP MSA port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:28 msgid "IMAP over SSL port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:31 msgid "SMTP over SSL port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:34 msgid "Instantly expunge deleted messages in IMAP" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:38 msgid "Allow unauthenticated SMTP clients to spoof this sites domains" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:41 msgid "Postfix TCP Dictionary Port" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:41 msgid "-1 to disable" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:44 msgid "ManageSieve Port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:47 msgid "Perform RBL checks upon connect instead of after RCPT" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:50 msgid "Keep original from headers in IMAP" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:53 msgid "XMPP (Jabber) client to server port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:56 msgid "XMPP (Jabber) server to server port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_pop3.html:1 msgid "POP3" msgstr "" #: ../../static/t/aide/siteconfig/tab_pop3.html:6 msgid "POP3 listener port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_pop3.html:9 msgid "POP3 over SSL port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_pop3.html:12 msgid "POP3 fetch frequency in seconds" msgstr "" #: ../../static/t/aide/siteconfig/tab_pop3.html:15 msgid "POP3 fastest fetch frequency in seconds" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:1 msgid "Advanced server fine-tuning controls" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:5 msgid "Server connection idle timeout (in seconds)" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:8 msgid "Maximum concurrent sessions (0 = no limit)" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:11 msgid "Default user purge time (days)" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:14 msgid "Default room purge time (days)" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:17 msgid "Maximum message length" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:20 msgid "Minimum number of worker threads" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:23 msgid "Maximum number of worker threads" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:26 msgid "Automatically delete committed database logs" msgstr "" #: ../../static/t/aide/siteconfig/tab_pushmail.html:5 msgid "Funambol server host (blank to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_pushmail.html:8 msgid "Funambol server port " msgstr "" #: ../../static/t/aide/siteconfig/tab_pushmail.html:11 msgid "Funambol sync source" msgstr "" #: ../../static/t/aide/siteconfig/tab_pushmail.html:14 msgid "Funambol auth details (user:pass)" msgstr "" #: ../../static/t/aide/siteconfig/tab_pushmail.html:17 msgid "External pager tool (blank to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:1 msgid "Access controls and site policy settings" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:5 msgid "Allow aides to zap (forget) rooms" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:9 msgid "Quarantine messages from problem users" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:12 msgid "Name of quarantine room" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:17 msgid "Name of room to log pages" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:22 msgid "Authentication mode" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:24 msgid "Self contained" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:25 msgid "Host based" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:26 msgid "LDAP (RFC2307)" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:27 msgid "LDAP (Active Directory)" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:30 msgid "Master user name (blank to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:33 msgid "Master user password" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:38 msgid "Initial access level for new users" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:49 msgid "Access level required to create rooms" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:60 msgid "Automatically grant room-aide status to users who create private rooms" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:63 msgid "Automatically grant room-aide status to users who create BLOG rooms" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:66 msgid "Restrict access to Internet mail" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:71 msgid "Disable self-service user account creation" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:71 msgid "Hint: do not select both!" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:74 msgid "Require registration for new users" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:77 msgid "Allow anonymous guest access" msgstr "" #: ../../static/t/aide/siteconfig/tab_indexing.html:1 msgid "Indexing and Journaling" msgstr "" #: ../../static/t/aide/siteconfig/tab_indexing.html:2 msgid "Warning: these facilities are resource intensive." msgstr "" #: ../../static/t/aide/siteconfig/tab_indexing.html:6 msgid "Enable full text index" msgstr "" #: ../../static/t/aide/siteconfig/tab_indexing.html:9 msgid "Perform journaling of email messages" msgstr "" #: ../../static/t/aide/siteconfig/tab_indexing.html:13 msgid "Perform journaling of non-email messages" msgstr "" #: ../../static/t/aide/siteconfig/tab_indexing.html:16 msgid "Email destination of journalized messages" msgstr "" #: ../../static/t/aide/siteconfig/tab_directory.html:1 msgid "Configure the LDAP connector for Citadel" msgstr "" #: ../../static/t/aide/siteconfig/tab_directory.html:4 msgid "" "NOTE: This Citadel server has been built without LDAP support. These " "options will have no effect." msgstr "" #: ../../static/t/aide/siteconfig/tab_directory.html:9 msgid "Host name of LDAP server (blank to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_directory.html:13 msgid "Port number of LDAP server (blank to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_directory.html:16 msgid "Base DN" msgstr "" #: ../../static/t/aide/siteconfig/tab_directory.html:19 msgid "Bind DN" msgstr "" #: ../../static/t/aide/siteconfig/tab_directory.html:22 msgid "Password for bind DN" msgstr "" #: ../../static/t/iconbar.html:7 msgid "Language:" msgstr "" #: ../../static/t/iconbar.html:19 msgid "Mail" msgstr "" #: ../../static/t/iconbar.html:39 ../../static/t/iconbar/edit.html:61 #: ../../static/t/summary/page.html:30 msgid "Tasks" msgstr "" #: ../../static/t/iconbar.html:48 ../../static/t/iconbar/edit.html:67 msgid "Rooms" msgstr "" #: ../../static/t/iconbar.html:57 msgid "Online users" msgstr "" #: ../../static/t/iconbar.html:62 ../../static/t/iconbar/edit.html:79 msgid "Chat" msgstr "" #: ../../static/t/iconbar.html:65 msgid "Advanced" msgstr "" #: ../../static/t/iconbar.html:72 ../../static/t/room/edit/editroom.html:4 #: ../../static/t/room/edit.html:5 msgid "Administration" msgstr "" #: ../../static/t/iconbar.html:83 msgid "customize this menu" msgstr "" #: ../../static/t/iconbar.html:92 msgid "switch to room list" msgstr "" #: ../../static/t/iconbar.html:93 msgid "switch to menu" msgstr "" #: ../../static/t/iconbar.html:94 msgid "My folders" msgstr "" #: ../../static/t/view_message/list_attach.html:3 #: ../../static/t/view_message/inline_attach.html:4 msgid "View" msgstr "" #: ../../static/t/view_message/list_attach.html:4 #: ../../static/t/view_message/inline_attach.html:5 msgid "Download" msgstr "" #: ../../static/t/view_message/print.html:14 #: ../../static/t/view_message.html:14 msgid "to" msgstr "" #: ../../static/t/openid_manual_create.html:2 msgid "Your OpenID" msgstr "" #: ../../static/t/openid_manual_create.html:2 msgid "was successfully verified." msgstr "" #: ../../static/t/openid_manual_create.html:3 msgid "However, the user name" msgstr "" #: ../../static/t/openid_manual_create.html:3 msgid "conflicts with an existing user." msgstr "" #: ../../static/t/openid_manual_create.html:5 msgid "Please specify the user name you would like to use." msgstr "" #: ../../static/t/files/graphicsupload.html:2 msgid "Image upload" msgstr "" #: ../../static/t/files/graphicsupload.html:6 msgid "You can upload an image directly from your computer" msgstr "" #: ../../static/t/files/graphicsupload.html:8 msgid "Please select a file to upload:" msgstr "" #: ../../static/t/files/section_onefile.html:20 msgid "Slideshow" msgstr "" #: ../../static/t/roombanner.html:10 ../../static/t/roombanner.html:11 msgid "new of" msgstr "" #: ../../static/t/roombanner.html:10 ../../static/t/roombanner.html:11 #: ../../static/t/msg_listselector_bottom.html:7 #: ../../static/t/msg_listselector_top.html:7 msgid "messages" msgstr "" #: ../../static/t/roombanner.html:28 msgid "Select page: " msgstr "" #: ../../static/t/who.html:13 msgid "Users currently on " msgstr "" #: ../../static/t/who.html:22 msgid "Click on a name to read user info. Click on" msgstr "" #: ../../static/t/who.html:24 msgid "to send an instant message to that user." msgstr "" #: ../../static/t/msg_listselector_bottom.html:2 #: ../../static/t/msg_listselector_top.html:2 msgid "Reading #" msgstr "" #: ../../static/t/msg_listselector_bottom.html:12 #: ../../static/t/msg_listselector_top.html:12 msgid "oldest to newest" msgstr "" #: ../../static/t/msg_listselector_bottom.html:20 #: ../../static/t/msg_listselector_top.html:20 msgid "newest to oldest" msgstr "" #: ../../static/t/newstartpage.html:4 msgid "New start page" msgstr "" #: ../../static/t/newstartpage.html:9 msgid "Your start page has been changed." msgstr "" #: ../../static/t/newstartpage.html:12 msgid "" "(Note: this does not change your browser's home page. It changes the page " "you begin on when you log on to" msgstr "" #: ../../static/t/no_new_msgs.html:3 msgid "No new messages." msgstr "" #: ../../static/t/view_blog/comment_box.html:8 msgid "Post a comment" msgstr "" #: ../../static/t/prefs/pushemail.html:2 msgid "Configure Push Email" msgstr "" #: ../../static/t/prefs/pushemail.html:9 msgid "Push email and SMS settings" msgstr "" #: ../../static/t/prefs/pushemail.html:17 msgid "" "If your administrator has enabled the functionality, Citadel can notify a " "Funambol server that you haved recieved new email and automatically " "syncronize any devices you have with the Funambol client installed." msgstr "" #: ../../static/t/prefs/pushemail.html:20 msgid "" "Alternatively, if the administrator has configured it, Citadel can send a " "text message to you when new mail arrives." msgstr "" #: ../../static/t/prefs/pushemail.html:26 msgid "Notify Funambol server" msgstr "" #: ../../static/t/prefs/pushemail.html:31 msgid "Send a text message to..." msgstr "" #: ../../static/t/prefs/pushemail.html:33 msgid "" "(Use international format, without any leading zeros, spaces or hypens, like " "+61415011501)" msgstr "" #: ../../static/t/prefs/pushemail.html:38 msgid "Use custom notification scheme configured by your Admin" msgstr "" #: ../../static/t/prefs/pushemail.html:43 msgid "Don‘t send any notifications" msgstr "" #: ../../static/t/prefs/box.html:9 msgid "Tree (folders) view" msgstr "" #: ../../static/t/prefs/box.html:11 msgid "Table (rooms) view" msgstr "" #: ../../static/t/prefs/box.html:20 msgid "12 hour (am/pm)" msgstr "" #: ../../static/t/prefs/box.html:25 msgid "24 hour" msgstr "" #: ../../static/t/prefs/box.html:152 msgid "Sunday" msgstr "" #: ../../static/t/prefs/box.html:153 msgid "Monday" msgstr "" #: ../../static/t/prefs/box.html:174 msgid "No signature" msgstr "" #: ../../static/t/prefs/box.html:238 msgid "Full-functionality" msgstr "" #: ../../static/t/prefs/box.html:241 msgid "Safe mode" msgstr "" #: ../../static/t/prefs/box.html:242 msgid "" "Safe mode is less intensive on your web browser, but not as fully featured." msgstr "" #: ../../static/t/wiki/pagelist.html:1 msgid "List of Wiki pages" msgstr "" #: ../../static/t/wiki/history.html:1 msgid "History of edits for this page" msgstr "" #: ../../static/t/who/list_static_header.html:1 msgid "Users currently on" msgstr "" #: ../../static/t/who/section.html:4 msgid "(kill)" msgstr "" #: ../../static/t/who/bio.html:4 ../../static/t/user/show.html:4 msgid "User profile" msgstr "" #: ../../static/t/who/summary.html:5 ../../static/t/who/box_list_static.html:6 #: ../../static/t/room/edit/tab_feed.html:13 msgid "User name" msgstr "" #: ../../static/t/who/summary.html:6 ../../static/t/who/box_list_static.html:7 msgid "Room" msgstr "" #: ../../static/t/who/box_list_static.html:8 msgid "From host" msgstr "" #: ../../static/t/view_message.html:19 msgid "Edit" msgstr "" #: ../../static/t/view_message.html:22 ../../static/t/view_message.html:26 msgid "Reply" msgstr "" #: ../../static/t/view_message.html:23 msgid "ReplyQuoted" msgstr "" #: ../../static/t/view_message.html:27 msgid "ReplyAll" msgstr "" #: ../../static/t/view_message.html:28 msgid "Forward" msgstr "" #: ../../static/t/view_message.html:31 ../../static/t/msg_listview.html:25 msgid "Move" msgstr "" #: ../../static/t/view_message.html:34 msgid "Headers" msgstr "" #: ../../static/t/view_message.html:35 ../../static/t/msg_listview.html:28 msgid "Print" msgstr "" #: ../../static/t/preferences.html:4 ../../static/t/preferences.html:7 msgid "Preferences and settings" msgstr "" #: ../../static/t/user/list.html:3 msgid "User list for " msgstr "" #: ../../static/t/user/list.html:9 msgid "User Name" msgstr "" #: ../../static/t/user/list.html:10 msgid "Number" msgstr "" #: ../../static/t/user/list.html:11 msgid "Access Level" msgstr "" #: ../../static/t/user/list.html:12 msgid "Last Login" msgstr "" #: ../../static/t/user/list.html:13 msgid "Total Logins" msgstr "" #: ../../static/t/user/list.html:14 msgid "Total Posts" msgstr "" #: ../../static/t/user/show.html:9 msgid "Click here to send an instant message to" msgstr "" #: ../../static/t/start_of_new_msgs.html:4 msgid "Old messages" msgstr "" #: ../../static/t/start_of_new_msgs.html:8 msgid "New messages" msgstr "" #: ../../static/t/display_main_menu.html:7 msgid "Basic commands" msgstr "" #: ../../static/t/display_main_menu.html:10 msgid "Your info" msgstr "" #: ../../static/t/display_main_menu.html:12 msgid "Advanced room commands" msgstr "" #: ../../static/t/iconbar/save.html:4 ../../static/t/iconbar/edit.html:4 msgid "Customize the icon bar" msgstr "" #: ../../static/t/iconbar/save.html:11 msgid "" "Your icon bar has been updated. Please select any of its choices to continue." msgstr "" #: ../../static/t/iconbar/save.html:11 msgid "" "You may need to force refresh (SHIFT-F5)> in order for changes to take effect" msgstr "" #: ../../static/t/iconbar/edit.html:11 msgid "Display icons as:" msgstr "" #: ../../static/t/iconbar/edit.html:12 msgid "pictures and text" msgstr "" #: ../../static/t/iconbar/edit.html:13 msgid "pictures only" msgstr "" #: ../../static/t/iconbar/edit.html:14 msgid "text only" msgstr "" #: ../../static/t/iconbar/edit.html:16 msgid "" "Select the icons you would like to see displayed in the 'icon bar' menu on " "the left side of the screen." msgstr "" #: ../../static/t/iconbar/edit.html:23 msgid "Site logo" msgstr "" #: ../../static/t/iconbar/edit.html:23 msgid "An icon describing this site" msgstr "" #: ../../static/t/iconbar/edit.html:29 msgid "Your summary page" msgstr "" #: ../../static/t/iconbar/edit.html:36 msgid "Mail (inbox)" msgstr "" #: ../../static/t/iconbar/edit.html:36 msgid "A shortcut to your email Inbox" msgstr "" #: ../../static/t/iconbar/edit.html:42 msgid "Your personal address book" msgstr "" #: ../../static/t/iconbar/edit.html:49 msgid "Your personal notes" msgstr "" #: ../../static/t/iconbar/edit.html:55 msgid "A shortcut to your personal calendar" msgstr "" #: ../../static/t/iconbar/edit.html:61 msgid "A shortcut to your personal task list" msgstr "" #: ../../static/t/iconbar/edit.html:67 msgid "" "Clicking this icon displays a list of all accessible rooms (or folders) " "available." msgstr "" #: ../../static/t/iconbar/edit.html:73 msgid "Who is online?" msgstr "" #: ../../static/t/iconbar/edit.html:73 msgid "Clicking this icon displays a list of all users currently logged in." msgstr "" #: ../../static/t/iconbar/edit.html:79 msgid "" "Clicking this icon enters real-time chat mode with other users in the same " "room." msgstr "" #: ../../static/t/iconbar/edit.html:85 msgid "Advanced options" msgstr "" #: ../../static/t/iconbar/edit.html:85 msgid "Access to the complete menu of Citadel functions." msgstr "" #: ../../static/t/iconbar/edit.html:91 msgid "Citadel logo" msgstr "" #: ../../static/t/iconbar/edit.html:91 msgid "Displays the 'Powered by Citadel' icon" msgstr "" #: ../../static/t/room/edit/tab_expire.html:8 msgid "Message expire policy for this room" msgstr "" #: ../../static/t/room/edit/tab_expire.html:14 msgid "Use the default policy for this floor" msgstr "" #: ../../static/t/room/edit/tab_expire.html:36 msgid "Message expire policy for this floor" msgstr "" #: ../../static/t/room/edit/tab_expire.html:42 msgid "Use the system default" msgstr "" #: ../../static/t/room/edit/editroom.html:5 ../../static/t/room/edit.html:6 msgid "Configuration" msgstr "" #: ../../static/t/room/edit/editroom.html:6 ../../static/t/room/edit.html:7 msgid "Message expire policy" msgstr "" #: ../../static/t/room/edit/editroom.html:7 ../../static/t/room/edit.html:8 msgid "Access controls" msgstr "" #: ../../static/t/room/edit/editroom.html:8 ../../static/t/room/edit.html:9 msgid "Sharing" msgstr "" #: ../../static/t/room/edit/editroom.html:9 ../../static/t/room/edit.html:10 msgid "Mailing list service" msgstr "" #: ../../static/t/room/edit/editroom.html:10 ../../static/t/room/edit.html:11 msgid "Remote retrieval" msgstr "" #: ../../static/t/room/edit/tab_config.html:6 msgid "name of room: " msgstr "" #: ../../static/t/room/edit/tab_config.html:10 #: ../../static/t/room/create.html:20 msgid "Resides on floor: " msgstr "" #: ../../static/t/room/edit/tab_config.html:16 #: ../../static/t/room/create.html:68 msgid "Type of room:" msgstr "" #: ../../static/t/room/edit/tab_config.html:22 #: ../../static/t/room/create.html:73 msgid "Public (automatically appears to everyone)" msgstr "" #: ../../static/t/room/edit/tab_config.html:28 #: ../../static/t/room/create.html:77 msgid "Private - hidden (accessible to anyone who knows its name)" msgstr "" #: ../../static/t/room/edit/tab_config.html:35 #: ../../static/t/room/create.html:81 msgid "Private - require password: " msgstr "" #: ../../static/t/room/edit/tab_config.html:44 #: ../../static/t/room/create.html:86 msgid "Private - invitation only" msgstr "" #: ../../static/t/room/edit/tab_config.html:51 #: ../../static/t/room/create.html:90 msgid "Personal (mailbox for you only)" msgstr "" #: ../../static/t/room/edit/tab_config.html:55 msgid "If private, cause current users to forget room" msgstr "" #: ../../static/t/room/edit/tab_config.html:61 msgid "Preferred users only" msgstr "" #: ../../static/t/room/edit/tab_config.html:66 msgid "Read-only room" msgstr "" #: ../../static/t/room/edit/tab_config.html:71 msgid "All users allowed to post may also delete messages" msgstr "" #: ../../static/t/room/edit/tab_config.html:76 msgid "File directory room" msgstr "" #: ../../static/t/room/edit/tab_config.html:80 msgid "Directory name: " msgstr "" #: ../../static/t/room/edit/tab_config.html:86 msgid "Uploading allowed" msgstr "" #: ../../static/t/room/edit/tab_config.html:91 msgid "Downloading allowed" msgstr "" #: ../../static/t/room/edit/tab_config.html:96 msgid "Visible directory" msgstr "" #: ../../static/t/room/edit/tab_config.html:103 msgid "Network shared room" msgstr "" #: ../../static/t/room/edit/tab_config.html:108 msgid "Permanent (does not auto-purge)" msgstr "" #: ../../static/t/room/edit/tab_config.html:113 msgid "Subject Required (Force users to specify a message subject)" msgstr "" #: ../../static/t/room/edit/tab_config.html:116 msgid "Anonymous messages" msgstr "" #: ../../static/t/room/edit/tab_config.html:122 msgid "No anonymous messages" msgstr "" #: ../../static/t/room/edit/tab_config.html:127 msgid "All messages are anonymous" msgstr "" #: ../../static/t/room/edit/tab_config.html:132 msgid "Prompt user when entering messages" msgstr "" #: ../../static/t/room/edit/tab_config.html:136 msgid "Room aide: " msgstr "" #: ../../static/t/room/edit/tab_listserv.html:5 msgid "" "The contents of this room are being mailed as individual messages " "to the following list recipients:

    " msgstr "" #: ../../static/t/room/edit/tab_listserv.html:19 msgid "" "The contents of this room are being mailed in digest form to the " "following list recipients:

    " msgstr "" #: ../../static/t/room/edit/tab_listserv.html:39 msgid "Add recipients from Contacts or other address books" msgstr "" #: ../../static/t/room/edit/tab_listserv.html:48 msgid "Allow non-subscribers to mail to this room." msgstr "" #: ../../static/t/room/edit/tab_listserv.html:54 msgid "Room post publication needs Admin permission." msgstr "" #: ../../static/t/room/edit/tab_listserv.html:59 msgid "Allow self-service subscribe/unsubscribe requests." msgstr "" #: ../../static/t/room/edit/tab_listserv.html:65 msgid "The URL for subscribe/unsubscribe is: " msgstr "" #: ../../static/t/room/edit/digestrecp_removal.html:1 #: ../../static/t/room/edit/pop3client_removal.html:9 #: ../../static/t/room/edit/listrecp_removal.html:1 #: ../../static/t/room/edit/rssclient_removal.html:5 msgid "(remove)" msgstr "" #: ../../static/t/room/edit/tab_admin.html:5 msgid "Delete this room" msgstr "" #: ../../static/t/room/edit/tab_admin.html:10 msgid "Set or change the icon for this rooms banner" msgstr "" #: ../../static/t/room/edit/tab_admin.html:14 msgid "Edit this rooms Info file" msgstr "" #: ../../static/t/room/edit/tab_share.html:5 msgid "Shared with" msgstr "" #: ../../static/t/room/edit/tab_share.html:6 msgid "Not shared with" msgstr "" #: ../../static/t/room/edit/tab_share.html:11 #: ../../static/t/room/edit/tab_share.html:21 msgid "Remote node name" msgstr "" #: ../../static/t/room/edit/tab_share.html:12 #: ../../static/t/room/edit/tab_share.html:22 msgid "Remote room name" msgstr "" #: ../../static/t/room/edit/tab_share.html:13 #: ../../static/t/room/edit/tab_share.html:23 msgid "Actions" msgstr "" #: ../../static/t/room/edit/tab_share.html:35 msgid "" "When sharing a room, it must be shared from both ends. Adding a node to the " "'shared' list sends messages out, but in order to receive messages, the " "other nodes must be configured to send messages out to your system as well. " "
  • If the remote room name is blank, it is assumed that the room name is " "identical on the remote node.
  • If the remote room name is different, the " "remote node must also configure the name of the room here." msgstr "" #: ../../static/t/room/edit/tab_feed.html:2 msgid "" "Retrieve messages from these remote POP3 accounts and store them in this " "room:" msgstr "" #: ../../static/t/room/edit/tab_feed.html:12 msgid "Remote host" msgstr "" #: ../../static/t/room/edit/tab_feed.html:15 msgid "Keep messages on server?" msgstr "" #: ../../static/t/room/edit/tab_feed.html:16 msgid "Interval" msgstr "" #: ../../static/t/room/edit/tab_feed.html:31 msgid "Fetch the following RSS feeds and store them in this room:" msgstr "" #: ../../static/t/room/edit/tab_feed.html:43 msgid "Feed URL" msgstr "" #: ../../static/t/room/edit/tab_access.html:5 msgid "" "The users listed below have access to this room. To remove a user from the " "access list, select the user name from the list and click 'Kick'." msgstr "" #: ../../static/t/room/edit/tab_access.html:20 msgid "" "To grant another user access to this room, enter the user name in the box " "below and click 'Invite'." msgstr "" #: ../../static/t/room/edit/tab_access.html:26 msgid "Invite:" msgstr "" #: ../../static/t/room/edit/tab_access.html:35 msgid "Users" msgstr "" #: ../../static/t/room/zapped_list.html:7 msgid "Zapped (forgotten) rooms" msgstr "" #: ../../static/t/room/zapped_list.html:10 msgid "Click on any room to un-zap it and goto that room." msgstr "" #: ../../static/t/room/display_private.html:7 msgid "Go to a hidden room" msgstr "" #: ../../static/t/room/display_private.html:8 msgid "" "If you know the name of a hidden (guess-name) or passworded room, you can " "enter that room by typing its name below. Once you gain access to a private " "room, it will appear in your regular room listings so you don‘t have to keep " "returning here." msgstr "" #: ../../static/t/room/display_private.html:14 msgid "Enter room name:" msgstr "" #: ../../static/t/room/display_private.html:21 msgid "Enter room password:" msgstr "" #: ../../static/t/room/create.html:11 #: ../../static/t/menu/advanced_roomcommands.html:6 msgid "Create a new room" msgstr "" #: ../../static/t/room/create.html:18 msgid "Name of room: " msgstr "" #: ../../static/t/room/create.html:32 msgid "Default view for room: " msgstr "" #: ../../static/t/room/zap_this.html:3 msgid "Zap (forget/unsubscribe) the current room" msgstr "" #: ../../static/t/room/zap_this.html:6 msgid "If you select this option," msgstr "" #: ../../static/t/room/zap_this.html:8 msgid "will disappear from your room list. Is this what you wish to do?" msgstr "" #: ../../static/t/menu/your_info.html:2 msgid "Change your preferences and settings" msgstr "" #: ../../static/t/menu/your_info.html:3 msgid "Update your contact information" msgstr "" #: ../../static/t/menu/your_info.html:5 msgid "Enter your 'bio'" msgstr "" #: ../../static/t/menu/your_info.html:6 msgid "Edit your online photo" msgstr "" #: ../../static/t/menu/your_info.html:8 msgid "Edit your push email settings" msgstr "" #: ../../static/t/menu/your_info.html:9 msgid "Manage your OpenIDs" msgstr "" #: ../../static/t/menu/basic_commands.html:3 msgid "List known rooms" msgstr "" #: ../../static/t/menu/basic_commands.html:3 msgid "Where can I go from here?" msgstr "" #: ../../static/t/menu/basic_commands.html:4 ../../static/t/navbar.html:168 msgid "Goto next room" msgstr "" #: ../../static/t/menu/basic_commands.html:4 msgid "...with unread messages" msgstr "" #: ../../static/t/menu/basic_commands.html:5 msgid "Skip to next room" msgstr "" #: ../../static/t/menu/basic_commands.html:5 msgid "(come back here later)" msgstr "" #: ../../static/t/menu/basic_commands.html:6 ../../static/t/navbar.html:5 msgid "Ungoto" msgstr "" #: ../../static/t/menu/basic_commands.html:6 msgid "oops! Back to " msgstr "" #: ../../static/t/menu/basic_commands.html:10 ../../static/t/navbar.html:13 msgid "Read new messages" msgstr "" #: ../../static/t/menu/basic_commands.html:10 msgid "...in this room" msgstr "" #: ../../static/t/menu/basic_commands.html:11 ../../static/t/navbar.html:19 msgid "Read all messages" msgstr "" #: ../../static/t/menu/basic_commands.html:11 msgid "...old and new" msgstr "" #: ../../static/t/menu/basic_commands.html:12 ../../static/t/navbar.html:25 msgid "Enter a message" msgstr "" #: ../../static/t/menu/basic_commands.html:12 msgid "(post in this room)" msgstr "" #: ../../static/t/menu/basic_commands.html:13 msgid "File library" msgstr "" #: ../../static/t/menu/basic_commands.html:13 msgid "(List files available for download)" msgstr "" #: ../../static/t/menu/basic_commands.html:17 msgid "Summary page" msgstr "" #: ../../static/t/menu/basic_commands.html:17 msgid "Summary of my account" msgstr "" #: ../../static/t/menu/basic_commands.html:18 msgid "User list" msgstr "" #: ../../static/t/menu/basic_commands.html:18 msgid "(all registered users)" msgstr "" #: ../../static/t/menu/basic_commands.html:19 msgid "Bye!" msgstr "" #: ../../static/t/menu/advanced_roomcommands.html:3 msgid "Edit or delete this room" msgstr "" #: ../../static/t/menu/advanced_roomcommands.html:5 msgid "Go to a 'hidden' room" msgstr "" #: ../../static/t/menu/advanced_roomcommands.html:7 msgid "Zap (forget) this room" msgstr "" #: ../../static/t/menu/advanced_roomcommands.html:8 msgid "List all forgotten rooms" msgstr "" #: ../../static/t/navbar.html:34 msgid "View contacts" msgstr "" #: ../../static/t/navbar.html:40 msgid "Add new contact" msgstr "" #: ../../static/t/navbar.html:49 msgid "Day view" msgstr "" #: ../../static/t/navbar.html:55 msgid "Month view" msgstr "" #: ../../static/t/navbar.html:61 msgid "Add new event" msgstr "" #: ../../static/t/navbar.html:70 msgid "Calendar list" msgstr "" #: ../../static/t/navbar.html:79 msgid "View tasks" msgstr "" #: ../../static/t/navbar.html:85 msgid "Add new task" msgstr "" #: ../../static/t/navbar.html:94 msgid "View notes" msgstr "" #: ../../static/t/navbar.html:101 msgid "Add new note" msgstr "" #: ../../static/t/navbar.html:110 msgid "Refresh message list" msgstr "" #: ../../static/t/navbar.html:122 msgid "Write mail" msgstr "" #: ../../static/t/navbar.html:132 msgid "Wiki home" msgstr "" #: ../../static/t/navbar.html:139 msgid "Edit this page" msgstr "" #: ../../static/t/navbar.html:145 msgid "History" msgstr "" #: ../../static/t/navbar.html:154 msgid "New blog post" msgstr "" #: ../../static/t/navbar.html:162 msgid "Skip this room" msgstr "" #: ../../static/t/msg_listview.html:18 msgid "Loading messages from server, please wait" msgstr "" #: ../../static/t/msg_listview.html:24 msgid "Open in new window" msgstr "" #: ../../static/t/msg_listview.html:26 msgid "Copy" msgstr "" #: ../../static/t/view_mailq/message.html:6 msgid "Originaly posted in: " msgstr "" #: ../../static/t/view_mailq/header.html:15 msgid "Refresh this page" msgstr "" #: ../../static/t/view_mailq/header.html:21 msgid "Message ID" msgstr "" #: ../../static/t/view_mailq/header.html:23 msgid "Date/time submitted" msgstr "" #: ../../static/t/view_mailq/header.html:25 msgid "Next attempt" msgstr "" #: ../../static/t/view_mailq/header.html:29 msgid "Recipients" msgstr "" #: ../../static/t/view_mailq/footer_empty.html:4 msgid "The queue is empty." msgstr "" #: ../../static/t/view_mailq/footer_empty.html:9 #: ../../static/t/view_mailq/footer.html:5 msgid "You do not have permission to view this resource." msgstr "" #: ../../static/t/get_logged_in.html:5 msgid "You must be logged in to access this page." msgstr "" #: ../../static/t/get_logged_in.html:9 #: ../../static/t/edit_message/attachments_pane.html:3 msgid "Close window" msgstr "" #: ../../static/t/get_logged_in.html:55 msgid "Log in using a user name and password" msgstr "" #: ../../static/t/get_logged_in.html:60 ../../static/t/get_logged_in.html:75 msgid "Password:" msgstr "" #: ../../static/t/get_logged_in.html:65 ../../static/t/get_logged_in.html:69 msgid "New user? Register now" msgstr "" #: ../../static/t/get_logged_in.html:70 msgid "" "enter the name and password you wish to use, and click "New User." " msgstr "" #: ../../static/t/get_logged_in.html:83 msgid "Log in using OpenID" msgstr "" #: ../../static/t/get_logged_in.html:85 msgid "OpenID URL:" msgstr "" #: ../../static/t/get_logged_in.html:92 msgid "Log in using Google" msgstr "" #: ../../static/t/get_logged_in.html:97 msgid "Log in using Yahoo" msgstr "" #: ../../static/t/get_logged_in.html:102 msgid "Log in using AOL or AIM" msgstr "" #: ../../static/t/get_logged_in.html:104 msgid "Enter your AOL or AIM screen name:" msgstr "" #: ../../static/t/get_logged_in.html:115 msgid "Please wait" msgstr "" #: ../../static/t/summary/page.html:4 msgid "Summary page for " msgstr "" #: ../../static/t/summary/page.html:21 msgid "Messages" msgstr "" #: ../../static/t/summary/page.html:39 msgid "Today on your calendar" msgstr "" #: ../../static/t/summary/page.html:51 msgid "Who‘s online now" msgstr "" #: ../../static/t/summary/page.html:60 msgid "About this server" msgstr "" #: ../../static/t/summary/page.html:63 msgid "You are connected to" msgstr "" #: ../../static/t/summary/page.html:64 msgid "running" msgstr "" #: ../../static/t/summary/page.html:65 msgid "with" msgstr "" #: ../../static/t/summary/page.html:66 msgid "server build" msgstr "" #: ../../static/t/summary/page.html:67 msgid "and located in" msgstr "" #: ../../static/t/summary/page.html:68 msgid "Your system administrator is" msgstr "" #: ../../static/t/edit_message/attachments_pane.html:16 msgid "Attach file" msgstr "" #: ../../static/t/edit_message/attachments_pane.html:21 msgid "Upload" msgstr "" #: ../../static/t/edit_message/section_attach_select.html:4 msgid "Remove" msgstr "" #: ../../static/t/loggedinas.html:3 msgid "Logged in as" msgstr "" #: ../../static/t/loggedinas.html:6 msgid "Not logged in." msgstr "" webcit-8.24-dfsg.orig/po/webcit/el.po0000644000175000017500000025674112271477123017252 0ustar michaelmichael# Greek translation for citadel # Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010 # This file is distributed under the same license as the citadel package. # FIRST AUTHOR , 2010. # msgid "" msgstr "" "Project-Id-Version: citadel\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-03-20 01:03-0400\n" "PO-Revision-Date: 2010-10-27 09:24+0000\n" "Last-Translator: Impetus \n" "Language-Team: Greek \n" "Language: el\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-10-28 05:00+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: ../../roomops.c:708 ../../roomops.c:1005 ../../sieve.c:364 msgid "Cancelled. Changes were not saved." msgstr "" #: ../../roomops.c:838 ../../sieve.c:417 msgid "Your changes have been saved." msgstr "" #: ../../roomops.c:881 #, c-format msgid "User '%s' kicked out of room '%s'." msgstr "" #: ../../roomops.c:898 #, c-format msgid "User '%s' invited to room '%s'." msgstr "" #: ../../roomops.c:927 msgid "Cancelled. No new room was created." msgstr "" #: ../../roomops.c:1187 msgid "Floor has been deleted." msgstr "" #: ../../roomops.c:1211 msgid "New floor has been created." msgstr "" #: ../../roomops.c:1290 msgid "Room list view" msgstr "" #: ../../roomops.c:1293 msgid "Show empty floors" msgstr "" #: ../../roomviews.c:50 msgid "Bulletin Board" msgstr "" #: ../../roomviews.c:51 msgid "Mail Folder" msgstr "" #: ../../roomviews.c:52 msgid "Address Book" msgstr "" #: ../../roomviews.c:53 ../../static/t/iconbar.html:24 #: ../../static/t/iconbar/edit.html:55 msgid "Calendar" msgstr "" #: ../../roomviews.c:54 msgid "Task List" msgstr "" #: ../../roomviews.c:55 msgid "Notes List" msgstr "" #: ../../roomviews.c:56 msgid "Wiki" msgstr "" #: ../../roomviews.c:57 msgid "Calendar List" msgstr "" #: ../../roomviews.c:58 msgid "Journal" msgstr "" #: ../../roomviews.c:59 msgid "Drafts" msgstr "" #: ../../roomviews.c:60 msgid "Blog" msgstr "" #: ../../tasks.c:93 msgid "Completed?" msgstr "" #: ../../tasks.c:95 msgid "Name of task" msgstr "" #: ../../tasks.c:97 msgid "Date due" msgstr "" #: ../../tasks.c:99 msgid "Category" msgstr "" #: ../../tasks.c:101 msgid "Show All" msgstr "" #: ../../tasks.c:223 msgid "Edit task" msgstr "" #: ../../tasks.c:242 ../../calendar.c:98 ../../calendar_view.c:298 #: ../../calendar_view.c:959 ../../calendar_view.c:1003 #: ../../calendar_view.c:1084 msgid "Summary:" msgstr "Περίληψη:" #: ../../tasks.c:253 msgid "Start date:" msgstr "" #: ../../tasks.c:261 ../../tasks.c:291 msgid "No date" msgstr "" #: ../../tasks.c:265 ../../tasks.c:294 msgid "or" msgstr "" #: ../../tasks.c:279 ../../tasks.c:308 msgid "Time associated" msgstr "" #: ../../tasks.c:283 msgid "Due date:" msgstr "" #: ../../tasks.c:312 msgid "Completed:" msgstr "" #: ../../tasks.c:323 msgid "Category:" msgstr "" #: ../../tasks.c:333 ../../calendar.c:159 ../../static/t/files.html:12 msgid "Description:" msgstr "Περιγραφή" #: ../../tasks.c:351 ../../event.c:764 msgid "Save" msgstr "" #: ../../tasks.c:352 ../../event.c:765 ../../static/t/aide/inet/section.html:5 #: ../../static/t/view_blog/comment.html:12 #: ../../static/t/view_blog/post.html:15 ../../static/t/view_message.html:32 #: ../../static/t/navbar.html:116 ../../static/t/msg_listview.html:27 msgid "Delete" msgstr "" #: ../../tasks.c:353 ../../vcard_edit.c:1216 ../../paging.c:66 #: ../../event.c:767 ../../sysmsgs.c:69 ../../who.c:200 ../../auth.c:812 #: ../../static/t/edit_message.html:135 ../../static/t/confirmlogoff.html:4 msgid "Cancel" msgstr "Ακύρωση" #: ../../tasks.c:423 ../../calendar_view.c:1379 msgid "Untitled Task" msgstr "" #: ../../fmt_date.c:310 msgid "Time format" msgstr "" #: ../../listsub.c:54 ../../static/t/listsub/display.html:5 msgid "List subscription" msgstr "" #: ../../listsub.c:67 ../../static/t/listsub/display.html:9 msgid "List subscribe/unsubscribe" msgstr "" #: ../../listsub.c:87 ../../static/t/listsub/display.html:15 #: ../../static/t/listsub/display.html:34 msgid "Confirmation request sent" msgstr "" #: ../../listsub.c:89 #, c-format msgid "" "You are subscribing %s to the %s mailing list. The " "listserver has sent you an e-mail with one additional Web link for you to " "click on to confirm your subscription. This extra step is for your " "protection, as it prevents others from being able to subscribe you to lists " "without your consent.

    Please click on the link which is being e-" "mailed to you and your subscription will be confirmed.
    \n" msgstr "" #: ../../listsub.c:102 ../../static/t/listsub/display.html:24 msgid "Go back..." msgstr "" #: ../../listsub.c:253 ../../listsub.c:291 ../../listsub.c:327 #: ../../listsub.c:334 msgid "You need to specify the mailinglist to subscribe to." msgstr "" #: ../../listsub.c:260 ../../listsub.c:298 msgid "You need to specify the email address you'd like to subscribe with." msgstr "" #: ../../blogview_renderer.c:58 ../../blogview_renderer.c:74 #, c-format msgid "%d comments" msgstr "" #: ../../blogview_renderer.c:61 ../../blogview_renderer.c:77 msgid "permalink" msgstr "" #: ../../blogview_renderer.c:302 msgid "Newer posts" msgstr "νεότερες δημοσιεύσεις" #: ../../blogview_renderer.c:311 msgid "Older posts" msgstr "μεγάλα θέσεις" #: ../../useredit.c:629 msgid "" "An error occurred while trying to create or edit this address book entry." msgstr "" #: ../../useredit.c:717 msgid "Changes were not saved." msgstr "" #: ../../useredit.c:782 msgid "A new user has been created." msgstr "" #: ../../useredit.c:786 msgid "" "You are attempting to create a new user from within Citadel while running in " "host based authentication mode. In this mode, you must create new users on " "the host system, not within Citadel." msgstr "" #: ../../bbsview_renderer.c:312 msgid "Go to page: " msgstr "Πήγαινε στη σελίδα: " #: ../../bbsview_renderer.c:354 msgid "First" msgstr "Αρχή" #: ../../bbsview_renderer.c:360 msgid "Last" msgstr "Τέλος" #: ../../graphics.c:56 msgid "Graphics upload has been cancelled." msgstr "" #: ../../graphics.c:62 msgid "You didn't upload a file." msgstr "" #: ../../graphics.c:112 msgid "your photo" msgstr "" #: ../../graphics.c:119 msgid "the icon for this room" msgstr "" #: ../../graphics.c:127 msgid "the Greetingpicture for the login prompt" msgstr "" #: ../../graphics.c:135 msgid "the Logoff banner picture" msgstr "" #: ../../graphics.c:146 msgid "the icon for this floor" msgstr "" #: ../../calendar_tools.c:100 msgid "Hour: " msgstr "" #: ../../calendar_tools.c:120 msgid "Minute: " msgstr "" #: ../../calendar_tools.c:191 msgid "(status unknown)" msgstr "" #: ../../calendar_tools.c:207 msgid "(needs action)" msgstr "" #: ../../calendar_tools.c:210 msgid "(accepted)" msgstr "" #: ../../calendar_tools.c:213 msgid "(declined)" msgstr "" #: ../../calendar_tools.c:216 msgid "(tenative)" msgstr "" #: ../../calendar_tools.c:219 msgid "(delegated)" msgstr "" #: ../../calendar_tools.c:222 msgid "(completed)" msgstr "" #: ../../calendar_tools.c:225 msgid "(in process)" msgstr "" #: ../../calendar_tools.c:228 msgid "(none)" msgstr "" #: ../../notes.c:343 msgid "Click on any note to edit it." msgstr "" #: ../../vcard_edit.c:175 ../../vcard_edit.c:178 msgid "(no name)" msgstr "" #: ../../vcard_edit.c:443 msgid " (work)" msgstr "" #: ../../vcard_edit.c:445 msgid " (home)" msgstr "" #: ../../vcard_edit.c:447 msgid " (cell)" msgstr "" #: ../../vcard_edit.c:458 ../../vcard_edit.c:1120 msgid "Address:" msgstr "" #: ../../vcard_edit.c:526 msgid "Telephone:" msgstr "" #: ../../vcard_edit.c:531 msgid "E-mail:" msgstr "" #: ../../vcard_edit.c:779 msgid "This address book is empty." msgstr "" #: ../../vcard_edit.c:793 msgid "An internal error has occurred." msgstr "" #: ../../vcard_edit.c:944 msgid "Error" msgstr "" #: ../../vcard_edit.c:1048 msgid "Edit contact information" msgstr "" #: ../../vcard_edit.c:1068 msgid "Prefix" msgstr "" #: ../../vcard_edit.c:1068 msgid "First Name" msgstr "" #: ../../vcard_edit.c:1068 msgid "Middle Name" msgstr "" #: ../../vcard_edit.c:1068 msgid "Last Name" msgstr "" #: ../../vcard_edit.c:1068 msgid "Suffix" msgstr "" #: ../../vcard_edit.c:1089 msgid "Display name:" msgstr "" #: ../../vcard_edit.c:1096 msgid "Title:" msgstr "" #: ../../vcard_edit.c:1103 msgid "Organization:" msgstr "" #: ../../vcard_edit.c:1114 msgid "PO box:" msgstr "" #: ../../vcard_edit.c:1130 msgid "City:" msgstr "" #: ../../vcard_edit.c:1136 msgid "State:" msgstr "" #: ../../vcard_edit.c:1142 msgid "ZIP code:" msgstr "" #: ../../vcard_edit.c:1148 msgid "Country:" msgstr "" #: ../../vcard_edit.c:1158 msgid "Home telephone:" msgstr "" #: ../../vcard_edit.c:1164 msgid "Work telephone:" msgstr "" #: ../../vcard_edit.c:1170 msgid "Mobile telephone:" msgstr "" #: ../../vcard_edit.c:1176 msgid "Fax number:" msgstr "" #: ../../vcard_edit.c:1187 msgid "Primary Internet e-mail address" msgstr "" #: ../../vcard_edit.c:1194 msgid "Internet e-mail aliases" msgstr "" #: ../../vcard_edit.c:1215 ../../sysmsgs.c:67 msgid "Save changes" msgstr "" #: ../../vcard_edit.c:1261 msgid "Unable to enter the room to save your message" msgstr "" #: ../../vcard_edit.c:1265 msgid "Aborting." msgstr "" #: ../../vcard_edit.c:1297 ../../vcard_edit.c:1341 ../../auth.c:367 #: ../../auth.c:397 msgid "An error has occurred." msgstr "" #: ../../vcard_edit.c:1399 msgid "Could Not decode vcard photo\n" msgstr "" #: ../../preferences.c:880 msgid "Cancelled. No settings were changed." msgstr "" #: ../../preferences.c:1092 msgid "Make this my start page" msgstr "" #: ../../preferences.c:1130 msgid "This isn't allowed to become the start page." msgstr "" #: ../../preferences.c:1132 msgid "You no longer have a start page selected." msgstr "" #: ../../preferences.c:1182 msgid "Prefered startpage" msgstr "" #: ../../calendar.c:76 msgid "Meeting invitation" msgstr "Πρόσκληση για συνάντηση" #: ../../calendar.c:79 msgid "Attendee's reply to your invitation" msgstr "" #: ../../calendar.c:82 msgid "Published event" msgstr "Δημοσίευση γεγονότος" #: ../../calendar.c:85 msgid "This is an unknown type of calendar item." msgstr "Αυτό είναι άγνωστο στοιχείο για το ημερολόγιο." #: ../../calendar.c:107 ../../calendar_view.c:306 ../../calendar_view.c:964 #: ../../calendar_view.c:1008 ../../calendar_view.c:1089 msgid "Location:" msgstr "Τοποθεσία" #: ../../calendar.c:132 ../../calendar_view.c:351 ../../calendar_view.c:970 msgid "Date:" msgstr "Ημερομηνία" #: ../../calendar.c:139 ../../calendar_view.c:373 ../../calendar_view.c:1013 #: ../../calendar_view.c:1099 msgid "Starting date/time:" msgstr "" #: ../../calendar.c:150 ../../calendar_view.c:376 ../../calendar_view.c:1015 #: ../../calendar_view.c:1101 msgid "Ending date/time:" msgstr "" #: ../../calendar.c:168 ../../event.c:90 msgid "Recurrence" msgstr "" #: ../../calendar.c:169 ../../event.c:505 msgid "This is a recurring event" msgstr "" #: ../../calendar.c:178 msgid "Attendee:" msgstr "" #: ../../calendar.c:218 #, c-format msgid "This is an update of '%s' which is already in your calendar." msgstr "" #: ../../calendar.c:222 #, c-format msgid "This event would conflict with '%s' which is already in your calendar." msgstr "" "Αυτό το γεγονός έρχεται σε αντίθεση με το '%s' το οποίο υπάρχει ήδη στο " "ημερολόγιό σας." #: ../../calendar.c:227 msgid "Update:" msgstr "Ενημέρωση:" #: ../../calendar.c:228 msgid "CONFLICT:" msgstr "ΑΝΤΙΘΕΣΗ" #: ../../calendar.c:251 msgid "How would you like to respond to this invitation?" msgstr "Πώς θα θέλατε να απαντήσετε σε αυτή την πρόσκληση;" #: ../../calendar.c:252 msgid "Accept" msgstr "Αποδοχή" #: ../../calendar.c:253 msgid "Tentative" msgstr "Αβέβαιος" #: ../../calendar.c:254 msgid "Decline" msgstr "Άρνηση" #: ../../calendar.c:271 msgid "Click Update to accept this reply and update your calendar." msgstr "" "Πατήστε Ενημέρωση για να αποδεχτείτε αυτή την απάντηση και να " "ενημερώσετε το ημερολόγιό σας." #: ../../calendar.c:272 msgid "Update" msgstr "Ενημέρωση" #: ../../calendar.c:273 msgid "Ignore" msgstr "" #: ../../calendar.c:295 msgid "There was an error parsing this calendar item." msgstr "" "Υπήρξε ένα σφάλμα κατά την εισαγωγή αυτού του στοιχείου στο ημερολόγιο." #: ../../calendar.c:328 msgid "" "You have accepted this meeting invitation. It has been entered into your " "calendar." msgstr "" "Αποδεχτείκατε την πρόσκληση σε συνάντηση και προσθέθηκε στο ημερολόγιό σας." #: ../../calendar.c:332 msgid "" "You have tentatively accepted this meeting invitation. It has been " "'pencilled in' to your calendar." msgstr "" #: ../../calendar.c:336 msgid "" "You have declined this meeting invitation. It has not been entered " "into your calendar." msgstr "Απορρίψατε την πρόσκληση σε συνάντηση. Δεν εισήχθη στο ημερολόγιό σας." #: ../../calendar.c:341 msgid "A reply has been sent to the meeting organizer." msgstr "Μια απάντηση στάλθηκε στον διαχειριστή της συνάντησης." #. / Translators: RSVP aka Répondez s'il-vous-plaît Is the term #. / that the recipient of an ical-invitation should please #. / answer this request. #: ../../calendar.c:376 msgid "Your calendar has been updated to reflect this RSVP." msgstr "" #: ../../calendar.c:378 msgid "" "You have chosen to ignore this RSVP. Your calendar has not been " "updated." msgstr "" #: ../../calendar.c:932 msgid "Calendar day view begins at:" msgstr "" #: ../../calendar.c:933 msgid "Calendar day view ends at:" msgstr "" #: ../../calendar.c:934 msgid "Week starts on:" msgstr "" #: ../../paging.c:35 msgid "Send instant message" msgstr "" #: ../../paging.c:43 msgid "Send an instant message to: " msgstr "" #: ../../paging.c:57 msgid "Enter message text:" msgstr "" #: ../../paging.c:65 ../../static/t/edit_message.html:109 msgid "Send message" msgstr "" #: ../../paging.c:84 msgid "Message was not sent." msgstr "" #: ../../paging.c:95 msgid "Message has been sent to " msgstr "" #: ../../iconbar.c:328 msgid "Iconbar Setting" msgstr "" #. #. * Set to 'unknown' right from the beginning. Unless we learn #. * something else, that's what we'll go with. #. #: ../../availability.c:148 msgid "availability unknown" msgstr "άγνωστη διαθεσιμότητα" #: ../../availability.c:169 msgid "free" msgstr "ελεύθερο" #: ../../availability.c:179 msgid "BUSY" msgstr "ΑΠΑΣΧΟΛΗΜΕΝΟΣ" #: ../../serv_func.c:193 msgid "" "This server is already serving its maximum number of users and cannot accept " "any additional logins at this time. Please try again later or contact your " "system administrator." msgstr "" #: ../../serv_func.c:198 ../../serv_func.c:227 msgid "Received unexpected answer from Citadel server; bailing out." msgstr "" #: ../../serv_func.c:236 #, c-format msgid "" "You are connected to a Citadel server running Citadel %d.%02d. \n" "In order to run this version of WebCit you must also have Citadel %d.%02d or " "newer.\n" "\n" "\n" msgstr "" #: ../../event.c:70 msgid "seconds" msgstr "" #: ../../event.c:71 msgid "minutes" msgstr "" #: ../../event.c:72 msgid "hours" msgstr "" #: ../../event.c:73 msgid "days" msgstr "" #: ../../event.c:74 msgid "weeks" msgstr "" #: ../../event.c:75 msgid "months" msgstr "" #: ../../event.c:76 msgid "years" msgstr "" #: ../../event.c:77 msgid "never" msgstr "" #: ../../event.c:81 msgid "first" msgstr "" #: ../../event.c:82 msgid "second" msgstr "" #: ../../event.c:83 msgid "third" msgstr "" #: ../../event.c:84 msgid "fourth" msgstr "" #: ../../event.c:85 msgid "fifth" msgstr "" #: ../../event.c:88 msgid "Event" msgstr "" #: ../../event.c:89 ../../event.c:437 ../../event.c:449 msgid "Attendees" msgstr "" #: ../../event.c:167 msgid "Add or edit an event" msgstr "" #: ../../event.c:206 ../../static/t/iconbar.html:13 #: ../../static/t/iconbar/edit.html:29 msgid "Summary" msgstr "" #: ../../event.c:217 msgid "Location" msgstr "" #: ../../event.c:228 ../../calendar_view.c:760 msgid "Start" msgstr "" #: ../../event.c:271 ../../calendar_view.c:957 ../../calendar_view.c:986 msgid "All day event" msgstr "" #: ../../event.c:277 ../../calendar_view.c:761 msgid "End" msgstr "" #: ../../event.c:327 ../../static/t/iconbar.html:34 #: ../../static/t/iconbar/edit.html:49 msgid "Notes" msgstr "" #: ../../event.c:369 msgid "Organizer" msgstr "" #: ../../event.c:374 msgid "(you are the organizer)" msgstr "" #: ../../event.c:392 msgid "Show time as:" msgstr "" #: ../../event.c:415 msgid "Free" msgstr "" #: ../../event.c:423 msgid "Busy" msgstr "" #: ../../event.c:440 msgid "(One per line)" msgstr "" #: ../../event.c:450 ../../static/t/edit_message.html:143 #: ../../static/t/iconbar.html:29 ../../static/t/iconbar/edit.html:42 msgid "Contacts" msgstr "" #: ../../event.c:513 msgid "Recurrence rule" msgstr "" #: ../../event.c:517 msgid "Repeats every" msgstr "" #. begin 'weekday_selector' div #: ../../event.c:535 msgid "on these weekdays:" msgstr "" #: ../../event.c:593 #, c-format msgid "on day %s%d%s of the month" msgstr "" #: ../../event.c:602 ../../event.c:664 msgid "on the " msgstr "" #: ../../event.c:626 msgid "of the month" msgstr "" #: ../../event.c:655 msgid "every " msgstr "" #: ../../event.c:656 msgid "year on this date" msgstr "" #: ../../event.c:688 ../../static/t/msg_listselector_bottom.html:7 #: ../../static/t/msg_listselector_top.html:7 msgid "of" msgstr "" #: ../../event.c:712 msgid "Recurrence range" msgstr "" #: ../../event.c:720 msgid "No ending date" msgstr "" #: ../../event.c:727 msgid "Repeat this event" msgstr "" #: ../../event.c:730 msgid "times" msgstr "" #: ../../event.c:738 msgid "Repeat this event until " msgstr "" #: ../../event.c:766 msgid "Check attendee availability" msgstr "" #: ../../event.c:858 ../../calendar_view.c:272 ../../calendar_view.c:468 #: ../../calendar_view.c:937 msgid "Untitled Event" msgstr "" #: ../../sysmsgs.c:52 #, c-format msgid "Edit %s" msgstr "" #: ../../sysmsgs.c:55 #, c-format msgid "" "Enter %s below. Text is formatted to the reader's browser. A newline is " "forced by preceding the next line by a blank." msgstr "" #: ../../sysmsgs.c:89 #, c-format msgid "Cancelled. %s was not saved." msgstr "" #: ../../sysmsgs.c:109 msgid " has been saved." msgstr "" #: ../../sysmsgs.c:116 ../../sysmsgs.c:117 msgid "Room info" msgstr "" #: ../../sysmsgs.c:122 ../../sysmsgs.c:124 msgid "Your bio" msgstr "" #: ../../calendar_view.c:297 ../../calendar_view.c:958 #: ../../calendar_view.c:1002 ../../calendar_view.c:1083 #: ../../static/t/sieve/display_one.html:20 msgid "From" msgstr "" #: ../../calendar_view.c:355 ../../calendar_view.c:974 msgid "Starting date:" msgstr "" #: ../../calendar_view.c:361 ../../calendar_view.c:976 msgid "Ending date:" msgstr "" #: ../../calendar_view.c:369 ../../calendar_view.c:1095 msgid "Date/time:" msgstr "" #: ../../calendar_view.c:386 ../../calendar_view.c:980 #: ../../calendar_view.c:1018 ../../calendar_view.c:1105 #: ../../static/t/room/edit/tab_share.html:32 msgid "Notes:" msgstr "" #: ../../calendar_view.c:585 ../../calendar_view.c:721 msgid "previous" msgstr "" #: ../../calendar_view.c:597 ../../calendar_view.c:733 #: ../../calendar_view.c:1308 msgid "next" msgstr "" #: ../../calendar_view.c:756 msgid "Week" msgstr "" #: ../../calendar_view.c:758 msgid "Hours" msgstr "" #: ../../calendar_view.c:759 ../../static/t/sieve/display_one.html:22 #: ../../static/t/msg_listview.html:9 msgid "Subject" msgstr "" #: ../../calendar_view.c:1001 ../../calendar_view.c:1024 msgid "Ongoing event" msgstr "" #: ../../messages.c:70 msgid "ERROR:" msgstr "" #: ../../messages.c:88 msgid "Empty message" msgstr "" #: ../../messages.c:1010 msgid "Cancelled. Message was not posted." msgstr "" #: ../../messages.c:1013 msgid "Automatically cancelled because you have already saved this message." msgstr "" #: ../../messages.c:1037 msgid "Saved to Drafts failed: " msgstr "" #: ../../messages.c:1102 msgid "Refusing to post empty message.\n" msgstr "" #: ../../messages.c:1128 msgid "Message has been saved to Drafts.\n" msgstr "" #: ../../messages.c:1137 msgid "Message has been sent.\n" msgstr "" #: ../../messages.c:1140 msgid "Message has been posted.\n" msgstr "" #: ../../messages.c:1679 msgid "The message was not moved." msgstr "" #: ../../messages.c:1719 #, c-format msgid "An error occurred while retrieving this part: %s/%s\n" msgstr "" #: ../../messages.c:1796 #, c-format msgid "An error occurred while retrieving this part: %s\n" msgstr "" #: ../../messages.c:1956 msgid "Attach signature to email messages?" msgstr "" #: ../../messages.c:1959 msgid "Use this signature:" msgstr "" #: ../../messages.c:1961 msgid "Default character set for email headers:" msgstr "" #: ../../messages.c:1964 msgid "Preferred email address" msgstr "" #: ../../messages.c:1966 msgid "Preferred display name for email messages" msgstr "" #: ../../messages.c:1970 msgid "Preferred display name for bulletin board posts" msgstr "" #: ../../messages.c:1973 msgid "Mailbox view mode" msgstr "" #: ../../inetconf.c:110 ../../inetconf.c:119 ../../inetconf.c:133 #: ../../inetconf.c:159 ../../netconf.c:156 ../../netconf.c:183 #: ../../netconf.c:191 ../../netconf.c:239 ../../netconf.c:247 msgid "Invalid Parameter" msgstr "" #: ../../inetconf.c:126 msgid " has been deleted." msgstr "" #. added status message #: ../../inetconf.c:144 msgid " added." msgstr "" #: ../../who.c:154 msgid "Edit your session display" msgstr "" #: ../../who.c:158 msgid "" "This screen allows you to change the way your session appears in the 'Who is " "online' listing. To turn off any 'fake' name you've previously set, simply " "click the appropriate 'change' button without typing anything in the " "corresponding box. " msgstr "" #: ../../who.c:171 msgid "Room name:" msgstr "" #: ../../who.c:176 msgid "Change room name" msgstr "" #: ../../who.c:180 msgid "Host name:" msgstr "" #: ../../who.c:185 msgid "Change host name" msgstr "" #: ../../who.c:190 ../../static/t/aide/edituser/detailview.html:20 #: ../../static/t/openid_manual_create.html:9 #: ../../static/t/get_logged_in.html:57 ../../static/t/get_logged_in.html:72 msgid "User name:" msgstr "" #: ../../who.c:195 msgid "Change user name" msgstr "" #: ../../siteconfig.c:46 ../../siteconfig.c:64 ../../roomlist.c:44 #: ../../roomlist.c:394 ../../static/t/room/edit/tab_expire.html:72 #: ../../static/t/room/edit/tab_config.html:149 #: ../../static/t/room/edit/tab_access.html:42 msgid "Higher access is required to access this function." msgstr "" #: ../../siteconfig.c:256 msgid "WARNING: Failed to parse Server Config; do you run a to new citserver?" msgstr "" #: ../../siteconfig.c:319 msgid "Your system configuration has been updated." msgstr "" #: ../../wiki.c:69 ../../wiki.c:162 ../../wiki.c:282 #, c-format msgid "There is no room called '%s'." msgstr "" #: ../../wiki.c:76 #, c-format msgid "'%s' is not a Wiki room." msgstr "" #: ../../wiki.c:110 #, c-format msgid "There is no page called '%s' here." msgstr "" #: ../../wiki.c:112 msgid "" "Select the 'Edit this page' link in the room banner if you would like to " "create this page." msgstr "" #: ../../wiki.c:181 ../../static/t/msg_listview.html:11 msgid "Date" msgstr "" #: ../../wiki.c:182 msgid "Author" msgstr "" #: ../../wiki.c:209 ../../wiki.c:218 msgid "(show)" msgstr "" #: ../../wiki.c:211 ../../static/t/navbar.html:145 msgid "Current version" msgstr "" #: ../../wiki.c:223 msgid "(revert)" msgstr "" #: ../../wiki.c:300 msgid "Page title" msgstr "" #: ../../webcit.c:316 msgid "Authorization Required" msgstr "" #: ../../webcit.c:324 #, c-format msgid "" "The resource you requested requires a valid username and password. You could " "not be logged in: %s\n" msgstr "" #: ../../webcit.c:647 ../../auth.c:526 msgid "" "This program was unable to connect or stay connected to the Citadel server. " "Please report this problem to your system administrator." msgstr "" "Αυτό το πρόγραμμα ήταν αδύνατο να συνδεθεί και να μείνει συνδεδεμένο με τον " "εξυπηρετητή του Citadel. Παρακαλώ ενημερώστε τον διαχειριστή του συστήματος " "για το συγκεκριμένο πρόβλημα." #: ../../webcit.c:654 ../../auth.c:532 msgid "Read More..." msgstr "Διαβάστε περισσότερα..." #: ../../smtpqueue.c:134 ../../static/t/aide/ignetconf/section.html:5 #: ../../static/t/view_mailq/message.html:2 msgid "(Delete)" msgstr "" #: ../../smtpqueue.c:334 msgid "First Attempt pending" msgstr "" #: ../../roomlist.c:99 msgid "My Folders" msgstr "" #: ../../downloads.c:289 #, c-format msgid "An error occurred while retrieving this file: %s\n" msgstr "" #: ../../roomtokens.c:572 msgid "file" msgstr "" #: ../../roomtokens.c:574 msgid "files" msgstr "" #: ../../summary.c:128 msgid "(None)" msgstr "" #: ../../summary.c:184 msgid "(Nothing)" msgstr "" #: ../../msg_renderers.c:579 ../../static/t/who/bio.html:15 msgid "edit" msgstr "" #: ../../msg_renderers.c:1119 msgid "I don't know how to display " msgstr "" #: ../../msg_renderers.c:1353 msgid "(no subject)" msgstr "" #: ../../addressbook_popup.c:186 msgid "Add" msgstr "Προσθήκη" #. an erased user #: ../../auth.c:30 ../../static/t/aide/edituser/detailview.html:43 #: ../../static/t/aide/siteconfig/tab_access.html:40 #: ../../static/t/aide/siteconfig/tab_access.html:51 msgid "Deleted" msgstr "Διαγραφή" #. a new user #: ../../auth.c:33 ../../static/t/aide/edituser/detailview.html:44 #: ../../static/t/aide/siteconfig/tab_access.html:41 #: ../../static/t/aide/siteconfig/tab_access.html:52 #: ../../static/t/get_logged_in.html:79 msgid "New User" msgstr "Νέος χρήστης" #. a trouble maker #: ../../auth.c:36 ../../static/t/aide/edituser/detailview.html:45 #: ../../static/t/aide/siteconfig/tab_access.html:42 #: ../../static/t/aide/siteconfig/tab_access.html:53 msgid "Problem User" msgstr "Προβληματικός χρήστης" #. user with normal privileges #: ../../auth.c:39 ../../static/t/aide/edituser/detailview.html:46 #: ../../static/t/aide/siteconfig/tab_access.html:43 #: ../../static/t/aide/siteconfig/tab_access.html:54 msgid "Local User" msgstr "Τοπικός χρήστης" #. a user that may access network resources #: ../../auth.c:42 ../../static/t/aide/edituser/detailview.html:47 #: ../../static/t/aide/siteconfig/tab_access.html:44 #: ../../static/t/aide/siteconfig/tab_access.html:55 msgid "Network User" msgstr "Χρήστης δικτύου" #. a moderator #: ../../auth.c:45 ../../static/t/aide/edituser/detailview.html:48 #: ../../static/t/aide/siteconfig/tab_access.html:45 #: ../../static/t/aide/siteconfig/tab_access.html:56 msgid "Preferred User" msgstr "" #. chief #: ../../auth.c:48 ../../static/t/aide/edituser/detailview.html:49 #: ../../static/t/aide/siteconfig/tab_access.html:46 #: ../../static/t/aide/siteconfig/tab_access.html:57 msgid "Admin" msgstr "Κύριος χρήστης" #: ../../auth.c:513 ../../static/t/iconbar.html:80 #: ../../static/t/confirmlogoff.html:3 #: ../../static/t/menu/basic_commands.html:19 msgid "Log off" msgstr "Έξοδος" #: ../../auth.c:537 msgid "Log in again" msgstr "Συνδεθείτε ξανά" #: ../../auth.c:585 ../../static/t/aide/usermanagement.html:3 msgid "Validate new users" msgstr "Επιβεβαιώστε νέους χρήστες" #: ../../auth.c:605 msgid "No users require validation at this time." msgstr "Δεν υπάρχουν χρήστες για επιβεβαίωση αυτή τη στιγμή" #: ../../auth.c:655 msgid "very weak" msgstr "πολύ αδύναμο" #: ../../auth.c:658 msgid "weak" msgstr "ασθενές" #: ../../auth.c:661 msgid "ok" msgstr "ok!" #: ../../auth.c:665 msgid "strong" msgstr "ισχυρό" #: ../../auth.c:683 #, c-format msgid "Current access level: %d (%s)\n" msgstr "" #: ../../auth.c:691 msgid "Select access level for this user:" msgstr "Επιλέξτε ομάδα διαχείρησης για τον χρήστη:" #: ../../auth.c:776 ../../static/t/menu/your_info.html:4 msgid "Change your password" msgstr "Αλλάξτε τον κωδικό πρόσβασης" #: ../../auth.c:800 msgid "Enter new password:" msgstr "Εισάγετε νέο κωδικό πρόσβασης:" #: ../../auth.c:804 msgid "Enter it again to confirm:" msgstr "Εισάγετε το νέο κωδικό πρόσβασης ξανά για επιβεβαίωση:" #: ../../auth.c:810 msgid "Change password" msgstr "Αλλάξτε κωδικό πρόσβασης" #: ../../auth.c:830 msgid "Cancelled. Password was not changed." msgstr "Ακυρώθηκε. Ο κωδικός πρόσβασης δεν άλλαξε." #: ../../auth.c:839 msgid "They don't match. Password was not changed." msgstr "Δεν ταιριάζουν. Ο κωδικός πρόσβασης δεν άλλαξε." #: ../../auth.c:845 msgid "Blank passwords are not allowed." msgstr "Δεν επιτρέπεται κένο πεδίο στον κωδικό" #: ../../openid.c:34 msgid "Manage Account/OpenID Associations" msgstr "" #: ../../openid.c:52 msgid "Do you really want to delete this OpenID?" msgstr "" #: ../../openid.c:53 msgid "(delete)" msgstr "" #: ../../openid.c:61 msgid "Add an OpenID: " msgstr "" #: ../../openid.c:64 msgid "Attach" msgstr "" #: ../../openid.c:68 #, c-format msgid "%s does not permit authentication via OpenID." msgstr "" #: ../../html2html.c:136 #, c-format msgid "realloc() error! couldn't get %d bytes: %s" msgstr "" #: ../../static/t/viewomatic.html:4 msgid "View as:" msgstr "" #: ../../static/t/sieve/list.html:32 ../../static/t/sieve/none.html:4 #: ../../static/t/menu/your_info.html:7 msgid "View/edit server-side mail filters" msgstr "" #: ../../static/t/sieve/list.html:41 msgid "When new mail arrives: " msgstr "" #: ../../static/t/sieve/list.html:43 msgid "Leave it in my inbox without filtering" msgstr "" #: ../../static/t/sieve/list.html:44 msgid "Filter it according to rules selected below" msgstr "" #: ../../static/t/sieve/list.html:45 msgid "Filter it through a manually edited script (advanced users only)" msgstr "" #: ../../static/t/sieve/list.html:52 msgid "Your incoming mail will not be filtered through any scripts." msgstr "" #: ../../static/t/sieve/list.html:64 msgid "Add rule" msgstr "" #: ../../static/t/sieve/list.html:71 msgid "The currently active script is: " msgstr "" #: ../../static/t/sieve/list.html:76 ../../static/t/sieve/add.html:3 msgid "Add or delete scripts" msgstr "" #: ../../static/t/sieve/display_one.html:16 msgid "If" msgstr "" #: ../../static/t/sieve/display_one.html:21 msgid "To or Cc" msgstr "" #: ../../static/t/sieve/display_one.html:23 msgid "Reply-to" msgstr "" #: ../../static/t/sieve/display_one.html:24 #: ../../static/t/msg_listview.html:10 #: ../../static/t/view_mailq/header.html:27 msgid "Sender" msgstr "" #: ../../static/t/sieve/display_one.html:25 msgid "Resent-From" msgstr "" #: ../../static/t/sieve/display_one.html:26 msgid "Resent-To" msgstr "" #: ../../static/t/sieve/display_one.html:27 msgid "Envelope From" msgstr "" #: ../../static/t/sieve/display_one.html:28 msgid "Envelope To" msgstr "" #: ../../static/t/sieve/display_one.html:29 msgid "X-Mailer" msgstr "" #: ../../static/t/sieve/display_one.html:30 msgid "X-Spam-Flag" msgstr "" #: ../../static/t/sieve/display_one.html:31 msgid "X-Spam-Status" msgstr "" #: ../../static/t/sieve/display_one.html:32 msgid "List-ID" msgstr "" #: ../../static/t/sieve/display_one.html:33 msgid "Message size" msgstr "" #: ../../static/t/sieve/display_one.html:34 #: ../../static/t/select_messageindex_all.html:1 msgid "All" msgstr "" #: ../../static/t/sieve/display_one.html:41 msgid "contains" msgstr "" #: ../../static/t/sieve/display_one.html:42 msgid "does not contain" msgstr "" #: ../../static/t/sieve/display_one.html:43 msgid "is" msgstr "" #: ../../static/t/sieve/display_one.html:44 msgid "is not" msgstr "" #: ../../static/t/sieve/display_one.html:45 msgid "matches" msgstr "" #: ../../static/t/sieve/display_one.html:46 msgid "does not match" msgstr "" #: ../../static/t/sieve/display_one.html:52 msgid "(All messages)" msgstr "" #: ../../static/t/sieve/display_one.html:56 msgid "is larger than" msgstr "" #: ../../static/t/sieve/display_one.html:57 msgid "is smaller than" msgstr "" #: ../../static/t/sieve/display_one.html:59 msgid "bytes" msgstr "" #: ../../static/t/sieve/display_one.html:65 msgid "Keep" msgstr "" #: ../../static/t/sieve/display_one.html:66 msgid "Discard silently" msgstr "" #: ../../static/t/sieve/display_one.html:67 msgid "Reject" msgstr "" #: ../../static/t/sieve/display_one.html:68 msgid "Move message to" msgstr "" #: ../../static/t/sieve/display_one.html:69 msgid "Forward to" msgstr "" #: ../../static/t/sieve/display_one.html:70 msgid "Vacation" msgstr "" #: ../../static/t/sieve/display_one.html:82 msgid "Message:" msgstr "" #: ../../static/t/sieve/display_one.html:90 msgid "and then" msgstr "" #: ../../static/t/sieve/display_one.html:93 msgid "continue processing" msgstr "" #: ../../static/t/sieve/display_one.html:94 msgid "stop" msgstr "" #: ../../static/t/sieve/none.html:9 msgid "" "This installation of Citadel was built without support for server-side mail " "filtering.
    Please contact your system administrator if you require this " "feature.
    " msgstr "" #: ../../static/t/sieve/add.html:9 msgid "Add a new script" msgstr "" #: ../../static/t/sieve/add.html:10 msgid "" "To create a new script, enter the desired script name in the box below and " "click 'Create'." msgstr "" #: ../../static/t/sieve/add.html:14 msgid "Script name: " msgstr "" #: ../../static/t/sieve/add.html:18 msgid "Edit scripts" msgstr "" #: ../../static/t/sieve/add.html:20 msgid "Return to the script editing screen" msgstr "" #: ../../static/t/sieve/add.html:23 msgid "Delete scripts" msgstr "" #: ../../static/t/sieve/add.html:24 msgid "" "To delete an existing script, select the script name from the list and click " "'Delete'." msgstr "" #: ../../static/t/msg/confirm_move.html:4 msgid "Confirm move of message" msgstr "" #: ../../static/t/msg/confirm_move.html:12 msgid "Move this message to:" msgstr "" #: ../../static/t/login.html:5 msgid "powered by" msgstr "" #: ../../static/t/login.html:15 ../../static/t/iconbar.html:88 #: ../../static/t/get_logged_in.html:64 ../../static/t/get_logged_in.html:88 #: ../../static/t/get_logged_in.html:93 ../../static/t/get_logged_in.html:98 #: ../../static/t/get_logged_in.html:107 #, fuzzy msgid "Log in" msgstr "Συνδεθείτε ξανά" #: ../../static/t/trailing.html:14 msgid "" "WARNING: You have JavaScript disabled in your web browser. Many functions " "of this system will not work properly." msgstr "" #: ../../static/t/view_submessage.html:4 #: ../../static/t/view_message/replyquote.html:3 #: ../../static/t/view_message/replyquote.html:7 #: ../../static/t/view_message/print.html:8 ../../static/t/view_message.html:7 msgid "from " msgstr "" #: ../../static/t/searchomatic.html:4 msgid "Search: " msgstr "" #: ../../static/t/listsub/display.html:16 msgid "You are subscribing " msgstr "" #: ../../static/t/listsub/display.html:17 #, fuzzy msgid " to the " msgstr "Πήγαινε στη σελίδα: " #: ../../static/t/listsub/display.html:18 msgid " mailing list." msgstr "" #: ../../static/t/listsub/display.html:19 msgid "" "The listserver has sent you an e-mail with one additional Web link for you " "to click on to confirm your subscription." msgstr "" #: ../../static/t/listsub/display.html:20 msgid "" "This extra step is for your protection, as it prevents others from being " "able to subscribe you to lists without your consent." msgstr "" #: ../../static/t/listsub/display.html:22 msgid "" "Please click on the link which is being e-mailed to you and your " "subscription will be confirmed." msgstr "" #: ../../static/t/listsub/display.html:27 #: ../../static/t/listsub/display.html:47 msgid "ERROR" msgstr "" #: ../../static/t/listsub/display.html:35 msgid "You are unsubscribing" msgstr "" #: ../../static/t/listsub/display.html:37 msgid "from the" msgstr "" #: ../../static/t/listsub/display.html:39 msgid "mailing list." msgstr "" #: ../../static/t/listsub/display.html:40 msgid "" "The listserver has sent you an e-mail with one additional Web link for you " "to click on to confirm your unsubscription." msgstr "" #: ../../static/t/listsub/display.html:41 msgid "" "This extra step is for your protection, as it prevents others from being " "able to unsubscribe you from lists without your consent." msgstr "" #: ../../static/t/listsub/display.html:43 msgid "" "Please click on the link which is being e-mailed to you and your " "unsubscription will be confirmed." msgstr "" #: ../../static/t/listsub/display.html:44 msgid "Back..." msgstr "" #: ../../static/t/listsub/display.html:54 msgid "Confirmation successful!" msgstr "" #: ../../static/t/listsub/display.html:56 msgid "Confirmation failed." msgstr "" #: ../../static/t/listsub/display.html:57 msgid "This could mean one of two things:" msgstr "" #: ../../static/t/listsub/display.html:59 msgid "" "You waited too long to confirm your subscribe/unsubscribe request (the " "confirmation link is only valid for three days)" msgstr "" #: ../../static/t/listsub/display.html:60 msgid "" "You have already successfully confirmed your subscribe/unsubscribe " "request and are attempting to do it again." msgstr "" #: ../../static/t/listsub/display.html:62 msgid "The error returned by the server was: " msgstr "" #: ../../static/t/listsub/display.html:70 msgid "Name of list:" msgstr "" #: ../../static/t/listsub/display.html:75 msgid "Your e-mail address:" msgstr "" #: ../../static/t/listsub/display.html:79 msgid "(If subscribing) preferred format: " msgstr "" #: ../../static/t/listsub/display.html:80 msgid "One message at a time" msgstr "" #: ../../static/t/listsub/display.html:81 msgid "Digest format" msgstr "" #: ../../static/t/listsub/display.html:89 msgid "" "When you attempt to subscribe or unsubscribe to a mailing list, you will " "receive an e-mail containing one additional web link to click on for final " "confirmation." msgstr "" #: ../../static/t/listsub/display.html:90 msgid "" "This extra step is for your protection, as it prevents others from being " "able to subscribe or unsubscribe you to lists." msgstr "" #: ../../static/t/floors_edit_one.html:11 msgid "(delete floor)" msgstr "" #: ../../static/t/floors_edit_one.html:13 msgid "(edit graphic)" msgstr "" #: ../../static/t/floors.html:4 msgid "Add/change/delete floors" msgstr "" #: ../../static/t/floors.html:10 msgid "Floor number" msgstr "" #: ../../static/t/floors.html:11 msgid "Floor name" msgstr "" #: ../../static/t/floors.html:12 msgid "Number of rooms" msgstr "" #: ../../static/t/floors.html:13 msgid "Floor CSS" msgstr "" #: ../../static/t/files.html:4 msgid "Files available for download in" msgstr "" #: ../../static/t/files.html:9 msgid "Upload a file:" msgstr "" #: ../../static/t/files.html:30 msgid "Filename" msgstr "" #: ../../static/t/files.html:31 msgid "Size" msgstr "" #: ../../static/t/files.html:32 msgid "Content" msgstr "" #: ../../static/t/files.html:33 msgid "Description" msgstr "" #: ../../static/t/edit_message.html:9 ../../static/t/iconbar.html:50 #: ../../static/t/iconbar.html:59 msgid "Loading" msgstr "" #: ../../static/t/edit_message.html:23 msgid "from" msgstr "" #: ../../static/t/edit_message.html:29 ../../static/t/edit_message.html:38 msgid "Anonymous" msgstr "" #: ../../static/t/edit_message.html:47 msgid "in" msgstr "" #: ../../static/t/edit_message.html:51 msgid "To:" msgstr "" #: ../../static/t/edit_message.html:57 #: ../../static/t/view_message/print.html:15 #: ../../static/t/view_message.html:15 msgid "CC:" msgstr "" #: ../../static/t/edit_message.html:63 msgid "BCC:" msgstr "" #: ../../static/t/edit_message.html:71 msgid "Subject (optional):" msgstr "" #: ../../static/t/edit_message.html:71 #: ../../static/t/view_message/replyquote.html:8 #: ../../static/t/view_message/print.html:16 #: ../../static/t/view_message.html:16 msgid "Subject:" msgstr "" #: ../../static/t/edit_message.html:86 msgid "--- forwarded message ---" msgstr "" #: ../../static/t/edit_message.html:110 msgid "Post message" msgstr "" #: ../../static/t/edit_message.html:118 msgid "Save to Drafts" msgstr "" #: ../../static/t/edit_message.html:126 #: ../../static/t/edit_message/attachments_pane.html:5 msgid "Attachments:" msgstr "" #: ../../static/t/aide/display_serverrestart_page.html:4 msgid "Message to your Users:" msgstr "" #: ../../static/t/aide/display_generic_result.html:2 msgid "Server command results" msgstr "" #: ../../static/t/aide/display_generic_result.html:18 msgid "Enter another command" msgstr "" #: ../../static/t/aide/display_generic_result.html:19 msgid "Return to menu" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:3 msgid "Site configuration" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:6 #: ../../static/t/aide/edituser/select.html:9 msgid "You need to be aide to view this." msgstr "" #: ../../static/t/aide/display_sitewide_config.html:11 msgid "General" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:12 #, fuzzy msgid "Access" msgstr "Αποδοχή" #: ../../static/t/aide/display_sitewide_config.html:13 #, fuzzy msgid "Network" msgstr "Χρήστης δικτύου" #: ../../static/t/aide/display_sitewide_config.html:14 msgid "Tuning" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:15 msgid "Directory" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:16 msgid "Auto-purger" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:17 msgid "Indexing/Journaling" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:18 #: ../../static/t/aide/siteconfig/tab_pushmail.html:1 msgid "Push Email" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:19 msgid "Pop3" msgstr "" #: ../../static/t/aide/usermanagement.html:2 msgid "Add, change, delete user accounts" msgstr "" #: ../../static/t/aide/display_inetconf.html:5 #: ../../static/t/aide/display_menu.html:5 msgid "System Administration Menu" msgstr "" #: ../../static/t/aide/display_inetconf.html:6 #: ../../static/t/aide/display_menu.html:6 msgid "Room Admin Menu" msgstr "" #: ../../static/t/aide/display_inetconf.html:13 msgid "Local host aliases" msgstr "" #: ../../static/t/aide/display_inetconf.html:14 msgid "Directory domains" msgstr "" #: ../../static/t/aide/display_inetconf.html:15 msgid "Smart hosts" msgstr "" #: ../../static/t/aide/display_inetconf.html:16 msgid "Fallback smart hosts" msgstr "" #: ../../static/t/aide/display_inetconf.html:17 msgid "Notification hosts" msgstr "" #: ../../static/t/aide/display_inetconf.html:22 msgid "RBL hosts" msgstr "" #: ../../static/t/aide/display_inetconf.html:23 msgid "SpamAssassin hosts" msgstr "" #: ../../static/t/aide/display_inetconf.html:24 msgid "ClamAV clamd hosts" msgstr "" #: ../../static/t/aide/display_inetconf.html:25 msgid "Masqueradable domains" msgstr "" #: ../../static/t/aide/edituser/select.html:5 msgid "Edit or delete users" msgstr "" #: ../../static/t/aide/edituser/select.html:17 msgid "Add users" msgstr "" #: ../../static/t/aide/edituser/select.html:20 msgid "Edit or Delete users" msgstr "" #: ../../static/t/aide/edituser/box_select.html:1 msgid "" "To edit an existing user account, select the user name from the list and " "click 'Edit'." msgstr "" #: ../../static/t/aide/edituser/detailview.html:4 msgid "Edit user account: " msgstr "" #: ../../static/t/aide/edituser/detailview.html:24 #: ../../static/t/room/edit/tab_feed.html:14 #, fuzzy msgid "Password" msgstr "Αλλάξτε κωδικό πρόσβασης" #: ../../static/t/aide/edituser/detailview.html:28 msgid "Permission to send Internet mail" msgstr "" #: ../../static/t/aide/edituser/detailview.html:32 msgid "Number of logins" msgstr "" #: ../../static/t/aide/edituser/detailview.html:36 msgid "Messages submitted" msgstr "" #: ../../static/t/aide/edituser/detailview.html:40 msgid "Access level" msgstr "" #: ../../static/t/aide/edituser/detailview.html:54 msgid "User ID number" msgstr "" #: ../../static/t/aide/edituser/detailview.html:58 msgid "Date and time of last login" msgstr "" #: ../../static/t/aide/edituser/detailview.html:68 msgid "Auto-purge after this many days" msgstr "" #: ../../static/t/aide/edituser/add.html:1 msgid "" "To create a new user account, enter the desired user name in the box below " "and click 'Create'." msgstr "" #: ../../static/t/aide/edituser/add.html:5 #, fuzzy msgid "New user: " msgstr "Νέος χρήστης" #: ../../static/t/aide/display_generic_cmd.html:4 msgid "Enter a server command" msgstr "" #: ../../static/t/aide/display_generic_cmd.html:12 msgid "" "This screen allows you to enter Citadel server commands which are not " "supported by WebCit. If you do not know what that means, then this screen " "will not be of much use to you." msgstr "" #: ../../static/t/aide/display_generic_cmd.html:15 msgid "Enter command:" msgstr "" #: ../../static/t/aide/display_generic_cmd.html:17 msgid "Command input (if requesting SEND_LISTING transfer mode):" msgstr "" #: ../../static/t/aide/display_generic_cmd.html:20 msgid "Detected host header is " msgstr "" #: ../../static/t/aide/display_ignetconf.html:4 msgid "Network configuration" msgstr "" #: ../../static/t/aide/display_ignetconf.html:10 #: ../../static/t/aide/ignetconf/edit_node.html:5 #: ../../static/t/aide/ignetconf/add.html:5 msgid "Add a new node" msgstr "" #: ../../static/t/aide/display_ignetconf.html:14 msgid "Currently configured nodes" msgstr "" #: ../../static/t/aide/display_serverrestart.html:26 msgid "Restart Citadel" msgstr "" #: ../../static/t/aide/floorconfig.html:2 msgid "Add, change, or delete floors" msgstr "" #: ../../static/t/aide/serverrestart/box.html:3 msgid "Please wait while the Citadel server is restarted... " msgstr "" #: ../../static/t/aide/serverrestart/box_page_do.html:3 msgid "" "Please wait while your users are being paged, the citadel server will be " "restarted after that... " msgstr "" #: ../../static/t/aide/inet/masqdomains.html:2 msgid "(Domains as which users are allowed to masquerade)" msgstr "" #: ../../static/t/aide/inet/rbldns.html:2 msgid "(hosts running a Realtime Blackhole List)" msgstr "" #: ../../static/t/aide/inet/dirnames.html:2 msgid "(domains mapped with the Global Address Book)" msgstr "" #: ../../static/t/aide/inet/notify.html:2 msgid "(URLS for notifications when users receive new mails; )" msgstr "" #: ../../static/t/aide/inet/notify.html:2 msgid "Syntax: Notificationtemplatename:http[s]://user:password@hostname/path" msgstr "" #: ../../static/t/aide/inet/smarthosts.html:2 msgid "(if present, forward all outbound mail to one of these hosts)" msgstr "" #: ../../static/t/aide/inet/aliases.html:2 msgid "(domains for which this host receives mail)" msgstr "" #: ../../static/t/aide/inet/clamav.html:2 msgid "(hosts running the ClamAV clamd service)" msgstr "" #: ../../static/t/aide/inet/spamass.html:2 msgid "(hosts running the SpamAssassin service)" msgstr "" #: ../../static/t/aide/inet/fallbackhosts.html:2 msgid "(send outbound mail to these hosts only when direct delivery fails)" msgstr "" #: ../../static/t/aide/ignetconf/display_confirm_delete.html:5 msgid "Confirm delete" msgstr "" #: ../../static/t/aide/ignetconf/display_confirm_delete.html:11 msgid "Are you sure you want to delete " msgstr "" #: ../../static/t/aide/ignetconf/display_confirm_delete.html:14 #: ../../static/t/prefs/box.html:198 ../../static/t/iconbar/edit.html:19 #: ../../static/t/iconbar/edit.html:26 ../../static/t/iconbar/edit.html:32 #: ../../static/t/iconbar/edit.html:39 ../../static/t/iconbar/edit.html:45 #: ../../static/t/iconbar/edit.html:52 ../../static/t/iconbar/edit.html:58 #: ../../static/t/iconbar/edit.html:64 ../../static/t/iconbar/edit.html:70 #: ../../static/t/iconbar/edit.html:76 ../../static/t/iconbar/edit.html:82 #: ../../static/t/iconbar/edit.html:88 msgid "Yes" msgstr "" #: ../../static/t/aide/ignetconf/display_confirm_delete.html:16 #: ../../static/t/prefs/box.html:200 ../../static/t/iconbar/edit.html:20 #: ../../static/t/iconbar/edit.html:27 ../../static/t/iconbar/edit.html:33 #: ../../static/t/iconbar/edit.html:40 ../../static/t/iconbar/edit.html:46 #: ../../static/t/iconbar/edit.html:53 ../../static/t/iconbar/edit.html:59 #: ../../static/t/iconbar/edit.html:65 ../../static/t/iconbar/edit.html:71 #: ../../static/t/iconbar/edit.html:77 ../../static/t/iconbar/edit.html:83 #: ../../static/t/iconbar/edit.html:89 msgid "No" msgstr "" #: ../../static/t/aide/ignetconf/edit_node.html:15 #: ../../static/t/aide/ignetconf/add.html:15 #: ../../static/t/aide/siteconfig/tab_general.html:8 msgid "Node name" msgstr "" #: ../../static/t/aide/ignetconf/edit_node.html:17 #: ../../static/t/aide/ignetconf/add.html:17 msgid "Shared secret" msgstr "" #: ../../static/t/aide/ignetconf/edit_node.html:19 #: ../../static/t/aide/ignetconf/add.html:19 msgid "Host or IP address" msgstr "" #: ../../static/t/aide/ignetconf/edit_node.html:21 #: ../../static/t/aide/ignetconf/add.html:21 msgid "Port number" msgstr "" #: ../../static/t/aide/ignetconf/section.html:4 msgid "(Edit)" msgstr "" #: ../../static/t/aide/display_menu.html:12 msgid "Global Configuration" msgstr "" #: ../../static/t/aide/display_menu.html:14 msgid "User account management" msgstr "" #: ../../static/t/aide/display_menu.html:16 msgid "Shutdown Citadel" msgstr "" #: ../../static/t/aide/display_menu.html:18 msgid "Rooms and Floors" msgstr "" #: ../../static/t/aide/global_config.html:2 msgid "Edit site-wide configuration" msgstr "" #: ../../static/t/aide/global_config.html:3 msgid "Domain names and Internet mail configuration" msgstr "" #: ../../static/t/aide/global_config.html:4 msgid "Configure replication with other Citadel servers" msgstr "" #: ../../static/t/aide/global_config.html:5 #: ../../static/t/view_mailq/header.html:3 msgid "View the outbound SMTP queue" msgstr "" #: ../../static/t/aide/restart.html:2 msgid "Restart Now" msgstr "" #: ../../static/t/aide/restart.html:3 msgid "Restart after paging users" msgstr "" #: ../../static/t/aide/restart.html:4 msgid "Restart when all users are idle" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:1 msgid "General site configuration items" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:5 msgid "Change Login Logo" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:6 msgid "Change Logout Logo" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:11 msgid "Fully qualified domain name" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:14 msgid "Human-readable node name" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:17 msgid "Telephone number" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:20 msgid "Paginator prompt (for text mode clients)" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:23 msgid "Geographic location of this system" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:26 msgid "Name of system administrator" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:29 msgid "Default timezone for unzoned calendar items" msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:1 msgid "Configure automatic expiry of old messages" msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:2 msgid "These settings may be overridden on a per-floor or per-room basis." msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:6 msgid "Hour to run database auto-purge" msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:66 msgid "Default message expire policy for public rooms" msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:68 #: ../../static/t/aide/siteconfig/tab_autopurger.html:86 #: ../../static/t/room/edit/tab_expire.html:17 #: ../../static/t/room/edit/tab_expire.html:45 msgid "Never automatically expire messages" msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:71 #: ../../static/t/aide/siteconfig/tab_autopurger.html:89 #: ../../static/t/room/edit/tab_expire.html:20 #: ../../static/t/room/edit/tab_expire.html:48 msgid "Expire by message count" msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:73 #: ../../static/t/aide/siteconfig/tab_autopurger.html:92 #: ../../static/t/room/edit/tab_expire.html:23 #: ../../static/t/room/edit/tab_expire.html:51 msgid "Expire by message age" msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:75 #: ../../static/t/aide/siteconfig/tab_autopurger.html:94 #: ../../static/t/room/edit/tab_expire.html:25 #: ../../static/t/room/edit/tab_expire.html:53 msgid "Number of messages or days: " msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:81 msgid "Default message expire policy for private mailboxes" msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:83 msgid "Same policy as public rooms" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:1 #, fuzzy msgid "Network services" msgstr "Χρήστης δικτύου" #: ../../static/t/aide/siteconfig/tab_network.html:2 #: ../../static/t/aide/siteconfig/tab_directory.html:3 msgid "" "Changes made on this screen will not take effect until you restart the " "Citadel server." msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:6 msgid "SMTP MTA port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:9 msgid "Correct forged From: lines during authenticated SMTP" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:12 msgid "Flag message as spam, instead of rejecting it" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:15 msgid "IMAP listener port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:19 msgid "Network run frequency (in seconds)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:22 msgid "Server IP address (0.0.0.0 for 'any')" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:25 msgid "SMTP MSA port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:28 msgid "IMAP over SSL port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:31 msgid "SMTP over SSL port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:34 msgid "Instantly expunge deleted messages in IMAP" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:38 msgid "Allow unauthenticated SMTP clients to spoof this sites domains" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:41 msgid "Postfix TCP Dictionary Port" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:41 msgid "-1 to disable" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:44 msgid "ManageSieve Port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:47 msgid "Perform RBL checks upon connect instead of after RCPT" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:50 msgid "Keep original from headers in IMAP" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:53 msgid "XMPP (Jabber) client to server port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:56 msgid "XMPP (Jabber) server to server port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_pop3.html:1 msgid "POP3" msgstr "" #: ../../static/t/aide/siteconfig/tab_pop3.html:6 msgid "POP3 listener port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_pop3.html:9 msgid "POP3 over SSL port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_pop3.html:12 msgid "POP3 fetch frequency in seconds" msgstr "" #: ../../static/t/aide/siteconfig/tab_pop3.html:15 msgid "POP3 fastest fetch frequency in seconds" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:1 msgid "Advanced server fine-tuning controls" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:5 msgid "Server connection idle timeout (in seconds)" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:8 msgid "Maximum concurrent sessions (0 = no limit)" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:11 msgid "Default user purge time (days)" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:14 msgid "Default room purge time (days)" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:17 msgid "Maximum message length" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:20 msgid "Minimum number of worker threads" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:23 msgid "Maximum number of worker threads" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:26 msgid "Automatically delete committed database logs" msgstr "" #: ../../static/t/aide/siteconfig/tab_pushmail.html:5 msgid "Funambol server host (blank to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_pushmail.html:8 msgid "Funambol server port " msgstr "" #: ../../static/t/aide/siteconfig/tab_pushmail.html:11 msgid "Funambol sync source" msgstr "" #: ../../static/t/aide/siteconfig/tab_pushmail.html:14 msgid "Funambol auth details (user:pass)" msgstr "" #: ../../static/t/aide/siteconfig/tab_pushmail.html:17 msgid "External pager tool (blank to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:1 msgid "Access controls and site policy settings" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:5 msgid "Allow aides to zap (forget) rooms" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:9 msgid "Quarantine messages from problem users" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:12 msgid "Name of quarantine room" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:17 msgid "Name of room to log pages" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:22 msgid "Authentication mode" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:24 msgid "Self contained" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:25 msgid "Host based" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:26 msgid "LDAP (RFC2307)" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:27 msgid "LDAP (Active Directory)" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:30 msgid "Master user name (blank to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:33 #, fuzzy msgid "Master user password" msgstr "Εισάγετε νέο κωδικό πρόσβασης:" #: ../../static/t/aide/siteconfig/tab_access.html:38 #, fuzzy msgid "Initial access level for new users" msgstr "Επιλέξτε ομάδα διαχείρησης για τον χρήστη:" #: ../../static/t/aide/siteconfig/tab_access.html:49 msgid "Access level required to create rooms" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:60 msgid "Automatically grant room-aide status to users who create private rooms" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:63 msgid "Automatically grant room-aide status to users who create BLOG rooms" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:66 msgid "Restrict access to Internet mail" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:71 msgid "Disable self-service user account creation" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:71 msgid "Hint: do not select both!" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:74 msgid "Require registration for new users" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:77 msgid "Allow anonymous guest access" msgstr "" #: ../../static/t/aide/siteconfig/tab_indexing.html:1 msgid "Indexing and Journaling" msgstr "" #: ../../static/t/aide/siteconfig/tab_indexing.html:2 msgid "Warning: these facilities are resource intensive." msgstr "" #: ../../static/t/aide/siteconfig/tab_indexing.html:6 msgid "Enable full text index" msgstr "" #: ../../static/t/aide/siteconfig/tab_indexing.html:9 msgid "Perform journaling of email messages" msgstr "" #: ../../static/t/aide/siteconfig/tab_indexing.html:13 msgid "Perform journaling of non-email messages" msgstr "" #: ../../static/t/aide/siteconfig/tab_indexing.html:16 msgid "Email destination of journalized messages" msgstr "" #: ../../static/t/aide/siteconfig/tab_directory.html:1 msgid "Configure the LDAP connector for Citadel" msgstr "" #: ../../static/t/aide/siteconfig/tab_directory.html:4 msgid "" "NOTE: This Citadel server has been built without LDAP support. These " "options will have no effect." msgstr "" #: ../../static/t/aide/siteconfig/tab_directory.html:9 msgid "Host name of LDAP server (blank to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_directory.html:13 msgid "Port number of LDAP server (blank to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_directory.html:16 msgid "Base DN" msgstr "" #: ../../static/t/aide/siteconfig/tab_directory.html:19 msgid "Bind DN" msgstr "" #: ../../static/t/aide/siteconfig/tab_directory.html:22 msgid "Password for bind DN" msgstr "" #: ../../static/t/iconbar.html:7 msgid "Language:" msgstr "" #: ../../static/t/iconbar.html:19 msgid "Mail" msgstr "" #: ../../static/t/iconbar.html:39 ../../static/t/iconbar/edit.html:61 #: ../../static/t/summary/page.html:30 msgid "Tasks" msgstr "" #: ../../static/t/iconbar.html:48 ../../static/t/iconbar/edit.html:67 msgid "Rooms" msgstr "" #: ../../static/t/iconbar.html:57 msgid "Online users" msgstr "" #: ../../static/t/iconbar.html:62 ../../static/t/iconbar/edit.html:79 msgid "Chat" msgstr "" #: ../../static/t/iconbar.html:65 msgid "Advanced" msgstr "" #: ../../static/t/iconbar.html:72 ../../static/t/room/edit/editroom.html:4 #: ../../static/t/room/edit.html:5 msgid "Administration" msgstr "" #: ../../static/t/iconbar.html:83 msgid "customize this menu" msgstr "" #: ../../static/t/iconbar.html:92 msgid "switch to room list" msgstr "" #: ../../static/t/iconbar.html:93 msgid "switch to menu" msgstr "" #: ../../static/t/iconbar.html:94 msgid "My folders" msgstr "" #: ../../static/t/view_message/list_attach.html:3 #: ../../static/t/view_message/inline_attach.html:4 msgid "View" msgstr "" #: ../../static/t/view_message/list_attach.html:4 #: ../../static/t/view_message/inline_attach.html:5 msgid "Download" msgstr "" #: ../../static/t/view_message/print.html:14 #: ../../static/t/view_message.html:14 msgid "to" msgstr "" #: ../../static/t/openid_manual_create.html:2 msgid "Your OpenID" msgstr "" #: ../../static/t/openid_manual_create.html:2 msgid "was successfully verified." msgstr "" #: ../../static/t/openid_manual_create.html:3 msgid "However, the user name" msgstr "" #: ../../static/t/openid_manual_create.html:3 msgid "conflicts with an existing user." msgstr "" #: ../../static/t/openid_manual_create.html:5 msgid "Please specify the user name you would like to use." msgstr "" #: ../../static/t/files/graphicsupload.html:2 msgid "Image upload" msgstr "" #: ../../static/t/files/graphicsupload.html:6 msgid "You can upload an image directly from your computer" msgstr "" #: ../../static/t/files/graphicsupload.html:8 msgid "Please select a file to upload:" msgstr "" #: ../../static/t/files/section_onefile.html:20 msgid "Slideshow" msgstr "" #: ../../static/t/roombanner.html:10 ../../static/t/roombanner.html:11 msgid "new of" msgstr "" #: ../../static/t/roombanner.html:10 ../../static/t/roombanner.html:11 #: ../../static/t/msg_listselector_bottom.html:7 #: ../../static/t/msg_listselector_top.html:7 msgid "messages" msgstr "" #: ../../static/t/roombanner.html:28 msgid "Select page: " msgstr "" #: ../../static/t/who.html:13 msgid "Users currently on " msgstr "" #: ../../static/t/who.html:22 msgid "Click on a name to read user info. Click on" msgstr "" #: ../../static/t/who.html:24 msgid "to send an instant message to that user." msgstr "" #: ../../static/t/msg_listselector_bottom.html:2 #: ../../static/t/msg_listselector_top.html:2 msgid "Reading #" msgstr "" #: ../../static/t/msg_listselector_bottom.html:12 #: ../../static/t/msg_listselector_top.html:12 msgid "oldest to newest" msgstr "" #: ../../static/t/msg_listselector_bottom.html:20 #: ../../static/t/msg_listselector_top.html:20 msgid "newest to oldest" msgstr "" #: ../../static/t/newstartpage.html:4 msgid "New start page" msgstr "" #: ../../static/t/newstartpage.html:9 msgid "Your start page has been changed." msgstr "" #: ../../static/t/newstartpage.html:12 msgid "" "(Note: this does not change your browser's home page. It changes the page " "you begin on when you log on to" msgstr "" #: ../../static/t/no_new_msgs.html:3 msgid "No new messages." msgstr "" #: ../../static/t/view_blog/comment_box.html:8 msgid "Post a comment" msgstr "" #: ../../static/t/prefs/pushemail.html:2 msgid "Configure Push Email" msgstr "" #: ../../static/t/prefs/pushemail.html:9 msgid "Push email and SMS settings" msgstr "" #: ../../static/t/prefs/pushemail.html:17 msgid "" "If your administrator has enabled the functionality, Citadel can notify a " "Funambol server that you haved recieved new email and automatically " "syncronize any devices you have with the Funambol client installed." msgstr "" #: ../../static/t/prefs/pushemail.html:20 msgid "" "Alternatively, if the administrator has configured it, Citadel can send a " "text message to you when new mail arrives." msgstr "" #: ../../static/t/prefs/pushemail.html:26 msgid "Notify Funambol server" msgstr "" #: ../../static/t/prefs/pushemail.html:31 msgid "Send a text message to..." msgstr "" #: ../../static/t/prefs/pushemail.html:33 msgid "" "(Use international format, without any leading zeros, spaces or hypens, like " "+61415011501)" msgstr "" #: ../../static/t/prefs/pushemail.html:38 msgid "Use custom notification scheme configured by your Admin" msgstr "" #: ../../static/t/prefs/pushemail.html:43 msgid "Don‘t send any notifications" msgstr "" #: ../../static/t/prefs/box.html:9 msgid "Tree (folders) view" msgstr "" #: ../../static/t/prefs/box.html:11 msgid "Table (rooms) view" msgstr "" #: ../../static/t/prefs/box.html:20 msgid "12 hour (am/pm)" msgstr "" #: ../../static/t/prefs/box.html:25 msgid "24 hour" msgstr "" #: ../../static/t/prefs/box.html:152 msgid "Sunday" msgstr "" #: ../../static/t/prefs/box.html:153 msgid "Monday" msgstr "" #: ../../static/t/prefs/box.html:174 msgid "No signature" msgstr "" #: ../../static/t/prefs/box.html:238 msgid "Full-functionality" msgstr "" #: ../../static/t/prefs/box.html:241 msgid "Safe mode" msgstr "" #: ../../static/t/prefs/box.html:242 msgid "" "Safe mode is less intensive on your web browser, but not as fully featured." msgstr "" #: ../../static/t/wiki/pagelist.html:1 msgid "List of Wiki pages" msgstr "" #: ../../static/t/wiki/history.html:1 msgid "History of edits for this page" msgstr "" #: ../../static/t/who/list_static_header.html:1 msgid "Users currently on" msgstr "" #: ../../static/t/who/section.html:4 msgid "(kill)" msgstr "" #: ../../static/t/who/bio.html:4 ../../static/t/user/show.html:4 msgid "User profile" msgstr "" #: ../../static/t/who/summary.html:5 ../../static/t/who/box_list_static.html:6 #: ../../static/t/room/edit/tab_feed.html:13 msgid "User name" msgstr "" #: ../../static/t/who/summary.html:6 ../../static/t/who/box_list_static.html:7 msgid "Room" msgstr "" #: ../../static/t/who/box_list_static.html:8 msgid "From host" msgstr "" #: ../../static/t/view_message.html:19 msgid "Edit" msgstr "" #: ../../static/t/view_message.html:22 ../../static/t/view_message.html:26 msgid "Reply" msgstr "" #: ../../static/t/view_message.html:23 msgid "ReplyQuoted" msgstr "" #: ../../static/t/view_message.html:27 msgid "ReplyAll" msgstr "" #: ../../static/t/view_message.html:28 msgid "Forward" msgstr "" #: ../../static/t/view_message.html:31 ../../static/t/msg_listview.html:25 msgid "Move" msgstr "" #: ../../static/t/view_message.html:34 msgid "Headers" msgstr "" #: ../../static/t/view_message.html:35 ../../static/t/msg_listview.html:28 msgid "Print" msgstr "" #: ../../static/t/preferences.html:4 ../../static/t/preferences.html:7 msgid "Preferences and settings" msgstr "" #: ../../static/t/user/list.html:3 msgid "User list for " msgstr "" #: ../../static/t/user/list.html:9 msgid "User Name" msgstr "" #: ../../static/t/user/list.html:10 msgid "Number" msgstr "" #: ../../static/t/user/list.html:11 msgid "Access Level" msgstr "" #: ../../static/t/user/list.html:12 msgid "Last Login" msgstr "" #: ../../static/t/user/list.html:13 msgid "Total Logins" msgstr "" #: ../../static/t/user/list.html:14 msgid "Total Posts" msgstr "" #: ../../static/t/user/show.html:9 msgid "Click here to send an instant message to" msgstr "" #: ../../static/t/start_of_new_msgs.html:4 msgid "Old messages" msgstr "" #: ../../static/t/start_of_new_msgs.html:8 msgid "New messages" msgstr "" #: ../../static/t/display_main_menu.html:7 msgid "Basic commands" msgstr "" #: ../../static/t/display_main_menu.html:10 msgid "Your info" msgstr "" #: ../../static/t/display_main_menu.html:12 msgid "Advanced room commands" msgstr "" #: ../../static/t/iconbar/save.html:4 ../../static/t/iconbar/edit.html:4 msgid "Customize the icon bar" msgstr "" #: ../../static/t/iconbar/save.html:11 msgid "" "Your icon bar has been updated. Please select any of its choices to continue." msgstr "" #: ../../static/t/iconbar/save.html:11 msgid "" "You may need to force refresh (SHIFT-F5)> in order for changes to take effect" msgstr "" #: ../../static/t/iconbar/edit.html:11 msgid "Display icons as:" msgstr "" #: ../../static/t/iconbar/edit.html:12 msgid "pictures and text" msgstr "" #: ../../static/t/iconbar/edit.html:13 msgid "pictures only" msgstr "" #: ../../static/t/iconbar/edit.html:14 msgid "text only" msgstr "" #: ../../static/t/iconbar/edit.html:16 msgid "" "Select the icons you would like to see displayed in the 'icon bar' menu on " "the left side of the screen." msgstr "" #: ../../static/t/iconbar/edit.html:23 msgid "Site logo" msgstr "" #: ../../static/t/iconbar/edit.html:23 msgid "An icon describing this site" msgstr "" #: ../../static/t/iconbar/edit.html:29 msgid "Your summary page" msgstr "" #: ../../static/t/iconbar/edit.html:36 msgid "Mail (inbox)" msgstr "" #: ../../static/t/iconbar/edit.html:36 msgid "A shortcut to your email Inbox" msgstr "" #: ../../static/t/iconbar/edit.html:42 msgid "Your personal address book" msgstr "" #: ../../static/t/iconbar/edit.html:49 msgid "Your personal notes" msgstr "" #: ../../static/t/iconbar/edit.html:55 msgid "A shortcut to your personal calendar" msgstr "" #: ../../static/t/iconbar/edit.html:61 msgid "A shortcut to your personal task list" msgstr "" #: ../../static/t/iconbar/edit.html:67 msgid "" "Clicking this icon displays a list of all accessible rooms (or folders) " "available." msgstr "" #: ../../static/t/iconbar/edit.html:73 msgid "Who is online?" msgstr "" #: ../../static/t/iconbar/edit.html:73 msgid "Clicking this icon displays a list of all users currently logged in." msgstr "" #: ../../static/t/iconbar/edit.html:79 msgid "" "Clicking this icon enters real-time chat mode with other users in the same " "room." msgstr "" #: ../../static/t/iconbar/edit.html:85 msgid "Advanced options" msgstr "" #: ../../static/t/iconbar/edit.html:85 msgid "Access to the complete menu of Citadel functions." msgstr "" #: ../../static/t/iconbar/edit.html:91 msgid "Citadel logo" msgstr "" #: ../../static/t/iconbar/edit.html:91 msgid "Displays the 'Powered by Citadel' icon" msgstr "" #: ../../static/t/room/edit/tab_expire.html:8 msgid "Message expire policy for this room" msgstr "" #: ../../static/t/room/edit/tab_expire.html:14 msgid "Use the default policy for this floor" msgstr "" #: ../../static/t/room/edit/tab_expire.html:36 msgid "Message expire policy for this floor" msgstr "" #: ../../static/t/room/edit/tab_expire.html:42 msgid "Use the system default" msgstr "" #: ../../static/t/room/edit/editroom.html:5 ../../static/t/room/edit.html:6 msgid "Configuration" msgstr "" #: ../../static/t/room/edit/editroom.html:6 ../../static/t/room/edit.html:7 msgid "Message expire policy" msgstr "" #: ../../static/t/room/edit/editroom.html:7 ../../static/t/room/edit.html:8 msgid "Access controls" msgstr "" #: ../../static/t/room/edit/editroom.html:8 ../../static/t/room/edit.html:9 msgid "Sharing" msgstr "" #: ../../static/t/room/edit/editroom.html:9 ../../static/t/room/edit.html:10 msgid "Mailing list service" msgstr "" #: ../../static/t/room/edit/editroom.html:10 ../../static/t/room/edit.html:11 msgid "Remote retrieval" msgstr "" #: ../../static/t/room/edit/tab_config.html:6 msgid "name of room: " msgstr "" #: ../../static/t/room/edit/tab_config.html:10 #: ../../static/t/room/create.html:20 msgid "Resides on floor: " msgstr "" #: ../../static/t/room/edit/tab_config.html:16 #: ../../static/t/room/create.html:68 msgid "Type of room:" msgstr "" #: ../../static/t/room/edit/tab_config.html:22 #: ../../static/t/room/create.html:73 msgid "Public (automatically appears to everyone)" msgstr "" #: ../../static/t/room/edit/tab_config.html:28 #: ../../static/t/room/create.html:77 msgid "Private - hidden (accessible to anyone who knows its name)" msgstr "" #: ../../static/t/room/edit/tab_config.html:35 #: ../../static/t/room/create.html:81 msgid "Private - require password: " msgstr "" #: ../../static/t/room/edit/tab_config.html:44 #: ../../static/t/room/create.html:86 msgid "Private - invitation only" msgstr "" #: ../../static/t/room/edit/tab_config.html:51 #: ../../static/t/room/create.html:90 msgid "Personal (mailbox for you only)" msgstr "" #: ../../static/t/room/edit/tab_config.html:55 msgid "If private, cause current users to forget room" msgstr "" #: ../../static/t/room/edit/tab_config.html:61 msgid "Preferred users only" msgstr "" #: ../../static/t/room/edit/tab_config.html:66 msgid "Read-only room" msgstr "" #: ../../static/t/room/edit/tab_config.html:71 msgid "All users allowed to post may also delete messages" msgstr "" #: ../../static/t/room/edit/tab_config.html:76 msgid "File directory room" msgstr "" #: ../../static/t/room/edit/tab_config.html:80 msgid "Directory name: " msgstr "" #: ../../static/t/room/edit/tab_config.html:86 msgid "Uploading allowed" msgstr "" #: ../../static/t/room/edit/tab_config.html:91 msgid "Downloading allowed" msgstr "" #: ../../static/t/room/edit/tab_config.html:96 msgid "Visible directory" msgstr "" #: ../../static/t/room/edit/tab_config.html:103 #, fuzzy msgid "Network shared room" msgstr "Χρήστης δικτύου" #: ../../static/t/room/edit/tab_config.html:108 msgid "Permanent (does not auto-purge)" msgstr "" #: ../../static/t/room/edit/tab_config.html:113 msgid "Subject Required (Force users to specify a message subject)" msgstr "" #: ../../static/t/room/edit/tab_config.html:116 msgid "Anonymous messages" msgstr "" #: ../../static/t/room/edit/tab_config.html:122 msgid "No anonymous messages" msgstr "" #: ../../static/t/room/edit/tab_config.html:127 msgid "All messages are anonymous" msgstr "" #: ../../static/t/room/edit/tab_config.html:132 msgid "Prompt user when entering messages" msgstr "" #: ../../static/t/room/edit/tab_config.html:136 #, fuzzy msgid "Room aide: " msgstr "Πήγαινε στη σελίδα: " #: ../../static/t/room/edit/tab_listserv.html:5 msgid "" "The contents of this room are being mailed as individual messages " "to the following list recipients:

    " msgstr "" #: ../../static/t/room/edit/tab_listserv.html:19 msgid "" "The contents of this room are being mailed in digest form to the " "following list recipients:

    " msgstr "" #: ../../static/t/room/edit/tab_listserv.html:39 msgid "Add recipients from Contacts or other address books" msgstr "" #: ../../static/t/room/edit/tab_listserv.html:48 msgid "Allow non-subscribers to mail to this room." msgstr "" #: ../../static/t/room/edit/tab_listserv.html:54 msgid "Room post publication needs Admin permission." msgstr "" #: ../../static/t/room/edit/tab_listserv.html:59 msgid "Allow self-service subscribe/unsubscribe requests." msgstr "" #: ../../static/t/room/edit/tab_listserv.html:65 msgid "The URL for subscribe/unsubscribe is: " msgstr "" #: ../../static/t/room/edit/digestrecp_removal.html:1 #: ../../static/t/room/edit/pop3client_removal.html:9 #: ../../static/t/room/edit/listrecp_removal.html:1 #: ../../static/t/room/edit/rssclient_removal.html:5 msgid "(remove)" msgstr "" #: ../../static/t/room/edit/tab_admin.html:5 msgid "Delete this room" msgstr "" #: ../../static/t/room/edit/tab_admin.html:10 msgid "Set or change the icon for this rooms banner" msgstr "" #: ../../static/t/room/edit/tab_admin.html:14 msgid "Edit this rooms Info file" msgstr "" #: ../../static/t/room/edit/tab_share.html:5 msgid "Shared with" msgstr "" #: ../../static/t/room/edit/tab_share.html:6 msgid "Not shared with" msgstr "" #: ../../static/t/room/edit/tab_share.html:11 #: ../../static/t/room/edit/tab_share.html:21 msgid "Remote node name" msgstr "" #: ../../static/t/room/edit/tab_share.html:12 #: ../../static/t/room/edit/tab_share.html:22 msgid "Remote room name" msgstr "" #: ../../static/t/room/edit/tab_share.html:13 #: ../../static/t/room/edit/tab_share.html:23 #, fuzzy msgid "Actions" msgstr "Τοποθεσία" #: ../../static/t/room/edit/tab_share.html:35 msgid "" "When sharing a room, it must be shared from both ends. Adding a node to the " "'shared' list sends messages out, but in order to receive messages, the " "other nodes must be configured to send messages out to your system as well. " "
  • If the remote room name is blank, it is assumed that the room name is " "identical on the remote node.
  • If the remote room name is different, the " "remote node must also configure the name of the room here." msgstr "" #: ../../static/t/room/edit/tab_feed.html:2 msgid "" "Retrieve messages from these remote POP3 accounts and store them in this " "room:" msgstr "" #: ../../static/t/room/edit/tab_feed.html:12 msgid "Remote host" msgstr "" #: ../../static/t/room/edit/tab_feed.html:15 msgid "Keep messages on server?" msgstr "" #: ../../static/t/room/edit/tab_feed.html:16 msgid "Interval" msgstr "" #: ../../static/t/room/edit/tab_feed.html:31 msgid "Fetch the following RSS feeds and store them in this room:" msgstr "" #: ../../static/t/room/edit/tab_feed.html:43 msgid "Feed URL" msgstr "" #: ../../static/t/room/edit/tab_access.html:5 msgid "" "The users listed below have access to this room. To remove a user from the " "access list, select the user name from the list and click 'Kick'." msgstr "" #: ../../static/t/room/edit/tab_access.html:20 msgid "" "To grant another user access to this room, enter the user name in the box " "below and click 'Invite'." msgstr "" #: ../../static/t/room/edit/tab_access.html:26 msgid "Invite:" msgstr "" #: ../../static/t/room/edit/tab_access.html:35 #, fuzzy msgid "Users" msgstr "Νέος χρήστης" #: ../../static/t/room/zapped_list.html:7 msgid "Zapped (forgotten) rooms" msgstr "" #: ../../static/t/room/zapped_list.html:10 msgid "Click on any room to un-zap it and goto that room." msgstr "" #: ../../static/t/room/display_private.html:7 msgid "Go to a hidden room" msgstr "" #: ../../static/t/room/display_private.html:8 msgid "" "If you know the name of a hidden (guess-name) or passworded room, you can " "enter that room by typing its name below. Once you gain access to a private " "room, it will appear in your regular room listings so you don‘t have to keep " "returning here." msgstr "" #: ../../static/t/room/display_private.html:14 msgid "Enter room name:" msgstr "" #: ../../static/t/room/display_private.html:21 #, fuzzy msgid "Enter room password:" msgstr "Εισάγετε νέο κωδικό πρόσβασης:" #: ../../static/t/room/create.html:11 #: ../../static/t/menu/advanced_roomcommands.html:6 msgid "Create a new room" msgstr "" #: ../../static/t/room/create.html:18 msgid "Name of room: " msgstr "" #: ../../static/t/room/create.html:32 msgid "Default view for room: " msgstr "" #: ../../static/t/room/zap_this.html:3 msgid "Zap (forget/unsubscribe) the current room" msgstr "" #: ../../static/t/room/zap_this.html:6 msgid "If you select this option," msgstr "" #: ../../static/t/room/zap_this.html:8 msgid "will disappear from your room list. Is this what you wish to do?" msgstr "" #: ../../static/t/menu/your_info.html:2 msgid "Change your preferences and settings" msgstr "" #: ../../static/t/menu/your_info.html:3 msgid "Update your contact information" msgstr "" #: ../../static/t/menu/your_info.html:5 msgid "Enter your 'bio'" msgstr "" #: ../../static/t/menu/your_info.html:6 msgid "Edit your online photo" msgstr "" #: ../../static/t/menu/your_info.html:8 msgid "Edit your push email settings" msgstr "" #: ../../static/t/menu/your_info.html:9 #, fuzzy msgid "Manage your OpenIDs" msgstr "Αλλάξτε τον κωδικό πρόσβασης" #: ../../static/t/menu/basic_commands.html:3 msgid "List known rooms" msgstr "" #: ../../static/t/menu/basic_commands.html:3 msgid "Where can I go from here?" msgstr "" #: ../../static/t/menu/basic_commands.html:4 ../../static/t/navbar.html:168 msgid "Goto next room" msgstr "" #: ../../static/t/menu/basic_commands.html:4 msgid "...with unread messages" msgstr "" #: ../../static/t/menu/basic_commands.html:5 msgid "Skip to next room" msgstr "" #: ../../static/t/menu/basic_commands.html:5 msgid "(come back here later)" msgstr "" #: ../../static/t/menu/basic_commands.html:6 ../../static/t/navbar.html:5 msgid "Ungoto" msgstr "" #: ../../static/t/menu/basic_commands.html:6 msgid "oops! Back to " msgstr "" #: ../../static/t/menu/basic_commands.html:10 ../../static/t/navbar.html:13 msgid "Read new messages" msgstr "" #: ../../static/t/menu/basic_commands.html:10 msgid "...in this room" msgstr "" #: ../../static/t/menu/basic_commands.html:11 ../../static/t/navbar.html:19 msgid "Read all messages" msgstr "" #: ../../static/t/menu/basic_commands.html:11 msgid "...old and new" msgstr "" #: ../../static/t/menu/basic_commands.html:12 ../../static/t/navbar.html:25 msgid "Enter a message" msgstr "" #: ../../static/t/menu/basic_commands.html:12 msgid "(post in this room)" msgstr "" #: ../../static/t/menu/basic_commands.html:13 msgid "File library" msgstr "" #: ../../static/t/menu/basic_commands.html:13 msgid "(List files available for download)" msgstr "" #: ../../static/t/menu/basic_commands.html:17 #, fuzzy msgid "Summary page" msgstr "Περίληψη:" #: ../../static/t/menu/basic_commands.html:17 msgid "Summary of my account" msgstr "" #: ../../static/t/menu/basic_commands.html:18 msgid "User list" msgstr "" #: ../../static/t/menu/basic_commands.html:18 #, fuzzy msgid "(all registered users)" msgstr "Επιβεβαιώστε νέους χρήστες" #: ../../static/t/menu/basic_commands.html:19 msgid "Bye!" msgstr "" #: ../../static/t/menu/advanced_roomcommands.html:3 msgid "Edit or delete this room" msgstr "" #: ../../static/t/menu/advanced_roomcommands.html:5 msgid "Go to a 'hidden' room" msgstr "" #: ../../static/t/menu/advanced_roomcommands.html:7 msgid "Zap (forget) this room" msgstr "" #: ../../static/t/menu/advanced_roomcommands.html:8 msgid "List all forgotten rooms" msgstr "" #: ../../static/t/navbar.html:34 msgid "View contacts" msgstr "" #: ../../static/t/navbar.html:40 msgid "Add new contact" msgstr "" #: ../../static/t/navbar.html:49 msgid "Day view" msgstr "" #: ../../static/t/navbar.html:55 msgid "Month view" msgstr "" #: ../../static/t/navbar.html:61 msgid "Add new event" msgstr "" #: ../../static/t/navbar.html:70 msgid "Calendar list" msgstr "" #: ../../static/t/navbar.html:79 msgid "View tasks" msgstr "" #: ../../static/t/navbar.html:85 msgid "Add new task" msgstr "" #: ../../static/t/navbar.html:94 msgid "View notes" msgstr "" #: ../../static/t/navbar.html:101 msgid "Add new note" msgstr "" #: ../../static/t/navbar.html:110 msgid "Refresh message list" msgstr "" #: ../../static/t/navbar.html:122 msgid "Write mail" msgstr "" #: ../../static/t/navbar.html:132 msgid "Wiki home" msgstr "" #: ../../static/t/navbar.html:139 msgid "Edit this page" msgstr "" #: ../../static/t/navbar.html:145 msgid "History" msgstr "" #: ../../static/t/navbar.html:154 #, fuzzy msgid "New blog post" msgstr "νεότερες δημοσιεύσεις" #: ../../static/t/navbar.html:162 msgid "Skip this room" msgstr "" #: ../../static/t/msg_listview.html:18 msgid "Loading messages from server, please wait" msgstr "" #: ../../static/t/msg_listview.html:24 msgid "Open in new window" msgstr "" #: ../../static/t/msg_listview.html:26 msgid "Copy" msgstr "" #: ../../static/t/view_mailq/message.html:6 msgid "Originaly posted in: " msgstr "" #: ../../static/t/view_mailq/header.html:15 msgid "Refresh this page" msgstr "" #: ../../static/t/view_mailq/header.html:21 msgid "Message ID" msgstr "" #: ../../static/t/view_mailq/header.html:23 msgid "Date/time submitted" msgstr "" #: ../../static/t/view_mailq/header.html:25 msgid "Next attempt" msgstr "" #: ../../static/t/view_mailq/header.html:29 msgid "Recipients" msgstr "" #: ../../static/t/view_mailq/footer_empty.html:4 msgid "The queue is empty." msgstr "" #: ../../static/t/view_mailq/footer_empty.html:9 #: ../../static/t/view_mailq/footer.html:5 msgid "You do not have permission to view this resource." msgstr "" #: ../../static/t/get_logged_in.html:5 msgid "You must be logged in to access this page." msgstr "Θα πρέπει να συνδεθείτε για να αποκτήσετε πρόσβαση σε αυτήν τη σελίδα." #: ../../static/t/get_logged_in.html:9 #: ../../static/t/edit_message/attachments_pane.html:3 msgid "Close window" msgstr "" #: ../../static/t/get_logged_in.html:55 msgid "Log in using a user name and password" msgstr "" #: ../../static/t/get_logged_in.html:60 ../../static/t/get_logged_in.html:75 msgid "Password:" msgstr "" #: ../../static/t/get_logged_in.html:65 ../../static/t/get_logged_in.html:69 msgid "New user? Register now" msgstr "Νέος χρήστης; Εγγραφείτε τώρα" #: ../../static/t/get_logged_in.html:70 msgid "" "enter the name and password you wish to use, and click "New User." " msgstr "" #: ../../static/t/get_logged_in.html:83 msgid "Log in using OpenID" msgstr "" #: ../../static/t/get_logged_in.html:85 msgid "OpenID URL:" msgstr "" #: ../../static/t/get_logged_in.html:92 msgid "Log in using Google" msgstr "" #: ../../static/t/get_logged_in.html:97 #, fuzzy msgid "Log in using Yahoo" msgstr "Συνδεθείτε ξανά" #: ../../static/t/get_logged_in.html:102 msgid "Log in using AOL or AIM" msgstr "" #: ../../static/t/get_logged_in.html:104 msgid "Enter your AOL or AIM screen name:" msgstr "" #: ../../static/t/get_logged_in.html:115 msgid "Please wait" msgstr "" #: ../../static/t/summary/page.html:4 #, fuzzy msgid "Summary page for " msgstr "Περίληψη:" #: ../../static/t/summary/page.html:21 msgid "Messages" msgstr "" #: ../../static/t/summary/page.html:39 msgid "Today on your calendar" msgstr "" #: ../../static/t/summary/page.html:51 msgid "Who‘s online now" msgstr "" #: ../../static/t/summary/page.html:60 msgid "About this server" msgstr "" #: ../../static/t/summary/page.html:63 msgid "You are connected to" msgstr "" #: ../../static/t/summary/page.html:64 msgid "running" msgstr "" #: ../../static/t/summary/page.html:65 msgid "with" msgstr "" #: ../../static/t/summary/page.html:66 msgid "server build" msgstr "" #: ../../static/t/summary/page.html:67 msgid "and located in" msgstr "" #: ../../static/t/summary/page.html:68 msgid "Your system administrator is" msgstr "" #: ../../static/t/edit_message/attachments_pane.html:16 msgid "Attach file" msgstr "" #: ../../static/t/edit_message/attachments_pane.html:21 msgid "Upload" msgstr "" #: ../../static/t/edit_message/section_attach_select.html:4 msgid "Remove" msgstr "" #: ../../static/t/loggedinas.html:3 #, fuzzy msgid "Logged in as" msgstr "Συνδεθείτε ξανά" #: ../../static/t/loggedinas.html:6 msgid "Not logged in." msgstr "" #, fuzzy #~ msgid "password" #~ msgstr "Αλλάξτε κωδικό πρόσβασης" #~ msgid "Your password was not accepted." #~ msgstr "Ο κωδικός δεν ήταν αποδεκτός" webcit-8.24-dfsg.orig/po/webcit/pt_BR.po0000644000175000017500000036511612271477123017655 0ustar michaelmichael# translation of webcit.po to pt_BR.po # Copyright (C) 2008 - 2009 The Citadel Project - http://www.citadel.org # Marco Goncalves , 2008. # # Brazilian / Portuguese tranlation # Copyright (C) 2005 - 2009 By Marco Goncalves # This file is distributed under the revised BSD license # # msgid "" msgstr "" "Project-Id-Version: WebCit\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-03-20 01:03-0400\n" "PO-Revision-Date: 2010-11-25 13:41+0000\n" "Last-Translator: Alessandro Cesar \n" "Language-Team: \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-11-26 04:44+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: ../../roomops.c:708 ../../roomops.c:1005 ../../sieve.c:364 msgid "Cancelled. Changes were not saved." msgstr "Cancelado. Modificações não foram salvas." #: ../../roomops.c:838 ../../sieve.c:417 msgid "Your changes have been saved." msgstr "Suas modificações foram salvas" #: ../../roomops.c:881 #, c-format msgid "User '%s' kicked out of room '%s'." msgstr "Usuário %s foi chutado da sala %s." #: ../../roomops.c:898 #, c-format msgid "User '%s' invited to room '%s'." msgstr "Usuário %s foi convidado para a sala %s." #: ../../roomops.c:927 msgid "Cancelled. No new room was created." msgstr "Cancelado. Nenhuma sala foi criada." #: ../../roomops.c:1187 msgid "Floor has been deleted." msgstr "Andar foi excluído." #: ../../roomops.c:1211 msgid "New floor has been created." msgstr "Um novo andar foi criado." #: ../../roomops.c:1290 msgid "Room list view" msgstr "Visualização lista de salas" #: ../../roomops.c:1293 msgid "Show empty floors" msgstr "Exibir andares vazios" #: ../../roomviews.c:50 msgid "Bulletin Board" msgstr "Quadro de Mensagens" #: ../../roomviews.c:51 msgid "Mail Folder" msgstr "Pasta para Correio" #: ../../roomviews.c:52 msgid "Address Book" msgstr "Caderno de Endereços" #: ../../roomviews.c:53 ../../static/t/iconbar.html:24 #: ../../static/t/iconbar/edit.html:55 msgid "Calendar" msgstr "Calendário" #: ../../roomviews.c:54 msgid "Task List" msgstr "Lista de Tarefas" #: ../../roomviews.c:55 msgid "Notes List" msgstr "Lista de Notas" #: ../../roomviews.c:56 msgid "Wiki" msgstr "Wiki" #: ../../roomviews.c:57 msgid "Calendar List" msgstr "Lista de Calendários" #: ../../roomviews.c:58 msgid "Journal" msgstr "Diário" #: ../../roomviews.c:59 #, fuzzy msgid "Drafts" msgstr "Data" #: ../../roomviews.c:60 msgid "Blog" msgstr "Blog" #: ../../tasks.c:93 msgid "Completed?" msgstr "Concluído?" #: ../../tasks.c:95 msgid "Name of task" msgstr "Nome da tarefa" #: ../../tasks.c:97 msgid "Date due" msgstr "Data de vencimento" #: ../../tasks.c:99 msgid "Category" msgstr "Categoria" #: ../../tasks.c:101 msgid "Show All" msgstr "Exibir Todos(as)" #: ../../tasks.c:223 msgid "Edit task" msgstr "Editar tarefa" #: ../../tasks.c:242 ../../calendar.c:98 ../../calendar_view.c:298 #: ../../calendar_view.c:959 ../../calendar_view.c:1003 #: ../../calendar_view.c:1084 msgid "Summary:" msgstr "Resumo:" #: ../../tasks.c:253 msgid "Start date:" msgstr "Data de início:" #: ../../tasks.c:261 ../../tasks.c:291 msgid "No date" msgstr "Sem data" #: ../../tasks.c:265 ../../tasks.c:294 msgid "or" msgstr "ou" #: ../../tasks.c:279 ../../tasks.c:308 msgid "Time associated" msgstr "Tempo associado" #: ../../tasks.c:283 msgid "Due date:" msgstr "Vencimento:" #: ../../tasks.c:312 msgid "Completed:" msgstr "Concluído:" #: ../../tasks.c:323 msgid "Category:" msgstr "Categoria:" #: ../../tasks.c:333 ../../calendar.c:159 ../../static/t/files.html:12 msgid "Description:" msgstr "Descrição:" #: ../../tasks.c:351 ../../event.c:764 msgid "Save" msgstr "Salvar" #: ../../tasks.c:352 ../../event.c:765 ../../static/t/aide/inet/section.html:5 #: ../../static/t/view_blog/comment.html:12 #: ../../static/t/view_blog/post.html:15 ../../static/t/view_message.html:32 #: ../../static/t/navbar.html:116 ../../static/t/msg_listview.html:27 msgid "Delete" msgstr "Excluir" #: ../../tasks.c:353 ../../vcard_edit.c:1216 ../../paging.c:66 #: ../../event.c:767 ../../sysmsgs.c:69 ../../who.c:200 ../../auth.c:812 #: ../../static/t/edit_message.html:135 ../../static/t/confirmlogoff.html:4 msgid "Cancel" msgstr "Cancelar" #: ../../tasks.c:423 ../../calendar_view.c:1379 msgid "Untitled Task" msgstr "Tarefa Anonima" #: ../../fmt_date.c:310 msgid "Time format" msgstr "Formato de hora" #: ../../listsub.c:54 ../../static/t/listsub/display.html:5 msgid "List subscription" msgstr "Inscrição da lista" #: ../../listsub.c:67 ../../static/t/listsub/display.html:9 msgid "List subscribe/unsubscribe" msgstr "Inscrever/desinscrever da lista" #: ../../listsub.c:87 ../../static/t/listsub/display.html:15 #: ../../static/t/listsub/display.html:34 msgid "Confirmation request sent" msgstr "Pedido de confirmação enviado" #: ../../listsub.c:89 #, c-format msgid "" "You are subscribing %s to the %s mailing list. The " "listserver has sent you an e-mail with one additional Web link for you to " "click on to confirm your subscription. This extra step is for your " "protection, as it prevents others from being able to subscribe you to lists " "without your consent.

    Please click on the link which is being e-" "mailed to you and your subscription will be confirmed.
    \n" msgstr "" "Você está se inscrevendo em %s na lista %s. O servidor da " "lista lhe enviou um link para você confirmar sua inscrição. Esse passo " "extra previne que outros lhe inscrevam em listas sem seu consentimento.

    Clique no link que foi mandado para você e sua inscrição será " "confirmada.
    \n" #: ../../listsub.c:102 ../../static/t/listsub/display.html:24 msgid "Go back..." msgstr "Voltar..." #: ../../listsub.c:253 ../../listsub.c:291 ../../listsub.c:327 #: ../../listsub.c:334 msgid "You need to specify the mailinglist to subscribe to." msgstr "" #: ../../listsub.c:260 ../../listsub.c:298 #, fuzzy msgid "You need to specify the email address you'd like to subscribe with." msgstr "Por favor especifique o nome do usuário que você gostaria de usar." #: ../../blogview_renderer.c:58 ../../blogview_renderer.c:74 #, c-format msgid "%d comments" msgstr "%d comentários" #: ../../blogview_renderer.c:61 ../../blogview_renderer.c:77 msgid "permalink" msgstr "" #: ../../blogview_renderer.c:302 msgid "Newer posts" msgstr "posts recentes" #: ../../blogview_renderer.c:311 msgid "Older posts" msgstr "posts mais antigos" #: ../../useredit.c:629 msgid "" "An error occurred while trying to create or edit this address book entry." msgstr "" "Um erro ocorreu na criação ou edição desta entrada no caderno de endereços." #: ../../useredit.c:717 msgid "Changes were not saved." msgstr "Modificações não foram salvas." #: ../../useredit.c:782 msgid "A new user has been created." msgstr "Um novo usuário foi criado." #: ../../useredit.c:786 msgid "" "You are attempting to create a new user from within Citadel while running in " "host based authentication mode. In this mode, you must create new users on " "the host system, not within Citadel." msgstr "" "Você está tentando criar um novo usuário no Citadel enquanto no modo de " "autenticação baseado em host. Nesse modo, você deve criar novos usuários no " "sistema hospedeiro, não dentro do Citadel." #: ../../bbsview_renderer.c:312 msgid "Go to page: " msgstr "Ir para a página: " #: ../../bbsview_renderer.c:354 msgid "First" msgstr "Primeiro" #: ../../bbsview_renderer.c:360 msgid "Last" msgstr "Último" #: ../../graphics.c:56 msgid "Graphics upload has been cancelled." msgstr "Upload de gráficos foi cancelado." #: ../../graphics.c:62 msgid "You didn't upload a file." msgstr "Você não fez upload do arquivo." #: ../../graphics.c:112 msgid "your photo" msgstr "sua foto" #: ../../graphics.c:119 msgid "the icon for this room" msgstr "o ícone para essa sala" #: ../../graphics.c:127 msgid "the Greetingpicture for the login prompt" msgstr "a figura de boas vindas para esse prompt de login" #: ../../graphics.c:135 msgid "the Logoff banner picture" msgstr "a figura para o banner de logoff" #: ../../graphics.c:146 msgid "the icon for this floor" msgstr "o ícone para esse andar" #: ../../calendar_tools.c:100 msgid "Hour: " msgstr "Hora: " #: ../../calendar_tools.c:120 msgid "Minute: " msgstr "Minuto: " #: ../../calendar_tools.c:191 msgid "(status unknown)" msgstr "(estado desconhecido)" #: ../../calendar_tools.c:207 msgid "(needs action)" msgstr "(necessita ação)" #: ../../calendar_tools.c:210 msgid "(accepted)" msgstr "(aceito)" #: ../../calendar_tools.c:213 msgid "(declined)" msgstr "(rejeitado)" #: ../../calendar_tools.c:216 msgid "(tenative)" msgstr "(temporário)" #: ../../calendar_tools.c:219 msgid "(delegated)" msgstr "(delegado)" #: ../../calendar_tools.c:222 msgid "(completed)" msgstr "(completado)" #: ../../calendar_tools.c:225 msgid "(in process)" msgstr "(em processo)" #: ../../calendar_tools.c:228 msgid "(none)" msgstr "(nenhum)" #: ../../notes.c:343 msgid "Click on any note to edit it." msgstr "Clique em uma nota para editá-la." #: ../../vcard_edit.c:175 ../../vcard_edit.c:178 msgid "(no name)" msgstr "(sem nome)" #: ../../vcard_edit.c:443 msgid " (work)" msgstr " (trabalho)" #: ../../vcard_edit.c:445 msgid " (home)" msgstr " Página Inicial" #: ../../vcard_edit.c:447 msgid " (cell)" msgstr " (celular)" #: ../../vcard_edit.c:458 ../../vcard_edit.c:1120 msgid "Address:" msgstr "Endereço:" #: ../../vcard_edit.c:526 msgid "Telephone:" msgstr "Telefone:" #: ../../vcard_edit.c:531 msgid "E-mail:" msgstr "E-mail:" #: ../../vcard_edit.c:779 msgid "This address book is empty." msgstr "Esse caderno de endereços está vazio." #: ../../vcard_edit.c:793 msgid "An internal error has occurred." msgstr "Um erro interno ocorreu." #: ../../vcard_edit.c:944 msgid "Error" msgstr "Erro" #: ../../vcard_edit.c:1048 msgid "Edit contact information" msgstr "Editar informação do contato" #: ../../vcard_edit.c:1068 msgid "Prefix" msgstr "Prefixo" #: ../../vcard_edit.c:1068 msgid "First Name" msgstr "Primeiro" #: ../../vcard_edit.c:1068 msgid "Middle Name" msgstr "Meio" #: ../../vcard_edit.c:1068 msgid "Last Name" msgstr "Último" #: ../../vcard_edit.c:1068 msgid "Suffix" msgstr "Sufixo" #: ../../vcard_edit.c:1089 msgid "Display name:" msgstr "Nome para visualização:" #: ../../vcard_edit.c:1096 msgid "Title:" msgstr "Título:" #: ../../vcard_edit.c:1103 msgid "Organization:" msgstr "Organização:" #: ../../vcard_edit.c:1114 msgid "PO box:" msgstr "Caixa postal:" #: ../../vcard_edit.c:1130 msgid "City:" msgstr "Cidade:" #: ../../vcard_edit.c:1136 msgid "State:" msgstr "Estado:" #: ../../vcard_edit.c:1142 msgid "ZIP code:" msgstr "CEP" #: ../../vcard_edit.c:1148 msgid "Country:" msgstr "País:" #: ../../vcard_edit.c:1158 msgid "Home telephone:" msgstr "Telefone de casa:" #: ../../vcard_edit.c:1164 msgid "Work telephone:" msgstr "Telefone de trabalho:" #: ../../vcard_edit.c:1170 msgid "Mobile telephone:" msgstr "Celular" #: ../../vcard_edit.c:1176 msgid "Fax number:" msgstr "Número de fax:" #: ../../vcard_edit.c:1187 msgid "Primary Internet e-mail address" msgstr "Endereço de e-mail primário" #: ../../vcard_edit.c:1194 msgid "Internet e-mail aliases" msgstr "Nomes alternativos para e-mail de Internet" #: ../../vcard_edit.c:1215 ../../sysmsgs.c:67 msgid "Save changes" msgstr "Salvar modificações" #: ../../vcard_edit.c:1261 msgid "Unable to enter the room to save your message" msgstr "Impossibilidado de entrar na sala para salvar sua mensagem" #: ../../vcard_edit.c:1265 msgid "Aborting." msgstr "Abortando." #: ../../vcard_edit.c:1297 ../../vcard_edit.c:1341 ../../auth.c:367 #: ../../auth.c:397 msgid "An error has occurred." msgstr "Ocorreu um Erro." #: ../../vcard_edit.c:1399 msgid "Could Not decode vcard photo\n" msgstr "Não foi possível visualizar a foto do vcard\n" #: ../../preferences.c:880 msgid "Cancelled. No settings were changed." msgstr "Cancelado. Nenhuma configuração foi modificada." #: ../../preferences.c:1092 msgid "Make this my start page" msgstr "Fazer dessa página minha inicial" #: ../../preferences.c:1130 msgid "This isn't allowed to become the start page." msgstr "Isto não é permitido como página inicial" #: ../../preferences.c:1132 msgid "You no longer have a start page selected." msgstr "Você não tem mais uma página inicial selecionada." #: ../../preferences.c:1182 msgid "Prefered startpage" msgstr "Página Inicial preferencial" #: ../../calendar.c:76 msgid "Meeting invitation" msgstr "Convite para reunião" #: ../../calendar.c:79 msgid "Attendee's reply to your invitation" msgstr "Reposta do convite do participante" #: ../../calendar.c:82 msgid "Published event" msgstr "Evento publicado" #: ../../calendar.c:85 msgid "This is an unknown type of calendar item." msgstr "Esse é um tipo desconhecido de item de calendário" #: ../../calendar.c:107 ../../calendar_view.c:306 ../../calendar_view.c:964 #: ../../calendar_view.c:1008 ../../calendar_view.c:1089 msgid "Location:" msgstr "Localização" #: ../../calendar.c:132 ../../calendar_view.c:351 ../../calendar_view.c:970 msgid "Date:" msgstr "Data:" #: ../../calendar.c:139 ../../calendar_view.c:373 ../../calendar_view.c:1013 #: ../../calendar_view.c:1099 msgid "Starting date/time:" msgstr "Dia/hora de início:" #: ../../calendar.c:150 ../../calendar_view.c:376 ../../calendar_view.c:1015 #: ../../calendar_view.c:1101 msgid "Ending date/time:" msgstr "Dia/hora de término:" #: ../../calendar.c:168 ../../event.c:90 msgid "Recurrence" msgstr "Recorrências" #: ../../calendar.c:169 ../../event.c:505 msgid "This is a recurring event" msgstr "Esse é um evento recorrente" #: ../../calendar.c:178 msgid "Attendee:" msgstr "Participante:" #: ../../calendar.c:218 #, c-format msgid "This is an update of '%s' which is already in your calendar." msgstr "Essa é uma atualização de '%s' que já está no seu calendário." #: ../../calendar.c:222 #, c-format msgid "This event would conflict with '%s' which is already in your calendar." msgstr "" "Esse evento entrará em conflito com '%s' que já está no seu calendário." #: ../../calendar.c:227 msgid "Update:" msgstr "Atualização:" #: ../../calendar.c:228 msgid "CONFLICT:" msgstr "CONFLITO:" #: ../../calendar.c:251 msgid "How would you like to respond to this invitation?" msgstr "Como gostaria de responder a esse convite?" #: ../../calendar.c:252 msgid "Accept" msgstr "Aceitar" #: ../../calendar.c:253 msgid "Tentative" msgstr "Incerto" #: ../../calendar.c:254 msgid "Decline" msgstr "Rejeitar" #: ../../calendar.c:271 msgid "Click Update to accept this reply and update your calendar." msgstr "" "Clique em Atualizar para aceitar essa resposta e atualizar seu " "calendário." #: ../../calendar.c:272 msgid "Update" msgstr "Atualizar" #: ../../calendar.c:273 msgid "Ignore" msgstr "Ignorar" #: ../../calendar.c:295 msgid "There was an error parsing this calendar item." msgstr "Ocorreu um erro ao processar esse item de calendário" #: ../../calendar.c:328 msgid "" "You have accepted this meeting invitation. It has been entered into your " "calendar." msgstr "" "Você aceitou esse convite para reunião. Esta foi inclusa no seu calendário." #: ../../calendar.c:332 msgid "" "You have tentatively accepted this meeting invitation. It has been " "'pencilled in' to your calendar." msgstr "" "Você aceitou temporariamente esse convite para reunião. Esta foi 'rabiscada' " "no seu calendário." #: ../../calendar.c:336 msgid "" "You have declined this meeting invitation. It has not been entered " "into your calendar." msgstr "" "Você rejeitou esse convite para reunião. Esta não foi inclusa no seu " "calendário." #: ../../calendar.c:341 msgid "A reply has been sent to the meeting organizer." msgstr "Uma resposta foi enviada para o organizador da reunião" #. / Translators: RSVP aka Répondez s'il-vous-plaît Is the term #. / that the recipient of an ical-invitation should please #. / answer this request. #: ../../calendar.c:376 msgid "Your calendar has been updated to reflect this RSVP." msgstr "Seu calendário foi atualizado para refletir esse RSVP." #: ../../calendar.c:378 msgid "" "You have chosen to ignore this RSVP. Your calendar has not been " "updated." msgstr "" "Você escolheu ignorar esse RSVP. Seu calendário não foi atualizado." #: ../../calendar.c:932 msgid "Calendar day view begins at:" msgstr "Dia da visualização do calendário começa em:" #: ../../calendar.c:933 msgid "Calendar day view ends at:" msgstr "Dia da visualização do calendário termina em:" #: ../../calendar.c:934 msgid "Week starts on:" msgstr "Semana começa em:" #: ../../paging.c:35 msgid "Send instant message" msgstr "Mandar mensagem instantânea" #: ../../paging.c:43 msgid "Send an instant message to: " msgstr "Mandar mensagem instantânea para: " #: ../../paging.c:57 msgid "Enter message text:" msgstr "Entrar mensagem de texto:" #: ../../paging.c:65 ../../static/t/edit_message.html:109 msgid "Send message" msgstr "Enviar mensagem" #: ../../paging.c:84 msgid "Message was not sent." msgstr "Mensagem não foi enviada." #: ../../paging.c:95 msgid "Message has been sent to " msgstr "Mensagem foi enviada para " #: ../../iconbar.c:328 msgid "Iconbar Setting" msgstr "Configuração da barra de ícones" #. #. * Set to 'unknown' right from the beginning. Unless we learn #. * something else, that's what we'll go with. #. #: ../../availability.c:148 msgid "availability unknown" msgstr "disponibilidade desconhecida" #: ../../availability.c:169 msgid "free" msgstr "disponível" #: ../../availability.c:179 msgid "BUSY" msgstr "OCUPADO" #: ../../serv_func.c:193 msgid "" "This server is already serving its maximum number of users and cannot accept " "any additional logins at this time. Please try again later or contact your " "system administrator." msgstr "" "Este servidor já atingiu o número máximo de usuários permitidos e não pode " "aceitar nenhum login adicional neste momento. Por favor tente novamente mais " "tarde ou contate seu administrador de sistemas." #: ../../serv_func.c:198 ../../serv_func.c:227 msgid "Received unexpected answer from Citadel server; bailing out." msgstr "Recebida uma resposta não esperada do servidor Citadel; Salvando." #: ../../serv_func.c:236 #, c-format msgid "" "You are connected to a Citadel server running Citadel %d.%02d. \n" "In order to run this version of WebCit you must also have Citadel %d.%02d or " "newer.\n" "\n" "\n" msgstr "" "Você está conectado à um servidor Citadel rodando Citadel %d.%02d. \n" "Para rodar essa versão do WebCit você também deve ter o Citadel %d.%02d ou " "mais novo.\n" "\n" "\n" #: ../../event.c:70 msgid "seconds" msgstr "segundos" #: ../../event.c:71 msgid "minutes" msgstr "minutos" #: ../../event.c:72 msgid "hours" msgstr "horas" #: ../../event.c:73 msgid "days" msgstr "dias" #: ../../event.c:74 msgid "weeks" msgstr "semanas" #: ../../event.c:75 msgid "months" msgstr "meses" #: ../../event.c:76 msgid "years" msgstr "anos" #: ../../event.c:77 msgid "never" msgstr "nunca" #: ../../event.c:81 msgid "first" msgstr "primeiro" #: ../../event.c:82 msgid "second" msgstr "segundo" #: ../../event.c:83 msgid "third" msgstr "terceiro" #: ../../event.c:84 msgid "fourth" msgstr "quarto" #: ../../event.c:85 msgid "fifth" msgstr "quinto" #: ../../event.c:88 msgid "Event" msgstr "Evento" #: ../../event.c:89 ../../event.c:437 ../../event.c:449 msgid "Attendees" msgstr "Participantes" #: ../../event.c:167 msgid "Add or edit an event" msgstr "Adicionar ou editar um evento" #: ../../event.c:206 ../../static/t/iconbar.html:13 #: ../../static/t/iconbar/edit.html:29 msgid "Summary" msgstr "Resumo" #: ../../event.c:217 msgid "Location" msgstr "Local" #: ../../event.c:228 ../../calendar_view.c:760 msgid "Start" msgstr "Início" #: ../../event.c:271 ../../calendar_view.c:957 ../../calendar_view.c:986 msgid "All day event" msgstr "Evento ocupando todo o dia" #: ../../event.c:277 ../../calendar_view.c:761 msgid "End" msgstr "Fim" #: ../../event.c:327 ../../static/t/iconbar.html:34 #: ../../static/t/iconbar/edit.html:49 msgid "Notes" msgstr "Notas" #: ../../event.c:369 msgid "Organizer" msgstr "Organizador" #: ../../event.c:374 msgid "(you are the organizer)" msgstr "(você é o organizador)" #: ../../event.c:392 msgid "Show time as:" msgstr "Mostrar hora como:" #: ../../event.c:415 msgid "Free" msgstr "Livre" #: ../../event.c:423 msgid "Busy" msgstr "Ocupado" #: ../../event.c:440 msgid "(One per line)" msgstr "(Um por linha)" #: ../../event.c:450 ../../static/t/edit_message.html:143 #: ../../static/t/iconbar.html:29 ../../static/t/iconbar/edit.html:42 msgid "Contacts" msgstr "Contatos" #: ../../event.c:513 msgid "Recurrence rule" msgstr "Regra de recorrência" #: ../../event.c:517 msgid "Repeats every" msgstr "Repete a cada" #. begin 'weekday_selector' div #: ../../event.c:535 msgid "on these weekdays:" msgstr "Nestes dias da semana" #: ../../event.c:593 #, c-format msgid "on day %s%d%s of the month" msgstr "nos dias %s%d%s do mês" #: ../../event.c:602 ../../event.c:664 msgid "on the " msgstr "em " #: ../../event.c:626 msgid "of the month" msgstr "do mês" #: ../../event.c:655 msgid "every " msgstr "a cada " #: ../../event.c:656 msgid "year on this date" msgstr "ano desta data" #: ../../event.c:688 ../../static/t/msg_listselector_bottom.html:7 #: ../../static/t/msg_listselector_top.html:7 msgid "of" msgstr "de" #: ../../event.c:712 msgid "Recurrence range" msgstr "Intervalo de recorrência" #: ../../event.c:720 msgid "No ending date" msgstr "Nenhuma data de término" #: ../../event.c:727 msgid "Repeat this event" msgstr "Repetir este evento" #: ../../event.c:730 msgid "times" msgstr "vezes" #: ../../event.c:738 msgid "Repeat this event until " msgstr "Repetir este evento até " #: ../../event.c:766 msgid "Check attendee availability" msgstr "Checar disponibilidade do participante" #: ../../event.c:858 ../../calendar_view.c:272 ../../calendar_view.c:468 #: ../../calendar_view.c:937 msgid "Untitled Event" msgstr "Evento sem título" #: ../../sysmsgs.c:52 #, c-format msgid "Edit %s" msgstr "Editar %s" #: ../../sysmsgs.c:55 #, c-format msgid "" "Enter %s below. Text is formatted to the reader's browser. A newline is " "forced by preceding the next line by a blank." msgstr "" "Digite %s abaixo. O texto é formatado com o browser do leitor. Uma nova " "linha é forçada precedendo a nova linha por uma em branco." #: ../../sysmsgs.c:89 #, c-format msgid "Cancelled. %s was not saved." msgstr "Cancelado. %s não foi salvo" #: ../../sysmsgs.c:109 #, fuzzy msgid " has been saved." msgstr "%s foi salvo." #: ../../sysmsgs.c:116 ../../sysmsgs.c:117 msgid "Room info" msgstr "Informações da sala" #: ../../sysmsgs.c:122 ../../sysmsgs.c:124 msgid "Your bio" msgstr "Sua bio" #: ../../calendar_view.c:297 ../../calendar_view.c:958 #: ../../calendar_view.c:1002 ../../calendar_view.c:1083 #: ../../static/t/sieve/display_one.html:20 msgid "From" msgstr "A partir de" #: ../../calendar_view.c:355 ../../calendar_view.c:974 msgid "Starting date:" msgstr "Data Inicial" #: ../../calendar_view.c:361 ../../calendar_view.c:976 msgid "Ending date:" msgstr "Data Final" #: ../../calendar_view.c:369 ../../calendar_view.c:1095 msgid "Date/time:" msgstr "Data/Hora" #: ../../calendar_view.c:386 ../../calendar_view.c:980 #: ../../calendar_view.c:1018 ../../calendar_view.c:1105 #: ../../static/t/room/edit/tab_share.html:32 msgid "Notes:" msgstr "Notas:" #: ../../calendar_view.c:585 ../../calendar_view.c:721 msgid "previous" msgstr "anterior" #: ../../calendar_view.c:597 ../../calendar_view.c:733 #: ../../calendar_view.c:1308 msgid "next" msgstr "próximo" #: ../../calendar_view.c:756 msgid "Week" msgstr "Semana" #: ../../calendar_view.c:758 msgid "Hours" msgstr "Horas" #: ../../calendar_view.c:759 ../../static/t/sieve/display_one.html:22 #: ../../static/t/msg_listview.html:9 msgid "Subject" msgstr "Assunto" #: ../../calendar_view.c:1001 ../../calendar_view.c:1024 msgid "Ongoing event" msgstr "Evento em curso" #: ../../messages.c:70 msgid "ERROR:" msgstr "ERRO:" #: ../../messages.c:88 msgid "Empty message" msgstr "Mensagem vazia" #: ../../messages.c:1010 msgid "Cancelled. Message was not posted." msgstr "Cancelado. A mensagem não foi fixada." #: ../../messages.c:1013 msgid "Automatically cancelled because you have already saved this message." msgstr "Cancelado automaticamente porque você já salvou essa mensagem." #: ../../messages.c:1037 msgid "Saved to Drafts failed: " msgstr "Gravação para rascunhos falhou: " #: ../../messages.c:1102 msgid "Refusing to post empty message.\n" msgstr "Recusando enviar mensagem vazia\n" #: ../../messages.c:1128 msgid "Message has been saved to Drafts.\n" msgstr "A mensagem foi salva em rascunhos\n" #: ../../messages.c:1137 msgid "Message has been sent.\n" msgstr "A mensagem foi enviada.\n" #: ../../messages.c:1140 msgid "Message has been posted.\n" msgstr "Mensagem foi fixada.\n" #: ../../messages.c:1679 msgid "The message was not moved." msgstr "A mensagem não foi movida." #: ../../messages.c:1719 #, c-format msgid "An error occurred while retrieving this part: %s/%s\n" msgstr "Um erro ocorreu ao obter essa parte: %s/%s\n" #: ../../messages.c:1796 #, c-format msgid "An error occurred while retrieving this part: %s\n" msgstr "Um erro ocorreu ao obter essa parte: %s\n" #: ../../messages.c:1956 msgid "Attach signature to email messages?" msgstr "Anexar assinatura em mensagens de email?" #: ../../messages.c:1959 msgid "Use this signature:" msgstr "Usar essa assinatura:" #: ../../messages.c:1961 msgid "Default character set for email headers:" msgstr "Codificação padrão para cabeçalhos de email:" #: ../../messages.c:1964 msgid "Preferred email address" msgstr "Endereço de e-mail preferencial" #: ../../messages.c:1966 msgid "Preferred display name for email messages" msgstr "Nome de exibição para mensagens de e-mail preferencial" #: ../../messages.c:1970 msgid "Preferred display name for bulletin board posts" msgstr "Nome de exibição para mensagens de bulletin board preferencial" #: ../../messages.c:1973 msgid "Mailbox view mode" msgstr "Modo de visualização da Caixa de Mensagens" #: ../../inetconf.c:110 ../../inetconf.c:119 ../../inetconf.c:133 #: ../../inetconf.c:159 ../../netconf.c:156 ../../netconf.c:183 #: ../../netconf.c:191 ../../netconf.c:239 ../../netconf.c:247 msgid "Invalid Parameter" msgstr "Parâmetro inválido" #: ../../inetconf.c:126 #, fuzzy msgid " has been deleted." msgstr "%s foi excluído." #. added status message #: ../../inetconf.c:144 #, fuzzy msgid " added." msgstr "adicionada" #: ../../who.c:154 msgid "Edit your session display" msgstr "Editar a visualização de sua sessão" #: ../../who.c:158 msgid "" "This screen allows you to change the way your session appears in the 'Who is " "online' listing. To turn off any 'fake' name you've previously set, simply " "click the appropriate 'change' button without typing anything in the " "corresponding box. " msgstr "" "Essa tela permite que você modifique a maneira que sua sessão aparece na " "tela 'Quem está online'. Para desligar um nome 'falso' que você configurou " "previamente, clique no botão 'modificar' apropriado sem digitar nada na " "caixa correspondente. " #: ../../who.c:171 msgid "Room name:" msgstr "Nome da sala:" #: ../../who.c:176 msgid "Change room name" msgstr "Mudar nome da sala" #: ../../who.c:180 msgid "Host name:" msgstr "Nome do host:" #: ../../who.c:185 msgid "Change host name" msgstr "Mudar nome do host" #: ../../who.c:190 ../../static/t/aide/edituser/detailview.html:20 #: ../../static/t/openid_manual_create.html:9 #: ../../static/t/get_logged_in.html:57 ../../static/t/get_logged_in.html:72 msgid "User name:" msgstr "Nome do usuário:" #: ../../who.c:195 msgid "Change user name" msgstr "Mudar nome do usuário" #: ../../siteconfig.c:46 ../../siteconfig.c:64 ../../roomlist.c:44 #: ../../roomlist.c:394 ../../static/t/room/edit/tab_expire.html:72 #: ../../static/t/room/edit/tab_config.html:149 #: ../../static/t/room/edit/tab_access.html:42 msgid "Higher access is required to access this function." msgstr "Requer-se acesso privilegiado para acessar essa função." #: ../../siteconfig.c:256 msgid "WARNING: Failed to parse Server Config; do you run a to new citserver?" msgstr "" "AVISO: Falha ao analisar a Configuração do Servidor; Você quer executar um " "novo citserver?" #: ../../siteconfig.c:319 msgid "Your system configuration has been updated." msgstr "Sua configuração do sistema foi atualizada." #: ../../wiki.c:69 ../../wiki.c:162 ../../wiki.c:282 #, c-format msgid "There is no room called '%s'." msgstr "Não há sala de nome '%s'." #: ../../wiki.c:76 #, c-format msgid "'%s' is not a Wiki room." msgstr "'%s' não é uma sala Wiki." #: ../../wiki.c:110 #, c-format msgid "There is no page called '%s' here." msgstr "Não há página de nome '%s' aqui." #: ../../wiki.c:112 msgid "" "Select the 'Edit this page' link in the room banner if you would like to " "create this page." msgstr "" "Selecione o link 'Editar essa página' no banner da sala se você quiser criar " "essa página." #: ../../wiki.c:181 ../../static/t/msg_listview.html:11 msgid "Date" msgstr "Data" #: ../../wiki.c:182 msgid "Author" msgstr "Autor" #: ../../wiki.c:209 ../../wiki.c:218 msgid "(show)" msgstr "(exibir)" #: ../../wiki.c:211 ../../static/t/navbar.html:145 msgid "Current version" msgstr "Versão atual" #: ../../wiki.c:223 msgid "(revert)" msgstr "(voltar)" #: ../../wiki.c:300 msgid "Page title" msgstr "Título da página" #: ../../webcit.c:316 msgid "Authorization Required" msgstr "Autorização Requerida" #: ../../webcit.c:324 #, c-format msgid "" "The resource you requested requires a valid username and password. You could " "not be logged in: %s\n" msgstr "" "O recurso que você pediu requer um nome de usuário e senha válidos. Você " "pode não estar logado: %s\n" #: ../../webcit.c:647 ../../auth.c:526 msgid "" "This program was unable to connect or stay connected to the Citadel server. " "Please report this problem to your system administrator." msgstr "" "Esse programa foi incapaz de conectar ou manter conexão com o servidor " "Citadel. Se possível, reporte esse problema para seu administrador de " "sistema." #: ../../webcit.c:654 ../../auth.c:532 msgid "Read More..." msgstr "Continuar..." #: ../../smtpqueue.c:134 ../../static/t/aide/ignetconf/section.html:5 #: ../../static/t/view_mailq/message.html:2 msgid "(Delete)" msgstr "(Excluir)" #: ../../smtpqueue.c:334 msgid "First Attempt pending" msgstr "" #: ../../roomlist.c:99 msgid "My Folders" msgstr "Minhas Pastas" #: ../../downloads.c:289 #, c-format msgid "An error occurred while retrieving this file: %s\n" msgstr "Ocorreu um erro ao obter esse arquivo: %s\n" #: ../../roomtokens.c:572 msgid "file" msgstr "arquivo" #: ../../roomtokens.c:574 msgid "files" msgstr "arquivos" #: ../../summary.c:128 msgid "(None)" msgstr "(Nenhum)" #: ../../summary.c:184 msgid "(Nothing)" msgstr "(Nada)" #: ../../msg_renderers.c:579 ../../static/t/who/bio.html:15 msgid "edit" msgstr "editar" #: ../../msg_renderers.c:1119 msgid "I don't know how to display " msgstr "Eu não sei como exibir " #: ../../msg_renderers.c:1353 msgid "(no subject)" msgstr "(sem assunto)" #: ../../addressbook_popup.c:186 msgid "Add" msgstr "Adicionar" #. an erased user #: ../../auth.c:30 ../../static/t/aide/edituser/detailview.html:43 #: ../../static/t/aide/siteconfig/tab_access.html:40 #: ../../static/t/aide/siteconfig/tab_access.html:51 msgid "Deleted" msgstr "Excluído" #. a new user #: ../../auth.c:33 ../../static/t/aide/edituser/detailview.html:44 #: ../../static/t/aide/siteconfig/tab_access.html:41 #: ../../static/t/aide/siteconfig/tab_access.html:52 #: ../../static/t/get_logged_in.html:79 msgid "New User" msgstr "Novo Usuário" #. a trouble maker #: ../../auth.c:36 ../../static/t/aide/edituser/detailview.html:45 #: ../../static/t/aide/siteconfig/tab_access.html:42 #: ../../static/t/aide/siteconfig/tab_access.html:53 msgid "Problem User" msgstr "Usuário problemático" #. user with normal privileges #: ../../auth.c:39 ../../static/t/aide/edituser/detailview.html:46 #: ../../static/t/aide/siteconfig/tab_access.html:43 #: ../../static/t/aide/siteconfig/tab_access.html:54 msgid "Local User" msgstr "Usuário local" #. a user that may access network resources #: ../../auth.c:42 ../../static/t/aide/edituser/detailview.html:47 #: ../../static/t/aide/siteconfig/tab_access.html:44 #: ../../static/t/aide/siteconfig/tab_access.html:55 msgid "Network User" msgstr "Usuário remoto" #. a moderator #: ../../auth.c:45 ../../static/t/aide/edituser/detailview.html:48 #: ../../static/t/aide/siteconfig/tab_access.html:45 #: ../../static/t/aide/siteconfig/tab_access.html:56 msgid "Preferred User" msgstr "Usuário preferencial" #. chief #: ../../auth.c:48 ../../static/t/aide/edituser/detailview.html:49 #: ../../static/t/aide/siteconfig/tab_access.html:46 #: ../../static/t/aide/siteconfig/tab_access.html:57 msgid "Admin" msgstr "Admin" #: ../../auth.c:513 ../../static/t/iconbar.html:80 #: ../../static/t/confirmlogoff.html:3 #: ../../static/t/menu/basic_commands.html:19 msgid "Log off" msgstr "Log off" #: ../../auth.c:537 msgid "Log in again" msgstr "Refazer log in" #: ../../auth.c:585 ../../static/t/aide/usermanagement.html:3 msgid "Validate new users" msgstr "Validar novos usuários" #: ../../auth.c:605 msgid "No users require validation at this time." msgstr "Sem usuários para validar no momento" #: ../../auth.c:655 msgid "very weak" msgstr "muito fraco" #: ../../auth.c:658 msgid "weak" msgstr "fraco" #: ../../auth.c:661 msgid "ok" msgstr "bom" #: ../../auth.c:665 msgid "strong" msgstr "forte" #: ../../auth.c:683 #, c-format msgid "Current access level: %d (%s)\n" msgstr "Nível de acesso atual: %d (%s)\n" #: ../../auth.c:691 msgid "Select access level for this user:" msgstr "Selecione o nível de acesso para esse usuário:" #: ../../auth.c:776 ../../static/t/menu/your_info.html:4 msgid "Change your password" msgstr "Modificar sua senha" #: ../../auth.c:800 msgid "Enter new password:" msgstr "Digite nova senha:" #: ../../auth.c:804 msgid "Enter it again to confirm:" msgstr "Digite novamente para confirmar:" #: ../../auth.c:810 msgid "Change password" msgstr "Modificar senha" #: ../../auth.c:830 msgid "Cancelled. Password was not changed." msgstr "Cancelado. A senha não foi modificada." #: ../../auth.c:839 msgid "They don't match. Password was not changed." msgstr "Eles não batem. Senha não foi modificada." #: ../../auth.c:845 msgid "Blank passwords are not allowed." msgstr "Senhas em branco não são permitidas." #: ../../openid.c:34 msgid "Manage Account/OpenID Associations" msgstr "Gerenciar Contas/Associação com OpenID" #: ../../openid.c:52 msgid "Do you really want to delete this OpenID?" msgstr "Você realmente quer excluir este OpenID?" #: ../../openid.c:53 msgid "(delete)" msgstr "(excluir)" #: ../../openid.c:61 msgid "Add an OpenID: " msgstr "Adicionar um OpenID " #: ../../openid.c:64 msgid "Attach" msgstr "Anexar" #: ../../openid.c:68 #, c-format msgid "%s does not permit authentication via OpenID." msgstr "%s não é permitido autenticação via OpenID" #: ../../html2html.c:136 #, c-format msgid "realloc() error! couldn't get %d bytes: %s" msgstr "Erro de realloc()! não foi possível obter %d bytes: %s" #: ../../static/t/viewomatic.html:4 msgid "View as:" msgstr "Visualizar como:" #: ../../static/t/sieve/list.html:32 ../../static/t/sieve/none.html:4 #: ../../static/t/menu/your_info.html:7 msgid "View/edit server-side mail filters" msgstr "Visualizar/editar filtros de correio do lado do servidor" #: ../../static/t/sieve/list.html:41 msgid "When new mail arrives: " msgstr "Quando novas mensagens chegarem: " #: ../../static/t/sieve/list.html:43 msgid "Leave it in my inbox without filtering" msgstr "Manter em minha caixa de entrada sem filtragem" #: ../../static/t/sieve/list.html:44 msgid "Filter it according to rules selected below" msgstr "Filtrar de acordo com as regras abaixo" #: ../../static/t/sieve/list.html:45 msgid "Filter it through a manually edited script (advanced users only)" msgstr "" "Filtrar através de um script editado manualmente (apenas para usuários " "avançados)" #: ../../static/t/sieve/list.html:52 msgid "Your incoming mail will not be filtered through any scripts." msgstr "Mensagens novas não serão filtradas por nenhum script" #: ../../static/t/sieve/list.html:64 msgid "Add rule" msgstr "Adicionar regra" #: ../../static/t/sieve/list.html:71 msgid "The currently active script is: " msgstr "O script ativo atualmente é: " #: ../../static/t/sieve/list.html:76 ../../static/t/sieve/add.html:3 msgid "Add or delete scripts" msgstr "Adicionar ou excluir scripts" #: ../../static/t/sieve/display_one.html:16 msgid "If" msgstr "Se" #: ../../static/t/sieve/display_one.html:21 msgid "To or Cc" msgstr "Para ou Cc" #: ../../static/t/sieve/display_one.html:23 msgid "Reply-to" msgstr "Responder para (reply-to)" #: ../../static/t/sieve/display_one.html:24 #: ../../static/t/msg_listview.html:10 #: ../../static/t/view_mailq/header.html:27 msgid "Sender" msgstr "Autor" #: ../../static/t/sieve/display_one.html:25 msgid "Resent-From" msgstr "Reenviado-De" #: ../../static/t/sieve/display_one.html:26 msgid "Resent-To" msgstr "Reenviado-Para" #: ../../static/t/sieve/display_one.html:27 msgid "Envelope From" msgstr "Envelope De" #: ../../static/t/sieve/display_one.html:28 msgid "Envelope To" msgstr "Envelope Para" #: ../../static/t/sieve/display_one.html:29 msgid "X-Mailer" msgstr "X-Mailer" #: ../../static/t/sieve/display_one.html:30 msgid "X-Spam-Flag" msgstr "X-Spam-Flag" #: ../../static/t/sieve/display_one.html:31 msgid "X-Spam-Status" msgstr "X-Spam-Estatus" #: ../../static/t/sieve/display_one.html:32 msgid "List-ID" msgstr "List-ID" #: ../../static/t/sieve/display_one.html:33 msgid "Message size" msgstr "Tamanho da mensagem" #: ../../static/t/sieve/display_one.html:34 #: ../../static/t/select_messageindex_all.html:1 msgid "All" msgstr "Todas" #: ../../static/t/sieve/display_one.html:41 msgid "contains" msgstr "contém" #: ../../static/t/sieve/display_one.html:42 msgid "does not contain" msgstr "não contém" #: ../../static/t/sieve/display_one.html:43 msgid "is" msgstr "é" #: ../../static/t/sieve/display_one.html:44 msgid "is not" msgstr "não é" #: ../../static/t/sieve/display_one.html:45 msgid "matches" msgstr "bate" #: ../../static/t/sieve/display_one.html:46 msgid "does not match" msgstr "não bate" #: ../../static/t/sieve/display_one.html:52 msgid "(All messages)" msgstr "(Todas as mensagens)" #: ../../static/t/sieve/display_one.html:56 msgid "is larger than" msgstr "é maior que" #: ../../static/t/sieve/display_one.html:57 msgid "is smaller than" msgstr "é menor que" #: ../../static/t/sieve/display_one.html:59 #, fuzzy msgid "bytes" msgstr "anos" #: ../../static/t/sieve/display_one.html:65 msgid "Keep" msgstr "Manter" #: ../../static/t/sieve/display_one.html:66 msgid "Discard silently" msgstr "Descartar silenciosamente" #: ../../static/t/sieve/display_one.html:67 msgid "Reject" msgstr "Rejeitar" #: ../../static/t/sieve/display_one.html:68 msgid "Move message to" msgstr "Mover mensagens para" #: ../../static/t/sieve/display_one.html:69 msgid "Forward to" msgstr "Encaminhar para" #: ../../static/t/sieve/display_one.html:70 msgid "Vacation" msgstr "Férias" #: ../../static/t/sieve/display_one.html:82 msgid "Message:" msgstr "Mensagem:" #: ../../static/t/sieve/display_one.html:90 msgid "and then" msgstr "e depois" #: ../../static/t/sieve/display_one.html:93 msgid "continue processing" msgstr "continuar processando" #: ../../static/t/sieve/display_one.html:94 msgid "stop" msgstr "parar" #: ../../static/t/sieve/none.html:9 msgid "" "This installation of Citadel was built without support for server-side mail " "filtering.
    Please contact your system administrator if you require this " "feature.
    " msgstr "" "Essa instalação do Citadel foi criada sem suporte para filtros de email na " "parte do servidor (server-side).
    Contate o administrador do sistema se " "você precisa dessa função.
    " #: ../../static/t/sieve/add.html:9 msgid "Add a new script" msgstr "Adicionar novo script" #: ../../static/t/sieve/add.html:10 msgid "" "To create a new script, enter the desired script name in the box below and " "click 'Create'." msgstr "" "Para criar um novo script, digite o nome do script desjado na caixa abaixo e " "clique em 'Criar'." #: ../../static/t/sieve/add.html:14 msgid "Script name: " msgstr "Nome do script: " #: ../../static/t/sieve/add.html:18 msgid "Edit scripts" msgstr "Editar scripts" #: ../../static/t/sieve/add.html:20 msgid "Return to the script editing screen" msgstr "Retornar para a tela de edição de scripts" #: ../../static/t/sieve/add.html:23 msgid "Delete scripts" msgstr "Excluir scripts" #: ../../static/t/sieve/add.html:24 msgid "" "To delete an existing script, select the script name from the list and click " "'Delete'." msgstr "" "Para excluir um script existente, selecione o nome do script na lista e " "clique em 'Excluir script'." #: ../../static/t/msg/confirm_move.html:4 msgid "Confirm move of message" msgstr "Confirmar a movimentação da mensagem" #: ../../static/t/msg/confirm_move.html:12 msgid "Move this message to:" msgstr "Mover essa mensagem para:" #: ../../static/t/login.html:5 msgid "powered by" msgstr "desenvolvido por" #: ../../static/t/login.html:15 ../../static/t/iconbar.html:88 #: ../../static/t/get_logged_in.html:64 ../../static/t/get_logged_in.html:88 #: ../../static/t/get_logged_in.html:93 ../../static/t/get_logged_in.html:98 #: ../../static/t/get_logged_in.html:107 msgid "Log in" msgstr "Entrar" #: ../../static/t/trailing.html:14 msgid "" "WARNING: You have JavaScript disabled in your web browser. Many functions " "of this system will not work properly." msgstr "" "AVISO: O JavaScript do seu navegador está desabilitado. Muitas funções deste " "sistema não funcionarão adequadamente." #: ../../static/t/view_submessage.html:4 #: ../../static/t/view_message/replyquote.html:3 #: ../../static/t/view_message/replyquote.html:7 #: ../../static/t/view_message/print.html:8 ../../static/t/view_message.html:7 msgid "from " msgstr "de " #: ../../static/t/searchomatic.html:4 msgid "Search: " msgstr "Pesquisar: " #: ../../static/t/listsub/display.html:16 msgid "You are subscribing " msgstr "" #: ../../static/t/listsub/display.html:17 #, fuzzy msgid " to the " msgstr "em " #: ../../static/t/listsub/display.html:18 #, fuzzy msgid " mailing list." msgstr "Serviço de correio em massa" #: ../../static/t/listsub/display.html:19 msgid "" "The listserver has sent you an e-mail with one additional Web link for you " "to click on to confirm your subscription." msgstr "" #: ../../static/t/listsub/display.html:20 msgid "" "This extra step is for your protection, as it prevents others from being " "able to subscribe you to lists without your consent." msgstr "" #: ../../static/t/listsub/display.html:22 msgid "" "Please click on the link which is being e-mailed to you and your " "subscription will be confirmed." msgstr "" #: ../../static/t/listsub/display.html:27 #: ../../static/t/listsub/display.html:47 #, fuzzy msgid "ERROR" msgstr "ERRO:" #: ../../static/t/listsub/display.html:35 msgid "You are unsubscribing" msgstr "" #: ../../static/t/listsub/display.html:37 #, fuzzy msgid "from the" msgstr "de " #: ../../static/t/listsub/display.html:39 #, fuzzy msgid "mailing list." msgstr "Serviço de correio em massa" #: ../../static/t/listsub/display.html:40 msgid "" "The listserver has sent you an e-mail with one additional Web link for you " "to click on to confirm your unsubscription." msgstr "" #: ../../static/t/listsub/display.html:41 msgid "" "This extra step is for your protection, as it prevents others from being " "able to unsubscribe you from lists without your consent." msgstr "" #: ../../static/t/listsub/display.html:43 msgid "" "Please click on the link which is being e-mailed to you and your " "unsubscription will be confirmed." msgstr "" #: ../../static/t/listsub/display.html:44 #, fuzzy msgid "Back..." msgstr "Voltar..." #: ../../static/t/listsub/display.html:54 #, fuzzy msgid "Confirmation successful!" msgstr "Pedido de confirmação enviado" #: ../../static/t/listsub/display.html:56 #, fuzzy msgid "Confirmation failed." msgstr "Configuração" #: ../../static/t/listsub/display.html:57 msgid "This could mean one of two things:" msgstr "" #: ../../static/t/listsub/display.html:59 msgid "" "You waited too long to confirm your subscribe/unsubscribe request (the " "confirmation link is only valid for three days)" msgstr "" #: ../../static/t/listsub/display.html:60 msgid "" "You have already successfully confirmed your subscribe/unsubscribe " "request and are attempting to do it again." msgstr "" #: ../../static/t/listsub/display.html:62 msgid "The error returned by the server was: " msgstr "" #: ../../static/t/listsub/display.html:70 #, fuzzy msgid "Name of list:" msgstr "Nome da tarefa" #: ../../static/t/listsub/display.html:75 #, fuzzy msgid "Your e-mail address:" msgstr "Endereço de e-mail preferencial" #: ../../static/t/listsub/display.html:79 msgid "(If subscribing) preferred format: " msgstr "" #: ../../static/t/listsub/display.html:80 #, fuzzy msgid "One message at a time" msgstr "Entrar mensagem de texto:" #: ../../static/t/listsub/display.html:81 #, fuzzy msgid "Digest format" msgstr "Formato de hora" #: ../../static/t/listsub/display.html:89 msgid "" "When you attempt to subscribe or unsubscribe to a mailing list, you will " "receive an e-mail containing one additional web link to click on for final " "confirmation." msgstr "" #: ../../static/t/listsub/display.html:90 msgid "" "This extra step is for your protection, as it prevents others from being " "able to subscribe or unsubscribe you to lists." msgstr "" #: ../../static/t/floors_edit_one.html:11 msgid "(delete floor)" msgstr "(excluir andar)" #: ../../static/t/floors_edit_one.html:13 msgid "(edit graphic)" msgstr "(editar gráfico)" #: ../../static/t/floors.html:4 msgid "Add/change/delete floors" msgstr "Adicionar/modificar/excluir andares" #: ../../static/t/floors.html:10 msgid "Floor number" msgstr "Número do andar" #: ../../static/t/floors.html:11 msgid "Floor name" msgstr "Nome do andar" #: ../../static/t/floors.html:12 msgid "Number of rooms" msgstr "Numero de salas" #: ../../static/t/floors.html:13 msgid "Floor CSS" msgstr "CSS do andar" #: ../../static/t/files.html:4 msgid "Files available for download in" msgstr "Arquivos disponíveis para download em" #: ../../static/t/files.html:9 msgid "Upload a file:" msgstr "Fazer upload de um arquivo:" #: ../../static/t/files.html:30 msgid "Filename" msgstr "Nome do arquivo" #: ../../static/t/files.html:31 msgid "Size" msgstr "Tamanho" #: ../../static/t/files.html:32 msgid "Content" msgstr "Conteúdo" #: ../../static/t/files.html:33 msgid "Description" msgstr "Descrição" #: ../../static/t/edit_message.html:9 ../../static/t/iconbar.html:50 #: ../../static/t/iconbar.html:59 msgid "Loading" msgstr "Carregando" #: ../../static/t/edit_message.html:23 msgid "from" msgstr "de" #: ../../static/t/edit_message.html:29 ../../static/t/edit_message.html:38 msgid "Anonymous" msgstr "Anônimo" #: ../../static/t/edit_message.html:47 msgid "in" msgstr "em" #: ../../static/t/edit_message.html:51 msgid "To:" msgstr "Para:" #: ../../static/t/edit_message.html:57 #: ../../static/t/view_message/print.html:15 #: ../../static/t/view_message.html:15 msgid "CC:" msgstr "CC:" #: ../../static/t/edit_message.html:63 msgid "BCC:" msgstr "BCC:" #: ../../static/t/edit_message.html:71 msgid "Subject (optional):" msgstr "Assunto (opcional):" #: ../../static/t/edit_message.html:71 #: ../../static/t/view_message/replyquote.html:8 #: ../../static/t/view_message/print.html:16 #: ../../static/t/view_message.html:16 msgid "Subject:" msgstr "Assunto:" #: ../../static/t/edit_message.html:86 msgid "--- forwarded message ---" msgstr "--- mensagem encaminhada ---" #: ../../static/t/edit_message.html:110 msgid "Post message" msgstr "Fixar mensagem" #: ../../static/t/edit_message.html:118 msgid "Save to Drafts" msgstr "Salvar em rascunhos" #: ../../static/t/edit_message.html:126 #: ../../static/t/edit_message/attachments_pane.html:5 msgid "Attachments:" msgstr "Anexos:" #: ../../static/t/aide/display_serverrestart_page.html:4 msgid "Message to your Users:" msgstr "Mensagem para seus Usuários:" #: ../../static/t/aide/display_generic_result.html:2 msgid "Server command results" msgstr "Resultados do comando" #: ../../static/t/aide/display_generic_result.html:18 msgid "Enter another command" msgstr "Entre outro comando" #: ../../static/t/aide/display_generic_result.html:19 msgid "Return to menu" msgstr "Retornar ao menu" #: ../../static/t/aide/display_sitewide_config.html:3 msgid "Site configuration" msgstr "Configuração do sítio" #: ../../static/t/aide/display_sitewide_config.html:6 #: ../../static/t/aide/edituser/select.html:9 #, fuzzy msgid "You need to be aide to view this." msgstr "Você não tem permissão para visualizar esse recurso." #: ../../static/t/aide/display_sitewide_config.html:11 msgid "General" msgstr "Geral" #: ../../static/t/aide/display_sitewide_config.html:12 msgid "Access" msgstr "Acesso" #: ../../static/t/aide/display_sitewide_config.html:13 msgid "Network" msgstr "Rede" #: ../../static/t/aide/display_sitewide_config.html:14 msgid "Tuning" msgstr "Afinação" #: ../../static/t/aide/display_sitewide_config.html:15 msgid "Directory" msgstr "Diretório" #: ../../static/t/aide/display_sitewide_config.html:16 msgid "Auto-purger" msgstr "Excluidor automático" #: ../../static/t/aide/display_sitewide_config.html:17 msgid "Indexing/Journaling" msgstr "Indexação/Journaling" #: ../../static/t/aide/display_sitewide_config.html:18 #: ../../static/t/aide/siteconfig/tab_pushmail.html:1 msgid "Push Email" msgstr "Email Push" #: ../../static/t/aide/display_sitewide_config.html:19 msgid "Pop3" msgstr "Pop3" #: ../../static/t/aide/usermanagement.html:2 msgid "Add, change, delete user accounts" msgstr "Adicionar, modificar e excluir contas de usuários" #: ../../static/t/aide/display_inetconf.html:5 #: ../../static/t/aide/display_menu.html:5 msgid "System Administration Menu" msgstr "Menu de administração do sistema" #: ../../static/t/aide/display_inetconf.html:6 #: ../../static/t/aide/display_menu.html:6 #, fuzzy msgid "Room Admin Menu" msgstr "Admin da sala: " #: ../../static/t/aide/display_inetconf.html:13 msgid "Local host aliases" msgstr "Nomes simbólicos do computador local" #: ../../static/t/aide/display_inetconf.html:14 msgid "Directory domains" msgstr "Domínios do diretório" #: ../../static/t/aide/display_inetconf.html:15 msgid "Smart hosts" msgstr "Servidores inteligentes" #: ../../static/t/aide/display_inetconf.html:16 #, fuzzy msgid "Fallback smart hosts" msgstr "Servidores inteligentes" #: ../../static/t/aide/display_inetconf.html:17 msgid "Notification hosts" msgstr "" #: ../../static/t/aide/display_inetconf.html:22 msgid "RBL hosts" msgstr "Computadores RBL" #: ../../static/t/aide/display_inetconf.html:23 msgid "SpamAssassin hosts" msgstr "Computadores SpamAssassin" #: ../../static/t/aide/display_inetconf.html:24 msgid "ClamAV clamd hosts" msgstr "" #: ../../static/t/aide/display_inetconf.html:25 msgid "Masqueradable domains" msgstr "Domínios mascaráveis" #: ../../static/t/aide/edituser/select.html:5 msgid "Edit or delete users" msgstr "Editar ou excluir usuários" #: ../../static/t/aide/edituser/select.html:17 msgid "Add users" msgstr "Adicionar usuários" #: ../../static/t/aide/edituser/select.html:20 msgid "Edit or Delete users" msgstr "Editar ou Remover usuários" #: ../../static/t/aide/edituser/box_select.html:1 msgid "" "To edit an existing user account, select the user name from the list and " "click 'Edit'." msgstr "" "Para editar uma conta de usuário existente, selecione o nome de usuário na " "lista e clique em 'Editar'." #: ../../static/t/aide/edituser/detailview.html:4 msgid "Edit user account: " msgstr "Editar conta de usuário: " #: ../../static/t/aide/edituser/detailview.html:24 #: ../../static/t/room/edit/tab_feed.html:14 msgid "Password" msgstr "Senha" #: ../../static/t/aide/edituser/detailview.html:28 msgid "Permission to send Internet mail" msgstr "Permissão para enviar email na Internet" #: ../../static/t/aide/edituser/detailview.html:32 msgid "Number of logins" msgstr "Número de logins" #: ../../static/t/aide/edituser/detailview.html:36 msgid "Messages submitted" msgstr "Mensagens enviadas" #: ../../static/t/aide/edituser/detailview.html:40 msgid "Access level" msgstr "Nível de acesso" #: ../../static/t/aide/edituser/detailview.html:54 msgid "User ID number" msgstr "Número ID do usuário" #: ../../static/t/aide/edituser/detailview.html:58 msgid "Date and time of last login" msgstr "Data e hora do último login" #: ../../static/t/aide/edituser/detailview.html:68 msgid "Auto-purge after this many days" msgstr "Excluir automaticamente após essa quantidade de dias" #: ../../static/t/aide/edituser/add.html:1 msgid "" "To create a new user account, enter the desired user name in the box below " "and click 'Create'." msgstr "" "Para criar uma nova conta de usuário, digite o nome de usuário desejado na " "caixa abaixo e clique em 'Criar'." #: ../../static/t/aide/edituser/add.html:5 msgid "New user: " msgstr "Novo usuário: " #: ../../static/t/aide/display_generic_cmd.html:4 msgid "Enter a server command" msgstr "Entrar um comando de servidor" #: ../../static/t/aide/display_generic_cmd.html:12 msgid "" "This screen allows you to enter Citadel server commands which are not " "supported by WebCit. If you do not know what that means, then this screen " "will not be of much use to you." msgstr "" "Essa tela permite que você entre comandos de servidor Citadel que não são " "suportados pelo WebCit. Se você não sabe o que isso significa, essa tela não " "será de muita utilidade para você." #: ../../static/t/aide/display_generic_cmd.html:15 msgid "Enter command:" msgstr "Entre comando:" #: ../../static/t/aide/display_generic_cmd.html:17 msgid "Command input (if requesting SEND_LISTING transfer mode):" msgstr "" #: ../../static/t/aide/display_generic_cmd.html:20 #, fuzzy msgid "Detected host header is " msgstr "Cabeçalho detectado do computador é %s://%s" #: ../../static/t/aide/display_ignetconf.html:4 msgid "Network configuration" msgstr "Configuração da rede" #: ../../static/t/aide/display_ignetconf.html:10 #: ../../static/t/aide/ignetconf/edit_node.html:5 #: ../../static/t/aide/ignetconf/add.html:5 msgid "Add a new node" msgstr "Adicionar novo nódulo" #: ../../static/t/aide/display_ignetconf.html:14 msgid "Currently configured nodes" msgstr "Nódulos atualmente configurados" #: ../../static/t/aide/display_serverrestart.html:26 msgid "Restart Citadel" msgstr "Reinicie o Citadel" #: ../../static/t/aide/floorconfig.html:2 msgid "Add, change, or delete floors" msgstr "Adicionar, modificar ou excluir andares" #: ../../static/t/aide/serverrestart/box.html:3 msgid "Please wait while the Citadel server is restarted... " msgstr "Espere enquanto o servidor Citadel é reiniciado... " #: ../../static/t/aide/serverrestart/box_page_do.html:3 msgid "" "Please wait while your users are being paged, the citadel server will be " "restarted after that... " msgstr "" "Por favor espere enquanto seus usuários estão sendo 'pageados', o servidor " "Citadel será reiniciado logo após... " #: ../../static/t/aide/inet/masqdomains.html:2 msgid "(Domains as which users are allowed to masquerade)" msgstr "(Domínios cujos usuários estão autorizados a mascarar)" #: ../../static/t/aide/inet/rbldns.html:2 msgid "(hosts running a Realtime Blackhole List)" msgstr "(computadores rodando um 'Realtime Blackhole List')" #: ../../static/t/aide/inet/dirnames.html:2 msgid "(domains mapped with the Global Address Book)" msgstr "(domínios mapeados com o Caderno de Endereços Global)" #: ../../static/t/aide/inet/notify.html:2 msgid "(URLS for notifications when users receive new mails; )" msgstr "" #: ../../static/t/aide/inet/notify.html:2 msgid "Syntax: Notificationtemplatename:http[s]://user:password@hostname/path" msgstr "" #: ../../static/t/aide/inet/smarthosts.html:2 msgid "(if present, forward all outbound mail to one of these hosts)" msgstr "" "(se presente, encaminhar todas as mensagens para computadores externos para " "um desses computadores)" #: ../../static/t/aide/inet/aliases.html:2 msgid "(domains for which this host receives mail)" msgstr "(domínios os quais esse computador recebe mensagens)" #: ../../static/t/aide/inet/clamav.html:2 #, fuzzy msgid "(hosts running the ClamAV clamd service)" msgstr "(computadores rodando o serviço SpamAssassin)" #: ../../static/t/aide/inet/spamass.html:2 msgid "(hosts running the SpamAssassin service)" msgstr "(computadores rodando o serviço SpamAssassin)" #: ../../static/t/aide/inet/fallbackhosts.html:2 msgid "(send outbound mail to these hosts only when direct delivery fails)" msgstr "" #: ../../static/t/aide/ignetconf/display_confirm_delete.html:5 msgid "Confirm delete" msgstr "Confirmar exclusão" #: ../../static/t/aide/ignetconf/display_confirm_delete.html:11 msgid "Are you sure you want to delete " msgstr "Tem certeza que quer excluir " #: ../../static/t/aide/ignetconf/display_confirm_delete.html:14 #: ../../static/t/prefs/box.html:198 ../../static/t/iconbar/edit.html:19 #: ../../static/t/iconbar/edit.html:26 ../../static/t/iconbar/edit.html:32 #: ../../static/t/iconbar/edit.html:39 ../../static/t/iconbar/edit.html:45 #: ../../static/t/iconbar/edit.html:52 ../../static/t/iconbar/edit.html:58 #: ../../static/t/iconbar/edit.html:64 ../../static/t/iconbar/edit.html:70 #: ../../static/t/iconbar/edit.html:76 ../../static/t/iconbar/edit.html:82 #: ../../static/t/iconbar/edit.html:88 msgid "Yes" msgstr "Sim" #: ../../static/t/aide/ignetconf/display_confirm_delete.html:16 #: ../../static/t/prefs/box.html:200 ../../static/t/iconbar/edit.html:20 #: ../../static/t/iconbar/edit.html:27 ../../static/t/iconbar/edit.html:33 #: ../../static/t/iconbar/edit.html:40 ../../static/t/iconbar/edit.html:46 #: ../../static/t/iconbar/edit.html:53 ../../static/t/iconbar/edit.html:59 #: ../../static/t/iconbar/edit.html:65 ../../static/t/iconbar/edit.html:71 #: ../../static/t/iconbar/edit.html:77 ../../static/t/iconbar/edit.html:83 #: ../../static/t/iconbar/edit.html:89 msgid "No" msgstr "Não" #: ../../static/t/aide/ignetconf/edit_node.html:15 #: ../../static/t/aide/ignetconf/add.html:15 #: ../../static/t/aide/siteconfig/tab_general.html:8 msgid "Node name" msgstr "Nome do nódulo" #: ../../static/t/aide/ignetconf/edit_node.html:17 #: ../../static/t/aide/ignetconf/add.html:17 msgid "Shared secret" msgstr "Segredo compartilhado" #: ../../static/t/aide/ignetconf/edit_node.html:19 #: ../../static/t/aide/ignetconf/add.html:19 msgid "Host or IP address" msgstr "Nome do computador ou endereço IP" #: ../../static/t/aide/ignetconf/edit_node.html:21 #: ../../static/t/aide/ignetconf/add.html:21 msgid "Port number" msgstr "Número da porta" #: ../../static/t/aide/ignetconf/section.html:4 msgid "(Edit)" msgstr "(Editar)" #: ../../static/t/aide/display_menu.html:12 msgid "Global Configuration" msgstr "Configuração Global" #: ../../static/t/aide/display_menu.html:14 msgid "User account management" msgstr "Manejamento de contas de usuário" #: ../../static/t/aide/display_menu.html:16 msgid "Shutdown Citadel" msgstr "Desligar o Citadel" #: ../../static/t/aide/display_menu.html:18 msgid "Rooms and Floors" msgstr "Salas e andares" #: ../../static/t/aide/global_config.html:2 msgid "Edit site-wide configuration" msgstr "Editar configurações globais do site" #: ../../static/t/aide/global_config.html:3 msgid "Domain names and Internet mail configuration" msgstr "Nomes de domínios e configuração de correio eletrônico (Internet)" #: ../../static/t/aide/global_config.html:4 msgid "Configure replication with other Citadel servers" msgstr "Configurar replicação com outros computadores Citadel" #: ../../static/t/aide/global_config.html:5 #: ../../static/t/view_mailq/header.html:3 msgid "View the outbound SMTP queue" msgstr "Visualizar a fila SMTP externa" #: ../../static/t/aide/restart.html:2 msgid "Restart Now" msgstr "Reiniciar agora" #: ../../static/t/aide/restart.html:3 msgid "Restart after paging users" msgstr "Reiniciar após 'pagear' usuários" #: ../../static/t/aide/restart.html:4 msgid "Restart when all users are idle" msgstr "Reiniciar quando todos os usuários estiverem ociosos" #: ../../static/t/aide/siteconfig/tab_general.html:1 msgid "General site configuration items" msgstr "Itens de configuração geral do sítio" #: ../../static/t/aide/siteconfig/tab_general.html:5 msgid "Change Login Logo" msgstr "Mudar Logotipo de Login" #: ../../static/t/aide/siteconfig/tab_general.html:6 msgid "Change Logout Logo" msgstr "Mudar Logotipo de Logout" #: ../../static/t/aide/siteconfig/tab_general.html:11 msgid "Fully qualified domain name" msgstr "Nome de domínio completamente expressado (FQDN)" #: ../../static/t/aide/siteconfig/tab_general.html:14 msgid "Human-readable node name" msgstr "Nome legível do nódulo" #: ../../static/t/aide/siteconfig/tab_general.html:17 msgid "Telephone number" msgstr "Número do telefone" #: ../../static/t/aide/siteconfig/tab_general.html:20 msgid "Paginator prompt (for text mode clients)" msgstr "Prompt do paginador (para clientes em modo texto)" #: ../../static/t/aide/siteconfig/tab_general.html:23 msgid "Geographic location of this system" msgstr "Local geográfico desse sistema" #: ../../static/t/aide/siteconfig/tab_general.html:26 msgid "Name of system administrator" msgstr "Nome do administrador do sistema" #: ../../static/t/aide/siteconfig/tab_general.html:29 msgid "Default timezone for unzoned calendar items" msgstr "Zona horária para itens de calendário sem zona definida" #: ../../static/t/aide/siteconfig/tab_autopurger.html:1 msgid "Configure automatic expiry of old messages" msgstr "Configurar vencimento automático de mensagens antigas." #: ../../static/t/aide/siteconfig/tab_autopurger.html:2 msgid "These settings may be overridden on a per-floor or per-room basis." msgstr "" "Essas configurações poderão ser ignoradas dependendo das configurações da " "sala ou andar." #: ../../static/t/aide/siteconfig/tab_autopurger.html:6 msgid "Hour to run database auto-purge" msgstr "Hora a rodar exclusão automática no banco de dados" #: ../../static/t/aide/siteconfig/tab_autopurger.html:66 msgid "Default message expire policy for public rooms" msgstr "Política de vencimento padrão para salas públicas" #: ../../static/t/aide/siteconfig/tab_autopurger.html:68 #: ../../static/t/aide/siteconfig/tab_autopurger.html:86 #: ../../static/t/room/edit/tab_expire.html:17 #: ../../static/t/room/edit/tab_expire.html:45 msgid "Never automatically expire messages" msgstr "Nunca expirar mensagens automaticamente" #: ../../static/t/aide/siteconfig/tab_autopurger.html:71 #: ../../static/t/aide/siteconfig/tab_autopurger.html:89 #: ../../static/t/room/edit/tab_expire.html:20 #: ../../static/t/room/edit/tab_expire.html:48 msgid "Expire by message count" msgstr "Expirar por número de mensagens" #: ../../static/t/aide/siteconfig/tab_autopurger.html:73 #: ../../static/t/aide/siteconfig/tab_autopurger.html:92 #: ../../static/t/room/edit/tab_expire.html:23 #: ../../static/t/room/edit/tab_expire.html:51 msgid "Expire by message age" msgstr "Expirar por idade das mensagens" #: ../../static/t/aide/siteconfig/tab_autopurger.html:75 #: ../../static/t/aide/siteconfig/tab_autopurger.html:94 #: ../../static/t/room/edit/tab_expire.html:25 #: ../../static/t/room/edit/tab_expire.html:53 msgid "Number of messages or days: " msgstr "Número de mensagens ou dias: " #: ../../static/t/aide/siteconfig/tab_autopurger.html:81 msgid "Default message expire policy for private mailboxes" msgstr "Política de vencimento padrão para caixas de mensagens privadas" #: ../../static/t/aide/siteconfig/tab_autopurger.html:83 msgid "Same policy as public rooms" msgstr "Usar a mesma política das salas públicas" #: ../../static/t/aide/siteconfig/tab_network.html:1 msgid "Network services" msgstr "Serviços de rede" #: ../../static/t/aide/siteconfig/tab_network.html:2 #: ../../static/t/aide/siteconfig/tab_directory.html:3 msgid "" "Changes made on this screen will not take effect until you restart the " "Citadel server." msgstr "" "Mudanças feitas nessa tela não terão efeito até você reiniciar o servidor " "Citadel." #: ../../static/t/aide/siteconfig/tab_network.html:6 msgid "SMTP MTA port (-1 to disable)" msgstr "Porta para requisições SMTP MTA (-1 para desativar)" #: ../../static/t/aide/siteconfig/tab_network.html:9 msgid "Correct forged From: lines during authenticated SMTP" msgstr "Corrigir linhas 'De:' forjadas durante autenticação SMTP" #: ../../static/t/aide/siteconfig/tab_network.html:12 msgid "Flag message as spam, instead of rejecting it" msgstr "Marque a mensagem como spam, ao invés de rejeitá-la" #: ../../static/t/aide/siteconfig/tab_network.html:15 msgid "IMAP listener port (-1 to disable)" msgstr "Porta para requisições IMAP (-1 para desativar)" #: ../../static/t/aide/siteconfig/tab_network.html:19 msgid "Network run frequency (in seconds)" msgstr "Frequência do \"network run\" (em segundos)" #: ../../static/t/aide/siteconfig/tab_network.html:22 msgid "Server IP address (0.0.0.0 for 'any')" msgstr "Endereço IP a ser usado pelo servidor (0.0.0.0 para 'qualquer um')" #: ../../static/t/aide/siteconfig/tab_network.html:25 msgid "SMTP MSA port (-1 to disable)" msgstr "Porta para requisições SMTP MSA (-1 para desativar)" #: ../../static/t/aide/siteconfig/tab_network.html:28 msgid "IMAP over SSL port (-1 to disable)" msgstr "Porta para requisições IMAP sobre SSL (-1 para desativar)" #: ../../static/t/aide/siteconfig/tab_network.html:31 msgid "SMTP over SSL port (-1 to disable)" msgstr "Porta para requisições SMTP sobre SSL (-1 para desativar)" #: ../../static/t/aide/siteconfig/tab_network.html:34 msgid "Instantly expunge deleted messages in IMAP" msgstr "Destruir mensagens excluídas por IMAP instantâneamente" #: ../../static/t/aide/siteconfig/tab_network.html:38 #, fuzzy msgid "Allow unauthenticated SMTP clients to spoof this sites domains" msgstr "" "Permitir que clientes SMTP não autenticados personifiquem (spoof) os " "domínios desse sítio" #: ../../static/t/aide/siteconfig/tab_network.html:41 msgid "Postfix TCP Dictionary Port" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:41 msgid "-1 to disable" msgstr "-1 para desabilitar" #: ../../static/t/aide/siteconfig/tab_network.html:44 msgid "ManageSieve Port (-1 to disable)" msgstr "Porta para requisições ManageSieve (-1 to disable)" #: ../../static/t/aide/siteconfig/tab_network.html:47 msgid "Perform RBL checks upon connect instead of after RCPT" msgstr "Realizar checagens RBL na conexão ao invés de após RCPT" #: ../../static/t/aide/siteconfig/tab_network.html:50 msgid "Keep original from headers in IMAP" msgstr "Manter cabeçalhos originais no IMAP" #: ../../static/t/aide/siteconfig/tab_network.html:53 msgid "XMPP (Jabber) client to server port (-1 to disable)" msgstr "Porta para requisições XMPP (Jabber) (-1 para desativar)" #: ../../static/t/aide/siteconfig/tab_network.html:56 msgid "XMPP (Jabber) server to server port (-1 to disable)" msgstr "" "Porta para requisições servidor-servidor XMPP (Jabber) (-1 para desativar)" #: ../../static/t/aide/siteconfig/tab_pop3.html:1 msgid "POP3" msgstr "POP3" #: ../../static/t/aide/siteconfig/tab_pop3.html:6 msgid "POP3 listener port (-1 to disable)" msgstr "Porta para requisições POP3 (-1 para desativar)" #: ../../static/t/aide/siteconfig/tab_pop3.html:9 msgid "POP3 over SSL port (-1 to disable)" msgstr "Porta para requisições POP3 sobre SSL (-1 para desativar)" #: ../../static/t/aide/siteconfig/tab_pop3.html:12 #, fuzzy msgid "POP3 fetch frequency in seconds" msgstr "Frequência do \"network run\" (em segundos)" #: ../../static/t/aide/siteconfig/tab_pop3.html:15 #, fuzzy msgid "POP3 fastest fetch frequency in seconds" msgstr "Frequência do \"network run\" (em segundos)" #: ../../static/t/aide/siteconfig/tab_tuning.html:1 msgid "Advanced server fine-tuning controls" msgstr "Controles de afinação-fina do servidor" #: ../../static/t/aide/siteconfig/tab_tuning.html:5 msgid "Server connection idle timeout (in seconds)" msgstr "Timeout para conexões ociosas com o servidor (em segundos)" #: ../../static/t/aide/siteconfig/tab_tuning.html:8 msgid "Maximum concurrent sessions (0 = no limit)" msgstr "Número máximo de sessões correntes (0 = sem limites)" #: ../../static/t/aide/siteconfig/tab_tuning.html:11 msgid "Default user purge time (days)" msgstr "Tempo padrão para exclusão automática de usuário (dias)" #: ../../static/t/aide/siteconfig/tab_tuning.html:14 msgid "Default room purge time (days)" msgstr "Tempo padrão para exclusão automática de sala (dias)" #: ../../static/t/aide/siteconfig/tab_tuning.html:17 msgid "Maximum message length" msgstr "Extensão máxima de mensagem" #: ../../static/t/aide/siteconfig/tab_tuning.html:20 msgid "Minimum number of worker threads" msgstr "Número mínimo de \"worker threads\"" #: ../../static/t/aide/siteconfig/tab_tuning.html:23 msgid "Maximum number of worker threads" msgstr "Número máximo de \"worker threads\"" #: ../../static/t/aide/siteconfig/tab_tuning.html:26 msgid "Automatically delete committed database logs" msgstr "Exlcuir automaticamente logs de banco de dados já aplicados" #: ../../static/t/aide/siteconfig/tab_pushmail.html:5 msgid "Funambol server host (blank to disable)" msgstr "Host do servidor Funambol (em branco para desativar" #: ../../static/t/aide/siteconfig/tab_pushmail.html:8 msgid "Funambol server port " msgstr "Porta do servidor Funambol " #: ../../static/t/aide/siteconfig/tab_pushmail.html:11 msgid "Funambol sync source" msgstr "Fonte de sincronia Funambol" #: ../../static/t/aide/siteconfig/tab_pushmail.html:14 msgid "Funambol auth details (user:pass)" msgstr "Det. autenticação Funambol (user:pass)" #: ../../static/t/aide/siteconfig/tab_pushmail.html:17 msgid "External pager tool (blank to disable)" msgstr "Ferramenta de pager externa (em branco para desativar)" #: ../../static/t/aide/siteconfig/tab_access.html:1 msgid "Access controls and site policy settings" msgstr "Configurações de controle de acesso e política do sítio" #: ../../static/t/aide/siteconfig/tab_access.html:5 msgid "Allow aides to zap (forget) rooms" msgstr "Permitir que aides esqueçam salas" #: ../../static/t/aide/siteconfig/tab_access.html:9 msgid "Quarantine messages from problem users" msgstr "Mover mensagens de usuários problema para a quarentena" #: ../../static/t/aide/siteconfig/tab_access.html:12 msgid "Name of quarantine room" msgstr "Nome da sala de quarentena" #: ../../static/t/aide/siteconfig/tab_access.html:17 msgid "Name of room to log pages" msgstr "Nome da sala para logar páginas" #: ../../static/t/aide/siteconfig/tab_access.html:22 #, fuzzy msgid "Authentication mode" msgstr "Modo de autenticação" #: ../../static/t/aide/siteconfig/tab_access.html:24 #, fuzzy msgid "Self contained" msgstr "contém" #: ../../static/t/aide/siteconfig/tab_access.html:25 #, fuzzy msgid "Host based" msgstr "Nome do host:" #: ../../static/t/aide/siteconfig/tab_access.html:26 msgid "LDAP (RFC2307)" msgstr "LDAP (RFC2307)" #: ../../static/t/aide/siteconfig/tab_access.html:27 msgid "LDAP (Active Directory)" msgstr "LDAP (Diretório Ativo)" #: ../../static/t/aide/siteconfig/tab_access.html:30 msgid "Master user name (blank to disable)" msgstr "Nome do usuário mestre (em branco para desativar)" #: ../../static/t/aide/siteconfig/tab_access.html:33 msgid "Master user password" msgstr "Senha do usuário mestre" #: ../../static/t/aide/siteconfig/tab_access.html:38 msgid "Initial access level for new users" msgstr "Nível de acesso inicial para novos usuários" #: ../../static/t/aide/siteconfig/tab_access.html:49 msgid "Access level required to create rooms" msgstr "Nível de acesso necessário para criar salas" #: ../../static/t/aide/siteconfig/tab_access.html:60 msgid "Automatically grant room-aide status to users who create private rooms" msgstr "" "Permitir que criadores de salas privadas tenham status de aide das mesmas." #: ../../static/t/aide/siteconfig/tab_access.html:63 #, fuzzy msgid "Automatically grant room-aide status to users who create BLOG rooms" msgstr "Permitir que criadores de salas BLOG tenham status de aide das mesmas." #: ../../static/t/aide/siteconfig/tab_access.html:66 msgid "Restrict access to Internet mail" msgstr "Restringir acesso a correio eletrônico da Internet" #: ../../static/t/aide/siteconfig/tab_access.html:71 msgid "Disable self-service user account creation" msgstr "" "Desabilitar criação de conta por responsabilidade do usuário (self-service)" #: ../../static/t/aide/siteconfig/tab_access.html:71 msgid "Hint: do not select both!" msgstr "Dica: não selecione os dois" #: ../../static/t/aide/siteconfig/tab_access.html:74 msgid "Require registration for new users" msgstr "Requerer registro de usuários novos" #: ../../static/t/aide/siteconfig/tab_access.html:77 msgid "Allow anonymous guest access" msgstr "Permitir acesso de convidado anônimo" #: ../../static/t/aide/siteconfig/tab_indexing.html:1 msgid "Indexing and Journaling" msgstr "Indexação e Journaling" #: ../../static/t/aide/siteconfig/tab_indexing.html:2 msgid "Warning: these facilities are resource intensive." msgstr "Aviso: essas funções utilizam mais recursos do sistema." #: ../../static/t/aide/siteconfig/tab_indexing.html:6 msgid "Enable full text index" msgstr "Ativar índice de texto inteiro (full text index)" #: ../../static/t/aide/siteconfig/tab_indexing.html:9 msgid "Perform journaling of email messages" msgstr "Realizar journaling de mensagens de email" #: ../../static/t/aide/siteconfig/tab_indexing.html:13 msgid "Perform journaling of non-email messages" msgstr "Realizar journaling de outras mensagens (não-email)" #: ../../static/t/aide/siteconfig/tab_indexing.html:16 msgid "Email destination of journalized messages" msgstr "Destino (email) de mensagens onde journaling foi realizado" #: ../../static/t/aide/siteconfig/tab_directory.html:1 msgid "Configure the LDAP connector for Citadel" msgstr "Configurar o conector LDAP para o Citadel" #: ../../static/t/aide/siteconfig/tab_directory.html:4 msgid "" "NOTE: This Citadel server has been built without LDAP support. These " "options will have no effect." msgstr "" "NOTA: Esse servidor Citadel foi criado sem suporte a LDAP. Essas opções não " "terão efeito." #: ../../static/t/aide/siteconfig/tab_directory.html:9 msgid "Host name of LDAP server (blank to disable)" msgstr "Nome do servidor LDAP (deixe em branco para desabilitar)" #: ../../static/t/aide/siteconfig/tab_directory.html:13 msgid "Port number of LDAP server (blank to disable)" msgstr "Número da porta do servidor LDAP (deixe em branco para desabilitar)" #: ../../static/t/aide/siteconfig/tab_directory.html:16 msgid "Base DN" msgstr "Base DN" #: ../../static/t/aide/siteconfig/tab_directory.html:19 msgid "Bind DN" msgstr "Bind DN" #: ../../static/t/aide/siteconfig/tab_directory.html:22 msgid "Password for bind DN" msgstr "Senha para bind DN" #: ../../static/t/iconbar.html:7 msgid "Language:" msgstr "Idioma:" #: ../../static/t/iconbar.html:19 msgid "Mail" msgstr "Correio" #: ../../static/t/iconbar.html:39 ../../static/t/iconbar/edit.html:61 #: ../../static/t/summary/page.html:30 msgid "Tasks" msgstr "Tarefas" #: ../../static/t/iconbar.html:48 ../../static/t/iconbar/edit.html:67 msgid "Rooms" msgstr "Salas" #: ../../static/t/iconbar.html:57 msgid "Online users" msgstr "Usuários online" #: ../../static/t/iconbar.html:62 ../../static/t/iconbar/edit.html:79 msgid "Chat" msgstr "Bate-papo" #: ../../static/t/iconbar.html:65 msgid "Advanced" msgstr "Avançado" #: ../../static/t/iconbar.html:72 ../../static/t/room/edit/editroom.html:4 #: ../../static/t/room/edit.html:5 msgid "Administration" msgstr "Administração" #: ../../static/t/iconbar.html:83 msgid "customize this menu" msgstr "personalizar esse menu" #: ../../static/t/iconbar.html:92 msgid "switch to room list" msgstr "mudar para lista de salas" #: ../../static/t/iconbar.html:93 msgid "switch to menu" msgstr "mudar para menu" #: ../../static/t/iconbar.html:94 msgid "My folders" msgstr "Minhas pastas" #: ../../static/t/view_message/list_attach.html:3 #: ../../static/t/view_message/inline_attach.html:4 msgid "View" msgstr "Visualizar" #: ../../static/t/view_message/list_attach.html:4 #: ../../static/t/view_message/inline_attach.html:5 msgid "Download" msgstr "Download" #: ../../static/t/view_message/print.html:14 #: ../../static/t/view_message.html:14 msgid "to" msgstr "até" #: ../../static/t/openid_manual_create.html:2 msgid "Your OpenID" msgstr "Sua OpenID" #: ../../static/t/openid_manual_create.html:2 msgid "was successfully verified." msgstr "Verificado com sucesso" #: ../../static/t/openid_manual_create.html:3 msgid "However, the user name" msgstr "No entanto, o nome do usuário" #: ../../static/t/openid_manual_create.html:3 msgid "conflicts with an existing user." msgstr "conflito com um usuário existente." #: ../../static/t/openid_manual_create.html:5 msgid "Please specify the user name you would like to use." msgstr "Por favor especifique o nome do usuário que você gostaria de usar." #: ../../static/t/files/graphicsupload.html:2 msgid "Image upload" msgstr "Upload de imagem" #: ../../static/t/files/graphicsupload.html:6 msgid "You can upload an image directly from your computer" msgstr "Você pode fazer upload de uma imagem diretamente do seu computador" #: ../../static/t/files/graphicsupload.html:8 msgid "Please select a file to upload:" msgstr "Selecione um arquivo para fazer upload:" #: ../../static/t/files/section_onefile.html:20 msgid "Slideshow" msgstr "Apresentação" #: ../../static/t/roombanner.html:10 ../../static/t/roombanner.html:11 msgid "new of" msgstr "novo de" #: ../../static/t/roombanner.html:10 ../../static/t/roombanner.html:11 #: ../../static/t/msg_listselector_bottom.html:7 #: ../../static/t/msg_listselector_top.html:7 msgid "messages" msgstr "mensagens" #: ../../static/t/roombanner.html:28 msgid "Select page: " msgstr "Selecione a página: " #: ../../static/t/who.html:13 msgid "Users currently on " msgstr "Usuário atualmente on line " #: ../../static/t/who.html:22 msgid "Click on a name to read user info. Click on" msgstr "Clique em um nome para ler os dados de usuário. Clique aqui" #: ../../static/t/who.html:24 msgid "to send an instant message to that user." msgstr "para enviar uma mensagem instantânea para este usuário." #: ../../static/t/msg_listselector_bottom.html:2 #: ../../static/t/msg_listselector_top.html:2 msgid "Reading #" msgstr "Lendo #" #: ../../static/t/msg_listselector_bottom.html:12 #: ../../static/t/msg_listselector_top.html:12 msgid "oldest to newest" msgstr "antigas para mais novas" #: ../../static/t/msg_listselector_bottom.html:20 #: ../../static/t/msg_listselector_top.html:20 msgid "newest to oldest" msgstr "novas para mais antigas" #: ../../static/t/newstartpage.html:4 msgid "New start page" msgstr "Nova página inicial" #: ../../static/t/newstartpage.html:9 msgid "Your start page has been changed." msgstr "Sua página inicial foi alterada." #: ../../static/t/newstartpage.html:12 msgid "" "(Note: this does not change your browser's home page. It changes the page " "you begin on when you log on to" msgstr "" "(Nota: isto não altera a página inicial do seu navegador. Ele altera a " "página que você começa quando você logar no" #: ../../static/t/no_new_msgs.html:3 msgid "No new messages." msgstr "Nenhuma nova mensagem." #: ../../static/t/view_blog/comment_box.html:8 msgid "Post a comment" msgstr "Postar um comentário" #: ../../static/t/prefs/pushemail.html:2 #, fuzzy msgid "Configure Push Email" msgstr "Email Push" #: ../../static/t/prefs/pushemail.html:9 msgid "Push email and SMS settings" msgstr "Configurações de 'push email' e SMS" #: ../../static/t/prefs/pushemail.html:17 msgid "" "If your administrator has enabled the functionality, Citadel can notify a " "Funambol server that you haved recieved new email and automatically " "syncronize any devices you have with the Funambol client installed." msgstr "" "Se você souber o nome de um oculto (acho que o nome) ou sala com senha, você " "pode entrar naquela sala, digitando o seu nome abaixo. Depois de ganhar " "acesso a uma sala privada, ele irá aparecer na sua listagem de sala regular " "assim que você não precisa voltar sempre aqui." #: ../../static/t/prefs/pushemail.html:20 msgid "" "Alternatively, if the administrator has configured it, Citadel can send a " "text message to you when new mail arrives." msgstr "" "Alternativamente, se o administrador configurou isto, o Citadel pode enviar " "uma mensagem de texto para você quando chegar uma nova mensagem." #: ../../static/t/prefs/pushemail.html:26 #, fuzzy msgid "Notify Funambol server" msgstr "Porta do servidor Funambol" #: ../../static/t/prefs/pushemail.html:31 #, fuzzy msgid "Send a text message to..." msgstr "Mandar mensagem instantânea para: " #: ../../static/t/prefs/pushemail.html:33 msgid "" "(Use international format, without any leading zeros, spaces or hypens, like " "+61415011501)" msgstr "" "(Use formato internacional, without any leading zeros, spaces or hypens, " "like +61415011501)" #: ../../static/t/prefs/pushemail.html:38 msgid "Use custom notification scheme configured by your Admin" msgstr "" "Use regime de notificação personalizada configuradas pelo administrador" #: ../../static/t/prefs/pushemail.html:43 msgid "Don‘t send any notifications" msgstr "Não envie notificações" #: ../../static/t/prefs/box.html:9 msgid "Tree (folders) view" msgstr "Visualização em árvore (pastas)" #: ../../static/t/prefs/box.html:11 msgid "Table (rooms) view" msgstr "Visualização em tabela (salas)" #: ../../static/t/prefs/box.html:20 msgid "12 hour (am/pm)" msgstr "12 horas (am/pm)" #: ../../static/t/prefs/box.html:25 msgid "24 hour" msgstr "24 horas" #: ../../static/t/prefs/box.html:152 msgid "Sunday" msgstr "Domingo" #: ../../static/t/prefs/box.html:153 msgid "Monday" msgstr "Segunda" #: ../../static/t/prefs/box.html:174 msgid "No signature" msgstr "Sem assinatura" #: ../../static/t/prefs/box.html:238 msgid "Full-functionality" msgstr "" #: ../../static/t/prefs/box.html:241 msgid "Safe mode" msgstr "Modo seguro" #: ../../static/t/prefs/box.html:242 msgid "" "Safe mode is less intensive on your web browser, but not as fully featured." msgstr "" #: ../../static/t/wiki/pagelist.html:1 msgid "List of Wiki pages" msgstr "Lista das páginas Wiki" #: ../../static/t/wiki/history.html:1 msgid "History of edits for this page" msgstr "Histórico de edições para esta página" #: ../../static/t/who/list_static_header.html:1 msgid "Users currently on" msgstr "Usuários ativos" #: ../../static/t/who/section.html:4 msgid "(kill)" msgstr "(terminar)" #: ../../static/t/who/bio.html:4 ../../static/t/user/show.html:4 msgid "User profile" msgstr "Perfil do usuário" #: ../../static/t/who/summary.html:5 ../../static/t/who/box_list_static.html:6 #: ../../static/t/room/edit/tab_feed.html:13 msgid "User name" msgstr "Nome do usuário" #: ../../static/t/who/summary.html:6 ../../static/t/who/box_list_static.html:7 msgid "Room" msgstr "Sala" #: ../../static/t/who/box_list_static.html:8 msgid "From host" msgstr "De host" #: ../../static/t/view_message.html:19 msgid "Edit" msgstr "editar" #: ../../static/t/view_message.html:22 ../../static/t/view_message.html:26 msgid "Reply" msgstr "Responder" #: ../../static/t/view_message.html:23 msgid "ReplyQuoted" msgstr "ResponderComCitação" #: ../../static/t/view_message.html:27 msgid "ReplyAll" msgstr "ResponderTodos" #: ../../static/t/view_message.html:28 msgid "Forward" msgstr "Encaminhar" #: ../../static/t/view_message.html:31 ../../static/t/msg_listview.html:25 msgid "Move" msgstr "Mover" #: ../../static/t/view_message.html:34 msgid "Headers" msgstr "Cabeçalhos" #: ../../static/t/view_message.html:35 ../../static/t/msg_listview.html:28 msgid "Print" msgstr "Imprimir" #: ../../static/t/preferences.html:4 ../../static/t/preferences.html:7 msgid "Preferences and settings" msgstr "Preferências e configurações" #: ../../static/t/user/list.html:3 #, fuzzy msgid "User list for " msgstr "Lista de usuários para %s" #: ../../static/t/user/list.html:9 msgid "User Name" msgstr "Nome de Usuário" #: ../../static/t/user/list.html:10 msgid "Number" msgstr "Número" #: ../../static/t/user/list.html:11 msgid "Access Level" msgstr "Nível de Acesso" #: ../../static/t/user/list.html:12 msgid "Last Login" msgstr "Último Login" #: ../../static/t/user/list.html:13 msgid "Total Logins" msgstr "Número total de Logins" #: ../../static/t/user/list.html:14 msgid "Total Posts" msgstr "Número total de Posts" #: ../../static/t/user/show.html:9 #, fuzzy msgid "Click here to send an instant message to" msgstr "Clique aqui para mandar uma mensagem instantânea para %s" #: ../../static/t/start_of_new_msgs.html:4 msgid "Old messages" msgstr "Mensagens antigas" #: ../../static/t/start_of_new_msgs.html:8 msgid "New messages" msgstr "Novas mensagens" #: ../../static/t/display_main_menu.html:7 msgid "Basic commands" msgstr "Comandos básicos" #: ../../static/t/display_main_menu.html:10 msgid "Your info" msgstr "Informações sobre você" #: ../../static/t/display_main_menu.html:12 msgid "Advanced room commands" msgstr "Comandos avançados de sala" #: ../../static/t/iconbar/save.html:4 ../../static/t/iconbar/edit.html:4 msgid "Customize the icon bar" msgstr "Personalizar a barra de ícones" #: ../../static/t/iconbar/save.html:11 msgid "" "Your icon bar has been updated. Please select any of its choices to continue." msgstr "" "Sua barra de ícones foi atualizado. Por favor, selecione qualquer uma das " "suas escolhas para continuar." #: ../../static/t/iconbar/save.html:11 msgid "" "You may need to force refresh (SHIFT-F5)> in order for changes to take effect" msgstr "" "Você precisa forçar a atualização (SHIFT-F5)> para que as mudanças tenham " "efeito" #: ../../static/t/iconbar/edit.html:11 msgid "Display icons as:" msgstr "Exibir ícones como:" #: ../../static/t/iconbar/edit.html:12 msgid "pictures and text" msgstr "imagens e texto" #: ../../static/t/iconbar/edit.html:13 msgid "pictures only" msgstr "apenas imagens" #: ../../static/t/iconbar/edit.html:14 msgid "text only" msgstr "apenas texto" #: ../../static/t/iconbar/edit.html:16 msgid "" "Select the icons you would like to see displayed in the 'icon bar' menu on " "the left side of the screen." msgstr "" "Selecione os ícones que deseja ver no menu 'barra de ícones' no lado " "esquerdo da tela" #: ../../static/t/iconbar/edit.html:23 msgid "Site logo" msgstr "Logotipo do site" #: ../../static/t/iconbar/edit.html:23 msgid "An icon describing this site" msgstr "Um ícone descrevendo esse site" #: ../../static/t/iconbar/edit.html:29 msgid "Your summary page" msgstr "Sua página de resumo" #: ../../static/t/iconbar/edit.html:36 msgid "Mail (inbox)" msgstr "Correio (caixa de entrada)" #: ../../static/t/iconbar/edit.html:36 msgid "A shortcut to your email Inbox" msgstr "Um atalho para sua caixa de entrada" #: ../../static/t/iconbar/edit.html:42 msgid "Your personal address book" msgstr "Seu caderno de endereços pessoal" #: ../../static/t/iconbar/edit.html:49 msgid "Your personal notes" msgstr "Suas notas pessoais" #: ../../static/t/iconbar/edit.html:55 msgid "A shortcut to your personal calendar" msgstr "Um atalho para seu calendário pessoal" #: ../../static/t/iconbar/edit.html:61 msgid "A shortcut to your personal task list" msgstr "Um atalho para sua lista de tarefas pessoal" #: ../../static/t/iconbar/edit.html:67 msgid "" "Clicking this icon displays a list of all accessible rooms (or folders) " "available." msgstr "" "Clicar nesse ícone exibe uma lista de todas as salas (ou pastas) acessíveis." #: ../../static/t/iconbar/edit.html:73 msgid "Who is online?" msgstr "Quem está online?" #: ../../static/t/iconbar/edit.html:73 msgid "Clicking this icon displays a list of all users currently logged in." msgstr "Clicar nesse ícone exibe uma lista de todos os usuários conectados." #: ../../static/t/iconbar/edit.html:79 msgid "" "Clicking this icon enters real-time chat mode with other users in the same " "room." msgstr "" "Clicar nesse ícone inicia um bate-papo em tempo real com outros usuários da " "mesma sala." #: ../../static/t/iconbar/edit.html:85 msgid "Advanced options" msgstr "Opções avançadas" #: ../../static/t/iconbar/edit.html:85 msgid "Access to the complete menu of Citadel functions." msgstr "Acesso ao menu completo de funções do Citadel" #: ../../static/t/iconbar/edit.html:91 msgid "Citadel logo" msgstr "Logotipo do Citadel" #: ../../static/t/iconbar/edit.html:91 msgid "Displays the 'Powered by Citadel' icon" msgstr "Mostra o ícone 'Powered by Citadel'" #: ../../static/t/room/edit/tab_expire.html:8 msgid "Message expire policy for this room" msgstr "Política de vencimento de mensagens para essa sala" #: ../../static/t/room/edit/tab_expire.html:14 msgid "Use the default policy for this floor" msgstr "Usar a política padrão para esse andar" #: ../../static/t/room/edit/tab_expire.html:36 msgid "Message expire policy for this floor" msgstr "Política de vencimento de mensagens para esse andar" #: ../../static/t/room/edit/tab_expire.html:42 msgid "Use the system default" msgstr "Usar o padrão do sistema" #: ../../static/t/room/edit/editroom.html:5 ../../static/t/room/edit.html:6 msgid "Configuration" msgstr "Configuração" #: ../../static/t/room/edit/editroom.html:6 ../../static/t/room/edit.html:7 msgid "Message expire policy" msgstr "Política de vencimento de mensagens" #: ../../static/t/room/edit/editroom.html:7 ../../static/t/room/edit.html:8 msgid "Access controls" msgstr "Controles de acesso" #: ../../static/t/room/edit/editroom.html:8 ../../static/t/room/edit.html:9 msgid "Sharing" msgstr "Compartilhamento" #: ../../static/t/room/edit/editroom.html:9 ../../static/t/room/edit.html:10 msgid "Mailing list service" msgstr "Serviço de correio em massa" #: ../../static/t/room/edit/editroom.html:10 ../../static/t/room/edit.html:11 msgid "Remote retrieval" msgstr "Recuperação de mensagens remotas" #: ../../static/t/room/edit/tab_config.html:6 msgid "name of room: " msgstr "nome da sala: " #: ../../static/t/room/edit/tab_config.html:10 #: ../../static/t/room/create.html:20 msgid "Resides on floor: " msgstr "Reside no andar: " #: ../../static/t/room/edit/tab_config.html:16 #: ../../static/t/room/create.html:68 msgid "Type of room:" msgstr "Tipo da sala:" #: ../../static/t/room/edit/tab_config.html:22 #: ../../static/t/room/create.html:73 msgid "Public (automatically appears to everyone)" msgstr "Público (aparece automaticamente para todos)" #: ../../static/t/room/edit/tab_config.html:28 #: ../../static/t/room/create.html:77 msgid "Private - hidden (accessible to anyone who knows its name)" msgstr "Privado - escondido (acessível apenas para quem sabe o nome)" #: ../../static/t/room/edit/tab_config.html:35 #: ../../static/t/room/create.html:81 msgid "Private - require password: " msgstr "Privado - requer senha: " #: ../../static/t/room/edit/tab_config.html:44 #: ../../static/t/room/create.html:86 msgid "Private - invitation only" msgstr "Privado - apenas por convite" #: ../../static/t/room/edit/tab_config.html:51 #: ../../static/t/room/create.html:90 msgid "Personal (mailbox for you only)" msgstr "Pessoal (caixa de correio pessoal)" #: ../../static/t/room/edit/tab_config.html:55 msgid "If private, cause current users to forget room" msgstr "Se privado, fazer outros usuários esquecer a sala" #: ../../static/t/room/edit/tab_config.html:61 msgid "Preferred users only" msgstr "Usuários preferenciais apenas" #: ../../static/t/room/edit/tab_config.html:66 msgid "Read-only room" msgstr "Sala somente leitura" #: ../../static/t/room/edit/tab_config.html:71 msgid "All users allowed to post may also delete messages" msgstr "" "Todos os usuários com permissão para postar também podem remover mensagens" #: ../../static/t/room/edit/tab_config.html:76 msgid "File directory room" msgstr "Sala diretório de arquivos" #: ../../static/t/room/edit/tab_config.html:80 msgid "Directory name: " msgstr "Nome do diretório: " #: ../../static/t/room/edit/tab_config.html:86 msgid "Uploading allowed" msgstr "Uploads permitidos" #: ../../static/t/room/edit/tab_config.html:91 msgid "Downloading allowed" msgstr "Downloads permitidos" #: ../../static/t/room/edit/tab_config.html:96 msgid "Visible directory" msgstr "Diretório visível" #: ../../static/t/room/edit/tab_config.html:103 msgid "Network shared room" msgstr "Sala compartilhada por rede" #: ../../static/t/room/edit/tab_config.html:108 msgid "Permanent (does not auto-purge)" msgstr "Permanente (não se auto-destrói)" #: ../../static/t/room/edit/tab_config.html:113 msgid "Subject Required (Force users to specify a message subject)" msgstr "" "Assunto Obrigatório (Força usuários a especificar um assunto para a mensagem)" #: ../../static/t/room/edit/tab_config.html:116 msgid "Anonymous messages" msgstr "Mensagens anonimas" #: ../../static/t/room/edit/tab_config.html:122 msgid "No anonymous messages" msgstr "Sem mensagens anonimas" #: ../../static/t/room/edit/tab_config.html:127 msgid "All messages are anonymous" msgstr "Todas as mensagens são anonimas" #: ../../static/t/room/edit/tab_config.html:132 msgid "Prompt user when entering messages" msgstr "Perguntar ao usuário ao entrar mensagens" #: ../../static/t/room/edit/tab_config.html:136 msgid "Room aide: " msgstr "Admin da sala: " #: ../../static/t/room/edit/tab_listserv.html:5 #, fuzzy msgid "" "The contents of this room are being mailed as individual messages " "to the following list recipients:

    " msgstr "" "O conteúdo dessa sala será mandado como mensagens individuais para " "os seguintes recipientes:

    \n" #: ../../static/t/room/edit/tab_listserv.html:19 #, fuzzy msgid "" "The contents of this room are being mailed in digest form to the " "following list recipients:

    " msgstr "" "O conteúdo dessa sala será mandado de forma resumida para os " "seguintes recipientes:

    \n" #: ../../static/t/room/edit/tab_listserv.html:39 msgid "Add recipients from Contacts or other address books" msgstr "Adicionar recipientes de Contatos ou outros cadernos de endereços" #: ../../static/t/room/edit/tab_listserv.html:48 msgid "Allow non-subscribers to mail to this room." msgstr "Permitir que não participantes mandem mensagens para essa sala." #: ../../static/t/room/edit/tab_listserv.html:54 msgid "Room post publication needs Admin permission." msgstr "Publicação de posts na sala requer permissão do Admin." #: ../../static/t/room/edit/tab_listserv.html:59 msgid "Allow self-service subscribe/unsubscribe requests." msgstr "" "Permitir requisições para inscrever/desinscrever de responsabilidade do " "usuário (self-service)" #: ../../static/t/room/edit/tab_listserv.html:65 msgid "The URL for subscribe/unsubscribe is: " msgstr "O endereço URL para se inscrever/desinscrever é: " #: ../../static/t/room/edit/digestrecp_removal.html:1 #: ../../static/t/room/edit/pop3client_removal.html:9 #: ../../static/t/room/edit/listrecp_removal.html:1 #: ../../static/t/room/edit/rssclient_removal.html:5 msgid "(remove)" msgstr "(excluir)" #: ../../static/t/room/edit/tab_admin.html:5 msgid "Delete this room" msgstr "Remover essa sala" #: ../../static/t/room/edit/tab_admin.html:10 #, fuzzy msgid "Set or change the icon for this rooms banner" msgstr "Definir ou modificar o ícone para o banner dessa sala" #: ../../static/t/room/edit/tab_admin.html:14 #, fuzzy msgid "Edit this rooms Info file" msgstr "Editar o arquivo Info dessa sala" #: ../../static/t/room/edit/tab_share.html:5 msgid "Shared with" msgstr "Compartilhado com" #: ../../static/t/room/edit/tab_share.html:6 msgid "Not shared with" msgstr "Não compartilhado com" #: ../../static/t/room/edit/tab_share.html:11 #: ../../static/t/room/edit/tab_share.html:21 msgid "Remote node name" msgstr "Nome do nódulo remoto" #: ../../static/t/room/edit/tab_share.html:12 #: ../../static/t/room/edit/tab_share.html:22 msgid "Remote room name" msgstr "Nome da sala remota" #: ../../static/t/room/edit/tab_share.html:13 #: ../../static/t/room/edit/tab_share.html:23 msgid "Actions" msgstr "Ações" #: ../../static/t/room/edit/tab_share.html:35 #, fuzzy msgid "" "When sharing a room, it must be shared from both ends. Adding a node to the " "'shared' list sends messages out, but in order to receive messages, the " "other nodes must be configured to send messages out to your system as well. " "
  • If the remote room name is blank, it is assumed that the room name is " "identical on the remote node.
  • If the remote room name is different, the " "remote node must also configure the name of the room here." msgstr "" "Para compartilhar uma sala, a mesma deve ser compartilhada dos dois lados. " "Adicionar um 'node' a lista de 'compartilhados' faz as mensagens saírem, mas " "para receber mensagens, outros 'nodes' também devem ser configurados para " "mandar mensagens fora de seus sistemas.
  • Se o nome da sala está em " "branco, assume-se que o nome da sala é igual ao do 'node' remoto.
  • Se o " "nome da sala é diferente, o 'node' remoto também deve configurar o nome da " "sala aqui.
    \n" #: ../../static/t/room/edit/tab_feed.html:2 msgid "" "Retrieve messages from these remote POP3 accounts and store them in this " "room:" msgstr "Obter mensagens dessas contas POP3 e armazená-las nessa sala:" #: ../../static/t/room/edit/tab_feed.html:12 msgid "Remote host" msgstr "Servidor remoto" #: ../../static/t/room/edit/tab_feed.html:15 msgid "Keep messages on server?" msgstr "Manter mensagens no servidor?" #: ../../static/t/room/edit/tab_feed.html:16 #, fuzzy msgid "Interval" msgstr "Geral" #: ../../static/t/room/edit/tab_feed.html:31 msgid "Fetch the following RSS feeds and store them in this room:" msgstr "Obter as seguintes fontes RSS e armazená-las nessa sala:" #: ../../static/t/room/edit/tab_feed.html:43 msgid "Feed URL" msgstr "URL do arquivo RSS" #: ../../static/t/room/edit/tab_access.html:5 #, fuzzy msgid "" "The users listed below have access to this room. To remove a user from the " "access list, select the user name from the list and click 'Kick'." msgstr "" "Os usuários listados abaixo têm acesso à essa sala. Para excluir um usuário " "da lista de acesso, selecione o nome de usuário da lista e clique em " "'Chutar'." #: ../../static/t/room/edit/tab_access.html:20 msgid "" "To grant another user access to this room, enter the user name in the box " "below and click 'Invite'." msgstr "" "Para permitir acesso de outro usuário à essa sala, digite o nome do usuário " "na caixa abaixo e clique em 'Convidar'." #: ../../static/t/room/edit/tab_access.html:26 msgid "Invite:" msgstr "Convidar:" #: ../../static/t/room/edit/tab_access.html:35 msgid "Users" msgstr "Usuários" #: ../../static/t/room/zapped_list.html:7 msgid "Zapped (forgotten) rooms" msgstr "Salas esquecidas" #: ../../static/t/room/zapped_list.html:10 #, fuzzy msgid "Click on any room to un-zap it and goto that room." msgstr "" "Clique em qualquer sala para 'des-esquecê-la' e entrar nela em seguida.\n" #: ../../static/t/room/display_private.html:7 msgid "Go to a hidden room" msgstr "Ir para uma sala oculta" #: ../../static/t/room/display_private.html:8 msgid "" "If you know the name of a hidden (guess-name) or passworded room, you can " "enter that room by typing its name below. Once you gain access to a private " "room, it will appear in your regular room listings so you don‘t have to keep " "returning here." msgstr "" "Se você souber o nome de um oculto (acho que o nome) ou sala com senha, você " "pode entrar naquela sala, digitando o seu nome abaixo. Depois de ganhar " "acesso a uma sala privada, ele irá aparecer na sua listagem de sala regular " "assim que você não precisa voltar sempre aqui." #: ../../static/t/room/display_private.html:14 msgid "Enter room name:" msgstr "Digite nome da sala:" #: ../../static/t/room/display_private.html:21 msgid "Enter room password:" msgstr "Digite senha da sala:" #: ../../static/t/room/create.html:11 #: ../../static/t/menu/advanced_roomcommands.html:6 msgid "Create a new room" msgstr "Criar uma nova sala" #: ../../static/t/room/create.html:18 msgid "Name of room: " msgstr "Nome da sala: " #: ../../static/t/room/create.html:32 msgid "Default view for room: " msgstr "Visualização padrão para sala: " #: ../../static/t/room/zap_this.html:3 msgid "Zap (forget/unsubscribe) the current room" msgstr "Esquecer ou se desinscrever da sala atual" #: ../../static/t/room/zap_this.html:6 msgid "If you select this option," msgstr "Se você selecionou esta opção," #: ../../static/t/room/zap_this.html:8 #, fuzzy msgid "will disappear from your room list. Is this what you wish to do?" msgstr "" "Se você selecionar essa opção, %s irá desaparecer da sua lista de " "salas. Gostaria mesmo de fazer isso?
    \n" #: ../../static/t/menu/your_info.html:2 msgid "Change your preferences and settings" msgstr "Modificar suas preferências e configurações" #: ../../static/t/menu/your_info.html:3 msgid "Update your contact information" msgstr "Atualizar suas informações para contato" #: ../../static/t/menu/your_info.html:5 msgid "Enter your 'bio'" msgstr "Entre sua 'bio'" #: ../../static/t/menu/your_info.html:6 msgid "Edit your online photo" msgstr "Editar sua foto online" #: ../../static/t/menu/your_info.html:8 msgid "Edit your push email settings" msgstr "Editar suas configurações de 'push email'" #: ../../static/t/menu/your_info.html:9 msgid "Manage your OpenIDs" msgstr "Gerencie seus OpenIDs" #: ../../static/t/menu/basic_commands.html:3 msgid "List known rooms" msgstr "Listar salas conhecidas" #: ../../static/t/menu/basic_commands.html:3 msgid "Where can I go from here?" msgstr "Aonde posso ir daqui?" #: ../../static/t/menu/basic_commands.html:4 ../../static/t/navbar.html:168 msgid "Goto next room" msgstr "Ir para próxima sala" #: ../../static/t/menu/basic_commands.html:4 msgid "...with unread messages" msgstr "...com mensagens não lidas" #: ../../static/t/menu/basic_commands.html:5 msgid "Skip to next room" msgstr "Pular para próxima sala" #: ../../static/t/menu/basic_commands.html:5 msgid "(come back here later)" msgstr "(volte aqui mais tarde)" #: ../../static/t/menu/basic_commands.html:6 ../../static/t/navbar.html:5 msgid "Ungoto" msgstr "Desfazer 'ir'" #: ../../static/t/menu/basic_commands.html:6 msgid "oops! Back to " msgstr "oops! Voltar ao " #: ../../static/t/menu/basic_commands.html:10 ../../static/t/navbar.html:13 msgid "Read new messages" msgstr "Ler mensagens novas" #: ../../static/t/menu/basic_commands.html:10 msgid "...in this room" msgstr "...nessa sala" #: ../../static/t/menu/basic_commands.html:11 ../../static/t/navbar.html:19 msgid "Read all messages" msgstr "Ler todas as mensagens" #: ../../static/t/menu/basic_commands.html:11 msgid "...old and new" msgstr "...antigas e novas" #: ../../static/t/menu/basic_commands.html:12 ../../static/t/navbar.html:25 msgid "Enter a message" msgstr "Colocar uma mensagem" #: ../../static/t/menu/basic_commands.html:12 msgid "(post in this room)" msgstr "(fixar mensagens nessa sala)" #: ../../static/t/menu/basic_commands.html:13 msgid "File library" msgstr "Biblioteca de arquivos" #: ../../static/t/menu/basic_commands.html:13 msgid "(List files available for download)" msgstr "(Listar arquivos disponíveis para download)" #: ../../static/t/menu/basic_commands.html:17 msgid "Summary page" msgstr "Página resumo" #: ../../static/t/menu/basic_commands.html:17 msgid "Summary of my account" msgstr "Resumo da minha conta" #: ../../static/t/menu/basic_commands.html:18 msgid "User list" msgstr "Lista de usuários" #: ../../static/t/menu/basic_commands.html:18 msgid "(all registered users)" msgstr "(todos os usuários registrados)" #: ../../static/t/menu/basic_commands.html:19 msgid "Bye!" msgstr "Adeus!" #: ../../static/t/menu/advanced_roomcommands.html:3 msgid "Edit or delete this room" msgstr "Editar ou excluir essa sala" #: ../../static/t/menu/advanced_roomcommands.html:5 msgid "Go to a 'hidden' room" msgstr "Ir para uma sala 'escondida'" #: ../../static/t/menu/advanced_roomcommands.html:7 msgid "Zap (forget) this room" msgstr "Zap (esqueça) esta sala" #: ../../static/t/menu/advanced_roomcommands.html:8 msgid "List all forgotten rooms" msgstr "Listar todas as salas esquecidas" #: ../../static/t/navbar.html:34 msgid "View contacts" msgstr "Visualizar contatos" #: ../../static/t/navbar.html:40 msgid "Add new contact" msgstr "Adicionar novo contato" #: ../../static/t/navbar.html:49 msgid "Day view" msgstr "Visualização por dia" #: ../../static/t/navbar.html:55 msgid "Month view" msgstr "Visualização por mês" #: ../../static/t/navbar.html:61 msgid "Add new event" msgstr "Adicionar novo evento" #: ../../static/t/navbar.html:70 msgid "Calendar list" msgstr "Lista de calendários" #: ../../static/t/navbar.html:79 msgid "View tasks" msgstr "Visualizar tarefas" #: ../../static/t/navbar.html:85 msgid "Add new task" msgstr "Adicionar nova tarefa" #: ../../static/t/navbar.html:94 msgid "View notes" msgstr "Visualizar notas" #: ../../static/t/navbar.html:101 msgid "Add new note" msgstr "Adicionar nova nota" #: ../../static/t/navbar.html:110 msgid "Refresh message list" msgstr "Atualizar lista de mensagens" #: ../../static/t/navbar.html:122 msgid "Write mail" msgstr "Escrever mensagem" #: ../../static/t/navbar.html:132 msgid "Wiki home" msgstr "Página inicial do Wiki" #: ../../static/t/navbar.html:139 msgid "Edit this page" msgstr "Editar essa página" #: ../../static/t/navbar.html:145 msgid "History" msgstr "Histórico" #: ../../static/t/navbar.html:154 #, fuzzy msgid "New blog post" msgstr "posts recentes" #: ../../static/t/navbar.html:162 msgid "Skip this room" msgstr "Pular essa sala" #: ../../static/t/msg_listview.html:18 msgid "Loading messages from server, please wait" msgstr "Carregando mensagens do servidor, por favor aguarde" #: ../../static/t/msg_listview.html:24 msgid "Open in new window" msgstr "Abrir em uma nova janela" #: ../../static/t/msg_listview.html:26 msgid "Copy" msgstr "Copiar" #: ../../static/t/view_mailq/message.html:6 msgid "Originaly posted in: " msgstr "" #: ../../static/t/view_mailq/header.html:15 msgid "Refresh this page" msgstr "Atualizar essa página" #: ../../static/t/view_mailq/header.html:21 msgid "Message ID" msgstr "ID da mensagem" #: ../../static/t/view_mailq/header.html:23 msgid "Date/time submitted" msgstr "Data/hora do envio" #: ../../static/t/view_mailq/header.html:25 #, fuzzy msgid "Next attempt" msgstr "Última tentativa" #: ../../static/t/view_mailq/header.html:29 msgid "Recipients" msgstr "Recipientes" #: ../../static/t/view_mailq/footer_empty.html:4 msgid "The queue is empty." msgstr "A fila está vazia." #: ../../static/t/view_mailq/footer_empty.html:9 #: ../../static/t/view_mailq/footer.html:5 msgid "You do not have permission to view this resource." msgstr "Você não tem permissão para visualizar esse recurso." #: ../../static/t/get_logged_in.html:5 msgid "You must be logged in to access this page." msgstr "Você deve estar logado para acessar esta página." #: ../../static/t/get_logged_in.html:9 #: ../../static/t/edit_message/attachments_pane.html:3 msgid "Close window" msgstr "Fechar janela" #: ../../static/t/get_logged_in.html:55 msgid "Log in using a user name and password" msgstr "Log in usando um nome de usuário e senha" #: ../../static/t/get_logged_in.html:60 ../../static/t/get_logged_in.html:75 msgid "Password:" msgstr "Senha:" #: ../../static/t/get_logged_in.html:65 ../../static/t/get_logged_in.html:69 msgid "New user? Register now" msgstr "Novo usuário? Cadastre-se agora" #: ../../static/t/get_logged_in.html:70 msgid "" "enter the name and password you wish to use, and click "New User." " msgstr "" "entre com seu nome e senha que você deseja usar, e clique em "Novo " "Usuário." " #: ../../static/t/get_logged_in.html:83 msgid "Log in using OpenID" msgstr "Log in usando OpenID" #: ../../static/t/get_logged_in.html:85 msgid "OpenID URL:" msgstr "URL do OpenID:" #: ../../static/t/get_logged_in.html:92 #, fuzzy msgid "Log in using Google" msgstr "Log in usando OpenID" #: ../../static/t/get_logged_in.html:97 #, fuzzy msgid "Log in using Yahoo" msgstr "Log in usando OpenID" #: ../../static/t/get_logged_in.html:102 #, fuzzy msgid "Log in using AOL or AIM" msgstr "Log in usando OpenID" #: ../../static/t/get_logged_in.html:104 msgid "Enter your AOL or AIM screen name:" msgstr "" #: ../../static/t/get_logged_in.html:115 msgid "Please wait" msgstr "Por favor espere" #: ../../static/t/summary/page.html:4 #, fuzzy msgid "Summary page for " msgstr "Página de resumo de %s" #: ../../static/t/summary/page.html:21 msgid "Messages" msgstr "Mensagens" #: ../../static/t/summary/page.html:39 msgid "Today on your calendar" msgstr "Hoje no seu calendário" #: ../../static/t/summary/page.html:51 #, fuzzy msgid "Who‘s online now" msgstr "Quem está online agora" #: ../../static/t/summary/page.html:60 msgid "About this server" msgstr "Sobre esse servidor" #: ../../static/t/summary/page.html:63 msgid "You are connected to" msgstr "" #: ../../static/t/summary/page.html:64 #, fuzzy msgid "running" msgstr "Afinação" #: ../../static/t/summary/page.html:65 #, fuzzy msgid "with" msgstr "quinto" #: ../../static/t/summary/page.html:66 msgid "server build" msgstr "" #: ../../static/t/summary/page.html:67 #, fuzzy msgid "and located in" msgstr "e depois" #: ../../static/t/summary/page.html:68 #, fuzzy msgid "Your system administrator is" msgstr "Nome do administrador do sistema" #: ../../static/t/edit_message/attachments_pane.html:16 msgid "Attach file" msgstr "Anexar arquivo" #: ../../static/t/edit_message/attachments_pane.html:21 msgid "Upload" msgstr "Upload" #: ../../static/t/edit_message/section_attach_select.html:4 #, fuzzy msgid "Remove" msgstr "(excluir)" #: ../../static/t/loggedinas.html:3 msgid "Logged in as" msgstr "Conectado como" #: ../../static/t/loggedinas.html:6 msgid "Not logged in." msgstr "Não está conectado." #~ msgid "A script by that name already exists." #~ msgstr "Um script com esse nome já existe." #~ msgid "" #~ "A new script has been created. Return to the script editing screen to " #~ "edit and activate it." #~ msgstr "" #~ "Um novo script foi criado. Volte para a tela de edição de scripts para " #~ "ativá-lo." #~ msgid "Create" #~ msgstr "Criar" #~ msgid "Delete script" #~ msgstr "Excluir script" #~ msgid "Delete this script?" #~ msgstr "Excluir esse script?" #~ msgid "Move rule up" #~ msgstr "Mover regra para cima" #~ msgid "Move rule down" #~ msgstr "Mover regra para baixo" #~ msgid "Delete rule" #~ msgstr "Excluir regra" #~ msgid "Reset form" #~ msgstr "Limpar campos" #~ msgid "" #~ "You are connected to %s, running %s with %s, server build %s and located " #~ "in %s. Your system administrator is %s." #~ msgstr "" #~ "Você está conectado à %s, rodando %s com %s, server build %s, e " #~ "localizado em %s. Seu administrador de sistema é %s." #~ msgid "Yes with users list" #~ msgstr "Sim com lista de usuários" #~ msgid "Room list" #~ msgstr "Lista de salas" #~ msgid "View as room list" #~ msgstr "Ver na lista de salas" #~ msgid "View as folder list" #~ msgstr "Ver como lista de pastas" #~ msgid "Room Listing" #~ msgstr "Lista de salas" #~ msgid " - powered by Citadel" #~ msgstr " - powered by Citadel" #, fuzzy #~ msgid "uname" #~ msgstr "Nome do arquivo" #, fuzzy #~ msgid "text" #~ msgstr "próximo" #, fuzzy #~ msgid "name" #~ msgstr "Nome do arquivo" #, fuzzy #~ msgid "pname" #~ msgstr "Nome do arquivo" #, fuzzy #~ msgid "password" #~ msgstr "Senha" #, fuzzy #~ msgid "pass" #~ msgstr "Tarefas" #, fuzzy #~ msgid "authbox" #~ msgstr "Autor" #, fuzzy #~ msgid "display: none" #~ msgstr "Nome para visualização:" #~ msgid "Your password was not accepted." #~ msgstr "Sua senha não foi aceita" #~ msgid "If you already have an account on" #~ msgstr "Se você já tiver uma conta ativa" #~ msgid "enter your user name and password and click "Log in."" #~ msgstr "entre com seu usuário e senha e clique em "Log in."" #~ msgid "Please log off properly when finished. " #~ msgstr "Por favor efetue o log off quando terminar " #~ msgid "See the" #~ msgstr "Veja o" #~ msgid "recommended browser list" #~ msgstr "lista de navegação recomendada" #~ msgid "" #~ "if you have trouble using Webcit.
  • You must have cookies " #~ "turned on. " #~ msgstr "" #~ "se você tem problemas ao usar o Webcit.
  • Você tem que ativar os " #~ "cookies. " #~ msgid "" #~ "Also keep in mind that if your browser is configured to block pop-up " #~ "windows, you will not be able to receive any instant messages." #~ msgstr "" #~ "Lembre-se também que se seu browser está configurado para bloquear " #~ "janelas pop-up, você não estará habilitado para receber quaisquer " #~ "mensagens instantâneas." #~ msgid "Enter your OpenID URL and click "Log in"." #~ msgstr "Entre com sua URL do OpenID e clique em "Log in"." #~ msgid "Click here to learn what OpenID is and how Citadel is using it." #~ msgstr "" #~ "Clique aqui para aprender o que é o OpenID e como a Citadel está usando " #~ "ele." #~ msgid "Exit" #~ msgstr "Sair" #~ msgid "Change name" #~ msgstr "Modificar nome" #~ msgid "Change CSS" #~ msgstr "Modificar CSS" #~ msgid "Create new floor" #~ msgstr "Criar novo andar" #~ msgid "" #~ "You have one or more instant messages waiting, but the Citadel Instant " #~ "Messenger window failed to open. This is probably because you have a " #~ "popup blocker installed. Please configure your popup blocker to allow " #~ "popups from this site if you wish to receive instant messages." #~ msgstr "" #~ "Você tem uma ou mais mensagens instantâneas esperando porém a janela do " #~ "Citadel Instant Messenger falhou em abrir. A causa provável é a ação de " #~ "um bloqueador de 'popups' instalado. Configure seu bloqueador de 'popups' " #~ "para permitir 'popups' desse site se quiser continuar a receber mensagens " #~ "instantâneas." #, fuzzy #~ msgid "The citadel server has to be restarted. It will be back in a minute." #~ msgstr "O servidor Citadel deverá ser reiniciado, Ele voltará em um minuto." #~ msgid "Change" #~ msgstr "Modificar" #, fuzzy #~ msgid "Add node?" #~ msgstr "Adicionar nódulo" #~ msgid "idle since" #~ msgstr "ocioso desde" #, fuzzy #~ msgid "Minutes" #~ msgstr "Minutos" #, fuzzy #~ msgid "active" #~ msgstr "Incerto" #~ msgid "Send" #~ msgstr "Enviar" #, fuzzy #~ msgid "Pictures in" #~ msgstr "Imagens em %s" #~ msgid "Edit configuration" #~ msgstr "Editar configuração" #~ msgid "Edit address book entry" #~ msgstr "Editar entrada" #~ msgid "Delete user" #~ msgstr "Excluir usuário" #~ msgid "Delete this user?" #~ msgstr "Excluir esse usuário?" #, fuzzy #~ msgid "Delete File" #~ msgstr "Excluir regra" #~ msgid "Delete this message?" #~ msgstr "Excluir essa mensagem?" #, fuzzy #~ msgid "Powered by Citadel" #~ msgstr "Mostra o ícone 'Powered by Citadel'" #~ msgid "Go to your email inbox" #~ msgstr "Ir para a caixa de entrada (inbox)" #~ msgid "Go to your personal calendar" #~ msgstr "Ir para o seu calendário pessoal" #~ msgid "Go to your personal address book" #~ msgstr "Ir para seu caderno de endereços pessoal" #~ msgid "Go to your personal notes" #~ msgstr "Ir para notas pessoais" #~ msgid "Go to your personal task list" #~ msgstr "Ir para sua lista de tarefas pessoal" #, fuzzy #~ msgid "List all your accessible rooms" #~ msgstr "Listar todas as suas salas acessíveis" #~ msgid "See who is online right now" #~ msgstr "Ver quem está online agora" #~ msgid "" #~ "Advanced Options Menu: Advanced Room commands, Account Info, and Chat" #~ msgstr "" #~ "Menu de opções avançado: Comandos avançados de sala, Informações de " #~ "conta, e Bate-papo" #~ msgid "Room and system administration functions" #~ msgstr "Funções administrativas da sala e sistema" #~ msgid "Log off now?" #~ msgstr "Realizar log off agora?" #, fuzzy #~ msgid "Delete this entry?" #~ msgstr "Excluir essa entrada?" #, fuzzy #~ msgid "Delete this note?" #~ msgstr "Excluir essa entrada?" #, fuzzy #~ msgid "Do you really want to kill this session?" #~ msgstr "Você realmente quer terminar essa sessão?" #, fuzzy #~ msgid "Save changes?" #~ msgstr "Salvar modificações" #~ msgid "%d new of %d messages%s" #~ msgstr "%d mensagens novas de um total de %d%s" #~ msgid "" #~ "Leave all messages marked as unread, go to next room with unread messages" #~ msgstr "" #~ "Deixar todas as mensagens marcadas como não lidas, ir para a próxima sala " #~ "com mensagens não lidas." #~ msgid "Mark all messages as read, go to next room with unread messages" #~ msgstr "" #~ "Marcar todas as mensagens como lidas, ir para a próxima sala com " #~ "mensagens não lidas." #~ msgid "Are you sure you want to delete this room?" #~ msgstr "Tem certeza que quer remover essa sala?" #~ msgid "Unshare" #~ msgstr "Des-compartilhar" #~ msgid "Share" #~ msgstr "Compartilhar" #~ msgid "List" #~ msgstr "Lista" #~ msgid "Digest" #~ msgstr "Resumo" #~ msgid "Kick" #~ msgstr "Chutar" #~ msgid "Invite" #~ msgstr "Convidar" #~ msgid "User" #~ msgstr "Usuário" #~ msgid "Create new room" #~ msgstr "Criar nova sala" #~ msgid "Go there" #~ msgstr "Ir" #~ msgid "Zap this room" #~ msgstr "Esquecer essa sala" #~ msgid "(nothing)" #~ msgstr "(nada)" #~ msgid "unexpected end of message" #~ msgstr "fim de mensagem inesperado" #~ msgid "An error occurred while setting up the chat socket." #~ msgstr "Um erro ocorreu ao tentar configurar o 'soquete' do bate-papo." #~ msgid "Now exiting chat mode." #~ msgstr "Saindo do modo bate-papo." #~ msgid "Help" #~ msgstr "Ajuda" #~ msgid "List users" #~ msgstr "Listar usuários" #~ msgid "No messages here." #~ msgstr "Sem mensagens aqui." #, fuzzy #~ msgid "no more messages" #~ msgstr "Mensagens anonimas" #~ msgid "Email" #~ msgstr "Email" #~ msgid "Error retrieving RSS feed: couldn't find messages\n" #~ msgstr "Erro ao obter fonte RSS: não foi possível achar mensagens\n" #, fuzzy #~ msgid "%s from" #~ msgstr "de " #, fuzzy #~ msgid "%s in %s" #~ msgstr "Imagens em %s" #, fuzzy #~ msgid "" #~ "
    • Enter your OpenID URL and click "Log in".
    • Click here to " #~ "learn what OpenID is and how Citadel is using it.
    • Please log off " #~ "properly when finished.
    • You must use a browser that supports " #~ "frames and cookies.
    • Also keep in mind that if your " #~ "browser is configured to block pop-up windows, you will not be able to " #~ "receive any instant messages.
    " #~ msgstr "" #~ "
    • Se você já tem uma conta em %s, digite seu nome de usuário " #~ "e senha e clique em "Log in."
    • Se você for um novo " #~ "usuário, digite o nome de usuário e senha desejados, e clique em " #~ ""Novo Usuário "
    • Se possível, faça o "log off " " #~ "quando terminar de usar o sistema.
    • Seu navegador deverá suportar " #~ "frames e cookies.
    • Se seu browser estiver configurado " #~ "para bloquear pop-ups, você não poderá receber mensagens " #~ "instantâneas.
    " #, fuzzy #~ msgid "" #~ "enter your user name and password and click "Log in."
  • If " #~ "you are a new user, enter the name and password you wish to use, and " #~ "click "New User."
  • Please log off properly when finished. " #~ "
  • You must use a browser that supports frames and cookies.
  • Also keep in mind that if your browser is configured to block pop-" #~ "up windows, you will not be able to receive any instant messages." #~ msgstr "" #~ "
    • Se você já tem uma conta em %s, digite seu nome de usuário " #~ "e senha e clique em "Log in."
    • Se você for um novo " #~ "usuário, digite o nome de usuário e senha desejados, e clique em " #~ ""Novo Usuário "
    • Se possível, faça o "log off " " #~ "quando terminar de usar o sistema.
    • Seu navegador deverá suportar " #~ "frames e cookies.
    • Se seu browser estiver configurado " #~ "para bloquear pop-ups, você não poderá receber mensagens " #~ "instantâneas.
    " #~ msgid "Find out more about Citadel" #~ msgstr "Veja mais sobre o Citadel" #~ msgid "CITADEL" #~ msgstr "CITADEL" #~ msgid "Customize this menu" #~ msgstr "Personalizar esse menu" #~ msgid "Internet configuration" #~ msgstr "Configuração da internet" #~ msgid "of %d messages." #~ msgstr "de %d mensagens" #~ msgid " from " #~ msgstr " de " #~ msgid " in " #~ msgstr " em " #~ msgid "Edit node configuration for " #~ msgstr "Editar configuração do nódulo para" #~ msgid "" #~ "Postfix TCP " #~ "Dictionary Port (-1 to disable)" #~ msgstr "" #~ "Porta TCP para " #~ "\"Dicionário Postfix\" (-1 para desativar)" #~ msgid "ERROR: could not open template " #~ msgstr "ERRO: não foi possível abrir o \"template\"" #~ msgid "" #~ "This message contains calendaring/scheduling information, but support " #~ "for calendars is not available on this particular system. Please ask " #~ "your system administrator to install a new version of the Citadel web " #~ "service with calendaring enabled.
    \n" #~ msgstr "" #~ "Essa mensagem contém informações de calendário/agenda, mas suporte " #~ "para calendários não está disponível para esse sistema em particular. " #~ "Pergunte para o administrador do sistema para instalar uma nova versão do " #~ "serviço para web Citadel com calendários instalados.
    \n" #~ msgid "" #~ "Cannot display calendar item. You are seeing this error because your " #~ "WebCit service has not been installed with calendar support. Please " #~ "contact your system administrator.
    \n" #~ msgstr "" #~ "Não foi possível exibir um item do calendário. Isso ocorreu porque o " #~ "serviço WebCit não foi instalado com suporte para calendários. Contate o " #~ "administrador do sistema.
    \n" #~ msgid "" #~ "Cannot display to-do item. You are seeing this error because your " #~ "WebCit service has not been installed with calendar support. Please " #~ "contact your system administrator.
    \n" #~ msgstr "" #~ "Não foi possível exibir esse item \"para fazer\".Isso ocorreu porque o " #~ "serviço WebCit não foi instalado com suporte para calendários. Contate o " #~ "administrador do sistema.
    \n" #~ msgid "Day: " #~ msgstr "Dia: " #~ msgid "Year: " #~ msgstr "Ano: " #~ msgid "The calendar view is not available." #~ msgstr "A visualização por calendário não está disponível" #~ msgid "The tasks view is not available." #~ msgstr "A visualização por tarefa não está disponível" #~ msgid "Gateway domains" #~ msgstr "Domínios do gateway" #~ msgid "(domains whose subdomains match Citadel hosts)" #~ msgstr "(domínios cujos subdomínios contém computadores Citadel)" #~ msgid "(This server does not support task lists)" #~ msgstr "(Esse servidor não suporta listas de tarefas)" #~ msgid "(This server does not support calendars)" #~ msgstr "(Esse servidor não suporta calendários)" webcit-8.24-dfsg.orig/po/webcit/it.po0000644000175000017500000035474612271477123017272 0ustar michaelmichael# translation of webcit.po to it.po # Copyright (C) 2005 - 2009 The Citadel Project - http://www.citadel.org # This file is distributed under the revised BSD license # # Gabriele Tassoni , 2005, 2006. msgid "" msgstr "" "Project-Id-Version: WebCit\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-03-20 01:03-0400\n" "PO-Revision-Date: 2010-11-13 00:06+0000\n" "Last-Translator: Gabriele Tassoni \n" "Language-Team: \n" "Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-11-14 05:02+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: ../../messages.c:1719 #, c-format msgid "An error occurred while retrieving this part: %s/%s\n" msgstr "E' avvenuto un errore durante il recupero di questa parte: %s/%s\n" #: ../../roomops.c:708 ../../roomops.c:1005 ../../sieve.c:364 msgid "Cancelled. Changes were not saved." msgstr "Attività Cancellata.Le modifiche non sono state salvate." #: ../../roomops.c:838 ../../sieve.c:417 msgid "Your changes have been saved." msgstr "Le tue modifiche sono state salvate." #: ../../roomops.c:881 #, c-format msgid "User '%s' kicked out of room '%s'." msgstr "L'utente %s è stato espulso dalla stanza %s." #: ../../roomops.c:898 #, c-format msgid "User '%s' invited to room '%s'." msgstr "L'utente %s è stato invitato nella stanza %s." #: ../../roomops.c:927 msgid "Cancelled. No new room was created." msgstr "Attività Cancellata.Nessuna nuova stanza è stata creata." #: ../../roomops.c:1187 msgid "Floor has been deleted." msgstr "Il piano è stato cancellato." #: ../../roomops.c:1211 msgid "New floor has been created." msgstr "Il nuovo piano è stato creato." #: ../../roomops.c:1290 msgid "Room list view" msgstr "Vista della lista delle stanze" #: ../../roomops.c:1293 msgid "Show empty floors" msgstr "" #: ../../roomviews.c:50 msgid "Bulletin Board" msgstr "Forum" #: ../../roomviews.c:51 msgid "Mail Folder" msgstr "Cartella di Posta" #: ../../roomviews.c:52 msgid "Address Book" msgstr "Contatti" #: ../../roomviews.c:53 ../../static/t/iconbar.html:24 #: ../../static/t/iconbar/edit.html:55 msgid "Calendar" msgstr "Calendario" #: ../../roomviews.c:54 msgid "Task List" msgstr "Lista delle Attività" #: ../../roomviews.c:55 msgid "Notes List" msgstr "Lista delle Note" #: ../../roomviews.c:56 msgid "Wiki" msgstr "Wiki" #: ../../roomviews.c:57 msgid "Calendar List" msgstr "Lista Calendario" #: ../../roomviews.c:58 msgid "Journal" msgstr "giornale" #: ../../roomviews.c:59 #, fuzzy msgid "Drafts" msgstr "Data" #: ../../roomviews.c:60 msgid "Blog" msgstr "Blog" #: ../../tasks.c:93 msgid "Completed?" msgstr "Completato?" #: ../../tasks.c:95 msgid "Name of task" msgstr "Nome dell'operazione" #: ../../tasks.c:97 msgid "Date due" msgstr "Data dovuta" #: ../../tasks.c:99 msgid "Category" msgstr "Categoria" #: ../../tasks.c:101 msgid "Show All" msgstr "Mostra Tutto" #: ../../tasks.c:223 msgid "Edit task" msgstr "Aggiorna questa operazione." #: ../../tasks.c:242 ../../calendar.c:98 ../../calendar_view.c:298 #: ../../calendar_view.c:959 ../../calendar_view.c:1003 #: ../../calendar_view.c:1084 msgid "Summary:" msgstr "Sommario:" #: ../../tasks.c:253 msgid "Start date:" msgstr "Data di inizio:" #: ../../tasks.c:261 ../../tasks.c:291 msgid "No date" msgstr "Nessuna Data" #: ../../tasks.c:265 ../../tasks.c:294 msgid "or" msgstr "o" #: ../../tasks.c:279 ../../tasks.c:308 msgid "Time associated" msgstr "Tempo associato" #: ../../tasks.c:283 msgid "Due date:" msgstr "Scadenza:" #: ../../tasks.c:312 msgid "Completed:" msgstr "Completato:" #: ../../tasks.c:323 msgid "Category:" msgstr "Categoria:" #: ../../tasks.c:333 ../../calendar.c:159 ../../static/t/files.html:12 msgid "Description:" msgstr "Descrizione:" #: ../../tasks.c:351 ../../event.c:764 msgid "Save" msgstr "Salva" #: ../../tasks.c:352 ../../event.c:765 ../../static/t/aide/inet/section.html:5 #: ../../static/t/view_blog/comment.html:12 #: ../../static/t/view_blog/post.html:15 ../../static/t/view_message.html:32 #: ../../static/t/navbar.html:116 ../../static/t/msg_listview.html:27 msgid "Delete" msgstr "Cancella" #: ../../tasks.c:353 ../../vcard_edit.c:1216 ../../paging.c:66 #: ../../event.c:767 ../../sysmsgs.c:69 ../../who.c:200 ../../auth.c:812 #: ../../static/t/edit_message.html:135 ../../static/t/confirmlogoff.html:4 msgid "Cancel" msgstr "Cancella" #: ../../tasks.c:423 ../../calendar_view.c:1379 msgid "Untitled Task" msgstr "" #: ../../fmt_date.c:310 msgid "Time format" msgstr "Formato dell'ora" #: ../../listsub.c:54 ../../static/t/listsub/display.html:5 msgid "List subscription" msgstr "Mostra le sottoscrizioni" #: ../../listsub.c:67 ../../static/t/listsub/display.html:9 msgid "List subscribe/unsubscribe" msgstr "Mostra le sottoscrizioni/cancella la sottoscrizione" #: ../../listsub.c:87 ../../static/t/listsub/display.html:15 #: ../../static/t/listsub/display.html:34 msgid "Confirmation request sent" msgstr "Richiesta di conferma inviata" #: ../../listsub.c:89 #, c-format msgid "" "You are subscribing %s to the %s mailing list. The " "listserver has sent you an e-mail with one additional Web link for you to " "click on to confirm your subscription. This extra step is for your " "protection, as it prevents others from being able to subscribe you to lists " "without your consent.

    Please click on the link which is being e-" "mailed to you and your subscription will be confirmed.
    \n" msgstr "" "Stai sottoscrivendo %s alla mailing list %s. Il server di " "posta ti ha inviato una email contenente un collegamento da cliccare per " "confermare la tua sottoscrizione. questo passo è necessario per la " "tua protezione, in modo da evitare che altre persone possano sottoscriverti " "senza il tuo consenso.

    Per favore, clicca sul collegamento presente " "nella email per confermare la tua sottoscrizione.
    \n" #: ../../listsub.c:102 ../../static/t/listsub/display.html:24 msgid "Go back..." msgstr "Indietro..." #: ../../listsub.c:253 ../../listsub.c:291 ../../listsub.c:327 #: ../../listsub.c:334 msgid "You need to specify the mailinglist to subscribe to." msgstr "" #: ../../listsub.c:260 ../../listsub.c:298 msgid "You need to specify the email address you'd like to subscribe with." msgstr "" #: ../../blogview_renderer.c:58 ../../blogview_renderer.c:74 #, fuzzy, c-format msgid "%d comments" msgstr "Invia il comando" #: ../../blogview_renderer.c:61 ../../blogview_renderer.c:77 msgid "permalink" msgstr "" #: ../../blogview_renderer.c:302 msgid "Newer posts" msgstr "i nuovi post" #: ../../blogview_renderer.c:311 msgid "Older posts" msgstr "i post più vecchi" #: ../../useredit.c:629 msgid "" "An error occurred while trying to create or edit this address book entry." msgstr "" "E' avvenuto un errore durante la creazione o la cancellazione di questa voce " "della rubrica dei contatti" #: ../../useredit.c:717 msgid "Changes were not saved." msgstr "I cambiamento non sono stati salvati." #: ../../useredit.c:782 msgid "A new user has been created." msgstr "E' stato creato un nuovo utente." #: ../../useredit.c:786 msgid "" "You are attempting to create a new user from within Citadel while running in " "host based authentication mode. In this mode, you must create new users on " "the host system, not within Citadel." msgstr "" #: ../../bbsview_renderer.c:312 msgid "Go to page: " msgstr "Vai alla pagina: " #: ../../bbsview_renderer.c:354 msgid "First" msgstr "Primo" #: ../../bbsview_renderer.c:360 msgid "Last" msgstr "Ultimo" #: ../../graphics.c:56 msgid "Graphics upload has been cancelled." msgstr "Il caricamento della grafica è stato cancellato." #: ../../graphics.c:62 msgid "You didn't upload a file." msgstr "Non carichi un file." #: ../../graphics.c:112 msgid "your photo" msgstr "La tua foto" #: ../../graphics.c:119 msgid "the icon for this room" msgstr "l'icona di questa stanza" #: ../../graphics.c:127 msgid "the Greetingpicture for the login prompt" msgstr "" #: ../../graphics.c:135 msgid "the Logoff banner picture" msgstr "" #: ../../graphics.c:146 msgid "the icon for this floor" msgstr "L'icona per questo piano" #: ../../calendar_tools.c:100 msgid "Hour: " msgstr "Ora: " #: ../../calendar_tools.c:120 msgid "Minute: " msgstr "Minuto: " #: ../../calendar_tools.c:191 msgid "(status unknown)" msgstr "(stato sconosciuto)" #: ../../calendar_tools.c:207 msgid "(needs action)" msgstr "(serve una azione)" #: ../../calendar_tools.c:210 msgid "(accepted)" msgstr "(accettato)" #: ../../calendar_tools.c:213 msgid "(declined)" msgstr "(declinato)" #: ../../calendar_tools.c:216 msgid "(tenative)" msgstr "(tentativo)" #: ../../calendar_tools.c:219 msgid "(delegated)" msgstr "(delegato)" #: ../../calendar_tools.c:222 msgid "(completed)" msgstr "(completato)" #: ../../calendar_tools.c:225 msgid "(in process)" msgstr "(in lavorazione)" #: ../../calendar_tools.c:228 msgid "(none)" msgstr "(nessuno)" #: ../../notes.c:343 msgid "Click on any note to edit it." msgstr "Clicca su una nota per modificarla." #: ../../vcard_edit.c:175 ../../vcard_edit.c:178 msgid "(no name)" msgstr "(nessun nome)" #: ../../vcard_edit.c:443 msgid " (work)" msgstr " (lavoro)" #: ../../vcard_edit.c:445 msgid " (home)" msgstr " (casa)" #: ../../vcard_edit.c:447 msgid " (cell)" msgstr " (cellulare)" #: ../../vcard_edit.c:458 ../../vcard_edit.c:1120 msgid "Address:" msgstr "Indirizzo:" #: ../../vcard_edit.c:526 msgid "Telephone:" msgstr "Telefono:" #: ../../vcard_edit.c:531 msgid "E-mail:" msgstr "E-mail:" #: ../../vcard_edit.c:779 msgid "This address book is empty." msgstr "Questa lista contatti è vuota" #: ../../vcard_edit.c:793 msgid "An internal error has occurred." msgstr "" #: ../../vcard_edit.c:944 msgid "Error" msgstr "Errore" #: ../../vcard_edit.c:1048 msgid "Edit contact information" msgstr "Modifica le informazioni del contatto" #: ../../vcard_edit.c:1068 msgid "Prefix" msgstr "Prefisso" #: ../../vcard_edit.c:1068 msgid "First Name" msgstr "Nome" #: ../../vcard_edit.c:1068 msgid "Middle Name" msgstr "Secondo nome" #: ../../vcard_edit.c:1068 msgid "Last Name" msgstr "Cognome" #: ../../vcard_edit.c:1068 msgid "Suffix" msgstr "Suffisso" #: ../../vcard_edit.c:1089 msgid "Display name:" msgstr "Nome da mostrare:" #: ../../vcard_edit.c:1096 msgid "Title:" msgstr "Titolo:" #: ../../vcard_edit.c:1103 msgid "Organization:" msgstr "Organizzazione:" #: ../../vcard_edit.c:1114 msgid "PO box:" msgstr "Presso:" #: ../../vcard_edit.c:1130 msgid "City:" msgstr "Città:" #: ../../vcard_edit.c:1136 msgid "State:" msgstr "Provincia:" #: ../../vcard_edit.c:1142 msgid "ZIP code:" msgstr "C.A.P.:" #: ../../vcard_edit.c:1148 msgid "Country:" msgstr "Nazione:" #: ../../vcard_edit.c:1158 msgid "Home telephone:" msgstr "Telefono di casa:" #: ../../vcard_edit.c:1164 msgid "Work telephone:" msgstr "Telefono di lavoro:" #: ../../vcard_edit.c:1170 msgid "Mobile telephone:" msgstr "Telefono mobile:" #: ../../vcard_edit.c:1176 msgid "Fax number:" msgstr "Numero di fax:" #: ../../vcard_edit.c:1187 msgid "Primary Internet e-mail address" msgstr "Indirizzo email principale" #: ../../vcard_edit.c:1194 msgid "Internet e-mail aliases" msgstr "Alias degli indirizzi email esterni" #: ../../vcard_edit.c:1215 ../../sysmsgs.c:67 msgid "Save changes" msgstr "Cambia i cambiamenti" #: ../../vcard_edit.c:1261 msgid "Unable to enter the room to save your message" msgstr "" #: ../../vcard_edit.c:1265 msgid "Aborting." msgstr "Abortendo." #: ../../vcard_edit.c:1297 ../../vcard_edit.c:1341 ../../auth.c:367 #: ../../auth.c:397 msgid "An error has occurred." msgstr "E' avvenuto un errore." #: ../../vcard_edit.c:1399 msgid "Could Not decode vcard photo\n" msgstr "" #: ../../preferences.c:880 msgid "Cancelled. No settings were changed." msgstr "Attività cancellata. Nessuna impostazione è stata cambiata." #: ../../preferences.c:1092 msgid "Make this my start page" msgstr "Imposta questa pagina come principale" #: ../../preferences.c:1130 msgid "This isn't allowed to become the start page." msgstr "" #: ../../preferences.c:1132 msgid "You no longer have a start page selected." msgstr "Non hai più una pagina principale selezionata." #: ../../preferences.c:1182 msgid "Prefered startpage" msgstr "" #: ../../calendar.c:76 msgid "Meeting invitation" msgstr "Invito a un incontro" #: ../../calendar.c:79 msgid "Attendee's reply to your invitation" msgstr "Risposta del membro al tuo invito" #: ../../calendar.c:82 msgid "Published event" msgstr "Evento pubblicato" #: ../../calendar.c:85 msgid "This is an unknown type of calendar item." msgstr "Questo è un tipo di calendario sconosciuto." #: ../../calendar.c:107 ../../calendar_view.c:306 ../../calendar_view.c:964 #: ../../calendar_view.c:1008 ../../calendar_view.c:1089 msgid "Location:" msgstr "Luogo:" #: ../../calendar.c:132 ../../calendar_view.c:351 ../../calendar_view.c:970 msgid "Date:" msgstr "Data:" #: ../../calendar.c:139 ../../calendar_view.c:373 ../../calendar_view.c:1013 #: ../../calendar_view.c:1099 msgid "Starting date/time:" msgstr "Data e ora di inizio:" #: ../../calendar.c:150 ../../calendar_view.c:376 ../../calendar_view.c:1015 #: ../../calendar_view.c:1101 msgid "Ending date/time:" msgstr "Data e ora di fine:" #: ../../calendar.c:168 ../../event.c:90 msgid "Recurrence" msgstr "Ricorrenza" #: ../../calendar.c:169 ../../event.c:505 msgid "This is a recurring event" msgstr "Questo è un evento ricorrente" #: ../../calendar.c:178 msgid "Attendee:" msgstr "Membro:" #: ../../calendar.c:218 #, c-format msgid "This is an update of '%s' which is already in your calendar." msgstr "" "Questo è un aggiornamento di '%s' giè nel tuo calendario." #: ../../calendar.c:222 #, c-format msgid "This event would conflict with '%s' which is already in your calendar." msgstr "" "Questo evento è in conflitto con l'evento '%s' già presente " "nel tuo calendario." #: ../../calendar.c:227 msgid "Update:" msgstr "Aggiorna:" #: ../../calendar.c:228 msgid "CONFLICT:" msgstr "CONFLITTO:" #: ../../calendar.c:251 msgid "How would you like to respond to this invitation?" msgstr "Come vuoi rispondere a questo invito?" #: ../../calendar.c:252 msgid "Accept" msgstr "Accetta" #: ../../calendar.c:253 msgid "Tentative" msgstr "Tentativo" #: ../../calendar.c:254 msgid "Decline" msgstr "Declina" #: ../../calendar.c:271 msgid "Click Update to accept this reply and update your calendar." msgstr "" "Seleziona Aggiorna Per accettare questa risposta e aggiornare il tuo " "calendario." #: ../../calendar.c:272 msgid "Update" msgstr "Aggiorna" #: ../../calendar.c:273 msgid "Ignore" msgstr "Ignora" #: ../../calendar.c:295 msgid "There was an error parsing this calendar item." msgstr "C'è un errore in questo oggetto del calendario." #: ../../calendar.c:328 msgid "" "You have accepted this meeting invitation. It has been entered into your " "calendar." msgstr "" "Hai accettato questo invito all'incontro. è stato aggiunto al tuo " "calendario." #: ../../calendar.c:332 msgid "" "You have tentatively accepted this meeting invitation. It has been " "'pencilled in' to your calendar." msgstr "" "Hai accettato questo messaggio in forse. è stato \"segnato a matita\" " "nel tuo calendario" #: ../../calendar.c:336 msgid "" "You have declined this meeting invitation. It has not been entered " "into your calendar." msgstr "" "Hai declinato l'invito. Non è stato inserito nel tuo calendario." #: ../../calendar.c:341 msgid "A reply has been sent to the meeting organizer." msgstr "Una risposta è stata mandata all'organizzatore dell'incontro." #. / Translators: RSVP aka Répondez s'il-vous-plaît Is the term #. / that the recipient of an ical-invitation should please #. / answer this request. #: ../../calendar.c:376 msgid "Your calendar has been updated to reflect this RSVP." msgstr "" "Il tuo calendario è stato aggiornato per riflettere questo RSVP." #: ../../calendar.c:378 msgid "" "You have chosen to ignore this RSVP. Your calendar has not been " "updated." msgstr "" "Hai scelto di ignorare questo RSVP. il tuo calendario non " "verrà aggiornato." #: ../../calendar.c:932 msgid "Calendar day view begins at:" msgstr "La vista giornaliera del calendario inizia il:" #: ../../calendar.c:933 msgid "Calendar day view ends at:" msgstr "La vista giornaliera del calendario finisce il:" #: ../../calendar.c:934 msgid "Week starts on:" msgstr "La settimana parte da:" #: ../../paging.c:35 msgid "Send instant message" msgstr "Invia un Messaggio Istantaneo" #: ../../paging.c:43 msgid "Send an instant message to: " msgstr "Invia un Messaggio istantaneo a: " #: ../../paging.c:57 msgid "Enter message text:" msgstr "Inserisci il testo del messaggio:" #: ../../paging.c:65 ../../static/t/edit_message.html:109 msgid "Send message" msgstr "Invia il messaggio" #: ../../paging.c:84 msgid "Message was not sent." msgstr "Il Messaggio non è stato spedito." #: ../../paging.c:95 msgid "Message has been sent to " msgstr "Il Messaggio è stato spedito a " #: ../../iconbar.c:328 msgid "Iconbar Setting" msgstr "" #. #. * Set to 'unknown' right from the beginning. Unless we learn #. * something else, that's what we'll go with. #. #: ../../availability.c:148 msgid "availability unknown" msgstr "Disponibilità sconosciuta" #: ../../availability.c:169 msgid "free" msgstr "libero" #: ../../availability.c:179 msgid "BUSY" msgstr "OCCUPATO" #: ../../serv_func.c:193 msgid "" "This server is already serving its maximum number of users and cannot accept " "any additional logins at this time. Please try again later or contact your " "system administrator." msgstr "" #: ../../serv_func.c:198 ../../serv_func.c:227 msgid "Received unexpected answer from Citadel server; bailing out." msgstr "" #: ../../serv_func.c:236 #, c-format msgid "" "You are connected to a Citadel server running Citadel %d.%02d. \n" "In order to run this version of WebCit you must also have Citadel %d.%02d or " "newer.\n" "\n" "\n" msgstr "" "Sei collegato a un server Citadel con installato Citadel %d.%02d. \n" "Per poter usare questa versione di WebCit, devi avere Citadel %d.%02d o più " "recente.\n" "\n" "\n" #: ../../event.c:70 msgid "seconds" msgstr "secondi" #: ../../event.c:71 msgid "minutes" msgstr "minuti" #: ../../event.c:72 msgid "hours" msgstr "ore" #: ../../event.c:73 msgid "days" msgstr "giorni" #: ../../event.c:74 msgid "weeks" msgstr "settimane" #: ../../event.c:75 msgid "months" msgstr "mesi" #: ../../event.c:76 msgid "years" msgstr "anni" #: ../../event.c:77 msgid "never" msgstr "mai" #: ../../event.c:81 msgid "first" msgstr "primo" #: ../../event.c:82 msgid "second" msgstr "secondo" #: ../../event.c:83 msgid "third" msgstr "terzo" #: ../../event.c:84 msgid "fourth" msgstr "quarto" #: ../../event.c:85 msgid "fifth" msgstr "quinto" #: ../../event.c:88 msgid "Event" msgstr "Evento" #: ../../event.c:89 ../../event.c:437 ../../event.c:449 msgid "Attendees" msgstr "Membri" #: ../../event.c:167 msgid "Add or edit an event" msgstr "Aggiungi o modifica un evento" #: ../../event.c:206 ../../static/t/iconbar.html:13 #: ../../static/t/iconbar/edit.html:29 msgid "Summary" msgstr "Sommario" #: ../../event.c:217 msgid "Location" msgstr "Luogo" #: ../../event.c:228 ../../calendar_view.c:760 msgid "Start" msgstr "Inizio" #: ../../event.c:271 ../../calendar_view.c:957 ../../calendar_view.c:986 msgid "All day event" msgstr "Evento per tutto il giorno" #: ../../event.c:277 ../../calendar_view.c:761 msgid "End" msgstr "Fine" #: ../../event.c:327 ../../static/t/iconbar.html:34 #: ../../static/t/iconbar/edit.html:49 msgid "Notes" msgstr "Note" #: ../../event.c:369 msgid "Organizer" msgstr "Organizer" #: ../../event.c:374 msgid "(you are the organizer)" msgstr "(tu sei l'organizzatore)" #: ../../event.c:392 msgid "Show time as:" msgstr "Mostra l'ora come:" #: ../../event.c:415 msgid "Free" msgstr "Libero" #: ../../event.c:423 msgid "Busy" msgstr "Occupato" #: ../../event.c:440 msgid "(One per line)" msgstr "(Uno per linea)" #: ../../event.c:450 ../../static/t/edit_message.html:143 #: ../../static/t/iconbar.html:29 ../../static/t/iconbar/edit.html:42 msgid "Contacts" msgstr "Contatti" #: ../../event.c:513 msgid "Recurrence rule" msgstr "Regola ricorrente" #: ../../event.c:517 msgid "Repeats every" msgstr "Ripeti ogni" #. begin 'weekday_selector' div #: ../../event.c:535 msgid "on these weekdays:" msgstr "nei giorni di questa settimana:" #: ../../event.c:593 #, c-format msgid "on day %s%d%s of the month" msgstr "nei giorni %s%d%s del mese" #: ../../event.c:602 ../../event.c:664 msgid "on the " msgstr "sul " #: ../../event.c:626 msgid "of the month" msgstr "del mese" #: ../../event.c:655 msgid "every " msgstr "ogni " #: ../../event.c:656 msgid "year on this date" msgstr "anno in questa data" #: ../../event.c:688 ../../static/t/msg_listselector_bottom.html:7 #: ../../static/t/msg_listselector_top.html:7 msgid "of" msgstr "di" #: ../../event.c:712 msgid "Recurrence range" msgstr "" #: ../../event.c:720 msgid "No ending date" msgstr "Nessuna data finale" #: ../../event.c:727 msgid "Repeat this event" msgstr "Ripeti questo evento" #: ../../event.c:730 msgid "times" msgstr "tempi" #: ../../event.c:738 msgid "Repeat this event until " msgstr "Ripeti questo evento fino " #: ../../event.c:766 msgid "Check attendee availability" msgstr "Controlla la disponibilità del membro." #: ../../event.c:858 ../../calendar_view.c:272 ../../calendar_view.c:468 #: ../../calendar_view.c:937 msgid "Untitled Event" msgstr "Evento senza Titolo" #: ../../sysmsgs.c:52 #, c-format msgid "Edit %s" msgstr "Modifica %s" #: ../../sysmsgs.c:55 #, c-format msgid "" "Enter %s below. Text is formatted to the reader's browser. A newline is " "forced by preceding the next line by a blank." msgstr "" "Inserisci %s qui sotto. Il testo viene formattato dalla larghezza dello " "schermo del lettore. Per non seguire la formattazione, indentare la linea di " "almeno uno spazio." #: ../../sysmsgs.c:89 #, c-format msgid "Cancelled. %s was not saved." msgstr "Attività cancellata. %s non è stato salvato." #: ../../sysmsgs.c:109 #, fuzzy msgid " has been saved." msgstr "%s è stato salvato." #: ../../sysmsgs.c:116 ../../sysmsgs.c:117 msgid "Room info" msgstr "Informazioni di stanza" #: ../../sysmsgs.c:122 ../../sysmsgs.c:124 msgid "Your bio" msgstr "Le tue informazioni personali" #: ../../calendar_view.c:297 ../../calendar_view.c:958 #: ../../calendar_view.c:1002 ../../calendar_view.c:1083 #: ../../static/t/sieve/display_one.html:20 msgid "From" msgstr "Mittente" #: ../../calendar_view.c:355 ../../calendar_view.c:974 msgid "Starting date:" msgstr "Data di partenza:" #: ../../calendar_view.c:361 ../../calendar_view.c:976 msgid "Ending date:" msgstr "Data di arrivo:" #: ../../calendar_view.c:369 ../../calendar_view.c:1095 msgid "Date/time:" msgstr "Data/tempo:" #: ../../calendar_view.c:386 ../../calendar_view.c:980 #: ../../calendar_view.c:1018 ../../calendar_view.c:1105 #: ../../static/t/room/edit/tab_share.html:32 msgid "Notes:" msgstr "note:" #: ../../calendar_view.c:585 ../../calendar_view.c:721 msgid "previous" msgstr "precedente" #: ../../calendar_view.c:597 ../../calendar_view.c:733 #: ../../calendar_view.c:1308 msgid "next" msgstr "successivo" #: ../../calendar_view.c:756 msgid "Week" msgstr "Settimana" #: ../../calendar_view.c:758 msgid "Hours" msgstr "Ore" #: ../../calendar_view.c:759 ../../static/t/sieve/display_one.html:22 #: ../../static/t/msg_listview.html:9 msgid "Subject" msgstr "Oggetto" #: ../../calendar_view.c:1001 ../../calendar_view.c:1024 msgid "Ongoing event" msgstr "Evento corrente" #: ../../messages.c:70 msgid "ERROR:" msgstr "ERRORE:" #: ../../messages.c:88 msgid "Empty message" msgstr "Messaggio vuoto" #: ../../messages.c:1010 msgid "Cancelled. Message was not posted." msgstr "Cancellato. Il messaggio non è stato inviato." #: ../../messages.c:1013 msgid "Automatically cancelled because you have already saved this message." msgstr "Cancellato automaticamente, hai già salvato questo messaggio." #: ../../messages.c:1037 msgid "Saved to Drafts failed: " msgstr "" #: ../../messages.c:1102 msgid "Refusing to post empty message.\n" msgstr "" #: ../../messages.c:1128 msgid "Message has been saved to Drafts.\n" msgstr "" #: ../../messages.c:1137 msgid "Message has been sent.\n" msgstr "Il messaggio è stato inviato.\n" #: ../../messages.c:1140 msgid "Message has been posted.\n" msgstr "Il messaggio è stato postato.\n" #: ../../messages.c:1679 msgid "The message was not moved." msgstr "Il messaggio non è stato spostato" #: ../../messages.c:1796 #, c-format msgid "An error occurred while retrieving this part: %s\n" msgstr "E' avvenuto un errore durante il recupero di questa parte: %s\n" #: ../../messages.c:1956 msgid "Attach signature to email messages?" msgstr "Allega la firma ai messaggi email?" #: ../../messages.c:1959 msgid "Use this signature:" msgstr "Usa questa firma:" #: ../../messages.c:1961 msgid "Default character set for email headers:" msgstr "Set di caratteri di default per le intestazioni delle email:" #: ../../messages.c:1964 msgid "Preferred email address" msgstr "Indirizzo email preferito" #: ../../messages.c:1966 msgid "Preferred display name for email messages" msgstr "" #: ../../messages.c:1970 msgid "Preferred display name for bulletin board posts" msgstr "" #: ../../messages.c:1973 msgid "Mailbox view mode" msgstr "" #: ../../inetconf.c:110 ../../inetconf.c:119 ../../inetconf.c:133 #: ../../inetconf.c:159 ../../netconf.c:156 ../../netconf.c:183 #: ../../netconf.c:191 ../../netconf.c:239 ../../netconf.c:247 msgid "Invalid Parameter" msgstr "Parametro Invalido" #: ../../inetconf.c:126 #, fuzzy msgid " has been deleted." msgstr "%s è stato cancellato." #. added status message #: ../../inetconf.c:144 #, fuzzy msgid " added." msgstr "aggiunto." #: ../../who.c:154 msgid "Edit your session display" msgstr "Modifica la tua vista della sessione" #: ../../who.c:158 msgid "" "This screen allows you to change the way your session appears in the 'Who is " "online' listing. To turn off any 'fake' name you've previously set, simply " "click the appropriate 'change' button without typing anything in the " "corresponding box. " msgstr "" "Questa schermata ti permette di cambiare il modo in cui appare la tua " "sessione nella lista \"chi è on line\". Per eliminare qualsiasi nome " "fittizio abbia usato in precedenza, clicca semplicemente sul bottone di " "\"modifica\" appropriaton senza digitare nulla nella casella corrispondente. " #: ../../who.c:171 msgid "Room name:" msgstr "Nome della stanza:" #: ../../who.c:176 msgid "Change room name" msgstr "Cambia il nome della stanza" #: ../../who.c:180 msgid "Host name:" msgstr "Nome dell'host:" #: ../../who.c:185 msgid "Change host name" msgstr "Cambia il nome dell'host" #: ../../who.c:190 ../../static/t/aide/edituser/detailview.html:20 #: ../../static/t/openid_manual_create.html:9 #: ../../static/t/get_logged_in.html:57 ../../static/t/get_logged_in.html:72 msgid "User name:" msgstr "Nome utente:" #: ../../who.c:195 msgid "Change user name" msgstr "Cambia nome utente" #: ../../siteconfig.c:46 ../../siteconfig.c:64 ../../roomlist.c:44 #: ../../roomlist.c:394 ../../static/t/room/edit/tab_expire.html:72 #: ../../static/t/room/edit/tab_config.html:149 #: ../../static/t/room/edit/tab_access.html:42 msgid "Higher access is required to access this function." msgstr "" #: ../../siteconfig.c:256 msgid "WARNING: Failed to parse Server Config; do you run a to new citserver?" msgstr "" #: ../../siteconfig.c:319 msgid "Your system configuration has been updated." msgstr "La configurazione del tuo sistema è stata aggiornata" #: ../../wiki.c:69 ../../wiki.c:162 ../../wiki.c:282 #, c-format msgid "There is no room called '%s'." msgstr "Nessuna stanza col nome '%s'." #: ../../wiki.c:76 #, c-format msgid "'%s' is not a Wiki room." msgstr "'%s' non è una stanza di tipo Wiki." #: ../../wiki.c:110 #, c-format msgid "There is no page called '%s' here." msgstr "Nessuna pagina chamata '%s'." #: ../../wiki.c:112 msgid "" "Select the 'Edit this page' link in the room banner if you would like to " "create this page." msgstr "Seleziona il collegamento 'Modifica questa pagina' se la vuoi creare." #: ../../wiki.c:181 ../../static/t/msg_listview.html:11 msgid "Date" msgstr "Data" #: ../../wiki.c:182 msgid "Author" msgstr "Autore" #: ../../wiki.c:209 ../../wiki.c:218 msgid "(show)" msgstr "(mostra)" #: ../../wiki.c:211 ../../static/t/navbar.html:145 msgid "Current version" msgstr "Versione corrente" #: ../../wiki.c:223 msgid "(revert)" msgstr "" #: ../../wiki.c:300 msgid "Page title" msgstr "Titolo pagina" #: ../../webcit.c:316 msgid "Authorization Required" msgstr "Autorizzazione richiesta" #: ../../webcit.c:324 #, c-format msgid "" "The resource you requested requires a valid username and password. You could " "not be logged in: %s\n" msgstr "" "Questa risorsa richiede un nome utente e una password. Non puoi essere " "autenticato e accedere a: %s\n" #: ../../webcit.c:647 ../../auth.c:526 msgid "" "This program was unable to connect or stay connected to the Citadel server. " "Please report this problem to your system administrator." msgstr "" "Questo programma non riesce a collegarsi o a rimanere collegato al server " "Citadel. Per favore, segnala questo errore all'amministratore di sistema." #: ../../webcit.c:654 ../../auth.c:532 msgid "Read More..." msgstr "Leggi Altro..." #: ../../smtpqueue.c:134 ../../static/t/aide/ignetconf/section.html:5 #: ../../static/t/view_mailq/message.html:2 msgid "(Delete)" msgstr "(Cancella)" #: ../../smtpqueue.c:334 msgid "First Attempt pending" msgstr "" #: ../../roomlist.c:99 msgid "My Folders" msgstr "Le mie Catrelle" #: ../../downloads.c:289 #, c-format msgid "An error occurred while retrieving this file: %s\n" msgstr "E' avvenuto un errore durante il recupero di questa parte: %s\n" #: ../../roomtokens.c:572 msgid "file" msgstr "documento" #: ../../roomtokens.c:574 msgid "files" msgstr "documenti" #: ../../summary.c:128 msgid "(None)" msgstr "(Nessuno)" #: ../../summary.c:184 msgid "(Nothing)" msgstr "(Nulla)" #: ../../msg_renderers.c:579 ../../static/t/who/bio.html:15 msgid "edit" msgstr "Modifica" #: ../../msg_renderers.c:1119 msgid "I don't know how to display " msgstr "Non so come mostrare " #: ../../msg_renderers.c:1353 msgid "(no subject)" msgstr "(nessun oggetto)" #: ../../addressbook_popup.c:186 msgid "Add" msgstr "Aggiungi" #. an erased user #: ../../auth.c:30 ../../static/t/aide/edituser/detailview.html:43 #: ../../static/t/aide/siteconfig/tab_access.html:40 #: ../../static/t/aide/siteconfig/tab_access.html:51 msgid "Deleted" msgstr "Cancellato" #. a new user #: ../../auth.c:33 ../../static/t/aide/edituser/detailview.html:44 #: ../../static/t/aide/siteconfig/tab_access.html:41 #: ../../static/t/aide/siteconfig/tab_access.html:52 #: ../../static/t/get_logged_in.html:79 msgid "New User" msgstr "Nuovo Utente" #. a trouble maker #: ../../auth.c:36 ../../static/t/aide/edituser/detailview.html:45 #: ../../static/t/aide/siteconfig/tab_access.html:42 #: ../../static/t/aide/siteconfig/tab_access.html:53 msgid "Problem User" msgstr "Utente con Problemi" #. user with normal privileges #: ../../auth.c:39 ../../static/t/aide/edituser/detailview.html:46 #: ../../static/t/aide/siteconfig/tab_access.html:43 #: ../../static/t/aide/siteconfig/tab_access.html:54 msgid "Local User" msgstr "Utente Locale" #. a user that may access network resources #: ../../auth.c:42 ../../static/t/aide/edituser/detailview.html:47 #: ../../static/t/aide/siteconfig/tab_access.html:44 #: ../../static/t/aide/siteconfig/tab_access.html:55 msgid "Network User" msgstr "Utente di Rete" #. a moderator #: ../../auth.c:45 ../../static/t/aide/edituser/detailview.html:48 #: ../../static/t/aide/siteconfig/tab_access.html:45 #: ../../static/t/aide/siteconfig/tab_access.html:56 msgid "Preferred User" msgstr "Utente Preferito" #. chief #: ../../auth.c:48 ../../static/t/aide/edituser/detailview.html:49 #: ../../static/t/aide/siteconfig/tab_access.html:46 #: ../../static/t/aide/siteconfig/tab_access.html:57 msgid "Admin" msgstr "Amministratore" #: ../../auth.c:513 ../../static/t/iconbar.html:80 #: ../../static/t/confirmlogoff.html:3 #: ../../static/t/menu/basic_commands.html:19 msgid "Log off" msgstr "Esci" #: ../../auth.c:537 msgid "Log in again" msgstr "Esegui nuovamente il Log in" #: ../../auth.c:585 ../../static/t/aide/usermanagement.html:3 msgid "Validate new users" msgstr "Valida il nuovo utente" #: ../../auth.c:605 msgid "No users require validation at this time." msgstr "Non si richiede l'autenticazione utente in questo momento" #: ../../auth.c:655 msgid "very weak" msgstr "molto debole" #: ../../auth.c:658 msgid "weak" msgstr "debole" #: ../../auth.c:661 msgid "ok" msgstr "ok" #: ../../auth.c:665 msgid "strong" msgstr "forte" #: ../../auth.c:683 #, c-format msgid "Current access level: %d (%s)\n" msgstr "Attuale livello di accesso: %d (%s)\n" #: ../../auth.c:691 msgid "Select access level for this user:" msgstr "Seleziona il livello di accesso per l'utente corrente:" #: ../../auth.c:776 ../../static/t/menu/your_info.html:4 msgid "Change your password" msgstr "Cambia la tua password" #: ../../auth.c:800 msgid "Enter new password:" msgstr "Inserisci la nuova password:" #: ../../auth.c:804 msgid "Enter it again to confirm:" msgstr "Inseriscila nuovamente per conferma:" #: ../../auth.c:810 msgid "Change password" msgstr "Cambia la password" #: ../../auth.c:830 msgid "Cancelled. Password was not changed." msgstr "Aziona cancellata. La password non è stata cambiata." #: ../../auth.c:839 msgid "They don't match. Password was not changed." msgstr "Le password non coincidono. Cambiamento non effettuato." #: ../../auth.c:845 msgid "Blank passwords are not allowed." msgstr "Le password vuote non sono ammesse." #: ../../openid.c:34 msgid "Manage Account/OpenID Associations" msgstr "" #: ../../openid.c:52 msgid "Do you really want to delete this OpenID?" msgstr "" #: ../../openid.c:53 msgid "(delete)" msgstr "(elimina)" #: ../../openid.c:61 msgid "Add an OpenID: " msgstr "Aggiungi un OpenID: " #: ../../openid.c:64 msgid "Attach" msgstr "Allega" #: ../../openid.c:68 #, c-format msgid "%s does not permit authentication via OpenID." msgstr "" #: ../../html2html.c:136 #, c-format msgid "realloc() error! couldn't get %d bytes: %s" msgstr "errore di realloc()! non riesco a ottenere %d bytes: %s" #: ../../static/t/viewomatic.html:4 msgid "View as:" msgstr "Vedi come:" #: ../../static/t/sieve/list.html:32 ../../static/t/sieve/none.html:4 #: ../../static/t/menu/your_info.html:7 msgid "View/edit server-side mail filters" msgstr "Visualizza/Modifica i filtri email lato server" #: ../../static/t/sieve/list.html:41 msgid "When new mail arrives: " msgstr "Quando arrivano nuove email: " #: ../../static/t/sieve/list.html:43 msgid "Leave it in my inbox without filtering" msgstr "Lasciala nellla mia posta in entrata senza filtrarla" #: ../../static/t/sieve/list.html:44 msgid "Filter it according to rules selected below" msgstr "Crea filtro dalle regole selezionate qui sotto" #: ../../static/t/sieve/list.html:45 msgid "Filter it through a manually edited script (advanced users only)" msgstr "Crea filtro modificando manualmente lo script (solo utenti esperti)" #: ../../static/t/sieve/list.html:52 msgid "Your incoming mail will not be filtered through any scripts." msgstr "La tua posta in ingresso non verrà filtrata attraverso nessuno script." #: ../../static/t/sieve/list.html:64 msgid "Add rule" msgstr "Aggiungi regola" #: ../../static/t/sieve/list.html:71 msgid "The currently active script is: " msgstr "Lo script attivo è: " #: ../../static/t/sieve/list.html:76 ../../static/t/sieve/add.html:3 msgid "Add or delete scripts" msgstr "Aggiungi o cancella degli script" #: ../../static/t/sieve/display_one.html:16 msgid "If" msgstr "Se" #: ../../static/t/sieve/display_one.html:21 msgid "To or Cc" msgstr "Destinatario o Cc" #: ../../static/t/sieve/display_one.html:23 msgid "Reply-to" msgstr "Rispondi a" #: ../../static/t/sieve/display_one.html:24 #: ../../static/t/msg_listview.html:10 #: ../../static/t/view_mailq/header.html:27 msgid "Sender" msgstr "Mittente" #: ../../static/t/sieve/display_one.html:25 msgid "Resent-From" msgstr "Inoltra da" #: ../../static/t/sieve/display_one.html:26 msgid "Resent-To" msgstr "Inoltra a" #: ../../static/t/sieve/display_one.html:27 msgid "Envelope From" msgstr "Mittente del contenitore" #: ../../static/t/sieve/display_one.html:28 msgid "Envelope To" msgstr "Destinatario del contenitore" #: ../../static/t/sieve/display_one.html:29 msgid "X-Mailer" msgstr "X-Mailer" #: ../../static/t/sieve/display_one.html:30 msgid "X-Spam-Flag" msgstr "X-Spam-flag" #: ../../static/t/sieve/display_one.html:31 msgid "X-Spam-Status" msgstr "X-Spam-Status" #: ../../static/t/sieve/display_one.html:32 msgid "List-ID" msgstr "Lista-ID" #: ../../static/t/sieve/display_one.html:33 msgid "Message size" msgstr "Dimensione del messaggio" #: ../../static/t/sieve/display_one.html:34 #: ../../static/t/select_messageindex_all.html:1 msgid "All" msgstr "Tutti" #: ../../static/t/sieve/display_one.html:41 msgid "contains" msgstr "Contiene" #: ../../static/t/sieve/display_one.html:42 msgid "does not contain" msgstr "Non contiene" #: ../../static/t/sieve/display_one.html:43 msgid "is" msgstr "è" #: ../../static/t/sieve/display_one.html:44 msgid "is not" msgstr "Non è" #: ../../static/t/sieve/display_one.html:45 msgid "matches" msgstr "è uguale a" #: ../../static/t/sieve/display_one.html:46 msgid "does not match" msgstr "Non è uguale" #: ../../static/t/sieve/display_one.html:52 msgid "(All messages)" msgstr "(tutti i messaggi)" #: ../../static/t/sieve/display_one.html:56 msgid "is larger than" msgstr "E' più grande" #: ../../static/t/sieve/display_one.html:57 msgid "is smaller than" msgstr "E' più piccolo" #: ../../static/t/sieve/display_one.html:59 #, fuzzy msgid "bytes" msgstr "anni" #: ../../static/t/sieve/display_one.html:65 msgid "Keep" msgstr "Tieni" #: ../../static/t/sieve/display_one.html:66 msgid "Discard silently" msgstr "Scarta silenziosamente" #: ../../static/t/sieve/display_one.html:67 msgid "Reject" msgstr "Rimanda al mittente" #: ../../static/t/sieve/display_one.html:68 msgid "Move message to" msgstr "Sposta il messaggio in" #: ../../static/t/sieve/display_one.html:69 msgid "Forward to" msgstr "Inoltra a" #: ../../static/t/sieve/display_one.html:70 msgid "Vacation" msgstr "Vacanza" #: ../../static/t/sieve/display_one.html:82 msgid "Message:" msgstr "Messaggio:" #: ../../static/t/sieve/display_one.html:90 msgid "and then" msgstr "e poi" #: ../../static/t/sieve/display_one.html:93 msgid "continue processing" msgstr "Continua a processare" #: ../../static/t/sieve/display_one.html:94 msgid "stop" msgstr "ferma" #: ../../static/t/sieve/none.html:9 msgid "" "This installation of Citadel was built without support for server-side mail " "filtering.
    Please contact your system administrator if you require this " "feature.
    " msgstr "" #: ../../static/t/sieve/add.html:9 msgid "Add a new script" msgstr "Aggiungi un nuovo script" #: ../../static/t/sieve/add.html:10 msgid "" "To create a new script, enter the desired script name in the box below and " "click 'Create'." msgstr "" "Per creare un nuovo script, inserisci il nome desiderato nella casella " "riportata sotto e clicca 'Crea'." #: ../../static/t/sieve/add.html:14 msgid "Script name: " msgstr "Nome dello script: " #: ../../static/t/sieve/add.html:18 msgid "Edit scripts" msgstr "Modifica gli script" #: ../../static/t/sieve/add.html:20 msgid "Return to the script editing screen" msgstr "Torna alla schermata di modifica dello script" #: ../../static/t/sieve/add.html:23 msgid "Delete scripts" msgstr "Cancella gli script" #: ../../static/t/sieve/add.html:24 msgid "" "To delete an existing script, select the script name from the list and click " "'Delete'." msgstr "" "Per cancellare uno script esistente, seleziona il suo nome dalla lista e " "clicca 'Cancella'." #: ../../static/t/msg/confirm_move.html:4 msgid "Confirm move of message" msgstr "Conferma lo spostamento del messaggio" #: ../../static/t/msg/confirm_move.html:12 msgid "Move this message to:" msgstr "Sposta questo messaggio in:" #: ../../static/t/login.html:5 msgid "powered by" msgstr "potenziato da" #: ../../static/t/login.html:15 ../../static/t/iconbar.html:88 #: ../../static/t/get_logged_in.html:64 ../../static/t/get_logged_in.html:88 #: ../../static/t/get_logged_in.html:93 ../../static/t/get_logged_in.html:98 #: ../../static/t/get_logged_in.html:107 msgid "Log in" msgstr "Ultimo Login" #: ../../static/t/trailing.html:14 msgid "" "WARNING: You have JavaScript disabled in your web browser. Many functions " "of this system will not work properly." msgstr "" #: ../../static/t/view_submessage.html:4 #: ../../static/t/view_message/replyquote.html:3 #: ../../static/t/view_message/replyquote.html:7 #: ../../static/t/view_message/print.html:8 ../../static/t/view_message.html:7 msgid "from " msgstr "da " #: ../../static/t/searchomatic.html:4 msgid "Search: " msgstr "Cerca: " #: ../../static/t/listsub/display.html:16 msgid "You are subscribing " msgstr "" #: ../../static/t/listsub/display.html:17 #, fuzzy msgid " to the " msgstr "sul " #: ../../static/t/listsub/display.html:18 #, fuzzy msgid " mailing list." msgstr "Servizio Mailing List" #: ../../static/t/listsub/display.html:19 msgid "" "The listserver has sent you an e-mail with one additional Web link for you " "to click on to confirm your subscription." msgstr "" #: ../../static/t/listsub/display.html:20 msgid "" "This extra step is for your protection, as it prevents others from being " "able to subscribe you to lists without your consent." msgstr "" #: ../../static/t/listsub/display.html:22 msgid "" "Please click on the link which is being e-mailed to you and your " "subscription will be confirmed." msgstr "" #: ../../static/t/listsub/display.html:27 #: ../../static/t/listsub/display.html:47 #, fuzzy msgid "ERROR" msgstr "ERRORE:" #: ../../static/t/listsub/display.html:35 msgid "You are unsubscribing" msgstr "" #: ../../static/t/listsub/display.html:37 #, fuzzy msgid "from the" msgstr "da " #: ../../static/t/listsub/display.html:39 #, fuzzy msgid "mailing list." msgstr "Servizio Mailing List" #: ../../static/t/listsub/display.html:40 msgid "" "The listserver has sent you an e-mail with one additional Web link for you " "to click on to confirm your unsubscription." msgstr "" #: ../../static/t/listsub/display.html:41 msgid "" "This extra step is for your protection, as it prevents others from being " "able to unsubscribe you from lists without your consent." msgstr "" #: ../../static/t/listsub/display.html:43 msgid "" "Please click on the link which is being e-mailed to you and your " "unsubscription will be confirmed." msgstr "" #: ../../static/t/listsub/display.html:44 #, fuzzy msgid "Back..." msgstr "Indietro..." #: ../../static/t/listsub/display.html:54 #, fuzzy msgid "Confirmation successful!" msgstr "Richiesta di conferma inviata" #: ../../static/t/listsub/display.html:56 #, fuzzy msgid "Confirmation failed." msgstr "Configurazione" #: ../../static/t/listsub/display.html:57 msgid "This could mean one of two things:" msgstr "" #: ../../static/t/listsub/display.html:59 msgid "" "You waited too long to confirm your subscribe/unsubscribe request (the " "confirmation link is only valid for three days)" msgstr "" #: ../../static/t/listsub/display.html:60 msgid "" "You have already successfully confirmed your subscribe/unsubscribe " "request and are attempting to do it again." msgstr "" #: ../../static/t/listsub/display.html:62 msgid "The error returned by the server was: " msgstr "" #: ../../static/t/listsub/display.html:70 #, fuzzy msgid "Name of list:" msgstr "Nome dell'operazione" #: ../../static/t/listsub/display.html:75 #, fuzzy msgid "Your e-mail address:" msgstr "Indirizzo email preferito" #: ../../static/t/listsub/display.html:79 msgid "(If subscribing) preferred format: " msgstr "" #: ../../static/t/listsub/display.html:80 #, fuzzy msgid "One message at a time" msgstr "Inserisci il testo del messaggio:" #: ../../static/t/listsub/display.html:81 #, fuzzy msgid "Digest format" msgstr "Formato dell'ora" #: ../../static/t/listsub/display.html:89 msgid "" "When you attempt to subscribe or unsubscribe to a mailing list, you will " "receive an e-mail containing one additional web link to click on for final " "confirmation." msgstr "" #: ../../static/t/listsub/display.html:90 msgid "" "This extra step is for your protection, as it prevents others from being " "able to subscribe or unsubscribe you to lists." msgstr "" #: ../../static/t/floors_edit_one.html:11 msgid "(delete floor)" msgstr "(Cancella il piano)" #: ../../static/t/floors_edit_one.html:13 msgid "(edit graphic)" msgstr "(Modifica la grafica)" #: ../../static/t/floors.html:4 msgid "Add/change/delete floors" msgstr "Agiungi, cambia o cancella i piani" #: ../../static/t/floors.html:10 msgid "Floor number" msgstr "Numero del piano" #: ../../static/t/floors.html:11 msgid "Floor name" msgstr "Nome del piano" #: ../../static/t/floors.html:12 msgid "Number of rooms" msgstr "Numero di stanze" #: ../../static/t/floors.html:13 msgid "Floor CSS" msgstr "Stile del Piano" #: ../../static/t/files.html:4 msgid "Files available for download in" msgstr "" #: ../../static/t/files.html:9 msgid "Upload a file:" msgstr "Carica un documento:" #: ../../static/t/files.html:30 msgid "Filename" msgstr "Nome del documento" #: ../../static/t/files.html:31 msgid "Size" msgstr "Dimensione" #: ../../static/t/files.html:32 msgid "Content" msgstr "Contenuto" #: ../../static/t/files.html:33 msgid "Description" msgstr "Descrizione" #: ../../static/t/edit_message.html:9 ../../static/t/iconbar.html:50 #: ../../static/t/iconbar.html:59 msgid "Loading" msgstr "Caricamento" #: ../../static/t/edit_message.html:23 msgid "from" msgstr "da" #: ../../static/t/edit_message.html:29 ../../static/t/edit_message.html:38 msgid "Anonymous" msgstr "Anonimo" #: ../../static/t/edit_message.html:47 msgid "in" msgstr "in" #: ../../static/t/edit_message.html:51 msgid "To:" msgstr "A:" #: ../../static/t/edit_message.html:57 #: ../../static/t/view_message/print.html:15 #: ../../static/t/view_message.html:15 msgid "CC:" msgstr "CC:" #: ../../static/t/edit_message.html:63 msgid "BCC:" msgstr "BCC:" #: ../../static/t/edit_message.html:71 msgid "Subject (optional):" msgstr "Oggetto (opzionale):" #: ../../static/t/edit_message.html:71 #: ../../static/t/view_message/replyquote.html:8 #: ../../static/t/view_message/print.html:16 #: ../../static/t/view_message.html:16 msgid "Subject:" msgstr "Oggetto:" #: ../../static/t/edit_message.html:86 msgid "--- forwarded message ---" msgstr "--- messaggio inoltrato ---" #: ../../static/t/edit_message.html:110 msgid "Post message" msgstr "Posta il messaggio" #: ../../static/t/edit_message.html:118 msgid "Save to Drafts" msgstr "" #: ../../static/t/edit_message.html:126 #: ../../static/t/edit_message/attachments_pane.html:5 msgid "Attachments:" msgstr "Allegati:" #: ../../static/t/aide/display_serverrestart_page.html:4 #, fuzzy msgid "Message to your Users:" msgstr "Il Messaggio non è stato spedito." #: ../../static/t/aide/display_generic_result.html:2 msgid "Server command results" msgstr "Risultato del comando impartito al Server" #: ../../static/t/aide/display_generic_result.html:18 #, fuzzy msgid "Enter another command" msgstr "inserisci un comando per il server" #: ../../static/t/aide/display_generic_result.html:19 #, fuzzy msgid "Return to menu" msgstr "Visualizza il menu" #: ../../static/t/aide/display_sitewide_config.html:3 msgid "Site configuration" msgstr "Configurazione del sito" #: ../../static/t/aide/display_sitewide_config.html:6 #: ../../static/t/aide/edituser/select.html:9 #, fuzzy msgid "You need to be aide to view this." msgstr "Non hai il permesso di visualizzare questa risorsa." #: ../../static/t/aide/display_sitewide_config.html:11 msgid "General" msgstr "Generale" #: ../../static/t/aide/display_sitewide_config.html:12 msgid "Access" msgstr "Accesso" #: ../../static/t/aide/display_sitewide_config.html:13 msgid "Network" msgstr "Rete" #: ../../static/t/aide/display_sitewide_config.html:14 msgid "Tuning" msgstr "Rifiniture" #: ../../static/t/aide/display_sitewide_config.html:15 #, fuzzy msgid "Directory" msgstr "directory" #: ../../static/t/aide/display_sitewide_config.html:16 msgid "Auto-purger" msgstr "Eliminatore automatico" #: ../../static/t/aide/display_sitewide_config.html:17 msgid "Indexing/Journaling" msgstr "Indicizza" #: ../../static/t/aide/display_sitewide_config.html:18 #: ../../static/t/aide/siteconfig/tab_pushmail.html:1 #, fuzzy msgid "Push Email" msgstr "Email" #: ../../static/t/aide/display_sitewide_config.html:19 msgid "Pop3" msgstr "" #: ../../static/t/aide/usermanagement.html:2 msgid "Add, change, delete user accounts" msgstr "Aggiungi, modifica, cancella degli account di utenti" #: ../../static/t/aide/display_inetconf.html:5 #: ../../static/t/aide/display_menu.html:5 msgid "System Administration Menu" msgstr "Menu di amministrazione di sistema" #: ../../static/t/aide/display_inetconf.html:6 #: ../../static/t/aide/display_menu.html:6 #, fuzzy msgid "Room Admin Menu" msgstr "Amministratore della stanza: " #: ../../static/t/aide/display_inetconf.html:13 msgid "Local host aliases" msgstr "Alias degli host locali" #: ../../static/t/aide/display_inetconf.html:14 msgid "Directory domains" msgstr "Domini delle directory" #: ../../static/t/aide/display_inetconf.html:15 msgid "Smart hosts" msgstr "Smart Host" #: ../../static/t/aide/display_inetconf.html:16 #, fuzzy msgid "Fallback smart hosts" msgstr "Smart Host" #: ../../static/t/aide/display_inetconf.html:17 msgid "Notification hosts" msgstr "" #: ../../static/t/aide/display_inetconf.html:22 msgid "RBL hosts" msgstr "Host RBL" #: ../../static/t/aide/display_inetconf.html:23 msgid "SpamAssassin hosts" msgstr "Host Spamassassin" #: ../../static/t/aide/display_inetconf.html:24 msgid "ClamAV clamd hosts" msgstr "" #: ../../static/t/aide/display_inetconf.html:25 #, fuzzy msgid "Masqueradable domains" msgstr "Domini del gateway" #: ../../static/t/aide/edituser/select.html:5 msgid "Edit or delete users" msgstr "Modifica o cancella gli utenti" #: ../../static/t/aide/edituser/select.html:17 msgid "Add users" msgstr "Aggiungi utenti" #: ../../static/t/aide/edituser/select.html:20 msgid "Edit or Delete users" msgstr "Modifica o cancella gli utenti" #: ../../static/t/aide/edituser/box_select.html:1 msgid "" "To edit an existing user account, select the user name from the list and " "click 'Edit'." msgstr "" "Per modificare un utente esistente, seleziona il suo nome dalla lista e " "clicca 'Modifica'." #: ../../static/t/aide/edituser/detailview.html:4 msgid "Edit user account: " msgstr "Modifica l'account dell'utente:" #: ../../static/t/aide/edituser/detailview.html:24 #: ../../static/t/room/edit/tab_feed.html:14 msgid "Password" msgstr "Password" #: ../../static/t/aide/edituser/detailview.html:28 msgid "Permission to send Internet mail" msgstr "Permesso di inviare email a internet" #: ../../static/t/aide/edituser/detailview.html:32 msgid "Number of logins" msgstr "Numero di login" #: ../../static/t/aide/edituser/detailview.html:36 msgid "Messages submitted" msgstr "Numero di Messaggi" #: ../../static/t/aide/edituser/detailview.html:40 msgid "Access level" msgstr "Livello di accesso" #: ../../static/t/aide/edituser/detailview.html:54 msgid "User ID number" msgstr "Numero indentificativo" #: ../../static/t/aide/edituser/detailview.html:58 msgid "Date and time of last login" msgstr "Data e giorno dell'ultimo accesso" #: ../../static/t/aide/edituser/detailview.html:68 msgid "Auto-purge after this many days" msgstr "Auto elimina dopo questo numero di giorni" #: ../../static/t/aide/edituser/add.html:1 msgid "" "To create a new user account, enter the desired user name in the box below " "and click 'Create'." msgstr "" "Per creare un nuovo account utente, inserisci il nome utente desiderato " "nella casella riportata sotto e clicca 'Crea'." #: ../../static/t/aide/edituser/add.html:5 msgid "New user: " msgstr "Nuovo utente:" #: ../../static/t/aide/display_generic_cmd.html:4 msgid "Enter a server command" msgstr "inserisci un comando per il server" #: ../../static/t/aide/display_generic_cmd.html:12 msgid "" "This screen allows you to enter Citadel server commands which are not " "supported by WebCit. If you do not know what that means, then this screen " "will not be of much use to you." msgstr "" "Questa schermata ti permette di inviare comandi al server non supportati da " "WebCit. Se non sai cosa significhi, allora questa schermata non ti " "sarà di molto aiuto." #: ../../static/t/aide/display_generic_cmd.html:15 msgid "Enter command:" msgstr "Inserisci il comando:" #: ../../static/t/aide/display_generic_cmd.html:17 msgid "Command input (if requesting SEND_LISTING transfer mode):" msgstr "" "Input del comando (se si richiede un modo di traferimento SEND_LISTING):" #: ../../static/t/aide/display_generic_cmd.html:20 #, fuzzy msgid "Detected host header is " msgstr "L'intestazione dell'host rilevata è %s://%s" #: ../../static/t/aide/display_ignetconf.html:4 msgid "Network configuration" msgstr "Configurazione di rete" #: ../../static/t/aide/display_ignetconf.html:10 #: ../../static/t/aide/ignetconf/edit_node.html:5 #: ../../static/t/aide/ignetconf/add.html:5 msgid "Add a new node" msgstr "Aggiungi un nuovo nodo" #: ../../static/t/aide/display_ignetconf.html:14 msgid "Currently configured nodes" msgstr "Nodi configurati" #: ../../static/t/aide/display_serverrestart.html:26 #, fuzzy msgid "Restart Citadel" msgstr "Imposta questa pagina come principale" #: ../../static/t/aide/floorconfig.html:2 msgid "Add, change, or delete floors" msgstr "Aggiungi, modifica o cancella i piani" #: ../../static/t/aide/serverrestart/box.html:3 msgid "Please wait while the Citadel server is restarted... " msgstr "" #: ../../static/t/aide/serverrestart/box_page_do.html:3 msgid "" "Please wait while your users are being paged, the citadel server will be " "restarted after that... " msgstr "" #: ../../static/t/aide/inet/masqdomains.html:2 msgid "(Domains as which users are allowed to masquerade)" msgstr "" #: ../../static/t/aide/inet/rbldns.html:2 msgid "(hosts running a Realtime Blackhole List)" msgstr "(host che usano una lista Blackhole in tempo reale)" #: ../../static/t/aide/inet/dirnames.html:2 msgid "(domains mapped with the Global Address Book)" msgstr "(Domini mappati nei Contatti Globali)" #: ../../static/t/aide/inet/notify.html:2 msgid "(URLS for notifications when users receive new mails; )" msgstr "" #: ../../static/t/aide/inet/notify.html:2 msgid "Syntax: Notificationtemplatename:http[s]://user:password@hostname/path" msgstr "" #: ../../static/t/aide/inet/smarthosts.html:2 msgid "(if present, forward all outbound mail to one of these hosts)" msgstr "(Se presenti, invia tutta la posta non locale a uno di questi host)" #: ../../static/t/aide/inet/aliases.html:2 msgid "(domains for which this host receives mail)" msgstr "(Domini per cui questo host riceve email)" #: ../../static/t/aide/inet/clamav.html:2 #, fuzzy msgid "(hosts running the ClamAV clamd service)" msgstr "(host che forniscono il servizio spamassassin)" #: ../../static/t/aide/inet/spamass.html:2 msgid "(hosts running the SpamAssassin service)" msgstr "(host che forniscono il servizio spamassassin)" #: ../../static/t/aide/inet/fallbackhosts.html:2 msgid "(send outbound mail to these hosts only when direct delivery fails)" msgstr "" #: ../../static/t/aide/ignetconf/display_confirm_delete.html:5 msgid "Confirm delete" msgstr "Conferma la cancellazione" #: ../../static/t/aide/ignetconf/display_confirm_delete.html:11 msgid "Are you sure you want to delete " msgstr "Sei sicuro di voler cancellare? " #: ../../static/t/aide/ignetconf/display_confirm_delete.html:14 #: ../../static/t/prefs/box.html:198 ../../static/t/iconbar/edit.html:19 #: ../../static/t/iconbar/edit.html:26 ../../static/t/iconbar/edit.html:32 #: ../../static/t/iconbar/edit.html:39 ../../static/t/iconbar/edit.html:45 #: ../../static/t/iconbar/edit.html:52 ../../static/t/iconbar/edit.html:58 #: ../../static/t/iconbar/edit.html:64 ../../static/t/iconbar/edit.html:70 #: ../../static/t/iconbar/edit.html:76 ../../static/t/iconbar/edit.html:82 #: ../../static/t/iconbar/edit.html:88 msgid "Yes" msgstr "Si" #: ../../static/t/aide/ignetconf/display_confirm_delete.html:16 #: ../../static/t/prefs/box.html:200 ../../static/t/iconbar/edit.html:20 #: ../../static/t/iconbar/edit.html:27 ../../static/t/iconbar/edit.html:33 #: ../../static/t/iconbar/edit.html:40 ../../static/t/iconbar/edit.html:46 #: ../../static/t/iconbar/edit.html:53 ../../static/t/iconbar/edit.html:59 #: ../../static/t/iconbar/edit.html:65 ../../static/t/iconbar/edit.html:71 #: ../../static/t/iconbar/edit.html:77 ../../static/t/iconbar/edit.html:83 #: ../../static/t/iconbar/edit.html:89 msgid "No" msgstr "No" #: ../../static/t/aide/ignetconf/edit_node.html:15 #: ../../static/t/aide/ignetconf/add.html:15 #: ../../static/t/aide/siteconfig/tab_general.html:8 msgid "Node name" msgstr "Nome del nodo" #: ../../static/t/aide/ignetconf/edit_node.html:17 #: ../../static/t/aide/ignetconf/add.html:17 msgid "Shared secret" msgstr "Segreto condiviso" #: ../../static/t/aide/ignetconf/edit_node.html:19 #: ../../static/t/aide/ignetconf/add.html:19 msgid "Host or IP address" msgstr "Nome dell'host o indirizzo IP" #: ../../static/t/aide/ignetconf/edit_node.html:21 #: ../../static/t/aide/ignetconf/add.html:21 msgid "Port number" msgstr "Numero di porta" #: ../../static/t/aide/ignetconf/section.html:4 #, fuzzy msgid "(Edit)" msgstr "(modifica)" #: ../../static/t/aide/display_menu.html:12 msgid "Global Configuration" msgstr "Configurazione globale" #: ../../static/t/aide/display_menu.html:14 msgid "User account management" msgstr "Gestione account utenti" #: ../../static/t/aide/display_menu.html:16 msgid "Shutdown Citadel" msgstr "" #: ../../static/t/aide/display_menu.html:18 msgid "Rooms and Floors" msgstr "Stanze e piani" #: ../../static/t/aide/global_config.html:2 msgid "Edit site-wide configuration" msgstr "Modifica la configurazione per tutto il sito" #: ../../static/t/aide/global_config.html:3 msgid "Domain names and Internet mail configuration" msgstr "Configurazione dei nomi di dominio e della posta internet" #: ../../static/t/aide/global_config.html:4 msgid "Configure replication with other Citadel servers" msgstr "Configura la replicazione con altri server Citadel" #: ../../static/t/aide/global_config.html:5 #: ../../static/t/view_mailq/header.html:3 msgid "View the outbound SMTP queue" msgstr "Visualizza la coda SMTP di posta in uscita" #: ../../static/t/aide/restart.html:2 #, fuzzy msgid "Restart Now" msgstr "Imposta questa pagina come principale" #: ../../static/t/aide/restart.html:3 msgid "Restart after paging users" msgstr "" #: ../../static/t/aide/restart.html:4 msgid "Restart when all users are idle" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:1 msgid "General site configuration items" msgstr "Oggetti di configurazione generali del sito" #: ../../static/t/aide/siteconfig/tab_general.html:5 msgid "Change Login Logo" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:6 msgid "Change Logout Logo" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:11 msgid "Fully qualified domain name" msgstr "Nome di dominio completo" #: ../../static/t/aide/siteconfig/tab_general.html:14 msgid "Human-readable node name" msgstr "Nome del nodo leggibile da umani" #: ../../static/t/aide/siteconfig/tab_general.html:17 msgid "Telephone number" msgstr "Numero di telefono" #: ../../static/t/aide/siteconfig/tab_general.html:20 msgid "Paginator prompt (for text mode clients)" msgstr "Richiamo di impaginazione (per i client solo testo)" #: ../../static/t/aide/siteconfig/tab_general.html:23 msgid "Geographic location of this system" msgstr "Località geografica di questo server" #: ../../static/t/aide/siteconfig/tab_general.html:26 msgid "Name of system administrator" msgstr "Nome dell'amministratore di sistema" #: ../../static/t/aide/siteconfig/tab_general.html:29 msgid "Default timezone for unzoned calendar items" msgstr "Timezone di default per i calendari non localizzati" #: ../../static/t/aide/siteconfig/tab_autopurger.html:1 msgid "Configure automatic expiry of old messages" msgstr "Configura la cancellazione automatica dei vecchi messaggi" #: ../../static/t/aide/siteconfig/tab_autopurger.html:2 msgid "These settings may be overridden on a per-floor or per-room basis." msgstr "" "Queste impostazioni possono essere escluse da impostazioni specifiche alla " "stanza o al piano." #: ../../static/t/aide/siteconfig/tab_autopurger.html:6 msgid "Hour to run database auto-purge" msgstr "Ora in cui lanciare la pulizia del database" #: ../../static/t/aide/siteconfig/tab_autopurger.html:66 msgid "Default message expire policy for public rooms" msgstr "Politica di default per la cancellazione delle stanze publiche" #: ../../static/t/aide/siteconfig/tab_autopurger.html:68 #: ../../static/t/aide/siteconfig/tab_autopurger.html:86 #: ../../static/t/room/edit/tab_expire.html:17 #: ../../static/t/room/edit/tab_expire.html:45 msgid "Never automatically expire messages" msgstr "Non permettere ai messaggi di auto cancellarsi" #: ../../static/t/aide/siteconfig/tab_autopurger.html:71 #: ../../static/t/aide/siteconfig/tab_autopurger.html:89 #: ../../static/t/room/edit/tab_expire.html:20 #: ../../static/t/room/edit/tab_expire.html:48 msgid "Expire by message count" msgstr "Cancella per numero di messaggi" #: ../../static/t/aide/siteconfig/tab_autopurger.html:73 #: ../../static/t/aide/siteconfig/tab_autopurger.html:92 #: ../../static/t/room/edit/tab_expire.html:23 #: ../../static/t/room/edit/tab_expire.html:51 msgid "Expire by message age" msgstr "Elimina per età del messaggio" #: ../../static/t/aide/siteconfig/tab_autopurger.html:75 #: ../../static/t/aide/siteconfig/tab_autopurger.html:94 #: ../../static/t/room/edit/tab_expire.html:25 #: ../../static/t/room/edit/tab_expire.html:53 msgid "Number of messages or days: " msgstr "Numero di messaggi o giorni:" #: ../../static/t/aide/siteconfig/tab_autopurger.html:81 msgid "Default message expire policy for private mailboxes" msgstr "" "Politica di default per la cancellazione delle cassette postali private" #: ../../static/t/aide/siteconfig/tab_autopurger.html:83 msgid "Same policy as public rooms" msgstr "Stessa politica delle stanze private" #: ../../static/t/aide/siteconfig/tab_network.html:1 msgid "Network services" msgstr "Servizi di rete" #: ../../static/t/aide/siteconfig/tab_network.html:2 #: ../../static/t/aide/siteconfig/tab_directory.html:3 msgid "" "Changes made on this screen will not take effect until you restart the " "Citadel server." msgstr "" "I cambiamenti in questa schemata non avranno effetto finchè non si riavvia " "il server Citadel." #: ../../static/t/aide/siteconfig/tab_network.html:6 msgid "SMTP MTA port (-1 to disable)" msgstr "Porta SMTP MTA (-1 per disabilitare)" #: ../../static/t/aide/siteconfig/tab_network.html:9 msgid "Correct forged From: lines during authenticated SMTP" msgstr "Correggi le linee From: forgiate durante una sessione SMTP autenticata" #: ../../static/t/aide/siteconfig/tab_network.html:12 msgid "Flag message as spam, instead of rejecting it" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:15 msgid "IMAP listener port (-1 to disable)" msgstr "Porta IMAP (-1 per disabilitare)" #: ../../static/t/aide/siteconfig/tab_network.html:19 msgid "Network run frequency (in seconds)" msgstr "Velocità della rete (in secondi)" #: ../../static/t/aide/siteconfig/tab_network.html:22 msgid "Server IP address (0.0.0.0 for 'any')" msgstr "Indirizzo ip del server (0.0.0.0 per 'qualsiasi')" #: ../../static/t/aide/siteconfig/tab_network.html:25 msgid "SMTP MSA port (-1 to disable)" msgstr "Porta SMTP MSA (-1 per disabilitare)" #: ../../static/t/aide/siteconfig/tab_network.html:28 msgid "IMAP over SSL port (-1 to disable)" msgstr "Porta IMAP SSL (-1 per disabiliare)" #: ../../static/t/aide/siteconfig/tab_network.html:31 msgid "SMTP over SSL port (-1 to disable)" msgstr "Porta SMTP SSL (-1 per disabilitare)" #: ../../static/t/aide/siteconfig/tab_network.html:34 msgid "Instantly expunge deleted messages in IMAP" msgstr "Elimina automaticamente i messaggi cancellati nelle cartelle IMAP" #: ../../static/t/aide/siteconfig/tab_network.html:38 #, fuzzy msgid "Allow unauthenticated SMTP clients to spoof this sites domains" msgstr "" "Permetti ai client SMTP non autenticati lo spoofing dei domini del server" #: ../../static/t/aide/siteconfig/tab_network.html:41 msgid "Postfix TCP Dictionary Port" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:41 #, fuzzy msgid "-1 to disable" msgstr "Clicca per disabilitare." #: ../../static/t/aide/siteconfig/tab_network.html:44 #, fuzzy msgid "ManageSieve Port (-1 to disable)" msgstr "Porta IMAP (-1 per disabilitare)" #: ../../static/t/aide/siteconfig/tab_network.html:47 msgid "Perform RBL checks upon connect instead of after RCPT" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:50 msgid "Keep original from headers in IMAP" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:53 #, fuzzy msgid "XMPP (Jabber) client to server port (-1 to disable)" msgstr "Porta POP3 (-1 per disabilitare)" #: ../../static/t/aide/siteconfig/tab_network.html:56 #, fuzzy msgid "XMPP (Jabber) server to server port (-1 to disable)" msgstr "Porta POP3 (-1 per disabilitare)" #: ../../static/t/aide/siteconfig/tab_pop3.html:1 msgid "POP3" msgstr "" #: ../../static/t/aide/siteconfig/tab_pop3.html:6 msgid "POP3 listener port (-1 to disable)" msgstr "Porta POP3 (-1 per disabilitare)" #: ../../static/t/aide/siteconfig/tab_pop3.html:9 msgid "POP3 over SSL port (-1 to disable)" msgstr "Porta POP3 SSL (-1 per disabilitare)" #: ../../static/t/aide/siteconfig/tab_pop3.html:12 #, fuzzy msgid "POP3 fetch frequency in seconds" msgstr "Velocità della rete (in secondi)" #: ../../static/t/aide/siteconfig/tab_pop3.html:15 #, fuzzy msgid "POP3 fastest fetch frequency in seconds" msgstr "Velocità della rete (in secondi)" #: ../../static/t/aide/siteconfig/tab_tuning.html:1 msgid "Advanced server fine-tuning controls" msgstr "Controlli avanzati per la configurazione delle rifiniture" #: ../../static/t/aide/siteconfig/tab_tuning.html:5 msgid "Server connection idle timeout (in seconds)" msgstr "Timeout della connessione per il server in attesa (in secondi)" #: ../../static/t/aide/siteconfig/tab_tuning.html:8 msgid "Maximum concurrent sessions (0 = no limit)" msgstr "Numero massimo di sessioni concorrenti (0 = nessun limite)" #: ../../static/t/aide/siteconfig/tab_tuning.html:11 msgid "Default user purge time (days)" msgstr "Tempo di eliminazione di default degli utenti (in giorni)" #: ../../static/t/aide/siteconfig/tab_tuning.html:14 msgid "Default room purge time (days)" msgstr "Tempo di eliminazioni di default delle stanze (in giorni)" #: ../../static/t/aide/siteconfig/tab_tuning.html:17 msgid "Maximum message length" msgstr "Massima lunghezza dei messaggi" #: ../../static/t/aide/siteconfig/tab_tuning.html:20 msgid "Minimum number of worker threads" msgstr "Numero minimo di discussioni attive" #: ../../static/t/aide/siteconfig/tab_tuning.html:23 msgid "Maximum number of worker threads" msgstr "Massimo numero di discussioni attive" #: ../../static/t/aide/siteconfig/tab_tuning.html:26 msgid "Automatically delete committed database logs" msgstr "Cancella automaticamente i log del database approvati" #: ../../static/t/aide/siteconfig/tab_pushmail.html:5 #, fuzzy msgid "Funambol server host (blank to disable)" msgstr "Nome del server Funambol (vuoto per disabilitare)" #: ../../static/t/aide/siteconfig/tab_pushmail.html:8 #, fuzzy msgid "Funambol server port " msgstr "Nome del server Funambol (vuoto per disabilitare)" #: ../../static/t/aide/siteconfig/tab_pushmail.html:11 #, fuzzy msgid "Funambol sync source" msgstr "Nome del server Funambol (vuoto per disabilitare)" #: ../../static/t/aide/siteconfig/tab_pushmail.html:14 msgid "Funambol auth details (user:pass)" msgstr "" #: ../../static/t/aide/siteconfig/tab_pushmail.html:17 #, fuzzy msgid "External pager tool (blank to disable)" msgstr "Nome del server Funambol (vuoto per disabilitare)" #: ../../static/t/aide/siteconfig/tab_access.html:1 msgid "Access controls and site policy settings" msgstr "Controlli di accesso e impostazioni delle politiche del sito" #: ../../static/t/aide/siteconfig/tab_access.html:5 msgid "Allow aides to zap (forget) rooms" msgstr "Permetti agli amministratori di dimenticare le stanze" #: ../../static/t/aide/siteconfig/tab_access.html:9 msgid "Quarantine messages from problem users" msgstr "Poni in quarantena i messaggi da utenti con problemi" #: ../../static/t/aide/siteconfig/tab_access.html:12 msgid "Name of quarantine room" msgstr "Nome della stanza di quarantena" #: ../../static/t/aide/siteconfig/tab_access.html:17 msgid "Name of room to log pages" msgstr "Nome delle stanze per il log delle pagine" #: ../../static/t/aide/siteconfig/tab_access.html:22 msgid "Authentication mode" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:24 #, fuzzy msgid "Self contained" msgstr "Contiene" #: ../../static/t/aide/siteconfig/tab_access.html:25 #, fuzzy msgid "Host based" msgstr "Nome dell'host:" #: ../../static/t/aide/siteconfig/tab_access.html:26 msgid "LDAP (RFC2307)" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:27 msgid "LDAP (Active Directory)" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:30 #, fuzzy msgid "Master user name (blank to disable)" msgstr "Nome del server Funambol (vuoto per disabilitare)" #: ../../static/t/aide/siteconfig/tab_access.html:33 #, fuzzy msgid "Master user password" msgstr "Inserisci la nuova password:" #: ../../static/t/aide/siteconfig/tab_access.html:38 msgid "Initial access level for new users" msgstr "Livello di accesso iniziale per i nuovi utenti" #: ../../static/t/aide/siteconfig/tab_access.html:49 msgid "Access level required to create rooms" msgstr "Livello di accesso richiesto per creare le stanze" #: ../../static/t/aide/siteconfig/tab_access.html:60 msgid "Automatically grant room-aide status to users who create private rooms" msgstr "" "Imposta automaticamente lo stato di aide per la stanza agli utenti che " "creano stanze private" #: ../../static/t/aide/siteconfig/tab_access.html:63 #, fuzzy msgid "Automatically grant room-aide status to users who create BLOG rooms" msgstr "" "Imposta automaticamente lo stato di aide per la stanza agli utenti che " "creano stanze BLOG" #: ../../static/t/aide/siteconfig/tab_access.html:66 msgid "Restrict access to Internet mail" msgstr "Restringi l'accesso alla posta internet" #: ../../static/t/aide/siteconfig/tab_access.html:71 msgid "Disable self-service user account creation" msgstr "Disabilita l'autocreazione degli account utente" #: ../../static/t/aide/siteconfig/tab_access.html:71 msgid "Hint: do not select both!" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:74 msgid "Require registration for new users" msgstr "Richiedi la registrazione per i nuovo utenti" #: ../../static/t/aide/siteconfig/tab_access.html:77 #, fuzzy msgid "Allow anonymous guest access" msgstr "Nessun messaggio anonimo" #: ../../static/t/aide/siteconfig/tab_indexing.html:1 msgid "Indexing and Journaling" msgstr "Indicizzazione" #: ../../static/t/aide/siteconfig/tab_indexing.html:2 msgid "Warning: these facilities are resource intensive." msgstr "Attenzione: queste caratteristiche richiedono molte risorse." #: ../../static/t/aide/siteconfig/tab_indexing.html:6 msgid "Enable full text index" msgstr "Abilita l'indicizzazione completa dei testi" #: ../../static/t/aide/siteconfig/tab_indexing.html:9 msgid "Perform journaling of email messages" msgstr "Esegui l'indicizzazione delle email" #: ../../static/t/aide/siteconfig/tab_indexing.html:13 msgid "Perform journaling of non-email messages" msgstr "Esegui l'indicizzazione dei messaggi non-email" #: ../../static/t/aide/siteconfig/tab_indexing.html:16 msgid "Email destination of journalized messages" msgstr "Email di destinazione dei messaggi indicizzati" #: ../../static/t/aide/siteconfig/tab_directory.html:1 msgid "Configure the LDAP connector for Citadel" msgstr "Configura il connettore LDAP per Citadel" #: ../../static/t/aide/siteconfig/tab_directory.html:4 msgid "" "NOTE: This Citadel server has been built without LDAP support. These " "options will have no effect." msgstr "" "NOTA: Questo server citadel è stato compilato senza il supporto LDAP. Queste " "opzioni non avranno effetto." #: ../../static/t/aide/siteconfig/tab_directory.html:9 msgid "Host name of LDAP server (blank to disable)" msgstr "Nome del server LDAP (vuoto per disabilitare)" #: ../../static/t/aide/siteconfig/tab_directory.html:13 msgid "Port number of LDAP server (blank to disable)" msgstr "Nuero di porta del server LDAP (vuoto per disabilitare)" #: ../../static/t/aide/siteconfig/tab_directory.html:16 msgid "Base DN" msgstr "DN di base" #: ../../static/t/aide/siteconfig/tab_directory.html:19 msgid "Bind DN" msgstr "DN bind" #: ../../static/t/aide/siteconfig/tab_directory.html:22 msgid "Password for bind DN" msgstr "Password per il DN bind" #: ../../static/t/iconbar.html:7 msgid "Language:" msgstr "Lingua:" #: ../../static/t/iconbar.html:19 msgid "Mail" msgstr "Posta" #: ../../static/t/iconbar.html:39 ../../static/t/iconbar/edit.html:61 #: ../../static/t/summary/page.html:30 msgid "Tasks" msgstr "Attività" #: ../../static/t/iconbar.html:48 ../../static/t/iconbar/edit.html:67 msgid "Rooms" msgstr "Stanze" #: ../../static/t/iconbar.html:57 msgid "Online users" msgstr "Utenti in rete" #: ../../static/t/iconbar.html:62 ../../static/t/iconbar/edit.html:79 msgid "Chat" msgstr "Chat" #: ../../static/t/iconbar.html:65 msgid "Advanced" msgstr "Avanzato" #: ../../static/t/iconbar.html:72 ../../static/t/room/edit/editroom.html:4 #: ../../static/t/room/edit.html:5 msgid "Administration" msgstr "Amministrazione" #: ../../static/t/iconbar.html:83 msgid "customize this menu" msgstr "modifica questo menu" #: ../../static/t/iconbar.html:92 msgid "switch to room list" msgstr "Visualizza le cartelle" #: ../../static/t/iconbar.html:93 msgid "switch to menu" msgstr "Visualizza il menu" #: ../../static/t/iconbar.html:94 msgid "My folders" msgstr "Le mie cartelle" #: ../../static/t/view_message/list_attach.html:3 #: ../../static/t/view_message/inline_attach.html:4 msgid "View" msgstr "Vedi" #: ../../static/t/view_message/list_attach.html:4 #: ../../static/t/view_message/inline_attach.html:5 msgid "Download" msgstr "Scarica" #: ../../static/t/view_message/print.html:14 #: ../../static/t/view_message.html:14 msgid "to" msgstr "a" #: ../../static/t/openid_manual_create.html:2 msgid "Your OpenID" msgstr "Il tuo OpenID" #: ../../static/t/openid_manual_create.html:2 msgid "was successfully verified." msgstr "é stato verificato con successo." #: ../../static/t/openid_manual_create.html:3 msgid "However, the user name" msgstr "" #: ../../static/t/openid_manual_create.html:3 msgid "conflicts with an existing user." msgstr "conflitto con un utente esistente" #: ../../static/t/openid_manual_create.html:5 msgid "Please specify the user name you would like to use." msgstr "" #: ../../static/t/files/graphicsupload.html:2 msgid "Image upload" msgstr "Carica l'immagine" #: ../../static/t/files/graphicsupload.html:6 msgid "You can upload an image directly from your computer" msgstr "Puoi caricare una qualsiasi immagine direttamente dal tuo computer." #: ../../static/t/files/graphicsupload.html:8 msgid "Please select a file to upload:" msgstr "Per favore, seleziona un file da caricare:" #: ../../static/t/files/section_onefile.html:20 msgid "Slideshow" msgstr "" #: ../../static/t/roombanner.html:10 ../../static/t/roombanner.html:11 msgid "new of" msgstr "nuovo di" #: ../../static/t/roombanner.html:10 ../../static/t/roombanner.html:11 #: ../../static/t/msg_listselector_bottom.html:7 #: ../../static/t/msg_listselector_top.html:7 msgid "messages" msgstr "messaggi" #: ../../static/t/roombanner.html:28 msgid "Select page: " msgstr "Seleziona pagina: " #: ../../static/t/who.html:13 msgid "Users currently on " msgstr "Utenti correntemente attivi " #: ../../static/t/who.html:22 #, fuzzy msgid "Click on a name to read user info. Click on" msgstr "" "Clicca su un nome per leggere le informazioni utente.Clicca su %s per " "inviare un messaggio istantaneo a questo utente." #: ../../static/t/who.html:24 #, fuzzy msgid "to send an instant message to that user." msgstr "Invia un Messaggio istantaneo a:" #: ../../static/t/msg_listselector_bottom.html:2 #: ../../static/t/msg_listselector_top.html:2 msgid "Reading #" msgstr "Numero di letture" #: ../../static/t/msg_listselector_bottom.html:12 #: ../../static/t/msg_listselector_top.html:12 msgid "oldest to newest" msgstr "dai più vecchi ai più recenti" #: ../../static/t/msg_listselector_bottom.html:20 #: ../../static/t/msg_listselector_top.html:20 msgid "newest to oldest" msgstr "dai più recenti ai più vecchi" #: ../../static/t/newstartpage.html:4 msgid "New start page" msgstr "Nuova pagina iniziale" #: ../../static/t/newstartpage.html:9 msgid "Your start page has been changed." msgstr "La tua pagina iniziale è stata cambiata" #: ../../static/t/newstartpage.html:12 msgid "" "(Note: this does not change your browser's home page. It changes the page " "you begin on when you log on to" msgstr "" #: ../../static/t/no_new_msgs.html:3 msgid "No new messages." msgstr "Nessun nuovo messaggio." #: ../../static/t/view_blog/comment_box.html:8 msgid "Post a comment" msgstr "Invia un commento" #: ../../static/t/prefs/pushemail.html:2 #, fuzzy msgid "Configure Push Email" msgstr "Email" #: ../../static/t/prefs/pushemail.html:9 msgid "Push email and SMS settings" msgstr "" #: ../../static/t/prefs/pushemail.html:17 msgid "" "If your administrator has enabled the functionality, Citadel can notify a " "Funambol server that you haved recieved new email and automatically " "syncronize any devices you have with the Funambol client installed." msgstr "" #: ../../static/t/prefs/pushemail.html:20 msgid "" "Alternatively, if the administrator has configured it, Citadel can send a " "text message to you when new mail arrives." msgstr "" #: ../../static/t/prefs/pushemail.html:26 #, fuzzy msgid "Notify Funambol server" msgstr "Nome del server Funambol (vuoto per disabilitare)" #: ../../static/t/prefs/pushemail.html:31 #, fuzzy msgid "Send a text message to..." msgstr "Invia un Messaggio istantaneo a:" #: ../../static/t/prefs/pushemail.html:33 msgid "" "(Use international format, without any leading zeros, spaces or hypens, like " "+61415011501)" msgstr "" #: ../../static/t/prefs/pushemail.html:38 msgid "Use custom notification scheme configured by your Admin" msgstr "" #: ../../static/t/prefs/pushemail.html:43 msgid "Don‘t send any notifications" msgstr "" #: ../../static/t/prefs/box.html:9 msgid "Tree (folders) view" msgstr "Vista ad albero (cartelle)" #: ../../static/t/prefs/box.html:11 msgid "Table (rooms) view" msgstr "Vista a tabella (stanze)" #: ../../static/t/prefs/box.html:20 msgid "12 hour (am/pm)" msgstr "12 ore (am/pm)" #: ../../static/t/prefs/box.html:25 msgid "24 hour" msgstr "24 ore" #: ../../static/t/prefs/box.html:152 #, fuzzy msgid "Sunday" msgstr "Sommario" #: ../../static/t/prefs/box.html:153 #, fuzzy msgid "Monday" msgstr "Sommario" #: ../../static/t/prefs/box.html:174 msgid "No signature" msgstr "Nessuna firma" #: ../../static/t/prefs/box.html:238 msgid "Full-functionality" msgstr "" #: ../../static/t/prefs/box.html:241 msgid "Safe mode" msgstr "" #: ../../static/t/prefs/box.html:242 msgid "" "Safe mode is less intensive on your web browser, but not as fully featured." msgstr "" #: ../../static/t/wiki/pagelist.html:1 msgid "List of Wiki pages" msgstr "" #: ../../static/t/wiki/history.html:1 msgid "History of edits for this page" msgstr "" #: ../../static/t/who/list_static_header.html:1 #, fuzzy msgid "Users currently on" msgstr "Utenti attualmente su %s" #: ../../static/t/who/section.html:4 msgid "(kill)" msgstr "(termina)" #: ../../static/t/who/bio.html:4 ../../static/t/user/show.html:4 msgid "User profile" msgstr "Profilo utente" #: ../../static/t/who/summary.html:5 ../../static/t/who/box_list_static.html:6 #: ../../static/t/room/edit/tab_feed.html:13 msgid "User name" msgstr "Nome utente" #: ../../static/t/who/summary.html:6 ../../static/t/who/box_list_static.html:7 msgid "Room" msgstr "Stanza" #: ../../static/t/who/box_list_static.html:8 msgid "From host" msgstr "Dall'host" #: ../../static/t/view_message.html:19 msgid "Edit" msgstr "Modifica" #: ../../static/t/view_message.html:22 ../../static/t/view_message.html:26 msgid "Reply" msgstr "Rispondi" #: ../../static/t/view_message.html:23 msgid "ReplyQuoted" msgstr "Rispondi con cronistoria" #: ../../static/t/view_message.html:27 msgid "ReplyAll" msgstr "Rispondi A Tutti" #: ../../static/t/view_message.html:28 msgid "Forward" msgstr "Inoltra" #: ../../static/t/view_message.html:31 ../../static/t/msg_listview.html:25 msgid "Move" msgstr "Sposta" #: ../../static/t/view_message.html:34 msgid "Headers" msgstr "Intestazione" #: ../../static/t/view_message.html:35 ../../static/t/msg_listview.html:28 msgid "Print" msgstr "Stampa" #: ../../static/t/preferences.html:4 ../../static/t/preferences.html:7 msgid "Preferences and settings" msgstr "Preferenze e impostazioni" #: ../../static/t/user/list.html:3 #, fuzzy msgid "User list for " msgstr "Lista utenti per %s" #: ../../static/t/user/list.html:9 msgid "User Name" msgstr "Nome Utente" #: ../../static/t/user/list.html:10 msgid "Number" msgstr "Numero" #: ../../static/t/user/list.html:11 msgid "Access Level" msgstr "Livello di Accesso" #: ../../static/t/user/list.html:12 msgid "Last Login" msgstr "Ultimo Login" #: ../../static/t/user/list.html:13 msgid "Total Logins" msgstr "Login Totali" #: ../../static/t/user/list.html:14 msgid "Total Posts" msgstr "Messaggi Totali" #: ../../static/t/user/show.html:9 #, fuzzy msgid "Click here to send an instant message to" msgstr "Clicca qui per inviare un messaggio istantaneo a %s" #: ../../static/t/start_of_new_msgs.html:4 msgid "Old messages" msgstr "Messaggi vecchi" #: ../../static/t/start_of_new_msgs.html:8 msgid "New messages" msgstr "" #: ../../static/t/display_main_menu.html:7 msgid "Basic commands" msgstr "Comandi base" #: ../../static/t/display_main_menu.html:10 msgid "Your info" msgstr "Le tue Informazioni" #: ../../static/t/display_main_menu.html:12 msgid "Advanced room commands" msgstr "Comandi di stanza avanzati" #: ../../static/t/iconbar/save.html:4 ../../static/t/iconbar/edit.html:4 msgid "Customize the icon bar" msgstr "Personalizza la barra delle icone" #: ../../static/t/iconbar/save.html:11 #, fuzzy msgid "" "Your icon bar has been updated. Please select any of its choices to continue." msgstr "" "La tua bara delle icone è stata aggiornata. Per favore, seleziona una " "delle sue possibilità per continuare." #: ../../static/t/iconbar/save.html:11 msgid "" "You may need to force refresh (SHIFT-F5)> in order for changes to take effect" msgstr "" #: ../../static/t/iconbar/edit.html:11 msgid "Display icons as:" msgstr "Mostra le icone come:" #: ../../static/t/iconbar/edit.html:12 msgid "pictures and text" msgstr "immagini e testo" #: ../../static/t/iconbar/edit.html:13 msgid "pictures only" msgstr "solo immagini" #: ../../static/t/iconbar/edit.html:14 msgid "text only" msgstr "solo testo" #: ../../static/t/iconbar/edit.html:16 msgid "" "Select the icons you would like to see displayed in the 'icon bar' menu on " "the left side of the screen." msgstr "" "Seleziona le icone che vorresti vedere nel menu alla sinistra dello schermo." #: ../../static/t/iconbar/edit.html:23 msgid "Site logo" msgstr "Logo del sito" #: ../../static/t/iconbar/edit.html:23 msgid "An icon describing this site" msgstr "Una icona che descriva questo sito" #: ../../static/t/iconbar/edit.html:29 msgid "Your summary page" msgstr "Visualizza il sommario" #: ../../static/t/iconbar/edit.html:36 msgid "Mail (inbox)" msgstr "Mail (Posta in arrivo)" #: ../../static/t/iconbar/edit.html:36 msgid "A shortcut to your email Inbox" msgstr "Un collegamento alla tua Posta in Arrivo" #: ../../static/t/iconbar/edit.html:42 msgid "Your personal address book" msgstr "I tuoi Contatti personali" #: ../../static/t/iconbar/edit.html:49 msgid "Your personal notes" msgstr "Le tue note personali" #: ../../static/t/iconbar/edit.html:55 msgid "A shortcut to your personal calendar" msgstr "Un collegamento al tuo calendario personale" #: ../../static/t/iconbar/edit.html:61 msgid "A shortcut to your personal task list" msgstr "Un collegamento alla tua lista di operazioni da effettuare" #: ../../static/t/iconbar/edit.html:67 msgid "" "Clicking this icon displays a list of all accessible rooms (or folders) " "available." msgstr "" "Cliccando questa icona, mostra una lista di tutte le stanze o cartelle " "disponibili." #: ../../static/t/iconbar/edit.html:73 msgid "Who is online?" msgstr "Chi è on line?" #: ../../static/t/iconbar/edit.html:73 msgid "Clicking this icon displays a list of all users currently logged in." msgstr "" "Cliccando su questa icona, mostra tutti gli utenti collegati in questo " "momento." #: ../../static/t/iconbar/edit.html:79 msgid "" "Clicking this icon enters real-time chat mode with other users in the same " "room." msgstr "" "Cliccando su questa icona vi porterà a una chat in tempo reale con " "gli altri utenti nella stessa stanza." #: ../../static/t/iconbar/edit.html:85 msgid "Advanced options" msgstr "Opzioni avanzate" #: ../../static/t/iconbar/edit.html:85 msgid "Access to the complete menu of Citadel functions." msgstr "Accesso al menu completo delle funzioni di Citadel." #: ../../static/t/iconbar/edit.html:91 msgid "Citadel logo" msgstr "Logo Citadel" #: ../../static/t/iconbar/edit.html:91 msgid "Displays the 'Powered by Citadel' icon" msgstr "Mostra l'icona Potenziato da Citadel" #: ../../static/t/room/edit/tab_expire.html:8 msgid "Message expire policy for this room" msgstr "Politica di cancellazione dei messaggi per questa stanza" #: ../../static/t/room/edit/tab_expire.html:14 msgid "Use the default policy for this floor" msgstr "Usa la politica di default per questo piano" #: ../../static/t/room/edit/tab_expire.html:36 msgid "Message expire policy for this floor" msgstr "Politica di cancellazione messaggi per questo piano" #: ../../static/t/room/edit/tab_expire.html:42 msgid "Use the system default" msgstr "Usa il default di sistema" #: ../../static/t/room/edit/editroom.html:5 ../../static/t/room/edit.html:6 msgid "Configuration" msgstr "Configurazione" #: ../../static/t/room/edit/editroom.html:6 ../../static/t/room/edit.html:7 msgid "Message expire policy" msgstr "Politica di cancellazione dei messaggi" #: ../../static/t/room/edit/editroom.html:7 ../../static/t/room/edit.html:8 msgid "Access controls" msgstr "Controllo Accessi" #: ../../static/t/room/edit/editroom.html:8 ../../static/t/room/edit.html:9 msgid "Sharing" msgstr "Condivisione" #: ../../static/t/room/edit/editroom.html:9 ../../static/t/room/edit.html:10 msgid "Mailing list service" msgstr "Servizio Mailing List" #: ../../static/t/room/edit/editroom.html:10 ../../static/t/room/edit.html:11 msgid "Remote retrieval" msgstr "" #: ../../static/t/room/edit/tab_config.html:6 #, fuzzy msgid "name of room: " msgstr "Nome delle stanza:" #: ../../static/t/room/edit/tab_config.html:10 #: ../../static/t/room/create.html:20 msgid "Resides on floor: " msgstr "Appartiene al piano: " #: ../../static/t/room/edit/tab_config.html:16 #: ../../static/t/room/create.html:68 msgid "Type of room:" msgstr "TIpo di stanza:" #: ../../static/t/room/edit/tab_config.html:22 #: ../../static/t/room/create.html:73 msgid "Public (automatically appears to everyone)" msgstr "Pubblica (Appare automaticamente a tutti gli utenti)" #: ../../static/t/room/edit/tab_config.html:28 #: ../../static/t/room/create.html:77 msgid "Private - hidden (accessible to anyone who knows its name)" msgstr "Privata - nascosta (Accessibile solo a chi ne conosce il nome)" #: ../../static/t/room/edit/tab_config.html:35 #: ../../static/t/room/create.html:81 msgid "Private - require password: " msgstr "Privata - richiede password " #: ../../static/t/room/edit/tab_config.html:44 #: ../../static/t/room/create.html:86 msgid "Private - invitation only" msgstr "Privato - solo su invito" #: ../../static/t/room/edit/tab_config.html:51 #: ../../static/t/room/create.html:90 msgid "Personal (mailbox for you only)" msgstr "Personale (cassetta della posta solo per te)" #: ../../static/t/room/edit/tab_config.html:55 msgid "If private, cause current users to forget room" msgstr "Se impostato come privato, l'utente corrente dimenticherà la stanza" #: ../../static/t/room/edit/tab_config.html:61 msgid "Preferred users only" msgstr "Solo utenti preferiti" #: ../../static/t/room/edit/tab_config.html:66 msgid "Read-only room" msgstr "Stanza in sola lettura" #: ../../static/t/room/edit/tab_config.html:71 msgid "All users allowed to post may also delete messages" msgstr "" #: ../../static/t/room/edit/tab_config.html:76 msgid "File directory room" msgstr "Stanza direttorio di file" #: ../../static/t/room/edit/tab_config.html:80 msgid "Directory name: " msgstr "Nome del direttorio:" #: ../../static/t/room/edit/tab_config.html:86 msgid "Uploading allowed" msgstr "Upload permesso" #: ../../static/t/room/edit/tab_config.html:91 msgid "Downloading allowed" msgstr "Download permesso" #: ../../static/t/room/edit/tab_config.html:96 msgid "Visible directory" msgstr "Direttorio visibile" #: ../../static/t/room/edit/tab_config.html:103 msgid "Network shared room" msgstr "Stanza condivisa in rete" #: ../../static/t/room/edit/tab_config.html:108 msgid "Permanent (does not auto-purge)" msgstr "Permanente (non si auto cancella)" #: ../../static/t/room/edit/tab_config.html:113 msgid "Subject Required (Force users to specify a message subject)" msgstr "" #: ../../static/t/room/edit/tab_config.html:116 msgid "Anonymous messages" msgstr "Messaggio anonimo" #: ../../static/t/room/edit/tab_config.html:122 msgid "No anonymous messages" msgstr "Nessun messaggio anonimo" #: ../../static/t/room/edit/tab_config.html:127 msgid "All messages are anonymous" msgstr "Tutti i messaggi sono anonimi" #: ../../static/t/room/edit/tab_config.html:132 msgid "Prompt user when entering messages" msgstr "Notifica l'utente quando si sta digitando il messaggio" #: ../../static/t/room/edit/tab_config.html:136 msgid "Room aide: " msgstr "Amministratore della stanza: " #: ../../static/t/room/edit/tab_listserv.html:5 #, fuzzy msgid "" "The contents of this room are being mailed as individual messages " "to the following list recipients:

    " msgstr "" "I contenuti di questa stanza verranno inviati come messaggi " "individuali alla seguente lista di destinatari:

    \n" #: ../../static/t/room/edit/tab_listserv.html:19 #, fuzzy msgid "" "The contents of this room are being mailed in digest form to the " "following list recipients:

    " msgstr "" "I contenuti di questa stanza saranno inviati come selezione di " "messaggi alla seguente lista di destinatari

    \n" #: ../../static/t/room/edit/tab_listserv.html:39 msgid "Add recipients from Contacts or other address books" msgstr "" #: ../../static/t/room/edit/tab_listserv.html:48 msgid "Allow non-subscribers to mail to this room." msgstr "" #: ../../static/t/room/edit/tab_listserv.html:54 msgid "Room post publication needs Admin permission." msgstr "" #: ../../static/t/room/edit/tab_listserv.html:59 #, fuzzy msgid "Allow self-service subscribe/unsubscribe requests." msgstr "" "Questa stanza è configurate per permettere la sottoscrizione/cancellazione " "automatica degli utenti." #: ../../static/t/room/edit/tab_listserv.html:65 msgid "The URL for subscribe/unsubscribe is: " msgstr "L'indirizzo per sottoscriversi/cancellarsi dalla stanza è:" #: ../../static/t/room/edit/digestrecp_removal.html:1 #: ../../static/t/room/edit/pop3client_removal.html:9 #: ../../static/t/room/edit/listrecp_removal.html:1 #: ../../static/t/room/edit/rssclient_removal.html:5 msgid "(remove)" msgstr "(rimuovi)" #: ../../static/t/room/edit/tab_admin.html:5 msgid "Delete this room" msgstr "Cancella questa stanza" #: ../../static/t/room/edit/tab_admin.html:10 #, fuzzy msgid "Set or change the icon for this rooms banner" msgstr "Imposta o modifica l'icona per il banner di questa stanza" #: ../../static/t/room/edit/tab_admin.html:14 #, fuzzy msgid "Edit this rooms Info file" msgstr "Modifica il file di Informazioni di questa stanza" #: ../../static/t/room/edit/tab_share.html:5 msgid "Shared with" msgstr "Condivisa con" #: ../../static/t/room/edit/tab_share.html:6 msgid "Not shared with" msgstr "Non condivisa con" #: ../../static/t/room/edit/tab_share.html:11 #: ../../static/t/room/edit/tab_share.html:21 msgid "Remote node name" msgstr "nome del nodo remoto" #: ../../static/t/room/edit/tab_share.html:12 #: ../../static/t/room/edit/tab_share.html:22 msgid "Remote room name" msgstr "Nome della stanza remota" #: ../../static/t/room/edit/tab_share.html:13 #: ../../static/t/room/edit/tab_share.html:23 msgid "Actions" msgstr "Azioni" #: ../../static/t/room/edit/tab_share.html:35 #, fuzzy msgid "" "When sharing a room, it must be shared from both ends. Adding a node to the " "'shared' list sends messages out, but in order to receive messages, the " "other nodes must be configured to send messages out to your system as well. " "
  • If the remote room name is blank, it is assumed that the room name is " "identical on the remote node.
  • If the remote room name is different, the " "remote node must also configure the name of the room here." msgstr "" "La condivisione di una stanza deve essere effettuata in tutti i server in " "cui è presente. Aggiungendo un nodo alla lista di condivisioni fa in modo " "che il messaggio venga inviato, ma per ricevere, anche il nuovo nodo deve " "essere configurato per inviare i messaggi al primo.
  • Se il nome remoto " "della stanza è vuoto, è implicito che il nome della stanza remota sarà lo " "stesso.
  • Se il nome remoto è diverso, si deve configurare anche il nodo " "della stanza iniziale.
    \n" #: ../../static/t/room/edit/tab_feed.html:2 msgid "" "Retrieve messages from these remote POP3 accounts and store them in this " "room:" msgstr "" #: ../../static/t/room/edit/tab_feed.html:12 #, fuzzy msgid "Remote host" msgstr "Smart Host" #: ../../static/t/room/edit/tab_feed.html:15 #, fuzzy msgid "Keep messages on server?" msgstr "Nessun messaggio." #: ../../static/t/room/edit/tab_feed.html:16 #, fuzzy msgid "Interval" msgstr "Generale" #: ../../static/t/room/edit/tab_feed.html:31 msgid "Fetch the following RSS feeds and store them in this room:" msgstr "" #: ../../static/t/room/edit/tab_feed.html:43 msgid "Feed URL" msgstr "" #: ../../static/t/room/edit/tab_access.html:5 #, fuzzy msgid "" "The users listed below have access to this room. To remove a user from the " "access list, select the user name from the list and click 'Kick'." msgstr "" "Gli utenti mostrati sotto hanno accesso a questa stanza. Per rimuovere un " "utente dalla lista degli accessi, selezionalo e clicca 'Espelli'." #: ../../static/t/room/edit/tab_access.html:20 msgid "" "To grant another user access to this room, enter the user name in the box " "below and click 'Invite'." msgstr "" "Per permettere a un altro utente l'accesso a questa stanza, inserisci il suo " "nome utente e clicca 'Invita'." #: ../../static/t/room/edit/tab_access.html:26 msgid "Invite:" msgstr "Invita:" #: ../../static/t/room/edit/tab_access.html:35 #, fuzzy msgid "Users" msgstr "Utenti" #: ../../static/t/room/zapped_list.html:7 msgid "Zapped (forgotten) rooms" msgstr "Stanze zappate (dimenticate)" #: ../../static/t/room/zapped_list.html:10 #, fuzzy msgid "Click on any room to un-zap it and goto that room." msgstr "Clicca su una stanza per dezapparla ed entrarci.\n" #: ../../static/t/room/display_private.html:7 msgid "Go to a hidden room" msgstr "Vai a una stanza segreta" #: ../../static/t/room/display_private.html:8 #, fuzzy msgid "" "If you know the name of a hidden (guess-name) or passworded room, you can " "enter that room by typing its name below. Once you gain access to a private " "room, it will appear in your regular room listings so you don‘t have to keep " "returning here." msgstr "" "Se conosci il nome di una stanza nascosta (indovina il nome) o protetta da " "password, puoi digitarlo qui sotto per accedervi. Una volta che hai " "l'accesso a una stanza privata, comparirà nella tua lista di stanze, così " "non dovrai ripetere questo passaggio." #: ../../static/t/room/display_private.html:14 msgid "Enter room name:" msgstr "Inserisci il nome della stanza:" #: ../../static/t/room/display_private.html:21 msgid "Enter room password:" msgstr "Inserisci la password della stanza:" #: ../../static/t/room/create.html:11 #: ../../static/t/menu/advanced_roomcommands.html:6 msgid "Create a new room" msgstr "Crea una nuova stanza" #: ../../static/t/room/create.html:18 msgid "Name of room: " msgstr "Nome delle stanza: " #: ../../static/t/room/create.html:32 msgid "Default view for room: " msgstr "Vista di default della stanza: " #: ../../static/t/room/zap_this.html:3 msgid "Zap (forget/unsubscribe) the current room" msgstr "Zap (dimentica/cancella la tua sottoscrizione) questa stanza" #: ../../static/t/room/zap_this.html:6 #, fuzzy msgid "If you select this option," msgstr "Cancella o modifica questa stanza" #: ../../static/t/room/zap_this.html:8 #, fuzzy msgid "will disappear from your room list. Is this what you wish to do?" msgstr "" "Se selezioni questa opzione, %s scomparirà dalla tua lista delle " "stanze, vuoi farlo davvero?

    \n" #: ../../static/t/menu/your_info.html:2 msgid "Change your preferences and settings" msgstr "Modifica le tue preferenze e impostazioni" #: ../../static/t/menu/your_info.html:3 msgid "Update your contact information" msgstr "Aggiorna i tuoi dati personali" #: ../../static/t/menu/your_info.html:5 msgid "Enter your 'bio'" msgstr "Inserisci la tua biografia" #: ../../static/t/menu/your_info.html:6 msgid "Edit your online photo" msgstr "Modifica la tua foto on line" #: ../../static/t/menu/your_info.html:8 msgid "Edit your push email settings" msgstr "" #: ../../static/t/menu/your_info.html:9 #, fuzzy msgid "Manage your OpenIDs" msgstr "Il tuo OpenID" #: ../../static/t/menu/basic_commands.html:3 msgid "List known rooms" msgstr "Mostra le stanze conosciute" #: ../../static/t/menu/basic_commands.html:3 msgid "Where can I go from here?" msgstr "Dove posso andare da qui?" #: ../../static/t/menu/basic_commands.html:4 ../../static/t/navbar.html:168 msgid "Goto next room" msgstr "Vai alla Prossima Stanza" #: ../../static/t/menu/basic_commands.html:4 #, fuzzy msgid "...with unread messages" msgstr "... contenente messaggi non letti" #: ../../static/t/menu/basic_commands.html:5 msgid "Skip to next room" msgstr "Salta alla prossima stanza" #: ../../static/t/menu/basic_commands.html:5 msgid "(come back here later)" msgstr "(torna più tardi)" #: ../../static/t/menu/basic_commands.html:6 ../../static/t/navbar.html:5 msgid "Ungoto" msgstr "Stanza Precedente" #: ../../static/t/menu/basic_commands.html:6 #, fuzzy msgid "oops! Back to " msgstr "(oops! Torna a %s)" #: ../../static/t/menu/basic_commands.html:10 ../../static/t/navbar.html:13 msgid "Read new messages" msgstr "Leggi i nuovi messaggi" #: ../../static/t/menu/basic_commands.html:10 msgid "...in this room" msgstr "... in questa stanza" #: ../../static/t/menu/basic_commands.html:11 ../../static/t/navbar.html:19 msgid "Read all messages" msgstr "leggi tutti i messaggi" #: ../../static/t/menu/basic_commands.html:11 msgid "...old and new" msgstr "...vecchi e nuovo" #: ../../static/t/menu/basic_commands.html:12 ../../static/t/navbar.html:25 msgid "Enter a message" msgstr "Componi un messaggio" #: ../../static/t/menu/basic_commands.html:12 msgid "(post in this room)" msgstr "(scrivi in questa stanza)" #: ../../static/t/menu/basic_commands.html:13 msgid "File library" msgstr "" #: ../../static/t/menu/basic_commands.html:13 msgid "(List files available for download)" msgstr "" #: ../../static/t/menu/basic_commands.html:17 msgid "Summary page" msgstr "Sommario" #: ../../static/t/menu/basic_commands.html:17 msgid "Summary of my account" msgstr "Sommario del mio account" #: ../../static/t/menu/basic_commands.html:18 msgid "User list" msgstr "Utenti" #: ../../static/t/menu/basic_commands.html:18 msgid "(all registered users)" msgstr "(tutti gli utenti registrati)" #: ../../static/t/menu/basic_commands.html:19 msgid "Bye!" msgstr "Ciao!" #: ../../static/t/menu/advanced_roomcommands.html:3 msgid "Edit or delete this room" msgstr "Cancella o modifica questa stanza" #: ../../static/t/menu/advanced_roomcommands.html:5 msgid "Go to a 'hidden' room" msgstr "Entra in una stanza \"nascosta\"" #: ../../static/t/menu/advanced_roomcommands.html:7 #, fuzzy msgid "Zap (forget) this room" msgstr "Dimentica questa stanza (%s)" #: ../../static/t/menu/advanced_roomcommands.html:8 msgid "List all forgotten rooms" msgstr "Mostra tutte le stanze dimenticate" #: ../../static/t/navbar.html:34 msgid "View contacts" msgstr "Vista contatti" #: ../../static/t/navbar.html:40 msgid "Add new contact" msgstr "Aggiungi un nuovo contatto" #: ../../static/t/navbar.html:49 msgid "Day view" msgstr "Vista giornaliera" #: ../../static/t/navbar.html:55 msgid "Month view" msgstr "Vista mensile" #: ../../static/t/navbar.html:61 msgid "Add new event" msgstr "Aggiungi un nuovo evento" #: ../../static/t/navbar.html:70 msgid "Calendar list" msgstr "Lista dei Calendari" #: ../../static/t/navbar.html:79 msgid "View tasks" msgstr "Mostra le Attività" #: ../../static/t/navbar.html:85 msgid "Add new task" msgstr "Aggiungi una nuova Attività" #: ../../static/t/navbar.html:94 msgid "View notes" msgstr "Mostra le note" #: ../../static/t/navbar.html:101 msgid "Add new note" msgstr "Aggiungi una nuova nota" #: ../../static/t/navbar.html:110 msgid "Refresh message list" msgstr "" #: ../../static/t/navbar.html:122 msgid "Write mail" msgstr "Componi un messaggio" #: ../../static/t/navbar.html:132 msgid "Wiki home" msgstr "Home Page del Wiki" #: ../../static/t/navbar.html:139 msgid "Edit this page" msgstr "Modifica questa pagina" #: ../../static/t/navbar.html:145 msgid "History" msgstr "Storia" #: ../../static/t/navbar.html:154 #, fuzzy msgid "New blog post" msgstr "i nuovi post" #: ../../static/t/navbar.html:162 msgid "Skip this room" msgstr "Salta questa stanza" #: ../../static/t/msg_listview.html:18 msgid "Loading messages from server, please wait" msgstr "" #: ../../static/t/msg_listview.html:24 msgid "Open in new window" msgstr "Apri in una nuova finestra" #: ../../static/t/msg_listview.html:26 msgid "Copy" msgstr "Copia" #: ../../static/t/view_mailq/message.html:6 msgid "Originaly posted in: " msgstr "" #: ../../static/t/view_mailq/header.html:15 msgid "Refresh this page" msgstr "Ricarica questa pagina" #: ../../static/t/view_mailq/header.html:21 msgid "Message ID" msgstr "ID del messaggio" #: ../../static/t/view_mailq/header.html:23 msgid "Date/time submitted" msgstr "Ora/Data fornita" #: ../../static/t/view_mailq/header.html:25 #, fuzzy msgid "Next attempt" msgstr "Ultimo tentativo" #: ../../static/t/view_mailq/header.html:29 msgid "Recipients" msgstr "Destinatari" #: ../../static/t/view_mailq/footer_empty.html:4 msgid "The queue is empty." msgstr "La coda è vuota." #: ../../static/t/view_mailq/footer_empty.html:9 #: ../../static/t/view_mailq/footer.html:5 msgid "You do not have permission to view this resource." msgstr "Non hai il permesso di visualizzare questa risorsa." #: ../../static/t/get_logged_in.html:5 msgid "You must be logged in to access this page." msgstr "Devi essere registrato per accedere a questa pagina." #: ../../static/t/get_logged_in.html:9 #: ../../static/t/edit_message/attachments_pane.html:3 msgid "Close window" msgstr "Chiudi la finestra" #: ../../static/t/get_logged_in.html:55 msgid "Log in using a user name and password" msgstr "" #: ../../static/t/get_logged_in.html:60 ../../static/t/get_logged_in.html:75 msgid "Password:" msgstr "Password:" #: ../../static/t/get_logged_in.html:65 ../../static/t/get_logged_in.html:69 msgid "New user? Register now" msgstr "Nuovo utente? Registrati ora" #: ../../static/t/get_logged_in.html:70 msgid "" "enter the name and password you wish to use, and click "New User." " msgstr "" #: ../../static/t/get_logged_in.html:83 msgid "Log in using OpenID" msgstr "" #: ../../static/t/get_logged_in.html:85 msgid "OpenID URL:" msgstr "OpenID URL:" #: ../../static/t/get_logged_in.html:92 msgid "Log in using Google" msgstr "" #: ../../static/t/get_logged_in.html:97 #, fuzzy msgid "Log in using Yahoo" msgstr "Esegui nuovamente il Log in" #: ../../static/t/get_logged_in.html:102 msgid "Log in using AOL or AIM" msgstr "" #: ../../static/t/get_logged_in.html:104 msgid "Enter your AOL or AIM screen name:" msgstr "" #: ../../static/t/get_logged_in.html:115 msgid "Please wait" msgstr "" #: ../../static/t/summary/page.html:4 #, fuzzy msgid "Summary page for " msgstr "Pagina riassuntiva per %s" #: ../../static/t/summary/page.html:21 msgid "Messages" msgstr "Messaggi" #: ../../static/t/summary/page.html:39 msgid "Today on your calendar" msgstr "Oggi nel tuo calendario" #: ../../static/t/summary/page.html:51 #, fuzzy msgid "Who‘s online now" msgstr "Chi è online adesso?" #: ../../static/t/summary/page.html:60 msgid "About this server" msgstr "A proposito di questo server" #: ../../static/t/summary/page.html:63 msgid "You are connected to" msgstr "" #: ../../static/t/summary/page.html:64 #, fuzzy msgid "running" msgstr "Rifiniture" #: ../../static/t/summary/page.html:65 #, fuzzy msgid "with" msgstr "quinto" #: ../../static/t/summary/page.html:66 msgid "server build" msgstr "" #: ../../static/t/summary/page.html:67 #, fuzzy msgid "and located in" msgstr "e poi" #: ../../static/t/summary/page.html:68 #, fuzzy msgid "Your system administrator is" msgstr "Nome dell'amministratore di sistema" #: ../../static/t/edit_message/attachments_pane.html:16 msgid "Attach file" msgstr "Allega file" #: ../../static/t/edit_message/attachments_pane.html:21 msgid "Upload" msgstr "Carica" #: ../../static/t/edit_message/section_attach_select.html:4 #, fuzzy msgid "Remove" msgstr "(rimuovi)" #: ../../static/t/loggedinas.html:3 #, fuzzy msgid "Logged in as" msgstr "Ultimo Login" #: ../../static/t/loggedinas.html:6 #, fuzzy msgid "Not logged in." msgstr "Non autenticato" #~ msgid "A script by that name already exists." #~ msgstr "Esiste già uno script con quel nome." #~ msgid "" #~ "A new script has been created. Return to the script editing screen to " #~ "edit and activate it." #~ msgstr "" #~ "E' stato creato un nuovo script. Torna alla schermata di editing per " #~ "modificarlo e attivarlo." #~ msgid "Create" #~ msgstr "Crea" #~ msgid "Delete script" #~ msgstr "Cancella lo script" #~ msgid "Delete this script?" #~ msgstr "Cancellare questo script?" #~ msgid "Move rule up" #~ msgstr "Sposta la regola su" #~ msgid "Move rule down" #~ msgstr "Sposta la regola giù." #~ msgid "Delete rule" #~ msgstr "Cancella la regola" #~ msgid "Reset form" #~ msgstr "Cancella" #~ msgid "" #~ "You are connected to %s, running %s with %s, server build %s and located " #~ "in %s. Your system administrator is %s." #~ msgstr "" #~ "Sei connesso a %s, %s è in esecuzione con %s server build %s e " #~ "localizzato in %s. Il tuo amministratore di sistema è %s." #, fuzzy #~ msgid "Yes with users list" #~ msgstr "Visualizza le cartelle" #~ msgid "Room list" #~ msgstr "Lista delle stanze" #, fuzzy #~ msgid "uname" #~ msgstr "Nome del documento" #, fuzzy #~ msgid "text" #~ msgstr "successivo" #, fuzzy #~ msgid "name" #~ msgstr "Nome del documento" #, fuzzy #~ msgid "pname" #~ msgstr "Nome del documento" #, fuzzy #~ msgid "password" #~ msgstr "Password" #, fuzzy #~ msgid "pass" #~ msgstr "Attività" #, fuzzy #~ msgid "authbox" #~ msgstr "Autore" #, fuzzy #~ msgid "display: none" #~ msgstr "Nome da mostrare:" #~ msgid "Your password was not accepted." #~ msgstr "La tua password non è stata accettata." #~ msgid "See the" #~ msgstr "Guarda il" #~ msgid "Exit" #~ msgstr "Uscita" #~ msgid "Change name" #~ msgstr "Cambia nome" #~ msgid "Change CSS" #~ msgstr "Modifica lo Stile" #~ msgid "Create new floor" #~ msgstr "Crea un nuovo piano" #~ msgid "" #~ "You have one or more instant messages waiting, but the Citadel Instant " #~ "Messenger window failed to open. This is probably because you have a " #~ "popup blocker installed. Please configure your popup blocker to allow " #~ "popups from this site if you wish to receive instant messages." #~ msgstr "" #~ "Hai uno o più messaggi in coda che aspettano di essere letti, ma la " #~ "finestra per i Messaggi Istantanei di Citadel non può essere aperta. La " #~ "causa può essere un popup blocker installato nel tuo browser. Per favore, " #~ "se vuoi ricevere Messaggi Istantanei, configura il tuo popup blocker in " #~ "modo da permettere i popup da questo sito." #~ msgid "Change" #~ msgstr "Cambia" #, fuzzy #~ msgid "Add node?" #~ msgstr "Aggiungi un nodo" #, fuzzy #~ msgid "Minutes" #~ msgstr "Minuto:" #, fuzzy #~ msgid "active" #~ msgstr "Tentativo" #~ msgid "Send" #~ msgstr "Invia" #, fuzzy #~ msgid "Pictures in" #~ msgstr "solo immagini" #~ msgid "Edit configuration" #~ msgstr "Modifica la configurazione" #~ msgid "Edit address book entry" #~ msgstr "Modifica il contatto" #~ msgid "Delete user" #~ msgstr "Cancella l'utente" #~ msgid "Delete this user?" #~ msgstr "Cancellare questo utente?" #, fuzzy #~ msgid "Delete File" #~ msgstr "Cancella la regola" #~ msgid "Delete this message?" #~ msgstr "Cancellare questo messaggio?" #, fuzzy #~ msgid "Powered by Citadel" #~ msgstr "Mostra l'icona Potenziato da Citadel" #~ msgid "Go to your email inbox" #~ msgstr "Leggi la tua Posta in Arrivo" #~ msgid "Go to your personal calendar" #~ msgstr "Visualizza il tuo calendario personale" #~ msgid "Go to your personal address book" #~ msgstr "Vai ai tuoi contatti personali" #~ msgid "Go to your personal notes" #~ msgstr "Visualizza le tue Note personali" #~ msgid "Go to your personal task list" #~ msgstr "Visualizza le Attività da portare a termine" #, fuzzy #~ msgid "List all your accessible rooms" #~ msgstr "Mostra tutte le tue stanze accessibili" #~ msgid "See who is online right now" #~ msgstr "Mostra gli altri utenti collegati in questo momento" #~ msgid "" #~ "Advanced Options Menu: Advanced Room commands, Account Info, and Chat" #~ msgstr "" #~ "Menu di opzioni avnzate: Comandi avanzati di stanza, Informazioni " #~ "dell'utente e Chat" #~ msgid "Room and system administration functions" #~ msgstr "Funzioni di amministrazione delle stanze e di sistema" #~ msgid "Log off now?" #~ msgstr "Uscire adesso?" #, fuzzy #~ msgid "Delete this entry?" #~ msgstr "Cancello questa voce?" #, fuzzy #~ msgid "Delete this note?" #~ msgstr "Cancello questa voce?" #, fuzzy #~ msgid "Do you really want to kill this session?" #~ msgstr "Vuoi davvero terminare questa sessione?" #, fuzzy #~ msgid "Save changes?" #~ msgstr "Cambia i cambiamenti" #, fuzzy #~ msgid "%d new of %d messages%s" #~ msgstr "%d nuovi messaggi su %d totali" #~ msgid "" #~ "Leave all messages marked as unread, go to next room with unread messages" #~ msgstr "" #~ "Lascia tutti i messaggi marcati come non letti, passa alla stanza " #~ "successiva con messaggi non letti." #~ msgid "Mark all messages as read, go to next room with unread messages" #~ msgstr "" #~ "Marca tutti i messaggi come letti, vai alla prossima stanza con messaggi " #~ "non letti" #~ msgid "Are you sure you want to delete this room?" #~ msgstr "Sicuro di voler cancellare questa stanza?" #~ msgid "Unshare" #~ msgstr "Elimina condivisione" #~ msgid "Share" #~ msgstr "Condividi" #, fuzzy #~ msgid "List" #~ msgstr "Cognome" #~ msgid "Kick" #~ msgstr "Espelli" #~ msgid "Invite" #~ msgstr "Invita" #, fuzzy #~ msgid "User" #~ msgstr "Nuovo Utente" #~ msgid "Create new room" #~ msgstr "Crea una nuova stanza" #~ msgid "Go there" #~ msgstr "Entra nella stanza" #~ msgid "Zap this room" #~ msgstr "Zap questa stanza" #~ msgid "(nothing)" #~ msgstr "(nulla)" #~ msgid "unexpected end of message" #~ msgstr "Fine del messaggio inaspettata" #~ msgid "An error occurred while setting up the chat socket." #~ msgstr "" #~ "Si è verificato un errore durante la creazione della connessione per la " #~ "chat." #~ msgid "Now exiting chat mode." #~ msgstr "Uscita dalla modalità chat." #~ msgid "Help" #~ msgstr "Aiuto" #~ msgid "List users" #~ msgstr "Mostra gli utenti" #~ msgid "No messages here." #~ msgstr "Nessun messaggio." #, fuzzy #~ msgid "no more messages" #~ msgstr "Messaggio anonimo" #~ msgid "Email" #~ msgstr "Email" #~ msgid "Error retrieving RSS feed: couldn't find messages\n" #~ msgstr "" #~ "Errore nella ricezione del RSS: non riesco a trovare dei messaggi
    \n" #, fuzzy #~ msgid "%s from" #~ msgstr "da" #, fuzzy #~ msgid "%s in %s" #~ msgstr "solo immagini" #, fuzzy #~ msgid "" #~ "
    • Enter your OpenID URL and click "Log in".
    • Click here to " #~ "learn what OpenID is and how Citadel is using it.
    • Please log off " #~ "properly when finished.
    • You must use a browser that supports " #~ "frames and cookies.
    • Also keep in mind that if your " #~ "browser is configured to block pop-up windows, you will not be able to " #~ "receive any instant messages.
    " #~ msgstr "" #~ "
    • Se hai già un account su %s, fornisci il tuo nome " #~ "utente e la tua password e clicca su "Log in."
    • Se sei un " #~ "nuovo utente, fornisci il nome utente e la password che vorresti e " #~ "clicca su "Nuovo Utente."
    • Per favore, eseguire il logout in " #~ "maniera corretta prima di uscire.
    • Devi usare un Browser che supporti " #~ "i frames e i cookies.
    • Tieni anche a mente che se il " #~ "tuo browser è configurato per bloccare le finestre di pop up, non " #~ "riuscirai a ricevere nessun messaggio istantaneo.
    " #, fuzzy #~ msgid "" #~ "enter your user name and password and click "Log in."
  • If " #~ "you are a new user, enter the name and password you wish to use, and " #~ "click "New User."
  • Please log off properly when finished. " #~ "
  • You must use a browser that supports frames and cookies.
  • Also keep in mind that if your browser is configured to block pop-" #~ "up windows, you will not be able to receive any instant messages." #~ msgstr "" #~ "
    • Se hai già un account su %s, fornisci il tuo nome " #~ "utente e la tua password e clicca su "Log in."
    • Se sei un " #~ "nuovo utente, fornisci il nome utente e la password che vorresti e " #~ "clicca su "Nuovo Utente."
    • Per favore, eseguire il logout in " #~ "maniera corretta prima di uscire.
    • Devi usare un Browser che supporti " #~ "i frames e i cookies.
    • Tieni anche a mente che se il " #~ "tuo browser è configurato per bloccare le finestre di pop up, non " #~ "riuscirai a ricevere nessun messaggio istantaneo.
    " #~ msgid "Find out more about Citadel" #~ msgstr "Scopri di più su Citadel" #~ msgid "CITADEL" #~ msgstr "CITADEL" #~ msgid "Customize this menu" #~ msgstr "Personalizza questo menu" #~ msgid "Internet configuration" #~ msgstr "Configurazione internet" #~ msgid "of %d messages." #~ msgstr "di %d messaggi." #~ msgid " from " #~ msgstr "da" #~ msgid " in " #~ msgstr "in" #~ msgid "Edit node configuration for " #~ msgstr "Modifica la configurazione del nodo per" #~ msgid "" #~ "Postfix TCP " #~ "Dictionary Port (-1 to disable)" #~ msgstr "" #~ "Porta del dizionario " #~ "TCP di Postfix (-1 per disabilitare)" #~ msgid "ERROR: could not open template " #~ msgstr "ERRORE non riesco ad aprire il template" #~ msgid "" #~ "This message contains calendaring/scheduling information, but support " #~ "for calendars is not available on this particular system. Please ask " #~ "your system administrator to install a new version of the Citadel web " #~ "service with calendaring enabled.
    \n" #~ msgstr "" #~ "Questo messaggio contiene informazioni di organizzazione/" #~ "programmazione, ma in questo particolare sistema, il supporto per i " #~ "calendari non è disponibile. Per favore, chiedi al tuo " #~ "amministratore di sistema di installare una nuova versione del servizion " #~ "web di Citadel con il calendario abilitato.
    \n" #~ msgid "" #~ "Cannot display calendar item. You are seeing this error because your " #~ "WebCit service has not been installed with calendar support. Please " #~ "contact your system administrator.
    \n" #~ msgstr "" #~ "Non posso mostrare l'oggetto calendario. Stai vedendo questo messaggio " #~ "perchè il servizio WebCit non è stato installato col " #~ "supporto al calendario. Per favore, contatta il tuo amministratore di " #~ "sistema.
    \n" #~ msgid "" #~ "Cannot display to-do item. You are seeing this error because your " #~ "WebCit service has not been installed with calendar support. Please " #~ "contact your system administrator.
    \n" #~ msgstr "" #~ "Non posso mostrare l'oggetto cose da fare. Stai vedendo questo " #~ "messaggio perchè il servizio WebCit non è stato installato " #~ "col supporto al calendario. Per favore, contatta il tuo amministratore di " #~ "sistema.
    \n" #~ msgid "Day: " #~ msgstr "Giorno:" #~ msgid "Year: " #~ msgstr "Anno:" #~ msgid "The calendar view is not available." #~ msgstr "La vista calendario non è disponibile." #~ msgid "The tasks view is not available." #~ msgstr "La vista operazione non è disponibile." #~ msgid "Gateway domains" #~ msgstr "Domini del gateway" #~ msgid "(domains whose subdomains match Citadel hosts)" #~ msgstr "(domini i cui sottodomini coincidono con host Citadel)" #~ msgid "(This server does not support task lists)" #~ msgstr "(Questo server non supporta la lista delle operazioni)" #~ msgid "(This server does not support calendars)" #~ msgstr "(Questo server non supporta i calendari)" #~ msgid "" #~ "This room is not configured to allow self-service subscribe/" #~ "unsubscribe requests." #~ msgstr "" #~ "Questa stanza non è stata configurata per permettere la " #~ "sottoscrizione/cancellazione automatica degli utenti." #~ msgid "Click to enable." #~ msgstr "Clicca per abilitare." #~ msgid "Back to menu" #~ msgstr "Torna al menu" #~ msgid "Respond to meeting request" #~ msgstr "Rispondi alla richiesta di incontro" #~ msgid "Update your calendar with this RSVP" #~ msgstr "Aggiorna il tuo calendario con questo RSVP" #~ msgid "Public room" #~ msgstr "Stanza pubblica" #~ msgid "Private - guess name" #~ msgstr "Privato - indovina il nome" #~ msgid "Private - require password:" #~ msgstr "Privato - richiede la password" #~ msgid "localhost" #~ msgstr "localhost" #~ msgid "gatewaydomain" #~ msgstr "dominio del gateway" #~ msgid "rbl" #~ msgstr "rbl" #~ msgid "spamassassin" #~ msgstr "spamassassin" #~ msgid "[ close window ]" #~ msgstr "[ chiudi la finestra ]" webcit-8.24-dfsg.orig/po/webcit/he.po0000644000175000017500000025102712271477123017236 0ustar michaelmichael# Hebrew translation for citadel # Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 # This file is distributed under the same license as the citadel package. # FIRST AUTHOR , 2011. # msgid "" msgstr "" "Project-Id-Version: citadel\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-03-20 01:03-0400\n" "PO-Revision-Date: 2011-08-12 13:38+0000\n" "Last-Translator: igal \n" "Language-Team: Hebrew \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2012-08-01 04:34+0000\n" "X-Generator: Launchpad (build 15719)\n" "Language: he\n" #: ../../roomops.c:708 ../../roomops.c:1005 ../../sieve.c:364 msgid "Cancelled. Changes were not saved." msgstr "" #: ../../roomops.c:838 ../../sieve.c:417 msgid "Your changes have been saved." msgstr "" #: ../../roomops.c:881 #, c-format msgid "User '%s' kicked out of room '%s'." msgstr "" #: ../../roomops.c:898 #, c-format msgid "User '%s' invited to room '%s'." msgstr "" #: ../../roomops.c:927 msgid "Cancelled. No new room was created." msgstr "" #: ../../roomops.c:1187 msgid "Floor has been deleted." msgstr "" #: ../../roomops.c:1211 msgid "New floor has been created." msgstr "" #: ../../roomops.c:1290 msgid "Room list view" msgstr "" #: ../../roomops.c:1293 msgid "Show empty floors" msgstr "" #: ../../roomviews.c:50 msgid "Bulletin Board" msgstr "" #: ../../roomviews.c:51 msgid "Mail Folder" msgstr "" #: ../../roomviews.c:52 msgid "Address Book" msgstr "" #: ../../roomviews.c:53 ../../static/t/iconbar.html:24 #: ../../static/t/iconbar/edit.html:55 msgid "Calendar" msgstr "" #: ../../roomviews.c:54 msgid "Task List" msgstr "" #: ../../roomviews.c:55 msgid "Notes List" msgstr "" #: ../../roomviews.c:56 msgid "Wiki" msgstr "" #: ../../roomviews.c:57 msgid "Calendar List" msgstr "" #: ../../roomviews.c:58 msgid "Journal" msgstr "" #: ../../roomviews.c:59 msgid "Drafts" msgstr "" #: ../../roomviews.c:60 msgid "Blog" msgstr "" #: ../../tasks.c:93 msgid "Completed?" msgstr "" #: ../../tasks.c:95 msgid "Name of task" msgstr "" #: ../../tasks.c:97 msgid "Date due" msgstr "" #: ../../tasks.c:99 msgid "Category" msgstr "" #: ../../tasks.c:101 msgid "Show All" msgstr "" #: ../../tasks.c:223 msgid "Edit task" msgstr "" #: ../../tasks.c:242 ../../calendar.c:98 ../../calendar_view.c:298 #: ../../calendar_view.c:959 ../../calendar_view.c:1003 #: ../../calendar_view.c:1084 msgid "Summary:" msgstr "" #: ../../tasks.c:253 msgid "Start date:" msgstr "" #: ../../tasks.c:261 ../../tasks.c:291 msgid "No date" msgstr "" #: ../../tasks.c:265 ../../tasks.c:294 msgid "or" msgstr "" #: ../../tasks.c:279 ../../tasks.c:308 msgid "Time associated" msgstr "" #: ../../tasks.c:283 msgid "Due date:" msgstr "" #: ../../tasks.c:312 msgid "Completed:" msgstr "" #: ../../tasks.c:323 msgid "Category:" msgstr "" #: ../../tasks.c:333 ../../calendar.c:159 ../../static/t/files.html:12 msgid "Description:" msgstr "" #: ../../tasks.c:351 ../../event.c:764 msgid "Save" msgstr "" #: ../../tasks.c:352 ../../event.c:765 ../../static/t/aide/inet/section.html:5 #: ../../static/t/view_blog/comment.html:12 #: ../../static/t/view_blog/post.html:15 ../../static/t/view_message.html:32 #: ../../static/t/navbar.html:116 ../../static/t/msg_listview.html:27 msgid "Delete" msgstr "" #: ../../tasks.c:353 ../../vcard_edit.c:1216 ../../paging.c:66 #: ../../event.c:767 ../../sysmsgs.c:69 ../../who.c:200 ../../auth.c:812 #: ../../static/t/edit_message.html:135 ../../static/t/confirmlogoff.html:4 msgid "Cancel" msgstr "ביטול" #: ../../tasks.c:423 ../../calendar_view.c:1379 msgid "Untitled Task" msgstr "" #: ../../fmt_date.c:310 msgid "Time format" msgstr "" #: ../../listsub.c:54 ../../static/t/listsub/display.html:5 msgid "List subscription" msgstr "" #: ../../listsub.c:67 ../../static/t/listsub/display.html:9 msgid "List subscribe/unsubscribe" msgstr "" #: ../../listsub.c:87 ../../static/t/listsub/display.html:15 #: ../../static/t/listsub/display.html:34 msgid "Confirmation request sent" msgstr "" #: ../../listsub.c:89 #, c-format msgid "" "You are subscribing %s to the %s mailing list. The " "listserver has sent you an e-mail with one additional Web link for you to " "click on to confirm your subscription. This extra step is for your " "protection, as it prevents others from being able to subscribe you to lists " "without your consent.

    Please click on the link which is being e-" "mailed to you and your subscription will be confirmed.
    \n" msgstr "" #: ../../listsub.c:102 ../../static/t/listsub/display.html:24 msgid "Go back..." msgstr "" #: ../../listsub.c:253 ../../listsub.c:291 ../../listsub.c:327 #: ../../listsub.c:334 msgid "You need to specify the mailinglist to subscribe to." msgstr "" #: ../../listsub.c:260 ../../listsub.c:298 msgid "You need to specify the email address you'd like to subscribe with." msgstr "" #: ../../blogview_renderer.c:58 ../../blogview_renderer.c:74 #, c-format msgid "%d comments" msgstr "" #: ../../blogview_renderer.c:61 ../../blogview_renderer.c:77 msgid "permalink" msgstr "" #: ../../blogview_renderer.c:302 msgid "Newer posts" msgstr "" #: ../../blogview_renderer.c:311 msgid "Older posts" msgstr "" #: ../../useredit.c:629 msgid "" "An error occurred while trying to create or edit this address book entry." msgstr "ארעה שגיאה בעת ניסיון ליצור/לערוך את איש הקשר." #: ../../useredit.c:717 msgid "Changes were not saved." msgstr "שינויים לא נשמרו." #: ../../useredit.c:782 msgid "A new user has been created." msgstr "נוצר משתמש חדש." #: ../../useredit.c:786 msgid "" "You are attempting to create a new user from within Citadel while running in " "host based authentication mode. In this mode, you must create new users on " "the host system, not within Citadel." msgstr "" #: ../../bbsview_renderer.c:312 msgid "Go to page: " msgstr "" #: ../../bbsview_renderer.c:354 msgid "First" msgstr "" #: ../../bbsview_renderer.c:360 msgid "Last" msgstr "" #: ../../graphics.c:56 msgid "Graphics upload has been cancelled." msgstr "" #: ../../graphics.c:62 msgid "You didn't upload a file." msgstr "" #: ../../graphics.c:112 msgid "your photo" msgstr "" #: ../../graphics.c:119 msgid "the icon for this room" msgstr "" #: ../../graphics.c:127 msgid "the Greetingpicture for the login prompt" msgstr "" #: ../../graphics.c:135 msgid "the Logoff banner picture" msgstr "" #: ../../graphics.c:146 msgid "the icon for this floor" msgstr "" #: ../../calendar_tools.c:100 msgid "Hour: " msgstr "שעה: " #: ../../calendar_tools.c:120 msgid "Minute: " msgstr "דקה: " #: ../../calendar_tools.c:191 msgid "(status unknown)" msgstr "(סטטוס לא ידוע)" #: ../../calendar_tools.c:207 msgid "(needs action)" msgstr "(נדרשת פעולה)" #: ../../calendar_tools.c:210 msgid "(accepted)" msgstr "(התקבל)" #: ../../calendar_tools.c:213 msgid "(declined)" msgstr "(נדחה)" #: ../../calendar_tools.c:216 msgid "(tenative)" msgstr "(זמני)" #: ../../calendar_tools.c:219 msgid "(delegated)" msgstr "(הוסמך)" #: ../../calendar_tools.c:222 msgid "(completed)" msgstr "(הושלם)" #: ../../calendar_tools.c:225 msgid "(in process)" msgstr "(בתהליך)" #: ../../calendar_tools.c:228 msgid "(none)" msgstr "(אין)" #: ../../notes.c:343 msgid "Click on any note to edit it." msgstr "לעריכה הקליקו על ההודעה ." #: ../../vcard_edit.c:175 ../../vcard_edit.c:178 msgid "(no name)" msgstr "" #: ../../vcard_edit.c:443 msgid " (work)" msgstr "" #: ../../vcard_edit.c:445 msgid " (home)" msgstr "" #: ../../vcard_edit.c:447 msgid " (cell)" msgstr "" #: ../../vcard_edit.c:458 ../../vcard_edit.c:1120 msgid "Address:" msgstr "" #: ../../vcard_edit.c:526 msgid "Telephone:" msgstr "" #: ../../vcard_edit.c:531 msgid "E-mail:" msgstr "" #: ../../vcard_edit.c:779 msgid "This address book is empty." msgstr "" #: ../../vcard_edit.c:793 msgid "An internal error has occurred." msgstr "" #: ../../vcard_edit.c:944 msgid "Error" msgstr "" #: ../../vcard_edit.c:1048 msgid "Edit contact information" msgstr "" #: ../../vcard_edit.c:1068 msgid "Prefix" msgstr "" #: ../../vcard_edit.c:1068 msgid "First Name" msgstr "" #: ../../vcard_edit.c:1068 msgid "Middle Name" msgstr "" #: ../../vcard_edit.c:1068 msgid "Last Name" msgstr "" #: ../../vcard_edit.c:1068 msgid "Suffix" msgstr "" #: ../../vcard_edit.c:1089 msgid "Display name:" msgstr "" #: ../../vcard_edit.c:1096 msgid "Title:" msgstr "" #: ../../vcard_edit.c:1103 msgid "Organization:" msgstr "" #: ../../vcard_edit.c:1114 msgid "PO box:" msgstr "" #: ../../vcard_edit.c:1130 msgid "City:" msgstr "" #: ../../vcard_edit.c:1136 msgid "State:" msgstr "" #: ../../vcard_edit.c:1142 msgid "ZIP code:" msgstr "" #: ../../vcard_edit.c:1148 msgid "Country:" msgstr "" #: ../../vcard_edit.c:1158 msgid "Home telephone:" msgstr "" #: ../../vcard_edit.c:1164 msgid "Work telephone:" msgstr "" #: ../../vcard_edit.c:1170 msgid "Mobile telephone:" msgstr "" #: ../../vcard_edit.c:1176 msgid "Fax number:" msgstr "" #: ../../vcard_edit.c:1187 msgid "Primary Internet e-mail address" msgstr "" #: ../../vcard_edit.c:1194 msgid "Internet e-mail aliases" msgstr "" #: ../../vcard_edit.c:1215 ../../sysmsgs.c:67 msgid "Save changes" msgstr "" #: ../../vcard_edit.c:1261 msgid "Unable to enter the room to save your message" msgstr "" #: ../../vcard_edit.c:1265 msgid "Aborting." msgstr "" #: ../../vcard_edit.c:1297 ../../vcard_edit.c:1341 ../../auth.c:367 #: ../../auth.c:397 msgid "An error has occurred." msgstr "" #: ../../vcard_edit.c:1399 msgid "Could Not decode vcard photo\n" msgstr "" #: ../../preferences.c:880 msgid "Cancelled. No settings were changed." msgstr "בוטל. שום הגדרות לא שונו." #: ../../preferences.c:1092 msgid "Make this my start page" msgstr "הגדר זאת כדף הפתיחה שלי" #: ../../preferences.c:1130 msgid "This isn't allowed to become the start page." msgstr "זה אינו רשאי להפוך לדף פתיחה." #: ../../preferences.c:1132 msgid "You no longer have a start page selected." msgstr "אין לך דף פתיחה נבחר." #: ../../preferences.c:1182 msgid "Prefered startpage" msgstr "דף פתיחה מועדף" #: ../../calendar.c:76 msgid "Meeting invitation" msgstr "" #: ../../calendar.c:79 msgid "Attendee's reply to your invitation" msgstr "" #: ../../calendar.c:82 msgid "Published event" msgstr "" #: ../../calendar.c:85 msgid "This is an unknown type of calendar item." msgstr "" #: ../../calendar.c:107 ../../calendar_view.c:306 ../../calendar_view.c:964 #: ../../calendar_view.c:1008 ../../calendar_view.c:1089 msgid "Location:" msgstr "" #: ../../calendar.c:132 ../../calendar_view.c:351 ../../calendar_view.c:970 msgid "Date:" msgstr "" #: ../../calendar.c:139 ../../calendar_view.c:373 ../../calendar_view.c:1013 #: ../../calendar_view.c:1099 msgid "Starting date/time:" msgstr "" #: ../../calendar.c:150 ../../calendar_view.c:376 ../../calendar_view.c:1015 #: ../../calendar_view.c:1101 msgid "Ending date/time:" msgstr "" #: ../../calendar.c:168 ../../event.c:90 msgid "Recurrence" msgstr "" #: ../../calendar.c:169 ../../event.c:505 msgid "This is a recurring event" msgstr "" #: ../../calendar.c:178 msgid "Attendee:" msgstr "" #: ../../calendar.c:218 #, c-format msgid "This is an update of '%s' which is already in your calendar." msgstr "" #: ../../calendar.c:222 #, c-format msgid "This event would conflict with '%s' which is already in your calendar." msgstr "" #: ../../calendar.c:227 msgid "Update:" msgstr "" #: ../../calendar.c:228 msgid "CONFLICT:" msgstr "" #: ../../calendar.c:251 msgid "How would you like to respond to this invitation?" msgstr "" #: ../../calendar.c:252 msgid "Accept" msgstr "" #: ../../calendar.c:253 msgid "Tentative" msgstr "" #: ../../calendar.c:254 msgid "Decline" msgstr "" #: ../../calendar.c:271 msgid "Click Update to accept this reply and update your calendar." msgstr "" #: ../../calendar.c:272 msgid "Update" msgstr "" #: ../../calendar.c:273 msgid "Ignore" msgstr "" #: ../../calendar.c:295 msgid "There was an error parsing this calendar item." msgstr "" #: ../../calendar.c:328 msgid "" "You have accepted this meeting invitation. It has been entered into your " "calendar." msgstr "" #: ../../calendar.c:332 msgid "" "You have tentatively accepted this meeting invitation. It has been " "'pencilled in' to your calendar." msgstr "" #: ../../calendar.c:336 msgid "" "You have declined this meeting invitation. It has not been entered " "into your calendar." msgstr "" #: ../../calendar.c:341 msgid "A reply has been sent to the meeting organizer." msgstr "" #. / Translators: RSVP aka Répondez s'il-vous-plaît Is the term #. / that the recipient of an ical-invitation should please #. / answer this request. #: ../../calendar.c:376 msgid "Your calendar has been updated to reflect this RSVP." msgstr "" #: ../../calendar.c:378 msgid "" "You have chosen to ignore this RSVP. Your calendar has not been " "updated." msgstr "" #: ../../calendar.c:932 msgid "Calendar day view begins at:" msgstr "" #: ../../calendar.c:933 msgid "Calendar day view ends at:" msgstr "" #: ../../calendar.c:934 msgid "Week starts on:" msgstr "" #: ../../paging.c:35 msgid "Send instant message" msgstr "" #: ../../paging.c:43 msgid "Send an instant message to: " msgstr "" #: ../../paging.c:57 msgid "Enter message text:" msgstr "" #: ../../paging.c:65 ../../static/t/edit_message.html:109 msgid "Send message" msgstr "" #: ../../paging.c:84 msgid "Message was not sent." msgstr "" #: ../../paging.c:95 msgid "Message has been sent to " msgstr "" #: ../../iconbar.c:328 msgid "Iconbar Setting" msgstr "עריכת סרגל סמלים" #. #. * Set to 'unknown' right from the beginning. Unless we learn #. * something else, that's what we'll go with. #. #: ../../availability.c:148 msgid "availability unknown" msgstr "" #: ../../availability.c:169 msgid "free" msgstr "" #: ../../availability.c:179 msgid "BUSY" msgstr "" #: ../../serv_func.c:193 msgid "" "This server is already serving its maximum number of users and cannot accept " "any additional logins at this time. Please try again later or contact your " "system administrator." msgstr "" #: ../../serv_func.c:198 ../../serv_func.c:227 msgid "Received unexpected answer from Citadel server; bailing out." msgstr "" #: ../../serv_func.c:236 #, c-format msgid "" "You are connected to a Citadel server running Citadel %d.%02d. \n" "In order to run this version of WebCit you must also have Citadel %d.%02d or " "newer.\n" "\n" "\n" msgstr "" #: ../../event.c:70 msgid "seconds" msgstr "" #: ../../event.c:71 msgid "minutes" msgstr "" #: ../../event.c:72 msgid "hours" msgstr "" #: ../../event.c:73 msgid "days" msgstr "" #: ../../event.c:74 msgid "weeks" msgstr "" #: ../../event.c:75 msgid "months" msgstr "" #: ../../event.c:76 msgid "years" msgstr "" #: ../../event.c:77 msgid "never" msgstr "" #: ../../event.c:81 msgid "first" msgstr "" #: ../../event.c:82 msgid "second" msgstr "" #: ../../event.c:83 msgid "third" msgstr "" #: ../../event.c:84 msgid "fourth" msgstr "" #: ../../event.c:85 msgid "fifth" msgstr "" #: ../../event.c:88 msgid "Event" msgstr "" #: ../../event.c:89 ../../event.c:437 ../../event.c:449 msgid "Attendees" msgstr "" #: ../../event.c:167 msgid "Add or edit an event" msgstr "" #: ../../event.c:206 ../../static/t/iconbar.html:13 #: ../../static/t/iconbar/edit.html:29 msgid "Summary" msgstr "" #: ../../event.c:217 msgid "Location" msgstr "" #: ../../event.c:228 ../../calendar_view.c:760 msgid "Start" msgstr "" #: ../../event.c:271 ../../calendar_view.c:957 ../../calendar_view.c:986 msgid "All day event" msgstr "" #: ../../event.c:277 ../../calendar_view.c:761 msgid "End" msgstr "" #: ../../event.c:327 ../../static/t/iconbar.html:34 #: ../../static/t/iconbar/edit.html:49 msgid "Notes" msgstr "" #: ../../event.c:369 msgid "Organizer" msgstr "" #: ../../event.c:374 msgid "(you are the organizer)" msgstr "" #: ../../event.c:392 msgid "Show time as:" msgstr "" #: ../../event.c:415 msgid "Free" msgstr "" #: ../../event.c:423 msgid "Busy" msgstr "" #: ../../event.c:440 msgid "(One per line)" msgstr "" #: ../../event.c:450 ../../static/t/edit_message.html:143 #: ../../static/t/iconbar.html:29 ../../static/t/iconbar/edit.html:42 msgid "Contacts" msgstr "" #: ../../event.c:513 msgid "Recurrence rule" msgstr "" #: ../../event.c:517 msgid "Repeats every" msgstr "" #. begin 'weekday_selector' div #: ../../event.c:535 msgid "on these weekdays:" msgstr "" #: ../../event.c:593 #, c-format msgid "on day %s%d%s of the month" msgstr "" #: ../../event.c:602 ../../event.c:664 msgid "on the " msgstr "" #: ../../event.c:626 msgid "of the month" msgstr "" #: ../../event.c:655 msgid "every " msgstr "" #: ../../event.c:656 msgid "year on this date" msgstr "" #: ../../event.c:688 ../../static/t/msg_listselector_bottom.html:7 #: ../../static/t/msg_listselector_top.html:7 msgid "of" msgstr "" #: ../../event.c:712 msgid "Recurrence range" msgstr "" #: ../../event.c:720 msgid "No ending date" msgstr "" #: ../../event.c:727 msgid "Repeat this event" msgstr "" #: ../../event.c:730 msgid "times" msgstr "" #: ../../event.c:738 msgid "Repeat this event until " msgstr "" #: ../../event.c:766 msgid "Check attendee availability" msgstr "" #: ../../event.c:858 ../../calendar_view.c:272 ../../calendar_view.c:468 #: ../../calendar_view.c:937 msgid "Untitled Event" msgstr "" #: ../../sysmsgs.c:52 #, c-format msgid "Edit %s" msgstr "" #: ../../sysmsgs.c:55 #, c-format msgid "" "Enter %s below. Text is formatted to the reader's browser. A newline is " "forced by preceding the next line by a blank." msgstr "" #: ../../sysmsgs.c:89 #, c-format msgid "Cancelled. %s was not saved." msgstr "" #: ../../sysmsgs.c:109 msgid " has been saved." msgstr "" #: ../../sysmsgs.c:116 ../../sysmsgs.c:117 msgid "Room info" msgstr "" #: ../../sysmsgs.c:122 ../../sysmsgs.c:124 msgid "Your bio" msgstr "" #: ../../calendar_view.c:297 ../../calendar_view.c:958 #: ../../calendar_view.c:1002 ../../calendar_view.c:1083 #: ../../static/t/sieve/display_one.html:20 msgid "From" msgstr "" #: ../../calendar_view.c:355 ../../calendar_view.c:974 msgid "Starting date:" msgstr "" #: ../../calendar_view.c:361 ../../calendar_view.c:976 msgid "Ending date:" msgstr "" #: ../../calendar_view.c:369 ../../calendar_view.c:1095 msgid "Date/time:" msgstr "" #: ../../calendar_view.c:386 ../../calendar_view.c:980 #: ../../calendar_view.c:1018 ../../calendar_view.c:1105 #: ../../static/t/room/edit/tab_share.html:32 msgid "Notes:" msgstr "" #: ../../calendar_view.c:585 ../../calendar_view.c:721 msgid "previous" msgstr "" #: ../../calendar_view.c:597 ../../calendar_view.c:733 #: ../../calendar_view.c:1308 msgid "next" msgstr "" #: ../../calendar_view.c:756 msgid "Week" msgstr "" #: ../../calendar_view.c:758 msgid "Hours" msgstr "" #: ../../calendar_view.c:759 ../../static/t/sieve/display_one.html:22 #: ../../static/t/msg_listview.html:9 msgid "Subject" msgstr "" #: ../../calendar_view.c:1001 ../../calendar_view.c:1024 msgid "Ongoing event" msgstr "" #: ../../messages.c:70 msgid "ERROR:" msgstr "" #: ../../messages.c:88 msgid "Empty message" msgstr "" #: ../../messages.c:1010 msgid "Cancelled. Message was not posted." msgstr "" #: ../../messages.c:1013 msgid "Automatically cancelled because you have already saved this message." msgstr "" #: ../../messages.c:1037 msgid "Saved to Drafts failed: " msgstr "" #: ../../messages.c:1102 msgid "Refusing to post empty message.\n" msgstr "" #: ../../messages.c:1128 msgid "Message has been saved to Drafts.\n" msgstr "" #: ../../messages.c:1137 msgid "Message has been sent.\n" msgstr "" #: ../../messages.c:1140 msgid "Message has been posted.\n" msgstr "" #: ../../messages.c:1679 msgid "The message was not moved." msgstr "" #: ../../messages.c:1719 #, c-format msgid "An error occurred while retrieving this part: %s/%s\n" msgstr "" #: ../../messages.c:1796 #, c-format msgid "An error occurred while retrieving this part: %s\n" msgstr "" #: ../../messages.c:1956 msgid "Attach signature to email messages?" msgstr "" #: ../../messages.c:1959 msgid "Use this signature:" msgstr "" #: ../../messages.c:1961 msgid "Default character set for email headers:" msgstr "" #: ../../messages.c:1964 msgid "Preferred email address" msgstr "" #: ../../messages.c:1966 msgid "Preferred display name for email messages" msgstr "" #: ../../messages.c:1970 msgid "Preferred display name for bulletin board posts" msgstr "" #: ../../messages.c:1973 msgid "Mailbox view mode" msgstr "" #: ../../inetconf.c:110 ../../inetconf.c:119 ../../inetconf.c:133 #: ../../inetconf.c:159 ../../netconf.c:156 ../../netconf.c:183 #: ../../netconf.c:191 ../../netconf.c:239 ../../netconf.c:247 msgid "Invalid Parameter" msgstr "" #: ../../inetconf.c:126 msgid " has been deleted." msgstr "" #. added status message #: ../../inetconf.c:144 msgid " added." msgstr "" #: ../../who.c:154 msgid "Edit your session display" msgstr "" #: ../../who.c:158 msgid "" "This screen allows you to change the way your session appears in the 'Who is " "online' listing. To turn off any 'fake' name you've previously set, simply " "click the appropriate 'change' button without typing anything in the " "corresponding box. " msgstr "" #: ../../who.c:171 msgid "Room name:" msgstr "שם החדר:" #: ../../who.c:176 msgid "Change room name" msgstr "שנה את שם החדר" #: ../../who.c:180 msgid "Host name:" msgstr "שם המארח:" #: ../../who.c:185 msgid "Change host name" msgstr "שנה את שם המארח" #: ../../who.c:190 ../../static/t/aide/edituser/detailview.html:20 #: ../../static/t/openid_manual_create.html:9 #: ../../static/t/get_logged_in.html:57 ../../static/t/get_logged_in.html:72 msgid "User name:" msgstr "שם המשתמש" #: ../../who.c:195 msgid "Change user name" msgstr "שנה את שם המשתמש" #: ../../siteconfig.c:46 ../../siteconfig.c:64 ../../roomlist.c:44 #: ../../roomlist.c:394 ../../static/t/room/edit/tab_expire.html:72 #: ../../static/t/room/edit/tab_config.html:149 #: ../../static/t/room/edit/tab_access.html:42 msgid "Higher access is required to access this function." msgstr "" #: ../../siteconfig.c:256 msgid "WARNING: Failed to parse Server Config; do you run a to new citserver?" msgstr "" #: ../../siteconfig.c:319 msgid "Your system configuration has been updated." msgstr "" #: ../../wiki.c:69 ../../wiki.c:162 ../../wiki.c:282 #, c-format msgid "There is no room called '%s'." msgstr "לא קיים חדר בשם '%s'." #: ../../wiki.c:76 #, c-format msgid "'%s' is not a Wiki room." msgstr "'%s' אינו חדר Wiki." #: ../../wiki.c:110 #, c-format msgid "There is no page called '%s' here." msgstr "לא קיים כאן חדר בשם '%s'." #: ../../wiki.c:112 msgid "" "Select the 'Edit this page' link in the room banner if you would like to " "create this page." msgstr "בחרו בקישור ' ערוך דף זה' בכרזת החדר אם ברצונכם ליצור דף זה." #: ../../wiki.c:181 ../../static/t/msg_listview.html:11 msgid "Date" msgstr "תאריך" #: ../../wiki.c:182 msgid "Author" msgstr "מחבר" #: ../../wiki.c:209 ../../wiki.c:218 msgid "(show)" msgstr "(הראה)" #: ../../wiki.c:211 ../../static/t/navbar.html:145 msgid "Current version" msgstr "גירסה נוכחית" #: ../../wiki.c:223 msgid "(revert)" msgstr "(חזור)" #: ../../wiki.c:300 msgid "Page title" msgstr "כותרת הדף" #: ../../webcit.c:316 msgid "Authorization Required" msgstr "" #: ../../webcit.c:324 #, c-format msgid "" "The resource you requested requires a valid username and password. You could " "not be logged in: %s\n" msgstr "" #: ../../webcit.c:647 ../../auth.c:526 msgid "" "This program was unable to connect or stay connected to the Citadel server. " "Please report this problem to your system administrator." msgstr "" #: ../../webcit.c:654 ../../auth.c:532 msgid "Read More..." msgstr "" #: ../../smtpqueue.c:134 ../../static/t/aide/ignetconf/section.html:5 #: ../../static/t/view_mailq/message.html:2 msgid "(Delete)" msgstr "" #: ../../smtpqueue.c:334 msgid "First Attempt pending" msgstr "" #: ../../roomlist.c:99 msgid "My Folders" msgstr "" #: ../../downloads.c:289 #, c-format msgid "An error occurred while retrieving this file: %s\n" msgstr "" #: ../../roomtokens.c:572 msgid "file" msgstr "" #: ../../roomtokens.c:574 msgid "files" msgstr "" #: ../../summary.c:128 msgid "(None)" msgstr "" #: ../../summary.c:184 msgid "(Nothing)" msgstr "" #: ../../msg_renderers.c:579 ../../static/t/who/bio.html:15 msgid "edit" msgstr "" #: ../../msg_renderers.c:1119 msgid "I don't know how to display " msgstr "" #: ../../msg_renderers.c:1353 msgid "(no subject)" msgstr "" #: ../../addressbook_popup.c:186 msgid "Add" msgstr "" #. an erased user #: ../../auth.c:30 ../../static/t/aide/edituser/detailview.html:43 #: ../../static/t/aide/siteconfig/tab_access.html:40 #: ../../static/t/aide/siteconfig/tab_access.html:51 msgid "Deleted" msgstr "" #. a new user #: ../../auth.c:33 ../../static/t/aide/edituser/detailview.html:44 #: ../../static/t/aide/siteconfig/tab_access.html:41 #: ../../static/t/aide/siteconfig/tab_access.html:52 #: ../../static/t/get_logged_in.html:79 msgid "New User" msgstr "" #. a trouble maker #: ../../auth.c:36 ../../static/t/aide/edituser/detailview.html:45 #: ../../static/t/aide/siteconfig/tab_access.html:42 #: ../../static/t/aide/siteconfig/tab_access.html:53 msgid "Problem User" msgstr "" #. user with normal privileges #: ../../auth.c:39 ../../static/t/aide/edituser/detailview.html:46 #: ../../static/t/aide/siteconfig/tab_access.html:43 #: ../../static/t/aide/siteconfig/tab_access.html:54 msgid "Local User" msgstr "" #. a user that may access network resources #: ../../auth.c:42 ../../static/t/aide/edituser/detailview.html:47 #: ../../static/t/aide/siteconfig/tab_access.html:44 #: ../../static/t/aide/siteconfig/tab_access.html:55 msgid "Network User" msgstr "" #. a moderator #: ../../auth.c:45 ../../static/t/aide/edituser/detailview.html:48 #: ../../static/t/aide/siteconfig/tab_access.html:45 #: ../../static/t/aide/siteconfig/tab_access.html:56 msgid "Preferred User" msgstr "" #. chief #: ../../auth.c:48 ../../static/t/aide/edituser/detailview.html:49 #: ../../static/t/aide/siteconfig/tab_access.html:46 #: ../../static/t/aide/siteconfig/tab_access.html:57 msgid "Admin" msgstr "" #: ../../auth.c:513 ../../static/t/iconbar.html:80 #: ../../static/t/confirmlogoff.html:3 #: ../../static/t/menu/basic_commands.html:19 msgid "Log off" msgstr "" #: ../../auth.c:537 msgid "Log in again" msgstr "" #: ../../auth.c:585 ../../static/t/aide/usermanagement.html:3 msgid "Validate new users" msgstr "" #: ../../auth.c:605 msgid "No users require validation at this time." msgstr "" #: ../../auth.c:655 msgid "very weak" msgstr "" #: ../../auth.c:658 msgid "weak" msgstr "" #: ../../auth.c:661 msgid "ok" msgstr "" #: ../../auth.c:665 msgid "strong" msgstr "" #: ../../auth.c:683 #, c-format msgid "Current access level: %d (%s)\n" msgstr "" #: ../../auth.c:691 msgid "Select access level for this user:" msgstr "" #: ../../auth.c:776 ../../static/t/menu/your_info.html:4 msgid "Change your password" msgstr "" #: ../../auth.c:800 msgid "Enter new password:" msgstr "" #: ../../auth.c:804 msgid "Enter it again to confirm:" msgstr "" #: ../../auth.c:810 msgid "Change password" msgstr "" #: ../../auth.c:830 msgid "Cancelled. Password was not changed." msgstr "" #: ../../auth.c:839 msgid "They don't match. Password was not changed." msgstr "" #: ../../auth.c:845 msgid "Blank passwords are not allowed." msgstr "" #: ../../openid.c:34 msgid "Manage Account/OpenID Associations" msgstr "" #: ../../openid.c:52 msgid "Do you really want to delete this OpenID?" msgstr "האם ברצונך למחוק את הזהות הפתוחה ?" #: ../../openid.c:53 msgid "(delete)" msgstr "(מחיקה)" #: ../../openid.c:61 msgid "Add an OpenID: " msgstr "הוספת זהות פתוחה: " #: ../../openid.c:64 msgid "Attach" msgstr "צרף" #: ../../openid.c:68 #, c-format msgid "%s does not permit authentication via OpenID." msgstr "%s אינו מרשה אימות דרך זהות פתוחה." #: ../../html2html.c:136 #, c-format msgid "realloc() error! couldn't get %d bytes: %s" msgstr "" #: ../../static/t/viewomatic.html:4 msgid "View as:" msgstr "" #: ../../static/t/sieve/list.html:32 ../../static/t/sieve/none.html:4 #: ../../static/t/menu/your_info.html:7 msgid "View/edit server-side mail filters" msgstr "" #: ../../static/t/sieve/list.html:41 msgid "When new mail arrives: " msgstr "" #: ../../static/t/sieve/list.html:43 msgid "Leave it in my inbox without filtering" msgstr "" #: ../../static/t/sieve/list.html:44 msgid "Filter it according to rules selected below" msgstr "" #: ../../static/t/sieve/list.html:45 msgid "Filter it through a manually edited script (advanced users only)" msgstr "" #: ../../static/t/sieve/list.html:52 msgid "Your incoming mail will not be filtered through any scripts." msgstr "" #: ../../static/t/sieve/list.html:64 msgid "Add rule" msgstr "" #: ../../static/t/sieve/list.html:71 msgid "The currently active script is: " msgstr "" #: ../../static/t/sieve/list.html:76 ../../static/t/sieve/add.html:3 msgid "Add or delete scripts" msgstr "" #: ../../static/t/sieve/display_one.html:16 msgid "If" msgstr "" #: ../../static/t/sieve/display_one.html:21 msgid "To or Cc" msgstr "" #: ../../static/t/sieve/display_one.html:23 msgid "Reply-to" msgstr "" #: ../../static/t/sieve/display_one.html:24 #: ../../static/t/msg_listview.html:10 #: ../../static/t/view_mailq/header.html:27 msgid "Sender" msgstr "" #: ../../static/t/sieve/display_one.html:25 msgid "Resent-From" msgstr "" #: ../../static/t/sieve/display_one.html:26 msgid "Resent-To" msgstr "" #: ../../static/t/sieve/display_one.html:27 msgid "Envelope From" msgstr "" #: ../../static/t/sieve/display_one.html:28 msgid "Envelope To" msgstr "" #: ../../static/t/sieve/display_one.html:29 msgid "X-Mailer" msgstr "" #: ../../static/t/sieve/display_one.html:30 msgid "X-Spam-Flag" msgstr "" #: ../../static/t/sieve/display_one.html:31 msgid "X-Spam-Status" msgstr "" #: ../../static/t/sieve/display_one.html:32 msgid "List-ID" msgstr "" #: ../../static/t/sieve/display_one.html:33 msgid "Message size" msgstr "" #: ../../static/t/sieve/display_one.html:34 #: ../../static/t/select_messageindex_all.html:1 msgid "All" msgstr "" #: ../../static/t/sieve/display_one.html:41 msgid "contains" msgstr "" #: ../../static/t/sieve/display_one.html:42 msgid "does not contain" msgstr "" #: ../../static/t/sieve/display_one.html:43 msgid "is" msgstr "" #: ../../static/t/sieve/display_one.html:44 msgid "is not" msgstr "" #: ../../static/t/sieve/display_one.html:45 msgid "matches" msgstr "" #: ../../static/t/sieve/display_one.html:46 msgid "does not match" msgstr "" #: ../../static/t/sieve/display_one.html:52 msgid "(All messages)" msgstr "" #: ../../static/t/sieve/display_one.html:56 msgid "is larger than" msgstr "" #: ../../static/t/sieve/display_one.html:57 msgid "is smaller than" msgstr "" #: ../../static/t/sieve/display_one.html:59 msgid "bytes" msgstr "" #: ../../static/t/sieve/display_one.html:65 msgid "Keep" msgstr "" #: ../../static/t/sieve/display_one.html:66 msgid "Discard silently" msgstr "" #: ../../static/t/sieve/display_one.html:67 msgid "Reject" msgstr "" #: ../../static/t/sieve/display_one.html:68 msgid "Move message to" msgstr "" #: ../../static/t/sieve/display_one.html:69 msgid "Forward to" msgstr "" #: ../../static/t/sieve/display_one.html:70 msgid "Vacation" msgstr "" #: ../../static/t/sieve/display_one.html:82 msgid "Message:" msgstr "" #: ../../static/t/sieve/display_one.html:90 msgid "and then" msgstr "" #: ../../static/t/sieve/display_one.html:93 msgid "continue processing" msgstr "" #: ../../static/t/sieve/display_one.html:94 msgid "stop" msgstr "" #: ../../static/t/sieve/none.html:9 msgid "" "This installation of Citadel was built without support for server-side mail " "filtering.
    Please contact your system administrator if you require this " "feature.
    " msgstr "" #: ../../static/t/sieve/add.html:9 msgid "Add a new script" msgstr "" #: ../../static/t/sieve/add.html:10 msgid "" "To create a new script, enter the desired script name in the box below and " "click 'Create'." msgstr "" #: ../../static/t/sieve/add.html:14 msgid "Script name: " msgstr "" #: ../../static/t/sieve/add.html:18 msgid "Edit scripts" msgstr "" #: ../../static/t/sieve/add.html:20 msgid "Return to the script editing screen" msgstr "" #: ../../static/t/sieve/add.html:23 msgid "Delete scripts" msgstr "" #: ../../static/t/sieve/add.html:24 msgid "" "To delete an existing script, select the script name from the list and click " "'Delete'." msgstr "" #: ../../static/t/msg/confirm_move.html:4 msgid "Confirm move of message" msgstr "" #: ../../static/t/msg/confirm_move.html:12 msgid "Move this message to:" msgstr "" #: ../../static/t/login.html:5 msgid "powered by" msgstr "" #: ../../static/t/login.html:15 ../../static/t/iconbar.html:88 #: ../../static/t/get_logged_in.html:64 ../../static/t/get_logged_in.html:88 #: ../../static/t/get_logged_in.html:93 ../../static/t/get_logged_in.html:98 #: ../../static/t/get_logged_in.html:107 msgid "Log in" msgstr "" #: ../../static/t/trailing.html:14 msgid "" "WARNING: You have JavaScript disabled in your web browser. Many functions " "of this system will not work properly." msgstr "" #: ../../static/t/view_submessage.html:4 #: ../../static/t/view_message/replyquote.html:3 #: ../../static/t/view_message/replyquote.html:7 #: ../../static/t/view_message/print.html:8 ../../static/t/view_message.html:7 msgid "from " msgstr "" #: ../../static/t/searchomatic.html:4 msgid "Search: " msgstr "" #: ../../static/t/listsub/display.html:16 msgid "You are subscribing " msgstr "" #: ../../static/t/listsub/display.html:17 msgid " to the " msgstr "" #: ../../static/t/listsub/display.html:18 msgid " mailing list." msgstr "" #: ../../static/t/listsub/display.html:19 msgid "" "The listserver has sent you an e-mail with one additional Web link for you " "to click on to confirm your subscription." msgstr "" #: ../../static/t/listsub/display.html:20 msgid "" "This extra step is for your protection, as it prevents others from being " "able to subscribe you to lists without your consent." msgstr "" #: ../../static/t/listsub/display.html:22 msgid "" "Please click on the link which is being e-mailed to you and your " "subscription will be confirmed." msgstr "" #: ../../static/t/listsub/display.html:27 #: ../../static/t/listsub/display.html:47 msgid "ERROR" msgstr "" #: ../../static/t/listsub/display.html:35 msgid "You are unsubscribing" msgstr "" #: ../../static/t/listsub/display.html:37 msgid "from the" msgstr "" #: ../../static/t/listsub/display.html:39 msgid "mailing list." msgstr "" #: ../../static/t/listsub/display.html:40 msgid "" "The listserver has sent you an e-mail with one additional Web link for you " "to click on to confirm your unsubscription." msgstr "" #: ../../static/t/listsub/display.html:41 msgid "" "This extra step is for your protection, as it prevents others from being " "able to unsubscribe you from lists without your consent." msgstr "" #: ../../static/t/listsub/display.html:43 msgid "" "Please click on the link which is being e-mailed to you and your " "unsubscription will be confirmed." msgstr "" #: ../../static/t/listsub/display.html:44 msgid "Back..." msgstr "" #: ../../static/t/listsub/display.html:54 msgid "Confirmation successful!" msgstr "" #: ../../static/t/listsub/display.html:56 msgid "Confirmation failed." msgstr "" #: ../../static/t/listsub/display.html:57 msgid "This could mean one of two things:" msgstr "" #: ../../static/t/listsub/display.html:59 msgid "" "You waited too long to confirm your subscribe/unsubscribe request (the " "confirmation link is only valid for three days)" msgstr "" #: ../../static/t/listsub/display.html:60 msgid "" "You have already successfully confirmed your subscribe/unsubscribe " "request and are attempting to do it again." msgstr "" #: ../../static/t/listsub/display.html:62 msgid "The error returned by the server was: " msgstr "" #: ../../static/t/listsub/display.html:70 msgid "Name of list:" msgstr "" #: ../../static/t/listsub/display.html:75 msgid "Your e-mail address:" msgstr "" #: ../../static/t/listsub/display.html:79 msgid "(If subscribing) preferred format: " msgstr "" #: ../../static/t/listsub/display.html:80 msgid "One message at a time" msgstr "" #: ../../static/t/listsub/display.html:81 msgid "Digest format" msgstr "" #: ../../static/t/listsub/display.html:89 msgid "" "When you attempt to subscribe or unsubscribe to a mailing list, you will " "receive an e-mail containing one additional web link to click on for final " "confirmation." msgstr "" #: ../../static/t/listsub/display.html:90 msgid "" "This extra step is for your protection, as it prevents others from being " "able to subscribe or unsubscribe you to lists." msgstr "" #: ../../static/t/floors_edit_one.html:11 msgid "(delete floor)" msgstr "" #: ../../static/t/floors_edit_one.html:13 msgid "(edit graphic)" msgstr "" #: ../../static/t/floors.html:4 msgid "Add/change/delete floors" msgstr "" #: ../../static/t/floors.html:10 msgid "Floor number" msgstr "" #: ../../static/t/floors.html:11 msgid "Floor name" msgstr "" #: ../../static/t/floors.html:12 msgid "Number of rooms" msgstr "" #: ../../static/t/floors.html:13 msgid "Floor CSS" msgstr "" #: ../../static/t/files.html:4 msgid "Files available for download in" msgstr "" #: ../../static/t/files.html:9 msgid "Upload a file:" msgstr "" #: ../../static/t/files.html:30 msgid "Filename" msgstr "" #: ../../static/t/files.html:31 msgid "Size" msgstr "" #: ../../static/t/files.html:32 msgid "Content" msgstr "" #: ../../static/t/files.html:33 msgid "Description" msgstr "" #: ../../static/t/edit_message.html:9 ../../static/t/iconbar.html:50 #: ../../static/t/iconbar.html:59 msgid "Loading" msgstr "" #: ../../static/t/edit_message.html:23 msgid "from" msgstr "" #: ../../static/t/edit_message.html:29 ../../static/t/edit_message.html:38 msgid "Anonymous" msgstr "" #: ../../static/t/edit_message.html:47 msgid "in" msgstr "" #: ../../static/t/edit_message.html:51 msgid "To:" msgstr "" #: ../../static/t/edit_message.html:57 #: ../../static/t/view_message/print.html:15 #: ../../static/t/view_message.html:15 msgid "CC:" msgstr "" #: ../../static/t/edit_message.html:63 msgid "BCC:" msgstr "" #: ../../static/t/edit_message.html:71 msgid "Subject (optional):" msgstr "" #: ../../static/t/edit_message.html:71 #: ../../static/t/view_message/replyquote.html:8 #: ../../static/t/view_message/print.html:16 #: ../../static/t/view_message.html:16 msgid "Subject:" msgstr "" #: ../../static/t/edit_message.html:86 msgid "--- forwarded message ---" msgstr "" #: ../../static/t/edit_message.html:110 msgid "Post message" msgstr "" #: ../../static/t/edit_message.html:118 msgid "Save to Drafts" msgstr "" #: ../../static/t/edit_message.html:126 #: ../../static/t/edit_message/attachments_pane.html:5 msgid "Attachments:" msgstr "" #: ../../static/t/aide/display_serverrestart_page.html:4 msgid "Message to your Users:" msgstr "" #: ../../static/t/aide/display_generic_result.html:2 msgid "Server command results" msgstr "" #: ../../static/t/aide/display_generic_result.html:18 msgid "Enter another command" msgstr "" #: ../../static/t/aide/display_generic_result.html:19 msgid "Return to menu" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:3 msgid "Site configuration" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:6 #: ../../static/t/aide/edituser/select.html:9 msgid "You need to be aide to view this." msgstr "" #: ../../static/t/aide/display_sitewide_config.html:11 msgid "General" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:12 msgid "Access" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:13 msgid "Network" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:14 msgid "Tuning" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:15 msgid "Directory" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:16 msgid "Auto-purger" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:17 msgid "Indexing/Journaling" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:18 #: ../../static/t/aide/siteconfig/tab_pushmail.html:1 msgid "Push Email" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:19 msgid "Pop3" msgstr "" #: ../../static/t/aide/usermanagement.html:2 msgid "Add, change, delete user accounts" msgstr "" #: ../../static/t/aide/display_inetconf.html:5 #: ../../static/t/aide/display_menu.html:5 msgid "System Administration Menu" msgstr "" #: ../../static/t/aide/display_inetconf.html:6 #: ../../static/t/aide/display_menu.html:6 msgid "Room Admin Menu" msgstr "" #: ../../static/t/aide/display_inetconf.html:13 msgid "Local host aliases" msgstr "" #: ../../static/t/aide/display_inetconf.html:14 msgid "Directory domains" msgstr "" #: ../../static/t/aide/display_inetconf.html:15 msgid "Smart hosts" msgstr "" #: ../../static/t/aide/display_inetconf.html:16 msgid "Fallback smart hosts" msgstr "" #: ../../static/t/aide/display_inetconf.html:17 msgid "Notification hosts" msgstr "" #: ../../static/t/aide/display_inetconf.html:22 msgid "RBL hosts" msgstr "" #: ../../static/t/aide/display_inetconf.html:23 msgid "SpamAssassin hosts" msgstr "" #: ../../static/t/aide/display_inetconf.html:24 msgid "ClamAV clamd hosts" msgstr "" #: ../../static/t/aide/display_inetconf.html:25 msgid "Masqueradable domains" msgstr "" #: ../../static/t/aide/edituser/select.html:5 msgid "Edit or delete users" msgstr "" #: ../../static/t/aide/edituser/select.html:17 msgid "Add users" msgstr "" #: ../../static/t/aide/edituser/select.html:20 msgid "Edit or Delete users" msgstr "" #: ../../static/t/aide/edituser/box_select.html:1 msgid "" "To edit an existing user account, select the user name from the list and " "click 'Edit'." msgstr "" #: ../../static/t/aide/edituser/detailview.html:4 msgid "Edit user account: " msgstr "" #: ../../static/t/aide/edituser/detailview.html:24 #: ../../static/t/room/edit/tab_feed.html:14 msgid "Password" msgstr "" #: ../../static/t/aide/edituser/detailview.html:28 msgid "Permission to send Internet mail" msgstr "" #: ../../static/t/aide/edituser/detailview.html:32 msgid "Number of logins" msgstr "" #: ../../static/t/aide/edituser/detailview.html:36 msgid "Messages submitted" msgstr "" #: ../../static/t/aide/edituser/detailview.html:40 msgid "Access level" msgstr "" #: ../../static/t/aide/edituser/detailview.html:54 msgid "User ID number" msgstr "" #: ../../static/t/aide/edituser/detailview.html:58 msgid "Date and time of last login" msgstr "" #: ../../static/t/aide/edituser/detailview.html:68 msgid "Auto-purge after this many days" msgstr "" #: ../../static/t/aide/edituser/add.html:1 msgid "" "To create a new user account, enter the desired user name in the box below " "and click 'Create'." msgstr "" #: ../../static/t/aide/edituser/add.html:5 msgid "New user: " msgstr "" #: ../../static/t/aide/display_generic_cmd.html:4 msgid "Enter a server command" msgstr "" #: ../../static/t/aide/display_generic_cmd.html:12 msgid "" "This screen allows you to enter Citadel server commands which are not " "supported by WebCit. If you do not know what that means, then this screen " "will not be of much use to you." msgstr "" #: ../../static/t/aide/display_generic_cmd.html:15 msgid "Enter command:" msgstr "" #: ../../static/t/aide/display_generic_cmd.html:17 msgid "Command input (if requesting SEND_LISTING transfer mode):" msgstr "" #: ../../static/t/aide/display_generic_cmd.html:20 msgid "Detected host header is " msgstr "" #: ../../static/t/aide/display_ignetconf.html:4 msgid "Network configuration" msgstr "" #: ../../static/t/aide/display_ignetconf.html:10 #: ../../static/t/aide/ignetconf/edit_node.html:5 #: ../../static/t/aide/ignetconf/add.html:5 msgid "Add a new node" msgstr "" #: ../../static/t/aide/display_ignetconf.html:14 msgid "Currently configured nodes" msgstr "" #: ../../static/t/aide/display_serverrestart.html:26 msgid "Restart Citadel" msgstr "" #: ../../static/t/aide/floorconfig.html:2 msgid "Add, change, or delete floors" msgstr "" #: ../../static/t/aide/serverrestart/box.html:3 msgid "Please wait while the Citadel server is restarted... " msgstr "" #: ../../static/t/aide/serverrestart/box_page_do.html:3 msgid "" "Please wait while your users are being paged, the citadel server will be " "restarted after that... " msgstr "" #: ../../static/t/aide/inet/masqdomains.html:2 msgid "(Domains as which users are allowed to masquerade)" msgstr "" #: ../../static/t/aide/inet/rbldns.html:2 msgid "(hosts running a Realtime Blackhole List)" msgstr "" #: ../../static/t/aide/inet/dirnames.html:2 msgid "(domains mapped with the Global Address Book)" msgstr "" #: ../../static/t/aide/inet/notify.html:2 msgid "(URLS for notifications when users receive new mails; )" msgstr "" #: ../../static/t/aide/inet/notify.html:2 msgid "Syntax: Notificationtemplatename:http[s]://user:password@hostname/path" msgstr "" #: ../../static/t/aide/inet/smarthosts.html:2 msgid "(if present, forward all outbound mail to one of these hosts)" msgstr "" #: ../../static/t/aide/inet/aliases.html:2 msgid "(domains for which this host receives mail)" msgstr "" #: ../../static/t/aide/inet/clamav.html:2 msgid "(hosts running the ClamAV clamd service)" msgstr "" #: ../../static/t/aide/inet/spamass.html:2 msgid "(hosts running the SpamAssassin service)" msgstr "" #: ../../static/t/aide/inet/fallbackhosts.html:2 msgid "(send outbound mail to these hosts only when direct delivery fails)" msgstr "" #: ../../static/t/aide/ignetconf/display_confirm_delete.html:5 msgid "Confirm delete" msgstr "" #: ../../static/t/aide/ignetconf/display_confirm_delete.html:11 msgid "Are you sure you want to delete " msgstr "" #: ../../static/t/aide/ignetconf/display_confirm_delete.html:14 #: ../../static/t/prefs/box.html:198 ../../static/t/iconbar/edit.html:19 #: ../../static/t/iconbar/edit.html:26 ../../static/t/iconbar/edit.html:32 #: ../../static/t/iconbar/edit.html:39 ../../static/t/iconbar/edit.html:45 #: ../../static/t/iconbar/edit.html:52 ../../static/t/iconbar/edit.html:58 #: ../../static/t/iconbar/edit.html:64 ../../static/t/iconbar/edit.html:70 #: ../../static/t/iconbar/edit.html:76 ../../static/t/iconbar/edit.html:82 #: ../../static/t/iconbar/edit.html:88 msgid "Yes" msgstr "" #: ../../static/t/aide/ignetconf/display_confirm_delete.html:16 #: ../../static/t/prefs/box.html:200 ../../static/t/iconbar/edit.html:20 #: ../../static/t/iconbar/edit.html:27 ../../static/t/iconbar/edit.html:33 #: ../../static/t/iconbar/edit.html:40 ../../static/t/iconbar/edit.html:46 #: ../../static/t/iconbar/edit.html:53 ../../static/t/iconbar/edit.html:59 #: ../../static/t/iconbar/edit.html:65 ../../static/t/iconbar/edit.html:71 #: ../../static/t/iconbar/edit.html:77 ../../static/t/iconbar/edit.html:83 #: ../../static/t/iconbar/edit.html:89 msgid "No" msgstr "" #: ../../static/t/aide/ignetconf/edit_node.html:15 #: ../../static/t/aide/ignetconf/add.html:15 #: ../../static/t/aide/siteconfig/tab_general.html:8 msgid "Node name" msgstr "" #: ../../static/t/aide/ignetconf/edit_node.html:17 #: ../../static/t/aide/ignetconf/add.html:17 msgid "Shared secret" msgstr "" #: ../../static/t/aide/ignetconf/edit_node.html:19 #: ../../static/t/aide/ignetconf/add.html:19 msgid "Host or IP address" msgstr "" #: ../../static/t/aide/ignetconf/edit_node.html:21 #: ../../static/t/aide/ignetconf/add.html:21 msgid "Port number" msgstr "" #: ../../static/t/aide/ignetconf/section.html:4 msgid "(Edit)" msgstr "" #: ../../static/t/aide/display_menu.html:12 msgid "Global Configuration" msgstr "" #: ../../static/t/aide/display_menu.html:14 msgid "User account management" msgstr "" #: ../../static/t/aide/display_menu.html:16 msgid "Shutdown Citadel" msgstr "" #: ../../static/t/aide/display_menu.html:18 msgid "Rooms and Floors" msgstr "" #: ../../static/t/aide/global_config.html:2 msgid "Edit site-wide configuration" msgstr "" #: ../../static/t/aide/global_config.html:3 msgid "Domain names and Internet mail configuration" msgstr "" #: ../../static/t/aide/global_config.html:4 msgid "Configure replication with other Citadel servers" msgstr "" #: ../../static/t/aide/global_config.html:5 #: ../../static/t/view_mailq/header.html:3 msgid "View the outbound SMTP queue" msgstr "" #: ../../static/t/aide/restart.html:2 msgid "Restart Now" msgstr "" #: ../../static/t/aide/restart.html:3 msgid "Restart after paging users" msgstr "" #: ../../static/t/aide/restart.html:4 msgid "Restart when all users are idle" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:1 msgid "General site configuration items" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:5 msgid "Change Login Logo" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:6 msgid "Change Logout Logo" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:11 msgid "Fully qualified domain name" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:14 msgid "Human-readable node name" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:17 msgid "Telephone number" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:20 msgid "Paginator prompt (for text mode clients)" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:23 msgid "Geographic location of this system" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:26 msgid "Name of system administrator" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:29 msgid "Default timezone for unzoned calendar items" msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:1 msgid "Configure automatic expiry of old messages" msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:2 msgid "These settings may be overridden on a per-floor or per-room basis." msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:6 msgid "Hour to run database auto-purge" msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:66 msgid "Default message expire policy for public rooms" msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:68 #: ../../static/t/aide/siteconfig/tab_autopurger.html:86 #: ../../static/t/room/edit/tab_expire.html:17 #: ../../static/t/room/edit/tab_expire.html:45 msgid "Never automatically expire messages" msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:71 #: ../../static/t/aide/siteconfig/tab_autopurger.html:89 #: ../../static/t/room/edit/tab_expire.html:20 #: ../../static/t/room/edit/tab_expire.html:48 msgid "Expire by message count" msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:73 #: ../../static/t/aide/siteconfig/tab_autopurger.html:92 #: ../../static/t/room/edit/tab_expire.html:23 #: ../../static/t/room/edit/tab_expire.html:51 msgid "Expire by message age" msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:75 #: ../../static/t/aide/siteconfig/tab_autopurger.html:94 #: ../../static/t/room/edit/tab_expire.html:25 #: ../../static/t/room/edit/tab_expire.html:53 msgid "Number of messages or days: " msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:81 msgid "Default message expire policy for private mailboxes" msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:83 msgid "Same policy as public rooms" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:1 msgid "Network services" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:2 #: ../../static/t/aide/siteconfig/tab_directory.html:3 msgid "" "Changes made on this screen will not take effect until you restart the " "Citadel server." msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:6 msgid "SMTP MTA port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:9 msgid "Correct forged From: lines during authenticated SMTP" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:12 msgid "Flag message as spam, instead of rejecting it" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:15 msgid "IMAP listener port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:19 msgid "Network run frequency (in seconds)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:22 msgid "Server IP address (0.0.0.0 for 'any')" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:25 msgid "SMTP MSA port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:28 msgid "IMAP over SSL port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:31 msgid "SMTP over SSL port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:34 msgid "Instantly expunge deleted messages in IMAP" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:38 msgid "Allow unauthenticated SMTP clients to spoof this sites domains" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:41 msgid "Postfix TCP Dictionary Port" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:41 msgid "-1 to disable" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:44 msgid "ManageSieve Port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:47 msgid "Perform RBL checks upon connect instead of after RCPT" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:50 msgid "Keep original from headers in IMAP" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:53 msgid "XMPP (Jabber) client to server port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:56 msgid "XMPP (Jabber) server to server port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_pop3.html:1 msgid "POP3" msgstr "" #: ../../static/t/aide/siteconfig/tab_pop3.html:6 msgid "POP3 listener port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_pop3.html:9 msgid "POP3 over SSL port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_pop3.html:12 msgid "POP3 fetch frequency in seconds" msgstr "" #: ../../static/t/aide/siteconfig/tab_pop3.html:15 msgid "POP3 fastest fetch frequency in seconds" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:1 msgid "Advanced server fine-tuning controls" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:5 msgid "Server connection idle timeout (in seconds)" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:8 msgid "Maximum concurrent sessions (0 = no limit)" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:11 msgid "Default user purge time (days)" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:14 msgid "Default room purge time (days)" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:17 msgid "Maximum message length" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:20 msgid "Minimum number of worker threads" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:23 msgid "Maximum number of worker threads" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:26 msgid "Automatically delete committed database logs" msgstr "" #: ../../static/t/aide/siteconfig/tab_pushmail.html:5 msgid "Funambol server host (blank to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_pushmail.html:8 msgid "Funambol server port " msgstr "" #: ../../static/t/aide/siteconfig/tab_pushmail.html:11 msgid "Funambol sync source" msgstr "" #: ../../static/t/aide/siteconfig/tab_pushmail.html:14 msgid "Funambol auth details (user:pass)" msgstr "" #: ../../static/t/aide/siteconfig/tab_pushmail.html:17 msgid "External pager tool (blank to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:1 msgid "Access controls and site policy settings" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:5 msgid "Allow aides to zap (forget) rooms" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:9 msgid "Quarantine messages from problem users" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:12 msgid "Name of quarantine room" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:17 msgid "Name of room to log pages" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:22 msgid "Authentication mode" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:24 msgid "Self contained" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:25 msgid "Host based" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:26 msgid "LDAP (RFC2307)" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:27 msgid "LDAP (Active Directory)" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:30 msgid "Master user name (blank to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:33 msgid "Master user password" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:38 msgid "Initial access level for new users" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:49 msgid "Access level required to create rooms" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:60 msgid "Automatically grant room-aide status to users who create private rooms" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:63 msgid "Automatically grant room-aide status to users who create BLOG rooms" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:66 msgid "Restrict access to Internet mail" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:71 msgid "Disable self-service user account creation" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:71 msgid "Hint: do not select both!" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:74 msgid "Require registration for new users" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:77 msgid "Allow anonymous guest access" msgstr "" #: ../../static/t/aide/siteconfig/tab_indexing.html:1 msgid "Indexing and Journaling" msgstr "" #: ../../static/t/aide/siteconfig/tab_indexing.html:2 msgid "Warning: these facilities are resource intensive." msgstr "" #: ../../static/t/aide/siteconfig/tab_indexing.html:6 msgid "Enable full text index" msgstr "" #: ../../static/t/aide/siteconfig/tab_indexing.html:9 msgid "Perform journaling of email messages" msgstr "" #: ../../static/t/aide/siteconfig/tab_indexing.html:13 msgid "Perform journaling of non-email messages" msgstr "" #: ../../static/t/aide/siteconfig/tab_indexing.html:16 msgid "Email destination of journalized messages" msgstr "" #: ../../static/t/aide/siteconfig/tab_directory.html:1 msgid "Configure the LDAP connector for Citadel" msgstr "" #: ../../static/t/aide/siteconfig/tab_directory.html:4 msgid "" "NOTE: This Citadel server has been built without LDAP support. These " "options will have no effect." msgstr "" #: ../../static/t/aide/siteconfig/tab_directory.html:9 msgid "Host name of LDAP server (blank to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_directory.html:13 msgid "Port number of LDAP server (blank to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_directory.html:16 msgid "Base DN" msgstr "" #: ../../static/t/aide/siteconfig/tab_directory.html:19 msgid "Bind DN" msgstr "" #: ../../static/t/aide/siteconfig/tab_directory.html:22 msgid "Password for bind DN" msgstr "" #: ../../static/t/iconbar.html:7 msgid "Language:" msgstr "" #: ../../static/t/iconbar.html:19 msgid "Mail" msgstr "" #: ../../static/t/iconbar.html:39 ../../static/t/iconbar/edit.html:61 #: ../../static/t/summary/page.html:30 msgid "Tasks" msgstr "" #: ../../static/t/iconbar.html:48 ../../static/t/iconbar/edit.html:67 msgid "Rooms" msgstr "" #: ../../static/t/iconbar.html:57 msgid "Online users" msgstr "" #: ../../static/t/iconbar.html:62 ../../static/t/iconbar/edit.html:79 msgid "Chat" msgstr "" #: ../../static/t/iconbar.html:65 msgid "Advanced" msgstr "" #: ../../static/t/iconbar.html:72 ../../static/t/room/edit/editroom.html:4 #: ../../static/t/room/edit.html:5 msgid "Administration" msgstr "" #: ../../static/t/iconbar.html:83 msgid "customize this menu" msgstr "" #: ../../static/t/iconbar.html:92 msgid "switch to room list" msgstr "" #: ../../static/t/iconbar.html:93 msgid "switch to menu" msgstr "" #: ../../static/t/iconbar.html:94 msgid "My folders" msgstr "" #: ../../static/t/view_message/list_attach.html:3 #: ../../static/t/view_message/inline_attach.html:4 msgid "View" msgstr "" #: ../../static/t/view_message/list_attach.html:4 #: ../../static/t/view_message/inline_attach.html:5 msgid "Download" msgstr "" #: ../../static/t/view_message/print.html:14 #: ../../static/t/view_message.html:14 msgid "to" msgstr "" #: ../../static/t/openid_manual_create.html:2 msgid "Your OpenID" msgstr "" #: ../../static/t/openid_manual_create.html:2 msgid "was successfully verified." msgstr "" #: ../../static/t/openid_manual_create.html:3 msgid "However, the user name" msgstr "" #: ../../static/t/openid_manual_create.html:3 msgid "conflicts with an existing user." msgstr "" #: ../../static/t/openid_manual_create.html:5 msgid "Please specify the user name you would like to use." msgstr "" #: ../../static/t/files/graphicsupload.html:2 msgid "Image upload" msgstr "" #: ../../static/t/files/graphicsupload.html:6 msgid "You can upload an image directly from your computer" msgstr "" #: ../../static/t/files/graphicsupload.html:8 msgid "Please select a file to upload:" msgstr "" #: ../../static/t/files/section_onefile.html:20 msgid "Slideshow" msgstr "" #: ../../static/t/roombanner.html:10 ../../static/t/roombanner.html:11 msgid "new of" msgstr "" #: ../../static/t/roombanner.html:10 ../../static/t/roombanner.html:11 #: ../../static/t/msg_listselector_bottom.html:7 #: ../../static/t/msg_listselector_top.html:7 msgid "messages" msgstr "" #: ../../static/t/roombanner.html:28 msgid "Select page: " msgstr "" #: ../../static/t/who.html:13 msgid "Users currently on " msgstr "" #: ../../static/t/who.html:22 msgid "Click on a name to read user info. Click on" msgstr "" #: ../../static/t/who.html:24 msgid "to send an instant message to that user." msgstr "" #: ../../static/t/msg_listselector_bottom.html:2 #: ../../static/t/msg_listselector_top.html:2 msgid "Reading #" msgstr "" #: ../../static/t/msg_listselector_bottom.html:12 #: ../../static/t/msg_listselector_top.html:12 msgid "oldest to newest" msgstr "" #: ../../static/t/msg_listselector_bottom.html:20 #: ../../static/t/msg_listselector_top.html:20 msgid "newest to oldest" msgstr "" #: ../../static/t/newstartpage.html:4 msgid "New start page" msgstr "" #: ../../static/t/newstartpage.html:9 msgid "Your start page has been changed." msgstr "" #: ../../static/t/newstartpage.html:12 msgid "" "(Note: this does not change your browser's home page. It changes the page " "you begin on when you log on to" msgstr "" #: ../../static/t/no_new_msgs.html:3 msgid "No new messages." msgstr "" #: ../../static/t/view_blog/comment_box.html:8 msgid "Post a comment" msgstr "" #: ../../static/t/prefs/pushemail.html:2 msgid "Configure Push Email" msgstr "" #: ../../static/t/prefs/pushemail.html:9 msgid "Push email and SMS settings" msgstr "" #: ../../static/t/prefs/pushemail.html:17 msgid "" "If your administrator has enabled the functionality, Citadel can notify a " "Funambol server that you haved recieved new email and automatically " "syncronize any devices you have with the Funambol client installed." msgstr "" #: ../../static/t/prefs/pushemail.html:20 msgid "" "Alternatively, if the administrator has configured it, Citadel can send a " "text message to you when new mail arrives." msgstr "" #: ../../static/t/prefs/pushemail.html:26 msgid "Notify Funambol server" msgstr "" #: ../../static/t/prefs/pushemail.html:31 msgid "Send a text message to..." msgstr "" #: ../../static/t/prefs/pushemail.html:33 msgid "" "(Use international format, without any leading zeros, spaces or hypens, like " "+61415011501)" msgstr "" #: ../../static/t/prefs/pushemail.html:38 msgid "Use custom notification scheme configured by your Admin" msgstr "" #: ../../static/t/prefs/pushemail.html:43 msgid "Don‘t send any notifications" msgstr "" #: ../../static/t/prefs/box.html:9 msgid "Tree (folders) view" msgstr "" #: ../../static/t/prefs/box.html:11 msgid "Table (rooms) view" msgstr "" #: ../../static/t/prefs/box.html:20 msgid "12 hour (am/pm)" msgstr "" #: ../../static/t/prefs/box.html:25 msgid "24 hour" msgstr "" #: ../../static/t/prefs/box.html:152 msgid "Sunday" msgstr "" #: ../../static/t/prefs/box.html:153 msgid "Monday" msgstr "" #: ../../static/t/prefs/box.html:174 msgid "No signature" msgstr "" #: ../../static/t/prefs/box.html:238 msgid "Full-functionality" msgstr "" #: ../../static/t/prefs/box.html:241 msgid "Safe mode" msgstr "" #: ../../static/t/prefs/box.html:242 msgid "" "Safe mode is less intensive on your web browser, but not as fully featured." msgstr "" #: ../../static/t/wiki/pagelist.html:1 msgid "List of Wiki pages" msgstr "" #: ../../static/t/wiki/history.html:1 msgid "History of edits for this page" msgstr "" #: ../../static/t/who/list_static_header.html:1 msgid "Users currently on" msgstr "" #: ../../static/t/who/section.html:4 msgid "(kill)" msgstr "" #: ../../static/t/who/bio.html:4 ../../static/t/user/show.html:4 msgid "User profile" msgstr "" #: ../../static/t/who/summary.html:5 ../../static/t/who/box_list_static.html:6 #: ../../static/t/room/edit/tab_feed.html:13 msgid "User name" msgstr "" #: ../../static/t/who/summary.html:6 ../../static/t/who/box_list_static.html:7 msgid "Room" msgstr "" #: ../../static/t/who/box_list_static.html:8 msgid "From host" msgstr "" #: ../../static/t/view_message.html:19 msgid "Edit" msgstr "" #: ../../static/t/view_message.html:22 ../../static/t/view_message.html:26 msgid "Reply" msgstr "" #: ../../static/t/view_message.html:23 msgid "ReplyQuoted" msgstr "" #: ../../static/t/view_message.html:27 msgid "ReplyAll" msgstr "" #: ../../static/t/view_message.html:28 msgid "Forward" msgstr "" #: ../../static/t/view_message.html:31 ../../static/t/msg_listview.html:25 msgid "Move" msgstr "" #: ../../static/t/view_message.html:34 msgid "Headers" msgstr "" #: ../../static/t/view_message.html:35 ../../static/t/msg_listview.html:28 msgid "Print" msgstr "" #: ../../static/t/preferences.html:4 ../../static/t/preferences.html:7 msgid "Preferences and settings" msgstr "" #: ../../static/t/user/list.html:3 msgid "User list for " msgstr "" #: ../../static/t/user/list.html:9 msgid "User Name" msgstr "" #: ../../static/t/user/list.html:10 msgid "Number" msgstr "" #: ../../static/t/user/list.html:11 msgid "Access Level" msgstr "" #: ../../static/t/user/list.html:12 msgid "Last Login" msgstr "" #: ../../static/t/user/list.html:13 msgid "Total Logins" msgstr "" #: ../../static/t/user/list.html:14 msgid "Total Posts" msgstr "" #: ../../static/t/user/show.html:9 msgid "Click here to send an instant message to" msgstr "" #: ../../static/t/start_of_new_msgs.html:4 msgid "Old messages" msgstr "" #: ../../static/t/start_of_new_msgs.html:8 msgid "New messages" msgstr "" #: ../../static/t/display_main_menu.html:7 msgid "Basic commands" msgstr "" #: ../../static/t/display_main_menu.html:10 msgid "Your info" msgstr "" #: ../../static/t/display_main_menu.html:12 msgid "Advanced room commands" msgstr "" #: ../../static/t/iconbar/save.html:4 ../../static/t/iconbar/edit.html:4 msgid "Customize the icon bar" msgstr "" #: ../../static/t/iconbar/save.html:11 msgid "" "Your icon bar has been updated. Please select any of its choices to continue." msgstr "" #: ../../static/t/iconbar/save.html:11 msgid "" "You may need to force refresh (SHIFT-F5)> in order for changes to take effect" msgstr "" #: ../../static/t/iconbar/edit.html:11 msgid "Display icons as:" msgstr "" #: ../../static/t/iconbar/edit.html:12 msgid "pictures and text" msgstr "" #: ../../static/t/iconbar/edit.html:13 msgid "pictures only" msgstr "" #: ../../static/t/iconbar/edit.html:14 msgid "text only" msgstr "" #: ../../static/t/iconbar/edit.html:16 msgid "" "Select the icons you would like to see displayed in the 'icon bar' menu on " "the left side of the screen." msgstr "" #: ../../static/t/iconbar/edit.html:23 msgid "Site logo" msgstr "" #: ../../static/t/iconbar/edit.html:23 msgid "An icon describing this site" msgstr "" #: ../../static/t/iconbar/edit.html:29 msgid "Your summary page" msgstr "" #: ../../static/t/iconbar/edit.html:36 msgid "Mail (inbox)" msgstr "" #: ../../static/t/iconbar/edit.html:36 msgid "A shortcut to your email Inbox" msgstr "" #: ../../static/t/iconbar/edit.html:42 msgid "Your personal address book" msgstr "" #: ../../static/t/iconbar/edit.html:49 msgid "Your personal notes" msgstr "" #: ../../static/t/iconbar/edit.html:55 msgid "A shortcut to your personal calendar" msgstr "" #: ../../static/t/iconbar/edit.html:61 msgid "A shortcut to your personal task list" msgstr "" #: ../../static/t/iconbar/edit.html:67 msgid "" "Clicking this icon displays a list of all accessible rooms (or folders) " "available." msgstr "" #: ../../static/t/iconbar/edit.html:73 msgid "Who is online?" msgstr "" #: ../../static/t/iconbar/edit.html:73 msgid "Clicking this icon displays a list of all users currently logged in." msgstr "" #: ../../static/t/iconbar/edit.html:79 msgid "" "Clicking this icon enters real-time chat mode with other users in the same " "room." msgstr "" #: ../../static/t/iconbar/edit.html:85 msgid "Advanced options" msgstr "" #: ../../static/t/iconbar/edit.html:85 msgid "Access to the complete menu of Citadel functions." msgstr "" #: ../../static/t/iconbar/edit.html:91 msgid "Citadel logo" msgstr "" #: ../../static/t/iconbar/edit.html:91 msgid "Displays the 'Powered by Citadel' icon" msgstr "" #: ../../static/t/room/edit/tab_expire.html:8 msgid "Message expire policy for this room" msgstr "" #: ../../static/t/room/edit/tab_expire.html:14 msgid "Use the default policy for this floor" msgstr "" #: ../../static/t/room/edit/tab_expire.html:36 msgid "Message expire policy for this floor" msgstr "" #: ../../static/t/room/edit/tab_expire.html:42 msgid "Use the system default" msgstr "" #: ../../static/t/room/edit/editroom.html:5 ../../static/t/room/edit.html:6 msgid "Configuration" msgstr "" #: ../../static/t/room/edit/editroom.html:6 ../../static/t/room/edit.html:7 msgid "Message expire policy" msgstr "" #: ../../static/t/room/edit/editroom.html:7 ../../static/t/room/edit.html:8 msgid "Access controls" msgstr "" #: ../../static/t/room/edit/editroom.html:8 ../../static/t/room/edit.html:9 msgid "Sharing" msgstr "" #: ../../static/t/room/edit/editroom.html:9 ../../static/t/room/edit.html:10 msgid "Mailing list service" msgstr "" #: ../../static/t/room/edit/editroom.html:10 ../../static/t/room/edit.html:11 msgid "Remote retrieval" msgstr "" #: ../../static/t/room/edit/tab_config.html:6 msgid "name of room: " msgstr "" #: ../../static/t/room/edit/tab_config.html:10 #: ../../static/t/room/create.html:20 msgid "Resides on floor: " msgstr "" #: ../../static/t/room/edit/tab_config.html:16 #: ../../static/t/room/create.html:68 msgid "Type of room:" msgstr "" #: ../../static/t/room/edit/tab_config.html:22 #: ../../static/t/room/create.html:73 msgid "Public (automatically appears to everyone)" msgstr "" #: ../../static/t/room/edit/tab_config.html:28 #: ../../static/t/room/create.html:77 msgid "Private - hidden (accessible to anyone who knows its name)" msgstr "" #: ../../static/t/room/edit/tab_config.html:35 #: ../../static/t/room/create.html:81 msgid "Private - require password: " msgstr "" #: ../../static/t/room/edit/tab_config.html:44 #: ../../static/t/room/create.html:86 msgid "Private - invitation only" msgstr "" #: ../../static/t/room/edit/tab_config.html:51 #: ../../static/t/room/create.html:90 msgid "Personal (mailbox for you only)" msgstr "" #: ../../static/t/room/edit/tab_config.html:55 msgid "If private, cause current users to forget room" msgstr "" #: ../../static/t/room/edit/tab_config.html:61 msgid "Preferred users only" msgstr "" #: ../../static/t/room/edit/tab_config.html:66 msgid "Read-only room" msgstr "" #: ../../static/t/room/edit/tab_config.html:71 msgid "All users allowed to post may also delete messages" msgstr "" #: ../../static/t/room/edit/tab_config.html:76 msgid "File directory room" msgstr "" #: ../../static/t/room/edit/tab_config.html:80 msgid "Directory name: " msgstr "" #: ../../static/t/room/edit/tab_config.html:86 msgid "Uploading allowed" msgstr "" #: ../../static/t/room/edit/tab_config.html:91 msgid "Downloading allowed" msgstr "" #: ../../static/t/room/edit/tab_config.html:96 msgid "Visible directory" msgstr "" #: ../../static/t/room/edit/tab_config.html:103 msgid "Network shared room" msgstr "" #: ../../static/t/room/edit/tab_config.html:108 msgid "Permanent (does not auto-purge)" msgstr "" #: ../../static/t/room/edit/tab_config.html:113 msgid "Subject Required (Force users to specify a message subject)" msgstr "" #: ../../static/t/room/edit/tab_config.html:116 msgid "Anonymous messages" msgstr "" #: ../../static/t/room/edit/tab_config.html:122 msgid "No anonymous messages" msgstr "" #: ../../static/t/room/edit/tab_config.html:127 msgid "All messages are anonymous" msgstr "" #: ../../static/t/room/edit/tab_config.html:132 msgid "Prompt user when entering messages" msgstr "" #: ../../static/t/room/edit/tab_config.html:136 msgid "Room aide: " msgstr "" #: ../../static/t/room/edit/tab_listserv.html:5 msgid "" "The contents of this room are being mailed as individual messages " "to the following list recipients:

    " msgstr "" #: ../../static/t/room/edit/tab_listserv.html:19 msgid "" "The contents of this room are being mailed in digest form to the " "following list recipients:

    " msgstr "" #: ../../static/t/room/edit/tab_listserv.html:39 msgid "Add recipients from Contacts or other address books" msgstr "" #: ../../static/t/room/edit/tab_listserv.html:48 msgid "Allow non-subscribers to mail to this room." msgstr "" #: ../../static/t/room/edit/tab_listserv.html:54 msgid "Room post publication needs Admin permission." msgstr "" #: ../../static/t/room/edit/tab_listserv.html:59 msgid "Allow self-service subscribe/unsubscribe requests." msgstr "" #: ../../static/t/room/edit/tab_listserv.html:65 msgid "The URL for subscribe/unsubscribe is: " msgstr "" #: ../../static/t/room/edit/digestrecp_removal.html:1 #: ../../static/t/room/edit/pop3client_removal.html:9 #: ../../static/t/room/edit/listrecp_removal.html:1 #: ../../static/t/room/edit/rssclient_removal.html:5 msgid "(remove)" msgstr "" #: ../../static/t/room/edit/tab_admin.html:5 msgid "Delete this room" msgstr "" #: ../../static/t/room/edit/tab_admin.html:10 msgid "Set or change the icon for this rooms banner" msgstr "" #: ../../static/t/room/edit/tab_admin.html:14 msgid "Edit this rooms Info file" msgstr "" #: ../../static/t/room/edit/tab_share.html:5 msgid "Shared with" msgstr "" #: ../../static/t/room/edit/tab_share.html:6 msgid "Not shared with" msgstr "" #: ../../static/t/room/edit/tab_share.html:11 #: ../../static/t/room/edit/tab_share.html:21 msgid "Remote node name" msgstr "" #: ../../static/t/room/edit/tab_share.html:12 #: ../../static/t/room/edit/tab_share.html:22 msgid "Remote room name" msgstr "" #: ../../static/t/room/edit/tab_share.html:13 #: ../../static/t/room/edit/tab_share.html:23 msgid "Actions" msgstr "" #: ../../static/t/room/edit/tab_share.html:35 msgid "" "When sharing a room, it must be shared from both ends. Adding a node to the " "'shared' list sends messages out, but in order to receive messages, the " "other nodes must be configured to send messages out to your system as well. " "
  • If the remote room name is blank, it is assumed that the room name is " "identical on the remote node.
  • If the remote room name is different, the " "remote node must also configure the name of the room here." msgstr "" #: ../../static/t/room/edit/tab_feed.html:2 msgid "" "Retrieve messages from these remote POP3 accounts and store them in this " "room:" msgstr "" #: ../../static/t/room/edit/tab_feed.html:12 msgid "Remote host" msgstr "" #: ../../static/t/room/edit/tab_feed.html:15 msgid "Keep messages on server?" msgstr "" #: ../../static/t/room/edit/tab_feed.html:16 msgid "Interval" msgstr "" #: ../../static/t/room/edit/tab_feed.html:31 msgid "Fetch the following RSS feeds and store them in this room:" msgstr "" #: ../../static/t/room/edit/tab_feed.html:43 msgid "Feed URL" msgstr "" #: ../../static/t/room/edit/tab_access.html:5 msgid "" "The users listed below have access to this room. To remove a user from the " "access list, select the user name from the list and click 'Kick'." msgstr "" #: ../../static/t/room/edit/tab_access.html:20 msgid "" "To grant another user access to this room, enter the user name in the box " "below and click 'Invite'." msgstr "" #: ../../static/t/room/edit/tab_access.html:26 msgid "Invite:" msgstr "" #: ../../static/t/room/edit/tab_access.html:35 msgid "Users" msgstr "" #: ../../static/t/room/zapped_list.html:7 msgid "Zapped (forgotten) rooms" msgstr "" #: ../../static/t/room/zapped_list.html:10 msgid "Click on any room to un-zap it and goto that room." msgstr "" #: ../../static/t/room/display_private.html:7 msgid "Go to a hidden room" msgstr "" #: ../../static/t/room/display_private.html:8 msgid "" "If you know the name of a hidden (guess-name) or passworded room, you can " "enter that room by typing its name below. Once you gain access to a private " "room, it will appear in your regular room listings so you don‘t have to keep " "returning here." msgstr "" #: ../../static/t/room/display_private.html:14 msgid "Enter room name:" msgstr "" #: ../../static/t/room/display_private.html:21 msgid "Enter room password:" msgstr "" #: ../../static/t/room/create.html:11 #: ../../static/t/menu/advanced_roomcommands.html:6 msgid "Create a new room" msgstr "" #: ../../static/t/room/create.html:18 msgid "Name of room: " msgstr "" #: ../../static/t/room/create.html:32 msgid "Default view for room: " msgstr "" #: ../../static/t/room/zap_this.html:3 msgid "Zap (forget/unsubscribe) the current room" msgstr "" #: ../../static/t/room/zap_this.html:6 msgid "If you select this option," msgstr "" #: ../../static/t/room/zap_this.html:8 msgid "will disappear from your room list. Is this what you wish to do?" msgstr "" #: ../../static/t/menu/your_info.html:2 msgid "Change your preferences and settings" msgstr "" #: ../../static/t/menu/your_info.html:3 msgid "Update your contact information" msgstr "" #: ../../static/t/menu/your_info.html:5 msgid "Enter your 'bio'" msgstr "" #: ../../static/t/menu/your_info.html:6 msgid "Edit your online photo" msgstr "" #: ../../static/t/menu/your_info.html:8 msgid "Edit your push email settings" msgstr "" #: ../../static/t/menu/your_info.html:9 msgid "Manage your OpenIDs" msgstr "" #: ../../static/t/menu/basic_commands.html:3 msgid "List known rooms" msgstr "" #: ../../static/t/menu/basic_commands.html:3 msgid "Where can I go from here?" msgstr "" #: ../../static/t/menu/basic_commands.html:4 ../../static/t/navbar.html:168 msgid "Goto next room" msgstr "" #: ../../static/t/menu/basic_commands.html:4 msgid "...with unread messages" msgstr "" #: ../../static/t/menu/basic_commands.html:5 msgid "Skip to next room" msgstr "" #: ../../static/t/menu/basic_commands.html:5 msgid "(come back here later)" msgstr "" #: ../../static/t/menu/basic_commands.html:6 ../../static/t/navbar.html:5 msgid "Ungoto" msgstr "" #: ../../static/t/menu/basic_commands.html:6 msgid "oops! Back to " msgstr "" #: ../../static/t/menu/basic_commands.html:10 ../../static/t/navbar.html:13 msgid "Read new messages" msgstr "" #: ../../static/t/menu/basic_commands.html:10 msgid "...in this room" msgstr "" #: ../../static/t/menu/basic_commands.html:11 ../../static/t/navbar.html:19 msgid "Read all messages" msgstr "" #: ../../static/t/menu/basic_commands.html:11 msgid "...old and new" msgstr "" #: ../../static/t/menu/basic_commands.html:12 ../../static/t/navbar.html:25 msgid "Enter a message" msgstr "" #: ../../static/t/menu/basic_commands.html:12 msgid "(post in this room)" msgstr "" #: ../../static/t/menu/basic_commands.html:13 msgid "File library" msgstr "" #: ../../static/t/menu/basic_commands.html:13 msgid "(List files available for download)" msgstr "" #: ../../static/t/menu/basic_commands.html:17 msgid "Summary page" msgstr "" #: ../../static/t/menu/basic_commands.html:17 msgid "Summary of my account" msgstr "" #: ../../static/t/menu/basic_commands.html:18 msgid "User list" msgstr "" #: ../../static/t/menu/basic_commands.html:18 msgid "(all registered users)" msgstr "" #: ../../static/t/menu/basic_commands.html:19 msgid "Bye!" msgstr "" #: ../../static/t/menu/advanced_roomcommands.html:3 msgid "Edit or delete this room" msgstr "" #: ../../static/t/menu/advanced_roomcommands.html:5 msgid "Go to a 'hidden' room" msgstr "" #: ../../static/t/menu/advanced_roomcommands.html:7 msgid "Zap (forget) this room" msgstr "" #: ../../static/t/menu/advanced_roomcommands.html:8 msgid "List all forgotten rooms" msgstr "" #: ../../static/t/navbar.html:34 msgid "View contacts" msgstr "" #: ../../static/t/navbar.html:40 msgid "Add new contact" msgstr "" #: ../../static/t/navbar.html:49 msgid "Day view" msgstr "" #: ../../static/t/navbar.html:55 msgid "Month view" msgstr "" #: ../../static/t/navbar.html:61 msgid "Add new event" msgstr "" #: ../../static/t/navbar.html:70 msgid "Calendar list" msgstr "" #: ../../static/t/navbar.html:79 msgid "View tasks" msgstr "" #: ../../static/t/navbar.html:85 msgid "Add new task" msgstr "" #: ../../static/t/navbar.html:94 msgid "View notes" msgstr "" #: ../../static/t/navbar.html:101 msgid "Add new note" msgstr "" #: ../../static/t/navbar.html:110 msgid "Refresh message list" msgstr "" #: ../../static/t/navbar.html:122 msgid "Write mail" msgstr "" #: ../../static/t/navbar.html:132 msgid "Wiki home" msgstr "" #: ../../static/t/navbar.html:139 msgid "Edit this page" msgstr "" #: ../../static/t/navbar.html:145 msgid "History" msgstr "" #: ../../static/t/navbar.html:154 msgid "New blog post" msgstr "" #: ../../static/t/navbar.html:162 msgid "Skip this room" msgstr "" #: ../../static/t/msg_listview.html:18 msgid "Loading messages from server, please wait" msgstr "" #: ../../static/t/msg_listview.html:24 msgid "Open in new window" msgstr "" #: ../../static/t/msg_listview.html:26 msgid "Copy" msgstr "" #: ../../static/t/view_mailq/message.html:6 msgid "Originaly posted in: " msgstr "" #: ../../static/t/view_mailq/header.html:15 msgid "Refresh this page" msgstr "" #: ../../static/t/view_mailq/header.html:21 msgid "Message ID" msgstr "" #: ../../static/t/view_mailq/header.html:23 msgid "Date/time submitted" msgstr "" #: ../../static/t/view_mailq/header.html:25 msgid "Next attempt" msgstr "" #: ../../static/t/view_mailq/header.html:29 msgid "Recipients" msgstr "" #: ../../static/t/view_mailq/footer_empty.html:4 msgid "The queue is empty." msgstr "" #: ../../static/t/view_mailq/footer_empty.html:9 #: ../../static/t/view_mailq/footer.html:5 msgid "You do not have permission to view this resource." msgstr "" #: ../../static/t/get_logged_in.html:5 msgid "You must be logged in to access this page." msgstr "" #: ../../static/t/get_logged_in.html:9 #: ../../static/t/edit_message/attachments_pane.html:3 msgid "Close window" msgstr "" #: ../../static/t/get_logged_in.html:55 msgid "Log in using a user name and password" msgstr "" #: ../../static/t/get_logged_in.html:60 ../../static/t/get_logged_in.html:75 msgid "Password:" msgstr "" #: ../../static/t/get_logged_in.html:65 ../../static/t/get_logged_in.html:69 msgid "New user? Register now" msgstr "" #: ../../static/t/get_logged_in.html:70 msgid "" "enter the name and password you wish to use, and click "New User." " msgstr "" #: ../../static/t/get_logged_in.html:83 msgid "Log in using OpenID" msgstr "" #: ../../static/t/get_logged_in.html:85 msgid "OpenID URL:" msgstr "" #: ../../static/t/get_logged_in.html:92 msgid "Log in using Google" msgstr "" #: ../../static/t/get_logged_in.html:97 msgid "Log in using Yahoo" msgstr "" #: ../../static/t/get_logged_in.html:102 msgid "Log in using AOL or AIM" msgstr "" #: ../../static/t/get_logged_in.html:104 msgid "Enter your AOL or AIM screen name:" msgstr "" #: ../../static/t/get_logged_in.html:115 msgid "Please wait" msgstr "" #: ../../static/t/summary/page.html:4 msgid "Summary page for " msgstr "" #: ../../static/t/summary/page.html:21 msgid "Messages" msgstr "" #: ../../static/t/summary/page.html:39 msgid "Today on your calendar" msgstr "" #: ../../static/t/summary/page.html:51 msgid "Who‘s online now" msgstr "" #: ../../static/t/summary/page.html:60 msgid "About this server" msgstr "" #: ../../static/t/summary/page.html:63 msgid "You are connected to" msgstr "" #: ../../static/t/summary/page.html:64 msgid "running" msgstr "" #: ../../static/t/summary/page.html:65 msgid "with" msgstr "" #: ../../static/t/summary/page.html:66 msgid "server build" msgstr "" #: ../../static/t/summary/page.html:67 msgid "and located in" msgstr "" #: ../../static/t/summary/page.html:68 msgid "Your system administrator is" msgstr "" #: ../../static/t/edit_message/attachments_pane.html:16 msgid "Attach file" msgstr "" #: ../../static/t/edit_message/attachments_pane.html:21 msgid "Upload" msgstr "" #: ../../static/t/edit_message/section_attach_select.html:4 msgid "Remove" msgstr "" #: ../../static/t/loggedinas.html:3 msgid "Logged in as" msgstr "" #: ../../static/t/loggedinas.html:6 msgid "Not logged in." msgstr "" webcit-8.24-dfsg.orig/po/webcit/Makefile.in0000644000175000017500000000044712271477123020345 0ustar michaelmichaelSRCS:= $(wildcard *.po) OBJS:= $(patsubst %.po, ../../locale/%/LC_MESSAGES/webcit.mo, $(SRCS)) .SUFFIXES: .po .mo .PHONY: all all: $(OBJS) clean: rm -r ../../locale/* ../../locale/%/LC_MESSAGES/webcit.mo: %.po mkdir -p $(patsubst %.po, ../../locale/%/LC_MESSAGES, $<) msgfmt -o $@ $< webcit-8.24-dfsg.orig/po/webcit/create-pot.sh0000755000175000017500000000062712271477123020702 0ustar michaelmichael#!/bin/bash CSOURCES=`find ../.. -name \*.c` HSOURCES=`find ../.. -name \*.html` echo Updating webcit.pot from strings in the source code ... xgettext \ --copyright-holder='The Citadel Project - http://www.citadel.org' \ --from-code='utf-8' \ -k_ \ -o webcit.pot \ --add-comments \ $CSOURCES $HSOURCES for x in *.po do echo Merging webcit.pot into $x ... msgmerge $x webcit.pot -o $x done webcit-8.24-dfsg.orig/po/webcit/bg.po0000644000175000017500000025061012271477123017227 0ustar michaelmichael# Bulgarian translation for citadel # Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010 # This file is distributed under the same license as the citadel package. # FIRST AUTHOR , 2010. # msgid "" msgstr "" "Project-Id-Version: citadel\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-03-20 01:03-0400\n" "PO-Revision-Date: 2012-03-12 09:09+0000\n" "Last-Translator: Валери Фиков \n" "Language-Team: Bulgarian \n" "Language: bg\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2012-03-21 04:47+0000\n" "X-Generator: Launchpad (build 14981)\n" "Language: bg\n" #: ../../roomops.c:708 ../../roomops.c:1005 ../../sieve.c:364 msgid "Cancelled. Changes were not saved." msgstr "" #: ../../roomops.c:838 ../../sieve.c:417 msgid "Your changes have been saved." msgstr "" #: ../../roomops.c:881 #, c-format msgid "User '%s' kicked out of room '%s'." msgstr "" #: ../../roomops.c:898 #, c-format msgid "User '%s' invited to room '%s'." msgstr "" #: ../../roomops.c:927 msgid "Cancelled. No new room was created." msgstr "" #: ../../roomops.c:1187 msgid "Floor has been deleted." msgstr "" #: ../../roomops.c:1211 msgid "New floor has been created." msgstr "" #: ../../roomops.c:1290 msgid "Room list view" msgstr "" #: ../../roomops.c:1293 msgid "Show empty floors" msgstr "" #: ../../roomviews.c:50 msgid "Bulletin Board" msgstr "" #: ../../roomviews.c:51 msgid "Mail Folder" msgstr "" #: ../../roomviews.c:52 msgid "Address Book" msgstr "" #: ../../roomviews.c:53 ../../static/t/iconbar.html:24 #: ../../static/t/iconbar/edit.html:55 msgid "Calendar" msgstr "" #: ../../roomviews.c:54 msgid "Task List" msgstr "" #: ../../roomviews.c:55 msgid "Notes List" msgstr "" #: ../../roomviews.c:56 msgid "Wiki" msgstr "" #: ../../roomviews.c:57 msgid "Calendar List" msgstr "" #: ../../roomviews.c:58 msgid "Journal" msgstr "" #: ../../roomviews.c:59 msgid "Drafts" msgstr "" #: ../../roomviews.c:60 msgid "Blog" msgstr "" #: ../../tasks.c:93 msgid "Completed?" msgstr "" #: ../../tasks.c:95 msgid "Name of task" msgstr "" #: ../../tasks.c:97 msgid "Date due" msgstr "" #: ../../tasks.c:99 msgid "Category" msgstr "" #: ../../tasks.c:101 msgid "Show All" msgstr "" #: ../../tasks.c:223 msgid "Edit task" msgstr "" #: ../../tasks.c:242 ../../calendar.c:98 ../../calendar_view.c:298 #: ../../calendar_view.c:959 ../../calendar_view.c:1003 #: ../../calendar_view.c:1084 msgid "Summary:" msgstr "" #: ../../tasks.c:253 msgid "Start date:" msgstr "" #: ../../tasks.c:261 ../../tasks.c:291 msgid "No date" msgstr "" #: ../../tasks.c:265 ../../tasks.c:294 msgid "or" msgstr "" #: ../../tasks.c:279 ../../tasks.c:308 msgid "Time associated" msgstr "" #: ../../tasks.c:283 msgid "Due date:" msgstr "" #: ../../tasks.c:312 msgid "Completed:" msgstr "" #: ../../tasks.c:323 msgid "Category:" msgstr "" #: ../../tasks.c:333 ../../calendar.c:159 ../../static/t/files.html:12 msgid "Description:" msgstr "" #: ../../tasks.c:351 ../../event.c:764 msgid "Save" msgstr "" #: ../../tasks.c:352 ../../event.c:765 ../../static/t/aide/inet/section.html:5 #: ../../static/t/view_blog/comment.html:12 #: ../../static/t/view_blog/post.html:15 ../../static/t/view_message.html:32 #: ../../static/t/navbar.html:116 ../../static/t/msg_listview.html:27 msgid "Delete" msgstr "" #: ../../tasks.c:353 ../../vcard_edit.c:1216 ../../paging.c:66 #: ../../event.c:767 ../../sysmsgs.c:69 ../../who.c:200 ../../auth.c:812 #: ../../static/t/edit_message.html:135 ../../static/t/confirmlogoff.html:4 msgid "Cancel" msgstr "" #: ../../tasks.c:423 ../../calendar_view.c:1379 msgid "Untitled Task" msgstr "" #: ../../fmt_date.c:310 msgid "Time format" msgstr "" #: ../../listsub.c:54 ../../static/t/listsub/display.html:5 msgid "List subscription" msgstr "" #: ../../listsub.c:67 ../../static/t/listsub/display.html:9 msgid "List subscribe/unsubscribe" msgstr "" #: ../../listsub.c:87 ../../static/t/listsub/display.html:15 #: ../../static/t/listsub/display.html:34 msgid "Confirmation request sent" msgstr "" #: ../../listsub.c:89 #, c-format msgid "" "You are subscribing %s to the %s mailing list. The " "listserver has sent you an e-mail with one additional Web link for you to " "click on to confirm your subscription. This extra step is for your " "protection, as it prevents others from being able to subscribe you to lists " "without your consent.

    Please click on the link which is being e-" "mailed to you and your subscription will be confirmed.
    \n" msgstr "" #: ../../listsub.c:102 ../../static/t/listsub/display.html:24 msgid "Go back..." msgstr "" #: ../../listsub.c:253 ../../listsub.c:291 ../../listsub.c:327 #: ../../listsub.c:334 msgid "You need to specify the mailinglist to subscribe to." msgstr "" #: ../../listsub.c:260 ../../listsub.c:298 msgid "You need to specify the email address you'd like to subscribe with." msgstr "" #: ../../blogview_renderer.c:58 ../../blogview_renderer.c:74 #, c-format msgid "%d comments" msgstr "" #: ../../blogview_renderer.c:61 ../../blogview_renderer.c:77 msgid "permalink" msgstr "Постоянна връзка" #: ../../blogview_renderer.c:302 msgid "Newer posts" msgstr "по-нови мнения" #: ../../blogview_renderer.c:311 msgid "Older posts" msgstr "по-възрастните мнения" #: ../../useredit.c:629 msgid "" "An error occurred while trying to create or edit this address book entry." msgstr "" #: ../../useredit.c:717 msgid "Changes were not saved." msgstr "" #: ../../useredit.c:782 msgid "A new user has been created." msgstr "" #: ../../useredit.c:786 msgid "" "You are attempting to create a new user from within Citadel while running in " "host based authentication mode. In this mode, you must create new users on " "the host system, not within Citadel." msgstr "" #: ../../bbsview_renderer.c:312 msgid "Go to page: " msgstr "" #: ../../bbsview_renderer.c:354 msgid "First" msgstr "" #: ../../bbsview_renderer.c:360 msgid "Last" msgstr "" #: ../../graphics.c:56 msgid "Graphics upload has been cancelled." msgstr "" #: ../../graphics.c:62 msgid "You didn't upload a file." msgstr "" #: ../../graphics.c:112 msgid "your photo" msgstr "" #: ../../graphics.c:119 msgid "the icon for this room" msgstr "" #: ../../graphics.c:127 msgid "the Greetingpicture for the login prompt" msgstr "" #: ../../graphics.c:135 msgid "the Logoff banner picture" msgstr "" #: ../../graphics.c:146 msgid "the icon for this floor" msgstr "" #: ../../calendar_tools.c:100 msgid "Hour: " msgstr "" #: ../../calendar_tools.c:120 msgid "Minute: " msgstr "" #: ../../calendar_tools.c:191 msgid "(status unknown)" msgstr "" #: ../../calendar_tools.c:207 msgid "(needs action)" msgstr "" #: ../../calendar_tools.c:210 msgid "(accepted)" msgstr "" #: ../../calendar_tools.c:213 msgid "(declined)" msgstr "" #: ../../calendar_tools.c:216 msgid "(tenative)" msgstr "" #: ../../calendar_tools.c:219 msgid "(delegated)" msgstr "" #: ../../calendar_tools.c:222 msgid "(completed)" msgstr "" #: ../../calendar_tools.c:225 msgid "(in process)" msgstr "" #: ../../calendar_tools.c:228 msgid "(none)" msgstr "" #: ../../notes.c:343 msgid "Click on any note to edit it." msgstr "" #: ../../vcard_edit.c:175 ../../vcard_edit.c:178 msgid "(no name)" msgstr "" #: ../../vcard_edit.c:443 msgid " (work)" msgstr "" #: ../../vcard_edit.c:445 msgid " (home)" msgstr "" #: ../../vcard_edit.c:447 msgid " (cell)" msgstr "" #: ../../vcard_edit.c:458 ../../vcard_edit.c:1120 msgid "Address:" msgstr "" #: ../../vcard_edit.c:526 msgid "Telephone:" msgstr "" #: ../../vcard_edit.c:531 msgid "E-mail:" msgstr "" #: ../../vcard_edit.c:779 msgid "This address book is empty." msgstr "" #: ../../vcard_edit.c:793 msgid "An internal error has occurred." msgstr "" #: ../../vcard_edit.c:944 msgid "Error" msgstr "" #: ../../vcard_edit.c:1048 msgid "Edit contact information" msgstr "" #: ../../vcard_edit.c:1068 msgid "Prefix" msgstr "" #: ../../vcard_edit.c:1068 msgid "First Name" msgstr "" #: ../../vcard_edit.c:1068 msgid "Middle Name" msgstr "" #: ../../vcard_edit.c:1068 msgid "Last Name" msgstr "" #: ../../vcard_edit.c:1068 msgid "Suffix" msgstr "" #: ../../vcard_edit.c:1089 msgid "Display name:" msgstr "" #: ../../vcard_edit.c:1096 msgid "Title:" msgstr "" #: ../../vcard_edit.c:1103 msgid "Organization:" msgstr "" #: ../../vcard_edit.c:1114 msgid "PO box:" msgstr "" #: ../../vcard_edit.c:1130 msgid "City:" msgstr "" #: ../../vcard_edit.c:1136 msgid "State:" msgstr "" #: ../../vcard_edit.c:1142 msgid "ZIP code:" msgstr "" #: ../../vcard_edit.c:1148 msgid "Country:" msgstr "" #: ../../vcard_edit.c:1158 msgid "Home telephone:" msgstr "" #: ../../vcard_edit.c:1164 msgid "Work telephone:" msgstr "" #: ../../vcard_edit.c:1170 msgid "Mobile telephone:" msgstr "" #: ../../vcard_edit.c:1176 msgid "Fax number:" msgstr "" #: ../../vcard_edit.c:1187 msgid "Primary Internet e-mail address" msgstr "" #: ../../vcard_edit.c:1194 msgid "Internet e-mail aliases" msgstr "" #: ../../vcard_edit.c:1215 ../../sysmsgs.c:67 msgid "Save changes" msgstr "" #: ../../vcard_edit.c:1261 msgid "Unable to enter the room to save your message" msgstr "" #: ../../vcard_edit.c:1265 msgid "Aborting." msgstr "" #: ../../vcard_edit.c:1297 ../../vcard_edit.c:1341 ../../auth.c:367 #: ../../auth.c:397 msgid "An error has occurred." msgstr "" #: ../../vcard_edit.c:1399 msgid "Could Not decode vcard photo\n" msgstr "" #: ../../preferences.c:880 msgid "Cancelled. No settings were changed." msgstr "" #: ../../preferences.c:1092 msgid "Make this my start page" msgstr "" #: ../../preferences.c:1130 msgid "This isn't allowed to become the start page." msgstr "" #: ../../preferences.c:1132 msgid "You no longer have a start page selected." msgstr "" #: ../../preferences.c:1182 msgid "Prefered startpage" msgstr "" #: ../../calendar.c:76 msgid "Meeting invitation" msgstr "" #: ../../calendar.c:79 msgid "Attendee's reply to your invitation" msgstr "" #: ../../calendar.c:82 msgid "Published event" msgstr "" #: ../../calendar.c:85 msgid "This is an unknown type of calendar item." msgstr "" #: ../../calendar.c:107 ../../calendar_view.c:306 ../../calendar_view.c:964 #: ../../calendar_view.c:1008 ../../calendar_view.c:1089 msgid "Location:" msgstr "" #: ../../calendar.c:132 ../../calendar_view.c:351 ../../calendar_view.c:970 msgid "Date:" msgstr "" #: ../../calendar.c:139 ../../calendar_view.c:373 ../../calendar_view.c:1013 #: ../../calendar_view.c:1099 msgid "Starting date/time:" msgstr "" #: ../../calendar.c:150 ../../calendar_view.c:376 ../../calendar_view.c:1015 #: ../../calendar_view.c:1101 msgid "Ending date/time:" msgstr "" #: ../../calendar.c:168 ../../event.c:90 msgid "Recurrence" msgstr "" #: ../../calendar.c:169 ../../event.c:505 msgid "This is a recurring event" msgstr "" #: ../../calendar.c:178 msgid "Attendee:" msgstr "" #: ../../calendar.c:218 #, c-format msgid "This is an update of '%s' which is already in your calendar." msgstr "" #: ../../calendar.c:222 #, c-format msgid "This event would conflict with '%s' which is already in your calendar." msgstr "" #: ../../calendar.c:227 msgid "Update:" msgstr "" #: ../../calendar.c:228 msgid "CONFLICT:" msgstr "" #: ../../calendar.c:251 msgid "How would you like to respond to this invitation?" msgstr "" #: ../../calendar.c:252 msgid "Accept" msgstr "" #: ../../calendar.c:253 msgid "Tentative" msgstr "" #: ../../calendar.c:254 msgid "Decline" msgstr "" #: ../../calendar.c:271 msgid "Click Update to accept this reply and update your calendar." msgstr "" #: ../../calendar.c:272 msgid "Update" msgstr "" #: ../../calendar.c:273 msgid "Ignore" msgstr "" #: ../../calendar.c:295 msgid "There was an error parsing this calendar item." msgstr "" #: ../../calendar.c:328 msgid "" "You have accepted this meeting invitation. It has been entered into your " "calendar." msgstr "" #: ../../calendar.c:332 msgid "" "You have tentatively accepted this meeting invitation. It has been " "'pencilled in' to your calendar." msgstr "" #: ../../calendar.c:336 msgid "" "You have declined this meeting invitation. It has not been entered " "into your calendar." msgstr "" #: ../../calendar.c:341 msgid "A reply has been sent to the meeting organizer." msgstr "" #. / Translators: RSVP aka Répondez s'il-vous-plaît Is the term #. / that the recipient of an ical-invitation should please #. / answer this request. #: ../../calendar.c:376 msgid "Your calendar has been updated to reflect this RSVP." msgstr "" #: ../../calendar.c:378 msgid "" "You have chosen to ignore this RSVP. Your calendar has not been " "updated." msgstr "" #: ../../calendar.c:932 msgid "Calendar day view begins at:" msgstr "" #: ../../calendar.c:933 msgid "Calendar day view ends at:" msgstr "" #: ../../calendar.c:934 msgid "Week starts on:" msgstr "" #: ../../paging.c:35 msgid "Send instant message" msgstr "" #: ../../paging.c:43 msgid "Send an instant message to: " msgstr "" #: ../../paging.c:57 msgid "Enter message text:" msgstr "" #: ../../paging.c:65 ../../static/t/edit_message.html:109 msgid "Send message" msgstr "" #: ../../paging.c:84 msgid "Message was not sent." msgstr "" #: ../../paging.c:95 msgid "Message has been sent to " msgstr "" #: ../../iconbar.c:328 msgid "Iconbar Setting" msgstr "" #. #. * Set to 'unknown' right from the beginning. Unless we learn #. * something else, that's what we'll go with. #. #: ../../availability.c:148 msgid "availability unknown" msgstr "" #: ../../availability.c:169 msgid "free" msgstr "" #: ../../availability.c:179 msgid "BUSY" msgstr "" #: ../../serv_func.c:193 msgid "" "This server is already serving its maximum number of users and cannot accept " "any additional logins at this time. Please try again later or contact your " "system administrator." msgstr "" "Този сървър е вече обслужва максимален брой потребители и не може да " "обслужва повече потребители в този момент. Моля, опитайте отново по-късно " "или се свържете с вашия системен администратор." #: ../../serv_func.c:198 ../../serv_func.c:227 msgid "Received unexpected answer from Citadel server; bailing out." msgstr "" #: ../../serv_func.c:236 #, c-format msgid "" "You are connected to a Citadel server running Citadel %d.%02d. \n" "In order to run this version of WebCit you must also have Citadel %d.%02d or " "newer.\n" "\n" "\n" msgstr "" "Вие сте свързан към Citadel сървър работещ с Citadel %d.%02d. \n" "За да стартирате тази версия на WebCit, трябва да имате също Citadel %d.%02d " "или по-нова.\n" "\n" "\n" #: ../../event.c:70 msgid "seconds" msgstr "" #: ../../event.c:71 msgid "minutes" msgstr "" #: ../../event.c:72 msgid "hours" msgstr "" #: ../../event.c:73 msgid "days" msgstr "" #: ../../event.c:74 msgid "weeks" msgstr "" #: ../../event.c:75 msgid "months" msgstr "" #: ../../event.c:76 msgid "years" msgstr "" #: ../../event.c:77 msgid "never" msgstr "" #: ../../event.c:81 msgid "first" msgstr "" #: ../../event.c:82 msgid "second" msgstr "" #: ../../event.c:83 msgid "third" msgstr "" #: ../../event.c:84 msgid "fourth" msgstr "" #: ../../event.c:85 msgid "fifth" msgstr "" #: ../../event.c:88 msgid "Event" msgstr "" #: ../../event.c:89 ../../event.c:437 ../../event.c:449 msgid "Attendees" msgstr "" #: ../../event.c:167 msgid "Add or edit an event" msgstr "" #: ../../event.c:206 ../../static/t/iconbar.html:13 #: ../../static/t/iconbar/edit.html:29 msgid "Summary" msgstr "" #: ../../event.c:217 msgid "Location" msgstr "" #: ../../event.c:228 ../../calendar_view.c:760 msgid "Start" msgstr "" #: ../../event.c:271 ../../calendar_view.c:957 ../../calendar_view.c:986 msgid "All day event" msgstr "" #: ../../event.c:277 ../../calendar_view.c:761 msgid "End" msgstr "" #: ../../event.c:327 ../../static/t/iconbar.html:34 #: ../../static/t/iconbar/edit.html:49 msgid "Notes" msgstr "" #: ../../event.c:369 msgid "Organizer" msgstr "" #: ../../event.c:374 msgid "(you are the organizer)" msgstr "" #: ../../event.c:392 msgid "Show time as:" msgstr "" #: ../../event.c:415 msgid "Free" msgstr "" #: ../../event.c:423 msgid "Busy" msgstr "" #: ../../event.c:440 msgid "(One per line)" msgstr "" #: ../../event.c:450 ../../static/t/edit_message.html:143 #: ../../static/t/iconbar.html:29 ../../static/t/iconbar/edit.html:42 msgid "Contacts" msgstr "" #: ../../event.c:513 msgid "Recurrence rule" msgstr "" #: ../../event.c:517 msgid "Repeats every" msgstr "" #. begin 'weekday_selector' div #: ../../event.c:535 msgid "on these weekdays:" msgstr "" #: ../../event.c:593 #, c-format msgid "on day %s%d%s of the month" msgstr "" #: ../../event.c:602 ../../event.c:664 msgid "on the " msgstr "" #: ../../event.c:626 msgid "of the month" msgstr "" #: ../../event.c:655 msgid "every " msgstr "" #: ../../event.c:656 msgid "year on this date" msgstr "" #: ../../event.c:688 ../../static/t/msg_listselector_bottom.html:7 #: ../../static/t/msg_listselector_top.html:7 msgid "of" msgstr "" #: ../../event.c:712 msgid "Recurrence range" msgstr "" #: ../../event.c:720 msgid "No ending date" msgstr "" #: ../../event.c:727 msgid "Repeat this event" msgstr "" #: ../../event.c:730 msgid "times" msgstr "" #: ../../event.c:738 msgid "Repeat this event until " msgstr "" #: ../../event.c:766 msgid "Check attendee availability" msgstr "" #: ../../event.c:858 ../../calendar_view.c:272 ../../calendar_view.c:468 #: ../../calendar_view.c:937 msgid "Untitled Event" msgstr "" #: ../../sysmsgs.c:52 #, c-format msgid "Edit %s" msgstr "" #: ../../sysmsgs.c:55 #, c-format msgid "" "Enter %s below. Text is formatted to the reader's browser. A newline is " "forced by preceding the next line by a blank." msgstr "" #: ../../sysmsgs.c:89 #, c-format msgid "Cancelled. %s was not saved." msgstr "" #: ../../sysmsgs.c:109 msgid " has been saved." msgstr "" #: ../../sysmsgs.c:116 ../../sysmsgs.c:117 msgid "Room info" msgstr "" #: ../../sysmsgs.c:122 ../../sysmsgs.c:124 msgid "Your bio" msgstr "" #: ../../calendar_view.c:297 ../../calendar_view.c:958 #: ../../calendar_view.c:1002 ../../calendar_view.c:1083 #: ../../static/t/sieve/display_one.html:20 msgid "From" msgstr "" #: ../../calendar_view.c:355 ../../calendar_view.c:974 msgid "Starting date:" msgstr "" #: ../../calendar_view.c:361 ../../calendar_view.c:976 msgid "Ending date:" msgstr "" #: ../../calendar_view.c:369 ../../calendar_view.c:1095 msgid "Date/time:" msgstr "" #: ../../calendar_view.c:386 ../../calendar_view.c:980 #: ../../calendar_view.c:1018 ../../calendar_view.c:1105 #: ../../static/t/room/edit/tab_share.html:32 msgid "Notes:" msgstr "" #: ../../calendar_view.c:585 ../../calendar_view.c:721 msgid "previous" msgstr "" #: ../../calendar_view.c:597 ../../calendar_view.c:733 #: ../../calendar_view.c:1308 msgid "next" msgstr "" #: ../../calendar_view.c:756 msgid "Week" msgstr "" #: ../../calendar_view.c:758 msgid "Hours" msgstr "" #: ../../calendar_view.c:759 ../../static/t/sieve/display_one.html:22 #: ../../static/t/msg_listview.html:9 msgid "Subject" msgstr "" #: ../../calendar_view.c:1001 ../../calendar_view.c:1024 msgid "Ongoing event" msgstr "" #: ../../messages.c:70 msgid "ERROR:" msgstr "" #: ../../messages.c:88 msgid "Empty message" msgstr "" #: ../../messages.c:1010 msgid "Cancelled. Message was not posted." msgstr "" #: ../../messages.c:1013 msgid "Automatically cancelled because you have already saved this message." msgstr "" #: ../../messages.c:1037 msgid "Saved to Drafts failed: " msgstr "" #: ../../messages.c:1102 msgid "Refusing to post empty message.\n" msgstr "" #: ../../messages.c:1128 msgid "Message has been saved to Drafts.\n" msgstr "" #: ../../messages.c:1137 msgid "Message has been sent.\n" msgstr "" #: ../../messages.c:1140 msgid "Message has been posted.\n" msgstr "" #: ../../messages.c:1679 msgid "The message was not moved." msgstr "" #: ../../messages.c:1719 #, c-format msgid "An error occurred while retrieving this part: %s/%s\n" msgstr "" #: ../../messages.c:1796 #, c-format msgid "An error occurred while retrieving this part: %s\n" msgstr "" #: ../../messages.c:1956 msgid "Attach signature to email messages?" msgstr "" #: ../../messages.c:1959 msgid "Use this signature:" msgstr "" #: ../../messages.c:1961 msgid "Default character set for email headers:" msgstr "" #: ../../messages.c:1964 msgid "Preferred email address" msgstr "" #: ../../messages.c:1966 msgid "Preferred display name for email messages" msgstr "" #: ../../messages.c:1970 msgid "Preferred display name for bulletin board posts" msgstr "" #: ../../messages.c:1973 msgid "Mailbox view mode" msgstr "" #: ../../inetconf.c:110 ../../inetconf.c:119 ../../inetconf.c:133 #: ../../inetconf.c:159 ../../netconf.c:156 ../../netconf.c:183 #: ../../netconf.c:191 ../../netconf.c:239 ../../netconf.c:247 msgid "Invalid Parameter" msgstr "" #: ../../inetconf.c:126 msgid " has been deleted." msgstr "" #. added status message #: ../../inetconf.c:144 msgid " added." msgstr "" #: ../../who.c:154 msgid "Edit your session display" msgstr "" #: ../../who.c:158 msgid "" "This screen allows you to change the way your session appears in the 'Who is " "online' listing. To turn off any 'fake' name you've previously set, simply " "click the appropriate 'change' button without typing anything in the " "corresponding box. " msgstr "" #: ../../who.c:171 msgid "Room name:" msgstr "" #: ../../who.c:176 msgid "Change room name" msgstr "" #: ../../who.c:180 msgid "Host name:" msgstr "" #: ../../who.c:185 msgid "Change host name" msgstr "" #: ../../who.c:190 ../../static/t/aide/edituser/detailview.html:20 #: ../../static/t/openid_manual_create.html:9 #: ../../static/t/get_logged_in.html:57 ../../static/t/get_logged_in.html:72 msgid "User name:" msgstr "" #: ../../who.c:195 msgid "Change user name" msgstr "" #: ../../siteconfig.c:46 ../../siteconfig.c:64 ../../roomlist.c:44 #: ../../roomlist.c:394 ../../static/t/room/edit/tab_expire.html:72 #: ../../static/t/room/edit/tab_config.html:149 #: ../../static/t/room/edit/tab_access.html:42 msgid "Higher access is required to access this function." msgstr "" #: ../../siteconfig.c:256 msgid "WARNING: Failed to parse Server Config; do you run a to new citserver?" msgstr "" #: ../../siteconfig.c:319 msgid "Your system configuration has been updated." msgstr "" #: ../../wiki.c:69 ../../wiki.c:162 ../../wiki.c:282 #, c-format msgid "There is no room called '%s'." msgstr "" #: ../../wiki.c:76 #, c-format msgid "'%s' is not a Wiki room." msgstr "" #: ../../wiki.c:110 #, c-format msgid "There is no page called '%s' here." msgstr "" #: ../../wiki.c:112 msgid "" "Select the 'Edit this page' link in the room banner if you would like to " "create this page." msgstr "" #: ../../wiki.c:181 ../../static/t/msg_listview.html:11 msgid "Date" msgstr "" #: ../../wiki.c:182 msgid "Author" msgstr "" #: ../../wiki.c:209 ../../wiki.c:218 msgid "(show)" msgstr "" #: ../../wiki.c:211 ../../static/t/navbar.html:145 msgid "Current version" msgstr "" #: ../../wiki.c:223 msgid "(revert)" msgstr "" #: ../../wiki.c:300 msgid "Page title" msgstr "" #: ../../webcit.c:316 msgid "Authorization Required" msgstr "" #: ../../webcit.c:324 #, c-format msgid "" "The resource you requested requires a valid username and password. You could " "not be logged in: %s\n" msgstr "" #: ../../webcit.c:647 ../../auth.c:526 msgid "" "This program was unable to connect or stay connected to the Citadel server. " "Please report this problem to your system administrator." msgstr "" #: ../../webcit.c:654 ../../auth.c:532 msgid "Read More..." msgstr "" #: ../../smtpqueue.c:134 ../../static/t/aide/ignetconf/section.html:5 #: ../../static/t/view_mailq/message.html:2 msgid "(Delete)" msgstr "" #: ../../smtpqueue.c:334 msgid "First Attempt pending" msgstr "" #: ../../roomlist.c:99 msgid "My Folders" msgstr "" #: ../../downloads.c:289 #, c-format msgid "An error occurred while retrieving this file: %s\n" msgstr "" #: ../../roomtokens.c:572 msgid "file" msgstr "" #: ../../roomtokens.c:574 msgid "files" msgstr "" #: ../../summary.c:128 msgid "(None)" msgstr "" #: ../../summary.c:184 msgid "(Nothing)" msgstr "" #: ../../msg_renderers.c:579 ../../static/t/who/bio.html:15 msgid "edit" msgstr "" #: ../../msg_renderers.c:1119 msgid "I don't know how to display " msgstr "" #: ../../msg_renderers.c:1353 msgid "(no subject)" msgstr "" #: ../../addressbook_popup.c:186 msgid "Add" msgstr "" #. an erased user #: ../../auth.c:30 ../../static/t/aide/edituser/detailview.html:43 #: ../../static/t/aide/siteconfig/tab_access.html:40 #: ../../static/t/aide/siteconfig/tab_access.html:51 msgid "Deleted" msgstr "" #. a new user #: ../../auth.c:33 ../../static/t/aide/edituser/detailview.html:44 #: ../../static/t/aide/siteconfig/tab_access.html:41 #: ../../static/t/aide/siteconfig/tab_access.html:52 #: ../../static/t/get_logged_in.html:79 msgid "New User" msgstr "" #. a trouble maker #: ../../auth.c:36 ../../static/t/aide/edituser/detailview.html:45 #: ../../static/t/aide/siteconfig/tab_access.html:42 #: ../../static/t/aide/siteconfig/tab_access.html:53 msgid "Problem User" msgstr "" #. user with normal privileges #: ../../auth.c:39 ../../static/t/aide/edituser/detailview.html:46 #: ../../static/t/aide/siteconfig/tab_access.html:43 #: ../../static/t/aide/siteconfig/tab_access.html:54 msgid "Local User" msgstr "" #. a user that may access network resources #: ../../auth.c:42 ../../static/t/aide/edituser/detailview.html:47 #: ../../static/t/aide/siteconfig/tab_access.html:44 #: ../../static/t/aide/siteconfig/tab_access.html:55 msgid "Network User" msgstr "" #. a moderator #: ../../auth.c:45 ../../static/t/aide/edituser/detailview.html:48 #: ../../static/t/aide/siteconfig/tab_access.html:45 #: ../../static/t/aide/siteconfig/tab_access.html:56 msgid "Preferred User" msgstr "" #. chief #: ../../auth.c:48 ../../static/t/aide/edituser/detailview.html:49 #: ../../static/t/aide/siteconfig/tab_access.html:46 #: ../../static/t/aide/siteconfig/tab_access.html:57 msgid "Admin" msgstr "" #: ../../auth.c:513 ../../static/t/iconbar.html:80 #: ../../static/t/confirmlogoff.html:3 #: ../../static/t/menu/basic_commands.html:19 msgid "Log off" msgstr "" #: ../../auth.c:537 msgid "Log in again" msgstr "" #: ../../auth.c:585 ../../static/t/aide/usermanagement.html:3 msgid "Validate new users" msgstr "" #: ../../auth.c:605 msgid "No users require validation at this time." msgstr "" #: ../../auth.c:655 msgid "very weak" msgstr "" #: ../../auth.c:658 msgid "weak" msgstr "" #: ../../auth.c:661 msgid "ok" msgstr "" #: ../../auth.c:665 msgid "strong" msgstr "" #: ../../auth.c:683 #, c-format msgid "Current access level: %d (%s)\n" msgstr "" #: ../../auth.c:691 msgid "Select access level for this user:" msgstr "" #: ../../auth.c:776 ../../static/t/menu/your_info.html:4 msgid "Change your password" msgstr "" #: ../../auth.c:800 msgid "Enter new password:" msgstr "" #: ../../auth.c:804 msgid "Enter it again to confirm:" msgstr "" #: ../../auth.c:810 msgid "Change password" msgstr "" #: ../../auth.c:830 msgid "Cancelled. Password was not changed." msgstr "" #: ../../auth.c:839 msgid "They don't match. Password was not changed." msgstr "" #: ../../auth.c:845 msgid "Blank passwords are not allowed." msgstr "" #: ../../openid.c:34 msgid "Manage Account/OpenID Associations" msgstr "" #: ../../openid.c:52 msgid "Do you really want to delete this OpenID?" msgstr "" #: ../../openid.c:53 msgid "(delete)" msgstr "" #: ../../openid.c:61 msgid "Add an OpenID: " msgstr "" #: ../../openid.c:64 msgid "Attach" msgstr "" #: ../../openid.c:68 #, c-format msgid "%s does not permit authentication via OpenID." msgstr "" #: ../../html2html.c:136 #, c-format msgid "realloc() error! couldn't get %d bytes: %s" msgstr "" #: ../../static/t/viewomatic.html:4 msgid "View as:" msgstr "" #: ../../static/t/sieve/list.html:32 ../../static/t/sieve/none.html:4 #: ../../static/t/menu/your_info.html:7 msgid "View/edit server-side mail filters" msgstr "" #: ../../static/t/sieve/list.html:41 msgid "When new mail arrives: " msgstr "" #: ../../static/t/sieve/list.html:43 msgid "Leave it in my inbox without filtering" msgstr "" #: ../../static/t/sieve/list.html:44 msgid "Filter it according to rules selected below" msgstr "" #: ../../static/t/sieve/list.html:45 msgid "Filter it through a manually edited script (advanced users only)" msgstr "" #: ../../static/t/sieve/list.html:52 msgid "Your incoming mail will not be filtered through any scripts." msgstr "" #: ../../static/t/sieve/list.html:64 msgid "Add rule" msgstr "" #: ../../static/t/sieve/list.html:71 msgid "The currently active script is: " msgstr "" #: ../../static/t/sieve/list.html:76 ../../static/t/sieve/add.html:3 msgid "Add or delete scripts" msgstr "" #: ../../static/t/sieve/display_one.html:16 msgid "If" msgstr "" #: ../../static/t/sieve/display_one.html:21 msgid "To or Cc" msgstr "" #: ../../static/t/sieve/display_one.html:23 msgid "Reply-to" msgstr "" #: ../../static/t/sieve/display_one.html:24 #: ../../static/t/msg_listview.html:10 #: ../../static/t/view_mailq/header.html:27 msgid "Sender" msgstr "" #: ../../static/t/sieve/display_one.html:25 msgid "Resent-From" msgstr "" #: ../../static/t/sieve/display_one.html:26 msgid "Resent-To" msgstr "" #: ../../static/t/sieve/display_one.html:27 msgid "Envelope From" msgstr "" #: ../../static/t/sieve/display_one.html:28 msgid "Envelope To" msgstr "" #: ../../static/t/sieve/display_one.html:29 msgid "X-Mailer" msgstr "" #: ../../static/t/sieve/display_one.html:30 msgid "X-Spam-Flag" msgstr "" #: ../../static/t/sieve/display_one.html:31 msgid "X-Spam-Status" msgstr "" #: ../../static/t/sieve/display_one.html:32 msgid "List-ID" msgstr "" #: ../../static/t/sieve/display_one.html:33 msgid "Message size" msgstr "" #: ../../static/t/sieve/display_one.html:34 #: ../../static/t/select_messageindex_all.html:1 msgid "All" msgstr "" #: ../../static/t/sieve/display_one.html:41 msgid "contains" msgstr "" #: ../../static/t/sieve/display_one.html:42 msgid "does not contain" msgstr "" #: ../../static/t/sieve/display_one.html:43 msgid "is" msgstr "" #: ../../static/t/sieve/display_one.html:44 msgid "is not" msgstr "" #: ../../static/t/sieve/display_one.html:45 msgid "matches" msgstr "" #: ../../static/t/sieve/display_one.html:46 msgid "does not match" msgstr "" #: ../../static/t/sieve/display_one.html:52 msgid "(All messages)" msgstr "" #: ../../static/t/sieve/display_one.html:56 msgid "is larger than" msgstr "" #: ../../static/t/sieve/display_one.html:57 msgid "is smaller than" msgstr "" #: ../../static/t/sieve/display_one.html:59 msgid "bytes" msgstr "" #: ../../static/t/sieve/display_one.html:65 msgid "Keep" msgstr "" #: ../../static/t/sieve/display_one.html:66 msgid "Discard silently" msgstr "" #: ../../static/t/sieve/display_one.html:67 msgid "Reject" msgstr "" #: ../../static/t/sieve/display_one.html:68 msgid "Move message to" msgstr "" #: ../../static/t/sieve/display_one.html:69 msgid "Forward to" msgstr "" #: ../../static/t/sieve/display_one.html:70 msgid "Vacation" msgstr "" #: ../../static/t/sieve/display_one.html:82 msgid "Message:" msgstr "" #: ../../static/t/sieve/display_one.html:90 msgid "and then" msgstr "" #: ../../static/t/sieve/display_one.html:93 msgid "continue processing" msgstr "" #: ../../static/t/sieve/display_one.html:94 msgid "stop" msgstr "" #: ../../static/t/sieve/none.html:9 msgid "" "This installation of Citadel was built without support for server-side mail " "filtering.
    Please contact your system administrator if you require this " "feature.
    " msgstr "" #: ../../static/t/sieve/add.html:9 msgid "Add a new script" msgstr "" #: ../../static/t/sieve/add.html:10 msgid "" "To create a new script, enter the desired script name in the box below and " "click 'Create'." msgstr "" #: ../../static/t/sieve/add.html:14 msgid "Script name: " msgstr "" #: ../../static/t/sieve/add.html:18 msgid "Edit scripts" msgstr "" #: ../../static/t/sieve/add.html:20 msgid "Return to the script editing screen" msgstr "" #: ../../static/t/sieve/add.html:23 msgid "Delete scripts" msgstr "" #: ../../static/t/sieve/add.html:24 msgid "" "To delete an existing script, select the script name from the list and click " "'Delete'." msgstr "" #: ../../static/t/msg/confirm_move.html:4 msgid "Confirm move of message" msgstr "" #: ../../static/t/msg/confirm_move.html:12 msgid "Move this message to:" msgstr "" #: ../../static/t/login.html:5 msgid "powered by" msgstr "" #: ../../static/t/login.html:15 ../../static/t/iconbar.html:88 #: ../../static/t/get_logged_in.html:64 ../../static/t/get_logged_in.html:88 #: ../../static/t/get_logged_in.html:93 ../../static/t/get_logged_in.html:98 #: ../../static/t/get_logged_in.html:107 msgid "Log in" msgstr "" #: ../../static/t/trailing.html:14 msgid "" "WARNING: You have JavaScript disabled in your web browser. Many functions " "of this system will not work properly." msgstr "" #: ../../static/t/view_submessage.html:4 #: ../../static/t/view_message/replyquote.html:3 #: ../../static/t/view_message/replyquote.html:7 #: ../../static/t/view_message/print.html:8 ../../static/t/view_message.html:7 msgid "from " msgstr "" #: ../../static/t/searchomatic.html:4 msgid "Search: " msgstr "" #: ../../static/t/listsub/display.html:16 msgid "You are subscribing " msgstr "" #: ../../static/t/listsub/display.html:17 msgid " to the " msgstr "" #: ../../static/t/listsub/display.html:18 msgid " mailing list." msgstr "" #: ../../static/t/listsub/display.html:19 msgid "" "The listserver has sent you an e-mail with one additional Web link for you " "to click on to confirm your subscription." msgstr "" #: ../../static/t/listsub/display.html:20 msgid "" "This extra step is for your protection, as it prevents others from being " "able to subscribe you to lists without your consent." msgstr "" #: ../../static/t/listsub/display.html:22 msgid "" "Please click on the link which is being e-mailed to you and your " "subscription will be confirmed." msgstr "" #: ../../static/t/listsub/display.html:27 #: ../../static/t/listsub/display.html:47 msgid "ERROR" msgstr "" #: ../../static/t/listsub/display.html:35 msgid "You are unsubscribing" msgstr "" #: ../../static/t/listsub/display.html:37 msgid "from the" msgstr "" #: ../../static/t/listsub/display.html:39 msgid "mailing list." msgstr "" #: ../../static/t/listsub/display.html:40 msgid "" "The listserver has sent you an e-mail with one additional Web link for you " "to click on to confirm your unsubscription." msgstr "" #: ../../static/t/listsub/display.html:41 msgid "" "This extra step is for your protection, as it prevents others from being " "able to unsubscribe you from lists without your consent." msgstr "" #: ../../static/t/listsub/display.html:43 msgid "" "Please click on the link which is being e-mailed to you and your " "unsubscription will be confirmed." msgstr "" #: ../../static/t/listsub/display.html:44 msgid "Back..." msgstr "" #: ../../static/t/listsub/display.html:54 msgid "Confirmation successful!" msgstr "" #: ../../static/t/listsub/display.html:56 msgid "Confirmation failed." msgstr "" #: ../../static/t/listsub/display.html:57 msgid "This could mean one of two things:" msgstr "" #: ../../static/t/listsub/display.html:59 msgid "" "You waited too long to confirm your subscribe/unsubscribe request (the " "confirmation link is only valid for three days)" msgstr "" #: ../../static/t/listsub/display.html:60 msgid "" "You have already successfully confirmed your subscribe/unsubscribe " "request and are attempting to do it again." msgstr "" #: ../../static/t/listsub/display.html:62 msgid "The error returned by the server was: " msgstr "" #: ../../static/t/listsub/display.html:70 msgid "Name of list:" msgstr "" #: ../../static/t/listsub/display.html:75 msgid "Your e-mail address:" msgstr "" #: ../../static/t/listsub/display.html:79 msgid "(If subscribing) preferred format: " msgstr "" #: ../../static/t/listsub/display.html:80 msgid "One message at a time" msgstr "" #: ../../static/t/listsub/display.html:81 msgid "Digest format" msgstr "" #: ../../static/t/listsub/display.html:89 msgid "" "When you attempt to subscribe or unsubscribe to a mailing list, you will " "receive an e-mail containing one additional web link to click on for final " "confirmation." msgstr "" #: ../../static/t/listsub/display.html:90 msgid "" "This extra step is for your protection, as it prevents others from being " "able to subscribe or unsubscribe you to lists." msgstr "" #: ../../static/t/floors_edit_one.html:11 msgid "(delete floor)" msgstr "" #: ../../static/t/floors_edit_one.html:13 msgid "(edit graphic)" msgstr "" #: ../../static/t/floors.html:4 msgid "Add/change/delete floors" msgstr "" #: ../../static/t/floors.html:10 msgid "Floor number" msgstr "" #: ../../static/t/floors.html:11 msgid "Floor name" msgstr "" #: ../../static/t/floors.html:12 msgid "Number of rooms" msgstr "" #: ../../static/t/floors.html:13 msgid "Floor CSS" msgstr "" #: ../../static/t/files.html:4 msgid "Files available for download in" msgstr "" #: ../../static/t/files.html:9 msgid "Upload a file:" msgstr "" #: ../../static/t/files.html:30 msgid "Filename" msgstr "" #: ../../static/t/files.html:31 msgid "Size" msgstr "" #: ../../static/t/files.html:32 msgid "Content" msgstr "" #: ../../static/t/files.html:33 msgid "Description" msgstr "" #: ../../static/t/edit_message.html:9 ../../static/t/iconbar.html:50 #: ../../static/t/iconbar.html:59 msgid "Loading" msgstr "" #: ../../static/t/edit_message.html:23 msgid "from" msgstr "" #: ../../static/t/edit_message.html:29 ../../static/t/edit_message.html:38 msgid "Anonymous" msgstr "" #: ../../static/t/edit_message.html:47 msgid "in" msgstr "" #: ../../static/t/edit_message.html:51 msgid "To:" msgstr "" #: ../../static/t/edit_message.html:57 #: ../../static/t/view_message/print.html:15 #: ../../static/t/view_message.html:15 msgid "CC:" msgstr "" #: ../../static/t/edit_message.html:63 msgid "BCC:" msgstr "" #: ../../static/t/edit_message.html:71 msgid "Subject (optional):" msgstr "" #: ../../static/t/edit_message.html:71 #: ../../static/t/view_message/replyquote.html:8 #: ../../static/t/view_message/print.html:16 #: ../../static/t/view_message.html:16 msgid "Subject:" msgstr "" #: ../../static/t/edit_message.html:86 msgid "--- forwarded message ---" msgstr "" #: ../../static/t/edit_message.html:110 msgid "Post message" msgstr "" #: ../../static/t/edit_message.html:118 msgid "Save to Drafts" msgstr "" #: ../../static/t/edit_message.html:126 #: ../../static/t/edit_message/attachments_pane.html:5 msgid "Attachments:" msgstr "" #: ../../static/t/aide/display_serverrestart_page.html:4 msgid "Message to your Users:" msgstr "" #: ../../static/t/aide/display_generic_result.html:2 msgid "Server command results" msgstr "" #: ../../static/t/aide/display_generic_result.html:18 msgid "Enter another command" msgstr "" #: ../../static/t/aide/display_generic_result.html:19 msgid "Return to menu" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:3 msgid "Site configuration" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:6 #: ../../static/t/aide/edituser/select.html:9 msgid "You need to be aide to view this." msgstr "" #: ../../static/t/aide/display_sitewide_config.html:11 msgid "General" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:12 msgid "Access" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:13 msgid "Network" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:14 msgid "Tuning" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:15 msgid "Directory" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:16 msgid "Auto-purger" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:17 msgid "Indexing/Journaling" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:18 #: ../../static/t/aide/siteconfig/tab_pushmail.html:1 msgid "Push Email" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:19 msgid "Pop3" msgstr "" #: ../../static/t/aide/usermanagement.html:2 msgid "Add, change, delete user accounts" msgstr "" #: ../../static/t/aide/display_inetconf.html:5 #: ../../static/t/aide/display_menu.html:5 msgid "System Administration Menu" msgstr "" #: ../../static/t/aide/display_inetconf.html:6 #: ../../static/t/aide/display_menu.html:6 msgid "Room Admin Menu" msgstr "" #: ../../static/t/aide/display_inetconf.html:13 msgid "Local host aliases" msgstr "" #: ../../static/t/aide/display_inetconf.html:14 msgid "Directory domains" msgstr "" #: ../../static/t/aide/display_inetconf.html:15 msgid "Smart hosts" msgstr "" #: ../../static/t/aide/display_inetconf.html:16 msgid "Fallback smart hosts" msgstr "" #: ../../static/t/aide/display_inetconf.html:17 msgid "Notification hosts" msgstr "" #: ../../static/t/aide/display_inetconf.html:22 msgid "RBL hosts" msgstr "" #: ../../static/t/aide/display_inetconf.html:23 msgid "SpamAssassin hosts" msgstr "" #: ../../static/t/aide/display_inetconf.html:24 msgid "ClamAV clamd hosts" msgstr "" #: ../../static/t/aide/display_inetconf.html:25 msgid "Masqueradable domains" msgstr "" #: ../../static/t/aide/edituser/select.html:5 msgid "Edit or delete users" msgstr "" #: ../../static/t/aide/edituser/select.html:17 msgid "Add users" msgstr "" #: ../../static/t/aide/edituser/select.html:20 msgid "Edit or Delete users" msgstr "" #: ../../static/t/aide/edituser/box_select.html:1 msgid "" "To edit an existing user account, select the user name from the list and " "click 'Edit'." msgstr "" #: ../../static/t/aide/edituser/detailview.html:4 msgid "Edit user account: " msgstr "" #: ../../static/t/aide/edituser/detailview.html:24 #: ../../static/t/room/edit/tab_feed.html:14 msgid "Password" msgstr "" #: ../../static/t/aide/edituser/detailview.html:28 msgid "Permission to send Internet mail" msgstr "" #: ../../static/t/aide/edituser/detailview.html:32 msgid "Number of logins" msgstr "" #: ../../static/t/aide/edituser/detailview.html:36 msgid "Messages submitted" msgstr "" #: ../../static/t/aide/edituser/detailview.html:40 msgid "Access level" msgstr "" #: ../../static/t/aide/edituser/detailview.html:54 msgid "User ID number" msgstr "" #: ../../static/t/aide/edituser/detailview.html:58 msgid "Date and time of last login" msgstr "" #: ../../static/t/aide/edituser/detailview.html:68 msgid "Auto-purge after this many days" msgstr "" #: ../../static/t/aide/edituser/add.html:1 msgid "" "To create a new user account, enter the desired user name in the box below " "and click 'Create'." msgstr "" #: ../../static/t/aide/edituser/add.html:5 msgid "New user: " msgstr "" #: ../../static/t/aide/display_generic_cmd.html:4 msgid "Enter a server command" msgstr "" #: ../../static/t/aide/display_generic_cmd.html:12 msgid "" "This screen allows you to enter Citadel server commands which are not " "supported by WebCit. If you do not know what that means, then this screen " "will not be of much use to you." msgstr "" #: ../../static/t/aide/display_generic_cmd.html:15 msgid "Enter command:" msgstr "" #: ../../static/t/aide/display_generic_cmd.html:17 msgid "Command input (if requesting SEND_LISTING transfer mode):" msgstr "" #: ../../static/t/aide/display_generic_cmd.html:20 msgid "Detected host header is " msgstr "" #: ../../static/t/aide/display_ignetconf.html:4 msgid "Network configuration" msgstr "" #: ../../static/t/aide/display_ignetconf.html:10 #: ../../static/t/aide/ignetconf/edit_node.html:5 #: ../../static/t/aide/ignetconf/add.html:5 msgid "Add a new node" msgstr "" #: ../../static/t/aide/display_ignetconf.html:14 msgid "Currently configured nodes" msgstr "" #: ../../static/t/aide/display_serverrestart.html:26 msgid "Restart Citadel" msgstr "" #: ../../static/t/aide/floorconfig.html:2 msgid "Add, change, or delete floors" msgstr "" #: ../../static/t/aide/serverrestart/box.html:3 msgid "Please wait while the Citadel server is restarted... " msgstr "" #: ../../static/t/aide/serverrestart/box_page_do.html:3 msgid "" "Please wait while your users are being paged, the citadel server will be " "restarted after that... " msgstr "" #: ../../static/t/aide/inet/masqdomains.html:2 msgid "(Domains as which users are allowed to masquerade)" msgstr "" #: ../../static/t/aide/inet/rbldns.html:2 msgid "(hosts running a Realtime Blackhole List)" msgstr "" #: ../../static/t/aide/inet/dirnames.html:2 msgid "(domains mapped with the Global Address Book)" msgstr "" #: ../../static/t/aide/inet/notify.html:2 msgid "(URLS for notifications when users receive new mails; )" msgstr "" #: ../../static/t/aide/inet/notify.html:2 msgid "Syntax: Notificationtemplatename:http[s]://user:password@hostname/path" msgstr "" #: ../../static/t/aide/inet/smarthosts.html:2 msgid "(if present, forward all outbound mail to one of these hosts)" msgstr "" #: ../../static/t/aide/inet/aliases.html:2 msgid "(domains for which this host receives mail)" msgstr "" #: ../../static/t/aide/inet/clamav.html:2 msgid "(hosts running the ClamAV clamd service)" msgstr "" #: ../../static/t/aide/inet/spamass.html:2 msgid "(hosts running the SpamAssassin service)" msgstr "" #: ../../static/t/aide/inet/fallbackhosts.html:2 msgid "(send outbound mail to these hosts only when direct delivery fails)" msgstr "" #: ../../static/t/aide/ignetconf/display_confirm_delete.html:5 msgid "Confirm delete" msgstr "" #: ../../static/t/aide/ignetconf/display_confirm_delete.html:11 msgid "Are you sure you want to delete " msgstr "" #: ../../static/t/aide/ignetconf/display_confirm_delete.html:14 #: ../../static/t/prefs/box.html:198 ../../static/t/iconbar/edit.html:19 #: ../../static/t/iconbar/edit.html:26 ../../static/t/iconbar/edit.html:32 #: ../../static/t/iconbar/edit.html:39 ../../static/t/iconbar/edit.html:45 #: ../../static/t/iconbar/edit.html:52 ../../static/t/iconbar/edit.html:58 #: ../../static/t/iconbar/edit.html:64 ../../static/t/iconbar/edit.html:70 #: ../../static/t/iconbar/edit.html:76 ../../static/t/iconbar/edit.html:82 #: ../../static/t/iconbar/edit.html:88 msgid "Yes" msgstr "" #: ../../static/t/aide/ignetconf/display_confirm_delete.html:16 #: ../../static/t/prefs/box.html:200 ../../static/t/iconbar/edit.html:20 #: ../../static/t/iconbar/edit.html:27 ../../static/t/iconbar/edit.html:33 #: ../../static/t/iconbar/edit.html:40 ../../static/t/iconbar/edit.html:46 #: ../../static/t/iconbar/edit.html:53 ../../static/t/iconbar/edit.html:59 #: ../../static/t/iconbar/edit.html:65 ../../static/t/iconbar/edit.html:71 #: ../../static/t/iconbar/edit.html:77 ../../static/t/iconbar/edit.html:83 #: ../../static/t/iconbar/edit.html:89 msgid "No" msgstr "" #: ../../static/t/aide/ignetconf/edit_node.html:15 #: ../../static/t/aide/ignetconf/add.html:15 #: ../../static/t/aide/siteconfig/tab_general.html:8 msgid "Node name" msgstr "" #: ../../static/t/aide/ignetconf/edit_node.html:17 #: ../../static/t/aide/ignetconf/add.html:17 msgid "Shared secret" msgstr "" #: ../../static/t/aide/ignetconf/edit_node.html:19 #: ../../static/t/aide/ignetconf/add.html:19 msgid "Host or IP address" msgstr "" #: ../../static/t/aide/ignetconf/edit_node.html:21 #: ../../static/t/aide/ignetconf/add.html:21 msgid "Port number" msgstr "" #: ../../static/t/aide/ignetconf/section.html:4 msgid "(Edit)" msgstr "" #: ../../static/t/aide/display_menu.html:12 msgid "Global Configuration" msgstr "" #: ../../static/t/aide/display_menu.html:14 msgid "User account management" msgstr "" #: ../../static/t/aide/display_menu.html:16 msgid "Shutdown Citadel" msgstr "" #: ../../static/t/aide/display_menu.html:18 msgid "Rooms and Floors" msgstr "" #: ../../static/t/aide/global_config.html:2 msgid "Edit site-wide configuration" msgstr "" #: ../../static/t/aide/global_config.html:3 msgid "Domain names and Internet mail configuration" msgstr "" #: ../../static/t/aide/global_config.html:4 msgid "Configure replication with other Citadel servers" msgstr "" #: ../../static/t/aide/global_config.html:5 #: ../../static/t/view_mailq/header.html:3 msgid "View the outbound SMTP queue" msgstr "" #: ../../static/t/aide/restart.html:2 msgid "Restart Now" msgstr "" #: ../../static/t/aide/restart.html:3 msgid "Restart after paging users" msgstr "" #: ../../static/t/aide/restart.html:4 msgid "Restart when all users are idle" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:1 msgid "General site configuration items" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:5 msgid "Change Login Logo" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:6 msgid "Change Logout Logo" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:11 msgid "Fully qualified domain name" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:14 msgid "Human-readable node name" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:17 msgid "Telephone number" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:20 msgid "Paginator prompt (for text mode clients)" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:23 msgid "Geographic location of this system" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:26 msgid "Name of system administrator" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:29 msgid "Default timezone for unzoned calendar items" msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:1 msgid "Configure automatic expiry of old messages" msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:2 msgid "These settings may be overridden on a per-floor or per-room basis." msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:6 msgid "Hour to run database auto-purge" msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:66 msgid "Default message expire policy for public rooms" msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:68 #: ../../static/t/aide/siteconfig/tab_autopurger.html:86 #: ../../static/t/room/edit/tab_expire.html:17 #: ../../static/t/room/edit/tab_expire.html:45 msgid "Never automatically expire messages" msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:71 #: ../../static/t/aide/siteconfig/tab_autopurger.html:89 #: ../../static/t/room/edit/tab_expire.html:20 #: ../../static/t/room/edit/tab_expire.html:48 msgid "Expire by message count" msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:73 #: ../../static/t/aide/siteconfig/tab_autopurger.html:92 #: ../../static/t/room/edit/tab_expire.html:23 #: ../../static/t/room/edit/tab_expire.html:51 msgid "Expire by message age" msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:75 #: ../../static/t/aide/siteconfig/tab_autopurger.html:94 #: ../../static/t/room/edit/tab_expire.html:25 #: ../../static/t/room/edit/tab_expire.html:53 msgid "Number of messages or days: " msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:81 msgid "Default message expire policy for private mailboxes" msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:83 msgid "Same policy as public rooms" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:1 msgid "Network services" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:2 #: ../../static/t/aide/siteconfig/tab_directory.html:3 msgid "" "Changes made on this screen will not take effect until you restart the " "Citadel server." msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:6 msgid "SMTP MTA port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:9 msgid "Correct forged From: lines during authenticated SMTP" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:12 msgid "Flag message as spam, instead of rejecting it" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:15 msgid "IMAP listener port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:19 msgid "Network run frequency (in seconds)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:22 msgid "Server IP address (0.0.0.0 for 'any')" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:25 msgid "SMTP MSA port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:28 msgid "IMAP over SSL port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:31 msgid "SMTP over SSL port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:34 msgid "Instantly expunge deleted messages in IMAP" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:38 msgid "Allow unauthenticated SMTP clients to spoof this sites domains" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:41 msgid "Postfix TCP Dictionary Port" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:41 msgid "-1 to disable" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:44 msgid "ManageSieve Port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:47 msgid "Perform RBL checks upon connect instead of after RCPT" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:50 msgid "Keep original from headers in IMAP" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:53 msgid "XMPP (Jabber) client to server port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:56 msgid "XMPP (Jabber) server to server port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_pop3.html:1 msgid "POP3" msgstr "" #: ../../static/t/aide/siteconfig/tab_pop3.html:6 msgid "POP3 listener port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_pop3.html:9 msgid "POP3 over SSL port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_pop3.html:12 msgid "POP3 fetch frequency in seconds" msgstr "" #: ../../static/t/aide/siteconfig/tab_pop3.html:15 msgid "POP3 fastest fetch frequency in seconds" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:1 msgid "Advanced server fine-tuning controls" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:5 msgid "Server connection idle timeout (in seconds)" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:8 msgid "Maximum concurrent sessions (0 = no limit)" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:11 msgid "Default user purge time (days)" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:14 msgid "Default room purge time (days)" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:17 msgid "Maximum message length" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:20 msgid "Minimum number of worker threads" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:23 msgid "Maximum number of worker threads" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:26 msgid "Automatically delete committed database logs" msgstr "" #: ../../static/t/aide/siteconfig/tab_pushmail.html:5 msgid "Funambol server host (blank to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_pushmail.html:8 msgid "Funambol server port " msgstr "" #: ../../static/t/aide/siteconfig/tab_pushmail.html:11 msgid "Funambol sync source" msgstr "" #: ../../static/t/aide/siteconfig/tab_pushmail.html:14 msgid "Funambol auth details (user:pass)" msgstr "" #: ../../static/t/aide/siteconfig/tab_pushmail.html:17 msgid "External pager tool (blank to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:1 msgid "Access controls and site policy settings" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:5 msgid "Allow aides to zap (forget) rooms" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:9 msgid "Quarantine messages from problem users" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:12 msgid "Name of quarantine room" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:17 msgid "Name of room to log pages" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:22 msgid "Authentication mode" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:24 msgid "Self contained" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:25 msgid "Host based" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:26 msgid "LDAP (RFC2307)" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:27 msgid "LDAP (Active Directory)" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:30 msgid "Master user name (blank to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:33 msgid "Master user password" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:38 msgid "Initial access level for new users" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:49 msgid "Access level required to create rooms" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:60 msgid "Automatically grant room-aide status to users who create private rooms" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:63 msgid "Automatically grant room-aide status to users who create BLOG rooms" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:66 msgid "Restrict access to Internet mail" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:71 msgid "Disable self-service user account creation" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:71 msgid "Hint: do not select both!" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:74 msgid "Require registration for new users" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:77 msgid "Allow anonymous guest access" msgstr "" #: ../../static/t/aide/siteconfig/tab_indexing.html:1 msgid "Indexing and Journaling" msgstr "" #: ../../static/t/aide/siteconfig/tab_indexing.html:2 msgid "Warning: these facilities are resource intensive." msgstr "" #: ../../static/t/aide/siteconfig/tab_indexing.html:6 msgid "Enable full text index" msgstr "" #: ../../static/t/aide/siteconfig/tab_indexing.html:9 msgid "Perform journaling of email messages" msgstr "" #: ../../static/t/aide/siteconfig/tab_indexing.html:13 msgid "Perform journaling of non-email messages" msgstr "" #: ../../static/t/aide/siteconfig/tab_indexing.html:16 msgid "Email destination of journalized messages" msgstr "" #: ../../static/t/aide/siteconfig/tab_directory.html:1 msgid "Configure the LDAP connector for Citadel" msgstr "" #: ../../static/t/aide/siteconfig/tab_directory.html:4 msgid "" "NOTE: This Citadel server has been built without LDAP support. These " "options will have no effect." msgstr "" #: ../../static/t/aide/siteconfig/tab_directory.html:9 msgid "Host name of LDAP server (blank to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_directory.html:13 msgid "Port number of LDAP server (blank to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_directory.html:16 msgid "Base DN" msgstr "" #: ../../static/t/aide/siteconfig/tab_directory.html:19 msgid "Bind DN" msgstr "" #: ../../static/t/aide/siteconfig/tab_directory.html:22 msgid "Password for bind DN" msgstr "" #: ../../static/t/iconbar.html:7 msgid "Language:" msgstr "" #: ../../static/t/iconbar.html:19 msgid "Mail" msgstr "" #: ../../static/t/iconbar.html:39 ../../static/t/iconbar/edit.html:61 #: ../../static/t/summary/page.html:30 msgid "Tasks" msgstr "" #: ../../static/t/iconbar.html:48 ../../static/t/iconbar/edit.html:67 msgid "Rooms" msgstr "" #: ../../static/t/iconbar.html:57 msgid "Online users" msgstr "" #: ../../static/t/iconbar.html:62 ../../static/t/iconbar/edit.html:79 msgid "Chat" msgstr "" #: ../../static/t/iconbar.html:65 msgid "Advanced" msgstr "" #: ../../static/t/iconbar.html:72 ../../static/t/room/edit/editroom.html:4 #: ../../static/t/room/edit.html:5 msgid "Administration" msgstr "" #: ../../static/t/iconbar.html:83 msgid "customize this menu" msgstr "" #: ../../static/t/iconbar.html:92 msgid "switch to room list" msgstr "" #: ../../static/t/iconbar.html:93 msgid "switch to menu" msgstr "" #: ../../static/t/iconbar.html:94 msgid "My folders" msgstr "" #: ../../static/t/view_message/list_attach.html:3 #: ../../static/t/view_message/inline_attach.html:4 msgid "View" msgstr "" #: ../../static/t/view_message/list_attach.html:4 #: ../../static/t/view_message/inline_attach.html:5 msgid "Download" msgstr "" #: ../../static/t/view_message/print.html:14 #: ../../static/t/view_message.html:14 msgid "to" msgstr "" #: ../../static/t/openid_manual_create.html:2 msgid "Your OpenID" msgstr "" #: ../../static/t/openid_manual_create.html:2 msgid "was successfully verified." msgstr "" #: ../../static/t/openid_manual_create.html:3 msgid "However, the user name" msgstr "" #: ../../static/t/openid_manual_create.html:3 msgid "conflicts with an existing user." msgstr "" #: ../../static/t/openid_manual_create.html:5 msgid "Please specify the user name you would like to use." msgstr "" #: ../../static/t/files/graphicsupload.html:2 msgid "Image upload" msgstr "" #: ../../static/t/files/graphicsupload.html:6 msgid "You can upload an image directly from your computer" msgstr "" #: ../../static/t/files/graphicsupload.html:8 msgid "Please select a file to upload:" msgstr "" #: ../../static/t/files/section_onefile.html:20 msgid "Slideshow" msgstr "" #: ../../static/t/roombanner.html:10 ../../static/t/roombanner.html:11 msgid "new of" msgstr "" #: ../../static/t/roombanner.html:10 ../../static/t/roombanner.html:11 #: ../../static/t/msg_listselector_bottom.html:7 #: ../../static/t/msg_listselector_top.html:7 msgid "messages" msgstr "" #: ../../static/t/roombanner.html:28 msgid "Select page: " msgstr "" #: ../../static/t/who.html:13 msgid "Users currently on " msgstr "" #: ../../static/t/who.html:22 msgid "Click on a name to read user info. Click on" msgstr "" #: ../../static/t/who.html:24 msgid "to send an instant message to that user." msgstr "" #: ../../static/t/msg_listselector_bottom.html:2 #: ../../static/t/msg_listselector_top.html:2 msgid "Reading #" msgstr "" #: ../../static/t/msg_listselector_bottom.html:12 #: ../../static/t/msg_listselector_top.html:12 msgid "oldest to newest" msgstr "" #: ../../static/t/msg_listselector_bottom.html:20 #: ../../static/t/msg_listselector_top.html:20 msgid "newest to oldest" msgstr "" #: ../../static/t/newstartpage.html:4 msgid "New start page" msgstr "" #: ../../static/t/newstartpage.html:9 msgid "Your start page has been changed." msgstr "" #: ../../static/t/newstartpage.html:12 msgid "" "(Note: this does not change your browser's home page. It changes the page " "you begin on when you log on to" msgstr "" #: ../../static/t/no_new_msgs.html:3 msgid "No new messages." msgstr "" #: ../../static/t/view_blog/comment_box.html:8 msgid "Post a comment" msgstr "Публикувай коментар" #: ../../static/t/prefs/pushemail.html:2 msgid "Configure Push Email" msgstr "" #: ../../static/t/prefs/pushemail.html:9 msgid "Push email and SMS settings" msgstr "" #: ../../static/t/prefs/pushemail.html:17 msgid "" "If your administrator has enabled the functionality, Citadel can notify a " "Funambol server that you haved recieved new email and automatically " "syncronize any devices you have with the Funambol client installed." msgstr "" #: ../../static/t/prefs/pushemail.html:20 msgid "" "Alternatively, if the administrator has configured it, Citadel can send a " "text message to you when new mail arrives." msgstr "" #: ../../static/t/prefs/pushemail.html:26 msgid "Notify Funambol server" msgstr "" #: ../../static/t/prefs/pushemail.html:31 msgid "Send a text message to..." msgstr "" #: ../../static/t/prefs/pushemail.html:33 msgid "" "(Use international format, without any leading zeros, spaces or hypens, like " "+61415011501)" msgstr "" #: ../../static/t/prefs/pushemail.html:38 msgid "Use custom notification scheme configured by your Admin" msgstr "" #: ../../static/t/prefs/pushemail.html:43 msgid "Don‘t send any notifications" msgstr "" #: ../../static/t/prefs/box.html:9 msgid "Tree (folders) view" msgstr "" #: ../../static/t/prefs/box.html:11 msgid "Table (rooms) view" msgstr "" #: ../../static/t/prefs/box.html:20 msgid "12 hour (am/pm)" msgstr "" #: ../../static/t/prefs/box.html:25 msgid "24 hour" msgstr "" #: ../../static/t/prefs/box.html:152 msgid "Sunday" msgstr "" #: ../../static/t/prefs/box.html:153 msgid "Monday" msgstr "" #: ../../static/t/prefs/box.html:174 msgid "No signature" msgstr "" #: ../../static/t/prefs/box.html:238 msgid "Full-functionality" msgstr "" #: ../../static/t/prefs/box.html:241 msgid "Safe mode" msgstr "" #: ../../static/t/prefs/box.html:242 msgid "" "Safe mode is less intensive on your web browser, but not as fully featured." msgstr "" #: ../../static/t/wiki/pagelist.html:1 msgid "List of Wiki pages" msgstr "" #: ../../static/t/wiki/history.html:1 msgid "History of edits for this page" msgstr "" #: ../../static/t/who/list_static_header.html:1 msgid "Users currently on" msgstr "" #: ../../static/t/who/section.html:4 msgid "(kill)" msgstr "" #: ../../static/t/who/bio.html:4 ../../static/t/user/show.html:4 msgid "User profile" msgstr "" #: ../../static/t/who/summary.html:5 ../../static/t/who/box_list_static.html:6 #: ../../static/t/room/edit/tab_feed.html:13 msgid "User name" msgstr "" #: ../../static/t/who/summary.html:6 ../../static/t/who/box_list_static.html:7 msgid "Room" msgstr "" #: ../../static/t/who/box_list_static.html:8 msgid "From host" msgstr "" #: ../../static/t/view_message.html:19 msgid "Edit" msgstr "" #: ../../static/t/view_message.html:22 ../../static/t/view_message.html:26 msgid "Reply" msgstr "" #: ../../static/t/view_message.html:23 msgid "ReplyQuoted" msgstr "" #: ../../static/t/view_message.html:27 msgid "ReplyAll" msgstr "" #: ../../static/t/view_message.html:28 msgid "Forward" msgstr "" #: ../../static/t/view_message.html:31 ../../static/t/msg_listview.html:25 msgid "Move" msgstr "" #: ../../static/t/view_message.html:34 msgid "Headers" msgstr "" #: ../../static/t/view_message.html:35 ../../static/t/msg_listview.html:28 msgid "Print" msgstr "" #: ../../static/t/preferences.html:4 ../../static/t/preferences.html:7 msgid "Preferences and settings" msgstr "" #: ../../static/t/user/list.html:3 msgid "User list for " msgstr "" #: ../../static/t/user/list.html:9 msgid "User Name" msgstr "" #: ../../static/t/user/list.html:10 msgid "Number" msgstr "" #: ../../static/t/user/list.html:11 msgid "Access Level" msgstr "" #: ../../static/t/user/list.html:12 msgid "Last Login" msgstr "" #: ../../static/t/user/list.html:13 msgid "Total Logins" msgstr "" #: ../../static/t/user/list.html:14 msgid "Total Posts" msgstr "" #: ../../static/t/user/show.html:9 msgid "Click here to send an instant message to" msgstr "" #: ../../static/t/start_of_new_msgs.html:4 msgid "Old messages" msgstr "" #: ../../static/t/start_of_new_msgs.html:8 msgid "New messages" msgstr "" #: ../../static/t/display_main_menu.html:7 msgid "Basic commands" msgstr "" #: ../../static/t/display_main_menu.html:10 msgid "Your info" msgstr "" #: ../../static/t/display_main_menu.html:12 msgid "Advanced room commands" msgstr "" #: ../../static/t/iconbar/save.html:4 ../../static/t/iconbar/edit.html:4 msgid "Customize the icon bar" msgstr "" #: ../../static/t/iconbar/save.html:11 msgid "" "Your icon bar has been updated. Please select any of its choices to continue." msgstr "" #: ../../static/t/iconbar/save.html:11 msgid "" "You may need to force refresh (SHIFT-F5)> in order for changes to take effect" msgstr "" #: ../../static/t/iconbar/edit.html:11 msgid "Display icons as:" msgstr "" #: ../../static/t/iconbar/edit.html:12 msgid "pictures and text" msgstr "" #: ../../static/t/iconbar/edit.html:13 msgid "pictures only" msgstr "" #: ../../static/t/iconbar/edit.html:14 msgid "text only" msgstr "" #: ../../static/t/iconbar/edit.html:16 msgid "" "Select the icons you would like to see displayed in the 'icon bar' menu on " "the left side of the screen." msgstr "" #: ../../static/t/iconbar/edit.html:23 msgid "Site logo" msgstr "" #: ../../static/t/iconbar/edit.html:23 msgid "An icon describing this site" msgstr "" #: ../../static/t/iconbar/edit.html:29 msgid "Your summary page" msgstr "" #: ../../static/t/iconbar/edit.html:36 msgid "Mail (inbox)" msgstr "" #: ../../static/t/iconbar/edit.html:36 msgid "A shortcut to your email Inbox" msgstr "" #: ../../static/t/iconbar/edit.html:42 msgid "Your personal address book" msgstr "" #: ../../static/t/iconbar/edit.html:49 msgid "Your personal notes" msgstr "" #: ../../static/t/iconbar/edit.html:55 msgid "A shortcut to your personal calendar" msgstr "" #: ../../static/t/iconbar/edit.html:61 msgid "A shortcut to your personal task list" msgstr "" #: ../../static/t/iconbar/edit.html:67 msgid "" "Clicking this icon displays a list of all accessible rooms (or folders) " "available." msgstr "" #: ../../static/t/iconbar/edit.html:73 msgid "Who is online?" msgstr "" #: ../../static/t/iconbar/edit.html:73 msgid "Clicking this icon displays a list of all users currently logged in." msgstr "" #: ../../static/t/iconbar/edit.html:79 msgid "" "Clicking this icon enters real-time chat mode with other users in the same " "room." msgstr "" #: ../../static/t/iconbar/edit.html:85 msgid "Advanced options" msgstr "" #: ../../static/t/iconbar/edit.html:85 msgid "Access to the complete menu of Citadel functions." msgstr "" #: ../../static/t/iconbar/edit.html:91 msgid "Citadel logo" msgstr "" #: ../../static/t/iconbar/edit.html:91 msgid "Displays the 'Powered by Citadel' icon" msgstr "" #: ../../static/t/room/edit/tab_expire.html:8 msgid "Message expire policy for this room" msgstr "" #: ../../static/t/room/edit/tab_expire.html:14 msgid "Use the default policy for this floor" msgstr "" #: ../../static/t/room/edit/tab_expire.html:36 msgid "Message expire policy for this floor" msgstr "" #: ../../static/t/room/edit/tab_expire.html:42 msgid "Use the system default" msgstr "" #: ../../static/t/room/edit/editroom.html:5 ../../static/t/room/edit.html:6 msgid "Configuration" msgstr "" #: ../../static/t/room/edit/editroom.html:6 ../../static/t/room/edit.html:7 msgid "Message expire policy" msgstr "" #: ../../static/t/room/edit/editroom.html:7 ../../static/t/room/edit.html:8 msgid "Access controls" msgstr "" #: ../../static/t/room/edit/editroom.html:8 ../../static/t/room/edit.html:9 msgid "Sharing" msgstr "" #: ../../static/t/room/edit/editroom.html:9 ../../static/t/room/edit.html:10 msgid "Mailing list service" msgstr "" #: ../../static/t/room/edit/editroom.html:10 ../../static/t/room/edit.html:11 msgid "Remote retrieval" msgstr "" #: ../../static/t/room/edit/tab_config.html:6 msgid "name of room: " msgstr "" #: ../../static/t/room/edit/tab_config.html:10 #: ../../static/t/room/create.html:20 msgid "Resides on floor: " msgstr "" #: ../../static/t/room/edit/tab_config.html:16 #: ../../static/t/room/create.html:68 msgid "Type of room:" msgstr "" #: ../../static/t/room/edit/tab_config.html:22 #: ../../static/t/room/create.html:73 msgid "Public (automatically appears to everyone)" msgstr "" #: ../../static/t/room/edit/tab_config.html:28 #: ../../static/t/room/create.html:77 msgid "Private - hidden (accessible to anyone who knows its name)" msgstr "" #: ../../static/t/room/edit/tab_config.html:35 #: ../../static/t/room/create.html:81 msgid "Private - require password: " msgstr "" #: ../../static/t/room/edit/tab_config.html:44 #: ../../static/t/room/create.html:86 msgid "Private - invitation only" msgstr "" #: ../../static/t/room/edit/tab_config.html:51 #: ../../static/t/room/create.html:90 msgid "Personal (mailbox for you only)" msgstr "" #: ../../static/t/room/edit/tab_config.html:55 msgid "If private, cause current users to forget room" msgstr "" #: ../../static/t/room/edit/tab_config.html:61 msgid "Preferred users only" msgstr "" #: ../../static/t/room/edit/tab_config.html:66 msgid "Read-only room" msgstr "" #: ../../static/t/room/edit/tab_config.html:71 msgid "All users allowed to post may also delete messages" msgstr "" #: ../../static/t/room/edit/tab_config.html:76 msgid "File directory room" msgstr "" #: ../../static/t/room/edit/tab_config.html:80 msgid "Directory name: " msgstr "" #: ../../static/t/room/edit/tab_config.html:86 msgid "Uploading allowed" msgstr "" #: ../../static/t/room/edit/tab_config.html:91 msgid "Downloading allowed" msgstr "" #: ../../static/t/room/edit/tab_config.html:96 msgid "Visible directory" msgstr "" #: ../../static/t/room/edit/tab_config.html:103 msgid "Network shared room" msgstr "" #: ../../static/t/room/edit/tab_config.html:108 msgid "Permanent (does not auto-purge)" msgstr "" #: ../../static/t/room/edit/tab_config.html:113 msgid "Subject Required (Force users to specify a message subject)" msgstr "" #: ../../static/t/room/edit/tab_config.html:116 msgid "Anonymous messages" msgstr "" #: ../../static/t/room/edit/tab_config.html:122 msgid "No anonymous messages" msgstr "" #: ../../static/t/room/edit/tab_config.html:127 msgid "All messages are anonymous" msgstr "" #: ../../static/t/room/edit/tab_config.html:132 msgid "Prompt user when entering messages" msgstr "" #: ../../static/t/room/edit/tab_config.html:136 msgid "Room aide: " msgstr "" #: ../../static/t/room/edit/tab_listserv.html:5 msgid "" "The contents of this room are being mailed as individual messages " "to the following list recipients:

    " msgstr "" #: ../../static/t/room/edit/tab_listserv.html:19 msgid "" "The contents of this room are being mailed in digest form to the " "following list recipients:

    " msgstr "" #: ../../static/t/room/edit/tab_listserv.html:39 msgid "Add recipients from Contacts or other address books" msgstr "" #: ../../static/t/room/edit/tab_listserv.html:48 msgid "Allow non-subscribers to mail to this room." msgstr "" #: ../../static/t/room/edit/tab_listserv.html:54 msgid "Room post publication needs Admin permission." msgstr "" #: ../../static/t/room/edit/tab_listserv.html:59 msgid "Allow self-service subscribe/unsubscribe requests." msgstr "" #: ../../static/t/room/edit/tab_listserv.html:65 msgid "The URL for subscribe/unsubscribe is: " msgstr "" #: ../../static/t/room/edit/digestrecp_removal.html:1 #: ../../static/t/room/edit/pop3client_removal.html:9 #: ../../static/t/room/edit/listrecp_removal.html:1 #: ../../static/t/room/edit/rssclient_removal.html:5 msgid "(remove)" msgstr "" #: ../../static/t/room/edit/tab_admin.html:5 msgid "Delete this room" msgstr "" #: ../../static/t/room/edit/tab_admin.html:10 msgid "Set or change the icon for this rooms banner" msgstr "" #: ../../static/t/room/edit/tab_admin.html:14 msgid "Edit this rooms Info file" msgstr "" #: ../../static/t/room/edit/tab_share.html:5 msgid "Shared with" msgstr "" #: ../../static/t/room/edit/tab_share.html:6 msgid "Not shared with" msgstr "" #: ../../static/t/room/edit/tab_share.html:11 #: ../../static/t/room/edit/tab_share.html:21 msgid "Remote node name" msgstr "" #: ../../static/t/room/edit/tab_share.html:12 #: ../../static/t/room/edit/tab_share.html:22 msgid "Remote room name" msgstr "" #: ../../static/t/room/edit/tab_share.html:13 #: ../../static/t/room/edit/tab_share.html:23 msgid "Actions" msgstr "" #: ../../static/t/room/edit/tab_share.html:35 msgid "" "When sharing a room, it must be shared from both ends. Adding a node to the " "'shared' list sends messages out, but in order to receive messages, the " "other nodes must be configured to send messages out to your system as well. " "
  • If the remote room name is blank, it is assumed that the room name is " "identical on the remote node.
  • If the remote room name is different, the " "remote node must also configure the name of the room here." msgstr "" #: ../../static/t/room/edit/tab_feed.html:2 msgid "" "Retrieve messages from these remote POP3 accounts and store them in this " "room:" msgstr "" #: ../../static/t/room/edit/tab_feed.html:12 msgid "Remote host" msgstr "" #: ../../static/t/room/edit/tab_feed.html:15 msgid "Keep messages on server?" msgstr "" #: ../../static/t/room/edit/tab_feed.html:16 msgid "Interval" msgstr "" #: ../../static/t/room/edit/tab_feed.html:31 msgid "Fetch the following RSS feeds and store them in this room:" msgstr "" #: ../../static/t/room/edit/tab_feed.html:43 msgid "Feed URL" msgstr "" #: ../../static/t/room/edit/tab_access.html:5 msgid "" "The users listed below have access to this room. To remove a user from the " "access list, select the user name from the list and click 'Kick'." msgstr "" #: ../../static/t/room/edit/tab_access.html:20 msgid "" "To grant another user access to this room, enter the user name in the box " "below and click 'Invite'." msgstr "" #: ../../static/t/room/edit/tab_access.html:26 msgid "Invite:" msgstr "" #: ../../static/t/room/edit/tab_access.html:35 msgid "Users" msgstr "" #: ../../static/t/room/zapped_list.html:7 msgid "Zapped (forgotten) rooms" msgstr "" #: ../../static/t/room/zapped_list.html:10 msgid "Click on any room to un-zap it and goto that room." msgstr "" #: ../../static/t/room/display_private.html:7 msgid "Go to a hidden room" msgstr "" #: ../../static/t/room/display_private.html:8 msgid "" "If you know the name of a hidden (guess-name) or passworded room, you can " "enter that room by typing its name below. Once you gain access to a private " "room, it will appear in your regular room listings so you don‘t have to keep " "returning here." msgstr "" #: ../../static/t/room/display_private.html:14 msgid "Enter room name:" msgstr "" #: ../../static/t/room/display_private.html:21 msgid "Enter room password:" msgstr "" #: ../../static/t/room/create.html:11 #: ../../static/t/menu/advanced_roomcommands.html:6 msgid "Create a new room" msgstr "" #: ../../static/t/room/create.html:18 msgid "Name of room: " msgstr "" #: ../../static/t/room/create.html:32 msgid "Default view for room: " msgstr "" #: ../../static/t/room/zap_this.html:3 msgid "Zap (forget/unsubscribe) the current room" msgstr "" #: ../../static/t/room/zap_this.html:6 msgid "If you select this option," msgstr "" #: ../../static/t/room/zap_this.html:8 msgid "will disappear from your room list. Is this what you wish to do?" msgstr "" #: ../../static/t/menu/your_info.html:2 msgid "Change your preferences and settings" msgstr "" #: ../../static/t/menu/your_info.html:3 msgid "Update your contact information" msgstr "" #: ../../static/t/menu/your_info.html:5 msgid "Enter your 'bio'" msgstr "" #: ../../static/t/menu/your_info.html:6 msgid "Edit your online photo" msgstr "" #: ../../static/t/menu/your_info.html:8 msgid "Edit your push email settings" msgstr "" #: ../../static/t/menu/your_info.html:9 msgid "Manage your OpenIDs" msgstr "" #: ../../static/t/menu/basic_commands.html:3 msgid "List known rooms" msgstr "" #: ../../static/t/menu/basic_commands.html:3 msgid "Where can I go from here?" msgstr "" #: ../../static/t/menu/basic_commands.html:4 ../../static/t/navbar.html:168 msgid "Goto next room" msgstr "" #: ../../static/t/menu/basic_commands.html:4 msgid "...with unread messages" msgstr "" #: ../../static/t/menu/basic_commands.html:5 msgid "Skip to next room" msgstr "" #: ../../static/t/menu/basic_commands.html:5 msgid "(come back here later)" msgstr "" #: ../../static/t/menu/basic_commands.html:6 ../../static/t/navbar.html:5 msgid "Ungoto" msgstr "" #: ../../static/t/menu/basic_commands.html:6 msgid "oops! Back to " msgstr "" #: ../../static/t/menu/basic_commands.html:10 ../../static/t/navbar.html:13 msgid "Read new messages" msgstr "" #: ../../static/t/menu/basic_commands.html:10 msgid "...in this room" msgstr "" #: ../../static/t/menu/basic_commands.html:11 ../../static/t/navbar.html:19 msgid "Read all messages" msgstr "" #: ../../static/t/menu/basic_commands.html:11 msgid "...old and new" msgstr "" #: ../../static/t/menu/basic_commands.html:12 ../../static/t/navbar.html:25 msgid "Enter a message" msgstr "" #: ../../static/t/menu/basic_commands.html:12 msgid "(post in this room)" msgstr "" #: ../../static/t/menu/basic_commands.html:13 msgid "File library" msgstr "" #: ../../static/t/menu/basic_commands.html:13 msgid "(List files available for download)" msgstr "" #: ../../static/t/menu/basic_commands.html:17 msgid "Summary page" msgstr "" #: ../../static/t/menu/basic_commands.html:17 msgid "Summary of my account" msgstr "" #: ../../static/t/menu/basic_commands.html:18 msgid "User list" msgstr "" #: ../../static/t/menu/basic_commands.html:18 msgid "(all registered users)" msgstr "" #: ../../static/t/menu/basic_commands.html:19 msgid "Bye!" msgstr "" #: ../../static/t/menu/advanced_roomcommands.html:3 msgid "Edit or delete this room" msgstr "" #: ../../static/t/menu/advanced_roomcommands.html:5 msgid "Go to a 'hidden' room" msgstr "" #: ../../static/t/menu/advanced_roomcommands.html:7 msgid "Zap (forget) this room" msgstr "" #: ../../static/t/menu/advanced_roomcommands.html:8 msgid "List all forgotten rooms" msgstr "" #: ../../static/t/navbar.html:34 msgid "View contacts" msgstr "" #: ../../static/t/navbar.html:40 msgid "Add new contact" msgstr "" #: ../../static/t/navbar.html:49 msgid "Day view" msgstr "" #: ../../static/t/navbar.html:55 msgid "Month view" msgstr "" #: ../../static/t/navbar.html:61 msgid "Add new event" msgstr "" #: ../../static/t/navbar.html:70 msgid "Calendar list" msgstr "" #: ../../static/t/navbar.html:79 msgid "View tasks" msgstr "" #: ../../static/t/navbar.html:85 msgid "Add new task" msgstr "" #: ../../static/t/navbar.html:94 msgid "View notes" msgstr "" #: ../../static/t/navbar.html:101 msgid "Add new note" msgstr "" #: ../../static/t/navbar.html:110 msgid "Refresh message list" msgstr "" #: ../../static/t/navbar.html:122 msgid "Write mail" msgstr "" #: ../../static/t/navbar.html:132 msgid "Wiki home" msgstr "" #: ../../static/t/navbar.html:139 msgid "Edit this page" msgstr "" #: ../../static/t/navbar.html:145 msgid "History" msgstr "" #: ../../static/t/navbar.html:154 #, fuzzy msgid "New blog post" msgstr "по-нови мнения" #: ../../static/t/navbar.html:162 msgid "Skip this room" msgstr "" #: ../../static/t/msg_listview.html:18 msgid "Loading messages from server, please wait" msgstr "" #: ../../static/t/msg_listview.html:24 msgid "Open in new window" msgstr "" #: ../../static/t/msg_listview.html:26 msgid "Copy" msgstr "" #: ../../static/t/view_mailq/message.html:6 msgid "Originaly posted in: " msgstr "" #: ../../static/t/view_mailq/header.html:15 msgid "Refresh this page" msgstr "" #: ../../static/t/view_mailq/header.html:21 msgid "Message ID" msgstr "" #: ../../static/t/view_mailq/header.html:23 msgid "Date/time submitted" msgstr "" #: ../../static/t/view_mailq/header.html:25 msgid "Next attempt" msgstr "" #: ../../static/t/view_mailq/header.html:29 msgid "Recipients" msgstr "" #: ../../static/t/view_mailq/footer_empty.html:4 msgid "The queue is empty." msgstr "" #: ../../static/t/view_mailq/footer_empty.html:9 #: ../../static/t/view_mailq/footer.html:5 msgid "You do not have permission to view this resource." msgstr "" #: ../../static/t/get_logged_in.html:5 msgid "You must be logged in to access this page." msgstr "Трябва да сте влезли в системата за достъп до тази страница." #: ../../static/t/get_logged_in.html:9 #: ../../static/t/edit_message/attachments_pane.html:3 msgid "Close window" msgstr "" #: ../../static/t/get_logged_in.html:55 msgid "Log in using a user name and password" msgstr "" #: ../../static/t/get_logged_in.html:60 ../../static/t/get_logged_in.html:75 msgid "Password:" msgstr "" #: ../../static/t/get_logged_in.html:65 ../../static/t/get_logged_in.html:69 msgid "New user? Register now" msgstr "Нов потребител? Регистрирайте се сега" #: ../../static/t/get_logged_in.html:70 msgid "" "enter the name and password you wish to use, and click "New User." " msgstr "" #: ../../static/t/get_logged_in.html:83 msgid "Log in using OpenID" msgstr "" #: ../../static/t/get_logged_in.html:85 msgid "OpenID URL:" msgstr "" #: ../../static/t/get_logged_in.html:92 msgid "Log in using Google" msgstr "" #: ../../static/t/get_logged_in.html:97 msgid "Log in using Yahoo" msgstr "" #: ../../static/t/get_logged_in.html:102 msgid "Log in using AOL or AIM" msgstr "" #: ../../static/t/get_logged_in.html:104 msgid "Enter your AOL or AIM screen name:" msgstr "" #: ../../static/t/get_logged_in.html:115 msgid "Please wait" msgstr "" #: ../../static/t/summary/page.html:4 msgid "Summary page for " msgstr "" #: ../../static/t/summary/page.html:21 msgid "Messages" msgstr "" #: ../../static/t/summary/page.html:39 msgid "Today on your calendar" msgstr "" #: ../../static/t/summary/page.html:51 msgid "Who‘s online now" msgstr "" #: ../../static/t/summary/page.html:60 msgid "About this server" msgstr "" #: ../../static/t/summary/page.html:63 msgid "You are connected to" msgstr "" #: ../../static/t/summary/page.html:64 msgid "running" msgstr "" #: ../../static/t/summary/page.html:65 msgid "with" msgstr "" #: ../../static/t/summary/page.html:66 msgid "server build" msgstr "" #: ../../static/t/summary/page.html:67 msgid "and located in" msgstr "" #: ../../static/t/summary/page.html:68 msgid "Your system administrator is" msgstr "" #: ../../static/t/edit_message/attachments_pane.html:16 msgid "Attach file:" msgstr "" #: ../../static/t/edit_message/attachments_pane.html:21 msgid "Upload" msgstr "" #: ../../static/t/edit_message/section_attach_select.html:4 msgid "Remove" msgstr "" #: ../../static/t/loggedinas.html:3 msgid "Logged in as" msgstr "" #: ../../static/t/loggedinas.html:6 msgid "Not logged in." msgstr "" webcit-8.24-dfsg.orig/po/webcit/ru.po0000644000175000017500000031211512271477123017264 0ustar michaelmichael# translation of webcit.po to Russian # Copyright (C) 2008 - 2009 The Citadel Project - http://www.citadel.org # # WebCit messages for Russian # Copyright (C) 2009 Andrey N. Oktyabrski # This file is distributed under the revised BSD license # msgid "" msgstr "" "Project-Id-Version: WebCit\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-03-20 01:03-0400\n" "PO-Revision-Date: 2011-01-31 08:31+0000\n" "Last-Translator: Andrey Olykainen \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2012-11-12 04:32+0000\n" "X-Generator: Launchpad (build 16251)\n" "Language: ru\n" "X-Language: ru_RU\n" #: ../../roomops.c:708 ../../roomops.c:1005 ../../sieve.c:364 msgid "Cancelled. Changes were not saved." msgstr "Отменено. Изменения не сохранены." #: ../../roomops.c:838 ../../sieve.c:417 msgid "Your changes have been saved." msgstr "Ваши изменения сохранены." #: ../../roomops.c:881 #, c-format msgid "User '%s' kicked out of room '%s'." msgstr "Пользователь '%s' был удалён из комнаты '%s'." #: ../../roomops.c:898 #, c-format msgid "User '%s' invited to room '%s'." msgstr "Пользователь '%s' приглашен в комнату '%s'." #: ../../roomops.c:927 msgid "Cancelled. No new room was created." msgstr "Отменено. Новая комната не была создана." #: ../../roomops.c:1187 msgid "Floor has been deleted." msgstr "Этаж был удален" #: ../../roomops.c:1211 msgid "New floor has been created." msgstr "Создан новый этаж" #: ../../roomops.c:1290 msgid "Room list view" msgstr "" #: ../../roomops.c:1293 msgid "Show empty floors" msgstr "Показать пустые этажи" #: ../../roomviews.c:50 msgid "Bulletin Board" msgstr "Доска объявлений" #: ../../roomviews.c:51 msgid "Mail Folder" msgstr "Почтовая папка" #: ../../roomviews.c:52 msgid "Address Book" msgstr "Адресная книга" #: ../../roomviews.c:53 ../../static/t/iconbar.html:24 #: ../../static/t/iconbar/edit.html:55 msgid "Calendar" msgstr "Календарь" #: ../../roomviews.c:54 msgid "Task List" msgstr "Список задач" #: ../../roomviews.c:55 msgid "Notes List" msgstr "Список Заметок" #: ../../roomviews.c:56 msgid "Wiki" msgstr "Вики" #: ../../roomviews.c:57 msgid "Calendar List" msgstr "" #: ../../roomviews.c:58 msgid "Journal" msgstr "Журнал" #: ../../roomviews.c:59 msgid "Drafts" msgstr "Черновики" #: ../../roomviews.c:60 msgid "Blog" msgstr "Блог" #: ../../tasks.c:93 msgid "Completed?" msgstr "Завершено?" #: ../../tasks.c:95 msgid "Name of task" msgstr "Название задачи" #: ../../tasks.c:97 msgid "Date due" msgstr "" #: ../../tasks.c:99 msgid "Category" msgstr "Категория" #: ../../tasks.c:101 msgid "Show All" msgstr "Показать все" #: ../../tasks.c:223 msgid "Edit task" msgstr "Редактировать задачу" #: ../../tasks.c:242 ../../calendar.c:98 ../../calendar_view.c:298 #: ../../calendar_view.c:959 ../../calendar_view.c:1003 #: ../../calendar_view.c:1084 msgid "Summary:" msgstr "Итого:" #: ../../tasks.c:253 msgid "Start date:" msgstr "Дата начала:" #: ../../tasks.c:261 ../../tasks.c:291 msgid "No date" msgstr "Без даты" #: ../../tasks.c:265 ../../tasks.c:294 msgid "or" msgstr "или" #: ../../tasks.c:279 ../../tasks.c:308 msgid "Time associated" msgstr "" #: ../../tasks.c:283 msgid "Due date:" msgstr "" #: ../../tasks.c:312 msgid "Completed:" msgstr "Выполнено:" #: ../../tasks.c:323 msgid "Category:" msgstr "Категория:" #: ../../tasks.c:333 ../../calendar.c:159 ../../static/t/files.html:12 msgid "Description:" msgstr "Описание:" #: ../../tasks.c:351 ../../event.c:764 msgid "Save" msgstr "Сохранить" #: ../../tasks.c:352 ../../event.c:765 ../../static/t/aide/inet/section.html:5 #: ../../static/t/view_blog/comment.html:12 #: ../../static/t/view_blog/post.html:15 ../../static/t/view_message.html:32 #: ../../static/t/navbar.html:116 ../../static/t/msg_listview.html:27 msgid "Delete" msgstr "Удалить" #: ../../tasks.c:353 ../../vcard_edit.c:1216 ../../paging.c:66 #: ../../event.c:767 ../../sysmsgs.c:69 ../../who.c:200 ../../auth.c:812 #: ../../static/t/edit_message.html:135 ../../static/t/confirmlogoff.html:4 msgid "Cancel" msgstr "Отмена" #: ../../tasks.c:423 ../../calendar_view.c:1379 msgid "Untitled Task" msgstr "Задание без заголовка" #: ../../fmt_date.c:310 msgid "Time format" msgstr "Формат времени" #: ../../listsub.c:54 ../../static/t/listsub/display.html:5 msgid "List subscription" msgstr "" #: ../../listsub.c:67 ../../static/t/listsub/display.html:9 msgid "List subscribe/unsubscribe" msgstr "" #: ../../listsub.c:87 ../../static/t/listsub/display.html:15 #: ../../static/t/listsub/display.html:34 msgid "Confirmation request sent" msgstr "Запрос на подтверждение послан" #: ../../listsub.c:89 #, c-format msgid "" "You are subscribing %s to the %s mailing list. The " "listserver has sent you an e-mail with one additional Web link for you to " "click on to confirm your subscription. This extra step is for your " "protection, as it prevents others from being able to subscribe you to lists " "without your consent.

    Please click on the link which is being e-" "mailed to you and your subscription will be confirmed.
    \n" msgstr "" #: ../../listsub.c:102 ../../static/t/listsub/display.html:24 msgid "Go back..." msgstr "Назад..." #: ../../listsub.c:253 ../../listsub.c:291 ../../listsub.c:327 #: ../../listsub.c:334 msgid "You need to specify the mailinglist to subscribe to." msgstr "" #: ../../listsub.c:260 ../../listsub.c:298 #, fuzzy msgid "You need to specify the email address you'd like to subscribe with." msgstr "Укажите Ваш ник (короткое имя)." #: ../../blogview_renderer.c:58 ../../blogview_renderer.c:74 #, c-format msgid "%d comments" msgstr "%d комментариев" #: ../../blogview_renderer.c:61 ../../blogview_renderer.c:77 msgid "permalink" msgstr "Постоянная ссылка" #: ../../blogview_renderer.c:302 msgid "Newer posts" msgstr "новые сообщения" #: ../../blogview_renderer.c:311 msgid "Older posts" msgstr "старые сообщения" #: ../../useredit.c:629 msgid "" "An error occurred while trying to create or edit this address book entry." msgstr "" "Произошла ошибка во время попытки создания или редактирования записи " "адресной книги." #: ../../useredit.c:717 msgid "Changes were not saved." msgstr "Изменения не были сохранены." #: ../../useredit.c:782 msgid "A new user has been created." msgstr "Создан новый пользователь." #: ../../useredit.c:786 msgid "" "You are attempting to create a new user from within Citadel while running in " "host based authentication mode. In this mode, you must create new users on " "the host system, not within Citadel." msgstr "" #: ../../bbsview_renderer.c:312 msgid "Go to page: " msgstr "Перейти на страницу: " #: ../../bbsview_renderer.c:354 msgid "First" msgstr "Первый" #: ../../bbsview_renderer.c:360 msgid "Last" msgstr "Последний" #: ../../graphics.c:56 msgid "Graphics upload has been cancelled." msgstr "Загрузка графики была отменена." #: ../../graphics.c:62 msgid "You didn't upload a file." msgstr "Вы не загрузили файл" #: ../../graphics.c:112 msgid "your photo" msgstr "ваше фото" #: ../../graphics.c:119 msgid "the icon for this room" msgstr "Значёк комнаты" #: ../../graphics.c:127 msgid "the Greetingpicture for the login prompt" msgstr "" #: ../../graphics.c:135 msgid "the Logoff banner picture" msgstr "" #: ../../graphics.c:146 msgid "the icon for this floor" msgstr "Значек для этажа" #: ../../calendar_tools.c:100 msgid "Hour: " msgstr "Часы: " #: ../../calendar_tools.c:120 msgid "Minute: " msgstr "Минуты: " #: ../../calendar_tools.c:191 msgid "(status unknown)" msgstr "(статус неизвестен)" #: ../../calendar_tools.c:207 msgid "(needs action)" msgstr "(требуется действие)" #: ../../calendar_tools.c:210 msgid "(accepted)" msgstr "(принято)" #: ../../calendar_tools.c:213 msgid "(declined)" msgstr "(отклонено)" #: ../../calendar_tools.c:216 msgid "(tenative)" msgstr "" #: ../../calendar_tools.c:219 msgid "(delegated)" msgstr "(делегировано)" #: ../../calendar_tools.c:222 msgid "(completed)" msgstr "(завершено)" #: ../../calendar_tools.c:225 msgid "(in process)" msgstr "(в процессе)" #: ../../calendar_tools.c:228 msgid "(none)" msgstr "(не указан)" #: ../../notes.c:343 msgid "Click on any note to edit it." msgstr "Щёлкните на любой заметке, если хотите внести в неё изменения." #: ../../vcard_edit.c:175 ../../vcard_edit.c:178 msgid "(no name)" msgstr "(без названия)" #: ../../vcard_edit.c:443 msgid " (work)" msgstr "" #: ../../vcard_edit.c:445 msgid " (home)" msgstr "" #: ../../vcard_edit.c:447 msgid " (cell)" msgstr " (mobile)" #: ../../vcard_edit.c:458 ../../vcard_edit.c:1120 msgid "Address:" msgstr "Адрес:" #: ../../vcard_edit.c:526 msgid "Telephone:" msgstr "Телефон:" #: ../../vcard_edit.c:531 msgid "E-mail:" msgstr "Эл. почта:" #: ../../vcard_edit.c:779 msgid "This address book is empty." msgstr "Адресная книга пуста." #: ../../vcard_edit.c:793 msgid "An internal error has occurred." msgstr "Произошла внутренняя ошибка." #: ../../vcard_edit.c:944 msgid "Error" msgstr "Ошибка" #: ../../vcard_edit.c:1048 msgid "Edit contact information" msgstr "Изменить сведения о контакте" #: ../../vcard_edit.c:1068 msgid "Prefix" msgstr "Префикс" #: ../../vcard_edit.c:1068 msgid "First Name" msgstr "Имя" #: ../../vcard_edit.c:1068 msgid "Middle Name" msgstr "Отчество" #: ../../vcard_edit.c:1068 msgid "Last Name" msgstr "Фамилия" #: ../../vcard_edit.c:1068 msgid "Suffix" msgstr "Суффикс" #: ../../vcard_edit.c:1089 msgid "Display name:" msgstr "Отображаемое имя:" #: ../../vcard_edit.c:1096 msgid "Title:" msgstr "Заголовок:" #: ../../vcard_edit.c:1103 msgid "Organization:" msgstr "Организация:" #: ../../vcard_edit.c:1114 msgid "PO box:" msgstr "Абонентский ящик:" #: ../../vcard_edit.c:1130 msgid "City:" msgstr "Город:" #: ../../vcard_edit.c:1136 msgid "State:" msgstr "Штат:" #: ../../vcard_edit.c:1142 msgid "ZIP code:" msgstr "Почтовый индекс:" #: ../../vcard_edit.c:1148 msgid "Country:" msgstr "Страна:" #: ../../vcard_edit.c:1158 msgid "Home telephone:" msgstr "Домашний телефон:" #: ../../vcard_edit.c:1164 msgid "Work telephone:" msgstr "Рабочий телефон:" #: ../../vcard_edit.c:1170 msgid "Mobile telephone:" msgstr "Мобильный телефон:" #: ../../vcard_edit.c:1176 msgid "Fax number:" msgstr "Номер факса:" #: ../../vcard_edit.c:1187 msgid "Primary Internet e-mail address" msgstr "Основной ящик электронной почты" #: ../../vcard_edit.c:1194 msgid "Internet e-mail aliases" msgstr "" #: ../../vcard_edit.c:1215 ../../sysmsgs.c:67 msgid "Save changes" msgstr "Сохранить изменения" #: ../../vcard_edit.c:1261 msgid "Unable to enter the room to save your message" msgstr "Невозможно войти в комнату для сохранения вашего сообщения" #: ../../vcard_edit.c:1265 msgid "Aborting." msgstr "Отмена." #: ../../vcard_edit.c:1297 ../../vcard_edit.c:1341 ../../auth.c:367 #: ../../auth.c:397 msgid "An error has occurred." msgstr "Произошла ошибка." #: ../../vcard_edit.c:1399 msgid "Could Not decode vcard photo\n" msgstr "" #: ../../preferences.c:880 msgid "Cancelled. No settings were changed." msgstr "Отменено. Настройки не были изменены." #: ../../preferences.c:1092 msgid "Make this my start page" msgstr "Сделать стартовой страницей" #: ../../preferences.c:1130 msgid "This isn't allowed to become the start page." msgstr "" #: ../../preferences.c:1132 msgid "You no longer have a start page selected." msgstr "" #: ../../preferences.c:1182 msgid "Prefered startpage" msgstr "Предпочитаемая стартовая странице" #: ../../calendar.c:76 msgid "Meeting invitation" msgstr "" #: ../../calendar.c:79 msgid "Attendee's reply to your invitation" msgstr "" #: ../../calendar.c:82 msgid "Published event" msgstr "Опубликованное событие" #: ../../calendar.c:85 msgid "This is an unknown type of calendar item." msgstr "" #: ../../calendar.c:107 ../../calendar_view.c:306 ../../calendar_view.c:964 #: ../../calendar_view.c:1008 ../../calendar_view.c:1089 msgid "Location:" msgstr "Расположение:" #: ../../calendar.c:132 ../../calendar_view.c:351 ../../calendar_view.c:970 msgid "Date:" msgstr "Дата:" #: ../../calendar.c:139 ../../calendar_view.c:373 ../../calendar_view.c:1013 #: ../../calendar_view.c:1099 msgid "Starting date/time:" msgstr "Дата/время начала:" #: ../../calendar.c:150 ../../calendar_view.c:376 ../../calendar_view.c:1015 #: ../../calendar_view.c:1101 msgid "Ending date/time:" msgstr "Дата/время завершения:" #: ../../calendar.c:168 ../../event.c:90 msgid "Recurrence" msgstr "Повторение" #: ../../calendar.c:169 ../../event.c:505 msgid "This is a recurring event" msgstr "Повторяющееся событие" #: ../../calendar.c:178 msgid "Attendee:" msgstr "" #: ../../calendar.c:218 #, c-format msgid "This is an update of '%s' which is already in your calendar." msgstr "" #: ../../calendar.c:222 #, c-format msgid "" "This event would conflict with '%s' which is already in your calendar." msgstr "Данное событие может конфликтовать с '%s' в вашем календаре." #: ../../calendar.c:227 msgid "Update:" msgstr "Обновление:" #: ../../calendar.c:228 msgid "CONFLICT:" msgstr "Конфликт:" #: ../../calendar.c:251 msgid "How would you like to respond to this invitation?" msgstr "Как желаете ответить на данное приглашение?" #: ../../calendar.c:252 msgid "Accept" msgstr "Принять" #: ../../calendar.c:253 msgid "Tentative" msgstr "" #: ../../calendar.c:254 msgid "Decline" msgstr "Отклонить" #: ../../calendar.c:271 msgid "Click Update to accept this reply and update your calendar." msgstr "Нажмите Update для принятия ответа и обновления календаря." #: ../../calendar.c:272 msgid "Update" msgstr "Обновить" #: ../../calendar.c:273 msgid "Ignore" msgstr "Игнорировать" #: ../../calendar.c:295 msgid "There was an error parsing this calendar item." msgstr "" #: ../../calendar.c:328 msgid "" "You have accepted this meeting invitation. It has been entered into your " "calendar." msgstr "" "Вы приняли приглашение на встречу. Она была добавлена в ваш календарь." #: ../../calendar.c:332 msgid "" "You have tentatively accepted this meeting invitation. It has been " "'pencilled in' to your calendar." msgstr "" #: ../../calendar.c:336 msgid "" "You have declined this meeting invitation. It has not been entered " "into your calendar." msgstr "" "Вы отклонили приглашение на встречу. Она не была добавлена в ваш " "календарь." #: ../../calendar.c:341 msgid "A reply has been sent to the meeting organizer." msgstr "A reply has been sent to the meeting organiser." #. / Translators: RSVP aka Répondez s'il-vous-plaît Is the term #. / that the recipient of an ical-invitation should please #. / answer this request. #: ../../calendar.c:376 msgid "Your calendar has been updated to reflect this RSVP." msgstr "" #: ../../calendar.c:378 msgid "" "You have chosen to ignore this RSVP. Your calendar has not been " "updated." msgstr "" #: ../../calendar.c:932 msgid "Calendar day view begins at:" msgstr "" #: ../../calendar.c:933 msgid "Calendar day view ends at:" msgstr "" #: ../../calendar.c:934 msgid "Week starts on:" msgstr "Неделя начинается с:" #: ../../paging.c:35 msgid "Send instant message" msgstr "Отправить сообщение" #: ../../paging.c:43 msgid "Send an instant message to: " msgstr "" #: ../../paging.c:57 msgid "Enter message text:" msgstr "Введите текст сообщения:" #: ../../paging.c:65 ../../static/t/edit_message.html:109 msgid "Send message" msgstr "Отправить сообщение" #: ../../paging.c:84 msgid "Message was not sent." msgstr "Сообщение не было отправлено." #: ../../paging.c:95 msgid "Message has been sent to " msgstr "" #: ../../iconbar.c:328 msgid "Iconbar Setting" msgstr "Настройка панели иконок" #. #. * Set to 'unknown' right from the beginning. Unless we learn #. * something else, that's what we'll go with. #. #: ../../availability.c:148 msgid "availability unknown" msgstr "доступность не известна" #: ../../availability.c:169 msgid "free" msgstr "свободно" #: ../../availability.c:179 msgid "BUSY" msgstr "Занят" #: ../../serv_func.c:193 msgid "" "This server is already serving its maximum number of users and cannot accept " "any additional logins at this time. Please try again later or contact your " "system administrator." msgstr "" #: ../../serv_func.c:198 ../../serv_func.c:227 msgid "Received unexpected answer from Citadel server; bailing out." msgstr "" #: ../../serv_func.c:236 #, c-format msgid "" "You are connected to a Citadel server running Citadel %d.%02d. \n" "In order to run this version of WebCit you must also have Citadel %d.%02d or " "newer.\n" "\n" "\n" msgstr "" #: ../../event.c:70 msgid "seconds" msgstr "секунд(ы)" #: ../../event.c:71 msgid "minutes" msgstr "минут(ы)" #: ../../event.c:72 msgid "hours" msgstr "часа(ов)" #: ../../event.c:73 msgid "days" msgstr "дня(ей)" #: ../../event.c:74 msgid "weeks" msgstr "недели(ль)" #: ../../event.c:75 msgid "months" msgstr "месяца(ев)" #: ../../event.c:76 msgid "years" msgstr "года(лет)" #: ../../event.c:77 msgid "never" msgstr "никогда" #: ../../event.c:81 msgid "first" msgstr "первый" #: ../../event.c:82 msgid "second" msgstr "второй" #: ../../event.c:83 msgid "third" msgstr "третий" #: ../../event.c:84 msgid "fourth" msgstr "четвёртый" #: ../../event.c:85 msgid "fifth" msgstr "пятый" #: ../../event.c:88 msgid "Event" msgstr "Событие" #: ../../event.c:89 ../../event.c:437 ../../event.c:449 msgid "Attendees" msgstr "" #: ../../event.c:167 msgid "Add or edit an event" msgstr "Добавить или редактировать событие" #: ../../event.c:206 ../../static/t/iconbar.html:13 #: ../../static/t/iconbar/edit.html:29 msgid "Summary" msgstr "Сводка" #: ../../event.c:217 msgid "Location" msgstr "Расположение" #: ../../event.c:228 ../../calendar_view.c:760 msgid "Start" msgstr "Начало" #: ../../event.c:271 ../../calendar_view.c:957 ../../calendar_view.c:986 msgid "All day event" msgstr "Событие на весь день" #: ../../event.c:277 ../../calendar_view.c:761 msgid "End" msgstr "Завершение" #: ../../event.c:327 ../../static/t/iconbar.html:34 #: ../../static/t/iconbar/edit.html:49 msgid "Notes" msgstr "Заметки" #: ../../event.c:369 msgid "Organizer" msgstr "Organiser" #: ../../event.c:374 msgid "(you are the organizer)" msgstr "(you are the organiser)" #: ../../event.c:392 msgid "Show time as:" msgstr "Отображать время как:" #: ../../event.c:415 msgid "Free" msgstr "Свободно" #: ../../event.c:423 msgid "Busy" msgstr "Занято" #: ../../event.c:440 msgid "(One per line)" msgstr "" #: ../../event.c:450 ../../static/t/edit_message.html:143 #: ../../static/t/iconbar.html:29 ../../static/t/iconbar/edit.html:42 msgid "Contacts" msgstr "Контакты" #: ../../event.c:513 msgid "Recurrence rule" msgstr "" #: ../../event.c:517 msgid "Repeats every" msgstr "Повторять каждый(ые)" #. begin 'weekday_selector' div #: ../../event.c:535 msgid "on these weekdays:" msgstr "" #: ../../event.c:593 #, c-format msgid "on day %s%d%s of the month" msgstr "" #: ../../event.c:602 ../../event.c:664 msgid "on the " msgstr "" #: ../../event.c:626 msgid "of the month" msgstr "" #: ../../event.c:655 msgid "every " msgstr "каждый(ые) " #: ../../event.c:656 msgid "year on this date" msgstr "" #: ../../event.c:688 ../../static/t/msg_listselector_bottom.html:7 #: ../../static/t/msg_listselector_top.html:7 msgid "of" msgstr "из" #: ../../event.c:712 msgid "Recurrence range" msgstr "" #: ../../event.c:720 msgid "No ending date" msgstr "Нет даты окончания" #: ../../event.c:727 msgid "Repeat this event" msgstr "повторять это событие" #: ../../event.c:730 msgid "times" msgstr "раз(а)" #: ../../event.c:738 msgid "Repeat this event until " msgstr "Повторять это событие до " #: ../../event.c:766 msgid "Check attendee availability" msgstr "" #: ../../event.c:858 ../../calendar_view.c:272 ../../calendar_view.c:468 #: ../../calendar_view.c:937 msgid "Untitled Event" msgstr "" #: ../../sysmsgs.c:52 #, c-format msgid "Edit %s" msgstr "Изменить %s" #: ../../sysmsgs.c:55 #, c-format msgid "" "Enter %s below. Text is formatted to the reader's browser. A newline is " "forced by preceding the next line by a blank." msgstr "" #: ../../sysmsgs.c:89 #, c-format msgid "Cancelled. %s was not saved." msgstr "Отменено. %s не было сохранено." #: ../../sysmsgs.c:109 #, fuzzy msgid " has been saved." msgstr "%s было сохранено." #: ../../sysmsgs.c:116 ../../sysmsgs.c:117 msgid "Room info" msgstr "Информация о комнате" #: ../../sysmsgs.c:122 ../../sysmsgs.c:124 msgid "Your bio" msgstr "" #: ../../calendar_view.c:297 ../../calendar_view.c:958 #: ../../calendar_view.c:1002 ../../calendar_view.c:1083 #: ../../static/t/sieve/display_one.html:20 msgid "From" msgstr "От" #: ../../calendar_view.c:355 ../../calendar_view.c:974 msgid "Starting date:" msgstr "Дата начала:" #: ../../calendar_view.c:361 ../../calendar_view.c:976 msgid "Ending date:" msgstr "Дата завершения:" #: ../../calendar_view.c:369 ../../calendar_view.c:1095 msgid "Date/time:" msgstr "Дата/время:" #: ../../calendar_view.c:386 ../../calendar_view.c:980 #: ../../calendar_view.c:1018 ../../calendar_view.c:1105 #: ../../static/t/room/edit/tab_share.html:32 msgid "Notes:" msgstr "Заметки:" #: ../../calendar_view.c:585 ../../calendar_view.c:721 msgid "previous" msgstr "пред." #: ../../calendar_view.c:597 ../../calendar_view.c:733 #: ../../calendar_view.c:1308 msgid "next" msgstr "след." #: ../../calendar_view.c:756 msgid "Week" msgstr "Неделя" #: ../../calendar_view.c:758 msgid "Hours" msgstr "Часа(ов)" #: ../../calendar_view.c:759 ../../static/t/sieve/display_one.html:22 #: ../../static/t/msg_listview.html:9 msgid "Subject" msgstr "Тема" #: ../../calendar_view.c:1001 ../../calendar_view.c:1024 msgid "Ongoing event" msgstr "" #: ../../messages.c:70 msgid "ERROR:" msgstr "ОШИБКА:" #: ../../messages.c:88 msgid "Empty message" msgstr "Пустое сообщение" #: ../../messages.c:1010 msgid "Cancelled. Message was not posted." msgstr "Отменено. Сообщение не было опубликовано" #: ../../messages.c:1013 msgid "Automatically cancelled because you have already saved this message." msgstr "Автоматически отменено по скольку сообщение уже сохранено." #: ../../messages.c:1037 msgid "Saved to Drafts failed: " msgstr "" #: ../../messages.c:1102 msgid "Refusing to post empty message.\n" msgstr "" #: ../../messages.c:1128 msgid "Message has been saved to Drafts.\n" msgstr "Сообщение было сохранено в черновики.\n" #: ../../messages.c:1137 msgid "Message has been sent.\n" msgstr "Сообщение отправлено.\n" #: ../../messages.c:1140 msgid "Message has been posted.\n" msgstr "Сообщение опубликовано.\n" #: ../../messages.c:1679 msgid "The message was not moved." msgstr "Сообщение небыло перемещено." #: ../../messages.c:1719 #, c-format msgid "An error occurred while retrieving this part: %s/%s\n" msgstr "" #: ../../messages.c:1796 #, c-format msgid "An error occurred while retrieving this part: %s\n" msgstr "" #: ../../messages.c:1956 msgid "Attach signature to email messages?" msgstr "Прикрепить подпись к сообщению?" #: ../../messages.c:1959 msgid "Use this signature:" msgstr "Использовать подпись:" #: ../../messages.c:1961 msgid "Default character set for email headers:" msgstr "Стандартный набор символов для заголовков письма:" #: ../../messages.c:1964 msgid "Preferred email address" msgstr "Предпочитаемый адрес эл.почты" #: ../../messages.c:1966 msgid "Preferred display name for email messages" msgstr "" #: ../../messages.c:1970 msgid "Preferred display name for bulletin board posts" msgstr "" #: ../../messages.c:1973 msgid "Mailbox view mode" msgstr "" #: ../../inetconf.c:110 ../../inetconf.c:119 ../../inetconf.c:133 #: ../../inetconf.c:159 ../../netconf.c:156 ../../netconf.c:183 #: ../../netconf.c:191 ../../netconf.c:239 ../../netconf.c:247 msgid "Invalid Parameter" msgstr "" #: ../../inetconf.c:126 #, fuzzy msgid " has been deleted." msgstr "%s было удалено." #. added status message #: ../../inetconf.c:144 #, fuzzy msgid " added." msgstr "добавлено." #: ../../who.c:154 msgid "Edit your session display" msgstr "" #: ../../who.c:158 msgid "" "This screen allows you to change the way your session appears in the 'Who is " "online' listing. To turn off any 'fake' name you've previously set, simply " "click the appropriate 'change' button without typing anything in the " "corresponding box. " msgstr "" #: ../../who.c:171 msgid "Room name:" msgstr "Название комнаты:" #: ../../who.c:176 msgid "Change room name" msgstr "Изменить название комнаты" #: ../../who.c:180 msgid "Host name:" msgstr "Имя хоста:" #: ../../who.c:185 msgid "Change host name" msgstr "Изменить имя хоста" #: ../../who.c:190 ../../static/t/aide/edituser/detailview.html:20 #: ../../static/t/openid_manual_create.html:9 #: ../../static/t/get_logged_in.html:57 ../../static/t/get_logged_in.html:72 msgid "User name:" msgstr "Имя пользователя:" #: ../../who.c:195 msgid "Change user name" msgstr "Изменить имя пользователя" #: ../../siteconfig.c:46 ../../siteconfig.c:64 ../../roomlist.c:44 #: ../../roomlist.c:394 ../../static/t/room/edit/tab_expire.html:72 #: ../../static/t/room/edit/tab_config.html:149 #: ../../static/t/room/edit/tab_access.html:42 msgid "Higher access is required to access this function." msgstr "Требуется больше прав для доступа к этой функции." #: ../../siteconfig.c:256 msgid "" "WARNING: Failed to parse Server Config; do you run a to new citserver?" msgstr "" #: ../../siteconfig.c:319 msgid "Your system configuration has been updated." msgstr "Настройки системы обновлены." #: ../../wiki.c:69 ../../wiki.c:162 ../../wiki.c:282 #, c-format msgid "There is no room called '%s'." msgstr "Не комнаты под названием '%s'." #: ../../wiki.c:76 #, c-format msgid "'%s' is not a Wiki room." msgstr "'%s' не комната Вики." #: ../../wiki.c:110 #, c-format msgid "There is no page called '%s' here." msgstr "Нет страницы с названием '%s'." #: ../../wiki.c:112 msgid "" "Select the 'Edit this page' link in the room banner if you would like to " "create this page." msgstr "" #: ../../wiki.c:181 ../../static/t/msg_listview.html:11 msgid "Date" msgstr "Дата" #: ../../wiki.c:182 msgid "Author" msgstr "Автор" #: ../../wiki.c:209 ../../wiki.c:218 msgid "(show)" msgstr "(показать)" #: ../../wiki.c:211 ../../static/t/navbar.html:145 msgid "Current version" msgstr "Текущая версия" #: ../../wiki.c:223 msgid "(revert)" msgstr "" #: ../../wiki.c:300 msgid "Page title" msgstr "Заголовок страницы" #: ../../webcit.c:316 msgid "Authorization Required" msgstr "Требуется авторизация" #: ../../webcit.c:324 #, c-format msgid "" "The resource you requested requires a valid username and password. You could " "not be logged in: %s\n" msgstr "" #: ../../webcit.c:647 ../../auth.c:526 msgid "" "This program was unable to connect or stay connected to the Citadel server. " "Please report this problem to your system administrator." msgstr "" "Эта программа не может соединиться, или уже соединена с сервером Citadel. " "Пожалуйста, сообщите об этом Вашему администратору." #: ../../webcit.c:654 ../../auth.c:532 msgid "Read More..." msgstr "Далее..." #: ../../smtpqueue.c:134 ../../static/t/aide/ignetconf/section.html:5 #: ../../static/t/view_mailq/message.html:2 msgid "(Delete)" msgstr "(Удалить)" #: ../../smtpqueue.c:334 msgid "First Attempt pending" msgstr "" #: ../../roomlist.c:99 msgid "My Folders" msgstr "Мои папки" #: ../../downloads.c:289 #, c-format msgid "An error occurred while retrieving this file: %s\n" msgstr "" #: ../../roomtokens.c:572 msgid "file" msgstr "файл" #: ../../roomtokens.c:574 msgid "files" msgstr "файлы" #: ../../summary.c:128 msgid "(None)" msgstr "(не указано)" #: ../../summary.c:184 msgid "(Nothing)" msgstr "(Ничего)" #: ../../msg_renderers.c:579 ../../static/t/who/bio.html:15 msgid "edit" msgstr "изменить" #: ../../msg_renderers.c:1119 msgid "I don't know how to display " msgstr "" #: ../../msg_renderers.c:1353 msgid "(no subject)" msgstr "(без темы)" #: ../../addressbook_popup.c:186 msgid "Add" msgstr "Добавить" #. an erased user #: ../../auth.c:30 ../../static/t/aide/edituser/detailview.html:43 #: ../../static/t/aide/siteconfig/tab_access.html:40 #: ../../static/t/aide/siteconfig/tab_access.html:51 msgid "Deleted" msgstr "Удалённый" #. a new user #: ../../auth.c:33 ../../static/t/aide/edituser/detailview.html:44 #: ../../static/t/aide/siteconfig/tab_access.html:41 #: ../../static/t/aide/siteconfig/tab_access.html:52 #: ../../static/t/get_logged_in.html:79 msgid "New User" msgstr "Новый пользователь" #. a trouble maker #: ../../auth.c:36 ../../static/t/aide/edituser/detailview.html:45 #: ../../static/t/aide/siteconfig/tab_access.html:42 #: ../../static/t/aide/siteconfig/tab_access.html:53 msgid "Problem User" msgstr "Неблагонадёжный пользователь" #. user with normal privileges #: ../../auth.c:39 ../../static/t/aide/edituser/detailview.html:46 #: ../../static/t/aide/siteconfig/tab_access.html:43 #: ../../static/t/aide/siteconfig/tab_access.html:54 msgid "Local User" msgstr "Локальный пользователь" #. a user that may access network resources #: ../../auth.c:42 ../../static/t/aide/edituser/detailview.html:47 #: ../../static/t/aide/siteconfig/tab_access.html:44 #: ../../static/t/aide/siteconfig/tab_access.html:55 msgid "Network User" msgstr "Сетевой пользователь" #. a moderator #: ../../auth.c:45 ../../static/t/aide/edituser/detailview.html:48 #: ../../static/t/aide/siteconfig/tab_access.html:45 #: ../../static/t/aide/siteconfig/tab_access.html:56 msgid "Preferred User" msgstr "Привилегированный пользователь" #. chief #: ../../auth.c:48 ../../static/t/aide/edituser/detailview.html:49 #: ../../static/t/aide/siteconfig/tab_access.html:46 #: ../../static/t/aide/siteconfig/tab_access.html:57 msgid "Admin" msgstr "Администратор" #: ../../auth.c:513 ../../static/t/iconbar.html:80 #: ../../static/t/confirmlogoff.html:3 #: ../../static/t/menu/basic_commands.html:19 msgid "Log off" msgstr "Выйти" #: ../../auth.c:537 msgid "Log in again" msgstr "Войти снова" #: ../../auth.c:585 ../../static/t/aide/usermanagement.html:3 msgid "Validate new users" msgstr "Новые пользователи" #: ../../auth.c:605 msgid "No users require validation at this time." msgstr "" "На данный момент нет новых пользователей, требующих подтверждения " "регистрации." #: ../../auth.c:655 msgid "very weak" msgstr "слишком простой" #: ../../auth.c:658 msgid "weak" msgstr "простой" #: ../../auth.c:661 msgid "ok" msgstr "хороший" #: ../../auth.c:665 msgid "strong" msgstr "очень хороший" #: ../../auth.c:683 #, c-format msgid "Current access level: %d (%s)\n" msgstr "Уровень доступа %d (%s)\n" #: ../../auth.c:691 msgid "Select access level for this user:" msgstr "Уровень доступа для пользователя:" #: ../../auth.c:776 ../../static/t/menu/your_info.html:4 msgid "Change your password" msgstr "Смените пароль" #: ../../auth.c:800 msgid "Enter new password:" msgstr "Введите новый пароль:" #: ../../auth.c:804 msgid "Enter it again to confirm:" msgstr "Введите его ещё раз, для проверки:" #: ../../auth.c:810 msgid "Change password" msgstr "Сменить пароль" #: ../../auth.c:830 msgid "Cancelled. Password was not changed." msgstr "Смена пароля отменяется, он остался прежним." #: ../../auth.c:839 msgid "They don't match. Password was not changed." msgstr "Вы ввели разные пароли, оставляем прежний." #: ../../auth.c:845 msgid "Blank passwords are not allowed." msgstr "Пароль не должен быть пустым" #: ../../openid.c:34 msgid "Manage Account/OpenID Associations" msgstr "" #: ../../openid.c:52 msgid "Do you really want to delete this OpenID?" msgstr "Вы действительно хотите удалить OpenID?" #: ../../openid.c:53 msgid "(delete)" msgstr "(удалить)" #: ../../openid.c:61 msgid "Add an OpenID: " msgstr "Добавить OpenID: " #: ../../openid.c:64 msgid "Attach" msgstr "Прикрепить" #: ../../openid.c:68 #, c-format msgid "%s does not permit authentication via OpenID." msgstr "" #: ../../html2html.c:136 #, c-format msgid "realloc() error! couldn't get %d bytes: %s" msgstr "" #: ../../static/t/viewomatic.html:4 msgid "View as:" msgstr "" #: ../../static/t/sieve/list.html:32 ../../static/t/sieve/none.html:4 #: ../../static/t/menu/your_info.html:7 msgid "View/edit server-side mail filters" msgstr "" #: ../../static/t/sieve/list.html:41 msgid "When new mail arrives: " msgstr "При получении нового письма: " #: ../../static/t/sieve/list.html:43 msgid "Leave it in my inbox without filtering" msgstr "Оставить во входящих без фильтрации" #: ../../static/t/sieve/list.html:44 msgid "Filter it according to rules selected below" msgstr "" #: ../../static/t/sieve/list.html:45 msgid "Filter it through a manually edited script (advanced users only)" msgstr "" #: ../../static/t/sieve/list.html:52 msgid "Your incoming mail will not be filtered through any scripts." msgstr "" #: ../../static/t/sieve/list.html:64 msgid "Add rule" msgstr "Добавить правило" #: ../../static/t/sieve/list.html:71 msgid "The currently active script is: " msgstr "Текущий активный фильтр: " #: ../../static/t/sieve/list.html:76 ../../static/t/sieve/add.html:3 msgid "Add or delete scripts" msgstr "Добавить или удалить скрипты" #: ../../static/t/sieve/display_one.html:16 msgid "If" msgstr "Если" #: ../../static/t/sieve/display_one.html:21 msgid "To or Cc" msgstr "" #: ../../static/t/sieve/display_one.html:23 msgid "Reply-to" msgstr "" #: ../../static/t/sieve/display_one.html:24 #: ../../static/t/msg_listview.html:10 #: ../../static/t/view_mailq/header.html:27 msgid "Sender" msgstr "Отправитель" #: ../../static/t/sieve/display_one.html:25 msgid "Resent-From" msgstr "" #: ../../static/t/sieve/display_one.html:26 msgid "Resent-To" msgstr "" #: ../../static/t/sieve/display_one.html:27 msgid "Envelope From" msgstr "" #: ../../static/t/sieve/display_one.html:28 msgid "Envelope To" msgstr "" #: ../../static/t/sieve/display_one.html:29 msgid "X-Mailer" msgstr "X-Mailer" #: ../../static/t/sieve/display_one.html:30 msgid "X-Spam-Flag" msgstr "" #: ../../static/t/sieve/display_one.html:31 msgid "X-Spam-Status" msgstr "" #: ../../static/t/sieve/display_one.html:32 msgid "List-ID" msgstr "" #: ../../static/t/sieve/display_one.html:33 msgid "Message size" msgstr "Размер сообщения" #: ../../static/t/sieve/display_one.html:34 #: ../../static/t/select_messageindex_all.html:1 msgid "All" msgstr "Все" #: ../../static/t/sieve/display_one.html:41 msgid "contains" msgstr "содержит" #: ../../static/t/sieve/display_one.html:42 msgid "does not contain" msgstr "не содержит" #: ../../static/t/sieve/display_one.html:43 msgid "is" msgstr "" #: ../../static/t/sieve/display_one.html:44 msgid "is not" msgstr "не" #: ../../static/t/sieve/display_one.html:45 msgid "matches" msgstr "совпадает" #: ../../static/t/sieve/display_one.html:46 msgid "does not match" msgstr "не совпадает" #: ../../static/t/sieve/display_one.html:52 msgid "(All messages)" msgstr "(Все сообщения)" #: ../../static/t/sieve/display_one.html:56 msgid "is larger than" msgstr "больше чем" #: ../../static/t/sieve/display_one.html:57 msgid "is smaller than" msgstr "меньше чем" #: ../../static/t/sieve/display_one.html:59 #, fuzzy msgid "bytes" msgstr "года(лет)" #: ../../static/t/sieve/display_one.html:65 msgid "Keep" msgstr "" #: ../../static/t/sieve/display_one.html:66 msgid "Discard silently" msgstr "" #: ../../static/t/sieve/display_one.html:67 msgid "Reject" msgstr "Отклонить" #: ../../static/t/sieve/display_one.html:68 msgid "Move message to" msgstr "Переместить сообщение в" #: ../../static/t/sieve/display_one.html:69 msgid "Forward to" msgstr "Переадресовать" #: ../../static/t/sieve/display_one.html:70 msgid "Vacation" msgstr "" #: ../../static/t/sieve/display_one.html:82 msgid "Message:" msgstr "Сообщение:" #: ../../static/t/sieve/display_one.html:90 msgid "and then" msgstr "" #: ../../static/t/sieve/display_one.html:93 msgid "continue processing" msgstr "" #: ../../static/t/sieve/display_one.html:94 msgid "stop" msgstr "стоп" #: ../../static/t/sieve/none.html:9 msgid "" "This installation of Citadel was built without support for server-side mail " "filtering.
    Please contact your system administrator if you require this " "feature.
    " msgstr "" #: ../../static/t/sieve/add.html:9 msgid "Add a new script" msgstr "Добавить новый скрипт" #: ../../static/t/sieve/add.html:10 msgid "" "To create a new script, enter the desired script name in the box below and " "click 'Create'." msgstr "" #: ../../static/t/sieve/add.html:14 msgid "Script name: " msgstr "Имя скрипта: " #: ../../static/t/sieve/add.html:18 msgid "Edit scripts" msgstr "Изменить скрипты" #: ../../static/t/sieve/add.html:20 msgid "Return to the script editing screen" msgstr "" #: ../../static/t/sieve/add.html:23 msgid "Delete scripts" msgstr "Удалить скрипты" #: ../../static/t/sieve/add.html:24 msgid "" "To delete an existing script, select the script name from the list and click " "'Delete'." msgstr "" "Для удаления скрипта, выберите скрипт из списка и нажмите \"Удалить\"." #: ../../static/t/msg/confirm_move.html:4 msgid "Confirm move of message" msgstr "Подтвердить перемещение сообщения" #: ../../static/t/msg/confirm_move.html:12 msgid "Move this message to:" msgstr "Переместить сообщение в:" #: ../../static/t/login.html:5 msgid "powered by" msgstr "" #: ../../static/t/login.html:15 ../../static/t/iconbar.html:88 #: ../../static/t/get_logged_in.html:64 ../../static/t/get_logged_in.html:88 #: ../../static/t/get_logged_in.html:93 ../../static/t/get_logged_in.html:98 #: ../../static/t/get_logged_in.html:107 msgid "Log in" msgstr "Вход" #: ../../static/t/trailing.html:14 msgid "" "WARNING: You have JavaScript disabled in your web browser. Many functions " "of this system will not work properly." msgstr "" #: ../../static/t/view_submessage.html:4 #: ../../static/t/view_message/replyquote.html:3 #: ../../static/t/view_message/replyquote.html:7 #: ../../static/t/view_message/print.html:8 ../../static/t/view_message.html:7 msgid "from " msgstr "от " #: ../../static/t/searchomatic.html:4 msgid "Search: " msgstr "Поиск: " #: ../../static/t/listsub/display.html:16 msgid "You are subscribing " msgstr "" #: ../../static/t/listsub/display.html:17 #, fuzzy msgid " to the " msgstr "Перейти на страницу: " #: ../../static/t/listsub/display.html:18 msgid " mailing list." msgstr "" #: ../../static/t/listsub/display.html:19 msgid "" "The listserver has sent you an e-mail with one additional Web link for you " "to click on to confirm your subscription." msgstr "" #: ../../static/t/listsub/display.html:20 msgid "" "This extra step is for your protection, as it prevents others from being " "able to subscribe you to lists without your consent." msgstr "" #: ../../static/t/listsub/display.html:22 msgid "" "Please click on the link which is being e-mailed to you and your " "subscription will be confirmed." msgstr "" #: ../../static/t/listsub/display.html:27 #: ../../static/t/listsub/display.html:47 #, fuzzy msgid "ERROR" msgstr "ОШИБКА:" #: ../../static/t/listsub/display.html:35 msgid "You are unsubscribing" msgstr "" #: ../../static/t/listsub/display.html:37 #, fuzzy msgid "from the" msgstr "от " #: ../../static/t/listsub/display.html:39 msgid "mailing list." msgstr "" #: ../../static/t/listsub/display.html:40 msgid "" "The listserver has sent you an e-mail with one additional Web link for you " "to click on to confirm your unsubscription." msgstr "" #: ../../static/t/listsub/display.html:41 msgid "" "This extra step is for your protection, as it prevents others from being " "able to unsubscribe you from lists without your consent." msgstr "" #: ../../static/t/listsub/display.html:43 msgid "" "Please click on the link which is being e-mailed to you and your " "unsubscription will be confirmed." msgstr "" #: ../../static/t/listsub/display.html:44 #, fuzzy msgid "Back..." msgstr "Назад..." #: ../../static/t/listsub/display.html:54 #, fuzzy msgid "Confirmation successful!" msgstr "Запрос на подтверждение послан" #: ../../static/t/listsub/display.html:56 #, fuzzy msgid "Confirmation failed." msgstr "Конфигурация" #: ../../static/t/listsub/display.html:57 msgid "This could mean one of two things:" msgstr "" #: ../../static/t/listsub/display.html:59 msgid "" "You waited too long to confirm your subscribe/unsubscribe request (the " "confirmation link is only valid for three days)" msgstr "" #: ../../static/t/listsub/display.html:60 msgid "" "You have already successfully confirmed your subscribe/unsubscribe " "request and are attempting to do it again." msgstr "" #: ../../static/t/listsub/display.html:62 msgid "The error returned by the server was: " msgstr "" #: ../../static/t/listsub/display.html:70 #, fuzzy msgid "Name of list:" msgstr "Название задачи" #: ../../static/t/listsub/display.html:75 #, fuzzy msgid "Your e-mail address:" msgstr "Предпочитаемый адрес эл.почты" #: ../../static/t/listsub/display.html:79 msgid "(If subscribing) preferred format: " msgstr "" #: ../../static/t/listsub/display.html:80 #, fuzzy msgid "One message at a time" msgstr "Введите текст сообщения:" #: ../../static/t/listsub/display.html:81 #, fuzzy msgid "Digest format" msgstr "Формат времени" #: ../../static/t/listsub/display.html:89 msgid "" "When you attempt to subscribe or unsubscribe to a mailing list, you will " "receive an e-mail containing one additional web link to click on for final " "confirmation." msgstr "" #: ../../static/t/listsub/display.html:90 msgid "" "This extra step is for your protection, as it prevents others from being " "able to subscribe or unsubscribe you to lists." msgstr "" #: ../../static/t/floors_edit_one.html:11 msgid "(delete floor)" msgstr "(удалить этаж)" #: ../../static/t/floors_edit_one.html:13 msgid "(edit graphic)" msgstr "" #: ../../static/t/floors.html:4 msgid "Add/change/delete floors" msgstr "Добавить/изменить/удалить этажи" #: ../../static/t/floors.html:10 msgid "Floor number" msgstr "Номер этажа" #: ../../static/t/floors.html:11 msgid "Floor name" msgstr "Название этажа" #: ../../static/t/floors.html:12 msgid "Number of rooms" msgstr "Количество комнат" #: ../../static/t/floors.html:13 msgid "Floor CSS" msgstr "" #: ../../static/t/files.html:4 msgid "Files available for download in" msgstr "Файлы доступны для загрузки на" #: ../../static/t/files.html:9 msgid "Upload a file:" msgstr "Загрузить файл:" #: ../../static/t/files.html:30 msgid "Filename" msgstr "Имя файла" #: ../../static/t/files.html:31 msgid "Size" msgstr "Размер" #: ../../static/t/files.html:32 msgid "Content" msgstr "Содержимое" #: ../../static/t/files.html:33 msgid "Description" msgstr "Описание" #: ../../static/t/edit_message.html:9 ../../static/t/iconbar.html:50 #: ../../static/t/iconbar.html:59 msgid "Loading" msgstr "Загрузка" #: ../../static/t/edit_message.html:23 msgid "from" msgstr "от" #: ../../static/t/edit_message.html:29 ../../static/t/edit_message.html:38 msgid "Anonymous" msgstr "Анонимный" #: ../../static/t/edit_message.html:47 msgid "in" msgstr "в" #: ../../static/t/edit_message.html:51 msgid "To:" msgstr "Кому:" #: ../../static/t/edit_message.html:57 #: ../../static/t/view_message/print.html:15 #: ../../static/t/view_message.html:15 msgid "CC:" msgstr "Копия:" #: ../../static/t/edit_message.html:63 msgid "BCC:" msgstr "Скрытая копия:" #: ../../static/t/edit_message.html:71 msgid "Subject (optional):" msgstr "Тема(опционально):" #: ../../static/t/edit_message.html:71 #: ../../static/t/view_message/replyquote.html:8 #: ../../static/t/view_message/print.html:16 #: ../../static/t/view_message.html:16 msgid "Subject:" msgstr "Тема:" #: ../../static/t/edit_message.html:86 msgid "--- forwarded message ---" msgstr "" #: ../../static/t/edit_message.html:110 #, fuzzy msgid "Post message" msgstr "Новый пользователь" #: ../../static/t/edit_message.html:118 msgid "Save to Drafts" msgstr "" #: ../../static/t/edit_message.html:126 #: ../../static/t/edit_message/attachments_pane.html:5 msgid "Attachments:" msgstr "Вложения:" #: ../../static/t/aide/display_serverrestart_page.html:4 #, fuzzy msgid "Message to your Users:" msgstr "Сообщение не было отправлено." #: ../../static/t/aide/display_generic_result.html:2 msgid "Server command results" msgstr "" #: ../../static/t/aide/display_generic_result.html:18 msgid "Enter another command" msgstr "" #: ../../static/t/aide/display_generic_result.html:19 msgid "Return to menu" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:3 msgid "Site configuration" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:6 #: ../../static/t/aide/edituser/select.html:9 #, fuzzy msgid "You need to be aide to view this." msgstr "У вас нет разрешений для просмотра ресурса." #: ../../static/t/aide/display_sitewide_config.html:11 #, fuzzy msgid "General" msgstr "Отправитель" #: ../../static/t/aide/display_sitewide_config.html:12 #, fuzzy msgid "Access" msgstr "Уровень доступа" #: ../../static/t/aide/display_sitewide_config.html:13 #, fuzzy msgid "Network" msgstr "Сетевой пользователь" #: ../../static/t/aide/display_sitewide_config.html:14 msgid "Tuning" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:15 #, fuzzy msgid "Directory" msgstr "История" #: ../../static/t/aide/display_sitewide_config.html:16 msgid "Auto-purger" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:17 msgid "Indexing/Journaling" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:18 #: ../../static/t/aide/siteconfig/tab_pushmail.html:1 msgid "Push Email" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:19 msgid "Pop3" msgstr "" #: ../../static/t/aide/usermanagement.html:2 #, fuzzy msgid "Add, change, delete user accounts" msgstr "Добавить/изменить/удалить этажи" #: ../../static/t/aide/display_inetconf.html:5 #: ../../static/t/aide/display_menu.html:5 #, fuzzy msgid "System Administration Menu" msgstr "Администрация" #: ../../static/t/aide/display_inetconf.html:6 #: ../../static/t/aide/display_menu.html:6 #, fuzzy msgid "Room Admin Menu" msgstr "Информация о комнате" #: ../../static/t/aide/display_inetconf.html:13 msgid "Local host aliases" msgstr "" #: ../../static/t/aide/display_inetconf.html:14 msgid "Directory domains" msgstr "" #: ../../static/t/aide/display_inetconf.html:15 msgid "Smart hosts" msgstr "" #: ../../static/t/aide/display_inetconf.html:16 msgid "Fallback smart hosts" msgstr "" #: ../../static/t/aide/display_inetconf.html:17 msgid "Notification hosts" msgstr "" #: ../../static/t/aide/display_inetconf.html:22 msgid "RBL hosts" msgstr "" #: ../../static/t/aide/display_inetconf.html:23 msgid "SpamAssassin hosts" msgstr "" #: ../../static/t/aide/display_inetconf.html:24 msgid "ClamAV clamd hosts" msgstr "" #: ../../static/t/aide/display_inetconf.html:25 msgid "Masqueradable domains" msgstr "" #: ../../static/t/aide/edituser/select.html:5 #, fuzzy msgid "Edit or delete users" msgstr "Добавить или удалить скрипты" #: ../../static/t/aide/edituser/select.html:17 #, fuzzy msgid "Add users" msgstr "Добавить правило" #: ../../static/t/aide/edituser/select.html:20 #, fuzzy msgid "Edit or Delete users" msgstr "Удалённый" #: ../../static/t/aide/edituser/box_select.html:1 #, fuzzy msgid "" "To edit an existing user account, select the user name from the list and " "click 'Edit'." msgstr "Для удаления скрипта, выберите скрипт из списка и нажмите \"Удалить\"." #: ../../static/t/aide/edituser/detailview.html:4 msgid "Edit user account: " msgstr "" #: ../../static/t/aide/edituser/detailview.html:24 #: ../../static/t/room/edit/tab_feed.html:14 msgid "Password" msgstr "Пароль" #: ../../static/t/aide/edituser/detailview.html:28 msgid "Permission to send Internet mail" msgstr "" #: ../../static/t/aide/edituser/detailview.html:32 #, fuzzy msgid "Number of logins" msgstr "Количество комнат" #: ../../static/t/aide/edituser/detailview.html:36 #, fuzzy msgid "Messages submitted" msgstr "Размер сообщения" #: ../../static/t/aide/edituser/detailview.html:40 #, fuzzy msgid "Access level" msgstr "Уровень доступа" #: ../../static/t/aide/edituser/detailview.html:54 #, fuzzy msgid "User ID number" msgstr "Имя:" #: ../../static/t/aide/edituser/detailview.html:58 msgid "Date and time of last login" msgstr "" #: ../../static/t/aide/edituser/detailview.html:68 msgid "Auto-purge after this many days" msgstr "" #: ../../static/t/aide/edituser/add.html:1 #, fuzzy msgid "" "To create a new user account, enter the desired user name in the box below " "and click 'Create'." msgstr "Для удаления скрипта, выберите скрипт из списка и нажмите \"Удалить\"." #: ../../static/t/aide/edituser/add.html:5 #, fuzzy msgid "New user: " msgstr "Новый пользователь" #: ../../static/t/aide/display_generic_cmd.html:4 msgid "Enter a server command" msgstr "" #: ../../static/t/aide/display_generic_cmd.html:12 msgid "" "This screen allows you to enter Citadel server commands which are not " "supported by WebCit. If you do not know what that means, then this screen " "will not be of much use to you." msgstr "" #: ../../static/t/aide/display_generic_cmd.html:15 msgid "Enter command:" msgstr "" #: ../../static/t/aide/display_generic_cmd.html:17 msgid "Command input (if requesting SEND_LISTING transfer mode):" msgstr "" #: ../../static/t/aide/display_generic_cmd.html:20 msgid "Detected host header is " msgstr "" #: ../../static/t/aide/display_ignetconf.html:4 msgid "Network configuration" msgstr "Настройка сети" #: ../../static/t/aide/display_ignetconf.html:10 #: ../../static/t/aide/ignetconf/edit_node.html:5 #: ../../static/t/aide/ignetconf/add.html:5 #, fuzzy msgid "Add a new node" msgstr "Добавить новую заметку" #: ../../static/t/aide/display_ignetconf.html:14 msgid "Currently configured nodes" msgstr "" #: ../../static/t/aide/display_serverrestart.html:26 #, fuzzy msgid "Restart Citadel" msgstr "Новая стартовая страница" #: ../../static/t/aide/floorconfig.html:2 #, fuzzy msgid "Add, change, or delete floors" msgstr "Добавить/изменить/удалить этажи" #: ../../static/t/aide/serverrestart/box.html:3 msgid "Please wait while the Citadel server is restarted... " msgstr "" #: ../../static/t/aide/serverrestart/box_page_do.html:3 msgid "" "Please wait while your users are being paged, the citadel server will be " "restarted after that... " msgstr "" #: ../../static/t/aide/inet/masqdomains.html:2 msgid "(Domains as which users are allowed to masquerade)" msgstr "" #: ../../static/t/aide/inet/rbldns.html:2 msgid "(hosts running a Realtime Blackhole List)" msgstr "" #: ../../static/t/aide/inet/dirnames.html:2 msgid "(domains mapped with the Global Address Book)" msgstr "" #: ../../static/t/aide/inet/notify.html:2 msgid "(URLS for notifications when users receive new mails; )" msgstr "" #: ../../static/t/aide/inet/notify.html:2 msgid "" "Syntax: Notificationtemplatename:http[s]://user:password@hostname/path" msgstr "" #: ../../static/t/aide/inet/smarthosts.html:2 msgid "(if present, forward all outbound mail to one of these hosts)" msgstr "" #: ../../static/t/aide/inet/aliases.html:2 msgid "(domains for which this host receives mail)" msgstr "" #: ../../static/t/aide/inet/clamav.html:2 msgid "(hosts running the ClamAV clamd service)" msgstr "" #: ../../static/t/aide/inet/spamass.html:2 msgid "(hosts running the SpamAssassin service)" msgstr "" #: ../../static/t/aide/inet/fallbackhosts.html:2 msgid "(send outbound mail to these hosts only when direct delivery fails)" msgstr "" #: ../../static/t/aide/ignetconf/display_confirm_delete.html:5 msgid "Confirm delete" msgstr "Подтвердить удаление" #: ../../static/t/aide/ignetconf/display_confirm_delete.html:11 msgid "Are you sure you want to delete " msgstr "Вы действительно хотите удалить " #: ../../static/t/aide/ignetconf/display_confirm_delete.html:14 #: ../../static/t/prefs/box.html:198 ../../static/t/iconbar/edit.html:19 #: ../../static/t/iconbar/edit.html:26 ../../static/t/iconbar/edit.html:32 #: ../../static/t/iconbar/edit.html:39 ../../static/t/iconbar/edit.html:45 #: ../../static/t/iconbar/edit.html:52 ../../static/t/iconbar/edit.html:58 #: ../../static/t/iconbar/edit.html:64 ../../static/t/iconbar/edit.html:70 #: ../../static/t/iconbar/edit.html:76 ../../static/t/iconbar/edit.html:82 #: ../../static/t/iconbar/edit.html:88 msgid "Yes" msgstr "Да" #: ../../static/t/aide/ignetconf/display_confirm_delete.html:16 #: ../../static/t/prefs/box.html:200 ../../static/t/iconbar/edit.html:20 #: ../../static/t/iconbar/edit.html:27 ../../static/t/iconbar/edit.html:33 #: ../../static/t/iconbar/edit.html:40 ../../static/t/iconbar/edit.html:46 #: ../../static/t/iconbar/edit.html:53 ../../static/t/iconbar/edit.html:59 #: ../../static/t/iconbar/edit.html:65 ../../static/t/iconbar/edit.html:71 #: ../../static/t/iconbar/edit.html:77 ../../static/t/iconbar/edit.html:83 #: ../../static/t/iconbar/edit.html:89 msgid "No" msgstr "Нет" #: ../../static/t/aide/ignetconf/edit_node.html:15 #: ../../static/t/aide/ignetconf/add.html:15 #: ../../static/t/aide/siteconfig/tab_general.html:8 #, fuzzy msgid "Node name" msgstr "Имя:" #: ../../static/t/aide/ignetconf/edit_node.html:17 #: ../../static/t/aide/ignetconf/add.html:17 msgid "Shared secret" msgstr "" #: ../../static/t/aide/ignetconf/edit_node.html:19 #: ../../static/t/aide/ignetconf/add.html:19 msgid "Host or IP address" msgstr "" #: ../../static/t/aide/ignetconf/edit_node.html:21 #: ../../static/t/aide/ignetconf/add.html:21 #, fuzzy msgid "Port number" msgstr "Номер этажа" #: ../../static/t/aide/ignetconf/section.html:4 msgid "(Edit)" msgstr "(редактировать)" #: ../../static/t/aide/display_menu.html:12 msgid "Global Configuration" msgstr "" #: ../../static/t/aide/display_menu.html:14 msgid "User account management" msgstr "" #: ../../static/t/aide/display_menu.html:16 msgid "Shutdown Citadel" msgstr "" #: ../../static/t/aide/display_menu.html:18 msgid "Rooms and Floors" msgstr "" #: ../../static/t/aide/global_config.html:2 msgid "Edit site-wide configuration" msgstr "" #: ../../static/t/aide/global_config.html:3 msgid "Domain names and Internet mail configuration" msgstr "" #: ../../static/t/aide/global_config.html:4 msgid "Configure replication with other Citadel servers" msgstr "" #: ../../static/t/aide/global_config.html:5 #: ../../static/t/view_mailq/header.html:3 msgid "View the outbound SMTP queue" msgstr "" #: ../../static/t/aide/restart.html:2 msgid "Restart Now" msgstr "Перезагрузить сейчас" #: ../../static/t/aide/restart.html:3 msgid "Restart after paging users" msgstr "" #: ../../static/t/aide/restart.html:4 msgid "Restart when all users are idle" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:1 msgid "General site configuration items" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:5 msgid "Change Login Logo" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:6 msgid "Change Logout Logo" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:11 msgid "Fully qualified domain name" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:14 msgid "Human-readable node name" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:17 #, fuzzy msgid "Telephone number" msgstr "Телефон:" #: ../../static/t/aide/siteconfig/tab_general.html:20 msgid "Paginator prompt (for text mode clients)" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:23 msgid "Geographic location of this system" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:26 msgid "Name of system administrator" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:29 msgid "Default timezone for unzoned calendar items" msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:1 #, fuzzy msgid "Configure automatic expiry of old messages" msgstr "Подтвердить перемещение сообщения" #: ../../static/t/aide/siteconfig/tab_autopurger.html:2 msgid "These settings may be overridden on a per-floor or per-room basis." msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:6 msgid "Hour to run database auto-purge" msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:66 msgid "Default message expire policy for public rooms" msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:68 #: ../../static/t/aide/siteconfig/tab_autopurger.html:86 #: ../../static/t/room/edit/tab_expire.html:17 #: ../../static/t/room/edit/tab_expire.html:45 msgid "Never automatically expire messages" msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:71 #: ../../static/t/aide/siteconfig/tab_autopurger.html:89 #: ../../static/t/room/edit/tab_expire.html:20 #: ../../static/t/room/edit/tab_expire.html:48 #, fuzzy msgid "Expire by message count" msgstr "Пустое сообщение" #: ../../static/t/aide/siteconfig/tab_autopurger.html:73 #: ../../static/t/aide/siteconfig/tab_autopurger.html:92 #: ../../static/t/room/edit/tab_expire.html:23 #: ../../static/t/room/edit/tab_expire.html:51 #, fuzzy msgid "Expire by message age" msgstr "Пустое сообщение" #: ../../static/t/aide/siteconfig/tab_autopurger.html:75 #: ../../static/t/aide/siteconfig/tab_autopurger.html:94 #: ../../static/t/room/edit/tab_expire.html:25 #: ../../static/t/room/edit/tab_expire.html:53 msgid "Number of messages or days: " msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:81 msgid "Default message expire policy for private mailboxes" msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:83 msgid "Same policy as public rooms" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:1 #, fuzzy msgid "Network services" msgstr "Сетевой пользователь" #: ../../static/t/aide/siteconfig/tab_network.html:2 #: ../../static/t/aide/siteconfig/tab_directory.html:3 msgid "" "Changes made on this screen will not take effect until you restart the " "Citadel server." msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:6 msgid "SMTP MTA port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:9 msgid "Correct forged From: lines during authenticated SMTP" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:12 msgid "Flag message as spam, instead of rejecting it" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:15 msgid "IMAP listener port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:19 msgid "Network run frequency (in seconds)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:22 msgid "Server IP address (0.0.0.0 for 'any')" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:25 msgid "SMTP MSA port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:28 msgid "IMAP over SSL port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:31 msgid "SMTP over SSL port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:34 msgid "Instantly expunge deleted messages in IMAP" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:38 msgid "Allow unauthenticated SMTP clients to spoof this sites domains" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:41 msgid "Postfix TCP Dictionary Port" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:41 msgid "-1 to disable" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:44 msgid "ManageSieve Port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:47 msgid "Perform RBL checks upon connect instead of after RCPT" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:50 msgid "Keep original from headers in IMAP" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:53 msgid "XMPP (Jabber) client to server port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:56 msgid "XMPP (Jabber) server to server port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_pop3.html:1 msgid "POP3" msgstr "" #: ../../static/t/aide/siteconfig/tab_pop3.html:6 msgid "POP3 listener port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_pop3.html:9 msgid "POP3 over SSL port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_pop3.html:12 msgid "POP3 fetch frequency in seconds" msgstr "" #: ../../static/t/aide/siteconfig/tab_pop3.html:15 msgid "POP3 fastest fetch frequency in seconds" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:1 msgid "Advanced server fine-tuning controls" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:5 msgid "Server connection idle timeout (in seconds)" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:8 msgid "Maximum concurrent sessions (0 = no limit)" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:11 msgid "Default user purge time (days)" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:14 msgid "Default room purge time (days)" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:17 msgid "Maximum message length" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:20 msgid "Minimum number of worker threads" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:23 msgid "Maximum number of worker threads" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:26 msgid "Automatically delete committed database logs" msgstr "" #: ../../static/t/aide/siteconfig/tab_pushmail.html:5 msgid "Funambol server host (blank to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_pushmail.html:8 msgid "Funambol server port " msgstr "" #: ../../static/t/aide/siteconfig/tab_pushmail.html:11 msgid "Funambol sync source" msgstr "" #: ../../static/t/aide/siteconfig/tab_pushmail.html:14 msgid "Funambol auth details (user:pass)" msgstr "" #: ../../static/t/aide/siteconfig/tab_pushmail.html:17 msgid "External pager tool (blank to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:1 msgid "Access controls and site policy settings" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:5 msgid "Allow aides to zap (forget) rooms" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:9 msgid "Quarantine messages from problem users" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:12 msgid "Name of quarantine room" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:17 #, fuzzy msgid "Name of room to log pages" msgstr "Количество комнат" #: ../../static/t/aide/siteconfig/tab_access.html:22 msgid "Authentication mode" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:24 #, fuzzy msgid "Self contained" msgstr "содержит" #: ../../static/t/aide/siteconfig/tab_access.html:25 msgid "Host based" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:26 msgid "LDAP (RFC2307)" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:27 msgid "LDAP (Active Directory)" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:30 msgid "Master user name (blank to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:33 #, fuzzy msgid "Master user password" msgstr "Введите новый пароль:" #: ../../static/t/aide/siteconfig/tab_access.html:38 #, fuzzy msgid "Initial access level for new users" msgstr "Уровень доступа для пользователя:" #: ../../static/t/aide/siteconfig/tab_access.html:49 msgid "Access level required to create rooms" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:60 msgid "" "Automatically grant room-aide status to users who create private rooms" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:63 msgid "Automatically grant room-aide status to users who create BLOG rooms" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:66 msgid "Restrict access to Internet mail" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:71 msgid "Disable self-service user account creation" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:71 msgid "Hint: do not select both!" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:74 msgid "Require registration for new users" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:77 msgid "Allow anonymous guest access" msgstr "" #: ../../static/t/aide/siteconfig/tab_indexing.html:1 msgid "Indexing and Journaling" msgstr "" #: ../../static/t/aide/siteconfig/tab_indexing.html:2 msgid "Warning: these facilities are resource intensive." msgstr "" #: ../../static/t/aide/siteconfig/tab_indexing.html:6 msgid "Enable full text index" msgstr "" #: ../../static/t/aide/siteconfig/tab_indexing.html:9 msgid "Perform journaling of email messages" msgstr "" #: ../../static/t/aide/siteconfig/tab_indexing.html:13 msgid "Perform journaling of non-email messages" msgstr "" #: ../../static/t/aide/siteconfig/tab_indexing.html:16 msgid "Email destination of journalized messages" msgstr "" #: ../../static/t/aide/siteconfig/tab_directory.html:1 msgid "Configure the LDAP connector for Citadel" msgstr "" #: ../../static/t/aide/siteconfig/tab_directory.html:4 msgid "" "NOTE: This Citadel server has been built without LDAP support. These " "options will have no effect." msgstr "" #: ../../static/t/aide/siteconfig/tab_directory.html:9 msgid "Host name of LDAP server (blank to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_directory.html:13 msgid "Port number of LDAP server (blank to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_directory.html:16 msgid "Base DN" msgstr "" #: ../../static/t/aide/siteconfig/tab_directory.html:19 msgid "Bind DN" msgstr "" #: ../../static/t/aide/siteconfig/tab_directory.html:22 msgid "Password for bind DN" msgstr "" #: ../../static/t/iconbar.html:7 msgid "Language:" msgstr "Язык:" #: ../../static/t/iconbar.html:19 msgid "Mail" msgstr "Почта" #: ../../static/t/iconbar.html:39 ../../static/t/iconbar/edit.html:61 #: ../../static/t/summary/page.html:30 msgid "Tasks" msgstr "Задачи" #: ../../static/t/iconbar.html:48 ../../static/t/iconbar/edit.html:67 msgid "Rooms" msgstr "Комнаты" #: ../../static/t/iconbar.html:57 msgid "Online users" msgstr "Пользователи на сайте" #: ../../static/t/iconbar.html:62 ../../static/t/iconbar/edit.html:79 msgid "Chat" msgstr "Чат" #: ../../static/t/iconbar.html:65 msgid "Advanced" msgstr "Дополнительно" #: ../../static/t/iconbar.html:72 ../../static/t/room/edit/editroom.html:4 #: ../../static/t/room/edit.html:5 msgid "Administration" msgstr "Администрация" #: ../../static/t/iconbar.html:83 msgid "customize this menu" msgstr "customise this menu" #: ../../static/t/iconbar.html:92 msgid "switch to room list" msgstr "" #: ../../static/t/iconbar.html:93 msgid "switch to menu" msgstr "" #: ../../static/t/iconbar.html:94 msgid "My folders" msgstr "Мои папки" #: ../../static/t/view_message/list_attach.html:3 #: ../../static/t/view_message/inline_attach.html:4 msgid "View" msgstr "" #: ../../static/t/view_message/list_attach.html:4 #: ../../static/t/view_message/inline_attach.html:5 msgid "Download" msgstr "Скачать" #: ../../static/t/view_message/print.html:14 #: ../../static/t/view_message.html:14 msgid "to" msgstr "Кому" #: ../../static/t/openid_manual_create.html:2 msgid "Your OpenID" msgstr "Ваш OpenID" #: ../../static/t/openid_manual_create.html:2 msgid "was successfully verified." msgstr "" #: ../../static/t/openid_manual_create.html:3 msgid "However, the user name" msgstr "" #: ../../static/t/openid_manual_create.html:3 msgid "conflicts with an existing user." msgstr "" #: ../../static/t/openid_manual_create.html:5 msgid "Please specify the user name you would like to use." msgstr "Укажите Ваш ник (короткое имя)." #: ../../static/t/files/graphicsupload.html:2 msgid "Image upload" msgstr "Загрузить изображение" #: ../../static/t/files/graphicsupload.html:6 msgid "You can upload an image directly from your computer" msgstr "Можете загрузить изображение с вашего компьютера" #: ../../static/t/files/graphicsupload.html:8 msgid "Please select a file to upload:" msgstr "Выберите файл для загрузки:" #: ../../static/t/files/section_onefile.html:20 msgid "Slideshow" msgstr "Слайд-шоу" #: ../../static/t/roombanner.html:10 ../../static/t/roombanner.html:11 msgid "new of" msgstr "" #: ../../static/t/roombanner.html:10 ../../static/t/roombanner.html:11 #: ../../static/t/msg_listselector_bottom.html:7 #: ../../static/t/msg_listselector_top.html:7 msgid "messages" msgstr "сообщения" #: ../../static/t/roombanner.html:28 msgid "Select page: " msgstr "выбор страницы: " #: ../../static/t/who.html:13 msgid "Users currently on " msgstr "" #: ../../static/t/who.html:22 msgid "Click on a name to read user info. Click on" msgstr "" #: ../../static/t/who.html:24 msgid "to send an instant message to that user." msgstr "" #: ../../static/t/msg_listselector_bottom.html:2 #: ../../static/t/msg_listselector_top.html:2 msgid "Reading #" msgstr "Чтение #" #: ../../static/t/msg_listselector_bottom.html:12 #: ../../static/t/msg_listselector_top.html:12 msgid "oldest to newest" msgstr "от старых к новым" #: ../../static/t/msg_listselector_bottom.html:20 #: ../../static/t/msg_listselector_top.html:20 msgid "newest to oldest" msgstr "от новых к станым" #: ../../static/t/newstartpage.html:4 msgid "New start page" msgstr "Новая стартовая страница" #: ../../static/t/newstartpage.html:9 msgid "Your start page has been changed." msgstr "Стартовая страница изменена." #: ../../static/t/newstartpage.html:12 msgid "" "(Note: this does not change your browser's home page. It changes the page " "you begin on when you log on to" msgstr "" #: ../../static/t/no_new_msgs.html:3 msgid "No new messages." msgstr "Нет новых сообщений." #: ../../static/t/view_blog/comment_box.html:8 msgid "Post a comment" msgstr "Опубликовать комментарий" #: ../../static/t/prefs/pushemail.html:2 msgid "Configure Push Email" msgstr "" #: ../../static/t/prefs/pushemail.html:9 msgid "Push email and SMS settings" msgstr "" #: ../../static/t/prefs/pushemail.html:17 msgid "" "If your administrator has enabled the functionality, Citadel can notify a " "Funambol server that you haved recieved new email and automatically " "syncronize any devices you have with the Funambol client installed." msgstr "" #: ../../static/t/prefs/pushemail.html:20 msgid "" "Alternatively, if the administrator has configured it, Citadel can send a " "text message to you when new mail arrives." msgstr "" #: ../../static/t/prefs/pushemail.html:26 msgid "Notify Funambol server" msgstr "" #: ../../static/t/prefs/pushemail.html:31 #, fuzzy msgid "Send a text message to..." msgstr "Отправить сообщение" #: ../../static/t/prefs/pushemail.html:33 msgid "" "(Use international format, without any leading zeros, spaces or hypens, like " "+61415011501)" msgstr "" #: ../../static/t/prefs/pushemail.html:38 msgid "Use custom notification scheme configured by your Admin" msgstr "" #: ../../static/t/prefs/pushemail.html:43 msgid "Don‘t send any notifications" msgstr "" #: ../../static/t/prefs/box.html:9 msgid "Tree (folders) view" msgstr "" #: ../../static/t/prefs/box.html:11 msgid "Table (rooms) view" msgstr "" #: ../../static/t/prefs/box.html:20 msgid "12 hour (am/pm)" msgstr "" #: ../../static/t/prefs/box.html:25 #, fuzzy msgid "24 hour" msgstr "часа(ов)" #: ../../static/t/prefs/box.html:152 msgid "Sunday" msgstr "Воскресенье" #: ../../static/t/prefs/box.html:153 msgid "Monday" msgstr "Понедельник" #: ../../static/t/prefs/box.html:174 #, fuzzy msgid "No signature" msgstr "Использовать подпись:" #: ../../static/t/prefs/box.html:238 msgid "Full-functionality" msgstr "" #: ../../static/t/prefs/box.html:241 msgid "Safe mode" msgstr "" #: ../../static/t/prefs/box.html:242 msgid "" "Safe mode is less intensive on your web browser, but not as fully featured." msgstr "" #: ../../static/t/wiki/pagelist.html:1 msgid "List of Wiki pages" msgstr "" #: ../../static/t/wiki/history.html:1 msgid "History of edits for this page" msgstr "" #: ../../static/t/who/list_static_header.html:1 msgid "Users currently on" msgstr "" #: ../../static/t/who/section.html:4 #, fuzzy msgid "(kill)" msgstr " (mobile)" #: ../../static/t/who/bio.html:4 ../../static/t/user/show.html:4 msgid "User profile" msgstr "Профиль пользователя" #: ../../static/t/who/summary.html:5 ../../static/t/who/box_list_static.html:6 #: ../../static/t/room/edit/tab_feed.html:13 msgid "User name" msgstr "Имя пользователя" #: ../../static/t/who/summary.html:6 ../../static/t/who/box_list_static.html:7 msgid "Room" msgstr "Комната" #: ../../static/t/who/box_list_static.html:8 #, fuzzy msgid "From host" msgstr "От" #: ../../static/t/view_message.html:19 msgid "Edit" msgstr "Изменить" #: ../../static/t/view_message.html:22 ../../static/t/view_message.html:26 msgid "Reply" msgstr "Ответить" #: ../../static/t/view_message.html:23 msgid "ReplyQuoted" msgstr "" #: ../../static/t/view_message.html:27 msgid "ReplyAll" msgstr "" #: ../../static/t/view_message.html:28 msgid "Forward" msgstr "Вперёд" #: ../../static/t/view_message.html:31 ../../static/t/msg_listview.html:25 msgid "Move" msgstr "Переместить" #: ../../static/t/view_message.html:34 msgid "Headers" msgstr "Заголовки" #: ../../static/t/view_message.html:35 ../../static/t/msg_listview.html:28 msgid "Print" msgstr "Печать" #: ../../static/t/preferences.html:4 ../../static/t/preferences.html:7 msgid "Preferences and settings" msgstr "" #: ../../static/t/user/list.html:3 #, fuzzy msgid "User list for " msgstr "Список папок" #: ../../static/t/user/list.html:9 msgid "User Name" msgstr "Имя пользователя" #: ../../static/t/user/list.html:10 msgid "Number" msgstr "Номер" #: ../../static/t/user/list.html:11 msgid "Access Level" msgstr "Уровень доступа" #: ../../static/t/user/list.html:12 msgid "Last Login" msgstr "Последний вход" #: ../../static/t/user/list.html:13 msgid "Total Logins" msgstr "Всего входов" #: ../../static/t/user/list.html:14 msgid "Total Posts" msgstr "Всего сообщений" #: ../../static/t/user/show.html:9 msgid "Click here to send an instant message to" msgstr "" #: ../../static/t/start_of_new_msgs.html:4 msgid "Old messages" msgstr "Старые сообщения" #: ../../static/t/start_of_new_msgs.html:8 msgid "New messages" msgstr "Новые сообщения" #: ../../static/t/display_main_menu.html:7 msgid "Basic commands" msgstr "Основные команды" #: ../../static/t/display_main_menu.html:10 msgid "Your info" msgstr "" #: ../../static/t/display_main_menu.html:12 msgid "Advanced room commands" msgstr "" #: ../../static/t/iconbar/save.html:4 ../../static/t/iconbar/edit.html:4 msgid "Customize the icon bar" msgstr "Customise the icon bar" #: ../../static/t/iconbar/save.html:11 msgid "" "Your icon bar has been updated. Please select any of its choices to continue." msgstr "" #: ../../static/t/iconbar/save.html:11 msgid "" "You may need to force refresh (SHIFT-F5)> in order for changes to take effect" msgstr "" #: ../../static/t/iconbar/edit.html:11 #, fuzzy msgid "Display icons as:" msgstr "Отображаемое имя:" #: ../../static/t/iconbar/edit.html:12 msgid "pictures and text" msgstr "картинки и текст" #: ../../static/t/iconbar/edit.html:13 msgid "pictures only" msgstr "только картинки" #: ../../static/t/iconbar/edit.html:14 msgid "text only" msgstr "только текст" #: ../../static/t/iconbar/edit.html:16 msgid "" "Select the icons you would like to see displayed in the 'icon bar' menu on " "the left side of the screen." msgstr "" #: ../../static/t/iconbar/edit.html:23 msgid "Site logo" msgstr "Логотип сайта" #: ../../static/t/iconbar/edit.html:23 msgid "An icon describing this site" msgstr "" #: ../../static/t/iconbar/edit.html:29 msgid "Your summary page" msgstr "" #: ../../static/t/iconbar/edit.html:36 msgid "Mail (inbox)" msgstr "" #: ../../static/t/iconbar/edit.html:36 msgid "A shortcut to your email Inbox" msgstr "" #: ../../static/t/iconbar/edit.html:42 msgid "Your personal address book" msgstr "" #: ../../static/t/iconbar/edit.html:49 msgid "Your personal notes" msgstr "" #: ../../static/t/iconbar/edit.html:55 msgid "A shortcut to your personal calendar" msgstr "" #: ../../static/t/iconbar/edit.html:61 msgid "A shortcut to your personal task list" msgstr "" #: ../../static/t/iconbar/edit.html:67 msgid "" "Clicking this icon displays a list of all accessible rooms (or folders) " "available." msgstr "" #: ../../static/t/iconbar/edit.html:73 msgid "Who is online?" msgstr "Кто онлайн?" #: ../../static/t/iconbar/edit.html:73 msgid "Clicking this icon displays a list of all users currently logged in." msgstr "" #: ../../static/t/iconbar/edit.html:79 msgid "" "Clicking this icon enters real-time chat mode with other users in the same " "room." msgstr "" #: ../../static/t/iconbar/edit.html:85 msgid "Advanced options" msgstr "Расширенные настройки" #: ../../static/t/iconbar/edit.html:85 msgid "Access to the complete menu of Citadel functions." msgstr "" #: ../../static/t/iconbar/edit.html:91 msgid "Citadel logo" msgstr "" #: ../../static/t/iconbar/edit.html:91 msgid "Displays the 'Powered by Citadel' icon" msgstr "" #: ../../static/t/room/edit/tab_expire.html:8 msgid "Message expire policy for this room" msgstr "" #: ../../static/t/room/edit/tab_expire.html:14 msgid "Use the default policy for this floor" msgstr "" #: ../../static/t/room/edit/tab_expire.html:36 msgid "Message expire policy for this floor" msgstr "" #: ../../static/t/room/edit/tab_expire.html:42 msgid "Use the system default" msgstr "Использовать значения по умолчанию" #: ../../static/t/room/edit/editroom.html:5 ../../static/t/room/edit.html:6 msgid "Configuration" msgstr "Конфигурация" #: ../../static/t/room/edit/editroom.html:6 ../../static/t/room/edit.html:7 #, fuzzy msgid "Message expire policy" msgstr "Размер сообщения" #: ../../static/t/room/edit/editroom.html:7 ../../static/t/room/edit.html:8 msgid "Access controls" msgstr "" #: ../../static/t/room/edit/editroom.html:8 ../../static/t/room/edit.html:9 msgid "Sharing" msgstr "" #: ../../static/t/room/edit/editroom.html:9 ../../static/t/room/edit.html:10 msgid "Mailing list service" msgstr "" #: ../../static/t/room/edit/editroom.html:10 ../../static/t/room/edit.html:11 msgid "Remote retrieval" msgstr "" #: ../../static/t/room/edit/tab_config.html:6 msgid "name of room: " msgstr "имя комнаты: " #: ../../static/t/room/edit/tab_config.html:10 #: ../../static/t/room/create.html:20 msgid "Resides on floor: " msgstr "" #: ../../static/t/room/edit/tab_config.html:16 #: ../../static/t/room/create.html:68 msgid "Type of room:" msgstr "Тип комнаты:" #: ../../static/t/room/edit/tab_config.html:22 #: ../../static/t/room/create.html:73 msgid "Public (automatically appears to everyone)" msgstr "" #: ../../static/t/room/edit/tab_config.html:28 #: ../../static/t/room/create.html:77 msgid "Private - hidden (accessible to anyone who knows its name)" msgstr "" #: ../../static/t/room/edit/tab_config.html:35 #: ../../static/t/room/create.html:81 #, fuzzy msgid "Private - require password: " msgstr "Введите новый пароль:" #: ../../static/t/room/edit/tab_config.html:44 #: ../../static/t/room/create.html:86 msgid "Private - invitation only" msgstr "" #: ../../static/t/room/edit/tab_config.html:51 #: ../../static/t/room/create.html:90 msgid "Personal (mailbox for you only)" msgstr "" #: ../../static/t/room/edit/tab_config.html:55 msgid "If private, cause current users to forget room" msgstr "" #: ../../static/t/room/edit/tab_config.html:61 #, fuzzy msgid "Preferred users only" msgstr "Привилегированный пользователь" #: ../../static/t/room/edit/tab_config.html:66 msgid "Read-only room" msgstr "" #: ../../static/t/room/edit/tab_config.html:71 msgid "All users allowed to post may also delete messages" msgstr "" #: ../../static/t/room/edit/tab_config.html:76 msgid "File directory room" msgstr "" #: ../../static/t/room/edit/tab_config.html:80 #, fuzzy msgid "Directory name: " msgstr "Имя скрипта: " #: ../../static/t/room/edit/tab_config.html:86 msgid "Uploading allowed" msgstr "" #: ../../static/t/room/edit/tab_config.html:91 msgid "Downloading allowed" msgstr "Загрузка разрешена" #: ../../static/t/room/edit/tab_config.html:96 msgid "Visible directory" msgstr "" #: ../../static/t/room/edit/tab_config.html:103 #, fuzzy msgid "Network shared room" msgstr "Сетевой пользователь" #: ../../static/t/room/edit/tab_config.html:108 msgid "Permanent (does not auto-purge)" msgstr "" #: ../../static/t/room/edit/tab_config.html:113 msgid "Subject Required (Force users to specify a message subject)" msgstr "" #: ../../static/t/room/edit/tab_config.html:116 #, fuzzy msgid "Anonymous messages" msgstr "Новый пользователь" #: ../../static/t/room/edit/tab_config.html:122 #, fuzzy msgid "No anonymous messages" msgstr "Нет новых сообщений." #: ../../static/t/room/edit/tab_config.html:127 #, fuzzy msgid "All messages are anonymous" msgstr "(Все сообщения)" #: ../../static/t/room/edit/tab_config.html:132 msgid "Prompt user when entering messages" msgstr "" #: ../../static/t/room/edit/tab_config.html:136 #, fuzzy msgid "Room aide: " msgstr "Название комнаты:" #: ../../static/t/room/edit/tab_listserv.html:5 msgid "" "The contents of this room are being mailed as individual messages " "to the following list recipients:

    " msgstr "" #: ../../static/t/room/edit/tab_listserv.html:19 msgid "" "The contents of this room are being mailed in digest form to the " "following list recipients:

    " msgstr "" #: ../../static/t/room/edit/tab_listserv.html:39 msgid "Add recipients from Contacts or other address books" msgstr "" #: ../../static/t/room/edit/tab_listserv.html:48 msgid "Allow non-subscribers to mail to this room." msgstr "" #: ../../static/t/room/edit/tab_listserv.html:54 msgid "Room post publication needs Admin permission." msgstr "" #: ../../static/t/room/edit/tab_listserv.html:59 msgid "Allow self-service subscribe/unsubscribe requests." msgstr "" #: ../../static/t/room/edit/tab_listserv.html:65 msgid "The URL for subscribe/unsubscribe is: " msgstr "" #: ../../static/t/room/edit/digestrecp_removal.html:1 #: ../../static/t/room/edit/pop3client_removal.html:9 #: ../../static/t/room/edit/listrecp_removal.html:1 #: ../../static/t/room/edit/rssclient_removal.html:5 msgid "(remove)" msgstr "(удалить)" #: ../../static/t/room/edit/tab_admin.html:5 msgid "Delete this room" msgstr "Удалить комнату" #: ../../static/t/room/edit/tab_admin.html:10 msgid "Set or change the icon for this rooms banner" msgstr "" #: ../../static/t/room/edit/tab_admin.html:14 msgid "Edit this rooms Info file" msgstr "" #: ../../static/t/room/edit/tab_share.html:5 msgid "Shared with" msgstr "" #: ../../static/t/room/edit/tab_share.html:6 msgid "Not shared with" msgstr "" #: ../../static/t/room/edit/tab_share.html:11 #: ../../static/t/room/edit/tab_share.html:21 #, fuzzy msgid "Remote node name" msgstr "Имя:" #: ../../static/t/room/edit/tab_share.html:12 #: ../../static/t/room/edit/tab_share.html:22 #, fuzzy msgid "Remote room name" msgstr "Название комнаты:" #: ../../static/t/room/edit/tab_share.html:13 #: ../../static/t/room/edit/tab_share.html:23 msgid "Actions" msgstr "Действия" #: ../../static/t/room/edit/tab_share.html:35 msgid "" "When sharing a room, it must be shared from both ends. Adding a node to the " "'shared' list sends messages out, but in order to receive messages, the " "other nodes must be configured to send messages out to your system as well. " "
  • If the remote room name is blank, it is assumed that the room name is " "identical on the remote node.
  • If the remote room name is different, the " "remote node must also configure the name of the room here." msgstr "" #: ../../static/t/room/edit/tab_feed.html:2 msgid "" "Retrieve messages from these remote POP3 accounts and store them in this " "room:" msgstr "" #: ../../static/t/room/edit/tab_feed.html:12 msgid "Remote host" msgstr "" #: ../../static/t/room/edit/tab_feed.html:15 msgid "Keep messages on server?" msgstr "Сохранять сообщения на сервере?" #: ../../static/t/room/edit/tab_feed.html:16 msgid "Interval" msgstr "Интервал" #: ../../static/t/room/edit/tab_feed.html:31 msgid "Fetch the following RSS feeds and store them in this room:" msgstr "" #: ../../static/t/room/edit/tab_feed.html:43 msgid "Feed URL" msgstr "" #: ../../static/t/room/edit/tab_access.html:5 msgid "" "The users listed below have access to this room. To remove a user from the " "access list, select the user name from the list and click 'Kick'." msgstr "" #: ../../static/t/room/edit/tab_access.html:20 msgid "" "To grant another user access to this room, enter the user name in the box " "below and click 'Invite'." msgstr "" #: ../../static/t/room/edit/tab_access.html:26 msgid "Invite:" msgstr "Приглашение:" #: ../../static/t/room/edit/tab_access.html:35 msgid "Users" msgstr "Пользователи" #: ../../static/t/room/zapped_list.html:7 msgid "Zapped (forgotten) rooms" msgstr "" #: ../../static/t/room/zapped_list.html:10 msgid "Click on any room to un-zap it and goto that room." msgstr "" #: ../../static/t/room/display_private.html:7 msgid "Go to a hidden room" msgstr "" #: ../../static/t/room/display_private.html:8 msgid "" "If you know the name of a hidden (guess-name) or passworded room, you can " "enter that room by typing its name below. Once you gain access to a private " "room, it will appear in your regular room listings so you don‘t have to keep " "returning here." msgstr "" #: ../../static/t/room/display_private.html:14 msgid "Enter room name:" msgstr "Введите название комнаты:" #: ../../static/t/room/display_private.html:21 msgid "Enter room password:" msgstr "Введите пароль комнаты:" #: ../../static/t/room/create.html:11 #: ../../static/t/menu/advanced_roomcommands.html:6 msgid "Create a new room" msgstr "Создать комнату" #: ../../static/t/room/create.html:18 msgid "Name of room: " msgstr "Имя комнаты: " #: ../../static/t/room/create.html:32 msgid "Default view for room: " msgstr "" #: ../../static/t/room/zap_this.html:3 msgid "Zap (forget/unsubscribe) the current room" msgstr "" #: ../../static/t/room/zap_this.html:6 msgid "If you select this option," msgstr "" #: ../../static/t/room/zap_this.html:8 msgid "will disappear from your room list. Is this what you wish to do?" msgstr "" #: ../../static/t/menu/your_info.html:2 msgid "Change your preferences and settings" msgstr "" #: ../../static/t/menu/your_info.html:3 msgid "Update your contact information" msgstr "" #: ../../static/t/menu/your_info.html:5 msgid "Enter your 'bio'" msgstr "" #: ../../static/t/menu/your_info.html:6 #, fuzzy msgid "Edit your online photo" msgstr "ваше фото" #: ../../static/t/menu/your_info.html:8 msgid "Edit your push email settings" msgstr "" #: ../../static/t/menu/your_info.html:9 #, fuzzy msgid "Manage your OpenIDs" msgstr "Ваш OpenID" #: ../../static/t/menu/basic_commands.html:3 msgid "List known rooms" msgstr "" #: ../../static/t/menu/basic_commands.html:3 msgid "Where can I go from here?" msgstr "" #: ../../static/t/menu/basic_commands.html:4 ../../static/t/navbar.html:168 msgid "Goto next room" msgstr "Перейти к следующей комнате" #: ../../static/t/menu/basic_commands.html:4 msgid "...with unread messages" msgstr "" #: ../../static/t/menu/basic_commands.html:5 #, fuzzy msgid "Skip to next room" msgstr "Пропустить комнату" #: ../../static/t/menu/basic_commands.html:5 msgid "(come back here later)" msgstr "" #: ../../static/t/menu/basic_commands.html:6 ../../static/t/navbar.html:5 msgid "Ungoto" msgstr "" #: ../../static/t/menu/basic_commands.html:6 msgid "oops! Back to " msgstr "Упс! Назад в " #: ../../static/t/menu/basic_commands.html:10 ../../static/t/navbar.html:13 msgid "Read new messages" msgstr "Читать новые сообщения" #: ../../static/t/menu/basic_commands.html:10 #, fuzzy msgid "...in this room" msgstr "Пропустить комнату" #: ../../static/t/menu/basic_commands.html:11 ../../static/t/navbar.html:19 msgid "Read all messages" msgstr "Читать все сообщения" #: ../../static/t/menu/basic_commands.html:11 msgid "...old and new" msgstr "" #: ../../static/t/menu/basic_commands.html:12 ../../static/t/navbar.html:25 msgid "Enter a message" msgstr "Введите сообщение" #: ../../static/t/menu/basic_commands.html:12 #, fuzzy msgid "(post in this room)" msgstr "Пропустить комнату" #: ../../static/t/menu/basic_commands.html:13 msgid "File library" msgstr "" #: ../../static/t/menu/basic_commands.html:13 msgid "(List files available for download)" msgstr "" #: ../../static/t/menu/basic_commands.html:17 #, fuzzy msgid "Summary page" msgstr "Итого:" #: ../../static/t/menu/basic_commands.html:17 msgid "Summary of my account" msgstr "" #: ../../static/t/menu/basic_commands.html:18 msgid "User list" msgstr "Список пользователей" #: ../../static/t/menu/basic_commands.html:18 #, fuzzy msgid "(all registered users)" msgstr "Новые пользователи" #: ../../static/t/menu/basic_commands.html:19 msgid "Bye!" msgstr "" #: ../../static/t/menu/advanced_roomcommands.html:3 #, fuzzy msgid "Edit or delete this room" msgstr "Добавить или удалить скрипты" #: ../../static/t/menu/advanced_roomcommands.html:5 msgid "Go to a 'hidden' room" msgstr "" #: ../../static/t/menu/advanced_roomcommands.html:7 #, fuzzy msgid "Zap (forget) this room" msgstr "Пропустить комнату" #: ../../static/t/menu/advanced_roomcommands.html:8 msgid "List all forgotten rooms" msgstr "" #: ../../static/t/navbar.html:34 msgid "View contacts" msgstr "" #: ../../static/t/navbar.html:40 msgid "Add new contact" msgstr "Добавить новый контакт" #: ../../static/t/navbar.html:49 msgid "Day view" msgstr "" #: ../../static/t/navbar.html:55 msgid "Month view" msgstr "" #: ../../static/t/navbar.html:61 msgid "Add new event" msgstr "Добавить новое событие" #: ../../static/t/navbar.html:70 msgid "Calendar list" msgstr "" #: ../../static/t/navbar.html:79 msgid "View tasks" msgstr "" #: ../../static/t/navbar.html:85 msgid "Add new task" msgstr "Добавить новое задание" #: ../../static/t/navbar.html:94 msgid "View notes" msgstr "Просмотр заметок" #: ../../static/t/navbar.html:101 msgid "Add new note" msgstr "Добавить новую заметку" #: ../../static/t/navbar.html:110 msgid "Refresh message list" msgstr "Обновить список сообщений" #: ../../static/t/navbar.html:122 msgid "Write mail" msgstr "Написать письмо" #: ../../static/t/navbar.html:132 msgid "Wiki home" msgstr "Домашняя Вики" #: ../../static/t/navbar.html:139 msgid "Edit this page" msgstr "Редактировать страницу" #: ../../static/t/navbar.html:145 msgid "History" msgstr "История" #: ../../static/t/navbar.html:154 #, fuzzy msgid "New blog post" msgstr "новые сообщения" #: ../../static/t/navbar.html:162 msgid "Skip this room" msgstr "Пропустить комнату" #: ../../static/t/msg_listview.html:18 msgid "Loading messages from server, please wait" msgstr "Загрузка сообщений с сервера, подождите" #: ../../static/t/msg_listview.html:24 msgid "Open in new window" msgstr "Открыть в новом окне" #: ../../static/t/msg_listview.html:26 msgid "Copy" msgstr "Копировать" #: ../../static/t/view_mailq/message.html:6 msgid "Originaly posted in: " msgstr "" #: ../../static/t/view_mailq/header.html:15 msgid "Refresh this page" msgstr "Обновить страницу" #: ../../static/t/view_mailq/header.html:21 msgid "Message ID" msgstr "ID сообщения" #: ../../static/t/view_mailq/header.html:23 msgid "Date/time submitted" msgstr "" #: ../../static/t/view_mailq/header.html:25 msgid "Next attempt" msgstr "" #: ../../static/t/view_mailq/header.html:29 msgid "Recipients" msgstr "Получатели" #: ../../static/t/view_mailq/footer_empty.html:4 msgid "The queue is empty." msgstr "" #: ../../static/t/view_mailq/footer_empty.html:9 #: ../../static/t/view_mailq/footer.html:5 msgid "You do not have permission to view this resource." msgstr "У вас нет разрешений для просмотра ресурса." #: ../../static/t/get_logged_in.html:5 msgid "You must be logged in to access this page." msgstr "Вы должны войти в систему для доступа к этой странице." #: ../../static/t/get_logged_in.html:9 #: ../../static/t/edit_message/attachments_pane.html:3 msgid "Close window" msgstr "Закрыть окно" #: ../../static/t/get_logged_in.html:55 msgid "Log in using a user name and password" msgstr "Войдите используя имя пользователя и пароль" #: ../../static/t/get_logged_in.html:60 ../../static/t/get_logged_in.html:75 msgid "Password:" msgstr "Пароль:" #: ../../static/t/get_logged_in.html:65 ../../static/t/get_logged_in.html:69 msgid "New user? Register now" msgstr "Новый пользователь? Зарегистрируйтесь сейчас" #: ../../static/t/get_logged_in.html:70 msgid "" "enter the name and password you wish to use, and click "New User." " msgstr "" #: ../../static/t/get_logged_in.html:83 msgid "Log in using OpenID" msgstr "Войдите используя OpenID" #: ../../static/t/get_logged_in.html:85 msgid "OpenID URL:" msgstr "OpenID URL:" #: ../../static/t/get_logged_in.html:92 #, fuzzy msgid "Log in using Google" msgstr "Войдите используя OpenID" #: ../../static/t/get_logged_in.html:97 #, fuzzy msgid "Log in using Yahoo" msgstr "Войдите используя OpenID" #: ../../static/t/get_logged_in.html:102 #, fuzzy msgid "Log in using AOL or AIM" msgstr "Войдите используя OpenID" #: ../../static/t/get_logged_in.html:104 msgid "Enter your AOL or AIM screen name:" msgstr "" #: ../../static/t/get_logged_in.html:115 msgid "Please wait" msgstr "" #: ../../static/t/summary/page.html:4 #, fuzzy msgid "Summary page for " msgstr "Итого:" #: ../../static/t/summary/page.html:21 msgid "Messages" msgstr "Сообщения" #: ../../static/t/summary/page.html:39 msgid "Today on your calendar" msgstr "" #: ../../static/t/summary/page.html:51 msgid "Who‘s online now" msgstr "" #: ../../static/t/summary/page.html:60 msgid "About this server" msgstr "О сервере" #: ../../static/t/summary/page.html:63 msgid "You are connected to" msgstr "" #: ../../static/t/summary/page.html:64 msgid "running" msgstr "" #: ../../static/t/summary/page.html:65 #, fuzzy msgid "with" msgstr "пятый" #: ../../static/t/summary/page.html:66 msgid "server build" msgstr "" #: ../../static/t/summary/page.html:67 msgid "and located in" msgstr "" #: ../../static/t/summary/page.html:68 #, fuzzy msgid "Your system administrator is" msgstr "Администрация" #: ../../static/t/edit_message/attachments_pane.html:16 msgid "Attach file" msgstr "Вложить файл" #: ../../static/t/edit_message/attachments_pane.html:21 msgid "Upload" msgstr "Загрузить" #: ../../static/t/edit_message/section_attach_select.html:4 msgid "Remove" msgstr "Удалить" #: ../../static/t/loggedinas.html:3 msgid "Logged in as" msgstr "Вы вошли как" #: ../../static/t/loggedinas.html:6 msgid "Not logged in." msgstr "Вход не выполнен." #~ msgid "A script by that name already exists." #~ msgstr "Скрипт с таким именем уже существует" #~ msgid "Create" #~ msgstr "Создать" #~ msgid "Delete script" #~ msgstr "Удалить скрипт" #~ msgid "Delete this script?" #~ msgstr "Удалить скрипт:" #~ msgid "Delete rule" #~ msgstr "Удалить правило" #~ msgid "Reset form" #~ msgstr "Очистить форму" #~ msgid "Room list" #~ msgstr "Список комнат" #~ msgid " - powered by Citadel" #~ msgstr " - powered by Citadel" #, fuzzy #~ msgid "uname" #~ msgstr "Имя файла" #, fuzzy #~ msgid "text" #~ msgstr "след." #, fuzzy #~ msgid "name" #~ msgstr "Имя файла" #, fuzzy #~ msgid "pname" #~ msgstr "Имя файла" #, fuzzy #~ msgid "password" #~ msgstr "Пароль:" #, fuzzy #~ msgid "pass" #~ msgstr "Задачи" #, fuzzy #~ msgid "display: none" #~ msgstr "Отображаемое имя:" #~ msgid "Your password was not accepted." #~ msgstr "Неверный пароль" #~ msgid "Exit" #~ msgstr "Выход" #, fuzzy #~ msgid "Delete File" #~ msgstr "Удалённый" #, fuzzy #~ msgid "Log off now?" #~ msgstr "Выйти" #~ msgid "Customize this menu" #~ msgstr "Customise this menu" webcit-8.24-dfsg.orig/po/webcit/zh.po0000644000175000017500000032346412271477123017270 0ustar michaelmichael# WebCit messages for Chinese (Simplified) # Copyright (C) 2011 by elliott callaway # This file is distributed under GPL v3 # # , 2011. msgid "" msgstr "" "Project-Id-Version: WebCit\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-03-20 01:03-0400\n" "PO-Revision-Date: 2011-05-19 13:33+0800\n" "Last-Translator: elliott callaway \n" "Language-Team: \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-10-23 04:47+0000\n" "X-Generator: Lokalize 1.1\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ../../roomops.c:708 ../../roomops.c:1005 ../../sieve.c:364 msgid "Cancelled. Changes were not saved." msgstr "取消。未保存的更改" #: ../../roomops.c:838 ../../sieve.c:417 msgid "Your changes have been saved." msgstr "已保存您的更改" #: ../../roomops.c:881 #, c-format msgid "User '%s' kicked out of room '%s'." msgstr "用户 %s 踢出房间 %s。 " #: ../../roomops.c:898 #, c-format msgid "User '%s' invited to room '%s'." msgstr "用户 '%s' 邀请到 '%s' 的房间。 " #: ../../roomops.c:927 msgid "Cancelled. No new room was created." msgstr "取消。不创建任何新的房间。 " #: ../../roomops.c:1187 msgid "Floor has been deleted." msgstr "地板已被删除." #: ../../roomops.c:1211 msgid "New floor has been created." msgstr "已创建新的地板。 " #: ../../roomops.c:1290 msgid "Room list view" msgstr "房间列表视图 " #: ../../roomops.c:1293 msgid "Show empty floors" msgstr "显示空层 " #: ../../roomviews.c:50 msgid "Bulletin Board" msgstr "公告板 " #: ../../roomviews.c:51 msgid "Mail Folder" msgstr "邮件文件夹 " #: ../../roomviews.c:52 msgid "Address Book" msgstr "通讯簿 " #: ../../roomviews.c:53 ../../static/t/iconbar.html:24 #: ../../static/t/iconbar/edit.html:55 msgid "Calendar" msgstr "日历 " #: ../../roomviews.c:54 msgid "Task List" msgstr "任务列表 " #: ../../roomviews.c:55 msgid "Notes List" msgstr "注释列表 " #: ../../roomviews.c:56 msgid "Wiki" msgstr "Wiki " #: ../../roomviews.c:57 msgid "Calendar List" msgstr "日历列表 " #: ../../roomviews.c:58 msgid "Journal" msgstr "杂志 " #: ../../roomviews.c:59 msgid "Drafts" msgstr "草稿 " #: ../../roomviews.c:60 msgid "Blog" msgstr "博客 " #: ../../tasks.c:93 msgid "Completed?" msgstr "完成吗?" #: ../../tasks.c:95 msgid "Name of task" msgstr "任务的名称" #: ../../tasks.c:97 msgid "Date due" msgstr "到期日期" #: ../../tasks.c:99 msgid "Category" msgstr "类别" #: ../../tasks.c:101 msgid "Show All" msgstr "显示所有" #: ../../tasks.c:223 msgid "Edit task" msgstr "编辑任务" #: ../../tasks.c:242 ../../calendar.c:98 ../../calendar_view.c:298 #: ../../calendar_view.c:959 ../../calendar_view.c:1003 #: ../../calendar_view.c:1084 msgid "Summary:" msgstr "摘要:" #: ../../tasks.c:253 msgid "Start date:" msgstr "开始日期:" #: ../../tasks.c:261 ../../tasks.c:291 msgid "No date" msgstr "没有日期" #: ../../tasks.c:265 ../../tasks.c:294 msgid "or" msgstr "组织:" #: ../../tasks.c:279 ../../tasks.c:308 msgid "Time associated" msgstr "相关联的时间" #: ../../tasks.c:283 msgid "Due date:" msgstr "截止日期:" #: ../../tasks.c:312 msgid "Completed:" msgstr "完成:" #: ../../tasks.c:323 msgid "Category:" msgstr "类别:" #: ../../tasks.c:333 ../../calendar.c:159 ../../static/t/files.html:12 msgid "Description:" msgstr "说明" #: ../../tasks.c:351 ../../event.c:764 msgid "Save" msgstr "保存" #: ../../tasks.c:352 ../../event.c:765 ../../static/t/aide/inet/section.html:5 #: ../../static/t/view_blog/comment.html:12 #: ../../static/t/view_blog/post.html:15 ../../static/t/view_message.html:32 #: ../../static/t/navbar.html:116 ../../static/t/msg_listview.html:27 msgid "Delete" msgstr "删除" #: ../../tasks.c:353 ../../vcard_edit.c:1216 ../../paging.c:66 #: ../../event.c:767 ../../sysmsgs.c:69 ../../who.c:200 ../../auth.c:812 #: ../../static/t/edit_message.html:135 ../../static/t/confirmlogoff.html:4 msgid "Cancel" msgstr "取消" #: ../../tasks.c:423 ../../calendar_view.c:1379 msgid "Untitled Task" msgstr "无标题的任务" #: ../../fmt_date.c:310 msgid "Time format" msgstr "时间格式 " #: ../../listsub.c:54 ../../static/t/listsub/display.html:5 msgid "List subscription" msgstr "订阅列表 " #: ../../listsub.c:67 ../../static/t/listsub/display.html:9 msgid "List subscribe/unsubscribe" msgstr "订阅的列表/insibscribe " #: ../../listsub.c:87 ../../static/t/listsub/display.html:15 #: ../../static/t/listsub/display.html:34 msgid "Confirmation request sent" msgstr "发送确认请求 " #: ../../listsub.c:89 #, c-format msgid "" "You are subscribing %s to the %s mailing list. The " "listserver has sent you an e-mail with one additional Web link for you to " "click on to confirm your subscription. This extra step is for your " "protection, as it prevents others from being able to subscribe you to lists " "without your consent.

    Please click on the link which is being e-" "mailed to you and your subscription will be confirmed.
    \n" msgstr "" "您的订阅 %s %s 邮件列表中。\"信笺已向您发送带有一个附" "加的 Web 链接,为您的电子邮件单击以确认您的订购。这种额外的步骤是为你作为它的" "保护,防止他人能够为您订阅列表没有你的同意,

    请点击以下链接正在 e-邮" "寄给您,并将确认您的订购。
    \n" #: ../../listsub.c:102 ../../static/t/listsub/display.html:24 msgid "Go back..." msgstr "回去。。。 " #: ../../listsub.c:253 ../../listsub.c:291 ../../listsub.c:327 #: ../../listsub.c:334 msgid "You need to specify the mailinglist to subscribe to." msgstr "" #: ../../listsub.c:260 ../../listsub.c:298 #, fuzzy msgid "You need to specify the email address you'd like to subscribe with." msgstr "请指定您想要使用的用户名。" #: ../../blogview_renderer.c:58 ../../blogview_renderer.c:74 #, c-format msgid "%d comments" msgstr "%d 的评论 " #: ../../blogview_renderer.c:61 ../../blogview_renderer.c:77 msgid "permalink" msgstr "" #: ../../blogview_renderer.c:302 msgid "Newer posts" msgstr "" #: ../../blogview_renderer.c:311 #, fuzzy msgid "Older posts" msgstr "文件夹列表" #: ../../useredit.c:629 msgid "" "An error occurred while trying to create or edit this address book entry." msgstr "尝试创建或编辑此通讯簿条目时出错。 " #: ../../useredit.c:717 msgid "Changes were not saved." msgstr "未保存的更改 " #: ../../useredit.c:782 msgid "A new user has been created." msgstr "已创建一个新用户。 " #: ../../useredit.c:786 msgid "" "You are attempting to create a new user from within Citadel while running in " "host based authentication mode. In this mode, you must create new users on " "the host system, not within Citadel." msgstr "" "您试图在运行时创建一个新的用户,从城堡内基于主机的身份验证模式。在此模式中," "您必须在创建新用户主机系统,不能在城堡。 " #: ../../bbsview_renderer.c:312 msgid "Go to page: " msgstr "转到页面: " #: ../../bbsview_renderer.c:354 msgid "First" msgstr "第一次 " #: ../../bbsview_renderer.c:360 msgid "Last" msgstr "最后 " #: ../../graphics.c:56 msgid "Graphics upload has been cancelled." msgstr "图形上载已被取消。 " #: ../../graphics.c:62 msgid "You didn't upload a file." msgstr "你才上传的文件 " #: ../../graphics.c:112 msgid "your photo" msgstr "你的照片 " #: ../../graphics.c:119 msgid "the icon for this room" msgstr "这间屋子的图标 " #: ../../graphics.c:127 msgid "the Greetingpicture for the login prompt" msgstr "登录提示的 Greetingpicture " #: ../../graphics.c:135 msgid "the Logoff banner picture" msgstr "注销横幅图片 " #: ../../graphics.c:146 msgid "the icon for this floor" msgstr "这层图标 " #: ../../calendar_tools.c:100 msgid "Hour: " msgstr "小时" #: ../../calendar_tools.c:120 msgid "Minute: " msgstr "分钟" #: ../../calendar_tools.c:191 msgid "(status unknown)" msgstr "(状态未知)" #: ../../calendar_tools.c:207 msgid "(needs action)" msgstr "(需要行动)" #: ../../calendar_tools.c:210 msgid "(accepted)" msgstr "(接受)" #: ../../calendar_tools.c:213 msgid "(declined)" msgstr "(拒绝)" #: ../../calendar_tools.c:216 msgid "(tenative)" msgstr "(暂定)" #: ../../calendar_tools.c:219 msgid "(delegated)" msgstr "(委派)" #: ../../calendar_tools.c:222 msgid "(completed)" msgstr "(已完成)" #: ../../calendar_tools.c:225 msgid "(in process)" msgstr "(进行中)" #: ../../calendar_tools.c:228 msgid "(none)" msgstr "(无)" #: ../../notes.c:343 msgid "Click on any note to edit it." msgstr "单击任何注释,对其进行编辑。 " #: ../../vcard_edit.c:175 ../../vcard_edit.c:178 msgid "(no name)" msgstr "(没有名称)" #: ../../vcard_edit.c:443 msgid " (work)" msgstr "(工作)" #: ../../vcard_edit.c:445 msgid " (home)" msgstr "(首页)" #: ../../vcard_edit.c:447 msgid " (cell)" msgstr "(单元格)" #: ../../vcard_edit.c:458 ../../vcard_edit.c:1120 msgid "Address:" msgstr "地址:" #: ../../vcard_edit.c:526 msgid "Telephone:" msgstr "电话:" #: ../../vcard_edit.c:531 msgid "E-mail:" msgstr "电子邮件:" #: ../../vcard_edit.c:779 msgid "This address book is empty." msgstr "此通讯簿是空" #: ../../vcard_edit.c:793 msgid "An internal error has occurred." msgstr "发生内部错误。" #: ../../vcard_edit.c:944 msgid "Error" msgstr "错误" #: ../../vcard_edit.c:1048 msgid "Edit contact information" msgstr "编辑联系信息" #: ../../vcard_edit.c:1068 msgid "Prefix" msgstr "前缀" #: ../../vcard_edit.c:1068 msgid "First Name" msgstr "第一名" #: ../../vcard_edit.c:1068 msgid "Middle Name" msgstr "中间名" #: ../../vcard_edit.c:1068 msgid "Last Name" msgstr "姓氏" #: ../../vcard_edit.c:1068 msgid "Suffix" msgstr "后缀" #: ../../vcard_edit.c:1089 msgid "Display name:" msgstr "显示名称:" #: ../../vcard_edit.c:1096 msgid "Title:" msgstr "标题:" #: ../../vcard_edit.c:1103 msgid "Organization:" msgstr "组织:" #: ../../vcard_edit.c:1114 msgid "PO box:" msgstr "信箱:" #: ../../vcard_edit.c:1130 msgid "City:" msgstr "城市:" #: ../../vcard_edit.c:1136 msgid "State:" msgstr "状态:" #: ../../vcard_edit.c:1142 msgid "ZIP code:" msgstr "邮政编码:" #: ../../vcard_edit.c:1148 msgid "Country:" msgstr "国家:" #: ../../vcard_edit.c:1158 msgid "Home telephone:" msgstr "家庭电话:" #: ../../vcard_edit.c:1164 msgid "Work telephone:" msgstr "工作电话:" #: ../../vcard_edit.c:1170 msgid "Mobile telephone:" msgstr "移动电话:" #: ../../vcard_edit.c:1176 msgid "Fax number:" msgstr "传真号码:" #: ../../vcard_edit.c:1187 msgid "Primary Internet e-mail address" msgstr "主要的互联网电子邮件地址" #: ../../vcard_edit.c:1194 msgid "Internet e-mail aliases" msgstr "互联网电子邮件别名" #: ../../vcard_edit.c:1215 ../../sysmsgs.c:67 msgid "Save changes" msgstr "保存更改" #: ../../vcard_edit.c:1261 msgid "Unable to enter the room to save your message" msgstr "无法输入要保存您的邮件室" #: ../../vcard_edit.c:1265 msgid "Aborting." msgstr "中止" #: ../../vcard_edit.c:1297 ../../vcard_edit.c:1341 ../../auth.c:367 #: ../../auth.c:397 msgid "An error has occurred." msgstr "发生了一个错误" #: ../../vcard_edit.c:1399 msgid "Could Not decode vcard photo\n" msgstr "可以不 decode 电子名片 photo\n" #: ../../preferences.c:880 msgid "Cancelled. No settings were changed." msgstr "取消。没有设置被更改。" #: ../../preferences.c:1092 msgid "Make this my start page" msgstr "这使我的起始页" #: ../../preferences.c:1130 msgid "This isn't allowed to become the start page." msgstr "这不被获准成为开始页。" #: ../../preferences.c:1132 msgid "You no longer have a start page selected." msgstr "您不再需要选定的起始页。" #: ../../preferences.c:1182 msgid "Prefered startpage" msgstr "首选的起始页" #: ../../calendar.c:76 msgid "Meeting invitation" msgstr "会议邀请 " #: ../../calendar.c:79 msgid "Attendee's reply to your invitation" msgstr "您的邀请与会者的答复 " #: ../../calendar.c:82 msgid "Published event" msgstr "已发布的事件 " #: ../../calendar.c:85 msgid "This is an unknown type of calendar item." msgstr "这是未知的类型的日历项。 " #: ../../calendar.c:107 ../../calendar_view.c:306 ../../calendar_view.c:964 #: ../../calendar_view.c:1008 ../../calendar_view.c:1089 msgid "Location:" msgstr "地点:" #: ../../calendar.c:132 ../../calendar_view.c:351 ../../calendar_view.c:970 msgid "Date:" msgstr "日期:" #: ../../calendar.c:139 ../../calendar_view.c:373 ../../calendar_view.c:1013 #: ../../calendar_view.c:1099 msgid "Starting date/time:" msgstr "" #: ../../calendar.c:150 ../../calendar_view.c:376 ../../calendar_view.c:1015 #: ../../calendar_view.c:1101 msgid "Ending date/time:" msgstr "结束日期/时间:" #: ../../calendar.c:168 ../../event.c:90 msgid "Recurrence" msgstr "复发 " #: ../../calendar.c:169 ../../event.c:505 msgid "This is a recurring event" msgstr "这是一个反复出现的事件 " #: ../../calendar.c:178 msgid "Attendee:" msgstr "与会者: " #: ../../calendar.c:218 #, c-format msgid "This is an update of '%s' which is already in your calendar." msgstr "这是 '%s' 已在您的日历中的更新。 " #: ../../calendar.c:222 #, c-format msgid "This event would conflict with '%s' which is already in your calendar." msgstr "与 %s 已经在您的日历中的情况下,此事件将发生冲突。 " #: ../../calendar.c:227 msgid "Update:" msgstr "更新: " #: ../../calendar.c:228 msgid "CONFLICT:" msgstr "冲突: " #: ../../calendar.c:251 msgid "How would you like to respond to this invitation?" msgstr "您想如何回应这一邀请? " #: ../../calendar.c:252 msgid "Accept" msgstr "接受 " #: ../../calendar.c:253 msgid "Tentative" msgstr "试 " #: ../../calendar.c:254 msgid "Decline" msgstr "下降 " #: ../../calendar.c:271 msgid "Click Update to accept this reply and update your calendar." msgstr "单击 更新 接受这个答复,并更新您的日历。" #: ../../calendar.c:272 msgid "Update" msgstr "更新: " #: ../../calendar.c:273 msgid "Ignore" msgstr "忽略 " #: ../../calendar.c:295 msgid "There was an error parsing this calendar item." msgstr "解析此日历项时出错。 " #: ../../calendar.c:328 msgid "" "You have accepted this meeting invitation. It has been entered into your " "calendar." msgstr "您已接受此会议邀请。它已被输入您日历。 " #: ../../calendar.c:332 msgid "" "You have tentatively accepted this meeting invitation. It has been " "'pencilled in' to your calendar." msgstr "您暂时接受了这次会议的邀请。它已被 '接受' 到您的日历。" #: ../../calendar.c:336 msgid "" "You have declined this meeting invitation. It has not been entered " "into your calendar." msgstr "您已拒绝了这次会议的邀请。它没有 已输入日历。 " #: ../../calendar.c:341 msgid "A reply has been sent to the meeting organizer." msgstr "会议组织者已发送答复。 " #. / Translators: RSVP aka Répondez s'il-vous-plaît Is the term #. / that the recipient of an ical-invitation should please #. / answer this request. #: ../../calendar.c:376 msgid "Your calendar has been updated to reflect this RSVP." msgstr "您的日历已被更新,以反映此 RSVP。 " #: ../../calendar.c:378 msgid "" "You have chosen to ignore this RSVP. Your calendar has not been " "updated." msgstr "您已选择忽略此 RSVP。您的日历没有 已更新。 " #: ../../calendar.c:932 msgid "Calendar day view begins at:" msgstr "在开始的一天日历视图: " #: ../../calendar.c:933 msgid "Calendar day view ends at:" msgstr "结束一天的日历视图: " #: ../../calendar.c:934 msgid "Week starts on:" msgstr "周开始时间: " #: ../../paging.c:35 msgid "Send instant message" msgstr "发送即时消息 " #: ../../paging.c:43 msgid "Send an instant message to: " msgstr "发送即时消息: " #: ../../paging.c:57 msgid "Enter message text:" msgstr "输入消息的文本: " #: ../../paging.c:65 ../../static/t/edit_message.html:109 msgid "Send message" msgstr "发送邮件 " #: ../../paging.c:84 msgid "Message was not sent." msgstr "消息未被发送。 " #: ../../paging.c:95 msgid "Message has been sent to " msgstr "邮件已发送到 " #: ../../iconbar.c:328 msgid "Iconbar Setting" msgstr "Iconbar 设置" #. #. * Set to 'unknown' right from the beginning. Unless we learn #. * something else, that's what we'll go with. #. #: ../../availability.c:148 msgid "availability unknown" msgstr "未知的可用性" #: ../../availability.c:169 msgid "free" msgstr "免费" #: ../../availability.c:179 msgid "BUSY" msgstr "忙" #: ../../serv_func.c:193 msgid "" "This server is already serving its maximum number of users and cannot accept " "any additional logins at this time. Please try again later or contact your " "system administrator." msgstr "" "此服务器已服务的最大用户数和不能接受在这个时候任何额外的登录。请稍后再试,或" "联系您系统管理员。 " #: ../../serv_func.c:198 ../../serv_func.c:227 msgid "Received unexpected answer from Citadel server; bailing out." msgstr "从城堡服务器 ; 收到意外的答案纾困。 " #: ../../serv_func.c:236 #, c-format msgid "" "You are connected to a Citadel server running Citadel %d.%02d. \n" "In order to run this version of WebCit you must also have Citadel %d.%02d or " "newer.\n" "\n" "\n" msgstr "" "您连接到运行城堡 %d.%0 城堡服务器2d。 \n" "为了运行此版本的 WebCit 也必须有城堡 %d.%02d 或更新。 \n" "\n" "\n" #: ../../event.c:70 msgid "seconds" msgstr "秒 " #: ../../event.c:71 msgid "minutes" msgstr "分钟 " #: ../../event.c:72 msgid "hours" msgstr "时间 " #: ../../event.c:73 msgid "days" msgstr "天 " #: ../../event.c:74 msgid "weeks" msgstr "周 " #: ../../event.c:75 msgid "months" msgstr "个月 " #: ../../event.c:76 msgid "years" msgstr "年 " #: ../../event.c:77 msgid "never" msgstr "永远不会 " #: ../../event.c:81 msgid "first" msgstr "第一次 " #: ../../event.c:82 msgid "second" msgstr "第二次 " #: ../../event.c:83 msgid "third" msgstr "第三次 " #: ../../event.c:84 msgid "fourth" msgstr "第四 " #: ../../event.c:85 msgid "fifth" msgstr "第五届 " #: ../../event.c:88 msgid "Event" msgstr "事件 " #: ../../event.c:89 ../../event.c:437 ../../event.c:449 msgid "Attendees" msgstr "与会者 " #: ../../event.c:167 msgid "Add or edit an event" msgstr "添加或编辑事件 " #: ../../event.c:206 ../../static/t/iconbar.html:13 #: ../../static/t/iconbar/edit.html:29 msgid "Summary" msgstr "的摘要页 " #: ../../event.c:217 msgid "Location" msgstr "位置 " #: ../../event.c:228 ../../calendar_view.c:760 msgid "Start" msgstr "启动" #: ../../event.c:271 ../../calendar_view.c:957 ../../calendar_view.c:986 msgid "All day event" msgstr "全天事件" #: ../../event.c:277 ../../calendar_view.c:761 msgid "End" msgstr "结束" #: ../../event.c:327 ../../static/t/iconbar.html:34 #: ../../static/t/iconbar/edit.html:49 msgid "Notes" msgstr "备注: " #: ../../event.c:369 msgid "Organizer" msgstr "主办单位 " #: ../../event.c:374 msgid "(you are the organizer)" msgstr "(您的管理器) " #: ../../event.c:392 msgid "Show time as:" msgstr "将时间显示为: " #: ../../event.c:415 msgid "Free" msgstr "免费 " #: ../../event.c:423 msgid "Busy" msgstr "忙 " #: ../../event.c:440 msgid "(One per line)" msgstr "(每行一个) " #: ../../event.c:450 ../../static/t/edit_message.html:143 #: ../../static/t/iconbar.html:29 ../../static/t/iconbar/edit.html:42 msgid "Contacts" msgstr "联系人 " #: ../../event.c:513 msgid "Recurrence rule" msgstr "重复规则 " #: ../../event.c:517 msgid "Repeats every" msgstr "重复每个 " #. begin 'weekday_selector' div #: ../../event.c:535 msgid "on these weekdays:" msgstr "这些平日: " #: ../../event.c:593 #, c-format msgid "on day %s%d%s of the month" msgstr "天的 %s%d%s 的月 " #: ../../event.c:602 ../../event.c:664 msgid "on the " msgstr "关于 " #: ../../event.c:626 msgid "of the month" msgstr "每月 " #: ../../event.c:655 msgid "every " msgstr "每个 " #: ../../event.c:656 msgid "year on this date" msgstr "在此日期年 " #: ../../event.c:688 ../../static/t/msg_listselector_bottom.html:7 #: ../../static/t/msg_listselector_top.html:7 msgid "of" msgstr "的 " #: ../../event.c:712 msgid "Recurrence range" msgstr "重复周期范围 " #: ../../event.c:720 msgid "No ending date" msgstr "没有结束日期 " #: ../../event.c:727 msgid "Repeat this event" msgstr "重复此事件 " #: ../../event.c:730 msgid "times" msgstr "时间 " #: ../../event.c:738 msgid "Repeat this event until " msgstr "重复直到此事件 " #: ../../event.c:766 msgid "Check attendee availability" msgstr "检查与会者的可用性 " #: ../../event.c:858 ../../calendar_view.c:272 ../../calendar_view.c:468 #: ../../calendar_view.c:937 msgid "Untitled Event" msgstr "未命名的事件" #: ../../sysmsgs.c:52 #, c-format msgid "Edit %s" msgstr "编辑 %s" #: ../../sysmsgs.c:55 #, c-format msgid "" "Enter %s below. Text is formatted to the reader's browser. A newline is " "forced by preceding the next line by a blank." msgstr "" "请输入下面的 %s。读者的浏览器设置文本格式。前面的一片空白的下一行,会强制换" "行。 " #: ../../sysmsgs.c:89 #, c-format msgid "Cancelled. %s was not saved." msgstr "取消。%s 是不会保存。 " #: ../../sysmsgs.c:109 msgid " has been saved." msgstr "已被保存。 " #: ../../sysmsgs.c:116 ../../sysmsgs.c:117 msgid "Room info" msgstr "房间信息 " #: ../../sysmsgs.c:122 ../../sysmsgs.c:124 msgid "Your bio" msgstr "您的生物 " #: ../../calendar_view.c:297 ../../calendar_view.c:958 #: ../../calendar_view.c:1002 ../../calendar_view.c:1083 #: ../../static/t/sieve/display_one.html:20 msgid "From" msgstr "从" #: ../../calendar_view.c:355 ../../calendar_view.c:974 msgid "Starting date:" msgstr "开始日期:" #: ../../calendar_view.c:361 ../../calendar_view.c:976 msgid "Ending date:" msgstr "结束日期:" #: ../../calendar_view.c:369 ../../calendar_view.c:1095 msgid "Date/time:" msgstr "时间:" #: ../../calendar_view.c:386 ../../calendar_view.c:980 #: ../../calendar_view.c:1018 ../../calendar_view.c:1105 #: ../../static/t/room/edit/tab_share.html:32 msgid "Notes:" msgstr "备注:" #: ../../calendar_view.c:585 ../../calendar_view.c:721 msgid "previous" msgstr "上一页" #: ../../calendar_view.c:597 ../../calendar_view.c:733 #: ../../calendar_view.c:1308 msgid "next" msgstr "下一步" #: ../../calendar_view.c:756 msgid "Week" msgstr "一周" #: ../../calendar_view.c:758 msgid "Hours" msgstr "时间" #: ../../calendar_view.c:759 ../../static/t/sieve/display_one.html:22 #: ../../static/t/msg_listview.html:9 msgid "Subject" msgstr "主题" #: ../../calendar_view.c:1001 ../../calendar_view.c:1024 msgid "Ongoing event" msgstr "正在进行的活动" #: ../../messages.c:70 msgid "ERROR:" msgstr "错误: " #: ../../messages.c:88 msgid "Empty message" msgstr "空消息 " #: ../../messages.c:1010 msgid "Cancelled. Message was not posted." msgstr "取消。不发送消息。 " #: ../../messages.c:1013 msgid "Automatically cancelled because you have already saved this message." msgstr "因为您已经保存此邮件时自动取消。 " #: ../../messages.c:1037 msgid "Saved to Drafts failed: " msgstr "保存到草稿失败: " #: ../../messages.c:1102 msgid "Refusing to post empty message.\n" msgstr "拒绝后空的消息。 \n" #: ../../messages.c:1128 msgid "Message has been saved to Drafts.\n" msgstr "消息已保存到草稿。 \n" #: ../../messages.c:1137 msgid "Message has been sent.\n" msgstr "邮件已发送。 \n" #: ../../messages.c:1140 msgid "Message has been posted.\n" msgstr "邮件已发送。 \n" #: ../../messages.c:1679 msgid "The message was not moved." msgstr "该消息是不会移动。 " #: ../../messages.c:1719 #, c-format msgid "An error occurred while retrieving this part: %s/%s\n" msgstr "检索此部分时发生错误: %s/%s\n" #: ../../messages.c:1796 #, c-format msgid "An error occurred while retrieving this part: %s\n" msgstr "检索此部分时发生错误:%s\n" #: ../../messages.c:1956 msgid "Attach signature to email messages?" msgstr "将签名附加到电子邮件吗? " #: ../../messages.c:1959 msgid "Use this signature:" msgstr "使用此签名: " #: ../../messages.c:1961 msgid "Default character set for email headers:" msgstr "默认字符集的电子邮件标题: " #: ../../messages.c:1964 msgid "Preferred email address" msgstr "首选的电子邮件地址 " #: ../../messages.c:1966 msgid "Preferred display name for email messages" msgstr "电子邮件首选的显示名称 " #: ../../messages.c:1970 msgid "Preferred display name for bulletin board posts" msgstr "公告板上岗的首选的显示名称 " #: ../../messages.c:1973 msgid "Mailbox view mode" msgstr "邮箱视图模式 " #: ../../inetconf.c:110 ../../inetconf.c:119 ../../inetconf.c:133 #: ../../inetconf.c:159 ../../netconf.c:156 ../../netconf.c:183 #: ../../netconf.c:191 ../../netconf.c:239 ../../netconf.c:247 msgid "Invalid Parameter" msgstr "无效的参数" #: ../../inetconf.c:126 msgid " has been deleted." msgstr "已被删除。 " #. added status message #: ../../inetconf.c:144 #, fuzzy msgid " added." msgstr "添加。 " #: ../../who.c:154 msgid "Edit your session display" msgstr "编辑您的会话显示" #: ../../who.c:158 msgid "" "This screen allows you to change the way your session appears in the 'Who is " "online' listing. To turn off any 'fake' name you've previously set, simply " "click the appropriate 'change' button without typing anything in the " "corresponding box. " msgstr "" "此屏幕允许您更改您的会话在 '谁在线列表中的显示的方式。若要关闭以前设置的任何 " "'假' 的名称,只需单击适当的更改按钮无需输入任何内容在相应的框中。" #: ../../who.c:171 msgid "Room name:" msgstr "房间名称:" #: ../../who.c:176 msgid "Change room name" msgstr "更改房间名称:" #: ../../who.c:180 msgid "Host name:" msgstr "主机名:" #: ../../who.c:185 msgid "Change host name" msgstr "更改主机名称" #: ../../who.c:190 ../../static/t/aide/edituser/detailview.html:20 #: ../../static/t/openid_manual_create.html:9 #: ../../static/t/get_logged_in.html:57 ../../static/t/get_logged_in.html:72 msgid "User name:" msgstr "用户名:" #: ../../who.c:195 msgid "Change user name" msgstr "更改用户名" #: ../../siteconfig.c:46 ../../siteconfig.c:64 ../../roomlist.c:44 #: ../../roomlist.c:394 ../../static/t/room/edit/tab_expire.html:72 #: ../../static/t/room/edit/tab_config.html:149 #: ../../static/t/room/edit/tab_access.html:42 msgid "Higher access is required to access this function." msgstr "访问此功能需要较高的访问。" #: ../../siteconfig.c:256 msgid "WARNING: Failed to parse Server Config; do you run a to new citserver?" msgstr "警告: 无法解析服务器配置 ;你跑到新的 citserver 做吗? " #: ../../siteconfig.c:319 msgid "Your system configuration has been updated." msgstr "已更新您的系统配置。" #: ../../wiki.c:69 ../../wiki.c:162 ../../wiki.c:282 #, c-format msgid "There is no room called '%s'." msgstr "没有名为 '%s' 的空间。 " #: ../../wiki.c:76 #, c-format msgid "'%s' is not a Wiki room." msgstr "%s' 不是一个 Wiki 的房间。 " #: ../../wiki.c:110 #, c-format msgid "There is no page called '%s' here." msgstr "没有在这里称为 '%s' 的页面。 " #: ../../wiki.c:112 msgid "" "Select the 'Edit this page' link in the room banner if you would like to " "create this page." msgstr "房间标题栏中选择编辑此页链接,如果你想创建该页面。 " #: ../../wiki.c:181 ../../static/t/msg_listview.html:11 msgid "Date" msgstr "提交的日期/时间 " #: ../../wiki.c:182 msgid "Author" msgstr "作者 " #: ../../wiki.c:209 ../../wiki.c:218 msgid "(show)" msgstr "(显示) " #: ../../wiki.c:211 ../../static/t/navbar.html:145 msgid "Current version" msgstr "当前版本 " #: ../../wiki.c:223 msgid "(revert)" msgstr "(恢复) " #: ../../wiki.c:300 msgid "Page title" msgstr "页标题 " #: ../../webcit.c:316 msgid "Authorization Required" msgstr "所需的授权 " #: ../../webcit.c:324 #, c-format msgid "" "The resource you requested requires a valid username and password. You could " "not be logged in: %s\n" msgstr "" "您请求的资源要求有效的用户名和密码。你能不能不会被记录: 是:没有名为 '%s' 的" "空间。 %s\n" #: ../../webcit.c:647 ../../auth.c:526 msgid "" "This program was unable to connect or stay connected to the Citadel server. " "Please report this problem to your system administrator." msgstr "" "此程序无法连接或保持与城堡服务器的连接。请报告此问题,您的系统管理员联系。 " #: ../../webcit.c:654 ../../auth.c:532 msgid "Read More..." msgstr "阅读更多... " #: ../../smtpqueue.c:134 ../../static/t/aide/ignetconf/section.html:5 #: ../../static/t/view_mailq/message.html:2 msgid "(Delete)" msgstr "(删除) " #: ../../smtpqueue.c:334 msgid "First Attempt pending" msgstr "" #: ../../roomlist.c:99 msgid "My Folders" msgstr "我的文件夹" #: ../../downloads.c:289 #, c-format msgid "An error occurred while retrieving this file: %s\n" msgstr "检索此文件时发生错误: 是: %s\n" #: ../../roomtokens.c:572 msgid "file" msgstr "文件 " #: ../../roomtokens.c:574 msgid "files" msgstr "文件 " #: ../../summary.c:128 msgid "(None)" msgstr "(无) " #: ../../summary.c:184 msgid "(Nothing)" msgstr "(无) " #: ../../msg_renderers.c:579 ../../static/t/who/bio.html:15 msgid "edit" msgstr "编辑 " #: ../../msg_renderers.c:1119 msgid "I don't know how to display " msgstr "我不知道如何显示 " #: ../../msg_renderers.c:1353 msgid "(no subject)" msgstr "(无主题) " #: ../../addressbook_popup.c:186 msgid "Add" msgstr "添加 " #. an erased user #: ../../auth.c:30 ../../static/t/aide/edituser/detailview.html:43 #: ../../static/t/aide/siteconfig/tab_access.html:40 #: ../../static/t/aide/siteconfig/tab_access.html:51 msgid "Deleted" msgstr "删除 " #. a new user #: ../../auth.c:33 ../../static/t/aide/edituser/detailview.html:44 #: ../../static/t/aide/siteconfig/tab_access.html:41 #: ../../static/t/aide/siteconfig/tab_access.html:52 #: ../../static/t/get_logged_in.html:79 msgid "New User" msgstr "新用户 " #. a trouble maker #: ../../auth.c:36 ../../static/t/aide/edituser/detailview.html:45 #: ../../static/t/aide/siteconfig/tab_access.html:42 #: ../../static/t/aide/siteconfig/tab_access.html:53 msgid "Problem User" msgstr "问题的用户 " #. user with normal privileges #: ../../auth.c:39 ../../static/t/aide/edituser/detailview.html:46 #: ../../static/t/aide/siteconfig/tab_access.html:43 #: ../../static/t/aide/siteconfig/tab_access.html:54 msgid "Local User" msgstr "本地用户 " #. a user that may access network resources #: ../../auth.c:42 ../../static/t/aide/edituser/detailview.html:47 #: ../../static/t/aide/siteconfig/tab_access.html:44 #: ../../static/t/aide/siteconfig/tab_access.html:55 msgid "Network User" msgstr "网络用户 " #. a moderator #: ../../auth.c:45 ../../static/t/aide/edituser/detailview.html:48 #: ../../static/t/aide/siteconfig/tab_access.html:45 #: ../../static/t/aide/siteconfig/tab_access.html:56 msgid "Preferred User" msgstr "首选的用户 " #. chief #: ../../auth.c:48 ../../static/t/aide/edituser/detailview.html:49 #: ../../static/t/aide/siteconfig/tab_access.html:46 #: ../../static/t/aide/siteconfig/tab_access.html:57 msgid "Admin" msgstr "助手 " #: ../../auth.c:513 ../../static/t/iconbar.html:80 #: ../../static/t/confirmlogoff.html:3 #: ../../static/t/menu/basic_commands.html:19 msgid "Log off" msgstr "注销 " #: ../../auth.c:537 msgid "Log in again" msgstr "再次登录 " #: ../../auth.c:585 ../../static/t/aide/usermanagement.html:3 msgid "Validate new users" msgstr "验证新用户 " #: ../../auth.c:605 msgid "No users require validation at this time." msgstr "任何用户都不需要验证,这一次。 " #: ../../auth.c:655 msgid "very weak" msgstr "很弱 " #: ../../auth.c:658 msgid "weak" msgstr "弱 " #: ../../auth.c:661 msgid "ok" msgstr "还行 " #: ../../auth.c:665 msgid "strong" msgstr "强 " #: ../../auth.c:683 #, c-format msgid "Current access level: %d (%s)\n" msgstr "当前的访问级别: %d (%s)\n" #: ../../auth.c:691 msgid "Select access level for this user:" msgstr "选择此用户的访问级别: " #: ../../auth.c:776 ../../static/t/menu/your_info.html:4 msgid "Change your password" msgstr "更改您的密码 " #: ../../auth.c:800 msgid "Enter new password:" msgstr "输入新的密码: " #: ../../auth.c:804 msgid "Enter it again to confirm:" msgstr "输入并再次确认: " #: ../../auth.c:810 msgid "Change password" msgstr "更改密码 " #: ../../auth.c:830 msgid "Cancelled. Password was not changed." msgstr "取消。未更改密码。 " #: ../../auth.c:839 msgid "They don't match. Password was not changed." msgstr "他们不匹配。未更改密码。 " #: ../../auth.c:845 msgid "Blank passwords are not allowed." msgstr "不允许空密码。 " #: ../../openid.c:34 msgid "Manage Account/OpenID Associations" msgstr "管理帐户/OpenID 协会 " #: ../../openid.c:52 msgid "Do you really want to delete this OpenID?" msgstr "您确实要删除此 OpenID 吗? " #: ../../openid.c:53 msgid "(delete)" msgstr "(删除) " #: ../../openid.c:61 msgid "Add an OpenID: " msgstr "添加 OpenID: " #: ../../openid.c:64 msgid "Attach" msgstr "附加 " #: ../../openid.c:68 #, c-format msgid "%s does not permit authentication via OpenID." msgstr "%s 不允许通过 OpenID 的身份验证。 " #: ../../html2html.c:136 #, c-format msgid "realloc() error! couldn't get %d bytes: %s" msgstr "" #: ../../static/t/viewomatic.html:4 msgid "View as:" msgstr "查看为:" #: ../../static/t/sieve/list.html:32 ../../static/t/sieve/none.html:4 #: ../../static/t/menu/your_info.html:7 msgid "View/edit server-side mail filters" msgstr "查看/编辑服务器端邮件筛选器" #: ../../static/t/sieve/list.html:41 msgid "When new mail arrives: " msgstr "新邮件到达时:" #: ../../static/t/sieve/list.html:43 msgid "Leave it in my inbox without filtering" msgstr "不需要筛选将它留在我的收件箱" #: ../../static/t/sieve/list.html:44 msgid "Filter it according to rules selected below" msgstr "根据下面所选的规则来对其进行筛选" #: ../../static/t/sieve/list.html:45 msgid "Filter it through a manually edited script (advanced users only)" msgstr "通过手动编辑脚本 (仅适用于高级用户) 对其进行筛选" #: ../../static/t/sieve/list.html:52 msgid "Your incoming mail will not be filtered through any scripts." msgstr "您收到的邮件不会通过任何脚本过滤" #: ../../static/t/sieve/list.html:64 msgid "Add rule" msgstr "添加规则" #: ../../static/t/sieve/list.html:71 msgid "The currently active script is: " msgstr "当前处于活动状态的脚本是:" #: ../../static/t/sieve/list.html:76 ../../static/t/sieve/add.html:3 msgid "Add or delete scripts" msgstr "添加或删除脚本" #: ../../static/t/sieve/display_one.html:16 msgid "If" msgstr "如果" #: ../../static/t/sieve/display_one.html:21 msgid "To or Cc" msgstr "或抄送" #: ../../static/t/sieve/display_one.html:23 msgid "Reply-to" msgstr "回复" #: ../../static/t/sieve/display_one.html:24 #: ../../static/t/msg_listview.html:10 #: ../../static/t/view_mailq/header.html:27 msgid "Sender" msgstr "发件人 " #: ../../static/t/sieve/display_one.html:25 msgid "Resent-From" msgstr "近期从" #: ../../static/t/sieve/display_one.html:26 msgid "Resent-To" msgstr "近年来 " #: ../../static/t/sieve/display_one.html:27 msgid "Envelope From" msgstr "从信封" #: ../../static/t/sieve/display_one.html:28 msgid "Envelope To" msgstr "信封" #: ../../static/t/sieve/display_one.html:29 msgid "X-Mailer" msgstr "X-发件人" #: ../../static/t/sieve/display_one.html:30 msgid "X-Spam-Flag" msgstr "X-垃圾邮件标志" #: ../../static/t/sieve/display_one.html:31 msgid "X-Spam-Status" msgstr "X-垃圾邮件状态" #: ../../static/t/sieve/display_one.html:32 msgid "List-ID" msgstr "列表 ID" #: ../../static/t/sieve/display_one.html:33 msgid "Message size" msgstr "邮件大小" #: ../../static/t/sieve/display_one.html:34 #: ../../static/t/select_messageindex_all.html:1 msgid "All" msgstr "所有" #: ../../static/t/sieve/display_one.html:41 msgid "contains" msgstr "包含" #: ../../static/t/sieve/display_one.html:42 msgid "does not contain" msgstr "不包含" #: ../../static/t/sieve/display_one.html:43 msgid "is" msgstr "是" #: ../../static/t/sieve/display_one.html:44 msgid "is not" msgstr "不是" #: ../../static/t/sieve/display_one.html:45 msgid "matches" msgstr "匹配" #: ../../static/t/sieve/display_one.html:46 msgid "does not match" msgstr "不匹配" #: ../../static/t/sieve/display_one.html:52 msgid "(All messages)" msgstr "(所有消息)" #: ../../static/t/sieve/display_one.html:56 msgid "is larger than" msgstr "大于" #: ../../static/t/sieve/display_one.html:57 msgid "is smaller than" msgstr "小于" #: ../../static/t/sieve/display_one.html:59 #, fuzzy msgid "bytes" msgstr "年 " #: ../../static/t/sieve/display_one.html:65 msgid "Keep" msgstr "保持" #: ../../static/t/sieve/display_one.html:66 msgid "Discard silently" msgstr "默默地放弃" #: ../../static/t/sieve/display_one.html:67 msgid "Reject" msgstr "拒绝" #: ../../static/t/sieve/display_one.html:68 msgid "Move message to" msgstr "移动消息" #: ../../static/t/sieve/display_one.html:69 msgid "Forward to" msgstr "转发到" #: ../../static/t/sieve/display_one.html:70 msgid "Vacation" msgstr "度假" #: ../../static/t/sieve/display_one.html:82 msgid "Message:" msgstr "消息:" #: ../../static/t/sieve/display_one.html:90 msgid "and then" msgstr "然后" #: ../../static/t/sieve/display_one.html:93 msgid "continue processing" msgstr "继续处理" #: ../../static/t/sieve/display_one.html:94 msgid "stop" msgstr "停止" #: ../../static/t/sieve/none.html:9 msgid "" "This installation of Citadel was built without support for server-side mail " "filtering.
    Please contact your system administrator if you require this " "feature.
    " msgstr "此安装的城堡建成不支持服务器端邮件过滤
    请联系您的系统管理员联系。" #: ../../static/t/sieve/add.html:9 msgid "Add a new script" msgstr "添加一个新的脚本" #: ../../static/t/sieve/add.html:10 msgid "" "To create a new script, enter the desired script name in the box below and " "click 'Create'." msgstr "若要创建一个新的脚本,在下面的框中输入所需的脚本名称并单击创建" #: ../../static/t/sieve/add.html:14 msgid "Script name: " msgstr "脚本的名称:" #: ../../static/t/sieve/add.html:18 msgid "Edit scripts" msgstr "编辑脚本" #: ../../static/t/sieve/add.html:20 msgid "Return to the script editing screen" msgstr "返回到该脚本编辑屏幕" #: ../../static/t/sieve/add.html:23 msgid "Delete scripts" msgstr "删除脚本" #: ../../static/t/sieve/add.html:24 msgid "" "To delete an existing script, select the script name from the list and click " "'Delete'." msgstr "若要删除现有的脚本,从列表中选择脚本名称并单击删除" #: ../../static/t/msg/confirm_move.html:4 msgid "Confirm move of message" msgstr "确认消息的移动 " #: ../../static/t/msg/confirm_move.html:12 msgid "Move this message to:" msgstr "移动到此消息: " #: ../../static/t/login.html:5 msgid "powered by" msgstr "提供者" #: ../../static/t/login.html:15 ../../static/t/iconbar.html:88 #: ../../static/t/get_logged_in.html:64 ../../static/t/get_logged_in.html:88 #: ../../static/t/get_logged_in.html:93 ../../static/t/get_logged_in.html:98 #: ../../static/t/get_logged_in.html:107 msgid "Log in" msgstr "登录 " #: ../../static/t/trailing.html:14 msgid "" "WARNING: You have JavaScript disabled in your web browser. Many functions " "of this system will not work properly." msgstr "" "警告: 您必须在您的 web 浏览器中禁用 JavaScript。许多函数 这一系统将无法正常" "工作。" #: ../../static/t/view_submessage.html:4 #: ../../static/t/view_message/replyquote.html:3 #: ../../static/t/view_message/replyquote.html:7 #: ../../static/t/view_message/print.html:8 ../../static/t/view_message.html:7 msgid "from " msgstr "从 " #: ../../static/t/searchomatic.html:4 msgid "Search: " msgstr "搜索: " #: ../../static/t/listsub/display.html:16 msgid "You are subscribing " msgstr "" #: ../../static/t/listsub/display.html:17 #, fuzzy msgid " to the " msgstr "关于 " #: ../../static/t/listsub/display.html:18 #, fuzzy msgid " mailing list." msgstr "邮件列表服务" #: ../../static/t/listsub/display.html:19 msgid "" "The listserver has sent you an e-mail with one additional Web link for you " "to click on to confirm your subscription." msgstr "" #: ../../static/t/listsub/display.html:20 msgid "" "This extra step is for your protection, as it prevents others from being " "able to subscribe you to lists without your consent." msgstr "" #: ../../static/t/listsub/display.html:22 msgid "" "Please click on the link which is being e-mailed to you and your " "subscription will be confirmed." msgstr "" #: ../../static/t/listsub/display.html:27 #: ../../static/t/listsub/display.html:47 #, fuzzy msgid "ERROR" msgstr "错误: " #: ../../static/t/listsub/display.html:35 msgid "You are unsubscribing" msgstr "" #: ../../static/t/listsub/display.html:37 #, fuzzy msgid "from the" msgstr "从 " #: ../../static/t/listsub/display.html:39 #, fuzzy msgid "mailing list." msgstr "邮件列表服务" #: ../../static/t/listsub/display.html:40 msgid "" "The listserver has sent you an e-mail with one additional Web link for you " "to click on to confirm your unsubscription." msgstr "" #: ../../static/t/listsub/display.html:41 msgid "" "This extra step is for your protection, as it prevents others from being " "able to unsubscribe you from lists without your consent." msgstr "" #: ../../static/t/listsub/display.html:43 msgid "" "Please click on the link which is being e-mailed to you and your " "unsubscription will be confirmed." msgstr "" #: ../../static/t/listsub/display.html:44 #, fuzzy msgid "Back..." msgstr "回去。。。 " #: ../../static/t/listsub/display.html:54 #, fuzzy msgid "Confirmation successful!" msgstr "发送确认请求 " #: ../../static/t/listsub/display.html:56 #, fuzzy msgid "Confirmation failed." msgstr "配置" #: ../../static/t/listsub/display.html:57 msgid "This could mean one of two things:" msgstr "" #: ../../static/t/listsub/display.html:59 msgid "" "You waited too long to confirm your subscribe/unsubscribe request (the " "confirmation link is only valid for three days)" msgstr "" #: ../../static/t/listsub/display.html:60 msgid "" "You have already successfully confirmed your subscribe/unsubscribe " "request and are attempting to do it again." msgstr "" #: ../../static/t/listsub/display.html:62 msgid "The error returned by the server was: " msgstr "" #: ../../static/t/listsub/display.html:70 #, fuzzy msgid "Name of list:" msgstr "任务的名称" #: ../../static/t/listsub/display.html:75 #, fuzzy msgid "Your e-mail address:" msgstr "首选的电子邮件地址 " #: ../../static/t/listsub/display.html:79 msgid "(If subscribing) preferred format: " msgstr "" #: ../../static/t/listsub/display.html:80 #, fuzzy msgid "One message at a time" msgstr "输入消息的文本: " #: ../../static/t/listsub/display.html:81 #, fuzzy msgid "Digest format" msgstr "时间格式 " #: ../../static/t/listsub/display.html:89 msgid "" "When you attempt to subscribe or unsubscribe to a mailing list, you will " "receive an e-mail containing one additional web link to click on for final " "confirmation." msgstr "" #: ../../static/t/listsub/display.html:90 msgid "" "This extra step is for your protection, as it prevents others from being " "able to subscribe or unsubscribe you to lists." msgstr "" #: ../../static/t/floors_edit_one.html:11 msgid "(delete floor)" msgstr "(删除楼) " #: ../../static/t/floors_edit_one.html:13 msgid "(edit graphic)" msgstr "(编辑图形) " #: ../../static/t/floors.html:4 msgid "Add/change/delete floors" msgstr "添加、 更改或删除层 " #: ../../static/t/floors.html:10 msgid "Floor number" msgstr "层数 " #: ../../static/t/floors.html:11 msgid "Floor name" msgstr "楼面名称 " #: ../../static/t/floors.html:12 msgid "Number of rooms" msgstr "房间数 " #: ../../static/t/floors.html:13 msgid "Floor CSS" msgstr "地板 CSS " #: ../../static/t/files.html:4 msgid "Files available for download in" msgstr "可供下载的文件 " #: ../../static/t/files.html:9 msgid "Upload a file:" msgstr "上传的文件: " #: ../../static/t/files.html:30 msgid "Filename" msgstr "文件名 " #: ../../static/t/files.html:31 msgid "Size" msgstr "大小 " #: ../../static/t/files.html:32 msgid "Content" msgstr "内容 " #: ../../static/t/files.html:33 msgid "Description" msgstr "说明 " #: ../../static/t/edit_message.html:9 ../../static/t/iconbar.html:50 #: ../../static/t/iconbar.html:59 msgid "Loading" msgstr "加载 " #: ../../static/t/edit_message.html:23 msgid "from" msgstr "从 " #: ../../static/t/edit_message.html:29 ../../static/t/edit_message.html:38 msgid "Anonymous" msgstr "匿名 " #: ../../static/t/edit_message.html:47 msgid "in" msgstr "在中 " #: ../../static/t/edit_message.html:51 msgid "To:" msgstr "自: " #: ../../static/t/edit_message.html:57 #: ../../static/t/view_message/print.html:15 #: ../../static/t/view_message.html:15 msgid "CC:" msgstr "抄送: " #: ../../static/t/edit_message.html:63 msgid "BCC:" msgstr "密件抄送: " #: ../../static/t/edit_message.html:71 msgid "Subject (optional):" msgstr "(可选) 的主题: " #: ../../static/t/edit_message.html:71 #: ../../static/t/view_message/replyquote.html:8 #: ../../static/t/view_message/print.html:16 #: ../../static/t/view_message.html:16 msgid "Subject:" msgstr "主题: " #: ../../static/t/edit_message.html:86 msgid "--- forwarded message ---" msgstr "— — 转发的消息 — — " #: ../../static/t/edit_message.html:110 msgid "Post message" msgstr "邮政消息 " #: ../../static/t/edit_message.html:118 msgid "Save to Drafts" msgstr "保存到草稿 " #: ../../static/t/edit_message.html:126 #: ../../static/t/edit_message/attachments_pane.html:5 msgid "Attachments:" msgstr "附件: " #: ../../static/t/aide/display_serverrestart_page.html:4 msgid "Message to your Users:" msgstr "给您的用户的消息:" #: ../../static/t/aide/display_generic_result.html:2 msgid "Server command results" msgstr "服务器命令的结果 " #: ../../static/t/aide/display_generic_result.html:18 msgid "Enter another command" msgstr "请输入另一个命令 " #: ../../static/t/aide/display_generic_result.html:19 msgid "Return to menu" msgstr "返回到菜单 " #: ../../static/t/aide/display_sitewide_config.html:3 msgid "Site configuration" msgstr "怀胎配置 " #: ../../static/t/aide/display_sitewide_config.html:6 #: ../../static/t/aide/edituser/select.html:9 msgid "You need to be aide to view this." msgstr "您需要查看这的助手。 " #: ../../static/t/aide/display_sitewide_config.html:11 msgid "General" msgstr "一般 " #: ../../static/t/aide/display_sitewide_config.html:12 msgid "Access" msgstr "访问" #: ../../static/t/aide/display_sitewide_config.html:13 msgid "Network" msgstr "网络" #: ../../static/t/aide/display_sitewide_config.html:14 msgid "Tuning" msgstr "调整" #: ../../static/t/aide/display_sitewide_config.html:15 msgid "Directory" msgstr "目录" #: ../../static/t/aide/display_sitewide_config.html:16 msgid "Auto-purger" msgstr "自动普格尔" #: ../../static/t/aide/display_sitewide_config.html:17 msgid "Indexing/Journaling" msgstr "索引/日记" #: ../../static/t/aide/display_sitewide_config.html:18 #: ../../static/t/aide/siteconfig/tab_pushmail.html:1 msgid "Push Email" msgstr "推进电子邮件 " #: ../../static/t/aide/display_sitewide_config.html:19 msgid "Pop3" msgstr "Pop3" #: ../../static/t/aide/usermanagement.html:2 msgid "Add, change, delete user accounts" msgstr "添加、 更改、 删除用户帐户" #: ../../static/t/aide/display_inetconf.html:5 #: ../../static/t/aide/display_menu.html:5 msgid "System Administration Menu" msgstr "系统管理菜单" #: ../../static/t/aide/display_inetconf.html:6 #: ../../static/t/aide/display_menu.html:6 msgid "Room Admin Menu" msgstr "房间的助手菜单" #: ../../static/t/aide/display_inetconf.html:13 msgid "Local host aliases" msgstr "本地主机别名" #: ../../static/t/aide/display_inetconf.html:14 msgid "Directory domains" msgstr "目录域" #: ../../static/t/aide/display_inetconf.html:15 msgid "Smart hosts" msgstr "智能主机" #: ../../static/t/aide/display_inetconf.html:16 msgid "Fallback smart hosts" msgstr "备用的智能主机" #: ../../static/t/aide/display_inetconf.html:17 msgid "Notification hosts" msgstr "通知主机" #: ../../static/t/aide/display_inetconf.html:22 msgid "RBL hosts" msgstr "RBL 主机" #: ../../static/t/aide/display_inetconf.html:23 msgid "SpamAssassin hosts" msgstr "SpamAssassin 主机" #: ../../static/t/aide/display_inetconf.html:24 msgid "ClamAV clamd hosts" msgstr "ClamAV clamd 主机" #: ../../static/t/aide/display_inetconf.html:25 msgid "Masqueradable domains" msgstr "Masqueradable 域" #: ../../static/t/aide/edituser/select.html:5 msgid "Edit or delete users" msgstr "编辑或删除用户" #: ../../static/t/aide/edituser/select.html:17 msgid "Add users" msgstr "添加用户" #: ../../static/t/aide/edituser/select.html:20 msgid "Edit or Delete users" msgstr "编辑或删除用户" #: ../../static/t/aide/edituser/box_select.html:1 msgid "" "To edit an existing user account, select the user name from the list and " "click 'Edit'." msgstr "若要编辑现有的用户帐户,请从列表中选择用户名和 单击编辑。" #: ../../static/t/aide/edituser/detailview.html:4 msgid "Edit user account: " msgstr "编辑用户帐户:" #: ../../static/t/aide/edituser/detailview.html:24 #: ../../static/t/room/edit/tab_feed.html:14 msgid "Password" msgstr "密码" #: ../../static/t/aide/edituser/detailview.html:28 msgid "Permission to send Internet mail" msgstr "发送 Internet 邮件的权限" #: ../../static/t/aide/edituser/detailview.html:32 msgid "Number of logins" msgstr "登录名的数目" #: ../../static/t/aide/edituser/detailview.html:36 msgid "Messages submitted" msgstr "提交邮件" #: ../../static/t/aide/edituser/detailview.html:40 msgid "Access level" msgstr "访问级别" #: ../../static/t/aide/edituser/detailview.html:54 msgid "User ID number" msgstr "用户 ID 号" #: ../../static/t/aide/edituser/detailview.html:58 msgid "Date and time of last login" msgstr "上次登入时间的日期和时间" #: ../../static/t/aide/edituser/detailview.html:68 msgid "Auto-purge after this many days" msgstr "这几天后自动清除" #: ../../static/t/aide/edituser/add.html:1 msgid "" "To create a new user account, enter the desired user name in the box below " "and click 'Create'." msgstr "" "若要创建一个新的用户帐户,在下面的框中输入所需的用户名称 然后单击创建。" #: ../../static/t/aide/edituser/add.html:5 msgid "New user: " msgstr "新用户:" #: ../../static/t/aide/display_generic_cmd.html:4 msgid "Enter a server command" msgstr "输入一个服务器的命令 " #: ../../static/t/aide/display_generic_cmd.html:12 msgid "" "This screen allows you to enter Citadel server commands which are not " "supported by WebCit. If you do not know what that means, then this screen " "will not be of much use to you." msgstr "" "此屏幕允许您输入城堡服务器命令而不是WebCit 的支持。如果你不知道这意味着什么," "然后此屏幕不会给你多大用处。 " #: ../../static/t/aide/display_generic_cmd.html:15 msgid "Enter command:" msgstr "请输入命令: " #: ../../static/t/aide/display_generic_cmd.html:17 msgid "Command input (if requesting SEND_LISTING transfer mode):" msgstr "输入 (如果要求 SEND_LISTING 传输模式) 的命令: " #: ../../static/t/aide/display_generic_cmd.html:20 msgid "Detected host header is " msgstr "检测到的主机标头 " #: ../../static/t/aide/display_ignetconf.html:4 msgid "Network configuration" msgstr "网络配置 " #: ../../static/t/aide/display_ignetconf.html:10 #: ../../static/t/aide/ignetconf/edit_node.html:5 #: ../../static/t/aide/ignetconf/add.html:5 msgid "Add a new node" msgstr "添加一个新节点 " #: ../../static/t/aide/display_ignetconf.html:14 msgid "Currently configured nodes" msgstr "当前配置的节点 " #: ../../static/t/aide/display_serverrestart.html:26 msgid "Restart Citadel" msgstr "重新启动城堡 " #: ../../static/t/aide/floorconfig.html:2 msgid "Add, change, or delete floors" msgstr "添加、 更改或删除层 " #: ../../static/t/aide/serverrestart/box.html:3 msgid "Please wait while the Citadel server is restarted... " msgstr "请城堡服务器重新启动,稍候... " #: ../../static/t/aide/serverrestart/box_page_do.html:3 msgid "" "Please wait while your users are being paged, the citadel server will be " "restarted after that... " msgstr "请等待您的用户都被分页,城堡服务器会重新启动后... " #: ../../static/t/aide/inet/masqdomains.html:2 msgid "(Domains as which users are allowed to masquerade)" msgstr "(允许哪些用户作为域伪装) " #: ../../static/t/aide/inet/rbldns.html:2 msgid "(hosts running a Realtime Blackhole List)" msgstr "(主机运行实时黑名单)" #: ../../static/t/aide/inet/dirnames.html:2 msgid "(domains mapped with the Global Address Book)" msgstr "(域映射与全局通讯簿)" #: ../../static/t/aide/inet/notify.html:2 msgid "(URLS for notifications when users receive new mails; )" msgstr "(当用户收到新邮件 ; 通知 URL)" #: ../../static/t/aide/inet/notify.html:2 msgid "Syntax: Notificationtemplatename:http[s]://user:password@hostname/path" msgstr "Syntax: Notificationtemplatename:http[s]://user:password@hostname/path" #: ../../static/t/aide/inet/smarthosts.html:2 msgid "(if present, forward all outbound mail to one of these hosts)" msgstr "(如果存在的话,所有出站邮件转发到这些主机之一)" #: ../../static/t/aide/inet/aliases.html:2 msgid "(domains for which this host receives mail)" msgstr "(域,此主机接收邮件)" #: ../../static/t/aide/inet/clamav.html:2 msgid "(hosts running the ClamAV clamd service)" msgstr "(主机运行 ClamAV clamd 服务)" #: ../../static/t/aide/inet/spamass.html:2 msgid "(hosts running the SpamAssassin service)" msgstr "(主机运行 SpamAssassin 服务)" #: ../../static/t/aide/inet/fallbackhosts.html:2 msgid "(send outbound mail to these hosts only when direct delivery fails)" msgstr "(发送出站邮件,这些主机直接传递失败时,才)" #: ../../static/t/aide/ignetconf/display_confirm_delete.html:5 msgid "Confirm delete" msgstr "确认删除 " #: ../../static/t/aide/ignetconf/display_confirm_delete.html:11 msgid "Are you sure you want to delete " msgstr "您确实要删除 " #: ../../static/t/aide/ignetconf/display_confirm_delete.html:14 #: ../../static/t/prefs/box.html:198 ../../static/t/iconbar/edit.html:19 #: ../../static/t/iconbar/edit.html:26 ../../static/t/iconbar/edit.html:32 #: ../../static/t/iconbar/edit.html:39 ../../static/t/iconbar/edit.html:45 #: ../../static/t/iconbar/edit.html:52 ../../static/t/iconbar/edit.html:58 #: ../../static/t/iconbar/edit.html:64 ../../static/t/iconbar/edit.html:70 #: ../../static/t/iconbar/edit.html:76 ../../static/t/iconbar/edit.html:82 #: ../../static/t/iconbar/edit.html:88 msgid "Yes" msgstr "\"是\" " #: ../../static/t/aide/ignetconf/display_confirm_delete.html:16 #: ../../static/t/prefs/box.html:200 ../../static/t/iconbar/edit.html:20 #: ../../static/t/iconbar/edit.html:27 ../../static/t/iconbar/edit.html:33 #: ../../static/t/iconbar/edit.html:40 ../../static/t/iconbar/edit.html:46 #: ../../static/t/iconbar/edit.html:53 ../../static/t/iconbar/edit.html:59 #: ../../static/t/iconbar/edit.html:65 ../../static/t/iconbar/edit.html:71 #: ../../static/t/iconbar/edit.html:77 ../../static/t/iconbar/edit.html:83 #: ../../static/t/iconbar/edit.html:89 msgid "No" msgstr "无 " #: ../../static/t/aide/ignetconf/edit_node.html:15 #: ../../static/t/aide/ignetconf/add.html:15 #: ../../static/t/aide/siteconfig/tab_general.html:8 msgid "Node name" msgstr "节点名称 " #: ../../static/t/aide/ignetconf/edit_node.html:17 #: ../../static/t/aide/ignetconf/add.html:17 msgid "Shared secret" msgstr "共享的密钥 " #: ../../static/t/aide/ignetconf/edit_node.html:19 #: ../../static/t/aide/ignetconf/add.html:19 msgid "Host or IP address" msgstr "主机或 IP 地址 " #: ../../static/t/aide/ignetconf/edit_node.html:21 #: ../../static/t/aide/ignetconf/add.html:21 msgid "Port number" msgstr "端口号 " #: ../../static/t/aide/ignetconf/section.html:4 msgid "(Edit)" msgstr "(编辑) " #: ../../static/t/aide/display_menu.html:12 msgid "Global Configuration" msgstr "全局配置" #: ../../static/t/aide/display_menu.html:14 msgid "User account management" msgstr "用户帐户管理" #: ../../static/t/aide/display_menu.html:16 msgid "Shutdown Citadel" msgstr "关闭城堡" #: ../../static/t/aide/display_menu.html:18 msgid "Rooms and Floors" msgstr "客房和地板" #: ../../static/t/aide/global_config.html:2 msgid "Edit site-wide configuration" msgstr "编辑站点范围的配置 " #: ../../static/t/aide/global_config.html:3 msgid "Domain names and Internet mail configuration" msgstr "域名及互联网邮件配置 " #: ../../static/t/aide/global_config.html:4 msgid "Configure replication with other Citadel servers" msgstr "与其他城堡服务器配置复制 " #: ../../static/t/aide/global_config.html:5 #: ../../static/t/view_mailq/header.html:3 msgid "View the outbound SMTP queue" msgstr "查看出站 SMTP 队列 " #: ../../static/t/aide/restart.html:2 msgid "Restart Now" msgstr "现在重新启动" #: ../../static/t/aide/restart.html:3 msgid "Restart after paging users" msgstr "重新启动后寻呼用户" #: ../../static/t/aide/restart.html:4 msgid "Restart when all users are idle" msgstr "所有用户都均处于空闲状态时重新启动" #: ../../static/t/aide/siteconfig/tab_general.html:1 msgid "General site configuration items" msgstr "一般站点的配置项 " #: ../../static/t/aide/siteconfig/tab_general.html:5 msgid "Change Login Logo" msgstr "更改登录徽标 " #: ../../static/t/aide/siteconfig/tab_general.html:6 msgid "Change Logout Logo" msgstr "更改注销徽标 " #: ../../static/t/aide/siteconfig/tab_general.html:11 msgid "Fully qualified domain name" msgstr "完全限定的域名 " #: ../../static/t/aide/siteconfig/tab_general.html:14 msgid "Human-readable node name" msgstr "人类可读的节点名称 " #: ../../static/t/aide/siteconfig/tab_general.html:17 msgid "Telephone number" msgstr "电话号码 " #: ../../static/t/aide/siteconfig/tab_general.html:20 msgid "Paginator prompt (for text mode clients)" msgstr "目前提示 (文本模式的客户端) " #: ../../static/t/aide/siteconfig/tab_general.html:23 msgid "Geographic location of this system" msgstr "此系统的地理位置 " #: ../../static/t/aide/siteconfig/tab_general.html:26 msgid "Name of system administrator" msgstr "系统管理员的名称 " #: ../../static/t/aide/siteconfig/tab_general.html:29 msgid "Default timezone for unzoned calendar items" msgstr "Unzoned 的日历项目的默认时区 " #: ../../static/t/aide/siteconfig/tab_autopurger.html:1 msgid "Configure automatic expiry of old messages" msgstr "配置自动到期的旧邮件 " #: ../../static/t/aide/siteconfig/tab_autopurger.html:2 msgid "These settings may be overridden on a per-floor or per-room basis." msgstr "每层或每个房间的基础上,可以重写这些设置。 " #: ../../static/t/aide/siteconfig/tab_autopurger.html:6 msgid "Hour to run database auto-purge" msgstr "小时运行数据库自动清除 " #: ../../static/t/aide/siteconfig/tab_autopurger.html:66 msgid "Default message expire policy for public rooms" msgstr "默认邮件过期,公共机房的政策 " #: ../../static/t/aide/siteconfig/tab_autopurger.html:68 #: ../../static/t/aide/siteconfig/tab_autopurger.html:86 #: ../../static/t/room/edit/tab_expire.html:17 #: ../../static/t/room/edit/tab_expire.html:45 msgid "Never automatically expire messages" msgstr "永远不会自动使邮件过期 " #: ../../static/t/aide/siteconfig/tab_autopurger.html:71 #: ../../static/t/aide/siteconfig/tab_autopurger.html:89 #: ../../static/t/room/edit/tab_expire.html:20 #: ../../static/t/room/edit/tab_expire.html:48 msgid "Expire by message count" msgstr "过期的邮件数 " #: ../../static/t/aide/siteconfig/tab_autopurger.html:73 #: ../../static/t/aide/siteconfig/tab_autopurger.html:92 #: ../../static/t/room/edit/tab_expire.html:23 #: ../../static/t/room/edit/tab_expire.html:51 msgid "Expire by message age" msgstr "过期的信息时代 " #: ../../static/t/aide/siteconfig/tab_autopurger.html:75 #: ../../static/t/aide/siteconfig/tab_autopurger.html:94 #: ../../static/t/room/edit/tab_expire.html:25 #: ../../static/t/room/edit/tab_expire.html:53 msgid "Number of messages or days: " msgstr "消息或几天的数目: " #: ../../static/t/aide/siteconfig/tab_autopurger.html:81 msgid "Default message expire policy for private mailboxes" msgstr "默认消息过期专用邮箱策略 " #: ../../static/t/aide/siteconfig/tab_autopurger.html:83 msgid "Same policy as public rooms" msgstr "公用房间相同的策略 " #: ../../static/t/aide/siteconfig/tab_network.html:1 msgid "Network services" msgstr "网络服务 " #: ../../static/t/aide/siteconfig/tab_network.html:2 #: ../../static/t/aide/siteconfig/tab_directory.html:3 msgid "" "Changes made on this screen will not take effect until you restart the " "Citadel server." msgstr "在此屏幕上所做的更改将不会生效,直到重新启动城堡的服务器。 " #: ../../static/t/aide/siteconfig/tab_network.html:6 msgid "SMTP MTA port (-1 to disable)" msgstr "MTA SMTP 端口 (禁用-1) " #: ../../static/t/aide/siteconfig/tab_network.html:9 msgid "Correct forged From: lines during authenticated SMTP" msgstr "从正确伪造: 经过身份验证的 SMTP 在行 " #: ../../static/t/aide/siteconfig/tab_network.html:12 msgid "Flag message as spam, instead of rejecting it" msgstr "将邮件标记为垃圾邮件,而不是拒绝 " #: ../../static/t/aide/siteconfig/tab_network.html:15 msgid "IMAP listener port (-1 to disable)" msgstr "IMAP 侦听器端口 (禁用-1) " #: ../../static/t/aide/siteconfig/tab_network.html:19 msgid "Network run frequency (in seconds)" msgstr "网络运行频率 (以秒为单位) " #: ../../static/t/aide/siteconfig/tab_network.html:22 msgid "Server IP address (0.0.0.0 for 'any')" msgstr "服务器 IP 地址 (任何 0.0.0.0) " #: ../../static/t/aide/siteconfig/tab_network.html:25 msgid "SMTP MSA port (-1 to disable)" msgstr "MSA SMTP 端口 (禁用-1) " #: ../../static/t/aide/siteconfig/tab_network.html:28 msgid "IMAP over SSL port (-1 to disable)" msgstr "IMAP 通过 SSL 端口 (禁用-1) " #: ../../static/t/aide/siteconfig/tab_network.html:31 msgid "SMTP over SSL port (-1 to disable)" msgstr "SMTP 通过 SSL 端口 (禁用-1) " #: ../../static/t/aide/siteconfig/tab_network.html:34 msgid "Instantly expunge deleted messages in IMAP" msgstr "立即债权在 IMAP 中已删除的邮件 " #: ../../static/t/aide/siteconfig/tab_network.html:38 msgid "Allow unauthenticated SMTP clients to spoof this sites domains" msgstr "允许未经身份验证的 SMTP 客户端欺骗这个站点域 " #: ../../static/t/aide/siteconfig/tab_network.html:41 msgid "Postfix TCP Dictionary Port" msgstr "后缀的词典 TCP 端口 " #: ../../static/t/aide/siteconfig/tab_network.html:41 msgid "-1 to disable" msgstr "若要禁用-1 " #: ../../static/t/aide/siteconfig/tab_network.html:44 msgid "ManageSieve Port (-1 to disable)" msgstr "ManageSieve 端口 (禁用-1) " #: ../../static/t/aide/siteconfig/tab_network.html:47 msgid "Perform RBL checks upon connect instead of after RCPT" msgstr "执行 RBL 检查后的连接而不是后 RCPT " #: ../../static/t/aide/siteconfig/tab_network.html:50 msgid "Keep original from headers in IMAP" msgstr "保持原始邮件头从 IMAP " #: ../../static/t/aide/siteconfig/tab_network.html:53 msgid "XMPP (Jabber) client to server port (-1 to disable)" msgstr "XMPP (Jabber) 客户端到服务器端口 (禁用-1) " #: ../../static/t/aide/siteconfig/tab_network.html:56 msgid "XMPP (Jabber) server to server port (-1 to disable)" msgstr "XMPP (Jabber) 服务器到服务器端口 (禁用-1) " #: ../../static/t/aide/siteconfig/tab_pop3.html:1 msgid "POP3" msgstr "POP3" #: ../../static/t/aide/siteconfig/tab_pop3.html:6 msgid "POP3 listener port (-1 to disable)" msgstr "POP3 侦听器端口 (禁用-1) " #: ../../static/t/aide/siteconfig/tab_pop3.html:9 msgid "POP3 over SSL port (-1 to disable)" msgstr "POP3 通过 SSL 端口 (禁用-1) " #: ../../static/t/aide/siteconfig/tab_pop3.html:12 msgid "POP3 fetch frequency in seconds" msgstr "以秒为单位的 POP3 回迁频率 " #: ../../static/t/aide/siteconfig/tab_pop3.html:15 msgid "POP3 fastest fetch frequency in seconds" msgstr "以秒为单位的 POP3 最快回迁频率 " #: ../../static/t/aide/siteconfig/tab_tuning.html:1 msgid "Advanced server fine-tuning controls" msgstr "微调控件的高级的服务器 " #: ../../static/t/aide/siteconfig/tab_tuning.html:5 msgid "Server connection idle timeout (in seconds)" msgstr "服务器连接空闲超时时间 (以秒为单位) " #: ../../static/t/aide/siteconfig/tab_tuning.html:8 msgid "Maximum concurrent sessions (0 = no limit)" msgstr "最大并发会话 (0 = 无限制) " #: ../../static/t/aide/siteconfig/tab_tuning.html:11 msgid "Default user purge time (days)" msgstr "默认用户清除时间 (天) " #: ../../static/t/aide/siteconfig/tab_tuning.html:14 msgid "Default room purge time (days)" msgstr "默认的房间清除时间 (天) " #: ../../static/t/aide/siteconfig/tab_tuning.html:17 msgid "Maximum message length" msgstr "最大消息长度 " #: ../../static/t/aide/siteconfig/tab_tuning.html:20 msgid "Minimum number of worker threads" msgstr "工作线程的最小数目 " #: ../../static/t/aide/siteconfig/tab_tuning.html:23 msgid "Maximum number of worker threads" msgstr "工作线程的最大数目 " #: ../../static/t/aide/siteconfig/tab_tuning.html:26 msgid "Automatically delete committed database logs" msgstr "会自动删除已提交的数据库的日志 " #: ../../static/t/aide/siteconfig/tab_pushmail.html:5 msgid "Funambol server host (blank to disable)" msgstr "战略性服务器主机 (禁用空白) " #: ../../static/t/aide/siteconfig/tab_pushmail.html:8 msgid "Funambol server port " msgstr "战略性服务器端口 " #: ../../static/t/aide/siteconfig/tab_pushmail.html:11 msgid "Funambol sync source" msgstr "战略性同步源 " #: ../../static/t/aide/siteconfig/tab_pushmail.html:14 msgid "Funambol auth details (user:pass)" msgstr "战略性身份验证的详细信息 (用户: 通) " #: ../../static/t/aide/siteconfig/tab_pushmail.html:17 msgid "External pager tool (blank to disable)" msgstr "外部页导航工具 (禁用空白) " #: ../../static/t/aide/siteconfig/tab_access.html:1 msgid "Access controls and site policy settings" msgstr "访问控制和网站策略设置 " #: ../../static/t/aide/siteconfig/tab_access.html:5 msgid "Allow aides to zap (forget) rooms" msgstr "允许歼灭的助手 (忘了) 的房间 " #: ../../static/t/aide/siteconfig/tab_access.html:9 msgid "Quarantine messages from problem users" msgstr "问题用户隔离的邮件 " #: ../../static/t/aide/siteconfig/tab_access.html:12 msgid "Name of quarantine room" msgstr "隔离房间的名称 " #: ../../static/t/aide/siteconfig/tab_access.html:17 msgid "Name of room to log pages" msgstr "房间到登录页的名称 " #: ../../static/t/aide/siteconfig/tab_access.html:22 msgid "Authentication mode" msgstr "身份验证模式 " #: ../../static/t/aide/siteconfig/tab_access.html:24 msgid "Self contained" msgstr "自载 " #: ../../static/t/aide/siteconfig/tab_access.html:25 msgid "Host based" msgstr "基于主机 " #: ../../static/t/aide/siteconfig/tab_access.html:26 msgid "LDAP (RFC2307)" msgstr "LDAP (RFC2307)" #: ../../static/t/aide/siteconfig/tab_access.html:27 msgid "LDAP (Active Directory)" msgstr "LDAP (Active Directory)" #: ../../static/t/aide/siteconfig/tab_access.html:30 msgid "Master user name (blank to disable)" msgstr "主用户名称 (禁用空白) " #: ../../static/t/aide/siteconfig/tab_access.html:33 msgid "Master user password" msgstr "主用户密码 " #: ../../static/t/aide/siteconfig/tab_access.html:38 msgid "Initial access level for new users" msgstr "新用户的的初始的访问级别 " #: ../../static/t/aide/siteconfig/tab_access.html:49 msgid "Access level required to create rooms" msgstr "创建房间所需的访问级别 " #: ../../static/t/aide/siteconfig/tab_access.html:60 msgid "Automatically grant room-aide status to users who create private rooms" msgstr "自动授予用户创建包房房间助手状态 " #: ../../static/t/aide/siteconfig/tab_access.html:63 #, fuzzy msgid "Automatically grant room-aide status to users who create BLOG rooms" msgstr "自动授予用户创建包房房间助手状态 " #: ../../static/t/aide/siteconfig/tab_access.html:66 msgid "Restrict access to Internet mail" msgstr "限制访问 Internet 邮件 " #: ../../static/t/aide/siteconfig/tab_access.html:71 msgid "Disable self-service user account creation" msgstr "禁用自助服务的用户帐户创建 " #: ../../static/t/aide/siteconfig/tab_access.html:71 msgid "Hint: do not select both!" msgstr "提示: 请不要选择两个 ! " #: ../../static/t/aide/siteconfig/tab_access.html:74 msgid "Require registration for new users" msgstr "为新用户需要注册 " #: ../../static/t/aide/siteconfig/tab_access.html:77 msgid "Allow anonymous guest access" msgstr "允许匿名来宾访问 " #: ../../static/t/aide/siteconfig/tab_indexing.html:1 msgid "Indexing and Journaling" msgstr "索引和日记 " #: ../../static/t/aide/siteconfig/tab_indexing.html:2 msgid "Warning: these facilities are resource intensive." msgstr "警告: 这些设施会占用大量资源。 " #: ../../static/t/aide/siteconfig/tab_indexing.html:6 msgid "Enable full text index" msgstr "启用全文索引 " #: ../../static/t/aide/siteconfig/tab_indexing.html:9 msgid "Perform journaling of email messages" msgstr "执行日志记录的电子邮件 " #: ../../static/t/aide/siteconfig/tab_indexing.html:13 msgid "Perform journaling of non-email messages" msgstr "执行非电子邮件消息的日志记录 " #: ../../static/t/aide/siteconfig/tab_indexing.html:16 msgid "Email destination of journalized messages" msgstr "日记中记录的消息的电子邮件目标 " #: ../../static/t/aide/siteconfig/tab_directory.html:1 msgid "Configure the LDAP connector for Citadel" msgstr "配置 Citdael 的 LDAP 接头 " #: ../../static/t/aide/siteconfig/tab_directory.html:4 msgid "" "NOTE: This Citadel server has been built without LDAP support. These " "options will have no effect." msgstr "注意: 此城堡服务器建成了无 LDAP 支持。这些选项将不起作用。 " #: ../../static/t/aide/siteconfig/tab_directory.html:9 msgid "Host name of LDAP server (blank to disable)" msgstr "(若要禁用空白) 的 LDAP 服务器的主机名 " #: ../../static/t/aide/siteconfig/tab_directory.html:13 msgid "Port number of LDAP server (blank to disable)" msgstr "(若要禁用空白) 的 LDAP 服务器的主机名 " #: ../../static/t/aide/siteconfig/tab_directory.html:16 msgid "Base DN" msgstr "基地 DN " #: ../../static/t/aide/siteconfig/tab_directory.html:19 msgid "Bind DN" msgstr "绑定 DN " #: ../../static/t/aide/siteconfig/tab_directory.html:22 msgid "Password for bind DN" msgstr "DN 绑定密码 " #: ../../static/t/iconbar.html:7 msgid "Language:" msgstr "" #: ../../static/t/iconbar.html:19 msgid "Mail" msgstr "邮件 " #: ../../static/t/iconbar.html:39 ../../static/t/iconbar/edit.html:61 #: ../../static/t/summary/page.html:30 msgid "Tasks" msgstr "任务 " #: ../../static/t/iconbar.html:48 ../../static/t/iconbar/edit.html:67 msgid "Rooms" msgstr "客房 " #: ../../static/t/iconbar.html:57 msgid "Online users" msgstr "在线用户 " #: ../../static/t/iconbar.html:62 ../../static/t/iconbar/edit.html:79 msgid "Chat" msgstr "聊天 " #: ../../static/t/iconbar.html:65 msgid "Advanced" msgstr "高级 " #: ../../static/t/iconbar.html:72 ../../static/t/room/edit/editroom.html:4 #: ../../static/t/room/edit.html:5 msgid "Administration" msgstr "政府 " #: ../../static/t/iconbar.html:83 msgid "customize this menu" msgstr "自定义此菜单 " #: ../../static/t/iconbar.html:92 msgid "switch to room list" msgstr "切换到房间列表 " #: ../../static/t/iconbar.html:93 msgid "switch to menu" msgstr "切换到菜单 " #: ../../static/t/iconbar.html:94 msgid "My folders" msgstr "我的文件夹 " #: ../../static/t/view_message/list_attach.html:3 #: ../../static/t/view_message/inline_attach.html:4 msgid "View" msgstr "视图 " #: ../../static/t/view_message/list_attach.html:4 #: ../../static/t/view_message/inline_attach.html:5 msgid "Download" msgstr "下载 " #: ../../static/t/view_message/print.html:14 #: ../../static/t/view_message.html:14 msgid "to" msgstr "自 " #: ../../static/t/openid_manual_create.html:2 msgid "Your OpenID" msgstr "" #: ../../static/t/openid_manual_create.html:2 msgid "was successfully verified." msgstr "已成功验证。" #: ../../static/t/openid_manual_create.html:3 msgid "However, the user name" msgstr "但是,用户名称" #: ../../static/t/openid_manual_create.html:3 msgid "conflicts with an existing user." msgstr "与现有用户的冲突。" #: ../../static/t/openid_manual_create.html:5 msgid "Please specify the user name you would like to use." msgstr "请指定您想要使用的用户名。" #: ../../static/t/files/graphicsupload.html:2 msgid "Image upload" msgstr "图片上传 " #: ../../static/t/files/graphicsupload.html:6 msgid "You can upload an image directly from your computer" msgstr "您可以直接从您的计算机上传的映像 " #: ../../static/t/files/graphicsupload.html:8 msgid "Please select a file to upload:" msgstr "请选择要上载的文件: " #: ../../static/t/files/section_onefile.html:20 msgid "Slideshow" msgstr "幻灯片放映 " #: ../../static/t/roombanner.html:10 ../../static/t/roombanner.html:11 msgid "new of" msgstr "新的 " #: ../../static/t/roombanner.html:10 ../../static/t/roombanner.html:11 #: ../../static/t/msg_listselector_bottom.html:7 #: ../../static/t/msg_listselector_top.html:7 msgid "messages" msgstr "邮件 " #: ../../static/t/roombanner.html:28 msgid "Select page: " msgstr "选择的页面: " #: ../../static/t/who.html:13 msgid "Users currently on " msgstr "当前的用户 " #: ../../static/t/who.html:22 msgid "Click on a name to read user info. Click on" msgstr "单击其名称可读取用户信息。单击" #: ../../static/t/who.html:24 msgid "to send an instant message to that user." msgstr "向该用户发送即时消息。 " #: ../../static/t/msg_listselector_bottom.html:2 #: ../../static/t/msg_listselector_top.html:2 msgid "Reading #" msgstr "阅读 # " #: ../../static/t/msg_listselector_bottom.html:12 #: ../../static/t/msg_listselector_top.html:12 msgid "oldest to newest" msgstr "最早到最新 " #: ../../static/t/msg_listselector_bottom.html:20 #: ../../static/t/msg_listselector_top.html:20 msgid "newest to oldest" msgstr "最新到旧 " #: ../../static/t/newstartpage.html:4 msgid "New start page" msgstr "新的起始页 " #: ../../static/t/newstartpage.html:9 msgid "Your start page has been changed." msgstr "已更改您的起始页。 " #: ../../static/t/newstartpage.html:12 msgid "" "(Note: this does not change your browser's home page. It changes the page " "you begin on when you log on to" msgstr "(注: 这不会更改您的浏览器的主页。它会更改页当您登录到您在开始 " #: ../../static/t/no_new_msgs.html:3 msgid "No new messages." msgstr "没有新的消息。" #: ../../static/t/view_blog/comment_box.html:8 #, fuzzy msgid "Post a comment" msgstr "%d 的评论 " #: ../../static/t/prefs/pushemail.html:2 msgid "Configure Push Email" msgstr "配置邮件推送 " #: ../../static/t/prefs/pushemail.html:9 msgid "Push email and SMS settings" msgstr "推动电子邮件和短信设置" #: ../../static/t/prefs/pushemail.html:17 msgid "" "If your administrator has enabled the functionality, Citadel can notify a " "Funambol server that you haved recieved new email and automatically " "syncronize any devices you have with the Funambol client installed." msgstr "" "如果您的管理员已启用该功能,可以通知城堡战略性服务器,您收到的所见所闻新的电" "子邮件和自动同步您拥有的任何设备战略性客户端安装。 " #: ../../static/t/prefs/pushemail.html:20 msgid "" "Alternatively, if the administrator has configured it, Citadel can send a " "text message to you when new mail arrives." msgstr "另外,如果管理员已配置它,城堡可以发送新邮件到达时的文本消息。 " #: ../../static/t/prefs/pushemail.html:26 msgid "Notify Funambol server" msgstr "通知的战略性服务器" #: ../../static/t/prefs/pushemail.html:31 msgid "Send a text message to..." msgstr "发送文本消息..." #: ../../static/t/prefs/pushemail.html:33 msgid "" "(Use international format, without any leading zeros, spaces or hypens, like " "+61415011501)" msgstr "(使用国际标准格式,没有任何前导零、 空格或连像+61415011501) " #: ../../static/t/prefs/pushemail.html:38 msgid "Use custom notification scheme configured by your Admin" msgstr "使用自定义通知计划由您的管理员配置 " #: ../../static/t/prefs/pushemail.html:43 msgid "Don‘t send any notifications" msgstr "不要发送任何通知 " #: ../../static/t/prefs/box.html:9 msgid "Tree (folders) view" msgstr "(文件夹) 树视图 " #: ../../static/t/prefs/box.html:11 msgid "Table (rooms) view" msgstr "表 (房间) 视图 " #: ../../static/t/prefs/box.html:20 msgid "12 hour (am/pm)" msgstr "12 小时 (am/pm) " #: ../../static/t/prefs/box.html:25 msgid "24 hour" msgstr "24 小时 " #: ../../static/t/prefs/box.html:152 msgid "Sunday" msgstr "星期日 " #: ../../static/t/prefs/box.html:153 msgid "Monday" msgstr "星期一 " #: ../../static/t/prefs/box.html:174 msgid "No signature" msgstr "没有签名 " #: ../../static/t/prefs/box.html:238 msgid "Full-functionality" msgstr "全功能 " #: ../../static/t/prefs/box.html:241 msgid "Safe mode" msgstr "安全模式 " #: ../../static/t/prefs/box.html:242 msgid "" "Safe mode is less intensive on your web browser, but not as fully featured." msgstr "安全模式是少用 web 浏览器,但不是充分的特色。 " #: ../../static/t/wiki/pagelist.html:1 msgid "List of Wiki pages" msgstr "Wiki 页面的列表 " #: ../../static/t/wiki/history.html:1 msgid "History of edits for this page" msgstr "编辑此页的历史 " #: ../../static/t/who/list_static_header.html:1 msgid "Users currently on" msgstr "当前的用户 " #: ../../static/t/who/section.html:4 msgid "(kill)" msgstr "(杀) " #: ../../static/t/who/bio.html:4 ../../static/t/user/show.html:4 msgid "User profile" msgstr "用户配置文件 " #: ../../static/t/who/summary.html:5 ../../static/t/who/box_list_static.html:6 #: ../../static/t/room/edit/tab_feed.html:13 msgid "User name" msgstr "用户名称 " #: ../../static/t/who/summary.html:6 ../../static/t/who/box_list_static.html:7 msgid "Room" msgstr "房间 " #: ../../static/t/who/box_list_static.html:8 msgid "From host" msgstr "从主机 " #: ../../static/t/view_message.html:19 msgid "Edit" msgstr "编辑 " #: ../../static/t/view_message.html:22 ../../static/t/view_message.html:26 msgid "Reply" msgstr "答复 " #: ../../static/t/view_message.html:23 msgid "ReplyQuoted" msgstr "引用回复" #: ../../static/t/view_message.html:27 msgid "ReplyAll" msgstr "全部回复 " #: ../../static/t/view_message.html:28 msgid "Forward" msgstr "转发 " #: ../../static/t/view_message.html:31 ../../static/t/msg_listview.html:25 msgid "Move" msgstr "移动 " #: ../../static/t/view_message.html:34 msgid "Headers" msgstr "标题 " #: ../../static/t/view_message.html:35 ../../static/t/msg_listview.html:28 msgid "Print" msgstr "打印 " #: ../../static/t/preferences.html:4 ../../static/t/preferences.html:7 msgid "Preferences and settings" msgstr "首选项和设置" #: ../../static/t/user/list.html:3 msgid "User list for " msgstr "的用户列表 " #: ../../static/t/user/list.html:9 msgid "User Name" msgstr "用户名称 " #: ../../static/t/user/list.html:10 msgid "Number" msgstr "编号 " #: ../../static/t/user/list.html:11 msgid "Access Level" msgstr "访问级别 " #: ../../static/t/user/list.html:12 msgid "Last Login" msgstr "上次登入时间 " #: ../../static/t/user/list.html:13 msgid "Total Logins" msgstr "总登录 " #: ../../static/t/user/list.html:14 msgid "Total Posts" msgstr "总帖子 " #: ../../static/t/user/show.html:9 #, fuzzy msgid "Click here to send an instant message to" msgstr "单击此处以发送到 的即时消息 " #: ../../static/t/start_of_new_msgs.html:4 msgid "Old messages" msgstr "旧邮件 " #: ../../static/t/start_of_new_msgs.html:8 msgid "New messages" msgstr "新邮件 " #: ../../static/t/display_main_menu.html:7 msgid "Basic commands" msgstr "基本命令" #: ../../static/t/display_main_menu.html:10 msgid "Your info" msgstr "您的信息" #: ../../static/t/display_main_menu.html:12 msgid "Advanced room commands" msgstr "高级的房命令" #: ../../static/t/iconbar/save.html:4 ../../static/t/iconbar/edit.html:4 msgid "Customize the icon bar" msgstr "自定义图标栏 " #: ../../static/t/iconbar/save.html:11 msgid "" "Your icon bar has been updated. Please select any of its choices to continue." msgstr "已更新您的图标栏。请选择继续其选择的任何类情况的发生。 " #: ../../static/t/iconbar/save.html:11 msgid "" "You may need to force refresh (SHIFT-F5)> in order for changes to take effect" msgstr "您可能需要进行强制刷新 (shift 键 F5) > 为了使更改生效 " #: ../../static/t/iconbar/edit.html:11 msgid "Display icons as:" msgstr "显示为图标,请: " #: ../../static/t/iconbar/edit.html:12 msgid "pictures and text" msgstr "图片和文本 " #: ../../static/t/iconbar/edit.html:13 msgid "pictures only" msgstr "只有图片 " #: ../../static/t/iconbar/edit.html:14 msgid "text only" msgstr "纯文字版 " #: ../../static/t/iconbar/edit.html:16 msgid "" "Select the icons you would like to see displayed in the 'icon bar' menu on " "the left side of the screen." msgstr "选择您想要对 '图标栏菜单中显示的图标在屏幕的左侧。 " #: ../../static/t/iconbar/edit.html:23 msgid "Site logo" msgstr "站点徽标 " #: ../../static/t/iconbar/edit.html:23 msgid "An icon describing this site" msgstr "描述此站点图标 " #: ../../static/t/iconbar/edit.html:29 msgid "Your summary page" msgstr "摘要页面 " #: ../../static/t/iconbar/edit.html:36 msgid "Mail (inbox)" msgstr "邮件 (收件箱) " #: ../../static/t/iconbar/edit.html:36 msgid "A shortcut to your email Inbox" msgstr "快捷方式到您的电子邮件收件箱 " #: ../../static/t/iconbar/edit.html:42 msgid "Your personal address book" msgstr "个人通讯簿 " #: ../../static/t/iconbar/edit.html:49 msgid "Your personal notes" msgstr "您个人的笔记 " #: ../../static/t/iconbar/edit.html:55 msgid "A shortcut to your personal calendar" msgstr "快捷方式到您的个人日历 " #: ../../static/t/iconbar/edit.html:61 msgid "A shortcut to your personal task list" msgstr "您的个人任务列表快捷方式 " #: ../../static/t/iconbar/edit.html:67 msgid "" "Clicking this icon displays a list of all accessible rooms (or folders) " "available." msgstr "单击此图标显示列表中的所有可访问的房间 (或文件夹)可用。 " #: ../../static/t/iconbar/edit.html:73 msgid "Who is online?" msgstr "在线是谁? " #: ../../static/t/iconbar/edit.html:73 msgid "Clicking this icon displays a list of all users currently logged in." msgstr "单击此图标会显示当前记录的所有用户的列表。 " #: ../../static/t/iconbar/edit.html:79 msgid "" "Clicking this icon enters real-time chat mode with other users in the same " "room." msgstr "单击此图标进入实时聊天模式与其他用户在同一房间。" #: ../../static/t/iconbar/edit.html:85 msgid "Advanced options" msgstr "高级的选项 " #: ../../static/t/iconbar/edit.html:85 msgid "Access to the complete menu of Citadel functions." msgstr "城堡功能的完整菜单访问。 " #: ../../static/t/iconbar/edit.html:91 msgid "Citadel logo" msgstr "城堡徽标 " #: ../../static/t/iconbar/edit.html:91 msgid "Displays the 'Powered by Citadel' icon" msgstr "显示提供动力的城堡' 图标 " #: ../../static/t/room/edit/tab_expire.html:8 msgid "Message expire policy for this room" msgstr "邮件过期的这间屋子的政策" #: ../../static/t/room/edit/tab_expire.html:14 msgid "Use the default policy for this floor" msgstr "这种地板使用默认策略" #: ../../static/t/room/edit/tab_expire.html:36 msgid "Message expire policy for this floor" msgstr "邮件过期这层政策" #: ../../static/t/room/edit/tab_expire.html:42 msgid "Use the system default" msgstr "使用系统默认值" #: ../../static/t/room/edit/editroom.html:5 ../../static/t/room/edit.html:6 msgid "Configuration" msgstr "配置" #: ../../static/t/room/edit/editroom.html:6 ../../static/t/room/edit.html:7 msgid "Message expire policy" msgstr "邮件过期这层政策" #: ../../static/t/room/edit/editroom.html:7 ../../static/t/room/edit.html:8 msgid "Access controls" msgstr "访问控制和网站策略设置" #: ../../static/t/room/edit/editroom.html:8 ../../static/t/room/edit.html:9 msgid "Sharing" msgstr "共享" #: ../../static/t/room/edit/editroom.html:9 ../../static/t/room/edit.html:10 msgid "Mailing list service" msgstr "邮件列表服务" #: ../../static/t/room/edit/editroom.html:10 ../../static/t/room/edit.html:11 msgid "Remote retrieval" msgstr "远程检索" #: ../../static/t/room/edit/tab_config.html:6 msgid "name of room: " msgstr "文件室的名称:" #: ../../static/t/room/edit/tab_config.html:10 #: ../../static/t/room/create.html:20 msgid "Resides on floor: " msgstr "驻留在地板上:" #: ../../static/t/room/edit/tab_config.html:16 #: ../../static/t/room/create.html:68 msgid "Type of room:" msgstr "房间类型:" #: ../../static/t/room/edit/tab_config.html:22 #: ../../static/t/room/create.html:73 msgid "Public (automatically appears to everyone)" msgstr "公共 (每个人都自动显示)" #: ../../static/t/room/edit/tab_config.html:28 #: ../../static/t/room/create.html:77 msgid "Private - hidden (accessible to anyone who knows its name)" msgstr "私人-隐藏 (可向任何人知道它的名称)" #: ../../static/t/room/edit/tab_config.html:35 #: ../../static/t/room/create.html:81 msgid "Private - require password: " msgstr "私人-需要密码:" #: ../../static/t/room/edit/tab_config.html:44 #: ../../static/t/room/create.html:86 msgid "Private - invitation only" msgstr "仅限邀请私营" #: ../../static/t/room/edit/tab_config.html:51 #: ../../static/t/room/create.html:90 msgid "Personal (mailbox for you only)" msgstr "个人 (仅为您邮箱)" #: ../../static/t/room/edit/tab_config.html:55 msgid "If private, cause current users to forget room" msgstr "如果是私有的导致当前用户忘记室" #: ../../static/t/room/edit/tab_config.html:61 msgid "Preferred users only" msgstr "首选的用户只" #: ../../static/t/room/edit/tab_config.html:66 msgid "Read-only room" msgstr "只读的房间" #: ../../static/t/room/edit/tab_config.html:71 msgid "All users allowed to post may also delete messages" msgstr "允许发布的所有用户,也可以都删除邮件" #: ../../static/t/room/edit/tab_config.html:76 msgid "File directory room" msgstr "文件目录室" #: ../../static/t/room/edit/tab_config.html:80 msgid "Directory name: " msgstr "目录名称:" #: ../../static/t/room/edit/tab_config.html:86 msgid "Uploading allowed" msgstr "上载允许" #: ../../static/t/room/edit/tab_config.html:91 msgid "Downloading allowed" msgstr "下载允许" #: ../../static/t/room/edit/tab_config.html:96 msgid "Visible directory" msgstr "可见的目录" #: ../../static/t/room/edit/tab_config.html:103 msgid "Network shared room" msgstr "网络共享空间" #: ../../static/t/room/edit/tab_config.html:108 msgid "Permanent (does not auto-purge)" msgstr "常驻 (并不自动清除)" #: ../../static/t/room/edit/tab_config.html:113 msgid "Subject Required (Force users to specify a message subject)" msgstr "所需的主题 (强制用户指定邮件主题)" #: ../../static/t/room/edit/tab_config.html:116 msgid "Anonymous messages" msgstr "匿名消息" #: ../../static/t/room/edit/tab_config.html:122 msgid "No anonymous messages" msgstr "没有匿名消息" #: ../../static/t/room/edit/tab_config.html:127 msgid "All messages are anonymous" msgstr "所有消息都是匿名" #: ../../static/t/room/edit/tab_config.html:132 msgid "Prompt user when entering messages" msgstr "提示用户输入消息时" #: ../../static/t/room/edit/tab_config.html:136 msgid "Room aide: " msgstr "房间的助手:" #: ../../static/t/room/edit/tab_listserv.html:5 #, fuzzy msgid "" "The contents of this room are being mailed as individual messages " "to the following list recipients:

    " msgstr "" " 这个房间里的内容都被作为单个邮件
    邮寄 以下列列表中的收件人:

    " #: ../../static/t/room/edit/tab_listserv.html:19 #, fuzzy msgid "" "The contents of this room are being mailed in digest form to the " "following list recipients:

    " msgstr "" " 这个房间里的内容都被以邮寄 ,来以月刊形式 以下列表中的收件人:

    " #: ../../static/t/room/edit/tab_listserv.html:39 msgid "Add recipients from Contacts or other address books" msgstr "从联系人或其他通讯簿添加收件人" #: ../../static/t/room/edit/tab_listserv.html:48 msgid "Allow non-subscribers to mail to this room." msgstr "允许订阅服务器以便将邮件到这个房间。" #: ../../static/t/room/edit/tab_listserv.html:54 msgid "Room post publication needs Admin permission." msgstr "房间后的出版物需求助手的权限。" #: ../../static/t/room/edit/tab_listserv.html:59 msgid "Allow self-service subscribe/unsubscribe requests." msgstr "允许自助服务订阅退订的请求。" #: ../../static/t/room/edit/tab_listserv.html:65 msgid "The URL for subscribe/unsubscribe is: " msgstr "订阅取消订阅的 URL 是:" #: ../../static/t/room/edit/digestrecp_removal.html:1 #: ../../static/t/room/edit/pop3client_removal.html:9 #: ../../static/t/room/edit/listrecp_removal.html:1 #: ../../static/t/room/edit/rssclient_removal.html:5 msgid "(remove)" msgstr "(删除)" #: ../../static/t/room/edit/tab_admin.html:5 msgid "Delete this room" msgstr "删除这个房间" #: ../../static/t/room/edit/tab_admin.html:10 msgid "Set or change the icon for this rooms banner" msgstr "设置或更改此房间旗帜的图标" #: ../../static/t/room/edit/tab_admin.html:14 msgid "Edit this rooms Info file" msgstr "编辑此房间信息文件" #: ../../static/t/room/edit/tab_share.html:5 msgid "Shared with" msgstr "与共享" #: ../../static/t/room/edit/tab_share.html:6 msgid "Not shared with" msgstr "不与共享" #: ../../static/t/room/edit/tab_share.html:11 #: ../../static/t/room/edit/tab_share.html:21 msgid "Remote node name" msgstr "远程节点名称" #: ../../static/t/room/edit/tab_share.html:12 #: ../../static/t/room/edit/tab_share.html:22 msgid "Remote room name" msgstr "远程房间名称" #: ../../static/t/room/edit/tab_share.html:13 #: ../../static/t/room/edit/tab_share.html:23 msgid "Actions" msgstr "行动" #: ../../static/t/room/edit/tab_share.html:35 msgid "" "When sharing a room, it must be shared from both ends. Adding a node to the " "'shared' list sends messages out, but in order to receive messages, the " "other nodes must be configured to send messages out to your system as well. " "
  • If the remote room name is blank, it is assumed that the room name is " "identical on the remote node.
  • If the remote room name is different, the " "remote node must also configure the name of the room here." msgstr "" "当共享一个房间,必须从两端共享它。添加节点 共享列表发送出去,但为了接收邮件," "邮件 必须将的邮件发送到您的系统以及配置其他节点。
  • 如果远程房间名称为空," "则假定的房间名称是 相同的远程节点上。
  • 如果远程房间名称是不同的 远程节点还" "必须配置在这里的房间的名称。" #: ../../static/t/room/edit/tab_feed.html:2 msgid "" "Retrieve messages from these remote POP3 accounts and store them in this " "room:" msgstr "从这些远程 POP3 帐户检索消息,并将它们存储在此 房间:" #: ../../static/t/room/edit/tab_feed.html:12 msgid "Remote host" msgstr "远程主机" #: ../../static/t/room/edit/tab_feed.html:15 msgid "Keep messages on server?" msgstr "在服务器上保留邮件吗?" #: ../../static/t/room/edit/tab_feed.html:16 msgid "Interval" msgstr "时间间隔" #: ../../static/t/room/edit/tab_feed.html:31 msgid "Fetch the following RSS feeds and store them in this room:" msgstr "获取以下的 RSS 订阅源,并将它们存储在这个房间里:" #: ../../static/t/room/edit/tab_feed.html:43 msgid "Feed URL" msgstr "饲料的 URL" #: ../../static/t/room/edit/tab_access.html:5 msgid "" "The users listed below have access to this room. To remove a user from the " "access list, select the user name from the list and click 'Kick'." msgstr "" "下面列出的用户有权访问这个房间。若要删除用户从 访问列表中,从列表中选择用户名" "称,然后单击 '踢'。" #: ../../static/t/room/edit/tab_access.html:20 msgid "" "To grant another user access to this room, enter the user name in the box " "below and click 'Invite'." msgstr "要授予这个房间另一个用户访问,在框中输入用户名 下面,单击邀请。" #: ../../static/t/room/edit/tab_access.html:26 msgid "Invite:" msgstr "邀请:" #: ../../static/t/room/edit/tab_access.html:35 msgid "Users" msgstr "用户" #: ../../static/t/room/zapped_list.html:7 msgid "Zapped (forgotten) rooms" msgstr "该地 (被遗忘) 室" #: ../../static/t/room/zapped_list.html:10 msgid "Click on any room to un-zap it and goto that room." msgstr "单击任何房间以联合国 zap 上它,并转到那个房间。" #: ../../static/t/room/display_private.html:7 msgid "Go to a hidden room" msgstr "转到一个隐藏的房间" #: ../../static/t/room/display_private.html:8 msgid "" "If you know the name of a hidden (guess-name) or passworded room, you can " "enter that room by typing its name below. Once you gain access to a private " "room, it will appear in your regular room listings so you don‘t have to keep " "returning here." msgstr "" "如果您知道隐藏 (猜名称) 或 passworded 房间的名称,您可以 输入通过键入其名称" "下面的那间屋子里。一旦您访问一个私有 房间,它将出现在您定期房间列表使您不必保" "持 返回在这里。" #: ../../static/t/room/display_private.html:14 msgid "Enter room name:" msgstr "输入房间名称:" #: ../../static/t/room/display_private.html:21 msgid "Enter room password:" msgstr "输入房间密码:" #: ../../static/t/room/create.html:11 #: ../../static/t/menu/advanced_roomcommands.html:6 msgid "Create a new room" msgstr "创建一个新的房间 " #: ../../static/t/room/create.html:18 msgid "Name of room: " msgstr "文件室的名称:" #: ../../static/t/room/create.html:32 msgid "Default view for room: " msgstr "房间的默认视图:" #: ../../static/t/room/zap_this.html:3 msgid "Zap (forget/unsubscribe) the current room" msgstr "歼灭 (忘记/退订) 现时的房间" #: ../../static/t/room/zap_this.html:6 msgid "If you select this option," msgstr "如果您选择此选项," #: ../../static/t/room/zap_this.html:8 msgid "will disappear from your room list. Is this what you wish to do?" msgstr "将从您的房间列表中消失。这是你想做的吗?" #: ../../static/t/menu/your_info.html:2 msgid "Change your preferences and settings" msgstr "更改您的首选项和设置 " #: ../../static/t/menu/your_info.html:3 msgid "Update your contact information" msgstr "更新您的联系信息 " #: ../../static/t/menu/your_info.html:5 msgid "Enter your 'bio'" msgstr "请输入您的生物 " #: ../../static/t/menu/your_info.html:6 msgid "Edit your online photo" msgstr "编辑您的在线照片 " #: ../../static/t/menu/your_info.html:8 msgid "Edit your push email settings" msgstr "编辑你推电子邮件设置 " #: ../../static/t/menu/your_info.html:9 msgid "Manage your OpenIDs" msgstr "管理您的 OpenIDs " #: ../../static/t/menu/basic_commands.html:3 msgid "List known rooms" msgstr "已知房间列表 " #: ../../static/t/menu/basic_commands.html:3 msgid "Where can I go from here?" msgstr "哪儿可以从这里? " #: ../../static/t/menu/basic_commands.html:4 ../../static/t/navbar.html:168 msgid "Goto next room" msgstr "转到隔壁房间 " #: ../../static/t/menu/basic_commands.html:4 msgid "...with unread messages" msgstr "… … 以 未读的 消息 " #: ../../static/t/menu/basic_commands.html:5 msgid "Skip to next room" msgstr "跳到隔壁房间 " #: ../../static/t/menu/basic_commands.html:5 msgid "(come back here later)" msgstr "(回来以后) " #: ../../static/t/menu/basic_commands.html:6 ../../static/t/navbar.html:5 msgid "Ungoto" msgstr "Ungoto" #: ../../static/t/menu/basic_commands.html:6 msgid "oops! Back to " msgstr "哎呀 !回 " #: ../../static/t/menu/basic_commands.html:10 ../../static/t/navbar.html:13 msgid "Read new messages" msgstr "阅读新邮件 " #: ../../static/t/menu/basic_commands.html:10 msgid "...in this room" msgstr "... 这房间 " #: ../../static/t/menu/basic_commands.html:11 ../../static/t/navbar.html:19 msgid "Read all messages" msgstr "阅读所有邮件 " #: ../../static/t/menu/basic_commands.html:11 msgid "...old and new" msgstr "….old 新 " #: ../../static/t/menu/basic_commands.html:12 ../../static/t/navbar.html:25 msgid "Enter a message" msgstr "输入的消息 " #: ../../static/t/menu/basic_commands.html:12 msgid "(post in this room)" msgstr "(在这个房间里发布) " #: ../../static/t/menu/basic_commands.html:13 msgid "File library" msgstr "文件库 " #: ../../static/t/menu/basic_commands.html:13 msgid "(List files available for download)" msgstr "(列出可供下载的文件) " #: ../../static/t/menu/basic_commands.html:17 msgid "Summary page" msgstr "摘要页 " #: ../../static/t/menu/basic_commands.html:17 msgid "Summary of my account" msgstr "我的账户的摘要 " #: ../../static/t/menu/basic_commands.html:18 msgid "User list" msgstr "的用户列表 " #: ../../static/t/menu/basic_commands.html:18 msgid "(all registered users)" msgstr "(所有已注册的用户) " #: ../../static/t/menu/basic_commands.html:19 msgid "Bye!" msgstr "再见 ! " #: ../../static/t/menu/advanced_roomcommands.html:3 msgid "Edit or delete this room" msgstr "编辑或删除这个房间 " #: ../../static/t/menu/advanced_roomcommands.html:5 msgid "Go to a 'hidden' room" msgstr "转到隐藏的房间 " #: ../../static/t/menu/advanced_roomcommands.html:7 msgid "Zap (forget) this room" msgstr "歼灭 (忘记) 这个房间 " #: ../../static/t/menu/advanced_roomcommands.html:8 msgid "List all forgotten rooms" msgstr "列出所有的房间都被遗忘 " #: ../../static/t/navbar.html:34 msgid "View contacts" msgstr "查看联系人 " #: ../../static/t/navbar.html:40 msgid "Add new contact" msgstr "添加新联系人 " #: ../../static/t/navbar.html:49 msgid "Day view" msgstr "天视图 " #: ../../static/t/navbar.html:55 msgid "Month view" msgstr "月视图 " #: ../../static/t/navbar.html:61 msgid "Add new event" msgstr "添加新事件 " #: ../../static/t/navbar.html:70 msgid "Calendar list" msgstr "日历列表 " #: ../../static/t/navbar.html:79 msgid "View tasks" msgstr "查看任务 " #: ../../static/t/navbar.html:85 msgid "Add new task" msgstr "添加新任务 " #: ../../static/t/navbar.html:94 msgid "View notes" msgstr "查看备注 " #: ../../static/t/navbar.html:101 msgid "Add new note" msgstr "添加新的注释 " #: ../../static/t/navbar.html:110 msgid "Refresh message list" msgstr "刷新消息列表 " #: ../../static/t/navbar.html:122 msgid "Write mail" msgstr "写邮件 " #: ../../static/t/navbar.html:132 msgid "Wiki home" msgstr "Wiki 回家 " #: ../../static/t/navbar.html:139 msgid "Edit this page" msgstr "编辑此页 " #: ../../static/t/navbar.html:145 msgid "History" msgstr "历史 " #: ../../static/t/navbar.html:154 msgid "New blog post" msgstr "" #: ../../static/t/navbar.html:162 msgid "Skip this room" msgstr "跳过这间屋子 " #: ../../static/t/msg_listview.html:18 msgid "Loading messages from server, please wait" msgstr "从服务器加载的邮件,请稍候 " #: ../../static/t/msg_listview.html:24 msgid "Open in new window" msgstr "在新窗口中打开 " #: ../../static/t/msg_listview.html:26 msgid "Copy" msgstr "副本 " #: ../../static/t/view_mailq/message.html:6 msgid "Originaly posted in: " msgstr "" #: ../../static/t/view_mailq/header.html:15 msgid "Refresh this page" msgstr "刷新此页 " #: ../../static/t/view_mailq/header.html:21 msgid "Message ID" msgstr "消息 ID " #: ../../static/t/view_mailq/header.html:23 msgid "Date/time submitted" msgstr "提交的日期/时间 " #: ../../static/t/view_mailq/header.html:25 #, fuzzy msgid "Next attempt" msgstr "上次尝试 " #: ../../static/t/view_mailq/header.html:29 msgid "Recipients" msgstr "收件人 " #: ../../static/t/view_mailq/footer_empty.html:4 msgid "The queue is empty." msgstr "队列为空 " #: ../../static/t/view_mailq/footer_empty.html:9 #: ../../static/t/view_mailq/footer.html:5 msgid "You do not have permission to view this resource." msgstr "您没有查看此资源的权限。 " #: ../../static/t/get_logged_in.html:5 msgid "You must be logged in to access this page." msgstr "您必须登录访问此页。 " #: ../../static/t/get_logged_in.html:9 #: ../../static/t/edit_message/attachments_pane.html:3 msgid "Close window" msgstr "关闭窗口 " #: ../../static/t/get_logged_in.html:55 msgid "Log in using a user name and password" msgstr "使用用户名和密码登录 " #: ../../static/t/get_logged_in.html:60 ../../static/t/get_logged_in.html:75 msgid "Password:" msgstr "密码: " #: ../../static/t/get_logged_in.html:65 ../../static/t/get_logged_in.html:69 msgid "New user? Register now" msgstr "新用户?立即注册 " #: ../../static/t/get_logged_in.html:70 msgid "" "enter the name and password you wish to use, and click "New User." " msgstr "输入的名称和密码,您想要使用,并单击 "新用户."" #: ../../static/t/get_logged_in.html:83 msgid "Log in using OpenID" msgstr "使用 OpenID 登录 " #: ../../static/t/get_logged_in.html:85 msgid "OpenID URL:" msgstr "OpenID 的 URL: " #: ../../static/t/get_logged_in.html:92 #, fuzzy msgid "Log in using Google" msgstr "使用 OpenID 登录 " #: ../../static/t/get_logged_in.html:97 #, fuzzy msgid "Log in using Yahoo" msgstr "使用 OpenID 登录 " #: ../../static/t/get_logged_in.html:102 #, fuzzy msgid "Log in using AOL or AIM" msgstr "使用 OpenID 登录 " #: ../../static/t/get_logged_in.html:104 msgid "Enter your AOL or AIM screen name:" msgstr "" #: ../../static/t/get_logged_in.html:115 msgid "Please wait" msgstr "" #: ../../static/t/summary/page.html:4 msgid "Summary page for " msgstr "的摘要页 " #: ../../static/t/summary/page.html:21 msgid "Messages" msgstr "邮件 " #: ../../static/t/summary/page.html:39 msgid "Today on your calendar" msgstr "今天 & nbsp; 对 & nbsp; 你 & nbsp; 日历 " #: ../../static/t/summary/page.html:51 #, fuzzy msgid "Who‘s online now" msgstr "谁的 & nbsp; 在线 & nbsp; 现在 " #: ../../static/t/summary/page.html:60 msgid "About this server" msgstr "关于 & nbsp; 此 & nbsp; 服务器 " #: ../../static/t/summary/page.html:63 msgid "You are connected to" msgstr "" #: ../../static/t/summary/page.html:64 #, fuzzy msgid "running" msgstr "调整" #: ../../static/t/summary/page.html:65 #, fuzzy msgid "with" msgstr "第五届 " #: ../../static/t/summary/page.html:66 msgid "server build" msgstr "" #: ../../static/t/summary/page.html:67 #, fuzzy msgid "and located in" msgstr "然后" #: ../../static/t/summary/page.html:68 #, fuzzy msgid "Your system administrator is" msgstr "系统管理员的名称 " #: ../../static/t/edit_message/attachments_pane.html:16 msgid "Attach file" msgstr "附加文件" #: ../../static/t/edit_message/attachments_pane.html:21 msgid "Upload" msgstr "上传 " #: ../../static/t/edit_message/section_attach_select.html:4 msgid "Remove" msgstr "删除 " #: ../../static/t/loggedinas.html:3 msgid "Logged in as" msgstr "作为登录 " #: ../../static/t/loggedinas.html:6 msgid "Not logged in." msgstr "未登录。 " #~ msgid "A script by that name already exists." #~ msgstr "脚本通过该名称已存在" #~ msgid "" #~ "A new script has been created. Return to the script editing screen to " #~ "edit and activate it." #~ msgstr "已创建一个新的脚本。返回脚本编辑屏幕编辑,并将其激活。" #~ msgid "Create" #~ msgstr "创建" #~ msgid "Delete script" #~ msgstr "删除脚本" #~ msgid "Delete this script?" #~ msgstr "删除此脚本吗?" #~ msgid "Move rule up" #~ msgstr "向上移动规则" #~ msgid "Move rule down" #~ msgstr "向下移动规则" #~ msgid "Delete rule" #~ msgstr "删除规则" #~ msgid "" #~ "You are connected to %s, running %s with %s, server build %s and located " #~ "in %s. Your system administrator is %s." #~ msgstr "" #~ "您连接到 %s,运行服务器生成 %s%s %s 与位于 %s。%s 您的系统管理员联系。 " #~ msgid "Reset form" #~ msgstr "重置表单 " #~ msgid "Yes with users list" #~ msgstr "是用户列表 " #~ msgid " - powered by Citadel" #~ msgstr "-由 < href='http://www.citadel.org'> " #~ msgid "Room list" #~ msgstr "房间列表" #~ msgid "View as room list" #~ msgstr "查看房间列表" #~ msgid "View as folder list" #~ msgstr "查看文件夹列表" #~ msgid "Room Listing" #~ msgstr "房间列表" webcit-8.24-dfsg.orig/po/webcit/pl.po0000644000175000017500000033435112271477123017257 0ustar michaelmichael# translation of webcit.po to pl.po # Copyright (C) 2008 - 2009 The Citadel Project - http://www.citadel.org # This file is distributed under the revised BSD license # # WebCit messages for Polish # Copyright (C) 2005 David Given # This file is distributed under GPL v3 # msgid "" msgstr "" "Project-Id-Version: WebCit\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-03-20 01:03-0400\n" "PO-Revision-Date: 2013-11-27 15:35+0000\n" "Last-Translator: Waldemar Ogonowski \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2013-11-28 05:10+0000\n" "X-Generator: Launchpad (build 16847)\n" #: ../../roomops.c:708 ../../roomops.c:1005 ../../sieve.c:364 msgid "Cancelled. Changes were not saved." msgstr "Anulowane. Zmiany nie zostały zapisane." #: ../../roomops.c:838 ../../sieve.c:417 msgid "Your changes have been saved." msgstr "Twoje zmiany zostały zapisane." #: ../../roomops.c:881 #, c-format msgid "User '%s' kicked out of room '%s'." msgstr "User '%s' wyrzucony z pokoju '%s'." #: ../../roomops.c:898 #, c-format msgid "User '%s' invited to room '%s'." msgstr "User '%s' zaproszony do pokoju '%s'." #: ../../roomops.c:927 msgid "Cancelled. No new room was created." msgstr "Anulowane. Nowy pokój nie będzie utworzony." #: ../../roomops.c:1187 msgid "Floor has been deleted." msgstr "Piętro zostało usunięte." #: ../../roomops.c:1211 msgid "New floor has been created." msgstr "Nowe piętro zostało utworzone." #: ../../roomops.c:1290 msgid "Room list view" msgstr "Lista pokoi" #: ../../roomops.c:1293 msgid "Show empty floors" msgstr "Pokaż puste piętra" #: ../../roomviews.c:50 msgid "Bulletin Board" msgstr "Bulletin Board" #: ../../roomviews.c:51 msgid "Mail Folder" msgstr "Folder poczty" #: ../../roomviews.c:52 msgid "Address Book" msgstr "Książka adresowa" #: ../../roomviews.c:53 ../../static/t/iconbar.html:24 #: ../../static/t/iconbar/edit.html:55 msgid "Calendar" msgstr "Kalendarz" #: ../../roomviews.c:54 msgid "Task List" msgstr "Lista zadań" #: ../../roomviews.c:55 msgid "Notes List" msgstr "Lista notatek" #: ../../roomviews.c:56 msgid "Wiki" msgstr "Wiki" #: ../../roomviews.c:57 msgid "Calendar List" msgstr "Lista kalendarza" #: ../../roomviews.c:58 msgid "Journal" msgstr "Dziennik" #: ../../roomviews.c:59 msgid "Drafts" msgstr "Wersje robocze" #: ../../roomviews.c:60 msgid "Blog" msgstr "Blog" #: ../../tasks.c:93 msgid "Completed?" msgstr "Zakończone ?" #: ../../tasks.c:95 msgid "Name of task" msgstr "Nazwa zadania" #: ../../tasks.c:97 msgid "Date due" msgstr "Data zakończenia" #: ../../tasks.c:99 msgid "Category" msgstr "Kategoria" #: ../../tasks.c:101 msgid "Show All" msgstr "Wyświetl wszystkie" #: ../../tasks.c:223 msgid "Edit task" msgstr "Edycja zadania" #: ../../tasks.c:242 ../../calendar.c:98 ../../calendar_view.c:298 #: ../../calendar_view.c:959 ../../calendar_view.c:1003 #: ../../calendar_view.c:1084 msgid "Summary:" msgstr "Podsumowanie:" #: ../../tasks.c:253 msgid "Start date:" msgstr "Data rozpoczęcia:" #: ../../tasks.c:261 ../../tasks.c:291 msgid "No date" msgstr "Brak daty" #: ../../tasks.c:265 ../../tasks.c:294 msgid "or" msgstr "albo" #: ../../tasks.c:279 ../../tasks.c:308 msgid "Time associated" msgstr "Powiązanie czasu" #: ../../tasks.c:283 msgid "Due date:" msgstr "Data zkończenia:" #: ../../tasks.c:312 msgid "Completed:" msgstr "Zakończone:" #: ../../tasks.c:323 msgid "Category:" msgstr "Kategoria:" #: ../../tasks.c:333 ../../calendar.c:159 ../../static/t/files.html:12 msgid "Description:" msgstr "Opis:" #: ../../tasks.c:351 ../../event.c:764 msgid "Save" msgstr "Zapisz" #: ../../tasks.c:352 ../../event.c:765 ../../static/t/aide/inet/section.html:5 #: ../../static/t/view_blog/comment.html:12 #: ../../static/t/view_blog/post.html:15 ../../static/t/view_message.html:32 #: ../../static/t/navbar.html:116 ../../static/t/msg_listview.html:27 msgid "Delete" msgstr "Usuń" #: ../../tasks.c:353 ../../vcard_edit.c:1216 ../../paging.c:66 #: ../../event.c:767 ../../sysmsgs.c:69 ../../who.c:200 ../../auth.c:812 #: ../../static/t/edit_message.html:135 ../../static/t/confirmlogoff.html:4 msgid "Cancel" msgstr "Anuluj" #: ../../tasks.c:423 ../../calendar_view.c:1379 msgid "Untitled Task" msgstr "Nieopisane zadanie" #: ../../fmt_date.c:310 msgid "Time format" msgstr "Format czasu" #: ../../listsub.c:54 ../../static/t/listsub/display.html:5 msgid "List subscription" msgstr "Lista subskrypcji" #: ../../listsub.c:67 ../../static/t/listsub/display.html:9 msgid "List subscribe/unsubscribe" msgstr "List" #: ../../listsub.c:87 ../../static/t/listsub/display.html:15 #: ../../static/t/listsub/display.html:34 msgid "Confirmation request sent" msgstr "Żądanie potwierdzenia wysłany" #: ../../listsub.c:89 #, c-format msgid "" "You are subscribing %s to the %s mailing list. The " "listserver has sent you an e-mail with one additional Web link for you to " "click on to confirm your subscription. This extra step is for your " "protection, as it prevents others from being able to subscribe you to lists " "without your consent.

    Please click on the link which is being e-" "mailed to you and your subscription will be confirmed.
    \n" msgstr "" "Zapisałeś się %s do %s listy dyskusyjnej. List serwer " "wysłał Ci wiadomość e-mail z linkiem do strony www, aby kliknąć, aby " "potwierdzić subskrypcję. Ten dodatkowy krok jest dla ochrony, ponieważ " "zapobiega innym zapisać się do listy bez twojej zgody.

    Proszę " "kliknąć na link, który dostaniesz via e-mail, Twoja subskrypcja zostanie " "potwierdzona.
    \n" #: ../../listsub.c:102 ../../static/t/listsub/display.html:24 msgid "Go back..." msgstr "Wróc ..." #: ../../listsub.c:253 ../../listsub.c:291 ../../listsub.c:327 #: ../../listsub.c:334 msgid "You need to specify the mailinglist to subscribe to." msgstr "Trzeba określić listę dyskusyjną, aby zapisać się." #: ../../listsub.c:260 ../../listsub.c:298 msgid "You need to specify the email address you'd like to subscribe with." msgstr "Musisz podać adres e-mail, który chcesz zapisać się." #: ../../blogview_renderer.c:58 ../../blogview_renderer.c:74 #, c-format msgid "%d comments" msgstr "%d komentarzy" #: ../../blogview_renderer.c:61 ../../blogview_renderer.c:77 msgid "permalink" msgstr "permalink" #: ../../blogview_renderer.c:302 msgid "Newer posts" msgstr "Nowsze" #: ../../blogview_renderer.c:311 msgid "Older posts" msgstr "Starsze" #: ../../useredit.c:629 msgid "" "An error occurred while trying to create or edit this address book entry." msgstr "" "Wystąpił błąd podczas tworzenia lub edycji tego wpisu książki adresowej.." #: ../../useredit.c:717 msgid "Changes were not saved." msgstr "Zmiany nie zostały zapisane." #: ../../useredit.c:782 msgid "A new user has been created." msgstr "Nowy użytkownik został stworzony." #: ../../useredit.c:786 msgid "" "You are attempting to create a new user from within Citadel while running in " "host based authentication mode. In this mode, you must create new users on " "the host system, not within Citadel." msgstr "" "Próbujesz utworzyć nowego użytkownika od wewnątrz Citadel podczas pracy w " "trybie uwierzytelniania hosta. W tym trybie, należy utworzyć nowego " "użytkownika w systemie hosta, a nie w Citadel." #: ../../bbsview_renderer.c:312 msgid "Go to page: " msgstr "Skocz do strony: " #: ../../bbsview_renderer.c:354 msgid "First" msgstr "Pierwszej" #: ../../bbsview_renderer.c:360 msgid "Last" msgstr "Ostatniej" #: ../../graphics.c:56 msgid "Graphics upload has been cancelled." msgstr "Przesyłanie pliku zostało anulowane." #: ../../graphics.c:62 msgid "You didn't upload a file." msgstr "Nie przesłałeś pliku." #: ../../graphics.c:112 msgid "your photo" msgstr "Twoje zdjęcie" #: ../../graphics.c:119 msgid "the icon for this room" msgstr "ikona dla tego pokoju" #: ../../graphics.c:127 msgid "the Greetingpicture for the login prompt" msgstr "obrazek graficzny przy logowania" #: ../../graphics.c:135 msgid "the Logoff banner picture" msgstr "obrazek przy wyloggowaniu" #: ../../graphics.c:146 msgid "the icon for this floor" msgstr "ikona dla piętra" #: ../../calendar_tools.c:100 msgid "Hour: " msgstr "Godzina: " #: ../../calendar_tools.c:120 msgid "Minute: " msgstr "Minuty: " #: ../../calendar_tools.c:191 msgid "(status unknown)" msgstr "(status nieznany)" #: ../../calendar_tools.c:207 msgid "(needs action)" msgstr "(potrzebne działanie)" #: ../../calendar_tools.c:210 msgid "(accepted)" msgstr "(zaakceptowany)" #: ../../calendar_tools.c:213 msgid "(declined)" msgstr "(odrzucony)" #: ../../calendar_tools.c:216 msgid "(tenative)" msgstr "(niepewny)" #: ../../calendar_tools.c:219 msgid "(delegated)" msgstr "(odelegowany)" #: ../../calendar_tools.c:222 msgid "(completed)" msgstr "(zakoczony)" #: ../../calendar_tools.c:225 msgid "(in process)" msgstr "(w trakcie)" #: ../../calendar_tools.c:228 msgid "(none)" msgstr "(nieokreślony)" #: ../../notes.c:343 msgid "Click on any note to edit it." msgstr "Kliknij na jakąkolwiek notatkę w celu edycji." #: ../../vcard_edit.c:175 ../../vcard_edit.c:178 msgid "(no name)" msgstr "(brak nazwy)" #: ../../vcard_edit.c:443 msgid " (work)" msgstr " (praca)" #: ../../vcard_edit.c:445 msgid " (home)" msgstr " (dom)" #: ../../vcard_edit.c:447 msgid " (cell)" msgstr " (mobile)" #: ../../vcard_edit.c:458 ../../vcard_edit.c:1120 msgid "Address:" msgstr "Adres:" #: ../../vcard_edit.c:526 msgid "Telephone:" msgstr "Telefon:" #: ../../vcard_edit.c:531 msgid "E-mail:" msgstr "E-mail:" #: ../../vcard_edit.c:779 msgid "This address book is empty." msgstr "Ksiązka adresowa pusta." #: ../../vcard_edit.c:793 msgid "An internal error has occurred." msgstr "Wystąpił błąd wewnętrzny." #: ../../vcard_edit.c:944 msgid "Error" msgstr "Błąd" #: ../../vcard_edit.c:1048 msgid "Edit contact information" msgstr "Edycja informacji kontaktu" #: ../../vcard_edit.c:1068 msgid "Prefix" msgstr "Prefiks" #: ../../vcard_edit.c:1068 msgid "First Name" msgstr "Imię" #: ../../vcard_edit.c:1068 msgid "Middle Name" msgstr "Drugie imię" #: ../../vcard_edit.c:1068 msgid "Last Name" msgstr "Nazwisko" #: ../../vcard_edit.c:1068 msgid "Suffix" msgstr "Sufiks" #: ../../vcard_edit.c:1089 msgid "Display name:" msgstr "Wyświetlana nazwa:" #: ../../vcard_edit.c:1096 msgid "Title:" msgstr "Stanowisko:" #: ../../vcard_edit.c:1103 msgid "Organization:" msgstr "Organizacja:" #: ../../vcard_edit.c:1114 msgid "PO box:" msgstr "Skrytka pocztowa:" #: ../../vcard_edit.c:1130 msgid "City:" msgstr "Miejscowość:" #: ../../vcard_edit.c:1136 msgid "State:" msgstr "Stan/województwo:" #: ../../vcard_edit.c:1142 msgid "ZIP code:" msgstr "Kod pocztowy:" #: ../../vcard_edit.c:1148 msgid "Country:" msgstr "Państwo:" #: ../../vcard_edit.c:1158 msgid "Home telephone:" msgstr "Domowy telefon:" #: ../../vcard_edit.c:1164 msgid "Work telephone:" msgstr "Praca telefon:" #: ../../vcard_edit.c:1170 msgid "Mobile telephone:" msgstr "Komórkowy:" #: ../../vcard_edit.c:1176 msgid "Fax number:" msgstr "Fax numer:" #: ../../vcard_edit.c:1187 msgid "Primary Internet e-mail address" msgstr "Główny adres email" #: ../../vcard_edit.c:1194 msgid "Internet e-mail aliases" msgstr "Internetowe email aliasy" #: ../../vcard_edit.c:1215 ../../sysmsgs.c:67 msgid "Save changes" msgstr "Zapisz zmiany" #: ../../vcard_edit.c:1261 msgid "Unable to enter the room to save your message" msgstr "Nie można wejść do pokoju, aby zapisać wiadomość" #: ../../vcard_edit.c:1265 msgid "Aborting." msgstr "Przerwane." #: ../../vcard_edit.c:1297 ../../vcard_edit.c:1341 ../../auth.c:367 #: ../../auth.c:397 msgid "An error has occurred." msgstr "Wystąpił błąd." #: ../../vcard_edit.c:1399 msgid "Could Not decode vcard photo\n" msgstr "Nie można zdekodować vCard zdjęcia\n" #: ../../preferences.c:880 msgid "Cancelled. No settings were changed." msgstr "Anulowane. Ustawienia nie będą zmienione." #: ../../preferences.c:1092 msgid "Make this my start page" msgstr "Ustaw jako stronę startową" #: ../../preferences.c:1130 msgid "This isn't allowed to become the start page." msgstr "To nie może ustawić jako strona startowa." #: ../../preferences.c:1132 msgid "You no longer have a start page selected." msgstr "Nie masz strony startowej ustawionej." #: ../../preferences.c:1182 msgid "Prefered startpage" msgstr "Zalecana strona stratow" #: ../../calendar.c:76 msgid "Meeting invitation" msgstr "Zaproszenie na spotkanie" #: ../../calendar.c:79 msgid "Attendee's reply to your invitation" msgstr "Odpowiedź uczestnika na zaproszenie" #: ../../calendar.c:82 msgid "Published event" msgstr "Opublikowano wydarzenie" #: ../../calendar.c:85 msgid "This is an unknown type of calendar item." msgstr "To jest nieznany rodzaj elementu kalendarza." #: ../../calendar.c:107 ../../calendar_view.c:306 ../../calendar_view.c:964 #: ../../calendar_view.c:1008 ../../calendar_view.c:1089 msgid "Location:" msgstr "Lokalizacja:" #: ../../calendar.c:132 ../../calendar_view.c:351 ../../calendar_view.c:970 msgid "Date:" msgstr "Data:" #: ../../calendar.c:139 ../../calendar_view.c:373 ../../calendar_view.c:1013 #: ../../calendar_view.c:1099 msgid "Starting date/time:" msgstr "Data rozpoczęcia/czas:" #: ../../calendar.c:150 ../../calendar_view.c:376 ../../calendar_view.c:1015 #: ../../calendar_view.c:1101 msgid "Ending date/time:" msgstr "Data zakończenia/czas:" #: ../../calendar.c:168 ../../event.c:90 msgid "Recurrence" msgstr "Powtarzanie" #: ../../calendar.c:169 ../../event.c:505 msgid "This is a recurring event" msgstr "To jest wydarzenie cykliczne" #: ../../calendar.c:178 msgid "Attendee:" msgstr "Uczestnik:" #: ../../calendar.c:218 #, c-format msgid "This is an update of '%s' which is already in your calendar." msgstr "Jest to zmiana '%s', które znajduje się już w kalendarzu." #: ../../calendar.c:222 #, c-format msgid "" "This event would conflict with '%s' which is already in your calendar." msgstr "Wydarzenie to byłoby sprzeczne z '%s', które jest już w kalendarzu." #: ../../calendar.c:227 msgid "Update:" msgstr "Aktualizacja:" #: ../../calendar.c:228 msgid "CONFLICT:" msgstr "KONFLIKT:" #: ../../calendar.c:251 msgid "How would you like to respond to this invitation?" msgstr "Jak chcesz odpowiedzieć na to zaproszenie?" #: ../../calendar.c:252 msgid "Accept" msgstr "Akceptuj" #: ../../calendar.c:253 msgid "Tentative" msgstr "Niepwne" #: ../../calendar.c:254 msgid "Decline" msgstr "Odmowa" #: ../../calendar.c:271 msgid "Click Update to accept this reply and update your calendar." msgstr "" "Kliknij Aktualizacja , aby zaakceptować tę odpowiedź i aktualizować " "swój kalendarz." #: ../../calendar.c:272 msgid "Update" msgstr "Zaktualizuj" #: ../../calendar.c:273 msgid "Ignore" msgstr "Ignoruj" #: ../../calendar.c:295 msgid "There was an error parsing this calendar item." msgstr "Wystąpił błąd podczas analizowania tego elementu kalendarza." #: ../../calendar.c:328 msgid "" "You have accepted this meeting invitation. It has been entered into your " "calendar." msgstr "" "Zaakceptowałeś zaproszenie na spotkanie. Zostało wpisana do Twojego " "kalendarza." #: ../../calendar.c:332 msgid "" "You have tentatively accepted this meeting invitation. It has been " "'pencilled in' to your calendar." msgstr "" "Wstępnie zaakceptowałeś zaproszenie na spotkanie. Zostało \"zaznaczone\" w " "Twoim kalendarzu." #: ../../calendar.c:336 msgid "" "You have declined this meeting invitation. It has not been entered " "into your calendar." msgstr "" "Odrzuciłeś zaproszenie na spotkanie. Zaproszenie nie będzie " "wpisane do Twojego kalendarza." #: ../../calendar.c:341 msgid "A reply has been sent to the meeting organizer." msgstr "Odpowiedź została wysłana do organizatora spotkania." #. / Translators: RSVP aka Répondez s'il-vous-plaît Is the term #. / that the recipient of an ical-invitation should please #. / answer this request. #: ../../calendar.c:376 msgid "Your calendar has been updated to reflect this RSVP." msgstr "Twój kalendarz został zaktualizowany, aby odzwierciedlić RSVP." #: ../../calendar.c:378 msgid "" "You have chosen to ignore this RSVP. Your calendar has not been " "updated." msgstr "" "Wybrałeś ignorowanie ten RSVP. Twój kalendarz nie zostanie " "zaktualizowany." #: ../../calendar.c:932 msgid "Calendar day view begins at:" msgstr "Widok kalendarza dziennego zaczyna się od:" #: ../../calendar.c:933 msgid "Calendar day view ends at:" msgstr "Widok kalendarza dziennego kńczy się na:" #: ../../calendar.c:934 msgid "Week starts on:" msgstr "Tydzień zaczyna się od:" #: ../../paging.c:35 msgid "Send instant message" msgstr "Wyślij wiadomość" #: ../../paging.c:43 msgid "Send an instant message to: " msgstr "Wyślij wiadomość do: " #: ../../paging.c:57 msgid "Enter message text:" msgstr "Wpisz tekst wiadomości:" #: ../../paging.c:65 ../../static/t/edit_message.html:109 msgid "Send message" msgstr "Wyślij wiadomość" #: ../../paging.c:84 msgid "Message was not sent." msgstr "Wiadomość nie została wysłana." #: ../../paging.c:95 msgid "Message has been sent to " msgstr "Wiadomość została wysłana do " #: ../../iconbar.c:328 msgid "Iconbar Setting" msgstr "Ustawienia ikon" #. #. * Set to 'unknown' right from the beginning. Unless we learn #. * something else, that's what we'll go with. #. #: ../../availability.c:148 msgid "availability unknown" msgstr "dostępność nieznana" #: ../../availability.c:169 msgid "free" msgstr "wolny" #: ../../availability.c:179 msgid "BUSY" msgstr "ZAJĘTY" #: ../../serv_func.c:193 msgid "" "This server is already serving its maximum number of users and cannot accept " "any additional logins at this time. Please try again later or contact your " "system administrator." msgstr "" "Ten serwer obsługuje już maksymalną liczbę użytkowników i nie może " "przyjmować żadnych dodatkowych loginów w tym czasie. Spróbuj ponownie " "później lub skontaktuj się z administratorem systemu." #: ../../serv_func.c:198 ../../serv_func.c:227 msgid "Received unexpected answer from Citadel server; bailing out." msgstr "Otrzymałeś nieoczekiwaną odpowiedź z serwera Citadel; ratuj się." #: ../../serv_func.c:236 #, c-format msgid "" "You are connected to a Citadel server running Citadel %d.%02d. \n" "In order to run this version of WebCit you must also have Citadel %d.%02d or " "newer.\n" "\n" "\n" msgstr "" "Jesteś podłączony do serwera z systemem Citadel %d.%02d. \n" "W celu uruchomienia tej wersji WebCit musisz mieć Citadel %d.%02d lub " "nowszy.\n" "\n" "\n" #: ../../event.c:70 msgid "seconds" msgstr "sekundy" #: ../../event.c:71 msgid "minutes" msgstr "minuty" #: ../../event.c:72 msgid "hours" msgstr "godzin(y)" #: ../../event.c:73 msgid "days" msgstr "dni" #: ../../event.c:74 msgid "weeks" msgstr "tygodni" #: ../../event.c:75 msgid "months" msgstr "miesięcy" #: ../../event.c:76 msgid "years" msgstr "lat(a)" #: ../../event.c:77 msgid "never" msgstr "nigdy" #: ../../event.c:81 msgid "first" msgstr "pierwszy(a)" #: ../../event.c:82 msgid "second" msgstr "drugi" #: ../../event.c:83 msgid "third" msgstr "trzeci(a)" #: ../../event.c:84 msgid "fourth" msgstr "czwarty(a)" #: ../../event.c:85 msgid "fifth" msgstr "piąty(a)" #: ../../event.c:88 msgid "Event" msgstr "Wydarzenie" #: ../../event.c:89 ../../event.c:437 ../../event.c:449 msgid "Attendees" msgstr "Uczestnicy" #: ../../event.c:167 msgid "Add or edit an event" msgstr "Dodaj lub edytuj zdarzenie" #: ../../event.c:206 ../../static/t/iconbar.html:13 #: ../../static/t/iconbar/edit.html:29 msgid "Summary" msgstr "Zestawienie" #: ../../event.c:217 msgid "Location" msgstr "Lokalizacja:" #: ../../event.c:228 ../../calendar_view.c:760 msgid "Start" msgstr "Początek" #: ../../event.c:271 ../../calendar_view.c:957 ../../calendar_view.c:986 msgid "All day event" msgstr "Wydarzenie całodniowe" #: ../../event.c:277 ../../calendar_view.c:761 msgid "End" msgstr "Koniec" #: ../../event.c:327 ../../static/t/iconbar.html:34 #: ../../static/t/iconbar/edit.html:49 msgid "Notes" msgstr "Notes" #: ../../event.c:369 msgid "Organizer" msgstr "Notes" #: ../../event.c:374 msgid "(you are the organizer)" msgstr "(jesteś organizatorem)" #: ../../event.c:392 msgid "Show time as:" msgstr "Pokaż czas jako:" #: ../../event.c:415 msgid "Free" msgstr "Wolny" #: ../../event.c:423 msgid "Busy" msgstr "Zajety" #: ../../event.c:440 msgid "(One per line)" msgstr "(Jeden na linie)" #: ../../event.c:450 ../../static/t/edit_message.html:143 #: ../../static/t/iconbar.html:29 ../../static/t/iconbar/edit.html:42 msgid "Contacts" msgstr "Kontakty" #: ../../event.c:513 msgid "Recurrence rule" msgstr "Zasady powtarzania" #: ../../event.c:517 msgid "Repeats every" msgstr "Powtarzaj co każdy" #. begin 'weekday_selector' div #: ../../event.c:535 msgid "on these weekdays:" msgstr "dzień tygodnia:" #: ../../event.c:593 #, c-format msgid "on day %s%d%s of the month" msgstr "dzień %s%d%s miesiąca" #: ../../event.c:602 ../../event.c:664 msgid "on the " msgstr "w " #: ../../event.c:626 msgid "of the month" msgstr "w miesiącu" #: ../../event.c:655 msgid "every " msgstr "co " #: ../../event.c:656 msgid "year on this date" msgstr "roku o tej datcie" #: ../../event.c:688 ../../static/t/msg_listselector_bottom.html:7 #: ../../static/t/msg_listselector_top.html:7 msgid "of" msgstr "z" #: ../../event.c:712 msgid "Recurrence range" msgstr "Zakres powtarzania" #: ../../event.c:720 msgid "No ending date" msgstr "Brak daty zakończenia" #: ../../event.c:727 msgid "Repeat this event" msgstr "Powtarzaj to wydarzenie" #: ../../event.c:730 msgid "times" msgstr "razy" #: ../../event.c:738 msgid "Repeat this event until " msgstr "Powtarzaj to wydarzenie aż do " #: ../../event.c:766 msgid "Check attendee availability" msgstr "Sprawdź dostępność uczestników" #: ../../event.c:858 ../../calendar_view.c:272 ../../calendar_view.c:468 #: ../../calendar_view.c:937 msgid "Untitled Event" msgstr "Nie opisane wydarzenie" #: ../../sysmsgs.c:52 #, c-format msgid "Edit %s" msgstr "Edytuj %s" #: ../../sysmsgs.c:55 #, c-format msgid "" "Enter %s below. Text is formatted to the reader's browser. A newline is " "forced by preceding the next line by a blank." msgstr "Wprowadź %s poniżej. Tekst jest sformatowany dla przeglądarki." #: ../../sysmsgs.c:89 #, c-format msgid "Cancelled. %s was not saved." msgstr "Anulowano. %s nie będzie zapisane." #: ../../sysmsgs.c:109 msgid " has been saved." msgstr " zostało zapisane." #: ../../sysmsgs.c:116 ../../sysmsgs.c:117 msgid "Room info" msgstr "Informacj o pokoju" #: ../../sysmsgs.c:122 ../../sysmsgs.c:124 msgid "Your bio" msgstr "Twoje bio" #: ../../calendar_view.c:297 ../../calendar_view.c:958 #: ../../calendar_view.c:1002 ../../calendar_view.c:1083 #: ../../static/t/sieve/display_one.html:20 msgid "From" msgstr "Od" #: ../../calendar_view.c:355 ../../calendar_view.c:974 msgid "Starting date:" msgstr "Data startowa:" #: ../../calendar_view.c:361 ../../calendar_view.c:976 msgid "Ending date:" msgstr "Data zakończenia:" #: ../../calendar_view.c:369 ../../calendar_view.c:1095 msgid "Date/time:" msgstr "Data/czas:" #: ../../calendar_view.c:386 ../../calendar_view.c:980 #: ../../calendar_view.c:1018 ../../calendar_view.c:1105 #: ../../static/t/room/edit/tab_share.html:32 msgid "Notes:" msgstr "Notatki:" #: ../../calendar_view.c:585 ../../calendar_view.c:721 msgid "previous" msgstr "poprzedni" #: ../../calendar_view.c:597 ../../calendar_view.c:733 #: ../../calendar_view.c:1308 msgid "next" msgstr "następny" #: ../../calendar_view.c:756 msgid "Week" msgstr "Tydzień" #: ../../calendar_view.c:758 msgid "Hours" msgstr "Godzin(a/y)" #: ../../calendar_view.c:759 ../../static/t/sieve/display_one.html:22 #: ../../static/t/msg_listview.html:9 msgid "Subject" msgstr "Temat" #: ../../calendar_view.c:1001 ../../calendar_view.c:1024 msgid "Ongoing event" msgstr "W toku wydarzenie" #: ../../messages.c:70 msgid "ERROR:" msgstr "BŁĄD:" #: ../../messages.c:88 msgid "Empty message" msgstr "Puta wiadomość" #: ../../messages.c:1010 msgid "Cancelled. Message was not posted." msgstr "Anulowane. Wiadomość nie została wysłana." #: ../../messages.c:1013 msgid "Automatically cancelled because you have already saved this message." msgstr "Automatycznie anulowane, ponieważ zapisano już tę wiadomość." #: ../../messages.c:1037 msgid "Saved to Drafts failed: " msgstr "Zapisane w Roboczych nie powiodło sie: " #: ../../messages.c:1102 msgid "Refusing to post empty message.\n" msgstr "Odmowa wysłania pustej wiadomości.\n" #: ../../messages.c:1128 msgid "Message has been saved to Drafts.\n" msgstr "Wiadmość została zapisana do Roboczych.\n" #: ../../messages.c:1137 msgid "Message has been sent.\n" msgstr "Wiadomość została wysłana.\n" #: ../../messages.c:1140 msgid "Message has been posted.\n" msgstr "Wiadomość została wysłana.\n" #: ../../messages.c:1679 msgid "The message was not moved." msgstr "Wiadomość nie została przeniesiona." #: ../../messages.c:1719 #, c-format msgid "An error occurred while retrieving this part: %s/%s\n" msgstr "Wystąpił błąd podczas pobierania tej części: %s/%s\n" #: ../../messages.c:1796 #, c-format msgid "An error occurred while retrieving this part: %s\n" msgstr "Wystąpił błąd podczas pobierania tej części: %s\n" #: ../../messages.c:1956 msgid "Attach signature to email messages?" msgstr "Dołączyć podpis do wiadomości e-mail?" #: ../../messages.c:1959 msgid "Use this signature:" msgstr "Użyj tego podpisu:" #: ../../messages.c:1961 msgid "Default character set for email headers:" msgstr "Domyślne kodowanie w nagłówkach e-mail:" #: ../../messages.c:1964 msgid "Preferred email address" msgstr "Preferowany adres e-mail" #: ../../messages.c:1966 msgid "Preferred display name for email messages" msgstr "Preferowana nazwa wyświetlana w wiadomościach e-mail" #: ../../messages.c:1970 msgid "Preferred display name for bulletin board posts" msgstr "Preferowane nazwa wyświetlana w wiadomościach BBS" #: ../../messages.c:1973 msgid "Mailbox view mode" msgstr "Tryb wyświetlania skrzynki pocztowej" #: ../../inetconf.c:110 ../../inetconf.c:119 ../../inetconf.c:133 #: ../../inetconf.c:159 ../../netconf.c:156 ../../netconf.c:183 #: ../../netconf.c:191 ../../netconf.c:239 ../../netconf.c:247 msgid "Invalid Parameter" msgstr "Nieprawidłowy parametr" #: ../../inetconf.c:126 msgid " has been deleted." msgstr " została usunięta." #. added status message #: ../../inetconf.c:144 msgid " added." msgstr " dodana" #: ../../who.c:154 msgid "Edit your session display" msgstr "Edytuj wyświetlanie Twojej sesji" #: ../../who.c:158 msgid "" "This screen allows you to change the way your session appears in the 'Who is " "online' listing. To turn off any 'fake' name you've previously set, simply " "click the appropriate 'change' button without typing anything in the " "corresponding box. " msgstr "" "Ekran ten pozwala zmienić sposób w jaki sesja pojawi się szczególy w \"Kto " "jest online\"\". Aby wyłączyć wszelkie \"fałszywe\" nazwy już wcześniej " "ustawione, wystarczy kliknąć odpowiedni przycisk \"zmiany\" bez wpisywania w " "odpowiednim polu. " #: ../../who.c:171 msgid "Room name:" msgstr "Nazwa pokoju:" #: ../../who.c:176 msgid "Change room name" msgstr "Zmień nazę pokoju" #: ../../who.c:180 msgid "Host name:" msgstr "Nazwa komputera:" #: ../../who.c:185 msgid "Change host name" msgstr "Zmień nazwe komputera" #: ../../who.c:190 ../../static/t/aide/edituser/detailview.html:20 #: ../../static/t/openid_manual_create.html:9 #: ../../static/t/get_logged_in.html:57 ../../static/t/get_logged_in.html:72 msgid "User name:" msgstr "Nazwa użytkownika" #: ../../who.c:195 msgid "Change user name" msgstr "Zmień nazwę użytkownika" #: ../../siteconfig.c:46 ../../siteconfig.c:64 ../../roomlist.c:44 #: ../../roomlist.c:394 ../../static/t/room/edit/tab_expire.html:72 #: ../../static/t/room/edit/tab_config.html:149 #: ../../static/t/room/edit/tab_access.html:42 msgid "Higher access is required to access this function." msgstr "Wyższa poziom dostępu jest niezbędny do korzystania z tej funkcji" #: ../../siteconfig.c:256 msgid "" "WARNING: Failed to parse Server Config; do you run a to new citserver?" msgstr "" "UWAGA: Nie można przetworzyć Server Config, czy uruchomić nowy citserve?" #: ../../siteconfig.c:319 msgid "Your system configuration has been updated." msgstr "Konfiguracja systemu została zaktualizowany." #: ../../wiki.c:69 ../../wiki.c:162 ../../wiki.c:282 #, c-format msgid "There is no room called '%s'." msgstr "Nie ma pokoju o nazwie '%s'." #: ../../wiki.c:76 #, c-format msgid "'%s' is not a Wiki room." msgstr "'%s' pokój nie jest Wiki." #: ../../wiki.c:110 #, c-format msgid "There is no page called '%s' here." msgstr "Brak strony o nazwie '%s' tutaj." #: ../../wiki.c:112 msgid "" "Select the 'Edit this page' link in the room banner if you would like to " "create this page." msgstr "" "Wybierz link w banerze pokoju \"Edytuj stronę\" , jeśli chcesz utworzyć tę " "stronę." #: ../../wiki.c:181 ../../static/t/msg_listview.html:11 msgid "Date" msgstr "Data" #: ../../wiki.c:182 msgid "Author" msgstr "Autor" #: ../../wiki.c:209 ../../wiki.c:218 msgid "(show)" msgstr "(pokaż)" #: ../../wiki.c:211 ../../static/t/navbar.html:145 msgid "Current version" msgstr "Bieżąca wersja" #: ../../wiki.c:223 msgid "(revert)" msgstr "(cofnij)" #: ../../wiki.c:300 msgid "Page title" msgstr "Tytuł strony" #: ../../webcit.c:316 msgid "Authorization Required" msgstr "Wymagana autoryzacja" #: ../../webcit.c:324 #, c-format msgid "" "The resource you requested requires a valid username and password. You could " "not be logged in: %s\n" msgstr "" "Zasób który prosiłeś wymaga poprawnej nazwy użytkownika i hasło. Nie można " "się zalogować: %s\n" #: ../../webcit.c:647 ../../auth.c:526 msgid "" "This program was unable to connect or stay connected to the Citadel server. " "Please report this problem to your system administrator." msgstr "" "Ten program nie był w stanie się połączyć . Proszę zgłosić ten problem do " "administratora systemu." #: ../../webcit.c:654 ../../auth.c:532 msgid "Read More..." msgstr "Czytaj więcej ..." #: ../../smtpqueue.c:134 ../../static/t/aide/ignetconf/section.html:5 #: ../../static/t/view_mailq/message.html:2 msgid "(Delete)" msgstr "(Usuń)" #: ../../smtpqueue.c:334 msgid "First Attempt pending" msgstr "Pierwsza próba oczekuje" #: ../../roomlist.c:99 msgid "My Folders" msgstr "Moje Foldery" #: ../../downloads.c:289 #, c-format msgid "An error occurred while retrieving this file: %s\n" msgstr "Wystąpił błąd podczas pobierania tego pliku: %s\n" #: ../../roomtokens.c:572 msgid "file" msgstr "plik" #: ../../roomtokens.c:574 msgid "files" msgstr "pliki" #: ../../summary.c:128 msgid "(None)" msgstr "(Brak)" #: ../../summary.c:184 msgid "(Nothing)" msgstr "(Brak)" #: ../../msg_renderers.c:579 ../../static/t/who/bio.html:15 msgid "edit" msgstr "edycja" #: ../../msg_renderers.c:1119 msgid "I don't know how to display " msgstr "Nie wiem, jak wyświetlić " #: ../../msg_renderers.c:1353 msgid "(no subject)" msgstr "(brak tematu)" #: ../../addressbook_popup.c:186 msgid "Add" msgstr "Dodaj" #. an erased user #: ../../auth.c:30 ../../static/t/aide/edituser/detailview.html:43 #: ../../static/t/aide/siteconfig/tab_access.html:40 #: ../../static/t/aide/siteconfig/tab_access.html:51 msgid "Deleted" msgstr "Usuń" #. a new user #: ../../auth.c:33 ../../static/t/aide/edituser/detailview.html:44 #: ../../static/t/aide/siteconfig/tab_access.html:41 #: ../../static/t/aide/siteconfig/tab_access.html:52 #: ../../static/t/get_logged_in.html:79 msgid "New User" msgstr "Nowy użytkownik" #. a trouble maker #: ../../auth.c:36 ../../static/t/aide/edituser/detailview.html:45 #: ../../static/t/aide/siteconfig/tab_access.html:42 #: ../../static/t/aide/siteconfig/tab_access.html:53 msgid "Problem User" msgstr "Problematyczny użytkownik" #. user with normal privileges #: ../../auth.c:39 ../../static/t/aide/edituser/detailview.html:46 #: ../../static/t/aide/siteconfig/tab_access.html:43 #: ../../static/t/aide/siteconfig/tab_access.html:54 msgid "Local User" msgstr "Lokalny użytkownik" #. a user that may access network resources #: ../../auth.c:42 ../../static/t/aide/edituser/detailview.html:47 #: ../../static/t/aide/siteconfig/tab_access.html:44 #: ../../static/t/aide/siteconfig/tab_access.html:55 msgid "Network User" msgstr "Sieciowy użytkownik" #. a moderator #: ../../auth.c:45 ../../static/t/aide/edituser/detailview.html:48 #: ../../static/t/aide/siteconfig/tab_access.html:45 #: ../../static/t/aide/siteconfig/tab_access.html:56 msgid "Preferred User" msgstr "Preferowany użytkownik" #. chief #: ../../auth.c:48 ../../static/t/aide/edituser/detailview.html:49 #: ../../static/t/aide/siteconfig/tab_access.html:46 #: ../../static/t/aide/siteconfig/tab_access.html:57 msgid "Admin" msgstr "Admin" #: ../../auth.c:513 ../../static/t/iconbar.html:80 #: ../../static/t/confirmlogoff.html:3 #: ../../static/t/menu/basic_commands.html:19 msgid "Log off" msgstr "Wyloguj" #: ../../auth.c:537 msgid "Log in again" msgstr "Zaloguj ponownie" #: ../../auth.c:585 ../../static/t/aide/usermanagement.html:3 msgid "Validate new users" msgstr "Zatwierdź nowych użytkowników" #: ../../auth.c:605 msgid "No users require validation at this time." msgstr "Obecnie żaden użytkownik nie wymaga zatwierdzenia." #: ../../auth.c:655 msgid "very weak" msgstr "bardzo słabe" #: ../../auth.c:658 msgid "weak" msgstr "słabe" #: ../../auth.c:661 msgid "ok" msgstr "ok" #: ../../auth.c:665 msgid "strong" msgstr "mocne" #: ../../auth.c:683 #, c-format msgid "Current access level: %d (%s)\n" msgstr "Aktualny poziom dostępu: %d (%s)\n" #: ../../auth.c:691 msgid "Select access level for this user:" msgstr "Wybierz poziom dostępu dla tego użytkownika:" #: ../../auth.c:776 ../../static/t/menu/your_info.html:4 msgid "Change your password" msgstr "Zmień swoje hasło" #: ../../auth.c:800 msgid "Enter new password:" msgstr "Wprowadź nowe hasło:" #: ../../auth.c:804 msgid "Enter it again to confirm:" msgstr "Wprowadź je ponownie, aby potwierdzić:" #: ../../auth.c:810 msgid "Change password" msgstr "Zmień hasło" #: ../../auth.c:830 msgid "Cancelled. Password was not changed." msgstr "Anulowane. Hasło nie zostało zmienione." #: ../../auth.c:839 msgid "They don't match. Password was not changed." msgstr "One nie pasują. Hasło nie zostało zmienione." #: ../../auth.c:845 msgid "Blank passwords are not allowed." msgstr "Puste hasła nie są dozwolone." #: ../../openid.c:34 msgid "Manage Account/OpenID Associations" msgstr "Zarządzanie kontem OpenID" #: ../../openid.c:52 msgid "Do you really want to delete this OpenID?" msgstr "Czy na pewno chcesz usunąć OpenID?" #: ../../openid.c:53 msgid "(delete)" msgstr "(usuń)" #: ../../openid.c:61 msgid "Add an OpenID: " msgstr "Dodaj OpenID: " #: ../../openid.c:64 msgid "Attach" msgstr "Załącz" #: ../../openid.c:68 #, c-format msgid "%s does not permit authentication via OpenID." msgstr "%s nie zezwala na uwierzytelnianie za pomocą OpenID." #: ../../html2html.c:136 #, c-format msgid "realloc() error! couldn't get %d bytes: %s" msgstr "realloc() łąd! nie może pobrać %d bytes: %s" #: ../../static/t/viewomatic.html:4 msgid "View as:" msgstr "Wyświetl jako:" #: ../../static/t/sieve/list.html:32 ../../static/t/sieve/none.html:4 #: ../../static/t/menu/your_info.html:7 msgid "View/edit server-side mail filters" msgstr "Pokaż/edytuj filtr pocztowy od strony servera" #: ../../static/t/sieve/list.html:41 msgid "When new mail arrives: " msgstr "Gdy nadejdzie nowa poczta: " #: ../../static/t/sieve/list.html:43 msgid "Leave it in my inbox without filtering" msgstr "Zostaw go w skrzynce odbiorczej bez filtrowania" #: ../../static/t/sieve/list.html:44 msgid "Filter it according to rules selected below" msgstr "Filtrować je według zasad wybranych poniżej" #: ../../static/t/sieve/list.html:45 msgid "Filter it through a manually edited script (advanced users only)" msgstr "" "Przefiltrowanego przez edytowanie ręczne skryptu (tylko dla zaawansowanych " "użytkowników)" #: ../../static/t/sieve/list.html:52 msgid "Your incoming mail will not be filtered through any scripts." msgstr "woja poczta przychodząca nie będzie filtrowana przez skrypty." #: ../../static/t/sieve/list.html:64 msgid "Add rule" msgstr "Dodaj regułę" #: ../../static/t/sieve/list.html:71 msgid "The currently active script is: " msgstr "Skrypt jest aktualnie aktywny: " #: ../../static/t/sieve/list.html:76 ../../static/t/sieve/add.html:3 msgid "Add or delete scripts" msgstr "Dodawanie lub usuwanie skryptów" #: ../../static/t/sieve/display_one.html:16 msgid "If" msgstr "Jeśli" #: ../../static/t/sieve/display_one.html:21 msgid "To or Cc" msgstr "Do lub CC" #: ../../static/t/sieve/display_one.html:23 msgid "Reply-to" msgstr "Reply-to" #: ../../static/t/sieve/display_one.html:24 #: ../../static/t/msg_listview.html:10 #: ../../static/t/view_mailq/header.html:27 msgid "Sender" msgstr "Nadawca" #: ../../static/t/sieve/display_one.html:25 msgid "Resent-From" msgstr "Resent-From" #: ../../static/t/sieve/display_one.html:26 msgid "Resent-To" msgstr "Resent-To" #: ../../static/t/sieve/display_one.html:27 msgid "Envelope From" msgstr "Envelope From" #: ../../static/t/sieve/display_one.html:28 msgid "Envelope To" msgstr "Envelope To" #: ../../static/t/sieve/display_one.html:29 msgid "X-Mailer" msgstr "X-Mailer" #: ../../static/t/sieve/display_one.html:30 msgid "X-Spam-Flag" msgstr "X-Spam-Flag" #: ../../static/t/sieve/display_one.html:31 msgid "X-Spam-Status" msgstr "X-Spam-Status" #: ../../static/t/sieve/display_one.html:32 msgid "List-ID" msgstr "List-ID" #: ../../static/t/sieve/display_one.html:33 msgid "Message size" msgstr "Wielkośc wiadomości" #: ../../static/t/sieve/display_one.html:34 #: ../../static/t/select_messageindex_all.html:1 msgid "All" msgstr "Wszystko" #: ../../static/t/sieve/display_one.html:41 msgid "contains" msgstr "zawiera" #: ../../static/t/sieve/display_one.html:42 msgid "does not contain" msgstr "nie zawiera" #: ../../static/t/sieve/display_one.html:43 msgid "is" msgstr "jest" #: ../../static/t/sieve/display_one.html:44 msgid "is not" msgstr "nie jest" #: ../../static/t/sieve/display_one.html:45 msgid "matches" msgstr "pasuje do" #: ../../static/t/sieve/display_one.html:46 msgid "does not match" msgstr "nie pasuje do" #: ../../static/t/sieve/display_one.html:52 msgid "(All messages)" msgstr "(Wszystkie wiadomości)" #: ../../static/t/sieve/display_one.html:56 msgid "is larger than" msgstr "większe niż" #: ../../static/t/sieve/display_one.html:57 msgid "is smaller than" msgstr "mniejsze niż" #: ../../static/t/sieve/display_one.html:59 msgid "bytes" msgstr "bajtów" #: ../../static/t/sieve/display_one.html:65 msgid "Keep" msgstr "Zachowaj" #: ../../static/t/sieve/display_one.html:66 msgid "Discard silently" msgstr "Wyrzucić po cichu" #: ../../static/t/sieve/display_one.html:67 msgid "Reject" msgstr "Odrzucić" #: ../../static/t/sieve/display_one.html:68 msgid "Move message to" msgstr "Przenieś wiadomość do" #: ../../static/t/sieve/display_one.html:69 msgid "Forward to" msgstr "Przekaż do" #: ../../static/t/sieve/display_one.html:70 msgid "Vacation" msgstr "Urlop" #: ../../static/t/sieve/display_one.html:82 msgid "Message:" msgstr "Wiadomość:" #: ../../static/t/sieve/display_one.html:90 msgid "and then" msgstr "i wtedy" #: ../../static/t/sieve/display_one.html:93 msgid "continue processing" msgstr "kontynuj przetwarzanie" #: ../../static/t/sieve/display_one.html:94 msgid "stop" msgstr "zatrzymaj" #: ../../static/t/sieve/none.html:9 msgid "" "This installation of Citadel was built without support for server-side mail " "filtering.
    Please contact your system administrator if you require this " "feature.
    " msgstr "" "Instalacja Citadel została zbudowana bez obsługi po stronie serwera " "filtrowania poczty.
    Proszę skontaktować się z administratorem systemu, " "jeśli potrzebujesz tej funkcji
    " #: ../../static/t/sieve/add.html:9 msgid "Add a new script" msgstr "Dodaj nowy skrypt" #: ../../static/t/sieve/add.html:10 msgid "" "To create a new script, enter the desired script name in the box below and " "click 'Create'." msgstr "" "Aby utworzyć nowy skrypt, wprowadź żądaną nazwę skryptu w polu poniżej i " "kliknij przycisk \"Utwórz\"." #: ../../static/t/sieve/add.html:14 msgid "Script name: " msgstr "Nazwa skryptu: " #: ../../static/t/sieve/add.html:18 msgid "Edit scripts" msgstr "Edytuj skrypty" #: ../../static/t/sieve/add.html:20 msgid "Return to the script editing screen" msgstr "Powrócić do ekranu edycji skrypt" #: ../../static/t/sieve/add.html:23 msgid "Delete scripts" msgstr "Usuń skryptów" #: ../../static/t/sieve/add.html:24 msgid "" "To delete an existing script, select the script name from the list and click " "'Delete'." msgstr "" "Aby usunąć istniejący skrypt, wybierz nazwę skryptu z listy i kliknij " "\"Usuń\"." #: ../../static/t/msg/confirm_move.html:4 msgid "Confirm move of message" msgstr "Potwierdzić przeniesienie wiadomości" #: ../../static/t/msg/confirm_move.html:12 msgid "Move this message to:" msgstr "Przenieść tę wiadomość:" #: ../../static/t/login.html:5 msgid "powered by" msgstr "powered by" #: ../../static/t/login.html:15 ../../static/t/iconbar.html:88 #: ../../static/t/get_logged_in.html:64 ../../static/t/get_logged_in.html:88 #: ../../static/t/get_logged_in.html:93 ../../static/t/get_logged_in.html:98 #: ../../static/t/get_logged_in.html:107 msgid "Log in" msgstr "Zaloguj" #: ../../static/t/trailing.html:14 msgid "" "WARNING: You have JavaScript disabled in your web browser. Many functions " "of this system will not work properly." msgstr "" "WAGA: masz wyłączoną obsługę JavaScript w przeglądarce. Wiele funkcji tego " "systemu nie będzie działać poprawnie." #: ../../static/t/view_submessage.html:4 #: ../../static/t/view_message/replyquote.html:3 #: ../../static/t/view_message/replyquote.html:7 #: ../../static/t/view_message/print.html:8 ../../static/t/view_message.html:7 msgid "from " msgstr "od " #: ../../static/t/searchomatic.html:4 msgid "Search: " msgstr "Szukaj: " #: ../../static/t/listsub/display.html:16 msgid "You are subscribing " msgstr "Jesteś zapisany " #: ../../static/t/listsub/display.html:17 msgid " to the " msgstr " do " #: ../../static/t/listsub/display.html:18 msgid " mailing list." msgstr " listy dyskusyjnej." #: ../../static/t/listsub/display.html:19 msgid "" "The listserver has sent you an e-mail with one additional Web link for you " "to click on to confirm your subscription." msgstr "" "List serwerowi wysłał Ci wiadomość e-mail z linkiem łącza internetowego, aby " "kliknąć, aby potwierdzić subskrypcję." #: ../../static/t/listsub/display.html:20 msgid "" "This extra step is for your protection, as it prevents others from being " "able to subscribe you to lists without your consent." msgstr "" "Ten dodatkowy krok jest dla ochrony, ponieważ zapobiega innym zapisać się do " "listy bez twojej zgody." #: ../../static/t/listsub/display.html:22 msgid "" "Please click on the link which is being e-mailed to you and your " "subscription will be confirmed." msgstr "" "Poszę kliknąć na link, który jest w e-mail, aby została potwierdzona " "subskrybcja." #: ../../static/t/listsub/display.html:27 #: ../../static/t/listsub/display.html:47 msgid "ERROR" msgstr "BŁĄD" #: ../../static/t/listsub/display.html:35 msgid "You are unsubscribing" msgstr "Wypisałeś sie" #: ../../static/t/listsub/display.html:37 msgid "from the" msgstr "od" #: ../../static/t/listsub/display.html:39 msgid "mailing list." msgstr "listy dyskusyjnej." #: ../../static/t/listsub/display.html:40 msgid "" "The listserver has sent you an e-mail with one additional Web link for you " "to click on to confirm your unsubscription." msgstr "" "Listserwerowi wysłał Ci wiadomość e-mail z linkiem do strony internetowego, " "aby kliknąć, aby potwierdzić anulowanie subskrypcji." #: ../../static/t/listsub/display.html:41 msgid "" "This extra step is for your protection, as it prevents others from being " "able to unsubscribe you from lists without your consent." msgstr "" "Ten dodatkowy krok jest dla ochrony, ponieważ zapobiega aby inni nie mogli " "zrezygnować z wypisania sie z listy bez twojej zgody." #: ../../static/t/listsub/display.html:43 msgid "" "Please click on the link which is being e-mailed to you and your " "unsubscription will be confirmed." msgstr "" "Proszę kliknąć na link, który jest w e-mail aby wypisanie zostało " "potwierdzone." #: ../../static/t/listsub/display.html:44 msgid "Back..." msgstr "Wróć ..." #: ../../static/t/listsub/display.html:54 msgid "Confirmation successful!" msgstr "Potwierdzenie sukces!" #: ../../static/t/listsub/display.html:56 msgid "Confirmation failed." msgstr "Potwierdzenie nie powiodło się." #: ../../static/t/listsub/display.html:57 msgid "This could mean one of two things:" msgstr "Może to oznaczać jedną z dwóch rzeczy:" #: ../../static/t/listsub/display.html:59 msgid "" "You waited too long to confirm your subscribe/unsubscribe request (the " "confirmation link is only valid for three days)" msgstr "" "Czekałeś zbyt długo, aby potwierdzić subskrypcję /wypisanie (Link " "potwierdzający jest ważny tylko przez trzy dni)" #: ../../static/t/listsub/display.html:60 msgid "" "You have already successfully confirmed your subscribe/unsubscribe " "request and are attempting to do it again." msgstr "" "Masz już z powodzeniem potwierdzenie subskrypcji / wypisania i " "starasz się zrobić to ponownie." #: ../../static/t/listsub/display.html:62 msgid "The error returned by the server was: " msgstr "Błąd zwracany przez serwer był: " #: ../../static/t/listsub/display.html:70 msgid "Name of list:" msgstr "Nazwa listy:" #: ../../static/t/listsub/display.html:75 msgid "Your e-mail address:" msgstr "Twój adres email:" #: ../../static/t/listsub/display.html:79 msgid "(If subscribing) preferred format: " msgstr "(Jeśli subskrypcjia) preferowany format: " #: ../../static/t/listsub/display.html:80 msgid "One message at a time" msgstr "Jedna wiadomość na raz" #: ../../static/t/listsub/display.html:81 msgid "Digest format" msgstr "Strawny format" #: ../../static/t/listsub/display.html:89 msgid "" "When you attempt to subscribe or unsubscribe to a mailing list, you will " "receive an e-mail containing one additional web link to click on for final " "confirmation." msgstr "" "Podczas próby zapisać lub wypisać się z listy mailingowej, otrzymasz " "wiadomość e-mail zawierającą Link do strony internetowej kliknij na " "ostateczne potwierdzenie." #: ../../static/t/listsub/display.html:90 msgid "" "This extra step is for your protection, as it prevents others from being " "able to subscribe or unsubscribe you to lists." msgstr "" "Ten dodatkowy krok jest dla ochrony, ponieważ zapobiega prze próbami przez " "innych zapisać lub wypisać ciebie z list." #: ../../static/t/floors_edit_one.html:11 msgid "(delete floor)" msgstr "(usuń piętro)" #: ../../static/t/floors_edit_one.html:13 msgid "(edit graphic)" msgstr "(edycja grafiki)" #: ../../static/t/floors.html:4 msgid "Add/change/delete floors" msgstr "Dodaj/zmień/usuń piętra" #: ../../static/t/floors.html:10 msgid "Floor number" msgstr "Numer piętra" #: ../../static/t/floors.html:11 msgid "Floor name" msgstr "Nazwa piętra" #: ../../static/t/floors.html:12 msgid "Number of rooms" msgstr "Liczba pokoi" #: ../../static/t/floors.html:13 msgid "Floor CSS" msgstr "CSS piętra" #: ../../static/t/files.html:4 msgid "Files available for download in" msgstr "Pliki dostępne do pobrania w" #: ../../static/t/files.html:9 msgid "Upload a file:" msgstr "Prześlij plik:" #: ../../static/t/files.html:30 msgid "Filename" msgstr "Nazwa pliku" #: ../../static/t/files.html:31 msgid "Size" msgstr "Wielkość" #: ../../static/t/files.html:32 msgid "Content" msgstr "Zawartość" #: ../../static/t/files.html:33 msgid "Description" msgstr "Opis" #: ../../static/t/edit_message.html:9 ../../static/t/iconbar.html:50 #: ../../static/t/iconbar.html:59 msgid "Loading" msgstr "Wczytywanie" #: ../../static/t/edit_message.html:23 msgid "from" msgstr "Od" #: ../../static/t/edit_message.html:29 ../../static/t/edit_message.html:38 msgid "Anonymous" msgstr "Anonimowo" #: ../../static/t/edit_message.html:47 msgid "in" msgstr "" #: ../../static/t/edit_message.html:51 msgid "To:" msgstr "Do:" #: ../../static/t/edit_message.html:57 #: ../../static/t/view_message/print.html:15 #: ../../static/t/view_message.html:15 msgid "CC:" msgstr "DW:" #: ../../static/t/edit_message.html:63 msgid "BCC:" msgstr "BCC:" #: ../../static/t/edit_message.html:71 msgid "Subject (optional):" msgstr "Temat (opcjonalnie)" #: ../../static/t/edit_message.html:71 #: ../../static/t/view_message/replyquote.html:8 #: ../../static/t/view_message/print.html:16 #: ../../static/t/view_message.html:16 msgid "Subject:" msgstr "Temat:" #: ../../static/t/edit_message.html:86 msgid "--- forwarded message ---" msgstr "--- wiadomośc przekazywana ---" #: ../../static/t/edit_message.html:110 msgid "Post message" msgstr "Napisz wiadmość" #: ../../static/t/edit_message.html:118 msgid "Save to Drafts" msgstr "Zapisz do Roboczych" #: ../../static/t/edit_message.html:126 #: ../../static/t/edit_message/attachments_pane.html:5 msgid "Attachments:" msgstr "Załączniki:" #: ../../static/t/aide/display_serverrestart_page.html:4 msgid "Message to your Users:" msgstr "Wiadomość do użytkowników:" #: ../../static/t/aide/display_generic_result.html:2 msgid "Server command results" msgstr "Wyniki poleceń serwera" #: ../../static/t/aide/display_generic_result.html:18 msgid "Enter another command" msgstr "Wpisz inną komendę" #: ../../static/t/aide/display_generic_result.html:19 msgid "Return to menu" msgstr "Powrót do menu" #: ../../static/t/aide/display_sitewide_config.html:3 msgid "Site configuration" msgstr "Konfiguracja strony" #: ../../static/t/aide/display_sitewide_config.html:6 #: ../../static/t/aide/edituser/select.html:9 msgid "You need to be aide to view this." msgstr "Musisz być pomcnikiem aby móc wyświetlić to." #: ../../static/t/aide/display_sitewide_config.html:11 msgid "General" msgstr "Ogólnie" #: ../../static/t/aide/display_sitewide_config.html:12 msgid "Access" msgstr "Dostęp" #: ../../static/t/aide/display_sitewide_config.html:13 msgid "Network" msgstr "Sieć" #: ../../static/t/aide/display_sitewide_config.html:14 msgid "Tuning" msgstr "Dostrajanie" #: ../../static/t/aide/display_sitewide_config.html:15 msgid "Directory" msgstr "Katalog" #: ../../static/t/aide/display_sitewide_config.html:16 msgid "Auto-purger" msgstr "Automatyczne czyszczenie" #: ../../static/t/aide/display_sitewide_config.html:17 msgid "Indexing/Journaling" msgstr "Indeksowanie / księgowanie" #: ../../static/t/aide/display_sitewide_config.html:18 #: ../../static/t/aide/siteconfig/tab_pushmail.html:1 msgid "Push Email" msgstr "Natychmiastowe przesyłanie wiadomości (push e-mail)" #: ../../static/t/aide/display_sitewide_config.html:19 msgid "Pop3" msgstr "Pop3" #: ../../static/t/aide/usermanagement.html:2 msgid "Add, change, delete user accounts" msgstr "Dodawanie, zmienianie, usuwanie kont użytkowników" #: ../../static/t/aide/display_inetconf.html:5 #: ../../static/t/aide/display_menu.html:5 msgid "System Administration Menu" msgstr "Menu Administracji Systemu" #: ../../static/t/aide/display_inetconf.html:6 #: ../../static/t/aide/display_menu.html:6 msgid "Room Admin Menu" msgstr "Pokój Menu Admin" #: ../../static/t/aide/display_inetconf.html:13 msgid "Local host aliases" msgstr "Lokalne aliasy systemu (host)" #: ../../static/t/aide/display_inetconf.html:14 msgid "Directory domains" msgstr "Katalog domen" #: ../../static/t/aide/display_inetconf.html:15 msgid "Smart hosts" msgstr "Smart hosts" #: ../../static/t/aide/display_inetconf.html:16 msgid "Fallback smart hosts" msgstr "Awaryjne sprytne hosty" #: ../../static/t/aide/display_inetconf.html:17 msgid "Notification hosts" msgstr "Hosty powiadamiające" #: ../../static/t/aide/display_inetconf.html:22 msgid "RBL hosts" msgstr "RBL hosts" #: ../../static/t/aide/display_inetconf.html:23 msgid "SpamAssassin hosts" msgstr "SpamAssassin hosts" #: ../../static/t/aide/display_inetconf.html:24 msgid "ClamAV clamd hosts" msgstr "ClamAV clamd hosts" #: ../../static/t/aide/display_inetconf.html:25 msgid "Masqueradable domains" msgstr "Maskowane domeny" #: ../../static/t/aide/edituser/select.html:5 msgid "Edit or delete users" msgstr "Edytowanie lub usuwanie użytkowników" #: ../../static/t/aide/edituser/select.html:17 msgid "Add users" msgstr "Dodaj użytkowników" #: ../../static/t/aide/edituser/select.html:20 msgid "Edit or Delete users" msgstr "Wdycja lub usuwanie użytkowników" #: ../../static/t/aide/edituser/box_select.html:1 msgid "" "To edit an existing user account, select the user name from the list and " "click 'Edit'." msgstr "" "Aby edytować istniejące konto użytkownika, wybierz nazwę użytkownika z listy " "i kliknij przycisk \"Edytuj\"." #: ../../static/t/aide/edituser/detailview.html:4 msgid "Edit user account: " msgstr "Edytuj konto użytkownika: " #: ../../static/t/aide/edituser/detailview.html:24 #: ../../static/t/room/edit/tab_feed.html:14 msgid "Password" msgstr "Hasło" #: ../../static/t/aide/edituser/detailview.html:28 msgid "Permission to send Internet mail" msgstr "Uprawnienie do wysyłania poczty internetowej" #: ../../static/t/aide/edituser/detailview.html:32 msgid "Number of logins" msgstr "Liczba logowań" #: ../../static/t/aide/edituser/detailview.html:36 msgid "Messages submitted" msgstr "Wiadomości wysłane" #: ../../static/t/aide/edituser/detailview.html:40 msgid "Access level" msgstr "Poziom dostępu" #: ../../static/t/aide/edituser/detailview.html:54 msgid "User ID number" msgstr "Numer ID użytkownika" #: ../../static/t/aide/edituser/detailview.html:58 msgid "Date and time of last login" msgstr "Data i czas ostatniego logowania" #: ../../static/t/aide/edituser/detailview.html:68 msgid "Auto-purge after this many days" msgstr "Auto-czyszczenie po ilosci dni" #: ../../static/t/aide/edituser/add.html:1 msgid "" "To create a new user account, enter the desired user name in the box below " "and click 'Create'." msgstr "" "Aby utworzyć nowe konto użytkownika, wprowadź żądaną nazwę użytkownika w " "polu poniżej i kliknij przycisk \"Utwórz\"." #: ../../static/t/aide/edituser/add.html:5 msgid "New user: " msgstr "Nowy użytkownik: " #: ../../static/t/aide/display_generic_cmd.html:4 msgid "Enter a server command" msgstr "Wpisz polecenie serwera" #: ../../static/t/aide/display_generic_cmd.html:12 msgid "" "This screen allows you to enter Citadel server commands which are not " "supported by WebCit. If you do not know what that means, then this screen " "will not be of much use to you." msgstr "" "Ekran ten pozwala na wprowadzanie poleceń Citadel serwera, które nie są " "obsługiwane przez WebCit. Jeśli nie wiesz, co to oznacza, to ekran nie " "będzie zbyt użyteczna dla Ciebie." #: ../../static/t/aide/display_generic_cmd.html:15 msgid "Enter command:" msgstr "Wpisz polecenie:" #: ../../static/t/aide/display_generic_cmd.html:17 msgid "Command input (if requesting SEND_LISTING transfer mode):" msgstr "Wprowadzenie komendy (jeżeli żądanie tryb transferu SEND_LISTING):" #: ../../static/t/aide/display_generic_cmd.html:20 msgid "Detected host header is " msgstr "Wykryty nagłówek hosta " #: ../../static/t/aide/display_ignetconf.html:4 msgid "Network configuration" msgstr "Konfiguracja sieciowa" #: ../../static/t/aide/display_ignetconf.html:10 #: ../../static/t/aide/ignetconf/edit_node.html:5 #: ../../static/t/aide/ignetconf/add.html:5 msgid "Add a new node" msgstr "Dodaj nowy węzeł (node)" #: ../../static/t/aide/display_ignetconf.html:14 msgid "Currently configured nodes" msgstr "Obecnie skonfigurowane węzły" #: ../../static/t/aide/display_serverrestart.html:26 msgid "Restart Citadel" msgstr "Restart Citadel" #: ../../static/t/aide/floorconfig.html:2 msgid "Add, change, or delete floors" msgstr "Dodaj, zmień, lub usuń piętra" #: ../../static/t/aide/serverrestart/box.html:3 msgid "Please wait while the Citadel server is restarted... " msgstr "Poczekaj chwilę server Citadel jest ponownie uruchomiany ... " #: ../../static/t/aide/serverrestart/box_page_do.html:3 msgid "" "Please wait while your users are being paged, the citadel server will be " "restarted after that... " msgstr "" "Poczekaj użytkownicy są informowani że serwer zostanie uruchomiony ponownie " "... " #: ../../static/t/aide/inet/masqdomains.html:2 msgid "(Domains as which users are allowed to masquerade)" msgstr "(Domeny w które użytkownicy mogą maskować)" #: ../../static/t/aide/inet/rbldns.html:2 msgid "(hosts running a Realtime Blackhole List)" msgstr "(hosts z Realtime Blackhole Listy)" #: ../../static/t/aide/inet/dirnames.html:2 msgid "(domains mapped with the Global Address Book)" msgstr "(Domeny odwzorowywane z Global Address Book)" #: ../../static/t/aide/inet/notify.html:2 msgid "(URLS for notifications when users receive new mails; )" msgstr "(URLS do powiadomień, gdy użytkownicy otrzymują nową pocztę; )" #: ../../static/t/aide/inet/notify.html:2 msgid "" "Syntax: Notificationtemplatename:http[s]://user:password@hostname/path" msgstr "Syntax: Powiadomienie:http[s]://user:password@hostname/path" #: ../../static/t/aide/inet/smarthosts.html:2 msgid "(if present, forward all outbound mail to one of these hosts)" msgstr "" "(jeśli występuje, przekąz wszystkie wychodzące e-mail do jednego z tych " "hostów)" #: ../../static/t/aide/inet/aliases.html:2 msgid "(domains for which this host receives mail)" msgstr "(Domeny, dla których ten host odbiera pocztę)" #: ../../static/t/aide/inet/clamav.html:2 msgid "(hosts running the ClamAV clamd service)" msgstr "(hosts na których działa usługa clamd ClamAV)" #: ../../static/t/aide/inet/spamass.html:2 msgid "(hosts running the SpamAssassin service)" msgstr "(hosts na których działa SpamAssassin )" #: ../../static/t/aide/inet/fallbackhosts.html:2 msgid "(send outbound mail to these hosts only when direct delivery fails)" msgstr "" "(wysłać pocztę wychodzącą do tych hostów tylko wtedy, gdy bezpośrednie " "dostrczenie nie jest możliwe)" #: ../../static/t/aide/ignetconf/display_confirm_delete.html:5 msgid "Confirm delete" msgstr "Potwierdź usunięcie" #: ../../static/t/aide/ignetconf/display_confirm_delete.html:11 msgid "Are you sure you want to delete " msgstr "Czy na pewno chcesz usunąć " #: ../../static/t/aide/ignetconf/display_confirm_delete.html:14 #: ../../static/t/prefs/box.html:198 ../../static/t/iconbar/edit.html:19 #: ../../static/t/iconbar/edit.html:26 ../../static/t/iconbar/edit.html:32 #: ../../static/t/iconbar/edit.html:39 ../../static/t/iconbar/edit.html:45 #: ../../static/t/iconbar/edit.html:52 ../../static/t/iconbar/edit.html:58 #: ../../static/t/iconbar/edit.html:64 ../../static/t/iconbar/edit.html:70 #: ../../static/t/iconbar/edit.html:76 ../../static/t/iconbar/edit.html:82 #: ../../static/t/iconbar/edit.html:88 msgid "Yes" msgstr "Tak" #: ../../static/t/aide/ignetconf/display_confirm_delete.html:16 #: ../../static/t/prefs/box.html:200 ../../static/t/iconbar/edit.html:20 #: ../../static/t/iconbar/edit.html:27 ../../static/t/iconbar/edit.html:33 #: ../../static/t/iconbar/edit.html:40 ../../static/t/iconbar/edit.html:46 #: ../../static/t/iconbar/edit.html:53 ../../static/t/iconbar/edit.html:59 #: ../../static/t/iconbar/edit.html:65 ../../static/t/iconbar/edit.html:71 #: ../../static/t/iconbar/edit.html:77 ../../static/t/iconbar/edit.html:83 #: ../../static/t/iconbar/edit.html:89 msgid "No" msgstr "Nie" #: ../../static/t/aide/ignetconf/edit_node.html:15 #: ../../static/t/aide/ignetconf/add.html:15 #: ../../static/t/aide/siteconfig/tab_general.html:8 msgid "Node name" msgstr "Nazwa węzła" #: ../../static/t/aide/ignetconf/edit_node.html:17 #: ../../static/t/aide/ignetconf/add.html:17 msgid "Shared secret" msgstr "Wspólny serkretny klucz" #: ../../static/t/aide/ignetconf/edit_node.html:19 #: ../../static/t/aide/ignetconf/add.html:19 msgid "Host or IP address" msgstr "Host lub IP adres" #: ../../static/t/aide/ignetconf/edit_node.html:21 #: ../../static/t/aide/ignetconf/add.html:21 msgid "Port number" msgstr "Numer portu" #: ../../static/t/aide/ignetconf/section.html:4 msgid "(Edit)" msgstr "(Edycja)" #: ../../static/t/aide/display_menu.html:12 msgid "Global Configuration" msgstr "Globalna konfiguracja" #: ../../static/t/aide/display_menu.html:14 msgid "User account management" msgstr "Zarządzanie kontami użytkowników" #: ../../static/t/aide/display_menu.html:16 msgid "Shutdown Citadel" msgstr "Shutdown Citadel" #: ../../static/t/aide/display_menu.html:18 msgid "Rooms and Floors" msgstr "Pokoje i Piętra" #: ../../static/t/aide/global_config.html:2 msgid "Edit site-wide configuration" msgstr "Edycja konfiguracji systemu" #: ../../static/t/aide/global_config.html:3 msgid "Domain names and Internet mail configuration" msgstr "Nazwy domen i konfiguracja poczty internetowej" #: ../../static/t/aide/global_config.html:4 msgid "Configure replication with other Citadel servers" msgstr "Konfiguracja replikacji z innymi serwerami węzłami Citadel" #: ../../static/t/aide/global_config.html:5 #: ../../static/t/view_mailq/header.html:3 msgid "View the outbound SMTP queue" msgstr "Zobacz wychodzącą kolejkę SMTP" #: ../../static/t/aide/restart.html:2 msgid "Restart Now" msgstr "Uruchom ponownie Citadel" #: ../../static/t/aide/restart.html:3 msgid "Restart after paging users" msgstr "Restart po poinformowaniu użytkowników" #: ../../static/t/aide/restart.html:4 msgid "Restart when all users are idle" msgstr "Uruchom ponownie, gdy wszyscy użytkownicy nic nie robią w Citadel" #: ../../static/t/aide/siteconfig/tab_general.html:1 msgid "General site configuration items" msgstr "Ogólne elementy konfiguracji systemu" #: ../../static/t/aide/siteconfig/tab_general.html:5 msgid "Change Login Logo" msgstr "Zmień logo Logowania" #: ../../static/t/aide/siteconfig/tab_general.html:6 msgid "Change Logout Logo" msgstr "Zmień logo Wyloguj" #: ../../static/t/aide/siteconfig/tab_general.html:11 msgid "Fully qualified domain name" msgstr "Pełna nazwa hosta np (nocall.ampr.org)" #: ../../static/t/aide/siteconfig/tab_general.html:14 msgid "Human-readable node name" msgstr "Czytelna dla użytkowników nazwa węzła" #: ../../static/t/aide/siteconfig/tab_general.html:17 msgid "Telephone number" msgstr "Numer telefonu" #: ../../static/t/aide/siteconfig/tab_general.html:20 msgid "Paginator prompt (for text mode clients)" msgstr "Prompt stronicowania (tylko dla klientów w trybie tekstowym)" #: ../../static/t/aide/siteconfig/tab_general.html:23 msgid "Geographic location of this system" msgstr "Lokalizacja geograficzna: kraj, miasto" #: ../../static/t/aide/siteconfig/tab_general.html:26 msgid "Name of system administrator" msgstr "Nazwa administratora systemu" #: ../../static/t/aide/siteconfig/tab_general.html:29 msgid "Default timezone for unzoned calendar items" msgstr "Domyślna strefa czasowa dla pozycji kalendarza" #: ../../static/t/aide/siteconfig/tab_autopurger.html:1 msgid "Configure automatic expiry of old messages" msgstr "Skonfigurować automatyczne wygaśnięcie starych wiadomości" #: ../../static/t/aide/siteconfig/tab_autopurger.html:2 msgid "These settings may be overridden on a per-floor or per-room basis." msgstr "" "Te ustawienia mogą być nadpisane na lub poszczególnych pięter lub " "pojedynczego pokoju." #: ../../static/t/aide/siteconfig/tab_autopurger.html:6 msgid "Hour to run database auto-purge" msgstr "Godzin do uruchomienia bazy danych auto-oczyszczających" #: ../../static/t/aide/siteconfig/tab_autopurger.html:66 msgid "Default message expire policy for public rooms" msgstr "Domyślna polityka wygasania wiadomość dal publicznych pokoi" #: ../../static/t/aide/siteconfig/tab_autopurger.html:68 #: ../../static/t/aide/siteconfig/tab_autopurger.html:86 #: ../../static/t/room/edit/tab_expire.html:17 #: ../../static/t/room/edit/tab_expire.html:45 msgid "Never automatically expire messages" msgstr "Nigdy automatycznie wygasa wiadomości" #: ../../static/t/aide/siteconfig/tab_autopurger.html:71 #: ../../static/t/aide/siteconfig/tab_autopurger.html:89 #: ../../static/t/room/edit/tab_expire.html:20 #: ../../static/t/room/edit/tab_expire.html:48 msgid "Expire by message count" msgstr "Tracą ważność wg liczby wiadomości" #: ../../static/t/aide/siteconfig/tab_autopurger.html:73 #: ../../static/t/aide/siteconfig/tab_autopurger.html:92 #: ../../static/t/room/edit/tab_expire.html:23 #: ../../static/t/room/edit/tab_expire.html:51 msgid "Expire by message age" msgstr "Wygasają według wieku wiadomości" #: ../../static/t/aide/siteconfig/tab_autopurger.html:75 #: ../../static/t/aide/siteconfig/tab_autopurger.html:94 #: ../../static/t/room/edit/tab_expire.html:25 #: ../../static/t/room/edit/tab_expire.html:53 msgid "Number of messages or days: " msgstr "Liczba wiadomości lub dni: " #: ../../static/t/aide/siteconfig/tab_autopurger.html:81 msgid "Default message expire policy for private mailboxes" msgstr "" "Domyślna polityka wygasania wiadomość w prywatnych skrzynekach pocztowych" #: ../../static/t/aide/siteconfig/tab_autopurger.html:83 msgid "Same policy as public rooms" msgstr "Taka sama polityka jak w pokojach publicznych" #: ../../static/t/aide/siteconfig/tab_network.html:1 msgid "Network services" msgstr "Usługi sieciowe" #: ../../static/t/aide/siteconfig/tab_network.html:2 #: ../../static/t/aide/siteconfig/tab_directory.html:3 msgid "" "Changes made on this screen will not take effect until you restart the " "Citadel server." msgstr "" "Zmiany dokonane na tym ekranie nie zostaną zastosowane dopiero po ponownym " "uruchomieniu serwera Cytadeli." #: ../../static/t/aide/siteconfig/tab_network.html:6 msgid "SMTP MTA port (-1 to disable)" msgstr "SMTP MTA port (-1 aby włączyć)" #: ../../static/t/aide/siteconfig/tab_network.html:9 msgid "Correct forged From: lines during authenticated SMTP" msgstr "" "Skryguj podrobione linie Od: podczas uwierzytelniania protokołu SMTP" #: ../../static/t/aide/siteconfig/tab_network.html:12 msgid "Flag message as spam, instead of rejecting it" msgstr "Zaznacz jako spam wiadomość, zamiast odrzucenia" #: ../../static/t/aide/siteconfig/tab_network.html:15 msgid "IMAP listener port (-1 to disable)" msgstr "IMAP listener port (-1 aby włączyć)" #: ../../static/t/aide/siteconfig/tab_network.html:19 msgid "Network run frequency (in seconds)" msgstr "Częstotliwość uruchamiania sieci (w sekundach)" #: ../../static/t/aide/siteconfig/tab_network.html:22 msgid "Server IP address (0.0.0.0 for 'any')" msgstr "Server IP adres (0.0.0.0 dla 'każdego IP')" #: ../../static/t/aide/siteconfig/tab_network.html:25 msgid "SMTP MSA port (-1 to disable)" msgstr "SMTP MSA port (-1 aby wyłączyć)" #: ../../static/t/aide/siteconfig/tab_network.html:28 msgid "IMAP over SSL port (-1 to disable)" msgstr "IMAP over SSL port (-1 aby włączyć)" #: ../../static/t/aide/siteconfig/tab_network.html:31 msgid "SMTP over SSL port (-1 to disable)" msgstr "SMTP over SSL port (-1 aby włączyć)" #: ../../static/t/aide/siteconfig/tab_network.html:34 msgid "Instantly expunge deleted messages in IMAP" msgstr "Natychmiast usuwaj skasowane wiadomości z IMAP" #: ../../static/t/aide/siteconfig/tab_network.html:38 msgid "Allow unauthenticated SMTP clients to spoof this sites domains" msgstr "Allow unauthenticated SMTP clients to spoof this sites domains" #: ../../static/t/aide/siteconfig/tab_network.html:41 msgid "Postfix TCP Dictionary Port" msgstr "Postfix TCP Dictionary Port" #: ../../static/t/aide/siteconfig/tab_network.html:41 msgid "-1 to disable" msgstr "-1 aby wyłączyć" #: ../../static/t/aide/siteconfig/tab_network.html:44 msgid "ManageSieve Port (-1 to disable)" msgstr "ManageSieve Port (-1 aby włączyć)" #: ../../static/t/aide/siteconfig/tab_network.html:47 msgid "Perform RBL checks upon connect instead of after RCPT" msgstr "Przeprowadzenie kontroli RBL zamiast po RCPT" #: ../../static/t/aide/siteconfig/tab_network.html:50 msgid "Keep original from headers in IMAP" msgstr "Zachowaj oryginał z nagłówków w IMAP" #: ../../static/t/aide/siteconfig/tab_network.html:53 msgid "XMPP (Jabber) client to server port (-1 to disable)" msgstr "XMPP (Jabber) client to server port (-1 aby włączyć)" #: ../../static/t/aide/siteconfig/tab_network.html:56 msgid "XMPP (Jabber) server to server port (-1 to disable)" msgstr "XMPP (Jabber) server to server port (-1 aby włączyć)" #: ../../static/t/aide/siteconfig/tab_pop3.html:1 msgid "POP3" msgstr "POP3" #: ../../static/t/aide/siteconfig/tab_pop3.html:6 msgid "POP3 listener port (-1 to disable)" msgstr "POP3 listener port (-1 aby włączyć)" #: ../../static/t/aide/siteconfig/tab_pop3.html:9 msgid "POP3 over SSL port (-1 to disable)" msgstr "POP3 over SSL port (-1 aby włączyć)" #: ../../static/t/aide/siteconfig/tab_pop3.html:12 msgid "POP3 fetch frequency in seconds" msgstr "POP3 sprowadzić częstotliwość w sekundach" #: ../../static/t/aide/siteconfig/tab_pop3.html:15 msgid "POP3 fastest fetch frequency in seconds" msgstr "POP3 najszybciej sprowadzić częstotliwość w sekundach" #: ../../static/t/aide/siteconfig/tab_tuning.html:1 msgid "Advanced server fine-tuning controls" msgstr "Zaawansowana kontrola (dostrajanie) serwera" #: ../../static/t/aide/siteconfig/tab_tuning.html:5 msgid "Server connection idle timeout (in seconds)" msgstr "Limit czasu połączenia z serwerem bezczynności (w sekundach)" #: ../../static/t/aide/siteconfig/tab_tuning.html:8 msgid "Maximum concurrent sessions (0 = no limit)" msgstr "Maksimum sesji równoległych (0 = brak limitu)" #: ../../static/t/aide/siteconfig/tab_tuning.html:11 msgid "Default user purge time (days)" msgstr "Domyślna czas sprzątanie użytkownika (liczba dni)" #: ../../static/t/aide/siteconfig/tab_tuning.html:14 msgid "Default room purge time (days)" msgstr "Domyślny czas sprzątania pokoi (liczba dni)" #: ../../static/t/aide/siteconfig/tab_tuning.html:17 msgid "Maximum message length" msgstr "Maksymalna długość wiadomości" #: ../../static/t/aide/siteconfig/tab_tuning.html:20 msgid "Minimum number of worker threads" msgstr "Minimalna liczba wątków" #: ../../static/t/aide/siteconfig/tab_tuning.html:23 msgid "Maximum number of worker threads" msgstr "Maksymalna liczba wątków roboczych" #: ../../static/t/aide/siteconfig/tab_tuning.html:26 msgid "Automatically delete committed database logs" msgstr "Automatyczne usuwanie ?zaangażowanych? lgów baz danych" #: ../../static/t/aide/siteconfig/tab_pushmail.html:5 msgid "Funambol server host (blank to disable)" msgstr "Funambol server host (puste aby wyłączyć)" #: ../../static/t/aide/siteconfig/tab_pushmail.html:8 msgid "Funambol server port " msgstr "Funambol server port " #: ../../static/t/aide/siteconfig/tab_pushmail.html:11 msgid "Funambol sync source" msgstr "Funambol sync source" #: ../../static/t/aide/siteconfig/tab_pushmail.html:14 msgid "Funambol auth details (user:pass)" msgstr "Funambol auth details (user:pass)" #: ../../static/t/aide/siteconfig/tab_pushmail.html:17 msgid "External pager tool (blank to disable)" msgstr "Narzędzie do powiadamiania zewnetrzne (puste aby wyłączyć)" #: ../../static/t/aide/siteconfig/tab_access.html:1 msgid "Access controls and site policy settings" msgstr "Kontrola dostępu i ustawienia zasad serwisu" #: ../../static/t/aide/siteconfig/tab_access.html:5 msgid "Allow aides to zap (forget) rooms" msgstr "Umożliwiaj adiuktowi zapomnieć pokoje" #: ../../static/t/aide/siteconfig/tab_access.html:9 msgid "Quarantine messages from problem users" msgstr "Kwarantanny wiadomości od użytkowników problemowych" #: ../../static/t/aide/siteconfig/tab_access.html:12 msgid "Name of quarantine room" msgstr "Nazwa miejsca kwarantanny" #: ../../static/t/aide/siteconfig/tab_access.html:17 msgid "Name of room to log pages" msgstr "Nazwa pokoju do strony logowania" #: ../../static/t/aide/siteconfig/tab_access.html:22 msgid "Authentication mode" msgstr "Tryb uwierzytelniania" #: ../../static/t/aide/siteconfig/tab_access.html:24 msgid "Self contained" msgstr "Autonomiczny" #: ../../static/t/aide/siteconfig/tab_access.html:25 msgid "Host based" msgstr "Host based" #: ../../static/t/aide/siteconfig/tab_access.html:26 msgid "LDAP (RFC2307)" msgstr "LDAP (RFC2307)" #: ../../static/t/aide/siteconfig/tab_access.html:27 msgid "LDAP (Active Directory)" msgstr "LDAP (Active Directory)" #: ../../static/t/aide/siteconfig/tab_access.html:30 msgid "Master user name (blank to disable)" msgstr "Nazwa użytkownika Mistrz (puste, aby wyłączyć)" #: ../../static/t/aide/siteconfig/tab_access.html:33 msgid "Master user password" msgstr "Hasło użytkownika Mistrz" #: ../../static/t/aide/siteconfig/tab_access.html:38 msgid "Initial access level for new users" msgstr "Początkowy poziom dostępu dla nowych użytkowników" #: ../../static/t/aide/siteconfig/tab_access.html:49 msgid "Access level required to create rooms" msgstr "Poziom dostępu wymagane do utworzenia pokoje" #: ../../static/t/aide/siteconfig/tab_access.html:60 msgid "" "Automatically grant room-aide status to users who create private rooms" msgstr "" "Automatycznie przyznania statusu pokój-doradca dla użytkowników, którzy " "tworzą prywatne pokoje" #: ../../static/t/aide/siteconfig/tab_access.html:63 msgid "Automatically grant room-aide status to users who create BLOG rooms" msgstr "" "Automatycznie przyznania statusu pokój-doradca dla użytkowników, którzy " "tworzą pokoje BLOG" #: ../../static/t/aide/siteconfig/tab_access.html:66 msgid "Restrict access to Internet mail" msgstr "Ograniczanie dostępu do poczty internetowej" #: ../../static/t/aide/siteconfig/tab_access.html:71 msgid "Disable self-service user account creation" msgstr "Wyłączenia tworzenia konta użytkownika samoobsługowo" #: ../../static/t/aide/siteconfig/tab_access.html:71 msgid "Hint: do not select both!" msgstr "Wskazówka: nie należy wybierać obu opcji!" #: ../../static/t/aide/siteconfig/tab_access.html:74 msgid "Require registration for new users" msgstr "Wymaga rejestracji dla nowych użytkowników" #: ../../static/t/aide/siteconfig/tab_access.html:77 msgid "Allow anonymous guest access" msgstr "Umożliwiają anonimowy użytkownikom dostęp" #: ../../static/t/aide/siteconfig/tab_indexing.html:1 msgid "Indexing and Journaling" msgstr "Indeksowanie i księgowanie" #: ../../static/t/aide/siteconfig/tab_indexing.html:2 msgid "Warning: these facilities are resource intensive." msgstr "Ostrzeżenie: zadania te są źródłem intensywnego obciązenia" #: ../../static/t/aide/siteconfig/tab_indexing.html:6 msgid "Enable full text index" msgstr "Umożliwienie pełnego indeksu tekstowego" #: ../../static/t/aide/siteconfig/tab_indexing.html:9 msgid "Perform journaling of email messages" msgstr "Przeprowadzić księgowanie wiadomości e-mail" #: ../../static/t/aide/siteconfig/tab_indexing.html:13 msgid "Perform journaling of non-email messages" msgstr "Przeprowadzić księgowanie wiadomości nie będących pocztą" #: ../../static/t/aide/siteconfig/tab_indexing.html:16 msgid "Email destination of journalized messages" msgstr "Przeznaczenia wiadomości e-mail z księgowanych" #: ../../static/t/aide/siteconfig/tab_directory.html:1 msgid "Configure the LDAP connector for Citadel" msgstr "Skonfigurować złącze LDAP dla Cytadeli" #: ../../static/t/aide/siteconfig/tab_directory.html:4 msgid "" "NOTE: This Citadel server has been built without LDAP support. These " "options will have no effect." msgstr "" "UWAGA: Ten serwer Citadel została zbudowana bez wsparcia LDAP. Opcje te nie " "mają żadnego wpływu." #: ../../static/t/aide/siteconfig/tab_directory.html:9 msgid "Host name of LDAP server (blank to disable)" msgstr "Nazwa hosta LDAP server (puste, aby wyłączyć)" #: ../../static/t/aide/siteconfig/tab_directory.html:13 msgid "Port number of LDAP server (blank to disable)" msgstr "Numer portu LDAP server (puste, aby wyłączyć)" #: ../../static/t/aide/siteconfig/tab_directory.html:16 msgid "Base DN" msgstr "Podstawowa domena" #: ../../static/t/aide/siteconfig/tab_directory.html:19 msgid "Bind DN" msgstr "Powiązana DN" #: ../../static/t/aide/siteconfig/tab_directory.html:22 msgid "Password for bind DN" msgstr "Hasło dla bind DN" #: ../../static/t/iconbar.html:7 msgid "Language:" msgstr "Język:" #: ../../static/t/iconbar.html:19 msgid "Mail" msgstr "Poczta" #: ../../static/t/iconbar.html:39 ../../static/t/iconbar/edit.html:61 #: ../../static/t/summary/page.html:30 msgid "Tasks" msgstr "Zadania" #: ../../static/t/iconbar.html:48 ../../static/t/iconbar/edit.html:67 msgid "Rooms" msgstr "Pokoje" #: ../../static/t/iconbar.html:57 msgid "Online users" msgstr "Użytkownicy online" #: ../../static/t/iconbar.html:62 ../../static/t/iconbar/edit.html:79 msgid "Chat" msgstr "Chat" #: ../../static/t/iconbar.html:65 msgid "Advanced" msgstr "Zaawansowane" #: ../../static/t/iconbar.html:72 ../../static/t/room/edit/editroom.html:4 #: ../../static/t/room/edit.html:5 msgid "Administration" msgstr "Zarządzanie" #: ../../static/t/iconbar.html:83 msgid "customize this menu" msgstr "dostosuj to menu" #: ../../static/t/iconbar.html:92 msgid "switch to room list" msgstr "przejść do listy pokojowej" #: ../../static/t/iconbar.html:93 msgid "switch to menu" msgstr "przejść do menu" #: ../../static/t/iconbar.html:94 msgid "My folders" msgstr "Moje foldery" #: ../../static/t/view_message/list_attach.html:3 #: ../../static/t/view_message/inline_attach.html:4 msgid "View" msgstr "Widok" #: ../../static/t/view_message/list_attach.html:4 #: ../../static/t/view_message/inline_attach.html:5 msgid "Download" msgstr "Pobieranie" #: ../../static/t/view_message/print.html:14 #: ../../static/t/view_message.html:14 msgid "to" msgstr "do" #: ../../static/t/openid_manual_create.html:2 msgid "Your OpenID" msgstr "Twój OpenID" #: ../../static/t/openid_manual_create.html:2 msgid "was successfully verified." msgstr "został pomyślnie zweryfikowany." #: ../../static/t/openid_manual_create.html:3 msgid "However, the user name" msgstr "Jednak nazwa użytkownika" #: ../../static/t/openid_manual_create.html:3 msgid "conflicts with an existing user." msgstr "konflikty z istniejącm użytkownikiem." #: ../../static/t/openid_manual_create.html:5 msgid "Please specify the user name you would like to use." msgstr "Proszę podać nazwę użytkownika, którego chcesz użyć." #: ../../static/t/files/graphicsupload.html:2 msgid "Image upload" msgstr "Prześlij zdjęcie" #: ../../static/t/files/graphicsupload.html:6 msgid "You can upload an image directly from your computer" msgstr "Możesz przesłać zdjęcie bezpośrednio z komputera" #: ../../static/t/files/graphicsupload.html:8 msgid "Please select a file to upload:" msgstr "Wybierz plik do wysłania:" #: ../../static/t/files/section_onefile.html:20 msgid "Slideshow" msgstr "Prezentacja" #: ../../static/t/roombanner.html:10 ../../static/t/roombanner.html:11 msgid "new of" msgstr "nowych z" #: ../../static/t/roombanner.html:10 ../../static/t/roombanner.html:11 #: ../../static/t/msg_listselector_bottom.html:7 #: ../../static/t/msg_listselector_top.html:7 msgid "messages" msgstr "wiadomości" #: ../../static/t/roombanner.html:28 msgid "Select page: " msgstr "Wybierz stronę: " #: ../../static/t/who.html:13 msgid "Users currently on " msgstr "Użytkownicy obecnie na " #: ../../static/t/who.html:22 msgid "Click on a name to read user info. Click on" msgstr "" "Kliknij na nazwe użykownika, aby zobaczyć informacje o użytkowniku. kliknij" #: ../../static/t/who.html:24 msgid "to send an instant message to that user." msgstr "aby wysłać wiadomość błyskawiczną do tego użytkownika." #: ../../static/t/msg_listselector_bottom.html:2 #: ../../static/t/msg_listselector_top.html:2 msgid "Reading #" msgstr "Czytanie #" #: ../../static/t/msg_listselector_bottom.html:12 #: ../../static/t/msg_listselector_top.html:12 msgid "oldest to newest" msgstr "od najstarszych do najnowszych" #: ../../static/t/msg_listselector_bottom.html:20 #: ../../static/t/msg_listselector_top.html:20 msgid "newest to oldest" msgstr "od najnowszych do najstarszych" #: ../../static/t/newstartpage.html:4 msgid "New start page" msgstr "Nowa strona startowa" #: ../../static/t/newstartpage.html:9 msgid "Your start page has been changed." msgstr "Twoja strona startowa została zmieniona." #: ../../static/t/newstartpage.html:12 msgid "" "(Note: this does not change your browser's home page. It changes the page " "you begin on when you log on to" msgstr "" "(Uwaga: to nie zmienia strony startowej w przeglądarce . Zmienia stronę, " "którą rozpoczyna się podczas logowania do" #: ../../static/t/no_new_msgs.html:3 msgid "No new messages." msgstr "Brak nowych wiadomości." #: ../../static/t/view_blog/comment_box.html:8 msgid "Post a comment" msgstr "Zamieść komentarz" #: ../../static/t/prefs/pushemail.html:2 msgid "Configure Push Email" msgstr "Konfuguracja Push Email" #: ../../static/t/prefs/pushemail.html:9 msgid "Push email and SMS settings" msgstr "Push email i SMS ustawienia" #: ../../static/t/prefs/pushemail.html:17 msgid "" "If your administrator has enabled the functionality, Citadel can notify a " "Funambol server that you haved recieved new email and automatically " "syncronize any devices you have with the Funambol client installed." msgstr "" "Jeśli administrator włączył funkcję, Citadel może powiadomić serwer Funambol " "że otrzymałeś nowy e-mail i automatycznie synchronizować wszystkie " "urządzenia z klientem Funambol zainstalowany." #: ../../static/t/prefs/pushemail.html:20 msgid "" "Alternatively, if the administrator has configured it, Citadel can send a " "text message to you when new mail arrives." msgstr "" "Ewentualnie, jeśli administrator skonfigurował go, Cytadela może wysłać " "wiadomość tekstową do Ciebie po nadejściu nowej poczty." #: ../../static/t/prefs/pushemail.html:26 msgid "Notify Funambol server" msgstr "Zawiadamiać Funambol server" #: ../../static/t/prefs/pushemail.html:31 msgid "Send a text message to..." msgstr "Wysłać wiadomość tekstową do ..." #: ../../static/t/prefs/pushemail.html:33 msgid "" "(Use international format, without any leading zeros, spaces or hypens, like " "+61415011501)" msgstr "(Użyj formatu międzynarodowego, bez zer wiodących np +61415011501)" #: ../../static/t/prefs/pushemail.html:38 msgid "Use custom notification scheme configured by your Admin" msgstr "" "Użyj niestandardowego systemu powiadamiania skonfigurowanego przez " "administratora" #: ../../static/t/prefs/pushemail.html:43 msgid "Don‘t send any notifications" msgstr "Nie wysyłaj żadnych powiadomień" #: ../../static/t/prefs/box.html:9 msgid "Tree (folders) view" msgstr "Drzewo (foldery) zobacz" #: ../../static/t/prefs/box.html:11 msgid "Table (rooms) view" msgstr "Tabela (pokoje) zobacz" #: ../../static/t/prefs/box.html:20 msgid "12 hour (am/pm)" msgstr "12 hour (am/pm)" #: ../../static/t/prefs/box.html:25 msgid "24 hour" msgstr "24 godzinny" #: ../../static/t/prefs/box.html:152 msgid "Sunday" msgstr "Niedziela" #: ../../static/t/prefs/box.html:153 msgid "Monday" msgstr "Poniedziałek" #: ../../static/t/prefs/box.html:174 msgid "No signature" msgstr "Bez podpisu" #: ../../static/t/prefs/box.html:238 msgid "Full-functionality" msgstr "Pełnea funkcjonalność" #: ../../static/t/prefs/box.html:241 msgid "Safe mode" msgstr "Tryb bezpieczny" #: ../../static/t/prefs/box.html:242 msgid "" "Safe mode is less intensive on your web browser, but not as fully featured." msgstr "" "Tryb bezpieczny jest mniej intensywny w przeglądarce internetowej, ale nie w " "pełni funkcjonalny." #: ../../static/t/wiki/pagelist.html:1 msgid "List of Wiki pages" msgstr "Lista stron Wiki" #: ../../static/t/wiki/history.html:1 msgid "History of edits for this page" msgstr "Historia zmian dla tej strony" #: ../../static/t/who/list_static_header.html:1 msgid "Users currently on" msgstr "Użytkownicy obecnie na" #: ../../static/t/who/section.html:4 msgid "(kill)" msgstr "(zabij)" #: ../../static/t/who/bio.html:4 ../../static/t/user/show.html:4 msgid "User profile" msgstr "Profil użytkownika" #: ../../static/t/who/summary.html:5 ../../static/t/who/box_list_static.html:6 #: ../../static/t/room/edit/tab_feed.html:13 msgid "User name" msgstr "Nazwa użytkownika" #: ../../static/t/who/summary.html:6 ../../static/t/who/box_list_static.html:7 msgid "Room" msgstr "Pokój" #: ../../static/t/who/box_list_static.html:8 msgid "From host" msgstr "Połączony z komputera" #: ../../static/t/view_message.html:19 msgid "Edit" msgstr "Edycaj" #: ../../static/t/view_message.html:22 ../../static/t/view_message.html:26 msgid "Reply" msgstr "Odpowiedź" #: ../../static/t/view_message.html:23 msgid "ReplyQuoted" msgstr "Odpowiedz z cytatem" #: ../../static/t/view_message.html:27 msgid "ReplyAll" msgstr "Odpowiedz wszystkim" #: ../../static/t/view_message.html:28 msgid "Forward" msgstr "Przekaż" #: ../../static/t/view_message.html:31 ../../static/t/msg_listview.html:25 msgid "Move" msgstr "Przenieść" #: ../../static/t/view_message.html:34 msgid "Headers" msgstr "Nagłówki" #: ../../static/t/view_message.html:35 ../../static/t/msg_listview.html:28 msgid "Print" msgstr "Drukuj" #: ../../static/t/preferences.html:4 ../../static/t/preferences.html:7 msgid "Preferences and settings" msgstr "Preferencje i ustawienia" #: ../../static/t/user/list.html:3 msgid "User list for " msgstr "Lista użytkownika dla " #: ../../static/t/user/list.html:9 msgid "User Name" msgstr "Nazwa użytkownika" #: ../../static/t/user/list.html:10 msgid "Number" msgstr "Numer" #: ../../static/t/user/list.html:11 msgid "Access Level" msgstr "Poziom dostępu" #: ../../static/t/user/list.html:12 msgid "Last Login" msgstr "Ostatnie logowanie" #: ../../static/t/user/list.html:13 msgid "Total Logins" msgstr "Liczba zalogowań" #: ../../static/t/user/list.html:14 msgid "Total Posts" msgstr "Wszystkich postów" #: ../../static/t/user/show.html:9 msgid "Click here to send an instant message to" msgstr "Kliknij tutaj, aby wysłać wiadomość błyskawiczną do" #: ../../static/t/start_of_new_msgs.html:4 msgid "Old messages" msgstr "Stare wiadomości" #: ../../static/t/start_of_new_msgs.html:8 msgid "New messages" msgstr "Nowe wiadomości" #: ../../static/t/display_main_menu.html:7 msgid "Basic commands" msgstr "Podstawowe polecenia" #: ../../static/t/display_main_menu.html:10 msgid "Your info" msgstr "Twoje info" #: ../../static/t/display_main_menu.html:12 msgid "Advanced room commands" msgstr "Zaawansowane komendy pokoju" #: ../../static/t/iconbar/save.html:4 ../../static/t/iconbar/edit.html:4 msgid "Customize the icon bar" msgstr "Dostosuj pasek ikon" #: ../../static/t/iconbar/save.html:11 msgid "" "Your icon bar has been updated. Please select any of its choices to continue." msgstr "" "Twój pasek ikon został zaktualizowany. Proszę wybrać jedną z jego opcji, aby " "kontynuować." #: ../../static/t/iconbar/save.html:11 msgid "" "You may need to force refresh (SHIFT-F5)> in order for changes to take effect" msgstr "" "Może trzeba wymusić odświeżania (Shift-F5)>, aby zmiany odniosły skutek" #: ../../static/t/iconbar/edit.html:11 msgid "Display icons as:" msgstr "Ikony wyświetlaj jako:" #: ../../static/t/iconbar/edit.html:12 msgid "pictures and text" msgstr "obrazki i tekst" #: ../../static/t/iconbar/edit.html:13 msgid "pictures only" msgstr "tylko obrazki" #: ../../static/t/iconbar/edit.html:14 msgid "text only" msgstr "tylko tekst" #: ../../static/t/iconbar/edit.html:16 msgid "" "Select the icons you would like to see displayed in the 'icon bar' menu on " "the left side of the screen." msgstr "" "Wybierz ikony, które chcesz zobaczyć, wyświetlany w menu 'bar' po lewej " "stronie ekranu." #: ../../static/t/iconbar/edit.html:23 msgid "Site logo" msgstr "Logo strony" #: ../../static/t/iconbar/edit.html:23 msgid "An icon describing this site" msgstr "Ikona opisująca tę stronę" #: ../../static/t/iconbar/edit.html:29 msgid "Your summary page" msgstr "Twoja strona z zestawieniem" #: ../../static/t/iconbar/edit.html:36 msgid "Mail (inbox)" msgstr "Poczta (przychodząca)" #: ../../static/t/iconbar/edit.html:36 msgid "A shortcut to your email Inbox" msgstr "Skrót do skrzynki odbiorczej poczty e-mail" #: ../../static/t/iconbar/edit.html:42 msgid "Your personal address book" msgstr "Twoja osobista książka adresowa" #: ../../static/t/iconbar/edit.html:49 msgid "Your personal notes" msgstr "Twoje osobiste notatki" #: ../../static/t/iconbar/edit.html:55 msgid "A shortcut to your personal calendar" msgstr "Skrót do kalendarza osobistego" #: ../../static/t/iconbar/edit.html:61 msgid "A shortcut to your personal task list" msgstr "Skrót do osobistej listy zadań" #: ../../static/t/iconbar/edit.html:67 msgid "" "Clicking this icon displays a list of all accessible rooms (or folders) " "available." msgstr "" "Kliknięcie tej ikony wyświetla listę wszystkich dostępnych pokoi (lub " "folderów) dostępnych." #: ../../static/t/iconbar/edit.html:73 msgid "Who is online?" msgstr "Kot jest online?" #: ../../static/t/iconbar/edit.html:73 msgid "Clicking this icon displays a list of all users currently logged in." msgstr "" "Kliknięcie tej ikony wyświetla listę wszystkich aktualnie zalogowanych " "użytkowników" #: ../../static/t/iconbar/edit.html:79 msgid "" "Clicking this icon enters real-time chat mode with other users in the same " "room." msgstr "" "Kliknięcie tej ikony przechodzi w tryb rozmowy w czasie rzeczywistym z " "innymi użytkownikami w tym samym pokoju." #: ../../static/t/iconbar/edit.html:85 msgid "Advanced options" msgstr "Zaawansowane opcje" #: ../../static/t/iconbar/edit.html:85 msgid "Access to the complete menu of Citadel functions." msgstr "Dostęp do pełnego menu funkcji Citadel." #: ../../static/t/iconbar/edit.html:91 msgid "Citadel logo" msgstr "Citadel logo" #: ../../static/t/iconbar/edit.html:91 msgid "Displays the 'Powered by Citadel' icon" msgstr "Wyświetl ikone 'Powered by Citadel'" #: ../../static/t/room/edit/tab_expire.html:8 msgid "Message expire policy for this room" msgstr "Polityka wygasania wiadomość w tym pokoju" #: ../../static/t/room/edit/tab_expire.html:14 msgid "Use the default policy for this floor" msgstr "Użyj domyślnej polityki dla tego piętra" #: ../../static/t/room/edit/tab_expire.html:36 msgid "Message expire policy for this floor" msgstr "Polityak wygasania wiadomość na tym piętrze" #: ../../static/t/room/edit/tab_expire.html:42 msgid "Use the system default" msgstr "Użyj domyślnych ustawień systemowych" #: ../../static/t/room/edit/editroom.html:5 ../../static/t/room/edit.html:6 msgid "Configuration" msgstr "Ustawienia" #: ../../static/t/room/edit/editroom.html:6 ../../static/t/room/edit.html:7 msgid "Message expire policy" msgstr "Polityka wygasania wiadomości" #: ../../static/t/room/edit/editroom.html:7 ../../static/t/room/edit.html:8 msgid "Access controls" msgstr "Kontrola dostępu" #: ../../static/t/room/edit/editroom.html:8 ../../static/t/room/edit.html:9 msgid "Sharing" msgstr "Współdzielenie" #: ../../static/t/room/edit/editroom.html:9 ../../static/t/room/edit.html:10 msgid "Mailing list service" msgstr "Obsługa listy mailingowej" #: ../../static/t/room/edit/editroom.html:10 ../../static/t/room/edit.html:11 msgid "Remote retrieval" msgstr "Zdalne pobieranie" #: ../../static/t/room/edit/tab_config.html:6 msgid "name of room: " msgstr "nazwa pokoju: " #: ../../static/t/room/edit/tab_config.html:10 #: ../../static/t/room/create.html:20 msgid "Resides on floor: " msgstr "Znajduje się na piętrze: " #: ../../static/t/room/edit/tab_config.html:16 #: ../../static/t/room/create.html:68 msgid "Type of room:" msgstr "Typ pokoju:" #: ../../static/t/room/edit/tab_config.html:22 #: ../../static/t/room/create.html:73 msgid "Public (automatically appears to everyone)" msgstr "Publicznych (pojawia się automatycznie dla wszystkich)" #: ../../static/t/room/edit/tab_config.html:28 #: ../../static/t/room/create.html:77 msgid "Private - hidden (accessible to anyone who knows its name)" msgstr "Prywatne - ukryte (dostępne dla każdego, kto zna jego nazwę)" #: ../../static/t/room/edit/tab_config.html:35 #: ../../static/t/room/create.html:81 msgid "Private - require password: " msgstr "Prywatne - wymagają hasła: " #: ../../static/t/room/edit/tab_config.html:44 #: ../../static/t/room/create.html:86 msgid "Private - invitation only" msgstr "Tylko zaproszenia - prywatne" #: ../../static/t/room/edit/tab_config.html:51 #: ../../static/t/room/create.html:90 msgid "Personal (mailbox for you only)" msgstr "Prywatne (poczta tylko dla Ciebie)" #: ../../static/t/room/edit/tab_config.html:55 msgid "If private, cause current users to forget room" msgstr "Jeśli prywatny, to obecni użytkownicy zapomną ten pokój" #: ../../static/t/room/edit/tab_config.html:61 msgid "Preferred users only" msgstr "Preferowani użytkownicy tylko" #: ../../static/t/room/edit/tab_config.html:66 msgid "Read-only room" msgstr "Pokój tylko do odczytu" #: ../../static/t/room/edit/tab_config.html:71 msgid "All users allowed to post may also delete messages" msgstr "Wszyscy użytkownicy mogą dodawać, mogą usuwać wiadomości" #: ../../static/t/room/edit/tab_config.html:76 msgid "File directory room" msgstr "Pokój katalog plików" #: ../../static/t/room/edit/tab_config.html:80 msgid "Directory name: " msgstr "Nazwa katalogu: " #: ../../static/t/room/edit/tab_config.html:86 msgid "Uploading allowed" msgstr "Przesyłanie dozwolone" #: ../../static/t/room/edit/tab_config.html:91 msgid "Downloading allowed" msgstr "Pobieranie dozwolone" #: ../../static/t/room/edit/tab_config.html:96 msgid "Visible directory" msgstr "Katalog widoczny" #: ../../static/t/room/edit/tab_config.html:103 msgid "Network shared room" msgstr "Sieciowo wspólny pokój" #: ../../static/t/room/edit/tab_config.html:108 msgid "Permanent (does not auto-purge)" msgstr "Stałe (nie ma auto-czystki)" #: ../../static/t/room/edit/tab_config.html:113 msgid "Subject Required (Force users to specify a message subject)" msgstr "Temat Wymagany (Wymuś określić temat wiadomości)" #: ../../static/t/room/edit/tab_config.html:116 msgid "Anonymous messages" msgstr "Anonimowe wiadomości" #: ../../static/t/room/edit/tab_config.html:122 msgid "No anonymous messages" msgstr "Brak anonimowych wiadomości" #: ../../static/t/room/edit/tab_config.html:127 msgid "All messages are anonymous" msgstr "Wszystkie wiadomości są anonimowi" #: ../../static/t/room/edit/tab_config.html:132 msgid "Prompt user when entering messages" msgstr "Pytaj użytkownika podczas wprowadzania wiadomości" #: ../../static/t/room/edit/tab_config.html:136 msgid "Room aide: " msgstr "Adiutant pokoju: " #: ../../static/t/room/edit/tab_listserv.html:5 msgid "" "The contents of this room are being mailed as individual messages " "to the following list recipients:

    " msgstr "" "Zawartość tego pokoju zostanie wysłana jako indywidualne listy " "do następujących odbiorców:

    " #: ../../static/t/room/edit/tab_listserv.html:19 msgid "" "The contents of this room are being mailed in digest form to the " "following list recipients:

    " msgstr "" "Zawartość tego pokoju zostanie wysłana jako strezczenia w liscie " "do następujących odbiorców

    " #: ../../static/t/room/edit/tab_listserv.html:39 msgid "Add recipients from Contacts or other address books" msgstr "Dodaj odbiorców z listy kontaktów lub innych książek adresowych" #: ../../static/t/room/edit/tab_listserv.html:48 msgid "Allow non-subscribers to mail to this room." msgstr "Pozwól nie abonentom wysyłać mail do tego pokoju." #: ../../static/t/room/edit/tab_listserv.html:54 msgid "Room post publication needs Admin permission." msgstr "Publikacja po tego pokoju musisz mieć pozwolenie Admin'a." #: ../../static/t/room/edit/tab_listserv.html:59 msgid "Allow self-service subscribe/unsubscribe requests." msgstr "Pozwól na samoobsługę wniosków o zapisanie/ wypisanie." #: ../../static/t/room/edit/tab_listserv.html:65 msgid "The URL for subscribe/unsubscribe is: " msgstr "URL do zapisania / wypisania się jest: " #: ../../static/t/room/edit/digestrecp_removal.html:1 #: ../../static/t/room/edit/pop3client_removal.html:9 #: ../../static/t/room/edit/listrecp_removal.html:1 #: ../../static/t/room/edit/rssclient_removal.html:5 msgid "(remove)" msgstr "(usunąć)" #: ../../static/t/room/edit/tab_admin.html:5 msgid "Delete this room" msgstr "Usuń ten pokój" #: ../../static/t/room/edit/tab_admin.html:10 msgid "Set or change the icon for this rooms banner" msgstr "Ustawić lub zmienić ikonę dla tego pokoje baner" #: ../../static/t/room/edit/tab_admin.html:14 msgid "Edit this rooms Info file" msgstr "Edycja informacji o pokoju" #: ../../static/t/room/edit/tab_share.html:5 msgid "Shared with" msgstr "Współdzielony z" #: ../../static/t/room/edit/tab_share.html:6 msgid "Not shared with" msgstr "Nie współdzielony z" #: ../../static/t/room/edit/tab_share.html:11 #: ../../static/t/room/edit/tab_share.html:21 msgid "Remote node name" msgstr "Nazwa węzła" #: ../../static/t/room/edit/tab_share.html:12 #: ../../static/t/room/edit/tab_share.html:22 msgid "Remote room name" msgstr "Nazwa pokoju węzła" #: ../../static/t/room/edit/tab_share.html:13 #: ../../static/t/room/edit/tab_share.html:23 msgid "Actions" msgstr "Działania" #: ../../static/t/room/edit/tab_share.html:35 msgid "" "When sharing a room, it must be shared from both ends. Adding a node to the " "'shared' list sends messages out, but in order to receive messages, the " "other nodes must be configured to send messages out to your system as well. " "
  • If the remote room name is blank, it is assumed that the room name is " "identical on the remote node.
  • If the remote room name is different, the " "remote node must also configure the name of the room here." msgstr "" "Jeśli pokój jest współdzielony musi być współdzielony z obu stron. Dodawanie " "węzła do listy \"Udostępnione\" wysyła wiadomości, ale w celu uzyskania " "wiadomości, inne węzły muszą być skonfigurowane do wysyłania wiadomości w " "systemie.
  • Jeśli nazwa zdalnego pokój jest pusta, to przyjmuje się, że " "pokój ma identyczna nazwa na zdalnym węzle.
  • Jeśli nazwa zdalnego pokój " "jest inna, zdalny węzeł musi również skonfigurować nazwę pokoju." #: ../../static/t/room/edit/tab_feed.html:2 msgid "" "Retrieve messages from these remote POP3 accounts and store them in this " "room:" msgstr "" "Retrieve messages from these remote POP3 accounts and store them in this " "room:" #: ../../static/t/room/edit/tab_feed.html:12 msgid "Remote host" msgstr "Odległy host" #: ../../static/t/room/edit/tab_feed.html:15 msgid "Keep messages on server?" msgstr "Zachować wiadomości na serwerze?" #: ../../static/t/room/edit/tab_feed.html:16 msgid "Interval" msgstr "Interwał" #: ../../static/t/room/edit/tab_feed.html:31 msgid "Fetch the following RSS feeds and store them in this room:" msgstr "Pobrać następujące kanały RSS i przechowywać je w tym pokoju:" #: ../../static/t/room/edit/tab_feed.html:43 msgid "Feed URL" msgstr "Kanał URL" #: ../../static/t/room/edit/tab_access.html:5 msgid "" "The users listed below have access to this room. To remove a user from the " "access list, select the user name from the list and click 'Kick'." msgstr "" "Wymienieni poniżej użytkownicy mają dostęp do tego pokoju. Aby usunąć " "użytkownika z listy dostępu, wybierz nazwę użytkownika z listy i kliknij " "'Kick \"." #: ../../static/t/room/edit/tab_access.html:20 msgid "" "To grant another user access to this room, enter the user name in the box " "below and click 'Invite'." msgstr "" "Przyznania innemu użytkownikowi dostępu do tego pokoju, wprowadź nazwę " "użytkownika w polu poniżej i kliknij przycisk \"Invite\"." #: ../../static/t/room/edit/tab_access.html:26 msgid "Invite:" msgstr "Zaproszenia:" #: ../../static/t/room/edit/tab_access.html:35 msgid "Users" msgstr "Użytkownicy" #: ../../static/t/room/zapped_list.html:7 msgid "Zapped (forgotten) rooms" msgstr "Zapomniane pokoje" #: ../../static/t/room/zapped_list.html:10 msgid "Click on any room to un-zap it and goto that room." msgstr "" "Kliknij na jakiekolwiek pokoju aby ustawić un-zap i przejdź do tego pokoju." #: ../../static/t/room/display_private.html:7 msgid "Go to a hidden room" msgstr "Idź do ukrytego pokoju" #: ../../static/t/room/display_private.html:8 msgid "" "If you know the name of a hidden (guess-name) or passworded room, you can " "enter that room by typing its name below. Once you gain access to a private " "room, it will appear in your regular room listings so you don‘t have to keep " "returning here." msgstr "" "Jeśli znasz nazwę ukrytego (zgadnij-name) lub hasla pokoju można wejść do " "tego pokoju, wpisując jego nazwę poniżej. Po uzyskaniu dostępu do prywatnego " "pokoju, pojawi się w regularnych ofert w pokojach, więc nie musisz wracać " "tutaj." #: ../../static/t/room/display_private.html:14 msgid "Enter room name:" msgstr "Wpisz nazwę pokoju:" #: ../../static/t/room/display_private.html:21 msgid "Enter room password:" msgstr "Wprowadź hasło dla pokoju:" #: ../../static/t/room/create.html:11 #: ../../static/t/menu/advanced_roomcommands.html:6 msgid "Create a new room" msgstr "Utwórz nowy pokój" #: ../../static/t/room/create.html:18 msgid "Name of room: " msgstr "Nazwa pokoju: " #: ../../static/t/room/create.html:32 msgid "Default view for room: " msgstr "Domyślny widok pokoju: " #: ../../static/t/room/zap_this.html:3 msgid "Zap (forget/unsubscribe) the current room" msgstr "Zapomnij /wypisz się z bieżacego pokoju" #: ../../static/t/room/zap_this.html:6 msgid "If you select this option," msgstr "Jeśli wybierzesz tę opcję," #: ../../static/t/room/zap_this.html:8 msgid "will disappear from your room list. Is this what you wish to do?" msgstr "zniknie z listy pokjów. Czy to chcesz zrobić?" #: ../../static/t/menu/your_info.html:2 msgid "Change your preferences and settings" msgstr "Zmień swoje preferencje i ustawienia" #: ../../static/t/menu/your_info.html:3 msgid "Update your contact information" msgstr "Aktualizuj swoje dane kontaktowe" #: ../../static/t/menu/your_info.html:5 msgid "Enter your 'bio'" msgstr "Wprowadź swoje 'bio'" #: ../../static/t/menu/your_info.html:6 msgid "Edit your online photo" msgstr "Edytuj swoje online zdjęcie" #: ../../static/t/menu/your_info.html:8 msgid "Edit your push email settings" msgstr "Edycja Twoich ustawień push email" #: ../../static/t/menu/your_info.html:9 msgid "Manage your OpenIDs" msgstr "Zarządzaj swoim OpenIDs" #: ../../static/t/menu/basic_commands.html:3 msgid "List known rooms" msgstr "Lista znanych pokoi" #: ../../static/t/menu/basic_commands.html:3 msgid "Where can I go from here?" msgstr "Gdzie dalej?" #: ../../static/t/menu/basic_commands.html:4 ../../static/t/navbar.html:168 msgid "Goto next room" msgstr "Idź do następnego pokoju" #: ../../static/t/menu/basic_commands.html:4 msgid "...with unread messages" msgstr "...z nieprzeczytanymi wiadomościami" #: ../../static/t/menu/basic_commands.html:5 msgid "Skip to next room" msgstr "Przejdź do następnego pkoju" #: ../../static/t/menu/basic_commands.html:5 msgid "(come back here later)" msgstr "(wrócić tu później)" #: ../../static/t/menu/basic_commands.html:6 ../../static/t/navbar.html:5 msgid "Ungoto" msgstr "Wróć" #: ../../static/t/menu/basic_commands.html:6 msgid "oops! Back to " msgstr "Ups! Powrót do " #: ../../static/t/menu/basic_commands.html:10 ../../static/t/navbar.html:13 msgid "Read new messages" msgstr "Przeczytaj nowe wiadomości" #: ../../static/t/menu/basic_commands.html:10 msgid "...in this room" msgstr "... w tym pokoju" #: ../../static/t/menu/basic_commands.html:11 ../../static/t/navbar.html:19 msgid "Read all messages" msgstr "Czytaj wszystkie wiadomości" #: ../../static/t/menu/basic_commands.html:11 msgid "...old and new" msgstr "...stare i nowe" #: ../../static/t/menu/basic_commands.html:12 ../../static/t/navbar.html:25 msgid "Enter a message" msgstr "Wprowadź wiadmomość" #: ../../static/t/menu/basic_commands.html:12 msgid "(post in this room)" msgstr "(odpowiedzieć w tym pokoju)" #: ../../static/t/menu/basic_commands.html:13 msgid "File library" msgstr "Biblioteka plików" #: ../../static/t/menu/basic_commands.html:13 msgid "(List files available for download)" msgstr "(Lista plików dostępnych do pobrania)" #: ../../static/t/menu/basic_commands.html:17 msgid "Summary page" msgstr "Strona z zestawieniem" #: ../../static/t/menu/basic_commands.html:17 msgid "Summary of my account" msgstr "Podsumowanie mojego konta" #: ../../static/t/menu/basic_commands.html:18 msgid "User list" msgstr "Lista użytkowników" #: ../../static/t/menu/basic_commands.html:18 msgid "(all registered users)" msgstr "(wszyscy zarejstrowani użytkownicy)" #: ../../static/t/menu/basic_commands.html:19 msgid "Bye!" msgstr "Do zobaczenia!" #: ../../static/t/menu/advanced_roomcommands.html:3 msgid "Edit or delete this room" msgstr "Edytować lub usunąć ten pokój" #: ../../static/t/menu/advanced_roomcommands.html:5 msgid "Go to a 'hidden' room" msgstr "Idź do 'ukrytego' pokoju" #: ../../static/t/menu/advanced_roomcommands.html:7 msgid "Zap (forget) this room" msgstr "Zapomnij ten pokój" #: ../../static/t/menu/advanced_roomcommands.html:8 msgid "List all forgotten rooms" msgstr "Listuj wszystkie zapomniane pokoje" #: ../../static/t/navbar.html:34 msgid "View contacts" msgstr "Zobacz kontakty" #: ../../static/t/navbar.html:40 msgid "Add new contact" msgstr "Dodaj nowy kontakt" #: ../../static/t/navbar.html:49 msgid "Day view" msgstr "Widok dnia" #: ../../static/t/navbar.html:55 msgid "Month view" msgstr "Widok miesiąca" #: ../../static/t/navbar.html:61 msgid "Add new event" msgstr "Dodaj nowe wydarzenie" #: ../../static/t/navbar.html:70 msgid "Calendar list" msgstr "Lista kalendarza" #: ../../static/t/navbar.html:79 msgid "View tasks" msgstr "Wyświetlanie zadań" #: ../../static/t/navbar.html:85 msgid "Add new task" msgstr "Dodaj nowe zadanie" #: ../../static/t/navbar.html:94 msgid "View notes" msgstr "Wyświetlanie notatek" #: ../../static/t/navbar.html:101 msgid "Add new note" msgstr "Dodaj nową notatkę" #: ../../static/t/navbar.html:110 msgid "Refresh message list" msgstr "Odśwież listę wiadomości" #: ../../static/t/navbar.html:122 msgid "Write mail" msgstr "Napisz list" #: ../../static/t/navbar.html:132 msgid "Wiki home" msgstr "Strona domowa Wiki" #: ../../static/t/navbar.html:139 msgid "Edit this page" msgstr "Edytuj tę stronę" #: ../../static/t/navbar.html:145 msgid "History" msgstr "Historia" #: ../../static/t/navbar.html:154 msgid "New blog post" msgstr "Nowy wpis na blogu" #: ../../static/t/navbar.html:162 msgid "Skip this room" msgstr "Pomiń ten pokój" #: ../../static/t/msg_listview.html:18 msgid "Loading messages from server, please wait" msgstr "Ładowanie wiadomości z serwera, proszę czekać" #: ../../static/t/msg_listview.html:24 msgid "Open in new window" msgstr "Otwórz w nowym oknie" #: ../../static/t/msg_listview.html:26 msgid "Copy" msgstr "Kopiuj" #: ../../static/t/view_mailq/message.html:6 msgid "Originaly posted in: " msgstr "Oryginalnie pisał w: " #: ../../static/t/view_mailq/header.html:15 msgid "Refresh this page" msgstr "Odśwież te strone" #: ../../static/t/view_mailq/header.html:21 msgid "Message ID" msgstr "ID wiadomości" #: ../../static/t/view_mailq/header.html:23 msgid "Date/time submitted" msgstr "Data/czas wysłania" #: ../../static/t/view_mailq/header.html:25 msgid "Next attempt" msgstr "Następna próba" #: ../../static/t/view_mailq/header.html:29 msgid "Recipients" msgstr "Adresaci" #: ../../static/t/view_mailq/footer_empty.html:4 msgid "The queue is empty." msgstr "Kolejka jest pusta" #: ../../static/t/view_mailq/footer_empty.html:9 #: ../../static/t/view_mailq/footer.html:5 msgid "You do not have permission to view this resource." msgstr "Nie masz uprawnień, aby zobaczyć ten zasób." #: ../../static/t/get_logged_in.html:5 msgid "You must be logged in to access this page." msgstr "Musisz się zalogować, aby uzyskać dostęp do tej strony." #: ../../static/t/get_logged_in.html:9 #: ../../static/t/edit_message/attachments_pane.html:3 msgid "Close window" msgstr "Zamknij okno" #: ../../static/t/get_logged_in.html:55 msgid "Log in using a user name and password" msgstr "Zaloguj się przy użyciu
    nazwy użytkownika i hasła" #: ../../static/t/get_logged_in.html:60 ../../static/t/get_logged_in.html:75 msgid "Password:" msgstr "Hasło" #: ../../static/t/get_logged_in.html:65 ../../static/t/get_logged_in.html:69 msgid "New user? Register now" msgstr "Nowy użytkownik? Zarejestruj się" #: ../../static/t/get_logged_in.html:70 msgid "" "enter the name and password you wish to use, and click "New User." " msgstr "" "Wprowadź login i hasło, którego chcesz używać, a następnie kliknij przycisk " ""Nowy użytkownik" " #: ../../static/t/get_logged_in.html:83 msgid "Log in using OpenID" msgstr "Zaloguj się używając OpenID" #: ../../static/t/get_logged_in.html:85 msgid "OpenID URL:" msgstr "OpenID URL:" #: ../../static/t/get_logged_in.html:92 msgid "Log in using Google" msgstr "Zaloguj się za pomocą Google" #: ../../static/t/get_logged_in.html:97 msgid "Log in using Yahoo" msgstr "Zaloguj się za pomocą Yahoo" #: ../../static/t/get_logged_in.html:102 msgid "Log in using AOL or AIM" msgstr "Zaloguj się za pomocą AOL lub AIM" #: ../../static/t/get_logged_in.html:104 msgid "Enter your AOL or AIM screen name:" msgstr "Wpisz swój AOL lub Nazwe użytkownika AIM:" #: ../../static/t/get_logged_in.html:115 msgid "Please wait" msgstr "Proszę czekać" #: ../../static/t/summary/page.html:4 msgid "Summary page for " msgstr "Zestawienie dla " #: ../../static/t/summary/page.html:21 msgid "Messages" msgstr "Wiadomości" #: ../../static/t/summary/page.html:39 msgid "Today on your calendar" msgstr "Dziś w twoim kalendarzu" #: ../../static/t/summary/page.html:51 msgid "Who‘s online now" msgstr "Kto jest online" #: ../../static/t/summary/page.html:60 msgid "About this server" msgstr "O tym serwerze" #: ../../static/t/summary/page.html:63 msgid "You are connected to" msgstr "Jesteś połączony" #: ../../static/t/summary/page.html:64 msgid "running" msgstr "uruchomiona" #: ../../static/t/summary/page.html:65 msgid "with" msgstr "z" #: ../../static/t/summary/page.html:66 msgid "server build" msgstr "wersja servera" #: ../../static/t/summary/page.html:67 msgid "and located in" msgstr "mieszczącym się w" #: ../../static/t/summary/page.html:68 msgid "Your system administrator is" msgstr "Administrator systemu:" #: ../../static/t/edit_message/attachments_pane.html:16 msgid "Attach file" msgstr "Dołącz plik" #: ../../static/t/edit_message/attachments_pane.html:21 msgid "Upload" msgstr "Wyślij" #: ../../static/t/edit_message/section_attach_select.html:4 msgid "Remove" msgstr "Usuń" #: ../../static/t/loggedinas.html:3 msgid "Logged in as" msgstr "Zalogowany jako" #: ../../static/t/loggedinas.html:6 msgid "Not logged in." msgstr "Nie jesteś zalogowany" webcit-8.24-dfsg.orig/po/webcit/en_GB.po0000644000175000017500000032500212271477123017607 0ustar michaelmichael# translation of webcit.po to en_GB.po # Copyright (C) 2008 - 2009 The Citadel Project - http://www.citadel.org # This file is distributed under the revised BSD license # # WebCit messages for UK English # Copyright (C) 2005 David Given # This file is distributed under GPL v3 # msgid "" msgstr "" "Project-Id-Version: WebCit\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-03-20 01:03-0400\n" "PO-Revision-Date: 2012-09-19 15:57+0000\n" "Last-Translator: Biffaboy \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2012-09-20 04:31+0000\n" "X-Generator: Launchpad (build 15985)\n" "Language: \n" #: ../../roomops.c:708 ../../roomops.c:1005 ../../sieve.c:364 msgid "Cancelled. Changes were not saved." msgstr "Cancelled. Changes were not saved." #: ../../roomops.c:838 ../../sieve.c:417 msgid "Your changes have been saved." msgstr "Your changes have been saved." #: ../../roomops.c:881 #, c-format msgid "User '%s' kicked out of room '%s'." msgstr "User '%s' kicked out of room '%s'." #: ../../roomops.c:898 #, c-format msgid "User '%s' invited to room '%s'." msgstr "User '%s' invited to room '%s'." #: ../../roomops.c:927 msgid "Cancelled. No new room was created." msgstr "Cancelled. No new room was created." #: ../../roomops.c:1187 msgid "Floor has been deleted." msgstr "Floor has been deleted." #: ../../roomops.c:1211 msgid "New floor has been created." msgstr "New floor has been created." #: ../../roomops.c:1290 msgid "Room list view" msgstr "Room list view" #: ../../roomops.c:1293 msgid "Show empty floors" msgstr "Show empty floors" #: ../../roomviews.c:50 msgid "Bulletin Board" msgstr "Bulletin Board" #: ../../roomviews.c:51 msgid "Mail Folder" msgstr "Mail Folder" #: ../../roomviews.c:52 msgid "Address Book" msgstr "Address Book" #: ../../roomviews.c:53 ../../static/t/iconbar.html:24 #: ../../static/t/iconbar/edit.html:55 msgid "Calendar" msgstr "Calendar" #: ../../roomviews.c:54 msgid "Task List" msgstr "Task List" #: ../../roomviews.c:55 msgid "Notes List" msgstr "Notes List" #: ../../roomviews.c:56 msgid "Wiki" msgstr "Wiki" #: ../../roomviews.c:57 msgid "Calendar List" msgstr "Calendar List" #: ../../roomviews.c:58 msgid "Journal" msgstr "Journal" #: ../../roomviews.c:59 msgid "Drafts" msgstr "Drafts" #: ../../roomviews.c:60 msgid "Blog" msgstr "Blog" #: ../../tasks.c:93 msgid "Completed?" msgstr "Completed?" #: ../../tasks.c:95 msgid "Name of task" msgstr "Name of task" #: ../../tasks.c:97 msgid "Date due" msgstr "Date due" #: ../../tasks.c:99 msgid "Category" msgstr "Category" #: ../../tasks.c:101 msgid "Show All" msgstr "Show All" #: ../../tasks.c:223 msgid "Edit task" msgstr "Edit task" #: ../../tasks.c:242 ../../calendar.c:98 ../../calendar_view.c:298 #: ../../calendar_view.c:959 ../../calendar_view.c:1003 #: ../../calendar_view.c:1084 msgid "Summary:" msgstr "Summary:" #: ../../tasks.c:253 msgid "Start date:" msgstr "Start date:" #: ../../tasks.c:261 ../../tasks.c:291 msgid "No date" msgstr "No date" #: ../../tasks.c:265 ../../tasks.c:294 msgid "or" msgstr "or" #: ../../tasks.c:279 ../../tasks.c:308 msgid "Time associated" msgstr "Time associated" #: ../../tasks.c:283 msgid "Due date:" msgstr "Due date:" #: ../../tasks.c:312 msgid "Completed:" msgstr "Completed:" #: ../../tasks.c:323 msgid "Category:" msgstr "Category:" #: ../../tasks.c:333 ../../calendar.c:159 ../../static/t/files.html:12 msgid "Description:" msgstr "Description:" #: ../../tasks.c:351 ../../event.c:764 msgid "Save" msgstr "Save" #: ../../tasks.c:352 ../../event.c:765 ../../static/t/aide/inet/section.html:5 #: ../../static/t/view_blog/comment.html:12 #: ../../static/t/view_blog/post.html:15 ../../static/t/view_message.html:32 #: ../../static/t/navbar.html:116 ../../static/t/msg_listview.html:27 msgid "Delete" msgstr "Delete" #: ../../tasks.c:353 ../../vcard_edit.c:1216 ../../paging.c:66 #: ../../event.c:767 ../../sysmsgs.c:69 ../../who.c:200 ../../auth.c:812 #: ../../static/t/edit_message.html:135 ../../static/t/confirmlogoff.html:4 msgid "Cancel" msgstr "Cancel" #: ../../tasks.c:423 ../../calendar_view.c:1379 msgid "Untitled Task" msgstr "Untitled Task" #: ../../fmt_date.c:310 msgid "Time format" msgstr "Time format" #: ../../listsub.c:54 ../../static/t/listsub/display.html:5 msgid "List subscription" msgstr "List subscription" #: ../../listsub.c:67 ../../static/t/listsub/display.html:9 msgid "List subscribe/unsubscribe" msgstr "List subscribe/unsubscribe" #: ../../listsub.c:87 ../../static/t/listsub/display.html:15 #: ../../static/t/listsub/display.html:34 msgid "Confirmation request sent" msgstr "Confirmation request sent" #: ../../listsub.c:89 #, c-format msgid "" "You are subscribing %s to the %s mailing list. The " "listserver has sent you an e-mail with one additional Web link for you to " "click on to confirm your subscription. This extra step is for your " "protection, as it prevents others from being able to subscribe you to lists " "without your consent.

    Please click on the link which is being e-" "mailed to you and your subscription will be confirmed.
    \n" msgstr "" "You are subscribing %s to the %s mailing list. The " "listserver has sent you an e-mail with one additional Web link for you to " "click on to confirm your subscription. This extra step is for your " "protection, as it prevents others from being able to subscribe you to lists " "without your consent.

    Please click on the link which is being e-" "mailed to you and your subscription will be confirmed.
    \n" #: ../../listsub.c:102 ../../static/t/listsub/display.html:24 msgid "Go back..." msgstr "Go back..." #: ../../listsub.c:253 ../../listsub.c:291 ../../listsub.c:327 #: ../../listsub.c:334 msgid "You need to specify the mailinglist to subscribe to." msgstr "You need to specify the mailinglist to subscribe to." #: ../../listsub.c:260 ../../listsub.c:298 msgid "You need to specify the email address you'd like to subscribe with." msgstr "You need to specify the email address you'd like to subscribe with." #: ../../blogview_renderer.c:58 ../../blogview_renderer.c:74 #, c-format msgid "%d comments" msgstr "%d comments" #: ../../blogview_renderer.c:61 ../../blogview_renderer.c:77 msgid "permalink" msgstr "permalink" #: ../../blogview_renderer.c:302 msgid "Newer posts" msgstr "Newer posts" #: ../../blogview_renderer.c:311 msgid "Older posts" msgstr "Older posts" #: ../../useredit.c:629 msgid "" "An error occurred while trying to create or edit this address book entry." msgstr "" "An error occurred while trying to create or edit this address book entry." #: ../../useredit.c:717 msgid "Changes were not saved." msgstr "Changes were not saved." #: ../../useredit.c:782 msgid "A new user has been created." msgstr "A new user has been created." #: ../../useredit.c:786 msgid "" "You are attempting to create a new user from within Citadel while running in " "host based authentication mode. In this mode, you must create new users on " "the host system, not within Citadel." msgstr "" "You are attempting to create a new user from within Citadel while running in " "host based authentication mode. In this mode, you must create new users on " "the host system, not within Citadel." #: ../../bbsview_renderer.c:312 msgid "Go to page: " msgstr "Go to page: " #: ../../bbsview_renderer.c:354 msgid "First" msgstr "First" #: ../../bbsview_renderer.c:360 msgid "Last" msgstr "Last" #: ../../graphics.c:56 msgid "Graphics upload has been cancelled." msgstr "Graphics upload has been cancelled." #: ../../graphics.c:62 msgid "You didn't upload a file." msgstr "You didn't upload a file." #: ../../graphics.c:112 msgid "your photo" msgstr "your photo" #: ../../graphics.c:119 msgid "the icon for this room" msgstr "the icon for this room" #: ../../graphics.c:127 msgid "the Greetingpicture for the login prompt" msgstr "the Greetingpicture for the login prompt" #: ../../graphics.c:135 msgid "the Logoff banner picture" msgstr "the Logoff banner picture" #: ../../graphics.c:146 msgid "the icon for this floor" msgstr "the icon for this floor" #: ../../calendar_tools.c:100 msgid "Hour: " msgstr "Hour: " #: ../../calendar_tools.c:120 msgid "Minute: " msgstr "Minute: " #: ../../calendar_tools.c:191 msgid "(status unknown)" msgstr "(status unknown)" #: ../../calendar_tools.c:207 msgid "(needs action)" msgstr "(needs action)" #: ../../calendar_tools.c:210 msgid "(accepted)" msgstr "(accepted)" #: ../../calendar_tools.c:213 msgid "(declined)" msgstr "(declined)" #: ../../calendar_tools.c:216 msgid "(tenative)" msgstr "(tenative)" #: ../../calendar_tools.c:219 msgid "(delegated)" msgstr "(delegated)" #: ../../calendar_tools.c:222 msgid "(completed)" msgstr "(completed)" #: ../../calendar_tools.c:225 msgid "(in process)" msgstr "(in process)" #: ../../calendar_tools.c:228 msgid "(none)" msgstr "(none)" #: ../../notes.c:343 msgid "Click on any note to edit it." msgstr "Click on any note to edit it." #: ../../vcard_edit.c:175 ../../vcard_edit.c:178 msgid "(no name)" msgstr "(no name)" #: ../../vcard_edit.c:443 msgid " (work)" msgstr " (work)" #: ../../vcard_edit.c:445 msgid " (home)" msgstr " (home)" #: ../../vcard_edit.c:447 msgid " (cell)" msgstr " (mobile)" #: ../../vcard_edit.c:458 ../../vcard_edit.c:1120 msgid "Address:" msgstr "Address:" #: ../../vcard_edit.c:526 msgid "Telephone:" msgstr "Telephone:" #: ../../vcard_edit.c:531 msgid "E-mail:" msgstr "E-mail:" #: ../../vcard_edit.c:779 msgid "This address book is empty." msgstr "This address book is empty." #: ../../vcard_edit.c:793 msgid "An internal error has occurred." msgstr "An internal error has occurred." #: ../../vcard_edit.c:944 msgid "Error" msgstr "Error" #: ../../vcard_edit.c:1048 msgid "Edit contact information" msgstr "Edit contact information" #: ../../vcard_edit.c:1068 msgid "Prefix" msgstr "Prefix" #: ../../vcard_edit.c:1068 msgid "First Name" msgstr "First Name" #: ../../vcard_edit.c:1068 msgid "Middle Name" msgstr "Middle Name" #: ../../vcard_edit.c:1068 msgid "Last Name" msgstr "Last Name" #: ../../vcard_edit.c:1068 msgid "Suffix" msgstr "Suffix" #: ../../vcard_edit.c:1089 msgid "Display name:" msgstr "Display name:" #: ../../vcard_edit.c:1096 msgid "Title:" msgstr "Title:" #: ../../vcard_edit.c:1103 msgid "Organization:" msgstr "Organisation:" #: ../../vcard_edit.c:1114 msgid "PO box:" msgstr "PO box:" #: ../../vcard_edit.c:1130 msgid "City:" msgstr "City:" #: ../../vcard_edit.c:1136 msgid "State:" msgstr "County:" #: ../../vcard_edit.c:1142 msgid "ZIP code:" msgstr "Post code:" #: ../../vcard_edit.c:1148 msgid "Country:" msgstr "Country:" #: ../../vcard_edit.c:1158 msgid "Home telephone:" msgstr "Home telephone:" #: ../../vcard_edit.c:1164 msgid "Work telephone:" msgstr "Work telephone:" #: ../../vcard_edit.c:1170 msgid "Mobile telephone:" msgstr "Mobile telephone:" #: ../../vcard_edit.c:1176 msgid "Fax number:" msgstr "Fax number:" #: ../../vcard_edit.c:1187 msgid "Primary Internet e-mail address" msgstr "Primary Internet e-mail address" #: ../../vcard_edit.c:1194 msgid "Internet e-mail aliases" msgstr "Internet e-mail aliases" #: ../../vcard_edit.c:1215 ../../sysmsgs.c:67 msgid "Save changes" msgstr "Save changes" #: ../../vcard_edit.c:1261 msgid "Unable to enter the room to save your message" msgstr "Unable to enter the room to save your message" #: ../../vcard_edit.c:1265 msgid "Aborting." msgstr "Aborting." #: ../../vcard_edit.c:1297 ../../vcard_edit.c:1341 ../../auth.c:367 #: ../../auth.c:397 msgid "An error has occurred." msgstr "An error has occurred." #: ../../vcard_edit.c:1399 msgid "Could Not decode vcard photo\n" msgstr "Could Not decode vcard photo\n" #: ../../preferences.c:880 msgid "Cancelled. No settings were changed." msgstr "Cancelled. No settings were changed." #: ../../preferences.c:1092 msgid "Make this my start page" msgstr "Make this my start page" #: ../../preferences.c:1130 msgid "This isn't allowed to become the start page." msgstr "This isn't allowed to become the start page." #: ../../preferences.c:1132 msgid "You no longer have a start page selected." msgstr "You no longer have a start page selected." #: ../../preferences.c:1182 msgid "Prefered startpage" msgstr "Prefered startpage" #: ../../calendar.c:76 msgid "Meeting invitation" msgstr "Meeting invitation" #: ../../calendar.c:79 msgid "Attendee's reply to your invitation" msgstr "Attendee's reply to your invitation" #: ../../calendar.c:82 msgid "Published event" msgstr "Published event" #: ../../calendar.c:85 msgid "This is an unknown type of calendar item." msgstr "This is an unknown type of calendar item." #: ../../calendar.c:107 ../../calendar_view.c:306 ../../calendar_view.c:964 #: ../../calendar_view.c:1008 ../../calendar_view.c:1089 msgid "Location:" msgstr "Location:" #: ../../calendar.c:132 ../../calendar_view.c:351 ../../calendar_view.c:970 msgid "Date:" msgstr "Date:" #: ../../calendar.c:139 ../../calendar_view.c:373 ../../calendar_view.c:1013 #: ../../calendar_view.c:1099 msgid "Starting date/time:" msgstr "Starting date/time:" #: ../../calendar.c:150 ../../calendar_view.c:376 ../../calendar_view.c:1015 #: ../../calendar_view.c:1101 msgid "Ending date/time:" msgstr "Ending date/time:" #: ../../calendar.c:168 ../../event.c:90 msgid "Recurrence" msgstr "Recurrence" #: ../../calendar.c:169 ../../event.c:505 msgid "This is a recurring event" msgstr "This is a recurring event" #: ../../calendar.c:178 msgid "Attendee:" msgstr "Attendee:" #: ../../calendar.c:218 #, c-format msgid "This is an update of '%s' which is already in your calendar." msgstr "This is an update of '%s' which is already in your calendar." #: ../../calendar.c:222 #, c-format msgid "" "This event would conflict with '%s' which is already in your calendar." msgstr "" "This event would conflict with '%s' which is already in your calendar." #: ../../calendar.c:227 msgid "Update:" msgstr "Update:" #: ../../calendar.c:228 msgid "CONFLICT:" msgstr "CONFLICT:" #: ../../calendar.c:251 msgid "How would you like to respond to this invitation?" msgstr "How would you like to respond to this invitation?" #: ../../calendar.c:252 msgid "Accept" msgstr "Accept" #: ../../calendar.c:253 msgid "Tentative" msgstr "Tentative" #: ../../calendar.c:254 msgid "Decline" msgstr "Decline" #: ../../calendar.c:271 msgid "Click Update to accept this reply and update your calendar." msgstr "Click Update to accept this reply and update your calendar." #: ../../calendar.c:272 msgid "Update" msgstr "Update" #: ../../calendar.c:273 msgid "Ignore" msgstr "Ignore" #: ../../calendar.c:295 msgid "There was an error parsing this calendar item." msgstr "There was an error parsing this calendar item." #: ../../calendar.c:328 msgid "" "You have accepted this meeting invitation. It has been entered into your " "calendar." msgstr "" "You have accepted this meeting invitation. It has been entered into your " "calendar." #: ../../calendar.c:332 msgid "" "You have tentatively accepted this meeting invitation. It has been " "'pencilled in' to your calendar." msgstr "" "You have tentatively accepted this meeting invitation. It has been " "'pencilled in' to your calendar." #: ../../calendar.c:336 msgid "" "You have declined this meeting invitation. It has not been entered " "into your calendar." msgstr "" "You have declined this meeting invitation. It has not been entered " "into your calendar." #: ../../calendar.c:341 msgid "A reply has been sent to the meeting organizer." msgstr "A reply has been sent to the meeting organiser." #. / Translators: RSVP aka Répondez s'il-vous-plaît Is the term #. / that the recipient of an ical-invitation should please #. / answer this request. #: ../../calendar.c:376 msgid "Your calendar has been updated to reflect this RSVP." msgstr "Your calendar has been updated to reflect this RSVP." #: ../../calendar.c:378 msgid "" "You have chosen to ignore this RSVP. Your calendar has not been " "updated." msgstr "" "You have chosen to ignore this RSVP. Your calendar has not been " "updated." #: ../../calendar.c:932 msgid "Calendar day view begins at:" msgstr "Calendar day view begins at:" #: ../../calendar.c:933 msgid "Calendar day view ends at:" msgstr "Calendar day view ends at:" #: ../../calendar.c:934 msgid "Week starts on:" msgstr "Week starts on:" #: ../../paging.c:35 msgid "Send instant message" msgstr "Send instant message" #: ../../paging.c:43 msgid "Send an instant message to: " msgstr "Send an instant message to: " #: ../../paging.c:57 msgid "Enter message text:" msgstr "Enter message text:" #: ../../paging.c:65 ../../static/t/edit_message.html:109 msgid "Send message" msgstr "Send message" #: ../../paging.c:84 msgid "Message was not sent." msgstr "Message was not sent." #: ../../paging.c:95 msgid "Message has been sent to " msgstr "Message has been sent to " #: ../../iconbar.c:328 msgid "Iconbar Setting" msgstr "Iconbar Setting" #. #. * Set to 'unknown' right from the beginning. Unless we learn #. * something else, that's what we'll go with. #. #: ../../availability.c:148 msgid "availability unknown" msgstr "availability unknown" #: ../../availability.c:169 msgid "free" msgstr "free" #: ../../availability.c:179 msgid "BUSY" msgstr "BUSY" #: ../../serv_func.c:193 msgid "" "This server is already serving its maximum number of users and cannot accept " "any additional logins at this time. Please try again later or contact your " "system administrator." msgstr "" "This server is already serving its maximum number of users and cannot accept " "any additional logins at this time. Please try again later or contact your " "system administrator." #: ../../serv_func.c:198 ../../serv_func.c:227 msgid "Received unexpected answer from Citadel server; bailing out." msgstr "Received unexpected answer from Citadel server; bailing out." #: ../../serv_func.c:236 #, c-format msgid "" "You are connected to a Citadel server running Citadel %d.%02d. \n" "In order to run this version of WebCit you must also have Citadel %d.%02d or " "newer.\n" "\n" "\n" msgstr "" "You are connected to a Citadel server running Citadel %d.%02d. \n" "In order to run this version of WebCit you must also have Citadel %d.%02d or " "newer.\n" "\n" "\n" #: ../../event.c:70 msgid "seconds" msgstr "seconds" #: ../../event.c:71 msgid "minutes" msgstr "minutos" #: ../../event.c:72 msgid "hours" msgstr "hours" #: ../../event.c:73 msgid "days" msgstr "days" #: ../../event.c:74 msgid "weeks" msgstr "weeks" #: ../../event.c:75 msgid "months" msgstr "months" #: ../../event.c:76 msgid "years" msgstr "years" #: ../../event.c:77 msgid "never" msgstr "never" #: ../../event.c:81 msgid "first" msgstr "first" #: ../../event.c:82 msgid "second" msgstr "second" #: ../../event.c:83 msgid "third" msgstr "third" #: ../../event.c:84 msgid "fourth" msgstr "fourth" #: ../../event.c:85 msgid "fifth" msgstr "fifth" #: ../../event.c:88 msgid "Event" msgstr "Event" #: ../../event.c:89 ../../event.c:437 ../../event.c:449 msgid "Attendees" msgstr "Attendees" #: ../../event.c:167 msgid "Add or edit an event" msgstr "Add or edit an event" #: ../../event.c:206 ../../static/t/iconbar.html:13 #: ../../static/t/iconbar/edit.html:29 msgid "Summary" msgstr "Summary" #: ../../event.c:217 msgid "Location" msgstr "Location:" #: ../../event.c:228 ../../calendar_view.c:760 msgid "Start" msgstr "Start" #: ../../event.c:271 ../../calendar_view.c:957 ../../calendar_view.c:986 msgid "All day event" msgstr "All day event" #: ../../event.c:277 ../../calendar_view.c:761 msgid "End" msgstr "End" #: ../../event.c:327 ../../static/t/iconbar.html:34 #: ../../static/t/iconbar/edit.html:49 msgid "Notes" msgstr "Notes" #: ../../event.c:369 msgid "Organizer" msgstr "Organiser" #: ../../event.c:374 msgid "(you are the organizer)" msgstr "(you are the organiser)" #: ../../event.c:392 msgid "Show time as:" msgstr "Show time as:" #: ../../event.c:415 msgid "Free" msgstr "Free" #: ../../event.c:423 msgid "Busy" msgstr "Busy" #: ../../event.c:440 msgid "(One per line)" msgstr "(One per line)" #: ../../event.c:450 ../../static/t/edit_message.html:143 #: ../../static/t/iconbar.html:29 ../../static/t/iconbar/edit.html:42 msgid "Contacts" msgstr "Contacts" #: ../../event.c:513 msgid "Recurrence rule" msgstr "Recurrence rule" #: ../../event.c:517 msgid "Repeats every" msgstr "Repeats every" #. begin 'weekday_selector' div #: ../../event.c:535 msgid "on these weekdays:" msgstr "on these weekdays:" #: ../../event.c:593 #, c-format msgid "on day %s%d%s of the month" msgstr "on day %s%d%s of the month" #: ../../event.c:602 ../../event.c:664 msgid "on the " msgstr "on the " #: ../../event.c:626 msgid "of the month" msgstr "of the month" #: ../../event.c:655 msgid "every " msgstr "every " #: ../../event.c:656 msgid "year on this date" msgstr "year on this date" #: ../../event.c:688 ../../static/t/msg_listselector_bottom.html:7 #: ../../static/t/msg_listselector_top.html:7 msgid "of" msgstr "of" #: ../../event.c:712 msgid "Recurrence range" msgstr "Recurrence range" #: ../../event.c:720 msgid "No ending date" msgstr "No ending date" #: ../../event.c:727 msgid "Repeat this event" msgstr "Repeat this event" #: ../../event.c:730 msgid "times" msgstr "times" #: ../../event.c:738 msgid "Repeat this event until " msgstr "Repeat this event until " #: ../../event.c:766 msgid "Check attendee availability" msgstr "Check attendee availability" #: ../../event.c:858 ../../calendar_view.c:272 ../../calendar_view.c:468 #: ../../calendar_view.c:937 msgid "Untitled Event" msgstr "Untitled Event" #: ../../sysmsgs.c:52 #, c-format msgid "Edit %s" msgstr "Edit %s" #: ../../sysmsgs.c:55 #, c-format msgid "" "Enter %s below. Text is formatted to the reader's browser. A newline is " "forced by preceding the next line by a blank." msgstr "" "Enter %s below. Text is formatted to the reader's browser. A newline is " "forced by preceding the next line by a blank." #: ../../sysmsgs.c:89 #, c-format msgid "Cancelled. %s was not saved." msgstr "Cancelled. %s was not saved." #: ../../sysmsgs.c:109 msgid " has been saved." msgstr " has been saved." #: ../../sysmsgs.c:116 ../../sysmsgs.c:117 msgid "Room info" msgstr "Room info" #: ../../sysmsgs.c:122 ../../sysmsgs.c:124 msgid "Your bio" msgstr "Your bio" #: ../../calendar_view.c:297 ../../calendar_view.c:958 #: ../../calendar_view.c:1002 ../../calendar_view.c:1083 #: ../../static/t/sieve/display_one.html:20 msgid "From" msgstr "From" #: ../../calendar_view.c:355 ../../calendar_view.c:974 msgid "Starting date:" msgstr "Starting date:" #: ../../calendar_view.c:361 ../../calendar_view.c:976 msgid "Ending date:" msgstr "Ending date:" #: ../../calendar_view.c:369 ../../calendar_view.c:1095 msgid "Date/time:" msgstr "Date/time:" #: ../../calendar_view.c:386 ../../calendar_view.c:980 #: ../../calendar_view.c:1018 ../../calendar_view.c:1105 #: ../../static/t/room/edit/tab_share.html:32 msgid "Notes:" msgstr "Notes:" #: ../../calendar_view.c:585 ../../calendar_view.c:721 msgid "previous" msgstr "previous" #: ../../calendar_view.c:597 ../../calendar_view.c:733 #: ../../calendar_view.c:1308 msgid "next" msgstr "next" #: ../../calendar_view.c:756 msgid "Week" msgstr "Week" #: ../../calendar_view.c:758 msgid "Hours" msgstr "Hours" #: ../../calendar_view.c:759 ../../static/t/sieve/display_one.html:22 #: ../../static/t/msg_listview.html:9 msgid "Subject" msgstr "Subject" #: ../../calendar_view.c:1001 ../../calendar_view.c:1024 msgid "Ongoing event" msgstr "Ongoing event" #: ../../messages.c:70 msgid "ERROR:" msgstr "ERROR:" #: ../../messages.c:88 msgid "Empty message" msgstr "Empty message" #: ../../messages.c:1010 msgid "Cancelled. Message was not posted." msgstr "Cancelled. Message was not posted." #: ../../messages.c:1013 msgid "Automatically cancelled because you have already saved this message." msgstr "Automatically cancelled because you have already saved this message." #: ../../messages.c:1037 msgid "Saved to Drafts failed: " msgstr "Saved to Drafts failed: " #: ../../messages.c:1102 msgid "Refusing to post empty message.\n" msgstr "Refusing to post empty message.\n" #: ../../messages.c:1128 msgid "Message has been saved to Drafts.\n" msgstr "Message has been saved to Drafts.\n" #: ../../messages.c:1137 msgid "Message has been sent.\n" msgstr "Message has been sent.\n" #: ../../messages.c:1140 msgid "Message has been posted.\n" msgstr "Message has been posted.\n" #: ../../messages.c:1679 msgid "The message was not moved." msgstr "The message was not moved." #: ../../messages.c:1719 #, c-format msgid "An error occurred while retrieving this part: %s/%s\n" msgstr "An error occurred while retrieving this part: %s/%s\n" #: ../../messages.c:1796 #, c-format msgid "An error occurred while retrieving this part: %s\n" msgstr "An error occurred while retrieving this part: %s\n" #: ../../messages.c:1956 msgid "Attach signature to email messages?" msgstr "Attach signature to email messages?" #: ../../messages.c:1959 msgid "Use this signature:" msgstr "Use this signature:" #: ../../messages.c:1961 msgid "Default character set for email headers:" msgstr "Default character set for email headers:" #: ../../messages.c:1964 msgid "Preferred email address" msgstr "Preferred email address" #: ../../messages.c:1966 msgid "Preferred display name for email messages" msgstr "Preferred display name for email messages" #: ../../messages.c:1970 msgid "Preferred display name for bulletin board posts" msgstr "Preferred display name for bulletin board posts" #: ../../messages.c:1973 msgid "Mailbox view mode" msgstr "Mailbox view mode" #: ../../inetconf.c:110 ../../inetconf.c:119 ../../inetconf.c:133 #: ../../inetconf.c:159 ../../netconf.c:156 ../../netconf.c:183 #: ../../netconf.c:191 ../../netconf.c:239 ../../netconf.c:247 msgid "Invalid Parameter" msgstr "Invalid Parameter" #: ../../inetconf.c:126 msgid " has been deleted." msgstr " has been deleted." #. added status message #: ../../inetconf.c:144 msgid " added." msgstr " added." #: ../../who.c:154 msgid "Edit your session display" msgstr "Edit your session display" #: ../../who.c:158 msgid "" "This screen allows you to change the way your session appears in the 'Who is " "online' listing. To turn off any 'fake' name you've previously set, simply " "click the appropriate 'change' button without typing anything in the " "corresponding box. " msgstr "" "This screen allows you to change the way your session appears in the 'Who is " "online' listing. To turn off any 'fake' name you've previously set, simply " "click the appropriate 'change' button without typing anything in the " "corresponding box. " #: ../../who.c:171 msgid "Room name:" msgstr "Room name:" #: ../../who.c:176 msgid "Change room name" msgstr "Change room name" #: ../../who.c:180 msgid "Host name:" msgstr "Host name:" #: ../../who.c:185 msgid "Change host name" msgstr "Change host name" #: ../../who.c:190 ../../static/t/aide/edituser/detailview.html:20 #: ../../static/t/openid_manual_create.html:9 #: ../../static/t/get_logged_in.html:57 ../../static/t/get_logged_in.html:72 msgid "User name:" msgstr "User name:" #: ../../who.c:195 msgid "Change user name" msgstr "Change user name" #: ../../siteconfig.c:46 ../../siteconfig.c:64 ../../roomlist.c:44 #: ../../roomlist.c:394 ../../static/t/room/edit/tab_expire.html:72 #: ../../static/t/room/edit/tab_config.html:149 #: ../../static/t/room/edit/tab_access.html:42 msgid "Higher access is required to access this function." msgstr "Higher access is required to access this function." #: ../../siteconfig.c:256 msgid "" "WARNING: Failed to parse Server Config; do you run a to new citserver?" msgstr "" "WARNING: Failed to parse Server Config; do you run a to new citserver?" #: ../../siteconfig.c:319 msgid "Your system configuration has been updated." msgstr "Your system configuration has been updated." #: ../../wiki.c:69 ../../wiki.c:162 ../../wiki.c:282 #, c-format msgid "There is no room called '%s'." msgstr "There is no room called '%s'." #: ../../wiki.c:76 #, c-format msgid "'%s' is not a Wiki room." msgstr "'%s' is not a Wiki room." #: ../../wiki.c:110 #, c-format msgid "There is no page called '%s' here." msgstr "There is no page called '%s' here." #: ../../wiki.c:112 msgid "" "Select the 'Edit this page' link in the room banner if you would like to " "create this page." msgstr "" "Select the 'Edit this page' link in the room banner if you would like to " "create this page." #: ../../wiki.c:181 ../../static/t/msg_listview.html:11 msgid "Date" msgstr "Date" #: ../../wiki.c:182 msgid "Author" msgstr "Author" #: ../../wiki.c:209 ../../wiki.c:218 msgid "(show)" msgstr "(show)" #: ../../wiki.c:211 ../../static/t/navbar.html:145 msgid "Current version" msgstr "Current version" #: ../../wiki.c:223 msgid "(revert)" msgstr "(revert)" #: ../../wiki.c:300 msgid "Page title" msgstr "Page title" #: ../../webcit.c:316 msgid "Authorization Required" msgstr "Authorisation Required" #: ../../webcit.c:324 #, c-format msgid "" "The resource you requested requires a valid username and password. You could " "not be logged in: %s\n" msgstr "" "The resource you requested requires a valid username and password. You could " "not be logged in: %s\n" #: ../../webcit.c:647 ../../auth.c:526 msgid "" "This program was unable to connect or stay connected to the Citadel server. " "Please report this problem to your system administrator." msgstr "" "This program was unable to connect or stay connected to the Citadel server. " "Please report this problem to your system administrator." #: ../../webcit.c:654 ../../auth.c:532 msgid "Read More..." msgstr "Read More..." #: ../../smtpqueue.c:134 ../../static/t/aide/ignetconf/section.html:5 #: ../../static/t/view_mailq/message.html:2 msgid "(Delete)" msgstr "(Delete)" #: ../../smtpqueue.c:334 msgid "First Attempt pending" msgstr "First Attempt pending" #: ../../roomlist.c:99 msgid "My Folders" msgstr "My Folders" #: ../../downloads.c:289 #, c-format msgid "An error occurred while retrieving this file: %s\n" msgstr "An error occurred while retrieving this file: %s\n" #: ../../roomtokens.c:572 msgid "file" msgstr "file" #: ../../roomtokens.c:574 msgid "files" msgstr "files" #: ../../summary.c:128 msgid "(None)" msgstr "(None)" #: ../../summary.c:184 msgid "(Nothing)" msgstr "(Nothing)" #: ../../msg_renderers.c:579 ../../static/t/who/bio.html:15 msgid "edit" msgstr "edit" #: ../../msg_renderers.c:1119 msgid "I don't know how to display " msgstr "I don't know how to display " #: ../../msg_renderers.c:1353 msgid "(no subject)" msgstr "(no subject)" #: ../../addressbook_popup.c:186 msgid "Add" msgstr "Add" #. an erased user #: ../../auth.c:30 ../../static/t/aide/edituser/detailview.html:43 #: ../../static/t/aide/siteconfig/tab_access.html:40 #: ../../static/t/aide/siteconfig/tab_access.html:51 msgid "Deleted" msgstr "Deleted" #. a new user #: ../../auth.c:33 ../../static/t/aide/edituser/detailview.html:44 #: ../../static/t/aide/siteconfig/tab_access.html:41 #: ../../static/t/aide/siteconfig/tab_access.html:52 #: ../../static/t/get_logged_in.html:79 msgid "New User" msgstr "New User" #. a trouble maker #: ../../auth.c:36 ../../static/t/aide/edituser/detailview.html:45 #: ../../static/t/aide/siteconfig/tab_access.html:42 #: ../../static/t/aide/siteconfig/tab_access.html:53 msgid "Problem User" msgstr "Problem User" #. user with normal privileges #: ../../auth.c:39 ../../static/t/aide/edituser/detailview.html:46 #: ../../static/t/aide/siteconfig/tab_access.html:43 #: ../../static/t/aide/siteconfig/tab_access.html:54 msgid "Local User" msgstr "Local User" #. a user that may access network resources #: ../../auth.c:42 ../../static/t/aide/edituser/detailview.html:47 #: ../../static/t/aide/siteconfig/tab_access.html:44 #: ../../static/t/aide/siteconfig/tab_access.html:55 msgid "Network User" msgstr "Network User" #. a moderator #: ../../auth.c:45 ../../static/t/aide/edituser/detailview.html:48 #: ../../static/t/aide/siteconfig/tab_access.html:45 #: ../../static/t/aide/siteconfig/tab_access.html:56 msgid "Preferred User" msgstr "Preferred User" #. chief #: ../../auth.c:48 ../../static/t/aide/edituser/detailview.html:49 #: ../../static/t/aide/siteconfig/tab_access.html:46 #: ../../static/t/aide/siteconfig/tab_access.html:57 msgid "Admin" msgstr "Admin" #: ../../auth.c:513 ../../static/t/iconbar.html:80 #: ../../static/t/confirmlogoff.html:3 #: ../../static/t/menu/basic_commands.html:19 msgid "Log off" msgstr "Log off" #: ../../auth.c:537 msgid "Log in again" msgstr "Log in again" #: ../../auth.c:585 ../../static/t/aide/usermanagement.html:3 msgid "Validate new users" msgstr "Validate new users" #: ../../auth.c:605 msgid "No users require validation at this time." msgstr "No users require validation at this time." #: ../../auth.c:655 msgid "very weak" msgstr "very weak" #: ../../auth.c:658 msgid "weak" msgstr "weak" #: ../../auth.c:661 msgid "ok" msgstr "ok" #: ../../auth.c:665 msgid "strong" msgstr "strong" #: ../../auth.c:683 #, c-format msgid "Current access level: %d (%s)\n" msgstr "Current access level: %d (%s)\n" #: ../../auth.c:691 msgid "Select access level for this user:" msgstr "Select access level for this user:" #: ../../auth.c:776 ../../static/t/menu/your_info.html:4 msgid "Change your password" msgstr "Change your password" #: ../../auth.c:800 msgid "Enter new password:" msgstr "Enter new password:" #: ../../auth.c:804 msgid "Enter it again to confirm:" msgstr "Enter it again to confirm:" #: ../../auth.c:810 msgid "Change password" msgstr "Change password" #: ../../auth.c:830 msgid "Cancelled. Password was not changed." msgstr "Cancelled. Password was not changed." #: ../../auth.c:839 msgid "They don't match. Password was not changed." msgstr "They don't match. Password was not changed." #: ../../auth.c:845 msgid "Blank passwords are not allowed." msgstr "Blank passwords are not allowed." #: ../../openid.c:34 msgid "Manage Account/OpenID Associations" msgstr "Manage Account/OpenID Associations" #: ../../openid.c:52 msgid "Do you really want to delete this OpenID?" msgstr "Do you really want to delete this OpenID?" #: ../../openid.c:53 msgid "(delete)" msgstr "(delete)" #: ../../openid.c:61 msgid "Add an OpenID: " msgstr "Add an OpenID: " #: ../../openid.c:64 msgid "Attach" msgstr "Attach" #: ../../openid.c:68 #, c-format msgid "%s does not permit authentication via OpenID." msgstr "%s does not permit authentication via OpenID." #: ../../html2html.c:136 #, c-format msgid "realloc() error! couldn't get %d bytes: %s" msgstr "realloc() error! couldn't get %d bytes: %s" #: ../../static/t/viewomatic.html:4 msgid "View as:" msgstr "View as:" #: ../../static/t/sieve/list.html:32 ../../static/t/sieve/none.html:4 #: ../../static/t/menu/your_info.html:7 msgid "View/edit server-side mail filters" msgstr "View/edit server-side mail filters" #: ../../static/t/sieve/list.html:41 msgid "When new mail arrives: " msgstr "When new mail arrives: " #: ../../static/t/sieve/list.html:43 msgid "Leave it in my inbox without filtering" msgstr "Leave it in my inbox without filtering" #: ../../static/t/sieve/list.html:44 msgid "Filter it according to rules selected below" msgstr "Filter it according to rules selected below" #: ../../static/t/sieve/list.html:45 msgid "Filter it through a manually edited script (advanced users only)" msgstr "Filter it through a manually edited script (advanced users only)" #: ../../static/t/sieve/list.html:52 msgid "Your incoming mail will not be filtered through any scripts." msgstr "Your incoming mail will not be filtered through any scripts." #: ../../static/t/sieve/list.html:64 msgid "Add rule" msgstr "Add rule" #: ../../static/t/sieve/list.html:71 msgid "The currently active script is: " msgstr "The currently active script is: " #: ../../static/t/sieve/list.html:76 ../../static/t/sieve/add.html:3 msgid "Add or delete scripts" msgstr "Add or delete scripts" #: ../../static/t/sieve/display_one.html:16 msgid "If" msgstr "If" #: ../../static/t/sieve/display_one.html:21 msgid "To or Cc" msgstr "To or Cc" #: ../../static/t/sieve/display_one.html:23 msgid "Reply-to" msgstr "Reply-to" #: ../../static/t/sieve/display_one.html:24 #: ../../static/t/msg_listview.html:10 #: ../../static/t/view_mailq/header.html:27 msgid "Sender" msgstr "Sender" #: ../../static/t/sieve/display_one.html:25 msgid "Resent-From" msgstr "Resent-From" #: ../../static/t/sieve/display_one.html:26 msgid "Resent-To" msgstr "Resent-To" #: ../../static/t/sieve/display_one.html:27 msgid "Envelope From" msgstr "Envelope From" #: ../../static/t/sieve/display_one.html:28 msgid "Envelope To" msgstr "Envelope To" #: ../../static/t/sieve/display_one.html:29 msgid "X-Mailer" msgstr "X-Mailer" #: ../../static/t/sieve/display_one.html:30 msgid "X-Spam-Flag" msgstr "X-Spam-Flag" #: ../../static/t/sieve/display_one.html:31 msgid "X-Spam-Status" msgstr "X-Spam-Status" #: ../../static/t/sieve/display_one.html:32 msgid "List-ID" msgstr "List-ID" #: ../../static/t/sieve/display_one.html:33 msgid "Message size" msgstr "Message size" #: ../../static/t/sieve/display_one.html:34 #: ../../static/t/select_messageindex_all.html:1 msgid "All" msgstr "All" #: ../../static/t/sieve/display_one.html:41 msgid "contains" msgstr "contains" #: ../../static/t/sieve/display_one.html:42 msgid "does not contain" msgstr "does not contain" #: ../../static/t/sieve/display_one.html:43 msgid "is" msgstr "is" #: ../../static/t/sieve/display_one.html:44 msgid "is not" msgstr "is not" #: ../../static/t/sieve/display_one.html:45 msgid "matches" msgstr "matches" #: ../../static/t/sieve/display_one.html:46 msgid "does not match" msgstr "does not match" #: ../../static/t/sieve/display_one.html:52 msgid "(All messages)" msgstr "(All messages)" #: ../../static/t/sieve/display_one.html:56 msgid "is larger than" msgstr "is larger than" #: ../../static/t/sieve/display_one.html:57 msgid "is smaller than" msgstr "is smaller than" #: ../../static/t/sieve/display_one.html:59 msgid "bytes" msgstr "bytes" #: ../../static/t/sieve/display_one.html:65 msgid "Keep" msgstr "Keep" #: ../../static/t/sieve/display_one.html:66 msgid "Discard silently" msgstr "Discard silently" #: ../../static/t/sieve/display_one.html:67 msgid "Reject" msgstr "Reject" #: ../../static/t/sieve/display_one.html:68 msgid "Move message to" msgstr "Move message to" #: ../../static/t/sieve/display_one.html:69 msgid "Forward to" msgstr "Forward to" #: ../../static/t/sieve/display_one.html:70 msgid "Vacation" msgstr "Vacation" #: ../../static/t/sieve/display_one.html:82 msgid "Message:" msgstr "Message:" #: ../../static/t/sieve/display_one.html:90 msgid "and then" msgstr "and then" #: ../../static/t/sieve/display_one.html:93 msgid "continue processing" msgstr "continue processing" #: ../../static/t/sieve/display_one.html:94 msgid "stop" msgstr "stop" #: ../../static/t/sieve/none.html:9 msgid "" "This installation of Citadel was built without support for server-side mail " "filtering.
    Please contact your system administrator if you require this " "feature.
    " msgstr "" "This installation of Citadel was built without support for server-side mail " "filtering.
    Please contact your system administrator if you require this " "feature.
    " #: ../../static/t/sieve/add.html:9 msgid "Add a new script" msgstr "Add a new script" #: ../../static/t/sieve/add.html:10 msgid "" "To create a new script, enter the desired script name in the box below and " "click 'Create'." msgstr "" "To create a new script, enter the desired script name in the box below and " "click 'Create'." #: ../../static/t/sieve/add.html:14 msgid "Script name: " msgstr "Script name: " #: ../../static/t/sieve/add.html:18 msgid "Edit scripts" msgstr "Edit scripts" #: ../../static/t/sieve/add.html:20 msgid "Return to the script editing screen" msgstr "Return to the script editing screen" #: ../../static/t/sieve/add.html:23 msgid "Delete scripts" msgstr "Delete scripts" #: ../../static/t/sieve/add.html:24 msgid "" "To delete an existing script, select the script name from the list and click " "'Delete'." msgstr "" "To delete an existing script, select the script name from the list and click " "'Delete'." #: ../../static/t/msg/confirm_move.html:4 msgid "Confirm move of message" msgstr "Confirm move of message" #: ../../static/t/msg/confirm_move.html:12 msgid "Move this message to:" msgstr "Move this message to:" #: ../../static/t/login.html:5 msgid "powered by" msgstr "powered by" #: ../../static/t/login.html:15 ../../static/t/iconbar.html:88 #: ../../static/t/get_logged_in.html:64 ../../static/t/get_logged_in.html:88 #: ../../static/t/get_logged_in.html:93 ../../static/t/get_logged_in.html:98 #: ../../static/t/get_logged_in.html:107 msgid "Log in" msgstr "Log in" #: ../../static/t/trailing.html:14 msgid "" "WARNING: You have JavaScript disabled in your web browser. Many functions " "of this system will not work properly." msgstr "" "WARNING: You have JavaScript disabled in your web browser. Many functions " "of this system will not work properly." #: ../../static/t/view_submessage.html:4 #: ../../static/t/view_message/replyquote.html:3 #: ../../static/t/view_message/replyquote.html:7 #: ../../static/t/view_message/print.html:8 ../../static/t/view_message.html:7 msgid "from " msgstr "from " #: ../../static/t/searchomatic.html:4 msgid "Search: " msgstr "Search: " #: ../../static/t/listsub/display.html:16 msgid "You are subscribing " msgstr "You are subscribing " #: ../../static/t/listsub/display.html:17 msgid " to the " msgstr " to the " #: ../../static/t/listsub/display.html:18 msgid " mailing list." msgstr " mailing list." #: ../../static/t/listsub/display.html:19 msgid "" "The listserver has sent you an e-mail with one additional Web link for you " "to click on to confirm your subscription." msgstr "" "The listserver has sent you an e-mail with one additional Web link for you " "to click on to confirm your subscription." #: ../../static/t/listsub/display.html:20 msgid "" "This extra step is for your protection, as it prevents others from being " "able to subscribe you to lists without your consent." msgstr "" "This extra step is for your protection, as it prevents others from being " "able to subscribe you to lists without your consent." #: ../../static/t/listsub/display.html:22 msgid "" "Please click on the link which is being e-mailed to you and your " "subscription will be confirmed." msgstr "" "Please click on the link which is being e-mailed to you and your " "subscription will be confirmed." #: ../../static/t/listsub/display.html:27 #: ../../static/t/listsub/display.html:47 msgid "ERROR" msgstr "ERROR" #: ../../static/t/listsub/display.html:35 msgid "You are unsubscribing" msgstr "You are unsubscribing" #: ../../static/t/listsub/display.html:37 msgid "from the" msgstr "from the" #: ../../static/t/listsub/display.html:39 msgid "mailing list." msgstr "mailing list." #: ../../static/t/listsub/display.html:40 msgid "" "The listserver has sent you an e-mail with one additional Web link for you " "to click on to confirm your unsubscription." msgstr "" "The listserver has sent you an e-mail with one additional Web link for you " "to click on to confirm your unsubscription." #: ../../static/t/listsub/display.html:41 msgid "" "This extra step is for your protection, as it prevents others from being " "able to unsubscribe you from lists without your consent." msgstr "" "This extra step is for your protection, as it prevents others from being " "able to unsubscribe you from lists without your consent." #: ../../static/t/listsub/display.html:43 msgid "" "Please click on the link which is being e-mailed to you and your " "unsubscription will be confirmed." msgstr "" "Please click on the link which is being e-mailed to you and your " "unsubscription will be confirmed." #: ../../static/t/listsub/display.html:44 msgid "Back..." msgstr "Back..." #: ../../static/t/listsub/display.html:54 msgid "Confirmation successful!" msgstr "Confirmation successful!" #: ../../static/t/listsub/display.html:56 msgid "Confirmation failed." msgstr "Confirmation failed." #: ../../static/t/listsub/display.html:57 msgid "This could mean one of two things:" msgstr "This could mean one of two things:" #: ../../static/t/listsub/display.html:59 msgid "" "You waited too long to confirm your subscribe/unsubscribe request (the " "confirmation link is only valid for three days)" msgstr "" "You waited too long to confirm your subscribe/unsubscribe request (the " "confirmation link is only valid for three days)" #: ../../static/t/listsub/display.html:60 msgid "" "You have already successfully confirmed your subscribe/unsubscribe " "request and are attempting to do it again." msgstr "" "You have already successfully confirmed your subscribe/unsubscribe " "request and are attempting to do it again." #: ../../static/t/listsub/display.html:62 msgid "The error returned by the server was: " msgstr "The error returned by the server was: " #: ../../static/t/listsub/display.html:70 msgid "Name of list:" msgstr "Name of list:" #: ../../static/t/listsub/display.html:75 msgid "Your e-mail address:" msgstr "Your e-mail address:" #: ../../static/t/listsub/display.html:79 msgid "(If subscribing) preferred format: " msgstr "(If subscribing) preferred format: " #: ../../static/t/listsub/display.html:80 msgid "One message at a time" msgstr "One message at a time" #: ../../static/t/listsub/display.html:81 msgid "Digest format" msgstr "Digest format" #: ../../static/t/listsub/display.html:89 msgid "" "When you attempt to subscribe or unsubscribe to a mailing list, you will " "receive an e-mail containing one additional web link to click on for final " "confirmation." msgstr "" "When you attempt to subscribe or unsubscribe to a mailing list, you will " "receive an e-mail containing one additional web link to click on for final " "confirmation." #: ../../static/t/listsub/display.html:90 msgid "" "This extra step is for your protection, as it prevents others from being " "able to subscribe or unsubscribe you to lists." msgstr "" "This extra step is for your protection, as it prevents others from being " "able to subscribe or unsubscribe you to lists." #: ../../static/t/floors_edit_one.html:11 msgid "(delete floor)" msgstr "(delete floor)" #: ../../static/t/floors_edit_one.html:13 msgid "(edit graphic)" msgstr "(edit graphic)" #: ../../static/t/floors.html:4 msgid "Add/change/delete floors" msgstr "Add/change/delete floors" #: ../../static/t/floors.html:10 msgid "Floor number" msgstr "Floor number" #: ../../static/t/floors.html:11 msgid "Floor name" msgstr "Floor name" #: ../../static/t/floors.html:12 msgid "Number of rooms" msgstr "Number of rooms" #: ../../static/t/floors.html:13 msgid "Floor CSS" msgstr "Floor CSS" #: ../../static/t/files.html:4 msgid "Files available for download in" msgstr "Files available for download in" #: ../../static/t/files.html:9 msgid "Upload a file:" msgstr "Upload a file:" #: ../../static/t/files.html:30 msgid "Filename" msgstr "File Name" #: ../../static/t/files.html:31 msgid "Size" msgstr "Size" #: ../../static/t/files.html:32 msgid "Content" msgstr "Content" #: ../../static/t/files.html:33 msgid "Description" msgstr "Description" #: ../../static/t/edit_message.html:9 ../../static/t/iconbar.html:50 #: ../../static/t/iconbar.html:59 msgid "Loading" msgstr "Loading" #: ../../static/t/edit_message.html:23 msgid "from" msgstr "from" #: ../../static/t/edit_message.html:29 ../../static/t/edit_message.html:38 msgid "Anonymous" msgstr "Anonymous" #: ../../static/t/edit_message.html:47 msgid "in" msgstr "in" #: ../../static/t/edit_message.html:51 msgid "To:" msgstr "To:" #: ../../static/t/edit_message.html:57 #: ../../static/t/view_message/print.html:15 #: ../../static/t/view_message.html:15 msgid "CC:" msgstr "CC:" #: ../../static/t/edit_message.html:63 msgid "BCC:" msgstr "BCC:" #: ../../static/t/edit_message.html:71 msgid "Subject (optional):" msgstr "Subject (optional):" #: ../../static/t/edit_message.html:71 #: ../../static/t/view_message/replyquote.html:8 #: ../../static/t/view_message/print.html:16 #: ../../static/t/view_message.html:16 msgid "Subject:" msgstr "Subject:" #: ../../static/t/edit_message.html:86 msgid "--- forwarded message ---" msgstr "--- forwarded message ---" #: ../../static/t/edit_message.html:110 msgid "Post message" msgstr "Post message" #: ../../static/t/edit_message.html:118 msgid "Save to Drafts" msgstr "Save to Drafts" #: ../../static/t/edit_message.html:126 #: ../../static/t/edit_message/attachments_pane.html:5 msgid "Attachments:" msgstr "Attachments:" #: ../../static/t/aide/display_serverrestart_page.html:4 msgid "Message to your Users:" msgstr "Message to your Users:" #: ../../static/t/aide/display_generic_result.html:2 msgid "Server command results" msgstr "Server command results" #: ../../static/t/aide/display_generic_result.html:18 msgid "Enter another command" msgstr "Enter another command" #: ../../static/t/aide/display_generic_result.html:19 msgid "Return to menu" msgstr "Return to menu" #: ../../static/t/aide/display_sitewide_config.html:3 msgid "Site configuration" msgstr "Site configuration" #: ../../static/t/aide/display_sitewide_config.html:6 #: ../../static/t/aide/edituser/select.html:9 msgid "You need to be aide to view this." msgstr "You need to be aide to view this." #: ../../static/t/aide/display_sitewide_config.html:11 msgid "General" msgstr "General" #: ../../static/t/aide/display_sitewide_config.html:12 msgid "Access" msgstr "Access" #: ../../static/t/aide/display_sitewide_config.html:13 msgid "Network" msgstr "Network" #: ../../static/t/aide/display_sitewide_config.html:14 msgid "Tuning" msgstr "Tuning" #: ../../static/t/aide/display_sitewide_config.html:15 msgid "Directory" msgstr "Directory" #: ../../static/t/aide/display_sitewide_config.html:16 msgid "Auto-purger" msgstr "Auto-purger" #: ../../static/t/aide/display_sitewide_config.html:17 msgid "Indexing/Journaling" msgstr "Indexing/Journaling" #: ../../static/t/aide/display_sitewide_config.html:18 #: ../../static/t/aide/siteconfig/tab_pushmail.html:1 msgid "Push Email" msgstr "Push Email" #: ../../static/t/aide/display_sitewide_config.html:19 msgid "Pop3" msgstr "Pop3" #: ../../static/t/aide/usermanagement.html:2 msgid "Add, change, delete user accounts" msgstr "Add, change, delete user accounts" #: ../../static/t/aide/display_inetconf.html:5 #: ../../static/t/aide/display_menu.html:5 msgid "System Administration Menu" msgstr "System Administration Menu" #: ../../static/t/aide/display_inetconf.html:6 #: ../../static/t/aide/display_menu.html:6 msgid "Room Admin Menu" msgstr "Room Admin Menu" #: ../../static/t/aide/display_inetconf.html:13 msgid "Local host aliases" msgstr "Local host aliases" #: ../../static/t/aide/display_inetconf.html:14 msgid "Directory domains" msgstr "Directory domains" #: ../../static/t/aide/display_inetconf.html:15 msgid "Smart hosts" msgstr "Smart hosts" #: ../../static/t/aide/display_inetconf.html:16 msgid "Fallback smart hosts" msgstr "Fallback smart hosts" #: ../../static/t/aide/display_inetconf.html:17 msgid "Notification hosts" msgstr "Notification hosts" #: ../../static/t/aide/display_inetconf.html:22 msgid "RBL hosts" msgstr "RBL hosts" #: ../../static/t/aide/display_inetconf.html:23 msgid "SpamAssassin hosts" msgstr "SpamAssassin hosts" #: ../../static/t/aide/display_inetconf.html:24 msgid "ClamAV clamd hosts" msgstr "ClamAV clamd hosts" #: ../../static/t/aide/display_inetconf.html:25 msgid "Masqueradable domains" msgstr "Masqueradable domains" #: ../../static/t/aide/edituser/select.html:5 msgid "Edit or delete users" msgstr "Edit or delete users" #: ../../static/t/aide/edituser/select.html:17 msgid "Add users" msgstr "Add users" #: ../../static/t/aide/edituser/select.html:20 msgid "Edit or Delete users" msgstr "Edit or Delete users" #: ../../static/t/aide/edituser/box_select.html:1 msgid "" "To edit an existing user account, select the user name from the list and " "click 'Edit'." msgstr "" "To edit an existing user account, select the user name from the list and " "click 'Edit'." #: ../../static/t/aide/edituser/detailview.html:4 msgid "Edit user account: " msgstr "Edit user account: " #: ../../static/t/aide/edituser/detailview.html:24 #: ../../static/t/room/edit/tab_feed.html:14 msgid "Password" msgstr "Password" #: ../../static/t/aide/edituser/detailview.html:28 msgid "Permission to send Internet mail" msgstr "Permission to send Internet mail" #: ../../static/t/aide/edituser/detailview.html:32 msgid "Number of logins" msgstr "Number of logins" #: ../../static/t/aide/edituser/detailview.html:36 msgid "Messages submitted" msgstr "Messages submitted" #: ../../static/t/aide/edituser/detailview.html:40 msgid "Access level" msgstr "Access level" #: ../../static/t/aide/edituser/detailview.html:54 msgid "User ID number" msgstr "User ID number" #: ../../static/t/aide/edituser/detailview.html:58 msgid "Date and time of last login" msgstr "Date and time of last login" #: ../../static/t/aide/edituser/detailview.html:68 msgid "Auto-purge after this many days" msgstr "Auto-purge after this many days" #: ../../static/t/aide/edituser/add.html:1 msgid "" "To create a new user account, enter the desired user name in the box below " "and click 'Create'." msgstr "" "To create a new user account, enter the desired user name in the box below " "and click 'Create'." #: ../../static/t/aide/edituser/add.html:5 msgid "New user: " msgstr "New user: " #: ../../static/t/aide/display_generic_cmd.html:4 msgid "Enter a server command" msgstr "Enter a server command" #: ../../static/t/aide/display_generic_cmd.html:12 msgid "" "This screen allows you to enter Citadel server commands which are not " "supported by WebCit. If you do not know what that means, then this screen " "will not be of much use to you." msgstr "" "This screen allows you to enter Citadel server commands which are not " "supported by WebCit. If you do not know what that means, then this screen " "will not be of much use to you." #: ../../static/t/aide/display_generic_cmd.html:15 msgid "Enter command:" msgstr "Enter command:" #: ../../static/t/aide/display_generic_cmd.html:17 msgid "Command input (if requesting SEND_LISTING transfer mode):" msgstr "Command input (if requesting SEND_LISTING transfer mode):" #: ../../static/t/aide/display_generic_cmd.html:20 msgid "Detected host header is " msgstr "Detected host header is " #: ../../static/t/aide/display_ignetconf.html:4 msgid "Network configuration" msgstr "Network configuration" #: ../../static/t/aide/display_ignetconf.html:10 #: ../../static/t/aide/ignetconf/edit_node.html:5 #: ../../static/t/aide/ignetconf/add.html:5 msgid "Add a new node" msgstr "Add a new node" #: ../../static/t/aide/display_ignetconf.html:14 msgid "Currently configured nodes" msgstr "Currently configured nodes" #: ../../static/t/aide/display_serverrestart.html:26 msgid "Restart Citadel" msgstr "Restart Citadel" #: ../../static/t/aide/floorconfig.html:2 msgid "Add, change, or delete floors" msgstr "Add, change, or delete floors" #: ../../static/t/aide/serverrestart/box.html:3 msgid "Please wait while the Citadel server is restarted... " msgstr "Please wait while the Citadel server is restarted... " #: ../../static/t/aide/serverrestart/box_page_do.html:3 msgid "" "Please wait while your users are being paged, the citadel server will be " "restarted after that... " msgstr "" "Please wait while your users are being paged, the citadel server will be " "restarted after that... " #: ../../static/t/aide/inet/masqdomains.html:2 msgid "(Domains as which users are allowed to masquerade)" msgstr "(Domains as which users are allowed to masquerade)" #: ../../static/t/aide/inet/rbldns.html:2 msgid "(hosts running a Realtime Blackhole List)" msgstr "(hosts running a Realtime Blackhole List)" #: ../../static/t/aide/inet/dirnames.html:2 msgid "(domains mapped with the Global Address Book)" msgstr "(domains mapped with the Global Address Book)" #: ../../static/t/aide/inet/notify.html:2 msgid "(URLS for notifications when users receive new mails; )" msgstr "(URLS for notifications when users receive new mails; )" #: ../../static/t/aide/inet/notify.html:2 msgid "" "Syntax: Notificationtemplatename:http[s]://user:password@hostname/path" msgstr "" "Syntax: Notificationtemplatename:http[s]://user:password@hostname/path" #: ../../static/t/aide/inet/smarthosts.html:2 msgid "(if present, forward all outbound mail to one of these hosts)" msgstr "(if present, forward all outbound mail to one of these hosts)" #: ../../static/t/aide/inet/aliases.html:2 msgid "(domains for which this host receives mail)" msgstr "(domains for which this host receives mail)" #: ../../static/t/aide/inet/clamav.html:2 msgid "(hosts running the ClamAV clamd service)" msgstr "(hosts running the ClamAV clamd service)" #: ../../static/t/aide/inet/spamass.html:2 msgid "(hosts running the SpamAssassin service)" msgstr "(hosts running the SpamAssassin service)" #: ../../static/t/aide/inet/fallbackhosts.html:2 msgid "(send outbound mail to these hosts only when direct delivery fails)" msgstr "(send outbound mail to these hosts only when direct delivery fails)" #: ../../static/t/aide/ignetconf/display_confirm_delete.html:5 msgid "Confirm delete" msgstr "Confirm delete" #: ../../static/t/aide/ignetconf/display_confirm_delete.html:11 msgid "Are you sure you want to delete " msgstr "Are you sure you want to delete " #: ../../static/t/aide/ignetconf/display_confirm_delete.html:14 #: ../../static/t/prefs/box.html:198 ../../static/t/iconbar/edit.html:19 #: ../../static/t/iconbar/edit.html:26 ../../static/t/iconbar/edit.html:32 #: ../../static/t/iconbar/edit.html:39 ../../static/t/iconbar/edit.html:45 #: ../../static/t/iconbar/edit.html:52 ../../static/t/iconbar/edit.html:58 #: ../../static/t/iconbar/edit.html:64 ../../static/t/iconbar/edit.html:70 #: ../../static/t/iconbar/edit.html:76 ../../static/t/iconbar/edit.html:82 #: ../../static/t/iconbar/edit.html:88 msgid "Yes" msgstr "Yes" #: ../../static/t/aide/ignetconf/display_confirm_delete.html:16 #: ../../static/t/prefs/box.html:200 ../../static/t/iconbar/edit.html:20 #: ../../static/t/iconbar/edit.html:27 ../../static/t/iconbar/edit.html:33 #: ../../static/t/iconbar/edit.html:40 ../../static/t/iconbar/edit.html:46 #: ../../static/t/iconbar/edit.html:53 ../../static/t/iconbar/edit.html:59 #: ../../static/t/iconbar/edit.html:65 ../../static/t/iconbar/edit.html:71 #: ../../static/t/iconbar/edit.html:77 ../../static/t/iconbar/edit.html:83 #: ../../static/t/iconbar/edit.html:89 msgid "No" msgstr "No" #: ../../static/t/aide/ignetconf/edit_node.html:15 #: ../../static/t/aide/ignetconf/add.html:15 #: ../../static/t/aide/siteconfig/tab_general.html:8 msgid "Node name" msgstr "Node name" #: ../../static/t/aide/ignetconf/edit_node.html:17 #: ../../static/t/aide/ignetconf/add.html:17 msgid "Shared secret" msgstr "Shared secret" #: ../../static/t/aide/ignetconf/edit_node.html:19 #: ../../static/t/aide/ignetconf/add.html:19 msgid "Host or IP address" msgstr "Host or IP address" #: ../../static/t/aide/ignetconf/edit_node.html:21 #: ../../static/t/aide/ignetconf/add.html:21 msgid "Port number" msgstr "Port number" #: ../../static/t/aide/ignetconf/section.html:4 msgid "(Edit)" msgstr "(Edit)" #: ../../static/t/aide/display_menu.html:12 msgid "Global Configuration" msgstr "Global Configuration" #: ../../static/t/aide/display_menu.html:14 msgid "User account management" msgstr "User account management" #: ../../static/t/aide/display_menu.html:16 msgid "Shutdown Citadel" msgstr "Shutdown Citadel" #: ../../static/t/aide/display_menu.html:18 msgid "Rooms and Floors" msgstr "Rooms and Floors" #: ../../static/t/aide/global_config.html:2 msgid "Edit site-wide configuration" msgstr "Edit site-wide configuration" #: ../../static/t/aide/global_config.html:3 msgid "Domain names and Internet mail configuration" msgstr "Domain names and Internet mail configuration" #: ../../static/t/aide/global_config.html:4 msgid "Configure replication with other Citadel servers" msgstr "Configure replication with other Citadel servers" #: ../../static/t/aide/global_config.html:5 #: ../../static/t/view_mailq/header.html:3 msgid "View the outbound SMTP queue" msgstr "View the outbound SMTP queue" #: ../../static/t/aide/restart.html:2 msgid "Restart Now" msgstr "Restart Now" #: ../../static/t/aide/restart.html:3 msgid "Restart after paging users" msgstr "Restart after paging users" #: ../../static/t/aide/restart.html:4 msgid "Restart when all users are idle" msgstr "Restart when all users are idle" #: ../../static/t/aide/siteconfig/tab_general.html:1 msgid "General site configuration items" msgstr "General site configuration items" #: ../../static/t/aide/siteconfig/tab_general.html:5 msgid "Change Login Logo" msgstr "Change Login Logo" #: ../../static/t/aide/siteconfig/tab_general.html:6 msgid "Change Logout Logo" msgstr "Change Logout Logo" #: ../../static/t/aide/siteconfig/tab_general.html:11 msgid "Fully qualified domain name" msgstr "Fully qualified domain name" #: ../../static/t/aide/siteconfig/tab_general.html:14 msgid "Human-readable node name" msgstr "Human-readable node name" #: ../../static/t/aide/siteconfig/tab_general.html:17 msgid "Telephone number" msgstr "Telephone number" #: ../../static/t/aide/siteconfig/tab_general.html:20 msgid "Paginator prompt (for text mode clients)" msgstr "Paginator prompt (for text mode clients)" #: ../../static/t/aide/siteconfig/tab_general.html:23 msgid "Geographic location of this system" msgstr "Geographic location of this system" #: ../../static/t/aide/siteconfig/tab_general.html:26 msgid "Name of system administrator" msgstr "Name of system administrator" #: ../../static/t/aide/siteconfig/tab_general.html:29 msgid "Default timezone for unzoned calendar items" msgstr "Default timezone for unzoned calendar items" #: ../../static/t/aide/siteconfig/tab_autopurger.html:1 msgid "Configure automatic expiry of old messages" msgstr "Configure automatic expiry of old messages" #: ../../static/t/aide/siteconfig/tab_autopurger.html:2 msgid "These settings may be overridden on a per-floor or per-room basis." msgstr "These settings may be overridden on a per-floor or per-room basis." #: ../../static/t/aide/siteconfig/tab_autopurger.html:6 msgid "Hour to run database auto-purge" msgstr "Hour to run database auto-purge" #: ../../static/t/aide/siteconfig/tab_autopurger.html:66 msgid "Default message expire policy for public rooms" msgstr "Default message expire policy for public rooms" #: ../../static/t/aide/siteconfig/tab_autopurger.html:68 #: ../../static/t/aide/siteconfig/tab_autopurger.html:86 #: ../../static/t/room/edit/tab_expire.html:17 #: ../../static/t/room/edit/tab_expire.html:45 msgid "Never automatically expire messages" msgstr "Never automatically expire messages" #: ../../static/t/aide/siteconfig/tab_autopurger.html:71 #: ../../static/t/aide/siteconfig/tab_autopurger.html:89 #: ../../static/t/room/edit/tab_expire.html:20 #: ../../static/t/room/edit/tab_expire.html:48 msgid "Expire by message count" msgstr "Expire by message count" #: ../../static/t/aide/siteconfig/tab_autopurger.html:73 #: ../../static/t/aide/siteconfig/tab_autopurger.html:92 #: ../../static/t/room/edit/tab_expire.html:23 #: ../../static/t/room/edit/tab_expire.html:51 msgid "Expire by message age" msgstr "Expire by message age" #: ../../static/t/aide/siteconfig/tab_autopurger.html:75 #: ../../static/t/aide/siteconfig/tab_autopurger.html:94 #: ../../static/t/room/edit/tab_expire.html:25 #: ../../static/t/room/edit/tab_expire.html:53 msgid "Number of messages or days: " msgstr "Number of messages or days: " #: ../../static/t/aide/siteconfig/tab_autopurger.html:81 msgid "Default message expire policy for private mailboxes" msgstr "Default message expire policy for private mailboxes" #: ../../static/t/aide/siteconfig/tab_autopurger.html:83 msgid "Same policy as public rooms" msgstr "Same policy as public rooms" #: ../../static/t/aide/siteconfig/tab_network.html:1 msgid "Network services" msgstr "Network services" #: ../../static/t/aide/siteconfig/tab_network.html:2 #: ../../static/t/aide/siteconfig/tab_directory.html:3 msgid "" "Changes made on this screen will not take effect until you restart the " "Citadel server." msgstr "" "Changes made on this screen will not take effect until you restart the " "Citadel server." #: ../../static/t/aide/siteconfig/tab_network.html:6 msgid "SMTP MTA port (-1 to disable)" msgstr "SMTP MTA port (-1 to disable)" #: ../../static/t/aide/siteconfig/tab_network.html:9 msgid "Correct forged From: lines during authenticated SMTP" msgstr "Correct forged From: lines during authenticated SMTP" #: ../../static/t/aide/siteconfig/tab_network.html:12 msgid "Flag message as spam, instead of rejecting it" msgstr "Flag message as spam, instead of rejecting it" #: ../../static/t/aide/siteconfig/tab_network.html:15 msgid "IMAP listener port (-1 to disable)" msgstr "IMAP listener port (-1 to disable)" #: ../../static/t/aide/siteconfig/tab_network.html:19 msgid "Network run frequency (in seconds)" msgstr "Network run frequency (in seconds)" #: ../../static/t/aide/siteconfig/tab_network.html:22 msgid "Server IP address (0.0.0.0 for 'any')" msgstr "Server IP address (0.0.0.0 for 'any')" #: ../../static/t/aide/siteconfig/tab_network.html:25 msgid "SMTP MSA port (-1 to disable)" msgstr "SMTP MSA port (-1 to disable)" #: ../../static/t/aide/siteconfig/tab_network.html:28 msgid "IMAP over SSL port (-1 to disable)" msgstr "IMAP over SSL port (-1 to disable)" #: ../../static/t/aide/siteconfig/tab_network.html:31 msgid "SMTP over SSL port (-1 to disable)" msgstr "SMTP over SSL port (-1 to disable)" #: ../../static/t/aide/siteconfig/tab_network.html:34 msgid "Instantly expunge deleted messages in IMAP" msgstr "Instantly expunge deleted messages in IMAP" #: ../../static/t/aide/siteconfig/tab_network.html:38 msgid "Allow unauthenticated SMTP clients to spoof this sites domains" msgstr "Allow unauthenticated SMTP clients to spoof this sites domains" #: ../../static/t/aide/siteconfig/tab_network.html:41 msgid "Postfix TCP Dictionary Port" msgstr "Postfix TCP Dictionary Port" #: ../../static/t/aide/siteconfig/tab_network.html:41 msgid "-1 to disable" msgstr "-1 to disable" #: ../../static/t/aide/siteconfig/tab_network.html:44 msgid "ManageSieve Port (-1 to disable)" msgstr "ManageSieve Port (-1 to disable)" #: ../../static/t/aide/siteconfig/tab_network.html:47 msgid "Perform RBL checks upon connect instead of after RCPT" msgstr "Perform RBL checks upon connect instead of after RCPT" #: ../../static/t/aide/siteconfig/tab_network.html:50 msgid "Keep original from headers in IMAP" msgstr "Keep original from headers in IMAP" #: ../../static/t/aide/siteconfig/tab_network.html:53 msgid "XMPP (Jabber) client to server port (-1 to disable)" msgstr "XMPP (Jabber) client to server port (-1 to disable)" #: ../../static/t/aide/siteconfig/tab_network.html:56 msgid "XMPP (Jabber) server to server port (-1 to disable)" msgstr "XMPP (Jabber) server to server port (-1 to disable)" #: ../../static/t/aide/siteconfig/tab_pop3.html:1 msgid "POP3" msgstr "POP3" #: ../../static/t/aide/siteconfig/tab_pop3.html:6 msgid "POP3 listener port (-1 to disable)" msgstr "POP3 listener port (-1 to disable)" #: ../../static/t/aide/siteconfig/tab_pop3.html:9 msgid "POP3 over SSL port (-1 to disable)" msgstr "POP3 over SSL port (-1 to disable)" #: ../../static/t/aide/siteconfig/tab_pop3.html:12 msgid "POP3 fetch frequency in seconds" msgstr "POP3 fetch frequency in seconds" #: ../../static/t/aide/siteconfig/tab_pop3.html:15 msgid "POP3 fastest fetch frequency in seconds" msgstr "POP3 fastest fetch frequency in seconds" #: ../../static/t/aide/siteconfig/tab_tuning.html:1 msgid "Advanced server fine-tuning controls" msgstr "Advanced server fine-tuning controls" #: ../../static/t/aide/siteconfig/tab_tuning.html:5 msgid "Server connection idle timeout (in seconds)" msgstr "Server connection idle timeout (in seconds)" #: ../../static/t/aide/siteconfig/tab_tuning.html:8 msgid "Maximum concurrent sessions (0 = no limit)" msgstr "Maximum concurrent sessions (0 = no limit)" #: ../../static/t/aide/siteconfig/tab_tuning.html:11 msgid "Default user purge time (days)" msgstr "Default user purge time (days)" #: ../../static/t/aide/siteconfig/tab_tuning.html:14 msgid "Default room purge time (days)" msgstr "Default room purge time (days)" #: ../../static/t/aide/siteconfig/tab_tuning.html:17 msgid "Maximum message length" msgstr "Maximum message length" #: ../../static/t/aide/siteconfig/tab_tuning.html:20 msgid "Minimum number of worker threads" msgstr "Minimum number of worker threads" #: ../../static/t/aide/siteconfig/tab_tuning.html:23 msgid "Maximum number of worker threads" msgstr "Maximum number of worker threads" #: ../../static/t/aide/siteconfig/tab_tuning.html:26 msgid "Automatically delete committed database logs" msgstr "Automatically delete committed database logs" #: ../../static/t/aide/siteconfig/tab_pushmail.html:5 msgid "Funambol server host (blank to disable)" msgstr "Funambol server host (blank to disable)" #: ../../static/t/aide/siteconfig/tab_pushmail.html:8 msgid "Funambol server port " msgstr "Funambol server port " #: ../../static/t/aide/siteconfig/tab_pushmail.html:11 msgid "Funambol sync source" msgstr "Funambol sync source" #: ../../static/t/aide/siteconfig/tab_pushmail.html:14 msgid "Funambol auth details (user:pass)" msgstr "Funambol auth details (user:pass)" #: ../../static/t/aide/siteconfig/tab_pushmail.html:17 msgid "External pager tool (blank to disable)" msgstr "External pager tool (blank to disable)" #: ../../static/t/aide/siteconfig/tab_access.html:1 msgid "Access controls and site policy settings" msgstr "Access controls and site policy settings" #: ../../static/t/aide/siteconfig/tab_access.html:5 msgid "Allow aides to zap (forget) rooms" msgstr "Allow aides to zap (forget) rooms" #: ../../static/t/aide/siteconfig/tab_access.html:9 msgid "Quarantine messages from problem users" msgstr "Quarantine messages from problem users" #: ../../static/t/aide/siteconfig/tab_access.html:12 msgid "Name of quarantine room" msgstr "Name of quarantine room" #: ../../static/t/aide/siteconfig/tab_access.html:17 msgid "Name of room to log pages" msgstr "Name of room to log pages" #: ../../static/t/aide/siteconfig/tab_access.html:22 msgid "Authentication mode" msgstr "Authentication mode" #: ../../static/t/aide/siteconfig/tab_access.html:24 msgid "Self contained" msgstr "Self contained" #: ../../static/t/aide/siteconfig/tab_access.html:25 msgid "Host based" msgstr "Host based" #: ../../static/t/aide/siteconfig/tab_access.html:26 msgid "LDAP (RFC2307)" msgstr "LDAP (RFC2307)" #: ../../static/t/aide/siteconfig/tab_access.html:27 msgid "LDAP (Active Directory)" msgstr "LDAP (Active Directory)" #: ../../static/t/aide/siteconfig/tab_access.html:30 msgid "Master user name (blank to disable)" msgstr "Master user name (blank to disable)" #: ../../static/t/aide/siteconfig/tab_access.html:33 msgid "Master user password" msgstr "Master user password" #: ../../static/t/aide/siteconfig/tab_access.html:38 msgid "Initial access level for new users" msgstr "Initial access level for new users" #: ../../static/t/aide/siteconfig/tab_access.html:49 msgid "Access level required to create rooms" msgstr "Access level required to create rooms" #: ../../static/t/aide/siteconfig/tab_access.html:60 msgid "" "Automatically grant room-aide status to users who create private rooms" msgstr "" "Automatically grant room-aide status to users who create private rooms" #: ../../static/t/aide/siteconfig/tab_access.html:63 msgid "Automatically grant room-aide status to users who create BLOG rooms" msgstr "Automatically grant room-aide status to users who create BLOG rooms" #: ../../static/t/aide/siteconfig/tab_access.html:66 msgid "Restrict access to Internet mail" msgstr "Restrict access to Internet mail" #: ../../static/t/aide/siteconfig/tab_access.html:71 msgid "Disable self-service user account creation" msgstr "Disable self-service user account creation" #: ../../static/t/aide/siteconfig/tab_access.html:71 msgid "Hint: do not select both!" msgstr "Hint: do not select both!" #: ../../static/t/aide/siteconfig/tab_access.html:74 msgid "Require registration for new users" msgstr "Require registration for new users" #: ../../static/t/aide/siteconfig/tab_access.html:77 msgid "Allow anonymous guest access" msgstr "Allow anonymous guest access" #: ../../static/t/aide/siteconfig/tab_indexing.html:1 msgid "Indexing and Journaling" msgstr "Indexing and Journaling" #: ../../static/t/aide/siteconfig/tab_indexing.html:2 msgid "Warning: these facilities are resource intensive." msgstr "Warning: these facilities are resource intensive." #: ../../static/t/aide/siteconfig/tab_indexing.html:6 msgid "Enable full text index" msgstr "Enable full text index" #: ../../static/t/aide/siteconfig/tab_indexing.html:9 msgid "Perform journaling of email messages" msgstr "Perform journaling of email messages" #: ../../static/t/aide/siteconfig/tab_indexing.html:13 msgid "Perform journaling of non-email messages" msgstr "Perform journaling of non-email messages" #: ../../static/t/aide/siteconfig/tab_indexing.html:16 msgid "Email destination of journalized messages" msgstr "Email destination of journalized messages" #: ../../static/t/aide/siteconfig/tab_directory.html:1 msgid "Configure the LDAP connector for Citadel" msgstr "Configure the LDAP connector for Citadel" #: ../../static/t/aide/siteconfig/tab_directory.html:4 msgid "" "NOTE: This Citadel server has been built without LDAP support. These " "options will have no effect." msgstr "" "NOTE: This Citadel server has been built without LDAP support. These " "options will have no effect." #: ../../static/t/aide/siteconfig/tab_directory.html:9 msgid "Host name of LDAP server (blank to disable)" msgstr "Host name of LDAP server (blank to disable)" #: ../../static/t/aide/siteconfig/tab_directory.html:13 msgid "Port number of LDAP server (blank to disable)" msgstr "Port number of LDAP server (blank to disable)" #: ../../static/t/aide/siteconfig/tab_directory.html:16 msgid "Base DN" msgstr "Base DN" #: ../../static/t/aide/siteconfig/tab_directory.html:19 msgid "Bind DN" msgstr "Bind DN" #: ../../static/t/aide/siteconfig/tab_directory.html:22 msgid "Password for bind DN" msgstr "Password for bind DN" #: ../../static/t/iconbar.html:7 msgid "Language:" msgstr "Language:" #: ../../static/t/iconbar.html:19 msgid "Mail" msgstr "Mail" #: ../../static/t/iconbar.html:39 ../../static/t/iconbar/edit.html:61 #: ../../static/t/summary/page.html:30 msgid "Tasks" msgstr "Tasks" #: ../../static/t/iconbar.html:48 ../../static/t/iconbar/edit.html:67 msgid "Rooms" msgstr "Rooms" #: ../../static/t/iconbar.html:57 msgid "Online users" msgstr "Online users" #: ../../static/t/iconbar.html:62 ../../static/t/iconbar/edit.html:79 msgid "Chat" msgstr "Chat" #: ../../static/t/iconbar.html:65 msgid "Advanced" msgstr "Advanced" #: ../../static/t/iconbar.html:72 ../../static/t/room/edit/editroom.html:4 #: ../../static/t/room/edit.html:5 msgid "Administration" msgstr "Administration" #: ../../static/t/iconbar.html:83 msgid "customize this menu" msgstr "customise this menu" #: ../../static/t/iconbar.html:92 msgid "switch to room list" msgstr "switch to room list" #: ../../static/t/iconbar.html:93 msgid "switch to menu" msgstr "switch to menu" #: ../../static/t/iconbar.html:94 msgid "My folders" msgstr "My folders" #: ../../static/t/view_message/list_attach.html:3 #: ../../static/t/view_message/inline_attach.html:4 msgid "View" msgstr "View" #: ../../static/t/view_message/list_attach.html:4 #: ../../static/t/view_message/inline_attach.html:5 msgid "Download" msgstr "Download" #: ../../static/t/view_message/print.html:14 #: ../../static/t/view_message.html:14 msgid "to" msgstr "to" #: ../../static/t/openid_manual_create.html:2 msgid "Your OpenID" msgstr "Your OpenID" #: ../../static/t/openid_manual_create.html:2 msgid "was successfully verified." msgstr "was successfully verified." #: ../../static/t/openid_manual_create.html:3 msgid "However, the user name" msgstr "However, the user name" #: ../../static/t/openid_manual_create.html:3 msgid "conflicts with an existing user." msgstr "conflicts with an existing user." #: ../../static/t/openid_manual_create.html:5 msgid "Please specify the user name you would like to use." msgstr "Please specify the user name you would like to use." #: ../../static/t/files/graphicsupload.html:2 msgid "Image upload" msgstr "Image upload" #: ../../static/t/files/graphicsupload.html:6 msgid "You can upload an image directly from your computer" msgstr "You can upload an image directly from your computer" #: ../../static/t/files/graphicsupload.html:8 msgid "Please select a file to upload:" msgstr "Please select a file to upload:" #: ../../static/t/files/section_onefile.html:20 msgid "Slideshow" msgstr "Slideshow" #: ../../static/t/roombanner.html:10 ../../static/t/roombanner.html:11 msgid "new of" msgstr "new of" #: ../../static/t/roombanner.html:10 ../../static/t/roombanner.html:11 #: ../../static/t/msg_listselector_bottom.html:7 #: ../../static/t/msg_listselector_top.html:7 msgid "messages" msgstr "messages" #: ../../static/t/roombanner.html:28 msgid "Select page: " msgstr "Select page: " #: ../../static/t/who.html:13 msgid "Users currently on " msgstr "Users currently on " #: ../../static/t/who.html:22 msgid "Click on a name to read user info. Click on" msgstr "Click on a name to read user info. Click on" #: ../../static/t/who.html:24 msgid "to send an instant message to that user." msgstr "to send an instant message to that user." #: ../../static/t/msg_listselector_bottom.html:2 #: ../../static/t/msg_listselector_top.html:2 msgid "Reading #" msgstr "Reading #" #: ../../static/t/msg_listselector_bottom.html:12 #: ../../static/t/msg_listselector_top.html:12 msgid "oldest to newest" msgstr "oldest to newest" #: ../../static/t/msg_listselector_bottom.html:20 #: ../../static/t/msg_listselector_top.html:20 msgid "newest to oldest" msgstr "newest to oldest" #: ../../static/t/newstartpage.html:4 msgid "New start page" msgstr "New start page" #: ../../static/t/newstartpage.html:9 msgid "Your start page has been changed." msgstr "Your start page has been changed." #: ../../static/t/newstartpage.html:12 msgid "" "(Note: this does not change your browser's home page. It changes the page " "you begin on when you log on to" msgstr "" "(Note: this does not change your browser's home page. It changes the page " "you begin on when you log on to" #: ../../static/t/no_new_msgs.html:3 msgid "No new messages." msgstr "No new messages." #: ../../static/t/view_blog/comment_box.html:8 msgid "Post a comment" msgstr "Post a comment" #: ../../static/t/prefs/pushemail.html:2 msgid "Configure Push Email" msgstr "Configure Push Email" #: ../../static/t/prefs/pushemail.html:9 msgid "Push email and SMS settings" msgstr "Push email and SMS settings" #: ../../static/t/prefs/pushemail.html:17 msgid "" "If your administrator has enabled the functionality, Citadel can notify a " "Funambol server that you haved recieved new email and automatically " "syncronize any devices you have with the Funambol client installed." msgstr "" "If your administrator has enabled the functionality, Citadel can notify a " "Funambol server that you haved recieved new email and automatically " "syncronize any devices you have with the Funambol client installed." #: ../../static/t/prefs/pushemail.html:20 msgid "" "Alternatively, if the administrator has configured it, Citadel can send a " "text message to you when new mail arrives." msgstr "" "Alternatively, if the administrator has configured it, Citadel can send a " "text message to you when new mail arrives." #: ../../static/t/prefs/pushemail.html:26 msgid "Notify Funambol server" msgstr "Notify Funambol server" #: ../../static/t/prefs/pushemail.html:31 msgid "Send a text message to..." msgstr "Send a text message to..." #: ../../static/t/prefs/pushemail.html:33 msgid "" "(Use international format, without any leading zeros, spaces or hypens, like " "+61415011501)" msgstr "" "(Use international format, without any leading zeros, spaces or hypens, like " "+61415011501)" #: ../../static/t/prefs/pushemail.html:38 msgid "Use custom notification scheme configured by your Admin" msgstr "Use custom notification scheme configured by your Admin" #: ../../static/t/prefs/pushemail.html:43 msgid "Don‘t send any notifications" msgstr "Don‘t send any notifications" #: ../../static/t/prefs/box.html:9 msgid "Tree (folders) view" msgstr "Tree (folders) view" #: ../../static/t/prefs/box.html:11 msgid "Table (rooms) view" msgstr "Table (rooms) view" #: ../../static/t/prefs/box.html:20 msgid "12 hour (am/pm)" msgstr "12 hour (am/pm)" #: ../../static/t/prefs/box.html:25 msgid "24 hour" msgstr "24 hour" #: ../../static/t/prefs/box.html:152 msgid "Sunday" msgstr "Sunday" #: ../../static/t/prefs/box.html:153 msgid "Monday" msgstr "Monday" #: ../../static/t/prefs/box.html:174 msgid "No signature" msgstr "No signature" #: ../../static/t/prefs/box.html:238 msgid "Full-functionality" msgstr "Full-functionality" #: ../../static/t/prefs/box.html:241 msgid "Safe mode" msgstr "Safe mode" #: ../../static/t/prefs/box.html:242 msgid "" "Safe mode is less intensive on your web browser, but not as fully featured." msgstr "" "Safe mode is less intensive on your web browser, but not as fully featured." #: ../../static/t/wiki/pagelist.html:1 msgid "List of Wiki pages" msgstr "List of Wiki pages" #: ../../static/t/wiki/history.html:1 msgid "History of edits for this page" msgstr "History of edits for this page" #: ../../static/t/who/list_static_header.html:1 msgid "Users currently on" msgstr "Users currently on" #: ../../static/t/who/section.html:4 msgid "(kill)" msgstr "(kill)" #: ../../static/t/who/bio.html:4 ../../static/t/user/show.html:4 msgid "User profile" msgstr "User profile" #: ../../static/t/who/summary.html:5 ../../static/t/who/box_list_static.html:6 #: ../../static/t/room/edit/tab_feed.html:13 msgid "User name" msgstr "User name" #: ../../static/t/who/summary.html:6 ../../static/t/who/box_list_static.html:7 msgid "Room" msgstr "Room" #: ../../static/t/who/box_list_static.html:8 msgid "From host" msgstr "From host" #: ../../static/t/view_message.html:19 msgid "Edit" msgstr "Edit" #: ../../static/t/view_message.html:22 ../../static/t/view_message.html:26 msgid "Reply" msgstr "Reply" #: ../../static/t/view_message.html:23 msgid "ReplyQuoted" msgstr "ReplyQuoted" #: ../../static/t/view_message.html:27 msgid "ReplyAll" msgstr "ReplyAll" #: ../../static/t/view_message.html:28 msgid "Forward" msgstr "Forward" #: ../../static/t/view_message.html:31 ../../static/t/msg_listview.html:25 msgid "Move" msgstr "Move" #: ../../static/t/view_message.html:34 msgid "Headers" msgstr "Headers" #: ../../static/t/view_message.html:35 ../../static/t/msg_listview.html:28 msgid "Print" msgstr "Print" #: ../../static/t/preferences.html:4 ../../static/t/preferences.html:7 msgid "Preferences and settings" msgstr "Preferences and settings" #: ../../static/t/user/list.html:3 msgid "User list for " msgstr "User list for " #: ../../static/t/user/list.html:9 msgid "User Name" msgstr "User Name" #: ../../static/t/user/list.html:10 msgid "Number" msgstr "Number" #: ../../static/t/user/list.html:11 msgid "Access Level" msgstr "Access Level" #: ../../static/t/user/list.html:12 msgid "Last Login" msgstr "Last Login" #: ../../static/t/user/list.html:13 msgid "Total Logins" msgstr "Total Logins" #: ../../static/t/user/list.html:14 msgid "Total Posts" msgstr "Total Posts" #: ../../static/t/user/show.html:9 msgid "Click here to send an instant message to" msgstr "Click here to send an instant message to" #: ../../static/t/start_of_new_msgs.html:4 msgid "Old messages" msgstr "Old messages" #: ../../static/t/start_of_new_msgs.html:8 msgid "New messages" msgstr "New messages" #: ../../static/t/display_main_menu.html:7 msgid "Basic commands" msgstr "Basic commands" #: ../../static/t/display_main_menu.html:10 msgid "Your info" msgstr "Your info" #: ../../static/t/display_main_menu.html:12 msgid "Advanced room commands" msgstr "Advanced room commands" #: ../../static/t/iconbar/save.html:4 ../../static/t/iconbar/edit.html:4 msgid "Customize the icon bar" msgstr "Customise the icon bar" #: ../../static/t/iconbar/save.html:11 msgid "" "Your icon bar has been updated. Please select any of its choices to continue." msgstr "" "Your icon bar has been updated. Please select any of its choices to continue." #: ../../static/t/iconbar/save.html:11 msgid "" "You may need to force refresh (SHIFT-F5)> in order for changes to take effect" msgstr "" "You may need to force refresh (SHIFT-F5)> in order for changes to take effect" #: ../../static/t/iconbar/edit.html:11 msgid "Display icons as:" msgstr "Display icons as:" #: ../../static/t/iconbar/edit.html:12 msgid "pictures and text" msgstr "pictures and text" #: ../../static/t/iconbar/edit.html:13 msgid "pictures only" msgstr "pictures only" #: ../../static/t/iconbar/edit.html:14 msgid "text only" msgstr "text only" #: ../../static/t/iconbar/edit.html:16 msgid "" "Select the icons you would like to see displayed in the 'icon bar' menu on " "the left side of the screen." msgstr "" "Select the icons you would like to see displayed in the 'icon bar' menu on " "the left side of the screen." #: ../../static/t/iconbar/edit.html:23 msgid "Site logo" msgstr "Site logo" #: ../../static/t/iconbar/edit.html:23 msgid "An icon describing this site" msgstr "An icon describing this site" #: ../../static/t/iconbar/edit.html:29 msgid "Your summary page" msgstr "Your summary page" #: ../../static/t/iconbar/edit.html:36 msgid "Mail (inbox)" msgstr "Mail (inbox)" #: ../../static/t/iconbar/edit.html:36 msgid "A shortcut to your email Inbox" msgstr "A shortcut to your email Inbox" #: ../../static/t/iconbar/edit.html:42 msgid "Your personal address book" msgstr "Your personal address book" #: ../../static/t/iconbar/edit.html:49 msgid "Your personal notes" msgstr "Your personal notes" #: ../../static/t/iconbar/edit.html:55 msgid "A shortcut to your personal calendar" msgstr "A shortcut to your personal calendar" #: ../../static/t/iconbar/edit.html:61 msgid "A shortcut to your personal task list" msgstr "A shortcut to your personal task list" #: ../../static/t/iconbar/edit.html:67 msgid "" "Clicking this icon displays a list of all accessible rooms (or folders) " "available." msgstr "" "Clicking this icon displays a list of all accessible rooms (or folders) " "available." #: ../../static/t/iconbar/edit.html:73 msgid "Who is online?" msgstr "Who is online?" #: ../../static/t/iconbar/edit.html:73 msgid "Clicking this icon displays a list of all users currently logged in." msgstr "Clicking this icon displays a list of all users currently logged in." #: ../../static/t/iconbar/edit.html:79 msgid "" "Clicking this icon enters real-time chat mode with other users in the same " "room." msgstr "" "Clicking this icon enters real-time chat mode with other users in the same " "room." #: ../../static/t/iconbar/edit.html:85 msgid "Advanced options" msgstr "Advanced options" #: ../../static/t/iconbar/edit.html:85 msgid "Access to the complete menu of Citadel functions." msgstr "Access to the complete menu of Citadel functions." #: ../../static/t/iconbar/edit.html:91 msgid "Citadel logo" msgstr "Citadel logo" #: ../../static/t/iconbar/edit.html:91 msgid "Displays the 'Powered by Citadel' icon" msgstr "Displays the 'Powered by Citadel' icon" #: ../../static/t/room/edit/tab_expire.html:8 msgid "Message expire policy for this room" msgstr "Message expire policy for this room" #: ../../static/t/room/edit/tab_expire.html:14 msgid "Use the default policy for this floor" msgstr "Use the default policy for this floor" #: ../../static/t/room/edit/tab_expire.html:36 msgid "Message expire policy for this floor" msgstr "Message expire policy for this floor" #: ../../static/t/room/edit/tab_expire.html:42 msgid "Use the system default" msgstr "Use the system default" #: ../../static/t/room/edit/editroom.html:5 ../../static/t/room/edit.html:6 msgid "Configuration" msgstr "Configuration" #: ../../static/t/room/edit/editroom.html:6 ../../static/t/room/edit.html:7 msgid "Message expire policy" msgstr "Message expire policy" #: ../../static/t/room/edit/editroom.html:7 ../../static/t/room/edit.html:8 msgid "Access controls" msgstr "Access controls" #: ../../static/t/room/edit/editroom.html:8 ../../static/t/room/edit.html:9 msgid "Sharing" msgstr "Sharing" #: ../../static/t/room/edit/editroom.html:9 ../../static/t/room/edit.html:10 msgid "Mailing list service" msgstr "Mailing list service" #: ../../static/t/room/edit/editroom.html:10 ../../static/t/room/edit.html:11 msgid "Remote retrieval" msgstr "Remote retrieval" #: ../../static/t/room/edit/tab_config.html:6 msgid "name of room: " msgstr "name of room: " #: ../../static/t/room/edit/tab_config.html:10 #: ../../static/t/room/create.html:20 msgid "Resides on floor: " msgstr "Resides on floor: " #: ../../static/t/room/edit/tab_config.html:16 #: ../../static/t/room/create.html:68 msgid "Type of room:" msgstr "Type of room:" #: ../../static/t/room/edit/tab_config.html:22 #: ../../static/t/room/create.html:73 msgid "Public (automatically appears to everyone)" msgstr "Public (automatically appears to everyone)" #: ../../static/t/room/edit/tab_config.html:28 #: ../../static/t/room/create.html:77 msgid "Private - hidden (accessible to anyone who knows its name)" msgstr "Private - hidden (accessible to anyone who knows its name)" #: ../../static/t/room/edit/tab_config.html:35 #: ../../static/t/room/create.html:81 msgid "Private - require password: " msgstr "Private - require password: " #: ../../static/t/room/edit/tab_config.html:44 #: ../../static/t/room/create.html:86 msgid "Private - invitation only" msgstr "Private - invitation only" #: ../../static/t/room/edit/tab_config.html:51 #: ../../static/t/room/create.html:90 msgid "Personal (mailbox for you only)" msgstr "Personal (mailbox for you only)" #: ../../static/t/room/edit/tab_config.html:55 msgid "If private, cause current users to forget room" msgstr "If private, cause current users to forget room" #: ../../static/t/room/edit/tab_config.html:61 msgid "Preferred users only" msgstr "Preferred users only" #: ../../static/t/room/edit/tab_config.html:66 msgid "Read-only room" msgstr "Read-only room" #: ../../static/t/room/edit/tab_config.html:71 msgid "All users allowed to post may also delete messages" msgstr "All users allowed to post may also delete messages" #: ../../static/t/room/edit/tab_config.html:76 msgid "File directory room" msgstr "File directory room" #: ../../static/t/room/edit/tab_config.html:80 msgid "Directory name: " msgstr "Directory name: " #: ../../static/t/room/edit/tab_config.html:86 msgid "Uploading allowed" msgstr "Uploading allowed" #: ../../static/t/room/edit/tab_config.html:91 msgid "Downloading allowed" msgstr "Downloading allowed" #: ../../static/t/room/edit/tab_config.html:96 msgid "Visible directory" msgstr "Visible directory" #: ../../static/t/room/edit/tab_config.html:103 msgid "Network shared room" msgstr "Network shared room" #: ../../static/t/room/edit/tab_config.html:108 msgid "Permanent (does not auto-purge)" msgstr "Permanent (does not auto-purge)" #: ../../static/t/room/edit/tab_config.html:113 msgid "Subject Required (Force users to specify a message subject)" msgstr "Subject Required (Force users to specify a message subject)" #: ../../static/t/room/edit/tab_config.html:116 msgid "Anonymous messages" msgstr "Anonymous messages" #: ../../static/t/room/edit/tab_config.html:122 msgid "No anonymous messages" msgstr "No anonymous messages" #: ../../static/t/room/edit/tab_config.html:127 msgid "All messages are anonymous" msgstr "All messages are anonymous" #: ../../static/t/room/edit/tab_config.html:132 msgid "Prompt user when entering messages" msgstr "Prompt user when entering messages" #: ../../static/t/room/edit/tab_config.html:136 msgid "Room aide: " msgstr "Room aide: " #: ../../static/t/room/edit/tab_listserv.html:5 msgid "" "The contents of this room are being mailed as individual messages " "to the following list recipients:

    " msgstr "" "The contents of this room are being mailed as individual messages " "to the following list recipients:

    " #: ../../static/t/room/edit/tab_listserv.html:19 msgid "" "The contents of this room are being mailed in digest form to the " "following list recipients:

    " msgstr "" "The contents of this room are being mailed in digest form to the " "following list recipients:

    " #: ../../static/t/room/edit/tab_listserv.html:39 msgid "Add recipients from Contacts or other address books" msgstr "Add recipients from Contacts or other address books" #: ../../static/t/room/edit/tab_listserv.html:48 msgid "Allow non-subscribers to mail to this room." msgstr "Allow non-subscribers to mail to this room." #: ../../static/t/room/edit/tab_listserv.html:54 msgid "Room post publication needs Admin permission." msgstr "Room post publication needs Admin permission." #: ../../static/t/room/edit/tab_listserv.html:59 msgid "Allow self-service subscribe/unsubscribe requests." msgstr "Allow self-service subscribe/unsubscribe requests." #: ../../static/t/room/edit/tab_listserv.html:65 msgid "The URL for subscribe/unsubscribe is: " msgstr "The URL for subscribe/unsubscribe is: " #: ../../static/t/room/edit/digestrecp_removal.html:1 #: ../../static/t/room/edit/pop3client_removal.html:9 #: ../../static/t/room/edit/listrecp_removal.html:1 #: ../../static/t/room/edit/rssclient_removal.html:5 msgid "(remove)" msgstr "(remove)" #: ../../static/t/room/edit/tab_admin.html:5 msgid "Delete this room" msgstr "Delete this room" #: ../../static/t/room/edit/tab_admin.html:10 msgid "Set or change the icon for this rooms banner" msgstr "Set or change the icon for this rooms banner" #: ../../static/t/room/edit/tab_admin.html:14 msgid "Edit this rooms Info file" msgstr "Edit this rooms Info file" #: ../../static/t/room/edit/tab_share.html:5 msgid "Shared with" msgstr "Shared with" #: ../../static/t/room/edit/tab_share.html:6 msgid "Not shared with" msgstr "Not shared with" #: ../../static/t/room/edit/tab_share.html:11 #: ../../static/t/room/edit/tab_share.html:21 msgid "Remote node name" msgstr "Remote node name" #: ../../static/t/room/edit/tab_share.html:12 #: ../../static/t/room/edit/tab_share.html:22 msgid "Remote room name" msgstr "Remote room name" #: ../../static/t/room/edit/tab_share.html:13 #: ../../static/t/room/edit/tab_share.html:23 msgid "Actions" msgstr "Actions" #: ../../static/t/room/edit/tab_share.html:35 msgid "" "When sharing a room, it must be shared from both ends. Adding a node to the " "'shared' list sends messages out, but in order to receive messages, the " "other nodes must be configured to send messages out to your system as well. " "
  • If the remote room name is blank, it is assumed that the room name is " "identical on the remote node.
  • If the remote room name is different, the " "remote node must also configure the name of the room here." msgstr "" "When sharing a room, it must be shared from both ends. Adding a node to the " "'shared' list sends messages out, but in order to receive messages, the " "other nodes must be configured to send messages out to your system as well. " "
  • If the remote room name is blank, it is assumed that the room name is " "identical on the remote node.
  • If the remote room name is different, the " "remote node must also configure the name of the room here." #: ../../static/t/room/edit/tab_feed.html:2 msgid "" "Retrieve messages from these remote POP3 accounts and store them in this " "room:" msgstr "" "Retrieve messages from these remote POP3 accounts and store them in this " "room:" #: ../../static/t/room/edit/tab_feed.html:12 msgid "Remote host" msgstr "Remote host" #: ../../static/t/room/edit/tab_feed.html:15 msgid "Keep messages on server?" msgstr "Keep messages on server?" #: ../../static/t/room/edit/tab_feed.html:16 msgid "Interval" msgstr "Interval" #: ../../static/t/room/edit/tab_feed.html:31 msgid "Fetch the following RSS feeds and store them in this room:" msgstr "Fetch the following RSS feeds and store them in this room:" #: ../../static/t/room/edit/tab_feed.html:43 msgid "Feed URL" msgstr "Feed URL" #: ../../static/t/room/edit/tab_access.html:5 msgid "" "The users listed below have access to this room. To remove a user from the " "access list, select the user name from the list and click 'Kick'." msgstr "" "The users listed below have access to this room. To remove a user from the " "access list, select the user name from the list and click 'Kick'." #: ../../static/t/room/edit/tab_access.html:20 msgid "" "To grant another user access to this room, enter the user name in the box " "below and click 'Invite'." msgstr "" "To grant another user access to this room, enter the user name in the box " "below and click 'Invite'." #: ../../static/t/room/edit/tab_access.html:26 msgid "Invite:" msgstr "Invite:" #: ../../static/t/room/edit/tab_access.html:35 msgid "Users" msgstr "Users" #: ../../static/t/room/zapped_list.html:7 msgid "Zapped (forgotten) rooms" msgstr "Zapped (forgotten) rooms" #: ../../static/t/room/zapped_list.html:10 msgid "Click on any room to un-zap it and goto that room." msgstr "Click on any room to un-zap it and goto that room." #: ../../static/t/room/display_private.html:7 msgid "Go to a hidden room" msgstr "Go to a hidden room" #: ../../static/t/room/display_private.html:8 msgid "" "If you know the name of a hidden (guess-name) or passworded room, you can " "enter that room by typing its name below. Once you gain access to a private " "room, it will appear in your regular room listings so you don‘t have to keep " "returning here." msgstr "" "If you know the name of a hidden (guess-name) or passworded room, you can " "enter that room by typing its name below. Once you gain access to a private " "room, it will appear in your regular room listings so you don‘t have to keep " "returning here." #: ../../static/t/room/display_private.html:14 msgid "Enter room name:" msgstr "Enter room name:" #: ../../static/t/room/display_private.html:21 msgid "Enter room password:" msgstr "Enter room password:" #: ../../static/t/room/create.html:11 #: ../../static/t/menu/advanced_roomcommands.html:6 msgid "Create a new room" msgstr "Create a new room" #: ../../static/t/room/create.html:18 msgid "Name of room: " msgstr "Name of room: " #: ../../static/t/room/create.html:32 msgid "Default view for room: " msgstr "Default view for room: " #: ../../static/t/room/zap_this.html:3 msgid "Zap (forget/unsubscribe) the current room" msgstr "Zap (forget/unsubscribe) the current room" #: ../../static/t/room/zap_this.html:6 msgid "If you select this option," msgstr "If you select this option," #: ../../static/t/room/zap_this.html:8 msgid "will disappear from your room list. Is this what you wish to do?" msgstr "will disappear from your room list. Is this what you wish to do?" #: ../../static/t/menu/your_info.html:2 msgid "Change your preferences and settings" msgstr "Change your preferences and settings" #: ../../static/t/menu/your_info.html:3 msgid "Update your contact information" msgstr "Update your contact information" #: ../../static/t/menu/your_info.html:5 msgid "Enter your 'bio'" msgstr "Enter your 'bio'" #: ../../static/t/menu/your_info.html:6 msgid "Edit your online photo" msgstr "Edit your online photo" #: ../../static/t/menu/your_info.html:8 msgid "Edit your push email settings" msgstr "Edit your push email settings" #: ../../static/t/menu/your_info.html:9 msgid "Manage your OpenIDs" msgstr "Manage your OpenIDs" #: ../../static/t/menu/basic_commands.html:3 msgid "List known rooms" msgstr "List known rooms" #: ../../static/t/menu/basic_commands.html:3 msgid "Where can I go from here?" msgstr "Where can I go from here?" #: ../../static/t/menu/basic_commands.html:4 ../../static/t/navbar.html:168 msgid "Goto next room" msgstr "Goto next room" #: ../../static/t/menu/basic_commands.html:4 msgid "...with unread messages" msgstr "...with unread messages" #: ../../static/t/menu/basic_commands.html:5 msgid "Skip to next room" msgstr "Skip to next room" #: ../../static/t/menu/basic_commands.html:5 msgid "(come back here later)" msgstr "(come back here later)" #: ../../static/t/menu/basic_commands.html:6 ../../static/t/navbar.html:5 msgid "Ungoto" msgstr "Ungoto" #: ../../static/t/menu/basic_commands.html:6 msgid "oops! Back to " msgstr "oops! Back to " #: ../../static/t/menu/basic_commands.html:10 ../../static/t/navbar.html:13 msgid "Read new messages" msgstr "Read new messages" #: ../../static/t/menu/basic_commands.html:10 msgid "...in this room" msgstr "...in this room" #: ../../static/t/menu/basic_commands.html:11 ../../static/t/navbar.html:19 msgid "Read all messages" msgstr "Read all messages" #: ../../static/t/menu/basic_commands.html:11 msgid "...old and new" msgstr "...old and new" #: ../../static/t/menu/basic_commands.html:12 ../../static/t/navbar.html:25 msgid "Enter a message" msgstr "Enter a message" #: ../../static/t/menu/basic_commands.html:12 msgid "(post in this room)" msgstr "(post in this room)" #: ../../static/t/menu/basic_commands.html:13 msgid "File library" msgstr "File library" #: ../../static/t/menu/basic_commands.html:13 msgid "(List files available for download)" msgstr "(List files available for download)" #: ../../static/t/menu/basic_commands.html:17 msgid "Summary page" msgstr "Summary page" #: ../../static/t/menu/basic_commands.html:17 msgid "Summary of my account" msgstr "Summary of my account" #: ../../static/t/menu/basic_commands.html:18 msgid "User list" msgstr "User list" #: ../../static/t/menu/basic_commands.html:18 msgid "(all registered users)" msgstr "(all registered users)" #: ../../static/t/menu/basic_commands.html:19 msgid "Bye!" msgstr "Bye!" #: ../../static/t/menu/advanced_roomcommands.html:3 msgid "Edit or delete this room" msgstr "Edit or delete this room" #: ../../static/t/menu/advanced_roomcommands.html:5 msgid "Go to a 'hidden' room" msgstr "Go to a 'hidden' room" #: ../../static/t/menu/advanced_roomcommands.html:7 msgid "Zap (forget) this room" msgstr "Zap (forget) this room" #: ../../static/t/menu/advanced_roomcommands.html:8 msgid "List all forgotten rooms" msgstr "List all forgotten rooms" #: ../../static/t/navbar.html:34 msgid "View contacts" msgstr "View contacts" #: ../../static/t/navbar.html:40 msgid "Add new contact" msgstr "Add new contact" #: ../../static/t/navbar.html:49 msgid "Day view" msgstr "Day view" #: ../../static/t/navbar.html:55 msgid "Month view" msgstr "Month view" #: ../../static/t/navbar.html:61 msgid "Add new event" msgstr "Add new event" #: ../../static/t/navbar.html:70 msgid "Calendar list" msgstr "Calendar list" #: ../../static/t/navbar.html:79 msgid "View tasks" msgstr "View tasks" #: ../../static/t/navbar.html:85 msgid "Add new task" msgstr "Add new task" #: ../../static/t/navbar.html:94 msgid "View notes" msgstr "View notes" #: ../../static/t/navbar.html:101 msgid "Add new note" msgstr "Add new note" #: ../../static/t/navbar.html:110 msgid "Refresh message list" msgstr "Refresh message list" #: ../../static/t/navbar.html:122 msgid "Write mail" msgstr "Write mail" #: ../../static/t/navbar.html:132 msgid "Wiki home" msgstr "Wiki home" #: ../../static/t/navbar.html:139 msgid "Edit this page" msgstr "Edit this page" #: ../../static/t/navbar.html:145 msgid "History" msgstr "History" #: ../../static/t/navbar.html:154 msgid "New blog post" msgstr "New blog post" #: ../../static/t/navbar.html:162 msgid "Skip this room" msgstr "Skip this room" #: ../../static/t/msg_listview.html:18 msgid "Loading messages from server, please wait" msgstr "Loading messages from server, please wait" #: ../../static/t/msg_listview.html:24 msgid "Open in new window" msgstr "Open in new window" #: ../../static/t/msg_listview.html:26 msgid "Copy" msgstr "Copy" #: ../../static/t/view_mailq/message.html:6 msgid "Originaly posted in: " msgstr "Originaly posted in: " #: ../../static/t/view_mailq/header.html:15 msgid "Refresh this page" msgstr "Refresh this page" #: ../../static/t/view_mailq/header.html:21 msgid "Message ID" msgstr "Message ID" #: ../../static/t/view_mailq/header.html:23 msgid "Date/time submitted" msgstr "Date/time submitted" #: ../../static/t/view_mailq/header.html:25 msgid "Next attempt" msgstr "Next attempt" #: ../../static/t/view_mailq/header.html:29 msgid "Recipients" msgstr "Recipients" #: ../../static/t/view_mailq/footer_empty.html:4 msgid "The queue is empty." msgstr "The queue is empty." #: ../../static/t/view_mailq/footer_empty.html:9 #: ../../static/t/view_mailq/footer.html:5 msgid "You do not have permission to view this resource." msgstr "You do not have permission to view this resource." #: ../../static/t/get_logged_in.html:5 msgid "You must be logged in to access this page." msgstr "You must be logged in to access this page." #: ../../static/t/get_logged_in.html:9 #: ../../static/t/edit_message/attachments_pane.html:3 msgid "Close window" msgstr "Close window" #: ../../static/t/get_logged_in.html:55 msgid "Log in using a user name and password" msgstr "Log in using a user name and password" #: ../../static/t/get_logged_in.html:60 ../../static/t/get_logged_in.html:75 msgid "Password:" msgstr "Password" #: ../../static/t/get_logged_in.html:65 ../../static/t/get_logged_in.html:69 msgid "New user? Register now" msgstr "New user? Register now" #: ../../static/t/get_logged_in.html:70 msgid "" "enter the name and password you wish to use, and click "New User." " msgstr "" "enter the name and password you wish to use, and click "New User." " #: ../../static/t/get_logged_in.html:83 msgid "Log in using OpenID" msgstr "Log in using OpenID" #: ../../static/t/get_logged_in.html:85 msgid "OpenID URL:" msgstr "OpenID URL:" #: ../../static/t/get_logged_in.html:92 msgid "Log in using Google" msgstr "Log in using Google" #: ../../static/t/get_logged_in.html:97 msgid "Log in using Yahoo" msgstr "Log in using Yahoo" #: ../../static/t/get_logged_in.html:102 msgid "Log in using AOL or AIM" msgstr "Log in using AOL or AIM" #: ../../static/t/get_logged_in.html:104 msgid "Enter your AOL or AIM screen name:" msgstr "Enter your AOL or AIM screen name:" #: ../../static/t/get_logged_in.html:115 msgid "Please wait" msgstr "Please wait" #: ../../static/t/summary/page.html:4 msgid "Summary page for " msgstr "Summary page for " #: ../../static/t/summary/page.html:21 msgid "Messages" msgstr "Messages" #: ../../static/t/summary/page.html:39 msgid "Today on your calendar" msgstr "Today on your calendar" #: ../../static/t/summary/page.html:51 msgid "Who‘s online now" msgstr "Who‘s online now" #: ../../static/t/summary/page.html:60 msgid "About this server" msgstr "About this server" #: ../../static/t/summary/page.html:63 msgid "You are connected to" msgstr "You are connected to" #: ../../static/t/summary/page.html:64 msgid "running" msgstr "running" #: ../../static/t/summary/page.html:65 msgid "with" msgstr "with" #: ../../static/t/summary/page.html:66 msgid "server build" msgstr "server build" #: ../../static/t/summary/page.html:67 msgid "and located in" msgstr "and located in" #: ../../static/t/summary/page.html:68 msgid "Your system administrator is" msgstr "Your system administrator is" #: ../../static/t/edit_message/attachments_pane.html:16 msgid "Attach file" msgstr "Attach file" #: ../../static/t/edit_message/attachments_pane.html:21 msgid "Upload" msgstr "Upload" #: ../../static/t/edit_message/section_attach_select.html:4 msgid "Remove" msgstr "Remove" #: ../../static/t/loggedinas.html:3 msgid "Logged in as" msgstr "Logged in as" #: ../../static/t/loggedinas.html:6 msgid "Not logged in." msgstr "Not logged in." webcit-8.24-dfsg.orig/po/webcit/da.po0000644000175000017500000034747312271477123017241 0ustar michaelmichael# Danish localization for WebCit # Copyright (C) 2006 - 2009 The Citadel Project - http://www.citadel.org # This file is distributed under GPL v3 # Flemming Veggerby 2008 - 2009 msgid "" msgstr "" "Project-Id-Version: WebCit\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-03-20 01:03-0400\n" "PO-Revision-Date: 2010-10-22 14:46+0000\n" "Last-Translator: Flemming Veggerby \n" "Language-Team: Danish \n" "Language: da\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-10-23 04:47+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: ../../roomops.c:708 ../../roomops.c:1005 ../../sieve.c:364 msgid "Cancelled. Changes were not saved." msgstr "Afbrudt. Ændringer blev ikke gemt." #: ../../roomops.c:838 ../../sieve.c:417 msgid "Your changes have been saved." msgstr "Dine ændringer er blevet gemt." #: ../../roomops.c:881 #, c-format msgid "User '%s' kicked out of room '%s'." msgstr "Bruger %s blev sparket ud af rum %s." #: ../../roomops.c:898 #, c-format msgid "User '%s' invited to room '%s'." msgstr "Bruger %s blev inviteret til rum %s." #: ../../roomops.c:927 msgid "Cancelled. No new room was created." msgstr "Afbrudt. Intet nyt rum blev oprettet." #: ../../roomops.c:1187 msgid "Floor has been deleted." msgstr "Etage er blevet slettet." #: ../../roomops.c:1211 msgid "New floor has been created." msgstr "Ny etage er oprettet." #: ../../roomops.c:1290 msgid "Room list view" msgstr "Rum liste visning" #: ../../roomops.c:1293 msgid "Show empty floors" msgstr "Vis tomme etager" #: ../../roomviews.c:50 msgid "Bulletin Board" msgstr "Opslagstavle" #: ../../roomviews.c:51 msgid "Mail Folder" msgstr "Post Mappe" #: ../../roomviews.c:52 msgid "Address Book" msgstr "Adressebog" #: ../../roomviews.c:53 ../../static/t/iconbar.html:24 #: ../../static/t/iconbar/edit.html:55 msgid "Calendar" msgstr "Kalender" #: ../../roomviews.c:54 msgid "Task List" msgstr "Opgave Liste" #: ../../roomviews.c:55 msgid "Notes List" msgstr "Note Liste" #: ../../roomviews.c:56 msgid "Wiki" msgstr "Wiki" #: ../../roomviews.c:57 msgid "Calendar List" msgstr "Kalender Liste" #: ../../roomviews.c:58 msgid "Journal" msgstr "Journal" #: ../../roomviews.c:59 #, fuzzy msgid "Drafts" msgstr "Dato" #: ../../roomviews.c:60 msgid "Blog" msgstr "" #: ../../tasks.c:93 msgid "Completed?" msgstr "" #: ../../tasks.c:95 msgid "Name of task" msgstr "Navn på opgave" #: ../../tasks.c:97 msgid "Date due" msgstr "Forfaldsdato" #: ../../tasks.c:99 msgid "Category" msgstr "Kategori" #: ../../tasks.c:101 msgid "Show All" msgstr "Vis Alle" #: ../../tasks.c:223 msgid "Edit task" msgstr "Editér opgave" #: ../../tasks.c:242 ../../calendar.c:98 ../../calendar_view.c:298 #: ../../calendar_view.c:959 ../../calendar_view.c:1003 #: ../../calendar_view.c:1084 msgid "Summary:" msgstr "Summering:" #: ../../tasks.c:253 msgid "Start date:" msgstr "Start dato:" #: ../../tasks.c:261 ../../tasks.c:291 msgid "No date" msgstr "" #: ../../tasks.c:265 ../../tasks.c:294 msgid "or" msgstr "eller" #: ../../tasks.c:279 ../../tasks.c:308 msgid "Time associated" msgstr "" #: ../../tasks.c:283 msgid "Due date:" msgstr "Forfald dato:" #: ../../tasks.c:312 msgid "Completed:" msgstr "" #: ../../tasks.c:323 msgid "Category:" msgstr "Kategori:" #: ../../tasks.c:333 ../../calendar.c:159 ../../static/t/files.html:12 msgid "Description:" msgstr "Beskrivelse:" #: ../../tasks.c:351 ../../event.c:764 msgid "Save" msgstr "Gem" #: ../../tasks.c:352 ../../event.c:765 ../../static/t/aide/inet/section.html:5 #: ../../static/t/view_blog/comment.html:12 #: ../../static/t/view_blog/post.html:15 ../../static/t/view_message.html:32 #: ../../static/t/navbar.html:116 ../../static/t/msg_listview.html:27 msgid "Delete" msgstr "Slet" #: ../../tasks.c:353 ../../vcard_edit.c:1216 ../../paging.c:66 #: ../../event.c:767 ../../sysmsgs.c:69 ../../who.c:200 ../../auth.c:812 #: ../../static/t/edit_message.html:135 ../../static/t/confirmlogoff.html:4 msgid "Cancel" msgstr "Afbryd" #: ../../tasks.c:423 ../../calendar_view.c:1379 msgid "Untitled Task" msgstr "" #: ../../fmt_date.c:310 msgid "Time format" msgstr "Time format" #: ../../listsub.c:54 ../../static/t/listsub/display.html:5 msgid "List subscription" msgstr "Vis Listeabonnementer" #: ../../listsub.c:67 ../../static/t/listsub/display.html:9 msgid "List subscribe/unsubscribe" msgstr "Abonnér/slet abonnement" #: ../../listsub.c:87 ../../static/t/listsub/display.html:15 #: ../../static/t/listsub/display.html:34 msgid "Confirmation request sent" msgstr "Godkendelsesforespørgsel sendt" #: ../../listsub.c:89 #, c-format msgid "" "You are subscribing %s to the %s mailing list. The " "listserver has sent you an e-mail with one additional Web link for you to " "click on to confirm your subscription. This extra step is for your " "protection, as it prevents others from being able to subscribe you to lists " "without your consent.

    Please click on the link which is being e-" "mailed to you and your subscription will be confirmed.
    \n" msgstr "" "Du abonnérer %s%s post listen. Listeserveren har sendt " "dig en e-mail med et link som du skal klikke på for at godkende dit " "abonnement. Denne ekstra foranstaltning er din beskyttelse, da det " "forhindrer andre i at abonnere på en liste i dit navn uden din billigelse." "

    Klik på linketsom er blevet sendt til dig for at acceptere dit " "abonnement.
    \n" #: ../../listsub.c:102 ../../static/t/listsub/display.html:24 msgid "Go back..." msgstr "Tilbage..." #: ../../listsub.c:253 ../../listsub.c:291 ../../listsub.c:327 #: ../../listsub.c:334 msgid "You need to specify the mailinglist to subscribe to." msgstr "" #: ../../listsub.c:260 ../../listsub.c:298 #, fuzzy msgid "You need to specify the email address you'd like to subscribe with." msgstr "Skriv det Brugernavn du gerne vil have." #: ../../blogview_renderer.c:58 ../../blogview_renderer.c:74 #, fuzzy, c-format msgid "%d comments" msgstr "Send kommando" #: ../../blogview_renderer.c:61 ../../blogview_renderer.c:77 msgid "permalink" msgstr "" #: ../../blogview_renderer.c:302 msgid "Newer posts" msgstr "nyere stillinger" #: ../../blogview_renderer.c:311 msgid "Older posts" msgstr "ældre indlæg" #: ../../useredit.c:629 msgid "" "An error occurred while trying to create or edit this address book entry." msgstr "" "En fejl opstod ved forsøg på at oprette eller editére dette adressebogsemne." #: ../../useredit.c:717 msgid "Changes were not saved." msgstr "Ændringer blev ikke gemt." #: ../../useredit.c:782 msgid "A new user has been created." msgstr "En ny bruger blev oprettet." #: ../../useredit.c:786 msgid "" "You are attempting to create a new user from within Citadel while running in " "host based authentication mode. In this mode, you must create new users on " "the host system, not within Citadel." msgstr "" "Du forsøger at opretter en ny bruger i Citadel mens den kører i værtsbaseret " "autentifikation. I denne konfiguration, skal du oprette nye brugere på værts-" "systemet, ikke i Citadel." #: ../../bbsview_renderer.c:312 msgid "Go to page: " msgstr "" #: ../../bbsview_renderer.c:354 msgid "First" msgstr "" #: ../../bbsview_renderer.c:360 msgid "Last" msgstr "" #: ../../graphics.c:56 msgid "Graphics upload has been cancelled." msgstr "Upload er blevet afbrudt." #: ../../graphics.c:62 msgid "You didn't upload a file." msgstr "Du uploadede ikke en fil." #: ../../graphics.c:112 msgid "your photo" msgstr "dit billede" #: ../../graphics.c:119 msgid "the icon for this room" msgstr "ikonet for dette rum" #: ../../graphics.c:127 msgid "the Greetingpicture for the login prompt" msgstr "Velkomstbillede ved login" #: ../../graphics.c:135 msgid "the Logoff banner picture" msgstr "Logaf banner billede" #: ../../graphics.c:146 msgid "the icon for this floor" msgstr "ikonet for denne etage" #: ../../calendar_tools.c:100 msgid "Hour: " msgstr "Time: " #: ../../calendar_tools.c:120 msgid "Minute: " msgstr "Minut: " #: ../../calendar_tools.c:191 msgid "(status unknown)" msgstr "(status ukendt)" #: ../../calendar_tools.c:207 msgid "(needs action)" msgstr "(behøver aktion)" #: ../../calendar_tools.c:210 msgid "(accepted)" msgstr "(accepteret)" #: ../../calendar_tools.c:213 msgid "(declined)" msgstr "(afvist)" #: ../../calendar_tools.c:216 msgid "(tenative)" msgstr "(foreløbig)" #: ../../calendar_tools.c:219 msgid "(delegated)" msgstr "(delegeret)" #: ../../calendar_tools.c:222 msgid "(completed)" msgstr "(færdig)" #: ../../calendar_tools.c:225 msgid "(in process)" msgstr "(igang)" #: ../../calendar_tools.c:228 msgid "(none)" msgstr "(ingen)" #: ../../notes.c:343 msgid "Click on any note to edit it." msgstr "Klik på en note for at ændre den." #: ../../vcard_edit.c:175 ../../vcard_edit.c:178 msgid "(no name)" msgstr "(intet navn)" #: ../../vcard_edit.c:443 msgid " (work)" msgstr " (arbejde)" #: ../../vcard_edit.c:445 msgid " (home)" msgstr " (hjem)" #: ../../vcard_edit.c:447 msgid " (cell)" msgstr " (afdeling)" #: ../../vcard_edit.c:458 ../../vcard_edit.c:1120 msgid "Address:" msgstr "Adresse:" #: ../../vcard_edit.c:526 msgid "Telephone:" msgstr "Telefon:" #: ../../vcard_edit.c:531 msgid "E-mail:" msgstr "E-mail:" #: ../../vcard_edit.c:779 msgid "This address book is empty." msgstr "Denne adressebog er tom." #: ../../vcard_edit.c:793 msgid "An internal error has occurred." msgstr "" #: ../../vcard_edit.c:944 msgid "Error" msgstr "Fejl" #: ../../vcard_edit.c:1048 msgid "Edit contact information" msgstr "Editér kontakt information" #: ../../vcard_edit.c:1068 msgid "Prefix" msgstr "Præfix" #: ../../vcard_edit.c:1068 msgid "First Name" msgstr "Fornavn" #: ../../vcard_edit.c:1068 msgid "Middle Name" msgstr "Mellemnavn" #: ../../vcard_edit.c:1068 msgid "Last Name" msgstr "Efternavn" #: ../../vcard_edit.c:1068 msgid "Suffix" msgstr "Tilføjelse" #: ../../vcard_edit.c:1089 msgid "Display name:" msgstr "Vist navn:" #: ../../vcard_edit.c:1096 msgid "Title:" msgstr "Titel:" #: ../../vcard_edit.c:1103 msgid "Organization:" msgstr "Organisation:" #: ../../vcard_edit.c:1114 msgid "PO box:" msgstr "Postbox:" #: ../../vcard_edit.c:1130 msgid "City:" msgstr "By:" #: ../../vcard_edit.c:1136 msgid "State:" msgstr "Stat:" #: ../../vcard_edit.c:1142 msgid "ZIP code:" msgstr "Postnummer:" #: ../../vcard_edit.c:1148 msgid "Country:" msgstr "Land:" #: ../../vcard_edit.c:1158 msgid "Home telephone:" msgstr "Hjemmetelefon:" #: ../../vcard_edit.c:1164 msgid "Work telephone:" msgstr "Arbejdstelefon:" #: ../../vcard_edit.c:1170 msgid "Mobile telephone:" msgstr "" #: ../../vcard_edit.c:1176 msgid "Fax number:" msgstr "" #: ../../vcard_edit.c:1187 msgid "Primary Internet e-mail address" msgstr "Pimær Internet Email adresse" #: ../../vcard_edit.c:1194 msgid "Internet e-mail aliases" msgstr "Internet Email aliasser" #: ../../vcard_edit.c:1215 ../../sysmsgs.c:67 msgid "Save changes" msgstr "Gem ændringer" #: ../../vcard_edit.c:1261 msgid "Unable to enter the room to save your message" msgstr "" #: ../../vcard_edit.c:1265 msgid "Aborting." msgstr "" #: ../../vcard_edit.c:1297 ../../vcard_edit.c:1341 ../../auth.c:367 #: ../../auth.c:397 msgid "An error has occurred." msgstr "En fejl er opstået" #: ../../vcard_edit.c:1399 msgid "Could Not decode vcard photo\n" msgstr "Kunne ikke dekode vcard foto\n" #: ../../preferences.c:880 msgid "Cancelled. No settings were changed." msgstr "Afbrudt. Ingen indstillinger blev ændret." #: ../../preferences.c:1092 msgid "Make this my start page" msgstr "Gør dette til min startside" #: ../../preferences.c:1130 msgid "This isn't allowed to become the start page." msgstr "" #: ../../preferences.c:1132 msgid "You no longer have a start page selected." msgstr "Du har ikke længere en startside." #: ../../preferences.c:1182 msgid "Prefered startpage" msgstr "" #: ../../calendar.c:76 msgid "Meeting invitation" msgstr "Møde invitaion" #: ../../calendar.c:79 msgid "Attendee's reply to your invitation" msgstr "Deltagers svar på din invitation" #: ../../calendar.c:82 msgid "Published event" msgstr "Publiseret aftale" #: ../../calendar.c:85 msgid "This is an unknown type of calendar item." msgstr "Dette er en ukendt type kalender emne." #: ../../calendar.c:107 ../../calendar_view.c:306 ../../calendar_view.c:964 #: ../../calendar_view.c:1008 ../../calendar_view.c:1089 msgid "Location:" msgstr "Lokation:" #: ../../calendar.c:132 ../../calendar_view.c:351 ../../calendar_view.c:970 msgid "Date:" msgstr "Dato:" #: ../../calendar.c:139 ../../calendar_view.c:373 ../../calendar_view.c:1013 #: ../../calendar_view.c:1099 msgid "Starting date/time:" msgstr "Start dato/tid:" #: ../../calendar.c:150 ../../calendar_view.c:376 ../../calendar_view.c:1015 #: ../../calendar_view.c:1101 msgid "Ending date/time:" msgstr "Slut dato/tid:" #: ../../calendar.c:168 ../../event.c:90 msgid "Recurrence" msgstr "Gentagelse" #: ../../calendar.c:169 ../../event.c:505 msgid "This is a recurring event" msgstr "Dette er en gentagende aftale" #: ../../calendar.c:178 msgid "Attendee:" msgstr "Deltager:" #: ../../calendar.c:218 #, c-format msgid "This is an update of '%s' which is already in your calendar." msgstr "Dette er en opdatering af '%s' som allerede er i din kalender." #: ../../calendar.c:222 #, c-format msgid "This event would conflict with '%s' which is already in your calendar." msgstr "Denne aftale vil konflikte med '%s* som allerede er i din kalender." #: ../../calendar.c:227 msgid "Update:" msgstr "Opdatering:" #: ../../calendar.c:228 msgid "CONFLICT:" msgstr "KONFLIKT:" #: ../../calendar.c:251 msgid "How would you like to respond to this invitation?" msgstr "Hvordan vil du svare på denne invitation?" #: ../../calendar.c:252 msgid "Accept" msgstr "Acceptér" #: ../../calendar.c:253 msgid "Tentative" msgstr "Foreløbig" #: ../../calendar.c:254 msgid "Decline" msgstr "Afvis" #: ../../calendar.c:271 msgid "Click Update to accept this reply and update your calendar." msgstr "" "Klik Opdatér for at acceptere dette svar og opdatere din kalender." #: ../../calendar.c:272 msgid "Update" msgstr "Opdatér" #: ../../calendar.c:273 msgid "Ignore" msgstr "Ignorér" #: ../../calendar.c:295 msgid "There was an error parsing this calendar item." msgstr "Der opstod en fejl ved behandling af dette emne." #: ../../calendar.c:328 msgid "" "You have accepted this meeting invitation. It has been entered into your " "calendar." msgstr "" "Du har accepteret denne mødeinvitation. Det er blevet tilføjet i din " "kalender." #: ../../calendar.c:332 msgid "" "You have tentatively accepted this meeting invitation. It has been " "'pencilled in' to your calendar." msgstr "" "Du har foreløbigt accepteret denne mødeinvitation. Det er blevet tilføjet i " "din kalender 'med blyant'" #: ../../calendar.c:336 msgid "" "You have declined this meeting invitation. It has not been entered " "into your calendar." msgstr "" "Du har afvist denne mødeinvitation. Det er ikke blevet tilføjet i " "din kalender." #: ../../calendar.c:341 msgid "A reply has been sent to the meeting organizer." msgstr "Et svar er blevet sendt til mødeorganisatoren." #. / Translators: RSVP aka Répondez s'il-vous-plaît Is the term #. / that the recipient of an ical-invitation should please #. / answer this request. #: ../../calendar.c:376 msgid "Your calendar has been updated to reflect this RSVP." msgstr "Din kalender er opdateret til at reflektere denne S.U." #: ../../calendar.c:378 msgid "" "You have chosen to ignore this RSVP. Your calendar has not been " "updated." msgstr "" "Du har valgt at ignorere denne S.U. Din kalender er ikke blevet " "opdateret." #: ../../calendar.c:932 msgid "Calendar day view begins at:" msgstr "Kalender dag visning begynder:" #: ../../calendar.c:933 msgid "Calendar day view ends at:" msgstr "Kalender dag visning slutter:" #: ../../calendar.c:934 msgid "Week starts on:" msgstr "Ugen starter:" #: ../../paging.c:35 msgid "Send instant message" msgstr "Send popup meddelelse" #: ../../paging.c:43 msgid "Send an instant message to: " msgstr "Sedn popup meddelelse til: " #: ../../paging.c:57 msgid "Enter message text:" msgstr "Skriv meddelelsestekst:" #: ../../paging.c:65 ../../static/t/edit_message.html:109 msgid "Send message" msgstr "Send meddelelse" #: ../../paging.c:84 msgid "Message was not sent." msgstr "Meddelelse blev ikke sendt." #: ../../paging.c:95 msgid "Message has been sent to " msgstr "Meddelelse blev sendt til " #: ../../iconbar.c:328 msgid "Iconbar Setting" msgstr "" #. #. * Set to 'unknown' right from the beginning. Unless we learn #. * something else, that's what we'll go with. #. #: ../../availability.c:148 msgid "availability unknown" msgstr "tilgængelighed ukendt" #: ../../availability.c:169 msgid "free" msgstr "fri" #: ../../availability.c:179 msgid "BUSY" msgstr "OPTAGET" #: ../../serv_func.c:193 msgid "" "This server is already serving its maximum number of users and cannot accept " "any additional logins at this time. Please try again later or contact your " "system administrator." msgstr "" "Denne server har allerede det maximale antal brugere logget ind og kan ikke " "acceptere flere lige nu. Prøv igen senere eller kontakt din System " "administrator." #: ../../serv_func.c:198 ../../serv_func.c:227 msgid "Received unexpected answer from Citadel server; bailing out." msgstr "" #: ../../serv_func.c:236 #, c-format msgid "" "You are connected to a Citadel server running Citadel %d.%02d. \n" "In order to run this version of WebCit you must also have Citadel %d.%02d or " "newer.\n" "\n" "\n" msgstr "" "Du er forbundet til en Citadel server der kører Citadel %d.%02d. \n" "For at køre denne version af WebCit skal du have Citadel %d.%02d eller " "nyere.\n" "\n" "\n" #: ../../event.c:70 msgid "seconds" msgstr "sekunder" #: ../../event.c:71 msgid "minutes" msgstr "" #: ../../event.c:72 msgid "hours" msgstr "" #: ../../event.c:73 msgid "days" msgstr "dage" #: ../../event.c:74 msgid "weeks" msgstr "" #: ../../event.c:75 msgid "months" msgstr "" #: ../../event.c:76 msgid "years" msgstr "" #: ../../event.c:77 msgid "never" msgstr "aldrig" #: ../../event.c:81 msgid "first" msgstr "" #: ../../event.c:82 msgid "second" msgstr "" #: ../../event.c:83 msgid "third" msgstr "tredie" #: ../../event.c:84 msgid "fourth" msgstr "fjerde" #: ../../event.c:85 msgid "fifth" msgstr "femte" #: ../../event.c:88 msgid "Event" msgstr "Aftale" #: ../../event.c:89 ../../event.c:437 ../../event.c:449 msgid "Attendees" msgstr "Deltagere" #: ../../event.c:167 msgid "Add or edit an event" msgstr "Tilføj eller editér en aftale" #: ../../event.c:206 ../../static/t/iconbar.html:13 #: ../../static/t/iconbar/edit.html:29 msgid "Summary" msgstr "Summering" #: ../../event.c:217 msgid "Location" msgstr "Lokation" #: ../../event.c:228 ../../calendar_view.c:760 msgid "Start" msgstr "Start" #: ../../event.c:271 ../../calendar_view.c:957 ../../calendar_view.c:986 msgid "All day event" msgstr "Hele dagen aftale" #: ../../event.c:277 ../../calendar_view.c:761 msgid "End" msgstr "Slut" #: ../../event.c:327 ../../static/t/iconbar.html:34 #: ../../static/t/iconbar/edit.html:49 msgid "Notes" msgstr "Noter" #: ../../event.c:369 msgid "Organizer" msgstr "Organisator" #: ../../event.c:374 msgid "(you are the organizer)" msgstr "(du er organisator)" #: ../../event.c:392 msgid "Show time as:" msgstr "Vis tid som:" #: ../../event.c:415 msgid "Free" msgstr "Fri" #: ../../event.c:423 msgid "Busy" msgstr "Optaget" #: ../../event.c:440 msgid "(One per line)" msgstr "(Én per linie)" #: ../../event.c:450 ../../static/t/edit_message.html:143 #: ../../static/t/iconbar.html:29 ../../static/t/iconbar/edit.html:42 msgid "Contacts" msgstr "Kontaktpersoner" #: ../../event.c:513 msgid "Recurrence rule" msgstr "" #: ../../event.c:517 msgid "Repeats every" msgstr "Gentages hver" #. begin 'weekday_selector' div #: ../../event.c:535 msgid "on these weekdays:" msgstr "på disse ugedage" #: ../../event.c:593 #, c-format msgid "on day %s%d%s of the month" msgstr "på den %s%d%s dag i måneden" #: ../../event.c:602 ../../event.c:664 msgid "on the " msgstr "" #: ../../event.c:626 msgid "of the month" msgstr "i måneden" #: ../../event.c:655 msgid "every " msgstr "hver " #: ../../event.c:656 msgid "year on this date" msgstr "år på denne dato" #: ../../event.c:688 ../../static/t/msg_listselector_bottom.html:7 #: ../../static/t/msg_listselector_top.html:7 msgid "of" msgstr "af" #: ../../event.c:712 msgid "Recurrence range" msgstr "Gentagelsesområde" #: ../../event.c:720 msgid "No ending date" msgstr "" #: ../../event.c:727 msgid "Repeat this event" msgstr "" #: ../../event.c:730 msgid "times" msgstr "" #: ../../event.c:738 msgid "Repeat this event until " msgstr "Gentag denne aftale indtil " #: ../../event.c:766 msgid "Check attendee availability" msgstr "Check deltager tilgænglighed" #: ../../event.c:858 ../../calendar_view.c:272 ../../calendar_view.c:468 #: ../../calendar_view.c:937 msgid "Untitled Event" msgstr "" #: ../../sysmsgs.c:52 #, c-format msgid "Edit %s" msgstr "Editér %s" #: ../../sysmsgs.c:55 #, c-format msgid "" "Enter %s below. Text is formatted to the reader's browser. A newline is " "forced by preceding the next line by a blank." msgstr "" "Skriv %s nedenfor. Tekst er formatteret til læserens skærmbredde. For at " "overvinde formatteringen, indfør en linie mindst et mellemrum." #: ../../sysmsgs.c:89 #, c-format msgid "Cancelled. %s was not saved." msgstr "Afbrudt. %s blev ikke gemt." #: ../../sysmsgs.c:109 #, fuzzy msgid " has been saved." msgstr "%s er blevet gemt." #: ../../sysmsgs.c:116 ../../sysmsgs.c:117 msgid "Room info" msgstr "Rum info" #: ../../sysmsgs.c:122 ../../sysmsgs.c:124 msgid "Your bio" msgstr "Din bio" #: ../../calendar_view.c:297 ../../calendar_view.c:958 #: ../../calendar_view.c:1002 ../../calendar_view.c:1083 #: ../../static/t/sieve/display_one.html:20 msgid "From" msgstr "" #: ../../calendar_view.c:355 ../../calendar_view.c:974 msgid "Starting date:" msgstr "" #: ../../calendar_view.c:361 ../../calendar_view.c:976 msgid "Ending date:" msgstr "" #: ../../calendar_view.c:369 ../../calendar_view.c:1095 msgid "Date/time:" msgstr "" #: ../../calendar_view.c:386 ../../calendar_view.c:980 #: ../../calendar_view.c:1018 ../../calendar_view.c:1105 #: ../../static/t/room/edit/tab_share.html:32 msgid "Notes:" msgstr "Noter:" #: ../../calendar_view.c:585 ../../calendar_view.c:721 msgid "previous" msgstr "" #: ../../calendar_view.c:597 ../../calendar_view.c:733 #: ../../calendar_view.c:1308 msgid "next" msgstr "" #: ../../calendar_view.c:756 msgid "Week" msgstr "Uge" #: ../../calendar_view.c:758 msgid "Hours" msgstr "Timer" #: ../../calendar_view.c:759 ../../static/t/sieve/display_one.html:22 #: ../../static/t/msg_listview.html:9 msgid "Subject" msgstr "Emne" #: ../../calendar_view.c:1001 ../../calendar_view.c:1024 msgid "Ongoing event" msgstr "Igangværende aftale" #: ../../messages.c:70 msgid "ERROR:" msgstr "FEJL:" #: ../../messages.c:88 msgid "Empty message" msgstr "" #: ../../messages.c:1010 msgid "Cancelled. Message was not posted." msgstr "Afbrudt. Meddelelse ikke opsat." #: ../../messages.c:1013 msgid "Automatically cancelled because you have already saved this message." msgstr "Automatisk afbrudt fordi du har allerede gemt denne meddelelse." #: ../../messages.c:1037 msgid "Saved to Drafts failed: " msgstr "" #: ../../messages.c:1102 msgid "Refusing to post empty message.\n" msgstr "" #: ../../messages.c:1128 msgid "Message has been saved to Drafts.\n" msgstr "" #: ../../messages.c:1137 msgid "Message has been sent.\n" msgstr "Meddelelse er blevet sendt.\n" #: ../../messages.c:1140 msgid "Message has been posted.\n" msgstr "Meddelelse er blevet opsat.\n" #: ../../messages.c:1679 msgid "The message was not moved." msgstr "Meddelelsen blev ikke flyttet." #: ../../messages.c:1719 #, c-format msgid "An error occurred while retrieving this part: %s/%s\n" msgstr "" #: ../../messages.c:1796 #, c-format msgid "An error occurred while retrieving this part: %s\n" msgstr "En fejl opstod under hentning af denne del: %s\n" #: ../../messages.c:1956 msgid "Attach signature to email messages?" msgstr "Tilføj signatur til meddelelser?" #: ../../messages.c:1959 msgid "Use this signature:" msgstr "Brug denne signatur" #: ../../messages.c:1961 msgid "Default character set for email headers:" msgstr "Standard karaktérsæt for email headers:" #: ../../messages.c:1964 msgid "Preferred email address" msgstr "" #: ../../messages.c:1966 msgid "Preferred display name for email messages" msgstr "" #: ../../messages.c:1970 msgid "Preferred display name for bulletin board posts" msgstr "Vist navn på opslagstavle posteringer" #: ../../messages.c:1973 msgid "Mailbox view mode" msgstr "Postkasse visning" #: ../../inetconf.c:110 ../../inetconf.c:119 ../../inetconf.c:133 #: ../../inetconf.c:159 ../../netconf.c:156 ../../netconf.c:183 #: ../../netconf.c:191 ../../netconf.c:239 ../../netconf.c:247 msgid "Invalid Parameter" msgstr "Invalid Parameter" #: ../../inetconf.c:126 #, fuzzy msgid " has been deleted." msgstr "%s er blevet slettet." #. added status message #: ../../inetconf.c:144 msgid " added." msgstr "" #: ../../who.c:154 msgid "Edit your session display" msgstr "Editér din session visning" #: ../../who.c:158 msgid "" "This screen allows you to change the way your session appears in the 'Who is " "online' listing. To turn off any 'fake' name you've previously set, simply " "click the appropriate 'change' button without typing anything in the " "corresponding box. " msgstr "" "Her kan do bestemme hvordan din session bliver vist i 'Hvem er online' " "listen. For at fjerne et 'falsk' navn du tidligere har sat, bare klik den " "tilhørende 'skift' knap uden at skrive noget i boksen. " #: ../../who.c:171 msgid "Room name:" msgstr "Rum navn:" #: ../../who.c:176 msgid "Change room name" msgstr "Skift rum navn" #: ../../who.c:180 msgid "Host name:" msgstr "Host navn:" #: ../../who.c:185 msgid "Change host name" msgstr "Skift host navn" #: ../../who.c:190 ../../static/t/aide/edituser/detailview.html:20 #: ../../static/t/openid_manual_create.html:9 #: ../../static/t/get_logged_in.html:57 ../../static/t/get_logged_in.html:72 msgid "User name:" msgstr "Brugernavn" #: ../../who.c:195 msgid "Change user name" msgstr "Skift brugernavn" #: ../../siteconfig.c:46 ../../siteconfig.c:64 ../../roomlist.c:44 #: ../../roomlist.c:394 ../../static/t/room/edit/tab_expire.html:72 #: ../../static/t/room/edit/tab_config.html:149 #: ../../static/t/room/edit/tab_access.html:42 msgid "Higher access is required to access this function." msgstr "Højere tilladelse er krævet for at bruge denne funktion." #: ../../siteconfig.c:256 msgid "WARNING: Failed to parse Server Config; do you run a to new citserver?" msgstr "" #: ../../siteconfig.c:319 msgid "Your system configuration has been updated." msgstr "Din system konfiguration er blevet opdateret" #: ../../wiki.c:69 ../../wiki.c:162 ../../wiki.c:282 #, c-format msgid "There is no room called '%s'." msgstr "Der er ikke noget rum der hedder '%s'." #: ../../wiki.c:76 #, c-format msgid "'%s' is not a Wiki room." msgstr "'%s' er ikke et Wiki rum." #: ../../wiki.c:110 #, c-format msgid "There is no page called '%s' here." msgstr "Der er ikke nogen side her der hedder '%s'" #: ../../wiki.c:112 msgid "" "Select the 'Edit this page' link in the room banner if you would like to " "create this page." msgstr "" "Vælg 'Editér denne side' link i rum banneret hvis du gerne vil oprette denne " "side." #: ../../wiki.c:181 ../../static/t/msg_listview.html:11 msgid "Date" msgstr "Dato" #: ../../wiki.c:182 msgid "Author" msgstr "" #: ../../wiki.c:209 ../../wiki.c:218 msgid "(show)" msgstr "" #: ../../wiki.c:211 ../../static/t/navbar.html:145 msgid "Current version" msgstr "" #: ../../wiki.c:223 msgid "(revert)" msgstr "" #: ../../wiki.c:300 msgid "Page title" msgstr "" #: ../../webcit.c:316 msgid "Authorization Required" msgstr "Godkendelse Krævet" #: ../../webcit.c:324 #, c-format msgid "" "The resource you requested requires a valid username and password. You could " "not be logged in: %s\n" msgstr "" "Resourcen som du forespurgte kræver et brugernavn og en adgangskode. Du " "kunne ikke blive logged ind: %s\n" #: ../../webcit.c:647 ../../auth.c:526 msgid "" "This program was unable to connect or stay connected to the Citadel server. " "Please report this problem to your system administrator." msgstr "" "Dette program kunne ikke tilslutte eller forblive tilsluttet til Citadel " "serveren. KOntakt din Systemadministrator." #: ../../webcit.c:654 ../../auth.c:532 msgid "Read More..." msgstr "Læs mere..." #: ../../smtpqueue.c:134 ../../static/t/aide/ignetconf/section.html:5 #: ../../static/t/view_mailq/message.html:2 msgid "(Delete)" msgstr "(Slet)" #: ../../smtpqueue.c:334 msgid "First Attempt pending" msgstr "" #: ../../roomlist.c:99 msgid "My Folders" msgstr "" #: ../../downloads.c:289 #, c-format msgid "An error occurred while retrieving this file: %s\n" msgstr "" #: ../../roomtokens.c:572 msgid "file" msgstr "" #: ../../roomtokens.c:574 msgid "files" msgstr "filer" #: ../../summary.c:128 msgid "(None)" msgstr "(Ingen)" #: ../../summary.c:184 msgid "(Nothing)" msgstr "(Ingenting)" #: ../../msg_renderers.c:579 ../../static/t/who/bio.html:15 msgid "edit" msgstr "editér" #: ../../msg_renderers.c:1119 msgid "I don't know how to display " msgstr "" #: ../../msg_renderers.c:1353 msgid "(no subject)" msgstr "(intet emne)" #: ../../addressbook_popup.c:186 msgid "Add" msgstr "Tilføj" #. an erased user #: ../../auth.c:30 ../../static/t/aide/edituser/detailview.html:43 #: ../../static/t/aide/siteconfig/tab_access.html:40 #: ../../static/t/aide/siteconfig/tab_access.html:51 msgid "Deleted" msgstr "Slettet" #. a new user #: ../../auth.c:33 ../../static/t/aide/edituser/detailview.html:44 #: ../../static/t/aide/siteconfig/tab_access.html:41 #: ../../static/t/aide/siteconfig/tab_access.html:52 #: ../../static/t/get_logged_in.html:79 msgid "New User" msgstr "Ny Bruger" #. a trouble maker #: ../../auth.c:36 ../../static/t/aide/edituser/detailview.html:45 #: ../../static/t/aide/siteconfig/tab_access.html:42 #: ../../static/t/aide/siteconfig/tab_access.html:53 msgid "Problem User" msgstr "Problem Bruger" #. user with normal privileges #: ../../auth.c:39 ../../static/t/aide/edituser/detailview.html:46 #: ../../static/t/aide/siteconfig/tab_access.html:43 #: ../../static/t/aide/siteconfig/tab_access.html:54 msgid "Local User" msgstr "Lokal Bruger" #. a user that may access network resources #: ../../auth.c:42 ../../static/t/aide/edituser/detailview.html:47 #: ../../static/t/aide/siteconfig/tab_access.html:44 #: ../../static/t/aide/siteconfig/tab_access.html:55 msgid "Network User" msgstr "Netværk Bruger" #. a moderator #: ../../auth.c:45 ../../static/t/aide/edituser/detailview.html:48 #: ../../static/t/aide/siteconfig/tab_access.html:45 #: ../../static/t/aide/siteconfig/tab_access.html:56 msgid "Preferred User" msgstr "Foretrukken Bruger" #. chief #: ../../auth.c:48 ../../static/t/aide/edituser/detailview.html:49 #: ../../static/t/aide/siteconfig/tab_access.html:46 #: ../../static/t/aide/siteconfig/tab_access.html:57 msgid "Admin" msgstr "Systemansvarlig" #: ../../auth.c:513 ../../static/t/iconbar.html:80 #: ../../static/t/confirmlogoff.html:3 #: ../../static/t/menu/basic_commands.html:19 msgid "Log off" msgstr "Log af" #: ../../auth.c:537 msgid "Log in again" msgstr "Log på igen" #: ../../auth.c:585 ../../static/t/aide/usermanagement.html:3 msgid "Validate new users" msgstr "Validér nye brugere" #: ../../auth.c:605 msgid "No users require validation at this time." msgstr "Ingen brugere kræver validering på dette tidspunkt." #: ../../auth.c:655 msgid "very weak" msgstr "meget svag" #: ../../auth.c:658 msgid "weak" msgstr "svag" #: ../../auth.c:661 msgid "ok" msgstr "ok" #: ../../auth.c:665 msgid "strong" msgstr "stærk" #: ../../auth.c:683 #, c-format msgid "Current access level: %d (%s)\n" msgstr "Aktuelt brugerniveau: %d (%s)\n" #: ../../auth.c:691 msgid "Select access level for this user:" msgstr "Vælg brugerniveau for denne bruger:" #: ../../auth.c:776 ../../static/t/menu/your_info.html:4 msgid "Change your password" msgstr "Skift din adgangskode" #: ../../auth.c:800 msgid "Enter new password:" msgstr "Skriv ny adgangskode:" #: ../../auth.c:804 msgid "Enter it again to confirm:" msgstr "Skriv adgangskode igen:" #: ../../auth.c:810 msgid "Change password" msgstr "Skift adgangskode" #: ../../auth.c:830 msgid "Cancelled. Password was not changed." msgstr "Afbrudt. Adgangskode blev ikke ændret." #: ../../auth.c:839 msgid "They don't match. Password was not changed." msgstr "Adgangskoder matcher ikke. Adgangskode blev ikke ændret." #: ../../auth.c:845 msgid "Blank passwords are not allowed." msgstr "Blanke adgangskoder er ikke tilladt." #: ../../openid.c:34 msgid "Manage Account/OpenID Associations" msgstr "Tilret konto/OpenID associationer" #: ../../openid.c:52 msgid "Do you really want to delete this OpenID?" msgstr "" #: ../../openid.c:53 msgid "(delete)" msgstr "" #: ../../openid.c:61 msgid "Add an OpenID: " msgstr "Tilføj et OpenID: " #: ../../openid.c:64 msgid "Attach" msgstr "" #: ../../openid.c:68 #, c-format msgid "%s does not permit authentication via OpenID." msgstr "%s tillader ikke autentifikation via OpenID" #: ../../html2html.c:136 #, c-format msgid "realloc() error! couldn't get %d bytes: %s" msgstr "realloc() fejl! kunne ikke modtage %d bytes: %s" #: ../../static/t/viewomatic.html:4 msgid "View as:" msgstr "Vis som:" #: ../../static/t/sieve/list.html:32 ../../static/t/sieve/none.html:4 #: ../../static/t/menu/your_info.html:7 msgid "View/edit server-side mail filters" msgstr "Vis/Editér server post filtre" #: ../../static/t/sieve/list.html:41 msgid "When new mail arrives: " msgstr "Når ny post ankommer: " #: ../../static/t/sieve/list.html:43 msgid "Leave it in my inbox without filtering" msgstr "Gem den i min indbakke uden filtrering" #: ../../static/t/sieve/list.html:44 msgid "Filter it according to rules selected below" msgstr "Filter er som regler valgt nedenfor" #: ../../static/t/sieve/list.html:45 msgid "Filter it through a manually edited script (advanced users only)" msgstr "Filtrér det gennem manuelt editéret script (avancerede brugere)" #: ../../static/t/sieve/list.html:52 msgid "Your incoming mail will not be filtered through any scripts." msgstr "Din indkomne post vil ikke blive filtreret gennem scripts." #: ../../static/t/sieve/list.html:64 msgid "Add rule" msgstr "" #: ../../static/t/sieve/list.html:71 msgid "The currently active script is: " msgstr "Det aktive script er: " #: ../../static/t/sieve/list.html:76 ../../static/t/sieve/add.html:3 msgid "Add or delete scripts" msgstr "" #: ../../static/t/sieve/display_one.html:16 msgid "If" msgstr "Hvis" #: ../../static/t/sieve/display_one.html:21 msgid "To or Cc" msgstr "Til eller Cc" #: ../../static/t/sieve/display_one.html:23 msgid "Reply-to" msgstr "" #: ../../static/t/sieve/display_one.html:24 #: ../../static/t/msg_listview.html:10 #: ../../static/t/view_mailq/header.html:27 msgid "Sender" msgstr "Afsender" #: ../../static/t/sieve/display_one.html:25 msgid "Resent-From" msgstr "" #: ../../static/t/sieve/display_one.html:26 msgid "Resent-To" msgstr "" #: ../../static/t/sieve/display_one.html:27 msgid "Envelope From" msgstr "Konvolut Fra" #: ../../static/t/sieve/display_one.html:28 msgid "Envelope To" msgstr "Konvolut Til" #: ../../static/t/sieve/display_one.html:29 msgid "X-Mailer" msgstr "" #: ../../static/t/sieve/display_one.html:30 msgid "X-Spam-Flag" msgstr "X-Spam-Flag" #: ../../static/t/sieve/display_one.html:31 msgid "X-Spam-Status" msgstr "X-Spam-Status" #: ../../static/t/sieve/display_one.html:32 msgid "List-ID" msgstr "" #: ../../static/t/sieve/display_one.html:33 msgid "Message size" msgstr "" #: ../../static/t/sieve/display_one.html:34 #: ../../static/t/select_messageindex_all.html:1 msgid "All" msgstr "Alle" #: ../../static/t/sieve/display_one.html:41 msgid "contains" msgstr "" #: ../../static/t/sieve/display_one.html:42 msgid "does not contain" msgstr "indeholder ikke" #: ../../static/t/sieve/display_one.html:43 msgid "is" msgstr "er" #: ../../static/t/sieve/display_one.html:44 msgid "is not" msgstr "" #: ../../static/t/sieve/display_one.html:45 msgid "matches" msgstr "" #: ../../static/t/sieve/display_one.html:46 msgid "does not match" msgstr "matcher ikke" #: ../../static/t/sieve/display_one.html:52 msgid "(All messages)" msgstr "" #: ../../static/t/sieve/display_one.html:56 msgid "is larger than" msgstr "er større end" #: ../../static/t/sieve/display_one.html:57 msgid "is smaller than" msgstr "er mindre end" #: ../../static/t/sieve/display_one.html:59 #, fuzzy msgid "bytes" msgstr "Noter" #: ../../static/t/sieve/display_one.html:65 msgid "Keep" msgstr "Behold" #: ../../static/t/sieve/display_one.html:66 msgid "Discard silently" msgstr "Fjern" #: ../../static/t/sieve/display_one.html:67 msgid "Reject" msgstr "" #: ../../static/t/sieve/display_one.html:68 msgid "Move message to" msgstr "" #: ../../static/t/sieve/display_one.html:69 msgid "Forward to" msgstr "" #: ../../static/t/sieve/display_one.html:70 msgid "Vacation" msgstr "" #: ../../static/t/sieve/display_one.html:82 msgid "Message:" msgstr "" #: ../../static/t/sieve/display_one.html:90 msgid "and then" msgstr "og" #: ../../static/t/sieve/display_one.html:93 msgid "continue processing" msgstr "" #: ../../static/t/sieve/display_one.html:94 msgid "stop" msgstr "stop" #: ../../static/t/sieve/none.html:9 msgid "" "This installation of Citadel was built without support for server-side mail " "filtering.
    Please contact your system administrator if you require this " "feature.
    " msgstr "" "Denne installation af Citadel blev lavet uden support af server post " "filtrering.
    Kontakt din Systemadministrator hvis du skal bruge denne " "funktion.
    " #: ../../static/t/sieve/add.html:9 msgid "Add a new script" msgstr "" #: ../../static/t/sieve/add.html:10 msgid "" "To create a new script, enter the desired script name in the box below and " "click 'Create'." msgstr "" #: ../../static/t/sieve/add.html:14 msgid "Script name: " msgstr "" #: ../../static/t/sieve/add.html:18 msgid "Edit scripts" msgstr "" #: ../../static/t/sieve/add.html:20 msgid "Return to the script editing screen" msgstr "Retunér til script editéring" #: ../../static/t/sieve/add.html:23 msgid "Delete scripts" msgstr "" #: ../../static/t/sieve/add.html:24 msgid "" "To delete an existing script, select the script name from the list and click " "'Delete'." msgstr "" #: ../../static/t/msg/confirm_move.html:4 msgid "Confirm move of message" msgstr "Godkend flytning af meddelelse" #: ../../static/t/msg/confirm_move.html:12 msgid "Move this message to:" msgstr "Flyt denne meddelelse til:" #: ../../static/t/login.html:5 msgid "powered by" msgstr "powered by" #: ../../static/t/login.html:15 ../../static/t/iconbar.html:88 #: ../../static/t/get_logged_in.html:64 ../../static/t/get_logged_in.html:88 #: ../../static/t/get_logged_in.html:93 ../../static/t/get_logged_in.html:98 #: ../../static/t/get_logged_in.html:107 msgid "Log in" msgstr "Sidste login" #: ../../static/t/trailing.html:14 msgid "" "WARNING: You have JavaScript disabled in your web browser. Many functions " "of this system will not work properly." msgstr "" #: ../../static/t/view_submessage.html:4 #: ../../static/t/view_message/replyquote.html:3 #: ../../static/t/view_message/replyquote.html:7 #: ../../static/t/view_message/print.html:8 ../../static/t/view_message.html:7 msgid "from " msgstr "fra " #: ../../static/t/searchomatic.html:4 msgid "Search: " msgstr "" #: ../../static/t/listsub/display.html:16 msgid "You are subscribing " msgstr "" #: ../../static/t/listsub/display.html:17 #, fuzzy msgid " to the " msgstr "Gå dertil" #: ../../static/t/listsub/display.html:18 #, fuzzy msgid " mailing list." msgstr "Mailing liste service" #: ../../static/t/listsub/display.html:19 msgid "" "The listserver has sent you an e-mail with one additional Web link for you " "to click on to confirm your subscription." msgstr "" #: ../../static/t/listsub/display.html:20 msgid "" "This extra step is for your protection, as it prevents others from being " "able to subscribe you to lists without your consent." msgstr "" #: ../../static/t/listsub/display.html:22 msgid "" "Please click on the link which is being e-mailed to you and your " "subscription will be confirmed." msgstr "" #: ../../static/t/listsub/display.html:27 #: ../../static/t/listsub/display.html:47 #, fuzzy msgid "ERROR" msgstr "FEJL:" #: ../../static/t/listsub/display.html:35 msgid "You are unsubscribing" msgstr "" #: ../../static/t/listsub/display.html:37 #, fuzzy msgid "from the" msgstr "fra " #: ../../static/t/listsub/display.html:39 #, fuzzy msgid "mailing list." msgstr "Mailing liste service" #: ../../static/t/listsub/display.html:40 msgid "" "The listserver has sent you an e-mail with one additional Web link for you " "to click on to confirm your unsubscription." msgstr "" #: ../../static/t/listsub/display.html:41 msgid "" "This extra step is for your protection, as it prevents others from being " "able to unsubscribe you from lists without your consent." msgstr "" #: ../../static/t/listsub/display.html:43 msgid "" "Please click on the link which is being e-mailed to you and your " "unsubscription will be confirmed." msgstr "" #: ../../static/t/listsub/display.html:44 #, fuzzy msgid "Back..." msgstr "Tilbage..." #: ../../static/t/listsub/display.html:54 #, fuzzy msgid "Confirmation successful!" msgstr "Godkendelsesforespørgsel sendt" #: ../../static/t/listsub/display.html:56 #, fuzzy msgid "Confirmation failed." msgstr "Konfiguration" #: ../../static/t/listsub/display.html:57 msgid "This could mean one of two things:" msgstr "" #: ../../static/t/listsub/display.html:59 msgid "" "You waited too long to confirm your subscribe/unsubscribe request (the " "confirmation link is only valid for three days)" msgstr "" #: ../../static/t/listsub/display.html:60 msgid "" "You have already successfully confirmed your subscribe/unsubscribe " "request and are attempting to do it again." msgstr "" #: ../../static/t/listsub/display.html:62 msgid "The error returned by the server was: " msgstr "" #: ../../static/t/listsub/display.html:70 #, fuzzy msgid "Name of list:" msgstr "Navn på opgave" #: ../../static/t/listsub/display.html:75 #, fuzzy msgid "Your e-mail address:" msgstr "Din personlige adressebog" #: ../../static/t/listsub/display.html:79 msgid "(If subscribing) preferred format: " msgstr "" #: ../../static/t/listsub/display.html:80 #, fuzzy msgid "One message at a time" msgstr "Skriv meddelelsestekst:" #: ../../static/t/listsub/display.html:81 #, fuzzy msgid "Digest format" msgstr "Time format" #: ../../static/t/listsub/display.html:89 msgid "" "When you attempt to subscribe or unsubscribe to a mailing list, you will " "receive an e-mail containing one additional web link to click on for final " "confirmation." msgstr "" #: ../../static/t/listsub/display.html:90 msgid "" "This extra step is for your protection, as it prevents others from being " "able to subscribe or unsubscribe you to lists." msgstr "" #: ../../static/t/floors_edit_one.html:11 msgid "(delete floor)" msgstr "(slet etage)" #: ../../static/t/floors_edit_one.html:13 msgid "(edit graphic)" msgstr "(editér grafik)" #: ../../static/t/floors.html:4 msgid "Add/change/delete floors" msgstr "Tilføj/ændre/slette etager" #: ../../static/t/floors.html:10 msgid "Floor number" msgstr "Etage nummer" #: ../../static/t/floors.html:11 msgid "Floor name" msgstr "Etage navn" #: ../../static/t/floors.html:12 msgid "Number of rooms" msgstr "Antal rum" #: ../../static/t/floors.html:13 msgid "Floor CSS" msgstr "Etage CSS" #: ../../static/t/files.html:4 msgid "Files available for download in" msgstr "Filer til download i" #: ../../static/t/files.html:9 msgid "Upload a file:" msgstr "" #: ../../static/t/files.html:30 msgid "Filename" msgstr "" #: ../../static/t/files.html:31 msgid "Size" msgstr "Størrelse" #: ../../static/t/files.html:32 msgid "Content" msgstr "" #: ../../static/t/files.html:33 msgid "Description" msgstr "" #: ../../static/t/edit_message.html:9 ../../static/t/iconbar.html:50 #: ../../static/t/iconbar.html:59 msgid "Loading" msgstr "" #: ../../static/t/edit_message.html:23 msgid "from" msgstr "" #: ../../static/t/edit_message.html:29 ../../static/t/edit_message.html:38 msgid "Anonymous" msgstr "" #: ../../static/t/edit_message.html:47 msgid "in" msgstr "" #: ../../static/t/edit_message.html:51 msgid "To:" msgstr "Til:" #: ../../static/t/edit_message.html:57 #: ../../static/t/view_message/print.html:15 #: ../../static/t/view_message.html:15 msgid "CC:" msgstr "CC:" #: ../../static/t/edit_message.html:63 msgid "BCC:" msgstr "BCC:" #: ../../static/t/edit_message.html:71 msgid "Subject (optional):" msgstr "Emne (valgfrit):" #: ../../static/t/edit_message.html:71 #: ../../static/t/view_message/replyquote.html:8 #: ../../static/t/view_message/print.html:16 #: ../../static/t/view_message.html:16 msgid "Subject:" msgstr "Emne:" #: ../../static/t/edit_message.html:86 msgid "--- forwarded message ---" msgstr "--- videresendt meddelelse ---" #: ../../static/t/edit_message.html:110 msgid "Post message" msgstr "Opslå meddelelse" #: ../../static/t/edit_message.html:118 msgid "Save to Drafts" msgstr "" #: ../../static/t/edit_message.html:126 #: ../../static/t/edit_message/attachments_pane.html:5 msgid "Attachments:" msgstr "Vedhæftede filer" #: ../../static/t/aide/display_serverrestart_page.html:4 #, fuzzy msgid "Message to your Users:" msgstr "Meddelelse til dine brugere:" #: ../../static/t/aide/display_generic_result.html:2 msgid "Server command results" msgstr "Server kommando resultater" #: ../../static/t/aide/display_generic_result.html:18 #, fuzzy msgid "Enter another command" msgstr "Skriv en server kommando" #: ../../static/t/aide/display_generic_result.html:19 #, fuzzy msgid "Return to menu" msgstr "skift til menu" #: ../../static/t/aide/display_sitewide_config.html:3 msgid "Site configuration" msgstr "Site konfiguration" #: ../../static/t/aide/display_sitewide_config.html:6 #: ../../static/t/aide/edituser/select.html:9 msgid "You need to be aide to view this." msgstr "Du skal være Sytemansvarlig for at se dette." #: ../../static/t/aide/display_sitewide_config.html:11 msgid "General" msgstr "Generelt" #: ../../static/t/aide/display_sitewide_config.html:12 msgid "Access" msgstr "Adgang" #: ../../static/t/aide/display_sitewide_config.html:13 msgid "Network" msgstr "Netværk" #: ../../static/t/aide/display_sitewide_config.html:14 msgid "Tuning" msgstr "Tuning" #: ../../static/t/aide/display_sitewide_config.html:15 #, fuzzy msgid "Directory" msgstr "katalog" #: ../../static/t/aide/display_sitewide_config.html:16 msgid "Auto-purger" msgstr "Auto-tømmer" #: ../../static/t/aide/display_sitewide_config.html:17 msgid "Indexing/Journaling" msgstr "Index/Journal" #: ../../static/t/aide/display_sitewide_config.html:18 #: ../../static/t/aide/siteconfig/tab_pushmail.html:1 #, fuzzy msgid "Push Email" msgstr "Skub Email" #: ../../static/t/aide/display_sitewide_config.html:19 msgid "Pop3" msgstr "Pop3" #: ../../static/t/aide/usermanagement.html:2 msgid "Add, change, delete user accounts" msgstr "Tilføj, ret, slet bruger konti" #: ../../static/t/aide/display_inetconf.html:5 #: ../../static/t/aide/display_menu.html:5 msgid "System Administration Menu" msgstr "System Administration Menu" #: ../../static/t/aide/display_inetconf.html:6 #: ../../static/t/aide/display_menu.html:6 #, fuzzy msgid "Room Admin Menu" msgstr "Rum Systemansvarlig Menu" #: ../../static/t/aide/display_inetconf.html:13 msgid "Local host aliases" msgstr "Lokal vært aliaser" #: ../../static/t/aide/display_inetconf.html:14 msgid "Directory domains" msgstr "Directory domæner" #: ../../static/t/aide/display_inetconf.html:15 msgid "Smart hosts" msgstr "Smart værter" #: ../../static/t/aide/display_inetconf.html:16 #, fuzzy msgid "Fallback smart hosts" msgstr "Smart værter" #: ../../static/t/aide/display_inetconf.html:17 msgid "Notification hosts" msgstr "" #: ../../static/t/aide/display_inetconf.html:22 msgid "RBL hosts" msgstr "RBL værter" #: ../../static/t/aide/display_inetconf.html:23 msgid "SpamAssassin hosts" msgstr "SpamAssassin værter" #: ../../static/t/aide/display_inetconf.html:24 msgid "ClamAV clamd hosts" msgstr "ClamAV clamd værter" #: ../../static/t/aide/display_inetconf.html:25 #, fuzzy msgid "Masqueradable domains" msgstr "Maskerade domæner" #: ../../static/t/aide/edituser/select.html:5 msgid "Edit or delete users" msgstr "Editér eller slet brugere" #: ../../static/t/aide/edituser/select.html:17 msgid "Add users" msgstr "Tilføj brugere" #: ../../static/t/aide/edituser/select.html:20 msgid "Edit or Delete users" msgstr "Editér eller slet brugere" #: ../../static/t/aide/edituser/box_select.html:1 msgid "" "To edit an existing user account, select the user name from the list and " "click 'Edit'." msgstr "" "For at editére en eksisterende brugerkonto, vælg et brugernavn fra listen og " "klik 'Editér'." #: ../../static/t/aide/edituser/detailview.html:4 msgid "Edit user account: " msgstr "Editér bruger konto " #: ../../static/t/aide/edituser/detailview.html:24 #: ../../static/t/room/edit/tab_feed.html:14 msgid "Password" msgstr "Adgangskode" #: ../../static/t/aide/edituser/detailview.html:28 msgid "Permission to send Internet mail" msgstr "Tilladelse til at sende Internet Mail" #: ../../static/t/aide/edituser/detailview.html:32 msgid "Number of logins" msgstr "Antal gange logget på" #: ../../static/t/aide/edituser/detailview.html:36 msgid "Messages submitted" msgstr "Meddelelser sendt" #: ../../static/t/aide/edituser/detailview.html:40 msgid "Access level" msgstr "Bruger type" #: ../../static/t/aide/edituser/detailview.html:54 msgid "User ID number" msgstr "Bruger ID nummer" #: ../../static/t/aide/edituser/detailview.html:58 msgid "Date and time of last login" msgstr "Dato og tid for sidste login" #: ../../static/t/aide/edituser/detailview.html:68 msgid "Auto-purge after this many days" msgstr "Auto-slet efter så mange dage" #: ../../static/t/aide/edituser/add.html:1 msgid "" "To create a new user account, enter the desired user name in the box below " "and click 'Create'." msgstr "" "For at oprette en ny brugerkonto, skriv det ønskede navn i boksen nedenfor " "og klik 'Opret'." #: ../../static/t/aide/edituser/add.html:5 msgid "New user: " msgstr "Ny bruger: " #: ../../static/t/aide/display_generic_cmd.html:4 msgid "Enter a server command" msgstr "Skriv en server kommando" #: ../../static/t/aide/display_generic_cmd.html:12 msgid "" "This screen allows you to enter Citadel server commands which are not " "supported by WebCit. If you do not know what that means, then this screen " "will not be of much use to you." msgstr "" "Denne skærm tillader dig at skrive Citadel server kommandoer som ikke er " "muligt med WebCit. Hvis du ikke ved hvad det betyder, så er dette ikke " "stedt for dig." #: ../../static/t/aide/display_generic_cmd.html:15 msgid "Enter command:" msgstr "Skriv kommando:" #: ../../static/t/aide/display_generic_cmd.html:17 msgid "Command input (if requesting SEND_LISTING transfer mode):" msgstr "Kommando input (if requesting SEND_LISTING transfer mode):" #: ../../static/t/aide/display_generic_cmd.html:20 #, fuzzy msgid "Detected host header is " msgstr "Detekteret vært header er %s://%s" #: ../../static/t/aide/display_ignetconf.html:4 msgid "Network configuration" msgstr "Netværk konfiguration" #: ../../static/t/aide/display_ignetconf.html:10 #: ../../static/t/aide/ignetconf/edit_node.html:5 #: ../../static/t/aide/ignetconf/add.html:5 msgid "Add a new node" msgstr "Tilføj en ny node" #: ../../static/t/aide/display_ignetconf.html:14 msgid "Currently configured nodes" msgstr "Konfigurede noder" #: ../../static/t/aide/display_serverrestart.html:26 #, fuzzy msgid "Restart Citadel" msgstr "Gør dette til min startside" #: ../../static/t/aide/floorconfig.html:2 msgid "Add, change, or delete floors" msgstr "Tilføj, ret, slet etager" #: ../../static/t/aide/serverrestart/box.html:3 msgid "Please wait while the Citadel server is restarted... " msgstr "Vent mens Citadel server genstarter" #: ../../static/t/aide/serverrestart/box_page_do.html:3 msgid "" "Please wait while your users are being paged, the citadel server will be " "restarted after that... " msgstr "" "Vent mens dine brugere får besked, Citadel serveren derefter genstarte..." #: ../../static/t/aide/inet/masqdomains.html:2 msgid "(Domains as which users are allowed to masquerade)" msgstr "(Domæner som brugere må benytte som maskerade)" #: ../../static/t/aide/inet/rbldns.html:2 msgid "(hosts running a Realtime Blackhole List)" msgstr "(værter som har en Realtime Blackhole List" #: ../../static/t/aide/inet/dirnames.html:2 msgid "(domains mapped with the Global Address Book)" msgstr "(domæner mappet med Global Adressebog" #: ../../static/t/aide/inet/notify.html:2 msgid "(URLS for notifications when users receive new mails; )" msgstr "" #: ../../static/t/aide/inet/notify.html:2 msgid "Syntax: Notificationtemplatename:http[s]://user:password@hostname/path" msgstr "" #: ../../static/t/aide/inet/smarthosts.html:2 msgid "(if present, forward all outbound mail to one of these hosts)" msgstr "(hvis tilgænglig, videresend alt udgående post til en af disse værter)" #: ../../static/t/aide/inet/aliases.html:2 msgid "(domains for which this host receives mail)" msgstr "(domæner som denne vært modtager post for)" #: ../../static/t/aide/inet/clamav.html:2 #, fuzzy msgid "(hosts running the ClamAV clamd service)" msgstr "(værter som kører ClamAV clamd service" #: ../../static/t/aide/inet/spamass.html:2 msgid "(hosts running the SpamAssassin service)" msgstr "(værter som kører SpamAssassin service)" #: ../../static/t/aide/inet/fallbackhosts.html:2 msgid "(send outbound mail to these hosts only when direct delivery fails)" msgstr "" #: ../../static/t/aide/ignetconf/display_confirm_delete.html:5 msgid "Confirm delete" msgstr "Godkend sletning" #: ../../static/t/aide/ignetconf/display_confirm_delete.html:11 msgid "Are you sure you want to delete " msgstr "Er du sikker på du vil slette? " #: ../../static/t/aide/ignetconf/display_confirm_delete.html:14 #: ../../static/t/prefs/box.html:198 ../../static/t/iconbar/edit.html:19 #: ../../static/t/iconbar/edit.html:26 ../../static/t/iconbar/edit.html:32 #: ../../static/t/iconbar/edit.html:39 ../../static/t/iconbar/edit.html:45 #: ../../static/t/iconbar/edit.html:52 ../../static/t/iconbar/edit.html:58 #: ../../static/t/iconbar/edit.html:64 ../../static/t/iconbar/edit.html:70 #: ../../static/t/iconbar/edit.html:76 ../../static/t/iconbar/edit.html:82 #: ../../static/t/iconbar/edit.html:88 msgid "Yes" msgstr "Ja" #: ../../static/t/aide/ignetconf/display_confirm_delete.html:16 #: ../../static/t/prefs/box.html:200 ../../static/t/iconbar/edit.html:20 #: ../../static/t/iconbar/edit.html:27 ../../static/t/iconbar/edit.html:33 #: ../../static/t/iconbar/edit.html:40 ../../static/t/iconbar/edit.html:46 #: ../../static/t/iconbar/edit.html:53 ../../static/t/iconbar/edit.html:59 #: ../../static/t/iconbar/edit.html:65 ../../static/t/iconbar/edit.html:71 #: ../../static/t/iconbar/edit.html:77 ../../static/t/iconbar/edit.html:83 #: ../../static/t/iconbar/edit.html:89 msgid "No" msgstr "Nej" #: ../../static/t/aide/ignetconf/edit_node.html:15 #: ../../static/t/aide/ignetconf/add.html:15 #: ../../static/t/aide/siteconfig/tab_general.html:8 msgid "Node name" msgstr "Node navn" #: ../../static/t/aide/ignetconf/edit_node.html:17 #: ../../static/t/aide/ignetconf/add.html:17 msgid "Shared secret" msgstr "Delt kodeord" #: ../../static/t/aide/ignetconf/edit_node.html:19 #: ../../static/t/aide/ignetconf/add.html:19 msgid "Host or IP address" msgstr "Vært eller IP adresse" #: ../../static/t/aide/ignetconf/edit_node.html:21 #: ../../static/t/aide/ignetconf/add.html:21 msgid "Port number" msgstr "Port nummer" #: ../../static/t/aide/ignetconf/section.html:4 #, fuzzy msgid "(Edit)" msgstr "(editér)" #: ../../static/t/aide/display_menu.html:12 msgid "Global Configuration" msgstr "Global Konfiguration" #: ../../static/t/aide/display_menu.html:14 msgid "User account management" msgstr "Bruger konto administration" #: ../../static/t/aide/display_menu.html:16 msgid "Shutdown Citadel" msgstr "Luk Citadel" #: ../../static/t/aide/display_menu.html:18 msgid "Rooms and Floors" msgstr "Rum og Etager" #: ../../static/t/aide/global_config.html:2 msgid "Edit site-wide configuration" msgstr "Editér site konfiguration" #: ../../static/t/aide/global_config.html:3 msgid "Domain names and Internet mail configuration" msgstr "Domænenavne og Internet post konfiguration" #: ../../static/t/aide/global_config.html:4 msgid "Configure replication with other Citadel servers" msgstr "Konfigurér replikéring med andre Citadel servere" #: ../../static/t/aide/global_config.html:5 #: ../../static/t/view_mailq/header.html:3 msgid "View the outbound SMTP queue" msgstr "Vis udgående SMTP kø" #: ../../static/t/aide/restart.html:2 msgid "Restart Now" msgstr "Genstart Nu" #: ../../static/t/aide/restart.html:3 msgid "Restart after paging users" msgstr "Genstart efter brugere har fået besked" #: ../../static/t/aide/restart.html:4 msgid "Restart when all users are idle" msgstr "Genstart når alle brugere er inaktive" #: ../../static/t/aide/siteconfig/tab_general.html:1 msgid "General site configuration items" msgstr "Generelle site konfigurationsemner" #: ../../static/t/aide/siteconfig/tab_general.html:5 msgid "Change Login Logo" msgstr "Skift Login Logo" #: ../../static/t/aide/siteconfig/tab_general.html:6 msgid "Change Logout Logo" msgstr "Skift Logout Logo" #: ../../static/t/aide/siteconfig/tab_general.html:11 msgid "Fully qualified domain name" msgstr "Fuld kvalificeret domæne navn" #: ../../static/t/aide/siteconfig/tab_general.html:14 msgid "Human-readable node name" msgstr "Meneskelæseligt node navn" #: ../../static/t/aide/siteconfig/tab_general.html:17 msgid "Telephone number" msgstr "Telefon nummer" #: ../../static/t/aide/siteconfig/tab_general.html:20 msgid "Paginator prompt (for text mode clients)" msgstr "Paginator prompt (for tekst klienter)" #: ../../static/t/aide/siteconfig/tab_general.html:23 msgid "Geographic location of this system" msgstr "Geografisk lokation af dette system" #: ../../static/t/aide/siteconfig/tab_general.html:26 msgid "Name of system administrator" msgstr "Navn på Systemadministror" #: ../../static/t/aide/siteconfig/tab_general.html:29 msgid "Default timezone for unzoned calendar items" msgstr "Standard tidszone til Kalender aftaler ikke i zone" #: ../../static/t/aide/siteconfig/tab_autopurger.html:1 msgid "Configure automatic expiry of old messages" msgstr "Konfigurér automatisk udløb af meddelser" #: ../../static/t/aide/siteconfig/tab_autopurger.html:2 msgid "These settings may be overridden on a per-floor or per-room basis." msgstr "Disse indstillinger kan blive overskrevet på etage eller rum niveau." #: ../../static/t/aide/siteconfig/tab_autopurger.html:6 msgid "Hour to run database auto-purge" msgstr "Tid for at køre database auto-tøm" #: ../../static/t/aide/siteconfig/tab_autopurger.html:66 msgid "Default message expire policy for public rooms" msgstr "Standard meddelelse udløb for offentlige rum" #: ../../static/t/aide/siteconfig/tab_autopurger.html:68 #: ../../static/t/aide/siteconfig/tab_autopurger.html:86 #: ../../static/t/room/edit/tab_expire.html:17 #: ../../static/t/room/edit/tab_expire.html:45 msgid "Never automatically expire messages" msgstr "Aldrig automatisk sætte meddelelse til udløbet" #: ../../static/t/aide/siteconfig/tab_autopurger.html:71 #: ../../static/t/aide/siteconfig/tab_autopurger.html:89 #: ../../static/t/room/edit/tab_expire.html:20 #: ../../static/t/room/edit/tab_expire.html:48 msgid "Expire by message count" msgstr "Sæt udløb efter meddelelsesantal" #: ../../static/t/aide/siteconfig/tab_autopurger.html:73 #: ../../static/t/aide/siteconfig/tab_autopurger.html:92 #: ../../static/t/room/edit/tab_expire.html:23 #: ../../static/t/room/edit/tab_expire.html:51 msgid "Expire by message age" msgstr "Sæt udløb efter meddelelsesalder" #: ../../static/t/aide/siteconfig/tab_autopurger.html:75 #: ../../static/t/aide/siteconfig/tab_autopurger.html:94 #: ../../static/t/room/edit/tab_expire.html:25 #: ../../static/t/room/edit/tab_expire.html:53 msgid "Number of messages or days: " msgstr "Antal meddelelser eller dage: " #: ../../static/t/aide/siteconfig/tab_autopurger.html:81 msgid "Default message expire policy for private mailboxes" msgstr "Standard meddelelse udløb for private postkasser" #: ../../static/t/aide/siteconfig/tab_autopurger.html:83 msgid "Same policy as public rooms" msgstr "Samme politik som for offentlige rum" #: ../../static/t/aide/siteconfig/tab_network.html:1 msgid "Network services" msgstr "Netværk service" #: ../../static/t/aide/siteconfig/tab_network.html:2 #: ../../static/t/aide/siteconfig/tab_directory.html:3 msgid "" "Changes made on this screen will not take effect until you restart the " "Citadel server." msgstr "" "Ændringer på denne skærm vil ikke blive effektueret før du har genstartet " "Citadel serveren." #: ../../static/t/aide/siteconfig/tab_network.html:6 msgid "SMTP MTA port (-1 to disable)" msgstr "SMTP MTA port (-1 = afbrudt)" #: ../../static/t/aide/siteconfig/tab_network.html:9 msgid "Correct forged From: lines during authenticated SMTP" msgstr "Ret falske Fra: linier under autentification SMTP" #: ../../static/t/aide/siteconfig/tab_network.html:12 msgid "Flag message as spam, instead of rejecting it" msgstr "Markér meddelse som spam, istedet for at afvise den" #: ../../static/t/aide/siteconfig/tab_network.html:15 msgid "IMAP listener port (-1 to disable)" msgstr "IMAP lytte port (-1 = afbrudt)" #: ../../static/t/aide/siteconfig/tab_network.html:19 msgid "Network run frequency (in seconds)" msgstr "Netværk kør frekvens (i sekunder)" #: ../../static/t/aide/siteconfig/tab_network.html:22 msgid "Server IP address (0.0.0.0 for 'any')" msgstr "Serverens IP adresse (0.0.0.0 vælger alle)" #: ../../static/t/aide/siteconfig/tab_network.html:25 msgid "SMTP MSA port (-1 to disable)" msgstr "SMTP MSA port (-1 = afbrudt)" #: ../../static/t/aide/siteconfig/tab_network.html:28 msgid "IMAP over SSL port (-1 to disable)" msgstr "IMAP over SSL port (-1 = afbrudt)" #: ../../static/t/aide/siteconfig/tab_network.html:31 msgid "SMTP over SSL port (-1 to disable)" msgstr "SMTP over SSL port (-1 = afbrudt)" #: ../../static/t/aide/siteconfig/tab_network.html:34 msgid "Instantly expunge deleted messages in IMAP" msgstr "Fjern slettede meddelelser med det samme i IMAP" #: ../../static/t/aide/siteconfig/tab_network.html:38 #, fuzzy msgid "Allow unauthenticated SMTP clients to spoof this sites domains" msgstr "Tillad uautoriserede SMTP klienter at benytte denne site's domæne" #: ../../static/t/aide/siteconfig/tab_network.html:41 msgid "Postfix TCP Dictionary Port" msgstr "Postfix TCP Dictionary Port" #: ../../static/t/aide/siteconfig/tab_network.html:41 #, fuzzy msgid "-1 to disable" msgstr "-1 for at deaktivere." #: ../../static/t/aide/siteconfig/tab_network.html:44 #, fuzzy msgid "ManageSieve Port (-1 to disable)" msgstr "ManageSieve port (-1 = afbrudt)" #: ../../static/t/aide/siteconfig/tab_network.html:47 msgid "Perform RBL checks upon connect instead of after RCPT" msgstr "Udfør RBL check ved forbindelse i stedet for efter RCPT" #: ../../static/t/aide/siteconfig/tab_network.html:50 msgid "Keep original from headers in IMAP" msgstr "Behold originale headere i IMAP" #: ../../static/t/aide/siteconfig/tab_network.html:53 #, fuzzy msgid "XMPP (Jabber) client to server port (-1 to disable)" msgstr "XMPP (Jabber) klient til server port (-1 = afbrudt)" #: ../../static/t/aide/siteconfig/tab_network.html:56 #, fuzzy msgid "XMPP (Jabber) server to server port (-1 to disable)" msgstr "XMPP (Jabber) server til server port (-1 = afbrudt)" #: ../../static/t/aide/siteconfig/tab_pop3.html:1 msgid "POP3" msgstr "POP3" #: ../../static/t/aide/siteconfig/tab_pop3.html:6 msgid "POP3 listener port (-1 to disable)" msgstr "POP3 lytte port (-1 = afbrudt)" #: ../../static/t/aide/siteconfig/tab_pop3.html:9 msgid "POP3 over SSL port (-1 to disable)" msgstr "POP3 over SSL port (-1 = afbrudt)" #: ../../static/t/aide/siteconfig/tab_pop3.html:12 #, fuzzy msgid "POP3 fetch frequency in seconds" msgstr "POP3 hent frekvens i sekunder" #: ../../static/t/aide/siteconfig/tab_pop3.html:15 #, fuzzy msgid "POP3 fastest fetch frequency in seconds" msgstr "POP3 hurtigste hent frekvens i sekunder" #: ../../static/t/aide/siteconfig/tab_tuning.html:1 msgid "Advanced server fine-tuning controls" msgstr "Avanceret server finindstilling kontroller" #: ../../static/t/aide/siteconfig/tab_tuning.html:5 msgid "Server connection idle timeout (in seconds)" msgstr "Server forbindelse inaktivitetstimeout (i sekunder)" #: ../../static/t/aide/siteconfig/tab_tuning.html:8 msgid "Maximum concurrent sessions (0 = no limit)" msgstr "Maximum antal samtidige sessioner (0 = ingen max)" #: ../../static/t/aide/siteconfig/tab_tuning.html:11 msgid "Default user purge time (days)" msgstr "Standard bruger tøm tid (dage)" #: ../../static/t/aide/siteconfig/tab_tuning.html:14 msgid "Default room purge time (days)" msgstr "Standard rum tøm tid (dage)" #: ../../static/t/aide/siteconfig/tab_tuning.html:17 msgid "Maximum message length" msgstr "Maximum meddelelse længde" #: ../../static/t/aide/siteconfig/tab_tuning.html:20 msgid "Minimum number of worker threads" msgstr "Minimum antal arbejdstråde" #: ../../static/t/aide/siteconfig/tab_tuning.html:23 msgid "Maximum number of worker threads" msgstr "Maximum antal arbejdstråde" #: ../../static/t/aide/siteconfig/tab_tuning.html:26 msgid "Automatically delete committed database logs" msgstr "Automatisk slet commited database logs" #: ../../static/t/aide/siteconfig/tab_pushmail.html:5 #, fuzzy msgid "Funambol server host (blank to disable)" msgstr "Funambol server vært (blank for at slå fra)" #: ../../static/t/aide/siteconfig/tab_pushmail.html:8 msgid "Funambol server port " msgstr "Funambol server port" #: ../../static/t/aide/siteconfig/tab_pushmail.html:11 msgid "Funambol sync source" msgstr "Funambol synkronisering kilde" #: ../../static/t/aide/siteconfig/tab_pushmail.html:14 msgid "Funambol auth details (user:pass)" msgstr "Funambol autorisation detaljer (bruger:adgangskode)" #: ../../static/t/aide/siteconfig/tab_pushmail.html:17 #, fuzzy msgid "External pager tool (blank to disable)" msgstr "Extern pager værktøj (blank for at slå fra)" #: ../../static/t/aide/siteconfig/tab_access.html:1 msgid "Access controls and site policy settings" msgstr "Adgangskontrol og site politik indstillinger" #: ../../static/t/aide/siteconfig/tab_access.html:5 msgid "Allow aides to zap (forget) rooms" msgstr "Tillad ansvarlige at zappe (glemme) rum" #: ../../static/t/aide/siteconfig/tab_access.html:9 msgid "Quarantine messages from problem users" msgstr "Sæt meddelelser fra problem brugere i karantæne" #: ../../static/t/aide/siteconfig/tab_access.html:12 msgid "Name of quarantine room" msgstr "Navn på karantæne rum" #: ../../static/t/aide/siteconfig/tab_access.html:17 msgid "Name of room to log pages" msgstr "Navn på rum for log sider" #: ../../static/t/aide/siteconfig/tab_access.html:22 msgid "Authentication mode" msgstr "Autosisations måde" #: ../../static/t/aide/siteconfig/tab_access.html:24 msgid "Self contained" msgstr "Indeholder" #: ../../static/t/aide/siteconfig/tab_access.html:25 msgid "Host based" msgstr "Host navn" #: ../../static/t/aide/siteconfig/tab_access.html:26 msgid "LDAP (RFC2307)" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:27 msgid "LDAP (Active Directory)" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:30 #, fuzzy msgid "Master user name (blank to disable)" msgstr "Master brugernavn (blank for at slå fra)" #: ../../static/t/aide/siteconfig/tab_access.html:33 #, fuzzy msgid "Master user password" msgstr "Master bruger adgangskode:" #: ../../static/t/aide/siteconfig/tab_access.html:38 msgid "Initial access level for new users" msgstr "Adgangsrettighed for nye brugere" #: ../../static/t/aide/siteconfig/tab_access.html:49 msgid "Access level required to create rooms" msgstr "Adgangsrettighed krævet for at oprette rum" #: ../../static/t/aide/siteconfig/tab_access.html:60 msgid "Automatically grant room-aide status to users who create private rooms" msgstr "" "Giv automatisk rum-ansvarlig status til den bruger der opretter private rum" #: ../../static/t/aide/siteconfig/tab_access.html:63 #, fuzzy msgid "Automatically grant room-aide status to users who create BLOG rooms" msgstr "" "Giv automatisk rum-ansvarlig status til den bruger der opretter BLOG rum" #: ../../static/t/aide/siteconfig/tab_access.html:66 msgid "Restrict access to Internet mail" msgstr "Blokér adgang til Internet Email" #: ../../static/t/aide/siteconfig/tab_access.html:71 msgid "Disable self-service user account creation" msgstr "Slå selvservice brugeroprettelse fra" #: ../../static/t/aide/siteconfig/tab_access.html:71 msgid "Hint: do not select both!" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:74 msgid "Require registration for new users" msgstr "Kræv registrering af nye brugere" #: ../../static/t/aide/siteconfig/tab_access.html:77 #, fuzzy msgid "Allow anonymous guest access" msgstr "Ingen anonyme meddelser" #: ../../static/t/aide/siteconfig/tab_indexing.html:1 msgid "Indexing and Journaling" msgstr "Index og Journal" #: ../../static/t/aide/siteconfig/tab_indexing.html:2 msgid "Warning: these facilities are resource intensive." msgstr "Advarsel: disse faciliteter er resourcekrævende." #: ../../static/t/aide/siteconfig/tab_indexing.html:6 msgid "Enable full text index" msgstr "Slå fuld tekst index til" #: ../../static/t/aide/siteconfig/tab_indexing.html:9 msgid "Perform journaling of email messages" msgstr "Brug journal på Email meddelelser" #: ../../static/t/aide/siteconfig/tab_indexing.html:13 msgid "Perform journaling of non-email messages" msgstr "Brug journal på ikke-Email meddelelser" #: ../../static/t/aide/siteconfig/tab_indexing.html:16 msgid "Email destination of journalized messages" msgstr "Email destination på journaliserede meddelelser" #: ../../static/t/aide/siteconfig/tab_directory.html:1 msgid "Configure the LDAP connector for Citadel" msgstr "Konfigurér LDAP forbindelse for Citadel" #: ../../static/t/aide/siteconfig/tab_directory.html:4 msgid "" "NOTE: This Citadel server has been built without LDAP support. These " "options will have no effect." msgstr "" "NOTE: Denne Citadel server er blevet installeret uden support af LDAP. Disse " "indstillinger vil ikke have nogen betydning." #: ../../static/t/aide/siteconfig/tab_directory.html:9 msgid "Host name of LDAP server (blank to disable)" msgstr "Navn på LDAP server (blank for at slå fra)" #: ../../static/t/aide/siteconfig/tab_directory.html:13 msgid "Port number of LDAP server (blank to disable)" msgstr "Port nummer op LDAP server (blank for at slå fra)" #: ../../static/t/aide/siteconfig/tab_directory.html:16 msgid "Base DN" msgstr "Base DN" #: ../../static/t/aide/siteconfig/tab_directory.html:19 msgid "Bind DN" msgstr "Forbind DN" #: ../../static/t/aide/siteconfig/tab_directory.html:22 msgid "Password for bind DN" msgstr "Adgangskode for forbind DN" #: ../../static/t/iconbar.html:7 msgid "Language:" msgstr "Sprog" #: ../../static/t/iconbar.html:19 msgid "Mail" msgstr "Post" #: ../../static/t/iconbar.html:39 ../../static/t/iconbar/edit.html:61 #: ../../static/t/summary/page.html:30 msgid "Tasks" msgstr "Opgaver" #: ../../static/t/iconbar.html:48 ../../static/t/iconbar/edit.html:67 msgid "Rooms" msgstr "Rum" #: ../../static/t/iconbar.html:57 msgid "Online users" msgstr "" #: ../../static/t/iconbar.html:62 ../../static/t/iconbar/edit.html:79 msgid "Chat" msgstr "Chat" #: ../../static/t/iconbar.html:65 msgid "Advanced" msgstr "Avanceret" #: ../../static/t/iconbar.html:72 ../../static/t/room/edit/editroom.html:4 #: ../../static/t/room/edit.html:5 msgid "Administration" msgstr "Administration" #: ../../static/t/iconbar.html:83 msgid "customize this menu" msgstr "personliggør denne menu" #: ../../static/t/iconbar.html:92 msgid "switch to room list" msgstr "skift til rum listen" #: ../../static/t/iconbar.html:93 msgid "switch to menu" msgstr "skift til menu" #: ../../static/t/iconbar.html:94 msgid "My folders" msgstr "" #: ../../static/t/view_message/list_attach.html:3 #: ../../static/t/view_message/inline_attach.html:4 msgid "View" msgstr "Vis" #: ../../static/t/view_message/list_attach.html:4 #: ../../static/t/view_message/inline_attach.html:5 msgid "Download" msgstr "Download" #: ../../static/t/view_message/print.html:14 #: ../../static/t/view_message.html:14 msgid "to" msgstr "" #: ../../static/t/openid_manual_create.html:2 msgid "Your OpenID" msgstr "" #: ../../static/t/openid_manual_create.html:2 msgid "was successfully verified." msgstr "" #: ../../static/t/openid_manual_create.html:3 msgid "However, the user name" msgstr "" #: ../../static/t/openid_manual_create.html:3 msgid "conflicts with an existing user." msgstr "" #: ../../static/t/openid_manual_create.html:5 msgid "Please specify the user name you would like to use." msgstr "Skriv det Brugernavn du gerne vil have." #: ../../static/t/files/graphicsupload.html:2 msgid "Image upload" msgstr "Upload billede" #: ../../static/t/files/graphicsupload.html:6 msgid "You can upload an image directly from your computer" msgstr "" #: ../../static/t/files/graphicsupload.html:8 msgid "Please select a file to upload:" msgstr "Vælg en fil til upload:" #: ../../static/t/files/section_onefile.html:20 msgid "Slideshow" msgstr "Lysbilledshow" #: ../../static/t/roombanner.html:10 ../../static/t/roombanner.html:11 msgid "new of" msgstr "" #: ../../static/t/roombanner.html:10 ../../static/t/roombanner.html:11 #: ../../static/t/msg_listselector_bottom.html:7 #: ../../static/t/msg_listselector_top.html:7 msgid "messages" msgstr "" #: ../../static/t/roombanner.html:28 msgid "Select page: " msgstr "" #: ../../static/t/who.html:13 msgid "Users currently on " msgstr "" #: ../../static/t/who.html:22 #, fuzzy msgid "Click on a name to read user info. Click on" msgstr "Klik på et navn for at læse bruger info. Klik på " #: ../../static/t/who.html:24 #, fuzzy msgid "to send an instant message to that user." msgstr "for at sende popup meddelelse til den bruger" #: ../../static/t/msg_listselector_bottom.html:2 #: ../../static/t/msg_listselector_top.html:2 msgid "Reading #" msgstr "Læser #" #: ../../static/t/msg_listselector_bottom.html:12 #: ../../static/t/msg_listselector_top.html:12 msgid "oldest to newest" msgstr "ældste til nyeste" #: ../../static/t/msg_listselector_bottom.html:20 #: ../../static/t/msg_listselector_top.html:20 msgid "newest to oldest" msgstr "nyeste til ældste" #: ../../static/t/newstartpage.html:4 msgid "New start page" msgstr "" #: ../../static/t/newstartpage.html:9 msgid "Your start page has been changed." msgstr "" #: ../../static/t/newstartpage.html:12 msgid "" "(Note: this does not change your browser's home page. It changes the page " "you begin on when you log on to" msgstr "" #: ../../static/t/no_new_msgs.html:3 msgid "No new messages." msgstr "" #: ../../static/t/view_blog/comment_box.html:8 msgid "Post a comment" msgstr "Skriv en kommentar" #: ../../static/t/prefs/pushemail.html:2 #, fuzzy msgid "Configure Push Email" msgstr "Skub Email" #: ../../static/t/prefs/pushemail.html:9 msgid "Push email and SMS settings" msgstr "Skub email og SMS indstillinger" #: ../../static/t/prefs/pushemail.html:17 msgid "" "If your administrator has enabled the functionality, Citadel can notify a " "Funambol server that you haved recieved new email and automatically " "syncronize any devices you have with the Funambol client installed." msgstr "" #: ../../static/t/prefs/pushemail.html:20 msgid "" "Alternatively, if the administrator has configured it, Citadel can send a " "text message to you when new mail arrives." msgstr "" #: ../../static/t/prefs/pushemail.html:26 #, fuzzy msgid "Notify Funambol server" msgstr "Funambol server port" #: ../../static/t/prefs/pushemail.html:31 #, fuzzy msgid "Send a text message to..." msgstr "Sedn popup meddelelse til:" #: ../../static/t/prefs/pushemail.html:33 msgid "" "(Use international format, without any leading zeros, spaces or hypens, like " "+61415011501)" msgstr "" #: ../../static/t/prefs/pushemail.html:38 msgid "Use custom notification scheme configured by your Admin" msgstr "" #: ../../static/t/prefs/pushemail.html:43 msgid "Don‘t send any notifications" msgstr "" #: ../../static/t/prefs/box.html:9 msgid "Tree (folders) view" msgstr "Træ (bibliotek) visning" #: ../../static/t/prefs/box.html:11 msgid "Table (rooms) view" msgstr "Tabel (rum) visning" #: ../../static/t/prefs/box.html:20 msgid "12 hour (am/pm)" msgstr "12 timer (am/pm)" #: ../../static/t/prefs/box.html:25 msgid "24 hour" msgstr "24 timer" #: ../../static/t/prefs/box.html:152 #, fuzzy msgid "Sunday" msgstr "Søndag" #: ../../static/t/prefs/box.html:153 msgid "Monday" msgstr "Mandag" #: ../../static/t/prefs/box.html:174 msgid "No signature" msgstr "Ingen signatur" #: ../../static/t/prefs/box.html:238 msgid "Full-functionality" msgstr "Fuld funktionalitet" #: ../../static/t/prefs/box.html:241 msgid "Safe mode" msgstr "Sikker kørsel" #: ../../static/t/prefs/box.html:242 msgid "" "Safe mode is less intensive on your web browser, but not as fully featured." msgstr "" #: ../../static/t/wiki/pagelist.html:1 msgid "List of Wiki pages" msgstr "" #: ../../static/t/wiki/history.html:1 msgid "History of edits for this page" msgstr "" #: ../../static/t/who/list_static_header.html:1 #, fuzzy msgid "Users currently on" msgstr "Brugere i øjeblikket på" #: ../../static/t/who/section.html:4 msgid "(kill)" msgstr "(dræb)" #: ../../static/t/who/bio.html:4 ../../static/t/user/show.html:4 msgid "User profile" msgstr "Bruger profil" #: ../../static/t/who/summary.html:5 ../../static/t/who/box_list_static.html:6 #: ../../static/t/room/edit/tab_feed.html:13 msgid "User name" msgstr "Bruger navn" #: ../../static/t/who/summary.html:6 ../../static/t/who/box_list_static.html:7 msgid "Room" msgstr "Rum" #: ../../static/t/who/box_list_static.html:8 msgid "From host" msgstr "Fra host" #: ../../static/t/view_message.html:19 msgid "Edit" msgstr "" #: ../../static/t/view_message.html:22 ../../static/t/view_message.html:26 msgid "Reply" msgstr "Svar" #: ../../static/t/view_message.html:23 msgid "ReplyQuoted" msgstr "SvarCitér" #: ../../static/t/view_message.html:27 msgid "ReplyAll" msgstr "SvarAlle" #: ../../static/t/view_message.html:28 msgid "Forward" msgstr "Videresend" #: ../../static/t/view_message.html:31 ../../static/t/msg_listview.html:25 msgid "Move" msgstr "Flyt" #: ../../static/t/view_message.html:34 msgid "Headers" msgstr "Headers" #: ../../static/t/view_message.html:35 ../../static/t/msg_listview.html:28 msgid "Print" msgstr "Udskriv" #: ../../static/t/preferences.html:4 ../../static/t/preferences.html:7 msgid "Preferences and settings" msgstr "Præferencer og indstillinger" #: ../../static/t/user/list.html:3 #, fuzzy msgid "User list for " msgstr "Bruger liste for %s" #: ../../static/t/user/list.html:9 msgid "User Name" msgstr "Bruger navn" #: ../../static/t/user/list.html:10 msgid "Number" msgstr "Nummer" #: ../../static/t/user/list.html:11 msgid "Access Level" msgstr "Bruger type" #: ../../static/t/user/list.html:12 msgid "Last Login" msgstr "Sidste login" #: ../../static/t/user/list.html:13 msgid "Total Logins" msgstr "Total antal login" #: ../../static/t/user/list.html:14 msgid "Total Posts" msgstr "Totale antal meddelelser" #: ../../static/t/user/show.html:9 #, fuzzy msgid "Click here to send an instant message to" msgstr "Klik her for at sende online meddelelse til %s" #: ../../static/t/start_of_new_msgs.html:4 msgid "Old messages" msgstr "" #: ../../static/t/start_of_new_msgs.html:8 msgid "New messages" msgstr "" #: ../../static/t/display_main_menu.html:7 msgid "Basic commands" msgstr "Almindelige kommandoer" #: ../../static/t/display_main_menu.html:10 msgid "Your info" msgstr "Din information" #: ../../static/t/display_main_menu.html:12 msgid "Advanced room commands" msgstr "Avancerede rum kommandoer" #: ../../static/t/iconbar/save.html:4 ../../static/t/iconbar/edit.html:4 msgid "Customize the icon bar" msgstr "Personliggør denne ikonbjælke" #: ../../static/t/iconbar/save.html:11 #, fuzzy msgid "" "Your icon bar has been updated. Please select any of its choices to continue." msgstr "" "Din ikonbjælke er blevet opdateret. Vælg en af mulighederne for at " "fortsætte." #: ../../static/t/iconbar/save.html:11 msgid "" "You may need to force refresh (SHIFT-F5)> in order for changes to take effect" msgstr "" #: ../../static/t/iconbar/edit.html:11 msgid "Display icons as:" msgstr "Vis ikoner som:" #: ../../static/t/iconbar/edit.html:12 msgid "pictures and text" msgstr "billeder og tekst" #: ../../static/t/iconbar/edit.html:13 msgid "pictures only" msgstr "kun billeder" #: ../../static/t/iconbar/edit.html:14 msgid "text only" msgstr "kun tekst" #: ../../static/t/iconbar/edit.html:16 msgid "" "Select the icons you would like to see displayed in the 'icon bar' menu on " "the left side of the screen." msgstr "" "Vælg de ikoner som vil have vist i 'ikonbjælke' menuen i den venstre side af " "skærmen." #: ../../static/t/iconbar/edit.html:23 msgid "Site logo" msgstr "Site logo" #: ../../static/t/iconbar/edit.html:23 msgid "An icon describing this site" msgstr "Et ikon der beskriver denne site" #: ../../static/t/iconbar/edit.html:29 msgid "Your summary page" msgstr "Din summeringsside" #: ../../static/t/iconbar/edit.html:36 msgid "Mail (inbox)" msgstr "Post (indbakke)" #: ../../static/t/iconbar/edit.html:36 msgid "A shortcut to your email Inbox" msgstr "En genvej til din indbakke" #: ../../static/t/iconbar/edit.html:42 msgid "Your personal address book" msgstr "Din personlige adressebog" #: ../../static/t/iconbar/edit.html:49 msgid "Your personal notes" msgstr "Dine personlige noter" #: ../../static/t/iconbar/edit.html:55 msgid "A shortcut to your personal calendar" msgstr "En genvej til din personlige kalender" #: ../../static/t/iconbar/edit.html:61 msgid "A shortcut to your personal task list" msgstr "En genvej til din personlige opgave liste" #: ../../static/t/iconbar/edit.html:67 msgid "" "Clicking this icon displays a list of all accessible rooms (or folders) " "available." msgstr "" "Klik på dette ikon for at vise en liste med alle tilgængelige rum. (eller " "foldere)" #: ../../static/t/iconbar/edit.html:73 msgid "Who is online?" msgstr "Hvem er online?" #: ../../static/t/iconbar/edit.html:73 msgid "Clicking this icon displays a list of all users currently logged in." msgstr "" "KLik på dette ikon for at vise en liste med alle brugere der er logget ind." #: ../../static/t/iconbar/edit.html:79 msgid "" "Clicking this icon enters real-time chat mode with other users in the same " "room." msgstr "" "Klik på dette ikon for at starte chat med andre brugere i det samme rum." #: ../../static/t/iconbar/edit.html:85 msgid "Advanced options" msgstr "Avancerede indstillinger" #: ../../static/t/iconbar/edit.html:85 msgid "Access to the complete menu of Citadel functions." msgstr "Adgang til den komplette menu med Citadel funktioner." #: ../../static/t/iconbar/edit.html:91 msgid "Citadel logo" msgstr "Citadel logo" #: ../../static/t/iconbar/edit.html:91 msgid "Displays the 'Powered by Citadel' icon" msgstr "Viser 'Powered by Citadel' ikon" #: ../../static/t/room/edit/tab_expire.html:8 msgid "Message expire policy for this room" msgstr "Meddelelse udløbspolitik for dette rum" #: ../../static/t/room/edit/tab_expire.html:14 msgid "Use the default policy for this floor" msgstr "Brug standard politik for denne etage" #: ../../static/t/room/edit/tab_expire.html:36 msgid "Message expire policy for this floor" msgstr "Meddelelse udløbspolitik for denne etage" #: ../../static/t/room/edit/tab_expire.html:42 msgid "Use the system default" msgstr "Brug system standard" #: ../../static/t/room/edit/editroom.html:5 ../../static/t/room/edit.html:6 msgid "Configuration" msgstr "Konfiguration" #: ../../static/t/room/edit/editroom.html:6 ../../static/t/room/edit.html:7 msgid "Message expire policy" msgstr "Meddelelse udløbspolitik" #: ../../static/t/room/edit/editroom.html:7 ../../static/t/room/edit.html:8 msgid "Access controls" msgstr "Adgangskontrol" #: ../../static/t/room/edit/editroom.html:8 ../../static/t/room/edit.html:9 msgid "Sharing" msgstr "Deling" #: ../../static/t/room/edit/editroom.html:9 ../../static/t/room/edit.html:10 msgid "Mailing list service" msgstr "Mailing liste service" #: ../../static/t/room/edit/editroom.html:10 ../../static/t/room/edit.html:11 msgid "Remote retrieval" msgstr "Fjernhentning" #: ../../static/t/room/edit/tab_config.html:6 #, fuzzy msgid "name of room: " msgstr "Navn på rum" #: ../../static/t/room/edit/tab_config.html:10 #: ../../static/t/room/create.html:20 msgid "Resides on floor: " msgstr "Ligger på etage: " #: ../../static/t/room/edit/tab_config.html:16 #: ../../static/t/room/create.html:68 msgid "Type of room:" msgstr "Type på rum" #: ../../static/t/room/edit/tab_config.html:22 #: ../../static/t/room/create.html:73 msgid "Public (automatically appears to everyone)" msgstr "Offentlig (automatisk vist til alle)" #: ../../static/t/room/edit/tab_config.html:28 #: ../../static/t/room/create.html:77 msgid "Private - hidden (accessible to anyone who knows its name)" msgstr "Privat - skjult (adgang for dem der kender navnet)" #: ../../static/t/room/edit/tab_config.html:35 #: ../../static/t/room/create.html:81 msgid "Private - require password: " msgstr "Privat - med adgangskode: " #: ../../static/t/room/edit/tab_config.html:44 #: ../../static/t/room/create.html:86 msgid "Private - invitation only" msgstr "Privat - kun med invitation" #: ../../static/t/room/edit/tab_config.html:51 #: ../../static/t/room/create.html:90 msgid "Personal (mailbox for you only)" msgstr "Personlig (postkasse kun for dig)" #: ../../static/t/room/edit/tab_config.html:55 msgid "If private, cause current users to forget room" msgstr "Hvis privat, tving aktuelle brugere til at glemme rummet" #: ../../static/t/room/edit/tab_config.html:61 msgid "Preferred users only" msgstr "Kun foretrukne brugere" #: ../../static/t/room/edit/tab_config.html:66 msgid "Read-only room" msgstr "Kun-læs rum" #: ../../static/t/room/edit/tab_config.html:71 msgid "All users allowed to post may also delete messages" msgstr "Alle brugere der kan skrive må også slette meddelser" #: ../../static/t/room/edit/tab_config.html:76 msgid "File directory room" msgstr "Fil bibliotek rum" #: ../../static/t/room/edit/tab_config.html:80 msgid "Directory name: " msgstr "Biblioteksnavn: " #: ../../static/t/room/edit/tab_config.html:86 msgid "Uploading allowed" msgstr "uploading tilladt" #: ../../static/t/room/edit/tab_config.html:91 msgid "Downloading allowed" msgstr "Downloading tilladt" #: ../../static/t/room/edit/tab_config.html:96 msgid "Visible directory" msgstr "Synligt bibliotek" #: ../../static/t/room/edit/tab_config.html:103 msgid "Network shared room" msgstr "Netværksdelt rum" #: ../../static/t/room/edit/tab_config.html:108 msgid "Permanent (does not auto-purge)" msgstr "Permanent (bliver ikke autoslettet)" #: ../../static/t/room/edit/tab_config.html:113 msgid "Subject Required (Force users to specify a message subject)" msgstr "Emne er krævet (Tving brugere til at skrive et emne)" #: ../../static/t/room/edit/tab_config.html:116 msgid "Anonymous messages" msgstr "Anonyme meddelelser" #: ../../static/t/room/edit/tab_config.html:122 msgid "No anonymous messages" msgstr "Ingen anonyme meddelser" #: ../../static/t/room/edit/tab_config.html:127 msgid "All messages are anonymous" msgstr "Alle meddelelser er anonyme" #: ../../static/t/room/edit/tab_config.html:132 msgid "Prompt user when entering messages" msgstr "spørg bruger som skriver meddelelser" #: ../../static/t/room/edit/tab_config.html:136 msgid "Room aide: " msgstr "Rum Systemansvarlig" #: ../../static/t/room/edit/tab_listserv.html:5 #, fuzzy msgid "" "The contents of this room are being mailed as individual messages " "to the following list recipients:

    " msgstr "" "Indholdet af dette rum bliver sendt som individuelle meddelelser " "til denne liste af modtagere:

    \n" #: ../../static/t/room/edit/tab_listserv.html:19 #, fuzzy msgid "" "The contents of this room are being mailed in digest form to the " "following list recipients:

    " msgstr "" "Indholdet af dette rum bliver sendt i oversigtsform til den " "følgende liste af modtagere:

    \n" #: ../../static/t/room/edit/tab_listserv.html:39 msgid "Add recipients from Contacts or other address books" msgstr "Tilføj modtagere fra Kontakter eller andre adressebøger" #: ../../static/t/room/edit/tab_listserv.html:48 msgid "Allow non-subscribers to mail to this room." msgstr "Tillad ikkeabonenter at skrive til dette rum." #: ../../static/t/room/edit/tab_listserv.html:54 msgid "Room post publication needs Admin permission." msgstr "Rum opslag publificering kræver tilladelse fra Systemansvarlig." #: ../../static/t/room/edit/tab_listserv.html:59 #, fuzzy msgid "Allow self-service subscribe/unsubscribe requests." msgstr "" "Dette rum er konfigureret til at tillade selvbetjent abonement/slet " "abonement forspørgsler." #: ../../static/t/room/edit/tab_listserv.html:65 msgid "The URL for subscribe/unsubscribe is: " msgstr "URL'en for abonement/slet abonement er:" #: ../../static/t/room/edit/digestrecp_removal.html:1 #: ../../static/t/room/edit/pop3client_removal.html:9 #: ../../static/t/room/edit/listrecp_removal.html:1 #: ../../static/t/room/edit/rssclient_removal.html:5 msgid "(remove)" msgstr "(fjern)" #: ../../static/t/room/edit/tab_admin.html:5 msgid "Delete this room" msgstr "Slet dette rum" #: ../../static/t/room/edit/tab_admin.html:10 #, fuzzy msgid "Set or change the icon for this rooms banner" msgstr "Sæt eller skift ikonet for dette rums banner" #: ../../static/t/room/edit/tab_admin.html:14 #, fuzzy msgid "Edit this rooms Info file" msgstr "Editér dette rums Info fil" #: ../../static/t/room/edit/tab_share.html:5 msgid "Shared with" msgstr "Delt med" #: ../../static/t/room/edit/tab_share.html:6 msgid "Not shared with" msgstr "Ikke delt med" #: ../../static/t/room/edit/tab_share.html:11 #: ../../static/t/room/edit/tab_share.html:21 msgid "Remote node name" msgstr "Fjernnode navn" #: ../../static/t/room/edit/tab_share.html:12 #: ../../static/t/room/edit/tab_share.html:22 msgid "Remote room name" msgstr "Fjernrum navn" #: ../../static/t/room/edit/tab_share.html:13 #: ../../static/t/room/edit/tab_share.html:23 msgid "Actions" msgstr "Aktioner" #: ../../static/t/room/edit/tab_share.html:35 #, fuzzy msgid "" "When sharing a room, it must be shared from both ends. Adding a node to the " "'shared' list sends messages out, but in order to receive messages, the " "other nodes must be configured to send messages out to your system as well. " "
  • If the remote room name is blank, it is assumed that the room name is " "identical on the remote node.
  • If the remote room name is different, the " "remote node must also configure the name of the room here." msgstr "" "Når et rum blever delt, skal det deles fra begge ender. Tilføj en node til " "'delt' liste sender meddelelser ud, men for at modtage meddelelser, må de " "andre noder være konfigureret til at sende meddelelser ud til dit system " "også.
  • Hvis fjernrum navn er blank, er det underforstået at rum navnet er " "identisk på fjern noden.
  • Hvis fjern rum navnet er forskellig, må fjern " "noden også konfigurere navnet på rummet her.
    \n" #: ../../static/t/room/edit/tab_feed.html:2 msgid "" "Retrieve messages from these remote POP3 accounts and store them in this " "room:" msgstr "Modtag meddelelser fra disse POP konti og gem dem i dette rum:" #: ../../static/t/room/edit/tab_feed.html:12 #, fuzzy msgid "Remote host" msgstr "Smart værter" #: ../../static/t/room/edit/tab_feed.html:15 #, fuzzy msgid "Keep messages on server?" msgstr "Gem meddelelser på server?" #: ../../static/t/room/edit/tab_feed.html:16 #, fuzzy msgid "Interval" msgstr "Interval" #: ../../static/t/room/edit/tab_feed.html:31 msgid "Fetch the following RSS feeds and store them in this room:" msgstr "Hent de følgende RSS feeds og gem dem i dette rum:" #: ../../static/t/room/edit/tab_feed.html:43 msgid "Feed URL" msgstr "Feed URL" #: ../../static/t/room/edit/tab_access.html:5 #, fuzzy msgid "" "The users listed below have access to this room. To remove a user from the " "access list, select the user name from the list and click 'Kick'." msgstr "" "Brugerne nedenfor har adgang til dette rum. For at fjerne en bruger fra " "adgangslisten, Vælg brugeren på listen og klik 'Spark'." #: ../../static/t/room/edit/tab_access.html:20 msgid "" "To grant another user access to this room, enter the user name in the box " "below and click 'Invite'." msgstr "" "Far at give en anden bruger adgang til dette rum, skriv brugernavnet i " "boksen nedenfor og klik 'Invitér'." #: ../../static/t/room/edit/tab_access.html:26 msgid "Invite:" msgstr "Invitér:" #: ../../static/t/room/edit/tab_access.html:35 #, fuzzy msgid "Users" msgstr "Brugere" #: ../../static/t/room/zapped_list.html:7 msgid "Zapped (forgotten) rooms" msgstr "Zapped (glemte) rum" #: ../../static/t/room/zapped_list.html:10 #, fuzzy msgid "Click on any room to un-zap it and goto that room." msgstr "Klik på et rum for at af-zappe det og gå til rummet.\n" #: ../../static/t/room/display_private.html:7 msgid "Go to a hidden room" msgstr "Gå til et skjult rum" #: ../../static/t/room/display_private.html:8 #, fuzzy msgid "" "If you know the name of a hidden (guess-name) or passworded room, you can " "enter that room by typing its name below. Once you gain access to a private " "room, it will appear in your regular room listings so you don‘t have to keep " "returning here." msgstr "" "Hvis du kender navnet på et skjult (gæt-navn) eller adgangsbeskyttet rum, " "kan du gå til rummet ved at skrive navnet nedenfor. Når du får adgang til " "et privat rum, vil det optræde på din almindelige rum liste så du ikke " "behøver at komme her igen." #: ../../static/t/room/display_private.html:14 msgid "Enter room name:" msgstr "Skriv rummets navn:" #: ../../static/t/room/display_private.html:21 msgid "Enter room password:" msgstr "Skriv rummets adgangskode:" #: ../../static/t/room/create.html:11 #: ../../static/t/menu/advanced_roomcommands.html:6 msgid "Create a new room" msgstr "Opret et nyt rum" #: ../../static/t/room/create.html:18 msgid "Name of room: " msgstr "Navn på rum" #: ../../static/t/room/create.html:32 msgid "Default view for room: " msgstr "Standard visning for rum: " #: ../../static/t/room/zap_this.html:3 msgid "Zap (forget/unsubscribe) the current room" msgstr "Zap (glem/abonementfjern) det aktuelle rum" #: ../../static/t/room/zap_this.html:6 #, fuzzy msgid "If you select this option," msgstr "Editér eller slet dette rum" #: ../../static/t/room/zap_this.html:8 #, fuzzy msgid "will disappear from your room list. Is this what you wish to do?" msgstr "" "Hvis du vælger denne funktion, %s vil forsvinde fra din rum liste. " "Er det hvad du gerne vil?
    \n" #: ../../static/t/menu/your_info.html:2 msgid "Change your preferences and settings" msgstr "Ændre dine præferencer og indstillinger" #: ../../static/t/menu/your_info.html:3 msgid "Update your contact information" msgstr "Opdatér din kontakt information" #: ../../static/t/menu/your_info.html:5 msgid "Enter your 'bio'" msgstr "Indtast din 'bio'" #: ../../static/t/menu/your_info.html:6 msgid "Edit your online photo" msgstr "Editér dit online foto" #: ../../static/t/menu/your_info.html:8 msgid "Edit your push email settings" msgstr "Editér dine skub email indstillinger" #: ../../static/t/menu/your_info.html:9 #, fuzzy msgid "Manage your OpenIDs" msgstr "Skift din adgangskode" #: ../../static/t/menu/basic_commands.html:3 msgid "List known rooms" msgstr "Vist kendte rum" #: ../../static/t/menu/basic_commands.html:3 msgid "Where can I go from here?" msgstr "Hvor kan jeg komme hen?" #: ../../static/t/menu/basic_commands.html:4 ../../static/t/navbar.html:168 msgid "Goto next room" msgstr "Gå til næste rum" #: ../../static/t/menu/basic_commands.html:4 #, fuzzy msgid "...with unread messages" msgstr "...med ikke læste meddelelser" #: ../../static/t/menu/basic_commands.html:5 msgid "Skip to next room" msgstr "Fortsæt til næste rum" #: ../../static/t/menu/basic_commands.html:5 msgid "(come back here later)" msgstr "(kom tilbage hertil senere)" #: ../../static/t/menu/basic_commands.html:6 ../../static/t/navbar.html:5 msgid "Ungoto" msgstr "Gå tilbage" #: ../../static/t/menu/basic_commands.html:6 #, fuzzy msgid "oops! Back to " msgstr "(Hovsa! Tilbage til )" #: ../../static/t/menu/basic_commands.html:10 ../../static/t/navbar.html:13 msgid "Read new messages" msgstr "Læs nye meddelelser" #: ../../static/t/menu/basic_commands.html:10 msgid "...in this room" msgstr "...i dette rum" #: ../../static/t/menu/basic_commands.html:11 ../../static/t/navbar.html:19 msgid "Read all messages" msgstr "Læs alle meddelelser" #: ../../static/t/menu/basic_commands.html:11 msgid "...old and new" msgstr "...gamle og nye" #: ../../static/t/menu/basic_commands.html:12 ../../static/t/navbar.html:25 msgid "Enter a message" msgstr "Skriv en meddelelse" #: ../../static/t/menu/basic_commands.html:12 msgid "(post in this room)" msgstr "(opret i dette rum)" #: ../../static/t/menu/basic_commands.html:13 msgid "File library" msgstr "Fil bibliotek" #: ../../static/t/menu/basic_commands.html:13 msgid "(List files available for download)" msgstr "(Vis filer som du kan downloade)" #: ../../static/t/menu/basic_commands.html:17 msgid "Summary page" msgstr "Summerings side" #: ../../static/t/menu/basic_commands.html:17 msgid "Summary of my account" msgstr "Summering af min konto" #: ../../static/t/menu/basic_commands.html:18 msgid "User list" msgstr "Bruger liste" #: ../../static/t/menu/basic_commands.html:18 msgid "(all registered users)" msgstr "(alle registrerede brugere)" #: ../../static/t/menu/basic_commands.html:19 msgid "Bye!" msgstr "Farvel!" #: ../../static/t/menu/advanced_roomcommands.html:3 msgid "Edit or delete this room" msgstr "Editér eller slet dette rum" #: ../../static/t/menu/advanced_roomcommands.html:5 msgid "Go to a 'hidden' room" msgstr "Gå til et 'skjult' rum" #: ../../static/t/menu/advanced_roomcommands.html:7 #, fuzzy msgid "Zap (forget) this room" msgstr "Zap (glem) dette rum (%s)" #: ../../static/t/menu/advanced_roomcommands.html:8 msgid "List all forgotten rooms" msgstr "Vis alle glemte rum" #: ../../static/t/navbar.html:34 msgid "View contacts" msgstr "Vis Kontaktpersoner" #: ../../static/t/navbar.html:40 msgid "Add new contact" msgstr "Tilføj ny kontaktperson" #: ../../static/t/navbar.html:49 msgid "Day view" msgstr "Dag visning" #: ../../static/t/navbar.html:55 msgid "Month view" msgstr "Måned visning" #: ../../static/t/navbar.html:61 msgid "Add new event" msgstr "Tilføj ny aftale" #: ../../static/t/navbar.html:70 msgid "Calendar list" msgstr "Kalender liste" #: ../../static/t/navbar.html:79 msgid "View tasks" msgstr "Vis opgaver" #: ../../static/t/navbar.html:85 msgid "Add new task" msgstr "Tilføj ny opgave" #: ../../static/t/navbar.html:94 msgid "View notes" msgstr "Vis noter" #: ../../static/t/navbar.html:101 msgid "Add new note" msgstr "Tilføj ny note" #: ../../static/t/navbar.html:110 msgid "Refresh message list" msgstr "" #: ../../static/t/navbar.html:122 msgid "Write mail" msgstr "Opret en meddelelse" #: ../../static/t/navbar.html:132 msgid "Wiki home" msgstr "Wiki hjem" #: ../../static/t/navbar.html:139 msgid "Edit this page" msgstr "Editér denne side" #: ../../static/t/navbar.html:145 msgid "History" msgstr "" #: ../../static/t/navbar.html:154 #, fuzzy msgid "New blog post" msgstr "nyere stillinger" #: ../../static/t/navbar.html:162 msgid "Skip this room" msgstr "Skip dette rum" #: ../../static/t/msg_listview.html:18 msgid "Loading messages from server, please wait" msgstr "Henter meddelser fra server, vent venligst" #: ../../static/t/msg_listview.html:24 msgid "Open in new window" msgstr "Åbn i nyt vindue" #: ../../static/t/msg_listview.html:26 msgid "Copy" msgstr "Kopiér" #: ../../static/t/view_mailq/message.html:6 msgid "Originaly posted in: " msgstr "" #: ../../static/t/view_mailq/header.html:15 msgid "Refresh this page" msgstr "" #: ../../static/t/view_mailq/header.html:21 msgid "Message ID" msgstr "" #: ../../static/t/view_mailq/header.html:23 msgid "Date/time submitted" msgstr "" #: ../../static/t/view_mailq/header.html:25 #, fuzzy msgid "Next attempt" msgstr "Sidste forsøg" #: ../../static/t/view_mailq/header.html:29 msgid "Recipients" msgstr "Modtagere" #: ../../static/t/view_mailq/footer_empty.html:4 msgid "The queue is empty." msgstr "" #: ../../static/t/view_mailq/footer_empty.html:9 #: ../../static/t/view_mailq/footer.html:5 msgid "You do not have permission to view this resource." msgstr "Du har ikke lov til at se denne resource." #: ../../static/t/get_logged_in.html:5 msgid "You must be logged in to access this page." msgstr "Du skal være logget ind for at se denne side." #: ../../static/t/get_logged_in.html:9 #: ../../static/t/edit_message/attachments_pane.html:3 msgid "Close window" msgstr "Luk vinduet" #: ../../static/t/get_logged_in.html:55 msgid "Log in using a user name and password" msgstr "" #: ../../static/t/get_logged_in.html:60 ../../static/t/get_logged_in.html:75 msgid "Password:" msgstr "Adgangskode" #: ../../static/t/get_logged_in.html:65 ../../static/t/get_logged_in.html:69 msgid "New user? Register now" msgstr "Ny bruger? Tilmeld dig nu" #: ../../static/t/get_logged_in.html:70 msgid "" "enter the name and password you wish to use, and click "New User." " msgstr "" "indtast det navn og adgangskode du vil benytte. og klik "Ny Bruger." "" " #: ../../static/t/get_logged_in.html:83 msgid "Log in using OpenID" msgstr "Log ind med OpenID" #: ../../static/t/get_logged_in.html:85 msgid "OpenID URL:" msgstr "" #: ../../static/t/get_logged_in.html:92 #, fuzzy msgid "Log in using Google" msgstr "Log ind med OpenID" #: ../../static/t/get_logged_in.html:97 #, fuzzy msgid "Log in using Yahoo" msgstr "Log ind med OpenID" #: ../../static/t/get_logged_in.html:102 #, fuzzy msgid "Log in using AOL or AIM" msgstr "Log ind med OpenID" #: ../../static/t/get_logged_in.html:104 msgid "Enter your AOL or AIM screen name:" msgstr "" #: ../../static/t/get_logged_in.html:115 msgid "Please wait" msgstr "Vent" #: ../../static/t/summary/page.html:4 #, fuzzy msgid "Summary page for " msgstr "Summeringsside for %s" #: ../../static/t/summary/page.html:21 msgid "Messages" msgstr "Meddelelser" #: ../../static/t/summary/page.html:39 msgid "Today on your calendar" msgstr "Idag i din kalender" #: ../../static/t/summary/page.html:51 #, fuzzy msgid "Who‘s online now" msgstr "Hvem er online nu" #: ../../static/t/summary/page.html:60 msgid "About this server" msgstr "Om denne server" #: ../../static/t/summary/page.html:63 msgid "You are connected to" msgstr "" #: ../../static/t/summary/page.html:64 #, fuzzy msgid "running" msgstr "Tuning" #: ../../static/t/summary/page.html:65 #, fuzzy msgid "with" msgstr "femte" #: ../../static/t/summary/page.html:66 msgid "server build" msgstr "" #: ../../static/t/summary/page.html:67 #, fuzzy msgid "and located in" msgstr "og" #: ../../static/t/summary/page.html:68 #, fuzzy msgid "Your system administrator is" msgstr "Navn på Systemadministror" #: ../../static/t/edit_message/attachments_pane.html:16 msgid "Attach file" msgstr "Vedhæft fil" #: ../../static/t/edit_message/attachments_pane.html:21 msgid "Upload" msgstr "Upload" #: ../../static/t/edit_message/section_attach_select.html:4 #, fuzzy msgid "Remove" msgstr "(fjern)" #: ../../static/t/loggedinas.html:3 #, fuzzy msgid "Logged in as" msgstr "Sidste login" #: ../../static/t/loggedinas.html:6 #, fuzzy msgid "Not logged in." msgstr "Ikke logget ind" #~ msgid "A script by that name already exists." #~ msgstr "Et script med dette navn eksisterer allerede." #~ msgid "" #~ "A new script has been created. Return to the script editing screen to " #~ "edit and activate it." #~ msgstr "" #~ "Et nyt script er blevet oprettet. Returnér til script editéring for at " #~ "rette og aktivere det." #~ msgid "Create" #~ msgstr "Opret" #~ msgid "Move rule up" #~ msgstr "Flyt regel op" #~ msgid "Move rule down" #~ msgstr "Flyt regel ned" #~ msgid "Reset form" #~ msgstr "Slet form" #~ msgid "" #~ "You are connected to %s, running %s with %s, server build %s and located " #~ "in %s. Your system administrator is %s." #~ msgstr "" #~ "Du er forbundet til %s, bruger %s med %s, server version %s og " #~ "lokaliseret i %s. Din systemadministrator er %s." #, fuzzy #~ msgid "Yes with users list" #~ msgstr "Ja med brugerlisten" #~ msgid "Room list" #~ msgstr "Rum liste" #, fuzzy #~ msgid "text" #~ msgstr "kun tekst" #, fuzzy #~ msgid "name" #~ msgstr "(intet navn)" #, fuzzy #~ msgid "password" #~ msgstr "Adgangskode" #, fuzzy #~ msgid "pass" #~ msgstr "Opgaver" #, fuzzy #~ msgid "display: none" #~ msgstr "Vist navn:" #~ msgid "Your password was not accepted." #~ msgstr "Din adgangskode blev ikke accepteret." #~ msgid "If you already have an account on" #~ msgstr "Hvis du allerede har en konto på" #~ msgid "enter your user name and password and click "Log in."" #~ msgstr "indtast dit brugernavn og klik "Log in."" #~ msgid "Please log off properly when finished. " #~ msgstr "Log af ordentligt når du er færdig. " #~ msgid "recommended browser list" #~ msgstr "anbefalet browser liste" #~ msgid "" #~ "if you have trouble using Webcit.
  • You must have cookies " #~ "turned on. " #~ msgstr "" #~ "hvis du har problemer med Webcit.
  • Du skal have cookies " #~ "slået til. " #~ msgid "" #~ "Also keep in mind that if your browser is configured to block pop-up " #~ "windows, you will not be able to receive any instant messages." #~ msgstr "" #~ "Husk også at hvis din browser er sat til at blokere pop-ups, vil du ikke " #~ "være i stand til at modtage popup medelelser." #~ msgid "Exit" #~ msgstr "Afslut" #~ msgid "Change name" #~ msgstr "Skift navn" #~ msgid "Change CSS" #~ msgstr "Skift CSS" #~ msgid "Create new floor" #~ msgstr "Opret ny etage" #~ msgid "" #~ "You have one or more instant messages waiting, but the Citadel Instant " #~ "Messenger window failed to open. This is probably because you have a " #~ "popup blocker installed. Please configure your popup blocker to allow " #~ "popups from this site if you wish to receive instant messages." #~ msgstr "" #~ "Du har en eller flere popup meddelelser ventende, men Citadel Instant " #~ "Messenger vinduet kunne ikke åbnes. Det er måske fordi du har en popup " #~ "blocker installeret. Konfigurér din popup blocker til at tillade popups " #~ "fra denne site hvis du vil have popup meddelelser." #~ msgid "Change" #~ msgstr "Ret" #, fuzzy #~ msgid "Add node?" #~ msgstr "Tilføj node" #, fuzzy #~ msgid "Minutes" #~ msgstr "Minutter" #, fuzzy #~ msgid "active" #~ msgstr "Foreløbig" #~ msgid "Send" #~ msgstr "Send" #, fuzzy #~ msgid "Pictures in" #~ msgstr "Billeder i" #~ msgid "Edit configuration" #~ msgstr "Editér konfiguration" #~ msgid "Edit address book entry" #~ msgstr "Editér adressebogsemne" #~ msgid "Delete user" #~ msgstr "Slet bruger" #~ msgid "Delete this user?" #~ msgstr "Slet denne bruger?" #, fuzzy #~ msgid "Delete File" #~ msgstr "Slet regel" #~ msgid "Delete this message?" #~ msgstr "Slet denne meddelelse?" #, fuzzy #~ msgid "Powered by Citadel" #~ msgstr "Viser 'Powered by Citadel' ikon" #~ msgid "Go to your email inbox" #~ msgstr "Gå til din indbakke" #~ msgid "Go to your personal calendar" #~ msgstr "Gå til din personlige kalender" #~ msgid "Go to your personal address book" #~ msgstr "Gå til din personlige adressebog" #~ msgid "Go to your personal notes" #~ msgstr "Gå til dine personlige noter" #~ msgid "Go to your personal task list" #~ msgstr "Gå til din personlige opgave liste" #, fuzzy #~ msgid "List all your accessible rooms" #~ msgstr "Vis alle dine tilgængelige rum" #~ msgid "See who is online right now" #~ msgstr "Se hvem der er online lige nu" #~ msgid "" #~ "Advanced Options Menu: Advanced Room commands, Account Info, and Chat" #~ msgstr "" #~ "Avanceret Menu: Avancerede Rum kommandoer, Konto Information og Chat" #~ msgid "Room and system administration functions" #~ msgstr "Rum og systemadministration funktioner" #~ msgid "Log off now?" #~ msgstr "Log af nu?" #, fuzzy #~ msgid "Delete this entry?" #~ msgstr "Slet denne note?" #, fuzzy #~ msgid "Delete this note?" #~ msgstr "Slet denne note?" #, fuzzy #~ msgid "Do you really want to kill this session?" #~ msgstr "Vil du virkelig dræbe denne session?" #, fuzzy #~ msgid "Save changes?" #~ msgstr "Gem ændringer" #, fuzzy #~ msgid "%d new of %d messages%s" #~ msgstr "%d nye af %d meddelser%s" #~ msgid "" #~ "Leave all messages marked as unread, go to next room with unread messages" #~ msgstr "" #~ "Efterlad alle meddelelser som ulæste, gå til næste rum med ulæste " #~ "meddelelser" #~ msgid "Mark all messages as read, go to next room with unread messages" #~ msgstr "" #~ "Markér alle meddelelser som læst, gå til næste rum med ulæste meddelelser" #~ msgid "Are you sure you want to delete this room?" #~ msgstr "Er du sikker på du vil slette dette rum?" #~ msgid "Unshare" #~ msgstr "Fjern deling" #~ msgid "Share" #~ msgstr "Deling" #, fuzzy #~ msgid "List" #~ msgstr "Liste" #~ msgid "Digest" #~ msgstr "Oversigt" #~ msgid "Kick" #~ msgstr "Spark" #~ msgid "Invite" #~ msgstr "Invitér" #, fuzzy #~ msgid "User" #~ msgstr "Bruger" #~ msgid "Create new room" #~ msgstr "Opret nyt rum" #~ msgid "Zap this room" #~ msgstr "Zap dette rum" #~ msgid "(nothing)" #~ msgstr "(ingenting)" #~ msgid "unexpected end of message" #~ msgstr "uventet slut på meddelelse" #~ msgid "An error occurred while setting up the chat socket." #~ msgstr "En fejl opstod mens chat forbindelse blev opsat." #~ msgid "Now exiting chat mode." #~ msgstr "Afslutter nu Chat." #~ msgid "Help" #~ msgstr "Hjælp" #~ msgid "List users" #~ msgstr "Vis brugere" #~ msgid "No messages here." #~ msgstr "Ingen meddelelser her." #, fuzzy #~ msgid "no more messages" #~ msgstr "Anonyme meddelelser" #~ msgid "" #~ "Your icon bar has been updated. Please select any of its choices to " #~ "continue.
    You may need to force " #~ "refresh (SHIFT-F5) in order for changes to take effect" #~ msgstr "" #~ "Din ikonbjælke er blevet opdateret. Vælg en af mulighederne for at " #~ "fortsætte.
    Du skal måske bruge " #~ "opdatér (SHIFT-F5) for at ændringerne træder i kraft" #~ msgid "Email" #~ msgstr "Email" #~ msgid "Error retrieving RSS feed: couldn't find messages\n" #~ msgstr "Fejl ved hentning af RSS feed: kunne ikke finde meddelelser\n" #, fuzzy #~ msgid "%s from" #~ msgstr "%s fra" #, fuzzy #~ msgid "%s in %s" #~ msgstr "%s i %s" #~ msgid " on %s" #~ msgstr " på %s" #~ msgid "%s" #~ msgstr "%s" #, fuzzy #~ msgid "" #~ "
    • Enter your OpenID URL and click "Log in".
    • Click here to " #~ "learn what OpenID is and how Citadel is using it.
    • Please log off " #~ "properly when finished.
    • You must use a browser that supports " #~ "frames and cookies.
    • Also keep in mind that if your " #~ "browser is configured to block pop-up windows, you will not be able to " #~ "receive any instant messages.
    " #~ msgstr "" #~ "
    • Hvis du allerede har en konto på %s, skriv dit brugernavn " #~ "og adgangskode og klik "Log på."
    • Hvis du er ny bruger, skriv det brugernavn og adgangskode du ønsker at bruge, og klik "" #~ "Ny Bruger."
    • Log venligst af, når du er færdig.
    • Du skal bruge " #~ "en browser der supporterer frames og cookies.
    • Hvis din " #~ "browser er konfigureret til at blokere pop-up vinduer, vil du ikke være i " #~ "stand til at modtage online meddelelser.
    " #, fuzzy #~ msgid "" #~ "enter your user name and password and click "Log in."
  • If " #~ "you are a new user, enter the name and password you wish to use, and " #~ "click "New User."
  • Please log off properly when finished. " #~ "
  • You must use a browser that supports frames and cookies.
  • Also keep in mind that if your browser is configured to block pop-" #~ "up windows, you will not be able to receive any instant messages." #~ msgstr "" #~ "
    • Hvis du allerede har en konto på %s, skriv dit brugernavn " #~ "og adgangskode og klik "Log på."
    • Hvis du er ny bruger, skriv det brugernavn og adgangskode du ønsker at bruge, og klik "" #~ "Ny Bruger."
    • Log venligst af, når du er færdig.
    • Du skal bruge " #~ "en browser der supporterer frames og cookies.
    • Hvis din " #~ "browser er konfigureret til at blokere pop-up vinduer, vil du ikke være i " #~ "stand til at modtage online meddelelser.
    " #~ msgid "Find out more about Citadel" #~ msgstr "Lær mere om Citadel" #~ msgid "CITADEL" #~ msgstr "CITADEL" #~ msgid "Customize this menu" #~ msgstr "Personliggør denne menu" #~ msgid "Internet configuration" #~ msgstr "Internet konfiguration" #~ msgid "of %d messages." #~ msgstr "af %d meddelelser." #~ msgid " from " #~ msgstr " fra " #~ msgid " in " #~ msgstr " i " #~ msgid "Edit node configuration for " #~ msgstr "Editér node konfiguration for " #~ msgid "ERROR: could not open template " #~ msgstr "FEJL: kunne ikke åbne skabelon" #~ msgid "" #~ "This message contains calendaring/scheduling information, but support " #~ "for calendars is not available on this particular system. Please ask " #~ "your system administrator to install a new version of the Citadel web " #~ "service with calendaring enabled.
    \n" #~ msgstr "" #~ "Denne meddelse indeholder kalender/skedulerings information, men " #~ "support for kalendere er ikke muligt på dette system. Få din " #~ "systemadministrator til at installere en ny version af Citadel web " #~ "service med kalenderfunktion aktiveret.
    \n" #~ msgid "" #~ "Cannot display calendar item. You are seeing this error because your " #~ "WebCit service has not been installed with calendar support. Please " #~ "contact your system administrator.
    \n" #~ msgstr "" #~ "Kan ikke vise kalender emne. Du ser denne fejl fordi WebCit service " #~ "er ikke installeret med kalenderfunktion. Kontakt din " #~ "systemadministrator.
    \n" #~ msgid "" #~ "Cannot display to-do item. You are seeing this error because your " #~ "WebCit service has not been installed with calendar support. Please " #~ "contact your system administrator.
    \n" #~ msgstr "" #~ "Kan ikke vise opgave emne. Du ser denne fejl fordi WebCit service er " #~ "ikke installeret med kalenderfunktion. Kontakt din systemadministrator.
    \n" #~ msgid "Day: " #~ msgstr "Dag:" #~ msgid "Year: " #~ msgstr "År:" #~ msgid "The calendar view is not available." #~ msgstr "Kalender visning er ikke tilgængelig." #~ msgid "The tasks view is not available." #~ msgstr "Opgave visning er ikke tilgængelig." #~ msgid "Gateway domains" #~ msgstr "Gateway domæner" #~ msgid "(domains whose subdomains match Citadel hosts)" #~ msgstr "(domæner hvis underdomæner matcher Citadel værter" #~ msgid "(This server does not support task lists)" #~ msgstr "(Denne server supporterer ikke opgave lister)" #~ msgid "(This server does not support calendars)" #~ msgstr "(Denne server supporterer ikke kalendre)" #~ msgid "" #~ "This room is not configured to allow self-service subscribe/" #~ "unsubscribe requests." #~ msgstr "" #~ "Dette rum er ikke konfigureret til at tillade selvbetjent " #~ "abonement/sletabonemnet forspørgsler." #~ msgid "Click to enable." #~ msgstr "Klik for at aktivere." #~ msgid "Back to menu" #~ msgstr "Tilbage til menu" #~ msgid "Respond to meeting request" #~ msgstr "Svar på møde forspørgsel" #~ msgid "Update your calendar with this RSVP" #~ msgstr "Opdatér din kalender med denne S.U." #~ msgid "Public room" #~ msgstr "Offentlig rum" #~ msgid "Private - guess name" #~ msgstr "Privat - gæt navn" #~ msgid "Private - require password:" #~ msgstr "Privat - med adgangskode" #~ msgid "localhost" #~ msgstr "lokalvært" #~ msgid "gatewaydomain" #~ msgstr "gatewaydomæne" #~ msgid "rbl" #~ msgstr "rbl" #~ msgid "spamassassin" #~ msgstr "spamassassin" #~ msgid "[ close window ]" #~ msgstr "[ luk vindue ]" webcit-8.24-dfsg.orig/po/webcit/hu.po0000644000175000017500000033411712271477123017260 0ustar michaelmichael# WebCit # Hungarian localization # Copyright (C) 2009 Czakó Krisztián # This file is distributed under the revised BSD license # Czakó Krisztián , 2009. # msgid "" msgstr "" "Project-Id-Version: WebCit\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-03-20 01:03-0400\n" "PO-Revision-Date: 2010-11-12 23:46+0000\n" "Last-Translator: Czakó Krisztián \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2012-08-01 04:34+0000\n" "X-Generator: Launchpad (build 15719)\n" "Language: hu\n" #: ../../roomops.c:708 ../../roomops.c:1005 ../../sieve.c:364 msgid "Cancelled. Changes were not saved." msgstr "Megszakítva. Változások nem kerültek mentésre." #: ../../roomops.c:838 ../../sieve.c:417 msgid "Your changes have been saved." msgstr "A változtatásait mentettük." #: ../../roomops.c:881 #, c-format msgid "User '%s' kicked out of room '%s'." msgstr "%s felhasználó kirúgva a(z) %s szobából." #: ../../roomops.c:898 #, c-format msgid "User '%s' invited to room '%s'." msgstr "%s felhasználó meghívva a(z) %s szobába." #: ../../roomops.c:927 msgid "Cancelled. No new room was created." msgstr "Megszakítva. Nem lett új szoba létrehozva." #: ../../roomops.c:1187 msgid "Floor has been deleted." msgstr "Szint törölve." #: ../../roomops.c:1211 msgid "New floor has been created." msgstr "Új szint létrehozva." #: ../../roomops.c:1290 msgid "Room list view" msgstr "Szoba lista nézet" #: ../../roomops.c:1293 msgid "Show empty floors" msgstr "Mutasd az üres szinteket" #: ../../roomviews.c:50 msgid "Bulletin Board" msgstr "Hirdetőtábla" #: ../../roomviews.c:51 msgid "Mail Folder" msgstr "Levelek mappa" #: ../../roomviews.c:52 msgid "Address Book" msgstr "Címjegyzék" #: ../../roomviews.c:53 ../../static/t/iconbar.html:24 #: ../../static/t/iconbar/edit.html:55 msgid "Calendar" msgstr "Naptár" #: ../../roomviews.c:54 msgid "Task List" msgstr "Feladatlista" #: ../../roomviews.c:55 msgid "Notes List" msgstr "Jegyzetlista" #: ../../roomviews.c:56 msgid "Wiki" msgstr "Wiki" #: ../../roomviews.c:57 msgid "Calendar List" msgstr "Naptárlista" #: ../../roomviews.c:58 msgid "Journal" msgstr "Napló" #: ../../roomviews.c:59 #, fuzzy msgid "Drafts" msgstr "Dátum" #: ../../roomviews.c:60 msgid "Blog" msgstr "" #: ../../tasks.c:93 msgid "Completed?" msgstr "Befejezve?" #: ../../tasks.c:95 msgid "Name of task" msgstr "Feladat neve" #: ../../tasks.c:97 msgid "Date due" msgstr "Esedékesség dátuma" #: ../../tasks.c:99 msgid "Category" msgstr "Kategória" #: ../../tasks.c:101 msgid "Show All" msgstr "Összes megjelenítése" #: ../../tasks.c:223 msgid "Edit task" msgstr "Feladat szerkesztése" #: ../../tasks.c:242 ../../calendar.c:98 ../../calendar_view.c:298 #: ../../calendar_view.c:959 ../../calendar_view.c:1003 #: ../../calendar_view.c:1084 msgid "Summary:" msgstr "Összegzés:" #: ../../tasks.c:253 msgid "Start date:" msgstr "Kezdési dátum:" #: ../../tasks.c:261 ../../tasks.c:291 msgid "No date" msgstr "Nincs dátum" #: ../../tasks.c:265 ../../tasks.c:294 msgid "or" msgstr "vagy" #: ../../tasks.c:279 ../../tasks.c:308 msgid "Time associated" msgstr "Időponthoz kötött" #: ../../tasks.c:283 msgid "Due date:" msgstr "Esedékesség dátuma:" #: ../../tasks.c:312 msgid "Completed:" msgstr "Befejezve:" #: ../../tasks.c:323 msgid "Category:" msgstr "Kategória:" #: ../../tasks.c:333 ../../calendar.c:159 ../../static/t/files.html:12 msgid "Description:" msgstr "Leírás:" #: ../../tasks.c:351 ../../event.c:764 msgid "Save" msgstr "Mentés" #: ../../tasks.c:352 ../../event.c:765 ../../static/t/aide/inet/section.html:5 #: ../../static/t/view_blog/comment.html:12 #: ../../static/t/view_blog/post.html:15 ../../static/t/view_message.html:32 #: ../../static/t/navbar.html:116 ../../static/t/msg_listview.html:27 msgid "Delete" msgstr "Törlés" #: ../../tasks.c:353 ../../vcard_edit.c:1216 ../../paging.c:66 #: ../../event.c:767 ../../sysmsgs.c:69 ../../who.c:200 ../../auth.c:812 #: ../../static/t/edit_message.html:135 ../../static/t/confirmlogoff.html:4 msgid "Cancel" msgstr "Mégsem" #: ../../tasks.c:423 ../../calendar_view.c:1379 msgid "Untitled Task" msgstr "Névtelen feladat" #: ../../fmt_date.c:310 msgid "Time format" msgstr "Időformátum" #: ../../listsub.c:54 ../../static/t/listsub/display.html:5 msgid "List subscription" msgstr "Lista előfizetés" #: ../../listsub.c:67 ../../static/t/listsub/display.html:9 msgid "List subscribe/unsubscribe" msgstr "Lista előfizetés/lemondás" #: ../../listsub.c:87 ../../static/t/listsub/display.html:15 #: ../../static/t/listsub/display.html:34 msgid "Confirmation request sent" msgstr "Jóváhagyási kérelem elküldve" #: ../../listsub.c:89 #, c-format msgid "" "You are subscribing %s to the %s mailing list. The " "listserver has sent you an e-mail with one additional Web link for you to " "click on to confirm your subscription. This extra step is for your " "protection, as it prevents others from being able to subscribe you to lists " "without your consent.

    Please click on the link which is being e-" "mailed to you and your subscription will be confirmed.
    \n" msgstr "" "Ön előfizeti %s-t a %s levelező listára. A lista kiszolgáló " "egy további Web linket küldött önnek e-mailben, amire rá kell kattintania az " "előfizetés jóváhagyásához. Ez a kiegészítő lépés azért szükséges, hogy " "megakadályozzon másokat abban, hogy előfizessék önt az ön beleegyezése " "nélkül.

    Kérem kattintson rá a linkre, melyet e-mailben küldtünk " "önnek, hogy az előfizetését jóváhagyja.
    \n" #: ../../listsub.c:102 ../../static/t/listsub/display.html:24 msgid "Go back..." msgstr "Vissza..." #: ../../listsub.c:253 ../../listsub.c:291 ../../listsub.c:327 #: ../../listsub.c:334 msgid "You need to specify the mailinglist to subscribe to." msgstr "" #: ../../listsub.c:260 ../../listsub.c:298 #, fuzzy msgid "You need to specify the email address you'd like to subscribe with." msgstr "Kérem adja meg a felhasználó nevet, amit használni szeretne." #: ../../blogview_renderer.c:58 ../../blogview_renderer.c:74 #, fuzzy, c-format msgid "%d comments" msgstr "Parancs elküldése" #: ../../blogview_renderer.c:61 ../../blogview_renderer.c:77 msgid "permalink" msgstr "" #: ../../blogview_renderer.c:302 msgid "Newer posts" msgstr "újabb hozzászólás" #: ../../blogview_renderer.c:311 msgid "Older posts" msgstr "régebbi hozzászólás" #: ../../useredit.c:629 msgid "" "An error occurred while trying to create or edit this address book entry." msgstr "" #: ../../useredit.c:717 msgid "Changes were not saved." msgstr "A változások nem lettek mentve." #: ../../useredit.c:782 msgid "A new user has been created." msgstr "Az új felhasználó létrehozva." #: ../../useredit.c:786 msgid "" "You are attempting to create a new user from within Citadel while running in " "host based authentication mode. In this mode, you must create new users on " "the host system, not within Citadel." msgstr "" #: ../../bbsview_renderer.c:312 msgid "Go to page: " msgstr "" #: ../../bbsview_renderer.c:354 msgid "First" msgstr "" #: ../../bbsview_renderer.c:360 msgid "Last" msgstr "" #: ../../graphics.c:56 msgid "Graphics upload has been cancelled." msgstr "Grafika feltöltés megszakítva." #: ../../graphics.c:62 msgid "You didn't upload a file." msgstr "Nem töltött fel fájlt." #: ../../graphics.c:112 msgid "your photo" msgstr "az ön fényképe" #: ../../graphics.c:119 msgid "the icon for this room" msgstr "a szoba ikonja" #: ../../graphics.c:127 msgid "the Greetingpicture for the login prompt" msgstr "a belépési oldal üdvözlőképe" #: ../../graphics.c:135 msgid "the Logoff banner picture" msgstr "a kilépési reklám kép" #: ../../graphics.c:146 msgid "the icon for this floor" msgstr "az szint ikonja" #: ../../calendar_tools.c:100 msgid "Hour: " msgstr "Óra: " #: ../../calendar_tools.c:120 msgid "Minute: " msgstr "Perc: " #: ../../calendar_tools.c:191 msgid "(status unknown)" msgstr "(ismeretlen állapot)" #: ../../calendar_tools.c:207 msgid "(needs action)" msgstr "(cselekvés szükséges)" #: ../../calendar_tools.c:210 msgid "(accepted)" msgstr "(elfogadott)" #: ../../calendar_tools.c:213 msgid "(declined)" msgstr "(elutasított)" #: ../../calendar_tools.c:216 msgid "(tenative)" msgstr "(feltételes)" #: ../../calendar_tools.c:219 msgid "(delegated)" msgstr "(delegált)" #: ../../calendar_tools.c:222 msgid "(completed)" msgstr "(teljesített)" #: ../../calendar_tools.c:225 msgid "(in process)" msgstr "(folyamatban)" #: ../../calendar_tools.c:228 msgid "(none)" msgstr "(nincs)" #: ../../notes.c:343 msgid "Click on any note to edit it." msgstr "Kattintson bármely jegyzetre a szerkesztéshez." #: ../../vcard_edit.c:175 ../../vcard_edit.c:178 msgid "(no name)" msgstr "(nincs név)" #: ../../vcard_edit.c:443 msgid " (work)" msgstr " (munka)" #: ../../vcard_edit.c:445 msgid " (home)" msgstr " (otthon)" #: ../../vcard_edit.c:447 msgid " (cell)" msgstr " (mobil)" #: ../../vcard_edit.c:458 ../../vcard_edit.c:1120 msgid "Address:" msgstr "Cím:" #: ../../vcard_edit.c:526 msgid "Telephone:" msgstr "Telefon:" #: ../../vcard_edit.c:531 msgid "E-mail:" msgstr "E-mail:" #: ../../vcard_edit.c:779 msgid "This address book is empty." msgstr "Ez a címlista üres." #: ../../vcard_edit.c:793 msgid "An internal error has occurred." msgstr "Belső hiba történt." #: ../../vcard_edit.c:944 msgid "Error" msgstr "Hiba" #: ../../vcard_edit.c:1048 msgid "Edit contact information" msgstr "Kapcsolat információ szerkesztése" #: ../../vcard_edit.c:1068 msgid "Prefix" msgstr "Megszólítás" #: ../../vcard_edit.c:1068 msgid "First Name" msgstr "Keresztnév" #: ../../vcard_edit.c:1068 msgid "Middle Name" msgstr "Középső név" #: ../../vcard_edit.c:1068 msgid "Last Name" msgstr "Vezetéknév" #: ../../vcard_edit.c:1068 msgid "Suffix" msgstr "Utótag" #: ../../vcard_edit.c:1089 msgid "Display name:" msgstr "Megjelenített név:" #: ../../vcard_edit.c:1096 msgid "Title:" msgstr "Megszólítás:" #: ../../vcard_edit.c:1103 msgid "Organization:" msgstr "Szervezet:" #: ../../vcard_edit.c:1114 msgid "PO box:" msgstr "Postafiók:" #: ../../vcard_edit.c:1130 msgid "City:" msgstr "Város:" #: ../../vcard_edit.c:1136 msgid "State:" msgstr "Megye:" #: ../../vcard_edit.c:1142 msgid "ZIP code:" msgstr "Irányítószám:" #: ../../vcard_edit.c:1148 msgid "Country:" msgstr "Ország:" #: ../../vcard_edit.c:1158 msgid "Home telephone:" msgstr "Otthoni telefon:" #: ../../vcard_edit.c:1164 msgid "Work telephone:" msgstr "Munkahelyi telefon:" #: ../../vcard_edit.c:1170 msgid "Mobile telephone:" msgstr "Mobiltelefon:" #: ../../vcard_edit.c:1176 msgid "Fax number:" msgstr "Fax szám:" #: ../../vcard_edit.c:1187 msgid "Primary Internet e-mail address" msgstr "Elsődleges Internet e-mail cím" #: ../../vcard_edit.c:1194 msgid "Internet e-mail aliases" msgstr "További Internet e-mail címek" #: ../../vcard_edit.c:1215 ../../sysmsgs.c:67 msgid "Save changes" msgstr "Változások mentése" #: ../../vcard_edit.c:1261 msgid "Unable to enter the room to save your message" msgstr "" #: ../../vcard_edit.c:1265 msgid "Aborting." msgstr "" #: ../../vcard_edit.c:1297 ../../vcard_edit.c:1341 ../../auth.c:367 #: ../../auth.c:397 msgid "An error has occurred." msgstr "Egy hiba lépett fel." #: ../../vcard_edit.c:1399 msgid "Could Not decode vcard photo\n" msgstr "Nem tudom értelmezni a névjegy fényképet\n" #: ../../preferences.c:880 msgid "Cancelled. No settings were changed." msgstr "Megszakítva. A beállítások nem változtak." #: ../../preferences.c:1092 msgid "Make this my start page" msgstr "Legyen ez a kezdőlap." #: ../../preferences.c:1130 msgid "This isn't allowed to become the start page." msgstr "" #: ../../preferences.c:1132 msgid "You no longer have a start page selected." msgstr "Önnek mostantól nincs kezdőlapja." #: ../../preferences.c:1182 msgid "Prefered startpage" msgstr "" #: ../../calendar.c:76 msgid "Meeting invitation" msgstr "Meghívó megbeszélésre" #: ../../calendar.c:79 msgid "Attendee's reply to your invitation" msgstr "Partner válasza az ön meghívására" #: ../../calendar.c:82 msgid "Published event" msgstr "Közzétett esemény" #: ../../calendar.c:85 msgid "This is an unknown type of calendar item." msgstr "Ez egy ismeretlen típusú naptár bejegyzés." #: ../../calendar.c:107 ../../calendar_view.c:306 ../../calendar_view.c:964 #: ../../calendar_view.c:1008 ../../calendar_view.c:1089 msgid "Location:" msgstr "Hely:" #: ../../calendar.c:132 ../../calendar_view.c:351 ../../calendar_view.c:970 msgid "Date:" msgstr "Dátum:" #: ../../calendar.c:139 ../../calendar_view.c:373 ../../calendar_view.c:1013 #: ../../calendar_view.c:1099 msgid "Starting date/time:" msgstr "Kezdés dátuma/ideje:" #: ../../calendar.c:150 ../../calendar_view.c:376 ../../calendar_view.c:1015 #: ../../calendar_view.c:1101 msgid "Ending date/time:" msgstr "Befejezés dátuma/ideje:" #: ../../calendar.c:168 ../../event.c:90 msgid "Recurrence" msgstr "Ismétlődés" #: ../../calendar.c:169 ../../event.c:505 msgid "This is a recurring event" msgstr "Ez egy ismétlődő esemény" #: ../../calendar.c:178 msgid "Attendee:" msgstr "Résztvevő:" #: ../../calendar.c:218 #, c-format msgid "This is an update of '%s' which is already in your calendar." msgstr "Az a(z) '%s' frissítése, mely már létezik az ön naptárában." #: ../../calendar.c:222 #, c-format msgid "This event would conflict with '%s' which is already in your calendar." msgstr "" "Ez az esemény ütközik a(z) '%s' eseménnyel, mely már létezik az ön " "naptárában." #: ../../calendar.c:227 msgid "Update:" msgstr "Frissítés:" #: ../../calendar.c:228 msgid "CONFLICT:" msgstr "ÜTKÖZÉS:" #: ../../calendar.c:251 msgid "How would you like to respond to this invitation?" msgstr "Hogyan szeretne reagálni erre a meghívásra?" #: ../../calendar.c:252 msgid "Accept" msgstr "Elfogad" #: ../../calendar.c:253 msgid "Tentative" msgstr "Próbaképpen" #: ../../calendar.c:254 msgid "Decline" msgstr "Visszautasít" #: ../../calendar.c:271 msgid "Click Update to accept this reply and update your calendar." msgstr "" "A válasz elfogadásához és a naptár frissítéséhez kattintson a Frissítésre" #: ../../calendar.c:272 msgid "Update" msgstr "Frissítés" #: ../../calendar.c:273 msgid "Ignore" msgstr "Mellőzés" #: ../../calendar.c:295 msgid "There was an error parsing this calendar item." msgstr "Hiba történ a naptár bejegyzés értelmezése közben." #: ../../calendar.c:328 msgid "" "You have accepted this meeting invitation. It has been entered into your " "calendar." msgstr "Ön elfogadta ezt a megbeszélés meghívót. Bekerült az ön naptárába." #: ../../calendar.c:332 msgid "" "You have tentatively accepted this meeting invitation. It has been " "'pencilled in' to your calendar." msgstr "" "Ön próbaképpen elfogadta ezt a megbeszélés meghívót. 'Ceruzával' került be " "az ön naptárába." #: ../../calendar.c:336 msgid "" "You have declined this meeting invitation. It has not been entered " "into your calendar." msgstr "" "Visszautasította ezt a megbeszélés meghívót. Ezért nem került be az " "ön naptárába." #: ../../calendar.c:341 msgid "A reply has been sent to the meeting organizer." msgstr "Válasz ment a megbeszélés szervezőjének." #. / Translators: RSVP aka Répondez s'il-vous-plaît Is the term #. / that the recipient of an ical-invitation should please #. / answer this request. #: ../../calendar.c:376 msgid "Your calendar has been updated to reflect this RSVP." msgstr "Az ön naptára frissült, hogy reagáljon az RSVP-re." #: ../../calendar.c:378 msgid "" "You have chosen to ignore this RSVP. Your calendar has not been " "updated." msgstr "" "Figyelmen kívül hagyta ezt az RSVP-t. Az ön naptára nem frissült." #: ../../calendar.c:932 msgid "Calendar day view begins at:" msgstr "Naptár napi nézet kezdődik:" #: ../../calendar.c:933 msgid "Calendar day view ends at:" msgstr "Naptár napi nézet végződik:" #: ../../calendar.c:934 msgid "Week starts on:" msgstr "Hét első napja:" #: ../../paging.c:35 msgid "Send instant message" msgstr "Azonnali üzenet küldése" #: ../../paging.c:43 msgid "Send an instant message to: " msgstr "Azonnali üzenet küldése ide: " #: ../../paging.c:57 msgid "Enter message text:" msgstr "Írja be az üzenet szövegét:" #: ../../paging.c:65 ../../static/t/edit_message.html:109 msgid "Send message" msgstr "Üzenet küldése" #: ../../paging.c:84 msgid "Message was not sent." msgstr "Üzenet nem lett elküldve." #: ../../paging.c:95 msgid "Message has been sent to " msgstr "Az üzenet elküldésre került ide: " #: ../../iconbar.c:328 msgid "Iconbar Setting" msgstr "" #. #. * Set to 'unknown' right from the beginning. Unless we learn #. * something else, that's what we'll go with. #. #: ../../availability.c:148 msgid "availability unknown" msgstr "elérhetőség ismeretlen" #: ../../availability.c:169 msgid "free" msgstr "Szabad" #: ../../availability.c:179 msgid "BUSY" msgstr "ELFOGLALT" #: ../../serv_func.c:193 msgid "" "This server is already serving its maximum number of users and cannot accept " "any additional logins at this time. Please try again later or contact your " "system administrator." msgstr "" #: ../../serv_func.c:198 ../../serv_func.c:227 msgid "Received unexpected answer from Citadel server; bailing out." msgstr "" #: ../../serv_func.c:236 #, c-format msgid "" "You are connected to a Citadel server running Citadel %d.%02d. \n" "In order to run this version of WebCit you must also have Citadel %d.%02d or " "newer.\n" "\n" "\n" msgstr "" #: ../../event.c:70 msgid "seconds" msgstr "másodperc" #: ../../event.c:71 msgid "minutes" msgstr "perc" #: ../../event.c:72 msgid "hours" msgstr "óra" #: ../../event.c:73 msgid "days" msgstr "nap" #: ../../event.c:74 msgid "weeks" msgstr "hét" #: ../../event.c:75 msgid "months" msgstr "hónap" #: ../../event.c:76 msgid "years" msgstr "év" #: ../../event.c:77 msgid "never" msgstr "soha" #: ../../event.c:81 msgid "first" msgstr "első" #: ../../event.c:82 msgid "second" msgstr "második" #: ../../event.c:83 msgid "third" msgstr "harmadik" #: ../../event.c:84 msgid "fourth" msgstr "negyedik" #: ../../event.c:85 msgid "fifth" msgstr "ötödik" #: ../../event.c:88 msgid "Event" msgstr "Esemény" #: ../../event.c:89 ../../event.c:437 ../../event.c:449 msgid "Attendees" msgstr "Résztvevők:" #: ../../event.c:167 msgid "Add or edit an event" msgstr "Esemény hozzáadása vagy szerkesztése" #: ../../event.c:206 ../../static/t/iconbar.html:13 #: ../../static/t/iconbar/edit.html:29 msgid "Summary" msgstr "Összegzés" #: ../../event.c:217 msgid "Location" msgstr "Hely" #: ../../event.c:228 ../../calendar_view.c:760 msgid "Start" msgstr "Kezdet" #: ../../event.c:271 ../../calendar_view.c:957 ../../calendar_view.c:986 msgid "All day event" msgstr "Egész napos esemény" #: ../../event.c:277 ../../calendar_view.c:761 msgid "End" msgstr "Befejezés" #: ../../event.c:327 ../../static/t/iconbar.html:34 #: ../../static/t/iconbar/edit.html:49 msgid "Notes" msgstr "Jegyzetek" #: ../../event.c:369 msgid "Organizer" msgstr "Szervező" #: ../../event.c:374 msgid "(you are the organizer)" msgstr "(ön a szervező)" #: ../../event.c:392 msgid "Show time as:" msgstr "Idő mutatása a következőképpen:" #: ../../event.c:415 msgid "Free" msgstr "Szabad" #: ../../event.c:423 msgid "Busy" msgstr "Elfoglalt" #: ../../event.c:440 msgid "(One per line)" msgstr "(Soronként egy)" #: ../../event.c:450 ../../static/t/edit_message.html:143 #: ../../static/t/iconbar.html:29 ../../static/t/iconbar/edit.html:42 msgid "Contacts" msgstr "Kapcsolatok" #: ../../event.c:513 msgid "Recurrence rule" msgstr "Ismétlődési szabály" #: ../../event.c:517 msgid "Repeats every" msgstr "Ismétlődik minden" #. begin 'weekday_selector' div #: ../../event.c:535 msgid "on these weekdays:" msgstr "a következő munkanapokon:" #: ../../event.c:593 #, c-format msgid "on day %s%d%s of the month" msgstr "a hónap %s%d%s napján" #: ../../event.c:602 ../../event.c:664 msgid "on the " msgstr "a " #: ../../event.c:626 msgid "of the month" msgstr "a hónapnak" #: ../../event.c:655 msgid "every " msgstr "minden " #: ../../event.c:656 msgid "year on this date" msgstr "az év ezen napján" #: ../../event.c:688 ../../static/t/msg_listselector_bottom.html:7 #: ../../static/t/msg_listselector_top.html:7 msgid "of" msgstr "az összesen" #: ../../event.c:712 msgid "Recurrence range" msgstr "Ismétlődési időszak" #: ../../event.c:720 msgid "No ending date" msgstr "Nincs végső dátum" #: ../../event.c:727 msgid "Repeat this event" msgstr "Ismételje ezt az eseményt" #: ../../event.c:730 msgid "times" msgstr "ennyiszer" #: ../../event.c:738 msgid "Repeat this event until " msgstr "Ismételje ezt az esemény eddig: " #: ../../event.c:766 msgid "Check attendee availability" msgstr "Résztvevők elérhetőségének ellenőrzése" #: ../../event.c:858 ../../calendar_view.c:272 ../../calendar_view.c:468 #: ../../calendar_view.c:937 msgid "Untitled Event" msgstr "Névtelen esemény" #: ../../sysmsgs.c:52 #, c-format msgid "Edit %s" msgstr "%s szerkesztése" #: ../../sysmsgs.c:55 #, c-format msgid "" "Enter %s below. Text is formatted to the reader's browser. A newline is " "forced by preceding the next line by a blank." msgstr "" #: ../../sysmsgs.c:89 #, c-format msgid "Cancelled. %s was not saved." msgstr "Megszakítva. %s nincs mentve." #: ../../sysmsgs.c:109 #, fuzzy msgid " has been saved." msgstr "%s elmentve." #: ../../sysmsgs.c:116 ../../sysmsgs.c:117 msgid "Room info" msgstr "Szoba infó" #: ../../sysmsgs.c:122 ../../sysmsgs.c:124 msgid "Your bio" msgstr "" #: ../../calendar_view.c:297 ../../calendar_view.c:958 #: ../../calendar_view.c:1002 ../../calendar_view.c:1083 #: ../../static/t/sieve/display_one.html:20 msgid "From" msgstr "Kezdet:" #: ../../calendar_view.c:355 ../../calendar_view.c:974 msgid "Starting date:" msgstr "Kezdés dátuma:" #: ../../calendar_view.c:361 ../../calendar_view.c:976 msgid "Ending date:" msgstr "Befejezés dátuma:" #: ../../calendar_view.c:369 ../../calendar_view.c:1095 msgid "Date/time:" msgstr "Dátum/idő:" #: ../../calendar_view.c:386 ../../calendar_view.c:980 #: ../../calendar_view.c:1018 ../../calendar_view.c:1105 #: ../../static/t/room/edit/tab_share.html:32 msgid "Notes:" msgstr "Jegyzetek:" #: ../../calendar_view.c:585 ../../calendar_view.c:721 msgid "previous" msgstr "" #: ../../calendar_view.c:597 ../../calendar_view.c:733 #: ../../calendar_view.c:1308 msgid "next" msgstr "" #: ../../calendar_view.c:756 msgid "Week" msgstr "Hét" #: ../../calendar_view.c:758 msgid "Hours" msgstr "Óra" #: ../../calendar_view.c:759 ../../static/t/sieve/display_one.html:22 #: ../../static/t/msg_listview.html:9 msgid "Subject" msgstr "Tárgy" #: ../../calendar_view.c:1001 ../../calendar_view.c:1024 msgid "Ongoing event" msgstr "Futó esemény" #: ../../messages.c:70 msgid "ERROR:" msgstr "HIBA:" #: ../../messages.c:88 msgid "Empty message" msgstr "" #: ../../messages.c:1010 msgid "Cancelled. Message was not posted." msgstr "Megszakítva. Az üzenet nem lett beküldve." #: ../../messages.c:1013 msgid "Automatically cancelled because you have already saved this message." msgstr "Automatikusan megszakítva, mert ön már elmentette ezt az üzenetet." #: ../../messages.c:1037 msgid "Saved to Drafts failed: " msgstr "" #: ../../messages.c:1102 msgid "Refusing to post empty message.\n" msgstr "" #: ../../messages.c:1128 msgid "Message has been saved to Drafts.\n" msgstr "" #: ../../messages.c:1137 msgid "Message has been sent.\n" msgstr "Üzenet elküldve.\n" #: ../../messages.c:1140 msgid "Message has been posted.\n" msgstr "Üzenet postázva.\n" #: ../../messages.c:1679 msgid "The message was not moved." msgstr "Az üzenetet nem mozgattuk." #: ../../messages.c:1719 #, c-format msgid "An error occurred while retrieving this part: %s/%s\n" msgstr "Hiba történt, miközben beszereztem ezt a részt: %s/%s\n" #: ../../messages.c:1796 #, c-format msgid "An error occurred while retrieving this part: %s\n" msgstr "Hiba történt, miközben beszereztem ezt a részt: %s\n" #: ../../messages.c:1956 msgid "Attach signature to email messages?" msgstr "Csatol aláírást az email üzenetekhez?" #: ../../messages.c:1959 msgid "Use this signature:" msgstr "Használja ezt az aláírást:" #: ../../messages.c:1961 msgid "Default character set for email headers:" msgstr "Alapértelmezett betűkészlet a levél fejléceihez:" #: ../../messages.c:1964 msgid "Preferred email address" msgstr "Kedvelt email cím" #: ../../messages.c:1966 msgid "Preferred display name for email messages" msgstr "Kedvelt megjelenített név az email üzenetekhez" #: ../../messages.c:1970 msgid "Preferred display name for bulletin board posts" msgstr "Kedvelt megjelenített név a hirdetőtábla üzenetkehez" #: ../../messages.c:1973 msgid "Mailbox view mode" msgstr "Postafiók megjelenítési mód" #: ../../inetconf.c:110 ../../inetconf.c:119 ../../inetconf.c:133 #: ../../inetconf.c:159 ../../netconf.c:156 ../../netconf.c:183 #: ../../netconf.c:191 ../../netconf.c:239 ../../netconf.c:247 msgid "Invalid Parameter" msgstr "Érvénytelen paraméter" #: ../../inetconf.c:126 #, fuzzy msgid " has been deleted." msgstr "%s törölve." #. added status message #: ../../inetconf.c:144 msgid " added." msgstr "" #: ../../who.c:154 msgid "Edit your session display" msgstr "" #: ../../who.c:158 msgid "" "This screen allows you to change the way your session appears in the 'Who is " "online' listing. To turn off any 'fake' name you've previously set, simply " "click the appropriate 'change' button without typing anything in the " "corresponding box. " msgstr "" #: ../../who.c:171 msgid "Room name:" msgstr "Szoba száma:" #: ../../who.c:176 msgid "Change room name" msgstr "Szoba nevének megváltoztatása" #: ../../who.c:180 msgid "Host name:" msgstr "Gépnév:" #: ../../who.c:185 msgid "Change host name" msgstr "Gép nevének megváltoztatása" #: ../../who.c:190 ../../static/t/aide/edituser/detailview.html:20 #: ../../static/t/openid_manual_create.html:9 #: ../../static/t/get_logged_in.html:57 ../../static/t/get_logged_in.html:72 msgid "User name:" msgstr "Felhasználónév:" #: ../../who.c:195 msgid "Change user name" msgstr "Felhasználó nevének megváltoztatása" #: ../../siteconfig.c:46 ../../siteconfig.c:64 ../../roomlist.c:44 #: ../../roomlist.c:394 ../../static/t/room/edit/tab_expire.html:72 #: ../../static/t/room/edit/tab_config.html:149 #: ../../static/t/room/edit/tab_access.html:42 msgid "Higher access is required to access this function." msgstr "Több hozzáférésre van szükség ehhez a funkcióhoz." #: ../../siteconfig.c:256 msgid "WARNING: Failed to parse Server Config; do you run a to new citserver?" msgstr "" #: ../../siteconfig.c:319 msgid "Your system configuration has been updated." msgstr "Az ön rendszerének beállítása frissítve" #: ../../wiki.c:69 ../../wiki.c:162 ../../wiki.c:282 #, c-format msgid "There is no room called '%s'." msgstr "Nincs '%s' nevű szoba." #: ../../wiki.c:76 #, c-format msgid "'%s' is not a Wiki room." msgstr "'%s' nem Wiki szoba." #: ../../wiki.c:110 #, c-format msgid "There is no page called '%s' here." msgstr "Nincs '%s' nevű oldal itt." #: ../../wiki.c:112 msgid "" "Select the 'Edit this page' link in the room banner if you would like to " "create this page." msgstr "" #: ../../wiki.c:181 ../../static/t/msg_listview.html:11 msgid "Date" msgstr "Dátum" #: ../../wiki.c:182 msgid "Author" msgstr "" #: ../../wiki.c:209 ../../wiki.c:218 msgid "(show)" msgstr "" #: ../../wiki.c:211 ../../static/t/navbar.html:145 msgid "Current version" msgstr "" #: ../../wiki.c:223 msgid "(revert)" msgstr "" #: ../../wiki.c:300 msgid "Page title" msgstr "" #: ../../webcit.c:316 msgid "Authorization Required" msgstr "Azonosítás szükséges" #: ../../webcit.c:324 #, c-format msgid "" "The resource you requested requires a valid username and password. You could " "not be logged in: %s\n" msgstr "" #: ../../webcit.c:647 ../../auth.c:526 msgid "" "This program was unable to connect or stay connected to the Citadel server. " "Please report this problem to your system administrator." msgstr "" "A program képtelen volt kapcsolódni vagy a kapcsolatot fenntartani a Citadel " "kiszolgálóval. Kérjük jelezze a problémát a rendszergazdának." #: ../../webcit.c:654 ../../auth.c:532 msgid "Read More..." msgstr "További információk" #: ../../smtpqueue.c:134 ../../static/t/aide/ignetconf/section.html:5 #: ../../static/t/view_mailq/message.html:2 msgid "(Delete)" msgstr "(Töröl)" #: ../../smtpqueue.c:334 msgid "First Attempt pending" msgstr "" #: ../../roomlist.c:99 msgid "My Folders" msgstr "" #: ../../downloads.c:289 #, c-format msgid "An error occurred while retrieving this file: %s\n" msgstr "Hiba történt a(z) %s fájl beszerzése közben.\n" #: ../../roomtokens.c:572 msgid "file" msgstr "fájl" #: ../../roomtokens.c:574 msgid "files" msgstr "fájlok" #: ../../summary.c:128 msgid "(None)" msgstr "(Nincs)" #: ../../summary.c:184 msgid "(Nothing)" msgstr "(Semmi)" #: ../../msg_renderers.c:579 ../../static/t/who/bio.html:15 msgid "edit" msgstr "szerkeszt" #: ../../msg_renderers.c:1119 msgid "I don't know how to display " msgstr "Nem tudom hogyan jelenítsem meg. " #: ../../msg_renderers.c:1353 msgid "(no subject)" msgstr "(nincs tárgy)" #: ../../addressbook_popup.c:186 msgid "Add" msgstr "Hozzáadás" #. an erased user #: ../../auth.c:30 ../../static/t/aide/edituser/detailview.html:43 #: ../../static/t/aide/siteconfig/tab_access.html:40 #: ../../static/t/aide/siteconfig/tab_access.html:51 msgid "Deleted" msgstr "Törölt" #. a new user #: ../../auth.c:33 ../../static/t/aide/edituser/detailview.html:44 #: ../../static/t/aide/siteconfig/tab_access.html:41 #: ../../static/t/aide/siteconfig/tab_access.html:52 #: ../../static/t/get_logged_in.html:79 msgid "New User" msgstr "Új felhasználó" #. a trouble maker #: ../../auth.c:36 ../../static/t/aide/edituser/detailview.html:45 #: ../../static/t/aide/siteconfig/tab_access.html:42 #: ../../static/t/aide/siteconfig/tab_access.html:53 msgid "Problem User" msgstr "Problémás felhasználó" #. user with normal privileges #: ../../auth.c:39 ../../static/t/aide/edituser/detailview.html:46 #: ../../static/t/aide/siteconfig/tab_access.html:43 #: ../../static/t/aide/siteconfig/tab_access.html:54 msgid "Local User" msgstr "Helyi felhasználó" #. a user that may access network resources #: ../../auth.c:42 ../../static/t/aide/edituser/detailview.html:47 #: ../../static/t/aide/siteconfig/tab_access.html:44 #: ../../static/t/aide/siteconfig/tab_access.html:55 msgid "Network User" msgstr "Hálózati felhasználó" #. a moderator #: ../../auth.c:45 ../../static/t/aide/edituser/detailview.html:48 #: ../../static/t/aide/siteconfig/tab_access.html:45 #: ../../static/t/aide/siteconfig/tab_access.html:56 msgid "Preferred User" msgstr "Kedvelt felhasználó" #. chief #: ../../auth.c:48 ../../static/t/aide/edituser/detailview.html:49 #: ../../static/t/aide/siteconfig/tab_access.html:46 #: ../../static/t/aide/siteconfig/tab_access.html:57 msgid "Admin" msgstr "" #: ../../auth.c:513 ../../static/t/iconbar.html:80 #: ../../static/t/confirmlogoff.html:3 #: ../../static/t/menu/basic_commands.html:19 msgid "Log off" msgstr "Kilépés" #: ../../auth.c:537 msgid "Log in again" msgstr "Lépjen be újra" #: ../../auth.c:585 ../../static/t/aide/usermanagement.html:3 msgid "Validate new users" msgstr "Új felhasználók érvényesítése" #: ../../auth.c:605 msgid "No users require validation at this time." msgstr "Nincs érvényesítésre váró felhasználó." #: ../../auth.c:655 msgid "very weak" msgstr "nagyon gyenge" #: ../../auth.c:658 msgid "weak" msgstr "gyenge" #: ../../auth.c:661 msgid "ok" msgstr "OK" #: ../../auth.c:665 msgid "strong" msgstr "erős" #: ../../auth.c:683 #, c-format msgid "Current access level: %d (%s)\n" msgstr "Jelenlegi elérési szint: %d (%s)\n" #: ../../auth.c:691 msgid "Select access level for this user:" msgstr "Válassza ki ezen felhasználó hozzáférési szintjét:" #: ../../auth.c:776 ../../static/t/menu/your_info.html:4 msgid "Change your password" msgstr "Változtassa meg a jelszavát" #: ../../auth.c:800 msgid "Enter new password:" msgstr "Írja be az új jelszót:" #: ../../auth.c:804 msgid "Enter it again to confirm:" msgstr "Ellenőrzésként írja be ismét:" #: ../../auth.c:810 msgid "Change password" msgstr "Jelszó megváltoztatása" #: ../../auth.c:830 msgid "Cancelled. Password was not changed." msgstr "Megszakítva. A jelszó nem változott." #: ../../auth.c:839 msgid "They don't match. Password was not changed." msgstr "Nem egyeznek. A jelszó nem változott." #: ../../auth.c:845 msgid "Blank passwords are not allowed." msgstr "Az üres jelszavak nem engedélyezettek." #: ../../openid.c:34 msgid "Manage Account/OpenID Associations" msgstr "Azonosító/OpenID hozzárendelések kezelése" #: ../../openid.c:52 msgid "Do you really want to delete this OpenID?" msgstr "Tényleg törölni kívánja ezt az OpenID-t?" #: ../../openid.c:53 msgid "(delete)" msgstr "(törlés)" #: ../../openid.c:61 msgid "Add an OpenID: " msgstr "OpenID hozzáadása: " #: ../../openid.c:64 msgid "Attach" msgstr "Hozzárendel" #: ../../openid.c:68 #, c-format msgid "%s does not permit authentication via OpenID." msgstr "%s nem engedélyezi a hitelesítést OpenID-val." #: ../../html2html.c:136 #, c-format msgid "realloc() error! couldn't get %d bytes: %s" msgstr "realloc() hiba! nem kaptam meg %d byte-t: %s" #: ../../static/t/viewomatic.html:4 msgid "View as:" msgstr "Mutasd mint:" #: ../../static/t/sieve/list.html:32 ../../static/t/sieve/none.html:4 #: ../../static/t/menu/your_info.html:7 msgid "View/edit server-side mail filters" msgstr "" #: ../../static/t/sieve/list.html:41 msgid "When new mail arrives: " msgstr "Ha új email érkezik: " #: ../../static/t/sieve/list.html:43 msgid "Leave it in my inbox without filtering" msgstr "Hagyd a bejövő levelek között szűrés nélkül" #: ../../static/t/sieve/list.html:44 msgid "Filter it according to rules selected below" msgstr "Szűrd az alábbi feltételek szerint" #: ../../static/t/sieve/list.html:45 msgid "Filter it through a manually edited script (advanced users only)" msgstr "Szűrd a kézzel szerkesztett szkriptekkel (csak haladó felhasználóknak)" #: ../../static/t/sieve/list.html:52 msgid "Your incoming mail will not be filtered through any scripts." msgstr "A beérkező levelei nem lesznek szűrve egyetlen szkripttel sem." #: ../../static/t/sieve/list.html:64 msgid "Add rule" msgstr "Szabály hozzáadása" #: ../../static/t/sieve/list.html:71 msgid "The currently active script is: " msgstr "A jelenleg aktív szkript: " #: ../../static/t/sieve/list.html:76 ../../static/t/sieve/add.html:3 msgid "Add or delete scripts" msgstr "Szkript hozzáadása vagy törlése" #: ../../static/t/sieve/display_one.html:16 msgid "If" msgstr "Ha" #: ../../static/t/sieve/display_one.html:21 msgid "To or Cc" msgstr "Címzett vagy másolat" #: ../../static/t/sieve/display_one.html:23 msgid "Reply-to" msgstr "Válaszcím" #: ../../static/t/sieve/display_one.html:24 #: ../../static/t/msg_listview.html:10 #: ../../static/t/view_mailq/header.html:27 msgid "Sender" msgstr "Küldő" #: ../../static/t/sieve/display_one.html:25 msgid "Resent-From" msgstr "Újraküldő" #: ../../static/t/sieve/display_one.html:26 msgid "Resent-To" msgstr "Újraküldés címzettje" #: ../../static/t/sieve/display_one.html:27 msgid "Envelope From" msgstr "Boríték feladó" #: ../../static/t/sieve/display_one.html:28 msgid "Envelope To" msgstr "Boríték címzett" #: ../../static/t/sieve/display_one.html:29 msgid "X-Mailer" msgstr "Levelezőprogram" #: ../../static/t/sieve/display_one.html:30 msgid "X-Spam-Flag" msgstr "SPAM jelzés" #: ../../static/t/sieve/display_one.html:31 msgid "X-Spam-Status" msgstr "SPAM állapot" #: ../../static/t/sieve/display_one.html:32 msgid "List-ID" msgstr "Listaazonosító" #: ../../static/t/sieve/display_one.html:33 msgid "Message size" msgstr "Levél mérete" #: ../../static/t/sieve/display_one.html:34 #: ../../static/t/select_messageindex_all.html:1 msgid "All" msgstr "Minden" #: ../../static/t/sieve/display_one.html:41 msgid "contains" msgstr "tartalmazza" #: ../../static/t/sieve/display_one.html:42 msgid "does not contain" msgstr "nem tartalmazza" #: ../../static/t/sieve/display_one.html:43 msgid "is" msgstr "pontosan az, hogy" #: ../../static/t/sieve/display_one.html:44 msgid "is not" msgstr "nem az, hogy" #: ../../static/t/sieve/display_one.html:45 msgid "matches" msgstr "egyezik" #: ../../static/t/sieve/display_one.html:46 msgid "does not match" msgstr "nem egyezik" #: ../../static/t/sieve/display_one.html:52 msgid "(All messages)" msgstr "(Összes üzenet)" #: ../../static/t/sieve/display_one.html:56 msgid "is larger than" msgstr "nagyobb, mint" #: ../../static/t/sieve/display_one.html:57 msgid "is smaller than" msgstr "kisebb, mint" #: ../../static/t/sieve/display_one.html:59 #, fuzzy msgid "bytes" msgstr "év" #: ../../static/t/sieve/display_one.html:65 msgid "Keep" msgstr "Megtart" #: ../../static/t/sieve/display_one.html:66 msgid "Discard silently" msgstr "Csendben eldob" #: ../../static/t/sieve/display_one.html:67 msgid "Reject" msgstr "Visszautasít" #: ../../static/t/sieve/display_one.html:68 msgid "Move message to" msgstr "Levél mozgatása ide:" #: ../../static/t/sieve/display_one.html:69 msgid "Forward to" msgstr "Továbbítás ide:" #: ../../static/t/sieve/display_one.html:70 msgid "Vacation" msgstr "Vakáció" #: ../../static/t/sieve/display_one.html:82 msgid "Message:" msgstr "Üzenet:" #: ../../static/t/sieve/display_one.html:90 msgid "and then" msgstr "és utána" #: ../../static/t/sieve/display_one.html:93 msgid "continue processing" msgstr "feldolgozás folytatása" #: ../../static/t/sieve/display_one.html:94 msgid "stop" msgstr "állj" #: ../../static/t/sieve/none.html:9 msgid "" "This installation of Citadel was built without support for server-side mail " "filtering.
    Please contact your system administrator if you require this " "feature.
    " msgstr "" #: ../../static/t/sieve/add.html:9 msgid "Add a new script" msgstr "Új szkript hozzáadása" #: ../../static/t/sieve/add.html:10 msgid "" "To create a new script, enter the desired script name in the box below and " "click 'Create'." msgstr "" #: ../../static/t/sieve/add.html:14 msgid "Script name: " msgstr "Szkript neve: " #: ../../static/t/sieve/add.html:18 msgid "Edit scripts" msgstr "Szkriptek szerkesztése" #: ../../static/t/sieve/add.html:20 msgid "Return to the script editing screen" msgstr "" #: ../../static/t/sieve/add.html:23 msgid "Delete scripts" msgstr "Szkriptek törlése" #: ../../static/t/sieve/add.html:24 msgid "" "To delete an existing script, select the script name from the list and click " "'Delete'." msgstr "" #: ../../static/t/msg/confirm_move.html:4 msgid "Confirm move of message" msgstr "Üzenet mozgatás jóváhagyása" #: ../../static/t/msg/confirm_move.html:12 msgid "Move this message to:" msgstr "Üzenet mozgatása ide:" #: ../../static/t/login.html:5 msgid "powered by" msgstr "működteti a" #: ../../static/t/login.html:15 ../../static/t/iconbar.html:88 #: ../../static/t/get_logged_in.html:64 ../../static/t/get_logged_in.html:88 #: ../../static/t/get_logged_in.html:93 ../../static/t/get_logged_in.html:98 #: ../../static/t/get_logged_in.html:107 msgid "Log in" msgstr "Utolsó bejelentkezés" #: ../../static/t/trailing.html:14 msgid "" "WARNING: You have JavaScript disabled in your web browser. Many functions " "of this system will not work properly." msgstr "" #: ../../static/t/view_submessage.html:4 #: ../../static/t/view_message/replyquote.html:3 #: ../../static/t/view_message/replyquote.html:7 #: ../../static/t/view_message/print.html:8 ../../static/t/view_message.html:7 msgid "from " msgstr "ettől: " #: ../../static/t/searchomatic.html:4 msgid "Search: " msgstr "Keres: " #: ../../static/t/listsub/display.html:16 msgid "You are subscribing " msgstr "" #: ../../static/t/listsub/display.html:17 #, fuzzy msgid " to the " msgstr "a " #: ../../static/t/listsub/display.html:18 #, fuzzy msgid " mailing list." msgstr "Levelezőlista szolgáltatás" #: ../../static/t/listsub/display.html:19 msgid "" "The listserver has sent you an e-mail with one additional Web link for you " "to click on to confirm your subscription." msgstr "" #: ../../static/t/listsub/display.html:20 msgid "" "This extra step is for your protection, as it prevents others from being " "able to subscribe you to lists without your consent." msgstr "" #: ../../static/t/listsub/display.html:22 msgid "" "Please click on the link which is being e-mailed to you and your " "subscription will be confirmed." msgstr "" #: ../../static/t/listsub/display.html:27 #: ../../static/t/listsub/display.html:47 #, fuzzy msgid "ERROR" msgstr "HIBA:" #: ../../static/t/listsub/display.html:35 msgid "You are unsubscribing" msgstr "" #: ../../static/t/listsub/display.html:37 #, fuzzy msgid "from the" msgstr "ettől: " #: ../../static/t/listsub/display.html:39 #, fuzzy msgid "mailing list." msgstr "Levelezőlista szolgáltatás" #: ../../static/t/listsub/display.html:40 msgid "" "The listserver has sent you an e-mail with one additional Web link for you " "to click on to confirm your unsubscription." msgstr "" #: ../../static/t/listsub/display.html:41 msgid "" "This extra step is for your protection, as it prevents others from being " "able to unsubscribe you from lists without your consent." msgstr "" #: ../../static/t/listsub/display.html:43 msgid "" "Please click on the link which is being e-mailed to you and your " "unsubscription will be confirmed." msgstr "" #: ../../static/t/listsub/display.html:44 #, fuzzy msgid "Back..." msgstr "Vissza..." #: ../../static/t/listsub/display.html:54 #, fuzzy msgid "Confirmation successful!" msgstr "Jóváhagyási kérelem elküldve" #: ../../static/t/listsub/display.html:56 #, fuzzy msgid "Confirmation failed." msgstr "Beállítások" #: ../../static/t/listsub/display.html:57 msgid "This could mean one of two things:" msgstr "" #: ../../static/t/listsub/display.html:59 msgid "" "You waited too long to confirm your subscribe/unsubscribe request (the " "confirmation link is only valid for three days)" msgstr "" #: ../../static/t/listsub/display.html:60 msgid "" "You have already successfully confirmed your subscribe/unsubscribe " "request and are attempting to do it again." msgstr "" #: ../../static/t/listsub/display.html:62 msgid "The error returned by the server was: " msgstr "" #: ../../static/t/listsub/display.html:70 #, fuzzy msgid "Name of list:" msgstr "Feladat neve" #: ../../static/t/listsub/display.html:75 #, fuzzy msgid "Your e-mail address:" msgstr "Kedvelt email cím" #: ../../static/t/listsub/display.html:79 msgid "(If subscribing) preferred format: " msgstr "" #: ../../static/t/listsub/display.html:80 #, fuzzy msgid "One message at a time" msgstr "Írja be az üzenet szövegét:" #: ../../static/t/listsub/display.html:81 #, fuzzy msgid "Digest format" msgstr "Időformátum" #: ../../static/t/listsub/display.html:89 msgid "" "When you attempt to subscribe or unsubscribe to a mailing list, you will " "receive an e-mail containing one additional web link to click on for final " "confirmation." msgstr "" #: ../../static/t/listsub/display.html:90 msgid "" "This extra step is for your protection, as it prevents others from being " "able to subscribe or unsubscribe you to lists." msgstr "" #: ../../static/t/floors_edit_one.html:11 msgid "(delete floor)" msgstr "(szint törlése)" #: ../../static/t/floors_edit_one.html:13 msgid "(edit graphic)" msgstr "(grafika szerkesztése)" #: ../../static/t/floors.html:4 msgid "Add/change/delete floors" msgstr "Szint hozzáadása/módosítása/törlése" #: ../../static/t/floors.html:10 msgid "Floor number" msgstr "Szint száma" #: ../../static/t/floors.html:11 msgid "Floor name" msgstr "Szint neve" #: ../../static/t/floors.html:12 msgid "Number of rooms" msgstr "Szobák száma" #: ../../static/t/floors.html:13 msgid "Floor CSS" msgstr "Szint CSS" #: ../../static/t/files.html:4 msgid "Files available for download in" msgstr "" #: ../../static/t/files.html:9 msgid "Upload a file:" msgstr "Fájl feltöltése:" #: ../../static/t/files.html:30 msgid "Filename" msgstr "Fájlnév" #: ../../static/t/files.html:31 msgid "Size" msgstr "Méret" #: ../../static/t/files.html:32 msgid "Content" msgstr "Tartalom" #: ../../static/t/files.html:33 msgid "Description" msgstr "Leírás" #: ../../static/t/edit_message.html:9 ../../static/t/iconbar.html:50 #: ../../static/t/iconbar.html:59 msgid "Loading" msgstr "Betöltés" #: ../../static/t/edit_message.html:23 msgid "from" msgstr "Feladó:" #: ../../static/t/edit_message.html:29 ../../static/t/edit_message.html:38 msgid "Anonymous" msgstr "Ismeretlen" #: ../../static/t/edit_message.html:47 msgid "in" msgstr "Hely:" #: ../../static/t/edit_message.html:51 msgid "To:" msgstr "Címzett:" #: ../../static/t/edit_message.html:57 #: ../../static/t/view_message/print.html:15 #: ../../static/t/view_message.html:15 msgid "CC:" msgstr "Másolat:" #: ../../static/t/edit_message.html:63 msgid "BCC:" msgstr "Vakmásolat:" #: ../../static/t/edit_message.html:71 msgid "Subject (optional):" msgstr "Tárgy (opcionális):" #: ../../static/t/edit_message.html:71 #: ../../static/t/view_message/replyquote.html:8 #: ../../static/t/view_message/print.html:16 #: ../../static/t/view_message.html:16 msgid "Subject:" msgstr "Tárgy:" #: ../../static/t/edit_message.html:86 msgid "--- forwarded message ---" msgstr "--- továbbított üzenet ---" #: ../../static/t/edit_message.html:110 #, fuzzy msgid "Post message" msgstr "üzenetből" #: ../../static/t/edit_message.html:118 msgid "Save to Drafts" msgstr "" #: ../../static/t/edit_message.html:126 #: ../../static/t/edit_message/attachments_pane.html:5 msgid "Attachments:" msgstr "Mellékletek:" #: ../../static/t/aide/display_serverrestart_page.html:4 msgid "Message to your Users:" msgstr "Üzenet az ön felhasználóinak:" #: ../../static/t/aide/display_generic_result.html:2 msgid "Server command results" msgstr "Kiszolgáló parancs eredménye" #: ../../static/t/aide/display_generic_result.html:18 #, fuzzy msgid "Enter another command" msgstr "Írja be a kiszolgáló parancsot" #: ../../static/t/aide/display_generic_result.html:19 #, fuzzy msgid "Return to menu" msgstr "váltás a menüre" #: ../../static/t/aide/display_sitewide_config.html:3 msgid "Site configuration" msgstr "Hely beállítása" #: ../../static/t/aide/display_sitewide_config.html:6 #: ../../static/t/aide/edituser/select.html:9 msgid "You need to be aide to view this." msgstr "" #: ../../static/t/aide/display_sitewide_config.html:11 msgid "General" msgstr "Általános" #: ../../static/t/aide/display_sitewide_config.html:12 msgid "Access" msgstr "Hozzáférés" #: ../../static/t/aide/display_sitewide_config.html:13 msgid "Network" msgstr "Hálózat" #: ../../static/t/aide/display_sitewide_config.html:14 msgid "Tuning" msgstr "Hangolás" #: ../../static/t/aide/display_sitewide_config.html:15 #, fuzzy msgid "Directory" msgstr "Könyvtár neve:" #: ../../static/t/aide/display_sitewide_config.html:16 msgid "Auto-purger" msgstr "Automatikus-takarító" #: ../../static/t/aide/display_sitewide_config.html:17 msgid "Indexing/Journaling" msgstr "Indexelés/naplózás" #: ../../static/t/aide/display_sitewide_config.html:18 #: ../../static/t/aide/siteconfig/tab_pushmail.html:1 msgid "Push Email" msgstr "Push Email" #: ../../static/t/aide/display_sitewide_config.html:19 msgid "Pop3" msgstr "Pop3" #: ../../static/t/aide/usermanagement.html:2 msgid "Add, change, delete user accounts" msgstr "Felhasználói azonosítók hozzáadása, megváltoztatása, törlése" #: ../../static/t/aide/display_inetconf.html:5 #: ../../static/t/aide/display_menu.html:5 msgid "System Administration Menu" msgstr "Rendszer Adminisztrációs Menü" #: ../../static/t/aide/display_inetconf.html:6 #: ../../static/t/aide/display_menu.html:6 #, fuzzy msgid "Room Admin Menu" msgstr "Szoba infó" #: ../../static/t/aide/display_inetconf.html:13 msgid "Local host aliases" msgstr "Helyi rendszer további címei" #: ../../static/t/aide/display_inetconf.html:14 msgid "Directory domains" msgstr "Címtár domainek" #: ../../static/t/aide/display_inetconf.html:15 msgid "Smart hosts" msgstr "Levéltovábbító címek" #: ../../static/t/aide/display_inetconf.html:16 #, fuzzy msgid "Fallback smart hosts" msgstr "Levéltovábbító címek" #: ../../static/t/aide/display_inetconf.html:17 msgid "Notification hosts" msgstr "" #: ../../static/t/aide/display_inetconf.html:22 #, fuzzy msgid "RBL hosts" msgstr "Levéltovábbító címek" #: ../../static/t/aide/display_inetconf.html:23 msgid "SpamAssassin hosts" msgstr "SpamAssassin kiszolgálók" #: ../../static/t/aide/display_inetconf.html:24 msgid "ClamAV clamd hosts" msgstr "ClamAV clamd kiszolgálók" #: ../../static/t/aide/display_inetconf.html:25 msgid "Masqueradable domains" msgstr "" #: ../../static/t/aide/edituser/select.html:5 msgid "Edit or delete users" msgstr "Felhasználók szerkesztése vagy törlése" #: ../../static/t/aide/edituser/select.html:17 msgid "Add users" msgstr "Felhasználók hozzáadása" #: ../../static/t/aide/edituser/select.html:20 msgid "Edit or Delete users" msgstr "Felhasználók szerkesztése vagy törlése" #: ../../static/t/aide/edituser/box_select.html:1 #, fuzzy msgid "" "To edit an existing user account, select the user name from the list and " "click 'Edit'." msgstr "" "Ha szeretne további felhasználónak hozzáférést adni ehhez a szobához, írja " "be a felhasználó nevét az alábbi szövegdobozba és kattintson a 'Meghív' " "pontra." #: ../../static/t/aide/edituser/detailview.html:4 msgid "Edit user account: " msgstr "Felhasználói azonosító szerkesztése: " #: ../../static/t/aide/edituser/detailview.html:24 #: ../../static/t/room/edit/tab_feed.html:14 msgid "Password" msgstr "Jelszó" #: ../../static/t/aide/edituser/detailview.html:28 msgid "Permission to send Internet mail" msgstr "" #: ../../static/t/aide/edituser/detailview.html:32 msgid "Number of logins" msgstr "Belépések száma" #: ../../static/t/aide/edituser/detailview.html:36 #, fuzzy msgid "Messages submitted" msgstr "Levél mérete" #: ../../static/t/aide/edituser/detailview.html:40 msgid "Access level" msgstr "Hozzáférési szint" #: ../../static/t/aide/edituser/detailview.html:54 #, fuzzy msgid "User ID number" msgstr "Felhasználónév" #: ../../static/t/aide/edituser/detailview.html:58 msgid "Date and time of last login" msgstr "Utolsó belépés dátuma és ideje" #: ../../static/t/aide/edituser/detailview.html:68 msgid "Auto-purge after this many days" msgstr "" #: ../../static/t/aide/edituser/add.html:1 #, fuzzy msgid "" "To create a new user account, enter the desired user name in the box below " "and click 'Create'." msgstr "" "Ha szeretne további felhasználónak hozzáférést adni ehhez a szobához, írja " "be a felhasználó nevét az alábbi szövegdobozba és kattintson a 'Meghív' " "pontra." #: ../../static/t/aide/edituser/add.html:5 msgid "New user: " msgstr "Új felhasználó: " #: ../../static/t/aide/display_generic_cmd.html:4 msgid "Enter a server command" msgstr "Írja be a kiszolgáló parancsot" #: ../../static/t/aide/display_generic_cmd.html:12 msgid "" "This screen allows you to enter Citadel server commands which are not " "supported by WebCit. If you do not know what that means, then this screen " "will not be of much use to you." msgstr "" "Ez a képernyő lehetővé teszi oylan Citadel kiszolgáló parancsok bevitelét, " "melyet a WebCit nem támogat. Ha nem tudja ez mit jelent, ennek a " "képernyőnek nem sok hasznát veszi." #: ../../static/t/aide/display_generic_cmd.html:15 msgid "Enter command:" msgstr "Írja be a parancsot:" #: ../../static/t/aide/display_generic_cmd.html:17 msgid "Command input (if requesting SEND_LISTING transfer mode):" msgstr "Parancs bemenet (ha SEND_LISTING átviteli módot kér):" #: ../../static/t/aide/display_generic_cmd.html:20 #, fuzzy msgid "Detected host header is " msgstr "A felismert kiszolgáló fejléc %s://%s" #: ../../static/t/aide/display_ignetconf.html:4 msgid "Network configuration" msgstr "Hálózat beállítása" #: ../../static/t/aide/display_ignetconf.html:10 #: ../../static/t/aide/ignetconf/edit_node.html:5 #: ../../static/t/aide/ignetconf/add.html:5 msgid "Add a new node" msgstr "Új csomópont hozzáadása" #: ../../static/t/aide/display_ignetconf.html:14 msgid "Currently configured nodes" msgstr "Jelenleg beállított csomópontok" #: ../../static/t/aide/display_serverrestart.html:26 msgid "Restart Citadel" msgstr "Citadel újraindítása" #: ../../static/t/aide/floorconfig.html:2 msgid "Add, change, or delete floors" msgstr "Szintek hozzáadása, megváltoztatása vagy törlése" #: ../../static/t/aide/serverrestart/box.html:3 msgid "Please wait while the Citadel server is restarted... " msgstr "Kérem várjon, amíg a Citadel kiszolgáló újraindul..." #: ../../static/t/aide/serverrestart/box_page_do.html:3 #, fuzzy msgid "" "Please wait while your users are being paged, the citadel server will be " "restarted after that... " msgstr "Kérem várjon, amíg a Citadel kiszolgáló újraindul..." #: ../../static/t/aide/inet/masqdomains.html:2 msgid "(Domains as which users are allowed to masquerade)" msgstr "" #: ../../static/t/aide/inet/rbldns.html:2 #, fuzzy msgid "(hosts running a Realtime Blackhole List)" msgstr "(rendszerek, melyek a ClamAV clamd szolgáltatást futtatják)" #: ../../static/t/aide/inet/dirnames.html:2 msgid "(domains mapped with the Global Address Book)" msgstr "(domain nevek Globális Címlistával)" #: ../../static/t/aide/inet/notify.html:2 msgid "(URLS for notifications when users receive new mails; )" msgstr "" #: ../../static/t/aide/inet/notify.html:2 msgid "Syntax: Notificationtemplatename:http[s]://user:password@hostname/path" msgstr "" #: ../../static/t/aide/inet/smarthosts.html:2 msgid "(if present, forward all outbound mail to one of these hosts)" msgstr "" #: ../../static/t/aide/inet/aliases.html:2 msgid "(domains for which this host receives mail)" msgstr "(domain nevek, melyekre ez a rendszer levelet fogad)" #: ../../static/t/aide/inet/clamav.html:2 msgid "(hosts running the ClamAV clamd service)" msgstr "(rendszerek, melyek a ClamAV clamd szolgáltatást futtatják)" #: ../../static/t/aide/inet/spamass.html:2 #, fuzzy msgid "(hosts running the SpamAssassin service)" msgstr "(rendszerek, melyek a ClamAV clamd szolgáltatást futtatják)" #: ../../static/t/aide/inet/fallbackhosts.html:2 msgid "(send outbound mail to these hosts only when direct delivery fails)" msgstr "" #: ../../static/t/aide/ignetconf/display_confirm_delete.html:5 msgid "Confirm delete" msgstr "Törlés jóváhagyása" #: ../../static/t/aide/ignetconf/display_confirm_delete.html:11 msgid "Are you sure you want to delete " msgstr "Biztosan törölni akarja" #: ../../static/t/aide/ignetconf/display_confirm_delete.html:14 #: ../../static/t/prefs/box.html:198 ../../static/t/iconbar/edit.html:19 #: ../../static/t/iconbar/edit.html:26 ../../static/t/iconbar/edit.html:32 #: ../../static/t/iconbar/edit.html:39 ../../static/t/iconbar/edit.html:45 #: ../../static/t/iconbar/edit.html:52 ../../static/t/iconbar/edit.html:58 #: ../../static/t/iconbar/edit.html:64 ../../static/t/iconbar/edit.html:70 #: ../../static/t/iconbar/edit.html:76 ../../static/t/iconbar/edit.html:82 #: ../../static/t/iconbar/edit.html:88 msgid "Yes" msgstr "Igen" #: ../../static/t/aide/ignetconf/display_confirm_delete.html:16 #: ../../static/t/prefs/box.html:200 ../../static/t/iconbar/edit.html:20 #: ../../static/t/iconbar/edit.html:27 ../../static/t/iconbar/edit.html:33 #: ../../static/t/iconbar/edit.html:40 ../../static/t/iconbar/edit.html:46 #: ../../static/t/iconbar/edit.html:53 ../../static/t/iconbar/edit.html:59 #: ../../static/t/iconbar/edit.html:65 ../../static/t/iconbar/edit.html:71 #: ../../static/t/iconbar/edit.html:77 ../../static/t/iconbar/edit.html:83 #: ../../static/t/iconbar/edit.html:89 msgid "No" msgstr "Nem" #: ../../static/t/aide/ignetconf/edit_node.html:15 #: ../../static/t/aide/ignetconf/add.html:15 #: ../../static/t/aide/siteconfig/tab_general.html:8 msgid "Node name" msgstr "Csomópont neve" #: ../../static/t/aide/ignetconf/edit_node.html:17 #: ../../static/t/aide/ignetconf/add.html:17 msgid "Shared secret" msgstr "Megosztott titok" #: ../../static/t/aide/ignetconf/edit_node.html:19 #: ../../static/t/aide/ignetconf/add.html:19 msgid "Host or IP address" msgstr "Gazda vagy IP címek" #: ../../static/t/aide/ignetconf/edit_node.html:21 #: ../../static/t/aide/ignetconf/add.html:21 msgid "Port number" msgstr "Port szám" #: ../../static/t/aide/ignetconf/section.html:4 #, fuzzy msgid "(Edit)" msgstr "(Szerkeszt)" #: ../../static/t/aide/display_menu.html:12 msgid "Global Configuration" msgstr "Globális beállítások" #: ../../static/t/aide/display_menu.html:14 msgid "User account management" msgstr "Felhasználói hozzáférés kezelés" #: ../../static/t/aide/display_menu.html:16 msgid "Shutdown Citadel" msgstr "Citadel leállítása" #: ../../static/t/aide/display_menu.html:18 msgid "Rooms and Floors" msgstr "Szobák és szintek" #: ../../static/t/aide/global_config.html:2 msgid "Edit site-wide configuration" msgstr "Rendszer szintű beállítások szerkesztése" #: ../../static/t/aide/global_config.html:3 msgid "Domain names and Internet mail configuration" msgstr "Domain nevek és internetes levelezés beállítása" #: ../../static/t/aide/global_config.html:4 msgid "Configure replication with other Citadel servers" msgstr "Replikáció beállítása más Citadel kiszolgálókkal" #: ../../static/t/aide/global_config.html:5 #: ../../static/t/view_mailq/header.html:3 msgid "View the outbound SMTP queue" msgstr "Kimenő SMTP sor megtekintése" #: ../../static/t/aide/restart.html:2 msgid "Restart Now" msgstr "Újraindítás most" #: ../../static/t/aide/restart.html:3 msgid "Restart after paging users" msgstr "Újraindítás a felhasználók figyelmeztetése után" #: ../../static/t/aide/restart.html:4 msgid "Restart when all users are idle" msgstr "Újraindítás, ha minden felhasználó tétlen" #: ../../static/t/aide/siteconfig/tab_general.html:1 #, fuzzy msgid "General site configuration items" msgstr "Hely beállítása" #: ../../static/t/aide/siteconfig/tab_general.html:5 msgid "Change Login Logo" msgstr "Belépési logó megváltoztatása" #: ../../static/t/aide/siteconfig/tab_general.html:6 msgid "Change Logout Logo" msgstr "Kilépési logó megváltoztatása" #: ../../static/t/aide/siteconfig/tab_general.html:11 msgid "Fully qualified domain name" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:14 msgid "Human-readable node name" msgstr "Csomópont ember által olvasható neve" #: ../../static/t/aide/siteconfig/tab_general.html:17 msgid "Telephone number" msgstr "Telefonszám" #: ../../static/t/aide/siteconfig/tab_general.html:20 msgid "Paginator prompt (for text mode clients)" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:23 msgid "Geographic location of this system" msgstr "Ezen rendszer földrajzi elhelyezkedése" #: ../../static/t/aide/siteconfig/tab_general.html:26 msgid "Name of system administrator" msgstr "Rendszergazda neve" #: ../../static/t/aide/siteconfig/tab_general.html:29 msgid "Default timezone for unzoned calendar items" msgstr "Alapértelmezett időzóna az időzóna nélküli naptár bejegyzésekhez" #: ../../static/t/aide/siteconfig/tab_autopurger.html:1 #, fuzzy msgid "Configure automatic expiry of old messages" msgstr "Soha nem évüljenek el az üzenetek" #: ../../static/t/aide/siteconfig/tab_autopurger.html:2 msgid "These settings may be overridden on a per-floor or per-room basis." msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:6 msgid "Hour to run database auto-purge" msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:66 #, fuzzy msgid "Default message expire policy for public rooms" msgstr "Üzenet elévülési szabályok ehhez a szobához" #: ../../static/t/aide/siteconfig/tab_autopurger.html:68 #: ../../static/t/aide/siteconfig/tab_autopurger.html:86 #: ../../static/t/room/edit/tab_expire.html:17 #: ../../static/t/room/edit/tab_expire.html:45 msgid "Never automatically expire messages" msgstr "Soha nem évüljenek el az üzenetek" #: ../../static/t/aide/siteconfig/tab_autopurger.html:71 #: ../../static/t/aide/siteconfig/tab_autopurger.html:89 #: ../../static/t/room/edit/tab_expire.html:20 #: ../../static/t/room/edit/tab_expire.html:48 msgid "Expire by message count" msgstr "Elévülés az üzenetek száma alapján" #: ../../static/t/aide/siteconfig/tab_autopurger.html:73 #: ../../static/t/aide/siteconfig/tab_autopurger.html:92 #: ../../static/t/room/edit/tab_expire.html:23 #: ../../static/t/room/edit/tab_expire.html:51 msgid "Expire by message age" msgstr "Elévülés az üzenetek kora alapján" #: ../../static/t/aide/siteconfig/tab_autopurger.html:75 #: ../../static/t/aide/siteconfig/tab_autopurger.html:94 #: ../../static/t/room/edit/tab_expire.html:25 #: ../../static/t/room/edit/tab_expire.html:53 msgid "Number of messages or days: " msgstr "Üzenetek vagy napok száma: " #: ../../static/t/aide/siteconfig/tab_autopurger.html:81 #, fuzzy msgid "Default message expire policy for private mailboxes" msgstr "Üzenetek elévülési szabálya ezen a szinten" #: ../../static/t/aide/siteconfig/tab_autopurger.html:83 #, fuzzy msgid "Same policy as public rooms" msgstr "Üzenet elévülési szabályok ehhez a szobához" #: ../../static/t/aide/siteconfig/tab_network.html:1 msgid "Network services" msgstr "Hálózati szolgáltatások" #: ../../static/t/aide/siteconfig/tab_network.html:2 #: ../../static/t/aide/siteconfig/tab_directory.html:3 msgid "" "Changes made on this screen will not take effect until you restart the " "Citadel server." msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:6 msgid "SMTP MTA port (-1 to disable)" msgstr "SMTP MTA port (-1 kikapcsolja)" #: ../../static/t/aide/siteconfig/tab_network.html:9 msgid "Correct forged From: lines during authenticated SMTP" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:12 msgid "Flag message as spam, instead of rejecting it" msgstr "Levelek megjelölése SPAM-ként az elutasítás helyett" #: ../../static/t/aide/siteconfig/tab_network.html:15 #, fuzzy msgid "IMAP listener port (-1 to disable)" msgstr "SMTP MTA port (-1 kikapcsolja)" #: ../../static/t/aide/siteconfig/tab_network.html:19 msgid "Network run frequency (in seconds)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:22 msgid "Server IP address (0.0.0.0 for 'any')" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:25 msgid "SMTP MSA port (-1 to disable)" msgstr "SMTP MSA port (-1 kikapcsolja)" #: ../../static/t/aide/siteconfig/tab_network.html:28 #, fuzzy msgid "IMAP over SSL port (-1 to disable)" msgstr "SMTP MSA port (-1 kikapcsolja)" #: ../../static/t/aide/siteconfig/tab_network.html:31 #, fuzzy msgid "SMTP over SSL port (-1 to disable)" msgstr "SMTP MSA port (-1 kikapcsolja)" #: ../../static/t/aide/siteconfig/tab_network.html:34 msgid "Instantly expunge deleted messages in IMAP" msgstr "Törölt levelek azonnali megsemmisítése az IMAP-on" #: ../../static/t/aide/siteconfig/tab_network.html:38 msgid "Allow unauthenticated SMTP clients to spoof this sites domains" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:41 msgid "Postfix TCP Dictionary Port" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:41 msgid "-1 to disable" msgstr "-1 kikapcsolja" #: ../../static/t/aide/siteconfig/tab_network.html:44 #, fuzzy msgid "ManageSieve Port (-1 to disable)" msgstr "SMTP MSA port (-1 kikapcsolja)" #: ../../static/t/aide/siteconfig/tab_network.html:47 msgid "Perform RBL checks upon connect instead of after RCPT" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:50 msgid "Keep original from headers in IMAP" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:53 #, fuzzy msgid "XMPP (Jabber) client to server port (-1 to disable)" msgstr "SMTP MTA port (-1 kikapcsolja)" #: ../../static/t/aide/siteconfig/tab_network.html:56 #, fuzzy msgid "XMPP (Jabber) server to server port (-1 to disable)" msgstr "SMTP MTA port (-1 kikapcsolja)" #: ../../static/t/aide/siteconfig/tab_pop3.html:1 msgid "POP3" msgstr "POP3" #: ../../static/t/aide/siteconfig/tab_pop3.html:6 #, fuzzy msgid "POP3 listener port (-1 to disable)" msgstr "SMTP MTA port (-1 kikapcsolja)" #: ../../static/t/aide/siteconfig/tab_pop3.html:9 #, fuzzy msgid "POP3 over SSL port (-1 to disable)" msgstr "SMTP MSA port (-1 kikapcsolja)" #: ../../static/t/aide/siteconfig/tab_pop3.html:12 msgid "POP3 fetch frequency in seconds" msgstr "" #: ../../static/t/aide/siteconfig/tab_pop3.html:15 msgid "POP3 fastest fetch frequency in seconds" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:1 msgid "Advanced server fine-tuning controls" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:5 msgid "Server connection idle timeout (in seconds)" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:8 msgid "Maximum concurrent sessions (0 = no limit)" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:11 msgid "Default user purge time (days)" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:14 msgid "Default room purge time (days)" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:17 msgid "Maximum message length" msgstr "Üzenet legnagyobb hossza" #: ../../static/t/aide/siteconfig/tab_tuning.html:20 msgid "Minimum number of worker threads" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:23 msgid "Maximum number of worker threads" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:26 msgid "Automatically delete committed database logs" msgstr "" #: ../../static/t/aide/siteconfig/tab_pushmail.html:5 #, fuzzy msgid "Funambol server host (blank to disable)" msgstr "LDAP kiszolgáló neve (üres kikapcsolja)" #: ../../static/t/aide/siteconfig/tab_pushmail.html:8 #, fuzzy msgid "Funambol server port " msgstr "LDAP kiszolgáló neve (üres kikapcsolja)" #: ../../static/t/aide/siteconfig/tab_pushmail.html:11 msgid "Funambol sync source" msgstr "" #: ../../static/t/aide/siteconfig/tab_pushmail.html:14 msgid "Funambol auth details (user:pass)" msgstr "" #: ../../static/t/aide/siteconfig/tab_pushmail.html:17 #, fuzzy msgid "External pager tool (blank to disable)" msgstr "LDAP kiszolgáló neve (üres kikapcsolja)" #: ../../static/t/aide/siteconfig/tab_access.html:1 msgid "Access controls and site policy settings" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:5 msgid "Allow aides to zap (forget) rooms" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:9 msgid "Quarantine messages from problem users" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:12 msgid "Name of quarantine room" msgstr "Karantén szoba neve" #: ../../static/t/aide/siteconfig/tab_access.html:17 #, fuzzy msgid "Name of room to log pages" msgstr "Szoba neve:" #: ../../static/t/aide/siteconfig/tab_access.html:22 msgid "Authentication mode" msgstr "Azonosítási mód" #: ../../static/t/aide/siteconfig/tab_access.html:24 #, fuzzy msgid "Self contained" msgstr "tartalmazza" #: ../../static/t/aide/siteconfig/tab_access.html:25 msgid "Host based" msgstr "Kiszolgáló alapú" #: ../../static/t/aide/siteconfig/tab_access.html:26 msgid "LDAP (RFC2307)" msgstr "LDAP (RFC2307)" #: ../../static/t/aide/siteconfig/tab_access.html:27 msgid "LDAP (Active Directory)" msgstr "LDAP (Active Directory)" #: ../../static/t/aide/siteconfig/tab_access.html:30 #, fuzzy msgid "Master user name (blank to disable)" msgstr "LDAP kiszolgáló neve (üres kikapcsolja)" #: ../../static/t/aide/siteconfig/tab_access.html:33 #, fuzzy msgid "Master user password" msgstr "Írja be az új jelszót:" #: ../../static/t/aide/siteconfig/tab_access.html:38 msgid "Initial access level for new users" msgstr "Induló hozzáférési szint az új felhasználókhoz" #: ../../static/t/aide/siteconfig/tab_access.html:49 msgid "Access level required to create rooms" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:60 msgid "Automatically grant room-aide status to users who create private rooms" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:63 msgid "Automatically grant room-aide status to users who create BLOG rooms" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:66 msgid "Restrict access to Internet mail" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:71 msgid "Disable self-service user account creation" msgstr "Önkiszolgáló felhasználó létrehozás kikapcsolása" #: ../../static/t/aide/siteconfig/tab_access.html:71 msgid "Hint: do not select both!" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:74 msgid "Require registration for new users" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:77 #, fuzzy msgid "Allow anonymous guest access" msgstr "Nincsenek anonym üzenetek" #: ../../static/t/aide/siteconfig/tab_indexing.html:1 msgid "Indexing and Journaling" msgstr "Indexelés és naplózás" #: ../../static/t/aide/siteconfig/tab_indexing.html:2 msgid "Warning: these facilities are resource intensive." msgstr "" #: ../../static/t/aide/siteconfig/tab_indexing.html:6 msgid "Enable full text index" msgstr "Teljes szöveges indexelés bekapcsolása" #: ../../static/t/aide/siteconfig/tab_indexing.html:9 #, fuzzy msgid "Perform journaling of email messages" msgstr "Kedvelt megjelenített név az email üzenetekhez" #: ../../static/t/aide/siteconfig/tab_indexing.html:13 #, fuzzy msgid "Perform journaling of non-email messages" msgstr "Kedvelt megjelenített név az email üzenetekhez" #: ../../static/t/aide/siteconfig/tab_indexing.html:16 msgid "Email destination of journalized messages" msgstr "" #: ../../static/t/aide/siteconfig/tab_directory.html:1 msgid "Configure the LDAP connector for Citadel" msgstr "Az LDAP csatoló beállítása a Citadel számára" #: ../../static/t/aide/siteconfig/tab_directory.html:4 msgid "" "NOTE: This Citadel server has been built without LDAP support. These " "options will have no effect." msgstr "" #: ../../static/t/aide/siteconfig/tab_directory.html:9 msgid "Host name of LDAP server (blank to disable)" msgstr "LDAP kiszolgáló neve (üres kikapcsolja)" #: ../../static/t/aide/siteconfig/tab_directory.html:13 msgid "Port number of LDAP server (blank to disable)" msgstr "LDAP kiszolgáló port száma (üres kikapcsolja)" #: ../../static/t/aide/siteconfig/tab_directory.html:16 msgid "Base DN" msgstr "Alap DN" #: ../../static/t/aide/siteconfig/tab_directory.html:19 msgid "Bind DN" msgstr "Kapcsolódó DN" #: ../../static/t/aide/siteconfig/tab_directory.html:22 msgid "Password for bind DN" msgstr "Jelszó a kapcsolódó DN számára" #: ../../static/t/iconbar.html:7 msgid "Language:" msgstr "Nyelv:" #: ../../static/t/iconbar.html:19 msgid "Mail" msgstr "Levelezés" #: ../../static/t/iconbar.html:39 ../../static/t/iconbar/edit.html:61 #: ../../static/t/summary/page.html:30 msgid "Tasks" msgstr "Feladatok" #: ../../static/t/iconbar.html:48 ../../static/t/iconbar/edit.html:67 msgid "Rooms" msgstr "Szobák" #: ../../static/t/iconbar.html:57 msgid "Online users" msgstr "Jelenlévő felhasználók" #: ../../static/t/iconbar.html:62 ../../static/t/iconbar/edit.html:79 msgid "Chat" msgstr "Csevegés" #: ../../static/t/iconbar.html:65 msgid "Advanced" msgstr "Haladó" #: ../../static/t/iconbar.html:72 ../../static/t/room/edit/editroom.html:4 #: ../../static/t/room/edit.html:5 msgid "Administration" msgstr "Adminisztráció" #: ../../static/t/iconbar.html:83 msgid "customize this menu" msgstr "menü testreszabása" #: ../../static/t/iconbar.html:92 msgid "switch to room list" msgstr "váltás a szoba listára" #: ../../static/t/iconbar.html:93 msgid "switch to menu" msgstr "váltás a menüre" #: ../../static/t/iconbar.html:94 msgid "My folders" msgstr "Saját mappáim" #: ../../static/t/view_message/list_attach.html:3 #: ../../static/t/view_message/inline_attach.html:4 msgid "View" msgstr "Megnéz" #: ../../static/t/view_message/list_attach.html:4 #: ../../static/t/view_message/inline_attach.html:5 msgid "Download" msgstr "Letölt" #: ../../static/t/view_message/print.html:14 #: ../../static/t/view_message.html:14 msgid "to" msgstr "Címzett:" #: ../../static/t/openid_manual_create.html:2 msgid "Your OpenID" msgstr "" #: ../../static/t/openid_manual_create.html:2 msgid "was successfully verified." msgstr "" #: ../../static/t/openid_manual_create.html:3 msgid "However, the user name" msgstr "" #: ../../static/t/openid_manual_create.html:3 msgid "conflicts with an existing user." msgstr "" #: ../../static/t/openid_manual_create.html:5 msgid "Please specify the user name you would like to use." msgstr "Kérem adja meg a felhasználó nevet, amit használni szeretne." #: ../../static/t/files/graphicsupload.html:2 msgid "Image upload" msgstr "Kép feltöltése" #: ../../static/t/files/graphicsupload.html:6 msgid "You can upload an image directly from your computer" msgstr "Feltölthet egy képet közvetlenül a számítógépéről" #: ../../static/t/files/graphicsupload.html:8 msgid "Please select a file to upload:" msgstr "Kérem válassza ki a feltöltendő fájlt:" #: ../../static/t/files/section_onefile.html:20 msgid "Slideshow" msgstr "Diavetítés" #: ../../static/t/roombanner.html:10 ../../static/t/roombanner.html:11 msgid "new of" msgstr "" #: ../../static/t/roombanner.html:10 ../../static/t/roombanner.html:11 #: ../../static/t/msg_listselector_bottom.html:7 #: ../../static/t/msg_listselector_top.html:7 msgid "messages" msgstr "üzenetből" #: ../../static/t/roombanner.html:28 msgid "Select page: " msgstr "Oldal kiválasztása: " #: ../../static/t/who.html:13 msgid "Users currently on " msgstr "" #: ../../static/t/who.html:22 #, fuzzy msgid "Click on a name to read user info. Click on" msgstr "Kattintson bármely jegyzetre a szerkesztéshez." #: ../../static/t/who.html:24 #, fuzzy msgid "to send an instant message to that user." msgstr "Azonnali üzenet küldése ide:" #: ../../static/t/msg_listselector_bottom.html:2 #: ../../static/t/msg_listselector_top.html:2 msgid "Reading #" msgstr "Olvasás alatt #" #: ../../static/t/msg_listselector_bottom.html:12 #: ../../static/t/msg_listselector_top.html:12 msgid "oldest to newest" msgstr "legrégebbitől a legújabbig" #: ../../static/t/msg_listselector_bottom.html:20 #: ../../static/t/msg_listselector_top.html:20 msgid "newest to oldest" msgstr "legújabbtól a legrégebbiig" #: ../../static/t/newstartpage.html:4 msgid "New start page" msgstr "Új induló oldal" #: ../../static/t/newstartpage.html:9 msgid "Your start page has been changed." msgstr "Az ön induló oldala megváltozott." #: ../../static/t/newstartpage.html:12 msgid "" "(Note: this does not change your browser's home page. It changes the page " "you begin on when you log on to" msgstr "" #: ../../static/t/no_new_msgs.html:3 msgid "No new messages." msgstr "" #: ../../static/t/view_blog/comment_box.html:8 msgid "Post a comment" msgstr "A hozzászólásod" #: ../../static/t/prefs/pushemail.html:2 #, fuzzy msgid "Configure Push Email" msgstr "Push Email" #: ../../static/t/prefs/pushemail.html:9 msgid "Push email and SMS settings" msgstr "" #: ../../static/t/prefs/pushemail.html:17 msgid "" "If your administrator has enabled the functionality, Citadel can notify a " "Funambol server that you haved recieved new email and automatically " "syncronize any devices you have with the Funambol client installed." msgstr "" #: ../../static/t/prefs/pushemail.html:20 msgid "" "Alternatively, if the administrator has configured it, Citadel can send a " "text message to you when new mail arrives." msgstr "" #: ../../static/t/prefs/pushemail.html:26 msgid "Notify Funambol server" msgstr "" #: ../../static/t/prefs/pushemail.html:31 #, fuzzy msgid "Send a text message to..." msgstr "Azonnali üzenet küldése ide:" #: ../../static/t/prefs/pushemail.html:33 msgid "" "(Use international format, without any leading zeros, spaces or hypens, like " "+61415011501)" msgstr "" #: ../../static/t/prefs/pushemail.html:38 msgid "Use custom notification scheme configured by your Admin" msgstr "" #: ../../static/t/prefs/pushemail.html:43 #, fuzzy msgid "Don‘t send any notifications" msgstr "Ne küldjön értesítéseket" #: ../../static/t/prefs/box.html:9 msgid "Tree (folders) view" msgstr "Fa (mappa) nézet" #: ../../static/t/prefs/box.html:11 msgid "Table (rooms) view" msgstr "Táblázat (szoba) nézet" #: ../../static/t/prefs/box.html:20 msgid "12 hour (am/pm)" msgstr "12 órás (de/du)" #: ../../static/t/prefs/box.html:25 msgid "24 hour" msgstr "24 órás" #: ../../static/t/prefs/box.html:152 msgid "Sunday" msgstr "Vasárnap" #: ../../static/t/prefs/box.html:153 msgid "Monday" msgstr "Hétfő" #: ../../static/t/prefs/box.html:174 msgid "No signature" msgstr "Nincs aláírás" #: ../../static/t/prefs/box.html:238 msgid "Full-functionality" msgstr "Teljes funkcionalitás" #: ../../static/t/prefs/box.html:241 msgid "Safe mode" msgstr "Biztonságos mód" #: ../../static/t/prefs/box.html:242 msgid "" "Safe mode is less intensive on your web browser, but not as fully featured." msgstr "" #: ../../static/t/wiki/pagelist.html:1 msgid "List of Wiki pages" msgstr "" #: ../../static/t/wiki/history.html:1 msgid "History of edits for this page" msgstr "" #: ../../static/t/who/list_static_header.html:1 msgid "Users currently on" msgstr "" #: ../../static/t/who/section.html:4 msgid "(kill)" msgstr "(kilő)" #: ../../static/t/who/bio.html:4 ../../static/t/user/show.html:4 msgid "User profile" msgstr "Felhasználói profil" #: ../../static/t/who/summary.html:5 ../../static/t/who/box_list_static.html:6 #: ../../static/t/room/edit/tab_feed.html:13 msgid "User name" msgstr "Felhasználónév" #: ../../static/t/who/summary.html:6 ../../static/t/who/box_list_static.html:7 msgid "Room" msgstr "Szoba" #: ../../static/t/who/box_list_static.html:8 msgid "From host" msgstr "Innen jött" #: ../../static/t/view_message.html:19 msgid "Edit" msgstr "" #: ../../static/t/view_message.html:22 ../../static/t/view_message.html:26 msgid "Reply" msgstr "Válasz" #: ../../static/t/view_message.html:23 msgid "ReplyQuoted" msgstr "IdézveVálaszol" #: ../../static/t/view_message.html:27 msgid "ReplyAll" msgstr "VálaszMindenkinek" #: ../../static/t/view_message.html:28 msgid "Forward" msgstr "Továbbít" #: ../../static/t/view_message.html:31 ../../static/t/msg_listview.html:25 msgid "Move" msgstr "Mozgat" #: ../../static/t/view_message.html:34 msgid "Headers" msgstr "Fejlécek" #: ../../static/t/view_message.html:35 ../../static/t/msg_listview.html:28 msgid "Print" msgstr "Nyomtatás" #: ../../static/t/preferences.html:4 ../../static/t/preferences.html:7 msgid "Preferences and settings" msgstr "Jellemzők és beállítások" #: ../../static/t/user/list.html:3 #, fuzzy msgid "User list for " msgstr "Felhasználók listája" #: ../../static/t/user/list.html:9 msgid "User Name" msgstr "Felhasználónév" #: ../../static/t/user/list.html:10 msgid "Number" msgstr "Szám" #: ../../static/t/user/list.html:11 msgid "Access Level" msgstr "Hozzáférési szint" #: ../../static/t/user/list.html:12 msgid "Last Login" msgstr "Utolsó bejelentkezés" #: ../../static/t/user/list.html:13 msgid "Total Logins" msgstr "Összes bejelentkezés" #: ../../static/t/user/list.html:14 msgid "Total Posts" msgstr "Összes hozzászólás" #: ../../static/t/user/show.html:9 #, fuzzy msgid "Click here to send an instant message to" msgstr "Azonnali üzenet küldése ide: " #: ../../static/t/start_of_new_msgs.html:4 msgid "Old messages" msgstr "" #: ../../static/t/start_of_new_msgs.html:8 msgid "New messages" msgstr "" #: ../../static/t/display_main_menu.html:7 msgid "Basic commands" msgstr "Alap parancsok" #: ../../static/t/display_main_menu.html:10 msgid "Your info" msgstr "Az ön adatai" #: ../../static/t/display_main_menu.html:12 msgid "Advanced room commands" msgstr "Haladó szoba parancsok" #: ../../static/t/iconbar/save.html:4 ../../static/t/iconbar/edit.html:4 msgid "Customize the icon bar" msgstr "eszköztár testre szabása" #: ../../static/t/iconbar/save.html:11 #, fuzzy msgid "" "Your icon bar has been updated. Please select any of its choices to continue." msgstr "Az ön naptára frissült, hogy reagáljon az RSVP-re." #: ../../static/t/iconbar/save.html:11 msgid "" "You may need to force refresh (SHIFT-F5)> in order for changes to take effect" msgstr "" #: ../../static/t/iconbar/edit.html:11 msgid "Display icons as:" msgstr "Ikonok megjelenítése mint:" #: ../../static/t/iconbar/edit.html:12 msgid "pictures and text" msgstr "képek és szöveg" #: ../../static/t/iconbar/edit.html:13 msgid "pictures only" msgstr "csak képek" #: ../../static/t/iconbar/edit.html:14 msgid "text only" msgstr "csak szöveg" #: ../../static/t/iconbar/edit.html:16 msgid "" "Select the icons you would like to see displayed in the 'icon bar' menu on " "the left side of the screen." msgstr "" "Válassza ki az ikonokat, melyeket a képernyőn balra, az eszköztárban " "szeretne látni." #: ../../static/t/iconbar/edit.html:23 msgid "Site logo" msgstr "Hely logó" #: ../../static/t/iconbar/edit.html:23 msgid "An icon describing this site" msgstr "A helyre jellemző ikon" #: ../../static/t/iconbar/edit.html:29 msgid "Your summary page" msgstr "Az ön összefoglaló oldala" #: ../../static/t/iconbar/edit.html:36 msgid "Mail (inbox)" msgstr "Levél (bejövő)" #: ../../static/t/iconbar/edit.html:36 msgid "A shortcut to your email Inbox" msgstr "Egy gyorsbillentyű az ön bejövő leveleihez" #: ../../static/t/iconbar/edit.html:42 msgid "Your personal address book" msgstr "Az ön személyes címjegyzéke" #: ../../static/t/iconbar/edit.html:49 msgid "Your personal notes" msgstr "Az ön személyes jegyzetei" #: ../../static/t/iconbar/edit.html:55 msgid "A shortcut to your personal calendar" msgstr "Egy gyorsbillentyű az ön személyes naptárához" #: ../../static/t/iconbar/edit.html:61 msgid "A shortcut to your personal task list" msgstr "Egy gyorsbillentyű az ön személyes feladatlistájához" #: ../../static/t/iconbar/edit.html:67 msgid "" "Clicking this icon displays a list of all accessible rooms (or folders) " "available." msgstr "" "Erre az ikonra kattintva megtekintheti az összes elérhető szobát (vagy " "mappát)." #: ../../static/t/iconbar/edit.html:73 msgid "Who is online?" msgstr "Ki van itt?" #: ../../static/t/iconbar/edit.html:73 msgid "Clicking this icon displays a list of all users currently logged in." msgstr "" "Erre az ikonra kattintva megtekintheti az összes bejelentkezett felhasználó " "listáját." #: ../../static/t/iconbar/edit.html:79 msgid "" "Clicking this icon enters real-time chat mode with other users in the same " "room." msgstr "" "Erre az ikonra kattintva belép egy valós idejű csevegés módba azokkal a " "felhasználókkal, akik ugyan ebben a szobában vannak." #: ../../static/t/iconbar/edit.html:85 msgid "Advanced options" msgstr "Haladó beállítások" #: ../../static/t/iconbar/edit.html:85 msgid "Access to the complete menu of Citadel functions." msgstr "Hozzáférés a Citadel teljes funkcióinak menüjéhez" #: ../../static/t/iconbar/edit.html:91 msgid "Citadel logo" msgstr "Citadel logó" #: ../../static/t/iconbar/edit.html:91 msgid "Displays the 'Powered by Citadel' icon" msgstr "Megmutatja a 'Működteti a Citadel' ikont" #: ../../static/t/room/edit/tab_expire.html:8 msgid "Message expire policy for this room" msgstr "Üzenet elévülési szabályok ehhez a szobához" #: ../../static/t/room/edit/tab_expire.html:14 msgid "Use the default policy for this floor" msgstr "Használja az alapértelmezett szabályokat ehhez a szinthez" #: ../../static/t/room/edit/tab_expire.html:36 msgid "Message expire policy for this floor" msgstr "Üzenetek elévülési szabálya ezen a szinten" #: ../../static/t/room/edit/tab_expire.html:42 msgid "Use the system default" msgstr "Rendszer alapértelmezés használata" #: ../../static/t/room/edit/editroom.html:5 ../../static/t/room/edit.html:6 msgid "Configuration" msgstr "Beállítások" #: ../../static/t/room/edit/editroom.html:6 ../../static/t/room/edit.html:7 msgid "Message expire policy" msgstr "Üzenet elévülési szabály" #: ../../static/t/room/edit/editroom.html:7 ../../static/t/room/edit.html:8 msgid "Access controls" msgstr "Hozzáférés szabályozás" #: ../../static/t/room/edit/editroom.html:8 ../../static/t/room/edit.html:9 msgid "Sharing" msgstr "Megosztás" #: ../../static/t/room/edit/editroom.html:9 ../../static/t/room/edit.html:10 msgid "Mailing list service" msgstr "Levelezőlista szolgáltatás" #: ../../static/t/room/edit/editroom.html:10 ../../static/t/room/edit.html:11 msgid "Remote retrieval" msgstr "Távoli beszerzés" #: ../../static/t/room/edit/tab_config.html:6 #, fuzzy msgid "name of room: " msgstr "Szoba neve:" #: ../../static/t/room/edit/tab_config.html:10 #: ../../static/t/room/create.html:20 msgid "Resides on floor: " msgstr "Ezen a szinten van: " #: ../../static/t/room/edit/tab_config.html:16 #: ../../static/t/room/create.html:68 msgid "Type of room:" msgstr "Szoba típusa:" #: ../../static/t/room/edit/tab_config.html:22 #: ../../static/t/room/create.html:73 msgid "Public (automatically appears to everyone)" msgstr "Nyilvános (automatikusan megjelenik mindenkinek)" #: ../../static/t/room/edit/tab_config.html:28 #: ../../static/t/room/create.html:77 msgid "Private - hidden (accessible to anyone who knows its name)" msgstr "Privát - rejtett (elérhető mindenkinek, aki tudja a nevét)" #: ../../static/t/room/edit/tab_config.html:35 #: ../../static/t/room/create.html:81 msgid "Private - require password: " msgstr "Privát - jelszót igényel: " #: ../../static/t/room/edit/tab_config.html:44 #: ../../static/t/room/create.html:86 msgid "Private - invitation only" msgstr "Privát - csak meghívással" #: ../../static/t/room/edit/tab_config.html:51 #: ../../static/t/room/create.html:90 msgid "Personal (mailbox for you only)" msgstr "Személyes (postafiók csak önnek)" #: ../../static/t/room/edit/tab_config.html:55 msgid "If private, cause current users to forget room" msgstr "Ha privát, az összes jelenlegi felhasználó elfelejti a szobát" #: ../../static/t/room/edit/tab_config.html:61 msgid "Preferred users only" msgstr "Csak a kedvenc felhasználók" #: ../../static/t/room/edit/tab_config.html:66 msgid "Read-only room" msgstr "Csak olvasható szoba" #: ../../static/t/room/edit/tab_config.html:71 msgid "All users allowed to post may also delete messages" msgstr "Minden felhasználó, aki beküldhet az törölhet is üzeneteket" #: ../../static/t/room/edit/tab_config.html:76 msgid "File directory room" msgstr "Fájl mappa szoba" #: ../../static/t/room/edit/tab_config.html:80 msgid "Directory name: " msgstr "Könyvtár neve: " #: ../../static/t/room/edit/tab_config.html:86 msgid "Uploading allowed" msgstr "Feltöltés engedélyezett" #: ../../static/t/room/edit/tab_config.html:91 msgid "Downloading allowed" msgstr "Letöltés engedélyezett" #: ../../static/t/room/edit/tab_config.html:96 msgid "Visible directory" msgstr "Látható könyvtár" #: ../../static/t/room/edit/tab_config.html:103 msgid "Network shared room" msgstr "Hálózaton megosztott szoba" #: ../../static/t/room/edit/tab_config.html:108 msgid "Permanent (does not auto-purge)" msgstr "Állandó (nem törlődik automatikusan)" #: ../../static/t/room/edit/tab_config.html:113 msgid "Subject Required (Force users to specify a message subject)" msgstr "" "Tárgy kötelező (Kényszeríti a felhasználókat, hogy az üzeneteknek adják meg " "a tárgyát)" #: ../../static/t/room/edit/tab_config.html:116 msgid "Anonymous messages" msgstr "Anonym üzenetek" #: ../../static/t/room/edit/tab_config.html:122 msgid "No anonymous messages" msgstr "Nincsenek anonym üzenetek" #: ../../static/t/room/edit/tab_config.html:127 msgid "All messages are anonymous" msgstr "Minden üzenet anonym" #: ../../static/t/room/edit/tab_config.html:132 msgid "Prompt user when entering messages" msgstr "" #: ../../static/t/room/edit/tab_config.html:136 #, fuzzy msgid "Room aide: " msgstr "Szoba száma:" #: ../../static/t/room/edit/tab_listserv.html:5 #, fuzzy msgid "" "The contents of this room are being mailed as individual messages " "to the following list recipients:

    " msgstr "" "A szoba tartalma egyedi üzenetekben elküldésre kerül az alábbi " "címzetteknek:

    \n" #: ../../static/t/room/edit/tab_listserv.html:19 #, fuzzy msgid "" "The contents of this room are being mailed in digest form to the " "following list recipients:

    " msgstr "" "A szoba tartalma egyetlen üzenetben elküldésre kerül az alábbi " "címzetteknek:

    \n" #: ../../static/t/room/edit/tab_listserv.html:39 msgid "Add recipients from Contacts or other address books" msgstr "Címzettek hozzáadása a Kapcsolatokból vagy más címlistákból" #: ../../static/t/room/edit/tab_listserv.html:48 msgid "Allow non-subscribers to mail to this room." msgstr "Engedélyezi, hogy nem előfizetők postázhassanak ebbe a szobába." #: ../../static/t/room/edit/tab_listserv.html:54 msgid "Room post publication needs Admin permission." msgstr "" #: ../../static/t/room/edit/tab_listserv.html:59 msgid "Allow self-service subscribe/unsubscribe requests." msgstr "Önkiszolgáló előfizetés/lemondás engedélyezése." #: ../../static/t/room/edit/tab_listserv.html:65 msgid "The URL for subscribe/unsubscribe is: " msgstr "Az előfizetés/lemondás URL: " #: ../../static/t/room/edit/digestrecp_removal.html:1 #: ../../static/t/room/edit/pop3client_removal.html:9 #: ../../static/t/room/edit/listrecp_removal.html:1 #: ../../static/t/room/edit/rssclient_removal.html:5 msgid "(remove)" msgstr "(eltávolít)" #: ../../static/t/room/edit/tab_admin.html:5 msgid "Delete this room" msgstr "Szoba törlése" #: ../../static/t/room/edit/tab_admin.html:10 #, fuzzy msgid "Set or change the icon for this rooms banner" msgstr "A szoba hirdetés ikonjának beállítása vagy megváltoztatása" #: ../../static/t/room/edit/tab_admin.html:14 #, fuzzy msgid "Edit this rooms Info file" msgstr "A szoba Info fájl szerkesztése" #: ../../static/t/room/edit/tab_share.html:5 msgid "Shared with" msgstr "Megosztva ezzel:" #: ../../static/t/room/edit/tab_share.html:6 msgid "Not shared with" msgstr "Nincs megosztva ezzel:" #: ../../static/t/room/edit/tab_share.html:11 #: ../../static/t/room/edit/tab_share.html:21 msgid "Remote node name" msgstr "Távoli csomópont neve" #: ../../static/t/room/edit/tab_share.html:12 #: ../../static/t/room/edit/tab_share.html:22 msgid "Remote room name" msgstr "Távoli szoba neve" #: ../../static/t/room/edit/tab_share.html:13 #: ../../static/t/room/edit/tab_share.html:23 msgid "Actions" msgstr "Műveletek" #: ../../static/t/room/edit/tab_share.html:35 #, fuzzy msgid "" "When sharing a room, it must be shared from both ends. Adding a node to the " "'shared' list sends messages out, but in order to receive messages, the " "other nodes must be configured to send messages out to your system as well. " "
  • If the remote room name is blank, it is assumed that the room name is " "identical on the remote node.
  • If the remote room name is different, the " "remote node must also configure the name of the room here." msgstr "" "Amikor megoszt egy szobát, annak meg kell lennie osztva mindkét oldalon. " "Egy csomópont hozzáadása a 'megosztások' listájához kiküldi az üzeneteket, " "de ahhoz, hogy kapjon is üzenetet, a másik csomópontoknak is be kell " "állítaniuk, hogy kiküldje az üzeneteket az ön rendszerének.
  • Ha a távoli " "szoba neve üres, feltételezzük, hogy a szoba neve azonos a másik oldalon." "
  • Ha a távoli szoba neve más, a másik csomóponton szintén be kell állítani " "az itteni szoba nevét.
    \n" #: ../../static/t/room/edit/tab_feed.html:2 msgid "" "Retrieve messages from these remote POP3 accounts and store them in this " "room:" msgstr "" "Üzenetek letöltése távoli POP3 azonosítóról és tárolása ebben a szobában:" #: ../../static/t/room/edit/tab_feed.html:12 msgid "Remote host" msgstr "Távoli kiszolgáló" #: ../../static/t/room/edit/tab_feed.html:15 msgid "Keep messages on server?" msgstr "Megtartja az üzeneteket a szerveren?" #: ../../static/t/room/edit/tab_feed.html:16 msgid "Interval" msgstr "Időköz" #: ../../static/t/room/edit/tab_feed.html:31 msgid "Fetch the following RSS feeds and store them in this room:" msgstr "A következő RSS folyam letöltése és tárolása ebben a szobában:" #: ../../static/t/room/edit/tab_feed.html:43 msgid "Feed URL" msgstr "Folyam URL" #: ../../static/t/room/edit/tab_access.html:5 #, fuzzy msgid "" "The users listed below have access to this room. To remove a user from the " "access list, select the user name from the list and click 'Kick'." msgstr "" "Az alábbi listában található felhasználóknak van hozzáférése ehhez a " "szobához. Ha el akarja valamelyiküket távolítani a listáról, válassza ki a " "felhasználó nevét és kattintson a 'Kirúg' pontra." #: ../../static/t/room/edit/tab_access.html:20 msgid "" "To grant another user access to this room, enter the user name in the box " "below and click 'Invite'." msgstr "" "Ha szeretne további felhasználónak hozzáférést adni ehhez a szobához, írja " "be a felhasználó nevét az alábbi szövegdobozba és kattintson a 'Meghív' " "pontra." #: ../../static/t/room/edit/tab_access.html:26 msgid "Invite:" msgstr "Meghív:" #: ../../static/t/room/edit/tab_access.html:35 msgid "Users" msgstr "Felhasználók" #: ../../static/t/room/zapped_list.html:7 msgid "Zapped (forgotten) rooms" msgstr "Kilőtt (elfelejtett) szobák" #: ../../static/t/room/zapped_list.html:10 #, fuzzy msgid "Click on any room to un-zap it and goto that room." msgstr "Kattintson bármelyik szobára, hogy azt felélessze és belépjen.\n" #: ../../static/t/room/display_private.html:7 msgid "Go to a hidden room" msgstr "Rejtett szobába ugrás" #: ../../static/t/room/display_private.html:8 msgid "" "If you know the name of a hidden (guess-name) or passworded room, you can " "enter that room by typing its name below. Once you gain access to a private " "room, it will appear in your regular room listings so you don‘t have to keep " "returning here." msgstr "" #: ../../static/t/room/display_private.html:14 msgid "Enter room name:" msgstr "Adja meg a szoba nevét:" #: ../../static/t/room/display_private.html:21 msgid "Enter room password:" msgstr "Adja meg a szoba jelszavát:" #: ../../static/t/room/create.html:11 #: ../../static/t/menu/advanced_roomcommands.html:6 msgid "Create a new room" msgstr "Új szoba létrehozása" #: ../../static/t/room/create.html:18 msgid "Name of room: " msgstr "Szoba neve: " #: ../../static/t/room/create.html:32 msgid "Default view for room: " msgstr "Szoba alapértelmezett nézete: " #: ../../static/t/room/zap_this.html:3 #, fuzzy msgid "Zap (forget/unsubscribe) the current room" msgstr "Szoba kilövése" #: ../../static/t/room/zap_this.html:6 #, fuzzy msgid "If you select this option," msgstr "Szoba szerkesztése vagy törlése" #: ../../static/t/room/zap_this.html:8 msgid "will disappear from your room list. Is this what you wish to do?" msgstr "" #: ../../static/t/menu/your_info.html:2 msgid "Change your preferences and settings" msgstr "Az ön jellemzőinek és beállításainak megváltoztatása" #: ../../static/t/menu/your_info.html:3 msgid "Update your contact information" msgstr "Frissítse a kapcsolati információit" #: ../../static/t/menu/your_info.html:5 msgid "Enter your 'bio'" msgstr "" #: ../../static/t/menu/your_info.html:6 msgid "Edit your online photo" msgstr "Az ön fényképének szerkesztése" #: ../../static/t/menu/your_info.html:8 msgid "Edit your push email settings" msgstr "" #: ../../static/t/menu/your_info.html:9 #, fuzzy msgid "Manage your OpenIDs" msgstr "Változtassa meg a jelszavát" #: ../../static/t/menu/basic_commands.html:3 msgid "List known rooms" msgstr "Listázza az ismert szobákat" #: ../../static/t/menu/basic_commands.html:3 msgid "Where can I go from here?" msgstr "Hova mehetek innen?" #: ../../static/t/menu/basic_commands.html:4 ../../static/t/navbar.html:168 msgid "Goto next room" msgstr "Ugrás a következő szobába" #: ../../static/t/menu/basic_commands.html:4 msgid "...with unread messages" msgstr "" #: ../../static/t/menu/basic_commands.html:5 msgid "Skip to next room" msgstr "Ugrás a következő szobába" #: ../../static/t/menu/basic_commands.html:5 msgid "(come back here later)" msgstr "(visszatérés később)" #: ../../static/t/menu/basic_commands.html:6 ../../static/t/navbar.html:5 msgid "Ungoto" msgstr "Visszalépés" #: ../../static/t/menu/basic_commands.html:6 msgid "oops! Back to " msgstr "hoppá! Vissza ide: " #: ../../static/t/menu/basic_commands.html:10 ../../static/t/navbar.html:13 msgid "Read new messages" msgstr "Új üzenetek olvasása" #: ../../static/t/menu/basic_commands.html:10 msgid "...in this room" msgstr "... ebben a szobában" #: ../../static/t/menu/basic_commands.html:11 ../../static/t/navbar.html:19 msgid "Read all messages" msgstr "Összes üzenet olvasása" #: ../../static/t/menu/basic_commands.html:11 msgid "...old and new" msgstr "" #: ../../static/t/menu/basic_commands.html:12 ../../static/t/navbar.html:25 msgid "Enter a message" msgstr "Üzenet beküldése" #: ../../static/t/menu/basic_commands.html:12 msgid "(post in this room)" msgstr "(hozzászólás ebben a szobában)" #: ../../static/t/menu/basic_commands.html:13 msgid "File library" msgstr "Fájl-tár" #: ../../static/t/menu/basic_commands.html:13 msgid "(List files available for download)" msgstr "(Letölthető fájlok listája)" #: ../../static/t/menu/basic_commands.html:17 msgid "Summary page" msgstr "Összefoglaló oldal" #: ../../static/t/menu/basic_commands.html:17 msgid "Summary of my account" msgstr "Saját azonosítóm összefoglalója" #: ../../static/t/menu/basic_commands.html:18 msgid "User list" msgstr "Felhasználók listája" #: ../../static/t/menu/basic_commands.html:18 msgid "(all registered users)" msgstr "(összes regisztrált felhasználó)" #: ../../static/t/menu/basic_commands.html:19 msgid "Bye!" msgstr "Viszlát!" #: ../../static/t/menu/advanced_roomcommands.html:3 msgid "Edit or delete this room" msgstr "Szoba szerkesztése vagy törlése" #: ../../static/t/menu/advanced_roomcommands.html:5 msgid "Go to a 'hidden' room" msgstr "Ugrás egy 'rejtett' szobába" #: ../../static/t/menu/advanced_roomcommands.html:7 #, fuzzy msgid "Zap (forget) this room" msgstr "Szoba kilövése" #: ../../static/t/menu/advanced_roomcommands.html:8 msgid "List all forgotten rooms" msgstr "Listázza az összes elfelejtett szobát" #: ../../static/t/navbar.html:34 msgid "View contacts" msgstr "Kapcsolatok megnézése" #: ../../static/t/navbar.html:40 msgid "Add new contact" msgstr "Új partner felévtele" #: ../../static/t/navbar.html:49 msgid "Day view" msgstr "Napi nézet" #: ../../static/t/navbar.html:55 msgid "Month view" msgstr "Havi nézet" #: ../../static/t/navbar.html:61 msgid "Add new event" msgstr "Új esemény felvétele" #: ../../static/t/navbar.html:70 msgid "Calendar list" msgstr "Naptár lista" #: ../../static/t/navbar.html:79 msgid "View tasks" msgstr "Feladatok megnézése" #: ../../static/t/navbar.html:85 msgid "Add new task" msgstr "Új feladat felévtele" #: ../../static/t/navbar.html:94 msgid "View notes" msgstr "Jegyzetek megnézése" #: ../../static/t/navbar.html:101 msgid "Add new note" msgstr "Új jegyzet felévtele" #: ../../static/t/navbar.html:110 msgid "Refresh message list" msgstr "Üzenetlista frissítése" #: ../../static/t/navbar.html:122 msgid "Write mail" msgstr "Email írása" #: ../../static/t/navbar.html:132 msgid "Wiki home" msgstr "Wiki kezdőlap" #: ../../static/t/navbar.html:139 msgid "Edit this page" msgstr "Oldal szerkesztése" #: ../../static/t/navbar.html:145 msgid "History" msgstr "" #: ../../static/t/navbar.html:154 #, fuzzy msgid "New blog post" msgstr "újabb hozzászólás" #: ../../static/t/navbar.html:162 msgid "Skip this room" msgstr "Szoba kihagyása" #: ../../static/t/msg_listview.html:18 msgid "Loading messages from server, please wait" msgstr "Levél betöltése a kiszolgálóról, türelem" #: ../../static/t/msg_listview.html:24 msgid "Open in new window" msgstr "Megnyitás új ablakban" #: ../../static/t/msg_listview.html:26 msgid "Copy" msgstr "Másolás" #: ../../static/t/view_mailq/message.html:6 msgid "Originaly posted in: " msgstr "" #: ../../static/t/view_mailq/header.html:15 msgid "Refresh this page" msgstr "Oldal frissítése" #: ../../static/t/view_mailq/header.html:21 msgid "Message ID" msgstr "Üzenet azonosító" #: ../../static/t/view_mailq/header.html:23 msgid "Date/time submitted" msgstr "Feladás dátuma/ideje" #: ../../static/t/view_mailq/header.html:25 #, fuzzy msgid "Next attempt" msgstr "Utolsó kísérlet" #: ../../static/t/view_mailq/header.html:29 msgid "Recipients" msgstr "Címzettek" #: ../../static/t/view_mailq/footer_empty.html:4 msgid "The queue is empty." msgstr "A sor üres." #: ../../static/t/view_mailq/footer_empty.html:9 #: ../../static/t/view_mailq/footer.html:5 msgid "You do not have permission to view this resource." msgstr "" #: ../../static/t/get_logged_in.html:5 msgid "You must be logged in to access this page." msgstr "Be kell jelentkezned, hogy ezt az oldalt." #: ../../static/t/get_logged_in.html:9 #: ../../static/t/edit_message/attachments_pane.html:3 msgid "Close window" msgstr "Ablak bezárása" #: ../../static/t/get_logged_in.html:55 msgid "Log in using a user name and password" msgstr "belépés felhasználó név és jelszó segítségével" #: ../../static/t/get_logged_in.html:60 ../../static/t/get_logged_in.html:75 msgid "Password:" msgstr "Jelszó:" #: ../../static/t/get_logged_in.html:65 ../../static/t/get_logged_in.html:69 msgid "New user? Register now" msgstr "Új felhasználó? Regisztráljon most" #: ../../static/t/get_logged_in.html:70 msgid "" "enter the name and password you wish to use, and click "New User." " msgstr "" #: ../../static/t/get_logged_in.html:83 msgid "Log in using OpenID" msgstr "Belépés OpenID használatával" #: ../../static/t/get_logged_in.html:85 msgid "OpenID URL:" msgstr "OpenID URL:" #: ../../static/t/get_logged_in.html:92 #, fuzzy msgid "Log in using Google" msgstr "Belépés OpenID használatával" #: ../../static/t/get_logged_in.html:97 #, fuzzy msgid "Log in using Yahoo" msgstr "Belépés OpenID használatával" #: ../../static/t/get_logged_in.html:102 #, fuzzy msgid "Log in using AOL or AIM" msgstr "Belépés OpenID használatával" #: ../../static/t/get_logged_in.html:104 msgid "Enter your AOL or AIM screen name:" msgstr "" #: ../../static/t/get_logged_in.html:115 msgid "Please wait" msgstr "Kérem vár" #: ../../static/t/summary/page.html:4 #, fuzzy msgid "Summary page for " msgstr "%s összefoglaló lapja" #: ../../static/t/summary/page.html:21 msgid "Messages" msgstr "Üzenetek" #: ../../static/t/summary/page.html:39 msgid "Today on your calendar" msgstr "Az ön naptára ma" #: ../../static/t/summary/page.html:51 #, fuzzy msgid "Who‘s online now" msgstr "Ki van itt most" #: ../../static/t/summary/page.html:60 msgid "About this server" msgstr "Erről a kiszolgálóról" #: ../../static/t/summary/page.html:63 msgid "You are connected to" msgstr "" #: ../../static/t/summary/page.html:64 #, fuzzy msgid "running" msgstr "Hangolás" #: ../../static/t/summary/page.html:65 #, fuzzy msgid "with" msgstr "ötödik" #: ../../static/t/summary/page.html:66 msgid "server build" msgstr "" #: ../../static/t/summary/page.html:67 #, fuzzy msgid "and located in" msgstr "és utána" #: ../../static/t/summary/page.html:68 #, fuzzy msgid "Your system administrator is" msgstr "Rendszergazda neve" #: ../../static/t/edit_message/attachments_pane.html:16 msgid "Attach file" msgstr "Fájl csatolása" #: ../../static/t/edit_message/attachments_pane.html:21 msgid "Upload" msgstr "Feltöltés" #: ../../static/t/edit_message/section_attach_select.html:4 #, fuzzy msgid "Remove" msgstr "(eltávolít)" #: ../../static/t/loggedinas.html:3 #, fuzzy msgid "Logged in as" msgstr "Utolsó bejelentkezés" #: ../../static/t/loggedinas.html:6 #, fuzzy msgid "Not logged in." msgstr "Nincs belépve" #~ msgid "Create" #~ msgstr "Létrehoz" #~ msgid "Delete script" #~ msgstr "Szkript törlése" #~ msgid "Delete this script?" #~ msgstr "Törli ezt a szkriptet?" #~ msgid "Move rule up" #~ msgstr "Szabály mozgatása felfelé" #~ msgid "Move rule down" #~ msgstr "Szabály mozgatása lefelé" #~ msgid "Delete rule" #~ msgstr "Szabály törlése" #~ msgid "Reset form" #~ msgstr "Űrlap ürítése" #~ msgid "Yes with users list" #~ msgstr "Igen, a felhasználók listájával" #~ msgid "Room list" #~ msgstr "Szoba lista" #, fuzzy #~ msgid "uname" #~ msgstr "Fájlnév" #, fuzzy #~ msgid "text" #~ msgstr "csak szöveg" #, fuzzy #~ msgid "name" #~ msgstr "Fájlnév" #, fuzzy #~ msgid "pname" #~ msgstr "Fájlnév" #, fuzzy #~ msgid "password" #~ msgstr "Jelszó" #, fuzzy #~ msgid "pass" #~ msgstr "Feladatok" #, fuzzy #~ msgid "display: none" #~ msgstr "Megjelenített név:" #~ msgid "Your password was not accepted." #~ msgstr "A jelszavát nem fogadtuk el." #~ msgid "See the" #~ msgstr "Lásd itt" #~ msgid "recommended browser list" #~ msgstr "ajánlott böngészők listája" #~ msgid "Click here to learn what OpenID is and how Citadel is using it." #~ msgstr "" #~ "Kattintson ide, ha többet szeretne tudni az OpenID-ról és arról, hogyan " #~ "használja azt a Citadel." #~ msgid "Exit" #~ msgstr "Kilépés" #~ msgid "Change name" #~ msgstr "Név megváltoztatása" #~ msgid "Change CSS" #~ msgstr "CSS megváltoztatása" #~ msgid "Create new floor" #~ msgstr "Új szint létrehozása" #~ msgid "" #~ "You have one or more instant messages waiting, but the Citadel Instant " #~ "Messenger window failed to open. This is probably because you have a " #~ "popup blocker installed. Please configure your popup blocker to allow " #~ "popups from this site if you wish to receive instant messages." #~ msgstr "" #~ "Önnek egy vagy több várakozó azonnali üzenete van, de a Citadel Azonnali " #~ "Üzenetküldő ablaka nem tudott megnyílni. Ennek valószínűleg az az oka, " #~ "hogy az ön böngészője blokkolja a felugró ablakokat. Kérem állítsa be a " #~ "böngészőt úgy, hogy erről a helyről engedélyezze a felugró ablakokat, ha " #~ "azonnali üzeneteket szeretne kapni." #, fuzzy #~ msgid "Change" #~ msgstr "CSS megváltoztatása" #, fuzzy #~ msgid "Add node?" #~ msgstr "Új csomópont hozzáadása" #, fuzzy #~ msgid "Minutes" #~ msgstr "perc" #, fuzzy #~ msgid "active" #~ msgstr "Próbaképpen" #~ msgid "Send" #~ msgstr "Küldés" #~ msgid "Pictures in" #~ msgstr "Képek itt" #, fuzzy #~ msgid "Edit configuration" #~ msgstr "Hely beállítása" #, fuzzy #~ msgid "Edit address book entry" #~ msgstr "Ez a címlista üres." #, fuzzy #~ msgid "Delete user" #~ msgstr "Szabály törlése" #, fuzzy #~ msgid "Delete this user?" #~ msgstr "Törli ezt a szkriptet?" #, fuzzy #~ msgid "Delete File" #~ msgstr "Szabály törlése" #, fuzzy #~ msgid "Delete this message?" #~ msgstr "Szoba törlése" #, fuzzy #~ msgid "Powered by Citadel" #~ msgstr "Megmutatja a 'Működteti a Citadel' ikont" #, fuzzy #~ msgid "Go to your email inbox" #~ msgstr "Egy gyorsbillentyű az ön bejövő leveleihez" #, fuzzy #~ msgid "Go to your personal calendar" #~ msgstr "Egy gyorsbillentyű az ön személyes naptárához" #, fuzzy #~ msgid "Go to your personal address book" #~ msgstr "Az ön személyes címjegyzéke" #, fuzzy #~ msgid "Go to your personal notes" #~ msgstr "Az ön személyes jegyzetei" #, fuzzy #~ msgid "Go to your personal task list" #~ msgstr "Egy gyorsbillentyű az ön személyes feladatlistájához" #, fuzzy #~ msgid "List all your accessible rooms" #~ msgstr "Listázza az összes elfelejtett szobát" #, fuzzy #~ msgid "Room and system administration functions" #~ msgstr "Rendszergazda neve" #, fuzzy #~ msgid "Log off now?" #~ msgstr "Kilépés" #, fuzzy #~ msgid "Delete this entry?" #~ msgstr "Szoba törlése" #, fuzzy #~ msgid "Delete this note?" #~ msgstr "Szoba törlése" #, fuzzy #~ msgid "Do you really want to kill this session?" #~ msgstr "Tényleg törölni kívánja ezt az OpenID-t?" #, fuzzy #~ msgid "Save changes?" #~ msgstr "Változások mentése" #~ msgid "%d new of %d messages%s" #~ msgstr "%d új az összesen %d üzenetből%s" #~ msgid "" #~ "Leave all messages marked as unread, go to next room with unread messages" #~ msgstr "" #~ "Összes üzenet olvasatlanul hagyása és ugrás a következő olvasatlan " #~ "üzenetet tartalmazó szobába" #~ msgid "Mark all messages as read, go to next room with unread messages" #~ msgstr "" #~ "Összes üzenet megjelölése olvasottként és ugrás a következő olvasatlan " #~ "levelet tartalmazó szobába" #~ msgid "Are you sure you want to delete this room?" #~ msgstr "Biztosan törölni kívánja ezt a szobát?" #~ msgid "Unshare" #~ msgstr "Megosztás visszavonása" #~ msgid "Share" #~ msgstr "Megoszt" #~ msgid "List" #~ msgstr "Lista" #~ msgid "Digest" #~ msgstr "Kivonat" #~ msgid "Kick" #~ msgstr "Kirúg" #~ msgid "Invite" #~ msgstr "Meghív" #~ msgid "User" #~ msgstr "Felhasználó" #~ msgid "Create new room" #~ msgstr "Új szoba létrehozása" #~ msgid "Go there" #~ msgstr "Ugrás" #~ msgid "Zap this room" #~ msgstr "Szoba kilövése" #~ msgid "(nothing)" #~ msgstr "(semmi)" #~ msgid "unexpected end of message" #~ msgstr "az üzenet váratlanul végetért" #~ msgid "An error occurred while setting up the chat socket." #~ msgstr "Hiba történt a csevegés kapcsolat felépítésekor." #~ msgid "Now exiting chat mode." #~ msgstr "Kilépek a csevegés módból." #~ msgid "Help" #~ msgstr "Súgó" #~ msgid "List users" #~ msgstr "Felhasználók listája" #~ msgid "No messages here." #~ msgstr "Itt nincsenek üzenetek." #, fuzzy #~ msgid "no more messages" #~ msgstr "Anonym üzenetek" #~ msgid "" #~ "Your icon bar has been updated. Please select any of its choices to " #~ "continue.
    You may need to force " #~ "refresh (SHIFT-F5) in order for changes to take effect" #~ msgstr "" #~ "Az eszköztár frissítve. Kérem válassza az alábbi lehetőségek bármelyikét " #~ "a folytatáshoz.
    Valószínűleg " #~ "kényszerített frissítésre (SHIFT-F5) van szükség ahhoz, hogy a változások " #~ "érvénybe lépjenek" #~ msgid "Email" #~ msgstr "Email" #~ msgid "%s from" #~ msgstr "Ettől: %s FIX415" #~ msgid "%s in %s" #~ msgstr " %s itt FIX416: %s: " #~ msgid " on %s" #~ msgstr " a(z) %s (FIX417)" #~ msgid "%s" #~ msgstr "%s FIXME418" webcit-8.24-dfsg.orig/po/webcit/kk.po0000644000175000017500000024664412271477123017260 0ustar michaelmichael# Kazakh translation for citadel # Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010 # This file is distributed under the same license as the citadel package. # FIRST AUTHOR , 2010. # msgid "" msgstr "" "Project-Id-Version: citadel\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-03-20 01:03-0400\n" "PO-Revision-Date: 2010-12-26 10:06+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Kazakh \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2012-08-01 04:34+0000\n" "X-Generator: Launchpad (build 15719)\n" "Language: kk\n" #: ../../roomops.c:708 ../../roomops.c:1005 ../../sieve.c:364 msgid "Cancelled. Changes were not saved." msgstr "" #: ../../roomops.c:838 ../../sieve.c:417 msgid "Your changes have been saved." msgstr "" #: ../../roomops.c:881 #, c-format msgid "User '%s' kicked out of room '%s'." msgstr "" #: ../../roomops.c:898 #, c-format msgid "User '%s' invited to room '%s'." msgstr "" #: ../../roomops.c:927 msgid "Cancelled. No new room was created." msgstr "" #: ../../roomops.c:1187 msgid "Floor has been deleted." msgstr "" #: ../../roomops.c:1211 msgid "New floor has been created." msgstr "" #: ../../roomops.c:1290 msgid "Room list view" msgstr "" #: ../../roomops.c:1293 msgid "Show empty floors" msgstr "" #: ../../roomviews.c:50 msgid "Bulletin Board" msgstr "" #: ../../roomviews.c:51 msgid "Mail Folder" msgstr "" #: ../../roomviews.c:52 msgid "Address Book" msgstr "" #: ../../roomviews.c:53 ../../static/t/iconbar.html:24 #: ../../static/t/iconbar/edit.html:55 msgid "Calendar" msgstr "" #: ../../roomviews.c:54 msgid "Task List" msgstr "" #: ../../roomviews.c:55 msgid "Notes List" msgstr "" #: ../../roomviews.c:56 msgid "Wiki" msgstr "" #: ../../roomviews.c:57 msgid "Calendar List" msgstr "" #: ../../roomviews.c:58 msgid "Journal" msgstr "" #: ../../roomviews.c:59 msgid "Drafts" msgstr "" #: ../../roomviews.c:60 msgid "Blog" msgstr "" #: ../../tasks.c:93 msgid "Completed?" msgstr "" #: ../../tasks.c:95 msgid "Name of task" msgstr "" #: ../../tasks.c:97 msgid "Date due" msgstr "" #: ../../tasks.c:99 msgid "Category" msgstr "" #: ../../tasks.c:101 msgid "Show All" msgstr "" #: ../../tasks.c:223 msgid "Edit task" msgstr "" #: ../../tasks.c:242 ../../calendar.c:98 ../../calendar_view.c:298 #: ../../calendar_view.c:959 ../../calendar_view.c:1003 #: ../../calendar_view.c:1084 msgid "Summary:" msgstr "" #: ../../tasks.c:253 msgid "Start date:" msgstr "" #: ../../tasks.c:261 ../../tasks.c:291 msgid "No date" msgstr "" #: ../../tasks.c:265 ../../tasks.c:294 msgid "or" msgstr "" #: ../../tasks.c:279 ../../tasks.c:308 msgid "Time associated" msgstr "" #: ../../tasks.c:283 msgid "Due date:" msgstr "" #: ../../tasks.c:312 msgid "Completed:" msgstr "" #: ../../tasks.c:323 msgid "Category:" msgstr "" #: ../../tasks.c:333 ../../calendar.c:159 ../../static/t/files.html:12 msgid "Description:" msgstr "" #: ../../tasks.c:351 ../../event.c:764 msgid "Save" msgstr "" #: ../../tasks.c:352 ../../event.c:765 ../../static/t/aide/inet/section.html:5 #: ../../static/t/view_blog/comment.html:12 #: ../../static/t/view_blog/post.html:15 ../../static/t/view_message.html:32 #: ../../static/t/navbar.html:116 ../../static/t/msg_listview.html:27 msgid "Delete" msgstr "" #: ../../tasks.c:353 ../../vcard_edit.c:1216 ../../paging.c:66 #: ../../event.c:767 ../../sysmsgs.c:69 ../../who.c:200 ../../auth.c:812 #: ../../static/t/edit_message.html:135 ../../static/t/confirmlogoff.html:4 msgid "Cancel" msgstr "" #: ../../tasks.c:423 ../../calendar_view.c:1379 msgid "Untitled Task" msgstr "" #: ../../fmt_date.c:310 msgid "Time format" msgstr "" #: ../../listsub.c:54 ../../static/t/listsub/display.html:5 msgid "List subscription" msgstr "" #: ../../listsub.c:67 ../../static/t/listsub/display.html:9 msgid "List subscribe/unsubscribe" msgstr "" #: ../../listsub.c:87 ../../static/t/listsub/display.html:15 #: ../../static/t/listsub/display.html:34 msgid "Confirmation request sent" msgstr "" #: ../../listsub.c:89 #, c-format msgid "" "You are subscribing %s to the %s mailing list. The " "listserver has sent you an e-mail with one additional Web link for you to " "click on to confirm your subscription. This extra step is for your " "protection, as it prevents others from being able to subscribe you to lists " "without your consent.

    Please click on the link which is being e-" "mailed to you and your subscription will be confirmed.
    \n" msgstr "" #: ../../listsub.c:102 ../../static/t/listsub/display.html:24 msgid "Go back..." msgstr "" #: ../../listsub.c:253 ../../listsub.c:291 ../../listsub.c:327 #: ../../listsub.c:334 msgid "You need to specify the mailinglist to subscribe to." msgstr "" #: ../../listsub.c:260 ../../listsub.c:298 msgid "You need to specify the email address you'd like to subscribe with." msgstr "" #: ../../blogview_renderer.c:58 ../../blogview_renderer.c:74 #, c-format msgid "%d comments" msgstr "" #: ../../blogview_renderer.c:61 ../../blogview_renderer.c:77 msgid "permalink" msgstr "" #: ../../blogview_renderer.c:302 msgid "Newer posts" msgstr "" #: ../../blogview_renderer.c:311 msgid "Older posts" msgstr "" #: ../../useredit.c:629 msgid "" "An error occurred while trying to create or edit this address book entry." msgstr "" #: ../../useredit.c:717 msgid "Changes were not saved." msgstr "" #: ../../useredit.c:782 msgid "A new user has been created." msgstr "" #: ../../useredit.c:786 msgid "" "You are attempting to create a new user from within Citadel while running in " "host based authentication mode. In this mode, you must create new users on " "the host system, not within Citadel." msgstr "" #: ../../bbsview_renderer.c:312 msgid "Go to page: " msgstr "" #: ../../bbsview_renderer.c:354 msgid "First" msgstr "" #: ../../bbsview_renderer.c:360 msgid "Last" msgstr "" #: ../../graphics.c:56 msgid "Graphics upload has been cancelled." msgstr "" #: ../../graphics.c:62 msgid "You didn't upload a file." msgstr "" #: ../../graphics.c:112 msgid "your photo" msgstr "" #: ../../graphics.c:119 msgid "the icon for this room" msgstr "" #: ../../graphics.c:127 msgid "the Greetingpicture for the login prompt" msgstr "" #: ../../graphics.c:135 msgid "the Logoff banner picture" msgstr "" #: ../../graphics.c:146 msgid "the icon for this floor" msgstr "" #: ../../calendar_tools.c:100 msgid "Hour: " msgstr "" #: ../../calendar_tools.c:120 msgid "Minute: " msgstr "" #: ../../calendar_tools.c:191 msgid "(status unknown)" msgstr "" #: ../../calendar_tools.c:207 msgid "(needs action)" msgstr "" #: ../../calendar_tools.c:210 msgid "(accepted)" msgstr "" #: ../../calendar_tools.c:213 msgid "(declined)" msgstr "" #: ../../calendar_tools.c:216 msgid "(tenative)" msgstr "" #: ../../calendar_tools.c:219 msgid "(delegated)" msgstr "" #: ../../calendar_tools.c:222 msgid "(completed)" msgstr "" #: ../../calendar_tools.c:225 msgid "(in process)" msgstr "" #: ../../calendar_tools.c:228 msgid "(none)" msgstr "" #: ../../notes.c:343 msgid "Click on any note to edit it." msgstr "" #: ../../vcard_edit.c:175 ../../vcard_edit.c:178 msgid "(no name)" msgstr "" #: ../../vcard_edit.c:443 msgid " (work)" msgstr "" #: ../../vcard_edit.c:445 msgid " (home)" msgstr "" #: ../../vcard_edit.c:447 msgid " (cell)" msgstr "" #: ../../vcard_edit.c:458 ../../vcard_edit.c:1120 msgid "Address:" msgstr "" #: ../../vcard_edit.c:526 msgid "Telephone:" msgstr "" #: ../../vcard_edit.c:531 msgid "E-mail:" msgstr "" #: ../../vcard_edit.c:779 msgid "This address book is empty." msgstr "" #: ../../vcard_edit.c:793 msgid "An internal error has occurred." msgstr "" #: ../../vcard_edit.c:944 msgid "Error" msgstr "" #: ../../vcard_edit.c:1048 msgid "Edit contact information" msgstr "" #: ../../vcard_edit.c:1068 msgid "Prefix" msgstr "" #: ../../vcard_edit.c:1068 msgid "First Name" msgstr "" #: ../../vcard_edit.c:1068 msgid "Middle Name" msgstr "" #: ../../vcard_edit.c:1068 msgid "Last Name" msgstr "" #: ../../vcard_edit.c:1068 msgid "Suffix" msgstr "" #: ../../vcard_edit.c:1089 msgid "Display name:" msgstr "" #: ../../vcard_edit.c:1096 msgid "Title:" msgstr "" #: ../../vcard_edit.c:1103 msgid "Organization:" msgstr "" #: ../../vcard_edit.c:1114 msgid "PO box:" msgstr "" #: ../../vcard_edit.c:1130 msgid "City:" msgstr "" #: ../../vcard_edit.c:1136 msgid "State:" msgstr "" #: ../../vcard_edit.c:1142 msgid "ZIP code:" msgstr "" #: ../../vcard_edit.c:1148 msgid "Country:" msgstr "" #: ../../vcard_edit.c:1158 msgid "Home telephone:" msgstr "" #: ../../vcard_edit.c:1164 msgid "Work telephone:" msgstr "" #: ../../vcard_edit.c:1170 msgid "Mobile telephone:" msgstr "" #: ../../vcard_edit.c:1176 msgid "Fax number:" msgstr "" #: ../../vcard_edit.c:1187 msgid "Primary Internet e-mail address" msgstr "" #: ../../vcard_edit.c:1194 msgid "Internet e-mail aliases" msgstr "" #: ../../vcard_edit.c:1215 ../../sysmsgs.c:67 msgid "Save changes" msgstr "" #: ../../vcard_edit.c:1261 msgid "Unable to enter the room to save your message" msgstr "" #: ../../vcard_edit.c:1265 msgid "Aborting." msgstr "" #: ../../vcard_edit.c:1297 ../../vcard_edit.c:1341 ../../auth.c:367 #: ../../auth.c:397 msgid "An error has occurred." msgstr "" #: ../../vcard_edit.c:1399 msgid "Could Not decode vcard photo\n" msgstr "" #: ../../preferences.c:880 msgid "Cancelled. No settings were changed." msgstr "" #: ../../preferences.c:1092 msgid "Make this my start page" msgstr "" #: ../../preferences.c:1130 msgid "This isn't allowed to become the start page." msgstr "" #: ../../preferences.c:1132 msgid "You no longer have a start page selected." msgstr "" #: ../../preferences.c:1182 msgid "Prefered startpage" msgstr "" #: ../../calendar.c:76 msgid "Meeting invitation" msgstr "" #: ../../calendar.c:79 msgid "Attendee's reply to your invitation" msgstr "" #: ../../calendar.c:82 msgid "Published event" msgstr "" #: ../../calendar.c:85 msgid "This is an unknown type of calendar item." msgstr "" #: ../../calendar.c:107 ../../calendar_view.c:306 ../../calendar_view.c:964 #: ../../calendar_view.c:1008 ../../calendar_view.c:1089 msgid "Location:" msgstr "" #: ../../calendar.c:132 ../../calendar_view.c:351 ../../calendar_view.c:970 msgid "Date:" msgstr "" #: ../../calendar.c:139 ../../calendar_view.c:373 ../../calendar_view.c:1013 #: ../../calendar_view.c:1099 msgid "Starting date/time:" msgstr "" #: ../../calendar.c:150 ../../calendar_view.c:376 ../../calendar_view.c:1015 #: ../../calendar_view.c:1101 msgid "Ending date/time:" msgstr "" #: ../../calendar.c:168 ../../event.c:90 msgid "Recurrence" msgstr "" #: ../../calendar.c:169 ../../event.c:505 msgid "This is a recurring event" msgstr "" #: ../../calendar.c:178 msgid "Attendee:" msgstr "" #: ../../calendar.c:218 #, c-format msgid "This is an update of '%s' which is already in your calendar." msgstr "" #: ../../calendar.c:222 #, c-format msgid "This event would conflict with '%s' which is already in your calendar." msgstr "" #: ../../calendar.c:227 msgid "Update:" msgstr "" #: ../../calendar.c:228 msgid "CONFLICT:" msgstr "" #: ../../calendar.c:251 msgid "How would you like to respond to this invitation?" msgstr "" #: ../../calendar.c:252 msgid "Accept" msgstr "" #: ../../calendar.c:253 msgid "Tentative" msgstr "" #: ../../calendar.c:254 msgid "Decline" msgstr "" #: ../../calendar.c:271 msgid "Click Update to accept this reply and update your calendar." msgstr "" #: ../../calendar.c:272 msgid "Update" msgstr "" #: ../../calendar.c:273 msgid "Ignore" msgstr "" #: ../../calendar.c:295 msgid "There was an error parsing this calendar item." msgstr "" #: ../../calendar.c:328 msgid "" "You have accepted this meeting invitation. It has been entered into your " "calendar." msgstr "" #: ../../calendar.c:332 msgid "" "You have tentatively accepted this meeting invitation. It has been " "'pencilled in' to your calendar." msgstr "" #: ../../calendar.c:336 msgid "" "You have declined this meeting invitation. It has not been entered " "into your calendar." msgstr "" #: ../../calendar.c:341 msgid "A reply has been sent to the meeting organizer." msgstr "" #. / Translators: RSVP aka Répondez s'il-vous-plaît Is the term #. / that the recipient of an ical-invitation should please #. / answer this request. #: ../../calendar.c:376 msgid "Your calendar has been updated to reflect this RSVP." msgstr "" #: ../../calendar.c:378 msgid "" "You have chosen to ignore this RSVP. Your calendar has not been " "updated." msgstr "" #: ../../calendar.c:932 msgid "Calendar day view begins at:" msgstr "" #: ../../calendar.c:933 msgid "Calendar day view ends at:" msgstr "" #: ../../calendar.c:934 msgid "Week starts on:" msgstr "" #: ../../paging.c:35 msgid "Send instant message" msgstr "" #: ../../paging.c:43 msgid "Send an instant message to: " msgstr "" #: ../../paging.c:57 msgid "Enter message text:" msgstr "" #: ../../paging.c:65 ../../static/t/edit_message.html:109 msgid "Send message" msgstr "" #: ../../paging.c:84 msgid "Message was not sent." msgstr "" #: ../../paging.c:95 msgid "Message has been sent to " msgstr "" #: ../../iconbar.c:328 msgid "Iconbar Setting" msgstr "" #. #. * Set to 'unknown' right from the beginning. Unless we learn #. * something else, that's what we'll go with. #. #: ../../availability.c:148 msgid "availability unknown" msgstr "" #: ../../availability.c:169 msgid "free" msgstr "" #: ../../availability.c:179 msgid "BUSY" msgstr "" #: ../../serv_func.c:193 msgid "" "This server is already serving its maximum number of users and cannot accept " "any additional logins at this time. Please try again later or contact your " "system administrator." msgstr "" #: ../../serv_func.c:198 ../../serv_func.c:227 msgid "Received unexpected answer from Citadel server; bailing out." msgstr "" #: ../../serv_func.c:236 #, c-format msgid "" "You are connected to a Citadel server running Citadel %d.%02d. \n" "In order to run this version of WebCit you must also have Citadel %d.%02d or " "newer.\n" "\n" "\n" msgstr "" #: ../../event.c:70 msgid "seconds" msgstr "" #: ../../event.c:71 msgid "minutes" msgstr "" #: ../../event.c:72 msgid "hours" msgstr "" #: ../../event.c:73 msgid "days" msgstr "" #: ../../event.c:74 msgid "weeks" msgstr "" #: ../../event.c:75 msgid "months" msgstr "" #: ../../event.c:76 msgid "years" msgstr "" #: ../../event.c:77 msgid "never" msgstr "" #: ../../event.c:81 msgid "first" msgstr "" #: ../../event.c:82 msgid "second" msgstr "" #: ../../event.c:83 msgid "third" msgstr "" #: ../../event.c:84 msgid "fourth" msgstr "" #: ../../event.c:85 msgid "fifth" msgstr "" #: ../../event.c:88 msgid "Event" msgstr "" #: ../../event.c:89 ../../event.c:437 ../../event.c:449 msgid "Attendees" msgstr "" #: ../../event.c:167 msgid "Add or edit an event" msgstr "" #: ../../event.c:206 ../../static/t/iconbar.html:13 #: ../../static/t/iconbar/edit.html:29 msgid "Summary" msgstr "" #: ../../event.c:217 msgid "Location" msgstr "" #: ../../event.c:228 ../../calendar_view.c:760 msgid "Start" msgstr "" #: ../../event.c:271 ../../calendar_view.c:957 ../../calendar_view.c:986 msgid "All day event" msgstr "" #: ../../event.c:277 ../../calendar_view.c:761 msgid "End" msgstr "" #: ../../event.c:327 ../../static/t/iconbar.html:34 #: ../../static/t/iconbar/edit.html:49 msgid "Notes" msgstr "" #: ../../event.c:369 msgid "Organizer" msgstr "" #: ../../event.c:374 msgid "(you are the organizer)" msgstr "" #: ../../event.c:392 msgid "Show time as:" msgstr "" #: ../../event.c:415 msgid "Free" msgstr "" #: ../../event.c:423 msgid "Busy" msgstr "" #: ../../event.c:440 msgid "(One per line)" msgstr "" #: ../../event.c:450 ../../static/t/edit_message.html:143 #: ../../static/t/iconbar.html:29 ../../static/t/iconbar/edit.html:42 msgid "Contacts" msgstr "" #: ../../event.c:513 msgid "Recurrence rule" msgstr "" #: ../../event.c:517 msgid "Repeats every" msgstr "" #. begin 'weekday_selector' div #: ../../event.c:535 msgid "on these weekdays:" msgstr "" #: ../../event.c:593 #, c-format msgid "on day %s%d%s of the month" msgstr "" #: ../../event.c:602 ../../event.c:664 msgid "on the " msgstr "" #: ../../event.c:626 msgid "of the month" msgstr "" #: ../../event.c:655 msgid "every " msgstr "" #: ../../event.c:656 msgid "year on this date" msgstr "" #: ../../event.c:688 ../../static/t/msg_listselector_bottom.html:7 #: ../../static/t/msg_listselector_top.html:7 msgid "of" msgstr "" #: ../../event.c:712 msgid "Recurrence range" msgstr "" #: ../../event.c:720 msgid "No ending date" msgstr "" #: ../../event.c:727 msgid "Repeat this event" msgstr "" #: ../../event.c:730 msgid "times" msgstr "" #: ../../event.c:738 msgid "Repeat this event until " msgstr "" #: ../../event.c:766 msgid "Check attendee availability" msgstr "" #: ../../event.c:858 ../../calendar_view.c:272 ../../calendar_view.c:468 #: ../../calendar_view.c:937 msgid "Untitled Event" msgstr "" #: ../../sysmsgs.c:52 #, c-format msgid "Edit %s" msgstr "" #: ../../sysmsgs.c:55 #, c-format msgid "" "Enter %s below. Text is formatted to the reader's browser. A newline is " "forced by preceding the next line by a blank." msgstr "" #: ../../sysmsgs.c:89 #, c-format msgid "Cancelled. %s was not saved." msgstr "" #: ../../sysmsgs.c:109 msgid " has been saved." msgstr "" #: ../../sysmsgs.c:116 ../../sysmsgs.c:117 msgid "Room info" msgstr "" #: ../../sysmsgs.c:122 ../../sysmsgs.c:124 msgid "Your bio" msgstr "" #: ../../calendar_view.c:297 ../../calendar_view.c:958 #: ../../calendar_view.c:1002 ../../calendar_view.c:1083 #: ../../static/t/sieve/display_one.html:20 msgid "From" msgstr "" #: ../../calendar_view.c:355 ../../calendar_view.c:974 msgid "Starting date:" msgstr "" #: ../../calendar_view.c:361 ../../calendar_view.c:976 msgid "Ending date:" msgstr "" #: ../../calendar_view.c:369 ../../calendar_view.c:1095 msgid "Date/time:" msgstr "" #: ../../calendar_view.c:386 ../../calendar_view.c:980 #: ../../calendar_view.c:1018 ../../calendar_view.c:1105 #: ../../static/t/room/edit/tab_share.html:32 msgid "Notes:" msgstr "" #: ../../calendar_view.c:585 ../../calendar_view.c:721 msgid "previous" msgstr "" #: ../../calendar_view.c:597 ../../calendar_view.c:733 #: ../../calendar_view.c:1308 msgid "next" msgstr "" #: ../../calendar_view.c:756 msgid "Week" msgstr "" #: ../../calendar_view.c:758 msgid "Hours" msgstr "" #: ../../calendar_view.c:759 ../../static/t/sieve/display_one.html:22 #: ../../static/t/msg_listview.html:9 msgid "Subject" msgstr "" #: ../../calendar_view.c:1001 ../../calendar_view.c:1024 msgid "Ongoing event" msgstr "" #: ../../messages.c:70 msgid "ERROR:" msgstr "" #: ../../messages.c:88 msgid "Empty message" msgstr "" #: ../../messages.c:1010 msgid "Cancelled. Message was not posted." msgstr "" #: ../../messages.c:1013 msgid "Automatically cancelled because you have already saved this message." msgstr "" #: ../../messages.c:1037 msgid "Saved to Drafts failed: " msgstr "" #: ../../messages.c:1102 msgid "Refusing to post empty message.\n" msgstr "" #: ../../messages.c:1128 msgid "Message has been saved to Drafts.\n" msgstr "" #: ../../messages.c:1137 msgid "Message has been sent.\n" msgstr "" #: ../../messages.c:1140 msgid "Message has been posted.\n" msgstr "" #: ../../messages.c:1679 msgid "The message was not moved." msgstr "" #: ../../messages.c:1719 #, c-format msgid "An error occurred while retrieving this part: %s/%s\n" msgstr "" #: ../../messages.c:1796 #, c-format msgid "An error occurred while retrieving this part: %s\n" msgstr "" #: ../../messages.c:1956 msgid "Attach signature to email messages?" msgstr "" #: ../../messages.c:1959 msgid "Use this signature:" msgstr "" #: ../../messages.c:1961 msgid "Default character set for email headers:" msgstr "" #: ../../messages.c:1964 msgid "Preferred email address" msgstr "" #: ../../messages.c:1966 msgid "Preferred display name for email messages" msgstr "" #: ../../messages.c:1970 msgid "Preferred display name for bulletin board posts" msgstr "" #: ../../messages.c:1973 msgid "Mailbox view mode" msgstr "" #: ../../inetconf.c:110 ../../inetconf.c:119 ../../inetconf.c:133 #: ../../inetconf.c:159 ../../netconf.c:156 ../../netconf.c:183 #: ../../netconf.c:191 ../../netconf.c:239 ../../netconf.c:247 msgid "Invalid Parameter" msgstr "" #: ../../inetconf.c:126 msgid " has been deleted." msgstr "" #. added status message #: ../../inetconf.c:144 msgid " added." msgstr "" #: ../../who.c:154 msgid "Edit your session display" msgstr "" #: ../../who.c:158 msgid "" "This screen allows you to change the way your session appears in the 'Who is " "online' listing. To turn off any 'fake' name you've previously set, simply " "click the appropriate 'change' button without typing anything in the " "corresponding box. " msgstr "" #: ../../who.c:171 msgid "Room name:" msgstr "" #: ../../who.c:176 msgid "Change room name" msgstr "" #: ../../who.c:180 msgid "Host name:" msgstr "" #: ../../who.c:185 msgid "Change host name" msgstr "" #: ../../who.c:190 ../../static/t/aide/edituser/detailview.html:20 #: ../../static/t/openid_manual_create.html:9 #: ../../static/t/get_logged_in.html:57 ../../static/t/get_logged_in.html:72 msgid "User name:" msgstr "" #: ../../who.c:195 msgid "Change user name" msgstr "" #: ../../siteconfig.c:46 ../../siteconfig.c:64 ../../roomlist.c:44 #: ../../roomlist.c:394 ../../static/t/room/edit/tab_expire.html:72 #: ../../static/t/room/edit/tab_config.html:149 #: ../../static/t/room/edit/tab_access.html:42 msgid "Higher access is required to access this function." msgstr "" #: ../../siteconfig.c:256 msgid "WARNING: Failed to parse Server Config; do you run a to new citserver?" msgstr "" #: ../../siteconfig.c:319 msgid "Your system configuration has been updated." msgstr "" #: ../../wiki.c:69 ../../wiki.c:162 ../../wiki.c:282 #, c-format msgid "There is no room called '%s'." msgstr "" #: ../../wiki.c:76 #, c-format msgid "'%s' is not a Wiki room." msgstr "" #: ../../wiki.c:110 #, c-format msgid "There is no page called '%s' here." msgstr "" #: ../../wiki.c:112 msgid "" "Select the 'Edit this page' link in the room banner if you would like to " "create this page." msgstr "" #: ../../wiki.c:181 ../../static/t/msg_listview.html:11 msgid "Date" msgstr "" #: ../../wiki.c:182 msgid "Author" msgstr "" #: ../../wiki.c:209 ../../wiki.c:218 msgid "(show)" msgstr "" #: ../../wiki.c:211 ../../static/t/navbar.html:145 msgid "Current version" msgstr "" #: ../../wiki.c:223 msgid "(revert)" msgstr "" #: ../../wiki.c:300 msgid "Page title" msgstr "" #: ../../webcit.c:316 msgid "Authorization Required" msgstr "" #: ../../webcit.c:324 #, c-format msgid "" "The resource you requested requires a valid username and password. You could " "not be logged in: %s\n" msgstr "" #: ../../webcit.c:647 ../../auth.c:526 msgid "" "This program was unable to connect or stay connected to the Citadel server. " "Please report this problem to your system administrator." msgstr "" #: ../../webcit.c:654 ../../auth.c:532 msgid "Read More..." msgstr "" #: ../../smtpqueue.c:134 ../../static/t/aide/ignetconf/section.html:5 #: ../../static/t/view_mailq/message.html:2 msgid "(Delete)" msgstr "" #: ../../smtpqueue.c:334 msgid "First Attempt pending" msgstr "" #: ../../roomlist.c:99 msgid "My Folders" msgstr "" #: ../../downloads.c:289 #, c-format msgid "An error occurred while retrieving this file: %s\n" msgstr "" #: ../../roomtokens.c:572 msgid "file" msgstr "" #: ../../roomtokens.c:574 msgid "files" msgstr "" #: ../../summary.c:128 msgid "(None)" msgstr "" #: ../../summary.c:184 msgid "(Nothing)" msgstr "" #: ../../msg_renderers.c:579 ../../static/t/who/bio.html:15 msgid "edit" msgstr "" #: ../../msg_renderers.c:1119 msgid "I don't know how to display " msgstr "" #: ../../msg_renderers.c:1353 msgid "(no subject)" msgstr "" #: ../../addressbook_popup.c:186 msgid "Add" msgstr "" #. an erased user #: ../../auth.c:30 ../../static/t/aide/edituser/detailview.html:43 #: ../../static/t/aide/siteconfig/tab_access.html:40 #: ../../static/t/aide/siteconfig/tab_access.html:51 msgid "Deleted" msgstr "" #. a new user #: ../../auth.c:33 ../../static/t/aide/edituser/detailview.html:44 #: ../../static/t/aide/siteconfig/tab_access.html:41 #: ../../static/t/aide/siteconfig/tab_access.html:52 #: ../../static/t/get_logged_in.html:79 msgid "New User" msgstr "" #. a trouble maker #: ../../auth.c:36 ../../static/t/aide/edituser/detailview.html:45 #: ../../static/t/aide/siteconfig/tab_access.html:42 #: ../../static/t/aide/siteconfig/tab_access.html:53 msgid "Problem User" msgstr "" #. user with normal privileges #: ../../auth.c:39 ../../static/t/aide/edituser/detailview.html:46 #: ../../static/t/aide/siteconfig/tab_access.html:43 #: ../../static/t/aide/siteconfig/tab_access.html:54 msgid "Local User" msgstr "" #. a user that may access network resources #: ../../auth.c:42 ../../static/t/aide/edituser/detailview.html:47 #: ../../static/t/aide/siteconfig/tab_access.html:44 #: ../../static/t/aide/siteconfig/tab_access.html:55 msgid "Network User" msgstr "" #. a moderator #: ../../auth.c:45 ../../static/t/aide/edituser/detailview.html:48 #: ../../static/t/aide/siteconfig/tab_access.html:45 #: ../../static/t/aide/siteconfig/tab_access.html:56 msgid "Preferred User" msgstr "" #. chief #: ../../auth.c:48 ../../static/t/aide/edituser/detailview.html:49 #: ../../static/t/aide/siteconfig/tab_access.html:46 #: ../../static/t/aide/siteconfig/tab_access.html:57 msgid "Admin" msgstr "" #: ../../auth.c:513 ../../static/t/iconbar.html:80 #: ../../static/t/confirmlogoff.html:3 #: ../../static/t/menu/basic_commands.html:19 msgid "Log off" msgstr "" #: ../../auth.c:537 msgid "Log in again" msgstr "" #: ../../auth.c:585 ../../static/t/aide/usermanagement.html:3 msgid "Validate new users" msgstr "" #: ../../auth.c:605 msgid "No users require validation at this time." msgstr "" #: ../../auth.c:655 msgid "very weak" msgstr "" #: ../../auth.c:658 msgid "weak" msgstr "" #: ../../auth.c:661 msgid "ok" msgstr "" #: ../../auth.c:665 msgid "strong" msgstr "" #: ../../auth.c:683 #, c-format msgid "Current access level: %d (%s)\n" msgstr "" #: ../../auth.c:691 msgid "Select access level for this user:" msgstr "" #: ../../auth.c:776 ../../static/t/menu/your_info.html:4 msgid "Change your password" msgstr "" #: ../../auth.c:800 msgid "Enter new password:" msgstr "" #: ../../auth.c:804 msgid "Enter it again to confirm:" msgstr "" #: ../../auth.c:810 msgid "Change password" msgstr "" #: ../../auth.c:830 msgid "Cancelled. Password was not changed." msgstr "" #: ../../auth.c:839 msgid "They don't match. Password was not changed." msgstr "" #: ../../auth.c:845 msgid "Blank passwords are not allowed." msgstr "" #: ../../openid.c:34 msgid "Manage Account/OpenID Associations" msgstr "" #: ../../openid.c:52 msgid "Do you really want to delete this OpenID?" msgstr "" #: ../../openid.c:53 msgid "(delete)" msgstr "" #: ../../openid.c:61 msgid "Add an OpenID: " msgstr "" #: ../../openid.c:64 msgid "Attach" msgstr "" #: ../../openid.c:68 #, c-format msgid "%s does not permit authentication via OpenID." msgstr "" #: ../../html2html.c:136 #, c-format msgid "realloc() error! couldn't get %d bytes: %s" msgstr "" #: ../../static/t/viewomatic.html:4 msgid "View as:" msgstr "" #: ../../static/t/sieve/list.html:32 ../../static/t/sieve/none.html:4 #: ../../static/t/menu/your_info.html:7 msgid "View/edit server-side mail filters" msgstr "" #: ../../static/t/sieve/list.html:41 msgid "When new mail arrives: " msgstr "" #: ../../static/t/sieve/list.html:43 msgid "Leave it in my inbox without filtering" msgstr "" #: ../../static/t/sieve/list.html:44 msgid "Filter it according to rules selected below" msgstr "" #: ../../static/t/sieve/list.html:45 msgid "Filter it through a manually edited script (advanced users only)" msgstr "" #: ../../static/t/sieve/list.html:52 msgid "Your incoming mail will not be filtered through any scripts." msgstr "" #: ../../static/t/sieve/list.html:64 msgid "Add rule" msgstr "" #: ../../static/t/sieve/list.html:71 msgid "The currently active script is: " msgstr "" #: ../../static/t/sieve/list.html:76 ../../static/t/sieve/add.html:3 msgid "Add or delete scripts" msgstr "" #: ../../static/t/sieve/display_one.html:16 msgid "If" msgstr "" #: ../../static/t/sieve/display_one.html:21 msgid "To or Cc" msgstr "" #: ../../static/t/sieve/display_one.html:23 msgid "Reply-to" msgstr "" #: ../../static/t/sieve/display_one.html:24 #: ../../static/t/msg_listview.html:10 #: ../../static/t/view_mailq/header.html:27 msgid "Sender" msgstr "" #: ../../static/t/sieve/display_one.html:25 msgid "Resent-From" msgstr "" #: ../../static/t/sieve/display_one.html:26 msgid "Resent-To" msgstr "" #: ../../static/t/sieve/display_one.html:27 msgid "Envelope From" msgstr "" #: ../../static/t/sieve/display_one.html:28 msgid "Envelope To" msgstr "" #: ../../static/t/sieve/display_one.html:29 msgid "X-Mailer" msgstr "" #: ../../static/t/sieve/display_one.html:30 msgid "X-Spam-Flag" msgstr "" #: ../../static/t/sieve/display_one.html:31 msgid "X-Spam-Status" msgstr "" #: ../../static/t/sieve/display_one.html:32 msgid "List-ID" msgstr "" #: ../../static/t/sieve/display_one.html:33 msgid "Message size" msgstr "" #: ../../static/t/sieve/display_one.html:34 #: ../../static/t/select_messageindex_all.html:1 msgid "All" msgstr "" #: ../../static/t/sieve/display_one.html:41 msgid "contains" msgstr "" #: ../../static/t/sieve/display_one.html:42 msgid "does not contain" msgstr "" #: ../../static/t/sieve/display_one.html:43 msgid "is" msgstr "" #: ../../static/t/sieve/display_one.html:44 msgid "is not" msgstr "" #: ../../static/t/sieve/display_one.html:45 msgid "matches" msgstr "" #: ../../static/t/sieve/display_one.html:46 msgid "does not match" msgstr "" #: ../../static/t/sieve/display_one.html:52 msgid "(All messages)" msgstr "" #: ../../static/t/sieve/display_one.html:56 msgid "is larger than" msgstr "" #: ../../static/t/sieve/display_one.html:57 msgid "is smaller than" msgstr "" #: ../../static/t/sieve/display_one.html:59 msgid "bytes" msgstr "" #: ../../static/t/sieve/display_one.html:65 msgid "Keep" msgstr "" #: ../../static/t/sieve/display_one.html:66 msgid "Discard silently" msgstr "" #: ../../static/t/sieve/display_one.html:67 msgid "Reject" msgstr "" #: ../../static/t/sieve/display_one.html:68 msgid "Move message to" msgstr "" #: ../../static/t/sieve/display_one.html:69 msgid "Forward to" msgstr "" #: ../../static/t/sieve/display_one.html:70 msgid "Vacation" msgstr "" #: ../../static/t/sieve/display_one.html:82 msgid "Message:" msgstr "" #: ../../static/t/sieve/display_one.html:90 msgid "and then" msgstr "" #: ../../static/t/sieve/display_one.html:93 msgid "continue processing" msgstr "" #: ../../static/t/sieve/display_one.html:94 msgid "stop" msgstr "" #: ../../static/t/sieve/none.html:9 msgid "" "This installation of Citadel was built without support for server-side mail " "filtering.
    Please contact your system administrator if you require this " "feature.
    " msgstr "" #: ../../static/t/sieve/add.html:9 msgid "Add a new script" msgstr "" #: ../../static/t/sieve/add.html:10 msgid "" "To create a new script, enter the desired script name in the box below and " "click 'Create'." msgstr "" #: ../../static/t/sieve/add.html:14 msgid "Script name: " msgstr "" #: ../../static/t/sieve/add.html:18 msgid "Edit scripts" msgstr "" #: ../../static/t/sieve/add.html:20 msgid "Return to the script editing screen" msgstr "" #: ../../static/t/sieve/add.html:23 msgid "Delete scripts" msgstr "" #: ../../static/t/sieve/add.html:24 msgid "" "To delete an existing script, select the script name from the list and click " "'Delete'." msgstr "" #: ../../static/t/msg/confirm_move.html:4 msgid "Confirm move of message" msgstr "" #: ../../static/t/msg/confirm_move.html:12 msgid "Move this message to:" msgstr "" #: ../../static/t/login.html:5 msgid "powered by" msgstr "" #: ../../static/t/login.html:15 ../../static/t/iconbar.html:88 #: ../../static/t/get_logged_in.html:64 ../../static/t/get_logged_in.html:88 #: ../../static/t/get_logged_in.html:93 ../../static/t/get_logged_in.html:98 #: ../../static/t/get_logged_in.html:107 msgid "Log in" msgstr "" #: ../../static/t/trailing.html:14 msgid "" "WARNING: You have JavaScript disabled in your web browser. Many functions " "of this system will not work properly." msgstr "" #: ../../static/t/view_submessage.html:4 #: ../../static/t/view_message/replyquote.html:3 #: ../../static/t/view_message/replyquote.html:7 #: ../../static/t/view_message/print.html:8 ../../static/t/view_message.html:7 msgid "from " msgstr "" #: ../../static/t/searchomatic.html:4 msgid "Search: " msgstr "" #: ../../static/t/listsub/display.html:16 msgid "You are subscribing " msgstr "" #: ../../static/t/listsub/display.html:17 msgid " to the " msgstr "" #: ../../static/t/listsub/display.html:18 msgid " mailing list." msgstr "" #: ../../static/t/listsub/display.html:19 msgid "" "The listserver has sent you an e-mail with one additional Web link for you " "to click on to confirm your subscription." msgstr "" #: ../../static/t/listsub/display.html:20 msgid "" "This extra step is for your protection, as it prevents others from being " "able to subscribe you to lists without your consent." msgstr "" #: ../../static/t/listsub/display.html:22 msgid "" "Please click on the link which is being e-mailed to you and your " "subscription will be confirmed." msgstr "" #: ../../static/t/listsub/display.html:27 #: ../../static/t/listsub/display.html:47 msgid "ERROR" msgstr "" #: ../../static/t/listsub/display.html:35 msgid "You are unsubscribing" msgstr "" #: ../../static/t/listsub/display.html:37 msgid "from the" msgstr "" #: ../../static/t/listsub/display.html:39 msgid "mailing list." msgstr "" #: ../../static/t/listsub/display.html:40 msgid "" "The listserver has sent you an e-mail with one additional Web link for you " "to click on to confirm your unsubscription." msgstr "" #: ../../static/t/listsub/display.html:41 msgid "" "This extra step is for your protection, as it prevents others from being " "able to unsubscribe you from lists without your consent." msgstr "" #: ../../static/t/listsub/display.html:43 msgid "" "Please click on the link which is being e-mailed to you and your " "unsubscription will be confirmed." msgstr "" #: ../../static/t/listsub/display.html:44 msgid "Back..." msgstr "" #: ../../static/t/listsub/display.html:54 msgid "Confirmation successful!" msgstr "" #: ../../static/t/listsub/display.html:56 msgid "Confirmation failed." msgstr "" #: ../../static/t/listsub/display.html:57 msgid "This could mean one of two things:" msgstr "" #: ../../static/t/listsub/display.html:59 msgid "" "You waited too long to confirm your subscribe/unsubscribe request (the " "confirmation link is only valid for three days)" msgstr "" #: ../../static/t/listsub/display.html:60 msgid "" "You have already successfully confirmed your subscribe/unsubscribe " "request and are attempting to do it again." msgstr "" #: ../../static/t/listsub/display.html:62 msgid "The error returned by the server was: " msgstr "" #: ../../static/t/listsub/display.html:70 msgid "Name of list:" msgstr "" #: ../../static/t/listsub/display.html:75 msgid "Your e-mail address:" msgstr "" #: ../../static/t/listsub/display.html:79 msgid "(If subscribing) preferred format: " msgstr "" #: ../../static/t/listsub/display.html:80 msgid "One message at a time" msgstr "" #: ../../static/t/listsub/display.html:81 msgid "Digest format" msgstr "" #: ../../static/t/listsub/display.html:89 msgid "" "When you attempt to subscribe or unsubscribe to a mailing list, you will " "receive an e-mail containing one additional web link to click on for final " "confirmation." msgstr "" #: ../../static/t/listsub/display.html:90 msgid "" "This extra step is for your protection, as it prevents others from being " "able to subscribe or unsubscribe you to lists." msgstr "" #: ../../static/t/floors_edit_one.html:11 msgid "(delete floor)" msgstr "" #: ../../static/t/floors_edit_one.html:13 msgid "(edit graphic)" msgstr "" #: ../../static/t/floors.html:4 msgid "Add/change/delete floors" msgstr "" #: ../../static/t/floors.html:10 msgid "Floor number" msgstr "" #: ../../static/t/floors.html:11 msgid "Floor name" msgstr "" #: ../../static/t/floors.html:12 msgid "Number of rooms" msgstr "" #: ../../static/t/floors.html:13 msgid "Floor CSS" msgstr "" #: ../../static/t/files.html:4 msgid "Files available for download in" msgstr "" #: ../../static/t/files.html:9 msgid "Upload a file:" msgstr "" #: ../../static/t/files.html:30 msgid "Filename" msgstr "" #: ../../static/t/files.html:31 msgid "Size" msgstr "" #: ../../static/t/files.html:32 msgid "Content" msgstr "" #: ../../static/t/files.html:33 msgid "Description" msgstr "" #: ../../static/t/edit_message.html:9 ../../static/t/iconbar.html:50 #: ../../static/t/iconbar.html:59 msgid "Loading" msgstr "" #: ../../static/t/edit_message.html:23 msgid "from" msgstr "" #: ../../static/t/edit_message.html:29 ../../static/t/edit_message.html:38 msgid "Anonymous" msgstr "" #: ../../static/t/edit_message.html:47 msgid "in" msgstr "" #: ../../static/t/edit_message.html:51 msgid "To:" msgstr "" #: ../../static/t/edit_message.html:57 #: ../../static/t/view_message/print.html:15 #: ../../static/t/view_message.html:15 msgid "CC:" msgstr "" #: ../../static/t/edit_message.html:63 msgid "BCC:" msgstr "" #: ../../static/t/edit_message.html:71 msgid "Subject (optional):" msgstr "" #: ../../static/t/edit_message.html:71 #: ../../static/t/view_message/replyquote.html:8 #: ../../static/t/view_message/print.html:16 #: ../../static/t/view_message.html:16 msgid "Subject:" msgstr "" #: ../../static/t/edit_message.html:86 msgid "--- forwarded message ---" msgstr "" #: ../../static/t/edit_message.html:110 msgid "Post message" msgstr "" #: ../../static/t/edit_message.html:118 msgid "Save to Drafts" msgstr "" #: ../../static/t/edit_message.html:126 #: ../../static/t/edit_message/attachments_pane.html:5 msgid "Attachments:" msgstr "" #: ../../static/t/aide/display_serverrestart_page.html:4 msgid "Message to your Users:" msgstr "" #: ../../static/t/aide/display_generic_result.html:2 msgid "Server command results" msgstr "" #: ../../static/t/aide/display_generic_result.html:18 msgid "Enter another command" msgstr "" #: ../../static/t/aide/display_generic_result.html:19 msgid "Return to menu" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:3 msgid "Site configuration" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:6 #: ../../static/t/aide/edituser/select.html:9 msgid "You need to be aide to view this." msgstr "" #: ../../static/t/aide/display_sitewide_config.html:11 msgid "General" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:12 msgid "Access" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:13 msgid "Network" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:14 msgid "Tuning" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:15 msgid "Directory" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:16 msgid "Auto-purger" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:17 msgid "Indexing/Journaling" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:18 #: ../../static/t/aide/siteconfig/tab_pushmail.html:1 msgid "Push Email" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:19 msgid "Pop3" msgstr "" #: ../../static/t/aide/usermanagement.html:2 msgid "Add, change, delete user accounts" msgstr "" #: ../../static/t/aide/display_inetconf.html:5 #: ../../static/t/aide/display_menu.html:5 msgid "System Administration Menu" msgstr "" #: ../../static/t/aide/display_inetconf.html:6 #: ../../static/t/aide/display_menu.html:6 msgid "Room Admin Menu" msgstr "" #: ../../static/t/aide/display_inetconf.html:13 msgid "Local host aliases" msgstr "" #: ../../static/t/aide/display_inetconf.html:14 msgid "Directory domains" msgstr "" #: ../../static/t/aide/display_inetconf.html:15 msgid "Smart hosts" msgstr "" #: ../../static/t/aide/display_inetconf.html:16 msgid "Fallback smart hosts" msgstr "" #: ../../static/t/aide/display_inetconf.html:17 msgid "Notification hosts" msgstr "" #: ../../static/t/aide/display_inetconf.html:22 msgid "RBL hosts" msgstr "" #: ../../static/t/aide/display_inetconf.html:23 msgid "SpamAssassin hosts" msgstr "" #: ../../static/t/aide/display_inetconf.html:24 msgid "ClamAV clamd hosts" msgstr "" #: ../../static/t/aide/display_inetconf.html:25 msgid "Masqueradable domains" msgstr "" #: ../../static/t/aide/edituser/select.html:5 msgid "Edit or delete users" msgstr "" #: ../../static/t/aide/edituser/select.html:17 msgid "Add users" msgstr "" #: ../../static/t/aide/edituser/select.html:20 msgid "Edit or Delete users" msgstr "" #: ../../static/t/aide/edituser/box_select.html:1 msgid "" "To edit an existing user account, select the user name from the list and " "click 'Edit'." msgstr "" #: ../../static/t/aide/edituser/detailview.html:4 msgid "Edit user account: " msgstr "" #: ../../static/t/aide/edituser/detailview.html:24 #: ../../static/t/room/edit/tab_feed.html:14 msgid "Password" msgstr "" #: ../../static/t/aide/edituser/detailview.html:28 msgid "Permission to send Internet mail" msgstr "" #: ../../static/t/aide/edituser/detailview.html:32 msgid "Number of logins" msgstr "" #: ../../static/t/aide/edituser/detailview.html:36 msgid "Messages submitted" msgstr "" #: ../../static/t/aide/edituser/detailview.html:40 msgid "Access level" msgstr "" #: ../../static/t/aide/edituser/detailview.html:54 msgid "User ID number" msgstr "" #: ../../static/t/aide/edituser/detailview.html:58 msgid "Date and time of last login" msgstr "" #: ../../static/t/aide/edituser/detailview.html:68 msgid "Auto-purge after this many days" msgstr "" #: ../../static/t/aide/edituser/add.html:1 msgid "" "To create a new user account, enter the desired user name in the box below " "and click 'Create'." msgstr "" #: ../../static/t/aide/edituser/add.html:5 msgid "New user: " msgstr "" #: ../../static/t/aide/display_generic_cmd.html:4 msgid "Enter a server command" msgstr "" #: ../../static/t/aide/display_generic_cmd.html:12 msgid "" "This screen allows you to enter Citadel server commands which are not " "supported by WebCit. If you do not know what that means, then this screen " "will not be of much use to you." msgstr "" #: ../../static/t/aide/display_generic_cmd.html:15 msgid "Enter command:" msgstr "" #: ../../static/t/aide/display_generic_cmd.html:17 msgid "Command input (if requesting SEND_LISTING transfer mode):" msgstr "" #: ../../static/t/aide/display_generic_cmd.html:20 msgid "Detected host header is " msgstr "" #: ../../static/t/aide/display_ignetconf.html:4 msgid "Network configuration" msgstr "" #: ../../static/t/aide/display_ignetconf.html:10 #: ../../static/t/aide/ignetconf/edit_node.html:5 #: ../../static/t/aide/ignetconf/add.html:5 msgid "Add a new node" msgstr "" #: ../../static/t/aide/display_ignetconf.html:14 msgid "Currently configured nodes" msgstr "" #: ../../static/t/aide/display_serverrestart.html:26 msgid "Restart Citadel" msgstr "" #: ../../static/t/aide/floorconfig.html:2 msgid "Add, change, or delete floors" msgstr "" #: ../../static/t/aide/serverrestart/box.html:3 msgid "Please wait while the Citadel server is restarted... " msgstr "" #: ../../static/t/aide/serverrestart/box_page_do.html:3 msgid "" "Please wait while your users are being paged, the citadel server will be " "restarted after that... " msgstr "" #: ../../static/t/aide/inet/masqdomains.html:2 msgid "(Domains as which users are allowed to masquerade)" msgstr "" #: ../../static/t/aide/inet/rbldns.html:2 msgid "(hosts running a Realtime Blackhole List)" msgstr "" #: ../../static/t/aide/inet/dirnames.html:2 msgid "(domains mapped with the Global Address Book)" msgstr "" #: ../../static/t/aide/inet/notify.html:2 msgid "(URLS for notifications when users receive new mails; )" msgstr "" #: ../../static/t/aide/inet/notify.html:2 msgid "Syntax: Notificationtemplatename:http[s]://user:password@hostname/path" msgstr "" #: ../../static/t/aide/inet/smarthosts.html:2 msgid "(if present, forward all outbound mail to one of these hosts)" msgstr "" #: ../../static/t/aide/inet/aliases.html:2 msgid "(domains for which this host receives mail)" msgstr "" #: ../../static/t/aide/inet/clamav.html:2 msgid "(hosts running the ClamAV clamd service)" msgstr "" #: ../../static/t/aide/inet/spamass.html:2 msgid "(hosts running the SpamAssassin service)" msgstr "" #: ../../static/t/aide/inet/fallbackhosts.html:2 msgid "(send outbound mail to these hosts only when direct delivery fails)" msgstr "" #: ../../static/t/aide/ignetconf/display_confirm_delete.html:5 msgid "Confirm delete" msgstr "" #: ../../static/t/aide/ignetconf/display_confirm_delete.html:11 msgid "Are you sure you want to delete " msgstr "" #: ../../static/t/aide/ignetconf/display_confirm_delete.html:14 #: ../../static/t/prefs/box.html:198 ../../static/t/iconbar/edit.html:19 #: ../../static/t/iconbar/edit.html:26 ../../static/t/iconbar/edit.html:32 #: ../../static/t/iconbar/edit.html:39 ../../static/t/iconbar/edit.html:45 #: ../../static/t/iconbar/edit.html:52 ../../static/t/iconbar/edit.html:58 #: ../../static/t/iconbar/edit.html:64 ../../static/t/iconbar/edit.html:70 #: ../../static/t/iconbar/edit.html:76 ../../static/t/iconbar/edit.html:82 #: ../../static/t/iconbar/edit.html:88 msgid "Yes" msgstr "" #: ../../static/t/aide/ignetconf/display_confirm_delete.html:16 #: ../../static/t/prefs/box.html:200 ../../static/t/iconbar/edit.html:20 #: ../../static/t/iconbar/edit.html:27 ../../static/t/iconbar/edit.html:33 #: ../../static/t/iconbar/edit.html:40 ../../static/t/iconbar/edit.html:46 #: ../../static/t/iconbar/edit.html:53 ../../static/t/iconbar/edit.html:59 #: ../../static/t/iconbar/edit.html:65 ../../static/t/iconbar/edit.html:71 #: ../../static/t/iconbar/edit.html:77 ../../static/t/iconbar/edit.html:83 #: ../../static/t/iconbar/edit.html:89 msgid "No" msgstr "" #: ../../static/t/aide/ignetconf/edit_node.html:15 #: ../../static/t/aide/ignetconf/add.html:15 #: ../../static/t/aide/siteconfig/tab_general.html:8 msgid "Node name" msgstr "" #: ../../static/t/aide/ignetconf/edit_node.html:17 #: ../../static/t/aide/ignetconf/add.html:17 msgid "Shared secret" msgstr "" #: ../../static/t/aide/ignetconf/edit_node.html:19 #: ../../static/t/aide/ignetconf/add.html:19 msgid "Host or IP address" msgstr "" #: ../../static/t/aide/ignetconf/edit_node.html:21 #: ../../static/t/aide/ignetconf/add.html:21 msgid "Port number" msgstr "" #: ../../static/t/aide/ignetconf/section.html:4 msgid "(Edit)" msgstr "" #: ../../static/t/aide/display_menu.html:12 msgid "Global Configuration" msgstr "" #: ../../static/t/aide/display_menu.html:14 msgid "User account management" msgstr "" #: ../../static/t/aide/display_menu.html:16 msgid "Shutdown Citadel" msgstr "" #: ../../static/t/aide/display_menu.html:18 msgid "Rooms and Floors" msgstr "" #: ../../static/t/aide/global_config.html:2 msgid "Edit site-wide configuration" msgstr "" #: ../../static/t/aide/global_config.html:3 msgid "Domain names and Internet mail configuration" msgstr "" #: ../../static/t/aide/global_config.html:4 msgid "Configure replication with other Citadel servers" msgstr "" #: ../../static/t/aide/global_config.html:5 #: ../../static/t/view_mailq/header.html:3 msgid "View the outbound SMTP queue" msgstr "" #: ../../static/t/aide/restart.html:2 msgid "Restart Now" msgstr "" #: ../../static/t/aide/restart.html:3 msgid "Restart after paging users" msgstr "" #: ../../static/t/aide/restart.html:4 msgid "Restart when all users are idle" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:1 msgid "General site configuration items" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:5 msgid "Change Login Logo" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:6 msgid "Change Logout Logo" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:11 msgid "Fully qualified domain name" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:14 msgid "Human-readable node name" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:17 msgid "Telephone number" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:20 msgid "Paginator prompt (for text mode clients)" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:23 msgid "Geographic location of this system" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:26 msgid "Name of system administrator" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:29 msgid "Default timezone for unzoned calendar items" msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:1 msgid "Configure automatic expiry of old messages" msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:2 msgid "These settings may be overridden on a per-floor or per-room basis." msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:6 msgid "Hour to run database auto-purge" msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:66 msgid "Default message expire policy for public rooms" msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:68 #: ../../static/t/aide/siteconfig/tab_autopurger.html:86 #: ../../static/t/room/edit/tab_expire.html:17 #: ../../static/t/room/edit/tab_expire.html:45 msgid "Never automatically expire messages" msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:71 #: ../../static/t/aide/siteconfig/tab_autopurger.html:89 #: ../../static/t/room/edit/tab_expire.html:20 #: ../../static/t/room/edit/tab_expire.html:48 msgid "Expire by message count" msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:73 #: ../../static/t/aide/siteconfig/tab_autopurger.html:92 #: ../../static/t/room/edit/tab_expire.html:23 #: ../../static/t/room/edit/tab_expire.html:51 msgid "Expire by message age" msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:75 #: ../../static/t/aide/siteconfig/tab_autopurger.html:94 #: ../../static/t/room/edit/tab_expire.html:25 #: ../../static/t/room/edit/tab_expire.html:53 msgid "Number of messages or days: " msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:81 msgid "Default message expire policy for private mailboxes" msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:83 msgid "Same policy as public rooms" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:1 msgid "Network services" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:2 #: ../../static/t/aide/siteconfig/tab_directory.html:3 msgid "" "Changes made on this screen will not take effect until you restart the " "Citadel server." msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:6 msgid "SMTP MTA port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:9 msgid "Correct forged From: lines during authenticated SMTP" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:12 msgid "Flag message as spam, instead of rejecting it" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:15 msgid "IMAP listener port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:19 msgid "Network run frequency (in seconds)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:22 msgid "Server IP address (0.0.0.0 for 'any')" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:25 msgid "SMTP MSA port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:28 msgid "IMAP over SSL port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:31 msgid "SMTP over SSL port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:34 msgid "Instantly expunge deleted messages in IMAP" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:38 msgid "Allow unauthenticated SMTP clients to spoof this sites domains" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:41 msgid "Postfix TCP Dictionary Port" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:41 msgid "-1 to disable" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:44 msgid "ManageSieve Port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:47 msgid "Perform RBL checks upon connect instead of after RCPT" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:50 msgid "Keep original from headers in IMAP" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:53 msgid "XMPP (Jabber) client to server port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:56 msgid "XMPP (Jabber) server to server port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_pop3.html:1 msgid "POP3" msgstr "" #: ../../static/t/aide/siteconfig/tab_pop3.html:6 msgid "POP3 listener port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_pop3.html:9 msgid "POP3 over SSL port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_pop3.html:12 msgid "POP3 fetch frequency in seconds" msgstr "" #: ../../static/t/aide/siteconfig/tab_pop3.html:15 msgid "POP3 fastest fetch frequency in seconds" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:1 msgid "Advanced server fine-tuning controls" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:5 msgid "Server connection idle timeout (in seconds)" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:8 msgid "Maximum concurrent sessions (0 = no limit)" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:11 msgid "Default user purge time (days)" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:14 msgid "Default room purge time (days)" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:17 msgid "Maximum message length" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:20 msgid "Minimum number of worker threads" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:23 msgid "Maximum number of worker threads" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:26 msgid "Automatically delete committed database logs" msgstr "" #: ../../static/t/aide/siteconfig/tab_pushmail.html:5 msgid "Funambol server host (blank to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_pushmail.html:8 msgid "Funambol server port " msgstr "" #: ../../static/t/aide/siteconfig/tab_pushmail.html:11 msgid "Funambol sync source" msgstr "" #: ../../static/t/aide/siteconfig/tab_pushmail.html:14 msgid "Funambol auth details (user:pass)" msgstr "" #: ../../static/t/aide/siteconfig/tab_pushmail.html:17 msgid "External pager tool (blank to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:1 msgid "Access controls and site policy settings" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:5 msgid "Allow aides to zap (forget) rooms" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:9 msgid "Quarantine messages from problem users" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:12 msgid "Name of quarantine room" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:17 msgid "Name of room to log pages" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:22 msgid "Authentication mode" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:24 msgid "Self contained" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:25 msgid "Host based" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:26 msgid "LDAP (RFC2307)" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:27 msgid "LDAP (Active Directory)" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:30 msgid "Master user name (blank to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:33 msgid "Master user password" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:38 msgid "Initial access level for new users" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:49 msgid "Access level required to create rooms" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:60 msgid "Automatically grant room-aide status to users who create private rooms" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:63 msgid "Automatically grant room-aide status to users who create BLOG rooms" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:66 msgid "Restrict access to Internet mail" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:71 msgid "Disable self-service user account creation" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:71 msgid "Hint: do not select both!" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:74 msgid "Require registration for new users" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:77 msgid "Allow anonymous guest access" msgstr "" #: ../../static/t/aide/siteconfig/tab_indexing.html:1 msgid "Indexing and Journaling" msgstr "" #: ../../static/t/aide/siteconfig/tab_indexing.html:2 msgid "Warning: these facilities are resource intensive." msgstr "" #: ../../static/t/aide/siteconfig/tab_indexing.html:6 msgid "Enable full text index" msgstr "" #: ../../static/t/aide/siteconfig/tab_indexing.html:9 msgid "Perform journaling of email messages" msgstr "" #: ../../static/t/aide/siteconfig/tab_indexing.html:13 msgid "Perform journaling of non-email messages" msgstr "" #: ../../static/t/aide/siteconfig/tab_indexing.html:16 msgid "Email destination of journalized messages" msgstr "" #: ../../static/t/aide/siteconfig/tab_directory.html:1 msgid "Configure the LDAP connector for Citadel" msgstr "" #: ../../static/t/aide/siteconfig/tab_directory.html:4 msgid "" "NOTE: This Citadel server has been built without LDAP support. These " "options will have no effect." msgstr "" #: ../../static/t/aide/siteconfig/tab_directory.html:9 msgid "Host name of LDAP server (blank to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_directory.html:13 msgid "Port number of LDAP server (blank to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_directory.html:16 msgid "Base DN" msgstr "" #: ../../static/t/aide/siteconfig/tab_directory.html:19 msgid "Bind DN" msgstr "" #: ../../static/t/aide/siteconfig/tab_directory.html:22 msgid "Password for bind DN" msgstr "" #: ../../static/t/iconbar.html:7 msgid "Language:" msgstr "" #: ../../static/t/iconbar.html:19 msgid "Mail" msgstr "" #: ../../static/t/iconbar.html:39 ../../static/t/iconbar/edit.html:61 #: ../../static/t/summary/page.html:30 msgid "Tasks" msgstr "" #: ../../static/t/iconbar.html:48 ../../static/t/iconbar/edit.html:67 msgid "Rooms" msgstr "" #: ../../static/t/iconbar.html:57 msgid "Online users" msgstr "" #: ../../static/t/iconbar.html:62 ../../static/t/iconbar/edit.html:79 msgid "Chat" msgstr "" #: ../../static/t/iconbar.html:65 msgid "Advanced" msgstr "" #: ../../static/t/iconbar.html:72 ../../static/t/room/edit/editroom.html:4 #: ../../static/t/room/edit.html:5 msgid "Administration" msgstr "" #: ../../static/t/iconbar.html:83 msgid "customize this menu" msgstr "" #: ../../static/t/iconbar.html:92 msgid "switch to room list" msgstr "" #: ../../static/t/iconbar.html:93 msgid "switch to menu" msgstr "" #: ../../static/t/iconbar.html:94 msgid "My folders" msgstr "" #: ../../static/t/view_message/list_attach.html:3 #: ../../static/t/view_message/inline_attach.html:4 msgid "View" msgstr "" #: ../../static/t/view_message/list_attach.html:4 #: ../../static/t/view_message/inline_attach.html:5 msgid "Download" msgstr "" #: ../../static/t/view_message/print.html:14 #: ../../static/t/view_message.html:14 msgid "to" msgstr "" #: ../../static/t/openid_manual_create.html:2 msgid "Your OpenID" msgstr "" #: ../../static/t/openid_manual_create.html:2 msgid "was successfully verified." msgstr "" #: ../../static/t/openid_manual_create.html:3 msgid "However, the user name" msgstr "" #: ../../static/t/openid_manual_create.html:3 msgid "conflicts with an existing user." msgstr "" #: ../../static/t/openid_manual_create.html:5 msgid "Please specify the user name you would like to use." msgstr "" #: ../../static/t/files/graphicsupload.html:2 msgid "Image upload" msgstr "" #: ../../static/t/files/graphicsupload.html:6 msgid "You can upload an image directly from your computer" msgstr "" #: ../../static/t/files/graphicsupload.html:8 msgid "Please select a file to upload:" msgstr "" #: ../../static/t/files/section_onefile.html:20 msgid "Slideshow" msgstr "" #: ../../static/t/roombanner.html:10 ../../static/t/roombanner.html:11 msgid "new of" msgstr "" #: ../../static/t/roombanner.html:10 ../../static/t/roombanner.html:11 #: ../../static/t/msg_listselector_bottom.html:7 #: ../../static/t/msg_listselector_top.html:7 msgid "messages" msgstr "" #: ../../static/t/roombanner.html:28 msgid "Select page: " msgstr "" #: ../../static/t/who.html:13 msgid "Users currently on " msgstr "" #: ../../static/t/who.html:22 msgid "Click on a name to read user info. Click on" msgstr "" #: ../../static/t/who.html:24 msgid "to send an instant message to that user." msgstr "" #: ../../static/t/msg_listselector_bottom.html:2 #: ../../static/t/msg_listselector_top.html:2 msgid "Reading #" msgstr "" #: ../../static/t/msg_listselector_bottom.html:12 #: ../../static/t/msg_listselector_top.html:12 msgid "oldest to newest" msgstr "" #: ../../static/t/msg_listselector_bottom.html:20 #: ../../static/t/msg_listselector_top.html:20 msgid "newest to oldest" msgstr "" #: ../../static/t/newstartpage.html:4 msgid "New start page" msgstr "" #: ../../static/t/newstartpage.html:9 msgid "Your start page has been changed." msgstr "" #: ../../static/t/newstartpage.html:12 msgid "" "(Note: this does not change your browser's home page. It changes the page " "you begin on when you log on to" msgstr "" #: ../../static/t/no_new_msgs.html:3 msgid "No new messages." msgstr "" #: ../../static/t/view_blog/comment_box.html:8 msgid "Post a comment" msgstr "" #: ../../static/t/prefs/pushemail.html:2 msgid "Configure Push Email" msgstr "" #: ../../static/t/prefs/pushemail.html:9 msgid "Push email and SMS settings" msgstr "" #: ../../static/t/prefs/pushemail.html:17 msgid "" "If your administrator has enabled the functionality, Citadel can notify a " "Funambol server that you haved recieved new email and automatically " "syncronize any devices you have with the Funambol client installed." msgstr "" #: ../../static/t/prefs/pushemail.html:20 msgid "" "Alternatively, if the administrator has configured it, Citadel can send a " "text message to you when new mail arrives." msgstr "" #: ../../static/t/prefs/pushemail.html:26 msgid "Notify Funambol server" msgstr "" #: ../../static/t/prefs/pushemail.html:31 msgid "Send a text message to..." msgstr "" #: ../../static/t/prefs/pushemail.html:33 msgid "" "(Use international format, without any leading zeros, spaces or hypens, like " "+61415011501)" msgstr "" #: ../../static/t/prefs/pushemail.html:38 msgid "Use custom notification scheme configured by your Admin" msgstr "" #: ../../static/t/prefs/pushemail.html:43 msgid "Don‘t send any notifications" msgstr "" #: ../../static/t/prefs/box.html:9 msgid "Tree (folders) view" msgstr "" #: ../../static/t/prefs/box.html:11 msgid "Table (rooms) view" msgstr "" #: ../../static/t/prefs/box.html:20 msgid "12 hour (am/pm)" msgstr "" #: ../../static/t/prefs/box.html:25 msgid "24 hour" msgstr "" #: ../../static/t/prefs/box.html:152 msgid "Sunday" msgstr "" #: ../../static/t/prefs/box.html:153 msgid "Monday" msgstr "" #: ../../static/t/prefs/box.html:174 msgid "No signature" msgstr "" #: ../../static/t/prefs/box.html:238 msgid "Full-functionality" msgstr "" #: ../../static/t/prefs/box.html:241 msgid "Safe mode" msgstr "" #: ../../static/t/prefs/box.html:242 msgid "" "Safe mode is less intensive on your web browser, but not as fully featured." msgstr "" #: ../../static/t/wiki/pagelist.html:1 msgid "List of Wiki pages" msgstr "" #: ../../static/t/wiki/history.html:1 msgid "History of edits for this page" msgstr "" #: ../../static/t/who/list_static_header.html:1 msgid "Users currently on" msgstr "" #: ../../static/t/who/section.html:4 msgid "(kill)" msgstr "" #: ../../static/t/who/bio.html:4 ../../static/t/user/show.html:4 msgid "User profile" msgstr "" #: ../../static/t/who/summary.html:5 ../../static/t/who/box_list_static.html:6 #: ../../static/t/room/edit/tab_feed.html:13 msgid "User name" msgstr "" #: ../../static/t/who/summary.html:6 ../../static/t/who/box_list_static.html:7 msgid "Room" msgstr "" #: ../../static/t/who/box_list_static.html:8 msgid "From host" msgstr "" #: ../../static/t/view_message.html:19 msgid "Edit" msgstr "" #: ../../static/t/view_message.html:22 ../../static/t/view_message.html:26 msgid "Reply" msgstr "" #: ../../static/t/view_message.html:23 msgid "ReplyQuoted" msgstr "" #: ../../static/t/view_message.html:27 msgid "ReplyAll" msgstr "" #: ../../static/t/view_message.html:28 msgid "Forward" msgstr "" #: ../../static/t/view_message.html:31 ../../static/t/msg_listview.html:25 msgid "Move" msgstr "" #: ../../static/t/view_message.html:34 msgid "Headers" msgstr "" #: ../../static/t/view_message.html:35 ../../static/t/msg_listview.html:28 msgid "Print" msgstr "" #: ../../static/t/preferences.html:4 ../../static/t/preferences.html:7 msgid "Preferences and settings" msgstr "" #: ../../static/t/user/list.html:3 msgid "User list for " msgstr "" #: ../../static/t/user/list.html:9 msgid "User Name" msgstr "" #: ../../static/t/user/list.html:10 msgid "Number" msgstr "" #: ../../static/t/user/list.html:11 msgid "Access Level" msgstr "" #: ../../static/t/user/list.html:12 msgid "Last Login" msgstr "" #: ../../static/t/user/list.html:13 msgid "Total Logins" msgstr "" #: ../../static/t/user/list.html:14 msgid "Total Posts" msgstr "" #: ../../static/t/user/show.html:9 msgid "Click here to send an instant message to" msgstr "" #: ../../static/t/start_of_new_msgs.html:4 msgid "Old messages" msgstr "" #: ../../static/t/start_of_new_msgs.html:8 msgid "New messages" msgstr "" #: ../../static/t/display_main_menu.html:7 msgid "Basic commands" msgstr "" #: ../../static/t/display_main_menu.html:10 msgid "Your info" msgstr "" #: ../../static/t/display_main_menu.html:12 msgid "Advanced room commands" msgstr "" #: ../../static/t/iconbar/save.html:4 ../../static/t/iconbar/edit.html:4 msgid "Customize the icon bar" msgstr "" #: ../../static/t/iconbar/save.html:11 msgid "" "Your icon bar has been updated. Please select any of its choices to continue." msgstr "" #: ../../static/t/iconbar/save.html:11 msgid "" "You may need to force refresh (SHIFT-F5)> in order for changes to take effect" msgstr "" #: ../../static/t/iconbar/edit.html:11 msgid "Display icons as:" msgstr "" #: ../../static/t/iconbar/edit.html:12 msgid "pictures and text" msgstr "" #: ../../static/t/iconbar/edit.html:13 msgid "pictures only" msgstr "" #: ../../static/t/iconbar/edit.html:14 msgid "text only" msgstr "" #: ../../static/t/iconbar/edit.html:16 msgid "" "Select the icons you would like to see displayed in the 'icon bar' menu on " "the left side of the screen." msgstr "" #: ../../static/t/iconbar/edit.html:23 msgid "Site logo" msgstr "" #: ../../static/t/iconbar/edit.html:23 msgid "An icon describing this site" msgstr "" #: ../../static/t/iconbar/edit.html:29 msgid "Your summary page" msgstr "" #: ../../static/t/iconbar/edit.html:36 msgid "Mail (inbox)" msgstr "" #: ../../static/t/iconbar/edit.html:36 msgid "A shortcut to your email Inbox" msgstr "" #: ../../static/t/iconbar/edit.html:42 msgid "Your personal address book" msgstr "" #: ../../static/t/iconbar/edit.html:49 msgid "Your personal notes" msgstr "" #: ../../static/t/iconbar/edit.html:55 msgid "A shortcut to your personal calendar" msgstr "" #: ../../static/t/iconbar/edit.html:61 msgid "A shortcut to your personal task list" msgstr "" #: ../../static/t/iconbar/edit.html:67 msgid "" "Clicking this icon displays a list of all accessible rooms (or folders) " "available." msgstr "" #: ../../static/t/iconbar/edit.html:73 msgid "Who is online?" msgstr "" #: ../../static/t/iconbar/edit.html:73 msgid "Clicking this icon displays a list of all users currently logged in." msgstr "" #: ../../static/t/iconbar/edit.html:79 msgid "" "Clicking this icon enters real-time chat mode with other users in the same " "room." msgstr "" #: ../../static/t/iconbar/edit.html:85 msgid "Advanced options" msgstr "" #: ../../static/t/iconbar/edit.html:85 msgid "Access to the complete menu of Citadel functions." msgstr "" #: ../../static/t/iconbar/edit.html:91 msgid "Citadel logo" msgstr "" #: ../../static/t/iconbar/edit.html:91 msgid "Displays the 'Powered by Citadel' icon" msgstr "" #: ../../static/t/room/edit/tab_expire.html:8 msgid "Message expire policy for this room" msgstr "" #: ../../static/t/room/edit/tab_expire.html:14 msgid "Use the default policy for this floor" msgstr "" #: ../../static/t/room/edit/tab_expire.html:36 msgid "Message expire policy for this floor" msgstr "" #: ../../static/t/room/edit/tab_expire.html:42 msgid "Use the system default" msgstr "" #: ../../static/t/room/edit/editroom.html:5 ../../static/t/room/edit.html:6 msgid "Configuration" msgstr "" #: ../../static/t/room/edit/editroom.html:6 ../../static/t/room/edit.html:7 msgid "Message expire policy" msgstr "" #: ../../static/t/room/edit/editroom.html:7 ../../static/t/room/edit.html:8 msgid "Access controls" msgstr "" #: ../../static/t/room/edit/editroom.html:8 ../../static/t/room/edit.html:9 msgid "Sharing" msgstr "" #: ../../static/t/room/edit/editroom.html:9 ../../static/t/room/edit.html:10 msgid "Mailing list service" msgstr "" #: ../../static/t/room/edit/editroom.html:10 ../../static/t/room/edit.html:11 msgid "Remote retrieval" msgstr "" #: ../../static/t/room/edit/tab_config.html:6 msgid "name of room: " msgstr "" #: ../../static/t/room/edit/tab_config.html:10 #: ../../static/t/room/create.html:20 msgid "Resides on floor: " msgstr "" #: ../../static/t/room/edit/tab_config.html:16 #: ../../static/t/room/create.html:68 msgid "Type of room:" msgstr "" #: ../../static/t/room/edit/tab_config.html:22 #: ../../static/t/room/create.html:73 msgid "Public (automatically appears to everyone)" msgstr "" #: ../../static/t/room/edit/tab_config.html:28 #: ../../static/t/room/create.html:77 msgid "Private - hidden (accessible to anyone who knows its name)" msgstr "" #: ../../static/t/room/edit/tab_config.html:35 #: ../../static/t/room/create.html:81 msgid "Private - require password: " msgstr "" #: ../../static/t/room/edit/tab_config.html:44 #: ../../static/t/room/create.html:86 msgid "Private - invitation only" msgstr "" #: ../../static/t/room/edit/tab_config.html:51 #: ../../static/t/room/create.html:90 msgid "Personal (mailbox for you only)" msgstr "" #: ../../static/t/room/edit/tab_config.html:55 msgid "If private, cause current users to forget room" msgstr "" #: ../../static/t/room/edit/tab_config.html:61 msgid "Preferred users only" msgstr "" #: ../../static/t/room/edit/tab_config.html:66 msgid "Read-only room" msgstr "" #: ../../static/t/room/edit/tab_config.html:71 msgid "All users allowed to post may also delete messages" msgstr "" #: ../../static/t/room/edit/tab_config.html:76 msgid "File directory room" msgstr "" #: ../../static/t/room/edit/tab_config.html:80 msgid "Directory name: " msgstr "" #: ../../static/t/room/edit/tab_config.html:86 msgid "Uploading allowed" msgstr "" #: ../../static/t/room/edit/tab_config.html:91 msgid "Downloading allowed" msgstr "" #: ../../static/t/room/edit/tab_config.html:96 msgid "Visible directory" msgstr "" #: ../../static/t/room/edit/tab_config.html:103 msgid "Network shared room" msgstr "" #: ../../static/t/room/edit/tab_config.html:108 msgid "Permanent (does not auto-purge)" msgstr "" #: ../../static/t/room/edit/tab_config.html:113 msgid "Subject Required (Force users to specify a message subject)" msgstr "" #: ../../static/t/room/edit/tab_config.html:116 msgid "Anonymous messages" msgstr "" #: ../../static/t/room/edit/tab_config.html:122 msgid "No anonymous messages" msgstr "" #: ../../static/t/room/edit/tab_config.html:127 msgid "All messages are anonymous" msgstr "" #: ../../static/t/room/edit/tab_config.html:132 msgid "Prompt user when entering messages" msgstr "" #: ../../static/t/room/edit/tab_config.html:136 msgid "Room aide: " msgstr "" #: ../../static/t/room/edit/tab_listserv.html:5 msgid "" "The contents of this room are being mailed as individual messages " "to the following list recipients:

    " msgstr "" #: ../../static/t/room/edit/tab_listserv.html:19 msgid "" "The contents of this room are being mailed in digest form to the " "following list recipients:

    " msgstr "" #: ../../static/t/room/edit/tab_listserv.html:39 msgid "Add recipients from Contacts or other address books" msgstr "" #: ../../static/t/room/edit/tab_listserv.html:48 msgid "Allow non-subscribers to mail to this room." msgstr "" #: ../../static/t/room/edit/tab_listserv.html:54 msgid "Room post publication needs Admin permission." msgstr "" #: ../../static/t/room/edit/tab_listserv.html:59 msgid "Allow self-service subscribe/unsubscribe requests." msgstr "" #: ../../static/t/room/edit/tab_listserv.html:65 msgid "The URL for subscribe/unsubscribe is: " msgstr "" #: ../../static/t/room/edit/digestrecp_removal.html:1 #: ../../static/t/room/edit/pop3client_removal.html:9 #: ../../static/t/room/edit/listrecp_removal.html:1 #: ../../static/t/room/edit/rssclient_removal.html:5 msgid "(remove)" msgstr "" #: ../../static/t/room/edit/tab_admin.html:5 msgid "Delete this room" msgstr "" #: ../../static/t/room/edit/tab_admin.html:10 msgid "Set or change the icon for this rooms banner" msgstr "" #: ../../static/t/room/edit/tab_admin.html:14 msgid "Edit this rooms Info file" msgstr "" #: ../../static/t/room/edit/tab_share.html:5 msgid "Shared with" msgstr "" #: ../../static/t/room/edit/tab_share.html:6 msgid "Not shared with" msgstr "" #: ../../static/t/room/edit/tab_share.html:11 #: ../../static/t/room/edit/tab_share.html:21 msgid "Remote node name" msgstr "" #: ../../static/t/room/edit/tab_share.html:12 #: ../../static/t/room/edit/tab_share.html:22 msgid "Remote room name" msgstr "" #: ../../static/t/room/edit/tab_share.html:13 #: ../../static/t/room/edit/tab_share.html:23 msgid "Actions" msgstr "" #: ../../static/t/room/edit/tab_share.html:35 msgid "" "When sharing a room, it must be shared from both ends. Adding a node to the " "'shared' list sends messages out, but in order to receive messages, the " "other nodes must be configured to send messages out to your system as well. " "
  • If the remote room name is blank, it is assumed that the room name is " "identical on the remote node.
  • If the remote room name is different, the " "remote node must also configure the name of the room here." msgstr "" #: ../../static/t/room/edit/tab_feed.html:2 msgid "" "Retrieve messages from these remote POP3 accounts and store them in this " "room:" msgstr "" #: ../../static/t/room/edit/tab_feed.html:12 msgid "Remote host" msgstr "" #: ../../static/t/room/edit/tab_feed.html:15 msgid "Keep messages on server?" msgstr "" #: ../../static/t/room/edit/tab_feed.html:16 msgid "Interval" msgstr "" #: ../../static/t/room/edit/tab_feed.html:31 msgid "Fetch the following RSS feeds and store them in this room:" msgstr "" #: ../../static/t/room/edit/tab_feed.html:43 msgid "Feed URL" msgstr "" #: ../../static/t/room/edit/tab_access.html:5 msgid "" "The users listed below have access to this room. To remove a user from the " "access list, select the user name from the list and click 'Kick'." msgstr "" #: ../../static/t/room/edit/tab_access.html:20 msgid "" "To grant another user access to this room, enter the user name in the box " "below and click 'Invite'." msgstr "" #: ../../static/t/room/edit/tab_access.html:26 msgid "Invite:" msgstr "" #: ../../static/t/room/edit/tab_access.html:35 msgid "Users" msgstr "" #: ../../static/t/room/zapped_list.html:7 msgid "Zapped (forgotten) rooms" msgstr "" #: ../../static/t/room/zapped_list.html:10 msgid "Click on any room to un-zap it and goto that room." msgstr "" #: ../../static/t/room/display_private.html:7 msgid "Go to a hidden room" msgstr "" #: ../../static/t/room/display_private.html:8 msgid "" "If you know the name of a hidden (guess-name) or passworded room, you can " "enter that room by typing its name below. Once you gain access to a private " "room, it will appear in your regular room listings so you don‘t have to keep " "returning here." msgstr "" #: ../../static/t/room/display_private.html:14 msgid "Enter room name:" msgstr "" #: ../../static/t/room/display_private.html:21 msgid "Enter room password:" msgstr "" #: ../../static/t/room/create.html:11 #: ../../static/t/menu/advanced_roomcommands.html:6 msgid "Create a new room" msgstr "" #: ../../static/t/room/create.html:18 msgid "Name of room: " msgstr "" #: ../../static/t/room/create.html:32 msgid "Default view for room: " msgstr "" #: ../../static/t/room/zap_this.html:3 msgid "Zap (forget/unsubscribe) the current room" msgstr "" #: ../../static/t/room/zap_this.html:6 msgid "If you select this option," msgstr "" #: ../../static/t/room/zap_this.html:8 msgid "will disappear from your room list. Is this what you wish to do?" msgstr "" #: ../../static/t/menu/your_info.html:2 msgid "Change your preferences and settings" msgstr "" #: ../../static/t/menu/your_info.html:3 msgid "Update your contact information" msgstr "" #: ../../static/t/menu/your_info.html:5 msgid "Enter your 'bio'" msgstr "" #: ../../static/t/menu/your_info.html:6 msgid "Edit your online photo" msgstr "" #: ../../static/t/menu/your_info.html:8 msgid "Edit your push email settings" msgstr "" #: ../../static/t/menu/your_info.html:9 msgid "Manage your OpenIDs" msgstr "" #: ../../static/t/menu/basic_commands.html:3 msgid "List known rooms" msgstr "" #: ../../static/t/menu/basic_commands.html:3 msgid "Where can I go from here?" msgstr "" #: ../../static/t/menu/basic_commands.html:4 ../../static/t/navbar.html:168 msgid "Goto next room" msgstr "" #: ../../static/t/menu/basic_commands.html:4 msgid "...with unread messages" msgstr "" #: ../../static/t/menu/basic_commands.html:5 msgid "Skip to next room" msgstr "" #: ../../static/t/menu/basic_commands.html:5 msgid "(come back here later)" msgstr "" #: ../../static/t/menu/basic_commands.html:6 ../../static/t/navbar.html:5 msgid "Ungoto" msgstr "" #: ../../static/t/menu/basic_commands.html:6 msgid "oops! Back to " msgstr "" #: ../../static/t/menu/basic_commands.html:10 ../../static/t/navbar.html:13 msgid "Read new messages" msgstr "" #: ../../static/t/menu/basic_commands.html:10 msgid "...in this room" msgstr "" #: ../../static/t/menu/basic_commands.html:11 ../../static/t/navbar.html:19 msgid "Read all messages" msgstr "" #: ../../static/t/menu/basic_commands.html:11 msgid "...old and new" msgstr "" #: ../../static/t/menu/basic_commands.html:12 ../../static/t/navbar.html:25 msgid "Enter a message" msgstr "" #: ../../static/t/menu/basic_commands.html:12 msgid "(post in this room)" msgstr "" #: ../../static/t/menu/basic_commands.html:13 msgid "File library" msgstr "" #: ../../static/t/menu/basic_commands.html:13 msgid "(List files available for download)" msgstr "" #: ../../static/t/menu/basic_commands.html:17 msgid "Summary page" msgstr "" #: ../../static/t/menu/basic_commands.html:17 msgid "Summary of my account" msgstr "" #: ../../static/t/menu/basic_commands.html:18 msgid "User list" msgstr "" #: ../../static/t/menu/basic_commands.html:18 msgid "(all registered users)" msgstr "" #: ../../static/t/menu/basic_commands.html:19 msgid "Bye!" msgstr "" #: ../../static/t/menu/advanced_roomcommands.html:3 msgid "Edit or delete this room" msgstr "" #: ../../static/t/menu/advanced_roomcommands.html:5 msgid "Go to a 'hidden' room" msgstr "" #: ../../static/t/menu/advanced_roomcommands.html:7 msgid "Zap (forget) this room" msgstr "" #: ../../static/t/menu/advanced_roomcommands.html:8 msgid "List all forgotten rooms" msgstr "" #: ../../static/t/navbar.html:34 msgid "View contacts" msgstr "" #: ../../static/t/navbar.html:40 msgid "Add new contact" msgstr "" #: ../../static/t/navbar.html:49 msgid "Day view" msgstr "" #: ../../static/t/navbar.html:55 msgid "Month view" msgstr "" #: ../../static/t/navbar.html:61 msgid "Add new event" msgstr "" #: ../../static/t/navbar.html:70 msgid "Calendar list" msgstr "" #: ../../static/t/navbar.html:79 msgid "View tasks" msgstr "" #: ../../static/t/navbar.html:85 msgid "Add new task" msgstr "" #: ../../static/t/navbar.html:94 msgid "View notes" msgstr "" #: ../../static/t/navbar.html:101 msgid "Add new note" msgstr "" #: ../../static/t/navbar.html:110 msgid "Refresh message list" msgstr "" #: ../../static/t/navbar.html:122 msgid "Write mail" msgstr "" #: ../../static/t/navbar.html:132 msgid "Wiki home" msgstr "" #: ../../static/t/navbar.html:139 msgid "Edit this page" msgstr "" #: ../../static/t/navbar.html:145 msgid "History" msgstr "" #: ../../static/t/navbar.html:154 msgid "New blog post" msgstr "" #: ../../static/t/navbar.html:162 msgid "Skip this room" msgstr "" #: ../../static/t/msg_listview.html:18 msgid "Loading messages from server, please wait" msgstr "" #: ../../static/t/msg_listview.html:24 msgid "Open in new window" msgstr "" #: ../../static/t/msg_listview.html:26 msgid "Copy" msgstr "" #: ../../static/t/view_mailq/message.html:6 msgid "Originaly posted in: " msgstr "" #: ../../static/t/view_mailq/header.html:15 msgid "Refresh this page" msgstr "" #: ../../static/t/view_mailq/header.html:21 msgid "Message ID" msgstr "" #: ../../static/t/view_mailq/header.html:23 msgid "Date/time submitted" msgstr "" #: ../../static/t/view_mailq/header.html:25 msgid "Next attempt" msgstr "" #: ../../static/t/view_mailq/header.html:29 msgid "Recipients" msgstr "" #: ../../static/t/view_mailq/footer_empty.html:4 msgid "The queue is empty." msgstr "" #: ../../static/t/view_mailq/footer_empty.html:9 #: ../../static/t/view_mailq/footer.html:5 msgid "You do not have permission to view this resource." msgstr "" #: ../../static/t/get_logged_in.html:5 msgid "You must be logged in to access this page." msgstr "" #: ../../static/t/get_logged_in.html:9 #: ../../static/t/edit_message/attachments_pane.html:3 msgid "Close window" msgstr "" #: ../../static/t/get_logged_in.html:55 msgid "Log in using a user name and password" msgstr "" #: ../../static/t/get_logged_in.html:60 ../../static/t/get_logged_in.html:75 msgid "Password:" msgstr "" #: ../../static/t/get_logged_in.html:65 ../../static/t/get_logged_in.html:69 msgid "New user? Register now" msgstr "" #: ../../static/t/get_logged_in.html:70 msgid "" "enter the name and password you wish to use, and click "New User." " msgstr "" #: ../../static/t/get_logged_in.html:83 msgid "Log in using OpenID" msgstr "" #: ../../static/t/get_logged_in.html:85 msgid "OpenID URL:" msgstr "" #: ../../static/t/get_logged_in.html:92 msgid "Log in using Google" msgstr "" #: ../../static/t/get_logged_in.html:97 msgid "Log in using Yahoo" msgstr "" #: ../../static/t/get_logged_in.html:102 msgid "Log in using AOL or AIM" msgstr "" #: ../../static/t/get_logged_in.html:104 msgid "Enter your AOL or AIM screen name:" msgstr "" #: ../../static/t/get_logged_in.html:115 msgid "Please wait" msgstr "" #: ../../static/t/summary/page.html:4 msgid "Summary page for " msgstr "" #: ../../static/t/summary/page.html:21 msgid "Messages" msgstr "" #: ../../static/t/summary/page.html:39 msgid "Today on your calendar" msgstr "" #: ../../static/t/summary/page.html:51 msgid "Who‘s online now" msgstr "" #: ../../static/t/summary/page.html:60 msgid "About this server" msgstr "" #: ../../static/t/summary/page.html:63 msgid "You are connected to" msgstr "" #: ../../static/t/summary/page.html:64 msgid "running" msgstr "" #: ../../static/t/summary/page.html:65 msgid "with" msgstr "" #: ../../static/t/summary/page.html:66 msgid "server build" msgstr "" #: ../../static/t/summary/page.html:67 msgid "and located in" msgstr "" #: ../../static/t/summary/page.html:68 msgid "Your system administrator is" msgstr "" #: ../../static/t/edit_message/attachments_pane.html:16 msgid "Attach file" msgstr "" #: ../../static/t/edit_message/attachments_pane.html:21 msgid "Upload" msgstr "" #: ../../static/t/edit_message/section_attach_select.html:4 msgid "Remove" msgstr "" #: ../../static/t/loggedinas.html:3 msgid "Logged in as" msgstr "" #: ../../static/t/loggedinas.html:6 msgid "Not logged in." msgstr "" webcit-8.24-dfsg.orig/po/webcit/de.po0000644000175000017500000035270312271477123017235 0ustar michaelmichael# translation of de.po to # Copyright (C) 2008 - 2009 The Citadel Project - http://www.citadel.org # Wilfried Gösgens , 2005 - 2009. # Stefan Kleinschmidt # Heiner Wohner # German localization # Copyright (C) 2005 - 2009 By Wilfried Gösgens # This file is distributed under the revised BSD license # "ä ö ü msgid "" msgstr "" "Project-Id-Version: WebCit\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-03-20 01:03-0400\n" "PO-Revision-Date: 2013-08-08 13:16+0000\n" "Last-Translator: Heiner Wohner \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2013-08-09 04:34+0000\n" "X-Generator: Launchpad (build 16723)\n" "Language: de\n" #: ../../roomops.c:708 ../../roomops.c:1005 ../../sieve.c:364 msgid "Cancelled. Changes were not saved." msgstr "Abgebrochen. Änderungen wurden nicht übernommen." #: ../../roomops.c:838 ../../sieve.c:417 msgid "Your changes have been saved." msgstr "Ihre Änderungen wurden gespeichert." #: ../../roomops.c:881 #, c-format msgid "User '%s' kicked out of room '%s'." msgstr "Benutzer '%s' des Raumes '%s' verwiesen." #: ../../roomops.c:898 #, c-format msgid "User '%s' invited to room '%s'." msgstr "Benutzer '%s' in den Raum '%s' eingeladen." #: ../../roomops.c:927 msgid "Cancelled. No new room was created." msgstr "Abgebrochen. Keinen neuen Raum erzeugt." #: ../../roomops.c:1187 msgid "Floor has been deleted." msgstr "Etage gelöscht." #: ../../roomops.c:1211 msgid "New floor has been created." msgstr "Eine neue Etage wurde erstellt." #: ../../roomops.c:1290 msgid "Room list view" msgstr "Raumlisten Anzeige" #: ../../roomops.c:1293 msgid "Show empty floors" msgstr "Leere Etagen anzeigen" #: ../../roomviews.c:50 msgid "Bulletin Board" msgstr "Forum" #: ../../roomviews.c:51 msgid "Mail Folder" msgstr "Mailordner" #: ../../roomviews.c:52 msgid "Address Book" msgstr "Adressbuch" #: ../../roomviews.c:53 ../../static/t/iconbar.html:24 #: ../../static/t/iconbar/edit.html:55 msgid "Calendar" msgstr "Kalender" #: ../../roomviews.c:54 msgid "Task List" msgstr "Aufgabenliste" #: ../../roomviews.c:55 msgid "Notes List" msgstr "Notizliste" #: ../../roomviews.c:56 msgid "Wiki" msgstr "Wiki" #: ../../roomviews.c:57 msgid "Calendar List" msgstr "Kalenderliste" #: ../../roomviews.c:58 msgid "Journal" msgstr "Journal" #: ../../roomviews.c:59 msgid "Drafts" msgstr "Entwürfe" #: ../../roomviews.c:60 msgid "Blog" msgstr "Blog" #: ../../tasks.c:93 msgid "Completed?" msgstr "Vollständig?" #: ../../tasks.c:95 msgid "Name of task" msgstr "Name der Aufgaben" #: ../../tasks.c:97 msgid "Date due" msgstr "Fälligkeitsdatum" #: ../../tasks.c:99 msgid "Category" msgstr "Kategorie" #: ../../tasks.c:101 msgid "Show All" msgstr "Alle anzeigen" #: ../../tasks.c:223 msgid "Edit task" msgstr "Aufgabe bearbeiten" #: ../../tasks.c:242 ../../calendar.c:98 ../../calendar_view.c:298 #: ../../calendar_view.c:959 ../../calendar_view.c:1003 #: ../../calendar_view.c:1084 msgid "Summary:" msgstr "Übersicht:" #: ../../tasks.c:253 msgid "Start date:" msgstr "Anfangsdatum:" #: ../../tasks.c:261 ../../tasks.c:291 msgid "No date" msgstr "Kein Datum" #: ../../tasks.c:265 ../../tasks.c:294 msgid "or" msgstr "oder" #: ../../tasks.c:279 ../../tasks.c:308 msgid "Time associated" msgstr "assoziierte Uhrzeit" #: ../../tasks.c:283 msgid "Due date:" msgstr "Fälligkeitsdatum:" #: ../../tasks.c:312 msgid "Completed:" msgstr "Vollständig:" #: ../../tasks.c:323 msgid "Category:" msgstr "Kategorie:" #: ../../tasks.c:333 ../../calendar.c:159 ../../static/t/files.html:12 msgid "Description:" msgstr "Beschreibung:" #: ../../tasks.c:351 ../../event.c:764 msgid "Save" msgstr "Speichern" #: ../../tasks.c:352 ../../event.c:765 ../../static/t/aide/inet/section.html:5 #: ../../static/t/view_blog/comment.html:12 #: ../../static/t/view_blog/post.html:15 ../../static/t/view_message.html:32 #: ../../static/t/navbar.html:116 ../../static/t/msg_listview.html:27 msgid "Delete" msgstr "Löschen" #: ../../tasks.c:353 ../../vcard_edit.c:1216 ../../paging.c:66 #: ../../event.c:767 ../../sysmsgs.c:69 ../../who.c:200 ../../auth.c:812 #: ../../static/t/edit_message.html:135 ../../static/t/confirmlogoff.html:4 msgid "Cancel" msgstr "Abbruch" #: ../../tasks.c:423 ../../calendar_view.c:1379 msgid "Untitled Task" msgstr "Unbenannte Aufgabe" #: ../../fmt_date.c:310 msgid "Time format" msgstr "Uhrzeitformat" #: ../../listsub.c:54 ../../static/t/listsub/display.html:5 msgid "List subscription" msgstr "Listenteilnehmer" #: ../../listsub.c:67 ../../static/t/listsub/display.html:9 msgid "List subscribe/unsubscribe" msgstr "Liste abonnieren/abmelden" #: ../../listsub.c:87 ../../static/t/listsub/display.html:15 #: ../../static/t/listsub/display.html:34 msgid "Confirmation request sent" msgstr "Bestätigungsanfrage gesendet" #: ../../listsub.c:89 #, c-format msgid "" "You are subscribing %s to the %s mailing list. The " "listserver has sent you an e-mail with one additional Web link for you to " "click on to confirm your subscription. This extra step is for your " "protection, as it prevents others from being able to subscribe you to lists " "without your consent.

    Please click on the link which is being e-" "mailed to you and your subscription will be confirmed.
    \n" msgstr "" "Sie abonnieren für %s die %s-Mailing-Liste. Der Mailing-" "Listen-Server hat Ihnen eine E-Mail mit einem Verweis gesendet, auf den Sie " "klicken müssen, um Ihr Abonnement zu bestätigen. Dieser zusätzliche Schritt " "dient Ihrem Schutz, weil dadurch verhindert wird, dass andere ohne Ihre " "Zustimmung für Sie Mailing-Listen abonnieren können.
    \n" #: ../../listsub.c:102 ../../static/t/listsub/display.html:24 msgid "Go back..." msgstr "Zurück..." #: ../../listsub.c:253 ../../listsub.c:291 ../../listsub.c:327 #: ../../listsub.c:334 msgid "You need to specify the mailinglist to subscribe to." msgstr "Sie müssen die Mailing-Liste angeben, die Sie abonnieren möchten." #: ../../listsub.c:260 ../../listsub.c:298 msgid "You need to specify the email address you'd like to subscribe with." msgstr "" "Sie müssen Ihre E-Mail-Adresse angeben, mit der Sie das Abonnement empfangen " "möchten." #: ../../blogview_renderer.c:58 ../../blogview_renderer.c:74 #, c-format msgid "%d comments" msgstr "%d Kommentare" #: ../../blogview_renderer.c:61 ../../blogview_renderer.c:77 msgid "permalink" msgstr "permalink" #: ../../blogview_renderer.c:302 msgid "Newer posts" msgstr "neuere Beiträge" #: ../../blogview_renderer.c:311 msgid "Older posts" msgstr "ältere Beiträge" #: ../../useredit.c:629 msgid "" "An error occurred while trying to create or edit this address book entry." msgstr "Fehler beim Erzeugen / Bearbeiten dieses Adressbuch-Eintrags." #: ../../useredit.c:717 msgid "Changes were not saved." msgstr "Änderungen verworfen." #: ../../useredit.c:782 msgid "A new user has been created." msgstr "Ein neuer Benutzer wurde angelegt." #: ../../useredit.c:786 msgid "" "You are attempting to create a new user from within Citadel while running in " "host based authentication mode. In this mode, you must create new users on " "the host system, not within Citadel." msgstr "" "Sie versuchen einen Benutzer anzulegen. Dieses System verwendet jedoch die " "Konten des Host-Systems, deshalb müssen dort neue Benutzer angelegt werden." #: ../../bbsview_renderer.c:312 msgid "Go to page: " msgstr "Zur Seite gehen: " #: ../../bbsview_renderer.c:354 msgid "First" msgstr "Anfang" #: ../../bbsview_renderer.c:360 msgid "Last" msgstr "Ende" #: ../../graphics.c:56 msgid "Graphics upload has been cancelled." msgstr "Hochladen des Bilds abgebrochen." #: ../../graphics.c:62 msgid "You didn't upload a file." msgstr "Sie haben keine Datei hochgeladen." #: ../../graphics.c:112 msgid "your photo" msgstr "Ihr Photo" #: ../../graphics.c:119 msgid "the icon for this room" msgstr "Das Symbol für diesen Raum" #: ../../graphics.c:127 msgid "the Greetingpicture for the login prompt" msgstr "Das Begrüssungsfoto auf der Anmeldeseite" #: ../../graphics.c:135 msgid "the Logoff banner picture" msgstr "das Abmeldeseiten Foto" #: ../../graphics.c:146 msgid "the icon for this floor" msgstr "Das Symbol für diese Etage" #: ../../calendar_tools.c:100 msgid "Hour: " msgstr "Stunde: " #: ../../calendar_tools.c:120 msgid "Minute: " msgstr "Minute: " #: ../../calendar_tools.c:191 msgid "(status unknown)" msgstr "(Zustand unbekannt)" #: ../../calendar_tools.c:207 msgid "(needs action)" msgstr "(zu bearbeiten)" #: ../../calendar_tools.c:210 msgid "(accepted)" msgstr "(Angenommen)" #: ../../calendar_tools.c:213 msgid "(declined)" msgstr "(Abgelehnt)" #: ../../calendar_tools.c:216 msgid "(tenative)" msgstr "(Vorläufig)" #: ../../calendar_tools.c:219 msgid "(delegated)" msgstr "(delegiert)" #: ../../calendar_tools.c:222 msgid "(completed)" msgstr "(abgeschlossen)" #: ../../calendar_tools.c:225 msgid "(in process)" msgstr "(in Bearbeitung)" #: ../../calendar_tools.c:228 msgid "(none)" msgstr "(keine)" #: ../../notes.c:343 msgid "Click on any note to edit it." msgstr "Auf eine Notiz klicken zum bearbeiten" #: ../../vcard_edit.c:175 ../../vcard_edit.c:178 msgid "(no name)" msgstr "(kein Name)" #: ../../vcard_edit.c:443 msgid " (work)" msgstr " (Firma)" #: ../../vcard_edit.c:445 msgid " (home)" msgstr " (Privat)" #: ../../vcard_edit.c:447 msgid " (cell)" msgstr " (Handy)" #: ../../vcard_edit.c:458 ../../vcard_edit.c:1120 msgid "Address:" msgstr "Adresse:" #: ../../vcard_edit.c:526 msgid "Telephone:" msgstr "Telefon" #: ../../vcard_edit.c:531 msgid "E-mail:" msgstr "E-Mail:" #: ../../vcard_edit.c:779 msgid "This address book is empty." msgstr "Dieses Adressbuch ist leer." #: ../../vcard_edit.c:793 msgid "An internal error has occurred." msgstr "Ein interner Fehler ist aufgetreten." #: ../../vcard_edit.c:944 msgid "Error" msgstr "Fehler" #: ../../vcard_edit.c:1048 msgid "Edit contact information" msgstr "Kontaktdaten bearbeiten" #: ../../vcard_edit.c:1068 msgid "Prefix" msgstr "Anrede" #: ../../vcard_edit.c:1068 msgid "First Name" msgstr "Vorname" #: ../../vcard_edit.c:1068 msgid "Middle Name" msgstr "Mittelinitial" #: ../../vcard_edit.c:1068 msgid "Last Name" msgstr "Nachname" #: ../../vcard_edit.c:1068 msgid "Suffix" msgstr "Zähler" #: ../../vcard_edit.c:1089 msgid "Display name:" msgstr "Namen anzeigen:" #: ../../vcard_edit.c:1096 msgid "Title:" msgstr "Titel:" #: ../../vcard_edit.c:1103 msgid "Organization:" msgstr "Organisation:" #: ../../vcard_edit.c:1114 msgid "PO box:" msgstr "Postfach:" #: ../../vcard_edit.c:1130 msgid "City:" msgstr "Stadt:" #: ../../vcard_edit.c:1136 msgid "State:" msgstr "Bundesland:" #: ../../vcard_edit.c:1142 msgid "ZIP code:" msgstr "Postleitzahl:" #: ../../vcard_edit.c:1148 msgid "Country:" msgstr "Land:" #: ../../vcard_edit.c:1158 msgid "Home telephone:" msgstr "Telefon:" #: ../../vcard_edit.c:1164 msgid "Work telephone:" msgstr "Telefon/Büro:" #: ../../vcard_edit.c:1170 msgid "Mobile telephone:" msgstr "Mobiltelefon:" #: ../../vcard_edit.c:1176 msgid "Fax number:" msgstr "Faxnummer." #: ../../vcard_edit.c:1187 msgid "Primary Internet e-mail address" msgstr "Haupt-EMailadresse" #: ../../vcard_edit.c:1194 msgid "Internet e-mail aliases" msgstr "Internet EMail-Aliase" #: ../../vcard_edit.c:1215 ../../sysmsgs.c:67 msgid "Save changes" msgstr "Änderungen übernehmen" #: ../../vcard_edit.c:1261 msgid "Unable to enter the room to save your message" msgstr "Kann nicht in den Raum wechseln um die Nachricht zu speichern" #: ../../vcard_edit.c:1265 msgid "Aborting." msgstr "Abgebrochen." #: ../../vcard_edit.c:1297 ../../vcard_edit.c:1341 ../../auth.c:367 #: ../../auth.c:397 msgid "An error has occurred." msgstr "Ein Fehler ist aufgetreten." #: ../../vcard_edit.c:1399 msgid "Could Not decode vcard photo\n" msgstr "Konnte VCard-Foto nicht dekodieren\n" #: ../../preferences.c:880 msgid "Cancelled. No settings were changed." msgstr "Abgebrochen. Änderungen wurden nicht gespeichert." #: ../../preferences.c:1092 msgid "Make this my start page" msgstr "Als Startseite setzen" #: ../../preferences.c:1130 msgid "This isn't allowed to become the start page." msgstr "Dies kann nicht ihre Startseite werden!" #: ../../preferences.c:1132 msgid "You no longer have a start page selected." msgstr "Startseite gelöscht" #: ../../preferences.c:1182 msgid "Prefered startpage" msgstr "Bevorzugte Startseite" #: ../../calendar.c:76 msgid "Meeting invitation" msgstr "Terminvorschlag" #: ../../calendar.c:79 msgid "Attendee's reply to your invitation" msgstr "Antwort eines Teilnehmers auf Ihre Einladung" #: ../../calendar.c:82 msgid "Published event" msgstr "Veröffentlichtes Ereignis" #: ../../calendar.c:85 msgid "This is an unknown type of calendar item." msgstr "Dies ist ein unbekanntes Kalender-Datum" #: ../../calendar.c:107 ../../calendar_view.c:306 ../../calendar_view.c:964 #: ../../calendar_view.c:1008 ../../calendar_view.c:1089 msgid "Location:" msgstr "Ort:" #: ../../calendar.c:132 ../../calendar_view.c:351 ../../calendar_view.c:970 msgid "Date:" msgstr "Datum:" #: ../../calendar.c:139 ../../calendar_view.c:373 ../../calendar_view.c:1013 #: ../../calendar_view.c:1099 msgid "Starting date/time:" msgstr "Startzeit/-Datum:" #: ../../calendar.c:150 ../../calendar_view.c:376 ../../calendar_view.c:1015 #: ../../calendar_view.c:1101 msgid "Ending date/time:" msgstr "Endzeit/-Datum:" #: ../../calendar.c:168 ../../event.c:90 msgid "Recurrence" msgstr "Wiederholung" #: ../../calendar.c:169 ../../event.c:505 msgid "This is a recurring event" msgstr "Terminserie hinzufügen" #: ../../calendar.c:178 msgid "Attendee:" msgstr "Teilnehmer:" #: ../../calendar.c:218 #, c-format msgid "This is an update of '%s' which is already in your calendar." msgstr "Die Änderung '%s', existiert bereits Ihrem Kalender ist." #: ../../calendar.c:222 #, c-format msgid "" "This event would conflict with '%s' which is already in your calendar." msgstr "" "Dieser Termin würde mit '%s' kollidieren, der bereits in Ihrem Kalender " "vorgemerkt ist." #: ../../calendar.c:227 msgid "Update:" msgstr "Update:" #: ../../calendar.c:228 msgid "CONFLICT:" msgstr "KONFLIKT:" #: ../../calendar.c:251 msgid "How would you like to respond to this invitation?" msgstr "Wie möchten Sie auf die Einladung reagieren?" #: ../../calendar.c:252 msgid "Accept" msgstr "Annehmen" #: ../../calendar.c:253 msgid "Tentative" msgstr "Vorläufig" #: ../../calendar.c:254 msgid "Decline" msgstr "Ablehnen" #: ../../calendar.c:271 msgid "Click Update to accept this reply and update your calendar." msgstr "" "Klicken Sie Aktualisieren um diese Änderung in ihren Kalender zu " "übernehmen." #: ../../calendar.c:272 msgid "Update" msgstr "Aktualisieren" #: ../../calendar.c:273 msgid "Ignore" msgstr "Ignorieren" #: ../../calendar.c:295 msgid "There was an error parsing this calendar item." msgstr "Ein Kalenderdatum konnte nicht verarbeitet werden." #: ../../calendar.c:328 msgid "" "You have accepted this meeting invitation. It has been entered into your " "calendar." msgstr "" "Sie haben die Einladung angenommen. Sie wurde in Ihren Kalender übernommen." #: ../../calendar.c:332 msgid "" "You have tentatively accepted this meeting invitation. It has been " "'pencilled in' to your calendar." msgstr "" "Sie haben diese Einladung vorläufig angenommen. Sie wurde in Ihrem Kalender " "vorgemerkt." #: ../../calendar.c:336 msgid "" "You have declined this meeting invitation. It has not been entered " "into your calendar." msgstr "" "Sie haben diese Einladung abgelehnt. Sie wurde nicht in Ihren " "Kalender übernommen." #: ../../calendar.c:341 msgid "A reply has been sent to the meeting organizer." msgstr "Eine Antwort wurde an den Organisator versendet." #. / Translators: RSVP aka Répondez s'il-vous-plaît Is the term #. / that the recipient of an ical-invitation should please #. / answer this request. #: ../../calendar.c:376 msgid "Your calendar has been updated to reflect this RSVP." msgstr "u.A.w.g. wurde eingetragen." #: ../../calendar.c:378 msgid "" "You have chosen to ignore this RSVP. Your calendar has not been " "updated." msgstr "u.A.w.g. abgelehnt. Sie wurde nicht übernommen." #: ../../calendar.c:932 msgid "Calendar day view begins at:" msgstr "Kalender-Tagesübersicht beginnt um:" #: ../../calendar.c:933 msgid "Calendar day view ends at:" msgstr "Kalender-Tagesübersicht endet um:" #: ../../calendar.c:934 msgid "Week starts on:" msgstr "Wochen starten am:" #: ../../paging.c:35 msgid "Send instant message" msgstr "Kurznachricht senden" #: ../../paging.c:43 msgid "Send an instant message to: " msgstr "Kurznachricht senden an: " #: ../../paging.c:57 msgid "Enter message text:" msgstr "Nachrichtentext eingeben:" #: ../../paging.c:65 ../../static/t/edit_message.html:109 msgid "Send message" msgstr "Meldung senden" #: ../../paging.c:84 msgid "Message was not sent." msgstr "Kurznachricht nicht gesendet." #: ../../paging.c:95 msgid "Message has been sent to " msgstr "Kurznachricht gesendet an " #: ../../iconbar.c:328 msgid "Iconbar Setting" msgstr "Iconbar einstellungen" #. #. * Set to 'unknown' right from the beginning. Unless we learn #. * something else, that's what we'll go with. #. #: ../../availability.c:148 msgid "availability unknown" msgstr "Verfügbarkeit unbekannt" #: ../../availability.c:169 msgid "free" msgstr "frei" #: ../../availability.c:179 msgid "BUSY" msgstr "BESCHÄFTIGT" #: ../../serv_func.c:193 msgid "" "This server is already serving its maximum number of users and cannot accept " "any additional logins at this time. Please try again later or contact your " "system administrator." msgstr "" "Dieser Server bedient bereits die maximale Anzahl von Benutzern. Neue " "Anmeldungen können daher nicht akzeptiert werden. Bitte versuchen Sie es " "später noch einmal oder kontaktieren Sie ihren Systemverwalter." #: ../../serv_func.c:198 ../../serv_func.c:227 msgid "Received unexpected answer from Citadel server; bailing out." msgstr "Unerwartete Meldung vom Citadel Server erhalten: Exit." #: ../../serv_func.c:236 #, c-format msgid "" "You are connected to a Citadel server running Citadel %d.%02d. \n" "In order to run this version of WebCit you must also have Citadel %d.%02d or " "newer.\n" "\n" "\n" msgstr "" "Sie sind mit einem Citadel-Server der Version %d.%02d verbunden. \n" "Webcit benötigt mindestens Version %d.%02d.\n" "\n" "\n" #: ../../event.c:70 msgid "seconds" msgstr "Sekunden" #: ../../event.c:71 msgid "minutes" msgstr "Minuten" #: ../../event.c:72 msgid "hours" msgstr "Stunden" #: ../../event.c:73 msgid "days" msgstr "Tage" #: ../../event.c:74 msgid "weeks" msgstr "Wochen" #: ../../event.c:75 msgid "months" msgstr "Monate" #: ../../event.c:76 msgid "years" msgstr "Jahre" #: ../../event.c:77 msgid "never" msgstr "nie" #: ../../event.c:81 msgid "first" msgstr "erster" #: ../../event.c:82 msgid "second" msgstr "zweiter" #: ../../event.c:83 msgid "third" msgstr "dritter" #: ../../event.c:84 msgid "fourth" msgstr "vierter" #: ../../event.c:85 msgid "fifth" msgstr "fünfter" #: ../../event.c:88 msgid "Event" msgstr "Ereignis" #: ../../event.c:89 ../../event.c:437 ../../event.c:449 msgid "Attendees" msgstr "Teilnehmer" #: ../../event.c:167 msgid "Add or edit an event" msgstr "Ereignis hinzufügen oder ändern" #: ../../event.c:206 ../../static/t/iconbar.html:13 #: ../../static/t/iconbar/edit.html:29 msgid "Summary" msgstr "Zusammenfassung" #: ../../event.c:217 msgid "Location" msgstr "Ort" #: ../../event.c:228 ../../calendar_view.c:760 msgid "Start" msgstr "Anfang" #: ../../event.c:271 ../../calendar_view.c:957 ../../calendar_view.c:986 msgid "All day event" msgstr "Ganztägiger Termin" #: ../../event.c:277 ../../calendar_view.c:761 msgid "End" msgstr "Ende" #: ../../event.c:327 ../../static/t/iconbar.html:34 #: ../../static/t/iconbar/edit.html:49 msgid "Notes" msgstr "Notiz" #: ../../event.c:369 msgid "Organizer" msgstr "Organisator" #: ../../event.c:374 msgid "(you are the organizer)" msgstr "(Sie sind der Organisator)" #: ../../event.c:392 msgid "Show time as:" msgstr "Zeit anzeigen als:" #: ../../event.c:415 msgid "Free" msgstr "Frei" #: ../../event.c:423 msgid "Busy" msgstr "Belegt" #: ../../event.c:440 msgid "(One per line)" msgstr "(einen pro Zeile)" #: ../../event.c:450 ../../static/t/edit_message.html:143 #: ../../static/t/iconbar.html:29 ../../static/t/iconbar/edit.html:42 msgid "Contacts" msgstr "Adressen" #: ../../event.c:513 msgid "Recurrence rule" msgstr "Serientermin" #: ../../event.c:517 msgid "Repeats every" msgstr "Wiederholt sich alle" #. begin 'weekday_selector' div #: ../../event.c:535 msgid "on these weekdays:" msgstr "an diesem Werktag:" #: ../../event.c:593 #, c-format msgid "on day %s%d%s of the month" msgstr "am Tag %s%d%s des Monats" #: ../../event.c:602 ../../event.c:664 msgid "on the " msgstr "an dem " #: ../../event.c:626 msgid "of the month" msgstr "des Monats" #: ../../event.c:655 msgid "every " msgstr "jedes " #: ../../event.c:656 msgid "year on this date" msgstr "Jahr an diesem Tag" #: ../../event.c:688 ../../static/t/msg_listselector_bottom.html:7 #: ../../static/t/msg_listselector_top.html:7 msgid "of" msgstr "im" #: ../../event.c:712 msgid "Recurrence range" msgstr "Serie endet..." #: ../../event.c:720 msgid "No ending date" msgstr "Kein Enddatum" #: ../../event.c:727 msgid "Repeat this event" msgstr "Dieser Termin wiederholt sich" #: ../../event.c:730 msgid "times" msgstr "mal" #: ../../event.c:738 msgid "Repeat this event until " msgstr "Diese Serie geht bis " #: ../../event.c:766 msgid "Check attendee availability" msgstr "Verfügbarkeit der Teilnehmer überprüfen" #: ../../event.c:858 ../../calendar_view.c:272 ../../calendar_view.c:468 #: ../../calendar_view.c:937 msgid "Untitled Event" msgstr "Unbenanntes Ereignis" #: ../../sysmsgs.c:52 #, c-format msgid "Edit %s" msgstr "%s bearbeiten" #: ../../sysmsgs.c:55 #, c-format msgid "" "Enter %s below. Text is formatted to the reader's browser. A newline is " "forced by preceding the next line by a blank." msgstr "" "Geben sie hier %s ein. Der Text wird auf dem Browser des Lesers " "formatiert.Eine neue Zeile erzwingt man, indem man die nächste Zeile mit " "einem Leerschritt beginnt." #: ../../sysmsgs.c:89 #, c-format msgid "Cancelled. %s was not saved." msgstr "Abgebrochen. %s wurde nicht gespeichert." #: ../../sysmsgs.c:109 msgid " has been saved." msgstr " wurde gespeichert." #: ../../sysmsgs.c:116 ../../sysmsgs.c:117 msgid "Room info" msgstr "Rauminfo" #: ../../sysmsgs.c:122 ../../sysmsgs.c:124 msgid "Your bio" msgstr "Ihre Biographie" #: ../../calendar_view.c:297 ../../calendar_view.c:958 #: ../../calendar_view.c:1002 ../../calendar_view.c:1083 #: ../../static/t/sieve/display_one.html:20 msgid "From" msgstr "Von" #: ../../calendar_view.c:355 ../../calendar_view.c:974 msgid "Starting date:" msgstr "Anfangsdatum:" #: ../../calendar_view.c:361 ../../calendar_view.c:976 msgid "Ending date:" msgstr "Terminende:" #: ../../calendar_view.c:369 ../../calendar_view.c:1095 msgid "Date/time:" msgstr "Datum/Zeit:" #: ../../calendar_view.c:386 ../../calendar_view.c:980 #: ../../calendar_view.c:1018 ../../calendar_view.c:1105 #: ../../static/t/room/edit/tab_share.html:32 msgid "Notes:" msgstr "Notizen:" #: ../../calendar_view.c:585 ../../calendar_view.c:721 msgid "previous" msgstr "vorheriger" #: ../../calendar_view.c:597 ../../calendar_view.c:733 #: ../../calendar_view.c:1308 msgid "next" msgstr "nächster" #: ../../calendar_view.c:756 msgid "Week" msgstr "Woche" #: ../../calendar_view.c:758 msgid "Hours" msgstr "Stunden" #: ../../calendar_view.c:759 ../../static/t/sieve/display_one.html:22 #: ../../static/t/msg_listview.html:9 msgid "Subject" msgstr "Betreff" #: ../../calendar_view.c:1001 ../../calendar_view.c:1024 msgid "Ongoing event" msgstr "Mehrtägiger Termin" #: ../../messages.c:70 msgid "ERROR:" msgstr "FEHLER:" #: ../../messages.c:88 msgid "Empty message" msgstr "Leere Nachricht" #: ../../messages.c:1010 msgid "Cancelled. Message was not posted." msgstr "Abgebrochen. Beitrag wurde nicht gesendet." #: ../../messages.c:1013 msgid "Automatically cancelled because you have already saved this message." msgstr "" "Automatisch abgebrochen, weil Sie diesen Beitrag schon gespeichert haben." #: ../../messages.c:1037 msgid "Saved to Drafts failed: " msgstr "In den Entwurfsordner gespeichert " #: ../../messages.c:1102 msgid "Refusing to post empty message.\n" msgstr "Werde keine leere Nachricht senden.\n" #: ../../messages.c:1128 msgid "Message has been saved to Drafts.\n" msgstr "Nachricht in Entwürfen gespeichert.\n" #: ../../messages.c:1137 msgid "Message has been sent.\n" msgstr "Nachricht wurde gesendet.\n" #: ../../messages.c:1140 msgid "Message has been posted.\n" msgstr "Beitrag wurde gesendet.\n" #: ../../messages.c:1679 msgid "The message was not moved." msgstr "Die Meldung wurde nicht verschoben." #: ../../messages.c:1719 #, c-format msgid "An error occurred while retrieving this part: %s/%s\n" msgstr "Ein Fehler trat beim laden dieses Anhangs auf: %s/%s\n" #: ../../messages.c:1796 #, c-format msgid "An error occurred while retrieving this part: %s\n" msgstr "Ein Fehler trat beim laden dieses Anhangs auf: %s\n" #: ../../messages.c:1956 msgid "Attach signature to email messages?" msgstr "EMail-Signatur anhängen?" #: ../../messages.c:1959 msgid "Use this signature:" msgstr "Diese Signatur benutzen:" #: ../../messages.c:1961 msgid "Default character set for email headers:" msgstr "Vorgabezeichensatz für EMail Kopfzeilen:" #: ../../messages.c:1964 msgid "Preferred email address" msgstr "Bevorzugte EMailadresse" #: ../../messages.c:1966 msgid "Preferred display name for email messages" msgstr "Bevorzugter Name als Email-Absender" #: ../../messages.c:1970 msgid "Preferred display name for bulletin board posts" msgstr "Bevorzugter Name in Diskussionsforen" #: ../../messages.c:1973 msgid "Mailbox view mode" msgstr "Anzeigen als Postfach" #: ../../inetconf.c:110 ../../inetconf.c:119 ../../inetconf.c:133 #: ../../inetconf.c:159 ../../netconf.c:156 ../../netconf.c:183 #: ../../netconf.c:191 ../../netconf.c:239 ../../netconf.c:247 msgid "Invalid Parameter" msgstr "Ungültiger Parameter" #: ../../inetconf.c:126 msgid " has been deleted." msgstr " wurde gelöscht." #. added status message #: ../../inetconf.c:144 msgid " added." msgstr " aufgenommen." #: ../../who.c:154 msgid "Edit your session display" msgstr "Sitzungsparameter Bearbeiten" #: ../../who.c:158 msgid "" "This screen allows you to change the way your session appears in the 'Who is " "online' listing. To turn off any 'fake' name you've previously set, simply " "click the appropriate 'change' button without typing anything in the " "corresponding box. " msgstr "" "Auf dieser Seite können Sie die in der Benutzerübersicht angezeigten Texte " "ändern. Um die Defaultwerte wiederherzustellen bei leerem Feld den " "'Raumnamen ändern' Knopf drücken " #: ../../who.c:171 msgid "Room name:" msgstr "Raumname:" #: ../../who.c:176 msgid "Change room name" msgstr "Raumnamen ändern" #: ../../who.c:180 msgid "Host name:" msgstr "Rechnername:" #: ../../who.c:185 msgid "Change host name" msgstr "Rechnernamen ändern" #: ../../who.c:190 ../../static/t/aide/edituser/detailview.html:20 #: ../../static/t/openid_manual_create.html:9 #: ../../static/t/get_logged_in.html:57 ../../static/t/get_logged_in.html:72 msgid "User name:" msgstr "Benutzername:" #: ../../who.c:195 msgid "Change user name" msgstr "Benutzernamen ändern" #: ../../siteconfig.c:46 ../../siteconfig.c:64 ../../roomlist.c:44 #: ../../roomlist.c:394 ../../static/t/room/edit/tab_expire.html:72 #: ../../static/t/room/edit/tab_config.html:149 #: ../../static/t/room/edit/tab_access.html:42 msgid "Higher access is required to access this function." msgstr "Diese Funktion benötigt höhere Zugriffsechte" #: ../../siteconfig.c:256 msgid "" "WARNING: Failed to parse Server Config; do you run a to new citserver?" msgstr "" "WARNUNG: Konnte die Serverkonfiguration nicht lesen; ist der Citserver neuer " "als WebCit?" #: ../../siteconfig.c:319 msgid "Your system configuration has been updated." msgstr "Ihre Systemkonfiguration wurde übernommen" #: ../../wiki.c:69 ../../wiki.c:162 ../../wiki.c:282 #, c-format msgid "There is no room called '%s'." msgstr "Es gibt keinen Raum mit dem Namen '%s'." #: ../../wiki.c:76 #, c-format msgid "'%s' is not a Wiki room." msgstr "'%s' ist kein Wiki-Raum." #: ../../wiki.c:110 #, c-format msgid "There is no page called '%s' here." msgstr "Es gibt hier keine Seite mit Namen '%s'." #: ../../wiki.c:112 msgid "" "Select the 'Edit this page' link in the room banner if you would like to " "create this page." msgstr "" "Klicken Sie auf 'Diese Seite bearbeiten' im Raum-Banner, wenn Sie diesen " "Raum erzeugen möchten." #: ../../wiki.c:181 ../../static/t/msg_listview.html:11 msgid "Date" msgstr "Datum" #: ../../wiki.c:182 msgid "Author" msgstr "Autor" #: ../../wiki.c:209 ../../wiki.c:218 msgid "(show)" msgstr "(anzeigen)" #: ../../wiki.c:211 ../../static/t/navbar.html:145 msgid "Current version" msgstr "Aktuelle Version" #: ../../wiki.c:223 msgid "(revert)" msgstr "(zurücknehmen)" #: ../../wiki.c:300 msgid "Page title" msgstr "Seitentitel" #: ../../webcit.c:316 msgid "Authorization Required" msgstr "Authentifizierung benötigt" #: ../../webcit.c:324 #, c-format msgid "" "The resource you requested requires a valid username and password. You could " "not be logged in: %s\n" msgstr "" "Die angeforderte Sektion benötigt einen gültigen Benutzernamen und " "Passwort.Sie konnten nicht Angemeldet werden: %s\n" #: ../../webcit.c:647 ../../auth.c:526 msgid "" "This program was unable to connect or stay connected to the Citadel server. " "Please report this problem to your system administrator." msgstr "" "Dieses Programm konnte keine Verbindung zum Citadel-Server herstellen oder " "aufrechterhalten. Bitte wenden Sie sich an Ihren Administrator." #: ../../webcit.c:654 ../../auth.c:532 msgid "Read More..." msgstr "Weiter lesen..." #: ../../smtpqueue.c:134 ../../static/t/aide/ignetconf/section.html:5 #: ../../static/t/view_mailq/message.html:2 msgid "(Delete)" msgstr "(Löschen)" #: ../../smtpqueue.c:334 msgid "First Attempt pending" msgstr "Erster Versuch steht aus" #: ../../roomlist.c:99 msgid "My Folders" msgstr "Meine Ordner" #: ../../downloads.c:289 #, c-format msgid "An error occurred while retrieving this file: %s\n" msgstr "Ein Fehler trat beim herunterladen dieser Datei auf: %s\n" #: ../../roomtokens.c:572 msgid "file" msgstr "Datei" #: ../../roomtokens.c:574 msgid "files" msgstr "Dateien" #: ../../summary.c:128 msgid "(None)" msgstr "(Keine)" #: ../../summary.c:184 msgid "(Nothing)" msgstr "(Nichts)" #: ../../msg_renderers.c:579 ../../static/t/who/bio.html:15 msgid "edit" msgstr "bearbeiten" #: ../../msg_renderers.c:1119 msgid "I don't know how to display " msgstr "Kann den folgenden Header nicht darstellen: " #: ../../msg_renderers.c:1353 msgid "(no subject)" msgstr "(kein Betreff)" #: ../../addressbook_popup.c:186 msgid "Add" msgstr "Hinzufügen" #. an erased user #: ../../auth.c:30 ../../static/t/aide/edituser/detailview.html:43 #: ../../static/t/aide/siteconfig/tab_access.html:40 #: ../../static/t/aide/siteconfig/tab_access.html:51 msgid "Deleted" msgstr "Gelöscht" #. a new user #: ../../auth.c:33 ../../static/t/aide/edituser/detailview.html:44 #: ../../static/t/aide/siteconfig/tab_access.html:41 #: ../../static/t/aide/siteconfig/tab_access.html:52 #: ../../static/t/get_logged_in.html:79 msgid "New User" msgstr "Neuer Benutzer" #. a trouble maker #: ../../auth.c:36 ../../static/t/aide/edituser/detailview.html:45 #: ../../static/t/aide/siteconfig/tab_access.html:42 #: ../../static/t/aide/siteconfig/tab_access.html:53 msgid "Problem User" msgstr "Problematischer Benutzer" #. user with normal privileges #: ../../auth.c:39 ../../static/t/aide/edituser/detailview.html:46 #: ../../static/t/aide/siteconfig/tab_access.html:43 #: ../../static/t/aide/siteconfig/tab_access.html:54 msgid "Local User" msgstr "Lokaler Benutzer" #. a user that may access network resources #: ../../auth.c:42 ../../static/t/aide/edituser/detailview.html:47 #: ../../static/t/aide/siteconfig/tab_access.html:44 #: ../../static/t/aide/siteconfig/tab_access.html:55 msgid "Network User" msgstr "Netzwerk Benutzer" #. a moderator #: ../../auth.c:45 ../../static/t/aide/edituser/detailview.html:48 #: ../../static/t/aide/siteconfig/tab_access.html:45 #: ../../static/t/aide/siteconfig/tab_access.html:56 msgid "Preferred User" msgstr "nur Privilegierte Benutzer" #. chief #: ../../auth.c:48 ../../static/t/aide/edituser/detailview.html:49 #: ../../static/t/aide/siteconfig/tab_access.html:46 #: ../../static/t/aide/siteconfig/tab_access.html:57 msgid "Admin" msgstr "Verantwortlicher" #: ../../auth.c:513 ../../static/t/iconbar.html:80 #: ../../static/t/confirmlogoff.html:3 #: ../../static/t/menu/basic_commands.html:19 msgid "Log off" msgstr "Abmelden" #: ../../auth.c:537 msgid "Log in again" msgstr "Erneut anmelden" #: ../../auth.c:585 ../../static/t/aide/usermanagement.html:3 msgid "Validate new users" msgstr "Neue Benutzer überprüfen" #: ../../auth.c:605 msgid "No users require validation at this time." msgstr "Zur Zeit müssen keine Benutzer validiert werden." #: ../../auth.c:655 msgid "very weak" msgstr "sehr schwach" #: ../../auth.c:658 msgid "weak" msgstr "schwach" #: ../../auth.c:661 msgid "ok" msgstr "in Ordnung" #: ../../auth.c:665 msgid "strong" msgstr "stark" #: ../../auth.c:683 #, c-format msgid "Current access level: %d (%s)\n" msgstr "Aktuelle Berechtigungen: %d (%s)\n" #: ../../auth.c:691 msgid "Select access level for this user:" msgstr "Berechtigungen dieses Benutzers" #: ../../auth.c:776 ../../static/t/menu/your_info.html:4 msgid "Change your password" msgstr "Ändern Sie Ihr Passwort" #: ../../auth.c:800 msgid "Enter new password:" msgstr "Bitte geben Sie ein neues Passwort ein:" #: ../../auth.c:804 msgid "Enter it again to confirm:" msgstr "Noch einmal zur Verifizierung:" #: ../../auth.c:810 msgid "Change password" msgstr "Passwort ändern" #: ../../auth.c:830 msgid "Cancelled. Password was not changed." msgstr "Abgebrochen. Passwort wurde nicht geändert." #: ../../auth.c:839 msgid "They don't match. Password was not changed." msgstr "Die Passwörter stimmen nicht überein. Passwort nicht geändert." #: ../../auth.c:845 msgid "Blank passwords are not allowed." msgstr "Leere Passwörter sind nicht zulässig." #: ../../openid.c:34 msgid "Manage Account/OpenID Associations" msgstr "Konten/OpenID Assoziierungen verwalten" #: ../../openid.c:52 msgid "Do you really want to delete this OpenID?" msgstr "Wollen Sie diese OpenID wirklich löschen?" #: ../../openid.c:53 msgid "(delete)" msgstr "(Löschen)" #: ../../openid.c:61 msgid "Add an OpenID: " msgstr "Eine OpenID hinzufügen: " #: ../../openid.c:64 msgid "Attach" msgstr "Verbinden" #: ../../openid.c:68 #, c-format msgid "%s does not permit authentication via OpenID." msgstr "%s erlaubt kein Anmelden per OpenID" #: ../../html2html.c:136 #, c-format msgid "realloc() error! couldn't get %d bytes: %s" msgstr "realloc() Fehler! Konnte %d Bytes nicht allozieren: %s" #: ../../static/t/viewomatic.html:4 msgid "View as:" msgstr "Anzeigen als:" #: ../../static/t/sieve/list.html:32 ../../static/t/sieve/none.html:4 #: ../../static/t/menu/your_info.html:7 msgid "View/edit server-side mail filters" msgstr "Bearbeiten/Anzeigen von serverseitigen Mailfiltern" #: ../../static/t/sieve/list.html:41 msgid "When new mail arrives: " msgstr "Wenn eine neue Mail ankommt: " #: ../../static/t/sieve/list.html:43 msgid "Leave it in my inbox without filtering" msgstr "Im Posteingang belassen ohne filtern" #: ../../static/t/sieve/list.html:44 msgid "Filter it according to rules selected below" msgstr "Mit den folgenden Regeln filtern" #: ../../static/t/sieve/list.html:45 msgid "Filter it through a manually edited script (advanced users only)" msgstr "Mit manuell bearbeitetem Script filtern (nur für erfahrene Benutzer)" #: ../../static/t/sieve/list.html:52 msgid "Your incoming mail will not be filtered through any scripts." msgstr "Ihre ankommenden Mails werden nicht gefiltert." #: ../../static/t/sieve/list.html:64 msgid "Add rule" msgstr "Neue Regel" #: ../../static/t/sieve/list.html:71 msgid "The currently active script is: " msgstr "Das zur Zeit aktive Script ist: " #: ../../static/t/sieve/list.html:76 ../../static/t/sieve/add.html:3 msgid "Add or delete scripts" msgstr "Script bearbeiten/löschen" #: ../../static/t/sieve/display_one.html:16 msgid "If" msgstr "Wenn" #: ../../static/t/sieve/display_one.html:21 msgid "To or Cc" msgstr "To oder Cc" #: ../../static/t/sieve/display_one.html:23 msgid "Reply-to" msgstr "Reply-to" #: ../../static/t/sieve/display_one.html:24 #: ../../static/t/msg_listview.html:10 #: ../../static/t/view_mailq/header.html:27 msgid "Sender" msgstr "Absender" #: ../../static/t/sieve/display_one.html:25 msgid "Resent-From" msgstr "Resent-From" #: ../../static/t/sieve/display_one.html:26 msgid "Resent-To" msgstr "Resent-To" #: ../../static/t/sieve/display_one.html:27 msgid "Envelope From" msgstr "Envelope From" #: ../../static/t/sieve/display_one.html:28 msgid "Envelope To" msgstr "Envelope To" #: ../../static/t/sieve/display_one.html:29 msgid "X-Mailer" msgstr "X-Mailer" #: ../../static/t/sieve/display_one.html:30 msgid "X-Spam-Flag" msgstr "X-Spam-Flag" #: ../../static/t/sieve/display_one.html:31 msgid "X-Spam-Status" msgstr "X-Spam-Status" #: ../../static/t/sieve/display_one.html:32 msgid "List-ID" msgstr "Listen-ID" #: ../../static/t/sieve/display_one.html:33 msgid "Message size" msgstr "Nachrichten größe" #: ../../static/t/sieve/display_one.html:34 #: ../../static/t/select_messageindex_all.html:1 msgid "All" msgstr "Alle" #: ../../static/t/sieve/display_one.html:41 msgid "contains" msgstr "beinhaltet" #: ../../static/t/sieve/display_one.html:42 msgid "does not contain" msgstr "beinhaltet nicht" #: ../../static/t/sieve/display_one.html:43 msgid "is" msgstr "ist" #: ../../static/t/sieve/display_one.html:44 msgid "is not" msgstr "ist nicht" #: ../../static/t/sieve/display_one.html:45 msgid "matches" msgstr "trifft zu" #: ../../static/t/sieve/display_one.html:46 msgid "does not match" msgstr "trifft nicht zu" #: ../../static/t/sieve/display_one.html:52 msgid "(All messages)" msgstr "(Alle Beiträge)" #: ../../static/t/sieve/display_one.html:56 msgid "is larger than" msgstr "ist größer als" #: ../../static/t/sieve/display_one.html:57 msgid "is smaller than" msgstr "ist kleiner als" #: ../../static/t/sieve/display_one.html:59 msgid "bytes" msgstr "bytes" #: ../../static/t/sieve/display_one.html:65 msgid "Keep" msgstr "Behalten" #: ../../static/t/sieve/display_one.html:66 msgid "Discard silently" msgstr "still verwerfen" #: ../../static/t/sieve/display_one.html:67 msgid "Reject" msgstr "Abweisen" #: ../../static/t/sieve/display_one.html:68 msgid "Move message to" msgstr "Meldung verschieben nach" #: ../../static/t/sieve/display_one.html:69 msgid "Forward to" msgstr "Weiterleiten an" #: ../../static/t/sieve/display_one.html:70 msgid "Vacation" msgstr "Abwesenheits-Benachrichtigung" #: ../../static/t/sieve/display_one.html:82 msgid "Message:" msgstr "Nachricht:" #: ../../static/t/sieve/display_one.html:90 msgid "and then" msgstr "und dann" #: ../../static/t/sieve/display_one.html:93 msgid "continue processing" msgstr "weiter Bearbeiten" #: ../../static/t/sieve/display_one.html:94 msgid "stop" msgstr "stop" #: ../../static/t/sieve/none.html:9 msgid "" "This installation of Citadel was built without support for server-side mail " "filtering.
    Please contact your system administrator if you require this " "feature.
    " msgstr "" "Diese Citadel installation wurde ohne Serverseitige Mailfilter gebaut
    " "Bitte fragen Sie Ihren Administrator, wenn Sie diese Funktion brauchen." #: ../../static/t/sieve/add.html:9 msgid "Add a new script" msgstr "Neues Script hinzufügen" #: ../../static/t/sieve/add.html:10 msgid "" "To create a new script, enter the desired script name in the box below and " "click 'Create'." msgstr "" "Um eine neues Script anzulegen, den gewünschten Scriptnamen in das Textfeld " "eintragen und 'Anlegen' Klicken" #: ../../static/t/sieve/add.html:14 msgid "Script name: " msgstr "Script-Name: " #: ../../static/t/sieve/add.html:18 msgid "Edit scripts" msgstr "Script bearbeiten" #: ../../static/t/sieve/add.html:20 msgid "Return to the script editing screen" msgstr "Zurück zum Bearbeitungsformular" #: ../../static/t/sieve/add.html:23 msgid "Delete scripts" msgstr "Script Löschen" #: ../../static/t/sieve/add.html:24 msgid "" "To delete an existing script, select the script name from the list and click " "'Delete'." msgstr "" "Um ein vorhandenes Script zu löschen, das Script aus der Liste auswählen und " "dann 'Löschen' Klicken" #: ../../static/t/msg/confirm_move.html:4 msgid "Confirm move of message" msgstr "Verschieben bestätigen" #: ../../static/t/msg/confirm_move.html:12 msgid "Move this message to:" msgstr "Meldung verschieben nach:" #: ../../static/t/login.html:5 msgid "powered by" msgstr "betrieben mit" #: ../../static/t/login.html:15 ../../static/t/iconbar.html:88 #: ../../static/t/get_logged_in.html:64 ../../static/t/get_logged_in.html:88 #: ../../static/t/get_logged_in.html:93 ../../static/t/get_logged_in.html:98 #: ../../static/t/get_logged_in.html:107 msgid "Log in" msgstr "Anmelden" #: ../../static/t/trailing.html:14 msgid "" "WARNING: You have JavaScript disabled in your web browser. Many functions " "of this system will not work properly." msgstr "" "WARNUNG: JavaScript ist im Browser abgeschaltet. Viele Funktionen des " "Systems stehen nicht zur verfügung." #: ../../static/t/view_submessage.html:4 #: ../../static/t/view_message/replyquote.html:3 #: ../../static/t/view_message/replyquote.html:7 #: ../../static/t/view_message/print.html:8 ../../static/t/view_message.html:7 msgid "from " msgstr "von " #: ../../static/t/searchomatic.html:4 msgid "Search: " msgstr "Suchen: " #: ../../static/t/listsub/display.html:16 msgid "You are subscribing " msgstr "Sie abonnieren " #: ../../static/t/listsub/display.html:17 msgid " to the " msgstr " die " #: ../../static/t/listsub/display.html:18 msgid " mailing list." msgstr " Mailing-Liste." #: ../../static/t/listsub/display.html:19 msgid "" "The listserver has sent you an e-mail with one additional Web link for you " "to click on to confirm your subscription." msgstr "" "Der Mailing-Listen-Server hat Ihnen eine E-Mail mit einem Verweis gesendet, " "auf den Sie klicken müssen, um Ihr Abonnement zu bestätigen." #: ../../static/t/listsub/display.html:20 msgid "" "This extra step is for your protection, as it prevents others from being " "able to subscribe you to lists without your consent." msgstr "" "Dieser zusätzliche Schritt dient Ihrem Schutz, weil dadurch verhindert wird, " "dass andere ohne Ihre Zustimmung für Sie Mailing-Listen abonnieren können." #: ../../static/t/listsub/display.html:22 msgid "" "Please click on the link which is being e-mailed to you and your " "subscription will be confirmed." msgstr "" "Bitte klicken Sie auf den Verweis, der Ihnen per E-Mail gesendet wurde und " "Ihr Abonnement wird bestätigt." #: ../../static/t/listsub/display.html:27 #: ../../static/t/listsub/display.html:47 msgid "ERROR" msgstr "FEHLER" #: ../../static/t/listsub/display.html:35 msgid "You are unsubscribing" msgstr "Sie kündigen das Abonnement" #: ../../static/t/listsub/display.html:37 msgid "from the" msgstr "der" #: ../../static/t/listsub/display.html:39 msgid "mailing list." msgstr "Mailing-Liste." #: ../../static/t/listsub/display.html:40 msgid "" "The listserver has sent you an e-mail with one additional Web link for you " "to click on to confirm your unsubscription." msgstr "" "Der Mailing-Listen-Server hat Ihnen eine E-Mail mit einem Verweis gesendet, " "auf den Sie klicken müssen, um die Kündigung Ihres Abonnements zu bestätigen." #: ../../static/t/listsub/display.html:41 msgid "" "This extra step is for your protection, as it prevents others from being " "able to unsubscribe you from lists without your consent." msgstr "" "Dieser zusätzliche Schritt dient Ihrem Schutz, weil dadurch verhindert wird, " "dass andere ohne Ihre Zustimmung Ihre Mailing-Listen-Abonnements kündigen " "können." #: ../../static/t/listsub/display.html:43 msgid "" "Please click on the link which is being e-mailed to you and your " "unsubscription will be confirmed." msgstr "" "Bitte klicken Sie auf den Verweis, der Ihnen per E-Mail gesendet wurde und " "Ihre Abonnement-Kündigung wird bestätigt." #: ../../static/t/listsub/display.html:44 msgid "Back..." msgstr "Zurück …" #: ../../static/t/listsub/display.html:54 msgid "Confirmation successful!" msgstr "Bestätigung erfolgreich!" #: ../../static/t/listsub/display.html:56 msgid "Confirmation failed." msgstr "Bestätigung gescheitert." #: ../../static/t/listsub/display.html:57 msgid "This could mean one of two things:" msgstr "Das könnte eines von zwei Dingen bedeuten:" #: ../../static/t/listsub/display.html:59 msgid "" "You waited too long to confirm your subscribe/unsubscribe request (the " "confirmation link is only valid for three days)" msgstr "" "Sie haben mit der Bestätigung Ihres Abonnements/Ihrer Abonnement-Kündigung " "zu lange gewartet (der Verweis zur Bestätigung ist nur drei Tage lang gültig)" #: ../../static/t/listsub/display.html:60 msgid "" "You have already successfully confirmed your subscribe/unsubscribe " "request and are attempting to do it again." msgstr "" "Sie haben bereits erfolgreich Ihr Abonnement/Ihre Abonnement-" "Kündigung bestätigt und versuchen es gerade erneut." #: ../../static/t/listsub/display.html:62 msgid "The error returned by the server was: " msgstr "Der vom Server gemeldete Fehler war: " #: ../../static/t/listsub/display.html:70 msgid "Name of list:" msgstr "Name der Liste:" #: ../../static/t/listsub/display.html:75 msgid "Your e-mail address:" msgstr "Ihre E-Mail-Adresse:" #: ../../static/t/listsub/display.html:79 msgid "(If subscribing) preferred format: " msgstr "Bevorzugtes Format (falls Sie abonnieren): " #: ../../static/t/listsub/display.html:80 msgid "One message at a time" msgstr "Eine Nachricht auf einmal" #: ../../static/t/listsub/display.html:81 msgid "Digest format" msgstr "Digest-Format" #: ../../static/t/listsub/display.html:89 msgid "" "When you attempt to subscribe or unsubscribe to a mailing list, you will " "receive an e-mail containing one additional web link to click on for final " "confirmation." msgstr "" "Sie werden eine E-Mail mit einem zusätzlichen Verweis erhalten, auf den Sie " "zur endgültigen Bestätigung klicken müssen, wenn Sie versuchen, eine Mailing-" "Liste zu abonnieren oder zu kündigen." #: ../../static/t/listsub/display.html:90 msgid "" "This extra step is for your protection, as it prevents others from being " "able to subscribe or unsubscribe you to lists." msgstr "" "Dieser zusätzliche Schritt dient Ihrem Schutz, weil dadurch verhindert wird, " "dass andere ohne Ihre Zustimmung für Sie Mailing-Listen abonnieren oder Ihre " "Mailing-Listen-Abonnements kündigen können." #: ../../static/t/floors_edit_one.html:11 msgid "(delete floor)" msgstr "(Etage löschen)" #: ../../static/t/floors_edit_one.html:13 msgid "(edit graphic)" msgstr "(Bild verändern)" #: ../../static/t/floors.html:4 msgid "Add/change/delete floors" msgstr "Etage erstellen/ändern/löschen" #: ../../static/t/floors.html:10 msgid "Floor number" msgstr "Etagen-Nr." #: ../../static/t/floors.html:11 msgid "Floor name" msgstr "Etagen-Name" #: ../../static/t/floors.html:12 msgid "Number of rooms" msgstr "Zahl der Räume" #: ../../static/t/floors.html:13 msgid "Floor CSS" msgstr "Etagen CSS" #: ../../static/t/files.html:4 msgid "Files available for download in" msgstr "Zum Download verfügbare Dateien in" #: ../../static/t/files.html:9 msgid "Upload a file:" msgstr "Eine Datei hochladen:" #: ../../static/t/files.html:30 msgid "Filename" msgstr "Dateiname" #: ../../static/t/files.html:31 msgid "Size" msgstr "Größe" #: ../../static/t/files.html:32 msgid "Content" msgstr "Inhalt" #: ../../static/t/files.html:33 msgid "Description" msgstr "Beschreibung" #: ../../static/t/edit_message.html:9 ../../static/t/iconbar.html:50 #: ../../static/t/iconbar.html:59 msgid "Loading" msgstr "Lade" #: ../../static/t/edit_message.html:23 msgid "from" msgstr "von" #: ../../static/t/edit_message.html:29 ../../static/t/edit_message.html:38 msgid "Anonymous" msgstr "Anonym" #: ../../static/t/edit_message.html:47 msgid "in" msgstr "in" #: ../../static/t/edit_message.html:51 msgid "To:" msgstr "An:" #: ../../static/t/edit_message.html:57 #: ../../static/t/view_message/print.html:15 #: ../../static/t/view_message.html:15 msgid "CC:" msgstr "CC:" #: ../../static/t/edit_message.html:63 msgid "BCC:" msgstr "BCC:" #: ../../static/t/edit_message.html:71 msgid "Subject (optional):" msgstr "Betreff (optional):" #: ../../static/t/edit_message.html:71 #: ../../static/t/view_message/replyquote.html:8 #: ../../static/t/view_message/print.html:16 #: ../../static/t/view_message.html:16 msgid "Subject:" msgstr "Betreff:" #: ../../static/t/edit_message.html:86 msgid "--- forwarded message ---" msgstr "--- Weitergeleitete Nachricht ---" #: ../../static/t/edit_message.html:110 msgid "Post message" msgstr "Beitrag senden" #: ../../static/t/edit_message.html:118 msgid "Save to Drafts" msgstr "Als Entwurf speichern." #: ../../static/t/edit_message.html:126 #: ../../static/t/edit_message/attachments_pane.html:5 msgid "Attachments:" msgstr "Anhänge:" #: ../../static/t/aide/display_serverrestart_page.html:4 msgid "Message to your Users:" msgstr "Kurznachricht an die Benutzer:" #: ../../static/t/aide/display_generic_result.html:2 msgid "Server command results" msgstr "Server-Kommando-Ergebnisse" #: ../../static/t/aide/display_generic_result.html:18 msgid "Enter another command" msgstr "Weiteren Befehl eingeben" #: ../../static/t/aide/display_generic_result.html:19 msgid "Return to menu" msgstr "Zurück zum Menü" #: ../../static/t/aide/display_sitewide_config.html:3 msgid "Site configuration" msgstr "Standortskonfiguration" #: ../../static/t/aide/display_sitewide_config.html:6 #: ../../static/t/aide/edituser/select.html:9 msgid "You need to be aide to view this." msgstr "Sie haben keine Berechtigung diese Ressource einzusehen." #: ../../static/t/aide/display_sitewide_config.html:11 msgid "General" msgstr "Allgemein" #: ../../static/t/aide/display_sitewide_config.html:12 msgid "Access" msgstr "Zugang" #: ../../static/t/aide/display_sitewide_config.html:13 msgid "Network" msgstr "Netzwerk" #: ../../static/t/aide/display_sitewide_config.html:14 msgid "Tuning" msgstr "Feinabstimmung" #: ../../static/t/aide/display_sitewide_config.html:15 msgid "Directory" msgstr "Verzeichnis" #: ../../static/t/aide/display_sitewide_config.html:16 msgid "Auto-purger" msgstr "Automatischer Nachrichtenlöscher" #: ../../static/t/aide/display_sitewide_config.html:17 msgid "Indexing/Journaling" msgstr "Indizierung/Protokollierung" #: ../../static/t/aide/display_sitewide_config.html:18 #: ../../static/t/aide/siteconfig/tab_pushmail.html:1 msgid "Push Email" msgstr "Mobile Push-EMail" #: ../../static/t/aide/display_sitewide_config.html:19 msgid "Pop3" msgstr "Pop3" #: ../../static/t/aide/usermanagement.html:2 msgid "Add, change, delete user accounts" msgstr "Benutzer bearbeiten/löschen/anlegen" #: ../../static/t/aide/display_inetconf.html:5 #: ../../static/t/aide/display_menu.html:5 msgid "System Administration Menu" msgstr "Systemverwaltungsmenü" #: ../../static/t/aide/display_inetconf.html:6 #: ../../static/t/aide/display_menu.html:6 msgid "Room Admin Menu" msgstr "Raumverantwortlichen Menü" #: ../../static/t/aide/display_inetconf.html:13 msgid "Local host aliases" msgstr "Aliase für diese Maschine" #: ../../static/t/aide/display_inetconf.html:14 msgid "Directory domains" msgstr "Verzeichnis Namen" #: ../../static/t/aide/display_inetconf.html:15 msgid "Smart hosts" msgstr "Smart Hosts" #: ../../static/t/aide/display_inetconf.html:16 msgid "Fallback smart hosts" msgstr "Ausweich Smart-Hosts" #: ../../static/t/aide/display_inetconf.html:17 msgid "Notification hosts" msgstr "Benachrichtigungshosts" #: ../../static/t/aide/display_inetconf.html:22 msgid "RBL hosts" msgstr "Blacklist-Maschinen" #: ../../static/t/aide/display_inetconf.html:23 msgid "SpamAssassin hosts" msgstr "SpamAssassin-Maschinen" #: ../../static/t/aide/display_inetconf.html:24 msgid "ClamAV clamd hosts" msgstr "ClamAV Clamd Maschine" #: ../../static/t/aide/display_inetconf.html:25 msgid "Masqueradable domains" msgstr "Masquarading-Domains" #: ../../static/t/aide/edituser/select.html:5 msgid "Edit or delete users" msgstr "Benutzer bearbeiten/löschen" #: ../../static/t/aide/edituser/select.html:17 msgid "Add users" msgstr "Neuer Benutzer" #: ../../static/t/aide/edituser/select.html:20 msgid "Edit or Delete users" msgstr "Benutzer bearbeiten/löschen" #: ../../static/t/aide/edituser/box_select.html:1 msgid "" "To edit an existing user account, select the user name from the list and " "click 'Edit'." msgstr "" "Einen vorhandenen Benutzer zum Bearbeiten aus der Liste auswählen und dann " "'Bearbeiten' Klicken" #: ../../static/t/aide/edituser/detailview.html:4 msgid "Edit user account: " msgstr "Benutzer bearbeiten: " #: ../../static/t/aide/edituser/detailview.html:24 #: ../../static/t/room/edit/tab_feed.html:14 msgid "Password" msgstr "Passwort" #: ../../static/t/aide/edituser/detailview.html:28 msgid "Permission to send Internet mail" msgstr "Erlaubnis Internet-EMail zu senden" #: ../../static/t/aide/edituser/detailview.html:32 msgid "Number of logins" msgstr "Anzahl der Anmeldungen" #: ../../static/t/aide/edituser/detailview.html:36 msgid "Messages submitted" msgstr "Nachricht abgeschickt" #: ../../static/t/aide/edituser/detailview.html:40 msgid "Access level" msgstr "Zugangsberechtigung" #: ../../static/t/aide/edituser/detailview.html:54 msgid "User ID number" msgstr "Benutzer-ID" #: ../../static/t/aide/edituser/detailview.html:58 msgid "Date and time of last login" msgstr "Datum der letzten Anmeldung" #: ../../static/t/aide/edituser/detailview.html:68 msgid "Auto-purge after this many days" msgstr "Automatisch löschen nach n Tagen" #: ../../static/t/aide/edituser/add.html:1 msgid "" "To create a new user account, enter the desired user name in the box below " "and click 'Create'." msgstr "" "Um einen neuen Benutzer einzurichten, den Anmeldenamen in das Textfeld " "eintragen und 'Anlegen' Klicken" #: ../../static/t/aide/edituser/add.html:5 msgid "New user: " msgstr "Neuer Benutzer: " #: ../../static/t/aide/display_generic_cmd.html:4 msgid "Enter a server command" msgstr "Ein Server-Kommando eingeben" #: ../../static/t/aide/display_generic_cmd.html:12 msgid "" "This screen allows you to enter Citadel server commands which are not " "supported by WebCit. If you do not know what that means, then this screen " "will not be of much use to you." msgstr "" "Dieses Fenster erlaubt Ihnen, Citadel-Server Befehle, die nicht in WebCit " "verwendet werden, direkt einzugeben. Wenn Ihnen dies nichts sagt, wird " "dieses Fenster für Sie nicht ohne Studium der Dokumentation von Nutzen sein." #: ../../static/t/aide/display_generic_cmd.html:15 msgid "Enter command:" msgstr "Kommando eingeben:" #: ../../static/t/aide/display_generic_cmd.html:17 msgid "Command input (if requesting SEND_LISTING transfer mode):" msgstr "Kommando Eingabe (wenn Sie SEND_LISTING Transfer-Modus anfordern):" #: ../../static/t/aide/display_generic_cmd.html:20 msgid "Detected host header is " msgstr "Der gefundene Host Header ist " #: ../../static/t/aide/display_ignetconf.html:4 msgid "Network configuration" msgstr "Netzwerk-Konfiguration" #: ../../static/t/aide/display_ignetconf.html:10 #: ../../static/t/aide/ignetconf/edit_node.html:5 #: ../../static/t/aide/ignetconf/add.html:5 msgid "Add a new node" msgstr "Neuen Knoten hinzufügen" #: ../../static/t/aide/display_ignetconf.html:14 msgid "Currently configured nodes" msgstr "Schon konfigurierte Knoten" #: ../../static/t/aide/display_serverrestart.html:26 msgid "Restart Citadel" msgstr "Citadel neu starten" #: ../../static/t/aide/floorconfig.html:2 msgid "Add, change, or delete floors" msgstr "Etagen bearbeiten/löschen/hinzufügen" #: ../../static/t/aide/serverrestart/box.html:3 msgid "Please wait while the Citadel server is restarted... " msgstr "Bitte warten während der Citadel-Server neu gestartet wird " #: ../../static/t/aide/serverrestart/box_page_do.html:3 msgid "" "Please wait while your users are being paged, the citadel server will be " "restarted after that... " msgstr "" "Bitte warten während die Benutzer benachrichtigt werden, der Server wird " "dann neu gestarted. " #: ../../static/t/aide/inet/masqdomains.html:2 msgid "(Domains as which users are allowed to masquerade)" msgstr "(nicht lokale Domänen, von denen Benutzer Mails schicken dürfen)" #: ../../static/t/aide/inet/rbldns.html:2 msgid "(hosts running a Realtime Blackhole List)" msgstr "(Maschinen, von denen Echtzeit-Blacklisten zu beziehen sind)" #: ../../static/t/aide/inet/dirnames.html:2 msgid "(domains mapped with the Global Address Book)" msgstr "(Domäne, auf die das öffentliche Adressbuch zeigt)" #: ../../static/t/aide/inet/notify.html:2 msgid "(URLS for notifications when users receive new mails; )" msgstr "(URLs für Benachrichtigungen, when ein Nutzer neue Mails erhält;)" #: ../../static/t/aide/inet/notify.html:2 msgid "" "Syntax: Notificationtemplatename:http[s]://user:password@hostname/path" msgstr "" "Syntax: Notificationtemplatename:http[s]://user:password@hostname/path" #: ../../static/t/aide/inet/smarthosts.html:2 msgid "(if present, forward all outbound mail to one of these hosts)" msgstr "" "(wenn gesetzt, alle zu versendende Mail über diese Maschine verschicken)" #: ../../static/t/aide/inet/aliases.html:2 msgid "(domains for which this host receives mail)" msgstr "(Domäne für die diese Maschine Mail bekommt)" #: ../../static/t/aide/inet/clamav.html:2 msgid "(hosts running the ClamAV clamd service)" msgstr "(Maschine, auf der Ihr ClamAV läuft)" #: ../../static/t/aide/inet/spamass.html:2 msgid "(hosts running the SpamAssassin service)" msgstr "(Maschine, auf der Ihr SpamAssassin läuft)" #: ../../static/t/aide/inet/fallbackhosts.html:2 msgid "(send outbound mail to these hosts only when direct delivery fails)" msgstr "" "(sende auslaufende Mails nur für die Hosts, bei denen die direkte Übertragen " "fehlschlägt)" #: ../../static/t/aide/ignetconf/display_confirm_delete.html:5 msgid "Confirm delete" msgstr "Löschen bestätigen" #: ../../static/t/aide/ignetconf/display_confirm_delete.html:11 msgid "Are you sure you want to delete " msgstr "wirklich löschen? " #: ../../static/t/aide/ignetconf/display_confirm_delete.html:14 #: ../../static/t/prefs/box.html:198 ../../static/t/iconbar/edit.html:19 #: ../../static/t/iconbar/edit.html:26 ../../static/t/iconbar/edit.html:32 #: ../../static/t/iconbar/edit.html:39 ../../static/t/iconbar/edit.html:45 #: ../../static/t/iconbar/edit.html:52 ../../static/t/iconbar/edit.html:58 #: ../../static/t/iconbar/edit.html:64 ../../static/t/iconbar/edit.html:70 #: ../../static/t/iconbar/edit.html:76 ../../static/t/iconbar/edit.html:82 #: ../../static/t/iconbar/edit.html:88 msgid "Yes" msgstr "Ja" #: ../../static/t/aide/ignetconf/display_confirm_delete.html:16 #: ../../static/t/prefs/box.html:200 ../../static/t/iconbar/edit.html:20 #: ../../static/t/iconbar/edit.html:27 ../../static/t/iconbar/edit.html:33 #: ../../static/t/iconbar/edit.html:40 ../../static/t/iconbar/edit.html:46 #: ../../static/t/iconbar/edit.html:53 ../../static/t/iconbar/edit.html:59 #: ../../static/t/iconbar/edit.html:65 ../../static/t/iconbar/edit.html:71 #: ../../static/t/iconbar/edit.html:77 ../../static/t/iconbar/edit.html:83 #: ../../static/t/iconbar/edit.html:89 msgid "No" msgstr "Nein" #: ../../static/t/aide/ignetconf/edit_node.html:15 #: ../../static/t/aide/ignetconf/add.html:15 #: ../../static/t/aide/siteconfig/tab_general.html:8 msgid "Node name" msgstr "Name des Knotens" #: ../../static/t/aide/ignetconf/edit_node.html:17 #: ../../static/t/aide/ignetconf/add.html:17 msgid "Shared secret" msgstr "Gemeinsames Passwort" #: ../../static/t/aide/ignetconf/edit_node.html:19 #: ../../static/t/aide/ignetconf/add.html:19 msgid "Host or IP address" msgstr "Maschinenname oder IP-Adresse" #: ../../static/t/aide/ignetconf/edit_node.html:21 #: ../../static/t/aide/ignetconf/add.html:21 msgid "Port number" msgstr "Portnummer" #: ../../static/t/aide/ignetconf/section.html:4 msgid "(Edit)" msgstr "(Bearbeiten)" #: ../../static/t/aide/display_menu.html:12 msgid "Global Configuration" msgstr "Globale Konfiguration" #: ../../static/t/aide/display_menu.html:14 msgid "User account management" msgstr "Benutzer verwalten" #: ../../static/t/aide/display_menu.html:16 msgid "Shutdown Citadel" msgstr "Citadel Restarten" #: ../../static/t/aide/display_menu.html:18 msgid "Rooms and Floors" msgstr "Räume und Etagen" #: ../../static/t/aide/global_config.html:2 msgid "Edit site-wide configuration" msgstr "Systemvorgaben bearbeiten" #: ../../static/t/aide/global_config.html:3 msgid "Domain names and Internet mail configuration" msgstr "Domänennamens- und Internetmail-Konfiguration" #: ../../static/t/aide/global_config.html:4 msgid "Configure replication with other Citadel servers" msgstr "Die Replikation mit anderen Citadel-Servern konfigurieren" #: ../../static/t/aide/global_config.html:5 #: ../../static/t/view_mailq/header.html:3 msgid "View the outbound SMTP queue" msgstr "SMTP-Ausgangswarteschlange anzeigen" #: ../../static/t/aide/restart.html:2 msgid "Restart Now" msgstr "Jetzt neustarten" #: ../../static/t/aide/restart.html:3 msgid "Restart after paging users" msgstr "Nach benachrichtigen der User neustarten" #: ../../static/t/aide/restart.html:4 msgid "Restart when all users are idle" msgstr "Neustarten, wenn alle Benutzer inaktiv sind" #: ../../static/t/aide/siteconfig/tab_general.html:1 msgid "General site configuration items" msgstr "Allgemeine Standortskonfiguration" #: ../../static/t/aide/siteconfig/tab_general.html:5 msgid "Change Login Logo" msgstr "Anmeldelogo wechseln" #: ../../static/t/aide/siteconfig/tab_general.html:6 msgid "Change Logout Logo" msgstr "Abmeldelogo wechseln" #: ../../static/t/aide/siteconfig/tab_general.html:11 msgid "Fully qualified domain name" msgstr "Vollqualifizierter Domänenname" #: ../../static/t/aide/siteconfig/tab_general.html:14 msgid "Human-readable node name" msgstr "Menschenlesbarer Knotenname" #: ../../static/t/aide/siteconfig/tab_general.html:17 msgid "Telephone number" msgstr "Telefonnummer" #: ../../static/t/aide/siteconfig/tab_general.html:20 msgid "Paginator prompt (for text mode clients)" msgstr "Eingabeaufforderung (nur für Textclients)" #: ../../static/t/aide/siteconfig/tab_general.html:23 msgid "Geographic location of this system" msgstr "Geografische Position dieses Systems" #: ../../static/t/aide/siteconfig/tab_general.html:26 msgid "Name of system administrator" msgstr "Name des Verwalters" #: ../../static/t/aide/siteconfig/tab_general.html:29 msgid "Default timezone for unzoned calendar items" msgstr "Vorgabe Zeitzone für Kalendereinträge ohne Zeitzone" #: ../../static/t/aide/siteconfig/tab_autopurger.html:1 msgid "Configure automatic expiry of old messages" msgstr "Automatischen Verfall alter Nachrichten konfigurieren" #: ../../static/t/aide/siteconfig/tab_autopurger.html:2 msgid "These settings may be overridden on a per-floor or per-room basis." msgstr "" "Diese Einstellungen können auf Etagen- oder Raum-Basis aufgehoben werden." #: ../../static/t/aide/siteconfig/tab_autopurger.html:6 msgid "Hour to run database auto-purge" msgstr "Zeit, zu der die Raumsäuberungen laufen sollen" #: ../../static/t/aide/siteconfig/tab_autopurger.html:66 msgid "Default message expire policy for public rooms" msgstr "" "Standardwerte für die Vorhaltedauer von Nachrichten in öffentlichen Räumen" #: ../../static/t/aide/siteconfig/tab_autopurger.html:68 #: ../../static/t/aide/siteconfig/tab_autopurger.html:86 #: ../../static/t/room/edit/tab_expire.html:17 #: ../../static/t/room/edit/tab_expire.html:45 msgid "Never automatically expire messages" msgstr "Nachrichten nie automatisch löschen" #: ../../static/t/aide/siteconfig/tab_autopurger.html:71 #: ../../static/t/aide/siteconfig/tab_autopurger.html:89 #: ../../static/t/room/edit/tab_expire.html:20 #: ../../static/t/room/edit/tab_expire.html:48 msgid "Expire by message count" msgstr "Nachrichten nach Anzahl löschen" #: ../../static/t/aide/siteconfig/tab_autopurger.html:73 #: ../../static/t/aide/siteconfig/tab_autopurger.html:92 #: ../../static/t/room/edit/tab_expire.html:23 #: ../../static/t/room/edit/tab_expire.html:51 msgid "Expire by message age" msgstr "Lösche Nachrichten älter als" #: ../../static/t/aide/siteconfig/tab_autopurger.html:75 #: ../../static/t/aide/siteconfig/tab_autopurger.html:94 #: ../../static/t/room/edit/tab_expire.html:25 #: ../../static/t/room/edit/tab_expire.html:53 msgid "Number of messages or days: " msgstr "Anzahl der Nachrichten pro Tag: " #: ../../static/t/aide/siteconfig/tab_autopurger.html:81 msgid "Default message expire policy for private mailboxes" msgstr "" "Standardwerte für die Vorhaltedauer von Nachrichten in privaten Mailboxen" #: ../../static/t/aide/siteconfig/tab_autopurger.html:83 msgid "Same policy as public rooms" msgstr "Die selben Werte wie in öffentlichen Räumen" #: ../../static/t/aide/siteconfig/tab_network.html:1 msgid "Network services" msgstr "Netzwerkdienste" #: ../../static/t/aide/siteconfig/tab_network.html:2 #: ../../static/t/aide/siteconfig/tab_directory.html:3 msgid "" "Changes made on this screen will not take effect until you restart the " "Citadel server." msgstr "" "Änderungen in diesem Menü werden erst mit Neustart des Citadel-Servers aktiv." #: ../../static/t/aide/siteconfig/tab_network.html:6 msgid "SMTP MTA port (-1 to disable)" msgstr "SMTP MTA Server Port (-1 zum abschalten)" #: ../../static/t/aide/siteconfig/tab_network.html:9 msgid "Correct forged From: lines during authenticated SMTP" msgstr "'From:' -Kopfzeilen bei authentifizierten SMTP korrigieren" #: ../../static/t/aide/siteconfig/tab_network.html:12 msgid "Flag message as spam, instead of rejecting it" msgstr "Meldung als Spam Markieren, anstelle verwerfen" #: ../../static/t/aide/siteconfig/tab_network.html:15 msgid "IMAP listener port (-1 to disable)" msgstr "IMAP4 Server Port (-1 zum abschalten)" #: ../../static/t/aide/siteconfig/tab_network.html:19 msgid "Network run frequency (in seconds)" msgstr "Knoten-Synchronisierunsfrequenz (in Sekunden)" #: ../../static/t/aide/siteconfig/tab_network.html:22 msgid "Server IP address (0.0.0.0 for 'any')" msgstr "Server-IP-Adresse (0.0.0.0 um alle zu binden)" #: ../../static/t/aide/siteconfig/tab_network.html:25 msgid "SMTP MSA port (-1 to disable)" msgstr "SMTP MSA Serverport (-1 zum abschalten)" #: ../../static/t/aide/siteconfig/tab_network.html:28 msgid "IMAP over SSL port (-1 to disable)" msgstr "IMAP-SSL Serverport (-1 zum abschalten)" #: ../../static/t/aide/siteconfig/tab_network.html:31 msgid "SMTP over SSL port (-1 to disable)" msgstr "SMTPS Serverport (-1 zum Abschalten)" #: ../../static/t/aide/siteconfig/tab_network.html:34 msgid "Instantly expunge deleted messages in IMAP" msgstr "Löschen via IMAP nicht cachen (instant expunge)?" #: ../../static/t/aide/siteconfig/tab_network.html:38 msgid "Allow unauthenticated SMTP clients to spoof this sites domains" msgstr "" "Nicht authentifizierten SMTP clients erlauben die Domain dieser Citadel- " "Installation zu verwenden" #: ../../static/t/aide/siteconfig/tab_network.html:41 msgid "Postfix TCP Dictionary Port" msgstr "Postfix TCP Wörterbuch Port" #: ../../static/t/aide/siteconfig/tab_network.html:41 msgid "-1 to disable" msgstr "-1 zum Abschalten" #: ../../static/t/aide/siteconfig/tab_network.html:44 msgid "ManageSieve Port (-1 to disable)" msgstr "ManageSieve-Server-Port (-1 zum abschalten)" #: ../../static/t/aide/siteconfig/tab_network.html:47 msgid "Perform RBL checks upon connect instead of after RCPT" msgstr "RBL Prüfung schon beim Verbindungsaufbau durchführen" #: ../../static/t/aide/siteconfig/tab_network.html:50 msgid "Keep original from headers in IMAP" msgstr "Original IMAP-Header behalten" #: ../../static/t/aide/siteconfig/tab_network.html:53 msgid "XMPP (Jabber) client to server port (-1 to disable)" msgstr "XMPP (Jabber) Client nach Server Port (-1 zum abschalten)" #: ../../static/t/aide/siteconfig/tab_network.html:56 msgid "XMPP (Jabber) server to server port (-1 to disable)" msgstr "XMPP (Jabber) Server zu Server Port (-1 zum abschalten)" #: ../../static/t/aide/siteconfig/tab_pop3.html:1 msgid "POP3" msgstr "POP3" #: ../../static/t/aide/siteconfig/tab_pop3.html:6 msgid "POP3 listener port (-1 to disable)" msgstr "POP3 Server Port (-1 zum abschalten)" #: ../../static/t/aide/siteconfig/tab_pop3.html:9 msgid "POP3 over SSL port (-1 to disable)" msgstr "POP3s Serverport (-1 zum Abschalten)" #: ../../static/t/aide/siteconfig/tab_pop3.html:12 msgid "POP3 fetch frequency in seconds" msgstr "POP3-Abhol-Fequenz (in Sekunden)" #: ../../static/t/aide/siteconfig/tab_pop3.html:15 msgid "POP3 fastest fetch frequency in seconds" msgstr "Höchste POP3-Abhol-Fequenz (in Sekunden)" #: ../../static/t/aide/siteconfig/tab_tuning.html:1 msgid "Advanced server fine-tuning controls" msgstr "Erweiterte Server Einstellungen" #: ../../static/t/aide/siteconfig/tab_tuning.html:5 msgid "Server connection idle timeout (in seconds)" msgstr "ungenutzte Verbindungen trennen nach (in Sekunden):" #: ../../static/t/aide/siteconfig/tab_tuning.html:8 msgid "Maximum concurrent sessions (0 = no limit)" msgstr "Maximale Anzahl gleichzeitiger Verbindungen (0 = kein Limit)" #: ../../static/t/aide/siteconfig/tab_tuning.html:11 msgid "Default user purge time (days)" msgstr "Automatisch inaktive Nutzer löschen nach (Tage)" #: ../../static/t/aide/siteconfig/tab_tuning.html:14 msgid "Default room purge time (days)" msgstr "Automatische Raumlöschung nach (Tage)" #: ../../static/t/aide/siteconfig/tab_tuning.html:17 msgid "Maximum message length" msgstr "Maximale Nachrichtenlänge (in Bytes)" #: ../../static/t/aide/siteconfig/tab_tuning.html:20 msgid "Minimum number of worker threads" msgstr "Minimale Anzahl Server-Threads" #: ../../static/t/aide/siteconfig/tab_tuning.html:23 msgid "Maximum number of worker threads" msgstr "Maximale Anzahl Server-Threads" #: ../../static/t/aide/siteconfig/tab_tuning.html:26 msgid "Automatically delete committed database logs" msgstr "Automatisch die Datenbanktransferlogs löschen" #: ../../static/t/aide/siteconfig/tab_pushmail.html:5 msgid "Funambol server host (blank to disable)" msgstr "" "Hostname des Funambol-Synchronisierungs-Servers (leer zum Abschalten)" #: ../../static/t/aide/siteconfig/tab_pushmail.html:8 msgid "Funambol server port " msgstr "Funambol Serverport " #: ../../static/t/aide/siteconfig/tab_pushmail.html:11 msgid "Funambol sync source" msgstr "Funambol-Synchronisierungsquelle" #: ../../static/t/aide/siteconfig/tab_pushmail.html:14 msgid "Funambol auth details (user:pass)" msgstr "Funambol-Autentifizierungs-Details (Nutzer:Passwort)" #: ../../static/t/aide/siteconfig/tab_pushmail.html:17 msgid "External pager tool (blank to disable)" msgstr "Externe Pager-Server URL (leer zum Abschalten)" #: ../../static/t/aide/siteconfig/tab_access.html:1 msgid "Access controls and site policy settings" msgstr "Zugangskontrolle und Vorgabewerte" #: ../../static/t/aide/siteconfig/tab_access.html:5 msgid "Allow aides to zap (forget) rooms" msgstr "Moderatoren erlauben, Räume zu vergessen" #: ../../static/t/aide/siteconfig/tab_access.html:9 msgid "Quarantine messages from problem users" msgstr "Meldungen Problematischer Nutzer moderieren" #: ../../static/t/aide/siteconfig/tab_access.html:12 msgid "Name of quarantine room" msgstr "Name des Quarantäne-Raums" #: ../../static/t/aide/siteconfig/tab_access.html:17 msgid "Name of room to log pages" msgstr "Name des Raums zum Loggen von Kurznachrichten" #: ../../static/t/aide/siteconfig/tab_access.html:22 msgid "Authentication mode" msgstr "Authentifizierungsmodus" #: ../../static/t/aide/siteconfig/tab_access.html:24 msgid "Self contained" msgstr "Abgeschlossen" #: ../../static/t/aide/siteconfig/tab_access.html:25 msgid "Host based" msgstr "Host-basiert" #: ../../static/t/aide/siteconfig/tab_access.html:26 msgid "LDAP (RFC2307)" msgstr "LDAP (RFC2307)" #: ../../static/t/aide/siteconfig/tab_access.html:27 msgid "LDAP (Active Directory)" msgstr "LDAP (Active Directory)" #: ../../static/t/aide/siteconfig/tab_access.html:30 msgid "Master user name (blank to disable)" msgstr "" "Priviligierter Benutzer (z.b. für Asterisk Integration; leer zum Abschalten)" #: ../../static/t/aide/siteconfig/tab_access.html:33 msgid "Master user password" msgstr "Passwort des priviligierten Benuters" #: ../../static/t/aide/siteconfig/tab_access.html:38 msgid "Initial access level for new users" msgstr "Rechtestatus neu angelegter Benutzer" #: ../../static/t/aide/siteconfig/tab_access.html:49 msgid "Access level required to create rooms" msgstr "Zugangsberechtigung um Räume zu erzeugen" #: ../../static/t/aide/siteconfig/tab_access.html:60 msgid "" "Automatically grant room-aide status to users who create private rooms" msgstr "" "Automatisch Benutzern, die private Räume erstellen, Moderator-Status geben." #: ../../static/t/aide/siteconfig/tab_access.html:63 msgid "Automatically grant room-aide status to users who create BLOG rooms" msgstr "Automatisch Erstellern von BLOG-Räumen Moderator-Status geben" #: ../../static/t/aide/siteconfig/tab_access.html:66 msgid "Restrict access to Internet mail" msgstr "Zugang zu Internetmail beschränken" #: ../../static/t/aide/siteconfig/tab_access.html:71 msgid "Disable self-service user account creation" msgstr "Erzeugen von Benutzerkonten am Anmeldeprompt verbieten" #: ../../static/t/aide/siteconfig/tab_access.html:71 msgid "Hint: do not select both!" msgstr "Hinweis: Nicht beides auswählen!" #: ../../static/t/aide/siteconfig/tab_access.html:74 msgid "Require registration for new users" msgstr "Anmeldung für neue Benutzer erforderlich" #: ../../static/t/aide/siteconfig/tab_access.html:77 msgid "Allow anonymous guest access" msgstr "Anonymen Gastzugang erlauben" #: ../../static/t/aide/siteconfig/tab_indexing.html:1 msgid "Indexing and Journaling" msgstr "Indizierung und Protokollierung" #: ../../static/t/aide/siteconfig/tab_indexing.html:2 msgid "Warning: these facilities are resource intensive." msgstr "Warnung: Diese Dienste sind Ressourcen intensiv." #: ../../static/t/aide/siteconfig/tab_indexing.html:6 msgid "Enable full text index" msgstr "Volltext-Indexdienst anschalten" #: ../../static/t/aide/siteconfig/tab_indexing.html:9 msgid "Perform journaling of email messages" msgstr "EMail-Nachrichten protokollieren" #: ../../static/t/aide/siteconfig/tab_indexing.html:13 msgid "Perform journaling of non-email messages" msgstr "Nicht-EMail Nachrichten protokollieren" #: ../../static/t/aide/siteconfig/tab_indexing.html:16 msgid "Email destination of journalized messages" msgstr "EMail-Adresse für die Protokollnachrichten" #: ../../static/t/aide/siteconfig/tab_directory.html:1 msgid "Configure the LDAP connector for Citadel" msgstr "LDAP-Verzeichnis-Anbindung des Servers konfigurieren" #: ../../static/t/aide/siteconfig/tab_directory.html:4 msgid "" "NOTE: This Citadel server has been built without LDAP support. These " "options will have no effect." msgstr "" "Anmerkung: Dieser Citadelserver wurde ohne LDAP-Support gebaut. Diese Option " "wird keine Auswirkung haben." #: ../../static/t/aide/siteconfig/tab_directory.html:9 msgid "Host name of LDAP server (blank to disable)" msgstr "Hostname des LDAP-Verzeichnisserver (leer zum Abschalten)" #: ../../static/t/aide/siteconfig/tab_directory.html:13 msgid "Port number of LDAP server (blank to disable)" msgstr "Port des LDAP-Verzeichnisservers (leer zum Abschalten)" #: ../../static/t/aide/siteconfig/tab_directory.html:16 msgid "Base DN" msgstr "Base DN im Verzeichnisserver" #: ../../static/t/aide/siteconfig/tab_directory.html:19 msgid "Bind DN" msgstr "Bind DN im Verzeichnisserver" #: ../../static/t/aide/siteconfig/tab_directory.html:22 msgid "Password for bind DN" msgstr "Passwort für die Bind DN am Verzeichnisserver" #: ../../static/t/iconbar.html:7 msgid "Language:" msgstr "Sprache:" #: ../../static/t/iconbar.html:19 msgid "Mail" msgstr "Posteingang" #: ../../static/t/iconbar.html:39 ../../static/t/iconbar/edit.html:61 #: ../../static/t/summary/page.html:30 msgid "Tasks" msgstr "Aufgaben" #: ../../static/t/iconbar.html:48 ../../static/t/iconbar/edit.html:67 msgid "Rooms" msgstr "Räume" #: ../../static/t/iconbar.html:57 msgid "Online users" msgstr "Angemeldete Benutzer" #: ../../static/t/iconbar.html:62 ../../static/t/iconbar/edit.html:79 msgid "Chat" msgstr "Chat" #: ../../static/t/iconbar.html:65 msgid "Advanced" msgstr "Erweitert" #: ../../static/t/iconbar.html:72 ../../static/t/room/edit/editroom.html:4 #: ../../static/t/room/edit.html:5 msgid "Administration" msgstr "Verwaltung" #: ../../static/t/iconbar.html:83 msgid "customize this menu" msgstr "Dieses Menü Bearbeiten" #: ../../static/t/iconbar.html:92 msgid "switch to room list" msgstr "Auf Raumliste wechseln" #: ../../static/t/iconbar.html:93 msgid "switch to menu" msgstr "Zurück zum Menü" #: ../../static/t/iconbar.html:94 msgid "My folders" msgstr "Meine Ordner" #: ../../static/t/view_message/list_attach.html:3 #: ../../static/t/view_message/inline_attach.html:4 msgid "View" msgstr "Anzeigen" #: ../../static/t/view_message/list_attach.html:4 #: ../../static/t/view_message/inline_attach.html:5 msgid "Download" msgstr "Herunterladen" #: ../../static/t/view_message/print.html:14 #: ../../static/t/view_message.html:14 msgid "to" msgstr "an" #: ../../static/t/openid_manual_create.html:2 msgid "Your OpenID" msgstr "Ihre OpenID" #: ../../static/t/openid_manual_create.html:2 msgid "was successfully verified." msgstr "wurde erfolgreich revalidiert." #: ../../static/t/openid_manual_create.html:3 msgid "However, the user name" msgstr "Wie auch immer, der Benutzername" #: ../../static/t/openid_manual_create.html:3 msgid "conflicts with an existing user." msgstr "wird bereits von jemand anderem verwendet." #: ../../static/t/openid_manual_create.html:5 msgid "Please specify the user name you would like to use." msgstr "Bitte gebe den Benutzernamen ein den du verwenden willst." #: ../../static/t/files/graphicsupload.html:2 msgid "Image upload" msgstr "Bild hochladen" #: ../../static/t/files/graphicsupload.html:6 msgid "You can upload an image directly from your computer" msgstr "Sie können ein Bild direkt von ihrem Computer hochladen." #: ../../static/t/files/graphicsupload.html:8 msgid "Please select a file to upload:" msgstr "Bitte geben Sie eine Datei zum Hochladen an:" #: ../../static/t/files/section_onefile.html:20 msgid "Slideshow" msgstr "Diashow" #: ../../static/t/roombanner.html:10 ../../static/t/roombanner.html:11 msgid "new of" msgstr "neu von" #: ../../static/t/roombanner.html:10 ../../static/t/roombanner.html:11 #: ../../static/t/msg_listselector_bottom.html:7 #: ../../static/t/msg_listselector_top.html:7 msgid "messages" msgstr "Nachrichten" #: ../../static/t/roombanner.html:28 msgid "Select page: " msgstr "Seite wählen: " #: ../../static/t/who.html:13 msgid "Users currently on " msgstr "Angemeldete Benutzer auf " #: ../../static/t/who.html:22 msgid "Click on a name to read user info. Click on" msgstr "Auf den Namen klicken um die Benutzerdaten einzusehen. Auf" #: ../../static/t/who.html:24 msgid "to send an instant message to that user." msgstr "klicken um Ihm eine Kurznachricht zu senden." #: ../../static/t/msg_listselector_bottom.html:2 #: ../../static/t/msg_listselector_top.html:2 msgid "Reading #" msgstr "Lese #" #: ../../static/t/msg_listselector_bottom.html:12 #: ../../static/t/msg_listselector_top.html:12 msgid "oldest to newest" msgstr "alte vor neu" #: ../../static/t/msg_listselector_bottom.html:20 #: ../../static/t/msg_listselector_top.html:20 msgid "newest to oldest" msgstr "neue vor alte" #: ../../static/t/newstartpage.html:4 msgid "New start page" msgstr "Neue Startseite setzen" #: ../../static/t/newstartpage.html:9 msgid "Your start page has been changed." msgstr "Ihre neue Startseite wurde geändert" #: ../../static/t/newstartpage.html:12 msgid "" "(Note: this does not change your browser's home page. It changes the page " "you begin on when you log on to" msgstr "" "(Anmerkung: dies setzt nicht die Homepage im Browser. Es ändert die gezeigte " "Seite beim anmelden an" #: ../../static/t/no_new_msgs.html:3 msgid "No new messages." msgstr "Keine neuen Nachrichten." #: ../../static/t/view_blog/comment_box.html:8 msgid "Post a comment" msgstr "Schreiben Sie einen Kommentar" #: ../../static/t/prefs/pushemail.html:2 msgid "Configure Push Email" msgstr "Push-EMail Konfigurieren" #: ../../static/t/prefs/pushemail.html:9 msgid "Push email and SMS settings" msgstr "Push Email und SMS Einstellungen" #: ../../static/t/prefs/pushemail.html:17 msgid "" "If your administrator has enabled the functionality, Citadel can notify a " "Funambol server that you haved recieved new email and automatically " "syncronize any devices you have with the Funambol client installed." msgstr "" "Wenn der Administrator freigeschaltet hat, kann Citadel dem Funambol Server " "automatisch benachrichtigen, das eine neue EMail eingetroffen ist und sie " "auf Endgeräte mit Funambol Client synchronisieren." #: ../../static/t/prefs/pushemail.html:20 msgid "" "Alternatively, if the administrator has configured it, Citadel can send a " "text message to you when new mail arrives." msgstr "" "Alternativ kann der Administrator das versenden einer SMS mit der " "Zusammenfassung der mail senden lassen." #: ../../static/t/prefs/pushemail.html:26 msgid "Notify Funambol server" msgstr "Funambol-Server benachrichtigen" #: ../../static/t/prefs/pushemail.html:31 msgid "Send a text message to..." msgstr "Eine Textnachricht senden an..." #: ../../static/t/prefs/pushemail.html:33 msgid "" "(Use international format, without any leading zeros, spaces or hypens, like " "+61415011501)" msgstr "" "(bitte das internationale Nummernformat ohne führende Nullen, Leerzeichen " "oder Trennstriche angeben, ala +4917234567890)" #: ../../static/t/prefs/pushemail.html:38 msgid "Use custom notification scheme configured by your Admin" msgstr "" "Nutze das willkürliche Benachrichtigungsschema, dass von deinem " "Administrator festgelegt wurde." #: ../../static/t/prefs/pushemail.html:43 msgid "Don‘t send any notifications" msgstr "Keine Benachrichtigungen senden." #: ../../static/t/prefs/box.html:9 msgid "Tree (folders) view" msgstr "Baum- (Ordner) Anzeige" #: ../../static/t/prefs/box.html:11 msgid "Table (rooms) view" msgstr "Tabellen- (Raum) Anzeige" #: ../../static/t/prefs/box.html:20 msgid "12 hour (am/pm)" msgstr "12 Stunden (AM/PM)" #: ../../static/t/prefs/box.html:25 msgid "24 hour" msgstr "24 Stunden" #: ../../static/t/prefs/box.html:152 msgid "Sunday" msgstr "Sonntag" #: ../../static/t/prefs/box.html:153 msgid "Monday" msgstr "Montag" #: ../../static/t/prefs/box.html:174 msgid "No signature" msgstr "Keine Signatur" #: ../../static/t/prefs/box.html:238 msgid "Full-functionality" msgstr "Volle Funktion" #: ../../static/t/prefs/box.html:241 msgid "Safe mode" msgstr "Eingeschränkter modus" #: ../../static/t/prefs/box.html:242 msgid "" "Safe mode is less intensive on your web browser, but not as fully featured." msgstr "" "Der sichere Modus ist ressourcensparender für deinen Browser, stellt aber " "nicht alle Funktionen zur Verfügung." #: ../../static/t/wiki/pagelist.html:1 msgid "List of Wiki pages" msgstr "Wikiseiten" #: ../../static/t/wiki/history.html:1 msgid "History of edits for this page" msgstr "editierte Einträge für diese Seite" #: ../../static/t/who/list_static_header.html:1 msgid "Users currently on" msgstr "Angemeldete Benutzer auf" #: ../../static/t/who/section.html:4 msgid "(kill)" msgstr "(beenden)" #: ../../static/t/who/bio.html:4 ../../static/t/user/show.html:4 msgid "User profile" msgstr "Benutzerprofil" #: ../../static/t/who/summary.html:5 ../../static/t/who/box_list_static.html:6 #: ../../static/t/room/edit/tab_feed.html:13 msgid "User name" msgstr "Benutzername" #: ../../static/t/who/summary.html:6 ../../static/t/who/box_list_static.html:7 msgid "Room" msgstr "Raum" #: ../../static/t/who/box_list_static.html:8 msgid "From host" msgstr "Client DNS Name / IP" #: ../../static/t/view_message.html:19 msgid "Edit" msgstr "Bearbeiten" #: ../../static/t/view_message.html:22 ../../static/t/view_message.html:26 msgid "Reply" msgstr "Antworten" #: ../../static/t/view_message.html:23 msgid "ReplyQuoted" msgstr "Antworten&Zitieren" #: ../../static/t/view_message.html:27 msgid "ReplyAll" msgstr "AntwortenAnAlle" #: ../../static/t/view_message.html:28 msgid "Forward" msgstr "Weiterleiten" #: ../../static/t/view_message.html:31 ../../static/t/msg_listview.html:25 msgid "Move" msgstr "Verschieben" #: ../../static/t/view_message.html:34 msgid "Headers" msgstr "Kopfzeilen" #: ../../static/t/view_message.html:35 ../../static/t/msg_listview.html:28 msgid "Print" msgstr "Drucken" #: ../../static/t/preferences.html:4 ../../static/t/preferences.html:7 msgid "Preferences and settings" msgstr "Einstellungen" #: ../../static/t/user/list.html:3 msgid "User list for " msgstr "Benutzer-Liste für " #: ../../static/t/user/list.html:9 msgid "User Name" msgstr "Benutzername" #: ../../static/t/user/list.html:10 msgid "Number" msgstr "Zahl" #: ../../static/t/user/list.html:11 msgid "Access Level" msgstr "Zugangsberechtigung" #: ../../static/t/user/list.html:12 msgid "Last Login" msgstr "Letzte Anmeldung" #: ../../static/t/user/list.html:13 msgid "Total Logins" msgstr "Anmeldungen gesamt" #: ../../static/t/user/list.html:14 msgid "Total Posts" msgstr "Summe aller Beiträge" #: ../../static/t/user/show.html:9 msgid "Click here to send an instant message to" msgstr "Hier klicken zum senden einer Kurznachricht an" #: ../../static/t/start_of_new_msgs.html:4 msgid "Old messages" msgstr "Alte Nachrichten" #: ../../static/t/start_of_new_msgs.html:8 msgid "New messages" msgstr "Neue Nachrichten" #: ../../static/t/display_main_menu.html:7 msgid "Basic commands" msgstr "Einfache Kommandos" #: ../../static/t/display_main_menu.html:10 msgid "Your info" msgstr "Ihre Biographie" #: ../../static/t/display_main_menu.html:12 msgid "Advanced room commands" msgstr "Erweiterte Raum-Kommandos" #: ../../static/t/iconbar/save.html:4 ../../static/t/iconbar/edit.html:4 msgid "Customize the icon bar" msgstr "Diese Icon-Leiste bearbeiten" #: ../../static/t/iconbar/save.html:11 msgid "" "Your icon bar has been updated. Please select any of its choices to continue." msgstr "" "Deine Symbolleiste wurde aktualisiert. Bitte wähle eine von ihren " "Möglichkeiten, um fortzufahren." #: ../../static/t/iconbar/save.html:11 msgid "" "You may need to force refresh (SHIFT-F5)> in order for changes to take effect" msgstr "Ggf. aktualisieren (SHIFT-F5)>, damit die Änderungen wirksam werden" #: ../../static/t/iconbar/edit.html:11 msgid "Display icons as:" msgstr "Icons anzeigen als:" #: ../../static/t/iconbar/edit.html:12 msgid "pictures and text" msgstr "Bilder und Text" #: ../../static/t/iconbar/edit.html:13 msgid "pictures only" msgstr "Nur Bilder" #: ../../static/t/iconbar/edit.html:14 msgid "text only" msgstr "Nur Text" #: ../../static/t/iconbar/edit.html:16 msgid "" "Select the icons you would like to see displayed in the 'icon bar' menu on " "the left side of the screen." msgstr "" "Die Menüeinträge auswählen, die Sie auf der Leiste links angezeigt haben " "möchten" #: ../../static/t/iconbar/edit.html:23 msgid "Site logo" msgstr "Seitenlogo" #: ../../static/t/iconbar/edit.html:23 msgid "An icon describing this site" msgstr "Ein Logo, das Ihre Seite beschreibt" #: ../../static/t/iconbar/edit.html:29 msgid "Your summary page" msgstr "Meine Übersichtsseite" #: ../../static/t/iconbar/edit.html:36 msgid "Mail (inbox)" msgstr "Posteingang" #: ../../static/t/iconbar/edit.html:36 msgid "A shortcut to your email Inbox" msgstr "Eine Abkürzung zu Ihrem Posteingang" #: ../../static/t/iconbar/edit.html:42 msgid "Your personal address book" msgstr "Ihr eigenes Adressbuch" #: ../../static/t/iconbar/edit.html:49 msgid "Your personal notes" msgstr "Ihre Notizen" #: ../../static/t/iconbar/edit.html:55 msgid "A shortcut to your personal calendar" msgstr "Eine Abkürzung zu Ihrem Kalender" #: ../../static/t/iconbar/edit.html:61 msgid "A shortcut to your personal task list" msgstr "Eine Abkürzung zu Ihrer Aufgabenliste" #: ../../static/t/iconbar/edit.html:67 msgid "" "Clicking this icon displays a list of all accessible rooms (or folders) " "available." msgstr "Liste aller verfügbaren Räume (oder Verzeichnisse) auflisten." #: ../../static/t/iconbar/edit.html:73 msgid "Who is online?" msgstr "Wer ist da?" #: ../../static/t/iconbar/edit.html:73 msgid "Clicking this icon displays a list of all users currently logged in." msgstr "Wer ist gerade angemeldet?" #: ../../static/t/iconbar/edit.html:79 msgid "" "Clicking this icon enters real-time chat mode with other users in the same " "room." msgstr "Interaktiver Chat mit den anderen Benutzern in diesem Raum" #: ../../static/t/iconbar/edit.html:85 msgid "Advanced options" msgstr "Erweiterte Optionen" #: ../../static/t/iconbar/edit.html:85 msgid "Access to the complete menu of Citadel functions." msgstr "Zugriff zu allen Citadel-Menü-Funktionen" #: ../../static/t/iconbar/edit.html:91 msgid "Citadel logo" msgstr "Citadel Logo" #: ../../static/t/iconbar/edit.html:91 msgid "Displays the 'Powered by Citadel' icon" msgstr "Das 'Powered by Citadel'-Logo anzeigen" #: ../../static/t/room/edit/tab_expire.html:8 msgid "Message expire policy for this room" msgstr "Nachrichten-Verfallsvorgabe für diesen Raum" #: ../../static/t/room/edit/tab_expire.html:14 msgid "Use the default policy for this floor" msgstr "Die Vorgaberichtlinie dieser Etage verwenden" #: ../../static/t/room/edit/tab_expire.html:36 msgid "Message expire policy for this floor" msgstr "Nachrichten-Verfallsvorgabe für diese Etage" #: ../../static/t/room/edit/tab_expire.html:42 msgid "Use the system default" msgstr "Die Systemvorgabe benutzen" #: ../../static/t/room/edit/editroom.html:5 ../../static/t/room/edit.html:6 msgid "Configuration" msgstr "Konfiguration" #: ../../static/t/room/edit/editroom.html:6 ../../static/t/room/edit.html:7 msgid "Message expire policy" msgstr "Nachrichtenverfalls-Vorgabe" #: ../../static/t/room/edit/editroom.html:7 ../../static/t/room/edit.html:8 msgid "Access controls" msgstr "Zugangskontrolle" #: ../../static/t/room/edit/editroom.html:8 ../../static/t/room/edit.html:9 msgid "Sharing" msgstr "Teilen" #: ../../static/t/room/edit/editroom.html:9 ../../static/t/room/edit.html:10 msgid "Mailing list service" msgstr "Mailinglistendienst" #: ../../static/t/room/edit/editroom.html:10 ../../static/t/room/edit.html:11 msgid "Remote retrieval" msgstr "Sammeldienste" #: ../../static/t/room/edit/tab_config.html:6 msgid "name of room: " msgstr "Raumname: " #: ../../static/t/room/edit/tab_config.html:10 #: ../../static/t/room/create.html:20 msgid "Resides on floor: " msgstr "Befindet sich auf Etage: " #: ../../static/t/room/edit/tab_config.html:16 #: ../../static/t/room/create.html:68 msgid "Type of room:" msgstr "Raum-Typ:" #: ../../static/t/room/edit/tab_config.html:22 #: ../../static/t/room/create.html:73 msgid "Public (automatically appears to everyone)" msgstr "Öffentlich (Raum zugänglich für jeden)" #: ../../static/t/room/edit/tab_config.html:28 #: ../../static/t/room/create.html:77 msgid "Private - hidden (accessible to anyone who knows its name)" msgstr "Privat - versteckt (zugänglich für jeden der den Namen weiß)" #: ../../static/t/room/edit/tab_config.html:35 #: ../../static/t/room/create.html:81 msgid "Private - require password: " msgstr "Privat - erfordert Passwort: " #: ../../static/t/room/edit/tab_config.html:44 #: ../../static/t/room/create.html:86 msgid "Private - invitation only" msgstr "Privat - nur mit Einladung" #: ../../static/t/room/edit/tab_config.html:51 #: ../../static/t/room/create.html:90 msgid "Personal (mailbox for you only)" msgstr "Persönlich (Briefkasten, nur für Sie)" #: ../../static/t/room/edit/tab_config.html:55 msgid "If private, cause current users to forget room" msgstr "Wenn Privat, sollen aktuelle Benutzer den Raum vergessen?" #: ../../static/t/room/edit/tab_config.html:61 msgid "Preferred users only" msgstr "nur privilegierte Benutzer" #: ../../static/t/room/edit/tab_config.html:66 msgid "Read-only room" msgstr "Schreibgeschützter Raum" #: ../../static/t/room/edit/tab_config.html:71 msgid "All users allowed to post may also delete messages" msgstr "Benutzer, die Schreibrechte haben, dürfen auch löschen" #: ../../static/t/room/edit/tab_config.html:76 msgid "File directory room" msgstr "Dateiverzeichnis-Raum" #: ../../static/t/room/edit/tab_config.html:80 msgid "Directory name: " msgstr "Verzeichnisname: " #: ../../static/t/room/edit/tab_config.html:86 msgid "Uploading allowed" msgstr "Hochladen erlaubt" #: ../../static/t/room/edit/tab_config.html:91 msgid "Downloading allowed" msgstr "Herunterladen erlaubt" #: ../../static/t/room/edit/tab_config.html:96 msgid "Visible directory" msgstr "Sichtbares Verzeichnis" #: ../../static/t/room/edit/tab_config.html:103 msgid "Network shared room" msgstr "Netzwerk öffentlicher Raum" #: ../../static/t/room/edit/tab_config.html:108 msgid "Permanent (does not auto-purge)" msgstr "Permanent (kein automatisches Löschen)" #: ../../static/t/room/edit/tab_config.html:113 msgid "Subject Required (Force users to specify a message subject)" msgstr "Betreff verlangen (Benutzer zwingen einen Betreff anzugeben)" #: ../../static/t/room/edit/tab_config.html:116 msgid "Anonymous messages" msgstr "Anonyme Nachrichten" #: ../../static/t/room/edit/tab_config.html:122 msgid "No anonymous messages" msgstr "Keine anonyme Nachrichten" #: ../../static/t/room/edit/tab_config.html:127 msgid "All messages are anonymous" msgstr "Alle Nachrichten sind Anonym" #: ../../static/t/room/edit/tab_config.html:132 msgid "Prompt user when entering messages" msgstr "Benutzer fragen, wenn er die Nachricht eingibt" #: ../../static/t/room/edit/tab_config.html:136 msgid "Room aide: " msgstr "Raumverantwortlicher: " #: ../../static/t/room/edit/tab_listserv.html:5 msgid "" "The contents of this room are being mailed as individual messages " "to the following list recipients:

    " msgstr "" "
    : Der Inhalt dieser Raums werden als einzelne Nachrichten " ", an die folgende Liste von Empfängern verschickt" #: ../../static/t/room/edit/tab_listserv.html:19 msgid "" "The contents of this room are being mailed in digest form to the " "following list recipients:

    " msgstr "" "Die Inhalte dieses Raums werden als einzelne Nachrichten zu " "folgenden Listenempfängern versendet:

    " #: ../../static/t/room/edit/tab_listserv.html:39 msgid "Add recipients from Contacts or other address books" msgstr "Empfänger aus den Kontakten oder anderen Addressbüchern hinzufügen" #: ../../static/t/room/edit/tab_listserv.html:48 msgid "Allow non-subscribers to mail to this room." msgstr "Nicht-Abbonenten dürfen in diesen Raum senden" #: ../../static/t/room/edit/tab_listserv.html:54 msgid "Room post publication needs Admin permission." msgstr "Beitrag einreichen erforderd Moderator Privilegien." #: ../../static/t/room/edit/tab_listserv.html:59 msgid "Allow self-service subscribe/unsubscribe requests." msgstr "Benutzergesteuertes Abonnieren erlauben." #: ../../static/t/room/edit/tab_listserv.html:65 msgid "The URL for subscribe/unsubscribe is: " msgstr "Die URL zum Ab-/Bestellen lautet: " #: ../../static/t/room/edit/digestrecp_removal.html:1 #: ../../static/t/room/edit/pop3client_removal.html:9 #: ../../static/t/room/edit/listrecp_removal.html:1 #: ../../static/t/room/edit/rssclient_removal.html:5 msgid "(remove)" msgstr "(Löschen)" #: ../../static/t/room/edit/tab_admin.html:5 msgid "Delete this room" msgstr "Raum löschen" #: ../../static/t/room/edit/tab_admin.html:10 msgid "Set or change the icon for this rooms banner" msgstr "Setze oder ändere das Bild für das Banner des Raumes" #: ../../static/t/room/edit/tab_admin.html:14 msgid "Edit this rooms Info file" msgstr "Bearbeite die Informationsdatei dieses Raumes" #: ../../static/t/room/edit/tab_share.html:5 msgid "Shared with" msgstr "Geteilt mit" #: ../../static/t/room/edit/tab_share.html:6 msgid "Not shared with" msgstr "Nicht geteilt mit" #: ../../static/t/room/edit/tab_share.html:11 #: ../../static/t/room/edit/tab_share.html:21 msgid "Remote node name" msgstr "Entfernter Knotenname" #: ../../static/t/room/edit/tab_share.html:12 #: ../../static/t/room/edit/tab_share.html:22 msgid "Remote room name" msgstr "Entfernter Raumname" #: ../../static/t/room/edit/tab_share.html:13 #: ../../static/t/room/edit/tab_share.html:23 msgid "Actions" msgstr "Aktionen" #: ../../static/t/room/edit/tab_share.html:35 msgid "" "When sharing a room, it must be shared from both ends. Adding a node to the " "'shared' list sends messages out, but in order to receive messages, the " "other nodes must be configured to send messages out to your system as well. " "
  • If the remote room name is blank, it is assumed that the room name is " "identical on the remote node.
  • If the remote room name is different, the " "remote node must also configure the name of the room here." msgstr "" "Falls ein Raum geteilt werden soll, muss er von beiden Enden her geteilt " "werden. Hinzufügen eines Knotens zu der \"Geteilt\" Liste versendet " "Nachrichten, aber in der Reihenfolge der empfangenen Nachrichten, müssen die " "anderen Knoten so konfiguriert sein, dass sie auch Nachrichten zu deinem " "System senden.
  • Wenn der entfernte Raum leer ist, wird angenommen, dass " "der Name des Raums identisch ist mit dem auf dem entfernten Knoten.
  • Falls " "der Name des entfernten Raumes anders ist, Muss der entfernte Knoten auch " "den Namen des hiesigen Raumes einstellen." #: ../../static/t/room/edit/tab_feed.html:2 msgid "" "Retrieve messages from these remote POP3 accounts and store them in this " "room:" msgstr "Mails von diesen POP3 Konten abholen und in diesem Raum ablegen:" #: ../../static/t/room/edit/tab_feed.html:12 msgid "Remote host" msgstr "POP3 Server" #: ../../static/t/room/edit/tab_feed.html:15 msgid "Keep messages on server?" msgstr "Mails auf dem Server belassen?" #: ../../static/t/room/edit/tab_feed.html:16 msgid "Interval" msgstr "Rhythmus" #: ../../static/t/room/edit/tab_feed.html:31 msgid "Fetch the following RSS feeds and store them in this room:" msgstr "Die folgenden RSS-Feeds abholen und in diesem Raum ablegen:" #: ../../static/t/room/edit/tab_feed.html:43 msgid "Feed URL" msgstr "Feed URL" #: ../../static/t/room/edit/tab_access.html:5 msgid "" "The users listed below have access to this room. To remove a user from the " "access list, select the user name from the list and click 'Kick'." msgstr "" "Folgende Benutzer haben Zugang zu diesem Raum. Um einen Benutzer von der " "Zugangsliste zu entfernen, Benutzernamen auswählen und 'Kick' anklicken." #: ../../static/t/room/edit/tab_access.html:20 msgid "" "To grant another user access to this room, enter the user name in the box " "below and click 'Invite'." msgstr "" "Um einem weiteren Benutzer den Zugang zu diesem Raum zu erlauben den " "Benutzernamen in das folgende Textfeld eintragen und 'Einladen' drücken" #: ../../static/t/room/edit/tab_access.html:26 msgid "Invite:" msgstr "Einladen:" #: ../../static/t/room/edit/tab_access.html:35 msgid "Users" msgstr "Benutzerliste" #: ../../static/t/room/zapped_list.html:7 msgid "Zapped (forgotten) rooms" msgstr "Vergessene Räume" #: ../../static/t/room/zapped_list.html:10 msgid "Click on any room to un-zap it and goto that room." msgstr "Einen Raum anclicken zum ent-Zap-en und betreten." #: ../../static/t/room/display_private.html:7 msgid "Go to a hidden room" msgstr "Zu einem versteckten Raum gehen" #: ../../static/t/room/display_private.html:8 msgid "" "If you know the name of a hidden (guess-name) or passworded room, you can " "enter that room by typing its name below. Once you gain access to a private " "room, it will appear in your regular room listings so you don‘t have to keep " "returning here." msgstr "" "Wenn Sie den Namen eines versteckten (Namen-raten) oder passwortgeschützten " "Raums wissen, Hier eingeben um ihn zu betreten. Wenn er einmal sichtbar " "ist, wird er in Ihrer regulären Raumliste erscheinen." #: ../../static/t/room/display_private.html:14 msgid "Enter room name:" msgstr "Raumname eingeben:" #: ../../static/t/room/display_private.html:21 msgid "Enter room password:" msgstr "Raumpasswort eingeben:" #: ../../static/t/room/create.html:11 #: ../../static/t/menu/advanced_roomcommands.html:6 msgid "Create a new room" msgstr "Einen neuen Raum erzeugen" #: ../../static/t/room/create.html:18 msgid "Name of room: " msgstr "Name des Raums: " #: ../../static/t/room/create.html:32 msgid "Default view for room: " msgstr "Vorgabe-Ansicht für diesen Raum: " #: ../../static/t/room/zap_this.html:3 msgid "Zap (forget/unsubscribe) the current room" msgstr "den aktuellen Raum vergessen (vergessen/abbestellen)" #: ../../static/t/room/zap_this.html:6 msgid "If you select this option," msgstr "Wenn Sie diese Option wählen," #: ../../static/t/room/zap_this.html:8 msgid "will disappear from your room list. Is this what you wish to do?" msgstr "aus der Raumliste verschwinden. Wollen Sie das wirklich tun?" #: ../../static/t/menu/your_info.html:2 msgid "Change your preferences and settings" msgstr "Ihre persönlichen Einstellungen ändern" #: ../../static/t/menu/your_info.html:3 msgid "Update your contact information" msgstr "Ihre Kontaktinformationen ändern" #: ../../static/t/menu/your_info.html:5 msgid "Enter your 'bio'" msgstr "Ihr Lebenslauf eingeben" #: ../../static/t/menu/your_info.html:6 msgid "Edit your online photo" msgstr "Ihr Photo ändern" #: ../../static/t/menu/your_info.html:8 msgid "Edit your push email settings" msgstr "Bearbeiten Sie ihre Push-Email einstellungen" #: ../../static/t/menu/your_info.html:9 msgid "Manage your OpenIDs" msgstr "openID's bearbeiten" #: ../../static/t/menu/basic_commands.html:3 msgid "List known rooms" msgstr "Bekannte Räume aufzählen" #: ../../static/t/menu/basic_commands.html:3 msgid "Where can I go from here?" msgstr "Wo komme ich von hier aus hin?" #: ../../static/t/menu/basic_commands.html:4 ../../static/t/navbar.html:168 msgid "Goto next room" msgstr "nächster Raum" #: ../../static/t/menu/basic_commands.html:4 msgid "...with unread messages" msgstr "... mit ungelesenen Meldungen" #: ../../static/t/menu/basic_commands.html:5 msgid "Skip to next room" msgstr "Weiter zum nächsten Raum" #: ../../static/t/menu/basic_commands.html:5 msgid "(come back here later)" msgstr "(später zurückkehren)" #: ../../static/t/menu/basic_commands.html:6 ../../static/t/navbar.html:5 msgid "Ungoto" msgstr "Zurück" #: ../../static/t/menu/basic_commands.html:6 msgid "oops! Back to " msgstr "Hoppla! Zurück zu " #: ../../static/t/menu/basic_commands.html:10 ../../static/t/navbar.html:13 msgid "Read new messages" msgstr "Aktualisieren" #: ../../static/t/menu/basic_commands.html:10 msgid "...in this room" msgstr "... in diesem Raum" #: ../../static/t/menu/basic_commands.html:11 ../../static/t/navbar.html:19 msgid "Read all messages" msgstr "Alle Beiträge" #: ../../static/t/menu/basic_commands.html:11 msgid "...old and new" msgstr "... alte und neue" #: ../../static/t/menu/basic_commands.html:12 ../../static/t/navbar.html:25 msgid "Enter a message" msgstr "neuer Beitrag" #: ../../static/t/menu/basic_commands.html:12 msgid "(post in this room)" msgstr "(Beitrag in diesen Raum stellen)" #: ../../static/t/menu/basic_commands.html:13 msgid "File library" msgstr "Datei-Bibliothek" #: ../../static/t/menu/basic_commands.html:13 msgid "(List files available for download)" msgstr "(Zum Herunterladen verfügbare Dateien anzeigen)" #: ../../static/t/menu/basic_commands.html:17 msgid "Summary page" msgstr "Übersichtsseite" #: ../../static/t/menu/basic_commands.html:17 msgid "Summary of my account" msgstr "Mein Benutzerkonto" #: ../../static/t/menu/basic_commands.html:18 msgid "User list" msgstr "Benutzerliste" #: ../../static/t/menu/basic_commands.html:18 msgid "(all registered users)" msgstr "(alle Benutzer)" #: ../../static/t/menu/basic_commands.html:19 msgid "Bye!" msgstr "Auf Wiedersehen!" #: ../../static/t/menu/advanced_roomcommands.html:3 msgid "Edit or delete this room" msgstr "Diesen Raum bearbeiten oder löschen" #: ../../static/t/menu/advanced_roomcommands.html:5 msgid "Go to a 'hidden' room" msgstr "In einen 'versteckten' Raum gehen" #: ../../static/t/menu/advanced_roomcommands.html:7 msgid "Zap (forget) this room" msgstr "Diesen Raum vergessen" #: ../../static/t/menu/advanced_roomcommands.html:8 msgid "List all forgotten rooms" msgstr "Alle vergessenen Räume auflisten" #: ../../static/t/navbar.html:34 msgid "View contacts" msgstr "Kontakte anzeigen" #: ../../static/t/navbar.html:40 msgid "Add new contact" msgstr "Neuen Kontakt hinzufügen" #: ../../static/t/navbar.html:49 msgid "Day view" msgstr "Tagesübersicht" #: ../../static/t/navbar.html:55 msgid "Month view" msgstr "Monatsübersicht" #: ../../static/t/navbar.html:61 msgid "Add new event" msgstr "Neuen Termin hinzufügen" #: ../../static/t/navbar.html:70 msgid "Calendar list" msgstr "Kalenderliste" #: ../../static/t/navbar.html:79 msgid "View tasks" msgstr "Aufgaben anzeigen" #: ../../static/t/navbar.html:85 msgid "Add new task" msgstr "Neue Aufgabe" #: ../../static/t/navbar.html:94 msgid "View notes" msgstr "Nachrichten anzeigen" #: ../../static/t/navbar.html:101 msgid "Add new note" msgstr "Neue Notiz" #: ../../static/t/navbar.html:110 msgid "Refresh message list" msgstr "Aktualisieren" #: ../../static/t/navbar.html:122 msgid "Write mail" msgstr "Email schreiben" #: ../../static/t/navbar.html:132 msgid "Wiki home" msgstr "Wiki-Startseite" #: ../../static/t/navbar.html:139 msgid "Edit this page" msgstr "Diese Seite bearbeiten" #: ../../static/t/navbar.html:145 msgid "History" msgstr "Ältere Versionen" #: ../../static/t/navbar.html:154 msgid "New blog post" msgstr "Neuer Blog-Beitrag" #: ../../static/t/navbar.html:162 msgid "Skip this room" msgstr "Raum weglassen" #: ../../static/t/msg_listview.html:18 msgid "Loading messages from server, please wait" msgstr "Lade Nachrichten vom Server, Bitte warten" #: ../../static/t/msg_listview.html:24 msgid "Open in new window" msgstr "in neuem Fenster öffnen" #: ../../static/t/msg_listview.html:26 msgid "Copy" msgstr "Kopieren" #: ../../static/t/view_mailq/message.html:6 msgid "Originaly posted in: " msgstr "Ursprünglich veröffentlicht in: " #: ../../static/t/view_mailq/header.html:15 msgid "Refresh this page" msgstr "Diese Seite neu laden" #: ../../static/t/view_mailq/header.html:21 msgid "Message ID" msgstr "Nachrichten-ID" #: ../../static/t/view_mailq/header.html:23 msgid "Date/time submitted" msgstr "Versandzeitpunkt" #: ../../static/t/view_mailq/header.html:25 msgid "Next attempt" msgstr "Nächster Versuch" #: ../../static/t/view_mailq/header.html:29 msgid "Recipients" msgstr "Empfänger" #: ../../static/t/view_mailq/footer_empty.html:4 msgid "The queue is empty." msgstr "Diese Warteschlange ist leer." #: ../../static/t/view_mailq/footer_empty.html:9 #: ../../static/t/view_mailq/footer.html:5 msgid "You do not have permission to view this resource." msgstr "Sie haben keine Berechtigung diese Ressource einzusehen." #: ../../static/t/get_logged_in.html:5 msgid "You must be logged in to access this page." msgstr "Sie müssen eingeloggt sein um diese Seite zuzugreifen." #: ../../static/t/get_logged_in.html:9 #: ../../static/t/edit_message/attachments_pane.html:3 msgid "Close window" msgstr "Fenster schließen" #: ../../static/t/get_logged_in.html:55 msgid "Log in using a user name and password" msgstr "Mit Benutzer und Passwort anmelden" #: ../../static/t/get_logged_in.html:60 ../../static/t/get_logged_in.html:75 msgid "Password:" msgstr "Passwort:" #: ../../static/t/get_logged_in.html:65 ../../static/t/get_logged_in.html:69 msgid "New user? Register now" msgstr "Neuer Benutzer? Registrieren Sie sich jetzt" #: ../../static/t/get_logged_in.html:70 msgid "" "enter the name and password you wish to use, and click "New User." " msgstr "" "einen Loginnamen und Passwort eingeben die verwendet werden sollen; dann " ""Neuer Benutzer" Klicken " #: ../../static/t/get_logged_in.html:83 msgid "Log in using OpenID" msgstr "Mit einem OpenID Konto Anmelden" #: ../../static/t/get_logged_in.html:85 msgid "OpenID URL:" msgstr "OpenID URL:" #: ../../static/t/get_logged_in.html:92 msgid "Log in using Google" msgstr "Über Google anmelden" #: ../../static/t/get_logged_in.html:97 msgid "Log in using Yahoo" msgstr "Über Yahoo anmelden" #: ../../static/t/get_logged_in.html:102 msgid "Log in using AOL or AIM" msgstr "Über AOL oder AIM anmelden" #: ../../static/t/get_logged_in.html:104 msgid "Enter your AOL or AIM screen name:" msgstr "Geben Sie Ihren AOL- oder AIM-Benutzernamen ein:" #: ../../static/t/get_logged_in.html:115 msgid "Please wait" msgstr "Bitte warten" #: ../../static/t/summary/page.html:4 msgid "Summary page for " msgstr "Übersichtsseite für " #: ../../static/t/summary/page.html:21 msgid "Messages" msgstr "Nachrichten" #: ../../static/t/summary/page.html:39 msgid "Today on your calendar" msgstr "Heute in ihrem Kalender" #: ../../static/t/summary/page.html:51 msgid "Who‘s online now" msgstr "Wer  ist gerade  angemeldet" #: ../../static/t/summary/page.html:60 msgid "About this server" msgstr "Über diesen Server" #: ../../static/t/summary/page.html:63 msgid "You are connected to" msgstr "Sie sind verbunden mit" #: ../../static/t/summary/page.html:64 msgid "running" msgstr "wird ausgeführt" #: ../../static/t/summary/page.html:65 msgid "with" msgstr "mit" #: ../../static/t/summary/page.html:66 msgid "server build" msgstr "Server-Build" #: ../../static/t/summary/page.html:67 msgid "and located in" msgstr "und aufgestellt in" #: ../../static/t/summary/page.html:68 msgid "Your system administrator is" msgstr "Ihr Systemadministrator ist" #: ../../static/t/edit_message/attachments_pane.html:16 msgid "Attach file" msgstr "Datei anhängen" #: ../../static/t/edit_message/attachments_pane.html:21 msgid "Upload" msgstr "Hochladen" #: ../../static/t/edit_message/section_attach_select.html:4 msgid "Remove" msgstr "Entfernen" #: ../../static/t/loggedinas.html:3 msgid "Logged in as" msgstr "Angemeldet als" #: ../../static/t/loggedinas.html:6 msgid "Not logged in." msgstr "Nicht angemeldet." #~ msgid "A script by that name already exists." #~ msgstr "Es gibt schon ein Script mit diesem Namen!" #~ msgid "" #~ "A new script has been created. Return to the script editing screen to " #~ "edit and activate it." #~ msgstr "" #~ "Ein neues Script wurde erzeugt. Es kann im Script-Bearbeitungs Formular " #~ "aktiviert werden." #~ msgid "Create" #~ msgstr "Anlegen" #~ msgid "Delete script" #~ msgstr "Script löschen" #~ msgid "Delete this script?" #~ msgstr "Dieses Script löschen?" #~ msgid "Move rule up" #~ msgstr "Regel nach oben bewegen" #~ msgid "Move rule down" #~ msgstr "Regel nach unten bewegen" #~ msgid "Delete rule" #~ msgstr "Regel löschen" #~ msgid "Reset form" #~ msgstr "Formular löschen" #~ msgid "" #~ "You are connected to %s, running %s with %s, server build %s and located " #~ "in %s. Your system administrator is %s." #~ msgstr "" #~ "Sie sind angemeldet auf %s, mit %s über %s, Server-Release %s in %s. Ihr " #~ "Systemverwalter ist %s." #~ msgid "Yes with users list" #~ msgstr "Ja, mit Benutzer Liste" #~ msgid "Room list" #~ msgstr "Raumlisten Anzeige" #~ msgid "View as room list" #~ msgstr "Auf Raumlistenansicht wechseln" #~ msgid "View as folder list" #~ msgstr "Auf Ordnerlistenansicht wechseln" #~ msgid "Room Listing" #~ msgstr "Raumlisten Anzeige" #~ msgid "Your password was not accepted." #~ msgstr "Ihr Passwort wurde nicht akzeptiert" #~ msgid "" #~ "You are subscribing %s to the %s mailing list. The " #~ "listserver has sent you an e-mail with one additional Web link for you to " #~ "click on to confirm your subscription. This extra step is for your " #~ "protection, as it prevents others from being able to subscribe you to " #~ "lists without your consent.

    Please click on the link which is " #~ "being e-mailed to you and your subscription will be confirmed.
    \n" #~ msgstr "" #~ "Sie abonnieren für %s die %s Liste. Der Listenserver hat " #~ "Ihnen eine URL zur Bestätigung der Anmeldung zugeschickt. Dieser " #~ "zusätzliche Schritt ist zu Ihrem eigenen Schutz, damit Sie niemand ohne " #~ "Ihre Zustimmung auf einer Liste anmelden kann.
    \n" #~ msgid "If you already have an account on" #~ msgstr "Wenn schon ein Benutzerkonto existiert auf" #~ msgid "enter your user name and password and click "Login."" #~ msgstr "Benutzername und Passwort angeben und "Anmelden" clicken" #~ msgid "" #~ "If you are a new user, enter the name and password you wish to " #~ "use, and click "New User." " #~ msgstr "" #~ "Wenn Sie noch keinen Benutzer haben einen Loginnamen und Passwort " #~ "eingeben die verwendet werden sollen; dann "Neuer Benutzer" " #~ "Klicken " #~ msgid "Please log off properly when finished. " #~ msgstr "Bitte die Sitzung ordentlich beenden. " #~ msgid "See the" #~ msgstr "Die" #~ msgid "recommended browser list" #~ msgstr "Liste empfohlener Browser einsehen" #~ msgid "" #~ "if you have trouble using Webcit.
  • You must have cookies " #~ "turned on. " #~ msgstr "" #~ "wenn es Probleme mit Webcit gibt..
  • Cookies müßen " #~ "aktiviert sein. " #~ msgid "" #~ "Also keep in mind that if your browser is configured to block pop-up " #~ "windows, you will not be able to receive any instant messages." #~ msgstr "" #~ "Bitte auch Popup Fenster zulassen wenn Chat-Fenster benutzt werden sollen." #~ msgid "Enter your OpenID URL and click "Login"." #~ msgstr "Geben Sie ihre OpenID URL ein, und "Anmelden" klicken" #~ msgid "Click here to learn what OpenID is and how Citadel is using it." #~ msgstr "Hier klicken um mehr über OpenID und Citadel zu lernen" #~ msgid " - powered by Citadel" #~ msgstr " - mit Citadel Technologie" #~ msgid "enter your user name and password and click "Log in."" #~ msgstr "Benutzername und Passwort angeben und "Anmelden" clicken" #~ msgid "Enter your OpenID URL and click "Log in"." #~ msgstr "Geben Sie ihre OpenID URL ein, und "Anmelden" klicken" #~ msgid "" #~ "
    • Enter your OpenID URL and click "Log in".
    • Click here to " #~ "learn what OpenID is and how Citadel is using it.
    • Please log off " #~ "properly when finished.
    • You must use a browser that supports " #~ "frames and cookies.
    • Also keep in mind that if your " #~ "browser is configured to block pop-up windows, you will not be able to " #~ "receive any instant messages.
    " #~ msgstr "" #~ "
      \n" #~ "
    • Wenn Sie schon einen Benutzer bei %s haben, Benutzername und " #~ "Passwort eingeben und 'Anmelden' drücken.
    • \n" #~ "
    • Wenn Sie einen neuen Benutzer anlegen wollen, Benutzername und " #~ "Passwort eingeben und 'Neuer Benutzer' drücken.
    • \n" #~ "
    • Bitte melden Sie sich ordentlich ab, wenn Sie fertig sind.
    • \n" #~ "
    • Ihr Browser muss Frames und Cookies unterstützen
    • \n" #~ "
    • Kurznachrichten könnten dem Popup-Blocker Ihres Browsers zum Opfer " #~ "fallen
    • \n" #~ "
    " #~ msgid "" #~ "enter your user name and password and click "Log in."
  • If " #~ "you are a new user, enter the name and password you wish to use, and " #~ "click "New User."
  • Please log off properly when finished. " #~ "
  • You must use a browser that supports frames and cookies.
  • Also keep in mind that if your browser is configured to block pop-" #~ "up windows, you will not be able to receive any instant messages." #~ msgstr "" #~ "
      \n" #~ "
    • Wenn Sie schon einen Benutzer bei %s haben, Benutzername und " #~ "Passwort eingeben und 'Anmelden' drücken.
    • \n" #~ "
    • Wenn Sie einen neuen Benutzer anlegen wollen, Benutzername und " #~ "Passwort eingeben und 'Neuer Benutzer' drücken.
    • \n" #~ "
    • Bitte melden Sie sich ordentlich ab, wenn Sie fertig sind.
    • \n" #~ "
    • Ihr Browser muss Frames und Cookies unterstützen
    • \n" #~ "
    • Kurznachrichten könnten dem Popup-Blocker Ihres Browsers zum Opfer " #~ "fallen
    • \n" #~ "
    " #~ msgid "" #~ "This message contains calendaring/scheduling information, but support " #~ "for calendars is not available on this particular system. Please ask " #~ "your system administrator to install a new version of the Citadel web " #~ "service with calendaring enabled.
    \n" #~ msgstr "" #~ "Diese Nachricht enthält Kalender/Datums Informationen, aber die " #~ "Unterstützung für Kalender ist auf diesem System nicht verfügbar. Bitte " #~ "fragen Sie ihren System-Administrator nach einer Version des Citadel-Web-" #~ "Services mit unterstützung für Kalender.
    \n" #~ msgid "" #~ "Cannot display calendar item. You are seeing this error because your " #~ "WebCit service has not been installed with calendar support. Please " #~ "contact your system administrator.
    \n" #~ msgstr "" #~ "Kann Kalender-Element nicht darstellen. Sie sehen diesen Fehler, weil " #~ "ihr Citadel System ohne Kalenderunterstützung installiert wurde. Bitte " #~ "wenden Sie sich an Ihren Systemadministrator.
    \n" #~ msgid "" #~ "Cannot display to-do item. You are seeing this error because your " #~ "WebCit service has not been installed with calendar support. Please " #~ "contact your system administrator.
    \n" #~ msgstr "" #~ "Kann To-Do Datum nicht darstellen. Sie sehen diesen Fehler, weil ihr " #~ "Citadel System ohne Kalenderunterstützung installiert wurde. Bitte wenden " #~ "Sie sich an Ihren Systemadministrator.
    \n" webcit-8.24-dfsg.orig/po/webcit/ar.po0000644000175000017500000035745512271477123017260 0ustar michaelmichael# Arabic translation for citadel # Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 # This file is distributed under the same license as the citadel package. # FIRST AUTHOR , 2013. # msgid "" msgstr "" "Project-Id-Version: citadel\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-03-20 01:03-0400\n" "PO-Revision-Date: 2013-03-05 06:12+0000\n" "Last-Translator: husamuldeen \n" "Language-Team: Arabic \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2013-03-06 05:06+0000\n" "X-Generator: Launchpad (build 16514)\n" #: ../../roomops.c:708 ../../roomops.c:1005 ../../sieve.c:364 msgid "Cancelled. Changes were not saved." msgstr "الغاء لن يتم حفظ البيانات" #: ../../roomops.c:838 ../../sieve.c:417 msgid "Your changes have been saved." msgstr "التغيرات التي قمت بها تم حفظها" #: ../../roomops.c:881 #, c-format msgid "User '%s' kicked out of room '%s'." msgstr "المستخدم '%s' تم طرده من الغرفة '%s'." #: ../../roomops.c:898 #, c-format msgid "User '%s' invited to room '%s'." msgstr "المستخدم '%s' تم دعوته '%s'." #: ../../roomops.c:927 msgid "Cancelled. No new room was created." msgstr "الغام لم يتم انشاء غرفة جديدة" #: ../../roomops.c:1187 msgid "Floor has been deleted." msgstr "تم مسح الطابق" #: ../../roomops.c:1211 msgid "New floor has been created." msgstr "تم انشاء طابق جديد" #: ../../roomops.c:1290 msgid "Room list view" msgstr "عرض قائمة الغرفة" #: ../../roomops.c:1293 msgid "Show empty floors" msgstr "اضهر الطوابق الفارغة" #: ../../roomviews.c:50 msgid "Bulletin Board" msgstr "نشرة الأخبار لمجلس الإدارة" #: ../../roomviews.c:51 msgid "Mail Folder" msgstr "مجلد البريد" #: ../../roomviews.c:52 msgid "Address Book" msgstr "دفتر العناوين" #: ../../roomviews.c:53 ../../static/t/iconbar.html:24 #: ../../static/t/iconbar/edit.html:55 msgid "Calendar" msgstr "التقويم" #: ../../roomviews.c:54 msgid "Task List" msgstr "قائمة المهام" #: ../../roomviews.c:55 msgid "Notes List" msgstr "قائمة الملاحظات" #: ../../roomviews.c:56 msgid "Wiki" msgstr "المعرفة" #: ../../roomviews.c:57 msgid "Calendar List" msgstr "قائمة التقويم" #: ../../roomviews.c:58 msgid "Journal" msgstr "السجل اليومي" #: ../../roomviews.c:59 msgid "Drafts" msgstr "المسودّات" #: ../../roomviews.c:60 msgid "Blog" msgstr "المدونة" #: ../../tasks.c:93 msgid "Completed?" msgstr "اكتمل" #: ../../tasks.c:95 msgid "Name of task" msgstr "اسم المهمة" #: ../../tasks.c:97 msgid "Date due" msgstr "الى تاريخ" #: ../../tasks.c:99 msgid "Category" msgstr "القسم" #: ../../tasks.c:101 msgid "Show All" msgstr "إظهار الكل" #: ../../tasks.c:223 msgid "Edit task" msgstr "تحرير مهمة" #: ../../tasks.c:242 ../../calendar.c:98 ../../calendar_view.c:298 #: ../../calendar_view.c:959 ../../calendar_view.c:1003 #: ../../calendar_view.c:1084 msgid "Summary:" msgstr "الملخص:" #: ../../tasks.c:253 msgid "Start date:" msgstr "تاريخ البداية:" #: ../../tasks.c:261 ../../tasks.c:291 msgid "No date" msgstr "بلا تاريخ" #: ../../tasks.c:265 ../../tasks.c:294 msgid "or" msgstr "أو" #: ../../tasks.c:279 ../../tasks.c:308 msgid "Time associated" msgstr "الوقت الازم" #: ../../tasks.c:283 msgid "Due date:" msgstr "تاريخ الاستحقاق:" #: ../../tasks.c:312 msgid "Completed:" msgstr "اكتمال" #: ../../tasks.c:323 msgid "Category:" msgstr "الصنف" #: ../../tasks.c:333 ../../calendar.c:159 ../../static/t/files.html:12 msgid "Description:" msgstr "الوصف:" #: ../../tasks.c:351 ../../event.c:764 msgid "Save" msgstr "حفظ" #: ../../tasks.c:352 ../../event.c:765 ../../static/t/aide/inet/section.html:5 #: ../../static/t/view_blog/comment.html:12 #: ../../static/t/view_blog/post.html:15 ../../static/t/view_message.html:32 #: ../../static/t/navbar.html:116 ../../static/t/msg_listview.html:27 msgid "Delete" msgstr "حذف" #: ../../tasks.c:353 ../../vcard_edit.c:1216 ../../paging.c:66 #: ../../event.c:767 ../../sysmsgs.c:69 ../../who.c:200 ../../auth.c:812 #: ../../static/t/edit_message.html:135 ../../static/t/confirmlogoff.html:4 msgid "Cancel" msgstr "إلغاء" #: ../../tasks.c:423 ../../calendar_view.c:1379 msgid "Untitled Task" msgstr "مهمة غير معنونة" #: ../../fmt_date.c:310 msgid "Time format" msgstr "نسق الوقت" #: ../../listsub.c:54 ../../static/t/listsub/display.html:5 msgid "List subscription" msgstr "قائمة المشتركين" #: ../../listsub.c:67 ../../static/t/listsub/display.html:9 msgid "List subscribe/unsubscribe" msgstr "قائمة المشتركين والغير المشتركين" #: ../../listsub.c:87 ../../static/t/listsub/display.html:15 #: ../../static/t/listsub/display.html:34 msgid "Confirmation request sent" msgstr "تم ارسال طلب التاكيد" #: ../../listsub.c:89 #, c-format msgid "" "You are subscribing %s to the %s mailing list. The " "listserver has sent you an e-mail with one additional Web link for you to " "click on to confirm your subscription. This extra step is for your " "protection, as it prevents others from being able to subscribe you to lists " "without your consent.

    Please click on the link which is being e-" "mailed to you and your subscription will be confirmed.
    \n" msgstr "" "You are subscribing %s to the %s انتة متشرك to the في " "القائمة البريدية تم ارسال بريد لكم من قائمة السيرفير لتاكيد اشتراكك يرجى " "الضغط على الرابط المرسل لتاكيد اشتراكك.

    Please click on the link " "which is being e-mailed to you and your subscription will be confirmed.
    \n" #: ../../listsub.c:102 ../../static/t/listsub/display.html:24 msgid "Go back..." msgstr "الرجوع" #: ../../listsub.c:253 ../../listsub.c:291 ../../listsub.c:327 #: ../../listsub.c:334 msgid "You need to specify the mailinglist to subscribe to." msgstr "يجب تحديد القائمة البريدية للاشتراك بها" #: ../../listsub.c:260 ../../listsub.c:298 msgid "You need to specify the email address you'd like to subscribe with." msgstr "يجب عليك تحديد العناوين البريدية التي تنوي الاشتراك بها" #: ../../blogview_renderer.c:58 ../../blogview_renderer.c:74 #, c-format msgid "%d comments" msgstr "%d تعليقات" #: ../../blogview_renderer.c:61 ../../blogview_renderer.c:77 msgid "permalink" msgstr "الرابط الثابت" #: ../../blogview_renderer.c:302 msgid "Newer posts" msgstr "احدث المشاركات" #: ../../blogview_renderer.c:311 msgid "Older posts" msgstr "مشاركات أقدم" #: ../../useredit.c:629 msgid "" "An error occurred while trying to create or edit this address book entry." msgstr "حدث خطأ أثناء محاولة إنشاء أو تحرير إدخال دفتر العناوين هذا." #: ../../useredit.c:717 msgid "Changes were not saved." msgstr "لم يتم حفظ التغيرات" #: ../../useredit.c:782 msgid "A new user has been created." msgstr "تم انشاء مستخدم جديد" #: ../../useredit.c:786 msgid "" "You are attempting to create a new user from within Citadel while running in " "host based authentication mode. In this mode, you must create new users on " "the host system, not within Citadel." msgstr "" "تحاول إنشاء مستخدم جديد من داخل القلعة أثناء تشغيل في وضع المضيف المصادقة " "القائمة. في هذا الوضع، يجب إنشاء مستخدمين جدد على النظام المضيف، وليس داخل " "القلعة" #: ../../bbsview_renderer.c:312 msgid "Go to page: " msgstr "اذهب لللصفحة " #: ../../bbsview_renderer.c:354 msgid "First" msgstr "أول" #: ../../bbsview_renderer.c:360 msgid "Last" msgstr "آخر" #: ../../graphics.c:56 msgid "Graphics upload has been cancelled." msgstr "تم الغاء تحميل الرسومات" #: ../../graphics.c:62 msgid "You didn't upload a file." msgstr "لم تقم برفع ملف" #: ../../graphics.c:112 msgid "your photo" msgstr "صورتك" #: ../../graphics.c:119 msgid "the icon for this room" msgstr "ايقونة هذه الغرفة" #: ../../graphics.c:127 msgid "the Greetingpicture for the login prompt" msgstr "صورة التحية لواجهة الدخول" #: ../../graphics.c:135 msgid "the Logoff banner picture" msgstr "صورة بنر الخروج" #: ../../graphics.c:146 msgid "the icon for this floor" msgstr "ايقونة هذا الطابق" #: ../../calendar_tools.c:100 msgid "Hour: " msgstr "الساعة " #: ../../calendar_tools.c:120 msgid "Minute: " msgstr "الدقائق " #: ../../calendar_tools.c:191 msgid "(status unknown)" msgstr "الحالة غير معروفة" #: ../../calendar_tools.c:207 msgid "(needs action)" msgstr "اتخاذ اللازم" #: ../../calendar_tools.c:210 msgid "(accepted)" msgstr "مقبول" #: ../../calendar_tools.c:213 msgid "(declined)" msgstr "الغاء" #: ../../calendar_tools.c:216 msgid "(tenative)" msgstr "الاطر النسبية" #: ../../calendar_tools.c:219 msgid "(delegated)" msgstr "تفويض" #: ../../calendar_tools.c:222 msgid "(completed)" msgstr "اكتمال" #: ../../calendar_tools.c:225 msgid "(in process)" msgstr "قيد التنفيذ" #: ../../calendar_tools.c:228 msgid "(none)" msgstr "(بدون)" #: ../../notes.c:343 msgid "Click on any note to edit it." msgstr "اضغط على اي من الملاحضات للتعديل عليها" #: ../../vcard_edit.c:175 ../../vcard_edit.c:178 msgid "(no name)" msgstr "(بلا اسم)" #: ../../vcard_edit.c:443 msgid " (work)" msgstr " عمل" #: ../../vcard_edit.c:445 msgid " (home)" msgstr " الرئيسي" #: ../../vcard_edit.c:447 msgid " (cell)" msgstr " الخلية" #: ../../vcard_edit.c:458 ../../vcard_edit.c:1120 msgid "Address:" msgstr "العنوان:" #: ../../vcard_edit.c:526 msgid "Telephone:" msgstr "الهاتف:" #: ../../vcard_edit.c:531 msgid "E-mail:" msgstr "البريد الإلكتروني:" #: ../../vcard_edit.c:779 msgid "This address book is empty." msgstr "دفتر العناوين فارغ" #: ../../vcard_edit.c:793 msgid "An internal error has occurred." msgstr "حدث خطا داخلي" #: ../../vcard_edit.c:944 msgid "Error" msgstr "خطأ" #: ../../vcard_edit.c:1048 msgid "Edit contact information" msgstr "تحرير معلومات المستخدم" #: ../../vcard_edit.c:1068 msgid "Prefix" msgstr "البادئة" #: ../../vcard_edit.c:1068 msgid "First Name" msgstr "الاسم الأول" #: ../../vcard_edit.c:1068 msgid "Middle Name" msgstr "الاسم الأوسط" #: ../../vcard_edit.c:1068 msgid "Last Name" msgstr "الاسم الأخير" #: ../../vcard_edit.c:1068 msgid "Suffix" msgstr "اللاحقة" #: ../../vcard_edit.c:1089 msgid "Display name:" msgstr "اسم العرض:" #: ../../vcard_edit.c:1096 msgid "Title:" msgstr ": العنوان" #: ../../vcard_edit.c:1103 msgid "Organization:" msgstr "المنظمة/الشركة:" #: ../../vcard_edit.c:1114 msgid "PO box:" msgstr "صندوق البريد:" #: ../../vcard_edit.c:1130 msgid "City:" msgstr "المدينة:" #: ../../vcard_edit.c:1136 msgid "State:" msgstr "الولاية:" #: ../../vcard_edit.c:1142 msgid "ZIP code:" msgstr "الرمز البريدي" #: ../../vcard_edit.c:1148 msgid "Country:" msgstr "البلد:" #: ../../vcard_edit.c:1158 msgid "Home telephone:" msgstr "هاتف المنزل" #: ../../vcard_edit.c:1164 msgid "Work telephone:" msgstr "هاتف العمل" #: ../../vcard_edit.c:1170 msgid "Mobile telephone:" msgstr "الهاتف المحمول" #: ../../vcard_edit.c:1176 msgid "Fax number:" msgstr "رقم الفاكس" #: ../../vcard_edit.c:1187 msgid "Primary Internet e-mail address" msgstr "العنوان البريدي الرئيسي" #: ../../vcard_edit.c:1194 msgid "Internet e-mail aliases" msgstr "عناوين البريد المستعارة" #: ../../vcard_edit.c:1215 ../../sysmsgs.c:67 msgid "Save changes" msgstr "حفظ التغييرات" #: ../../vcard_edit.c:1261 msgid "Unable to enter the room to save your message" msgstr "غير قادر على الدخول للغرفة لحفظ الرسائل" #: ../../vcard_edit.c:1265 msgid "Aborting." msgstr "الغاء العملية" #: ../../vcard_edit.c:1297 ../../vcard_edit.c:1341 ../../auth.c:367 #: ../../auth.c:397 msgid "An error has occurred." msgstr "حدث خطأ." #: ../../vcard_edit.c:1399 msgid "Could Not decode vcard photo\n" msgstr "تعذر فك التشفير الصورة\n" #: ../../preferences.c:880 msgid "Cancelled. No settings were changed." msgstr "الغاء لم يتم تغير اي من الاعدادات" #: ../../preferences.c:1092 msgid "Make this my start page" msgstr "اجعل هذه صفحة البداية" #: ../../preferences.c:1130 msgid "This isn't allowed to become the start page." msgstr "هذه غير مسموح لكي تكون صفحة البداية" #: ../../preferences.c:1132 msgid "You no longer have a start page selected." msgstr "لم تعود تملك صفحة بداية مختارة" #: ../../preferences.c:1182 msgid "Prefered startpage" msgstr "صفحة البداية المفضلة" #: ../../calendar.c:76 msgid "Meeting invitation" msgstr "دعوة لقاء" #: ../../calendar.c:79 msgid "Attendee's reply to your invitation" msgstr "المدعون اجابوا دعوتك" #: ../../calendar.c:82 msgid "Published event" msgstr "نشر الحدث" #: ../../calendar.c:85 msgid "This is an unknown type of calendar item." msgstr "هذا هو نوع غير معروف من عنصر التقويم" #: ../../calendar.c:107 ../../calendar_view.c:306 ../../calendar_view.c:964 #: ../../calendar_view.c:1008 ../../calendar_view.c:1089 msgid "Location:" msgstr "الموقع :" #: ../../calendar.c:132 ../../calendar_view.c:351 ../../calendar_view.c:970 msgid "Date:" msgstr "تاريخ:" #: ../../calendar.c:139 ../../calendar_view.c:373 ../../calendar_view.c:1013 #: ../../calendar_view.c:1099 msgid "Starting date/time:" msgstr "تاريخ ووقت البدء" #: ../../calendar.c:150 ../../calendar_view.c:376 ../../calendar_view.c:1015 #: ../../calendar_view.c:1101 msgid "Ending date/time:" msgstr "تاريخ الانتهاء" #: ../../calendar.c:168 ../../event.c:90 msgid "Recurrence" msgstr "تكرار" #: ../../calendar.c:169 ../../event.c:505 msgid "This is a recurring event" msgstr "هذا هو الحدث المتكرر" #: ../../calendar.c:178 msgid "Attendee:" msgstr "الحاضرين" #: ../../calendar.c:218 #, c-format msgid "This is an update of '%s' which is already in your calendar." msgstr "هذا تخديث لل '%s' والذي هوة موجود اصلا في تقويمك" #: ../../calendar.c:222 #, c-format msgid "" "This event would conflict with '%s' which is already in your calendar." msgstr "هذا تخديث سيتعارض لل '%s' والذي هوة موجود اصلا في تقويمك" #: ../../calendar.c:227 msgid "Update:" msgstr "تحديث:" #: ../../calendar.c:228 msgid "CONFLICT:" msgstr "تضارب" #: ../../calendar.c:251 msgid "How would you like to respond to this invitation?" msgstr "لاتوجد ترجمة لحد الان" #: ../../calendar.c:252 msgid "Accept" msgstr "موافق" #: ../../calendar.c:253 msgid "Tentative" msgstr "مؤقت" #: ../../calendar.c:254 msgid "Decline" msgstr "رفض" #: ../../calendar.c:271 msgid "Click Update to accept this reply and update your calendar." msgstr "اضغط تحديث لقبول هذه الاجابة وتحديث التقويمr." #: ../../calendar.c:272 msgid "Update" msgstr "حدّث" #: ../../calendar.c:273 msgid "Ignore" msgstr "تجاهل" #: ../../calendar.c:295 msgid "There was an error parsing this calendar item." msgstr "حصل خطا في تحليل عنصر التقويم" #: ../../calendar.c:328 msgid "" "You have accepted this meeting invitation. It has been entered into your " "calendar." msgstr "لقد قبلت دعوة الاجتماع وقد تم ادخالها في تقويمك" #: ../../calendar.c:332 msgid "" "You have tentatively accepted this meeting invitation. It has been " "'pencilled in' to your calendar." msgstr "لقد قبلت هذه الدعوة مبدئيا وتم كتابتها في التقويم الخاص بك" #: ../../calendar.c:336 msgid "" "You have declined this meeting invitation. It has not been entered " "into your calendar." msgstr "لقد رفضت دعوة الاجتماع ولم يتم اضافتها الى التقويم الخاص بك" #: ../../calendar.c:341 msgid "A reply has been sent to the meeting organizer." msgstr "تم ارسال اجابتك لمنظم الاجتماع" #. / Translators: RSVP aka Répondez s'il-vous-plaît Is the term #. / that the recipient of an ical-invitation should please #. / answer this request. #: ../../calendar.c:376 msgid "Your calendar has been updated to reflect this RSVP." msgstr "تم تحديث التقويم ليعكس اجابة الطلب" #: ../../calendar.c:378 msgid "" "You have chosen to ignore this RSVP. Your calendar has not been " "updated." msgstr "لقد اختاريت عدم ارسال اجابة للطلب و لم يتم تحديث التقويم" #: ../../calendar.c:932 msgid "Calendar day view begins at:" msgstr "يبدء يوم عرض التقويم في" #: ../../calendar.c:933 msgid "Calendar day view ends at:" msgstr "يتهي يوم عرض التقويم في" #: ../../calendar.c:934 msgid "Week starts on:" msgstr "يبدأ الأسبوع في:" #: ../../paging.c:35 msgid "Send instant message" msgstr "ارسل رسالة فورية" #: ../../paging.c:43 msgid "Send an instant message to: " msgstr "ارسل رسالة فورية الى " #: ../../paging.c:57 msgid "Enter message text:" msgstr "ادخل رسالة نصية" #: ../../paging.c:65 ../../static/t/edit_message.html:109 msgid "Send message" msgstr "إرسال رسالة" #: ../../paging.c:84 msgid "Message was not sent." msgstr "لم يتم ارسال الرسالة" #: ../../paging.c:95 msgid "Message has been sent to " msgstr "تم ارسال الرسالة " #: ../../iconbar.c:328 msgid "Iconbar Setting" msgstr "اعدادات شريط الايقونات" #. #. * Set to 'unknown' right from the beginning. Unless we learn #. * something else, that's what we'll go with. #. #: ../../availability.c:148 msgid "availability unknown" msgstr "حالة الوجود غير معروفة" #: ../../availability.c:169 msgid "free" msgstr "خالي" #: ../../availability.c:179 msgid "BUSY" msgstr "مشغول" #: ../../serv_func.c:193 msgid "" "This server is already serving its maximum number of users and cannot accept " "any additional logins at this time. Please try again later or contact your " "system administrator." msgstr "" "هذا الخادم يقوم بخدمة اقصى عدد ممكن من المستخدمين ولا يقبل محاولات دخول " "جديدة في هذا الوقت يرجى المحاولة لاحقا او الاتصال بمدير النظام ." #: ../../serv_func.c:198 ../../serv_func.c:227 msgid "Received unexpected answer from Citadel server; bailing out." msgstr "استقبال اجابة غير متوقعة من سيرفر كاتاديل مخرج الحسابات" #: ../../serv_func.c:236 #, c-format msgid "" "You are connected to a Citadel server running Citadel %d.%02d. \n" "In order to run this version of WebCit you must also have Citadel %d.%02d or " "newer.\n" "\n" "\n" msgstr "" #: ../../event.c:70 msgid "seconds" msgstr "ثوان/ثانية" #: ../../event.c:71 msgid "minutes" msgstr "دقيقة/دقائق" #: ../../event.c:72 msgid "hours" msgstr "ساعات" #: ../../event.c:73 msgid "days" msgstr "أيام" #: ../../event.c:74 msgid "weeks" msgstr "أسابيع" #: ../../event.c:75 msgid "months" msgstr "أشهر" #: ../../event.c:76 msgid "years" msgstr "سنوات" #: ../../event.c:77 msgid "never" msgstr "أبداً" #: ../../event.c:81 msgid "first" msgstr "الأوّل" #: ../../event.c:82 msgid "second" msgstr "ثانية" #: ../../event.c:83 msgid "third" msgstr "الثّالث" #: ../../event.c:84 msgid "fourth" msgstr "الرّابع" #: ../../event.c:85 msgid "fifth" msgstr "الخامس" #: ../../event.c:88 msgid "Event" msgstr "حدث" #: ../../event.c:89 ../../event.c:437 ../../event.c:449 msgid "Attendees" msgstr "الحضور" #: ../../event.c:167 msgid "Add or edit an event" msgstr "اضف او حرر حدث" #: ../../event.c:206 ../../static/t/iconbar.html:13 #: ../../static/t/iconbar/edit.html:29 msgid "Summary" msgstr "موجز" #: ../../event.c:217 msgid "Location" msgstr "الموقع" #: ../../event.c:228 ../../calendar_view.c:760 msgid "Start" msgstr "أبدء" #: ../../event.c:271 ../../calendar_view.c:957 ../../calendar_view.c:986 msgid "All day event" msgstr "جميع أحداث اليوم" #: ../../event.c:277 ../../calendar_view.c:761 msgid "End" msgstr "نهاية" #: ../../event.c:327 ../../static/t/iconbar.html:34 #: ../../static/t/iconbar/edit.html:49 msgid "Notes" msgstr "ملاحظات" #: ../../event.c:369 msgid "Organizer" msgstr "المنظِّم" #: ../../event.c:374 msgid "(you are the organizer)" msgstr "انتة المنظم" #: ../../event.c:392 msgid "Show time as:" msgstr "اظهر الوقت ك" #: ../../event.c:415 msgid "Free" msgstr "حرّ" #: ../../event.c:423 msgid "Busy" msgstr "مشغول" #: ../../event.c:440 msgid "(One per line)" msgstr "شخص واحد في كل خط" #: ../../event.c:450 ../../static/t/edit_message.html:143 #: ../../static/t/iconbar.html:29 ../../static/t/iconbar/edit.html:42 msgid "Contacts" msgstr "جهات الاتصال" #: ../../event.c:513 msgid "Recurrence rule" msgstr "تكرار الحكم" #: ../../event.c:517 msgid "Repeats every" msgstr "تكرار كل" #. begin 'weekday_selector' div #: ../../event.c:535 msgid "on these weekdays:" msgstr "في هذه الايام من الاسبوع" #: ../../event.c:593 #, c-format msgid "on day %s%d%s of the month" msgstr "في هذه %s%d%s الايام من الشهر" #: ../../event.c:602 ../../event.c:664 msgid "on the " msgstr "في هذه " #: ../../event.c:626 msgid "of the month" msgstr "من هذا الشهر" #: ../../event.c:655 msgid "every " msgstr "كل " #: ../../event.c:656 msgid "year on this date" msgstr "السنة في هذا التاريخ" #: ../../event.c:688 ../../static/t/msg_listselector_bottom.html:7 #: ../../static/t/msg_listselector_top.html:7 msgid "of" msgstr "من" #: ../../event.c:712 msgid "Recurrence range" msgstr "تكرار مجموعة" #: ../../event.c:720 msgid "No ending date" msgstr "بلا تاريخ انتهاء" #: ../../event.c:727 msgid "Repeat this event" msgstr "كرر هذا الحدث" #: ../../event.c:730 msgid "times" msgstr "مرات" #: ../../event.c:738 msgid "Repeat this event until " msgstr "كرر هذا الحدث الى " #: ../../event.c:766 msgid "Check attendee availability" msgstr "افحص وجود الحاضرين" #: ../../event.c:858 ../../calendar_view.c:272 ../../calendar_view.c:468 #: ../../calendar_view.c:937 msgid "Untitled Event" msgstr "حدث بغير عنوان" #: ../../sysmsgs.c:52 #, c-format msgid "Edit %s" msgstr "تحرير %s" #: ../../sysmsgs.c:55 #, c-format msgid "" "Enter %s below. Text is formatted to the reader's browser. A newline is " "forced by preceding the next line by a blank." msgstr "" "ادخل %s في النص المهيئ لقارئة المتصفخ الخط الجديد يتم فرض خط جديد فارغ" #: ../../sysmsgs.c:89 #, c-format msgid "Cancelled. %s was not saved." msgstr "تم الالغاء %s لم يتم حفظ البيانات" #: ../../sysmsgs.c:109 msgid " has been saved." msgstr " تم الحفظ" #: ../../sysmsgs.c:116 ../../sysmsgs.c:117 msgid "Room info" msgstr "معلومات الغرفة" #: ../../sysmsgs.c:122 ../../sysmsgs.c:124 msgid "Your bio" msgstr "" #: ../../calendar_view.c:297 ../../calendar_view.c:958 #: ../../calendar_view.c:1002 ../../calendar_view.c:1083 #: ../../static/t/sieve/display_one.html:20 msgid "From" msgstr "من" #: ../../calendar_view.c:355 ../../calendar_view.c:974 msgid "Starting date:" msgstr "تاريخ وقت البدء" #: ../../calendar_view.c:361 ../../calendar_view.c:976 msgid "Ending date:" msgstr "تاريخ الانتهاء" #: ../../calendar_view.c:369 ../../calendar_view.c:1095 msgid "Date/time:" msgstr "الوقت / التاريخ" #: ../../calendar_view.c:386 ../../calendar_view.c:980 #: ../../calendar_view.c:1018 ../../calendar_view.c:1105 #: ../../static/t/room/edit/tab_share.html:32 msgid "Notes:" msgstr "ملاحظات" #: ../../calendar_view.c:585 ../../calendar_view.c:721 msgid "previous" msgstr "السابقة" #: ../../calendar_view.c:597 ../../calendar_view.c:733 #: ../../calendar_view.c:1308 msgid "next" msgstr "التّالي" #: ../../calendar_view.c:756 msgid "Week" msgstr "الأسبوع" #: ../../calendar_view.c:758 msgid "Hours" msgstr "الساعات" #: ../../calendar_view.c:759 ../../static/t/sieve/display_one.html:22 #: ../../static/t/msg_listview.html:9 msgid "Subject" msgstr "الموضوع" #: ../../calendar_view.c:1001 ../../calendar_view.c:1024 msgid "Ongoing event" msgstr "الحدث الجاري" #: ../../messages.c:70 msgid "ERROR:" msgstr "خطأ:" #: ../../messages.c:88 msgid "Empty message" msgstr "رسالة فارغة" #: ../../messages.c:1010 msgid "Cancelled. Message was not posted." msgstr "تم الالغاء لم يتم اضافة الرسالة" #: ../../messages.c:1013 msgid "Automatically cancelled because you have already saved this message." msgstr "تم الالغاء تلقائيا وذلك بسبب كونك حفظت مسبقا" #: ../../messages.c:1037 msgid "Saved to Drafts failed: " msgstr "فشل الحفظ للمسودات " #: ../../messages.c:1102 msgid "Refusing to post empty message.\n" msgstr "رفض اضافة رسالة فارغة\n" #: ../../messages.c:1128 msgid "Message has been saved to Drafts.\n" msgstr "تم حفظ الرسالة للمسودات\n" #: ../../messages.c:1137 msgid "Message has been sent.\n" msgstr "تم ارسال الرسالة بنجاح\n" #: ../../messages.c:1140 msgid "Message has been posted.\n" msgstr "تم نشر الرسالة بنجاح\n" #: ../../messages.c:1679 msgid "The message was not moved." msgstr "لم يتم نقل الرسالة" #: ../../messages.c:1719 #, c-format msgid "An error occurred while retrieving this part: %s/%s\n" msgstr "لقد حصل خطا عندما تم محاولة استرجاع هذا %s/%s\n" #: ../../messages.c:1796 #, c-format msgid "An error occurred while retrieving this part: %s\n" msgstr "لقد حصل خطا عندما تم محاولة استرجاع هذا %s\n" #: ../../messages.c:1956 msgid "Attach signature to email messages?" msgstr "ادخال توقيع للرسالة" #: ../../messages.c:1959 msgid "Use this signature:" msgstr "استخدم التوقيع" #: ../../messages.c:1961 msgid "Default character set for email headers:" msgstr "الصفة الافتراضية المستخدمة لعنوان الرسالة" #: ../../messages.c:1964 msgid "Preferred email address" msgstr "عناوين البريد الالكتروني المفضلة" #: ../../messages.c:1966 msgid "Preferred display name for email messages" msgstr "الاسم المفضل لرسائل البريد الالكتروني" #: ../../messages.c:1970 msgid "Preferred display name for bulletin board posts" msgstr "اسم العرض المفضل لوظائف لوحة الإعلانات" #: ../../messages.c:1973 msgid "Mailbox view mode" msgstr "طريقة عرض البريد الالكتروني" #: ../../inetconf.c:110 ../../inetconf.c:119 ../../inetconf.c:133 #: ../../inetconf.c:159 ../../netconf.c:156 ../../netconf.c:183 #: ../../netconf.c:191 ../../netconf.c:239 ../../netconf.c:247 msgid "Invalid Parameter" msgstr "ادخال عنوان خاطء" #: ../../inetconf.c:126 msgid " has been deleted." msgstr " تم المسح" #. added status message #: ../../inetconf.c:144 msgid " added." msgstr " تمت الاضافة" #: ../../who.c:154 msgid "Edit your session display" msgstr "حرر جلسة العرض" #: ../../who.c:158 msgid "" "This screen allows you to change the way your session appears in the 'Who is " "online' listing. To turn off any 'fake' name you've previously set, simply " "click the appropriate 'change' button without typing anything in the " "corresponding box. " msgstr "" "هذه الشاشة تسمح لك بتغيير طريقة جلستك يظهر في 'المتواجدون الآن' القائمة. " "لإيقاف أي 'وهمية' اسم قمت بتعيينها مسبقا، يكفي النقر على المناسبة " "\"التغيير\" زر دون كتابة أي شيء في المربع المقابل. " #: ../../who.c:171 msgid "Room name:" msgstr "اسم الغرفة" #: ../../who.c:176 msgid "Change room name" msgstr "غير اسم الغرفة" #: ../../who.c:180 msgid "Host name:" msgstr "اسم المضيف:" #: ../../who.c:185 msgid "Change host name" msgstr "تغير اسم المضيف" #: ../../who.c:190 ../../static/t/aide/edituser/detailview.html:20 #: ../../static/t/openid_manual_create.html:9 #: ../../static/t/get_logged_in.html:57 ../../static/t/get_logged_in.html:72 msgid "User name:" msgstr "اسم المستخدم:" #: ../../who.c:195 msgid "Change user name" msgstr "تغير اسم المستخدم" #: ../../siteconfig.c:46 ../../siteconfig.c:64 ../../roomlist.c:44 #: ../../roomlist.c:394 ../../static/t/room/edit/tab_expire.html:72 #: ../../static/t/room/edit/tab_config.html:149 #: ../../static/t/room/edit/tab_access.html:42 msgid "Higher access is required to access this function." msgstr "صلاحية اعلى للسماح بالوصل لهذه الوظيفة" #: ../../siteconfig.c:256 msgid "" "WARNING: Failed to parse Server Config; do you run a to new citserver?" msgstr "فشل تحلي العرض لبرمجة الخادم هل قمت بتشغيل خادم جديد ؟" #: ../../siteconfig.c:319 msgid "Your system configuration has been updated." msgstr "تم تحديث اعدادتك للخادم" #: ../../wiki.c:69 ../../wiki.c:162 ../../wiki.c:282 #, c-format msgid "There is no room called '%s'." msgstr "هذه الغرفة تدعى '%s'" #: ../../wiki.c:76 #, c-format msgid "'%s' is not a Wiki room." msgstr "'%s' هذه ليست غرفة معرفة" #: ../../wiki.c:110 #, c-format msgid "There is no page called '%s' here." msgstr "لاتوجد صفحة تدعى '%s' هنا" #: ../../wiki.c:112 msgid "" "Select the 'Edit this page' link in the room banner if you would like to " "create this page." msgstr "اختار تحرير الصفحة واربط مع بنر الغرفة اذا كنت تريد انشاء هذه الصفحة" #: ../../wiki.c:181 ../../static/t/msg_listview.html:11 msgid "Date" msgstr "تاريخ" #: ../../wiki.c:182 msgid "Author" msgstr "المؤلف" #: ../../wiki.c:209 ../../wiki.c:218 msgid "(show)" msgstr "عرض" #: ../../wiki.c:211 ../../static/t/navbar.html:145 msgid "Current version" msgstr "النسخة الحالية" #: ../../wiki.c:223 msgid "(revert)" msgstr "العودة" #: ../../wiki.c:300 msgid "Page title" msgstr "عنوان الصفحة" #: ../../webcit.c:316 msgid "Authorization Required" msgstr "التوثيق مطلوب" #: ../../webcit.c:324 #, c-format msgid "" "The resource you requested requires a valid username and password. You could " "not be logged in: %s\n" msgstr "" "المصادر التي تحاول الوصول اليها تطلب ادخال اسم المستخدم وكلمة السر لا تستطيع " "الدخول %s\n" #: ../../webcit.c:647 ../../auth.c:526 msgid "" "This program was unable to connect or stay connected to the Citadel server. " "Please report this problem to your system administrator." msgstr "" "لايستطيع البرنامج الاتصال او البقاء متصلا بخادم كاتديل رجاء ابلغ مدير النظام " "بهذه المشكلة" #: ../../webcit.c:654 ../../auth.c:532 msgid "Read More..." msgstr "اقراء المزيد" #: ../../smtpqueue.c:134 ../../static/t/aide/ignetconf/section.html:5 #: ../../static/t/view_mailq/message.html:2 msgid "(Delete)" msgstr "مسح" #: ../../smtpqueue.c:334 msgid "First Attempt pending" msgstr "المحاولة الاولى معلقة" #: ../../roomlist.c:99 msgid "My Folders" msgstr "مجلداتي" #: ../../downloads.c:289 #, c-format msgid "An error occurred while retrieving this file: %s\n" msgstr "لقد حصل خطاء عند محاولة استعادة هذا الملف :%s\n" #: ../../roomtokens.c:572 msgid "file" msgstr "ملف" #: ../../roomtokens.c:574 msgid "files" msgstr "ملفات" #: ../../summary.c:128 msgid "(None)" msgstr "(بدون)" #: ../../summary.c:184 msgid "(Nothing)" msgstr "لاشيء" #: ../../msg_renderers.c:579 ../../static/t/who/bio.html:15 msgid "edit" msgstr "حرر" #: ../../msg_renderers.c:1119 msgid "I don't know how to display " msgstr "لا اعرف كيف اعرض " #: ../../msg_renderers.c:1353 msgid "(no subject)" msgstr "(بدون موضوع)" #: ../../addressbook_popup.c:186 msgid "Add" msgstr "إضافة" #. an erased user #: ../../auth.c:30 ../../static/t/aide/edituser/detailview.html:43 #: ../../static/t/aide/siteconfig/tab_access.html:40 #: ../../static/t/aide/siteconfig/tab_access.html:51 msgid "Deleted" msgstr "تم الحذف" #. a new user #: ../../auth.c:33 ../../static/t/aide/edituser/detailview.html:44 #: ../../static/t/aide/siteconfig/tab_access.html:41 #: ../../static/t/aide/siteconfig/tab_access.html:52 #: ../../static/t/get_logged_in.html:79 msgid "New User" msgstr "مستخدم جديد" #. a trouble maker #: ../../auth.c:36 ../../static/t/aide/edituser/detailview.html:45 #: ../../static/t/aide/siteconfig/tab_access.html:42 #: ../../static/t/aide/siteconfig/tab_access.html:53 msgid "Problem User" msgstr "مستخدم مشاكس" #. user with normal privileges #: ../../auth.c:39 ../../static/t/aide/edituser/detailview.html:46 #: ../../static/t/aide/siteconfig/tab_access.html:43 #: ../../static/t/aide/siteconfig/tab_access.html:54 msgid "Local User" msgstr "مستخدم داخلي" #. a user that may access network resources #: ../../auth.c:42 ../../static/t/aide/edituser/detailview.html:47 #: ../../static/t/aide/siteconfig/tab_access.html:44 #: ../../static/t/aide/siteconfig/tab_access.html:55 msgid "Network User" msgstr "مستخدم شبكة" #. a moderator #: ../../auth.c:45 ../../static/t/aide/edituser/detailview.html:48 #: ../../static/t/aide/siteconfig/tab_access.html:45 #: ../../static/t/aide/siteconfig/tab_access.html:56 msgid "Preferred User" msgstr "مستخدم مفضل" #. chief #: ../../auth.c:48 ../../static/t/aide/edituser/detailview.html:49 #: ../../static/t/aide/siteconfig/tab_access.html:46 #: ../../static/t/aide/siteconfig/tab_access.html:57 msgid "Admin" msgstr "مدير" #: ../../auth.c:513 ../../static/t/iconbar.html:80 #: ../../static/t/confirmlogoff.html:3 #: ../../static/t/menu/basic_commands.html:19 msgid "Log off" msgstr "خروج" #: ../../auth.c:537 msgid "Log in again" msgstr "تسجيل الدخول مجددا" #: ../../auth.c:585 ../../static/t/aide/usermanagement.html:3 msgid "Validate new users" msgstr "التحقق من صحة المستخدمين" #: ../../auth.c:605 msgid "No users require validation at this time." msgstr "ولا مستخدم مطلوب التحقق من صحته في هذا الوقت" #: ../../auth.c:655 msgid "very weak" msgstr "جدا ضعيف" #: ../../auth.c:658 msgid "weak" msgstr "ضعيف" #: ../../auth.c:661 msgid "ok" msgstr "حسنا" #: ../../auth.c:665 msgid "strong" msgstr "قوي" #: ../../auth.c:683 #, c-format msgid "Current access level: %d (%s)\n" msgstr "مستوى الوصول الحالي : %d (%s)\n" #: ../../auth.c:691 msgid "Select access level for this user:" msgstr "اختار مستوى الوصول لهذا المستخدم" #: ../../auth.c:776 ../../static/t/menu/your_info.html:4 msgid "Change your password" msgstr "تغيير كلمة سرّك" #: ../../auth.c:800 msgid "Enter new password:" msgstr "ادخل كلمة السر الجديدة" #: ../../auth.c:804 msgid "Enter it again to confirm:" msgstr "ادخل المعلومات مرة اخرى للتاكيد" #: ../../auth.c:810 msgid "Change password" msgstr "تغيير كلمة المرور" #: ../../auth.c:830 msgid "Cancelled. Password was not changed." msgstr "تم الالغاء لم يتم تغير كلمة السر" #: ../../auth.c:839 msgid "They don't match. Password was not changed." msgstr "لم يتم التطابق لكلمة السر , ولم يتم تغير كلمة السر" #: ../../auth.c:845 msgid "Blank passwords are not allowed." msgstr "غير مسموح ان تكون كلمة السر فارغة" #: ../../openid.c:34 msgid "Manage Account/OpenID Associations" msgstr "ادارة الحساب / اسم المعرف" #: ../../openid.c:52 msgid "Do you really want to delete this OpenID?" msgstr "هل انتة متاكد تريد مسح هذا الاسم المعرف" #: ../../openid.c:53 msgid "(delete)" msgstr "مسح" #: ../../openid.c:61 msgid "Add an OpenID: " msgstr "اضافة معرف - مستخدم " #: ../../openid.c:64 msgid "Attach" msgstr "إرفاق ملف" #: ../../openid.c:68 #, c-format msgid "%s does not permit authentication via OpenID." msgstr "غير مسموح للتوثيق باستخدتم هذا المعرف - المستخدم %s" #: ../../html2html.c:136 #, c-format msgid "realloc() error! couldn't get %d bytes: %s" msgstr "ealloc() خطاء! لانستطيع الحصول %d بايت: %s" #: ../../static/t/viewomatic.html:4 msgid "View as:" msgstr "عرض ك" #: ../../static/t/sieve/list.html:32 ../../static/t/sieve/none.html:4 #: ../../static/t/menu/your_info.html:7 msgid "View/edit server-side mail filters" msgstr "عرض / تحرير جهة الخادم فلاتر البريد" #: ../../static/t/sieve/list.html:41 msgid "When new mail arrives: " msgstr "عند وصل البريد الجديد " #: ../../static/t/sieve/list.html:43 msgid "Leave it in my inbox without filtering" msgstr "اتركه في صندوق البريد بدون فلترة" #: ../../static/t/sieve/list.html:44 msgid "Filter it according to rules selected below" msgstr "فلتر تبعا للقوانين المختارة هنا" #: ../../static/t/sieve/list.html:45 msgid "Filter it through a manually edited script (advanced users only)" msgstr "فلتر بصور يدوية - وحرر النص - مستخدم متقدم فقط" #: ../../static/t/sieve/list.html:52 msgid "Your incoming mail will not be filtered through any scripts." msgstr "البريد القادم لن تتم فلترته عن طريق اي نص برمجي سكربت معد مسبقا" #: ../../static/t/sieve/list.html:64 msgid "Add rule" msgstr "أضف قاعدة" #: ../../static/t/sieve/list.html:71 msgid "The currently active script is: " msgstr "النصوص البرمجية المفعلة الان " #: ../../static/t/sieve/list.html:76 ../../static/t/sieve/add.html:3 msgid "Add or delete scripts" msgstr "اضف او حرر نص برمجي سكربت" #: ../../static/t/sieve/display_one.html:16 msgid "If" msgstr "اذا" #: ../../static/t/sieve/display_one.html:21 msgid "To or Cc" msgstr "الى او مع" #: ../../static/t/sieve/display_one.html:23 msgid "Reply-to" msgstr "اجابة الى" #: ../../static/t/sieve/display_one.html:24 #: ../../static/t/msg_listview.html:10 #: ../../static/t/view_mailq/header.html:27 msgid "Sender" msgstr "المرسِل" #: ../../static/t/sieve/display_one.html:25 msgid "Resent-From" msgstr "اعد ارسال الفورم" #: ../../static/t/sieve/display_one.html:26 msgid "Resent-To" msgstr "اعد الارسال الى" #: ../../static/t/sieve/display_one.html:27 msgid "Envelope From" msgstr "شكل المضروف" #: ../../static/t/sieve/display_one.html:28 msgid "Envelope To" msgstr "مضروف الى" #: ../../static/t/sieve/display_one.html:29 msgid "X-Mailer" msgstr "الريد - اكس" #: ../../static/t/sieve/display_one.html:30 msgid "X-Spam-Flag" msgstr "علامة - البريد المزعج -اكس" #: ../../static/t/sieve/display_one.html:31 msgid "X-Spam-Status" msgstr "حالة البريد المزعج - اكس" #: ../../static/t/sieve/display_one.html:32 msgid "List-ID" msgstr "قائمة المعرفين" #: ../../static/t/sieve/display_one.html:33 msgid "Message size" msgstr "حجم الرسالة" #: ../../static/t/sieve/display_one.html:34 #: ../../static/t/select_messageindex_all.html:1 msgid "All" msgstr "جميع" #: ../../static/t/sieve/display_one.html:41 msgid "contains" msgstr "يحتوي على" #: ../../static/t/sieve/display_one.html:42 msgid "does not contain" msgstr "لا يحتوي على" #: ../../static/t/sieve/display_one.html:43 msgid "is" msgstr "يكون" #: ../../static/t/sieve/display_one.html:44 msgid "is not" msgstr "لا يكون" #: ../../static/t/sieve/display_one.html:45 msgid "matches" msgstr "مطابق" #: ../../static/t/sieve/display_one.html:46 msgid "does not match" msgstr "لا يطابق" #: ../../static/t/sieve/display_one.html:52 msgid "(All messages)" msgstr "جميع الرسائل" #: ../../static/t/sieve/display_one.html:56 msgid "is larger than" msgstr "هوة اكبر من" #: ../../static/t/sieve/display_one.html:57 msgid "is smaller than" msgstr "أقل من" #: ../../static/t/sieve/display_one.html:59 msgid "bytes" msgstr "بايتات" #: ../../static/t/sieve/display_one.html:65 msgid "Keep" msgstr "حفظ" #: ../../static/t/sieve/display_one.html:66 msgid "Discard silently" msgstr "تجاهل بصمت" #: ../../static/t/sieve/display_one.html:67 msgid "Reject" msgstr "رفض" #: ../../static/t/sieve/display_one.html:68 msgid "Move message to" msgstr "انقل الرسالة الى" #: ../../static/t/sieve/display_one.html:69 msgid "Forward to" msgstr "مرّر إلى" #: ../../static/t/sieve/display_one.html:70 msgid "Vacation" msgstr "اجازة - عطلة" #: ../../static/t/sieve/display_one.html:82 msgid "Message:" msgstr "الرسالة:" #: ../../static/t/sieve/display_one.html:90 msgid "and then" msgstr "ثم اضف" #: ../../static/t/sieve/display_one.html:93 msgid "continue processing" msgstr "مستمر بالمعالجة" #: ../../static/t/sieve/display_one.html:94 msgid "stop" msgstr "توقف" #: ../../static/t/sieve/none.html:9 msgid "" "This installation of Citadel was built without support for server-side mail " "filtering.
    Please contact your system administrator if you require this " "feature.
    " msgstr "" "هذا التنصيب للخادم بدون اي دعم فني - الرجاء الاتصال بمدير النظام في حالة " "رغبتك بالحصول على هذه الميزة" #: ../../static/t/sieve/add.html:9 msgid "Add a new script" msgstr "اضافة سكربت - نص برمجي" #: ../../static/t/sieve/add.html:10 msgid "" "To create a new script, enter the desired script name in the box below and " "click 'Create'." msgstr "" "لاضافة سكربت - فطعة برمجية - ادخل اسم القطعة البرمجية في هذا الحقل واضغط " "انشاء" #: ../../static/t/sieve/add.html:14 msgid "Script name: " msgstr "اسم السكربت - القطعة البرمجية " #: ../../static/t/sieve/add.html:18 msgid "Edit scripts" msgstr "تحرير السكربت - القطعة البرمجية" #: ../../static/t/sieve/add.html:20 msgid "Return to the script editing screen" msgstr "الرجوع الى شاشة فائمة تحرير" #: ../../static/t/sieve/add.html:23 msgid "Delete scripts" msgstr "مسح السكربتات - القطع البرمجية" #: ../../static/t/sieve/add.html:24 msgid "" "To delete an existing script, select the script name from the list and click " "'Delete'." msgstr "" "لمسح سكربت - قطعة برمجية موجودة مسبقا اختار اسم السكربت من القائمة ثم اضغط " "مسح" #: ../../static/t/msg/confirm_move.html:4 msgid "Confirm move of message" msgstr "اكد نقل الرسالة" #: ../../static/t/msg/confirm_move.html:12 msgid "Move this message to:" msgstr "انقل الرسالة الى" #: ../../static/t/login.html:5 msgid "powered by" msgstr "مدعوم من" #: ../../static/t/login.html:15 ../../static/t/iconbar.html:88 #: ../../static/t/get_logged_in.html:64 ../../static/t/get_logged_in.html:88 #: ../../static/t/get_logged_in.html:93 ../../static/t/get_logged_in.html:98 #: ../../static/t/get_logged_in.html:107 msgid "Log in" msgstr "تسجيل الدخول" #: ../../static/t/trailing.html:14 msgid "" "WARNING: You have JavaScript disabled in your web browser. Many functions " "of this system will not work properly." msgstr "" "الانتباه رجاءا , الجافا سكربت معطلة في المتصفح العديد من الوظائف لهذا النضام " "لن تعمل بصورة صحيحة" #: ../../static/t/view_submessage.html:4 #: ../../static/t/view_message/replyquote.html:3 #: ../../static/t/view_message/replyquote.html:7 #: ../../static/t/view_message/print.html:8 ../../static/t/view_message.html:7 msgid "from " msgstr "مِن " #: ../../static/t/searchomatic.html:4 msgid "Search: " msgstr "بحث: " #: ../../static/t/listsub/display.html:16 msgid "You are subscribing " msgstr "انتة مشترك " #: ../../static/t/listsub/display.html:17 msgid " to the " msgstr " في " #: ../../static/t/listsub/display.html:18 msgid " mailing list." msgstr " القائمة البريدية" #: ../../static/t/listsub/display.html:19 msgid "" "The listserver has sent you an e-mail with one additional Web link for you " "to click on to confirm your subscription." msgstr "" "قائمة الخادم ارسلت لك بريد الكتروني مع معلومات اضافية رابط الكتروني يجب " "الضغط عليها لتاكيد اشتراكك" #: ../../static/t/listsub/display.html:20 msgid "" "This extra step is for your protection, as it prevents others from being " "able to subscribe you to lists without your consent." msgstr "" "هذه الخطوة الاضفاة هي من اجل حمايتك لمنع الاخرين من اضافتك في قائمة بريدية " "من دون اذنك" #: ../../static/t/listsub/display.html:22 msgid "" "Please click on the link which is being e-mailed to you and your " "subscription will be confirmed." msgstr "الرجاء الضغط على الرابط - الذي تم ارساله لك وسيتم تاكيد اشتراكك" #: ../../static/t/listsub/display.html:27 #: ../../static/t/listsub/display.html:47 msgid "ERROR" msgstr "خطأ" #: ../../static/t/listsub/display.html:35 msgid "You are unsubscribing" msgstr "انتة الان غير مشترك" #: ../../static/t/listsub/display.html:37 msgid "from the" msgstr "من" #: ../../static/t/listsub/display.html:39 msgid "mailing list." msgstr "قائمة البريد" #: ../../static/t/listsub/display.html:40 msgid "" "The listserver has sent you an e-mail with one additional Web link for you " "to click on to confirm your unsubscription." msgstr "" "قائمة الخادم ارسلت لك بريد الكتروني يحتوي على رابط يجب عليك الضغط على الرابط " "لتاكيد الغاء اشتراكك من القائمة البريدية" #: ../../static/t/listsub/display.html:41 msgid "" "This extra step is for your protection, as it prevents others from being " "able to unsubscribe you from lists without your consent." msgstr "" "الخطوة الاضافية لحمايتك من الاخرين لالغاء اشتراكك من القوائم بدون موافقتك" #: ../../static/t/listsub/display.html:43 msgid "" "Please click on the link which is being e-mailed to you and your " "unsubscription will be confirmed." msgstr "" "الرجاء الضغط على الرابط الذي تم ارساله لك و سيتم تاكيد الغاء الاشتراك من " "القائمة البريدية" #: ../../static/t/listsub/display.html:44 msgid "Back..." msgstr "الرجوع" #: ../../static/t/listsub/display.html:54 msgid "Confirmation successful!" msgstr "تم التاكيد بنجاح" #: ../../static/t/listsub/display.html:56 msgid "Confirmation failed." msgstr "فشلت عملية التاكيد" #: ../../static/t/listsub/display.html:57 msgid "This could mean one of two things:" msgstr "هذا قد يعني واحد من اثنين" #: ../../static/t/listsub/display.html:59 msgid "" "You waited too long to confirm your subscribe/unsubscribe request (the " "confirmation link is only valid for three days)" msgstr "" "لقد تاخرت في تاكيد اشتراكك او عدم اشتراكك هذا الرابط غير صالح - رابط " "التاكيد صالح لمدة ثلاثة ايام فقط يرجى اعادة الطلب" #: ../../static/t/listsub/display.html:60 msgid "" "You have already successfully confirmed your subscribe/unsubscribe " "request and are attempting to do it again." msgstr "" "لقد قمت مسبقا وبنجاح تاكيد اشتراكك او عدم اشتراكك وانتة تحاول هذا مجددا" #: ../../static/t/listsub/display.html:62 msgid "The error returned by the server was: " msgstr "الخطاء المرسل من الخادم كان " #: ../../static/t/listsub/display.html:70 msgid "Name of list:" msgstr "اسم القائمة:" #: ../../static/t/listsub/display.html:75 msgid "Your e-mail address:" msgstr "عنوان البريد الالكتروني" #: ../../static/t/listsub/display.html:79 msgid "(If subscribing) preferred format: " msgstr "اذا تم الاشتراك النسق المفضل: " #: ../../static/t/listsub/display.html:80 msgid "One message at a time" msgstr "رسالة واحد في الوقت" #: ../../static/t/listsub/display.html:81 msgid "Digest format" msgstr "خلاصة التنسيق" #: ../../static/t/listsub/display.html:89 msgid "" "When you attempt to subscribe or unsubscribe to a mailing list, you will " "receive an e-mail containing one additional web link to click on for final " "confirmation." msgstr "" "عند محاولتك للاشتراك او عدم الاشتراك في قائمة البريد سوف تستلم برمد يحتوي " "على معلومات اضافية اضغط عليها للتاكيد النهائي" #: ../../static/t/listsub/display.html:90 msgid "" "This extra step is for your protection, as it prevents others from being " "able to subscribe or unsubscribe you to lists." msgstr "" "هذه الخطوة الاضافية من اجل حمايتك لمنع الاخرين من اضافتك او الغاء اشتراكك في " "قائمة بريدية" #: ../../static/t/floors_edit_one.html:11 msgid "(delete floor)" msgstr "الطابق الافتراضي" #: ../../static/t/floors_edit_one.html:13 msgid "(edit graphic)" msgstr "تحرير الرسوم" #: ../../static/t/floors.html:4 msgid "Add/change/delete floors" msgstr "اضف او عدل او امسح الطوابق" #: ../../static/t/floors.html:10 msgid "Floor number" msgstr "رقم الطابق" #: ../../static/t/floors.html:11 msgid "Floor name" msgstr "اسم الطابق" #: ../../static/t/floors.html:12 msgid "Number of rooms" msgstr "عدد الغرف" #: ../../static/t/floors.html:13 msgid "Floor CSS" msgstr "تصميم الغرف" #: ../../static/t/files.html:4 msgid "Files available for download in" msgstr "الملفات الجاهزة للتحميل" #: ../../static/t/files.html:9 msgid "Upload a file:" msgstr "رفع ملف" #: ../../static/t/files.html:30 msgid "Filename" msgstr "اسم الملف" #: ../../static/t/files.html:31 msgid "Size" msgstr "الحجم" #: ../../static/t/files.html:32 msgid "Content" msgstr "المحتوى" #: ../../static/t/files.html:33 msgid "Description" msgstr "الوصف" #: ../../static/t/edit_message.html:9 ../../static/t/iconbar.html:50 #: ../../static/t/iconbar.html:59 msgid "Loading" msgstr "جارٍ التحميل" #: ../../static/t/edit_message.html:23 msgid "from" msgstr "من" #: ../../static/t/edit_message.html:29 ../../static/t/edit_message.html:38 msgid "Anonymous" msgstr "مجهول" #: ../../static/t/edit_message.html:47 msgid "in" msgstr "في" #: ../../static/t/edit_message.html:51 msgid "To:" msgstr "إلى:" #: ../../static/t/edit_message.html:57 #: ../../static/t/view_message/print.html:15 #: ../../static/t/view_message.html:15 msgid "CC:" msgstr "نسخة إلى:" #: ../../static/t/edit_message.html:63 msgid "BCC:" msgstr "نسخة مطابقة إلى:" #: ../../static/t/edit_message.html:71 msgid "Subject (optional):" msgstr "الموضوع اختياري" #: ../../static/t/edit_message.html:71 #: ../../static/t/view_message/replyquote.html:8 #: ../../static/t/view_message/print.html:16 #: ../../static/t/view_message.html:16 msgid "Subject:" msgstr "الموضوع:" #: ../../static/t/edit_message.html:86 msgid "--- forwarded message ---" msgstr "اعادة توجيه" #: ../../static/t/edit_message.html:110 msgid "Post message" msgstr "انشر الرسالة" #: ../../static/t/edit_message.html:118 msgid "Save to Drafts" msgstr "حفظ للمسودات" #: ../../static/t/edit_message.html:126 #: ../../static/t/edit_message/attachments_pane.html:5 msgid "Attachments:" msgstr "مرفقات:" #: ../../static/t/aide/display_serverrestart_page.html:4 msgid "Message to your Users:" msgstr "رسالة للمستخدمين" #: ../../static/t/aide/display_generic_result.html:2 msgid "Server command results" msgstr "نتائج ايعاز الخادم" #: ../../static/t/aide/display_generic_result.html:18 msgid "Enter another command" msgstr "ادخل ايعاز اخر" #: ../../static/t/aide/display_generic_result.html:19 msgid "Return to menu" msgstr "العودة للقائمة" #: ../../static/t/aide/display_sitewide_config.html:3 msgid "Site configuration" msgstr "ضبط الموقع" #: ../../static/t/aide/display_sitewide_config.html:6 #: ../../static/t/aide/edituser/select.html:9 msgid "You need to be aide to view this." msgstr "يجب ان تكون المعاون لعرض هذا" #: ../../static/t/aide/display_sitewide_config.html:11 msgid "General" msgstr "عام" #: ../../static/t/aide/display_sitewide_config.html:12 msgid "Access" msgstr "الوصول" #: ../../static/t/aide/display_sitewide_config.html:13 msgid "Network" msgstr "الشبكة" #: ../../static/t/aide/display_sitewide_config.html:14 msgid "Tuning" msgstr "ضبط" #: ../../static/t/aide/display_sitewide_config.html:15 msgid "Directory" msgstr "الدليل:" #: ../../static/t/aide/display_sitewide_config.html:16 msgid "Auto-purger" msgstr "التنظيف التلقائي" #: ../../static/t/aide/display_sitewide_config.html:17 msgid "Indexing/Journaling" msgstr "فهرسة / يوميات" #: ../../static/t/aide/display_sitewide_config.html:18 #: ../../static/t/aide/siteconfig/tab_pushmail.html:1 msgid "Push Email" msgstr "ادفع- اظغط البريد" #: ../../static/t/aide/display_sitewide_config.html:19 msgid "Pop3" msgstr "Pop3 نوع ملقم البريد الالكتروني" #: ../../static/t/aide/usermanagement.html:2 msgid "Add, change, delete user accounts" msgstr "اضف غير امسح الحسابات" #: ../../static/t/aide/display_inetconf.html:5 #: ../../static/t/aide/display_menu.html:5 msgid "System Administration Menu" msgstr "قائمة مدير النظام" #: ../../static/t/aide/display_inetconf.html:6 #: ../../static/t/aide/display_menu.html:6 msgid "Room Admin Menu" msgstr "قائمة مدير الغرفة" #: ../../static/t/aide/display_inetconf.html:13 msgid "Local host aliases" msgstr "الأسماء المستعارة للمضيف المحلي" #: ../../static/t/aide/display_inetconf.html:14 msgid "Directory domains" msgstr "دليل المجالات" #: ../../static/t/aide/display_inetconf.html:15 msgid "Smart hosts" msgstr "المضيفين الاذكياء" #: ../../static/t/aide/display_inetconf.html:16 msgid "Fallback smart hosts" msgstr "النسخ الاحتياطي للمضيفين الاذكياء" #: ../../static/t/aide/display_inetconf.html:17 msgid "Notification hosts" msgstr "اشعار المضيفين" #: ../../static/t/aide/display_inetconf.html:22 msgid "RBL hosts" msgstr "" #: ../../static/t/aide/display_inetconf.html:23 msgid "SpamAssassin hosts" msgstr "مضيفين قاتل البريد المزعج" #: ../../static/t/aide/display_inetconf.html:24 msgid "ClamAV clamd hosts" msgstr "" #: ../../static/t/aide/display_inetconf.html:25 msgid "Masqueradable domains" msgstr "المجالات القابلة للتنكر" #: ../../static/t/aide/edituser/select.html:5 msgid "Edit or delete users" msgstr "حرر او امسح مستخدم" #: ../../static/t/aide/edituser/select.html:17 msgid "Add users" msgstr "إضافة مستخدمين" #: ../../static/t/aide/edituser/select.html:20 msgid "Edit or Delete users" msgstr "اضافة او مسح يوزر" #: ../../static/t/aide/edituser/box_select.html:1 msgid "" "To edit an existing user account, select the user name from the list and " "click 'Edit'." msgstr "لتحرير حساب مستخدم موجود اختار اسم المستخدم من القائمة واضغط تحرير" #: ../../static/t/aide/edituser/detailview.html:4 msgid "Edit user account: " msgstr "حر حساب مستخدم " #: ../../static/t/aide/edituser/detailview.html:24 #: ../../static/t/room/edit/tab_feed.html:14 msgid "Password" msgstr "كلمة السر" #: ../../static/t/aide/edituser/detailview.html:28 msgid "Permission to send Internet mail" msgstr "الاذونات لارسال بريد داخلي" #: ../../static/t/aide/edituser/detailview.html:32 msgid "Number of logins" msgstr "عدد محاولات الدخول" #: ../../static/t/aide/edituser/detailview.html:36 msgid "Messages submitted" msgstr "تم تقديم الرسالة" #: ../../static/t/aide/edituser/detailview.html:40 msgid "Access level" msgstr "مستوى الوصول" #: ../../static/t/aide/edituser/detailview.html:54 msgid "User ID number" msgstr "رقم معرف المستخدم" #: ../../static/t/aide/edituser/detailview.html:58 msgid "Date and time of last login" msgstr "تاريخ ووقت اخر محاولة دخول" #: ../../static/t/aide/edituser/detailview.html:68 msgid "Auto-purge after this many days" msgstr "التطهير الاوتماتيكي بعد عدة ايام" #: ../../static/t/aide/edituser/add.html:1 msgid "" "To create a new user account, enter the desired user name in the box below " "and click 'Create'." msgstr "لانشاء مستخدم جديد ادخل اسم المستخدم المعني في الحقل واضغط انشاء" #: ../../static/t/aide/edituser/add.html:5 msgid "New user: " msgstr "مستخدم جديد " #: ../../static/t/aide/display_generic_cmd.html:4 msgid "Enter a server command" msgstr "ادخل ايعاز الخادم" #: ../../static/t/aide/display_generic_cmd.html:12 msgid "" "This screen allows you to enter Citadel server commands which are not " "supported by WebCit. If you do not know what that means, then this screen " "will not be of much use to you." msgstr "" "هذه النافذة تسمح لك ادخال الاوامر لخادم كاتيديل والتي هي غير مدعومة عن طريق " "المتصفح اذا كنت لاتعلم مايعني هذا اذن لن تكون هذه النافذة ذات اهمية لك" #: ../../static/t/aide/display_generic_cmd.html:15 msgid "Enter command:" msgstr "ادخل الاوامر" #: ../../static/t/aide/display_generic_cmd.html:17 msgid "Command input (if requesting SEND_LISTING transfer mode):" msgstr "مدخل الاوامر اذا تطب ارسل SEND_LISTING transfer mode" #: ../../static/t/aide/display_generic_cmd.html:20 msgid "Detected host header is " msgstr "الكشف عن راس المضيف " #: ../../static/t/aide/display_ignetconf.html:4 msgid "Network configuration" msgstr "إعدادات الشبكة" #: ../../static/t/aide/display_ignetconf.html:10 #: ../../static/t/aide/ignetconf/edit_node.html:5 #: ../../static/t/aide/ignetconf/add.html:5 msgid "Add a new node" msgstr "اضافة عقدة جديدة" #: ../../static/t/aide/display_ignetconf.html:14 msgid "Currently configured nodes" msgstr "الاعدادات الحالية للعقد" #: ../../static/t/aide/display_serverrestart.html:26 msgid "Restart Citadel" msgstr "اعادة تشغيل خادم كاتيديل" #: ../../static/t/aide/floorconfig.html:2 msgid "Add, change, or delete floors" msgstr "اضافة تعديل مسح طوابق" #: ../../static/t/aide/serverrestart/box.html:3 msgid "Please wait while the Citadel server is restarted... " msgstr "الرجاء الانتظار ... نقوم باعدة تشغيل خادم كاتيديل ... " #: ../../static/t/aide/serverrestart/box_page_do.html:3 msgid "" "Please wait while your users are being paged, the citadel server will be " "restarted after that... " msgstr "" "الرجاء الانتظار بينما يتم ترحيلها المستخدمين الخاص بك، سيتم إعادة تشغيل " "الملقم بعد ذلك خادم كاتيديل " #: ../../static/t/aide/inet/masqdomains.html:2 msgid "(Domains as which users are allowed to masquerade)" msgstr "المجالات التنكرية المسموحة للمستخدمين" #: ../../static/t/aide/inet/rbldns.html:2 msgid "(hosts running a Realtime Blackhole List)" msgstr "المضيفين الذي يعملون في الوقت الحالي من القائمة السوداء" #: ../../static/t/aide/inet/dirnames.html:2 msgid "(domains mapped with the Global Address Book)" msgstr "المجالات المعين مع عناوني عالمية" #: ../../static/t/aide/inet/notify.html:2 msgid "(URLS for notifications when users receive new mails; )" msgstr "الروابط المستخدمة للابلاغ عند استلام بريد الكتروني جديد" #: ../../static/t/aide/inet/notify.html:2 msgid "" "Syntax: Notificationtemplatename:http[s]://user:password@hostname/path" msgstr "" #: ../../static/t/aide/inet/smarthosts.html:2 msgid "(if present, forward all outbound mail to one of these hosts)" msgstr "اذا مسموح اعادة توجيه جميع البريد الصادر الى احد من المضيفين" #: ../../static/t/aide/inet/aliases.html:2 msgid "(domains for which this host receives mail)" msgstr "المجالات لهذا المستخدم لاستقبال البريد" #: ../../static/t/aide/inet/clamav.html:2 msgid "(hosts running the ClamAV clamd service)" msgstr "المستخدمين مفعلين خدمة ClamAV" #: ../../static/t/aide/inet/spamass.html:2 msgid "(hosts running the SpamAssassin service)" msgstr "المضيفين مفعلين خدمة قاتل البريد المزعج" #: ../../static/t/aide/inet/fallbackhosts.html:2 msgid "(send outbound mail to these hosts only when direct delivery fails)" msgstr "" "ارسل البريد الالكتروني الى هؤلاء المضيفين فقط في حالة فشل الاستلام المباشر" #: ../../static/t/aide/ignetconf/display_confirm_delete.html:5 msgid "Confirm delete" msgstr "اكد المسح" #: ../../static/t/aide/ignetconf/display_confirm_delete.html:11 msgid "Are you sure you want to delete " msgstr "هل انتة متاكد من رغبتك بالمسح " #: ../../static/t/aide/ignetconf/display_confirm_delete.html:14 #: ../../static/t/prefs/box.html:198 ../../static/t/iconbar/edit.html:19 #: ../../static/t/iconbar/edit.html:26 ../../static/t/iconbar/edit.html:32 #: ../../static/t/iconbar/edit.html:39 ../../static/t/iconbar/edit.html:45 #: ../../static/t/iconbar/edit.html:52 ../../static/t/iconbar/edit.html:58 #: ../../static/t/iconbar/edit.html:64 ../../static/t/iconbar/edit.html:70 #: ../../static/t/iconbar/edit.html:76 ../../static/t/iconbar/edit.html:82 #: ../../static/t/iconbar/edit.html:88 msgid "Yes" msgstr "نعم" #: ../../static/t/aide/ignetconf/display_confirm_delete.html:16 #: ../../static/t/prefs/box.html:200 ../../static/t/iconbar/edit.html:20 #: ../../static/t/iconbar/edit.html:27 ../../static/t/iconbar/edit.html:33 #: ../../static/t/iconbar/edit.html:40 ../../static/t/iconbar/edit.html:46 #: ../../static/t/iconbar/edit.html:53 ../../static/t/iconbar/edit.html:59 #: ../../static/t/iconbar/edit.html:65 ../../static/t/iconbar/edit.html:71 #: ../../static/t/iconbar/edit.html:77 ../../static/t/iconbar/edit.html:83 #: ../../static/t/iconbar/edit.html:89 msgid "No" msgstr "كلا" #: ../../static/t/aide/ignetconf/edit_node.html:15 #: ../../static/t/aide/ignetconf/add.html:15 #: ../../static/t/aide/siteconfig/tab_general.html:8 msgid "Node name" msgstr "اسم العقدة" #: ../../static/t/aide/ignetconf/edit_node.html:17 #: ../../static/t/aide/ignetconf/add.html:17 msgid "Shared secret" msgstr "كلمة السر المشتركة بين طرفين" #: ../../static/t/aide/ignetconf/edit_node.html:19 #: ../../static/t/aide/ignetconf/add.html:19 msgid "Host or IP address" msgstr "عنوان الانترنت Ip للمضيف" #: ../../static/t/aide/ignetconf/edit_node.html:21 #: ../../static/t/aide/ignetconf/add.html:21 msgid "Port number" msgstr "رقم المنفذ" #: ../../static/t/aide/ignetconf/section.html:4 msgid "(Edit)" msgstr "تحرير" #: ../../static/t/aide/display_menu.html:12 msgid "Global Configuration" msgstr "لإعدادات العالمية" #: ../../static/t/aide/display_menu.html:14 msgid "User account management" msgstr "ادارة حساب المستخدم" #: ../../static/t/aide/display_menu.html:16 msgid "Shutdown Citadel" msgstr "اطفاء خادم كاتي ديل" #: ../../static/t/aide/display_menu.html:18 msgid "Rooms and Floors" msgstr "الغرف والطوابق" #: ../../static/t/aide/global_config.html:2 msgid "Edit site-wide configuration" msgstr "تحرير اعدادات في كافة أنحاء الموقع" #: ../../static/t/aide/global_config.html:3 msgid "Domain names and Internet mail configuration" msgstr "اعدادات المجالات و البريد الالكتروني" #: ../../static/t/aide/global_config.html:4 msgid "Configure replication with other Citadel servers" msgstr "اعدادات النسخ التمائلي بين خادمين كاتيديل" #: ../../static/t/aide/global_config.html:5 #: ../../static/t/view_mailq/header.html:3 msgid "View the outbound SMTP queue" msgstr "اعرض حجز الخرج لبروتكول SMTP" #: ../../static/t/aide/restart.html:2 msgid "Restart Now" msgstr "إعادة التشغيل الآن" #: ../../static/t/aide/restart.html:3 msgid "Restart after paging users" msgstr "اعادة التشغيل بعد ترحيل المستخدمين" #: ../../static/t/aide/restart.html:4 msgid "Restart when all users are idle" msgstr "اعادة التشغيل عندما يكون جميع المستخدمين متوقفين عن العمل" #: ../../static/t/aide/siteconfig/tab_general.html:1 msgid "General site configuration items" msgstr "الاعدادت العامة للموقع" #: ../../static/t/aide/siteconfig/tab_general.html:5 msgid "Change Login Logo" msgstr "تغير شعار الدخول" #: ../../static/t/aide/siteconfig/tab_general.html:6 msgid "Change Logout Logo" msgstr "تغير شعار الخروج" #: ../../static/t/aide/siteconfig/tab_general.html:11 msgid "Fully qualified domain name" msgstr "اسم النطاق المؤهل الكامل" #: ../../static/t/aide/siteconfig/tab_general.html:14 msgid "Human-readable node name" msgstr "اسم العقد القابل للقراء" #: ../../static/t/aide/siteconfig/tab_general.html:17 msgid "Telephone number" msgstr "رقم الهاتف" #: ../../static/t/aide/siteconfig/tab_general.html:20 msgid "Paginator prompt (for text mode clients)" msgstr "الواجه المخصصة لاستخدام النصوص للمستخدمين" #: ../../static/t/aide/siteconfig/tab_general.html:23 msgid "Geographic location of this system" msgstr "موقع الرسومات لهذا النظام" #: ../../static/t/aide/siteconfig/tab_general.html:26 msgid "Name of system administrator" msgstr "اسم مدير النظام" #: ../../static/t/aide/siteconfig/tab_general.html:29 msgid "Default timezone for unzoned calendar items" msgstr "" "وقت المنطقة الافتراضي لعناصر البريد الالكتروني الغير موضوعة ضمن منطقة معينة" #: ../../static/t/aide/siteconfig/tab_autopurger.html:1 msgid "Configure automatic expiry of old messages" msgstr "تهيئة وقت انتهاء اوتماتيكي للرسئل القديمة" #: ../../static/t/aide/siteconfig/tab_autopurger.html:2 msgid "These settings may be overridden on a per-floor or per-room basis." msgstr "قد يتم تجاوز هذه الإعدادات على أساس لكل الطابق أو في الغرفة" #: ../../static/t/aide/siteconfig/tab_autopurger.html:6 msgid "Hour to run database auto-purge" msgstr "الساعات لتفعيل النضام التنضيف الاوتماتيكي لقاعدة البيانات" #: ../../static/t/aide/siteconfig/tab_autopurger.html:66 msgid "Default message expire policy for public rooms" msgstr "رسالة الانتهاء الافتراضية للغرف العامة" #: ../../static/t/aide/siteconfig/tab_autopurger.html:68 #: ../../static/t/aide/siteconfig/tab_autopurger.html:86 #: ../../static/t/room/edit/tab_expire.html:17 #: ../../static/t/room/edit/tab_expire.html:45 msgid "Never automatically expire messages" msgstr "ابدا لا تسمح بانتهاء الرسائل" #: ../../static/t/aide/siteconfig/tab_autopurger.html:71 #: ../../static/t/aide/siteconfig/tab_autopurger.html:89 #: ../../static/t/room/edit/tab_expire.html:20 #: ../../static/t/room/edit/tab_expire.html:48 msgid "Expire by message count" msgstr "انهاء الرسائل عن طريق العداد" #: ../../static/t/aide/siteconfig/tab_autopurger.html:73 #: ../../static/t/aide/siteconfig/tab_autopurger.html:92 #: ../../static/t/room/edit/tab_expire.html:23 #: ../../static/t/room/edit/tab_expire.html:51 msgid "Expire by message age" msgstr "انهاء الرسائل عن طريق عمر الرسالة" #: ../../static/t/aide/siteconfig/tab_autopurger.html:75 #: ../../static/t/aide/siteconfig/tab_autopurger.html:94 #: ../../static/t/room/edit/tab_expire.html:25 #: ../../static/t/room/edit/tab_expire.html:53 msgid "Number of messages or days: " msgstr "عدد الرسائل أو أيام " #: ../../static/t/aide/siteconfig/tab_autopurger.html:81 msgid "Default message expire policy for private mailboxes" msgstr "السياسة الافتراضية لانهاء صناديق البريد الخاصة" #: ../../static/t/aide/siteconfig/tab_autopurger.html:83 msgid "Same policy as public rooms" msgstr "نفس السياسة المتبعة في الغرف العامة" #: ../../static/t/aide/siteconfig/tab_network.html:1 msgid "Network services" msgstr "خدمات الشبكة" #: ../../static/t/aide/siteconfig/tab_network.html:2 #: ../../static/t/aide/siteconfig/tab_directory.html:3 msgid "" "Changes made on this screen will not take effect until you restart the " "Citadel server." msgstr "" "التعديلات التي تم عملها سوف لن تاخذ مجرها حتى عمل اعادة تشغيل لخادم كاتيديل" #: ../../static/t/aide/siteconfig/tab_network.html:6 msgid "SMTP MTA port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:9 msgid "Correct forged From: lines during authenticated SMTP" msgstr "اقامة فورم صحيح خلال عملية توثيق ال smtp" #: ../../static/t/aide/siteconfig/tab_network.html:12 msgid "Flag message as spam, instead of rejecting it" msgstr "ضع علامة على البريد المزعج بدل من رفضه" #: ../../static/t/aide/siteconfig/tab_network.html:15 msgid "IMAP listener port (-1 to disable)" msgstr "IMAP رقم منفذ (-1 to disable)" #: ../../static/t/aide/siteconfig/tab_network.html:19 msgid "Network run frequency (in seconds)" msgstr "تردد عمل الشبكة بالثانية" #: ../../static/t/aide/siteconfig/tab_network.html:22 msgid "Server IP address (0.0.0.0 for 'any')" msgstr "عنوان الخادم 0.0.0.0" #: ../../static/t/aide/siteconfig/tab_network.html:25 msgid "SMTP MSA port (-1 to disable)" msgstr "SMTP MSA port (-1 to disable) منفذ" #: ../../static/t/aide/siteconfig/tab_network.html:28 msgid "IMAP over SSL port (-1 to disable)" msgstr "IMAP over SSL port (-1 to disable) منفذ" #: ../../static/t/aide/siteconfig/tab_network.html:31 msgid "SMTP over SSL port (-1 to disable)" msgstr "SMTP over SSL port (-1 to disable) منفذ" #: ../../static/t/aide/siteconfig/tab_network.html:34 msgid "Instantly expunge deleted messages in IMAP" msgstr "على الفور محو الرسائل المحذوفة في IMAP" #: ../../static/t/aide/siteconfig/tab_network.html:38 msgid "Allow unauthenticated SMTP clients to spoof this sites domains" msgstr "" "السماح للعملاء SMTP غير مصادق الى المخادعة ومشاهدة بيانات هذه المجالات " "المواقع" #: ../../static/t/aide/siteconfig/tab_network.html:41 msgid "Postfix TCP Dictionary Port" msgstr "Postfix TCP Dictionary Port منفذ القاموس" #: ../../static/t/aide/siteconfig/tab_network.html:41 msgid "-1 to disable" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:44 msgid "ManageSieve Port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:47 msgid "Perform RBL checks upon connect instead of after RCPT" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:50 msgid "Keep original from headers in IMAP" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:53 msgid "XMPP (Jabber) client to server port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:56 msgid "XMPP (Jabber) server to server port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_pop3.html:1 msgid "POP3" msgstr "" #: ../../static/t/aide/siteconfig/tab_pop3.html:6 msgid "POP3 listener port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_pop3.html:9 msgid "POP3 over SSL port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_pop3.html:12 msgid "POP3 fetch frequency in seconds" msgstr "تردد الاحضار في الثانية \t POP3" #: ../../static/t/aide/siteconfig/tab_pop3.html:15 msgid "POP3 fastest fetch frequency in seconds" msgstr "سرعة تردد الاحضار POP3 في الثانية" #: ../../static/t/aide/siteconfig/tab_tuning.html:1 msgid "Advanced server fine-tuning controls" msgstr "الاعدادات المتقدمة مسيطرات التوليف للخادم" #: ../../static/t/aide/siteconfig/tab_tuning.html:5 msgid "Server connection idle timeout (in seconds)" msgstr "وقت الاتصال بدون عمل على الخادم بالثانية" #: ../../static/t/aide/siteconfig/tab_tuning.html:8 msgid "Maximum concurrent sessions (0 = no limit)" msgstr "اقصى عدد للجلسات المتزامنة (0 = لا حدود)" #: ../../static/t/aide/siteconfig/tab_tuning.html:11 msgid "Default user purge time (days)" msgstr "وقت التنضي الافتراضي للمستخدم الايام" #: ../../static/t/aide/siteconfig/tab_tuning.html:14 msgid "Default room purge time (days)" msgstr "الوقت الافتراضي للتنظيف الايام" #: ../../static/t/aide/siteconfig/tab_tuning.html:17 msgid "Maximum message length" msgstr "اقصى طول للرسالة" #: ../../static/t/aide/siteconfig/tab_tuning.html:20 msgid "Minimum number of worker threads" msgstr "اقصى عدد من مؤشرات ترابط العمل" #: ../../static/t/aide/siteconfig/tab_tuning.html:23 msgid "Maximum number of worker threads" msgstr "اقصى عدد من مؤشرات ترابط العمل" #: ../../static/t/aide/siteconfig/tab_tuning.html:26 msgid "Automatically delete committed database logs" msgstr "تلقائيا امسح بيانات السجل المتلازمة" #: ../../static/t/aide/siteconfig/tab_pushmail.html:5 msgid "Funambol server host (blank to disable)" msgstr "اسم المضيف لخادم Funambol اترك فارغ للتعطيل" #: ../../static/t/aide/siteconfig/tab_pushmail.html:8 msgid "Funambol server port " msgstr "منفذ خادم Funambol " #: ../../static/t/aide/siteconfig/tab_pushmail.html:11 msgid "Funambol sync source" msgstr "مصدر مزامنة خادم Funambol" #: ../../static/t/aide/siteconfig/tab_pushmail.html:14 msgid "Funambol auth details (user:pass)" msgstr "تفاصيل التوثيق لخادم Funambol" #: ../../static/t/aide/siteconfig/tab_pushmail.html:17 msgid "External pager tool (blank to disable)" msgstr "اداة التنضيف الخارجية اترك فارغ للتعطيل" #: ../../static/t/aide/siteconfig/tab_access.html:1 msgid "Access controls and site policy settings" msgstr "عناصر التحكم في الوصول وإعدادات سياسة الموقع" #: ../../static/t/aide/siteconfig/tab_access.html:5 msgid "Allow aides to zap (forget) rooms" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:9 msgid "Quarantine messages from problem users" msgstr "حجب الرسائل عن المستخدمين المزعجين والمثيرين للمشاكل" #: ../../static/t/aide/siteconfig/tab_access.html:12 msgid "Name of quarantine room" msgstr "اسم غرفة حجب الرسائل" #: ../../static/t/aide/siteconfig/tab_access.html:17 msgid "Name of room to log pages" msgstr "اسم الغرف المسجلة للصفحات" #: ../../static/t/aide/siteconfig/tab_access.html:22 msgid "Authentication mode" msgstr "وضع الترابط" #: ../../static/t/aide/siteconfig/tab_access.html:24 msgid "Self contained" msgstr "احتواء الذاتية" #: ../../static/t/aide/siteconfig/tab_access.html:25 msgid "Host based" msgstr "استنادا للمضيف" #: ../../static/t/aide/siteconfig/tab_access.html:26 msgid "LDAP (RFC2307)" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:27 msgid "LDAP (Active Directory)" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:30 msgid "Master user name (blank to disable)" msgstr "اسم المستخدم الرئيسي الماستر" #: ../../static/t/aide/siteconfig/tab_access.html:33 msgid "Master user password" msgstr "كلمة السر للمستخدم الرئيسي الماستر" #: ../../static/t/aide/siteconfig/tab_access.html:38 msgid "Initial access level for new users" msgstr "اولوية مستوى الوصول لجميع المستخدمين" #: ../../static/t/aide/siteconfig/tab_access.html:49 msgid "Access level required to create rooms" msgstr "مستوى الوصول مطلوب لانشاء غرف" #: ../../static/t/aide/siteconfig/tab_access.html:60 msgid "" "Automatically grant room-aide status to users who create private rooms" msgstr "تلقائيا اعطاء حالة المساعد للمستخدمين الذين يقومون بانشاء غرف خاصة" #: ../../static/t/aide/siteconfig/tab_access.html:63 msgid "Automatically grant room-aide status to users who create BLOG rooms" msgstr "" "تلقائيا اعطاء حالة المساعد للمستخدمين الذين يقومون بانشاء غرف مدونات" #: ../../static/t/aide/siteconfig/tab_access.html:66 msgid "Restrict access to Internet mail" msgstr "تقيد الوصول للبريد الالكتروني" #: ../../static/t/aide/siteconfig/tab_access.html:71 msgid "Disable self-service user account creation" msgstr "تعطيل خدمة انشاء حساب مستخدم بنفسه" #: ../../static/t/aide/siteconfig/tab_access.html:71 msgid "Hint: do not select both!" msgstr "تلميح لا تقوم باختيار الاثنين معا" #: ../../static/t/aide/siteconfig/tab_access.html:74 msgid "Require registration for new users" msgstr "التسجيل مطلوب للمستخدمين الجدد" #: ../../static/t/aide/siteconfig/tab_access.html:77 msgid "Allow anonymous guest access" msgstr "السماح للضيوف الغريبين بالدخول" #: ../../static/t/aide/siteconfig/tab_indexing.html:1 msgid "Indexing and Journaling" msgstr "الفهرسة واليوميات" #: ../../static/t/aide/siteconfig/tab_indexing.html:2 msgid "Warning: these facilities are resource intensive." msgstr "تحذير: هذه المراكز تتطلب موارد كثيرة." #: ../../static/t/aide/siteconfig/tab_indexing.html:6 msgid "Enable full text index" msgstr "تفعيل فهرسة النص المتكامل" #: ../../static/t/aide/siteconfig/tab_indexing.html:9 msgid "Perform journaling of email messages" msgstr "تنفيذ يوميات رسائل البريد الإلكتروني" #: ../../static/t/aide/siteconfig/tab_indexing.html:13 msgid "Perform journaling of non-email messages" msgstr "تنفيذ يوميات لغير رسائل البريد اللاكتروني" #: ../../static/t/aide/siteconfig/tab_indexing.html:16 msgid "Email destination of journalized messages" msgstr "وجهات الابريد الالكتروني ليوميات البريد او الرسائل" #: ../../static/t/aide/siteconfig/tab_directory.html:1 msgid "Configure the LDAP connector for Citadel" msgstr "تكوين رابط Ldap لخادم كاتيديل" #: ../../static/t/aide/siteconfig/tab_directory.html:4 msgid "" "NOTE: This Citadel server has been built without LDAP support. These " "options will have no effect." msgstr "" "ملاحظة: تم بناء هذا الخادم القلعة دون دعم LDAP. وهذه الخيارات ليس لها أي أثر." #: ../../static/t/aide/siteconfig/tab_directory.html:9 msgid "Host name of LDAP server (blank to disable)" msgstr "اسم المضيف لخادم Ldab اترك فارغ لتعطيل الميزة" #: ../../static/t/aide/siteconfig/tab_directory.html:13 msgid "Port number of LDAP server (blank to disable)" msgstr "رقم المنفذ لخادم Ldap اترك فارغ لتعطيل الميزة" #: ../../static/t/aide/siteconfig/tab_directory.html:16 msgid "Base DN" msgstr "قاعدة دي إن (DN)" #: ../../static/t/aide/siteconfig/tab_directory.html:19 msgid "Bind DN" msgstr "ربط dn" #: ../../static/t/aide/siteconfig/tab_directory.html:22 msgid "Password for bind DN" msgstr "كلمة السر لربط dn" #: ../../static/t/iconbar.html:7 msgid "Language:" msgstr "اللغة:" #: ../../static/t/iconbar.html:19 msgid "Mail" msgstr "البريد الإلكتروني" #: ../../static/t/iconbar.html:39 ../../static/t/iconbar/edit.html:61 #: ../../static/t/summary/page.html:30 msgid "Tasks" msgstr "المهام" #: ../../static/t/iconbar.html:48 ../../static/t/iconbar/edit.html:67 msgid "Rooms" msgstr "الغرف" #: ../../static/t/iconbar.html:57 msgid "Online users" msgstr "المستخدمون المتواجدون حالياً" #: ../../static/t/iconbar.html:62 ../../static/t/iconbar/edit.html:79 msgid "Chat" msgstr "محادثات" #: ../../static/t/iconbar.html:65 msgid "Advanced" msgstr "الخيارات المتقدمة" #: ../../static/t/iconbar.html:72 ../../static/t/room/edit/editroom.html:4 #: ../../static/t/room/edit.html:5 msgid "Administration" msgstr "الإدارة" #: ../../static/t/iconbar.html:83 msgid "customize this menu" msgstr "تخصيص هذه القائمة" #: ../../static/t/iconbar.html:92 msgid "switch to room list" msgstr "تبديل الى قائمة الغرف" #: ../../static/t/iconbar.html:93 msgid "switch to menu" msgstr "تبديل الى قائمة" #: ../../static/t/iconbar.html:94 msgid "My folders" msgstr "مجلداتي" #: ../../static/t/view_message/list_attach.html:3 #: ../../static/t/view_message/inline_attach.html:4 msgid "View" msgstr "عرض" #: ../../static/t/view_message/list_attach.html:4 #: ../../static/t/view_message/inline_attach.html:5 msgid "Download" msgstr "نزّل" #: ../../static/t/view_message/print.html:14 #: ../../static/t/view_message.html:14 msgid "to" msgstr "إلى" #: ../../static/t/openid_manual_create.html:2 msgid "Your OpenID" msgstr "معرف حسابك" #: ../../static/t/openid_manual_create.html:2 msgid "was successfully verified." msgstr "تم التحقق بنجاح" #: ../../static/t/openid_manual_create.html:3 msgid "However, the user name" msgstr "على كل حال" #: ../../static/t/openid_manual_create.html:3 msgid "conflicts with an existing user." msgstr "تضارب مع مستخدم موجود اصلا" #: ../../static/t/openid_manual_create.html:5 msgid "Please specify the user name you would like to use." msgstr "الرجاء تحديد اسم المستخدم الذي تنوي استخدامها" #: ../../static/t/files/graphicsupload.html:2 msgid "Image upload" msgstr "رفع صورة" #: ../../static/t/files/graphicsupload.html:6 msgid "You can upload an image directly from your computer" msgstr "تستطيع رفع صورة مباشرتا من حاسبتك" #: ../../static/t/files/graphicsupload.html:8 msgid "Please select a file to upload:" msgstr "الرجاء اختيار ملف للرفع" #: ../../static/t/files/section_onefile.html:20 msgid "Slideshow" msgstr "عرض الشرائح" #: ../../static/t/roombanner.html:10 ../../static/t/roombanner.html:11 msgid "new of" msgstr "جديد من" #: ../../static/t/roombanner.html:10 ../../static/t/roombanner.html:11 #: ../../static/t/msg_listselector_bottom.html:7 #: ../../static/t/msg_listselector_top.html:7 msgid "messages" msgstr "رسائل" #: ../../static/t/roombanner.html:28 msgid "Select page: " msgstr "اختار صفحة " #: ../../static/t/who.html:13 msgid "Users currently on " msgstr "المستخدمون يعملون حاليا " #: ../../static/t/who.html:22 msgid "Click on a name to read user info. Click on" msgstr "اضغط على الاسم لقراءة معلومات المستخدم اضغط تشغيل" #: ../../static/t/who.html:24 msgid "to send an instant message to that user." msgstr "لارسال رسالة فورية لهذا المستخدم" #: ../../static/t/msg_listselector_bottom.html:2 #: ../../static/t/msg_listselector_top.html:2 msgid "Reading #" msgstr "قراءة #" #: ../../static/t/msg_listselector_bottom.html:12 #: ../../static/t/msg_listselector_top.html:12 msgid "oldest to newest" msgstr "الترتيب من القديم للحديث" #: ../../static/t/msg_listselector_bottom.html:20 #: ../../static/t/msg_listselector_top.html:20 msgid "newest to oldest" msgstr "الترتيب من الحديث للقديم" #: ../../static/t/newstartpage.html:4 msgid "New start page" msgstr "صفحة بداية جديدة" #: ../../static/t/newstartpage.html:9 msgid "Your start page has been changed." msgstr "صفحة البدء الخاصة بك تم تغيرها" #: ../../static/t/newstartpage.html:12 msgid "" "(Note: this does not change your browser's home page. It changes the page " "you begin on when you log on to" msgstr "" "ملاحظة: هذا لا يغير الصفحة الرئيسية في المتصفح لديك. يتغير الصفحة التي تبدأ " "عند تسجيل الدخول" #: ../../static/t/no_new_msgs.html:3 msgid "No new messages." msgstr "لاتوجد رسائل جديدة" #: ../../static/t/view_blog/comment_box.html:8 msgid "Post a comment" msgstr "كتابة تعليق" #: ../../static/t/prefs/pushemail.html:2 msgid "Configure Push Email" msgstr "اعداد بريد الدفع" #: ../../static/t/prefs/pushemail.html:9 msgid "Push email and SMS settings" msgstr "اعداد دفع ال رسائل القصير والبريد الالكتروني" #: ../../static/t/prefs/pushemail.html:17 msgid "" "If your administrator has enabled the functionality, Citadel can notify a " "Funambol server that you haved recieved new email and automatically " "syncronize any devices you have with the Funambol client installed." msgstr "" "اذا المدير فعل هذه الوظيفية سيرفر كاتيديل يستيطع ابلاغ خادم Funambol بانه " "تم استقبال بريد الكتروني جديد تلقائيا ويقوم بالمزامنة مع اي جهاز مع مستخدم " "Funambol مركب" #: ../../static/t/prefs/pushemail.html:20 msgid "" "Alternatively, if the administrator has configured it, Citadel can send a " "text message to you when new mail arrives." msgstr "" "بدلا من ذلك، إذا قام المدير العام باعداده ، يمكن خادم إرسال رسالة نصية إليك " "عند وصول بريد جديد." #: ../../static/t/prefs/pushemail.html:26 msgid "Notify Funambol server" msgstr "ابلغ خادم Funambol" #: ../../static/t/prefs/pushemail.html:31 msgid "Send a text message to..." msgstr "ارسال رسالة نصية الى" #: ../../static/t/prefs/pushemail.html:33 msgid "" "(Use international format, without any leading zeros, spaces or hypens, like " "+61415011501)" msgstr "استخدم الشكل الدولي بدون اصفار او مسافات مثل +61415011501" #: ../../static/t/prefs/pushemail.html:38 msgid "Use custom notification scheme configured by your Admin" msgstr "استخدم ابلاغ مخصص مهيئة عن طريق المدير" #: ../../static/t/prefs/pushemail.html:43 msgid "Don‘t send any notifications" msgstr "لاترسل اي تنبيهات" #: ../../static/t/prefs/box.html:9 msgid "Tree (folders) view" msgstr "عرض الحافضات على شكل شجرة" #: ../../static/t/prefs/box.html:11 msgid "Table (rooms) view" msgstr "عرض الغرف على شكل جدول" #: ../../static/t/prefs/box.html:20 msgid "12 hour (am/pm)" msgstr "12 ساعة" #: ../../static/t/prefs/box.html:25 msgid "24 hour" msgstr "24 ساعة" #: ../../static/t/prefs/box.html:152 msgid "Sunday" msgstr "اﻷحد" #: ../../static/t/prefs/box.html:153 msgid "Monday" msgstr "الأثنين" #: ../../static/t/prefs/box.html:174 msgid "No signature" msgstr "بدون توقيع" #: ../../static/t/prefs/box.html:238 msgid "Full-functionality" msgstr "كامل الوضائف" #: ../../static/t/prefs/box.html:241 msgid "Safe mode" msgstr "الوضع الامن" #: ../../static/t/prefs/box.html:242 msgid "" "Safe mode is less intensive on your web browser, but not as fully featured." msgstr "الوضع الامن هو اقل حمل على خادم البريد لكن لايعمل بجميع الميزات" #: ../../static/t/wiki/pagelist.html:1 msgid "List of Wiki pages" msgstr "قائمة بصفحات المعرفة" #: ../../static/t/wiki/history.html:1 msgid "History of edits for this page" msgstr "قائمة اخر تعديلات اجريتها لهذه الصفحة history" #: ../../static/t/who/list_static_header.html:1 msgid "Users currently on" msgstr "المستخدمين الذي يعملون حاليا" #: ../../static/t/who/section.html:4 msgid "(kill)" msgstr "اقضي على العملية" #: ../../static/t/who/bio.html:4 ../../static/t/user/show.html:4 msgid "User profile" msgstr "الملف الشخصي للمستخدم" #: ../../static/t/who/summary.html:5 ../../static/t/who/box_list_static.html:6 #: ../../static/t/room/edit/tab_feed.html:13 msgid "User name" msgstr "اسم المستخدم" #: ../../static/t/who/summary.html:6 ../../static/t/who/box_list_static.html:7 msgid "Room" msgstr "غرفة" #: ../../static/t/who/box_list_static.html:8 msgid "From host" msgstr "من المضيف" #: ../../static/t/view_message.html:19 msgid "Edit" msgstr "تحرير" #: ../../static/t/view_message.html:22 ../../static/t/view_message.html:26 msgid "Reply" msgstr "الرد" #: ../../static/t/view_message.html:23 msgid "ReplyQuoted" msgstr "الرد باقتباس" #: ../../static/t/view_message.html:27 msgid "ReplyAll" msgstr "الرد على الجميع" #: ../../static/t/view_message.html:28 msgid "Forward" msgstr "إعادة توجيه" #: ../../static/t/view_message.html:31 ../../static/t/msg_listview.html:25 msgid "Move" msgstr "نقل" #: ../../static/t/view_message.html:34 msgid "Headers" msgstr "رؤوس" #: ../../static/t/view_message.html:35 ../../static/t/msg_listview.html:28 msgid "Print" msgstr "طباعة" #: ../../static/t/preferences.html:4 ../../static/t/preferences.html:7 msgid "Preferences and settings" msgstr "الاعدادات والمفضلات" #: ../../static/t/user/list.html:3 msgid "User list for " msgstr "قائمة المستخدمين لاجل " #: ../../static/t/user/list.html:9 msgid "User Name" msgstr "إسم المستخدم" #: ../../static/t/user/list.html:10 msgid "Number" msgstr "عدد" #: ../../static/t/user/list.html:11 msgid "Access Level" msgstr "مستوى الوصول" #: ../../static/t/user/list.html:12 msgid "Last Login" msgstr "آخر دخول" #: ../../static/t/user/list.html:13 msgid "Total Logins" msgstr "مجمع محاولات الدخول" #: ../../static/t/user/list.html:14 msgid "Total Posts" msgstr "مجموع المشاركات" #: ../../static/t/user/show.html:9 msgid "Click here to send an instant message to" msgstr "اضغط هنا لارسال رسالة فورية" #: ../../static/t/start_of_new_msgs.html:4 msgid "Old messages" msgstr "الرسائل القديمة" #: ../../static/t/start_of_new_msgs.html:8 msgid "New messages" msgstr "رسائل جديدة" #: ../../static/t/display_main_menu.html:7 msgid "Basic commands" msgstr "الاوامر الاساسية" #: ../../static/t/display_main_menu.html:10 msgid "Your info" msgstr "معلوماتك" #: ../../static/t/display_main_menu.html:12 msgid "Advanced room commands" msgstr "اوامر الغرفة المتقدمة" #: ../../static/t/iconbar/save.html:4 ../../static/t/iconbar/edit.html:4 msgid "Customize the icon bar" msgstr "تخصيص شريط الايقونات" #: ../../static/t/iconbar/save.html:11 msgid "" "Your icon bar has been updated. Please select any of its choices to continue." msgstr "لقد تم تحديث شريط الايقونات الريجا اختيار احد الاختيارات للاستمرار" #: ../../static/t/iconbar/save.html:11 msgid "" "You may need to force refresh (SHIFT-F5)> in order for changes to take effect" msgstr "" "تستيطع عمل تحديث عن طريق (SHIFT-F5)> من اجل ان تاخذ التغيرات مفعولها" #: ../../static/t/iconbar/edit.html:11 msgid "Display icons as:" msgstr "عرض على شكل" #: ../../static/t/iconbar/edit.html:12 msgid "pictures and text" msgstr "الصورة والنص" #: ../../static/t/iconbar/edit.html:13 msgid "pictures only" msgstr "الصورة فقط" #: ../../static/t/iconbar/edit.html:14 msgid "text only" msgstr "النص فقط" #: ../../static/t/iconbar/edit.html:16 msgid "" "Select the icons you would like to see displayed in the 'icon bar' menu on " "the left side of the screen." msgstr "" "حدد الرموز التي تود أن ترى في عرض قائمة \"شريط رمز\" على الجانب الأيسر من " "الشاشة." #: ../../static/t/iconbar/edit.html:23 msgid "Site logo" msgstr "شعار الموقع" #: ../../static/t/iconbar/edit.html:23 msgid "An icon describing this site" msgstr "ايقونة تصف الموقع" #: ../../static/t/iconbar/edit.html:29 msgid "Your summary page" msgstr "ملخص الصفحة الخاص بك" #: ../../static/t/iconbar/edit.html:36 msgid "Mail (inbox)" msgstr "البريد الوارد" #: ../../static/t/iconbar/edit.html:36 msgid "A shortcut to your email Inbox" msgstr "طريق مختصر لصندوق البريد الخاص بك" #: ../../static/t/iconbar/edit.html:42 msgid "Your personal address book" msgstr "دفتر العناوين الخاص بك" #: ../../static/t/iconbar/edit.html:49 msgid "Your personal notes" msgstr "ملاحظتك" #: ../../static/t/iconbar/edit.html:55 msgid "A shortcut to your personal calendar" msgstr "طريق مختصر لتقويمك الخاص" #: ../../static/t/iconbar/edit.html:61 msgid "A shortcut to your personal task list" msgstr "طريق مختصر لقائمة المهام الخاصة بك" #: ../../static/t/iconbar/edit.html:67 msgid "" "Clicking this icon displays a list of all accessible rooms (or folders) " "available." msgstr "الضغط على هذه الايقونة يعرض جميع الغرف او الحافظات في حالة وجودها" #: ../../static/t/iconbar/edit.html:73 msgid "Who is online?" msgstr "من هو موجود الان ؟" #: ../../static/t/iconbar/edit.html:73 msgid "Clicking this icon displays a list of all users currently logged in." msgstr "" "الضغط على هذه الايقونة يعرض قائمة لجميع المستخدمين المسجلين الدخول حاليا" #: ../../static/t/iconbar/edit.html:79 msgid "" "Clicking this icon enters real-time chat mode with other users in the same " "room." msgstr "" "النقر على هذه الايقونة يسمح لكم بالدخول في حالة المراسلة الحية مع المستخدمين " "في نفس الغرفة" #: ../../static/t/iconbar/edit.html:85 msgid "Advanced options" msgstr "خيارات متقدمة" #: ../../static/t/iconbar/edit.html:85 msgid "Access to the complete menu of Citadel functions." msgstr "الوصول لكامل القائمة ووضائفها في كاتيديل" #: ../../static/t/iconbar/edit.html:91 msgid "Citadel logo" msgstr "شعار بريد كاتيديل" #: ../../static/t/iconbar/edit.html:91 msgid "Displays the 'Powered by Citadel' icon" msgstr "عرض ايقونة مقدم من كاتيديل" #: ../../static/t/room/edit/tab_expire.html:8 msgid "Message expire policy for this room" msgstr "سياسة انها الرسائل لهذه الغرفة" #: ../../static/t/room/edit/tab_expire.html:14 msgid "Use the default policy for this floor" msgstr "استخدم السياسة الافتراضية لهذا الطابق" #: ../../static/t/room/edit/tab_expire.html:36 msgid "Message expire policy for this floor" msgstr "سياسة انهاء الرسائل في هذا الطابق" #: ../../static/t/room/edit/tab_expire.html:42 msgid "Use the system default" msgstr "اعادة النضام الى الوضع الافتراضي" #: ../../static/t/room/edit/editroom.html:5 ../../static/t/room/edit.html:6 msgid "Configuration" msgstr "الإعدادات" #: ../../static/t/room/edit/editroom.html:6 ../../static/t/room/edit.html:7 msgid "Message expire policy" msgstr "سياسة انهاء الرسائل" #: ../../static/t/room/edit/editroom.html:7 ../../static/t/room/edit.html:8 msgid "Access controls" msgstr "السيطرة على الوصول" #: ../../static/t/room/edit/editroom.html:8 ../../static/t/room/edit.html:9 msgid "Sharing" msgstr "المشاركة" #: ../../static/t/room/edit/editroom.html:9 ../../static/t/room/edit.html:10 msgid "Mailing list service" msgstr "خدمة قائمة البريد" #: ../../static/t/room/edit/editroom.html:10 ../../static/t/room/edit.html:11 msgid "Remote retrieval" msgstr "الاسترجاع عن بعد" #: ../../static/t/room/edit/tab_config.html:6 msgid "name of room: " msgstr "اسم الغرفة " #: ../../static/t/room/edit/tab_config.html:10 #: ../../static/t/room/create.html:20 msgid "Resides on floor: " msgstr "يتواجد في طابق " #: ../../static/t/room/edit/tab_config.html:16 #: ../../static/t/room/create.html:68 msgid "Type of room:" msgstr "انواع الغرف" #: ../../static/t/room/edit/tab_config.html:22 #: ../../static/t/room/create.html:73 msgid "Public (automatically appears to everyone)" msgstr "عام تلقائيا يضهر للجميع" #: ../../static/t/room/edit/tab_config.html:28 #: ../../static/t/room/create.html:77 msgid "Private - hidden (accessible to anyone who knows its name)" msgstr "خاص - مخفي قابل للوصول من قبل اي شخص يعرف الاسم" #: ../../static/t/room/edit/tab_config.html:35 #: ../../static/t/room/create.html:81 msgid "Private - require password: " msgstr "خاص يطلب كلمة مرور " #: ../../static/t/room/edit/tab_config.html:44 #: ../../static/t/room/create.html:86 msgid "Private - invitation only" msgstr "خاص عن طريق الدعوات" #: ../../static/t/room/edit/tab_config.html:51 #: ../../static/t/room/create.html:90 msgid "Personal (mailbox for you only)" msgstr "شخصي - صندوق بريد لك فقط" #: ../../static/t/room/edit/tab_config.html:55 msgid "If private, cause current users to forget room" msgstr "اذا خاص سبب جميع المستخدمين لنسيان هذه الغرفة" #: ../../static/t/room/edit/tab_config.html:61 msgid "Preferred users only" msgstr "المستخدمين المفضلين فقط" #: ../../static/t/room/edit/tab_config.html:66 msgid "Read-only room" msgstr "غرفة للقراءة فقط" #: ../../static/t/room/edit/tab_config.html:71 msgid "All users allowed to post may also delete messages" msgstr "مسموع لجميع المستخدمين المشاركة و حذف الرسائل" #: ../../static/t/room/edit/tab_config.html:76 msgid "File directory room" msgstr "ملف دليل الغرف" #: ../../static/t/room/edit/tab_config.html:80 msgid "Directory name: " msgstr "اسم الدليل " #: ../../static/t/room/edit/tab_config.html:86 msgid "Uploading allowed" msgstr "الرفع مسموح" #: ../../static/t/room/edit/tab_config.html:91 msgid "Downloading allowed" msgstr "مسموح التحميل" #: ../../static/t/room/edit/tab_config.html:96 msgid "Visible directory" msgstr "الدليل المرئي" #: ../../static/t/room/edit/tab_config.html:103 msgid "Network shared room" msgstr "غرفة المشاركة عن طريق الشبكة" #: ../../static/t/room/edit/tab_config.html:108 msgid "Permanent (does not auto-purge)" msgstr "مسموح او مستثنى لا تقوم بالتنظيف التلقائي" #: ../../static/t/room/edit/tab_config.html:113 msgid "Subject Required (Force users to specify a message subject)" msgstr "اسم الموضوع مطلوب اجبر المستخدمين على تحديد موضوع الرسالة" #: ../../static/t/room/edit/tab_config.html:116 msgid "Anonymous messages" msgstr "الرسائل من الغرباء" #: ../../static/t/room/edit/tab_config.html:122 msgid "No anonymous messages" msgstr "لا توجد رسائل من الغرباء" #: ../../static/t/room/edit/tab_config.html:127 msgid "All messages are anonymous" msgstr "جميع الرسائل من غرباء" #: ../../static/t/room/edit/tab_config.html:132 msgid "Prompt user when entering messages" msgstr "مطالبة المستخدم عن الدخول للرسائل" #: ../../static/t/room/edit/tab_config.html:136 msgid "Room aide: " msgstr "معاون الغرفة " #: ../../static/t/room/edit/tab_listserv.html:5 msgid "" "The contents of this room are being mailed as individual messages " "to the following list recipients:

    " msgstr "" " محتويات هذه الغرفة تم ارسالها بالبريد كرسائل الفردية إلى " "المستلمين القائمة التالية:

    " #: ../../static/t/room/edit/tab_listserv.html:19 msgid "" "The contents of this room are being mailed in digest form to the " "following list recipients:

    " msgstr "" " محتويات هذه الغرفة تم الارسال بالبريد في شكل خلاصة إلى " "المستلمين القائمة التالية:

    " #: ../../static/t/room/edit/tab_listserv.html:39 msgid "Add recipients from Contacts or other address books" msgstr "جميع المستلمين من المستخدمين او من دفتر العناوين" #: ../../static/t/room/edit/tab_listserv.html:48 msgid "Allow non-subscribers to mail to this room." msgstr "السماح لغير المشتركين في البريد لهذه الغرفة" #: ../../static/t/room/edit/tab_listserv.html:54 msgid "Room post publication needs Admin permission." msgstr "المشاركة في الغرف تحتاج لصلاحيات المدير" #: ../../static/t/room/edit/tab_listserv.html:59 msgid "Allow self-service subscribe/unsubscribe requests." msgstr "السماح للطلبات بخدمة الاشتراك وعدم الاشرتاك الذاتية التفعيل" #: ../../static/t/room/edit/tab_listserv.html:65 msgid "The URL for subscribe/unsubscribe is: " msgstr "عنوان الرابط للاشتراك او عدم الاشتراك هو " #: ../../static/t/room/edit/digestrecp_removal.html:1 #: ../../static/t/room/edit/pop3client_removal.html:9 #: ../../static/t/room/edit/listrecp_removal.html:1 #: ../../static/t/room/edit/rssclient_removal.html:5 msgid "(remove)" msgstr "حذف" #: ../../static/t/room/edit/tab_admin.html:5 msgid "Delete this room" msgstr "مسح هذه الغرفة" #: ../../static/t/room/edit/tab_admin.html:10 msgid "Set or change the icon for this rooms banner" msgstr "تهيئة او تغير ايقونة بنر الغرفة" #: ../../static/t/room/edit/tab_admin.html:14 msgid "Edit this rooms Info file" msgstr "تحرير ملف معلومات الغرفة" #: ../../static/t/room/edit/tab_share.html:5 msgid "Shared with" msgstr "المشاركة مع" #: ../../static/t/room/edit/tab_share.html:6 msgid "Not shared with" msgstr "عدم المشاركة مع" #: ../../static/t/room/edit/tab_share.html:11 #: ../../static/t/room/edit/tab_share.html:21 msgid "Remote node name" msgstr "اسم العقدة البعيدة" #: ../../static/t/room/edit/tab_share.html:12 #: ../../static/t/room/edit/tab_share.html:22 msgid "Remote room name" msgstr "اسم الغرفة البعيدة" #: ../../static/t/room/edit/tab_share.html:13 #: ../../static/t/room/edit/tab_share.html:23 msgid "Actions" msgstr "إجراءات" #: ../../static/t/room/edit/tab_share.html:35 msgid "" "When sharing a room, it must be shared from both ends. Adding a node to the " "'shared' list sends messages out, but in order to receive messages, the " "other nodes must be configured to send messages out to your system as well. " "
  • If the remote room name is blank, it is assumed that the room name is " "identical on the remote node.
  • If the remote room name is different, the " "remote node must also configure the name of the room here." msgstr "" "عند مشاركة الغرفة، يجب أن تكون مشتركة من كلا الجانبين. إضافة إلى قائمة عقدة " "'المشتركة' يرسل رسائل، ولكن من أجل الحصول على الرسائل، يجب أن يتم تكوين " "العقد الأخرى لإرسال رسائل إلى النظام الخاص بك أيضا.
  • إذا اسم الغرفة عن " "بعد فارغة، يفترض أن اسم الغرفة مطابق على عقدة البعيد.
  • إذا اسم الغرفة " "البعيد مختلفة، يجب تكوين العقدة البعيدة أيضا اسم الغرفة هنا." #: ../../static/t/room/edit/tab_feed.html:2 msgid "" "Retrieve messages from these remote POP3 accounts and store them in this " "room:" msgstr "استرداد الرسائل من حسابات POP3 البعيد هذه وتخزينها في هذه الغرفة:" #: ../../static/t/room/edit/tab_feed.html:12 msgid "Remote host" msgstr "اسماء المضيفين البعيدة" #: ../../static/t/room/edit/tab_feed.html:15 msgid "Keep messages on server?" msgstr "ابقاء الرسائل في الخادم" #: ../../static/t/room/edit/tab_feed.html:16 msgid "Interval" msgstr "الفترة" #: ../../static/t/room/edit/tab_feed.html:31 msgid "Fetch the following RSS feeds and store them in this room:" msgstr "جلب rss التالية وتخزينها في هذه الغرفة:" #: ../../static/t/room/edit/tab_feed.html:43 msgid "Feed URL" msgstr "رابط التغذية" #: ../../static/t/room/edit/tab_access.html:5 msgid "" "The users listed below have access to this room. To remove a user from the " "access list, select the user name from the list and click 'Kick'." msgstr "" "المستخدمين المدرجين ادناه لهم صلاحية الوصول لهذه الغرفة لمسح مستخدم من قائمة " "الصلاحيات حدد اسم المستخدم من القائمة المدرجة واضغط طرد" #: ../../static/t/room/edit/tab_access.html:20 msgid "" "To grant another user access to this room, enter the user name in the box " "below and click 'Invite'." msgstr "" "لمنح مستخدم اخر صلاحية الوصول لهذه الغرفة ادخل اسم المستخدم في الحقل واضغط " "ادعو" #: ../../static/t/room/edit/tab_access.html:26 msgid "Invite:" msgstr "ادعو" #: ../../static/t/room/edit/tab_access.html:35 msgid "Users" msgstr "المستخدمون" #: ../../static/t/room/zapped_list.html:7 msgid "Zapped (forgotten) rooms" msgstr "غرف المتحركين المنسية" #: ../../static/t/room/zapped_list.html:10 msgid "Click on any room to un-zap it and goto that room." msgstr "اضغط على اي غرفة لفتحها وثم اذهب للغرفة" #: ../../static/t/room/display_private.html:7 msgid "Go to a hidden room" msgstr "اذهب للغرفة المخفية" #: ../../static/t/room/display_private.html:8 msgid "" "If you know the name of a hidden (guess-name) or passworded room, you can " "enter that room by typing its name below. Once you gain access to a private " "room, it will appear in your regular room listings so you don‘t have to keep " "returning here." msgstr "" "اذا كنت تعرف الاسم المخفي واسم الضيف او كلمة السر او كلمة سر الغرفة تستطيع " "الدخول للغرفة بالضغط على الاسم وعند حصولك صلاحية الوصول لهذه الغرفة سوف تضهر " "في قائمة الغرف الاعتيادية لديك" #: ../../static/t/room/display_private.html:14 msgid "Enter room name:" msgstr "ادخل اسم الغرفة" #: ../../static/t/room/display_private.html:21 msgid "Enter room password:" msgstr "ادخل كلمة السر للغرفة" #: ../../static/t/room/create.html:11 #: ../../static/t/menu/advanced_roomcommands.html:6 msgid "Create a new room" msgstr "انشاء اسم غرفة جديد" #: ../../static/t/room/create.html:18 msgid "Name of room: " msgstr "اسم الغرفة " #: ../../static/t/room/create.html:32 msgid "Default view for room: " msgstr "العرض الافتراضي للغرفة " #: ../../static/t/room/zap_this.html:3 msgid "Zap (forget/unsubscribe) the current room" msgstr "نسيان الغاء الاشتراك للغرفة الحالية" #: ../../static/t/room/zap_this.html:6 msgid "If you select this option," msgstr "اذا ضغطت على هذا الخيار" #: ../../static/t/room/zap_this.html:8 msgid "will disappear from your room list. Is this what you wish to do?" msgstr "سوف تختفي من قائمة الغرف هل هو هذا ما تود عمله ؟" #: ../../static/t/menu/your_info.html:2 msgid "Change your preferences and settings" msgstr "تغير اعدادتك المفضلة" #: ../../static/t/menu/your_info.html:3 msgid "Update your contact information" msgstr "حدث معلومات المستخدمين" #: ../../static/t/menu/your_info.html:5 msgid "Enter your 'bio'" msgstr "ادخل معلومات Bio" #: ../../static/t/menu/your_info.html:6 msgid "Edit your online photo" msgstr "ادخل صورة التواجد الخاصة بك" #: ../../static/t/menu/your_info.html:8 msgid "Edit your push email settings" msgstr "تحرير اعدادات البريد" #: ../../static/t/menu/your_info.html:9 msgid "Manage your OpenIDs" msgstr "ادارة المعرف الخاص بك" #: ../../static/t/menu/basic_commands.html:3 msgid "List known rooms" msgstr "قائمة الغرف المعروفة" #: ../../static/t/menu/basic_commands.html:3 msgid "Where can I go from here?" msgstr "اين استطيع الذهاب من هنا" #: ../../static/t/menu/basic_commands.html:4 ../../static/t/navbar.html:168 msgid "Goto next room" msgstr "الذهاب لغرفة اخرى" #: ../../static/t/menu/basic_commands.html:4 msgid "...with unread messages" msgstr "مع ... غير مقروءة رسائل" #: ../../static/t/menu/basic_commands.html:5 msgid "Skip to next room" msgstr "التخطي الى غرفة اخرى" #: ../../static/t/menu/basic_commands.html:5 msgid "(come back here later)" msgstr "حاول العودة لاحقا" #: ../../static/t/menu/basic_commands.html:6 ../../static/t/navbar.html:5 msgid "Ungoto" msgstr "عدم الذهاب الى" #: ../../static/t/menu/basic_commands.html:6 msgid "oops! Back to " msgstr "للاسف الدهاب الى " #: ../../static/t/menu/basic_commands.html:10 ../../static/t/navbar.html:13 msgid "Read new messages" msgstr "قراءة الرسائل الجديدة" #: ../../static/t/menu/basic_commands.html:10 msgid "...in this room" msgstr "هل هذه الغرفة" #: ../../static/t/menu/basic_commands.html:11 ../../static/t/navbar.html:19 msgid "Read all messages" msgstr "قراءة جميع الرسائل" #: ../../static/t/menu/basic_commands.html:11 msgid "...old and new" msgstr "و القديمة ... جديد" #: ../../static/t/menu/basic_commands.html:12 ../../static/t/navbar.html:25 msgid "Enter a message" msgstr "ادخل الرسالة" #: ../../static/t/menu/basic_commands.html:12 msgid "(post in this room)" msgstr "(نشر في هذه الغرفة)" #: ../../static/t/menu/basic_commands.html:13 msgid "File library" msgstr "مكتبة الملفات" #: ../../static/t/menu/basic_commands.html:13 msgid "(List files available for download)" msgstr "قائمة الملفات المتوفرة للتحميل" #: ../../static/t/menu/basic_commands.html:17 msgid "Summary page" msgstr "ملخص الصفحة" #: ../../static/t/menu/basic_commands.html:17 msgid "Summary of my account" msgstr "ملخص حسابي" #: ../../static/t/menu/basic_commands.html:18 msgid "User list" msgstr "قائمة المستخدمين" #: ../../static/t/menu/basic_commands.html:18 msgid "(all registered users)" msgstr "جميع المستخدمين المسجلين" #: ../../static/t/menu/basic_commands.html:19 msgid "Bye!" msgstr "وداعا!" #: ../../static/t/menu/advanced_roomcommands.html:3 msgid "Edit or delete this room" msgstr "تحرير او حذف الغرفة" #: ../../static/t/menu/advanced_roomcommands.html:5 msgid "Go to a 'hidden' room" msgstr "الذهاب الى الغرفة المخفية" #: ../../static/t/menu/advanced_roomcommands.html:7 msgid "Zap (forget) this room" msgstr "الغرفة المخفية zap" #: ../../static/t/menu/advanced_roomcommands.html:8 msgid "List all forgotten rooms" msgstr "اضهار جميع الغرف المحمية zap" #: ../../static/t/navbar.html:34 msgid "View contacts" msgstr "عرض المستخدمين" #: ../../static/t/navbar.html:40 msgid "Add new contact" msgstr "إضافة جهاة اتصال جديدة" #: ../../static/t/navbar.html:49 msgid "Day view" msgstr "طريقة عرض اليوم" #: ../../static/t/navbar.html:55 msgid "Month view" msgstr "طريقة عرض الشهر" #: ../../static/t/navbar.html:61 msgid "Add new event" msgstr "اضافة حدث جديد" #: ../../static/t/navbar.html:70 msgid "Calendar list" msgstr "قائمة التقويم" #: ../../static/t/navbar.html:79 msgid "View tasks" msgstr "اضهار المهام" #: ../../static/t/navbar.html:85 msgid "Add new task" msgstr "اضافة مهمة جديدة" #: ../../static/t/navbar.html:94 msgid "View notes" msgstr "اضهار الملاحظات" #: ../../static/t/navbar.html:101 msgid "Add new note" msgstr "اضافة ملاحضة جديدة" #: ../../static/t/navbar.html:110 msgid "Refresh message list" msgstr "اعادت تحديث قائمة الرسائل" #: ../../static/t/navbar.html:122 msgid "Write mail" msgstr "كتابة بريد" #: ../../static/t/navbar.html:132 msgid "Wiki home" msgstr "صفحة المعرفة" #: ../../static/t/navbar.html:139 msgid "Edit this page" msgstr "حرر الصفحة" #: ../../static/t/navbar.html:145 msgid "History" msgstr "السجل للعمليات السابقة الهستوري" #: ../../static/t/navbar.html:154 msgid "New blog post" msgstr "مشاركة جديدة في المدونة" #: ../../static/t/navbar.html:162 msgid "Skip this room" msgstr "تخطي هذه الغرفة" #: ../../static/t/msg_listview.html:18 msgid "Loading messages from server, please wait" msgstr "تحميل الرسائل من الخادم يرجى الانتضار" #: ../../static/t/msg_listview.html:24 msgid "Open in new window" msgstr "افتح في نافذة جديدة" #: ../../static/t/msg_listview.html:26 msgid "Copy" msgstr "إنسخ" #: ../../static/t/view_mailq/message.html:6 msgid "Originaly posted in: " msgstr "اصلا تمت المشاركة في " #: ../../static/t/view_mailq/header.html:15 msgid "Refresh this page" msgstr "اعادة تحديث الصفحة" #: ../../static/t/view_mailq/header.html:21 msgid "Message ID" msgstr "عنوان الرسالة" #: ../../static/t/view_mailq/header.html:23 msgid "Date/time submitted" msgstr "وقت وتاريخ التقديم" #: ../../static/t/view_mailq/header.html:25 msgid "Next attempt" msgstr "المحاولة القادمة" #: ../../static/t/view_mailq/header.html:29 msgid "Recipients" msgstr "المتسلمون" #: ../../static/t/view_mailq/footer_empty.html:4 msgid "The queue is empty." msgstr "قائمة المعالجة فارغة" #: ../../static/t/view_mailq/footer_empty.html:9 #: ../../static/t/view_mailq/footer.html:5 msgid "You do not have permission to view this resource." msgstr "ليس لديك الصلاحية لعرض هذه المصادر" #: ../../static/t/get_logged_in.html:5 msgid "You must be logged in to access this page." msgstr "يجب عليك تسجيل الدخول للوصول الى هذه القائمة" #: ../../static/t/get_logged_in.html:9 #: ../../static/t/edit_message/attachments_pane.html:3 msgid "Close window" msgstr "إغلاق النافذة" #: ../../static/t/get_logged_in.html:55 msgid "Log in using a user name and password" msgstr "تسجيل الدخول باستخدام اسم وكلمة المرور" #: ../../static/t/get_logged_in.html:60 ../../static/t/get_logged_in.html:75 msgid "Password:" msgstr "كلمة السر:" #: ../../static/t/get_logged_in.html:65 ../../static/t/get_logged_in.html:69 msgid "New user? Register now" msgstr "اسم مستخدم سجل الان" #: ../../static/t/get_logged_in.html:70 msgid "" "enter the name and password you wish to use, and click "New User." " msgstr "" "أدخل الاسم وكلمة المرور التي ترغب في استخدامها، ثم انقر على \"مستخدم جديد\". " #: ../../static/t/get_logged_in.html:83 msgid "Log in using OpenID" msgstr "الدخول باستخدام المعرف الخاص بك" #: ../../static/t/get_logged_in.html:85 msgid "OpenID URL:" msgstr "رابط المعرف الخاص بك" #: ../../static/t/get_logged_in.html:92 msgid "Log in using Google" msgstr "الدخول باستخدام كوكل" #: ../../static/t/get_logged_in.html:97 msgid "Log in using Yahoo" msgstr "الدخول باستخدام ياهوو" #: ../../static/t/get_logged_in.html:102 msgid "Log in using AOL or AIM" msgstr "الدخول باستخدام AOL او AIM" #: ../../static/t/get_logged_in.html:104 msgid "Enter your AOL or AIM screen name:" msgstr "ادخل اسم AOL او AIM الخاص بك" #: ../../static/t/get_logged_in.html:115 msgid "Please wait" msgstr "إنتظر من فضلك" #: ../../static/t/summary/page.html:4 msgid "Summary page for " msgstr "ملخص الصفحة " #: ../../static/t/summary/page.html:21 msgid "Messages" msgstr "الرسائل" #: ../../static/t/summary/page.html:39 msgid "Today on your calendar" msgstr "اليوم هو في التقويم" #: ../../static/t/summary/page.html:51 msgid "Who‘s online now" msgstr "من هوة متواجد الان" #: ../../static/t/summary/page.html:60 msgid "About this server" msgstr "حول هذا الخادم" #: ../../static/t/summary/page.html:63 msgid "You are connected to" msgstr "انتة متصل ب" #: ../../static/t/summary/page.html:64 msgid "running" msgstr "يعمل" #: ../../static/t/summary/page.html:65 msgid "with" msgstr "مع" #: ../../static/t/summary/page.html:66 msgid "server build" msgstr "بناء الخادم" #: ../../static/t/summary/page.html:67 msgid "and located in" msgstr "وموجود في" #: ../../static/t/summary/page.html:68 msgid "Your system administrator is" msgstr "اسم مدير النظام هو" #: ../../static/t/edit_message/attachments_pane.html:16 msgid "Attach file" msgstr "الملف المرفق" #: ../../static/t/edit_message/attachments_pane.html:21 msgid "Upload" msgstr "رفع" #: ../../static/t/edit_message/section_attach_select.html:4 msgid "Remove" msgstr "حذف" #: ../../static/t/loggedinas.html:3 msgid "Logged in as" msgstr "تم تسجيل الدخول باسم" #: ../../static/t/loggedinas.html:6 msgid "Not logged in." msgstr "لم يتم تسجيل الدخول." webcit-8.24-dfsg.orig/po/webcit/fr.po0000644000175000017500000037652612271477123017265 0ustar michaelmichael# translation of webcit.po to fr.po # Copyright (C) 2008 - 2009 The Citadel Project - http://www.citadel.org # # Gilles Desplanques - # Jacques Lavignotte - # Thierry Pasquier - , 2006 # Robert di Rosa # Peter Bocsak # # This file is distributed under BSD License msgid "" msgstr "" "Project-Id-Version: WebCit\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-03-20 01:03-0400\n" "PO-Revision-Date: 2013-10-28 08:45+0000\n" "Last-Translator: Peter Bocsak \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2013-10-29 04:35+0000\n" "X-Generator: Launchpad (build 16818)\n" "X-Poedit-Country: FRANCE\n" "Language: fr\n" "X-Poedit-Language: French\n" #: ../../roomops.c:708 ../../roomops.c:1005 ../../sieve.c:364 msgid "Cancelled. Changes were not saved." msgstr "Abandon. Les modifications ne seront pas prises en compte." #: ../../roomops.c:838 ../../sieve.c:417 msgid "Your changes have been saved." msgstr "Vos modifications ont été enregistrées." #: ../../roomops.c:881 #, c-format msgid "User '%s' kicked out of room '%s'." msgstr "L'utilisateur %s a été renvoyé du salon %s." #: ../../roomops.c:898 #, c-format msgid "User '%s' invited to room '%s'." msgstr "L'utilisateur %s a été invité à rejoindre le salon %s." #: ../../roomops.c:927 msgid "Cancelled. No new room was created." msgstr "Abandon. Aucun nouveau salon n'a été créé." #: ../../roomops.c:1187 msgid "Floor has been deleted." msgstr "Le palier a été détruit." #: ../../roomops.c:1211 msgid "New floor has been created." msgstr "Un nouveau palier a été créé." #: ../../roomops.c:1290 msgid "Room list view" msgstr "Liste des salons" #: ../../roomops.c:1293 msgid "Show empty floors" msgstr "Afficher les paliers vides" #: ../../roomviews.c:50 msgid "Bulletin Board" msgstr "Panneau d'affichage" #: ../../roomviews.c:51 msgid "Mail Folder" msgstr "Dossier de messages" #: ../../roomviews.c:52 msgid "Address Book" msgstr "Carnet d'adresses" #: ../../roomviews.c:53 ../../static/t/iconbar.html:24 #: ../../static/t/iconbar/edit.html:55 msgid "Calendar" msgstr "Calendrier" #: ../../roomviews.c:54 msgid "Task List" msgstr "Liste des tâches" #: ../../roomviews.c:55 msgid "Notes List" msgstr "Liste des notes" #: ../../roomviews.c:56 msgid "Wiki" msgstr "Wiki" #: ../../roomviews.c:57 msgid "Calendar List" msgstr "Agenda" #: ../../roomviews.c:58 msgid "Journal" msgstr "Journal" #: ../../roomviews.c:59 msgid "Drafts" msgstr "Brouillons" #: ../../roomviews.c:60 msgid "Blog" msgstr "Blog" #: ../../tasks.c:93 msgid "Completed?" msgstr "Achevé ?" #: ../../tasks.c:95 msgid "Name of task" msgstr "Intitulé de la tâche" #: ../../tasks.c:97 msgid "Date due" msgstr "Échéance" #: ../../tasks.c:99 msgid "Category" msgstr "Catégorie" #: ../../tasks.c:101 msgid "Show All" msgstr "Les montrer tous" #: ../../tasks.c:223 msgid "Edit task" msgstr "Éditer la tâche" #: ../../tasks.c:242 ../../calendar.c:98 ../../calendar_view.c:298 #: ../../calendar_view.c:959 ../../calendar_view.c:1003 #: ../../calendar_view.c:1084 msgid "Summary:" msgstr "Résumé :" #: ../../tasks.c:253 msgid "Start date:" msgstr "Date de début :" #: ../../tasks.c:261 ../../tasks.c:291 msgid "No date" msgstr "Sans date" #: ../../tasks.c:265 ../../tasks.c:294 msgid "or" msgstr "ou" #: ../../tasks.c:279 ../../tasks.c:308 msgid "Time associated" msgstr "Temps associé" #: ../../tasks.c:283 msgid "Due date:" msgstr "Échéance :" #: ../../tasks.c:312 msgid "Completed:" msgstr "Achevé :" #: ../../tasks.c:323 msgid "Category:" msgstr "Catégorie:" #: ../../tasks.c:333 ../../calendar.c:159 ../../static/t/files.html:12 msgid "Description:" msgstr "Description :" #: ../../tasks.c:351 ../../event.c:764 msgid "Save" msgstr "Enregistrer" #: ../../tasks.c:352 ../../event.c:765 ../../static/t/aide/inet/section.html:5 #: ../../static/t/view_blog/comment.html:12 #: ../../static/t/view_blog/post.html:15 ../../static/t/view_message.html:32 #: ../../static/t/navbar.html:116 ../../static/t/msg_listview.html:27 msgid "Delete" msgstr "Supprimer" #: ../../tasks.c:353 ../../vcard_edit.c:1216 ../../paging.c:66 #: ../../event.c:767 ../../sysmsgs.c:69 ../../who.c:200 ../../auth.c:812 #: ../../static/t/edit_message.html:135 ../../static/t/confirmlogoff.html:4 msgid "Cancel" msgstr "Abandonner" #: ../../tasks.c:423 ../../calendar_view.c:1379 msgid "Untitled Task" msgstr "Tâche sans titre" #: ../../fmt_date.c:310 msgid "Time format" msgstr "Format horaire" #: ../../listsub.c:54 ../../static/t/listsub/display.html:5 msgid "List subscription" msgstr "Abonnement à la liste" #: ../../listsub.c:67 ../../static/t/listsub/display.html:9 msgid "List subscribe/unsubscribe" msgstr "Abonnement/désabonnement à la liste" #: ../../listsub.c:87 ../../static/t/listsub/display.html:15 #: ../../static/t/listsub/display.html:34 msgid "Confirmation request sent" msgstr "Requête de confirmation envoyée." #: ../../listsub.c:89 #, c-format msgid "" "You are subscribing %s to the %s mailing list. The " "listserver has sent you an e-mail with one additional Web link for you to " "click on to confirm your subscription. This extra step is for your " "protection, as it prevents others from being able to subscribe you to lists " "without your consent.

    Please click on the link which is being e-" "mailed to you and your subscription will be confirmed.
    \n" msgstr "" "Vous vous êtes abonné %s à la liste de diffusion %s. Le " "serveur vous a envoyé un courriel comportant un lien que vous devrez suivre " "pour confirmer votre inscription. Cette étape est nécessaire pour vérifier " "que quelqu'un d'autre ne vous a pas abonné à votre insu.

    SVP " "effectuez cette action, vous recevrez alors un courriel de confirmation de " "votre abonnement.
    \n" #: ../../listsub.c:102 ../../static/t/listsub/display.html:24 msgid "Go back..." msgstr "Retour..." #: ../../listsub.c:253 ../../listsub.c:291 ../../listsub.c:327 #: ../../listsub.c:334 msgid "You need to specify the mailinglist to subscribe to." msgstr "" "Vous devez spécifier la liste de distribution à laquelle vous, vous inscrivez" #: ../../listsub.c:260 ../../listsub.c:298 msgid "You need to specify the email address you'd like to subscribe with." msgstr "" "Vous devez spécifier l'adresse mail avec laquelle vous vous inscrivez" #: ../../blogview_renderer.c:58 ../../blogview_renderer.c:74 #, c-format msgid "%d comments" msgstr "%d commentaires" #: ../../blogview_renderer.c:61 ../../blogview_renderer.c:77 msgid "permalink" msgstr "Lien permanent" #: ../../blogview_renderer.c:302 msgid "Newer posts" msgstr "les nouveaux messages" #: ../../blogview_renderer.c:311 msgid "Older posts" msgstr "des messages plus anciens" #: ../../useredit.c:629 msgid "" "An error occurred while trying to create or edit this address book entry." msgstr "" "Une erreur est apparue pendant la création ou la modification de ce contact." #: ../../useredit.c:717 msgid "Changes were not saved." msgstr "Les changements n'ont pas été enregistrés." #: ../../useredit.c:782 msgid "A new user has been created." msgstr "Un nouvel usager a été créé." #: ../../useredit.c:786 msgid "" "You are attempting to create a new user from within Citadel while running in " "host based authentication mode. In this mode, you must create new users on " "the host system, not within Citadel." msgstr "" "Vous essayez de créer un nouvel usager en utilisant le système interne à " "Citadel alors que celui-ci est en mode d'authentification sur le système. " "Dans ce mode, vous devez créer les nouveaux usagers directement sur le " "système hôte et non avec Citadel." #: ../../bbsview_renderer.c:312 msgid "Go to page: " msgstr "Aller à la page : " #: ../../bbsview_renderer.c:354 msgid "First" msgstr "Premier" #: ../../bbsview_renderer.c:360 msgid "Last" msgstr "Dernier" #: ../../graphics.c:56 msgid "Graphics upload has been cancelled." msgstr "Le téléchargement de l'image a été abandonné." #: ../../graphics.c:62 msgid "You didn't upload a file." msgstr "Vous n'avez pas téléchargé de fichier." #: ../../graphics.c:112 msgid "your photo" msgstr "Votre photographie" #: ../../graphics.c:119 msgid "the icon for this room" msgstr "l'icône de ce salon" #: ../../graphics.c:127 msgid "the Greetingpicture for the login prompt" msgstr "l'image d'accueil pour la connexion" #: ../../graphics.c:135 msgid "the Logoff banner picture" msgstr "la bannière de déconnexion" #: ../../graphics.c:146 msgid "the icon for this floor" msgstr "l'icône de ce palier" #: ../../calendar_tools.c:100 msgid "Hour: " msgstr "Heure : " #: ../../calendar_tools.c:120 msgid "Minute: " msgstr "Minute : " #: ../../calendar_tools.c:191 msgid "(status unknown)" msgstr "(pas encore de réponse)" #: ../../calendar_tools.c:207 msgid "(needs action)" msgstr "(action requise)" #: ../../calendar_tools.c:210 msgid "(accepted)" msgstr "(accepté)" #: ../../calendar_tools.c:213 msgid "(declined)" msgstr "(décliné)" #: ../../calendar_tools.c:216 msgid "(tenative)" msgstr "(tentative)" #: ../../calendar_tools.c:219 msgid "(delegated)" msgstr "(délégué)" #: ../../calendar_tools.c:222 msgid "(completed)" msgstr "(achevé)" #: ../../calendar_tools.c:225 msgid "(in process)" msgstr "(en cours)" #: ../../calendar_tools.c:228 msgid "(none)" msgstr "(aucun)" #: ../../notes.c:343 msgid "Click on any note to edit it." msgstr "Cliquer sur une note pour la modifier." #: ../../vcard_edit.c:175 ../../vcard_edit.c:178 msgid "(no name)" msgstr "(pas de nom)" #: ../../vcard_edit.c:443 msgid " (work)" msgstr " (travail)" #: ../../vcard_edit.c:445 msgid " (home)" msgstr " (accueil)" #: ../../vcard_edit.c:447 msgid " (cell)" msgstr " (portable)" #: ../../vcard_edit.c:458 ../../vcard_edit.c:1120 msgid "Address:" msgstr "Adresse :" #: ../../vcard_edit.c:526 msgid "Telephone:" msgstr "Téléphone :" #: ../../vcard_edit.c:531 msgid "E-mail:" msgstr "Courriel :" #: ../../vcard_edit.c:779 msgid "This address book is empty." msgstr "Le carnet d'adresses est vide." #: ../../vcard_edit.c:793 msgid "An internal error has occurred." msgstr "Une erreur interne est apparue." #: ../../vcard_edit.c:944 msgid "Error" msgstr "Erreur" #: ../../vcard_edit.c:1048 msgid "Edit contact information" msgstr "Modifier l'information du contact" #: ../../vcard_edit.c:1068 msgid "Prefix" msgstr "Civilité" #: ../../vcard_edit.c:1068 msgid "First Name" msgstr "Prénom" #: ../../vcard_edit.c:1068 msgid "Middle Name" msgstr "Deuxième prénom" #: ../../vcard_edit.c:1068 msgid "Last Name" msgstr "Nom" #: ../../vcard_edit.c:1068 msgid "Suffix" msgstr "Suffixe" #: ../../vcard_edit.c:1089 msgid "Display name:" msgstr "Nom affiché :" #: ../../vcard_edit.c:1096 msgid "Title:" msgstr "Titre :" #: ../../vcard_edit.c:1103 msgid "Organization:" msgstr "Organisation :" #: ../../vcard_edit.c:1114 msgid "PO box:" msgstr "Boîte postale :" #: ../../vcard_edit.c:1130 msgid "City:" msgstr "Ville :" #: ../../vcard_edit.c:1136 msgid "State:" msgstr "État :" #: ../../vcard_edit.c:1142 msgid "ZIP code:" msgstr "Code postal :" #: ../../vcard_edit.c:1148 msgid "Country:" msgstr "Pays :" #: ../../vcard_edit.c:1158 msgid "Home telephone:" msgstr "Téléphone personnel :" #: ../../vcard_edit.c:1164 msgid "Work telephone:" msgstr "Téléphone professionnel :" #: ../../vcard_edit.c:1170 msgid "Mobile telephone:" msgstr "Téléphone personnel :" #: ../../vcard_edit.c:1176 msgid "Fax number:" msgstr "Numéro de fax:" #: ../../vcard_edit.c:1187 msgid "Primary Internet e-mail address" msgstr "Adresse de courriel principale" #: ../../vcard_edit.c:1194 msgid "Internet e-mail aliases" msgstr "Alias d'adresses de courriel" #: ../../vcard_edit.c:1215 ../../sysmsgs.c:67 msgid "Save changes" msgstr "Enregistrer les modifications" #: ../../vcard_edit.c:1261 msgid "Unable to enter the room to save your message" msgstr "Impossible d'entrer dans le salon pour sauver votre message" #: ../../vcard_edit.c:1265 msgid "Aborting." msgstr "Abandon." #: ../../vcard_edit.c:1297 ../../vcard_edit.c:1341 ../../auth.c:367 #: ../../auth.c:397 msgid "An error has occurred." msgstr "Une erreur est apparue." #: ../../vcard_edit.c:1399 msgid "Could Not decode vcard photo\n" msgstr "Impossible de décoder la photo de la vcard\n" #: ../../preferences.c:880 msgid "Cancelled. No settings were changed." msgstr "Annulé. Aucun réglage n'a été modifié." #: ../../preferences.c:1092 msgid "Make this my start page" msgstr "En faire ma page d'accueil" #: ../../preferences.c:1130 msgid "This isn't allowed to become the start page." msgstr "Ceci ne peut pas devenir votre page d'accueil" #: ../../preferences.c:1132 msgid "You no longer have a start page selected." msgstr "Vous n'avez pas encore choisi de page d'accueil." #: ../../preferences.c:1182 msgid "Prefered startpage" msgstr "page d'accueil par défaut" #: ../../calendar.c:76 msgid "Meeting invitation" msgstr "Invitation à une réunion" #: ../../calendar.c:79 msgid "Attendee's reply to your invitation" msgstr "Réponse(s) à votre invitation" #: ../../calendar.c:82 msgid "Published event" msgstr "Événement publié" #: ../../calendar.c:85 msgid "This is an unknown type of calendar item." msgstr "Type d'événement inconnu." #: ../../calendar.c:107 ../../calendar_view.c:306 ../../calendar_view.c:964 #: ../../calendar_view.c:1008 ../../calendar_view.c:1089 msgid "Location:" msgstr "Lieu :" #: ../../calendar.c:132 ../../calendar_view.c:351 ../../calendar_view.c:970 msgid "Date:" msgstr "Date :" #: ../../calendar.c:139 ../../calendar_view.c:373 ../../calendar_view.c:1013 #: ../../calendar_view.c:1099 msgid "Starting date/time:" msgstr "Date et horaire de début :" #: ../../calendar.c:150 ../../calendar_view.c:376 ../../calendar_view.c:1015 #: ../../calendar_view.c:1101 msgid "Ending date/time:" msgstr "Date et horaire de fin :" #: ../../calendar.c:168 ../../event.c:90 msgid "Recurrence" msgstr "Récurrence" #: ../../calendar.c:169 ../../event.c:505 msgid "This is a recurring event" msgstr "C'est un événement récurrent" #: ../../calendar.c:178 msgid "Attendee:" msgstr "Participant-e-s :" #: ../../calendar.c:218 #, c-format msgid "This is an update of '%s' which is already in your calendar." msgstr "Ceci est une mise à jour de '%s' déjà présent dans votre agenda." #: ../../calendar.c:222 #, c-format msgid "" "This event would conflict with '%s' which is already in your calendar." msgstr "" "Cet événement entre en conflit avec '%s' qui est déjà dans votre agenda." #: ../../calendar.c:227 msgid "Update:" msgstr "Mise à jour :" #: ../../calendar.c:228 msgid "CONFLICT:" msgstr "CONFLIT :" #: ../../calendar.c:251 msgid "How would you like to respond to this invitation?" msgstr "Comment souhaitez-vous répondre à cette invitation ?" #: ../../calendar.c:252 msgid "Accept" msgstr "Accepter" #: ../../calendar.c:253 msgid "Tentative" msgstr "Peut-être" #: ../../calendar.c:254 msgid "Decline" msgstr "Décliner" #: ../../calendar.c:271 msgid "Click Update to accept this reply and update your calendar." msgstr "" "Cliquez sur Mise à jour pour accepter cette réponse et actualiser " "votre agenda." #: ../../calendar.c:272 msgid "Update" msgstr "Mise à jour" #: ../../calendar.c:273 msgid "Ignore" msgstr "Ignorer" #: ../../calendar.c:295 msgid "There was an error parsing this calendar item." msgstr "Il y a une erreur dans l'analyse des données de cet événement." #: ../../calendar.c:328 msgid "" "You have accepted this meeting invitation. It has been entered into your " "calendar." msgstr "Vous avez accepté cette invitation. Votre agenda a été actualisé." #: ../../calendar.c:332 msgid "" "You have tentatively accepted this meeting invitation. It has been " "'pencilled in' to your calendar." msgstr "" "Vous avez indiqué que vous accepteriez 'Peut-être' cette invitation, elle " "est notée provisoirement dans votre agenda." #: ../../calendar.c:336 msgid "" "You have declined this meeting invitation. It has not been entered " "into your calendar." msgstr "" "Vous avez décliné cette invitation. Votre agenda n'a pas été modifié." #: ../../calendar.c:341 msgid "A reply has been sent to the meeting organizer." msgstr "Une réponse a été envoyée à l'organisateur de la réunion." #. / Translators: RSVP aka Répondez s'il-vous-plaît Is the term #. / that the recipient of an ical-invitation should please #. / answer this request. #: ../../calendar.c:376 msgid "Your calendar has been updated to reflect this RSVP." msgstr "Votre agenda a été mis à jour pour tenir compte de cette réponse." #: ../../calendar.c:378 msgid "" "You have chosen to ignore this RSVP. Your calendar has not been " "updated." msgstr "" "Vous avez choisi d'ignorer cette réponse. Votre agenda n'a pas été " "modifié." #: ../../calendar.c:932 msgid "Calendar day view begins at:" msgstr "Heure de début de journée :" #: ../../calendar.c:933 msgid "Calendar day view ends at:" msgstr "Heure de fin de journée :" #: ../../calendar.c:934 msgid "Week starts on:" msgstr "La semaine démarre le:" #: ../../paging.c:35 msgid "Send instant message" msgstr "Envoyer un message instantané" #: ../../paging.c:43 msgid "Send an instant message to: " msgstr "Envoyer un message instantané à : " #: ../../paging.c:57 msgid "Enter message text:" msgstr "Entrez le texte du message :" #: ../../paging.c:65 ../../static/t/edit_message.html:109 msgid "Send message" msgstr "Envoyer le message" #: ../../paging.c:84 msgid "Message was not sent." msgstr "Le message n'a pas été envoyé." #: ../../paging.c:95 msgid "Message has been sent to " msgstr "Le message a été envoyé à " #: ../../iconbar.c:328 msgid "Iconbar Setting" msgstr "Options de la barre d'icônes" #. #. * Set to 'unknown' right from the beginning. Unless we learn #. * something else, that's what we'll go with. #. #: ../../availability.c:148 msgid "availability unknown" msgstr "disponibilité inconnue" #: ../../availability.c:169 msgid "free" msgstr "libre" #: ../../availability.c:179 msgid "BUSY" msgstr "OCCUPÉ(E)" #: ../../serv_func.c:193 msgid "" "This server is already serving its maximum number of users and cannot accept " "any additional logins at this time. Please try again later or contact your " "system administrator." msgstr "" "Le nombre maximum d'usagers simultanés sur ce serveur est atteint, celui-ci " "ne peut plus accepter de connexions supplémentaires. SVP essayez plus tard " "ou contactez l'administrateur du système." #: ../../serv_func.c:198 ../../serv_func.c:227 msgid "Received unexpected answer from Citadel server; bailing out." msgstr "" "Nous avons reçu une réponse inatendue du serveur Citadel; interruption du " "programme." #: ../../serv_func.c:236 #, c-format msgid "" "You are connected to a Citadel server running Citadel %d.%02d. \n" "In order to run this version of WebCit you must also have Citadel %d.%02d or " "newer.\n" "\n" "\n" msgstr "" "Vous êtes connecté à un serveur qui fonctionne avec Citadel %d.%02d. \n" "Pour permettre à cette version de WebCit de fonctionner, vous devez utiliser " "Citadel %d.%02d ou une version plus récente.\n" "\n" "\n" #: ../../event.c:70 msgid "seconds" msgstr "secondes" #: ../../event.c:71 msgid "minutes" msgstr "minutes" #: ../../event.c:72 msgid "hours" msgstr "heures" #: ../../event.c:73 msgid "days" msgstr "jours" #: ../../event.c:74 msgid "weeks" msgstr "semaines" #: ../../event.c:75 msgid "months" msgstr "mois" #: ../../event.c:76 msgid "years" msgstr "années" #: ../../event.c:77 msgid "never" msgstr "jamais" #: ../../event.c:81 msgid "first" msgstr "Prénom" #: ../../event.c:82 msgid "second" msgstr "Envoyer" #: ../../event.c:83 msgid "third" msgstr "troisième" #: ../../event.c:84 msgid "fourth" msgstr "quatrième" #: ../../event.c:85 msgid "fifth" msgstr "cinquième" #: ../../event.c:88 msgid "Event" msgstr "Événement" #: ../../event.c:89 ../../event.c:437 ../../event.c:449 msgid "Attendees" msgstr "invités" #: ../../event.c:167 msgid "Add or edit an event" msgstr "Ajouter ou modifier un événement" #: ../../event.c:206 ../../static/t/iconbar.html:13 #: ../../static/t/iconbar/edit.html:29 msgid "Summary" msgstr "Résumé" #: ../../event.c:217 msgid "Location" msgstr "Lieu" #: ../../event.c:228 ../../calendar_view.c:760 msgid "Start" msgstr "Début" #: ../../event.c:271 ../../calendar_view.c:957 ../../calendar_view.c:986 msgid "All day event" msgstr "journée entière" #: ../../event.c:277 ../../calendar_view.c:761 msgid "End" msgstr "Fin" #: ../../event.c:327 ../../static/t/iconbar.html:34 #: ../../static/t/iconbar/edit.html:49 msgid "Notes" msgstr "Notes" #: ../../event.c:369 msgid "Organizer" msgstr "Organisateur" #: ../../event.c:374 msgid "(you are the organizer)" msgstr "(vous êtes l'organisateur)" #: ../../event.c:392 msgid "Show time as:" msgstr "Disponibilité" #: ../../event.c:415 msgid "Free" msgstr "Libre" #: ../../event.c:423 msgid "Busy" msgstr "occupé-e" #: ../../event.c:440 msgid "(One per line)" msgstr "(un par ligne)" #: ../../event.c:450 ../../static/t/edit_message.html:143 #: ../../static/t/iconbar.html:29 ../../static/t/iconbar/edit.html:42 msgid "Contacts" msgstr "Contacts" #: ../../event.c:513 msgid "Recurrence rule" msgstr "Règle de récurrence" #: ../../event.c:517 msgid "Repeats every" msgstr "Répéter chaque" #. begin 'weekday_selector' div #: ../../event.c:535 msgid "on these weekdays:" msgstr "ces jours de la semaine:" #: ../../event.c:593 #, c-format msgid "on day %s%d%s of the month" msgstr "le jour %s%d%s du mois" #: ../../event.c:602 ../../event.c:664 msgid "on the " msgstr "sur le " #: ../../event.c:626 msgid "of the month" msgstr "du mois" #: ../../event.c:655 msgid "every " msgstr "chaque " #: ../../event.c:656 msgid "year on this date" msgstr "année de cette date" #: ../../event.c:688 ../../static/t/msg_listselector_bottom.html:7 #: ../../static/t/msg_listselector_top.html:7 msgid "of" msgstr "de" #: ../../event.c:712 msgid "Recurrence range" msgstr "plage de récurrence" #: ../../event.c:720 msgid "No ending date" msgstr "Pas de date de fin" #: ../../event.c:727 msgid "Repeat this event" msgstr "Répéter cet événement" #: ../../event.c:730 msgid "times" msgstr "heures" #: ../../event.c:738 msgid "Repeat this event until " msgstr "Répéter cette évènement jusqu'à " #: ../../event.c:766 msgid "Check attendee availability" msgstr "Vérifiez la disponibilité des invités" #: ../../event.c:858 ../../calendar_view.c:272 ../../calendar_view.c:468 #: ../../calendar_view.c:937 msgid "Untitled Event" msgstr "Événement sans titre" #: ../../sysmsgs.c:52 #, c-format msgid "Edit %s" msgstr "Éditer %s" #: ../../sysmsgs.c:55 #, c-format msgid "" "Enter %s below. Text is formatted to the reader's browser. A newline is " "forced by preceding the next line by a blank." msgstr "" "Écrivez %s ci-dessous. Le texte est composé à la largeur de l'écran du " "lecteur. Pour modifier ce formatage, indentez une ligne d'au moins un espace." #: ../../sysmsgs.c:89 #, c-format msgid "Cancelled. %s was not saved." msgstr "Abandon. %s n'a pas été enregistré." #: ../../sysmsgs.c:109 msgid " has been saved." msgstr " à été sauvegardé" #: ../../sysmsgs.c:116 ../../sysmsgs.c:117 msgid "Room info" msgstr "Informations sur le salon" #: ../../sysmsgs.c:122 ../../sysmsgs.c:124 msgid "Your bio" msgstr "Votre biographie" #: ../../calendar_view.c:297 ../../calendar_view.c:958 #: ../../calendar_view.c:1002 ../../calendar_view.c:1083 #: ../../static/t/sieve/display_one.html:20 msgid "From" msgstr "De" #: ../../calendar_view.c:355 ../../calendar_view.c:974 msgid "Starting date:" msgstr "date de début:" #: ../../calendar_view.c:361 ../../calendar_view.c:976 msgid "Ending date:" msgstr "date de fin:" #: ../../calendar_view.c:369 ../../calendar_view.c:1095 msgid "Date/time:" msgstr "Date/heure" #: ../../calendar_view.c:386 ../../calendar_view.c:980 #: ../../calendar_view.c:1018 ../../calendar_view.c:1105 #: ../../static/t/room/edit/tab_share.html:32 msgid "Notes:" msgstr "Notes :" #: ../../calendar_view.c:585 ../../calendar_view.c:721 msgid "previous" msgstr "précédent" #: ../../calendar_view.c:597 ../../calendar_view.c:733 #: ../../calendar_view.c:1308 msgid "next" msgstr "suivant" #: ../../calendar_view.c:756 msgid "Week" msgstr "Semaine" #: ../../calendar_view.c:758 msgid "Hours" msgstr "Heures" #: ../../calendar_view.c:759 ../../static/t/sieve/display_one.html:22 #: ../../static/t/msg_listview.html:9 msgid "Subject" msgstr "Objet" #: ../../calendar_view.c:1001 ../../calendar_view.c:1024 msgid "Ongoing event" msgstr "Évènement en cours" #: ../../messages.c:70 msgid "ERROR:" msgstr "ERREUR :" #: ../../messages.c:88 msgid "Empty message" msgstr "Message vide" #: ../../messages.c:1010 msgid "Cancelled. Message was not posted." msgstr "Abandon. Message non envoyé." #: ../../messages.c:1013 msgid "Automatically cancelled because you have already saved this message." msgstr "Abandon automatique car vous avez déjà enregistré ce message." #: ../../messages.c:1037 msgid "Saved to Drafts failed: " msgstr "Sauvegarde dans le dossier brouillon à échoué " #: ../../messages.c:1102 msgid "Refusing to post empty message.\n" msgstr "L'envoit de message vide à été réfusé\n" #: ../../messages.c:1128 msgid "Message has been saved to Drafts.\n" msgstr "Le message à été sauvé dans le dossier brouillon\n" #: ../../messages.c:1137 msgid "Message has been sent.\n" msgstr "Message envoyé.\n" #: ../../messages.c:1140 msgid "Message has been posted.\n" msgstr "Message posté.\n" #: ../../messages.c:1679 msgid "The message was not moved." msgstr "Ce message n'a pas été déplacé." #: ../../messages.c:1719 #, c-format msgid "An error occurred while retrieving this part: %s/%s\n" msgstr "Une erreur est apparue en récupérant cette partie : %s/%s\n" #: ../../messages.c:1796 #, c-format msgid "An error occurred while retrieving this part: %s\n" msgstr "Une erreur est apparue en récupérant cette partie : %s\n" #: ../../messages.c:1956 msgid "Attach signature to email messages?" msgstr "Attacher une signature aux courriels ?" #: ../../messages.c:1959 msgid "Use this signature:" msgstr "Utiliser cette signature :" #: ../../messages.c:1961 msgid "Default character set for email headers:" msgstr "Jeu de caractères par défaut pour les en-têtes des courriels :" #: ../../messages.c:1964 msgid "Preferred email address" msgstr "Adresse de courriel préférée" #: ../../messages.c:1966 msgid "Preferred display name for email messages" msgstr "Intitulé d'affichage des courriels" #: ../../messages.c:1970 msgid "Preferred display name for bulletin board posts" msgstr "Nom à utiliser dans le panneau d'affichage" #: ../../messages.c:1973 msgid "Mailbox view mode" msgstr "Mode d'affichage" #: ../../inetconf.c:110 ../../inetconf.c:119 ../../inetconf.c:133 #: ../../inetconf.c:159 ../../netconf.c:156 ../../netconf.c:183 #: ../../netconf.c:191 ../../netconf.c:239 ../../netconf.c:247 msgid "Invalid Parameter" msgstr "Paramètre invalide" #: ../../inetconf.c:126 msgid " has been deleted." msgstr " à été supprimé" #. added status message #: ../../inetconf.c:144 msgid " added." msgstr " ajouté" #: ../../who.c:154 msgid "Edit your session display" msgstr "Modifier les propriétés d'affichage de votre session" #: ../../who.c:158 msgid "" "This screen allows you to change the way your session appears in the 'Who is " "online' listing. To turn off any 'fake' name you've previously set, simply " "click the appropriate 'change' button without typing anything in the " "corresponding box. " msgstr "" "Cet écran vous permet de changer la façon dont votre session apparaît dans " "la liste des usagers connectés. Pour éviter qu'un 'pseudonyme' que vous " "auriez préalablement indiqué ne soit encore visible, cliquez simplement sur " "le bouton 'changer' sans rien indiquer dans la boîte de saisie " "correspondante. " #: ../../who.c:171 msgid "Room name:" msgstr "Nom du salon :" #: ../../who.c:176 msgid "Change room name" msgstr "Changer le nom du salon :" #: ../../who.c:180 msgid "Host name:" msgstr "Nom de la machine hôte :" #: ../../who.c:185 msgid "Change host name" msgstr "Changer le nom de la machine hôte" #: ../../who.c:190 ../../static/t/aide/edituser/detailview.html:20 #: ../../static/t/openid_manual_create.html:9 #: ../../static/t/get_logged_in.html:57 ../../static/t/get_logged_in.html:72 msgid "User name:" msgstr "Identifiant :" #: ../../who.c:195 msgid "Change user name" msgstr "Changer le nom de l'usager" #: ../../siteconfig.c:46 ../../siteconfig.c:64 ../../roomlist.c:44 #: ../../roomlist.c:394 ../../static/t/room/edit/tab_expire.html:72 #: ../../static/t/room/edit/tab_config.html:149 #: ../../static/t/room/edit/tab_access.html:42 msgid "Higher access is required to access this function." msgstr "Un niveau d'accès supérieur est requis pour utiliser cette fonction" #: ../../siteconfig.c:256 msgid "" "WARNING: Failed to parse Server Config; do you run a to new citserver?" msgstr "" "ATTENTION: Echec lors de la lecture du la Configuration du Serveur; s'agît-" "il d'un nouveau citserver?" #: ../../siteconfig.c:319 msgid "Your system configuration has been updated." msgstr "La configuration de votre système a été mise à jour" #: ../../wiki.c:69 ../../wiki.c:162 ../../wiki.c:282 #, c-format msgid "There is no room called '%s'." msgstr "Le salon '%s' n'existe pas." #: ../../wiki.c:76 #, c-format msgid "'%s' is not a Wiki room." msgstr "'%s' n'est pas un salon du type wiki." #: ../../wiki.c:110 #, c-format msgid "There is no page called '%s' here." msgstr "Il n'y a pas ici de page nommée '%s'." #: ../../wiki.c:112 msgid "" "Select the 'Edit this page' link in the room banner if you would like to " "create this page." msgstr "" "Pour créer cette page, sélectionnez le lien 'Éditer cette page ' dans la " "bannière du salon." #: ../../wiki.c:181 ../../static/t/msg_listview.html:11 msgid "Date" msgstr "Date" #: ../../wiki.c:182 msgid "Author" msgstr "Auteur" #: ../../wiki.c:209 ../../wiki.c:218 msgid "(show)" msgstr "(montrer)" #: ../../wiki.c:211 ../../static/t/navbar.html:145 msgid "Current version" msgstr "Version actuelle" #: ../../wiki.c:223 msgid "(revert)" msgstr "(annuler)" #: ../../wiki.c:300 msgid "Page title" msgstr "Titre de la page" #: ../../webcit.c:316 msgid "Authorization Required" msgstr "Autorisation requise" #: ../../webcit.c:324 #, c-format msgid "" "The resource you requested requires a valid username and password. You could " "not be logged in: %s\n" msgstr "" "La ressource que vous avez demandée requiert un nom d'usager et un mot de " "passe valides. Vous n'avez pas été connecté à %s\n" #: ../../webcit.c:647 ../../auth.c:526 msgid "" "This program was unable to connect or stay connected to the Citadel server. " "Please report this problem to your system administrator." msgstr "" "Ce programme n'a pas pu se connecter ou rester connecté au serveur Citadel. " "SVP informez l'administrateur du système de ce problème." #: ../../webcit.c:654 ../../auth.c:532 msgid "Read More..." msgstr "En lire plus..." #: ../../smtpqueue.c:134 ../../static/t/aide/ignetconf/section.html:5 #: ../../static/t/view_mailq/message.html:2 msgid "(Delete)" msgstr "(Supprimer)" #: ../../smtpqueue.c:334 msgid "First Attempt pending" msgstr "Première tentative en attente" #: ../../roomlist.c:99 msgid "My Folders" msgstr "Mes répetoires" #: ../../downloads.c:289 #, c-format msgid "An error occurred while retrieving this file: %s\n" msgstr "Une erreur est apparue en récupérant ce fichier : %s\n" #: ../../roomtokens.c:572 msgid "file" msgstr "fichier" #: ../../roomtokens.c:574 msgid "files" msgstr "fichiers" #: ../../summary.c:128 msgid "(None)" msgstr "(Rien)" #: ../../summary.c:184 msgid "(Nothing)" msgstr "(Vide)" #: ../../msg_renderers.c:579 ../../static/t/who/bio.html:15 msgid "edit" msgstr "modifier" #: ../../msg_renderers.c:1119 msgid "I don't know how to display " msgstr "Je ne sais pas comment afficher " #: ../../msg_renderers.c:1353 msgid "(no subject)" msgstr "(pas d'objet)" #: ../../addressbook_popup.c:186 msgid "Add" msgstr "Ajouter" #. an erased user #: ../../auth.c:30 ../../static/t/aide/edituser/detailview.html:43 #: ../../static/t/aide/siteconfig/tab_access.html:40 #: ../../static/t/aide/siteconfig/tab_access.html:51 msgid "Deleted" msgstr "Supprimé" #. a new user #: ../../auth.c:33 ../../static/t/aide/edituser/detailview.html:44 #: ../../static/t/aide/siteconfig/tab_access.html:41 #: ../../static/t/aide/siteconfig/tab_access.html:52 #: ../../static/t/get_logged_in.html:79 msgid "New User" msgstr "Nouvel usager" #. a trouble maker #: ../../auth.c:36 ../../static/t/aide/edituser/detailview.html:45 #: ../../static/t/aide/siteconfig/tab_access.html:42 #: ../../static/t/aide/siteconfig/tab_access.html:53 msgid "Problem User" msgstr "Usager à problème" #. user with normal privileges #: ../../auth.c:39 ../../static/t/aide/edituser/detailview.html:46 #: ../../static/t/aide/siteconfig/tab_access.html:43 #: ../../static/t/aide/siteconfig/tab_access.html:54 msgid "Local User" msgstr "Usager local" #. a user that may access network resources #: ../../auth.c:42 ../../static/t/aide/edituser/detailview.html:47 #: ../../static/t/aide/siteconfig/tab_access.html:44 #: ../../static/t/aide/siteconfig/tab_access.html:55 msgid "Network User" msgstr "Usager en réseau" #. a moderator #: ../../auth.c:45 ../../static/t/aide/edituser/detailview.html:48 #: ../../static/t/aide/siteconfig/tab_access.html:45 #: ../../static/t/aide/siteconfig/tab_access.html:56 msgid "Preferred User" msgstr "Usager privilégié" #. chief #: ../../auth.c:48 ../../static/t/aide/edituser/detailview.html:49 #: ../../static/t/aide/siteconfig/tab_access.html:46 #: ../../static/t/aide/siteconfig/tab_access.html:57 msgid "Admin" msgstr "Administrateur" #: ../../auth.c:513 ../../static/t/iconbar.html:80 #: ../../static/t/confirmlogoff.html:3 #: ../../static/t/menu/basic_commands.html:19 msgid "Log off" msgstr "Déconnexion" #: ../../auth.c:537 msgid "Log in again" msgstr "Se connecter à nouveau" #: ../../auth.c:585 ../../static/t/aide/usermanagement.html:3 msgid "Validate new users" msgstr "Valider les nouveaux usagers" #: ../../auth.c:605 msgid "No users require validation at this time." msgstr "Aucun usager ne requière de validation actuellement." #: ../../auth.c:655 msgid "very weak" msgstr "très faible" #: ../../auth.c:658 msgid "weak" msgstr "faible" #: ../../auth.c:661 msgid "ok" msgstr "ok" #: ../../auth.c:665 msgid "strong" msgstr "strong" #: ../../auth.c:683 #, c-format msgid "Current access level: %d (%s)\n" msgstr "Niveau d'accès actuel : %d (%s)\n" #: ../../auth.c:691 msgid "Select access level for this user:" msgstr "Sélection du niveau d'accès de cet usager :" #: ../../auth.c:776 ../../static/t/menu/your_info.html:4 msgid "Change your password" msgstr "Changez votre mot de passe" #: ../../auth.c:800 msgid "Enter new password:" msgstr "Entrez un nouveau mot de passe :" #: ../../auth.c:804 msgid "Enter it again to confirm:" msgstr "Retapez le pour confirmer :" #: ../../auth.c:810 msgid "Change password" msgstr "Changer le mot de passe" #: ../../auth.c:830 msgid "Cancelled. Password was not changed." msgstr "Abandon. Le mot de passe n'a pas été changé." #: ../../auth.c:839 msgid "They don't match. Password was not changed." msgstr "" "Les deux saisies sont différentes. Le mot de passe n'a pas été modifié." #: ../../auth.c:845 msgid "Blank passwords are not allowed." msgstr "Les mots de passe vides ne sont pas autorisés." #: ../../openid.c:34 msgid "Manage Account/OpenID Associations" msgstr "Gérer les associations comptes / OpenID" #: ../../openid.c:52 msgid "Do you really want to delete this OpenID?" msgstr "Voulez vous vraiment supprimer ce compte OpenID?" #: ../../openid.c:53 msgid "(delete)" msgstr "(Supprimer)" #: ../../openid.c:61 msgid "Add an OpenID: " msgstr "Ajouter un compte OpenID " #: ../../openid.c:64 msgid "Attach" msgstr "Attacher" #: ../../openid.c:68 #, c-format msgid "%s does not permit authentication via OpenID." msgstr "%s n'autorise pas l'authentification via OpenID." #: ../../html2html.c:136 #, c-format msgid "realloc() error! couldn't get %d bytes: %s" msgstr "realloc() error! couldn't get %d bytes: %s" #: ../../static/t/viewomatic.html:4 msgid "View as:" msgstr "Voir comme" #: ../../static/t/sieve/list.html:32 ../../static/t/sieve/none.html:4 #: ../../static/t/menu/your_info.html:7 msgid "View/edit server-side mail filters" msgstr "Éditer les filtres de courriels" #: ../../static/t/sieve/list.html:41 msgid "When new mail arrives: " msgstr "Quand un nouveau mail arrive : " #: ../../static/t/sieve/list.html:43 msgid "Leave it in my inbox without filtering" msgstr "Le laisser dans ma boîte aux lettres sans le filtrer" #: ../../static/t/sieve/list.html:44 msgid "Filter it according to rules selected below" msgstr "Le filtrer en lui appliquant les règles ci-dessous" #: ../../static/t/sieve/list.html:45 msgid "Filter it through a manually edited script (advanced users only)" msgstr "" "Le filtrer au travers d'un script créé manuellement (pour les usagers " "avancés seulement)" #: ../../static/t/sieve/list.html:52 msgid "Your incoming mail will not be filtered through any scripts." msgstr "Vos courriels ne seront filtrés par aucun scripts." #: ../../static/t/sieve/list.html:64 msgid "Add rule" msgstr "Ajouter une règle" #: ../../static/t/sieve/list.html:71 msgid "The currently active script is: " msgstr "le script actif est : " #: ../../static/t/sieve/list.html:76 ../../static/t/sieve/add.html:3 msgid "Add or delete scripts" msgstr "Éditer ou supprimer des usagers." #: ../../static/t/sieve/display_one.html:16 msgid "If" msgstr "Si" #: ../../static/t/sieve/display_one.html:21 msgid "To or Cc" msgstr "À ou Copie" #: ../../static/t/sieve/display_one.html:23 msgid "Reply-to" msgstr "Répondre à" #: ../../static/t/sieve/display_one.html:24 #: ../../static/t/msg_listview.html:10 #: ../../static/t/view_mailq/header.html:27 msgid "Sender" msgstr "Expéditeur" #: ../../static/t/sieve/display_one.html:25 msgid "Resent-From" msgstr "Resent-From" #: ../../static/t/sieve/display_one.html:26 msgid "Resent-To" msgstr "Resent-To" #: ../../static/t/sieve/display_one.html:27 msgid "Envelope From" msgstr "Enveloppe De" #: ../../static/t/sieve/display_one.html:28 msgid "Envelope To" msgstr "Enveloppe À" #: ../../static/t/sieve/display_one.html:29 msgid "X-Mailer" msgstr "X-Mailer" #: ../../static/t/sieve/display_one.html:30 msgid "X-Spam-Flag" msgstr "X-Spam-Flag" #: ../../static/t/sieve/display_one.html:31 msgid "X-Spam-Status" msgstr "X-Spam-Status" #: ../../static/t/sieve/display_one.html:32 msgid "List-ID" msgstr "List-ID" #: ../../static/t/sieve/display_one.html:33 msgid "Message size" msgstr "Taille du message" #: ../../static/t/sieve/display_one.html:34 #: ../../static/t/select_messageindex_all.html:1 msgid "All" msgstr "Tous" #: ../../static/t/sieve/display_one.html:41 msgid "contains" msgstr "contient" #: ../../static/t/sieve/display_one.html:42 msgid "does not contain" msgstr "ne contient pas" #: ../../static/t/sieve/display_one.html:43 msgid "is" msgstr "est" #: ../../static/t/sieve/display_one.html:44 msgid "is not" msgstr "n'est pas" #: ../../static/t/sieve/display_one.html:45 msgid "matches" msgstr "correspond à" #: ../../static/t/sieve/display_one.html:46 msgid "does not match" msgstr "ne correspond pas à" #: ../../static/t/sieve/display_one.html:52 msgid "(All messages)" msgstr "(Tous les messages)" #: ../../static/t/sieve/display_one.html:56 msgid "is larger than" msgstr "est plus grand que" #: ../../static/t/sieve/display_one.html:57 msgid "is smaller than" msgstr "est plus petit que" #: ../../static/t/sieve/display_one.html:59 msgid "bytes" msgstr "octets" #: ../../static/t/sieve/display_one.html:65 msgid "Keep" msgstr "Garder" #: ../../static/t/sieve/display_one.html:66 msgid "Discard silently" msgstr "Supprimer sans avis" #: ../../static/t/sieve/display_one.html:67 msgid "Reject" msgstr "Rejeter" #: ../../static/t/sieve/display_one.html:68 msgid "Move message to" msgstr "Déplacer ce message vers" #: ../../static/t/sieve/display_one.html:69 msgid "Forward to" msgstr "Faire suivre" #: ../../static/t/sieve/display_one.html:70 msgid "Vacation" msgstr "Absence" #: ../../static/t/sieve/display_one.html:82 msgid "Message:" msgstr "Message:" #: ../../static/t/sieve/display_one.html:90 msgid "and then" msgstr "et ensuite" #: ../../static/t/sieve/display_one.html:93 msgid "continue processing" msgstr "(en cours)" #: ../../static/t/sieve/display_one.html:94 msgid "stop" msgstr "stop" #: ../../static/t/sieve/none.html:9 msgid "" "This installation of Citadel was built without support for server-side mail " "filtering.
    Please contact your system administrator if you require this " "feature.
    " msgstr "" "Cette installation de Citadel a été construite sans support du filtrage des " "mail côté serveur.
    SVP contactez votre administrateur si vous avez besoin " "de cette fonction.
    " #: ../../static/t/sieve/add.html:9 msgid "Add a new script" msgstr "Ajouter un nouveau nœud" #: ../../static/t/sieve/add.html:10 msgid "" "To create a new script, enter the desired script name in the box below and " "click 'Create'." msgstr "" "Pour créer un nouveau script, entrez un nom dans le champ de saisie ci-après " "et cliquez sur 'Créer'." #: ../../static/t/sieve/add.html:14 msgid "Script name: " msgstr "Nom du script : " #: ../../static/t/sieve/add.html:18 msgid "Edit scripts" msgstr "Éditer les scripts" #: ../../static/t/sieve/add.html:20 msgid "Return to the script editing screen" msgstr "Revenir au formulaire d'édition du script" #: ../../static/t/sieve/add.html:23 msgid "Delete scripts" msgstr "Supprimer des scripts" #: ../../static/t/sieve/add.html:24 msgid "" "To delete an existing script, select the script name from the list and click " "'Delete'." msgstr "" "Pour détruire un script existant, sélectionnez son nom dans la liste puis " "cliquez 'Supprimer ce script'." #: ../../static/t/msg/confirm_move.html:4 msgid "Confirm move of message" msgstr "Confirmer le déplacement de ce message" #: ../../static/t/msg/confirm_move.html:12 msgid "Move this message to:" msgstr "Déplacer ce message vers :" #: ../../static/t/login.html:5 msgid "powered by" msgstr "propulsé par" #: ../../static/t/login.html:15 ../../static/t/iconbar.html:88 #: ../../static/t/get_logged_in.html:64 ../../static/t/get_logged_in.html:88 #: ../../static/t/get_logged_in.html:93 ../../static/t/get_logged_in.html:98 #: ../../static/t/get_logged_in.html:107 msgid "Log in" msgstr "Connexion" #: ../../static/t/trailing.html:14 msgid "" "WARNING: You have JavaScript disabled in your web browser. Many functions " "of this system will not work properly." msgstr "" "ATTENTION: JavaScript est désactivé dans votre navigateur. Plusieurs " "fonctionnalités du système ne seront pas disponibles." #: ../../static/t/view_submessage.html:4 #: ../../static/t/view_message/replyquote.html:3 #: ../../static/t/view_message/replyquote.html:7 #: ../../static/t/view_message/print.html:8 ../../static/t/view_message.html:7 msgid "from " msgstr "de " #: ../../static/t/searchomatic.html:4 msgid "Search: " msgstr "Recherche " #: ../../static/t/listsub/display.html:16 msgid "You are subscribing " msgstr "Vous vous inscrivez " #: ../../static/t/listsub/display.html:17 msgid " to the " msgstr " à " #: ../../static/t/listsub/display.html:18 msgid " mailing list." msgstr " liste de distribution" #: ../../static/t/listsub/display.html:19 msgid "" "The listserver has sent you an e-mail with one additional Web link for you " "to click on to confirm your subscription." msgstr "" "Le listserver vous a envoyé un email avec un lien Internet supplémentaire " "que vous pourrez cliquer pour confirmer votre inscription." #: ../../static/t/listsub/display.html:20 msgid "" "This extra step is for your protection, as it prevents others from being " "able to subscribe you to lists without your consent." msgstr "" "Cette étape supplémentaire est là pour votre protection, dans la mesure où " "elle ne permet pas à d'autres de vous inscrire à des listes sans votre " "consentement." #: ../../static/t/listsub/display.html:22 msgid "" "Please click on the link which is being e-mailed to you and your " "subscription will be confirmed." msgstr "" "Veuillez clicker sur le lien qui vous à été envoyé par email, afin de " "valider votre inscription." #: ../../static/t/listsub/display.html:27 #: ../../static/t/listsub/display.html:47 msgid "ERROR" msgstr "ERREUR" #: ../../static/t/listsub/display.html:35 msgid "You are unsubscribing" msgstr "Vous vous inscrivez" #: ../../static/t/listsub/display.html:37 msgid "from the" msgstr "De" #: ../../static/t/listsub/display.html:39 msgid "mailing list." msgstr "liste de distribution" #: ../../static/t/listsub/display.html:40 msgid "" "The listserver has sent you an e-mail with one additional Web link for you " "to click on to confirm your unsubscription." msgstr "" "Le listserver vous a envoyé un email avec un lien Internet supplémentaire " "que vous pourrez cliquer pour confirmer votre inscription." #: ../../static/t/listsub/display.html:41 msgid "" "This extra step is for your protection, as it prevents others from being " "able to unsubscribe you from lists without your consent." msgstr "" "Cette étape supplémentaire vise à vous protéger, elle évite que d'autres " "usagers puissent se désinscrire à vos listes sans votre consotement." #: ../../static/t/listsub/display.html:43 msgid "" "Please click on the link which is being e-mailed to you and your " "unsubscription will be confirmed." msgstr "" "Veuillez clicker sur le lien qui vous à été envoyé par email, afin de " "valider votre désinscription." #: ../../static/t/listsub/display.html:44 msgid "Back..." msgstr "Retour..." #: ../../static/t/listsub/display.html:54 msgid "Confirmation successful!" msgstr "Confirmation réussie" #: ../../static/t/listsub/display.html:56 msgid "Confirmation failed." msgstr "Confirmation échoué" #: ../../static/t/listsub/display.html:57 msgid "This could mean one of two things:" msgstr "Cela peut signifier une des deux options:" #: ../../static/t/listsub/display.html:59 msgid "" "You waited too long to confirm your subscribe/unsubscribe request (the " "confirmation link is only valid for three days)" msgstr "" "Vous avez attendu trop longtemps pour valider votre demande " "d'inscription/désinscription (le mail de confirmation n'est valable que " "pendant trois jours)" #: ../../static/t/listsub/display.html:60 msgid "" "You have already successfully confirmed your subscribe/unsubscribe " "request and are attempting to do it again." msgstr "" "Vous avez déjà confirmé votre demande d'inscription/désinscription et " "êtes en train d'essayer à nouveau de le faire." #: ../../static/t/listsub/display.html:62 msgid "The error returned by the server was: " msgstr "L'erreur retourné par le serveur est: " #: ../../static/t/listsub/display.html:70 msgid "Name of list:" msgstr "Nom de la liste :" #: ../../static/t/listsub/display.html:75 msgid "Your e-mail address:" msgstr "Votre adresse mail" #: ../../static/t/listsub/display.html:79 msgid "(If subscribing) preferred format: " msgstr "(en cas d'inscription) format préféré: " #: ../../static/t/listsub/display.html:80 msgid "One message at a time" msgstr "Un message à la fois" #: ../../static/t/listsub/display.html:81 msgid "Digest format" msgstr "Digest format" #: ../../static/t/listsub/display.html:89 msgid "" "When you attempt to subscribe or unsubscribe to a mailing list, you will " "receive an e-mail containing one additional web link to click on for final " "confirmation." msgstr "" "Lors que vous essayez de vous inscrire ou de vous désinscrire à une liste " "d'envoie, vous allez recevoir un email contenant un lien Internet " "supplémentaire que vous devrez cliquer pour la confirmation finale." #: ../../static/t/listsub/display.html:90 msgid "" "This extra step is for your protection, as it prevents others from being " "able to subscribe or unsubscribe you to lists." msgstr "" "Cette étape supplémentaire est là pour votre protection, dans la mesure où " "elle permet d'éviter que d'autres puissent vous inscrire ou vous désinscrire " "de listes." #: ../../static/t/floors_edit_one.html:11 msgid "(delete floor)" msgstr "(supprimer le palier)" #: ../../static/t/floors_edit_one.html:13 msgid "(edit graphic)" msgstr "(éditer le graphisme)" #: ../../static/t/floors.html:4 msgid "Add/change/delete floors" msgstr "Ajouter / modifier / supprimer un palier" #: ../../static/t/floors.html:10 msgid "Floor number" msgstr "Numéro de palier" #: ../../static/t/floors.html:11 msgid "Floor name" msgstr "Nom du palier" #: ../../static/t/floors.html:12 msgid "Number of rooms" msgstr "Nombre de salons" #: ../../static/t/floors.html:13 msgid "Floor CSS" msgstr "CSS du palier" #: ../../static/t/files.html:4 msgid "Files available for download in" msgstr "Les fichiers sont téléchargeables à partir de" #: ../../static/t/files.html:9 msgid "Upload a file:" msgstr "Téléverser un fichier" #: ../../static/t/files.html:30 msgid "Filename" msgstr "Nom du fichier" #: ../../static/t/files.html:31 msgid "Size" msgstr "Taille" #: ../../static/t/files.html:32 msgid "Content" msgstr "Contenu" #: ../../static/t/files.html:33 msgid "Description" msgstr "Description :" #: ../../static/t/edit_message.html:9 ../../static/t/iconbar.html:50 #: ../../static/t/iconbar.html:59 msgid "Loading" msgstr "Chargement" #: ../../static/t/edit_message.html:23 msgid "from" msgstr "de" #: ../../static/t/edit_message.html:29 ../../static/t/edit_message.html:38 msgid "Anonymous" msgstr "Messages anonymes" #: ../../static/t/edit_message.html:47 msgid "in" msgstr "dans" #: ../../static/t/edit_message.html:51 msgid "To:" msgstr "À :" #: ../../static/t/edit_message.html:57 #: ../../static/t/view_message/print.html:15 #: ../../static/t/view_message.html:15 msgid "CC:" msgstr "Copie conforme :" #: ../../static/t/edit_message.html:63 msgid "BCC:" msgstr "Copie cachée à :" #: ../../static/t/edit_message.html:71 msgid "Subject (optional):" msgstr "Objet (facultatif) :" #: ../../static/t/edit_message.html:71 #: ../../static/t/view_message/replyquote.html:8 #: ../../static/t/view_message/print.html:16 #: ../../static/t/view_message.html:16 msgid "Subject:" msgstr "Objet :" #: ../../static/t/edit_message.html:86 msgid "--- forwarded message ---" msgstr "--- message transféré ---" #: ../../static/t/edit_message.html:110 msgid "Post message" msgstr "Poster le message" #: ../../static/t/edit_message.html:118 msgid "Save to Drafts" msgstr "Sauvegarde comme brouillon" #: ../../static/t/edit_message.html:126 #: ../../static/t/edit_message/attachments_pane.html:5 msgid "Attachments:" msgstr "Documents joints :" #: ../../static/t/aide/display_serverrestart_page.html:4 msgid "Message to your Users:" msgstr "Message aux usagers:" #: ../../static/t/aide/display_generic_result.html:2 msgid "Server command results" msgstr "Résultat de la commande serveur" #: ../../static/t/aide/display_generic_result.html:18 msgid "Enter another command" msgstr "Entrer une autre commande" #: ../../static/t/aide/display_generic_result.html:19 msgid "Return to menu" msgstr "Retour au menu" #: ../../static/t/aide/display_sitewide_config.html:3 msgid "Site configuration" msgstr "Configuration du site" #: ../../static/t/aide/display_sitewide_config.html:6 #: ../../static/t/aide/edituser/select.html:9 msgid "You need to be aide to view this." msgstr "Vous n'avez pas accès à cette ressource." #: ../../static/t/aide/display_sitewide_config.html:11 msgid "General" msgstr "Globale" #: ../../static/t/aide/display_sitewide_config.html:12 msgid "Access" msgstr "Accès" #: ../../static/t/aide/display_sitewide_config.html:13 msgid "Network" msgstr "Réseau" #: ../../static/t/aide/display_sitewide_config.html:14 msgid "Tuning" msgstr "Réglages" #: ../../static/t/aide/display_sitewide_config.html:15 msgid "Directory" msgstr "Dossier" #: ../../static/t/aide/display_sitewide_config.html:16 msgid "Auto-purger" msgstr "Purge automatique" #: ../../static/t/aide/display_sitewide_config.html:17 msgid "Indexing/Journaling" msgstr "Indexation / journalisation" #: ../../static/t/aide/display_sitewide_config.html:18 #: ../../static/t/aide/siteconfig/tab_pushmail.html:1 msgid "Push Email" msgstr "Transfert du courrier" #: ../../static/t/aide/display_sitewide_config.html:19 msgid "Pop3" msgstr "Pop3" #: ../../static/t/aide/usermanagement.html:2 msgid "Add, change, delete user accounts" msgstr "Ajouter, modifier ou supprimer des comptes" #: ../../static/t/aide/display_inetconf.html:5 #: ../../static/t/aide/display_menu.html:5 msgid "System Administration Menu" msgstr "Menu d'administration du système" #: ../../static/t/aide/display_inetconf.html:6 #: ../../static/t/aide/display_menu.html:6 msgid "Room Admin Menu" msgstr "Menu d'amdinistration des salons" #: ../../static/t/aide/display_inetconf.html:13 msgid "Local host aliases" msgstr "Pseudonymes de l'hôte local" #: ../../static/t/aide/display_inetconf.html:14 msgid "Directory domains" msgstr "Domaines des annuaires" #: ../../static/t/aide/display_inetconf.html:15 msgid "Smart hosts" msgstr "Serveurs de relais" #: ../../static/t/aide/display_inetconf.html:16 msgid "Fallback smart hosts" msgstr "Serveurs de relais" #: ../../static/t/aide/display_inetconf.html:17 msgid "Notification hosts" msgstr "Hôtes de notification" #: ../../static/t/aide/display_inetconf.html:22 msgid "RBL hosts" msgstr "Serveurs de listes noires" #: ../../static/t/aide/display_inetconf.html:23 msgid "SpamAssassin hosts" msgstr "Serveurs SpamAssassin" #: ../../static/t/aide/display_inetconf.html:24 msgid "ClamAV clamd hosts" msgstr "Hôte du démon ClamAV" #: ../../static/t/aide/display_inetconf.html:25 msgid "Masqueradable domains" msgstr "Domaines non distribués localement" #: ../../static/t/aide/edituser/select.html:5 msgid "Edit or delete users" msgstr "Modifier ou supprimer des usagers." #: ../../static/t/aide/edituser/select.html:17 msgid "Add users" msgstr "Ajouter des usagers" #: ../../static/t/aide/edituser/select.html:20 msgid "Edit or Delete users" msgstr "Modifier ou supprimer des usagers." #: ../../static/t/aide/edituser/box_select.html:1 msgid "" "To edit an existing user account, select the user name from the list and " "click 'Edit'." msgstr "" "Pour modifier un compte, sélectionnez l'identifiant de ce compte dans la " "liste puis cliquez 'Éditer'." #: ../../static/t/aide/edituser/detailview.html:4 msgid "Edit user account: " msgstr "Modifier ce compte : " #: ../../static/t/aide/edituser/detailview.html:24 #: ../../static/t/room/edit/tab_feed.html:14 msgid "Password" msgstr "Mot de passe" #: ../../static/t/aide/edituser/detailview.html:28 msgid "Permission to send Internet mail" msgstr "Permission d'envoyer des courriels vers Internet" #: ../../static/t/aide/edituser/detailview.html:32 msgid "Number of logins" msgstr "Nombres de connexions" #: ../../static/t/aide/edituser/detailview.html:36 msgid "Messages submitted" msgstr "Messages soumis" #: ../../static/t/aide/edituser/detailview.html:40 msgid "Access level" msgstr "Niveau d'accès" #: ../../static/t/aide/edituser/detailview.html:54 msgid "User ID number" msgstr "Identifiant numérique de l'usager" #: ../../static/t/aide/edituser/detailview.html:58 msgid "Date and time of last login" msgstr "Date et heure de la dernière connexion" #: ../../static/t/aide/edituser/detailview.html:68 msgid "Auto-purge after this many days" msgstr "Purge automatique après ce nombre de jours" #: ../../static/t/aide/edituser/add.html:1 msgid "" "To create a new user account, enter the desired user name in the box below " "and click 'Create'." msgstr "" "Pour créer un nouveau compte d'usager, entrez son identifiant dans le champ " "de saisie ci-après et cliquez sur 'Créer'." #: ../../static/t/aide/edituser/add.html:5 msgid "New user: " msgstr "Nouvel usager : " #: ../../static/t/aide/display_generic_cmd.html:4 msgid "Enter a server command" msgstr "Entrer une commande serveur" #: ../../static/t/aide/display_generic_cmd.html:12 msgid "" "This screen allows you to enter Citadel server commands which are not " "supported by WebCit. If you do not know what that means, then this screen " "will not be of much use to you." msgstr "" "Cet écran vous permet d'entrer directement des commandes textuelles qui ne " "sont pas supportées par l'interface web de Citadel. Si vous ne savez pas " "trop à quoi cela correspond, cette facilité n'est pas faite pour vous." #: ../../static/t/aide/display_generic_cmd.html:15 msgid "Enter command:" msgstr "Entrer une commande :" #: ../../static/t/aide/display_generic_cmd.html:17 msgid "Command input (if requesting SEND_LISTING transfer mode):" msgstr "Command input (if requesting SEND_LISTING transfer mode):" #: ../../static/t/aide/display_generic_cmd.html:20 msgid "Detected host header is " msgstr "L'en-tête de l'hôte detecté est " #: ../../static/t/aide/display_ignetconf.html:4 msgid "Network configuration" msgstr "Configuration réseau" #: ../../static/t/aide/display_ignetconf.html:10 #: ../../static/t/aide/ignetconf/edit_node.html:5 #: ../../static/t/aide/ignetconf/add.html:5 msgid "Add a new node" msgstr "Ajouter un nouveau nœud" #: ../../static/t/aide/display_ignetconf.html:14 msgid "Currently configured nodes" msgstr "Nœuds actuellement configurés" #: ../../static/t/aide/display_serverrestart.html:26 msgid "Restart Citadel" msgstr "Redémarrer Citadel" #: ../../static/t/aide/floorconfig.html:2 msgid "Add, change, or delete floors" msgstr "Ajouter, modifier ou supprimer des paliers" #: ../../static/t/aide/serverrestart/box.html:3 msgid "Please wait while the Citadel server is restarted... " msgstr "" "S'il vous plaît, patientez pendant que le serveur Citadel redémarre... " #: ../../static/t/aide/serverrestart/box_page_do.html:3 msgid "" "Please wait while your users are being paged, the citadel server will be " "restarted after that... " msgstr "" "S'il vous plait patientez pendant que Citadel informe les usagers, le " "serveur redémarrera ensuite... " #: ../../static/t/aide/inet/masqdomains.html:2 msgid "(Domains as which users are allowed to masquerade)" msgstr "(Domaines que les utilisateurs peuvent utiliser)" #: ../../static/t/aide/inet/rbldns.html:2 msgid "(hosts running a Realtime Blackhole List)" msgstr "(hôtes sur lesquels fonctionne une liste noire en temps réel)" #: ../../static/t/aide/inet/dirnames.html:2 msgid "(domains mapped with the Global Address Book)" msgstr "(domaines référencés dans l'annuaire principal)" #: ../../static/t/aide/inet/notify.html:2 msgid "(URLS for notifications when users receive new mails; )" msgstr "" "(URLS pour la notification lorsque les utilisateurs reçoivent de nouveaux " "emails; )" #: ../../static/t/aide/inet/notify.html:2 msgid "" "Syntax: Notificationtemplatename:http[s]://user:password@hostname/path" msgstr "" "Syntaxe: " "nomdumodeldenotification:http[s]://utilisateur:motdepasse@hostname/chemin" #: ../../static/t/aide/inet/smarthosts.html:2 msgid "(if present, forward all outbound mail to one of these hosts)" msgstr "(si présent, relayer le courrier sortant via l'un de ces serveurs)" #: ../../static/t/aide/inet/aliases.html:2 msgid "(domains for which this host receives mail)" msgstr "(domaines pour lesquels cet hôte reçoit du courrier)" #: ../../static/t/aide/inet/clamav.html:2 msgid "(hosts running the ClamAV clamd service)" msgstr "(hôtes sur lesquels fonctionne le service ClamAV)" #: ../../static/t/aide/inet/spamass.html:2 msgid "(hosts running the SpamAssassin service)" msgstr "(hôtes sur lesquels fonctionne le service SpamAssassin)" #: ../../static/t/aide/inet/fallbackhosts.html:2 msgid "(send outbound mail to these hosts only when direct delivery fails)" msgstr "" "(Envoyer les mails sortant à ces hôtes uniquement lorsque l'envoi échoue)" #: ../../static/t/aide/ignetconf/display_confirm_delete.html:5 msgid "Confirm delete" msgstr "Confirmer la suppression" #: ../../static/t/aide/ignetconf/display_confirm_delete.html:11 msgid "Are you sure you want to delete " msgstr "Êtes vous sur de vouloir supprimer " #: ../../static/t/aide/ignetconf/display_confirm_delete.html:14 #: ../../static/t/prefs/box.html:198 ../../static/t/iconbar/edit.html:19 #: ../../static/t/iconbar/edit.html:26 ../../static/t/iconbar/edit.html:32 #: ../../static/t/iconbar/edit.html:39 ../../static/t/iconbar/edit.html:45 #: ../../static/t/iconbar/edit.html:52 ../../static/t/iconbar/edit.html:58 #: ../../static/t/iconbar/edit.html:64 ../../static/t/iconbar/edit.html:70 #: ../../static/t/iconbar/edit.html:76 ../../static/t/iconbar/edit.html:82 #: ../../static/t/iconbar/edit.html:88 msgid "Yes" msgstr "Oui" #: ../../static/t/aide/ignetconf/display_confirm_delete.html:16 #: ../../static/t/prefs/box.html:200 ../../static/t/iconbar/edit.html:20 #: ../../static/t/iconbar/edit.html:27 ../../static/t/iconbar/edit.html:33 #: ../../static/t/iconbar/edit.html:40 ../../static/t/iconbar/edit.html:46 #: ../../static/t/iconbar/edit.html:53 ../../static/t/iconbar/edit.html:59 #: ../../static/t/iconbar/edit.html:65 ../../static/t/iconbar/edit.html:71 #: ../../static/t/iconbar/edit.html:77 ../../static/t/iconbar/edit.html:83 #: ../../static/t/iconbar/edit.html:89 msgid "No" msgstr "Non" #: ../../static/t/aide/ignetconf/edit_node.html:15 #: ../../static/t/aide/ignetconf/add.html:15 #: ../../static/t/aide/siteconfig/tab_general.html:8 msgid "Node name" msgstr "Nom du nœud" #: ../../static/t/aide/ignetconf/edit_node.html:17 #: ../../static/t/aide/ignetconf/add.html:17 msgid "Shared secret" msgstr "Code secret partagé" #: ../../static/t/aide/ignetconf/edit_node.html:19 #: ../../static/t/aide/ignetconf/add.html:19 msgid "Host or IP address" msgstr "Hôte ou adresse IP" #: ../../static/t/aide/ignetconf/edit_node.html:21 #: ../../static/t/aide/ignetconf/add.html:21 msgid "Port number" msgstr "Numéro de port" #: ../../static/t/aide/ignetconf/section.html:4 msgid "(Edit)" msgstr "(Edition)" #: ../../static/t/aide/display_menu.html:12 msgid "Global Configuration" msgstr "Configuration générale" #: ../../static/t/aide/display_menu.html:14 msgid "User account management" msgstr "Gestion des comptes d'usagers" #: ../../static/t/aide/display_menu.html:16 msgid "Shutdown Citadel" msgstr "Arrêter Citadel" #: ../../static/t/aide/display_menu.html:18 msgid "Rooms and Floors" msgstr "Salons et paliers" #: ../../static/t/aide/global_config.html:2 msgid "Edit site-wide configuration" msgstr "Modifier la configuration générale du site" #: ../../static/t/aide/global_config.html:3 msgid "Domain names and Internet mail configuration" msgstr "Configuration des noms de domaine et du courrier électronique" #: ../../static/t/aide/global_config.html:4 msgid "Configure replication with other Citadel servers" msgstr "Configurer la réplication avec d'autres serveurs Citadel" #: ../../static/t/aide/global_config.html:5 #: ../../static/t/view_mailq/header.html:3 msgid "View the outbound SMTP queue" msgstr "Voir la queue SMTP sortante" #: ../../static/t/aide/restart.html:2 msgid "Restart Now" msgstr "Redémarrer maintenant" #: ../../static/t/aide/restart.html:3 msgid "Restart after paging users" msgstr "Rédémarrer après avoir bippé les utilisateurs" #: ../../static/t/aide/restart.html:4 msgid "Restart when all users are idle" msgstr "Redémarrage lorsque tous les usagers sont inactifs" #: ../../static/t/aide/siteconfig/tab_general.html:1 msgid "General site configuration items" msgstr "Éléments de configuration générale du site" #: ../../static/t/aide/siteconfig/tab_general.html:5 msgid "Change Login Logo" msgstr "Changer le logo de connexion" #: ../../static/t/aide/siteconfig/tab_general.html:6 msgid "Change Logout Logo" msgstr "Changer le logo de déconnexion" #: ../../static/t/aide/siteconfig/tab_general.html:11 msgid "Fully qualified domain name" msgstr "Nom de domaine pleinement qualifié" #: ../../static/t/aide/siteconfig/tab_general.html:14 msgid "Human-readable node name" msgstr "Nom du nœud lisible pour un usager" #: ../../static/t/aide/siteconfig/tab_general.html:17 msgid "Telephone number" msgstr "Numéro de téléphone" #: ../../static/t/aide/siteconfig/tab_general.html:20 msgid "Paginator prompt (for text mode clients)" msgstr "Invite du paginateur (pour les clients en mode texte)" #: ../../static/t/aide/siteconfig/tab_general.html:23 msgid "Geographic location of this system" msgstr "Localisation géographique de ce serveur" #: ../../static/t/aide/siteconfig/tab_general.html:26 msgid "Name of system administrator" msgstr "Nom de l'administrateur du système" #: ../../static/t/aide/siteconfig/tab_general.html:29 msgid "Default timezone for unzoned calendar items" msgstr "" "Fuseau horaire par défaut des événements de l'agenda sans mention du fuseau" #: ../../static/t/aide/siteconfig/tab_autopurger.html:1 msgid "Configure automatic expiry of old messages" msgstr "Configurer l'expiration automatique des anciens messages" #: ../../static/t/aide/siteconfig/tab_autopurger.html:2 msgid "These settings may be overridden on a per-floor or per-room basis." msgstr "" "Ces options peuvent être modifiées individuellement par palier ou par salon." #: ../../static/t/aide/siteconfig/tab_autopurger.html:6 msgid "Hour to run database auto-purge" msgstr "Heure de démarrage des purges automatiques" #: ../../static/t/aide/siteconfig/tab_autopurger.html:66 msgid "Default message expire policy for public rooms" msgstr "Règles d'expiration par défaut des messages dans un salon public" #: ../../static/t/aide/siteconfig/tab_autopurger.html:68 #: ../../static/t/aide/siteconfig/tab_autopurger.html:86 #: ../../static/t/room/edit/tab_expire.html:17 #: ../../static/t/room/edit/tab_expire.html:45 msgid "Never automatically expire messages" msgstr "Les messages n'expirent jamais automatiquement" #: ../../static/t/aide/siteconfig/tab_autopurger.html:71 #: ../../static/t/aide/siteconfig/tab_autopurger.html:89 #: ../../static/t/room/edit/tab_expire.html:20 #: ../../static/t/room/edit/tab_expire.html:48 msgid "Expire by message count" msgstr "Expiration des messages en fonction du compte" #: ../../static/t/aide/siteconfig/tab_autopurger.html:73 #: ../../static/t/aide/siteconfig/tab_autopurger.html:92 #: ../../static/t/room/edit/tab_expire.html:23 #: ../../static/t/room/edit/tab_expire.html:51 msgid "Expire by message age" msgstr "Expiration des messages en fonction de l'âge" #: ../../static/t/aide/siteconfig/tab_autopurger.html:75 #: ../../static/t/aide/siteconfig/tab_autopurger.html:94 #: ../../static/t/room/edit/tab_expire.html:25 #: ../../static/t/room/edit/tab_expire.html:53 msgid "Number of messages or days: " msgstr "Nombre de messages ou de jours : " #: ../../static/t/aide/siteconfig/tab_autopurger.html:81 msgid "Default message expire policy for private mailboxes" msgstr "" "Règles d'expiration par défaut des messages dans une boîte aux lettres privée" #: ../../static/t/aide/siteconfig/tab_autopurger.html:83 msgid "Same policy as public rooms" msgstr "Mêmes règles que dans les salons publics" #: ../../static/t/aide/siteconfig/tab_network.html:1 msgid "Network services" msgstr "Services réseau" #: ../../static/t/aide/siteconfig/tab_network.html:2 #: ../../static/t/aide/siteconfig/tab_directory.html:3 msgid "" "Changes made on this screen will not take effect until you restart the " "Citadel server." msgstr "" "Les changements effectués à partir de cet écran ne seront effectifs qu'après " "un redémarrage du serveur Citadel." #: ../../static/t/aide/siteconfig/tab_network.html:6 msgid "SMTP MTA port (-1 to disable)" msgstr "Port SMTP (-1 pour désactiver ce service)" #: ../../static/t/aide/siteconfig/tab_network.html:9 msgid "Correct forged From: lines during authenticated SMTP" msgstr "" "Corriger les identifications d'expéditeur (FROM:) contrefaites lors de " "session SMTP authentifiées." #: ../../static/t/aide/siteconfig/tab_network.html:12 msgid "Flag message as spam, instead of rejecting it" msgstr "Marquer les messages comme spam au lieu de les rejeter" #: ../../static/t/aide/siteconfig/tab_network.html:15 msgid "IMAP listener port (-1 to disable)" msgstr "Port d'écoute IMAP (-1 pour désactiver ce service)" #: ../../static/t/aide/siteconfig/tab_network.html:19 msgid "Network run frequency (in seconds)" msgstr "Fréquenece de lancement du réseau (en secondes)" #: ../../static/t/aide/siteconfig/tab_network.html:22 msgid "Server IP address (0.0.0.0 for 'any')" msgstr "Adresse IP du serveur (0.0.0.0 pour 'quelconque')" #: ../../static/t/aide/siteconfig/tab_network.html:25 msgid "SMTP MSA port (-1 to disable)" msgstr "Port SMTP MSA (-1 pour désactiver)" #: ../../static/t/aide/siteconfig/tab_network.html:28 msgid "IMAP over SSL port (-1 to disable)" msgstr "Port IMAP sécurisé via SSL (-1 pour désactiver)" #: ../../static/t/aide/siteconfig/tab_network.html:31 msgid "SMTP over SSL port (-1 to disable)" msgstr "Port SMTP sécurisé via SSL (-1 pour désactiver)" #: ../../static/t/aide/siteconfig/tab_network.html:34 msgid "Instantly expunge deleted messages in IMAP" msgstr "Effacer immédiatement les messages supprimés via IMAP" #: ../../static/t/aide/siteconfig/tab_network.html:38 msgid "Allow unauthenticated SMTP clients to spoof this sites domains" msgstr "" "Autoriser les client SMTP non authentifiés à usurper l'identité des domaine " "de ce site" #: ../../static/t/aide/siteconfig/tab_network.html:41 msgid "Postfix TCP Dictionary Port" msgstr "Port du dictionnaire TCP de Postfix" #: ../../static/t/aide/siteconfig/tab_network.html:41 msgid "-1 to disable" msgstr "-1 pour désactiver." #: ../../static/t/aide/siteconfig/tab_network.html:44 msgid "ManageSieve Port (-1 to disable)" msgstr "Port d'écoute Sieve (-1 pour désactiver ce service)" # RBL correspond ici à liste noire # RCPT = réception? #: ../../static/t/aide/siteconfig/tab_network.html:47 msgid "Perform RBL checks upon connect instead of after RCPT" msgstr "Effectuer un test RBL à la connexion plutôt qu'après réception." #: ../../static/t/aide/siteconfig/tab_network.html:50 msgid "Keep original from headers in IMAP" msgstr "Conserver les entêtes originaux avec IMAP" #: ../../static/t/aide/siteconfig/tab_network.html:53 msgid "XMPP (Jabber) client to server port (-1 to disable)" msgstr "Port d'écoute du client XMPP POP3 (-1 pour désactiver ce service)" #: ../../static/t/aide/siteconfig/tab_network.html:56 msgid "XMPP (Jabber) server to server port (-1 to disable)" msgstr "Port d'écoute XMPP (Jabber) (-1 pour désactiver ce service)" #: ../../static/t/aide/siteconfig/tab_pop3.html:1 msgid "POP3" msgstr "POP3" #: ../../static/t/aide/siteconfig/tab_pop3.html:6 msgid "POP3 listener port (-1 to disable)" msgstr "Port d'écoute de POP3 (-1 pour désactiver ce service)" #: ../../static/t/aide/siteconfig/tab_pop3.html:9 msgid "POP3 over SSL port (-1 to disable)" msgstr "Port POP3 sécurisé via SSL (-1 pour désactiver)" #: ../../static/t/aide/siteconfig/tab_pop3.html:12 msgid "POP3 fetch frequency in seconds" msgstr "Fréquence de récupération POP3 en secondes" #: ../../static/t/aide/siteconfig/tab_pop3.html:15 msgid "POP3 fastest fetch frequency in seconds" msgstr "Fréquence de récupération POP3 la plus rapide en secondes" #: ../../static/t/aide/siteconfig/tab_tuning.html:1 msgid "Advanced server fine-tuning controls" msgstr "Réglages avancés du serveur" #: ../../static/t/aide/siteconfig/tab_tuning.html:5 msgid "Server connection idle timeout (in seconds)" msgstr "" "Limite de temps d'inactivité d'une connexion au serveur (en secondes)" #: ../../static/t/aide/siteconfig/tab_tuning.html:8 msgid "Maximum concurrent sessions (0 = no limit)" msgstr "Nombre de sessions simultanées (pas de limite = 0)" #: ../../static/t/aide/siteconfig/tab_tuning.html:11 msgid "Default user purge time (days)" msgstr "Délai de purge par défaut pour cet usager (jours)" #: ../../static/t/aide/siteconfig/tab_tuning.html:14 msgid "Default room purge time (days)" msgstr "Délai de purge de ce salon (en jours)" #: ../../static/t/aide/siteconfig/tab_tuning.html:17 msgid "Maximum message length" msgstr "Longueur maximum des messages" #: ../../static/t/aide/siteconfig/tab_tuning.html:20 msgid "Minimum number of worker threads" msgstr "Nombre minimum de processus" #: ../../static/t/aide/siteconfig/tab_tuning.html:23 msgid "Maximum number of worker threads" msgstr "Nombre maximum de processus" #: ../../static/t/aide/siteconfig/tab_tuning.html:26 msgid "Automatically delete committed database logs" msgstr "Supprimer automatiquement les journaux validés des bases de données" #: ../../static/t/aide/siteconfig/tab_pushmail.html:5 msgid "Funambol server host (blank to disable)" msgstr "Nom d'hôte du serveur Funambol (laisser vide pour désactiver)" #: ../../static/t/aide/siteconfig/tab_pushmail.html:8 msgid "Funambol server port " msgstr "Numéro de port de Funambol " #: ../../static/t/aide/siteconfig/tab_pushmail.html:11 msgid "Funambol sync source" msgstr "Source de synchronisation Funambol" #: ../../static/t/aide/siteconfig/tab_pushmail.html:14 msgid "Funambol auth details (user:pass)" msgstr "Détails d'authentification Funambol (user:pass)" #: ../../static/t/aide/siteconfig/tab_pushmail.html:17 msgid "External pager tool (blank to disable)" msgstr "External pager tool (blank to disable)" #: ../../static/t/aide/siteconfig/tab_access.html:1 msgid "Access controls and site policy settings" msgstr "Contrôles des accès et mise en place des règles de fonctionnement" #: ../../static/t/aide/siteconfig/tab_access.html:5 msgid "Allow aides to zap (forget) rooms" msgstr "Permettre aux administrateurs de sauter (mettre de côté) des salons" #: ../../static/t/aide/siteconfig/tab_access.html:9 msgid "Quarantine messages from problem users" msgstr "Messages d'usagers à problème mis en quarantaine" #: ../../static/t/aide/siteconfig/tab_access.html:12 msgid "Name of quarantine room" msgstr "Nom du salon de quarantaine" #: ../../static/t/aide/siteconfig/tab_access.html:17 msgid "Name of room to log pages" msgstr "Nom du salon pour enregistrer les alertes" #: ../../static/t/aide/siteconfig/tab_access.html:22 msgid "Authentication mode" msgstr "Mode d'authentification" #: ../../static/t/aide/siteconfig/tab_access.html:24 msgid "Self contained" msgstr "contient" #: ../../static/t/aide/siteconfig/tab_access.html:25 msgid "Host based" msgstr "Host based" #: ../../static/t/aide/siteconfig/tab_access.html:26 msgid "LDAP (RFC2307)" msgstr "LDAP (RFC2307)" #: ../../static/t/aide/siteconfig/tab_access.html:27 msgid "LDAP (Active Directory)" msgstr "LDAP (Active Directory)" #: ../../static/t/aide/siteconfig/tab_access.html:30 msgid "Master user name (blank to disable)" msgstr "Nom de l'administrateur (laisser vide pour désactiver)" #: ../../static/t/aide/siteconfig/tab_access.html:33 msgid "Master user password" msgstr "Mot de passe de l'administrateur" #: ../../static/t/aide/siteconfig/tab_access.html:38 msgid "Initial access level for new users" msgstr "Niveau d'accès initial des nouveaux usagers" #: ../../static/t/aide/siteconfig/tab_access.html:49 msgid "Access level required to create rooms" msgstr "Niveau d'accès requis pour créer des salons" #: ../../static/t/aide/siteconfig/tab_access.html:60 msgid "" "Automatically grant room-aide status to users who create private rooms" msgstr "" "Les usagers qui créent des salons privés se voient accordé le statut " "d'administrateurs de ces salons." #: ../../static/t/aide/siteconfig/tab_access.html:63 msgid "Automatically grant room-aide status to users who create BLOG rooms" msgstr "" "Donner automatiquement le statut \"aide au salon\" aux créateurx de salons " "BLOG" #: ../../static/t/aide/siteconfig/tab_access.html:66 msgid "Restrict access to Internet mail" msgstr "Limiter l'accès au courrier électronique" #: ../../static/t/aide/siteconfig/tab_access.html:71 msgid "Disable self-service user account creation" msgstr "Désactiver le libre-service de création de compte d'usager" #: ../../static/t/aide/siteconfig/tab_access.html:71 msgid "Hint: do not select both!" msgstr "Conseil: ne pas séléctionner les deux" #: ../../static/t/aide/siteconfig/tab_access.html:74 msgid "Require registration for new users" msgstr "L'enregistrement est requis pour les nouveaux usagers" #: ../../static/t/aide/siteconfig/tab_access.html:77 msgid "Allow anonymous guest access" msgstr "Authoriser les accès client anonymes" #: ../../static/t/aide/siteconfig/tab_indexing.html:1 msgid "Indexing and Journaling" msgstr "Indexation et journalisation" #: ../../static/t/aide/siteconfig/tab_indexing.html:2 msgid "Warning: these facilities are resource intensive." msgstr "Attention: ces fonctionnalités sont très exigeantes en ressources." #: ../../static/t/aide/siteconfig/tab_indexing.html:6 msgid "Enable full text index" msgstr "Activer l'indexation de tout le texte" #: ../../static/t/aide/siteconfig/tab_indexing.html:9 msgid "Perform journaling of email messages" msgstr "Procéder à la journalisation des messages de courrier électronique" #: ../../static/t/aide/siteconfig/tab_indexing.html:13 msgid "Perform journaling of non-email messages" msgstr "Procéder à la journalisation des autres messages (sauf courriel)" #: ../../static/t/aide/siteconfig/tab_indexing.html:16 msgid "Email destination of journalized messages" msgstr "Adresse courriel de destination des messages journalisés" #: ../../static/t/aide/siteconfig/tab_directory.html:1 msgid "Configure the LDAP connector for Citadel" msgstr "Configuration du connecteur LDAP" #: ../../static/t/aide/siteconfig/tab_directory.html:4 msgid "" "NOTE: This Citadel server has been built without LDAP support. These " "options will have no effect." msgstr "" "NOTE: Ce serveur Citadel a été mis en fonction sans prise en charge de LDAP. " "Ces options n'auront aucun effet." #: ../../static/t/aide/siteconfig/tab_directory.html:9 msgid "Host name of LDAP server (blank to disable)" msgstr "Nom d'hôte du serveur d'annuaire LDAP (laisser vide pour désactiver)" #: ../../static/t/aide/siteconfig/tab_directory.html:13 msgid "Port number of LDAP server (blank to disable)" msgstr "Numéro du port LDAP (laisser vide pour désactiver)" #: ../../static/t/aide/siteconfig/tab_directory.html:16 msgid "Base DN" msgstr "DN de base" #: ../../static/t/aide/siteconfig/tab_directory.html:19 msgid "Bind DN" msgstr "DN d'association" #: ../../static/t/aide/siteconfig/tab_directory.html:22 msgid "Password for bind DN" msgstr "Mot de passe du DN d'association" #: ../../static/t/iconbar.html:7 msgid "Language:" msgstr "Langue :" #: ../../static/t/iconbar.html:19 msgid "Mail" msgstr "Courriel" #: ../../static/t/iconbar.html:39 ../../static/t/iconbar/edit.html:61 #: ../../static/t/summary/page.html:30 msgid "Tasks" msgstr "Tâches" #: ../../static/t/iconbar.html:48 ../../static/t/iconbar/edit.html:67 msgid "Rooms" msgstr "Salons" #: ../../static/t/iconbar.html:57 msgid "Online users" msgstr "Usagers en ligne" #: ../../static/t/iconbar.html:62 ../../static/t/iconbar/edit.html:79 msgid "Chat" msgstr "Clavardage" #: ../../static/t/iconbar.html:65 msgid "Advanced" msgstr "Admin et préférences" #: ../../static/t/iconbar.html:72 ../../static/t/room/edit/editroom.html:4 #: ../../static/t/room/edit.html:5 msgid "Administration" msgstr "Administration" #: ../../static/t/iconbar.html:83 msgid "customize this menu" msgstr "personnaliser ce menu" #: ../../static/t/iconbar.html:92 msgid "switch to room list" msgstr "passer aux salons" #: ../../static/t/iconbar.html:93 msgid "switch to menu" msgstr "passer au menu" #: ../../static/t/iconbar.html:94 msgid "My folders" msgstr "Mes répertoires" #: ../../static/t/view_message/list_attach.html:3 #: ../../static/t/view_message/inline_attach.html:4 msgid "View" msgstr "Voir" #: ../../static/t/view_message/list_attach.html:4 #: ../../static/t/view_message/inline_attach.html:5 msgid "Download" msgstr "Télécharger" #: ../../static/t/view_message/print.html:14 #: ../../static/t/view_message.html:14 msgid "to" msgstr "à" #: ../../static/t/openid_manual_create.html:2 msgid "Your OpenID" msgstr "Votre OpenID" #: ../../static/t/openid_manual_create.html:2 msgid "was successfully verified." msgstr "A été vérifié avec succès" #: ../../static/t/openid_manual_create.html:3 msgid "However, the user name" msgstr "Malgrès, le nom d'utilisateur" #: ../../static/t/openid_manual_create.html:3 msgid "conflicts with an existing user." msgstr "Conflits avec un utilisateur existant" #: ../../static/t/openid_manual_create.html:5 msgid "Please specify the user name you would like to use." msgstr "SVP précisez le nom d'usager que vous souhaitez utiliser." #: ../../static/t/files/graphicsupload.html:2 msgid "Image upload" msgstr "Image téléchargée" #: ../../static/t/files/graphicsupload.html:6 msgid "You can upload an image directly from your computer" msgstr "" "Vous pouvez télécharger une image directement depuis votre ordinateur" #: ../../static/t/files/graphicsupload.html:8 msgid "Please select a file to upload:" msgstr "Sélectionner un fichier à transférer :" #: ../../static/t/files/section_onefile.html:20 msgid "Slideshow" msgstr "Diaporama" #: ../../static/t/roombanner.html:10 ../../static/t/roombanner.html:11 msgid "new of" msgstr "Nouveau depuis" #: ../../static/t/roombanner.html:10 ../../static/t/roombanner.html:11 #: ../../static/t/msg_listselector_bottom.html:7 #: ../../static/t/msg_listselector_top.html:7 msgid "messages" msgstr "messages" #: ../../static/t/roombanner.html:28 msgid "Select page: " msgstr "Sélectionner la page : " #: ../../static/t/who.html:13 msgid "Users currently on " msgstr "Usagers actuellement dans " #: ../../static/t/who.html:22 msgid "Click on a name to read user info. Click on" msgstr "" "Cliquez sur l'identifiant pour lire les informations publiques de l'usager. " "Cliquer sur" #: ../../static/t/who.html:24 msgid "to send an instant message to that user." msgstr "Envoyer un message instantané à cet usager." #: ../../static/t/msg_listselector_bottom.html:2 #: ../../static/t/msg_listselector_top.html:2 msgid "Reading #" msgstr "Lecture #" #: ../../static/t/msg_listselector_bottom.html:12 #: ../../static/t/msg_listselector_top.html:12 msgid "oldest to newest" msgstr "du plus ancien au plus récent" #: ../../static/t/msg_listselector_bottom.html:20 #: ../../static/t/msg_listselector_top.html:20 msgid "newest to oldest" msgstr "du plus récent au plus ancien" #: ../../static/t/newstartpage.html:4 msgid "New start page" msgstr "En faire ma nouvelle page d'accueil" #: ../../static/t/newstartpage.html:9 msgid "Your start page has been changed." msgstr "Votre page d'accueil à été changée." #: ../../static/t/newstartpage.html:12 msgid "" "(Note: this does not change your browser's home page. It changes the page " "you begin on when you log on to" msgstr "" "(Note: ceci ne changera pas la page d'accueil de votre navigateur, mais " "seulement celle que vous obtiendrez dès votre connexion." #: ../../static/t/no_new_msgs.html:3 msgid "No new messages." msgstr "Pas de nouveaux messages" #: ../../static/t/view_blog/comment_box.html:8 msgid "Post a comment" msgstr "Poster un commentaire" #: ../../static/t/prefs/pushemail.html:2 msgid "Configure Push Email" msgstr "Configurer le transfert du courrier" #: ../../static/t/prefs/pushemail.html:9 msgid "Push email and SMS settings" msgstr "Faire suivre les courriels et paramétrages SMS" #: ../../static/t/prefs/pushemail.html:17 msgid "" "If your administrator has enabled the functionality, Citadel can notify a " "Funambol server that you haved recieved new email and automatically " "syncronize any devices you have with the Funambol client installed." msgstr "" "Si votre administrateur a installé cette fonctionnalité, Citadel peut " "notifie à un serveur Funambol que vous avez reçu des nouveaux courrier et " "permettre la synchronisation automatique avec n'importe quel périphérique où " "un client Funambol est installé." #: ../../static/t/prefs/pushemail.html:20 msgid "" "Alternatively, if the administrator has configured it, Citadel can send a " "text message to you when new mail arrives." msgstr "" "Alternativement, si l'administrateur l'a configuré, Citadel peut envoyer un " "message textuel lorsqu'un nouveau mail est arrivé." #: ../../static/t/prefs/pushemail.html:26 msgid "Notify Funambol server" msgstr "Notifier le serveur Funambol" #: ../../static/t/prefs/pushemail.html:31 msgid "Send a text message to..." msgstr "Envoyer un message texte à ..." #: ../../static/t/prefs/pushemail.html:33 msgid "" "(Use international format, without any leading zeros, spaces or hypens, like " "+61415011501)" msgstr "" "(Utiliser le format international, sans zéros au début ni espaces ou " "ponctuation, comme +61415011501)" #: ../../static/t/prefs/pushemail.html:38 msgid "Use custom notification scheme configured by your Admin" msgstr "" "Utilisez les schéma de nothifications personnalisé par votre administrateur" #: ../../static/t/prefs/pushemail.html:43 msgid "Don‘t send any notifications" msgstr "Ne pas envoyer de nothifications" #: ../../static/t/prefs/box.html:9 msgid "Tree (folders) view" msgstr "Vue en arborescence" #: ../../static/t/prefs/box.html:11 msgid "Table (rooms) view" msgstr "Vue en tableaux" #: ../../static/t/prefs/box.html:20 msgid "12 hour (am/pm)" msgstr "12 heures (am/pm)" #: ../../static/t/prefs/box.html:25 msgid "24 hour" msgstr "24 heures" #: ../../static/t/prefs/box.html:152 msgid "Sunday" msgstr "Dimanche" #: ../../static/t/prefs/box.html:153 msgid "Monday" msgstr "Lundi" #: ../../static/t/prefs/box.html:174 msgid "No signature" msgstr "Pas de signature" #: ../../static/t/prefs/box.html:238 msgid "Full-functionality" msgstr "Pleines fonctionnalités" #: ../../static/t/prefs/box.html:241 msgid "Safe mode" msgstr "Mode sûr" #: ../../static/t/prefs/box.html:242 msgid "" "Safe mode is less intensive on your web browser, but not as fully featured." msgstr "" "Le mode sûr est moins contraignant pour votre navigateur, mais pas aussi " "complet." #: ../../static/t/wiki/pagelist.html:1 msgid "List of Wiki pages" msgstr "Liste des pages Wiki" #: ../../static/t/wiki/history.html:1 msgid "History of edits for this page" msgstr "Historique des éditions de cette page" #: ../../static/t/who/list_static_header.html:1 msgid "Users currently on" msgstr "Usagers actuellement dans" #: ../../static/t/who/section.html:4 msgid "(kill)" msgstr "(supprimer)" #: ../../static/t/who/bio.html:4 ../../static/t/user/show.html:4 msgid "User profile" msgstr "Profil usager" #: ../../static/t/who/summary.html:5 ../../static/t/who/box_list_static.html:6 #: ../../static/t/room/edit/tab_feed.html:13 msgid "User name" msgstr "Nom d'usager" #: ../../static/t/who/summary.html:6 ../../static/t/who/box_list_static.html:7 msgid "Room" msgstr "Salon" #: ../../static/t/who/box_list_static.html:8 msgid "From host" msgstr "Machine d'origine" #: ../../static/t/view_message.html:19 msgid "Edit" msgstr "Éditer (?)" #: ../../static/t/view_message.html:22 ../../static/t/view_message.html:26 msgid "Reply" msgstr "Répondre" #: ../../static/t/view_message.html:23 msgid "ReplyQuoted" msgstr "Répondre en citant" #: ../../static/t/view_message.html:27 msgid "ReplyAll" msgstr "Répondre à tous" #: ../../static/t/view_message.html:28 msgid "Forward" msgstr "Faire suivre" #: ../../static/t/view_message.html:31 ../../static/t/msg_listview.html:25 msgid "Move" msgstr "Déplacer" #: ../../static/t/view_message.html:34 msgid "Headers" msgstr "Entêtes" #: ../../static/t/view_message.html:35 ../../static/t/msg_listview.html:28 msgid "Print" msgstr "Imprimer" #: ../../static/t/preferences.html:4 ../../static/t/preferences.html:7 msgid "Preferences and settings" msgstr "Préférences et options" #: ../../static/t/user/list.html:3 msgid "User list for " msgstr "Liste des utilisateur pour " #: ../../static/t/user/list.html:9 msgid "User Name" msgstr "Identifiant" #: ../../static/t/user/list.html:10 msgid "Number" msgstr "Numéro" #: ../../static/t/user/list.html:11 msgid "Access Level" msgstr "Niveau d'accès" #: ../../static/t/user/list.html:12 msgid "Last Login" msgstr "Dernière connexion" #: ../../static/t/user/list.html:13 msgid "Total Logins" msgstr "Nombre total de connexions" #: ../../static/t/user/list.html:14 msgid "Total Posts" msgstr "Nombre de messages" #: ../../static/t/user/show.html:9 msgid "Click here to send an instant message to" msgstr "Clickez ici pour envoyer un message instantané à" #: ../../static/t/start_of_new_msgs.html:4 msgid "Old messages" msgstr "Ancients messages" #: ../../static/t/start_of_new_msgs.html:8 msgid "New messages" msgstr "Nouveaux messages" #: ../../static/t/display_main_menu.html:7 msgid "Basic commands" msgstr "Commandes de base" #: ../../static/t/display_main_menu.html:10 msgid "Your info" msgstr "Vos informations" #: ../../static/t/display_main_menu.html:12 msgid "Advanced room commands" msgstr "Commandes avancées des salons" #: ../../static/t/iconbar/save.html:4 ../../static/t/iconbar/edit.html:4 msgid "Customize the icon bar" msgstr "Personnalisation du menu" #: ../../static/t/iconbar/save.html:11 msgid "" "Your icon bar has been updated. Please select any of its choices to continue." msgstr "" "Votre barre d'icônes à été mise à jour. Veuillez séléctionner une option " "pour continuer." #: ../../static/t/iconbar/save.html:11 msgid "" "You may need to force refresh (SHIFT-F5)> in order for changes to take effect" msgstr "" "Vous devriez forcer un rafraîchissement (MAJ-F5) pour que les changements " "prennent effets" #: ../../static/t/iconbar/edit.html:11 msgid "Display icons as:" msgstr "Afficher les entrées du menu comme:" #: ../../static/t/iconbar/edit.html:12 msgid "pictures and text" msgstr "icônes et textes" #: ../../static/t/iconbar/edit.html:13 msgid "pictures only" msgstr "icônes seulement" #: ../../static/t/iconbar/edit.html:14 msgid "text only" msgstr "textes seulement" #: ../../static/t/iconbar/edit.html:16 msgid "" "Select the icons you would like to see displayed in the 'icon bar' menu on " "the left side of the screen." msgstr "" "Sélectionnez les icônes que vous souhaitez afficher dans le menu situé à " "gauche de l'écran." #: ../../static/t/iconbar/edit.html:23 msgid "Site logo" msgstr "Logo du site" #: ../../static/t/iconbar/edit.html:23 msgid "An icon describing this site" msgstr "Une icône représentative de ce site" #: ../../static/t/iconbar/edit.html:29 msgid "Your summary page" msgstr "Votre tableau de bord" #: ../../static/t/iconbar/edit.html:36 msgid "Mail (inbox)" msgstr "Courrier (boîte de réception)" #: ../../static/t/iconbar/edit.html:36 msgid "A shortcut to your email Inbox" msgstr "Raccourci vers votre boîte de réception" #: ../../static/t/iconbar/edit.html:42 msgid "Your personal address book" msgstr "Votre carnet d'adresses personnel" #: ../../static/t/iconbar/edit.html:49 msgid "Your personal notes" msgstr "Vos notes personnelles" #: ../../static/t/iconbar/edit.html:55 msgid "A shortcut to your personal calendar" msgstr "Raccourci vers votre agenda personnel" #: ../../static/t/iconbar/edit.html:61 msgid "A shortcut to your personal task list" msgstr "Raccourci vers votre liste de tâches personnelles" #: ../../static/t/iconbar/edit.html:67 msgid "" "Clicking this icon displays a list of all accessible rooms (or folders) " "available." msgstr "La liste des paliers et de tous les salons accessibles" #: ../../static/t/iconbar/edit.html:73 msgid "Who is online?" msgstr "Qui est connecté ?" #: ../../static/t/iconbar/edit.html:73 msgid "Clicking this icon displays a list of all users currently logged in." msgstr "La liste de tous les usagers connectés" #: ../../static/t/iconbar/edit.html:79 msgid "" "Clicking this icon enters real-time chat mode with other users in the same " "room." msgstr "Clavarder avec les autres personnes présentes dans ce salon." #: ../../static/t/iconbar/edit.html:85 msgid "Advanced options" msgstr "Options avancées" #: ../../static/t/iconbar/edit.html:85 msgid "Access to the complete menu of Citadel functions." msgstr "Accès à l'ensemble des fonctions de Citadel." #: ../../static/t/iconbar/edit.html:91 msgid "Citadel logo" msgstr "Logo de Citadel" #: ../../static/t/iconbar/edit.html:91 msgid "Displays the 'Powered by Citadel' icon" msgstr "Affiche l'icône 'Powered by Citadel'" #: ../../static/t/room/edit/tab_expire.html:8 msgid "Message expire policy for this room" msgstr "Politique d'expiration des messages de ce salon" #: ../../static/t/room/edit/tab_expire.html:14 msgid "Use the default policy for this floor" msgstr "Utiliser la politique par défaut pour ce palier" #: ../../static/t/room/edit/tab_expire.html:36 msgid "Message expire policy for this floor" msgstr "Règles d'expiration des messages de ce palier" #: ../../static/t/room/edit/tab_expire.html:42 msgid "Use the system default" msgstr "Utiliser la configuration par défaut" #: ../../static/t/room/edit/editroom.html:5 ../../static/t/room/edit.html:6 msgid "Configuration" msgstr "Configuration" #: ../../static/t/room/edit/editroom.html:6 ../../static/t/room/edit.html:7 msgid "Message expire policy" msgstr "Politique d'expiration des messages" #: ../../static/t/room/edit/editroom.html:7 ../../static/t/room/edit.html:8 msgid "Access controls" msgstr "Contrôles d'accès" #: ../../static/t/room/edit/editroom.html:8 ../../static/t/room/edit.html:9 msgid "Sharing" msgstr "Partage" #: ../../static/t/room/edit/editroom.html:9 ../../static/t/room/edit.html:10 msgid "Mailing list service" msgstr "Service des listes de diffusion" #: ../../static/t/room/edit/editroom.html:10 ../../static/t/room/edit.html:11 msgid "Remote retrieval" msgstr "Récupération à distance" #: ../../static/t/room/edit/tab_config.html:6 msgid "name of room: " msgstr "nom de la salle: " #: ../../static/t/room/edit/tab_config.html:10 #: ../../static/t/room/create.html:20 msgid "Resides on floor: " msgstr "Réside sur le palier : " #: ../../static/t/room/edit/tab_config.html:16 #: ../../static/t/room/create.html:68 msgid "Type of room:" msgstr "Type de salon :" #: ../../static/t/room/edit/tab_config.html:22 #: ../../static/t/room/create.html:73 msgid "Public (automatically appears to everyone)" msgstr "Public (est visible de tous les usagers)" #: ../../static/t/room/edit/tab_config.html:28 #: ../../static/t/room/create.html:77 msgid "Private - hidden (accessible to anyone who knows its name)" msgstr "Privé - caché (accessible à quiconque connaît son nom)" #: ../../static/t/room/edit/tab_config.html:35 #: ../../static/t/room/create.html:81 msgid "Private - require password: " msgstr "Privé - le mot de passe est requis : " #: ../../static/t/room/edit/tab_config.html:44 #: ../../static/t/room/create.html:86 msgid "Private - invitation only" msgstr "Privé - seulement sur invitation" #: ../../static/t/room/edit/tab_config.html:51 #: ../../static/t/room/create.html:90 msgid "Personal (mailbox for you only)" msgstr "Personnel (une boîte aux lettres pour vous seulement)" #: ../../static/t/room/edit/tab_config.html:55 msgid "If private, cause current users to forget room" msgstr "Si ce salon est privé, cela force les usagers à le sauter" #: ../../static/t/room/edit/tab_config.html:61 msgid "Preferred users only" msgstr "Réservé aux usagers privilégiés" #: ../../static/t/room/edit/tab_config.html:66 msgid "Read-only room" msgstr "Salon en lecture seulement" #: ../../static/t/room/edit/tab_config.html:71 msgid "All users allowed to post may also delete messages" msgstr "" "Tous les usagers autorisés à poster peuvent aussi supprimer les messages" #: ../../static/t/room/edit/tab_config.html:76 msgid "File directory room" msgstr "Dépot de fichiers" #: ../../static/t/room/edit/tab_config.html:80 msgid "Directory name: " msgstr "Nom du répertoire : " #: ../../static/t/room/edit/tab_config.html:86 msgid "Uploading allowed" msgstr "Téléversement autorisé" #: ../../static/t/room/edit/tab_config.html:91 msgid "Downloading allowed" msgstr "Téléchargement autorisé" #: ../../static/t/room/edit/tab_config.html:96 msgid "Visible directory" msgstr "Répertoire visible" #: ../../static/t/room/edit/tab_config.html:103 msgid "Network shared room" msgstr "Salon partagé via le réseau" #: ../../static/t/room/edit/tab_config.html:108 msgid "Permanent (does not auto-purge)" msgstr "Permanent (pas de purge automatique des contenus)" #: ../../static/t/room/edit/tab_config.html:113 msgid "Subject Required (Force users to specify a message subject)" msgstr "L'objet est requis (les usagers sont obligés de remplir ce champ)" #: ../../static/t/room/edit/tab_config.html:116 msgid "Anonymous messages" msgstr "Messages anonymes" #: ../../static/t/room/edit/tab_config.html:122 msgid "No anonymous messages" msgstr "Pas de messages anonymes" #: ../../static/t/room/edit/tab_config.html:127 msgid "All messages are anonymous" msgstr "Tous les messages sont anonymes" #: ../../static/t/room/edit/tab_config.html:132 msgid "Prompt user when entering messages" msgstr "Invite l'utilisateur à la saisie de message" #: ../../static/t/room/edit/tab_config.html:136 msgid "Room aide: " msgstr "Administrateur " #: ../../static/t/room/edit/tab_listserv.html:5 msgid "" "The contents of this room are being mailed as individual messages " "to the following list recipients:

    " msgstr "" "Les contenus de ce salon seront envoyés par email sous forme de " "messages individuels à la liste de destinataires:

    " #: ../../static/t/room/edit/tab_listserv.html:19 msgid "" "The contents of this room are being mailed in digest form to the " "following list recipients:

    " msgstr "" "Les contenus de ce salon seront envoyés par email sous forme de " "resumé à la liste de destinataires:

    " #: ../../static/t/room/edit/tab_listserv.html:39 msgid "Add recipients from Contacts or other address books" msgstr "Ajoutez des destinataires de Contacts ou d'autres carnets d'adresses" #: ../../static/t/room/edit/tab_listserv.html:48 msgid "Allow non-subscribers to mail to this room." msgstr "Permettre aux non abonnés de poster dans ce salon." #: ../../static/t/room/edit/tab_listserv.html:54 msgid "Room post publication needs Admin permission." msgstr "Publier dans ce salon nécessite la permission de l'administrateur." #: ../../static/t/room/edit/tab_listserv.html:59 msgid "Allow self-service subscribe/unsubscribe requests." msgstr "Permettre l'inscription et la désinscription en libre service." #: ../../static/t/room/edit/tab_listserv.html:65 msgid "The URL for subscribe/unsubscribe is: " msgstr "L'URL pour s'abonner ou se désabonner est : " #: ../../static/t/room/edit/digestrecp_removal.html:1 #: ../../static/t/room/edit/pop3client_removal.html:9 #: ../../static/t/room/edit/listrecp_removal.html:1 #: ../../static/t/room/edit/rssclient_removal.html:5 msgid "(remove)" msgstr "(enlever)" #: ../../static/t/room/edit/tab_admin.html:5 msgid "Delete this room" msgstr "Supprimer ce salon" #: ../../static/t/room/edit/tab_admin.html:10 msgid "Set or change the icon for this rooms banner" msgstr "Définir ou changer l'icône de ce salon" #: ../../static/t/room/edit/tab_admin.html:14 msgid "Edit this rooms Info file" msgstr "Editer les informations de ce salon" #: ../../static/t/room/edit/tab_share.html:5 msgid "Shared with" msgstr "Partagé avec" #: ../../static/t/room/edit/tab_share.html:6 msgid "Not shared with" msgstr "Pas de partage avec" #: ../../static/t/room/edit/tab_share.html:11 #: ../../static/t/room/edit/tab_share.html:21 msgid "Remote node name" msgstr "Nom du nœud distant" #: ../../static/t/room/edit/tab_share.html:12 #: ../../static/t/room/edit/tab_share.html:22 msgid "Remote room name" msgstr "Nom du salon distant" #: ../../static/t/room/edit/tab_share.html:13 #: ../../static/t/room/edit/tab_share.html:23 msgid "Actions" msgstr "Actions" #: ../../static/t/room/edit/tab_share.html:35 msgid "" "When sharing a room, it must be shared from both ends. Adding a node to the " "'shared' list sends messages out, but in order to receive messages, the " "other nodes must be configured to send messages out to your system as well. " "
  • If the remote room name is blank, it is assumed that the room name is " "identical on the remote node.
  • If the remote room name is different, the " "remote node must also configure the name of the room here." msgstr "" "Lors du partage d'un salon, le salon doit être partagé avec le même nom des " "deux cotés, et les deux cotés doivent partager le nœud.
  • Si le nom du " "salon est vide ici, elle est supposée l'être de l'autre coté aussi.
  • Si le " "nom du salon est différent, se nom de salon doit aussi être renseigné ici." #: ../../static/t/room/edit/tab_feed.html:2 msgid "" "Retrieve messages from these remote POP3 accounts and store them in this " "room:" msgstr "" "Récupérer les messages de comptes POP3 distants et les stocker dans ce salon " ":" #: ../../static/t/room/edit/tab_feed.html:12 msgid "Remote host" msgstr "Serveurs de relais" #: ../../static/t/room/edit/tab_feed.html:15 msgid "Keep messages on server?" msgstr "Garder les messages sur le serveur?" #: ../../static/t/room/edit/tab_feed.html:16 msgid "Interval" msgstr "Intervalle" #: ../../static/t/room/edit/tab_feed.html:31 msgid "Fetch the following RSS feeds and store them in this room:" msgstr "Récupérer les flux RSS suivants et les stocker dans ce salon :" #: ../../static/t/room/edit/tab_feed.html:43 msgid "Feed URL" msgstr "URL du flux" #: ../../static/t/room/edit/tab_access.html:5 msgid "" "The users listed below have access to this room. To remove a user from the " "access list, select the user name from the list and click 'Kick'." msgstr "" "Les utilisateurs suivant ont accès au salon. Pour supprimer un utilisateur " "de la liste d'accès, sélectionnez l'utilisateur et clickez 'éjecter'." #: ../../static/t/room/edit/tab_access.html:20 msgid "" "To grant another user access to this room, enter the user name in the box " "below and click 'Invite'." msgstr "" "Pour accorder l'accès à ce salon à un usager, entrer son identifiant dans le " "champ de saisie ci-dessous et cliquer sur 'Inviter'." #: ../../static/t/room/edit/tab_access.html:26 msgid "Invite:" msgstr "Inviter :" #: ../../static/t/room/edit/tab_access.html:35 msgid "Users" msgstr "Usagers" #: ../../static/t/room/zapped_list.html:7 msgid "Zapped (forgotten) rooms" msgstr "Salons mis de côté (sautés)" #: ../../static/t/room/zapped_list.html:10 msgid "Click on any room to un-zap it and goto that room." msgstr "" "Cliquer sur n'importe quel salon pour le réactiver et aller à ce salon" #: ../../static/t/room/display_private.html:7 msgid "Go to a hidden room" msgstr "Allez à un salon caché" #: ../../static/t/room/display_private.html:8 msgid "" "If you know the name of a hidden (guess-name) or passworded room, you can " "enter that room by typing its name below. Once you gain access to a private " "room, it will appear in your regular room listings so you don‘t have to keep " "returning here." msgstr "" "Si vous connaissez le nom caché (devinez le nom) ou le mot de passe d'un " "salon caché, vous pouvez entrer dans ce salon en saisissant son nom ci-" "dessous. Une fois que vous aurrez rejoint le salon privé, elle apparaîtra " "dans la liste de vos salons habituels, de sorte à ce que vous n'ayez plus " "besoin de revenir ici." #: ../../static/t/room/display_private.html:14 msgid "Enter room name:" msgstr "Écrivez le nom du salon :" #: ../../static/t/room/display_private.html:21 msgid "Enter room password:" msgstr "Écrivez le mot de passe pour accéder au salon :" #: ../../static/t/room/create.html:11 #: ../../static/t/menu/advanced_roomcommands.html:6 msgid "Create a new room" msgstr "Créer un nouveau salon" #: ../../static/t/room/create.html:18 msgid "Name of room: " msgstr "Nom du salon : " #: ../../static/t/room/create.html:32 msgid "Default view for room: " msgstr "Vue par défaut de ce salon : " #: ../../static/t/room/zap_this.html:3 msgid "Zap (forget/unsubscribe) the current room" msgstr "Sauter (mettre de côté) le salon courant" #: ../../static/t/room/zap_this.html:6 msgid "If you select this option," msgstr "Si vous séléctionnez cette option," #: ../../static/t/room/zap_this.html:8 msgid "will disappear from your room list. Is this what you wish to do?" msgstr "va disparaitre de se salon. Est-ce ce que vous désirez ?" #: ../../static/t/menu/your_info.html:2 msgid "Change your preferences and settings" msgstr "Changer vos préférences et options" #: ../../static/t/menu/your_info.html:3 msgid "Update your contact information" msgstr "Mettre à jours vos données personnelles" #: ../../static/t/menu/your_info.html:5 msgid "Enter your 'bio'" msgstr "Entrer votre 'biographie'" #: ../../static/t/menu/your_info.html:6 msgid "Edit your online photo" msgstr "Poser votre portrait" #: ../../static/t/menu/your_info.html:8 msgid "Edit your push email settings" msgstr "Éditer les paramètres pour faire suivre les courriels." #: ../../static/t/menu/your_info.html:9 msgid "Manage your OpenIDs" msgstr "Gérer vos OpenIDs" #: ../../static/t/menu/basic_commands.html:3 msgid "List known rooms" msgstr "Liste des salons connus" #: ../../static/t/menu/basic_commands.html:3 msgid "Where can I go from here?" msgstr "Où puis-je aller à partir d'ici ?" #: ../../static/t/menu/basic_commands.html:4 ../../static/t/navbar.html:168 msgid "Goto next room" msgstr "Aller au prochain salon" #: ../../static/t/menu/basic_commands.html:4 msgid "...with unread messages" msgstr "... avec des messages non lus" #: ../../static/t/menu/basic_commands.html:5 msgid "Skip to next room" msgstr "Passer au salon suivant" #: ../../static/t/menu/basic_commands.html:5 msgid "(come back here later)" msgstr "Revenir ici plus tard" #: ../../static/t/menu/basic_commands.html:6 ../../static/t/navbar.html:5 msgid "Ungoto" msgstr "Revenir" #: ../../static/t/menu/basic_commands.html:6 msgid "oops! Back to " msgstr "oops! Retour à " #: ../../static/t/menu/basic_commands.html:10 ../../static/t/navbar.html:13 msgid "Read new messages" msgstr "Lire les nouveaux messages" #: ../../static/t/menu/basic_commands.html:10 msgid "...in this room" msgstr "... dans ce salon" #: ../../static/t/menu/basic_commands.html:11 ../../static/t/navbar.html:19 msgid "Read all messages" msgstr "Lire tous les messages" #: ../../static/t/menu/basic_commands.html:11 msgid "...old and new" msgstr "... anciens et nouveaux" #: ../../static/t/menu/basic_commands.html:12 ../../static/t/navbar.html:25 msgid "Enter a message" msgstr "Écrire un message" #: ../../static/t/menu/basic_commands.html:12 msgid "(post in this room)" msgstr "Poster dans ce salon" #: ../../static/t/menu/basic_commands.html:13 msgid "File library" msgstr "Dépôt des fichiers" #: ../../static/t/menu/basic_commands.html:13 msgid "(List files available for download)" msgstr "(Liste des fichiers à télécharger)" #: ../../static/t/menu/basic_commands.html:17 msgid "Summary page" msgstr "Tableau de bord" #: ../../static/t/menu/basic_commands.html:17 msgid "Summary of my account" msgstr "Informations sur mon compte" #: ../../static/t/menu/basic_commands.html:18 msgid "User list" msgstr "Liste des usagers" #: ../../static/t/menu/basic_commands.html:18 msgid "(all registered users)" msgstr "Tous les usagers enregistrés" #: ../../static/t/menu/basic_commands.html:19 msgid "Bye!" msgstr "Au revoir !" #: ../../static/t/menu/advanced_roomcommands.html:3 msgid "Edit or delete this room" msgstr "Éditer ou supprimer ce salon" #: ../../static/t/menu/advanced_roomcommands.html:5 msgid "Go to a 'hidden' room" msgstr "Rejoindre un salon 'caché'" #: ../../static/t/menu/advanced_roomcommands.html:7 msgid "Zap (forget) this room" msgstr "Sauter (mettre de côté) ce salon" #: ../../static/t/menu/advanced_roomcommands.html:8 msgid "List all forgotten rooms" msgstr "Liste de tous les salons mis de côté" #: ../../static/t/navbar.html:34 msgid "View contacts" msgstr "Voir les contacts" #: ../../static/t/navbar.html:40 msgid "Add new contact" msgstr "Ajouter un nouveau contact" #: ../../static/t/navbar.html:49 msgid "Day view" msgstr "Vue journalière" #: ../../static/t/navbar.html:55 msgid "Month view" msgstr "Vue mensuelle" #: ../../static/t/navbar.html:61 msgid "Add new event" msgstr "Ajouter un événement" #: ../../static/t/navbar.html:70 msgid "Calendar list" msgstr "Agenda" #: ../../static/t/navbar.html:79 msgid "View tasks" msgstr "Voir les tâches" #: ../../static/t/navbar.html:85 msgid "Add new task" msgstr "Ajouter une tâche" #: ../../static/t/navbar.html:94 msgid "View notes" msgstr "Voir les notes" #: ../../static/t/navbar.html:101 msgid "Add new note" msgstr "Ajouter une note" #: ../../static/t/navbar.html:110 msgid "Refresh message list" msgstr "Rafraichir la liste des messages" #: ../../static/t/navbar.html:122 msgid "Write mail" msgstr "Écrire un message" #: ../../static/t/navbar.html:132 msgid "Wiki home" msgstr "Accueil Wiki" #: ../../static/t/navbar.html:139 msgid "Edit this page" msgstr "Modifier cette page" #: ../../static/t/navbar.html:145 msgid "History" msgstr "Hstorique" #: ../../static/t/navbar.html:154 msgid "New blog post" msgstr "Nouvelle publication de blog" #: ../../static/t/navbar.html:162 msgid "Skip this room" msgstr "Passer ce salon" #: ../../static/t/msg_listview.html:18 msgid "Loading messages from server, please wait" msgstr "Chargement en cours des messages depuis les serveurs. SVP patientez." #: ../../static/t/msg_listview.html:24 msgid "Open in new window" msgstr "Ouvrir dans une nouvelle fenêtre" #: ../../static/t/msg_listview.html:26 msgid "Copy" msgstr "Copier" #: ../../static/t/view_mailq/message.html:6 msgid "Originaly posted in: " msgstr "Initalement posté dans: " #: ../../static/t/view_mailq/header.html:15 msgid "Refresh this page" msgstr "Actualiser cette page" #: ../../static/t/view_mailq/header.html:21 msgid "Message ID" msgstr "Référence du messages" #: ../../static/t/view_mailq/header.html:23 msgid "Date/time submitted" msgstr "Date et heure de soumission" #: ../../static/t/view_mailq/header.html:25 msgid "Next attempt" msgstr "Prochain essait" #: ../../static/t/view_mailq/header.html:29 msgid "Recipients" msgstr "Destinataires" #: ../../static/t/view_mailq/footer_empty.html:4 msgid "The queue is empty." msgstr "La file d'attente est vide." #: ../../static/t/view_mailq/footer_empty.html:9 #: ../../static/t/view_mailq/footer.html:5 msgid "You do not have permission to view this resource." msgstr "Vous n'avez pas accès à cette ressource." #: ../../static/t/get_logged_in.html:5 msgid "You must be logged in to access this page." msgstr "Vous devez être connecté pour accéder à cette page." #: ../../static/t/get_logged_in.html:9 #: ../../static/t/edit_message/attachments_pane.html:3 msgid "Close window" msgstr "Fermer la fenêtre" #: ../../static/t/get_logged_in.html:55 msgid "Log in using a user name and password" msgstr "Se connecter en utilisant identifiant et mot de passe" #: ../../static/t/get_logged_in.html:60 ../../static/t/get_logged_in.html:75 msgid "Password:" msgstr "Mot de passe :" #: ../../static/t/get_logged_in.html:65 ../../static/t/get_logged_in.html:69 msgid "New user? Register now" msgstr "Nouvel utilisateur? Inscrivez-vous maintenant" #: ../../static/t/get_logged_in.html:70 msgid "" "enter the name and password you wish to use, and click "New User." " msgstr "" "entrez l'identifiant et le mot de passe que vous souhaitez utiliser et " "cliquez sur "Nouvel usager." " #: ../../static/t/get_logged_in.html:83 msgid "Log in using OpenID" msgstr "Se connecter en utilisant OpenID" #: ../../static/t/get_logged_in.html:85 msgid "OpenID URL:" msgstr "adresse OpenID :" #: ../../static/t/get_logged_in.html:92 msgid "Log in using Google" msgstr "Connection en utilisant Google" #: ../../static/t/get_logged_in.html:97 msgid "Log in using Yahoo" msgstr "Connection en utilisant Yahoo" #: ../../static/t/get_logged_in.html:102 msgid "Log in using AOL or AIM" msgstr "Connection en utilisant AOL ou AIM" #: ../../static/t/get_logged_in.html:104 msgid "Enter your AOL or AIM screen name:" msgstr "Saisissez votre nom d'utilisateur AOL ou AIM:" #: ../../static/t/get_logged_in.html:115 msgid "Please wait" msgstr "S'il vous plaît, patientez pendant" #: ../../static/t/summary/page.html:4 msgid "Summary page for " msgstr "Page récapitulatif de " #: ../../static/t/summary/page.html:21 msgid "Messages" msgstr "Messages" #: ../../static/t/summary/page.html:39 msgid "Today on your calendar" msgstr "Votre agenda d'aujourd'hui" #: ../../static/t/summary/page.html:51 msgid "Who‘s online now" msgstr "Qui est en ligne maintenant" #: ../../static/t/summary/page.html:60 msgid "About this server" msgstr "À propos de ce serveur" #: ../../static/t/summary/page.html:63 msgid "You are connected to" msgstr "Vous êtes connecté à" #: ../../static/t/summary/page.html:64 msgid "running" msgstr "en cours d'exécution" #: ../../static/t/summary/page.html:65 msgid "with" msgstr "avec" #: ../../static/t/summary/page.html:66 msgid "server build" msgstr "build serveur" #: ../../static/t/summary/page.html:67 msgid "and located in" msgstr "et situé dans" #: ../../static/t/summary/page.html:68 msgid "Your system administrator is" msgstr "Votre administrateur système est" #: ../../static/t/edit_message/attachments_pane.html:16 msgid "Attach file" msgstr "Joindre un fichier" #: ../../static/t/edit_message/attachments_pane.html:21 msgid "Upload" msgstr "Télécharger" #: ../../static/t/edit_message/section_attach_select.html:4 msgid "Remove" msgstr "Supprimer" #: ../../static/t/loggedinas.html:3 msgid "Logged in as" msgstr "Connecté en tant que" #: ../../static/t/loggedinas.html:6 msgid "Not logged in." msgstr "Non connecté." #~ msgid "A script by that name already exists." #~ msgstr "Il existe déjà un script avec ce nom." #~ msgid "" #~ "A new script has been created. Return to the script editing screen to " #~ "edit and activate it." #~ msgstr "" #~ "Un nouveau script a été créé. Retourner à l'écran de modification des " #~ "scripts pour le modifier et l'activer." #~ msgid "Create" #~ msgstr "Créer" #~ msgid "Delete script" #~ msgstr "Supprimer ce script" #~ msgid "Delete this script?" #~ msgstr "Supprimer ce script ?" #~ msgid "Move rule up" #~ msgstr "Monter la règle" #~ msgid "Move rule down" #~ msgstr "Descendre la règle" #~ msgid "Delete rule" #~ msgstr "Supprimer une règle" #~ msgid "Reset form" #~ msgstr "Réinitialiser le formulaire" #~ msgid "" #~ "You are connected to %s, running %s with %s, server build %s and located " #~ "in %s. Your system administrator is %s." #~ msgstr "" #~ "Vous êtes connecté(e) à %s qui est servi par %s avec %s (révision %s) et " #~ "situé à %s. Votre administrateur système est %s." #~ msgid "Yes with users list" #~ msgstr "Oui, avec la liste des usagers" #~ msgid "Room list" #~ msgstr "Liste des salons" #, fuzzy #~ msgid "uname" #~ msgstr "Nom du fichier" #, fuzzy #~ msgid "text" #~ msgstr "textes seulement" #, fuzzy #~ msgid "name" #~ msgstr "Nom du fichier" #, fuzzy #~ msgid "pname" #~ msgstr "Nom du fichier" #, fuzzy #~ msgid "password" #~ msgstr "Mot de passe" #, fuzzy #~ msgid "pass" #~ msgstr "Tâches" #, fuzzy #~ msgid "display: none" #~ msgstr "Nom affiché :" #~ msgid "Your password was not accepted." #~ msgstr "Votre mot de passe a été refusé." #~ msgid "If you already have an account on" #~ msgstr "Si vous avez déjà un compte sur" #, fuzzy #~ msgid "enter your user name and password and click "Log in."" #~ msgstr "" #~ "entrez votre identifiant et votre mot de passe puis cliquez sur "" #~ "Login."" #~ msgid "Please log off properly when finished. " #~ msgstr "Fermez votre session proprement en quittant. " #~ msgid "See the" #~ msgstr "Voir la" #~ msgid "recommended browser list" #~ msgstr "liste des navigateurs recommandés" #~ msgid "" #~ "if you have trouble using Webcit.
  • You must have cookies " #~ "turned on. " #~ msgstr "" #~ "Si Webcit présente des dysfonctionnement.
  • Vous devez activer les " #~ "cookies " #~ msgid "" #~ "Also keep in mind that if your browser is configured to block pop-up " #~ "windows, you will not be able to receive any instant messages." #~ msgstr "" #~ "Gardez aussi à l'esprit que si votre navigateur est configuré pour " #~ "bloquer les pop-ups intempestives vous ne recevrez aucun message " #~ "instantané." #, fuzzy #~ msgid "Enter your OpenID URL and click "Log in"." #~ msgstr "Entrez votre adresse OpenID et cliquez sur "Connecter"." #~ msgid "Click here to learn what OpenID is and how Citadel is using it." #~ msgstr "" #~ "Cliquez ici pour savoir ce qu'est OpenID et comment Citadel l'utilise." #~ msgid "Exit" #~ msgstr "Quitter" #~ msgid "Change name" #~ msgstr "Renommer" #~ msgid "Change CSS" #~ msgstr "Changer la feuille CSS" #~ msgid "Create new floor" #~ msgstr "Créer un nouveau palier" #~ msgid "" #~ "You have one or more instant messages waiting, but the Citadel Instant " #~ "Messenger window failed to open. This is probably because you have a " #~ "popup blocker installed. Please configure your popup blocker to allow " #~ "popups from this site if you wish to receive instant messages." #~ msgstr "" #~ "Vous avez un ou plusieurs messages instantanés en attente, mais il est " #~ "impossible d'ouvrir une fenêtre de lecture. Le blocage des pop-ups " #~ "intempestives est probablement activé, SVP configurez votre navigateur " #~ "pour les autoriser (au moins pour Citadel) si vous souhaitez lire les " #~ "messages instantanés." #~ msgid "The citadel server has to be restarted. It will be back in a minute." #~ msgstr "" #~ "Le serveur Citadel doit redémarrer. Il sera de nouveau en service dans " #~ "une minute" #~ msgid "Change" #~ msgstr "Changer" #~ msgid "Add node?" #~ msgstr "Ajouter un noeud ?" #~ msgid "idle since" #~ msgstr "idle since" #~ msgid "Minutes" #~ msgstr "minutes" #~ msgid "active" #~ msgstr "actif" #~ msgid "Send" #~ msgstr "Envoyer" #~ msgid "Pictures in" #~ msgstr "Images dans" #~ msgid "Edit configuration" #~ msgstr "Modifier la configuration" #~ msgid "Edit address book entry" #~ msgstr "Modifier un contact du carnet d'adresse" #~ msgid "Delete user" #~ msgstr "Supprimer un usager" #~ msgid "Delete this user?" #~ msgstr "Supprimer cet usager ?" #, fuzzy #~ msgid "Delete File" #~ msgstr "Supprimer une règle" #~ msgid "Delete this message?" #~ msgstr "Détruire ce message ?" #~ msgid "Powered by Citadel" #~ msgstr "Motorisé par Citadel" #~ msgid "Go to your email inbox" #~ msgstr "Vers votre boîte de réception de courriels" #~ msgid "Go to your personal calendar" #~ msgstr "Vers votre agenda personnel" #~ msgid "Go to your personal address book" #~ msgstr "Vers votre carnet d'adresses personnel" #~ msgid "Go to your personal notes" #~ msgstr "Vers vos notes personnelles" #~ msgid "Go to your personal task list" #~ msgstr "Vers votre liste des tâches personnelles" #~ msgid "List all your accessible rooms" #~ msgstr "Liste de tous les salons qui vous sont accessibles" #~ msgid "See who is online right now" #~ msgstr "Voir qui est connecté en ce moment" #~ msgid "" #~ "Advanced Options Menu: Advanced Room commands, Account Info, and Chat" #~ msgstr "" #~ "Options avancées de gestion des salons, des comptes et du clavardage" #~ msgid "Room and system administration functions" #~ msgstr "Commandes d'administration des salons et du système" #~ msgid "Log off now?" #~ msgstr "Déconnexion immédiate ?" #~ msgid "Delete this entry?" #~ msgstr "Supprimer cette entrée ?" #~ msgid "Delete this note?" #~ msgstr "Supprimer cette note ?" #~ msgid "Do you really want to kill this session?" #~ msgstr "Voulez vous vraiment détruire cette session ?" #~ msgid "Save changes?" #~ msgstr "Conserver les modifications ?" #~ msgid "%d new of %d messages%s" #~ msgstr "%d nouveau(x) sur %d messages%s" #~ msgid "" #~ "Leave all messages marked as unread, go to next room with unread messages" #~ msgstr "" #~ "Laisser les messages sélectionnés comme non lus, aller au prochain salon " #~ "avec des messages non lus." #~ msgid "Mark all messages as read, go to next room with unread messages" #~ msgstr "" #~ "Marquer tous les messages comme lus, aller au prochain salon qui contient " #~ "des messages non lus." #~ msgid "Are you sure you want to delete this room?" #~ msgstr "Êtes vous sûr de vouloir supprimer ce salon ?" #~ msgid "Unshare" #~ msgstr "Arrêter le partage" #~ msgid "Share" #~ msgstr "Partager" #~ msgid "List" #~ msgstr "Liste" #~ msgid "Digest" #~ msgstr "Résumé" #~ msgid "Kick" #~ msgstr "Éjecter" #~ msgid "Invite" #~ msgstr "Inviter" #~ msgid "User" #~ msgstr "Usager" #~ msgid "Create new room" #~ msgstr "Créez un nouveau salon" #~ msgid "Go there" #~ msgstr "Aller là" #~ msgid "Zap this room" #~ msgstr "Mettre de côté ce salon" #~ msgid "(nothing)" #~ msgstr "(rien)" #~ msgid "unexpected end of message" #~ msgstr "fin de message inattendue" #~ msgid "An error occurred while setting up the chat socket." #~ msgstr "" #~ "Une erreur est survenue lors de l'établissement du canal du clavardage." #~ msgid "Now exiting chat mode." #~ msgstr "Sortie du mode clavardage." #~ msgid "Help" #~ msgstr "Admin" #~ msgid "List users" #~ msgstr "Liste des usagers" #~ msgid "No messages here." #~ msgstr "Pas de message ici." #, fuzzy #~ msgid "no more messages" #~ msgstr "Messages anonymes" #~ msgid "" #~ "Your icon bar has been updated. Please select any of its choices to " #~ "continue.
    You may need to force " #~ "refresh (SHIFT-F5) in order for changes to take effect" #~ msgstr "" #~ "Votre barre d'icônes a été mise à jour. SVP sélectionnez l'une de ses " #~ "options pour continuer.
    Vous " #~ "pouvez avoir besoin de rafraichir (SHIFT-F5) afin que les changement " #~ "prennent effets à l'affichage." #~ msgid "Email" #~ msgstr "Courriel" #~ msgid "Error retrieving RSS feed: couldn't find messages\n" #~ msgstr "" #~ "Erreur de récupération du flux RSS : impossible de trouver les messages\n" # c-format #~ msgid "%s from" #~ msgstr "%s de" #~ msgid "%s in %s" #~ msgstr "%s dans %s" #~ msgid " on %s" #~ msgstr "sur %s" #~ msgid "%s" #~ msgstr "%s" #~ msgid "" #~ "
    • Enter your OpenID URL and click "Login".
    • Click here to " #~ "learn what OpenID is and how Citadel is using it.
    • Please log off " #~ "properly when finished.
    • You must use a browser that supports " #~ "frames and cookies.
    • Also keep in mind that if your " #~ "browser is configured to block pop-up windows, you will not be able to " #~ "receive any instant messages.
    " #~ msgstr "" #~ "
    • Enter your OpenID URL and click "Login".
    • Click here to " #~ "learn what OpenID is and how Citadel is using it.
    • Please log off " #~ "properly when finished.
    • You must use a browser that supports " #~ "frames and cookies.
    • Also keep in mind that if your " #~ "browser is configured to block pop-up windows, you will not be able to " #~ "receive any instant messages.
    " #, fuzzy #~ msgid "" #~ "enter your user name and password and click "Login."
  • If " #~ "you are a new user, enter the name and password you wish to use, and " #~ "click "New User."
  • Please log off properly when finished. " #~ "
  • You must use a browser that supports frames and cookies.
  • Also keep in mind that if your browser is configured to block pop-" #~ "up windows, you will not be able to receive any instant messages." #~ msgstr "" #~ "
    • Si vous avez déjà un compte sur %s, entrez votre " #~ "identifiant et votre mot de passe puis cliquez sur "Login."
    • Si vous êtes un nouvel usager, entrez l'identifiant et le " #~ "mot de passe que vous souhaitez utiliser et cliquez sur "Nouvel " #~ "usager."
    • Fermez votre session proprement en quittant.
    • " #~ "
    • Vous devez employer un navigateur qui supporte les cadres et " #~ "les cookies
    • Gardez aussi à l'esprit que si votre " #~ "navigateur est configuré pour bloquer les pop-ups intempestives vous ne " #~ "recevrez aucun message instantané.
    " #~ msgid "Find out more about Citadel" #~ msgstr "En savoir plus à propos de Citadel" #~ msgid "CITADEL" #~ msgstr "CITADEL" #~ msgid "Customize this menu" #~ msgstr "Personnaliser ce menu" #~ msgid "Internet configuration" #~ msgstr "Configuration internet" #~ msgid "of %d messages." #~ msgstr "des %d messages." #~ msgid " from " #~ msgstr " de " #~ msgid " in " #~ msgstr " dans " #~ msgid "Edit node configuration for " #~ msgstr "Éditer la configuration du noeud " #~ msgid "" #~ "Postfix TCP " #~ "Dictionary Port (-1 to disable)" #~ msgstr "" #~ "Postfix TCP " #~ "Dictionary Port (-1 to disable)" #~ msgid "ERROR: could not open template " #~ msgstr "ERREUR : impossible d'ouvrir le modèle" #~ msgid "" #~ "This message contains calendaring/scheduling information, but support " #~ "for calendars is not available on this particular system. Please ask " #~ "your system administrator to install a new version of the Citadel web " #~ "service with calendaring enabled.
    \n" #~ msgstr "" #~ "Ce message contient des informations de gestion d'agenda et/ou de " #~ "planification, mais la prise en charge de ces informations n'est pas " #~ "disponible sur ce système. SVP demandez à votre administrateur de mettre " #~ "à jour le serveur Citadel et d'activer le service de gestion d'agenda et " #~ "de planification.
    \n" #~ msgid "" #~ "Cannot display calendar item. You are seeing this error because your " #~ "WebCit service has not been installed with calendar support. Please " #~ "contact your system administrator.
    \n" #~ msgstr "" #~ "Impossible d'afficher un événement. Vous voyez ce message car le " #~ "service d'agenda est désactivé sur ce serveur Citadel. SVP contactez " #~ "l'administrateur du système.
    \n" #~ msgid "" #~ "Cannot display to-do item. You are seeing this error because your " #~ "WebCit service has not been installed with calendar support. Please " #~ "contact your system administrator.
    \n" #~ msgstr "" #~ "Impossible d'afficher une tâche. Le service en question est désactivé " #~ "sur ce serveur Citadel. SVP contactez l'administrateur du système.
    \n" #~ msgid "Day: " #~ msgstr "Jour :" #~ msgid "Year: " #~ msgstr "Année :" #~ msgid "The calendar view is not available." #~ msgstr "Le calendrier n'est pas disponible." #~ msgid "The tasks view is not available." #~ msgstr "Le visualiseur des tâches n'est pas disponible." #~ msgid "Gateway domains" #~ msgstr "Domaines de niveau supérieur" #~ msgid "(domains whose subdomains match Citadel hosts)" #~ msgstr "(domaines dont les sous-domaines correspondent aux hôtes Citadel)" #~ msgid "(This server does not support task lists)" #~ msgstr "(Ce serveur ne supporte pas les listes de tâches)" #~ msgid "(This server does not support calendars)" #~ msgstr "(ce server ne supporte pas les agendas)" #~ msgid "" #~ "This room is not configured to allow self-service subscribe/" #~ "unsubscribe requests." #~ msgstr "" #~ "Ce salon n'est pas configuré pour autoriser les requêtes " #~ "d'inscriptions et de désinscriptions en libre-service." #~ msgid "Click to enable." #~ msgstr "Cliquer pour activer." #~ msgid "Back to menu" #~ msgstr "Retour au menu" #~ msgid "Respond to meeting request" #~ msgstr "Répondre à cette invitation." #~ msgid "Update your calendar with this RSVP" #~ msgstr "Mettre à jour votre agenda avec cette réponse." #~ msgid "Public room" #~ msgstr "Salon public" #~ msgid "Private - guess name" #~ msgstr "Privé - les invités sont nommés" #~ msgid "Private - require password:" #~ msgstr "Privé - accès par mot de passe" #~ msgid "localhost" #~ msgstr "localhost" #~ msgid "gatewaydomain" #~ msgstr "passerelle" #~ msgid "rbl" #~ msgstr "rbl" #~ msgid "spamassassin" #~ msgstr "spamassassin" webcit-8.24-dfsg.orig/po/webcit/tr.po0000644000175000017500000025004712271477123017270 0ustar michaelmichael# Turkish translation for citadel # Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 # This file is distributed under the same license as the citadel package. # FIRST AUTHOR , 2011. # msgid "" msgstr "" "Project-Id-Version: citadel\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-03-20 01:03-0400\n" "PO-Revision-Date: 2011-12-19 07:18+0000\n" "Last-Translator: Dennis T Kaplan \n" "Language-Team: Turkish \n" "Language: tr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2011-12-20 04:36+0000\n" "X-Generator: Launchpad (build 14538)\n" #: ../../roomops.c:708 ../../roomops.c:1005 ../../sieve.c:364 msgid "Cancelled. Changes were not saved." msgstr "" #: ../../roomops.c:838 ../../sieve.c:417 msgid "Your changes have been saved." msgstr "" #: ../../roomops.c:881 #, c-format msgid "User '%s' kicked out of room '%s'." msgstr "" #: ../../roomops.c:898 #, c-format msgid "User '%s' invited to room '%s'." msgstr "" #: ../../roomops.c:927 msgid "Cancelled. No new room was created." msgstr "" #: ../../roomops.c:1187 msgid "Floor has been deleted." msgstr "" #: ../../roomops.c:1211 msgid "New floor has been created." msgstr "" #: ../../roomops.c:1290 msgid "Room list view" msgstr "" #: ../../roomops.c:1293 msgid "Show empty floors" msgstr "" #: ../../roomviews.c:50 msgid "Bulletin Board" msgstr "" #: ../../roomviews.c:51 msgid "Mail Folder" msgstr "" #: ../../roomviews.c:52 msgid "Address Book" msgstr "" #: ../../roomviews.c:53 ../../static/t/iconbar.html:24 #: ../../static/t/iconbar/edit.html:55 msgid "Calendar" msgstr "" #: ../../roomviews.c:54 msgid "Task List" msgstr "" #: ../../roomviews.c:55 msgid "Notes List" msgstr "" #: ../../roomviews.c:56 msgid "Wiki" msgstr "" #: ../../roomviews.c:57 msgid "Calendar List" msgstr "" #: ../../roomviews.c:58 msgid "Journal" msgstr "" #: ../../roomviews.c:59 msgid "Drafts" msgstr "" #: ../../roomviews.c:60 msgid "Blog" msgstr "" #: ../../tasks.c:93 msgid "Completed?" msgstr "" #: ../../tasks.c:95 msgid "Name of task" msgstr "" #: ../../tasks.c:97 msgid "Date due" msgstr "" #: ../../tasks.c:99 msgid "Category" msgstr "" #: ../../tasks.c:101 msgid "Show All" msgstr "" #: ../../tasks.c:223 msgid "Edit task" msgstr "" #: ../../tasks.c:242 ../../calendar.c:98 ../../calendar_view.c:298 #: ../../calendar_view.c:959 ../../calendar_view.c:1003 #: ../../calendar_view.c:1084 msgid "Summary:" msgstr "" #: ../../tasks.c:253 msgid "Start date:" msgstr "" #: ../../tasks.c:261 ../../tasks.c:291 msgid "No date" msgstr "" #: ../../tasks.c:265 ../../tasks.c:294 msgid "or" msgstr "" #: ../../tasks.c:279 ../../tasks.c:308 msgid "Time associated" msgstr "" #: ../../tasks.c:283 msgid "Due date:" msgstr "" #: ../../tasks.c:312 msgid "Completed:" msgstr "" #: ../../tasks.c:323 msgid "Category:" msgstr "" #: ../../tasks.c:333 ../../calendar.c:159 ../../static/t/files.html:12 msgid "Description:" msgstr "" #: ../../tasks.c:351 ../../event.c:764 msgid "Save" msgstr "" #: ../../tasks.c:352 ../../event.c:765 ../../static/t/aide/inet/section.html:5 #: ../../static/t/view_blog/comment.html:12 #: ../../static/t/view_blog/post.html:15 ../../static/t/view_message.html:32 #: ../../static/t/navbar.html:116 ../../static/t/msg_listview.html:27 msgid "Delete" msgstr "" #: ../../tasks.c:353 ../../vcard_edit.c:1216 ../../paging.c:66 #: ../../event.c:767 ../../sysmsgs.c:69 ../../who.c:200 ../../auth.c:812 #: ../../static/t/edit_message.html:135 ../../static/t/confirmlogoff.html:4 msgid "Cancel" msgstr "İptal" #: ../../tasks.c:423 ../../calendar_view.c:1379 msgid "Untitled Task" msgstr "" #: ../../fmt_date.c:310 msgid "Time format" msgstr "" #: ../../listsub.c:54 ../../static/t/listsub/display.html:5 msgid "List subscription" msgstr "" #: ../../listsub.c:67 ../../static/t/listsub/display.html:9 msgid "List subscribe/unsubscribe" msgstr "" #: ../../listsub.c:87 ../../static/t/listsub/display.html:15 #: ../../static/t/listsub/display.html:34 msgid "Confirmation request sent" msgstr "" #: ../../listsub.c:89 #, c-format msgid "" "You are subscribing %s to the %s mailing list. The " "listserver has sent you an e-mail with one additional Web link for you to " "click on to confirm your subscription. This extra step is for your " "protection, as it prevents others from being able to subscribe you to lists " "without your consent.

    Please click on the link which is being e-" "mailed to you and your subscription will be confirmed.
    \n" msgstr "" #: ../../listsub.c:102 ../../static/t/listsub/display.html:24 msgid "Go back..." msgstr "" #: ../../listsub.c:253 ../../listsub.c:291 ../../listsub.c:327 #: ../../listsub.c:334 msgid "You need to specify the mailinglist to subscribe to." msgstr "" #: ../../listsub.c:260 ../../listsub.c:298 msgid "You need to specify the email address you'd like to subscribe with." msgstr "" #: ../../blogview_renderer.c:58 ../../blogview_renderer.c:74 #, c-format msgid "%d comments" msgstr "" #: ../../blogview_renderer.c:61 ../../blogview_renderer.c:77 msgid "permalink" msgstr "" #: ../../blogview_renderer.c:302 msgid "Newer posts" msgstr "" #: ../../blogview_renderer.c:311 msgid "Older posts" msgstr "" #: ../../useredit.c:629 msgid "" "An error occurred while trying to create or edit this address book entry." msgstr "" #: ../../useredit.c:717 msgid "Changes were not saved." msgstr "Değişiklikler kaydedilmedi." #: ../../useredit.c:782 msgid "A new user has been created." msgstr "Yeni bir kullanıcı oluşturuldu." #: ../../useredit.c:786 msgid "" "You are attempting to create a new user from within Citadel while running in " "host based authentication mode. In this mode, you must create new users on " "the host system, not within Citadel." msgstr "" #: ../../bbsview_renderer.c:312 msgid "Go to page: " msgstr "" #: ../../bbsview_renderer.c:354 msgid "First" msgstr "" #: ../../bbsview_renderer.c:360 msgid "Last" msgstr "" #: ../../graphics.c:56 msgid "Graphics upload has been cancelled." msgstr "" #: ../../graphics.c:62 msgid "You didn't upload a file." msgstr "" #: ../../graphics.c:112 msgid "your photo" msgstr "" #: ../../graphics.c:119 msgid "the icon for this room" msgstr "" #: ../../graphics.c:127 msgid "the Greetingpicture for the login prompt" msgstr "" #: ../../graphics.c:135 msgid "the Logoff banner picture" msgstr "" #: ../../graphics.c:146 msgid "the icon for this floor" msgstr "" #: ../../calendar_tools.c:100 msgid "Hour: " msgstr "Saat: " #: ../../calendar_tools.c:120 msgid "Minute: " msgstr "Dakika: " #: ../../calendar_tools.c:191 msgid "(status unknown)" msgstr "" #: ../../calendar_tools.c:207 msgid "(needs action)" msgstr "" #: ../../calendar_tools.c:210 msgid "(accepted)" msgstr "" #: ../../calendar_tools.c:213 msgid "(declined)" msgstr "" #: ../../calendar_tools.c:216 msgid "(tenative)" msgstr "" #: ../../calendar_tools.c:219 msgid "(delegated)" msgstr "" #: ../../calendar_tools.c:222 msgid "(completed)" msgstr "" #: ../../calendar_tools.c:225 msgid "(in process)" msgstr "" #: ../../calendar_tools.c:228 msgid "(none)" msgstr "" #: ../../notes.c:343 msgid "Click on any note to edit it." msgstr "Herhangi bir notu düzenlemek için tıklayın." #: ../../vcard_edit.c:175 ../../vcard_edit.c:178 msgid "(no name)" msgstr "" #: ../../vcard_edit.c:443 msgid " (work)" msgstr "" #: ../../vcard_edit.c:445 msgid " (home)" msgstr "" #: ../../vcard_edit.c:447 msgid " (cell)" msgstr "" #: ../../vcard_edit.c:458 ../../vcard_edit.c:1120 msgid "Address:" msgstr "" #: ../../vcard_edit.c:526 msgid "Telephone:" msgstr "" #: ../../vcard_edit.c:531 msgid "E-mail:" msgstr "" #: ../../vcard_edit.c:779 msgid "This address book is empty." msgstr "" #: ../../vcard_edit.c:793 msgid "An internal error has occurred." msgstr "" #: ../../vcard_edit.c:944 msgid "Error" msgstr "" #: ../../vcard_edit.c:1048 msgid "Edit contact information" msgstr "" #: ../../vcard_edit.c:1068 msgid "Prefix" msgstr "" #: ../../vcard_edit.c:1068 msgid "First Name" msgstr "" #: ../../vcard_edit.c:1068 msgid "Middle Name" msgstr "" #: ../../vcard_edit.c:1068 msgid "Last Name" msgstr "" #: ../../vcard_edit.c:1068 msgid "Suffix" msgstr "" #: ../../vcard_edit.c:1089 msgid "Display name:" msgstr "" #: ../../vcard_edit.c:1096 msgid "Title:" msgstr "" #: ../../vcard_edit.c:1103 msgid "Organization:" msgstr "" #: ../../vcard_edit.c:1114 msgid "PO box:" msgstr "" #: ../../vcard_edit.c:1130 msgid "City:" msgstr "" #: ../../vcard_edit.c:1136 msgid "State:" msgstr "" #: ../../vcard_edit.c:1142 msgid "ZIP code:" msgstr "" #: ../../vcard_edit.c:1148 msgid "Country:" msgstr "" #: ../../vcard_edit.c:1158 msgid "Home telephone:" msgstr "" #: ../../vcard_edit.c:1164 msgid "Work telephone:" msgstr "" #: ../../vcard_edit.c:1170 msgid "Mobile telephone:" msgstr "" #: ../../vcard_edit.c:1176 msgid "Fax number:" msgstr "" #: ../../vcard_edit.c:1187 msgid "Primary Internet e-mail address" msgstr "" #: ../../vcard_edit.c:1194 msgid "Internet e-mail aliases" msgstr "" #: ../../vcard_edit.c:1215 ../../sysmsgs.c:67 msgid "Save changes" msgstr "" #: ../../vcard_edit.c:1261 msgid "Unable to enter the room to save your message" msgstr "" #: ../../vcard_edit.c:1265 msgid "Aborting." msgstr "" #: ../../vcard_edit.c:1297 ../../vcard_edit.c:1341 ../../auth.c:367 #: ../../auth.c:397 msgid "An error has occurred." msgstr "" #: ../../vcard_edit.c:1399 msgid "Could Not decode vcard photo\n" msgstr "" #: ../../preferences.c:880 msgid "Cancelled. No settings were changed." msgstr "" #: ../../preferences.c:1092 msgid "Make this my start page" msgstr "" #: ../../preferences.c:1130 msgid "This isn't allowed to become the start page." msgstr "" #: ../../preferences.c:1132 msgid "You no longer have a start page selected." msgstr "" #: ../../preferences.c:1182 msgid "Prefered startpage" msgstr "" #: ../../calendar.c:76 msgid "Meeting invitation" msgstr "" #: ../../calendar.c:79 msgid "Attendee's reply to your invitation" msgstr "" #: ../../calendar.c:82 msgid "Published event" msgstr "" #: ../../calendar.c:85 msgid "This is an unknown type of calendar item." msgstr "" #: ../../calendar.c:107 ../../calendar_view.c:306 ../../calendar_view.c:964 #: ../../calendar_view.c:1008 ../../calendar_view.c:1089 msgid "Location:" msgstr "" #: ../../calendar.c:132 ../../calendar_view.c:351 ../../calendar_view.c:970 msgid "Date:" msgstr "" #: ../../calendar.c:139 ../../calendar_view.c:373 ../../calendar_view.c:1013 #: ../../calendar_view.c:1099 msgid "Starting date/time:" msgstr "" #: ../../calendar.c:150 ../../calendar_view.c:376 ../../calendar_view.c:1015 #: ../../calendar_view.c:1101 msgid "Ending date/time:" msgstr "" #: ../../calendar.c:168 ../../event.c:90 msgid "Recurrence" msgstr "" #: ../../calendar.c:169 ../../event.c:505 msgid "This is a recurring event" msgstr "" #: ../../calendar.c:178 msgid "Attendee:" msgstr "" #: ../../calendar.c:218 #, c-format msgid "This is an update of '%s' which is already in your calendar." msgstr "" #: ../../calendar.c:222 #, c-format msgid "This event would conflict with '%s' which is already in your calendar." msgstr "" #: ../../calendar.c:227 msgid "Update:" msgstr "" #: ../../calendar.c:228 msgid "CONFLICT:" msgstr "" #: ../../calendar.c:251 msgid "How would you like to respond to this invitation?" msgstr "" #: ../../calendar.c:252 msgid "Accept" msgstr "" #: ../../calendar.c:253 msgid "Tentative" msgstr "" #: ../../calendar.c:254 msgid "Decline" msgstr "" #: ../../calendar.c:271 msgid "Click Update to accept this reply and update your calendar." msgstr "" #: ../../calendar.c:272 msgid "Update" msgstr "" #: ../../calendar.c:273 msgid "Ignore" msgstr "" #: ../../calendar.c:295 msgid "There was an error parsing this calendar item." msgstr "" #: ../../calendar.c:328 msgid "" "You have accepted this meeting invitation. It has been entered into your " "calendar." msgstr "" #: ../../calendar.c:332 msgid "" "You have tentatively accepted this meeting invitation. It has been " "'pencilled in' to your calendar." msgstr "" #: ../../calendar.c:336 msgid "" "You have declined this meeting invitation. It has not been entered " "into your calendar." msgstr "" #: ../../calendar.c:341 msgid "A reply has been sent to the meeting organizer." msgstr "" #. / Translators: RSVP aka Répondez s'il-vous-plaît Is the term #. / that the recipient of an ical-invitation should please #. / answer this request. #: ../../calendar.c:376 msgid "Your calendar has been updated to reflect this RSVP." msgstr "" #: ../../calendar.c:378 msgid "" "You have chosen to ignore this RSVP. Your calendar has not been " "updated." msgstr "" #: ../../calendar.c:932 msgid "Calendar day view begins at:" msgstr "" #: ../../calendar.c:933 msgid "Calendar day view ends at:" msgstr "" #: ../../calendar.c:934 msgid "Week starts on:" msgstr "" #: ../../paging.c:35 msgid "Send instant message" msgstr "" #: ../../paging.c:43 msgid "Send an instant message to: " msgstr "" #: ../../paging.c:57 msgid "Enter message text:" msgstr "" #: ../../paging.c:65 ../../static/t/edit_message.html:109 msgid "Send message" msgstr "" #: ../../paging.c:84 msgid "Message was not sent." msgstr "" #: ../../paging.c:95 msgid "Message has been sent to " msgstr "" #: ../../iconbar.c:328 msgid "Iconbar Setting" msgstr "Simge Çubuğu Ayarı" #. #. * Set to 'unknown' right from the beginning. Unless we learn #. * something else, that's what we'll go with. #. #: ../../availability.c:148 msgid "availability unknown" msgstr "" #: ../../availability.c:169 msgid "free" msgstr "" #: ../../availability.c:179 msgid "BUSY" msgstr "" #: ../../serv_func.c:193 msgid "" "This server is already serving its maximum number of users and cannot accept " "any additional logins at this time. Please try again later or contact your " "system administrator." msgstr "" "Kullanıcı maksimum sayıda ve şu anda herhangi bir ek oturumları kabul " "edemez. Lütfen daha sonra tekrar deneyin veya sistem yöneticinize başvurun." #: ../../serv_func.c:198 ../../serv_func.c:227 msgid "Received unexpected answer from Citadel server; bailing out." msgstr "Citadel sunucudan beklenmeyen bir yanıt; dışarı balyalama." #: ../../serv_func.c:236 #, c-format msgid "" "You are connected to a Citadel server running Citadel %d.%02d. \n" "In order to run this version of WebCit you must also have Citadel %d.%02d or " "newer.\n" "\n" "\n" msgstr "" #: ../../event.c:70 msgid "seconds" msgstr "" #: ../../event.c:71 msgid "minutes" msgstr "" #: ../../event.c:72 msgid "hours" msgstr "" #: ../../event.c:73 msgid "days" msgstr "" #: ../../event.c:74 msgid "weeks" msgstr "" #: ../../event.c:75 msgid "months" msgstr "" #: ../../event.c:76 msgid "years" msgstr "" #: ../../event.c:77 msgid "never" msgstr "" #: ../../event.c:81 msgid "first" msgstr "" #: ../../event.c:82 msgid "second" msgstr "" #: ../../event.c:83 msgid "third" msgstr "" #: ../../event.c:84 msgid "fourth" msgstr "" #: ../../event.c:85 msgid "fifth" msgstr "" #: ../../event.c:88 msgid "Event" msgstr "" #: ../../event.c:89 ../../event.c:437 ../../event.c:449 msgid "Attendees" msgstr "" #: ../../event.c:167 msgid "Add or edit an event" msgstr "" #: ../../event.c:206 ../../static/t/iconbar.html:13 #: ../../static/t/iconbar/edit.html:29 msgid "Summary" msgstr "" #: ../../event.c:217 msgid "Location" msgstr "" #: ../../event.c:228 ../../calendar_view.c:760 msgid "Start" msgstr "" #: ../../event.c:271 ../../calendar_view.c:957 ../../calendar_view.c:986 msgid "All day event" msgstr "" #: ../../event.c:277 ../../calendar_view.c:761 msgid "End" msgstr "" #: ../../event.c:327 ../../static/t/iconbar.html:34 #: ../../static/t/iconbar/edit.html:49 msgid "Notes" msgstr "" #: ../../event.c:369 msgid "Organizer" msgstr "" #: ../../event.c:374 msgid "(you are the organizer)" msgstr "" #: ../../event.c:392 msgid "Show time as:" msgstr "" #: ../../event.c:415 msgid "Free" msgstr "" #: ../../event.c:423 msgid "Busy" msgstr "" #: ../../event.c:440 msgid "(One per line)" msgstr "" #: ../../event.c:450 ../../static/t/edit_message.html:143 #: ../../static/t/iconbar.html:29 ../../static/t/iconbar/edit.html:42 msgid "Contacts" msgstr "" #: ../../event.c:513 msgid "Recurrence rule" msgstr "" #: ../../event.c:517 msgid "Repeats every" msgstr "" #. begin 'weekday_selector' div #: ../../event.c:535 msgid "on these weekdays:" msgstr "" #: ../../event.c:593 #, c-format msgid "on day %s%d%s of the month" msgstr "" #: ../../event.c:602 ../../event.c:664 msgid "on the " msgstr "" #: ../../event.c:626 msgid "of the month" msgstr "" #: ../../event.c:655 msgid "every " msgstr "" #: ../../event.c:656 msgid "year on this date" msgstr "" #: ../../event.c:688 ../../static/t/msg_listselector_bottom.html:7 #: ../../static/t/msg_listselector_top.html:7 msgid "of" msgstr "" #: ../../event.c:712 msgid "Recurrence range" msgstr "" #: ../../event.c:720 msgid "No ending date" msgstr "" #: ../../event.c:727 msgid "Repeat this event" msgstr "" #: ../../event.c:730 msgid "times" msgstr "" #: ../../event.c:738 msgid "Repeat this event until " msgstr "" #: ../../event.c:766 msgid "Check attendee availability" msgstr "" #: ../../event.c:858 ../../calendar_view.c:272 ../../calendar_view.c:468 #: ../../calendar_view.c:937 msgid "Untitled Event" msgstr "" #: ../../sysmsgs.c:52 #, c-format msgid "Edit %s" msgstr "" #: ../../sysmsgs.c:55 #, c-format msgid "" "Enter %s below. Text is formatted to the reader's browser. A newline is " "forced by preceding the next line by a blank." msgstr "" #: ../../sysmsgs.c:89 #, c-format msgid "Cancelled. %s was not saved." msgstr "" #: ../../sysmsgs.c:109 msgid " has been saved." msgstr "" #: ../../sysmsgs.c:116 ../../sysmsgs.c:117 msgid "Room info" msgstr "" #: ../../sysmsgs.c:122 ../../sysmsgs.c:124 msgid "Your bio" msgstr "" #: ../../calendar_view.c:297 ../../calendar_view.c:958 #: ../../calendar_view.c:1002 ../../calendar_view.c:1083 #: ../../static/t/sieve/display_one.html:20 msgid "From" msgstr "" #: ../../calendar_view.c:355 ../../calendar_view.c:974 msgid "Starting date:" msgstr "" #: ../../calendar_view.c:361 ../../calendar_view.c:976 msgid "Ending date:" msgstr "" #: ../../calendar_view.c:369 ../../calendar_view.c:1095 msgid "Date/time:" msgstr "" #: ../../calendar_view.c:386 ../../calendar_view.c:980 #: ../../calendar_view.c:1018 ../../calendar_view.c:1105 #: ../../static/t/room/edit/tab_share.html:32 msgid "Notes:" msgstr "" #: ../../calendar_view.c:585 ../../calendar_view.c:721 msgid "previous" msgstr "" #: ../../calendar_view.c:597 ../../calendar_view.c:733 #: ../../calendar_view.c:1308 msgid "next" msgstr "" #: ../../calendar_view.c:756 msgid "Week" msgstr "" #: ../../calendar_view.c:758 msgid "Hours" msgstr "" #: ../../calendar_view.c:759 ../../static/t/sieve/display_one.html:22 #: ../../static/t/msg_listview.html:9 msgid "Subject" msgstr "" #: ../../calendar_view.c:1001 ../../calendar_view.c:1024 msgid "Ongoing event" msgstr "" #: ../../messages.c:70 msgid "ERROR:" msgstr "" #: ../../messages.c:88 msgid "Empty message" msgstr "" #: ../../messages.c:1010 msgid "Cancelled. Message was not posted." msgstr "" #: ../../messages.c:1013 msgid "Automatically cancelled because you have already saved this message." msgstr "" #: ../../messages.c:1037 msgid "Saved to Drafts failed: " msgstr "" #: ../../messages.c:1102 msgid "Refusing to post empty message.\n" msgstr "" #: ../../messages.c:1128 msgid "Message has been saved to Drafts.\n" msgstr "" #: ../../messages.c:1137 msgid "Message has been sent.\n" msgstr "" #: ../../messages.c:1140 msgid "Message has been posted.\n" msgstr "" #: ../../messages.c:1679 msgid "The message was not moved." msgstr "" #: ../../messages.c:1719 #, c-format msgid "An error occurred while retrieving this part: %s/%s\n" msgstr "" #: ../../messages.c:1796 #, c-format msgid "An error occurred while retrieving this part: %s\n" msgstr "" #: ../../messages.c:1956 msgid "Attach signature to email messages?" msgstr "" #: ../../messages.c:1959 msgid "Use this signature:" msgstr "" #: ../../messages.c:1961 msgid "Default character set for email headers:" msgstr "" #: ../../messages.c:1964 msgid "Preferred email address" msgstr "" #: ../../messages.c:1966 msgid "Preferred display name for email messages" msgstr "" #: ../../messages.c:1970 msgid "Preferred display name for bulletin board posts" msgstr "" #: ../../messages.c:1973 msgid "Mailbox view mode" msgstr "" #: ../../inetconf.c:110 ../../inetconf.c:119 ../../inetconf.c:133 #: ../../inetconf.c:159 ../../netconf.c:156 ../../netconf.c:183 #: ../../netconf.c:191 ../../netconf.c:239 ../../netconf.c:247 msgid "Invalid Parameter" msgstr "" #: ../../inetconf.c:126 msgid " has been deleted." msgstr "" #. added status message #: ../../inetconf.c:144 msgid " added." msgstr "" #: ../../who.c:154 msgid "Edit your session display" msgstr "" #: ../../who.c:158 msgid "" "This screen allows you to change the way your session appears in the 'Who is " "online' listing. To turn off any 'fake' name you've previously set, simply " "click the appropriate 'change' button without typing anything in the " "corresponding box. " msgstr "" #: ../../who.c:171 msgid "Room name:" msgstr "" #: ../../who.c:176 msgid "Change room name" msgstr "" #: ../../who.c:180 msgid "Host name:" msgstr "" #: ../../who.c:185 msgid "Change host name" msgstr "" #: ../../who.c:190 ../../static/t/aide/edituser/detailview.html:20 #: ../../static/t/openid_manual_create.html:9 #: ../../static/t/get_logged_in.html:57 ../../static/t/get_logged_in.html:72 msgid "User name:" msgstr "" #: ../../who.c:195 msgid "Change user name" msgstr "Kullanıcı adını değiştir" #: ../../siteconfig.c:46 ../../siteconfig.c:64 ../../roomlist.c:44 #: ../../roomlist.c:394 ../../static/t/room/edit/tab_expire.html:72 #: ../../static/t/room/edit/tab_config.html:149 #: ../../static/t/room/edit/tab_access.html:42 msgid "Higher access is required to access this function." msgstr "" #: ../../siteconfig.c:256 msgid "WARNING: Failed to parse Server Config; do you run a to new citserver?" msgstr "" #: ../../siteconfig.c:319 msgid "Your system configuration has been updated." msgstr "" #: ../../wiki.c:69 ../../wiki.c:162 ../../wiki.c:282 #, c-format msgid "There is no room called '%s'." msgstr "'% s' adında oda yok." #: ../../wiki.c:76 #, c-format msgid "'%s' is not a Wiki room." msgstr "'% s' bir Wiki odası değildir." #: ../../wiki.c:110 #, c-format msgid "There is no page called '%s' here." msgstr "'% s' adında bir sayfa yoktur." #: ../../wiki.c:112 msgid "" "Select the 'Edit this page' link in the room banner if you would like to " "create this page." msgstr "" "Bu sayfa oluşturmak istiyorsanız 'Bu sayfayı Düzenle' seçeneğini seçin." #: ../../wiki.c:181 ../../static/t/msg_listview.html:11 msgid "Date" msgstr "Tarih" #: ../../wiki.c:182 msgid "Author" msgstr "Yazar" #: ../../wiki.c:209 ../../wiki.c:218 msgid "(show)" msgstr "(göster)" #: ../../wiki.c:211 ../../static/t/navbar.html:145 msgid "Current version" msgstr "Kullanılan Sürüm" #: ../../wiki.c:223 msgid "(revert)" msgstr "(eski haline dön)" #: ../../wiki.c:300 msgid "Page title" msgstr "Sayfa başlığı" #: ../../webcit.c:316 msgid "Authorization Required" msgstr "" #: ../../webcit.c:324 #, c-format msgid "" "The resource you requested requires a valid username and password. You could " "not be logged in: %s\n" msgstr "" #: ../../webcit.c:647 ../../auth.c:526 msgid "" "This program was unable to connect or stay connected to the Citadel server. " "Please report this problem to your system administrator." msgstr "" #: ../../webcit.c:654 ../../auth.c:532 msgid "Read More..." msgstr "" #: ../../smtpqueue.c:134 ../../static/t/aide/ignetconf/section.html:5 #: ../../static/t/view_mailq/message.html:2 msgid "(Delete)" msgstr "" #: ../../smtpqueue.c:334 msgid "First Attempt pending" msgstr "" #: ../../roomlist.c:99 msgid "My Folders" msgstr "" #: ../../downloads.c:289 #, c-format msgid "An error occurred while retrieving this file: %s\n" msgstr "" #: ../../roomtokens.c:572 msgid "file" msgstr "" #: ../../roomtokens.c:574 msgid "files" msgstr "" #: ../../summary.c:128 msgid "(None)" msgstr "" #: ../../summary.c:184 msgid "(Nothing)" msgstr "" #: ../../msg_renderers.c:579 ../../static/t/who/bio.html:15 msgid "edit" msgstr "" #: ../../msg_renderers.c:1119 msgid "I don't know how to display " msgstr "" #: ../../msg_renderers.c:1353 msgid "(no subject)" msgstr "" #: ../../addressbook_popup.c:186 msgid "Add" msgstr "" #. an erased user #: ../../auth.c:30 ../../static/t/aide/edituser/detailview.html:43 #: ../../static/t/aide/siteconfig/tab_access.html:40 #: ../../static/t/aide/siteconfig/tab_access.html:51 msgid "Deleted" msgstr "" #. a new user #: ../../auth.c:33 ../../static/t/aide/edituser/detailview.html:44 #: ../../static/t/aide/siteconfig/tab_access.html:41 #: ../../static/t/aide/siteconfig/tab_access.html:52 #: ../../static/t/get_logged_in.html:79 msgid "New User" msgstr "" #. a trouble maker #: ../../auth.c:36 ../../static/t/aide/edituser/detailview.html:45 #: ../../static/t/aide/siteconfig/tab_access.html:42 #: ../../static/t/aide/siteconfig/tab_access.html:53 msgid "Problem User" msgstr "" #. user with normal privileges #: ../../auth.c:39 ../../static/t/aide/edituser/detailview.html:46 #: ../../static/t/aide/siteconfig/tab_access.html:43 #: ../../static/t/aide/siteconfig/tab_access.html:54 msgid "Local User" msgstr "" #. a user that may access network resources #: ../../auth.c:42 ../../static/t/aide/edituser/detailview.html:47 #: ../../static/t/aide/siteconfig/tab_access.html:44 #: ../../static/t/aide/siteconfig/tab_access.html:55 msgid "Network User" msgstr "" #. a moderator #: ../../auth.c:45 ../../static/t/aide/edituser/detailview.html:48 #: ../../static/t/aide/siteconfig/tab_access.html:45 #: ../../static/t/aide/siteconfig/tab_access.html:56 msgid "Preferred User" msgstr "" #. chief #: ../../auth.c:48 ../../static/t/aide/edituser/detailview.html:49 #: ../../static/t/aide/siteconfig/tab_access.html:46 #: ../../static/t/aide/siteconfig/tab_access.html:57 msgid "Admin" msgstr "" #: ../../auth.c:513 ../../static/t/iconbar.html:80 #: ../../static/t/confirmlogoff.html:3 #: ../../static/t/menu/basic_commands.html:19 msgid "Log off" msgstr "" #: ../../auth.c:537 msgid "Log in again" msgstr "" #: ../../auth.c:585 ../../static/t/aide/usermanagement.html:3 msgid "Validate new users" msgstr "" #: ../../auth.c:605 msgid "No users require validation at this time." msgstr "" #: ../../auth.c:655 msgid "very weak" msgstr "" #: ../../auth.c:658 msgid "weak" msgstr "" #: ../../auth.c:661 msgid "ok" msgstr "" #: ../../auth.c:665 msgid "strong" msgstr "" #: ../../auth.c:683 #, c-format msgid "Current access level: %d (%s)\n" msgstr "" #: ../../auth.c:691 msgid "Select access level for this user:" msgstr "" #: ../../auth.c:776 ../../static/t/menu/your_info.html:4 msgid "Change your password" msgstr "" #: ../../auth.c:800 msgid "Enter new password:" msgstr "" #: ../../auth.c:804 msgid "Enter it again to confirm:" msgstr "" #: ../../auth.c:810 msgid "Change password" msgstr "" #: ../../auth.c:830 msgid "Cancelled. Password was not changed." msgstr "" #: ../../auth.c:839 msgid "They don't match. Password was not changed." msgstr "" #: ../../auth.c:845 msgid "Blank passwords are not allowed." msgstr "" #: ../../openid.c:34 msgid "Manage Account/OpenID Associations" msgstr "" #: ../../openid.c:52 msgid "Do you really want to delete this OpenID?" msgstr "" #: ../../openid.c:53 msgid "(delete)" msgstr "" #: ../../openid.c:61 msgid "Add an OpenID: " msgstr "" #: ../../openid.c:64 msgid "Attach" msgstr "" #: ../../openid.c:68 #, c-format msgid "%s does not permit authentication via OpenID." msgstr "" #: ../../html2html.c:136 #, c-format msgid "realloc() error! couldn't get %d bytes: %s" msgstr "" #: ../../static/t/viewomatic.html:4 msgid "View as:" msgstr "" #: ../../static/t/sieve/list.html:32 ../../static/t/sieve/none.html:4 #: ../../static/t/menu/your_info.html:7 msgid "View/edit server-side mail filters" msgstr "" #: ../../static/t/sieve/list.html:41 msgid "When new mail arrives: " msgstr "" #: ../../static/t/sieve/list.html:43 msgid "Leave it in my inbox without filtering" msgstr "" #: ../../static/t/sieve/list.html:44 msgid "Filter it according to rules selected below" msgstr "" #: ../../static/t/sieve/list.html:45 msgid "Filter it through a manually edited script (advanced users only)" msgstr "" #: ../../static/t/sieve/list.html:52 msgid "Your incoming mail will not be filtered through any scripts." msgstr "" #: ../../static/t/sieve/list.html:64 msgid "Add rule" msgstr "" #: ../../static/t/sieve/list.html:71 msgid "The currently active script is: " msgstr "" #: ../../static/t/sieve/list.html:76 ../../static/t/sieve/add.html:3 msgid "Add or delete scripts" msgstr "" #: ../../static/t/sieve/display_one.html:16 msgid "If" msgstr "" #: ../../static/t/sieve/display_one.html:21 msgid "To or Cc" msgstr "" #: ../../static/t/sieve/display_one.html:23 msgid "Reply-to" msgstr "" #: ../../static/t/sieve/display_one.html:24 #: ../../static/t/msg_listview.html:10 #: ../../static/t/view_mailq/header.html:27 msgid "Sender" msgstr "" #: ../../static/t/sieve/display_one.html:25 msgid "Resent-From" msgstr "" #: ../../static/t/sieve/display_one.html:26 msgid "Resent-To" msgstr "" #: ../../static/t/sieve/display_one.html:27 msgid "Envelope From" msgstr "" #: ../../static/t/sieve/display_one.html:28 msgid "Envelope To" msgstr "" #: ../../static/t/sieve/display_one.html:29 msgid "X-Mailer" msgstr "" #: ../../static/t/sieve/display_one.html:30 msgid "X-Spam-Flag" msgstr "" #: ../../static/t/sieve/display_one.html:31 msgid "X-Spam-Status" msgstr "" #: ../../static/t/sieve/display_one.html:32 msgid "List-ID" msgstr "" #: ../../static/t/sieve/display_one.html:33 msgid "Message size" msgstr "" #: ../../static/t/sieve/display_one.html:34 #: ../../static/t/select_messageindex_all.html:1 msgid "All" msgstr "" #: ../../static/t/sieve/display_one.html:41 msgid "contains" msgstr "" #: ../../static/t/sieve/display_one.html:42 msgid "does not contain" msgstr "" #: ../../static/t/sieve/display_one.html:43 msgid "is" msgstr "" #: ../../static/t/sieve/display_one.html:44 msgid "is not" msgstr "" #: ../../static/t/sieve/display_one.html:45 msgid "matches" msgstr "" #: ../../static/t/sieve/display_one.html:46 msgid "does not match" msgstr "" #: ../../static/t/sieve/display_one.html:52 msgid "(All messages)" msgstr "" #: ../../static/t/sieve/display_one.html:56 msgid "is larger than" msgstr "" #: ../../static/t/sieve/display_one.html:57 msgid "is smaller than" msgstr "" #: ../../static/t/sieve/display_one.html:59 msgid "bytes" msgstr "" #: ../../static/t/sieve/display_one.html:65 msgid "Keep" msgstr "" #: ../../static/t/sieve/display_one.html:66 msgid "Discard silently" msgstr "" #: ../../static/t/sieve/display_one.html:67 msgid "Reject" msgstr "" #: ../../static/t/sieve/display_one.html:68 msgid "Move message to" msgstr "" #: ../../static/t/sieve/display_one.html:69 msgid "Forward to" msgstr "" #: ../../static/t/sieve/display_one.html:70 msgid "Vacation" msgstr "" #: ../../static/t/sieve/display_one.html:82 msgid "Message:" msgstr "" #: ../../static/t/sieve/display_one.html:90 msgid "and then" msgstr "" #: ../../static/t/sieve/display_one.html:93 msgid "continue processing" msgstr "" #: ../../static/t/sieve/display_one.html:94 msgid "stop" msgstr "" #: ../../static/t/sieve/none.html:9 msgid "" "This installation of Citadel was built without support for server-side mail " "filtering.
    Please contact your system administrator if you require this " "feature.
    " msgstr "" #: ../../static/t/sieve/add.html:9 msgid "Add a new script" msgstr "" #: ../../static/t/sieve/add.html:10 msgid "" "To create a new script, enter the desired script name in the box below and " "click 'Create'." msgstr "" #: ../../static/t/sieve/add.html:14 msgid "Script name: " msgstr "" #: ../../static/t/sieve/add.html:18 msgid "Edit scripts" msgstr "" #: ../../static/t/sieve/add.html:20 msgid "Return to the script editing screen" msgstr "" #: ../../static/t/sieve/add.html:23 msgid "Delete scripts" msgstr "" #: ../../static/t/sieve/add.html:24 msgid "" "To delete an existing script, select the script name from the list and click " "'Delete'." msgstr "" #: ../../static/t/msg/confirm_move.html:4 msgid "Confirm move of message" msgstr "" #: ../../static/t/msg/confirm_move.html:12 msgid "Move this message to:" msgstr "" #: ../../static/t/login.html:5 msgid "powered by" msgstr "" #: ../../static/t/login.html:15 ../../static/t/iconbar.html:88 #: ../../static/t/get_logged_in.html:64 ../../static/t/get_logged_in.html:88 #: ../../static/t/get_logged_in.html:93 ../../static/t/get_logged_in.html:98 #: ../../static/t/get_logged_in.html:107 msgid "Log in" msgstr "" #: ../../static/t/trailing.html:14 msgid "" "WARNING: You have JavaScript disabled in your web browser. Many functions " "of this system will not work properly." msgstr "" #: ../../static/t/view_submessage.html:4 #: ../../static/t/view_message/replyquote.html:3 #: ../../static/t/view_message/replyquote.html:7 #: ../../static/t/view_message/print.html:8 ../../static/t/view_message.html:7 msgid "from " msgstr "" #: ../../static/t/searchomatic.html:4 msgid "Search: " msgstr "" #: ../../static/t/listsub/display.html:16 msgid "You are subscribing " msgstr "" #: ../../static/t/listsub/display.html:17 msgid " to the " msgstr "" #: ../../static/t/listsub/display.html:18 msgid " mailing list." msgstr "" #: ../../static/t/listsub/display.html:19 msgid "" "The listserver has sent you an e-mail with one additional Web link for you " "to click on to confirm your subscription." msgstr "" #: ../../static/t/listsub/display.html:20 msgid "" "This extra step is for your protection, as it prevents others from being " "able to subscribe you to lists without your consent." msgstr "" #: ../../static/t/listsub/display.html:22 msgid "" "Please click on the link which is being e-mailed to you and your " "subscription will be confirmed." msgstr "" #: ../../static/t/listsub/display.html:27 #: ../../static/t/listsub/display.html:47 msgid "ERROR" msgstr "" #: ../../static/t/listsub/display.html:35 msgid "You are unsubscribing" msgstr "" #: ../../static/t/listsub/display.html:37 msgid "from the" msgstr "" #: ../../static/t/listsub/display.html:39 msgid "mailing list." msgstr "" #: ../../static/t/listsub/display.html:40 msgid "" "The listserver has sent you an e-mail with one additional Web link for you " "to click on to confirm your unsubscription." msgstr "" #: ../../static/t/listsub/display.html:41 msgid "" "This extra step is for your protection, as it prevents others from being " "able to unsubscribe you from lists without your consent." msgstr "" #: ../../static/t/listsub/display.html:43 msgid "" "Please click on the link which is being e-mailed to you and your " "unsubscription will be confirmed." msgstr "" #: ../../static/t/listsub/display.html:44 msgid "Back..." msgstr "" #: ../../static/t/listsub/display.html:54 msgid "Confirmation successful!" msgstr "" #: ../../static/t/listsub/display.html:56 msgid "Confirmation failed." msgstr "" #: ../../static/t/listsub/display.html:57 msgid "This could mean one of two things:" msgstr "" #: ../../static/t/listsub/display.html:59 msgid "" "You waited too long to confirm your subscribe/unsubscribe request (the " "confirmation link is only valid for three days)" msgstr "" #: ../../static/t/listsub/display.html:60 msgid "" "You have already successfully confirmed your subscribe/unsubscribe " "request and are attempting to do it again." msgstr "" #: ../../static/t/listsub/display.html:62 msgid "The error returned by the server was: " msgstr "" #: ../../static/t/listsub/display.html:70 msgid "Name of list:" msgstr "" #: ../../static/t/listsub/display.html:75 msgid "Your e-mail address:" msgstr "" #: ../../static/t/listsub/display.html:79 msgid "(If subscribing) preferred format: " msgstr "" #: ../../static/t/listsub/display.html:80 msgid "One message at a time" msgstr "" #: ../../static/t/listsub/display.html:81 msgid "Digest format" msgstr "" #: ../../static/t/listsub/display.html:89 msgid "" "When you attempt to subscribe or unsubscribe to a mailing list, you will " "receive an e-mail containing one additional web link to click on for final " "confirmation." msgstr "" #: ../../static/t/listsub/display.html:90 msgid "" "This extra step is for your protection, as it prevents others from being " "able to subscribe or unsubscribe you to lists." msgstr "" #: ../../static/t/floors_edit_one.html:11 msgid "(delete floor)" msgstr "" #: ../../static/t/floors_edit_one.html:13 msgid "(edit graphic)" msgstr "" #: ../../static/t/floors.html:4 msgid "Add/change/delete floors" msgstr "" #: ../../static/t/floors.html:10 msgid "Floor number" msgstr "" #: ../../static/t/floors.html:11 msgid "Floor name" msgstr "" #: ../../static/t/floors.html:12 msgid "Number of rooms" msgstr "" #: ../../static/t/floors.html:13 msgid "Floor CSS" msgstr "" #: ../../static/t/files.html:4 msgid "Files available for download in" msgstr "" #: ../../static/t/files.html:9 msgid "Upload a file:" msgstr "" #: ../../static/t/files.html:30 msgid "Filename" msgstr "" #: ../../static/t/files.html:31 msgid "Size" msgstr "" #: ../../static/t/files.html:32 msgid "Content" msgstr "" #: ../../static/t/files.html:33 msgid "Description" msgstr "" #: ../../static/t/edit_message.html:9 ../../static/t/iconbar.html:50 #: ../../static/t/iconbar.html:59 msgid "Loading" msgstr "" #: ../../static/t/edit_message.html:23 msgid "from" msgstr "" #: ../../static/t/edit_message.html:29 ../../static/t/edit_message.html:38 msgid "Anonymous" msgstr "" #: ../../static/t/edit_message.html:47 msgid "in" msgstr "" #: ../../static/t/edit_message.html:51 msgid "To:" msgstr "" #: ../../static/t/edit_message.html:57 #: ../../static/t/view_message/print.html:15 #: ../../static/t/view_message.html:15 msgid "CC:" msgstr "" #: ../../static/t/edit_message.html:63 msgid "BCC:" msgstr "" #: ../../static/t/edit_message.html:71 msgid "Subject (optional):" msgstr "" #: ../../static/t/edit_message.html:71 #: ../../static/t/view_message/replyquote.html:8 #: ../../static/t/view_message/print.html:16 #: ../../static/t/view_message.html:16 msgid "Subject:" msgstr "" #: ../../static/t/edit_message.html:86 msgid "--- forwarded message ---" msgstr "" #: ../../static/t/edit_message.html:110 msgid "Post message" msgstr "" #: ../../static/t/edit_message.html:118 msgid "Save to Drafts" msgstr "" #: ../../static/t/edit_message.html:126 #: ../../static/t/edit_message/attachments_pane.html:5 msgid "Attachments:" msgstr "" #: ../../static/t/aide/display_serverrestart_page.html:4 msgid "Message to your Users:" msgstr "" #: ../../static/t/aide/display_generic_result.html:2 msgid "Server command results" msgstr "" #: ../../static/t/aide/display_generic_result.html:18 msgid "Enter another command" msgstr "" #: ../../static/t/aide/display_generic_result.html:19 msgid "Return to menu" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:3 msgid "Site configuration" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:6 #: ../../static/t/aide/edituser/select.html:9 msgid "You need to be aide to view this." msgstr "" #: ../../static/t/aide/display_sitewide_config.html:11 msgid "General" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:12 msgid "Access" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:13 msgid "Network" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:14 msgid "Tuning" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:15 msgid "Directory" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:16 msgid "Auto-purger" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:17 msgid "Indexing/Journaling" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:18 #: ../../static/t/aide/siteconfig/tab_pushmail.html:1 msgid "Push Email" msgstr "" #: ../../static/t/aide/display_sitewide_config.html:19 msgid "Pop3" msgstr "" #: ../../static/t/aide/usermanagement.html:2 msgid "Add, change, delete user accounts" msgstr "" #: ../../static/t/aide/display_inetconf.html:5 #: ../../static/t/aide/display_menu.html:5 msgid "System Administration Menu" msgstr "" #: ../../static/t/aide/display_inetconf.html:6 #: ../../static/t/aide/display_menu.html:6 msgid "Room Admin Menu" msgstr "" #: ../../static/t/aide/display_inetconf.html:13 msgid "Local host aliases" msgstr "" #: ../../static/t/aide/display_inetconf.html:14 msgid "Directory domains" msgstr "" #: ../../static/t/aide/display_inetconf.html:15 msgid "Smart hosts" msgstr "" #: ../../static/t/aide/display_inetconf.html:16 msgid "Fallback smart hosts" msgstr "" #: ../../static/t/aide/display_inetconf.html:17 msgid "Notification hosts" msgstr "" #: ../../static/t/aide/display_inetconf.html:22 msgid "RBL hosts" msgstr "" #: ../../static/t/aide/display_inetconf.html:23 msgid "SpamAssassin hosts" msgstr "" #: ../../static/t/aide/display_inetconf.html:24 msgid "ClamAV clamd hosts" msgstr "" #: ../../static/t/aide/display_inetconf.html:25 msgid "Masqueradable domains" msgstr "" #: ../../static/t/aide/edituser/select.html:5 msgid "Edit or delete users" msgstr "" #: ../../static/t/aide/edituser/select.html:17 msgid "Add users" msgstr "" #: ../../static/t/aide/edituser/select.html:20 msgid "Edit or Delete users" msgstr "" #: ../../static/t/aide/edituser/box_select.html:1 msgid "" "To edit an existing user account, select the user name from the list and " "click 'Edit'." msgstr "" #: ../../static/t/aide/edituser/detailview.html:4 msgid "Edit user account: " msgstr "" #: ../../static/t/aide/edituser/detailview.html:24 #: ../../static/t/room/edit/tab_feed.html:14 msgid "Password" msgstr "" #: ../../static/t/aide/edituser/detailview.html:28 msgid "Permission to send Internet mail" msgstr "" #: ../../static/t/aide/edituser/detailview.html:32 msgid "Number of logins" msgstr "" #: ../../static/t/aide/edituser/detailview.html:36 msgid "Messages submitted" msgstr "" #: ../../static/t/aide/edituser/detailview.html:40 msgid "Access level" msgstr "" #: ../../static/t/aide/edituser/detailview.html:54 msgid "User ID number" msgstr "" #: ../../static/t/aide/edituser/detailview.html:58 msgid "Date and time of last login" msgstr "" #: ../../static/t/aide/edituser/detailview.html:68 msgid "Auto-purge after this many days" msgstr "" #: ../../static/t/aide/edituser/add.html:1 msgid "" "To create a new user account, enter the desired user name in the box below " "and click 'Create'." msgstr "" #: ../../static/t/aide/edituser/add.html:5 msgid "New user: " msgstr "" #: ../../static/t/aide/display_generic_cmd.html:4 msgid "Enter a server command" msgstr "" #: ../../static/t/aide/display_generic_cmd.html:12 msgid "" "This screen allows you to enter Citadel server commands which are not " "supported by WebCit. If you do not know what that means, then this screen " "will not be of much use to you." msgstr "" #: ../../static/t/aide/display_generic_cmd.html:15 msgid "Enter command:" msgstr "" #: ../../static/t/aide/display_generic_cmd.html:17 msgid "Command input (if requesting SEND_LISTING transfer mode):" msgstr "" #: ../../static/t/aide/display_generic_cmd.html:20 msgid "Detected host header is " msgstr "" #: ../../static/t/aide/display_ignetconf.html:4 msgid "Network configuration" msgstr "" #: ../../static/t/aide/display_ignetconf.html:10 #: ../../static/t/aide/ignetconf/edit_node.html:5 #: ../../static/t/aide/ignetconf/add.html:5 msgid "Add a new node" msgstr "" #: ../../static/t/aide/display_ignetconf.html:14 msgid "Currently configured nodes" msgstr "" #: ../../static/t/aide/display_serverrestart.html:26 msgid "Restart Citadel" msgstr "" #: ../../static/t/aide/floorconfig.html:2 msgid "Add, change, or delete floors" msgstr "" #: ../../static/t/aide/serverrestart/box.html:3 msgid "Please wait while the Citadel server is restarted... " msgstr "" #: ../../static/t/aide/serverrestart/box_page_do.html:3 msgid "" "Please wait while your users are being paged, the citadel server will be " "restarted after that... " msgstr "" #: ../../static/t/aide/inet/masqdomains.html:2 msgid "(Domains as which users are allowed to masquerade)" msgstr "" #: ../../static/t/aide/inet/rbldns.html:2 msgid "(hosts running a Realtime Blackhole List)" msgstr "" #: ../../static/t/aide/inet/dirnames.html:2 msgid "(domains mapped with the Global Address Book)" msgstr "" #: ../../static/t/aide/inet/notify.html:2 msgid "(URLS for notifications when users receive new mails; )" msgstr "" #: ../../static/t/aide/inet/notify.html:2 msgid "Syntax: Notificationtemplatename:http[s]://user:password@hostname/path" msgstr "" #: ../../static/t/aide/inet/smarthosts.html:2 msgid "(if present, forward all outbound mail to one of these hosts)" msgstr "" #: ../../static/t/aide/inet/aliases.html:2 msgid "(domains for which this host receives mail)" msgstr "" #: ../../static/t/aide/inet/clamav.html:2 msgid "(hosts running the ClamAV clamd service)" msgstr "" #: ../../static/t/aide/inet/spamass.html:2 msgid "(hosts running the SpamAssassin service)" msgstr "" #: ../../static/t/aide/inet/fallbackhosts.html:2 msgid "(send outbound mail to these hosts only when direct delivery fails)" msgstr "" #: ../../static/t/aide/ignetconf/display_confirm_delete.html:5 msgid "Confirm delete" msgstr "" #: ../../static/t/aide/ignetconf/display_confirm_delete.html:11 msgid "Are you sure you want to delete " msgstr "" #: ../../static/t/aide/ignetconf/display_confirm_delete.html:14 #: ../../static/t/prefs/box.html:198 ../../static/t/iconbar/edit.html:19 #: ../../static/t/iconbar/edit.html:26 ../../static/t/iconbar/edit.html:32 #: ../../static/t/iconbar/edit.html:39 ../../static/t/iconbar/edit.html:45 #: ../../static/t/iconbar/edit.html:52 ../../static/t/iconbar/edit.html:58 #: ../../static/t/iconbar/edit.html:64 ../../static/t/iconbar/edit.html:70 #: ../../static/t/iconbar/edit.html:76 ../../static/t/iconbar/edit.html:82 #: ../../static/t/iconbar/edit.html:88 msgid "Yes" msgstr "" #: ../../static/t/aide/ignetconf/display_confirm_delete.html:16 #: ../../static/t/prefs/box.html:200 ../../static/t/iconbar/edit.html:20 #: ../../static/t/iconbar/edit.html:27 ../../static/t/iconbar/edit.html:33 #: ../../static/t/iconbar/edit.html:40 ../../static/t/iconbar/edit.html:46 #: ../../static/t/iconbar/edit.html:53 ../../static/t/iconbar/edit.html:59 #: ../../static/t/iconbar/edit.html:65 ../../static/t/iconbar/edit.html:71 #: ../../static/t/iconbar/edit.html:77 ../../static/t/iconbar/edit.html:83 #: ../../static/t/iconbar/edit.html:89 msgid "No" msgstr "" #: ../../static/t/aide/ignetconf/edit_node.html:15 #: ../../static/t/aide/ignetconf/add.html:15 #: ../../static/t/aide/siteconfig/tab_general.html:8 msgid "Node name" msgstr "" #: ../../static/t/aide/ignetconf/edit_node.html:17 #: ../../static/t/aide/ignetconf/add.html:17 msgid "Shared secret" msgstr "" #: ../../static/t/aide/ignetconf/edit_node.html:19 #: ../../static/t/aide/ignetconf/add.html:19 msgid "Host or IP address" msgstr "" #: ../../static/t/aide/ignetconf/edit_node.html:21 #: ../../static/t/aide/ignetconf/add.html:21 msgid "Port number" msgstr "" #: ../../static/t/aide/ignetconf/section.html:4 msgid "(Edit)" msgstr "" #: ../../static/t/aide/display_menu.html:12 msgid "Global Configuration" msgstr "" #: ../../static/t/aide/display_menu.html:14 msgid "User account management" msgstr "" #: ../../static/t/aide/display_menu.html:16 msgid "Shutdown Citadel" msgstr "" #: ../../static/t/aide/display_menu.html:18 msgid "Rooms and Floors" msgstr "" #: ../../static/t/aide/global_config.html:2 msgid "Edit site-wide configuration" msgstr "" #: ../../static/t/aide/global_config.html:3 msgid "Domain names and Internet mail configuration" msgstr "" #: ../../static/t/aide/global_config.html:4 msgid "Configure replication with other Citadel servers" msgstr "" #: ../../static/t/aide/global_config.html:5 #: ../../static/t/view_mailq/header.html:3 msgid "View the outbound SMTP queue" msgstr "" #: ../../static/t/aide/restart.html:2 msgid "Restart Now" msgstr "" #: ../../static/t/aide/restart.html:3 msgid "Restart after paging users" msgstr "" #: ../../static/t/aide/restart.html:4 msgid "Restart when all users are idle" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:1 msgid "General site configuration items" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:5 msgid "Change Login Logo" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:6 msgid "Change Logout Logo" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:11 msgid "Fully qualified domain name" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:14 msgid "Human-readable node name" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:17 msgid "Telephone number" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:20 msgid "Paginator prompt (for text mode clients)" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:23 msgid "Geographic location of this system" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:26 msgid "Name of system administrator" msgstr "" #: ../../static/t/aide/siteconfig/tab_general.html:29 msgid "Default timezone for unzoned calendar items" msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:1 msgid "Configure automatic expiry of old messages" msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:2 msgid "These settings may be overridden on a per-floor or per-room basis." msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:6 msgid "Hour to run database auto-purge" msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:66 msgid "Default message expire policy for public rooms" msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:68 #: ../../static/t/aide/siteconfig/tab_autopurger.html:86 #: ../../static/t/room/edit/tab_expire.html:17 #: ../../static/t/room/edit/tab_expire.html:45 msgid "Never automatically expire messages" msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:71 #: ../../static/t/aide/siteconfig/tab_autopurger.html:89 #: ../../static/t/room/edit/tab_expire.html:20 #: ../../static/t/room/edit/tab_expire.html:48 msgid "Expire by message count" msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:73 #: ../../static/t/aide/siteconfig/tab_autopurger.html:92 #: ../../static/t/room/edit/tab_expire.html:23 #: ../../static/t/room/edit/tab_expire.html:51 msgid "Expire by message age" msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:75 #: ../../static/t/aide/siteconfig/tab_autopurger.html:94 #: ../../static/t/room/edit/tab_expire.html:25 #: ../../static/t/room/edit/tab_expire.html:53 msgid "Number of messages or days: " msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:81 msgid "Default message expire policy for private mailboxes" msgstr "" #: ../../static/t/aide/siteconfig/tab_autopurger.html:83 msgid "Same policy as public rooms" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:1 msgid "Network services" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:2 #: ../../static/t/aide/siteconfig/tab_directory.html:3 msgid "" "Changes made on this screen will not take effect until you restart the " "Citadel server." msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:6 msgid "SMTP MTA port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:9 msgid "Correct forged From: lines during authenticated SMTP" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:12 msgid "Flag message as spam, instead of rejecting it" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:15 msgid "IMAP listener port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:19 msgid "Network run frequency (in seconds)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:22 msgid "Server IP address (0.0.0.0 for 'any')" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:25 msgid "SMTP MSA port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:28 msgid "IMAP over SSL port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:31 msgid "SMTP over SSL port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:34 msgid "Instantly expunge deleted messages in IMAP" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:38 msgid "Allow unauthenticated SMTP clients to spoof this sites domains" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:41 msgid "Postfix TCP Dictionary Port" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:41 msgid "-1 to disable" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:44 msgid "ManageSieve Port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:47 msgid "Perform RBL checks upon connect instead of after RCPT" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:50 msgid "Keep original from headers in IMAP" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:53 msgid "XMPP (Jabber) client to server port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_network.html:56 msgid "XMPP (Jabber) server to server port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_pop3.html:1 msgid "POP3" msgstr "" #: ../../static/t/aide/siteconfig/tab_pop3.html:6 msgid "POP3 listener port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_pop3.html:9 msgid "POP3 over SSL port (-1 to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_pop3.html:12 msgid "POP3 fetch frequency in seconds" msgstr "" #: ../../static/t/aide/siteconfig/tab_pop3.html:15 msgid "POP3 fastest fetch frequency in seconds" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:1 msgid "Advanced server fine-tuning controls" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:5 msgid "Server connection idle timeout (in seconds)" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:8 msgid "Maximum concurrent sessions (0 = no limit)" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:11 msgid "Default user purge time (days)" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:14 msgid "Default room purge time (days)" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:17 msgid "Maximum message length" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:20 msgid "Minimum number of worker threads" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:23 msgid "Maximum number of worker threads" msgstr "" #: ../../static/t/aide/siteconfig/tab_tuning.html:26 msgid "Automatically delete committed database logs" msgstr "" #: ../../static/t/aide/siteconfig/tab_pushmail.html:5 msgid "Funambol server host (blank to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_pushmail.html:8 msgid "Funambol server port " msgstr "" #: ../../static/t/aide/siteconfig/tab_pushmail.html:11 msgid "Funambol sync source" msgstr "" #: ../../static/t/aide/siteconfig/tab_pushmail.html:14 msgid "Funambol auth details (user:pass)" msgstr "" #: ../../static/t/aide/siteconfig/tab_pushmail.html:17 msgid "External pager tool (blank to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:1 msgid "Access controls and site policy settings" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:5 msgid "Allow aides to zap (forget) rooms" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:9 msgid "Quarantine messages from problem users" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:12 msgid "Name of quarantine room" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:17 msgid "Name of room to log pages" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:22 msgid "Authentication mode" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:24 msgid "Self contained" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:25 msgid "Host based" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:26 msgid "LDAP (RFC2307)" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:27 msgid "LDAP (Active Directory)" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:30 msgid "Master user name (blank to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:33 msgid "Master user password" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:38 msgid "Initial access level for new users" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:49 msgid "Access level required to create rooms" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:60 msgid "Automatically grant room-aide status to users who create private rooms" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:63 msgid "Automatically grant room-aide status to users who create BLOG rooms" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:66 msgid "Restrict access to Internet mail" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:71 msgid "Disable self-service user account creation" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:71 msgid "Hint: do not select both!" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:74 msgid "Require registration for new users" msgstr "" #: ../../static/t/aide/siteconfig/tab_access.html:77 msgid "Allow anonymous guest access" msgstr "" #: ../../static/t/aide/siteconfig/tab_indexing.html:1 msgid "Indexing and Journaling" msgstr "" #: ../../static/t/aide/siteconfig/tab_indexing.html:2 msgid "Warning: these facilities are resource intensive." msgstr "" #: ../../static/t/aide/siteconfig/tab_indexing.html:6 msgid "Enable full text index" msgstr "" #: ../../static/t/aide/siteconfig/tab_indexing.html:9 msgid "Perform journaling of email messages" msgstr "" #: ../../static/t/aide/siteconfig/tab_indexing.html:13 msgid "Perform journaling of non-email messages" msgstr "" #: ../../static/t/aide/siteconfig/tab_indexing.html:16 msgid "Email destination of journalized messages" msgstr "" #: ../../static/t/aide/siteconfig/tab_directory.html:1 msgid "Configure the LDAP connector for Citadel" msgstr "" #: ../../static/t/aide/siteconfig/tab_directory.html:4 msgid "" "NOTE: This Citadel server has been built without LDAP support. These " "options will have no effect." msgstr "" #: ../../static/t/aide/siteconfig/tab_directory.html:9 msgid "Host name of LDAP server (blank to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_directory.html:13 msgid "Port number of LDAP server (blank to disable)" msgstr "" #: ../../static/t/aide/siteconfig/tab_directory.html:16 msgid "Base DN" msgstr "" #: ../../static/t/aide/siteconfig/tab_directory.html:19 msgid "Bind DN" msgstr "" #: ../../static/t/aide/siteconfig/tab_directory.html:22 msgid "Password for bind DN" msgstr "" #: ../../static/t/iconbar.html:7 msgid "Language:" msgstr "" #: ../../static/t/iconbar.html:19 msgid "Mail" msgstr "" #: ../../static/t/iconbar.html:39 ../../static/t/iconbar/edit.html:61 #: ../../static/t/summary/page.html:30 msgid "Tasks" msgstr "" #: ../../static/t/iconbar.html:48 ../../static/t/iconbar/edit.html:67 msgid "Rooms" msgstr "" #: ../../static/t/iconbar.html:57 msgid "Online users" msgstr "" #: ../../static/t/iconbar.html:62 ../../static/t/iconbar/edit.html:79 msgid "Chat" msgstr "" #: ../../static/t/iconbar.html:65 msgid "Advanced" msgstr "" #: ../../static/t/iconbar.html:72 ../../static/t/room/edit/editroom.html:4 #: ../../static/t/room/edit.html:5 msgid "Administration" msgstr "" #: ../../static/t/iconbar.html:83 msgid "customize this menu" msgstr "" #: ../../static/t/iconbar.html:92 msgid "switch to room list" msgstr "" #: ../../static/t/iconbar.html:93 msgid "switch to menu" msgstr "" #: ../../static/t/iconbar.html:94 msgid "My folders" msgstr "" #: ../../static/t/view_message/list_attach.html:3 #: ../../static/t/view_message/inline_attach.html:4 msgid "View" msgstr "" #: ../../static/t/view_message/list_attach.html:4 #: ../../static/t/view_message/inline_attach.html:5 msgid "Download" msgstr "" #: ../../static/t/view_message/print.html:14 #: ../../static/t/view_message.html:14 msgid "to" msgstr "" #: ../../static/t/openid_manual_create.html:2 msgid "Your OpenID" msgstr "" #: ../../static/t/openid_manual_create.html:2 msgid "was successfully verified." msgstr "" #: ../../static/t/openid_manual_create.html:3 msgid "However, the user name" msgstr "" #: ../../static/t/openid_manual_create.html:3 msgid "conflicts with an existing user." msgstr "" #: ../../static/t/openid_manual_create.html:5 msgid "Please specify the user name you would like to use." msgstr "" #: ../../static/t/files/graphicsupload.html:2 msgid "Image upload" msgstr "" #: ../../static/t/files/graphicsupload.html:6 msgid "You can upload an image directly from your computer" msgstr "" #: ../../static/t/files/graphicsupload.html:8 msgid "Please select a file to upload:" msgstr "" #: ../../static/t/files/section_onefile.html:20 msgid "Slideshow" msgstr "" #: ../../static/t/roombanner.html:10 ../../static/t/roombanner.html:11 msgid "new of" msgstr "" #: ../../static/t/roombanner.html:10 ../../static/t/roombanner.html:11 #: ../../static/t/msg_listselector_bottom.html:7 #: ../../static/t/msg_listselector_top.html:7 msgid "messages" msgstr "" #: ../../static/t/roombanner.html:28 msgid "Select page: " msgstr "" #: ../../static/t/who.html:13 msgid "Users currently on " msgstr "" #: ../../static/t/who.html:22 msgid "Click on a name to read user info. Click on" msgstr "" #: ../../static/t/who.html:24 msgid "to send an instant message to that user." msgstr "" #: ../../static/t/msg_listselector_bottom.html:2 #: ../../static/t/msg_listselector_top.html:2 msgid "Reading #" msgstr "" #: ../../static/t/msg_listselector_bottom.html:12 #: ../../static/t/msg_listselector_top.html:12 msgid "oldest to newest" msgstr "" #: ../../static/t/msg_listselector_bottom.html:20 #: ../../static/t/msg_listselector_top.html:20 msgid "newest to oldest" msgstr "" #: ../../static/t/newstartpage.html:4 msgid "New start page" msgstr "" #: ../../static/t/newstartpage.html:9 msgid "Your start page has been changed." msgstr "" #: ../../static/t/newstartpage.html:12 msgid "" "(Note: this does not change your browser's home page. It changes the page " "you begin on when you log on to" msgstr "" #: ../../static/t/no_new_msgs.html:3 msgid "No new messages." msgstr "" #: ../../static/t/view_blog/comment_box.html:8 msgid "Post a comment" msgstr "" #: ../../static/t/prefs/pushemail.html:2 msgid "Configure Push Email" msgstr "" #: ../../static/t/prefs/pushemail.html:9 msgid "Push email and SMS settings" msgstr "" #: ../../static/t/prefs/pushemail.html:17 msgid "" "If your administrator has enabled the functionality, Citadel can notify a " "Funambol server that you haved recieved new email and automatically " "syncronize any devices you have with the Funambol client installed." msgstr "" #: ../../static/t/prefs/pushemail.html:20 msgid "" "Alternatively, if the administrator has configured it, Citadel can send a " "text message to you when new mail arrives." msgstr "" #: ../../static/t/prefs/pushemail.html:26 msgid "Notify Funambol server" msgstr "" #: ../../static/t/prefs/pushemail.html:31 msgid "Send a text message to..." msgstr "" #: ../../static/t/prefs/pushemail.html:33 msgid "" "(Use international format, without any leading zeros, spaces or hypens, like " "+61415011501)" msgstr "" #: ../../static/t/prefs/pushemail.html:38 msgid "Use custom notification scheme configured by your Admin" msgstr "" #: ../../static/t/prefs/pushemail.html:43 msgid "Don‘t send any notifications" msgstr "" #: ../../static/t/prefs/box.html:9 msgid "Tree (folders) view" msgstr "" #: ../../static/t/prefs/box.html:11 msgid "Table (rooms) view" msgstr "" #: ../../static/t/prefs/box.html:20 msgid "12 hour (am/pm)" msgstr "" #: ../../static/t/prefs/box.html:25 msgid "24 hour" msgstr "" #: ../../static/t/prefs/box.html:152 msgid "Sunday" msgstr "" #: ../../static/t/prefs/box.html:153 msgid "Monday" msgstr "" #: ../../static/t/prefs/box.html:174 msgid "No signature" msgstr "" #: ../../static/t/prefs/box.html:238 msgid "Full-functionality" msgstr "" #: ../../static/t/prefs/box.html:241 msgid "Safe mode" msgstr "" #: ../../static/t/prefs/box.html:242 msgid "" "Safe mode is less intensive on your web browser, but not as fully featured." msgstr "" #: ../../static/t/wiki/pagelist.html:1 msgid "List of Wiki pages" msgstr "" #: ../../static/t/wiki/history.html:1 msgid "History of edits for this page" msgstr "" #: ../../static/t/who/list_static_header.html:1 msgid "Users currently on" msgstr "" #: ../../static/t/who/section.html:4 msgid "(kill)" msgstr "" #: ../../static/t/who/bio.html:4 ../../static/t/user/show.html:4 msgid "User profile" msgstr "" #: ../../static/t/who/summary.html:5 ../../static/t/who/box_list_static.html:6 #: ../../static/t/room/edit/tab_feed.html:13 msgid "User name" msgstr "" #: ../../static/t/who/summary.html:6 ../../static/t/who/box_list_static.html:7 msgid "Room" msgstr "" #: ../../static/t/who/box_list_static.html:8 msgid "From host" msgstr "" #: ../../static/t/view_message.html:19 msgid "Edit" msgstr "" #: ../../static/t/view_message.html:22 ../../static/t/view_message.html:26 msgid "Reply" msgstr "" #: ../../static/t/view_message.html:23 msgid "ReplyQuoted" msgstr "" #: ../../static/t/view_message.html:27 msgid "ReplyAll" msgstr "" #: ../../static/t/view_message.html:28 msgid "Forward" msgstr "" #: ../../static/t/view_message.html:31 ../../static/t/msg_listview.html:25 msgid "Move" msgstr "" #: ../../static/t/view_message.html:34 msgid "Headers" msgstr "" #: ../../static/t/view_message.html:35 ../../static/t/msg_listview.html:28 msgid "Print" msgstr "" #: ../../static/t/preferences.html:4 ../../static/t/preferences.html:7 msgid "Preferences and settings" msgstr "" #: ../../static/t/user/list.html:3 msgid "User list for " msgstr "" #: ../../static/t/user/list.html:9 msgid "User Name" msgstr "" #: ../../static/t/user/list.html:10 msgid "Number" msgstr "" #: ../../static/t/user/list.html:11 msgid "Access Level" msgstr "" #: ../../static/t/user/list.html:12 msgid "Last Login" msgstr "" #: ../../static/t/user/list.html:13 msgid "Total Logins" msgstr "" #: ../../static/t/user/list.html:14 msgid "Total Posts" msgstr "" #: ../../static/t/user/show.html:9 msgid "Click here to send an instant message to" msgstr "" #: ../../static/t/start_of_new_msgs.html:4 msgid "Old messages" msgstr "" #: ../../static/t/start_of_new_msgs.html:8 msgid "New messages" msgstr "" #: ../../static/t/display_main_menu.html:7 msgid "Basic commands" msgstr "" #: ../../static/t/display_main_menu.html:10 msgid "Your info" msgstr "" #: ../../static/t/display_main_menu.html:12 msgid "Advanced room commands" msgstr "" #: ../../static/t/iconbar/save.html:4 ../../static/t/iconbar/edit.html:4 msgid "Customize the icon bar" msgstr "" #: ../../static/t/iconbar/save.html:11 msgid "" "Your icon bar has been updated. Please select any of its choices to continue." msgstr "" #: ../../static/t/iconbar/save.html:11 msgid "" "You may need to force refresh (SHIFT-F5)> in order for changes to take effect" msgstr "" #: ../../static/t/iconbar/edit.html:11 msgid "Display icons as:" msgstr "" #: ../../static/t/iconbar/edit.html:12 msgid "pictures and text" msgstr "" #: ../../static/t/iconbar/edit.html:13 msgid "pictures only" msgstr "" #: ../../static/t/iconbar/edit.html:14 msgid "text only" msgstr "" #: ../../static/t/iconbar/edit.html:16 msgid "" "Select the icons you would like to see displayed in the 'icon bar' menu on " "the left side of the screen." msgstr "" #: ../../static/t/iconbar/edit.html:23 msgid "Site logo" msgstr "" #: ../../static/t/iconbar/edit.html:23 msgid "An icon describing this site" msgstr "" #: ../../static/t/iconbar/edit.html:29 msgid "Your summary page" msgstr "" #: ../../static/t/iconbar/edit.html:36 msgid "Mail (inbox)" msgstr "" #: ../../static/t/iconbar/edit.html:36 msgid "A shortcut to your email Inbox" msgstr "" #: ../../static/t/iconbar/edit.html:42 msgid "Your personal address book" msgstr "" #: ../../static/t/iconbar/edit.html:49 msgid "Your personal notes" msgstr "" #: ../../static/t/iconbar/edit.html:55 msgid "A shortcut to your personal calendar" msgstr "" #: ../../static/t/iconbar/edit.html:61 msgid "A shortcut to your personal task list" msgstr "" #: ../../static/t/iconbar/edit.html:67 msgid "" "Clicking this icon displays a list of all accessible rooms (or folders) " "available." msgstr "" #: ../../static/t/iconbar/edit.html:73 msgid "Who is online?" msgstr "" #: ../../static/t/iconbar/edit.html:73 msgid "Clicking this icon displays a list of all users currently logged in." msgstr "" #: ../../static/t/iconbar/edit.html:79 msgid "" "Clicking this icon enters real-time chat mode with other users in the same " "room." msgstr "" #: ../../static/t/iconbar/edit.html:85 msgid "Advanced options" msgstr "" #: ../../static/t/iconbar/edit.html:85 msgid "Access to the complete menu of Citadel functions." msgstr "" #: ../../static/t/iconbar/edit.html:91 msgid "Citadel logo" msgstr "" #: ../../static/t/iconbar/edit.html:91 msgid "Displays the 'Powered by Citadel' icon" msgstr "" #: ../../static/t/room/edit/tab_expire.html:8 msgid "Message expire policy for this room" msgstr "" #: ../../static/t/room/edit/tab_expire.html:14 msgid "Use the default policy for this floor" msgstr "" #: ../../static/t/room/edit/tab_expire.html:36 msgid "Message expire policy for this floor" msgstr "" #: ../../static/t/room/edit/tab_expire.html:42 msgid "Use the system default" msgstr "" #: ../../static/t/room/edit/editroom.html:5 ../../static/t/room/edit.html:6 msgid "Configuration" msgstr "" #: ../../static/t/room/edit/editroom.html:6 ../../static/t/room/edit.html:7 msgid "Message expire policy" msgstr "" #: ../../static/t/room/edit/editroom.html:7 ../../static/t/room/edit.html:8 msgid "Access controls" msgstr "" #: ../../static/t/room/edit/editroom.html:8 ../../static/t/room/edit.html:9 msgid "Sharing" msgstr "" #: ../../static/t/room/edit/editroom.html:9 ../../static/t/room/edit.html:10 msgid "Mailing list service" msgstr "" #: ../../static/t/room/edit/editroom.html:10 ../../static/t/room/edit.html:11 msgid "Remote retrieval" msgstr "" #: ../../static/t/room/edit/tab_config.html:6 msgid "name of room: " msgstr "" #: ../../static/t/room/edit/tab_config.html:10 #: ../../static/t/room/create.html:20 msgid "Resides on floor: " msgstr "" #: ../../static/t/room/edit/tab_config.html:16 #: ../../static/t/room/create.html:68 msgid "Type of room:" msgstr "" #: ../../static/t/room/edit/tab_config.html:22 #: ../../static/t/room/create.html:73 msgid "Public (automatically appears to everyone)" msgstr "" #: ../../static/t/room/edit/tab_config.html:28 #: ../../static/t/room/create.html:77 msgid "Private - hidden (accessible to anyone who knows its name)" msgstr "" #: ../../static/t/room/edit/tab_config.html:35 #: ../../static/t/room/create.html:81 msgid "Private - require password: " msgstr "" #: ../../static/t/room/edit/tab_config.html:44 #: ../../static/t/room/create.html:86 msgid "Private - invitation only" msgstr "" #: ../../static/t/room/edit/tab_config.html:51 #: ../../static/t/room/create.html:90 msgid "Personal (mailbox for you only)" msgstr "" #: ../../static/t/room/edit/tab_config.html:55 msgid "If private, cause current users to forget room" msgstr "" #: ../../static/t/room/edit/tab_config.html:61 msgid "Preferred users only" msgstr "" #: ../../static/t/room/edit/tab_config.html:66 msgid "Read-only room" msgstr "" #: ../../static/t/room/edit/tab_config.html:71 msgid "All users allowed to post may also delete messages" msgstr "" #: ../../static/t/room/edit/tab_config.html:76 msgid "File directory room" msgstr "" #: ../../static/t/room/edit/tab_config.html:80 msgid "Directory name: " msgstr "" #: ../../static/t/room/edit/tab_config.html:86 msgid "Uploading allowed" msgstr "" #: ../../static/t/room/edit/tab_config.html:91 msgid "Downloading allowed" msgstr "" #: ../../static/t/room/edit/tab_config.html:96 msgid "Visible directory" msgstr "" #: ../../static/t/room/edit/tab_config.html:103 msgid "Network shared room" msgstr "" #: ../../static/t/room/edit/tab_config.html:108 msgid "Permanent (does not auto-purge)" msgstr "" #: ../../static/t/room/edit/tab_config.html:113 msgid "Subject Required (Force users to specify a message subject)" msgstr "" #: ../../static/t/room/edit/tab_config.html:116 msgid "Anonymous messages" msgstr "" #: ../../static/t/room/edit/tab_config.html:122 msgid "No anonymous messages" msgstr "" #: ../../static/t/room/edit/tab_config.html:127 msgid "All messages are anonymous" msgstr "" #: ../../static/t/room/edit/tab_config.html:132 msgid "Prompt user when entering messages" msgstr "" #: ../../static/t/room/edit/tab_config.html:136 msgid "Room aide: " msgstr "" #: ../../static/t/room/edit/tab_listserv.html:5 msgid "" "The contents of this room are being mailed as individual messages " "to the following list recipients:

    " msgstr "" #: ../../static/t/room/edit/tab_listserv.html:19 msgid "" "The contents of this room are being mailed in digest form to the " "following list recipients:

    " msgstr "" #: ../../static/t/room/edit/tab_listserv.html:39 msgid "Add recipients from Contacts or other address books" msgstr "" #: ../../static/t/room/edit/tab_listserv.html:48 msgid "Allow non-subscribers to mail to this room." msgstr "" #: ../../static/t/room/edit/tab_listserv.html:54 msgid "Room post publication needs Admin permission." msgstr "" #: ../../static/t/room/edit/tab_listserv.html:59 msgid "Allow self-service subscribe/unsubscribe requests." msgstr "" #: ../../static/t/room/edit/tab_listserv.html:65 msgid "The URL for subscribe/unsubscribe is: " msgstr "" #: ../../static/t/room/edit/digestrecp_removal.html:1 #: ../../static/t/room/edit/pop3client_removal.html:9 #: ../../static/t/room/edit/listrecp_removal.html:1 #: ../../static/t/room/edit/rssclient_removal.html:5 msgid "(remove)" msgstr "" #: ../../static/t/room/edit/tab_admin.html:5 msgid "Delete this room" msgstr "" #: ../../static/t/room/edit/tab_admin.html:10 msgid "Set or change the icon for this rooms banner" msgstr "" #: ../../static/t/room/edit/tab_admin.html:14 msgid "Edit this rooms Info file" msgstr "" #: ../../static/t/room/edit/tab_share.html:5 msgid "Shared with" msgstr "" #: ../../static/t/room/edit/tab_share.html:6 msgid "Not shared with" msgstr "" #: ../../static/t/room/edit/tab_share.html:11 #: ../../static/t/room/edit/tab_share.html:21 msgid "Remote node name" msgstr "" #: ../../static/t/room/edit/tab_share.html:12 #: ../../static/t/room/edit/tab_share.html:22 msgid "Remote room name" msgstr "" #: ../../static/t/room/edit/tab_share.html:13 #: ../../static/t/room/edit/tab_share.html:23 msgid "Actions" msgstr "" #: ../../static/t/room/edit/tab_share.html:35 msgid "" "When sharing a room, it must be shared from both ends. Adding a node to the " "'shared' list sends messages out, but in order to receive messages, the " "other nodes must be configured to send messages out to your system as well. " "
  • If the remote room name is blank, it is assumed that the room name is " "identical on the remote node.
  • If the remote room name is different, the " "remote node must also configure the name of the room here." msgstr "" #: ../../static/t/room/edit/tab_feed.html:2 msgid "" "Retrieve messages from these remote POP3 accounts and store them in this " "room:" msgstr "" #: ../../static/t/room/edit/tab_feed.html:12 msgid "Remote host" msgstr "" #: ../../static/t/room/edit/tab_feed.html:15 msgid "Keep messages on server?" msgstr "" #: ../../static/t/room/edit/tab_feed.html:16 msgid "Interval" msgstr "" #: ../../static/t/room/edit/tab_feed.html:31 msgid "Fetch the following RSS feeds and store them in this room:" msgstr "" #: ../../static/t/room/edit/tab_feed.html:43 msgid "Feed URL" msgstr "" #: ../../static/t/room/edit/tab_access.html:5 msgid "" "The users listed below have access to this room. To remove a user from the " "access list, select the user name from the list and click 'Kick'." msgstr "" #: ../../static/t/room/edit/tab_access.html:20 msgid "" "To grant another user access to this room, enter the user name in the box " "below and click 'Invite'." msgstr "" #: ../../static/t/room/edit/tab_access.html:26 msgid "Invite:" msgstr "" #: ../../static/t/room/edit/tab_access.html:35 msgid "Users" msgstr "" #: ../../static/t/room/zapped_list.html:7 msgid "Zapped (forgotten) rooms" msgstr "" #: ../../static/t/room/zapped_list.html:10 msgid "Click on any room to un-zap it and goto that room." msgstr "" #: ../../static/t/room/display_private.html:7 msgid "Go to a hidden room" msgstr "" #: ../../static/t/room/display_private.html:8 msgid "" "If you know the name of a hidden (guess-name) or passworded room, you can " "enter that room by typing its name below. Once you gain access to a private " "room, it will appear in your regular room listings so you don‘t have to keep " "returning here." msgstr "" #: ../../static/t/room/display_private.html:14 msgid "Enter room name:" msgstr "" #: ../../static/t/room/display_private.html:21 msgid "Enter room password:" msgstr "" #: ../../static/t/room/create.html:11 #: ../../static/t/menu/advanced_roomcommands.html:6 msgid "Create a new room" msgstr "" #: ../../static/t/room/create.html:18 msgid "Name of room: " msgstr "" #: ../../static/t/room/create.html:32 msgid "Default view for room: " msgstr "" #: ../../static/t/room/zap_this.html:3 msgid "Zap (forget/unsubscribe) the current room" msgstr "" #: ../../static/t/room/zap_this.html:6 msgid "If you select this option," msgstr "" #: ../../static/t/room/zap_this.html:8 msgid "will disappear from your room list. Is this what you wish to do?" msgstr "" #: ../../static/t/menu/your_info.html:2 msgid "Change your preferences and settings" msgstr "" #: ../../static/t/menu/your_info.html:3 msgid "Update your contact information" msgstr "" #: ../../static/t/menu/your_info.html:5 msgid "Enter your 'bio'" msgstr "" #: ../../static/t/menu/your_info.html:6 msgid "Edit your online photo" msgstr "" #: ../../static/t/menu/your_info.html:8 msgid "Edit your push email settings" msgstr "" #: ../../static/t/menu/your_info.html:9 msgid "Manage your OpenIDs" msgstr "" #: ../../static/t/menu/basic_commands.html:3 msgid "List known rooms" msgstr "" #: ../../static/t/menu/basic_commands.html:3 msgid "Where can I go from here?" msgstr "" #: ../../static/t/menu/basic_commands.html:4 ../../static/t/navbar.html:168 msgid "Goto next room" msgstr "" #: ../../static/t/menu/basic_commands.html:4 msgid "...with unread messages" msgstr "" #: ../../static/t/menu/basic_commands.html:5 msgid "Skip to next room" msgstr "" #: ../../static/t/menu/basic_commands.html:5 msgid "(come back here later)" msgstr "" #: ../../static/t/menu/basic_commands.html:6 ../../static/t/navbar.html:5 msgid "Ungoto" msgstr "" #: ../../static/t/menu/basic_commands.html:6 msgid "oops! Back to " msgstr "" #: ../../static/t/menu/basic_commands.html:10 ../../static/t/navbar.html:13 msgid "Read new messages" msgstr "" #: ../../static/t/menu/basic_commands.html:10 msgid "...in this room" msgstr "" #: ../../static/t/menu/basic_commands.html:11 ../../static/t/navbar.html:19 msgid "Read all messages" msgstr "" #: ../../static/t/menu/basic_commands.html:11 msgid "...old and new" msgstr "" #: ../../static/t/menu/basic_commands.html:12 ../../static/t/navbar.html:25 msgid "Enter a message" msgstr "" #: ../../static/t/menu/basic_commands.html:12 msgid "(post in this room)" msgstr "" #: ../../static/t/menu/basic_commands.html:13 msgid "File library" msgstr "" #: ../../static/t/menu/basic_commands.html:13 msgid "(List files available for download)" msgstr "" #: ../../static/t/menu/basic_commands.html:17 msgid "Summary page" msgstr "" #: ../../static/t/menu/basic_commands.html:17 msgid "Summary of my account" msgstr "" #: ../../static/t/menu/basic_commands.html:18 msgid "User list" msgstr "" #: ../../static/t/menu/basic_commands.html:18 msgid "(all registered users)" msgstr "" #: ../../static/t/menu/basic_commands.html:19 msgid "Bye!" msgstr "" #: ../../static/t/menu/advanced_roomcommands.html:3 msgid "Edit or delete this room" msgstr "" #: ../../static/t/menu/advanced_roomcommands.html:5 msgid "Go to a 'hidden' room" msgstr "" #: ../../static/t/menu/advanced_roomcommands.html:7 msgid "Zap (forget) this room" msgstr "" #: ../../static/t/menu/advanced_roomcommands.html:8 msgid "List all forgotten rooms" msgstr "" #: ../../static/t/navbar.html:34 msgid "View contacts" msgstr "" #: ../../static/t/navbar.html:40 msgid "Add new contact" msgstr "" #: ../../static/t/navbar.html:49 msgid "Day view" msgstr "" #: ../../static/t/navbar.html:55 msgid "Month view" msgstr "" #: ../../static/t/navbar.html:61 msgid "Add new event" msgstr "" #: ../../static/t/navbar.html:70 msgid "Calendar list" msgstr "" #: ../../static/t/navbar.html:79 msgid "View tasks" msgstr "" #: ../../static/t/navbar.html:85 msgid "Add new task" msgstr "" #: ../../static/t/navbar.html:94 msgid "View notes" msgstr "" #: ../../static/t/navbar.html:101 msgid "Add new note" msgstr "" #: ../../static/t/navbar.html:110 msgid "Refresh message list" msgstr "" #: ../../static/t/navbar.html:122 msgid "Write mail" msgstr "" #: ../../static/t/navbar.html:132 msgid "Wiki home" msgstr "" #: ../../static/t/navbar.html:139 msgid "Edit this page" msgstr "" #: ../../static/t/navbar.html:145 msgid "History" msgstr "" #: ../../static/t/navbar.html:154 msgid "New blog post" msgstr "" #: ../../static/t/navbar.html:162 msgid "Skip this room" msgstr "" #: ../../static/t/msg_listview.html:18 msgid "Loading messages from server, please wait" msgstr "" #: ../../static/t/msg_listview.html:24 msgid "Open in new window" msgstr "" #: ../../static/t/msg_listview.html:26 msgid "Copy" msgstr "" #: ../../static/t/view_mailq/message.html:6 msgid "Originaly posted in: " msgstr "" #: ../../static/t/view_mailq/header.html:15 msgid "Refresh this page" msgstr "" #: ../../static/t/view_mailq/header.html:21 msgid "Message ID" msgstr "" #: ../../static/t/view_mailq/header.html:23 msgid "Date/time submitted" msgstr "" #: ../../static/t/view_mailq/header.html:25 msgid "Next attempt" msgstr "" #: ../../static/t/view_mailq/header.html:29 msgid "Recipients" msgstr "" #: ../../static/t/view_mailq/footer_empty.html:4 msgid "The queue is empty." msgstr "" #: ../../static/t/view_mailq/footer_empty.html:9 #: ../../static/t/view_mailq/footer.html:5 msgid "You do not have permission to view this resource." msgstr "" #: ../../static/t/get_logged_in.html:5 msgid "You must be logged in to access this page." msgstr "" #: ../../static/t/get_logged_in.html:9 #: ../../static/t/edit_message/attachments_pane.html:3 msgid "Close window" msgstr "" #: ../../static/t/get_logged_in.html:55 msgid "Log in using a user name and password" msgstr "" #: ../../static/t/get_logged_in.html:60 ../../static/t/get_logged_in.html:75 msgid "Password:" msgstr "" #: ../../static/t/get_logged_in.html:65 ../../static/t/get_logged_in.html:69 msgid "New user? Register now" msgstr "" #: ../../static/t/get_logged_in.html:70 msgid "" "enter the name and password you wish to use, and click "New User." " msgstr "" #: ../../static/t/get_logged_in.html:83 msgid "Log in using OpenID" msgstr "" #: ../../static/t/get_logged_in.html:85 msgid "OpenID URL:" msgstr "" #: ../../static/t/get_logged_in.html:92 msgid "Log in using Google" msgstr "" #: ../../static/t/get_logged_in.html:97 msgid "Log in using Yahoo" msgstr "" #: ../../static/t/get_logged_in.html:102 msgid "Log in using AOL or AIM" msgstr "" #: ../../static/t/get_logged_in.html:104 msgid "Enter your AOL or AIM screen name:" msgstr "" #: ../../static/t/get_logged_in.html:115 msgid "Please wait" msgstr "" #: ../../static/t/summary/page.html:4 msgid "Summary page for " msgstr "" #: ../../static/t/summary/page.html:21 msgid "Messages" msgstr "" #: ../../static/t/summary/page.html:39 msgid "Today on your calendar" msgstr "" #: ../../static/t/summary/page.html:51 msgid "Who‘s online now" msgstr "" #: ../../static/t/summary/page.html:60 msgid "About this server" msgstr "" #: ../../static/t/summary/page.html:63 msgid "You are connected to" msgstr "" #: ../../static/t/summary/page.html:64 msgid "running" msgstr "" #: ../../static/t/summary/page.html:65 msgid "with" msgstr "" #: ../../static/t/summary/page.html:66 msgid "server build" msgstr "" #: ../../static/t/summary/page.html:67 msgid "and located in" msgstr "" #: ../../static/t/summary/page.html:68 msgid "Your system administrator is" msgstr "" #: ../../static/t/edit_message/attachments_pane.html:16 msgid "Attach file" msgstr "" #: ../../static/t/edit_message/attachments_pane.html:21 msgid "Upload" msgstr "" #: ../../static/t/edit_message/section_attach_select.html:4 msgid "Remove" msgstr "" #: ../../static/t/loggedinas.html:3 msgid "Logged in as" msgstr "" #: ../../static/t/loggedinas.html:6 msgid "Not logged in." msgstr "" webcit-8.24-dfsg.orig/dav_propfind.c0000644000175000017500000005217312271477123017227 0ustar michaelmichael/* * Handles GroupDAV and CalDAV PROPFIND requests. * * A few notes about our XML output: * * --> Yes, we are spewing tags directly instead of using an XML library. * Whining about it will be summarily ignored. * * --> XML is deliberately output with no whitespace/newlines between tags. * This makes it difficult to read, but we have discovered clients which * crash when you try to pretty it up. * * References: * http://www.ietf.org/rfc/rfc4791.txt * http://blogs.nologin.es/rickyepoderi/index.php?/archives/14-Introducing-CalDAV-Part-I.html Sample query: PROPFIND /groupdav/calendar/ HTTP/1.1 Content-type: text/xml; charset=utf-8 Content-length: 166 * * Copyright (c) 2005-2012 by the citadel.org team * * This program is open source software; you can redistribute it and/or * modify it under the terms of the GNU General Public License version 3. * * This program 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. */ #include "webcit.h" #include "webserver.h" #include "dav.h" /* * Given an encoded UID, translate that to an unencoded Citadel EUID and * then search for it in the current room. Return a message number or -1 * if not found. * */ long locate_message_by_uid(const char *uid) { char buf[256]; char decoded_uid[1024]; long retval = (-1L); /* decode the UID */ euid_unescapize(decoded_uid, uid); /* ask Citadel if we have this one */ serv_printf("EUID %s", decoded_uid); serv_getln(buf, sizeof buf); if (buf[0] == '2') { retval = atol(&buf[4]); } return(retval); } /* * IgnoreFloor: set to 0 or 1 _nothing else_ * Subfolders: direct child floors will be put here. */ const folder *GetRESTFolder(int IgnoreFloor, HashList *Subfolders) { wcsession *WCC = WC; void *vFolder; const folder *ThisFolder = NULL; const folder *FoundFolder = NULL; const folder *BestGuess = NULL; int nBestGuess = 0; HashPos *itd, *itfl; StrBuf * Dir; void *vDir; long len; const char *Key; int iRoom, jURL, urlp; int delta; /* * Guess room: if the full URL matches a room, list thats it. We also need to remember direct sub rooms. * if the URL is longer, we need to find the "best guess" so we can find the room we're in, and the rest * of the URL will be uids and so on. */ itfl = GetNewHashPos(WCC->Floors, 0); urlp = GetCount(WCC->Directory); while (GetNextHashPos(WCC->Floors, itfl, &len, &Key, &vFolder) && (ThisFolder == NULL)) { ThisFolder = vFolder; if (!IgnoreFloor && /* so we can handle legacy URLS... */ (ThisFolder->Floor != WCC->CurrentFloor)) continue; if (ThisFolder->nRoomNameParts > 1) { /*TODO: is that number all right? */ // if (urlp - ThisFolder->nRoomNameParts != 2) { // if (BestGuess != NULL) // continue; //ThisFolder->name // itd = GetNewHashPos(WCC->Directory, 0); // GetNextHashPos(WCC->Directory, itd, &len, &Key, &vDir); //TODO: how many to fast forward? // } itd = GetNewHashPos(WCC->Directory, 0); GetNextHashPos(WCC->Directory, itd, &len, &Key, &vDir); //TODO: how many to fast forward? for (iRoom = 0, /* Fast forward the floorname as we checked it above: */ jURL = IgnoreFloor; (iRoom <= ThisFolder->nRoomNameParts) && (jURL <= urlp); iRoom++, jURL++, GetNextHashPos(WCC->Directory, itd, &len, &Key, &vDir)) { Dir = (StrBuf*)vDir; if (strcmp(ChrPtr(ThisFolder->RoomNameParts[iRoom]), ChrPtr(Dir)) != 0) { DeleteHashPos(&itd); continue; } } DeleteHashPos(&itd); /* Gotcha? */ if ((iRoom == ThisFolder->nRoomNameParts) && (jURL == urlp)) { FoundFolder = ThisFolder; } /* URL got more parts then this room, so we remember it for the best guess*/ else if ((jURL <= urlp) && (ThisFolder->nRoomNameParts <= nBestGuess)) { BestGuess = ThisFolder; nBestGuess = jURL - 1; } /* Room has more parts than the URL, it might be a sub-room? */ else if (iRoom nRoomNameParts) {//// TODO: ThisFolder->nRoomNameParts == urlp - IgnoreFloor??? Put(Subfolders, SKEY(ThisFolder->name), /* Cast away const, its a reference. */ (void*)ThisFolder, reference_free_handler); } } else { delta = GetCount(WCC->Directory) - ThisFolder->nRoomNameParts; if ((delta != 2) && (nBestGuess > 1)) continue; itd = GetNewHashPos(WCC->Directory, 0); if (!GetNextHashPos(WCC->Directory, itd, &len, &Key, &vDir) || (vDir == NULL)) { DeleteHashPos(&itd); syslog(LOG_DEBUG, "5\n"); continue; } DeleteHashPos(&itd); Dir = (StrBuf*) vDir; if (strcmp(ChrPtr(ThisFolder->name), ChrPtr(Dir)) != 0) { DeleteHashPos(&itd); syslog(LOG_DEBUG, "5\n"); continue; } DeleteHashPos(&itfl); DeleteHashPos(&itd); if (delta != 2) { nBestGuess = 1; BestGuess = ThisFolder; } else FoundFolder = ThisFolder; } } /* TODO: Subfolders: remove patterns not matching the best guess or thisfolder */ DeleteHashPos(&itfl); if (FoundFolder != NULL) return FoundFolder; else return BestGuess; } long GotoRestRoom(HashList *SubRooms) { int IgnoreFloor = 0; /* deprecated... */ wcsession *WCC = WC; long Count; long State; const folder *ThisFolder; State = REST_TOPLEVEL; if (WCC->Hdr->HR.Handler != NULL) State |= REST_IN_NAMESPACE; Count = GetCount(WCC->Directory); if (Count == 0) return State; if (Count >= 1) State |=REST_IN_FLOOR; if (Count == 1) return State; /* * More than 3 params and no floor found? * -> fall back to old non-floored notation */ if ((Count >= 3) && (WCC->CurrentFloor == NULL)) IgnoreFloor = 1; if (Count >= 3) { IgnoreFloor = 0; State |= REST_IN_FLOOR; ThisFolder = GetRESTFolder(IgnoreFloor, SubRooms); if (ThisFolder != NULL) { if (WCC->ThisRoom != NULL) if (CompareRooms(WCC->ThisRoom, ThisFolder) != 0) gotoroom(ThisFolder->name); State |= REST_IN_ROOM; } if (GetCount(SubRooms) > 0) State |= REST_HAVE_SUB_ROOMS; } if ((WCC->ThisRoom != NULL) && (Count + IgnoreFloor > 3)) { if (WCC->Hdr->HR.Handler->RID(ExistsID, IgnoreFloor)) { State |= REST_GOT_LOCAL_PART; } else { /// WHOOPS, not there??? State |= REST_NONEXIST; } } return State; } /* * List rooms (or "collections" in DAV terminology) which contain * interesting groupware objects. */ void dav_collection_list(void) { wcsession *WCC = WC; char buf[256]; char roomname[256]; int view; char datestring[256]; time_t now; time_t mtime; int is_groupware_collection = 0; int starting_point = 1; /**< 0 for /, 1 for /groupdav/ */ if (WCC->Hdr->HR.Handler == NULL) { starting_point = 0; } else if (StrLength(WCC->Hdr->HR.ReqLine) == 0) { starting_point = 1; } else { starting_point = 2; } now = time(NULL); http_datestring(datestring, sizeof datestring, now); /* * Be rude. Completely ignore the XML request and simply send them * everything we know about. Let the client sort it out. */ hprintf("HTTP/1.0 207 Multi-Status\r\n"); dav_common_headers(); hprintf("Date: %s\r\n", datestring); hprintf("Content-type: text/xml\r\n"); if (DisableGzip || (!WCC->Hdr->HR.gzip_ok)) hprintf("Content-encoding: identity\r\n"); begin_burst(); wc_printf("" "" ); /* * If the client is requesting the root, show a root node. */ if (starting_point == 0) { wc_printf(""); wc_printf(""); dav_identify_host(); wc_printf("/"); wc_printf(""); wc_printf(""); wc_printf("HTTP/1.1 200 OK"); wc_printf(""); wc_printf("/"); wc_printf(""); wc_printf(""); escputs(datestring); wc_printf(""); wc_printf(""); wc_printf(""); wc_printf(""); } /* * If the client is requesting "/groupdav", show a /groupdav subdirectory. */ if ((starting_point + WCC->Hdr->HR.dav_depth) >= 1) { wc_printf(""); wc_printf(""); dav_identify_host(); wc_printf("/groupdav"); wc_printf(""); wc_printf(""); wc_printf("HTTP/1.1 200 OK"); wc_printf(""); wc_printf("GroupDAV"); wc_printf(""); wc_printf(""); escputs(datestring); wc_printf(""); wc_printf(""); wc_printf(""); wc_printf(""); } /* * Now go through the list and make it look like a DAV collection */ serv_puts("LKRA"); serv_getln(buf, sizeof buf); if (buf[0] == '1') while (serv_getln(buf, sizeof buf), strcmp(buf, "000")) { extract_token(roomname, buf, 0, '|', sizeof roomname); view = extract_int(buf, 7); mtime = extract_long(buf, 8); http_datestring(datestring, sizeof datestring, mtime); /* * For now, only list rooms that we know a GroupDAV client * might be interested in. In the future we may add * the rest. * * We determine the type of objects which are stored in each * room by looking at the *default* view for the room. This * allows, for example, a Calendar room to appear as a * GroupDAV calendar even if the user has switched it to a * Calendar List view. */ if ( (view == VIEW_CALENDAR) || (view == VIEW_TASKS) || (view == VIEW_ADDRESSBOOK) || (view == VIEW_NOTES) || (view == VIEW_JOURNAL) || (view == VIEW_WIKI) ) { is_groupware_collection = 1; } else { is_groupware_collection = 0; } if ( (is_groupware_collection) && ((starting_point + WCC->Hdr->HR.dav_depth) >= 2) ) { wc_printf(""); wc_printf(""); dav_identify_host(); wc_printf("/groupdav/"); urlescputs(roomname); wc_printf("/"); wc_printf(""); wc_printf("HTTP/1.1 200 OK"); wc_printf(""); wc_printf(""); escputs(roomname); wc_printf(""); wc_printf(""); switch(view) { case VIEW_CALENDAR: wc_printf(""); break; case VIEW_TASKS: wc_printf(""); break; case VIEW_ADDRESSBOOK: wc_printf(""); break; case VIEW_NOTES: wc_printf(""); break; case VIEW_JOURNAL: wc_printf(""); break; case VIEW_WIKI: wc_printf(""); break; } wc_printf(""); wc_printf(""); escputs(datestring); wc_printf(""); wc_printf(""); wc_printf(""); wc_printf(""); } } wc_printf("\n"); end_burst(); } void propfind_xml_start(void *data, const char *supplied_el, const char **attr) { // syslog(LOG_DEBUG, "<%s>", supplied_el); } void propfind_xml_end(void *data, const char *supplied_el) { // syslog(LOG_DEBUG, "", supplied_el); } /* * The pathname is always going to be /groupdav/room_name/msg_num */ void dav_propfind(void) { wcsession *WCC = WC; StrBuf *dav_roomname; StrBuf *dav_uid; StrBuf *MsgNum; long BufLen; long dav_msgnum = (-1); char uid[256]; char encoded_uid[256]; long *msgs = NULL; int num_msgs = 0; int i; char datestring[256]; time_t now; now = time(NULL); http_datestring(datestring, sizeof datestring, now); int parse_success = 0; XML_Parser xp = XML_ParserCreateNS(NULL, '|'); if (xp) { // XML_SetUserData(xp, XXX); XML_SetElementHandler(xp, propfind_xml_start, propfind_xml_end); // XML_SetCharacterDataHandler(xp, xrds_xml_chardata); const char *req = ChrPtr(WCC->upload); if (req) { req = strchr(req, '<'); /* hunt for the first tag */ } if (!req) { req = "ERROR"; /* force it to barf */ } i = XML_Parse(xp, req, strlen(req), 1); if (!i) { syslog(LOG_DEBUG, "XML_Parse() failed: %s", XML_ErrorString(XML_GetErrorCode(xp))); XML_ParserFree(xp); parse_success = 0; } else { parse_success = 1; } } if (!parse_success) { hprintf("HTTP/1.1 500 Internal Server Error\r\n"); dav_common_headers(); hprintf("Date: %s\r\n", datestring); hprintf("Content-Type: text/plain\r\n"); wc_printf("An internal error has occurred at %s:%d.\r\n", __FILE__ , __LINE__ ); end_burst(); return; } dav_roomname = NewStrBuf(); dav_uid = NewStrBuf(); StrBufExtract_token(dav_roomname, WCC->Hdr->HR.ReqLine, 0, '/'); StrBufExtract_token(dav_uid, WCC->Hdr->HR.ReqLine, 1, '/'); syslog(LOG_DEBUG, "PROPFIND requested for '%s' at depth %d", ChrPtr(dav_roomname), WCC->Hdr->HR.dav_depth ); /* * If the room name is blank, the client is requesting a folder list. */ if (StrLength(dav_roomname) == 0) { dav_collection_list(); FreeStrBuf(&dav_roomname); FreeStrBuf(&dav_uid); return; } /* Go to the correct room. */ if (strcasecmp(ChrPtr(WCC->CurRoom.name), ChrPtr(dav_roomname))) { gotoroom(dav_roomname); } if (strcasecmp(ChrPtr(WCC->CurRoom.name), ChrPtr(dav_roomname))) { hprintf("HTTP/1.1 404 not found\r\n"); dav_common_headers(); hprintf("Date: %s\r\n", datestring); hprintf("Content-Type: text/plain\r\n"); wc_printf("There is no folder called \"%s\" on this server.\r\n", ChrPtr(dav_roomname)); end_burst(); FreeStrBuf(&dav_roomname); FreeStrBuf(&dav_uid); return; } /* If dav_uid is non-empty, client is requesting a PROPFIND on * a specific item in the room. This is not valid GroupDAV, but * it is valid WebDAV (and probably CalDAV too). */ if (StrLength(dav_uid) != 0) { dav_msgnum = locate_message_by_uid(ChrPtr(dav_uid)); if (dav_msgnum < 0) { hprintf("HTTP/1.1 404 not found\r\n"); dav_common_headers(); hprintf("Content-Type: text/plain\r\n"); wc_printf("Object \"%s\" was not found in the \"%s\" folder.\r\n", ChrPtr(dav_uid), ChrPtr(dav_roomname) ); end_burst(); FreeStrBuf(&dav_roomname); FreeStrBuf(&dav_uid); return; } /* Be rude. Completely ignore the XML request and simply send them * everything we know about (which is going to simply be the ETag and * nothing else). Let the client-side parser sort it out. */ hprintf("HTTP/1.0 207 Multi-Status\r\n"); dav_common_headers(); hprintf("Date: %s\r\n", datestring); hprintf("Content-type: text/xml\r\n"); if (DisableGzip || (!WCC->Hdr->HR.gzip_ok)) hprintf("Content-encoding: identity\r\n"); begin_burst(); wc_printf("" "" ); wc_printf(""); wc_printf(""); dav_identify_host(); wc_printf("/groupdav/"); urlescputs(ChrPtr(WCC->CurRoom.name)); euid_escapize(encoded_uid, ChrPtr(dav_uid)); wc_printf("/%s", encoded_uid); wc_printf(""); wc_printf(""); wc_printf("HTTP/1.1 200 OK"); wc_printf(""); wc_printf("\"%ld\"", dav_msgnum); wc_printf(""); escputs(datestring); wc_printf(""); wc_printf(""); wc_printf(""); wc_printf("\n"); wc_printf("\n"); end_burst(); FreeStrBuf(&dav_roomname); FreeStrBuf(&dav_uid); return; } FreeStrBuf(&dav_roomname); FreeStrBuf(&dav_uid); /* * If we get to this point the client is performing a PROPFIND on the room itself. * * We call it a room; DAV calls it a "collection." We have to give it some properties * of the room itself and then offer a list of all items contained therein. * * Be rude. Completely ignore the XML request and simply send them * everything we know about (which is going to simply be the ETag and * nothing else). Let the client-side parser sort it out. */ //syslog(LOG_DEBUG, "BE RUDE AND IGNORE: \033[31m%s\033[0m", ChrPtr(WC->upload) ); hprintf("HTTP/1.0 207 Multi-Status\r\n"); dav_common_headers(); hprintf("Date: %s\r\n", datestring); hprintf("Content-type: text/xml\r\n"); if (DisableGzip || (!WCC->Hdr->HR.gzip_ok)) { hprintf("Content-encoding: identity\r\n"); } begin_burst(); wc_printf("" "" ); /* Transmit the collection resource */ wc_printf(""); wc_printf(""); dav_identify_host(); wc_printf("/groupdav/"); urlescputs(ChrPtr(WCC->CurRoom.name)); wc_printf(""); wc_printf(""); wc_printf("HTTP/1.1 200 OK"); wc_printf(""); wc_printf(""); escputs(ChrPtr(WCC->CurRoom.name)); wc_printf(""); wc_printf(""); /* empty owner ought to be legal; see rfc3744 section 5.1 */ wc_printf(""); switch(WCC->CurRoom.defview) { case VIEW_CALENDAR: wc_printf(""); wc_printf(""); break; case VIEW_TASKS: wc_printf(""); break; case VIEW_ADDRESSBOOK: wc_printf(""); break; } wc_printf(""); /* FIXME get the mtime wc_printf(""); escputs(datestring); wc_printf(""); */ wc_printf(""); wc_printf(""); wc_printf(""); /* If a depth greater than zero was specified, transmit the collection listing */ if (WCC->Hdr->HR.dav_depth > 0) { MsgNum = NewStrBuf(); serv_puts("MSGS ALL"); StrBuf_ServGetln(MsgNum); if (GetServerStatus(MsgNum, NULL) == 1) while (BufLen = StrBuf_ServGetln(MsgNum), ((BufLen >= 0) && ((BufLen != 3) || strcmp(ChrPtr(MsgNum), "000")) )) { msgs = realloc(msgs, ++num_msgs * sizeof(long)); msgs[num_msgs-1] = StrTol(MsgNum); } if (num_msgs > 0) for (i=0; i= 0) && ((BufLen != 3) || strcmp(ChrPtr(MsgNum), "000")) )) { if (!strncasecmp(ChrPtr(MsgNum), "exti=", 5)) { strcpy(uid, &ChrPtr(MsgNum)[5]); } else if (!strncasecmp(ChrPtr(MsgNum), "time=", 5)) { now = atol(&ChrPtr(MsgNum)[5]); } } if (!IsEmptyStr(uid)) { wc_printf(""); wc_printf(""); dav_identify_host(); wc_printf("/groupdav/"); urlescputs(ChrPtr(WCC->CurRoom.name)); euid_escapize(encoded_uid, uid); wc_printf("/%s", encoded_uid); wc_printf(""); switch(WCC->CurRoom.defview) { case VIEW_CALENDAR: wc_printf("text/x-ical"); break; case VIEW_TASKS: wc_printf("text/x-ical"); break; case VIEW_ADDRESSBOOK: wc_printf("text/x-vcard"); break; } wc_printf(""); wc_printf("HTTP/1.1 200 OK"); wc_printf(""); wc_printf("\"%ld\"", msgs[i]); if (now > 0L) { http_datestring(datestring, sizeof datestring, now); wc_printf(""); escputs(datestring); wc_printf(""); } wc_printf(""); wc_printf(""); wc_printf(""); } } FreeStrBuf(&MsgNum); } wc_printf("\n"); end_burst(); if (msgs != NULL) { free(msgs); } } int ParseMessageListHeaders_EUID(StrBuf *Line, const char **pos, message_summary *Msg, StrBuf *ConversionBuffer) { Msg->euid = NewStrBuf(); StrBufExtract_NextToken(Msg->euid, Line, pos, '|'); Msg->date = StrBufExtractNext_long(Line, pos, '|'); return StrLength(Msg->euid) > 0; } int DavUIDL_GetParamsGetServerCall(SharedMessageStatus *Stat, void **ViewSpecific, long oper, char *cmd, long len, char *filter, long flen) { Stat->defaultsortorder = 0; Stat->sortit = 0; Stat->load_seen = 0; Stat->maxmsgs = 9999999; snprintf(cmd, len, "MSGS ALL|||2"); return 200; } int DavUIDL_RenderView_or_Tail(SharedMessageStatus *Stat, void **ViewSpecific, long oper) { DoTemplate(HKEY("msg_listview"),NULL,&NoCtx); return 0; } int DavUIDL_Cleanup(void **ViewSpecific) { /* Note: wDumpContent() will output one additional tag. */ /* We ought to move this out into template */ wDumpContent(1); return 0; } void InitModule_PROPFIND (void) { RegisterReadLoopHandlerset( eReadEUIDS, DavUIDL_GetParamsGetServerCall, NULL, NULL, /// TODO: is this right? ParseMessageListHeaders_EUID, NULL, //// "" DavUIDL_RenderView_or_Tail, DavUIDL_Cleanup); } webcit-8.24-dfsg.orig/paging.c0000644000175000017500000000764012271477123016020 0ustar michaelmichael/* * This module handles instant message related functions. * * Copyright (c) 1996-2012 by the citadel.org team * * This program is open source software; you can redistribute it and/or modify * it under the terms of the GNU General Public License, version 3. * * This program 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. */ #include "webcit.h" /* * display the form for paging (x-messaging) another user */ void display_page(void) { char recp[SIZ]; strcpy(recp, bstr("recp")); output_headers(1, 1, 1, 0, 0, 0); wc_printf("
    \n"); wc_printf("

    "); wc_printf(_("Send instant message")); wc_printf("

    "); wc_printf("
    \n"); wc_printf("
    \n"); wc_printf("
    \n"); wc_printf(_("Send an instant message to: ")); escputs(recp); wc_printf("
    \n"); wc_printf("
    \n"); wc_printf("\n", WC->nonce); wc_printf("\n"); wc_printf("
    \n"); wc_printf("\n"); wc_printf(_("Enter message text:")); wc_printf("
    "); wc_printf("\n"); wc_printf("

    \n"); wc_printf("", _("Send message")); wc_printf("
    \n", _("Cancel")); wc_printf("\n"); wc_printf("
    \n"); wDumpContent(1); } /* * page another user */ void page_user(void) { char recp[256]; StrBuf *Line; safestrncpy(recp, bstr("recp"), sizeof recp); if (!havebstr("send_button")) { AppendImportantMessage(_("Message was not sent."), -1); } else { Line = NewStrBuf(); serv_printf("SEXP %s|-", recp); StrBuf_ServGetln(Line); if (GetServerStatusMsg(Line, NULL, 0, 0) == 4) { char buf[256]; text_to_server(bstr("msgtext")); serv_puts("000"); stresc(buf, 256, recp, 0, 0); AppendImportantMessage(buf, -1); AppendImportantMessage(_("Message has been sent to "), -1); } } url_do_template(); } /* * display page popup * If there are instant messages waiting, and we notice that we haven't checked them in * a while, it probably means that we need to open the instant messenger window. */ int Conditional_PAGE_WAITING(StrBuf *Target, WCTemplputParams *TP) { int len; char buf[SIZ]; /** JavaScript function to alert the user that popups are probably blocked */ /** First, do the check as part of our page load. */ serv_puts("NOOP"); len = serv_getln(buf, sizeof buf); if ((len >= 3) && (buf[3] == '*')) { if ((time(NULL) - WC->last_pager_check) > 60) { return 1; } } return 0; /* Then schedule it to happen again a minute from now if the user is idle. */ } void ajax_send_instant_message(void) { char recp[256]; char buf[256]; safestrncpy(recp, bstr("recp"), sizeof recp); serv_printf("SEXP %s|-", recp); serv_getln(buf, sizeof buf); if (buf[0] == '4') { text_to_server(bstr("msg")); serv_puts("000"); } escputs(buf); /* doesn't really matter what we return - the client ignores it */ } void InitModule_PAGING (void) { WebcitAddUrlHandler(HKEY("display_page"), "", 0, display_page, 0); WebcitAddUrlHandler(HKEY("page_user"), "", 0, page_user, 0); WebcitAddUrlHandler(HKEY("ajax_send_instant_message"), "", 0, ajax_send_instant_message, AJAX); RegisterConditional("COND:PAGE:WAITING", 0, Conditional_PAGE_WAITING, CTX_NONE); } void SessionDestroyModule_PAGING (wcsession *sess) { /* nothing here anymore */ } webcit-8.24-dfsg.orig/install-sh0000755000175000017500000001272012271477123016406 0ustar michaelmichael#!/bin/sh # # install - install a program, script, or datafile # This comes from X11R5 (mit/util/scripts/install.sh). # # Copyright 1991 by the Massachusetts Institute of Technology # # Permission to use, copy, modify, distribute, and sell this software and its # documentation for any purpose is hereby granted without fee, provided that # the above copyright notice appear in all copies and that both that # copyright notice and this permission notice appear in supporting # documentation, and that the name of M.I.T. not be used in advertising or # publicity pertaining to distribution of the software without specific, # written prior permission. M.I.T. makes no representations about the # suitability of this software for any purpose. It is provided "as is" # without express or implied warranty. # # Calling this script install-sh is preferred over install.sh, to prevent # `make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. It can only install one file at a time, a restriction # shared with many OS's install programs. # set DOITPROG to echo to test this script # Don't use :- since 4.3BSD and earlier shells don't like it. doit="${DOITPROG-}" # put in absolute paths if you don't have them in your path; or use env. vars. mvprog="${MVPROG-mv}" cpprog="${CPPROG-cp}" chmodprog="${CHMODPROG-chmod}" chownprog="${CHOWNPROG-chown}" chgrpprog="${CHGRPPROG-chgrp}" stripprog="${STRIPPROG-strip}" rmprog="${RMPROG-rm}" mkdirprog="${MKDIRPROG-mkdir}" transformbasename="" transform_arg="" instcmd="$mvprog" chmodcmd="$chmodprog 0755" chowncmd="" chgrpcmd="" stripcmd="" rmcmd="$rmprog -f" mvcmd="$mvprog" src="" dst="" dir_arg="" while [ x"$1" != x ]; do case $1 in -c) instcmd="$cpprog" shift continue;; -d) dir_arg=true shift continue;; -m) chmodcmd="$chmodprog $2" shift shift continue;; -o) chowncmd="$chownprog $2" shift shift continue;; -g) chgrpcmd="$chgrpprog $2" shift shift continue;; -s) stripcmd="$stripprog" shift continue;; -t=*) transformarg=`echo $1 | sed 's/-t=//'` shift continue;; -b=*) transformbasename=`echo $1 | sed 's/-b=//'` shift continue;; *) if [ x"$src" = x ] then src=$1 else # this colon is to work around a 386BSD /bin/sh bug : dst=$1 fi shift continue;; esac done if [ x"$src" = x ] then echo "install: no input file specified" exit 1 else true fi if [ x"$dir_arg" != x ]; then dst=$src src="" if [ -d $dst ]; then instcmd=: else instcmd=mkdir fi else # Waiting for this to be detected by the "$instcmd $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if [ -f $src -o -d $src ] then true else echo "install: $src does not exist" exit 1 fi if [ x"$dst" = x ] then echo "install: no destination specified" exit 1 else true fi # If destination is a directory, append the input filename; if your system # does not like double slashes in filenames, you may need to add some logic if [ -d $dst ] then dst="$dst"/`basename $src` else true fi fi ## this sed command emulates the dirname command dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` # Make sure that the destination directory exists. # this part is taken from Noah Friedman's mkinstalldirs script # Skip lots of stat calls in the usual case. if [ ! -d "$dstdir" ]; then defaultIFS=' ' IFS="${IFS-${defaultIFS}}" oIFS="${IFS}" # Some sh's can't handle IFS=/ for some reason. IFS='%' set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'` IFS="${oIFS}" pathcomp='' while [ $# -ne 0 ] ; do pathcomp="${pathcomp}${1}" shift if [ ! -d "${pathcomp}" ] ; then $mkdirprog "${pathcomp}" else true fi pathcomp="${pathcomp}/" done fi if [ x"$dir_arg" != x ] then $doit $instcmd $dst && if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi && if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi && if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi && if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi else # If we're going to rename the final executable, determine the name now. if [ x"$transformarg" = x ] then dstfile=`basename $dst` else dstfile=`basename $dst $transformbasename | sed $transformarg`$transformbasename fi # don't allow the sed command to completely eliminate the filename if [ x"$dstfile" = x ] then dstfile=`basename $dst` else true fi # Make a temp file name in the proper directory. dsttmp=$dstdir/#inst.$$# # Move or copy the file name to the temp name $doit $instcmd $src $dsttmp && trap "rm -f ${dsttmp}" 0 && # and set any options; do chmod last to preserve setuid bits # If any of these fail, we abort the whole thing. If we want to # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $instcmd $src $dsttmp" command. if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi && if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi && if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi && if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi && # Now rename the file to the real destination. $doit $rmcmd -f $dstdir/$dstfile && $doit $mvcmd $dsttmp $dstdir/$dstfile fi && exit 0 webcit-8.24-dfsg.orig/packageversion0000644000175000017500000000000212271477123017314 0ustar michaelmichael2 webcit-8.24-dfsg.orig/marchlist.c0000644000175000017500000001313012271477123016530 0ustar michaelmichael#include "webcit.h" #include "webserver.h" /* * Free a session's march list */ void free_march_list(wcsession *wcf) { struct march *mptr; while (wcf->march != NULL) { mptr = wcf->march->next; free(wcf->march); wcf->march = mptr; } } /* * remove a room from the march list */ void remove_march(const StrBuf *aaa) { struct march *mptr, *mptr2; if (WC->march == NULL) return; if (!strcasecmp(WC->march->march_name, ChrPtr(aaa))) { mptr = WC->march->next; free(WC->march); WC->march = mptr; return; } mptr2 = WC->march; for (mptr = WC->march; mptr != NULL; mptr = mptr->next) { if (!strcasecmp(mptr->march_name, ChrPtr(aaa))) { mptr2->next = mptr->next; free(mptr); mptr = mptr2; } else { mptr2 = mptr; } } } /** * \brief Locate the room on the march list which we most want to go to. * Each room * is measured given a "weight" of preference based on various factors. * \param desired_floor the room number on the citadel server * \return the roomname */ char *pop_march(int desired_floor) { static char TheRoom[128]; int TheWeight = 0; int weight; struct march *mptr = NULL; strcpy(TheRoom, "_BASEROOM_"); if (WC->march == NULL) return (TheRoom); for (mptr = WC->march; mptr != NULL; mptr = mptr->next) { weight = 0; if ((strcasecmp(mptr->march_name, "_BASEROOM_"))) weight = weight + 10000; if (mptr->march_floor == desired_floor) weight = weight + 5000; weight = weight + ((128 - (mptr->march_floor)) * 128); weight = weight + (128 - (mptr->march_order)); if (weight > TheWeight) { TheWeight = weight; strcpy(TheRoom, mptr->march_name); /* TODOO: and now???? TheFloor = mptr->march_floor; TheOrder = mptr->march_order; */ } } return (TheRoom); } /* * Goto next room having unread messages. * * We want to skip over rooms that the user has already been to, and take the * user back to the lobby when done. The room we end up in is placed in * newroom - which is set to 0 (the lobby) initially. * We start the search in the current room rather than the beginning to prevent * two or more concurrent users from dragging each other back to the same room. */ void gotonext(void) { char buf[256]; struct march *mptr = NULL; struct march *mptr2 = NULL; char room_name[128]; StrBuf *next_room; int ELoop = 0; /* * First check to see if the march-mode list is already allocated. * If it is, pop the first room off the list and go there. */ if (havebstr("startmsg")) { readloop(readnew, eUseDefault); return; } if (WC->march == NULL) { serv_puts("LKRN"); serv_getln(buf, sizeof buf); if (buf[0] == '1') while (serv_getln(buf, sizeof buf), strcmp(buf, "000")) { if (IsEmptyStr(buf)) { if (ELoop > 10000) return; if (ELoop % 100 == 0) sleeeeeeeeeep(1); ELoop ++; continue; } extract_token(room_name, buf, 0, '|', sizeof room_name); if (strcasecmp(room_name, ChrPtr(WC->CurRoom.name))) { mptr = (struct march *) malloc(sizeof(struct march)); mptr->next = NULL; safestrncpy(mptr->march_name, room_name, sizeof mptr->march_name); mptr->march_floor = extract_int(buf, 2); mptr->march_order = extract_int(buf, 3); if (WC->march == NULL) WC->march = mptr; else mptr2->next = mptr; mptr2 = mptr; } buf[0] = '\0'; } /* * add _BASEROOM_ to the end of the march list, so the user will end up * in the system base room (usually the Lobby>) at the end of the loop */ mptr = (struct march *) malloc(sizeof(struct march)); mptr->next = NULL; mptr->march_order = 0; mptr->march_floor = 0; strcpy(mptr->march_name, "_BASEROOM_"); if (WC->march == NULL) { WC->march = mptr; } else { mptr2 = WC->march; while (mptr2->next != NULL) mptr2 = mptr2->next; mptr2->next = mptr; } /* * ...and remove the room we're currently in, so a oto doesn't make us * walk around in circles */ remove_march(WC->CurRoom.name); } if (WC->march != NULL) { next_room = NewStrBufPlain(pop_march(-1), -1);/*TODO: migrate march to strbuf */ } else { next_room = NewStrBufPlain(HKEY("_BASEROOM_")); } smart_goto(next_room); FreeStrBuf(&next_room); } /* * un-goto the previous room */ void ungoto(void) { StrBuf *Buf; if (havebstr("startmsg")) { readloop(readnew, eUseDefault); return; } if (!strcmp(WC->ugname, "")) { smart_goto(WC->CurRoom.name); return; } serv_printf("GOTO %s", WC->ugname); Buf = NewStrBuf(); StrBuf_ServGetln(Buf); if (GetServerStatus(Buf, NULL) != 2) { smart_goto(WC->CurRoom.name); FreeStrBuf(&Buf); return; } if (WC->uglsn >= 0L) { serv_printf("SLRP %ld", WC->uglsn); StrBuf_ServGetln(Buf); } FlushStrBuf(Buf); StrBufAppendBufPlain(Buf, WC->ugname, -1, 0); strcpy(WC->ugname, ""); smart_goto(Buf); FreeStrBuf(&Buf); } void tmplput_ungoto(StrBuf *Target, WCTemplputParams *TP) { wcsession *WCC = WC; if ((WCC!=NULL) && (!IsEmptyStr(WCC->ugname))) StrBufAppendBufPlain(Target, WCC->ugname, -1, 0); } void _gotonext(void) { slrp_highest(); gotonext(); } int ConditionalHaveUngoto(StrBuf *Target, WCTemplputParams *TP) { wcsession *WCC = WC; return ((WCC!=NULL) && (!IsEmptyStr(WCC->ugname)) && (strcasecmp(WCC->ugname, ChrPtr(WCC->CurRoom.name)) == 0)); } void InitModule_MARCHLIST (void) { RegisterConditional("COND:UNGOTO", 0, ConditionalHaveUngoto, CTX_NONE); RegisterNamespace("ROOM:UNGOTO", 0, 0, tmplput_ungoto, NULL, CTX_NONE); WebcitAddUrlHandler(HKEY("gotonext"), "", 0, _gotonext, NEED_URL); WebcitAddUrlHandler(HKEY("skip"), "", 0, gotonext, NEED_URL); WebcitAddUrlHandler(HKEY("ungoto"), "", 0, ungoto, NEED_URL); } webcit-8.24-dfsg.orig/modules_init.h0000644000175000017500000001507412271477143017255 0ustar michaelmichael/* * /var/www/easyinstall/citadel/webcit/modules_init.h * Auto generated by mk_modules_init.sh DO NOT EDIT THIS FILE */ #ifndef MODULES_INIT_H #define MODULES_INIT_H extern size_t nSizErrmsg; /* * server lifetime: */ void initialise_modules (void); void initialise2_modules (void); void start_modules (void); void shutdown_modules (void); /* * Session lifetime: */ void session_new_modules (wcsession *sess); void session_attach_modules (wcsession *sess); void session_detach_modules (wcsession *sess); void session_destroy_modules (wcsession **sess); void http_new_modules (ParsedHttpHdrs *httpreq); void http_detach_modules (ParsedHttpHdrs *httpreq); void http_destroy_modules (ParsedHttpHdrs *httpreq); /* * forwards... */ /* Server Start Hooks: */ extern void ServerStartModule_CONTEXT(void); extern void ServerStartModule_DAV(void); extern void ServerStartModule_ICONBAR(void); extern void ServerStartModule_ICONTHEME(void); extern void ServerStartModule_MSGRENDERERS(void); extern void ServerStartModule_PREFERENCES(void); extern void ServerStartModule_SERV_FUNC(void); extern void ServerStartModule_SITECONFIG(void); extern void ServerStartModule_SMTP_QUEUE(void); extern void ServerStartModule_STATIC(void); extern void ServerStartModule_SUBST(void); extern void ServerStartModule_VCARD(void); extern void ServerStartModule_WEBCIT(void); /* Server Init Hooks: */ extern void InitModule_ADDRBOOK_POPUP(void); extern void InitModule_AUTH(void); extern void InitModule_AUTO_COMPLETE(void); extern void InitModule_BBSVIEWRENDERERS(void); extern void InitModule_BLOGVIEWRENDERERS(void); extern void InitModule_CALENDAR(void); extern void InitModule_CALENDAR_VIEW(void); extern void InitModule_CONTEXT(void); extern void InitModule_DATE(void); extern void InitModule_DATETIME(void); extern void InitModule_DOWNLOAD(void); extern void InitModule_GETTEXT(void); extern void InitModule_GRAPHICS(void); extern void InitModule_GROUPDAV(void); extern void InitModule_ICAL_MAPS(void); extern void InitModule_ICAL_SUBST(void); extern void InitModule_ICONBAR(void); extern void InitModule_ICONTHEME(void); extern void InitModule_INETCONF(void); extern void InitModule_LISTSUB(void); extern void InitModule_MAINMENU(void); extern void InitModule_MARCHLIST(void); extern void InitModule_MSG(void); extern void InitModule_MSGRENDERERS(void); extern void InitModule_NETCONF(void); extern void InitModule_NOTES(void); extern void InitModule_OPENID(void); extern void InitModule_PAGING(void); extern void InitModule_PARAMHANDLING(void); extern void InitModule_PREFERENCES(void); extern void InitModule_PROPFIND(void); extern void InitModule_PUSHMAIL(void); extern void InitModule_REPORT(void); extern void InitModule_ROOMCHAT(void); extern void InitModule_ROOMLIST(void); extern void InitModule_ROOMOPS(void); extern void InitModule_ROOMTOKENS(void); extern void InitModule_ROOMVIEWS(void); extern void InitModule_RSS(void); extern void InitModule_SERVFUNC(void); extern void InitModule_SETUP_WIZARD(void); extern void InitModule_SIEVE(void); extern void InitModule_SITECONFIG(void); extern void InitModule_SITEMAP(void); extern void InitModule_SMTP_QUEUE(void); extern void InitModule_STATIC(void); extern void InitModule_SUBST(void); extern void InitModule_SUMMARY(void); extern void InitModule_SYSMSG(void); extern void InitModule_TASKS(void); extern void InitModule_USEREDIT(void); extern void InitModule_VCARD(void); extern void InitModule_WEBCIT(void); extern void InitModule_WHO(void); extern void InitModule_WIKI(void); /* Server Init Hooks: */ extern void InitModule2_MSGRENDERERS(void); /* Server shutdown Hooks: */ extern void ServerShutdownModule_CONTEXT(void); extern void ServerShutdownModule_DAV(void); extern void ServerShutdownModule_GETTEXT(void); extern void ServerShutdownModule_ICAL(void); extern void ServerShutdownModule_ICONBAR(void); extern void ServerShutdownModule_ICONTHEME(void); extern void ServerShutdownModule_MSGRENDERERS(void); extern void ServerShutdownModule_PREFERENCES(void); extern void ServerShutdownModule_SERV_FUNC(void); extern void ServerShutdownModule_SITECONFIG(void); extern void ServerShutdownModule_SMTP_QUEUE(void); extern void ServerShutdownModule_STATIC(void); extern void ServerShutdownModule_SUBST(void); extern void ServerShutdownModule_VCARD(void); extern void ServerShutdownModule_WEBCIT(void); /* Session New Hooks: */ extern void SessionNewModule_GETTEXT(wcsession *sess); extern void SessionNewModule_PREFERENCES(wcsession *sess); extern void SessionNewModule_SUBST(wcsession *sess); extern void SessionNewModule_TCPSOCKETS(wcsession *sess); extern void SessionNewModule_WEBCIT(wcsession *sess); /* Session Attach Hooks: */ extern void SessionAttachModule_GETTEXT(wcsession *sess); extern void SessionAttachModule_PARAMHANDLING(wcsession *sess); extern void SessionAttachModule_SUBST(wcsession *sess); /* Session detach Hooks: */ extern void SessionDetachModule_MSG(wcsession *sess); extern void SessionDetachModule_PARAMHANDLING(wcsession *sess); extern void SessionDetachModule__PREFERENCES(wcsession *sess); extern void SessionDetachModule_SIEVE(wcsession *sess); extern void SessionDetachModule_SUBST(wcsession *sess); extern void SessionDetachModule_WEBCIT(wcsession *sess); /* Session destroy Hooks: */ extern void SessionDestroyModule_AUTH(wcsession *sess); extern void SessionDestroyModule_GETTEXT(wcsession *sess); extern void SessionDestroyModule_ICONBAR(wcsession *sess); extern void SessionDestroyModule_ICONTHEME(wcsession *sess); extern void SessionDestroyModule_MSGRENDERERS(wcsession *sess); extern void SessionDestroyModule_PAGING(wcsession *sess); extern void SessionDestroyModule_PREFERENCES(wcsession *sess); extern void SessionDestroyModule_ROOMCHAT(wcsession *sess); extern void SessionDestroyModule_ROOMOPS(wcsession *sess); extern void SessionDestroyModule_SERVFUNC(wcsession *sess); extern void SessionDestroyModule_SITECONFIG(wcsession *sess); extern void SessionDestroyModule_SUBST(wcsession *sess); extern void SessionDestroyModule_TCPSOCKETS(wcsession *sess); extern void SessionDestroyModule_WEBCIT(wcsession *sess); extern void HttpNewModule_AUTH(ParsedHttpHdrs *httpreq); extern void HttpNewModule_CONTEXT(ParsedHttpHdrs *httpreq); extern void HttpNewModule_TCPSOCKETS(ParsedHttpHdrs *httpreq); extern void HttpDetachModule_AUTH(ParsedHttpHdrs *httpreq); extern void HttpDetachModule_CONTEXT(ParsedHttpHdrs *httpreq); extern void HttpDetachModule_TCPSOCKETS(ParsedHttpHdrs *httpreq); extern void HttpDestroyModule_AUTH(ParsedHttpHdrs *httpreq); extern void HttpDestroyModule_CONTEXT(ParsedHttpHdrs *httpreq); extern void HttpDestroyModule_TCPSOCKETS(ParsedHttpHdrs *httpreq); #endif /* MODULES_INIT_H */ webcit-8.24-dfsg.orig/icontheme.c0000644000175000017500000001021612271477123016517 0ustar michaelmichael/* * Displays and customizes the iconbar. * * Copyright (c) 1996-2012 by the citadel.org team * * This program is open source software. You can redistribute it and/or * modify it under the terms of the GNU General Public License, version 3. * * This program 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. */ #include #include #include #include #include #include #include #include #include "webcit.h" #include "webserver.h" HashList *AvailableThemes = NULL; const StrBuf *DefaultTheme = NULL; void LoadIconthemeSettings(StrBuf *icontheme, long lvalue) { wcsession *WCC = WC; void *vTheme; const StrBuf *theme; if (GetHash(AvailableThemes, SKEY(icontheme), &vTheme)) theme = (StrBuf*)vTheme; else theme = DefaultTheme; if (WCC->IconTheme != NULL) StrBufPlain(WCC->IconTheme, SKEY(theme)); else WCC->IconTheme = NewStrBufDup(theme); } void tmplput_icontheme(StrBuf *Target, WCTemplputParams *TP) { wcsession *WCC = WC; if ( (WCC != NULL) && (WCC->IconTheme != NULL)) { StrBufAppendTemplate(Target, TP, WCC->IconTheme, 0); } else { StrBufAppendTemplate(Target, TP, DefaultTheme, 0); } } int LoadThemeDir(const char *DirName) { StrBuf *Dir = NULL; DIR *filedir = NULL; struct dirent *d; struct dirent *filedir_entry; int d_type = 0; int d_namelen; filedir = opendir (DirName); if (filedir == NULL) { return 0; } d = (struct dirent *)malloc(offsetof(struct dirent, d_name) + PATH_MAX + 1); if (d == NULL) { return 0; } while ((readdir_r(filedir, d, &filedir_entry) == 0) && (filedir_entry != NULL)) { #ifdef _DIRENT_HAVE_D_NAMELEN d_namelen = filedir_entry->d_namlen; d_type = filedir_entry->d_type; #else #ifndef DT_UNKNOWN #define DT_UNKNOWN 0 #define DT_DIR 4 #define DT_REG 8 #define DT_LNK 10 #define IFTODT(mode) (((mode) & 0170000) >> 12) #define DTTOIF(dirtype) ((dirtype) << 12) #endif d_namelen = strlen(filedir_entry->d_name); d_type = DT_UNKNOWN; #endif if ((d_namelen > 1) && filedir_entry->d_name[d_namelen - 1] == '~') continue; /* Ignore backup files... */ if ((d_namelen == 1) && (filedir_entry->d_name[0] == '.')) continue; if ((d_namelen == 2) && (filedir_entry->d_name[0] == '.') && (filedir_entry->d_name[1] == '.')) continue; if (d_type == DT_UNKNOWN) { struct stat s; char path[PATH_MAX]; snprintf(path, PATH_MAX, "%s/%s", DirName, filedir_entry->d_name); if (stat(path, &s) == 0) { d_type = IFTODT(s.st_mode); } } switch (d_type) { case DT_LNK: /* TODO: check whether its a file or a directory */ case DT_DIR: /* Skip directories we are not interested in... */ if ((strcmp(filedir_entry->d_name, ".svn") == 0) || (strcmp(filedir_entry->d_name, "t") == 0)) break; Dir = NewStrBufPlain (filedir_entry->d_name, d_namelen); if (DefaultTheme == NULL) DefaultTheme = Dir; Put(AvailableThemes, SKEY(Dir), Dir, HFreeStrBuf); break; case DT_REG: default: break; } } free(d); closedir(filedir); return 1; } HashList *GetValidThemeHash(StrBuf *Target, WCTemplputParams *TP) { return AvailableThemes; } void ServerStartModule_ICONTHEME (void) { AvailableThemes = NewHash(1, NULL); } void InitModule_ICONTHEME (void) { StrBuf *Themes = NewStrBufPlain(static_dirs[0], -1); StrBufAppendBufPlain(Themes, HKEY("/"), 0); StrBufAppendBufPlain(Themes, HKEY("webcit_icons"), 0); LoadThemeDir(ChrPtr(Themes)); FreeStrBuf(&Themes); RegisterPreference("icontheme", _("Icon Theme"), PRF_STRING, LoadIconthemeSettings); RegisterNamespace("ICONTHEME", 0, 0, tmplput_icontheme, NULL, CTX_NONE); RegisterIterator("PREF:VALID:THEME", 0, NULL, GetValidThemeHash, NULL, NULL, CTX_STRBUF, CTX_NONE, IT_NOFLAG); } void ServerShutdownModule_ICONTHEME (void) { DeleteHash(&AvailableThemes); } void SessionDestroyModule_ICONTHEME (wcsession *sess) { FreeStrBuf(&sess->IconTheme); } webcit-8.24-dfsg.orig/tabs.c0000644000175000017500000001144112271477123015476 0ustar michaelmichael#include #define SHOW_ME_VAPPEND_PRINTF #include "webcit.h" /* * print tabbed dialog */ void tabbed_dialog(int num_tabs, char *tabnames[]) { int i; StrBufAppendPrintf(WC->trailing_javascript, "var previously_selected_tab = '0'; \n" "function tabsel(which_tab) { \n" " if (which_tab == previously_selected_tab) { \n" " return; \n" " } \n" " $('tabdiv'+previously_selected_tab).style.display = 'none'; \n" " $('tabdiv'+which_tab).style.display = 'block'; \n" " $('tabtd'+previously_selected_tab).className = 'tab_cell_edit'; \n" " $('tabtd'+which_tab).className = 'tab_cell_label'; \n" " previously_selected_tab = which_tab; \n" "} \n" ); wc_printf("" "" ); for (i=0; i", i, ( (i==0) ? "tab_cell_label" : "tab_cell_edit" ), i ); wc_printf("%s", tabnames[i]); wc_printf(""); wc_printf("\n"); } wc_printf("
      
    \n"); } /* * print the tab-header * * tabnum: number of the tab to print * num_tabs: total number oftabs to be printed * */ void begin_tab(int tabnum, int num_tabs) { if (tabnum == num_tabs) { wc_printf("\n"); wc_printf("
    "); } else { wc_printf("\n", tabnum, num_tabs); wc_printf("
    ", tabnum, ( (tabnum == 0) ? "block" : "none" ) ); } } /* * print the tab-footer * tabnum: number of the tab to print * num_tabs: total number of tabs to be printed * */ void end_tab(int tabnum, int num_tabs) { if (tabnum == num_tabs) { wc_printf("
    \n"); wc_printf("\n"); } else { wc_printf("
    \n"); wc_printf("\n", tabnum, num_tabs); } } /* * print tabbed dialog */ void StrTabbedDialog(StrBuf *Target, int num_tabs, StrBuf *tabnames[]) { int i; StrBufAppendBufPlain( Target, HKEY( " \n" ), 0); StrBufAppendBufPlain( Target, HKEY( "" "" ), 0); for (i=0; i", i, ( (i==0) ? "tab_cell_label" : "tab_cell_edit" ), i ); StrBufAppendBuf(Target, tabnames[i], 0); StrBufAppendBufPlain( Target, HKEY( "" "\n"), 0); } StrBufAppendBufPlain( Target, HKEY("
      
    \n"), 0); } /* * print the tab-header * * tabnum: number of the tab to print * num_tabs: total number oftabs to be printed * */ void StrBeginTab(StrBuf *Target, int tabnum, int num_tabs, StrBuf **Names) { if (tabnum == num_tabs) { StrBufAppendBufPlain( Target, HKEY("\n
    "), 0); } else { StrBufAppendBufPlain( Target, HKEY("\n
    ", tabnum, ( (tabnum == 0) ? "block" : "none" ) ); } } /* * print the tab-footer * tabnum: number of the tab to print * num_tabs: total number of tabs to be printed * */ void StrEndTab(StrBuf *Target, int tabnum, int num_tabs) { if (tabnum == num_tabs) { StrBufAppendBufPlain( Target, HKEY( "
    \n" "\n"), 0); } else { StrBufAppendPrintf( Target, "
    \n", "\n", tabnum, num_tabs ); } if (HAVEBSTR("last_tabsel")) { StrBufAppendPrintf(Target, "", BSTR("last_tabsel")); } } webcit-8.24-dfsg.orig/scripts/0000755000175000017500000000000012271477123016067 5ustar michaelmichaelwebcit-8.24-dfsg.orig/scripts/get_ical_data__template.sed0000644000175000017500000000016612271477123023361 0ustar michaelmichael#! /bin/sed -nf H $ { x s/\n//g p } $ { s/.*typedef *enum *__ICALTYPE__ *{\(.*\)} *__ICALTYPE__ *;.*/\1/ } webcit-8.24-dfsg.orig/scripts/get_ical_data.sh0000755000175000017500000000451412271477123021172 0ustar michaelmichael#!/bin/sh ICAL=/usr/local/ctdlsupport/include/libical/ical.h if test -f /usr/include/libical/ical.h; then ICAL=/usr/include/libical/ical.h fi if test ! -f ${ICAL}; then echo "failed to locate libical headers - please install the libical development packages or heardes" exit 500 fi ICALTYPES="icalproperty_kind"\ " icalcomponent_kind"\ " icalrequeststatus"\ " ical_unknown_token_handling"\ " icalrecurrencetype_frequency"\ " icalrecurrencetype_weekday"\ " icalvalue_kind"\ " icalproperty_action"\ " icalproperty_carlevel"\ " icalproperty_class"\ " icalproperty_cmd"\ " icalproperty_method"\ " icalproperty_querylevel"\ " icalproperty_status"\ " icalproperty_transp"\ " icalproperty_xlicclass"\ " icalparameter_kind"\ " icalparameter_action"\ " icalparameter_cutype"\ " icalparameter_enable"\ " icalparameter_encoding"\ " icalparameter_fbtype"\ " icalparameter_local"\ " icalparameter_partstat"\ " icalparameter_range"\ " icalparameter_related"\ " icalparameter_reltype"\ " icalparameter_role"\ " icalparameter_rsvp"\ " icalparameter_value"\ " icalparameter_xliccomparetype"\ " icalparameter_xlicerrortype"\ " icalparser_state"\ " icalerrorenum"\ " icalerrorstate"\ " icalrestriction_kind" ( printf '#include "webcit.h"\n\n\n' for icaltype in $ICALTYPES; do printf "typedef struct _Ical_${icaltype} {\n"\ " const char *Name;\n"\ " long NameLen;\n"\ " ${icaltype} map;\n"\ "} Ical_${icaltype};\n\n\n" done for icaltype in $ICALTYPES; do cat ./scripts/get_ical_data__template.sed | \ sed -e "s;__ICALTYPE__;$icaltype;g" > \ /tmp/get_ical_data.sed printf "Ical_${icaltype} ${icaltype}_map[] = {\n" cat ${ICAL} |\ sed -e 's;/\*.*\*/;;' -e 's;\t;;g' |\ sed -nf /tmp/get_ical_data.sed |\ sed -e "s;.*typedef *enum *${icaltype} *{\(.*\)} ${icaltype} *\;.*;\1,;" \ -e 's;/\*.*\*/;;' \ -e 's;/;\n/\n;g' \ -e 's;,;,\n;g' \ -e 's; *;;g' \ -e 's;^t*;;g' \ -e 's;\=[0-9]*;;g'|\ sed -e 's;\(.*\),;{HKEY("\1"), \1},;' printf '{"", 0, 0}\n};\n\n\n' done printf "void \nInitModule_ICAL_MAPS\n(void)\n{\n\tint i;\n" for icaltype in $ICALTYPES; do printf "\tfor (i=0; ${icaltype}_map[i].NameLen > 0; i++)\n"\ " RegisterTokenParamDefine (\n"\ " ${icaltype}_map[i].Name,\n"\ " ${icaltype}_map[i].NameLen,\n"\ " ${icaltype}_map[i].map);\n"\ done printf "\n}\n\n" ) > ical_maps.c webcit-8.24-dfsg.orig/scripts/mk_module_init.sh0000755000175000017500000002502512271477123021431 0ustar michaelmichael#!/bin/sh # # Script to generate $C_FILE # ECHO=/usr/bin/printf #MINUS_e=X`$ECHO -n -e` #if [ $MINUS_e != "X" ] ; then # MINUS_e="" #else # MINUS_e="-e" #fi #MINUS_E=X`$ECHO -n -E` #if [ $MINUS_E != "X" ] ; then # MINUS_E="" #else # MINUS_E="-E" #fi CUR_DIR=`pwd` C_FILE="$CUR_DIR/modules_init.c" H_FILE="$CUR_DIR/modules_init.h" MOD_FILE="$CUR_DIR/Make_modules" SRC_FILE="$CUR_DIR/Make_sources" U_FILE="$CUR_DIR/modules_upgrade.c" /usr/bin/printf "Scanning extension modules for entry points.\n" rm -f $C_FILE $H_FILE # server lifetime: START_FUNCS=`grep ServerStartModule_ *.c |sed "s;.*:;;" |sort -u` INIT_FUNCS=`grep InitModule_ *.c |sed "s;.*:;;" |sort -u` INIT2_FUNCS=`grep InitModule2_ *.c |sed "s;.*:;;" |sort -u` FINALIZE_FUNCS=`grep FinalizeModule_ *.c |sed "s;.*:;;" |sort -u` SHUTDOWN_FUNCS=`grep ServerShutdownModule_ *.c |sed "s;.*:;;" |sort -u` # session hooks: SESS_NEW_FUNCS=`grep SessionNewModule_ *.c |sed "s;.*:;;" |sort -u` SESS_ATTACH_FUNCS=`grep SessionAttachModule_ *.c |sed "s;.*:;;" |sort -u` SESS_DETACH_FUNCS=`grep SessionDetachModule_ *.c |sed "s;.*:;;" |sort -u` SESS_DESTROY_FUNCS=`grep SessionDestroyModule_ *.c |sed "s;.*:;;" |sort -u` HTTP_NEW_FUNCS=`grep HttpNewModule_ *.c |sed "s;.*:;;" |sort -u` HTTP_DETACH_FUNCS=`grep HttpDetachModule_ *.c |sed "s;.*:;;" |sort -u` HTTP_DESTROY_FUNCS=`grep HttpDestroyModule_ *.c |sed "s;.*:;;" |sort -u` #SESS_NEW_FUNCS=`grep SessionNewModule_ *.c |sed "s;.*:;;" |sort -u` #start the header file cat < $H_FILE /* * $H_FILE * Auto generated by mk_modules_init.sh DO NOT EDIT THIS FILE */ #ifndef MODULES_INIT_H #define MODULES_INIT_H extern size_t nSizErrmsg; /* * server lifetime: */ void initialise_modules (void); void initialise2_modules (void); void start_modules (void); void shutdown_modules (void); /* * Session lifetime: */ void session_new_modules (wcsession *sess); void session_attach_modules (wcsession *sess); void session_detach_modules (wcsession *sess); void session_destroy_modules (wcsession **sess); void http_new_modules (ParsedHttpHdrs *httpreq); void http_detach_modules (ParsedHttpHdrs *httpreq); void http_destroy_modules (ParsedHttpHdrs *httpreq); /* * forwards... */ EOF #start of the files which inturn removes any existing file # # start the Makefile included file for $SERV_MODULES cat <$MOD_FILE # # Make_modules # This file is to be included by Makefile to dynamically add modules to the build process # THIS FILE WAS AUTO GENERATED BY mk_modules_init.sh DO NOT EDIT THIS FILE # EOF # start the Makefile included file for $SOURCES cat <$SRC_FILE # # Make_sources # This file is to be included by Makefile to dynamically add modules to the build process # THIS FILE WAS AUTO GENERATED BY mk_modules_init.sh DO NOT EDIT THIS FILE # EOF # start the c file cat <$C_FILE /* * $C_FILE * Auto generated by mk_modules_init.sh DO NOT EDIT THIS FILE */ #include "sysdep.h" #include #include #include #include #include #include #include #include "webcit.h" #include "modules_init.h" #include "webserver.h" void LogPrintMessages(long err); extern long DetailErrorFlags; void start_modules (void) { EOF #******************************************************************************** # server ******** start ******** module logic. #******************************************************************************** cat <> $H_FILE /* Server Start Hooks: */ EOF for HOOK in $START_FUNCS; do HOOKNAME=`echo $HOOK |sed "s;ServerStartModule_;;"` # Add this entry point to the .c file cat <> $C_FILE #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Starting $HOOKNAME\n"); #endif $HOOK(); EOF # Add this entry point to the .h file cat <> $H_FILE extern void $HOOK(void); EOF done #******************************************************************************** # server module ******** initialisation ******** logic. #******************************************************************************** cat <> $H_FILE /* Server Init Hooks: */ EOF cat <>$C_FILE } void initialise_modules (void) { EOF for HOOK in $INIT_FUNCS; do HOOKNAME=`echo $HOOK |sed "s;InitModule_;;"` # Add this entry point to the .c file cat <> $C_FILE #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Initializing $HOOKNAME\n"); #endif $HOOK(); EOF # Add this entry point to the .h file cat <> $H_FILE extern void $HOOK(void); EOF done #******************************************************************************** # server module ******** initialisation ******** second stage. #******************************************************************************** cat <> $H_FILE /* Server Init Hooks: */ EOF cat <>$C_FILE } void initialise2_modules (void) { EOF for HOOK in $INIT2_FUNCS; do HOOKNAME=`echo $HOOK |sed "s;InitModule2_;;"` # Add this entry point to the .c file cat <> $C_FILE #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Initializing $HOOKNAME\n"); #endif $HOOK(); EOF # Add this entry point to the .h file cat <> $H_FILE extern void $HOOK(void); EOF done #******************************************************************************** # server module ***** shutdown ***** logic. #******************************************************************************** cat <> $H_FILE /* Server shutdown Hooks: */ EOF cat <>$C_FILE } void shutdown_modules (void) { EOF for HOOK in $SHUTDOWN_FUNCS; do HOOKNAME=`echo $HOOK |sed "s;ServerShutdownModule_;;"` # Add this entry point to the .c file cat <> $C_FILE #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Shutting down $HOOKNAME\n"); #endif $HOOK(); EOF # Add this entry point to the .h file cat <> $H_FILE extern void $HOOK(void); EOF done #******************************************************************************** # NEW-session module logic. #******************************************************************************** cat <> $H_FILE /* Session New Hooks: */ EOF cat <>$C_FILE } void session_new_modules (wcsession *sess) { EOF for HOOK in $SESS_NEW_FUNCS; do HOOKNAME=`echo $HOOK |sed "s;SessionNewModule_;;"` # Add this entry point to the .c file cat <> $C_FILE #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Initializing $HOOKNAME\n"); #endif $HOOK(sess); EOF # Add this entry point to the .h file cat <> $H_FILE extern void $HOOK(wcsession *sess); EOF done #******************************************************************************** # ATTACH-Session module logic. #******************************************************************************** cat <> $H_FILE /* Session Attach Hooks: */ EOF cat <>$C_FILE } void session_attach_modules (wcsession *sess) { EOF for HOOK in $SESS_ATTACH_FUNCS; do HOOKNAME=`echo $HOOK |sed "s;SessionAttachModule_;;"` # Add this entry point to the .c file cat <> $C_FILE #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Attaching Session; $HOOKNAME\n"); #endif $HOOK(sess); EOF # Add this entry point to the .h file cat <> $H_FILE extern void $HOOK(wcsession *sess); EOF done #******************************************************************************** # DETACH-Session module logic. #******************************************************************************** cat <> $H_FILE /* Session detach Hooks: */ EOF cat <>$C_FILE } void session_detach_modules (wcsession *sess) { EOF for HOOK in $SESS_DETACH_FUNCS; do HOOKNAME=`echo $HOOK |sed "s;SessionDetachModule_;;"` # Add this entry point to the .c file cat <> $C_FILE #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Initializing $HOOKNAME\n"); #endif $HOOK(sess); EOF # Add this entry point to the .h file cat <> $H_FILE extern void $HOOK(wcsession *sess); EOF done #******************************************************************************** # DESTROY-Session module logic. #******************************************************************************** cat <> $H_FILE /* Session destroy Hooks: */ EOF cat <>$C_FILE } void session_destroy_modules (wcsession **sess) { EOF for HOOK in $SESS_DESTROY_FUNCS; do HOOKNAME=`echo $HOOK |sed "s;SessionDestroyModule_;;"` # Add this entry point to the .c file cat <> $C_FILE #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Initializing $HOOKNAME\n"); #endif $HOOK(*sess); EOF # Add this entry point to the .h file cat <> $H_FILE extern void $HOOK(wcsession *sess); EOF done cat <>$C_FILE free((*sess)); (*sess) = NULL; } EOF #******************************************************************************** # NEW-Httprequest module logic. #******************************************************************************** cat <> $C_FILE void http_new_modules (ParsedHttpHdrs *httpreq) { EOF for HOOK in $HTTP_NEW_FUNCS; do HOOKNAME=`echo $HOOK |sed "s;HttpNewModule_;;"` # Add this entry point to the .c file cat <> $C_FILE #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "NEW $HOOKNAME\n"); #endif $HOOK(httpreq); EOF # Add this entry point to the .h file cat <> $H_FILE extern void $HOOK(ParsedHttpHdrs *httpreq); EOF done cat <>$C_FILE } EOF #******************************************************************************** # DETACH-Httprequest module logic. #******************************************************************************** cat <> $C_FILE void http_detach_modules (ParsedHttpHdrs *httpreq) { EOF for HOOK in $HTTP_DETACH_FUNCS; do HOOKNAME=`echo $HOOK |sed "s;HttpDetachModule_;;"` # Add this entry point to the .c file cat <> $C_FILE #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Detaching $HOOKNAME\n"); #endif $HOOK(httpreq); EOF # Add this entry point to the .h file cat <> $H_FILE extern void $HOOK(ParsedHttpHdrs *httpreq); EOF done cat <>$C_FILE } EOF #******************************************************************************** # DESTROY-Httprequest module logic. #******************************************************************************** cat <> $C_FILE void http_destroy_modules (ParsedHttpHdrs *httpreq) { EOF for HOOK in $HTTP_DESTROY_FUNCS; do HOOKNAME=`echo $HOOK |sed "s;HttpDestroyModule_;;"` # Add this entry point to the .c file cat <> $C_FILE #ifdef DBG_PRINNT_HOOKS_AT_START syslog(LOG_DEBUG, "Destructing $HOOKNAME\n"); #endif $HOOK(httpreq); EOF # Add this entry point to the .h file cat <> $H_FILE extern void $HOOK(ParsedHttpHdrs *httpreq); EOF done cat <>$C_FILE } EOF cat <> $H_FILE #endif /* MODULES_INIT_H */ EOF webcit-8.24-dfsg.orig/COPYING0000644000175000017500000010402412271477123015434 0ustar michaelmichaelWebcit Core is Copyright by the Citadel Development Team 1998 - 2012 Webcit contains components under different Licenses, here their authors and list: Scriptaculous:Copyright (c) 2005-2007 Thomas Fuchs, Marty Haught, Ivan Krstic, Jon Tirsen, Sammi Williams (http://script.aculo.us, http://mir.aculo.us, http://blogs.law.harvard.edu/ivan, http://www.tirsen.com, http://www.oriontransfer.co.nz) MIT-style license. PrototypeJS: Copyright (c) 2005-2008 Sam Stephenson; http://www.prototypejs.org/; MIT License (http://dev.rubyonrails.org/browser/spinoffs/prototype/trunk/LICENSE?format=raw) strcmp: http://kevin.vanzonneveld.net; original by: Waldo Malqui Silva input by: Steve Hilder improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) http://kevin.vanzonneveld.net DatePicker: widget using Prototype and Scriptaculous. (c) 2007 Mathieu Jondet Eulerian Technologies DatePicker is freely distributable under the same terms as Prototype. -> NanoTree: Martin Mouritzen. (martin@nano.dk) LGPL V3 Bubble Tooltips: Alessandro Fulciniti (http://web-graphics.com) Public Domain, GPL V3 by Art Cancro StdExt: Copyright (c) 2005 Michael Schuerig http://www.schuerig.de/michael/javascript/stdext.js LGPL V2.1 or later CSS3PIE: both the Apache license and the GNU General Public License. TinyMCE: Moxiecode tinymce.org LGPL V2.1 or later fineuploader: fineuploader.com GPL V3 * In addition, as a special exception, we hereby declare that our favorite type of software is called "open source" -- NOT "free software" -- and that our favorite operating system is called "Linux" -- NOT "GNU/Linux." We officially reject and denounce Richard Stallman's linguistic fascism. * 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. GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Preamble The GNU General Public License is an open source "copyleft" license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS webcit-8.24-dfsg.orig/sysdep.h.in0000644000175000017500000001167012271477140016471 0ustar michaelmichael/* sysdep.h.in. Generated from configure.ac by autoheader. */ /* define, if the user suplied a data-directory to use. */ #undef DATADIR /* where to find our mail editor */ #undef EDITORDIR /* whether we have NLS support */ #undef ENABLE_NLS /* whether we should compile the test-suite */ #undef ENABLE_TESTS /* whats the matching format string for pid_t? */ #undef F_PID_T /* whats the matching format string for uid_t? */ #undef F_UID_T /* whats the matching format string for xpid_t? */ #undef F_XPID_T /* Define to 1 if you have the `backtrace' function. */ #undef HAVE_BACKTRACE /* Define to 1 if you have the header file. */ #undef HAVE_FCNTL_H /* Define to 1 if you have the `gettext' function. */ #undef HAVE_GETTEXT /* whether we have iconv for charset conversion */ #undef HAVE_ICONV /* Define to 1 if you have the header file. */ #undef HAVE_ICONV_H /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H /* Define to 1 if you have the `pthread' library (-lpthread). */ #undef HAVE_LIBPTHREAD /* Define to 1 if you have the `pthreads' library (-lpthreads). */ #undef HAVE_LIBPTHREADS /* Define to 1 if you have the header file. */ #undef HAVE_LIMITS_H /* Define to 1 if you have the header file. */ #undef HAVE_MEMORY_H /* whethe we have openssl */ #undef HAVE_OPENSSL /* should we put our non volatile files elsewhere? */ #undef HAVE_RUN_DIR /* Define to 1 if you have the `snprintf' function. */ #undef HAVE_SNPRINTF /* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H /* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H /* Define to 1 if you have the `strftime_l' function. */ #undef HAVE_STRFTIME_L /* Define to 1 if you have the header file. */ #undef HAVE_STRINGS_H /* Define to 1 if you have the header file. */ #undef HAVE_STRING_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_STAT_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TIME_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H /* Define to 1 if you have the `uselocale' function. */ #undef HAVE_USELOCALE /* Define to 1 if you have the header file. */ #undef HAVE_XLOCALE_H /* where to find our pot files */ #undef LOCALEDIR /* Define to the address where bug reports for this package should be sent. */ #undef PACKAGE_BUGREPORT /* Define to the full name of this package. */ #undef PACKAGE_NAME /* Define to the full name and version of this package. */ #undef PACKAGE_STRING /* Define to the one symbol short name of this package. */ #undef PACKAGE_TARNAME /* Define to the home page for this package. */ #undef PACKAGE_URL /* Define to the version of this package. */ #undef PACKAGE_VERSION /* Program dirs */ #undef PROG_SUBDIRS /* Define as the return type of signal handlers (`int' or `void'). */ #undef RETSIGTYPE /* define, where the config should go in unix style */ #undef RUNDIR /* The size of `char', as computed by sizeof. */ #undef SIZEOF_CHAR /* The size of `int', as computed by sizeof. */ #undef SIZEOF_INT /* The size of `long', as computed by sizeof. */ #undef SIZEOF_LONG /* The size of `long unsigned int', as computed by sizeof. */ #undef SIZEOF_LONG_UNSIGNED_INT /* The size of `short', as computed by sizeof. */ #undef SIZEOF_SHORT /* The size of `size_t', as computed by sizeof. */ #undef SIZEOF_SIZE_T /* do we need to use solaris call syntax? */ #undef SOLARIS_GETPWUID /* do we need to use soralis call syntax? */ #undef SOLARIS_LOCALTIME_R /* were should we put our keys? */ #undef SSL_DIR /* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS /* whether we need to undefine memcpy */ #undef UNDEF_MEMCPY /* Enable extensions on AIX 3, Interix. */ #ifndef _ALL_SOURCE # undef _ALL_SOURCE #endif /* Enable GNU extensions on systems that have them. */ #ifndef _GNU_SOURCE # undef _GNU_SOURCE #endif /* Enable threading extensions on Solaris. */ #ifndef _POSIX_PTHREAD_SEMANTICS # undef _POSIX_PTHREAD_SEMANTICS #endif /* Enable extensions on HP NonStop. */ #ifndef _TANDEM_SOURCE # undef _TANDEM_SOURCE #endif /* Enable general extensions on Solaris. */ #ifndef __EXTENSIONS__ # undef __EXTENSIONS__ #endif /* define this to the Citadel home directory */ #undef WEBCITDIR /* where to find our templates and pics */ #undef WWWDIR /* Define to 1 if on MINIX. */ #undef _MINIX /* Define to 2 if the system does not provide POSIX.1 features except with this defined. */ #undef _POSIX_1_SOURCE /* Define to 1 if you need to in order for `stat' and other things to work. */ #undef _POSIX_SOURCE /* Define to empty if `const' does not conform to ANSI C. */ #undef const /* Define to `long int' if does not define. */ #undef off_t /* Define to `unsigned int' if does not define. */ #undef size_t webcit-8.24-dfsg.orig/subst.h0000644000175000017500000003306412271477123015717 0ustar michaelmichael/* * Copyright (c) 1996-2013 by the citadel.org team * * This program is open source software. You can redistribute it and/or * modify it under the terms of the GNU General Public License, version 3. * * This program 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. * * subst template processing functions */ extern HashList *Conditionals; extern HashList *GlobalNS; extern HashList *Iterators; extern HashList *WirelessTemplateCache; extern HashList *WirelessLocalTemplateCache; extern HashList *TemplateCache; extern HashList *LocalTemplateCache; #define TYPE_STR 1 #define TYPE_LONG 2 #define TYPE_PREFSTR 3 #define TYPE_ROOMPREFSTR 4 #define TYPE_PREFINT 5 #define TYPE_GETTEXT 6 #define TYPE_BSTR 7 #define TYPE_SUBTEMPLATE 8 #define TYPE_INTDEFINE 9 #define MAXPARAM 25 #define IS_NUMBER(a) ((a == TYPE_LONG) || (a == TYPE_PREFINT) || (a == TYPE_INTDEFINE)) /* * \brief Values for wcs_type */ enum { WCS_STRING, /* its a string */ WCS_FUNCTION, /* its a function callback */ WCS_SERVCMD, /* its a command to send to the citadel server */ WCS_STRBUF, /* its a strbuf we own */ WCS_STRBUF_REF, /* its a strbuf we mustn't free */ WCS_LONG /* its an integer */ }; #define CTX_NONE 0 typedef int CtxType; typedef struct __CtxTypeStruct { CtxType Type; StrBuf *Name; } CtxTypeStruct; CtxTypeStruct *GetContextType(CtxType Type); void RegisterContextType(const char *name, long len, CtxType *TheCtx); #define RegisterCTX(a) RegisterContextType(#a, sizeof(#a) - 1, &a) extern CtxType CTX_STRBUF; extern CtxType CTX_STRBUFARR; extern CtxType CTX_LONGVECTOR; /** * @ingroup subst * ContextFilter resembles our RTTI information. With this structure * we can make shure a tmplput function can live with the environment * we call it in. * if not, we will log/print an error and refuse to call it. */ typedef struct _contexts { CtxType ContextType; /* do we require a User Context ? */ int nMinArgs; /* How many arguments do we need at least? */ int nMaxArgs; /* up to how many arguments can we handle? */ } ContextFilter; /* Forward declarations... */ typedef struct WCTemplateToken WCTemplateToken; typedef struct WCTemplputParams WCTemplputParams; /* this is the signature of a tmplput function */ typedef void (*WCHandlerFunc)(StrBuf *Target, WCTemplputParams *TP); /* if you want to pre-evaluate parts of your token, or do additional syntax, use this. */ typedef int (*WCPreevalFunc)(WCTemplateToken *Token); /* make a template token a lookup key: */ #define TKEY(a) TP->Tokens->Params[a]->Start, TP->Tokens->Params[a]->len void *GetContextPayload(WCTemplputParams *TP, CtxType ContextType); #define CTX(a) GetContextPayload(TP, a) /** * @ingroup subst * this is the signature of a conditional function * Note: Target is just passed in for error messages; don't write onto it in regular cases. */ typedef int (*WCConditionalFunc)(StrBuf *Target, WCTemplputParams *TP); typedef enum _eBitMask { eNO = 0, eOR, eAND }eBitMask; typedef struct _TemplateParam { /* are we a string or a number? */ int Type; /* string data: */ const char *Start; long len; /* if we're a number: */ long lvalue; eBitMask MaskBy; } TemplateParam; /** * @ingroup subst * Representation of a token; everything thats inbetween */ struct WCTemplateToken { /* Reference to the filename we're in to print error messages; not to be freed */ const StrBuf *FileName; /* Raw copy of our original token; for error printing */ StrBuf *FlatToken; /* Which line did the template parser pick us up in? For error printing */ long Line; /* our position in the template cache buffer */ const char *pTokenStart; /* our token length */ size_t TokenStart; size_t TokenEnd; /* point after us */ const char *pTokenEnd; /* just our token name: */ const char *pName; size_t NameEnd; /* stuff the pre-evaluater finds out: */ int Flags; /* pointer to our runntime evaluator; so we can cache this and save hash-lookups */ void *PreEval; void *Preeval2; /* if we have parameters here we go: */ /* do we have parameters or not? */ int HaveParameters; /* How many of them? */ int nParameters; /* the parameters */ TemplateParam *Params[MAXPARAM]; }; struct WCTemplputParams { ContextFilter Filter; void *Context; int nArgs; WCTemplateToken *Tokens; WCTemplputParams *Sub, *Super; WCConditionalFunc ExitCtx; long ExitCTXID; }; typedef struct _ConditionalStruct { ContextFilter Filter; const char *PlainName; WCConditionalFunc CondF; WCConditionalFunc CondExitCtx; } ConditionalStruct; typedef void (*SubTemplFunc)(StrBuf *TemplBuffer, WCTemplputParams *TP); typedef HashList *(*RetrieveHashlistFunc)(StrBuf *Target, WCTemplputParams *TP); typedef void (*HashDestructorFunc) (HashList **KillMe); extern WCTemplputParams NoCtx; #define HAVE_PARAM(a) (TP->Tokens->nParameters > a) #define ERR_NAME 0 #define ERR_PARM1 1 #define ERR_PARM2 2 /** * @ingroup subst * @brief log an error while evaluating a token; print it to the actual template * @param Target your Target Buffer to print the error message next to the log * @param Type What sort of thing are we talking about? Tokens? Conditionals? * @param TP grab our set of default information here * @param Format for the custom error message */ void LogTemplateError (StrBuf *Target, const char *Type, int ErrorPos, WCTemplputParams *TP, const char *Format, ...)__attribute__((__format__(__printf__,5,6))); /** * @ingroup subst * @brief log an error while in global context; print it to Wildfire / Target * @param Target your Target Buffer to print the error message next to the log * @param Type What sort of thing are we talking about? Tokens? Conditionals? * @param Format for the custom error message */ void LogError (StrBuf *Target, const char *Type, const char *Format, ...); /** * @ingroup subst * @brief get the actual value of a token parameter * in your tmplputs or conditionals use this function to access parameters that can also be * retrieved from dynamic facilities: * _ -> Gettext; retrieve this token from the i18n facilities * : -> lookup a setting of that name * B -> bstr; an URL-Parameter * = -> subtemplate; parse a template by this name, and treat its content as this tokens value * * @param N which token do you want to lookup? * @param Value reference to the string of the token; don't free me. * @param len the length of Value */ void GetTemplateTokenString(StrBuf *Target, WCTemplputParams *TP, int N, const char **Value, long *len); /** * @ingroup subst * @return whether @ref GetTemplateTokenString would be able to give you a string */ int HaveTemplateTokenString(StrBuf *Target, WCTemplputParams *TP, int N, const char **Value, long *len); /** * @ingroup subst * @brief get the actual integer value of a token parameter * in your tmplputs or conditionals use this function to access parameters that can also be * retrieved from dynamic facilities: * _ -> Gettext; retrieve this token from the i18n facilities * : -> lookup a setting of that name * B -> bstr; an URL-Parameter * = -> subtemplate; parse a template by this name, and treat its content as this tokens value * * @param N which token do you want to lookup? * @param dflt default value to be retrieved if not found in preferences * \returns the long value */ long GetTemplateTokenNumber(StrBuf *Target, WCTemplputParams *TP, int N, long dflt); /** * @brief put a token value into the template * use this function to append your strings into a Template. * it can escape your string according to the token at FormattypeIndex: * H: de-QP and utf8-ify * X: escapize for HTML * J: JSON Escapize * @param Target the destination buffer * @param TP the template token information * @param Source string to append * @param FormatTypeIndex which parameter contains the escaping functionality? * if this token doesn't have as much parameters, plain append is done. */ void StrBufAppendTemplate(StrBuf *Target, WCTemplputParams *TP, const StrBuf *Source, int FormatTypeIndex); void StrBufAppendTemplateStr(StrBuf *Target, WCTemplputParams *TP, const char *Source, int FormatTypeIndex); #define RegisterNamespace(a, b, c, d, e, f) RegisterNS(a, sizeof(a)-1, b, c, d, e, f) /** * @ingroup subst * @brief register a template token handler * call this function in your InitModule_MODULENAME which will be called at the server start * @param nMinArgs how much parameters does your token require at least? * @param nMaxArgs how many parameters does your token accept? * @param HandlerFunc your callback when the template is rendered and your token is there * @param PreEvalFunc is called when the template is parsed; you can do additional * syntax checks here or pre-evaluate stuff for better performance * @param ContextRequired if your token requires a specific context, else say CTX_NONE here. */ void RegisterNS(const char *NSName, long len, int nMinArgs, int nMaxArgs, WCHandlerFunc HandlerFunc, WCPreevalFunc PreEvalFunc, int ContextRequired); /** * @ingroup subst * @brief register a conditional token handler * call this function in your InitModule_MODULENAME which will be called at the server start * conditionals can be ? or ! with a pair or % similar to an implicit if * @param Name whats the name of your conditional? should start with COND: * @param len the token length so we don't have to measure it. * @param nParams how many parameters does your conditional need on top of the default conditional parameters * @param CondF your Callback to be called when the template is evaluated at runtime; return 0 or 1 to us please. * @param ExitCtxCond if non-NULL, will be called after the area of the conditional is left behind. * @param ContextRequired if your token requires a specific context, else say CTX_NONE here. */ void RegisterContextConditional(const char *Name, long len, int nParams, WCConditionalFunc CondF, WCConditionalFunc ExitCtxCond, int ContextRequired); #define RegisterCtxConditional(Name, nParams, CondF, ExitCtxCond, ContextRequired) \ RegisterContextConditional(Name, sizeof(Name) -1, nParams, CondF, ExitCtxCond, ContextRequired) #define RegisterConditional(Name, nParams, CondF, ContextRequired) \ RegisterContextConditional(Name, sizeof(Name) -1, nParams, CondF, NULL, ContextRequired) /** * @ingroup subst * @brief register a string that will represent a long value * this will allow to resolve to Value; that way * plain strings can be used an lexed in templates without having the * lookup overhead at runtime. * @param Name The name of the define * @param len length of Name * @param Value the value to associate with Name */ void RegisterTokenParamDefine(const char *Name, long len, long Value); /** * teh r0x0r! forward your favourite define from C to the templates with one easy call! */ #define REGISTERTokenParamDefine(a) RegisterTokenParamDefine(#a, sizeof(#a) - 1, a); /** * @ingroup subst * @brief retrieve the long value of a registered string define * @param Name The name of the define * @param len length of Name * @param Value the value to return if not found */ long GetTokenDefine(const char *Name, long len, long DefValue); #define IT_NOFLAG 0 #define IT_FLAG_DETECT_GROUPCHANGE (1<<0) #define RegisterIterator(a, b, c, d, e, f, g, h, i) RegisterITERATOR(a, sizeof(a)-1, b, c, d, e, f, g, h, i) void RegisterITERATOR(const char *Name, long len, /* Our identifier */ int AdditionalParams, /* doe we use more parameters? */ HashList *StaticList, /* pointer to webcit lifetime hashlists */ RetrieveHashlistFunc GetHash, /* else retrieve the hashlist by calling this function */ SubTemplFunc DoSubTempl, /* call this function on each iteration for svput & friends */ HashDestructorFunc Destructor, /* use this function to shut down the hash; NULL if its a reference */ CtxType ContextType, /* which context do we provide to the subtemplate? */ CtxType XPectContextType, /* which context do we expct to be called in? */ int Flags); void StackDynamicContext(WCTemplputParams *Super, WCTemplputParams *Sub, void *Context, CtxType ContextType, int nArgs, WCTemplateToken *Tokens, WCConditionalFunc ExitCtx, long ExitCTXID); #define StackContext(Super, Sub, Context, ContextType, nArgs, Tokens) \ StackDynamicContext(Super, Sub, Context, ContextType, nArgs, Tokens, NULL, 0) void UnStackContext(WCTemplputParams *Sub); CompareFunc RetrieveSort(WCTemplputParams *TP, const char *OtherPrefix, long OtherPrefixLen, const char *Default, long ldefault, long DefaultDirection); void RegisterSortFunc(const char *name, long len, const char *prepend, long preplen, CompareFunc Forward, CompareFunc Reverse, CompareFunc GroupChange, CtxType ContextType); void dbg_print_longvector(long *LongVector); #define do_template(a) DoTemplate(a, sizeof(a) -1, NULL, &NoCtx) const StrBuf *DoTemplate(const char *templatename, long len, StrBuf *Target, WCTemplputParams *TP); void url_do_template(void); int CompareSubstToToken(TemplateParam *ParamToCompare, TemplateParam *ParamToLookup); int CompareSubstToStrBuf(StrBuf *Compare, TemplateParam *ParamToLookup); webcit-8.24-dfsg.orig/setup.c0000644000175000017500000004135712271477123015716 0ustar michaelmichael/* * WebCit setup utility * * (This is basically just an install wizard. It's not required.) */ #include "sysdep.h" #include "webcit.h" #include "webserver.h" #define UI_TEXT 0 /* Default setup type -- text only */ #define UI_DIALOG 2 /* Use the 'dialog' program */ #define UI_SILENT 3 /* Silent running, for use in scripts */ int setup_type; char setup_directory[SIZ]; int using_web_installer = 0; char suggested_url[SIZ]; /* some copies... int syslog(int loglevel, const char *format, ...){return 0;} */ void wc_printf(const char *format,...){} void RegisterNS(const char *NSName, long len, int nMinArgs, int nMaxArgs, WCHandlerFunc HandlerFunc, WCPreevalFunc PreEvalFunc, int ContextRequired){} void StrBufAppendTemplateStr(StrBuf *Target, WCTemplputParams *TP, const char *Source, int FormatTypeIndex){} void RegisterHeaderHandler(const char *Name, long Len, Header_Evaluator F){} pthread_key_t MyConKey; #ifdef ENABLE_NLS #ifdef HAVE_USELOCALE int localeoffset = 1; #else int localeoffset = 0; #endif #endif /* * Delete an entry from /etc/inittab */ void delete_init_entry(char *which_entry) { char *inittab = NULL; FILE *fp; char buf[SIZ]; char entry[SIZ]; char levels[SIZ]; char state[SIZ]; char prog[SIZ]; inittab = strdup(""); if (inittab == NULL) return; fp = fopen("/etc/inittab", "r"); if (fp == NULL) return; while(fgets(buf, sizeof buf, fp) != NULL) { if (num_tokens(buf, ':') == 4) { extract_token(entry, buf, 0, ':', sizeof entry); extract_token(levels, buf, 1, ':', sizeof levels); extract_token(state, buf, 2, ':', sizeof state); extract_token(prog, buf, 3, ':', sizeof prog); /* includes 0x0a LF */ if (!strcmp(entry, which_entry)) { strcpy(state, "off"); /* disable it */ } } inittab = realloc(inittab, strlen(inittab) + strlen(buf) + 2); if (inittab == NULL) { fclose(fp); return; } strcat(inittab, buf); } fclose(fp); fp = fopen("/etc/inittab", "w"); if (fp != NULL) { fwrite(inittab, strlen(inittab), 1, fp); fclose(fp); kill(1, SIGHUP); /* Tell init to re-read /etc/inittab */ } free(inittab); } /* * Remove any /etc/inittab entries for webcit, because we don't * start it that way anymore. */ void delete_the_old_way(void) { FILE *infp; char buf[1024]; char looking_for[1024]; int have_entry = 0; char entry[1024]; char prog[1024]; char init_entry[1024]; strcpy(init_entry, ""); /* Determine the fully qualified path name of webcit */ snprintf(looking_for, sizeof looking_for, "%s/webcit ", setup_directory); /* Pound through /etc/inittab line by line. Set have_entry to 1 if * an entry is found which we believe starts webcit. */ infp = fopen("/etc/inittab", "r"); if (infp == NULL) { return; } else { while (fgets(buf, sizeof buf, infp) != NULL) { buf[strlen(buf) - 1] = 0; extract_token(entry, buf, 0, ':', sizeof entry); extract_token(prog, buf, 3, ':', sizeof prog); if (!strncasecmp(prog, looking_for, strlen(looking_for))) { ++have_entry; strcpy(init_entry, entry); } } fclose(infp); } /* Bail out if there's nothing to do. */ if (!have_entry) return; delete_init_entry(init_entry); } void cleanup(int exitcode) { exit(exitcode); } void title(char *text) { if (setup_type == UI_TEXT) { printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n<%s>\n", text); } } int yesno(char *question, int default_value) { int i = 0; int answer = 0; char buf[SIZ] = ""; switch (setup_type) { case UI_TEXT: do { printf("%s\nYes/No [%s] --> ", question, ( default_value ? "Yes" : "No" ) ); if (fgets(buf, sizeof buf, stdin)) { answer = tolower(buf[0]); if ((buf[0]==0) || (buf[0]==13) || (buf[0]==10)) answer = default_value; else if (answer == 'y') answer = 1; else if (answer == 'n') answer = 0; } } while ((answer < 0) || (answer > 1)); break; case UI_DIALOG: sprintf(buf, "exec %s %s --yesno '%s' 15 75", getenv("CTDL_DIALOG"), ( default_value ? "" : "--defaultno" ), question); i = system(buf); if (i == 0) { answer = 1; } else { answer = 0; } break; } return (answer); } void set_value(char *prompt, char str[]) { char buf[SIZ] = ""; char dialog_result[PATH_MAX]; char setupmsg[SIZ]; FILE *fp; strcpy(setupmsg, ""); switch (setup_type) { case UI_TEXT: title("WebCit setup"); printf("\n%s\n", prompt); printf("This is currently set to:\n%s\n", str); printf("Enter new value or press return to leave unchanged:\n"); if (fgets(buf, sizeof buf, stdin)) { buf[strlen(buf) - 1] = 0; } if (strlen(buf) != 0) strcpy(str, buf); break; case UI_DIALOG: CtdlMakeTempFileName(dialog_result, sizeof dialog_result); sprintf(buf, "exec %s --inputbox '%s' 19 72 '%s' 2>%s", getenv("CTDL_DIALOG"), prompt, str, dialog_result); system(buf); fp = fopen(dialog_result, "r"); if (fp != NULL) { if (fgets(str, sizeof buf, fp)){ if (str[strlen(str)-1] == 10) { str[strlen(str)-1] = 0; } } fclose(fp); unlink(dialog_result); } break; } } extern const char *AvailLang[]; int GetLocalePrefs(void) { int nLocales; StrBuf *Buf; char buf[SIZ]; char dialog_result[PATH_MAX]; FILE *fp; int i = 0; int offs = 0; nLocales = 0; while (!IsEmptyStr(AvailLang[nLocales])) nLocales++; Buf = NewStrBuf(); StrBufAppendBufPlain(Buf, HKEY("Select the locale webcit should use : \n"), 0); #ifdef HAVE_USELOCALE StrBufAppendBufPlain(Buf, HKEY(" 0 Let the user select it at the login prompt (default)\n"), 0); offs ++; #endif for (i = 0; i < nLocales; i++) { StrBufAppendPrintf(Buf, " %ld: %s\n", i + offs, AvailLang[i]); } switch (setup_type) { case UI_TEXT: title("WebCit setup"); printf("\n%s\n", ChrPtr(Buf)); printf("This is currently set to:\n%ld\n", 0L); printf("Enter new value or press return to leave unchanged:\n"); if (fgets(buf, sizeof buf, stdin)) return atoi(buf); break; case UI_DIALOG: CtdlMakeTempFileName(dialog_result, sizeof dialog_result); sprintf(buf, "exec %s --inputbox '%s' 19 72 '%ld' 2>%s", getenv("CTDL_DIALOG"), ChrPtr(Buf), 0L, dialog_result); system(buf); fp = fopen(dialog_result, "r"); if (fp != NULL) { char *str = &buf[0]; if (fgets(str, sizeof buf, fp)){ if (str[strlen(str)-1] == 10) { str[strlen(str)-1] = 0; } } fclose(fp); unlink(dialog_result); return atoi(buf); } break; } return 0; } void important_message(char *title, char *msgtext) { char buf[SIZ]; switch (setup_type) { case UI_TEXT: printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"); printf(" %s \n\n%s\n\n", title, msgtext); printf("Press return to continue..."); if (fgets(buf, sizeof buf, stdin)); break; case UI_DIALOG: sprintf(buf, "exec %s --msgbox '%s' 19 72", getenv("CTDL_DIALOG"), msgtext); system(buf); break; } } void display_error(char *error_message) { important_message("Error", error_message); } void progress(char *text, long int curr, long int cmax) { static long dots_printed = 0L; long a = 0; char buf[SIZ]; static FILE *fp = NULL; switch (setup_type) { case UI_TEXT: if (curr == 0) { printf("%s\n", text); printf(".........................."); printf(".........................."); printf("..........................\r"); fflush(stdout); dots_printed = 0; } else if (curr == cmax) { printf("\r%79s\n", ""); } else { a = (curr * 100) / cmax; a = a * 78; a = a / 100; while (dots_printed < a) { printf("*"); ++dots_printed; fflush(stdout); } } break; case UI_DIALOG: if (curr == 0) { sprintf(buf, "exec %s --gauge '%s' 7 72 0", getenv("CTDL_DIALOG"), text); fp = popen(buf, "w"); if (fp != NULL) { fprintf(fp, "0\n"); fflush(fp); } } else if (curr == cmax) { if (fp != NULL) { fprintf(fp, "100\n"); pclose(fp); fp = NULL; } } else { a = (curr * 100) / cmax; if (fp != NULL) { fprintf(fp, "%ld\n", a); fflush(fp); } } break; } } /* * install_init_scripts() -- Create and deploy SysV init scripts. * */ void install_init_scripts(void) { #ifdef ENABLE_NLS int localechoice; #endif char question[1024]; char buf[256]; char http_port[128]; #ifdef HAVE_OPENSSL char https_port[128]; #endif char hostname[128]; char portname[128]; char command[SIZ]; struct utsname my_utsname; struct stat etcinitd; FILE *fp; char *initfile = "/etc/init.d/webcit"; fp = fopen(initfile, "r"); if (fp != NULL) { if (yesno("WebCit already appears to be configured to start at boot.\n" "Would you like to keep your boot configuration as is?\n", 1) == 1) { return; } fclose(fp); } /* Otherwise, prompt the user to create an entry. */ snprintf(question, sizeof question, "Would you like to automatically start WebCit at boot?" ); if (yesno(question, 1) == 0) return; #ifdef ENABLE_NLS localechoice = GetLocalePrefs(); #endif /* Defaults */ sprintf(http_port, "2000"); #ifdef HAVE_OPENSSL sprintf(https_port, "443"); #endif sprintf(hostname, "uds"); sprintf(portname, "/usr/local/citadel"); /* This is a very hackish way of learning the port numbers used * in a previous install, if we are upgrading: read them out of * the existing init script. */ if ((stat("/etc/init.d/", &etcinitd) == -1) && (errno == ENOENT)) { if ((stat("/etc/rc.d/init.d/", &etcinitd) == -1) && (errno == ENOENT)) initfile = WEBCITDIR"/webcit.init"; else initfile = "/etc/rc.d/init.d/webcit"; } fp = fopen(initfile, "r"); if (fp != NULL) { while (fgets(buf, sizeof buf, fp) != NULL) { if (strlen(buf) > 0) { buf[strlen(buf)-1] = 0; /* strip trailing cr */ } if (!strncasecmp(buf, "HTTP_PORT=", 10)) { safestrncpy(http_port, &buf[10], sizeof http_port); } #ifdef HAVE_OPENSSL if (!strncasecmp(buf, "HTTPS_PORT=", 11)) { safestrncpy(https_port, &buf[11], sizeof https_port); } #endif if (!strncasecmp(buf, "CTDL_HOSTNAME=", 14)) { safestrncpy(hostname, &buf[14], sizeof hostname); } if (!strncasecmp(buf, "CTDL_PORTNAME=", 14)) { safestrncpy(portname, &buf[14], sizeof portname); } } fclose(fp); } /* Now ask for the port numbers */ snprintf(question, sizeof question, "On which port do you want WebCit to listen for HTTP " "requests?\n\nYou can use the standard port (80) if you are " "not running another\nweb server (such as Apache), otherwise " "select another port."); set_value(question, http_port); uname(&my_utsname); sprintf(suggested_url, "http://%s:%s/", my_utsname.nodename, http_port); #ifdef HAVE_OPENSSL snprintf(question, sizeof question, "On which port do you want WebCit to listen for HTTPS " "requests?\n\nYou can use the standard port (443) if you are " "not running another\nweb server (such as Apache), otherwise " "select another port."); set_value(question, https_port); #endif /* Find out where Citadel is. */ if ( (using_web_installer) && (getenv("CITADEL") != NULL) ) { strcpy(hostname, "uds"); strcpy(portname, getenv("CITADEL")); } else { snprintf(question, sizeof question, "Is the Citadel service running on the same host as WebCit?"); if (yesno(question, ((!strcasecmp(hostname, "uds")) ? 1 : 0))) { strcpy(hostname, "uds"); if (atoi(portname) != 0) strcpy(portname, "/usr/local/citadel"); set_value("In what directory is Citadel installed?", portname); } else { if (!strcasecmp(hostname, "uds")) strcpy(hostname, "127.0.0.1"); if (atoi(portname) == 0) strcpy(portname, "504"); set_value("Enter the host name or IP address of your " "Citadel server.", hostname); set_value("Enter the port number on which Citadel is " "running (usually 504)", portname); } } fp = fopen(initfile, "w"); fprintf(fp, "#!/bin/sh\n" "\n" "# uncomment this to create coredumps as described in\n" "# http://www.citadel.org/doku.php/faq:mastering_your_os:gdb#how.do.i.make.my.system.produce.core-files\n" "# ulimit -c unlimited\n" "WEBCIT_DIR=%s\n", setup_directory); fprintf(fp, "HTTP_PORT=%s\n", http_port); #ifdef HAVE_OPENSSL fprintf(fp, "HTTPS_PORT=%s\n", https_port); #endif fprintf(fp, "CTDL_HOSTNAME=%s\n", hostname); fprintf(fp, "CTDL_PORTNAME=%s\n", portname); #ifdef ENABLE_NLS if (localechoice == 0) { #ifdef HAVE_USELOCALE fprintf(fp, "unset LANG\n"); #else fprintf(fp, "export WEBCIT_LANG=c\n"); #endif } else { fprintf(fp, "export WEBCIT_LANG=%s\n", AvailLang[localechoice - localeoffset]); } #else fprintf(fp, "# your system doesn't support locales\n"); #endif fprintf(fp, "\n" "\n" "case \"$1\" in\n" "\n" "start) echo -n \"Starting WebCit... \"\n" " if $WEBCIT_DIR/webcit " "-D/var/run/webcit.pid " "-p$HTTP_PORT $CTDL_HOSTNAME $CTDL_PORTNAME\n" " then\n" " echo \"ok\"\n" " else\n" " echo \"failed\"\n" " fi\n"); #ifdef HAVE_OPENSSL fprintf(fp, " echo -n \"Starting WebCit SSL... \"\n" " if $WEBCIT_DIR/webcit " "-D/var/run/webcit-ssl.pid " "-s -p$HTTPS_PORT $CTDL_HOSTNAME $CTDL_PORTNAME\n" " then\n" " echo \"ok\"\n" " else\n" " echo \"failed\"\n" " fi\n"); #endif fprintf(fp, " ;;\n" "stop) echo -n \"Stopping WebCit... \"\n" " if kill `cat /var/run/webcit.pid 2>/dev/null` 2>/dev/null\n" " then\n" " echo \"ok\"\n" " else\n" " echo \"failed\"\n" " fi\n" " rm -f /var/run/webcit.pid 2>/dev/null\n"); #ifdef HAVE_OPENSSL fprintf(fp, " echo -n \"Stopping WebCit SSL... \"\n" " if kill `cat /var/run/webcit-ssl.pid 2>/dev/null` 2>/dev/null\n" " then\n" " echo \"ok\"\n" " else\n" " echo \"failed\"\n" " fi\n" " rm -f /var/run/webcit-ssl.pid 2>/dev/null\n"); #endif fprintf(fp, " ;;\n" "restart) $0 stop\n" " $0 start\n" " ;;\n" "*) echo \"Usage: $0 {start|stop|restart}\"\n" " exit 1\n" " ;;\n" "esac\n" ); fclose(fp); chmod(initfile, 0755); /* Set up the run levels. */ system("/bin/rm -f /etc/rc?.d/[SK]??webcit 2>/dev/null"); snprintf(command, sizeof(command), "for x in 2 3 4 5 ; do [ -d /etc/rc$x.d ] && ln -s %s /etc/rc$x.d/S84webcit ; done 2>/dev/null", initfile); system(command); snprintf(command, sizeof(command), "for x in 0 6 S; do [ -d /etc/rc$x.d ] && ln -s %s /etc/rc$x.d/K15webcit ; done 2>/dev/null", initfile); system(command); } /* * Figure out what type of user interface we're going to use */ int discover_ui(void) { /* Use "dialog" if we have it */ if (getenv("CTDL_DIALOG") != NULL) { return UI_DIALOG; } return UI_TEXT; } int main(int argc, char *argv[]) { int a; char aaa[256]; int info_only = 0; strcpy(suggested_url, "http://:/"); /* set an invalid setup type */ setup_type = (-1); /* Check to see if we're running the web installer */ if (getenv("CITADEL_INSTALLER") != NULL) { using_web_installer = 1; } /* parse command line args */ for (a = 0; a < argc; ++a) { if (!strncmp(argv[a], "-u", 2)) { strcpy(aaa, argv[a]); strcpy(aaa, &aaa[2]); setup_type = atoi(aaa); } if (!strcmp(argv[a], "-i")) { info_only = 1; } if (!strcmp(argv[a], "-q")) { setup_type = UI_SILENT; } } /* If a setup type was not specified, try to determine automatically * the best one to use out of all available types. */ if (setup_type < 0) { setup_type = discover_ui(); } if (info_only == 1) { important_message("WebCit Setup", "Welcome to WebCit setup"); cleanup(0); } /* Get started in a valid setup directory. */ strcpy(setup_directory, WEBCITDIR); if ( (using_web_installer) && (getenv("WEBCIT") != NULL) ) { strcpy(setup_directory, getenv("WEBCIT")); } else { set_value("In what directory is WebCit installed?", setup_directory); } if (chdir(setup_directory) != 0) { important_message("WebCit Setup", "The directory you specified does not exist."); cleanup(errno); } /* * We used to start WebCit by putting it directly into /etc/inittab. * Since some systems are moving away from init, we can't do this anymore. */ progress("Removing obsolete /etc/inittab entries...", 0, 1); delete_the_old_way(); progress("Removing obsolete /etc/inittab entries...", 1, 1); /* Now begin. */ switch (setup_type) { case UI_TEXT: printf("\n\n\n" " *** WebCit setup program ***\n\n"); break; } /* * If we're running on SysV, install init scripts. */ if (!access("/var/run", W_OK)) { install_init_scripts(); if (!access("/etc/init.d/webcit", X_OK)) { system("/etc/init.d/webcit stop"); system("/etc/init.d/webcit start"); } sprintf(aaa, "Setup is finished. You may now log in.\n" "Point your web browser at %s\n", suggested_url ); important_message("Setup finished", aaa); } else { important_message("Setup finished", "Setup is finished. You may now start the server."); } cleanup(0); return 0; } webcit-8.24-dfsg.orig/fmt_date.c0000644000175000017500000001542412271477123016335 0ustar michaelmichael/* * Copyright (c) 1996-2012 by the citadel.org team * * This program is open source software. You can redistribute it and/or * modify it under the terms of the GNU General Public License, version 3. * * This program 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. */ #include "webcit.h" #include "webserver.h" #ifdef HAVE_USELOCALE extern locale_t *wc_locales; #endif typedef unsigned char byte; #define FALSE 0 /**< no. */ #define TRUE 1 /**< yes. */ /* * Wrapper around strftime() or strftime_l() * depending upon how our build is configured. * * s String target buffer * max Maximum size of string target buffer * format strftime() format * tm Input date/time */ size_t wc_strftime(char *s, size_t max, const char *format, const struct tm *tm) { #ifdef ENABLE_NLS #ifdef HAVE_USELOCALE if (wc_locales[WC->selected_language] == NULL) { return strftime(s, max, format, tm); } else { return strftime_l(s, max, format, tm, wc_locales[WC->selected_language]); } #else return strftime(s, max, format, tm); #endif #else return strftime(s, max, format, tm); #endif } /* * Format a date/time stamp for output */ long webcit_fmt_date(char *buf, size_t siz, time_t thetime, int Format) { long retlen = 0; struct tm tm; struct tm today_tm; time_t today_timet; int time_format; time_format = get_time_format_cached (); today_timet = time(NULL); localtime_r(&today_timet, &today_tm); localtime_r(&thetime, &tm); /* * DATEFMT_FULL: full display * DATEFMT_BRIEF: if date == today, show only the time * otherwise, for messages up to 6 months old, * show the month and day, and the time * older than 6 months, show only the date * DATEFMT_RAWDATE: show full date, regardless of age * DATEFMT_LOCALEDATE: show full date as prefered for the locale */ switch (Format) { case DATEFMT_BRIEF: if ((tm.tm_year == today_tm.tm_year) &&(tm.tm_mon == today_tm.tm_mon) &&(tm.tm_mday == today_tm.tm_mday)) { if (time_format == WC_TIMEFORMAT_24) retlen = wc_strftime(buf, siz, "%k:%M", &tm); else retlen = wc_strftime(buf, siz, "%l:%M%p", &tm); } else if (today_timet - thetime < 15552000) { if (time_format == WC_TIMEFORMAT_24) retlen = wc_strftime(buf, siz, "%b %d %k:%M", &tm); else retlen = wc_strftime(buf, siz, "%b %d %l:%M%p", &tm); } else { retlen = wc_strftime(buf, siz, "%b %d %Y", &tm); } break; case DATEFMT_FULL: if (time_format == WC_TIMEFORMAT_24) retlen = wc_strftime(buf, siz, "%a %b %d %Y %T %Z", &tm); else retlen = wc_strftime(buf, siz, "%a %b %d %Y %r %Z", &tm); break; case DATEFMT_RAWDATE: retlen = wc_strftime(buf, siz, "%a %b %d %Y", &tm); break; case DATEFMT_LOCALEDATE: retlen = wc_strftime(buf, siz, "%x", &tm); break; } return retlen; } /* * Try to guess whether the user will prefer 12 hour or 24 hour time based on the locale. */ long guess_calhourformat(void) { char buf[64]; struct tm tm; memset(&tm, 0, sizeof tm); wc_strftime(buf, 64, "%X", &tm); if (buf[strlen(buf)-1] == 'M') { return 12; } return 24; } /* * learn the users timeformat preference. */ int get_time_format_cached (void) { long calhourformat; int *time_format_cache; time_format_cache = &(WC->time_format_cache); if (*time_format_cache == WC_TIMEFORMAT_NONE) { get_pref_long("calhourformat", &calhourformat, 99); /* If we don't know the user's time format preference yet, * make a guess based on the locale. */ if (calhourformat == 99) { calhourformat = guess_calhourformat(); } /* Now set the preference */ if (calhourformat == 24) *time_format_cache = WC_TIMEFORMAT_24; else *time_format_cache = WC_TIMEFORMAT_AMPM; } return *time_format_cache; } /* * Format TIME ONLY for output * buf the output buffer * thetime time to format into buf */ void fmt_time(char *buf, size_t siz, time_t thetime) { struct tm *tm; int hour; int time_format; time_format = get_time_format_cached (); buf[0] = 0; tm = localtime(&thetime); hour = tm->tm_hour; if (hour == 0) hour = 12; else if (hour > 12) hour = hour - 12; if (time_format == WC_TIMEFORMAT_24) { snprintf(buf, siz, "%d:%02d", tm->tm_hour, tm->tm_min ); } else { snprintf(buf, siz, "%d:%02d%s", hour, tm->tm_min, ((tm->tm_hour > 12) ? "pm" : "am") ); } } /* * Break down the timestamp used in HTTP headers * Should read rfc1123 and rfc850 dates OK * FIXME won't read asctime * Doesn't understand timezone, but we only should be using GMT/UTC anyway */ time_t httpdate_to_timestamp(StrBuf *buf) { time_t t = 0; struct tm tt; const char *c; /** Skip day of week, to number */ for (c = ChrPtr(buf); *c != ' '; c++) ; c++; memset(&tt, 0, sizeof(tt)); /* Get day of month */ tt.tm_mday = atoi(c); for (; *c != ' ' && *c != '-'; c++); c++; /* Get month */ switch (*c) { case 'A': /* April, August */ tt.tm_mon = (c[1] == 'p') ? 3 : 7; break; case 'D': /* December */ tt.tm_mon = 11; break; case 'F': /* February */ tt.tm_mon = 1; break; case 'M': /* March, May */ tt.tm_mon = (c[2] == 'r') ? 2 : 4; break; case 'J': /* January, June, July */ tt.tm_mon = (c[2] == 'n') ? ((c[1] == 'a') ? 0 : 5) : 6; break; case 'N': /* November */ tt.tm_mon = 10; break; case 'O': /* October */ tt.tm_mon = 9; break; case 'S': /* September */ tt.tm_mon = 8; break; default: return 42; break; /* NOTREACHED */ } c += 4; tt.tm_year = 0; /* Get year */ tt.tm_year = atoi(c); for (; *c != ' '; c++); c++; if (tt.tm_year >= 1900) tt.tm_year -= 1900; /* Get hour */ tt.tm_hour = atoi(c); for (; *c != ':'; c++); c++; /* Get minute */ tt.tm_min = atoi(c); for (; *c != ':'; c++); c++; /* Get second */ tt.tm_sec = atoi(c); for (; *c && *c != ' '; c++); /* Got everything; let's go. The global 'timezone' variable contains the * local timezone's offset from UTC, in seconds, so we apply that to tm_sec. * This produces an illegal value for tm_sec, but mktime() will normalize * it for us. This eliminates the need to temporarily switch the environment * variable TZ to UTC, which is good because it fails to switch back on * some systems. */ tzset(); tt.tm_sec = tt.tm_sec - (int)timezone; t = mktime(&tt); return t; } void LoadTimeformatSettingsCache(StrBuf *Preference, long lvalue) { int *time_format_cache; time_format_cache = &(WC->time_format_cache); if (lvalue == 24) *time_format_cache = WC_TIMEFORMAT_24; else *time_format_cache = WC_TIMEFORMAT_AMPM; } void InitModule_DATETIME (void) { RegisterPreference("calhourformat", _("Time format"), PRF_INT, LoadTimeformatSettingsCache); } webcit-8.24-dfsg.orig/siteconfig.c0000644000175000017500000003501112271477123016676 0ustar michaelmichael/* * Administrative screen for site-wide configuration * * Copyright (c) 1996-2012 by the citadel.org team * * This program is open source software. You can redistribute it and/or * modify it under the terms of the GNU General Public License, version 3. * * This program 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. */ #include "webcit.h" #include "webserver.h" CtxType CTX_SRVLOG = CTX_NONE; HashList *ZoneHash = NULL; ConstStr ExpirePolicyString = {CStrOf(roompolicy) }; ConstStr ExpirePolicyStrings[][2] = { { { CStrOf(roompolicy) } , { strof(roompolicy) "_value", sizeof(strof(roompolicy) "_value") - 1 } }, { { CStrOf(floorpolicy) } , { strof(floorpolicy) "_value", sizeof(strof(floorpolicy) "_value") - 1 } }, { { CStrOf(sitepolicy) } , { strof(sitepolicy) "_value", sizeof(strof(sitepolicy) "_value") - 1 } }, { { CStrOf(mailboxespolicy)} , { strof(mailboxespolicy)"_value", sizeof(strof(mailboxespolicy)"_value") - 1 } } }; void LoadExpirePolicy(GPEXWhichPolicy which) { StrBuf *Buf; wcsession *WCC = WC; long State; const char *Pos = NULL; serv_printf("GPEX %s", ExpirePolicyStrings[which][0].Key); Buf = NewStrBuf(); StrBuf_ServGetln(Buf); if (GetServerStatus(Buf, &State) == 2) { Pos = ChrPtr(Buf) + 4; WCC->Policy[which].expire_mode = StrBufExtractNext_long(Buf, &Pos, '|'); WCC->Policy[which].expire_value = StrBufExtractNext_long(Buf, &Pos, '|'); } else if (State == 550) AppendImportantMessage(_("Higher access is required to access this function."), -1); FreeStrBuf(&Buf); } void SaveExpirePolicyFromHTTP(GPEXWhichPolicy which) { StrBuf *Buf; long State; serv_printf("SPEX %s|%d|%d", ExpirePolicyStrings[which][0].Key, ibcstr( ExpirePolicyStrings[which][1] ), ibcstr( ExpirePolicyStrings[which][1] ) ); Buf = NewStrBuf(); StrBuf_ServGetln(Buf); GetServerStatus(Buf, &State); if (State == 550) AppendImportantMessage(_("Higher access is required to access this function."), -1); FreeStrBuf(&Buf); } int ConditionalExpire(StrBuf *Target, WCTemplputParams *TP) { wcsession *WCC = WC; GPEXWhichPolicy which; int CompareWith; which = GetTemplateTokenNumber(Target, TP, 2, 0); CompareWith = GetTemplateTokenNumber(Target, TP, 3, 0); LoadExpirePolicy(which); return WCC->Policy[which].expire_mode == CompareWith; } void tmplput_ExpireValue(StrBuf *Target, WCTemplputParams *TP) { GPEXWhichPolicy which; wcsession *WCC = WC; which = GetTemplateTokenNumber(Target, TP, 0, 0); LoadExpirePolicy(which); StrBufAppendPrintf(Target, "%d", WCC->Policy[which].expire_value); } void tmplput_ExpireMode(StrBuf *Target, WCTemplputParams *TP) { GPEXWhichPolicy which; wcsession *WCC = WC; which = GetTemplateTokenNumber(Target, TP, 2, 0); LoadExpirePolicy(which); StrBufAppendPrintf(Target, "%d", WCC->Policy[which].expire_mode); } void LoadZoneFiles(void) { icalarray *zones; int z; long len; const char *this_zone; StrBuf *ZName; ZoneHash = NewHash(1, NULL); ZName = NewStrBufPlain(HKEY("UTC")); Put(ZoneHash, HKEY("UTC"), ZName, HFreeStrBuf); zones = icaltimezone_get_builtin_timezones(); for (z = 0; z < zones->num_elements; ++z) { /* syslog(LOG_DEBUG, "Location: %-40s tzid: %s\n", icaltimezone_get_location(icalarray_element_at(zones, z)), icaltimezone_get_tzid(icalarray_element_at(zones, z)) ); */ this_zone = icaltimezone_get_location(icalarray_element_at(zones, z)); len = strlen(this_zone); ZName = NewStrBufPlain(this_zone, len); Put(ZoneHash, this_zone, len, ZName, HFreeStrBuf); } SortByHashKey(ZoneHash, 0); } typedef struct _CfgMapping { int type; int min; int max; const char *defval; const char *Key; long len; } CfgMapping; #define CFG_STR 1 #define CFG_YES 2 #define CFG_NO 3 #define CFG_INT 4 CfgMapping ServerConfig[] = { {CFG_STR, 0, 0, "", HKEY("c_nodename")}, {CFG_STR, 0, 0, "", HKEY("c_fqdn")}, {CFG_STR, 0, 0, "", HKEY("c_humannode")}, {CFG_STR, 0, 0, "", HKEY("c_phonenum")}, {CFG_YES, 0, 0, "", HKEY("c_creataide")}, {CFG_STR, 0, 0, "", HKEY("c_sleeping")}, {CFG_STR, 0, 0, "", HKEY("c_initax")}, {CFG_YES, 0, 0, "", HKEY("c_regiscall")}, {CFG_YES, 0, 0, "", HKEY("c_twitdetect")}, {CFG_STR, 0, 0, "", HKEY("c_twitroom")}, {CFG_STR, 0, 0, "", HKEY("c_moreprompt")}, {CFG_YES, 0, 0, "", HKEY("c_restrict")}, {CFG_STR, 0, 0, "", HKEY("c_bbs_city")}, {CFG_STR, 0, 0, "", HKEY("c_sysadm")}, {CFG_STR, 0, 0, "", HKEY("c_maxsessions")}, {CFG_STR, 0, 0, "", HKEY("reserved1")}, {CFG_STR, 0, 0, "", HKEY("c_userpurge")}, {CFG_STR, 0, 0, "", HKEY("c_roompurge")}, {CFG_STR, 0, 0, "", HKEY("c_logpages")}, {CFG_STR, 0, 0, "", HKEY("c_createax")}, {CFG_STR, 0, 0, "", HKEY("c_maxmsglen")}, {CFG_STR, 0, 0, "", HKEY("c_min_workers")}, {CFG_STR, 0, 0, "", HKEY("c_max_workers")}, {CFG_STR, 0, 0, "", HKEY("c_pop3_port")}, {CFG_STR, 0, 0, "", HKEY("c_smtp_port")}, {CFG_INT, CFG_SMTP_FROM_FILTERALL, CFG_SMTP_FROM_REJECT, "0", HKEY("c_rfc822_strict_from")}, {CFG_YES, 0, 0, "", HKEY("c_aide_zap")}, {CFG_STR, 0, 0, "", HKEY("c_imap_port")}, {CFG_STR, 0, 0, "", HKEY("c_net_freq")}, {CFG_YES, 0, 0, "", HKEY("c_disable_newu")}, {CFG_STR, 0, 0, "", HKEY("reserved2")}, {CFG_STR, 0, 0, "", HKEY("c_purge_hour")}, {CFG_STR, 0, 0, "", HKEY("c_ldap_host")}, {CFG_STR, 0, 0, "", HKEY("c_ldap_port")}, {CFG_STR, 0, 0, "", HKEY("c_ldap_base_dn")}, {CFG_STR, 0, 0, "", HKEY("c_ldap_bind_dn")}, {CFG_STR, 0, 0, "", HKEY("c_ldap_bind_pw")}, {CFG_STR, 0, 0, "", HKEY("c_ip_addr")}, {CFG_STR, 0, 0, "", HKEY("c_msa_port")}, {CFG_STR, 0, 0, "", HKEY("c_imaps_port")}, {CFG_STR, 0, 0, "", HKEY("c_pop3s_port")}, {CFG_STR, 0, 0, "", HKEY("c_smtps_port")}, {CFG_YES, 0, 0, "", HKEY("c_enable_fulltext")}, {CFG_YES, 0, 0, "", HKEY("c_auto_cull")}, {CFG_YES, 0, 0, "", HKEY("reserved3")}, {CFG_YES, 0, 0, "", HKEY("c_allow_spoofing")}, {CFG_YES, 0, 0, "", HKEY("c_journal_email")}, {CFG_YES, 0, 0, "", HKEY("c_journal_pubmsgs")}, {CFG_STR, 0, 0, "", HKEY("c_journal_dest")}, {CFG_STR, 0, 0, "", HKEY("c_default_cal_zone")}, {CFG_STR, 0, 0, "", HKEY("c_pftcpdict_port")}, {CFG_STR, 0, 0, "", HKEY("c_mgesve_port")}, {CFG_STR, 0, 0, "", HKEY("c_auth_mode")}, {CFG_STR, 0, 0, "", HKEY("c_funambol_host")}, {CFG_STR, 0, 0, "", HKEY("c_funambol_port")}, {CFG_STR, 0, 0, "", HKEY("c_funambol_source")}, {CFG_STR, 0, 0, "", HKEY("c_funambol_auth")}, {CFG_YES, 0, 0, "", HKEY("c_rbl_at_greeting")}, {CFG_STR, 0, 0, "", HKEY("c_master_user")}, {CFG_STR, 0, 0, "", HKEY("c_master_pass")}, {CFG_STR, 0, 0, "", HKEY("c_pager_program")}, {CFG_YES, 0, 0, "", HKEY("c_imap_keep_from")}, {CFG_STR, 0, 0, "", HKEY("c_xmpp_c2s_port")}, {CFG_STR, 0, 0, "", HKEY("c_xmpp_s2s_port")}, {CFG_STR, 0, 0, "", HKEY("c_pop3_fetch")}, {CFG_STR, 0, 0, "", HKEY("c_pop3_fastest")}, {CFG_YES, 0, 0, "", HKEY("c_spam_flag_only")}, {CFG_YES, 0, 0, "", HKEY("c_guest_logins")} }; /* * display all configuration items */ void load_siteconfig(void) { wcsession *WCC = WC; StrBuf *Buf; HashList *Cfg; long len; int i, j; if (WCC->ServCfg == NULL) WCC->ServCfg = NewHash(1, NULL); Cfg = WCC->ServCfg; Buf = NewStrBuf(); serv_printf("CONF get"); StrBuf_ServGetln(Buf); if (GetServerStatus(Buf, NULL) != 1) { StrBufCutLeft(Buf, 4); AppendImportantMessage(SKEY(Buf)); FreeStrBuf(&Buf); return; } j = i = 0; while (len = StrBuf_ServGetln(Buf), (len >= 0) && ((len != 3) || strcmp(ChrPtr(Buf), "000"))) { if (i < (sizeof(ServerConfig) / sizeof(CfgMapping))) { Put(Cfg, ServerConfig[i].Key, ServerConfig[i].len, Buf, HFreeStrBuf); i++; Buf = NewStrBuf(); } else { if (j == 0) { syslog(LOG_WARNING, "The server sent more configuration data than this version of webcit is capable of changing. Unknown configuration values will remain unchanged."); } j++; } } FreeStrBuf(&Buf); LoadExpirePolicy(roompolicy); LoadExpirePolicy(floorpolicy); LoadExpirePolicy(mailboxespolicy); LoadExpirePolicy(sitepolicy); } /* * parse siteconfig changes */ void siteconfig(void) { wcsession *WCC = WC; int i, value; StrBuf *Line; if (strlen(bstr("ok_button")) == 0) { display_aide_menu(); return; } Line = NewStrBuf(); serv_printf("CONF set"); StrBuf_ServGetln(Line); if (GetServerStatusMsg(Line, NULL, 1, 4) != 4) { display_aide_menu(); FreeStrBuf(&Line); return; } FreeStrBuf(&Line); for (i=0; i < (sizeof(ServerConfig) / sizeof(CfgMapping)); i ++) { switch (ServerConfig[i].type) { default: case CFG_STR: serv_putbuf(SBstr(ServerConfig[i].Key, ServerConfig[i].len)); break; case CFG_YES: serv_puts(YesBstr(ServerConfig[i].Key, ServerConfig[i].len) ? "1" : "0"); break; case CFG_NO: serv_puts(YesBstr(ServerConfig[i].Key, ServerConfig[i].len) ? "0" : "1"); break; case CFG_INT: value = IBstr(ServerConfig[i].Key, ServerConfig[i].len); if ((value < ServerConfig[i].min) || (value > ServerConfig[i].max)) value = atol(ServerConfig[i].defval); serv_printf("%d", value); break; } } serv_puts("000"); SaveExpirePolicyFromHTTP(sitepolicy); SaveExpirePolicyFromHTTP(mailboxespolicy); FreeStrBuf(&WCC->serv_info->serv_default_cal_zone); WCC->serv_info->serv_default_cal_zone = NewStrBufDup(sbstr("c_default_cal_zone")); AppendImportantMessage(_("Your system configuration has been updated."), -1); DeleteHash(&WCC->ServCfg); display_aide_menu(); } void tmplput_servcfg(StrBuf *Target, WCTemplputParams *TP) { wcsession *WCC = WC; void *vBuf; StrBuf *Buf; if (WCC->is_aide) { if (WCC->ServCfg == NULL) load_siteconfig(); GetHash(WCC->ServCfg, TKEY(0), &vBuf); Buf = (StrBuf*) vBuf; StrBufAppendTemplate(Target, TP, Buf, 1); } } int ConditionalServCfg(StrBuf *Target, WCTemplputParams *TP) { wcsession *WCC = WC; void *vBuf; StrBuf *Buf; if (WCC->is_aide) { if (WCC->ServCfg == NULL) load_siteconfig(); GetHash(WCC->ServCfg, TKEY(2), &vBuf); if (vBuf == NULL) return 0; Buf = (StrBuf*) vBuf; if (TP->Tokens->nParameters == 3) { return 1; } else if (IS_NUMBER(TP->Tokens->Params[3]->Type)) return (StrTol(Buf) == GetTemplateTokenNumber (Target, TP, 3, 0)); else { const char *pch; long len; GetTemplateTokenString(Target, TP, 3, &pch, &len); return ((len == StrLength(Buf)) && (strcmp(pch, ChrPtr(Buf)) == 0)); } } else return 0; } int ConditionalServCfgCTXStrBuf(StrBuf *Target, WCTemplputParams *TP) { wcsession *WCC = WC; void *vBuf; StrBuf *Buf; StrBuf *ZoneToCheck = (StrBuf*) CTX(CTX_STRBUF); if ((WCC->is_aide) || (ZoneToCheck == NULL)) { if (WCC->ServCfg == NULL) load_siteconfig(); GetHash(WCC->ServCfg, TKEY(2), &vBuf); if (vBuf == NULL) return 0; Buf = (StrBuf*) vBuf; return strcmp(ChrPtr(Buf), ChrPtr(ZoneToCheck)) == 0; } else return 0; } /*----------------------------------------------------------------------------* * Displaying Logging * *----------------------------------------------------------------------------*/ typedef struct __LogStatusStruct { int Enable; StrBuf *Name; }LogStatusStruct; void DeleteLogStatusStruct(void *v) { LogStatusStruct *Stat = (LogStatusStruct*)v; FreeStrBuf(&Stat->Name); free(Stat); } void tmplput_servcfg_LogName(StrBuf *Target, WCTemplputParams *TP) { LogStatusStruct *Stat = (LogStatusStruct*) CTX(CTX_SRVLOG); StrBufAppendTemplate(Target, TP, Stat->Name, 1); } int ConditionalServCfgThisLogEnabled(StrBuf *Target, WCTemplputParams *TP) { LogStatusStruct *Stat = (LogStatusStruct*) CTX(CTX_SRVLOG); return Stat->Enable; } HashList *iterate_GetSrvLogEnable(StrBuf *Target, WCTemplputParams *TP) { HashList *Hash = NULL; StrBuf *Buf; LogStatusStruct *Stat; const char *Pos; int Done = 0; long len; int num_logs = 0; serv_puts("LOGP"); Buf = NewStrBuf(); StrBuf_ServGetln(Buf); if (GetServerStatus(Buf, NULL) == 1) { Hash = NewHash(1, Flathash); while (!Done) { len = StrBuf_ServGetln(Buf); if ((len <0) || ((len == 3) && !strcmp(ChrPtr(Buf), "000"))) { Done = 1; break; } Stat = (LogStatusStruct*) malloc (sizeof(LogStatusStruct)); Pos = NULL; Stat->Name = NewStrBufPlain(NULL, len); StrBufExtract_NextToken(Stat->Name, Buf, &Pos, '|'); Stat->Enable = StrBufExtractNext_int(Buf, &Pos, '|'); Put(Hash, IKEY(num_logs), Stat, DeleteLogStatusStruct); num_logs++; } } FreeStrBuf(&Buf); return Hash; } void InitModule_SITECONFIG (void) { RegisterCTX(CTX_SRVLOG); WebcitAddUrlHandler(HKEY("siteconfig"), "", 0, siteconfig, CTX_NONE); RegisterNamespace("SERV:CFG", 1, 2, tmplput_servcfg, NULL, CTX_NONE); RegisterConditional("COND:SERVCFG", 3, ConditionalServCfg, CTX_NONE); RegisterConditional("COND:SERVCFG:CTXSTRBUF", 4, ConditionalServCfgCTXStrBuf, CTX_STRBUF); RegisterIterator("PREF:ZONE", 0, ZoneHash, NULL, NULL, NULL, CTX_STRBUF, CTX_NONE, IT_NOFLAG); REGISTERTokenParamDefine(roompolicy); REGISTERTokenParamDefine(floorpolicy); REGISTERTokenParamDefine(sitepolicy); REGISTERTokenParamDefine(mailboxespolicy); REGISTERTokenParamDefine(EXPIRE_NEXTLEVEL); REGISTERTokenParamDefine(EXPIRE_MANUAL); REGISTERTokenParamDefine(EXPIRE_NUMMSGS); REGISTERTokenParamDefine(EXPIRE_AGE); REGISTERTokenParamDefine(CFG_SMTP_FROM_FILTERALL); REGISTERTokenParamDefine(CFG_SMTP_FROM_NOFILTER); REGISTERTokenParamDefine(CFG_SMTP_FROM_CORRECT); REGISTERTokenParamDefine(CFG_SMTP_FROM_REJECT); RegisterConditional("COND:EXPIRE:MODE", 2, ConditionalExpire, CTX_NONE); RegisterNamespace("EXPIRE:VALUE", 1, 2, tmplput_ExpireValue, NULL, CTX_NONE); RegisterNamespace("EXPIRE:MODE", 1, 2, tmplput_ExpireMode, NULL, CTX_NONE); RegisterConditional("COND:SERVCFG:THISLOGENABLE", 4, ConditionalServCfgThisLogEnabled, CTX_SRVLOG); RegisterIterator("SERVCFG:LOGENABLE", 0, NULL, iterate_GetSrvLogEnable, NULL, DeleteHash, CTX_SRVLOG, CTX_NONE, IT_NOFLAG); RegisterNamespace("SERVCFG:LOGNAME", 0, 1, tmplput_servcfg_LogName, NULL, CTX_SRVLOG); } void ServerStartModule_SITECONFIG (void) { LoadZoneFiles(); } void ServerShutdownModule_SITECONFIG (void) { DeleteHash(&ZoneHash); } void SessionDestroyModule_SITECONFIG (wcsession *sess) { DeleteHash(&sess->ServCfg); } webcit-8.24-dfsg.orig/feed_generator.c0000644000175000017500000001637112271477123017525 0ustar michaelmichael/* * RSS feed generator (could be adapted in the future to feed both RSS and Atom) * * Copyright (c) 2010-2012 by the citadel.org team * * This program is open source software. You can redistribute it and/or * modify it under the terms of the GNU General Public License, version 3. * * This program 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. */ #include "webcit.h" #include "webserver.h" /* * RSS feed generator -- do one message */ void feed_rss_one_message(long msgnum) { int in_body = 0; int in_messagetext = 0; int found_title = 0; int found_guid = 0; char pubdate[128]; StrBuf *messagetext = NULL; int is_top_level_post = 1; const char *BufPtr = NULL; StrBuf *Line = NewStrBufPlain(NULL, 1024); char buf[1024]; int permalink_hash = 0; /* Phase 1: read the message into memory */ serv_printf("MSG4 %ld", msgnum); serv_getln(buf, sizeof buf); if (buf[0] != '1') return; StrBuf *ServerResponse = NewStrBuf(); while (serv_getln(buf, sizeof buf), strcmp(buf, "000")) { StrBufAppendPrintf(ServerResponse, "%s\n", buf); } /* Phase 2: help SkyNet become self-aware */ BufPtr = NULL; while (StrBufSipLine(Line, ServerResponse, &BufPtr), ((BufPtr!=StrBufNOTNULL)&&(BufPtr!=NULL)) ) { if (in_body) { /* do nothing */ } else if (StrLength(Line) == 0) { ++in_body; } else if ((StrLength(Line) > 5) && (!strncasecmp(ChrPtr(Line), "wefw=", 5))) { is_top_level_post = 0; /* presence of references means it's a reply/comment */ } else if ((StrLength(Line) > 5) && (!strncasecmp(ChrPtr(Line), "msgn=", 5))) { StrBufCutLeft(Line, 5); permalink_hash = ThreadIdHash(Line); } } /* * Phase 3: output the message in RSS form * (suppress replies [comments] if this is a blog room) */ if ( (WC->CurRoom.view != VIEW_BLOG) || (is_top_level_post == 1) ) { wc_printf(""); wc_printf("%s/readfwd?go=", ChrPtr(site_prefix)); urlescputs(ChrPtr(WC->CurRoom.name)); if ((WC->CurRoom.view == VIEW_BLOG) && (permalink_hash != 0)) { wc_printf("?p=%d", permalink_hash); } else { wc_printf("?start_reading_at=%ld", msgnum); } wc_printf(""); BufPtr = NULL; in_body = 0; in_messagetext = 0; while (StrBufSipLine(Line, ServerResponse, &BufPtr), ((BufPtr!=StrBufNOTNULL)&&(BufPtr!=NULL)) ) { safestrncpy(buf, ChrPtr(Line), sizeof buf); /* XML parsers can be picky; strip out nonprintable header characters */ if ((strlen(buf)>=6) && (buf[4]=='=')) { char *p = &buf[5]; while (*p) { if (!isprint(*p)) { *p = 0; } ++p; } } /* Now output fields */ if (in_body) { if (in_messagetext) { StrBufAppendBufPlain(messagetext, buf, -1, 0); StrBufAppendBufPlain(messagetext, HKEY("\r\n"), 0); } else if (IsEmptyStr(buf)) { in_messagetext = 1; } } else if (!strncasecmp(buf, "subj=", 5)) { wc_printf(""); escputs(&buf[5]); wc_printf(""); ++found_title; } else if (!strncasecmp(buf, "exti=", 5)) { wc_printf(""); escputs(&buf[5]); wc_printf(""); ++found_guid; } else if (!strncasecmp(buf, "time=", 5)) { http_datestring(pubdate, sizeof pubdate, atol(&buf[5])); wc_printf("%s", pubdate); } else if (!strncasecmp(buf, "text", 4)) { if (!found_title) { wc_printf("Message #%ld", msgnum); } if (!found_guid) { wc_printf("%ld@%s", msgnum, ChrPtr(WC->serv_info->serv_humannode) ); } wc_printf(""); in_body = 1; messagetext = NewStrBuf(); } } if (in_body) { cdataout((char*)ChrPtr(messagetext)); FreeStrBuf(&messagetext); wc_printf(""); } wc_printf(""); } FreeStrBuf(&Line); FreeStrBuf(&ServerResponse); return; } /* * RSS feed generator -- go through the message list */ void feed_rss_do_messages(void) { wcsession *WCC = WC; int num_msgs = 0; int i; SharedMessageStatus Stat; message_summary *Msg = NULL; memset(&Stat, 0, sizeof Stat); Stat.maxload = INT_MAX; Stat.lowest_found = (-1); Stat.highest_found = (-1); num_msgs = load_msg_ptrs("MSGS ALL", NULL, &Stat, NULL); if (num_msgs < 1) return; i = num_msgs; /* convention is to feed newest-to-oldest */ while (i > 0) { Msg = GetMessagePtrAt(i-1, WCC->summ); if (Msg != NULL) { feed_rss_one_message(Msg->msgnum); } --i; } } /* * Output the room info file of the current room as a for the channel */ void feed_rss_do_room_info_as_description(void) { wc_printf(""); escputs(ChrPtr(WC->CurRoom.name)); /* FIXME use the output of RINF instead */ wc_printf("\r\n"); } /* * Entry point for RSS feed generator */ void feed_rss(void) { char buf[1024]; output_headers(0, 0, 0, 0, 1, 0); hprintf("Content-type: text/xml; charset=utf-8\r\n"); hprintf( "Server: %s / %s\r\n" "Connection: close\r\n" , PACKAGE_STRING, ChrPtr(WC->serv_info->serv_software) ); begin_burst(); wc_printf("" "" "" ); wc_printf(""); escputs(ChrPtr(WC->CurRoom.name)); wc_printf(""); wc_printf(""); escputs(ChrPtr(site_prefix)); wc_printf("/"); serv_puts("RINF"); serv_getln(buf, sizeof buf); if (buf[0] == '1') { wc_printf("\r\n"); while (serv_getln(buf, sizeof buf), strcmp(buf, "000")) { escputs(buf); wc_printf("\r\n"); } wc_printf(""); } wc_printf(""); escputs(ChrPtr(WC->CurRoom.name)); wc_printf(""); escputs(ChrPtr(site_prefix)); wc_printf("/image?name=_roompic_?go="); urlescputs(ChrPtr(WC->CurRoom.name)); wc_printf(""); escputs(ChrPtr(site_prefix)); wc_printf("/\r\n"); feed_rss_do_room_info_as_description(); feed_rss_do_messages(); wc_printf("" "" "\r\n\r\n" ); wDumpContent(0); } /* * Offer the RSS feed meta tag for this room */ void tmplput_rssmeta(StrBuf *Target, WCTemplputParams *TP) { wcsession *WCC = WC; char feed_link[1024]; strcpy(feed_link, "/feed_rss?go="); urlesc(&feed_link[20], sizeof(feed_link) - 20, (char *)ChrPtr(WCC->CurRoom.name) ); StrBufAppendPrintf(Target, "", feed_link ); } /* * Offer the RSS feed button for this room */ void tmplput_rssbutton(StrBuf *Target, WCTemplputParams *TP) { StrBuf *FeedLink = NULL; FeedLink = NewStrBufPlain(HKEY("/feed_rss?go=")); StrBufUrlescAppend(FeedLink, WC->CurRoom.name, NULL); StrBufAppendPrintf(Target, "\"RSS\""); StrBufAppendPrintf(Target, ""); FreeStrBuf(&FeedLink); } void InitModule_RSS (void) { WebcitAddUrlHandler(HKEY("feed_rss"), "", 0, feed_rss, ANONYMOUS|COOKIEUNNEEDED); RegisterNamespace("THISROOM:FEED:RSS", 0, 0, tmplput_rssbutton, NULL, CTX_NONE); RegisterNamespace("THISROOM:FEED:RSSMETA", 0, 0, tmplput_rssmeta, NULL, CTX_NONE); } webcit-8.24-dfsg.orig/tiny_mce/0000755000175000017500000000000012271477123016207 5ustar michaelmichaelwebcit-8.24-dfsg.orig/tiny_mce/tiny_mce_popup.js0000644000175000017500000001234112271477123021600 0ustar michaelmichael // Uncomment and change this document.domain value if you are loading the script cross subdomains // document.domain = 'moxiecode.com'; var tinymce=null,tinyMCEPopup,tinyMCE;tinyMCEPopup={init:function(){var b=this,a,c;a=b.getWin();tinymce=a.tinymce;tinyMCE=a.tinyMCE;b.editor=tinymce.EditorManager.activeEditor;b.params=b.editor.windowManager.params;b.features=b.editor.windowManager.features;b.dom=b.editor.windowManager.createInstance("tinymce.dom.DOMUtils",document);if(b.features.popup_css!==false){b.dom.loadCSS(b.features.popup_css||b.editor.settings.popup_css)}b.listeners=[];b.onInit={add:function(e,d){b.listeners.push({func:e,scope:d})}};b.isWindow=!b.getWindowArg("mce_inline");b.id=b.getWindowArg("mce_window_id");b.editor.windowManager.onOpen.dispatch(b.editor.windowManager,window)},getWin:function(){return(!window.frameElement&&window.dialogArguments)||opener||parent||top},getWindowArg:function(c,b){var a=this.params[c];return tinymce.is(a)?a:b},getParam:function(b,a){return this.editor.getParam(b,a)},getLang:function(b,a){return this.editor.getLang(b,a)},execCommand:function(d,c,e,b){b=b||{};b.skip_focus=1;this.restoreSelection();return this.editor.execCommand(d,c,e,b)},resizeToInnerSize:function(){var a=this;setTimeout(function(){var b=a.dom.getViewPort(window);a.editor.windowManager.resizeBy(a.getWindowArg("mce_width")-b.w,a.getWindowArg("mce_height")-b.h,a.id||window)},10)},executeOnLoad:function(s){this.onInit.add(function(){eval(s)})},storeSelection:function(){this.editor.windowManager.bookmark=tinyMCEPopup.editor.selection.getBookmark(1)},restoreSelection:function(){var a=tinyMCEPopup;if(!a.isWindow&&tinymce.isIE){a.editor.selection.moveToBookmark(a.editor.windowManager.bookmark)}},requireLangPack:function(){var b=this,a=b.getWindowArg("plugin_url")||b.getWindowArg("theme_url");if(a&&b.editor.settings.language&&b.features.translate_i18n!==false&&b.editor.settings.language_load!==false){a+="/langs/"+b.editor.settings.language+"_dlg.js";if(!tinymce.ScriptLoader.isDone(a)){document.write('
    {#fullpage_dlg.meta_props}
     
     
     
     
     
     
    {#fullpage_dlg.langprops}
     
     
     
    {#fullpage_dlg.appearance_textprops}
     
    {#fullpage_dlg.appearance_bgprops}
     
     
    {#fullpage_dlg.appearance_marginprops}
    {#fullpage_dlg.appearance_linkprops}
     
     
       
    {#fullpage_dlg.appearance_style}
     
    webcit-8.24-dfsg.orig/tiny_mce/plugins/fullpage/editor_plugin.js0000644000175000017500000001426212271477123024676 0ustar michaelmichael(function(){var b=tinymce.each,a=tinymce.html.Node;tinymce.create("tinymce.plugins.FullPagePlugin",{init:function(c,d){var e=this;e.editor=c;c.addCommand("mceFullPageProperties",function(){c.windowManager.open({file:d+"/fullpage.htm",width:430+parseInt(c.getLang("fullpage.delta_width",0)),height:495+parseInt(c.getLang("fullpage.delta_height",0)),inline:1},{plugin_url:d,data:e._htmlToData()})});c.addButton("fullpage",{title:"fullpage.desc",cmd:"mceFullPageProperties"});c.onBeforeSetContent.add(e._setContent,e);c.onGetContent.add(e._getContent,e)},getInfo:function(){return{longname:"Fullpage",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/fullpage",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_htmlToData:function(){var f=this._parseHeader(),h={},c,i,g,e=this.editor;function d(l,j){var k=l.attr(j);return k||""}h.fontface=e.getParam("fullpage_default_fontface","");h.fontsize=e.getParam("fullpage_default_fontsize","");i=f.firstChild;if(i.type==7){h.xml_pi=true;g=/encoding="([^"]+)"/.exec(i.value);if(g){h.docencoding=g[1]}}i=f.getAll("#doctype")[0];if(i){h.doctype=""}i=f.getAll("title")[0];if(i&&i.firstChild){h.metatitle=i.firstChild.value}b(f.getAll("meta"),function(m){var k=m.attr("name"),j=m.attr("http-equiv"),l;if(k){h["meta"+k.toLowerCase()]=m.attr("content")}else{if(j=="Content-Type"){l=/charset\s*=\s*(.*)\s*/gi.exec(m.attr("content"));if(l){h.docencoding=l[1]}}}});i=f.getAll("html")[0];if(i){h.langcode=d(i,"lang")||d(i,"xml:lang")}i=f.getAll("link")[0];if(i&&i.attr("rel")=="stylesheet"){h.stylesheet=i.attr("href")}i=f.getAll("body")[0];if(i){h.langdir=d(i,"dir");h.style=d(i,"style");h.visited_color=d(i,"vlink");h.link_color=d(i,"link");h.active_color=d(i,"alink")}return h},_dataToHtml:function(g){var f,d,h,j,k,e=this.editor.dom;function c(n,l,m){n.attr(l,m?m:undefined)}function i(l){if(d.firstChild){d.insert(l,d.firstChild)}else{d.append(l)}}f=this._parseHeader();d=f.getAll("head")[0];if(!d){j=f.getAll("html")[0];d=new a("head",1);if(j.firstChild){j.insert(d,j.firstChild,true)}else{j.append(d)}}j=f.firstChild;if(g.xml_pi){k='version="1.0"';if(g.docencoding){k+=' encoding="'+g.docencoding+'"'}if(j.type!=7){j=new a("xml",7);f.insert(j,f.firstChild,true)}j.value=k}else{if(j&&j.type==7){j.remove()}}j=f.getAll("#doctype")[0];if(g.doctype){if(!j){j=new a("#doctype",10);if(g.xml_pi){f.insert(j,f.firstChild)}else{i(j)}}j.value=g.doctype.substring(9,g.doctype.length-1)}else{if(j){j.remove()}}j=f.getAll("title")[0];if(g.metatitle){if(!j){j=new a("title",1);j.append(new a("#text",3)).value=g.metatitle;i(j)}}if(g.docencoding){j=null;b(f.getAll("meta"),function(l){if(l.attr("http-equiv")=="Content-Type"){j=l}});if(!j){j=new a("meta",1);j.attr("http-equiv","Content-Type");j.shortEnded=true;i(j)}j.attr("content","text/html; charset="+g.docencoding)}b("keywords,description,author,copyright,robots".split(","),function(m){var l=f.getAll("meta"),n,p,o=g["meta"+m];for(n=0;n"))},_parseHeader:function(){return new tinymce.html.DomParser({validate:false,root_name:"#document"}).parse(this.head)},_setContent:function(g,d){var m=this,i,c,h=d.content,f,l="",e=m.editor.dom,j;function k(n){return n.replace(/<\/?[A-Z]+/g,function(o){return o.toLowerCase()})}if(d.format=="raw"&&m.head){return}if(d.source_view&&g.getParam("fullpage_hide_in_source_view")){return}h=h.replace(/<(\/?)BODY/gi,"<$1body");i=h.indexOf("",i);m.head=k(h.substring(0,i+1));c=h.indexOf("\n"}f=m._parseHeader();b(f.getAll("style"),function(n){if(n.firstChild){l+=n.firstChild.value}});j=f.getAll("body")[0];if(j){e.setAttribs(m.editor.getBody(),{style:j.attr("style")||"",dir:j.attr("dir")||"",vLink:j.attr("vlink")||"",link:j.attr("link")||"",aLink:j.attr("alink")||""})}e.remove("fullpage_styles");if(l){e.add(m.editor.getDoc().getElementsByTagName("head")[0],"style",{id:"fullpage_styles"},l);j=e.get("fullpage_styles");if(j.styleSheet){j.styleSheet.cssText=l}}},_getDefaultHeader:function(){var f="",c=this.editor,e,d="";if(c.getParam("fullpage_default_xml_pi")){f+='\n'}f+=c.getParam("fullpage_default_doctype",'');f+="\n\n\n";if(e=c.getParam("fullpage_default_title")){f+=""+e+"\n"}if(e=c.getParam("fullpage_default_encoding")){f+='\n'}if(e=c.getParam("fullpage_default_font_family")){d+="font-family: "+e+";"}if(e=c.getParam("fullpage_default_font_size")){d+="font-size: "+e+";"}if(e=c.getParam("fullpage_default_text_color")){d+="color: "+e+";"}f+="\n\n";return f},_getContent:function(d,e){var c=this;if(!e.source_view||!d.getParam("fullpage_hide_in_source_view")){e.content=tinymce.trim(c.head)+"\n"+tinymce.trim(e.content)+"\n"+tinymce.trim(c.foot)}}});tinymce.PluginManager.add("fullpage",tinymce.plugins.FullPagePlugin)})();webcit-8.24-dfsg.orig/tiny_mce/plugins/fullpage/js/0000755000175000017500000000000012271477123022103 5ustar michaelmichaelwebcit-8.24-dfsg.orig/tiny_mce/plugins/fullpage/js/fullpage.js0000644000175000017500000001774412271477123024255 0ustar michaelmichael/** * fullpage.js * * Copyright 2009, Moxiecode Systems AB * Released under LGPL License. * * License: http://tinymce.moxiecode.com/license * Contributing: http://tinymce.moxiecode.com/contributing */ (function() { tinyMCEPopup.requireLangPack(); var defaultDocTypes = 'XHTML 1.0 Transitional=,' + 'XHTML 1.0 Frameset=,' + 'XHTML 1.0 Strict=,' + 'XHTML 1.1=,' + 'HTML 4.01 Transitional=,' + 'HTML 4.01 Strict=,' + 'HTML 4.01 Frameset='; var defaultEncodings = 'Western european (iso-8859-1)=iso-8859-1,' + 'Central European (iso-8859-2)=iso-8859-2,' + 'Unicode (UTF-8)=utf-8,' + 'Chinese traditional (Big5)=big5,' + 'Cyrillic (iso-8859-5)=iso-8859-5,' + 'Japanese (iso-2022-jp)=iso-2022-jp,' + 'Greek (iso-8859-7)=iso-8859-7,' + 'Korean (iso-2022-kr)=iso-2022-kr,' + 'ASCII (us-ascii)=us-ascii'; var defaultFontNames = 'Arial=arial,helvetica,sans-serif;Courier New=courier new,courier,monospace;Georgia=georgia,times new roman,times,serif;Tahoma=tahoma,arial,helvetica,sans-serif;Times New Roman=times new roman,times,serif;Verdana=verdana,arial,helvetica,sans-serif;Impact=impact;WingDings=wingdings'; var defaultFontSizes = '10px,11px,12px,13px,14px,15px,16px'; function setVal(id, value) { var elm = document.getElementById(id); if (elm) { value = value || ''; if (elm.nodeName == "SELECT") selectByValue(document.forms[0], id, value); else if (elm.type == "checkbox") elm.checked = !!value; else elm.value = value; } }; function getVal(id) { var elm = document.getElementById(id); if (elm.nodeName == "SELECT") return elm.options[elm.selectedIndex].value; if (elm.type == "checkbox") return elm.checked; return elm.value; }; window.FullPageDialog = { changedStyle : function() { var val, styles = tinyMCEPopup.editor.dom.parseStyle(getVal('style')); setVal('fontface', styles['font-face']); setVal('fontsize', styles['font-size']); setVal('textcolor', styles['color']); if (val = styles['background-image']) setVal('bgimage', val.replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1")); else setVal('bgimage', ''); setVal('bgcolor', styles['background-color']); // Reset margin form elements setVal('topmargin', ''); setVal('rightmargin', ''); setVal('bottommargin', ''); setVal('leftmargin', ''); // Expand margin if (val = styles['margin']) { val = val.split(' '); styles['margin-top'] = val[0] || ''; styles['margin-right'] = val[1] || val[0] || ''; styles['margin-bottom'] = val[2] || val[0] || ''; styles['margin-left'] = val[3] || val[0] || ''; } if (val = styles['margin-top']) setVal('topmargin', val.replace(/px/, '')); if (val = styles['margin-right']) setVal('rightmargin', val.replace(/px/, '')); if (val = styles['margin-bottom']) setVal('bottommargin', val.replace(/px/, '')); if (val = styles['margin-left']) setVal('leftmargin', val.replace(/px/, '')); updateColor('bgcolor_pick', 'bgcolor'); updateColor('textcolor_pick', 'textcolor'); }, changedStyleProp : function() { var val, dom = tinyMCEPopup.editor.dom, styles = dom.parseStyle(getVal('style')); styles['font-face'] = getVal('fontface'); styles['font-size'] = getVal('fontsize'); styles['color'] = getVal('textcolor'); styles['background-color'] = getVal('bgcolor'); if (val = getVal('bgimage')) styles['background-image'] = "url('" + val + "')"; else styles['background-image'] = ''; delete styles['margin']; if (val = getVal('topmargin')) styles['margin-top'] = val + "px"; else styles['margin-top'] = ''; if (val = getVal('rightmargin')) styles['margin-right'] = val + "px"; else styles['margin-right'] = ''; if (val = getVal('bottommargin')) styles['margin-bottom'] = val + "px"; else styles['margin-bottom'] = ''; if (val = getVal('leftmargin')) styles['margin-left'] = val + "px"; else styles['margin-left'] = ''; // Serialize, parse and reserialize this will compress redundant styles setVal('style', dom.serializeStyle(dom.parseStyle(dom.serializeStyle(styles)))); this.changedStyle(); }, update : function() { var data = {}; tinymce.each(tinyMCEPopup.dom.select('select,input,textarea'), function(node) { data[node.id] = getVal(node.id); }); tinyMCEPopup.editor.plugins.fullpage._dataToHtml(data); tinyMCEPopup.close(); } }; function init() { var form = document.forms[0], i, item, list, editor = tinyMCEPopup.editor; // Setup doctype select box list = editor.getParam("fullpage_doctypes", defaultDocTypes).split(','); for (i = 0; i < list.length; i++) { item = list[i].split('='); if (item.length > 1) addSelectValue(form, 'doctype', item[0], item[1]); } // Setup fonts select box list = editor.getParam("fullpage_fonts", defaultFontNames).split(';'); for (i = 0; i < list.length; i++) { item = list[i].split('='); if (item.length > 1) addSelectValue(form, 'fontface', item[0], item[1]); } // Setup fontsize select box list = editor.getParam("fullpage_fontsizes", defaultFontSizes).split(','); for (i = 0; i < list.length; i++) addSelectValue(form, 'fontsize', list[i], list[i]); // Setup encodings select box list = editor.getParam("fullpage_encodings", defaultEncodings).split(','); for (i = 0; i < list.length; i++) { item = list[i].split('='); if (item.length > 1) addSelectValue(form, 'docencoding', item[0], item[1]); } // Setup color pickers document.getElementById('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor'); document.getElementById('link_color_pickcontainer').innerHTML = getColorPickerHTML('link_color_pick','link_color'); document.getElementById('visited_color_pickcontainer').innerHTML = getColorPickerHTML('visited_color_pick','visited_color'); document.getElementById('active_color_pickcontainer').innerHTML = getColorPickerHTML('active_color_pick','active_color'); document.getElementById('textcolor_pickcontainer').innerHTML = getColorPickerHTML('textcolor_pick','textcolor'); document.getElementById('stylesheet_browsercontainer').innerHTML = getBrowserHTML('stylesheetbrowser','stylesheet','file','fullpage'); document.getElementById('bgimage_pickcontainer').innerHTML = getBrowserHTML('bgimage_browser','bgimage','image','fullpage'); // Resize some elements if (isVisible('stylesheetbrowser')) document.getElementById('stylesheet').style.width = '220px'; if (isVisible('link_href_browser')) document.getElementById('element_link_href').style.width = '230px'; if (isVisible('bgimage_browser')) document.getElementById('bgimage').style.width = '210px'; // Update form tinymce.each(tinyMCEPopup.getWindowArg('data'), function(value, key) { setVal(key, value); }); FullPageDialog.changedStyle(); // Update colors updateColor('textcolor_pick', 'textcolor'); updateColor('bgcolor_pick', 'bgcolor'); updateColor('visited_color_pick', 'visited_color'); updateColor('active_color_pick', 'active_color'); updateColor('link_color_pick', 'link_color'); }; tinyMCEPopup.onInit.add(init); })(); webcit-8.24-dfsg.orig/tiny_mce/plugins/fullpage/css/0000755000175000017500000000000012271477123022257 5ustar michaelmichaelwebcit-8.24-dfsg.orig/tiny_mce/plugins/fullpage/css/fullpage.css0000644000175000017500000000421412271477123024571 0ustar michaelmichael/* Hide the advanced tab */ #advanced_tab { display: none; } #metatitle, #metakeywords, #metadescription, #metaauthor, #metacopyright { width: 280px; } #doctype, #docencoding { width: 200px; } #langcode { width: 30px; } #bgimage { width: 220px; } #fontface { width: 240px; } #leftmargin, #rightmargin, #topmargin, #bottommargin { width: 50px; } .panel_wrapper div.current { height: 400px; } #stylesheet, #style { width: 240px; } #doctypes { width: 200px; } /* Head list classes */ .headlistwrapper { width: 100%; } .selected { border: 1px solid #0A246A; background-color: #B6BDD2; } .toolbar { width: 100%; } #headlist { width: 100%; margin-top: 3px; font-size: 11px; } #info, #title_element, #meta_element, #script_element, #style_element, #base_element, #link_element, #comment_element, #unknown_element { display: none; } #addmenu { position: absolute; border: 1px solid gray; display: none; z-index: 100; background-color: white; } #addmenu a { display: block; width: 100%; line-height: 20px; text-decoration: none; background-color: white; } #addmenu a:hover { background-color: #B6BDD2; color: black; } #addmenu span { padding-left: 10px; padding-right: 10px; } #updateElementPanel { display: none; } #script_element .panel_wrapper div.current { height: 108px; } #style_element .panel_wrapper div.current { height: 108px; } #link_element .panel_wrapper div.current { height: 140px; } #element_script_value { width: 100%; height: 100px; } #element_comment_value { width: 100%; height: 120px; } #element_style_value { width: 100%; height: 100px; } #element_title, #element_script_src, #element_meta_name, #element_meta_content, #element_base_href, #element_link_href, #element_link_title { width: 250px; } .updateElementButton { margin-top: 3px; } /* MSIE specific styles */ * html .addbutton, * html .removebutton, * html .moveupbutton, * html .movedownbutton { width: 22px; height: 22px; } textarea { height: 55px; } .panel_wrapper div.current {height:420px;}webcit-8.24-dfsg.orig/tiny_mce/plugins/tabfocus/0000755000175000017500000000000012271477123021476 5ustar michaelmichaelwebcit-8.24-dfsg.orig/tiny_mce/plugins/tabfocus/editor_plugin_src.js0000644000175000017500000000555312271477123025557 0ustar michaelmichael/** * editor_plugin_src.js * * Copyright 2009, Moxiecode Systems AB * Released under LGPL License. * * License: http://tinymce.moxiecode.com/license * Contributing: http://tinymce.moxiecode.com/contributing */ (function() { var DOM = tinymce.DOM, Event = tinymce.dom.Event, each = tinymce.each, explode = tinymce.explode; tinymce.create('tinymce.plugins.TabFocusPlugin', { init : function(ed, url) { function tabCancel(ed, e) { if (e.keyCode === 9) return Event.cancel(e); } function tabHandler(ed, e) { var x, i, f, el, v; function find(d) { el = DOM.select(':input:enabled,*[tabindex]'); function canSelectRecursive(e) { return e.nodeName==="BODY" || (e.type != 'hidden' && !(e.style.display == "none") && !(e.style.visibility == "hidden") && canSelectRecursive(e.parentNode)); } function canSelectInOldIe(el) { return el.attributes["tabIndex"].specified || el.nodeName == "INPUT" || el.nodeName == "TEXTAREA"; } function isOldIe() { return tinymce.isIE6 || tinymce.isIE7; } function canSelect(el) { return ((!isOldIe() || canSelectInOldIe(el))) && el.getAttribute("tabindex") != '-1' && canSelectRecursive(el); } each(el, function(e, i) { if (e.id == ed.id) { x = i; return false; } }); if (d > 0) { for (i = x + 1; i < el.length; i++) { if (canSelect(el[i])) return el[i]; } } else { for (i = x - 1; i >= 0; i--) { if (canSelect(el[i])) return el[i]; } } return null; } if (e.keyCode === 9) { v = explode(ed.getParam('tab_focus', ed.getParam('tabfocus_elements', ':prev,:next'))); if (v.length == 1) { v[1] = v[0]; v[0] = ':prev'; } // Find element to focus if (e.shiftKey) { if (v[0] == ':prev') el = find(-1); else el = DOM.get(v[0]); } else { if (v[1] == ':next') el = find(1); else el = DOM.get(v[1]); } if (el) { if (el.id && (ed = tinymce.get(el.id || el.name))) ed.focus(); else window.setTimeout(function() { if (!tinymce.isWebKit) window.focus(); el.focus(); }, 10); return Event.cancel(e); } } } ed.onKeyUp.add(tabCancel); if (tinymce.isGecko) { ed.onKeyPress.add(tabHandler); ed.onKeyDown.add(tabCancel); } else ed.onKeyDown.add(tabHandler); }, getInfo : function() { return { longname : 'Tabfocus', author : 'Moxiecode Systems AB', authorurl : 'http://tinymce.moxiecode.com', infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/tabfocus', version : tinymce.majorVersion + "." + tinymce.minorVersion }; } }); // Register plugin tinymce.PluginManager.add('tabfocus', tinymce.plugins.TabFocusPlugin); })(); webcit-8.24-dfsg.orig/tiny_mce/plugins/tabfocus/editor_plugin.js0000644000175000017500000000316612271477123024706 0ustar michaelmichael(function(){var c=tinymce.DOM,a=tinymce.dom.Event,d=tinymce.each,b=tinymce.explode;tinymce.create("tinymce.plugins.TabFocusPlugin",{init:function(f,g){function e(i,j){if(j.keyCode===9){return a.cancel(j)}}function h(l,p){var j,m,o,n,k;function q(t){n=c.select(":input:enabled,*[tabindex]");function s(v){return v.nodeName==="BODY"||(v.type!="hidden"&&!(v.style.display=="none")&&!(v.style.visibility=="hidden")&&s(v.parentNode))}function i(v){return v.attributes.tabIndex.specified||v.nodeName=="INPUT"||v.nodeName=="TEXTAREA"}function u(){return tinymce.isIE6||tinymce.isIE7}function r(v){return((!u()||i(v)))&&v.getAttribute("tabindex")!="-1"&&s(v)}d(n,function(w,v){if(w.id==l.id){j=v;return false}});if(t>0){for(m=j+1;m=0;m--){if(r(n[m])){return n[m]}}}return null}if(p.keyCode===9){k=b(l.getParam("tab_focus",l.getParam("tabfocus_elements",":prev,:next")));if(k.length==1){k[1]=k[0];k[0]=":prev"}if(p.shiftKey){if(k[0]==":prev"){n=q(-1)}else{n=c.get(k[0])}}else{if(k[1]==":next"){n=q(1)}else{n=c.get(k[1])}}if(n){if(n.id&&(l=tinymce.get(n.id||n.name))){l.focus()}else{window.setTimeout(function(){if(!tinymce.isWebKit){window.focus()}n.focus()},10)}return a.cancel(p)}}}f.onKeyUp.add(e);if(tinymce.isGecko){f.onKeyPress.add(h);f.onKeyDown.add(e)}else{f.onKeyDown.add(h)}},getInfo:function(){return{longname:"Tabfocus",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/tabfocus",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("tabfocus",tinymce.plugins.TabFocusPlugin)})();webcit-8.24-dfsg.orig/tiny_mce/plugins/bbcode/0000755000175000017500000000000012271477123021106 5ustar michaelmichaelwebcit-8.24-dfsg.orig/tiny_mce/plugins/bbcode/editor_plugin_src.js0000644000175000017500000001041112271477123025154 0ustar michaelmichael/** * editor_plugin_src.js * * Copyright 2009, Moxiecode Systems AB * Released under LGPL License. * * License: http://tinymce.moxiecode.com/license * Contributing: http://tinymce.moxiecode.com/contributing */ (function() { tinymce.create('tinymce.plugins.BBCodePlugin', { init : function(ed, url) { var t = this, dialect = ed.getParam('bbcode_dialect', 'punbb').toLowerCase(); ed.onBeforeSetContent.add(function(ed, o) { o.content = t['_' + dialect + '_bbcode2html'](o.content); }); ed.onPostProcess.add(function(ed, o) { if (o.set) o.content = t['_' + dialect + '_bbcode2html'](o.content); if (o.get) o.content = t['_' + dialect + '_html2bbcode'](o.content); }); }, getInfo : function() { return { longname : 'BBCode Plugin', author : 'Moxiecode Systems AB', authorurl : 'http://tinymce.moxiecode.com', infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/bbcode', version : tinymce.majorVersion + "." + tinymce.minorVersion }; }, // Private methods // HTML -> BBCode in PunBB dialect _punbb_html2bbcode : function(s) { s = tinymce.trim(s); function rep(re, str) { s = s.replace(re, str); }; // example: to [b] rep(/(.*?)<\/a>/gi,"[url=$1]$2[/url]"); rep(/(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]"); rep(/(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]"); rep(/(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]"); rep(/(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]"); rep(/(.*?)<\/span>/gi,"[color=$1]$2[/color]"); rep(/(.*?)<\/font>/gi,"[color=$1]$2[/color]"); rep(/(.*?)<\/span>/gi,"[size=$1]$2[/size]"); rep(/(.*?)<\/font>/gi,"$1"); rep(//gi,"[img]$1[/img]"); rep(/(.*?)<\/span>/gi,"[code]$1[/code]"); rep(/(.*?)<\/span>/gi,"[quote]$1[/quote]"); rep(/(.*?)<\/strong>/gi,"[code][b]$1[/b][/code]"); rep(/(.*?)<\/strong>/gi,"[quote][b]$1[/b][/quote]"); rep(/(.*?)<\/em>/gi,"[code][i]$1[/i][/code]"); rep(/(.*?)<\/em>/gi,"[quote][i]$1[/i][/quote]"); rep(/(.*?)<\/u>/gi,"[code][u]$1[/u][/code]"); rep(/(.*?)<\/u>/gi,"[quote][u]$1[/u][/quote]"); rep(/<\/(strong|b)>/gi,"[/b]"); rep(/<(strong|b)>/gi,"[b]"); rep(/<\/(em|i)>/gi,"[/i]"); rep(/<(em|i)>/gi,"[i]"); rep(/<\/u>/gi,"[/u]"); rep(/(.*?)<\/span>/gi,"[u]$1[/u]"); rep(//gi,"[u]"); rep(/]*>/gi,"[quote]"); rep(/<\/blockquote>/gi,"[/quote]"); rep(/
    /gi,"\n"); rep(//gi,"\n"); rep(/
    /gi,"\n"); rep(/

    /gi,""); rep(/<\/p>/gi,"\n"); rep(/ |\u00a0/gi," "); rep(/"/gi,"\""); rep(/</gi,"<"); rep(/>/gi,">"); rep(/&/gi,"&"); return s; }, // BBCode -> HTML from PunBB dialect _punbb_bbcode2html : function(s) { s = tinymce.trim(s); function rep(re, str) { s = s.replace(re, str); }; // example: [b] to rep(/\n/gi,"
    "); rep(/\[b\]/gi,""); rep(/\[\/b\]/gi,""); rep(/\[i\]/gi,""); rep(/\[\/i\]/gi,""); rep(/\[u\]/gi,""); rep(/\[\/u\]/gi,""); rep(/\[url=([^\]]+)\](.*?)\[\/url\]/gi,"$2"); rep(/\[url\](.*?)\[\/url\]/gi,"$1"); rep(/\[img\](.*?)\[\/img\]/gi,""); rep(/\[color=(.*?)\](.*?)\[\/color\]/gi,"$2"); rep(/\[code\](.*?)\[\/code\]/gi,"$1 "); rep(/\[quote.*?\](.*?)\[\/quote\]/gi,"$1 "); return s; } }); // Register plugin tinymce.PluginManager.add('bbcode', tinymce.plugins.BBCodePlugin); })();webcit-8.24-dfsg.orig/tiny_mce/plugins/bbcode/editor_plugin.js0000644000175000017500000000623712271477123024320 0ustar michaelmichael(function(){tinymce.create("tinymce.plugins.BBCodePlugin",{init:function(a,b){var d=this,c=a.getParam("bbcode_dialect","punbb").toLowerCase();a.onBeforeSetContent.add(function(e,f){f.content=d["_"+c+"_bbcode2html"](f.content)});a.onPostProcess.add(function(e,f){if(f.set){f.content=d["_"+c+"_bbcode2html"](f.content)}if(f.get){f.content=d["_"+c+"_html2bbcode"](f.content)}})},getInfo:function(){return{longname:"BBCode Plugin",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/bbcode",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_punbb_html2bbcode:function(a){a=tinymce.trim(a);function b(c,d){a=a.replace(c,d)}b(/(.*?)<\/a>/gi,"[url=$1]$2[/url]");b(/(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]");b(/(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]");b(/(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]");b(/(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]");b(/(.*?)<\/span>/gi,"[color=$1]$2[/color]");b(/(.*?)<\/font>/gi,"[color=$1]$2[/color]");b(/(.*?)<\/span>/gi,"[size=$1]$2[/size]");b(/(.*?)<\/font>/gi,"$1");b(//gi,"[img]$1[/img]");b(/(.*?)<\/span>/gi,"[code]$1[/code]");b(/(.*?)<\/span>/gi,"[quote]$1[/quote]");b(/(.*?)<\/strong>/gi,"[code][b]$1[/b][/code]");b(/(.*?)<\/strong>/gi,"[quote][b]$1[/b][/quote]");b(/(.*?)<\/em>/gi,"[code][i]$1[/i][/code]");b(/(.*?)<\/em>/gi,"[quote][i]$1[/i][/quote]");b(/(.*?)<\/u>/gi,"[code][u]$1[/u][/code]");b(/(.*?)<\/u>/gi,"[quote][u]$1[/u][/quote]");b(/<\/(strong|b)>/gi,"[/b]");b(/<(strong|b)>/gi,"[b]");b(/<\/(em|i)>/gi,"[/i]");b(/<(em|i)>/gi,"[i]");b(/<\/u>/gi,"[/u]");b(/(.*?)<\/span>/gi,"[u]$1[/u]");b(//gi,"[u]");b(/]*>/gi,"[quote]");b(/<\/blockquote>/gi,"[/quote]");b(/
    /gi,"\n");b(//gi,"\n");b(/
    /gi,"\n");b(/

    /gi,"");b(/<\/p>/gi,"\n");b(/ |\u00a0/gi," ");b(/"/gi,'"');b(/</gi,"<");b(/>/gi,">");b(/&/gi,"&");return a},_punbb_bbcode2html:function(a){a=tinymce.trim(a);function b(c,d){a=a.replace(c,d)}b(/\n/gi,"
    ");b(/\[b\]/gi,"");b(/\[\/b\]/gi,"");b(/\[i\]/gi,"");b(/\[\/i\]/gi,"");b(/\[u\]/gi,"");b(/\[\/u\]/gi,"");b(/\[url=([^\]]+)\](.*?)\[\/url\]/gi,'$2');b(/\[url\](.*?)\[\/url\]/gi,'$1');b(/\[img\](.*?)\[\/img\]/gi,'');b(/\[color=(.*?)\](.*?)\[\/color\]/gi,'$2');b(/\[code\](.*?)\[\/code\]/gi,'$1 ');b(/\[quote.*?\](.*?)\[\/quote\]/gi,'$1 ');return a}});tinymce.PluginManager.add("bbcode",tinymce.plugins.BBCodePlugin)})();webcit-8.24-dfsg.orig/tiny_mce/plugins/media/0000755000175000017500000000000012271477123020747 5ustar michaelmichaelwebcit-8.24-dfsg.orig/tiny_mce/plugins/media/editor_plugin_src.js0000644000175000017500000005656712271477123025043 0ustar michaelmichael/** * editor_plugin_src.js * * Copyright 2009, Moxiecode Systems AB * Released under LGPL License. * * License: http://tinymce.moxiecode.com/license * Contributing: http://tinymce.moxiecode.com/contributing */ (function() { var rootAttributes = tinymce.explode('id,name,width,height,style,align,class,hspace,vspace,bgcolor,type'), excludedAttrs = tinymce.makeMap(rootAttributes.join(',')), Node = tinymce.html.Node, mediaTypes, scriptRegExp, JSON = tinymce.util.JSON, mimeTypes; // Media types supported by this plugin mediaTypes = [ // Type, clsid:s, mime types, codebase ["Flash", "d27cdb6e-ae6d-11cf-96b8-444553540000", "application/x-shockwave-flash", "http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"], ["ShockWave", "166b1bca-3f9c-11cf-8075-444553540000", "application/x-director", "http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0"], ["WindowsMedia", "6bf52a52-394a-11d3-b153-00c04f79faa6,22d6f312-b0f6-11d0-94ab-0080c74c7e95,05589fa1-c356-11ce-bf01-00aa0055595a", "application/x-mplayer2", "http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701"], ["QuickTime", "02bf25d5-8c17-4b23-bc80-d3488abddc6b", "video/quicktime", "http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0"], ["RealMedia", "cfcdaa03-8be4-11cf-b84b-0020afbbccfa", "audio/x-pn-realaudio-plugin", "http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"], ["Java", "8ad9c840-044e-11d1-b3e9-00805f499d93", "application/x-java-applet", "http://java.sun.com/products/plugin/autodl/jinstall-1_5_0-windows-i586.cab#Version=1,5,0,0"], ["Silverlight", "dfeaf541-f3e1-4c24-acac-99c30715084a", "application/x-silverlight-2"], ["Iframe"], ["Video"], ["Audio"] ]; function toArray(obj) { var undef, out, i; if (obj && !obj.splice) { out = []; for (i = 0; true; i++) { if (obj[i]) out[i] = obj[i]; else break; } return out; } return obj; }; tinymce.create('tinymce.plugins.MediaPlugin', { init : function(ed, url) { var self = this, lookup = {}, i, y, item, name; function isMediaImg(node) { return node && node.nodeName === 'IMG' && ed.dom.hasClass(node, 'mceItemMedia'); }; self.editor = ed; self.url = url; // Parse media types into a lookup table scriptRegExp = ''; for (i = 0; i < mediaTypes.length; i++) { name = mediaTypes[i][0]; item = { name : name, clsids : tinymce.explode(mediaTypes[i][1] || ''), mimes : tinymce.explode(mediaTypes[i][2] || ''), codebase : mediaTypes[i][3] }; for (y = 0; y < item.clsids.length; y++) lookup['clsid:' + item.clsids[y]] = item; for (y = 0; y < item.mimes.length; y++) lookup[item.mimes[y]] = item; lookup['mceItem' + name] = item; lookup[name.toLowerCase()] = item; scriptRegExp += (scriptRegExp ? '|' : '') + name; } // Handle the media_types setting tinymce.each(ed.getParam("media_types", "video=mp4,m4v,ogv,webm;" + "silverlight=xap;" + "flash=swf,flv;" + "shockwave=dcr;" + "quicktime=mov,qt,mpg,mpeg;" + "shockwave=dcr;" + "windowsmedia=avi,wmv,wm,asf,asx,wmx,wvx;" + "realmedia=rm,ra,ram;" + "java=jar;" + "audio=mp3,ogg" ).split(';'), function(item) { var i, extensions, type; item = item.split(/=/); extensions = tinymce.explode(item[1].toLowerCase()); for (i = 0; i < extensions.length; i++) { type = lookup[item[0].toLowerCase()]; if (type) lookup[extensions[i]] = type; } }); scriptRegExp = new RegExp('write(' + scriptRegExp + ')\\(([^)]+)\\)'); self.lookup = lookup; ed.onPreInit.add(function() { // Allow video elements ed.schema.addValidElements('object[id|style|width|height|classid|codebase|*],param[name|value],embed[id|style|width|height|type|src|*],video[*],audio[*],source[*]'); // Convert video elements to image placeholder ed.parser.addNodeFilter('object,embed,video,audio,script,iframe', function(nodes) { var i = nodes.length; while (i--) self.objectToImg(nodes[i]); }); // Convert image placeholders to video elements ed.serializer.addNodeFilter('img', function(nodes, name, args) { var i = nodes.length, node; while (i--) { node = nodes[i]; if ((node.attr('class') || '').indexOf('mceItemMedia') !== -1) self.imgToObject(node, args); } }); }); ed.onInit.add(function() { // Display "media" instead of "img" in element path if (ed.theme && ed.theme.onResolveName) { ed.theme.onResolveName.add(function(theme, path_object) { if (path_object.name === 'img' && ed.dom.hasClass(path_object.node, 'mceItemMedia')) path_object.name = 'media'; }); } // Add contect menu if it's loaded if (ed && ed.plugins.contextmenu) { ed.plugins.contextmenu.onContextMenu.add(function(plugin, menu, element) { if (element.nodeName === 'IMG' && element.className.indexOf('mceItemMedia') !== -1) menu.add({title : 'media.edit', icon : 'media', cmd : 'mceMedia'}); }); } }); // Register commands ed.addCommand('mceMedia', function() { var data, img; img = ed.selection.getNode(); if (isMediaImg(img)) { data = ed.dom.getAttrib(img, 'data-mce-json'); if (data) { data = JSON.parse(data); // Add some extra properties to the data object tinymce.each(rootAttributes, function(name) { var value = ed.dom.getAttrib(img, name); if (value) data[name] = value; }); data.type = self.getType(img.className).name.toLowerCase(); } } if (!data) { data = { type : 'flash', video: {sources:[]}, params: {} }; } ed.windowManager.open({ file : url + '/media.htm', width : 430 + parseInt(ed.getLang('media.delta_width', 0)), height : 500 + parseInt(ed.getLang('media.delta_height', 0)), inline : 1 }, { plugin_url : url, data : data }); }); // Register buttons ed.addButton('media', {title : 'media.desc', cmd : 'mceMedia'}); // Update media selection status ed.onNodeChange.add(function(ed, cm, node) { cm.setActive('media', isMediaImg(node)); }); }, convertUrl : function(url, force_absolute) { var self = this, editor = self.editor, settings = editor.settings, urlConverter = settings.url_converter, urlConverterScope = settings.url_converter_scope || self; if (!url) return url; if (force_absolute) return editor.documentBaseURI.toAbsolute(url); return urlConverter.call(urlConverterScope, url, 'src', 'object'); }, getInfo : function() { return { longname : 'Media', author : 'Moxiecode Systems AB', authorurl : 'http://tinymce.moxiecode.com', infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/media', version : tinymce.majorVersion + "." + tinymce.minorVersion }; }, /** * Converts the JSON data object to an img node. */ dataToImg : function(data, force_absolute) { var self = this, editor = self.editor, baseUri = editor.documentBaseURI, sources, attrs, img, i; data.params.src = self.convertUrl(data.params.src, force_absolute); attrs = data.video.attrs; if (attrs) attrs.src = self.convertUrl(attrs.src, force_absolute); if (attrs) attrs.poster = self.convertUrl(attrs.poster, force_absolute); sources = toArray(data.video.sources); if (sources) { for (i = 0; i < sources.length; i++) sources[i].src = self.convertUrl(sources[i].src, force_absolute); } img = self.editor.dom.create('img', { id : data.id, style : data.style, align : data.align, src : self.editor.theme.url + '/img/trans.gif', 'class' : 'mceItemMedia mceItem' + self.getType(data.type).name, 'data-mce-json' : JSON.serialize(data, "'") }); img.width = data.width || (data.type == 'audio' ? "300" : "320"); img.height = data.height || (data.type == 'audio' ? "32" : "240"); return img; }, /** * Converts the JSON data object to a HTML string. */ dataToHtml : function(data, force_absolute) { return this.editor.serializer.serialize(this.dataToImg(data, force_absolute), {forced_root_block : '', force_absolute : force_absolute}); }, /** * Converts the JSON data object to a HTML string. */ htmlToData : function(html) { var fragment, img, data; data = { type : 'flash', video: {sources:[]}, params: {} }; fragment = this.editor.parser.parse(html); img = fragment.getAll('img')[0]; if (img) { data = JSON.parse(img.attr('data-mce-json')); data.type = this.getType(img.attr('class')).name.toLowerCase(); // Add some extra properties to the data object tinymce.each(rootAttributes, function(name) { var value = img.attr(name); if (value) data[name] = value; }); } return data; }, /** * Get type item by extension, class, clsid or mime type. * * @method getType * @param {String} value Value to get type item by. * @return {Object} Type item object or undefined. */ getType : function(value) { var i, values, typeItem; // Find type by checking the classes values = tinymce.explode(value, ' '); for (i = 0; i < values.length; i++) { typeItem = this.lookup[values[i]]; if (typeItem) return typeItem; } }, /** * Converts a tinymce.html.Node image element to video/object/embed. */ imgToObject : function(node, args) { var self = this, editor = self.editor, video, object, embed, iframe, name, value, data, source, sources, params, param, typeItem, i, item, mp4Source, replacement, posterSrc, style, audio; // Adds the flash player function addPlayer(video_src, poster_src) { var baseUri, flashVars, flashVarsOutput, params, flashPlayer; flashPlayer = editor.getParam('flash_video_player_url', self.convertUrl(self.url + '/moxieplayer.swf')); if (flashPlayer) { baseUri = editor.documentBaseURI; data.params.src = flashPlayer; // Convert the movie url to absolute urls if (editor.getParam('flash_video_player_absvideourl', true)) { video_src = baseUri.toAbsolute(video_src || '', true); poster_src = baseUri.toAbsolute(poster_src || '', true); } // Generate flash vars flashVarsOutput = ''; flashVars = editor.getParam('flash_video_player_flashvars', {url : '$url', poster : '$poster'}); tinymce.each(flashVars, function(value, name) { // Replace $url and $poster variables in flashvars value value = value.replace(/\$url/, video_src || ''); value = value.replace(/\$poster/, poster_src || ''); if (value.length > 0) flashVarsOutput += (flashVarsOutput ? '&' : '') + name + '=' + escape(value); }); if (flashVarsOutput.length) data.params.flashvars = flashVarsOutput; params = editor.getParam('flash_video_player_params', { allowfullscreen: true, allowscriptaccess: true }); tinymce.each(params, function(value, name) { data.params[name] = "" + value; }); } }; data = node.attr('data-mce-json'); if (!data) return; data = JSON.parse(data); typeItem = this.getType(node.attr('class')); style = node.attr('data-mce-style') if (!style) { style = node.attr('style'); if (style) style = editor.dom.serializeStyle(editor.dom.parseStyle(style, 'img')); } // Handle iframe if (typeItem.name === 'Iframe') { replacement = new Node('iframe', 1); tinymce.each(rootAttributes, function(name) { var value = node.attr(name); if (name == 'class' && value) value = value.replace(/mceItem.+ ?/g, ''); if (value && value.length > 0) replacement.attr(name, value); }); for (name in data.params) replacement.attr(name, data.params[name]); replacement.attr({ style: style, src: data.params.src }); node.replace(replacement); return; } // Handle scripts if (this.editor.settings.media_use_script) { replacement = new Node('script', 1).attr('type', 'text/javascript'); value = new Node('#text', 3); value.value = 'write' + typeItem.name + '(' + JSON.serialize(tinymce.extend(data.params, { width: node.attr('width'), height: node.attr('height') })) + ');'; replacement.append(value); node.replace(replacement); return; } // Add HTML5 video element if (typeItem.name === 'Video' && data.video.sources[0]) { // Create new object element video = new Node('video', 1).attr(tinymce.extend({ id : node.attr('id'), width: node.attr('width'), height: node.attr('height'), style : style }, data.video.attrs)); // Get poster source and use that for flash fallback if (data.video.attrs) posterSrc = data.video.attrs.poster; sources = data.video.sources = toArray(data.video.sources); for (i = 0; i < sources.length; i++) { if (/\.mp4$/.test(sources[i].src)) mp4Source = sources[i].src; } if (!sources[0].type) { video.attr('src', sources[0].src); sources.splice(0, 1); } for (i = 0; i < sources.length; i++) { source = new Node('source', 1).attr(sources[i]); source.shortEnded = true; video.append(source); } // Create flash fallback for video if we have a mp4 source if (mp4Source) { addPlayer(mp4Source, posterSrc); typeItem = self.getType('flash'); } else data.params.src = ''; } // Add HTML5 audio element if (typeItem.name === 'Audio' && data.video.sources[0]) { // Create new object element audio = new Node('audio', 1).attr(tinymce.extend({ id : node.attr('id'), width: node.attr('width'), height: node.attr('height'), style : style }, data.video.attrs)); // Get poster source and use that for flash fallback if (data.video.attrs) posterSrc = data.video.attrs.poster; sources = data.video.sources = toArray(data.video.sources); if (!sources[0].type) { audio.attr('src', sources[0].src); sources.splice(0, 1); } for (i = 0; i < sources.length; i++) { source = new Node('source', 1).attr(sources[i]); source.shortEnded = true; audio.append(source); } data.params.src = ''; } // Do we have a params src then we can generate object if (data.params.src) { // Is flv movie add player for it if (/\.flv$/i.test(data.params.src)) addPlayer(data.params.src, ''); if (args && args.force_absolute) data.params.src = editor.documentBaseURI.toAbsolute(data.params.src); // Create new object element object = new Node('object', 1).attr({ id : node.attr('id'), width: node.attr('width'), height: node.attr('height'), style : style }); tinymce.each(rootAttributes, function(name) { if (data[name] && name != 'type') object.attr(name, data[name]); }); // Add params for (name in data.params) { param = new Node('param', 1); param.shortEnded = true; value = data.params[name]; // Windows media needs to use url instead of src for the media URL if (name === 'src' && typeItem.name === 'WindowsMedia') name = 'url'; param.attr({name: name, value: value}); object.append(param); } // Setup add type and classid if strict is disabled if (this.editor.getParam('media_strict', true)) { object.attr({ data: data.params.src, type: typeItem.mimes[0] }); } else { object.attr({ classid: "clsid:" + typeItem.clsids[0], codebase: typeItem.codebase }); embed = new Node('embed', 1); embed.shortEnded = true; embed.attr({ id: node.attr('id'), width: node.attr('width'), height: node.attr('height'), style : style, type: typeItem.mimes[0] }); for (name in data.params) embed.attr(name, data.params[name]); tinymce.each(rootAttributes, function(name) { if (data[name] && name != 'type') embed.attr(name, data[name]); }); object.append(embed); } // Insert raw HTML if (data.object_html) { value = new Node('#text', 3); value.raw = true; value.value = data.object_html; object.append(value); } // Append object to video element if it exists if (video) video.append(object); } if (video) { // Insert raw HTML if (data.video_html) { value = new Node('#text', 3); value.raw = true; value.value = data.video_html; video.append(value); } } if (audio) { // Insert raw HTML if (data.video_html) { value = new Node('#text', 3); value.raw = true; value.value = data.video_html; audio.append(value); } } if (video || audio || object) node.replace(video || audio || object); else node.remove(); }, /** * Converts a tinymce.html.Node video/object/embed to an img element. * * The video/object/embed will be converted into an image placeholder with a JSON data attribute like this: * * * The JSON structure will be like this: * {'params':{'flashvars':'something','quality':'high','src':'someurl'}, 'video':{'sources':[{src: 'someurl', type: 'video/mp4'}]}} */ objectToImg : function(node) { var object, embed, video, iframe, img, name, id, width, height, style, i, html, param, params, source, sources, data, type, lookup = this.lookup, matches, attrs, urlConverter = this.editor.settings.url_converter, urlConverterScope = this.editor.settings.url_converter_scope; function getInnerHTML(node) { return new tinymce.html.Serializer({ inner: true, validate: false }).serialize(node); }; // If node isn't in document if (!node.parent) return; // Handle media scripts if (node.name === 'script') { if (node.firstChild) matches = scriptRegExp.exec(node.firstChild.value); if (!matches) return; type = matches[1]; data = {video : {}, params : JSON.parse(matches[2])}; width = data.params.width; height = data.params.height; } // Setup data objects data = data || { video : {}, params : {} }; // Setup new image object img = new Node('img', 1); img.attr({ src : this.editor.theme.url + '/img/trans.gif' }); // Video element name = node.name; if (name === 'video' || name == 'audio') { video = node; object = node.getAll('object')[0]; embed = node.getAll('embed')[0]; width = video.attr('width'); height = video.attr('height'); id = video.attr('id'); data.video = {attrs : {}, sources : []}; // Get all video attributes attrs = data.video.attrs; for (name in video.attributes.map) attrs[name] = video.attributes.map[name]; source = node.attr('src'); if (source) data.video.sources.push({src : urlConverter.call(urlConverterScope, source, 'src', node.name)}); // Get all sources sources = video.getAll("source"); for (i = 0; i < sources.length; i++) { source = sources[i].remove(); data.video.sources.push({ src: urlConverter.call(urlConverterScope, source.attr('src'), 'src', 'source'), type: source.attr('type'), media: source.attr('media') }); } // Convert the poster URL if (attrs.poster) attrs.poster = urlConverter.call(urlConverterScope, attrs.poster, 'poster', node.name); } // Object element if (node.name === 'object') { object = node; embed = node.getAll('embed')[0]; } // Embed element if (node.name === 'embed') embed = node; // Iframe element if (node.name === 'iframe') { iframe = node; type = 'Iframe'; } if (object) { // Get width/height width = width || object.attr('width'); height = height || object.attr('height'); style = style || object.attr('style'); id = id || object.attr('id'); // Get all object params params = object.getAll("param"); for (i = 0; i < params.length; i++) { param = params[i]; name = param.remove().attr('name'); if (!excludedAttrs[name]) data.params[name] = param.attr('value'); } data.params.src = data.params.src || object.attr('data'); } if (embed) { // Get width/height width = width || embed.attr('width'); height = height || embed.attr('height'); style = style || embed.attr('style'); id = id || embed.attr('id'); // Get all embed attributes for (name in embed.attributes.map) { if (!excludedAttrs[name] && !data.params[name]) data.params[name] = embed.attributes.map[name]; } } if (iframe) { // Get width/height width = iframe.attr('width'); height = iframe.attr('height'); style = style || iframe.attr('style'); id = iframe.attr('id'); tinymce.each(rootAttributes, function(name) { img.attr(name, iframe.attr(name)); }); // Get all iframe attributes for (name in iframe.attributes.map) { if (!excludedAttrs[name] && !data.params[name]) data.params[name] = iframe.attributes.map[name]; } } // Use src not movie if (data.params.movie) { data.params.src = data.params.src || data.params.movie; delete data.params.movie; } // Convert the URL to relative/absolute depending on configuration if (data.params.src) data.params.src = urlConverter.call(urlConverterScope, data.params.src, 'src', 'object'); if (video) { if (node.name === 'video') type = lookup.video.name; else if (node.name === 'audio') type = lookup.audio.name; } if (object && !type) type = (lookup[(object.attr('clsid') || '').toLowerCase()] || lookup[(object.attr('type') || '').toLowerCase()] || {}).name; if (embed && !type) type = (lookup[(embed.attr('type') || '').toLowerCase()] || {}).name; // Replace the video/object/embed element with a placeholder image containing the data node.replace(img); // Remove embed if (embed) embed.remove(); // Serialize the inner HTML of the object element if (object) { html = getInnerHTML(object.remove()); if (html) data.object_html = html; } // Serialize the inner HTML of the video element if (video) { html = getInnerHTML(video.remove()); if (html) data.video_html = html; } // Set width/height of placeholder img.attr({ id : id, 'class' : 'mceItemMedia mceItem' + (type || 'Flash'), style : style, width : width || (node.name == 'audio' ? "300" : "320"), height : height || (node.name == 'audio' ? "32" : "240"), "data-mce-json" : JSON.serialize(data, "'") }); } }); // Register plugin tinymce.PluginManager.add('media', tinymce.plugins.MediaPlugin); })();webcit-8.24-dfsg.orig/tiny_mce/plugins/media/moxieplayer.swf0000644000175000017500000010221312271477123024025 0ustar michaelmichaelCWS x xS7~&7IӽM7 ]-P -;mn[hDP7D"" JlHA$7-~y<ܹggf|fn#Ŝ(PT zyQ5r.{H/mDcMu9zTZ,uII&MJh4U$TI `\k7&Ԛbr^sRezK2кzS5Y^d6j-$uesFSޒ*cqI JcلICW7WvOKڐ)7"Նƈp,\hK2wb&d,/8q xvE՗VW+ IKprI5ɅIsێRbG^|'^uIԝʧݻ7J.J!? ~JST򢪚jccap~DMQ~{Bh0Pb="ՉCmGbmBfdwy,Ywer!GdibTUn ~+ U"#,ƺ[Dl\(՗M0kA\*{]_o66{PR_ז"ChW۞jh;UmTI; m-vTGFԑejGd [ՐS=d1)F[fїVHV21E/2Gd"e9,Mj!Zkq" &C'GT \jSC _"Hj#h\e"#xjU$G"gZHL#vpPYe̖vx'1K:"U.F\+ kEh6Z/'в&\79+n$$PY-[zu3Sȑ4gѶ%Gewfz3Z'?{ Gjo*#-v.MP#ChVsZ*[/ G^JeMk Pe@|mdA|mgB<%L~J[Gk7&Vi} g[IŝZj j}P}AK^W|{: H}VFv@G7M1\WU[ Zۡz<iَB;jN-A)npRA8TP* s0H=p2Sqf9Jk Y𺭞]GwrLzsHg=}C 3TJ4+o3mtemr69Z5jw.b9kr& G5jUZvԞ;keqz3whfQQ?c2>YDO ܁ٮS!5j32v[5vxjr~/WўZuk=~ Z}L{Tks*^rP*:9+"ħ1?[oo#ׁ䧛^>a#d7( |_2rCl)[ F'SFtUWu𕯔<ʷMC/x%7Ϟz 帥x'}߈SX`c??^=ؚ_>;/8g~WVJ[}{eߗ];uky_ˬ~dn([O-E}5nֽac 8ë=n;bJlÄKc/|~Ӥ>1ٰwAгN^w*Y<]˒GȼϲpBXfj>?ʆn[1wGb>}3%ڧֶz9țtNe~AǎL8pYg+6~UrϙY/s6M &l^[:)9wjg{dѡE'5ih|Ξwoe뺉G3E_6|,_ uT?M3@Ď'~E5w{|ˁ me|NKs߾g'6uL܀cIDVO|v_dK9G~6s{?{#~<={ʸ[':.n~ܞO.tǼ~^ڼ0Qˉh'?4!ǿ|vlWGN~aT6W;chڐͯ [ڪ/1ظ/tҲ130}Sh?}{eWR.瘽wg7.ECӌ5s,.1~m9Xg S'wi||ʧrNVҞs窩Y_:=v^>Ǜ[M?νu[WRV7Dw^3m-;\U؇AK&_xqnufjNkڟsrÍU>y,9 (V$]O=vOQrɊ.כr熱u/QYp3t-Mn~\Zsҹw `/xSHؑY_xC?ݚS3^zOOw~i땉7ooxcNervg᫟9?һm*ZTwp\/vܯۙOlna\}}Uܺsw]}quC7 .n9Zc}}Ď}WN{G ?cW5N4ݘ3|nӦޣ5 9]y6E1+}'M+r~;34 fl3wcb nw'=WmȘ|keїkehbfx:eUO%KSFц|%a{?޺;},'&ݽˢ3D-sV?S󥉽Lŝ{KgL՞++VX4é%>v^uW7mȢu3.24fs^sp<`L̺N ۽Co Cՙ$OـfjjNc¿5ÔcĪo4eH4k"iquN U\@jQ"/;~|9u=lwqWĻ8XQo듏xZv|۷BB7~Z;9}#Rf.MMYOPg*r/=#>Iny%^UZm/&3R;J ~w7\3~Pm₴s޷Y+==RsQc~QZŐ.t[3a˗ZÌND /m8'FV8ttg?&͹Nⅷs'M]x}sclgCO-*0wyů*_z셣Cqcrn:D_3iUL>/2̫J]#UɆڴ>JJy礟;rzb_Y^[(Zzh*O4#;{+'6}4+w1O^[k pev| Qb7\=6[(pc{C^OX kxω!{O ͩպm/}!t}_wR5coL{/熓UU{~ai;>^^]eTo>}e~-E|Wԍ~Z:z#NW}Ⳛ5b? QwW]S ϳ7\T]ټݩ u/{3?ud†Q- cڈ?x鵰m.Id7YuG$I4?em},u*>;/<ۡ,LrwH#n{<}Q¦W>>*PRtqٯ|ct?^+,M?Zє?8O=hէ}5Nt ' /LydĪogeݪ-)*=]=odA||̟]P1/.ֆj5wSIszhjp3Q[Mcn8.n J#y 6VVTS6`eszÉyPԏO.k)g.q-s׏14U8|6z 5_9Ceqlo<E~l+ȿ= xZ w7>#,uk[C/f^xٛY.?8o-{݇vkU/k:Bxcm^رC>Eh,n:ly} ˚ {d-G7G?7k#{n{bˏa>~Ï[216|a͐v?6bś_US0y_jCJcab=?e3fʯEqfұ_փJ秾 ޒ^+ 1B:gDzK$:[Zc F˝Ϟîn tCo&H,zS K^U[e4]T5+[qGY1 ƪAVяV38}uR[ N4&~j,*6VX*,pv7t> BE8<.(7EY#17~q‹ *\q0J/ҽxG1W So*[Ws+;֧v0Qk"P@NZeFeU"0dTJq1כ TU&l0LL#EJ ",6kMan(3,pd ohM;PPC *&H^H2@mE4 mQFH0XNt.hQR܌upt#doY߿O~?<=T8t6f`a4t0ҋ5h@N'LNW^%Š5 inzG\*K~eUu#.isUg@?35:+`".W1 Ń[|6cEQ܅OOI  faTn V%NbE_X;bդ zbcC  ) ({pӹO9iG|e $_D5Ub{.  GY!厲Xi.yP -Uɀ6dˠzKĵ=H0{v]P+դt-kon;Rǭ8pfqAM\TfadXW[PRRa,K Q\ڒJCuAkwjнfQ: i 1ܩb܍e%ڌZΐUYju@ᒙ*%3Q'<ڠ4pIQCJJS_Uk*3Y2lbԩT&955INP3Lr&P)teLzfHd2ҳҙd=CJ,c`E,]2U,3e&L5jXI-YTY2,2Xe&2Xf:`H2M𣈕Xfd# !VܟD/ O s_  U+W? 7#7 Gpt ܿ:usJP2) R!f~,$TPNؾ4l}uyFOȄb#,p_F4o7=FŮǗxHS[چEځGކvh@~,{T >L ?@H@6 aJ Q<&@~-':ȝsyCLF &Z 7'hO.2br8SsxKSKeSHͥFKYN.4ˑ\ 77g'rg!wC.,Gg %B^Qȧ L zh(_HPP P  !^(2UU"LEdK"ш&U'D-ڪsJ-ڇT52lY:cuRNr[6~ѻٺg:OΓ⼭56xQTW *D(Ĉw Y(C+>Wf*Y)TeʥFhӠ4tx蛎*3l:eDYVznVj&dL|A, ?r%> w}O\^n4e\,؞Ccb*l,)^%` /cCq8#`{zq:- Wh{#m؋ ?hl?`g[{}#ۛ؋ P^AXntv \Na#@M'Wwnv$c;tsGCla..n>\"Y{rCI;qu#q?ŊXg<Uw"z 뮉z GVH\{@eQF#ŕZFX6[tJn˝ncsev7n%rNqnvN7}VnwVawCpz`7+gd?R2_ƒ+CYQ]L*BJ !ț SOkh&478}pkYx5s5\m\}u3H͋H%@i%,E\">`>tiאnv_ /~/+ҙ8 n919XC O{H-h\ql q)4rZuDGKqO\H?v:nZx5YGr}펷.tsNД gp%K[U]^CmO>fDS밮]@jЅhLW3Wj],G g!s3m)-<:BX/8X]߼M$y9 0hc#rZ7rThkg(qޫ d1$ߠm^;chCP?5ZCbN'0:@69|1_0vƁg{3DAl'I&Yl-5=ޑ)+h)>]:~@fFم abft\J`-ien~оx#wȃ*ر(IJLecEJ5$2Jm8^Q)X1VQ)<%cxJf=J}*אs,ޯR1"/6_zRnSZcblHb:A yp*;N.XT* jwȡa+Ix>o# [Rpŷsdrhi "ĤZZbA,&Ì;,j2uʿ_$o}DMV Y%RӤLJToyej7]qkQ'6jMu5|QsII"zzPY)=[,ͩn.j5h B'>MX-FHꦤ@w S)E1b֋$Xw,^Kl!H ,Y +e=e4˄^ gb=дa ˺σi?yph)&ݙ\cȵ+&#/oMD(!҃2Ez 1ȫDX:-?bL o+CHh"Ho^hJ_sx(cE[`0 9VU4h_5"m٢)Q/Hk3)ww$E5h>|Խ{aT%ŀp cA $` ޲ wΗU8?ΟW!Jtޜ78l^ ~;TK\;4E"3z?CJN6\5 Y*ޭآ^>W%.런RE] b09YVjd/C Q{-π!1Ĺ",_LH#&7XVG ,*׾Dٮ'5v ȡՙ)UTQzr•URAKp=:9WbVI+R)Yc˃݂J?eR-ly=K32 V/)O Y;D^ab*R8DT4QȢtL.OiOƂ[)l5CQ_iXB氾_ W8^6?Yix'J&s流c=C"Y<;qHn@g$MsJJnS`Ĩa@VyN`-_>mcΕމtrNι"n-i= 9<)8KJ$=]: k{1Np +I0α @t]ӽ;̑Hvl8KG^;9SS+%:SFYԸA@Mh-zK#k* T邸 ^PB{ 1tPk5$S]ub38 T? m 0V!$9^&Ύ7 N-Ū?c}1du1U;Jp80nsH$5L"p`4`c0ܘ<٭ݠ bl G&9 <g J3!("' #Zb.G20ȧrp:`A傑k9T x6wc-򀲠 Z`=IHqhuFG{x(k MNfMI.@V^1&zhVuUefYV[U]-~5ԖcocmH! ˭Lm#aɻs58c5T#;;c09yjeb+ňVOb$@nE< _£U=x:L/޹=E[QZ[EZ[AN5Z\8"h2J/2"婡;s}j >'Z*󁇹1کLY?K瑸^)uX-% K cmWb*[">^C@ |j_>9\8m>deu" mUJeb'ֽ HVUW3~#㢍=uh mI#<Ί <~y,RGXXV0֖i e*d5[/e0 đlж昂8{*2"82lm!OZkdD|N]fmۊ y+9mؑ'Vӻe&22E&Z,st`* .A΄KzG;㱜.*Cu947GA8dxb(e14N2 tu2\R1=^dKf: JUpDiJ& ҬTͤf2d$cHi*X3`LFVJg2S20 Jdee:σ뙯Ժ%&%E*JOM EZv"1-LeT)"!D{-{= `I%,M0H,"OV1RXڟ,5av TY$%򈊥,ztY,ַӝeX2XT=XKeQ?Xz Kb,E,]CYz83 ̔Dzt Kci=W"K;ХtKg ,]WJOdiK[XI,aOhKOgi΂?X1Fŀ1Jb( hQRBT25b *~^`CB`b)K'fx /ۓًXXBG᭙Up u \b\ rM,E{a*k~g͠ĔJLÚzՀC} 4xORL QX/ |~)v1I7-AHE@^Ƒ+D0r#@RH DR` {(0݆we } G ?Or@s<(_,@yB ȓyJ O 7@@@^ȋyI yE ȟ@`o /Ylx.eZ:;-RRQ K($˥L̥ΥL`Kn2@“ ȥR &O,Pp5z yʥ(䓒KS `!)Wz\5.H$<ׅ(e! Py` O(QCIQD' :k(_GC`.N0nc&cmꀺT(Pa(b%y .Bn v!C)[!^ab +#h ¢@18xi`CI;>b +ݬOǰb0,rH $ A:FPJ\5+mhe10y Xnx?p|KBU}rbZ@Ѩ-|eyq^ZoK mq= dYɐ5S'd lo&/ PT@06DYfc'7V.^M$.)MTCYM\W7fp-U!kh4ggHK}ti\n;H 1Xc!Ԇi6r , QXQ,8@g6sYCJ./˄:qqbhOa\/ rs!p(.e[WOg E*Hy~MN7-yy30g,ABIc޶՛\0騇}H=mļ}mC_cL:x '<+} ,}0WS @`9׏ Š`9׿a^T,q܀ s<%D Nl.h"m[^L, ptki(ۍ|V^噛_+ۆI;OQ=vXaeEMd{~ vno;<{ٞ0IL?<\0"LLOA]P(*< vvS} i`uf)mm0i/2~ h?*P+Uڪ-zQhCfajՂ_<%/E 5 uGiĵ/nԀum$np4^8Y+f0X>^P|'}J7G0=I ӯ́^1)<~|7Ē߫Bau ^b0Ԉk/#j7m^Be[Et7kg4vt7-]k|;ӶI9`4²};xs oE4ˋT,C_A5%WєlԳrGkP f(MIF-5  5JG!Z(+,uk L6yId6;zӸƶ6rtQV_햚KT2!c,ߖFCuQ-l·^N#ċX@ \&rahmߊg8ʺ oRg"$dVU0UN`Lr(/.!;--ٹirǾhGȷXmm2JIe%'B.RJw RvQiV[ȃy"/l"bb9+R@VβYI#.XY4+ Y C*W<)R(o Prج/A1D߅tE^2)<`΀6z9Bx!a=𨆦x <4!K"e fEy1øPR*.r:)Eg;ZUҶ^0JOLL6JŶH3hX"bP(B.6JATt/[B$ %p·Q`>a  ^VzڕSO6[zU O?:D5obr9FY@uu-"L4Jz#71ۘWاN0jGy*U\C89 1_ʁ?\FGk1_xxXxȜg>di Yr%y_y2!b:#X2R}u?M Iv]l,$\8 &Eu0H5x q?dK%5Ln\xyK?d÷`ޢOM+um!fDR<\6b]UZU YW!j_ق#@6pP>9!L&{?\f8꠼79 CAd έL2!#䱦R.>v2C/Շs"HV^?H69~bzjX Gffݿ@3-Rᒙ!?NIe<,=Dܬ Lr2MNSPr*3?9#=U}[@A7wɤf~fefJ1^gRUY 淅3)j&5Uf̤±kLjV*8ded1iNhys1iiNKL #&-35 .Yj>`թpL9{&=F[-sLzFr*\@b2Tp*=սEd@6<$, $tg2).i*Ž> 7]" KoNNKVu^ؖځ R;ēA]a (,GhP*kZ #ertr 6ڈQ7MIJ"+YQ:+AeÐl8JFqXI+JLd%V2Lf%SY V(@^- WK!9c%fUK^ Zj %?%pȮeEw5`bK4:W 5)1#S Y\*1@La*S!)1ˆ #"1l4:a3P$]vJ,(YPr2dDp+#J- ( ̗`i{S7UrzUԓr4IXV-My@;:`,H^4SohzX] ɵ\ɕ#Jr" ZM5ZKFr#Wɵ\ȵ\4rN3ɵ ,6oy 6-oS,[ߞoK %2{^o+*wmZoo7[uOto |:o6bذ/`Ì? 1lXbX'#@ݐ<0R |)(Oy"<838F^!y6`&`c|?,<87 < ǁGAA' 㐎<|*EQ(<*"H1:Bh)ꄢ;QQT GuA11p^*ECŢppP(.NC%<*%$h$T())R#UR>Ԫ<*%TPjJS()RC:^v`ȟXvix!վG`uفi@O;!U0XwNmSU#^'TCH]bCQ<>S㭩BXxfzO~,vI;|dM:Uͯ >91'{tts%7hu /~.(I-QGt7Dp| ɇM^wdKr\薫H.p ;* a*jdy>%_Yt^*rXbu70 kd]yddmo@b=M)x&7n[P?vuwÍ )J0Ԑ6脪No8b)xEx :E92cj*d{^!c% *}T+;o> 8g:e>O, ~&Ő:DRs{|Nim,FBzQUeԃ,k5D˫NDKL[֊J WQY ?iWfsZ>,6?'!WDg8Ӕ7k "t]U<1mFaG/ӱ޵F#9d̎ӌGG- mJo/>Hʜ "-r^nJ/)Szyz^ 51sRvH`tm੪Ll[p$>k`|`ͳF*lHgSStZ׬L12TpMHkFFOkJ&$gda,|Mp} GXŰm> tSk+U`[- i2[?# V^fKR-V'`a[=NSꌔdBF&l :+==ܲR3`tJ2 hed <5 %*l k,LɊ4t WFKݤfZOO$ׄ4,97^.a:3</1! S2X&d}aC<>, l/`},zɧ `}K>CXf(3eF-XҳL9c`|V 8ZJX?,Xch:3 6φ`/%-枂2&y޼]ߍd8w`>c , 5OVEi Vo}MIT:0^*TL L T15S#0(}GcJq*T8LUQV _,SoCSl OnԈeSP|q<)d)=?#'@  @>+ b|^ R|A _ȗe\&r|U _r@7r@G W @-^6edI 7 *r@/;܉8JSzDyPg.W.lޥ`{%F,K ,K4,12CJREX.K!R0xDAƳs)d:AƻK)d|A7c) 2`QƗA&  2 e` RA&XUu)d:  {=ր!6,3txD6tK PGk5`TLg7 fb5`LWHy` (̡uȅzcXwl\'H=+ a4JKe_x_3| lN̈́:!3 jn> K=Dsll1أm*e`7+I O%vwt'%PN߬u2NinE! T"&<l/lK0NKe;EDmB1y7 >C|mYY7^zMK8-3.̋#\3 v!6#uSɇ v=UpO\pJ^^v 7nz'>AkC_=:{Cwn n|/T,*!O"B쿄Q ;,uQ>:X|ON {P+ ¹HJ3tsX3%2pe"~.Ix%Gv]ږ#k9x\]#^Vc4f ޵G t\Y+T=| JB-oNHɷDɃ=LTougv}v;$/ ' 'ԞOi>yυɋJY /\K⢅u{ I)u;v Yne:;L V?he` g5Τ\ǮLJ{ ߔg%.pp=΂vm΂E.|s`޹g د'B]] ` nOmx^paʶI 7{l{,k !7p$7plo]q%Vcmn]d{pw@;pwpI{~bw/ |>6 76Ke{\dpOBp&xxv7vD.Yz hhrv'q /N8.8.#!.v4%qw]}􌎑ld[ƒ%1H>ƶ 606#iȒdcC@6H66ل M@ȱIȡ#oslw6y/WwȒAX٪~5iߠD4PE/V3% =(I[U}33D%QI2dƣHQ G|HPc?-%x.Iz)ʷb/P_AFdRN4 kN&_So[HhFbM/SbX5{Jx ꏄĈ5$!nSscQ(Lxx.kuRK-cl=M$̶g ?L콚^ |Z Tzm`3~~mfr.fO^kx<\@cL>{x+am҃SD$F[ͭ6s[$Il1DZیI߿[ 8=RUEc_Dڞ \m KHIdĦ ?T.4_!|AlԱCã Ƙvj>N5m1EWrcE3q[xhq> 3 l {/Y=EBO؋}=LP9{ǁ];7m\% Į [Ti8^& z(&8C)-9<&vٵmυZA7\C,QnmyF6R^{&\e3ٯ8^Lӡ)W;)9hlvE -qn#H~Z8Iԃ;<'L(oRm\>)?){uǤX#P[Z<45UiomvqM`ߍA73me-H^lenS*& `,.1TR%uW*R8`5`@@oZUr ^e@o/3@Z՜-r kus2„M \"xn|Ux2 kYw+sn-G>=)r 3I V:AU'}ĐS=Jzܮ\OV:>j'X3xd)%QLco_(5Ж$FՀT{JA̳nrt%GS6MT[g0WP,q`#abyV'm*BD+qN4LG3!!p9x5}P`5D^sR>iTEHܼ I7S9v.VM05j. м/@yv?\h 6F(Mt@Xb?8A@}8aBi.NfJAVdJrێ^{{(3 1;={.à8iXI=w.i~Jφ!LowŘ~a np˄4V†:`Ds ZZ`W$hbTgbঅb&h ai+sˎ%-q9"cDhI.wG(l w|B xc̥yO dX2TQI [~!Wtֹ:}XC00్.8^wkȨg_9IcFr5#)Hez q0uNSIlu( q& Epk@%GG qnW<8G<#:h9þ+霁͛qvvA6 P j[jow1HgM=+TDgeW$YFI)]FDw3[]@yLԶ# h' ^q͎LUvpxamHƁlw*sNS*ۭ'%d#})ag ag/hT rOQl\;ЁlbTv 0?Z7ajM#miB/ED*+fR|hX x/6gbwoun,ۢ+-spq#$unsr3">#v,;%u/xzmJr2YzNy!UţI.ÎLQ(1 ]fv@z(W.Frm&1A  vCXۄX{XQڠ#oݡ ۳^H[*#p ԓүIx찼]qdU::|$6LƬ##qOd;8uvb\Vp!}8dDG0z*(91h#;+9g\5 &f ݞ~!yJ?ށF-`\&=ϛǖ:D >jq[@ {$K=C_M#ڶ::m I<^7+w"oY>{6wڪ&Gm =BpDzmM=PZA4Xc{{3 &5boB"9{ t@,}gX[ckAmjHfG-jnLPDmi6mmNpQFnuu{%˾\-8$_Xy _][w1C6D0bQS5G9XˋRF:F1-Ji5~.7jMSy1%\Yy)uF'l40#BF 19k T9_y2( gG9+\_s6pe ȷ˸ *\sw;g7gr: \I!Di37ýٸ-\2yr+WyWFr+%<\9fCwQ180T? TUjG=O1# 3#ɟ#fV@lÕbϪ6jYyrS¿Vnzffh&=cJwcc,Tj-Q;E-â.1q I&k\kƊBTE_c?oo[3ޗ3dxNdS2W2޳3g,ye2˄Gc,JXNX0zwC߁QI%W\TG( }bԙ},׸Xq1Xpø\`I`N2$C0Pl j(&mKJ@YGEV4Dй:PuiZFj/g8٭A/& F#3DQ' yTԀn @%PαURfY ^)rt˨rnw_E*(QnNJZPXݧu>r.JZ:Z]MDuыX ĭ[!&D0ZжoX$&'^R%MCNh<sDZ9Vzi9vcQy9VkZ{'(WĶM'maVx%)DNt2SdBQxݔxQ[Mr[lnMQ5/jI-X.,_QUu~p(ӂ$q͜T3 ­>:L-ih^Jn:HrT⺦SmoUꈝk$zi9QWBqj_Xql4[ >o4iMN@WLZw$bꤹ+&##SqjwMyN܉k8*§4{T{`gj=`t[v=̺d 6EIj΂vʼ65yONlC}Wp+_^lC`=^%A6@|ux0."n5~%>0>|q)V^1624e>bgif=SN%L|ukhFF:[O.ee$Mn)̟k_`8{E}nX<RibsfilYҵEr6l`yY(Ƨ[@R2̫ƒ?=:7Qa&&T l[3&.|ۓ;@LJ;.·;TSko4^N&7X߄FF3r\Ae$XUU0jtqY+pɯ0:=*Ku4vY NOI|ڠ&ŏۧn)sCe9+U:DֿN7m&߳DOW4s:SfrIH&BzCnaK&WAO8Et1&Ezܻ.':imOC0c;Ш nn Cמl*[Jͧ'%2ʵpN2v= M4i.P`catYIËfjُHs磳0}ߘ[{ns-&)I3fLS OYS>k)`@wnbHAIgE&sU,h1Es9F z"~,-c"?X|Ɣ>pޟ#"*!l?$K22|ԾnэƇ%TXae.I8Ę'ݏRRXy>R%pt+w mI_ӟ'FO /S'egP=|k Z+%'FzbH+8`MSǓc/e/)weXp-1 Y: ayYϻ!r!O2;q`BZ/j0ϣX`<~ne0w/#z 0_DN:1O f:cxG ދ֫n@nA "bnN`pgOݐ _ uy݀9ki|!mǖ/q~^;|^?O~ۯ/y#oXik55,y2#BdH‡'^mKeKP290scm1|t$S4S_aOkIt,Ps0zzCS p.e_;t|~'\|x- q)(xO6ۭO3LqB̞^z@΋=(pe(gĖ(\"6Wgg'lcbbhJJ3)<_ӻ[IՔnfa;}C̆.;.@TYH7[Sg1 Qi ڂs_)S3a9N8(7F sp[J:zNq*J\S&.첥;ɖ>^| - pFBاʤyEbyVg ͠'{??+b~L?2sJ$zҶj&_`SCm[j1,hy+hӮKm]tBOR)+y+h)MD-豋K.8jo4; TRcRE׽" BKtr_&Ju鉠o$THf^J#x.4bnE5Wtvbv^4A}ϝUEQs48SYb \\N`xhk u0Ŋi nbϬU7?|{& WFڧ0Ubmomvg vn55Ms=pjsc4&ܫ․ &]-}j y, ;Yljk4aBuHVXs4L \Fvow`Li&F͒iY;ڣmn>(Z;Y5. CpcSX}F:=Iz("i'/lW`쵆캔Nl&rqeW.l 6[7rWAfq6[Cd,66S:Ֆ1`3'rs< |ɷ|DgJ%| ЙOuGv:Wo(P`lb⨾m#wp/Z^)znn\EW wp wpw ^'ܽ½^77!½IIWp{po! pop4n"HVד@[D'uDҍ0DDA9,JqDPZ/|mj\Fql䦾yD-^( hB+TFI& ÆbhpIma^(zSY]/@bF3PGN#}C@j|d!48^_/J,7 [m fBGom({8qdtH}Ӓa{s``0WoÀxT kDꔹ+ʹ~#U]6G@7E\ YRl [F$m9j+mk@, /e1AuBE3@.ky\χ% ldpPe˹\\!dزčVVmr_`c2"o뷀Jb9DS*,T~,񰼲aUDQ6 Y-tSױ\L3 `.KɘSd *1@fKT@N v2H/A@(PYK*O(XZ1IV`K*36ZRq*6a E#wll@rmHc'iqcU l@Kp4`LpHP J,kUK>ؗbHr<ҋ #v@5E$ S:Vb"DXMEt cR9VffC>_nLefؓO+jD6:(*k$H"d"򈭊XkF+3`l.DlWa1Fc;[Dʹ-EڶRW̹`#z@;8Jers.ϰ#awD%wZ;q1B%^9nҋ4uh?/nOIɍo)4L7zj :0:tBOh7B>F6d=l[Kӽ!h(x[ Έmæ2VAwkLm҆M0vRAI+RɕjԤ40XÚ (CD_b,wL~) F8="Q$,np+DK[%e w9 M2|:ZkiɎ{zɎ{zɎ;- ;S e7,y~ZB>z傇PD2kl9K/ifm?:[Ž |YRppwebcit-8.24-dfsg.orig/tiny_mce/plugins/media/langs/0000755000175000017500000000000012271477123022053 5ustar michaelmichaelwebcit-8.24-dfsg.orig/tiny_mce/plugins/media/langs/bg_dlg.js0000644000175000017500000001561412271477123023636 0ustar michaelmichaeltinyMCE.addI18n('bg.media_dlg',{list:"\u0421\u043f\u0438\u0441\u044a\u043a",file:"\u0424\u0430\u0439\u043b/URL",advanced:"\u0417\u0430 \u043d\u0430\u043f\u0440\u0435\u0434\u043d\u0430\u043b\u0438",general:"\u041e\u0431\u0449\u0438",title:"\u0412\u043c\u044a\u043a\u043d\u0438/\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0430\u0439 \u043c\u0435\u0434\u0438\u044f","align_top_left":"\u0413\u043e\u0440\u0435 \u043b\u044f\u0432\u043e","align_center":"\u0426\u0435\u043d\u0442\u044a\u0440","align_left":"\u041b\u044f\u0432\u043e","align_bottom":"\u0414\u043e\u043b\u0443","align_right":"\u0414\u044f\u0441\u043d\u043e","align_top":"\u0413\u043e\u0440\u0435","qt_stream_warn":"\u041f\u043e\u0442\u043e\u0447\u043d\u0438\u0442\u0435 rtsp \u0440\u0435\u0441\u0443\u0440\u0441\u0438 \u0442\u0440\u044f\u0431\u0432\u0430 \u0434\u0430 \u0441\u0435 \u0434\u043e\u0431\u0430\u0432\u044f\u0442 \u0432 QT Src \u043f\u043e\u043b\u0435\u0442\u043e \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0430 \u0437\u0430 \u043d\u0430\u043f\u0440\u0435\u0434\u043d\u0430\u043b\u0438.\n\u0422\u0440\u044f\u0431\u0432\u0430 \u0441\u044a\u0449\u043e \u0434\u0430 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u0435 \u043d\u0435 \u043f\u043e\u0442\u043e\u0447\u043d\u0430 \u0432\u0435\u0440\u0441\u0438\u044f \u0432 Src \u043f\u043e\u043b\u0435\u0442\u043e..",qtsrc:"QT Src",progress:"\u041f\u0440\u043e\u0433\u0440\u0435\u0441",sound:"\u0417\u0432\u0443\u043a",swstretchvalign:"\u0420\u0430\u0437\u043f\u044a\u0432\u0430\u043d\u0435 V-Align",swstretchhalign:"\u0420\u0430\u0437\u043f\u044a\u0432\u0430\u043d\u0435 H-Align",swstretchstyle:"\u0421\u0442\u0438\u043b \u043d\u0430 \u0440\u0430\u0437\u043f\u044a\u0432\u0430\u043d\u0435",scriptcallbacks:"Script callbacks","align_top_right":"\u0413\u043e\u0440\u0435 \u0434\u044f\u0441\u043d\u043e",uimode:"UI \u0440\u0435\u0436\u0438\u043c",rate:"\u0411\u044a\u0440\u0437\u0438\u043d\u0430",playcount:"\u0411\u0440\u043e\u0439 \u043f\u043e\u0432\u0442\u043e\u0440\u0435\u043d\u0438\u044f",defaultframe:"\u041d\u0430\u0447\u0430\u043b\u0435\u043d \u043a\u0430\u0434\u044a\u0440",currentposition:"\u0422\u0435\u043a\u0443\u0449\u0430 \u043f\u043e\u0437\u0438\u0446\u0438\u044f",currentmarker:"\u0422\u0435\u043a\u0443\u0449 \u043c\u0430\u0440\u043a\u0435\u0440",captioningid:"\u041d\u0430\u0434\u043f\u0438\u0441\u0432\u0430\u043d\u0435 id",baseurl:"\u0411\u0430\u0437\u043e\u0432\u043e URL",balance:"\u0411\u0430\u043b\u0430\u043d\u0441",windowlessvideo:"\u0412\u0438\u0434\u0435\u043e \u0431\u0435\u0437 \u043f\u0440\u043e\u0437\u043e\u0440\u0435\u0446",stretchtofit:"\u0420\u0430\u0437\u043f\u044a\u043d\u0438",mute:"\u0417\u0430\u0433\u043b\u0443\u0448\u0438",invokeurls:"Invoke URLs",fullscreen:"\u0426\u044f\u043b \u0435\u043a\u0440\u0430\u043d",enabled:"\u0412\u043a\u043b\u044e\u0447\u0435\u043d",autostart:"\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u043d\u043e \u0441\u0442\u0430\u0440\u0442\u0438\u0440\u0430\u043d\u0435",volume:"\u0421\u0438\u043b\u0430 \u043d\u0430 \u0437\u0432\u0443\u043a\u0430",target:"\u0426\u0435\u043b",qtsrcchokespeed:"\u041f\u0440\u0435\u0434\u0435\u043b\u043d\u0430 \u0441\u043a\u043e\u0440\u043e\u0441\u0442",href:"Href",endtime:"\u0412\u0440\u0435\u043c\u0435 \u0437\u0430 \u043a\u0440\u0430\u0439",starttime:"\u0412\u0440\u0435\u043c\u0435 \u0437\u0430 \u0441\u0442\u0430\u0440\u0442\u0438\u0440\u0430\u043d\u0435",enablejavascript:"\u0412\u043a\u043b\u044e\u0447\u0438 JavaScript",correction:"\u0411\u0435\u0437 \u043f\u043e\u043f\u0440\u0430\u0432\u043a\u0438",targetcache:"\u0426\u0435\u043b\u0435\u0432\u0438 \u043a\u0435\u0448",playeveryframe:"\u041f\u043e\u043a\u0430\u0437\u0432\u0430\u0439 \u0432\u0441\u0435\u043a\u0438 \u043a\u0430\u0434\u044a\u0440",kioskmode:"Kiosk \u0440\u0435\u0436\u0438\u043c",controller:"\u041a\u043e\u043d\u0442\u0440\u043e\u043b\u0435\u0440",menu:"\u041f\u043e\u043a\u0430\u0436\u0438 \u043c\u0435\u043d\u044e",loop:"\u041f\u043e\u0432\u0442\u0430\u0440\u044f\u0439",play:"\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u043d\u043e \u043f\u0443\u0441\u043a\u0430\u043d\u0435",hspace:"H-Space",vspace:"V-Space","class_name":"\u041a\u043b\u0430\u0441",name:"\u0418\u043c\u0435",id:"Id",type:"\u0422\u0438\u043f",size:"\u0420\u0430\u0437\u043c\u0435\u0440\u0438",preview:"\u041f\u0440\u0435\u0433\u043b\u0435\u0434","constrain_proportions":"\u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0438 \u043f\u0440\u043e\u043f\u043e\u0440\u0446\u0438\u0438\u0442\u0435",controls:"\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435",numloop:"\u0411\u0440\u043e\u0439 \u043f\u043e\u0432\u0442\u043e\u0440\u0435\u043d\u0438\u044f",console:"\u041a\u043e\u043d\u0437\u043e\u043b\u0430",cache:"\u041a\u0435\u0448",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flashvars",base:"\u041e\u0441\u043d\u043e\u0432\u0430",bgcolor:"\u0424\u043e\u043d",wmode:"WMode",salign:"SAlign",align:"\u041f\u043e\u0434\u0440\u0430\u0432\u043d\u044f\u0432\u0430\u043d\u0435",scale:"\u041f\u0440\u0435\u043e\u0440\u0430\u0437\u043c\u0435\u0440\u0438",quality:"\u041a\u0430\u0447\u0435\u0441\u0442\u0432\u043e",shuffle:"\u0420\u0430\u0437\u0431\u044a\u0440\u043a\u0430\u0439",prefetch:"\u0421\u0432\u0430\u043b\u0438 \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u043d\u043e",nojava:"\u0411\u0435\u0437 JAVA",maintainaspect:"\u041f\u043e\u0434\u0434\u044a\u0440\u0436\u0430\u0439 \u0441\u044a\u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435\u0442\u043e",imagestatus:"\u0421\u0442\u0430\u0442\u0443\u0441 \u043d\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430",center:"\u0426\u0435\u043d\u0442\u044a\u0440",autogotourl:"\u041e\u0442\u0438\u0434\u0438 \u043d\u0430 URL","shockwave_options":"\u041e\u043f\u0446\u0438\u0438 \u0437\u0430 Shockwave","rmp_options":"\u041e\u043f\u0446\u0438\u0438 \u0437\u0430 Real media player","wmp_options":"\u041e\u043f\u0446\u0438\u0438 \u0437\u0430 Windows media player","qt_options":"\u041e\u043f\u0446\u0438\u0438 \u0437\u0430 Quicktime","flash_options":"\u041e\u043f\u0446\u0438\u0438 \u0437\u0430 Flash",hidden:"\u0421\u043a\u0440\u0438\u0442","align_bottom_left":"\u0414\u043e\u043b\u0443 \u043b\u044f\u0432\u043e","align_bottom_right":"\u0414\u043e\u043b\u0443 \u0434\u044f\u0441\u043d\u043e","html5_video_options":"HTML5 \u0412\u0438\u0434\u0435\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438",altsource1:"\u0410\u043b\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u0435\u043d \u0438\u0437\u0442\u043e\u0447\u043d\u0438\u043a 1",altsource2:"\u0410\u043b\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u0435\u043d \u0438\u0437\u0442\u043e\u0447\u043d\u0438\u043a 2",preload:"\u041f\u0440\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u043d\u043e \u0437\u0430\u0440\u0435\u0436\u0434\u0430\u043d\u0435",poster:"\u041f\u043b\u0430\u043a\u0430\u0442",source:"\u0418\u0437\u0442\u043e\u0447\u043d\u0438\u043a","html5_audio_options":"Audio Options","preload_none":"Don\'t Preload","preload_metadata":"Preload video metadata","preload_auto":"Let user\'s browser decide"});webcit-8.24-dfsg.orig/tiny_mce/plugins/media/langs/fr_dlg.js0000644000175000017500000000566012271477123023655 0ustar michaelmichaeltinyMCE.addI18n('fr.media_dlg',{list:"Liste",file:"Fichier / URL",advanced:"Avanc\u00e9",general:"G\u00e9n\u00e9ral",title:"Ins\u00e9rer / \u00e9diter un fichier m\u00e9dia","align_top_left":"En haut \u00e0 gauche","align_center":"Centr\u00e9","align_left":"Gauche","align_bottom":"Bas","align_right":"Droite","align_top":"Haut","qt_stream_warn":"Les ressources rtsp en streaming doivent \u00eatre ajout\u00e9es au champ \u00ab Source QT \u00bb dans l\'onglet avanc\u00e9.\nVous devriez aussi ajouter une version n\'\u00e9tant pas en streaming au champ \u00ab source QT \u00bb.",qtsrc:"Source QT",progress:"Progression",sound:"Son",swstretchvalign:"Stretch vertical",swstretchhalign:"Stretch horizontal",swstretchstyle:"Stretch style",scriptcallbacks:"Callback de script","align_top_right":"En haut \u00e0 droite",uimode:"Mode UI",rate:"Taux",playcount:"Compteur",defaultframe:"Image par d\u00e9faut",currentposition:"Position actuelle",currentmarker:"Marqueur actuel",captioningid:"ID sous-titrage",baseurl:"Adresse de base",balance:"Balance",windowlessvideo:"Vid\u00e9o sans fen\u00eatre",stretchtofit:"\u00c9tendre pour adapter la taille",mute:"Muet",invokeurls:"Invoquer URLs",fullscreen:"Plein \u00e9cran",enabled:"Activ\u00e9",autostart:"Lire automatiquement",volume:"Volume",target:"Cible",qtsrcchokespeed:"D\u00e9bit maximum",href:"Href",endtime:"Fin",starttime:"D\u00e9but",enablejavascript:"Activer le JavaScript",correction:"Pas de correction",targetcache:"Cache cible",playeveryframe:"Jouer toutes les images",kioskmode:"Mode kiosque",controller:"Contr\u00f4leur",menu:"Afficher le menu",loop:"Lire en boucle",play:"Lecture automatique",hspace:"Espacement horizontal",vspace:"Espacement vertical","class_name":"Classe",name:"Nom",id:"Id",type:"Type",size:"Dimensions",preview:"Pr\u00e9visualisation","constrain_proportions":"Conserver les proportions",controls:"Contr\u00f4les",numloop:"Nombre de tours",console:"Console",cache:"Cache",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Variables flash",base:"Base",bgcolor:"Fond",wmode:"WMode",salign:"SAlign",align:"Alignement",scale:"\u00c9chelle",quality:"Qualit\u00e9",shuffle:"Al\u00e9atoire",prefetch:"Pr\u00e9chargement",nojava:"Pas java",maintainaspect:"Maintenir l\'aspect",imagestatus:"Statut de l\'image",center:"Centrer",autogotourl:"Aller automatiquement \u00e0 l\'URL","shockwave_options":"Options Shockwave","rmp_options":"Options Real media player","wmp_options":"Windows media player options","qt_options":"Options Quicktime","flash_options":"Options Flash",hidden:"Cach\u00e9","align_bottom_left":"En bas \u00e0 gauche","align_bottom_right":"En bas \u00e0 droite","html5_video_options":"Options Vid\u00e9o HTML 5",altsource1:"Source alternative 1",altsource2:"Source alternative 2",preload:"Pr\u00e9chargement",poster:"Poster",source:"Source","html5_audio_options":"Audio Options","preload_none":"Don\'t Preload","preload_metadata":"Preload video metadata","preload_auto":"Let user\'s browser decide"});webcit-8.24-dfsg.orig/tiny_mce/plugins/media/langs/zh-cn_dlg.js0000644000175000017500000000656512271477123024272 0ustar michaelmichaeltinyMCE.addI18n('zh-cn.media_dlg',{list:"\u5217\u8868",file:"\u6587\u4ef6/URL",advanced:"\u9ad8\u7ea7",general:"\u666e\u901a",title:"\u63d2\u5165/\u7f16\u8f91 \u5d4c\u5165\u5f0f\u5a92\u4f53","align_top_left":"\u5de6\u4e0a","align_center":"\u5c45\u4e2d","align_left":"\u5c45\u5de6","align_bottom":"\u5c45\u4e0b","align_right":"\u5c45\u53f3","align_top":"\u5c45\u4e0a","qt_stream_warn":"\u6d41\u5a92\u4f53RTSP\u8d44\u6e90\u5e94\u6dfb\u52a0\u5230\u9ad8\u7ea7\u9009\u9879\u7684QT\u8d44\u6e90\u4e2d\u3002n\u540c\u65f6\uff0c\u60a8\u4e5f\u53ef\u4ee5\u5728\u8fd9\u91cc\u52a0\u5165\u4e00\u4e2a\u975e\u6d41\u5a92\u4f53\u3002",qtsrc:"QT\u8d44\u6e90",progress:"\u8fdb\u5ea6",sound:"\u58f0\u97f3",swstretchvalign:"\u5782\u76f4\u62c9\u4f38",swstretchhalign:"\u6c34\u5e73\u62c9\u4f38",swstretchstyle:"\u62c9\u4f38\u65b9\u5f0f",scriptcallbacks:"\u811a\u672c\u56de\u8c03","align_top_right":"\u53f3\u4e0a",uimode:"\u5916\u89c2\u6a21\u5f0f",rate:"\u6bd4\u7387",playcount:"\u64ad\u653e\u6b21\u6570",defaultframe:"\u9ed8\u8ba4\u5e27",currentposition:"\u5f53\u524d\u4f4d\u7f6e",currentmarker:"\u5f53\u524d\u6807\u8bb0",captioningid:"\u5b57\u5e55ID",baseurl:"\u57fa\u7840\u8def\u5f84",balance:"\u5e73\u8861",windowlessvideo:"\u65e0\u8fb9\u6846",stretchtofit:"\u62c9\u4f38\u5230\u9002\u5408",mute:"\u9759\u97f3",invokeurls:"\u5f15\u7528URL",fullscreen:"\u5168\u5c4f",enabled:"\u542f\u7528",autostart:"\u81ea\u52a8\u64ad\u653e",volume:"\u97f3\u91cf",target:"\u76ee\u6807",qtsrcchokespeed:"\u9650\u5236\u901f\u5ea6",href:"\u8d85\u94fe\u63a5",endtime:"\u7ed3\u675f\u65f6\u95f4",starttime:"\u5f00\u59cb\u65f6\u95f4",enablejavascript:"\u542f\u7528JavaScript",correction:"\u65e0\u4fee\u6b63",targetcache:"\u76ee\u6807\u7f13\u5b58",playeveryframe:"\u9010\u5e27\u64ad\u653e",kioskmode:"\u5168\u5c4f\u6a21\u5f0f",controller:"\u63a7\u5236\u53f0",menu:"\u663e\u793a\u83dc\u5355",loop:"\u5faa\u73af",play:"\u81ea\u52a8\u64ad\u653e",hspace:"\u6c34\u5e73\u8ddd\u79bb",vspace:"\u5782\u76f4\u8ddd\u79bb","class_name":"\u7c7b\u522b",name:"\u540d\u79f0",id:"ID",type:"\u7c7b\u578b",size:"\u5c3a\u5bf8",preview:"\u9884\u89c8","constrain_proportions":"\u4fdd\u6301\u6bd4\u4f8b",controls:"\u64ad\u653e\u63a7\u5236",numloop:"\u5faa\u73af\u6b21\u6570",console:"\u63a7\u5236\u53f0",cache:"\u7f13\u5b58",autohref:"\u81ea\u52a8\u8df3\u8f6c",liveconnect:"JavaScript\u5f00\u542f",flashvars:"Flash\u53d8\u91cf",base:"\u57fa\u7840\u8def\u5f84",bgcolor:"\u80cc\u666f",wmode:"\u7a97\u4f53\u6a21\u5f0f",salign:"\u5a92\u4f53\u5bf9\u9f50",align:"\u6587\u672c\u5bf9\u9f50",scale:"\u7f29\u653e",quality:"\u753b\u8d28",shuffle:"\u968f\u673a",prefetch:"\u9884\u52a0\u8f7d",nojava:"\u65e0java",maintainaspect:"\u4fdd\u6301\u5916\u89c2",imagestatus:"\u56fe\u7247\u72b6\u6001",center:"\u5c45\u4e2d",autogotourl:"\u81ea\u52a8\u8f6c\u5230URL","shockwave_options":"Shockwave\u9009\u9879","rmp_options":"Real media player\u9009\u9879","wmp_options":"Windows media player\u9009\u9879","qt_options":"Quicktime\u9009\u9879","flash_options":"Flash\u9009\u9879",hidden:"\u9690\u85cf","align_bottom_left":"\u5de6\u4e0b","align_bottom_right":"\u53f3\u4e0b","html5_video_options":"HTML5\u89c6\u9891\u9009\u9879",altsource1:"\u66ff\u4ee3\u8d44\u6e901",altsource2:"\u66ff\u4ee3\u8d44\u6e902",preload:"\u9884\u52a0\u8f7d",poster:"\u6d77\u62a5",source:"\u8d44\u6e90","html5_audio_options":"Audio Options","preload_none":"Don\'t Preload","preload_metadata":"Preload video metadata","preload_auto":"Let user\'s browser decide"});webcit-8.24-dfsg.orig/tiny_mce/plugins/media/langs/de_dlg.js0000644000175000017500000000555212271477123023636 0ustar michaelmichaeltinyMCE.addI18n('de.media_dlg',{list:"Liste",file:"Datei/URL",advanced:"Erweitert",general:"Allgemein",title:"Multimedia-Inhalte einf\u00fcgen/bearbeiten","align_top_left":"Oben Links","align_center":"Zentriert","align_left":"Links","align_bottom":"Unten","align_right":"Rechts","align_top":"Oben","qt_stream_warn":"In den Erweiterten Einstellungen sollten im Feld \'QT Src\' gestreamte RTSP Resourcen hinzugef\u00fcgt werden.\nZus\u00e4tzlich sollten Sie dort auch eine nicht-gestreamte Resource angeben.",qtsrc:"Angabe zu QT Src",progress:"Fortschritt",sound:"Ton",swstretchvalign:"Stretch V-Ausrichtung",swstretchhalign:"Stretch H-Ausrichtung",swstretchstyle:"Stretch-Art",scriptcallbacks:"Script callbacks","align_top_right":"Oben Rechts",uimode:"UI Modus",rate:"Rate",playcount:"Z\u00e4hler",defaultframe:"Frame-Voreinstellung",currentposition:"Aktuelle Position",currentmarker:"Aktueller Marker",captioningid:"Captioning id",baseurl:"Base URL",balance:"Balance",windowlessvideo:"Fensterloses Video",stretchtofit:"Anzeigefl\u00e4che an verf\u00fcgbaren Platz anpassen",mute:"Stumm",invokeurls:"Invoke URLs",fullscreen:"Vollbild",enabled:"Aktiviert",autostart:"Autostart",volume:"Lautst\u00e4rke",target:"Ziel",qtsrcchokespeed:"Choke speed",href:"Href",endtime:"Endzeitpunkt",starttime:"Startzeitpunkt",enablejavascript:"JavaScript aktivieren",correction:"Ohne Korrektur",targetcache:"Ziel zwischenspeichern",playeveryframe:"Jeden Frame abspielen",kioskmode:"Kioskmodus",controller:"Controller",menu:"Men\u00fc anzeigen",loop:"Wiederholung",play:"Automatisches Abspielen",hspace:"Horizontaler Abstand",vspace:"Vertikaler Abstand","class_name":"CSS-Klasse",name:"Name",id:"Id",type:"Typ",size:"Abmessungen",preview:"Vorschau","constrain_proportions":"Proportionen erhalten",controls:"Steuerung",numloop:"Anzahl Wiederholungen",console:"Konsole",cache:"Zwischenspeicher",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flashvariablen",base:"Base",bgcolor:"Hintergrund",wmode:"WMode",salign:"S-Ausrichtung",align:"Ausrichtung",scale:"Skalierung",quality:"Qualit\u00e4t",shuffle:"Zuf\u00e4llige Wiedergabe",prefetch:"Prefetch",nojava:"Kein Java",maintainaspect:"Bildverh\u00e4ltnis beibehalten",imagestatus:"Bildstatus",center:"Zentriert",autogotourl:"Auto goto URL","shockwave_options":"Shockwave-Optionen","rmp_options":"Optionen f\u00fcr Real Media Player","wmp_options":"Optionen f\u00fcr Windows Media Player","qt_options":"Quicktime-Optionen","flash_options":"Flash-Optionen",hidden:"Versteckt","align_bottom_left":"Unten Links","align_bottom_right":"Unten Rechts","html5_video_options":"HTML5 Video Optionen",altsource1:"Alternative Quelle 1",altsource2:"Alternative Quelle 2",preload:"Preload",poster:"Poster",source:"Quelle","html5_audio_options":"Audio Optionen","preload_none":"Nicht vorladen","preload_metadata":"Video Metadaten vorladen","preload_auto":"Benutzer Browser entscheidet automatisch"});webcit-8.24-dfsg.orig/tiny_mce/plugins/media/langs/fi_dlg.js0000644000175000017500000000577512271477123023653 0ustar michaelmichaeltinyMCE.addI18n('fi.media_dlg',{list:"Lista",file:"Tiedosto/URL",advanced:"Edistyneet",general:"Yleiset",title:"Lis\u00e4\u00e4/muokkaa upotettua mediaa","align_top_left":"Yl\u00e4-vasemmalla","align_center":"Keskell\u00e4","align_left":"Vasemmalla","align_bottom":"Alhaalla","align_right":"Oikealla","align_top":"Ylh\u00e4\u00e4ll\u00e4","qt_stream_warn":"Streamatut rtsp-resurssit tulisi lis\u00e4t\u00e4 QT Src -kentt\u00e4\u00e4n edistynyt-v\u00e4lilehdelle.\nSinun kannattaa lis\u00e4t\u00e4 my\u00f6s ei-streamattu versio Src-kentt\u00e4\u00e4n.",qtsrc:"QT Src",progress:"Eteneminen",sound:"\u00c4\u00e4ni",swstretchvalign:"Venyt\u00e4 pystysuunnassa",swstretchhalign:"Venyt\u00e4 vaakasuunnassa",swstretchstyle:"Venytystyyli",scriptcallbacks:"Skriptin takaisinkutsut","align_top_right":"Yl\u00e4-oikealla",uimode:"UI-moodi",rate:"Rate",playcount:"Toistolaskin",defaultframe:"Oletusruutu",currentposition:"T\u00e4m\u00e4nhetkinen sijainti",currentmarker:"T\u00e4m\u00e4nhetkinen merkki",captioningid:"Otsikointi-id",baseurl:"Perus URL-osoitteet",balance:"Tasapaino",windowlessvideo:"Ikkunaton video",stretchtofit:"Venyt\u00e4 sopimaan",mute:"Hiljennys",invokeurls:"Kutsu URL-osoitteet",fullscreen:"Kokoruutu",enabled:"P\u00e4\u00e4ll\u00e4",autostart:"Automaattinen aloitus",volume:"\u00c4\u00e4nen voimakkuus",target:"Kohde",qtsrcchokespeed:"Choke-nopeus",href:"Href",endtime:"Lopetusaika",starttime:"Aloitusaika",enablejavascript:"Salli JavaScript",correction:"Ei korjausta",targetcache:"Kohteen v\u00e4limuisti",playeveryframe:"Toista jokainen ruutu",kioskmode:"Kioskitila",controller:"Ohjain",menu:"N\u00e4yt\u00e4 valikko",loop:"Silmukka",play:"Automaattinen toisto",hspace:"Vaakatason tila",vspace:"Pystytason tila","class_name":"Luokka",name:"Nimi",id:"Tunniste",type:"Tyyppi",size:"Mitat",preview:"Esikatselu","constrain_proportions":"S\u00e4ilyt\u00e4 mittasuhteet",controls:"Kontrollit",numloop:"Toistojen m\u00e4\u00e4r\u00e4",console:"Konsoli",cache:"V\u00e4limuisti",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flash-muuttujat",base:"Perusta",bgcolor:"Tausta",wmode:"WMode",salign:"SAlign",align:"Tasaus",scale:"Skaala",quality:"Laatu",shuffle:"Sekoita",prefetch:"Esinouda",nojava:"Ei Javaa",maintainaspect:"S\u00e4ilyt\u00e4 kuvasuhde",imagestatus:"Kuvan tila",center:"Keskit\u00e4",autogotourl:"Mene automaattisesti URL:iin","shockwave_options":"Shockwaven asetukset","rmp_options":"Real media playerin asetukset","wmp_options":"Windows media playerin asetukset","qt_options":"Quicktimen asetukset","flash_options":"Flashin asetukset",hidden:"Piilotettu","align_bottom_left":"Ala-vasemmalla","align_bottom_right":"Ala-oikealla","html5_video_options":"HTML5 videoasetukset",altsource1:"Vaihtoehtoinen l\u00e4hde 1",altsource2:"Vaihtoehtoinen l\u00e4hde 2",preload:"Esilataa",poster:"Posteri",source:"L\u00e4hde","html5_audio_options":"\u00c4\u00e4niasetukset","preload_none":"\u00c4l\u00e4 esilataa","preload_metadata":"Esilataa videon metatiedot","preload_auto":"Anna k\u00e4ytt\u00e4j\u00e4n selaimen p\u00e4\u00e4tt\u00e4\u00e4"});webcit-8.24-dfsg.orig/tiny_mce/plugins/media/langs/et_dlg.js0000644000175000017500000000514412271477123023653 0ustar michaelmichaeltinyMCE.addI18n('et.media_dlg',{list:"Nimekiri",file:"Fail/URL",advanced:"T\u00e4psem",general:"\u00dcldine",title:"Sisesta/muuda meediat","align_top_left":"\u00dcleval vasakul","align_center":"Keskel","align_left":"Vasakul","align_bottom":"All","align_right":"Paremal","align_top":"\u00dcleval","qt_stream_warn":"Striimitav variant peaks olema lisatud.",qtsrc:"QT Src",progress:"Progress",sound:"Heli",swstretchvalign:"Venita V-joondust",swstretchhalign:"Venita H-joondust",swstretchstyle:"Venita stiili",scriptcallbacks:"Skripti tagasikutse","align_top_right":"Pleval paremal",uimode:"UI Reziim",rate:"Hinda",playcount:"M\u00e4ngukorrad",defaultframe:"Vaikimisi raam",currentposition:"Antud positioon",currentmarker:"Antud marker",captioningid:"Tiitri ID",baseurl:"Baas URL",balance:"Tasakaal",windowlessvideo:"Aknata video",stretchtofit:"Venita sobivaks",mute:"Vaigista",invokeurls:"N\u00e4ita URL\u2019e",fullscreen:"T\u00e4isekraan",enabled:"Lubatud",autostart:"Auto-start",volume:"Valjudus",target:"Sihtm\u00e4rk",qtsrcchokespeed:"Kiirus",href:"Href",endtime:"L\u00f5pu aeg",starttime:"Stardi aeg",enablejavascript:"Luba JavaScript\u2019i",correction:"Parandust ei ole",targetcache:"Sihtm\u00e4rgi vahem\u00e4lu",playeveryframe:"M\u00e4ngi igat raami",kioskmode:"Kioski reziim",controller:"Kontrollija",menu:"N\u00e4ita men\u00fc\u00fcd",loop:"Auto-kordus",play:"Auto-start",hspace:"H-vahe",vspace:"V-vahe","class_name":"Klass",name:"Nime",id:"ID",type:"T\u00fc\u00fcp",size:"M\u00f5\u00f5dud",preview:"Eelvaade","constrain_proportions":"S\u00e4ilita proportsioon",controls:"Kontrollid",numloop:"Kordused",console:"Konsool",cache:"Vahem\u00e4lu",autohref:"Auto-HREF",liveconnect:"SWLive-\u00dchendus",flashvars:"Flashiv\u00e4rk",base:"Baas",bgcolor:"Taust",wmode:"WMoodus",salign:"SJoondus",align:"Joondus",scale:"M\u00f5\u00f5tkava",quality:"Kvaliteet",shuffle:"Sega",prefetch:"Prefetch",nojava:"Ilma java\u2019ta",maintainaspect:"S\u00e4ilitamise aspekt",imagestatus:"Pildi staatus",center:"Keskel",autogotourl:"Auto-URL","shockwave_options":"Shockwave\u2019i seaded","rmp_options":"Real media player\u2019i seaded","wmp_options":"Windows media player\u2019i seaded","qt_options":"Quicktime\u2019 seaded","flash_options":"Flash\u2019i seaded",hidden:"Peidetud","align_bottom_left":"All vasakul","align_bottom_right":"All paremal","html5_video_options":"HTML5 Video Options",altsource1:"Alternative source 1",altsource2:"Alternative source 2",preload:"Preload",poster:"Poster",source:"Source","html5_audio_options":"Audio Options","preload_none":"Don\'t Preload","preload_metadata":"Preload video metadata","preload_auto":"Let user\'s browser decide"});webcit-8.24-dfsg.orig/tiny_mce/plugins/media/langs/es_dlg.js0000644000175000017500000000537512271477123023660 0ustar michaelmichaeltinyMCE.addI18n('es.media_dlg',{list:"Lista",file:"Archivo/URL",advanced:"Avanzado",general:"General",title:"Insertar/editar medio embebido","align_top_left":"Arriba Izda.","align_center":"Centrado","align_left":"Izquierda","align_bottom":"Debajo","align_right":"Derecha","align_top":"Arriba","qt_stream_warn":"Los recursos rtsp de Streaming deber\u00edan a\u00f1adirse en el campo QT Src de la pesta\u00f1a avanzada.\nAdem\u00e1s deber\u00eda a\u00f1adir una versi\u00f3n no Streaming en el campo Src.",qtsrc:"QT Src",progress:"Progreso",sound:"Sonido",swstretchvalign:"Alin. V. Estiramiento",swstretchhalign:"Alin. H. Estiramiento",swstretchstyle:"Estilo estiramiento",scriptcallbacks:"Script callbacks","align_top_right":"Arriba Dcha.",uimode:"Modo UI",rate:"Ratio",playcount:"Cuantas reproducciones",defaultframe:"Frame predet.",currentposition:"Posici\u00f3n actual",currentmarker:"Marcador actual",captioningid:"Captioning id",baseurl:"URL Base",balance:"Balance",windowlessvideo:"Video sin ventana",stretchtofit:"Estirar para ajustar",mute:"Silencio",invokeurls:"Invocar URLs",fullscreen:"Pantalla Completa",enabled:"Habilitado",autostart:"Comienzo Autom\u00e1tico",volume:"Volumen",target:"Target",qtsrcchokespeed:"Vel. de choque",href:"Href",endtime:"Fin",starttime:"Inicio",enablejavascript:"Habilitar JavaScript",correction:"Sin correci\u00f3n",targetcache:"Target cache",playeveryframe:"Reproducir todo los frames",kioskmode:"Kiosk mode",controller:"Controller",menu:"Mostrar Men\u00fa",loop:"Repetitivo",play:"Comienzo Autom\u00e1tico",hspace:"H-Space",vspace:"V-Space","class_name":"Clase",name:"Nombre",id:"Id",type:"Tipo",size:"Dimensiones",preview:"Vista Previa","constrain_proportions":"Bloquear relaci\u00f3n de aspecto",controls:"Controles",numloop:"N\u00fam. repeticiones",console:"Consola",cache:"Cach\u00e9",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flashvars",base:"Base",bgcolor:"Fondo",wmode:"WMode",salign:"SAlign",align:"Alineaci\u00f3n",scale:"Scale",quality:"Calidad",shuffle:"Aleatorio",prefetch:"Preb\u00fasqueda",nojava:"No java",maintainaspect:"Mantener aspecto",imagestatus:"Estado de imagen",center:"Centrado",autogotourl:"Ir a URL autom\u00e1t.","shockwave_options":"Opciones Shockwave","rmp_options":"Opciones Real media player","wmp_options":"Opciones Windows media player","qt_options":"Opciones Quicktime","flash_options":"Opciones Flash",hidden:"Hidden","align_bottom_left":"Debajo Izda.","align_bottom_right":"Debajo Dcha.","html5_video_options":"Opciones Video HTML5",altsource1:"Fuente alternativa 1",altsource2:"Fuente alternativa 2",preload:"Precarga",poster:"P\u00f3ster",source:"Fuente","html5_audio_options":"Audio Options","preload_none":"Don\'t Preload","preload_metadata":"Preload video metadata","preload_auto":"Let user\'s browser decide"});webcit-8.24-dfsg.orig/tiny_mce/plugins/media/langs/da_dlg.js0000644000175000017500000000537312271477123023633 0ustar michaelmichaeltinyMCE.addI18n('da.media_dlg',{list:"Liste",file:"Fil/URL",advanced:"Avanceret",general:"Generelt",title:"Inds\u00e6t/rediger indlejret mediefil","align_top_left":"\u00d8verste venstre hj\u00f8rne","align_center":"Centreret","align_left":"Venstre","align_bottom":"Bund","align_right":"H\u00f8jret","align_top":"Top","qt_stream_warn":"Streamede rtsp resourcer skal tilf\u00f8jes til QT Src feltet under tabben avanceret.\nDu skal ogs\u00e5 tilf\u00f8je en ikke streamet version til Src feltet..",qtsrc:"QT Src",progress:"Fremskridt",sound:"Lyd",swstretchvalign:"Str\u00e6k V-justering",swstretchhalign:"Str\u00e6k H-justering",swstretchstyle:"Str\u00e6k stil",scriptcallbacks:"Script callbacks","align_top_right":"\u00d8verste h\u00f8jre hj\u00f8rne",uimode:"UI-tilstand",rate:"Vurder",playcount:"Afspil indhold",defaultframe:"Standard ramme",currentposition:"Aktuel position",currentmarker:"Aktuel mark\u00f8r",captioningid:"Captioning id",baseurl:"Base URL",balance:"Balance",windowlessvideo:"Vinduesl\u00f8s video",stretchtofit:"Str\u00e6k for at tilpasse",mute:"Lydl\u00f8s",invokeurls:"Aktiver URL\'er",fullscreen:"Fulssk\u00e6rm",enabled:"Valgt",autostart:"Afspil automatisk",volume:"Lydstyrke",target:"M\u00e5l",qtsrcchokespeed:"Choke-hastighed",href:"Href",endtime:"Sluttidspunkt",starttime:"Starttidspunkt",enablejavascript:"Tillad JavaScript",correction:"Ingen korrektion",targetcache:"M\u00e5l-cache",playeveryframe:"Afsplil alle rammer",kioskmode:"Kiosk-tilstand",controller:"Controller",menu:"Vis menu",loop:"Gentag",play:"Start",hspace:"H-afstand",vspace:"V-afstand","class_name":"Klasse",name:"Navn",id:"Id",type:"Type",size:"Dimensioner",preview:"Vis udskrift","constrain_proportions":"Bevar proportioner",controls:"Kontroller",numloop:"Antal loops",console:"Konsol",cache:"Cache",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flashvars",base:"Base",bgcolor:"Baggrund",wmode:"WMode",salign:"SAlign",align:"Juster",scale:"Skaler",quality:"Kvalitet",shuffle:"Bland",prefetch:"Forh\u00e5ndshent",nojava:"Ingen java",maintainaspect:"Bevar aspekt",imagestatus:"Billedstatus",center:"Center",autogotourl:"Auto g\u00e5 til URL","shockwave_options":"Shockwave options","rmp_options":"Real media player egenskaber","wmp_options":"Windows media player egenskaber","qt_options":"Quicktime egenskaber","flash_options":"Flash egenskaber",hidden:"Skjul","align_bottom_left":"Nederste venstre hj\u00f8rne","align_bottom_right":"\u00d8verste h\u00f8jre hj\u00f8rne","html5_video_options":"HTML5 Video Indstillinger",altsource1:"Alternativ kilde 1",altsource2:"Alternativ kilde 2",preload:"Forudindl\u00e6s",poster:"Poster",source:"Kilde","html5_audio_options":"Audio Options","preload_none":"Don\'t Preload","preload_metadata":"Preload video metadata","preload_auto":"Let user\'s browser decide"});webcit-8.24-dfsg.orig/tiny_mce/plugins/media/langs/el_dlg.js0000644000175000017500000001735112271477123023646 0ustar michaelmichaeltinyMCE.addI18n('el.media_dlg',{list:"\u039b\u03af\u03c3\u03c4\u03b1",file:"\u0391\u03c1\u03c7\u03b5\u03af\u03bf/URL",advanced:"\u0393\u03b9\u03b1 \u03c0\u03c1\u03bf\u03c7\u03c9\u03c1\u03b7\u03bc\u03ad\u03bd\u03bf\u03c5\u03c2",general:"\u0393\u03b5\u03bd\u03b9\u03ba\u03ac",title:"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae/\u03b5\u03c0\u03b5\u03be\u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u03b1 \u03b5\u03bd\u03c3\u03c9\u03bc\u03b1\u03c4\u03c9\u03bc\u03ad\u03bd\u03c9\u03bd media","align_top_left":"\u03a0\u03ac\u03bd\u03c9 \u03b1\u03c1\u03b9\u03c3\u03c4\u03b5\u03c1\u03ac","align_center":"\u039a\u03ad\u03bd\u03c4\u03c1\u03bf","align_left":"\u0391\u03c1\u03b9\u03c3\u03c4\u03b5\u03c1\u03ac","align_bottom":"\u039a\u03ac\u03c4\u03c9","align_right":"\u0394\u03b5\u03be\u03b9\u03ac","align_top":"\u03a0\u03ac\u03bd\u03c9","qt_stream_warn":"\u03a0\u03b7\u03b3\u03ad\u03c2 \u03c1\u03bf\u03ce\u03bd rtsp \u03b8\u03b1 \u03c0\u03c1\u03ad\u03c0\u03b5\u03b9 \u03bd\u03b1 \u03c0\u03c1\u03bf\u03c3\u03c4\u03b5\u03b8\u03bf\u03cd\u03bd \u03c3\u03c4\u03bf \u03c0\u03b5\u03b4\u03af\u03bf \u03a0\u03b7\u03b3\u03ae QT \u03ba\u03ac\u03c4\u03c9 \u03b1\u03c0\u03cc \u03c4\u03b7\u03bd \u03ba\u03b1\u03c1\u03c4\u03ad\u03bb\u03b1 \u0393\u03b9\u03b1 \u03c0\u03c1\u03bf\u03c7\u03c9\u03c1\u03b7\u03bc\u03ad\u03bd\u03bf\u03c5\u03c2.\n\u0395\u03c0\u03af\u03c3\u03b7\u03c2 \u03ba\u03b1\u03bb\u03cc \u03b8\u03b1 \u03ae\u03c4\u03b1\u03bd \u03bd\u03b1 \u03c0\u03c1\u03bf\u03c3\u03b8\u03ad\u03c3\u03b5\u03c4\u03b5 \u03bc\u03b9\u03b1 \u03b1\u03c0\u03bb\u03ae (\u03cc\u03c7\u03b9 \u03c1\u03bf\u03ae\u03c2) \u03c0\u03b7\u03b3\u03ae..",qtsrc:"\u03a0\u03b7\u03b3\u03ae \u03b1\u03c1\u03c7\u03b5\u03af\u03bf\u03c5",progress:"\u03a0\u03c1\u03cc\u03bf\u03b4\u03bf\u03c2",sound:"\u0389\u03c7\u03bf\u03c2",swstretchvalign:"\u039a\u03b1\u03c4\u03b1\u03ba\u03cc\u03c1\u03c5\u03c6\u03b7 \u03b5\u03c0\u03ad\u03ba\u03c4\u03b1\u03c3\u03b7",swstretchhalign:"\u039f\u03c1\u03b9\u03b6\u03cc\u03bd\u03c4\u03b9\u03b1 \u03b5\u03c0\u03ad\u03ba\u03c4\u03b1\u03c3\u03b7",swstretchstyle:"\u03a3\u03c4\u03c5\u03bb \u03b5\u03c0\u03ad\u03ba\u03c4\u03b1\u03c3\u03b7\u03c2",scriptcallbacks:"Script callbacks","align_top_right":"\u03a0\u03ac\u03bd\u03c9 \u03b4\u03b5\u03be\u03b9\u03ac",uimode:"\u039b\u03b5\u03b9\u03c4\u03bf\u03c5\u03c1\u03b3\u03af\u03b1 UI",rate:"\u03a1\u03c5\u03b8\u03bc\u03cc\u03c2",playcount:"\u03a0\u03cc\u03c3\u03b5\u03c2 \u03c6\u03bf\u03c1\u03ad\u03c2 \u03b8\u03b1 \u03c0\u03b1\u03af\u03be\u03b5\u03b9",defaultframe:"\u03a0\u03c1\u03bf\u03b5\u03c0\u03b9\u03bb\u03b5\u03b3\u03bc\u03ad\u03bd\u03bf \u03ba\u03b1\u03c1\u03ad",currentposition:"\u03a4\u03c1\u03ad\u03c7\u03bf\u03c5\u03c3\u03b1 \u03b8\u03ad\u03c3\u03b7",currentmarker:"\u03a4\u03c1\u03ad\u03c7\u03bf\u03bd \u03c3\u03b7\u03bc\u03ac\u03b4\u03b9",captioningid:"Captioning id",baseurl:"URL \u03b2\u03ac\u03c3\u03b7\u03c2",balance:"\u0399\u03c3\u03bf\u03c1\u03c1\u03bf\u03c0\u03af\u03b1",windowlessvideo:"\u0392\u03af\u03bd\u03c4\u03b5\u03bf \u03c7\u03c9\u03c1\u03af\u03c2 \u03c0\u03b1\u03c1\u03ac\u03b8\u03c5\u03c1\u03bf",stretchtofit:"\u0395\u03c0\u03ad\u03ba\u03c4\u03b1\u03c3\u03b7 \u03ce\u03c3\u03c4\u03b5 \u03bd\u03b1 \u03c7\u03c9\u03c1\u03ad\u03c3\u03b5\u03b9",mute:"\u03a3\u03af\u03b3\u03b1\u03c3\u03b7",invokeurls:"\u039a\u03bb\u03ae\u03c3\u03b7 URLs",fullscreen:"\u03a0\u03bb\u03ae\u03c1\u03b7\u03c2 \u03bf\u03b8\u03cc\u03bd\u03b7",enabled:"\u0395\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7",autostart:"\u0391\u03c5\u03c4\u03cc\u03bc\u03b1\u03c4\u03b7 \u03b5\u03ba\u03ba\u03af\u03bd\u03b7\u03c3\u03b7",volume:"\u0388\u03bd\u03c4\u03b1\u03c3\u03b7",target:"\u03a3\u03c4\u03cc\u03c7\u03bf\u03c2",qtsrcchokespeed:"Choke speed",href:"Href",endtime:"\u03a7\u03c1\u03cc\u03bd\u03bf\u03c2 \u03bb\u03ae\u03be\u03b7\u03c2",starttime:"\u03a7\u03c1\u03cc\u03bd\u03bf\u03c2 \u03ad\u03bd\u03b1\u03c1\u03be\u03b7\u03c2",enablejavascript:"\u0395\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7 JavaScript",correction:"\u03a7\u03c9\u03c1\u03af\u03c2 \u03b4\u03b9\u03cc\u03c1\u03b8\u03c9\u03c3\u03b7",targetcache:"\u039c\u03bd\u03ae\u03bc\u03b7 cache \u03c3\u03c4\u03cc\u03c7\u03bf\u03c5",playeveryframe:"\u03a0\u03b1\u03af\u03be\u03b9\u03bc\u03bf \u03cc\u03bb\u03c9\u03bd \u03c4\u03c9\u03bd \u03ba\u03b1\u03c1\u03ad",kioskmode:"\u039b\u03b5\u03b9\u03c4\u03bf\u03c5\u03c1\u03b3\u03af\u03b1 Kiosk",controller:"\u0395\u03bb\u03b5\u03b3\u03ba\u03c4\u03ae\u03c2",menu:"\u0395\u03bc\u03c6\u03ac\u03bd\u03b9\u03c3\u03b7 \u03bc\u03b5\u03bd\u03bf\u03cd",loop:"\u0395\u03c0\u03b1\u03bd\u03ac\u03bb\u03b7\u03c8\u03b7",play:"\u0391\u03c5\u03c4\u03cc\u03bc\u03b1\u03c4\u03bf \u03b5\u03ba\u03ba\u03af\u03bd\u03b7\u03c3\u03b7",hspace:"\u0391\u03c0\u03cc\u03c3\u03c4\u03b1\u03c3\u03b7 \u03bf\u03c1\u03b9\u03b6\u03cc\u03bd\u03c4\u03b9\u03b1",vspace:"\u0391\u03c0\u03cc\u03c3\u03c4\u03b1\u03c3\u03b7 \u03ba\u03ac\u03b8\u03b5\u03c4\u03b7","class_name":"\u039a\u03bb\u03ac\u03c3\u03b7",name:"\u038c\u03bd\u03bf\u03bc\u03b1",id:"Id",type:"\u03a4\u03cd\u03c0\u03bf\u03c2",size:"\u0394\u03b9\u03b1\u03c3\u03c4\u03ac\u03c3\u03b5\u03b9\u03c2",preview:"\u03a0\u03c1\u03bf\u03b5\u03c0\u03b9\u03c3\u03ba\u03cc\u03c0\u03b7\u03c3\u03b7","constrain_proportions":"\u0394\u03b9\u03b1\u03c4\u03ae\u03c1\u03b7\u03c3\u03b7 \u03b1\u03bd\u03b1\u03bb\u03bf\u03b3\u03af\u03b1\u03c2 \u03c0\u03bb. - \u03cd\u03c8\u03bf\u03c5\u03c2",controls:"\u03a7\u03b5\u03b9\u03c1\u03b9\u03c3\u03c4\u03ae\u03c1\u03b9\u03b1",numloop:"\u03a0\u03cc\u03c3\u03b5\u03c2 \u03c6\u03bf\u03c1\u03ad\u03c2 \u03b8\u03b1 \u03c0\u03b1\u03af\u03be\u03b5\u03b9",console:"\u039a\u03bf\u03bd\u03c3\u03cc\u03bb\u03b1",cache:"\u039c\u03bd\u03ae\u03bc\u03b7 cache",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"\u039c\u03b5\u03c4\u03b1\u03b2\u03bb\u03b7\u03c4\u03ad\u03c2 Flash",base:"\u0392\u03ac\u03c3\u03b7",bgcolor:"\u03a6\u03cc\u03bd\u03c4\u03bf",wmode:"WMode",salign:"SAlign",align:"\u03a3\u03c4\u03bf\u03af\u03c7\u03b9\u03c3\u03b7",scale:"\u039a\u03bb\u03af\u03bc\u03b1\u03ba\u03b1",quality:"\u03a0\u03bf\u03b9\u03cc\u03c4\u03b7\u03c4\u03b1",shuffle:"\u03a4\u03c5\u03c7\u03b1\u03af\u03b1 \u03c3\u03b5\u03b9\u03c1\u03ac",prefetch:"\u03a0\u03c1\u03bf\u03c6\u03cc\u03c1\u03c4\u03c9\u03c3\u03b7",nojava:"\u03a7\u03c9\u03c1\u03af\u03c2 java",maintainaspect:"\u0394\u03b9\u03b1\u03c4\u03ae\u03c1\u03b7\u03c3\u03b7 \u03b1\u03bd\u03b1\u03bb\u03bf\u03b3\u03af\u03b1\u03c2 \u03c0\u03bb. - \u03cd\u03c8\u03bf\u03c5\u03c2",imagestatus:"\u039a\u03b1\u03c4\u03ac\u03c3\u03c4\u03b1\u03c3\u03b7 \u03b5\u03b9\u03ba\u03cc\u03bd\u03b1\u03c2",center:"\u039a\u03ad\u03bd\u03c4\u03c1\u03bf",autogotourl:"\u0391\u03c5\u03c4\u03cc\u03bc\u03b1\u03c4\u03b7 \u03bc\u03b5\u03c4\u03ac\u03b2\u03b1\u03c3\u03b7 \u03c3\u03c4\u03bf URL","shockwave_options":"\u0395\u03c0\u03b9\u03bb\u03bf\u03b3\u03ad\u03c2 Shockwave","rmp_options":"\u0395\u03c0\u03b9\u03bb\u03bf\u03b3\u03ad\u03c2 Real media player","wmp_options":"\u0395\u03c0\u03b9\u03bb\u03bf\u03b3\u03ad\u03c2 Windows media player","qt_options":"\u0395\u03c0\u03b9\u03bb\u03bf\u03b3\u03ad\u03c2 Quicktime","flash_options":"\u0395\u03c0\u03b9\u03bb\u03bf\u03b3\u03ad\u03c2 Flash",hidden:"\u039a\u03c1\u03c5\u03c6\u03cc","align_bottom_left":"\u039a\u03ac\u03c4\u03c9 \u03b1\u03c1\u03b9\u03c3\u03c4\u03b5\u03c1\u03ac","align_bottom_right":"\u039a\u03ac\u03c4\u03c9 \u03b4\u03b5\u03be\u03b9\u03ac","html5_video_options":"\u0395\u03c0\u03b9\u03bb\u03bf\u03b3\u03ad\u03c2 HTML5 Video",altsource1:"\u0395\u03bd\u03b1\u03bb\u03bb\u03b1\u03ba\u03c4\u03b9\u03ba\u03ae \u03c0\u03b7\u03b3\u03ae 1",altsource2:"\u0395\u03bd\u03b1\u03bb\u03bb\u03b1\u03ba\u03c4\u03b9\u03ba\u03ae \u03c0\u03b7\u03b3\u03ae 2",preload:"\u03a0\u03c1\u03bf\u03c6\u03cc\u03c1\u03c4\u03c9\u03c3\u03b7",poster:"\u0391\u03c6\u03af\u03c3\u03b1",source:"\u03a0\u03b7\u03b3\u03ae","html5_audio_options":"Audio Options","preload_none":"Don\'t Preload","preload_metadata":"Preload video metadata","preload_auto":"Let user\'s browser decide"});webcit-8.24-dfsg.orig/tiny_mce/plugins/media/langs/hu_dlg.js0000644000175000017500000000642612271477123023663 0ustar michaelmichaeltinyMCE.addI18n('hu.media_dlg',{list:"Lista",file:"F\u00e1jl/URL",advanced:"Halad\u00f3",general:"\u00c1ltal\u00e1nos",title:"Be\u00e1gyazott m\u00e9dia besz\u00far\u00e1sa/szerkeszt\u00e9se","align_top_left":"Bal-fent","align_center":"K\u00f6z\u00e9pen","align_left":"Balra","align_bottom":"Lent","align_right":"Jobbra","align_top":"Fent","qt_stream_warn":"Streamelt rtsp forr\u00e1sok a QT Src mez\u0151be val\u00f3k a halad\u00f3 lapon.\nHozz\u00e1 kellene adnia egy nem streamelt verzi\u00f3t a Src mez\u0151ben.",qtsrc:"QT Src",progress:"Folyamat",sound:"Hang",swstretchvalign:"Ny\u00fajt\u00e1s F-igaz\u00edt\u00e1s",swstretchhalign:"Ny\u00fajt\u00e1s V-igaz\u00edt\u00e1s",swstretchstyle:"Ny\u00fajt\u00e1s st\u00edlusa",scriptcallbacks:"Script callbacks","align_top_right":"Jobbra fent",uimode:"UI M\u00f3d",rate:"\u00c9rt\u00e9kel\u00e9s",playcount:"Lej\u00e1tsz\u00e1ssz\u00e1m",defaultframe:"Alap\u00e9rtelmezett frame",currentposition:"Aktu\u00e1lis poz\u00edci\u00f3",currentmarker:"Aktu\u00e1lis marker",captioningid:"Captioning id",baseurl:"Base URL",balance:"Balance",windowlessvideo:"Ablak n\u00e9lk\u00fcli vide\u00f3",stretchtofit:"Ny\u00fajtva igaz\u00edt\u00e1s",mute:"N\u00e9ma",invokeurls:"URL-ek bevon\u00e1sa",fullscreen:"Teljes k\u00e9perny\u0151",enabled:"Enged\u00e9lyezve",autostart:"Automatikus kezd\u00e9s",volume:"Hanger\u0151",target:"C\u00e9l",qtsrcchokespeed:"Folyt\u00e1s sebess\u00e9ge",href:"Href",endtime:"Z\u00e1r\u00f3 id\u0151",starttime:"Kezd\u00e9si id\u0151",enablejavascript:"JavaScript enged\u00e9se",correction:"Nincs jav\u00edt\u00e1s",targetcache:"C\u00e9l cache",playeveryframe:"Minden kocka lej\u00e1tsz\u00e1sa",kioskmode:"Kiosk m\u00f3d",controller:"Vez\u00e9rl\u0151",menu:"Men\u00fc mutat\u00e1sa",loop:"Ism\u00e9tl\u00e9s",play:"Automatikus lej\u00e1tsz\u00e1s",hspace:"V-t\u00e1v",vspace:"F-t\u00e1v","class_name":"Oszt\u00e1ly",name:"N\u00e9v",id:"Id",type:"T\u00edpus",size:"M\u00e9retek",preview:"El\u0151n\u00e9zet","constrain_proportions":"Ar\u00e1nytart\u00e1s",controls:"Kezel\u0151k",numloop:"Ism\u00e9tl\u00e9ssz\u00e1m",console:"Console",cache:"Cache",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flashvars",base:"Base",bgcolor:"H\u00e1tt\u00e9r",wmode:"WM\u00f3d",salign:"SElrendez\u00e9s",align:"Elrendez\u00e9s",scale:"Nagy\u00edt\u00e1s",quality:"Min\u0151s\u00e9g",shuffle:"V\u00e9letlenszer\u0171",prefetch:"El\u0151t\u00f6lt\u00e9s",nojava:"Nincs java",maintainaspect:"Ar\u00e1nytart\u00e1s",imagestatus:"K\u00e9p \u00e1llapot",center:"K\u00f6z\u00e9pre",autogotourl:"Automatikus URL-re ugr\u00e1s","shockwave_options":"Shockwave be\u00e1ll\u00edt\u00e1sai","rmp_options":"Real media player be\u00e1ll\u00edt\u00e1sai","wmp_options":"Windows media player be\u00e1ll\u00edt\u00e1sai","qt_options":"Quicktime be\u00e1ll\u00edt\u00e1sai","flash_options":"Flash be\u00e1ll\u00edt\u00e1sai",hidden:"Rejtett","align_bottom_left":"Bal-lent","align_bottom_right":"Bal-jobbra","html5_video_options":"HTML5 Video be\u00e1ll\u00edt\u00e1sok",altsource1:"Alternat\u00edv forr\u00e1s 1",altsource2:"Alternat\u00edv forr\u00e1s 2",preload:"El\u0151t\u00f6lt\u00e9s",poster:"Hozz\u00e1ad\u00f3",source:"Forr\u00e1s","html5_audio_options":"Audio Options","preload_none":"Don\'t Preload","preload_metadata":"Preload video metadata","preload_auto":"Let user\'s browser decide"});webcit-8.24-dfsg.orig/tiny_mce/plugins/media/langs/cs_dlg.js0000644000175000017500000000734312271477123023653 0ustar michaelmichaeltinyMCE.addI18n('cs.media_dlg',{list:"Seznam",file:"Soubor/URL",advanced:"Roz\u0161\u00ed\u0159en\u00e9",general:"Obecn\u00e9",title:"Vlo\u017eit/upravit vkl\u00e1dan\u00e1 m\u00e9dia","align_top_left":"Nahoru vlevo","align_center":"Na st\u0159ed","align_left":"Vlevo","align_bottom":"Dol\u016f","align_right":"Vpravo","align_top":"Nahoru","qt_stream_warn":"Streamovan\u00e9 rtsp zdroje mohou b\u00fdt p\u0159id\u00e1ny do pole \'Soubor/URL streamu pro QT\' na z\u00e1lo\u017ece \'Roz\u0161\u00ed\u0159en\u00e9\'.\nYM\u016f\u017eete tak\u00e9 p\u0159idat nestreamovanou verzi do pole \'Soubor/URL\'.",qtsrc:"Soubor/URL streamu pro QT",progress:"Pr\u016fb\u011bh",sound:"Zvuk",swstretchvalign:"Zarovn\u00e1n\u00ed vert. rozta\u017een\u00ed",swstretchhalign:"Zarovn\u00e1n\u00ed horiz. rozta\u017een\u00ed",swstretchstyle:"Styl rozta\u017een\u00ed",scriptcallbacks:"Skripty zp\u011btn\u00fdch vol\u00e1n\u00ed","align_top_right":"Nahoru vpravo",uimode:"Re\u017eim ovl\u00e1dac\u00edho panelu",rate:"Relativn\u00ed rychlost",playcount:"Po\u010det p\u0159ehr\u00e1n\u00ed",defaultframe:"V\u00fdchoz\u00ed sn\u00edmek",currentposition:"Aktu\u00e1ln\u00ed pozice",currentmarker:"Aktu\u00e1ln\u00ed z\u00e1lo\u017eka",captioningid:"ID popisku m\u00e9dia",baseurl:"Z\u00e1kladn\u00ed URL",balance:"Vyv\u00e1\u017een\u00ed",windowlessvideo:"Video bez okna",stretchtofit:"Rozt\u00e1hnout do okna",mute:"Ztlumit",invokeurls:"Po\u017eadovat URL",fullscreen:"Cel\u00e1 obrazovka",enabled:"Povolit ovl\u00e1dac\u00ed panel",autostart:"Automatick\u00e9 spu\u0161t\u011bn\u00ed",volume:"Hlasitost",target:"C\u00edl",qtsrcchokespeed:"Sn\u00ed\u017een\u00ed rychlosti",href:"Odkaz",endtime:"\u010cas ukon\u010den\u00ed",starttime:"Po\u010d\u00e1te\u010dn\u00ed \u010das",enablejavascript:"Povolit Javascript",correction:"Bez korekc\u00ed",targetcache:"C\u00edlov\u00e1 mezipam\u011b\u0165",playeveryframe:"P\u0159ehr\u00e1t ka\u017ed\u00fd sn\u00edmek",kioskmode:"Zak\u00e1zat ukl\u00e1d\u00e1n\u00ed",controller:"Ovl\u00e1dac\u00ed panel",menu:"Zobrazit nab\u00eddku",loop:"Opakov\u00e1n\u00ed",play:"Automatick\u00e9 p\u0159ehr\u00e1v\u00e1n\u00ed",hspace:"Horizont\u00e1ln\u00ed odsazen\u00ed",vspace:"Vertik\u00e1ln\u00ed odsazen\u00ed","class_name":"T\u0159\u00edda",name:"N\u00e1zev",id:"ID",type:"Typ",size:"Rozm\u011bry",preview:"N\u00e1hled","constrain_proportions":"Zachovat proporce",controls:"Ovl\u00e1dac\u00ed panel",numloop:"Po\u010det opakov\u00e1n\u00ed",console:"Konzola",cache:"Mezipam\u011b\u0165",autohref:"Automatick\u00e9 na\u010dten\u00ed",liveconnect:"Spustit Javu (SWLiveConnect)",flashvars:"Parametry (Flashvars)",base:"Z\u00e1kladn\u00ed slo\u017eka",bgcolor:"Pozad\u00ed",wmode:"Re\u017eim okna",salign:"Zarovn\u00e1n\u00ed okna",align:"Zarovn\u00e1n\u00ed",scale:"Pom\u011br",quality:"Kvalita",shuffle:"N\u00e1hodn\u011b",prefetch:"P\u0159edna\u010dten\u00ed",nojava:"Nespout\u011bt Javu",maintainaspect:"Zachovat pom\u011br stran",imagestatus:"Stav obrazu",center:"Na st\u0159ed",autogotourl:"Automatick\u00fd p\u0159echod na URL","shockwave_options":"Mo\u017enosti Shockwave","rmp_options":"Mo\u017enosti p\u0159ehr\u00e1va\u010de Real media","wmp_options":"Mo\u017enosti p\u0159ehr\u00e1va\u010de Windows media","qt_options":"Mo\u017enosti Quicktime","flash_options":"Mo\u017enosti Flashe",hidden:"Skr\u00fdt","align_bottom_left":"Dol\u016f vlevo","align_bottom_right":"Dol\u016f vpravo","html5_video_options":"Mo\u017enosti HTML5 video",altsource1:"Alternativn\u00ed zdroj 1",altsource2:"Alternativn\u00ed zdroj 2",preload:"P\u0159edna\u010d\u00edst",poster:"Obr\u00e1zek (zobraz\u00ed se p\u0159i nedostupnosti videa)",source:"Zdroj","html5_audio_options":"Audio Options","preload_none":"Don\'t Preload","preload_metadata":"Preload video metadata","preload_auto":"Let user\'s browser decide"});webcit-8.24-dfsg.orig/tiny_mce/plugins/media/langs/en_dlg.js0000644000175000017500000000477212271477123023653 0ustar michaelmichaeltinyMCE.addI18n('en.media_dlg',{list:"List",file:"File/URL",advanced:"Advanced",general:"General",title:"Insert/Edit Embedded Media","align_top_left":"Top Left","align_center":"Center","align_left":"Left","align_bottom":"Bottom","align_right":"Right","align_top":"Top","qt_stream_warn":"Streamed RTSP resources should be added to the QT Source field under the Advanced tab.\nYou should also add a non-streamed version to the Source field.",qtsrc:"QT Source",progress:"Progress",sound:"Sound",swstretchvalign:"Stretch V-Align",swstretchhalign:"Stretch H-Align",swstretchstyle:"Stretch Style",scriptcallbacks:"Script Callbacks","align_top_right":"Top Right",uimode:"UI Mode",rate:"Rate",playcount:"Play Count",defaultframe:"Default Frame",currentposition:"Current Position",currentmarker:"Current Marker",captioningid:"Captioning ID",baseurl:"Base URL",balance:"Balance",windowlessvideo:"Windowless Video",stretchtofit:"Stretch to Fit",mute:"Mute",invokeurls:"Invoke URLs",fullscreen:"Full Screen",enabled:"Enabled",autostart:"Auto Start",volume:"Volume",target:"Target",qtsrcchokespeed:"Choke Speed",href:"HREF",endtime:"End Time",starttime:"Start Time",enablejavascript:"Enable JavaScript",correction:"No Correction",targetcache:"Target Cache",playeveryframe:"Play Every Frame",kioskmode:"Kiosk Mode",controller:"Controller",menu:"Show Menu",loop:"Loop",play:"Auto Play",hspace:"H-Space",vspace:"V-Space","class_name":"Class",name:"Name",id:"ID",type:"Type",size:"Dimensions",preview:"Preview","constrain_proportions":"Constrain Proportions",controls:"Controls",numloop:"Num Loops",console:"Console",cache:"Cache",autohref:"Auto HREF",liveconnect:"SWLiveConnect",flashvars:"Flash Vars",base:"Base",bgcolor:"Background",wmode:"WMode",salign:"SAlign",align:"Align",scale:"Scale",quality:"Quality",shuffle:"Shuffle",prefetch:"Prefetch",nojava:"No Java",maintainaspect:"Maintain Aspect",imagestatus:"Image Status",center:"Center",autogotourl:"Auto Goto URL","shockwave_options":"Shockwave Options","rmp_options":"Real Media Player Options","wmp_options":"Windows Media Player Options","qt_options":"QuickTime Options","flash_options":"Flash Options",hidden:"Hidden","align_bottom_left":"Bottom Left","align_bottom_right":"Bottom Right","html5_video_options":"HTML5 Video Options",altsource1:"Alternative source 1",altsource2:"Alternative source 2",preload:"Preload",poster:"Poster",source:"Source","html5_audio_options":"Audio Options","preload_none":"Don\'t Preload","preload_metadata":"Preload video metadata","preload_auto":"Let user\'s browser decide"});webcit-8.24-dfsg.orig/tiny_mce/plugins/media/langs/it_dlg.js0000644000175000017500000000537412271477123023664 0ustar michaelmichaeltinyMCE.addI18n('it.media_dlg',{list:"Lista",file:"File/URL",advanced:"Avanzate",general:"Generale",title:"Inserisci/modifica file multimediale","align_top_left":"Alto a sinistra","align_center":"Centro","align_left":"Sinistra","align_bottom":"Basso","align_right":"Destra","align_top":"Alto","qt_stream_warn":"Le risorse rstp \'streamed\' devono essere aggiunte al campo Sorgente QT nella tabella Avanzate.\nSi dovrebbe inserire anche una versione non \'streamed\' al campo Sorgente..",qtsrc:"Sorgente QT",progress:"Avanzamento",sound:"Suono",swstretchvalign:"Tratto V-Allineamento",swstretchhalign:"Tratto H-Allineamento",swstretchstyle:"Stile Tratto",scriptcallbacks:"Script richiamato","align_top_right":"Alto a destra",uimode:"Modalit\u00e0 Interfaccia Utente",rate:"Qualit\u00e0",playcount:"Conteggio esecuzione",defaultframe:"Frame predefinito",currentposition:"Posizione corrente",currentmarker:"Indicatore corrente",captioningid:"Didascalia dell\'Id",baseurl:"URL base",balance:"Bilanciamento",windowlessvideo:"Video senza finestra",stretchtofit:"Adatta dimensioni",mute:"Muto",invokeurls:"Invoca URLs",fullscreen:"Tutto schermo",enabled:"Abilitato",autostart:"Avvio automatico",volume:"Volume",target:"Target",qtsrcchokespeed:"Velocit\u00e0 cursore",href:"Href",endtime:"Ora fine",starttime:"Ora inizio",enablejavascript:"Abilita JavaScript",correction:"Nessuna correzione",targetcache:"Cache del target",playeveryframe:"Esegui ogni frame",kioskmode:"Modalit\u00e0 Kiosk",controller:"Controller",menu:"Mostra menu",loop:"Riproduzione ciclica",play:"Esecuzione automatica",hspace:"H-Spazio",vspace:"V-Spazio","class_name":"Classe",name:"Nome",id:"Id",type:"Tipo",size:"Dimensioni",preview:"Anteprima","constrain_proportions":"Mantieni proporzioni",controls:"Controlli",numloop:"Numero cicli",console:"Console",cache:"Cache",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flashvars",base:"Base",bgcolor:"Sfondo",wmode:"WMode",salign:"SAlign",align:"Allineamento",scale:"Scala",quality:"Qualit\u00e0",shuffle:"Shuffle",prefetch:"Precaricamento",nojava:"No java",maintainaspect:"Mantieni aspetto",imagestatus:"Stato immagine",center:"Centra",autogotourl:"Vai a URL automatico","shockwave_options":"Opzioni Shockwave","rmp_options":"Opzioni Real media player","wmp_options":"Opzioni Windows media player","qt_options":"Opzioni Quicktime","flash_options":"Opzioni Flash",hidden:"Nascosto","align_bottom_left":"Basso a sinistra","align_bottom_right":"Basso a destra","html5_video_options":"Opzioni Video HTML5",altsource1:"Sorgente alternativa 1",altsource2:"Sorgente alternativa 2",preload:"Precarica",poster:"Poster",source:"Sorgente","html5_audio_options":"Audio Options","preload_none":"Don\'t Preload","preload_metadata":"Preload video metadata","preload_auto":"Let user\'s browser decide"});webcit-8.24-dfsg.orig/tiny_mce/plugins/media/media.htm0000644000175000017500000011216112271477123022542 0ustar michaelmichael {#media_dlg.title}

    {#media_dlg.general}
     
    x   
    {#media_dlg.preview}
    {#media_dlg.advanced}
     
    {#media_dlg.html5_video_options}
     
     
     
    {#media_dlg.html5_audio_options}
     
     
    {#media_dlg.flash_options}
    {#media_dlg.qt_options}
     
     
    {#media_dlg.wmp_options}
    {#media_dlg.rmp_options}
     
    {#media_dlg.shockwave_options}
    {#media_dlg.source}
    webcit-8.24-dfsg.orig/tiny_mce/plugins/media/editor_plugin.js0000644000175000017500000002644012271477123024157 0ustar michaelmichael(function(){var d=tinymce.explode("id,name,width,height,style,align,class,hspace,vspace,bgcolor,type"),h=tinymce.makeMap(d.join(",")),b=tinymce.html.Node,f,a,g=tinymce.util.JSON,e;f=[["Flash","d27cdb6e-ae6d-11cf-96b8-444553540000","application/x-shockwave-flash","http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"],["ShockWave","166b1bca-3f9c-11cf-8075-444553540000","application/x-director","http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0"],["WindowsMedia","6bf52a52-394a-11d3-b153-00c04f79faa6,22d6f312-b0f6-11d0-94ab-0080c74c7e95,05589fa1-c356-11ce-bf01-00aa0055595a","application/x-mplayer2","http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701"],["QuickTime","02bf25d5-8c17-4b23-bc80-d3488abddc6b","video/quicktime","http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0"],["RealMedia","cfcdaa03-8be4-11cf-b84b-0020afbbccfa","audio/x-pn-realaudio-plugin","http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"],["Java","8ad9c840-044e-11d1-b3e9-00805f499d93","application/x-java-applet","http://java.sun.com/products/plugin/autodl/jinstall-1_5_0-windows-i586.cab#Version=1,5,0,0"],["Silverlight","dfeaf541-f3e1-4c24-acac-99c30715084a","application/x-silverlight-2"],["Iframe"],["Video"],["Audio"]];function c(m){var l,j,k;if(m&&!m.splice){j=[];for(k=0;true;k++){if(m[k]){j[k]=m[k]}else{break}}return j}return m}tinymce.create("tinymce.plugins.MediaPlugin",{init:function(n,j){var r=this,l={},m,p,q,k;function o(i){return i&&i.nodeName==="IMG"&&n.dom.hasClass(i,"mceItemMedia")}r.editor=n;r.url=j;a="";for(m=0;m0){M+=(M?"&":"")+N+"="+escape(O)}});if(M.length){E.params.flashvars=M}J=o.getParam("flash_video_player_params",{allowfullscreen:true,allowscriptaccess:true});tinymce.each(J,function(O,N){E.params[N]=""+O})}}E=x.attr("data-mce-json");if(!E){return}E=g.parse(E);p=this.getType(x.attr("class"));z=x.attr("data-mce-style");if(!z){z=x.attr("style");if(z){z=o.dom.serializeStyle(o.dom.parseStyle(z,"img"))}}if(p.name==="Iframe"){v=new b("iframe",1);tinymce.each(d,function(i){var H=x.attr(i);if(i=="class"&&H){H=H.replace(/mceItem.+ ?/g,"")}if(H&&H.length>0){v.attr(i,H)}});for(G in E.params){v.attr(G,E.params[G])}v.attr({style:z,src:E.params.src});x.replace(v);return}if(this.editor.settings.media_use_script){v=new b("script",1).attr("type","text/javascript");w=new b("#text",3);w.value="write"+p.name+"("+g.serialize(tinymce.extend(E.params,{width:x.attr("width"),height:x.attr("height")}))+");";v.append(w);x.replace(v);return}if(p.name==="Video"&&E.video.sources[0]){A=new b("video",1).attr(tinymce.extend({id:x.attr("id"),width:x.attr("width"),height:x.attr("height"),style:z},E.video.attrs));if(E.video.attrs){l=E.video.attrs.poster}k=E.video.sources=c(E.video.sources);for(y=0;y'); function get(id) { return document.getElementById(id); } function getVal(id) { var elm = get(id); if (elm.nodeName == "SELECT") return elm.options[elm.selectedIndex].value; if (elm.type == "checkbox") return elm.checked; return elm.value; } function setVal(id, value, name) { if (typeof(value) != 'undefined') { var elm = get(id); if (elm.nodeName == "SELECT") selectByValue(document.forms[0], id, value); else if (elm.type == "checkbox") { if (typeof(value) == 'string') { value = value.toLowerCase(); value = (!name && value === 'true') || (name && value === name.toLowerCase()); } elm.checked = !!value; } else elm.value = value; } } window.Media = { init : function() { var html, editor; this.editor = editor = tinyMCEPopup.editor; // Setup file browsers and color pickers get('filebrowsercontainer').innerHTML = getBrowserHTML('filebrowser','src','media','media'); get('qtsrcfilebrowsercontainer').innerHTML = getBrowserHTML('qtsrcfilebrowser','quicktime_qtsrc','media','media'); get('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor'); get('video_altsource1_filebrowser').innerHTML = getBrowserHTML('video_filebrowser_altsource1','video_altsource1','media','media'); get('video_altsource2_filebrowser').innerHTML = getBrowserHTML('video_filebrowser_altsource2','video_altsource2','media','media'); get('audio_altsource1_filebrowser').innerHTML = getBrowserHTML('audio_filebrowser_altsource1','audio_altsource1','media','media'); get('audio_altsource2_filebrowser').innerHTML = getBrowserHTML('audio_filebrowser_altsource2','audio_altsource2','media','media'); get('video_poster_filebrowser').innerHTML = getBrowserHTML('filebrowser_poster','video_poster','media','image'); html = this.getMediaListHTML('medialist', 'src', 'media', 'media'); if (html == "") get("linklistrow").style.display = 'none'; else get("linklistcontainer").innerHTML = html; if (isVisible('filebrowser')) get('src').style.width = '230px'; if (isVisible('video_filebrowser_altsource1')) get('video_altsource1').style.width = '220px'; if (isVisible('video_filebrowser_altsource2')) get('video_altsource2').style.width = '220px'; if (isVisible('audio_filebrowser_altsource1')) get('audio_altsource1').style.width = '220px'; if (isVisible('audio_filebrowser_altsource2')) get('audio_altsource2').style.width = '220px'; if (isVisible('filebrowser_poster')) get('video_poster').style.width = '220px'; this.data = tinyMCEPopup.getWindowArg('data'); this.dataToForm(); this.preview(); }, insert : function() { var editor = tinyMCEPopup.editor; this.formToData(); editor.execCommand('mceRepaint'); tinyMCEPopup.restoreSelection(); editor.selection.setNode(editor.plugins.media.dataToImg(this.data)); tinyMCEPopup.close(); }, preview : function() { get('prev').innerHTML = this.editor.plugins.media.dataToHtml(this.data, true); }, moveStates : function(to_form, field) { var data = this.data, editor = this.editor, data = this.data, mediaPlugin = editor.plugins.media, ext, src, typeInfo, defaultStates, src; defaultStates = { // QuickTime quicktime_autoplay : true, quicktime_controller : true, // Flash flash_play : true, flash_loop : true, flash_menu : true, // WindowsMedia windowsmedia_autostart : true, windowsmedia_enablecontextmenu : true, windowsmedia_invokeurls : true, // RealMedia realmedia_autogotourl : true, realmedia_imagestatus : true }; function parseQueryParams(str) { var out = {}; if (str) { tinymce.each(str.split('&'), function(item) { var parts = item.split('='); out[unescape(parts[0])] = unescape(parts[1]); }); } return out; }; function setOptions(type, names) { var i, name, formItemName, value, list; if (type == data.type || type == 'global') { names = tinymce.explode(names); for (i = 0; i < names.length; i++) { name = names[i]; formItemName = type == 'global' ? name : type + '_' + name; if (type == 'global') list = data; else if (type == 'video' || type == 'audio') { list = data.video.attrs; if (!list && !to_form) data.video.attrs = list = {}; } else list = data.params; if (list) { if (to_form) { setVal(formItemName, list[name], type == 'video' || type == 'audio' ? name : ''); } else { delete list[name]; value = getVal(formItemName); if ((type == 'video' || type == 'audio') && value === true) value = name; if (defaultStates[formItemName]) { if (value !== defaultStates[formItemName]) { value = "" + value; list[name] = value; } } else if (value) { value = "" + value; list[name] = value; } } } } } } if (!to_form) { data.type = get('media_type').options[get('media_type').selectedIndex].value; data.width = getVal('width'); data.height = getVal('height'); // Switch type based on extension src = getVal('src'); if (field == 'src') { ext = src.replace(/^.*\.([^.]+)$/, '$1'); if (typeInfo = mediaPlugin.getType(ext)) data.type = typeInfo.name.toLowerCase(); setVal('media_type', data.type); } if (data.type == "video" || data.type == "audio") { if (!data.video.sources) data.video.sources = []; data.video.sources[0] = {src: getVal('src')}; } } // Hide all fieldsets and show the one active get('video_options').style.display = 'none'; get('audio_options').style.display = 'none'; get('flash_options').style.display = 'none'; get('quicktime_options').style.display = 'none'; get('shockwave_options').style.display = 'none'; get('windowsmedia_options').style.display = 'none'; get('realmedia_options').style.display = 'none'; if (get(data.type + '_options')) get(data.type + '_options').style.display = 'block'; setVal('media_type', data.type); setOptions('flash', 'play,loop,menu,swliveconnect,quality,scale,salign,wmode,base,flashvars'); setOptions('quicktime', 'loop,autoplay,cache,controller,correction,enablejavascript,kioskmode,autohref,playeveryframe,targetcache,scale,starttime,endtime,target,qtsrcchokespeed,volume,qtsrc'); setOptions('shockwave', 'sound,progress,autostart,swliveconnect,swvolume,swstretchstyle,swstretchhalign,swstretchvalign'); setOptions('windowsmedia', 'autostart,enabled,enablecontextmenu,fullscreen,invokeurls,mute,stretchtofit,windowlessvideo,balance,baseurl,captioningid,currentmarker,currentposition,defaultframe,playcount,rate,uimode,volume'); setOptions('realmedia', 'autostart,loop,autogotourl,center,imagestatus,maintainaspect,nojava,prefetch,shuffle,console,controls,numloop,scriptcallbacks'); setOptions('video', 'poster,autoplay,loop,muted,preload,controls'); setOptions('audio', 'autoplay,loop,preload,controls'); setOptions('global', 'id,name,vspace,hspace,bgcolor,align,width,height'); if (to_form) { if (data.type == 'video') { if (data.video.sources[0]) setVal('src', data.video.sources[0].src); src = data.video.sources[1]; if (src) setVal('video_altsource1', src.src); src = data.video.sources[2]; if (src) setVal('video_altsource2', src.src); } else if (data.type == 'audio') { if (data.video.sources[0]) setVal('src', data.video.sources[0].src); src = data.video.sources[1]; if (src) setVal('audio_altsource1', src.src); src = data.video.sources[2]; if (src) setVal('audio_altsource2', src.src); } else { // Check flash vars if (data.type == 'flash') { tinymce.each(editor.getParam('flash_video_player_flashvars', {url : '$url', poster : '$poster'}), function(value, name) { if (value == '$url') data.params.src = parseQueryParams(data.params.flashvars)[name] || data.params.src; }); } setVal('src', data.params.src); } } else { src = getVal("src"); // YouTube if (src.match(/youtube.com(.+)v=([^&]+)/)) { data.width = 425; data.height = 350; data.params.frameborder = '0'; data.type = 'iframe'; src = 'http://www.youtube.com/embed/' + src.match(/v=([^&]+)/)[1]; setVal('src', src); setVal('media_type', data.type); } // Google video if (src.match(/video.google.com(.+)docid=([^&]+)/)) { data.width = 425; data.height = 326; data.type = 'flash'; src = 'http://video.google.com/googleplayer.swf?docId=' + src.match(/docid=([^&]+)/)[1] + '&hl=en'; setVal('src', src); setVal('media_type', data.type); } if (data.type == 'video') { if (!data.video.sources) data.video.sources = []; data.video.sources[0] = {src : src}; src = getVal("video_altsource1"); if (src) data.video.sources[1] = {src : src}; src = getVal("video_altsource2"); if (src) data.video.sources[2] = {src : src}; } else if (data.type == 'audio') { if (!data.video.sources) data.video.sources = []; data.video.sources[0] = {src : src}; src = getVal("audio_altsource1"); if (src) data.video.sources[1] = {src : src}; src = getVal("audio_altsource2"); if (src) data.video.sources[2] = {src : src}; } else data.params.src = src; // Set default size setVal('width', data.width || (data.type == 'audio' ? 300 : 320)); setVal('height', data.height || (data.type == 'audio' ? 32 : 240)); } }, dataToForm : function() { this.moveStates(true); }, formToData : function(field) { if (field == "width" || field == "height") this.changeSize(field); if (field == 'source') { this.moveStates(false, field); setVal('source', this.editor.plugins.media.dataToHtml(this.data)); this.panel = 'source'; } else { if (this.panel == 'source') { this.data = this.editor.plugins.media.htmlToData(getVal('source')); this.dataToForm(); this.panel = ''; } this.moveStates(false, field); this.preview(); } }, beforeResize : function() { this.width = parseInt(getVal('width') || (this.data.type == 'audio' ? "300" : "320"), 10); this.height = parseInt(getVal('height') || (this.data.type == 'audio' ? "32" : "240"), 10); }, changeSize : function(type) { var width, height, scale, size; if (get('constrain').checked) { width = parseInt(getVal('width') || (this.data.type == 'audio' ? "300" : "320"), 10); height = parseInt(getVal('height') || (this.data.type == 'audio' ? "32" : "240"), 10); if (type == 'width') { this.height = Math.round((width / this.width) * height); setVal('height', this.height); } else { this.width = Math.round((height / this.height) * width); setVal('width', this.width); } } }, getMediaListHTML : function() { if (typeof(tinyMCEMediaList) != "undefined" && tinyMCEMediaList.length > 0) { var html = ""; html += ''; return html; } return ""; } }; tinyMCEPopup.requireLangPack(); tinyMCEPopup.onInit.add(function() { Media.init(); }); })();webcit-8.24-dfsg.orig/tiny_mce/plugins/media/js/embed.js0000644000175000017500000000362212271477123023000 0ustar michaelmichael/** * This script contains embed functions for common plugins. This scripts are complety free to use for any purpose. */ function writeFlash(p) { writeEmbed( 'D27CDB6E-AE6D-11cf-96B8-444553540000', 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0', 'application/x-shockwave-flash', p ); } function writeShockWave(p) { writeEmbed( '166B1BCA-3F9C-11CF-8075-444553540000', 'http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0', 'application/x-director', p ); } function writeQuickTime(p) { writeEmbed( '02BF25D5-8C17-4B23-BC80-D3488ABDDC6B', 'http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0', 'video/quicktime', p ); } function writeRealMedia(p) { writeEmbed( 'CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA', 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0', 'audio/x-pn-realaudio-plugin', p ); } function writeWindowsMedia(p) { p.url = p.src; writeEmbed( '6BF52A52-394A-11D3-B153-00C04F79FAA6', 'http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701', 'application/x-mplayer2', p ); } function writeEmbed(cls, cb, mt, p) { var h = '', n; h += ''; h += '0'); } else { tinymce.DOM.add(id, 'span', {}, '0'); } }); ed.onInit.add(function(ed) { ed.selection.onSetContent.add(function() { t._count(ed); }); t._count(ed); }); ed.onSetContent.add(function(ed) { t._count(ed); }); ed.onKeyUp.add(function(ed, e) { if (e.keyCode == last) return; if (13 == e.keyCode || 8 == last || 46 == last) t._count(ed); last = e.keyCode; }); }, _getCount : function(ed) { var tc = 0; var tx = ed.getContent({ format: 'raw' }); if (tx) { tx = tx.replace(/\.\.\./g, ' '); // convert ellipses to spaces tx = tx.replace(/<.[^<>]*?>/g, ' ').replace(/ | /gi, ' '); // remove html tags and space chars // deal with html entities tx = tx.replace(/(\w+)(&.+?;)+(\w+)/, "$1$3").replace(/&.+?;/g, ' '); tx = tx.replace(this.cleanre, ''); // remove numbers and punctuation var wordArray = tx.match(this.countre); if (wordArray) { tc = wordArray.length; } } return tc; }, _count : function(ed) { var t = this; // Keep multiple calls from happening at the same time if (t.block) return; t.block = 1; setTimeout(function() { if (!ed.destroyed) { var tc = t._getCount(ed); tinymce.DOM.setHTML(t.id, tc.toString()); setTimeout(function() {t.block = 0;}, 2000); } }, 1); }, getInfo: function() { return { longname : 'Word Count plugin', author : 'Moxiecode Systems AB', authorurl : 'http://tinymce.moxiecode.com', infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/wordcount', version : tinymce.majorVersion + "." + tinymce.minorVersion }; } }); tinymce.PluginManager.add('wordcount', tinymce.plugins.WordCount); })(); webcit-8.24-dfsg.orig/tiny_mce/plugins/wordcount/editor_plugin.js0000644000175000017500000000325212271477123025120 0ustar michaelmichael(function(){tinymce.create("tinymce.plugins.WordCount",{block:0,id:null,countre:null,cleanre:null,init:function(a,b){var c=this,d=0;c.countre=a.getParam("wordcount_countregex",/[\w\u2019\'-]+/g);c.cleanre=a.getParam("wordcount_cleanregex",/[0-9.(),;:!?%#$?\'\"_+=\\\/-]*/g);c.id=a.id+"-word-count";a.onPostRender.add(function(f,e){var g,h;h=f.getParam("wordcount_target_id");if(!h){g=tinymce.DOM.get(f.id+"_path_row");if(g){tinymce.DOM.add(g.parentNode,"div",{style:"float: right"},f.getLang("wordcount.words","Words: ")+'0')}}else{tinymce.DOM.add(h,"span",{},'0')}});a.onInit.add(function(e){e.selection.onSetContent.add(function(){c._count(e)});c._count(e)});a.onSetContent.add(function(e){c._count(e)});a.onKeyUp.add(function(f,g){if(g.keyCode==d){return}if(13==g.keyCode||8==d||46==d){c._count(f)}d=g.keyCode})},_getCount:function(c){var a=0;var b=c.getContent({format:"raw"});if(b){b=b.replace(/\.\.\./g," ");b=b.replace(/<.[^<>]*?>/g," ").replace(/ | /gi," ");b=b.replace(/(\w+)(&.+?;)+(\w+)/,"$1$3").replace(/&.+?;/g," ");b=b.replace(this.cleanre,"");var d=b.match(this.countre);if(d){a=d.length}}return a},_count:function(a){var b=this;if(b.block){return}b.block=1;setTimeout(function(){if(!a.destroyed){var c=b._getCount(a);tinymce.DOM.setHTML(b.id,c.toString());setTimeout(function(){b.block=0},2000)}},1)},getInfo:function(){return{longname:"Word Count plugin",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/wordcount",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("wordcount",tinymce.plugins.WordCount)})();webcit-8.24-dfsg.orig/tiny_mce/plugins/directionality/0000755000175000017500000000000012271477123022713 5ustar michaelmichaelwebcit-8.24-dfsg.orig/tiny_mce/plugins/directionality/editor_plugin_src.js0000644000175000017500000000403312271477123026764 0ustar michaelmichael/** * editor_plugin_src.js * * Copyright 2009, Moxiecode Systems AB * Released under LGPL License. * * License: http://tinymce.moxiecode.com/license * Contributing: http://tinymce.moxiecode.com/contributing */ (function() { tinymce.create('tinymce.plugins.Directionality', { init : function(ed, url) { var t = this; t.editor = ed; ed.addCommand('mceDirectionLTR', function() { var e = ed.dom.getParent(ed.selection.getNode(), ed.dom.isBlock); if (e) { if (ed.dom.getAttrib(e, "dir") != "ltr") ed.dom.setAttrib(e, "dir", "ltr"); else ed.dom.setAttrib(e, "dir", ""); } ed.nodeChanged(); }); ed.addCommand('mceDirectionRTL', function() { var e = ed.dom.getParent(ed.selection.getNode(), ed.dom.isBlock); if (e) { if (ed.dom.getAttrib(e, "dir") != "rtl") ed.dom.setAttrib(e, "dir", "rtl"); else ed.dom.setAttrib(e, "dir", ""); } ed.nodeChanged(); }); ed.addButton('ltr', {title : 'directionality.ltr_desc', cmd : 'mceDirectionLTR'}); ed.addButton('rtl', {title : 'directionality.rtl_desc', cmd : 'mceDirectionRTL'}); ed.onNodeChange.add(t._nodeChange, t); }, getInfo : function() { return { longname : 'Directionality', author : 'Moxiecode Systems AB', authorurl : 'http://tinymce.moxiecode.com', infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/directionality', version : tinymce.majorVersion + "." + tinymce.minorVersion }; }, // Private methods _nodeChange : function(ed, cm, n) { var dom = ed.dom, dir; n = dom.getParent(n, dom.isBlock); if (!n) { cm.setDisabled('ltr', 1); cm.setDisabled('rtl', 1); return; } dir = dom.getAttrib(n, 'dir'); cm.setActive('ltr', dir == "ltr"); cm.setDisabled('ltr', 0); cm.setActive('rtl', dir == "rtl"); cm.setDisabled('rtl', 0); } }); // Register plugin tinymce.PluginManager.add('directionality', tinymce.plugins.Directionality); })();webcit-8.24-dfsg.orig/tiny_mce/plugins/directionality/editor_plugin.js0000644000175000017500000000246512271477123026124 0ustar michaelmichael(function(){tinymce.create("tinymce.plugins.Directionality",{init:function(a,b){var c=this;c.editor=a;a.addCommand("mceDirectionLTR",function(){var d=a.dom.getParent(a.selection.getNode(),a.dom.isBlock);if(d){if(a.dom.getAttrib(d,"dir")!="ltr"){a.dom.setAttrib(d,"dir","ltr")}else{a.dom.setAttrib(d,"dir","")}}a.nodeChanged()});a.addCommand("mceDirectionRTL",function(){var d=a.dom.getParent(a.selection.getNode(),a.dom.isBlock);if(d){if(a.dom.getAttrib(d,"dir")!="rtl"){a.dom.setAttrib(d,"dir","rtl")}else{a.dom.setAttrib(d,"dir","")}}a.nodeChanged()});a.addButton("ltr",{title:"directionality.ltr_desc",cmd:"mceDirectionLTR"});a.addButton("rtl",{title:"directionality.rtl_desc",cmd:"mceDirectionRTL"});a.onNodeChange.add(c._nodeChange,c)},getInfo:function(){return{longname:"Directionality",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/directionality",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_nodeChange:function(b,a,e){var d=b.dom,c;e=d.getParent(e,d.isBlock);if(!e){a.setDisabled("ltr",1);a.setDisabled("rtl",1);return}c=d.getAttrib(e,"dir");a.setActive("ltr",c=="ltr");a.setDisabled("ltr",0);a.setActive("rtl",c=="rtl");a.setDisabled("rtl",0)}});tinymce.PluginManager.add("directionality",tinymce.plugins.Directionality)})();webcit-8.24-dfsg.orig/tiny_mce/plugins/visualchars/0000755000175000017500000000000012271477123022214 5ustar michaelmichaelwebcit-8.24-dfsg.orig/tiny_mce/plugins/visualchars/editor_plugin_src.js0000644000175000017500000000422312271477123026266 0ustar michaelmichael/** * editor_plugin_src.js * * Copyright 2009, Moxiecode Systems AB * Released under LGPL License. * * License: http://tinymce.moxiecode.com/license * Contributing: http://tinymce.moxiecode.com/contributing */ (function() { tinymce.create('tinymce.plugins.VisualChars', { init : function(ed, url) { var t = this; t.editor = ed; // Register commands ed.addCommand('mceVisualChars', t._toggleVisualChars, t); // Register buttons ed.addButton('visualchars', {title : 'visualchars.desc', cmd : 'mceVisualChars'}); ed.onBeforeGetContent.add(function(ed, o) { if (t.state && o.format != 'raw' && !o.draft) { t.state = true; t._toggleVisualChars(false); } }); }, getInfo : function() { return { longname : 'Visual characters', author : 'Moxiecode Systems AB', authorurl : 'http://tinymce.moxiecode.com', infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/visualchars', version : tinymce.majorVersion + "." + tinymce.minorVersion }; }, // Private methods _toggleVisualChars : function(bookmark) { var t = this, ed = t.editor, nl, i, h, d = ed.getDoc(), b = ed.getBody(), nv, s = ed.selection, bo, div, bm; t.state = !t.state; ed.controlManager.setActive('visualchars', t.state); if (bookmark) bm = s.getBookmark(); if (t.state) { nl = []; tinymce.walk(b, function(n) { if (n.nodeType == 3 && n.nodeValue && n.nodeValue.indexOf('\u00a0') != -1) nl.push(n); }, 'childNodes'); for (i = 0; i < nl.length; i++) { nv = nl[i].nodeValue; nv = nv.replace(/(\u00a0)/g, '$1'); div = ed.dom.create('div', null, nv); while (node = div.lastChild) ed.dom.insertAfter(node, nl[i]); ed.dom.remove(nl[i]); } } else { nl = ed.dom.select('span.mceItemNbsp', b); for (i = nl.length - 1; i >= 0; i--) ed.dom.remove(nl[i], 1); } s.moveToBookmark(bm); } }); // Register plugin tinymce.PluginManager.add('visualchars', tinymce.plugins.VisualChars); })();webcit-8.24-dfsg.orig/tiny_mce/plugins/visualchars/editor_plugin.js0000644000175000017500000000253012271477123025416 0ustar michaelmichael(function(){tinymce.create("tinymce.plugins.VisualChars",{init:function(a,b){var c=this;c.editor=a;a.addCommand("mceVisualChars",c._toggleVisualChars,c);a.addButton("visualchars",{title:"visualchars.desc",cmd:"mceVisualChars"});a.onBeforeGetContent.add(function(d,e){if(c.state&&e.format!="raw"&&!e.draft){c.state=true;c._toggleVisualChars(false)}})},getInfo:function(){return{longname:"Visual characters",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/visualchars",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_toggleVisualChars:function(m){var p=this,k=p.editor,a,g,j,n=k.getDoc(),o=k.getBody(),l,q=k.selection,e,c,f;p.state=!p.state;k.controlManager.setActive("visualchars",p.state);if(m){f=q.getBookmark()}if(p.state){a=[];tinymce.walk(o,function(b){if(b.nodeType==3&&b.nodeValue&&b.nodeValue.indexOf("\u00a0")!=-1){a.push(b)}},"childNodes");for(g=0;g$1');c=k.dom.create("div",null,l);while(node=c.lastChild){k.dom.insertAfter(node,a[g])}k.dom.remove(a[g])}}else{a=k.dom.select("span.mceItemNbsp",o);for(g=a.length-1;g>=0;g--){k.dom.remove(a[g],1)}}q.moveToBookmark(f)}});tinymce.PluginManager.add("visualchars",tinymce.plugins.VisualChars)})();webcit-8.24-dfsg.orig/tiny_mce/plugins/template/0000755000175000017500000000000012271477123021503 5ustar michaelmichaelwebcit-8.24-dfsg.orig/tiny_mce/plugins/template/editor_plugin_src.js0000644000175000017500000001157212271477123025562 0ustar michaelmichael/** * editor_plugin_src.js * * Copyright 2009, Moxiecode Systems AB * Released under LGPL License. * * License: http://tinymce.moxiecode.com/license * Contributing: http://tinymce.moxiecode.com/contributing */ (function() { var each = tinymce.each; tinymce.create('tinymce.plugins.TemplatePlugin', { init : function(ed, url) { var t = this; t.editor = ed; // Register commands ed.addCommand('mceTemplate', function(ui) { ed.windowManager.open({ file : url + '/template.htm', width : ed.getParam('template_popup_width', 750), height : ed.getParam('template_popup_height', 600), inline : 1 }, { plugin_url : url }); }); ed.addCommand('mceInsertTemplate', t._insertTemplate, t); // Register buttons ed.addButton('template', {title : 'template.desc', cmd : 'mceTemplate'}); ed.onPreProcess.add(function(ed, o) { var dom = ed.dom; each(dom.select('div', o.node), function(e) { if (dom.hasClass(e, 'mceTmpl')) { each(dom.select('*', e), function(e) { if (dom.hasClass(e, ed.getParam('template_mdate_classes', 'mdate').replace(/\s+/g, '|'))) e.innerHTML = t._getDateTime(new Date(), ed.getParam("template_mdate_format", ed.getLang("template.mdate_format"))); }); t._replaceVals(e); } }); }); }, getInfo : function() { return { longname : 'Template plugin', author : 'Moxiecode Systems AB', authorurl : 'http://www.moxiecode.com', infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/template', version : tinymce.majorVersion + "." + tinymce.minorVersion }; }, _insertTemplate : function(ui, v) { var t = this, ed = t.editor, h, el, dom = ed.dom, sel = ed.selection.getContent(); h = v.content; each(t.editor.getParam('template_replace_values'), function(v, k) { if (typeof(v) != 'function') h = h.replace(new RegExp('\\{\\$' + k + '\\}', 'g'), v); }); el = dom.create('div', null, h); // Find template element within div n = dom.select('.mceTmpl', el); if (n && n.length > 0) { el = dom.create('div', null); el.appendChild(n[0].cloneNode(true)); } function hasClass(n, c) { return new RegExp('\\b' + c + '\\b', 'g').test(n.className); }; each(dom.select('*', el), function(n) { // Replace cdate if (hasClass(n, ed.getParam('template_cdate_classes', 'cdate').replace(/\s+/g, '|'))) n.innerHTML = t._getDateTime(new Date(), ed.getParam("template_cdate_format", ed.getLang("template.cdate_format"))); // Replace mdate if (hasClass(n, ed.getParam('template_mdate_classes', 'mdate').replace(/\s+/g, '|'))) n.innerHTML = t._getDateTime(new Date(), ed.getParam("template_mdate_format", ed.getLang("template.mdate_format"))); // Replace selection if (hasClass(n, ed.getParam('template_selected_content_classes', 'selcontent').replace(/\s+/g, '|'))) n.innerHTML = sel; }); t._replaceVals(el); ed.execCommand('mceInsertContent', false, el.innerHTML); ed.addVisual(); }, _replaceVals : function(e) { var dom = this.editor.dom, vl = this.editor.getParam('template_replace_values'); each(dom.select('*', e), function(e) { each(vl, function(v, k) { if (dom.hasClass(e, k)) { if (typeof(vl[k]) == 'function') vl[k](e); } }); }); }, _getDateTime : function(d, fmt) { if (!fmt) return ""; function addZeros(value, len) { var i; value = "" + value; if (value.length < len) { for (i=0; i<(len-value.length); i++) value = "0" + value; } return value; } fmt = fmt.replace("%D", "%m/%d/%y"); fmt = fmt.replace("%r", "%I:%M:%S %p"); fmt = fmt.replace("%Y", "" + d.getFullYear()); fmt = fmt.replace("%y", "" + d.getYear()); fmt = fmt.replace("%m", addZeros(d.getMonth()+1, 2)); fmt = fmt.replace("%d", addZeros(d.getDate(), 2)); fmt = fmt.replace("%H", "" + addZeros(d.getHours(), 2)); fmt = fmt.replace("%M", "" + addZeros(d.getMinutes(), 2)); fmt = fmt.replace("%S", "" + addZeros(d.getSeconds(), 2)); fmt = fmt.replace("%I", "" + ((d.getHours() + 11) % 12 + 1)); fmt = fmt.replace("%p", "" + (d.getHours() < 12 ? "AM" : "PM")); fmt = fmt.replace("%B", "" + this.editor.getLang("template_months_long").split(',')[d.getMonth()]); fmt = fmt.replace("%b", "" + this.editor.getLang("template_months_short").split(',')[d.getMonth()]); fmt = fmt.replace("%A", "" + this.editor.getLang("template_day_long").split(',')[d.getDay()]); fmt = fmt.replace("%a", "" + this.editor.getLang("template_day_short").split(',')[d.getDay()]); fmt = fmt.replace("%%", "%"); return fmt; } }); // Register plugin tinymce.PluginManager.add('template', tinymce.plugins.TemplatePlugin); })();webcit-8.24-dfsg.orig/tiny_mce/plugins/template/langs/0000755000175000017500000000000012271477123022607 5ustar michaelmichaelwebcit-8.24-dfsg.orig/tiny_mce/plugins/template/langs/bg_dlg.js0000644000175000017500000000422412271477123024365 0ustar michaelmichaeltinyMCE.addI18n('bg.template_dlg',{title:"\u0422\u0435\u043c\u043f\u043b\u0435\u0439\u0442\u0438",label:"\u0422\u0435\u043c\u043f\u043b\u0435\u0439\u0442","desc_label":"\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435",desc:"\u0412\u043c\u044a\u043a\u043d\u0438 \u0441\u044a\u0434\u044a\u0440\u0436\u0430\u043d\u0438\u0435\u0442\u043e \u043d\u0430 \u0442\u0435\u043c\u043f\u043b\u0435\u0439\u0442",select:"\u0418\u0437\u0431\u0435\u0440\u0438 \u0442\u0435\u043c\u043f\u043b\u0435\u0439\u0442",preview:"\u041f\u0440\u0435\u0433\u043b\u0435\u0434",warning:"\u0412\u043d\u0438\u043c\u0430\u043d\u0438\u0435: \u041e\u0431\u043d\u043e\u0432\u044f\u0432\u0430\u043d\u0435\u0442\u043e \u043d\u0430 \u0435\u0434\u0438\u043d \u0442\u0435\u043c\u043f\u043b\u0435\u0439\u0442 \u0441 \u0434\u0440\u0443\u0433 \u043c\u043e\u0436\u0435 \u0434\u0430 \u0434\u043e\u0432\u0435\u0434\u0435 \u0434\u043e \u0437\u0430\u0433\u0443\u0431\u0430 \u043d\u0430 \u0434\u0430\u043d\u043d\u0438.","mdate_format":"%Y-%m-%d %H:%M:%S","cdate_format":"%Y-%m-%d %H:%M:%S","months_long":"\u042f\u043d\u0443\u0430\u0440\u0438,\u0424\u0435\u0432\u0440\u0443\u0430\u0440\u0438,\u041c\u0430\u0440\u0442,\u0410\u043f\u0440\u0438\u043b,\u041c\u0430\u0439,\u042e\u043d\u0438,\u042e\u043b\u0438,\u0410\u0432\u0433\u0443\u0441\u0442,\u0421\u0435\u043f\u0442\u0435\u043c\u0432\u0440\u0438,\u041e\u043a\u0442\u043e\u043c\u0432\u0440\u0438,\u041d\u043e\u0435\u043c\u0432\u0440\u0438,\u0414\u0435\u043a\u0435\u043c\u0432\u0440\u0438","months_short":"\u042f\u043d\u0443,\u0424\u0435\u0432,\u041c\u0430\u0440,\u0410\u043f\u0440,\u041c\u0430\u0439,\u042e\u043d\u0438,\u042e\u043b\u0438,\u0410\u0432\u0433,\u0421\u0435\u043f,\u041e\u043a\u0442,\u041d\u043e\u0435,\u0414\u0435\u043a","day_long":"\u041d\u0435\u0434\u0435\u043b\u044f,\u041f\u043e\u043d\u0435\u0434\u0435\u043b\u043d\u0438\u043a,\u0412\u0442\u043e\u0440\u043d\u0438\u043a,\u0421\u0440\u044f\u0434\u0430,\u0427\u0435\u0442\u0432\u044a\u0440\u0442\u044a\u043a,\u041f\u0435\u0442\u044a\u043a,\u0421\u044a\u0431\u043e\u0442\u0430,\u041d\u0435\u0434\u0435\u043b\u044f","day_short":"\u041d\u0434,\u041f\u043d,\u0412\u0442,\u0421\u0440,\u0427\u0442,\u041f\u0442,\u0421\u0431,\u041d\u0434"});webcit-8.24-dfsg.orig/tiny_mce/plugins/template/langs/fr_dlg.js0000644000175000017500000000133312271477123024402 0ustar michaelmichaeltinyMCE.addI18n('fr.template_dlg',{title:"Mod\u00e8les",label:"Mod\u00e8le","desc_label":"Description",desc:"Ins\u00e9rer un mod\u00e8le pr\u00e9d\u00e9fini",select:"Choisir un mod\u00e8le",preview:"Pr\u00e9visualisation",warning:"Attention : Mettre \u00e0 jour un mod\u00e8le pour un autre peut entra\u00eener une perte de donn\u00e9es !","mdate_format":"%d/%m/%Y %H:%M:%S","cdate_format":"%d/%m/%Y %H:%M:%S","months_long":"Janvier,F\u00e9vrier,Mars,Avril,Mai,Juin,Juillet,Ao\u00fbt,Septembre,Octobre,Novembre,D\u00e9cembre","months_short":"Jan,F\u00e9v,Mar,Avr,Mai,Juin,Juil,Ao\u00fbt,Sep,Oct,Nov,D\u00e9c","day_long":"Dimanche,Lundi,Mardi,Mercredi,Jeudi,Vendredi,Samedi,Dimanche","day_short":"Dim,Lun,Mar,Mer,Jeu,Ven,Sam,Dim"});webcit-8.24-dfsg.orig/tiny_mce/plugins/template/langs/zh-cn_dlg.js0000644000175000017500000000173512271477123025020 0ustar michaelmichaeltinyMCE.addI18n('zh-cn.template_dlg',{title:"\u6a21\u677f",label:"\u6a21\u677f","desc_label":"\u8bf4\u660e",desc:"\u63d2\u5165\u9884\u8bbe\u7684\u6a21\u677f\u5185\u5bb9",select:"\u9009\u62e9\u6a21\u677f",preview:"\u9884\u89c8",warning:"\u8b66\u544a\uff1a\u66f4\u65b0\u6a21\u677f\u53ef\u80fd\u5bfc\u81f4\u6570\u636e\u4e22\u5931\u3002","mdate_format":"%Y-%m-%d %H:%M:%S","cdate_format":"%Y-%m-%d %H:%M:%S","months_long":"\u4e00\u6708,\u4e8c\u6708,\u4e09\u6708,\u56db\u6708,\u4e94\u6708,\u516d\u6708,\u4e03\u6708,\u516b\u6708,\u4e5d\u6708,\u5341\u6708,\u5341\u4e00\u6708,\u5341\u4e8c\u6708","months_short":"1\u6708,2\u6708,3\u6708,4\u6708,5\u6708,6\u6708,7\u6708,8\u6708,9\u6708,10\u6708,11\u6708,12\u6708","day_long":"\u661f\u671f\u65e5,\u661f\u671f\u4e00,\u661f\u671f\u4e8c,\u661f\u671f\u4e09,\u661f\u671f\u56db,\u661f\u671f\u4e94,\u661f\u671f\u516d,\u661f\u671f\u65e5","day_short":"\u5468\u65e5,\u5468\u4e00,\u5468\u4e8c,\u5468\u4e09,\u5468\u56db,\u5468\u4e94,\u5468\u516d,\u5468\u65e5"});webcit-8.24-dfsg.orig/tiny_mce/plugins/template/langs/de_dlg.js0000644000175000017500000000122612271477123024364 0ustar michaelmichaeltinyMCE.addI18n('de.template_dlg',{title:"Vorlagen",label:"Vorlage","desc_label":"Beschreibung",desc:"Inhalt aus Vorlage einf\u00fcgen",select:"Vorlage ausw\u00e4hlen",preview:"Vorschau",warning:"Warnung: Eine Vorlage mit einer anderen zu aktualisieren kann zu einem Datenverlust f\u00fchren!","mdate_format":"%Y-%m-%d %H:%M:%S","cdate_format":"%Y-%m-%d %H:%M:%S","months_long":"Januar,Februar,M\u00e4rz,April,Mai,Juni,Juli,August,September,Oktober,November,Dezember","months_short":"Jan,Feb,M\u00e4r,Apr,Mai,Juni,Juli,Aug,Sept,Okt,Nov,Dez","day_long":"Sonntag,Montag,Dienstag,Mittwoch,Donnerstag,Freitag,Samstag,Sonntag","day_short":"So,Mo,Di,Mi,Do,Fr,Sa,So"});webcit-8.24-dfsg.orig/tiny_mce/plugins/template/langs/fi_dlg.js0000644000175000017500000000136412271477123024375 0ustar michaelmichaeltinyMCE.addI18n('fi.template_dlg',{title:"Sivupohjat",label:"Sivupohja","desc_label":"Kuvaus",desc:"Lis\u00e4\u00e4 esim\u00e4\u00e4ritetty\u00e4 sivupohjasis\u00e4lt\u00f6\u00e4",select:"Valitse sivupohja",preview:"Esikatselu",warning:"Varoitus: Sivupohjan p\u00e4ivitt\u00e4minen toisella saattaa aiheuttaa tiedon menetyksen.","mdate_format":"%d.%m.%Y %H:%M:%S","cdate_format":"%d.%m.%Y %H:%M:%S","months_long":"Tammikuu,Helmikuu,Maaliskuu,Huhtikuu,Toukokuu,Kes\u00e4kuu,Hein\u00e4kuu,Elokuu,Syyskuu,Lokakuu,Marraskuu,Joulukuu","months_short":"Tammi,Helmi,Maalis,Huhti,Touko,Kes\u00e4,Hein\u00e4,Elo,Syys,Loka,Marras,Joulu","day_long":"sunnuntai,maanantai,tiistai,keskiviikko,torstai,perjantai,lauantai,sunnuntai","day_short":"su,ma,ti,ke,to,pe,la,su"});webcit-8.24-dfsg.orig/tiny_mce/plugins/template/langs/et_dlg.js0000644000175000017500000000132612271477123024405 0ustar michaelmichaeltinyMCE.addI18n('et.template_dlg',{title:"\u0160abloonid",label:"\u0160abloon","desc_label":"Kirjeldus",desc:"Sisesta eeldefineeritud \u0161ablooni sisu",select:"Vali \u0161abloon",preview:"Eelvaade",warning:"Hoiatus: \u0160ablooni uuendamine teistsugusega v\u00f5ib kaasa tuua andmete kaotsiminemist.","mdate_format":"%Y-%m-%d %H:%M:%S","cdate_format":"%Y-%m-%d %H:%M:%S","months_long":"Jaanuar,Veebruar,M\u00e4rts,Aprill,Mai,Juuni,Juuli,August,September,Oktoober,November,Detsember","months_short":"Jaan,Veeb,M\u00e4rts,Apr,Mai,Juuni,Juuli,Aug,Sep,Okt,Nov,Dets","day_long":"P\u00fchap\u00e4ev,Esmasp\u00e4ev,Teisip\u00e4ev,Kolmap\u00e4ev,Neljap\u00e4ev,reede,Laup\u00e4ev,P\u00fchap\u00e4ev","day_short":"P,E,T,K,N,R,L,P"});webcit-8.24-dfsg.orig/tiny_mce/plugins/template/langs/es_dlg.js0000644000175000017500000000123112271477123024377 0ustar michaelmichaeltinyMCE.addI18n('es.template_dlg',{title:"Plantillas",label:"Plantilla","desc_label":"Descripci\u00f3n",desc:"Insertar contenido de plantilla predefinida",select:"Elegir plantilla",preview:"Vista previa",warning:"Cuidado: Actualizar una plantilla con otra puede causar p\u00e9rdida de datos.","mdate_format":"%d-%m-%Y %H:%M:%S","cdate_format":"%d-%m-%Y %H:%M:%S","months_long":"Enero,Febrero,Marzo,Abril,Mayo,Junio,Julio,Agosto,Septiembre,Octubre,Noviembre,Diciembre","months_short":"Ene,Feb,Mar,Abr,May,Jun,Jul,Ago,Sep,Oct,Nov,Dic","day_long":"Domingo,Lunes,Martes,Mi\u00e9rcoles,Jueves,Viernes,S\u00e1bado,Domingo","day_short":"Dom,Lun,Mar,Mie,Jue,Vie,Sab,Dom"});webcit-8.24-dfsg.orig/tiny_mce/plugins/template/langs/da_dlg.js0000644000175000017500000000123612271477123024361 0ustar michaelmichaeltinyMCE.addI18n('da.template_dlg',{title:"Skabeloner",label:"Skabelon","desc_label":"Beskrivelse",desc:"Inds\u00e6t pr\u00e6defineret skabelonindhold",select:"V\u00e6lg en skabelon",preview:"Vis udskrift",warning:"Advarsel: Opdatering af en skabelon med en anden kan betyde datatab.","mdate_format":"%Y-%m-%d %H:%M:%S","cdate_format":"%Y-%m-%d %H:%M:%S","months_long":"Januar,Februar,Marts,April,Maj,Juni,Juli,August,September,Oktober,November,December","months_short":"Jan,Feb,Mar,Apr,Maj,Jun,Jul,Aug,Sep,Okt,Nov,Dec","day_long":"S\u00f8ndag,Mandag,Tirsdag,Onsdag,Torsdag,Fredag,L\u00f8rdag,S\u00f8ndag","day_short":"S\u00f8n,Man,Tirs,Ons,Tors,Fre,L\u00f8r,S\u00f8n"});webcit-8.24-dfsg.orig/tiny_mce/plugins/template/langs/el_dlg.js0000644000175000017500000000476512271477123024407 0ustar michaelmichaeltinyMCE.addI18n('el.template_dlg',{title:"\u03a0\u03c1\u03cc\u03c4\u03c5\u03c0\u03b1",label:"\u03a0\u03c1\u03cc\u03c4\u03c5\u03c0\u03bf","desc_label":"\u03a0\u03b5\u03c1\u03b9\u03b3\u03c1\u03b1\u03c6\u03ae",desc:"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae \u03c0\u03b5\u03c1\u03b9\u03b5\u03c7\u03bf\u03bc\u03ad\u03bd\u03bf\u03c5 \u03b3\u03b9\u03b1 \u03c0\u03c1\u03bf\u03ba\u03b1\u03b8\u03bf\u03c1\u03b9\u03c3\u03bc\u03ad\u03bd\u03bf \u03c0\u03c1\u03cc\u03c4\u03c5\u03c0\u03bf",select:"\u0395\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae \u03c0\u03c1\u03bf\u03c4\u03cd\u03c0\u03bf\u03c5",preview:"\u03a0\u03c1\u03bf\u03b5\u03c0\u03b9\u03c3\u03ba\u03cc\u03c0\u03b7\u03c3\u03b7",warning:"\u03a0\u03c1\u03bf\u03c3\u03bf\u03c7\u03ae : \u0395\u03bd\u03b7\u03bc\u03b5\u03c1\u03ce\u03bd\u03bf\u03bd\u03c4\u03b1\u03c2 \u03ad\u03bd\u03b1 \u03c0\u03c1\u03cc\u03c4\u03c5\u03c0\u03bf \u03bc\u03b5 \u03ad\u03bd\u03b1 \u03ac\u03bb\u03bb\u03bf, \u03bc\u03c0\u03bf\u03c1\u03b5\u03af \u03bd\u03b1 \u03c0\u03c1\u03bf\u03ba\u03b1\u03bb\u03ad\u03c3\u03b5\u03b9 \u03b1\u03c0\u03ce\u03bb\u03b5\u03b9\u03b1 \u03b4\u03b5\u03b4\u03bf\u03bc\u03ad\u03bd\u03c9\u03bd.","mdate_format":"%Y-%m-%d %H:%M:%S","cdate_format":"%Y-%m-%d %H:%M:%S","months_long":"\u0399\u03b1\u03bd\u03bf\u03c5\u03ac\u03c1\u03b9\u03bf\u03c2,\u03a6\u03b5\u03b2\u03c1\u03bf\u03c5\u03ac\u03c1\u03b9\u03bf\u03c2,\u039c\u03ac\u03c1\u03c4\u03b9\u03bf\u03c2,\u0391\u03c0\u03c1\u03af\u03bb\u03b9\u03bf\u03c2,\u039c\u03ac\u03b9\u03bf\u03c2,\u0399\u03bf\u03cd\u03bd\u03b9\u03bf\u03c2,\u0399\u03bf\u03cd\u03bb\u03b9\u03bf\u03c2,\u0391\u03cd\u03b3\u03bf\u03c5\u03c3\u03c4\u03bf\u03c2,\u03a3\u03b5\u03c0\u03c4\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2,\u039f\u03ba\u03c4\u03ce\u03b2\u03c1\u03b9\u03bf\u03c2,\u039d\u03bf\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2,\u0394\u03b5\u03ba\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2","months_short":"\u0399\u03b1\u03bd,\u03a6\u03b5\u03b2,\u039c\u03ac\u03c1,\u0391\u03c0\u03c1,\u039c\u03ac\u03b9,\u0399\u03bf\u03cd\u03bd,\u0399\u03bf\u03cd\u03bb,\u0391\u03cd\u03b3,\u03a3\u03b5\u03c0,\u039f\u03ba\u03c4,\u039d\u03bf\u03ad,\u0394\u03b5\u03ba","day_long":"\u039a\u03c5\u03c1\u03b9\u03b1\u03ba\u03ae,\u0394\u03b5\u03c5\u03c4\u03ad\u03c1\u03b1,\u03a4\u03c1\u03af\u03c4\u03b7,\u03a4\u03b5\u03c4\u03ac\u03c1\u03c4\u03b7,\u03a0\u03ad\u03bc\u03c0\u03c4\u03b7,\u03a0\u03b1\u03c1\u03b1\u03c3\u03ba\u03b5\u03c5\u03ae,\u03a3\u03ac\u03b2\u03b2\u03b1\u03c4\u03bf","day_short":"\u039a\u03c5,\u0394\u03b5,\u03a4\u03c1,\u03a4\u03b5\u03c4,\u03a0\u03ad\u03bc,\u03a0\u03b1\u03c1,\u03a3\u03b1\u03b2"});webcit-8.24-dfsg.orig/tiny_mce/plugins/template/langs/hu_dlg.js0000644000175000017500000000144112271477123024407 0ustar michaelmichaeltinyMCE.addI18n('hu.template_dlg',{title:"Sablon beilleszt\u00e9se",label:"Sablon","desc_label":"Le\u00edr\u00e1s",desc:"Sablon beilleszt\u00e9se",select:"Sablon v\u00e1laszt\u00e1sa",preview:"El\u0151n\u00e9zet",warning:"Figyelem: Egy m\u00e1r alkalmazott sablon friss\u00edt\u00e9se m\u00e1sikkal adatveszt\u00e9ssel j\u00e1rhat.","mdate_format":"%Y.%m.%d. %H:%M:%S","cdate_format":"%Y.%m.%d. %H:%M:%S","months_long":"janu\u00e1r,febru\u00e1r,m\u00e1rcius,\u00e1prilis,m\u00e1jus,j\u00fanius,j\u00falius,augusztus,szeptember,okt\u00f3ber,november,december","months_short":"jan,feb,m\u00e1r,\u00e1pr,m\u00e1j,j\u00fan,j\u00fal,aug,szep,okt,nov,dec","day_long":"vas\u00e1rnap,h\u00e9tf\u0151,kedd,szerda,cs\u00fct\u00f6rt\u00f6k,p\u00e9ntek,szombat,vas\u00e1rnap","day_short":"V,H,K,Sze,Cs,P,Szo,V"});webcit-8.24-dfsg.orig/tiny_mce/plugins/template/langs/cs_dlg.js0000644000175000017500000000145212271477123024402 0ustar michaelmichaeltinyMCE.addI18n('cs.template_dlg',{title:"\u0160ablony",label:"\u0160ablona","desc_label":"Popis",desc:"Vlo\u017eit p\u0159eddefinovan\u00fd obsah ze \u0161ablony",select:"Vybrat \u0161ablonu",preview:"N\u00e1hled",warning:"Upozorn\u011bn\u00ed: Aktualizace \u0161ablony jinou zp\u016fsob\u00ed ztr\u00e1tu dat.","mdate_format":"%d.%m.%Y %H:%M:%S","cdate_format":"%d.%m.%Y %H:%M:%S","months_long":"Leden,\u00danor,B\u0159ezen,Duben,Kv\u011bten,\u010cerven,\u010cervenec,Srpen,Z\u00e1\u0159\u00ed,\u0158\u00edjen,Listopad,Prosinec","months_short":"Led,\u00dano,B\u0159e,Dub,Kv\u011b,\u010cer,\u010cvc,Srp,Z\u00e1\u0159,\u0158\u00edj,Lis,Pro","day_long":"Ned\u011ble,Pond\u011bl\u00ed,\u00dater\u00fd,St\u0159eda,\u010ctvrtek,P\u00e1tek,Sobota,Ned\u011ble","day_short":"Ne,Po,\u00dat,St,\u010ct,P\u00e1,So,Ne"});webcit-8.24-dfsg.orig/tiny_mce/plugins/template/langs/en_dlg.js0000644000175000017500000000116312271477123024376 0ustar michaelmichaeltinyMCE.addI18n('en.template_dlg',{title:"Templates",label:"Template","desc_label":"Description",desc:"Insert Predefined Template Content",select:"Select a Template",preview:"Preview",warning:"Warning: Updating a template with a different one may cause data loss.","mdate_format":"%Y-%m-%d %H:%M:%S","cdate_format":"%Y-%m-%d %H:%M:%S","months_long":"January,February,March,April,May,June,July,August,September,October,November,December","months_short":"Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec","day_long":"Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday","day_short":"Sun,Mon,Tue,Wed,Thu,Fri,Sat,Sun"});webcit-8.24-dfsg.orig/tiny_mce/plugins/template/langs/it_dlg.js0000644000175000017500000000126512271477123024413 0ustar michaelmichaeltinyMCE.addI18n('it.template_dlg',{title:"Modelli",label:"Modello","desc_label":"Descrizione",desc:"Inserisci contenuto da modello predefinito",select:"Seleziona un modello",preview:"Anteprima",warning:"Attenzione: Aggiornare un modello con un altro differente pu\u00f2 causare perdite di dati.","mdate_format":"%Y-%m-%d %H:%M:%S","cdate_format":"%Y-%m-%d %H:%M:%S","months_long":"Gennaio,Febbraio,Marzo,Aprile,Maggio,Giugno,Luglio,Agosto,Settembre,Ottobre,Novembre,Dicembre","months_short":"Gen,Feb,Mar,Apr,Mag,Giu,Lug,Ago,Set,Ott,Nov,Dic","day_long":"Domenica,Luned\u00ec,Marted\u00ec,Mercoled\u00ec,Gioved\u00ec,Venerd\u00ec,Sabato,Domenica","day_short":"Dom,Lun,Mar,Mer,Gio,Ven,Sab,Dom"});webcit-8.24-dfsg.orig/tiny_mce/plugins/template/blank.htm0000644000175000017500000000051412271477123023304 0ustar michaelmichael blank_page webcit-8.24-dfsg.orig/tiny_mce/plugins/template/editor_plugin.js0000644000175000017500000000634612271477123024716 0ustar michaelmichael(function(){var a=tinymce.each;tinymce.create("tinymce.plugins.TemplatePlugin",{init:function(b,c){var d=this;d.editor=b;b.addCommand("mceTemplate",function(e){b.windowManager.open({file:c+"/template.htm",width:b.getParam("template_popup_width",750),height:b.getParam("template_popup_height",600),inline:1},{plugin_url:c})});b.addCommand("mceInsertTemplate",d._insertTemplate,d);b.addButton("template",{title:"template.desc",cmd:"mceTemplate"});b.onPreProcess.add(function(e,g){var f=e.dom;a(f.select("div",g.node),function(h){if(f.hasClass(h,"mceTmpl")){a(f.select("*",h),function(i){if(f.hasClass(i,e.getParam("template_mdate_classes","mdate").replace(/\s+/g,"|"))){i.innerHTML=d._getDateTime(new Date(),e.getParam("template_mdate_format",e.getLang("template.mdate_format")))}});d._replaceVals(h)}})})},getInfo:function(){return{longname:"Template plugin",author:"Moxiecode Systems AB",authorurl:"http://www.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/template",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_insertTemplate:function(i,j){var k=this,g=k.editor,f,c,d=g.dom,b=g.selection.getContent();f=j.content;a(k.editor.getParam("template_replace_values"),function(l,h){if(typeof(l)!="function"){f=f.replace(new RegExp("\\{\\$"+h+"\\}","g"),l)}});c=d.create("div",null,f);n=d.select(".mceTmpl",c);if(n&&n.length>0){c=d.create("div",null);c.appendChild(n[0].cloneNode(true))}function e(l,h){return new RegExp("\\b"+h+"\\b","g").test(l.className)}a(d.select("*",c),function(h){if(e(h,g.getParam("template_cdate_classes","cdate").replace(/\s+/g,"|"))){h.innerHTML=k._getDateTime(new Date(),g.getParam("template_cdate_format",g.getLang("template.cdate_format")))}if(e(h,g.getParam("template_mdate_classes","mdate").replace(/\s+/g,"|"))){h.innerHTML=k._getDateTime(new Date(),g.getParam("template_mdate_format",g.getLang("template.mdate_format")))}if(e(h,g.getParam("template_selected_content_classes","selcontent").replace(/\s+/g,"|"))){h.innerHTML=b}});k._replaceVals(c);g.execCommand("mceInsertContent",false,c.innerHTML);g.addVisual()},_replaceVals:function(c){var d=this.editor.dom,b=this.editor.getParam("template_replace_values");a(d.select("*",c),function(f){a(b,function(g,e){if(d.hasClass(f,e)){if(typeof(b[e])=="function"){b[e](f)}}})})},_getDateTime:function(e,b){if(!b){return""}function c(g,d){var f;g=""+g;if(g.length {#template_dlg.title}
    {#template_dlg.desc}
    {#template_dlg.preview}
    webcit-8.24-dfsg.orig/tiny_mce/plugins/template/js/0000755000175000017500000000000012271477123022117 5ustar michaelmichaelwebcit-8.24-dfsg.orig/tiny_mce/plugins/template/js/template.js0000644000175000017500000000533112271477123024272 0ustar michaelmichaeltinyMCEPopup.requireLangPack(); var TemplateDialog = { preInit : function() { var url = tinyMCEPopup.getParam("template_external_list_url"); if (url != null) document.write(''); }, init : function() { var ed = tinyMCEPopup.editor, tsrc, sel, x, u; tsrc = ed.getParam("template_templates", false); sel = document.getElementById('tpath'); // Setup external template list if (!tsrc && typeof(tinyMCETemplateList) != 'undefined') { for (x=0, tsrc = []; x'); }); }, selectTemplate : function(u, ti) { var d = window.frames['templatesrc'].document, x, tsrc = this.tsrc; if (!u) return; d.body.innerHTML = this.templateHTML = this.getFileContents(u); for (x=0; x')); Event.add(id, 'keyup', function(evt) { var VK_ESCAPE = 27; if (evt.keyCode === VK_ESCAPE) { f.button_func(false); return Event.cancel(evt); } }); Event.add(id, 'keydown', function(evt) { var cancelButton, VK_TAB = 9; if (evt.keyCode === VK_TAB) { cancelButton = DOM.select('a.mceCancel', id + '_wrapper')[0]; if (cancelButton && cancelButton !== evt.target) { cancelButton.focus(); } else { DOM.get(id + '_ok').focus(); } return Event.cancel(evt); } }); } // Register events mdf = Event.add(id, 'mousedown', function(e) { var n = e.target, w, vp; w = t.windows[id]; t.focus(id); if (n.nodeName == 'A' || n.nodeName == 'a') { if (n.className == 'mceClose') { t.close(null, id); return Event.cancel(e); } else if (n.className == 'mceMax') { w.oldPos = w.element.getXY(); w.oldSize = w.element.getSize(); vp = DOM.getViewPort(); // Reduce viewport size to avoid scrollbars vp.w -= 2; vp.h -= 2; w.element.moveTo(vp.x, vp.y); w.element.resizeTo(vp.w, vp.h); DOM.setStyles(id + '_ifr', {width : vp.w - w.deltaWidth, height : vp.h - w.deltaHeight}); DOM.addClass(id + '_wrapper', 'mceMaximized'); } else if (n.className == 'mceMed') { // Reset to old size w.element.moveTo(w.oldPos.x, w.oldPos.y); w.element.resizeTo(w.oldSize.w, w.oldSize.h); w.iframeElement.resizeTo(w.oldSize.w - w.deltaWidth, w.oldSize.h - w.deltaHeight); DOM.removeClass(id + '_wrapper', 'mceMaximized'); } else if (n.className == 'mceMove') return t._startDrag(id, e, n.className); else if (DOM.hasClass(n, 'mceResize')) return t._startDrag(id, e, n.className.substring(13)); } }); clf = Event.add(id, 'click', function(e) { var n = e.target; t.focus(id); if (n.nodeName == 'A' || n.nodeName == 'a') { switch (n.className) { case 'mceClose': t.close(null, id); return Event.cancel(e); case 'mceButton mceOk': case 'mceButton mceCancel': f.button_func(n.className == 'mceButton mceOk'); return Event.cancel(e); } } }); // Make sure the tab order loops within the dialog. Event.add([id + '_left', id + '_right'], 'focus', function(evt) { var iframe = DOM.get(id + '_ifr'); if (iframe) { var body = iframe.contentWindow.document.body; var focusable = DOM.select(':input:enabled,*[tabindex=0]', body); if (evt.target.id === (id + '_left')) { focusable[focusable.length - 1].focus(); } else { focusable[0].focus(); } } else { DOM.get(id + '_ok').focus(); } }); // Add window w = t.windows[id] = { id : id, mousedown_func : mdf, click_func : clf, element : new Element(id, {blocker : 1, container : ed.getContainer()}), iframeElement : new Element(id + '_ifr'), features : f, deltaWidth : dw, deltaHeight : dh }; w.iframeElement.on('focus', function() { t.focus(id); }); // Setup blocker if (t.count == 0 && t.editor.getParam('dialog_type', 'modal') == 'modal') { DOM.add(DOM.doc.body, 'div', { id : 'mceModalBlocker', 'class' : (t.editor.settings.inlinepopups_skin || 'clearlooks2') + '_modalBlocker', style : {zIndex : t.zIndex - 1} }); DOM.show('mceModalBlocker'); // Reduces flicker in IE DOM.setAttrib(DOM.doc.body, 'aria-hidden', 'true'); } else DOM.setStyle('mceModalBlocker', 'z-index', t.zIndex - 1); if (tinymce.isIE6 || /Firefox\/2\./.test(navigator.userAgent) || (tinymce.isIE && !DOM.boxModel)) DOM.setStyles('mceModalBlocker', {position : 'absolute', left : vp.x, top : vp.y, width : vp.w - 2, height : vp.h - 2}); DOM.setAttrib(id, 'aria-hidden', 'false'); t.focus(id); t._fixIELayout(id, 1); // Focus ok button if (DOM.get(id + '_ok')) DOM.get(id + '_ok').focus(); t.count++; return w; }, focus : function(id) { var t = this, w; if (w = t.windows[id]) { w.zIndex = this.zIndex++; w.element.setStyle('zIndex', w.zIndex); w.element.update(); id = id + '_wrapper'; DOM.removeClass(t.lastId, 'mceFocus'); DOM.addClass(id, 'mceFocus'); t.lastId = id; if (w.focussedElement) { w.focussedElement.focus(); } else if (DOM.get(id + '_ok')) { DOM.get(w.id + '_ok').focus(); } else if (DOM.get(w.id + '_ifr')) { DOM.get(w.id + '_ifr').focus(); } } }, _addAll : function(te, ne) { var i, n, t = this, dom = tinymce.DOM; if (is(ne, 'string')) te.appendChild(dom.doc.createTextNode(ne)); else if (ne.length) { te = te.appendChild(dom.create(ne[0], ne[1])); for (i=2; i ix) { fw = w; ix = w.zIndex; } }); return fw; }, setTitle : function(w, ti) { var e; w = this._findId(w); if (e = DOM.get(w + '_title')) e.innerHTML = DOM.encode(ti); }, alert : function(txt, cb, s) { var t = this, w; w = t.open({ title : t, type : 'alert', button_func : function(s) { if (cb) cb.call(s || t, s); t.close(null, w.id); }, content : DOM.encode(t.editor.getLang(txt, txt)), inline : 1, width : 400, height : 130 }); }, confirm : function(txt, cb, s) { var t = this, w; w = t.open({ title : t, type : 'confirm', button_func : function(s) { if (cb) cb.call(s || t, s); t.close(null, w.id); }, content : DOM.encode(t.editor.getLang(txt, txt)), inline : 1, width : 400, height : 130 }); }, // Internal functions _findId : function(w) { var t = this; if (typeof(w) == 'string') return w; each(t.windows, function(wo) { var ifr = DOM.get(wo.id + '_ifr'); if (ifr && w == ifr.contentWindow) { w = wo.id; return false; } }); return w; }, _fixIELayout : function(id, s) { var w, img; if (!tinymce.isIE6) return; // Fixes the bug where hover flickers and does odd things in IE6 each(['n','s','w','e','nw','ne','sw','se'], function(v) { var e = DOM.get(id + '_resize_' + v); DOM.setStyles(e, { width : s ? e.clientWidth : '', height : s ? e.clientHeight : '', cursor : DOM.getStyle(e, 'cursor', 1) }); DOM.setStyle(id + "_bottom", 'bottom', '-1px'); e = 0; }); // Fixes graphics glitch if (w = this.windows[id]) { // Fixes rendering bug after resize w.element.hide(); w.element.show(); // Forced a repaint of the window //DOM.get(id).style.filter = ''; // IE has a bug where images used in CSS won't get loaded // sometimes when the cache in the browser is disabled // This fix tries to solve it by loading the images using the image object each(DOM.select('div,a', id), function(e, i) { if (e.currentStyle.backgroundImage != 'none') { img = new Image(); img.src = e.currentStyle.backgroundImage.replace(/url\(\"(.+)\"\)/, '$1'); } }); DOM.get(id).style.filter = ''; } } }); // Register plugin tinymce.PluginManager.add('inlinepopups', tinymce.plugins.InlinePopups); })(); webcit-8.24-dfsg.orig/tiny_mce/plugins/inlinepopups/skins/0000755000175000017500000000000012271477123023544 5ustar michaelmichaelwebcit-8.24-dfsg.orig/tiny_mce/plugins/inlinepopups/skins/clearlooks2/0000755000175000017500000000000012271477123025764 5ustar michaelmichaelwebcit-8.24-dfsg.orig/tiny_mce/plugins/inlinepopups/skins/clearlooks2/window.css0000644000175000017500000001474112271477123030014 0ustar michaelmichael/* Clearlooks 2 */ /* Reset */ .clearlooks2, .clearlooks2 div, .clearlooks2 span, .clearlooks2 a {vertical-align:baseline; text-align:left; position:absolute; border:0; padding:0; margin:0; background:transparent; font-family:Arial,Verdana; font-size:11px; color:#000; text-decoration:none; font-weight:normal; width:auto; height:auto; overflow:hidden; display:block} /* General */ .clearlooks2 {position:absolute; direction:ltr} .clearlooks2 .mceWrapper {position:static} .mceEventBlocker {position:fixed; left:0; top:0; background:url(img/horizontal.gif) no-repeat 0 -75px; width:100%; height:100%} .clearlooks2 .mcePlaceHolder {border:1px solid #000; background:#888; top:0; left:0; opacity:0.5; -ms-filter:'alpha(opacity=50)'; filter:alpha(opacity=50)} .clearlooks2_modalBlocker {position:fixed; left:0; top:0; width:100%; height:100%; background:#FFF; opacity:0.6; -ms-filter:'alpha(opacity=60)'; filter:alpha(opacity=60); display:none} /* Top */ .clearlooks2 .mceTop, .clearlooks2 .mceTop div {top:0; width:100%; height:23px} .clearlooks2 .mceTop .mceLeft {width:6px; background:url(img/corners.gif)} .clearlooks2 .mceTop .mceCenter {right:6px; width:100%; height:23px; background:url(img/horizontal.gif) 12px 0; clip:rect(auto auto auto 12px)} .clearlooks2 .mceTop .mceRight {right:0; width:6px; height:23px; background:url(img/corners.gif) -12px 0} .clearlooks2 .mceTop span {width:100%; text-align:center; vertical-align:middle; line-height:23px; font-weight:bold} .clearlooks2 .mceFocus .mceTop .mceLeft {background:url(img/corners.gif) -6px 0} .clearlooks2 .mceFocus .mceTop .mceCenter {background:url(img/horizontal.gif) 0 -23px} .clearlooks2 .mceFocus .mceTop .mceRight {background:url(img/corners.gif) -18px 0} .clearlooks2 .mceFocus .mceTop span {color:#FFF} /* Middle */ .clearlooks2 .mceMiddle, .clearlooks2 .mceMiddle div {top:0} .clearlooks2 .mceMiddle {width:100%; height:100%; clip:rect(23px auto auto auto)} .clearlooks2 .mceMiddle .mceLeft {left:0; width:5px; height:100%; background:url(img/vertical.gif) -5px 0} .clearlooks2 .mceMiddle span {top:23px; left:5px; width:100%; height:100%; background:#FFF} .clearlooks2 .mceMiddle .mceRight {right:0; width:5px; height:100%; background:url(img/vertical.gif)} /* Bottom */ .clearlooks2 .mceBottom, .clearlooks2 .mceBottom div {height:6px} .clearlooks2 .mceBottom {left:0; bottom:0; width:100%} .clearlooks2 .mceBottom div {top:0} .clearlooks2 .mceBottom .mceLeft {left:0; width:5px; background:url(img/corners.gif) -34px -6px} .clearlooks2 .mceBottom .mceCenter {left:5px; width:100%; background:url(img/horizontal.gif) 0 -46px} .clearlooks2 .mceBottom .mceRight {right:0; width:5px; background: url(img/corners.gif) -34px 0} .clearlooks2 .mceBottom span {display:none} .clearlooks2 .mceStatusbar .mceBottom, .clearlooks2 .mceStatusbar .mceBottom div {height:23px} .clearlooks2 .mceStatusbar .mceBottom .mceLeft {background:url(img/corners.gif) -29px 0} .clearlooks2 .mceStatusbar .mceBottom .mceCenter {background:url(img/horizontal.gif) 0 -52px} .clearlooks2 .mceStatusbar .mceBottom .mceRight {background:url(img/corners.gif) -24px 0} .clearlooks2 .mceStatusbar .mceBottom span {display:block; left:7px; font-family:Arial, Verdana; font-size:11px; line-height:23px} /* Actions */ .clearlooks2 a {width:29px; height:16px; top:3px;} .clearlooks2 .mceClose {right:6px; background:url(img/buttons.gif) -87px 0} .clearlooks2 .mceMin {display:none; right:68px; background:url(img/buttons.gif) 0 0} .clearlooks2 .mceMed {display:none; right:37px; background:url(img/buttons.gif) -29px 0} .clearlooks2 .mceMax {display:none; right:37px; background:url(img/buttons.gif) -58px 0} .clearlooks2 .mceMove {display:none;width:100%;cursor:move;background:url(img/corners.gif) no-repeat -100px -100px} .clearlooks2 .mceMovable .mceMove {display:block} .clearlooks2 .mceFocus .mceClose {right:6px; background:url(img/buttons.gif) -87px -16px} .clearlooks2 .mceFocus .mceMin {right:68px; background:url(img/buttons.gif) 0 -16px} .clearlooks2 .mceFocus .mceMed {right:37px; background:url(img/buttons.gif) -29px -16px} .clearlooks2 .mceFocus .mceMax {right:37px; background:url(img/buttons.gif) -58px -16px} .clearlooks2 .mceFocus .mceClose:hover {right:6px; background:url(img/buttons.gif) -87px -32px} .clearlooks2 .mceFocus .mceClose:hover {right:6px; background:url(img/buttons.gif) -87px -32px} .clearlooks2 .mceFocus .mceMin:hover {right:68px; background:url(img/buttons.gif) 0 -32px} .clearlooks2 .mceFocus .mceMed:hover {right:37px; background:url(img/buttons.gif) -29px -32px} .clearlooks2 .mceFocus .mceMax:hover {right:37px; background:url(img/buttons.gif) -58px -32px} /* Resize */ .clearlooks2 .mceResize {top:auto; left:auto; display:none; width:5px; height:5px; background:url(img/horizontal.gif) no-repeat 0 -75px} .clearlooks2 .mceResizable .mceResize {display:block} .clearlooks2 .mceResizable .mceMin, .clearlooks2 .mceMax {display:none} .clearlooks2 .mceMinimizable .mceMin {display:block} .clearlooks2 .mceMaximizable .mceMax {display:block} .clearlooks2 .mceMaximized .mceMed {display:block} .clearlooks2 .mceMaximized .mceMax {display:none} .clearlooks2 a.mceResizeN {top:0; left:0; width:100%; cursor:n-resize} .clearlooks2 a.mceResizeNW {top:0; left:0; cursor:nw-resize} .clearlooks2 a.mceResizeNE {top:0; right:0; cursor:ne-resize} .clearlooks2 a.mceResizeW {top:0; left:0; height:100%; cursor:w-resize;} .clearlooks2 a.mceResizeE {top:0; right:0; height:100%; cursor:e-resize} .clearlooks2 a.mceResizeS {bottom:0; left:0; width:100%; cursor:s-resize} .clearlooks2 a.mceResizeSW {bottom:0; left:0; cursor:sw-resize} .clearlooks2 a.mceResizeSE {bottom:0; right:0; cursor:se-resize} /* Alert/Confirm */ .clearlooks2 .mceButton {font-weight:bold; bottom:10px; width:80px; height:30px; background:url(img/button.gif); line-height:30px; vertical-align:middle; text-align:center; outline:0} .clearlooks2 .mceMiddle .mceIcon {left:15px; top:35px; width:32px; height:32px} .clearlooks2 .mceAlert .mceMiddle span, .clearlooks2 .mceConfirm .mceMiddle span {background:transparent;left:60px; top:35px; width:320px; height:50px; font-weight:bold; overflow:auto; white-space:normal} .clearlooks2 a:hover {font-weight:bold;} .clearlooks2 .mceAlert .mceMiddle, .clearlooks2 .mceConfirm .mceMiddle {background:#D6D7D5} .clearlooks2 .mceAlert .mceOk {left:50%; top:auto; margin-left: -40px} .clearlooks2 .mceAlert .mceIcon {background:url(img/alert.gif)} .clearlooks2 .mceConfirm .mceOk {left:50%; top:auto; margin-left: -90px} .clearlooks2 .mceConfirm .mceCancel {left:50%; top:auto} .clearlooks2 .mceConfirm .mceIcon {background:url(img/confirm.gif)} webcit-8.24-dfsg.orig/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/0000755000175000017500000000000012271477123026540 5ustar michaelmichaelwebcit-8.24-dfsg.orig/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/button.gif0000644000175000017500000000042012271477123030536 0ustar michaelmichaelGIF87aPccc,PPC8;qdihjLm,tJxpH<H1ɜ-P@ZجvvoްxL΂贚z^6|>~vz"w7ħ/! ;webcit-8.24-dfsg.orig/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/corners.gif0000644000175000017500000000161512271477123030705 0ustar michaelmichaelGIF89a'I=:8 }݂~ދ釚uù볧η̴%+ҭٴ!I,'@II)HH)H#@G 9 G@91, 1,I4%C$%4$CƯ##H/./.ĭH-D /yX%Sb B"h(EIb SB>(P "(pBaJ &=Ip03HUt`SgfAV UUa" ݹqe+o߽(] *!n@AY)@ ڊч ؈:j> `#} ܀B g FFrWwPNSرrԭ+N|݄سkν;ËOӫ_Ͼ_˟Ͽ(h& 6 „Vhfyv!x.($h(,0(.;webcit-8.24-dfsg.orig/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/buttons.gif0000644000175000017500000000225312271477123030727 0ustar michaelmichaelGIF89at0n{Q[c787k|`r~WdpZiu^n|\kyy{x!,t0Fdi&l;nr-bA|c#B,< Ak6LTL9:z:9D;{>9u|ͻ߿u}Ả?5سk^}{ޱw߾u?~˟?*&{P5 6蠃 >@ '>HaJ] Thpb*B/17X\60DbHNUF7ALdP"YeS2 ې[F))iPyfd)fn&`&w U|矀g~G(,ꨟP 餔Vj^馒f駔z *Q)`ꩨ*R 묧J[+XfkU T*`&.6 JK-k\n+W޺njعƞXnټλY^oڿ Zy\[fE-'1ʕMpƲ'2v!{{%ww) (s|57\ l2+ b!^hv F@$T#;5,v>v5xyƪLMep')q7)fy ~>*yz(/y 0~>j(Jz{+Ȯ>k뮿 {F{l/{j;webcit-8.24-dfsg.orig/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/alert.gif0000644000175000017500000000145212271477123030340 0ustar michaelmichaelGIF87a {nn \\ܣ<<66CCJJ888CCdd--QQ33yyWWiivvkj<<llbb$$uuEE׎ڴMLpp++$$eeKKRRÌͳ==AAdd::))::JJjjWWPP((;;ħɣп%%%ƪ00ccIIϺ̱֘~ȟ^]עUU,,ڌyy||٭QPNNđƘBB__??mm 㺺߀bbսwv, z{k1q1/r6#n0Sw((E{0*44<:{l y$W 7za=t^ LZf]y[dD'L1t%oAU' &6 >Uc-ܴ#K%QlÆs%(Ñ"<88Cpj":)Fj$&s_xS-*B",d yj9HǬ[4iuG  HhACvfCˀZ-aH˻xtfBŃ|1 vPBݑѶɣA B(CӨH倠4r A!+r=ąب !üЛ fЙ?$ν?f ӧG@;webcit-8.24-dfsg.orig/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/confirm.gif0000644000175000017500000000161312271477123030665 0ustar michaelmichaelGIF87a y7*T xg(Z[3ʜ[ūu=ѻnKc+؈,Meх+9CRڃL5\D~z3~ %zn)E"<jT,-E΂-wIܕ@T8»aʡ_Ȯ}I:TµІ2aû{_}a݊#׳^]ݏ1ƘPőU{79P|y, xx O O x]H[#f#[H]I_f_I #JE# FW̯F œɽMMy T =yQ QPf~8 *8瀓 j{Aj zR3|,dп$Ədp #Aw=`"=Phs$ `AQiph)8ډMQɈT@C P⽓-NU;C2 ^ V%rΡfwtd> q yC:j(SMu! C@k+S&YI6[1!x a$mXT6>GX@CKR$9OƄc'#X FE ys=@…&łܭra ֱÉ}Up-H"FčI;webcit-8.24-dfsg.orig/tiny_mce/plugins/inlinepopups/editor_plugin.js0000644000175000017500000002720512271477123025625 0ustar michaelmichael(function(){var d=tinymce.DOM,b=tinymce.dom.Element,a=tinymce.dom.Event,e=tinymce.each,c=tinymce.is;tinymce.create("tinymce.plugins.InlinePopups",{init:function(f,g){f.onBeforeRenderUI.add(function(){f.windowManager=new tinymce.InlineWindowManager(f);d.loadCSS(g+"/skins/"+(f.settings.inlinepopups_skin||"clearlooks2")+"/window.css")})},getInfo:function(){return{longname:"InlinePopups",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/inlinepopups",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.create("tinymce.InlineWindowManager:tinymce.WindowManager",{InlineWindowManager:function(f){var g=this;g.parent(f);g.zIndex=300000;g.count=0;g.windows={}},open:function(s,j){var z=this,i,k="",r=z.editor,g=0,v=0,h,m,o,q,l,x,y,n;s=s||{};j=j||{};if(!s.inline){return z.parent(s,j)}n=z._frontWindow();if(n&&d.get(n.id+"_ifr")){n.focussedElement=d.get(n.id+"_ifr").contentWindow.document.activeElement}if(!s.type){z.bookmark=r.selection.getBookmark(1)}i=d.uniqueId();h=d.getViewPort();s.width=parseInt(s.width||320);s.height=parseInt(s.height||240)+(tinymce.isIE?8:0);s.min_width=parseInt(s.min_width||150);s.min_height=parseInt(s.min_height||100);s.max_width=parseInt(s.max_width||2000);s.max_height=parseInt(s.max_height||2000);s.left=s.left||Math.round(Math.max(h.x,h.x+(h.w/2)-(s.width/2)));s.top=s.top||Math.round(Math.max(h.y,h.y+(h.h/2)-(s.height/2)));s.movable=s.resizable=true;j.mce_width=s.width;j.mce_height=s.height;j.mce_inline=true;j.mce_window_id=i;j.mce_auto_focus=s.auto_focus;z.features=s;z.params=j;z.onOpen.dispatch(z,s,j);if(s.type){k+=" mceModal";if(s.type){k+=" mce"+s.type.substring(0,1).toUpperCase()+s.type.substring(1)}s.resizable=false}if(s.statusbar){k+=" mceStatusbar"}if(s.resizable){k+=" mceResizable"}if(s.minimizable){k+=" mceMinimizable"}if(s.maximizable){k+=" mceMaximizable"}if(s.movable){k+=" mceMovable"}z._addAll(d.doc.body,["div",{id:i,role:"dialog","aria-labelledby":s.type?i+"_content":i+"_title","class":(r.settings.inlinepopups_skin||"clearlooks2")+(tinymce.isIE&&window.getSelection?" ie9":""),style:"width:100px;height:100px"},["div",{id:i+"_wrapper","class":"mceWrapper"+k},["div",{id:i+"_top","class":"mceTop"},["div",{"class":"mceLeft"}],["div",{"class":"mceCenter"}],["div",{"class":"mceRight"}],["span",{id:i+"_title"},s.title||""]],["div",{id:i+"_middle","class":"mceMiddle"},["div",{id:i+"_left","class":"mceLeft",tabindex:"0"}],["span",{id:i+"_content"}],["div",{id:i+"_right","class":"mceRight",tabindex:"0"}]],["div",{id:i+"_bottom","class":"mceBottom"},["div",{"class":"mceLeft"}],["div",{"class":"mceCenter"}],["div",{"class":"mceRight"}],["span",{id:i+"_status"},"Content"]],["a",{"class":"mceMove",tabindex:"-1",href:"javascript:;"}],["a",{"class":"mceMin",tabindex:"-1",href:"javascript:;",onmousedown:"return false;"}],["a",{"class":"mceMax",tabindex:"-1",href:"javascript:;",onmousedown:"return false;"}],["a",{"class":"mceMed",tabindex:"-1",href:"javascript:;",onmousedown:"return false;"}],["a",{"class":"mceClose",tabindex:"-1",href:"javascript:;",onmousedown:"return false;"}],["a",{id:i+"_resize_n","class":"mceResize mceResizeN",tabindex:"-1",href:"javascript:;"}],["a",{id:i+"_resize_s","class":"mceResize mceResizeS",tabindex:"-1",href:"javascript:;"}],["a",{id:i+"_resize_w","class":"mceResize mceResizeW",tabindex:"-1",href:"javascript:;"}],["a",{id:i+"_resize_e","class":"mceResize mceResizeE",tabindex:"-1",href:"javascript:;"}],["a",{id:i+"_resize_nw","class":"mceResize mceResizeNW",tabindex:"-1",href:"javascript:;"}],["a",{id:i+"_resize_ne","class":"mceResize mceResizeNE",tabindex:"-1",href:"javascript:;"}],["a",{id:i+"_resize_sw","class":"mceResize mceResizeSW",tabindex:"-1",href:"javascript:;"}],["a",{id:i+"_resize_se","class":"mceResize mceResizeSE",tabindex:"-1",href:"javascript:;"}]]]);d.setStyles(i,{top:-10000,left:-10000});if(tinymce.isGecko){d.setStyle(i,"overflow","auto")}if(!s.type){g+=d.get(i+"_left").clientWidth;g+=d.get(i+"_right").clientWidth;v+=d.get(i+"_top").clientHeight;v+=d.get(i+"_bottom").clientHeight}d.setStyles(i,{top:s.top,left:s.left,width:s.width+g,height:s.height+v});y=s.url||s.file;if(y){if(tinymce.relaxedDomain){y+=(y.indexOf("?")==-1?"?":"&")+"mce_rdomain="+tinymce.relaxedDomain}y=tinymce._addVer(y)}if(!s.type){d.add(i+"_content","iframe",{id:i+"_ifr",src:'javascript:""',frameBorder:0,style:"border:0;width:10px;height:10px"});d.setStyles(i+"_ifr",{width:s.width,height:s.height});d.setAttrib(i+"_ifr","src",y)}else{d.add(i+"_wrapper","a",{id:i+"_ok","class":"mceButton mceOk",href:"javascript:;",onmousedown:"return false;"},"Ok");if(s.type=="confirm"){d.add(i+"_wrapper","a",{"class":"mceButton mceCancel",href:"javascript:;",onmousedown:"return false;"},"Cancel")}d.add(i+"_middle","div",{"class":"mceIcon"});d.setHTML(i+"_content",s.content.replace("\n","
    "));a.add(i,"keyup",function(f){var p=27;if(f.keyCode===p){s.button_func(false);return a.cancel(f)}});a.add(i,"keydown",function(f){var t,p=9;if(f.keyCode===p){t=d.select("a.mceCancel",i+"_wrapper")[0];if(t&&t!==f.target){t.focus()}else{d.get(i+"_ok").focus()}return a.cancel(f)}})}o=a.add(i,"mousedown",function(t){var u=t.target,f,p;f=z.windows[i];z.focus(i);if(u.nodeName=="A"||u.nodeName=="a"){if(u.className=="mceClose"){z.close(null,i);return a.cancel(t)}else{if(u.className=="mceMax"){f.oldPos=f.element.getXY();f.oldSize=f.element.getSize();p=d.getViewPort();p.w-=2;p.h-=2;f.element.moveTo(p.x,p.y);f.element.resizeTo(p.w,p.h);d.setStyles(i+"_ifr",{width:p.w-f.deltaWidth,height:p.h-f.deltaHeight});d.addClass(i+"_wrapper","mceMaximized")}else{if(u.className=="mceMed"){f.element.moveTo(f.oldPos.x,f.oldPos.y);f.element.resizeTo(f.oldSize.w,f.oldSize.h);f.iframeElement.resizeTo(f.oldSize.w-f.deltaWidth,f.oldSize.h-f.deltaHeight);d.removeClass(i+"_wrapper","mceMaximized")}else{if(u.className=="mceMove"){return z._startDrag(i,t,u.className)}else{if(d.hasClass(u,"mceResize")){return z._startDrag(i,t,u.className.substring(13))}}}}}}});q=a.add(i,"click",function(f){var p=f.target;z.focus(i);if(p.nodeName=="A"||p.nodeName=="a"){switch(p.className){case"mceClose":z.close(null,i);return a.cancel(f);case"mceButton mceOk":case"mceButton mceCancel":s.button_func(p.className=="mceButton mceOk");return a.cancel(f)}}});a.add([i+"_left",i+"_right"],"focus",function(p){var t=d.get(i+"_ifr");if(t){var f=t.contentWindow.document.body;var u=d.select(":input:enabled,*[tabindex=0]",f);if(p.target.id===(i+"_left")){u[u.length-1].focus()}else{u[0].focus()}}else{d.get(i+"_ok").focus()}});x=z.windows[i]={id:i,mousedown_func:o,click_func:q,element:new b(i,{blocker:1,container:r.getContainer()}),iframeElement:new b(i+"_ifr"),features:s,deltaWidth:g,deltaHeight:v};x.iframeElement.on("focus",function(){z.focus(i)});if(z.count==0&&z.editor.getParam("dialog_type","modal")=="modal"){d.add(d.doc.body,"div",{id:"mceModalBlocker","class":(z.editor.settings.inlinepopups_skin||"clearlooks2")+"_modalBlocker",style:{zIndex:z.zIndex-1}});d.show("mceModalBlocker");d.setAttrib(d.doc.body,"aria-hidden","true")}else{d.setStyle("mceModalBlocker","z-index",z.zIndex-1)}if(tinymce.isIE6||/Firefox\/2\./.test(navigator.userAgent)||(tinymce.isIE&&!d.boxModel)){d.setStyles("mceModalBlocker",{position:"absolute",left:h.x,top:h.y,width:h.w-2,height:h.h-2})}d.setAttrib(i,"aria-hidden","false");z.focus(i);z._fixIELayout(i,1);if(d.get(i+"_ok")){d.get(i+"_ok").focus()}z.count++;return x},focus:function(h){var g=this,f;if(f=g.windows[h]){f.zIndex=this.zIndex++;f.element.setStyle("zIndex",f.zIndex);f.element.update();h=h+"_wrapper";d.removeClass(g.lastId,"mceFocus");d.addClass(h,"mceFocus");g.lastId=h;if(f.focussedElement){f.focussedElement.focus()}else{if(d.get(h+"_ok")){d.get(f.id+"_ok").focus()}else{if(d.get(f.id+"_ifr")){d.get(f.id+"_ifr").focus()}}}}},_addAll:function(k,h){var g,l,f=this,j=tinymce.DOM;if(c(h,"string")){k.appendChild(j.doc.createTextNode(h))}else{if(h.length){k=k.appendChild(j.create(h[0],h[1]));for(g=2;gf){g=h;f=h.zIndex}});return g},setTitle:function(f,g){var h;f=this._findId(f);if(h=d.get(f+"_title")){h.innerHTML=d.encode(g)}},alert:function(g,f,j){var i=this,h;h=i.open({title:i,type:"alert",button_func:function(k){if(f){f.call(k||i,k)}i.close(null,h.id)},content:d.encode(i.editor.getLang(g,g)),inline:1,width:400,height:130})},confirm:function(g,f,j){var i=this,h;h=i.open({title:i,type:"confirm",button_func:function(k){if(f){f.call(k||i,k)}i.close(null,h.id)},content:d.encode(i.editor.getLang(g,g)),inline:1,width:400,height:130})},_findId:function(f){var g=this;if(typeof(f)=="string"){return f}e(g.windows,function(h){var i=d.get(h.id+"_ifr");if(i&&f==i.contentWindow){f=h.id;return false}});return f},_fixIELayout:function(i,h){var f,g;if(!tinymce.isIE6){return}e(["n","s","w","e","nw","ne","sw","se"],function(j){var k=d.get(i+"_resize_"+j);d.setStyles(k,{width:h?k.clientWidth:"",height:h?k.clientHeight:"",cursor:d.getStyle(k,"cursor",1)});d.setStyle(i+"_bottom","bottom","-1px");k=0});if(f=this.windows[i]){f.element.hide();f.element.show();e(d.select("div,a",i),function(k,j){if(k.currentStyle.backgroundImage!="none"){g=new Image();g.src=k.currentStyle.backgroundImage.replace(/url\(\"(.+)\"\)/,"$1")}});d.get(i).style.filter=""}}});tinymce.PluginManager.add("inlinepopups",tinymce.plugins.InlinePopups)})();webcit-8.24-dfsg.orig/tiny_mce/plugins/inlinepopups/template.htm0000644000175000017500000003111612271477123024744 0ustar michaelmichael Template for dialogs
    Blured
    Content
    Statusbar text.
    Focused
    Content
    Statusbar text.
    Statusbar
    Content
    Statusbar text.
    Statusbar, Resizable
    Content
    Statusbar text.
    Resizable, Maximizable
    Content
    Statusbar text.
    Blurred, Maximizable, Statusbar, Resizable
    Content
    Statusbar text.
    Maximized, Maximizable, Minimizable
    Content
    Statusbar text.
    Blured
    Content
    Statusbar text.
    Alert
    This is a very long error message. This is a very long error message. This is a very long error message. This is a very long error message. This is a very long error message. This is a very long error message. This is a very long error message. This is a very long error message. This is a very long error message. This is a very long error message. This is a very long error message. This is a very long error message.
    Ok
    Confirm
    This is a very long error message. This is a very long error message. This is a very long error message. This is a very long error message. This is a very long error message. This is a very long error message. This is a very long error message. This is a very long error message. This is a very long error message. This is a very long error message. This is a very long error message. This is a very long error message.
    Ok Cancel
    webcit-8.24-dfsg.orig/tiny_mce/plugins/autolink/0000755000175000017500000000000012271477123021516 5ustar michaelmichaelwebcit-8.24-dfsg.orig/tiny_mce/plugins/autolink/editor_plugin_src.js0000644000175000017500000001135012271477123025567 0ustar michaelmichael/** * editor_plugin_src.js * * Copyright 2011, Moxiecode Systems AB * Released under LGPL License. * * License: http://tinymce.moxiecode.com/license * Contributing: http://tinymce.moxiecode.com/contributing */ (function() { tinymce.create('tinymce.plugins.AutolinkPlugin', { /** * Initializes the plugin, this will be executed after the plugin has been created. * This call is done before the editor instance has finished it's initialization so use the onInit event * of the editor instance to intercept that event. * * @param {tinymce.Editor} ed Editor instance that the plugin is initialized in. * @param {string} url Absolute URL to where the plugin is located. */ init : function(ed, url) { var t = this; // Internet Explorer has built-in automatic linking if (tinyMCE.isIE) return; // Add a key down handler ed.onKeyDown.add(function(ed, e) { if (e.keyCode == 13) return t.handleEnter(ed); }); ed.onKeyPress.add(function(ed, e) { if (e.which == 41) return t.handleEclipse(ed); }); // Add a key up handler ed.onKeyUp.add(function(ed, e) { if (e.keyCode == 32) return t.handleSpacebar(ed); }); }, handleEclipse : function(ed) { this.parseCurrentLine(ed, -1, '(', true); }, handleSpacebar : function(ed) { this.parseCurrentLine(ed, 0, '', true); }, handleEnter : function(ed) { this.parseCurrentLine(ed, -1, '', false); }, parseCurrentLine : function(ed, end_offset, delimiter, goback) { var r, end, start, endContainer, bookmark, text, matches, prev, len; // We need at least five characters to form a URL, // hence, at minimum, five characters from the beginning of the line. r = ed.selection.getRng().cloneRange(); if (r.startOffset < 5) { // During testing, the caret is placed inbetween two text nodes. // The previous text node contains the URL. prev = r.endContainer.previousSibling; if (prev == null) { if (r.endContainer.firstChild == null || r.endContainer.firstChild.nextSibling == null) return; prev = r.endContainer.firstChild.nextSibling; } len = prev.length; r.setStart(prev, len); r.setEnd(prev, len); if (r.endOffset < 5) return; end = r.endOffset; endContainer = prev; } else { endContainer = r.endContainer; // Get a text node if (endContainer.nodeType != 3 && endContainer.firstChild) { while (endContainer.nodeType != 3 && endContainer.firstChild) endContainer = endContainer.firstChild; r.setStart(endContainer, 0); r.setEnd(endContainer, endContainer.nodeValue.length); } if (r.endOffset == 1) end = 2; else end = r.endOffset - 1 - end_offset; } start = end; do { // Move the selection one character backwards. r.setStart(endContainer, end - 2); r.setEnd(endContainer, end - 1); end -= 1; // Loop until one of the following is found: a blank space,  , delimeter, (end-2) >= 0 } while (r.toString() != ' ' && r.toString() != '' && r.toString().charCodeAt(0) != 160 && (end -2) >= 0 && r.toString() != delimiter); if (r.toString() == delimiter || r.toString().charCodeAt(0) == 160) { r.setStart(endContainer, end); r.setEnd(endContainer, start); end += 1; } else if (r.startOffset == 0) { r.setStart(endContainer, 0); r.setEnd(endContainer, start); } else { r.setStart(endContainer, end); r.setEnd(endContainer, start); } text = r.toString(); matches = text.match(/^(https?:\/\/|ssh:\/\/|ftp:\/\/|file:\/|www\.)(.+)$/i); if (matches) { if (matches[1] == 'www.') { matches[1] = 'http://www.'; } bookmark = ed.selection.getBookmark(); ed.selection.setRng(r); tinyMCE.execCommand('createlink',false, matches[1] + matches[2]); ed.selection.moveToBookmark(bookmark); // TODO: Determine if this is still needed. if (tinyMCE.isWebKit) { // move the caret to its original position ed.selection.collapse(false); var max = Math.min(endContainer.length, start + 1); r.setStart(endContainer, max); r.setEnd(endContainer, max); ed.selection.setRng(r); } } }, /** * Returns information about the plugin as a name/value array. * The current keys are longname, author, authorurl, infourl and version. * * @return {Object} Name/value array containing information about the plugin. */ getInfo : function() { return { longname : 'Autolink', author : 'Moxiecode Systems AB', authorurl : 'http://tinymce.moxiecode.com', infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/autolink', version : tinymce.majorVersion + "." + tinymce.minorVersion }; } }); // Register plugin tinymce.PluginManager.add('autolink', tinymce.plugins.AutolinkPlugin); })(); webcit-8.24-dfsg.orig/tiny_mce/plugins/autolink/editor_plugin.js0000644000175000017500000000412612271477123024723 0ustar michaelmichael(function(){tinymce.create("tinymce.plugins.AutolinkPlugin",{init:function(a,b){var c=this;if(tinyMCE.isIE){return}a.onKeyDown.add(function(d,f){if(f.keyCode==13){return c.handleEnter(d)}});a.onKeyPress.add(function(d,f){if(f.which==41){return c.handleEclipse(d)}});a.onKeyUp.add(function(d,f){if(f.keyCode==32){return c.handleSpacebar(d)}})},handleEclipse:function(a){this.parseCurrentLine(a,-1,"(",true)},handleSpacebar:function(a){this.parseCurrentLine(a,0,"",true)},handleEnter:function(a){this.parseCurrentLine(a,-1,"",false)},parseCurrentLine:function(i,d,b,g){var a,f,c,n,k,m,h,e,j;a=i.selection.getRng().cloneRange();if(a.startOffset<5){e=a.endContainer.previousSibling;if(e==null){if(a.endContainer.firstChild==null||a.endContainer.firstChild.nextSibling==null){return}e=a.endContainer.firstChild.nextSibling}j=e.length;a.setStart(e,j);a.setEnd(e,j);if(a.endOffset<5){return}f=a.endOffset;n=e}else{n=a.endContainer;if(n.nodeType!=3&&n.firstChild){while(n.nodeType!=3&&n.firstChild){n=n.firstChild}a.setStart(n,0);a.setEnd(n,n.nodeValue.length)}if(a.endOffset==1){f=2}else{f=a.endOffset-1-d}}c=f;do{a.setStart(n,f-2);a.setEnd(n,f-1);f-=1}while(a.toString()!=" "&&a.toString()!=""&&a.toString().charCodeAt(0)!=160&&(f-2)>=0&&a.toString()!=b);if(a.toString()==b||a.toString().charCodeAt(0)==160){a.setStart(n,f);a.setEnd(n,c);f+=1}else{if(a.startOffset==0){a.setStart(n,0);a.setEnd(n,c)}else{a.setStart(n,f);a.setEnd(n,c)}}m=a.toString();h=m.match(/^(https?:\/\/|ssh:\/\/|ftp:\/\/|file:\/|www\.)(.+)$/i);if(h){if(h[1]=="www."){h[1]="http://www."}k=i.selection.getBookmark();i.selection.setRng(a);tinyMCE.execCommand("createlink",false,h[1]+h[2]);i.selection.moveToBookmark(k);if(tinyMCE.isWebKit){i.selection.collapse(false);var l=Math.min(n.length,c+1);a.setStart(n,l);a.setEnd(n,l);i.selection.setRng(a)}}},getInfo:function(){return{longname:"Autolink",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/autolink",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("autolink",tinymce.plugins.AutolinkPlugin)})();webcit-8.24-dfsg.orig/tiny_mce/plugins/advlink/0000755000175000017500000000000012271477123021320 5ustar michaelmichaelwebcit-8.24-dfsg.orig/tiny_mce/plugins/advlink/editor_plugin_src.js0000644000175000017500000000314112271477123025370 0ustar michaelmichael/** * editor_plugin_src.js * * Copyright 2009, Moxiecode Systems AB * Released under LGPL License. * * License: http://tinymce.moxiecode.com/license * Contributing: http://tinymce.moxiecode.com/contributing */ (function() { tinymce.create('tinymce.plugins.AdvancedLinkPlugin', { init : function(ed, url) { this.editor = ed; // Register commands ed.addCommand('mceAdvLink', function() { var se = ed.selection; // No selection and not in link if (se.isCollapsed() && !ed.dom.getParent(se.getNode(), 'A')) return; ed.windowManager.open({ file : url + '/link.htm', width : 480 + parseInt(ed.getLang('advlink.delta_width', 0)), height : 400 + parseInt(ed.getLang('advlink.delta_height', 0)), inline : 1 }, { plugin_url : url }); }); // Register buttons ed.addButton('link', { title : 'advlink.link_desc', cmd : 'mceAdvLink' }); ed.addShortcut('ctrl+k', 'advlink.advlink_desc', 'mceAdvLink'); ed.onNodeChange.add(function(ed, cm, n, co) { cm.setDisabled('link', co && n.nodeName != 'A'); cm.setActive('link', n.nodeName == 'A' && !n.name); }); }, getInfo : function() { return { longname : 'Advanced link', author : 'Moxiecode Systems AB', authorurl : 'http://tinymce.moxiecode.com', infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advlink', version : tinymce.majorVersion + "." + tinymce.minorVersion }; } }); // Register plugin tinymce.PluginManager.add('advlink', tinymce.plugins.AdvancedLinkPlugin); })();webcit-8.24-dfsg.orig/tiny_mce/plugins/advlink/langs/0000755000175000017500000000000012271477123022424 5ustar michaelmichaelwebcit-8.24-dfsg.orig/tiny_mce/plugins/advlink/langs/bg_dlg.js0000644000175000017500000001241312271477123024201 0ustar michaelmichaeltinyMCE.addI18n('bg.advlink_dlg',{"target_name":"\u0418\u043c\u0435 \u043d\u0430 \u0446\u0435\u043b",classes:"\u041a\u043b\u0430\u0441\u043e\u0432\u0435",style:"\u0421\u0442\u0438\u043b",id:"Id","popup_position":"\u041f\u043e\u0437\u0438\u0446\u0438\u044f (X/Y)",langdir:"\u041f\u043e\u0441\u043e\u043a\u0430 \u043d\u0430 \u0435\u0437\u0438\u043a\u0430","popup_size":"\u0420\u0430\u0437\u043c\u0435\u0440","popup_dependent":"\u0417\u0430\u0432\u0438\u0441\u0438\u043c\u0438 (Mozilla/Firefox only)","popup_resizable":"\u0420\u0430\u0437\u0440\u0435\u0448\u0438 \u043f\u0440\u0435\u043e\u0440\u0430\u0437\u043c\u0435\u0440\u044f\u0432\u0430\u043d\u0435 \u043d\u0430 \u043f\u0440\u043e\u0437\u043e\u0440\u0446\u0438\u0442\u0435","popup_location":"\u041f\u043e\u043a\u0430\u0436\u0438 location bar","popup_menubar":"\u041f\u043e\u043a\u0430\u0436\u0438 \u043b\u0435\u043d\u0442\u0430\u0442\u0430 \u0441 \u043c\u0435\u043d\u044e\u0442\u0430","popup_toolbar":"\u041f\u043e\u043a\u0430\u0436\u0438 \u043b\u0435\u043d\u0442\u0438\u0442\u0435 \u0441 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0438","popup_statusbar":"\u041f\u043e\u043a\u0430\u0436\u0438 status bar","popup_scrollbars":"\u041f\u043e\u043a\u0430\u0436\u0438 \u0441\u043a\u0440\u043e\u043b\u0435\u0440\u0438","popup_return":"\u0412\u043c\u044a\u043a\u043d\u0438 \'return false\'","popup_name":"\u0418\u043c\u0435 \u043d\u0430 \u043f\u0440\u043e\u0437\u043e\u0440\u0435\u0446\u0430","popup_url":"URL \u043d\u0430 popup-\u0430",popup:"Javascript popup","target_blank":"\u041e\u0442\u0432\u043e\u0440\u0438 \u0432 \u043d\u043e\u0432 \u043f\u0440\u043e\u0437\u043e\u0440\u0435\u0446","target_top":"\u041e\u0442\u0432\u043e\u0440\u0438 \u0432 \u043d\u0430\u0439-\u0433\u043e\u0440\u043d\u0438\u044f \u0444\u0440\u0435\u0439\u043c (\u0437\u0430\u043c\u0435\u0441\u0442\u0432\u0430 \u0432\u0441\u0438\u0447\u043a\u0438 \u0444\u0440\u0435\u0439\u043c\u043e\u0432\u0435)","target_parent":"\u041e\u0442\u0432\u043e\u0440\u0438 \u0432 \u0433\u043e\u0440\u043d\u0438\u044f \u043f\u0440\u043e\u0437\u043e\u0440\u0435\u0446 / \u0444\u0440\u0435\u0439\u043c","target_same":"\u041e\u0442\u0432\u043e\u0440\u0438 \u0432 \u0442\u043e\u0437\u0438 \u043f\u0440\u043e\u0437\u043e\u0440\u0435\u0446 / \u0444\u0440\u0435\u0439\u043c","anchor_names":"\u041a\u043e\u0442\u0432\u0438","popup_opts":"\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438","advanced_props":"\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0437\u0430 \u043d\u0430\u043f\u0440\u0435\u0434\u043d\u0430\u043b\u0438","event_props":"\u0421\u044a\u0431\u0438\u0442\u0438\u044f","popup_props":"Popup \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438","general_props":"\u041e\u0431\u0449\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438","advanced_tab":"\u0417\u0430 \u043d\u0430\u043f\u0440\u0435\u0434\u043d\u0430\u043b\u0438","events_tab":"\u0421\u044a\u0431\u0438\u0442\u0438\u044f","popup_tab":"Popup","general_tab":"\u041e\u0431\u0449\u0438",list:"\u0421\u043f\u0438\u0441\u044a\u043a \u0441 \u0445\u0438\u043f\u0435\u0440\u0432\u0440\u044a\u0437\u043a\u0438","is_external":"URL-\u0442\u043e, \u043a\u043e\u0435\u0442\u043e \u0432\u044a\u0432\u0435\u0434\u043e\u0445\u0442\u0435 \u0435 \u0432\u044a\u043d\u0448\u043d\u0430 \u0445\u0438\u043f\u0435\u0440\u0432\u0440\u044a\u0437\u043a\u0430, \u0436\u0435\u043b\u0430\u0435\u0442\u0435 \u043b\u0438 \u0434\u0430 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u0435 \u043d\u0443\u0436\u043d\u0438\u044f\u0442 http:// \u043f\u0440\u0435\u0444\u0438\u043a\u0441?","is_email":"URL-\u0442\u043e, \u043a\u043e\u0435\u0442\u043e \u0432\u044a\u0432\u0435\u0434\u043e\u0445\u0442\u0435 \u0435 email \u0430\u0434\u0440\u0435\u0441, \u0436\u0435\u043b\u0430\u0435\u0442\u0435 \u043b\u0438 \u0434\u0430 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u0435 \u043d\u0443\u0436\u043d\u0438\u044f\u0442 mailto: \u043f\u0440\u0435\u0444\u0438\u043a\u0441?",titlefield:"\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u0435",target:"\u0426\u0435\u043b",url:"URL \u043d\u0430 \u0445\u0438\u043f\u0435\u0440\u0432\u0440\u044a\u0437\u043a\u0430",title:"\u0412\u043c\u044a\u043a\u043d\u0438/\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0430\u0439 \u0445\u0438\u043f\u0435\u0440\u0432\u0440\u044a\u0437\u043a\u0430","link_list":"\u0421\u043f\u0438\u0441\u044a\u043a \u0441 \u0445\u0438\u043f\u0435\u0440\u0432\u0440\u044a\u0437\u043a\u0438",rtl:"\u041e\u0442\u0434\u044f\u0441\u043d\u043e \u043d\u0430 \u043b\u044f\u0432\u043e",ltr:"\u041e\u0442\u043b\u044f\u0432\u043e \u043d\u0430 \u0434\u044f\u0441\u043d\u043e",accesskey:"\u041a\u043b\u0430\u0432\u0438\u0448",tabindex:"\u041f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u043d\u043e\u0441\u0442",rev:"\u0412\u0437\u0430\u0438\u043c\u043e\u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435 \u0446\u0435\u043b - \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430",rel:"\u0412\u0437\u0430\u0438\u043c\u043e\u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 - \u0446\u0435\u043b",mime:"MIME \u0442\u0438\u043f",encoding:"\u041a\u043e\u0434\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u0441\u0438\u043c\u0432\u043e\u043b\u0438\u0442\u0435",langcode:"\u041a\u043e\u0434 \u043d\u0430 \u0435\u0437\u0438\u043a\u0430","target_langcode":"\u0415\u0437\u0438\u043a",width:"Width",height:"Height"});webcit-8.24-dfsg.orig/tiny_mce/plugins/advlink/langs/fr_dlg.js0000644000175000017500000000410512271477123024217 0ustar michaelmichaeltinyMCE.addI18n('fr.advlink_dlg',{"target_name":"Nom de la cible",classes:"Classes",style:"Style",id:"Id","popup_position":"Position (X/Y)",langdir:"Sens de lecture","popup_size":"Taille","popup_dependent":"D\u00e9pendante (seulement sous Mozilla/Firefox)","popup_resizable":"Autoriser le redimensionnement de la fen\u00eatre","popup_location":"Afficher la barre d\'adresse","popup_menubar":"Afficher la barre de menu","popup_toolbar":"Afficher la barre d\'outils","popup_statusbar":"Afficher la barre d\'\u00e9tat","popup_scrollbars":"Afficher les ascenseurs","popup_return":"Ins\u00e9rer \'return false\'","popup_name":"Nom de la fen\u00eatre","popup_url":"URL de la popup",popup:"Popup Javascript","target_blank":"Ouvrir dans une nouvelle fen\u00eatre","target_top":"Ouvrir dans le cadre principal (remplace tous les cadres)","target_parent":"Ouvrir dans la fen\u00eatre / le cadre parent","target_same":"Ouvrir dans cette fen\u00eatre / dans ce cadre","anchor_names":"Ancres","popup_opts":"Options","advanced_props":"Propri\u00e9t\u00e9s avanc\u00e9es","event_props":"\u00c9v\u00e8nements","popup_props":"Propri\u00e9t\u00e9s de la popup","general_props":"Propri\u00e9t\u00e9s g\u00e9n\u00e9rales","advanced_tab":"Avanc\u00e9","events_tab":"\u00c9v\u00e8nements","popup_tab":"Popup","general_tab":"G\u00e9n\u00e9ral",list:"Liste de liens","is_external":"L\'URL que vous avez saisie semble \u00eatre une adresse web externe. Souhaitez-vous ajouter le pr\u00e9fixe \u00ab http:// \u00bb ?","is_email":"L\'URL que vous avez saisie semble \u00eatre une adresse e-mail, souhaitez-vous ajouter le pr\u00e9fixe \u00ab mailto: \u00bb ?",titlefield:"Titre",target:"Cible",url:"URL du lien",title:"Ins\u00e9rer / \u00e9diter un lien","link_list":"Liste des liens",rtl:"Droite \u00e0 gauche",ltr:"Gauche \u00e0 droite",accesskey:"Touche d\'acc\u00e8s rapide",tabindex:"Tabindex",rev:"Relation de la cible \u00e0 la page",rel:"Relation de la page \u00e0 la cible",mime:"Type MIME de la cible",encoding:"Encodage de la cible",langcode:"Code de la langue","target_langcode":"Langue de la cible",width:"Width",height:"Height"});webcit-8.24-dfsg.orig/tiny_mce/plugins/advlink/langs/zh-cn_dlg.js0000644000175000017500000000442612271477123024635 0ustar michaelmichaeltinyMCE.addI18n('zh-cn.advlink_dlg',{"target_name":"\u76ee\u6807\u540d\u79f0",classes:"\u7c7b\u522b",style:"\u6837\u5f0f",id:"ID","popup_position":"\u4f4d\u7f6e(X/Y)",langdir:"\u8bed\u8a00\u4e66\u5199\u65b9\u5411","popup_size":"\u5927\u5c0f","popup_dependent":"\u9650\u5236(\u4ec5\u652f\u6301Mozilla/Firefox)","popup_resizable":"\u7a97\u53e3\u53ef\u8c03\u6574\u5927\u5c0f","popup_location":"\u663e\u793a\u5730\u5740\u680f","popup_menubar":"\u663e\u793a\u83dc\u5355\u680f","popup_toolbar":"\u663e\u793a\u5de5\u5177\u680f","popup_statusbar":"\u663e\u793a\u72b6\u6001\u680f","popup_scrollbars":"\u663e\u793a\u6eda\u52a8\u6761","popup_return":"\u63d2\u5165\'return false\'","popup_name":"\u7a97\u53e3\u540d\u79f0","popup_url":"\u5f39\u51faURL",popup:"Javascript\u5f39\u7a97","target_blank":"\u5728\u65b0\u7a97\u53e3\u6253\u5f00","target_top":"\u5728\u9876\u90e8\u6846\u67b6\u6253\u5f00\uff08\u91cd\u7f6e\u6240\u6709\u6846\u67b6\uff09","target_parent":"\u5728\u7236\u7a97\u53e3/\u6846\u67b6\u6253\u5f00","target_same":"\u5728\u5f53\u524d\u7a97\u53e3/\u6846\u67b6\u6253\u5f00","anchor_names":"\u951a","popup_opts":"\u9009\u9879","advanced_props":"\u9ad8\u7ea7\u5c5e\u6027","event_props":"\u4e8b\u4ef6","popup_props":"\u5f39\u51fa\u5c5e\u6027","general_props":"\u666e\u901a\u5c5e\u6027","advanced_tab":"\u9ad8\u7ea7","events_tab":"\u4e8b\u4ef6","popup_tab":"\u5f39\u51fa","general_tab":"\u666e\u901a",list:"\u94fe\u63a5\u5217\u8868","is_external":"\u60a8\u8f93\u5165\u7684URL\u662f\u4e00\u4e2a\u5916\u90e8\u94fe\u63a5\uff0c\u662f\u5426\u8981\u52a0\u4e0a\"http://\"\u524d\u7f00\uff1f","is_email":"\u60a8\u8f93\u5165URL\u662f\u7535\u5b50\u90ae\u4ef6\u5730\u5740\uff0c\u662f\u5426\u9700\u8981\u52a0\"mailto:\"\u524d\u7f00\uff1f",titlefield:"\u6807\u9898",target:"\u6253\u5f00\u65b9\u5f0f",url:"\u8d85\u94fe\u63a5URL",title:"\u63d2\u5165/\u7f16\u8f91 \u8d85\u94fe\u63a5","link_list":"\u94fe\u63a5\u5217\u8868",rtl:"\u4ece\u53f3\u5230\u5de6",ltr:"\u4ece\u5de6\u5230\u53f3",accesskey:"\u5feb\u6377\u952e",tabindex:"Tab\u7d22\u5f15",rev:"\u76ee\u6807\u5230\u7f51\u9875\u7684\u5173\u7cfb",rel:"\u7f51\u9875\u5230\u76ee\u6807\u7684\u5173\u7cfb",mime:"\u76ee\u6807MIME\u7c7b\u578b",encoding:"\u76ee\u6807\u8bed\u8a00\u7f16\u7801",langcode:"\u8bed\u8a00\u7f16\u7801","target_langcode":"\u76ee\u6807\u8bed\u8a00",width:"Width",height:"Height"});webcit-8.24-dfsg.orig/tiny_mce/plugins/advlink/langs/de_dlg.js0000644000175000017500000000364312271477123024206 0ustar michaelmichaeltinyMCE.addI18n('de.advlink_dlg',{"target_name":"Name der Zielseite",classes:"Klassen",style:"Format",id:"ID","popup_position":"Position (X/Y)",langdir:"Schriftrichtung","popup_size":"Gr\u00f6\u00dfe","popup_dependent":"Vom Elternfenster abh\u00e4ngig
    (nur Mozilla/Firefox) ","popup_resizable":"Vergr\u00f6\u00dfern des Fenster zulassen","popup_location":"Adressleiste anzeigen","popup_menubar":"Browsermen\u00fc anzeigen","popup_toolbar":"Werkzeugleisten anzeigen","popup_statusbar":"Statusleiste anzeigen","popup_scrollbars":"Scrollbalken anzeigen","popup_return":"Link trotz Popup folgen","popup_name":"Name des Fensters","popup_url":"Popup-Adresse",popup:"JavaScript-Popup","target_blank":"In neuem Fenster \u00f6ffnen","target_top":"Im obersten Frame \u00f6ffnen (sprengt das Frameset)","target_parent":"Im \u00fcbergeordneten Fenster/Frame \u00f6ffnen","target_same":"Im selben Fenster/Frame \u00f6ffnen","anchor_names":"Anker","popup_opts":"Optionen","advanced_props":"Erweiterte Eigenschaften","event_props":"Ereignisse","popup_props":"Popup-Eigenschaften","general_props":"Allemeine Eigenschaften","advanced_tab":"Erweitert","events_tab":"Ereignisse","popup_tab":"Popup","general_tab":"Allgemein",list:"Linkliste","is_external":"Diese Adresse scheint ein externer Link zu sein. M\u00f6chten Sie das dazu ben\u00f6tigte \"http://\" voranstellen?","is_email":"Diese Adresse scheint eine E-Mail-Adresse zu sein. M\u00f6chten Sie das dazu ben\u00f6tigte \"mailto:\" voranstellen?",titlefield:"Titel",target:"Fenster",url:"Adresse",title:"Link einf\u00fcgen/bearbeiten","link_list":"Linkliste",rtl:"Rechts nach links",ltr:"Links nach rechts",accesskey:"Tastenk\u00fcrzel",tabindex:"Tabindex",rev:"Beziehung des Linkziels zur Seite",rel:"Beziehung der Seite zum Linkziel",mime:"MIME-Type der Zielseite",encoding:"Zeichenkodierung der Zielseite",langcode:"Sprachcode","target_langcode":"Sprache der Zielseite",width:"Breite",height:"H\u00f6he"});webcit-8.24-dfsg.orig/tiny_mce/plugins/advlink/langs/fi_dlg.js0000644000175000017500000000370112271477123024207 0ustar michaelmichaeltinyMCE.addI18n('fi.advlink_dlg',{"target_name":"Kohteen nimi",classes:"Luokat",style:"Tyyli",id:"Id","popup_position":"Sijainti (X/Y)",langdir:"Kielen suunta","popup_size":"Koko","popup_dependent":"Riippuvainen (vain Mozilla/Firefox)","popup_resizable":"Tee ikkunan koko muokattavaksi","popup_location":"N\u00e4yt\u00e4 sijaintipalkki","popup_menubar":"N\u00e4yt\u00e4 valikkopalkki","popup_toolbar":"N\u00e4yt\u00e4 ty\u00f6kalut","popup_statusbar":"N\u00e4yt\u00e4 tilapalkki","popup_scrollbars":"N\u00e4yt\u00e4 vierityspalkit","popup_return":"Lis\u00e4\u00e4 \'return false\'","popup_name":"Ikkunan nimi","popup_url":"Ponnahdusikkunan URL",popup:"JavaScript-ponnahdusikkuna","target_blank":"Avaa uudessa ikkunassa","target_top":"Avaa ylimm\u00e4ss\u00e4 ruudussa (korvaa kaikki ruudut)","target_parent":"Avaa ylemm\u00e4ss\u00e4 ikkunassa","target_same":"Avaa t\u00e4ss\u00e4 ikkunassa","anchor_names":"Ankkurit","popup_opts":"Valinta","advanced_props":"Edistyneet asetukset","event_props":"Tapahtumat (events)","popup_props":"Ponnahdusikkunan asetukset","general_props":"Yleiset asetukset","advanced_tab":"Edistynyt","events_tab":"Tapahtumat","popup_tab":"Ponnahdusikkuna","general_tab":"Yleiset",list:"Linkkilista","is_external":"Sy\u00f6tt\u00e4m\u00e4si URL n\u00e4ytt\u00e4\u00e4 olevan sivuston ulkoinen osoite, haluatko lis\u00e4t\u00e4 http://-etuliitteen?","is_email":"Sy\u00f6tt\u00e4m\u00e4si URL n\u00e4ytt\u00e4\u00e4 olevan s\u00e4hk\u00f6postiosoite, haluatko lis\u00e4t\u00e4 mailto:-etuliitteen?",titlefield:"Otsikko",target:"Kohde (target)",url:"Linkin URL",title:"Lis\u00e4\u00e4/muokkaa linkki\u00e4","link_list":"Linkkilista",rtl:"Oikealta vasemmalle",ltr:"Vasemmalta oikealle",accesskey:"Pikan\u00e4pp\u00e4in",tabindex:"Tabulaattori-indeksi",rev:"Kohteen suhde sivuun",rel:"Sivun suhde kohteeseen",mime:"Kohteen MIME-tyyppi",encoding:"Kohteen merkist\u00f6koodaus",langcode:"Kielen koodi","target_langcode":"Kohteen kieli",width:"Leveys",height:"Korkeus"});webcit-8.24-dfsg.orig/tiny_mce/plugins/advlink/langs/et_dlg.js0000644000175000017500000000352112271477123024221 0ustar michaelmichaeltinyMCE.addI18n('et.advlink_dlg',{"target_name":"Sihtm\u00e4rgi nimi",classes:"Klassid",style:"Stiil",id:"ID","popup_position":"Positsioon (X/Y)",langdir:"Keele suund","popup_size":"Suurus","popup_dependent":"S\u00f5ltuv (ainult Mozilla/Firefox)","popup_resizable":"Muuda akna suurus muudetavaks","popup_location":"N\u00e4ita asukohariba","popup_menubar":"N\u00e4ita men\u00fc\u00fcriba","popup_toolbar":"N\u00e4ita seadistusriba","popup_statusbar":"N\u00e4ita staatuse riba","popup_scrollbars":"N\u00e4ita kerimisribasid","popup_return":"Sisesta \'tagasiminek eba\u00f5nnestus\'","popup_name":"Akna nimi","popup_url":"Pop-up\u2019i URL",popup:"Javascript\u2019i pop-up","target_blank":"Ava uues aknas","target_top":"Ava k\u00f5rgeimas raamis (asenda k\u00f5ik raamid)","target_parent":"Ava pea-aknas/raamis","target_same":"Ava selles aknas/raamis","anchor_names":"Ankrud","popup_opts":"Valikud","advanced_props":"\u00dcldised seadistused","event_props":"S\u00fcndmused","popup_props":"Pop-up\u2019i seadistus","general_props":"\u00dcldised seadistused","advanced_tab":"P\u00f5hjalikum","events_tab":"S\u00fcndmused","popup_tab":"Pop-up","general_tab":"\u00dcldine",list:"Linkide nimekiri","is_external":"URL, mille sisestasid, tundub olevat v\u00e4line link, kas soovid sellele lisada http://?","is_email":" URL, mille sisestasid, tundub olevat e-posti aadress, kas soovid sellele lisada mailto: funktsiooni?",titlefield:"Pealkiri",target:"Sihtm\u00e4rk",url:" URL\u2019i link",title:"Sisesta muuda linki","link_list":"Linkide list",rtl:"Paremalt vasakule",ltr:"Vasakult paremale",accesskey:"Ligip\u00e4\u00e4suklahv",tabindex:"Sisujuht",rev:"Seo sihtm\u00e4rk lehega",rel:"Seo leht sihtm\u00e4rgiga",mime:"M\u00e4rgista MIME t\u00fc\u00fcp",encoding:"Sihtm\u00e4rgi kodeering",langcode:"Keele kood","target_langcode":"Sihtm\u00e4rgi keel",width:"Width",height:"Height"});webcit-8.24-dfsg.orig/tiny_mce/plugins/advlink/langs/es_dlg.js0000644000175000017500000000376312271477123024230 0ustar michaelmichaeltinyMCE.addI18n('es.advlink_dlg',{"target_name":"Nombre del Target",classes:"Clases",style:"Estilo",id:"Id","popup_position":"Posici\u00f3n (X/Y)",langdir:"Direcci\u00f3n del lenguaje","popup_size":"Tama\u00f1o","popup_dependent":"Dependientes (s\u00f3lo Mozilla/Firefox)","popup_resizable":"Permitir cambiar el tama\u00f1o de la ventana","popup_location":"Barra de localizaci\u00f3n","popup_menubar":"Barra de men\u00fa","popup_toolbar":"Barra de herramientas","popup_statusbar":"Barra de estado","popup_scrollbars":"Barras de desplazamiento","popup_return":"Insertar \'return false\'","popup_name":"Nombre de la ventana","popup_url":"URL de la ventana emergente",popup:"Javascript popup","target_blank":"Abrir en ventana nueva","target_top":"Abrir en el marco superior (reemplaza todos los marcos)","target_parent":"Abrir en ventana padre / marco","target_same":"Abrir en esta ventana / marco","anchor_names":"Anclas","popup_opts":"Opciones","advanced_props":"Propiedades avanzadas","event_props":"Eventos","popup_props":"Propiedades de ventanas emergentes","general_props":"Propiedades generales","advanced_tab":"Avanzado","events_tab":"Eventos","popup_tab":"Ventana emergente","general_tab":"General",list:"Lista de v\u00ednculos","is_external":"La URL que ha introducido parece ser un v\u00ednculo externo, \u00bfdesea agregar el prefijo http:// necesario?","is_email":"La URL que ha introducido parece ser una direci\u00f3n de correo, \u00bfdesea agregar el prefijo mailto: necesario?",titlefield:"T\u00edtulo",target:"Destino",url:"URL del hiperv\u00ednculo",title:"Insertar/editar hiperv\u00ednculo","link_list":"Lista de v\u00ednculo",rtl:"Derecha a izquierda",ltr:"Izquierda a derecha",accesskey:"Tecla de acceso",tabindex:"Indice de tabulaci\u00f3n",rev:"Relaci\u00f3n target a p\u00e1gina",rel:"Relaci\u00f3n p\u00e1gina a target",mime:"Tipo MIME del Target",encoding:"Codificaci\u00f3n de caracteres del Target",langcode:"C\u00f3digo del lenguaje","target_langcode":"Lenguaje del Target",width:"Width",height:"Height"});webcit-8.24-dfsg.orig/tiny_mce/plugins/advlink/langs/da_dlg.js0000644000175000017500000000362312271477123024200 0ustar michaelmichaeltinyMCE.addI18n('da.advlink_dlg',{"target_name":"Destinationsnavn",classes:"Klasser",style:"Stil",id:"Id","popup_position":"Position (X/Y)",langdir:"Sprogretning","popup_size":"St\u00f8rrelse","popup_dependent":"Afh\u00e6ngig (Kun Mozilla/Firefox)","popup_resizable":"Lad det v\u00e6re muligt at \u00e6ndre st\u00f8rrelsen p\u00e5 vinduet","popup_location":"Vis adresselinje","popup_menubar":"Vis menulinje","popup_toolbar":"Vis v\u00e6rkt\u00f8jslinjer","popup_statusbar":"Vis statuslinje","popup_scrollbars":"Vis rullepanel","popup_return":"Inds\u00e6t \'return false\'","popup_name":"Vinduesnavn","popup_url":"Popup URL",popup:"Javascript popup","target_blank":"\u00c5ben i nyt vindue","target_top":"\u00c5ben i \u00f8verste vindue / ramme (erstatter alle rammer)","target_parent":"\u00c5ben i overliggende vindue / ramme","target_same":"\u00c5ben i dette vindue / ramme","anchor_names":"Ankre","popup_opts":"Indstillinger","advanced_props":"Avancerede egenskaber","event_props":"H\u00e6ndelser","popup_props":"Popup egenskaber","general_props":"Generelle egenskaber","advanced_tab":"Advanceret","events_tab":"H\u00e6ndelser","popup_tab":"Popup","general_tab":"Generelt",list:"Liste over links","is_external":"Den URL, der er indtastet, ser ud til at v\u00e6re et eksternt link. Vil du have tilf\u00f8jet det p\u00e5kr\u00e6vede http:// foran?","is_email":"Den URL, der er indtastet, ser ud til at v\u00e6re en emailadresse. Vil du have tilf\u00f8jet det p\u00e5kr\u00e6vede mailto: foran?",titlefield:"Titel",target:"M\u00e5l",url:"Link URL",title:"Inds\u00e6t/rediger link","link_list":"Liste over links",rtl:"H\u00f8jre mod venstre",ltr:"Venstre mod h\u00f8jre",accesskey:"Genvejstast",tabindex:"Tabindex",rev:"Relativ destination til side",rel:"Relativ side til destination",mime:"Destinations-MIME-type",encoding:"Destinationstegns\u00e6t",langcode:"Sprogkode","target_langcode":"Destinationssprog",width:"Width",height:"Height"});webcit-8.24-dfsg.orig/tiny_mce/plugins/advlink/langs/el_dlg.js0000644000175000017500000001336412271477123024217 0ustar michaelmichaeltinyMCE.addI18n('el.advlink_dlg',{"target_name":"\u038c\u03bd\u03bf\u03bc\u03b1 \u03c3\u03c4\u03cc\u03c7\u03bf\u03c5",classes:"\u039a\u03bb\u03ac\u03c3\u03b5\u03b9\u03c2",style:"\u03a3\u03c4\u03c5\u03bb",id:"Id","popup_position":"\u0398\u03ad\u03c3\u03b7 (X/Y)",langdir:"\u039a\u03b1\u03c4\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 \u03b3\u03bb\u03ce\u03c3\u03c3\u03b1\u03c2","popup_size":"\u039c\u03ad\u03b3\u03b5\u03b8\u03bf\u03c2","popup_dependent":"\u0395\u03be\u03b1\u03c1\u03c4\u03ce\u03bc\u03b5\u03bd\u03bf (\u03bc\u03cc\u03bd\u03bf \u03b3\u03b9\u03b1 Mozilla/Firefox)","popup_resizable":"\u039d\u03b1 \u03b1\u03bb\u03bb\u03ac\u03b6\u03bf\u03c5\u03bd \u03bf\u03b9 \u03b4\u03b9\u03b1\u03c3\u03c4\u03ac\u03c3\u03b5\u03b9\u03c2 \u03c4\u03bf\u03c5 \u03c0\u03b1\u03c1\u03b1\u03b8\u03cd\u03c1\u03bf\u03c5","popup_location":"\u0395\u03bc\u03c6\u03ac\u03bd\u03b9\u03c3\u03b7 \u03b3\u03c1\u03b1\u03bc\u03bc\u03ae\u03c2 \u03c4\u03bf\u03c0\u03bf\u03b8\u03b5\u03c3\u03af\u03b1\u03c2","popup_menubar":"\u0395\u03bc\u03c6\u03ac\u03bd\u03b9\u03c3\u03b7 \u03bc\u03b5\u03bd\u03bf\u03cd","popup_toolbar":"\u0395\u03bc\u03c6\u03ac\u03bd\u03b9\u03c3\u03b7 \u03b3\u03c1\u03b1\u03bc\u03bc\u03ce\u03bd \u03b5\u03c1\u03b3\u03b1\u03bb\u03b5\u03af\u03c9\u03bd","popup_statusbar":"\u0395\u03bc\u03c6\u03ac\u03bd\u03b9\u03c3\u03b7 \u03b3\u03c1\u03b1\u03bc\u03bc\u03ae\u03c2 \u03ba\u03b1\u03c4\u03ac\u03c3\u03c4\u03b1\u03c3\u03b7\u03c2","popup_scrollbars":"\u0395\u03bc\u03c6\u03ac\u03bd\u03b9\u03c3\u03b7 \u03c1\u03ac\u03b2\u03b4\u03c9\u03bd \u03ba\u03cd\u03bb\u03b9\u03c3\u03b7\u03c2","popup_return":"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae \'return false\'","popup_name":"\u038c\u03bd\u03bf\u03bc\u03b1 \u03c0\u03b1\u03c1\u03b1\u03b8\u03cd\u03c1\u03bf\u03c5","popup_url":"\u0394\u03b9\u03b1\u03b4\u03c1\u03bf\u03bc\u03ae URL \u03c4\u03bf\u03c5 Popup",popup:"Javascript popup","target_blank":"\u0386\u03bd\u03bf\u03b9\u03b3\u03bc\u03b1 \u03c3\u03b5 \u03bd\u03ad\u03bf \u03c0\u03b1\u03c1\u03ac\u03b8\u03c5\u03c1\u03bf","target_top":"\u0386\u03bd\u03bf\u03b9\u03b3\u03bc\u03b1 \u03c3\u03c4\u03bf \u03c0\u03b9\u03bf \u03c0\u03ac\u03bd\u03c9 frame (\u03b1\u03bd\u03c4\u03b9\u03ba\u03b1\u03b8\u03b9\u03c3\u03c4\u03ac \u03cc\u03bb\u03b1 \u03c4\u03b1 frames)","target_parent":"\u0386\u03bd\u03bf\u03b9\u03b3\u03bc\u03b1 \u03c3\u03c4\u03bf \u03b3\u03bf\u03bd\u03b9\u03ba\u03cc window / frame","target_same":"\u0386\u03bd\u03bf\u03b9\u03b3\u03bc\u03b1 \u03c3\u03b5 \u03af\u03b4\u03b9\u03bf \u03c0\u03b1\u03c1\u03ac\u03b8\u03c5\u03c1\u03bf / frame","anchor_names":"Anchors","popup_opts":"\u0395\u03c0\u03b9\u03bb\u03bf\u03b3\u03ad\u03c2","advanced_props":"\u03a0\u03c1\u03bf\u03c7\u03c9\u03c1\u03b7\u03bc\u03ad\u03bd\u03b5\u03c2 \u03b9\u03b4\u03b9\u03cc\u03c4\u03b7\u03c4\u03b5\u03c2","event_props":"\u0393\u03b5\u03b3\u03bf\u03bd\u03cc\u03c4\u03b1","popup_props":"\u0399\u03b4\u03b9\u03cc\u03c4\u03b7\u03c4\u03b5\u03c2 Popup","general_props":"\u0393\u03b5\u03bd\u03b9\u03ba\u03ad\u03c2 \u03b9\u03b4\u03b9\u03cc\u03c4\u03b7\u03c4\u03b5\u03c2","advanced_tab":"\u0393\u03b9\u03b1 \u03c0\u03c1\u03bf\u03c7\u03c9\u03c1\u03b7\u03bc\u03ad\u03bd\u03bf\u03c5\u03c2","events_tab":"\u0393\u03b5\u03b3\u03bf\u03bd\u03cc\u03c4\u03b1","popup_tab":"Popup","general_tab":"\u0393\u03b5\u03bd\u03b9\u03ba\u03ac",list:"\u039b\u03af\u03c3\u03c4\u03b1 \u03c3\u03c5\u03bd\u03b4\u03ad\u03c3\u03bc\u03c9\u03bd","is_external":"\u0397 \u03b4\u03b9\u03b1\u03b4\u03c1\u03bf\u03bc\u03ae URL \u03c0\u03bf\u03c5 \u03b5\u03b9\u03c3\u03ac\u03b3\u03b1\u03c4\u03b5 \u03c6\u03b1\u03af\u03bd\u03b5\u03c4\u03b1\u03b9 \u03bd\u03b1 \u03b5\u03af\u03bd\u03b1\u03b9 \u03b5\u03be\u03c9\u03c4\u03b5\u03c1\u03b9\u03ba\u03cc\u03c2 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03bc\u03bf\u03c2, \u03bd\u03b1 \u03c0\u03c1\u03bf\u03c3\u03c4\u03b5\u03b8\u03b5\u03af \u03c4\u03bf \u03b1\u03c0\u03b1\u03c1\u03b1\u03af\u03c4\u03b7\u03c4\u03bf http:// ;","is_email":"\u0397 \u03b4\u03b9\u03b1\u03b4\u03c1\u03bf\u03bc\u03ae URL \u03c0\u03bf\u03c5 \u03b5\u03b9\u03c3\u03ac\u03b3\u03b1\u03c4\u03b5 \u03c6\u03b1\u03af\u03bd\u03b5\u03c4\u03b1\u03b9 \u03bd\u03b1 \u03b5\u03af\u03bd\u03b1\u03b9 email, \u03bd\u03b1 \u03c0\u03c1\u03bf\u03c3\u03c4\u03b5\u03b8\u03b5\u03af \u03c4\u03bf \u03b1\u03c0\u03b1\u03c1\u03b1\u03af\u03c4\u03b7\u03c4\u03bf mailto: ;",titlefield:"\u03a4\u03af\u03c4\u03bb\u03bf\u03c2",target:"\u03a3\u03c4\u03cc\u03c7\u03bf\u03c2",url:"\u0394\u03b9\u03b1\u03b4\u03c1\u03bf\u03bc\u03ae URL \u03c3\u03c5\u03bd\u03b4\u03ad\u03c3\u03bc\u03bf\u03c5",title:"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae/\u03b5\u03c0\u03b5\u03be\u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u03b1 \u03c3\u03c5\u03bd\u03b4\u03ad\u03c3\u03bc\u03bf\u03c5","link_list":"\u039b\u03af\u03c3\u03c4\u03b1 \u03c3\u03c5\u03bd\u03b4\u03ad\u03c3\u03bc\u03c9\u03bd",rtl:"\u0394\u03b5\u03be\u03b9\u03ac \u03c0\u03c1\u03bf\u03c2 \u03b1\u03c1\u03b9\u03c3\u03c4\u03b5\u03c1\u03ac",ltr:"\u0391\u03c1\u03b9\u03c3\u03c4\u03b5\u03c1\u03ac \u03c0\u03c1\u03bf\u03c2 \u03b4\u03b5\u03be\u03b9\u03ac",accesskey:"\u03a0\u03bb\u03ae\u03ba\u03c4\u03c1\u03bf \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2",tabindex:"Tabindex",rev:"\u03a3\u03c7\u03ad\u03c3\u03b7 \u03c3\u03c4\u03cc\u03c7\u03bf\u03c5 \u03c0\u03c1\u03bf\u03c2 \u03c3\u03b5\u03bb\u03af\u03b4\u03b1 (REV)",rel:"\u03a3\u03c7\u03ad\u03c3\u03b7 \u03c3\u03b5\u03bb\u03af\u03b4\u03b1\u03c2 \u03c0\u03c1\u03bf\u03c2 \u03c3\u03c4\u03cc\u03c7\u03bf (REL)",mime:"\u03a4\u03cd\u03c0\u03bf\u03c2 MIME \u03c3\u03c4\u03cc\u03c7\u03bf\u03c5",encoding:"\u039a\u03c9\u03b4\u03b9\u03ba\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7 \u03c7\u03b1\u03c1\u03b1\u03ba\u03c4\u03ae\u03c1\u03c9\u03bd \u03c3\u03c4\u03cc\u03c7\u03bf\u03c5",langcode:"\u039a\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2 \u03b3\u03bb\u03ce\u03c3\u03c3\u03b1\u03c2","target_langcode":"\u0393\u03bb\u03ce\u03c3\u03c3\u03b1 \u03c3\u03c4\u03cc\u03c7\u03bf\u03c5",width:"Width",height:"Height"});webcit-8.24-dfsg.orig/tiny_mce/plugins/advlink/langs/hu_dlg.js0000644000175000017500000000412312271477123024224 0ustar michaelmichaeltinyMCE.addI18n('hu.advlink_dlg',{"target_name":"C\u00e9l neve",classes:"Class-ok",style:"Style",id:"Id","popup_position":"Poz\u00edci\u00f3 (X/Y)",langdir:"Nyelv \u00edr\u00e1s ir\u00e1ny","popup_size":"M\u00e9ret","popup_dependent":"F\u00fcgg\u0151 (csak Mozilla/Firefox)","popup_resizable":"\u00c1tm\u00e9retezhet\u0151 ablak","popup_location":"C\u00edm mez\u0151 mutat\u00e1sa","popup_menubar":"Men\u00fcsor mutat\u00e1sa","popup_toolbar":"Eszk\u00f6zsor mutat\u00e1sa","popup_statusbar":"St\u00e1tuszsor mutat\u00e1sa","popup_scrollbars":"G\u00f6rget\u0151s\u00e1vok mutat\u00e1sa","popup_return":"\'return false\' besz\u00far\u00e1sa","popup_name":"Ablakn\u00e9v","popup_url":"Felugr\u00f3 ablak URL",popup:"JavaScript felugr\u00f3 ablak","target_blank":"\u00daj ablakban megnyit\u00e1s","target_top":"Azonos ablakban/keretben megnyit\u00e1s legfel\u00fcl","target_parent":"Sz\u00fcl\u0151 ablakban/keretben megnyit\u00e1s","target_same":"Azonos ablakban/keretben megnyit\u00e1s","anchor_names":"Horgonyok","popup_opts":"Be\u00e1ll\u00edt\u00e1sok","advanced_props":"Halad\u00f3 tulajdons\u00e1gok","event_props":"Esem\u00e9nyek","popup_props":"Felugr\u00f3 ablak tulajdons\u00e1gai","general_props":"\u00c1ltal\u00e1nos tulajdons\u00e1gok","advanced_tab":"Halad\u00f3","events_tab":"Esem\u00e9nyek","popup_tab":"Felugr\u00f3 ablak","general_tab":"\u00c1ltal\u00e1nos",list:"Link lista","is_external":"A be\u00edrt URL k\u00fcls\u0151 hivatkoz\u00e1snak t\u0171nik, k\u00edv\u00e1nja a sz\u00fcks\u00e9ges http://-t el\u00e9 tenni?","is_email":"A be\u00edrt URL e-mail c\u00edmnek t\u0171nik, k\u00edv\u00e1nja a sz\u00fcks\u00e9ges mailto:-t el\u00e9 tenni?",titlefield:"C\u00edm",target:"Target",url:"Link URL",title:"Link besz\u00far\u00e1s/szerkeszt\u00e9s","link_list":"Link lista",rtl:"Jobbr\u00f3l balra",ltr:"Balr\u00f3l jobbra",accesskey:"Gyorsgomb",tabindex:"Tabindex",rev:"C\u00e9l kapcsolata az oldallal",rel:"Oldal kapcsolata a c\u00e9llal",mime:"C\u00e9l MIME t\u00edpus",encoding:"C\u00e9l karakterk\u00f3dol\u00e1s",langcode:"Nyelv k\u00f3d","target_langcode":"C\u00e9l nyelv",width:"Width",height:"Height"});webcit-8.24-dfsg.orig/tiny_mce/plugins/advlink/langs/cs_dlg.js0000644000175000017500000000413112271477123024214 0ustar michaelmichaeltinyMCE.addI18n('cs.advlink_dlg',{"target_name":"N\u00e1zev c\u00edle",classes:"T\u0159\u00eddy",style:"Styl",id:"ID","popup_position":"Um\u00edst\u011bn\u00ed (X/Y)",langdir:"Sm\u011br textu","popup_size":"Velikost","popup_dependent":"Z\u00e1vislost (pouze Mozilla/Firefox)","popup_resizable":"Umo\u017enit zm\u011bnu velikosti","popup_location":"Zobrazit pole s adresou","popup_menubar":"Zobrazit nab\u00eddku","popup_toolbar":"Zobrazit panel n\u00e1stroj\u016f","popup_statusbar":"Zobrazit stavov\u00fd \u0159\u00e1dek","popup_scrollbars":"Zobrazit posuvn\u00edky","popup_return":"Vlo\u017eit \'return false\'","popup_name":"N\u00e1zev okna","popup_url":"URL vyskakovac\u00edho okna",popup:"Javascriptov\u00e9 okno","target_blank":"Otev\u0159\u00edt v nov\u00e9m okn\u011b/r\u00e1mu","target_top":"Otev\u0159\u00edt v hlavn\u00edm okn\u011b/r\u00e1mu (nahradit v\u0161echny r\u00e1my)","target_parent":"Otev\u0159\u00edt v nad\u0159azen\u00e9m okn\u011b/r\u00e1mu","target_same":"Otev\u0159\u00edt v tomto okn\u011b/r\u00e1mu","anchor_names":"Z\u00e1lo\u017eka","popup_opts":"Mo\u017enosti","advanced_props":"Roz\u0161\u00ed\u0159en\u00e9 parametry","event_props":"Ud\u00e1losti","popup_props":"Vlastnosti vyskakovac\u00edho okna","general_props":"Obecn\u00e9 parametry","advanced_tab":"Roz\u0161\u00ed\u0159en\u00e9","events_tab":"Ud\u00e1losti","popup_tab":"Vyskakovac\u00ed okno","general_tab":"Obecn\u00e9",list:"Seznam odkaz\u016f","is_external":"Zadan\u00e9 URL vypad\u00e1 jako extern\u00ed odkaz, chcete doplnit povinn\u00fd prefix http://?","is_email":"Zadan\u00e9 URL vypad\u00e1 jako e-mailov\u00e1 adresa, chcete doplnit povinn\u00fd prefix mailto:?",titlefield:"Titulek",target:"C\u00edl",url:"URL odkazu",title:"Vlo\u017eit/upravit odkaz","link_list":"Seznam odkaz\u016f",rtl:"Zprava doleva",ltr:"Zleva doprava",accesskey:"Kl\u00e1vesov\u00e1 zkratka",tabindex:"Po\u0159ad\u00ed pro tabul\u00e1tor",rev:"Vztah c\u00edle ke str\u00e1nce",rel:"Vztah str\u00e1nky k c\u00edli",mime:"MIME typ",encoding:"K\u00f3dov\u00e1n\u00ed",langcode:"K\u00f3d jazyka","target_langcode":"Jazyk c\u00edle",width:"Width",height:"Height"});webcit-8.24-dfsg.orig/tiny_mce/plugins/advlink/langs/en_dlg.js0000644000175000017500000000320312271477123024210 0ustar michaelmichaeltinyMCE.addI18n('en.advlink_dlg',{"target_name":"Target Name",classes:"Classes",style:"Style",id:"ID","popup_position":"Position (X/Y)",langdir:"Language Direction","popup_size":"Size","popup_dependent":"Dependent (Mozilla/Firefox Only)","popup_resizable":"Make Window Resizable","popup_location":"Show Location Bar","popup_menubar":"Show Menu Bar","popup_toolbar":"Show Toolbars","popup_statusbar":"Show Status Bar","popup_scrollbars":"Show Scrollbars","popup_return":"Insert \'return false\'","popup_name":"Window Name","popup_url":"Popup URL",popup:"JavaScript Popup","target_blank":"Open in New Window","target_top":"Open in Top Frame (Replaces All Frames)","target_parent":"Open in Parent Window/Frame","target_same":"Open in This Window/Frame","anchor_names":"Anchors","popup_opts":"Options","advanced_props":"Advanced Properties","event_props":"Events","popup_props":"Popup Properties","general_props":"General Properties","advanced_tab":"Advanced","events_tab":"Events","popup_tab":"Popup","general_tab":"General",list:"Link List","is_external":"The URL you entered seems to be an external link. Do you want to add the required http:// prefix?","is_email":"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?",titlefield:"Title",target:"Target",url:"Link URL",title:"Insert/Edit Link","link_list":"Link List",rtl:"Right to Left",ltr:"Left to Right",accesskey:"AccessKey",tabindex:"TabIndex",rev:"Relationship Target to Page",rel:"Relationship Page to Target",mime:"Target MIME Type",encoding:"Target Character Encoding",langcode:"Language Code","target_langcode":"Target Language",width:"Width",height:"Height"});webcit-8.24-dfsg.orig/tiny_mce/plugins/advlink/langs/it_dlg.js0000644000175000017500000000350312271477123024225 0ustar michaelmichaeltinyMCE.addI18n('it.advlink_dlg',{"target_name":"Nome target",classes:"Classe",style:"Stile",id:"Id","popup_position":"Posizione (X/Y)",langdir:"Direzione del testo","popup_size":"Dimensioni","popup_dependent":"Dipendente (Solo in Mozilla/Firefox)","popup_resizable":"Rendi la finestra ridimensionabile","popup_location":"Mostra barra navigazione","popup_menubar":"Mostra barra menu","popup_toolbar":"Mostra barre strumenti","popup_statusbar":"Mostra barra di stato","popup_scrollbars":"Mostra barre di scorrimento","popup_return":"Inserisci \'return false\'","popup_name":"Nome finestra","popup_url":"URL Popup",popup:"Popup Javascript","target_blank":"Apri in una nuova finestra","target_top":"Apri nella cornice superiore (sostituisce tutte le cornici)","target_parent":"Apri nella finestra / cornice genitore","target_same":"Apri in questa finestra / cornice","anchor_names":"Ancore","popup_opts":"Opzioni","advanced_props":"Propriet\u00e0 avanzate","event_props":"Eventi","popup_props":"Propriet\u00e0 popup","general_props":"Propriet\u00e0 generali","advanced_tab":"Avanzate","events_tab":"Eventi","popup_tab":"Popup","general_tab":"Generale",list:"Lista collegamenti","is_external":"L\'URL inserito sembra essere un link esterno. Aggiungere il necessario prefisso http:// ?","is_email":"L\'URL inserito sembra essere un indirizzo email. Aggiungere il necessario prefisso mailto: ?",titlefield:"Titolo",target:"Target",url:"URL collegamento",title:"Inserisci/modifica link","link_list":"Lista collegamenti",rtl:"Destra verso sinistra",ltr:"Sinistra verso destra",accesskey:"Carattere di accesso",tabindex:"Indice tabulazione",rev:"Relazione da target a pagina",rel:"Relazione da pagina a target",mime:"Tipo MIME del target",encoding:"Codifica carattere del target",langcode:"Lingua","target_langcode":"Lingua del target",width:"Width",height:"Height"});webcit-8.24-dfsg.orig/tiny_mce/plugins/advlink/editor_plugin.js0000644000175000017500000000171512271477123024526 0ustar michaelmichael(function(){tinymce.create("tinymce.plugins.AdvancedLinkPlugin",{init:function(a,b){this.editor=a;a.addCommand("mceAdvLink",function(){var c=a.selection;if(c.isCollapsed()&&!a.dom.getParent(c.getNode(),"A")){return}a.windowManager.open({file:b+"/link.htm",width:480+parseInt(a.getLang("advlink.delta_width",0)),height:400+parseInt(a.getLang("advlink.delta_height",0)),inline:1},{plugin_url:b})});a.addButton("link",{title:"advlink.link_desc",cmd:"mceAdvLink"});a.addShortcut("ctrl+k","advlink.advlink_desc","mceAdvLink");a.onNodeChange.add(function(d,c,f,e){c.setDisabled("link",e&&f.nodeName!="A");c.setActive("link",f.nodeName=="A"&&!f.name)})},getInfo:function(){return{longname:"Advanced link",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advlink",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("advlink",tinymce.plugins.AdvancedLinkPlugin)})();webcit-8.24-dfsg.orig/tiny_mce/plugins/advlink/link.htm0000644000175000017500000003737312271477123023004 0ustar michaelmichael {#advlink_dlg.title}
    webcit-8.24-dfsg.orig/tiny_mce/plugins/advlink/js/0000755000175000017500000000000012271477123021734 5ustar michaelmichaelwebcit-8.24-dfsg.orig/tiny_mce/plugins/advlink/js/advlink.js0000644000175000017500000004133012271477123023723 0ustar michaelmichael/* Functions for the advlink plugin popup */ tinyMCEPopup.requireLangPack(); var templates = { "window.open" : "window.open('${url}','${target}','${options}')" }; function preinit() { var url; if (url = tinyMCEPopup.getParam("external_link_list_url")) document.write(''); } function changeClass() { var f = document.forms[0]; f.classes.value = getSelectValue(f, 'classlist'); } function init() { tinyMCEPopup.resizeToInnerSize(); var formObj = document.forms[0]; var inst = tinyMCEPopup.editor; var elm = inst.selection.getNode(); var action = "insert"; var html; document.getElementById('hrefbrowsercontainer').innerHTML = getBrowserHTML('hrefbrowser','href','file','advlink'); document.getElementById('popupurlbrowsercontainer').innerHTML = getBrowserHTML('popupurlbrowser','popupurl','file','advlink'); document.getElementById('targetlistcontainer').innerHTML = getTargetListHTML('targetlist','target'); // Link list html = getLinkListHTML('linklisthref','href'); if (html == "") document.getElementById("linklisthrefrow").style.display = 'none'; else document.getElementById("linklisthrefcontainer").innerHTML = html; // Anchor list html = getAnchorListHTML('anchorlist','href'); if (html == "") document.getElementById("anchorlistrow").style.display = 'none'; else document.getElementById("anchorlistcontainer").innerHTML = html; // Resize some elements if (isVisible('hrefbrowser')) document.getElementById('href').style.width = '260px'; if (isVisible('popupurlbrowser')) document.getElementById('popupurl').style.width = '180px'; elm = inst.dom.getParent(elm, "A"); if (elm != null && elm.nodeName == "A") action = "update"; formObj.insert.value = tinyMCEPopup.getLang(action, 'Insert', true); setPopupControlsDisabled(true); if (action == "update") { var href = inst.dom.getAttrib(elm, 'href'); var onclick = inst.dom.getAttrib(elm, 'onclick'); // Setup form data setFormValue('href', href); setFormValue('title', inst.dom.getAttrib(elm, 'title')); setFormValue('id', inst.dom.getAttrib(elm, 'id')); setFormValue('style', inst.dom.getAttrib(elm, "style")); setFormValue('rel', inst.dom.getAttrib(elm, 'rel')); setFormValue('rev', inst.dom.getAttrib(elm, 'rev')); setFormValue('charset', inst.dom.getAttrib(elm, 'charset')); setFormValue('hreflang', inst.dom.getAttrib(elm, 'hreflang')); setFormValue('dir', inst.dom.getAttrib(elm, 'dir')); setFormValue('lang', inst.dom.getAttrib(elm, 'lang')); setFormValue('tabindex', inst.dom.getAttrib(elm, 'tabindex', typeof(elm.tabindex) != "undefined" ? elm.tabindex : "")); setFormValue('accesskey', inst.dom.getAttrib(elm, 'accesskey', typeof(elm.accesskey) != "undefined" ? elm.accesskey : "")); setFormValue('type', inst.dom.getAttrib(elm, 'type')); setFormValue('onfocus', inst.dom.getAttrib(elm, 'onfocus')); setFormValue('onblur', inst.dom.getAttrib(elm, 'onblur')); setFormValue('onclick', onclick); setFormValue('ondblclick', inst.dom.getAttrib(elm, 'ondblclick')); setFormValue('onmousedown', inst.dom.getAttrib(elm, 'onmousedown')); setFormValue('onmouseup', inst.dom.getAttrib(elm, 'onmouseup')); setFormValue('onmouseover', inst.dom.getAttrib(elm, 'onmouseover')); setFormValue('onmousemove', inst.dom.getAttrib(elm, 'onmousemove')); setFormValue('onmouseout', inst.dom.getAttrib(elm, 'onmouseout')); setFormValue('onkeypress', inst.dom.getAttrib(elm, 'onkeypress')); setFormValue('onkeydown', inst.dom.getAttrib(elm, 'onkeydown')); setFormValue('onkeyup', inst.dom.getAttrib(elm, 'onkeyup')); setFormValue('target', inst.dom.getAttrib(elm, 'target')); setFormValue('classes', inst.dom.getAttrib(elm, 'class')); // Parse onclick data if (onclick != null && onclick.indexOf('window.open') != -1) parseWindowOpen(onclick); else parseFunction(onclick); // Select by the values selectByValue(formObj, 'dir', inst.dom.getAttrib(elm, 'dir')); selectByValue(formObj, 'rel', inst.dom.getAttrib(elm, 'rel')); selectByValue(formObj, 'rev', inst.dom.getAttrib(elm, 'rev')); selectByValue(formObj, 'linklisthref', href); if (href.charAt(0) == '#') selectByValue(formObj, 'anchorlist', href); addClassesToList('classlist', 'advlink_styles'); selectByValue(formObj, 'classlist', inst.dom.getAttrib(elm, 'class'), true); selectByValue(formObj, 'targetlist', inst.dom.getAttrib(elm, 'target'), true); } else addClassesToList('classlist', 'advlink_styles'); } function checkPrefix(n) { if (n.value && Validator.isEmail(n) && !/^\s*mailto:/i.test(n.value) && confirm(tinyMCEPopup.getLang('advlink_dlg.is_email'))) n.value = 'mailto:' + n.value; if (/^\s*www\./i.test(n.value) && confirm(tinyMCEPopup.getLang('advlink_dlg.is_external'))) n.value = 'http://' + n.value; } function setFormValue(name, value) { document.forms[0].elements[name].value = value; } function parseWindowOpen(onclick) { var formObj = document.forms[0]; // Preprocess center code if (onclick.indexOf('return false;') != -1) { formObj.popupreturn.checked = true; onclick = onclick.replace('return false;', ''); } else formObj.popupreturn.checked = false; var onClickData = parseLink(onclick); if (onClickData != null) { formObj.ispopup.checked = true; setPopupControlsDisabled(false); var onClickWindowOptions = parseOptions(onClickData['options']); var url = onClickData['url']; formObj.popupname.value = onClickData['target']; formObj.popupurl.value = url; formObj.popupwidth.value = getOption(onClickWindowOptions, 'width'); formObj.popupheight.value = getOption(onClickWindowOptions, 'height'); formObj.popupleft.value = getOption(onClickWindowOptions, 'left'); formObj.popuptop.value = getOption(onClickWindowOptions, 'top'); if (formObj.popupleft.value.indexOf('screen') != -1) formObj.popupleft.value = "c"; if (formObj.popuptop.value.indexOf('screen') != -1) formObj.popuptop.value = "c"; formObj.popuplocation.checked = getOption(onClickWindowOptions, 'location') == "yes"; formObj.popupscrollbars.checked = getOption(onClickWindowOptions, 'scrollbars') == "yes"; formObj.popupmenubar.checked = getOption(onClickWindowOptions, 'menubar') == "yes"; formObj.popupresizable.checked = getOption(onClickWindowOptions, 'resizable') == "yes"; formObj.popuptoolbar.checked = getOption(onClickWindowOptions, 'toolbar') == "yes"; formObj.popupstatus.checked = getOption(onClickWindowOptions, 'status') == "yes"; formObj.popupdependent.checked = getOption(onClickWindowOptions, 'dependent') == "yes"; buildOnClick(); } } function parseFunction(onclick) { var formObj = document.forms[0]; var onClickData = parseLink(onclick); // TODO: Add stuff here } function getOption(opts, name) { return typeof(opts[name]) == "undefined" ? "" : opts[name]; } function setPopupControlsDisabled(state) { var formObj = document.forms[0]; formObj.popupname.disabled = state; formObj.popupurl.disabled = state; formObj.popupwidth.disabled = state; formObj.popupheight.disabled = state; formObj.popupleft.disabled = state; formObj.popuptop.disabled = state; formObj.popuplocation.disabled = state; formObj.popupscrollbars.disabled = state; formObj.popupmenubar.disabled = state; formObj.popupresizable.disabled = state; formObj.popuptoolbar.disabled = state; formObj.popupstatus.disabled = state; formObj.popupreturn.disabled = state; formObj.popupdependent.disabled = state; setBrowserDisabled('popupurlbrowser', state); } function parseLink(link) { link = link.replace(new RegExp(''', 'g'), "'"); var fnName = link.replace(new RegExp("\\s*([A-Za-z0-9\.]*)\\s*\\(.*", "gi"), "$1"); // Is function name a template function var template = templates[fnName]; if (template) { // Build regexp var variableNames = template.match(new RegExp("'?\\$\\{[A-Za-z0-9\.]*\\}'?", "gi")); var regExp = "\\s*[A-Za-z0-9\.]*\\s*\\("; var replaceStr = ""; for (var i=0; i'); for (var i=0; i' + name + ''; } if (html == "") return ""; html = ''; return html; } function insertAction() { var inst = tinyMCEPopup.editor; var elm, elementArray, i; elm = inst.selection.getNode(); checkPrefix(document.forms[0].href); elm = inst.dom.getParent(elm, "A"); // Remove element if there is no href if (!document.forms[0].href.value) { i = inst.selection.getBookmark(); inst.dom.remove(elm, 1); inst.selection.moveToBookmark(i); tinyMCEPopup.execCommand("mceEndUndoLevel"); tinyMCEPopup.close(); return; } // Create new anchor elements if (elm == null) { inst.getDoc().execCommand("unlink", false, null); tinyMCEPopup.execCommand("mceInsertLink", false, "#mce_temp_url#", {skip_undo : 1}); elementArray = tinymce.grep(inst.dom.select("a"), function(n) {return inst.dom.getAttrib(n, 'href') == '#mce_temp_url#';}); for (i=0; i' + tinyMCELinkList[i][0] + ''; html += ''; return html; // tinyMCE.debug('-- image list start --', html, '-- image list end --'); } function getTargetListHTML(elm_id, target_form_element) { var targets = tinyMCEPopup.getParam('theme_advanced_link_targets', '').split(';'); var html = ''; html += ''; return html; } // While loading preinit(); tinyMCEPopup.onInit.add(init); webcit-8.24-dfsg.orig/tiny_mce/plugins/advlink/css/0000755000175000017500000000000012271477123022110 5ustar michaelmichaelwebcit-8.24-dfsg.orig/tiny_mce/plugins/advlink/css/advlink.css0000644000175000017500000000074012271477123024253 0ustar michaelmichael.mceLinkList, .mceAnchorList, #targetlist {width:280px;} .mceActionPanel {margin-top:7px;} .panel_wrapper div.current {height:320px;} #classlist, #title, #href {width:280px;} #popupurl, #popupname {width:200px;} #popupwidth, #popupheight, #popupleft, #popuptop {width:30px;vertical-align:middle;text-align:center;} #id, #style, #classes, #target, #dir, #hreflang, #lang, #charset, #type, #rel, #rev, #tabindex, #accesskey {width:200px;} #events_panel input {width:200px;} webcit-8.24-dfsg.orig/tiny_mce/plugins/nonbreaking/0000755000175000017500000000000012271477123022165 5ustar michaelmichaelwebcit-8.24-dfsg.orig/tiny_mce/plugins/nonbreaking/editor_plugin_src.js0000644000175000017500000000276112271477123026244 0ustar michaelmichael/** * editor_plugin_src.js * * Copyright 2009, Moxiecode Systems AB * Released under LGPL License. * * License: http://tinymce.moxiecode.com/license * Contributing: http://tinymce.moxiecode.com/contributing */ (function() { tinymce.create('tinymce.plugins.Nonbreaking', { init : function(ed, url) { var t = this; t.editor = ed; // Register commands ed.addCommand('mceNonBreaking', function() { ed.execCommand('mceInsertContent', false, (ed.plugins.visualchars && ed.plugins.visualchars.state) ? ' ' : ' '); }); // Register buttons ed.addButton('nonbreaking', {title : 'nonbreaking.nonbreaking_desc', cmd : 'mceNonBreaking'}); if (ed.getParam('nonbreaking_force_tab')) { ed.onKeyDown.add(function(ed, e) { if (e.keyCode == 9) { e.preventDefault(); ed.execCommand('mceNonBreaking'); ed.execCommand('mceNonBreaking'); ed.execCommand('mceNonBreaking'); } }); } }, getInfo : function() { return { longname : 'Nonbreaking space', author : 'Moxiecode Systems AB', authorurl : 'http://tinymce.moxiecode.com', infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/nonbreaking', version : tinymce.majorVersion + "." + tinymce.minorVersion }; } // Private methods }); // Register plugin tinymce.PluginManager.add('nonbreaking', tinymce.plugins.Nonbreaking); })();webcit-8.24-dfsg.orig/tiny_mce/plugins/nonbreaking/editor_plugin.js0000644000175000017500000000166012271477123025372 0ustar michaelmichael(function(){tinymce.create("tinymce.plugins.Nonbreaking",{init:function(a,b){var c=this;c.editor=a;a.addCommand("mceNonBreaking",function(){a.execCommand("mceInsertContent",false,(a.plugins.visualchars&&a.plugins.visualchars.state)?' ':" ")});a.addButton("nonbreaking",{title:"nonbreaking.nonbreaking_desc",cmd:"mceNonBreaking"});if(a.getParam("nonbreaking_force_tab")){a.onKeyDown.add(function(d,f){if(f.keyCode==9){f.preventDefault();d.execCommand("mceNonBreaking");d.execCommand("mceNonBreaking");d.execCommand("mceNonBreaking")}})}},getInfo:function(){return{longname:"Nonbreaking space",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/nonbreaking",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("nonbreaking",tinymce.plugins.Nonbreaking)})();webcit-8.24-dfsg.orig/tiny_mce/plugins/table/0000755000175000017500000000000012271477123020757 5ustar michaelmichaelwebcit-8.24-dfsg.orig/tiny_mce/plugins/table/editor_plugin_src.js0000644000175000017500000010570012271477123025033 0ustar michaelmichael/** * editor_plugin_src.js * * Copyright 2009, Moxiecode Systems AB * Released under LGPL License. * * License: http://tinymce.moxiecode.com/license * Contributing: http://tinymce.moxiecode.com/contributing */ (function(tinymce) { var each = tinymce.each; // Checks if the selection/caret is at the start of the specified block element function isAtStart(rng, par) { var doc = par.ownerDocument, rng2 = doc.createRange(), elm; rng2.setStartBefore(par); rng2.setEnd(rng.endContainer, rng.endOffset); elm = doc.createElement('body'); elm.appendChild(rng2.cloneContents()); // Check for text characters of other elements that should be treated as content return elm.innerHTML.replace(/<(br|img|object|embed|input|textarea)[^>]*>/gi, '-').replace(/<[^>]+>/g, '').length == 0; }; function getSpanVal(td, name) { return parseInt(td.getAttribute(name) || 1); } /** * Table Grid class. */ function TableGrid(table, dom, selection) { var grid, startPos, endPos, selectedCell; buildGrid(); selectedCell = dom.getParent(selection.getStart(), 'th,td'); if (selectedCell) { startPos = getPos(selectedCell); endPos = findEndPos(); selectedCell = getCell(startPos.x, startPos.y); } function cloneNode(node, children) { node = node.cloneNode(children); node.removeAttribute('id'); return node; } function buildGrid() { var startY = 0; grid = []; each(['thead', 'tbody', 'tfoot'], function(part) { var rows = dom.select('> ' + part + ' tr', table); each(rows, function(tr, y) { y += startY; each(dom.select('> td, > th', tr), function(td, x) { var x2, y2, rowspan, colspan; // Skip over existing cells produced by rowspan if (grid[y]) { while (grid[y][x]) x++; } // Get col/rowspan from cell rowspan = getSpanVal(td, 'rowspan'); colspan = getSpanVal(td, 'colspan'); // Fill out rowspan/colspan right and down for (y2 = y; y2 < y + rowspan; y2++) { if (!grid[y2]) grid[y2] = []; for (x2 = x; x2 < x + colspan; x2++) { grid[y2][x2] = { part : part, real : y2 == y && x2 == x, elm : td, rowspan : rowspan, colspan : colspan }; } } }); }); startY += rows.length; }); }; function getCell(x, y) { var row; row = grid[y]; if (row) return row[x]; }; function setSpanVal(td, name, val) { if (td) { val = parseInt(val); if (val === 1) td.removeAttribute(name, 1); else td.setAttribute(name, val, 1); } } function isCellSelected(cell) { return cell && (dom.hasClass(cell.elm, 'mceSelected') || cell == selectedCell); }; function getSelectedRows() { var rows = []; each(table.rows, function(row) { each(row.cells, function(cell) { if (dom.hasClass(cell, 'mceSelected') || cell == selectedCell.elm) { rows.push(row); return false; } }); }); return rows; }; function deleteTable() { var rng = dom.createRng(); rng.setStartAfter(table); rng.setEndAfter(table); selection.setRng(rng); dom.remove(table); }; function cloneCell(cell) { var formatNode; // Clone formats tinymce.walk(cell, function(node) { var curNode; if (node.nodeType == 3) { each(dom.getParents(node.parentNode, null, cell).reverse(), function(node) { node = cloneNode(node, false); if (!formatNode) formatNode = curNode = node; else if (curNode) curNode.appendChild(node); curNode = node; }); // Add something to the inner node if (curNode) curNode.innerHTML = tinymce.isIE ? ' ' : '
    '; return false; } }, 'childNodes'); cell = cloneNode(cell, false); setSpanVal(cell, 'rowSpan', 1); setSpanVal(cell, 'colSpan', 1); if (formatNode) { cell.appendChild(formatNode); } else { if (!tinymce.isIE) cell.innerHTML = '
    '; } return cell; }; function cleanup() { var rng = dom.createRng(); // Empty rows each(dom.select('tr', table), function(tr) { if (tr.cells.length == 0) dom.remove(tr); }); // Empty table if (dom.select('tr', table).length == 0) { rng.setStartAfter(table); rng.setEndAfter(table); selection.setRng(rng); dom.remove(table); return; } // Empty header/body/footer each(dom.select('thead,tbody,tfoot', table), function(part) { if (part.rows.length == 0) dom.remove(part); }); // Restore selection to start position if it still exists buildGrid(); // Restore the selection to the closest table position row = grid[Math.min(grid.length - 1, startPos.y)]; if (row) { selection.select(row[Math.min(row.length - 1, startPos.x)].elm, true); selection.collapse(true); } }; function fillLeftDown(x, y, rows, cols) { var tr, x2, r, c, cell; tr = grid[y][x].elm.parentNode; for (r = 1; r <= rows; r++) { tr = dom.getNext(tr, 'tr'); if (tr) { // Loop left to find real cell for (x2 = x; x2 >= 0; x2--) { cell = grid[y + r][x2].elm; if (cell.parentNode == tr) { // Append clones after for (c = 1; c <= cols; c++) dom.insertAfter(cloneCell(cell), cell); break; } } if (x2 == -1) { // Insert nodes before first cell for (c = 1; c <= cols; c++) tr.insertBefore(cloneCell(tr.cells[0]), tr.cells[0]); } } } }; function split() { each(grid, function(row, y) { each(row, function(cell, x) { var colSpan, rowSpan, newCell, i; if (isCellSelected(cell)) { cell = cell.elm; colSpan = getSpanVal(cell, 'colspan'); rowSpan = getSpanVal(cell, 'rowspan'); if (colSpan > 1 || rowSpan > 1) { setSpanVal(cell, 'rowSpan', 1); setSpanVal(cell, 'colSpan', 1); // Insert cells right for (i = 0; i < colSpan - 1; i++) dom.insertAfter(cloneCell(cell), cell); fillLeftDown(x, y, rowSpan - 1, colSpan); } } }); }); }; function merge(cell, cols, rows) { var startX, startY, endX, endY, x, y, startCell, endCell, cell, children, count; // Use specified cell and cols/rows if (cell) { pos = getPos(cell); startX = pos.x; startY = pos.y; endX = startX + (cols - 1); endY = startY + (rows - 1); } else { // Use selection startX = startPos.x; startY = startPos.y; endX = endPos.x; endY = endPos.y; } // Find start/end cells startCell = getCell(startX, startY); endCell = getCell(endX, endY); // Check if the cells exists and if they are of the same part for example tbody = tbody if (startCell && endCell && startCell.part == endCell.part) { // Split and rebuild grid split(); buildGrid(); // Set row/col span to start cell startCell = getCell(startX, startY).elm; setSpanVal(startCell, 'colSpan', (endX - startX) + 1); setSpanVal(startCell, 'rowSpan', (endY - startY) + 1); // Remove other cells and add it's contents to the start cell for (y = startY; y <= endY; y++) { for (x = startX; x <= endX; x++) { if (!grid[y] || !grid[y][x]) continue; cell = grid[y][x].elm; if (cell != startCell) { // Move children to startCell children = tinymce.grep(cell.childNodes); each(children, function(node) { startCell.appendChild(node); }); // Remove bogus nodes if there is children in the target cell if (children.length) { children = tinymce.grep(startCell.childNodes); count = 0; each(children, function(node) { if (node.nodeName == 'BR' && dom.getAttrib(node, 'data-mce-bogus') && count++ < children.length - 1) startCell.removeChild(node); }); } // Remove cell dom.remove(cell); } } } // Remove empty rows etc and restore caret location cleanup(); } }; function insertRow(before) { var posY, cell, lastCell, x, rowElm, newRow, newCell, otherCell, rowSpan; // Find first/last row each(grid, function(row, y) { each(row, function(cell, x) { if (isCellSelected(cell)) { cell = cell.elm; rowElm = cell.parentNode; newRow = cloneNode(rowElm, false); posY = y; if (before) return false; } }); if (before) return !posY; }); for (x = 0; x < grid[0].length; x++) { // Cell not found could be because of an invalid table structure if (!grid[posY][x]) continue; cell = grid[posY][x].elm; if (cell != lastCell) { if (!before) { rowSpan = getSpanVal(cell, 'rowspan'); if (rowSpan > 1) { setSpanVal(cell, 'rowSpan', rowSpan + 1); continue; } } else { // Check if cell above can be expanded if (posY > 0 && grid[posY - 1][x]) { otherCell = grid[posY - 1][x].elm; rowSpan = getSpanVal(otherCell, 'rowSpan'); if (rowSpan > 1) { setSpanVal(otherCell, 'rowSpan', rowSpan + 1); continue; } } } // Insert new cell into new row newCell = cloneCell(cell); setSpanVal(newCell, 'colSpan', cell.colSpan); newRow.appendChild(newCell); lastCell = cell; } } if (newRow.hasChildNodes()) { if (!before) dom.insertAfter(newRow, rowElm); else rowElm.parentNode.insertBefore(newRow, rowElm); } }; function insertCol(before) { var posX, lastCell; // Find first/last column each(grid, function(row, y) { each(row, function(cell, x) { if (isCellSelected(cell)) { posX = x; if (before) return false; } }); if (before) return !posX; }); each(grid, function(row, y) { var cell, rowSpan, colSpan; if (!row[posX]) return; cell = row[posX].elm; if (cell != lastCell) { colSpan = getSpanVal(cell, 'colspan'); rowSpan = getSpanVal(cell, 'rowspan'); if (colSpan == 1) { if (!before) { dom.insertAfter(cloneCell(cell), cell); fillLeftDown(posX, y, rowSpan - 1, colSpan); } else { cell.parentNode.insertBefore(cloneCell(cell), cell); fillLeftDown(posX, y, rowSpan - 1, colSpan); } } else setSpanVal(cell, 'colSpan', cell.colSpan + 1); lastCell = cell; } }); }; function deleteCols() { var cols = []; // Get selected column indexes each(grid, function(row, y) { each(row, function(cell, x) { if (isCellSelected(cell) && tinymce.inArray(cols, x) === -1) { each(grid, function(row) { var cell = row[x].elm, colSpan; colSpan = getSpanVal(cell, 'colSpan'); if (colSpan > 1) setSpanVal(cell, 'colSpan', colSpan - 1); else dom.remove(cell); }); cols.push(x); } }); }); cleanup(); }; function deleteRows() { var rows; function deleteRow(tr) { var nextTr, pos, lastCell; nextTr = dom.getNext(tr, 'tr'); // Move down row spanned cells each(tr.cells, function(cell) { var rowSpan = getSpanVal(cell, 'rowSpan'); if (rowSpan > 1) { setSpanVal(cell, 'rowSpan', rowSpan - 1); pos = getPos(cell); fillLeftDown(pos.x, pos.y, 1, 1); } }); // Delete cells pos = getPos(tr.cells[0]); each(grid[pos.y], function(cell) { var rowSpan; cell = cell.elm; if (cell != lastCell) { rowSpan = getSpanVal(cell, 'rowSpan'); if (rowSpan <= 1) dom.remove(cell); else setSpanVal(cell, 'rowSpan', rowSpan - 1); lastCell = cell; } }); }; // Get selected rows and move selection out of scope rows = getSelectedRows(); // Delete all selected rows each(rows.reverse(), function(tr) { deleteRow(tr); }); cleanup(); }; function cutRows() { var rows = getSelectedRows(); dom.remove(rows); cleanup(); return rows; }; function copyRows() { var rows = getSelectedRows(); each(rows, function(row, i) { rows[i] = cloneNode(row, true); }); return rows; }; function pasteRows(rows, before) { var selectedRows = getSelectedRows(), targetRow = selectedRows[before ? 0 : selectedRows.length - 1], targetCellCount = targetRow.cells.length; // Calc target cell count each(grid, function(row) { var match; targetCellCount = 0; each(row, function(cell, x) { if (cell.real) targetCellCount += cell.colspan; if (cell.elm.parentNode == targetRow) match = 1; }); if (match) return false; }); if (!before) rows.reverse(); each(rows, function(row) { var cellCount = row.cells.length, cell; // Remove col/rowspans for (i = 0; i < cellCount; i++) { cell = row.cells[i]; setSpanVal(cell, 'colSpan', 1); setSpanVal(cell, 'rowSpan', 1); } // Needs more cells for (i = cellCount; i < targetCellCount; i++) row.appendChild(cloneCell(row.cells[cellCount - 1])); // Needs less cells for (i = targetCellCount; i < cellCount; i++) dom.remove(row.cells[i]); // Add before/after if (before) targetRow.parentNode.insertBefore(row, targetRow); else dom.insertAfter(row, targetRow); }); }; function getPos(target) { var pos; each(grid, function(row, y) { each(row, function(cell, x) { if (cell.elm == target) { pos = {x : x, y : y}; return false; } }); return !pos; }); return pos; }; function setStartCell(cell) { startPos = getPos(cell); }; function findEndPos() { var pos, maxX, maxY; maxX = maxY = 0; each(grid, function(row, y) { each(row, function(cell, x) { var colSpan, rowSpan; if (isCellSelected(cell)) { cell = grid[y][x]; if (x > maxX) maxX = x; if (y > maxY) maxY = y; if (cell.real) { colSpan = cell.colspan - 1; rowSpan = cell.rowspan - 1; if (colSpan) { if (x + colSpan > maxX) maxX = x + colSpan; } if (rowSpan) { if (y + rowSpan > maxY) maxY = y + rowSpan; } } } }); }); return {x : maxX, y : maxY}; }; function setEndCell(cell) { var startX, startY, endX, endY, maxX, maxY, colSpan, rowSpan; endPos = getPos(cell); if (startPos && endPos) { // Get start/end positions startX = Math.min(startPos.x, endPos.x); startY = Math.min(startPos.y, endPos.y); endX = Math.max(startPos.x, endPos.x); endY = Math.max(startPos.y, endPos.y); // Expand end positon to include spans maxX = endX; maxY = endY; // Expand startX for (y = startY; y <= maxY; y++) { cell = grid[y][startX]; if (!cell.real) { if (startX - (cell.colspan - 1) < startX) startX -= cell.colspan - 1; } } // Expand startY for (x = startX; x <= maxX; x++) { cell = grid[startY][x]; if (!cell.real) { if (startY - (cell.rowspan - 1) < startY) startY -= cell.rowspan - 1; } } // Find max X, Y for (y = startY; y <= endY; y++) { for (x = startX; x <= endX; x++) { cell = grid[y][x]; if (cell.real) { colSpan = cell.colspan - 1; rowSpan = cell.rowspan - 1; if (colSpan) { if (x + colSpan > maxX) maxX = x + colSpan; } if (rowSpan) { if (y + rowSpan > maxY) maxY = y + rowSpan; } } } } // Remove current selection dom.removeClass(dom.select('td.mceSelected,th.mceSelected'), 'mceSelected'); // Add new selection for (y = startY; y <= maxY; y++) { for (x = startX; x <= maxX; x++) { if (grid[y][x]) dom.addClass(grid[y][x].elm, 'mceSelected'); } } } }; // Expose to public tinymce.extend(this, { deleteTable : deleteTable, split : split, merge : merge, insertRow : insertRow, insertCol : insertCol, deleteCols : deleteCols, deleteRows : deleteRows, cutRows : cutRows, copyRows : copyRows, pasteRows : pasteRows, getPos : getPos, setStartCell : setStartCell, setEndCell : setEndCell }); }; tinymce.create('tinymce.plugins.TablePlugin', { init : function(ed, url) { var winMan, clipboardRows, hasCellSelection = true; // Might be selected cells on reload function createTableGrid(node) { var selection = ed.selection, tblElm = ed.dom.getParent(node || selection.getNode(), 'table'); if (tblElm) return new TableGrid(tblElm, ed.dom, selection); }; function cleanup() { // Restore selection possibilities ed.getBody().style.webkitUserSelect = ''; if (hasCellSelection) { ed.dom.removeClass(ed.dom.select('td.mceSelected,th.mceSelected'), 'mceSelected'); hasCellSelection = false; } }; // Register buttons each([ ['table', 'table.desc', 'mceInsertTable', true], ['delete_table', 'table.del', 'mceTableDelete'], ['delete_col', 'table.delete_col_desc', 'mceTableDeleteCol'], ['delete_row', 'table.delete_row_desc', 'mceTableDeleteRow'], ['col_after', 'table.col_after_desc', 'mceTableInsertColAfter'], ['col_before', 'table.col_before_desc', 'mceTableInsertColBefore'], ['row_after', 'table.row_after_desc', 'mceTableInsertRowAfter'], ['row_before', 'table.row_before_desc', 'mceTableInsertRowBefore'], ['row_props', 'table.row_desc', 'mceTableRowProps', true], ['cell_props', 'table.cell_desc', 'mceTableCellProps', true], ['split_cells', 'table.split_cells_desc', 'mceTableSplitCells', true], ['merge_cells', 'table.merge_cells_desc', 'mceTableMergeCells', true] ], function(c) { ed.addButton(c[0], {title : c[1], cmd : c[2], ui : c[3]}); }); // Select whole table is a table border is clicked if (!tinymce.isIE) { ed.onClick.add(function(ed, e) { e = e.target; if (e.nodeName === 'TABLE') { ed.selection.select(e); ed.nodeChanged(); } }); } ed.onPreProcess.add(function(ed, args) { var nodes, i, node, dom = ed.dom, value; nodes = dom.select('table', args.node); i = nodes.length; while (i--) { node = nodes[i]; dom.setAttrib(node, 'data-mce-style', ''); if ((value = dom.getAttrib(node, 'width'))) { dom.setStyle(node, 'width', value); dom.setAttrib(node, 'width', ''); } if ((value = dom.getAttrib(node, 'height'))) { dom.setStyle(node, 'height', value); dom.setAttrib(node, 'height', ''); } } }); // Handle node change updates ed.onNodeChange.add(function(ed, cm, n) { var p; n = ed.selection.getStart(); p = ed.dom.getParent(n, 'td,th,caption'); cm.setActive('table', n.nodeName === 'TABLE' || !!p); // Disable table tools if we are in caption if (p && p.nodeName === 'CAPTION') p = 0; cm.setDisabled('delete_table', !p); cm.setDisabled('delete_col', !p); cm.setDisabled('delete_table', !p); cm.setDisabled('delete_row', !p); cm.setDisabled('col_after', !p); cm.setDisabled('col_before', !p); cm.setDisabled('row_after', !p); cm.setDisabled('row_before', !p); cm.setDisabled('row_props', !p); cm.setDisabled('cell_props', !p); cm.setDisabled('split_cells', !p); cm.setDisabled('merge_cells', !p); }); ed.onInit.add(function(ed) { var startTable, startCell, dom = ed.dom, tableGrid; winMan = ed.windowManager; // Add cell selection logic ed.onMouseDown.add(function(ed, e) { if (e.button != 2) { cleanup(); startCell = dom.getParent(e.target, 'td,th'); startTable = dom.getParent(startCell, 'table'); } }); dom.bind(ed.getDoc(), 'mouseover', function(e) { var sel, table, target = e.target; if (startCell && (tableGrid || target != startCell) && (target.nodeName == 'TD' || target.nodeName == 'TH')) { table = dom.getParent(target, 'table'); if (table == startTable) { if (!tableGrid) { tableGrid = createTableGrid(table); tableGrid.setStartCell(startCell); ed.getBody().style.webkitUserSelect = 'none'; } tableGrid.setEndCell(target); hasCellSelection = true; } // Remove current selection sel = ed.selection.getSel(); try { if (sel.removeAllRanges) sel.removeAllRanges(); else sel.empty(); } catch (ex) { // IE9 might throw errors here } e.preventDefault(); } }); ed.onMouseUp.add(function(ed, e) { var rng, sel = ed.selection, selectedCells, nativeSel = sel.getSel(), walker, node, lastNode, endNode; // Move selection to startCell if (startCell) { if (tableGrid) ed.getBody().style.webkitUserSelect = ''; function setPoint(node, start) { var walker = new tinymce.dom.TreeWalker(node, node); do { // Text node if (node.nodeType == 3 && tinymce.trim(node.nodeValue).length != 0) { if (start) rng.setStart(node, 0); else rng.setEnd(node, node.nodeValue.length); return; } // BR element if (node.nodeName == 'BR') { if (start) rng.setStartBefore(node); else rng.setEndBefore(node); return; } } while (node = (start ? walker.next() : walker.prev())); } // Try to expand text selection as much as we can only Gecko supports cell selection selectedCells = dom.select('td.mceSelected,th.mceSelected'); if (selectedCells.length > 0) { rng = dom.createRng(); node = selectedCells[0]; endNode = selectedCells[selectedCells.length - 1]; rng.setStartBefore(node); rng.setEndAfter(node); setPoint(node, 1); walker = new tinymce.dom.TreeWalker(node, dom.getParent(selectedCells[0], 'table')); do { if (node.nodeName == 'TD' || node.nodeName == 'TH') { if (!dom.hasClass(node, 'mceSelected')) break; lastNode = node; } } while (node = walker.next()); setPoint(lastNode); sel.setRng(rng); } ed.nodeChanged(); startCell = tableGrid = startTable = null; } }); ed.onKeyUp.add(function(ed, e) { cleanup(); }); ed.onKeyDown.add(function (ed, e) { fixTableCellSelection(ed); }); ed.onMouseDown.add(function (ed, e) { if (e.button != 2) { fixTableCellSelection(ed); } }); function tableCellSelected(ed, rng, n, currentCell) { // The decision of when a table cell is selected is somewhat involved. The fact that this code is // required is actually a pointer to the root cause of this bug. A cell is selected when the start // and end offsets are 0, the start container is a text, and the selection node is either a TR (most cases) // or the parent of the table (in the case of the selection containing the last cell of a table). var TEXT_NODE = 3, table = ed.dom.getParent(rng.startContainer, 'TABLE'), tableParent, allOfCellSelected, tableCellSelection; if (table) tableParent = table.parentNode; allOfCellSelected =rng.startContainer.nodeType == TEXT_NODE && rng.startOffset == 0 && rng.endOffset == 0 && currentCell && (n.nodeName=="TR" || n==tableParent); tableCellSelection = (n.nodeName=="TD"||n.nodeName=="TH")&& !currentCell; return allOfCellSelected || tableCellSelection; // return false; } // this nasty hack is here to work around some WebKit selection bugs. function fixTableCellSelection(ed) { if (!tinymce.isWebKit) return; var rng = ed.selection.getRng(); var n = ed.selection.getNode(); var currentCell = ed.dom.getParent(rng.startContainer, 'TD'); if (!tableCellSelected(ed, rng, n, currentCell)) return; if (!currentCell) { currentCell=n; } // Get the very last node inside the table cell var end = currentCell.lastChild; while (end.lastChild) end = end.lastChild; // Select the entire table cell. Nothing outside of the table cell should be selected. rng.setEnd(end, end.nodeValue.length); ed.selection.setRng(rng); } ed.plugins.table.fixTableCellSelection=fixTableCellSelection; // Add context menu if (ed && ed.plugins.contextmenu) { ed.plugins.contextmenu.onContextMenu.add(function(th, m, e) { var sm, se = ed.selection, el = se.getNode() || ed.getBody(); if (ed.dom.getParent(e, 'td') || ed.dom.getParent(e, 'th') || ed.dom.select('td.mceSelected,th.mceSelected').length) { m.removeAll(); if (el.nodeName == 'A' && !ed.dom.getAttrib(el, 'name')) { m.add({title : 'advanced.link_desc', icon : 'link', cmd : ed.plugins.advlink ? 'mceAdvLink' : 'mceLink', ui : true}); m.add({title : 'advanced.unlink_desc', icon : 'unlink', cmd : 'UnLink'}); m.addSeparator(); } if (el.nodeName == 'IMG' && el.className.indexOf('mceItem') == -1) { m.add({title : 'advanced.image_desc', icon : 'image', cmd : ed.plugins.advimage ? 'mceAdvImage' : 'mceImage', ui : true}); m.addSeparator(); } m.add({title : 'table.desc', icon : 'table', cmd : 'mceInsertTable', value : {action : 'insert'}}); m.add({title : 'table.props_desc', icon : 'table_props', cmd : 'mceInsertTable'}); m.add({title : 'table.del', icon : 'delete_table', cmd : 'mceTableDelete'}); m.addSeparator(); // Cell menu sm = m.addMenu({title : 'table.cell'}); sm.add({title : 'table.cell_desc', icon : 'cell_props', cmd : 'mceTableCellProps'}); sm.add({title : 'table.split_cells_desc', icon : 'split_cells', cmd : 'mceTableSplitCells'}); sm.add({title : 'table.merge_cells_desc', icon : 'merge_cells', cmd : 'mceTableMergeCells'}); // Row menu sm = m.addMenu({title : 'table.row'}); sm.add({title : 'table.row_desc', icon : 'row_props', cmd : 'mceTableRowProps'}); sm.add({title : 'table.row_before_desc', icon : 'row_before', cmd : 'mceTableInsertRowBefore'}); sm.add({title : 'table.row_after_desc', icon : 'row_after', cmd : 'mceTableInsertRowAfter'}); sm.add({title : 'table.delete_row_desc', icon : 'delete_row', cmd : 'mceTableDeleteRow'}); sm.addSeparator(); sm.add({title : 'table.cut_row_desc', icon : 'cut', cmd : 'mceTableCutRow'}); sm.add({title : 'table.copy_row_desc', icon : 'copy', cmd : 'mceTableCopyRow'}); sm.add({title : 'table.paste_row_before_desc', icon : 'paste', cmd : 'mceTablePasteRowBefore'}).setDisabled(!clipboardRows); sm.add({title : 'table.paste_row_after_desc', icon : 'paste', cmd : 'mceTablePasteRowAfter'}).setDisabled(!clipboardRows); // Column menu sm = m.addMenu({title : 'table.col'}); sm.add({title : 'table.col_before_desc', icon : 'col_before', cmd : 'mceTableInsertColBefore'}); sm.add({title : 'table.col_after_desc', icon : 'col_after', cmd : 'mceTableInsertColAfter'}); sm.add({title : 'table.delete_col_desc', icon : 'delete_col', cmd : 'mceTableDeleteCol'}); } else m.add({title : 'table.desc', icon : 'table', cmd : 'mceInsertTable'}); }); } // Fix to allow navigating up and down in a table in WebKit browsers. if (tinymce.isWebKit) { function moveSelection(ed, e) { function moveCursorToStartOfElement(n) { ed.selection.setCursorLocation(n, 0); } function getSibling(event, element) { return event.keyCode == UP_ARROW ? element.previousSibling : element.nextSibling; } function getNextRow(e, row) { var sibling = getSibling(e, row); return sibling !== null && sibling.tagName === 'TR' ? sibling : null; } function getTable(ed, currentRow) { return ed.dom.getParent(currentRow, 'table'); } function getTableSibling(currentRow) { var table = getTable(ed, currentRow); return getSibling(e, table); } function isVerticalMovement(event) { return event.keyCode == UP_ARROW || event.keyCode == DOWN_ARROW; } function isInTable(ed) { var node = ed.selection.getNode(); var currentRow = ed.dom.getParent(node, 'tr'); return currentRow !== null; } function columnIndex(column) { var colIndex = 0; var c = column; while (c.previousSibling) { c = c.previousSibling; colIndex = colIndex + getSpanVal(c, "colspan"); } return colIndex; } function findColumn(rowElement, columnIndex) { var c = 0; var r = 0; each(rowElement.children, function(cell, i) { c = c + getSpanVal(cell, "colspan"); r = i; if (c > columnIndex) return false; }); return r; } function moveCursorToRow(ed, node, row) { var srcColumnIndex = columnIndex(ed.dom.getParent(node, 'td,th')); var tgtColumnIndex = findColumn(row, srcColumnIndex) var tgtNode = row.childNodes[tgtColumnIndex]; moveCursorToStartOfElement(tgtNode); } function escapeTable(currentRow, e) { var tableSiblingElement = getTableSibling(currentRow); if (tableSiblingElement !== null) { moveCursorToStartOfElement(tableSiblingElement); return tinymce.dom.Event.cancel(e); } else { var element = e.keyCode == UP_ARROW ? currentRow.firstChild : currentRow.lastChild; // rely on default behaviour to escape table after we are in the last cell of the last row moveCursorToStartOfElement(element); return true; } } var UP_ARROW = 38; var DOWN_ARROW = 40; if (isVerticalMovement(e) && isInTable(ed)) { var node = ed.selection.getNode(); var currentRow = ed.dom.getParent(node, 'tr'); var nextRow = getNextRow(e, currentRow); // If we're at the first or last row in the table, we should move the caret outside of the table if (nextRow == null) { return escapeTable(currentRow, e); } else { moveCursorToRow(ed, node, nextRow); tinymce.dom.Event.cancel(e); return true; } } } ed.onKeyDown.add(moveSelection); } // Fixes an issue on Gecko where it's impossible to place the caret behind a table // This fix will force a paragraph element after the table but only when the forced_root_block setting is enabled if (!tinymce.isIE) { function fixTableCaretPos() { var last; // Skip empty text nodes form the end for (last = ed.getBody().lastChild; last && last.nodeType == 3 && !last.nodeValue.length; last = last.previousSibling) ; if (last && last.nodeName == 'TABLE') ed.dom.add(ed.getBody(), 'p', null, '
    '); }; // Fixes an bug where it's impossible to place the caret before a table in Gecko // this fix solves it by detecting when the caret is at the beginning of such a table // and then manually moves the caret infront of the table if (tinymce.isGecko) { ed.onKeyDown.add(function(ed, e) { var rng, table, dom = ed.dom; // On gecko it's not possible to place the caret before a table if (e.keyCode == 37 || e.keyCode == 38) { rng = ed.selection.getRng(); table = dom.getParent(rng.startContainer, 'table'); if (table && ed.getBody().firstChild == table) { if (isAtStart(rng, table)) { rng = dom.createRng(); rng.setStartBefore(table); rng.setEndBefore(table); ed.selection.setRng(rng); e.preventDefault(); } } } }); } ed.onKeyUp.add(fixTableCaretPos); ed.onSetContent.add(fixTableCaretPos); ed.onVisualAid.add(fixTableCaretPos); ed.onPreProcess.add(function(ed, o) { var last = o.node.lastChild; if (last && last.childNodes.length == 1 && last.firstChild.nodeName == 'BR') ed.dom.remove(last); }); fixTableCaretPos(); ed.startContent = ed.getContent({format : 'raw'}); } }); // Register action commands each({ mceTableSplitCells : function(grid) { grid.split(); }, mceTableMergeCells : function(grid) { var rowSpan, colSpan, cell; cell = ed.dom.getParent(ed.selection.getNode(), 'th,td'); if (cell) { rowSpan = cell.rowSpan; colSpan = cell.colSpan; } if (!ed.dom.select('td.mceSelected,th.mceSelected').length) { winMan.open({ url : url + '/merge_cells.htm', width : 240 + parseInt(ed.getLang('table.merge_cells_delta_width', 0)), height : 110 + parseInt(ed.getLang('table.merge_cells_delta_height', 0)), inline : 1 }, { rows : rowSpan, cols : colSpan, onaction : function(data) { grid.merge(cell, data.cols, data.rows); }, plugin_url : url }); } else grid.merge(); }, mceTableInsertRowBefore : function(grid) { grid.insertRow(true); }, mceTableInsertRowAfter : function(grid) { grid.insertRow(); }, mceTableInsertColBefore : function(grid) { grid.insertCol(true); }, mceTableInsertColAfter : function(grid) { grid.insertCol(); }, mceTableDeleteCol : function(grid) { grid.deleteCols(); }, mceTableDeleteRow : function(grid) { grid.deleteRows(); }, mceTableCutRow : function(grid) { clipboardRows = grid.cutRows(); }, mceTableCopyRow : function(grid) { clipboardRows = grid.copyRows(); }, mceTablePasteRowBefore : function(grid) { grid.pasteRows(clipboardRows, true); }, mceTablePasteRowAfter : function(grid) { grid.pasteRows(clipboardRows); }, mceTableDelete : function(grid) { grid.deleteTable(); } }, function(func, name) { ed.addCommand(name, function() { var grid = createTableGrid(); if (grid) { func(grid); ed.execCommand('mceRepaint'); cleanup(); } }); }); // Register dialog commands each({ mceInsertTable : function(val) { winMan.open({ url : url + '/table.htm', width : 400 + parseInt(ed.getLang('table.table_delta_width', 0)), height : 320 + parseInt(ed.getLang('table.table_delta_height', 0)), inline : 1 }, { plugin_url : url, action : val ? val.action : 0 }); }, mceTableRowProps : function() { winMan.open({ url : url + '/row.htm', width : 400 + parseInt(ed.getLang('table.rowprops_delta_width', 0)), height : 295 + parseInt(ed.getLang('table.rowprops_delta_height', 0)), inline : 1 }, { plugin_url : url }); }, mceTableCellProps : function() { winMan.open({ url : url + '/cell.htm', width : 400 + parseInt(ed.getLang('table.cellprops_delta_width', 0)), height : 295 + parseInt(ed.getLang('table.cellprops_delta_height', 0)), inline : 1 }, { plugin_url : url }); } }, function(func, name) { ed.addCommand(name, function(ui, val) { func(val); }); }); } }); // Register plugin tinymce.PluginManager.add('table', tinymce.plugins.TablePlugin); })(tinymce); webcit-8.24-dfsg.orig/tiny_mce/plugins/table/langs/0000755000175000017500000000000012271477123022063 5ustar michaelmichaelwebcit-8.24-dfsg.orig/tiny_mce/plugins/table/langs/bg_dlg.js0000644000175000017500000001605712271477123023650 0ustar michaelmichaeltinyMCE.addI18n('bg.table_dlg',{"rules_border":"\u0433\u0440\u0430\u043d\u0438\u0446\u0430","rules_box":"\u043a\u0443\u0442\u0438\u044f","rules_vsides":"vsides","rules_rhs":"rhs","rules_lhs":"lhs","rules_hsides":"hsides","rules_below":"\u0441\u043b\u0435\u0434","rules_above":"\u043f\u0440\u0435\u0434\u0438","rules_void":"void",rules:"\u041f\u0440\u0430\u0432\u0438\u043b\u0430","frame_all":"\u0432\u0441\u0438\u0447\u043a\u0438","frame_cols":"\u043a\u043e\u043b\u043e\u043d\u0438","frame_rows":"\u0440\u0435\u0434\u043e\u0432\u0435","frame_groups":"\u0433\u0440\u0443\u043f\u0438","frame_none":"\u0431\u0435\u0437",frame:"\u0424\u0440\u0435\u0439\u043c",caption:"\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u0435 \u043d\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u0442\u0430","missing_scope":"\u0421\u0438\u0433\u0443\u0440\u0435\u043d \u043b\u0438 \u0441\u0442\u0435, \u0447\u0435 \u0436\u0435\u043b\u0430\u0435\u0442\u0435 \u0434\u0430 \u043f\u0440\u043e\u0434\u044a\u043b\u0436\u0438\u0442\u0435 \u0431\u0435\u0437 \u0434\u0430 \u0441\u043b\u043e\u0436\u0438\u0442\u0435 \u043e\u0431\u0445\u0432\u0430\u0442 \u043d\u0430 \u0433\u043b\u0430\u0432\u0430\u0442\u0430 \u043d\u0430 \u043a\u043b\u0435\u0442\u043a\u0430\u0442\u0430. \u0411\u0435\u0437 \u043d\u0435\u0433\u043e, \u043d\u044f\u043a\u043e\u0438 \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u0438 \u0441 \u0443\u0432\u0440\u0435\u0436\u0434\u0430\u043d\u0438\u044f \u043c\u043e\u0433\u0430\u0442 \u0434\u0430 \u0438\u043c\u0430\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0434\u0430 \u0440\u0430\u0437\u0431\u0435\u0440\u0430\u0442 \u0434\u0430\u043d\u043d\u0438\u0442\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u0438 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u0442\u0430.","cell_limit":"\u041f\u0440\u0435\u0432\u0438\u0448\u0438\u0445\u0442\u0435 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u043d\u0430\u0442\u0430 \u0431\u0440\u043e\u0439\u043a\u0430 \u043a\u043b\u0435\u0442\u043a\u0438: {$cells}.","row_limit":"\u041f\u0440\u0435\u0432\u0438\u0448\u0438\u0445\u0442\u0435 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u043d\u0430\u0442\u0430 \u0431\u0440\u043e\u0439\u043a\u0430 \u0440\u0435\u0434\u043e\u0432\u0435: {$rows}.","col_limit":"\u041f\u0440\u0435\u0432\u0438\u0448\u0438\u0445\u0442\u0435 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u043d\u0430\u0442\u0430 \u0431\u0440\u043e\u0439\u043a\u0430 \u043a\u043e\u043b\u043e\u043d\u0438: {$cols}.",colgroup:"\u0413\u0440\u0443\u043f\u0430 \u043a\u043e\u043b\u043e\u043d\u0438",rowgroup:"\u0413\u0440\u0443\u043f\u0430 \u0440\u0435\u0434\u043e\u0432\u0435",scope:"\u041e\u0431\u0445\u0432\u0430\u0442",tfoot:"\u0414\u044a\u043d\u043e \u043d\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u0442\u0430",tbody:"\u0422\u044f\u043b\u043e \u043d\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u0442\u0430",thead:"\u0413\u043b\u0430\u0432\u0430 \u043d\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u0442\u0430","row_all":"\u041e\u0431\u043d\u043e\u0432\u0438 \u0432\u0441\u0438\u0447\u043a\u0438 \u0440\u0435\u0434\u043e\u0432\u0435 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u0442\u0430","row_even":"\u041e\u0431\u043d\u043e\u0432\u0438 \u0447\u0435\u0442\u043d\u0438\u0442\u0435 \u0440\u0435\u0434\u043e\u0432\u0435 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u0442\u0430","row_odd":"\u041e\u0431\u043d\u043e\u0432\u0438 \u043d\u0435\u0447\u0435\u0442\u043d\u0438\u0442\u0435 \u0440\u0435\u0434\u043e\u0432\u0435 \u0432 \u0442\u0430\u043b\u0438\u0446\u0430\u0442\u0430","row_row":"\u041e\u0431\u043d\u043e\u0432\u0438 \u0442\u0435\u043a\u0443\u0449\u0438\u044f \u0440\u0435\u0434","cell_all":"\u041e\u0431\u043d\u043e\u0432\u0438 \u0432\u0441\u0438\u0447\u043a\u0438 \u043a\u043b\u0435\u0442\u043a\u0438 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u0442\u0430","cell_row":"\u041e\u0431\u043d\u043e\u0432\u0438 \u0432\u0441\u0438\u0447\u043a\u0438 \u043a\u043b\u0435\u0442\u043a\u0438 \u043d\u0430 \u0440\u0435\u0434\u0430","cell_cell":"\u041e\u0431\u043d\u043e\u0432\u0438 \u0442\u0435\u043a\u0443\u0449\u0430\u0442\u0430 \u043a\u043b\u0435\u0442\u043a\u0430",th:"\u0413\u043b\u0430\u0432\u0430",td:"\u0414\u0430\u043d\u0438\u043d",summary:"\u041e\u0431\u043e\u0431\u0449\u0435\u043d\u0438\u0435",bgimage:"\u0424\u043e\u043d\u043e\u0432\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430",rtl:"\u041e\u0442\u0434\u044f\u0441\u043d\u043e \u043d\u0430 \u043b\u044f\u0432\u043e",ltr:"\u041e\u0442\u043b\u044f\u0432\u043e \u043d\u0430 \u0434\u044f\u0441\u043d\u043e",mime:"MIME \u0442\u0438\u043f",langcode:"\u041a\u043e\u0434 \u043d\u0430 \u0435\u0437\u0438\u043a\u0430",langdir:"\u041f\u043e\u0441\u043e\u043a\u0430 \u043d\u0430 \u0435\u0437\u0438\u043a\u0430",style:"\u0421\u0442\u0438\u043b",id:"Id","merge_cells_title":"\u0421\u043b\u0435\u0439 \u043a\u043b\u0435\u0442\u043a\u0438\u0442\u0435",bgcolor:"\u0426\u0432\u044f\u0442 \u043d\u0430 \u0444\u043e\u043d\u0430",bordercolor:"\u0426\u0432\u044f\u0442 \u043d\u0430 \u0440\u0430\u043c\u043a\u0430\u0442\u0430","align_bottom":"\u0414\u043e\u043b\u0443","align_top":"\u0413\u043e\u0440\u0435",valign:"\u0412\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u043d\u043e \u043f\u043e\u0434\u0440\u0430\u0432\u043d\u044f\u0432\u0430\u043d\u0435","cell_type":"\u0422\u0438\u043f \u043d\u0430 \u043a\u043b\u0435\u0442\u043a\u0430\u0442\u0430","cell_title":"\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u043d\u0430 \u043a\u043b\u0435\u0442\u043a\u0430\u0442\u0430","row_title":"\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u043d\u0430 \u0440\u0435\u0434\u0430","align_middle":"\u0426\u0435\u043d\u0442\u044a\u0440","align_right":"\u0414\u044f\u0441\u043d\u043e","align_left":"\u041b\u044f\u0432\u043e","align_default":"\u041f\u043e \u043f\u043e\u0434\u0440\u0430\u0437\u0431\u0438\u0440\u0430\u043d\u0435",align:"\u041f\u043e\u0434\u0440\u0430\u0432\u043d\u044f\u0432\u0430\u043d\u0435",border:"\u0420\u0430\u043c\u043a\u0430",cellpadding:"\u041e\u0442\u0441\u0442\u044a\u043f \u0432 \u043a\u043b\u0435\u0442\u043a\u0438\u0442\u0435",cellspacing:"\u0420\u0430\u0437\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043c\u044a\u0436\u0434\u0443 \u043a\u043b\u0435\u0442\u043a\u0438\u0442\u0435",rows:"\u0420\u0435\u0434\u043e\u0432\u0435",cols:"\u041a\u043e\u043b\u043e\u043d\u0438",height:"\u0412\u0438\u0441\u043e\u0447\u0438\u043d\u0430",width:"\u0428\u0438\u0440\u0438\u043d\u0430",title:"\u0412\u043c\u044a\u043a\u043d\u0438/\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0430\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0430",rowtype:"\u0420\u043e\u043b\u044f \u043d\u0430 \u0440\u0435\u0434\u0430","advanced_props":"\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0437\u0430 \u043d\u0430\u043f\u0440\u0435\u0434\u043d\u0430\u043b\u0438","general_props":"\u041e\u0431\u0449\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438","advanced_tab":"\u0417\u0430 \u043d\u0430\u043f\u0440\u0435\u0434\u043d\u0430\u043b\u0438","general_tab":"\u041e\u0431\u0449\u0438","cell_col":"\u041e\u0431\u043d\u043e\u0432\u0438 \u0432\u0441\u0438\u0447\u043a\u0438 \u043a\u043b\u0435\u0442\u043a\u0438 \u0432 \u043a\u043e\u043b\u043e\u043d\u0430\u0442\u0430"});webcit-8.24-dfsg.orig/tiny_mce/plugins/table/langs/fr_dlg.js0000644000175000017500000000520612271477123023661 0ustar michaelmichaeltinyMCE.addI18n('fr.table_dlg',{"rules_border":"bordure","rules_box":"bo\u00eete","rules_vsides":"verticales","rules_rhs":"\u00e0 droite","rules_lhs":"\u00e0 gauche","rules_hsides":"horizontales","rules_below":"au-dessous","rules_above":"au-dessus","rules_void":"aucune",rules:"R\u00e8gles","frame_all":"tous","frame_cols":"colonnes","frame_rows":"lignes","frame_groups":"groupe","frame_none":"aucun",frame:"Cadre",caption:"Afficher la l\u00e9gende du tableau","missing_scope":"\u00cates-vous s\u00fbr de vouloir continuer sans sp\u00e9cifier de port\u00e9e pour cette cellule de titre ? Sans port\u00e9e, cela peut \u00eatre difficile pour certains utilisateurs de comprendre le contenu ou les donn\u00e9es affich\u00e9es dans le tableau.","cell_limit":"Vous avez d\u00e9pass\u00e9 le nombre maximum de cellules ({$cells}).","row_limit":"Vous avez d\u00e9pass\u00e9 le nombre maximum de lignes ({$rows}).","col_limit":"Vous avez d\u00e9pass\u00e9 le nombre maximum de colonnes ({$cols}).",colgroup:"Groupe de colonnes",rowgroup:"Groupe de lignes",scope:"Port\u00e9e",tfoot:"Pied de tableau",tbody:"Corps de tableau",thead:"En-t\u00eates de tableau","row_all":"Mettre \u00e0 jour toutes les lignes du tableau","row_even":"Mettre \u00e0 jour les lignes paires","row_odd":"Mettre \u00e0 jour les lignes impaires","row_row":"Mettre \u00e0 jour la ligne courante","cell_all":"Mettre \u00e0 jour toutes les cellules du tableau","cell_row":"Mettre \u00e0 jour toutes les cellules de la ligne","cell_cell":"Mettre \u00e0 jour la cellule courante",th:"Titre",td:"Donn\u00e9es",summary:"R\u00e9sum\u00e9",bgimage:"Image de fond",rtl:"de droite \u00e0 gauche",ltr:"De gauche \u00e0 droite",mime:"Type MIME de la cible",langcode:"Code de la langue",langdir:"Sens de lecture",style:"Style",id:"Id","merge_cells_title":"Fusionner les cellules",bgcolor:"Couleur du fond",bordercolor:"Couleur de la bordure","align_bottom":"Bas","align_top":"Haut",valign:"Alignement vertical","cell_type":"Type de cellule","cell_title":"Propri\u00e9t\u00e9s de la cellule","row_title":"Propri\u00e9t\u00e9s de la ligne","align_middle":"Centr\u00e9","align_right":"Droite","align_left":"Gauche","align_default":"Par d\u00e9faut",align:"Alignement",border:"Bordure",cellpadding:"Espacement dans les cellules",cellspacing:"Espacement entre les cellules",rows:"Lignes",cols:"Colonnes",height:"Hauteur",width:"Largeur",title:"Ins\u00e9rer / modifier un tableau",rowtype:"Type de ligne","advanced_props":"Propri\u00e9t\u00e9s avanc\u00e9es","general_props":"Propri\u00e9t\u00e9s g\u00e9n\u00e9rales","advanced_tab":"Avanc\u00e9","general_tab":"G\u00e9n\u00e9ral","cell_col":"Mettre \u00e0 jour toutes les cellules de la colonne"});webcit-8.24-dfsg.orig/tiny_mce/plugins/table/langs/zh-cn_dlg.js0000644000175000017500000000545312271477123024275 0ustar michaelmichaeltinyMCE.addI18n('zh-cn.table_dlg',{"rules_border":"\u8fb9\u6846","rules_box":"\u6846","rules_vsides":"\u5782\u76f4","rules_rhs":"\u53f3\u8fb9","rules_lhs":"\u5de6\u8fb9","rules_hsides":"\u6c34\u5e73","rules_below":"\u4e0b","rules_above":"\u4e0a","rules_void":"\u7a7a",rules:"\u89c4\u5219","frame_all":"\u5168\u90e8","frame_cols":"\u5217","frame_rows":"\u884c","frame_groups":"\u5206\u7ec4","frame_none":"\u65e0",frame:"\u6846\u67b6",caption:"\u683c\u6807\u9898","missing_scope":"\u60a8\u6ca1\u6709\u6307\u5b9a\u8868\u683c\u7684\u6807\u9898\u5355\u5143\uff0c\u5982\u679c\u4e0d\u8bbe\u7f6e\uff0c\u53ef\u80fd\u4f1a\u4f7f\u7528\u6237\u96be\u4ee5\u7406\u89e3\u60a8\u7684\u8868\u683c\u7684\u5185\u5bb9\u3002\u60a8\u8981\u7ee7\u7eed\u5417\uff1f","cell_limit":"\u5df2\u7ecf\u8d85\u51fa\u6700\u5927\u5355\u5143\u683c\u6570{$cells}\u3002","row_limit":"\u5df2\u7ecf\u8d85\u51fa\u6700\u5927\u884c\u6570{$rows}\u3002","col_limit":"\u5df2\u7ecf\u8d85\u51fa\u6700\u5927\u5217\u6570{$cols}\u3002",colgroup:"\u5217\u5206\u7ec4",rowgroup:"\u884c\u5206\u7ec4",scope:"\u8303\u56f4",tfoot:"\u8868\u5c3e",tbody:"\u8868\u683c\u4e3b\u4f53",thead:"\u8868\u5934","row_all":"\u66f4\u65b0\u8868\u683c\u7684\u6240\u6709\u884c","row_even":"\u66f4\u65b0\u8868\u683c\u7684\u5076\u6570\u884c","row_odd":"\u66f4\u65b0\u8868\u683c\u7684\u5947\u6570\u884c","row_row":"\u66f4\u65b0\u5f53\u524d\u884c","cell_all":"\u66f4\u65b0\u6240\u6709\u5355\u5143\u683c","cell_row":"\u66f4\u65b0\u5f53\u524d\u884c\u7684\u5355\u5143\u683c","cell_cell":"\u66f4\u65b0\u5f53\u524d\u5355\u5143\u683c",th:"\u8868\u5934",td:"\u5185\u5bb9",summary:"\u6458\u8981",bgimage:"\u80cc\u666f\u56fe\u7247",rtl:"\u4ece\u53f3\u5230\u5de6",ltr:"\u4ece\u5de6\u5230\u53f3",mime:"\u76ee\u6807MIME\u7c7b\u578b",langcode:"\u8bed\u8a00\u7f16\u7801",langdir:"\u8bed\u8a00\u4e66\u5199\u65b9\u5411",style:"\u6837\u5f0f",id:"ID","merge_cells_title":"\u5408\u5e76\u5355\u5143\u683c",bgcolor:"\u80cc\u666f\u989c\u8272",bordercolor:"\u8fb9\u6846\u989c\u8272","align_bottom":"\u9760\u4e0b","align_top":"\u9760\u4e0a",valign:"\u5782\u76f4\u5bf9\u9f50","cell_type":"\u5355\u5143\u683c\u7c7b\u578b","cell_title":"\u5355\u5143\u683c\u5c5e\u6027","row_title":"\u884c\u5c5e\u6027","align_middle":"\u5c45\u4e2d","align_right":"\u53f3\u5bf9\u9f50","align_left":"\u5de6\u5bf9\u9f50","align_default":"\u9ed8\u8ba4",align:"\u5bf9\u9f50",border:"\u8fb9\u6846",cellpadding:"\u5355\u5143\u683c\u8fb9\u8ddd",cellspacing:"\u5355\u5143\u683c\u95f4\u8ddd",rows:"\u884c\u6570",cols:"\u5217\u6570",height:"\u9ad8\u5ea6",width:"\u5bbd\u5ea6",title:"\u63d2\u5165/\u7f16\u8f91 \u8868\u683c",rowtype:"\u884c\u6240\u5728\u7684\u8868\u683c\u4f4d\u7f6e","advanced_props":"\u9ad8\u7ea7\u5c5e\u6027","general_props":"\u666e\u901a\u5c5e\u6027","advanced_tab":"\u9ad8\u7ea7","general_tab":"\u666e\u901a","cell_col":"\u66f4\u65b0\u8be5\u5217\u5168\u90e8\u5355\u5143\u683c"});webcit-8.24-dfsg.orig/tiny_mce/plugins/table/langs/de_dlg.js0000644000175000017500000000463612271477123023650 0ustar michaelmichaeltinyMCE.addI18n('de.table_dlg',{"rules_border":"alle 4 Seiten (Border)","rules_box":"alle 4 Seiten (Box)","rules_vsides":"links und rechts","rules_rhs":"nur rechts","rules_lhs":"nur links","rules_hsides":"oben und unten","rules_below":"nur unten","rules_above":"nur oben","rules_void":"keins",rules:"Gitter","frame_all":"zwischen allen Zellen","frame_cols":"zwischen Spalten","frame_rows":"zwischen Zeilen","frame_groups":"zwischen Gruppen","frame_none":"keine",frame:"Rahmen",caption:"Beschriftung der Tabelle","missing_scope":"Wollen Sie wirklich keine Beziehung f\u00fcr diese \u00dcberschrift angeben? Benutzer mit k\u00f6rperlichen Einschr\u00e4nkungen k\u00f6nnten Schwierigkeiten haben, den Inhalt der Tabelle zu verstehen.","cell_limit":"Sie haben die maximale Zellenzahl von {$cells} \u00fcberschritten.","row_limit":"Sie haben die maximale Zeilenzahl von {$rows} \u00fcberschritten.","col_limit":"Sie haben die maximale Spaltenzahl von {$cols} \u00fcberschritten.",colgroup:"Horizontal gruppieren",rowgroup:"Vertikal gruppieren",scope:"Bezug",tfoot:"Tabellenfu\u00df",tbody:"Tabelleninhalt",thead:"Tabellenkopf","row_all":"Alle Zeilen ver\u00e4ndern","row_even":"Gerade Zeilen ver\u00e4ndern","row_odd":"Ungerade Zeilen ver\u00e4ndern","row_row":"Diese Zeile ver\u00e4ndern","cell_all":"Alle Zellen der Tabelle ver\u00e4ndern","cell_row":"Alle Zellen in dieser Zeile ver\u00e4ndern","cell_cell":"Diese Zelle ver\u00e4ndern",th:"\u00dcberschrift",td:"Textzelle",summary:"Zusammenfassung",bgimage:"Hintergrundbild",rtl:"Rechts nach links",ltr:"Links nach rechts",mime:"MIME-Type des Inhalts",langcode:"Sprachcode",langdir:"Schriftrichtung",style:"Format",id:"ID","merge_cells_title":"Zellen vereinen",bgcolor:"Hintergrundfarbe",bordercolor:"Rahmenfarbe","align_bottom":"Unten","align_top":"Oben",valign:"Vertikale Ausrichtung","cell_type":"Zellentyp","cell_title":"Eigenschaften der Zelle","row_title":"Eigenschaften der Zeile","align_middle":"Mittig","align_right":"Rechts","align_left":"Links","align_default":"Standard",align:"Ausrichtung",border:"Rahmen",cellpadding:"Abstand innerhalb der Zellen",cellspacing:"Zellenabstand",rows:"Zeilen",cols:"Spalten",height:"H\u00f6he",width:"Breite",title:"Tabelle einf\u00fcgen/bearbeiten",rowtype:"Gruppierung","advanced_props":"Erweiterte Einstellungen","general_props":"Allgemeine Einstellungen","advanced_tab":"Erweitert","general_tab":"Allgemein","cell_col":"Alle Zellen in dieser Spalte aktualisieren"});webcit-8.24-dfsg.orig/tiny_mce/plugins/table/langs/fi_dlg.js0000644000175000017500000000472412271477123023654 0ustar michaelmichaeltinyMCE.addI18n('fi.table_dlg',{"rules_border":"kehys","rules_box":"laatikko","rules_vsides":"pystysuorat reunat","rules_rhs":"rhs","rules_lhs":"lhs","rules_hsides":"vaakasuorat reunat","rules_below":"alapuoli","rules_above":"yl\u00e4puoli","rules_void":"tyhj\u00e4",rules:"S\u00e4\u00e4nn\u00f6t","frame_all":"kaikki","frame_cols":"sarakkeet","frame_rows":"rivit","frame_groups":"ryhm\u00e4t","frame_none":"ei mit\u00e4\u00e4n",frame:"kehys",caption:"Taulukon seloste","missing_scope":"Haluatko varmasti jatkaa m\u00e4\u00e4ritt\u00e4m\u00e4tt\u00e4 tilaa t\u00e4lle taulukon otsakesolulle? Ilman sit\u00e4 joidenkin k\u00e4ytt\u00e4jien voi olla vaikea ymm\u00e4rt\u00e4\u00e4 taulukon sis\u00e4lt\u00e4m\u00e4\u00e4 informaatiota.","cell_limit":"Olet ylitt\u00e4nyt suurimman sallitun m\u00e4\u00e4r\u00e4n soluja {$cells}.","row_limit":"Olet ylitt\u00e4nyt suurimman sallitun m\u00e4\u00e4r\u00e4n rivej\u00e4 {$rows}.","col_limit":"Olet ylitt\u00e4nyt suurimman sallitun m\u00e4\u00e4r\u00e4n sarakkeita {$cols}.",colgroup:"Sarake ryhm\u00e4",rowgroup:"Rivi ryhm\u00e4",scope:"Tila",tfoot:"Taulukon alaosa",tbody:"Taulukon runko",thead:"Taulukon otsake","row_all":"P\u00e4ivit\u00e4 kaikki taulukon rivit","row_even":"P\u00e4ivit\u00e4 taulukon parilliset rivit","row_odd":"P\u00e4ivit\u00e4 taulukon parittomat rivit","row_row":"P\u00e4ivit\u00e4 rivi","cell_all":"P\u00e4ivit\u00e4 kaikki taulukon solut","cell_row":"P\u00e4ivit\u00e4 kaikki rivin solut","cell_cell":"P\u00e4ivit\u00e4 solu",th:"Otsake",td:"Tietue",summary:"Yhteenveto",bgimage:"Taustakuva",rtl:"Oikealta vasemmalle",ltr:"Vasemmalta oikealle",mime:"Kohteen MIME-tyyppi",langcode:"Kielen koodi",langdir:"Kielen suunta",style:"Tyyli",id:"Id","merge_cells_title":"Yhdist\u00e4 taulukon solut",bgcolor:"Taustan v\u00e4ri",bordercolor:"Kehyksen v\u00e4ri","align_bottom":"Alas","align_top":"Yl\u00f6s",valign:"Pystysuunnan tasaus","cell_type":"Solun tyyppi","cell_title":"Taulukon solun asetukset","row_title":"Taulukon rivin asetukset","align_middle":"Keskitetty","align_right":"Oikea","align_left":"Vasen","align_default":"Oletus",align:"Tasaus",border:"Kehys",cellpadding:"Solun tyhj\u00e4 tila",cellspacing:"Solun v\u00e4li",rows:"Rivit",cols:"Sarakkeet",height:"Korkeus",width:"Leveys",title:"Lis\u00e4\u00e4/muokkaa taulukkoa",rowtype:"Rivi taulukon osassa","advanced_props":"Edistyneet asetukset","general_props":"Yleiset asetukset","advanced_tab":"Edistynyt","general_tab":"Yleiset","cell_col":"P\u00e4ivit\u00e4 kaikki sarakkeen solut"});webcit-8.24-dfsg.orig/tiny_mce/plugins/table/langs/et_dlg.js0000644000175000017500000000404312271477123023660 0ustar michaelmichaeltinyMCE.addI18n('et.table_dlg',{"rules_border":"raam","rules_box":"kast","rules_vsides":"vsides","rules_rhs":"rhs","rules_lhs":"lhs","rules_hsides":"hsides","rules_below":"all","rules_above":"\u00fcleval","rules_void":"t\u00fchi",rules:"Reeglid","frame_all":"k\u00f5ik","frame_cols":"veerud","frame_rows":"read","frame_groups":"grupid","frame_none":"mitte \u00fckski",frame:"Raam",caption:"Tabeli seletus","missing_scope":"Oled kindel, et soovid j\u00e4tkata t\u00e4psustamata antud tabeli p\u00e4ise nime?","cell_limit":"Oled j\u00f5udnud maksimaalse arvu elementideni","row_limit":"Oled j\u00f5udnud maksimaalse arvu ridadeni","col_limit":"Oled j\u00f5udnud maksemaalse arvu veegudeni.",colgroup:"Veeru grupp",rowgroup:"Rea grupp",scope:"Ulatus",tfoot:"Tabeli jalus",tbody:"Tabeli sisu",thead:"Tabeli p\u00e4is","row_all":"Uuenda k\u00f5iki ridu tabelis","row_even":"Uuenda paaris ridu tabelis","row_odd":"Uuenda paarituid ridu tabelis","row_row":"Uuenda antud rida","cell_all":"Uuenda k\u00f5iki lahtreid tabelis","cell_row":"Uuenda k\u00f5iki lahtreid reas","cell_cell":"Uuenda antud lahtrit",th:"P\u00e4is",td:"Info",summary:"Kokkuv\u00f5te",bgimage:"Tausta pilt",rtl:"Paremalt vasakule",ltr:"Vasakult paremale",mime:"M\u00e4rgista MIME t\u00fc\u00fcp",langcode:"Keele kood",langdir:"Keele suund",style:"Stiil",id:"ID","merge_cells_title":"\u00dchenda lahtrid",bgcolor:"Tausta v\u00e4rv",bordercolor:"Raami v\u00e4rv","align_bottom":"All","align_top":"\u00dcleval",valign:"Vertikaalne joondus","cell_type":"Veeru t\u00fc\u00fcp","cell_title":"Tabeli veeru seaded","row_title":"Tabeli rea seaded","align_middle":"Keskel","align_right":"Parem","align_left":"Vasak","align_default":"Vaikimisi",align:"Joondus",border:"Raam",cellpadding:"Veeru t\u00e4ide",cellspacing:"Veeru laius",rows:"Ridu",cols:"Veerge",height:"K\u00f5rgus",width:"Laius",title:"Sisesta/muuda tabelit",rowtype:"Rida rea osas","advanced_props":"T\u00e4psustatud seaded","general_props":"\u00dcldised seaded","advanced_tab":"T\u00e4psustatud","general_tab":"\u00dcldine","cell_col":"Update all cells in column"});webcit-8.24-dfsg.orig/tiny_mce/plugins/table/langs/es_dlg.js0000644000175000017500000000441712271477123023664 0ustar michaelmichaeltinyMCE.addI18n('es.table_dlg',{"rules_border":"border","rules_box":"box","rules_vsides":"vsides","rules_rhs":"rhs","rules_lhs":"lhs","rules_hsides":"hsides","rules_below":"debajo","rules_above":"encima","rules_void":"vac\u00edo",rules:"Reglas","frame_all":"todos","frame_cols":"cols","frame_rows":"filas","frame_groups":"grupos","frame_none":"ninguno",frame:"Recuadro",caption:"Subt\u00edtulo de la tabla","missing_scope":" \u00bfEst\u00e1 seguro que desea continuar sin especificar el alcance del encabezado de celda? Sin \u00e9l podr\u00eda ser dificultoso para algunos usuarios entender el contenido o los datos mostrados en la tabla.","cell_limit":"Ha superado el n\u00famero m\u00e1ximo de celdas: {$cells}.","row_limit":"Ha superado el n\u00famero m\u00e1ximo de filas: {$rows}.","col_limit":"Ha superado el n\u00famero m\u00e1ximo de columnas: {$cols}.",colgroup:"Grupo de columnas",rowgroup:"Grupo de filas",scope:"Alcance",tfoot:"Pie de la tabla",tbody:"Cuerpo de la tabla",thead:"Encabezado de la tabla","row_all":"Actualizar todas las filas","row_even":"Actualizar filas pares","row_odd":"Actualizar filas impares","row_row":"Actualizar fila actual","cell_all":"Actualizar todas las celdas en la tabla","cell_row":"Actualizar todas las celdas en la fila","cell_cell":"Actualizar celda actual",th:"Encabezado",td:"Datos",summary:"Resumen",bgimage:"Imagen de fondo",rtl:"Derecha a izquierda",ltr:"Izquierda a derecha",mime:"Tipo MIME",langcode:"C\u00f3digo del lenguaje",langdir:"Direcci\u00f3n del lenguaje",style:"Estilo",id:"Id","merge_cells_title":"Vincular celdas",bgcolor:"Color de fondo",bordercolor:"Color del borde","align_bottom":"Debajo","align_top":"Arriba",valign:"Alineaci\u00f3n vertical","cell_type":"Tipo de celda","cell_title":"Propiedades de la celda","row_title":"Propiedades de la fila","align_middle":"Centrado","align_right":"Derecha","align_left":"Izquierda","align_default":"Predet.",align:"Alineaci\u00f3n",border:"Borde",cellpadding:"Relleno de celda",cellspacing:"Espaciado de celda",rows:"Filas",cols:"Cols",height:"Alto",width:"Ancho",title:"Insertar/Modificar tabla",rowtype:"Tipo de fila","advanced_props":"Propiedades avanzadas","general_props":"Propiedades generales","advanced_tab":"Avanzado","general_tab":"General","cell_col":"Actualizar todas las celdas en la columna"});webcit-8.24-dfsg.orig/tiny_mce/plugins/table/langs/da_dlg.js0000644000175000017500000000432612271477123023640 0ustar michaelmichaeltinyMCE.addI18n('da.table_dlg',{"rules_border":"kant","rules_box":"boks","rules_vsides":"vsides","rules_rhs":"rhs","rules_lhs":"lhs","rules_hsides":"hsides","rules_below":"under","rules_above":"over","rules_void":"void",rules:"Regler","frame_all":"alle","frame_cols":"kolonner","frame_rows":"r\u00e6kker","frame_groups":"grupper","frame_none":"ingen",frame:"Ramme",caption:"Tabeloverskrift","missing_scope":"Er du sikker p\u00e5, du vil forts\u00e6tte uden at angive forklaring for denne overskriftscelle? Uden forklaring vil v\u00e6re sv\u00e6rt for f.ek.s blinde at l\u00e6se og forst\u00e5 indholdet i tabellen.","cell_limit":"Du har overskredet antallet af tilladte celler p\u00e5 {$cells}.","row_limit":"Du har overskredet antallet af tilladte r\u00e6kker p\u00e5 {$rows}.","col_limit":"Du har overskredet antallet af tilladte kolonner p\u00e5 {$cols}.",colgroup:"Kolonnegruppe",rowgroup:"R\u00e6kkegruppe",scope:"Forklaring",tfoot:"Tabelfod",tbody:"Tabelkrop",thead:"Tabelhoved","row_all":"Opdater alle r\u00e6kker","row_even":"Opdater lige r\u00e6kker","row_odd":"Opdater ulige r\u00e6kker","row_row":"Opdater aktuelle celle","cell_all":"Opdater alle celler i tabellen","cell_row":"Opdater alle celler i r\u00e6kken","cell_cell":"Opdater aktuelle celle",th:"Hoved",td:"Data",summary:"Beskrivelse",bgimage:"Baggrundsbillede",rtl:"H\u00f8jre mod venstre",ltr:"Venstre mod h\u00f8jre",mime:"Destinations-MIME-type",langcode:"Sprogkode",langdir:"Sprogretning",style:"Style",id:"Id","merge_cells_title":"Flet celler",bgcolor:"Baggrundsfarve",bordercolor:"Kantfarve","align_bottom":"Bund","align_top":"Top",valign:"Vertikal justering","cell_type":"Celletype","cell_title":"Celleegenskaber","row_title":"R\u00e6kkeegenskaber","align_middle":"Centreret","align_right":"H\u00f8jre","align_left":"Venstre","align_default":"Standard",align:"Justering",border:"Kant",cellpadding:"Afstand til celleindhold",cellspacing:"Afstand mellem celler",rows:"R\u00e6kker",cols:"Kolonner",height:"H\u00f8jde",width:"Bredde",title:"Inds\u00e6t/rediger tabel",rowtype:"R\u00e6kke i tabel del","advanced_props":"Avancerede egenskaber","general_props":"Generelle egenskaber","advanced_tab":"Avanceret","general_tab":"Generelt","cell_col":"Opdat\u00e9r alle celler i en s\u00f8jle"});webcit-8.24-dfsg.orig/tiny_mce/plugins/table/langs/el_dlg.js0000644000175000017500000002023012271477123023644 0ustar michaelmichaeltinyMCE.addI18n('el.table_dlg',{"rules_border":"\u03c0\u03bb\u03b1\u03af\u03c3\u03b9\u03bf","rules_box":"\u03ba\u03bf\u03c5\u03c4\u03af","rules_vsides":"\u03ba\u03ac\u03b8\u03b5\u03c4\u03b5\u03c2 \u03c0\u03bb\u03b5\u03c5\u03c1\u03ad\u03c2","rules_rhs":"\u03b4\u03b5\u03be\u03b9\u03ac \u03bf\u03c1\u03b9\u03b6\u03cc\u03bd\u03c4\u03b9\u03b1 \u03c0\u03bb\u03b5\u03c5\u03c1\u03ac","rules_lhs":"\u03b1\u03c1\u03b9\u03c3\u03c4\u03b5\u03c1\u03ae \u03bf\u03c1\u03b9\u03b6\u03cc\u03bd\u03c4\u03b9\u03b1 \u03c0\u03bb\u03b5\u03c5\u03c1\u03ac","rules_hsides":"\u03bf\u03c1\u03b9\u03b6\u03cc\u03bd\u03c4\u03b9\u03b5\u03c2 \u03c0\u03bb\u03b5\u03c5\u03c1\u03ad\u03c2","rules_below":"\u03b1\u03c0\u03cc \u03ba\u03ac\u03c4\u03c9","rules_above":"\u03b1\u03c0\u03cc \u03c0\u03ac\u03bd\u03c9","rules_void":"\u03ba\u03b5\u03bd\u03cc",rules:"\u039a\u03b1\u03bd\u03cc\u03bd\u03b5\u03c2","frame_all":"\u03cc\u03bb\u03b1","frame_cols":"\u03c3\u03c4\u03ae\u03bb\u03b5\u03c2","frame_rows":"\u03b3\u03c1\u03b1\u03bc\u03bc\u03ad\u03c2","frame_groups":"\u03bf\u03bc\u03ac\u03b4\u03b5\u03c2","frame_none":"\u03ba\u03b1\u03bd\u03ad\u03bd\u03b1",frame:"Frame",caption:"\u0395\u03c0\u03b9\u03ba\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1 \u03c0\u03af\u03bd\u03b1\u03ba\u03b1","missing_scope":"\u03a3\u03af\u03b3\u03bf\u03c5\u03c1\u03b1 \u03b8\u03ad\u03bb\u03b5\u03c4\u03b5 \u03bd\u03b1 \u03c3\u03c5\u03bd\u03b5\u03c7\u03af\u03c3\u03b5\u03c4\u03b5 \u03c7\u03c9\u03c1\u03af\u03c2 \u03bd\u03b1 \u03ad\u03c7\u03b5\u03c4\u03b5 \u03ba\u03b1\u03b8\u03bf\u03c1\u03af\u03c3\u03b5\u03b9 \u03c4\u03b7\u03bd \u03b5\u03bc\u03b2\u03ad\u03bb\u03b5\u03b9\u03b1 \u03c4\u03bf\u03c5 \u03ba\u03b5\u03bb\u03b9\u03bf\u03cd \u03c4\u03b7\u03c2 \u03ba\u03bf\u03c1\u03c5\u03c6\u03ae\u03c2 \u03c0\u03af\u03bd\u03b1\u03ba\u03b1. \u03a7\u03c9\u03c1\u03af\u03c2 \u03b1\u03c5\u03c4\u03ae, \u03bc\u03c0\u03bf\u03c1\u03b5\u03af \u03bd\u03b1 \u03b5\u03af\u03bd\u03b1\u03b9 \u03b4\u03cd\u03c3\u03ba\u03bf\u03bb\u03bf \u03b3\u03b9\u03b1 \u03ba\u03ac\u03c0\u03bf\u03b9\u03bf\u03c5\u03c2 \u03c7\u03c1\u03ae\u03c3\u03c4\u03b5\u03c2 \u03bc\u03b5 \u03c0\u03c1\u03bf\u03b2\u03bb\u03ae\u03bc\u03b1\u03c4\u03b1 \u03bd\u03b1 \u03ba\u03b1\u03c4\u03b1\u03bb\u03ac\u03b2\u03bf\u03c5\u03bd \u03c4\u03bf \u03c0\u03b5\u03c1\u03b9\u03b5\u03c7\u03cc\u03bc\u03b5\u03bd\u03bf \u03c4\u03bf\u03c5 \u03c0\u03af\u03bd\u03b1\u03ba\u03b1.","cell_limit":"\u0388\u03c7\u03b5\u03c4\u03b5 \u03be\u03b5\u03c0\u03b5\u03c1\u03ac\u03c3\u03b5\u03b9 \u03c4\u03bf \u03cc\u03c1\u03b9\u03bf \u03c4\u03c9\u03bd \u03ba\u03b5\u03bb\u03b9\u03ce\u03bd \u03c0\u03bf\u03c5 \u03b5\u03af\u03bd\u03b1\u03b9 {$cells}.","row_limit":"\u0388\u03c7\u03b5\u03c4\u03b5 \u03be\u03b5\u03c0\u03b5\u03c1\u03ac\u03c3\u03b5\u03b9 \u03c4\u03bf \u03cc\u03c1\u03b9\u03bf \u03c4\u03c9\u03bd \u03b3\u03c1\u03b1\u03bc\u03bc\u03ce\u03bd \u03c0\u03bf\u03c5 \u03b5\u03af\u03bd\u03b1\u03b9 {$rows}.","col_limit":"\u0388\u03c7\u03b5\u03c4\u03b5 \u03be\u03b5\u03c0\u03b5\u03c1\u03ac\u03c3\u03b5\u03b9 \u03c4\u03bf \u03cc\u03c1\u03b9\u03bf \u03c4\u03c9\u03bd \u03c3\u03c4\u03b7\u03bb\u03c9\u03bd \u03c0\u03bf\u03c5 \u03b5\u03af\u03bd\u03b1\u03b9 {$cols}.",colgroup:"\u039f\u03bc\u03ac\u03b4\u03b1 \u03c3\u03c4\u03b7\u03bb\u03ce\u03bd",rowgroup:"\u039f\u03bc\u03ac\u03b4\u03b1 \u03b3\u03c1\u03b1\u03bc\u03bc\u03ce\u03bd",scope:"\u0395\u03bc\u03b2\u03ad\u03bb\u03b5\u03b9\u03b1",tfoot:"\u0392\u03ac\u03c3\u03b7 \u03c0\u03af\u03bd\u03b1\u03ba\u03b1",tbody:"\u03a3\u03ce\u03bc\u03b1 \u03c0\u03af\u03bd\u03b1\u03ba\u03b1",thead:"\u039a\u03bf\u03c1\u03c5\u03c6\u03ae \u03c0\u03af\u03bd\u03b1\u03ba\u03b1","row_all":"\u0395\u03bd\u03b7\u03bc\u03ad\u03c1\u03c9\u03c3\u03b7 \u03cc\u03bb\u03c9\u03bd \u03c4\u03c9\u03bd \u03b3\u03c1\u03b1\u03bc\u03bc\u03ce\u03bd \u03c4\u03bf\u03c5 \u03c0\u03af\u03bd\u03b1\u03ba\u03b1","row_even":"\u0395\u03bd\u03b7\u03bc\u03ad\u03c1\u03c9\u03c3\u03b7 \u03c4\u03c9\u03bd \u03b6\u03c5\u03b3\u03ce\u03bd \u03b3\u03c1\u03b1\u03bc\u03bc\u03ce\u03bd \u03c4\u03bf\u03c5 \u03c0\u03af\u03bd\u03b1\u03ba\u03b1","row_odd":"\u0395\u03bd\u03b7\u03bc\u03ad\u03c1\u03c9\u03c3\u03b7 \u03c4\u03c9\u03bd \u03bc\u03bf\u03bd\u03ce\u03bd \u03b3\u03c1\u03b1\u03bc\u03bc\u03ce\u03bd \u03c4\u03bf\u03c5 \u03c0\u03af\u03bd\u03b1\u03ba\u03b1","row_row":"\u0395\u03bd\u03b7\u03bc\u03ad\u03c1\u03c9\u03c3\u03b7 \u03c4\u03b7\u03c2 \u03c4\u03c1\u03ad\u03c7\u03bf\u03c5\u03c3\u03b1\u03c2 \u03b3\u03c1\u03b1\u03bc\u03bc\u03ae\u03c2","cell_all":"\u0395\u03bd\u03b7\u03bc\u03ad\u03c1\u03c9\u03c3\u03b7 \u03cc\u03bb\u03c9\u03bd \u03c4\u03c9\u03bd \u03ba\u03b5\u03bb\u03b9\u03ce\u03bd \u03c4\u03bf\u03c5 \u03c0\u03af\u03bd\u03b1\u03ba\u03b1","cell_row":"\u0395\u03bd\u03b7\u03bc\u03ad\u03c1\u03c9\u03c3\u03b7 \u03cc\u03bb\u03c9\u03bd \u03c4\u03c9\u03bd \u03ba\u03b5\u03bb\u03b9\u03ce\u03bd \u03c4\u03b7\u03c2 \u03b3\u03c1\u03b1\u03bc\u03bc\u03ae\u03c2","cell_cell":"\u0395\u03bd\u03b7\u03bc\u03ad\u03c1\u03c9\u03c3\u03b7 \u03c4\u03c1\u03ad\u03c7\u03bf\u03bd\u03c4\u03bf\u03c2 \u03ba\u03b5\u03bb\u03b9\u03bf\u03cd",th:"\u0395\u03c0\u03b9\u03ba\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1",td:"\u0394\u03b5\u03b4\u03bf\u03bc\u03ad\u03bd\u03b1",summary:"\u03a0\u03b5\u03c1\u03af\u03bb\u03b7\u03c8\u03b7",bgimage:"\u0395\u03b9\u03ba\u03cc\u03bd\u03b1 \u03c6\u03cc\u03bd\u03c4\u03bf\u03c5",rtl:"\u0394\u03b5\u03be\u03b9\u03ac \u03c0\u03c1\u03bf\u03c2 \u03b1\u03c1\u03b9\u03c3\u03c4\u03b5\u03c1\u03ac",ltr:"\u0391\u03c1\u03b9\u03c3\u03c4\u03b5\u03c1\u03ac \u03c0\u03c1\u03bf\u03c2 \u03b4\u03b5\u03be\u03b9\u03ac",mime:"\u03a4\u03cd\u03c0\u03bf\u03c2 MIME \u03c3\u03c4\u03cc\u03c7\u03bf\u03c5",langcode:"\u039a\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2 \u03b3\u03bb\u03ce\u03c3\u03c3\u03b1\u03c2",langdir:"\u039a\u03b1\u03c4\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 \u03b3\u03bb\u03ce\u03c3\u03c3\u03b1\u03c2",style:"\u03a3\u03c4\u03c5\u03bb",id:"Id","merge_cells_title":"\u03a3\u03c5\u03b3\u03c7\u03ce\u03bd\u03b5\u03c5\u03c3\u03b7 \u03ba\u03b5\u03bb\u03b9\u03ce\u03bd \u03c0\u03af\u03bd\u03b1\u03ba\u03b1",bgcolor:"\u03a7\u03c1\u03ce\u03bc\u03b1 \u03c6\u03cc\u03bd\u03c4\u03bf\u03c5",bordercolor:"\u03a7\u03c1\u03ce\u03bc\u03b1 \u03c0\u03bb\u03b1\u03b9\u03c3\u03af\u03bf\u03c5","align_bottom":"\u039a\u03ac\u03c4\u03c9","align_top":"\u03a0\u03ac\u03bd\u03c9",valign:"\u039a\u03b1\u03c4\u03b1\u03ba\u03cc\u03c1\u03c5\u03c6\u03b7 \u03c3\u03c4\u03bf\u03af\u03c7\u03b9\u03c3\u03b7","cell_type":"\u03a4\u03cd\u03c0\u03bf\u03c2 \u03ba\u03b5\u03bb\u03b9\u03bf\u03cd","cell_title":"\u0399\u03b4\u03b9\u03cc\u03c4\u03b7\u03c4\u03b5\u03c2 \u03ba\u03b5\u03bb\u03b9\u03bf\u03cd \u03c0\u03af\u03bd\u03b1\u03ba\u03b1","row_title":"\u0399\u03b4\u03b9\u03cc\u03c4\u03b7\u03c4\u03b5\u03c2 \u03b3\u03c1\u03b1\u03bc\u03bc\u03ae\u03c2 \u03c0\u03af\u03bd\u03b1\u03ba\u03b1","align_middle":"\u039a\u03ad\u03bd\u03c4\u03c1\u03bf","align_right":"\u0394\u03b5\u03be\u03b9\u03ac","align_left":"\u0391\u03c1\u03b9\u03c3\u03c4\u03b5\u03c1\u03ac","align_default":"\u03a0\u03c1\u03bf\u03b5\u03c0\u03b9\u03bb\u03b5\u03b3\u03bc\u03ad\u03bd\u03b7",align:"\u03a3\u03c4\u03bf\u03af\u03c7\u03b9\u03c3\u03b7",border:"\u03a0\u03bb\u03b1\u03af\u03c3\u03b9\u03bf",cellpadding:"\u0393\u03ad\u03bc\u03b9\u03c3\u03bc\u03b1 \u03ba\u03b5\u03bb\u03b9\u03ce\u03bd",cellspacing:"\u0391\u03c0\u03cc\u03c3\u03c4\u03b1\u03c3\u03b7 \u03ba\u03b5\u03bb\u03b9\u03ce\u03bd",rows:"\u0393\u03c1\u03b1\u03bc\u03bc\u03ad\u03c2",cols:"\u03a3\u03c4\u03ae\u03bb\u03b5\u03c2",height:"\u038e\u03c8\u03bf\u03c2",width:"\u03a0\u03bb\u03ac\u03c4\u03bf\u03c2",title:"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae/\u03b5\u03c0\u03b5\u03be\u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u03b1 \u03c0\u03af\u03bd\u03b1\u03ba\u03b1",rowtype:"\u0393\u03c1\u03b1\u03bc\u03bc\u03ae \u03c3\u03b5 \u03bc\u03ad\u03c1\u03bf\u03c2 \u03c0\u03af\u03bd\u03b1\u03ba\u03b1","advanced_props":"\u03a0\u03c1\u03bf\u03c7\u03c9\u03c1\u03b7\u03bc\u03ad\u03bd\u03b5\u03c2 \u03b9\u03b4\u03b9\u03cc\u03c4\u03b7\u03c4\u03b5\u03c2","general_props":"\u0393\u03b5\u03bd\u03b9\u03ba\u03ad\u03c2 \u03b9\u03b4\u03b9\u03cc\u03c4\u03b7\u03c4\u03b5\u03c2","advanced_tab":"\u0393\u03b9\u03b1 \u03c0\u03c1\u03bf\u03c7\u03c9\u03c1\u03b7\u03bc\u03ad\u03bd\u03bf\u03c5\u03c2","general_tab":"\u0393\u03b5\u03bd\u03b9\u03ba\u03ac","cell_col":"\u0391\u03bd\u03b1\u03bd\u03ad\u03c9\u03c3\u03b7 \u03cc\u03bb\u03c9\u03bd \u03c4\u03c9\u03bd \u03ba\u03b5\u03bb\u03b9\u03ce\u03bd \u03c3\u03c4\u03b7\u03bd \u03c3\u03c4\u03ae\u03bb\u03b7"});webcit-8.24-dfsg.orig/tiny_mce/plugins/table/langs/hu_dlg.js0000644000175000017500000000524112271477123023665 0ustar michaelmichaeltinyMCE.addI18n('hu.table_dlg',{"rules_border":"keret","rules_box":"doboz","rules_vsides":"f. oldalak","rules_rhs":"rhs","rules_lhs":"lhs","rules_hsides":"v. oldalak","rules_below":"alatta","rules_above":"f\u00f6l\u00f6tte","rules_void":"sehol",rules:"Vonalak","frame_all":"mind","frame_cols":"oszlopok","frame_rows":"sorok","frame_groups":"csoportok","frame_none":"nincs",frame:"Keret",caption:"C\u00edmsor","missing_scope":"Biztosan folytatni akarja an\u00e9lk\u00fcl, hogy hat\u00f3k\u00f6rt adna ennek a fejl\u00e9ccell\u00e1nak? Korl\u00e1toz\u00e1sokkal \u00e9l\u0151k sz\u00e1m\u00e1ra neh\u00e9z lesz meg\u00e9rteni a t\u00e1bl\u00e1zat tartalm\u00e1t.","cell_limit":"T\u00fall\u00e9pte a maxim\u00e1lis cellasz\u00e1mot, ami {$cells}.","row_limit":"T\u00fall\u00e9pte a maxim\u00e1lis sorsz\u00e1mot, ami {$rows}.","col_limit":"T\u00fall\u00e9pte a maxim\u00e1lis oszlopsz\u00e1mot, ami {$cols}.",colgroup:"Oszlop csoport",rowgroup:"Sor csoport",scope:"Hat\u00f3k\u00f6r",tfoot:"T\u00e1bl\u00e1zat l\u00e1bl\u00e9c",tbody:"T\u00e1bl\u00e1zat tartalom",thead:"T\u00e1bl\u00e1zat fejl\u00e9c","row_all":"Minden sor friss\u00edt\u00e9se","row_even":"P\u00e1ros sorok friss\u00edt\u00e9se","row_odd":"P\u00e1ratlan sorok friss\u00edt\u00e9se","row_row":"Sor friss\u00edt\u00e9se","cell_all":"T\u00e1bl\u00e1zat \u00f6sszes cell\u00e1j\u00e1nak friss\u00edt\u00e9se","cell_row":"Sor \u00f6sszes cell\u00e1j\u00e1nak friss\u00edt\u00e9se","cell_cell":"Cella friss\u00edt\u00e9se",th:"Fejl\u00e9c",td:"Adat",summary:"\u00d6sszegz\u00e9s",bgimage:"H\u00e1tt\u00e9rk\u00e9p",rtl:"Jobbr\u00f3l balra",ltr:"Balr\u00f3l jobbra",mime:"C\u00e9l MIME t\u00edpus",langcode:"Nyelvk\u00f3d",langdir:"\u00cdr\u00e1s ir\u00e1ny",style:"St\u00edlus",id:"Id","merge_cells_title":"Cell\u00e1k \u00f6sszevon\u00e1sa",bgcolor:"H\u00e1tt\u00e9rsz\u00edn",bordercolor:"Keretsz\u00edn","align_bottom":"Le","align_top":"Fel",valign:"F\u00fcgg\u0151leges igaz\u00edt\u00e1s","cell_type":"Cellat\u00edpus","cell_title":"Cella tulajdons\u00e1gai","row_title":"Sor tulajdons\u00e1gai","align_middle":"K\u00f6z\u00e9pre","align_right":"Jobbra","align_left":"Balra","align_default":"Alap\u00e9rtelmezett",align:"Igaz\u00edt\u00e1s",border:"Keret",cellpadding:"Cella bels\u0151 marg\u00f3",cellspacing:"Cella t\u00e1vols\u00e1g",rows:"Sorok",cols:"Oszlopok",height:"Magass\u00e1g",width:"Sz\u00e9less\u00e9g",title:"T\u00e1bl\u00e1zat besz\u00far\u00e1sa/szerkeszt\u00e9se",rowtype:"Sor a t\u00e1bl\u00e1ban","advanced_props":"Halad\u00f3 tulajdons\u00e1gok","general_props":"\u00c1ltal\u00e1nos tulajdons\u00e1gok","advanced_tab":"Halad\u00f3","general_tab":"\u00c1ltal\u00e1nos","cell_col":"\u00d6sszes cella friss\u00edt\u00e9se az oszlopban"});webcit-8.24-dfsg.orig/tiny_mce/plugins/table/langs/cs_dlg.js0000644000175000017500000000554312271477123023663 0ustar michaelmichaeltinyMCE.addI18n('cs.table_dlg',{"rules_border":"r\u00e1me\u010dek okolo","rules_box":"box okolo","rules_vsides":"vlevo a vpravo","rules_rhs":"vpravo","rules_lhs":"vlevo","rules_hsides":"naho\u0159e a dole","rules_below":"dole","rules_above":"naho\u0159e","rules_void":"\u017e\u00e1dn\u00fd",rules:"Vykreslen\u00ed m\u0159\u00ed\u017eky","frame_all":"v\u0161e","frame_cols":"sloupce","frame_rows":"\u0159\u00e1dky","frame_groups":"oblasti a skupiny sloupc\u016f","frame_none":"\u017e\u00e1dn\u00e1",frame:"R\u00e1me\u010dek tabulky",caption:"Nadpis tabulky","missing_scope":"Skute\u010dn\u011b chcete pokra\u010dovat bez ur\u010den\u00ed oblasti hlavi\u010dky t\u00e9to tabulky? Bez n\u00ed m\u016f\u017ee u n\u011bkter\u00fdch u\u017eivatel\u016f doch\u00e1zet k ur\u010dit\u00fdm probl\u00e9m\u016fm p\u0159i interpretaci a zobrazov\u00e1n\u00ed dat v tabulce.","cell_limit":"P\u0159ekro\u010dili jste maxim\u00e1ln\u00ed po\u010det bun\u011bk {$cells}.","row_limit":"P\u0159ekro\u010dili jste maxim\u00e1ln\u00ed po\u010det \u0159\u00e1dk\u016f {$rows}.","col_limit":"P\u0159ekro\u010dili jste maxim\u00e1ln\u00ed po\u010det sloupc\u016f {$cols}.",colgroup:"Skupina sloupc\u016f",rowgroup:"Skupina \u0159\u00e1dk\u016f",scope:"Hlavi\u010dka pro",tfoot:"Pata tabulky",tbody:"T\u011blo tabulky",thead:"Hlavi\u010dka tabulky","row_all":"Aktualizovat v\u0161echny \u0159\u00e1dky tabulky","row_even":"Aktualizovat sud\u00e9 \u0159\u00e1dky tabulky","row_odd":"Aktualizovat lich\u00e9 \u0159\u00e1dky tabulky","row_row":"Aktualizovat zvolen\u00fd \u0159\u00e1dek","cell_all":"Aktualizovat v\u0161echny bu\u0148ky v tabulce","cell_row":"Aktualizovat v\u0161echny bu\u0148ky v \u0159\u00e1dku","cell_cell":"Aktualizovat zvolenou bu\u0148ku",th:"Z\u00e1hlav\u00ed",td:"Data",summary:"Shrnut\u00ed obsahu",bgimage:"Obr\u00e1zek pozad\u00ed",rtl:"Zprava doleva",ltr:"Zleva doprava",mime:"MIME typ c\u00edle",langcode:"K\u00f3d jazyka",langdir:"Sm\u011br textu",style:"Styl",id:"ID","merge_cells_title":"Spojit bu\u0148ky",bgcolor:"Barva pozad\u00ed",bordercolor:"Barva r\u00e1me\u010dku","align_bottom":"Dol\u016f","align_top":"Nahoru",valign:"Vertik\u00e1ln\u00ed zarovn\u00e1n\u00ed","cell_type":"Typ bu\u0148ky","cell_title":"Vlastnosti bu\u0148ky","row_title":"Vlastnosti \u0159\u00e1dku","align_middle":"Na st\u0159ed","align_right":"Vpravo","align_left":"Vlevo","align_default":"V\u00fdchoz\u00ed",align:"Zarovn\u00e1n\u00ed",border:"R\u00e1me\u010dek",cellpadding:"Odsazen\u00ed obsahu",cellspacing:"Rozestup bun\u011bk",rows:"\u0158\u00e1dky",cols:"Sloupce",height:"V\u00fd\u0161ka",width:"\u0160\u00ed\u0159ka",title:"Vlo\u017eit/upravit tabulku",rowtype:"Typ \u0159\u00e1dku","advanced_props":"Roz\u0161\u00ed\u0159en\u00e9 parametry","general_props":"Obecn\u00e9 parametry","advanced_tab":"Roz\u0161\u00ed\u0159en\u00e9","general_tab":"Obecn\u00e9","cell_col":"Aktualizovat v\u0161echny bu\u0148ky ve sloupci"});webcit-8.24-dfsg.orig/tiny_mce/plugins/table/langs/en_dlg.js0000644000175000017500000000405412271477123023654 0ustar michaelmichaeltinyMCE.addI18n('en.table_dlg',{"rules_border":"border","rules_box":"box","rules_vsides":"vsides","rules_rhs":"rhs","rules_lhs":"lhs","rules_hsides":"hsides","rules_below":"below","rules_above":"above","rules_void":"void",rules:"Rules","frame_all":"all","frame_cols":"cols","frame_rows":"rows","frame_groups":"groups","frame_none":"none",frame:"Frame",caption:"Table Caption","missing_scope":"Are you sure you want to continue without specifying a scope for this table header cell. Without it, it may be difficult for some users with disabilities to understand the content or data displayed of the table.","cell_limit":"You\'ve exceeded the maximum number of cells of {$cells}.","row_limit":"You\'ve exceeded the maximum number of rows of {$rows}.","col_limit":"You\'ve exceeded the maximum number of columns of {$cols}.",colgroup:"Col Group",rowgroup:"Row Group",scope:"Scope",tfoot:"Footer",tbody:"Body",thead:"Header","row_all":"Update All Rows in Table","row_even":"Update Even Rows in Table","row_odd":"Update Odd Rows in Table","row_row":"Update Current Row","cell_all":"Update All Cells in Table","cell_row":"Update All Cells in Row","cell_cell":"Update Current Cell",th:"Header",td:"Data",summary:"Summary",bgimage:"Background Image",rtl:"Right to Left",ltr:"Left to Right",mime:"Target MIME Type",langcode:"Language Code",langdir:"Language Direction",style:"Style",id:"ID","merge_cells_title":"Merge Table Cells",bgcolor:"Background Color",bordercolor:"Border Color","align_bottom":"Bottom","align_top":"Top",valign:"Vertical Alignment","cell_type":"Cell Type","cell_title":"Table Cell Properties","row_title":"Table Row Properties","align_middle":"Center","align_right":"Right","align_left":"Left","align_default":"Default",align:"Alignment",border:"Border",cellpadding:"Cell Padding",cellspacing:"Cell Spacing",rows:"Rows",cols:"Columns",height:"Height",width:"Width",title:"Insert/Edit Table",rowtype:"Row Type","advanced_props":"Advanced Properties","general_props":"General Properties","advanced_tab":"Advanced","general_tab":"General","cell_col":"Update all cells in column"});webcit-8.24-dfsg.orig/tiny_mce/plugins/table/langs/it_dlg.js0000644000175000017500000000437512271477123023674 0ustar michaelmichaeltinyMCE.addI18n('it.table_dlg',{"rules_border":"bordo","rules_box":"box","rules_vsides":"lato vert.","rules_rhs":"rhs","rules_lhs":"lhs","rules_hsides":"lato orizz.","rules_below":"sotto","rules_above":"sopra","rules_void":"vuoto",rules:"Regole","frame_all":"tutte","frame_cols":"colonne","frame_rows":"righe","frame_groups":"gruppi","frame_none":"nessuna",frame:"Cornice",caption:"Didascalia tabella","missing_scope":"Sicuro di proseguire senza aver specificato uno scope per l\'intestazione di questa tabella? Senza di esso, potrebbe essere difficoltoso per alcuni utenti con disabilit\u00e0 capire il contenuto o i dati mostrati nella tabella.","cell_limit":"Superato il numero massimo di celle di {$cells}.","row_limit":"Superato il numero massimo di righe di {$rows}.","col_limit":"Superato il numero massimo di colonne di {$cols}.",colgroup:"Gruppo colonna",rowgroup:"Gruppo riga",scope:"Scope",tfoot:"Pedice tabella",tbody:"Corpo tabella",thead:"Intestazione tabella","row_all":"Update tutte le righe della tabella","row_even":"Aggiorna righe pari della tabella","row_odd":"Aggiorna righe dispari della tabella","row_row":"Aggiorna riga corrente","cell_all":"Aggiorna tutte le celle della tabella","cell_row":"Aggiorna tutte le celle della riga","cell_cell":"Aggiorna cella corrente",th:"Intestazione",td:"Data",summary:"Sommario",bgimage:"Immagine sfondo",rtl:"Destra verso sinistra",ltr:"Sinistra verso destra",mime:"Tipo MIME del target",langcode:"Lingua",langdir:"Direzione testo",style:"Stile",id:"Id","merge_cells_title":"Unisci celle",bgcolor:"Colore sfondo",bordercolor:"Colore bordo","align_bottom":"In basso","align_top":"In alto",valign:"Allineamento verticale","cell_type":"Tipo cella","cell_title":"Propriet\u00e0 cella","row_title":"Propriet\u00e0 riga","align_middle":"Centra","align_right":"A destra","align_left":"A sinistra","align_default":"Predefinito",align:"Allineamento",border:"Bordo",cellpadding:"Padding celle",cellspacing:"Spaziatura celle",rows:"Righe",cols:"Colonne",height:"Altezza",width:"Larghezza",title:"Inserisci/Modifica tabella",rowtype:"Riga in una parte di tabella","advanced_props":"Propriet\u00e0 avanzate","general_props":"Propriet\u00e0 generali","advanced_tab":"Avanzate","general_tab":"Generale","cell_col":"Aggiorna tutte le celle della colonna"});webcit-8.24-dfsg.orig/tiny_mce/plugins/table/editor_plugin.js0000644000175000017500000003775412271477123024201 0ustar michaelmichael(function(d){var e=d.each;function c(g,h){var j=h.ownerDocument,f=j.createRange(),k;f.setStartBefore(h);f.setEnd(g.endContainer,g.endOffset);k=j.createElement("body");k.appendChild(f.cloneContents());return k.innerHTML.replace(/<(br|img|object|embed|input|textarea)[^>]*>/gi,"-").replace(/<[^>]+>/g,"").length==0}function a(g,f){return parseInt(g.getAttribute(f)||1)}function b(H,G,K){var g,L,D,o;t();o=G.getParent(K.getStart(),"th,td");if(o){L=F(o);D=I();o=z(L.x,L.y)}function A(N,M){N=N.cloneNode(M);N.removeAttribute("id");return N}function t(){var M=0;g=[];e(["thead","tbody","tfoot"],function(N){var O=G.select("> "+N+" tr",H);e(O,function(P,Q){Q+=M;e(G.select("> td, > th",P),function(W,R){var S,T,U,V;if(g[Q]){while(g[Q][R]){R++}}U=a(W,"rowspan");V=a(W,"colspan");for(T=Q;T'}return false}},"childNodes");M=A(M,false);s(M,"rowSpan",1);s(M,"colSpan",1);if(N){M.appendChild(N)}else{if(!d.isIE){M.innerHTML='
    '}}return M}function q(){var M=G.createRng();e(G.select("tr",H),function(N){if(N.cells.length==0){G.remove(N)}});if(G.select("tr",H).length==0){M.setStartAfter(H);M.setEndAfter(H);K.setRng(M);G.remove(H);return}e(G.select("thead,tbody,tfoot",H),function(N){if(N.rows.length==0){G.remove(N)}});t();row=g[Math.min(g.length-1,L.y)];if(row){K.select(row[Math.min(row.length-1,L.x)].elm,true);K.collapse(true)}}function u(S,Q,U,R){var P,N,M,O,T;P=g[Q][S].elm.parentNode;for(M=1;M<=U;M++){P=G.getNext(P,"tr");if(P){for(N=S;N>=0;N--){T=g[Q+M][N].elm;if(T.parentNode==P){for(O=1;O<=R;O++){G.insertAfter(f(T),T)}break}}if(N==-1){for(O=1;O<=R;O++){P.insertBefore(f(P.cells[0]),P.cells[0])}}}}}function C(){e(g,function(M,N){e(M,function(P,O){var S,R,T,Q;if(j(P)){P=P.elm;S=a(P,"colspan");R=a(P,"rowspan");if(S>1||R>1){s(P,"rowSpan",1);s(P,"colSpan",1);for(Q=0;Q1){s(S,"rowSpan",O+1);continue}}else{if(M>0&&g[M-1][R]){V=g[M-1][R].elm;O=a(V,"rowSpan");if(O>1){s(V,"rowSpan",O+1);continue}}}N=f(S);s(N,"colSpan",S.colSpan);U.appendChild(N);P=S}}if(U.hasChildNodes()){if(!Q){G.insertAfter(U,T)}else{T.parentNode.insertBefore(U,T)}}}function h(N){var O,M;e(g,function(P,Q){e(P,function(S,R){if(j(S)){O=R;if(N){return false}}});if(N){return !O}});e(g,function(S,T){var P,Q,R;if(!S[O]){return}P=S[O].elm;if(P!=M){R=a(P,"colspan");Q=a(P,"rowspan");if(R==1){if(!N){G.insertAfter(f(P),P);u(O,T,Q-1,R)}else{P.parentNode.insertBefore(f(P),P);u(O,T,Q-1,R)}}else{s(P,"colSpan",P.colSpan+1)}M=P}})}function n(){var M=[];e(g,function(N,O){e(N,function(Q,P){if(j(Q)&&d.inArray(M,P)===-1){e(g,function(T){var R=T[P].elm,S;S=a(R,"colSpan");if(S>1){s(R,"colSpan",S-1)}else{G.remove(R)}});M.push(P)}})});q()}function m(){var N;function M(Q){var P,R,O;P=G.getNext(Q,"tr");e(Q.cells,function(S){var T=a(S,"rowSpan");if(T>1){s(S,"rowSpan",T-1);R=F(S);u(R.x,R.y,1,1)}});R=F(Q.cells[0]);e(g[R.y],function(S){var T;S=S.elm;if(S!=O){T=a(S,"rowSpan");if(T<=1){G.remove(S)}else{s(S,"rowSpan",T-1)}O=S}})}N=k();e(N.reverse(),function(O){M(O)});q()}function E(){var M=k();G.remove(M);q();return M}function J(){var M=k();e(M,function(O,N){M[N]=A(O,true)});return M}function B(O,N){var P=k(),M=P[N?0:P.length-1],Q=M.cells.length;e(g,function(S){var R;Q=0;e(S,function(U,T){if(U.real){Q+=U.colspan}if(U.elm.parentNode==M){R=1}});if(R){return false}});if(!N){O.reverse()}e(O,function(T){var S=T.cells.length,R;for(i=0;iN){N=R}if(Q>M){M=Q}if(S.real){U=S.colspan-1;T=S.rowspan-1;if(U){if(R+U>N){N=R+U}}if(T){if(Q+T>M){M=Q+T}}}}})});return{x:N,y:M}}function v(S){var P,O,U,T,N,M,Q,R;D=F(S);if(L&&D){P=Math.min(L.x,D.x);O=Math.min(L.y,D.y);U=Math.max(L.x,D.x);T=Math.max(L.y,D.y);N=U;M=T;for(y=O;y<=M;y++){S=g[y][P];if(!S.real){if(P-(S.colspan-1)N){N=x+Q}}if(R){if(y+R>M){M=y+R}}}}}G.removeClass(G.select("td.mceSelected,th.mceSelected"),"mceSelected");for(y=O;y<=M;y++){for(x=P;x<=N;x++){if(g[y][x]){G.addClass(g[y][x].elm,"mceSelected")}}}}}d.extend(this,{deleteTable:r,split:C,merge:p,insertRow:l,insertCol:h,deleteCols:n,deleteRows:m,cutRows:E,copyRows:J,pasteRows:B,getPos:F,setStartCell:w,setEndCell:v})}d.create("tinymce.plugins.TablePlugin",{init:function(g,h){var f,m,j=true;function l(p){var o=g.selection,n=g.dom.getParent(p||o.getNode(),"table");if(n){return new b(n,g.dom,o)}}function k(){g.getBody().style.webkitUserSelect="";if(j){g.dom.removeClass(g.dom.select("td.mceSelected,th.mceSelected"),"mceSelected");j=false}}e([["table","table.desc","mceInsertTable",true],["delete_table","table.del","mceTableDelete"],["delete_col","table.delete_col_desc","mceTableDeleteCol"],["delete_row","table.delete_row_desc","mceTableDeleteRow"],["col_after","table.col_after_desc","mceTableInsertColAfter"],["col_before","table.col_before_desc","mceTableInsertColBefore"],["row_after","table.row_after_desc","mceTableInsertRowAfter"],["row_before","table.row_before_desc","mceTableInsertRowBefore"],["row_props","table.row_desc","mceTableRowProps",true],["cell_props","table.cell_desc","mceTableCellProps",true],["split_cells","table.split_cells_desc","mceTableSplitCells",true],["merge_cells","table.merge_cells_desc","mceTableMergeCells",true]],function(n){g.addButton(n[0],{title:n[1],cmd:n[2],ui:n[3]})});if(!d.isIE){g.onClick.add(function(n,o){o=o.target;if(o.nodeName==="TABLE"){n.selection.select(o);n.nodeChanged()}})}g.onPreProcess.add(function(o,p){var n,q,r,t=o.dom,s;n=t.select("table",p.node);q=n.length;while(q--){r=n[q];t.setAttrib(r,"data-mce-style","");if((s=t.getAttrib(r,"width"))){t.setStyle(r,"width",s);t.setAttrib(r,"width","")}if((s=t.getAttrib(r,"height"))){t.setStyle(r,"height",s);t.setAttrib(r,"height","")}}});g.onNodeChange.add(function(q,o,s){var r;s=q.selection.getStart();r=q.dom.getParent(s,"td,th,caption");o.setActive("table",s.nodeName==="TABLE"||!!r);if(r&&r.nodeName==="CAPTION"){r=0}o.setDisabled("delete_table",!r);o.setDisabled("delete_col",!r);o.setDisabled("delete_table",!r);o.setDisabled("delete_row",!r);o.setDisabled("col_after",!r);o.setDisabled("col_before",!r);o.setDisabled("row_after",!r);o.setDisabled("row_before",!r);o.setDisabled("row_props",!r);o.setDisabled("cell_props",!r);o.setDisabled("split_cells",!r);o.setDisabled("merge_cells",!r)});g.onInit.add(function(r){var p,t,q=r.dom,u;f=r.windowManager;r.onMouseDown.add(function(w,z){if(z.button!=2){k();t=q.getParent(z.target,"td,th");p=q.getParent(t,"table")}});q.bind(r.getDoc(),"mouseover",function(C){var A,z,B=C.target;if(t&&(u||B!=t)&&(B.nodeName=="TD"||B.nodeName=="TH")){z=q.getParent(B,"table");if(z==p){if(!u){u=l(z);u.setStartCell(t);r.getBody().style.webkitUserSelect="none"}u.setEndCell(B);j=true}A=r.selection.getSel();try{if(A.removeAllRanges){A.removeAllRanges()}else{A.empty()}}catch(w){}C.preventDefault()}});r.onMouseUp.add(function(F,G){var z,B=F.selection,H,I=B.getSel(),w,C,A,E;if(t){if(u){F.getBody().style.webkitUserSelect=""}function D(J,L){var K=new d.dom.TreeWalker(J,J);do{if(J.nodeType==3&&d.trim(J.nodeValue).length!=0){if(L){z.setStart(J,0)}else{z.setEnd(J,J.nodeValue.length)}return}if(J.nodeName=="BR"){if(L){z.setStartBefore(J)}else{z.setEndBefore(J)}return}}while(J=(L?K.next():K.prev()))}H=q.select("td.mceSelected,th.mceSelected");if(H.length>0){z=q.createRng();C=H[0];E=H[H.length-1];z.setStartBefore(C);z.setEndAfter(C);D(C,1);w=new d.dom.TreeWalker(C,q.getParent(H[0],"table"));do{if(C.nodeName=="TD"||C.nodeName=="TH"){if(!q.hasClass(C,"mceSelected")){break}A=C}}while(C=w.next());D(A);B.setRng(z)}F.nodeChanged();t=u=p=null}});r.onKeyUp.add(function(w,z){k()});r.onKeyDown.add(function(w,z){n(w)});r.onMouseDown.add(function(w,z){if(z.button!=2){n(w)}});function o(D,z,A,F){var B=3,G=D.dom.getParent(z.startContainer,"TABLE"),C,w,E;if(G){C=G.parentNode}w=z.startContainer.nodeType==B&&z.startOffset==0&&z.endOffset==0&&F&&(A.nodeName=="TR"||A==C);E=(A.nodeName=="TD"||A.nodeName=="TH")&&!F;return w||E}function n(A){if(!d.isWebKit){return}var z=A.selection.getRng();var C=A.selection.getNode();var B=A.dom.getParent(z.startContainer,"TD");if(!o(A,z,C,B)){return}if(!B){B=C}var w=B.lastChild;while(w.lastChild){w=w.lastChild}z.setEnd(w,w.nodeValue.length);A.selection.setRng(z)}r.plugins.table.fixTableCellSelection=n;if(r&&r.plugins.contextmenu){r.plugins.contextmenu.onContextMenu.add(function(A,w,C){var D,B=r.selection,z=B.getNode()||r.getBody();if(r.dom.getParent(C,"td")||r.dom.getParent(C,"th")||r.dom.select("td.mceSelected,th.mceSelected").length){w.removeAll();if(z.nodeName=="A"&&!r.dom.getAttrib(z,"name")){w.add({title:"advanced.link_desc",icon:"link",cmd:r.plugins.advlink?"mceAdvLink":"mceLink",ui:true});w.add({title:"advanced.unlink_desc",icon:"unlink",cmd:"UnLink"});w.addSeparator()}if(z.nodeName=="IMG"&&z.className.indexOf("mceItem")==-1){w.add({title:"advanced.image_desc",icon:"image",cmd:r.plugins.advimage?"mceAdvImage":"mceImage",ui:true});w.addSeparator()}w.add({title:"table.desc",icon:"table",cmd:"mceInsertTable",value:{action:"insert"}});w.add({title:"table.props_desc",icon:"table_props",cmd:"mceInsertTable"});w.add({title:"table.del",icon:"delete_table",cmd:"mceTableDelete"});w.addSeparator();D=w.addMenu({title:"table.cell"});D.add({title:"table.cell_desc",icon:"cell_props",cmd:"mceTableCellProps"});D.add({title:"table.split_cells_desc",icon:"split_cells",cmd:"mceTableSplitCells"});D.add({title:"table.merge_cells_desc",icon:"merge_cells",cmd:"mceTableMergeCells"});D=w.addMenu({title:"table.row"});D.add({title:"table.row_desc",icon:"row_props",cmd:"mceTableRowProps"});D.add({title:"table.row_before_desc",icon:"row_before",cmd:"mceTableInsertRowBefore"});D.add({title:"table.row_after_desc",icon:"row_after",cmd:"mceTableInsertRowAfter"});D.add({title:"table.delete_row_desc",icon:"delete_row",cmd:"mceTableDeleteRow"});D.addSeparator();D.add({title:"table.cut_row_desc",icon:"cut",cmd:"mceTableCutRow"});D.add({title:"table.copy_row_desc",icon:"copy",cmd:"mceTableCopyRow"});D.add({title:"table.paste_row_before_desc",icon:"paste",cmd:"mceTablePasteRowBefore"}).setDisabled(!m);D.add({title:"table.paste_row_after_desc",icon:"paste",cmd:"mceTablePasteRowAfter"}).setDisabled(!m);D=w.addMenu({title:"table.col"});D.add({title:"table.col_before_desc",icon:"col_before",cmd:"mceTableInsertColBefore"});D.add({title:"table.col_after_desc",icon:"col_after",cmd:"mceTableInsertColAfter"});D.add({title:"table.delete_col_desc",icon:"delete_col",cmd:"mceTableDeleteCol"})}else{w.add({title:"table.desc",icon:"table",cmd:"mceInsertTable"})}})}if(d.isWebKit){function v(B,M){function F(Q){B.selection.setCursorLocation(Q,0)}function H(R,Q){return R.keyCode==z?Q.previousSibling:Q.nextSibling}function G(R,S){var Q=H(R,S);return Q!==null&&Q.tagName==="TR"?Q:null}function C(Q,R){return Q.dom.getParent(R,"table")}function O(Q){var R=C(B,Q);return H(M,R)}function A(Q){return Q.keyCode==z||Q.keyCode==I}function D(Q){var S=Q.selection.getNode();var R=Q.dom.getParent(S,"tr");return R!==null}function N(R){var Q=0;var S=R;while(S.previousSibling){S=S.previousSibling;Q=Q+a(S,"colspan")}return Q}function E(S,Q){var T=0;var R=0;e(S.children,function(U,V){T=T+a(U,"colspan");R=V;if(T>Q){return false}});return R}function w(S,T,V){var U=N(S.dom.getParent(T,"td,th"));var R=E(V,U);var Q=V.childNodes[R];F(Q)}function L(R,T){var Q=O(R);if(Q!==null){F(Q);return d.dom.Event.cancel(T)}else{var S=T.keyCode==z?R.firstChild:R.lastChild;F(S);return true}}var z=38;var I=40;if(A(M)&&D(B)){var J=B.selection.getNode();var P=B.dom.getParent(J,"tr");var K=G(M,P);if(K==null){return L(P,M)}else{w(B,J,K);d.dom.Event.cancel(M);return true}}}r.onKeyDown.add(v)}if(!d.isIE){function s(){var w;for(w=r.getBody().lastChild;w&&w.nodeType==3&&!w.nodeValue.length;w=w.previousSibling){}if(w&&w.nodeName=="TABLE"){r.dom.add(r.getBody(),"p",null,'
    ')}}if(d.isGecko){r.onKeyDown.add(function(z,B){var w,A,C=z.dom;if(B.keyCode==37||B.keyCode==38){w=z.selection.getRng();A=C.getParent(w.startContainer,"table");if(A&&z.getBody().firstChild==A){if(c(w,A)){w=C.createRng();w.setStartBefore(A);w.setEndBefore(A);z.selection.setRng(w);B.preventDefault()}}}})}r.onKeyUp.add(s);r.onSetContent.add(s);r.onVisualAid.add(s);r.onPreProcess.add(function(w,A){var z=A.node.lastChild;if(z&&z.childNodes.length==1&&z.firstChild.nodeName=="BR"){w.dom.remove(z)}});s();r.startContent=r.getContent({format:"raw"})}});e({mceTableSplitCells:function(n){n.split()},mceTableMergeCells:function(o){var p,q,n;n=g.dom.getParent(g.selection.getNode(),"th,td");if(n){p=n.rowSpan;q=n.colSpan}if(!g.dom.select("td.mceSelected,th.mceSelected").length){f.open({url:h+"/merge_cells.htm",width:240+parseInt(g.getLang("table.merge_cells_delta_width",0)),height:110+parseInt(g.getLang("table.merge_cells_delta_height",0)),inline:1},{rows:p,cols:q,onaction:function(r){o.merge(n,r.cols,r.rows)},plugin_url:h})}else{o.merge()}},mceTableInsertRowBefore:function(n){n.insertRow(true)},mceTableInsertRowAfter:function(n){n.insertRow()},mceTableInsertColBefore:function(n){n.insertCol(true)},mceTableInsertColAfter:function(n){n.insertCol()},mceTableDeleteCol:function(n){n.deleteCols()},mceTableDeleteRow:function(n){n.deleteRows()},mceTableCutRow:function(n){m=n.cutRows()},mceTableCopyRow:function(n){m=n.copyRows()},mceTablePasteRowBefore:function(n){n.pasteRows(m,true)},mceTablePasteRowAfter:function(n){n.pasteRows(m)},mceTableDelete:function(n){n.deleteTable()}},function(o,n){g.addCommand(n,function(){var p=l();if(p){o(p);g.execCommand("mceRepaint");k()}})});e({mceInsertTable:function(n){f.open({url:h+"/table.htm",width:400+parseInt(g.getLang("table.table_delta_width",0)),height:320+parseInt(g.getLang("table.table_delta_height",0)),inline:1},{plugin_url:h,action:n?n.action:0})},mceTableRowProps:function(){f.open({url:h+"/row.htm",width:400+parseInt(g.getLang("table.rowprops_delta_width",0)),height:295+parseInt(g.getLang("table.rowprops_delta_height",0)),inline:1},{plugin_url:h})},mceTableCellProps:function(){f.open({url:h+"/cell.htm",width:400+parseInt(g.getLang("table.cellprops_delta_width",0)),height:295+parseInt(g.getLang("table.cellprops_delta_height",0)),inline:1},{plugin_url:h})}},function(o,n){g.addCommand(n,function(p,q){o(q)})})}});d.PluginManager.add("table",d.plugins.TablePlugin)})(tinymce);webcit-8.24-dfsg.orig/tiny_mce/plugins/table/cell.htm0000644000175000017500000001617412271477123022421 0ustar michaelmichael {#table_dlg.cell_title}
    {#table_dlg.general_props}
    {#table_dlg.advanced_props}
     
     
     
    webcit-8.24-dfsg.orig/tiny_mce/plugins/table/row.htm0000644000175000017500000001415012271477123022301 0ustar michaelmichael {#table_dlg.row_title}
    {#table_dlg.general_props}
    {#table_dlg.advanced_props}
     
     
    webcit-8.24-dfsg.orig/tiny_mce/plugins/table/js/0000755000175000017500000000000012271477123021373 5ustar michaelmichaelwebcit-8.24-dfsg.orig/tiny_mce/plugins/table/js/merge_cells.js0000644000175000017500000000106612271477123024215 0ustar michaelmichaeltinyMCEPopup.requireLangPack(); var MergeCellsDialog = { init : function() { var f = document.forms[0]; f.numcols.value = tinyMCEPopup.getWindowArg('cols', 1); f.numrows.value = tinyMCEPopup.getWindowArg('rows', 1); }, merge : function() { var func, f = document.forms[0]; tinyMCEPopup.restoreSelection(); func = tinyMCEPopup.getWindowArg('onaction'); func({ cols : f.numcols.value, rows : f.numrows.value }); tinyMCEPopup.close(); } }; tinyMCEPopup.onInit.add(MergeCellsDialog.init, MergeCellsDialog); webcit-8.24-dfsg.orig/tiny_mce/plugins/table/js/cell.js0000644000175000017500000002226412271477123022656 0ustar michaelmichaeltinyMCEPopup.requireLangPack(); var ed; function init() { ed = tinyMCEPopup.editor; tinyMCEPopup.resizeToInnerSize(); document.getElementById('backgroundimagebrowsercontainer').innerHTML = getBrowserHTML('backgroundimagebrowser','backgroundimage','image','table'); document.getElementById('bordercolor_pickcontainer').innerHTML = getColorPickerHTML('bordercolor_pick','bordercolor'); document.getElementById('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor') var inst = ed; var tdElm = ed.dom.getParent(ed.selection.getStart(), "td,th"); var formObj = document.forms[0]; var st = ed.dom.parseStyle(ed.dom.getAttrib(tdElm, "style")); // Get table cell data var celltype = tdElm.nodeName.toLowerCase(); var align = ed.dom.getAttrib(tdElm, 'align'); var valign = ed.dom.getAttrib(tdElm, 'valign'); var width = trimSize(getStyle(tdElm, 'width', 'width')); var height = trimSize(getStyle(tdElm, 'height', 'height')); var bordercolor = convertRGBToHex(getStyle(tdElm, 'bordercolor', 'borderLeftColor')); var bgcolor = convertRGBToHex(getStyle(tdElm, 'bgcolor', 'backgroundColor')); var className = ed.dom.getAttrib(tdElm, 'class'); var backgroundimage = getStyle(tdElm, 'background', 'backgroundImage').replace(new RegExp("url\\(['\"]?([^'\"]*)['\"]?\\)", 'gi'), "$1"); var id = ed.dom.getAttrib(tdElm, 'id'); var lang = ed.dom.getAttrib(tdElm, 'lang'); var dir = ed.dom.getAttrib(tdElm, 'dir'); var scope = ed.dom.getAttrib(tdElm, 'scope'); // Setup form addClassesToList('class', 'table_cell_styles'); TinyMCE_EditableSelects.init(); if (!ed.dom.hasClass(tdElm, 'mceSelected')) { formObj.bordercolor.value = bordercolor; formObj.bgcolor.value = bgcolor; formObj.backgroundimage.value = backgroundimage; formObj.width.value = width; formObj.height.value = height; formObj.id.value = id; formObj.lang.value = lang; formObj.style.value = ed.dom.serializeStyle(st); selectByValue(formObj, 'align', align); selectByValue(formObj, 'valign', valign); selectByValue(formObj, 'class', className, true, true); selectByValue(formObj, 'celltype', celltype); selectByValue(formObj, 'dir', dir); selectByValue(formObj, 'scope', scope); // Resize some elements if (isVisible('backgroundimagebrowser')) document.getElementById('backgroundimage').style.width = '180px'; updateColor('bordercolor_pick', 'bordercolor'); updateColor('bgcolor_pick', 'bgcolor'); } else tinyMCEPopup.dom.hide('action'); } function updateAction() { var el, inst = ed, tdElm, trElm, tableElm, formObj = document.forms[0]; if (!AutoValidator.validate(formObj)) { tinyMCEPopup.alert(AutoValidator.getErrorMessages(formObj).join('. ') + '.'); return false; } tinyMCEPopup.restoreSelection(); el = ed.selection.getStart(); tdElm = ed.dom.getParent(el, "td,th"); trElm = ed.dom.getParent(el, "tr"); tableElm = ed.dom.getParent(el, "table"); // Cell is selected if (ed.dom.hasClass(tdElm, 'mceSelected')) { // Update all selected sells tinymce.each(ed.dom.select('td.mceSelected,th.mceSelected'), function(td) { updateCell(td); }); ed.addVisual(); ed.nodeChanged(); inst.execCommand('mceEndUndoLevel'); tinyMCEPopup.close(); return; } switch (getSelectValue(formObj, 'action')) { case "cell": var celltype = getSelectValue(formObj, 'celltype'); var scope = getSelectValue(formObj, 'scope'); function doUpdate(s) { if (s) { updateCell(tdElm); ed.addVisual(); ed.nodeChanged(); inst.execCommand('mceEndUndoLevel'); tinyMCEPopup.close(); } }; if (ed.getParam("accessibility_warnings", 1)) { if (celltype == "th" && scope == "") tinyMCEPopup.confirm(ed.getLang('table_dlg.missing_scope', '', true), doUpdate); else doUpdate(1); return; } updateCell(tdElm); break; case "row": var cell = trElm.firstChild; if (cell.nodeName != "TD" && cell.nodeName != "TH") cell = nextCell(cell); do { cell = updateCell(cell, true); } while ((cell = nextCell(cell)) != null); break; case "col": var curr, col = 0, cell = trElm.firstChild, rows = tableElm.getElementsByTagName("tr"); if (cell.nodeName != "TD" && cell.nodeName != "TH") cell = nextCell(cell); do { if (cell == tdElm) break; col += cell.getAttribute("colspan"); } while ((cell = nextCell(cell)) != null); for (var i=0; i 0) { tinymce.each(tableElm.rows, function(tr) { var i; for (i = 0; i < tr.cells.length; i++) { if (dom.hasClass(tr.cells[i], 'mceSelected')) { updateRow(tr, true); return; } } }); inst.addVisual(); inst.nodeChanged(); inst.execCommand('mceEndUndoLevel'); tinyMCEPopup.close(); return; } switch (action) { case "row": updateRow(trElm); break; case "all": var rows = tableElm.getElementsByTagName("tr"); for (var i=0; i colLimit) { tinyMCEPopup.alert(inst.getLang('table_dlg.col_limit').replace(/\{\$cols\}/g, colLimit)); return false; } else if (rowLimit && rows > rowLimit) { tinyMCEPopup.alert(inst.getLang('table_dlg.row_limit').replace(/\{\$rows\}/g, rowLimit)); return false; } else if (cellLimit && cols * rows > cellLimit) { tinyMCEPopup.alert(inst.getLang('table_dlg.cell_limit').replace(/\{\$cells\}/g, cellLimit)); return false; } // Update table if (action == "update") { dom.setAttrib(elm, 'cellPadding', cellpadding, true); dom.setAttrib(elm, 'cellSpacing', cellspacing, true); dom.setAttrib(elm, 'border', border); dom.setAttrib(elm, 'align', align); dom.setAttrib(elm, 'frame', frame); dom.setAttrib(elm, 'rules', rules); dom.setAttrib(elm, 'class', className); dom.setAttrib(elm, 'style', style); dom.setAttrib(elm, 'id', id); dom.setAttrib(elm, 'summary', summary); dom.setAttrib(elm, 'dir', dir); dom.setAttrib(elm, 'lang', lang); capEl = inst.dom.select('caption', elm)[0]; if (capEl && !caption) capEl.parentNode.removeChild(capEl); if (!capEl && caption) { capEl = elm.ownerDocument.createElement('caption'); if (!tinymce.isIE) capEl.innerHTML = '
    '; elm.insertBefore(capEl, elm.firstChild); } if (width && inst.settings.inline_styles) { dom.setStyle(elm, 'width', width); dom.setAttrib(elm, 'width', ''); } else { dom.setAttrib(elm, 'width', width, true); dom.setStyle(elm, 'width', ''); } // Remove these since they are not valid XHTML dom.setAttrib(elm, 'borderColor', ''); dom.setAttrib(elm, 'bgColor', ''); dom.setAttrib(elm, 'background', ''); if (height && inst.settings.inline_styles) { dom.setStyle(elm, 'height', height); dom.setAttrib(elm, 'height', ''); } else { dom.setAttrib(elm, 'height', height, true); dom.setStyle(elm, 'height', ''); } if (background != '') elm.style.backgroundImage = "url('" + background + "')"; else elm.style.backgroundImage = ''; /* if (tinyMCEPopup.getParam("inline_styles")) { if (width != '') elm.style.width = getCSSSize(width); }*/ if (bordercolor != "") { elm.style.borderColor = bordercolor; elm.style.borderStyle = elm.style.borderStyle == "" ? "solid" : elm.style.borderStyle; elm.style.borderWidth = border == "" ? "1px" : border; } else elm.style.borderColor = ''; elm.style.backgroundColor = bgcolor; elm.style.height = getCSSSize(height); inst.addVisual(); // Fix for stange MSIE align bug //elm.outerHTML = elm.outerHTML; inst.nodeChanged(); inst.execCommand('mceEndUndoLevel'); // Repaint if dimensions changed if (formObj.width.value != orgTableWidth || formObj.height.value != orgTableHeight) inst.execCommand('mceRepaint'); tinyMCEPopup.close(); return true; } // Create new table html += ''); tinymce.each('h1,h2,h3,h4,h5,h6,p'.split(','), function(n) { if (patt) patt += ','; patt += n + ' ._mce_marker'; }); tinymce.each(inst.dom.select(patt), function(n) { inst.dom.split(inst.dom.getParent(n, 'h1,h2,h3,h4,h5,h6,p'), n); }); dom.setOuterHTML(dom.select('br._mce_marker')[0], html); } else inst.execCommand('mceInsertContent', false, html); tinymce.each(dom.select('table[data-mce-new]'), function(node) { var td = dom.select('td', node); try { // IE9 might fail to do this selection inst.selection.select(td[0], true); inst.selection.collapse(); } catch (ex) { // Ignore } dom.setAttrib(node, 'data-mce-new', ''); }); inst.addVisual(); inst.execCommand('mceEndUndoLevel'); tinyMCEPopup.close(); } function makeAttrib(attrib, value) { var formObj = document.forms[0]; var valueElm = formObj.elements[attrib]; if (typeof(value) == "undefined" || value == null) { value = ""; if (valueElm) value = valueElm.value; } if (value == "") return ""; // XML encode it value = value.replace(/&/g, '&'); value = value.replace(/\"/g, '"'); value = value.replace(//g, '>'); return ' ' + attrib + '="' + value + '"'; } function init() { tinyMCEPopup.resizeToInnerSize(); document.getElementById('backgroundimagebrowsercontainer').innerHTML = getBrowserHTML('backgroundimagebrowser','backgroundimage','image','table'); document.getElementById('backgroundimagebrowsercontainer').innerHTML = getBrowserHTML('backgroundimagebrowser','backgroundimage','image','table'); document.getElementById('bordercolor_pickcontainer').innerHTML = getColorPickerHTML('bordercolor_pick','bordercolor'); document.getElementById('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor'); var cols = 2, rows = 2, border = tinyMCEPopup.getParam('table_default_border', '0'), cellpadding = tinyMCEPopup.getParam('table_default_cellpadding', ''), cellspacing = tinyMCEPopup.getParam('table_default_cellspacing', ''); var align = "", width = "", height = "", bordercolor = "", bgcolor = "", className = ""; var id = "", summary = "", style = "", dir = "", lang = "", background = "", bgcolor = "", bordercolor = "", rules = "", frame = ""; var inst = tinyMCEPopup.editor, dom = inst.dom; var formObj = document.forms[0]; var elm = dom.getParent(inst.selection.getNode(), "table"); action = tinyMCEPopup.getWindowArg('action'); if (!action) action = elm ? "update" : "insert"; if (elm && action != "insert") { var rowsAr = elm.rows; var cols = 0; for (var i=0; i cols) cols = rowsAr[i].cells.length; cols = cols; rows = rowsAr.length; st = dom.parseStyle(dom.getAttrib(elm, "style")); border = trimSize(getStyle(elm, 'border', 'borderWidth')); cellpadding = dom.getAttrib(elm, 'cellpadding', ""); cellspacing = dom.getAttrib(elm, 'cellspacing', ""); width = trimSize(getStyle(elm, 'width', 'width')); height = trimSize(getStyle(elm, 'height', 'height')); bordercolor = convertRGBToHex(getStyle(elm, 'bordercolor', 'borderLeftColor')); bgcolor = convertRGBToHex(getStyle(elm, 'bgcolor', 'backgroundColor')); align = dom.getAttrib(elm, 'align', align); frame = dom.getAttrib(elm, 'frame'); rules = dom.getAttrib(elm, 'rules'); className = tinymce.trim(dom.getAttrib(elm, 'class').replace(/mceItem.+/g, '')); id = dom.getAttrib(elm, 'id'); summary = dom.getAttrib(elm, 'summary'); style = dom.serializeStyle(st); dir = dom.getAttrib(elm, 'dir'); lang = dom.getAttrib(elm, 'lang'); background = getStyle(elm, 'background', 'backgroundImage').replace(new RegExp("url\\(['\"]?([^'\"]*)['\"]?\\)", 'gi'), "$1"); formObj.caption.checked = elm.getElementsByTagName('caption').length > 0; orgTableWidth = width; orgTableHeight = height; action = "update"; formObj.insert.value = inst.getLang('update'); } addClassesToList('class', "table_styles"); TinyMCE_EditableSelects.init(); // Update form selectByValue(formObj, 'align', align); selectByValue(formObj, 'tframe', frame); selectByValue(formObj, 'rules', rules); selectByValue(formObj, 'class', className, true, true); formObj.cols.value = cols; formObj.rows.value = rows; formObj.border.value = border; formObj.cellpadding.value = cellpadding; formObj.cellspacing.value = cellspacing; formObj.width.value = width; formObj.height.value = height; formObj.bordercolor.value = bordercolor; formObj.bgcolor.value = bgcolor; formObj.id.value = id; formObj.summary.value = summary; formObj.style.value = style; formObj.dir.value = dir; formObj.lang.value = lang; formObj.backgroundimage.value = background; updateColor('bordercolor_pick', 'bordercolor'); updateColor('bgcolor_pick', 'bgcolor'); // Resize some elements if (isVisible('backgroundimagebrowser')) document.getElementById('backgroundimage').style.width = '180px'; // Disable some fields in update mode if (action == "update") { formObj.cols.disabled = true; formObj.rows.disabled = true; } } function changedSize() { var formObj = document.forms[0]; var st = dom.parseStyle(formObj.style.value); /* var width = formObj.width.value; if (width != "") st['width'] = tinyMCEPopup.getParam("inline_styles") ? getCSSSize(width) : ""; else st['width'] = "";*/ var height = formObj.height.value; if (height != "") st['height'] = getCSSSize(height); else st['height'] = ""; formObj.style.value = dom.serializeStyle(st); } function changedBackgroundImage() { var formObj = document.forms[0]; var st = dom.parseStyle(formObj.style.value); st['background-image'] = "url('" + formObj.backgroundimage.value + "')"; formObj.style.value = dom.serializeStyle(st); } function changedBorder() { var formObj = document.forms[0]; var st = dom.parseStyle(formObj.style.value); // Update border width if the element has a color if (formObj.border.value != "" && formObj.bordercolor.value != "") st['border-width'] = formObj.border.value + "px"; formObj.style.value = dom.serializeStyle(st); } function changedColor() { var formObj = document.forms[0]; var st = dom.parseStyle(formObj.style.value); st['background-color'] = formObj.bgcolor.value; if (formObj.bordercolor.value != "") { st['border-color'] = formObj.bordercolor.value; // Add border-width if it's missing if (!st['border-width']) st['border-width'] = formObj.border.value == "" ? "1px" : formObj.border.value + "px"; } formObj.style.value = dom.serializeStyle(st); } function changedStyle() { var formObj = document.forms[0]; var st = dom.parseStyle(formObj.style.value); if (st['background-image']) formObj.backgroundimage.value = st['background-image'].replace(new RegExp("url\\(['\"]?([^'\"]*)['\"]?\\)", 'gi'), "$1"); else formObj.backgroundimage.value = ''; if (st['width']) formObj.width.value = trimSize(st['width']); if (st['height']) formObj.height.value = trimSize(st['height']); if (st['background-color']) { formObj.bgcolor.value = st['background-color']; updateColor('bgcolor_pick','bgcolor'); } if (st['border-color']) { formObj.bordercolor.value = st['border-color']; updateColor('bordercolor_pick','bordercolor'); } } tinyMCEPopup.onInit.add(init); webcit-8.24-dfsg.orig/tiny_mce/plugins/table/css/0000755000175000017500000000000012271477123021547 5ustar michaelmichaelwebcit-8.24-dfsg.orig/tiny_mce/plugins/table/css/table.css0000644000175000017500000000025212271477123023347 0ustar michaelmichael/* CSS file for table dialog in the table plugin */ .panel_wrapper div.current { height: 245px; } .advfield { width: 200px; } #class { width: 150px; } webcit-8.24-dfsg.orig/tiny_mce/plugins/table/css/cell.css0000644000175000017500000000031512271477123023177 0ustar michaelmichael/* CSS file for cell dialog in the table plugin */ .panel_wrapper div.current { height: 200px; } .advfield { width: 200px; } #action { margin-bottom: 3px; } #class { width: 150px; }webcit-8.24-dfsg.orig/tiny_mce/plugins/table/css/row.css0000644000175000017500000000046212271477123023072 0ustar michaelmichael/* CSS file for row dialog in the table plugin */ .panel_wrapper div.current { height: 200px; } .advfield { width: 200px; } #action { margin-bottom: 3px; } #rowtype,#align,#valign,#class,#height { width: 150px; } #height { width: 50px; } .col2 { padding-left: 20px; } webcit-8.24-dfsg.orig/tiny_mce/plugins/table/table.htm0000644000175000017500000002151512271477123022564 0ustar michaelmichael {#table_dlg.title}
    {#table_dlg.general_props}
    {#table_dlg.advanced_props}
     
     
     
    webcit-8.24-dfsg.orig/tiny_mce/plugins/table/merge_cells.htm0000644000175000017500000000274412271477123023761 0ustar michaelmichael {#table_dlg.merge_cells_title}
    {#table_dlg.merge_cells_title}
    :
    :
    webcit-8.24-dfsg.orig/tiny_mce/plugins/xhtmlxtras/0000755000175000017500000000000012271477123022106 5ustar michaelmichaelwebcit-8.24-dfsg.orig/tiny_mce/plugins/xhtmlxtras/editor_plugin_src.js0000644000175000017500000001000212271477123026150 0ustar michaelmichael/** * editor_plugin_src.js * * Copyright 2009, Moxiecode Systems AB * Released under LGPL License. * * License: http://tinymce.moxiecode.com/license * Contributing: http://tinymce.moxiecode.com/contributing */ (function() { tinymce.create('tinymce.plugins.XHTMLXtrasPlugin', { init : function(ed, url) { // Register commands ed.addCommand('mceCite', function() { ed.windowManager.open({ file : url + '/cite.htm', width : 350 + parseInt(ed.getLang('xhtmlxtras.cite_delta_width', 0)), height : 250 + parseInt(ed.getLang('xhtmlxtras.cite_delta_height', 0)), inline : 1 }, { plugin_url : url }); }); ed.addCommand('mceAcronym', function() { ed.windowManager.open({ file : url + '/acronym.htm', width : 350 + parseInt(ed.getLang('xhtmlxtras.acronym_delta_width', 0)), height : 250 + parseInt(ed.getLang('xhtmlxtras.acronym_delta_height', 0)), inline : 1 }, { plugin_url : url }); }); ed.addCommand('mceAbbr', function() { ed.windowManager.open({ file : url + '/abbr.htm', width : 350 + parseInt(ed.getLang('xhtmlxtras.abbr_delta_width', 0)), height : 250 + parseInt(ed.getLang('xhtmlxtras.abbr_delta_height', 0)), inline : 1 }, { plugin_url : url }); }); ed.addCommand('mceDel', function() { ed.windowManager.open({ file : url + '/del.htm', width : 340 + parseInt(ed.getLang('xhtmlxtras.del_delta_width', 0)), height : 310 + parseInt(ed.getLang('xhtmlxtras.del_delta_height', 0)), inline : 1 }, { plugin_url : url }); }); ed.addCommand('mceIns', function() { ed.windowManager.open({ file : url + '/ins.htm', width : 340 + parseInt(ed.getLang('xhtmlxtras.ins_delta_width', 0)), height : 310 + parseInt(ed.getLang('xhtmlxtras.ins_delta_height', 0)), inline : 1 }, { plugin_url : url }); }); ed.addCommand('mceAttributes', function() { ed.windowManager.open({ file : url + '/attributes.htm', width : 380 + parseInt(ed.getLang('xhtmlxtras.attr_delta_width', 0)), height : 370 + parseInt(ed.getLang('xhtmlxtras.attr_delta_height', 0)), inline : 1 }, { plugin_url : url }); }); // Register buttons ed.addButton('cite', {title : 'xhtmlxtras.cite_desc', cmd : 'mceCite'}); ed.addButton('acronym', {title : 'xhtmlxtras.acronym_desc', cmd : 'mceAcronym'}); ed.addButton('abbr', {title : 'xhtmlxtras.abbr_desc', cmd : 'mceAbbr'}); ed.addButton('del', {title : 'xhtmlxtras.del_desc', cmd : 'mceDel'}); ed.addButton('ins', {title : 'xhtmlxtras.ins_desc', cmd : 'mceIns'}); ed.addButton('attribs', {title : 'xhtmlxtras.attribs_desc', cmd : 'mceAttributes'}); ed.onNodeChange.add(function(ed, cm, n, co) { n = ed.dom.getParent(n, 'CITE,ACRONYM,ABBR,DEL,INS'); cm.setDisabled('cite', co); cm.setDisabled('acronym', co); cm.setDisabled('abbr', co); cm.setDisabled('del', co); cm.setDisabled('ins', co); cm.setDisabled('attribs', n && n.nodeName == 'BODY'); cm.setActive('cite', 0); cm.setActive('acronym', 0); cm.setActive('abbr', 0); cm.setActive('del', 0); cm.setActive('ins', 0); // Activate all if (n) { do { cm.setDisabled(n.nodeName.toLowerCase(), 0); cm.setActive(n.nodeName.toLowerCase(), 1); } while (n = n.parentNode); } }); ed.onPreInit.add(function() { // Fixed IE issue where it can't handle these elements correctly ed.dom.create('abbr'); }); }, getInfo : function() { return { longname : 'XHTML Xtras Plugin', author : 'Moxiecode Systems AB', authorurl : 'http://tinymce.moxiecode.com', infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/xhtmlxtras', version : tinymce.majorVersion + "." + tinymce.minorVersion }; } }); // Register plugin tinymce.PluginManager.add('xhtmlxtras', tinymce.plugins.XHTMLXtrasPlugin); })();webcit-8.24-dfsg.orig/tiny_mce/plugins/xhtmlxtras/cite.htm0000644000175000017500000001414312271477123023547 0ustar michaelmichael {#xhtmlxtras_dlg.title_cite_element}
    {#xhtmlxtras_dlg.fieldset_attrib_tab}
    :
    :
    :
    :
    :
    :
    {#xhtmlxtras_dlg.fieldset_events_tab}
    :
    :
    :
    :
    :
    :
    :
    :
    :
    :
    :
    :
    webcit-8.24-dfsg.orig/tiny_mce/plugins/xhtmlxtras/langs/0000755000175000017500000000000012271477123023212 5ustar michaelmichaelwebcit-8.24-dfsg.orig/tiny_mce/plugins/xhtmlxtras/langs/bg_dlg.js0000644000175000017500000000531212271477123024767 0ustar michaelmichaeltinyMCE.addI18n('bg.xhtmlxtras_dlg',{"attribs_title":"\u0412\u043c\u044a\u043a\u043d\u0438/\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0430\u0439 \u0410\u0442\u0440\u0438\u0431\u0443\u0442\u0438","option_rtl":"\u041e\u0442\u0434\u044f\u0441\u043d\u043e \u043d\u0430 \u043b\u044f\u0432\u043e","option_ltr":"\u041e\u0442\u043b\u044f\u0432\u043e \u043d\u0430 \u0434\u044f\u0441\u043d\u043e","insert_date":"\u0412\u043c\u044a\u043a\u043d\u0438 \u0442\u0435\u043a\u0443\u0449\u0430\u0442\u0430 \u0434\u0430\u0442\u0430/\u0446\u0430\u0441",remove:"\u041f\u0440\u0435\u043c\u0430\u0445\u043d\u0438","title_cite_element":"\u0415\u043b\u0435\u043c\u0435\u043d\u0442 \u0426\u0438\u0442\u0430\u0442","title_abbr_element":"\u0415\u043b\u0435\u043c\u0435\u043d\u0442 \u0421\u044a\u043a\u0440\u0430\u0449\u0435\u043d\u0438\u0435","title_acronym_element":"\u0415\u043b\u0435\u043c\u0435\u043d\u0442 \u0410\u043a\u0440\u043e\u043d\u0438\u043c","title_del_element":"\u0415\u043b\u0435\u043c\u0435\u043d\u0442 \u0418\u0437\u0442\u0440\u0438\u0432\u0430\u043d\u0435","title_ins_element":"\u0415\u043b\u0435\u043c\u0435\u043d\u0442 \u0412\u043c\u044a\u043a\u0432\u0430\u043d\u0435","fieldset_events_tab":"\u0421\u044a\u0431\u0438\u0442\u0438\u044f \u043d\u0430 \u0435\u043b\u0435\u043c\u0435\u043d\u0442\u0430","fieldset_attrib_tab":"\u0410\u0442\u0440\u0438\u0431\u0443\u0442\u0438 \u043d\u0430 \u0435\u043b\u0435\u043c\u0435\u043d\u0442\u0430","fieldset_general_tab":"\u041e\u0431\u0449\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438","events_tab":"\u0421\u044a\u0431\u0438\u0442\u0438\u044f","attrib_tab":"\u0410\u0442\u0440\u0438\u0431\u0443\u0442\u0438","general_tab":"\u041e\u0431\u0449\u0438","attribute_attrib_tab":"\u0410\u0442\u0440\u0438\u0431\u0443\u0442\u0438","attribute_events_tab":"\u0421\u044a\u0431\u0438\u0442\u0438\u044f","attribute_label_accesskey":"\u041a\u043b\u0430\u0432\u0438\u0448","attribute_label_tabindex":"\u041f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u043d\u043e\u0441\u0442","attribute_label_langcode":"\u0415\u0437\u0438\u043a","attribute_option_rtl":"\u041e\u0442\u0434\u044f\u0441\u043d\u043e \u043d\u0430 \u043b\u044f\u0432\u043e","attribute_option_ltr":"\u041e\u0442\u043b\u044f\u0432\u043e \u043d\u0430 \u0434\u044f\u0441\u043d\u043e","attribute_label_langdir":"\u041f\u043e\u0441\u043e\u043a\u0430 \u043d\u0430 \u0442\u0435\u043a\u0441\u0442\u0430","attribute_label_datetime":"\u0414\u0430\u0442\u0430/\u0412\u0440\u0435\u043c\u0435","attribute_label_cite":"\u0426\u0438\u0442\u0430\u0442","attribute_label_style":"\u0421\u0442\u0438\u043b","attribute_label_class":"\u041a\u043b\u0430\u0441","attribute_label_id":"ID","attribute_label_title":"\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u0435"});webcit-8.24-dfsg.orig/tiny_mce/plugins/xhtmlxtras/langs/fr_dlg.js0000644000175000017500000000225312271477123025007 0ustar michaelmichaeltinyMCE.addI18n('fr.xhtmlxtras_dlg',{"attribs_title":"Ins\u00e9rer / \u00e9diter les attributs","option_rtl":"De droite \u00e0 gauche","option_ltr":"De gauche \u00e0 droite","insert_date":"Ins\u00e9rer la date et l\'heure actuelles",remove:"Enlever","title_cite_element":"Citation","title_abbr_element":"Abr\u00e9viation","title_acronym_element":"Acronyme","title_del_element":"Suppression","title_ins_element":"Insertion","fieldset_events_tab":"\u00c9v\u00e9nements","fieldset_attrib_tab":"Attributs","fieldset_general_tab":"Param\u00e8tres g\u00e9n\u00e9raux","events_tab":"\u00c9v\u00e9nements","attrib_tab":"Attributs","general_tab":"G\u00e9n\u00e9ral","attribute_attrib_tab":"Attributs","attribute_events_tab":"\u00c9v\u00e8nements","attribute_label_accesskey":"Accesskey","attribute_label_tabindex":"TabIndex","attribute_label_langcode":"Langue","attribute_option_rtl":"De droite \u00e0 gauche","attribute_option_ltr":"De gauche \u00e0 droite","attribute_label_langdir":"Sens de lecture","attribute_label_datetime":"Date / heure","attribute_label_cite":"Citation","attribute_label_style":"Style","attribute_label_class":"Classe","attribute_label_id":"ID","attribute_label_title":"Titre"});webcit-8.24-dfsg.orig/tiny_mce/plugins/xhtmlxtras/langs/zh-cn_dlg.js0000644000175000017500000000253412271477123025421 0ustar michaelmichaeltinyMCE.addI18n('zh-cn.xhtmlxtras_dlg',{"attribs_title":"\u63d2\u5165/\u7f16\u8f91 \u5c5e\u6027","option_rtl":"\u4ece\u53f3\u5230\u5de6","option_ltr":"\u4ece\u5de6\u5230\u53f3","insert_date":"\u63d2\u5165\u5f53\u524d\u65e5\u671f/\u65f6\u95f4",remove:"\u79fb\u9664","title_cite_element":"\u5f15\u7528\u5143\u7d20","title_abbr_element":"\u7f29\u5199\u5143\u7d20","title_acronym_element":"\u9996\u5b57\u6bcd\u7f29\u5199\u5143\u7d20","title_del_element":"\u5220\u9664\u5143\u7d20","title_ins_element":"\u63d2\u5165\u5143\u7d20","fieldset_events_tab":"\u5143\u7d20\u4e8b\u4ef6","fieldset_attrib_tab":"\u5143\u7d20\u5c5e\u6027","fieldset_general_tab":"\u666e\u901a\u8bbe\u7f6e","events_tab":"\u4e8b\u4ef6","attrib_tab":"\u5c5e\u6027","general_tab":"\u666e\u901a","attribute_attrib_tab":"\u5c5e\u6027","attribute_events_tab":"\u4e8b\u4ef6","attribute_label_accesskey":"\u5feb\u6377\u952e","attribute_label_tabindex":"Tab\u7d22\u5f15","attribute_label_langcode":"\u8bed\u8a00","attribute_option_rtl":"\u4ece\u53f3\u5230\u5de6","attribute_option_ltr":"\u4ece\u5de6\u5230\u53f3","attribute_label_langdir":"\u6587\u5b57\u4e66\u5199\u65b9\u5411","attribute_label_datetime":"\u65e5\u671f/\u65f6\u95f4","attribute_label_cite":"\u5f15\u7528","attribute_label_style":"\u6837\u5f0f","attribute_label_class":"\u7c7b\u522b","attribute_label_id":"ID","attribute_label_title":"\u6807\u9898"});webcit-8.24-dfsg.orig/tiny_mce/plugins/xhtmlxtras/langs/de_dlg.js0000644000175000017500000000216512271477123024772 0ustar michaelmichaeltinyMCE.addI18n('de.xhtmlxtras_dlg',{"attribs_title":"Attribute einf\u00fcgen/bearbeiten","option_rtl":"Rechts nach links","option_ltr":"Links nach rechts","insert_date":"Aktuelle Zeit/Datum einf\u00fcgen",remove:"Entfernen","title_cite_element":"Quellenangabe","title_abbr_element":"Abk\u00fcrzung","title_acronym_element":"Akronym","title_del_element":"Entfernter Text","title_ins_element":"Eingef\u00fcgter Text","fieldset_events_tab":"Ereignisse","fieldset_attrib_tab":"Attribute","fieldset_general_tab":"Allgemeine Einstellungen","events_tab":"Ereignisse","attrib_tab":"Attribute","general_tab":"Allgemein","attribute_attrib_tab":"Attribute","attribute_events_tab":"Ereignisse","attribute_label_accesskey":"Tastenk\u00fcrzel","attribute_label_tabindex":"Tabindex","attribute_label_langcode":"Sprache","attribute_option_rtl":"Rechts nach links","attribute_option_ltr":"Links nach rechts","attribute_label_langdir":"Schriftrichtung","attribute_label_datetime":"Zeit/Datum","attribute_label_cite":"Quellenangabe","attribute_label_style":"Format","attribute_label_class":"Klasse","attribute_label_id":"ID","attribute_label_title":"Titel"});webcit-8.24-dfsg.orig/tiny_mce/plugins/xhtmlxtras/langs/fi_dlg.js0000644000175000017500000000227612271477123025003 0ustar michaelmichaeltinyMCE.addI18n('fi.xhtmlxtras_dlg',{"attribs_title":"Lis\u00e4\u00e4/muokkaa attribuutteja","option_rtl":"Oikealta vasemmalle","option_ltr":"Vasemmalta oikealle","insert_date":"Lis\u00e4\u00e4 t\u00e4m\u00e4nhetkinen p\u00e4iv\u00e4/aika",remove:"Poista","title_cite_element":"Sitaatti elementit","title_abbr_element":"Lyhenne elementit","title_acronym_element":"Kirjainlyhenne elementit","title_del_element":"Poisto elementit","title_ins_element":"Lis\u00e4ys elementit","fieldset_events_tab":"Elementin tapahtumat","fieldset_attrib_tab":"Elementin attribuutit","fieldset_general_tab":"Yleiset asetukset","events_tab":"Tapahtumat","attrib_tab":"Attribuutit","general_tab":"Yleiset","attribute_attrib_tab":"Attribuutit","attribute_events_tab":"Tapahtumat","attribute_label_accesskey":"AccessKey","attribute_label_tabindex":"TabIndex","attribute_label_langcode":"Kieli","attribute_option_rtl":"Oikealta vasemmalle","attribute_option_ltr":"Vasemmalta oikealle","attribute_label_langdir":"Tekstin suunta","attribute_label_datetime":"P\u00e4iv\u00e4/Aika","attribute_label_cite":"Sitaatti","attribute_label_style":"Tyyli","attribute_label_class":"Luokka","attribute_label_id":"ID","attribute_label_title":"Otsikko"});webcit-8.24-dfsg.orig/tiny_mce/plugins/xhtmlxtras/langs/et_dlg.js0000644000175000017500000000224412271477123025010 0ustar michaelmichaeltinyMCE.addI18n('et.xhtmlxtras_dlg',{"attribs_title":"Sisesta/muuda atribuute","option_rtl":"Paremalt vasakule","option_ltr":"Vasakult paremale","insert_date":"Sisesta hetke kuup\u00e4ev/aeg",remove:"Eemalda","title_cite_element":"Elemendi tsitaat","title_abbr_element":"Elemendi l\u00fchend","title_acronym_element":"Elemendi akron\u00fc\u00fcm","title_del_element":"Elemendi kustutus","title_ins_element":"Elemendi sisestus","fieldset_events_tab":"Elementide s\u00fcndmused","fieldset_attrib_tab":"Elementide atribuudid","fieldset_general_tab":"\u00dcldised seaded","events_tab":"S\u00fcndmused","attrib_tab":"Atribuudid","general_tab":"\u00dcldine","attribute_attrib_tab":"Atribuudid","attribute_events_tab":"S\u00fcndmused","attribute_label_accesskey":"Ligip\u00e4\u00e4suklahv","attribute_label_tabindex":"Sisujuht","attribute_label_langcode":"Keel","attribute_option_rtl":"Paremalt vasakule","attribute_option_ltr":"Vasakult paremale","attribute_label_langdir":"Teksti suund","attribute_label_datetime":"Kuup\u00e4ev/aeg","attribute_label_cite":"Tsitaat","attribute_label_style":"Stiil","attribute_label_class":"Klass","attribute_label_id":"ID","attribute_label_title":"Pealkiri"});webcit-8.24-dfsg.orig/tiny_mce/plugins/xhtmlxtras/langs/es_dlg.js0000644000175000017500000000213312271477123025004 0ustar michaelmichaeltinyMCE.addI18n('es.xhtmlxtras_dlg',{"attribs_title":"Insertar/Editar atributos","option_rtl":"Derecha a izquierda","option_ltr":"Izquierda a derecha","insert_date":"Insertar fecha/hora actuales",remove:"Suprimir","title_cite_element":"Cita","title_abbr_element":"Abreviatura","title_acronym_element":"Acr\u00f3nimo","title_del_element":"Borrar","title_ins_element":"Insertar","fieldset_events_tab":"Evento","fieldset_attrib_tab":"Atributos","fieldset_general_tab":"Configuraci\u00f3n general","events_tab":"Eventos","attrib_tab":"Atributos","general_tab":"General","attribute_attrib_tab":"Atributos","attribute_events_tab":"Eventos","attribute_label_accesskey":"Tecla de acceso","attribute_label_tabindex":"Orden de tabulaci\u00f3n","attribute_label_langcode":"Lenguaje","attribute_option_rtl":"Derecha a izquierda","attribute_option_ltr":"Izquierda a derecha","attribute_label_langdir":"Direcci\u00f3n de texto","attribute_label_datetime":"Fecha/Hora","attribute_label_cite":"Cita","attribute_label_style":"Estilo","attribute_label_class":"Clase","attribute_label_id":"ID","attribute_label_title":"T\u00edtulo"});webcit-8.24-dfsg.orig/tiny_mce/plugins/xhtmlxtras/langs/da_dlg.js0000644000175000017500000000225212271477123024763 0ustar michaelmichaeltinyMCE.addI18n('da.xhtmlxtras_dlg',{"attribs_title":"Inds\u00e6t/rediger attributter","option_rtl":"H\u00f8jre mod venstre","option_ltr":"Venstre mod h\u00f8jre","insert_date":"Inds\u00e6t nuv\u00e6rende dato/tid",remove:"Slet","title_cite_element":"Citationselement","title_abbr_element":"Forkortet element","title_acronym_element":"Akronym element","title_del_element":"Sletteklart element","title_ins_element":"Inds\u00e6tbart element","fieldset_events_tab":"Element-h\u00e6ndelser","fieldset_attrib_tab":"Element-attributter","fieldset_general_tab":"Genererelle indstillinger","events_tab":"H\u00e6ndelser","attrib_tab":"Attributter","general_tab":"Generelt","attribute_attrib_tab":"Attributter","attribute_events_tab":"H\u00e6ndelser","attribute_label_accesskey":"Adgangsn\u00f8gle","attribute_label_tabindex":"Tab-indeks","attribute_label_langcode":"Sprog","attribute_option_rtl":"H\u00f8jre mod venstre","attribute_option_ltr":"Venstre mod h\u00f8jre","attribute_label_langdir":"Tekstretning","attribute_label_datetime":"Dato/tid","attribute_label_cite":"Citat","attribute_label_style":"Stil","attribute_label_class":"Klasse","attribute_label_id":"ID","attribute_label_title":"Titel"});webcit-8.24-dfsg.orig/tiny_mce/plugins/xhtmlxtras/langs/el_dlg.js0000644000175000017500000000567212271477123025010 0ustar michaelmichaeltinyMCE.addI18n('el.xhtmlxtras_dlg',{"attribs_title":"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae/\u03b5\u03c0\u03b5\u03be\u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u03b1 \u03b9\u03b4\u03b9\u03bf\u03c4\u03ae\u03c4\u03c9\u03bd","option_rtl":"\u0394\u03b5\u03be\u03b9\u03ac \u03c0\u03c1\u03bf\u03c2 \u03b1\u03c1\u03b9\u03c3\u03c4\u03b5\u03c1\u03ac","option_ltr":"\u0391\u03c1\u03b9\u03c3\u03c4\u03b5\u03c1\u03ac \u03c0\u03c1\u03bf\u03c2 \u03b4\u03b5\u03be\u03b9\u03ac","insert_date":"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae \u03c4\u03c1\u03ad\u03c7\u03bf\u03c5\u03c3\u03b1\u03c2 \u03b7\u03bc\u03ad\u03c1\u03b1\u03c2/\u03ce\u03c1\u03b1\u03c2",remove:"\u0391\u03c6\u03b1\u03af\u03c1\u03b5\u03c3\u03b7","title_cite_element":"Citation \u03c3\u03c4\u03bf\u03b9\u03c7\u03b5\u03af\u03bf\u03c5","title_abbr_element":"\u03a3\u03c5\u03bd\u03c4\u03bf\u03bc\u03bf\u03b3\u03c1\u03b1\u03c6\u03af\u03b1 \u03c3\u03c4\u03bf\u03b9\u03c7\u03b5\u03af\u03bf\u03c5","title_acronym_element":"\u0391\u03ba\u03c1\u03bf\u03bd\u03cd\u03bc\u03b9\u03bf \u03c3\u03c4\u03bf\u03b9\u03c7\u03b5\u03af\u03bf\u03c5","title_del_element":"\u0394\u03b9\u03b1\u03b3\u03c1\u03b1\u03c6\u03ae \u03c3\u03c4\u03bf\u03b9\u03c7\u03b5\u03af\u03bf\u03c5","title_ins_element":"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae \u03c3\u03c4\u03bf\u03b9\u03c7\u03b5\u03af\u03bf\u03c5","fieldset_events_tab":"\u0393\u03b5\u03b3\u03bf\u03bd\u03cc\u03c4\u03b1 \u03c3\u03c4\u03bf\u03b9\u03c7\u03b5\u03af\u03bf\u03c5","fieldset_attrib_tab":"\u0399\u03b4\u03b9\u03cc\u03c4\u03b7\u03c4\u03b5\u03c2 \u03c3\u03c4\u03bf\u03b9\u03c7\u03b5\u03af\u03bf\u03c5","fieldset_general_tab":"\u0393\u03b5\u03bd\u03b9\u03ba\u03ad\u03c2 \u03a1\u03c5\u03b8\u03bc\u03af\u03c3\u03b5\u03b9\u03c2","events_tab":"\u0393\u03b5\u03b3\u03bf\u03bd\u03cc\u03c4\u03b1","attrib_tab":"\u0399\u03b4\u03b9\u03cc\u03c4\u03b7\u03c4\u03b5\u03c2","general_tab":"\u0393\u03b5\u03bd\u03b9\u03ba\u03ac","attribute_attrib_tab":"\u0399\u03b4\u03b9\u03cc\u03c4\u03b7\u03c4\u03b5\u03c2","attribute_events_tab":"\u0393\u03b5\u03b3\u03bf\u03bd\u03cc\u03c4\u03b1","attribute_label_accesskey":"\u03a0\u03bb\u03ae\u03ba\u03c4\u03c1\u03bf \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2","attribute_label_tabindex":"TabIndex","attribute_label_langcode":"\u0393\u03bb\u03ce\u03c3\u03c3\u03b1","attribute_option_rtl":"\u0394\u03b5\u03be\u03b9\u03ac \u03c0\u03c1\u03bf\u03c2 \u03b1\u03c1\u03b9\u03c3\u03c4\u03b5\u03c1\u03ac","attribute_option_ltr":"\u0391\u03c1\u03b9\u03c3\u03c4\u03b5\u03c1\u03ac \u03c0\u03c1\u03bf\u03c2 \u03b4\u03b5\u03be\u03b9\u03ac","attribute_label_langdir":"\u039a\u03b1\u03c4\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 \u03ba\u03b5\u03b9\u03bc\u03ad\u03bd\u03bf\u03c5","attribute_label_datetime":"\u0397\u03bc\u03ad\u03c1\u03b1/\u038f\u03c1\u03b1","attribute_label_cite":"Cite","attribute_label_style":"\u03a3\u03c4\u03c5\u03bb","attribute_label_class":"\u039a\u03bb\u03ac\u03c3\u03b7","attribute_label_id":"ID","attribute_label_title":"\u03a4\u03af\u03c4\u03bb\u03bf\u03c2"});webcit-8.24-dfsg.orig/tiny_mce/plugins/xhtmlxtras/langs/hu_dlg.js0000644000175000017500000000246612271477123025022 0ustar michaelmichaeltinyMCE.addI18n('hu.xhtmlxtras_dlg',{"attribs_title":"Tulajdons\u00e1gok besz\u00far\u00e1sa/szerkeszt\u00e9se","option_rtl":"Jobbr\u00f3l balra","option_ltr":"Balr\u00f3l jobra","insert_date":"Aktu\u00e1lis d\u00e1tum/id\u0151 besz\u00far\u00e1sa",remove:"Elt\u00e1vol\u00edt\u00e1s","title_cite_element":"Id\u00e9zet elem","title_abbr_element":"R\u00f6vid\u00edt\u00e9s elem","title_acronym_element":"Bet\u0171sz\u00f3 elem","title_del_element":"T\u00f6r\u00f6lt elem","title_ins_element":"Besz\u00fart elem","fieldset_events_tab":"Elem esem\u00e9nyek","fieldset_attrib_tab":"Elem tulajdons\u00e1gok","fieldset_general_tab":"\u00c1ltal\u00e1nos be\u00e1ll\u00edt\u00e1sok","events_tab":"Esem\u00e9nyek","attrib_tab":"Tulajdons\u00e1gok","general_tab":"\u00c1ltal\u00e1nos","attribute_attrib_tab":"Tulajdons\u00e1gok","attribute_events_tab":"Esem\u00e9nyek","attribute_label_accesskey":"Gyorsbilenty\u0171","attribute_label_tabindex":"TabIndex","attribute_label_langcode":"Nyelv","attribute_option_rtl":"Jobbr\u00f3l balra","attribute_option_ltr":"Balr\u00f3l jobbra","attribute_label_langdir":"Sz\u00f6veg ir\u00e1nya","attribute_label_datetime":"D\u00e1tum/Id\u0151","attribute_label_cite":"Id\u00e9zet","attribute_label_style":"Style","attribute_label_class":"Class","attribute_label_id":"ID","attribute_label_title":"C\u00edm"});webcit-8.24-dfsg.orig/tiny_mce/plugins/xhtmlxtras/langs/cs_dlg.js0000644000175000017500000000224512271477123025006 0ustar michaelmichaeltinyMCE.addI18n('cs.xhtmlxtras_dlg',{"attribs_title":"Vlo\u017eit/upravit atributy","option_rtl":"Zprava doleva","option_ltr":"Zleva doprava","insert_date":"Vlo\u017eit aktu\u00e1ln\u00ed datum/\u010das",remove:"Odstranit","title_cite_element":"Citace","title_abbr_element":"Zkratka","title_acronym_element":"Akronym","title_del_element":"Odstran\u011bn\u00fd text","title_ins_element":"P\u0159idan\u00fd text","fieldset_events_tab":"Atributy ud\u00e1losti","fieldset_attrib_tab":"Atributy prvku","fieldset_general_tab":"Obecn\u00e9 parametry","events_tab":"Ud\u00e1losti","attrib_tab":"Atributy","general_tab":"Obecn\u00e9","attribute_attrib_tab":"Atributy","attribute_events_tab":"Ud\u00e1losti","attribute_label_accesskey":"Kl\u00e1vesov\u00e1 zkratka","attribute_label_tabindex":"Po\u0159ad\u00ed pro tabul\u00e1tor","attribute_label_langcode":"Jazyk","attribute_option_rtl":"Zprava doleva","attribute_option_ltr":"Zleva doprava","attribute_label_langdir":"Sm\u011br textu","attribute_label_datetime":"Datum/\u010cas","attribute_label_cite":"Citace","attribute_label_style":"Styl","attribute_label_class":"T\u0159\u00edda","attribute_label_id":"ID","attribute_label_title":"Titulek"});webcit-8.24-dfsg.orig/tiny_mce/plugins/xhtmlxtras/langs/en_dlg.js0000644000175000017500000000210412271477123024775 0ustar michaelmichaeltinyMCE.addI18n('en.xhtmlxtras_dlg',{"attribs_title":"Insert/Edit Attributes","option_rtl":"Right to Left","option_ltr":"Left to Right","insert_date":"Insert Current Date/Time",remove:"Remove","title_cite_element":"Citation Element","title_abbr_element":"Abbreviation Element","title_acronym_element":"Acronym Element","title_del_element":"Deletion Element","title_ins_element":"Insertion Element","fieldset_events_tab":"Element Events","fieldset_attrib_tab":"Element Attributes","fieldset_general_tab":"General Settings","events_tab":"Events","attrib_tab":"Attributes","general_tab":"General","attribute_attrib_tab":"Attributes","attribute_events_tab":"Events","attribute_label_accesskey":"AccessKey","attribute_label_tabindex":"TabIndex","attribute_label_langcode":"Language","attribute_option_rtl":"Right to Left","attribute_option_ltr":"Left to Right","attribute_label_langdir":"Text Direction","attribute_label_datetime":"Date/Time","attribute_label_cite":"Cite","attribute_label_style":"Style","attribute_label_class":"Class","attribute_label_id":"ID","attribute_label_title":"Title"});webcit-8.24-dfsg.orig/tiny_mce/plugins/xhtmlxtras/langs/it_dlg.js0000644000175000017500000000223512271477123025014 0ustar michaelmichaeltinyMCE.addI18n('it.xhtmlxtras_dlg',{"attribs_title":"Inserisci/modifica attributi","option_rtl":"Destra verso sinistra","option_ltr":"Sinistra verso destra","insert_date":"Inserisci data/ora corrente",remove:"Rimuovi","title_cite_element":"Citazione elemento","title_abbr_element":"Abbreviazione elemento","title_acronym_element":"Acronimo elemento","title_del_element":"Cancellazione elemento","title_ins_element":"Inserimento elemento","fieldset_events_tab":"Eventi elemento","fieldset_attrib_tab":"Attributi elemento","fieldset_general_tab":"Impostazioni Generali","events_tab":"Eventi","attrib_tab":"Attributi","general_tab":"Generale","attribute_attrib_tab":"Attributi","attribute_events_tab":"Eventi","attribute_label_accesskey":"Tasto di accesso","attribute_label_tabindex":"Indice tabulazione","attribute_label_langcode":"Lingua","attribute_option_rtl":"Destra verso sinistra","attribute_option_ltr":"Sinistra verso destra","attribute_label_langdir":"Direzione del testo","attribute_label_datetime":"Date/Time","attribute_label_cite":"Citazione","attribute_label_style":"Style","attribute_label_class":"Classe","attribute_label_id":"ID","attribute_label_title":"Titolo"});webcit-8.24-dfsg.orig/tiny_mce/plugins/xhtmlxtras/acronym.htm0000644000175000017500000001416212271477123024274 0ustar michaelmichael {#xhtmlxtras_dlg.title_acronym_element}
    {#xhtmlxtras_dlg.fieldset_attrib_tab}
    :
    :
    :
    :
    :
    :
    {#xhtmlxtras_dlg.fieldset_events_tab}
    :
    :
    :
    :
    :
    :
    :
    :
    :
    :
    :
    :
    webcit-8.24-dfsg.orig/tiny_mce/plugins/xhtmlxtras/del.htm0000644000175000017500000001617612271477123023377 0ustar michaelmichael {#xhtmlxtras_dlg.title_del_element}
    {#xhtmlxtras_dlg.fieldset_general_tab}
    :
    :
    {#xhtmlxtras_dlg.fieldset_attrib_tab}
    :
    :
    :
    :
    :
    :
    {#xhtmlxtras_dlg.fieldset_events_tab}
    :
    :
    :
    :
    :
    :
    :
    :
    :
    :
    :
    :
    webcit-8.24-dfsg.orig/tiny_mce/plugins/xhtmlxtras/attributes.htm0000644000175000017500000001413012271477123025005 0ustar michaelmichael {#xhtmlxtras_dlg.attribs_title}
    {#xhtmlxtras_dlg.attribute_attrib_tab}
    :
    :
    :
    :
    :
    {#xhtmlxtras_dlg.attribute_events_tab}
    :
    :
    :
    :
    :
    :
    :
    :
    :
    :
    :
    :
    webcit-8.24-dfsg.orig/tiny_mce/plugins/xhtmlxtras/editor_plugin.js0000644000175000017500000000530412271477123025312 0ustar michaelmichael(function(){tinymce.create("tinymce.plugins.XHTMLXtrasPlugin",{init:function(a,b){a.addCommand("mceCite",function(){a.windowManager.open({file:b+"/cite.htm",width:350+parseInt(a.getLang("xhtmlxtras.cite_delta_width",0)),height:250+parseInt(a.getLang("xhtmlxtras.cite_delta_height",0)),inline:1},{plugin_url:b})});a.addCommand("mceAcronym",function(){a.windowManager.open({file:b+"/acronym.htm",width:350+parseInt(a.getLang("xhtmlxtras.acronym_delta_width",0)),height:250+parseInt(a.getLang("xhtmlxtras.acronym_delta_height",0)),inline:1},{plugin_url:b})});a.addCommand("mceAbbr",function(){a.windowManager.open({file:b+"/abbr.htm",width:350+parseInt(a.getLang("xhtmlxtras.abbr_delta_width",0)),height:250+parseInt(a.getLang("xhtmlxtras.abbr_delta_height",0)),inline:1},{plugin_url:b})});a.addCommand("mceDel",function(){a.windowManager.open({file:b+"/del.htm",width:340+parseInt(a.getLang("xhtmlxtras.del_delta_width",0)),height:310+parseInt(a.getLang("xhtmlxtras.del_delta_height",0)),inline:1},{plugin_url:b})});a.addCommand("mceIns",function(){a.windowManager.open({file:b+"/ins.htm",width:340+parseInt(a.getLang("xhtmlxtras.ins_delta_width",0)),height:310+parseInt(a.getLang("xhtmlxtras.ins_delta_height",0)),inline:1},{plugin_url:b})});a.addCommand("mceAttributes",function(){a.windowManager.open({file:b+"/attributes.htm",width:380+parseInt(a.getLang("xhtmlxtras.attr_delta_width",0)),height:370+parseInt(a.getLang("xhtmlxtras.attr_delta_height",0)),inline:1},{plugin_url:b})});a.addButton("cite",{title:"xhtmlxtras.cite_desc",cmd:"mceCite"});a.addButton("acronym",{title:"xhtmlxtras.acronym_desc",cmd:"mceAcronym"});a.addButton("abbr",{title:"xhtmlxtras.abbr_desc",cmd:"mceAbbr"});a.addButton("del",{title:"xhtmlxtras.del_desc",cmd:"mceDel"});a.addButton("ins",{title:"xhtmlxtras.ins_desc",cmd:"mceIns"});a.addButton("attribs",{title:"xhtmlxtras.attribs_desc",cmd:"mceAttributes"});a.onNodeChange.add(function(d,c,f,e){f=d.dom.getParent(f,"CITE,ACRONYM,ABBR,DEL,INS");c.setDisabled("cite",e);c.setDisabled("acronym",e);c.setDisabled("abbr",e);c.setDisabled("del",e);c.setDisabled("ins",e);c.setDisabled("attribs",f&&f.nodeName=="BODY");c.setActive("cite",0);c.setActive("acronym",0);c.setActive("abbr",0);c.setActive("del",0);c.setActive("ins",0);if(f){do{c.setDisabled(f.nodeName.toLowerCase(),0);c.setActive(f.nodeName.toLowerCase(),1)}while(f=f.parentNode)}});a.onPreInit.add(function(){a.dom.create("abbr")})},getInfo:function(){return{longname:"XHTML Xtras Plugin",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/xhtmlxtras",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("xhtmlxtras",tinymce.plugins.XHTMLXtrasPlugin)})();webcit-8.24-dfsg.orig/tiny_mce/plugins/xhtmlxtras/ins.htm0000644000175000017500000001620312271477123023413 0ustar michaelmichael {#xhtmlxtras_dlg.title_ins_element}
    {#xhtmlxtras_dlg.fieldset_general_tab}
    :
    :
    {#xhtmlxtras_dlg.fieldset_attrib_tab}
    :
    :
    :
    :
    :
    :
    {#xhtmlxtras_dlg.fieldset_events_tab}
    :
    :
    :
    :
    :
    :
    :
    :
    :
    :
    :
    :
    webcit-8.24-dfsg.orig/tiny_mce/plugins/xhtmlxtras/js/0000755000175000017500000000000012271477123022522 5ustar michaelmichaelwebcit-8.24-dfsg.orig/tiny_mce/plugins/xhtmlxtras/js/del.js0000644000175000017500000000251412271477123023626 0ustar michaelmichael/** * del.js * * Copyright 2009, Moxiecode Systems AB * Released under LGPL License. * * License: http://tinymce.moxiecode.com/license * Contributing: http://tinymce.moxiecode.com/contributing */ function init() { SXE.initElementDialog('del'); if (SXE.currentAction == "update") { setFormValue('datetime', tinyMCEPopup.editor.dom.getAttrib(SXE.updateElement, 'datetime')); setFormValue('cite', tinyMCEPopup.editor.dom.getAttrib(SXE.updateElement, 'cite')); SXE.showRemoveButton(); } } function setElementAttribs(elm) { setAllCommonAttribs(elm); setAttrib(elm, 'datetime'); setAttrib(elm, 'cite'); elm.removeAttribute('data-mce-new'); } function insertDel() { var elm = tinyMCEPopup.editor.dom.getParent(SXE.focusElement, 'DEL'); if (elm == null) { var s = SXE.inst.selection.getContent(); if(s.length > 0) { insertInlineElement('del'); var elementArray = SXE.inst.dom.select('del[data-mce-new]'); for (var i=0; i 0) { tagName = element_name; insertInlineElement(element_name); var elementArray = tinymce.grep(SXE.inst.dom.select(element_name)); for (var i=0; i -1) ? true : false; } SXE.removeClass = function(elm,cl) { if(elm.className == null || elm.className == "" || !SXE.containsClass(elm,cl)) { return true; } var classNames = elm.className.split(" "); var newClassNames = ""; for (var x = 0, cnl = classNames.length; x < cnl; x++) { if (classNames[x] != cl) { newClassNames += (classNames[x] + " "); } } elm.className = newClassNames.substring(0,newClassNames.length-1); //removes extra space at the end } SXE.addClass = function(elm,cl) { if(!SXE.containsClass(elm,cl)) elm.className ? elm.className += " " + cl : elm.className = cl; return true; } function insertInlineElement(en) { var ed = tinyMCEPopup.editor, dom = ed.dom; ed.getDoc().execCommand('FontName', false, 'mceinline'); tinymce.each(dom.select('span,font'), function(n) { if (n.style.fontFamily == 'mceinline' || n.face == 'mceinline') dom.replace(dom.create(en, {'data-mce-new' : 1}), n, 1); }); } webcit-8.24-dfsg.orig/tiny_mce/plugins/xhtmlxtras/js/acronym.js0000644000175000017500000000105712271477123024533 0ustar michaelmichael/** * acronym.js * * Copyright 2009, Moxiecode Systems AB * Released under LGPL License. * * License: http://tinymce.moxiecode.com/license * Contributing: http://tinymce.moxiecode.com/contributing */ function init() { SXE.initElementDialog('acronym'); if (SXE.currentAction == "update") { SXE.showRemoveButton(); } } function insertAcronym() { SXE.insertElement('acronym'); tinyMCEPopup.close(); } function removeAcronym() { SXE.removeElement('acronym'); tinyMCEPopup.close(); } tinyMCEPopup.onInit.add(init); webcit-8.24-dfsg.orig/tiny_mce/plugins/xhtmlxtras/js/ins.js0000644000175000017500000000251412271477123023653 0ustar michaelmichael/** * ins.js * * Copyright 2009, Moxiecode Systems AB * Released under LGPL License. * * License: http://tinymce.moxiecode.com/license * Contributing: http://tinymce.moxiecode.com/contributing */ function init() { SXE.initElementDialog('ins'); if (SXE.currentAction == "update") { setFormValue('datetime', tinyMCEPopup.editor.dom.getAttrib(SXE.updateElement, 'datetime')); setFormValue('cite', tinyMCEPopup.editor.dom.getAttrib(SXE.updateElement, 'cite')); SXE.showRemoveButton(); } } function setElementAttribs(elm) { setAllCommonAttribs(elm); setAttrib(elm, 'datetime'); setAttrib(elm, 'cite'); elm.removeAttribute('data-mce-new'); } function insertIns() { var elm = tinyMCEPopup.editor.dom.getParent(SXE.focusElement, 'INS'); if (elm == null) { var s = SXE.inst.selection.getContent(); if(s.length > 0) { insertInlineElement('ins'); var elementArray = SXE.inst.dom.select('ins[data-mce-new]'); for (var i=0; i {#xhtmlxtras_dlg.title_abbr_element}
    {#xhtmlxtras_dlg.fieldset_attrib_tab}
    :
    :
    :
    :
    :
    :
    {#xhtmlxtras_dlg.fieldset_events_tab}
    :
    :
    :
    :
    :
    :
    :
    :
    :
    :
    :
    :
    webcit-8.24-dfsg.orig/tiny_mce/plugins/pagebreak/0000755000175000017500000000000012271477123021611 5ustar michaelmichaelwebcit-8.24-dfsg.orig/tiny_mce/plugins/pagebreak/editor_plugin_src.js0000644000175000017500000000416112271477123025664 0ustar michaelmichael/** * editor_plugin_src.js * * Copyright 2009, Moxiecode Systems AB * Released under LGPL License. * * License: http://tinymce.moxiecode.com/license * Contributing: http://tinymce.moxiecode.com/contributing */ (function() { tinymce.create('tinymce.plugins.PageBreakPlugin', { init : function(ed, url) { var pb = '', cls = 'mcePageBreak', sep = ed.getParam('pagebreak_separator', ''), pbRE; pbRE = new RegExp(sep.replace(/[\?\.\*\[\]\(\)\{\}\+\^\$\:]/g, function(a) {return '\\' + a;}), 'g'); // Register commands ed.addCommand('mcePageBreak', function() { ed.execCommand('mceInsertContent', 0, pb); }); // Register buttons ed.addButton('pagebreak', {title : 'pagebreak.desc', cmd : cls}); ed.onInit.add(function() { if (ed.theme.onResolveName) { ed.theme.onResolveName.add(function(th, o) { if (o.node.nodeName == 'IMG' && ed.dom.hasClass(o.node, cls)) o.name = 'pagebreak'; }); } }); ed.onClick.add(function(ed, e) { e = e.target; if (e.nodeName === 'IMG' && ed.dom.hasClass(e, cls)) ed.selection.select(e); }); ed.onNodeChange.add(function(ed, cm, n) { cm.setActive('pagebreak', n.nodeName === 'IMG' && ed.dom.hasClass(n, cls)); }); ed.onBeforeSetContent.add(function(ed, o) { o.content = o.content.replace(pbRE, pb); }); ed.onPostProcess.add(function(ed, o) { if (o.get) o.content = o.content.replace(/]+>/g, function(im) { if (im.indexOf('class="mcePageBreak') !== -1) im = sep; return im; }); }); }, getInfo : function() { return { longname : 'PageBreak', author : 'Moxiecode Systems AB', authorurl : 'http://tinymce.moxiecode.com', infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/pagebreak', version : tinymce.majorVersion + "." + tinymce.minorVersion }; } }); // Register plugin tinymce.PluginManager.add('pagebreak', tinymce.plugins.PageBreakPlugin); })();webcit-8.24-dfsg.orig/tiny_mce/plugins/pagebreak/editor_plugin.js0000644000175000017500000000257212271477123025021 0ustar michaelmichael(function(){tinymce.create("tinymce.plugins.PageBreakPlugin",{init:function(b,d){var f='',a="mcePageBreak",c=b.getParam("pagebreak_separator",""),e;e=new RegExp(c.replace(/[\?\.\*\[\]\(\)\{\}\+\^\$\:]/g,function(g){return"\\"+g}),"g");b.addCommand("mcePageBreak",function(){b.execCommand("mceInsertContent",0,f)});b.addButton("pagebreak",{title:"pagebreak.desc",cmd:a});b.onInit.add(function(){if(b.theme.onResolveName){b.theme.onResolveName.add(function(g,h){if(h.node.nodeName=="IMG"&&b.dom.hasClass(h.node,a)){h.name="pagebreak"}})}});b.onClick.add(function(g,h){h=h.target;if(h.nodeName==="IMG"&&g.dom.hasClass(h,a)){g.selection.select(h)}});b.onNodeChange.add(function(h,g,i){g.setActive("pagebreak",i.nodeName==="IMG"&&h.dom.hasClass(i,a))});b.onBeforeSetContent.add(function(g,h){h.content=h.content.replace(e,f)});b.onPostProcess.add(function(g,h){if(h.get){h.content=h.content.replace(/]+>/g,function(i){if(i.indexOf('class="mcePageBreak')!==-1){i=c}return i})}})},getInfo:function(){return{longname:"PageBreak",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/pagebreak",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("pagebreak",tinymce.plugins.PageBreakPlugin)})();webcit-8.24-dfsg.orig/tiny_mce/plugins/fullscreen/0000755000175000017500000000000012271477123022032 5ustar michaelmichaelwebcit-8.24-dfsg.orig/tiny_mce/plugins/fullscreen/editor_plugin_src.js0000644000175000017500000001271612271477123026112 0ustar michaelmichael/** * editor_plugin_src.js * * Copyright 2009, Moxiecode Systems AB * Released under LGPL License. * * License: http://tinymce.moxiecode.com/license * Contributing: http://tinymce.moxiecode.com/contributing */ (function() { var DOM = tinymce.DOM; tinymce.create('tinymce.plugins.FullScreenPlugin', { init : function(ed, url) { var t = this, s = {}, vp, posCss; t.editor = ed; // Register commands ed.addCommand('mceFullScreen', function() { var win, de = DOM.doc.documentElement; if (ed.getParam('fullscreen_is_enabled')) { if (ed.getParam('fullscreen_new_window')) closeFullscreen(); // Call to close in new window else { DOM.win.setTimeout(function() { tinymce.dom.Event.remove(DOM.win, 'resize', t.resizeFunc); tinyMCE.get(ed.getParam('fullscreen_editor_id')).setContent(ed.getContent()); tinyMCE.remove(ed); DOM.remove('mce_fullscreen_container'); de.style.overflow = ed.getParam('fullscreen_html_overflow'); DOM.setStyle(DOM.doc.body, 'overflow', ed.getParam('fullscreen_overflow')); DOM.win.scrollTo(ed.getParam('fullscreen_scrollx'), ed.getParam('fullscreen_scrolly')); tinyMCE.settings = tinyMCE.oldSettings; // Restore old settings }, 10); } return; } if (ed.getParam('fullscreen_new_window')) { win = DOM.win.open(url + "/fullscreen.htm", "mceFullScreenPopup", "fullscreen=yes,menubar=no,toolbar=no,scrollbars=no,resizable=yes,left=0,top=0,width=" + screen.availWidth + ",height=" + screen.availHeight); try { win.resizeTo(screen.availWidth, screen.availHeight); } catch (e) { // Ignore } } else { tinyMCE.oldSettings = tinyMCE.settings; // Store old settings s.fullscreen_overflow = DOM.getStyle(DOM.doc.body, 'overflow', 1) || 'auto'; s.fullscreen_html_overflow = DOM.getStyle(de, 'overflow', 1); vp = DOM.getViewPort(); s.fullscreen_scrollx = vp.x; s.fullscreen_scrolly = vp.y; // Fixes an Opera bug where the scrollbars doesn't reappear if (tinymce.isOpera && s.fullscreen_overflow == 'visible') s.fullscreen_overflow = 'auto'; // Fixes an IE bug where horizontal scrollbars would appear if (tinymce.isIE && s.fullscreen_overflow == 'scroll') s.fullscreen_overflow = 'auto'; // Fixes an IE bug where the scrollbars doesn't reappear if (tinymce.isIE && (s.fullscreen_html_overflow == 'visible' || s.fullscreen_html_overflow == 'scroll')) s.fullscreen_html_overflow = 'auto'; if (s.fullscreen_overflow == '0px') s.fullscreen_overflow = ''; DOM.setStyle(DOM.doc.body, 'overflow', 'hidden'); de.style.overflow = 'hidden'; //Fix for IE6/7 vp = DOM.getViewPort(); DOM.win.scrollTo(0, 0); if (tinymce.isIE) vp.h -= 1; // Use fixed position if it exists if (tinymce.isIE6) posCss = 'absolute;top:' + vp.y; else posCss = 'fixed;top:0'; n = DOM.add(DOM.doc.body, 'div', { id : 'mce_fullscreen_container', style : 'position:' + posCss + ';left:0;width:' + vp.w + 'px;height:' + vp.h + 'px;z-index:200000;'}); DOM.add(n, 'div', {id : 'mce_fullscreen'}); tinymce.each(ed.settings, function(v, n) { s[n] = v; }); s.id = 'mce_fullscreen'; s.width = n.clientWidth; s.height = n.clientHeight - 15; s.fullscreen_is_enabled = true; s.fullscreen_editor_id = ed.id; s.theme_advanced_resizing = false; s.save_onsavecallback = function() { ed.setContent(tinyMCE.get(s.id).getContent()); ed.execCommand('mceSave'); }; tinymce.each(ed.getParam('fullscreen_settings'), function(v, k) { s[k] = v; }); if (s.theme_advanced_toolbar_location === 'external') s.theme_advanced_toolbar_location = 'top'; t.fullscreenEditor = new tinymce.Editor('mce_fullscreen', s); t.fullscreenEditor.onInit.add(function() { t.fullscreenEditor.setContent(ed.getContent()); t.fullscreenEditor.focus(); }); t.fullscreenEditor.render(); t.fullscreenElement = new tinymce.dom.Element('mce_fullscreen_container'); t.fullscreenElement.update(); //document.body.overflow = 'hidden'; t.resizeFunc = tinymce.dom.Event.add(DOM.win, 'resize', function() { var vp = tinymce.DOM.getViewPort(), fed = t.fullscreenEditor, outerSize, innerSize; // Get outer/inner size to get a delta size that can be used to calc the new iframe size outerSize = fed.dom.getSize(fed.getContainer().firstChild); innerSize = fed.dom.getSize(fed.getContainer().getElementsByTagName('iframe')[0]); fed.theme.resizeTo(vp.w - outerSize.w + innerSize.w, vp.h - outerSize.h + innerSize.h); }); } }); // Register buttons ed.addButton('fullscreen', {title : 'fullscreen.desc', cmd : 'mceFullScreen'}); ed.onNodeChange.add(function(ed, cm) { cm.setActive('fullscreen', ed.getParam('fullscreen_is_enabled')); }); }, getInfo : function() { return { longname : 'Fullscreen', author : 'Moxiecode Systems AB', authorurl : 'http://tinymce.moxiecode.com', infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/fullscreen', version : tinymce.majorVersion + "." + tinymce.minorVersion }; } }); // Register plugin tinymce.PluginManager.add('fullscreen', tinymce.plugins.FullScreenPlugin); })();webcit-8.24-dfsg.orig/tiny_mce/plugins/fullscreen/editor_plugin.js0000644000175000017500000000675112271477123025245 0ustar michaelmichael(function(){var a=tinymce.DOM;tinymce.create("tinymce.plugins.FullScreenPlugin",{init:function(d,e){var f=this,g={},c,b;f.editor=d;d.addCommand("mceFullScreen",function(){var i,j=a.doc.documentElement;if(d.getParam("fullscreen_is_enabled")){if(d.getParam("fullscreen_new_window")){closeFullscreen()}else{a.win.setTimeout(function(){tinymce.dom.Event.remove(a.win,"resize",f.resizeFunc);tinyMCE.get(d.getParam("fullscreen_editor_id")).setContent(d.getContent());tinyMCE.remove(d);a.remove("mce_fullscreen_container");j.style.overflow=d.getParam("fullscreen_html_overflow");a.setStyle(a.doc.body,"overflow",d.getParam("fullscreen_overflow"));a.win.scrollTo(d.getParam("fullscreen_scrollx"),d.getParam("fullscreen_scrolly"));tinyMCE.settings=tinyMCE.oldSettings},10)}return}if(d.getParam("fullscreen_new_window")){i=a.win.open(e+"/fullscreen.htm","mceFullScreenPopup","fullscreen=yes,menubar=no,toolbar=no,scrollbars=no,resizable=yes,left=0,top=0,width="+screen.availWidth+",height="+screen.availHeight);try{i.resizeTo(screen.availWidth,screen.availHeight)}catch(h){}}else{tinyMCE.oldSettings=tinyMCE.settings;g.fullscreen_overflow=a.getStyle(a.doc.body,"overflow",1)||"auto";g.fullscreen_html_overflow=a.getStyle(j,"overflow",1);c=a.getViewPort();g.fullscreen_scrollx=c.x;g.fullscreen_scrolly=c.y;if(tinymce.isOpera&&g.fullscreen_overflow=="visible"){g.fullscreen_overflow="auto"}if(tinymce.isIE&&g.fullscreen_overflow=="scroll"){g.fullscreen_overflow="auto"}if(tinymce.isIE&&(g.fullscreen_html_overflow=="visible"||g.fullscreen_html_overflow=="scroll")){g.fullscreen_html_overflow="auto"}if(g.fullscreen_overflow=="0px"){g.fullscreen_overflow=""}a.setStyle(a.doc.body,"overflow","hidden");j.style.overflow="hidden";c=a.getViewPort();a.win.scrollTo(0,0);if(tinymce.isIE){c.h-=1}if(tinymce.isIE6){b="absolute;top:"+c.y}else{b="fixed;top:0"}n=a.add(a.doc.body,"div",{id:"mce_fullscreen_container",style:"position:"+b+";left:0;width:"+c.w+"px;height:"+c.h+"px;z-index:200000;"});a.add(n,"div",{id:"mce_fullscreen"});tinymce.each(d.settings,function(k,l){g[l]=k});g.id="mce_fullscreen";g.width=n.clientWidth;g.height=n.clientHeight-15;g.fullscreen_is_enabled=true;g.fullscreen_editor_id=d.id;g.theme_advanced_resizing=false;g.save_onsavecallback=function(){d.setContent(tinyMCE.get(g.id).getContent());d.execCommand("mceSave")};tinymce.each(d.getParam("fullscreen_settings"),function(m,l){g[l]=m});if(g.theme_advanced_toolbar_location==="external"){g.theme_advanced_toolbar_location="top"}f.fullscreenEditor=new tinymce.Editor("mce_fullscreen",g);f.fullscreenEditor.onInit.add(function(){f.fullscreenEditor.setContent(d.getContent());f.fullscreenEditor.focus()});f.fullscreenEditor.render();f.fullscreenElement=new tinymce.dom.Element("mce_fullscreen_container");f.fullscreenElement.update();f.resizeFunc=tinymce.dom.Event.add(a.win,"resize",function(){var o=tinymce.DOM.getViewPort(),l=f.fullscreenEditor,k,m;k=l.dom.getSize(l.getContainer().firstChild);m=l.dom.getSize(l.getContainer().getElementsByTagName("iframe")[0]);l.theme.resizeTo(o.w-k.w+m.w,o.h-k.h+m.h)})}});d.addButton("fullscreen",{title:"fullscreen.desc",cmd:"mceFullScreen"});d.onNodeChange.add(function(i,h){h.setActive("fullscreen",i.getParam("fullscreen_is_enabled"))})},getInfo:function(){return{longname:"Fullscreen",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/fullscreen",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("fullscreen",tinymce.plugins.FullScreenPlugin)})();webcit-8.24-dfsg.orig/tiny_mce/plugins/fullscreen/fullscreen.htm0000644000175000017500000000645412271477123024717 0ustar michaelmichael
    webcit-8.24-dfsg.orig/tiny_mce/plugins/print/0000755000175000017500000000000012271477123021024 5ustar michaelmichaelwebcit-8.24-dfsg.orig/tiny_mce/plugins/print/editor_plugin_src.js0000644000175000017500000000156112271477123025100 0ustar michaelmichael/** * editor_plugin_src.js * * Copyright 2009, Moxiecode Systems AB * Released under LGPL License. * * License: http://tinymce.moxiecode.com/license * Contributing: http://tinymce.moxiecode.com/contributing */ (function() { tinymce.create('tinymce.plugins.Print', { init : function(ed, url) { ed.addCommand('mcePrint', function() { ed.getWin().print(); }); ed.addButton('print', {title : 'print.print_desc', cmd : 'mcePrint'}); }, getInfo : function() { return { longname : 'Print', author : 'Moxiecode Systems AB', authorurl : 'http://tinymce.moxiecode.com', infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/print', version : tinymce.majorVersion + "." + tinymce.minorVersion }; } }); // Register plugin tinymce.PluginManager.add('print', tinymce.plugins.Print); })(); webcit-8.24-dfsg.orig/tiny_mce/plugins/print/editor_plugin.js0000644000175000017500000000075412271477123024234 0ustar michaelmichael(function(){tinymce.create("tinymce.plugins.Print",{init:function(a,b){a.addCommand("mcePrint",function(){a.getWin().print()});a.addButton("print",{title:"print.print_desc",cmd:"mcePrint"})},getInfo:function(){return{longname:"Print",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/print",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("print",tinymce.plugins.Print)})();webcit-8.24-dfsg.orig/tiny_mce/plugins/autoresize/0000755000175000017500000000000012271477123022062 5ustar michaelmichaelwebcit-8.24-dfsg.orig/tiny_mce/plugins/autoresize/editor_plugin_src.js0000644000175000017500000001044212271477123026134 0ustar michaelmichael/** * editor_plugin_src.js * * Copyright 2009, Moxiecode Systems AB * Released under LGPL License. * * License: http://tinymce.moxiecode.com/license * Contributing: http://tinymce.moxiecode.com/contributing */ (function() { /** * Auto Resize * * This plugin automatically resizes the content area to fit its content height. * It will retain a minimum height, which is the height of the content area when * it's initialized. */ tinymce.create('tinymce.plugins.AutoResizePlugin', { /** * Initializes the plugin, this will be executed after the plugin has been created. * This call is done before the editor instance has finished it's initialization so use the onInit event * of the editor instance to intercept that event. * * @param {tinymce.Editor} ed Editor instance that the plugin is initialized in. * @param {string} url Absolute URL to where the plugin is located. */ init : function(ed, url) { var t = this, oldSize = 0; if (ed.getParam('fullscreen_is_enabled')) return; /** * This method gets executed each time the editor needs to resize. */ function resize() { var d = ed.getDoc(), b = d.body, de = d.documentElement, DOM = tinymce.DOM, resizeHeight = t.autoresize_min_height, myHeight; // Get height differently depending on the browser used myHeight = tinymce.isIE ? b.scrollHeight : d.body.offsetHeight; // Don't make it smaller than the minimum height if (myHeight > t.autoresize_min_height) resizeHeight = myHeight; // If a maximum height has been defined don't exceed this height if (t.autoresize_max_height && myHeight > t.autoresize_max_height) { resizeHeight = t.autoresize_max_height; ed.getBody().style.overflowY = "auto"; } else ed.getBody().style.overflowY = "hidden"; // Resize content element if (resizeHeight !== oldSize) { DOM.setStyle(DOM.get(ed.id + '_ifr'), 'height', resizeHeight + 'px'); oldSize = resizeHeight; } // if we're throbbing, we'll re-throb to match the new size if (t.throbbing) { ed.setProgressState(false); ed.setProgressState(true); } }; t.editor = ed; // Define minimum height t.autoresize_min_height = parseInt( ed.getParam('autoresize_min_height', ed.getElement().offsetHeight) ); // Define maximum height t.autoresize_max_height = parseInt( ed.getParam('autoresize_max_height', 0) ); // Add padding at the bottom for better UX ed.onInit.add(function(ed){ ed.dom.setStyle(ed.getBody(), 'paddingBottom', ed.getParam('autoresize_bottom_margin', 50) + 'px'); }); // Add appropriate listeners for resizing content area ed.onChange.add(resize); ed.onSetContent.add(resize); ed.onPaste.add(resize); ed.onKeyUp.add(resize); ed.onPostRender.add(resize); if (ed.getParam('autoresize_on_init', true)) { // Things to do when the editor is ready ed.onInit.add(function(ed, l) { // Show throbber until content area is resized properly ed.setProgressState(true); t.throbbing = true; // Hide scrollbars ed.getBody().style.overflowY = "hidden"; }); ed.onLoadContent.add(function(ed, l) { resize(); // Because the content area resizes when its content CSS loads, // and we can't easily add a listener to its onload event, // we'll just trigger a resize after a short loading period setTimeout(function() { resize(); // Disable throbber ed.setProgressState(false); t.throbbing = false; }, 1250); }); } // Register the command so that it can be invoked by using tinyMCE.activeEditor.execCommand('mceExample'); ed.addCommand('mceAutoResize', resize); }, /** * Returns information about the plugin as a name/value array. * The current keys are longname, author, authorurl, infourl and version. * * @return {Object} Name/value array containing information about the plugin. */ getInfo : function() { return { longname : 'Auto Resize', author : 'Moxiecode Systems AB', authorurl : 'http://tinymce.moxiecode.com', infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/autoresize', version : tinymce.majorVersion + "." + tinymce.minorVersion }; } }); // Register plugin tinymce.PluginManager.add('autoresize', tinymce.plugins.AutoResizePlugin); })(); webcit-8.24-dfsg.orig/tiny_mce/plugins/autoresize/editor_plugin.js0000644000175000017500000000314712271477123025271 0ustar michaelmichael(function(){tinymce.create("tinymce.plugins.AutoResizePlugin",{init:function(a,c){var d=this,e=0;if(a.getParam("fullscreen_is_enabled")){return}function b(){var i=a.getDoc(),f=i.body,k=i.documentElement,h=tinymce.DOM,j=d.autoresize_min_height,g;g=tinymce.isIE?f.scrollHeight:i.body.offsetHeight;if(g>d.autoresize_min_height){j=g}if(d.autoresize_max_height&&g>d.autoresize_max_height){j=d.autoresize_max_height;a.getBody().style.overflowY="auto"}else{a.getBody().style.overflowY="hidden"}if(j!==e){h.setStyle(h.get(a.id+"_ifr"),"height",j+"px");e=j}if(d.throbbing){a.setProgressState(false);a.setProgressState(true)}}d.editor=a;d.autoresize_min_height=parseInt(a.getParam("autoresize_min_height",a.getElement().offsetHeight));d.autoresize_max_height=parseInt(a.getParam("autoresize_max_height",0));a.onInit.add(function(f){f.dom.setStyle(f.getBody(),"paddingBottom",f.getParam("autoresize_bottom_margin",50)+"px")});a.onChange.add(b);a.onSetContent.add(b);a.onPaste.add(b);a.onKeyUp.add(b);a.onPostRender.add(b);if(a.getParam("autoresize_on_init",true)){a.onInit.add(function(g,f){g.setProgressState(true);d.throbbing=true;g.getBody().style.overflowY="hidden"});a.onLoadContent.add(function(g,f){b();setTimeout(function(){b();g.setProgressState(false);d.throbbing=false},1250)})}a.addCommand("mceAutoResize",b)},getInfo:function(){return{longname:"Auto Resize",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/autoresize",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("autoresize",tinymce.plugins.AutoResizePlugin)})();webcit-8.24-dfsg.orig/tiny_mce/plugins/noneditable/0000755000175000017500000000000012271477123022154 5ustar michaelmichaelwebcit-8.24-dfsg.orig/tiny_mce/plugins/noneditable/editor_plugin_src.js0000644000175000017500000000464512271477123026236 0ustar michaelmichael/** * editor_plugin_src.js * * Copyright 2009, Moxiecode Systems AB * Released under LGPL License. * * License: http://tinymce.moxiecode.com/license * Contributing: http://tinymce.moxiecode.com/contributing */ (function() { var Event = tinymce.dom.Event; tinymce.create('tinymce.plugins.NonEditablePlugin', { init : function(ed, url) { var t = this, editClass, nonEditClass, state; t.editor = ed; editClass = ed.getParam("noneditable_editable_class", "mceEditable"); nonEditClass = ed.getParam("noneditable_noneditable_class", "mceNonEditable"); ed.onNodeChange.addToTop(function(ed, cm, n) { var sc, ec; // Block if start or end is inside a non editable element sc = ed.dom.getParent(ed.selection.getStart(), function(n) { return ed.dom.hasClass(n, nonEditClass); }); ec = ed.dom.getParent(ed.selection.getEnd(), function(n) { return ed.dom.hasClass(n, nonEditClass); }); // Block or unblock if (sc || ec) { state = 1; t._setDisabled(1); return false; } else if (state == 1) { t._setDisabled(0); state = 0; } }); }, getInfo : function() { return { longname : 'Non editable elements', author : 'Moxiecode Systems AB', authorurl : 'http://tinymce.moxiecode.com', infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/noneditable', version : tinymce.majorVersion + "." + tinymce.minorVersion }; }, _block : function(ed, e) { var k = e.keyCode; // Don't block arrow keys, pg up/down, and F1-F12 if ((k > 32 && k < 41) || (k > 111 && k < 124)) return; return Event.cancel(e); }, _setDisabled : function(s) { var t = this, ed = t.editor; tinymce.each(ed.controlManager.controls, function(c) { c.setDisabled(s); }); if (s !== t.disabled) { if (s) { ed.onKeyDown.addToTop(t._block); ed.onKeyPress.addToTop(t._block); ed.onKeyUp.addToTop(t._block); ed.onPaste.addToTop(t._block); ed.onContextMenu.addToTop(t._block); } else { ed.onKeyDown.remove(t._block); ed.onKeyPress.remove(t._block); ed.onKeyUp.remove(t._block); ed.onPaste.remove(t._block); ed.onContextMenu.remove(t._block); } t.disabled = s; } } }); // Register plugin tinymce.PluginManager.add('noneditable', tinymce.plugins.NonEditablePlugin); })();webcit-8.24-dfsg.orig/tiny_mce/plugins/noneditable/editor_plugin.js0000644000175000017500000000265412271477123025365 0ustar michaelmichael(function(){var a=tinymce.dom.Event;tinymce.create("tinymce.plugins.NonEditablePlugin",{init:function(d,e){var f=this,c,b,g;f.editor=d;c=d.getParam("noneditable_editable_class","mceEditable");b=d.getParam("noneditable_noneditable_class","mceNonEditable");d.onNodeChange.addToTop(function(i,h,l){var k,j;k=i.dom.getParent(i.selection.getStart(),function(m){return i.dom.hasClass(m,b)});j=i.dom.getParent(i.selection.getEnd(),function(m){return i.dom.hasClass(m,b)});if(k||j){g=1;f._setDisabled(1);return false}else{if(g==1){f._setDisabled(0);g=0}}})},getInfo:function(){return{longname:"Non editable elements",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/noneditable",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_block:function(c,d){var b=d.keyCode;if((b>32&&b<41)||(b>111&&b<124)){return}return a.cancel(d)},_setDisabled:function(d){var c=this,b=c.editor;tinymce.each(b.controlManager.controls,function(e){e.setDisabled(d)});if(d!==c.disabled){if(d){b.onKeyDown.addToTop(c._block);b.onKeyPress.addToTop(c._block);b.onKeyUp.addToTop(c._block);b.onPaste.addToTop(c._block);b.onContextMenu.addToTop(c._block)}else{b.onKeyDown.remove(c._block);b.onKeyPress.remove(c._block);b.onKeyUp.remove(c._block);b.onPaste.remove(c._block);b.onContextMenu.remove(c._block)}c.disabled=d}}});tinymce.PluginManager.add("noneditable",tinymce.plugins.NonEditablePlugin)})();webcit-8.24-dfsg.orig/tiny_mce/plugins/paste/0000755000175000017500000000000012271477123021004 5ustar michaelmichaelwebcit-8.24-dfsg.orig/tiny_mce/plugins/paste/editor_plugin_src.js0000644000175000017500000007345712271477123025075 0ustar michaelmichael/** * editor_plugin_src.js * * Copyright 2009, Moxiecode Systems AB * Released under LGPL License. * * License: http://tinymce.moxiecode.com/license * Contributing: http://tinymce.moxiecode.com/contributing */ (function() { var each = tinymce.each, defs = { paste_auto_cleanup_on_paste : true, paste_enable_default_filters : true, paste_block_drop : false, paste_retain_style_properties : "none", paste_strip_class_attributes : "mso", paste_remove_spans : false, paste_remove_styles : false, paste_remove_styles_if_webkit : true, paste_convert_middot_lists : true, paste_convert_headers_to_strong : false, paste_dialog_width : "450", paste_dialog_height : "400", paste_text_use_dialog : false, paste_text_sticky : false, paste_text_sticky_default : false, paste_text_notifyalways : false, paste_text_linebreaktype : "p", paste_text_replacements : [ [/\u2026/g, "..."], [/[\x93\x94\u201c\u201d]/g, '"'], [/[\x60\x91\x92\u2018\u2019]/g, "'"] ] }; function getParam(ed, name) { return ed.getParam(name, defs[name]); } tinymce.create('tinymce.plugins.PastePlugin', { init : function(ed, url) { var t = this; t.editor = ed; t.url = url; // Setup plugin events t.onPreProcess = new tinymce.util.Dispatcher(t); t.onPostProcess = new tinymce.util.Dispatcher(t); // Register default handlers t.onPreProcess.add(t._preProcess); t.onPostProcess.add(t._postProcess); // Register optional preprocess handler t.onPreProcess.add(function(pl, o) { ed.execCallback('paste_preprocess', pl, o); }); // Register optional postprocess t.onPostProcess.add(function(pl, o) { ed.execCallback('paste_postprocess', pl, o); }); ed.onKeyDown.addToTop(function(ed, e) { // Block ctrl+v from adding an undo level since the default logic in tinymce.Editor will add that if (((tinymce.isMac ? e.metaKey : e.ctrlKey) && e.keyCode == 86) || (e.shiftKey && e.keyCode == 45)) return false; // Stop other listeners }); // Initialize plain text flag ed.pasteAsPlainText = getParam(ed, 'paste_text_sticky_default'); // This function executes the process handlers and inserts the contents // force_rich overrides plain text mode set by user, important for pasting with execCommand function process(o, force_rich) { var dom = ed.dom, rng; // Execute pre process handlers t.onPreProcess.dispatch(t, o); // Create DOM structure o.node = dom.create('div', 0, o.content); // If pasting inside the same element and the contents is only one block // remove the block and keep the text since Firefox will copy parts of pre and h1-h6 as a pre element if (tinymce.isGecko) { rng = ed.selection.getRng(true); if (rng.startContainer == rng.endContainer && rng.startContainer.nodeType == 3) { // Is only one block node and it doesn't contain word stuff if (o.node.childNodes.length === 1 && /^(p|h[1-6]|pre)$/i.test(o.node.firstChild.nodeName) && o.content.indexOf('__MCE_ITEM__') === -1) dom.remove(o.node.firstChild, true); } } // Execute post process handlers t.onPostProcess.dispatch(t, o); // Serialize content o.content = ed.serializer.serialize(o.node, {getInner : 1, forced_root_block : ''}); // Plain text option active? if ((!force_rich) && (ed.pasteAsPlainText)) { t._insertPlainText(o.content); if (!getParam(ed, "paste_text_sticky")) { ed.pasteAsPlainText = false; ed.controlManager.setActive("pastetext", false); } } else { t._insert(o.content); } } // Add command for external usage ed.addCommand('mceInsertClipboardContent', function(u, o) { process(o, true); }); if (!getParam(ed, "paste_text_use_dialog")) { ed.addCommand('mcePasteText', function(u, v) { var cookie = tinymce.util.Cookie; ed.pasteAsPlainText = !ed.pasteAsPlainText; ed.controlManager.setActive('pastetext', ed.pasteAsPlainText); if ((ed.pasteAsPlainText) && (!cookie.get("tinymcePasteText"))) { if (getParam(ed, "paste_text_sticky")) { ed.windowManager.alert(ed.translate('paste.plaintext_mode_sticky')); } else { ed.windowManager.alert(ed.translate('paste.plaintext_mode')); } if (!getParam(ed, "paste_text_notifyalways")) { cookie.set("tinymcePasteText", "1", new Date(new Date().getFullYear() + 1, 12, 31)) } } }); } ed.addButton('pastetext', {title: 'paste.paste_text_desc', cmd: 'mcePasteText'}); ed.addButton('selectall', {title: 'paste.selectall_desc', cmd: 'selectall'}); // This function grabs the contents from the clipboard by adding a // hidden div and placing the caret inside it and after the browser paste // is done it grabs that contents and processes that function grabContent(e) { var n, or, rng, oldRng, sel = ed.selection, dom = ed.dom, body = ed.getBody(), posY, textContent; // Check if browser supports direct plaintext access if (e.clipboardData || dom.doc.dataTransfer) { textContent = (e.clipboardData || dom.doc.dataTransfer).getData('Text'); if (ed.pasteAsPlainText) { e.preventDefault(); process({content : dom.encode(textContent).replace(/\r?\n/g, '
    ')}); return; } } if (dom.get('_mcePaste')) return; // Create container to paste into n = dom.add(body, 'div', {id : '_mcePaste', 'class' : 'mcePaste', 'data-mce-bogus' : '1'}, '\uFEFF\uFEFF'); // If contentEditable mode we need to find out the position of the closest element if (body != ed.getDoc().body) posY = dom.getPos(ed.selection.getStart(), body).y; else posY = body.scrollTop + dom.getViewPort(ed.getWin()).y; // Styles needs to be applied after the element is added to the document since WebKit will otherwise remove all styles // If also needs to be in view on IE or the paste would fail dom.setStyles(n, { position : 'absolute', left : tinymce.isGecko ? -40 : 0, // Need to move it out of site on Gecko since it will othewise display a ghost resize rect for the div top : posY - 25, width : 1, height : 1, overflow : 'hidden' }); if (tinymce.isIE) { // Store away the old range oldRng = sel.getRng(); // Select the container rng = dom.doc.body.createTextRange(); rng.moveToElementText(n); rng.execCommand('Paste'); // Remove container dom.remove(n); // Check if the contents was changed, if it wasn't then clipboard extraction failed probably due // to IE security settings so we pass the junk though better than nothing right if (n.innerHTML === '\uFEFF\uFEFF') { ed.execCommand('mcePasteWord'); e.preventDefault(); return; } // Restore the old range and clear the contents before pasting sel.setRng(oldRng); sel.setContent(''); // For some odd reason we need to detach the the mceInsertContent call from the paste event // It's like IE has a reference to the parent element that you paste in and the selection gets messed up // when it tries to restore the selection setTimeout(function() { // Process contents process({content : n.innerHTML}); }, 0); // Block the real paste event return tinymce.dom.Event.cancel(e); } else { function block(e) { e.preventDefault(); }; // Block mousedown and click to prevent selection change dom.bind(ed.getDoc(), 'mousedown', block); dom.bind(ed.getDoc(), 'keydown', block); or = ed.selection.getRng(); // Move select contents inside DIV n = n.firstChild; rng = ed.getDoc().createRange(); rng.setStart(n, 0); rng.setEnd(n, 2); sel.setRng(rng); // Wait a while and grab the pasted contents window.setTimeout(function() { var h = '', nl; // Paste divs duplicated in paste divs seems to happen when you paste plain text so lets first look for that broken behavior in WebKit if (!dom.select('div.mcePaste > div.mcePaste').length) { nl = dom.select('div.mcePaste'); // WebKit will split the div into multiple ones so this will loop through then all and join them to get the whole HTML string each(nl, function(n) { var child = n.firstChild; // WebKit inserts a DIV container with lots of odd styles if (child && child.nodeName == 'DIV' && child.style.marginTop && child.style.backgroundColor) { dom.remove(child, 1); } // Remove apply style spans each(dom.select('span.Apple-style-span', n), function(n) { dom.remove(n, 1); }); // Remove bogus br elements each(dom.select('br[data-mce-bogus]', n), function(n) { dom.remove(n); }); // WebKit will make a copy of the DIV for each line of plain text pasted and insert them into the DIV if (n.parentNode.className != 'mcePaste') h += n.innerHTML; }); } else { // Found WebKit weirdness so force the content into paragraphs this seems to happen when you paste plain text from Nodepad etc // So this logic will replace double enter with paragraphs and single enter with br so it kind of looks the same h = '

    ' + dom.encode(textContent).replace(/\r?\n\r?\n/g, '

    ').replace(/\r?\n/g, '
    ') + '

    '; } // Remove the nodes each(dom.select('div.mcePaste'), function(n) { dom.remove(n); }); // Restore the old selection if (or) sel.setRng(or); process({content : h}); // Unblock events ones we got the contents dom.unbind(ed.getDoc(), 'mousedown', block); dom.unbind(ed.getDoc(), 'keydown', block); }, 0); } } // Check if we should use the new auto process method if (getParam(ed, "paste_auto_cleanup_on_paste")) { // Is it's Opera or older FF use key handler if (tinymce.isOpera || /Firefox\/2/.test(navigator.userAgent)) { ed.onKeyDown.addToTop(function(ed, e) { if (((tinymce.isMac ? e.metaKey : e.ctrlKey) && e.keyCode == 86) || (e.shiftKey && e.keyCode == 45)) grabContent(e); }); } else { // Grab contents on paste event on Gecko and WebKit ed.onPaste.addToTop(function(ed, e) { return grabContent(e); }); } } ed.onInit.add(function() { ed.controlManager.setActive("pastetext", ed.pasteAsPlainText); // Block all drag/drop events if (getParam(ed, "paste_block_drop")) { ed.dom.bind(ed.getBody(), ['dragend', 'dragover', 'draggesture', 'dragdrop', 'drop', 'drag'], function(e) { e.preventDefault(); e.stopPropagation(); return false; }); } }); // Add legacy support t._legacySupport(); }, getInfo : function() { return { longname : 'Paste text/word', author : 'Moxiecode Systems AB', authorurl : 'http://tinymce.moxiecode.com', infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/paste', version : tinymce.majorVersion + "." + tinymce.minorVersion }; }, _preProcess : function(pl, o) { var ed = this.editor, h = o.content, grep = tinymce.grep, explode = tinymce.explode, trim = tinymce.trim, len, stripClass; //console.log('Before preprocess:' + o.content); function process(items) { each(items, function(v) { // Remove or replace if (v.constructor == RegExp) h = h.replace(v, ''); else h = h.replace(v[0], v[1]); }); } if (ed.settings.paste_enable_default_filters == false) { return; } // IE9 adds BRs before/after block elements when contents is pasted from word or for example another browser if (tinymce.isIE && document.documentMode >= 9) { // IE9 adds BRs before/after block elements when contents is pasted from word or for example another browser process([[/(?:
     [\s\r\n]+|
    )*(<\/?(h[1-6r]|p|div|address|pre|form|table|tbody|thead|tfoot|th|tr|td|li|ol|ul|caption|blockquote|center|dl|dt|dd|dir|fieldset)[^>]*>)(?:
     [\s\r\n]+|
    )*/g, '$1']]); // IE9 also adds an extra BR element for each soft-linefeed and it also adds a BR for each word wrap break process([ [/

    /g, '

    '], // Replace multiple BR elements with uppercase BR to keep them intact [/
    /g, ' '], // Replace single br elements with space since they are word wrap BR:s [/

    /g, '
    '] // Replace back the double brs but into a single BR ]); } // Detect Word content and process it more aggressive if (/class="?Mso|style="[^"]*\bmso-|w:WordDocument/i.test(h) || o.wordContent) { o.wordContent = true; // Mark the pasted contents as word specific content //console.log('Word contents detected.'); // Process away some basic content process([ /^\s*( )+/gi, //   entities at the start of contents /( |]*>)+\s*$/gi //   entities at the end of contents ]); if (getParam(ed, "paste_convert_headers_to_strong")) { h = h.replace(/

    ]*class="?MsoHeading"?[^>]*>(.*?)<\/p>/gi, "

    $1

    "); } if (getParam(ed, "paste_convert_middot_lists")) { process([ [//gi, '$&__MCE_ITEM__'], // Convert supportLists to a list item marker [/(]+(?:mso-list:|:\s*symbol)[^>]+>)/gi, '$1__MCE_ITEM__'], // Convert mso-list and symbol spans to item markers [/(]+(?:MsoListParagraph)[^>]+>)/gi, '$1__MCE_ITEM__'] // Convert mso-list and symbol paragraphs to item markers (FF) ]); } process([ // Word comments like conditional comments etc //gi, // Remove comments, scripts (e.g., msoShowComment), XML tag, VML content, MS Office namespaced tags, and a few other tags /<(!|script[^>]*>.*?<\/script(?=[>\s])|\/?(\?xml(:\w+)?|img|meta|link|style|\w:\w+)(?=[\s\/>]))[^>]*>/gi, // Convert into for line-though [/<(\/?)s>/gi, "<$1strike>"], // Replace nsbp entites to char since it's easier to handle [/ /gi, "\u00a0"] ]); // Remove bad attributes, with or without quotes, ensuring that attribute text is really inside a tag. // If JavaScript had a RegExp look-behind, we could have integrated this with the last process() array and got rid of the loop. But alas, it does not, so we cannot. do { len = h.length; h = h.replace(/(<[a-z][^>]*\s)(?:id|name|language|type|on\w+|\w+:\w+)=(?:"[^"]*"|\w+)\s?/gi, "$1"); } while (len != h.length); // Remove all spans if no styles is to be retained if (getParam(ed, "paste_retain_style_properties").replace(/^none$/i, "").length == 0) { h = h.replace(/<\/?span[^>]*>/gi, ""); } else { // We're keeping styles, so at least clean them up. // CSS Reference: http://msdn.microsoft.com/en-us/library/aa155477.aspx process([ // Convert ___ to string of alternating breaking/non-breaking spaces of same length [/([\s\u00a0]*)<\/span>/gi, function(str, spaces) { return (spaces.length > 0)? spaces.replace(/./, " ").slice(Math.floor(spaces.length/2)).split("").join("\u00a0") : ""; } ], // Examine all styles: delete junk, transform some, and keep the rest [/(<[a-z][^>]*)\sstyle="([^"]*)"/gi, function(str, tag, style) { var n = [], i = 0, s = explode(trim(style).replace(/"/gi, "'"), ";"); // Examine each style definition within the tag's style attribute each(s, function(v) { var name, value, parts = explode(v, ":"); function ensureUnits(v) { return v + ((v !== "0") && (/\d$/.test(v)))? "px" : ""; } if (parts.length == 2) { name = parts[0].toLowerCase(); value = parts[1].toLowerCase(); // Translate certain MS Office styles into their CSS equivalents switch (name) { case "mso-padding-alt": case "mso-padding-top-alt": case "mso-padding-right-alt": case "mso-padding-bottom-alt": case "mso-padding-left-alt": case "mso-margin-alt": case "mso-margin-top-alt": case "mso-margin-right-alt": case "mso-margin-bottom-alt": case "mso-margin-left-alt": case "mso-table-layout-alt": case "mso-height": case "mso-width": case "mso-vertical-align-alt": n[i++] = name.replace(/^mso-|-alt$/g, "") + ":" + ensureUnits(value); return; case "horiz-align": n[i++] = "text-align:" + value; return; case "vert-align": n[i++] = "vertical-align:" + value; return; case "font-color": case "mso-foreground": n[i++] = "color:" + value; return; case "mso-background": case "mso-highlight": n[i++] = "background:" + value; return; case "mso-default-height": n[i++] = "min-height:" + ensureUnits(value); return; case "mso-default-width": n[i++] = "min-width:" + ensureUnits(value); return; case "mso-padding-between-alt": n[i++] = "border-collapse:separate;border-spacing:" + ensureUnits(value); return; case "text-line-through": if ((value == "single") || (value == "double")) { n[i++] = "text-decoration:line-through"; } return; case "mso-zero-height": if (value == "yes") { n[i++] = "display:none"; } return; } // Eliminate all MS Office style definitions that have no CSS equivalent by examining the first characters in the name if (/^(mso|column|font-emph|lang|layout|line-break|list-image|nav|panose|punct|row|ruby|sep|size|src|tab-|table-border|text-(?!align|decor|indent|trans)|top-bar|version|vnd|word-break)/.test(name)) { return; } // If it reached this point, it must be a valid CSS style n[i++] = name + ":" + parts[1]; // Lower-case name, but keep value case } }); // If style attribute contained any valid styles the re-write it; otherwise delete style attribute. if (i > 0) { return tag + ' style="' + n.join(';') + '"'; } else { return tag; } } ] ]); } } // Replace headers with if (getParam(ed, "paste_convert_headers_to_strong")) { process([ [/]*>/gi, "

    "], [/<\/h[1-6][^>]*>/gi, "

    "] ]); } process([ // Copy paste from Java like Open Office will produce this junk on FF [/Version:[\d.]+\nStartHTML:\d+\nEndHTML:\d+\nStartFragment:\d+\nEndFragment:\d+/gi, ''] ]); // Class attribute options are: leave all as-is ("none"), remove all ("all"), or remove only those starting with mso ("mso"). // Note:- paste_strip_class_attributes: "none", verify_css_classes: true is also a good variation. stripClass = getParam(ed, "paste_strip_class_attributes"); if (stripClass !== "none") { function removeClasses(match, g1) { if (stripClass === "all") return ''; var cls = grep(explode(g1.replace(/^(["'])(.*)\1$/, "$2"), " "), function(v) { return (/^(?!mso)/i.test(v)); } ); return cls.length ? ' class="' + cls.join(" ") + '"' : ''; }; h = h.replace(/ class="([^"]+)"/gi, removeClasses); h = h.replace(/ class=([\-\w]+)/gi, removeClasses); } // Remove spans option if (getParam(ed, "paste_remove_spans")) { h = h.replace(/<\/?span[^>]*>/gi, ""); } //console.log('After preprocess:' + h); o.content = h; }, /** * Various post process items. */ _postProcess : function(pl, o) { var t = this, ed = t.editor, dom = ed.dom, styleProps; if (ed.settings.paste_enable_default_filters == false) { return; } if (o.wordContent) { // Remove named anchors or TOC links each(dom.select('a', o.node), function(a) { if (!a.href || a.href.indexOf('#_Toc') != -1) dom.remove(a, 1); }); if (getParam(ed, "paste_convert_middot_lists")) { t._convertLists(pl, o); } // Process styles styleProps = getParam(ed, "paste_retain_style_properties"); // retained properties // Process only if a string was specified and not equal to "all" or "*" if ((tinymce.is(styleProps, "string")) && (styleProps !== "all") && (styleProps !== "*")) { styleProps = tinymce.explode(styleProps.replace(/^none$/i, "")); // Retains some style properties each(dom.select('*', o.node), function(el) { var newStyle = {}, npc = 0, i, sp, sv; // Store a subset of the existing styles if (styleProps) { for (i = 0; i < styleProps.length; i++) { sp = styleProps[i]; sv = dom.getStyle(el, sp); if (sv) { newStyle[sp] = sv; npc++; } } } // Remove all of the existing styles dom.setAttrib(el, 'style', ''); if (styleProps && npc > 0) dom.setStyles(el, newStyle); // Add back the stored subset of styles else // Remove empty span tags that do not have class attributes if (el.nodeName == 'SPAN' && !el.className) dom.remove(el, true); }); } } // Remove all style information or only specifically on WebKit to avoid the style bug on that browser if (getParam(ed, "paste_remove_styles") || (getParam(ed, "paste_remove_styles_if_webkit") && tinymce.isWebKit)) { each(dom.select('*[style]', o.node), function(el) { el.removeAttribute('style'); el.removeAttribute('data-mce-style'); }); } else { if (tinymce.isWebKit) { // We need to compress the styles on WebKit since if you paste it will become // Removing the mce_style that contains the real value will force the Serializer engine to compress the styles each(dom.select('*', o.node), function(el) { el.removeAttribute('data-mce-style'); }); } } }, /** * Converts the most common bullet and number formats in Office into a real semantic UL/LI list. */ _convertLists : function(pl, o) { var dom = pl.editor.dom, listElm, li, lastMargin = -1, margin, levels = [], lastType, html; // Convert middot lists into real semantic lists each(dom.select('p', o.node), function(p) { var sib, val = '', type, html, idx, parents; // Get text node value at beginning of paragraph for (sib = p.firstChild; sib && sib.nodeType == 3; sib = sib.nextSibling) val += sib.nodeValue; val = p.innerHTML.replace(/<\/?\w+[^>]*>/gi, '').replace(/ /g, '\u00a0'); // Detect unordered lists look for bullets if (/^(__MCE_ITEM__)+[\u2022\u00b7\u00a7\u00d8o\u25CF]\s*\u00a0*/.test(val)) type = 'ul'; // Detect ordered lists 1., a. or ixv. if (/^__MCE_ITEM__\s*\w+\.\s*\u00a0+/.test(val)) type = 'ol'; // Check if node value matches the list pattern: o   if (type) { margin = parseFloat(p.style.marginLeft || 0); if (margin > lastMargin) levels.push(margin); if (!listElm || type != lastType) { listElm = dom.create(type); dom.insertAfter(listElm, p); } else { // Nested list element if (margin > lastMargin) { listElm = li.appendChild(dom.create(type)); } else if (margin < lastMargin) { // Find parent level based on margin value idx = tinymce.inArray(levels, margin); parents = dom.getParents(listElm.parentNode, type); listElm = parents[parents.length - 1 - idx] || listElm; } } // Remove middot or number spans if they exists each(dom.select('span', p), function(span) { var html = span.innerHTML.replace(/<\/?\w+[^>]*>/gi, ''); // Remove span with the middot or the number if (type == 'ul' && /^__MCE_ITEM__[\u2022\u00b7\u00a7\u00d8o\u25CF]/.test(html)) dom.remove(span); else if (/^__MCE_ITEM__[\s\S]*\w+\.( |\u00a0)*\s*/.test(html)) dom.remove(span); }); html = p.innerHTML; // Remove middot/list items if (type == 'ul') html = p.innerHTML.replace(/__MCE_ITEM__/g, '').replace(/^[\u2022\u00b7\u00a7\u00d8o\u25CF]\s*( |\u00a0)+\s*/, ''); else html = p.innerHTML.replace(/__MCE_ITEM__/g, '').replace(/^\s*\w+\.( |\u00a0)+\s*/, ''); // Create li and add paragraph data into the new li li = listElm.appendChild(dom.create('li', 0, html)); dom.remove(p); lastMargin = margin; lastType = type; } else listElm = lastMargin = 0; // End list element }); // Remove any left over makers html = o.node.innerHTML; if (html.indexOf('__MCE_ITEM__') != -1) o.node.innerHTML = html.replace(/__MCE_ITEM__/g, ''); }, /** * Inserts the specified contents at the caret position. */ _insert : function(h, skip_undo) { var ed = this.editor, r = ed.selection.getRng(); // First delete the contents seems to work better on WebKit when the selection spans multiple list items or multiple table cells. if (!ed.selection.isCollapsed() && r.startContainer != r.endContainer) ed.getDoc().execCommand('Delete', false, null); ed.execCommand('mceInsertContent', false, h, {skip_undo : skip_undo}); }, /** * Instead of the old plain text method which tried to re-create a paste operation, the * new approach adds a plain text mode toggle switch that changes the behavior of paste. * This function is passed the same input that the regular paste plugin produces. * It performs additional scrubbing and produces (and inserts) the plain text. * This approach leverages all of the great existing functionality in the paste * plugin, and requires minimal changes to add the new functionality. * Speednet - June 2009 */ _insertPlainText : function(content) { var ed = this.editor, linebr = getParam(ed, "paste_text_linebreaktype"), rl = getParam(ed, "paste_text_replacements"), is = tinymce.is; function process(items) { each(items, function(v) { if (v.constructor == RegExp) content = content.replace(v, ""); else content = content.replace(v[0], v[1]); }); }; if ((typeof(content) === "string") && (content.length > 0)) { // If HTML content with line-breaking tags, then remove all cr/lf chars because only tags will break a line if (/<(?:p|br|h[1-6]|ul|ol|dl|table|t[rdh]|div|blockquote|fieldset|pre|address|center)[^>]*>/i.test(content)) { process([ /[\n\r]+/g ]); } else { // Otherwise just get rid of carriage returns (only need linefeeds) process([ /\r+/g ]); } process([ [/<\/(?:p|h[1-6]|ul|ol|dl|table|div|blockquote|fieldset|pre|address|center)>/gi, "\n\n"], // Block tags get a blank line after them [/]*>|<\/tr>/gi, "\n"], // Single linebreak for
    tags and table rows [/<\/t[dh]>\s*]*>/gi, "\t"], // Table cells get tabs betweem them /<[a-z!\/?][^>]*>/gi, // Delete all remaining tags [/ /gi, " "], // Convert non-break spaces to regular spaces (remember, *plain text*) [/(?:(?!\n)\s)*(\n+)(?:(?!\n)\s)*/gi, "$1"],// Cool little RegExp deletes whitespace around linebreak chars. [/\n{3,}/g, "\n\n"] // Max. 2 consecutive linebreaks ]); content = ed.dom.decode(tinymce.html.Entities.encodeRaw(content)); // Perform default or custom replacements if (is(rl, "array")) { process(rl); } else if (is(rl, "string")) { process(new RegExp(rl, "gi")); } // Treat paragraphs as specified in the config if (linebr == "none") { process([ [/\n+/g, " "] ]); } else if (linebr == "br") { process([ [/\n/g, "
    "] ]); } else { process([ [/\n\n/g, "

    "], [/^(.*<\/p>)(

    )$/, '

    $1'], [/\n/g, "
    "] ]); } ed.execCommand('mceInsertContent', false, content); } }, /** * This method will open the old style paste dialogs. Some users might want the old behavior but still use the new cleanup engine. */ _legacySupport : function() { var t = this, ed = t.editor; // Register command(s) for backwards compatibility ed.addCommand("mcePasteWord", function() { ed.windowManager.open({ file: t.url + "/pasteword.htm", width: parseInt(getParam(ed, "paste_dialog_width")), height: parseInt(getParam(ed, "paste_dialog_height")), inline: 1 }); }); if (getParam(ed, "paste_text_use_dialog")) { ed.addCommand("mcePasteText", function() { ed.windowManager.open({ file : t.url + "/pastetext.htm", width: parseInt(getParam(ed, "paste_dialog_width")), height: parseInt(getParam(ed, "paste_dialog_height")), inline : 1 }); }); } // Register button for backwards compatibility ed.addButton("pasteword", {title : "paste.paste_word_desc", cmd : "mcePasteWord"}); } }); // Register plugin tinymce.PluginManager.add("paste", tinymce.plugins.PastePlugin); })(); webcit-8.24-dfsg.orig/tiny_mce/plugins/paste/pasteword.htm0000644000175000017500000000141712271477123023531 0ustar michaelmichael {#paste.paste_word_desc}

    {#paste.paste_word_desc}
    {#paste_dlg.word_title}
    webcit-8.24-dfsg.orig/tiny_mce/plugins/paste/langs/0000755000175000017500000000000012271477123022110 5ustar michaelmichaelwebcit-8.24-dfsg.orig/tiny_mce/plugins/paste/langs/bg_dlg.js0000644000175000017500000000163312271477123023667 0ustar michaelmichaeltinyMCE.addI18n('bg.paste_dlg',{"word_title":"\u0418\u0437\u043f\u043e\u043b\u0437\u0432\u0430\u0439\u0442\u0435 CTRL V \u043e\u0442 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u0430\u0442\u0430, \u0437\u0430 \u0434\u0430 \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u0435 \u0442\u0435\u043a\u0441\u0442\u0430 \u0432 \u043f\u0440\u043e\u0437\u043e\u0440\u0435\u0446\u0430.","text_linebreaks":"\u0417\u0430\u043f\u0430\u0437\u0438 \u0437\u043d\u0430\u0446\u0438\u0442\u0435 \u0437\u0430 \u043d\u043e\u0432\u0438 \u0440\u0435\u0434\u043e\u0432\u0435","text_title":"\u0418\u0437\u043f\u043e\u043b\u0437\u0432\u0430\u0439\u0442\u0435 CTRL V \u043d\u0430 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u0430\u0442\u0430, \u0437\u0430 \u0434\u0430 \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u0435 \u0442\u0435\u043a\u0441\u0442\u0430 \u0432 \u043f\u0440\u043e\u0437\u043e\u0440\u0435\u0446\u0430."});webcit-8.24-dfsg.orig/tiny_mce/plugins/paste/langs/fr_dlg.js0000644000175000017500000000042412271477123023703 0ustar michaelmichaeltinyMCE.addI18n('fr.paste_dlg',{"word_title":"Utilisez CTRL+V sur votre clavier pour coller le texte dans la fen\u00eatre.","text_linebreaks":"Conserver les retours \u00e0 la ligne","text_title":"Utilisez CTRL+V sur votre clavier pour coller le texte dans la fen\u00eatre."});webcit-8.24-dfsg.orig/tiny_mce/plugins/paste/langs/zh-cn_dlg.js0000644000175000017500000000040212271477123024307 0ustar michaelmichaeltinyMCE.addI18n('zh-cn.paste_dlg',{"word_title":"\u4f7f\u7528CTRL V\u7c98\u8d34\u6587\u672c\u5230\u7a97\u53e3\u4e2d\u3002","text_linebreaks":"\u4fdd\u7559\u65ad\u884c","text_title":"\u4f7f\u7528CTRL V\u7c98\u8d34\u6587\u672c\u5230\u7a97\u53e3\u4e2d\u3002"});webcit-8.24-dfsg.orig/tiny_mce/plugins/paste/langs/de_dlg.js0000644000175000017500000000040612271477123023664 0ustar michaelmichaeltinyMCE.addI18n('de.paste_dlg',{"word_title":"Dr\u00fccken Sie auf Ihrer Tastatur Strg+V, um den Text einzuf\u00fcgen.","text_linebreaks":"Zeilenumbr\u00fcche beibehalten","text_title":"Dr\u00fccken Sie auf Ihrer Tastatur Strg+V, um den Text einzuf\u00fcgen."});webcit-8.24-dfsg.orig/tiny_mce/plugins/paste/langs/fi_dlg.js0000644000175000017500000000036512271477123023676 0ustar michaelmichaeltinyMCE.addI18n('fi.paste_dlg',{"word_title":"Paina Ctrl+V liitt\u00e4\u00e4ksesi sis\u00e4ll\u00f6n ikkunaan.","text_linebreaks":"S\u00e4ilyt\u00e4 rivinvaihdot","text_title":"Paina Ctrl+V liitt\u00e4\u00e4ksesi sis\u00e4ll\u00f6n ikkunaan."});webcit-8.24-dfsg.orig/tiny_mce/plugins/paste/langs/et_dlg.js0000644000175000017500000000034312271477123023704 0ustar michaelmichaeltinyMCE.addI18n('et.paste_dlg',{"word_title":"Vajuta CTRL+V oma klaviatuuril teksti aknasse kleepimiseks.","text_linebreaks":"J\u00e4ta reavahetused","text_title":"Vajuta CTRL+V oma klaviatuuril teksti aknasse kleepimiseks."});webcit-8.24-dfsg.orig/tiny_mce/plugins/paste/langs/es_dlg.js0000644000175000017500000000033412271477123023703 0ustar michaelmichaeltinyMCE.addI18n('es.paste_dlg',{"word_title":"Use CTRL+V en su teclado para pegar el texto en la ventana.","text_linebreaks":"Keep linebreaks","text_title":"Use CTRL+V en su teclado para pegar el texto en la ventana."});webcit-8.24-dfsg.orig/tiny_mce/plugins/paste/langs/da_dlg.js0000644000175000017500000000034312271477123023660 0ustar michaelmichaeltinyMCE.addI18n('da.paste_dlg',{"word_title":"Anvend CTRL+V p\u00e5 tastaturet for at inds\u00e6tte teksten.","text_linebreaks":"Bevar linieskift","text_title":"Anvend CTRL+V p\u00e5 tastaturet for at inds\u00e6tte teksten."});webcit-8.24-dfsg.orig/tiny_mce/plugins/paste/langs/el_dlg.js0000644000175000017500000000153012271477123023673 0ustar michaelmichaeltinyMCE.addI18n('el.paste_dlg',{"word_title":"\u03a7\u03c1\u03b7\u03c3\u03b9\u03bc\u03bf\u03c0\u03bf\u03b9\u03ae\u03c3\u03c4\u03b5 CTRL+V \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03ba\u03ac\u03bd\u03b5\u03c4\u03b5 \u03b5\u03c0\u03b9\u03ba\u03cc\u03bb\u03bb\u03b7\u03c3\u03b7 \u03ba\u03b5\u03b9\u03bc\u03ad\u03bd\u03bf\u03c5 \u03c3\u03c4\u03bf \u03c0\u03b1\u03c1\u03ac\u03b8\u03c5\u03c1\u03bf.","text_linebreaks":"\u039d\u03b1 \u03ba\u03c1\u03b1\u03c4\u03b7\u03b8\u03bf\u03cd\u03bd \u03c4\u03b1 linebreaks","text_title":"\u03a7\u03c1\u03b7\u03c3\u03b9\u03bc\u03bf\u03c0\u03bf\u03b9\u03ae\u03c3\u03c4\u03b5 CTRL+V \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03ba\u03ac\u03bd\u03b5\u03c4\u03b5 \u03b5\u03c0\u03b9\u03ba\u03cc\u03bb\u03bb\u03b7\u03c3\u03b7 \u03ba\u03b5\u03b9\u03bc\u03ad\u03bd\u03bf\u03c5 \u03c3\u03c4\u03bf \u03c0\u03b1\u03c1\u03ac\u03b8\u03c5\u03c1\u03bf."});webcit-8.24-dfsg.orig/tiny_mce/plugins/paste/langs/hu_dlg.js0000644000175000017500000000042112271477123023705 0ustar michaelmichaeltinyMCE.addI18n('hu.paste_dlg',{"word_title":"Haszn\u00e1lja a Ctrl+V-t a billenty\u0171zet\u00e9n a beilleszt\u00e9shez.","text_linebreaks":"Sort\u00f6r\u00e9sek megtart\u00e1sa","text_title":"Haszn\u00e1lja a Ctrl+V-t a billenty\u0171zet\u00e9n a beilleszt\u00e9shez."});webcit-8.24-dfsg.orig/tiny_mce/plugins/paste/langs/cs_dlg.js0000644000175000017500000000037312271477123023704 0ustar michaelmichaeltinyMCE.addI18n('cs.paste_dlg',{"word_title":"Pou\u017eijte CTRL+V pro vlo\u017een\u00ed textu do okna.","text_linebreaks":"Zachovat zalamov\u00e1n\u00ed \u0159\u00e1dk\u016f","text_title":"Pou\u017eijte CTRL+V pro vlo\u017een\u00ed textu do okna."});webcit-8.24-dfsg.orig/tiny_mce/plugins/paste/langs/en_dlg.js0000644000175000017500000000034212271477123023675 0ustar michaelmichaeltinyMCE.addI18n('en.paste_dlg',{"word_title":"Use Ctrl+V on your keyboard to paste the text into the window.","text_linebreaks":"Keep Linebreaks","text_title":"Use Ctrl+V on your keyboard to paste the text into the window."});webcit-8.24-dfsg.orig/tiny_mce/plugins/paste/langs/it_dlg.js0000644000175000017500000000037412271477123023714 0ustar michaelmichaeltinyMCE.addI18n('it.paste_dlg',{"word_title":"Premere CTRL+V sulla tastiera per incollare il testo nella finestra.","text_linebreaks":"Mantieni interruzioni di riga","text_title":"Premere CTRL+V sulla tastiera per incollare il testo nella finestra."});webcit-8.24-dfsg.orig/tiny_mce/plugins/paste/editor_plugin.js0000644000175000017500000003166012271477123024214 0ustar michaelmichael(function(){var c=tinymce.each,a={paste_auto_cleanup_on_paste:true,paste_enable_default_filters:true,paste_block_drop:false,paste_retain_style_properties:"none",paste_strip_class_attributes:"mso",paste_remove_spans:false,paste_remove_styles:false,paste_remove_styles_if_webkit:true,paste_convert_middot_lists:true,paste_convert_headers_to_strong:false,paste_dialog_width:"450",paste_dialog_height:"400",paste_text_use_dialog:false,paste_text_sticky:false,paste_text_sticky_default:false,paste_text_notifyalways:false,paste_text_linebreaktype:"p",paste_text_replacements:[[/\u2026/g,"..."],[/[\x93\x94\u201c\u201d]/g,'"'],[/[\x60\x91\x92\u2018\u2019]/g,"'"]]};function b(d,e){return d.getParam(e,a[e])}tinymce.create("tinymce.plugins.PastePlugin",{init:function(d,e){var f=this;f.editor=d;f.url=e;f.onPreProcess=new tinymce.util.Dispatcher(f);f.onPostProcess=new tinymce.util.Dispatcher(f);f.onPreProcess.add(f._preProcess);f.onPostProcess.add(f._postProcess);f.onPreProcess.add(function(i,j){d.execCallback("paste_preprocess",i,j)});f.onPostProcess.add(function(i,j){d.execCallback("paste_postprocess",i,j)});d.onKeyDown.addToTop(function(i,j){if(((tinymce.isMac?j.metaKey:j.ctrlKey)&&j.keyCode==86)||(j.shiftKey&&j.keyCode==45)){return false}});d.pasteAsPlainText=b(d,"paste_text_sticky_default");function h(l,j){var k=d.dom,i;f.onPreProcess.dispatch(f,l);l.node=k.create("div",0,l.content);if(tinymce.isGecko){i=d.selection.getRng(true);if(i.startContainer==i.endContainer&&i.startContainer.nodeType==3){if(l.node.childNodes.length===1&&/^(p|h[1-6]|pre)$/i.test(l.node.firstChild.nodeName)&&l.content.indexOf("__MCE_ITEM__")===-1){k.remove(l.node.firstChild,true)}}}f.onPostProcess.dispatch(f,l);l.content=d.serializer.serialize(l.node,{getInner:1,forced_root_block:""});if((!j)&&(d.pasteAsPlainText)){f._insertPlainText(l.content);if(!b(d,"paste_text_sticky")){d.pasteAsPlainText=false;d.controlManager.setActive("pastetext",false)}}else{f._insert(l.content)}}d.addCommand("mceInsertClipboardContent",function(i,j){h(j,true)});if(!b(d,"paste_text_use_dialog")){d.addCommand("mcePasteText",function(j,i){var k=tinymce.util.Cookie;d.pasteAsPlainText=!d.pasteAsPlainText;d.controlManager.setActive("pastetext",d.pasteAsPlainText);if((d.pasteAsPlainText)&&(!k.get("tinymcePasteText"))){if(b(d,"paste_text_sticky")){d.windowManager.alert(d.translate("paste.plaintext_mode_sticky"))}else{d.windowManager.alert(d.translate("paste.plaintext_mode"))}if(!b(d,"paste_text_notifyalways")){k.set("tinymcePasteText","1",new Date(new Date().getFullYear()+1,12,31))}}})}d.addButton("pastetext",{title:"paste.paste_text_desc",cmd:"mcePasteText"});d.addButton("selectall",{title:"paste.selectall_desc",cmd:"selectall"});function g(s){var l,p,j,t,k=d.selection,o=d.dom,q=d.getBody(),i,r;if(s.clipboardData||o.doc.dataTransfer){r=(s.clipboardData||o.doc.dataTransfer).getData("Text");if(d.pasteAsPlainText){s.preventDefault();h({content:o.encode(r).replace(/\r?\n/g,"
    ")});return}}if(o.get("_mcePaste")){return}l=o.add(q,"div",{id:"_mcePaste","class":"mcePaste","data-mce-bogus":"1"},"\uFEFF\uFEFF");if(q!=d.getDoc().body){i=o.getPos(d.selection.getStart(),q).y}else{i=q.scrollTop+o.getViewPort(d.getWin()).y}o.setStyles(l,{position:"absolute",left:tinymce.isGecko?-40:0,top:i-25,width:1,height:1,overflow:"hidden"});if(tinymce.isIE){t=k.getRng();j=o.doc.body.createTextRange();j.moveToElementText(l);j.execCommand("Paste");o.remove(l);if(l.innerHTML==="\uFEFF\uFEFF"){d.execCommand("mcePasteWord");s.preventDefault();return}k.setRng(t);k.setContent("");setTimeout(function(){h({content:l.innerHTML})},0);return tinymce.dom.Event.cancel(s)}else{function m(n){n.preventDefault()}o.bind(d.getDoc(),"mousedown",m);o.bind(d.getDoc(),"keydown",m);p=d.selection.getRng();l=l.firstChild;j=d.getDoc().createRange();j.setStart(l,0);j.setEnd(l,2);k.setRng(j);window.setTimeout(function(){var u="",n;if(!o.select("div.mcePaste > div.mcePaste").length){n=o.select("div.mcePaste");c(n,function(w){var v=w.firstChild;if(v&&v.nodeName=="DIV"&&v.style.marginTop&&v.style.backgroundColor){o.remove(v,1)}c(o.select("span.Apple-style-span",w),function(x){o.remove(x,1)});c(o.select("br[data-mce-bogus]",w),function(x){o.remove(x)});if(w.parentNode.className!="mcePaste"){u+=w.innerHTML}})}else{u="

    "+o.encode(r).replace(/\r?\n\r?\n/g,"

    ").replace(/\r?\n/g,"
    ")+"

    "}c(o.select("div.mcePaste"),function(v){o.remove(v)});if(p){k.setRng(p)}h({content:u});o.unbind(d.getDoc(),"mousedown",m);o.unbind(d.getDoc(),"keydown",m)},0)}}if(b(d,"paste_auto_cleanup_on_paste")){if(tinymce.isOpera||/Firefox\/2/.test(navigator.userAgent)){d.onKeyDown.addToTop(function(i,j){if(((tinymce.isMac?j.metaKey:j.ctrlKey)&&j.keyCode==86)||(j.shiftKey&&j.keyCode==45)){g(j)}})}else{d.onPaste.addToTop(function(i,j){return g(j)})}}d.onInit.add(function(){d.controlManager.setActive("pastetext",d.pasteAsPlainText);if(b(d,"paste_block_drop")){d.dom.bind(d.getBody(),["dragend","dragover","draggesture","dragdrop","drop","drag"],function(i){i.preventDefault();i.stopPropagation();return false})}});f._legacySupport()},getInfo:function(){return{longname:"Paste text/word",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/paste",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_preProcess:function(g,e){var k=this.editor,j=e.content,p=tinymce.grep,n=tinymce.explode,f=tinymce.trim,l,i;function d(h){c(h,function(o){if(o.constructor==RegExp){j=j.replace(o,"")}else{j=j.replace(o[0],o[1])}})}if(k.settings.paste_enable_default_filters==false){return}if(tinymce.isIE&&document.documentMode>=9){d([[/(?:
     [\s\r\n]+|
    )*(<\/?(h[1-6r]|p|div|address|pre|form|table|tbody|thead|tfoot|th|tr|td|li|ol|ul|caption|blockquote|center|dl|dt|dd|dir|fieldset)[^>]*>)(?:
     [\s\r\n]+|
    )*/g,"$1"]]);d([[/

    /g,"

    "],[/
    /g," "],[/

    /g,"
    "]])}if(/class="?Mso|style="[^"]*\bmso-|w:WordDocument/i.test(j)||e.wordContent){e.wordContent=true;d([/^\s*( )+/gi,/( |]*>)+\s*$/gi]);if(b(k,"paste_convert_headers_to_strong")){j=j.replace(/

    ]*class="?MsoHeading"?[^>]*>(.*?)<\/p>/gi,"

    $1

    ")}if(b(k,"paste_convert_middot_lists")){d([[//gi,"$&__MCE_ITEM__"],[/(]+(?:mso-list:|:\s*symbol)[^>]+>)/gi,"$1__MCE_ITEM__"],[/(]+(?:MsoListParagraph)[^>]+>)/gi,"$1__MCE_ITEM__"]])}d([//gi,/<(!|script[^>]*>.*?<\/script(?=[>\s])|\/?(\?xml(:\w+)?|img|meta|link|style|\w:\w+)(?=[\s\/>]))[^>]*>/gi,[/<(\/?)s>/gi,"<$1strike>"],[/ /gi,"\u00a0"]]);do{l=j.length;j=j.replace(/(<[a-z][^>]*\s)(?:id|name|language|type|on\w+|\w+:\w+)=(?:"[^"]*"|\w+)\s?/gi,"$1")}while(l!=j.length);if(b(k,"paste_retain_style_properties").replace(/^none$/i,"").length==0){j=j.replace(/<\/?span[^>]*>/gi,"")}else{d([[/([\s\u00a0]*)<\/span>/gi,function(o,h){return(h.length>0)?h.replace(/./," ").slice(Math.floor(h.length/2)).split("").join("\u00a0"):""}],[/(<[a-z][^>]*)\sstyle="([^"]*)"/gi,function(t,h,r){var u=[],o=0,q=n(f(r).replace(/"/gi,"'"),";");c(q,function(s){var w,y,z=n(s,":");function x(A){return A+((A!=="0")&&(/\d$/.test(A)))?"px":""}if(z.length==2){w=z[0].toLowerCase();y=z[1].toLowerCase();switch(w){case"mso-padding-alt":case"mso-padding-top-alt":case"mso-padding-right-alt":case"mso-padding-bottom-alt":case"mso-padding-left-alt":case"mso-margin-alt":case"mso-margin-top-alt":case"mso-margin-right-alt":case"mso-margin-bottom-alt":case"mso-margin-left-alt":case"mso-table-layout-alt":case"mso-height":case"mso-width":case"mso-vertical-align-alt":u[o++]=w.replace(/^mso-|-alt$/g,"")+":"+x(y);return;case"horiz-align":u[o++]="text-align:"+y;return;case"vert-align":u[o++]="vertical-align:"+y;return;case"font-color":case"mso-foreground":u[o++]="color:"+y;return;case"mso-background":case"mso-highlight":u[o++]="background:"+y;return;case"mso-default-height":u[o++]="min-height:"+x(y);return;case"mso-default-width":u[o++]="min-width:"+x(y);return;case"mso-padding-between-alt":u[o++]="border-collapse:separate;border-spacing:"+x(y);return;case"text-line-through":if((y=="single")||(y=="double")){u[o++]="text-decoration:line-through"}return;case"mso-zero-height":if(y=="yes"){u[o++]="display:none"}return}if(/^(mso|column|font-emph|lang|layout|line-break|list-image|nav|panose|punct|row|ruby|sep|size|src|tab-|table-border|text-(?!align|decor|indent|trans)|top-bar|version|vnd|word-break)/.test(w)){return}u[o++]=w+":"+z[1]}});if(o>0){return h+' style="'+u.join(";")+'"'}else{return h}}]])}}if(b(k,"paste_convert_headers_to_strong")){d([[/]*>/gi,"

    "],[/<\/h[1-6][^>]*>/gi,"

    "]])}d([[/Version:[\d.]+\nStartHTML:\d+\nEndHTML:\d+\nStartFragment:\d+\nEndFragment:\d+/gi,""]]);i=b(k,"paste_strip_class_attributes");if(i!=="none"){function m(q,o){if(i==="all"){return""}var h=p(n(o.replace(/^(["'])(.*)\1$/,"$2")," "),function(r){return(/^(?!mso)/i.test(r))});return h.length?' class="'+h.join(" ")+'"':""}j=j.replace(/ class="([^"]+)"/gi,m);j=j.replace(/ class=([\-\w]+)/gi,m)}if(b(k,"paste_remove_spans")){j=j.replace(/<\/?span[^>]*>/gi,"")}e.content=j},_postProcess:function(g,i){var f=this,e=f.editor,h=e.dom,d;if(e.settings.paste_enable_default_filters==false){return}if(i.wordContent){c(h.select("a",i.node),function(j){if(!j.href||j.href.indexOf("#_Toc")!=-1){h.remove(j,1)}});if(b(e,"paste_convert_middot_lists")){f._convertLists(g,i)}d=b(e,"paste_retain_style_properties");if((tinymce.is(d,"string"))&&(d!=="all")&&(d!=="*")){d=tinymce.explode(d.replace(/^none$/i,""));c(h.select("*",i.node),function(m){var n={},k=0,l,o,j;if(d){for(l=0;l0){h.setStyles(m,n)}else{if(m.nodeName=="SPAN"&&!m.className){h.remove(m,true)}}})}}if(b(e,"paste_remove_styles")||(b(e,"paste_remove_styles_if_webkit")&&tinymce.isWebKit)){c(h.select("*[style]",i.node),function(j){j.removeAttribute("style");j.removeAttribute("data-mce-style")})}else{if(tinymce.isWebKit){c(h.select("*",i.node),function(j){j.removeAttribute("data-mce-style")})}}},_convertLists:function(g,e){var i=g.editor.dom,h,l,d=-1,f,m=[],k,j;c(i.select("p",e.node),function(t){var q,u="",s,r,n,o;for(q=t.firstChild;q&&q.nodeType==3;q=q.nextSibling){u+=q.nodeValue}u=t.innerHTML.replace(/<\/?\w+[^>]*>/gi,"").replace(/ /g,"\u00a0");if(/^(__MCE_ITEM__)+[\u2022\u00b7\u00a7\u00d8o\u25CF]\s*\u00a0*/.test(u)){s="ul"}if(/^__MCE_ITEM__\s*\w+\.\s*\u00a0+/.test(u)){s="ol"}if(s){f=parseFloat(t.style.marginLeft||0);if(f>d){m.push(f)}if(!h||s!=k){h=i.create(s);i.insertAfter(h,t)}else{if(f>d){h=l.appendChild(i.create(s))}else{if(f]*>/gi,"");if(s=="ul"&&/^__MCE_ITEM__[\u2022\u00b7\u00a7\u00d8o\u25CF]/.test(p)){i.remove(v)}else{if(/^__MCE_ITEM__[\s\S]*\w+\.( |\u00a0)*\s*/.test(p)){i.remove(v)}}});r=t.innerHTML;if(s=="ul"){r=t.innerHTML.replace(/__MCE_ITEM__/g,"").replace(/^[\u2022\u00b7\u00a7\u00d8o\u25CF]\s*( |\u00a0)+\s*/,"")}else{r=t.innerHTML.replace(/__MCE_ITEM__/g,"").replace(/^\s*\w+\.( |\u00a0)+\s*/,"")}l=h.appendChild(i.create("li",0,r));i.remove(t);d=f;k=s}else{h=d=0}});j=e.node.innerHTML;if(j.indexOf("__MCE_ITEM__")!=-1){e.node.innerHTML=j.replace(/__MCE_ITEM__/g,"")}},_insert:function(f,d){var e=this.editor,g=e.selection.getRng();if(!e.selection.isCollapsed()&&g.startContainer!=g.endContainer){e.getDoc().execCommand("Delete",false,null)}e.execCommand("mceInsertContent",false,f,{skip_undo:d})},_insertPlainText:function(g){var d=this.editor,e=b(d,"paste_text_linebreaktype"),i=b(d,"paste_text_replacements"),f=tinymce.is;function h(j){c(j,function(k){if(k.constructor==RegExp){g=g.replace(k,"")}else{g=g.replace(k[0],k[1])}})}if((typeof(g)==="string")&&(g.length>0)){if(/<(?:p|br|h[1-6]|ul|ol|dl|table|t[rdh]|div|blockquote|fieldset|pre|address|center)[^>]*>/i.test(g)){h([/[\n\r]+/g])}else{h([/\r+/g])}h([[/<\/(?:p|h[1-6]|ul|ol|dl|table|div|blockquote|fieldset|pre|address|center)>/gi,"\n\n"],[/]*>|<\/tr>/gi,"\n"],[/<\/t[dh]>\s*]*>/gi,"\t"],/<[a-z!\/?][^>]*>/gi,[/ /gi," "],[/(?:(?!\n)\s)*(\n+)(?:(?!\n)\s)*/gi,"$1"],[/\n{3,}/g,"\n\n"]]);g=d.dom.decode(tinymce.html.Entities.encodeRaw(g));if(f(i,"array")){h(i)}else{if(f(i,"string")){h(new RegExp(i,"gi"))}}if(e=="none"){h([[/\n+/g," "]])}else{if(e=="br"){h([[/\n/g,"
    "]])}else{h([[/\n\n/g,"

    "],[/^(.*<\/p>)(

    )$/,"

    $1"],[/\n/g,"
    "]])}}d.execCommand("mceInsertContent",false,g)}},_legacySupport:function(){var e=this,d=e.editor;d.addCommand("mcePasteWord",function(){d.windowManager.open({file:e.url+"/pasteword.htm",width:parseInt(b(d,"paste_dialog_width")),height:parseInt(b(d,"paste_dialog_height")),inline:1})});if(b(d,"paste_text_use_dialog")){d.addCommand("mcePasteText",function(){d.windowManager.open({file:e.url+"/pastetext.htm",width:parseInt(b(d,"paste_dialog_width")),height:parseInt(b(d,"paste_dialog_height")),inline:1})})}d.addButton("pasteword",{title:"paste.paste_word_desc",cmd:"mcePasteWord"})}});tinymce.PluginManager.add("paste",tinymce.plugins.PastePlugin)})();webcit-8.24-dfsg.orig/tiny_mce/plugins/paste/pastetext.htm0000644000175000017500000000227112271477123023541 0ustar michaelmichael {#paste.paste_text_desc}

    {#paste.paste_text_desc}

    {#paste_dlg.text_title}
    webcit-8.24-dfsg.orig/tiny_mce/plugins/paste/js/0000755000175000017500000000000012271477123021420 5ustar michaelmichaelwebcit-8.24-dfsg.orig/tiny_mce/plugins/paste/js/pasteword.js0000644000175000017500000000315712271477123023774 0ustar michaelmichaeltinyMCEPopup.requireLangPack(); var PasteWordDialog = { init : function() { var ed = tinyMCEPopup.editor, el = document.getElementById('iframecontainer'), ifr, doc, css, cssHTML = ''; // Create iframe el.innerHTML = ''; ifr = document.getElementById('iframe'); doc = ifr.contentWindow.document; // Force absolute CSS urls css = [ed.baseURI.toAbsolute("themes/" + ed.settings.theme + "/skins/" + ed.settings.skin + "/content.css")]; css = css.concat(tinymce.explode(ed.settings.content_css) || []); tinymce.each(css, function(u) { cssHTML += ''; }); // Write content into iframe doc.open(); doc.write('' + cssHTML + ''); doc.close(); doc.designMode = 'on'; this.resize(); window.setTimeout(function() { ifr.contentWindow.focus(); }, 10); }, insert : function() { var h = document.getElementById('iframe').contentWindow.document.body.innerHTML; tinyMCEPopup.editor.execCommand('mceInsertClipboardContent', false, {content : h, wordContent : true}); tinyMCEPopup.close(); }, resize : function() { var vp = tinyMCEPopup.dom.getViewPort(window), el; el = document.getElementById('iframe'); if (el) { el.style.width = (vp.w - 20) + 'px'; el.style.height = (vp.h - 90) + 'px'; } } }; tinyMCEPopup.onInit.add(PasteWordDialog.init, PasteWordDialog); webcit-8.24-dfsg.orig/tiny_mce/plugins/paste/js/pastetext.js0000644000175000017500000000156412271477123024005 0ustar michaelmichaeltinyMCEPopup.requireLangPack(); var PasteTextDialog = { init : function() { this.resize(); }, insert : function() { var h = tinyMCEPopup.dom.encode(document.getElementById('content').value), lines; // Convert linebreaks into paragraphs if (document.getElementById('linebreaks').checked) { lines = h.split(/\r?\n/); if (lines.length > 1) { h = ''; tinymce.each(lines, function(row) { h += '

    ' + row + '

    '; }); } } tinyMCEPopup.editor.execCommand('mceInsertClipboardContent', false, {content : h}); tinyMCEPopup.close(); }, resize : function() { var vp = tinyMCEPopup.dom.getViewPort(window), el; el = document.getElementById('content'); el.style.width = (vp.w - 20) + 'px'; el.style.height = (vp.h - 90) + 'px'; } }; tinyMCEPopup.onInit.add(PasteTextDialog.init, PasteTextDialog); webcit-8.24-dfsg.orig/tiny_mce/plugins/contextmenu/0000755000175000017500000000000012271477123022241 5ustar michaelmichaelwebcit-8.24-dfsg.orig/tiny_mce/plugins/contextmenu/editor_plugin_src.js0000644000175000017500000001205212271477123026312 0ustar michaelmichael/** * editor_plugin_src.js * * Copyright 2009, Moxiecode Systems AB * Released under LGPL License. * * License: http://tinymce.moxiecode.com/license * Contributing: http://tinymce.moxiecode.com/contributing */ (function() { var Event = tinymce.dom.Event, each = tinymce.each, DOM = tinymce.DOM; /** * This plugin a context menu to TinyMCE editor instances. * * @class tinymce.plugins.ContextMenu */ tinymce.create('tinymce.plugins.ContextMenu', { /** * Initializes the plugin, this will be executed after the plugin has been created. * This call is done before the editor instance has finished it's initialization so use the onInit event * of the editor instance to intercept that event. * * @method init * @param {tinymce.Editor} ed Editor instance that the plugin is initialized in. * @param {string} url Absolute URL to where the plugin is located. */ init : function(ed) { var t = this, showMenu, contextmenuNeverUseNative, realCtrlKey; t.editor = ed; contextmenuNeverUseNative = ed.settings.contextmenu_never_use_native; /** * This event gets fired when the context menu is shown. * * @event onContextMenu * @param {tinymce.plugins.ContextMenu} sender Plugin instance sending the event. * @param {tinymce.ui.DropMenu} menu Drop down menu to fill with more items if needed. */ t.onContextMenu = new tinymce.util.Dispatcher(this); showMenu = ed.onContextMenu.add(function(ed, e) { // Block TinyMCE menu on ctrlKey and work around Safari issue if ((realCtrlKey !== 0 ? realCtrlKey : e.ctrlKey) && !contextmenuNeverUseNative) return; Event.cancel(e); // Select the image if it's clicked. WebKit would other wise expand the selection if (e.target.nodeName == 'IMG') ed.selection.select(e.target); t._getMenu(ed).showMenu(e.clientX || e.pageX, e.clientY || e.pageY); Event.add(ed.getDoc(), 'click', function(e) { hide(ed, e); }); ed.nodeChanged(); }); ed.onRemove.add(function() { if (t._menu) t._menu.removeAll(); }); function hide(ed, e) { realCtrlKey = 0; // Since the contextmenu event moves // the selection we need to store it away if (e && e.button == 2) { realCtrlKey = e.ctrlKey; return; } if (t._menu) { t._menu.removeAll(); t._menu.destroy(); Event.remove(ed.getDoc(), 'click', hide); } }; ed.onMouseDown.add(hide); ed.onKeyDown.add(hide); ed.onKeyDown.add(function(ed, e) { if (e.shiftKey && !e.ctrlKey && !e.altKey && e.keyCode === 121) { Event.cancel(e); showMenu(ed, e); } }); }, /** * Returns information about the plugin as a name/value array. * The current keys are longname, author, authorurl, infourl and version. * * @method getInfo * @return {Object} Name/value array containing information about the plugin. */ getInfo : function() { return { longname : 'Contextmenu', author : 'Moxiecode Systems AB', authorurl : 'http://tinymce.moxiecode.com', infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/contextmenu', version : tinymce.majorVersion + "." + tinymce.minorVersion }; }, _getMenu : function(ed) { var t = this, m = t._menu, se = ed.selection, col = se.isCollapsed(), el = se.getNode() || ed.getBody(), am, p; if (m) { m.removeAll(); m.destroy(); } p = DOM.getPos(ed.getContentAreaContainer()); m = ed.controlManager.createDropMenu('contextmenu', { offset_x : p.x + ed.getParam('contextmenu_offset_x', 0), offset_y : p.y + ed.getParam('contextmenu_offset_y', 0), constrain : 1, keyboard_focus: true }); t._menu = m; m.add({title : 'advanced.cut_desc', icon : 'cut', cmd : 'Cut'}).setDisabled(col); m.add({title : 'advanced.copy_desc', icon : 'copy', cmd : 'Copy'}).setDisabled(col); m.add({title : 'advanced.paste_desc', icon : 'paste', cmd : 'Paste'}); if ((el.nodeName == 'A' && !ed.dom.getAttrib(el, 'name')) || !col) { m.addSeparator(); m.add({title : 'advanced.link_desc', icon : 'link', cmd : ed.plugins.advlink ? 'mceAdvLink' : 'mceLink', ui : true}); m.add({title : 'advanced.unlink_desc', icon : 'unlink', cmd : 'UnLink'}); } m.addSeparator(); m.add({title : 'advanced.image_desc', icon : 'image', cmd : ed.plugins.advimage ? 'mceAdvImage' : 'mceImage', ui : true}); m.addSeparator(); am = m.addMenu({title : 'contextmenu.align'}); am.add({title : 'contextmenu.left', icon : 'justifyleft', cmd : 'JustifyLeft'}); am.add({title : 'contextmenu.center', icon : 'justifycenter', cmd : 'JustifyCenter'}); am.add({title : 'contextmenu.right', icon : 'justifyright', cmd : 'JustifyRight'}); am.add({title : 'contextmenu.full', icon : 'justifyfull', cmd : 'JustifyFull'}); t.onContextMenu.dispatch(t, m, el, col); return m; } }); // Register plugin tinymce.PluginManager.add('contextmenu', tinymce.plugins.ContextMenu); })(); webcit-8.24-dfsg.orig/tiny_mce/plugins/contextmenu/editor_plugin.js0000644000175000017500000000473112271477123025450 0ustar michaelmichael(function(){var a=tinymce.dom.Event,c=tinymce.each,b=tinymce.DOM;tinymce.create("tinymce.plugins.ContextMenu",{init:function(e){var h=this,f,d,i;h.editor=e;d=e.settings.contextmenu_never_use_native;h.onContextMenu=new tinymce.util.Dispatcher(this);f=e.onContextMenu.add(function(j,k){if((i!==0?i:k.ctrlKey)&&!d){return}a.cancel(k);if(k.target.nodeName=="IMG"){j.selection.select(k.target)}h._getMenu(j).showMenu(k.clientX||k.pageX,k.clientY||k.pageY);a.add(j.getDoc(),"click",function(l){g(j,l)});j.nodeChanged()});e.onRemove.add(function(){if(h._menu){h._menu.removeAll()}});function g(j,k){i=0;if(k&&k.button==2){i=k.ctrlKey;return}if(h._menu){h._menu.removeAll();h._menu.destroy();a.remove(j.getDoc(),"click",g)}}e.onMouseDown.add(g);e.onKeyDown.add(g);e.onKeyDown.add(function(j,k){if(k.shiftKey&&!k.ctrlKey&&!k.altKey&&k.keyCode===121){a.cancel(k);f(j,k)}})},getInfo:function(){return{longname:"Contextmenu",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/contextmenu",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_getMenu:function(e){var g=this,d=g._menu,j=e.selection,f=j.isCollapsed(),h=j.getNode()||e.getBody(),i,k;if(d){d.removeAll();d.destroy()}k=b.getPos(e.getContentAreaContainer());d=e.controlManager.createDropMenu("contextmenu",{offset_x:k.x+e.getParam("contextmenu_offset_x",0),offset_y:k.y+e.getParam("contextmenu_offset_y",0),constrain:1,keyboard_focus:true});g._menu=d;d.add({title:"advanced.cut_desc",icon:"cut",cmd:"Cut"}).setDisabled(f);d.add({title:"advanced.copy_desc",icon:"copy",cmd:"Copy"}).setDisabled(f);d.add({title:"advanced.paste_desc",icon:"paste",cmd:"Paste"});if((h.nodeName=="A"&&!e.dom.getAttrib(h,"name"))||!f){d.addSeparator();d.add({title:"advanced.link_desc",icon:"link",cmd:e.plugins.advlink?"mceAdvLink":"mceLink",ui:true});d.add({title:"advanced.unlink_desc",icon:"unlink",cmd:"UnLink"})}d.addSeparator();d.add({title:"advanced.image_desc",icon:"image",cmd:e.plugins.advimage?"mceAdvImage":"mceImage",ui:true});d.addSeparator();i=d.addMenu({title:"contextmenu.align"});i.add({title:"contextmenu.left",icon:"justifyleft",cmd:"JustifyLeft"});i.add({title:"contextmenu.center",icon:"justifycenter",cmd:"JustifyCenter"});i.add({title:"contextmenu.right",icon:"justifyright",cmd:"JustifyRight"});i.add({title:"contextmenu.full",icon:"justifyfull",cmd:"JustifyFull"});g.onContextMenu.dispatch(g,d,h,f);return d}});tinymce.PluginManager.add("contextmenu",tinymce.plugins.ContextMenu)})();webcit-8.24-dfsg.orig/tiny_mce/plugins/autosave/0000755000175000017500000000000012271477123021517 5ustar michaelmichaelwebcit-8.24-dfsg.orig/tiny_mce/plugins/autosave/editor_plugin_src.js0000644000175000017500000003264112271477123025576 0ustar michaelmichael/** * editor_plugin_src.js * * Copyright 2009, Moxiecode Systems AB * Released under LGPL License. * * License: http://tinymce.moxiecode.com/license * Contributing: http://tinymce.moxiecode.com/contributing * * Adds auto-save capability to the TinyMCE text editor to rescue content * inadvertently lost. This plugin was originally developed by Speednet * and that project can be found here: http://code.google.com/p/tinyautosave/ * * TECHNOLOGY DISCUSSION: * * The plugin attempts to use the most advanced features available in the current browser to save * as much content as possible. There are a total of four different methods used to autosave the * content. In order of preference, they are: * * 1. localStorage - A new feature of HTML 5, localStorage can store megabytes of data per domain * on the client computer. Data stored in the localStorage area has no expiration date, so we must * manage expiring the data ourselves. localStorage is fully supported by IE8, and it is supposed * to be working in Firefox 3 and Safari 3.2, but in reality is is flaky in those browsers. As * HTML 5 gets wider support, the AutoSave plugin will use it automatically. In Windows Vista/7, * localStorage is stored in the following folder: * C:\Users\[username]\AppData\Local\Microsoft\Internet Explorer\DOMStore\[tempFolder] * * 2. sessionStorage - A new feature of HTML 5, sessionStorage works similarly to localStorage, * except it is designed to expire after a certain amount of time. Because the specification * around expiration date/time is very loosely-described, it is preferrable to use locaStorage and * manage the expiration ourselves. sessionStorage has similar storage characteristics to * localStorage, although it seems to have better support by Firefox 3 at the moment. (That will * certainly change as Firefox continues getting better at HTML 5 adoption.) * * 3. UserData - A very under-exploited feature of Microsoft Internet Explorer, UserData is a * way to store up to 128K of data per "document", or up to 1MB of data per domain, on the client * computer. The feature is available for IE 5+, which makes it available for every version of IE * supported by TinyMCE. The content is persistent across browser restarts and expires on the * date/time specified, just like a cookie. However, the data is not cleared when the user clears * cookies on the browser, which makes it well-suited for rescuing autosaved content. UserData, * like other Microsoft IE browser technologies, is implemented as a behavior attached to a * specific DOM object, so in this case we attach the behavior to the same DOM element that the * TinyMCE editor instance is attached to. */ (function(tinymce) { // Setup constants to help the compressor to reduce script size var PLUGIN_NAME = 'autosave', RESTORE_DRAFT = 'restoredraft', TRUE = true, undefined, unloadHandlerAdded, Dispatcher = tinymce.util.Dispatcher; /** * This plugin adds auto-save capability to the TinyMCE text editor to rescue content * inadvertently lost. By using localStorage. * * @class tinymce.plugins.AutoSave */ tinymce.create('tinymce.plugins.AutoSave', { /** * Initializes the plugin, this will be executed after the plugin has been created. * This call is done before the editor instance has finished it's initialization so use the onInit event * of the editor instance to intercept that event. * * @method init * @param {tinymce.Editor} ed Editor instance that the plugin is initialized in. * @param {string} url Absolute URL to where the plugin is located. */ init : function(ed, url) { var self = this, settings = ed.settings; self.editor = ed; // Parses the specified time string into a milisecond number 10m, 10s etc. function parseTime(time) { var multipels = { s : 1000, m : 60000 }; time = /^(\d+)([ms]?)$/.exec('' + time); return (time[2] ? multipels[time[2]] : 1) * parseInt(time); }; // Default config tinymce.each({ ask_before_unload : TRUE, interval : '30s', retention : '20m', minlength : 50 }, function(value, key) { key = PLUGIN_NAME + '_' + key; if (settings[key] === undefined) settings[key] = value; }); // Parse times settings.autosave_interval = parseTime(settings.autosave_interval); settings.autosave_retention = parseTime(settings.autosave_retention); // Register restore button ed.addButton(RESTORE_DRAFT, { title : PLUGIN_NAME + ".restore_content", onclick : function() { if (ed.getContent({draft: true}).replace(/\s| |<\/?p[^>]*>|]*>/gi, "").length > 0) { // Show confirm dialog if the editor isn't empty ed.windowManager.confirm( PLUGIN_NAME + ".warning_message", function(ok) { if (ok) self.restoreDraft(); } ); } else self.restoreDraft(); } }); // Enable/disable restoredraft button depending on if there is a draft stored or not ed.onNodeChange.add(function() { var controlManager = ed.controlManager; if (controlManager.get(RESTORE_DRAFT)) controlManager.setDisabled(RESTORE_DRAFT, !self.hasDraft()); }); ed.onInit.add(function() { // Check if the user added the restore button, then setup auto storage logic if (ed.controlManager.get(RESTORE_DRAFT)) { // Setup storage engine self.setupStorage(ed); // Auto save contents each interval time setInterval(function() { self.storeDraft(); ed.nodeChanged(); }, settings.autosave_interval); } }); /** * This event gets fired when a draft is stored to local storage. * * @event onStoreDraft * @param {tinymce.plugins.AutoSave} sender Plugin instance sending the event. * @param {Object} draft Draft object containing the HTML contents of the editor. */ self.onStoreDraft = new Dispatcher(self); /** * This event gets fired when a draft is restored from local storage. * * @event onStoreDraft * @param {tinymce.plugins.AutoSave} sender Plugin instance sending the event. * @param {Object} draft Draft object containing the HTML contents of the editor. */ self.onRestoreDraft = new Dispatcher(self); /** * This event gets fired when a draft removed/expired. * * @event onRemoveDraft * @param {tinymce.plugins.AutoSave} sender Plugin instance sending the event. * @param {Object} draft Draft object containing the HTML contents of the editor. */ self.onRemoveDraft = new Dispatcher(self); // Add ask before unload dialog only add one unload handler if (!unloadHandlerAdded) { window.onbeforeunload = tinymce.plugins.AutoSave._beforeUnloadHandler; unloadHandlerAdded = TRUE; } }, /** * Returns information about the plugin as a name/value array. * The current keys are longname, author, authorurl, infourl and version. * * @method getInfo * @return {Object} Name/value array containing information about the plugin. */ getInfo : function() { return { longname : 'Auto save', author : 'Moxiecode Systems AB', authorurl : 'http://tinymce.moxiecode.com', infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/autosave', version : tinymce.majorVersion + "." + tinymce.minorVersion }; }, /** * Returns an expiration date UTC string. * * @method getExpDate * @return {String} Expiration date UTC string. */ getExpDate : function() { return new Date( new Date().getTime() + this.editor.settings.autosave_retention ).toUTCString(); }, /** * This method will setup the storage engine. If the browser has support for it. * * @method setupStorage */ setupStorage : function(ed) { var self = this, testKey = PLUGIN_NAME + '_test', testVal = "OK"; self.key = PLUGIN_NAME + ed.id; // Loop though each storage engine type until we find one that works tinymce.each([ function() { // Try HTML5 Local Storage if (localStorage) { localStorage.setItem(testKey, testVal); if (localStorage.getItem(testKey) === testVal) { localStorage.removeItem(testKey); return localStorage; } } }, function() { // Try HTML5 Session Storage if (sessionStorage) { sessionStorage.setItem(testKey, testVal); if (sessionStorage.getItem(testKey) === testVal) { sessionStorage.removeItem(testKey); return sessionStorage; } } }, function() { // Try IE userData if (tinymce.isIE) { ed.getElement().style.behavior = "url('#default#userData')"; // Fake localStorage on old IE return { autoExpires : TRUE, setItem : function(key, value) { var userDataElement = ed.getElement(); userDataElement.setAttribute(key, value); userDataElement.expires = self.getExpDate(); try { userDataElement.save("TinyMCE"); } catch (e) { // Ignore, saving might fail if "Userdata Persistence" is disabled in IE } }, getItem : function(key) { var userDataElement = ed.getElement(); try { userDataElement.load("TinyMCE"); return userDataElement.getAttribute(key); } catch (e) { // Ignore, loading might fail if "Userdata Persistence" is disabled in IE return null; } }, removeItem : function(key) { ed.getElement().removeAttribute(key); } }; } }, ], function(setup) { // Try executing each function to find a suitable storage engine try { self.storage = setup(); if (self.storage) return false; } catch (e) { // Ignore } }); }, /** * This method will store the current contents in the the storage engine. * * @method storeDraft */ storeDraft : function() { var self = this, storage = self.storage, editor = self.editor, expires, content; // Is the contents dirty if (storage) { // If there is no existing key and the contents hasn't been changed since // it's original value then there is no point in saving a draft if (!storage.getItem(self.key) && !editor.isDirty()) return; // Store contents if the contents if longer than the minlength of characters content = editor.getContent({draft: true}); if (content.length > editor.settings.autosave_minlength) { expires = self.getExpDate(); // Store expiration date if needed IE userData has auto expire built in if (!self.storage.autoExpires) self.storage.setItem(self.key + "_expires", expires); self.storage.setItem(self.key, content); self.onStoreDraft.dispatch(self, { expires : expires, content : content }); } } }, /** * This method will restore the contents from the storage engine back to the editor. * * @method restoreDraft */ restoreDraft : function() { var self = this, storage = self.storage, content; if (storage) { content = storage.getItem(self.key); if (content) { self.editor.setContent(content); self.onRestoreDraft.dispatch(self, { content : content }); } } }, /** * This method will return true/false if there is a local storage draft available. * * @method hasDraft * @return {boolean} true/false state if there is a local draft. */ hasDraft : function() { var self = this, storage = self.storage, expDate, exists; if (storage) { // Does the item exist at all exists = !!storage.getItem(self.key); if (exists) { // Storage needs autoexpire if (!self.storage.autoExpires) { expDate = new Date(storage.getItem(self.key + "_expires")); // Contents hasn't expired if (new Date().getTime() < expDate.getTime()) return TRUE; // Remove it if it has self.removeDraft(); } else return TRUE; } } return false; }, /** * Removes the currently stored draft. * * @method removeDraft */ removeDraft : function() { var self = this, storage = self.storage, key = self.key, content; if (storage) { // Get current contents and remove the existing draft content = storage.getItem(key); storage.removeItem(key); storage.removeItem(key + "_expires"); // Dispatch remove event if we had any contents if (content) { self.onRemoveDraft.dispatch(self, { content : content }); } } }, "static" : { // Internal unload handler will be called before the page is unloaded _beforeUnloadHandler : function(e) { var msg; tinymce.each(tinyMCE.editors, function(ed) { // Store a draft for each editor instance if (ed.plugins.autosave) ed.plugins.autosave.storeDraft(); // Never ask in fullscreen mode if (ed.getParam("fullscreen_is_enabled")) return; // Setup a return message if the editor is dirty if (!msg && ed.isDirty() && ed.getParam("autosave_ask_before_unload")) msg = ed.getLang("autosave.unload_msg"); }); return msg; } } }); tinymce.PluginManager.add('autosave', tinymce.plugins.AutoSave); })(tinymce); webcit-8.24-dfsg.orig/tiny_mce/plugins/autosave/langs/0000755000175000017500000000000012271477123022623 5ustar michaelmichaelwebcit-8.24-dfsg.orig/tiny_mce/plugins/autosave/langs/en.js0000644000175000017500000000040012271477123023555 0ustar michaelmichaeltinyMCE.addI18n('en.autosave',{ restore_content: "Restore auto-saved content", warning_message: "If you restore the saved content, you will lose all the content that is currently in the editor.\n\nAre you sure you want to restore the saved content?" });webcit-8.24-dfsg.orig/tiny_mce/plugins/autosave/editor_plugin.js0000644000175000017500000000676012271477123024732 0ustar michaelmichael(function(e){var c="autosave",g="restoredraft",b=true,f,d,a=e.util.Dispatcher;e.create("tinymce.plugins.AutoSave",{init:function(i,j){var h=this,l=i.settings;h.editor=i;function k(n){var m={s:1000,m:60000};n=/^(\d+)([ms]?)$/.exec(""+n);return(n[2]?m[n[2]]:1)*parseInt(n)}e.each({ask_before_unload:b,interval:"30s",retention:"20m",minlength:50},function(n,m){m=c+"_"+m;if(l[m]===f){l[m]=n}});l.autosave_interval=k(l.autosave_interval);l.autosave_retention=k(l.autosave_retention);i.addButton(g,{title:c+".restore_content",onclick:function(){if(i.getContent({draft:true}).replace(/\s| |<\/?p[^>]*>|]*>/gi,"").length>0){i.windowManager.confirm(c+".warning_message",function(m){if(m){h.restoreDraft()}})}else{h.restoreDraft()}}});i.onNodeChange.add(function(){var m=i.controlManager;if(m.get(g)){m.setDisabled(g,!h.hasDraft())}});i.onInit.add(function(){if(i.controlManager.get(g)){h.setupStorage(i);setInterval(function(){h.storeDraft();i.nodeChanged()},l.autosave_interval)}});h.onStoreDraft=new a(h);h.onRestoreDraft=new a(h);h.onRemoveDraft=new a(h);if(!d){window.onbeforeunload=e.plugins.AutoSave._beforeUnloadHandler;d=b}},getInfo:function(){return{longname:"Auto save",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/autosave",version:e.majorVersion+"."+e.minorVersion}},getExpDate:function(){return new Date(new Date().getTime()+this.editor.settings.autosave_retention).toUTCString()},setupStorage:function(i){var h=this,k=c+"_test",j="OK";h.key=c+i.id;e.each([function(){if(localStorage){localStorage.setItem(k,j);if(localStorage.getItem(k)===j){localStorage.removeItem(k);return localStorage}}},function(){if(sessionStorage){sessionStorage.setItem(k,j);if(sessionStorage.getItem(k)===j){sessionStorage.removeItem(k);return sessionStorage}}},function(){if(e.isIE){i.getElement().style.behavior="url('#default#userData')";return{autoExpires:b,setItem:function(l,n){var m=i.getElement();m.setAttribute(l,n);m.expires=h.getExpDate();try{m.save("TinyMCE")}catch(o){}},getItem:function(l){var m=i.getElement();try{m.load("TinyMCE");return m.getAttribute(l)}catch(n){return null}},removeItem:function(l){i.getElement().removeAttribute(l)}}}},],function(l){try{h.storage=l();if(h.storage){return false}}catch(m){}})},storeDraft:function(){var i=this,l=i.storage,j=i.editor,h,k;if(l){if(!l.getItem(i.key)&&!j.isDirty()){return}k=j.getContent({draft:true});if(k.length>j.settings.autosave_minlength){h=i.getExpDate();if(!i.storage.autoExpires){i.storage.setItem(i.key+"_expires",h)}i.storage.setItem(i.key,k);i.onStoreDraft.dispatch(i,{expires:h,content:k})}}},restoreDraft:function(){var h=this,j=h.storage,i;if(j){i=j.getItem(h.key);if(i){h.editor.setContent(i);h.onRestoreDraft.dispatch(h,{content:i})}}},hasDraft:function(){var h=this,k=h.storage,i,j;if(k){j=!!k.getItem(h.key);if(j){if(!h.storage.autoExpires){i=new Date(k.getItem(h.key+"_expires"));if(new Date().getTime() 0) destination.appendChild(parentNode.childNodes[0]); } // Check if there is a previous sibling prevSibling = n.parentNode.previousSibling; if (!prevSibling) return; var ul; if (prevSibling.tagName === 'UL' || prevSibling.tagName === 'OL') ul = prevSibling; else if (prevSibling.previousSibling && (prevSibling.previousSibling.tagName === 'UL' || prevSibling.previousSibling.tagName === 'OL')) ul = prevSibling.previousSibling; else return; var li = lastLI(ul); // move the caret to the end of the list item var rng = ed.dom.createRng(); rng.setStart(li, 1); rng.setEnd(li, 1); ed.selection.setRng(rng); ed.selection.collapse(true); // save a bookmark at the end of the list item var bookmark = ed.selection.getBookmark(); // copy the image an its text to the list item var clone = n.parentNode.cloneNode(true); if (clone.tagName === 'P' || clone.tagName === 'DIV') addChildren(clone, li); else li.appendChild(clone); // remove the old copy of the image n.parentNode.parentNode.removeChild(n.parentNode); // move the caret where we saved the bookmark ed.selection.moveToBookmark(bookmark); } // fix the cursor position to ensure it is correct in IE function setCursorPositionToOriginalLi(li) { var list = ed.dom.getParent(li, 'ol,ul'); if (list != null) { var lastLi = list.lastChild; lastLi.appendChild(ed.getDoc().createElement('')); ed.selection.setCursorLocation(lastLi, 0); } } this.ed = ed; ed.addCommand('Indent', this.indent, this); ed.addCommand('Outdent', this.outdent, this); ed.addCommand('InsertUnorderedList', function() { this.applyList('UL', 'OL'); }, this); ed.addCommand('InsertOrderedList', function() { this.applyList('OL', 'UL'); }, this); ed.onInit.add(function() { ed.editorCommands.addCommands({ 'outdent': function() { var sel = ed.selection, dom = ed.dom; function hasStyleIndent(n) { n = dom.getParent(n, dom.isBlock); return n && (parseInt(ed.dom.getStyle(n, 'margin-left') || 0, 10) + parseInt(ed.dom.getStyle(n, 'padding-left') || 0, 10)) > 0; } return hasStyleIndent(sel.getStart()) || hasStyleIndent(sel.getEnd()) || ed.queryCommandState('InsertOrderedList') || ed.queryCommandState('InsertUnorderedList'); } }, 'state'); }); ed.onKeyUp.add(function(ed, e) { if (state == LIST_TABBING) { ed.execCommand(e.shiftKey ? 'Outdent' : 'Indent', true, null); state = LIST_UNKNOWN; return Event.cancel(e); } else if (state == LIST_EMPTY_ITEM) { var li = getLi(); var shouldOutdent = ed.settings.list_outdent_on_enter === true || e.shiftKey; ed.execCommand(shouldOutdent ? 'Outdent' : 'Indent', true, null); if (tinymce.isIE) { setCursorPositionToOriginalLi(li); } return Event.cancel(e); } else if (state == LIST_ESCAPE) { if (tinymce.isIE8) { // append a zero sized nbsp so that caret is positioned correctly in IE8 after escaping and applying formatting. // if there is no text then applying formatting for e.g a H1 to the P tag immediately following list after // escaping from it will cause the caret to be positioned on the last li instead of staying the in P tag. var n = ed.getDoc().createTextNode('\uFEFF'); ed.selection.getNode().appendChild(n); } else if (tinymce.isIE9) { // IE9 does not escape the list so we use outdent to do this and cancel the default behaviour ed.execCommand('Outdent'); return Event.cancel(e); } } }); ed.onKeyDown.add(function(_, e) { state = getListKeyState(e); }); ed.onKeyDown.add(cancelEnterAndTab); ed.onKeyDown.add(imageJoiningListItem); ed.onKeyPress.add(cancelEnterAndTab); }, applyList: function(targetListType, oppositeListType) { var t = this, ed = t.ed, dom = ed.dom, applied = [], hasSameType = false, hasOppositeType = false, hasNonList = false, actions, selectedBlocks = ed.selection.getSelectedBlocks(); function cleanupBr(e) { if (e && e.tagName === 'BR') { dom.remove(e); } } function makeList(element) { var list = dom.create(targetListType), li; function adjustIndentForNewList(element) { // If there's a margin-left, outdent one level to account for the extra list margin. if (element.style.marginLeft || element.style.paddingLeft) { t.adjustPaddingFunction(false)(element); } } if (element.tagName === 'LI') { // No change required. } else if (element.tagName === 'P' || element.tagName === 'DIV' || element.tagName === 'BODY') { processBrs(element, function(startSection, br, previousBR) { doWrapList(startSection, br, element.tagName === 'BODY' ? null : startSection.parentNode); li = startSection.parentNode; adjustIndentForNewList(li); cleanupBr(br); }); if (element.tagName === 'P' || selectedBlocks.length > 1) { dom.split(li.parentNode.parentNode, li.parentNode); } attemptMergeWithAdjacent(li.parentNode, true); return; } else { // Put the list around the element. li = dom.create('li'); dom.insertAfter(li, element); li.appendChild(element); adjustIndentForNewList(element); element = li; } dom.insertAfter(list, element); list.appendChild(element); attemptMergeWithAdjacent(list, true); applied.push(element); } function doWrapList(start, end, template) { var li, n = start, tmp, i; while (!dom.isBlock(start.parentNode) && start.parentNode !== dom.getRoot()) { start = dom.split(start.parentNode, start.previousSibling); start = start.nextSibling; n = start; } if (template) { li = template.cloneNode(true); start.parentNode.insertBefore(li, start); while (li.firstChild) dom.remove(li.firstChild); li = dom.rename(li, 'li'); } else { li = dom.create('li'); start.parentNode.insertBefore(li, start); } while (n && n != end) { tmp = n.nextSibling; li.appendChild(n); n = tmp; } if (li.childNodes.length === 0) { li.innerHTML = '
    '; } makeList(li); } function processBrs(element, callback) { var startSection, previousBR, END_TO_START = 3, START_TO_END = 1, breakElements = 'br,ul,ol,p,div,h1,h2,h3,h4,h5,h6,table,blockquote,address,pre,form,center,dl'; function isAnyPartSelected(start, end) { var r = dom.createRng(), sel; bookmark.keep = true; ed.selection.moveToBookmark(bookmark); bookmark.keep = false; sel = ed.selection.getRng(true); if (!end) { end = start.parentNode.lastChild; } r.setStartBefore(start); r.setEndAfter(end); return !(r.compareBoundaryPoints(END_TO_START, sel) > 0 || r.compareBoundaryPoints(START_TO_END, sel) <= 0); } function nextLeaf(br) { if (br.nextSibling) return br.nextSibling; if (!dom.isBlock(br.parentNode) && br.parentNode !== dom.getRoot()) return nextLeaf(br.parentNode); } // Split on BRs within the range and process those. startSection = element.firstChild; // First mark the BRs that have any part of the previous section selected. var trailingContentSelected = false; each(dom.select(breakElements, element), function(br) { var b; if (br.hasAttribute && br.hasAttribute('_mce_bogus')) { return true; // Skip the bogus Brs that are put in to appease Firefox and Safari. } if (isAnyPartSelected(startSection, br)) { dom.addClass(br, '_mce_tagged_br'); startSection = nextLeaf(br); } }); trailingContentSelected = (startSection && isAnyPartSelected(startSection, undefined)); startSection = element.firstChild; each(dom.select(breakElements, element), function(br) { // Got a section from start to br. var tmp = nextLeaf(br); if (br.hasAttribute && br.hasAttribute('_mce_bogus')) { return true; // Skip the bogus Brs that are put in to appease Firefox and Safari. } if (dom.hasClass(br, '_mce_tagged_br')) { callback(startSection, br, previousBR); previousBR = null; } else { previousBR = br; } startSection = tmp; }); if (trailingContentSelected) { callback(startSection, undefined, previousBR); } } function wrapList(element) { processBrs(element, function(startSection, br, previousBR) { // Need to indent this part doWrapList(startSection, br); cleanupBr(br); cleanupBr(previousBR); }); } function changeList(element) { if (tinymce.inArray(applied, element) !== -1) { return; } if (element.parentNode.tagName === oppositeListType) { dom.split(element.parentNode, element); makeList(element); attemptMergeWithNext(element.parentNode, false); } applied.push(element); } function convertListItemToParagraph(element) { var child, nextChild, mergedElement, splitLast; if (tinymce.inArray(applied, element) !== -1) { return; } element = splitNestedLists(element, dom); while (dom.is(element.parentNode, 'ol,ul,li')) { dom.split(element.parentNode, element); } // Push the original element we have from the selection, not the renamed one. applied.push(element); element = dom.rename(element, 'p'); mergedElement = attemptMergeWithAdjacent(element, false, ed.settings.force_br_newlines); if (mergedElement === element) { // Now split out any block elements that can't be contained within a P. // Manually iterate to ensure we handle modifications correctly (doesn't work with tinymce.each) child = element.firstChild; while (child) { if (dom.isBlock(child)) { child = dom.split(child.parentNode, child); splitLast = true; nextChild = child.nextSibling && child.nextSibling.firstChild; } else { nextChild = child.nextSibling; if (splitLast && child.tagName === 'BR') { dom.remove(child); } splitLast = false; } child = nextChild; } } } each(selectedBlocks, function(e) { e = findItemToOperateOn(e, dom); if (e.tagName === oppositeListType || (e.tagName === 'LI' && e.parentNode.tagName === oppositeListType)) { hasOppositeType = true; } else if (e.tagName === targetListType || (e.tagName === 'LI' && e.parentNode.tagName === targetListType)) { hasSameType = true; } else { hasNonList = true; } }); if (hasNonList || hasOppositeType || selectedBlocks.length === 0) { actions = { 'LI': changeList, 'H1': makeList, 'H2': makeList, 'H3': makeList, 'H4': makeList, 'H5': makeList, 'H6': makeList, 'P': makeList, 'BODY': makeList, 'DIV': selectedBlocks.length > 1 ? makeList : wrapList, defaultAction: wrapList }; } else { actions = { defaultAction: convertListItemToParagraph }; } this.process(actions); }, indent: function() { var ed = this.ed, dom = ed.dom, indented = []; function createWrapItem(element) { var wrapItem = dom.create('li', { style: 'list-style-type: none;'}); dom.insertAfter(wrapItem, element); return wrapItem; } function createWrapList(element) { var wrapItem = createWrapItem(element), list = dom.getParent(element, 'ol,ul'), listType = list.tagName, listStyle = dom.getStyle(list, 'list-style-type'), attrs = {}, wrapList; if (listStyle !== '') { attrs.style = 'list-style-type: ' + listStyle + ';'; } wrapList = dom.create(listType, attrs); wrapItem.appendChild(wrapList); return wrapList; } function indentLI(element) { if (!hasParentInList(ed, element, indented)) { element = splitNestedLists(element, dom); var wrapList = createWrapList(element); wrapList.appendChild(element); attemptMergeWithAdjacent(wrapList.parentNode, false); attemptMergeWithAdjacent(wrapList, false); indented.push(element); } } this.process({ 'LI': indentLI, defaultAction: this.adjustPaddingFunction(true) }); }, outdent: function() { var t = this, ed = t.ed, dom = ed.dom, outdented = []; function outdentLI(element) { var listElement, targetParent, align; if (!hasParentInList(ed, element, outdented)) { if (dom.getStyle(element, 'margin-left') !== '' || dom.getStyle(element, 'padding-left') !== '') { return t.adjustPaddingFunction(false)(element); } align = dom.getStyle(element, 'text-align', true); if (align === 'center' || align === 'right') { dom.setStyle(element, 'text-align', 'left'); return; } element = splitNestedLists(element, dom); listElement = element.parentNode; targetParent = element.parentNode.parentNode; if (targetParent.tagName === 'P') { dom.split(targetParent, element.parentNode); } else { dom.split(listElement, element); if (targetParent.tagName === 'LI') { // Nested list, need to split the LI and go back out to the OL/UL element. dom.split(targetParent, element); } else if (!dom.is(targetParent, 'ol,ul')) { dom.rename(element, 'p'); } } outdented.push(element); } } this.process({ 'LI': outdentLI, defaultAction: this.adjustPaddingFunction(false) }); each(outdented, attemptMergeWithAdjacent); }, process: function(actions) { var t = this, sel = t.ed.selection, dom = t.ed.dom, selectedBlocks, r; function processElement(element) { dom.removeClass(element, '_mce_act_on'); if (!element || element.nodeType !== 1) { return; } element = findItemToOperateOn(element, dom); var action = actions[element.tagName]; if (!action) { action = actions.defaultAction; } action(element); } function recurse(element) { t.splitSafeEach(element.childNodes, processElement); } function brAtEdgeOfSelection(container, offset) { return offset >= 0 && container.hasChildNodes() && offset < container.childNodes.length && container.childNodes[offset].tagName === 'BR'; } selectedBlocks = sel.getSelectedBlocks(); if (selectedBlocks.length === 0) { selectedBlocks = [ dom.getRoot() ]; } r = sel.getRng(true); if (!r.collapsed) { if (brAtEdgeOfSelection(r.endContainer, r.endOffset - 1)) { r.setEnd(r.endContainer, r.endOffset - 1); sel.setRng(r); } if (brAtEdgeOfSelection(r.startContainer, r.startOffset)) { r.setStart(r.startContainer, r.startOffset + 1); sel.setRng(r); } } if (tinymce.isIE8) { // append a zero sized nbsp so that caret is restored correctly using bookmark var s = t.ed.selection.getNode(); if (s.tagName === 'LI' && !(s.parentNode.lastChild === s)) { var i = t.ed.getDoc().createTextNode('\uFEFF'); s.appendChild(i); } } bookmark = sel.getBookmark(); actions.OL = actions.UL = recurse; t.splitSafeEach(selectedBlocks, processElement); sel.moveToBookmark(bookmark); bookmark = null; // Avoids table or image handles being left behind in Firefox. t.ed.execCommand('mceRepaint'); }, splitSafeEach: function(elements, f) { if (tinymce.isGecko && (/Firefox\/[12]\.[0-9]/.test(navigator.userAgent) || /Firefox\/3\.[0-4]/.test(navigator.userAgent))) { this.classBasedEach(elements, f); } else { each(elements, f); } }, classBasedEach: function(elements, f) { var dom = this.ed.dom, nodes, element; // Mark nodes each(elements, function(element) { dom.addClass(element, '_mce_act_on'); }); nodes = dom.select('._mce_act_on'); while (nodes.length > 0) { element = nodes.shift(); dom.removeClass(element, '_mce_act_on'); f(element); nodes = dom.select('._mce_act_on'); } }, adjustPaddingFunction: function(isIndent) { var indentAmount, indentUnits, ed = this.ed; indentAmount = ed.settings.indentation; indentUnits = /[a-z%]+/i.exec(indentAmount); indentAmount = parseInt(indentAmount, 10); return function(element) { var currentIndent, newIndentAmount; currentIndent = parseInt(ed.dom.getStyle(element, 'margin-left') || 0, 10) + parseInt(ed.dom.getStyle(element, 'padding-left') || 0, 10); if (isIndent) { newIndentAmount = currentIndent + indentAmount; } else { newIndentAmount = currentIndent - indentAmount; } ed.dom.setStyle(element, 'padding-left', ''); ed.dom.setStyle(element, 'margin-left', newIndentAmount > 0 ? newIndentAmount + indentUnits : ''); }; }, getInfo: function() { return { longname : 'Lists', author : 'Moxiecode Systems AB', authorurl : 'http://tinymce.moxiecode.com', infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/lists', version : tinymce.majorVersion + "." + tinymce.minorVersion }; } }); tinymce.PluginManager.add("lists", tinymce.plugins.Lists); }()); webcit-8.24-dfsg.orig/tiny_mce/plugins/lists/editor_plugin.js0000644000175000017500000002620212271477123024232 0ustar michaelmichael(function(){var e=tinymce.each,r=tinymce.dom.Event,g;function p(t,s){while(t&&(t.nodeType===8||(t.nodeType===3&&/^[ \t\n\r]*$/.test(t.nodeValue)))){t=s(t)}return t}function b(s){return p(s,function(t){return t.previousSibling})}function i(s){return p(s,function(t){return t.nextSibling})}function d(s,u,t){return s.dom.getParent(u,function(v){return tinymce.inArray(t,v)!==-1})}function n(s){return s&&(s.tagName==="OL"||s.tagName==="UL")}function c(u,v){var t,w,s;t=b(u.lastChild);while(n(t)){w=t;t=b(w.previousSibling)}if(w){s=v.create("li",{style:"list-style-type: none;"});v.split(u,w);v.insertAfter(s,w);s.appendChild(w);s.appendChild(w);u=s.previousSibling}return u}function m(t,s,u){t=a(t,s,u);return o(t,s,u)}function a(u,s,v){var t=b(u.previousSibling);if(t){return h(t,u,s?t:false,v)}else{return u}}function o(u,t,v){var s=i(u.nextSibling);if(s){return h(u,s,t?s:false,v)}else{return u}}function h(u,s,t,v){if(l(u,s,!!t,v)){return f(u,s,t)}else{if(u&&u.tagName==="LI"&&n(s)){u.appendChild(s)}}return s}function l(u,t,s,v){if(!u||!t){return false}else{if(u.tagName==="LI"&&t.tagName==="LI"){return t.style.listStyleType==="none"||j(t)}else{if(n(u)){return(u.tagName===t.tagName&&(s||u.style.listStyleType===t.style.listStyleType))||q(t)}else{if(v&&u.tagName==="P"&&t.tagName==="P"){return true}else{return false}}}}}function q(t){var s=i(t.firstChild),u=b(t.lastChild);return s&&u&&n(t)&&s===u&&(n(s)||s.style.listStyleType==="none"||j(s))}function j(u){var t=i(u.firstChild),s=b(u.lastChild);return t&&s&&t===s&&n(t)}function f(w,v,s){var u=b(w.lastChild),t=i(v.firstChild);if(w.tagName==="P"){w.appendChild(w.ownerDocument.createElement("br"))}while(v.firstChild){w.appendChild(v.firstChild)}if(s){w.style.listStyleType=s.style.listStyleType}v.parentNode.removeChild(v);h(u,t,false);return w}function k(t,u){var s;if(!u.is(t,"li,ol,ul")){s=u.getParent(t,"li");if(s){t=s}}return t}tinymce.create("tinymce.plugins.Lists",{init:function(A,y){var w=0;var t=1;var H=2;var J=3;var z=J;function C(M){return M.keyCode===9&&(A.queryCommandState("InsertUnorderedList")||A.queryCommandState("InsertOrderedList"))}function x(){var M=B();var O=M.parentNode.parentNode;var N=M.parentNode.lastChild===M;return N&&!u(O)&&K(M)}function u(M){if(n(M)){return M.parentNode&&M.parentNode.tagName==="LI"}else{return M.tagName==="LI"}}function D(){return A.selection.isCollapsed()&&K(B())}function B(){var M=A.selection.getStart();return((M.tagName=="BR"||M.tagName=="")&&M.parentNode.tagName=="LI")?M.parentNode:M}function K(M){var N=M.childNodes.length;if(M.tagName==="LI"){return N==0?true:N==1&&(M.firstChild.tagName==""||F(M)||G(M))}return false}function F(M){return tinymce.isWebKit&&M.firstChild.nodeName=="BR"}function G(M){var N=tinymce.grep(M.parentNode.childNodes,function(Q){return Q.nodeName=="LI"});var O=M==N[N.length-1];var P=M.firstChild;return tinymce.isIE9&&O&&(P.nodeValue==String.fromCharCode(160)||P.nodeValue==String.fromCharCode(32))}function L(M){return M.keyCode===13}function I(M){if(C(M)){return w}else{if(L(M)&&x()){return H}else{if(L(M)&&D()){return t}else{return J}}}}function s(M,N){if(z==w||z==t){return r.cancel(N)}}function v(P,R){var U;if(!tinymce.isGecko){return}var N=P.selection.getStart();if(R.keyCode!=8||N.tagName!=="IMG"){return}function O(Y){var Z=Y.firstChild;var X=null;do{if(!Z){break}if(Z.tagName==="LI"){X=Z}}while(Z=Z.nextSibling);return X}function W(Y,X){while(Y.childNodes.length>0){X.appendChild(Y.childNodes[0])}}U=N.parentNode.previousSibling;if(!U){return}var S;if(U.tagName==="UL"||U.tagName==="OL"){S=U}else{if(U.previousSibling&&(U.previousSibling.tagName==="UL"||U.previousSibling.tagName==="OL")){S=U.previousSibling}else{return}}var V=O(S);var M=P.dom.createRng();M.setStart(V,1);M.setEnd(V,1);P.selection.setRng(M);P.selection.collapse(true);var Q=P.selection.getBookmark();var T=N.parentNode.cloneNode(true);if(T.tagName==="P"||T.tagName==="DIV"){W(T,V)}else{V.appendChild(T)}N.parentNode.parentNode.removeChild(N.parentNode);P.selection.moveToBookmark(Q)}function E(M){var N=A.dom.getParent(M,"ol,ul");if(N!=null){var O=N.lastChild;O.appendChild(A.getDoc().createElement(""));A.selection.setCursorLocation(O,0)}}this.ed=A;A.addCommand("Indent",this.indent,this);A.addCommand("Outdent",this.outdent,this);A.addCommand("InsertUnorderedList",function(){this.applyList("UL","OL")},this);A.addCommand("InsertOrderedList",function(){this.applyList("OL","UL")},this);A.onInit.add(function(){A.editorCommands.addCommands({outdent:function(){var N=A.selection,O=A.dom;function M(P){P=O.getParent(P,O.isBlock);return P&&(parseInt(A.dom.getStyle(P,"margin-left")||0,10)+parseInt(A.dom.getStyle(P,"padding-left")||0,10))>0}return M(N.getStart())||M(N.getEnd())||A.queryCommandState("InsertOrderedList")||A.queryCommandState("InsertUnorderedList")}},"state")});A.onKeyUp.add(function(N,O){if(z==w){N.execCommand(O.shiftKey?"Outdent":"Indent",true,null);z=J;return r.cancel(O)}else{if(z==t){var M=B();var Q=N.settings.list_outdent_on_enter===true||O.shiftKey;N.execCommand(Q?"Outdent":"Indent",true,null);if(tinymce.isIE){E(M)}return r.cancel(O)}else{if(z==H){if(tinymce.isIE8){var P=N.getDoc().createTextNode("\uFEFF");N.selection.getNode().appendChild(P)}else{if(tinymce.isIE9){N.execCommand("Outdent");return r.cancel(O)}}}}}});A.onKeyDown.add(function(M,N){z=I(N)});A.onKeyDown.add(s);A.onKeyDown.add(v);A.onKeyPress.add(s)},applyList:function(y,v){var C=this,z=C.ed,I=z.dom,s=[],H=false,u=false,w=false,B,G=z.selection.getSelectedBlocks();function E(t){if(t&&t.tagName==="BR"){I.remove(t)}}function F(M){var N=I.create(y),t;function L(O){if(O.style.marginLeft||O.style.paddingLeft){C.adjustPaddingFunction(false)(O)}}if(M.tagName==="LI"){}else{if(M.tagName==="P"||M.tagName==="DIV"||M.tagName==="BODY"){K(M,function(P,O,Q){J(P,O,M.tagName==="BODY"?null:P.parentNode);t=P.parentNode;L(t);E(O)});if(M.tagName==="P"||G.length>1){I.split(t.parentNode.parentNode,t.parentNode)}m(t.parentNode,true);return}else{t=I.create("li");I.insertAfter(t,M);t.appendChild(M);L(M);M=t}}I.insertAfter(N,M);N.appendChild(M);m(N,true);s.push(M)}function J(Q,L,O){var t,P=Q,N,M;while(!I.isBlock(Q.parentNode)&&Q.parentNode!==I.getRoot()){Q=I.split(Q.parentNode,Q.previousSibling);Q=Q.nextSibling;P=Q}if(O){t=O.cloneNode(true);Q.parentNode.insertBefore(t,Q);while(t.firstChild){I.remove(t.firstChild)}t=I.rename(t,"li")}else{t=I.create("li");Q.parentNode.insertBefore(t,Q)}while(P&&P!=L){N=P.nextSibling;t.appendChild(P);P=N}if(t.childNodes.length===0){t.innerHTML='
    '}F(t)}function K(Q,T){var N,R,O=3,L=1,t="br,ul,ol,p,div,h1,h2,h3,h4,h5,h6,table,blockquote,address,pre,form,center,dl";function P(X,U){var V=I.createRng(),W;g.keep=true;z.selection.moveToBookmark(g);g.keep=false;W=z.selection.getRng(true);if(!U){U=X.parentNode.lastChild}V.setStartBefore(X);V.setEndAfter(U);return !(V.compareBoundaryPoints(O,W)>0||V.compareBoundaryPoints(L,W)<=0)}function S(U){if(U.nextSibling){return U.nextSibling}if(!I.isBlock(U.parentNode)&&U.parentNode!==I.getRoot()){return S(U.parentNode)}}N=Q.firstChild;var M=false;e(I.select(t,Q),function(V){var U;if(V.hasAttribute&&V.hasAttribute("_mce_bogus")){return true}if(P(N,V)){I.addClass(V,"_mce_tagged_br");N=S(V)}});M=(N&&P(N,undefined));N=Q.firstChild;e(I.select(t,Q),function(V){var U=S(V);if(V.hasAttribute&&V.hasAttribute("_mce_bogus")){return true}if(I.hasClass(V,"_mce_tagged_br")){T(N,V,R);R=null}else{R=V}N=U});if(M){T(N,undefined,R)}}function D(t){K(t,function(M,L,N){J(M,L);E(L);E(N)})}function A(t){if(tinymce.inArray(s,t)!==-1){return}if(t.parentNode.tagName===v){I.split(t.parentNode,t);F(t);o(t.parentNode,false)}s.push(t)}function x(M){var O,N,L,t;if(tinymce.inArray(s,M)!==-1){return}M=c(M,I);while(I.is(M.parentNode,"ol,ul,li")){I.split(M.parentNode,M)}s.push(M);M=I.rename(M,"p");L=m(M,false,z.settings.force_br_newlines);if(L===M){O=M.firstChild;while(O){if(I.isBlock(O)){O=I.split(O.parentNode,O);t=true;N=O.nextSibling&&O.nextSibling.firstChild}else{N=O.nextSibling;if(t&&O.tagName==="BR"){I.remove(O)}t=false}O=N}}}e(G,function(t){t=k(t,I);if(t.tagName===v||(t.tagName==="LI"&&t.parentNode.tagName===v)){u=true}else{if(t.tagName===y||(t.tagName==="LI"&&t.parentNode.tagName===y)){H=true}else{w=true}}});if(w||u||G.length===0){B={LI:A,H1:F,H2:F,H3:F,H4:F,H5:F,H6:F,P:F,BODY:F,DIV:G.length>1?F:D,defaultAction:D}}else{B={defaultAction:x}}this.process(B)},indent:function(){var u=this.ed,w=u.dom,x=[];function s(z){var y=w.create("li",{style:"list-style-type: none;"});w.insertAfter(y,z);return y}function t(B){var y=s(B),D=w.getParent(B,"ol,ul"),C=D.tagName,E=w.getStyle(D,"list-style-type"),A={},z;if(E!==""){A.style="list-style-type: "+E+";"}z=w.create(C,A);y.appendChild(z);return z}function v(z){if(!d(u,z,x)){z=c(z,w);var y=t(z);y.appendChild(z);m(y.parentNode,false);m(y,false);x.push(z)}}this.process({LI:v,defaultAction:this.adjustPaddingFunction(true)})},outdent:function(){var v=this,u=v.ed,w=u.dom,s=[];function x(t){var z,y,A;if(!d(u,t,s)){if(w.getStyle(t,"margin-left")!==""||w.getStyle(t,"padding-left")!==""){return v.adjustPaddingFunction(false)(t)}A=w.getStyle(t,"text-align",true);if(A==="center"||A==="right"){w.setStyle(t,"text-align","left");return}t=c(t,w);z=t.parentNode;y=t.parentNode.parentNode;if(y.tagName==="P"){w.split(y,t.parentNode)}else{w.split(z,t);if(y.tagName==="LI"){w.split(y,t)}else{if(!w.is(y,"ol,ul")){w.rename(t,"p")}}}s.push(t)}}this.process({LI:x,defaultAction:this.adjustPaddingFunction(false)});e(s,m)},process:function(y){var D=this,w=D.ed.selection,z=D.ed.dom,C,u;function x(s){z.removeClass(s,"_mce_act_on");if(!s||s.nodeType!==1){return}s=k(s,z);var t=y[s.tagName];if(!t){t=y.defaultAction}t(s)}function v(s){D.splitSafeEach(s.childNodes,x)}function B(s,t){return t>=0&&s.hasChildNodes()&&t0){t=s.shift();w.removeClass(t,"_mce_act_on");u(t);s=w.select("._mce_act_on")}},adjustPaddingFunction:function(u){var s,v,t=this.ed;s=t.settings.indentation;v=/[a-z%]+/i.exec(s);s=parseInt(s,10);return function(w){var y,x;y=parseInt(t.dom.getStyle(w,"margin-left")||0,10)+parseInt(t.dom.getStyle(w,"padding-left")||0,10);if(u){x=y+s}else{x=y-s}t.dom.setStyle(w,"padding-left","");t.dom.setStyle(w,"margin-left",x>0?x+v:"")}},getInfo:function(){return{longname:"Lists",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/lists",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("lists",tinymce.plugins.Lists)}());webcit-8.24-dfsg.orig/tiny_mce/plugins/style/0000755000175000017500000000000012271477123021030 5ustar michaelmichaelwebcit-8.24-dfsg.orig/tiny_mce/plugins/style/editor_plugin_src.js0000644000175000017500000000300212271477123025074 0ustar michaelmichael/** * editor_plugin_src.js * * Copyright 2009, Moxiecode Systems AB * Released under LGPL License. * * License: http://tinymce.moxiecode.com/license * Contributing: http://tinymce.moxiecode.com/contributing */ (function() { tinymce.create('tinymce.plugins.StylePlugin', { init : function(ed, url) { // Register commands ed.addCommand('mceStyleProps', function() { ed.windowManager.open({ file : url + '/props.htm', width : 480 + parseInt(ed.getLang('style.delta_width', 0)), height : 320 + parseInt(ed.getLang('style.delta_height', 0)), inline : 1 }, { plugin_url : url, style_text : ed.selection.getNode().style.cssText }); }); ed.addCommand('mceSetElementStyle', function(ui, v) { if (e = ed.selection.getNode()) { ed.dom.setAttrib(e, 'style', v); ed.execCommand('mceRepaint'); } }); ed.onNodeChange.add(function(ed, cm, n) { cm.setDisabled('styleprops', n.nodeName === 'BODY'); }); // Register buttons ed.addButton('styleprops', {title : 'style.desc', cmd : 'mceStyleProps'}); }, getInfo : function() { return { longname : 'Style', author : 'Moxiecode Systems AB', authorurl : 'http://tinymce.moxiecode.com', infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/style', version : tinymce.majorVersion + "." + tinymce.minorVersion }; } }); // Register plugin tinymce.PluginManager.add('style', tinymce.plugins.StylePlugin); })();webcit-8.24-dfsg.orig/tiny_mce/plugins/style/langs/0000755000175000017500000000000012271477123022134 5ustar michaelmichaelwebcit-8.24-dfsg.orig/tiny_mce/plugins/style/langs/bg_dlg.js0000644000175000017500000000770112271477123023715 0ustar michaelmichaeltinyMCE.addI18n('bg.style_dlg',{"text_lineheight":"\u0412\u0438\u0441\u043e\u0447\u0438\u043d\u0430 \u043d\u0430 \u0440\u0435\u0434\u0430","text_variant":"\u041f\u0440\u043e\u043c\u0435\u043d\u043b\u0438\u0432","text_style":"\u0421\u0442\u0438\u043b","text_weight":"\u0422\u0435\u0433\u043b\u043e","text_size":"\u0420\u0430\u0437\u043c\u0435\u0440","text_font":"\u0428\u0440\u0438\u0444\u0442","text_props":"\u0422\u0435\u043a\u0441\u0442","positioning_tab":"\u041f\u043e\u0437\u0438\u0446\u0438\u043e\u043d\u0438\u0440\u0430\u043d\u0435","list_tab":"\u0421\u043f\u0438\u0441\u044a\u043a","border_tab":"\u0420\u0430\u043c\u043a\u0430","box_tab":"\u041a\u0443\u0442\u0438\u044f","block_tab":"\u0411\u043b\u043e\u043a","background_tab":"\u0424\u043e\u043d","text_tab":"\u0422\u0435\u043a\u0441\u0442",apply:"\u041f\u043e\u0442\u0432\u044a\u0440\u0434\u0438",title:"\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0430\u0439 CSS \u0441\u0442\u0438\u043b",clip:"\u041e\u0442\u0440\u0435\u0436\u0438",placement:"\u0420\u0430\u0437\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435",overflow:"Overflow",zindex:"Z-index",visibility:"\u0412\u0438\u0434\u0438\u043c\u043e\u0441\u0442","positioning_type":"\u0422\u0438\u043f",position:"\u041f\u043e\u0437\u0438\u0446\u0438\u044f","bullet_image":"\u0413\u0440\u0430\u0444\u0438\u043a\u0430 \u043d\u0430 \u0432\u043e\u0434\u0430\u0447\u0438\u0442\u0435","list_type":"\u0422\u0438\u043f",color:"\u0426\u0432\u044f\u0442",height:"\u0412\u0438\u0441\u043e\u0447\u0438\u043d\u0430",width:"\u0428\u0438\u0440\u0438\u043d\u0430",style:"\u0421\u0442\u0438\u043b",margin:"Margin",left:"\u041b\u044f\u0432\u043e",bottom:"\u0414\u043e\u043b\u0443",right:"\u0414\u044f\u0441\u043d\u043e",top:"\u0413\u043e\u0440\u0435",same:"\u0417\u0430 \u0432\u0441\u0438\u0447\u043a\u0438",padding:"Padding","box_clear":"\u0418\u0437\u0447\u0438\u0441\u0442\u0438","box_float":"Float","box_height":"\u0412\u0438\u0441\u043e\u0447\u0438\u043d\u0430","box_width":"\u0428\u0438\u0440\u0438\u043d\u0430","block_display":"\u041f\u043e\u043a\u0430\u0437\u0432\u0430\u043d\u0435","block_whitespace":"\u0418\u043d\u0442\u0435\u0440\u0432\u0430\u043b","block_text_indent":"\u041e\u0442\u0441\u0442\u044a\u043f \u043d\u0430 \u0442\u0435\u043a\u0441\u0442\u0430","block_text_align":"\u041f\u043e\u0434\u0440\u0430\u0432\u043d\u044f\u0432\u0430\u043d\u0435 \u043d\u0430 \u0442\u0435\u043a\u0441\u0442\u0430","block_vertical_alignment":"\u0412\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u043d\u043e \u043f\u043e\u0434\u0440\u0430\u0432\u043d\u044f\u0432\u0430\u043d\u0435","block_letterspacing":"\u0420\u0430\u0437\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043c\u0435\u0436\u0434\u0443 \u0431\u0443\u043a\u0432\u0438\u0442\u0435","block_wordspacing":"\u0420\u0430\u0437\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043c\u0435\u0436\u0434\u0443 \u0434\u0443\u043c\u0438\u0442\u0435","background_vpos":"\u0412\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u043d\u0430 \u043f\u043e\u0437\u0438\u0446\u0438\u044f","background_hpos":"\u0425\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u043d\u0430 \u043f\u043e\u0437\u0438\u0446\u0438\u044f","background_attachment":"\u041f\u0440\u0438\u043a\u0440\u0435\u043f\u0438","background_repeat":"\u041f\u043e\u0432\u0442\u043e\u0440\u0438","background_image":"\u041a\u0430\u0440\u0442\u0438\u043d\u043a\u0430 \u0437\u0430 \u0444\u043e\u043d","background_color":"\u0426\u0432\u044f\u0442 \u0437\u0430 \u0444\u043e\u043d","text_none":"\u043d\u0438\u0449\u043e","text_blink":"\u043c\u0438\u0433\u0430","text_case":"\u0420\u0435\u0433\u0438\u0441\u0442\u044a\u0440","text_striketrough":"\u0437\u0430\u0447\u0435\u0440\u0442\u0430\u043d","text_underline":"\u043f\u043e\u0434\u0447\u0435\u0440\u0442\u0430\u043d","text_overline":"\u043d\u0430\u0434\u0447\u0435\u0440\u0442\u0430\u043d","text_decoration":"\u0414\u0435\u043a\u043e\u0440\u0430\u0446\u0438\u044f","text_color":"\u0426\u0432\u044f\u0442",text:"Text",background:"Background",block:"Block",box:"Box",border:"Border",list:"List"});webcit-8.24-dfsg.orig/tiny_mce/plugins/style/langs/fr_dlg.js0000644000175000017500000000327012271477123023731 0ustar michaelmichaeltinyMCE.addI18n('fr.style_dlg',{"text_lineheight":"Hauteur de ligne","text_variant":"Variante","text_style":"Style","text_weight":"Gras","text_size":"Taille","text_font":"Police","text_props":"Texte","positioning_tab":"Positionnement","list_tab":"Liste","border_tab":"Bordure","box_tab":"Bo\u00eete","block_tab":"Bloc","background_tab":"Fond","text_tab":"Texte",apply:"Appliquer",title:"\u00c9diter la feuille de style",clip:"Clip",placement:"Placement",overflow:"D\u00e9bordement",zindex:"Z-index",visibility:"Visibilit\u00e9","positioning_type":"Type",position:"Position","bullet_image":"Image de puce","list_type":"Type",color:"Couleur",height:"Hauteur",width:"Largeur",style:"Style",margin:"Marge",left:"Gauche",bottom:"Bas",right:"Droit",top:"Haut",same:"Identique pour tous",padding:"Espacement","box_clear":"Vider","box_float":"Flottant","box_height":"Hauteur","box_width":"Largeur","block_display":"Affichage","block_whitespace":"Fin de ligne","block_text_indent":"Indentation du texte","block_text_align":"Alignement du texte","block_vertical_alignment":"Alignement vertical","block_letterspacing":"Espacement des lettres","block_wordspacing":"Espacement des mots ","background_vpos":"Position verticale","background_hpos":"Position horizontale","background_attachment":"Attachement","background_repeat":"R\u00e9p\u00e9ter","background_image":"Image de fond","background_color":"Couleur de fond","text_none":"aucun","text_blink":"clignotant","text_case":"Casse","text_striketrough":"barr\u00e9","text_underline":"soulign\u00e9","text_overline":"ligne au-dessus","text_decoration":"D\u00e9coration","text_color":"Couleur",text:"Text",background:"Background",block:"Block",box:"Box",border:"Border",list:"List"});webcit-8.24-dfsg.orig/tiny_mce/plugins/style/langs/zh-cn_dlg.js0000644000175000017500000000372512271477123024346 0ustar michaelmichaeltinyMCE.addI18n('zh-cn.style_dlg',{"text_lineheight":"\u884c\u9ad8","text_variant":"\u53d8\u5f62","text_style":"\u6837\u5f0f","text_weight":"\u7c97\u7ec6","text_size":"\u5927\u5c0f","text_font":"\u5b57\u4f53","text_props":"\u6587\u672c","positioning_tab":"\u4f4d\u7f6e","list_tab":"\u5217\u8868","border_tab":"\u8fb9\u6846","box_tab":"Box","block_tab":"\u533a\u5757","background_tab":"\u80cc\u666f","text_tab":"\u6587\u672c",apply:"\u5e94\u7528",title:"\u7f16\u8f91CSS\u6837\u5f0f",clip:"\u526a\u8f91",placement:"\u653e\u7f6e",overflow:"\u6ea2\u51fa",zindex:"Z-Index",visibility:"\u53ef\u89c1","positioning_type":"\u7c7b\u578b",position:"\u4f4d\u7f6e","bullet_image":"\u56fe\u7247\u9879\u76ee\u7b26\u53f7","list_type":"\u7c7b\u578b",color:"\u989c\u8272",height:"\u9ad8\u5ea6",width:"\u5bbd\u5ea6",style:"\u6837\u5f0f",margin:"\u5916\u8fb9\u8ddd",left:"\u5de6",bottom:"\u4e0b",right:"\u53f3",top:"\u4e0a",same:"\u5168\u90e8\u76f8\u540c",padding:"\u5185\u8fb9\u8ddd","box_clear":"\u6e05\u9664\u6d6e\u52a8","box_float":"\u6d6e\u52a8","box_height":"\u9ad8\u5ea6","box_width":"\u5bbd\u5ea6","block_display":"\u663e\u793a","block_whitespace":"\u7a7a\u683c","block_text_indent":"\u6587\u5b57\u7f29\u6392","block_text_align":"\u6587\u5b57\u5bf9\u9f50","block_vertical_alignment":"\u5782\u76f4\u5bf9\u9f50","block_letterspacing":"\u5b57\u95f4\u8ddd","block_wordspacing":"\u8bcd\u95f4\u8ddd","background_vpos":"\u5782\u76f4\u4f4d\u7f6e","background_hpos":"\u6c34\u5e73\u4f4d\u7f6e","background_attachment":"\u9644\u4ef6","background_repeat":"\u91cd\u590d","background_image":"\u80cc\u666f\u56fe\u7247","background_color":"\u80cc\u666f\u989c\u8272","text_none":"\u65e0","text_blink":"\u95ea\u70c1","text_case":"\u5b57\u4f53\u5f62\u5f0f","text_striketrough":"\u5220\u9664\u7ebf","text_underline":"\u4e0b\u5212\u7ebf","text_overline":"\u4e0a\u5212\u7ebf","text_decoration":"\u5b57\u4f53\u88c5\u9970","text_color":"\u989c\u8272",text:"Text",background:"Background",block:"Block",box:"Box",border:"Border",list:"List"});webcit-8.24-dfsg.orig/tiny_mce/plugins/style/langs/de_dlg.js0000644000175000017500000000344012271477123023711 0ustar michaelmichaeltinyMCE.addI18n('de.style_dlg',{"text_lineheight":"Zeilenh\u00f6he","text_variant":"Variante","text_style":"Stil","text_weight":"Dicke","text_size":"Gr\u00f6\u00dfe","text_font":"Schriftart","text_props":"Text","positioning_tab":"Positionierung","list_tab":"Liste","border_tab":"Rahmen","box_tab":"Box","block_tab":"Block","background_tab":"Hintergrund","text_tab":"Text",apply:"\u00dcbernehmen",title:"CSS-Styles bearbeiten",clip:"Ausschnitt",placement:"Platzierung",overflow:"Verhalten bei \u00dcbergr\u00f6\u00dfe",zindex:"Z-Wert",visibility:"Sichtbar","positioning_type":"Art der Positionierung",position:"Positionierung","bullet_image":"Listenpunkt-Grafik","list_type":"Listenpunkt-Art",color:"Textfarbe",height:"H\u00f6he",width:"Breite",style:"Format",margin:"\u00c4u\u00dferer Abstand",left:"Links",bottom:"Unten",right:"Rechts",top:"Oben",same:"Alle gleich",padding:"Innerer Abstand","box_clear":"Umflie\u00dfung verhindern","box_float":"Umflie\u00dfung","box_height":"H\u00f6he","box_width":"Breite","block_display":"Umbruchverhalten","block_whitespace":"Automatischer Umbruch","block_text_indent":"Einr\u00fcckung","block_text_align":"Ausrichtung","block_vertical_alignment":"Vertikale Ausrichtung","block_letterspacing":"Buchstabenabstand","block_wordspacing":"Wortabstand","background_vpos":"Position Y","background_hpos":"Position X","background_attachment":"Wasserzeicheneffekt","background_repeat":"Wiederholung","background_image":"Hintergrundbild","background_color":"Hintergrundfarbe","text_none":"keine","text_blink":"blinkend","text_case":"Schreibung","text_striketrough":"durchgestrichen","text_underline":"unterstrichen","text_overline":"\u00fcberstrichen","text_decoration":"Gestaltung","text_color":"Farbe",text:"Text",background:"Hintergrund",block:"Block",box:"Box",border:"Rahmen",list:"Liste"});webcit-8.24-dfsg.orig/tiny_mce/plugins/style/langs/fi_dlg.js0000644000175000017500000000334212271477123023720 0ustar michaelmichaeltinyMCE.addI18n('fi.style_dlg',{"text_lineheight":"Rivin korkeus","text_variant":"Variantti","text_style":"Tyyli","text_weight":"Paino","text_size":"Koko","text_font":"Kirjasin","text_props":"Teksti","positioning_tab":"Sijainti","list_tab":"Lista","border_tab":"Kehys","box_tab":"Laatikko","block_tab":"Palkki","background_tab":"Tausta","text_tab":"Teksti",apply:"K\u00e4yt\u00e4",title:"Muokkaa CSS-tyyli\u00e4",clip:"Leike",placement:"Sijoittelu",overflow:"Ylivuoto",zindex:"Z-indeksi",visibility:"N\u00e4kyvyys","positioning_type":"Tyyppi",position:"Sijainti","bullet_image":"Listauskuva","list_type":"Tyyppi",color:"V\u00e4ri",height:"Korkeus",width:"Leveys",style:"Tyyli",margin:"Marginaali",left:"Vasemmalla",bottom:"Alhaalla",right:"Oikealla",top:"Ylh\u00e4\u00e4ll\u00e4",same:"Sama kaikille",padding:"Tyhj\u00e4 tila","box_clear":"Nollaus","box_float":"Kellunta","box_height":"Korkeus","box_width":"Leveys","block_display":"N\u00e4ytt\u00f6","block_whitespace":"Tyhj\u00e4 tila","block_text_indent":"Tekstin sisennys","block_text_align":"Tekstin asettelu","block_vertical_alignment":"Pystyasettelu","block_letterspacing":"Kirjainten v\u00e4listys","block_wordspacing":"Sanojen v\u00e4listys","background_vpos":"Pystyasettelu","background_hpos":"Vaaka-asettelu","background_attachment":"Liite","background_repeat":"Toistuvuus","background_image":"Taustakuva","background_color":"Taustav\u00e4ri","text_none":"ei mit\u00e4\u00e4n","text_blink":"V\u00e4l\u00e4hdys","text_case":"Isot/pienet kirjaimet","text_striketrough":"Yliviivattu","text_underline":"Alleviivattu (Ctrl+U)","text_overline":"Yliviivattu","text_decoration":"Koristelu","text_color":"V\u00e4ri",text:"Teksti",background:"Tausta",block:"Lohko",box:"Laatikko",border:"Reunus",list:"Lista"});webcit-8.24-dfsg.orig/tiny_mce/plugins/style/langs/et_dlg.js0000644000175000017500000000324312271477123023732 0ustar michaelmichaeltinyMCE.addI18n('et.style_dlg',{"text_lineheight":"Joone k\u00f5rgus","text_variant":"Variant","text_style":"Stiil","text_weight":"Raskus","text_size":"Suurus","text_font":"Font","text_props":"Tekst","positioning_tab":"Positsioneerimine","list_tab":"Nimekiri","border_tab":"Raam","box_tab":"Kast","block_tab":"Plokk","background_tab":"Taust","text_tab":"Tekst",apply:"Rakenda",title:"Muuda CSS stiili",clip:"Klipp",placement:"Asetus",overflow:"\u00dclevool",zindex:"Z-viit",visibility:"N\u00e4htavus","positioning_type":"T\u00fc\u00fcp",position:"Positsioon","bullet_image":"Punkt pilt","list_type":"T\u00fc\u00fcp",color:"V\u00e4rv",height:"K\u00f5rgus",width:"Laius",style:"Stiil",margin:"Serv",left:"Vasakul",bottom:"All",right:"Paremal",top:"\u00dcleval",same:"Sama k\u00f5igile",padding:"T\u00e4idis","box_clear":"Puhas","box_float":"H\u00f5ljuv","box_height":"K\u00f5rgus","box_width":"Laius","block_display":"Kuva","block_whitespace":"T\u00fchimik","block_text_indent":"Teksti taandus","block_text_align":"Teksti joondus","block_vertical_alignment":"Vertikaalne joondus","block_letterspacing":"T\u00e4he avardamine","block_wordspacing":"S\u00f5nade avardamine","background_vpos":"Vertikaalne asend","background_hpos":"Horisontaalne asend","background_attachment":"Manus","background_repeat":"Kordus","background_image":"Tausta pilt","background_color":"Tausta v\u00e4rv","text_none":"mitte \u00fckski","text_blink":"vilgutus","text_case":"Kast","text_striketrough":"l\u00e4bikriipsutus","text_underline":"alajoon","text_overline":"\u00fclejoon","text_decoration":"Dekoratioon","text_color":"V\u00e4rv",text:"Text",background:"Background",block:"Block",box:"Box",border:"Border",list:"List"});webcit-8.24-dfsg.orig/tiny_mce/plugins/style/langs/es_dlg.js0000644000175000017500000000326312271477123023733 0ustar michaelmichaeltinyMCE.addI18n('es.style_dlg',{"text_lineheight":"Ancho de la fila","text_variant":"Variante","text_style":"Estilo","text_weight":"Peso","text_size":"Tama\u00f1o","text_font":"Fuente","text_props":"Texto","positioning_tab":"Posici\u00f3n","list_tab":"Lista","border_tab":"Borde","box_tab":"Caja","block_tab":"Bloque","background_tab":"Fondo","text_tab":"Texto",apply:"Aplicar",title:"Editar Estilo CSS",clip:"Clip",placement:"Placement",overflow:"Overflow",zindex:"Z-index",visibility:"Visibilidad","positioning_type":"Tipo",position:"Posici\u00f3n","bullet_image":"Imagen de la vi\u00f1eta","list_type":"Tipo",color:"Color",height:"Alto",width:"Ancho",style:"Estilo",margin:"Margen",left:"Izquierda",bottom:"Debajo",right:"Derecha",top:"Arriba",same:"Lo mismo en todos",padding:"Padding","box_clear":"Clear","box_float":"Float","box_height":"Alto","box_width":"Ancho","block_display":"Display","block_whitespace":"Espacio en blanco","block_text_indent":"Sangr\u00eda","block_text_align":"Alineaci\u00f3n del texto","block_vertical_alignment":"Alineaci\u00f3n vertical","block_letterspacing":"Espacio entre letra","block_wordspacing":"Espacio entre palabra","background_vpos":"Posici\u00f3n vertical","background_hpos":"Posici\u00f3n horizontal","background_attachment":"Adjunto","background_repeat":"Repetici\u00f3n","background_image":"Imagen de fondo","background_color":"Color de fondo","text_none":"Ninguno","text_blink":"Parpadeo","text_case":"Min\u00fas./May\u00fas.","text_striketrough":"Tachado","text_underline":"Subrayado","text_overline":"Subrayado superior","text_decoration":"Decorativos","text_color":"Color",text:"Text",background:"Background",block:"Block",box:"Box",border:"Border",list:"List"});webcit-8.24-dfsg.orig/tiny_mce/plugins/style/langs/da_dlg.js0000644000175000017500000000323312271477123023705 0ustar michaelmichaeltinyMCE.addI18n('da.style_dlg',{"text_lineheight":"Linieh\u00f8jde","text_variant":"Variant","text_style":"Stil","text_weight":"V\u00e6gt","text_size":"St\u00f8rrelse","text_font":"Skrifttype","text_props":"Tekst","positioning_tab":"Positionering","list_tab":"Liste","border_tab":"Kant","box_tab":"Boks","block_tab":"Blok","background_tab":"Baggrund","text_tab":"Tekst",apply:"Anvend",title:"Rediger CSS stil",clip:"Klip",placement:"Placering",overflow:"Overl\u00f8b",zindex:"Z-index",visibility:"Synlighed","positioning_type":"Type",position:"Position","bullet_image":"Punktopstillings-billede","list_type":"Type",color:"Farve",height:"H\u00f8jde",width:"Bredde",style:"Style",margin:"Margin",left:"Venstre",bottom:"Bund",right:"H\u00f8jre",top:"Top",same:"Ens for alle",padding:"Afstand til indhold","box_clear":"Ryd","box_float":"Flydende","box_height":"H\u00f8jde","box_width":"Bredde","block_display":"Vis","block_whitespace":"Mellemrum","block_text_indent":"Tekstindrykning","block_text_align":"Tekstjustering","block_vertical_alignment":"Vertikal justering","block_letterspacing":"Afstand mellem bogstaver","block_wordspacing":"Afstand mellem ord","background_vpos":"Vertikal position","background_hpos":"Horisontal position","background_attachment":"Vedh\u00e6ftede fil","background_repeat":"Gentag","background_image":"Baggrundsbillede","background_color":"Baggrundsfarve","text_none":"ingen","text_blink":"blink","text_case":"Vesaltilstand","text_striketrough":"gennemstreget","text_underline":"understreget","text_overline":"overstreget","text_decoration":"Dekoration","text_color":"Farve",text:"Text",background:"Background",block:"Block",box:"Box",border:"Border",list:"List"});webcit-8.24-dfsg.orig/tiny_mce/plugins/style/langs/el_dlg.js0000644000175000017500000001012512271477123023717 0ustar michaelmichaeltinyMCE.addI18n('el.style_dlg',{"text_lineheight":"\u038e\u03c8\u03bf\u03c2 \u03b3\u03c1\u03b1\u03bc\u03bc\u03ae\u03c2","text_variant":"\u03a0\u03b1\u03c1\u03b1\u03bb\u03bb\u03b1\u03b3\u03ae","text_style":"\u03a3\u03c4\u03c5\u03bb","text_weight":"\u0392\u03ac\u03c1\u03bf\u03c2","text_size":"\u039c\u03ad\u03b3\u03b5\u03b8\u03bf\u03c2 \u03b3\u03c1\u03b1\u03bc\u03bc\u03ac\u03c4\u03c9\u03bd","text_font":"\u0393\u03c1\u03b1\u03bc\u03bc\u03b1\u03c4\u03bf\u03c3\u03b5\u03b9\u03c1\u03ac","text_props":"\u039a\u03b5\u03af\u03bc\u03b5\u03bd\u03bf","positioning_tab":"\u03a4\u03bf\u03c0\u03bf\u03b8\u03ad\u03c4\u03b7\u03c3\u03b7","list_tab":"\u039b\u03af\u03c3\u03c4\u03b1","border_tab":"\u03a0\u03bb\u03b1\u03af\u03c3\u03b9\u03bf","box_tab":"\u039a\u03bf\u03c5\u03c4\u03af","block_tab":"\u039c\u03c0\u03bb\u03bf\u03ba","background_tab":"\u03a6\u03cc\u03bd\u03c4\u03bf","text_tab":"\u039a\u03b5\u03af\u03bc\u03b5\u03bd\u03bf",apply:"\u0395\u03c6\u03b1\u03c1\u03bc\u03bf\u03b3\u03ae",title:"\u0395\u03c0\u03b5\u03be\u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u03b1 \u03a3\u03c4\u03c5\u03bb CSS",clip:"Clip",placement:"\u03a4\u03bf\u03c0\u03bf\u03b8\u03ad\u03c4\u03b7\u03c3\u03b7",overflow:"\u03a5\u03c0\u03b5\u03c1\u03c7\u03b5\u03af\u03bb\u03b9\u03c3\u03b7",zindex:"Z-index",visibility:"\u039f\u03c1\u03b1\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1","positioning_type":"\u03a4\u03cd\u03c0\u03bf\u03c2",position:"\u0398\u03ad\u03c3\u03b7","bullet_image":"\u0395\u03b9\u03ba\u03cc\u03bd\u03b1 \u03c4\u03b5\u03bb\u03b5\u03af\u03b1\u03c2","list_type":"\u03a4\u03cd\u03c0\u03bf\u03c2",color:"\u03a7\u03c1\u03ce\u03bc\u03b1",height:"\u038e\u03c8\u03bf\u03c2",width:"\u03a0\u03bb\u03ac\u03c4\u03bf\u03c2",style:"\u03a3\u03c4\u03c5\u03bb",margin:"\u03a0\u03b5\u03c1\u03b9\u03b8\u03ce\u03c1\u03b9\u03bf",left:"\u0391\u03c1\u03b9\u03c3\u03c4\u03b5\u03c1\u03ac",bottom:"\u039a\u03ac\u03c4\u03c9",right:"\u0394\u03b5\u03be\u03b9\u03ac",top:"\u03a0\u03ac\u03bd\u03c9",same:"\u038a\u03b4\u03b9\u03bf \u03b3\u03b9\u03b1 \u03cc\u03bb\u03b1",padding:"\u0393\u03ad\u03bc\u03b9\u03c3\u03bc\u03b1","box_clear":"Clear","box_float":"Float","box_height":"\u038e\u03c8\u03bf\u03c2","box_width":"\u03a0\u03bb\u03ac\u03c4\u03bf\u03c2","block_display":"\u0395\u03bc\u03c6\u03ac\u03bd\u03b9\u03c3\u03b7","block_whitespace":"\u039a\u03b5\u03bd\u03cc\u03c2 \u03c7\u03ce\u03c1\u03bf\u03c2","block_text_indent":"\u0395\u03c3\u03bf\u03c7\u03ae \u03ba\u03b5\u03b9\u03bc\u03ad\u03bd\u03bf\u03c5","block_text_align":"\u03a3\u03c4\u03bf\u03af\u03c7\u03b9\u03c3\u03b7 \u03ba\u03b5\u03b9\u03bc\u03ad\u03bd\u03bf\u03c5","block_vertical_alignment":"\u039a\u03b1\u03c4\u03b1\u03ba\u03cc\u03c1\u03c5\u03c6\u03b7 \u03c3\u03c4\u03bf\u03af\u03c7\u03b9\u03c3\u03b7","block_letterspacing":"\u0391\u03c0\u03cc\u03c3\u03c4\u03b1\u03c3\u03b7 \u03c7\u03b1\u03c1\u03b1\u03ba\u03c4\u03ae\u03c1\u03c9\u03bd","block_wordspacing":"\u0391\u03c0\u03cc\u03c3\u03c4\u03b1\u03c3\u03b7 \u03bb\u03ad\u03be\u03b5\u03c9\u03bd","background_vpos":"\u039a\u03b1\u03c4\u03b1\u03ba\u03cc\u03c1\u03c5\u03c6\u03b7 \u03b8\u03ad\u03c3\u03b7","background_hpos":"\u039f\u03c1\u03b9\u03b6\u03cc\u03bd\u03c4\u03b9\u03b1 \u03b8\u03ad\u03c3\u03b7","background_attachment":"\u03a0\u03c1\u03bf\u03c3\u03ac\u03c1\u03c4\u03b7\u03bc\u03b1","background_repeat":"\u0395\u03c0\u03b1\u03bd\u03ac\u03bb\u03b7\u03c8\u03b7","background_image":"\u0395\u03b9\u03ba\u03cc\u03bd\u03b1 \u03c6\u03cc\u03bd\u03c4\u03bf\u03c5","background_color":"\u03a7\u03c1\u03ce\u03bc\u03b1 \u03c6\u03cc\u03bd\u03c4\u03bf\u03c5","text_none":"\u039a\u03b1\u03bc\u03af\u03b1","text_blink":"\u039d\u03b1 \u03b1\u03bd\u03b1\u03b2\u03bf\u03c3\u03b2\u03ae\u03bd\u03b5\u03b9","text_case":"\u039a\u03b5\u03c6./\u039c\u03b9\u03ba\u03c1\u03ac","text_striketrough":"\u0394\u03b9\u03b1\u03b3\u03c1\u03ac\u03bc\u03bc\u03b9\u03c3\u03b7","text_underline":"\u03a5\u03c0\u03bf\u03b3\u03c1\u03ac\u03bc\u03bc\u03b9\u03c3\u03b7","text_overline":"\u03a5\u03c0\u03b5\u03c1\u03b3\u03c1\u03ac\u03bc\u03bc\u03b9\u03c3\u03b7","text_decoration":"\u0394\u03b9\u03b1\u03ba\u03cc\u03c3\u03bc\u03b7\u03c3\u03b7","text_color":"\u03a7\u03c1\u03ce\u03bc\u03b1",text:"Text",background:"Background",block:"Block",box:"Box",border:"Border",list:"List"});webcit-8.24-dfsg.orig/tiny_mce/plugins/style/langs/hu_dlg.js0000644000175000017500000000403212271477123023733 0ustar michaelmichaeltinyMCE.addI18n('hu.style_dlg',{"text_lineheight":"Sormagass\u00e1g","text_variant":"V\u00e1ltozat","text_style":"St\u00edlus","text_weight":"Sz\u00e9less\u00e9g","text_size":"M\u00e9ret","text_font":"Bet\u0171t\u00edpus","text_props":"Sz\u00f6veg","positioning_tab":"Poz\u00edci\u00f3","list_tab":"Lista","border_tab":"Keret","box_tab":"Doboz","block_tab":"Blokk","background_tab":"H\u00e1tt\u00e9r","text_tab":"Sz\u00f6veg",apply:"Alkalmaz",title:"CSS st\u00edlus szerkest\u00e9se",clip:"Lev\u00e1g\u00e1s",placement:"Elhelyez\u00e9s",overflow:"Kifut\u00e1s",zindex:"Z-index",visibility:"L\u00e1that\u00f3s\u00e1g","positioning_type":"T\u00edpus",position:"Poz\u00edci\u00f3","bullet_image":"Elemk\u00e9p","list_type":"T\u00edpus",color:"Sz\u00edn",height:"Magass\u00e1g",width:"Sz\u00e9less\u00e9g",style:"St\u00edlus",margin:"Marg\u00f3",left:"Balra",bottom:"Lent",right:"Jobbra",top:"Fel\u00fcl",same:"Mindenhol ugyanaz",padding:"Bels\u0151 marg\u00f3","box_clear":"Lebeg\u00e9s (float) t\u00f6rl\u00e9se","box_float":"Lebeg\u00e9s (float)","box_height":"Magass\u00e1g","box_width":"Sz\u00e9less\u00e9g","block_display":"Megjelen\u00edt\u00e9s","block_whitespace":"T\u00e9rk\u00f6z","block_text_indent":"Sz\u00f6veg beh\u00faz\u00e1sa","block_text_align":"Sz\u00f6veg igaz\u00edt\u00e1sa","block_vertical_alignment":"F\u00fcgg\u0151leges igaz\u00edt\u00e1s","block_letterspacing":"Bet\u0171t\u00e1vols\u00e1g","block_wordspacing":"Sz\u00f3t\u00e1vols\u00e1g","background_vpos":"F\u00fcgg\u0151leges hely","background_hpos":"V\u00edzszintes hely","background_attachment":"Csatolm\u00e1ny","background_repeat":"Ism\u00e9tl\u00e9s","background_image":"H\u00e1tt\u00e9rk\u00e9p","background_color":"H\u00e1tt\u00e9rsz\u00edn","text_none":"egyik sem","text_blink":"villog\u00e1s","text_case":"eset","text_striketrough":"\u00e1th\u00fazott","text_underline":"al\u00e1h\u00fazott","text_overline":"fel\u00fclh\u00fazott","text_decoration":"dekor\u00e1ci\u00f3","text_color":"sz\u00edn",text:"Text",background:"Background",block:"Block",box:"Box",border:"Border",list:"List"});webcit-8.24-dfsg.orig/tiny_mce/plugins/style/langs/cs_dlg.js0000644000175000017500000000411012271477123023721 0ustar michaelmichaeltinyMCE.addI18n('cs.style_dlg',{"text_lineheight":"V\u00fd\u0161ka \u0159\u00e1dku","text_variant":"Varianta","text_style":"Styl textu","text_weight":"Tu\u010dnost p\u00edsma","text_size":"Velikost","text_font":"P\u00edsmo","text_props":"Text","positioning_tab":"Um\u00edst\u011bn\u00ed","list_tab":"Seznam","border_tab":"Ohrani\u010den\u00ed","box_tab":"Box","block_tab":"Blok","background_tab":"Pozad\u00ed","text_tab":"Text",apply:"Pou\u017e\u00edt",title:"Upravit CSS styl",clip:"O\u0159ez\u00e1n\u00ed (clip)",placement:"Um\u00edst\u011bni",overflow:"P\u0159ete\u010den\u00ed (overflow)",zindex:"Z-index",visibility:"Viditelnost","positioning_type":"Typ",position:"Um\u00edst\u011bn\u00ed","bullet_image":"Styl odr\u00e1\u017eek","list_type":"Typ",color:"Barva",height:"V\u00fd\u0161ka",width:"\u0160\u00ed\u0159ka",style:"Styl",margin:"Okraje (margin)",left:"Vlevo",bottom:"Dole",right:"Vpravo",top:"Naho\u0159e",same:"Stejn\u00e9 pro v\u0161echny",padding:"Odsazen\u00ed (padding)","box_clear":"Vy\u010distit","box_float":"Plovouc\u00ed","box_height":"V\u00fd\u0161ka","box_width":"\u0160\u00ed\u0159ka","block_display":"Blokov\u00e9 zobrazen\u00ed","block_whitespace":"Zalamov\u00e1n\u00ed textu","block_text_indent":"Odsazen\u00ed textu","block_text_align":"Zarovn\u00e1n\u00ed textu","block_vertical_alignment":"Vertik\u00e1ln\u00ed zarovn\u00e1n\u00ed","block_letterspacing":"Rozestup znak\u016f","block_wordspacing":"Rozestup slov","background_vpos":"Vertik\u00e1ln\u00ed um\u00edst\u011bn\u00ed","background_hpos":"Horizont\u00e1ln\u00ed um\u00edst\u011bn\u00ed","background_attachment":"Rolov\u00e1n\u00ed","background_repeat":"Opakov\u00e1n\u00ed","background_image":"Obr\u00e1zek pozad\u00ed","background_color":"Barva pozad\u00ed","text_none":"\u017e\u00e1dn\u00e1","text_blink":"blik\u00e1n\u00ed","text_case":"Velk\u00e1 p\u00edsmena","text_striketrough":"p\u0159e\u0161krtnut\u00ed","text_underline":"podtr\u017een\u00ed","text_overline":"nadtr\u017een\u00ed","text_decoration":"Dekorace","text_color":"Barva",text:"Text",background:"Background",block:"Block",box:"Box",border:"Border",list:"List"});webcit-8.24-dfsg.orig/tiny_mce/plugins/style/langs/en_dlg.js0000644000175000017500000000305312271477123023723 0ustar michaelmichaeltinyMCE.addI18n('en.style_dlg',{"text_lineheight":"Line Height","text_variant":"Variant","text_style":"Style","text_weight":"Weight","text_size":"Size","text_font":"Font","text_props":"Text","positioning_tab":"Positioning","list_tab":"List","border_tab":"Border","box_tab":"Box","block_tab":"Block","background_tab":"Background","text_tab":"Text",apply:"Apply",title:"Edit CSS Style",clip:"Clip",placement:"Placement",overflow:"Overflow",zindex:"Z-index",visibility:"Visibility","positioning_type":"Type",position:"Position","bullet_image":"Bullet Image","list_type":"Type",color:"Color",height:"Height",width:"Width",style:"Style",margin:"Margin",left:"Left",bottom:"Bottom",right:"Right",top:"Top",same:"Same for All",padding:"Padding","box_clear":"Clear","box_float":"Float","box_height":"Height","box_width":"Width","block_display":"Display","block_whitespace":"Whitespace","block_text_indent":"Text Indent","block_text_align":"Text Align","block_vertical_alignment":"Vertical Alignment","block_letterspacing":"Letter Spacing","block_wordspacing":"Word Spacing","background_vpos":"Vertical Position","background_hpos":"Horizontal Position","background_attachment":"Attachment","background_repeat":"Repeat","background_image":"Background Image","background_color":"Background Color","text_none":"None","text_blink":"Blink","text_case":"Case","text_striketrough":"Strikethrough","text_underline":"Underline","text_overline":"Overline","text_decoration":"Decoration","text_color":"Color",text:"Text",background:"Background",block:"Block",box:"Box",border:"Border",list:"List"});webcit-8.24-dfsg.orig/tiny_mce/plugins/style/langs/it_dlg.js0000644000175000017500000000327012271477123023736 0ustar michaelmichaeltinyMCE.addI18n('it.style_dlg',{"text_lineheight":"Altezza linea","text_variant":"Variante","text_style":"Stile","text_weight":"Spessore","text_size":"Dimensione","text_font":"Carattere","text_props":"Testo","positioning_tab":"Posizionamento","list_tab":"Liste","border_tab":"Bordi","box_tab":"Contenitore","block_tab":"Blocco","background_tab":"Sfondo","text_tab":"Testo",apply:"Applica",title:"Modifica stile CSS",clip:"Clip",placement:"Piazzamento",overflow:"Overflow",zindex:"Z-index",visibility:"Visibilit\u00e0","positioning_type":"Tipo",position:"Posizione","bullet_image":"Immagine Punto","list_type":"Tipo",color:"Colore",height:"Altezza",width:"Larghezza",style:"Stile",margin:"Margine",left:"Sinistro",bottom:"Inferiore",right:"Destro",top:"Superiore",same:"Uguale per tutti",padding:"Spazio dal bordo","box_clear":"Pulito","box_float":"Fluttuante","box_height":"Altezza","box_width":"Larghezza","block_display":"Visualizzazione","block_whitespace":"Whitespace","block_text_indent":"Indentazione testo","block_text_align":"Allineamento testo","block_vertical_alignment":"Allineamento verticale","block_letterspacing":"Spaziatura caratteri","block_wordspacing":"Spaziatura parole","background_vpos":"Posizione verticale","background_hpos":"Posizione orizzontale","background_attachment":"Allegato","background_repeat":"Repetizione","background_image":"Immagine sfondo","background_color":"Colore sfondo","text_none":"nessuna","text_blink":"lampeggiante","text_case":"Tipo","text_striketrough":"barrato","text_underline":"sottolineato","text_overline":"sopralineato","text_decoration":"Decorazione","text_color":"Colore",text:"Text",background:"Background",block:"Block",box:"Box",border:"Border",list:"List"});webcit-8.24-dfsg.orig/tiny_mce/plugins/style/editor_plugin.js0000644000175000017500000000165212271477123024236 0ustar michaelmichael(function(){tinymce.create("tinymce.plugins.StylePlugin",{init:function(a,b){a.addCommand("mceStyleProps",function(){a.windowManager.open({file:b+"/props.htm",width:480+parseInt(a.getLang("style.delta_width",0)),height:320+parseInt(a.getLang("style.delta_height",0)),inline:1},{plugin_url:b,style_text:a.selection.getNode().style.cssText})});a.addCommand("mceSetElementStyle",function(d,c){if(e=a.selection.getNode()){a.dom.setAttrib(e,"style",c);a.execCommand("mceRepaint")}});a.onNodeChange.add(function(d,c,f){c.setDisabled("styleprops",f.nodeName==="BODY")});a.addButton("styleprops",{title:"style.desc",cmd:"mceStyleProps"})},getInfo:function(){return{longname:"Style",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/style",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("style",tinymce.plugins.StylePlugin)})();webcit-8.24-dfsg.orig/tiny_mce/plugins/style/props.htm0000644000175000017500000011077212271477123022715 0ustar michaelmichael {#style_dlg.title}
    {#style_dlg.text}
     
     
     
    {#style_dlg.text_decoration}
    {#style_dlg.background}
     
     
     
     
    {#style_dlg.block}
     
     
     
    {#style_dlg.box}
     
       
     
       
    {#style_dlg.padding}
     
     
     
     
     
    {#style_dlg.margin}
     
     
     
     
     

    {#style_dlg.border}
        {#style_dlg.style}   {#style_dlg.width}   {#style_dlg.color}
           
    {#style_dlg.top}    
     
     
     
    {#style_dlg.right}    
     
     
     
    {#style_dlg.bottom}    
     
     
     
    {#style_dlg.left}    
     
     
     
    {#style_dlg.list}
    {#style_dlg.position}
       
     
       
     
       
    {#style_dlg.placement}
     
    {#style_dlg.top}
     
    {#style_dlg.right}
     
    {#style_dlg.bottom}
     
    {#style_dlg.left}
     
    {#style_dlg.clip}
     
    {#style_dlg.top}
     
    {#style_dlg.right}
     
    {#style_dlg.bottom}
     
    {#style_dlg.left}
     

    webcit-8.24-dfsg.orig/tiny_mce/plugins/style/js/0000755000175000017500000000000012271477123021444 5ustar michaelmichaelwebcit-8.24-dfsg.orig/tiny_mce/plugins/style/js/props.js0000644000175000017500000007326512271477123023162 0ustar michaelmichaeltinyMCEPopup.requireLangPack(); var defaultFonts = "" + "Arial, Helvetica, sans-serif=Arial, Helvetica, sans-serif;" + "Times New Roman, Times, serif=Times New Roman, Times, serif;" + "Courier New, Courier, mono=Courier New, Courier, mono;" + "Times New Roman, Times, serif=Times New Roman, Times, serif;" + "Georgia, Times New Roman, Times, serif=Georgia, Times New Roman, Times, serif;" + "Verdana, Arial, Helvetica, sans-serif=Verdana, Arial, Helvetica, sans-serif;" + "Geneva, Arial, Helvetica, sans-serif=Geneva, Arial, Helvetica, sans-serif"; var defaultSizes = "9;10;12;14;16;18;24;xx-small;x-small;small;medium;large;x-large;xx-large;smaller;larger"; var defaultMeasurement = "+pixels=px;points=pt;inches=in;centimetres=cm;millimetres=mm;picas=pc;ems=em;exs=ex;%"; var defaultSpacingMeasurement = "pixels=px;points=pt;inches=in;centimetres=cm;millimetres=mm;picas=pc;+ems=em;exs=ex;%"; var defaultIndentMeasurement = "pixels=px;+points=pt;inches=in;centimetres=cm;millimetres=mm;picas=pc;ems=em;exs=ex;%"; var defaultWeight = "normal;bold;bolder;lighter;100;200;300;400;500;600;700;800;900"; var defaultTextStyle = "normal;italic;oblique"; var defaultVariant = "normal;small-caps"; var defaultLineHeight = "normal"; var defaultAttachment = "fixed;scroll"; var defaultRepeat = "no-repeat;repeat;repeat-x;repeat-y"; var defaultPosH = "left;center;right"; var defaultPosV = "top;center;bottom"; var defaultVAlign = "baseline;sub;super;top;text-top;middle;bottom;text-bottom"; var defaultDisplay = "inline;block;list-item;run-in;compact;marker;table;inline-table;table-row-group;table-header-group;table-footer-group;table-row;table-column-group;table-column;table-cell;table-caption;none"; var defaultBorderStyle = "none;solid;dashed;dotted;double;groove;ridge;inset;outset"; var defaultBorderWidth = "thin;medium;thick"; var defaultListType = "disc;circle;square;decimal;lower-roman;upper-roman;lower-alpha;upper-alpha;none"; function init() { var ce = document.getElementById('container'), h; ce.style.cssText = tinyMCEPopup.getWindowArg('style_text'); h = getBrowserHTML('background_image_browser','background_image','image','advimage'); document.getElementById("background_image_browser").innerHTML = h; document.getElementById('text_color_pickcontainer').innerHTML = getColorPickerHTML('text_color_pick','text_color'); document.getElementById('background_color_pickcontainer').innerHTML = getColorPickerHTML('background_color_pick','background_color'); document.getElementById('border_color_top_pickcontainer').innerHTML = getColorPickerHTML('border_color_top_pick','border_color_top'); document.getElementById('border_color_right_pickcontainer').innerHTML = getColorPickerHTML('border_color_right_pick','border_color_right'); document.getElementById('border_color_bottom_pickcontainer').innerHTML = getColorPickerHTML('border_color_bottom_pick','border_color_bottom'); document.getElementById('border_color_left_pickcontainer').innerHTML = getColorPickerHTML('border_color_left_pick','border_color_left'); fillSelect(0, 'text_font', 'style_font', defaultFonts, ';', true); fillSelect(0, 'text_size', 'style_font_size', defaultSizes, ';', true); fillSelect(0, 'text_size_measurement', 'style_font_size_measurement', defaultMeasurement, ';', true); fillSelect(0, 'text_case', 'style_text_case', "capitalize;uppercase;lowercase", ';', true); fillSelect(0, 'text_weight', 'style_font_weight', defaultWeight, ';', true); fillSelect(0, 'text_style', 'style_font_style', defaultTextStyle, ';', true); fillSelect(0, 'text_variant', 'style_font_variant', defaultVariant, ';', true); fillSelect(0, 'text_lineheight', 'style_font_line_height', defaultLineHeight, ';', true); fillSelect(0, 'text_lineheight_measurement', 'style_font_line_height_measurement', defaultMeasurement, ';', true); fillSelect(0, 'background_attachment', 'style_background_attachment', defaultAttachment, ';', true); fillSelect(0, 'background_repeat', 'style_background_repeat', defaultRepeat, ';', true); fillSelect(0, 'background_hpos_measurement', 'style_background_hpos_measurement', defaultMeasurement, ';', true); fillSelect(0, 'background_vpos_measurement', 'style_background_vpos_measurement', defaultMeasurement, ';', true); fillSelect(0, 'background_hpos', 'style_background_hpos', defaultPosH, ';', true); fillSelect(0, 'background_vpos', 'style_background_vpos', defaultPosV, ';', true); fillSelect(0, 'block_wordspacing', 'style_wordspacing', 'normal', ';', true); fillSelect(0, 'block_wordspacing_measurement', 'style_wordspacing_measurement', defaultSpacingMeasurement, ';', true); fillSelect(0, 'block_letterspacing', 'style_letterspacing', 'normal', ';', true); fillSelect(0, 'block_letterspacing_measurement', 'style_letterspacing_measurement', defaultSpacingMeasurement, ';', true); fillSelect(0, 'block_vertical_alignment', 'style_vertical_alignment', defaultVAlign, ';', true); fillSelect(0, 'block_text_align', 'style_text_align', "left;right;center;justify", ';', true); fillSelect(0, 'block_whitespace', 'style_whitespace', "normal;pre;nowrap", ';', true); fillSelect(0, 'block_display', 'style_display', defaultDisplay, ';', true); fillSelect(0, 'block_text_indent_measurement', 'style_text_indent_measurement', defaultIndentMeasurement, ';', true); fillSelect(0, 'box_width_measurement', 'style_box_width_measurement', defaultMeasurement, ';', true); fillSelect(0, 'box_height_measurement', 'style_box_height_measurement', defaultMeasurement, ';', true); fillSelect(0, 'box_float', 'style_float', 'left;right;none', ';', true); fillSelect(0, 'box_clear', 'style_clear', 'left;right;both;none', ';', true); fillSelect(0, 'box_padding_left_measurement', 'style_padding_left_measurement', defaultMeasurement, ';', true); fillSelect(0, 'box_padding_top_measurement', 'style_padding_top_measurement', defaultMeasurement, ';', true); fillSelect(0, 'box_padding_bottom_measurement', 'style_padding_bottom_measurement', defaultMeasurement, ';', true); fillSelect(0, 'box_padding_right_measurement', 'style_padding_right_measurement', defaultMeasurement, ';', true); fillSelect(0, 'box_margin_left_measurement', 'style_margin_left_measurement', defaultMeasurement, ';', true); fillSelect(0, 'box_margin_top_measurement', 'style_margin_top_measurement', defaultMeasurement, ';', true); fillSelect(0, 'box_margin_bottom_measurement', 'style_margin_bottom_measurement', defaultMeasurement, ';', true); fillSelect(0, 'box_margin_right_measurement', 'style_margin_right_measurement', defaultMeasurement, ';', true); fillSelect(0, 'border_style_top', 'style_border_style_top', defaultBorderStyle, ';', true); fillSelect(0, 'border_style_right', 'style_border_style_right', defaultBorderStyle, ';', true); fillSelect(0, 'border_style_bottom', 'style_border_style_bottom', defaultBorderStyle, ';', true); fillSelect(0, 'border_style_left', 'style_border_style_left', defaultBorderStyle, ';', true); fillSelect(0, 'border_width_top', 'style_border_width_top', defaultBorderWidth, ';', true); fillSelect(0, 'border_width_right', 'style_border_width_right', defaultBorderWidth, ';', true); fillSelect(0, 'border_width_bottom', 'style_border_width_bottom', defaultBorderWidth, ';', true); fillSelect(0, 'border_width_left', 'style_border_width_left', defaultBorderWidth, ';', true); fillSelect(0, 'border_width_top_measurement', 'style_border_width_top_measurement', defaultMeasurement, ';', true); fillSelect(0, 'border_width_right_measurement', 'style_border_width_right_measurement', defaultMeasurement, ';', true); fillSelect(0, 'border_width_bottom_measurement', 'style_border_width_bottom_measurement', defaultMeasurement, ';', true); fillSelect(0, 'border_width_left_measurement', 'style_border_width_left_measurement', defaultMeasurement, ';', true); fillSelect(0, 'list_type', 'style_list_type', defaultListType, ';', true); fillSelect(0, 'list_position', 'style_list_position', "inside;outside", ';', true); fillSelect(0, 'positioning_type', 'style_positioning_type', "absolute;relative;static", ';', true); fillSelect(0, 'positioning_visibility', 'style_positioning_visibility', "inherit;visible;hidden", ';', true); fillSelect(0, 'positioning_width_measurement', 'style_positioning_width_measurement', defaultMeasurement, ';', true); fillSelect(0, 'positioning_height_measurement', 'style_positioning_height_measurement', defaultMeasurement, ';', true); fillSelect(0, 'positioning_overflow', 'style_positioning_overflow', "visible;hidden;scroll;auto", ';', true); fillSelect(0, 'positioning_placement_top_measurement', 'style_positioning_placement_top_measurement', defaultMeasurement, ';', true); fillSelect(0, 'positioning_placement_right_measurement', 'style_positioning_placement_right_measurement', defaultMeasurement, ';', true); fillSelect(0, 'positioning_placement_bottom_measurement', 'style_positioning_placement_bottom_measurement', defaultMeasurement, ';', true); fillSelect(0, 'positioning_placement_left_measurement', 'style_positioning_placement_left_measurement', defaultMeasurement, ';', true); fillSelect(0, 'positioning_clip_top_measurement', 'style_positioning_clip_top_measurement', defaultMeasurement, ';', true); fillSelect(0, 'positioning_clip_right_measurement', 'style_positioning_clip_right_measurement', defaultMeasurement, ';', true); fillSelect(0, 'positioning_clip_bottom_measurement', 'style_positioning_clip_bottom_measurement', defaultMeasurement, ';', true); fillSelect(0, 'positioning_clip_left_measurement', 'style_positioning_clip_left_measurement', defaultMeasurement, ';', true); TinyMCE_EditableSelects.init(); setupFormData(); showDisabledControls(); } function setupFormData() { var ce = document.getElementById('container'), f = document.forms[0], s, b, i; // Setup text fields selectByValue(f, 'text_font', ce.style.fontFamily, true, true); selectByValue(f, 'text_size', getNum(ce.style.fontSize), true, true); selectByValue(f, 'text_size_measurement', getMeasurement(ce.style.fontSize)); selectByValue(f, 'text_weight', ce.style.fontWeight, true, true); selectByValue(f, 'text_style', ce.style.fontStyle, true, true); selectByValue(f, 'text_lineheight', getNum(ce.style.lineHeight), true, true); selectByValue(f, 'text_lineheight_measurement', getMeasurement(ce.style.lineHeight)); selectByValue(f, 'text_case', ce.style.textTransform, true, true); selectByValue(f, 'text_variant', ce.style.fontVariant, true, true); f.text_color.value = tinyMCEPopup.editor.dom.toHex(ce.style.color); updateColor('text_color_pick', 'text_color'); f.text_underline.checked = inStr(ce.style.textDecoration, 'underline'); f.text_overline.checked = inStr(ce.style.textDecoration, 'overline'); f.text_linethrough.checked = inStr(ce.style.textDecoration, 'line-through'); f.text_blink.checked = inStr(ce.style.textDecoration, 'blink'); // Setup background fields f.background_color.value = tinyMCEPopup.editor.dom.toHex(ce.style.backgroundColor); updateColor('background_color_pick', 'background_color'); f.background_image.value = ce.style.backgroundImage.replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1"); selectByValue(f, 'background_repeat', ce.style.backgroundRepeat, true, true); selectByValue(f, 'background_attachment', ce.style.backgroundAttachment, true, true); selectByValue(f, 'background_hpos', getNum(getVal(ce.style.backgroundPosition, 0)), true, true); selectByValue(f, 'background_hpos_measurement', getMeasurement(getVal(ce.style.backgroundPosition, 0))); selectByValue(f, 'background_vpos', getNum(getVal(ce.style.backgroundPosition, 1)), true, true); selectByValue(f, 'background_vpos_measurement', getMeasurement(getVal(ce.style.backgroundPosition, 1))); // Setup block fields selectByValue(f, 'block_wordspacing', getNum(ce.style.wordSpacing), true, true); selectByValue(f, 'block_wordspacing_measurement', getMeasurement(ce.style.wordSpacing)); selectByValue(f, 'block_letterspacing', getNum(ce.style.letterSpacing), true, true); selectByValue(f, 'block_letterspacing_measurement', getMeasurement(ce.style.letterSpacing)); selectByValue(f, 'block_vertical_alignment', ce.style.verticalAlign, true, true); selectByValue(f, 'block_text_align', ce.style.textAlign, true, true); f.block_text_indent.value = getNum(ce.style.textIndent); selectByValue(f, 'block_text_indent_measurement', getMeasurement(ce.style.textIndent)); selectByValue(f, 'block_whitespace', ce.style.whiteSpace, true, true); selectByValue(f, 'block_display', ce.style.display, true, true); // Setup box fields f.box_width.value = getNum(ce.style.width); selectByValue(f, 'box_width_measurement', getMeasurement(ce.style.width)); f.box_height.value = getNum(ce.style.height); selectByValue(f, 'box_height_measurement', getMeasurement(ce.style.height)); selectByValue(f, 'box_float', ce.style.cssFloat || ce.style.styleFloat, true, true); selectByValue(f, 'box_clear', ce.style.clear, true, true); setupBox(f, ce, 'box_padding', 'padding', ''); setupBox(f, ce, 'box_margin', 'margin', ''); // Setup border fields setupBox(f, ce, 'border_style', 'border', 'Style'); setupBox(f, ce, 'border_width', 'border', 'Width'); setupBox(f, ce, 'border_color', 'border', 'Color'); updateColor('border_color_top_pick', 'border_color_top'); updateColor('border_color_right_pick', 'border_color_right'); updateColor('border_color_bottom_pick', 'border_color_bottom'); updateColor('border_color_left_pick', 'border_color_left'); f.elements.border_color_top.value = tinyMCEPopup.editor.dom.toHex(f.elements.border_color_top.value); f.elements.border_color_right.value = tinyMCEPopup.editor.dom.toHex(f.elements.border_color_right.value); f.elements.border_color_bottom.value = tinyMCEPopup.editor.dom.toHex(f.elements.border_color_bottom.value); f.elements.border_color_left.value = tinyMCEPopup.editor.dom.toHex(f.elements.border_color_left.value); // Setup list fields selectByValue(f, 'list_type', ce.style.listStyleType, true, true); selectByValue(f, 'list_position', ce.style.listStylePosition, true, true); f.list_bullet_image.value = ce.style.listStyleImage.replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1"); // Setup box fields selectByValue(f, 'positioning_type', ce.style.position, true, true); selectByValue(f, 'positioning_visibility', ce.style.visibility, true, true); selectByValue(f, 'positioning_overflow', ce.style.overflow, true, true); f.positioning_zindex.value = ce.style.zIndex ? ce.style.zIndex : ""; f.positioning_width.value = getNum(ce.style.width); selectByValue(f, 'positioning_width_measurement', getMeasurement(ce.style.width)); f.positioning_height.value = getNum(ce.style.height); selectByValue(f, 'positioning_height_measurement', getMeasurement(ce.style.height)); setupBox(f, ce, 'positioning_placement', '', '', ['top', 'right', 'bottom', 'left']); s = ce.style.clip.replace(new RegExp("rect\\('?([^']*)'?\\)", 'gi'), "$1"); s = s.replace(/,/g, ' '); if (!hasEqualValues([getVal(s, 0), getVal(s, 1), getVal(s, 2), getVal(s, 3)])) { f.positioning_clip_top.value = getNum(getVal(s, 0)); selectByValue(f, 'positioning_clip_top_measurement', getMeasurement(getVal(s, 0))); f.positioning_clip_right.value = getNum(getVal(s, 1)); selectByValue(f, 'positioning_clip_right_measurement', getMeasurement(getVal(s, 1))); f.positioning_clip_bottom.value = getNum(getVal(s, 2)); selectByValue(f, 'positioning_clip_bottom_measurement', getMeasurement(getVal(s, 2))); f.positioning_clip_left.value = getNum(getVal(s, 3)); selectByValue(f, 'positioning_clip_left_measurement', getMeasurement(getVal(s, 3))); } else { f.positioning_clip_top.value = getNum(getVal(s, 0)); selectByValue(f, 'positioning_clip_top_measurement', getMeasurement(getVal(s, 0))); f.positioning_clip_right.value = f.positioning_clip_bottom.value = f.positioning_clip_left.value; } // setupBox(f, ce, '', 'border', 'Color'); } function getMeasurement(s) { return s.replace(/^([0-9.]+)(.*)$/, "$2"); } function getNum(s) { if (new RegExp('^(?:[0-9.]+)(?:[a-z%]+)$', 'gi').test(s)) return s.replace(/[^0-9.]/g, ''); return s; } function inStr(s, n) { return new RegExp(n, 'gi').test(s); } function getVal(s, i) { var a = s.split(' '); if (a.length > 1) return a[i]; return ""; } function setValue(f, n, v) { if (f.elements[n].type == "text") f.elements[n].value = v; else selectByValue(f, n, v, true, true); } function setupBox(f, ce, fp, pr, sf, b) { if (typeof(b) == "undefined") b = ['Top', 'Right', 'Bottom', 'Left']; if (isSame(ce, pr, sf, b)) { f.elements[fp + "_same"].checked = true; setValue(f, fp + "_top", getNum(ce.style[pr + b[0] + sf])); f.elements[fp + "_top"].disabled = false; f.elements[fp + "_right"].value = ""; f.elements[fp + "_right"].disabled = true; f.elements[fp + "_bottom"].value = ""; f.elements[fp + "_bottom"].disabled = true; f.elements[fp + "_left"].value = ""; f.elements[fp + "_left"].disabled = true; if (f.elements[fp + "_top_measurement"]) { selectByValue(f, fp + '_top_measurement', getMeasurement(ce.style[pr + b[0] + sf])); f.elements[fp + "_left_measurement"].disabled = true; f.elements[fp + "_bottom_measurement"].disabled = true; f.elements[fp + "_right_measurement"].disabled = true; } } else { f.elements[fp + "_same"].checked = false; setValue(f, fp + "_top", getNum(ce.style[pr + b[0] + sf])); f.elements[fp + "_top"].disabled = false; setValue(f, fp + "_right", getNum(ce.style[pr + b[1] + sf])); f.elements[fp + "_right"].disabled = false; setValue(f, fp + "_bottom", getNum(ce.style[pr + b[2] + sf])); f.elements[fp + "_bottom"].disabled = false; setValue(f, fp + "_left", getNum(ce.style[pr + b[3] + sf])); f.elements[fp + "_left"].disabled = false; if (f.elements[fp + "_top_measurement"]) { selectByValue(f, fp + '_top_measurement', getMeasurement(ce.style[pr + b[0] + sf])); selectByValue(f, fp + '_right_measurement', getMeasurement(ce.style[pr + b[1] + sf])); selectByValue(f, fp + '_bottom_measurement', getMeasurement(ce.style[pr + b[2] + sf])); selectByValue(f, fp + '_left_measurement', getMeasurement(ce.style[pr + b[3] + sf])); f.elements[fp + "_left_measurement"].disabled = false; f.elements[fp + "_bottom_measurement"].disabled = false; f.elements[fp + "_right_measurement"].disabled = false; } } } function isSame(e, pr, sf, b) { var a = [], i, x; if (typeof(b) == "undefined") b = ['Top', 'Right', 'Bottom', 'Left']; if (typeof(sf) == "undefined" || sf == null) sf = ""; a[0] = e.style[pr + b[0] + sf]; a[1] = e.style[pr + b[1] + sf]; a[2] = e.style[pr + b[2] + sf]; a[3] = e.style[pr + b[3] + sf]; for (i=0; i 0 ? s.substring(1) : s; if (f.text_none.checked) s = "none"; ce.style.textDecoration = s; // Build background styles ce.style.backgroundColor = f.background_color.value; ce.style.backgroundImage = f.background_image.value != "" ? "url(" + f.background_image.value + ")" : ""; ce.style.backgroundRepeat = f.background_repeat.value; ce.style.backgroundAttachment = f.background_attachment.value; if (f.background_hpos.value != "") { s = ""; s += f.background_hpos.value + (isNum(f.background_hpos.value) ? f.background_hpos_measurement.value : "") + " "; s += f.background_vpos.value + (isNum(f.background_vpos.value) ? f.background_vpos_measurement.value : ""); ce.style.backgroundPosition = s; } // Build block styles ce.style.wordSpacing = f.block_wordspacing.value + (isNum(f.block_wordspacing.value) ? f.block_wordspacing_measurement.value : ""); ce.style.letterSpacing = f.block_letterspacing.value + (isNum(f.block_letterspacing.value) ? f.block_letterspacing_measurement.value : ""); ce.style.verticalAlign = f.block_vertical_alignment.value; ce.style.textAlign = f.block_text_align.value; ce.style.textIndent = f.block_text_indent.value + (isNum(f.block_text_indent.value) ? f.block_text_indent_measurement.value : ""); ce.style.whiteSpace = f.block_whitespace.value; ce.style.display = f.block_display.value; // Build box styles ce.style.width = f.box_width.value + (isNum(f.box_width.value) ? f.box_width_measurement.value : ""); ce.style.height = f.box_height.value + (isNum(f.box_height.value) ? f.box_height_measurement.value : ""); ce.style.styleFloat = f.box_float.value; ce.style.cssFloat = f.box_float.value; ce.style.clear = f.box_clear.value; if (!f.box_padding_same.checked) { ce.style.paddingTop = f.box_padding_top.value + (isNum(f.box_padding_top.value) ? f.box_padding_top_measurement.value : ""); ce.style.paddingRight = f.box_padding_right.value + (isNum(f.box_padding_right.value) ? f.box_padding_right_measurement.value : ""); ce.style.paddingBottom = f.box_padding_bottom.value + (isNum(f.box_padding_bottom.value) ? f.box_padding_bottom_measurement.value : ""); ce.style.paddingLeft = f.box_padding_left.value + (isNum(f.box_padding_left.value) ? f.box_padding_left_measurement.value : ""); } else ce.style.padding = f.box_padding_top.value + (isNum(f.box_padding_top.value) ? f.box_padding_top_measurement.value : ""); if (!f.box_margin_same.checked) { ce.style.marginTop = f.box_margin_top.value + (isNum(f.box_margin_top.value) ? f.box_margin_top_measurement.value : ""); ce.style.marginRight = f.box_margin_right.value + (isNum(f.box_margin_right.value) ? f.box_margin_right_measurement.value : ""); ce.style.marginBottom = f.box_margin_bottom.value + (isNum(f.box_margin_bottom.value) ? f.box_margin_bottom_measurement.value : ""); ce.style.marginLeft = f.box_margin_left.value + (isNum(f.box_margin_left.value) ? f.box_margin_left_measurement.value : ""); } else ce.style.margin = f.box_margin_top.value + (isNum(f.box_margin_top.value) ? f.box_margin_top_measurement.value : ""); // Build border styles if (!f.border_style_same.checked) { ce.style.borderTopStyle = f.border_style_top.value; ce.style.borderRightStyle = f.border_style_right.value; ce.style.borderBottomStyle = f.border_style_bottom.value; ce.style.borderLeftStyle = f.border_style_left.value; } else ce.style.borderStyle = f.border_style_top.value; if (!f.border_width_same.checked) { ce.style.borderTopWidth = f.border_width_top.value + (isNum(f.border_width_top.value) ? f.border_width_top_measurement.value : ""); ce.style.borderRightWidth = f.border_width_right.value + (isNum(f.border_width_right.value) ? f.border_width_right_measurement.value : ""); ce.style.borderBottomWidth = f.border_width_bottom.value + (isNum(f.border_width_bottom.value) ? f.border_width_bottom_measurement.value : ""); ce.style.borderLeftWidth = f.border_width_left.value + (isNum(f.border_width_left.value) ? f.border_width_left_measurement.value : ""); } else ce.style.borderWidth = f.border_width_top.value + (isNum(f.border_width_top.value) ? f.border_width_top_measurement.value : ""); if (!f.border_color_same.checked) { ce.style.borderTopColor = f.border_color_top.value; ce.style.borderRightColor = f.border_color_right.value; ce.style.borderBottomColor = f.border_color_bottom.value; ce.style.borderLeftColor = f.border_color_left.value; } else ce.style.borderColor = f.border_color_top.value; // Build list styles ce.style.listStyleType = f.list_type.value; ce.style.listStylePosition = f.list_position.value; ce.style.listStyleImage = f.list_bullet_image.value != "" ? "url(" + f.list_bullet_image.value + ")" : ""; // Build positioning styles ce.style.position = f.positioning_type.value; ce.style.visibility = f.positioning_visibility.value; if (ce.style.width == "") ce.style.width = f.positioning_width.value + (isNum(f.positioning_width.value) ? f.positioning_width_measurement.value : ""); if (ce.style.height == "") ce.style.height = f.positioning_height.value + (isNum(f.positioning_height.value) ? f.positioning_height_measurement.value : ""); ce.style.zIndex = f.positioning_zindex.value; ce.style.overflow = f.positioning_overflow.value; if (!f.positioning_placement_same.checked) { ce.style.top = f.positioning_placement_top.value + (isNum(f.positioning_placement_top.value) ? f.positioning_placement_top_measurement.value : ""); ce.style.right = f.positioning_placement_right.value + (isNum(f.positioning_placement_right.value) ? f.positioning_placement_right_measurement.value : ""); ce.style.bottom = f.positioning_placement_bottom.value + (isNum(f.positioning_placement_bottom.value) ? f.positioning_placement_bottom_measurement.value : ""); ce.style.left = f.positioning_placement_left.value + (isNum(f.positioning_placement_left.value) ? f.positioning_placement_left_measurement.value : ""); } else { s = f.positioning_placement_top.value + (isNum(f.positioning_placement_top.value) ? f.positioning_placement_top_measurement.value : ""); ce.style.top = s; ce.style.right = s; ce.style.bottom = s; ce.style.left = s; } if (!f.positioning_clip_same.checked) { s = "rect("; s += (isNum(f.positioning_clip_top.value) ? f.positioning_clip_top.value + f.positioning_clip_top_measurement.value : "auto") + " "; s += (isNum(f.positioning_clip_right.value) ? f.positioning_clip_right.value + f.positioning_clip_right_measurement.value : "auto") + " "; s += (isNum(f.positioning_clip_bottom.value) ? f.positioning_clip_bottom.value + f.positioning_clip_bottom_measurement.value : "auto") + " "; s += (isNum(f.positioning_clip_left.value) ? f.positioning_clip_left.value + f.positioning_clip_left_measurement.value : "auto"); s += ")"; if (s != "rect(auto auto auto auto)") ce.style.clip = s; } else { s = "rect("; t = isNum(f.positioning_clip_top.value) ? f.positioning_clip_top.value + f.positioning_clip_top_measurement.value : "auto"; s += t + " "; s += t + " "; s += t + " "; s += t + ")"; if (s != "rect(auto auto auto auto)") ce.style.clip = s; } ce.style.cssText = ce.style.cssText; } function isNum(s) { return new RegExp('[0-9]+', 'g').test(s); } function showDisabledControls() { var f = document.forms, i, a; for (i=0; i 1) { addSelectValue(f, s, p[0], p[1]); if (se) selectByValue(f, s, p[1]); } else { addSelectValue(f, s, p[0], p[0]); if (se) selectByValue(f, s, p[0]); } } } function toggleSame(ce, pre) { var el = document.forms[0].elements, i; if (ce.checked) { el[pre + "_top"].disabled = false; el[pre + "_right"].disabled = true; el[pre + "_bottom"].disabled = true; el[pre + "_left"].disabled = true; if (el[pre + "_top_measurement"]) { el[pre + "_top_measurement"].disabled = false; el[pre + "_right_measurement"].disabled = true; el[pre + "_bottom_measurement"].disabled = true; el[pre + "_left_measurement"].disabled = true; } } else { el[pre + "_top"].disabled = false; el[pre + "_right"].disabled = false; el[pre + "_bottom"].disabled = false; el[pre + "_left"].disabled = false; if (el[pre + "_top_measurement"]) { el[pre + "_top_measurement"].disabled = false; el[pre + "_right_measurement"].disabled = false; el[pre + "_bottom_measurement"].disabled = false; el[pre + "_left_measurement"].disabled = false; } } showDisabledControls(); } function synch(fr, to) { var f = document.forms[0]; f.elements[to].value = f.elements[fr].value; if (f.elements[fr + "_measurement"]) selectByValue(f, to + "_measurement", f.elements[fr + "_measurement"].value); } tinyMCEPopup.onInit.add(init); webcit-8.24-dfsg.orig/tiny_mce/plugins/style/css/0000755000175000017500000000000012271477123021620 5ustar michaelmichaelwebcit-8.24-dfsg.orig/tiny_mce/plugins/style/css/props.css0000644000175000017500000000153312271477123023477 0ustar michaelmichael#text_font {width:250px;} #text_size {width:70px;} .mceAddSelectValue {background:#DDD;} select, #block_text_indent, #box_width, #box_height, #box_padding_top, #box_padding_right, #box_padding_bottom, #box_padding_left {width:70px;} #box_margin_top, #box_margin_right, #box_margin_bottom, #box_margin_left, #positioning_width, #positioning_height, #positioning_zindex {width:70px;} #positioning_placement_top, #positioning_placement_right, #positioning_placement_bottom, #positioning_placement_left {width:70px;} #positioning_clip_top, #positioning_clip_right, #positioning_clip_bottom, #positioning_clip_left {width:70px;} .panel_wrapper div.current {padding-top:10px;height:230px;} .delim {border-left:1px solid gray;} .tdelim {border-bottom:1px solid gray;} #block_display {width:145px;} #list_type {width:115px;} .disabled {background:#EEE;} webcit-8.24-dfsg.orig/tiny_mce/plugins/advimage/0000755000175000017500000000000012271477123021445 5ustar michaelmichaelwebcit-8.24-dfsg.orig/tiny_mce/plugins/advimage/editor_plugin_src.js0000644000175000017500000000255712271477123025527 0ustar michaelmichael/** * editor_plugin_src.js * * Copyright 2009, Moxiecode Systems AB * Released under LGPL License. * * License: http://tinymce.moxiecode.com/license * Contributing: http://tinymce.moxiecode.com/contributing */ (function() { tinymce.create('tinymce.plugins.AdvancedImagePlugin', { init : function(ed, url) { // Register commands ed.addCommand('mceAdvImage', function() { // Internal image object like a flash placeholder if (ed.dom.getAttrib(ed.selection.getNode(), 'class', '').indexOf('mceItem') != -1) return; ed.windowManager.open({ file : url + '/image.htm', width : 480 + parseInt(ed.getLang('advimage.delta_width', 0)), height : 385 + parseInt(ed.getLang('advimage.delta_height', 0)), inline : 1 }, { plugin_url : url }); }); // Register buttons ed.addButton('image', { title : 'advimage.image_desc', cmd : 'mceAdvImage' }); }, getInfo : function() { return { longname : 'Advanced image', author : 'Moxiecode Systems AB', authorurl : 'http://tinymce.moxiecode.com', infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advimage', version : tinymce.majorVersion + "." + tinymce.minorVersion }; } }); // Register plugin tinymce.PluginManager.add('advimage', tinymce.plugins.AdvancedImagePlugin); })();webcit-8.24-dfsg.orig/tiny_mce/plugins/advimage/img/0000755000175000017500000000000012271477123022221 5ustar michaelmichaelwebcit-8.24-dfsg.orig/tiny_mce/plugins/advimage/img/sample.gif0000644000175000017500000000313012271477123024166 0ustar michaelmichaelGIF89a--~~~}}}|||zzzxxxwwxvvvtttrrrpppmmmiiieeebbbYYY!,--%JPJS2GPINC6#>[b[cHU[V]O;"HVLLNQH8#ń00,,8QL88;;GC7ԃYYSS;LPQQa aXhl8TYC~!Doٸ9,A<9(Sx% 5b¸QǐfXb,mXb 'X(Ղ 5 qƣE X]E(3,C49"<.eIێ">n wUI($ܹ=a#I4Ӕ5bM $@0kZK4aÚ 'D~1AA IDɐ@} 5Ք-"d Gn"umaÅ τiG^JZGk'[H#CGȚ2OiFΓ DxjPA` .U-0Ca G=hцmE$AC.x u$}EșkD TIo7(euV` /`bqƓOv!DO(rQB 1pQcdhaQ!vqp *B !leFiDn1,қ]TQ #| a&qahd[ vE8qKn/``o葇hU(3r, nP@w1dGdtawɱVAa8 c7ЀEjX!BA ]LL!e e!-hG@ t O &А%0DLцdyqF#İOȀ@+@f&frjD TW]&f`S[m@lp}YaAg@o.ׁ uvA1mRMuBK=4Qsj>Pቛm@Nxp,<r '̗G@z"H'/PDh\7 ?X<vXa0 n1T8{C&&C6ATA lpCB9xȃddIP gH'`! /Bo02a| f0 HL@a P:d 2".P³2qI;webcit-8.24-dfsg.orig/tiny_mce/plugins/advimage/langs/0000755000175000017500000000000012271477123022551 5ustar michaelmichaelwebcit-8.24-dfsg.orig/tiny_mce/plugins/advimage/langs/bg_dlg.js0000644000175000017500000001037712271477123024335 0ustar michaelmichaeltinyMCE.addI18n('bg.advimage_dlg',{"image_list":"\u0421\u043f\u0438\u0441\u044a\u043a \u0441 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438","align_right":"\u0414\u044f\u0441\u043d\u043e","align_left":"\u041b\u044f\u0432\u043e","align_textbottom":"\u0422\u0435\u043a\u0441\u0442 \u0434\u043e\u043b\u0443","align_texttop":"\u0422\u0435\u043a\u0441\u0442 \u0433\u043e\u0440\u0435","align_bottom":"\u0414\u043e\u043b\u0443","align_middle":"\u0426\u0435\u043d\u0442\u044a\u0440","align_top":"\u0413\u043e\u0440\u0435","align_baseline":"\u0411\u0430\u0437\u043e\u0432\u0430 \u043b\u0438\u043d\u0438\u044f",align:"\u041f\u043e\u0434\u0440\u0430\u0432\u043d\u044f\u0432\u0430\u043d\u0435",hspace:"\u0425\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u043d\u043e \u0440\u0430\u0437\u0441\u0442\u043e\u044f\u043d\u0438\u0435",vspace:"\u0412\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u043d\u043e \u0440\u0430\u0437\u0441\u0442\u043e\u044f\u043d\u0438\u0435",dimensions:"\u0420\u0430\u0437\u043c\u0435\u0440\u0438",border:"\u0420\u0430\u043c\u043a\u0430",list:"\u0421\u043f\u0438\u0441\u044a\u043a \u0441 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438",alt:"\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043d\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430",src:"URL \u043d\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430","dialog_title":"\u0412\u043c\u044a\u043a\u043d\u0438/\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0430\u0439 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430","missing_alt":"\u0421\u0438\u0433\u0443\u0440\u0435\u043d \u043b\u0438 \u0441\u0442\u0435 \u0447\u0435 \u0436\u0435\u043b\u0430\u0435\u0442\u0435 \u0434\u0430 \u043f\u0440\u043e\u0434\u044a\u043b\u0436\u0438\u0442\u0435 \u0431\u0435\u0437 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043d\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430\u0442\u0430? \u0411\u0435\u0437 \u043d\u0435\u0433\u043e \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430\u0442\u0430 \u043c\u043e\u0436\u0435 \u0434\u0430 \u0435 \u043d\u0435\u0434\u043e\u0441\u0442\u044a\u043f\u043d\u0430 \u0437\u0430 \u043d\u044f\u043a\u043e\u0438 \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u0438 \u0441 \u043d\u0435\u0434\u044a\u0437\u0438, \u0438\u043b\u0438 \u0437\u0430 \u0442\u0435\u0437\u0438 \u0438\u0437\u043f\u043e\u043b\u0437\u0432\u0430\u0449\u0438 \u0442\u0435\u043a\u0441\u0442\u043e\u0432 \u0431\u0440\u0430\u0443\u0437\u044a\u0440, \u0438\u043b\u0438 \u0438\u0437\u043f\u043e\u043b\u0437\u0432\u0430\u0449\u0438 \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u0441 \u0438\u0437\u043a\u043b\u044e\u0447\u0435\u043d\u0438 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438.","example_img":"\u041f\u0440\u0435\u0433\u043b\u0435\u0434 \u043d\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430\u0442\u0430",misc:"\u0420\u0430\u0437\u043d\u0438",mouseout:"\u0437\u0430 mouse out",mouseover:"\u0437\u0430 mouse over","alt_image":"\u0420\u0435\u0437\u0435\u0440\u0432\u043d\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430","swap_image":"\u0421\u043c\u0435\u043d\u0438 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430",map:"\u041a\u0430\u0440\u0442\u0438\u043d\u0430 \u043a\u0430\u0440\u0442\u0430",id:"Id",rtl:"\u041e\u0442\u0434\u044f\u0441\u043d\u043e \u043d\u0430 \u043b\u044f\u0432\u043e",ltr:"\u041e\u0442\u043b\u044f\u0432\u043e \u043d\u0430 \u0434\u044f\u0441\u043d\u043e",classes:"\u041a\u043b\u0430\u0441\u043e\u0432\u0435",style:"\u0421\u0442\u0438\u043b","long_desc":"\u0425\u0438\u043f\u0435\u0440\u0432\u0440\u044a\u0437\u043a\u0430 \u043a\u044a\u043c \u0434\u044a\u043b\u0433\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435",langcode:"\u041a\u043e\u0434 \u043d\u0430 \u0435\u0437\u0438\u043a\u0430",langdir:"\u041f\u043e\u0441\u043e\u043a\u0430 \u043d\u0430 \u0435\u0437\u0438\u043a\u0430","constrain_proportions":"\u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0438 \u043f\u0440\u043e\u043f\u043e\u0440\u0446\u0438\u0438\u0442\u0435",preview:"\u041f\u0440\u0435\u0433\u043b\u0435\u0434",title:"\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u0435",general:"\u041e\u0431\u0449\u0438","tab_advanced":"\u0417\u0430 \u043d\u0430\u043f\u0440\u0435\u0434\u043d\u0430\u043b\u0438","tab_appearance":"\u0412\u044a\u043d\u0448\u0435\u043d \u0432\u0438\u0434","tab_general":"\u041e\u0431\u0449\u0438",width:"Width",height:"Height"});webcit-8.24-dfsg.orig/tiny_mce/plugins/advimage/langs/fr_dlg.js0000644000175000017500000000274112271477123024350 0ustar michaelmichaeltinyMCE.addI18n('fr.advimage_dlg',{"image_list":"Liste d\'images","align_right":"Droite (flottant)","align_left":"Gauche (flottant)","align_textbottom":"Texte en bas","align_texttop":"Texte en haut","align_bottom":"En bas","align_middle":"Au milieu","align_top":"En haut","align_baseline":"Normal",align:"Alignement",hspace:"Espacement horizontal",vspace:"Espacement vertical",dimensions:"Dimensions",border:"Bordure",list:"Liste d\'images",alt:"Description de l\'image",src:"URL de l\'image","dialog_title":"Ins\u00e9rer / \u00e9diter une image","missing_alt":"\u00cates-vous s\u00fbr de vouloir continuer sans d\u00e9finir de description pour l\'image ? Sans elle, l\'image peut ne pas \u00eatre accessible \u00e0 certains utilisateurs handicap\u00e9s, ceux utilisant un navigateur texte ou ceux qui naviguent sans affichage des images.","example_img":"Apparence de l\'image",misc:"Divers",mouseout:"\u00e0 la sortie de la souris",mouseover:"au survol de la souris","alt_image":"Image alternative","swap_image":"Image de remplacement",map:"Image cliquable",id:"Id",rtl:"De droite \u00e0 gauche",ltr:"De gauche \u00e0 droite",classes:"Classes",style:"Style","long_desc":"Description longue du lien",langcode:"Code de la langue",langdir:"Sens de lecture","constrain_proportions":"Conserver les proportions",preview:"Pr\u00e9visualisation",title:"Titre",general:"G\u00e9n\u00e9ral","tab_advanced":"Avanc\u00e9","tab_appearance":"Apparence","tab_general":"G\u00e9n\u00e9ral",width:"Width",height:"Height"});webcit-8.24-dfsg.orig/tiny_mce/plugins/advimage/langs/zh-cn_dlg.js0000644000175000017500000000334112271477123024755 0ustar michaelmichaeltinyMCE.addI18n('zh-cn.advimage_dlg',{"image_list":"\u56fe\u7247\u5217\u8868","align_right":"\u53f3\u5bf9\u9f50","align_left":"\u5de6\u5bf9\u9f50","align_textbottom":"\u6587\u5b57\u4e0b\u65b9","align_texttop":"\u6587\u5b57\u4e0a\u65b9","align_bottom":"\u5e95\u7aef\u5bf9\u9f50","align_middle":"\u5c45\u4e2d\u5bf9\u9f50","align_top":"\u9876\u7aef\u5bf9\u9f50","align_baseline":"\u5e95\u7ebf",align:"\u5bf9\u9f50",hspace:"\u6c34\u5e73\u8ddd\u79bb",vspace:"\u5782\u76f4\u8ddd\u79bb",dimensions:"\u5c3a\u5bf8",border:"\u8fb9\u6846",list:"\u56fe\u7247\u5217\u8868",alt:"\u56fe\u7247\u63cf\u8ff0",src:"\u56fe\u7247\u94fe\u63a5","dialog_title":"\u63d2\u5165/\u7f16\u8f91 \u56fe\u7247","missing_alt":"\u56fe\u7247\u6ca1\u6709\u8bf4\u660e\u6587\u5b57\uff0c\u60a8\u662f\u5426\u8981\u7ee7\u7eed\uff1f\u6ca1\u6709\u8bf4\u660e\u6587\u5b57\u7684\u56fe\u7247\uff0c\u53ef\u80fd\u7ed9\u6b8b\u75be\u4eba\u58eb\u3001\u6587\u672c\u6d4f\u89c8\u5668\u6216\u5173\u95ed\u56fe\u7247\u529f\u80fd\u7684\u6d4f\u89c8\u5668\u8bbf\u95ee\u9020\u6210\u56f0\u96be\u3002","example_img":"\u5916\u89c2\u9884\u89c8\u56fe",misc:"\u5176\u4ed6",mouseout:"\u9f20\u6807\u6ed1\u51fa",mouseover:"\u9f20\u6807\u6ed1\u5165","alt_image":"\u66ff\u6362\u56fe\u7247","swap_image":"\u56fe\u7247\u5207\u6362",map:"\u56fe\u7247map",id:"ID",rtl:"\u4ece\u53f3\u5230\u5de6",ltr:"\u4ece\u5de6\u5230\u53f3",classes:"\u7c7b\u522b",style:"\u6837\u5f0f","long_desc":"\u957f\u63cf\u8ff0\u94fe\u63a5",langcode:"\u8bed\u8a00\u7f16\u7801",langdir:"\u8bed\u8a00\u6587\u5b57\u65b9\u5411","constrain_proportions":"\u4fdd\u6301\u6bd4\u4f8b",preview:"\u9884\u89c8",title:"\u6807\u9898",general:"\u666e\u901a","tab_advanced":"\u9ad8\u7ea7","tab_appearance":"\u5916\u89c2","tab_general":"\u666e\u901a",width:"Width",height:"Height"});webcit-8.24-dfsg.orig/tiny_mce/plugins/advimage/langs/de_dlg.js0000644000175000017500000000252312271477123024327 0ustar michaelmichaeltinyMCE.addI18n('de.advimage_dlg',{"image_list":"Bilderliste","align_right":"Rechts","align_left":"Links","align_textbottom":"Unten im Text","align_texttop":"Oben im Text","align_bottom":"Unten","align_middle":"Mittig","align_top":"Oben","align_baseline":"Zeile",align:"Ausrichtung",hspace:"Horizontaler Abstand",vspace:"Vertikaler Abstand",dimensions:"Ausma\u00dfe",border:"Rahmen",list:"Bilderliste",alt:"Beschreibung",src:"Adresse","dialog_title":"Bild einf\u00fcgen/ver\u00e4ndern","missing_alt":"Wollen Sie wirklich keine Beschreibung eingeben? Bestimmte Benutzer mit k\u00f6rperlichen Einschr\u00e4nkungen k\u00f6nnen so nicht darauf zugreifen, ebenso solche, die einen Textbrowser benutzen oder die Anzeige von Bildern deaktiviert haben.","example_img":"Vorschau auf das Aussehen",misc:"Verschiedenes",mouseout:"bei keinem Mauskontakt",mouseover:"bei Mauskontakt","alt_image":"Alternatives Bild","swap_image":"Bild austauschen",map:"Image-Map",id:"ID",rtl:"Rechts nach links",ltr:"Links nach rechts",classes:"Klassen",style:"Format","long_desc":"Ausf\u00fchrliche Beschreibung",langcode:"Sprachcode",langdir:"Schriftrichtung","constrain_proportions":"Seitenverh\u00e4ltnis beibehalten",preview:"Vorschau",title:"Titel",general:"Allgemein","tab_advanced":"Erweitert","tab_appearance":"Aussehen","tab_general":"Allgemein",width:"Breite",height:"H\u00f6he"});webcit-8.24-dfsg.orig/tiny_mce/plugins/advimage/langs/fi_dlg.js0000644000175000017500000000255312271477123024340 0ustar michaelmichaeltinyMCE.addI18n('fi.advimage_dlg',{"image_list":"Kuvalista","align_right":"Oikealla","align_left":"Vasemmalla","align_textbottom":"Teksti alhaalla","align_texttop":"Teksti ylh\u00e4\u00e4ll\u00e4","align_bottom":"Alhaalla","align_middle":"Keskell\u00e4","align_top":"Ylh\u00e4\u00e4ll\u00e4","align_baseline":"Rivill\u00e4",align:"Tasaus",hspace:"vaakasuora tila",vspace:"pystysuora tila",dimensions:"Mitat",border:"Kehys",list:"Kuvalista",alt:"Kuvan kuvaus",src:"Kuvan URL","dialog_title":"Lis\u00e4\u00e4/muokkaa kuvaa","missing_alt":"Haluatko varmasti jatkaa lis\u00e4\u00e4m\u00e4tt\u00e4 kuvausta? Kuvauksen puuttuminen saattaa h\u00e4irit\u00e4 sellaisia, jotka k\u00e4ytt\u00e4v\u00e4t tekstipohjaista selainta tai ovat kytkeneet kuvien n\u00e4kymisen pois p\u00e4\u00e4lt\u00e4.","example_img":"Ulkoasun esikatselukuva",misc:"Sekalaiset",mouseout:"mouseoutille",mouseover:"mouseoverille","alt_image":"Vaihtoehtoinen kuva","swap_image":"Vaihda kuva",map:"Kuvakartta",id:"Id",rtl:"Oikealta vasemmalle",ltr:"Vasemmalta oikealle",classes:"Luokat",style:"Tyyli","long_desc":"Pitk\u00e4n kuvauksen linkki",langcode:"Kielen koodi",langdir:"Kielen suunta","constrain_proportions":"S\u00e4ilyt\u00e4 mittasuhteet",preview:"Esikatselu",title:"Otsikko",general:"Yleiset","tab_advanced":"Edistynyt","tab_appearance":"N\u00e4kyminen","tab_general":"Yleiset",width:"Leveys",height:"Korkeus"});webcit-8.24-dfsg.orig/tiny_mce/plugins/advimage/langs/et_dlg.js0000644000175000017500000000223312271477123024345 0ustar michaelmichaeltinyMCE.addI18n('et.advimage_dlg',{"image_list":"Piltide nimekiri","align_right":"Paremal","align_left":"Vasakul","align_textbottom":"Tekst all","align_texttop":"Tekst \u00fcleval","align_bottom":"All","align_middle":"Keskel","align_top":"\u00dcleval","align_baseline":"Baas",align:"Joondus",hspace:"Horisontaalne vahe",vspace:"Vertikaalne vahe",dimensions:"M\u00f5\u00f5tmed",border:"Raam",list:"Piltide nimekiri",alt:"Pildi kirjeldus",src:"Pildi URL","dialog_title":"Sisesta/muuda pilti","missing_alt":"Oled kindel, et soovid j\u00e4tkata pildile kirjeldust lisamata?","example_img":"Eelvaate pildi v\u00e4limus",misc:"Mitmesugune",mouseout:"\u201eKursor maas\u201c",mouseover:"\u201eKursor peal\u201c","alt_image":"Alternatiivne pilt","swap_image":"Vaheta pilti",map:"Pildi kaart",id:"ID",rtl:"Paremalt vasakule",ltr:"Vasakult paremale",classes:"Klassid",style:"Stiil","long_desc":"Pikk kirjelduse link",langcode:"Keele kood",langdir:"Keele suund","constrain_proportions":"Piira proportioone",preview:"Eelvaade",title:"Pealkiri",general:"\u00dcldine","tab_advanced":"P\u00f5hjalikum","tab_appearance":"V\u00e4limus","tab_general":"\u00dcldine",width:"Width",height:"Height"});webcit-8.24-dfsg.orig/tiny_mce/plugins/advimage/langs/es_dlg.js0000644000175000017500000000266412271477123024354 0ustar michaelmichaeltinyMCE.addI18n('es.advimage_dlg',{"image_list":"Lista de imagen","align_right":"Derecha","align_left":"Izquierda","align_textbottom":"Texto abajo","align_texttop":"Texto arriba","align_bottom":"Debajo","align_middle":"Medio","align_top":"Arriba","align_baseline":"L\u00ednea base",align:"Alineaci\u00f3n",hspace:"Espacio horizontal",vspace:"Espacio vertical",dimensions:"Dimensiones",border:"Bordes",list:"Lista de imagen",alt:"Descripci\u00f3n de la imagen",src:"URL de la imagen","dialog_title":"Insertar/editar imagen","missing_alt":" \u00bfEsta seguro de continuar sin introducir una descripci\u00f3n a la imagen? Sin ella puede no ser accesible para usuarios con discapacidades, o para aquellos que usen navegadores de modo texto, o tengan deshabilitadas las im\u00e1genes de la p\u00e1gina.","example_img":"Vista previa de la imagen",misc:"Miscel\u00e1neo",mouseout:"para mouseout",mouseover:"para mouseover","alt_image":"Imagen alternativa","swap_image":"Intercambiar imagen",map:"Mapa de imagen",id:"Id",rtl:"Derecha a izquierda",ltr:"Izquierda a derecha",classes:"Clases",style:"Estilos","long_desc":"V\u00ednculo para descripci\u00f3n larga",langcode:"C\u00f3digo del lenguaje",langdir:"Direcci\u00f3n del lenguaje","constrain_proportions":"Bloquear relaci\u00f3n de aspecto",preview:"Vista previa",title:"T\u00edtulo",general:"General","tab_advanced":"Avanzado","tab_appearance":"Apariencia","tab_general":"General",width:"Width",height:"Height"});webcit-8.24-dfsg.orig/tiny_mce/plugins/advimage/langs/da_dlg.js0000644000175000017500000000250312271477123024321 0ustar michaelmichaeltinyMCE.addI18n('da.advimage_dlg',{"image_list":"Billedliste","align_right":"H\u00f8jre","align_left":"Venstre","align_textbottom":"Tekstbund","align_texttop":"Teksttop","align_bottom":"Bund","align_middle":"Midte","align_top":"Top","align_baseline":"Grundlinje",align:"Justering",hspace:"Horisontal afstand",vspace:"Vertikal afstand",dimensions:"Dimentioner",border:"Kant",list:"Billedliste",alt:"Billedbeskrivelse",src:"Billed-URL","dialog_title":"Inds\u00e6t/rediger billede","missing_alt":"Er du sikker p\u00e5, at du vil forts\u00e6tte uden at inkludere en billedebeskrivelse? Uden denne er billedet m\u00e5ske ikke tilg\u00e6ngeligt for nogle brugere med handicaps, eller for dem der bruger en tekstbrowser, eller som browser internettet med billeder sl\u00e5et fra.","example_img":"Forh\u00e5ndsvisning af billede",misc:"Diverse",mouseout:"for mus-ud",mouseover:"for mus-over","alt_image":"Alternativt billede","swap_image":"Byt billede",map:"Billede map",id:"Id",rtl:"H\u00f8jre til venstre",ltr:"Venstre til h\u00f8jre",classes:"Klasser",style:"Stil","long_desc":"Lang beskrivelseslink",langcode:"Sprogkode",langdir:"Sprogretning","constrain_proportions":"Bibehold proportioner",preview:"Vis",title:"Titel",general:"Generelt","tab_advanced":"Avanceret","tab_appearance":"Udseende","tab_general":"Generelt",width:"Width",height:"Height"});webcit-8.24-dfsg.orig/tiny_mce/plugins/advimage/langs/el_dlg.js0000644000175000017500000001106412271477123024337 0ustar michaelmichaeltinyMCE.addI18n('el.advimage_dlg',{"image_list":"\u039b\u03af\u03c3\u03c4\u03b1 \u03b5\u03b9\u03ba\u03cc\u03bd\u03c9\u03bd","align_right":"\u0394\u03b5\u03be\u03b9\u03ac","align_left":"\u0391\u03c1\u03b9\u03c3\u03c4\u03b5\u03c1\u03ac","align_textbottom":"\u039a\u03b5\u03af\u03bc\u03b5\u03bd\u03bf \u03ba\u03ac\u03c4\u03c9","align_texttop":"\u039a\u03b5\u03af\u03bc\u03b5\u03bd\u03bf \u03c0\u03ac\u03bd\u03c9","align_bottom":"\u039a\u03ac\u03c4\u03c9","align_middle":"\u039c\u03ad\u03c3\u03b7","align_top":"\u03a0\u03ac\u03bd\u03c9","align_baseline":"\u0393\u03c1\u03b1\u03bc\u03bc\u03ae \u03c3\u03c4\u03bf\u03af\u03c7\u03b9\u03c3\u03b7\u03c2 \u03b3\u03c1\u03b1\u03bc\u03bc\u03ac\u03c4\u03c9\u03bd",align:"\u03a3\u03c4\u03bf\u03af\u03c7\u03b9\u03c3\u03b7",hspace:"\u0391\u03c0\u03cc\u03c3\u03c4\u03b1\u03c3\u03b7 \u03bf\u03c1\u03b9\u03b6\u03cc\u03bd\u03c4\u03b9\u03b1",vspace:"\u0391\u03c0\u03cc\u03c3\u03c4\u03b1\u03c3\u03b7 \u03ba\u03ac\u03b8\u03b5\u03c4\u03b7",dimensions:"\u0394\u03b9\u03b1\u03c3\u03c4\u03ac\u03c3\u03b5\u03b9\u03c2",border:"\u03a0\u03bb\u03b1\u03af\u03c3\u03b9\u03bf",list:"\u039b\u03af\u03c3\u03c4\u03b1 \u03b5\u03b9\u03ba\u03cc\u03bd\u03c9\u03bd",alt:"\u03a0\u03b5\u03c1\u03b9\u03b3\u03c1\u03b1\u03c6\u03ae \u03b5\u03b9\u03ba\u03cc\u03bd\u03b1\u03c2",src:"\u0394\u03b9\u03b1\u03b4\u03c1\u03bf\u03bc\u03ae URL \u03b5\u03b9\u03ba\u03cc\u03bd\u03b1\u03c2","dialog_title":"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae/\u03b5\u03c0\u03b5\u03be\u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u03b1 \u03b5\u03b9\u03ba\u03cc\u03bd\u03b1\u03c2","missing_alt":"\u03a3\u03af\u03b3\u03bf\u03c5\u03c1\u03b1 \u03b8\u03ad\u03bb\u03b5\u03c4\u03b5 \u03bd\u03b1 \u03c3\u03c5\u03bd\u03b5\u03c7\u03af\u03c3\u03b5\u03c4\u03b5 \u03c7\u03c9\u03c1\u03af\u03c2 \u03c0\u03b5\u03c1\u03b9\u03b3\u03c1\u03b1\u03c6\u03ae \u03b5\u03b9\u03ba\u03cc\u03bd\u03b1\u03c2; \u03a7\u03c9\u03c1\u03af\u03c2 \u03b1\u03c5\u03c4\u03ae\u03bd\u03b7 \u03b5\u03b9\u03ba\u03cc\u03bd\u03b1 \u03bc\u03c0\u03bf\u03c1\u03b5\u03af \u03bd\u03b1 \u03bc\u03b7\u03bd \u03b5\u03af\u03bd\u03b1\u03b9 \u03c0\u03c1\u03bf\u03c3\u03b2\u03ac\u03c3\u03b9\u03bc\u03b7 \u03c3\u03b5 \u03ba\u03ac\u03c0\u03bf\u03b9\u03bf\u03c5\u03c2 \u03c7\u03c1\u03ae\u03c3\u03c4\u03b5\u03c2 \u03bc\u03b5 \u03c0\u03c1\u03bf\u03b2\u03bb\u03ae\u03bc\u03b1\u03c4\u03b1, \u03ae \u03c3\'\u03b1\u03c5\u03c4\u03bf\u03cd\u03c2 \u03c0\u03bf\u03c5 \u03c7\u03c1\u03b7\u03c3\u03b9\u03bc\u03bf\u03c0\u03bf\u03b9\u03bf\u03cd\u03bd \u03c6\u03c5\u03bb\u03bb\u03bf\u03bc\u03b5\u03c4\u03c1\u03b7\u03c4\u03ae \u03ba\u03b5\u03b9\u03bc\u03ad\u03bd\u03bf\u03c5, \u03ae \u03b2\u03bb\u03ad\u03c0\u03bf\u03c5\u03bd \u03c4\u03bf \u0399\u03bd\u03c4\u03b5\u03c1\u03bd\u03b5\u03c4 \u03c7\u03c9\u03c1\u03af\u03c2 \u03b5\u03b9\u03ba\u03cc\u03bd\u03b5\u03c2.","example_img":"\u0394\u03bf\u03ba\u03b9\u03bc\u03b1\u03c3\u03c4\u03b9\u03ba\u03ae \u03b5\u03b9\u03ba\u03cc\u03bd\u03b1",misc:"\u0394\u03b9\u03ac\u03c6\u03bf\u03c1\u03b1",mouseout:"\u03b3\u03b9\u03b1 mouse out",mouseover:"\u03b3\u03b9\u03b1 mouse over","alt_image":"\u0395\u03bd\u03b1\u03bb\u03bb\u03b1\u03ba\u03c4\u03b9\u03ba\u03ae \u03b5\u03b9\u03ba\u03cc\u03bd\u03b1","swap_image":"\u0391\u03bd\u03c4\u03b1\u03bb\u03bb\u03b1\u03b3\u03ae \u03b5\u03b9\u03ba\u03cc\u03bd\u03b1\u03c2",map:"\u03a7\u03ac\u03c1\u03c4\u03b7\u03c2 \u03b5\u03b9\u03ba\u03cc\u03bd\u03b1\u03c2",id:"Id",rtl:"\u0394\u03b5\u03be\u03b9\u03ac \u03c0\u03c1\u03bf\u03c2 \u03b1\u03c1\u03b9\u03c3\u03c4\u03b5\u03c1\u03ac",ltr:"\u0391\u03c1\u03b9\u03c3\u03c4\u03b5\u03c1\u03ac \u03c0\u03c1\u03bf\u03c2 \u03b4\u03b5\u03be\u03b9\u03ac",classes:"\u039a\u03bb\u03ac\u03c3\u03b5\u03b9\u03c2",style:"\u03a3\u03c4\u03c5\u03bb","long_desc":"\u03a3\u03cd\u03bd\u03b4\u03b5\u03c3\u03bc\u03bf\u03c2 \u03c0\u03bb\u03ae\u03c1\u03bf\u03c5\u03c2 \u03c0\u03b5\u03c1\u03b9\u03b3\u03c1\u03b1\u03c6\u03ae\u03c2",langcode:"\u039a\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2 \u03b3\u03bb\u03ce\u03c3\u03c3\u03b1\u03c2",langdir:"\u039a\u03b1\u03c4\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 \u03b3\u03bb\u03ce\u03c3\u03c3\u03b1\u03c2","constrain_proportions":"\u0394\u03b9\u03b1\u03c4\u03ae\u03c1\u03b7\u03c3\u03b7 \u03b1\u03bd\u03b1\u03bb\u03bf\u03b3\u03af\u03b1\u03c2 \u03c0\u03bb. - \u03cd\u03c8\u03bf\u03c5\u03c2",preview:"\u03a0\u03c1\u03bf\u03b5\u03c0\u03b9\u03c3\u03ba\u03cc\u03c0\u03b7\u03c3\u03b7",title:"\u03a4\u03af\u03c4\u03bb\u03bf\u03c2",general:"\u0393\u03b5\u03bd\u03b9\u03ba\u03ac","tab_advanced":"\u0393\u03b9\u03b1 \u03c0\u03c1\u03bf\u03c7\u03c9\u03c1\u03b7\u03bc\u03ad\u03bd\u03bf\u03c5\u03c2","tab_appearance":"\u0395\u03bc\u03c6\u03ac\u03bd\u03b9\u03c3\u03b7","tab_general":"\u0393\u03b5\u03bd\u03b9\u03ba\u03ac",width:"Width",height:"Height"});webcit-8.24-dfsg.orig/tiny_mce/plugins/advimage/langs/hu_dlg.js0000644000175000017500000000327412271477123024357 0ustar michaelmichaeltinyMCE.addI18n('hu.advimage_dlg',{"image_list":"K\u00e9plista","align_right":"Jobbra","align_left":"Balra","align_textbottom":"Sz\u00f6veg alj\u00e1hoz","align_texttop":"Sz\u00f6veg tetej\u00e9hez","align_bottom":"Lentre","align_middle":"K\u00f6z\u00e9pre","align_top":"Fentre","align_baseline":"Alapvonalhoz",align:"Igaz\u00edt\u00e1s",hspace:"V\u00edzszintes t\u00e1vols\u00e1g",vspace:"F\u00fcgg\u0151leges t\u00e1vols\u00e1g",dimensions:"M\u00e9retek",border:"Keret",list:"K\u00e9plista",alt:"K\u00e9p helyettes\u00edt\u0151 sz\u00f6vege",src:"K\u00e9p internet c\u00edme","dialog_title":"K\u00e9p besz\u00far\u00e1sa/szerkeszt\u00e9se","missing_alt":"Biztosan folytatja helyettes\u00edt\u0151 sz\u00f6veg n\u00e9lk\u00fcl? En\u00e9lk\u00fcl a korl\u00e1toz\u00e1ssal \u00e9l\u0151k, sz\u00f6veges b\u00f6ng\u00e9sz\u0151t haszn\u00e1l\u00f3k \u00e9s a k\u00e9pek megjelen\u00edt\u00e9s\u00e9t letilt\u00f3 felhaszn\u00e1l\u00f3k h\u00e1tr\u00e1nyban lesznek.","example_img":"El\u0151n\u00e9zeti k\u00e9p",misc:"Vegyes",mouseout:"K\u00e9p az eg\u00e9rkurzor lev\u00e9telekor",mouseover:"K\u00e9p az eg\u00e9rkurzor f\u00f6l\u00e9vitelekor","alt_image":"Alternat\u00edv k\u00e9p","swap_image":"K\u00e9pcsere",map:"K\u00e9p t\u00e9rk\u00e9p",id:"Id",rtl:"Jobbr\u00f3l balra",ltr:"Balr\u00f3l jobbra",classes:"Oszt\u00e1lyok",style:"CSS St\u00edlus","long_desc":"B\u0151vebb le\u00edr\u00e1s link",langcode:"Nyelv k\u00f3d",langdir:"Nyelv \u00edr\u00e1s ir\u00e1ny","constrain_proportions":"Ar\u00e1nytart\u00e1s",preview:"El\u0151n\u00e9zet",title:"C\u00edm",general:"\u00c1ltal\u00e1nos","tab_advanced":"Halad\u00f3","tab_appearance":"Megjelen\u00e9s","tab_general":"\u00c1ltal\u00e1nos",width:"Width",height:"Height"});webcit-8.24-dfsg.orig/tiny_mce/plugins/advimage/langs/cs_dlg.js0000644000175000017500000000331512271477123024344 0ustar michaelmichaeltinyMCE.addI18n('cs.advimage_dlg',{"image_list":"Seznam obr\u00e1zk\u016f","align_right":"Vpravo","align_left":"Vlevo","align_textbottom":"Se spodkem \u0159\u00e1dku","align_texttop":"S vrchem \u0159\u00e1dku","align_bottom":"Dol\u016f","align_middle":"Na st\u0159ed \u0159\u00e1dku","align_top":"Nahoru","align_baseline":"Na z\u00e1kladnu",align:"Zarovn\u00e1n\u00ed",hspace:"Horizont\u00e1ln\u00ed odsazen\u00ed",vspace:"Vertik\u00e1ln\u00ed odsazen\u00ed",dimensions:"Rozm\u011bry",border:"R\u00e1me\u010dek",list:"Seznam obr\u00e1zk\u016f",alt:"Popis obr\u00e1zku",src:"URL obr\u00e1zku","dialog_title":"Vlo\u017eit/upravit obr\u00e1zek","missing_alt":"Skute\u010dn\u011b chcete pokra\u010dovat bez vlo\u017een\u00e9ho popisu obr\u00e1zku? Bez popisu m\u016f\u017ee b\u00fdt obr\u00e1zek nep\u0159\u00edstupn\u00fd u\u017eivatel\u016fm se zrakov\u00fdm posti\u017een\u00edm, u\u017eivatel\u016fm textov\u00fdch prohl\u00ed\u017ee\u010d\u016f nebo u\u017eivatel\u016fm, kte\u0159\u00ed maj\u00ed vypnuto zobrazov\u00e1n\u00ed obr\u00e1zk\u016f.","example_img":"P\u0159\u00edklad obr\u00e1zku",misc:"R\u016fzn\u00e9",mouseout:"Po odjet\u00ed my\u0161i...",mouseover:"P\u0159i najet\u00ed my\u0161i...","alt_image":"Alternativn\u00ed obr\u00e1zek","swap_image":"P\u0159epnout obr\u00e1zek",map:"Obr\u00e1zkov\u00e1 mapa",id:"ID",rtl:"Zprava doleva",ltr:"Zleva doprava",classes:"T\u0159\u00eddy",style:"Styl","long_desc":"Dlouh\u00fd popis",langcode:"K\u00f3d jazyka",langdir:"Sm\u011br textu","constrain_proportions":"Zachovat proporce",preview:"N\u00e1hled",title:"Titulek",general:"Obecn\u00e9 parametry","tab_advanced":"Roz\u0161\u00ed\u0159en\u00e9","tab_appearance":"Vzhled","tab_general":"Obecn\u00e9",width:"Width",height:"Height"});webcit-8.24-dfsg.orig/tiny_mce/plugins/advimage/langs/en_dlg.js0000644000175000017500000000236612271477123024346 0ustar michaelmichaeltinyMCE.addI18n('en.advimage_dlg',{"image_list":"Image List","align_right":"Right","align_left":"Left","align_textbottom":"Text Bottom","align_texttop":"Text Top","align_bottom":"Bottom","align_middle":"Middle","align_top":"Top","align_baseline":"Baseline",align:"Alignment",hspace:"Horizontal Space",vspace:"Vertical Space",dimensions:"Dimensions",border:"Border",list:"Image List",alt:"Image Description",src:"Image URL","dialog_title":"Insert/Edit Image","missing_alt":"Are you sure you want to continue without including an Image Description? Without it the image may not be accessible to some users with disabilities, or to those using a text browser, or browsing the Web with images turned off.","example_img":"Appearance Preview Image",misc:"Miscellaneous",mouseout:"For Mouse Out",mouseover:"For Mouse Over","alt_image":"Alternative Image","swap_image":"Swap Image",map:"Image Map",id:"ID",rtl:"Right to Left",ltr:"Left to Right",classes:"Classes",style:"Style","long_desc":"Long Description Link",langcode:"Language Code",langdir:"Language Direction","constrain_proportions":"Constrain Proportions",preview:"Preview",title:"Title",general:"General","tab_advanced":"Advanced","tab_appearance":"Appearance","tab_general":"General",width:"Width",height:"Height"});webcit-8.24-dfsg.orig/tiny_mce/plugins/advimage/langs/it_dlg.js0000644000175000017500000000266612271477123024363 0ustar michaelmichaeltinyMCE.addI18n('it.advimage_dlg',{"image_list":"Lista immagini","align_right":"A destra","align_left":"A sinistra","align_textbottom":"In basso al testo","align_texttop":"In alto al testo","align_bottom":"In basso","align_middle":"In mezzo","align_top":"In alto","align_baseline":"Alla base",align:"Allineamento",hspace:"Spaziatura orizzontale",vspace:"Spaziatura verticale",dimensions:"Dimensioni",border:"Bordo",list:"Lista immagini",alt:"Descrizione immagine",src:"URL immagine","dialog_title":"Inserisci/modifica immagine","missing_alt":"Sicuro di continuare senza includere una descrizione dell\'immagine? Senza di essa l\'immagine pu\u00f2 non essere accessibile ad alcuni utenti con disabilit\u00e0, o per coloro che usano un browser testuale oppure che hanno disabilitato la visualizzazione delle immagini nel loro browser.","example_img":"Anteprima aspetto immagine",misc:"Impostazioni varie",mouseout:"quando mouse fuori",mouseover:"quando mouse sopra","alt_image":"Immagine alternativa","swap_image":"Sostituisci immagine",map:"Immagine come mappa",id:"Id",rtl:"Destra verso sinistraa",ltr:"Sinistra verso destra",classes:"Classe",style:"Stile","long_desc":"Descrizione del collegamento",langcode:"codice lingua",langdir:"Direzione testo","constrain_proportions":"Mantieni proporzioni",preview:"Anteprima",title:"Titolo",general:"Generale","tab_advanced":"Avanzate","tab_appearance":"Aspetto","tab_general":"Generale",width:"Width",height:"Height"});webcit-8.24-dfsg.orig/tiny_mce/plugins/advimage/editor_plugin.js0000644000175000017500000000142712271477123024653 0ustar michaelmichael(function(){tinymce.create("tinymce.plugins.AdvancedImagePlugin",{init:function(a,b){a.addCommand("mceAdvImage",function(){if(a.dom.getAttrib(a.selection.getNode(),"class","").indexOf("mceItem")!=-1){return}a.windowManager.open({file:b+"/image.htm",width:480+parseInt(a.getLang("advimage.delta_width",0)),height:385+parseInt(a.getLang("advimage.delta_height",0)),inline:1},{plugin_url:b})});a.addButton("image",{title:"advimage.image_desc",cmd:"mceAdvImage"})},getInfo:function(){return{longname:"Advanced image",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advimage",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("advimage",tinymce.plugins.AdvancedImagePlugin)})();webcit-8.24-dfsg.orig/tiny_mce/plugins/advimage/image.htm0000644000175000017500000002746612271477123023260 0ustar michaelmichael {#advimage_dlg.dialog_title}
    {#advimage_dlg.general}
    {#advimage_dlg.preview}
    {#advimage_dlg.tab_appearance}
    {#advimage_dlg.example_img} Lorem ipsum, Dolor sit amet, consectetuer adipiscing loreum ipsum edipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.Loreum ipsum edipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
    x px
     
    {#advimage_dlg.swap_image}
     
     
    {#advimage_dlg.misc}
     
    webcit-8.24-dfsg.orig/tiny_mce/plugins/advimage/js/0000755000175000017500000000000012271477123022061 5ustar michaelmichaelwebcit-8.24-dfsg.orig/tiny_mce/plugins/advimage/js/image.js0000644000175000017500000003100612271477123023501 0ustar michaelmichaelvar ImageDialog = { preInit : function() { var url; tinyMCEPopup.requireLangPack(); if (url = tinyMCEPopup.getParam("external_image_list_url")) document.write(''); }, init : function(ed) { var f = document.forms[0], nl = f.elements, ed = tinyMCEPopup.editor, dom = ed.dom, n = ed.selection.getNode(), fl = tinyMCEPopup.getParam('external_image_list', 'tinyMCEImageList'); tinyMCEPopup.resizeToInnerSize(); this.fillClassList('class_list'); this.fillFileList('src_list', fl); this.fillFileList('over_list', fl); this.fillFileList('out_list', fl); TinyMCE_EditableSelects.init(); if (n.nodeName == 'IMG') { nl.src.value = dom.getAttrib(n, 'src'); nl.width.value = dom.getAttrib(n, 'width'); nl.height.value = dom.getAttrib(n, 'height'); nl.alt.value = dom.getAttrib(n, 'alt'); nl.title.value = dom.getAttrib(n, 'title'); nl.vspace.value = this.getAttrib(n, 'vspace'); nl.hspace.value = this.getAttrib(n, 'hspace'); nl.border.value = this.getAttrib(n, 'border'); selectByValue(f, 'align', this.getAttrib(n, 'align')); selectByValue(f, 'class_list', dom.getAttrib(n, 'class'), true, true); nl.style.value = dom.getAttrib(n, 'style'); nl.id.value = dom.getAttrib(n, 'id'); nl.dir.value = dom.getAttrib(n, 'dir'); nl.lang.value = dom.getAttrib(n, 'lang'); nl.usemap.value = dom.getAttrib(n, 'usemap'); nl.longdesc.value = dom.getAttrib(n, 'longdesc'); nl.insert.value = ed.getLang('update'); if (/^\s*this.src\s*=\s*\'([^\']+)\';?\s*$/.test(dom.getAttrib(n, 'onmouseover'))) nl.onmouseoversrc.value = dom.getAttrib(n, 'onmouseover').replace(/^\s*this.src\s*=\s*\'([^\']+)\';?\s*$/, '$1'); if (/^\s*this.src\s*=\s*\'([^\']+)\';?\s*$/.test(dom.getAttrib(n, 'onmouseout'))) nl.onmouseoutsrc.value = dom.getAttrib(n, 'onmouseout').replace(/^\s*this.src\s*=\s*\'([^\']+)\';?\s*$/, '$1'); if (ed.settings.inline_styles) { // Move attribs to styles if (dom.getAttrib(n, 'align')) this.updateStyle('align'); if (dom.getAttrib(n, 'hspace')) this.updateStyle('hspace'); if (dom.getAttrib(n, 'border')) this.updateStyle('border'); if (dom.getAttrib(n, 'vspace')) this.updateStyle('vspace'); } } // Setup browse button document.getElementById('srcbrowsercontainer').innerHTML = getBrowserHTML('srcbrowser','src','image','theme_advanced_image'); if (isVisible('srcbrowser')) document.getElementById('src').style.width = '260px'; // Setup browse button document.getElementById('onmouseoversrccontainer').innerHTML = getBrowserHTML('overbrowser','onmouseoversrc','image','theme_advanced_image'); if (isVisible('overbrowser')) document.getElementById('onmouseoversrc').style.width = '260px'; // Setup browse button document.getElementById('onmouseoutsrccontainer').innerHTML = getBrowserHTML('outbrowser','onmouseoutsrc','image','theme_advanced_image'); if (isVisible('outbrowser')) document.getElementById('onmouseoutsrc').style.width = '260px'; // If option enabled default contrain proportions to checked if (ed.getParam("advimage_constrain_proportions", true)) f.constrain.checked = true; // Check swap image if valid data if (nl.onmouseoversrc.value || nl.onmouseoutsrc.value) this.setSwapImage(true); else this.setSwapImage(false); this.changeAppearance(); this.showPreviewImage(nl.src.value, 1); }, insert : function(file, title) { var ed = tinyMCEPopup.editor, t = this, f = document.forms[0]; if (f.src.value === '') { if (ed.selection.getNode().nodeName == 'IMG') { ed.dom.remove(ed.selection.getNode()); ed.execCommand('mceRepaint'); } tinyMCEPopup.close(); return; } if (tinyMCEPopup.getParam("accessibility_warnings", 1)) { if (!f.alt.value) { tinyMCEPopup.confirm(tinyMCEPopup.getLang('advimage_dlg.missing_alt'), function(s) { if (s) t.insertAndClose(); }); return; } } t.insertAndClose(); }, insertAndClose : function() { var ed = tinyMCEPopup.editor, f = document.forms[0], nl = f.elements, v, args = {}, el; tinyMCEPopup.restoreSelection(); // Fixes crash in Safari if (tinymce.isWebKit) ed.getWin().focus(); if (!ed.settings.inline_styles) { args = { vspace : nl.vspace.value, hspace : nl.hspace.value, border : nl.border.value, align : getSelectValue(f, 'align') }; } else { // Remove deprecated values args = { vspace : '', hspace : '', border : '', align : '' }; } tinymce.extend(args, { src : nl.src.value.replace(/ /g, '%20'), width : nl.width.value, height : nl.height.value, alt : nl.alt.value, title : nl.title.value, 'class' : getSelectValue(f, 'class_list'), style : nl.style.value, id : nl.id.value, dir : nl.dir.value, lang : nl.lang.value, usemap : nl.usemap.value, longdesc : nl.longdesc.value }); args.onmouseover = args.onmouseout = ''; if (f.onmousemovecheck.checked) { if (nl.onmouseoversrc.value) args.onmouseover = "this.src='" + nl.onmouseoversrc.value + "';"; if (nl.onmouseoutsrc.value) args.onmouseout = "this.src='" + nl.onmouseoutsrc.value + "';"; } el = ed.selection.getNode(); if (el && el.nodeName == 'IMG') { ed.dom.setAttribs(el, args); } else { tinymce.each(args, function(value, name) { if (value === "") { delete args[name]; } }); ed.execCommand('mceInsertContent', false, tinyMCEPopup.editor.dom.createHTML('img', args), {skip_undo : 1}); ed.undoManager.add(); } tinyMCEPopup.editor.execCommand('mceRepaint'); tinyMCEPopup.editor.focus(); tinyMCEPopup.close(); }, getAttrib : function(e, at) { var ed = tinyMCEPopup.editor, dom = ed.dom, v, v2; if (ed.settings.inline_styles) { switch (at) { case 'align': if (v = dom.getStyle(e, 'float')) return v; if (v = dom.getStyle(e, 'vertical-align')) return v; break; case 'hspace': v = dom.getStyle(e, 'margin-left') v2 = dom.getStyle(e, 'margin-right'); if (v && v == v2) return parseInt(v.replace(/[^0-9]/g, '')); break; case 'vspace': v = dom.getStyle(e, 'margin-top') v2 = dom.getStyle(e, 'margin-bottom'); if (v && v == v2) return parseInt(v.replace(/[^0-9]/g, '')); break; case 'border': v = 0; tinymce.each(['top', 'right', 'bottom', 'left'], function(sv) { sv = dom.getStyle(e, 'border-' + sv + '-width'); // False or not the same as prev if (!sv || (sv != v && v !== 0)) { v = 0; return false; } if (sv) v = sv; }); if (v) return parseInt(v.replace(/[^0-9]/g, '')); break; } } if (v = dom.getAttrib(e, at)) return v; return ''; }, setSwapImage : function(st) { var f = document.forms[0]; f.onmousemovecheck.checked = st; setBrowserDisabled('overbrowser', !st); setBrowserDisabled('outbrowser', !st); if (f.over_list) f.over_list.disabled = !st; if (f.out_list) f.out_list.disabled = !st; f.onmouseoversrc.disabled = !st; f.onmouseoutsrc.disabled = !st; }, fillClassList : function(id) { var dom = tinyMCEPopup.dom, lst = dom.get(id), v, cl; if (v = tinyMCEPopup.getParam('theme_advanced_styles')) { cl = []; tinymce.each(v.split(';'), function(v) { var p = v.split('='); cl.push({'title' : p[0], 'class' : p[1]}); }); } else cl = tinyMCEPopup.editor.dom.getClasses(); if (cl.length > 0) { lst.options.length = 0; lst.options[lst.options.length] = new Option(tinyMCEPopup.getLang('not_set'), ''); tinymce.each(cl, function(o) { lst.options[lst.options.length] = new Option(o.title || o['class'], o['class']); }); } else dom.remove(dom.getParent(id, 'tr')); }, fillFileList : function(id, l) { var dom = tinyMCEPopup.dom, lst = dom.get(id), v, cl; l = typeof(l) === 'function' ? l() : window[l]; lst.options.length = 0; if (l && l.length > 0) { lst.options[lst.options.length] = new Option('', ''); tinymce.each(l, function(o) { lst.options[lst.options.length] = new Option(o[0], o[1]); }); } else dom.remove(dom.getParent(id, 'tr')); }, resetImageData : function() { var f = document.forms[0]; f.elements.width.value = f.elements.height.value = ''; }, updateImageData : function(img, st) { var f = document.forms[0]; if (!st) { f.elements.width.value = img.width; f.elements.height.value = img.height; } this.preloadImg = img; }, changeAppearance : function() { var ed = tinyMCEPopup.editor, f = document.forms[0], img = document.getElementById('alignSampleImg'); if (img) { if (ed.getParam('inline_styles')) { ed.dom.setAttrib(img, 'style', f.style.value); } else { img.align = f.align.value; img.border = f.border.value; img.hspace = f.hspace.value; img.vspace = f.vspace.value; } } }, changeHeight : function() { var f = document.forms[0], tp, t = this; if (!f.constrain.checked || !t.preloadImg) { return; } if (f.width.value == "" || f.height.value == "") return; tp = (parseInt(f.width.value) / parseInt(t.preloadImg.width)) * t.preloadImg.height; f.height.value = tp.toFixed(0); }, changeWidth : function() { var f = document.forms[0], tp, t = this; if (!f.constrain.checked || !t.preloadImg) { return; } if (f.width.value == "" || f.height.value == "") return; tp = (parseInt(f.height.value) / parseInt(t.preloadImg.height)) * t.preloadImg.width; f.width.value = tp.toFixed(0); }, updateStyle : function(ty) { var dom = tinyMCEPopup.dom, b, bStyle, bColor, v, isIE = tinymce.isIE, f = document.forms[0], img = dom.create('img', {style : dom.get('style').value}); if (tinyMCEPopup.editor.settings.inline_styles) { // Handle align if (ty == 'align') { dom.setStyle(img, 'float', ''); dom.setStyle(img, 'vertical-align', ''); v = getSelectValue(f, 'align'); if (v) { if (v == 'left' || v == 'right') dom.setStyle(img, 'float', v); else img.style.verticalAlign = v; } } // Handle border if (ty == 'border') { b = img.style.border ? img.style.border.split(' ') : []; bStyle = dom.getStyle(img, 'border-style'); bColor = dom.getStyle(img, 'border-color'); dom.setStyle(img, 'border', ''); v = f.border.value; if (v || v == '0') { if (v == '0') img.style.border = isIE ? '0' : '0 none none'; else { if (b.length == 3 && b[isIE ? 2 : 1]) bStyle = b[isIE ? 2 : 1]; else if (!bStyle || bStyle == 'none') bStyle = 'solid'; if (b.length == 3 && b[isIE ? 0 : 2]) bColor = b[isIE ? 0 : 2]; else if (!bColor || bColor == 'none') bColor = 'black'; img.style.border = v + 'px ' + bStyle + ' ' + bColor; } } } // Handle hspace if (ty == 'hspace') { dom.setStyle(img, 'marginLeft', ''); dom.setStyle(img, 'marginRight', ''); v = f.hspace.value; if (v) { img.style.marginLeft = v + 'px'; img.style.marginRight = v + 'px'; } } // Handle vspace if (ty == 'vspace') { dom.setStyle(img, 'marginTop', ''); dom.setStyle(img, 'marginBottom', ''); v = f.vspace.value; if (v) { img.style.marginTop = v + 'px'; img.style.marginBottom = v + 'px'; } } // Merge dom.get('style').value = dom.serializeStyle(dom.parseStyle(img.style.cssText), 'img'); } }, changeMouseMove : function() { }, showPreviewImage : function(u, st) { if (!u) { tinyMCEPopup.dom.setHTML('prev', ''); return; } if (!st && tinyMCEPopup.getParam("advimage_update_dimensions_onchange", true)) this.resetImageData(); u = tinyMCEPopup.editor.documentBaseURI.toAbsolute(u); if (!st) tinyMCEPopup.dom.setHTML('prev', ''); else tinyMCEPopup.dom.setHTML('prev', ''); } }; ImageDialog.preInit(); tinyMCEPopup.onInit.add(ImageDialog.init, ImageDialog); webcit-8.24-dfsg.orig/tiny_mce/plugins/advimage/css/0000755000175000017500000000000012271477123022235 5ustar michaelmichaelwebcit-8.24-dfsg.orig/tiny_mce/plugins/advimage/css/advimage.css0000644000175000017500000000124012271477123024521 0ustar michaelmichael#src_list, #over_list, #out_list {width:280px;} .mceActionPanel {margin-top:7px;} .alignPreview {border:1px solid #000; width:140px; height:140px; overflow:hidden; padding:5px;} .checkbox {border:0;} .panel_wrapper div.current {height:305px;} #prev {margin:0; border:1px solid #000; width:428px; height:150px; overflow:auto;} #align, #classlist {width:150px;} #width, #height {vertical-align:middle; width:50px; text-align:center;} #vspace, #hspace, #border {vertical-align:middle; width:30px; text-align:center;} #class_list {width:180px;} input {width: 280px;} #constrain, #onmousemovecheck {width:auto;} #id, #dir, #lang, #usemap, #longdesc {width:200px;} webcit-8.24-dfsg.orig/tiny_mce/plugins/save/0000755000175000017500000000000012271477123020626 5ustar michaelmichaelwebcit-8.24-dfsg.orig/tiny_mce/plugins/save/editor_plugin_src.js0000644000175000017500000000474112271477123024705 0ustar michaelmichael/** * editor_plugin_src.js * * Copyright 2009, Moxiecode Systems AB * Released under LGPL License. * * License: http://tinymce.moxiecode.com/license * Contributing: http://tinymce.moxiecode.com/contributing */ (function() { tinymce.create('tinymce.plugins.Save', { init : function(ed, url) { var t = this; t.editor = ed; // Register commands ed.addCommand('mceSave', t._save, t); ed.addCommand('mceCancel', t._cancel, t); // Register buttons ed.addButton('save', {title : 'save.save_desc', cmd : 'mceSave'}); ed.addButton('cancel', {title : 'save.cancel_desc', cmd : 'mceCancel'}); ed.onNodeChange.add(t._nodeChange, t); ed.addShortcut('ctrl+s', ed.getLang('save.save_desc'), 'mceSave'); }, getInfo : function() { return { longname : 'Save', author : 'Moxiecode Systems AB', authorurl : 'http://tinymce.moxiecode.com', infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/save', version : tinymce.majorVersion + "." + tinymce.minorVersion }; }, // Private methods _nodeChange : function(ed, cm, n) { var ed = this.editor; if (ed.getParam('save_enablewhendirty')) { cm.setDisabled('save', !ed.isDirty()); cm.setDisabled('cancel', !ed.isDirty()); } }, // Private methods _save : function() { var ed = this.editor, formObj, os, i, elementId; formObj = tinymce.DOM.get(ed.id).form || tinymce.DOM.getParent(ed.id, 'form'); if (ed.getParam("save_enablewhendirty") && !ed.isDirty()) return; tinyMCE.triggerSave(); // Use callback instead if (os = ed.getParam("save_onsavecallback")) { if (ed.execCallback('save_onsavecallback', ed)) { ed.startContent = tinymce.trim(ed.getContent({format : 'raw'})); ed.nodeChanged(); } return; } if (formObj) { ed.isNotDirty = true; if (formObj.onsubmit == null || formObj.onsubmit() != false) formObj.submit(); ed.nodeChanged(); } else ed.windowManager.alert("Error: No form element found."); }, _cancel : function() { var ed = this.editor, os, h = tinymce.trim(ed.startContent); // Use callback instead if (os = ed.getParam("save_oncancelcallback")) { ed.execCallback('save_oncancelcallback', ed); return; } ed.setContent(h); ed.undoManager.clear(); ed.nodeChanged(); } }); // Register plugin tinymce.PluginManager.add('save', tinymce.plugins.Save); })();webcit-8.24-dfsg.orig/tiny_mce/plugins/save/editor_plugin.js0000644000175000017500000000304112271477123024026 0ustar michaelmichael(function(){tinymce.create("tinymce.plugins.Save",{init:function(a,b){var c=this;c.editor=a;a.addCommand("mceSave",c._save,c);a.addCommand("mceCancel",c._cancel,c);a.addButton("save",{title:"save.save_desc",cmd:"mceSave"});a.addButton("cancel",{title:"save.cancel_desc",cmd:"mceCancel"});a.onNodeChange.add(c._nodeChange,c);a.addShortcut("ctrl+s",a.getLang("save.save_desc"),"mceSave")},getInfo:function(){return{longname:"Save",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/save",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_nodeChange:function(b,a,c){var b=this.editor;if(b.getParam("save_enablewhendirty")){a.setDisabled("save",!b.isDirty());a.setDisabled("cancel",!b.isDirty())}},_save:function(){var c=this.editor,a,e,d,b;a=tinymce.DOM.get(c.id).form||tinymce.DOM.getParent(c.id,"form");if(c.getParam("save_enablewhendirty")&&!c.isDirty()){return}tinyMCE.triggerSave();if(e=c.getParam("save_onsavecallback")){if(c.execCallback("save_onsavecallback",c)){c.startContent=tinymce.trim(c.getContent({format:"raw"}));c.nodeChanged()}return}if(a){c.isNotDirty=true;if(a.onsubmit==null||a.onsubmit()!=false){a.submit()}c.nodeChanged()}else{c.windowManager.alert("Error: No form element found.")}},_cancel:function(){var a=this.editor,c,b=tinymce.trim(a.startContent);if(c=a.getParam("save_oncancelcallback")){a.execCallback("save_oncancelcallback",a);return}a.setContent(b);a.undoManager.clear();a.nodeChanged()}});tinymce.PluginManager.add("save",tinymce.plugins.Save)})();webcit-8.24-dfsg.orig/tiny_mce/plugins/searchreplace/0000755000175000017500000000000012271477123022471 5ustar michaelmichaelwebcit-8.24-dfsg.orig/tiny_mce/plugins/searchreplace/editor_plugin_src.js0000644000175000017500000000340312271477123026542 0ustar michaelmichael/** * editor_plugin_src.js * * Copyright 2009, Moxiecode Systems AB * Released under LGPL License. * * License: http://tinymce.moxiecode.com/license * Contributing: http://tinymce.moxiecode.com/contributing */ (function() { tinymce.create('tinymce.plugins.SearchReplacePlugin', { init : function(ed, url) { function open(m) { // Keep IE from writing out the f/r character to the editor // instance while initializing a new dialog. See: #3131190 window.focus(); ed.windowManager.open({ file : url + '/searchreplace.htm', width : 420 + parseInt(ed.getLang('searchreplace.delta_width', 0)), height : 170 + parseInt(ed.getLang('searchreplace.delta_height', 0)), inline : 1, auto_focus : 0 }, { mode : m, search_string : ed.selection.getContent({format : 'text'}), plugin_url : url }); }; // Register commands ed.addCommand('mceSearch', function() { open('search'); }); ed.addCommand('mceReplace', function() { open('replace'); }); // Register buttons ed.addButton('search', {title : 'searchreplace.search_desc', cmd : 'mceSearch'}); ed.addButton('replace', {title : 'searchreplace.replace_desc', cmd : 'mceReplace'}); ed.addShortcut('ctrl+f', 'searchreplace.search_desc', 'mceSearch'); }, getInfo : function() { return { longname : 'Search/Replace', author : 'Moxiecode Systems AB', authorurl : 'http://tinymce.moxiecode.com', infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/searchreplace', version : tinymce.majorVersion + "." + tinymce.minorVersion }; } }); // Register plugin tinymce.PluginManager.add('searchreplace', tinymce.plugins.SearchReplacePlugin); })();webcit-8.24-dfsg.orig/tiny_mce/plugins/searchreplace/langs/0000755000175000017500000000000012271477123023575 5ustar michaelmichaelwebcit-8.24-dfsg.orig/tiny_mce/plugins/searchreplace/langs/bg_dlg.js0000644000175000017500000000252312271477123025353 0ustar michaelmichaeltinyMCE.addI18n('bg.searchreplace_dlg',{findwhat:"\u0422\u044a\u0440\u0441\u0438",replacewith:"\u0417\u0430\u043c\u0435\u0441\u0442\u0438 \u0441",direction:"\u041f\u043e\u0441\u043e\u043a\u0430",up:"\u041d\u0430\u0433\u043e\u0440\u0435",down:"\u041d\u0430\u0434\u043e\u043b\u0443",mcase:"\u0421\u044a\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u0435 \u043d\u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u044a\u0440\u0430",findnext:"\u0422\u044a\u0440\u0441\u0438 \u0441\u043b\u0435\u0434\u0432\u0430\u0449\u0438",allreplaced:"\u0412\u0441\u0438\u0447\u043a\u0438 \u043d\u0430\u043c\u0435\u0440\u0435\u043d\u0438 \u0434\u0443\u043c\u0438 \u0431\u044f\u0445\u0430 \u0437\u0430\u043c\u0435\u0441\u0442\u0435\u043d\u0438.","searchnext_desc":"\u0422\u044a\u0440\u0441\u0438 \u043e\u0442\u043d\u043e\u0432\u043e",notfound:"\u0422\u044a\u0440\u0441\u0435\u043d\u0435\u0442\u043e \u0437\u0430\u0432\u044a\u0440\u0448\u0438. \u0422\u044a\u0440\u0441\u0435\u043d\u0438\u0442\u0435 \u0434\u0443\u043c\u0438 \u043d\u0435 \u0431\u044f\u0445\u0430 \u043e\u0442\u043a\u0440\u0438\u0442\u0438.","search_title":"\u0422\u044a\u0440\u0441\u0438","replace_title":"\u0422\u044a\u0440\u0441\u0438/\u0417\u0430\u043c\u0435\u0441\u0442\u0438",replaceall:"\u0417\u0430\u043c\u0435\u0441\u0442\u0438 \u0432\u0441\u0438\u0447\u043a\u0438",replace:"\u0417\u0430\u043c\u0435\u0441\u0442\u0438"});webcit-8.24-dfsg.orig/tiny_mce/plugins/searchreplace/langs/fr_dlg.js0000644000175000017500000000111012271477123025361 0ustar michaelmichaeltinyMCE.addI18n('fr.searchreplace_dlg',{findwhat:"Rechercher ceci",replacewith:"Remplacer par",direction:"Direction",up:"Vers le haut",down:"Vers le bas",mcase:"Sensible \u00e0 la casse",findnext:"Rechercher le suivant",allreplaced:"Toutes les occurrences de la cha\u00eene recherch\u00e9e ont \u00e9t\u00e9 remplac\u00e9es.","searchnext_desc":"Suivant",notfound:"La recherche est termin\u00e9e. La cha\u00eene recherch\u00e9e n\'a pas \u00e9t\u00e9 trouv\u00e9e.","search_title":"Rechercher","replace_title":"Rechercher / remplacer",replaceall:"Tout remplacer",replace:"Remplacer"});webcit-8.24-dfsg.orig/tiny_mce/plugins/searchreplace/langs/zh-cn_dlg.js0000644000175000017500000000117112271477123026000 0ustar michaelmichaeltinyMCE.addI18n('zh-cn.searchreplace_dlg',{findwhat:"\u67e5\u627e\u76ee\u6807",replacewith:"\u66ff\u6362\u4e3a",direction:"\u67e5\u627e\u65b9\u5411",up:"\u5411\u4e0a",down:"\u5411\u4e0b",mcase:"\u533a\u5206\u5927\u5c0f\u5199",findnext:"\u67e5\u627e\u4e0b\u4e00\u4e2a",allreplaced:"\u6240\u6709\u51fa\u73b0\u7684\u5b57\u7b26\u5747\u5df2\u66ff\u6362\u3002","searchnext_desc":"\u7ee7\u7eed\u67e5\u627e",notfound:"\u67e5\u627e\u5b8c\u6210\uff0c\u672a\u627e\u5230\u7b26\u5408\u7684\u6587\u5b57\u3002","search_title":"\u67e5\u627e","replace_title":"\u67e5\u627e/\u66ff\u6362",replaceall:"\u5168\u90e8\u66ff\u6362",replace:"\u66ff\u6362"});webcit-8.24-dfsg.orig/tiny_mce/plugins/searchreplace/langs/de_dlg.js0000644000175000017500000000101212271477123025343 0ustar michaelmichaeltinyMCE.addI18n('de.searchreplace_dlg',{findwhat:"Zu suchender Text",replacewith:"Ersetzen durch",direction:"Suchrichtung",up:"Aufw\u00e4rts",down:"Abw\u00e4rts",mcase:"Gro\u00df-/Kleinschreibung beachten",findnext:"Weitersuchen",allreplaced:"Alle Vorkommen der Zeichenkette wurden ersetzt.","searchnext_desc":"Weitersuchen",notfound:"Die Suche ist am Ende angelangt. Die Zeichenkette konnte nicht gefunden werden.","search_title":"Suchen","replace_title":"Suchen/Ersetzen",replaceall:"Alle ersetzen",replace:"Ersetzen"});webcit-8.24-dfsg.orig/tiny_mce/plugins/searchreplace/langs/fi_dlg.js0000644000175000017500000000072412271477123025362 0ustar michaelmichaeltinyMCE.addI18n('fi.searchreplace_dlg',{findwhat:"Etsit\u00e4\u00e4n",replacewith:"Korvataan",direction:"Suunta",up:"Yl\u00f6s",down:"Alas",mcase:"Huomioi isot ja pienet kirjaimet",findnext:"Etsi seuraavaa",allreplaced:"Kaikki l\u00f6ydetyt merkkijonot korvattiin.","searchnext_desc":"Etsi uudestaan",notfound:"Haku on valmis. Haettua teksti\u00e4 ei l\u00f6ytynyt.","search_title":"Haku","replace_title":"Etsi ja korvaa",replaceall:"Korvaa kaikki",replace:"Korvaa"});webcit-8.24-dfsg.orig/tiny_mce/plugins/searchreplace/langs/et_dlg.js0000644000175000017500000000067512271477123025401 0ustar michaelmichaeltinyMCE.addI18n('et.searchreplace_dlg',{findwhat:"Otsi mida",replacewith:"Asenda millega",direction:"Suund",up:"\u00dcles",down:"Alla",mcase:"Vasta suurusele",findnext:"Otsi j\u00e4rgmine",allreplaced:"K\u00f5ik otsis\u00f5na ilmingud on asendatud.","searchnext_desc":"Otsi uuesti",notfound:"Otsing on l\u00f5petatud. Otsis\u00f5na ei leitud.","search_title":"Otsi","replace_title":"Otsi/Asenda",replaceall:"Asenda k\u00f5ik",replace:"Asenda"});webcit-8.24-dfsg.orig/tiny_mce/plugins/searchreplace/langs/es_dlg.js0000644000175000017500000000074612271477123025377 0ustar michaelmichaeltinyMCE.addI18n('es.searchreplace_dlg',{findwhat:"Qu\u00e9 buscar",replacewith:"Reemplazar por",direction:"Direcci\u00f3n",up:"Arriba",down:"Abajo",mcase:"Min\u00fas./May\u00fas.",findnext:"Buscar siguiente",allreplaced:"Se ha reemplazado el texto.","searchnext_desc":"Buscar de nuevo",notfound:"La b\u00fasqueda se ha completado. No se encontr\u00f3 el texto introducido.","search_title":"Buscar","replace_title":"Buscar/Reemplazar",replaceall:"Reemplazar todo",replace:"Reemplazar"});webcit-8.24-dfsg.orig/tiny_mce/plugins/searchreplace/langs/da_dlg.js0000644000175000017500000000071512271477123025350 0ustar michaelmichaeltinyMCE.addI18n('da.searchreplace_dlg',{findwhat:"S\u00f8g efter",replacewith:"Erstat med",direction:"Retning",up:"Op",down:"Ned",mcase:"Forskel p\u00e5 store og sm\u00e5 bogstaver",findnext:"Find n\u00e6ste",allreplaced:"Alle forekomster af s\u00f8gestrengen er erstattet.","searchnext_desc":"S\u00f8g igen",notfound:"S\u00f8gningen gav intet resultat.","search_title":"S\u00f8g","replace_title":"S\u00f8g / erstat",replaceall:"Erstat alle",replace:"Erstat"});webcit-8.24-dfsg.orig/tiny_mce/plugins/searchreplace/langs/el_dlg.js0000644000175000017500000000313212271477123025360 0ustar michaelmichaeltinyMCE.addI18n('el.searchreplace_dlg',{findwhat:"\u0395\u03cd\u03c1\u03b5\u03c3\u03b7 \u03c4\u03bf\u03c5",replacewith:"\u0391\u03bd\u03c4\u03b9\u03ba\u03b1\u03c4\u03ac\u03c3\u03c4\u03b1\u03c3\u03b7 \u03bc\u03b5",direction:"\u039a\u03b1\u03c4\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7",up:"\u03a0\u03ac\u03bd\u03c9",down:"\u039a\u03ac\u03c4\u03c9",mcase:"\u03a4\u03b1\u03af\u03c1\u03b9\u03b1\u03c3\u03bc\u03b1 \u03ba\u03b5\u03c6\u03b1\u03bb\u03b1\u03af\u03b1/\u03bc\u03b9\u03ba\u03c1\u03ac",findnext:"\u0392\u03c1\u03b5\u03c2 \u03b5\u03c0\u03cc\u03bc\u03b5\u03bd\u03bf",allreplaced:"\u038c\u03bb\u03b5\u03c2 \u03bf\u03b9 \u03b5\u03bc\u03c6\u03b1\u03bd\u03af\u03c3\u03b5\u03b9\u03c2 \u03c4\u03bf\u03c5 \u03b6\u03b7\u03c4\u03bf\u03cd\u03bc\u03b5\u03bd\u03bf\u03c5 \u03ba\u03b5\u03b9\u03bc\u03ad\u03bd\u03bf\u03c5 \u03b1\u03bd\u03c4\u03b9\u03ba\u03b1\u03c4\u03b1\u03c3\u03c4\u03ac\u03b8\u03b7\u03ba\u03b1\u03bd.","searchnext_desc":"\u0395\u03cd\u03c1\u03b5\u03c3\u03b7 \u03be\u03b1\u03bd\u03ac",notfound:"\u0397 \u03b1\u03bd\u03b1\u03b6\u03ae\u03c4\u03b7\u03c3\u03b7 \u03c4\u03b5\u03bb\u03b5\u03af\u03c9\u03c3\u03b5. \u03a4\u03bf \u03b6\u03b7\u03c4\u03bf\u03cd\u03bc\u03b5\u03bd\u03bf \u03ba\u03b5\u03af\u03bc\u03b5\u03bd\u03bf \u03b4\u03b5\u03bd \u03b2\u03c1\u03ad\u03b8\u03b7\u03ba\u03b5.","search_title":"\u0395\u03cd\u03c1\u03b5\u03c3\u03b7","replace_title":"\u0395\u03cd\u03c1\u03b5\u03c3\u03b7/\u0391\u03bd\u03b1\u03b6\u03ae\u03c4\u03b7\u03c3\u03b7",replaceall:"\u0391\u03bd\u03c4\u03b9\u03ba\u03b1\u03c4. \u03cc\u03bb\u03c9\u03bd",replace:"\u0391\u03bd\u03c4\u03b9\u03ba\u03b1\u03c4\u03ac\u03c3\u03c4\u03b1\u03c3\u03b7"});webcit-8.24-dfsg.orig/tiny_mce/plugins/searchreplace/langs/hu_dlg.js0000644000175000017500000000113212271477123025372 0ustar michaelmichaeltinyMCE.addI18n('hu.searchreplace_dlg',{findwhat:"Mit keres",replacewith:"Mire cser\u00e9l",direction:"Ir\u00e1ny",up:"Fel",down:"Le",mcase:"Kis- \u00e9s nagybet\u0171k megk\u00fcl\u00f6nb\u00f6ztet\u00e9se",findnext:"K\u00f6vetkez\u0151",allreplaced:"A keresett r\u00e9szsz\u00f6veg minden el\u0151fordul\u00e1sa cser\u00e9lve lett.","searchnext_desc":"Keres\u00e9s megint",notfound:"A keres\u00e9s v\u00e9get \u00e9rt. A keresett sz\u00f6vegr\u00e9sz nem tal\u00e1lhat\u00f3.","search_title":"Keres\u00e9s","replace_title":"Keres\u00e9s/Csere",replaceall:"\u00d6sszes cser\u00e9je",replace:"Csere"});webcit-8.24-dfsg.orig/tiny_mce/plugins/searchreplace/langs/cs_dlg.js0000644000175000017500000000101412271477123025362 0ustar michaelmichaeltinyMCE.addI18n('cs.searchreplace_dlg',{findwhat:"Co hledat",replacewith:"\u010c\u00edm nahradit",direction:"Sm\u011br",up:"Nahoru",down:"Dol\u016f",mcase:"Rozli\u0161ovat velikost",findnext:"Naj\u00edt dal\u0161\u00ed",allreplaced:"V\u0161echny v\u00fdskyty byly nahrazeny.","searchnext_desc":"Naj\u00edt dal\u0161\u00ed",notfound:"Hled\u00e1n\u00ed bylo dokon\u010deno. Hledan\u00fd text nebyl nalezen.","search_title":"Naj\u00edt","replace_title":"Naj\u00edt/nahradit",replaceall:"Nahradit v\u0161e",replace:"Nahradit"});webcit-8.24-dfsg.orig/tiny_mce/plugins/searchreplace/langs/en_dlg.js0000644000175000017500000000067512271477123025373 0ustar michaelmichaeltinyMCE.addI18n('en.searchreplace_dlg',{findwhat:"Find What",replacewith:"Replace with",direction:"Direction",up:"Up",down:"Down",mcase:"Match Case",findnext:"Find Next",allreplaced:"All occurrences of the search string were replaced.","searchnext_desc":"Find Again",notfound:"The search has been completed. The search string could not be found.","search_title":"Find","replace_title":"Find/Replace",replaceall:"Replace All",replace:"Replace"});webcit-8.24-dfsg.orig/tiny_mce/plugins/searchreplace/langs/it_dlg.js0000644000175000017500000000073112271477123025376 0ustar michaelmichaeltinyMCE.addI18n('it.searchreplace_dlg',{findwhat:"Trova:",replacewith:"Sostituisci con:",direction:"Direzione",up:"Avanti",down:"Indietro",mcase:"Maiuscole/minuscole",findnext:"Trova succ.",allreplaced:"Tutte le occorrenze del criterio di ricerca sono state sostituite.","searchnext_desc":"Trova successivo",notfound:"Ricerca completata. Nessun risultato trovato.","search_title":"Trova","replace_title":"Trova/Sostituisci",replaceall:"Sost. tutto",replace:"Sostituisci"});webcit-8.24-dfsg.orig/tiny_mce/plugins/searchreplace/editor_plugin.js0000644000175000017500000000202612271477123025673 0ustar michaelmichael(function(){tinymce.create("tinymce.plugins.SearchReplacePlugin",{init:function(a,c){function b(d){window.focus();a.windowManager.open({file:c+"/searchreplace.htm",width:420+parseInt(a.getLang("searchreplace.delta_width",0)),height:170+parseInt(a.getLang("searchreplace.delta_height",0)),inline:1,auto_focus:0},{mode:d,search_string:a.selection.getContent({format:"text"}),plugin_url:c})}a.addCommand("mceSearch",function(){b("search")});a.addCommand("mceReplace",function(){b("replace")});a.addButton("search",{title:"searchreplace.search_desc",cmd:"mceSearch"});a.addButton("replace",{title:"searchreplace.replace_desc",cmd:"mceReplace"});a.addShortcut("ctrl+f","searchreplace.search_desc","mceSearch")},getInfo:function(){return{longname:"Search/Replace",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/searchreplace",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("searchreplace",tinymce.plugins.SearchReplacePlugin)})();webcit-8.24-dfsg.orig/tiny_mce/plugins/searchreplace/searchreplace.htm0000644000175000017500000001233012271477123026003 0ustar michaelmichael {#searchreplace_dlg.replace_title}
    webcit-8.24-dfsg.orig/tiny_mce/plugins/searchreplace/js/0000755000175000017500000000000012271477123023105 5ustar michaelmichaelwebcit-8.24-dfsg.orig/tiny_mce/plugins/searchreplace/js/searchreplace.js0000644000175000017500000000715012271477123026247 0ustar michaelmichaeltinyMCEPopup.requireLangPack(); var SearchReplaceDialog = { init : function(ed) { var t = this, f = document.forms[0], m = tinyMCEPopup.getWindowArg("mode"); t.switchMode(m); f[m + '_panel_searchstring'].value = tinyMCEPopup.getWindowArg("search_string"); // Focus input field f[m + '_panel_searchstring'].focus(); mcTabs.onChange.add(function(tab_id, panel_id) { t.switchMode(tab_id.substring(0, tab_id.indexOf('_'))); }); }, switchMode : function(m) { var f, lm = this.lastMode; if (lm != m) { f = document.forms[0]; if (lm) { f[m + '_panel_searchstring'].value = f[lm + '_panel_searchstring'].value; f[m + '_panel_backwardsu'].checked = f[lm + '_panel_backwardsu'].checked; f[m + '_panel_backwardsd'].checked = f[lm + '_panel_backwardsd'].checked; f[m + '_panel_casesensitivebox'].checked = f[lm + '_panel_casesensitivebox'].checked; } mcTabs.displayTab(m + '_tab', m + '_panel'); document.getElementById("replaceBtn").style.display = (m == "replace") ? "inline" : "none"; document.getElementById("replaceAllBtn").style.display = (m == "replace") ? "inline" : "none"; this.lastMode = m; } }, searchNext : function(a) { var ed = tinyMCEPopup.editor, se = ed.selection, r = se.getRng(), f, m = this.lastMode, s, b, fl = 0, w = ed.getWin(), wm = ed.windowManager, fo = 0; // Get input f = document.forms[0]; s = f[m + '_panel_searchstring'].value; b = f[m + '_panel_backwardsu'].checked; ca = f[m + '_panel_casesensitivebox'].checked; rs = f['replace_panel_replacestring'].value; if (tinymce.isIE) { r = ed.getDoc().selection.createRange(); } if (s == '') return; function fix() { // Correct Firefox graphics glitches // TODO: Verify if this is actually needed any more, maybe it was for very old FF versions? r = se.getRng().cloneRange(); ed.getDoc().execCommand('SelectAll', false, null); se.setRng(r); }; function replace() { ed.selection.setContent(rs); // Needs to be duplicated due to selection bug in IE }; // IE flags if (ca) fl = fl | 4; switch (a) { case 'all': // Move caret to beginning of text ed.execCommand('SelectAll'); ed.selection.collapse(true); if (tinymce.isIE) { ed.focus(); r = ed.getDoc().selection.createRange(); while (r.findText(s, b ? -1 : 1, fl)) { r.scrollIntoView(); r.select(); replace(); fo = 1; if (b) { r.moveEnd("character", -(rs.length)); // Otherwise will loop forever } } tinyMCEPopup.storeSelection(); } else { while (w.find(s, ca, b, false, false, false, false)) { replace(); fo = 1; } } if (fo) tinyMCEPopup.alert(ed.getLang('searchreplace_dlg.allreplaced')); else tinyMCEPopup.alert(ed.getLang('searchreplace_dlg.notfound')); return; case 'current': if (!ed.selection.isCollapsed()) replace(); break; } se.collapse(b); r = se.getRng(); // Whats the point if (!s) return; if (tinymce.isIE) { ed.focus(); r = ed.getDoc().selection.createRange(); if (r.findText(s, b ? -1 : 1, fl)) { r.scrollIntoView(); r.select(); } else tinyMCEPopup.alert(ed.getLang('searchreplace_dlg.notfound')); tinyMCEPopup.storeSelection(); } else { if (!w.find(s, ca, b, false, false, false, false)) tinyMCEPopup.alert(ed.getLang('searchreplace_dlg.notfound')); else fix(); } } }; tinyMCEPopup.onInit.add(SearchReplaceDialog.init, SearchReplaceDialog); webcit-8.24-dfsg.orig/tiny_mce/plugins/searchreplace/css/0000755000175000017500000000000012271477123023261 5ustar michaelmichaelwebcit-8.24-dfsg.orig/tiny_mce/plugins/searchreplace/css/searchreplace.css0000644000175000017500000000026012271477123026572 0ustar michaelmichael.panel_wrapper {height:85px;} .panel_wrapper div.current {height:85px;} /* IE */ * html .panel_wrapper {height:100px;} * html .panel_wrapper div.current {height:100px;} webcit-8.24-dfsg.orig/tiny_mce/plugins/layer/0000755000175000017500000000000012271477123021004 5ustar michaelmichaelwebcit-8.24-dfsg.orig/tiny_mce/plugins/layer/editor_plugin_src.js0000644000175000017500000001236312271477123025062 0ustar michaelmichael/** * editor_plugin_src.js * * Copyright 2009, Moxiecode Systems AB * Released under LGPL License. * * License: http://tinymce.moxiecode.com/license * Contributing: http://tinymce.moxiecode.com/contributing */ (function() { tinymce.create('tinymce.plugins.Layer', { init : function(ed, url) { var t = this; t.editor = ed; // Register commands ed.addCommand('mceInsertLayer', t._insertLayer, t); ed.addCommand('mceMoveForward', function() { t._move(1); }); ed.addCommand('mceMoveBackward', function() { t._move(-1); }); ed.addCommand('mceMakeAbsolute', function() { t._toggleAbsolute(); }); // Register buttons ed.addButton('moveforward', {title : 'layer.forward_desc', cmd : 'mceMoveForward'}); ed.addButton('movebackward', {title : 'layer.backward_desc', cmd : 'mceMoveBackward'}); ed.addButton('absolute', {title : 'layer.absolute_desc', cmd : 'mceMakeAbsolute'}); ed.addButton('insertlayer', {title : 'layer.insertlayer_desc', cmd : 'mceInsertLayer'}); ed.onInit.add(function() { if (tinymce.isIE) ed.getDoc().execCommand('2D-Position', false, true); }); ed.onNodeChange.add(t._nodeChange, t); ed.onVisualAid.add(t._visualAid, t); }, getInfo : function() { return { longname : 'Layer', author : 'Moxiecode Systems AB', authorurl : 'http://tinymce.moxiecode.com', infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/layer', version : tinymce.majorVersion + "." + tinymce.minorVersion }; }, // Private methods _nodeChange : function(ed, cm, n) { var le, p; le = this._getParentLayer(n); p = ed.dom.getParent(n, 'DIV,P,IMG'); if (!p) { cm.setDisabled('absolute', 1); cm.setDisabled('moveforward', 1); cm.setDisabled('movebackward', 1); } else { cm.setDisabled('absolute', 0); cm.setDisabled('moveforward', !le); cm.setDisabled('movebackward', !le); cm.setActive('absolute', le && le.style.position.toLowerCase() == "absolute"); } }, // Private methods _visualAid : function(ed, e, s) { var dom = ed.dom; tinymce.each(dom.select('div,p', e), function(e) { if (/^(absolute|relative|static)$/i.test(e.style.position)) { if (s) dom.addClass(e, 'mceItemVisualAid'); else dom.removeClass(e, 'mceItemVisualAid'); } }); }, _move : function(d) { var ed = this.editor, i, z = [], le = this._getParentLayer(ed.selection.getNode()), ci = -1, fi = -1, nl; nl = []; tinymce.walk(ed.getBody(), function(n) { if (n.nodeType == 1 && /^(absolute|relative|static)$/i.test(n.style.position)) nl.push(n); }, 'childNodes'); // Find z-indexes for (i=0; i -1) { nl[ci].style.zIndex = z[fi]; nl[fi].style.zIndex = z[ci]; } else { if (z[ci] > 0) nl[ci].style.zIndex = z[ci] - 1; } } else { // Move forward // Try find a higher one for (i=0; i z[ci]) { fi = i; break; } } if (fi > -1) { nl[ci].style.zIndex = z[fi]; nl[fi].style.zIndex = z[ci]; } else nl[ci].style.zIndex = z[ci] + 1; } ed.execCommand('mceRepaint'); }, _getParentLayer : function(n) { return this.editor.dom.getParent(n, function(n) { return n.nodeType == 1 && /^(absolute|relative|static)$/i.test(n.style.position); }); }, _insertLayer : function() { var ed = this.editor, p = ed.dom.getPos(ed.dom.getParent(ed.selection.getNode(), '*')); ed.dom.add(ed.getBody(), 'div', { style : { position : 'absolute', left : p.x, top : (p.y > 20 ? p.y : 20), width : 100, height : 100 }, 'class' : 'mceItemVisualAid' }, ed.selection.getContent() || ed.getLang('layer.content')); }, _toggleAbsolute : function() { var ed = this.editor, le = this._getParentLayer(ed.selection.getNode()); if (!le) le = ed.dom.getParent(ed.selection.getNode(), 'DIV,P,IMG'); if (le) { if (le.style.position.toLowerCase() == "absolute") { ed.dom.setStyles(le, { position : '', left : '', top : '', width : '', height : '' }); ed.dom.removeClass(le, 'mceItemVisualAid'); } else { if (le.style.left == "") le.style.left = 20 + 'px'; if (le.style.top == "") le.style.top = 20 + 'px'; if (le.style.width == "") le.style.width = le.width ? (le.width + 'px') : '100px'; if (le.style.height == "") le.style.height = le.height ? (le.height + 'px') : '100px'; le.style.position = "absolute"; ed.dom.setAttrib(le, 'data-mce-style', ''); ed.addVisual(ed.getBody()); } ed.execCommand('mceRepaint'); ed.nodeChanged(); } } }); // Register plugin tinymce.PluginManager.add('layer', tinymce.plugins.Layer); })();webcit-8.24-dfsg.orig/tiny_mce/plugins/layer/editor_plugin.js0000644000175000017500000000661712271477123024220 0ustar michaelmichael(function(){tinymce.create("tinymce.plugins.Layer",{init:function(a,b){var c=this;c.editor=a;a.addCommand("mceInsertLayer",c._insertLayer,c);a.addCommand("mceMoveForward",function(){c._move(1)});a.addCommand("mceMoveBackward",function(){c._move(-1)});a.addCommand("mceMakeAbsolute",function(){c._toggleAbsolute()});a.addButton("moveforward",{title:"layer.forward_desc",cmd:"mceMoveForward"});a.addButton("movebackward",{title:"layer.backward_desc",cmd:"mceMoveBackward"});a.addButton("absolute",{title:"layer.absolute_desc",cmd:"mceMakeAbsolute"});a.addButton("insertlayer",{title:"layer.insertlayer_desc",cmd:"mceInsertLayer"});a.onInit.add(function(){if(tinymce.isIE){a.getDoc().execCommand("2D-Position",false,true)}});a.onNodeChange.add(c._nodeChange,c);a.onVisualAid.add(c._visualAid,c)},getInfo:function(){return{longname:"Layer",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/layer",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_nodeChange:function(b,a,e){var c,d;c=this._getParentLayer(e);d=b.dom.getParent(e,"DIV,P,IMG");if(!d){a.setDisabled("absolute",1);a.setDisabled("moveforward",1);a.setDisabled("movebackward",1)}else{a.setDisabled("absolute",0);a.setDisabled("moveforward",!c);a.setDisabled("movebackward",!c);a.setActive("absolute",c&&c.style.position.toLowerCase()=="absolute")}},_visualAid:function(a,c,b){var d=a.dom;tinymce.each(d.select("div,p",c),function(f){if(/^(absolute|relative|static)$/i.test(f.style.position)){if(b){d.addClass(f,"mceItemVisualAid")}else{d.removeClass(f,"mceItemVisualAid")}}})},_move:function(h){var b=this.editor,f,g=[],e=this._getParentLayer(b.selection.getNode()),c=-1,j=-1,a;a=[];tinymce.walk(b.getBody(),function(d){if(d.nodeType==1&&/^(absolute|relative|static)$/i.test(d.style.position)){a.push(d)}},"childNodes");for(f=0;f-1){a[c].style.zIndex=g[j];a[j].style.zIndex=g[c]}else{if(g[c]>0){a[c].style.zIndex=g[c]-1}}}else{for(f=0;fg[c]){j=f;break}}if(j>-1){a[c].style.zIndex=g[j];a[j].style.zIndex=g[c]}else{a[c].style.zIndex=g[c]+1}}b.execCommand("mceRepaint")},_getParentLayer:function(a){return this.editor.dom.getParent(a,function(b){return b.nodeType==1&&/^(absolute|relative|static)$/i.test(b.style.position)})},_insertLayer:function(){var a=this.editor,b=a.dom.getPos(a.dom.getParent(a.selection.getNode(),"*"));a.dom.add(a.getBody(),"div",{style:{position:"absolute",left:b.x,top:(b.y>20?b.y:20),width:100,height:100},"class":"mceItemVisualAid"},a.selection.getContent()||a.getLang("layer.content"))},_toggleAbsolute:function(){var a=this.editor,b=this._getParentLayer(a.selection.getNode());if(!b){b=a.dom.getParent(a.selection.getNode(),"DIV,P,IMG")}if(b){if(b.style.position.toLowerCase()=="absolute"){a.dom.setStyles(b,{position:"",left:"",top:"",width:"",height:""});a.dom.removeClass(b,"mceItemVisualAid")}else{if(b.style.left==""){b.style.left=20+"px"}if(b.style.top==""){b.style.top=20+"px"}if(b.style.width==""){b.style.width=b.width?(b.width+"px"):"100px"}if(b.style.height==""){b.style.height=b.height?(b.height+"px"):"100px"}b.style.position="absolute";a.dom.setAttrib(b,"data-mce-style","");a.addVisual(a.getBody())}a.execCommand("mceRepaint");a.nodeChanged()}}});tinymce.PluginManager.add("layer",tinymce.plugins.Layer)})();webcit-8.24-dfsg.orig/tiny_mce/plugins/iespell/0000755000175000017500000000000012271477123021325 5ustar michaelmichaelwebcit-8.24-dfsg.orig/tiny_mce/plugins/iespell/editor_plugin_src.js0000644000175000017500000000271412271477123025402 0ustar michaelmichael/** * editor_plugin_src.js * * Copyright 2009, Moxiecode Systems AB * Released under LGPL License. * * License: http://tinymce.moxiecode.com/license * Contributing: http://tinymce.moxiecode.com/contributing */ (function() { tinymce.create('tinymce.plugins.IESpell', { init : function(ed, url) { var t = this, sp; if (!tinymce.isIE) return; t.editor = ed; // Register commands ed.addCommand('mceIESpell', function() { try { sp = new ActiveXObject("ieSpell.ieSpellExtension"); sp.CheckDocumentNode(ed.getDoc().documentElement); } catch (e) { if (e.number == -2146827859) { ed.windowManager.confirm(ed.getLang("iespell.download"), function(s) { if (s) window.open('http://www.iespell.com/download.php', 'ieSpellDownload', ''); }); } else ed.windowManager.alert("Error Loading ieSpell: Exception " + e.number); } }); // Register buttons ed.addButton('iespell', {title : 'iespell.iespell_desc', cmd : 'mceIESpell'}); }, getInfo : function() { return { longname : 'IESpell (IE Only)', author : 'Moxiecode Systems AB', authorurl : 'http://tinymce.moxiecode.com', infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/iespell', version : tinymce.majorVersion + "." + tinymce.minorVersion }; } }); // Register plugin tinymce.PluginManager.add('iespell', tinymce.plugins.IESpell); })();webcit-8.24-dfsg.orig/tiny_mce/plugins/iespell/editor_plugin.js0000644000175000017500000000161512271477123024532 0ustar michaelmichael(function(){tinymce.create("tinymce.plugins.IESpell",{init:function(a,b){var c=this,d;if(!tinymce.isIE){return}c.editor=a;a.addCommand("mceIESpell",function(){try{d=new ActiveXObject("ieSpell.ieSpellExtension");d.CheckDocumentNode(a.getDoc().documentElement)}catch(f){if(f.number==-2146827859){a.windowManager.confirm(a.getLang("iespell.download"),function(e){if(e){window.open("http://www.iespell.com/download.php","ieSpellDownload","")}})}else{a.windowManager.alert("Error Loading ieSpell: Exception "+f.number)}}});a.addButton("iespell",{title:"iespell.iespell_desc",cmd:"mceIESpell"})},getInfo:function(){return{longname:"IESpell (IE Only)",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/iespell",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("iespell",tinymce.plugins.IESpell)})();webcit-8.24-dfsg.orig/tiny_mce/plugins/example/0000755000175000017500000000000012271477123021323 5ustar michaelmichaelwebcit-8.24-dfsg.orig/tiny_mce/plugins/example/editor_plugin_src.js0000644000175000017500000000565512271477123025407 0ustar michaelmichael/** * editor_plugin_src.js * * Copyright 2009, Moxiecode Systems AB * Released under LGPL License. * * License: http://tinymce.moxiecode.com/license * Contributing: http://tinymce.moxiecode.com/contributing */ (function() { // Load plugin specific language pack tinymce.PluginManager.requireLangPack('example'); tinymce.create('tinymce.plugins.ExamplePlugin', { /** * Initializes the plugin, this will be executed after the plugin has been created. * This call is done before the editor instance has finished it's initialization so use the onInit event * of the editor instance to intercept that event. * * @param {tinymce.Editor} ed Editor instance that the plugin is initialized in. * @param {string} url Absolute URL to where the plugin is located. */ init : function(ed, url) { // Register the command so that it can be invoked by using tinyMCE.activeEditor.execCommand('mceExample'); ed.addCommand('mceExample', function() { ed.windowManager.open({ file : url + '/dialog.htm', width : 320 + parseInt(ed.getLang('example.delta_width', 0)), height : 120 + parseInt(ed.getLang('example.delta_height', 0)), inline : 1 }, { plugin_url : url, // Plugin absolute URL some_custom_arg : 'custom arg' // Custom argument }); }); // Register example button ed.addButton('example', { title : 'example.desc', cmd : 'mceExample', image : url + '/img/example.gif' }); // Add a node change handler, selects the button in the UI when a image is selected ed.onNodeChange.add(function(ed, cm, n) { cm.setActive('example', n.nodeName == 'IMG'); }); }, /** * Creates control instances based in the incomming name. This method is normally not * needed since the addButton method of the tinymce.Editor class is a more easy way of adding buttons * but you sometimes need to create more complex controls like listboxes, split buttons etc then this * method can be used to create those. * * @param {String} n Name of the control to create. * @param {tinymce.ControlManager} cm Control manager to use inorder to create new control. * @return {tinymce.ui.Control} New control instance or null if no control was created. */ createControl : function(n, cm) { return null; }, /** * Returns information about the plugin as a name/value array. * The current keys are longname, author, authorurl, infourl and version. * * @return {Object} Name/value array containing information about the plugin. */ getInfo : function() { return { longname : 'Example plugin', author : 'Some author', authorurl : 'http://tinymce.moxiecode.com', infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/example', version : "1.0" }; } }); // Register plugin tinymce.PluginManager.add('example', tinymce.plugins.ExamplePlugin); })();webcit-8.24-dfsg.orig/tiny_mce/plugins/example/img/0000755000175000017500000000000012271477123022077 5ustar michaelmichaelwebcit-8.24-dfsg.orig/tiny_mce/plugins/example/img/example.gif0000644000175000017500000000012712271477123024221 0ustar michaelmichaelGIF89a!,. Ok̺}qQ(̞5(`Db;webcit-8.24-dfsg.orig/tiny_mce/plugins/example/langs/0000755000175000017500000000000012271477123022427 5ustar michaelmichaelwebcit-8.24-dfsg.orig/tiny_mce/plugins/example/langs/en.js0000644000175000017500000000011712271477123023366 0ustar michaelmichaeltinyMCE.addI18n('en.example',{ desc : 'This is just a template button' }); webcit-8.24-dfsg.orig/tiny_mce/plugins/example/langs/en_dlg.js0000644000175000017500000000012212271477123024210 0ustar michaelmichaeltinyMCE.addI18n('en.example_dlg',{ title : 'This is just a example title' }); webcit-8.24-dfsg.orig/tiny_mce/plugins/example/editor_plugin.js0000644000175000017500000000153412271477123024530 0ustar michaelmichael(function(){tinymce.PluginManager.requireLangPack("example");tinymce.create("tinymce.plugins.ExamplePlugin",{init:function(a,b){a.addCommand("mceExample",function(){a.windowManager.open({file:b+"/dialog.htm",width:320+parseInt(a.getLang("example.delta_width",0)),height:120+parseInt(a.getLang("example.delta_height",0)),inline:1},{plugin_url:b,some_custom_arg:"custom arg"})});a.addButton("example",{title:"example.desc",cmd:"mceExample",image:b+"/img/example.gif"});a.onNodeChange.add(function(d,c,e){c.setActive("example",e.nodeName=="IMG")})},createControl:function(b,a){return null},getInfo:function(){return{longname:"Example plugin",author:"Some author",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/example",version:"1.0"}}});tinymce.PluginManager.add("example",tinymce.plugins.ExamplePlugin)})();webcit-8.24-dfsg.orig/tiny_mce/plugins/example/dialog.htm0000644000175000017500000000161412271477123023276 0ustar michaelmichael {#example_dlg.title}

    Here is a example dialog.

    Selected text:

    Custom arg:

    webcit-8.24-dfsg.orig/tiny_mce/plugins/example/js/0000755000175000017500000000000012271477123021737 5ustar michaelmichaelwebcit-8.24-dfsg.orig/tiny_mce/plugins/example/js/dialog.js0000644000175000017500000000114112271477123023531 0ustar michaelmichaeltinyMCEPopup.requireLangPack(); var ExampleDialog = { init : function() { var f = document.forms[0]; // Get the selected contents as text and place it in the input f.someval.value = tinyMCEPopup.editor.selection.getContent({format : 'text'}); f.somearg.value = tinyMCEPopup.getWindowArg('some_custom_arg'); }, insert : function() { // Insert the contents from the input into the document tinyMCEPopup.editor.execCommand('mceInsertContent', false, document.forms[0].someval.value); tinyMCEPopup.close(); } }; tinyMCEPopup.onInit.add(ExampleDialog.init, ExampleDialog); webcit-8.24-dfsg.orig/tiny_mce/plugins/advhr/0000755000175000017500000000000012271477123020774 5ustar michaelmichaelwebcit-8.24-dfsg.orig/tiny_mce/plugins/advhr/editor_plugin_src.js0000644000175000017500000000264212271477123025051 0ustar michaelmichael/** * editor_plugin_src.js * * Copyright 2009, Moxiecode Systems AB * Released under LGPL License. * * License: http://tinymce.moxiecode.com/license * Contributing: http://tinymce.moxiecode.com/contributing */ (function() { tinymce.create('tinymce.plugins.AdvancedHRPlugin', { init : function(ed, url) { // Register commands ed.addCommand('mceAdvancedHr', function() { ed.windowManager.open({ file : url + '/rule.htm', width : 250 + parseInt(ed.getLang('advhr.delta_width', 0)), height : 160 + parseInt(ed.getLang('advhr.delta_height', 0)), inline : 1 }, { plugin_url : url }); }); // Register buttons ed.addButton('advhr', { title : 'advhr.advhr_desc', cmd : 'mceAdvancedHr' }); ed.onNodeChange.add(function(ed, cm, n) { cm.setActive('advhr', n.nodeName == 'HR'); }); ed.onClick.add(function(ed, e) { e = e.target; if (e.nodeName === 'HR') ed.selection.select(e); }); }, getInfo : function() { return { longname : 'Advanced HR', author : 'Moxiecode Systems AB', authorurl : 'http://tinymce.moxiecode.com', infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advhr', version : tinymce.majorVersion + "." + tinymce.minorVersion }; } }); // Register plugin tinymce.PluginManager.add('advhr', tinymce.plugins.AdvancedHRPlugin); })();webcit-8.24-dfsg.orig/tiny_mce/plugins/advhr/langs/0000755000175000017500000000000012271477123022100 5ustar michaelmichaelwebcit-8.24-dfsg.orig/tiny_mce/plugins/advhr/langs/bg_dlg.js0000644000175000017500000000034612271477123023657 0ustar michaelmichaeltinyMCE.addI18n('bg.advhr_dlg',{size:"\u0412\u0438\u0441\u043e\u0447\u0438\u043d\u0430",noshade:"\u0411\u0435\u0437 \u0441\u044f\u043d\u043a\u0430",width:"\u0428\u0438\u0440\u0438\u043d\u0430",normal:"Normal",widthunits:"Units"});webcit-8.24-dfsg.orig/tiny_mce/plugins/advhr/langs/fr_dlg.js0000644000175000017500000000017312271477123023674 0ustar michaelmichaeltinyMCE.addI18n('fr.advhr_dlg',{size:"Hauteur",noshade:"Pas d\'ombre",width:"Largeur",normal:"Normal",widthunits:"Units"});webcit-8.24-dfsg.orig/tiny_mce/plugins/advhr/langs/zh-cn_dlg.js0000644000175000017500000000021612271477123024302 0ustar michaelmichaeltinyMCE.addI18n('zh-cn.advhr_dlg',{size:"\u9ad8\u5ea6",noshade:"\u65e0\u9634\u5f71",width:"\u5bbd\u5ea6",normal:"Normal",widthunits:"Units"});webcit-8.24-dfsg.orig/tiny_mce/plugins/advhr/langs/de_dlg.js0000644000175000017500000000020112271477123023645 0ustar michaelmichaeltinyMCE.addI18n('de.advhr_dlg',{size:"H\u00f6he",noshade:"Kein Schatten",width:"Breite",normal:"Normal",widthunits:"Einheiten"});webcit-8.24-dfsg.orig/tiny_mce/plugins/advhr/langs/fi_dlg.js0000644000175000017500000000020012271477123023652 0ustar michaelmichaeltinyMCE.addI18n('fi.advhr_dlg',{size:"Korkeus",noshade:"Ei varjoa",width:"Leveys",normal:"Normaali",widthunits:"Yksik\u00f6t"});webcit-8.24-dfsg.orig/tiny_mce/plugins/advhr/langs/et_dlg.js0000644000175000017500000000017512271477123023677 0ustar michaelmichaeltinyMCE.addI18n('et.advhr_dlg',{size:"K\u00f5rgus",noshade:"Ilma varjuta",width:"Laius",normal:"Normal",widthunits:"Units"});webcit-8.24-dfsg.orig/tiny_mce/plugins/advhr/langs/es_dlg.js0000644000175000017500000000016412271477123023674 0ustar michaelmichaeltinyMCE.addI18n('es.advhr_dlg',{size:"Alto",noshade:"Sin sombra",width:"Ancho",normal:"Normal",widthunits:"Units"});webcit-8.24-dfsg.orig/tiny_mce/plugins/advhr/langs/da_dlg.js0000644000175000017500000000017512271477123023653 0ustar michaelmichaeltinyMCE.addI18n('da.advhr_dlg',{size:"H\u00f8jde",noshade:"Ingen skygge",width:"Bredde",normal:"Normal",widthunits:"Units"});webcit-8.24-dfsg.orig/tiny_mce/plugins/advhr/langs/el_dlg.js0000644000175000017500000000032412271477123023663 0ustar michaelmichaeltinyMCE.addI18n('el.advhr_dlg',{size:"\u038e\u03c8\u03bf\u03c2",noshade:"\u03a7\u03c9\u03c1\u03af\u03c2 \u03c3\u03ba\u03b9\u03ac",width:"\u03a0\u03bb\u03ac\u03c4\u03bf\u03c2",normal:"Normal",widthunits:"Units"});webcit-8.24-dfsg.orig/tiny_mce/plugins/advhr/langs/hu_dlg.js0000644000175000017500000000024212271477123023676 0ustar michaelmichaeltinyMCE.addI18n('hu.advhr_dlg',{size:"Magass\u00e1g",noshade:"\u00c1rny\u00e9k n\u00e9lk\u00fcl",width:"Sz\u00e9less\u00e9g",normal:"Normal",widthunits:"Units"});webcit-8.24-dfsg.orig/tiny_mce/plugins/advhr/langs/cs_dlg.js0000644000175000017500000000022212271477123023665 0ustar michaelmichaeltinyMCE.addI18n('cs.advhr_dlg',{size:"V\u00fd\u0161ka",noshade:"Bez st\u00ednu",width:"\u0160\u00ed\u0159ka",normal:"Normal",widthunits:"Units"});webcit-8.24-dfsg.orig/tiny_mce/plugins/advhr/langs/en_dlg.js0000644000175000017500000000016512271477123023670 0ustar michaelmichaeltinyMCE.addI18n('en.advhr_dlg',{size:"Height",noshade:"No Shadow",width:"Width",normal:"Normal",widthunits:"Units"});webcit-8.24-dfsg.orig/tiny_mce/plugins/advhr/langs/it_dlg.js0000644000175000017500000000020412271477123023674 0ustar michaelmichaeltinyMCE.addI18n('it.advhr_dlg',{size:"Altezza",noshade:"Senza ombreggiatura",width:"Larghezza",normal:"Normal",widthunits:"Units"});webcit-8.24-dfsg.orig/tiny_mce/plugins/advhr/editor_plugin.js0000644000175000017500000000151712271477123024202 0ustar michaelmichael(function(){tinymce.create("tinymce.plugins.AdvancedHRPlugin",{init:function(a,b){a.addCommand("mceAdvancedHr",function(){a.windowManager.open({file:b+"/rule.htm",width:250+parseInt(a.getLang("advhr.delta_width",0)),height:160+parseInt(a.getLang("advhr.delta_height",0)),inline:1},{plugin_url:b})});a.addButton("advhr",{title:"advhr.advhr_desc",cmd:"mceAdvancedHr"});a.onNodeChange.add(function(d,c,e){c.setActive("advhr",e.nodeName=="HR")});a.onClick.add(function(c,d){d=d.target;if(d.nodeName==="HR"){c.selection.select(d)}})},getInfo:function(){return{longname:"Advanced HR",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advhr",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("advhr",tinymce.plugins.AdvancedHRPlugin)})();webcit-8.24-dfsg.orig/tiny_mce/plugins/advhr/js/0000755000175000017500000000000012271477123021410 5ustar michaelmichaelwebcit-8.24-dfsg.orig/tiny_mce/plugins/advhr/js/rule.js0000644000175000017500000000245212271477123022720 0ustar michaelmichaelvar AdvHRDialog = { init : function(ed) { var dom = ed.dom, f = document.forms[0], n = ed.selection.getNode(), w; w = dom.getAttrib(n, 'width'); f.width.value = w ? parseInt(w) : (dom.getStyle('width') || ''); f.size.value = dom.getAttrib(n, 'size') || parseInt(dom.getStyle('height')) || ''; f.noshade.checked = !!dom.getAttrib(n, 'noshade') || !!dom.getStyle('border-width'); selectByValue(f, 'width2', w.indexOf('%') != -1 ? '%' : 'px'); }, update : function() { var ed = tinyMCEPopup.editor, h, f = document.forms[0], st = ''; h = ' {#advhr.advhr_desc}
    webcit-8.24-dfsg.orig/tiny_mce/plugins/spellchecker/0000755000175000017500000000000012271477123022334 5ustar michaelmichaelwebcit-8.24-dfsg.orig/tiny_mce/plugins/spellchecker/editor_plugin_src.js0000644000175000017500000002727512271477123026422 0ustar michaelmichael/** * editor_plugin_src.js * * Copyright 2009, Moxiecode Systems AB * Released under LGPL License. * * License: http://tinymce.moxiecode.com/license * Contributing: http://tinymce.moxiecode.com/contributing */ (function() { var JSONRequest = tinymce.util.JSONRequest, each = tinymce.each, DOM = tinymce.DOM; tinymce.create('tinymce.plugins.SpellcheckerPlugin', { getInfo : function() { return { longname : 'Spellchecker', author : 'Moxiecode Systems AB', authorurl : 'http://tinymce.moxiecode.com', infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/spellchecker', version : tinymce.majorVersion + "." + tinymce.minorVersion }; }, init : function(ed, url) { var t = this, cm; t.url = url; t.editor = ed; t.rpcUrl = ed.getParam("spellchecker_rpc_url", "{backend}"); if (t.rpcUrl == '{backend}') { // Sniff if the browser supports native spellchecking (Don't know of a better way) if (tinymce.isIE) return; t.hasSupport = true; // Disable the context menu when spellchecking is active ed.onContextMenu.addToTop(function(ed, e) { if (t.active) return false; }); } // Register commands ed.addCommand('mceSpellCheck', function() { if (t.rpcUrl == '{backend}') { // Enable/disable native spellchecker t.editor.getBody().spellcheck = t.active = !t.active; return; } if (!t.active) { ed.setProgressState(1); t._sendRPC('checkWords', [t.selectedLang, t._getWords()], function(r) { if (r.length > 0) { t.active = 1; t._markWords(r); ed.setProgressState(0); ed.nodeChanged(); } else { ed.setProgressState(0); if (ed.getParam('spellchecker_report_no_misspellings', true)) ed.windowManager.alert('spellchecker.no_mpell'); } }); } else t._done(); }); if (ed.settings.content_css !== false) ed.contentCSS.push(url + '/css/content.css'); ed.onClick.add(t._showMenu, t); ed.onContextMenu.add(t._showMenu, t); ed.onBeforeGetContent.add(function() { if (t.active) t._removeWords(); }); ed.onNodeChange.add(function(ed, cm) { cm.setActive('spellchecker', t.active); }); ed.onSetContent.add(function() { t._done(); }); ed.onBeforeGetContent.add(function() { t._done(); }); ed.onBeforeExecCommand.add(function(ed, cmd) { if (cmd == 'mceFullScreen') t._done(); }); // Find selected language t.languages = {}; each(ed.getParam('spellchecker_languages', '+English=en,Danish=da,Dutch=nl,Finnish=fi,French=fr,German=de,Italian=it,Polish=pl,Portuguese=pt,Spanish=es,Swedish=sv', 'hash'), function(v, k) { if (k.indexOf('+') === 0) { k = k.substring(1); t.selectedLang = v; } t.languages[k] = v; }); }, createControl : function(n, cm) { var t = this, c, ed = t.editor; if (n == 'spellchecker') { // Use basic button if we use the native spellchecker if (t.rpcUrl == '{backend}') { // Create simple toggle button if we have native support if (t.hasSupport) c = cm.createButton(n, {title : 'spellchecker.desc', cmd : 'mceSpellCheck', scope : t}); return c; } c = cm.createSplitButton(n, {title : 'spellchecker.desc', cmd : 'mceSpellCheck', scope : t}); c.onRenderMenu.add(function(c, m) { m.add({title : 'spellchecker.langs', 'class' : 'mceMenuItemTitle'}).setDisabled(1); each(t.languages, function(v, k) { var o = {icon : 1}, mi; o.onclick = function() { if (v == t.selectedLang) { return; } mi.setSelected(1); t.selectedItem.setSelected(0); t.selectedItem = mi; t.selectedLang = v; }; o.title = k; mi = m.add(o); mi.setSelected(v == t.selectedLang); if (v == t.selectedLang) t.selectedItem = mi; }) }); return c; } }, // Internal functions _walk : function(n, f) { var d = this.editor.getDoc(), w; if (d.createTreeWalker) { w = d.createTreeWalker(n, NodeFilter.SHOW_TEXT, null, false); while ((n = w.nextNode()) != null) f.call(this, n); } else tinymce.walk(n, f, 'childNodes'); }, _getSeparators : function() { var re = '', i, str = this.editor.getParam('spellchecker_word_separator_chars', '\\s!"#$%&()*+,-./:;<=>?@[\]^_{|}\u201d\u201c'); // Build word separator regexp for (i=0; i elements content is broken after spellchecking. // Bug #1408: Preceding whitespace characters are removed // @TODO: I'm not sure that both are still issues on IE9. if (tinymce.isIE) { // Enclose mispelled words with temporal tag v = v.replace(rx, '$1$2'); // Loop over the content finding mispelled words while ((pos = v.indexOf('')) != -1) { // Add text node for the content before the word txt = v.substring(0, pos); if (txt.length) { node = doc.createTextNode(dom.decode(txt)); elem.appendChild(node); } v = v.substring(pos+10); pos = v.indexOf(''); txt = v.substring(0, pos); v = v.substring(pos+11); // Add span element for the word elem.appendChild(dom.create('span', {'class' : 'mceItemHiddenSpellWord'}, txt)); } // Add text node for the rest of the content if (v.length) { node = doc.createTextNode(dom.decode(v)); elem.appendChild(node); } } else { // Other browsers preserve whitespace characters on innerHTML usage elem.innerHTML = v.replace(rx, '$1$2'); } // Finally, replace the node with the container dom.replace(elem, n); } }); se.moveToBookmark(b); }, _showMenu : function(ed, e) { var t = this, ed = t.editor, m = t._menu, p1, dom = ed.dom, vp = dom.getViewPort(ed.getWin()), wordSpan = e.target; e = 0; // Fixes IE memory leak if (!m) { m = ed.controlManager.createDropMenu('spellcheckermenu', {'class' : 'mceNoIcons'}); t._menu = m; } if (dom.hasClass(wordSpan, 'mceItemHiddenSpellWord')) { m.removeAll(); m.add({title : 'spellchecker.wait', 'class' : 'mceMenuItemTitle'}).setDisabled(1); t._sendRPC('getSuggestions', [t.selectedLang, dom.decode(wordSpan.innerHTML)], function(r) { var ignoreRpc; m.removeAll(); if (r.length > 0) { m.add({title : 'spellchecker.sug', 'class' : 'mceMenuItemTitle'}).setDisabled(1); each(r, function(v) { m.add({title : v, onclick : function() { dom.replace(ed.getDoc().createTextNode(v), wordSpan); t._checkDone(); }}); }); m.addSeparator(); } else m.add({title : 'spellchecker.no_sug', 'class' : 'mceMenuItemTitle'}).setDisabled(1); ignoreRpc = t.editor.getParam("spellchecker_enable_ignore_rpc", ''); m.add({ title : 'spellchecker.ignore_word', onclick : function() { var word = wordSpan.innerHTML; dom.remove(wordSpan, 1); t._checkDone(); // tell the server if we need to if (ignoreRpc) { ed.setProgressState(1); t._sendRPC('ignoreWord', [t.selectedLang, word], function(r) { ed.setProgressState(0); }); } } }); m.add({ title : 'spellchecker.ignore_words', onclick : function() { var word = wordSpan.innerHTML; t._removeWords(dom.decode(word)); t._checkDone(); // tell the server if we need to if (ignoreRpc) { ed.setProgressState(1); t._sendRPC('ignoreWords', [t.selectedLang, word], function(r) { ed.setProgressState(0); }); } } }); if (t.editor.getParam("spellchecker_enable_learn_rpc")) { m.add({ title : 'spellchecker.learn_word', onclick : function() { var word = wordSpan.innerHTML; dom.remove(wordSpan, 1); t._checkDone(); ed.setProgressState(1); t._sendRPC('learnWord', [t.selectedLang, word], function(r) { ed.setProgressState(0); }); } }); } m.update(); }); p1 = DOM.getPos(ed.getContentAreaContainer()); m.settings.offset_x = p1.x; m.settings.offset_y = p1.y; ed.selection.select(wordSpan); p1 = dom.getPos(wordSpan); m.showMenu(p1.x, p1.y + wordSpan.offsetHeight - vp.y); return tinymce.dom.Event.cancel(e); } else m.hideMenu(); }, _checkDone : function() { var t = this, ed = t.editor, dom = ed.dom, o; each(dom.select('span'), function(n) { if (n && dom.hasClass(n, 'mceItemHiddenSpellWord')) { o = true; return false; } }); if (!o) t._done(); }, _done : function() { var t = this, la = t.active; if (t.active) { t.active = 0; t._removeWords(); if (t._menu) t._menu.hideMenu(); if (la) t.editor.nodeChanged(); } }, _sendRPC : function(m, p, cb) { var t = this; JSONRequest.sendRPC({ url : t.rpcUrl, method : m, params : p, success : cb, error : function(e, x) { t.editor.setProgressState(0); t.editor.windowManager.alert(e.errstr || ('Error response: ' + x.responseText)); } }); } }); // Register plugin tinymce.PluginManager.add('spellchecker', tinymce.plugins.SpellcheckerPlugin); })(); webcit-8.24-dfsg.orig/tiny_mce/plugins/spellchecker/img/0000755000175000017500000000000012271477123023110 5ustar michaelmichaelwebcit-8.24-dfsg.orig/tiny_mce/plugins/spellchecker/img/wline.gif0000644000175000017500000000005612271477123024716 0ustar michaelmichaelGIF89a**!,Df;webcit-8.24-dfsg.orig/tiny_mce/plugins/spellchecker/editor_plugin.js0000644000175000017500000001530512271477123025542 0ustar michaelmichael(function(){var a=tinymce.util.JSONRequest,c=tinymce.each,b=tinymce.DOM;tinymce.create("tinymce.plugins.SpellcheckerPlugin",{getInfo:function(){return{longname:"Spellchecker",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/spellchecker",version:tinymce.majorVersion+"."+tinymce.minorVersion}},init:function(e,f){var g=this,d;g.url=f;g.editor=e;g.rpcUrl=e.getParam("spellchecker_rpc_url","{backend}");if(g.rpcUrl=="{backend}"){if(tinymce.isIE){return}g.hasSupport=true;e.onContextMenu.addToTop(function(h,i){if(g.active){return false}})}e.addCommand("mceSpellCheck",function(){if(g.rpcUrl=="{backend}"){g.editor.getBody().spellcheck=g.active=!g.active;return}if(!g.active){e.setProgressState(1);g._sendRPC("checkWords",[g.selectedLang,g._getWords()],function(h){if(h.length>0){g.active=1;g._markWords(h);e.setProgressState(0);e.nodeChanged()}else{e.setProgressState(0);if(e.getParam("spellchecker_report_no_misspellings",true)){e.windowManager.alert("spellchecker.no_mpell")}}})}else{g._done()}});if(e.settings.content_css!==false){e.contentCSS.push(f+"/css/content.css")}e.onClick.add(g._showMenu,g);e.onContextMenu.add(g._showMenu,g);e.onBeforeGetContent.add(function(){if(g.active){g._removeWords()}});e.onNodeChange.add(function(i,h){h.setActive("spellchecker",g.active)});e.onSetContent.add(function(){g._done()});e.onBeforeGetContent.add(function(){g._done()});e.onBeforeExecCommand.add(function(h,i){if(i=="mceFullScreen"){g._done()}});g.languages={};c(e.getParam("spellchecker_languages","+English=en,Danish=da,Dutch=nl,Finnish=fi,French=fr,German=de,Italian=it,Polish=pl,Portuguese=pt,Spanish=es,Swedish=sv","hash"),function(i,h){if(h.indexOf("+")===0){h=h.substring(1);g.selectedLang=i}g.languages[h]=i})},createControl:function(h,d){var f=this,g,e=f.editor;if(h=="spellchecker"){if(f.rpcUrl=="{backend}"){if(f.hasSupport){g=d.createButton(h,{title:"spellchecker.desc",cmd:"mceSpellCheck",scope:f})}return g}g=d.createSplitButton(h,{title:"spellchecker.desc",cmd:"mceSpellCheck",scope:f});g.onRenderMenu.add(function(j,i){i.add({title:"spellchecker.langs","class":"mceMenuItemTitle"}).setDisabled(1);c(f.languages,function(n,m){var p={icon:1},l;p.onclick=function(){if(n==f.selectedLang){return}l.setSelected(1);f.selectedItem.setSelected(0);f.selectedItem=l;f.selectedLang=n};p.title=m;l=i.add(p);l.setSelected(n==f.selectedLang);if(n==f.selectedLang){f.selectedItem=l}})});return g}},_walk:function(i,g){var h=this.editor.getDoc(),e;if(h.createTreeWalker){e=h.createTreeWalker(i,NodeFilter.SHOW_TEXT,null,false);while((i=e.nextNode())!=null){g.call(this,i)}}else{tinymce.walk(i,g,"childNodes")}},_getSeparators:function(){var e="",d,f=this.editor.getParam("spellchecker_word_separator_chars",'\\s!"#$%&()*+,-./:;<=>?@[]^_{|}\u201d\u201c');for(d=0;d$2");while((s=p.indexOf(""))!=-1){o=p.substring(0,s);if(o.length){r=j.createTextNode(f.decode(o));q.appendChild(r)}p=p.substring(s+10);s=p.indexOf("");o=p.substring(0,s);p=p.substring(s+11);q.appendChild(f.create("span",{"class":"mceItemHiddenSpellWord"},o))}if(p.length){r=j.createTextNode(f.decode(p));q.appendChild(r)}}else{q.innerHTML=p.replace(e,'$1$2')}f.replace(q,t)}});h.moveToBookmark(i)},_showMenu:function(h,j){var i=this,h=i.editor,d=i._menu,l,k=h.dom,g=k.getViewPort(h.getWin()),f=j.target;j=0;if(!d){d=h.controlManager.createDropMenu("spellcheckermenu",{"class":"mceNoIcons"});i._menu=d}if(k.hasClass(f,"mceItemHiddenSpellWord")){d.removeAll();d.add({title:"spellchecker.wait","class":"mceMenuItemTitle"}).setDisabled(1);i._sendRPC("getSuggestions",[i.selectedLang,k.decode(f.innerHTML)],function(m){var e;d.removeAll();if(m.length>0){d.add({title:"spellchecker.sug","class":"mceMenuItemTitle"}).setDisabled(1);c(m,function(n){d.add({title:n,onclick:function(){k.replace(h.getDoc().createTextNode(n),f);i._checkDone()}})});d.addSeparator()}else{d.add({title:"spellchecker.no_sug","class":"mceMenuItemTitle"}).setDisabled(1)}e=i.editor.getParam("spellchecker_enable_ignore_rpc","");d.add({title:"spellchecker.ignore_word",onclick:function(){var n=f.innerHTML;k.remove(f,1);i._checkDone();if(e){h.setProgressState(1);i._sendRPC("ignoreWord",[i.selectedLang,n],function(o){h.setProgressState(0)})}}});d.add({title:"spellchecker.ignore_words",onclick:function(){var n=f.innerHTML;i._removeWords(k.decode(n));i._checkDone();if(e){h.setProgressState(1);i._sendRPC("ignoreWords",[i.selectedLang,n],function(o){h.setProgressState(0)})}}});if(i.editor.getParam("spellchecker_enable_learn_rpc")){d.add({title:"spellchecker.learn_word",onclick:function(){var n=f.innerHTML;k.remove(f,1);i._checkDone();h.setProgressState(1);i._sendRPC("learnWord",[i.selectedLang,n],function(o){h.setProgressState(0)})}})}d.update()});l=b.getPos(h.getContentAreaContainer());d.settings.offset_x=l.x;d.settings.offset_y=l.y;h.selection.select(f);l=k.getPos(f);d.showMenu(l.x,l.y+f.offsetHeight-g.y);return tinymce.dom.Event.cancel(j)}else{d.hideMenu()}},_checkDone:function(){var e=this,d=e.editor,g=d.dom,f;c(g.select("span"),function(h){if(h&&g.hasClass(h,"mceItemHiddenSpellWord")){f=true;return false}});if(!f){e._done()}},_done:function(){var d=this,e=d.active;if(d.active){d.active=0;d._removeWords();if(d._menu){d._menu.hideMenu()}if(e){d.editor.nodeChanged()}}},_sendRPC:function(e,g,d){var f=this;a.sendRPC({url:f.rpcUrl,method:e,params:g,success:d,error:function(i,h){f.editor.setProgressState(0);f.editor.windowManager.alert(i.errstr||("Error response: "+h.responseText))}})}});tinymce.PluginManager.add("spellchecker",tinymce.plugins.SpellcheckerPlugin)})();webcit-8.24-dfsg.orig/tiny_mce/plugins/spellchecker/css/0000755000175000017500000000000012271477123023124 5ustar michaelmichaelwebcit-8.24-dfsg.orig/tiny_mce/plugins/spellchecker/css/content.css0000644000175000017500000000014212271477123025305 0ustar michaelmichael.mceItemHiddenSpellWord {background:url(../img/wline.gif) repeat-x bottom left; cursor:default;} webcit-8.24-dfsg.orig/tiny_mce/plugins/legacyoutput/0000755000175000017500000000000012271477123022415 5ustar michaelmichaelwebcit-8.24-dfsg.orig/tiny_mce/plugins/legacyoutput/editor_plugin_src.js0000644000175000017500000001172112271477123026470 0ustar michaelmichael/** * editor_plugin_src.js * * Copyright 2009, Moxiecode Systems AB * Released under LGPL License. * * License: http://tinymce.moxiecode.com/license * Contributing: http://tinymce.moxiecode.com/contributing * * This plugin will force TinyMCE to produce deprecated legacy output such as font elements, u elements, align * attributes and so forth. There are a few cases where these old items might be needed for example in email applications or with Flash * * However you should NOT use this plugin if you are building some system that produces web contents such as a CMS. All these elements are * not apart of the newer specifications for HTML and XHTML. */ (function(tinymce) { // Override inline_styles setting to force TinyMCE to produce deprecated contents tinymce.onAddEditor.addToTop(function(tinymce, editor) { editor.settings.inline_styles = false; }); // Create the legacy ouput plugin tinymce.create('tinymce.plugins.LegacyOutput', { init : function(editor) { editor.onInit.add(function() { var alignElements = 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img', fontSizes = tinymce.explode(editor.settings.font_size_style_values), schema = editor.schema; // Override some internal formats to produce legacy elements and attributes editor.formatter.register({ // Change alignment formats to use the deprecated align attribute alignleft : {selector : alignElements, attributes : {align : 'left'}}, aligncenter : {selector : alignElements, attributes : {align : 'center'}}, alignright : {selector : alignElements, attributes : {align : 'right'}}, alignfull : {selector : alignElements, attributes : {align : 'justify'}}, // Change the basic formatting elements to use deprecated element types bold : [ {inline : 'b', remove : 'all'}, {inline : 'strong', remove : 'all'}, {inline : 'span', styles : {fontWeight : 'bold'}} ], italic : [ {inline : 'i', remove : 'all'}, {inline : 'em', remove : 'all'}, {inline : 'span', styles : {fontStyle : 'italic'}} ], underline : [ {inline : 'u', remove : 'all'}, {inline : 'span', styles : {textDecoration : 'underline'}, exact : true} ], strikethrough : [ {inline : 'strike', remove : 'all'}, {inline : 'span', styles : {textDecoration: 'line-through'}, exact : true} ], // Change font size and font family to use the deprecated font element fontname : {inline : 'font', attributes : {face : '%value'}}, fontsize : { inline : 'font', attributes : { size : function(vars) { return tinymce.inArray(fontSizes, vars.value) + 1; } } }, // Setup font elements for colors as well forecolor : {inline : 'font', styles : {color : '%value'}}, hilitecolor : {inline : 'font', styles : {backgroundColor : '%value'}} }); // Check that deprecated elements are allowed if not add them tinymce.each('b,i,u,strike'.split(','), function(name) { schema.addValidElements(name + '[*]'); }); // Add font element if it's missing if (!schema.getElementRule("font")) schema.addValidElements("font[face|size|color|style]"); // Add the missing and depreacted align attribute for the serialization engine tinymce.each(alignElements.split(','), function(name) { var rule = schema.getElementRule(name), found; if (rule) { if (!rule.attributes.align) { rule.attributes.align = {}; rule.attributesOrder.push('align'); } } }); // Listen for the onNodeChange event so that we can do special logic for the font size and font name drop boxes editor.onNodeChange.add(function(editor, control_manager) { var control, fontElm, fontName, fontSize; // Find font element get it's name and size fontElm = editor.dom.getParent(editor.selection.getNode(), 'font'); if (fontElm) { fontName = fontElm.face; fontSize = fontElm.size; } // Select/unselect the font name in droplist if (control = control_manager.get('fontselect')) { control.select(function(value) { return value == fontName; }); } // Select/unselect the font size in droplist if (control = control_manager.get('fontsizeselect')) { control.select(function(value) { var index = tinymce.inArray(fontSizes, value.fontSize); return index + 1 == fontSize; }); } }); }); }, getInfo : function() { return { longname : 'LegacyOutput', author : 'Moxiecode Systems AB', authorurl : 'http://tinymce.moxiecode.com', infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/legacyoutput', version : tinymce.majorVersion + "." + tinymce.minorVersion }; } }); // Register plugin tinymce.PluginManager.add('legacyoutput', tinymce.plugins.LegacyOutput); })(tinymce); webcit-8.24-dfsg.orig/tiny_mce/plugins/legacyoutput/editor_plugin.js0000644000175000017500000000404212271477123025617 0ustar michaelmichael(function(a){a.onAddEditor.addToTop(function(c,b){b.settings.inline_styles=false});a.create("tinymce.plugins.LegacyOutput",{init:function(b){b.onInit.add(function(){var c="p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img",e=a.explode(b.settings.font_size_style_values),d=b.schema;b.formatter.register({alignleft:{selector:c,attributes:{align:"left"}},aligncenter:{selector:c,attributes:{align:"center"}},alignright:{selector:c,attributes:{align:"right"}},alignfull:{selector:c,attributes:{align:"justify"}},bold:[{inline:"b",remove:"all"},{inline:"strong",remove:"all"},{inline:"span",styles:{fontWeight:"bold"}}],italic:[{inline:"i",remove:"all"},{inline:"em",remove:"all"},{inline:"span",styles:{fontStyle:"italic"}}],underline:[{inline:"u",remove:"all"},{inline:"span",styles:{textDecoration:"underline"},exact:true}],strikethrough:[{inline:"strike",remove:"all"},{inline:"span",styles:{textDecoration:"line-through"},exact:true}],fontname:{inline:"font",attributes:{face:"%value"}},fontsize:{inline:"font",attributes:{size:function(f){return a.inArray(e,f.value)+1}}},forecolor:{inline:"font",styles:{color:"%value"}},hilitecolor:{inline:"font",styles:{backgroundColor:"%value"}}});a.each("b,i,u,strike".split(","),function(f){d.addValidElements(f+"[*]")});if(!d.getElementRule("font")){d.addValidElements("font[face|size|color|style]")}a.each(c.split(","),function(f){var h=d.getElementRule(f),g;if(h){if(!h.attributes.align){h.attributes.align={};h.attributesOrder.push("align")}}});b.onNodeChange.add(function(g,k){var j,f,h,i;f=g.dom.getParent(g.selection.getNode(),"font");if(f){h=f.face;i=f.size}if(j=k.get("fontselect")){j.select(function(l){return l==h})}if(j=k.get("fontsizeselect")){j.select(function(m){var l=a.inArray(e,m.fontSize);return l+1==i})}})})},getInfo:function(){return{longname:"LegacyOutput",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/legacyoutput",version:a.majorVersion+"."+a.minorVersion}}});a.PluginManager.add("legacyoutput",a.plugins.LegacyOutput)})(tinymce);webcit-8.24-dfsg.orig/tiny_mce/plugins/preview/0000755000175000017500000000000012271477123021351 5ustar michaelmichaelwebcit-8.24-dfsg.orig/tiny_mce/plugins/preview/preview.html0000644000175000017500000000116612271477123023724 0ustar michaelmichael {#preview.preview_desc} webcit-8.24-dfsg.orig/tiny_mce/plugins/preview/editor_plugin_src.js0000644000175000017500000000306512271477123025426 0ustar michaelmichael/** * editor_plugin_src.js * * Copyright 2009, Moxiecode Systems AB * Released under LGPL License. * * License: http://tinymce.moxiecode.com/license * Contributing: http://tinymce.moxiecode.com/contributing */ (function() { tinymce.create('tinymce.plugins.Preview', { init : function(ed, url) { var t = this, css = tinymce.explode(ed.settings.content_css); t.editor = ed; // Force absolute CSS urls tinymce.each(css, function(u, k) { css[k] = ed.documentBaseURI.toAbsolute(u); }); ed.addCommand('mcePreview', function() { ed.windowManager.open({ file : ed.getParam("plugin_preview_pageurl", url + "/preview.html"), width : parseInt(ed.getParam("plugin_preview_width", "550")), height : parseInt(ed.getParam("plugin_preview_height", "600")), resizable : "yes", scrollbars : "yes", popup_css : css ? css.join(',') : ed.baseURI.toAbsolute("themes/" + ed.settings.theme + "/skins/" + ed.settings.skin + "/content.css"), inline : ed.getParam("plugin_preview_inline", 1) }, { base : ed.documentBaseURI.getURI() }); }); ed.addButton('preview', {title : 'preview.preview_desc', cmd : 'mcePreview'}); }, getInfo : function() { return { longname : 'Preview', author : 'Moxiecode Systems AB', authorurl : 'http://tinymce.moxiecode.com', infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/preview', version : tinymce.majorVersion + "." + tinymce.minorVersion }; } }); // Register plugin tinymce.PluginManager.add('preview', tinymce.plugins.Preview); })();webcit-8.24-dfsg.orig/tiny_mce/plugins/preview/example.html0000644000175000017500000000133312271477123023672 0ustar michaelmichael Example of a custom preview page Editor contents:
    webcit-8.24-dfsg.orig/tiny_mce/plugins/preview/editor_plugin.js0000644000175000017500000000203312271477123024551 0ustar michaelmichael(function(){tinymce.create("tinymce.plugins.Preview",{init:function(a,b){var d=this,c=tinymce.explode(a.settings.content_css);d.editor=a;tinymce.each(c,function(f,e){c[e]=a.documentBaseURI.toAbsolute(f)});a.addCommand("mcePreview",function(){a.windowManager.open({file:a.getParam("plugin_preview_pageurl",b+"/preview.html"),width:parseInt(a.getParam("plugin_preview_width","550")),height:parseInt(a.getParam("plugin_preview_height","600")),resizable:"yes",scrollbars:"yes",popup_css:c?c.join(","):a.baseURI.toAbsolute("themes/"+a.settings.theme+"/skins/"+a.settings.skin+"/content.css"),inline:a.getParam("plugin_preview_inline",1)},{base:a.documentBaseURI.getURI()})});a.addButton("preview",{title:"preview.preview_desc",cmd:"mcePreview"})},getInfo:function(){return{longname:"Preview",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/preview",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("preview",tinymce.plugins.Preview)})();webcit-8.24-dfsg.orig/tiny_mce/plugins/preview/jscripts/0000755000175000017500000000000012271477123023212 5ustar michaelmichaelwebcit-8.24-dfsg.orig/tiny_mce/plugins/preview/jscripts/embed.js0000644000175000017500000000362212271477123024627 0ustar michaelmichael/** * This script contains embed functions for common plugins. This scripts are complety free to use for any purpose. */ function writeFlash(p) { writeEmbed( 'D27CDB6E-AE6D-11cf-96B8-444553540000', 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0', 'application/x-shockwave-flash', p ); } function writeShockWave(p) { writeEmbed( '166B1BCA-3F9C-11CF-8075-444553540000', 'http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0', 'application/x-director', p ); } function writeQuickTime(p) { writeEmbed( '02BF25D5-8C17-4B23-BC80-D3488ABDDC6B', 'http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0', 'video/quicktime', p ); } function writeRealMedia(p) { writeEmbed( 'CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA', 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0', 'audio/x-pn-realaudio-plugin', p ); } function writeWindowsMedia(p) { p.url = p.src; writeEmbed( '6BF52A52-394A-11D3-B153-00C04F79FAA6', 'http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701', 'application/x-mplayer2', p ); } function writeEmbed(cls, cb, mt, p) { var h = '', n; h += ''; h += ' {#emotions_dlg.title}
    {#emotions_dlg.title}:

    {#emotions_dlg.cool} {#emotions_dlg.cry} {#emotions_dlg.embarassed} {#emotions_dlg.foot_in_mouth}
    {#emotions_dlg.frown} {#emotions_dlg.innocent} {#emotions_dlg.kiss} {#emotions_dlg.laughing}
    {#emotions_dlg.money_mouth} {#emotions_dlg.sealed} {#emotions_dlg.smile} {#emotions_dlg.surprised}
    {#emotions_dlg.tongue-out} {#emotions_dlg.undecided} {#emotions_dlg.wink} {#emotions_dlg.yell}
    webcit-8.24-dfsg.orig/tiny_mce/plugins/emotions/editor_plugin_src.js0000644000175000017500000000230412271477123025575 0ustar michaelmichael/** * editor_plugin_src.js * * Copyright 2009, Moxiecode Systems AB * Released under LGPL License. * * License: http://tinymce.moxiecode.com/license * Contributing: http://tinymce.moxiecode.com/contributing */ (function(tinymce) { tinymce.create('tinymce.plugins.EmotionsPlugin', { init : function(ed, url) { // Register commands ed.addCommand('mceEmotion', function() { ed.windowManager.open({ file : url + '/emotions.htm', width : 250 + parseInt(ed.getLang('emotions.delta_width', 0)), height : 160 + parseInt(ed.getLang('emotions.delta_height', 0)), inline : 1 }, { plugin_url : url }); }); // Register buttons ed.addButton('emotions', {title : 'emotions.emotions_desc', cmd : 'mceEmotion'}); }, getInfo : function() { return { longname : 'Emotions', author : 'Moxiecode Systems AB', authorurl : 'http://tinymce.moxiecode.com', infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/emotions', version : tinymce.majorVersion + "." + tinymce.minorVersion }; } }); // Register plugin tinymce.PluginManager.add('emotions', tinymce.plugins.EmotionsPlugin); })(tinymce);webcit-8.24-dfsg.orig/tiny_mce/plugins/emotions/img/0000755000175000017500000000000012271477123022301 5ustar michaelmichaelwebcit-8.24-dfsg.orig/tiny_mce/plugins/emotions/img/smiley-undecided.gif0000644000175000017500000000052112271477123026212 0ustar michaelmichaelGIF89a*Ɗyʶj%NYֺdN 2 -GqغB/ê9ļYVC 7vbο$!,'QicJJF !E*I4LA AId#8A&@HUD h[0NT} `r  y   tw %“[  A KG P)DN5!;webcit-8.24-dfsg.orig/tiny_mce/plugins/emotions/img/smiley-wink.gif0000644000175000017500000000053612271477123025244 0ustar michaelmichaelGIF89a)Ɲ 2ʶjNYdzP: , ,u\Gqغļ6־2Y( :!,@'Ri0Z fk 2JXe4JPHRC"8=#0%qtWCI$ho¢P4V  6 :< 1  F)ts#@MB:,    ..+-15961 w*H`@0T!;webcit-8.24-dfsg.orig/tiny_mce/plugins/emotions/img/smiley-sealed.gif0000644000175000017500000000050312271477123025523 0ustar michaelmichaelGIF89a ھRIͷJʶj5 (\lU Nû?:o"ֶR= /!,@'SiZRT"B-8]"p&fy2f0NbN~#a4ɫ3wIՕ$rO 8on$*?A9o,.NZr.tO7[, ][_x ;E* Q G )!;webcit-8.24-dfsg.orig/tiny_mce/plugins/emotions/img/smiley-yell.gif0000644000175000017500000000052012271477123025232 0ustar michaelmichaelGIF89a2e{ NYѿ(R4 4ʶj+3͎nT<غ9sJqHļժ*lL §!,'RicJRVAI*hq]ǣ590 q FCLZ1&h 51̢Ir:Eo(* Ku p  E  r%R9Z =AKGO)DM5!;webcit-8.24-dfsg.orig/tiny_mce/plugins/emotions/img/smiley-cry.gif0000644000175000017500000000051112271477123025062 0ustar michaelmichaelGIF89a.. P2!O#r簗!ϻ8rX ž{ֵưR> vʶjZj!,'XicJR#@a* y!dQ®~0pAƀ<+ fPer>zြXc| % %q  %       \ { A9;=# ݄5N!;webcit-8.24-dfsg.orig/tiny_mce/plugins/emotions/img/smiley-tongue-out.gif0000644000175000017500000000051012271477123026372 0ustar michaelmichaelGIF89a& Ɨ} ʶj#NҾXR=  2.::nXFqغZ/'ļ71"RT!,'TicJV4QQ*Y42M aQ($H@(Dh4U$qQ*&5 P\e ptE9*-aWW xn vE %  \ A-1N)5!;webcit-8.24-dfsg.orig/tiny_mce/plugins/emotions/img/smiley-embarassed.gif0000644000175000017500000000051312271477123026375 0ustar michaelmichaelGIF89a*ļLTԿ( AT«!:l:v[wX87d$|(*=غ$W°bQ!,'RicJj&I*!8ʃtdUn ~$bcA  ǂ@h \T@• L2AN&zxMv  % Cu y %    ] #  J;s B Q *N!;webcit-8.24-dfsg.orig/tiny_mce/plugins/emotions/img/smiley-laughing.gif0000644000175000017500000000052712271477123026072 0ustar michaelmichaelGIF89a¦2,Nr^HYҾëjSļGغq7uZӺ.ʶj2yc1R= Z!,@'SihHT#OI8], q&Ḛ`8A(1. g02NBIp$:{PW 8s    E)sr# 9, {Q .. 8+45   ~bS*  G\ J;webcit-8.24-dfsg.orig/tiny_mce/plugins/emotions/img/smiley-foot-in-mouth.gif0000644000175000017500000000052612271477123027000 0ustar michaelmichaelGIF89aƖ~ʶj MR: Zѽ1mT +HغoļO'ª60:" 6& 7!,@'Pix6M1C]Xbr xd0B&Ţj21 E"d PwQ=5  9;b   E)sr#? c9,O~ . x. +-58  \ |bT* GB;webcit-8.24-dfsg.orig/tiny_mce/plugins/emotions/img/smiley-surprised.gif0000644000175000017500000000052212271477123026307 0ustar michaelmichaelGIF89aƝ(#ʶjNR; Z&2,kS §غ7o7ļF>"RX( ĸD!,@'Pixh:Ti]^* n9$J3s VMw9ZF>2B噚6Ѿ&ӿrx$~!,'TicJn0Q*I041n~( D>tsh8",n0f!$lw2*ۑW]Hm %x%D%opu% Q Y 4  #B  *N!;webcit-8.24-dfsg.orig/tiny_mce/plugins/emotions/img/smiley-kiss.gif0000644000175000017500000000052212271477123025240 0ustar michaelmichaelGIF89aR= 44sYʶj 2!N*)"mqغ>9)ښļ9ֽ)Y!,'TicJVsRQ*Y!IrT3!x Cp#ʂ!X׫Q*y$0.9@8nH5q}M a}  { /  H    J % S \  A  HJ P) DN 5!;webcit-8.24-dfsg.orig/tiny_mce/plugins/emotions/img/smiley-frown.gif0000644000175000017500000000052412271477123025424 0ustar michaelmichaelGIF89aA'Ơ2ʶjNXν"7hT -qZA غGīļ7Z"%x`0!,'QicJJ&!E*Y08ԡAA`& 4!x<đ0"FU$Jc&%`..cރ1w~bp  z r r  x% ] ̘ AKGP)DN5!;webcit-8.24-dfsg.orig/tiny_mce/plugins/emotions/img/smiley-cool.gif0000644000175000017500000000054212271477123025225 0ustar michaelmichaelGIF89a z\V<N:8ѿ#[[WY#!1,//, & ɿbA_z`  !,'UicJRqGBU*ѣiOt`Be]GUZCqn P@~=@pLAx;d@~}{r} hr=       E   %  4  A F M) DK fP(J;webcit-8.24-dfsg.orig/tiny_mce/plugins/emotions/img/smiley-smile.gif0000644000175000017500000000053012271477123025377 0ustar michaelmichaelGIF89ay`Ɩz ʶj2NYнR= 6hTīغqGļ.17¦2Z& !,@'Pix,2 go1Beh@@RCB2\ D0!&x;A9 B"A\'Yظ{)X 6:< 0  F)sr#P:, P S . +-059  6  ~ [bU*H ;webcit-8.24-dfsg.orig/tiny_mce/plugins/emotions/langs/0000755000175000017500000000000012271477123022631 5ustar michaelmichaelwebcit-8.24-dfsg.orig/tiny_mce/plugins/emotions/langs/bg_dlg.js0000644000175000017500000000075112271477123024410 0ustar michaelmichaeltinyMCE.addI18n('bg.emotions_dlg',{cry:"Cry",cool:"Cool",desc:"\u0415\u043c\u043e\u0442\u0438\u043a\u043e\u043d\u0438",title:"\u0412\u043c\u044a\u043a\u043d\u0438 \u0435\u043c\u043e\u0442\u0438\u043a\u043e\u043d",yell:"Yell",wink:"Wink",undecided:"Undecided","tongue_out":"Tongue out",surprised:"Surprised",smile:"Smile",sealed:"Sealed","money_mouth":"Money mouth",laughing:"Laughing",kiss:"Kiss",innocent:"Innocent",frown:"Frown","foot_in_mouth":"Foot in mouth",embarassed:"Embarassed"});webcit-8.24-dfsg.orig/tiny_mce/plugins/emotions/langs/fr_dlg.js0000644000175000017500000000067712271477123024436 0ustar michaelmichaeltinyMCE.addI18n('fr.emotions_dlg',{cry:"En pleurs",cool:"Cool",desc:"\u00c9motic\u00f4nes",title:"Ins\u00e9rer une \u00e9motic\u00f4ne",yell:"Criant",wink:"Clin d\'\u0153il",undecided:"Incertain","tongue_out":"Langue tir\u00e9e",surprised:"Surpris",smile:"Sourire",sealed:"Bouche cousue","money_mouth":"Avare",laughing:"Rigolant",kiss:"Bisou",innocent:"Innocent",frown:"D\u00e9\u00e7u","foot_in_mouth":"Pied de nez",embarassed:"Embarrass\u00e9"});webcit-8.24-dfsg.orig/tiny_mce/plugins/emotions/langs/zh-cn_dlg.js0000644000175000017500000000071012271477123025032 0ustar michaelmichaeltinyMCE.addI18n('zh-cn.emotions_dlg',{cry:"\u54ed",cool:"\u9177",desc:"\u8868\u60c5",title:"\u63d2\u5165\u8868\u60c5",yell:"\u53eb\u558a",wink:"\u7728\u773c",undecided:"\u72b9\u8c6b","tongue_out":"\u5410\u820c\u5934",surprised:"\u60ca\u8bb6",smile:"\u5fae\u7b11",sealed:"\u4fdd\u5bc6","money_mouth":"\u53d1\u8d22",laughing:"\u5927\u7b11",kiss:"\u543b",innocent:"\u5929\u771f",frown:"\u76b1\u7709","foot_in_mouth":"\u8822\u8bdd",embarassed:"\u5c34\u5c2c"});webcit-8.24-dfsg.orig/tiny_mce/plugins/emotions/langs/de_dlg.js0000644000175000017500000000065312271477123024411 0ustar michaelmichaeltinyMCE.addI18n('de.emotions_dlg',{cry:"Weinend",cool:"Cool",desc:"Smilies",title:"Smiley einf\u00fcgen",yell:"Br\u00fcllend",wink:"Zwinkernd",undecided:"Unentschlossen","tongue_out":"Zunge raus",surprised:"\u00dcberrascht",smile:"L\u00e4chelnd",sealed:"Verschlossen","money_mouth":"Geld",laughing:"Lachend",kiss:"K\u00fcssend",innocent:"Unschuldig",frown:"Stirnrunzelnd","foot_in_mouth":"Reingefallen",embarassed:"Verlegen"});webcit-8.24-dfsg.orig/tiny_mce/plugins/emotions/langs/fi_dlg.js0000644000175000017500000000067512271477123024423 0ustar michaelmichaeltinyMCE.addI18n('fi.emotions_dlg',{cry:"Itku",cool:"Cool",desc:"Hymi\u00f6t",title:"Lis\u00e4\u00e4 hymi\u00f6",yell:"Huuto",wink:"Silm\u00e4nisku",undecided:"P\u00e4\u00e4tt\u00e4m\u00e4t\u00f6n","tongue_out":"Kieli ulkona",surprised:"Yll\u00e4ttynyt",smile:"Hymy",sealed:"Tukittu","money_mouth":"Klink Klink (raha)",laughing:"Nauru",kiss:"Pusu",innocent:"Viaton",frown:"Otsan rypistys","foot_in_mouth":"Jalka suussa",embarassed:"Nolostunut"});webcit-8.24-dfsg.orig/tiny_mce/plugins/emotions/langs/et_dlg.js0000644000175000017500000000065212271477123024430 0ustar michaelmichaeltinyMCE.addI18n('et.emotions_dlg',{cry:"Nutt",cool:"Lahe",desc:"Emotsioonid",title:"Sisesta emotsioon",yell:"Karje",wink:"Silmapilgutus",undecided:"K\u00f5hklev","tongue_out":"Keel v\u00e4ljas",surprised:"\u00dcllatunud",smile:"Naeratus",sealed:"Suletud","money_mouth":"Rahasuu",laughing:"Naermine",kiss:"Suudlus",innocent:"S\u00fc\u00fctu",frown:"Kulmu kortsutamine","foot_in_mouth":"Jalg suus",embarassed:"H\u00e4bitunne"});webcit-8.24-dfsg.orig/tiny_mce/plugins/emotions/langs/es_dlg.js0000644000175000017500000000062212271477123024424 0ustar michaelmichaeltinyMCE.addI18n('es.emotions_dlg',{cry:"Llora",cool:"Todo bien",desc:"Emoticones",title:"Insertar emoticon",yell:"Enfadado",wink:"Gui\u00f1o",undecided:"Indeciso","tongue_out":"Lengua fuera",surprised:"Sorprendido",smile:"Sonrisa",sealed:"Sellado","money_mouth":"Dinero boca",laughing:"Risa",kiss:"Beso",innocent:"Inocente",frown:"Triste","foot_in_mouth":"Pie en la boca",embarassed:"Verg\u00fcenza"});webcit-8.24-dfsg.orig/tiny_mce/plugins/emotions/langs/da_dlg.js0000644000175000017500000000062112271477123024400 0ustar michaelmichaeltinyMCE.addI18n('da.emotions_dlg',{cry:"Gr\u00e6de",cool:"Cool",desc:"Hum\u00f8rikoner",title:"Inds\u00e6t hum\u00f8rikon",yell:"R\u00e5be",wink:"Vink",undecided:"Ubeslutsom","tongue_out":"Tunge ud",surprised:"Overrasket",smile:"Smil",sealed:"Lukket","money_mouth":"Pengemund",laughing:"Grine",kiss:"Kys",innocent:"Uskyldig",frown:"Forskr\u00e6kket","foot_in_mouth":"Fod i munden",embarassed:"Flov"});webcit-8.24-dfsg.orig/tiny_mce/plugins/emotions/langs/el_dlg.js0000644000175000017500000000254312271477123024421 0ustar michaelmichaeltinyMCE.addI18n('el.emotions_dlg',{cry:"\u0394\u03b1\u03ba\u03c1\u03c5\u03c3\u03bc\u03ad\u03bd\u03bf\u03c2",cool:"\u0386\u03bd\u03b5\u03c4\u03bf\u03c2",desc:"\u03a3\u03c5\u03bd\u03b1\u03b9\u03c3\u03b8\u03ae\u03bc\u03b1\u03c4\u03b1",title:"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae \u03c3\u03c5\u03bd\u03b1\u03b9\u03c3\u03b8\u03ae\u03bc\u03b1\u03c4\u03bf\u03c2",yell:"\u03a6\u03c9\u03bd\u03ac\u03b6\u03c9",wink:"\u039a\u03bb\u03b5\u03af\u03c3\u03b9\u03bc\u03bf \u03bc\u03b1\u03c4\u03b9\u03bf\u03cd",undecided:"\u0391\u03bd\u03b1\u03c0\u03bf\u03c6\u03ac\u03c3\u03b9\u03c3\u03c4\u03bf\u03c2","tongue_out":"\u0393\u03bb\u03ce\u03c3\u03c3\u03b1 \u03ad\u03be\u03c9",surprised:"\u0388\u03ba\u03c0\u03bb\u03b7\u03ba\u03c4\u03bf\u03c2",smile:"\u03a7\u03b1\u03bc\u03cc\u03b3\u03b5\u03bb\u03bf",sealed:"\u03a3\u03c6\u03c1\u03b1\u03b3\u03b9\u03c3\u03bc\u03ad\u03bd\u03bf \u03c3\u03c4\u03cc\u03bc\u03b1","money_mouth":"\u039b\u03b5\u03c6\u03c4\u03ac \u03c9\u03c2 \u03c3\u03c4\u03cc\u03bc\u03b1",laughing:"\u0393\u03ad\u03bb\u03b9\u03bf",kiss:"\u03a6\u03b9\u03bb\u03af",innocent:"\u0391\u03b8\u03ce\u03bf\u03c2",frown:"\u039a\u03b1\u03c4\u03c3\u03bf\u03c5\u03c6\u03b9\u03b1\u03c3\u03bc\u03ad\u03bd\u03bf\u03c2","foot_in_mouth":"\u039a\u03bb\u03c9\u03c4\u03c3\u03b9\u03ac \u03c3\u03c4\u03bf \u03c3\u03c4\u03cc\u03bc\u03b1",embarassed:"\u0391\u03bc\u03ae\u03c7\u03b1\u03bd\u03bf\u03c2"});webcit-8.24-dfsg.orig/tiny_mce/plugins/emotions/langs/hu_dlg.js0000644000175000017500000000100512271477123024425 0ustar michaelmichaeltinyMCE.addI18n('hu.emotions_dlg',{cry:"S\u00edr\u00f3s",cool:"Kir\u00e1ly",desc:"Hangulatjelek",title:"Hangulatjel besz\u00far\u00e1sa",yell:"\u00dcv\u00f6lt\u00e9s",wink:"Kacsint\u00e1s",undecided:"Hat\u00e1rozatlan","tongue_out":"Nyelv\u00f6lt\u00e9s",surprised:"Meglepett",smile:"Vigyor",sealed:"Lakat a sz\u00e1j\u00e1n","money_mouth":"P\u00e9nz besz\u00e9l",laughing:"Nevet\u00e9s",kiss:"Cs\u00f3k",innocent:"\u00c1rtatlan",frown:"Rosszall","foot_in_mouth":"L\u00e1b a sz\u00e1jban",embarassed:"Zavarban van"});webcit-8.24-dfsg.orig/tiny_mce/plugins/emotions/langs/cs_dlg.js0000644000175000017500000000112512271477123024421 0ustar michaelmichaeltinyMCE.addI18n('cs.emotions_dlg',{cry:"Pla\u010d\u00edc\u00ed",cool:"\u00da\u017easn\u00fd",desc:"Emotikony",title:"Vlo\u017eit emotikonu",yell:"K\u0159i\u010d\u00edc\u00ed",wink:"Mrkaj\u00edc\u00ed",undecided:"Nerozhodn\u00fd","tongue_out":"S vyplazen\u00fdm jazykem",surprised:"P\u0159ekvapen\u00fd",smile:"Usm\u00edvaj\u00edc\u00ed se",sealed:"Ml\u010d\u00edc\u00ed","money_mouth":"Je na prachy",laughing:"Sm\u011bj\u00edc\u00ed se",kiss:"L\u00edbaj\u00edc\u00ed",innocent:"Nevinn\u00fd",frown:"Zamra\u010den\u00fd","foot_in_mouth":"\u0160l\u00e1pnul vedle",embarassed:"Rozpa\u010dit\u00fd"});webcit-8.24-dfsg.orig/tiny_mce/plugins/emotions/langs/en_dlg.js0000644000175000017500000000056412271477123024424 0ustar michaelmichaeltinyMCE.addI18n('en.emotions_dlg',{cry:"Cry",cool:"Cool",desc:"Emotions",title:"Insert Emotion",yell:"Yell",wink:"Wink",undecided:"Undecided","tongue_out":"Tongue Out",surprised:"Surprised",smile:"Smile",sealed:"Sealed","money_mouth":"Money Mouth",laughing:"Laughing",kiss:"Kiss",innocent:"Innocent",frown:"Frown","foot_in_mouth":"Foot in Mouth",embarassed:"Embarassed"});webcit-8.24-dfsg.orig/tiny_mce/plugins/emotions/langs/it_dlg.js0000644000175000017500000000063412271477123024434 0ustar michaelmichaeltinyMCE.addI18n('it.emotions_dlg',{cry:"Piango",cool:"Fico",desc:"Faccina",title:"Inserisci faccina",yell:"Arrabbiato",wink:"Occhiolino",undecided:"Indeciso","tongue_out":"Linguaccia",surprised:"Sorpreso",smile:"Sorridente",sealed:"Bocca sigillata","money_mouth":"Bocca danarosa",laughing:"Risatona",kiss:"Bacio",innocent:"Santarellino",frown:"Triste","foot_in_mouth":"Piede in bocca",embarassed:"Imbarazzato"});webcit-8.24-dfsg.orig/tiny_mce/plugins/emotions/editor_plugin.js0000644000175000017500000000124412271477123024730 0ustar michaelmichael(function(a){a.create("tinymce.plugins.EmotionsPlugin",{init:function(b,c){b.addCommand("mceEmotion",function(){b.windowManager.open({file:c+"/emotions.htm",width:250+parseInt(b.getLang("emotions.delta_width",0)),height:160+parseInt(b.getLang("emotions.delta_height",0)),inline:1},{plugin_url:c})});b.addButton("emotions",{title:"emotions.emotions_desc",cmd:"mceEmotion"})},getInfo:function(){return{longname:"Emotions",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/emotions",version:a.majorVersion+"."+a.minorVersion}}});a.PluginManager.add("emotions",a.plugins.EmotionsPlugin)})(tinymce);webcit-8.24-dfsg.orig/tiny_mce/plugins/emotions/js/0000755000175000017500000000000012271477123022141 5ustar michaelmichaelwebcit-8.24-dfsg.orig/tiny_mce/plugins/emotions/js/emotions.js0000644000175000017500000000103512271477123024333 0ustar michaelmichaeltinyMCEPopup.requireLangPack(); var EmotionsDialog = { init : function(ed) { tinyMCEPopup.resizeToInnerSize(); }, insert : function(file, title) { var ed = tinyMCEPopup.editor, dom = ed.dom; tinyMCEPopup.execCommand('mceInsertContent', false, dom.createHTML('img', { src : tinyMCEPopup.getWindowArg('plugin_url') + '/img/' + file, alt : ed.getLang(title), title : ed.getLang(title), border : 0 })); tinyMCEPopup.close(); } }; tinyMCEPopup.onInit.add(EmotionsDialog.init, EmotionsDialog); webcit-8.24-dfsg.orig/tiny_mce/plugins/example_dependency/0000755000175000017500000000000012271477123023521 5ustar michaelmichaelwebcit-8.24-dfsg.orig/tiny_mce/plugins/example_dependency/editor_plugin_src.js0000644000175000017500000000345312271477123027577 0ustar michaelmichael/** * editor_plugin_src.js * * Copyright 2009, Moxiecode Systems AB * Released under LGPL License. * * License: http://tinymce.moxiecode.com/license * Contributing: http://tinymce.moxiecode.com/contributing */ (function() { tinymce.create('tinymce.plugins.ExampleDependencyPlugin', { /** * Initializes the plugin, this will be executed after the plugin has been created. * This call is done before the editor instance has finished it's initialization so use the onInit event * of the editor instance to intercept that event. * * @param {tinymce.Editor} ed Editor instance that the plugin is initialized in. * @param {string} url Absolute URL to where the plugin is located. */ init : function(ed, url) { }, /** * Returns information about the plugin as a name/value array. * The current keys are longname, author, authorurl, infourl and version. * * @return {Object} Name/value array containing information about the plugin. */ getInfo : function() { return { longname : 'Example Dependency plugin', author : 'Some author', authorurl : 'http://tinymce.moxiecode.com', infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/example_dependency', version : "1.0" }; } }); /** * Register the plugin, specifying the list of the plugins that this plugin depends on. They are specified in a list, with the list loaded in order. * plugins in this list will be initialised when this plugin is initialized. (before the init method is called). * plugins in a depends list should typically be specified using the short name). If neccesary this can be done * with an object which has the url to the plugin and the shortname. */ tinymce.PluginManager.add('example_dependency', tinymce.plugins.ExampleDependencyPlugin, ['example']); })(); webcit-8.24-dfsg.orig/tiny_mce/plugins/example_dependency/editor_plugin.js0000644000175000017500000000064312271477123026726 0ustar michaelmichael(function(){tinymce.create("tinymce.plugins.ExampleDependencyPlugin",{init:function(a,b){},getInfo:function(){return{longname:"Example Dependency plugin",author:"Some author",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/example_dependency",version:"1.0"}}});tinymce.PluginManager.add("example_dependency",tinymce.plugins.ExampleDependencyPlugin,["example"])})();webcit-8.24-dfsg.orig/tiny_mce/plugins/insertdatetime/0000755000175000017500000000000012271477123022711 5ustar michaelmichaelwebcit-8.24-dfsg.orig/tiny_mce/plugins/insertdatetime/editor_plugin_src.js0000644000175000017500000000545412271477123026772 0ustar michaelmichael/** * editor_plugin_src.js * * Copyright 2009, Moxiecode Systems AB * Released under LGPL License. * * License: http://tinymce.moxiecode.com/license * Contributing: http://tinymce.moxiecode.com/contributing */ (function() { tinymce.create('tinymce.plugins.InsertDateTime', { init : function(ed, url) { var t = this; t.editor = ed; ed.addCommand('mceInsertDate', function() { var str = t._getDateTime(new Date(), ed.getParam("plugin_insertdate_dateFormat", ed.getLang('insertdatetime.date_fmt'))); ed.execCommand('mceInsertContent', false, str); }); ed.addCommand('mceInsertTime', function() { var str = t._getDateTime(new Date(), ed.getParam("plugin_insertdate_timeFormat", ed.getLang('insertdatetime.time_fmt'))); ed.execCommand('mceInsertContent', false, str); }); ed.addButton('insertdate', {title : 'insertdatetime.insertdate_desc', cmd : 'mceInsertDate'}); ed.addButton('inserttime', {title : 'insertdatetime.inserttime_desc', cmd : 'mceInsertTime'}); }, getInfo : function() { return { longname : 'Insert date/time', author : 'Moxiecode Systems AB', authorurl : 'http://tinymce.moxiecode.com', infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/insertdatetime', version : tinymce.majorVersion + "." + tinymce.minorVersion }; }, // Private methods _getDateTime : function(d, fmt) { var ed = this.editor; function addZeros(value, len) { value = "" + value; if (value.length < len) { for (var i=0; i<(len-value.length); i++) value = "0" + value; } return value; }; fmt = fmt.replace("%D", "%m/%d/%y"); fmt = fmt.replace("%r", "%I:%M:%S %p"); fmt = fmt.replace("%Y", "" + d.getFullYear()); fmt = fmt.replace("%y", "" + d.getYear()); fmt = fmt.replace("%m", addZeros(d.getMonth()+1, 2)); fmt = fmt.replace("%d", addZeros(d.getDate(), 2)); fmt = fmt.replace("%H", "" + addZeros(d.getHours(), 2)); fmt = fmt.replace("%M", "" + addZeros(d.getMinutes(), 2)); fmt = fmt.replace("%S", "" + addZeros(d.getSeconds(), 2)); fmt = fmt.replace("%I", "" + ((d.getHours() + 11) % 12 + 1)); fmt = fmt.replace("%p", "" + (d.getHours() < 12 ? "AM" : "PM")); fmt = fmt.replace("%B", "" + ed.getLang("insertdatetime.months_long").split(',')[d.getMonth()]); fmt = fmt.replace("%b", "" + ed.getLang("insertdatetime.months_short").split(',')[d.getMonth()]); fmt = fmt.replace("%A", "" + ed.getLang("insertdatetime.day_long").split(',')[d.getDay()]); fmt = fmt.replace("%a", "" + ed.getLang("insertdatetime.day_short").split(',')[d.getDay()]); fmt = fmt.replace("%%", "%"); return fmt; } }); // Register plugin tinymce.PluginManager.add('insertdatetime', tinymce.plugins.InsertDateTime); })();webcit-8.24-dfsg.orig/tiny_mce/plugins/insertdatetime/editor_plugin.js0000644000175000017500000000361312271477123026116 0ustar michaelmichael(function(){tinymce.create("tinymce.plugins.InsertDateTime",{init:function(a,b){var c=this;c.editor=a;a.addCommand("mceInsertDate",function(){var d=c._getDateTime(new Date(),a.getParam("plugin_insertdate_dateFormat",a.getLang("insertdatetime.date_fmt")));a.execCommand("mceInsertContent",false,d)});a.addCommand("mceInsertTime",function(){var d=c._getDateTime(new Date(),a.getParam("plugin_insertdate_timeFormat",a.getLang("insertdatetime.time_fmt")));a.execCommand("mceInsertContent",false,d)});a.addButton("insertdate",{title:"insertdatetime.insertdate_desc",cmd:"mceInsertDate"});a.addButton("inserttime",{title:"insertdatetime.inserttime_desc",cmd:"mceInsertTime"})},getInfo:function(){return{longname:"Insert date/time",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/insertdatetime",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_getDateTime:function(e,a){var c=this.editor;function b(g,d){g=""+g;if(g.length Copyright (C) This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the This library 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Also add information on how to contact you by electronic and paper mail. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the library, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the library `Frob' (a library for tweaking knobs) written by James Random Hacker. , 1 April 1990 Ty Coon, President of Vice That's all there is to it! webcit-8.24-dfsg.orig/tiny_mce/themes/0000755000175000017500000000000012271477123017474 5ustar michaelmichaelwebcit-8.24-dfsg.orig/tiny_mce/themes/simple/0000755000175000017500000000000012271477123020765 5ustar michaelmichaelwebcit-8.24-dfsg.orig/tiny_mce/themes/simple/img/0000755000175000017500000000000012271477123021541 5ustar michaelmichaelwebcit-8.24-dfsg.orig/tiny_mce/themes/simple/img/icons.gif0000644000175000017500000000144612271477123023350 0ustar michaelmichaelGIF89a)৳y4Kc1QXԚ=8)؊xYY]fm񑣹ĸϰQ˴ƴqЍ_oBܱWn9c!),@pH,Ȥrl:Шt XVN$V9H*a'<oTGuurBsE kS#[ Io[""KYKHPB  "BFYX%gJi|JrQ M|Z{Ns‹[I[' &L gr3.m@)hQ$U$K!`zF6%Qͱ#N4"F7&;GCI,ŜQ )H `,J)" 7tVU!#ʝK.R˷߿K2((fյYxFAT#v,h +ɑғ!\e)٘p"3L@fbXɆI(`̉ X[(mY$M~,7 &p|P6 H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3-gAMA|Q cHRMz%u0`:o_FPLTEΙ߃ÃÄĄÛ࠼䕯ՠ▯ԸV}⟻ᠼ⠻ܟޠޟݴIMMNNV`defjvߍux|܁܃كڄڄߋߍyyxzلutvu_`hji·͆ψUVWW`Ԙبڪʴɴ٩۶ڵʴɳӵӵڵ8DtRNSS%IDATxloFFQ QDucOUQ8,YD !% {3dAh 䈽!HAHv_JRT xK l{a-p_tOsɷnt.=t:p8sklVg!8H$o‡>uᩛp& FtŮQ G7w%^pD"a!Tdd)B 艵Xl)@߈O2V^Dl"fi!]I$I>!$$9=H4MMASE1=ۈ ) &f) '6֞O Ae>2 }vaaDl#0dfvavefa'b_`=zyfeq_99n^?\2-۷ Ù@0`  Az*4z(PVq\[8. qcnzy#:Fz<ByqMvnkt\wIi$RT."JrTT*ʥ00ˊYQv=QEQE ̉1{(٬bV<Db3'q ʫ} SiRUUUS5U4\GMS5MSUS5MT ?>>>>~gws AdI$IdI%Y2(6y-˒$K,2*o%YMUeY|>䯃èT 0 0N*''jr%咮Wczxxx2;bQ)EQR, "ykop[a+Ol7x@!x x0ه^GǏݫ~^~^]]`n_e۝N/͋ߚM{l^\4q4M4341M4Ml,˲eVjYxjYV˲ XVeYV ky6zQ^z^o4긓95M4zvfy=k{qbTqR1 eJժWKjo18(E({XTpPvR>䷓ l'q $/'y\G><-I^Hn 'pl7Iwnf7d2tBAg(wM`gKIENDB`webcit-8.24-dfsg.orig/tiny_mce/themes/simple/skins/o2k7/content.css0000644000175000017500000000071512271477123025065 0ustar michaelmichaelbody, td, pre {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px;} body {background: #FFF;} .mceVisualAid {border: 1px dashed #BBB;} /* IE */ * html body { scrollbar-3dlight-color: #F0F0EE; scrollbar-arrow-color: #676662; scrollbar-base-color: #F0F0EE; scrollbar-darkshadow-color: #DDDDDD; scrollbar-face-color: #E0E0DD; scrollbar-highlight-color: #F0F0EE; scrollbar-shadow-color: #F0F0EE; scrollbar-track-color: #F5F5F5; } webcit-8.24-dfsg.orig/tiny_mce/themes/simple/editor_template_src.js0000644000175000017500000000620512271477123025356 0ustar michaelmichael/** * editor_template_src.js * * Copyright 2009, Moxiecode Systems AB * Released under LGPL License. * * License: http://tinymce.moxiecode.com/license * Contributing: http://tinymce.moxiecode.com/contributing */ (function() { var DOM = tinymce.DOM; // Tell it to load theme specific language pack(s) tinymce.ThemeManager.requireLangPack('simple'); tinymce.create('tinymce.themes.SimpleTheme', { init : function(ed, url) { var t = this, states = ['Bold', 'Italic', 'Underline', 'Strikethrough', 'InsertUnorderedList', 'InsertOrderedList'], s = ed.settings; t.editor = ed; ed.contentCSS.push(url + "/skins/" + s.skin + "/content.css"); ed.onInit.add(function() { ed.onNodeChange.add(function(ed, cm) { tinymce.each(states, function(c) { cm.get(c.toLowerCase()).setActive(ed.queryCommandState(c)); }); }); }); DOM.loadCSS((s.editor_css ? ed.documentBaseURI.toAbsolute(s.editor_css) : '') || url + "/skins/" + s.skin + "/ui.css"); }, renderUI : function(o) { var t = this, n = o.targetNode, ic, tb, ed = t.editor, cf = ed.controlManager, sc; n = DOM.insertAfter(DOM.create('span', {id : ed.id + '_container', 'class' : 'mceEditor ' + ed.settings.skin + 'SimpleSkin'}), n); n = sc = DOM.add(n, 'table', {cellPadding : 0, cellSpacing : 0, 'class' : 'mceLayout'}); n = tb = DOM.add(n, 'tbody'); // Create iframe container n = DOM.add(tb, 'tr'); n = ic = DOM.add(DOM.add(n, 'td'), 'div', {'class' : 'mceIframeContainer'}); // Create toolbar container n = DOM.add(DOM.add(tb, 'tr', {'class' : 'last'}), 'td', {'class' : 'mceToolbar mceLast', align : 'center'}); // Create toolbar tb = t.toolbar = cf.createToolbar("tools1"); tb.add(cf.createButton('bold', {title : 'simple.bold_desc', cmd : 'Bold'})); tb.add(cf.createButton('italic', {title : 'simple.italic_desc', cmd : 'Italic'})); tb.add(cf.createButton('underline', {title : 'simple.underline_desc', cmd : 'Underline'})); tb.add(cf.createButton('strikethrough', {title : 'simple.striketrough_desc', cmd : 'Strikethrough'})); tb.add(cf.createSeparator()); tb.add(cf.createButton('undo', {title : 'simple.undo_desc', cmd : 'Undo'})); tb.add(cf.createButton('redo', {title : 'simple.redo_desc', cmd : 'Redo'})); tb.add(cf.createSeparator()); tb.add(cf.createButton('cleanup', {title : 'simple.cleanup_desc', cmd : 'mceCleanup'})); tb.add(cf.createSeparator()); tb.add(cf.createButton('insertunorderedlist', {title : 'simple.bullist_desc', cmd : 'InsertUnorderedList'})); tb.add(cf.createButton('insertorderedlist', {title : 'simple.numlist_desc', cmd : 'InsertOrderedList'})); tb.renderTo(n); return { iframeContainer : ic, editorContainer : ed.id + '_container', sizeContainer : sc, deltaHeight : -20 }; }, getInfo : function() { return { longname : 'Simple theme', author : 'Moxiecode Systems AB', authorurl : 'http://tinymce.moxiecode.com', version : tinymce.majorVersion + "." + tinymce.minorVersion } } }); tinymce.ThemeManager.add('simple', tinymce.themes.SimpleTheme); })();webcit-8.24-dfsg.orig/tiny_mce/themes/advanced/0000755000175000017500000000000012271477123021241 5ustar michaelmichaelwebcit-8.24-dfsg.orig/tiny_mce/themes/advanced/about.htm0000644000175000017500000000521512271477123023070 0ustar michaelmichael {#advanced_dlg.about_title}

    {#advanced_dlg.about_title}

    Version: ()

    TinyMCE is a platform independent web based Javascript HTML WYSIWYG editor control released as Open Source under LGPL by Moxiecode Systems AB. It has the ability to convert HTML TEXTAREA fields or other HTML elements to editor instances.

    Copyright © 2003-2008, Moxiecode Systems AB, All rights reserved.

    For more information about this software visit the TinyMCE website.

    Got Moxie?

    {#advanced_dlg.about_loaded}

     

    webcit-8.24-dfsg.orig/tiny_mce/themes/advanced/img/0000755000175000017500000000000012271477123022015 5ustar michaelmichaelwebcit-8.24-dfsg.orig/tiny_mce/themes/advanced/img/quicktime.gif0000644000175000017500000000045512271477123024503 0ustar michaelmichaelGIF89aM6nX brt |)t7 !,@'Ga1pxLtd iCY(D08)d b2HJd#w |yON*#d x x"Bil-/"hj. #;8 > " R  G+D !;webcit-8.24-dfsg.orig/tiny_mce/themes/advanced/img/shockwave.gif0000644000175000017500000000060012271477123024472 0ustar michaelmichaelGIF89a)-Ŝ՟lfwh|Ŝӽ;Ģ̵Yf$$33..77ll~~꟟2!),@@*H$@Q#!iDS&TD)T(6MDrU,x̄6"!&m' R'!!$Y y''B (xmllI M UE P!$#G !Q$Gp ''$E'xxA;webcit-8.24-dfsg.orig/tiny_mce/themes/advanced/img/realmedia.gif0000644000175000017500000000066712271477123024440 0ustar michaelmichaelGIF89a%RPM@kű@=;.+)c5xHVusq}$pX Jfff!,%' ))'=., ? ., B 2%3cB(  ~;webcit-8.24-dfsg.orig/tiny_mce/themes/advanced/img/icons.gif0000644000175000017500000002701612271477123023625 0ustar michaelmichaelGIF89a<`n%4O8*opqyn4Kcpz1QﮏХX̣XݹpQQRԚ=8)؊Ssb/i䴕T|ՍxY.-Y]fr[vOmAwl𑣹tlaUOPhĸ5f-M97ϰQϨ˴g急ٺO5`pˑ6MGYur虙Rkƴq*KKzBRc򅊝򨩶suRyMFH|lOf>봱0ChBgd}ΓR{kW@Ks@`A8?g..<QkܱS"X^Sp%cWnNX 9Lp𨸸Jvc"Zڎr̦PUg2Rr6[[Z?ː()'Р9c!,< H*\ȰÇ#JHŋ3jȱǏ CIɓ(}ԨeC0cʜ)ʛ8sɳϟ@ JѣH;x`iӗJJUͤXjpQ.I((ٳhܥKۋ*6ݻx~vu^~ LÈzM3]u؉\*-z(g 0.ti ? ĺHlጐ򉧏%|*s|z > dF萑ą6J{kL8dD.\ {=VѷGhqK. rp Vham. 6f@H A C$aD TleB j<~GV}I 9I 5>jT #dIq1CD, af`fjV"p gDP5Yt?'B!(!ߠUFޑ G]]GFtX %`d;^ڑ38HD(q m4fH뭺jPkFt &aH. @A# 1o enB,l 0A@i3%PG?P L0ލNN5\s^S].jB"D$#rwBPChD?W2{ѳq&D@FfE}E~!&sq.$zԉD G TDjB=#61J*k__$%H-CvI|FXK&bBV/K3I:'@0BGG\8K 7+D5tLP/r}iܕH 6.*T'5C)F(@ 7 I-n@@"' D$(Qq$`p^_! ^Vt/r=MӘב&4A|R!PG'"LPUޔ+V|\ߠ| Yr?1:cI7M?CN.S 2e@}D BRL0A38H!*y.`PC2$v1)y悞-sfvxĢ״EAD 0/X}ַx2Fw %:O tq&.MLSzp@6(n?h8Qr+~T2[i$Eg? -((Dla0B q2 2S dI bM"fE7 1#F&$ 405 W[6E Xv\2UI'ZcփTK8!=[5H0ZiF0ъr 0nKQ%i.Ep7PB.p̲Zfsl!x@J0!, \#8*N:&[@}G ڙM6A҅2b ,gq喅<A"Hs`9W2j]Aq:XxDBV&f,D|?&'fĺ풡e3EEɵa3Zط64aNho,d@>CnKNg4A;dD qB[6fjD\7!T0]\H1TkZú ` R=1$=mBqB46\!EMC"tU Ә(H"$-1q!XWMT4%5v)JiKfz[/{ɴ."]P"1Vm#FOLr?ιdOsdr31d1#r B.ApfXlL)HMxlWe8NzSa^rsVV_ [jS5̎]@ºw_2aE@8Cͺ(ebY͠sA"GdfC"9SH$4H b7JSֈX ]SĦ Vԉ7JJ(]=QIO"$g!լ5rEY]#8 $ q@ AT^3Y?gE{K#tA5.g9OS"FPtZ@t$Fr PVr"d^".ufPh@Pj6yJ 1zL y!kqwNc'waTt93x$ (b |FāGEPzpWPsAG@ 7'8h wW7 qaaL !6${gX6|T0s37drUuV>{ W}AqG+}'Aq+s(gc7|#vG@Bt tQ3]g> uǘ>Y',Udt^cŅlUR(j!hP ).rn $jv@Q<\-Cl1&yEHG͐ f $p S`2b&iXexquA1!`cacsov8W#wMp-%6p ͕SUOX#lc(l1# =7W=wWhwsK\P4xAPkE8sTiH`1C.W]vQ8R{YGų G (XY8S@ 4ё U!i8{qTUӅry&.@qNh>4y&H&f W3U^@٩:Zz:|:Zzګ++Zj Țo`(X]7zκC0P"8W`lmpqml0Dd0 pAЯ:! : GP ; K >*p21۱ pP *aIC.O2;28г0 U0UF{p[0p  SЊԚb O0n]` px{ZP  J06pTWp\ p;S '@P@`@ @d >cpI! ۹+ Z%++ePؓ;`c ˼K;Q{ + 8[`:%r"_"@@{` BPl ` ¬.b  p š@ ;{=[*נ[88*%8P:5 aYpzPZxPVl/Z `@` +l< n0 b7q<q6`nP1 0 rRLȃRLrѷQ`'$7>pW05.>pP RRRP2Ygk"@Y ']+  pO0 Vpl <-`@`@1 ƀE H`4}pÛpZ`]rP>5 pl0vx q 8+aL hl a Nj]"- e œž=^ϐAﲵqUkȭ` P ?mp9m-0Sb(qQ'@v!]lOn@P Mk Թ=;[JP?  < /;P;`6 ]0ί3"^j ϟa 2>;rt&6a_]+AQ L1!R^0 ?t ֽ&.`ow-NP  LpWP |nې0VP[r0`/p ` n H NA 1p#&0:٭ ps0 q¿p!`"xg>(LNMdd&rϠ-_`$A.4;F`&M| TLEMAH25qTQ&Bu1#F$@XH ]^$Ʈ_"BYٳ*T`…0* Kb_wCJ2L(@DdO̎ m{ y(@Q`}WhNtUT GjKuU9E 'NL#x཯'4~{?>' !` ! 0"`TA$hA%z`-44ll``J2V\Q *(J f( 6 Fq1'~B:gH"0I%sѨ**<- 1ݩ8 d  q#%`&+NG!;B?0.DxB"`7ڂ-ra5+D7bMdV%0j$!b0g΂ēh"V5zF"`裐FH؊0NJj榜 a@ۄ by'bl!do⨗"KcG谂'w>K{Lbf6t-!Oi!y,H$j\{DžmlL>aI&ganH "= HCZe:K`pάFdK'E qfR٤>ƛ$" jY,F, |a VLLjaJ]!%rnɃ E;(1"1$Ix|??W`}d~~oGHj D <&isX'9i{6: (IB v0Z R lpM vЪRU&[%7 rC`)V2x_ bK? iVQF@B@lIFCQ@qGh Ѕu Mx6"pu"P :G0!OjE 3J3D'@%*GY PCh)2+MTI-oyd## M9nj$# KGf! qbS!:cD6`nvgDYc: 8A :ď aɮ}-lc+AI$<5eb4 -Ff#8↷r( c 9@:+ ;‘8 7UΧLBZrN576 u ׭!yDrGD(|A rc1&5&RFey+X[ 3Q ! t"@[r׼z{k`g H` ~_d'[Y{kb+B0 -'ֶ@ACqSW3}@4`D,pB!PNÄ.0;[)]\_Sha66?`)hP;/Q*UBk;l+Jn`؂8`K`05>zF2 V7!ط =>C@DDCDDEDޑغ SSZ`9X X./h+W)0:W$9^s:Dp1'^zHh!˅ӆ#j;+`/+0s`'" `IVZ;@i.8<%( PXX#30vn:< K,#1"8ր EcH$c= 0AQC3J$y#萓셔f ΂ɟIHX#Jʬ0ʬሌ0#R SJ1x`z[jB63N8?b<4AK}@ rx@@Lu"LЇO+p0$ y*$X)558h 8ꠎ&PS@YuxB2UXm˂Noci >V->>I&(9!A@hAOd-܀-І$ɸ7xgD=( PM< PbP{XP0HB`"HPm@ Q WXpdx2Rc RC>H:l0il.]7P'h@4@Gp X/+sdGZ0Ѐz~K!%@,fAp(0sHH'8 h2ʌ @S0;GZA *@GufK|PJ}#ԉTJ`(p(XVA:݈m-Yɾ^x{Y&YuWU_('[%bm `eſ `a4H%[웦kJop^\ys&n3Eـ}}0TL;`@[*JU.b\px$N&gɄ6BhL8h :ӭHRN >Њ݂K7t⽊ [(b ۢЁ5[7@$Te`Œ(eeZneHeee fB X=m@fR0.#fuFhMmdhn]G\ph8@H-hSoڂ^{4h- $<(pP0e5HII%T[_5C#$t9+UHcfcmpcfgI#i&^|{6~c% ^ 0X>!~a8jFj:a".%kፀaQ&#X˚ijd#!"A(s8 ;Xcu}$eiڞʾ:h @«(FHD~6 zʨP hLi Jm^~mI j-ւO* Wn x n'Ɔ*]./MG]Ȩ|n5-"(hZ@Z0TPFE<@ ԋN߽<ы pH6d̞?vJ l Ű ։8^G%NqXiFaꄨ- rrЂɦQVr['= r`*+rri L ҆f78ؒې<j8TIe?V0CGtC-crȘdqtJq4d8mBPQ'uQ8+TWUgVwWXYZ[\]^_`a'b7cGdWegfwghijklmuzk"q'r7sGtW7Go'_`;HB@Yu}~xY^pwwHF+N O߀xxO(+Va#BxWgwy]wH+h62JH7p'זGz+ #XxO@(thO;X@w{bY{'$XUÇ!ěwLJȯBXz{DO7=]NTKOjҷ??xxOD%YmyGWw7X/Y}owGO׆[~Wgvx|LOHjD~,h 5z=h Ņ 7r#Ȑ"G,i$ʔ*Wl%̘2gҬi&Μ:w<Ġ ,j(ҤJ2m)ԨRRj*֬Zr+ذbǒ-k,ڴjײmӀ;webcit-8.24-dfsg.orig/tiny_mce/themes/advanced/img/flash.gif0000644000175000017500000000035712271477123023606 0ustar michaelmichaelGIF89aj}nVjz\䂏8Z(J!,@I}Hz3F ba 0D% BQ`A E/p! pL%M'!*@S4fH_iVq 3>* G4ac eg7j#BG&-ier]0H =G48}x;webcit-8.24-dfsg.orig/tiny_mce/themes/advanced/img/video.gif0000644000175000017500000000112512271477123023611 0ustar michaelmichaelGIF89afWWWKKKwww:::eeehhh888nnn|||iii^p,K}?ccc\OEO`جˮ\\\6pbbb---lllzWMMMtttPeibgjBNNNhBBBlm555n%%%y[[[ZQ```Usss mmmLLL̈́999xvvv؄qqq===^^^|owr____ؘHHHVVVrfffcsq䙅AAAtQQQ///VPPP222xzzz!f,f'D;_V9, %Y1X*@EH]3  "&6 [e !IQ# 2 .UJBW47S8˂ GcA=/LM)PZ$-\'R>N(?b@hKxy<б$C"A T` ;webcit-8.24-dfsg.orig/tiny_mce/themes/advanced/img/iframe.gif0000644000175000017500000000113012271477123023742 0ustar michaelmichaelGIF89a[{ܒfyuvնZ|X{z`yooSssVvaSs\~psҀTuzڒ\~XzlWychlQqQrdrTupn_z^![,[[76 3P2'>4[VU[[Y@[% EG:#$I.![A OH08=Z[ ,1Q;[ NL[)9F <[&R Ɩ+<݂BdETKXr ,/*d % \rP ;webcit-8.24-dfsg.orig/tiny_mce/themes/advanced/img/trans.gif0000644000175000017500000000005312271477123023631 0ustar michaelmichaelGIF89a!,D;webcit-8.24-dfsg.orig/tiny_mce/themes/advanced/img/colorpicker.jpg0000644000175000017500000000503012271477123025031 0ustar michaelmichaelJFIF>CREATOR: gd-jpeg v1.0 (using IJG JPEG v62), default quality C    $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222,"1A!"2!" ?4xzu!^Y:5xo(D\;>5ӭF"3F_fX(˦>ZY9(r֮JFDw&m_YcƟD343^*晚FiE1/}K_oC~?G+?]#}7‡\y8Ly3۳OnO=cg?L#2Ŗ(ǖ8\SGlq=\Qq-kZ+PByL2lNZiv,yBYǞO=:| Nu<}9^?O+DWקu85h΍4e4`IYy)rQVJEy2g 4ХǟD34G)ddc'b/93Ng>\ 9^Dyۯ=|ٮ6:N?dq峟>ɌuC Wcv>\p8]hW?M+B %䰥bu : 䚫]X ^5pON?ztx~E[Yp_NgG-E;Qྜྷ. zr/G^uF]1Cay? W&)ۢb'rSYD 9'Wr\pEUr)qѓ)2S92sm2g8ǧ;sCLdsno_>}oǖ8V2ьqqƜBqqU?C x9KaG!+av`,$+`,6XKYzt8XwM$W]q7HZ:<5ק3h,՛F+0/ut7[ 6BYNg0(E_b(gmGeJ9MFn9JRftLy9fc ci掗,`Rs9V2͒Z1Fuc|XFBV6‡b1 =׃lv, {0b 64V*tmUuf(8hٳq6qPzHJ7qV-9u@~u.iPw7G`YF麤귘k"RQ9HG%)LE r(3ȣӻ#f鏕ntyc,o|fv0\/iyȵ~ 2Ac'b9;1X!Ƭg 33 wh,.՛+`,6YubFXt^V?5qƮ6Yqз zQqAnf]~3PZjTV4@ꕪ=RZ@(oJ?4QE)rQp3y)GC$ǦnFNF 63rAQaɇ%-r!_g'f+979Q~e s;΃35A~`l2Fl]a~=bh؍'3v? ?=H-ѫd?aP lu h?LzjhZh% _mA*T")K}vV/tT2Lz'l?dDDIqqpaQ&Mf[+&Yə2d; L3!(.(,t*, X[4V`K,]ΕKE ʭU٤̲rcT?44铃f*‚ڲ D6u%Z2pkiy93Wu["z'F5Tm2'PFB6fC2vfҁ;7 QD$Hto6J}+4}ҺJt> H@( UGC%2iGt_WO;Uhһw͢U]Q;_a;YIO_a;]#vha]'TUUeE `l]Yu"nU2uʿ˿e2)W}&]'N}TT}/~t>ҍt>>]DDXE'DӴG:8O'D'i#:9:'H:D;DCڑ'DWHވ(:ND퐝/D;'dDG 'I"N"webcit-8.24-dfsg.orig/tiny_mce/themes/advanced/langs/0000755000175000017500000000000012271477123022345 5ustar michaelmichaelwebcit-8.24-dfsg.orig/tiny_mce/themes/advanced/langs/bg_dlg.js0000644000175000017500000001237012271477123024124 0ustar michaelmichaeltinyMCE.addI18n('bg.advanced_dlg',{"link_list":"\u0421\u043f\u0438\u0441\u044a\u043a \u043b\u0438\u043d\u043a\u043e\u0432\u0435","link_is_external":"URL-\u0442\u043e \u043a\u043e\u0435\u0442\u043e \u0432\u044a\u0432\u0435\u0434\u043e\u0445\u0442\u0435 \u0435 \u0432\u044a\u043d\u0448\u043d\u0430 \u0445\u0438\u043f\u0435\u0440\u0432\u0440\u044a\u0437\u043a\u0430, \u0436\u0435\u043b\u0430\u0435\u0442\u0435 \u043b\u0438 \u0434\u0430 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u0435 \u043d\u0443\u0436\u043d\u0438\u044f\u0442 http:// \u043f\u0440\u0435\u0444\u0438\u043a\u0441?","link_is_email":"URL-\u0442\u043e \u043a\u043e\u0435\u0442\u043e \u0432\u044a\u0432\u0435\u0434\u043e\u0445\u0442\u0435 \u0435 email \u0430\u0434\u0440\u0435\u0441, \u0436\u0435\u043b\u0430\u0435\u0442\u0435 \u043b\u0438 \u0434\u0430 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u0435 \u043d\u0443\u0436\u043d\u0438\u044f\u0442 mailto: \u043f\u0440\u0435\u0444\u0438\u043a\u0441?","link_titlefield":"\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u0435","link_target_blank":"\u041e\u0442\u0432\u043e\u0440\u0438 \u0445\u0438\u043f\u0435\u0440\u0432\u0440\u044a\u0437\u043a\u0430\u0442\u0430 \u0432 \u043d\u043e\u0432 \u043f\u0440\u043e\u0437\u043e\u0440\u0435\u0446","link_target_same":"\u041e\u0442\u0432\u043e\u0440\u0438 \u0445\u0438\u043f\u0435\u0440\u0432\u0440\u044a\u0437\u043a\u0430\u0442\u0430 \u0432 \u0441\u044a\u0449\u0438\u044f\u0442 \u043f\u0440\u043e\u0437\u043e\u0440\u0435\u0446","link_target":"\u0426\u0435\u043b","link_url":"URL \u043d\u0430 \u0445\u0438\u043f\u0435\u0440\u0432\u0440\u044a\u0437\u043a\u0430","link_title":"\u0412\u043c\u044a\u043a\u043d\u0438/\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0430\u0439 \u0445\u0438\u043f\u0435\u0440\u0432\u0440\u044a\u0437\u043a\u0430","image_align_right":"\u0414\u044f\u0441\u043d\u043e","image_align_left":"\u041b\u044f\u0432\u043e","image_align_textbottom":"\u0422\u0435\u043a\u0441\u0442 \u0434\u043e\u043b\u0443","image_align_texttop":"\u0422\u0435\u043a\u0441\u0442 \u0433\u043e\u0440\u0435","image_align_bottom":"\u0414\u043e\u043b\u0443","image_align_middle":"\u0426\u0435\u043d\u0442\u0440\u0438\u0440\u0430\u043d\u0435","image_align_top":"\u0413\u043e\u0440\u0435","image_align_baseline":"\u0411\u0430\u0437\u043e\u0432\u0430 \u043b\u0438\u043d\u0438\u044f","image_align":"\u041f\u043e\u0434\u0440\u0430\u0432\u043d\u044f\u0432\u0430\u043d\u0435","image_hspace":"\u0425\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u043d\u043e \u0440\u0430\u0437\u0441\u0442\u043e\u044f\u043d\u0438\u0435","image_vspace":"\u0412\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u043d\u043e \u0440\u0430\u0437\u0441\u0442\u043e\u044f\u043d\u0438\u0435","image_dimensions":"\u0420\u0430\u0437\u043c\u0435\u0440\u0438","image_alt":"\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043d\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430","image_list":"\u0421\u043f\u0438\u0441\u044a\u043a \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438","image_border":"\u0420\u0430\u043c\u043a\u0430","image_src":"URL \u043d\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430","image_title":"\u0412\u043c\u044a\u043a\u043d\u0438/\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0430\u0439 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430","charmap_title":"\u0418\u0437\u0431\u0435\u0440\u0435\u0442\u0435 \u0441\u0438\u043c\u0432\u043e\u043b","colorpicker_name":"\u0418\u043c\u0435:","colorpicker_color":"\u0426\u0432\u044f\u0442:","colorpicker_named_title":"\u0418\u043c\u0435\u043d\u0443\u0432\u0430\u043d\u0438 \u0446\u0432\u0435\u0442\u043e\u0432\u0435","colorpicker_named_tab":"\u0418\u043c\u0435\u043d\u0443\u0432\u0430\u043d\u0438","colorpicker_palette_title":"\u0426\u0432\u0435\u0442\u043e\u0432\u0430 \u043f\u0430\u043b\u0438\u0442\u0440\u0430","colorpicker_palette_tab":"\u041f\u0430\u043b\u0438\u0442\u0440\u0430","colorpicker_picker_title":"\u0418\u0437\u0431\u043e\u0440 \u043d\u0430 \u0446\u0432\u044f\u0442","colorpicker_picker_tab":"\u0418\u0437\u0431\u043e\u0440","colorpicker_title":"\u0418\u0437\u0431\u0435\u0440\u0435\u0442\u0435 \u0446\u0432\u044f\u0442","code_wordwrap":"\u041f\u0440\u0435\u043d\u043e\u0441 \u043d\u0430 \u0434\u0443\u043c\u0438","code_title":"\u0420\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u043d\u0430 HTML","anchor_name":"\u0418\u043c\u0435 \u043d\u0430 \u043a\u043e\u0442\u0432\u0430\u0442\u0430","anchor_title":"\u0412\u043c\u044a\u043a\u043d\u0438/\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0430\u0439 \u043a\u043e\u0442\u0432\u0430","about_loaded":"\u0417\u0430\u0440\u0435\u0434\u0435\u043d\u0438 \u0434\u043e\u0431\u0430\u0432\u043a\u0438","about_version":"\u0412\u0435\u0440\u0441\u0438\u044f","about_author":"\u0410\u0432\u0442\u043e\u0440","about_plugin":"\u0414\u043e\u0431\u0430\u0432\u043a\u0430","about_plugins":"\u0414\u043e\u0431\u0430\u0432\u043a\u0438","about_license":"\u041b\u0438\u0446\u0435\u043d\u0437","about_help":"\u041f\u043e\u043c\u043e\u0449","about_general":"\u041e\u0442\u043d\u043e\u0441\u043d\u043e","about_title":"\u041e\u0442\u043d\u043e\u0441\u043d\u043e TinyMCE","anchor_invalid":"\u041c\u043e\u043b\u044f \u0437\u0430\u0434\u0430\u0439\u0442\u0435 \u0432\u0430\u043b\u0438\u0434\u043d\u043e \u0438\u043c\u0435 \u0437\u0430 \u043a\u043e\u0442\u0432\u0430.","accessibility_help":"Accessibility Help","accessibility_usage_title":"General Usage"});webcit-8.24-dfsg.orig/tiny_mce/themes/advanced/langs/es.js0000644000175000017500000000510712271477123023315 0ustar michaelmichaeltinyMCE.addI18n('es.advanced',{"underline_desc":"Subrayado (Ctrl+U)","italic_desc":"Cursiva (Ctrl+I)","bold_desc":"Negrita (Ctrl+B)",dd:"Descripci\u00f3n de definici\u00f3n",dt:"T\u00e9rmino de definici\u00f3n",samp:"Ejemplo de c\u00f3digo",code:"C\u00f3digo",blockquote:"Cita",h6:"Encabezado 6",h5:"Encabezado 5",h4:"Encabezado 4",h3:"Encabezado 3",h2:"Encabezado 2",h1:"Encabezado 1",pre:"Preformateado",address:"Direcci\u00f3n",div:"Div",paragraph:"P\u00e1rrafo",block:"Formato",fontdefault:"Fuente","font_size":"Tama\u00f1o","style_select":"Estilos","more_colors":"M\u00e1s colores","toolbar_focus":"Ir a los botones de herramientas - Alt+Q, Ir al editor - Alt-Z, Ir a la ruta del elemento - Alt-X",newdocument:" \u00bfSeguro que desea limpiar todo el contenido?",path:"Ruta","clipboard_msg":"Copiar/Cortar/Pegar no se encuentra disponible en Mozilla y Firefox.\n \u00bfQuiere m\u00e1s informaci\u00f3n sobre este tema?","blockquote_desc":"Cita","help_desc":"Ayuda","newdocument_desc":"Nuevo documento","image_props_desc":"Propiedades de imagen","paste_desc":"Pegar","copy_desc":"Copiar","cut_desc":"Cortar","anchor_desc":"Insertar/editar ancla","visualaid_desc":"Mostrar/ocultar l\u00ednea de gu\u00eda/elementos invisibles","charmap_desc":"Insertar caracteres personalizados","backcolor_desc":"Elegir color de fondo","forecolor_desc":"Elegir color del texto","custom1_desc":"Su descripci\u00f3n personal aqu\u00ed","removeformat_desc":"Limpiar formato","hr_desc":"Insertar regla horizontal","sup_desc":"Super\u00edndice","sub_desc":"Sub\u00edndice","code_desc":"Editar c\u00f3digo HTML","cleanup_desc":"Limpiar c\u00f3digo basura","image_desc":"Insertar/editar imagen","unlink_desc":"Quitar hiperv\u00ednculo","link_desc":"Insertar/editar hiperv\u00ednculo","redo_desc":"Rehacer (Ctrl+Y)","undo_desc":"Deshacer (Ctrl+Z)","indent_desc":"Aumentar sangr\u00eda","outdent_desc":"Reducir sangr\u00eda","numlist_desc":"Lista ordenada","bullist_desc":"Lista desordenada","justifyfull_desc":"Justificar","justifyright_desc":"Alinear a la derecha","justifycenter_desc":"Alinear al centro","justifyleft_desc":"Alinear a la izquierda","striketrough_desc":"Tachado","help_shortcut":"Presiones ALT-F10 para la barra de herramientas. Presione ALT-0 para ayuda.","rich_text_area":"\u00c1rea de texto con formato","shortcuts_desc":"Ayuda de accesibilidad",toolbar:"Barra de Herramientas","anchor_delta_height":"","anchor_delta_width":"","charmap_delta_height":"","charmap_delta_width":"","colorpicker_delta_height":"","colorpicker_delta_width":"","link_delta_height":"","link_delta_width":"","image_delta_height":"","image_delta_width":""});webcit-8.24-dfsg.orig/tiny_mce/themes/advanced/langs/fr_dlg.js0000644000175000017500000000421512271477123024142 0ustar michaelmichaeltinyMCE.addI18n('fr.advanced_dlg',{"link_list":"Liste de liens","link_is_external":"L\'URL que vous avez saisie semble \u00eatre une adresse web externe. Souhaitez-vous ajouter le pr\u00e9fixe \u00ab http:// \u00bb ?","link_is_email":"L\'URL que vous avez saisie semble \u00eatre une adresse e-mail, souhaitez-vous ajouter le pr\u00e9fixe \u00ab mailto: \u00bb ?","link_titlefield":"Titre","link_target_blank":"Ouvrir dans une nouvelle fen\u00eatre","link_target_same":"Ouvrir dans la m\u00eame fen\u00eatre","link_target":"Cible","link_url":"URL du lien","link_title":"Ins\u00e9rer / \u00e9diter un lien","image_align_right":"Droite (flottant)","image_align_left":"Gauche (flottant)","image_align_textbottom":"Texte en bas","image_align_texttop":"Texte en haut","image_align_bottom":"En bas","image_align_middle":"Au milieu","image_align_top":"En haut","image_align_baseline":"Normal","image_align":"Alignement","image_hspace":"Espacement horizontal","image_vspace":"Espacement vertical","image_dimensions":"Dimensions","image_alt":"Description de l\'image","image_list":"Liste d\'images","image_border":"Bordure","image_src":"URL de l\'image","image_title":"Ins\u00e9rer / \u00e9diter une image","charmap_title":"Choisir le caract\u00e8re \u00e0 ins\u00e9rer","colorpicker_name":"Nom :","colorpicker_color":"Couleur :","colorpicker_named_title":"Couleurs nomm\u00e9es","colorpicker_named_tab":"Noms","colorpicker_palette_title":"Couleurs de la palette","colorpicker_palette_tab":"Palette","colorpicker_picker_title":"Nuancier","colorpicker_picker_tab":"Nuancier","colorpicker_title":"Choisir une couleur","code_wordwrap":"Retour \u00e0 la ligne","code_title":"\u00c9diteur de source HTML","anchor_name":"Nom de l\'ancre","anchor_title":"Ins\u00e9rer / \u00e9diter une ancre","about_loaded":"Plugins charg\u00e9s","about_version":"Version","about_author":"Auteur","about_plugin":"Plugin","about_plugins":"Plugins","about_license":"Licence","about_help":"Aide","about_general":"\u00c0 propos","about_title":"\u00c0 propos de TinyMCE","anchor_invalid":"Veuillez sp\u00e9cifier un nom d\'ancre valide.","accessibility_help":"Accessibility Help","accessibility_usage_title":"General Usage"});webcit-8.24-dfsg.orig/tiny_mce/themes/advanced/langs/zh-cn_dlg.js0000644000175000017500000000476012271477123024557 0ustar michaelmichaeltinyMCE.addI18n('zh-cn.advanced_dlg',{"link_list":"\u94fe\u63a5\u5217\u8868","link_is_external":"\u60a8\u8f93\u5165\u7684URL\u662f\u4e00\u4e2a\u5916\u90e8\u94fe\u63a5\uff0c\u662f\u5426\u8981\u52a0\u4e0a\"http://\"\u524d\u7f00\uff1f","link_is_email":"\u8f93\u5165URL\u662f\u7535\u5b50\u90ae\u4ef6\u5730\u5740\uff0c\u662f\u5426\u9700\u8981\u52a0\"mailto:\"\u524d\u7f00\uff1f","link_titlefield":"\u6807\u9898","link_target_blank":"\u5728\u65b0\u7a97\u53e3\u6253\u5f00","link_target_same":"\u5728\u5f53\u524d\u7a97\u53e3\u6253\u5f00","link_target":"\u6253\u5f00\u65b9\u5f0f","link_url":"\u8d85\u94fe\u63a5URL","link_title":"\u63d2\u5165/\u7f16\u8f91 \u8d85\u94fe\u63a5","image_align_right":"\u53f3\u5bf9\u9f50","image_align_left":"\u5de6\u5bf9\u9f50","image_align_textbottom":"\u6587\u5b57\u4e0b\u65b9","image_align_texttop":"\u6587\u5b57\u4e0a\u65b9","image_align_bottom":"\u5e95\u7aef\u5bf9\u9f50","image_align_middle":"\u5c45\u4e2d\u5bf9\u9f50","image_align_top":"\u9876\u7aef\u5bf9\u9f50","image_align_baseline":"\u5e95\u7ebf","image_align":"\u5bf9\u9f50","image_hspace":"\u6c34\u5e73\u8ddd\u79bb","image_vspace":"\u5782\u76f4\u8ddd\u79bb","image_dimensions":"\u5c3a\u5bf8","image_alt":"\u56fe\u7247\u63cf\u8ff0","image_list":"\u56fe\u7247\u5217\u8868","image_border":"\u8fb9\u6846","image_src":"\u56fe\u7247\u94fe\u63a5","image_title":"\u63d2\u5165/\u7f16\u8f91 \u56fe\u7247","charmap_title":"\u9009\u62e9\u81ea\u5b9a\u4e49\u7b26\u53f7","colorpicker_name":"\u540d\u79f0\uff1a","colorpicker_color":"\u989c\u8272\uff1a","colorpicker_named_title":"\u547d\u540d\u989c\u8272","colorpicker_named_tab":"\u547d\u540d\u989c\u8272","colorpicker_palette_title":"\u8c03\u8272\u677f\u989c\u8272","colorpicker_palette_tab":"\u8c03\u8272\u677f","colorpicker_picker_title":"\u989c\u8272\u62fe\u53d6","colorpicker_picker_tab":"\u62fe\u53d6","colorpicker_title":"\u9009\u62e9\u989c\u8272","code_wordwrap":"\u81ea\u52a8\u6362\u884c","code_title":"HTML\u4ee3\u7801\u7f16\u8f91\u5668","anchor_name":"\u951a\u540d\u79f0","anchor_title":"\u63d2\u5165/\u7f16\u8f91 \u951a","about_loaded":"\u5df2\u8f7d\u5165\u7684\u63d2\u4ef6","about_version":"\u7248\u672c","about_author":"\u4f5c\u8005","about_plugin":"\u63d2\u4ef6","about_plugins":"\u63d2\u4ef6","about_license":"\u8bb8\u53ef\u534f\u8bae","about_help":"\u5e2e\u52a9","about_general":"\u5173\u4e8e","about_title":"\u5173\u4e8eTinyMCE","anchor_invalid":"\u8bf7\u6307\u5b9a\u4e00\u4e2a\u6709\u6548\u7684\u951a\u540d\u79f0\u3002","accessibility_help":"Accessibility Help","accessibility_usage_title":"General Usage"});webcit-8.24-dfsg.orig/tiny_mce/themes/advanced/langs/et.js0000644000175000017500000000470612271477123023322 0ustar michaelmichaeltinyMCE.addI18n('et.advanced',{"underline_desc":"Allajoonitud (Ctrl+U)","italic_desc":"Kursiiv (Ctrl+I)","bold_desc":"Rasvane (Ctrl+B)",dd:"Defineeringu kirjeldus",dt:"Defineeringu tingimus",samp:"Koodi n\u00e4ide",code:"Kood",blockquote:"Plokkviide",h6:"Heading 6",h5:"Heading 5",h4:"Heading 4",h3:"Heading 3",h2:"Heading 2",h1:"Heading 1",pre:"Eelformeeritud",address:"Aadress",div:"Div",paragraph:"Paragraaf",block:"Formaat",fontdefault:"Font","font_size":"Fondi suurus","style_select":"Stiilid","more_colors":"Rohkem v\u00e4rve","toolbar_focus":"H\u00fcppa t\u00f6\u00f6riista nuppudele - Alt+Q, H\u00fcppa redigeerijale - Alt-Z, H\u00fcppa elemendi teele - Alt-X",newdocument:"Oled sa kindel, et tahad kustutada k\u00f5ik sisud?",path:"Tee","clipboard_msg":"Kopeeri/L\u00f5ika/Kleebi ei ole Mozillas ja Firefoxis saadaval. Kas soovid rohkem infot selle probleemi kohta?","blockquote_desc":"Plokkviide","help_desc":"Abi","newdocument_desc":"Uus dokument","image_props_desc":"Pildi kirjeldus","paste_desc":"Kleebi","copy_desc":"Kopeeri","cut_desc":"L\u00f5ika","anchor_desc":"Sisesta/redigeeri ankur","visualaid_desc":"L\u00fclita \u00fcmber juhtjooned/n\u00e4htamatud elemendid","charmap_desc":"Sisesta kohandatud kirjam\u00e4rk","backcolor_desc":"Vali tausta v\u00e4rv","forecolor_desc":"Vali teksti v\u00e4rv","custom1_desc":"Teie kohandatud kirjeldus siia","removeformat_desc":"Eemalda vormindus","hr_desc":"Sisesta horisontaalne joonlaud","sup_desc":"\u00dclaindeks","sub_desc":"Alaindeks","code_desc":"Redigeeri HTML l\u00e4htekoodi","cleanup_desc":"Puhasta segane kood","image_desc":"Sisesta/redigeeri pilt","unlink_desc":"Eemalda link","link_desc":"Sisesta/redigeeri link","redo_desc":"Tee uuesti (Ctrl+Y)","undo_desc":"V\u00f5ta tagasi (Ctrl+Z)","indent_desc":"Taanda sisse","outdent_desc":"Taanda v\u00e4lja","numlist_desc":"Korrap\u00e4rane loetelu","bullist_desc":"Ebakorrap\u00e4rane loetelu","justifyfull_desc":"T\u00e4isjoondus","justifyright_desc":"Parem joondus","justifycenter_desc":"Keskjoondus","justifyleft_desc":"Vasak joondus","striketrough_desc":"L\u00e4bijoonitud","anchor_delta_height":"","anchor_delta_width":"","charmap_delta_height":"","charmap_delta_width":"","colorpicker_delta_height":"","colorpicker_delta_width":"","link_delta_height":"","link_delta_width":"","image_delta_height":"","image_delta_width":"","help_shortcut":"Press ALT-F10 for toolbar. Press ALT-0 for help","rich_text_area":"Rich Text Area","shortcuts_desc":"Accessability Help",toolbar:"Toolbar"});webcit-8.24-dfsg.orig/tiny_mce/themes/advanced/langs/it.js0000644000175000017500000000532312271477123023322 0ustar michaelmichaeltinyMCE.addI18n('it.advanced',{"underline_desc":"Sottolineato (Ctrl+U)","italic_desc":"Corsivo (Ctrl+I)","bold_desc":"Grassetto (Ctrl+B)",dd:"Descrizione definizione",dt:"Termine definizione",samp:"Esempio codice",code:"Codice",blockquote:"Testo quotato",h6:"Intestazione 6",h5:"Intestazione 5",h4:"Intestazione 4",h3:"Intestazione 3",h2:"Intestazione 2",h1:"Intestazione 1",pre:"Preformattato",address:"Indirizzo",div:"Div",paragraph:"Paragrafo",block:"Formato",fontdefault:"Famiglia carattere","font_size":"Grandezza carattere","style_select":"Stili","anchor_delta_height":"anchor_delta_height","anchor_delta_width":"anchor_delta_width","charmap_delta_height":"charmap_delta_height","charmap_delta_width":"charmap_delta_width","colorpicker_delta_height":"colorpicker_delta_height","colorpicker_delta_width":"colorpicker_delta_width","link_delta_height":"link_delta_height","link_delta_width":"link_delta_width","image_delta_height":"image_delta_height","image_delta_width":"image_delta_width","more_colors":"Colori aggiuntivi","toolbar_focus":"Vai ai pulsanti strumento - Alt+Q, Vai all\'editor - Alt-Z, Vai al percorso dell\'elemento - Alt-X",newdocument:"Sei sicuro di voler cancellare tutti i contenuti?",path:"Percorso","clipboard_msg":"Copia/Taglia/Incolla non \u00e8 disponibile in Mozilla e Firefox..\nSi desidera avere maggiori informazioni su questo problema?","blockquote_desc":"Testo quotato","help_desc":"Aiuto","newdocument_desc":"Nuovo documento","image_props_desc":"Propriet\u00e0 immagine","paste_desc":"Incolla","copy_desc":"Copia","cut_desc":"Taglia","anchor_desc":"Inserisci/modifica ancora","visualaid_desc":"Mostra/nascondi linee guida/elementi invisibili","charmap_desc":"Inserisci carattere speciale","backcolor_desc":"Seleziona colore sfondo","forecolor_desc":"Seleziona colore testo","custom1_desc":"La tua descrizione personalizzata qui","removeformat_desc":"Rimuovi formattazione","hr_desc":"Inserisci riga orizzontale","sup_desc":"Apice","sub_desc":"Pedice","code_desc":"Modifica sorgente HTML","cleanup_desc":"Pulisci codice disordinato","image_desc":"Inserisci/modifica immagine","unlink_desc":"Togli collegamento","link_desc":"Inserisci/modifica collegamento","redo_desc":"Ripristina (Ctrl+Y)","undo_desc":"Annulla (Ctrl+Z)","indent_desc":"Sposta verso interno","outdent_desc":"Sposta verso esterno","numlist_desc":"Lista ordinata","bullist_desc":"Lista non ordinata","justifyfull_desc":"Giustifica","justifyright_desc":"Allinea a destra","justifycenter_desc":"Centra","justifyleft_desc":"Allinea a sinistra","striketrough_desc":"Barrato","help_shortcut":"Premi ALT-F10 Per la barra degli strumenti. Premi ALT-0 per l\'aiuto","rich_text_area":"Rich Text Area","shortcuts_desc":"Aiuto accessibilit\u00e0",toolbar:"Barra degli strumenti"});webcit-8.24-dfsg.orig/tiny_mce/themes/advanced/langs/de_dlg.js0000644000175000017500000000377112271477123024131 0ustar michaelmichaeltinyMCE.addI18n('de.advanced_dlg',{"link_list":"Linkliste","link_is_external":"Diese Adresse scheint ein externer Link zu sein. M\u00f6chten Sie das dazu ben\u00f6tigte \"http://\" voranstellen?","link_is_email":"Diese Adresse scheint eine E-Mail-Adresse zu sein. M\u00f6chten Sie das dazu ben\u00f6tigte \"mailto:\" voranstellen?","link_titlefield":"Titel","link_target_blank":"Neues Fenster \u00f6ffnen","link_target_same":"Im selben Fenster \u00f6ffnen","link_target":"Fenster","link_url":"Adresse","link_title":"Link einf\u00fcgen/ver\u00e4ndern","image_align_right":"Rechts","image_align_left":"Links","image_align_textbottom":"Unten im Text","image_align_texttop":"Oben im Text","image_align_bottom":"Unten","image_align_middle":"Mittig","image_align_top":"Oben","image_align_baseline":"Zeile","image_align":"Ausrichtung","image_hspace":"Horizontaler Abstand","image_vspace":"Vertikaler Abstand","image_dimensions":"Abmessungen","image_alt":"Alternativtext","image_list":"Bilderliste","image_border":"Rahmen","image_src":"Adresse","image_title":"Bild einf\u00fcgen/ver\u00e4ndern","charmap_title":"Sonderzeichen","colorpicker_name":"Name:","colorpicker_color":"Farbe:","colorpicker_named_title":"Benannte Farben","colorpicker_named_tab":"Benannte Farben","colorpicker_palette_title":"Farbpalette","colorpicker_palette_tab":"Palette","colorpicker_picker_title":"Farbwahl","colorpicker_picker_tab":"Farbwahl","colorpicker_title":"Farbe","code_wordwrap":"Automatischer Zeilenumbruch","code_title":"HTML-Quellcode bearbeiten","anchor_name":"Name des Ankers","anchor_title":"Anker einf\u00fcgen/ver\u00e4ndern","about_loaded":"Geladene Plugins","about_version":"Version","about_author":"Urheber","about_plugin":"Plugin","about_plugins":"Plugins","about_license":"Lizenzbedingungen","about_help":"Hilfe","about_general":"\u00dcber","about_title":"\u00dcber TinyMCE","anchor_invalid":"Bitte geben Sie einen g\u00fcltigen Namen f\u00fcr den Anker ein!","accessibility_help":"Eingabehilfe","accessibility_usage_title":"Allgemeine Verwendung"});webcit-8.24-dfsg.orig/tiny_mce/themes/advanced/langs/fi_dlg.js0000644000175000017500000000413312271477123024130 0ustar michaelmichaeltinyMCE.addI18n('fi.advanced_dlg',{"link_list":"Linkkilista","link_is_external":"Antamasi osoite n\u00e4ytt\u00e4\u00e4 johtavan ulkopuoliselle sivustolle. Haluatko lis\u00e4t\u00e4 linkin eteen http://-etuliitteen? (suositus)","link_is_email":"Antamasi osoite n\u00e4ytt\u00e4\u00e4 olevan s\u00e4hk\u00f6postiosoite. Haluatko lis\u00e4t\u00e4 siihen mailto:-etuliitteen?","link_titlefield":"Otsikko","link_target_blank":"Avaa linkki uuteen ikkunaan","link_target_same":"Avaa linkki samassa ikkunassa","link_target":"Kohde","link_url":"Linkin osoite","link_title":"Lis\u00e4\u00e4/muuta linkki","image_align_right":"Oikealle","image_align_left":"Vasemmalle","image_align_textbottom":"Tekstin alaosaan","image_align_texttop":"Tekstin yl\u00e4osaan","image_align_bottom":"Alas","image_align_middle":"Keskelle","image_align_top":"Yl\u00f6s","image_align_baseline":"Tekstin tasossa","image_align":"Tasaus","image_hspace":"Vaakasuuntainen tila","image_vspace":"Pystysuuntainen tila","image_dimensions":"Mitat","image_alt":"Kuvan kuvaus","image_list":"Kuvalista","image_border":"Reunus","image_src":"Kuvan osoite","image_title":"Lis\u00e4\u00e4/muokkaa kuvaa","charmap_title":"Valitse erikoismerkki","colorpicker_name":"Nimi:","colorpicker_color":"V\u00e4ri:","colorpicker_named_title":"Nimetyt v\u00e4rit","colorpicker_named_tab":"Nimetty","colorpicker_palette_title":"V\u00e4ripaletti","colorpicker_palette_tab":"Paletti","colorpicker_picker_title":"V\u00e4rin valitsin","colorpicker_picker_tab":"Valitsin","colorpicker_title":"Valitse v\u00e4ri","code_wordwrap":"Automaattinen rivinvaihto","code_title":"HTML-koodin muokkaus","anchor_name":"Ankkurin nimi","anchor_title":"Liit\u00e4/muokkaa ankkuria","about_loaded":"Ladatut lis\u00e4osat","about_version":"Versio","about_author":"Kirjoittaja","about_plugin":"Lis\u00e4osa","about_plugins":"Lis\u00e4osat","about_license":"Lisenssi","about_help":"Ohje","about_general":"Tietoja","about_title":"Tietoja TinyMCE:st\u00e4","anchor_invalid":"Ole hyv\u00e4 ja anna hyv\u00e4ksytty ankkurin nimi.","accessibility_help":"Saavutettavuusohje","accessibility_usage_title":"Yleinen k\u00e4ytt\u00f6"});webcit-8.24-dfsg.orig/tiny_mce/themes/advanced/langs/hu.js0000644000175000017500000000614612271477123023326 0ustar michaelmichaeltinyMCE.addI18n('hu.advanced',{"underline_desc":"Al\u00e1h\u00fazott (Ctrl+U)","italic_desc":"D\u0151lt (Ctrl+I)","bold_desc":"F\u00e9lk\u00f6v\u00e9r (Ctrl+B)",dd:"Defin\u00edci\u00f3 a defin\u00edci\u00f3s list\u00e1ban",dt:"Defini\u00e1lt kifejez\u00e9s a defin\u00edci\u00f3s list\u00e1ban",samp:"K\u00f3d minta",code:"K\u00f3d",blockquote:"Id\u00e9zet",h6:"C\u00edmsor 6",h5:"C\u00edmsor 5",h4:"C\u00edmsor 4",h3:"C\u00edmsor 3",h2:"C\u00edmsor 2",h1:"C\u00edmsor 1",pre:"El\u0151form\u00e1zott",address:"C\u00edm",div:"Div",paragraph:"Bekezd\u00e9s",block:"Form\u00e1tum",fontdefault:"Bet\u0171t\u00edpus","font_size":"Bet\u0171m\u00e9ret","style_select":"St\u00edlusok","image_delta_height":"","image_delta_width":"","more_colors":"Tov\u00e1bbi sz\u00ednek","toolbar_focus":"Eszk\u00f6zgombokra ugr\u00e1s - Alt+Q, Szerkeszt\u0151h\u00f6z ugr\u00e1s - Alt-Z, Elem\u00fatvonalhoz ugr\u00e1s - Alt-X",newdocument:"Biztosan t\u00f6rli az eddigi tartalmat?",path:"\u00datvonal","clipboard_msg":"A M\u00e1sol\u00e1s/Kiv\u00e1g\u00e1s/Besz\u00far\u00e1s funkci\u00f3k nem \u00e9rhet\u0151ek el Mozilla \u00e9s Firefox alatt. Szeretne t\u00f6bbet megtudni err\u0151l?","blockquote_desc":"Id\u00e9zet","help_desc":"Seg\u00edts\u00e9g","newdocument_desc":"\u00daj dokumentum","image_props_desc":"K\u00e9p tulajdons\u00e1gai","paste_desc":"Besz\u00far\u00e1s","copy_desc":"M\u00e1sol\u00e1s","cut_desc":"Kiv\u00e1g\u00e1s","anchor_desc":"Horgony besz\u00far\u00e1sa/szerkeszt\u00e9se","visualaid_desc":"Vezet\u0151vonalak/nem l\u00e1that\u00f3 elemek ki-/bekapcsol\u00e1sa","charmap_desc":"Speci\u00e1lis karakter besz\u00far\u00e1sa","backcolor_desc":"H\u00e1tt\u00e9rsz\u00edn v\u00e1laszt\u00e1sa","forecolor_desc":"Sz\u00f6vegsz\u00edn v\u00e1laszt\u00e1sa","custom1_desc":"Az \u00f6n egyedi le\u00edr\u00e1sa","removeformat_desc":"Form\u00e1z\u00e1s elt\u00e1vol\u00edt\u00e1sa","hr_desc":"V\u00edzszintes elv\u00e1laszt\u00f3 vonal besz\u00far\u00e1sa","sup_desc":"Fels\u0151 index","sub_desc":"Als\u00f3 index","code_desc":"HTML forr\u00e1s szerkeszt\u00e9se","cleanup_desc":"Minden form\u00e1z\u00e1s elt\u00e1vol\u00edt\u00e1sa","image_desc":"K\u00e9p besz\u00far\u00e1sa/szerkeszt\u00e9se","unlink_desc":"Link elt\u00e1vol\u00edt\u00e1sa","link_desc":"Link besz\u00far\u00e1sa/szerkeszt\u00e9se","redo_desc":"M\u00e9gis v\u00e9grehajt (Ctrl+Y)","undo_desc":"Visszavon\u00e1s (Ctrl+Z)","indent_desc":"Beh\u00faz\u00e1s n\u00f6vel\u00e9se","outdent_desc":"Beh\u00faz\u00e1s cs\u00f6kkent\u00e9se","numlist_desc":"Rendezett lista","bullist_desc":"Rendezetlen lista","justifyfull_desc":"Sorkiz\u00e1rt","justifyright_desc":"Jobbra z\u00e1rt","justifycenter_desc":"K\u00f6z\u00e9pre z\u00e1rt","justifyleft_desc":"Balra z\u00e1rt","striketrough_desc":"\u00c1th\u00fazott","help_shortcut":"Ugr\u00e1s az eszk\u00f6zt\u00e1rhoz: ALT-F10. Seg\u00edts\u00e9g: ALT-0.",toolbar:"Eszk\u00f6zt\u00e1r","anchor_delta_height":"","anchor_delta_width":"","charmap_delta_height":"","charmap_delta_width":"","colorpicker_delta_height":"","colorpicker_delta_width":"","link_delta_height":"","link_delta_width":"","rich_text_area":"Rich Text Area","shortcuts_desc":"Accessability Help"});webcit-8.24-dfsg.orig/tiny_mce/themes/advanced/langs/zh-cn.js0000644000175000017500000000576312271477123023735 0ustar michaelmichaeltinyMCE.addI18n('zh-cn.advanced',{"underline_desc":"\u4e0b\u5212\u7ebf(Ctrl U)","italic_desc":"\u659c\u4f53(Ctrl I)","bold_desc":"\u7c97\u4f53(Ctrl B)",dd:"\u5b9a\u4e49\u8bf4\u660e",dt:"\u672f\u8bed\u5b9a\u4e49",samp:"\u4ee3\u7801\u793a\u4f8b",code:"\u4ee3\u7801",blockquote:"\u5f15\u7528",h6:"\u6807\u98986",h5:"\u6807\u98985",h4:"\u6807\u98984",h3:"\u6807\u98983",h2:"\u6807\u98982",h1:"\u6807\u98981",pre:"\u9884\u683c\u5f0f\u6587\u672c",address:"\u5730\u5740",div:"Div\u533a\u5757",paragraph:"\u6bb5\u843d",block:"\u683c\u5f0f\u5316",fontdefault:"\u5b57\u4f53","font_size":"\u5b57\u4f53\u5927\u5c0f","style_select":"\u6837\u5f0f","more_colors":"\u66f4\u591a\u989c\u8272","toolbar_focus":"\u8f6c\u5230\u5de5\u5177\u6309\u94ae - Alt-Q\uff0c\u8f6c\u5230\u7f16\u8f91\u5668 - Alt-Z\uff0c\u8f6c\u5230\u5143\u7d20\u8def\u5f84 - Alt-X\u3002",newdocument:"\u60a8\u771f\u7684\u8981\u6e05\u9664\u6240\u6709\u5185\u5bb9\u5417\uff1f",path:"\u8def\u5f84","clipboard_msg":"\u5728Mozilla\u548cFirefox\u4e2d\u4e0d\u80fd\u4f7f\u7528\u590d\u5236/\u7c98\u8d34/\u526a\u5207\u3002n\u60a8\u8981\u67e5\u770b\u8be5\u95ee\u9898\u66f4\u591a\u7684\u4fe1\u606f\u5417\uff1f","blockquote_desc":"\u5f15\u7528","help_desc":"\u5e2e\u52a9","newdocument_desc":"\u65b0\u5efa","image_props_desc":"\u56fe\u7247\u5c5e\u6027","paste_desc":"\u7c98\u8d34","copy_desc":"\u590d\u5236","cut_desc":"\u526a\u5207","anchor_desc":"\u63d2\u5165/\u7f16\u8f91 \u951a","visualaid_desc":"\u663e\u793a/\u9690\u85cf \u5143\u7d20","charmap_desc":"\u63d2\u5165\u81ea\u5b9a\u4e49\u7b26\u53f7","backcolor_desc":"\u9009\u62e9\u80cc\u666f\u989c\u8272","forecolor_desc":"\u9009\u62e9\u6587\u672c\u989c\u8272","custom1_desc":"\u8fd9\u91cc\u662f\u60a8\u81ea\u5b9a\u4e49\u7684\u63cf\u8ff0","removeformat_desc":"\u6e05\u9664\u683c\u5f0f","hr_desc":"\u63d2\u5165\u6c34\u5e73\u7ebf","sup_desc":"\u4e0a\u6807","sub_desc":"\u4e0b\u6807","code_desc":"\u7f16\u8f91HTML\u6e90\u4ee3\u7801","cleanup_desc":"\u6e05\u9664\u65e0\u7528\u4ee3\u7801","image_desc":"\u63d2\u5165/\u7f16\u8f91 \u56fe\u7247","unlink_desc":"\u53d6\u6d88\u8d85\u94fe\u63a5","link_desc":"\u63d2\u5165/\u7f16\u8f91 \u8d85\u94fe\u63a5","redo_desc":"\u6062\u590d (Ctrl Y)","undo_desc":"\u64a4\u9500 (Ctrl Z)","indent_desc":"\u589e\u52a0\u7f29\u8fdb","outdent_desc":"\u51cf\u5c11\u7f29\u8fdb","numlist_desc":"\u7f16\u53f7\u5217\u8868","bullist_desc":"\u9879\u76ee\u5217\u8868","justifyfull_desc":"\u4e24\u7aef\u5bf9\u9f50","justifyright_desc":"\u53f3\u5bf9\u9f50","justifycenter_desc":"\u5c45\u4e2d","justifyleft_desc":"\u5de6\u5bf9\u9f50","striketrough_desc":"\u5220\u9664\u7ebf","help_shortcut":"\u6309 ALT-F10 \u5b9a\u4f4d\u5230\u5de5\u5177\u680f.\u6309 ALT-0 \u83b7\u53d6\u5e2e\u52a9\u3002","rich_text_area":"\u5bcc\u6587\u672c\u533a","shortcuts_desc":"\u8f85\u52a9\u8bf4\u660e",toolbar:"\u5de5\u5177\u680f","anchor_delta_height":"","anchor_delta_width":"","charmap_delta_height":"","charmap_delta_width":"","colorpicker_delta_height":"","colorpicker_delta_width":"","link_delta_height":"","link_delta_width":"","image_delta_height":"","image_delta_width":""});webcit-8.24-dfsg.orig/tiny_mce/themes/advanced/langs/et_dlg.js0000644000175000017500000000364312271477123024147 0ustar michaelmichaeltinyMCE.addI18n('et.advanced_dlg',{"link_list":"Lingi loetelu","link_is_external":"URL, mille sisestasite, tundub olevat v\u00e4line link, kas soovite, et lisataks http:// eesliite?","link_is_email":"URL, mille te sisestasite, tundub olevat emaili aadress, kas soovite, et lisataks mailto: eesliite?","link_titlefield":"Tiitel","link_target_blank":"Ava link uues aknas","link_target_same":"Ava link samas aknas","link_target":"Sihtala","link_url":"Link URL","link_title":"Sisesta/redigeeri link","image_align_right":"Parem","image_align_left":"Vasak","image_align_textbottom":"Teksti p\u00f5hi","image_align_texttop":"Teksti tipp","image_align_bottom":"Alumine","image_align_middle":"Keskmine","image_align_top":"\u00dclemine","image_align_baseline":"Kirjajoondus","image_align":"Reastus","image_hspace":"Horisontaalne vahe","image_vspace":"Vertikaalne vahe","image_dimensions":"Dimensioonid","image_alt":"Pildi kirjeldus","image_list":"Pildi loend","image_border":"Raam","image_src":"Pildi URL","image_title":"Sisestal/redigeeri pilt","charmap_title":"Vali kohandatud t\u00e4hem\u00e4rk","colorpicker_name":"Nimi:","colorpicker_color":"V\u00e4rv:","colorpicker_named_title":"Nimetatud v\u00e4rvid","colorpicker_named_tab":"Nimetatud","colorpicker_palette_title":"Palett v\u00e4rvid","colorpicker_palette_tab":"Palett","colorpicker_picker_title":"V\u00e4rvi korjaja","colorpicker_picker_tab":"Korjaja","colorpicker_title":"Vali v\u00e4rv","code_wordwrap":"S\u00f5na pakkimine","code_title":"HTML koodi redaktor","anchor_name":"Ankru nimi","anchor_title":"Sisesta/redigeeri ankur","about_loaded":"Laetud lisad","about_version":"Versioon","about_author":"Autor","about_plugin":"Lisa","about_plugins":"Lisad","about_license":"Litsents","about_help":"Abi","about_general":"Teave","about_title":"Teave TinyMCE kohta","anchor_invalid":"Please specify a valid anchor name.","accessibility_help":"Accessibility Help","accessibility_usage_title":"General Usage"});webcit-8.24-dfsg.orig/tiny_mce/themes/advanced/langs/fi.js0000644000175000017500000000531712271477123023307 0ustar michaelmichaeltinyMCE.addI18n('fi.advanced',{"underline_desc":"Alleviivattu (Ctrl+U)","italic_desc":"Kursivoitu (Ctrl+I)","bold_desc":"Lihavoitu (Ctrl+B)",dd:"M\u00e4\u00e4rittelyn kuvaus",dt:"M\u00e4\u00e4rittelyn ehto ",samp:"Koodiesimerkki",code:"Koodi",blockquote:"Pitk\u00e4 lainaus",h6:"Otsikko 6",h5:"Otsikko 5",h4:"Otsikko 4",h3:"Otsikko 3",h2:"Otsikko 2",h1:"Otsikko 1",pre:"Esimuotoiltu (pre)",address:"Osoite",div:"Div",paragraph:"Kappale",block:"Muotoilu",fontdefault:"Kirjasin","font_size":"Kirjasinkoko","style_select":"Tyylit","more_colors":"Enemm\u00e4n v\u00e4rej\u00e4","toolbar_focus":"Siirry ty\u00f6kaluihin - Alt+Q, Siirry tekstieditoriin - Alt-Z, Siirry elementin polkuun - Alt-X",newdocument:"Haluatko varmasti tyhjent\u00e4\u00e4 kaiken sis\u00e4ll\u00f6n?",path:"Polku","clipboard_msg":"Kopioi/Leikkaa/Liit\u00e4 -painikkeet eiv\u00e4t toimi Mozilla ja Firefox -selaimilla. Voit kuitenkin k\u00e4ytt\u00e4\u00e4 n\u00e4pp\u00e4inyhdistelmi\u00e4 kopioimiseen (Ctrl+C), leikkaamiseen (Ctrl+X) ja liitt\u00e4miseen (Ctrl+V). Haluatko lis\u00e4\u00e4 tietoa?","blockquote_desc":"Pitk\u00e4 lainaus","help_desc":"Ohje","newdocument_desc":"Uusi tiedosto","image_props_desc":"Kuvan ominaisuudet","paste_desc":"Liit\u00e4","copy_desc":"Kopioi","cut_desc":"Leikkaa","anchor_desc":"Lis\u00e4\u00e4/Muokkaa ankkuri","visualaid_desc":"Suuntaviivat/N\u00e4kym\u00e4tt\u00f6m\u00e4t elementit","charmap_desc":"Lis\u00e4\u00e4 erikoismerkki","backcolor_desc":"Valitse taustan v\u00e4ri","forecolor_desc":"Valitse tekstin v\u00e4ri","custom1_desc":"Oma kuvauksesi t\u00e4h\u00e4n","removeformat_desc":"Poista muotoilu","hr_desc":"Lis\u00e4\u00e4 vaakasuora viivain","sup_desc":"Yl\u00e4indeksi","sub_desc":"Alaindeksi","code_desc":"Muokkaa HTML-koodia","cleanup_desc":"Siisti sekainen koodi","image_desc":"Lis\u00e4\u00e4/muuta kuva","unlink_desc":"Poista linkki","link_desc":"Lis\u00e4\u00e4/muuta linkki","redo_desc":"Tee uudelleen (Ctrl+Y)","undo_desc":"Peru (Ctrl+Z)","indent_desc":"Sisenn\u00e4","outdent_desc":"Loitonna","numlist_desc":"J\u00e4rjestetty lista","bullist_desc":"J\u00e4rjest\u00e4m\u00e4t\u00f6n lista","justifyfull_desc":"Tasattu","justifyright_desc":"Tasaus oikealle","justifycenter_desc":"Keskitetty","justifyleft_desc":"Tasaus vasemmalle","striketrough_desc":"Yliviivattu","help_shortcut":"Paina ALT F10 n\u00e4hd\u00e4ksesi ty\u00f6kalurivin. Paina ALT-0 n\u00e4hd\u00e4ksesi ohjeen.","rich_text_area":"Rikastettu tekstialue","shortcuts_desc":"Saavutettavuusohje",toolbar:"Ty\u00f6kalurivi","anchor_delta_height":"","anchor_delta_width":"","charmap_delta_height":"","charmap_delta_width":"","colorpicker_delta_height":"","colorpicker_delta_width":"","link_delta_height":"","link_delta_width":"","image_delta_height":"","image_delta_width":""});webcit-8.24-dfsg.orig/tiny_mce/themes/advanced/langs/es_dlg.js0000644000175000017500000000413012271477123024136 0ustar michaelmichaeltinyMCE.addI18n('es.advanced_dlg',{"link_list":"Lista de hiperv\u00ednculos","link_is_external":"La URL que introdujo parece ser un v\u00ednculo externo, \u00bfdesea agregar el prefijo http:// necesario?","link_is_email":"La URL que introdujo parece ser una direcci\u00f3n de email, \u00bfdesea agregar el prefijo mailto: necesario?","link_titlefield":"T\u00edtulo","link_target_blank":"Abrir v\u00ednculo en una ventana nueva","link_target_same":"Abrir v\u00ednculo en la misma ventana","link_target":"Destino","link_url":"URL del hiperv\u00ednculo","link_title":"Insertar/editar hiperv\u00ednculo","image_align_right":"Derecha","image_align_left":"Izquierda","image_align_textbottom":"Texto debajo","image_align_texttop":"Texto arriba","image_align_bottom":"Debajo","image_align_middle":"Medio","image_align_top":"Arriba","image_align_baseline":"L\u00ednea base","image_align":"Alineaci\u00f3n","image_hspace":"Espacio horizontal","image_vspace":"Espacio vertical","image_dimensions":"Dimensi\u00f3n","image_alt":"Descripci\u00f3n de la Imagen","image_list":"Lista de la Imagen","image_border":"Borde","image_src":"URL de la Imagen","image_title":"Insertar/editar imagen","charmap_title":"Elegir caracter personalizado","colorpicker_name":"Nombre:","colorpicker_color":"Color:","colorpicker_named_title":"Colores nombrados","colorpicker_named_tab":"Nombrados","colorpicker_palette_title":"Paleta de colores","colorpicker_palette_tab":"Paleta","colorpicker_picker_title":"Paleta de color","colorpicker_picker_tab":"Selector","colorpicker_title":"Elegir color","code_wordwrap":"Ajustar al margen","code_title":"Editor del c\u00f3digo fuente HTML","anchor_name":"Nombre del ancla","anchor_title":"Insertar/editar ancla","about_loaded":"Complementos cargados","about_version":"Versi\u00f3n","about_author":"Autor","about_plugin":"Complemento","about_plugins":"Complementos","about_license":"Licencia","about_help":"Ayuda","about_general":"Acerca de ","about_title":"Acerca de TinyMCE","anchor_invalid":"Especifique un nombre v\u00e1lido para liga","accessibility_help":"Accessibility Help","accessibility_usage_title":"General Usage"});webcit-8.24-dfsg.orig/tiny_mce/themes/advanced/langs/da_dlg.js0000644000175000017500000000402412271477123024115 0ustar michaelmichaeltinyMCE.addI18n('da.advanced_dlg',{"link_list":"Liste over links","link_is_external":"Den URL, der er indtastet, ser ud til at v\u00e6re et eksternt link. Vil du have tilf\u00f8jet det p\u00e5kr\u00e6vede http:// foran?","link_is_email":"Den URL, der er indtastet, ser ud til at v\u00e6re en emailadresse. Vil du have tilf\u00f8jet det p\u00e5kr\u00e6vede mailto: foran?","link_titlefield":"Titel","link_target_blank":"\u00c5ben link i nyt vindue","link_target_same":"\u00c5ben link i samme vindue","link_target":"Target","link_url":"Link URL","link_title":"Inds\u00e6t/rediger link","image_align_right":"H\u00f8jre","image_align_left":"Venstre","image_align_textbottom":"Tekst bunden","image_align_texttop":"Tekst toppen","image_align_bottom":"Bunden","image_align_middle":"Centreret","image_align_top":"Toppen","image_align_baseline":"Grundlinie","image_align":"Justering","image_hspace":"Horisontal afstand","image_vspace":"Vertikal afstand","image_dimensions":"Dimensioner","image_alt":"Billedbeskrivelse","image_list":"Liste over billeder","image_border":"Kant","image_src":"Billede URL","image_title":"Inds\u00e6t/rediger billede","charmap_title":"V\u00e6lg specialtegn","colorpicker_name":"Navn:","colorpicker_color":"Farve:","colorpicker_named_title":"Navngivet farve","colorpicker_named_tab":"Navngivet","colorpicker_palette_title":"Palette-farver","colorpicker_palette_tab":"Palette","colorpicker_picker_title":"Farvev\u00e6lger","colorpicker_picker_tab":"V\u00e6lger","colorpicker_title":"V\u00e6lg en farve","code_wordwrap":"Tekstombrydning","code_title":"HTML kildekode-redigering","anchor_name":"Navn p\u00e5 anker","anchor_title":"Inds\u00e6t/rediger anker","about_loaded":"Indl\u00e6ste udvidelser","about_version":"Version","about_author":"Forfatter","about_plugin":"Udvidelse","about_plugins":"Udvidelser","about_license":"Licens","about_help":"Hj\u00e6lp","about_general":"Om","about_title":"Om TinyMCE","anchor_invalid":"Angiv venligst et gyldigt anker navn.","accessibility_help":"Accessibility Help","accessibility_usage_title":"General Usage"});webcit-8.24-dfsg.orig/tiny_mce/themes/advanced/langs/en.js0000644000175000017500000000444512271477123023314 0ustar michaelmichaeltinyMCE.addI18n('en.advanced',{"underline_desc":"Underline (Ctrl+U)","italic_desc":"Italic (Ctrl+I)","bold_desc":"Bold (Ctrl+B)",dd:"Definition Description",dt:"Definition Term ",samp:"Code Sample",code:"Code",blockquote:"Block Quote",h6:"Heading 6",h5:"Heading 5",h4:"Heading 4",h3:"Heading 3",h2:"Heading 2",h1:"Heading 1",pre:"Preformatted",address:"Address",div:"DIV",paragraph:"Paragraph",block:"Format",fontdefault:"Font Family","font_size":"Font Size","style_select":"Styles","anchor_delta_height":"","anchor_delta_width":"","charmap_delta_height":"","charmap_delta_width":"","colorpicker_delta_height":"","colorpicker_delta_width":"","link_delta_height":"","link_delta_width":"","image_delta_height":"","image_delta_width":"","more_colors":"More Colors...","toolbar_focus":"Jump to tool buttons - Alt+Q, Jump to editor - Alt-Z, Jump to element path - Alt-X",newdocument:"Are you sure you want clear all contents?",path:"Path","clipboard_msg":"Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?","blockquote_desc":"Block Quote","help_desc":"Help","newdocument_desc":"New Document","image_props_desc":"Image Properties","paste_desc":"Paste (Ctrl+V)","copy_desc":"Copy (Ctrl+C)","cut_desc":"Cut (Ctrl+X)","anchor_desc":"Insert/Edit Anchor","visualaid_desc":"show/Hide Guidelines/Invisible Elements","charmap_desc":"Insert Special Character","backcolor_desc":"Select Background Color","forecolor_desc":"Select Text Color","custom1_desc":"Your Custom Description Here","removeformat_desc":"Remove Formatting","hr_desc":"Insert Horizontal Line","sup_desc":"Superscript","sub_desc":"Subscript","code_desc":"Edit HTML Source","cleanup_desc":"Cleanup Messy Code","image_desc":"Insert/Edit Image","unlink_desc":"Unlink","link_desc":"Insert/Edit Link","redo_desc":"Redo (Ctrl+Y)","undo_desc":"Undo (Ctrl+Z)","indent_desc":"Increase Indent","outdent_desc":"Decrease Indent","numlist_desc":"Insert/Remove Numbered List","bullist_desc":"Insert/Remove Bulleted List","justifyfull_desc":"Align Full","justifyright_desc":"Align Right","justifycenter_desc":"Align Center","justifyleft_desc":"Align Left","striketrough_desc":"Strikethrough","help_shortcut":"Press ALT-F10 for toolbar. Press ALT-0 for help","rich_text_area":"Rich Text Area","shortcuts_desc":"Accessability Help",toolbar:"Toolbar"});webcit-8.24-dfsg.orig/tiny_mce/themes/advanced/langs/bg.js0000644000175000017500000001562312271477123023302 0ustar michaelmichaeltinyMCE.addI18n('bg.advanced',{"underline_desc":"\u041f\u043e\u0434\u0447\u0435\u0440\u0442\u0430\u043d (Ctrl+U)","italic_desc":"\u041a\u0443\u0440\u0441\u0438\u0432 (Ctrl+I)","bold_desc":"\u041f\u043e\u043b\u0443\u0447\u0435\u0440 (Ctrl+B)",dd:"\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043d\u0430 \u0434\u0435\u0444\u0438\u043d\u0438\u0446\u0438\u044f",dt:"\u0414\u0435\u0444\u0438\u043d\u0438\u0446\u0438\u044f ",samp:"\u041f\u0440\u043e\u043c\u0435\u0440\u0435\u043d \u043a\u043e\u0434",code:"\u041a\u043e\u0434",blockquote:"\u0426\u0438\u0442\u0430\u0442",h6:"\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u0435 6",h5:"\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u0435 5",h4:"\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u0435 4",h3:"\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u0435 3",h2:"\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u0435 2",h1:"\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u0435 1",pre:"\u041f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u043d\u043e \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u0430\u043d",address:"\u0410\u0434\u0440\u0435\u0441",div:"Div",paragraph:"\u041f\u0430\u0440\u0430\u0433\u0440\u0430\u0444",block:"\u0424\u043e\u0440\u043c\u0430\u0442",fontdefault:"\u0428\u0440\u0438\u0444\u0442","font_size":"\u0420\u0430\u0437\u043c\u0435\u0440 \u043d\u0430 \u0448\u0440\u0438\u0444\u0442\u0430","style_select":"\u0421\u0442\u0438\u043b\u043e\u0432\u0435","anchor_delta_height":"","more_colors":"\u041e\u0449\u0435 \u0446\u0432\u0435\u0442\u043e\u0432\u0435","toolbar_focus":"\u041e\u0442\u0438\u0434\u0438 \u043f\u0440\u0438 \u0431\u0443\u0442\u043e\u043d\u0438\u0442\u0435 - Alt+Q, \u041e\u0442\u0438\u0434\u0438 \u043f\u0440\u0438 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430 - Alt-Z, \u041e\u0442\u0438\u0434\u0438 \u043f\u0440\u0438 \u043f\u044a\u0442\u0435\u043a\u0430\u0442\u0430 \u043d\u0430 \u0435\u043b\u0435\u043c\u0435\u043d\u0442\u0438\u0442\u0435 - Alt-X",newdocument:"\u0421\u0438\u0433\u0443\u0440\u0435\u043d \u043b\u0438 \u0441\u0442\u0435, \u0447\u0435 \u0438\u0441\u043a\u0430\u0442\u0435 \u0434\u0430 \u0438\u0437\u0447\u0438\u0441\u0442\u0438\u0442\u0435 \u0446\u044f\u043b\u043e\u0442\u043e \u0441\u044a\u0434\u044a\u0440\u0436\u0430\u043d\u0438\u0435?",path:"\u041f\u044a\u0442","clipboard_msg":"\u041a\u043e\u043f\u0438\u0440\u0430\u043d\u0435/\u041e\u0442\u0440\u044f\u0437\u0432\u0430\u043d\u0435/\u041f\u043e\u0441\u0442\u0430\u0432\u044f\u043d\u0435 \u043d\u0435 \u0435 \u0434\u043e\u0441\u0442\u044a\u043f\u043d\u043e \u043f\u043e\u0434 Mozilla \u0438 Firefox.\n\u0416\u0435\u043b\u0430\u0435\u0442\u0435 \u043b\u0438 \u043f\u043e\u0432\u0435\u0447\u0435 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0437\u0430 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430?","blockquote_desc":"\u0426\u0438\u0442\u0430\u0442","help_desc":"\u041f\u043e\u043c\u043e\u0449","newdocument_desc":"\u041d\u043e\u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442","image_props_desc":"\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u043d\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430\u0442\u0430","paste_desc":"\u041f\u043e\u0441\u0442\u0430\u0432\u044f\u043d\u0435","copy_desc":"\u041a\u043e\u043f\u0438\u0440\u0430\u043d\u0435","cut_desc":"\u0418\u0437\u0440\u044f\u0437\u0432\u0430\u043d\u0435","anchor_desc":"\u0412\u043c\u044a\u043a\u043d\u0438/\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0430\u0439 \u043a\u043e\u0442\u0432\u0430","visualaid_desc":"\u0412\u043a\u043b./\u0438\u0437\u043a\u043b. \u043d\u0435\u0432\u0438\u0434\u0438\u043c\u0438\u0442\u0435 \u0435\u043b\u0435\u043c\u0435\u043d\u0442\u0438","charmap_desc":"\u0412\u043c\u044a\u043a\u043d\u0438 \u0441\u0438\u043c\u0432\u043e\u043b","backcolor_desc":"\u0418\u0437\u0431\u0435\u0440\u0438 \u0446\u0432\u044f\u0442 \u043d\u0430 \u0444\u043e\u043d\u0430","forecolor_desc":"\u0418\u0437\u0431\u0435\u0440\u0438 \u0446\u0432\u044f\u0442 \u043d\u0430 \u0442\u0435\u043a\u0441\u0442\u0430","custom1_desc":"\u0412\u0430\u0448\u0435\u0442\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0442\u0443\u043a","removeformat_desc":"\u041f\u0440\u0435\u043c\u0430\u0445\u043d\u0438 \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u0430\u043d\u0435\u0442\u043e","hr_desc":"\u0412\u043c\u044a\u043a\u043d\u0438 \u0445\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u043d\u0430 \u043b\u0438\u043d\u0438\u044f","sup_desc":"\u0413\u043e\u0440\u0435\u043d \u0438\u043d\u0434\u0435\u043a\u0441","sub_desc":"\u0414\u043e\u043b\u0435\u043d \u0438\u043d\u0434\u0435\u043a\u0441","code_desc":"\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0430\u0439 HTML","cleanup_desc":"\u0418\u0437\u0447\u0438\u0441\u0442\u0438 \u043a\u043e\u0434\u0430","image_desc":"\u0412\u043c\u044a\u043a\u0432\u0430\u043d\u0435/\u0440\u0435\u0434\u0430\u043a\u0446\u0438\u044f \u043d\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430","unlink_desc":"\u041f\u0440\u0435\u043c\u0430\u0445\u043d\u0438 \u0445\u0438\u043f\u0435\u0440\u0432\u0440\u044a\u0437\u043a\u0430","link_desc":"\u0412\u043c\u044a\u043a\u0432\u0430\u043d\u0435/\u0440\u0435\u0434\u0430\u043a\u0446\u0438\u044f \u043d\u0430 \u0445\u0438\u043f\u0435\u0440\u0432\u0440\u044a\u0437\u043a\u0430","redo_desc":"\u0412\u044a\u0437\u0441\u0442\u0430\u043d\u043e\u0432\u044f\u0432\u0430\u043d\u0435 (Ctrl+Y)","undo_desc":"\u041e\u0442\u043c\u044f\u043d\u0430 (Ctrl+Z)","indent_desc":"\u0423\u0432\u0435\u043b\u0438\u0447\u0430\u0432\u0430\u043d\u0435 \u043d\u0430 \u043e\u0442\u0441\u0442\u044a\u043f\u0430","outdent_desc":"\u041d\u0430\u043c\u0430\u043b\u044f\u0432\u0430\u043d\u0435 \u043d\u0430 \u043e\u0442\u0441\u0442\u044a\u043f\u0430","numlist_desc":"\u041d\u043e\u043c\u0435\u0440\u0430","bullist_desc":"\u0412\u043e\u0434\u0430\u0447\u0438","justifyfull_desc":"\u0414\u0432\u0443\u0441\u0442\u0440\u0430\u043d\u043d\u043e","justifyright_desc":"\u041f\u043e\u0434\u0440\u0430\u0432\u043d\u044f\u0432\u0430\u043d\u0435 \u043e\u0442\u0434\u044f\u0441\u043d\u043e","justifycenter_desc":"\u0426\u0435\u043d\u0442\u0440\u0438\u0440\u0430\u043d\u043e","justifyleft_desc":"\u041f\u043e\u0434\u0440\u0430\u0432\u043d\u044f\u0432\u0430\u043d\u0435 \u043e\u0442\u043b\u044f\u0432\u043e","striketrough_desc":"\u0417\u0430\u0447\u0435\u0440\u0442\u0430\u043d","help_shortcut":"\u041d\u0430\u0442\u0438\u0441\u043d\u0435\u0442\u0435 ALT-F10 \u0437\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0438. \u041d\u0430\u0442\u0438\u0441\u043d\u0435\u0442\u0435 ALT-0 \u0437\u0430 \u043f\u043e\u043c\u043e\u0449","rich_text_area":"\u0417\u043e\u043d\u0430 \u0441\u0432\u043e\u0431\u043e\u0434\u0435\u043d \u0442\u0435\u043a\u0441\u0442","shortcuts_desc":"\u0417\u0430 \u0434\u043e\u0441\u0442\u044a\u043f \u0434\u043e Help",toolbar:"\u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0438","anchor_delta_width":"","charmap_delta_height":"","charmap_delta_width":"","colorpicker_delta_height":"","colorpicker_delta_width":"","link_delta_height":"","link_delta_width":"","image_delta_height":"","image_delta_width":""});webcit-8.24-dfsg.orig/tiny_mce/themes/advanced/langs/da.js0000644000175000017500000000476312271477123023301 0ustar michaelmichaeltinyMCE.addI18n('da.advanced',{"underline_desc":"Understreget (Ctrl+U)","italic_desc":"Kursiv (Ctrl+I)","bold_desc":"Fed (Ctrl+B)",dd:"Definitionsbeskrivelse",dt:"Definitionsterm ",samp:"Kodeeksempel",code:"Kode",blockquote:"Blokcitat",h6:"Overskrift 6",h5:"Overskrift 5",h4:"Overskrift 4",h3:"Overskrift 3",h2:"Overskrift 2",h1:"Overskrift 1",pre:"Pr\u00e6formatteret",address:"Adresse",div:"Div",paragraph:"Afsnit",block:"Format",fontdefault:"Skrifttype","font_size":"Skriftst\u00f8rrelse","style_select":"Typografier","more_colors":"Flere farver","toolbar_focus":"Hop til v\u00e6rkt\u00f8jsknapper - Alt+Q, Skift til redigering - Alt-Z, Skift til element sti - Alt-X",newdocument:"Er du sikker p\u00e5 du vil slette alt indhold?",path:"Sti","clipboard_msg":"Kopier/Klip/inds\u00e6t er ikke muligt i Mozilla og Firefox.\nVil du have mere information om dette emne?","blockquote_desc":"Blokcitat","help_desc":"Hj\u00e6lp","newdocument_desc":"Nyt dokument","image_props_desc":"Billedegenskaber","paste_desc":"Inds\u00e6t","copy_desc":"Kopier","cut_desc":"Klip","anchor_desc":"Inds\u00e6t/rediger anker","visualaid_desc":"Sl\u00e5 hj\u00e6lp/synlige elementer til/fra","charmap_desc":"Inds\u00e6t specialtegn","backcolor_desc":"V\u00e6lg baggrundsfarve","forecolor_desc":"V\u00e6lg tekstfarve","custom1_desc":"Din egen beskrivelse her","removeformat_desc":"Fjern formatering","hr_desc":"Inds\u00e6t horisontal linie","sup_desc":"H\u00e6vet skrift","sub_desc":"S\u00e6nket skrift","code_desc":"Rediger HTML-kilde","cleanup_desc":"Ryd op i uordentlig kode","image_desc":"Inds\u00e6t/rediger billede","unlink_desc":"Fjern link","link_desc":"Inds\u00e6t/rediger link","redo_desc":"Gendan (Ctrl+Y)","undo_desc":"Fortryd (Ctrl+Z)","indent_desc":"\u00d8g indrykning","outdent_desc":"Formindsk indrykning","numlist_desc":"Nummereret punktopstilling","bullist_desc":"Unummereret punktopstilling","justifyfull_desc":"Lige marginer","justifyright_desc":"H\u00f8jrejusteret","justifycenter_desc":"Centreret","justifyleft_desc":"Venstrejusteret","striketrough_desc":"Gennemstreget","help_shortcut":"Tryk ALT-F10 for v\u00e6rkt\u00f8jslinie. Tryk ALT-0 for hj\u00e6lp","rich_text_area":"Tekstomr\u00e5de med formatering","shortcuts_desc":"Hj\u00e6lp til tilg\u00e6ngelighed",toolbar:"V\u00e6rkt\u00f8jslinie","anchor_delta_height":"","anchor_delta_width":"","charmap_delta_height":"","charmap_delta_width":"","colorpicker_delta_height":"","colorpicker_delta_width":"","link_delta_height":"","link_delta_width":"","image_delta_height":"","image_delta_width":""});webcit-8.24-dfsg.orig/tiny_mce/themes/advanced/langs/fr.js0000644000175000017500000000533612271477123023321 0ustar michaelmichaeltinyMCE.addI18n('fr.advanced',{"underline_desc":"Soulign\u00e9 (Ctrl+U)","italic_desc":"Italique (Ctrl+I)","bold_desc":"Gras (Ctrl+B)",dd:"D\u00e9finition du terme",dt:"Terme \u00e0 d\u00e9finir",samp:"Exemple de code",code:"Code",blockquote:"Bloc de citation",h6:"Titre 6",h5:"Titre 5",h4:"Titre 4",h3:"Titre 3",h2:"Titre 2",h1:"Titre 1",pre:"Pr\u00e9format\u00e9",address:"Adresse",div:"Div",paragraph:"Paragraphe",block:"Format",fontdefault:"Police","font_size":"Taille police","style_select":"Styles","more_colors":"Plus de couleurs","toolbar_focus":"Atteindre les boutons de l\'\u00e9diteur - Alt+Q, Aller \u00e0 l\'\u00e9diteur - Alt-Z, Aller au chemin de l\'\u00e9l\u00e9ment - Alt-X",newdocument:"\u00cates-vous s\u00fbr de vouloir effacer l\'int\u00e9gralit\u00e9 du document ?",path:"Chemin","clipboard_msg":"Les fonctions Copier/Couper/Coller ne sont pas valables sur Mozilla et Firefox.\nSouhaitez-vous avoir plus d\'informations sur ce sujet ?","blockquote_desc":"Citation","help_desc":"Aide","newdocument_desc":"Nouveau document","image_props_desc":"Propri\u00e9t\u00e9s de l\'image","paste_desc":"Coller","copy_desc":"Copier","cut_desc":"Couper","anchor_desc":"Ins\u00e9rer / \u00e9diter une ancre","visualaid_desc":"Activer / d\u00e9sactiver les guides et les \u00e9l\u00e9ments invisibles","charmap_desc":"Ins\u00e9rer des caract\u00e8res sp\u00e9ciaux","backcolor_desc":"Choisir la couleur de surlignage","forecolor_desc":"Choisir la couleur du texte","custom1_desc":"Votre description personnalis\u00e9e ici","removeformat_desc":"Supprimer le formatage","hr_desc":"Ins\u00e9rer un trait horizontal","sup_desc":"Exposant","sub_desc":"Indice","code_desc":"\u00c9diter le code source HTML","cleanup_desc":"Nettoyer le code","image_desc":"Ins\u00e9rer / \u00e9diter l\'image","unlink_desc":"Supprimer le lien","link_desc":"Ins\u00e9rer / \u00e9diter le lien","redo_desc":"R\u00e9tablir (Ctrl+Y)","undo_desc":"Annuler (Ctrl+Z)","indent_desc":"Indenter","outdent_desc":"Retirer l\'indentation","numlist_desc":"Liste num\u00e9rot\u00e9e","bullist_desc":"Liste \u00e0 puces","justifyfull_desc":"Justifi\u00e9","justifyright_desc":"Align\u00e9 \u00e0 droite","justifycenter_desc":"Centr\u00e9","justifyleft_desc":"Align\u00e9 \u00e0 gauche","striketrough_desc":"Barr\u00e9","help_shortcut":"Faites ALT-F10 pour acc\u00e9der \u00e0 la barre d\'outils. Faites ALT-0 pour acc\u00e9der \u00e0 l\'aide","rich_text_area":"Zone de texte enrichi","shortcuts_desc":"Aides \u00e0 l\'accessibilit\u00e9",toolbar:"Barre d\'outils","anchor_delta_height":"","anchor_delta_width":"","charmap_delta_height":"","charmap_delta_width":"","colorpicker_delta_height":"","colorpicker_delta_width":"","link_delta_height":"","link_delta_width":"","image_delta_height":"","image_delta_width":""});webcit-8.24-dfsg.orig/tiny_mce/themes/advanced/langs/el_dlg.js0000644000175000017500000001320412271477123024131 0ustar michaelmichaeltinyMCE.addI18n('el.advanced_dlg',{"link_list":"\u039b\u03af\u03c3\u03c4\u03b1 \u03c3\u03c5\u03bd\u03b4\u03ad\u03c3\u03bc\u03c9\u03bd","link_is_external":"\u0397 \u03b4\u03b9\u03b1\u03b4\u03c1\u03bf\u03bc\u03ae URL \u03c0\u03bf\u03c5 \u03b5\u03b9\u03c3\u03ac\u03b3\u03b1\u03c4\u03b5 \u03c6\u03b1\u03af\u03bd\u03b5\u03c4\u03b1\u03b9 \u03bd\u03b1 \u03b5\u03af\u03bd\u03b1\u03b9 \u03b5\u03be\u03c9\u03c4\u03b5\u03c1\u03b9\u03ba\u03cc\u03c2 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03bc\u03bf\u03c2, \u03bd\u03b1 \u03c0\u03c1\u03bf\u03c3\u03c4\u03b5\u03b8\u03b5\u03af \u03c4\u03bf \u03b1\u03c0\u03b1\u03c1\u03b1\u03af\u03c4\u03b7\u03c4\u03bf http:// ;","link_is_email":"\u0397 \u03b4\u03b9\u03b1\u03b4\u03c1\u03bf\u03bc\u03ae URL \u03c0\u03bf\u03c5 \u03b5\u03b9\u03c3\u03ac\u03b3\u03b1\u03c4\u03b5 \u03c6\u03b1\u03af\u03bd\u03b5\u03c4\u03b1\u03b9 \u03bd\u03b1 \u03b5\u03af\u03bd\u03b1\u03b9 email, \u03bd\u03b1 \u03c0\u03c1\u03bf\u03c3\u03c4\u03b5\u03b8\u03b5\u03af \u03c4\u03bf \u03b1\u03c0\u03b1\u03c1\u03b1\u03af\u03c4\u03b7\u03c4\u03bf mailto: ;","link_titlefield":"\u03a4\u03af\u03c4\u03bb\u03bf\u03c2","link_target_blank":"\u0386\u03bd\u03bf\u03b9\u03b3\u03bc\u03b1 \u03c3\u03b5 \u03bd\u03ad\u03bf \u03c0\u03b1\u03c1\u03ac\u03b8\u03c5\u03c1\u03bf","link_target_same":"\u0386\u03bd\u03bf\u03b9\u03b3\u03bc\u03b1 \u03c3\u03c4\u03bf \u03af\u03b4\u03b9\u03bf \u03c0\u03b1\u03c1\u03ac\u03b8\u03c5\u03c1\u03bf","link_target":"\u03a3\u03c4\u03cc\u03c7\u03bf\u03c2","link_url":"\u0394\u03b9\u03b1\u03b4\u03c1\u03bf\u03bc\u03ae URL \u03c3\u03c5\u03bd\u03b4\u03ad\u03c3\u03bc\u03bf\u03c5","link_title":"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae/\u03b5\u03c0\u03b5\u03be\u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u03b1 \u03c3\u03c5\u03bd\u03b4\u03ad\u03c3\u03bc\u03bf\u03c5","image_align_right":"\u0394\u03b5\u03be\u03b9\u03ac","image_align_left":"\u0391\u03c1\u03b9\u03c3\u03c4\u03b5\u03c1\u03ac","image_align_textbottom":"\u039a\u03b5\u03af\u03bc\u03b5\u03bd\u03bf \u03ba\u03ac\u03c4\u03c9","image_align_texttop":"\u039a\u03ad\u03b9\u03bc\u03b5\u03bd\u03bf \u03c0\u03ac\u03bd\u03c9","image_align_bottom":"\u039a\u03ac\u03c4\u03c9","image_align_middle":"\u039c\u03ad\u03c3\u03b7","image_align_top":"\u0395\u03c0\u03ac\u03bd\u03c9","image_align_baseline":"\u0393\u03c1\u03b1\u03bc\u03bc\u03ae \u03c3\u03c4\u03bf\u03af\u03c7\u03b9\u03c3\u03b7\u03c2 \u03b3\u03c1\u03b1\u03bc\u03bc\u03ac\u03c4\u03c9\u03bd","image_align":"\u03a3\u03c4\u03bf\u03af\u03c7\u03b9\u03c3\u03b7","image_hspace":"\u0391\u03c0\u03cc\u03c3\u03c4\u03b1\u03c3\u03b7 \u03bf\u03c1\u03b9\u03b6\u03cc\u03bd\u03c4\u03b9\u03b1","image_vspace":"\u0391\u03c0\u03cc\u03c3\u03c4\u03b1\u03c3\u03b7 \u03ba\u03ac\u03b8\u03b5\u03c4\u03b7","image_dimensions":"\u0394\u03b9\u03b1\u03c3\u03c4\u03ac\u03c3\u03b5\u03b9\u03c2","image_alt":"\u03a0\u03b5\u03c1\u03b9\u03b3\u03c1\u03b1\u03c6\u03ae \u03b5\u03b9\u03ba\u03cc\u03bd\u03b1\u03c2","image_list":"\u039b\u03af\u03c3\u03c4\u03b1 \u03b5\u03b9\u03ba\u03cc\u03bd\u03c9\u03bd","image_border":"\u03a0\u03bb\u03b1\u03af\u03c3\u03b9\u03bf","image_src":"\u0394\u03b9\u03b1\u03b4\u03c1\u03bf\u03bc\u03ae URL \u0395\u03b9\u03ba\u03cc\u03bd\u03b1\u03c2","image_title":"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae/\u03b5\u03c0\u03b5\u03be\u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u03b1 \u03b5\u03b9\u03ba\u03cc\u03bd\u03b1\u03c2","charmap_title":"\u0395\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae \u03c7\u03b1\u03c1\u03b1\u03ba\u03c4\u03ae\u03c1\u03b1","colorpicker_name":"\u038c\u03bd\u03bf\u03bc\u03b1:","colorpicker_color":"\u03a7\u03c1\u03ce\u03bc\u03b1:","colorpicker_named_title":"\u039f\u03bd\u03bf\u03bc\u03b1\u03c3\u03c4\u03b9\u03ba\u03ac \u03c7\u03c1\u03ce\u03bc\u03b1\u03c4\u03b1","colorpicker_named_tab":"\u039f\u03bd\u03bf\u03bc\u03b1\u03c3\u03c4\u03b9\u03ba\u03ac","colorpicker_palette_title":"\u03a7\u03c1\u03ce\u03bc\u03b1\u03c4\u03b1 \u03c0\u03b1\u03bb\u03ad\u03c4\u03b1\u03c2","colorpicker_palette_tab":"\u03a0\u03b1\u03bb\u03ad\u03c4\u03b1","colorpicker_picker_title":"\u0395\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae \u03c7\u03c1\u03ce\u03bc\u03b1\u03c4\u03bf\u03c2","colorpicker_picker_tab":"\u0395\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae","colorpicker_title":"\u0394\u03b9\u03b1\u03bb\u03ad\u03be\u03c4\u03b5 \u03c7\u03c1\u03ce\u03bc\u03b1","code_wordwrap":"\u0391\u03bd\u03b1\u03b4\u03af\u03c0\u03bb\u03c9\u03c3\u03b7 \u03ba\u03b5\u03b9\u03bc\u03ad\u03bd\u03bf\u03c5","code_title":"\u0395\u03c0\u03b5\u03be\u03b5\u03c1\u03b3\u03b1\u03c3\u03c4\u03ae\u03c2 \u03ba\u03ce\u03b4\u03b9\u03ba\u03b1 HTML","anchor_name":"\u038c\u03bd\u03bf\u03bc\u03b1 anchor","anchor_title":"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae/\u03b5\u03c0\u03b5\u03be\u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u03b1 anchor","about_loaded":"\u03a6\u03bf\u03c1\u03c4\u03c9\u03bc\u03ad\u03bd\u03b1 \u03c0\u03c1\u03cc\u03c3\u03b8\u03b5\u03c4\u03b1","about_version":"\u0388\u03ba\u03b4\u03bf\u03c3\u03b7","about_author":"\u03a3\u03c5\u03b3\u03b3\u03c1\u03b1\u03c6\u03ad\u03b1\u03c2","about_plugin":"\u03a3\u03c7\u03b5\u03c4\u03b9\u03ba\u03ac \u03bc\u03b5 \u03c4\u03bf \u03c0\u03c1\u03cc\u03c3\u03b8\u03b5\u03c4\u03bf","about_plugins":"\u03a3\u03c7\u03b5\u03c4\u03b9\u03ba\u03ac \u03bc\u03b5 \u03c4\u03b1 \u03c0\u03c1\u03cc\u03c3\u03b8\u03b5\u03c4\u03b1","about_license":"\u0386\u03b4\u03b5\u03b9\u03b1","about_help":"\u0392\u03bf\u03ae\u03b8\u03b5\u03b9\u03b1","about_general":"\u03a3\u03c7\u03b5\u03c4\u03b9\u03ba\u03ac","about_title":"\u03a3\u03c7\u03b5\u03c4\u03b9\u03ba\u03ac \u03bc\u03b5 \u03c4\u03bf TinyMCE","anchor_invalid":"\u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03ce \u03b5\u03b9\u03c3\u03ac\u03b3\u03b5\u03c4\u03b5 \u03ad\u03bd\u03b1 \u03ad\u03b3\u03ba\u03c5\u03c1\u03bf \u03cc\u03bd\u03bf\u03bc\u03b1 anchor.","accessibility_help":"Accessibility Help","accessibility_usage_title":"General Usage"});webcit-8.24-dfsg.orig/tiny_mce/themes/advanced/langs/hu_dlg.js0000644000175000017500000000441512271477123024151 0ustar michaelmichaeltinyMCE.addI18n('hu.advanced_dlg',{"link_list":"Link lista","link_is_external":"A be\u00edrt internet c\u00edm k\u00fcls\u0151 hivatkoz\u00e1snak t\u0171nik, k\u00edv\u00e1nja a sz\u00fcks\u00e9ges http://-vel kieg\u00e9sz\u00edteni?","link_is_email":"A be\u00edrt internet c\u00edm e-mail c\u00edmnek t\u0171nik, k\u00edv\u00e1nja a sz\u00fcks\u00e9ges mailto:-val kieg\u00e9sz\u00edteni?","link_titlefield":"C\u00edm","link_target_blank":"\u00faj ablakba","link_target_same":"azonos ablakba","link_target":"Megnyit\u00e1s","link_url":"Internet c\u00edm","link_title":"Link besz\u00far\u00e1sa/szerkeszt\u00e9se","image_align_right":"Jobbra","image_align_left":"Balra","image_align_textbottom":"Sz\u00f6veg alj\u00e1hoz","image_align_texttop":"Sz\u00f6veg tetej\u00e9hez","image_align_bottom":"Lentre","image_align_middle":"K\u00f6z\u00e9pre","image_align_top":"Fentre","image_align_baseline":"Alapvonalhoz","image_align":"Igaz\u00edt\u00e1s","image_hspace":"V\u00edzszintes t\u00e1v","image_vspace":"F\u00fcgg\u0151leges t\u00e1v","image_dimensions":"M\u00e9retek","image_alt":"K\u00e9p le\u00edr\u00e1s","image_list":"K\u00e9p lista","image_border":"Keret","image_src":"K\u00e9p URL","image_title":"K\u00e9p besz\u00far\u00e1sa/szerkeszt\u00e9se","charmap_title":"Egyedi karakter v\u00e1laszt\u00e1sa","colorpicker_name":"N\u00e9v:","colorpicker_color":"Sz\u00edn:","colorpicker_named_title":"Elnevezett sz\u00ednek","colorpicker_named_tab":"Elnevezettek","colorpicker_palette_title":"Paletta sz\u00ednek","colorpicker_palette_tab":"Paletta","colorpicker_picker_title":"Sz\u00ednv\u00e1laszt\u00f3","colorpicker_picker_tab":"V\u00e1laszt\u00f3","colorpicker_title":"Sz\u00ednv\u00e1laszt\u00e1s","code_wordwrap":"Sz\u00f6veg t\u00f6rdel\u00e9se","code_title":"HTML forr\u00e1s szerkeszt\u00e9se","anchor_name":"Horgonyn\u00e9v","anchor_title":"Horgony besz\u00far\u00e1sa/szerkeszt\u00e9se","about_loaded":"Bet\u00f6lt\u00f6tt pluginok","about_version":"Verzi\u00f3","about_author":"Szerz\u0151","about_plugin":"Plugin","about_plugins":"Pluginok","about_license":"Licenc","about_help":"Seg\u00edts\u00e9g","about_general":"R\u00f3lunk","about_title":"A TinyMCE-r\u0151l","anchor_invalid":"Adjon meg egy helyes horgony nevet.","accessibility_help":"Accessibility Help","accessibility_usage_title":"General Usage"});webcit-8.24-dfsg.orig/tiny_mce/themes/advanced/langs/cs_dlg.js0000644000175000017500000000444612271477123024146 0ustar michaelmichaeltinyMCE.addI18n('cs.advanced_dlg',{"link_list":"Seznam odkaz\u016f","link_is_external":"Zadan\u00e9 URL vypad\u00e1 jako extern\u00ed odkaz, chcete doplnit povinn\u00fd prefix http://?","link_is_email":"Zadan\u00e9 URL vypad\u00e1 jako e-mailov\u00e1 adresa, chcete doplnit povinn\u00fd prefix mailto:?","link_titlefield":"Titulek","link_target_blank":"Otev\u0159\u00edt odkaz v nov\u00e9m okn\u011b","link_target_same":"Otev\u0159\u00edt odkaz ve stejn\u00e9m okn\u011b","link_target":"C\u00edl","link_url":"URL odkazu","link_title":"Vlo\u017eit/upravit odkaz","image_align_right":"Vpravo","image_align_left":"Vlevo","image_align_textbottom":"Se spodkem \u0159\u00e1dku","image_align_texttop":"S vrchem \u0159\u00e1dku","image_align_bottom":"Dol\u016f","image_align_middle":"Na st\u0159ed \u0159\u00e1dku","image_align_top":"Nahoru","image_align_baseline":"Na z\u00e1kladnu","image_align":"Zarovn\u00e1n\u00ed","image_hspace":"Horizont\u00e1ln\u00ed odsazen\u00ed","image_vspace":"Vertik\u00e1ln\u00ed odsazen\u00ed","image_dimensions":"Rozm\u011bry","image_alt":"Popis obr\u00e1zku","image_list":"Seznam obr\u00e1zk\u016f","image_border":"R\u00e1me\u010dek","image_src":"URL obr\u00e1zku","image_title":"Vlo\u017eit/upravit obr\u00e1zek","charmap_title":"Vlo\u017eit speci\u00e1ln\u00ed znak","colorpicker_name":"N\u00e1zev:","colorpicker_color":"Vybran\u00e1 barva:","colorpicker_named_title":"Pojmenovan\u00e9 barvy","colorpicker_named_tab":"N\u00e1zvy","colorpicker_palette_title":"Paleta barev","colorpicker_palette_tab":"Paleta","colorpicker_picker_title":"Kap\u00e1tko","colorpicker_picker_tab":"Kap\u00e1tko","colorpicker_title":"V\u00fdb\u011br barvy","code_wordwrap":"Zalamov\u00e1n\u00ed \u0159\u00e1dk\u016f","code_title":"Editor HTML","anchor_name":"N\u00e1zev z\u00e1lo\u017eky","anchor_title":"Vlo\u017eit/upravit z\u00e1lo\u017eku (kotvu)","about_loaded":"Na\u010dten\u00e9 z\u00e1suvn\u00e9 moduly","about_version":"Verze","about_author":"Autor","about_plugin":"Z\u00e1suvn\u00fd modul","about_plugins":"Z\u00e1suvn\u00e9 moduly","about_license":"Licence","about_help":"N\u00e1pov\u011bda","about_general":"O programu","about_title":"O TinyMCE","anchor_invalid":"Zadejte, pros\u00edm, platn\u00fd n\u00e1zev z\u00e1lo\u017eky (kotvy).","accessibility_help":"Accessibility Help","accessibility_usage_title":"General Usage"});webcit-8.24-dfsg.orig/tiny_mce/themes/advanced/langs/el.js0000644000175000017500000001631412271477123023310 0ustar michaelmichaeltinyMCE.addI18n('el.advanced',{"underline_desc":"\u03a5\u03c0\u03bf\u03b3\u03c1\u03b1\u03bc\u03bc\u03b9\u03c3\u03bc\u03ad\u03bd\u03b1 (Ctrl+U)","italic_desc":"\u03a0\u03bb\u03ac\u03b3\u03b9\u03b1 (Ctrl+I)","bold_desc":"\u039c\u03b1\u03cd\u03c1\u03b1 (Ctrl+B)",dd:"\u03a0\u03b5\u03c1\u03b9\u03b3\u03c1\u03b1\u03c6\u03ae \u039f\u03c1\u03b9\u03c3\u03bc\u03bf\u03cd",dt:"\u039f\u03c1\u03b9\u03c3\u03bc\u03cc\u03c2",samp:"\u0394\u03b5\u03af\u03b3\u03bc\u03b1 \u039a\u03ce\u03b4\u03b9\u03ba\u03b1",code:"\u039a\u03ce\u03b4\u03b9\u03ba\u03b1\u03c2",blockquote:"Blockquote",h6:"\u0395\u03c0\u03b9\u03ba\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1 6",h5:"\u0395\u03c0\u03b9\u03ba\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1 5",h4:"\u0395\u03c0\u03b9\u03ba\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1 4",h3:"\u0395\u03c0\u03b9\u03ba\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1 3",h2:"\u0395\u03c0\u03b9\u03ba\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1 2",h1:"\u0395\u03c0\u03b9\u03ba\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1 1",pre:"Pre",address:"\u0394\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7",div:"Div",paragraph:"\u03a0\u03b1\u03c1\u03ac\u03b3\u03c1\u03b1\u03c6\u03bf\u03c2",block:"\u039c\u03bf\u03c1\u03c6\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7",fontdefault:"\u0393\u03c1\u03b1\u03bc\u03bc\u03b1\u03c4\u03bf\u03c3\u03b5\u03b9\u03c1\u03ac","font_size":"\u039c\u03ad\u03b3\u03b5\u03b8\u03bf\u03c2 \u0393\u03c1\u03b1\u03bc\u03bc\u03ac\u03c4\u03c9\u03bd","style_select":"\u03a3\u03c4\u03c5\u03bb","link_delta_width":"80","image_delta_width":"20","more_colors":"\u03a0\u03b5\u03c1\u03b9\u03c3\u03c3\u03cc\u03c4\u03b5\u03c1\u03b1 \u03c7\u03c1\u03ce\u03bc\u03b1\u03c4\u03b1","toolbar_focus":"\u039c\u03b5\u03c4\u03ac\u03b2\u03b1\u03c3\u03b7 \u03c3\u03c4\u03b1 \u03ba\u03bf\u03c5\u03bc\u03c0\u03b9\u03ac \u03b5\u03c1\u03b3\u03b1\u03bb\u03b5\u03af\u03c9\u03bd - Alt+Q, \u039c\u03b5\u03c4\u03ac\u03b2\u03b1\u03c3\u03b7 \u03c3\u03c4\u03bf\u03bd \u03b5\u03c0\u03b5\u03be\u03b5\u03c1\u03b3\u03b1\u03c3\u03c4\u03ae \u03ba\u03b5\u03b9\u03bc\u03ad\u03bd\u03bf\u03c5 - Alt-Z, \u039c\u03b5\u03c4\u03ac\u03b2\u03b1\u03c3\u03b7 \u03c3\u03c4\u03b7\u03bd \u03b4\u03b9\u03b1\u03b4\u03c1\u03bf\u03bc\u03ae \u03c4\u03bf\u03c5 \u03c3\u03c4\u03bf\u03b9\u03c7\u03b5\u03af\u03bf\u03c5 - Alt-X",newdocument:"\u03a3\u03b9\u03af\u03b3\u03bf\u03c5\u03c1\u03b1 \u03b8\u03ad\u03bb\u03b5\u03c4\u03b5 \u03bd\u03b1 \u03ba\u03b1\u03b8\u03b1\u03c1\u03af\u03c3\u03b5\u03c4\u03b5 \u03cc\u03bb\u03bf \u03c4\u03bf \u03c0\u03b5\u03c1\u03b9\u03b5\u03c7\u03cc\u03bc\u03b5\u03bd\u03bf ;",path:"\u0394\u03b9\u03b1\u03b4\u03c1\u03bf\u03bc\u03ae","clipboard_msg":"\u039f\u03b9 \u03bb\u03b5\u03b9\u03c4\u03bf\u03c5\u03c1\u03b3\u03af\u03b5\u03c2 \u0391\u03bd\u03c4\u03b9\u03b3\u03c1\u03b1\u03c6\u03ae/\u0391\u03c0\u03bf\u03ba\u03bf\u03c0\u03ae/\u0395\u03c0\u03b9\u03ba\u03cc\u03bb\u03bb\u03b7\u03c3\u03b7 \u03b4\u03b5\u03bd \u03b5\u03af\u03bd\u03b1\u03b9 \u03b4\u03b9\u03b1\u03b8\u03ad\u03c3\u03b9\u03bc\u03b5\u03c2 \u03c3\u03b5 Mozilla \u03ba\u03b1\u03b9 Firefox.\n\u0398\u03ad\u03bb\u03b5\u03c4\u03b5 \u03c0\u03b5\u03c1\u03b9\u03c3\u03c3\u03cc\u03c4\u03b5\u03c1\u03b5\u03c2 \u03c0\u03bb\u03b7\u03c1\u03bf\u03c6\u03bf\u03c1\u03af\u03b5\u03c2 ;","blockquote_desc":"Blockquote","help_desc":"\u0392\u03bf\u03ae\u03b8\u03b5\u03b9\u03b1","newdocument_desc":"\u039d\u03ad\u03bf \u03ad\u03b3\u03b3\u03c1\u03b1\u03c6\u03bf","image_props_desc":"\u0399\u03b4\u03b9\u03cc\u03c4\u03b7\u03c4\u03b5\u03c2 \u03b5\u03b9\u03ba\u03cc\u03bd\u03b1\u03c2","paste_desc":"\u0395\u03c0\u03b9\u03ba\u03cc\u03bb\u03bb\u03b7\u03c3\u03b7","copy_desc":"\u0391\u03bd\u03c4\u03b9\u03b3\u03c1\u03b1\u03c6\u03ae","cut_desc":"\u0391\u03c0\u03bf\u03ba\u03bf\u03c0\u03ae","anchor_desc":"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae/\u03b5\u03c0\u03b5\u03be\u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u03b1 anchor","visualaid_desc":"\u0395\u03bc\u03c6\u03ac\u03bd\u03b9\u03c3\u03b7/\u0391\u03c0\u03cc\u03ba\u03c1\u03c5\u03c8\u03b7 \u03b2\u03bf\u03b7\u03b8\u03b7\u03c4\u03b9\u03ba\u03ce\u03bd \u03b3\u03c1\u03b1\u03bc\u03bc\u03ce\u03bd \u03ba\u03b1\u03b9 \u03b1\u03cc\u03c1\u03b1\u03c4\u03c9\u03bd \u03c3\u03c4\u03bf\u03b9\u03c7\u03b5\u03af\u03c9\u03bd","charmap_desc":"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae \u03c7\u03b1\u03c1\u03b1\u03ba\u03c4\u03ae\u03c1\u03b1","backcolor_desc":"\u0395\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae \u03c7\u03c1\u03ce\u03bc\u03b1\u03c4\u03bf\u03c2 \u03c6\u03cc\u03bd\u03c4\u03bf\u03c5","forecolor_desc":"\u0395\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae \u03c7\u03c1\u03ce\u03bc\u03b1\u03c4\u03bf\u03c2 \u03ba\u03b5\u03b9\u03bc\u03ad\u03bd\u03bf\u03c5","custom1_desc":"\u0397 \u03c0\u03b5\u03c1\u03b9\u03b3\u03c1\u03b1\u03c6\u03ae \u03c3\u03b1\u03c2 \u03b5\u03b4\u03ce","removeformat_desc":"\u0391\u03c6\u03b1\u03af\u03c1\u03b5\u03c3\u03b7 \u03bc\u03bf\u03c1\u03c6\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7\u03c2","hr_desc":"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae \u03bf\u03c1\u03b9\u03b6\u03cc\u03bd\u03c4\u03b9\u03b1\u03c2 \u03b3\u03c1\u03b1\u03bc\u03bc\u03ae\u03c2","sup_desc":"\u0395\u03ba\u03b8\u03ad\u03c4\u03b7\u03c2","sub_desc":"\u0394\u03b5\u03af\u03ba\u03c4\u03b7\u03c2","code_desc":"\u0395\u03c0\u03b5\u03be\u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u03b1 HTML \u039a\u03ce\u03b4\u03b9\u03ba\u03b1","cleanup_desc":"\u039a\u03b1\u03b8\u03b1\u03c1\u03b9\u03c3\u03bc\u03cc\u03c2 \u03bc\u03c0\u03b5\u03c1\u03b4\u03b5\u03bc\u03ad\u03bd\u03bf\u03c5 \u03ba\u03ce\u03b4\u03b9\u03ba\u03b1","image_desc":"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae/\u03b5\u03c0\u03b5\u03be\u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u03b1 \u03b5\u03b9\u03ba\u03cc\u03bd\u03b1\u03c2","unlink_desc":"\u039a\u03b1\u03c4\u03ac\u03c1\u03b3\u03b7\u03c3\u03b7 \u03c3\u03c5\u03bd\u03b4\u03ad\u03c3\u03bc\u03bf\u03c5","link_desc":"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae/\u03b5\u03c0\u03b5\u03be\u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u03b1 \u03c3\u03c5\u03bd\u03b4\u03ad\u03c3\u03bc\u03bf\u03c5","redo_desc":"\u0395\u03c0\u03b1\u03bd\u03ac\u03bb\u03b7\u03c8\u03b7 (Ctrl+Y)","undo_desc":"\u0391\u03bd\u03b1\u03af\u03c1\u03b5\u03c3\u03b7 (Ctrl+Z)","indent_desc":"\u0395\u03c3\u03bf\u03c7\u03ae","outdent_desc":"\u03a0\u03c1\u03bf\u03b5\u03be\u03bf\u03c7\u03ae","numlist_desc":"\u039b\u03af\u03c3\u03c4\u03b1 \u03bc\u03b5 \u03c3\u03b5\u03b9\u03c1\u03ac","bullist_desc":"\u039b\u03af\u03c3\u03c4\u03b1 \u03c7\u03c9\u03c1\u03af\u03c2 \u03c3\u03b5\u03b9\u03c1\u03ac","justifyfull_desc":"\u03a3\u03c4\u03bf\u03af\u03c7\u03b9\u03c3\u03b7 \u03c0\u03bb\u03ae\u03c1\u03b7\u03c2","justifyright_desc":"\u03a3\u03c4\u03bf\u03af\u03c7\u03b9\u03c3\u03b7 \u03b4\u03b5\u03be\u03b9\u03ac","justifycenter_desc":"\u03a3\u03c4\u03bf\u03af\u03c7\u03b9\u03c3\u03b7 \u03ba\u03ad\u03bd\u03c4\u03c1\u03bf","justifyleft_desc":"\u03a3\u03c4\u03bf\u03af\u03c7\u03b9\u03c3\u03b7 \u03b1\u03c1\u03b9\u03c3\u03c4\u03b5\u03c1\u03ac","striketrough_desc":"\u0394\u03b9\u03b1\u03b3\u03c1\u03b1\u03bc\u03bc\u03b9\u03c3\u03bc\u03ad\u03bd\u03b1",toolbar:"\u0393\u03c1\u03b1\u03bc\u03bc\u03ae \u03b5\u03c1\u03b3\u03b1\u03bb\u03b5\u03af\u03c9\u03bd","anchor_delta_height":"","anchor_delta_width":"","charmap_delta_height":"","charmap_delta_width":"","colorpicker_delta_height":"","colorpicker_delta_width":"","link_delta_height":"","image_delta_height":"","help_shortcut":"Press ALT-F10 for toolbar. Press ALT-0 for help","rich_text_area":"Rich Text Area","shortcuts_desc":"Accessability Help"});webcit-8.24-dfsg.orig/tiny_mce/themes/advanced/langs/en_dlg.js0000644000175000017500000000351612271477123024140 0ustar michaelmichaeltinyMCE.addI18n('en.advanced_dlg',{"link_list":"Link List","link_is_external":"The URL you entered seems to be an external link. Do you want to add the required http:// prefix?","link_is_email":"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?","link_titlefield":"Title","link_target_blank":"Open Link in a New Window","link_target_same":"Open Link in the Same Window","link_target":"Target","link_url":"Link URL","link_title":"Insert/Edit Link","image_align_right":"Right","image_align_left":"Left","image_align_textbottom":"Text Bottom","image_align_texttop":"Text Top","image_align_bottom":"Bottom","image_align_middle":"Middle","image_align_top":"Top","image_align_baseline":"Baseline","image_align":"Alignment","image_hspace":"Horizontal Space","image_vspace":"Vertical Space","image_dimensions":"Dimensions","image_alt":"Image Description","image_list":"Image List","image_border":"Border","image_src":"Image URL","image_title":"Insert/Edit Image","charmap_title":"Select Special Character","colorpicker_name":"Name:","colorpicker_color":"Color:","colorpicker_named_title":"Named Colors","colorpicker_named_tab":"Named","colorpicker_palette_title":"Palette Colors","colorpicker_palette_tab":"Palette","colorpicker_picker_title":"Color Picker","colorpicker_picker_tab":"Picker","colorpicker_title":"Select a Color","code_wordwrap":"Word Wrap","code_title":"HTML Source Editor","anchor_name":"Anchor Name","anchor_title":"Insert/Edit Anchor","about_loaded":"Loaded Plugins","about_version":"Version","about_author":"Author","about_plugin":"Plugin","about_plugins":"Plugins","about_license":"License","about_help":"Help","about_general":"About","about_title":"About TinyMCE","anchor_invalid":"Please specify a valid anchor name.","accessibility_help":"Accessibility Help","accessibility_usage_title":"General Usage"});webcit-8.24-dfsg.orig/tiny_mce/themes/advanced/langs/it_dlg.js0000644000175000017500000000372412271477123024153 0ustar michaelmichaeltinyMCE.addI18n('it.advanced_dlg',{"link_list":"Lista link","link_is_external":"L\'URL inserito sembra essere un link esterno. Aggiungere il necessario prefisso http:// ?","link_is_email":"L\'URL inserito sembra essere un indirizzo email. Aggiungere il necessario prefisso mailto: ?","link_titlefield":"Titolo","link_target_blank":"Apri link in una nuova finestra","link_target_same":"Apri link nella stessa finestra","link_target":"Target","link_url":"URL link","link_title":"Inserisci/modifica collegamento","image_align_right":"A destra","image_align_left":"A sinistra","image_align_textbottom":"In basso al testo","image_align_texttop":"In alto al testo","image_align_bottom":"In basso","image_align_middle":"In mezzo","image_align_top":"In alto","image_align_baseline":"Alla base","image_align":"Allineamentot","image_hspace":"Spaziatura orizz.","image_vspace":"Spaziatura vert.","image_dimensions":"Dimensioni","image_alt":"Descrizione","image_list":"Lista immagini","image_border":"Bordo","image_src":"URL immagine","image_title":"Inserisci/modifica immagine","charmap_title":"Seleziona carattere speciale","colorpicker_name":"Nome:","colorpicker_color":"Colore:","colorpicker_named_title":"Colori per nome","colorpicker_named_tab":"Per nome","colorpicker_palette_title":"Tavolozza dei colori","colorpicker_palette_tab":"Tavolozza","colorpicker_picker_title":"Selettore colori","colorpicker_picker_tab":"Selettore","colorpicker_title":"Seleziona un colore","code_wordwrap":"A capo automatico","code_title":"Editor sorgente HTML","anchor_name":"Nome ancora","anchor_title":"Inserisci/modifica ancora","about_loaded":"Plugin caricati","about_version":"Versione","about_author":"Autore","about_plugin":"Plugin","about_plugins":"Plugins","about_license":"Licenza","about_help":"Aiuto","about_general":"Informazioni","about_title":"Informazioni su TinyMCE","anchor_invalid":"Specificare un nome di ancora valido.","accessibility_help":"Accessibility Help","accessibility_usage_title":"General Usage"});webcit-8.24-dfsg.orig/tiny_mce/themes/advanced/langs/de.js0000644000175000017500000000507712271477123023304 0ustar michaelmichaeltinyMCE.addI18n('de.advanced',{"underline_desc":"Unterstrichen (Strg+U)","italic_desc":"Kursiv (Strg+I)","bold_desc":"Fett (Strg+B)",dd:"Definitionsbeschreibung",dt:"Definitionsbegriff",samp:"Beispiel",code:"Code",blockquote:"Zitatblock",h6:"\u00dcberschrift 6",h5:"\u00dcberschrift 5",h4:"\u00dcberschrift 4",h3:"\u00dcberschrift 3",h2:"\u00dcberschrift 2",h1:"\u00dcberschrift 1",pre:"Rohdaten",address:"Adresse",div:"Zusammenh\u00e4ngender Bereich",paragraph:"Absatz",block:"Vorlage",fontdefault:"Schriftart","font_size":"Schriftgr\u00f6\u00dfe","style_select":"Format","anchor_delta_width":"13","more_colors":"Weitere Farben","toolbar_focus":"Zur Werkzeugleiste springen: Alt+Q; Zum Editor springen: Alt-Z; Zum Elementpfad springen: Alt-X",newdocument:"Wollen Sie wirklich den ganzen Inhalt l\u00f6schen?",path:"Pfad","clipboard_msg":"Kopieren, Ausschneiden und Einf\u00fcgen sind im Mozilla Firefox nicht m\u00f6glich.\nWollen Sie mehr \u00fcber dieses Problem erfahren?","blockquote_desc":"Zitatblock","help_desc":"Hilfe","newdocument_desc":"Neues Dokument","image_props_desc":"Bildeigenschaften","paste_desc":"Einf\u00fcgen","copy_desc":"Kopieren","cut_desc":"Ausschneiden","anchor_desc":"Anker einf\u00fcgen/ver\u00e4ndern","visualaid_desc":"Hilfslinien und unsichtbare Elemente ein-/ausblenden","charmap_desc":"Sonderzeichen einf\u00fcgen","backcolor_desc":"Hintergrundfarbe","forecolor_desc":"Textfarbe","custom1_desc":"Benutzerdefinierte Beschreibung","removeformat_desc":"Formatierungen zur\u00fccksetzen","hr_desc":"Trennlinie einf\u00fcgen","sup_desc":"Hochgestellt","sub_desc":"Tiefgestellt","code_desc":"HTML-Quellcode bearbeiten","cleanup_desc":"Quellcode aufr\u00e4umen","image_desc":"Bild einf\u00fcgen/ver\u00e4ndern","unlink_desc":"Link entfernen","link_desc":"Link einf\u00fcgen/ver\u00e4ndern","redo_desc":"Wiederholen (Strg+Y)","undo_desc":"R\u00fcckg\u00e4ngig (Strg+Z)","indent_desc":"Einr\u00fccken","outdent_desc":"Ausr\u00fccken","numlist_desc":"Sortierte Liste","bullist_desc":"Unsortierte Liste","justifyfull_desc":"Blocksatz","justifyright_desc":"Rechtsb\u00fcndig","justifycenter_desc":"Zentriert","justifyleft_desc":"Linksb\u00fcndig","striketrough_desc":"Durchgestrichen","help_shortcut":"Dr\u00fccken Sie ALT-F10 f\u00fcr die Toolbar. Dr\u00fccken Sie ALT-0 f\u00fcr Hilfe","rich_text_area":"Rich Text Feld","shortcuts_desc":"Eingabehilfe",toolbar:"Toolbar","anchor_delta_height":"","charmap_delta_height":"","charmap_delta_width":"","colorpicker_delta_height":"","colorpicker_delta_width":"","link_delta_height":"","link_delta_width":"","image_delta_height":"","image_delta_width":""});webcit-8.24-dfsg.orig/tiny_mce/themes/advanced/langs/cs.js0000644000175000017500000000550412271477123023314 0ustar michaelmichaeltinyMCE.addI18n('cs.advanced',{"underline_desc":"Podtr\u017een\u00e9 (Ctrl+U)","italic_desc":"Kurz\u00edva (Ctrl+I)","bold_desc":"Tu\u010dn\u00e9 (Ctrl+B)",dd:"Popis definice",dt:"Term\u00edn definice",samp:"Uk\u00e1zka k\u00f3du",code:"K\u00f3d",blockquote:"Blokov\u00e1 citace",h6:"Nadpis 6",h5:"Nadpis 5",h4:"Nadpis 4",h3:"Nadpis 3",h2:"Nadpis 2",h1:"Nadpis 1",pre:"P\u0159edform\u00e1tov\u00e1no",address:"Adresa",div:"Odd\u00edl",paragraph:"Odstavec",block:"Form\u00e1t",fontdefault:"P\u00edsmo","font_size":"Velikost p\u00edsma","style_select":"Styly","more_colors":"Dal\u0161\u00ed barvy","toolbar_focus":"P\u0159echod na panel n\u00e1stroj\u016f - Alt-Q, p\u0159echod do editoru - Alt-Z, p\u0159echod na cestu prvk\u016f - Alt-X",newdocument:"Jste si opravdu jisti, \u017ee chcete odstranit ve\u0161ker\u00fd obsah?",path:"Cesta","clipboard_msg":"Funkce kop\u00edrovat/vyjmout/vlo\u017eit nejsou podporovan\u00e9 v prohl\u00ed\u017ee\u010d\u00edch Mozilla a Firefox.\nChcete v\u00edce informac\u00ed o tomto probl\u00e9mu?","blockquote_desc":"Blokov\u00e1 citace","help_desc":"N\u00e1pov\u011bda","newdocument_desc":"Nov\u00fd dokument","image_props_desc":"Vlastnosti obr\u00e1zku","paste_desc":"Vlo\u017eit","copy_desc":"Kop\u00edrovat","cut_desc":"Vyjmout","anchor_desc":"Vlo\u017eit/upravit z\u00e1lo\u017eku (kotvu)","visualaid_desc":"Zobrazit pomocn\u00e9 linky/skryt\u00e9 prvky","charmap_desc":"Vlo\u017eit speci\u00e1ln\u00ed znak","backcolor_desc":"Barva pozad\u00ed","forecolor_desc":"Barva textu","custom1_desc":"Libovoln\u00fd popisek","removeformat_desc":"Odstranit form\u00e1tov\u00e1n\u00ed","hr_desc":"Vlo\u017eit vodorovn\u00fd odd\u011blova\u010d","sup_desc":"Horn\u00ed index","sub_desc":"Doln\u00ed index","code_desc":"Upravit HTML zdroj","cleanup_desc":"Vy\u010distit k\u00f3d","image_desc":"Vlo\u017eit/upravit obr\u00e1zek","unlink_desc":"Odebrat odkaz","link_desc":"Vlo\u017eit/upravit odkaz","redo_desc":"Znovu (Ctrl+Y)","undo_desc":"Zp\u011bt (Ctrl+Z)","indent_desc":"Zv\u011bt\u0161it odsazen\u00ed","outdent_desc":"Zmen\u0161it odsazen\u00ed","numlist_desc":"\u010c\u00edslovan\u00fd seznam","bullist_desc":"Seznam s odr\u00e1\u017ekami","justifyfull_desc":"Zarovnat do bloku","justifyright_desc":"Zarovnat doprava","justifycenter_desc":"Zarovnat na st\u0159ed","justifyleft_desc":"Zarovnat doleva","striketrough_desc":"P\u0159e\u0161krtnut\u00e9","help_shortcut":"Stiskn\u011bte ALT-F10 pro panel n\u00e1stroj\u016f. Stiskn\u011bte ALT-0 pro n\u00e1pov\u011bdu.","rich_text_area":"Oblast s form\u00e1tovan\u00fdm textem","shortcuts_desc":"N\u00e1pov\u011bda",toolbar:"Panel n\u00e1stroj\u016f","anchor_delta_height":"","anchor_delta_width":"","charmap_delta_height":"","charmap_delta_width":"","colorpicker_delta_height":"","colorpicker_delta_width":"","link_delta_height":"","link_delta_width":"","image_delta_height":"","image_delta_width":""});webcit-8.24-dfsg.orig/tiny_mce/themes/advanced/editor_template.js0000644000175000017500000006107712271477123024773 0ustar michaelmichael(function(e){var d=e.DOM,b=e.dom.Event,h=e.extend,f=e.each,a=e.util.Cookie,g,c=e.explode;e.ThemeManager.requireLangPack("advanced");e.create("tinymce.themes.AdvancedTheme",{sizes:[8,10,12,14,18,24,36],controls:{bold:["bold_desc","Bold"],italic:["italic_desc","Italic"],underline:["underline_desc","Underline"],strikethrough:["striketrough_desc","Strikethrough"],justifyleft:["justifyleft_desc","JustifyLeft"],justifycenter:["justifycenter_desc","JustifyCenter"],justifyright:["justifyright_desc","JustifyRight"],justifyfull:["justifyfull_desc","JustifyFull"],bullist:["bullist_desc","InsertUnorderedList"],numlist:["numlist_desc","InsertOrderedList"],outdent:["outdent_desc","Outdent"],indent:["indent_desc","Indent"],cut:["cut_desc","Cut"],copy:["copy_desc","Copy"],paste:["paste_desc","Paste"],undo:["undo_desc","Undo"],redo:["redo_desc","Redo"],link:["link_desc","mceLink"],unlink:["unlink_desc","unlink"],image:["image_desc","mceImage"],cleanup:["cleanup_desc","mceCleanup"],help:["help_desc","mceHelp"],code:["code_desc","mceCodeEditor"],hr:["hr_desc","InsertHorizontalRule"],removeformat:["removeformat_desc","RemoveFormat"],sub:["sub_desc","subscript"],sup:["sup_desc","superscript"],forecolor:["forecolor_desc","ForeColor"],forecolorpicker:["forecolor_desc","mceForeColor"],backcolor:["backcolor_desc","HiliteColor"],backcolorpicker:["backcolor_desc","mceBackColor"],charmap:["charmap_desc","mceCharMap"],visualaid:["visualaid_desc","mceToggleVisualAid"],anchor:["anchor_desc","mceInsertAnchor"],newdocument:["newdocument_desc","mceNewDocument"],blockquote:["blockquote_desc","mceBlockQuote"]},stateControls:["bold","italic","underline","strikethrough","bullist","numlist","justifyleft","justifycenter","justifyright","justifyfull","sub","sup","blockquote"],init:function(j,k){var l=this,m,i,n;l.editor=j;l.url=k;l.onResolveName=new e.util.Dispatcher(this);j.forcedHighContrastMode=j.settings.detect_highcontrast&&l._isHighContrast();j.settings.skin=j.forcedHighContrastMode?"highcontrast":j.settings.skin;l.settings=m=h({theme_advanced_path:true,theme_advanced_toolbar_location:"bottom",theme_advanced_buttons1:"bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,styleselect,formatselect",theme_advanced_buttons2:"bullist,numlist,|,outdent,indent,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code",theme_advanced_buttons3:"hr,removeformat,visualaid,|,sub,sup,|,charmap",theme_advanced_blockformats:"p,address,pre,h1,h2,h3,h4,h5,h6",theme_advanced_toolbar_align:"center",theme_advanced_fonts:"Andale Mono=andale mono,times;Arial=arial,helvetica,sans-serif;Arial Black=arial black,avant garde;Book Antiqua=book antiqua,palatino;Comic Sans MS=comic sans ms,sans-serif;Courier New=courier new,courier;Georgia=georgia,palatino;Helvetica=helvetica;Impact=impact,chicago;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=terminal,monaco;Times New Roman=times new roman,times;Trebuchet MS=trebuchet ms,geneva;Verdana=verdana,geneva;Webdings=webdings;Wingdings=wingdings,zapf dingbats",theme_advanced_more_colors:1,theme_advanced_row_height:23,theme_advanced_resize_horizontal:1,theme_advanced_resizing_use_cookie:1,theme_advanced_font_sizes:"1,2,3,4,5,6,7",theme_advanced_font_selector:"span",theme_advanced_show_current_color:0,readonly:j.settings.readonly},j.settings);if(!m.font_size_style_values){m.font_size_style_values="8pt,10pt,12pt,14pt,18pt,24pt,36pt"}if(e.is(m.theme_advanced_font_sizes,"string")){m.font_size_style_values=e.explode(m.font_size_style_values);m.font_size_classes=e.explode(m.font_size_classes||"");n={};j.settings.theme_advanced_font_sizes=m.theme_advanced_font_sizes;f(j.getParam("theme_advanced_font_sizes","","hash"),function(q,p){var o;if(p==q&&q>=1&&q<=7){p=q+" ("+l.sizes[q-1]+"pt)";o=m.font_size_classes[q-1];q=m.font_size_style_values[q-1]||(l.sizes[q-1]+"pt")}if(/^\s*\./.test(q)){o=q.replace(/\./g,"")}n[p]=o?{"class":o}:{fontSize:q}});m.theme_advanced_font_sizes=n}if((i=m.theme_advanced_path_location)&&i!="none"){m.theme_advanced_statusbar_location=m.theme_advanced_path_location}if(m.theme_advanced_statusbar_location=="none"){m.theme_advanced_statusbar_location=0}if(j.settings.content_css!==false){j.contentCSS.push(j.baseURI.toAbsolute(k+"/skins/"+j.settings.skin+"/content.css"))}j.onInit.add(function(){if(!j.settings.readonly){j.onNodeChange.add(l._nodeChanged,l);j.onKeyUp.add(l._updateUndoStatus,l);j.onMouseUp.add(l._updateUndoStatus,l);j.dom.bind(j.dom.getRoot(),"dragend",function(){l._updateUndoStatus(j)})}});j.onSetProgressState.add(function(q,o,r){var s,t=q.id,p;if(o){l.progressTimer=setTimeout(function(){s=q.getContainer();s=s.insertBefore(d.create("DIV",{style:"position:relative"}),s.firstChild);p=d.get(q.id+"_tbl");d.add(s,"div",{id:t+"_blocker","class":"mceBlocker",style:{width:p.clientWidth+2,height:p.clientHeight+2}});d.add(s,"div",{id:t+"_progress","class":"mceProgress",style:{left:p.clientWidth/2,top:p.clientHeight/2}})},r||0)}else{d.remove(t+"_blocker");d.remove(t+"_progress");clearTimeout(l.progressTimer)}});d.loadCSS(m.editor_css?j.documentBaseURI.toAbsolute(m.editor_css):k+"/skins/"+j.settings.skin+"/ui.css");if(m.skin_variant){d.loadCSS(k+"/skins/"+j.settings.skin+"/ui_"+m.skin_variant+".css")}},_isHighContrast:function(){var i,j=d.add(d.getRoot(),"div",{style:"background-color: rgb(171,239,86);"});i=(d.getStyle(j,"background-color",true)+"").toLowerCase().replace(/ /g,"");d.remove(j);return i!="rgb(171,239,86)"&&i!="#abef56"},createControl:function(l,i){var j,k;if(k=i.createControl(l)){return k}switch(l){case"styleselect":return this._createStyleSelect();case"formatselect":return this._createBlockFormats();case"fontselect":return this._createFontSelect();case"fontsizeselect":return this._createFontSizeSelect();case"forecolor":return this._createForeColorMenu();case"backcolor":return this._createBackColorMenu()}if((j=this.controls[l])){return i.createButton(l,{title:"advanced."+j[0],cmd:j[1],ui:j[2],value:j[3]})}},execCommand:function(k,j,l){var i=this["_"+k];if(i){i.call(this,j,l);return true}return false},_importClasses:function(k){var i=this.editor,j=i.controlManager.get("styleselect");if(j.getLength()==0){f(i.dom.getClasses(),function(n,l){var m="style_"+l;i.formatter.register(m,{inline:"span",attributes:{"class":n["class"]},selector:"*"});j.add(n["class"],m)})}},_createStyleSelect:function(m){var k=this,i=k.editor,j=i.controlManager,l;l=j.createListBox("styleselect",{title:"advanced.style_select",onselect:function(o){var p,n=[];f(l.items,function(q){n.push(q.value)});i.focus();i.undoManager.add();p=i.formatter.matchAll(n);if(!o||p[0]==o){if(p[0]){i.formatter.remove(p[0])}}else{i.formatter.apply(o)}i.undoManager.add();i.nodeChanged();return false}});i.onInit.add(function(){var o=0,n=i.getParam("style_formats");if(n){f(n,function(p){var q,r=0;f(p,function(){r++});if(r>1){q=p.name=p.name||"style_"+(o++);i.formatter.register(q,p);l.add(p.title,q)}else{l.add(p.title)}})}else{f(i.getParam("theme_advanced_styles","","hash"),function(r,q){var p;if(r){p="style_"+(o++);i.formatter.register(p,{inline:"span",classes:r,selector:"*"});l.add(k.editor.translate(q),p)}})}});if(l.getLength()==0){l.onPostRender.add(function(o,p){if(!l.NativeListBox){b.add(p.id+"_text","focus",k._importClasses,k);b.add(p.id+"_text","mousedown",k._importClasses,k);b.add(p.id+"_open","focus",k._importClasses,k);b.add(p.id+"_open","mousedown",k._importClasses,k)}else{b.add(p.id,"focus",k._importClasses,k)}})}return l},_createFontSelect:function(){var k,j=this,i=j.editor;k=i.controlManager.createListBox("fontselect",{title:"advanced.fontdefault",onselect:function(l){var m=k.items[k.selectedIndex];if(!l&&m){i.execCommand("FontName",false,m.value);return}i.execCommand("FontName",false,l);k.select(function(n){return l==n});if(m&&m.value==l){k.select(null)}return false}});if(k){f(i.getParam("theme_advanced_fonts",j.settings.theme_advanced_fonts,"hash"),function(m,l){k.add(i.translate(l),m,{style:m.indexOf("dings")==-1?"font-family:"+m:""})})}return k},_createFontSizeSelect:function(){var m=this,k=m.editor,n,l=0,j=[];n=k.controlManager.createListBox("fontsizeselect",{title:"advanced.font_size",onselect:function(i){var o=n.items[n.selectedIndex];if(!i&&o){o=o.value;if(o["class"]){k.formatter.toggle("fontsize_class",{value:o["class"]});k.undoManager.add();k.nodeChanged()}else{k.execCommand("FontSize",false,o.fontSize)}return}if(i["class"]){k.focus();k.undoManager.add();k.formatter.toggle("fontsize_class",{value:i["class"]});k.undoManager.add();k.nodeChanged()}else{k.execCommand("FontSize",false,i.fontSize)}n.select(function(p){return i==p});if(o&&(o.value.fontSize==i.fontSize||o.value["class"]==i["class"])){n.select(null)}return false}});if(n){f(m.settings.theme_advanced_font_sizes,function(o,i){var p=o.fontSize;if(p>=1&&p<=7){p=m.sizes[parseInt(p)-1]+"pt"}n.add(i,o,{style:"font-size:"+p,"class":"mceFontSize"+(l++)+(" "+(o["class"]||""))})})}return n},_createBlockFormats:function(){var k,i={p:"advanced.paragraph",address:"advanced.address",pre:"advanced.pre",h1:"advanced.h1",h2:"advanced.h2",h3:"advanced.h3",h4:"advanced.h4",h5:"advanced.h5",h6:"advanced.h6",div:"advanced.div",blockquote:"advanced.blockquote",code:"advanced.code",dt:"advanced.dt",dd:"advanced.dd",samp:"advanced.samp"},j=this;k=j.editor.controlManager.createListBox("formatselect",{title:"advanced.block",onselect:function(l){j.editor.execCommand("FormatBlock",false,l);return false}});if(k){f(j.editor.getParam("theme_advanced_blockformats",j.settings.theme_advanced_blockformats,"hash"),function(m,l){k.add(j.editor.translate(l!=m?l:i[m]),m,{"class":"mce_formatPreview mce_"+m})})}return k},_createForeColorMenu:function(){var m,j=this,k=j.settings,l={},i;if(k.theme_advanced_more_colors){l.more_colors_func=function(){j._mceColorPicker(0,{color:m.value,func:function(n){m.setColor(n)}})}}if(i=k.theme_advanced_text_colors){l.colors=i}if(k.theme_advanced_default_foreground_color){l.default_color=k.theme_advanced_default_foreground_color}l.title="advanced.forecolor_desc";l.cmd="ForeColor";l.scope=this;m=j.editor.controlManager.createColorSplitButton("forecolor",l);return m},_createBackColorMenu:function(){var m,j=this,k=j.settings,l={},i;if(k.theme_advanced_more_colors){l.more_colors_func=function(){j._mceColorPicker(0,{color:m.value,func:function(n){m.setColor(n)}})}}if(i=k.theme_advanced_background_colors){l.colors=i}if(k.theme_advanced_default_background_color){l.default_color=k.theme_advanced_default_background_color}l.title="advanced.backcolor_desc";l.cmd="HiliteColor";l.scope=this;m=j.editor.controlManager.createColorSplitButton("backcolor",l);return m},renderUI:function(k){var m,l,q,v=this,r=v.editor,w=v.settings,u,j,i;if(r.settings){r.settings.aria_label=w.aria_label+r.getLang("advanced.help_shortcut")}m=j=d.create("span",{role:"application","aria-labelledby":r.id+"_voice",id:r.id+"_parent","class":"mceEditor "+r.settings.skin+"Skin"+(w.skin_variant?" "+r.settings.skin+"Skin"+v._ufirst(w.skin_variant):"")});d.add(m,"span",{"class":"mceVoiceLabel",style:"display:none;",id:r.id+"_voice"},w.aria_label);if(!d.boxModel){m=d.add(m,"div",{"class":"mceOldBoxModel"})}m=u=d.add(m,"table",{role:"presentation",id:r.id+"_tbl","class":"mceLayout",cellSpacing:0,cellPadding:0});m=q=d.add(m,"tbody");switch((w.theme_advanced_layout_manager||"").toLowerCase()){case"rowlayout":l=v._rowLayout(w,q,k);break;case"customlayout":l=r.execCallback("theme_advanced_custom_layout",w,q,k,j);break;default:l=v._simpleLayout(w,q,k,j)}m=k.targetNode;i=u.rows;d.addClass(i[0],"mceFirst");d.addClass(i[i.length-1],"mceLast");f(d.select("tr",q),function(o){d.addClass(o.firstChild,"mceFirst");d.addClass(o.childNodes[o.childNodes.length-1],"mceLast")});if(d.get(w.theme_advanced_toolbar_container)){d.get(w.theme_advanced_toolbar_container).appendChild(j)}else{d.insertAfter(j,m)}b.add(r.id+"_path_row","click",function(n){n=n.target;if(n.nodeName=="A"){v._sel(n.className.replace(/^.*mcePath_([0-9]+).*$/,"$1"));return b.cancel(n)}});if(!r.getParam("accessibility_focus")){b.add(d.add(j,"a",{href:"#"},""),"focus",function(){tinyMCE.get(r.id).focus()})}if(w.theme_advanced_toolbar_location=="external"){k.deltaHeight=0}v.deltaHeight=k.deltaHeight;k.targetNode=null;r.onKeyDown.add(function(p,n){var s=121,o=122;if(n.altKey){if(n.keyCode===s){window.focus();v.toolbarGroup.focus();return b.cancel(n)}else{if(n.keyCode===o){d.get(p.id+"_path_row").focus();return b.cancel(n)}}}});r.addShortcut("alt+0","","mceShortcuts",v);return{iframeContainer:l,editorContainer:r.id+"_parent",sizeContainer:u,deltaHeight:k.deltaHeight}},getInfo:function(){return{longname:"Advanced theme",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",version:e.majorVersion+"."+e.minorVersion}},resizeBy:function(i,j){var k=d.get(this.editor.id+"_ifr");this.resizeTo(k.clientWidth+i,k.clientHeight+j)},resizeTo:function(i,m,k){var j=this.editor,l=this.settings,n=d.get(j.id+"_tbl"),o=d.get(j.id+"_ifr");i=Math.max(l.theme_advanced_resizing_min_width||100,i);m=Math.max(l.theme_advanced_resizing_min_height||100,m);i=Math.min(l.theme_advanced_resizing_max_width||65535,i);m=Math.min(l.theme_advanced_resizing_max_height||65535,m);d.setStyle(n,"height","");d.setStyle(o,"height",m);if(l.theme_advanced_resize_horizontal){d.setStyle(n,"width","");d.setStyle(o,"width",i);if(i"));d.setHTML(l,q.join(""))},_addStatusBar:function(m,j){var k,v=this,p=v.editor,w=v.settings,i,q,u,l;k=d.add(m,"tr");k=l=d.add(k,"td",{"class":"mceStatusbar"});k=d.add(k,"div",{id:p.id+"_path_row",role:"group","aria-labelledby":p.id+"_path_voice"});if(w.theme_advanced_path){d.add(k,"span",{id:p.id+"_path_voice"},p.translate("advanced.path"));d.add(k,"span",{},": ")}else{d.add(k,"span",{}," ")}if(w.theme_advanced_resizing){d.add(l,"a",{id:p.id+"_resize",href:"javascript:;",onclick:"return false;","class":"mceResize",tabIndex:"-1"});if(w.theme_advanced_resizing_use_cookie){p.onPostRender.add(function(){var n=a.getHash("TinyMCE_"+p.id+"_size"),r=d.get(p.id+"_tbl");if(!n){return}v.resizeTo(n.cw,n.ch)})}p.onPostRender.add(function(){b.add(p.id+"_resize","click",function(n){n.preventDefault()});b.add(p.id+"_resize","mousedown",function(D){var t,r,s,o,C,z,A,F,n,E,x;function y(G){G.preventDefault();n=A+(G.screenX-C);E=F+(G.screenY-z);v.resizeTo(n,E)}function B(G){b.remove(d.doc,"mousemove",t);b.remove(p.getDoc(),"mousemove",r);b.remove(d.doc,"mouseup",s);b.remove(p.getDoc(),"mouseup",o);n=A+(G.screenX-C);E=F+(G.screenY-z);v.resizeTo(n,E,true)}D.preventDefault();C=D.screenX;z=D.screenY;x=d.get(v.editor.id+"_ifr");A=n=x.clientWidth;F=E=x.clientHeight;t=b.add(d.doc,"mousemove",y);r=b.add(p.getDoc(),"mousemove",y);s=b.add(d.doc,"mouseup",B);o=b.add(p.getDoc(),"mouseup",B)})})}j.deltaHeight-=21;k=m=null},_updateUndoStatus:function(j){var i=j.controlManager,k=j.undoManager;i.setDisabled("undo",!k.hasUndo()&&!k.typing);i.setDisabled("redo",!k.hasRedo())},_nodeChanged:function(m,r,D,q,E){var y=this,C,F=0,x,G,z=y.settings,w,k,u,B,l,j,i;e.each(y.stateControls,function(n){r.setActive(n,m.queryCommandState(y.controls[n][1]))});function o(p){var s,n=E.parents,t=p;if(typeof(p)=="string"){t=function(v){return v.nodeName==p}}for(s=0;s0){y.statusKeyboardNavigation=new e.ui.KeyboardNavigation({root:m.id+"_path_row",items:d.select("a",C),excludeFromTabOrder:true,onCancel:function(){m.focus()}},d)}}},_sel:function(i){this.editor.execCommand("mceSelectNodeDepth",false,i)},_mceInsertAnchor:function(k,j){var i=this.editor;i.windowManager.open({url:this.url+"/anchor.htm",width:320+parseInt(i.getLang("advanced.anchor_delta_width",0)),height:90+parseInt(i.getLang("advanced.anchor_delta_height",0)),inline:true},{theme_url:this.url})},_mceCharMap:function(){var i=this.editor;i.windowManager.open({url:this.url+"/charmap.htm",width:550+parseInt(i.getLang("advanced.charmap_delta_width",0)),height:250+parseInt(i.getLang("advanced.charmap_delta_height",0)),inline:true},{theme_url:this.url})},_mceHelp:function(){var i=this.editor;i.windowManager.open({url:this.url+"/about.htm",width:480,height:380,inline:true},{theme_url:this.url})},_mceShortcuts:function(){var i=this.editor;i.windowManager.open({url:this.url+"/shortcuts.htm",width:480,height:380,inline:true},{theme_url:this.url})},_mceColorPicker:function(k,j){var i=this.editor;j=j||{};i.windowManager.open({url:this.url+"/color_picker.htm",width:375+parseInt(i.getLang("advanced.colorpicker_delta_width",0)),height:250+parseInt(i.getLang("advanced.colorpicker_delta_height",0)),close_previous:false,inline:true},{input_color:j.color,func:j.func,theme_url:this.url})},_mceCodeEditor:function(j,k){var i=this.editor;i.windowManager.open({url:this.url+"/source_editor.htm",width:parseInt(i.getParam("theme_advanced_source_editor_width",720)),height:parseInt(i.getParam("theme_advanced_source_editor_height",580)),inline:true,resizable:true,maximizable:true},{theme_url:this.url})},_mceImage:function(j,k){var i=this.editor;if(i.dom.getAttrib(i.selection.getNode(),"class").indexOf("mceItem")!=-1){return}i.windowManager.open({url:this.url+"/image.htm",width:355+parseInt(i.getLang("advanced.image_delta_width",0)),height:275+parseInt(i.getLang("advanced.image_delta_height",0)),inline:true},{theme_url:this.url})},_mceLink:function(j,k){var i=this.editor;i.windowManager.open({url:this.url+"/link.htm",width:310+parseInt(i.getLang("advanced.link_delta_width",0)),height:200+parseInt(i.getLang("advanced.link_delta_height",0)),inline:true},{theme_url:this.url})},_mceNewDocument:function(){var i=this.editor;i.windowManager.confirm("advanced.newdocument",function(j){if(j){i.execCommand("mceSetContent",false,"")}})},_mceForeColor:function(){var i=this;this._mceColorPicker(0,{color:i.fgColor,func:function(j){i.fgColor=j;i.editor.execCommand("ForeColor",false,j)}})},_mceBackColor:function(){var i=this;this._mceColorPicker(0,{color:i.bgColor,func:function(j){i.bgColor=j;i.editor.execCommand("HiliteColor",false,j)}})},_ufirst:function(i){return i.substring(0,1).toUpperCase()+i.substring(1)}});e.ThemeManager.add("advanced",e.themes.AdvancedTheme)}(tinymce));webcit-8.24-dfsg.orig/tiny_mce/themes/advanced/skins/0000755000175000017500000000000012271477123022370 5ustar michaelmichaelwebcit-8.24-dfsg.orig/tiny_mce/themes/advanced/skins/default/0000755000175000017500000000000012271477123024014 5ustar michaelmichaelwebcit-8.24-dfsg.orig/tiny_mce/themes/advanced/skins/default/ui.css0000644000175000017500000003657312271477123025161 0ustar michaelmichael/* Reset */ .defaultSkin table, .defaultSkin tbody, .defaultSkin a, .defaultSkin img, .defaultSkin tr, .defaultSkin div, .defaultSkin td, .defaultSkin iframe, .defaultSkin span, .defaultSkin *, .defaultSkin .mceText {border:0; margin:0; padding:0; background:transparent; white-space:nowrap; text-decoration:none; font-weight:normal; cursor:default; color:#000; vertical-align:baseline; width:auto; border-collapse:separate; text-align:left} .defaultSkin a:hover, .defaultSkin a:link, .defaultSkin a:visited, .defaultSkin a:active {text-decoration:none; font-weight:normal; cursor:default; color:#000} .defaultSkin table td {vertical-align:middle} /* Containers */ .defaultSkin table {direction:ltr;background:transparent} .defaultSkin iframe {display:block;} .defaultSkin .mceToolbar {height:26px} .defaultSkin .mceLeft {text-align:left} .defaultSkin .mceRight {text-align:right} /* External */ .defaultSkin .mceExternalToolbar {position:absolute; border:1px solid #CCC; border-bottom:0; display:none;} .defaultSkin .mceExternalToolbar td.mceToolbar {padding-right:13px;} .defaultSkin .mceExternalClose {position:absolute; top:3px; right:3px; width:7px; height:7px; background:url(../../img/icons.gif) -820px 0} /* Layout */ .defaultSkin table.mceLayout {border:0; border-left:1px solid #CCC; border-right:1px solid #CCC} .defaultSkin table.mceLayout tr.mceFirst td {border-top:1px solid #CCC} .defaultSkin table.mceLayout tr.mceLast td {border-bottom:1px solid #CCC} .defaultSkin table.mceToolbar, .defaultSkin tr.mceFirst .mceToolbar tr td, .defaultSkin tr.mceLast .mceToolbar tr td {border:0; margin:0; padding:0;} .defaultSkin td.mceToolbar {background:#F0F0EE; padding-top:1px; vertical-align:top} .defaultSkin .mceIframeContainer {border-top:1px solid #CCC; border-bottom:1px solid #CCC} .defaultSkin .mceStatusbar {background:#F0F0EE; font-family:'MS Sans Serif',sans-serif,Verdana,Arial; font-size:9pt; line-height:16px; overflow:visible; color:#000; display:block; height:20px} .defaultSkin .mceStatusbar div {float:left; margin:2px} .defaultSkin .mceStatusbar a.mceResize {display:block; float:right; background:url(../../img/icons.gif) -800px 0; width:20px; height:20px; cursor:se-resize; outline:0} .defaultSkin .mceStatusbar a:hover {text-decoration:underline} .defaultSkin table.mceToolbar {margin-left:3px} .defaultSkin span.mceIcon, .defaultSkin img.mceIcon {display:block; width:20px; height:20px} .defaultSkin .mceIcon {background:url(../../img/icons.gif) no-repeat 20px 20px} .defaultSkin td.mceCenter {text-align:center;} .defaultSkin td.mceCenter table {margin:0 auto; text-align:left;} .defaultSkin td.mceRight table {margin:0 0 0 auto;} /* Button */ .defaultSkin .mceButton {display:block; border:1px solid #F0F0EE; width:20px; height:20px; margin-right:1px} .defaultSkin a.mceButtonEnabled:hover {border:1px solid #0A246A; background-color:#B2BBD0} .defaultSkin a.mceButtonActive, .defaultSkin a.mceButtonSelected {border:1px solid #0A246A; background-color:#C2CBE0} .defaultSkin .mceButtonDisabled .mceIcon {opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)} .defaultSkin .mceButtonLabeled {width:auto} .defaultSkin .mceButtonLabeled span.mceIcon {float:left} .defaultSkin span.mceButtonLabel {display:block; font-size:10px; padding:4px 6px 0 22px; font-family:Tahoma,Verdana,Arial,Helvetica} .defaultSkin .mceButtonDisabled .mceButtonLabel {color:#888} /* Separator */ .defaultSkin .mceSeparator {display:block; background:url(../../img/icons.gif) -180px 0; width:2px; height:20px; margin:2px 2px 0 4px} /* ListBox */ .defaultSkin .mceListBox, .defaultSkin .mceListBox a {display:block} .defaultSkin .mceListBox .mceText {padding-left:4px; width:70px; text-align:left; border:1px solid #CCC; border-right:0; background:#FFF; font-family:Tahoma,Verdana,Arial,Helvetica; font-size:11px; height:20px; line-height:20px; overflow:hidden} .defaultSkin .mceListBox .mceOpen {width:9px; height:20px; background:url(../../img/icons.gif) -741px 0; margin-right:2px; border:1px solid #CCC;} .defaultSkin table.mceListBoxEnabled:hover .mceText, .defaultSkin .mceListBoxHover .mceText, .defaultSkin .mceListBoxSelected .mceText {border:1px solid #A2ABC0; border-right:0; background:#FFF} .defaultSkin table.mceListBoxEnabled:hover .mceOpen, .defaultSkin .mceListBoxHover .mceOpen, .defaultSkin .mceListBoxSelected .mceOpen {background-color:#FFF; border:1px solid #A2ABC0} .defaultSkin .mceListBoxDisabled a.mceText {color:gray; background-color:transparent;} .defaultSkin .mceListBoxMenu {overflow:auto; overflow-x:hidden} .defaultSkin .mceOldBoxModel .mceListBox .mceText {height:22px} .defaultSkin .mceOldBoxModel .mceListBox .mceOpen {width:11px; height:22px;} .defaultSkin select.mceNativeListBox {font-family:'MS Sans Serif',sans-serif,Verdana,Arial; font-size:7pt; background:#F0F0EE; border:1px solid gray; margin-right:2px;} /* SplitButton */ .defaultSkin .mceSplitButton {width:32px; height:20px; direction:ltr} .defaultSkin .mceSplitButton a, .defaultSkin .mceSplitButton span {height:20px; display:block} .defaultSkin .mceSplitButton a.mceAction {width:20px; border:1px solid #F0F0EE; border-right:0;} .defaultSkin .mceSplitButton span.mceAction {width:20px; background-image:url(../../img/icons.gif);} .defaultSkin .mceSplitButton a.mceOpen {width:9px; background:url(../../img/icons.gif) -741px 0; border:1px solid #F0F0EE;} .defaultSkin .mceSplitButton span.mceOpen {display:none} .defaultSkin table.mceSplitButtonEnabled:hover a.mceAction, .defaultSkin .mceSplitButtonHover a.mceAction, .defaultSkin .mceSplitButtonSelected a.mceAction {border:1px solid #0A246A; border-right:0; background-color:#B2BBD0} .defaultSkin table.mceSplitButtonEnabled:hover a.mceOpen, .defaultSkin .mceSplitButtonHover a.mceOpen, .defaultSkin .mceSplitButtonSelected a.mceOpen {background-color:#B2BBD0; border:1px solid #0A246A;} .defaultSkin .mceSplitButtonDisabled .mceAction, .defaultSkin .mceSplitButtonDisabled a.mceOpen {opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)} .defaultSkin .mceSplitButtonActive a.mceAction {border:1px solid #0A246A; background-color:#C2CBE0} .defaultSkin .mceSplitButtonActive a.mceOpen {border-left:0;} /* ColorSplitButton */ .defaultSkin div.mceColorSplitMenu table {background:#FFF; border:1px solid gray} .defaultSkin .mceColorSplitMenu td {padding:2px} .defaultSkin .mceColorSplitMenu a {display:block; width:9px; height:9px; overflow:hidden; border:1px solid #808080} .defaultSkin .mceColorSplitMenu td.mceMoreColors {padding:1px 3px 1px 1px} .defaultSkin .mceColorSplitMenu a.mceMoreColors {width:100%; height:auto; text-align:center; font-family:Tahoma,Verdana,Arial,Helvetica; font-size:11px; line-height:20px; border:1px solid #FFF} .defaultSkin .mceColorSplitMenu a.mceMoreColors:hover {border:1px solid #0A246A; background-color:#B6BDD2} .defaultSkin a.mceMoreColors:hover {border:1px solid #0A246A} .defaultSkin .mceColorPreview {margin-left:2px; width:16px; height:4px; overflow:hidden; background:#9a9b9a} .defaultSkin .mce_forecolor span.mceAction, .defaultSkin .mce_backcolor span.mceAction {overflow:hidden; height:16px} /* Menu */ .defaultSkin .mceMenu {position:absolute; left:0; top:0; z-index:1000; border:1px solid #D4D0C8} .defaultSkin .mceNoIcons span.mceIcon {width:0;} .defaultSkin .mceNoIcons a .mceText {padding-left:10px} .defaultSkin .mceMenu table {background:#FFF} .defaultSkin .mceMenu a, .defaultSkin .mceMenu span, .defaultSkin .mceMenu {display:block} .defaultSkin .mceMenu td {height:20px} .defaultSkin .mceMenu a {position:relative;padding:3px 0 4px 0} .defaultSkin .mceMenu .mceText {position:relative; display:block; font-family:Tahoma,Verdana,Arial,Helvetica; color:#000; cursor:default; margin:0; padding:0 25px 0 25px; display:block} .defaultSkin .mceMenu span.mceText, .defaultSkin .mceMenu .mcePreview {font-size:11px} .defaultSkin .mceMenu pre.mceText {font-family:Monospace} .defaultSkin .mceMenu .mceIcon {position:absolute; top:0; left:0; width:22px;} .defaultSkin .mceMenu .mceMenuItemEnabled a:hover, .defaultSkin .mceMenu .mceMenuItemActive {background-color:#dbecf3} .defaultSkin td.mceMenuItemSeparator {background:#DDD; height:1px} .defaultSkin .mceMenuItemTitle a {border:0; background:#EEE; border-bottom:1px solid #DDD} .defaultSkin .mceMenuItemTitle span.mceText {color:#000; font-weight:bold; padding-left:4px} .defaultSkin .mceMenuItemDisabled .mceText {color:#888} .defaultSkin .mceMenuItemSelected .mceIcon {background:url(img/menu_check.gif)} .defaultSkin .mceNoIcons .mceMenuItemSelected a {background:url(img/menu_arrow.gif) no-repeat -6px center} .defaultSkin .mceMenu span.mceMenuLine {display:none} .defaultSkin .mceMenuItemSub a {background:url(img/menu_arrow.gif) no-repeat top right;} .defaultSkin .mceMenuItem td, .defaultSkin .mceMenuItem th {line-height: normal} /* Progress,Resize */ .defaultSkin .mceBlocker {position:absolute; left:0; top:0; z-index:1000; opacity:0.5; -ms-filter:'alpha(opacity=50)'; filter:alpha(opacity=50); background:#FFF} .defaultSkin .mceProgress {position:absolute; left:0; top:0; z-index:1001; background:url(img/progress.gif) no-repeat; width:32px; height:32px; margin:-16px 0 0 -16px} /* Formats */ .defaultSkin .mce_formatPreview a {font-size:10px} .defaultSkin .mce_p span.mceText {} .defaultSkin .mce_address span.mceText {font-style:italic} .defaultSkin .mce_pre span.mceText {font-family:monospace} .defaultSkin .mce_h1 span.mceText {font-weight:bolder; font-size: 2em} .defaultSkin .mce_h2 span.mceText {font-weight:bolder; font-size: 1.5em} .defaultSkin .mce_h3 span.mceText {font-weight:bolder; font-size: 1.17em} .defaultSkin .mce_h4 span.mceText {font-weight:bolder; font-size: 1em} .defaultSkin .mce_h5 span.mceText {font-weight:bolder; font-size: .83em} .defaultSkin .mce_h6 span.mceText {font-weight:bolder; font-size: .75em} /* Theme */ .defaultSkin span.mce_bold {background-position:0 0} .defaultSkin span.mce_italic {background-position:-60px 0} .defaultSkin span.mce_underline {background-position:-140px 0} .defaultSkin span.mce_strikethrough {background-position:-120px 0} .defaultSkin span.mce_undo {background-position:-160px 0} .defaultSkin span.mce_redo {background-position:-100px 0} .defaultSkin span.mce_cleanup {background-position:-40px 0} .defaultSkin span.mce_bullist {background-position:-20px 0} .defaultSkin span.mce_numlist {background-position:-80px 0} .defaultSkin span.mce_justifyleft {background-position:-460px 0} .defaultSkin span.mce_justifyright {background-position:-480px 0} .defaultSkin span.mce_justifycenter {background-position:-420px 0} .defaultSkin span.mce_justifyfull {background-position:-440px 0} .defaultSkin span.mce_anchor {background-position:-200px 0} .defaultSkin span.mce_indent {background-position:-400px 0} .defaultSkin span.mce_outdent {background-position:-540px 0} .defaultSkin span.mce_link {background-position:-500px 0} .defaultSkin span.mce_unlink {background-position:-640px 0} .defaultSkin span.mce_sub {background-position:-600px 0} .defaultSkin span.mce_sup {background-position:-620px 0} .defaultSkin span.mce_removeformat {background-position:-580px 0} .defaultSkin span.mce_newdocument {background-position:-520px 0} .defaultSkin span.mce_image {background-position:-380px 0} .defaultSkin span.mce_help {background-position:-340px 0} .defaultSkin span.mce_code {background-position:-260px 0} .defaultSkin span.mce_hr {background-position:-360px 0} .defaultSkin span.mce_visualaid {background-position:-660px 0} .defaultSkin span.mce_charmap {background-position:-240px 0} .defaultSkin span.mce_paste {background-position:-560px 0} .defaultSkin span.mce_copy {background-position:-700px 0} .defaultSkin span.mce_cut {background-position:-680px 0} .defaultSkin span.mce_blockquote {background-position:-220px 0} .defaultSkin .mce_forecolor span.mceAction {background-position:-720px 0} .defaultSkin .mce_backcolor span.mceAction {background-position:-760px 0} .defaultSkin span.mce_forecolorpicker {background-position:-720px 0} .defaultSkin span.mce_backcolorpicker {background-position:-760px 0} /* Plugins */ .defaultSkin span.mce_advhr {background-position:-0px -20px} .defaultSkin span.mce_ltr {background-position:-20px -20px} .defaultSkin span.mce_rtl {background-position:-40px -20px} .defaultSkin span.mce_emotions {background-position:-60px -20px} .defaultSkin span.mce_fullpage {background-position:-80px -20px} .defaultSkin span.mce_fullscreen {background-position:-100px -20px} .defaultSkin span.mce_iespell {background-position:-120px -20px} .defaultSkin span.mce_insertdate {background-position:-140px -20px} .defaultSkin span.mce_inserttime {background-position:-160px -20px} .defaultSkin span.mce_absolute {background-position:-180px -20px} .defaultSkin span.mce_backward {background-position:-200px -20px} .defaultSkin span.mce_forward {background-position:-220px -20px} .defaultSkin span.mce_insert_layer {background-position:-240px -20px} .defaultSkin span.mce_insertlayer {background-position:-260px -20px} .defaultSkin span.mce_movebackward {background-position:-280px -20px} .defaultSkin span.mce_moveforward {background-position:-300px -20px} .defaultSkin span.mce_media {background-position:-320px -20px} .defaultSkin span.mce_nonbreaking {background-position:-340px -20px} .defaultSkin span.mce_pastetext {background-position:-360px -20px} .defaultSkin span.mce_pasteword {background-position:-380px -20px} .defaultSkin span.mce_selectall {background-position:-400px -20px} .defaultSkin span.mce_preview {background-position:-420px -20px} .defaultSkin span.mce_print {background-position:-440px -20px} .defaultSkin span.mce_cancel {background-position:-460px -20px} .defaultSkin span.mce_save {background-position:-480px -20px} .defaultSkin span.mce_replace {background-position:-500px -20px} .defaultSkin span.mce_search {background-position:-520px -20px} .defaultSkin span.mce_styleprops {background-position:-560px -20px} .defaultSkin span.mce_table {background-position:-580px -20px} .defaultSkin span.mce_cell_props {background-position:-600px -20px} .defaultSkin span.mce_delete_table {background-position:-620px -20px} .defaultSkin span.mce_delete_col {background-position:-640px -20px} .defaultSkin span.mce_delete_row {background-position:-660px -20px} .defaultSkin span.mce_col_after {background-position:-680px -20px} .defaultSkin span.mce_col_before {background-position:-700px -20px} .defaultSkin span.mce_row_after {background-position:-720px -20px} .defaultSkin span.mce_row_before {background-position:-740px -20px} .defaultSkin span.mce_merge_cells {background-position:-760px -20px} .defaultSkin span.mce_table_props {background-position:-980px -20px} .defaultSkin span.mce_row_props {background-position:-780px -20px} .defaultSkin span.mce_split_cells {background-position:-800px -20px} .defaultSkin span.mce_template {background-position:-820px -20px} .defaultSkin span.mce_visualchars {background-position:-840px -20px} .defaultSkin span.mce_abbr {background-position:-860px -20px} .defaultSkin span.mce_acronym {background-position:-880px -20px} .defaultSkin span.mce_attribs {background-position:-900px -20px} .defaultSkin span.mce_cite {background-position:-920px -20px} .defaultSkin span.mce_del {background-position:-940px -20px} .defaultSkin span.mce_ins {background-position:-960px -20px} .defaultSkin span.mce_pagebreak {background-position:0 -40px} .defaultSkin span.mce_restoredraft {background-position:-20px -40px} .defaultSkin span.mce_spellchecker {background-position:-540px -20px} webcit-8.24-dfsg.orig/tiny_mce/themes/advanced/skins/default/img/0000755000175000017500000000000012271477123024570 5ustar michaelmichaelwebcit-8.24-dfsg.orig/tiny_mce/themes/advanced/skins/default/img/menu_check.gif0000644000175000017500000000010612271477123027355 0ustar michaelmichaelGIF89a!,;i#~ʶ{;webcit-8.24-dfsg.orig/tiny_mce/themes/advanced/skins/default/img/tabs.gif0000644000175000017500000000245212271477123026213 0ustar michaelmichaelGIF89a,Z62Jb͑󡳻!6,,Z@@CQ(Ȥrl:ШtJZج6[XxL.zn|N(~562*(, H*\ #JHŋ3jȱǏ CI$"HXɲ˗0cʜI͛8sɳ@}GѣH*]ʴӧPJJիXƢ`ÊKóhӶKЀڷpVSܻxk®޿ Lp+^̸d ̘L˘3k̹ϠCMӨOaװc˞M۸sͻ  +_μУKNسkνwVNOӫ_Ͼ˟O3p (h& 6F(a[ue$eevJZ$hb/ Չ,⋞4h8.n:Aԁ ZFn;1P圫杇 un:;R~`:?cB_nG %Cg{3|>>rrrMMMӿtttgggċ%%%bq慅쑐1M IDATxڵ_SWor0[3 i 0 f$A8"ʦ -Uu[8֥>mgKJ |sJ?W(..^P W _n LӦ?QxXXx)wT5k֬=T0SKcPJ^Yh3yp "%C_J,`NNNj LXZJlY<Ճjqԡ$w(0QjCpr^v?fTJP@'ի8",QZKIIQCCHڒ,cYCԮSJjuzYR~uD\&\KCv&srh/T](שԚ.3 Nb7RYjen1jlhn6\ǩihpnl`u :͌hC/F3ڠ KW 75560. ̧X #l5.dҤW5M&[{Z\L*M2ԈؐlE{ИQ"[mJ2bTvuu ;`dD4 Gts?qVnf& B Mf5 WG/Mh Hu=M/~!gƍW^piJ}܁}O;/XOQ#rqj8mË9!|}1k^߬7k8޾s*eifsmpp9' w.[^; &O0PQSSLzzRc3Ka)6 bfr` +ZT`&EE+T@/E mUоx&Xe1J딕'bXY,vEekb#B ++ke*+?sU8wEih$:)~/@,YYXLZp9*+&~>hnx''b 3uSN׳(ݴXP|sqf3&KISG=+W/Ds{񱱱q!m8tZ8n{cc86{Ibӿ:9|>e˖*Bibq2 u-><6333nw|R-Yx-0^36#GG:70dyݛGK{L--Үᵻ-P2U$ΤOeBܳܛ>JQd\g{J[8$$k'{=I Ç;r>XQW.}`Qy]z;@q)C`n_MЧi!OG|4GPs02!Yqф??Ws}}?NۏFg'UJ\#dCf!cDfu+7n ?-*Y`b{圪xn;蛞Ue#ŋ Nq?Satr!\{ ʗwyN\_V9n'̷9#^|8]az[]X4똼vYF:΄q+V>Y~ =nueYsl-x3(,l Lm9q&XmgϮgVl[j߾Ukn.-ӆʕRFD1e ,)h2H}9'[6BF_.ۧ43+Sn{Mpfka#wi)>햭|[87=s%w*IjCd*fFTcJ6?.mQXC /B"Ja%?*儏.m⡁.MTקui)ڥY nJV&:8<Tqs 046tH.դo.MҐA0j4.Mz%bBv{NHGJ@=K3 'xXo@q&[O9#hE#`ؖ6lp+NIENDB`webcit-8.24-dfsg.orig/tiny_mce/themes/advanced/skins/default/img/progress.gif0000644000175000017500000000337312271477123027131 0ustar michaelmichaelGIF89a 򺺺444ėTTT! NETSCAPE2.0!, I)KͧJJ5URK(&05+/mbp z 1;$1CI* HCh`Ao"3qT5\8aBdwxG=YgwHbvA=0V\\; ;H0t%HsrY™ ,bLv|?4BvʛPu9+& 2x& k& U] vo opraT&!,{ 'e7\l-)S7@&4+`yTSL\:=Jk:;eĈ8cA8Oj@b/+:{ tyt#|- mN qK!,lI+8b̠y h*Zp=3`C`B"pX 9bPB`Z= 8>u,St"ΦOT\um|; 8~*!,xIA]GeAPb)"!s BI М V 5q((X2=,I n#&AVq5t sny\)_g|r5!,gD+8[{`&y_hI)(L "+gN8l5"LA .%@%O@8NgL+Ƀpus/ jȩjVj c7 I!,\0t p hQm6Tqmx( 6'sa@`]-lz0 _g ir!` !,s ءXP\|)pWʄQ稊G.}!*1p v;Tݩ2 X )|f%9`}0PFd~ezGw);webcit-8.24-dfsg.orig/tiny_mce/themes/advanced/skins/default/content.css0000644000175000017500000000472312271477123026206 0ustar michaelmichaelbody, td, pre {color:#000; font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px; margin:8px;} body {background:#FFF;} body.mceForceColors {background:#FFF; color:#000;} body.mceBrowserDefaults {background:transparent; color:inherit; font-size:inherit; font-family:inherit;} h1 {font-size: 2em} h2 {font-size: 1.5em} h3 {font-size: 1.17em} h4 {font-size: 1em} h5 {font-size: .83em} h6 {font-size: .75em} .mceItemTable, .mceItemTable td, .mceItemTable th, .mceItemTable caption, .mceItemVisualAid {border: 1px dashed #BBB;} a.mceItemAnchor {display:inline-block; -webkit-user-select:all; -webkit-user-modify:read-only; -moz-user-select:all; -moz-user-modify:read-only; width:11px !important; height:11px !important; background:url(img/items.gif) no-repeat center center} span.mceItemNbsp {background: #DDD} td.mceSelected, th.mceSelected {background-color:#3399ff !important} img {border:0;} table {cursor:default} table td, table th {cursor:text} ins {border-bottom:1px solid green; text-decoration: none; color:green} del {color:red; text-decoration:line-through} cite {border-bottom:1px dashed blue} acronym {border-bottom:1px dotted #CCC; cursor:help} abbr {border-bottom:1px dashed #CCC; cursor:help} /* IE */ * html body { scrollbar-3dlight-color:#F0F0EE; scrollbar-arrow-color:#676662; scrollbar-base-color:#F0F0EE; scrollbar-darkshadow-color:#DDD; scrollbar-face-color:#E0E0DD; scrollbar-highlight-color:#F0F0EE; scrollbar-shadow-color:#F0F0EE; scrollbar-track-color:#F5F5F5; } img:-moz-broken {-moz-force-broken-image-icon:1; width:24px; height:24px} font[face=mceinline] {font-family:inherit !important} *[contentEditable]:focus {outline:0} .mceItemMedia {border:1px dotted #cc0000; background-position:center; background-repeat:no-repeat; background-color:#ffffcc} .mceItemShockWave {background-image:url(../../img/shockwave.gif)} .mceItemFlash {background-image:url(../../img/flash.gif)} .mceItemQuickTime {background-image:url(../../img/quicktime.gif)} .mceItemWindowsMedia {background-image:url(../../img/windowsmedia.gif)} .mceItemRealMedia {background-image:url(../../img/realmedia.gif)} .mceItemVideo {background-image:url(../../img/video.gif)} .mceItemAudio {background-image:url(../../img/video.gif)} .mceItemIframe {background-image:url(../../img/iframe.gif)} .mcePageBreak {display:block;border:0;width:100%;height:12px;border-top:1px dotted #ccc;margin-top:15px;background:#fff url(../../img/pagebreak.gif) no-repeat center top;} webcit-8.24-dfsg.orig/tiny_mce/themes/advanced/skins/default/dialog.css0000644000175000017500000001276012271477123025773 0ustar michaelmichael/* Generic */ body { font-family:Verdana, Arial, Helvetica, sans-serif; font-size:11px; scrollbar-3dlight-color:#F0F0EE; scrollbar-arrow-color:#676662; scrollbar-base-color:#F0F0EE; scrollbar-darkshadow-color:#DDDDDD; scrollbar-face-color:#E0E0DD; scrollbar-highlight-color:#F0F0EE; scrollbar-shadow-color:#F0F0EE; scrollbar-track-color:#F5F5F5; background:#F0F0EE; padding:0; margin:8px 8px 0 8px; } html {background:#F0F0EE;} td {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px;} textarea {resize:none;outline:none;} a:link, a:visited {color:black;} a:hover {color:#2B6FB6;} .nowrap {white-space: nowrap} /* Forms */ fieldset {margin:0; padding:4px; border:1px solid #919B9C; font-family:Verdana, Arial; font-size:10px;} legend {color:#2B6FB6; font-weight:bold;} label.msg {display:none;} label.invalid {color:#EE0000; display:inline;} input.invalid {border:1px solid #EE0000;} input {background:#FFF; border:1px solid #CCC;} input, select, textarea {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px;} input, select, textarea {border:1px solid #808080;} input.radio {border:1px none #000000; background:transparent; vertical-align:middle;} input.checkbox {border:1px none #000000; background:transparent; vertical-align:middle;} .input_noborder {border:0;} /* Buttons */ #insert, #cancel, input.button, .updateButton { border:0; margin:0; padding:0; font-weight:bold; width:94px; height:26px; background:url(img/buttons.png) 0 -26px; cursor:pointer; padding-bottom:2px; float:left; } #insert {background:url(img/buttons.png) 0 -52px} #cancel {background:url(img/buttons.png) 0 0; float:right} /* Browse */ a.pickcolor, a.browse {text-decoration:none} a.browse span {display:block; width:20px; height:18px; background:url(../../img/icons.gif) -860px 0; border:1px solid #FFF; margin-left:1px;} .mceOldBoxModel a.browse span {width:22px; height:20px;} a.browse:hover span {border:1px solid #0A246A; background-color:#B2BBD0;} a.browse span.disabled {border:1px solid white; opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)} a.browse:hover span.disabled {border:1px solid white; background-color:transparent;} a.pickcolor span {display:block; width:20px; height:16px; background:url(../../img/icons.gif) -840px 0; margin-left:2px;} .mceOldBoxModel a.pickcolor span {width:21px; height:17px;} a.pickcolor:hover span {background-color:#B2BBD0;} a.pickcolor:hover span.disabled {} /* Charmap */ table.charmap {border:1px solid #AAA; text-align:center} td.charmap, #charmap a {width:18px; height:18px; color:#000; border:1px solid #AAA; text-align:center; font-size:12px; vertical-align:middle; line-height: 18px;} #charmap a {display:block; color:#000; text-decoration:none; border:0} #charmap a:hover {background:#CCC;color:#2B6FB6} #charmap #codeN {font-size:10px; font-family:Arial,Helvetica,sans-serif; text-align:center} #charmap #codeV {font-size:40px; height:80px; border:1px solid #AAA; text-align:center} /* Source */ .wordWrapCode {vertical-align:middle; border:1px none #000000; background:transparent;} .mceActionPanel {margin-top:5px;} /* Tabs classes */ .tabs {width:100%; height:18px; line-height:normal; background:url(img/tabs.gif) repeat-x 0 -72px;} .tabs ul {margin:0; padding:0; list-style:none;} .tabs li {float:left; background:url(img/tabs.gif) no-repeat 0 0; margin:0 2px 0 0; padding:0 0 0 10px; line-height:17px; height:18px; display:block;} .tabs li.current {background:url(img/tabs.gif) no-repeat 0 -18px; margin-right:2px;} .tabs span {float:left; display:block; background:url(img/tabs.gif) no-repeat right -36px; padding:0px 10px 0 0;} .tabs .current span {background:url(img/tabs.gif) no-repeat right -54px;} .tabs a {text-decoration:none; font-family:Verdana, Arial; font-size:10px;} .tabs a:link, .tabs a:visited, .tabs a:hover {color:black;} /* Panels */ .panel_wrapper div.panel {display:none;} .panel_wrapper div.current {display:block; width:100%; height:300px; overflow:visible;} .panel_wrapper {border:1px solid #919B9C; border-top:0px; padding:10px; padding-top:5px; clear:both; background:white;} /* Columns */ .column {float:left;} .properties {width:100%;} .properties .column1 {} .properties .column2 {text-align:left;} /* Titles */ h1, h2, h3, h4 {color:#2B6FB6; margin:0; padding:0; padding-top:5px;} h3 {font-size:14px;} .title {font-size:12px; font-weight:bold; color:#2B6FB6;} /* Dialog specific */ #link .panel_wrapper, #link div.current {height:125px;} #image .panel_wrapper, #image div.current {height:200px;} #plugintable thead {font-weight:bold; background:#DDD;} #plugintable, #about #plugintable td {border:1px solid #919B9C;} #plugintable {width:96%; margin-top:10px;} #pluginscontainer {height:290px; overflow:auto;} #colorpicker #preview {float:right; width:50px; height:14px;line-height:1px; border:1px solid black; margin-left:5px;} #colorpicker #colors {float:left; border:1px solid gray; cursor:crosshair;} #colorpicker #light {border:1px solid gray; margin-left:5px; float:left;width:15px; height:150px; cursor:crosshair;} #colorpicker #light div {overflow:hidden;} #colorpicker #previewblock {float:right; padding-left:10px; height:20px;} #colorpicker .panel_wrapper div.current {height:175px;} #colorpicker #namedcolors {width:150px;} #colorpicker #namedcolors a {display:block; float:left; width:10px; height:10px; margin:1px 1px 0 0; overflow:hidden;} #colorpicker #colornamecontainer {margin-top:5px;} #colorpicker #picker_panel fieldset {margin:auto;width:325px;} webcit-8.24-dfsg.orig/tiny_mce/themes/advanced/skins/highcontrast/0000755000175000017500000000000012271477123025065 5ustar michaelmichaelwebcit-8.24-dfsg.orig/tiny_mce/themes/advanced/skins/highcontrast/ui.css0000644000175000017500000002104312271477123026214 0ustar michaelmichael/* Reset */ .highcontrastSkin table, .highcontrastSkin tbody, .highcontrastSkin a, .highcontrastSkin img, .highcontrastSkin tr, .highcontrastSkin div, .highcontrastSkin td, .highcontrastSkin iframe, .highcontrastSkin span, .highcontrastSkin *, .highcontrastSkin .mceText {border:0; margin:0; padding:0; vertical-align:baseline; border-collapse:separate;} .highcontrastSkin a:hover, .highcontrastSkin a:link, .highcontrastSkin a:visited, .highcontrastSkin a:active {text-decoration:none; font-weight:normal; cursor:default;} .highcontrastSkin table td {vertical-align:middle} .highcontrastSkin .mceIconOnly {display: block !important;} /* External */ .highcontrastSkin .mceExternalToolbar {position:absolute; border:1px solid; border-bottom:0; display:none; background-color: white;} .highcontrastSkin .mceExternalToolbar td.mceToolbar {padding-right:13px;} .highcontrastSkin .mceExternalClose {position:absolute; top:3px; right:3px; width:7px; height:7px;} /* Layout */ .highcontrastSkin table.mceLayout {border: 1px solid;} .highcontrastSkin .mceIframeContainer {border-top:1px solid; border-bottom:1px solid} .highcontrastSkin .mceStatusbar a:hover {text-decoration:underline} .highcontrastSkin .mceStatusbar {display:block; line-height:1.5em; overflow:visible;} .highcontrastSkin .mceStatusbar div {float:left} .highcontrastSkin .mceStatusbar a.mceResize {display:block; float:right; width:20px; height:20px; cursor:se-resize; outline:0} .highcontrastSkin .mceToolbar td { display: inline-block; float: left;} .highcontrastSkin .mceToolbar tr { display: block;} .highcontrastSkin .mceToolbar table { display: block; } /* Button */ .highcontrastSkin .mceButton { display:block; margin: 2px; padding: 5px 10px;border: 1px solid; border-radius: 3px; -moz-border-radius: 3px; -webkit-border-radius: 3px; -ms-border-radius: 3px; height: 2em;} .highcontrastSkin .mceButton .mceVoiceLabel { height: 100%; vertical-align: center; line-height: 2em} .highcontrastSkin .mceButtonDisabled .mceVoiceLabel { opacity:0.6; -ms-filter:'alpha(opacity=60)'; filter:alpha(opacity=60);} .highcontrastSkin .mceButtonActive, .highcontrastSkin .mceButton:focus, .highcontrastSkin .mceButton:active { border: 5px solid; padding: 1px 6px;-webkit-focus-ring-color:none;outline:none;} /* Separator */ .highcontrastSkin .mceSeparator {display:block; width:16px; height:26px;} /* ListBox */ .highcontrastSkin .mceListBox { display: block; margin:2px;-webkit-focus-ring-color:none;outline:none;} .highcontrastSkin .mceListBox .mceText {padding: 5px 6px; line-height: 2em; width: 15ex; overflow: hidden;} .highcontrastSkin .mceListBoxDisabled .mceText { opacity:0.6; -ms-filter:'alpha(opacity=60)'; filter:alpha(opacity=60);} .highcontrastSkin .mceListBox a.mceText { padding: 5px 10px; display: block; height: 2em; line-height: 2em; border: 1px solid; border-right: 0; border-radius: 3px 0px 0px 3px; -moz-border-radius: 3px 0px 0px 3px; -webkit-border-radius: 3px 0px 0px 3px; -ms-border-radius: 3px 0px 0px 3px;} .highcontrastSkin .mceListBox a.mceOpen { padding: 5px 4px; display: block; height: 2em; line-height: 2em; border: 1px solid; border-left: 0; border-radius: 0px 3px 3px 0px; -moz-border-radius: 0px 3px 3px 0px; -webkit-border-radius: 0px 3px 3px 0px; -ms-border-radius: 0px 3px 3px 0px;} .highcontrastSkin .mceListBox:focus a.mceText, .highcontrastSkin .mceListBox:active a.mceText { border-width: 5px; padding: 1px 10px 1px 6px;} .highcontrastSkin .mceListBox:focus a.mceOpen, .highcontrastSkin .mceListBox:active a.mceOpen { border-width: 5px; padding: 1px 0px 1px 4px;} .highcontrastSkin .mceListBoxMenu {overflow-y:auto} /* SplitButton */ .highcontrastSkin .mceSplitButtonDisabled .mceAction {opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)} .highcontrastSkin .mceSplitButton { border-collapse: collapse; margin: 2px; height: 2em; line-height: 2em;-webkit-focus-ring-color:none;outline:none;} .highcontrastSkin .mceSplitButton td { display: table-cell; float: none; margin: 0; padding: 0; height: 2em;} .highcontrastSkin .mceSplitButton tr { display: table-row; } .highcontrastSkin table.mceSplitButton { display: table; } .highcontrastSkin .mceSplitButton a.mceAction { padding: 5px 10px; display: block; height: 2em; line-height: 2em; overflow: hidden; border: 1px solid; border-right: 0; border-radius: 3px 0px 0px 3px; -moz-border-radius: 3px 0px 0px 3px; -webkit-border-radius: 3px 0px 0px 3px; -ms-border-radius: 3px 0px 0px 3px;} .highcontrastSkin .mceSplitButton a.mceOpen { padding: 5px 4px; display: block; height: 2em; line-height: 2em; border: 1px solid; border-radius: 0px 3px 3px 0px; -moz-border-radius: 0px 3px 3px 0px; -webkit-border-radius: 0px 3px 3px 0px; -ms-border-radius: 0px 3px 3px 0px;} .highcontrastSkin .mceSplitButton .mceVoiceLabel { height: 2em; vertical-align: center; line-height: 2em; } .highcontrastSkin .mceSplitButton:focus a.mceAction, .highcontrastSkin .mceSplitButton:active a.mceAction { border-width: 5px; border-right-width: 1px; padding: 1px 10px 1px 6px;-webkit-focus-ring-color:none;outline:none;} .highcontrastSkin .mceSplitButton:focus a.mceOpen, .highcontrastSkin .mceSplitButton:active a.mceOpen { border-width: 5px; border-left-width: 1px; padding: 1px 0px 1px 4px;-webkit-focus-ring-color:none;outline:none;} /* Menu */ .highcontrastSkin .mceNoIcons span.mceIcon {width:0;} .highcontrastSkin .mceMenu {position:absolute; left:0; top:0; z-index:1000; border:1px solid; } .highcontrastSkin .mceMenu table {background:white; color: black} .highcontrastSkin .mceNoIcons a .mceText {padding-left:10px} .highcontrastSkin .mceMenu a, .highcontrastSkin .mceMenu span, .highcontrastSkin .mceMenu {display:block;background:white; color: black} .highcontrastSkin .mceMenu td {height:2em} .highcontrastSkin .mceMenu a {position:relative;padding:3px 0 4px 0; display: block;} .highcontrastSkin .mceMenu .mceText {position:relative; display:block; cursor:default; margin:0; padding:0 25px 0 25px;} .highcontrastSkin .mceMenu pre.mceText {font-family:Monospace} .highcontrastSkin .mceMenu .mceIcon {position:absolute; top:0; left:0; width:26px;} .highcontrastSkin td.mceMenuItemSeparator {border-top:1px solid; height:1px} .highcontrastSkin .mceMenuItemTitle a {border:0; border-bottom:1px solid} .highcontrastSkin .mceMenuItemTitle span.mceText {font-weight:bold; padding-left:4px} .highcontrastSkin .mceNoIcons .mceMenuItemSelected span.mceText:before {content: "\2713\A0";} .highcontrastSkin .mceMenu span.mceMenuLine {display:none} .highcontrastSkin .mceMenuItemSub a .mceText:after {content: "\A0\25B8"} .highcontrastSkin .mceMenuItem td, .highcontrastSkin .mceMenuItem th {line-height: normal} /* ColorSplitButton */ .highcontrastSkin div.mceColorSplitMenu table {background:#FFF; border:1px solid; color: #000} .highcontrastSkin .mceColorSplitMenu td {padding:2px} .highcontrastSkin .mceColorSplitMenu a {display:block; width:16px; height:16px; overflow:hidden; color:#000; margin: 0; padding: 0;} .highcontrastSkin .mceColorSplitMenu td.mceMoreColors {padding:1px 3px 1px 1px} .highcontrastSkin .mceColorSplitMenu a.mceMoreColors {width:100%; height:auto; text-align:center; font-family:Tahoma,Verdana,Arial,Helvetica; font-size:11px; line-height:20px; border:1px solid #FFF} .highcontrastSkin .mceColorSplitMenu a.mceMoreColors:hover {border:1px solid; background-color:#B6BDD2} .highcontrastSkin a.mceMoreColors:hover {border:1px solid #0A246A; color: #000;} .highcontrastSkin .mceColorPreview {display:none;} .highcontrastSkin .mce_forecolor span.mceAction, .highcontrastSkin .mce_backcolor span.mceAction {height:17px;overflow:hidden} /* Progress,Resize */ .highcontrastSkin .mceBlocker {position:absolute; left:0; top:0; z-index:1000; opacity:0.5; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=50); background:#FFF} .highcontrastSkin .mceProgress {position:absolute; left:0; top:0; z-index:1001; background:url(../default/img/progress.gif) no-repeat; width:32px; height:32px; margin:-16px 0 0 -16px} /* Formats */ .highcontrastSkin .mce_p span.mceText {} .highcontrastSkin .mce_address span.mceText {font-style:italic} .highcontrastSkin .mce_pre span.mceText {font-family:monospace} .highcontrastSkin .mce_h1 span.mceText {font-weight:bolder; font-size: 2em} .highcontrastSkin .mce_h2 span.mceText {font-weight:bolder; font-size: 1.5em} .highcontrastSkin .mce_h3 span.mceText {font-weight:bolder; font-size: 1.17em} .highcontrastSkin .mce_h4 span.mceText {font-weight:bolder; font-size: 1em} .highcontrastSkin .mce_h5 span.mceText {font-weight:bolder; font-size: .83em} .highcontrastSkin .mce_h6 span.mceText {font-weight:bolder; font-size: .75em} webcit-8.24-dfsg.orig/tiny_mce/themes/advanced/skins/highcontrast/content.css0000644000175000017500000000211112271477123027244 0ustar michaelmichaelbody, td, pre { margin:8px;} body.mceForceColors {background:#FFF; color:#000;} h1 {font-size: 2em} h2 {font-size: 1.5em} h3 {font-size: 1.17em} h4 {font-size: 1em} h5 {font-size: .83em} h6 {font-size: .75em} .mceItemTable, .mceItemTable td, .mceItemTable th, .mceItemTable caption, .mceItemVisualAid {border: 1px dashed #BBB;} a.mceItemAnchor {display:inline-block; width:11px !important; height:11px !important; background:url(../default/img/items.gif) no-repeat 0 0;} span.mceItemNbsp {background: #DDD} td.mceSelected, th.mceSelected {background-color:#3399ff !important} img {border:0;} table {cursor:default} table td, table th {cursor:text} ins {border-bottom:1px solid green; text-decoration: none; color:green} del {color:red; text-decoration:line-through} cite {border-bottom:1px dashed blue} acronym {border-bottom:1px dotted #CCC; cursor:help} abbr {border-bottom:1px dashed #CCC; cursor:help} img:-moz-broken {-moz-force-broken-image-icon:1; width:24px; height:24px} font[face=mceinline] {font-family:inherit !important} *[contentEditable]:focus {outline:0} webcit-8.24-dfsg.orig/tiny_mce/themes/advanced/skins/highcontrast/dialog.css0000644000175000017500000001172112271477123027040 0ustar michaelmichael/* Generic */ body { font-family:Verdana, Arial, Helvetica, sans-serif; font-size:11px; background:#F0F0EE; color: black; padding:0; margin:8px 8px 0 8px; } html {background:#F0F0EE; color:#000;} td {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px;} textarea {resize:none;outline:none;} a:link, a:visited {color:black;background-color:transparent;} a:hover {color:#2B6FB6;background-color:transparent;} .nowrap {white-space: nowrap} /* Forms */ fieldset {margin:0; padding:4px; border:1px solid #919B9C; font-family:Verdana, Arial; font-size:10px;} legend {color:#2B6FB6; font-weight:bold;} label.msg {display:none;} label.invalid {color:#EE0000; display:inline;background-color:transparent;} input.invalid {border:1px solid #EE0000;background-color:transparent;} input {background:#FFF; border:1px solid #CCC;color:black;} input, select, textarea {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px;} input, select, textarea {border:1px solid #808080;} input.radio {border:1px none #000000; background:transparent; vertical-align:middle;} input.checkbox {border:1px none #000000; background:transparent; vertical-align:middle;} .input_noborder {border:0;} /* Buttons */ #insert, #cancel, input.button, .updateButton { font-weight:bold; width:94px; height:23px; cursor:pointer; padding-bottom:2px; float:left; } #cancel {float:right} /* Browse */ a.pickcolor, a.browse {text-decoration:none} a.browse span {display:block; width:20px; height:18px; background:url(../../img/icons.gif) -860px 0; border:1px solid #FFF; margin-left:1px;} .mceOldBoxModel a.browse span {width:22px; height:20px;} a.browse:hover span {border:1px solid #0A246A; background-color:#B2BBD0;} a.browse span.disabled {border:1px solid white; opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)} a.browse:hover span.disabled {border:1px solid white; background-color:transparent;} a.pickcolor span {display:block; width:20px; height:16px; background:url(../../img/icons.gif) -840px 0; margin-left:2px;} .mceOldBoxModel a.pickcolor span {width:21px; height:17px;} a.pickcolor:hover span {background-color:#B2BBD0;} a.pickcolor:hover span.disabled {} /* Charmap */ table.charmap {border:1px solid #AAA; text-align:center} td.charmap, #charmap a {width:18px; height:18px; color:#000; border:1px solid #AAA; text-align:center; font-size:12px; vertical-align:middle; line-height: 18px;} #charmap a {display:block; color:#000; text-decoration:none; border:0} #charmap a:hover {background:#CCC;color:#2B6FB6} #charmap #codeN {font-size:10px; font-family:Arial,Helvetica,sans-serif; text-align:center} #charmap #codeV {font-size:40px; height:80px; border:1px solid #AAA; text-align:center} /* Source */ .wordWrapCode {vertical-align:middle; border:1px none #000000; background:transparent;} .mceActionPanel {margin-top:5px;} /* Tabs classes */ .tabs {width:100%; height:18px; line-height:normal;} .tabs ul {margin:0; padding:0; list-style:none;} .tabs li {float:left; border: 1px solid black; border-bottom:0; margin:0 2px 0 0; padding:0 0 0 10px; line-height:17px; height:18px; display:block; cursor:pointer;} .tabs li.current {font-weight: bold; margin-right:2px;} .tabs span {float:left; display:block; padding:0px 10px 0 0;} .tabs a {text-decoration:none; font-family:Verdana, Arial; font-size:10px;} .tabs a:link, .tabs a:visited, .tabs a:hover {color:black;} /* Panels */ .panel_wrapper div.panel {display:none;} .panel_wrapper div.current {display:block; width:100%; height:300px; overflow:visible;} .panel_wrapper {border:1px solid #919B9C; padding:10px; padding-top:5px; clear:both; background:white;} /* Columns */ .column {float:left;} .properties {width:100%;} .properties .column1 {} .properties .column2 {text-align:left;} /* Titles */ h1, h2, h3, h4 {color:#2B6FB6; margin:0; padding:0; padding-top:5px;} h3 {font-size:14px;} .title {font-size:12px; font-weight:bold; color:#2B6FB6;} /* Dialog specific */ #link .panel_wrapper, #link div.current {height:125px;} #image .panel_wrapper, #image div.current {height:200px;} #plugintable thead {font-weight:bold; background:#DDD;} #plugintable, #about #plugintable td {border:1px solid #919B9C;} #plugintable {width:96%; margin-top:10px;} #pluginscontainer {height:290px; overflow:auto;} #colorpicker #preview {float:right; width:50px; height:14px;line-height:1px; border:1px solid black; margin-left:5px;} #colorpicker #colors {float:left; border:1px solid gray; cursor:crosshair;} #colorpicker #light {border:1px solid gray; margin-left:5px; float:left;width:15px; height:150px; cursor:crosshair;} #colorpicker #light div {overflow:hidden;} #colorpicker #previewblock {float:right; padding-left:10px; height:20px;} #colorpicker .panel_wrapper div.current {height:175px;} #colorpicker #namedcolors {width:150px;} #colorpicker #namedcolors a {display:block; float:left; width:10px; height:10px; margin:1px 1px 0 0; overflow:hidden;} #colorpicker #colornamecontainer {margin-top:5px;} webcit-8.24-dfsg.orig/tiny_mce/themes/advanced/skins/o2k7/0000755000175000017500000000000012271477123023152 5ustar michaelmichaelwebcit-8.24-dfsg.orig/tiny_mce/themes/advanced/skins/o2k7/ui.css0000644000175000017500000003552412271477123024312 0ustar michaelmichael/* Reset */ .o2k7Skin table, .o2k7Skin tbody, .o2k7Skin a, .o2k7Skin img, .o2k7Skin tr, .o2k7Skin div, .o2k7Skin td, .o2k7Skin iframe, .o2k7Skin span, .o2k7Skin *, .o2k7Skin .mceText {border:0; margin:0; padding:0; background:transparent; white-space:nowrap; text-decoration:none; font-weight:normal; cursor:default; color:#000; vertical-align:baseline; width:auto; border-collapse:separate; text-align:left} .o2k7Skin a:hover, .o2k7Skin a:link, .o2k7Skin a:visited, .o2k7Skin a:active {text-decoration:none; font-weight:normal; cursor:default; color:#000} .o2k7Skin table td {vertical-align:middle} /* Containers */ .o2k7Skin table {background:transparent} .o2k7Skin iframe {display:block;} .o2k7Skin .mceToolbar {height:26px} /* External */ .o2k7Skin .mceExternalToolbar {position:absolute; border:1px solid #ABC6DD; border-bottom:0; display:none} .o2k7Skin .mceExternalToolbar td.mceToolbar {padding-right:13px;} .o2k7Skin .mceExternalClose {position:absolute; top:3px; right:3px; width:7px; height:7px; background:url(../../img/icons.gif) -820px 0} /* Layout */ .o2k7Skin table.mceLayout {border:0; border-left:1px solid #ABC6DD; border-right:1px solid #ABC6DD} .o2k7Skin table.mceLayout tr.mceFirst td {border-top:1px solid #ABC6DD} .o2k7Skin table.mceLayout tr.mceLast td {border-bottom:1px solid #ABC6DD} .o2k7Skin table.mceToolbar, .o2k7Skin tr.mceFirst .mceToolbar tr td, .o2k7Skin tr.mceLast .mceToolbar tr td {border:0; margin:0; padding:0} .o2k7Skin .mceIframeContainer {border-top:1px solid #ABC6DD; border-bottom:1px solid #ABC6DD} .o2k7Skin td.mceToolbar{background:#E5EFFD} .o2k7Skin .mceStatusbar {background:#E5EFFD; display:block; font-family:'MS Sans Serif',sans-serif,Verdana,Arial; font-size:9pt; line-height:16px; overflow:visible; color:#000; height:20px} .o2k7Skin .mceStatusbar div {float:left; padding:2px} .o2k7Skin .mceStatusbar a.mceResize {display:block; float:right; background:url(../../img/icons.gif) -800px 0; width:20px; height:20px; cursor:se-resize; outline:0} .o2k7Skin .mceStatusbar a:hover {text-decoration:underline} .o2k7Skin table.mceToolbar {margin-left:3px} .o2k7Skin .mceToolbar .mceToolbarStart span {display:block; background:url(img/button_bg.png) -22px 0; width:1px; height:22px; margin-left:3px;} .o2k7Skin .mceToolbar td.mceFirst span {margin:0} .o2k7Skin .mceToolbar .mceToolbarEnd span {display:block; background:url(img/button_bg.png) -22px 0; width:1px; height:22px} .o2k7Skin .mceToolbar .mceToolbarEndListBox span, .o2k7Skin .mceToolbar .mceToolbarStartListBox span {display:none} .o2k7Skin span.mceIcon, .o2k7Skin img.mceIcon {display:block; width:20px; height:20px} .o2k7Skin .mceIcon {background:url(../../img/icons.gif) no-repeat 20px 20px} .o2k7Skin td.mceCenter {text-align:center;} .o2k7Skin td.mceCenter table {margin:0 auto; text-align:left;} .o2k7Skin td.mceRight table {margin:0 0 0 auto;} /* Button */ .o2k7Skin .mceButton {display:block; background:url(img/button_bg.png); width:22px; height:22px} .o2k7Skin a.mceButton span, .o2k7Skin a.mceButton img {margin-left:1px} .o2k7Skin .mceOldBoxModel a.mceButton span, .o2k7Skin .mceOldBoxModel a.mceButton img {margin:0 0 0 1px} .o2k7Skin a.mceButtonEnabled:hover {background-color:#B2BBD0; background-position:0 -22px} .o2k7Skin a.mceButtonActive, .o2k7Skin a.mceButtonSelected {background-position:0 -44px} .o2k7Skin .mceButtonDisabled .mceIcon {opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)} .o2k7Skin .mceButtonLabeled {width:auto} .o2k7Skin .mceButtonLabeled span.mceIcon {float:left} .o2k7Skin span.mceButtonLabel {display:block; font-size:10px; padding:4px 6px 0 22px; font-family:Tahoma,Verdana,Arial,Helvetica} .o2k7Skin .mceButtonDisabled .mceButtonLabel {color:#888} /* Separator */ .o2k7Skin .mceSeparator {display:block; background:url(img/button_bg.png) -22px 0; width:5px; height:22px} /* ListBox */ .o2k7Skin .mceListBox {padding-left: 3px} .o2k7Skin .mceListBox, .o2k7Skin .mceListBox a {display:block} .o2k7Skin .mceListBox .mceText {padding-left:4px; text-align:left; width:70px; border:1px solid #b3c7e1; border-right:0; background:#eaf2fb; font-family:Tahoma,Verdana,Arial,Helvetica; font-size:11px; height:20px; line-height:20px; overflow:hidden} .o2k7Skin .mceListBox .mceOpen {width:14px; height:22px; background:url(img/button_bg.png) -66px 0} .o2k7Skin table.mceListBoxEnabled:hover .mceText, .o2k7Skin .mceListBoxHover .mceText, .o2k7Skin .mceListBoxSelected .mceText {background:#FFF} .o2k7Skin table.mceListBoxEnabled:hover .mceOpen, .o2k7Skin .mceListBoxHover .mceOpen, .o2k7Skin .mceListBoxSelected .mceOpen {background-position:-66px -22px} .o2k7Skin .mceListBoxDisabled .mceText {color:gray} .o2k7Skin .mceListBoxMenu {overflow:auto; overflow-x:hidden; margin-left:3px} .o2k7Skin .mceOldBoxModel .mceListBox .mceText {height:22px} .o2k7Skin select.mceListBox {font-family:Tahoma,Verdana,Arial,Helvetica; font-size:12px; border:1px solid #b3c7e1; background:#FFF;} /* SplitButton */ .o2k7Skin .mceSplitButton, .o2k7Skin .mceSplitButton a, .o2k7Skin .mceSplitButton span {display:block; height:22px; direction:ltr} .o2k7Skin .mceSplitButton {background:url(img/button_bg.png)} .o2k7Skin .mceSplitButton a.mceAction {width:22px} .o2k7Skin .mceSplitButton span.mceAction {width:22px; background-image:url(../../img/icons.gif)} .o2k7Skin .mceSplitButton a.mceOpen {width:10px; background:url(img/button_bg.png) -44px 0} .o2k7Skin .mceSplitButton span.mceOpen {display:none} .o2k7Skin table.mceSplitButtonEnabled:hover a.mceAction, .o2k7Skin .mceSplitButtonHover a.mceAction, .o2k7Skin .mceSplitButtonSelected {background:url(img/button_bg.png) 0 -22px} .o2k7Skin table.mceSplitButtonEnabled:hover a.mceOpen, .o2k7Skin .mceSplitButtonHover a.mceOpen, .o2k7Skin .mceSplitButtonSelected a.mceOpen {background-position:-44px -44px} .o2k7Skin .mceSplitButtonDisabled .mceAction {opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)} .o2k7Skin .mceSplitButtonActive {background-position:0 -44px} /* ColorSplitButton */ .o2k7Skin div.mceColorSplitMenu table {background:#FFF; border:1px solid gray} .o2k7Skin .mceColorSplitMenu td {padding:2px} .o2k7Skin .mceColorSplitMenu a {display:block; width:9px; height:9px; overflow:hidden; border:1px solid #808080} .o2k7Skin .mceColorSplitMenu td.mceMoreColors {padding:1px 3px 1px 1px} .o2k7Skin .mceColorSplitMenu a.mceMoreColors {width:100%; height:auto; text-align:center; font-family:Tahoma,Verdana,Arial,Helvetica; font-size:11px; line-height:20px; border:1px solid #FFF} .o2k7Skin .mceColorSplitMenu a.mceMoreColors:hover {border:1px solid #0A246A; background-color:#B6BDD2} .o2k7Skin a.mceMoreColors:hover {border:1px solid #0A246A} .o2k7Skin .mceColorPreview {margin-left:2px; width:16px; height:4px; overflow:hidden; background:#9a9b9a;overflow:hidden} .o2k7Skin .mce_forecolor span.mceAction, .o2k7Skin .mce_backcolor span.mceAction {height:15px;overflow:hidden} /* Menu */ .o2k7Skin .mceMenu {position:absolute; left:0; top:0; z-index:1000; border:1px solid #ABC6DD} .o2k7Skin .mceNoIcons span.mceIcon {width:0;} .o2k7Skin .mceNoIcons a .mceText {padding-left:10px} .o2k7Skin .mceMenu table {background:#FFF} .o2k7Skin .mceMenu a, .o2k7Skin .mceMenu span, .o2k7Skin .mceMenu {display:block} .o2k7Skin .mceMenu td {height:20px} .o2k7Skin .mceMenu a {position:relative;padding:3px 0 4px 0} .o2k7Skin .mceMenu .mceText {position:relative; display:block; font-family:Tahoma,Verdana,Arial,Helvetica; color:#000; cursor:default; margin:0; padding:0 25px 0 25px; display:block} .o2k7Skin .mceMenu span.mceText, .o2k7Skin .mceMenu .mcePreview {font-size:11px} .o2k7Skin .mceMenu pre.mceText {font-family:Monospace} .o2k7Skin .mceMenu .mceIcon {position:absolute; top:0; left:0; width:22px;} .o2k7Skin .mceMenu .mceMenuItemEnabled a:hover, .o2k7Skin .mceMenu .mceMenuItemActive {background-color:#dbecf3} .o2k7Skin td.mceMenuItemSeparator {background:#DDD; height:1px} .o2k7Skin .mceMenuItemTitle a {border:0; background:#E5EFFD; border-bottom:1px solid #ABC6DD} .o2k7Skin .mceMenuItemTitle span.mceText {color:#000; font-weight:bold; padding-left:4px} .o2k7Skin .mceMenuItemDisabled .mceText {color:#888} .o2k7Skin .mceMenuItemSelected .mceIcon {background:url(../default/img/menu_check.gif)} .o2k7Skin .mceNoIcons .mceMenuItemSelected a {background:url(../default/img/menu_arrow.gif) no-repeat -6px center} .o2k7Skin .mceMenu span.mceMenuLine {display:none} .o2k7Skin .mceMenuItemSub a {background:url(../default/img/menu_arrow.gif) no-repeat top right;} .o2k7Skin .mceMenuItem td, .o2k7Skin .mceMenuItem th {line-height: normal} /* Progress,Resize */ .o2k7Skin .mceBlocker {position:absolute; left:0; top:0; z-index:1000; opacity:0.5; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=50); background:#FFF} .o2k7Skin .mceProgress {position:absolute; left:0; top:0; z-index:1001; background:url(../default/img/progress.gif) no-repeat; width:32px; height:32px; margin:-16px 0 0 -16px} /* Formats */ .o2k7Skin .mce_formatPreview a {font-size:10px} .o2k7Skin .mce_p span.mceText {} .o2k7Skin .mce_address span.mceText {font-style:italic} .o2k7Skin .mce_pre span.mceText {font-family:monospace} .o2k7Skin .mce_h1 span.mceText {font-weight:bolder; font-size: 2em} .o2k7Skin .mce_h2 span.mceText {font-weight:bolder; font-size: 1.5em} .o2k7Skin .mce_h3 span.mceText {font-weight:bolder; font-size: 1.17em} .o2k7Skin .mce_h4 span.mceText {font-weight:bolder; font-size: 1em} .o2k7Skin .mce_h5 span.mceText {font-weight:bolder; font-size: .83em} .o2k7Skin .mce_h6 span.mceText {font-weight:bolder; font-size: .75em} /* Theme */ .o2k7Skin span.mce_bold {background-position:0 0} .o2k7Skin span.mce_italic {background-position:-60px 0} .o2k7Skin span.mce_underline {background-position:-140px 0} .o2k7Skin span.mce_strikethrough {background-position:-120px 0} .o2k7Skin span.mce_undo {background-position:-160px 0} .o2k7Skin span.mce_redo {background-position:-100px 0} .o2k7Skin span.mce_cleanup {background-position:-40px 0} .o2k7Skin span.mce_bullist {background-position:-20px 0} .o2k7Skin span.mce_numlist {background-position:-80px 0} .o2k7Skin span.mce_justifyleft {background-position:-460px 0} .o2k7Skin span.mce_justifyright {background-position:-480px 0} .o2k7Skin span.mce_justifycenter {background-position:-420px 0} .o2k7Skin span.mce_justifyfull {background-position:-440px 0} .o2k7Skin span.mce_anchor {background-position:-200px 0} .o2k7Skin span.mce_indent {background-position:-400px 0} .o2k7Skin span.mce_outdent {background-position:-540px 0} .o2k7Skin span.mce_link {background-position:-500px 0} .o2k7Skin span.mce_unlink {background-position:-640px 0} .o2k7Skin span.mce_sub {background-position:-600px 0} .o2k7Skin span.mce_sup {background-position:-620px 0} .o2k7Skin span.mce_removeformat {background-position:-580px 0} .o2k7Skin span.mce_newdocument {background-position:-520px 0} .o2k7Skin span.mce_image {background-position:-380px 0} .o2k7Skin span.mce_help {background-position:-340px 0} .o2k7Skin span.mce_code {background-position:-260px 0} .o2k7Skin span.mce_hr {background-position:-360px 0} .o2k7Skin span.mce_visualaid {background-position:-660px 0} .o2k7Skin span.mce_charmap {background-position:-240px 0} .o2k7Skin span.mce_paste {background-position:-560px 0} .o2k7Skin span.mce_copy {background-position:-700px 0} .o2k7Skin span.mce_cut {background-position:-680px 0} .o2k7Skin span.mce_blockquote {background-position:-220px 0} .o2k7Skin .mce_forecolor span.mceAction {background-position:-720px 0} .o2k7Skin .mce_backcolor span.mceAction {background-position:-760px 0} .o2k7Skin span.mce_forecolorpicker {background-position:-720px 0} .o2k7Skin span.mce_backcolorpicker {background-position:-760px 0} /* Plugins */ .o2k7Skin span.mce_advhr {background-position:-0px -20px} .o2k7Skin span.mce_ltr {background-position:-20px -20px} .o2k7Skin span.mce_rtl {background-position:-40px -20px} .o2k7Skin span.mce_emotions {background-position:-60px -20px} .o2k7Skin span.mce_fullpage {background-position:-80px -20px} .o2k7Skin span.mce_fullscreen {background-position:-100px -20px} .o2k7Skin span.mce_iespell {background-position:-120px -20px} .o2k7Skin span.mce_insertdate {background-position:-140px -20px} .o2k7Skin span.mce_inserttime {background-position:-160px -20px} .o2k7Skin span.mce_absolute {background-position:-180px -20px} .o2k7Skin span.mce_backward {background-position:-200px -20px} .o2k7Skin span.mce_forward {background-position:-220px -20px} .o2k7Skin span.mce_insert_layer {background-position:-240px -20px} .o2k7Skin span.mce_insertlayer {background-position:-260px -20px} .o2k7Skin span.mce_movebackward {background-position:-280px -20px} .o2k7Skin span.mce_moveforward {background-position:-300px -20px} .o2k7Skin span.mce_media {background-position:-320px -20px} .o2k7Skin span.mce_nonbreaking {background-position:-340px -20px} .o2k7Skin span.mce_pastetext {background-position:-360px -20px} .o2k7Skin span.mce_pasteword {background-position:-380px -20px} .o2k7Skin span.mce_selectall {background-position:-400px -20px} .o2k7Skin span.mce_preview {background-position:-420px -20px} .o2k7Skin span.mce_print {background-position:-440px -20px} .o2k7Skin span.mce_cancel {background-position:-460px -20px} .o2k7Skin span.mce_save {background-position:-480px -20px} .o2k7Skin span.mce_replace {background-position:-500px -20px} .o2k7Skin span.mce_search {background-position:-520px -20px} .o2k7Skin span.mce_styleprops {background-position:-560px -20px} .o2k7Skin span.mce_table {background-position:-580px -20px} .o2k7Skin span.mce_cell_props {background-position:-600px -20px} .o2k7Skin span.mce_delete_table {background-position:-620px -20px} .o2k7Skin span.mce_delete_col {background-position:-640px -20px} .o2k7Skin span.mce_delete_row {background-position:-660px -20px} .o2k7Skin span.mce_col_after {background-position:-680px -20px} .o2k7Skin span.mce_col_before {background-position:-700px -20px} .o2k7Skin span.mce_row_after {background-position:-720px -20px} .o2k7Skin span.mce_row_before {background-position:-740px -20px} .o2k7Skin span.mce_merge_cells {background-position:-760px -20px} .o2k7Skin span.mce_table_props {background-position:-980px -20px} .o2k7Skin span.mce_row_props {background-position:-780px -20px} .o2k7Skin span.mce_split_cells {background-position:-800px -20px} .o2k7Skin span.mce_template {background-position:-820px -20px} .o2k7Skin span.mce_visualchars {background-position:-840px -20px} .o2k7Skin span.mce_abbr {background-position:-860px -20px} .o2k7Skin span.mce_acronym {background-position:-880px -20px} .o2k7Skin span.mce_attribs {background-position:-900px -20px} .o2k7Skin span.mce_cite {background-position:-920px -20px} .o2k7Skin span.mce_del {background-position:-940px -20px} .o2k7Skin span.mce_ins {background-position:-960px -20px} .o2k7Skin span.mce_pagebreak {background-position:0 -40px} .o2k7Skin span.mce_restoredraft {background-position:-20px -40px} .o2k7Skin span.mce_spellchecker {background-position:-540px -20px} webcit-8.24-dfsg.orig/tiny_mce/themes/advanced/skins/o2k7/ui_black.css0000644000175000017500000000323712271477123025442 0ustar michaelmichael/* Black */ .o2k7SkinBlack .mceToolbar .mceToolbarStart span, .o2k7SkinBlack .mceToolbar .mceToolbarEnd span, .o2k7SkinBlack .mceButton, .o2k7SkinBlack .mceSplitButton, .o2k7SkinBlack .mceSeparator, .o2k7SkinBlack .mceSplitButton a.mceOpen, .o2k7SkinBlack .mceListBox a.mceOpen {background-image:url(img/button_bg_black.png)} .o2k7SkinBlack td.mceToolbar, .o2k7SkinBlack td.mceStatusbar, .o2k7SkinBlack .mceMenuItemTitle a, .o2k7SkinBlack .mceMenuItemTitle span.mceText, .o2k7SkinBlack .mceStatusbar div, .o2k7SkinBlack .mceStatusbar span, .o2k7SkinBlack .mceStatusbar a {background:#535353; color:#FFF} .o2k7SkinBlack table.mceListBoxEnabled .mceText, o2k7SkinBlack .mceListBox .mceText {background:#FFF; border:1px solid #CBCFD4; border-bottom-color:#989FA9; border-right:0} .o2k7SkinBlack table.mceListBoxEnabled:hover .mceText, .o2k7SkinBlack .mceListBoxHover .mceText, .o2k7SkinBlack .mceListBoxSelected .mceText {background:#FFF; border:1px solid #FFBD69; border-right:0} .o2k7SkinBlack .mceExternalToolbar, .o2k7SkinBlack .mceListBox .mceText, .o2k7SkinBlack div.mceMenu, .o2k7SkinBlack table.mceLayout, .o2k7SkinBlack .mceMenuItemTitle a, .o2k7SkinBlack table.mceLayout tr.mceFirst td, .o2k7SkinBlack table.mceLayout, .o2k7SkinBlack .mceMenuItemTitle a, .o2k7SkinBlack table.mceLayout tr.mceLast td, .o2k7SkinBlack .mceIframeContainer {border-color: #535353;} .o2k7SkinBlack table.mceSplitButtonEnabled:hover a.mceAction, .o2k7SkinBlack .mceSplitButtonHover a.mceAction, .o2k7SkinBlack .mceSplitButtonSelected {background-image:url(img/button_bg_black.png)} .o2k7SkinBlack .mceMenu .mceMenuItemEnabled a:hover, .o2k7SkinBlack .mceMenu .mceMenuItemActive {background-color:#FFE7A1}webcit-8.24-dfsg.orig/tiny_mce/themes/advanced/skins/o2k7/img/0000755000175000017500000000000012271477123023726 5ustar michaelmichaelwebcit-8.24-dfsg.orig/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_silver.png0000644000175000017500000000404412271477123030005 0ustar michaelmichaelPNG  IHDRXBIDATxMo[E],莲 %@ @B.*肯M+ -HB%PhKB?k Iׇz:y3:3s+H9sx&}gϞRȾE` 7d]p_olm&7_!1]{;8`Ȃw={%~O ^O/,,MϪ]7 v8\o4^W4ƍ42Ts1~DcGz4z =g(X_Ļ .W*R.W*e)W *2r=֯EZ#`\SSD *s.5&ݠS0n3(OjDl"g΅6nZIEԐ'f =&#J# k\K$dEd1IT|h}&`^æ)}j6lIՒVA3s}j ѯgT2hr/-@@6ǘGWN-NGmIXu]&ؼ!o`fuTy?nWLz1&ع?Tpu{֘޸7E}{:߼6~5Y3߳ϑѾ{}dkzJ/`W~hA=pHʃ&~[9gR33hχ <kq3"Wu$k363ڠkxG"A%xX_0dh)%%̖7nҿrg>OGtqƚQ:x+<烿`må),N!\#ew|g}o/esF`5Wpf.?~6w!sܝkC횛A//}o~F:pt!XjGD~y@qnG;8ox3 ='] ?NIPנOpZ}&o4sw0%1_(QנSp(e9# Ʒ9D \]O~!Ψ# ^+g Sa1\CͻY+r|(;sZvs~(D?"!xcl~fL9Y`QD99`~}vwrS+ O~zh1iu ؽTyZbpQ׹*>MD0&s7 + 8ݴC0Mวsܴ?-`gmYApS?^vsT1:KzAs5FDM9>-;V~U Z݄rcS΍9qOG)`3-%tۆrEK2SEk1 ^{ܿ_;2_i1̧IENDB`webcit-8.24-dfsg.orig/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_black.png0000644000175000017500000000121312271477123027550 0ustar michaelmichaelPNG  IHDRXB pHYs  PLTESSSrv|ĻƻǼȾɿ?MPTW[^beimrv{ǀɄˉ͎uz߄btRNS,ЩWIDATX핱jA   jL&]g/ FTA{X6ZofoO6|)wG/X}Ƈ"qKT\g"3v>|bOŬ\jHk30MWȝ .Vl8 kU|w#L/!5 naԡSNEztPu*!G_;Dau* ϊ Bacpp7E {<-@jТѢ8/!WaYaZ|AV:. R xX8`T@h5ZZ켡T~12wa{M Gc6ÿzG|RQЃ6P` 8Ƕـ`0UуGQ" #T3J@i~u"NQ N7'dl1tkUqtH{o+p๭0Jer<2$sOI̍t$jM͐!u:uV̑\N %]=y*yJ@& ÁF a.De,uXuQR ;!rcaG-GiFkΣx+#'"_]|OԐ흢6zbG䞦@p]uE@3u<*R0ܨ3TTK{Ly<,;{/g"N3|F- 20׫dS%r{9y|zg|5!5/EXumE.9;2_v%YT]kf- T)9;crt#=;Ou]2{)rnR$wyD)'-=$g0 UAڸ@F(cûD8oޒ.YL&HMG8Cfn3PCpf:t@,9!g>& X-V=kd_'*AO@%E?Orߜ9F2^,YO @ x$E.QWBR]%2(c Vb D-=,kRV%(cc@u8:A9* A##nJ  QVD9VW(c1$K/qÀ 8ϑI(c `18g0?ƏIu*QK9 M>+D3n9N3ќlN9RƑ H8Ki>]RJ8jXz%e(c͒ڢ*(Cܡ8Z,CEY"^ Qq'BjڪQq2s8N4uU#8݇ lU0(ॆL Kb c-zUO؟LCDTH9y%l((*sz>.mff~=IENDB`webcit-8.24-dfsg.orig/tiny_mce/themes/advanced/skins/o2k7/ui_silver.css0000644000175000017500000000153412271477123025670 0ustar michaelmichael/* Silver */ .o2k7SkinSilver .mceToolbar .mceToolbarStart span, .o2k7SkinSilver .mceButton, .o2k7SkinSilver .mceSplitButton, .o2k7SkinSilver .mceSeparator, .o2k7SkinSilver .mceSplitButton a.mceOpen, .o2k7SkinSilver .mceListBox a.mceOpen {background-image:url(img/button_bg_silver.png)} .o2k7SkinSilver td.mceToolbar, .o2k7SkinSilver td.mceStatusbar, .o2k7SkinSilver .mceMenuItemTitle a {background:#eee} .o2k7SkinSilver .mceListBox .mceText {background:#FFF} .o2k7SkinSilver .mceExternalToolbar, .o2k7SkinSilver .mceListBox .mceText, .o2k7SkinSilver div.mceMenu, .o2k7SkinSilver table.mceLayout, .o2k7SkinSilver .mceMenuItemTitle a, .o2k7SkinSilver table.mceLayout tr.mceFirst td, .o2k7SkinSilver table.mceLayout, .o2k7SkinSilver .mceMenuItemTitle a, .o2k7SkinSilver table.mceLayout tr.mceLast td, .o2k7SkinSilver .mceIframeContainer {border-color: #bbb} webcit-8.24-dfsg.orig/tiny_mce/themes/advanced/skins/o2k7/content.css0000644000175000017500000000440212271477123025336 0ustar michaelmichaelbody, td, pre {color:#000; font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px; margin:8px;} body {background:#FFF;} body.mceForceColors {background:#FFF; color:#000;} h1 {font-size: 2em} h2 {font-size: 1.5em} h3 {font-size: 1.17em} h4 {font-size: 1em} h5 {font-size: .83em} h6 {font-size: .75em} .mceItemTable, .mceItemTable td, .mceItemTable th, .mceItemTable caption, .mceItemVisualAid {border: 1px dashed #BBB;} a.mceItemAnchor {display:inline-block; width:11px !important; height:11px !important; background:url(../default/img/items.gif) no-repeat 0 0;} span.mceItemNbsp {background: #DDD} td.mceSelected, th.mceSelected {background-color:#3399ff !important} img {border:0;} table {cursor:default} table td, table th {cursor:text} ins {border-bottom:1px solid green; text-decoration: none; color:green} del {color:red; text-decoration:line-through} cite {border-bottom:1px dashed blue} acronym {border-bottom:1px dotted #CCC; cursor:help} abbr {border-bottom:1px dashed #CCC; cursor:help} /* IE */ * html body { scrollbar-3dlight-color:#F0F0EE; scrollbar-arrow-color:#676662; scrollbar-base-color:#F0F0EE; scrollbar-darkshadow-color:#DDD; scrollbar-face-color:#E0E0DD; scrollbar-highlight-color:#F0F0EE; scrollbar-shadow-color:#F0F0EE; scrollbar-track-color:#F5F5F5; } img:-moz-broken {-moz-force-broken-image-icon:1; width:24px; height:24px} font[face=mceinline] {font-family:inherit !important} *[contentEditable]:focus {outline:0} .mceItemMedia {border:1px dotted #cc0000; background-position:center; background-repeat:no-repeat; background-color:#ffffcc} .mceItemShockWave {background-image:url(../../img/shockwave.gif)} .mceItemFlash {background-image:url(../../img/flash.gif)} .mceItemQuickTime {background-image:url(../../img/quicktime.gif)} .mceItemWindowsMedia {background-image:url(../../img/windowsmedia.gif)} .mceItemRealMedia {background-image:url(../../img/realmedia.gif)} .mceItemVideo {background-image:url(../../img/video.gif)} .mceItemAudio {background-image:url(../../img/video.gif)} .mceItemIframe {background-image:url(../../img/iframe.gif)} .mcePageBreak {display:block;border:0;width:100%;height:12px;border-top:1px dotted #ccc;margin-top:15px;background:#fff url(../../img/pagebreak.gif) no-repeat center top;} webcit-8.24-dfsg.orig/tiny_mce/themes/advanced/skins/o2k7/dialog.css0000644000175000017500000001311012271477123025117 0ustar michaelmichael/* Generic */ body { font-family:Verdana, Arial, Helvetica, sans-serif; font-size:11px; scrollbar-3dlight-color:#F0F0EE; scrollbar-arrow-color:#676662; scrollbar-base-color:#F0F0EE; scrollbar-darkshadow-color:#DDDDDD; scrollbar-face-color:#E0E0DD; scrollbar-highlight-color:#F0F0EE; scrollbar-shadow-color:#F0F0EE; scrollbar-track-color:#F5F5F5; background:#F0F0EE; padding:0; margin:8px 8px 0 8px; } html {background:#F0F0EE;} td {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px;} textarea {resize:none;outline:none;} a:link, a:visited {color:black;} a:hover {color:#2B6FB6;} .nowrap {white-space: nowrap} /* Forms */ fieldset {margin:0; padding:4px; border:1px solid #919B9C; font-family:Verdana, Arial; font-size:10px;} legend {color:#2B6FB6; font-weight:bold;} label.msg {display:none;} label.invalid {color:#EE0000; display:inline;} input.invalid {border:1px solid #EE0000;} input {background:#FFF; border:1px solid #CCC;} input, select, textarea {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px;} input, select, textarea {border:1px solid #808080;} input.radio {border:1px none #000000; background:transparent; vertical-align:middle;} input.checkbox {border:1px none #000000; background:transparent; vertical-align:middle;} .input_noborder {border:0;} /* Buttons */ #insert, #cancel, input.button, .updateButton { border:0; margin:0; padding:0; font-weight:bold; width:94px; height:26px; background:url(../default/img/buttons.png) 0 -26px; cursor:pointer; padding-bottom:2px; float:left; } #insert {background:url(../default/img/buttons.png) 0 -52px} #cancel {background:url(../default/img/buttons.png) 0 0; float:right} /* Browse */ a.pickcolor, a.browse {text-decoration:none} a.browse span {display:block; width:20px; height:18px; background:url(../../img/icons.gif) -860px 0; border:1px solid #FFF; margin-left:1px;} .mceOldBoxModel a.browse span {width:22px; height:20px;} a.browse:hover span {border:1px solid #0A246A; background-color:#B2BBD0;} a.browse span.disabled {border:1px solid white; opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)} a.browse:hover span.disabled {border:1px solid white; background-color:transparent;} a.pickcolor span {display:block; width:20px; height:16px; background:url(../../img/icons.gif) -840px 0; margin-left:2px;} .mceOldBoxModel a.pickcolor span {width:21px; height:17px;} a.pickcolor:hover span {background-color:#B2BBD0;} a.pickcolor:hover span.disabled {} /* Charmap */ table.charmap {border:1px solid #AAA; text-align:center} td.charmap, #charmap a {width:18px; height:18px; color:#000; border:1px solid #AAA; text-align:center; font-size:12px; vertical-align:middle; line-height: 18px;} #charmap a {display:block; color:#000; text-decoration:none; border:0} #charmap a:hover {background:#CCC;color:#2B6FB6} #charmap #codeN {font-size:10px; font-family:Arial,Helvetica,sans-serif; text-align:center} #charmap #codeV {font-size:40px; height:80px; border:1px solid #AAA; text-align:center} /* Source */ .wordWrapCode {vertical-align:middle; border:1px none #000000; background:transparent;} .mceActionPanel {margin-top:5px;} /* Tabs classes */ .tabs {width:100%; height:18px; line-height:normal; background:url(../default/img/tabs.gif) repeat-x 0 -72px;} .tabs ul {margin:0; padding:0; list-style:none;} .tabs li {float:left; background:url(../default/img/tabs.gif) no-repeat 0 0; margin:0 2px 0 0; padding:0 0 0 10px; line-height:17px; height:18px; display:block;} .tabs li.current {background:url(../default/img/tabs.gif) no-repeat 0 -18px; margin-right:2px;} .tabs span {float:left; display:block; background:url(../default/img/tabs.gif) no-repeat right -36px; padding:0px 10px 0 0;} .tabs .current span {background:url(../default/img/tabs.gif) no-repeat right -54px;} .tabs a {text-decoration:none; font-family:Verdana, Arial; font-size:10px;} .tabs a:link, .tabs a:visited, .tabs a:hover {color:black;} /* Panels */ .panel_wrapper div.panel {display:none;} .panel_wrapper div.current {display:block; width:100%; height:300px; overflow:visible;} .panel_wrapper {border:1px solid #919B9C; border-top:0px; padding:10px; padding-top:5px; clear:both; background:white;} /* Columns */ .column {float:left;} .properties {width:100%;} .properties .column1 {} .properties .column2 {text-align:left;} /* Titles */ h1, h2, h3, h4 {color:#2B6FB6; margin:0; padding:0; padding-top:5px;} h3 {font-size:14px;} .title {font-size:12px; font-weight:bold; color:#2B6FB6;} /* Dialog specific */ #link .panel_wrapper, #link div.current {height:125px;} #image .panel_wrapper, #image div.current {height:200px;} #plugintable thead {font-weight:bold; background:#DDD;} #plugintable, #about #plugintable td {border:1px solid #919B9C;} #plugintable {width:96%; margin-top:10px;} #pluginscontainer {height:290px; overflow:auto;} #colorpicker #preview {float:right; width:50px; height:14px;line-height:1px; border:1px solid black; margin-left:5px;} #colorpicker #colors {float:left; border:1px solid gray; cursor:crosshair;} #colorpicker #light {border:1px solid gray; margin-left:5px; float:left;width:15px; height:150px; cursor:crosshair;} #colorpicker #light div {overflow:hidden;} #colorpicker #previewblock {float:right; padding-left:10px; height:20px;} #colorpicker .panel_wrapper div.current {height:175px;} #colorpicker #namedcolors {width:150px;} #colorpicker #namedcolors a {display:block; float:left; width:10px; height:10px; margin:1px 1px 0 0; overflow:hidden;} #colorpicker #colornamecontainer {margin-top:5px;} #colorpicker #picker_panel fieldset {margin:auto;width:325px;} webcit-8.24-dfsg.orig/tiny_mce/themes/advanced/link.htm0000644000175000017500000000473712271477123022723 0ustar michaelmichael {#advanced_dlg.link_title}
     
    webcit-8.24-dfsg.orig/tiny_mce/themes/advanced/image.htm0000644000175000017500000000770612271477123023047 0ustar michaelmichael {#advanced_dlg.image_title}
     
    x
    webcit-8.24-dfsg.orig/tiny_mce/themes/advanced/source_editor.htm0000644000175000017500000000234212271477123024622 0ustar michaelmichael {#advanced_dlg.code_title}

    webcit-8.24-dfsg.orig/tiny_mce/themes/advanced/js/0000755000175000017500000000000012271477123021655 5ustar michaelmichaelwebcit-8.24-dfsg.orig/tiny_mce/themes/advanced/js/image.js0000644000175000017500000001426512271477123023305 0ustar michaelmichaelvar ImageDialog = { preInit : function() { var url; tinyMCEPopup.requireLangPack(); if (url = tinyMCEPopup.getParam("external_image_list_url")) document.write(''); }, init : function() { var f = document.forms[0], ed = tinyMCEPopup.editor; // Setup browse button document.getElementById('srcbrowsercontainer').innerHTML = getBrowserHTML('srcbrowser','src','image','theme_advanced_image'); if (isVisible('srcbrowser')) document.getElementById('src').style.width = '180px'; e = ed.selection.getNode(); this.fillFileList('image_list', tinyMCEPopup.getParam('external_image_list', 'tinyMCEImageList')); if (e.nodeName == 'IMG') { f.src.value = ed.dom.getAttrib(e, 'src'); f.alt.value = ed.dom.getAttrib(e, 'alt'); f.border.value = this.getAttrib(e, 'border'); f.vspace.value = this.getAttrib(e, 'vspace'); f.hspace.value = this.getAttrib(e, 'hspace'); f.width.value = ed.dom.getAttrib(e, 'width'); f.height.value = ed.dom.getAttrib(e, 'height'); f.insert.value = ed.getLang('update'); this.styleVal = ed.dom.getAttrib(e, 'style'); selectByValue(f, 'image_list', f.src.value); selectByValue(f, 'align', this.getAttrib(e, 'align')); this.updateStyle(); } }, fillFileList : function(id, l) { var dom = tinyMCEPopup.dom, lst = dom.get(id), v, cl; l = typeof(l) === 'function' ? l() : window[l]; if (l && l.length > 0) { lst.options[lst.options.length] = new Option('', ''); tinymce.each(l, function(o) { lst.options[lst.options.length] = new Option(o[0], o[1]); }); } else dom.remove(dom.getParent(id, 'tr')); }, update : function() { var f = document.forms[0], nl = f.elements, ed = tinyMCEPopup.editor, args = {}, el; tinyMCEPopup.restoreSelection(); if (f.src.value === '') { if (ed.selection.getNode().nodeName == 'IMG') { ed.dom.remove(ed.selection.getNode()); ed.execCommand('mceRepaint'); } tinyMCEPopup.close(); return; } if (!ed.settings.inline_styles) { args = tinymce.extend(args, { vspace : nl.vspace.value, hspace : nl.hspace.value, border : nl.border.value, align : getSelectValue(f, 'align') }); } else args.style = this.styleVal; tinymce.extend(args, { src : f.src.value.replace(/ /g, '%20'), alt : f.alt.value, width : f.width.value, height : f.height.value }); el = ed.selection.getNode(); if (el && el.nodeName == 'IMG') { ed.dom.setAttribs(el, args); tinyMCEPopup.editor.execCommand('mceRepaint'); tinyMCEPopup.editor.focus(); } else { tinymce.each(args, function(value, name) { if (value === "") { delete args[name]; } }); ed.execCommand('mceInsertContent', false, tinyMCEPopup.editor.dom.createHTML('img', args), {skip_undo : 1}); ed.undoManager.add(); } tinyMCEPopup.close(); }, updateStyle : function() { var dom = tinyMCEPopup.dom, st, v, f = document.forms[0]; if (tinyMCEPopup.editor.settings.inline_styles) { st = tinyMCEPopup.dom.parseStyle(this.styleVal); // Handle align v = getSelectValue(f, 'align'); if (v) { if (v == 'left' || v == 'right') { st['float'] = v; delete st['vertical-align']; } else { st['vertical-align'] = v; delete st['float']; } } else { delete st['float']; delete st['vertical-align']; } // Handle border v = f.border.value; if (v || v == '0') { if (v == '0') st['border'] = '0'; else st['border'] = v + 'px solid black'; } else delete st['border']; // Handle hspace v = f.hspace.value; if (v) { delete st['margin']; st['margin-left'] = v + 'px'; st['margin-right'] = v + 'px'; } else { delete st['margin-left']; delete st['margin-right']; } // Handle vspace v = f.vspace.value; if (v) { delete st['margin']; st['margin-top'] = v + 'px'; st['margin-bottom'] = v + 'px'; } else { delete st['margin-top']; delete st['margin-bottom']; } // Merge st = tinyMCEPopup.dom.parseStyle(dom.serializeStyle(st), 'img'); this.styleVal = dom.serializeStyle(st, 'img'); } }, getAttrib : function(e, at) { var ed = tinyMCEPopup.editor, dom = ed.dom, v, v2; if (ed.settings.inline_styles) { switch (at) { case 'align': if (v = dom.getStyle(e, 'float')) return v; if (v = dom.getStyle(e, 'vertical-align')) return v; break; case 'hspace': v = dom.getStyle(e, 'margin-left') v2 = dom.getStyle(e, 'margin-right'); if (v && v == v2) return parseInt(v.replace(/[^0-9]/g, '')); break; case 'vspace': v = dom.getStyle(e, 'margin-top') v2 = dom.getStyle(e, 'margin-bottom'); if (v && v == v2) return parseInt(v.replace(/[^0-9]/g, '')); break; case 'border': v = 0; tinymce.each(['top', 'right', 'bottom', 'left'], function(sv) { sv = dom.getStyle(e, 'border-' + sv + '-width'); // False or not the same as prev if (!sv || (sv != v && v !== 0)) { v = 0; return false; } if (sv) v = sv; }); if (v) return parseInt(v.replace(/[^0-9]/g, '')); break; } } if (v = dom.getAttrib(e, at)) return v; return ''; }, resetImageData : function() { var f = document.forms[0]; f.width.value = f.height.value = ""; }, updateImageData : function() { var f = document.forms[0], t = ImageDialog; if (f.width.value == "") f.width.value = t.preloadImg.width; if (f.height.value == "") f.height.value = t.preloadImg.height; }, getImageData : function() { var f = document.forms[0]; this.preloadImg = new Image(); this.preloadImg.onload = this.updateImageData; this.preloadImg.onerror = this.resetImageData; this.preloadImg.src = tinyMCEPopup.editor.documentBaseURI.toAbsolute(f.src.value); } }; ImageDialog.preInit(); tinyMCEPopup.onInit.add(ImageDialog.init, ImageDialog); webcit-8.24-dfsg.orig/tiny_mce/themes/advanced/js/about.js0000644000175000017500000000423312271477123023327 0ustar michaelmichaeltinyMCEPopup.requireLangPack(); function init() { var ed, tcont; tinyMCEPopup.resizeToInnerSize(); ed = tinyMCEPopup.editor; // Give FF some time window.setTimeout(insertHelpIFrame, 10); tcont = document.getElementById('plugintablecontainer'); document.getElementById('plugins_tab').style.display = 'none'; var html = ""; html += ''; html += ''; html += ''; html += ''; html += ''; html += ''; html += ''; html += ''; html += ''; tinymce.each(ed.plugins, function(p, n) { var info; if (!p.getInfo) return; html += ''; info = p.getInfo(); if (info.infourl != null && info.infourl != '') html += ''; else html += ''; if (info.authorurl != null && info.authorurl != '') html += ''; else html += ''; html += ''; html += ''; document.getElementById('plugins_tab').style.display = ''; }); html += ''; html += '
    ' + ed.getLang('advanced_dlg.about_plugin') + '' + ed.getLang('advanced_dlg.about_author') + '' + ed.getLang('advanced_dlg.about_version') + '
    ' + info.longname + '' + info.longname + '' + info.author + '' + info.author + '' + info.version + '
    '; tcont.innerHTML = html; tinyMCEPopup.dom.get('version').innerHTML = tinymce.majorVersion + "." + tinymce.minorVersion; tinyMCEPopup.dom.get('date').innerHTML = tinymce.releaseDate; } function insertHelpIFrame() { var html; if (tinyMCEPopup.getParam('docs_url')) { html = ''; document.getElementById('iframecontainer').innerHTML = html; document.getElementById('help_tab').style.display = 'block'; document.getElementById('help_tab').setAttribute("aria-hidden", "false"); } } tinyMCEPopup.onInit.add(init); webcit-8.24-dfsg.orig/tiny_mce/themes/advanced/js/link.js0000644000175000017500000001142412271477123023152 0ustar michaelmichaeltinyMCEPopup.requireLangPack(); var LinkDialog = { preInit : function() { var url; if (url = tinyMCEPopup.getParam("external_link_list_url")) document.write(''); }, init : function() { var f = document.forms[0], ed = tinyMCEPopup.editor; // Setup browse button document.getElementById('hrefbrowsercontainer').innerHTML = getBrowserHTML('hrefbrowser', 'href', 'file', 'theme_advanced_link'); if (isVisible('hrefbrowser')) document.getElementById('href').style.width = '180px'; this.fillClassList('class_list'); this.fillFileList('link_list', 'tinyMCELinkList'); this.fillTargetList('target_list'); if (e = ed.dom.getParent(ed.selection.getNode(), 'A')) { f.href.value = ed.dom.getAttrib(e, 'href'); f.linktitle.value = ed.dom.getAttrib(e, 'title'); f.insert.value = ed.getLang('update'); selectByValue(f, 'link_list', f.href.value); selectByValue(f, 'target_list', ed.dom.getAttrib(e, 'target')); selectByValue(f, 'class_list', ed.dom.getAttrib(e, 'class')); } }, update : function() { var f = document.forms[0], ed = tinyMCEPopup.editor, e, b, href = f.href.value.replace(/ /g, '%20'); tinyMCEPopup.restoreSelection(); e = ed.dom.getParent(ed.selection.getNode(), 'A'); // Remove element if there is no href if (!f.href.value) { if (e) { b = ed.selection.getBookmark(); ed.dom.remove(e, 1); ed.selection.moveToBookmark(b); tinyMCEPopup.execCommand("mceEndUndoLevel"); tinyMCEPopup.close(); return; } } // Create new anchor elements if (e == null) { ed.getDoc().execCommand("unlink", false, null); tinyMCEPopup.execCommand("mceInsertLink", false, "#mce_temp_url#", {skip_undo : 1}); tinymce.each(ed.dom.select("a"), function(n) { if (ed.dom.getAttrib(n, 'href') == '#mce_temp_url#') { e = n; ed.dom.setAttribs(e, { href : href, title : f.linktitle.value, target : f.target_list ? getSelectValue(f, "target_list") : null, 'class' : f.class_list ? getSelectValue(f, "class_list") : null }); } }); } else { ed.dom.setAttribs(e, { href : href, title : f.linktitle.value, target : f.target_list ? getSelectValue(f, "target_list") : null, 'class' : f.class_list ? getSelectValue(f, "class_list") : null }); } // Don't move caret if selection was image if (e.childNodes.length != 1 || e.firstChild.nodeName != 'IMG') { ed.focus(); ed.selection.select(e); ed.selection.collapse(0); tinyMCEPopup.storeSelection(); } tinyMCEPopup.execCommand("mceEndUndoLevel"); tinyMCEPopup.close(); }, checkPrefix : function(n) { if (n.value && Validator.isEmail(n) && !/^\s*mailto:/i.test(n.value) && confirm(tinyMCEPopup.getLang('advanced_dlg.link_is_email'))) n.value = 'mailto:' + n.value; if (/^\s*www\./i.test(n.value) && confirm(tinyMCEPopup.getLang('advanced_dlg.link_is_external'))) n.value = 'http://' + n.value; }, fillFileList : function(id, l) { var dom = tinyMCEPopup.dom, lst = dom.get(id), v, cl; l = window[l]; if (l && l.length > 0) { lst.options[lst.options.length] = new Option('', ''); tinymce.each(l, function(o) { lst.options[lst.options.length] = new Option(o[0], o[1]); }); } else dom.remove(dom.getParent(id, 'tr')); }, fillClassList : function(id) { var dom = tinyMCEPopup.dom, lst = dom.get(id), v, cl; if (v = tinyMCEPopup.getParam('theme_advanced_styles')) { cl = []; tinymce.each(v.split(';'), function(v) { var p = v.split('='); cl.push({'title' : p[0], 'class' : p[1]}); }); } else cl = tinyMCEPopup.editor.dom.getClasses(); if (cl.length > 0) { lst.options[lst.options.length] = new Option(tinyMCEPopup.getLang('not_set'), ''); tinymce.each(cl, function(o) { lst.options[lst.options.length] = new Option(o.title || o['class'], o['class']); }); } else dom.remove(dom.getParent(id, 'tr')); }, fillTargetList : function(id) { var dom = tinyMCEPopup.dom, lst = dom.get(id), v; lst.options[lst.options.length] = new Option(tinyMCEPopup.getLang('not_set'), ''); lst.options[lst.options.length] = new Option(tinyMCEPopup.getLang('advanced_dlg.link_target_same'), '_self'); lst.options[lst.options.length] = new Option(tinyMCEPopup.getLang('advanced_dlg.link_target_blank'), '_blank'); if (v = tinyMCEPopup.getParam('theme_advanced_link_targets')) { tinymce.each(v.split(','), function(v) { v = v.split('='); lst.options[lst.options.length] = new Option(v[0], v[1]); }); } } }; LinkDialog.preInit(); tinyMCEPopup.onInit.add(LinkDialog.init, LinkDialog); webcit-8.24-dfsg.orig/tiny_mce/themes/advanced/js/source_editor.js0000644000175000017500000000243312271477123025063 0ustar michaelmichaeltinyMCEPopup.requireLangPack(); tinyMCEPopup.onInit.add(onLoadInit); function saveContent() { tinyMCEPopup.editor.setContent(document.getElementById('htmlSource').value, {source_view : true}); tinyMCEPopup.close(); } function onLoadInit() { tinyMCEPopup.resizeToInnerSize(); // Remove Gecko spellchecking if (tinymce.isGecko) document.body.spellcheck = tinyMCEPopup.editor.getParam("gecko_spellcheck"); document.getElementById('htmlSource').value = tinyMCEPopup.editor.getContent({source_view : true}); if (tinyMCEPopup.editor.getParam("theme_advanced_source_editor_wrap", true)) { setWrap('soft'); document.getElementById('wraped').checked = true; } resizeInputs(); } function setWrap(val) { var v, n, s = document.getElementById('htmlSource'); s.wrap = val; if (!tinymce.isIE) { v = s.value; n = s.cloneNode(false); n.setAttribute("wrap", val); s.parentNode.replaceChild(n, s); n.value = v; } } function toggleWordWrap(elm) { if (elm.checked) setWrap('soft'); else setWrap('off'); } function resizeInputs() { var vp = tinyMCEPopup.dom.getViewPort(window), el; el = document.getElementById('htmlSource'); if (el) { el.style.width = (vp.w - 20) + 'px'; el.style.height = (vp.h - 65) + 'px'; } } webcit-8.24-dfsg.orig/tiny_mce/themes/advanced/js/charmap.js0000644000175000017500000003625412271477123023640 0ustar michaelmichael/** * charmap.js * * Copyright 2009, Moxiecode Systems AB * Released under LGPL License. * * License: http://tinymce.moxiecode.com/license * Contributing: http://tinymce.moxiecode.com/contributing */ tinyMCEPopup.requireLangPack(); var charmap = [ [' ', ' ', true, 'no-break space'], ['&', '&', true, 'ampersand'], ['"', '"', true, 'quotation mark'], // finance ['¢', '¢', true, 'cent sign'], ['€', '€', true, 'euro sign'], ['£', '£', true, 'pound sign'], ['¥', '¥', true, 'yen sign'], // signs ['©', '©', true, 'copyright sign'], ['®', '®', true, 'registered sign'], ['™', '™', true, 'trade mark sign'], ['‰', '‰', true, 'per mille sign'], ['µ', 'µ', true, 'micro sign'], ['·', '·', true, 'middle dot'], ['•', '•', true, 'bullet'], ['…', '…', true, 'three dot leader'], ['′', '′', true, 'minutes / feet'], ['″', '″', true, 'seconds / inches'], ['§', '§', true, 'section sign'], ['¶', '¶', true, 'paragraph sign'], ['ß', 'ß', true, 'sharp s / ess-zed'], // quotations ['‹', '‹', true, 'single left-pointing angle quotation mark'], ['›', '›', true, 'single right-pointing angle quotation mark'], ['«', '«', true, 'left pointing guillemet'], ['»', '»', true, 'right pointing guillemet'], ['‘', '‘', true, 'left single quotation mark'], ['’', '’', true, 'right single quotation mark'], ['“', '“', true, 'left double quotation mark'], ['”', '”', true, 'right double quotation mark'], ['‚', '‚', true, 'single low-9 quotation mark'], ['„', '„', true, 'double low-9 quotation mark'], ['<', '<', true, 'less-than sign'], ['>', '>', true, 'greater-than sign'], ['≤', '≤', true, 'less-than or equal to'], ['≥', '≥', true, 'greater-than or equal to'], ['–', '–', true, 'en dash'], ['—', '—', true, 'em dash'], ['¯', '¯', true, 'macron'], ['‾', '‾', true, 'overline'], ['¤', '¤', true, 'currency sign'], ['¦', '¦', true, 'broken bar'], ['¨', '¨', true, 'diaeresis'], ['¡', '¡', true, 'inverted exclamation mark'], ['¿', '¿', true, 'turned question mark'], ['ˆ', 'ˆ', true, 'circumflex accent'], ['˜', '˜', true, 'small tilde'], ['°', '°', true, 'degree sign'], ['−', '−', true, 'minus sign'], ['±', '±', true, 'plus-minus sign'], ['÷', '÷', true, 'division sign'], ['⁄', '⁄', true, 'fraction slash'], ['×', '×', true, 'multiplication sign'], ['¹', '¹', true, 'superscript one'], ['²', '²', true, 'superscript two'], ['³', '³', true, 'superscript three'], ['¼', '¼', true, 'fraction one quarter'], ['½', '½', true, 'fraction one half'], ['¾', '¾', true, 'fraction three quarters'], // math / logical ['ƒ', 'ƒ', true, 'function / florin'], ['∫', '∫', true, 'integral'], ['∑', '∑', true, 'n-ary sumation'], ['∞', '∞', true, 'infinity'], ['√', '√', true, 'square root'], ['∼', '∼', false,'similar to'], ['≅', '≅', false,'approximately equal to'], ['≈', '≈', true, 'almost equal to'], ['≠', '≠', true, 'not equal to'], ['≡', '≡', true, 'identical to'], ['∈', '∈', false,'element of'], ['∉', '∉', false,'not an element of'], ['∋', '∋', false,'contains as member'], ['∏', '∏', true, 'n-ary product'], ['∧', '∧', false,'logical and'], ['∨', '∨', false,'logical or'], ['¬', '¬', true, 'not sign'], ['∩', '∩', true, 'intersection'], ['∪', '∪', false,'union'], ['∂', '∂', true, 'partial differential'], ['∀', '∀', false,'for all'], ['∃', '∃', false,'there exists'], ['∅', '∅', false,'diameter'], ['∇', '∇', false,'backward difference'], ['∗', '∗', false,'asterisk operator'], ['∝', '∝', false,'proportional to'], ['∠', '∠', false,'angle'], // undefined ['´', '´', true, 'acute accent'], ['¸', '¸', true, 'cedilla'], ['ª', 'ª', true, 'feminine ordinal indicator'], ['º', 'º', true, 'masculine ordinal indicator'], ['†', '†', true, 'dagger'], ['‡', '‡', true, 'double dagger'], // alphabetical special chars ['À', 'À', true, 'A - grave'], ['Á', 'Á', true, 'A - acute'], ['Â', 'Â', true, 'A - circumflex'], ['Ã', 'Ã', true, 'A - tilde'], ['Ä', 'Ä', true, 'A - diaeresis'], ['Å', 'Å', true, 'A - ring above'], ['Æ', 'Æ', true, 'ligature AE'], ['Ç', 'Ç', true, 'C - cedilla'], ['È', 'È', true, 'E - grave'], ['É', 'É', true, 'E - acute'], ['Ê', 'Ê', true, 'E - circumflex'], ['Ë', 'Ë', true, 'E - diaeresis'], ['Ì', 'Ì', true, 'I - grave'], ['Í', 'Í', true, 'I - acute'], ['Î', 'Î', true, 'I - circumflex'], ['Ï', 'Ï', true, 'I - diaeresis'], ['Ð', 'Ð', true, 'ETH'], ['Ñ', 'Ñ', true, 'N - tilde'], ['Ò', 'Ò', true, 'O - grave'], ['Ó', 'Ó', true, 'O - acute'], ['Ô', 'Ô', true, 'O - circumflex'], ['Õ', 'Õ', true, 'O - tilde'], ['Ö', 'Ö', true, 'O - diaeresis'], ['Ø', 'Ø', true, 'O - slash'], ['Œ', 'Œ', true, 'ligature OE'], ['Š', 'Š', true, 'S - caron'], ['Ù', 'Ù', true, 'U - grave'], ['Ú', 'Ú', true, 'U - acute'], ['Û', 'Û', true, 'U - circumflex'], ['Ü', 'Ü', true, 'U - diaeresis'], ['Ý', 'Ý', true, 'Y - acute'], ['Ÿ', 'Ÿ', true, 'Y - diaeresis'], ['Þ', 'Þ', true, 'THORN'], ['à', 'à', true, 'a - grave'], ['á', 'á', true, 'a - acute'], ['â', 'â', true, 'a - circumflex'], ['ã', 'ã', true, 'a - tilde'], ['ä', 'ä', true, 'a - diaeresis'], ['å', 'å', true, 'a - ring above'], ['æ', 'æ', true, 'ligature ae'], ['ç', 'ç', true, 'c - cedilla'], ['è', 'è', true, 'e - grave'], ['é', 'é', true, 'e - acute'], ['ê', 'ê', true, 'e - circumflex'], ['ë', 'ë', true, 'e - diaeresis'], ['ì', 'ì', true, 'i - grave'], ['í', 'í', true, 'i - acute'], ['î', 'î', true, 'i - circumflex'], ['ï', 'ï', true, 'i - diaeresis'], ['ð', 'ð', true, 'eth'], ['ñ', 'ñ', true, 'n - tilde'], ['ò', 'ò', true, 'o - grave'], ['ó', 'ó', true, 'o - acute'], ['ô', 'ô', true, 'o - circumflex'], ['õ', 'õ', true, 'o - tilde'], ['ö', 'ö', true, 'o - diaeresis'], ['ø', 'ø', true, 'o slash'], ['œ', 'œ', true, 'ligature oe'], ['š', 'š', true, 's - caron'], ['ù', 'ù', true, 'u - grave'], ['ú', 'ú', true, 'u - acute'], ['û', 'û', true, 'u - circumflex'], ['ü', 'ü', true, 'u - diaeresis'], ['ý', 'ý', true, 'y - acute'], ['þ', 'þ', true, 'thorn'], ['ÿ', 'ÿ', true, 'y - diaeresis'], ['Α', 'Α', true, 'Alpha'], ['Β', 'Β', true, 'Beta'], ['Γ', 'Γ', true, 'Gamma'], ['Δ', 'Δ', true, 'Delta'], ['Ε', 'Ε', true, 'Epsilon'], ['Ζ', 'Ζ', true, 'Zeta'], ['Η', 'Η', true, 'Eta'], ['Θ', 'Θ', true, 'Theta'], ['Ι', 'Ι', true, 'Iota'], ['Κ', 'Κ', true, 'Kappa'], ['Λ', 'Λ', true, 'Lambda'], ['Μ', 'Μ', true, 'Mu'], ['Ν', 'Ν', true, 'Nu'], ['Ξ', 'Ξ', true, 'Xi'], ['Ο', 'Ο', true, 'Omicron'], ['Π', 'Π', true, 'Pi'], ['Ρ', 'Ρ', true, 'Rho'], ['Σ', 'Σ', true, 'Sigma'], ['Τ', 'Τ', true, 'Tau'], ['Υ', 'Υ', true, 'Upsilon'], ['Φ', 'Φ', true, 'Phi'], ['Χ', 'Χ', true, 'Chi'], ['Ψ', 'Ψ', true, 'Psi'], ['Ω', 'Ω', true, 'Omega'], ['α', 'α', true, 'alpha'], ['β', 'β', true, 'beta'], ['γ', 'γ', true, 'gamma'], ['δ', 'δ', true, 'delta'], ['ε', 'ε', true, 'epsilon'], ['ζ', 'ζ', true, 'zeta'], ['η', 'η', true, 'eta'], ['θ', 'θ', true, 'theta'], ['ι', 'ι', true, 'iota'], ['κ', 'κ', true, 'kappa'], ['λ', 'λ', true, 'lambda'], ['μ', 'μ', true, 'mu'], ['ν', 'ν', true, 'nu'], ['ξ', 'ξ', true, 'xi'], ['ο', 'ο', true, 'omicron'], ['π', 'π', true, 'pi'], ['ρ', 'ρ', true, 'rho'], ['ς', 'ς', true, 'final sigma'], ['σ', 'σ', true, 'sigma'], ['τ', 'τ', true, 'tau'], ['υ', 'υ', true, 'upsilon'], ['φ', 'φ', true, 'phi'], ['χ', 'χ', true, 'chi'], ['ψ', 'ψ', true, 'psi'], ['ω', 'ω', true, 'omega'], // symbols ['ℵ', 'ℵ', false,'alef symbol'], ['ϖ', 'ϖ', false,'pi symbol'], ['ℜ', 'ℜ', false,'real part symbol'], ['ϑ','ϑ', false,'theta symbol'], ['ϒ', 'ϒ', false,'upsilon - hook symbol'], ['℘', '℘', false,'Weierstrass p'], ['ℑ', 'ℑ', false,'imaginary part'], // arrows ['←', '←', true, 'leftwards arrow'], ['↑', '↑', true, 'upwards arrow'], ['→', '→', true, 'rightwards arrow'], ['↓', '↓', true, 'downwards arrow'], ['↔', '↔', true, 'left right arrow'], ['↵', '↵', false,'carriage return'], ['⇐', '⇐', false,'leftwards double arrow'], ['⇑', '⇑', false,'upwards double arrow'], ['⇒', '⇒', false,'rightwards double arrow'], ['⇓', '⇓', false,'downwards double arrow'], ['⇔', '⇔', false,'left right double arrow'], ['∴', '∴', false,'therefore'], ['⊂', '⊂', false,'subset of'], ['⊃', '⊃', false,'superset of'], ['⊄', '⊄', false,'not a subset of'], ['⊆', '⊆', false,'subset of or equal to'], ['⊇', '⊇', false,'superset of or equal to'], ['⊕', '⊕', false,'circled plus'], ['⊗', '⊗', false,'circled times'], ['⊥', '⊥', false,'perpendicular'], ['⋅', '⋅', false,'dot operator'], ['⌈', '⌈', false,'left ceiling'], ['⌉', '⌉', false,'right ceiling'], ['⌊', '⌊', false,'left floor'], ['⌋', '⌋', false,'right floor'], ['⟨', '〈', false,'left-pointing angle bracket'], ['⟩', '〉', false,'right-pointing angle bracket'], ['◊', '◊', true, 'lozenge'], ['♠', '♠', true, 'black spade suit'], ['♣', '♣', true, 'black club suit'], ['♥', '♥', true, 'black heart suit'], ['♦', '♦', true, 'black diamond suit'], [' ', ' ', false,'en space'], [' ', ' ', false,'em space'], [' ', ' ', false,'thin space'], ['‌', '‌', false,'zero width non-joiner'], ['‍', '‍', false,'zero width joiner'], ['‎', '‎', false,'left-to-right mark'], ['‏', '‏', false,'right-to-left mark'], ['­', '­', false,'soft hyphen'] ]; tinyMCEPopup.onInit.add(function() { tinyMCEPopup.dom.setHTML('charmapView', renderCharMapHTML()); addKeyboardNavigation(); }); function addKeyboardNavigation(){ var tableElm, cells, settings; cells = tinyMCEPopup.dom.select(".charmaplink", "charmapgroup"); settings ={ root: "charmapgroup", items: cells }; tinyMCEPopup.editor.windowManager.createInstance('tinymce.ui.KeyboardNavigation', settings, tinyMCEPopup.dom); } function renderCharMapHTML() { var charsPerRow = 20, tdWidth=20, tdHeight=20, i; var html = '
    '+ ''; var cols=-1; for (i=0; i' + '' + charmap[i][1] + ''; if ((cols+1) % charsPerRow == 0) html += ''; } } if (cols % charsPerRow > 0) { var padd = charsPerRow - (cols % charsPerRow); for (var i=0; i '; } html += '
    '; html = html.replace(/<\/tr>/g, ''); return html; } function insertChar(chr) { tinyMCEPopup.execCommand('mceInsertContent', false, '&#' + chr + ';'); // Refocus in window if (tinyMCEPopup.isWindow) window.focus(); tinyMCEPopup.editor.focus(); tinyMCEPopup.close(); } function previewChar(codeA, codeB, codeN) { var elmA = document.getElementById('codeA'); var elmB = document.getElementById('codeB'); var elmV = document.getElementById('codeV'); var elmN = document.getElementById('codeN'); if (codeA=='#160;') { elmV.innerHTML = '__'; } else { elmV.innerHTML = '&' + codeA; } elmB.innerHTML = '&' + codeA; elmA.innerHTML = '&' + codeB; elmN.innerHTML = codeN; } webcit-8.24-dfsg.orig/tiny_mce/themes/advanced/js/anchor.js0000644000175000017500000000177712271477123023501 0ustar michaelmichaeltinyMCEPopup.requireLangPack(); var AnchorDialog = { init : function(ed) { var action, elm, f = document.forms[0]; this.editor = ed; elm = ed.dom.getParent(ed.selection.getNode(), 'A'); v = ed.dom.getAttrib(elm, 'name'); if (v) { this.action = 'update'; f.anchorName.value = v; } f.insert.value = ed.getLang(elm ? 'update' : 'insert'); }, update : function() { var ed = this.editor, elm, name = document.forms[0].anchorName.value; if (!name || !/^[a-z][a-z0-9\-\_:\.]*$/i.test(name)) { tinyMCEPopup.alert('advanced_dlg.anchor_invalid'); return; } tinyMCEPopup.restoreSelection(); if (this.action != 'update') ed.selection.collapse(1); elm = ed.dom.getParent(ed.selection.getNode(), 'A'); if (elm) elm.name = name; else ed.execCommand('mceInsertContent', 0, ed.dom.createHTML('a', {name : name, 'class' : 'mceItemAnchor'}, '')); tinyMCEPopup.close(); } }; tinyMCEPopup.onInit.add(AnchorDialog.init, AnchorDialog); webcit-8.24-dfsg.orig/tiny_mce/themes/advanced/js/color_picker.js0000644000175000017500000003357212271477123024700 0ustar michaelmichaeltinyMCEPopup.requireLangPack(); var detail = 50, strhex = "0123456789ABCDEF", i, isMouseDown = false, isMouseOver = false; var colors = [ "#000000","#000033","#000066","#000099","#0000cc","#0000ff","#330000","#330033", "#330066","#330099","#3300cc","#3300ff","#660000","#660033","#660066","#660099", "#6600cc","#6600ff","#990000","#990033","#990066","#990099","#9900cc","#9900ff", "#cc0000","#cc0033","#cc0066","#cc0099","#cc00cc","#cc00ff","#ff0000","#ff0033", "#ff0066","#ff0099","#ff00cc","#ff00ff","#003300","#003333","#003366","#003399", "#0033cc","#0033ff","#333300","#333333","#333366","#333399","#3333cc","#3333ff", "#663300","#663333","#663366","#663399","#6633cc","#6633ff","#993300","#993333", "#993366","#993399","#9933cc","#9933ff","#cc3300","#cc3333","#cc3366","#cc3399", "#cc33cc","#cc33ff","#ff3300","#ff3333","#ff3366","#ff3399","#ff33cc","#ff33ff", "#006600","#006633","#006666","#006699","#0066cc","#0066ff","#336600","#336633", "#336666","#336699","#3366cc","#3366ff","#666600","#666633","#666666","#666699", "#6666cc","#6666ff","#996600","#996633","#996666","#996699","#9966cc","#9966ff", "#cc6600","#cc6633","#cc6666","#cc6699","#cc66cc","#cc66ff","#ff6600","#ff6633", "#ff6666","#ff6699","#ff66cc","#ff66ff","#009900","#009933","#009966","#009999", "#0099cc","#0099ff","#339900","#339933","#339966","#339999","#3399cc","#3399ff", "#669900","#669933","#669966","#669999","#6699cc","#6699ff","#999900","#999933", "#999966","#999999","#9999cc","#9999ff","#cc9900","#cc9933","#cc9966","#cc9999", "#cc99cc","#cc99ff","#ff9900","#ff9933","#ff9966","#ff9999","#ff99cc","#ff99ff", "#00cc00","#00cc33","#00cc66","#00cc99","#00cccc","#00ccff","#33cc00","#33cc33", "#33cc66","#33cc99","#33cccc","#33ccff","#66cc00","#66cc33","#66cc66","#66cc99", "#66cccc","#66ccff","#99cc00","#99cc33","#99cc66","#99cc99","#99cccc","#99ccff", "#cccc00","#cccc33","#cccc66","#cccc99","#cccccc","#ccccff","#ffcc00","#ffcc33", "#ffcc66","#ffcc99","#ffcccc","#ffccff","#00ff00","#00ff33","#00ff66","#00ff99", "#00ffcc","#00ffff","#33ff00","#33ff33","#33ff66","#33ff99","#33ffcc","#33ffff", "#66ff00","#66ff33","#66ff66","#66ff99","#66ffcc","#66ffff","#99ff00","#99ff33", "#99ff66","#99ff99","#99ffcc","#99ffff","#ccff00","#ccff33","#ccff66","#ccff99", "#ccffcc","#ccffff","#ffff00","#ffff33","#ffff66","#ffff99","#ffffcc","#ffffff" ]; var named = { '#F0F8FF':'Alice Blue','#FAEBD7':'Antique White','#00FFFF':'Aqua','#7FFFD4':'Aquamarine','#F0FFFF':'Azure','#F5F5DC':'Beige', '#FFE4C4':'Bisque','#000000':'Black','#FFEBCD':'Blanched Almond','#0000FF':'Blue','#8A2BE2':'Blue Violet','#A52A2A':'Brown', '#DEB887':'Burly Wood','#5F9EA0':'Cadet Blue','#7FFF00':'Chartreuse','#D2691E':'Chocolate','#FF7F50':'Coral','#6495ED':'Cornflower Blue', '#FFF8DC':'Cornsilk','#DC143C':'Crimson','#00FFFF':'Cyan','#00008B':'Dark Blue','#008B8B':'Dark Cyan','#B8860B':'Dark Golden Rod', '#A9A9A9':'Dark Gray','#A9A9A9':'Dark Grey','#006400':'Dark Green','#BDB76B':'Dark Khaki','#8B008B':'Dark Magenta','#556B2F':'Dark Olive Green', '#FF8C00':'Darkorange','#9932CC':'Dark Orchid','#8B0000':'Dark Red','#E9967A':'Dark Salmon','#8FBC8F':'Dark Sea Green','#483D8B':'Dark Slate Blue', '#2F4F4F':'Dark Slate Gray','#2F4F4F':'Dark Slate Grey','#00CED1':'Dark Turquoise','#9400D3':'Dark Violet','#FF1493':'Deep Pink','#00BFFF':'Deep Sky Blue', '#696969':'Dim Gray','#696969':'Dim Grey','#1E90FF':'Dodger Blue','#B22222':'Fire Brick','#FFFAF0':'Floral White','#228B22':'Forest Green', '#FF00FF':'Fuchsia','#DCDCDC':'Gainsboro','#F8F8FF':'Ghost White','#FFD700':'Gold','#DAA520':'Golden Rod','#808080':'Gray','#808080':'Grey', '#008000':'Green','#ADFF2F':'Green Yellow','#F0FFF0':'Honey Dew','#FF69B4':'Hot Pink','#CD5C5C':'Indian Red','#4B0082':'Indigo','#FFFFF0':'Ivory', '#F0E68C':'Khaki','#E6E6FA':'Lavender','#FFF0F5':'Lavender Blush','#7CFC00':'Lawn Green','#FFFACD':'Lemon Chiffon','#ADD8E6':'Light Blue', '#F08080':'Light Coral','#E0FFFF':'Light Cyan','#FAFAD2':'Light Golden Rod Yellow','#D3D3D3':'Light Gray','#D3D3D3':'Light Grey','#90EE90':'Light Green', '#FFB6C1':'Light Pink','#FFA07A':'Light Salmon','#20B2AA':'Light Sea Green','#87CEFA':'Light Sky Blue','#778899':'Light Slate Gray','#778899':'Light Slate Grey', '#B0C4DE':'Light Steel Blue','#FFFFE0':'Light Yellow','#00FF00':'Lime','#32CD32':'Lime Green','#FAF0E6':'Linen','#FF00FF':'Magenta','#800000':'Maroon', '#66CDAA':'Medium Aqua Marine','#0000CD':'Medium Blue','#BA55D3':'Medium Orchid','#9370D8':'Medium Purple','#3CB371':'Medium Sea Green','#7B68EE':'Medium Slate Blue', '#00FA9A':'Medium Spring Green','#48D1CC':'Medium Turquoise','#C71585':'Medium Violet Red','#191970':'Midnight Blue','#F5FFFA':'Mint Cream','#FFE4E1':'Misty Rose','#FFE4B5':'Moccasin', '#FFDEAD':'Navajo White','#000080':'Navy','#FDF5E6':'Old Lace','#808000':'Olive','#6B8E23':'Olive Drab','#FFA500':'Orange','#FF4500':'Orange Red','#DA70D6':'Orchid', '#EEE8AA':'Pale Golden Rod','#98FB98':'Pale Green','#AFEEEE':'Pale Turquoise','#D87093':'Pale Violet Red','#FFEFD5':'Papaya Whip','#FFDAB9':'Peach Puff', '#CD853F':'Peru','#FFC0CB':'Pink','#DDA0DD':'Plum','#B0E0E6':'Powder Blue','#800080':'Purple','#FF0000':'Red','#BC8F8F':'Rosy Brown','#4169E1':'Royal Blue', '#8B4513':'Saddle Brown','#FA8072':'Salmon','#F4A460':'Sandy Brown','#2E8B57':'Sea Green','#FFF5EE':'Sea Shell','#A0522D':'Sienna','#C0C0C0':'Silver', '#87CEEB':'Sky Blue','#6A5ACD':'Slate Blue','#708090':'Slate Gray','#708090':'Slate Grey','#FFFAFA':'Snow','#00FF7F':'Spring Green', '#4682B4':'Steel Blue','#D2B48C':'Tan','#008080':'Teal','#D8BFD8':'Thistle','#FF6347':'Tomato','#40E0D0':'Turquoise','#EE82EE':'Violet', '#F5DEB3':'Wheat','#FFFFFF':'White','#F5F5F5':'White Smoke','#FFFF00':'Yellow','#9ACD32':'Yellow Green' }; var namedLookup = {}; function init() { var inputColor = convertRGBToHex(tinyMCEPopup.getWindowArg('input_color')), key, value; tinyMCEPopup.resizeToInnerSize(); generatePicker(); generateWebColors(); generateNamedColors(); if (inputColor) { changeFinalColor(inputColor); col = convertHexToRGB(inputColor); if (col) updateLight(col.r, col.g, col.b); } for (key in named) { value = named[key]; namedLookup[value.replace(/\s+/, '').toLowerCase()] = key.replace(/#/, '').toLowerCase(); } } function toHexColor(color) { var matches, red, green, blue, toInt = parseInt; function hex(value) { value = parseInt(value).toString(16); return value.length > 1 ? value : '0' + value; // Padd with leading zero }; color = color.replace(/[\s#]+/g, '').toLowerCase(); color = namedLookup[color] || color; matches = /^rgb\((\d{1,3}),(\d{1,3}),(\d{1,3})\)|([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})|([a-f0-9])([a-f0-9])([a-f0-9])$/.exec(color); if (matches) { if (matches[1]) { red = toInt(matches[1]); green = toInt(matches[2]); blue = toInt(matches[3]); } else if (matches[4]) { red = toInt(matches[4], 16); green = toInt(matches[5], 16); blue = toInt(matches[6], 16); } else if (matches[7]) { red = toInt(matches[7] + matches[7], 16); green = toInt(matches[8] + matches[8], 16); blue = toInt(matches[9] + matches[9], 16); } return '#' + hex(red) + hex(green) + hex(blue); } return ''; } function insertAction() { var color = document.getElementById("color").value, f = tinyMCEPopup.getWindowArg('func'); tinyMCEPopup.restoreSelection(); if (f) f(toHexColor(color)); tinyMCEPopup.close(); } function showColor(color, name) { if (name) document.getElementById("colorname").innerHTML = name; document.getElementById("preview").style.backgroundColor = color; document.getElementById("color").value = color.toUpperCase(); } function convertRGBToHex(col) { var re = new RegExp("rgb\\s*\\(\\s*([0-9]+).*,\\s*([0-9]+).*,\\s*([0-9]+).*\\)", "gi"); if (!col) return col; var rgb = col.replace(re, "$1,$2,$3").split(','); if (rgb.length == 3) { r = parseInt(rgb[0]).toString(16); g = parseInt(rgb[1]).toString(16); b = parseInt(rgb[2]).toString(16); r = r.length == 1 ? '0' + r : r; g = g.length == 1 ? '0' + g : g; b = b.length == 1 ? '0' + b : b; return "#" + r + g + b; } return col; } function convertHexToRGB(col) { if (col.indexOf('#') != -1) { col = col.replace(new RegExp('[^0-9A-F]', 'gi'), ''); r = parseInt(col.substring(0, 2), 16); g = parseInt(col.substring(2, 4), 16); b = parseInt(col.substring(4, 6), 16); return {r : r, g : g, b : b}; } return null; } function generatePicker() { var el = document.getElementById('light'), h = '', i; for (i = 0; i < detail; i++){ h += '
    '; } el.innerHTML = h; } function generateWebColors() { var el = document.getElementById('webcolors'), h = '', i; if (el.className == 'generated') return; // TODO: VoiceOver doesn't seem to support legend as a label referenced by labelledby. h += ''; el.innerHTML = h; el.className = 'generated'; paintCanvas(el); enableKeyboardNavigation(el.firstChild); } function paintCanvas(el) { tinyMCEPopup.getWin().tinymce.each(tinyMCEPopup.dom.select('canvas.mceColorSwatch', el), function(canvas) { var context; if (canvas.getContext && (context = canvas.getContext("2d"))) { context.fillStyle = canvas.getAttribute('data-color'); context.fillRect(0, 0, 10, 10); } }); } function generateNamedColors() { var el = document.getElementById('namedcolors'), h = '', n, v, i = 0; if (el.className == 'generated') return; for (n in named) { v = named[n]; h += ''; if (tinyMCEPopup.editor.forcedHighContrastMode) { h += ''; } h += ''; h += ''; i++; } el.innerHTML = h; el.className = 'generated'; paintCanvas(el); enableKeyboardNavigation(el); } function enableKeyboardNavigation(el) { tinyMCEPopup.editor.windowManager.createInstance('tinymce.ui.KeyboardNavigation', { root: el, items: tinyMCEPopup.dom.select('a', el) }, tinyMCEPopup.dom); } function dechex(n) { return strhex.charAt(Math.floor(n / 16)) + strhex.charAt(n % 16); } function computeColor(e) { var x, y, partWidth, partDetail, imHeight, r, g, b, coef, i, finalCoef, finalR, finalG, finalB; x = e.offsetX ? e.offsetX : (e.target ? e.clientX - e.target.x : 0); y = e.offsetY ? e.offsetY : (e.target ? e.clientY - e.target.y : 0); partWidth = document.getElementById('colors').width / 6; partDetail = detail / 2; imHeight = document.getElementById('colors').height; r = (x >= 0)*(x < partWidth)*255 + (x >= partWidth)*(x < 2*partWidth)*(2*255 - x * 255 / partWidth) + (x >= 4*partWidth)*(x < 5*partWidth)*(-4*255 + x * 255 / partWidth) + (x >= 5*partWidth)*(x < 6*partWidth)*255; g = (x >= 0)*(x < partWidth)*(x * 255 / partWidth) + (x >= partWidth)*(x < 3*partWidth)*255 + (x >= 3*partWidth)*(x < 4*partWidth)*(4*255 - x * 255 / partWidth); b = (x >= 2*partWidth)*(x < 3*partWidth)*(-2*255 + x * 255 / partWidth) + (x >= 3*partWidth)*(x < 5*partWidth)*255 + (x >= 5*partWidth)*(x < 6*partWidth)*(6*255 - x * 255 / partWidth); coef = (imHeight - y) / imHeight; r = 128 + (r - 128) * coef; g = 128 + (g - 128) * coef; b = 128 + (b - 128) * coef; changeFinalColor('#' + dechex(r) + dechex(g) + dechex(b)); updateLight(r, g, b); } function updateLight(r, g, b) { var i, partDetail = detail / 2, finalCoef, finalR, finalG, finalB, color; for (i=0; i=0) && (i {#advanced_dlg.colorpicker_title}
    {#advanced_dlg.colorpicker_picker_title}

    {#advanced_dlg.colorpicker_palette_title}

    {#advanced_dlg.colorpicker_named_title}

    {#advanced_dlg.colorpicker_name}
    webcit-8.24-dfsg.orig/tiny_mce/themes/advanced/charmap.htm0000644000175000017500000000413512271477123023371 0ustar michaelmichael {#advanced_dlg.charmap_title}
     
     
     
     
     
    webcit-8.24-dfsg.orig/tiny_mce/themes/advanced/shortcuts.htm0000644000175000017500000000330412271477123024011 0ustar michaelmichael {#advanced_dlg.accessibility_help}

    {#advanced_dlg.accessibility_usage_title}

    Toolbars

    Press ALT-F10 to move focus to the toolbars. Navigate through the buttons using the arrow keys. Press enter to activate a button and return focus to the editor. Press escape to return focus to the editor without performing any actions.

    Status Bar

    To access the editor status bar, press ALT-F11. Use the left and right arrow keys to navigate between elements in the path. Press enter or space to select an element. Press escape to return focus to the editor without changing the selection.

    Context Menu

    Press shift-F10 to activate the context menu. Use the up and down arrow keys to move between menu items. To open sub-menus press the right arrow key. To close submenus press the left arrow key. Press escape to close the context menu.

    Keyboard Shortcuts

    Keystroke Function
    Control-BBold
    Control-IItalic
    Control-ZUndo
    Control-YRedo
    webcit-8.24-dfsg.orig/tiny_mce/themes/advanced/anchor.htm0000644000175000017500000000221712271477123023227 0ustar michaelmichael {#advanced_dlg.anchor_title}
    {#advanced_dlg.anchor_title}
    webcit-8.24-dfsg.orig/tiny_mce/themes/advanced/editor_template_src.js0000644000175000017500000011467712271477123025647 0ustar michaelmichael/** * editor_template_src.js * * Copyright 2009, Moxiecode Systems AB * Released under LGPL License. * * License: http://tinymce.moxiecode.com/license * Contributing: http://tinymce.moxiecode.com/contributing */ (function(tinymce) { var DOM = tinymce.DOM, Event = tinymce.dom.Event, extend = tinymce.extend, each = tinymce.each, Cookie = tinymce.util.Cookie, lastExtID, explode = tinymce.explode; // Tell it to load theme specific language pack(s) tinymce.ThemeManager.requireLangPack('advanced'); tinymce.create('tinymce.themes.AdvancedTheme', { sizes : [8, 10, 12, 14, 18, 24, 36], // Control name lookup, format: title, command controls : { bold : ['bold_desc', 'Bold'], italic : ['italic_desc', 'Italic'], underline : ['underline_desc', 'Underline'], strikethrough : ['striketrough_desc', 'Strikethrough'], justifyleft : ['justifyleft_desc', 'JustifyLeft'], justifycenter : ['justifycenter_desc', 'JustifyCenter'], justifyright : ['justifyright_desc', 'JustifyRight'], justifyfull : ['justifyfull_desc', 'JustifyFull'], bullist : ['bullist_desc', 'InsertUnorderedList'], numlist : ['numlist_desc', 'InsertOrderedList'], outdent : ['outdent_desc', 'Outdent'], indent : ['indent_desc', 'Indent'], cut : ['cut_desc', 'Cut'], copy : ['copy_desc', 'Copy'], paste : ['paste_desc', 'Paste'], undo : ['undo_desc', 'Undo'], redo : ['redo_desc', 'Redo'], link : ['link_desc', 'mceLink'], unlink : ['unlink_desc', 'unlink'], image : ['image_desc', 'mceImage'], cleanup : ['cleanup_desc', 'mceCleanup'], help : ['help_desc', 'mceHelp'], code : ['code_desc', 'mceCodeEditor'], hr : ['hr_desc', 'InsertHorizontalRule'], removeformat : ['removeformat_desc', 'RemoveFormat'], sub : ['sub_desc', 'subscript'], sup : ['sup_desc', 'superscript'], forecolor : ['forecolor_desc', 'ForeColor'], forecolorpicker : ['forecolor_desc', 'mceForeColor'], backcolor : ['backcolor_desc', 'HiliteColor'], backcolorpicker : ['backcolor_desc', 'mceBackColor'], charmap : ['charmap_desc', 'mceCharMap'], visualaid : ['visualaid_desc', 'mceToggleVisualAid'], anchor : ['anchor_desc', 'mceInsertAnchor'], newdocument : ['newdocument_desc', 'mceNewDocument'], blockquote : ['blockquote_desc', 'mceBlockQuote'] }, stateControls : ['bold', 'italic', 'underline', 'strikethrough', 'bullist', 'numlist', 'justifyleft', 'justifycenter', 'justifyright', 'justifyfull', 'sub', 'sup', 'blockquote'], init : function(ed, url) { var t = this, s, v, o; t.editor = ed; t.url = url; t.onResolveName = new tinymce.util.Dispatcher(this); ed.forcedHighContrastMode = ed.settings.detect_highcontrast && t._isHighContrast(); ed.settings.skin = ed.forcedHighContrastMode ? 'highcontrast' : ed.settings.skin; // Default settings t.settings = s = extend({ theme_advanced_path : true, theme_advanced_toolbar_location : 'bottom', theme_advanced_buttons1 : "bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,styleselect,formatselect", theme_advanced_buttons2 : "bullist,numlist,|,outdent,indent,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code", theme_advanced_buttons3 : "hr,removeformat,visualaid,|,sub,sup,|,charmap", theme_advanced_blockformats : "p,address,pre,h1,h2,h3,h4,h5,h6", theme_advanced_toolbar_align : "center", theme_advanced_fonts : "Andale Mono=andale mono,times;Arial=arial,helvetica,sans-serif;Arial Black=arial black,avant garde;Book Antiqua=book antiqua,palatino;Comic Sans MS=comic sans ms,sans-serif;Courier New=courier new,courier;Georgia=georgia,palatino;Helvetica=helvetica;Impact=impact,chicago;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=terminal,monaco;Times New Roman=times new roman,times;Trebuchet MS=trebuchet ms,geneva;Verdana=verdana,geneva;Webdings=webdings;Wingdings=wingdings,zapf dingbats", theme_advanced_more_colors : 1, theme_advanced_row_height : 23, theme_advanced_resize_horizontal : 1, theme_advanced_resizing_use_cookie : 1, theme_advanced_font_sizes : "1,2,3,4,5,6,7", theme_advanced_font_selector : "span", theme_advanced_show_current_color: 0, readonly : ed.settings.readonly }, ed.settings); // Setup default font_size_style_values if (!s.font_size_style_values) s.font_size_style_values = "8pt,10pt,12pt,14pt,18pt,24pt,36pt"; if (tinymce.is(s.theme_advanced_font_sizes, 'string')) { s.font_size_style_values = tinymce.explode(s.font_size_style_values); s.font_size_classes = tinymce.explode(s.font_size_classes || ''); // Parse string value o = {}; ed.settings.theme_advanced_font_sizes = s.theme_advanced_font_sizes; each(ed.getParam('theme_advanced_font_sizes', '', 'hash'), function(v, k) { var cl; if (k == v && v >= 1 && v <= 7) { k = v + ' (' + t.sizes[v - 1] + 'pt)'; cl = s.font_size_classes[v - 1]; v = s.font_size_style_values[v - 1] || (t.sizes[v - 1] + 'pt'); } if (/^\s*\./.test(v)) cl = v.replace(/\./g, ''); o[k] = cl ? {'class' : cl} : {fontSize : v}; }); s.theme_advanced_font_sizes = o; } if ((v = s.theme_advanced_path_location) && v != 'none') s.theme_advanced_statusbar_location = s.theme_advanced_path_location; if (s.theme_advanced_statusbar_location == 'none') s.theme_advanced_statusbar_location = 0; if (ed.settings.content_css !== false) ed.contentCSS.push(ed.baseURI.toAbsolute(url + "/skins/" + ed.settings.skin + "/content.css")); // Init editor ed.onInit.add(function() { if (!ed.settings.readonly) { ed.onNodeChange.add(t._nodeChanged, t); ed.onKeyUp.add(t._updateUndoStatus, t); ed.onMouseUp.add(t._updateUndoStatus, t); ed.dom.bind(ed.dom.getRoot(), 'dragend', function() { t._updateUndoStatus(ed); }); } }); ed.onSetProgressState.add(function(ed, b, ti) { var co, id = ed.id, tb; if (b) { t.progressTimer = setTimeout(function() { co = ed.getContainer(); co = co.insertBefore(DOM.create('DIV', {style : 'position:relative'}), co.firstChild); tb = DOM.get(ed.id + '_tbl'); DOM.add(co, 'div', {id : id + '_blocker', 'class' : 'mceBlocker', style : {width : tb.clientWidth + 2, height : tb.clientHeight + 2}}); DOM.add(co, 'div', {id : id + '_progress', 'class' : 'mceProgress', style : {left : tb.clientWidth / 2, top : tb.clientHeight / 2}}); }, ti || 0); } else { DOM.remove(id + '_blocker'); DOM.remove(id + '_progress'); clearTimeout(t.progressTimer); } }); DOM.loadCSS(s.editor_css ? ed.documentBaseURI.toAbsolute(s.editor_css) : url + "/skins/" + ed.settings.skin + "/ui.css"); if (s.skin_variant) DOM.loadCSS(url + "/skins/" + ed.settings.skin + "/ui_" + s.skin_variant + ".css"); }, _isHighContrast : function() { var actualColor, div = DOM.add(DOM.getRoot(), 'div', {'style': 'background-color: rgb(171,239,86);'}); actualColor = (DOM.getStyle(div, 'background-color', true) + '').toLowerCase().replace(/ /g, ''); DOM.remove(div); return actualColor != 'rgb(171,239,86)' && actualColor != '#abef56'; }, createControl : function(n, cf) { var cd, c; if (c = cf.createControl(n)) return c; switch (n) { case "styleselect": return this._createStyleSelect(); case "formatselect": return this._createBlockFormats(); case "fontselect": return this._createFontSelect(); case "fontsizeselect": return this._createFontSizeSelect(); case "forecolor": return this._createForeColorMenu(); case "backcolor": return this._createBackColorMenu(); } if ((cd = this.controls[n])) return cf.createButton(n, {title : "advanced." + cd[0], cmd : cd[1], ui : cd[2], value : cd[3]}); }, execCommand : function(cmd, ui, val) { var f = this['_' + cmd]; if (f) { f.call(this, ui, val); return true; } return false; }, _importClasses : function(e) { var ed = this.editor, ctrl = ed.controlManager.get('styleselect'); if (ctrl.getLength() == 0) { each(ed.dom.getClasses(), function(o, idx) { var name = 'style_' + idx; ed.formatter.register(name, { inline : 'span', attributes : {'class' : o['class']}, selector : '*' }); ctrl.add(o['class'], name); }); } }, _createStyleSelect : function(n) { var t = this, ed = t.editor, ctrlMan = ed.controlManager, ctrl; // Setup style select box ctrl = ctrlMan.createListBox('styleselect', { title : 'advanced.style_select', onselect : function(name) { var matches, formatNames = []; each(ctrl.items, function(item) { formatNames.push(item.value); }); ed.focus(); ed.undoManager.add(); // Toggle off the current format matches = ed.formatter.matchAll(formatNames); if (!name || matches[0] == name) { if (matches[0]) ed.formatter.remove(matches[0]); } else ed.formatter.apply(name); ed.undoManager.add(); ed.nodeChanged(); return false; // No auto select } }); // Handle specified format ed.onInit.add(function() { var counter = 0, formats = ed.getParam('style_formats'); if (formats) { each(formats, function(fmt) { var name, keys = 0; each(fmt, function() {keys++;}); if (keys > 1) { name = fmt.name = fmt.name || 'style_' + (counter++); ed.formatter.register(name, fmt); ctrl.add(fmt.title, name); } else ctrl.add(fmt.title); }); } else { each(ed.getParam('theme_advanced_styles', '', 'hash'), function(val, key) { var name; if (val) { name = 'style_' + (counter++); ed.formatter.register(name, { inline : 'span', classes : val, selector : '*' }); ctrl.add(t.editor.translate(key), name); } }); } }); // Auto import classes if the ctrl box is empty if (ctrl.getLength() == 0) { ctrl.onPostRender.add(function(ed, n) { if (!ctrl.NativeListBox) { Event.add(n.id + '_text', 'focus', t._importClasses, t); Event.add(n.id + '_text', 'mousedown', t._importClasses, t); Event.add(n.id + '_open', 'focus', t._importClasses, t); Event.add(n.id + '_open', 'mousedown', t._importClasses, t); } else Event.add(n.id, 'focus', t._importClasses, t); }); } return ctrl; }, _createFontSelect : function() { var c, t = this, ed = t.editor; c = ed.controlManager.createListBox('fontselect', { title : 'advanced.fontdefault', onselect : function(v) { var cur = c.items[c.selectedIndex]; if (!v && cur) { ed.execCommand('FontName', false, cur.value); return; } ed.execCommand('FontName', false, v); // Fake selection, execCommand will fire a nodeChange and update the selection c.select(function(sv) { return v == sv; }); if (cur && cur.value == v) { c.select(null); } return false; // No auto select } }); if (c) { each(ed.getParam('theme_advanced_fonts', t.settings.theme_advanced_fonts, 'hash'), function(v, k) { c.add(ed.translate(k), v, {style : v.indexOf('dings') == -1 ? 'font-family:' + v : ''}); }); } return c; }, _createFontSizeSelect : function() { var t = this, ed = t.editor, c, i = 0, cl = []; c = ed.controlManager.createListBox('fontsizeselect', {title : 'advanced.font_size', onselect : function(v) { var cur = c.items[c.selectedIndex]; if (!v && cur) { cur = cur.value; if (cur['class']) { ed.formatter.toggle('fontsize_class', {value : cur['class']}); ed.undoManager.add(); ed.nodeChanged(); } else { ed.execCommand('FontSize', false, cur.fontSize); } return; } if (v['class']) { ed.focus(); ed.undoManager.add(); ed.formatter.toggle('fontsize_class', {value : v['class']}); ed.undoManager.add(); ed.nodeChanged(); } else ed.execCommand('FontSize', false, v.fontSize); // Fake selection, execCommand will fire a nodeChange and update the selection c.select(function(sv) { return v == sv; }); if (cur && (cur.value.fontSize == v.fontSize || cur.value['class'] == v['class'])) { c.select(null); } return false; // No auto select }}); if (c) { each(t.settings.theme_advanced_font_sizes, function(v, k) { var fz = v.fontSize; if (fz >= 1 && fz <= 7) fz = t.sizes[parseInt(fz) - 1] + 'pt'; c.add(k, v, {'style' : 'font-size:' + fz, 'class' : 'mceFontSize' + (i++) + (' ' + (v['class'] || ''))}); }); } return c; }, _createBlockFormats : function() { var c, fmts = { p : 'advanced.paragraph', address : 'advanced.address', pre : 'advanced.pre', h1 : 'advanced.h1', h2 : 'advanced.h2', h3 : 'advanced.h3', h4 : 'advanced.h4', h5 : 'advanced.h5', h6 : 'advanced.h6', div : 'advanced.div', blockquote : 'advanced.blockquote', code : 'advanced.code', dt : 'advanced.dt', dd : 'advanced.dd', samp : 'advanced.samp' }, t = this; c = t.editor.controlManager.createListBox('formatselect', {title : 'advanced.block', onselect : function(v) { t.editor.execCommand('FormatBlock', false, v); return false; }}); if (c) { each(t.editor.getParam('theme_advanced_blockformats', t.settings.theme_advanced_blockformats, 'hash'), function(v, k) { c.add(t.editor.translate(k != v ? k : fmts[v]), v, {'class' : 'mce_formatPreview mce_' + v}); }); } return c; }, _createForeColorMenu : function() { var c, t = this, s = t.settings, o = {}, v; if (s.theme_advanced_more_colors) { o.more_colors_func = function() { t._mceColorPicker(0, { color : c.value, func : function(co) { c.setColor(co); } }); }; } if (v = s.theme_advanced_text_colors) o.colors = v; if (s.theme_advanced_default_foreground_color) o.default_color = s.theme_advanced_default_foreground_color; o.title = 'advanced.forecolor_desc'; o.cmd = 'ForeColor'; o.scope = this; c = t.editor.controlManager.createColorSplitButton('forecolor', o); return c; }, _createBackColorMenu : function() { var c, t = this, s = t.settings, o = {}, v; if (s.theme_advanced_more_colors) { o.more_colors_func = function() { t._mceColorPicker(0, { color : c.value, func : function(co) { c.setColor(co); } }); }; } if (v = s.theme_advanced_background_colors) o.colors = v; if (s.theme_advanced_default_background_color) o.default_color = s.theme_advanced_default_background_color; o.title = 'advanced.backcolor_desc'; o.cmd = 'HiliteColor'; o.scope = this; c = t.editor.controlManager.createColorSplitButton('backcolor', o); return c; }, renderUI : function(o) { var n, ic, tb, t = this, ed = t.editor, s = t.settings, sc, p, nl; if (ed.settings) { ed.settings.aria_label = s.aria_label + ed.getLang('advanced.help_shortcut'); } // TODO: ACC Should have an aria-describedby attribute which is user-configurable to describe what this field is actually for. // Maybe actually inherit it from the original textara? n = p = DOM.create('span', {role : 'application', 'aria-labelledby' : ed.id + '_voice', id : ed.id + '_parent', 'class' : 'mceEditor ' + ed.settings.skin + 'Skin' + (s.skin_variant ? ' ' + ed.settings.skin + 'Skin' + t._ufirst(s.skin_variant) : '')}); DOM.add(n, 'span', {'class': 'mceVoiceLabel', 'style': 'display:none;', id: ed.id + '_voice'}, s.aria_label); if (!DOM.boxModel) n = DOM.add(n, 'div', {'class' : 'mceOldBoxModel'}); n = sc = DOM.add(n, 'table', {role : "presentation", id : ed.id + '_tbl', 'class' : 'mceLayout', cellSpacing : 0, cellPadding : 0}); n = tb = DOM.add(n, 'tbody'); switch ((s.theme_advanced_layout_manager || '').toLowerCase()) { case "rowlayout": ic = t._rowLayout(s, tb, o); break; case "customlayout": ic = ed.execCallback("theme_advanced_custom_layout", s, tb, o, p); break; default: ic = t._simpleLayout(s, tb, o, p); } n = o.targetNode; // Add classes to first and last TRs nl = sc.rows; DOM.addClass(nl[0], 'mceFirst'); DOM.addClass(nl[nl.length - 1], 'mceLast'); // Add classes to first and last TDs each(DOM.select('tr', tb), function(n) { DOM.addClass(n.firstChild, 'mceFirst'); DOM.addClass(n.childNodes[n.childNodes.length - 1], 'mceLast'); }); if (DOM.get(s.theme_advanced_toolbar_container)) DOM.get(s.theme_advanced_toolbar_container).appendChild(p); else DOM.insertAfter(p, n); Event.add(ed.id + '_path_row', 'click', function(e) { e = e.target; if (e.nodeName == 'A') { t._sel(e.className.replace(/^.*mcePath_([0-9]+).*$/, '$1')); return Event.cancel(e); } }); /* if (DOM.get(ed.id + '_path_row')) { Event.add(ed.id + '_tbl', 'mouseover', function(e) { var re; e = e.target; if (e.nodeName == 'SPAN' && DOM.hasClass(e.parentNode, 'mceButton')) { re = DOM.get(ed.id + '_path_row'); t.lastPath = re.innerHTML; DOM.setHTML(re, e.parentNode.title); } }); Event.add(ed.id + '_tbl', 'mouseout', function(e) { if (t.lastPath) { DOM.setHTML(ed.id + '_path_row', t.lastPath); t.lastPath = 0; } }); } */ if (!ed.getParam('accessibility_focus')) Event.add(DOM.add(p, 'a', {href : '#'}, ''), 'focus', function() {tinyMCE.get(ed.id).focus();}); if (s.theme_advanced_toolbar_location == 'external') o.deltaHeight = 0; t.deltaHeight = o.deltaHeight; o.targetNode = null; ed.onKeyDown.add(function(ed, evt) { var DOM_VK_F10 = 121, DOM_VK_F11 = 122; if (evt.altKey) { if (evt.keyCode === DOM_VK_F10) { window.focus(); t.toolbarGroup.focus(); return Event.cancel(evt); } else if (evt.keyCode === DOM_VK_F11) { DOM.get(ed.id + '_path_row').focus(); return Event.cancel(evt); } } }); // alt+0 is the UK recommended shortcut for accessing the list of access controls. ed.addShortcut('alt+0', '', 'mceShortcuts', t); return { iframeContainer : ic, editorContainer : ed.id + '_parent', sizeContainer : sc, deltaHeight : o.deltaHeight }; }, getInfo : function() { return { longname : 'Advanced theme', author : 'Moxiecode Systems AB', authorurl : 'http://tinymce.moxiecode.com', version : tinymce.majorVersion + "." + tinymce.minorVersion } }, resizeBy : function(dw, dh) { var e = DOM.get(this.editor.id + '_ifr'); this.resizeTo(e.clientWidth + dw, e.clientHeight + dh); }, resizeTo : function(w, h, store) { var ed = this.editor, s = this.settings, e = DOM.get(ed.id + '_tbl'), ifr = DOM.get(ed.id + '_ifr'); // Boundery fix box w = Math.max(s.theme_advanced_resizing_min_width || 100, w); h = Math.max(s.theme_advanced_resizing_min_height || 100, h); w = Math.min(s.theme_advanced_resizing_max_width || 0xFFFF, w); h = Math.min(s.theme_advanced_resizing_max_height || 0xFFFF, h); // Resize iframe and container DOM.setStyle(e, 'height', ''); DOM.setStyle(ifr, 'height', h); if (s.theme_advanced_resize_horizontal) { DOM.setStyle(e, 'width', ''); DOM.setStyle(ifr, 'width', w); // Make sure that the size is never smaller than the over all ui if (w < e.clientWidth) { w = e.clientWidth; DOM.setStyle(ifr, 'width', e.clientWidth); } } // Store away the size if (store && s.theme_advanced_resizing_use_cookie) { Cookie.setHash("TinyMCE_" + ed.id + "_size", { cw : w, ch : h }); } }, destroy : function() { var id = this.editor.id; Event.clear(id + '_resize'); Event.clear(id + '_path_row'); Event.clear(id + '_external_close'); }, // Internal functions _simpleLayout : function(s, tb, o, p) { var t = this, ed = t.editor, lo = s.theme_advanced_toolbar_location, sl = s.theme_advanced_statusbar_location, n, ic, etb, c; if (s.readonly) { n = DOM.add(tb, 'tr'); n = ic = DOM.add(n, 'td', {'class' : 'mceIframeContainer'}); return ic; } // Create toolbar container at top if (lo == 'top') t._addToolbars(tb, o); // Create external toolbar if (lo == 'external') { n = c = DOM.create('div', {style : 'position:relative'}); n = DOM.add(n, 'div', {id : ed.id + '_external', 'class' : 'mceExternalToolbar'}); DOM.add(n, 'a', {id : ed.id + '_external_close', href : 'javascript:;', 'class' : 'mceExternalClose'}); n = DOM.add(n, 'table', {id : ed.id + '_tblext', cellSpacing : 0, cellPadding : 0}); etb = DOM.add(n, 'tbody'); if (p.firstChild.className == 'mceOldBoxModel') p.firstChild.appendChild(c); else p.insertBefore(c, p.firstChild); t._addToolbars(etb, o); ed.onMouseUp.add(function() { var e = DOM.get(ed.id + '_external'); DOM.show(e); DOM.hide(lastExtID); var f = Event.add(ed.id + '_external_close', 'click', function() { DOM.hide(ed.id + '_external'); Event.remove(ed.id + '_external_close', 'click', f); }); DOM.show(e); DOM.setStyle(e, 'top', 0 - DOM.getRect(ed.id + '_tblext').h - 1); // Fixes IE rendering bug DOM.hide(e); DOM.show(e); e.style.filter = ''; lastExtID = ed.id + '_external'; e = null; }); } if (sl == 'top') t._addStatusBar(tb, o); // Create iframe container if (!s.theme_advanced_toolbar_container) { n = DOM.add(tb, 'tr'); n = ic = DOM.add(n, 'td', {'class' : 'mceIframeContainer'}); } // Create toolbar container at bottom if (lo == 'bottom') t._addToolbars(tb, o); if (sl == 'bottom') t._addStatusBar(tb, o); return ic; }, _rowLayout : function(s, tb, o) { var t = this, ed = t.editor, dc, da, cf = ed.controlManager, n, ic, to, a; dc = s.theme_advanced_containers_default_class || ''; da = s.theme_advanced_containers_default_align || 'center'; each(explode(s.theme_advanced_containers || ''), function(c, i) { var v = s['theme_advanced_container_' + c] || ''; switch (c.toLowerCase()) { case 'mceeditor': n = DOM.add(tb, 'tr'); n = ic = DOM.add(n, 'td', {'class' : 'mceIframeContainer'}); break; case 'mceelementpath': t._addStatusBar(tb, o); break; default: a = (s['theme_advanced_container_' + c + '_align'] || da).toLowerCase(); a = 'mce' + t._ufirst(a); n = DOM.add(DOM.add(tb, 'tr'), 'td', { 'class' : 'mceToolbar ' + (s['theme_advanced_container_' + c + '_class'] || dc) + ' ' + a || da }); to = cf.createToolbar("toolbar" + i); t._addControls(v, to); DOM.setHTML(n, to.renderHTML()); o.deltaHeight -= s.theme_advanced_row_height; } }); return ic; }, _addControls : function(v, tb) { var t = this, s = t.settings, di, cf = t.editor.controlManager; if (s.theme_advanced_disable && !t._disabled) { di = {}; each(explode(s.theme_advanced_disable), function(v) { di[v] = 1; }); t._disabled = di; } else di = t._disabled; each(explode(v), function(n) { var c; if (di && di[n]) return; // Compatiblity with 2.x if (n == 'tablecontrols') { each(["table","|","row_props","cell_props","|","row_before","row_after","delete_row","|","col_before","col_after","delete_col","|","split_cells","merge_cells"], function(n) { n = t.createControl(n, cf); if (n) tb.add(n); }); return; } c = t.createControl(n, cf); if (c) tb.add(c); }); }, _addToolbars : function(c, o) { var t = this, i, tb, ed = t.editor, s = t.settings, v, cf = ed.controlManager, di, n, h = [], a, toolbarGroup; toolbarGroup = cf.createToolbarGroup('toolbargroup', { 'name': ed.getLang('advanced.toolbar'), 'tab_focus_toolbar':ed.getParam('theme_advanced_tab_focus_toolbar') }); t.toolbarGroup = toolbarGroup; a = s.theme_advanced_toolbar_align.toLowerCase(); a = 'mce' + t._ufirst(a); n = DOM.add(DOM.add(c, 'tr', {role: 'presentation'}), 'td', {'class' : 'mceToolbar ' + a, "role":"presentation"}); // Create toolbar and add the controls for (i=1; (v = s['theme_advanced_buttons' + i]); i++) { tb = cf.createToolbar("toolbar" + i, {'class' : 'mceToolbarRow' + i}); if (s['theme_advanced_buttons' + i + '_add']) v += ',' + s['theme_advanced_buttons' + i + '_add']; if (s['theme_advanced_buttons' + i + '_add_before']) v = s['theme_advanced_buttons' + i + '_add_before'] + ',' + v; t._addControls(v, tb); toolbarGroup.add(tb); o.deltaHeight -= s.theme_advanced_row_height; } h.push(toolbarGroup.renderHTML()); h.push(DOM.createHTML('a', {href : '#', accesskey : 'z', title : ed.getLang("advanced.toolbar_focus"), onfocus : 'tinyMCE.getInstanceById(\'' + ed.id + '\').focus();'}, '')); DOM.setHTML(n, h.join('')); }, _addStatusBar : function(tb, o) { var n, t = this, ed = t.editor, s = t.settings, r, mf, me, td; n = DOM.add(tb, 'tr'); n = td = DOM.add(n, 'td', {'class' : 'mceStatusbar'}); n = DOM.add(n, 'div', {id : ed.id + '_path_row', 'role': 'group', 'aria-labelledby': ed.id + '_path_voice'}); if (s.theme_advanced_path) { DOM.add(n, 'span', {id: ed.id + '_path_voice'}, ed.translate('advanced.path')); DOM.add(n, 'span', {}, ': '); } else { DOM.add(n, 'span', {}, ' '); } if (s.theme_advanced_resizing) { DOM.add(td, 'a', {id : ed.id + '_resize', href : 'javascript:;', onclick : "return false;", 'class' : 'mceResize', tabIndex:"-1"}); if (s.theme_advanced_resizing_use_cookie) { ed.onPostRender.add(function() { var o = Cookie.getHash("TinyMCE_" + ed.id + "_size"), c = DOM.get(ed.id + '_tbl'); if (!o) return; t.resizeTo(o.cw, o.ch); }); } ed.onPostRender.add(function() { Event.add(ed.id + '_resize', 'click', function(e) { e.preventDefault(); }); Event.add(ed.id + '_resize', 'mousedown', function(e) { var mouseMoveHandler1, mouseMoveHandler2, mouseUpHandler1, mouseUpHandler2, startX, startY, startWidth, startHeight, width, height, ifrElm; function resizeOnMove(e) { e.preventDefault(); width = startWidth + (e.screenX - startX); height = startHeight + (e.screenY - startY); t.resizeTo(width, height); }; function endResize(e) { // Stop listening Event.remove(DOM.doc, 'mousemove', mouseMoveHandler1); Event.remove(ed.getDoc(), 'mousemove', mouseMoveHandler2); Event.remove(DOM.doc, 'mouseup', mouseUpHandler1); Event.remove(ed.getDoc(), 'mouseup', mouseUpHandler2); width = startWidth + (e.screenX - startX); height = startHeight + (e.screenY - startY); t.resizeTo(width, height, true); }; e.preventDefault(); // Get the current rect size startX = e.screenX; startY = e.screenY; ifrElm = DOM.get(t.editor.id + '_ifr'); startWidth = width = ifrElm.clientWidth; startHeight = height = ifrElm.clientHeight; // Register envent handlers mouseMoveHandler1 = Event.add(DOM.doc, 'mousemove', resizeOnMove); mouseMoveHandler2 = Event.add(ed.getDoc(), 'mousemove', resizeOnMove); mouseUpHandler1 = Event.add(DOM.doc, 'mouseup', endResize); mouseUpHandler2 = Event.add(ed.getDoc(), 'mouseup', endResize); }); }); } o.deltaHeight -= 21; n = tb = null; }, _updateUndoStatus : function(ed) { var cm = ed.controlManager, um = ed.undoManager; cm.setDisabled('undo', !um.hasUndo() && !um.typing); cm.setDisabled('redo', !um.hasRedo()); }, _nodeChanged : function(ed, cm, n, co, ob) { var t = this, p, de = 0, v, c, s = t.settings, cl, fz, fn, fc, bc, formatNames, matches; tinymce.each(t.stateControls, function(c) { cm.setActive(c, ed.queryCommandState(t.controls[c][1])); }); function getParent(name) { var i, parents = ob.parents, func = name; if (typeof(name) == 'string') { func = function(node) { return node.nodeName == name; }; } for (i = 0; i < parents.length; i++) { if (func(parents[i])) return parents[i]; } }; cm.setActive('visualaid', ed.hasVisual); t._updateUndoStatus(ed); cm.setDisabled('outdent', !ed.queryCommandState('Outdent')); p = getParent('A'); if (c = cm.get('link')) { if (!p || !p.name) { c.setDisabled(!p && co); c.setActive(!!p); } } if (c = cm.get('unlink')) { c.setDisabled(!p && co); c.setActive(!!p && !p.name); } if (c = cm.get('anchor')) { c.setActive(!co && !!p && p.name); } p = getParent('IMG'); if (c = cm.get('image')) c.setActive(!co && !!p && n.className.indexOf('mceItem') == -1); if (c = cm.get('styleselect')) { t._importClasses(); formatNames = []; each(c.items, function(item) { formatNames.push(item.value); }); matches = ed.formatter.matchAll(formatNames); c.select(matches[0]); } if (c = cm.get('formatselect')) { p = getParent(DOM.isBlock); if (p) c.select(p.nodeName.toLowerCase()); } // Find out current fontSize, fontFamily and fontClass getParent(function(n) { if (n.nodeName === 'SPAN') { if (!cl && n.className) cl = n.className; } if (ed.dom.is(n, s.theme_advanced_font_selector)) { if (!fz && n.style.fontSize) fz = n.style.fontSize; if (!fn && n.style.fontFamily) fn = n.style.fontFamily.replace(/[\"\']+/g, '').replace(/^([^,]+).*/, '$1').toLowerCase(); if (!fc && n.style.color) fc = n.style.color; if (!bc && n.style.backgroundColor) bc = n.style.backgroundColor; } return false; }); if (c = cm.get('fontselect')) { c.select(function(v) { return v.replace(/^([^,]+).*/, '$1').toLowerCase() == fn; }); } // Select font size if (c = cm.get('fontsizeselect')) { // Use computed style if (s.theme_advanced_runtime_fontsize && !fz && !cl) fz = ed.dom.getStyle(n, 'fontSize', true); c.select(function(v) { if (v.fontSize && v.fontSize === fz) return true; if (v['class'] && v['class'] === cl) return true; }); } if (s.theme_advanced_show_current_color) { function updateColor(controlId, color) { if (c = cm.get(controlId)) { if (!color) color = c.settings.default_color; if (color !== c.value) { c.displayColor(color); } } } updateColor('forecolor', fc); updateColor('backcolor', bc); } if (s.theme_advanced_show_current_color) { function updateColor(controlId, color) { if (c = cm.get(controlId)) { if (!color) color = c.settings.default_color; if (color !== c.value) { c.displayColor(color); } } }; updateColor('forecolor', fc); updateColor('backcolor', bc); } if (s.theme_advanced_path && s.theme_advanced_statusbar_location) { p = DOM.get(ed.id + '_path') || DOM.add(ed.id + '_path_row', 'span', {id : ed.id + '_path'}); if (t.statusKeyboardNavigation) { t.statusKeyboardNavigation.destroy(); t.statusKeyboardNavigation = null; } DOM.setHTML(p, ''); getParent(function(n) { var na = n.nodeName.toLowerCase(), u, pi, ti = ''; // Ignore non element and bogus/hidden elements if (n.nodeType != 1 || na === 'br' || n.getAttribute('data-mce-bogus') || DOM.hasClass(n, 'mceItemHidden') || DOM.hasClass(n, 'mceItemRemoved')) return; // Handle prefix if (tinymce.isIE && n.scopeName !== 'HTML') na = n.scopeName + ':' + na; // Remove internal prefix na = na.replace(/mce\:/g, ''); // Handle node name switch (na) { case 'b': na = 'strong'; break; case 'i': na = 'em'; break; case 'img': if (v = DOM.getAttrib(n, 'src')) ti += 'src: ' + v + ' '; break; case 'a': if (v = DOM.getAttrib(n, 'name')) { ti += 'name: ' + v + ' '; na += '#' + v; } if (v = DOM.getAttrib(n, 'href')) ti += 'href: ' + v + ' '; break; case 'font': if (v = DOM.getAttrib(n, 'face')) ti += 'font: ' + v + ' '; if (v = DOM.getAttrib(n, 'size')) ti += 'size: ' + v + ' '; if (v = DOM.getAttrib(n, 'color')) ti += 'color: ' + v + ' '; break; case 'span': if (v = DOM.getAttrib(n, 'style')) ti += 'style: ' + v + ' '; break; } if (v = DOM.getAttrib(n, 'id')) ti += 'id: ' + v + ' '; if (v = n.className) { v = v.replace(/\b\s*(webkit|mce|Apple-)\w+\s*\b/g, '') if (v) { ti += 'class: ' + v + ' '; if (DOM.isBlock(n) || na == 'img' || na == 'span') na += '.' + v; } } na = na.replace(/(html:)/g, ''); na = {name : na, node : n, title : ti}; t.onResolveName.dispatch(t, na); ti = na.title; na = na.name; //u = "javascript:tinymce.EditorManager.get('" + ed.id + "').theme._sel('" + (de++) + "');"; pi = DOM.create('a', {'href' : "javascript:;", role: 'button', onmousedown : "return false;", title : ti, 'class' : 'mcePath_' + (de++)}, na); if (p.hasChildNodes()) { p.insertBefore(DOM.create('span', {'aria-hidden': 'true'}, '\u00a0\u00bb '), p.firstChild); p.insertBefore(pi, p.firstChild); } else p.appendChild(pi); }, ed.getBody()); if (DOM.select('a', p).length > 0) { t.statusKeyboardNavigation = new tinymce.ui.KeyboardNavigation({ root: ed.id + "_path_row", items: DOM.select('a', p), excludeFromTabOrder: true, onCancel: function() { ed.focus(); } }, DOM); } } }, // Commands gets called by execCommand _sel : function(v) { this.editor.execCommand('mceSelectNodeDepth', false, v); }, _mceInsertAnchor : function(ui, v) { var ed = this.editor; ed.windowManager.open({ url : this.url + '/anchor.htm', width : 320 + parseInt(ed.getLang('advanced.anchor_delta_width', 0)), height : 90 + parseInt(ed.getLang('advanced.anchor_delta_height', 0)), inline : true }, { theme_url : this.url }); }, _mceCharMap : function() { var ed = this.editor; ed.windowManager.open({ url : this.url + '/charmap.htm', width : 550 + parseInt(ed.getLang('advanced.charmap_delta_width', 0)), height : 250 + parseInt(ed.getLang('advanced.charmap_delta_height', 0)), inline : true }, { theme_url : this.url }); }, _mceHelp : function() { var ed = this.editor; ed.windowManager.open({ url : this.url + '/about.htm', width : 480, height : 380, inline : true }, { theme_url : this.url }); }, _mceShortcuts : function() { var ed = this.editor; ed.windowManager.open({ url: this.url + '/shortcuts.htm', width: 480, height: 380, inline: true }, { theme_url: this.url }); }, _mceColorPicker : function(u, v) { var ed = this.editor; v = v || {}; ed.windowManager.open({ url : this.url + '/color_picker.htm', width : 375 + parseInt(ed.getLang('advanced.colorpicker_delta_width', 0)), height : 250 + parseInt(ed.getLang('advanced.colorpicker_delta_height', 0)), close_previous : false, inline : true }, { input_color : v.color, func : v.func, theme_url : this.url }); }, _mceCodeEditor : function(ui, val) { var ed = this.editor; ed.windowManager.open({ url : this.url + '/source_editor.htm', width : parseInt(ed.getParam("theme_advanced_source_editor_width", 720)), height : parseInt(ed.getParam("theme_advanced_source_editor_height", 580)), inline : true, resizable : true, maximizable : true }, { theme_url : this.url }); }, _mceImage : function(ui, val) { var ed = this.editor; // Internal image object like a flash placeholder if (ed.dom.getAttrib(ed.selection.getNode(), 'class').indexOf('mceItem') != -1) return; ed.windowManager.open({ url : this.url + '/image.htm', width : 355 + parseInt(ed.getLang('advanced.image_delta_width', 0)), height : 275 + parseInt(ed.getLang('advanced.image_delta_height', 0)), inline : true }, { theme_url : this.url }); }, _mceLink : function(ui, val) { var ed = this.editor; ed.windowManager.open({ url : this.url + '/link.htm', width : 310 + parseInt(ed.getLang('advanced.link_delta_width', 0)), height : 200 + parseInt(ed.getLang('advanced.link_delta_height', 0)), inline : true }, { theme_url : this.url }); }, _mceNewDocument : function() { var ed = this.editor; ed.windowManager.confirm('advanced.newdocument', function(s) { if (s) ed.execCommand('mceSetContent', false, ''); }); }, _mceForeColor : function() { var t = this; this._mceColorPicker(0, { color: t.fgColor, func : function(co) { t.fgColor = co; t.editor.execCommand('ForeColor', false, co); } }); }, _mceBackColor : function() { var t = this; this._mceColorPicker(0, { color: t.bgColor, func : function(co) { t.bgColor = co; t.editor.execCommand('HiliteColor', false, co); } }); }, _ufirst : function(s) { return s.substring(0, 1).toUpperCase() + s.substring(1); } }); tinymce.ThemeManager.add('advanced', tinymce.themes.AdvancedTheme); }(tinymce)); webcit-8.24-dfsg.orig/tiny_mce/utils/0000755000175000017500000000000012271477123017347 5ustar michaelmichaelwebcit-8.24-dfsg.orig/tiny_mce/utils/editable_selects.js0000644000175000017500000000377612271477123023215 0ustar michaelmichael/** * editable_selects.js * * Copyright 2009, Moxiecode Systems AB * Released under LGPL License. * * License: http://tinymce.moxiecode.com/license * Contributing: http://tinymce.moxiecode.com/contributing */ var TinyMCE_EditableSelects = { editSelectElm : null, init : function() { var nl = document.getElementsByTagName("select"), i, d = document, o; for (i=0; i parseInt(v)) st = this.mark(f, n); } } return st; }, hasClass : function(n, c, d) { return new RegExp('\\b' + c + (d ? '[0-9]+' : '') + '\\b', 'g').test(n.className); }, getNum : function(n, c) { c = n.className.match(new RegExp('\\b' + c + '([0-9]+)\\b', 'g'))[0]; c = c.replace(/[^0-9]/g, ''); return c; }, addClass : function(n, c, b) { var o = this.removeClass(n, c); n.className = b ? c + (o != '' ? (' ' + o) : '') : (o != '' ? (o + ' ') : '') + c; }, removeClass : function(n, c) { c = n.className.replace(new RegExp("(^|\\s+)" + c + "(\\s+|$)"), ' '); return n.className = c != ' ' ? c : ''; }, tags : function(f, s) { return f.getElementsByTagName(s); }, mark : function(f, n) { var s = this.settings; this.addClass(n, s.invalid_cls); n.setAttribute('aria-invalid', 'true'); this.markLabels(f, n, s.invalid_cls); return false; }, markLabels : function(f, n, ic) { var nl, i; nl = this.tags(f, "label"); for (i=0; i'; h += ' '; return h; } function updateColor(img_id, form_element_id) { document.getElementById(img_id).style.backgroundColor = document.forms[0].elements[form_element_id].value; } function setBrowserDisabled(id, state) { var img = document.getElementById(id); var lnk = document.getElementById(id + "_link"); if (lnk) { if (state) { lnk.setAttribute("realhref", lnk.getAttribute("href")); lnk.removeAttribute("href"); tinyMCEPopup.dom.addClass(img, 'disabled'); } else { if (lnk.getAttribute("realhref")) lnk.setAttribute("href", lnk.getAttribute("realhref")); tinyMCEPopup.dom.removeClass(img, 'disabled'); } } } function getBrowserHTML(id, target_form_element, type, prefix) { var option = prefix + "_" + type + "_browser_callback", cb, html; cb = tinyMCEPopup.getParam(option, tinyMCEPopup.getParam("file_browser_callback")); if (!cb) return ""; html = ""; html += ''; html += ' '; return html; } function openBrowser(img_id, target_form_element, type, option) { var img = document.getElementById(img_id); if (img.className != "mceButtonDisabled") tinyMCEPopup.openBrowser(target_form_element, type, option); } function selectByValue(form_obj, field_name, value, add_custom, ignore_case) { if (!form_obj || !form_obj.elements[field_name]) return; if (!value) value = ""; var sel = form_obj.elements[field_name]; var found = false; for (var i=0; i=534; // TinyMCE .NET webcontrol might be setting the values for TinyMCE if (win.tinyMCEPreInit) { t.suffix = tinyMCEPreInit.suffix; t.baseURL = tinyMCEPreInit.base; t.query = tinyMCEPreInit.query; return; } // Get suffix and base t.suffix = ''; // If base element found, add that infront of baseURL nl = d.getElementsByTagName('base'); for (i=0; i : s = /^((static) )?([\w.]+)(:([\w.]+))?/.exec(s); cn = s[3].match(/(^|\.)(\w+)$/i)[2]; // Class name // Create namespace for new class ns = t.createNS(s[3].replace(/\.\w+$/, ''), root); // Class already exists if (ns[cn]) return; // Make pure static class if (s[2] == 'static') { ns[cn] = p; if (this.onCreate) this.onCreate(s[2], s[3], ns[cn]); return; } // Create default constructor if (!p[cn]) { p[cn] = function() {}; de = 1; } // Add constructor and methods ns[cn] = p[cn]; t.extend(ns[cn].prototype, p); // Extend if (s[5]) { sp = t.resolve(s[5]).prototype; scn = s[5].match(/\.(\w+)$/i)[1]; // Class name // Extend constructor c = ns[cn]; if (de) { // Add passthrough constructor ns[cn] = function() { return sp[scn].apply(this, arguments); }; } else { // Add inherit constructor ns[cn] = function() { this.parent = sp[scn]; return c.apply(this, arguments); }; } ns[cn].prototype[cn] = ns[cn]; // Add super methods t.each(sp, function(f, n) { ns[cn].prototype[n] = sp[n]; }); // Add overridden methods t.each(p, function(f, n) { // Extend methods if needed if (sp[n]) { ns[cn].prototype[n] = function() { this.parent = sp[n]; return f.apply(this, arguments); }; } else { if (n != cn) ns[cn].prototype[n] = f; } }); } // Add static methods t.each(p['static'], function(f, n) { ns[cn][n] = f; }); if (this.onCreate) this.onCreate(s[2], s[3], ns[cn].prototype); }, walk : function(o, f, n, s) { s = s || this; if (o) { if (n) o = o[n]; tinymce.each(o, function(o, i) { if (f.call(s, o, i, n) === false) return false; tinymce.walk(o, f, n, s); }); } }, createNS : function(n, o) { var i, v; o = o || win; n = n.split('.'); for (i=0; i= items.length) { for (i = 0, l = base.length; i < l; i++) { if (i >= items.length || base[i] != items[i]) { bp = i + 1; break; } } } if (base.length < items.length) { for (i = 0, l = items.length; i < l; i++) { if (i >= base.length || base[i] != items[i]) { bp = i + 1; break; } } } if (bp == 1) return path; for (i = 0, l = base.length - (bp - 1); i < l; i++) out += "../"; for (i = bp - 1, l = items.length; i < l; i++) { if (i != bp - 1) out += "/" + items[i]; else out += items[i]; } return out; }, toAbsPath : function(base, path) { var i, nb = 0, o = [], tr, outPath; // Split paths tr = /\/$/.test(path) ? '/' : ''; base = base.split('/'); path = path.split('/'); // Remove empty chunks each(base, function(k) { if (k) o.push(k); }); base = o; // Merge relURLParts chunks for (i = path.length - 1, o = []; i >= 0; i--) { // Ignore empty or . if (path[i].length == 0 || path[i] == ".") continue; // Is parent if (path[i] == '..') { nb++; continue; } // Move up if (nb > 0) { nb--; continue; } o.push(path[i]); } i = base.length - nb; // If /a/b/c or / if (i <= 0) outPath = o.reverse().join('/'); else outPath = base.slice(0, i).join('/') + '/' + o.reverse().join('/'); // Add front / if it's needed if (outPath.indexOf('/') !== 0) outPath = '/' + outPath; // Add traling / if it's needed if (tr && outPath.lastIndexOf('/') !== outPath.length - 1) outPath += tr; return outPath; }, getURI : function(nh) { var s, t = this; // Rebuild source if (!t.source || nh) { s = ''; if (!nh) { if (t.protocol) s += t.protocol + '://'; if (t.userInfo) s += t.userInfo + '@'; if (t.host) s += t.host; if (t.port) s += ':' + t.port; } if (t.path) s += t.path; if (t.query) s += '?' + t.query; if (t.anchor) s += '#' + t.anchor; t.source = s; } return t.source; } }); })(); (function() { var each = tinymce.each; tinymce.create('static tinymce.util.Cookie', { getHash : function(n) { var v = this.get(n), h; if (v) { each(v.split('&'), function(v) { v = v.split('='); h = h || {}; h[unescape(v[0])] = unescape(v[1]); }); } return h; }, setHash : function(n, v, e, p, d, s) { var o = ''; each(v, function(v, k) { o += (!o ? '' : '&') + escape(k) + '=' + escape(v); }); this.set(n, o, e, p, d, s); }, get : function(n) { var c = document.cookie, e, p = n + "=", b; // Strict mode if (!c) return; b = c.indexOf("; " + p); if (b == -1) { b = c.indexOf(p); if (b != 0) return null; } else b += 2; e = c.indexOf(";", b); if (e == -1) e = c.length; return unescape(c.substring(b + p.length, e)); }, set : function(n, v, e, p, d, s) { document.cookie = n + "=" + escape(v) + ((e) ? "; expires=" + e.toGMTString() : "") + ((p) ? "; path=" + escape(p) : "") + ((d) ? "; domain=" + d : "") + ((s) ? "; secure" : ""); }, remove : function(n, p) { var d = new Date(); d.setTime(d.getTime() - 1000); this.set(n, '', d, p, d); } }); })(); (function() { function serialize(o, quote) { var i, v, t; quote = quote || '"'; if (o == null) return 'null'; t = typeof o; if (t == 'string') { v = '\bb\tt\nn\ff\rr\""\'\'\\\\'; return quote + o.replace(/([\u0080-\uFFFF\x00-\x1f\"\'\\])/g, function(a, b) { // Make sure single quotes never get encoded inside double quotes for JSON compatibility if (quote === '"' && a === "'") return a; i = v.indexOf(b); if (i + 1) return '\\' + v.charAt(i + 1); a = b.charCodeAt().toString(16); return '\\u' + '0000'.substring(a.length) + a; }) + quote; } if (t == 'object') { if (o.hasOwnProperty && o instanceof Array) { for (i=0, v = '['; i 0 ? ',' : '') + serialize(o[i], quote); return v + ']'; } v = '{'; for (i in o) v += typeof o[i] != 'function' ? (v.length > 1 ? ',' + quote : quote) + i + quote +':' + serialize(o[i], quote) : ''; return v + '}'; } return '' + o; }; tinymce.util.JSON = { serialize: serialize, parse: function(s) { try { return eval('(' + s + ')'); } catch (ex) { // Ignore } } }; })(); tinymce.create('static tinymce.util.XHR', { send : function(o) { var x, t, w = window, c = 0; // Default settings o.scope = o.scope || this; o.success_scope = o.success_scope || o.scope; o.error_scope = o.error_scope || o.scope; o.async = o.async === false ? false : true; o.data = o.data || ''; function get(s) { x = 0; try { x = new ActiveXObject(s); } catch (ex) { } return x; }; x = w.XMLHttpRequest ? new XMLHttpRequest() : get('Microsoft.XMLHTTP') || get('Msxml2.XMLHTTP'); if (x) { if (x.overrideMimeType) x.overrideMimeType(o.content_type); x.open(o.type || (o.data ? 'POST' : 'GET'), o.url, o.async); if (o.content_type) x.setRequestHeader('Content-Type', o.content_type); x.setRequestHeader('X-Requested-With', 'XMLHttpRequest'); x.send(o.data); function ready() { if (!o.async || x.readyState == 4 || c++ > 10000) { if (o.success && c < 10000 && x.status == 200) o.success.call(o.success_scope, '' + x.responseText, x, o); else if (o.error) o.error.call(o.error_scope, c > 10000 ? 'TIMED_OUT' : 'GENERAL', x, o); x = null; } else w.setTimeout(ready, 10); }; // Syncronous request if (!o.async) return ready(); // Wait for response, onReadyStateChange can not be used since it leaks memory in IE t = w.setTimeout(ready, 10); } } }); (function() { var extend = tinymce.extend, JSON = tinymce.util.JSON, XHR = tinymce.util.XHR; tinymce.create('tinymce.util.JSONRequest', { JSONRequest : function(s) { this.settings = extend({ }, s); this.count = 0; }, send : function(o) { var ecb = o.error, scb = o.success; o = extend(this.settings, o); o.success = function(c, x) { c = JSON.parse(c); if (typeof(c) == 'undefined') { c = { error : 'JSON Parse error.' }; } if (c.error) ecb.call(o.error_scope || o.scope, c.error, x); else scb.call(o.success_scope || o.scope, c.result); }; o.error = function(ty, x) { if (ecb) ecb.call(o.error_scope || o.scope, ty, x); }; o.data = JSON.serialize({ id : o.id || 'c' + (this.count++), method : o.method, params : o.params }); // JSON content type for Ruby on rails. Bug: #1883287 o.content_type = 'application/json'; XHR.send(o); }, 'static' : { sendRPC : function(o) { return new tinymce.util.JSONRequest().send(o); } } }); }()); (function(tinymce){ tinymce.VK = { DELETE:46, BACKSPACE:8 } })(tinymce); (function(tinymce) { var VK = tinymce.VK, BACKSPACE = VK.BACKSPACE, DELETE = VK.DELETE; function cleanupStylesWhenDeleting(ed) { var dom = ed.dom, selection = ed.selection; ed.onKeyDown.add(function(ed, e) { var rng, blockElm, node, clonedSpan, isDelete; isDelete = e.keyCode == DELETE; if (isDelete || e.keyCode == BACKSPACE) { e.preventDefault(); rng = selection.getRng(); // Find root block blockElm = dom.getParent(rng.startContainer, dom.isBlock); // On delete clone the root span of the next block element if (isDelete) blockElm = dom.getNext(blockElm, dom.isBlock); // Locate root span element and clone it since it would otherwise get merged by the "apple-style-span" on delete/backspace if (blockElm) { node = blockElm.firstChild; if (node && node.nodeName === 'SPAN') { clonedSpan = node.cloneNode(false); } } // Do the backspace/delete actiopn ed.getDoc().execCommand(isDelete ? 'ForwardDelete' : 'Delete', false, null); // Find all odd apple-style-spans blockElm = dom.getParent(rng.startContainer, dom.isBlock); tinymce.each(dom.select('span.Apple-style-span,font.Apple-style-span', blockElm), function(span) { var rng = dom.createRng(); // Set range selection before the span we are about to remove rng.setStartBefore(span); rng.setEndBefore(span); if (clonedSpan) { dom.replace(clonedSpan.cloneNode(false), span, true); } else { dom.remove(span, true); } // Restore the selection selection.setRng(rng); }); } }); }; function emptyEditorWhenDeleting(ed) { ed.onKeyUp.add(function(ed, e) { var keyCode = e.keyCode; if (keyCode == DELETE || keyCode == BACKSPACE) { if (ed.dom.isEmpty(ed.getBody())) { ed.setContent('', {format : 'raw'}); ed.nodeChanged(); return; } } }); }; tinymce.create('tinymce.util.Quirks', { Quirks: function(ed) { // Load WebKit specific fixed if (tinymce.isWebKit) { cleanupStylesWhenDeleting(ed); emptyEditorWhenDeleting(ed); } // Load IE specific fixes if (tinymce.isIE) { emptyEditorWhenDeleting(ed); } } }); })(tinymce); (function(tinymce) { var namedEntities, baseEntities, reverseEntities, attrsCharsRegExp = /[&<>\"\u007E-\uD7FF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g, textCharsRegExp = /[<>&\u007E-\uD7FF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g, rawCharsRegExp = /[<>&\"\']/g, entityRegExp = /&(#x|#)?([\w]+);/g, asciiMap = { 128 : "\u20AC", 130 : "\u201A", 131 : "\u0192", 132 : "\u201E", 133 : "\u2026", 134 : "\u2020", 135 : "\u2021", 136 : "\u02C6", 137 : "\u2030", 138 : "\u0160", 139 : "\u2039", 140 : "\u0152", 142 : "\u017D", 145 : "\u2018", 146 : "\u2019", 147 : "\u201C", 148 : "\u201D", 149 : "\u2022", 150 : "\u2013", 151 : "\u2014", 152 : "\u02DC", 153 : "\u2122", 154 : "\u0161", 155 : "\u203A", 156 : "\u0153", 158 : "\u017E", 159 : "\u0178" }; // Raw entities baseEntities = { '\"' : '"', // Needs to be escaped since the YUI compressor would otherwise break the code "'" : ''', '<' : '<', '>' : '>', '&' : '&' }; // Reverse lookup table for raw entities reverseEntities = { '<' : '<', '>' : '>', '&' : '&', '"' : '"', ''' : "'" }; // Decodes text by using the browser function nativeDecode(text) { var elm; elm = document.createElement("div"); elm.innerHTML = text; return elm.textContent || elm.innerText || text; }; // Build a two way lookup table for the entities function buildEntitiesLookup(items, radix) { var i, chr, entity, lookup = {}; if (items) { items = items.split(','); radix = radix || 10; // Build entities lookup table for (i = 0; i < items.length; i += 2) { chr = String.fromCharCode(parseInt(items[i], radix)); // Only add non base entities if (!baseEntities[chr]) { entity = '&' + items[i + 1] + ';'; lookup[chr] = entity; lookup[entity] = chr; } } return lookup; } }; // Unpack entities lookup where the numbers are in radix 32 to reduce the size namedEntities = buildEntitiesLookup( '50,nbsp,51,iexcl,52,cent,53,pound,54,curren,55,yen,56,brvbar,57,sect,58,uml,59,copy,' + '5a,ordf,5b,laquo,5c,not,5d,shy,5e,reg,5f,macr,5g,deg,5h,plusmn,5i,sup2,5j,sup3,5k,acute,' + '5l,micro,5m,para,5n,middot,5o,cedil,5p,sup1,5q,ordm,5r,raquo,5s,frac14,5t,frac12,5u,frac34,' + '5v,iquest,60,Agrave,61,Aacute,62,Acirc,63,Atilde,64,Auml,65,Aring,66,AElig,67,Ccedil,' + '68,Egrave,69,Eacute,6a,Ecirc,6b,Euml,6c,Igrave,6d,Iacute,6e,Icirc,6f,Iuml,6g,ETH,6h,Ntilde,' + '6i,Ograve,6j,Oacute,6k,Ocirc,6l,Otilde,6m,Ouml,6n,times,6o,Oslash,6p,Ugrave,6q,Uacute,' + '6r,Ucirc,6s,Uuml,6t,Yacute,6u,THORN,6v,szlig,70,agrave,71,aacute,72,acirc,73,atilde,74,auml,' + '75,aring,76,aelig,77,ccedil,78,egrave,79,eacute,7a,ecirc,7b,euml,7c,igrave,7d,iacute,7e,icirc,' + '7f,iuml,7g,eth,7h,ntilde,7i,ograve,7j,oacute,7k,ocirc,7l,otilde,7m,ouml,7n,divide,7o,oslash,' + '7p,ugrave,7q,uacute,7r,ucirc,7s,uuml,7t,yacute,7u,thorn,7v,yuml,ci,fnof,sh,Alpha,si,Beta,' + 'sj,Gamma,sk,Delta,sl,Epsilon,sm,Zeta,sn,Eta,so,Theta,sp,Iota,sq,Kappa,sr,Lambda,ss,Mu,' + 'st,Nu,su,Xi,sv,Omicron,t0,Pi,t1,Rho,t3,Sigma,t4,Tau,t5,Upsilon,t6,Phi,t7,Chi,t8,Psi,' + 't9,Omega,th,alpha,ti,beta,tj,gamma,tk,delta,tl,epsilon,tm,zeta,tn,eta,to,theta,tp,iota,' + 'tq,kappa,tr,lambda,ts,mu,tt,nu,tu,xi,tv,omicron,u0,pi,u1,rho,u2,sigmaf,u3,sigma,u4,tau,' + 'u5,upsilon,u6,phi,u7,chi,u8,psi,u9,omega,uh,thetasym,ui,upsih,um,piv,812,bull,816,hellip,' + '81i,prime,81j,Prime,81u,oline,824,frasl,88o,weierp,88h,image,88s,real,892,trade,89l,alefsym,' + '8cg,larr,8ch,uarr,8ci,rarr,8cj,darr,8ck,harr,8dl,crarr,8eg,lArr,8eh,uArr,8ei,rArr,8ej,dArr,' + '8ek,hArr,8g0,forall,8g2,part,8g3,exist,8g5,empty,8g7,nabla,8g8,isin,8g9,notin,8gb,ni,8gf,prod,' + '8gh,sum,8gi,minus,8gn,lowast,8gq,radic,8gt,prop,8gu,infin,8h0,ang,8h7,and,8h8,or,8h9,cap,8ha,cup,' + '8hb,int,8hk,there4,8hs,sim,8i5,cong,8i8,asymp,8j0,ne,8j1,equiv,8j4,le,8j5,ge,8k2,sub,8k3,sup,8k4,' + 'nsub,8k6,sube,8k7,supe,8kl,oplus,8kn,otimes,8l5,perp,8m5,sdot,8o8,lceil,8o9,rceil,8oa,lfloor,8ob,' + 'rfloor,8p9,lang,8pa,rang,9ea,loz,9j0,spades,9j3,clubs,9j5,hearts,9j6,diams,ai,OElig,aj,oelig,b0,' + 'Scaron,b1,scaron,bo,Yuml,m6,circ,ms,tilde,802,ensp,803,emsp,809,thinsp,80c,zwnj,80d,zwj,80e,lrm,' + '80f,rlm,80j,ndash,80k,mdash,80o,lsquo,80p,rsquo,80q,sbquo,80s,ldquo,80t,rdquo,80u,bdquo,810,dagger,' + '811,Dagger,81g,permil,81p,lsaquo,81q,rsaquo,85c,euro' , 32); tinymce.html = tinymce.html || {}; tinymce.html.Entities = { encodeRaw : function(text, attr) { return text.replace(attr ? attrsCharsRegExp : textCharsRegExp, function(chr) { return baseEntities[chr] || chr; }); }, encodeAllRaw : function(text) { return ('' + text).replace(rawCharsRegExp, function(chr) { return baseEntities[chr] || chr; }); }, encodeNumeric : function(text, attr) { return text.replace(attr ? attrsCharsRegExp : textCharsRegExp, function(chr) { // Multi byte sequence convert it to a single entity if (chr.length > 1) return '&#' + (((chr.charCodeAt(0) - 0xD800) * 0x400) + (chr.charCodeAt(1) - 0xDC00) + 0x10000) + ';'; return baseEntities[chr] || '&#' + chr.charCodeAt(0) + ';'; }); }, encodeNamed : function(text, attr, entities) { entities = entities || namedEntities; return text.replace(attr ? attrsCharsRegExp : textCharsRegExp, function(chr) { return baseEntities[chr] || entities[chr] || chr; }); }, getEncodeFunc : function(name, entities) { var Entities = tinymce.html.Entities; entities = buildEntitiesLookup(entities) || namedEntities; function encodeNamedAndNumeric(text, attr) { return text.replace(attr ? attrsCharsRegExp : textCharsRegExp, function(chr) { return baseEntities[chr] || entities[chr] || '&#' + chr.charCodeAt(0) + ';' || chr; }); }; function encodeCustomNamed(text, attr) { return Entities.encodeNamed(text, attr, entities); }; // Replace + with , to be compatible with previous TinyMCE versions name = tinymce.makeMap(name.replace(/\+/g, ',')); // Named and numeric encoder if (name.named && name.numeric) return encodeNamedAndNumeric; // Named encoder if (name.named) { // Custom names if (entities) return encodeCustomNamed; return Entities.encodeNamed; } // Numeric if (name.numeric) return Entities.encodeNumeric; // Raw encoder return Entities.encodeRaw; }, decode : function(text) { return text.replace(entityRegExp, function(all, numeric, value) { if (numeric) { value = parseInt(value, numeric.length === 2 ? 16 : 10); // Support upper UTF if (value > 0xFFFF) { value -= 0x10000; return String.fromCharCode(0xD800 + (value >> 10), 0xDC00 + (value & 0x3FF)); } else return asciiMap[value] || String.fromCharCode(value); } return reverseEntities[all] || namedEntities[all] || nativeDecode(all); }); } }; })(tinymce); tinymce.html.Styles = function(settings, schema) { var rgbRegExp = /rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\s*\)/gi, urlOrStrRegExp = /(?:url(?:(?:\(\s*\"([^\"]+)\"\s*\))|(?:\(\s*\'([^\']+)\'\s*\))|(?:\(\s*([^)\s]+)\s*\))))|(?:\'([^\']+)\')|(?:\"([^\"]+)\")/gi, styleRegExp = /\s*([^:]+):\s*([^;]+);?/g, trimRightRegExp = /\s+$/, urlColorRegExp = /rgb/, undef, i, encodingLookup = {}, encodingItems; settings = settings || {}; encodingItems = '\\" \\\' \\; \\: ; : \uFEFF'.split(' '); for (i = 0; i < encodingItems.length; i++) { encodingLookup[encodingItems[i]] = '\uFEFF' + i; encodingLookup['\uFEFF' + i] = encodingItems[i]; } function toHex(match, r, g, b) { function hex(val) { val = parseInt(val).toString(16); return val.length > 1 ? val : '0' + val; // 0 -> 00 }; return '#' + hex(r) + hex(g) + hex(b); }; return { toHex : function(color) { return color.replace(rgbRegExp, toHex); }, parse : function(css) { var styles = {}, matches, name, value, isEncoded, urlConverter = settings.url_converter, urlConverterScope = settings.url_converter_scope || this; function compress(prefix, suffix) { var top, right, bottom, left; // Get values and check it it needs compressing top = styles[prefix + '-top' + suffix]; if (!top) return; right = styles[prefix + '-right' + suffix]; if (top != right) return; bottom = styles[prefix + '-bottom' + suffix]; if (right != bottom) return; left = styles[prefix + '-left' + suffix]; if (bottom != left) return; // Compress styles[prefix + suffix] = left; delete styles[prefix + '-top' + suffix]; delete styles[prefix + '-right' + suffix]; delete styles[prefix + '-bottom' + suffix]; delete styles[prefix + '-left' + suffix]; }; function canCompress(key) { var value = styles[key], i; if (!value || value.indexOf(' ') < 0) return; value = value.split(' '); i = value.length; while (i--) { if (value[i] !== value[0]) return false; } styles[key] = value[0]; return true; }; function compress2(target, a, b, c) { if (!canCompress(a)) return; if (!canCompress(b)) return; if (!canCompress(c)) return; // Compress styles[target] = styles[a] + ' ' + styles[b] + ' ' + styles[c]; delete styles[a]; delete styles[b]; delete styles[c]; }; // Encodes the specified string by replacing all \" \' ; : with _ function encode(str) { isEncoded = true; return encodingLookup[str]; }; // Decodes the specified string by replacing all _ with it's original value \" \' etc // It will also decode the \" \' if keep_slashes is set to fale or omitted function decode(str, keep_slashes) { if (isEncoded) { str = str.replace(/\uFEFF[0-9]/g, function(str) { return encodingLookup[str]; }); } if (!keep_slashes) str = str.replace(/\\([\'\";:])/g, "$1"); return str; } if (css) { // Encode \" \' % and ; and : inside strings so they don't interfere with the style parsing css = css.replace(/\\[\"\';:\uFEFF]/g, encode).replace(/\"[^\"]+\"|\'[^\']+\'/g, function(str) { return str.replace(/[;:]/g, encode); }); // Parse styles while (matches = styleRegExp.exec(css)) { name = matches[1].replace(trimRightRegExp, '').toLowerCase(); value = matches[2].replace(trimRightRegExp, ''); if (name && value.length > 0) { // Opera will produce 700 instead of bold in their style values if (name === 'font-weight' && value === '700') value = 'bold'; else if (name === 'color' || name === 'background-color') // Lowercase colors like RED value = value.toLowerCase(); // Convert RGB colors to HEX value = value.replace(rgbRegExp, toHex); // Convert URLs and force them into url('value') format value = value.replace(urlOrStrRegExp, function(match, url, url2, url3, str, str2) { str = str || str2; if (str) { str = decode(str); // Force strings into single quote format return "'" + str.replace(/\'/g, "\\'") + "'"; } url = decode(url || url2 || url3); // Convert the URL to relative/absolute depending on config if (urlConverter) url = urlConverter.call(urlConverterScope, url, 'style'); // Output new URL format return "url('" + url.replace(/\'/g, "\\'") + "')"; }); styles[name] = isEncoded ? decode(value, true) : value; } styleRegExp.lastIndex = matches.index + matches[0].length; } // Compress the styles to reduce it's size for example IE will expand styles compress("border", ""); compress("border", "-width"); compress("border", "-color"); compress("border", "-style"); compress("padding", ""); compress("margin", ""); compress2('border', 'border-width', 'border-style', 'border-color'); // Remove pointless border, IE produces these if (styles.border === 'medium none') delete styles.border; } return styles; }, serialize : function(styles, element_name) { var css = '', name, value; function serializeStyles(name) { var styleList, i, l, value; styleList = schema.styles[name]; if (styleList) { for (i = 0, l = styleList.length; i < l; i++) { name = styleList[i]; value = styles[name]; if (value !== undef && value.length > 0) css += (css.length > 0 ? ' ' : '') + name + ': ' + value + ';'; } } }; // Serialize styles according to schema if (element_name && schema && schema.styles) { // Serialize global styles and element specific styles serializeStyles('*'); serializeStyles(element_name); } else { // Output the styles in the order they are inside the object for (name in styles) { value = styles[name]; if (value !== undef && value.length > 0) css += (css.length > 0 ? ' ' : '') + name + ': ' + value + ';'; } } return css; } }; }; (function(tinymce) { var transitional = {}, boolAttrMap, blockElementsMap, shortEndedElementsMap, nonEmptyElementsMap, customElementsMap = {}, defaultWhiteSpaceElementsMap, selfClosingElementsMap, makeMap = tinymce.makeMap, each = tinymce.each; function split(str, delim) { return str.split(delim || ','); }; function unpack(lookup, data) { var key, elements = {}; function replace(value) { return value.replace(/[A-Z]+/g, function(key) { return replace(lookup[key]); }); }; // Unpack lookup for (key in lookup) { if (lookup.hasOwnProperty(key)) lookup[key] = replace(lookup[key]); } // Unpack and parse data into object map replace(data).replace(/#/g, '#text').replace(/(\w+)\[([^\]]+)\]\[([^\]]*)\]/g, function(str, name, attributes, children) { attributes = split(attributes, '|'); elements[name] = { attributes : makeMap(attributes), attributesOrder : attributes, children : makeMap(children, '|', {'#comment' : {}}) } }); return elements; }; // Build a lookup table for block elements both lowercase and uppercase blockElementsMap = 'h1,h2,h3,h4,h5,h6,hr,p,div,address,pre,form,table,tbody,thead,tfoot,' + 'th,tr,td,li,ol,ul,caption,blockquote,center,dl,dt,dd,dir,fieldset,' + 'noscript,menu,isindex,samp,header,footer,article,section,hgroup'; blockElementsMap = makeMap(blockElementsMap, ',', makeMap(blockElementsMap.toUpperCase())); // This is the XHTML 1.0 transitional elements with it's attributes and children packed to reduce it's size transitional = unpack({ Z : 'H|K|N|O|P', Y : 'X|form|R|Q', ZG : 'E|span|width|align|char|charoff|valign', X : 'p|T|div|U|W|isindex|fieldset|table', ZF : 'E|align|char|charoff|valign', W : 'pre|hr|blockquote|address|center|noframes', ZE : 'abbr|axis|headers|scope|rowspan|colspan|align|char|charoff|valign|nowrap|bgcolor|width|height', ZD : '[E][S]', U : 'ul|ol|dl|menu|dir', ZC : 'p|Y|div|U|W|table|br|span|bdo|object|applet|img|map|K|N|Q', T : 'h1|h2|h3|h4|h5|h6', ZB : 'X|S|Q', S : 'R|P', ZA : 'a|G|J|M|O|P', R : 'a|H|K|N|O', Q : 'noscript|P', P : 'ins|del|script', O : 'input|select|textarea|label|button', N : 'M|L', M : 'em|strong|dfn|code|q|samp|kbd|var|cite|abbr|acronym', L : 'sub|sup', K : 'J|I', J : 'tt|i|b|u|s|strike', I : 'big|small|font|basefont', H : 'G|F', G : 'br|span|bdo', F : 'object|applet|img|map|iframe', E : 'A|B|C', D : 'accesskey|tabindex|onfocus|onblur', C : 'onclick|ondblclick|onmousedown|onmouseup|onmouseover|onmousemove|onmouseout|onkeypress|onkeydown|onkeyup', B : 'lang|xml:lang|dir', A : 'id|class|style|title' }, 'script[id|charset|type|language|src|defer|xml:space][]' + 'style[B|id|type|media|title|xml:space][]' + 'object[E|declare|classid|codebase|data|type|codetype|archive|standby|width|height|usemap|name|tabindex|align|border|hspace|vspace][#|param|Y]' + 'param[id|name|value|valuetype|type][]' + 'p[E|align][#|S]' + 'a[E|D|charset|type|name|href|hreflang|rel|rev|shape|coords|target][#|Z]' + 'br[A|clear][]' + 'span[E][#|S]' + 'bdo[A|C|B][#|S]' + 'applet[A|codebase|archive|code|object|alt|name|width|height|align|hspace|vspace][#|param|Y]' + 'h1[E|align][#|S]' + 'img[E|src|alt|name|longdesc|width|height|usemap|ismap|align|border|hspace|vspace][]' + 'map[B|C|A|name][X|form|Q|area]' + 'h2[E|align][#|S]' + 'iframe[A|longdesc|name|src|frameborder|marginwidth|marginheight|scrolling|align|width|height][#|Y]' + 'h3[E|align][#|S]' + 'tt[E][#|S]' + 'i[E][#|S]' + 'b[E][#|S]' + 'u[E][#|S]' + 's[E][#|S]' + 'strike[E][#|S]' + 'big[E][#|S]' + 'small[E][#|S]' + 'font[A|B|size|color|face][#|S]' + 'basefont[id|size|color|face][]' + 'em[E][#|S]' + 'strong[E][#|S]' + 'dfn[E][#|S]' + 'code[E][#|S]' + 'q[E|cite][#|S]' + 'samp[E][#|S]' + 'kbd[E][#|S]' + 'var[E][#|S]' + 'cite[E][#|S]' + 'abbr[E][#|S]' + 'acronym[E][#|S]' + 'sub[E][#|S]' + 'sup[E][#|S]' + 'input[E|D|type|name|value|checked|disabled|readonly|size|maxlength|src|alt|usemap|onselect|onchange|accept|align][]' + 'select[E|name|size|multiple|disabled|tabindex|onfocus|onblur|onchange][optgroup|option]' + 'optgroup[E|disabled|label][option]' + 'option[E|selected|disabled|label|value][]' + 'textarea[E|D|name|rows|cols|disabled|readonly|onselect|onchange][]' + 'label[E|for|accesskey|onfocus|onblur][#|S]' + 'button[E|D|name|value|type|disabled][#|p|T|div|U|W|table|G|object|applet|img|map|K|N|Q]' + 'h4[E|align][#|S]' + 'ins[E|cite|datetime][#|Y]' + 'h5[E|align][#|S]' + 'del[E|cite|datetime][#|Y]' + 'h6[E|align][#|S]' + 'div[E|align][#|Y]' + 'ul[E|type|compact][li]' + 'li[E|type|value][#|Y]' + 'ol[E|type|compact|start][li]' + 'dl[E|compact][dt|dd]' + 'dt[E][#|S]' + 'dd[E][#|Y]' + 'menu[E|compact][li]' + 'dir[E|compact][li]' + 'pre[E|width|xml:space][#|ZA]' + 'hr[E|align|noshade|size|width][]' + 'blockquote[E|cite][#|Y]' + 'address[E][#|S|p]' + 'center[E][#|Y]' + 'noframes[E][#|Y]' + 'isindex[A|B|prompt][]' + 'fieldset[E][#|legend|Y]' + 'legend[E|accesskey|align][#|S]' + 'table[E|summary|width|border|frame|rules|cellspacing|cellpadding|align|bgcolor][caption|col|colgroup|thead|tfoot|tbody|tr]' + 'caption[E|align][#|S]' + 'col[ZG][]' + 'colgroup[ZG][col]' + 'thead[ZF][tr]' + 'tr[ZF|bgcolor][th|td]' + 'th[E|ZE][#|Y]' + 'form[E|action|method|name|enctype|onsubmit|onreset|accept|accept-charset|target][#|X|R|Q]' + 'noscript[E][#|Y]' + 'td[E|ZE][#|Y]' + 'tfoot[ZF][tr]' + 'tbody[ZF][tr]' + 'area[E|D|shape|coords|href|nohref|alt|target][]' + 'base[id|href|target][]' + 'body[E|onload|onunload|background|bgcolor|text|link|vlink|alink][#|Y]' ); boolAttrMap = makeMap('checked,compact,declare,defer,disabled,ismap,multiple,nohref,noresize,noshade,nowrap,readonly,selected,autoplay,loop,controls'); shortEndedElementsMap = makeMap('area,base,basefont,br,col,frame,hr,img,input,isindex,link,meta,param,embed,source'); nonEmptyElementsMap = tinymce.extend(makeMap('td,th,iframe,video,audio,object'), shortEndedElementsMap); defaultWhiteSpaceElementsMap = makeMap('pre,script,style,textarea'); selfClosingElementsMap = makeMap('colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr'); tinymce.html.Schema = function(settings) { var self = this, elements = {}, children = {}, patternElements = [], validStyles, whiteSpaceElementsMap; settings = settings || {}; // Allow all elements and attributes if verify_html is set to false if (settings.verify_html === false) settings.valid_elements = '*[*]'; // Build styles list if (settings.valid_styles) { validStyles = {}; // Convert styles into a rule list each(settings.valid_styles, function(value, key) { validStyles[key] = tinymce.explode(value); }); } whiteSpaceElementsMap = settings.whitespace_elements ? makeMap(settings.whitespace_elements) : defaultWhiteSpaceElementsMap; // Converts a wildcard expression string to a regexp for example *a will become /.*a/. function patternToRegExp(str) { return new RegExp('^' + str.replace(/([?+*])/g, '.$1') + '$'); }; // Parses the specified valid_elements string and adds to the current rules // This function is a bit hard to read since it's heavily optimized for speed function addValidElements(valid_elements) { var ei, el, ai, al, yl, matches, element, attr, attrData, elementName, attrName, attrType, attributes, attributesOrder, prefix, outputName, globalAttributes, globalAttributesOrder, transElement, key, childKey, value, elementRuleRegExp = /^([#+-])?([^\[\/]+)(?:\/([^\[]+))?(?:\[([^\]]+)\])?$/, attrRuleRegExp = /^([!\-])?(\w+::\w+|[^=:<]+)?(?:([=:<])(.*))?$/, hasPatternsRegExp = /[*?+]/; if (valid_elements) { // Split valid elements into an array with rules valid_elements = split(valid_elements); if (elements['@']) { globalAttributes = elements['@'].attributes; globalAttributesOrder = elements['@'].attributesOrder; } // Loop all rules for (ei = 0, el = valid_elements.length; ei < el; ei++) { // Parse element rule matches = elementRuleRegExp.exec(valid_elements[ei]); if (matches) { // Setup local names for matches prefix = matches[1]; elementName = matches[2]; outputName = matches[3]; attrData = matches[4]; // Create new attributes and attributesOrder attributes = {}; attributesOrder = []; // Create the new element element = { attributes : attributes, attributesOrder : attributesOrder }; // Padd empty elements prefix if (prefix === '#') element.paddEmpty = true; // Remove empty elements prefix if (prefix === '-') element.removeEmpty = true; // Copy attributes from global rule into current rule if (globalAttributes) { for (key in globalAttributes) attributes[key] = globalAttributes[key]; attributesOrder.push.apply(attributesOrder, globalAttributesOrder); } // Attributes defined if (attrData) { attrData = split(attrData, '|'); for (ai = 0, al = attrData.length; ai < al; ai++) { matches = attrRuleRegExp.exec(attrData[ai]); if (matches) { attr = {}; attrType = matches[1]; attrName = matches[2].replace(/::/g, ':'); prefix = matches[3]; value = matches[4]; // Required if (attrType === '!') { element.attributesRequired = element.attributesRequired || []; element.attributesRequired.push(attrName); attr.required = true; } // Denied from global if (attrType === '-') { delete attributes[attrName]; attributesOrder.splice(tinymce.inArray(attributesOrder, attrName), 1); continue; } // Default value if (prefix) { // Default value if (prefix === '=') { element.attributesDefault = element.attributesDefault || []; element.attributesDefault.push({name: attrName, value: value}); attr.defaultValue = value; } // Forced value if (prefix === ':') { element.attributesForced = element.attributesForced || []; element.attributesForced.push({name: attrName, value: value}); attr.forcedValue = value; } // Required values if (prefix === '<') attr.validValues = makeMap(value, '?'); } // Check for attribute patterns if (hasPatternsRegExp.test(attrName)) { element.attributePatterns = element.attributePatterns || []; attr.pattern = patternToRegExp(attrName); element.attributePatterns.push(attr); } else { // Add attribute to order list if it doesn't already exist if (!attributes[attrName]) attributesOrder.push(attrName); attributes[attrName] = attr; } } } } // Global rule, store away these for later usage if (!globalAttributes && elementName == '@') { globalAttributes = attributes; globalAttributesOrder = attributesOrder; } // Handle substitute elements such as b/strong if (outputName) { element.outputName = elementName; elements[outputName] = element; } // Add pattern or exact element if (hasPatternsRegExp.test(elementName)) { element.pattern = patternToRegExp(elementName); patternElements.push(element); } else elements[elementName] = element; } } } }; function setValidElements(valid_elements) { elements = {}; patternElements = []; addValidElements(valid_elements); each(transitional, function(element, name) { children[name] = element.children; }); }; // Adds custom non HTML elements to the schema function addCustomElements(custom_elements) { var customElementRegExp = /^(~)?(.+)$/; if (custom_elements) { each(split(custom_elements), function(rule) { var matches = customElementRegExp.exec(rule), inline = matches[1] === '~', cloneName = inline ? 'span' : 'div', name = matches[2]; children[name] = children[cloneName]; customElementsMap[name] = cloneName; // If it's not marked as inline then add it to valid block elements if (!inline) blockElementsMap[name] = {}; // Add custom elements at span/div positions each(children, function(element, child) { if (element[cloneName]) element[name] = element[cloneName]; }); }); } }; // Adds valid children to the schema object function addValidChildren(valid_children) { var childRuleRegExp = /^([+\-]?)(\w+)\[([^\]]+)\]$/; if (valid_children) { each(split(valid_children), function(rule) { var matches = childRuleRegExp.exec(rule), parent, prefix; if (matches) { prefix = matches[1]; // Add/remove items from default if (prefix) parent = children[matches[2]]; else parent = children[matches[2]] = {'#comment' : {}}; parent = children[matches[2]]; each(split(matches[3], '|'), function(child) { if (prefix === '-') delete parent[child]; else parent[child] = {}; }); } }); } }; function getElementRule(name) { var element = elements[name], i; // Exact match found if (element) return element; // No exact match then try the patterns i = patternElements.length; while (i--) { element = patternElements[i]; if (element.pattern.test(name)) return element; } }; if (!settings.valid_elements) { // No valid elements defined then clone the elements from the transitional spec each(transitional, function(element, name) { elements[name] = { attributes : element.attributes, attributesOrder : element.attributesOrder }; children[name] = element.children; }); // Switch these each(split('strong/b,em/i'), function(item) { item = split(item, '/'); elements[item[1]].outputName = item[0]; }); // Add default alt attribute for images elements.img.attributesDefault = [{name: 'alt', value: ''}]; // Remove these if they are empty by default each(split('ol,ul,sub,sup,blockquote,span,font,a,table,tbody,tr'), function(name) { elements[name].removeEmpty = true; }); // Padd these by default each(split('p,h1,h2,h3,h4,h5,h6,th,td,pre,div,address,caption'), function(name) { elements[name].paddEmpty = true; }); } else setValidElements(settings.valid_elements); addCustomElements(settings.custom_elements); addValidChildren(settings.valid_children); addValidElements(settings.extended_valid_elements); // Todo: Remove this when we fix list handling to be valid addValidChildren('+ol[ul|ol],+ul[ul|ol]'); // If the user didn't allow span only allow internal spans if (!getElementRule('span')) addValidElements('span[!data-mce-type|*]'); // Delete invalid elements if (settings.invalid_elements) { tinymce.each(tinymce.explode(settings.invalid_elements), function(item) { if (elements[item]) delete elements[item]; }); } self.children = children; self.styles = validStyles; self.getBoolAttrs = function() { return boolAttrMap; }; self.getBlockElements = function() { return blockElementsMap; }; self.getShortEndedElements = function() { return shortEndedElementsMap; }; self.getSelfClosingElements = function() { return selfClosingElementsMap; }; self.getNonEmptyElements = function() { return nonEmptyElementsMap; }; self.getWhiteSpaceElements = function() { return whiteSpaceElementsMap; }; self.isValidChild = function(name, child) { var parent = children[name]; return !!(parent && parent[child]); }; self.getElementRule = getElementRule; self.getCustomElements = function() { return customElementsMap; }; self.addValidElements = addValidElements; self.setValidElements = setValidElements; self.addCustomElements = addCustomElements; self.addValidChildren = addValidChildren; }; // Expose boolMap and blockElementMap as static properties for usage in DOMUtils tinymce.html.Schema.boolAttrMap = boolAttrMap; tinymce.html.Schema.blockElementsMap = blockElementsMap; })(tinymce); (function(tinymce) { tinymce.html.SaxParser = function(settings, schema) { var self = this, noop = function() {}; settings = settings || {}; self.schema = schema = schema || new tinymce.html.Schema(); if (settings.fix_self_closing !== false) settings.fix_self_closing = true; // Add handler functions from settings and setup default handlers tinymce.each('comment cdata text start end pi doctype'.split(' '), function(name) { if (name) self[name] = settings[name] || noop; }); self.parse = function(html) { var self = this, matches, index = 0, value, endRegExp, stack = [], attrList, i, text, name, isInternalElement, removeInternalElements, shortEndedElements, fillAttrsMap, isShortEnded, validate, elementRule, isValidElement, attr, attribsValue, invalidPrefixRegExp, validAttributesMap, validAttributePatterns, attributesRequired, attributesDefault, attributesForced, selfClosing, tokenRegExp, attrRegExp, specialElements, attrValue, idCount = 0, decode = tinymce.html.Entities.decode, fixSelfClosing, isIE; function processEndTag(name) { var pos, i; // Find position of parent of the same type pos = stack.length; while (pos--) { if (stack[pos].name === name) break; } // Found parent if (pos >= 0) { // Close all the open elements for (i = stack.length - 1; i >= pos; i--) { name = stack[i]; if (name.valid) self.end(name.name); } // Remove the open elements from the stack stack.length = pos; } }; // Precompile RegExps and map objects tokenRegExp = new RegExp('<(?:' + '(?:!--([\\w\\W]*?)-->)|' + // Comment '(?:!\\[CDATA\\[([\\w\\W]*?)\\]\\]>)|' + // CDATA '(?:!DOCTYPE([\\w\\W]*?)>)|' + // DOCTYPE '(?:\\?([^\\s\\/<>]+) ?([\\w\\W]*?)[?/]>)|' + // PI '(?:\\/([^>]+)>)|' + // End element '(?:([^\\s\\/<>]+)\\s*((?:[^"\'>]+(?:(?:"[^"]*")|(?:\'[^\']*\')|[^>]*))*)>)' + // Start element ')', 'g'); attrRegExp = /([\w:\-]+)(?:\s*=\s*(?:(?:\"((?:\\.|[^\"])*)\")|(?:\'((?:\\.|[^\'])*)\')|([^>\s]+)))?/g; specialElements = { 'script' : /<\/script[^>]*>/gi, 'style' : /<\/style[^>]*>/gi, 'noscript' : /<\/noscript[^>]*>/gi }; // Setup lookup tables for empty elements and boolean attributes shortEndedElements = schema.getShortEndedElements(); selfClosing = schema.getSelfClosingElements(); fillAttrsMap = schema.getBoolAttrs(); validate = settings.validate; removeInternalElements = settings.remove_internals; fixSelfClosing = settings.fix_self_closing; isIE = tinymce.isIE; invalidPrefixRegExp = /^:/; while (matches = tokenRegExp.exec(html)) { // Text if (index < matches.index) self.text(decode(html.substr(index, matches.index - index))); if (value = matches[6]) { // End element value = value.toLowerCase(); // IE will add a ":" in front of elements it doesn't understand like custom elements or HTML5 elements if (isIE && invalidPrefixRegExp.test(value)) value = value.substr(1); processEndTag(value); } else if (value = matches[7]) { // Start element value = value.toLowerCase(); // IE will add a ":" in front of elements it doesn't understand like custom elements or HTML5 elements if (isIE && invalidPrefixRegExp.test(value)) value = value.substr(1); isShortEnded = value in shortEndedElements; // Is self closing tag for example an
  • after an open
  • if (fixSelfClosing && selfClosing[value] && stack.length > 0 && stack[stack.length - 1].name === value) processEndTag(value); // Validate element if (!validate || (elementRule = schema.getElementRule(value))) { isValidElement = true; // Grab attributes map and patters when validation is enabled if (validate) { validAttributesMap = elementRule.attributes; validAttributePatterns = elementRule.attributePatterns; } // Parse attributes if (attribsValue = matches[8]) { isInternalElement = attribsValue.indexOf('data-mce-type') !== -1; // Check if the element is an internal element // If the element has internal attributes then remove it if we are told to do so if (isInternalElement && removeInternalElements) isValidElement = false; attrList = []; attrList.map = {}; attribsValue.replace(attrRegExp, function(match, name, value, val2, val3) { var attrRule, i; name = name.toLowerCase(); value = name in fillAttrsMap ? name : decode(value || val2 || val3 || ''); // Handle boolean attribute than value attribute // Validate name and value if (validate && !isInternalElement && name.indexOf('data-') !== 0) { attrRule = validAttributesMap[name]; // Find rule by pattern matching if (!attrRule && validAttributePatterns) { i = validAttributePatterns.length; while (i--) { attrRule = validAttributePatterns[i]; if (attrRule.pattern.test(name)) break; } // No rule matched if (i === -1) attrRule = null; } // No attribute rule found if (!attrRule) return; // Validate value if (attrRule.validValues && !(value in attrRule.validValues)) return; } // Add attribute to list and map attrList.map[name] = value; attrList.push({ name: name, value: value }); }); } else { attrList = []; attrList.map = {}; } // Process attributes if validation is enabled if (validate && !isInternalElement) { attributesRequired = elementRule.attributesRequired; attributesDefault = elementRule.attributesDefault; attributesForced = elementRule.attributesForced; // Handle forced attributes if (attributesForced) { i = attributesForced.length; while (i--) { attr = attributesForced[i]; name = attr.name; attrValue = attr.value; if (attrValue === '{$uid}') attrValue = 'mce_' + idCount++; attrList.map[name] = attrValue; attrList.push({name: name, value: attrValue}); } } // Handle default attributes if (attributesDefault) { i = attributesDefault.length; while (i--) { attr = attributesDefault[i]; name = attr.name; if (!(name in attrList.map)) { attrValue = attr.value; if (attrValue === '{$uid}') attrValue = 'mce_' + idCount++; attrList.map[name] = attrValue; attrList.push({name: name, value: attrValue}); } } } // Handle required attributes if (attributesRequired) { i = attributesRequired.length; while (i--) { if (attributesRequired[i] in attrList.map) break; } // None of the required attributes where found if (i === -1) isValidElement = false; } // Invalidate element if it's marked as bogus if (attrList.map['data-mce-bogus']) isValidElement = false; } if (isValidElement) self.start(value, attrList, isShortEnded); } else isValidElement = false; // Treat script, noscript and style a bit different since they may include code that looks like elements if (endRegExp = specialElements[value]) { endRegExp.lastIndex = index = matches.index + matches[0].length; if (matches = endRegExp.exec(html)) { if (isValidElement) text = html.substr(index, matches.index - index); index = matches.index + matches[0].length; } else { text = html.substr(index); index = html.length; } if (isValidElement && text.length > 0) self.text(text, true); if (isValidElement) self.end(value); tokenRegExp.lastIndex = index; continue; } // Push value on to stack if (!isShortEnded) { if (!attribsValue || attribsValue.indexOf('/') != attribsValue.length - 1) stack.push({name: value, valid: isValidElement}); else if (isValidElement) self.end(value); } } else if (value = matches[1]) { // Comment self.comment(value); } else if (value = matches[2]) { // CDATA self.cdata(value); } else if (value = matches[3]) { // DOCTYPE self.doctype(value); } else if (value = matches[4]) { // PI self.pi(value, matches[5]); } index = matches.index + matches[0].length; } // Text if (index < html.length) self.text(decode(html.substr(index))); // Close any open elements for (i = stack.length - 1; i >= 0; i--) { value = stack[i]; if (value.valid) self.end(value.name); } }; } })(tinymce); (function(tinymce) { var whiteSpaceRegExp = /^[ \t\r\n]*$/, typeLookup = { '#text' : 3, '#comment' : 8, '#cdata' : 4, '#pi' : 7, '#doctype' : 10, '#document-fragment' : 11 }; // Walks the tree left/right function walk(node, root_node, prev) { var sibling, parent, startName = prev ? 'lastChild' : 'firstChild', siblingName = prev ? 'prev' : 'next'; // Walk into nodes if it has a start if (node[startName]) return node[startName]; // Return the sibling if it has one if (node !== root_node) { sibling = node[siblingName]; if (sibling) return sibling; // Walk up the parents to look for siblings for (parent = node.parent; parent && parent !== root_node; parent = parent.parent) { sibling = parent[siblingName]; if (sibling) return sibling; } } }; function Node(name, type) { this.name = name; this.type = type; if (type === 1) { this.attributes = []; this.attributes.map = {}; } } tinymce.extend(Node.prototype, { replace : function(node) { var self = this; if (node.parent) node.remove(); self.insert(node, self); self.remove(); return self; }, attr : function(name, value) { var self = this, attrs, i, undef; if (typeof name !== "string") { for (i in name) self.attr(i, name[i]); return self; } if (attrs = self.attributes) { if (value !== undef) { // Remove attribute if (value === null) { if (name in attrs.map) { delete attrs.map[name]; i = attrs.length; while (i--) { if (attrs[i].name === name) { attrs = attrs.splice(i, 1); return self; } } } return self; } // Set attribute if (name in attrs.map) { // Set attribute i = attrs.length; while (i--) { if (attrs[i].name === name) { attrs[i].value = value; break; } } } else attrs.push({name: name, value: value}); attrs.map[name] = value; return self; } else { return attrs.map[name]; } } }, clone : function() { var self = this, clone = new Node(self.name, self.type), i, l, selfAttrs, selfAttr, cloneAttrs; // Clone element attributes if (selfAttrs = self.attributes) { cloneAttrs = []; cloneAttrs.map = {}; for (i = 0, l = selfAttrs.length; i < l; i++) { selfAttr = selfAttrs[i]; // Clone everything except id if (selfAttr.name !== 'id') { cloneAttrs[cloneAttrs.length] = {name: selfAttr.name, value: selfAttr.value}; cloneAttrs.map[selfAttr.name] = selfAttr.value; } } clone.attributes = cloneAttrs; } clone.value = self.value; clone.shortEnded = self.shortEnded; return clone; }, wrap : function(wrapper) { var self = this; self.parent.insert(wrapper, self); wrapper.append(self); return self; }, unwrap : function() { var self = this, node, next; for (node = self.firstChild; node; ) { next = node.next; self.insert(node, self, true); node = next; } self.remove(); }, remove : function() { var self = this, parent = self.parent, next = self.next, prev = self.prev; if (parent) { if (parent.firstChild === self) { parent.firstChild = next; if (next) next.prev = null; } else { prev.next = next; } if (parent.lastChild === self) { parent.lastChild = prev; if (prev) prev.next = null; } else { next.prev = prev; } self.parent = self.next = self.prev = null; } return self; }, append : function(node) { var self = this, last; if (node.parent) node.remove(); last = self.lastChild; if (last) { last.next = node; node.prev = last; self.lastChild = node; } else self.lastChild = self.firstChild = node; node.parent = self; return node; }, insert : function(node, ref_node, before) { var parent; if (node.parent) node.remove(); parent = ref_node.parent || this; if (before) { if (ref_node === parent.firstChild) parent.firstChild = node; else ref_node.prev.next = node; node.prev = ref_node.prev; node.next = ref_node; ref_node.prev = node; } else { if (ref_node === parent.lastChild) parent.lastChild = node; else ref_node.next.prev = node; node.next = ref_node.next; node.prev = ref_node; ref_node.next = node; } node.parent = parent; return node; }, getAll : function(name) { var self = this, node, collection = []; for (node = self.firstChild; node; node = walk(node, self)) { if (node.name === name) collection.push(node); } return collection; }, empty : function() { var self = this, nodes, i, node; // Remove all children if (self.firstChild) { nodes = []; // Collect the children for (node = self.firstChild; node; node = walk(node, self)) nodes.push(node); // Remove the children i = nodes.length; while (i--) { node = nodes[i]; node.parent = node.firstChild = node.lastChild = node.next = node.prev = null; } } self.firstChild = self.lastChild = null; return self; }, isEmpty : function(elements) { var self = this, node = self.firstChild, i, name; if (node) { do { if (node.type === 1) { // Ignore bogus elements if (node.attributes.map['data-mce-bogus']) continue; // Keep empty elements like if (elements[node.name]) return false; // Keep elements with data attributes or name attribute like i = node.attributes.length; while (i--) { name = node.attributes[i].name; if (name === "name" || name.indexOf('data-') === 0) return false; } } // Keep non whitespace text nodes if ((node.type === 3 && !whiteSpaceRegExp.test(node.value))) return false; } while (node = walk(node, self)); } return true; }, walk : function(prev) { return walk(this, null, prev); } }); tinymce.extend(Node, { create : function(name, attrs) { var node, attrName; // Create node node = new Node(name, typeLookup[name] || 1); // Add attributes if needed if (attrs) { for (attrName in attrs) node.attr(attrName, attrs[attrName]); } return node; } }); tinymce.html.Node = Node; })(tinymce); (function(tinymce) { var Node = tinymce.html.Node; tinymce.html.DomParser = function(settings, schema) { var self = this, nodeFilters = {}, attributeFilters = [], matchedNodes = {}, matchedAttributes = {}; settings = settings || {}; settings.validate = "validate" in settings ? settings.validate : true; settings.root_name = settings.root_name || 'body'; self.schema = schema = schema || new tinymce.html.Schema(); function fixInvalidChildren(nodes) { var ni, node, parent, parents, newParent, currentNode, tempNode, childNode, i, childClone, nonEmptyElements, nonSplitableElements, sibling, nextNode; nonSplitableElements = tinymce.makeMap('tr,td,th,tbody,thead,tfoot,table'); nonEmptyElements = schema.getNonEmptyElements(); for (ni = 0; ni < nodes.length; ni++) { node = nodes[ni]; // Already removed if (!node.parent) continue; // Get list of all parent nodes until we find a valid parent to stick the child into parents = [node]; for (parent = node.parent; parent && !schema.isValidChild(parent.name, node.name) && !nonSplitableElements[parent.name]; parent = parent.parent) parents.push(parent); // Found a suitable parent if (parent && parents.length > 1) { // Reverse the array since it makes looping easier parents.reverse(); // Clone the related parent and insert that after the moved node newParent = currentNode = self.filterNode(parents[0].clone()); // Start cloning and moving children on the left side of the target node for (i = 0; i < parents.length - 1; i++) { if (schema.isValidChild(currentNode.name, parents[i].name)) { tempNode = self.filterNode(parents[i].clone()); currentNode.append(tempNode); } else tempNode = currentNode; for (childNode = parents[i].firstChild; childNode && childNode != parents[i + 1]; ) { nextNode = childNode.next; tempNode.append(childNode); childNode = nextNode; } currentNode = tempNode; } if (!newParent.isEmpty(nonEmptyElements)) { parent.insert(newParent, parents[0], true); parent.insert(node, newParent); } else { parent.insert(node, parents[0], true); } // Check if the element is empty by looking through it's contents and special treatment for


    parent = parents[0]; if (parent.isEmpty(nonEmptyElements) || parent.firstChild === parent.lastChild && parent.firstChild.name === 'br') { parent.empty().remove(); } } else if (node.parent) { // If it's an LI try to find a UL/OL for it or wrap it if (node.name === 'li') { sibling = node.prev; if (sibling && (sibling.name === 'ul' || sibling.name === 'ul')) { sibling.append(node); continue; } sibling = node.next; if (sibling && (sibling.name === 'ul' || sibling.name === 'ul')) { sibling.insert(node, sibling.firstChild, true); continue; } node.wrap(self.filterNode(new Node('ul', 1))); continue; } // Try wrapping the element in a DIV if (schema.isValidChild(node.parent.name, 'div') && schema.isValidChild('div', node.name)) { node.wrap(self.filterNode(new Node('div', 1))); } else { // We failed wrapping it, then remove or unwrap it if (node.name === 'style' || node.name === 'script') node.empty().remove(); else node.unwrap(); } } } }; self.filterNode = function(node) { var i, name, list; // Run element filters if (name in nodeFilters) { list = matchedNodes[name]; if (list) list.push(node); else matchedNodes[name] = [node]; } // Run attribute filters i = attributeFilters.length; while (i--) { name = attributeFilters[i].name; if (name in node.attributes.map) { list = matchedAttributes[name]; if (list) list.push(node); else matchedAttributes[name] = [node]; } } return node; }; self.addNodeFilter = function(name, callback) { tinymce.each(tinymce.explode(name), function(name) { var list = nodeFilters[name]; if (!list) nodeFilters[name] = list = []; list.push(callback); }); }; self.addAttributeFilter = function(name, callback) { tinymce.each(tinymce.explode(name), function(name) { var i; for (i = 0; i < attributeFilters.length; i++) { if (attributeFilters[i].name === name) { attributeFilters[i].callbacks.push(callback); return; } } attributeFilters.push({name: name, callbacks: [callback]}); }); }; self.parse = function(html, args) { var parser, rootNode, node, nodes, i, l, fi, fl, list, name, validate, blockElements, startWhiteSpaceRegExp, invalidChildren = [], endWhiteSpaceRegExp, allWhiteSpaceRegExp, whiteSpaceElements, children, nonEmptyElements, rootBlockName; args = args || {}; matchedNodes = {}; matchedAttributes = {}; blockElements = tinymce.extend(tinymce.makeMap('script,style,head,html,body,title,meta,param'), schema.getBlockElements()); nonEmptyElements = schema.getNonEmptyElements(); children = schema.children; validate = settings.validate; rootBlockName = "forced_root_block" in args ? args.forced_root_block : settings.forced_root_block; whiteSpaceElements = schema.getWhiteSpaceElements(); startWhiteSpaceRegExp = /^[ \t\r\n]+/; endWhiteSpaceRegExp = /[ \t\r\n]+$/; allWhiteSpaceRegExp = /[ \t\r\n]+/g; function addRootBlocks() { var node = rootNode.firstChild, next, rootBlockNode; while (node) { next = node.next; if (node.type == 3 || (node.type == 1 && node.name !== 'p' && !blockElements[node.name] && !node.attr('data-mce-type'))) { if (!rootBlockNode) { // Create a new root block element rootBlockNode = createNode(rootBlockName, 1); rootNode.insert(rootBlockNode, node); rootBlockNode.append(node); } else rootBlockNode.append(node); } else { rootBlockNode = null; } node = next; }; }; function createNode(name, type) { var node = new Node(name, type), list; if (name in nodeFilters) { list = matchedNodes[name]; if (list) list.push(node); else matchedNodes[name] = [node]; } return node; }; function removeWhitespaceBefore(node) { var textNode, textVal, sibling; for (textNode = node.prev; textNode && textNode.type === 3; ) { textVal = textNode.value.replace(endWhiteSpaceRegExp, ''); if (textVal.length > 0) { textNode.value = textVal; textNode = textNode.prev; } else { sibling = textNode.prev; textNode.remove(); textNode = sibling; } } }; parser = new tinymce.html.SaxParser({ validate : validate, fix_self_closing : !validate, // Let the DOM parser handle
  • in
  • or

    in

    for better results cdata: function(text) { node.append(createNode('#cdata', 4)).value = text; }, text: function(text, raw) { var textNode; // Trim all redundant whitespace on non white space elements if (!whiteSpaceElements[node.name]) { text = text.replace(allWhiteSpaceRegExp, ' '); if (node.lastChild && blockElements[node.lastChild.name]) text = text.replace(startWhiteSpaceRegExp, ''); } // Do we need to create the node if (text.length !== 0) { textNode = createNode('#text', 3); textNode.raw = !!raw; node.append(textNode).value = text; } }, comment: function(text) { node.append(createNode('#comment', 8)).value = text; }, pi: function(name, text) { node.append(createNode(name, 7)).value = text; removeWhitespaceBefore(node); }, doctype: function(text) { var newNode; newNode = node.append(createNode('#doctype', 10)); newNode.value = text; removeWhitespaceBefore(node); }, start: function(name, attrs, empty) { var newNode, attrFiltersLen, elementRule, textNode, attrName, text, sibling, parent; elementRule = validate ? schema.getElementRule(name) : {}; if (elementRule) { newNode = createNode(elementRule.outputName || name, 1); newNode.attributes = attrs; newNode.shortEnded = empty; node.append(newNode); // Check if node is valid child of the parent node is the child is // unknown we don't collect it since it's probably a custom element parent = children[node.name]; if (parent && children[newNode.name] && !parent[newNode.name]) invalidChildren.push(newNode); attrFiltersLen = attributeFilters.length; while (attrFiltersLen--) { attrName = attributeFilters[attrFiltersLen].name; if (attrName in attrs.map) { list = matchedAttributes[attrName]; if (list) list.push(newNode); else matchedAttributes[attrName] = [newNode]; } } // Trim whitespace before block if (blockElements[name]) removeWhitespaceBefore(newNode); // Change current node if the element wasn't empty i.e not
    or if (!empty) node = newNode; } }, end: function(name) { var textNode, elementRule, text, sibling, tempNode; elementRule = validate ? schema.getElementRule(name) : {}; if (elementRule) { if (blockElements[name]) { if (!whiteSpaceElements[node.name]) { // Trim whitespace at beginning of block for (textNode = node.firstChild; textNode && textNode.type === 3; ) { text = textNode.value.replace(startWhiteSpaceRegExp, ''); if (text.length > 0) { textNode.value = text; textNode = textNode.next; } else { sibling = textNode.next; textNode.remove(); textNode = sibling; } } // Trim whitespace at end of block for (textNode = node.lastChild; textNode && textNode.type === 3; ) { text = textNode.value.replace(endWhiteSpaceRegExp, ''); if (text.length > 0) { textNode.value = text; textNode = textNode.prev; } else { sibling = textNode.prev; textNode.remove(); textNode = sibling; } } } // Trim start white space textNode = node.prev; if (textNode && textNode.type === 3) { text = textNode.value.replace(startWhiteSpaceRegExp, ''); if (text.length > 0) textNode.value = text; else textNode.remove(); } } // Handle empty nodes if (elementRule.removeEmpty || elementRule.paddEmpty) { if (node.isEmpty(nonEmptyElements)) { if (elementRule.paddEmpty) node.empty().append(new Node('#text', '3')).value = '\u00a0'; else { // Leave nodes that have a name like if (!node.attributes.map.name) { tempNode = node.parent; node.empty().remove(); node = tempNode; return; } } } } node = node.parent; } } }, schema); rootNode = node = new Node(args.context || settings.root_name, 11); parser.parse(html); // Fix invalid children or report invalid children in a contextual parsing if (validate && invalidChildren.length) { if (!args.context) fixInvalidChildren(invalidChildren); else args.invalid = true; } // Wrap nodes in the root into block elements if the root is body if (rootBlockName && rootNode.name == 'body') addRootBlocks(); // Run filters only when the contents is valid if (!args.invalid) { // Run node filters for (name in matchedNodes) { list = nodeFilters[name]; nodes = matchedNodes[name]; // Remove already removed children fi = nodes.length; while (fi--) { if (!nodes[fi].parent) nodes.splice(fi, 1); } for (i = 0, l = list.length; i < l; i++) list[i](nodes, name, args); } // Run attribute filters for (i = 0, l = attributeFilters.length; i < l; i++) { list = attributeFilters[i]; if (list.name in matchedAttributes) { nodes = matchedAttributes[list.name]; // Remove already removed children fi = nodes.length; while (fi--) { if (!nodes[fi].parent) nodes.splice(fi, 1); } for (fi = 0, fl = list.callbacks.length; fi < fl; fi++) list.callbacks[fi](nodes, list.name, args); } } } return rootNode; }; // Remove
    at end of block elements Gecko and WebKit injects BR elements to // make it possible to place the caret inside empty blocks. This logic tries to remove // these elements and keep br elements that where intended to be there intact if (settings.remove_trailing_brs) { self.addNodeFilter('br', function(nodes, name) { var i, l = nodes.length, node, blockElements = schema.getBlockElements(), nonEmptyElements = schema.getNonEmptyElements(), parent, prev, prevName; // Remove brs from body element as well blockElements.body = 1; // Must loop forwards since it will otherwise remove all brs in

    a


    for (i = 0; i < l; i++) { node = nodes[i]; parent = node.parent; if (blockElements[node.parent.name] && node === parent.lastChild) { // Loop all nodes to the right of the current node and check for other BR elements // excluding bookmarks since they are invisible prev = node.prev; while (prev) { prevName = prev.name; // Ignore bookmarks if (prevName !== "span" || prev.attr('data-mce-type') !== 'bookmark') { // Found a non BR element if (prevName !== "br") break; // Found another br it's a

    structure then don't remove anything if (prevName === 'br') { node = null; break; } } prev = prev.prev; } if (node) { node.remove(); // Is the parent to be considered empty after we removed the BR if (parent.isEmpty(nonEmptyElements)) { elementRule = schema.getElementRule(parent.name); // Remove or padd the element depending on schema rule if (elementRule) { if (elementRule.removeEmpty) parent.remove(); else if (elementRule.paddEmpty) parent.empty().append(new tinymce.html.Node('#text', 3)).value = '\u00a0'; } } } } } }); } } })(tinymce); tinymce.html.Writer = function(settings) { var html = [], indent, indentBefore, indentAfter, encode, htmlOutput; settings = settings || {}; indent = settings.indent; indentBefore = tinymce.makeMap(settings.indent_before || ''); indentAfter = tinymce.makeMap(settings.indent_after || ''); encode = tinymce.html.Entities.getEncodeFunc(settings.entity_encoding || 'raw', settings.entities); htmlOutput = settings.element_format == "html"; return { start: function(name, attrs, empty) { var i, l, attr, value; if (indent && indentBefore[name] && html.length > 0) { value = html[html.length - 1]; if (value.length > 0 && value !== '\n') html.push('\n'); } html.push('<', name); if (attrs) { for (i = 0, l = attrs.length; i < l; i++) { attr = attrs[i]; html.push(' ', attr.name, '="', encode(attr.value, true), '"'); } } if (!empty || htmlOutput) html[html.length] = '>'; else html[html.length] = ' />'; if (empty && indent && indentAfter[name] && html.length > 0) { value = html[html.length - 1]; if (value.length > 0 && value !== '\n') html.push('\n'); } }, end: function(name) { var value; /*if (indent && indentBefore[name] && html.length > 0) { value = html[html.length - 1]; if (value.length > 0 && value !== '\n') html.push('\n'); }*/ html.push(''); if (indent && indentAfter[name] && html.length > 0) { value = html[html.length - 1]; if (value.length > 0 && value !== '\n') html.push('\n'); } }, text: function(text, raw) { if (text.length > 0) html[html.length] = raw ? text : encode(text); }, cdata: function(text) { html.push(''); }, comment: function(text) { html.push(''); }, pi: function(name, text) { if (text) html.push(''); else html.push(''); if (indent) html.push('\n'); }, doctype: function(text) { html.push('', indent ? '\n' : ''); }, reset: function() { html.length = 0; }, getContent: function() { return html.join('').replace(/\n$/, ''); } }; }; (function(tinymce) { tinymce.html.Serializer = function(settings, schema) { var self = this, writer = new tinymce.html.Writer(settings); settings = settings || {}; settings.validate = "validate" in settings ? settings.validate : true; self.schema = schema = schema || new tinymce.html.Schema(); self.writer = writer; self.serialize = function(node) { var handlers, validate; validate = settings.validate; handlers = { // #text 3: function(node, raw) { writer.text(node.value, node.raw); }, // #comment 8: function(node) { writer.comment(node.value); }, // Processing instruction 7: function(node) { writer.pi(node.name, node.value); }, // Doctype 10: function(node) { writer.doctype(node.value); }, // CDATA 4: function(node) { writer.cdata(node.value); }, // Document fragment 11: function(node) { if ((node = node.firstChild)) { do { walk(node); } while (node = node.next); } } }; writer.reset(); function walk(node) { var handler = handlers[node.type], name, isEmpty, attrs, attrName, attrValue, sortedAttrs, i, l, elementRule; if (!handler) { name = node.name; isEmpty = node.shortEnded; attrs = node.attributes; // Sort attributes if (validate && attrs && attrs.length > 1) { sortedAttrs = []; sortedAttrs.map = {}; elementRule = schema.getElementRule(node.name); for (i = 0, l = elementRule.attributesOrder.length; i < l; i++) { attrName = elementRule.attributesOrder[i]; if (attrName in attrs.map) { attrValue = attrs.map[attrName]; sortedAttrs.map[attrName] = attrValue; sortedAttrs.push({name: attrName, value: attrValue}); } } for (i = 0, l = attrs.length; i < l; i++) { attrName = attrs[i].name; if (!(attrName in sortedAttrs.map)) { attrValue = attrs.map[attrName]; sortedAttrs.map[attrName] = attrValue; sortedAttrs.push({name: attrName, value: attrValue}); } } attrs = sortedAttrs; } writer.start(node.name, attrs, isEmpty); if (!isEmpty) { if ((node = node.firstChild)) { do { walk(node); } while (node = node.next); } writer.end(name); } } else handler(node); } // Serialize element and treat all non elements as fragments if (node.type == 1 && !settings.inner) walk(node); else handlers[11](node); return writer.getContent(); }; } })(tinymce); (function(tinymce) { // Shorten names var each = tinymce.each, is = tinymce.is, isWebKit = tinymce.isWebKit, isIE = tinymce.isIE, Entities = tinymce.html.Entities, simpleSelectorRe = /^([a-z0-9],?)+$/i, blockElementsMap = tinymce.html.Schema.blockElementsMap, whiteSpaceRegExp = /^[ \t\r\n]*$/; tinymce.create('tinymce.dom.DOMUtils', { doc : null, root : null, files : null, pixelStyles : /^(top|left|bottom|right|width|height|borderWidth)$/, props : { "for" : "htmlFor", "class" : "className", className : "className", checked : "checked", disabled : "disabled", maxlength : "maxLength", readonly : "readOnly", selected : "selected", value : "value", id : "id", name : "name", type : "type" }, DOMUtils : function(d, s) { var t = this, globalStyle, name; t.doc = d; t.win = window; t.files = {}; t.cssFlicker = false; t.counter = 0; t.stdMode = !tinymce.isIE || d.documentMode >= 8; t.boxModel = !tinymce.isIE || d.compatMode == "CSS1Compat" || t.stdMode; t.hasOuterHTML = "outerHTML" in d.createElement("a"); t.settings = s = tinymce.extend({ keep_values : false, hex_colors : 1 }, s); t.schema = s.schema; t.styles = new tinymce.html.Styles({ url_converter : s.url_converter, url_converter_scope : s.url_converter_scope }, s.schema); // Fix IE6SP2 flicker and check it failed for pre SP2 if (tinymce.isIE6) { try { d.execCommand('BackgroundImageCache', false, true); } catch (e) { t.cssFlicker = true; } } if (isIE && s.schema) { // Add missing HTML 4/5 elements to IE ('abbr article aside audio canvas ' + 'details figcaption figure footer ' + 'header hgroup mark menu meter nav ' + 'output progress section summary ' + 'time video').replace(/\w+/g, function(name) { d.createElement(name); }); // Create all custom elements for (name in s.schema.getCustomElements()) { d.createElement(name); } } tinymce.addUnload(t.destroy, t); }, getRoot : function() { var t = this, s = t.settings; return (s && t.get(s.root_element)) || t.doc.body; }, getViewPort : function(w) { var d, b; w = !w ? this.win : w; d = w.document; b = this.boxModel ? d.documentElement : d.body; // Returns viewport size excluding scrollbars return { x : w.pageXOffset || b.scrollLeft, y : w.pageYOffset || b.scrollTop, w : w.innerWidth || b.clientWidth, h : w.innerHeight || b.clientHeight }; }, getRect : function(e) { var p, t = this, sr; e = t.get(e); p = t.getPos(e); sr = t.getSize(e); return { x : p.x, y : p.y, w : sr.w, h : sr.h }; }, getSize : function(e) { var t = this, w, h; e = t.get(e); w = t.getStyle(e, 'width'); h = t.getStyle(e, 'height'); // Non pixel value, then force offset/clientWidth if (w.indexOf('px') === -1) w = 0; // Non pixel value, then force offset/clientWidth if (h.indexOf('px') === -1) h = 0; return { w : parseInt(w) || e.offsetWidth || e.clientWidth, h : parseInt(h) || e.offsetHeight || e.clientHeight }; }, getParent : function(n, f, r) { return this.getParents(n, f, r, false); }, getParents : function(n, f, r, c) { var t = this, na, se = t.settings, o = []; n = t.get(n); c = c === undefined; if (se.strict_root) r = r || t.getRoot(); // Wrap node name as func if (is(f, 'string')) { na = f; if (f === '*') { f = function(n) {return n.nodeType == 1;}; } else { f = function(n) { return t.is(n, na); }; } } while (n) { if (n == r || !n.nodeType || n.nodeType === 9) break; if (!f || f(n)) { if (c) o.push(n); else return n; } n = n.parentNode; } return c ? o : null; }, get : function(e) { var n; if (e && this.doc && typeof(e) == 'string') { n = e; e = this.doc.getElementById(e); // IE and Opera returns meta elements when they match the specified input ID, but getElementsByName seems to do the trick if (e && e.id !== n) return this.doc.getElementsByName(n)[1]; } return e; }, getNext : function(node, selector) { return this._findSib(node, selector, 'nextSibling'); }, getPrev : function(node, selector) { return this._findSib(node, selector, 'previousSibling'); }, select : function(pa, s) { var t = this; return tinymce.dom.Sizzle(pa, t.get(s) || t.get(t.settings.root_element) || t.doc, []); }, is : function(n, selector) { var i; // If it isn't an array then try to do some simple selectors instead of Sizzle for to boost performance if (n.length === undefined) { // Simple all selector if (selector === '*') return n.nodeType == 1; // Simple selector just elements if (simpleSelectorRe.test(selector)) { selector = selector.toLowerCase().split(/,/); n = n.nodeName.toLowerCase(); for (i = selector.length - 1; i >= 0; i--) { if (selector[i] == n) return true; } return false; } } return tinymce.dom.Sizzle.matches(selector, n.nodeType ? [n] : n).length > 0; }, add : function(p, n, a, h, c) { var t = this; return this.run(p, function(p) { var e, k; e = is(n, 'string') ? t.doc.createElement(n) : n; t.setAttribs(e, a); if (h) { if (h.nodeType) e.appendChild(h); else t.setHTML(e, h); } return !c ? p.appendChild(e) : e; }); }, create : function(n, a, h) { return this.add(this.doc.createElement(n), n, a, h, 1); }, createHTML : function(n, a, h) { var o = '', t = this, k; o += '<' + n; for (k in a) { if (a.hasOwnProperty(k)) o += ' ' + k + '="' + t.encode(a[k]) + '"'; } // A call to tinymce.is doesn't work for some odd reason on IE9 possible bug inside their JS runtime if (typeof(h) != "undefined") return o + '>' + h + ''; return o + ' />'; }, remove : function(node, keep_children) { return this.run(node, function(node) { var child, parent = node.parentNode; if (!parent) return null; if (keep_children) { while (child = node.firstChild) { // IE 8 will crash if you don't remove completely empty text nodes if (!tinymce.isIE || child.nodeType !== 3 || child.nodeValue) parent.insertBefore(child, node); else node.removeChild(child); } } return parent.removeChild(node); }); }, setStyle : function(n, na, v) { var t = this; return t.run(n, function(e) { var s, i; s = e.style; // Camelcase it, if needed na = na.replace(/-(\D)/g, function(a, b){ return b.toUpperCase(); }); // Default px suffix on these if (t.pixelStyles.test(na) && (tinymce.is(v, 'number') || /^[\-0-9\.]+$/.test(v))) v += 'px'; switch (na) { case 'opacity': // IE specific opacity if (isIE) { s.filter = v === '' ? '' : "alpha(opacity=" + (v * 100) + ")"; if (!n.currentStyle || !n.currentStyle.hasLayout) s.display = 'inline-block'; } // Fix for older browsers s[na] = s['-moz-opacity'] = s['-khtml-opacity'] = v || ''; break; case 'float': isIE ? s.styleFloat = v : s.cssFloat = v; break; default: s[na] = v || ''; } // Force update of the style data if (t.settings.update_styles) t.setAttrib(e, 'data-mce-style'); }); }, getStyle : function(n, na, c) { n = this.get(n); if (!n) return; // Gecko if (this.doc.defaultView && c) { // Remove camelcase na = na.replace(/[A-Z]/g, function(a){ return '-' + a; }); try { return this.doc.defaultView.getComputedStyle(n, null).getPropertyValue(na); } catch (ex) { // Old safari might fail return null; } } // Camelcase it, if needed na = na.replace(/-(\D)/g, function(a, b){ return b.toUpperCase(); }); if (na == 'float') na = isIE ? 'styleFloat' : 'cssFloat'; // IE & Opera if (n.currentStyle && c) return n.currentStyle[na]; return n.style ? n.style[na] : undefined; }, setStyles : function(e, o) { var t = this, s = t.settings, ol; ol = s.update_styles; s.update_styles = 0; each(o, function(v, n) { t.setStyle(e, n, v); }); // Update style info s.update_styles = ol; if (s.update_styles) t.setAttrib(e, s.cssText); }, removeAllAttribs: function(e) { return this.run(e, function(e) { var i, attrs = e.attributes; for (i = attrs.length - 1; i >= 0; i--) { e.removeAttributeNode(attrs.item(i)); } }); }, setAttrib : function(e, n, v) { var t = this; // Whats the point if (!e || !n) return; // Strict XML mode if (t.settings.strict) n = n.toLowerCase(); return this.run(e, function(e) { var s = t.settings; switch (n) { case "style": if (!is(v, 'string')) { each(v, function(v, n) { t.setStyle(e, n, v); }); return; } // No mce_style for elements with these since they might get resized by the user if (s.keep_values) { if (v && !t._isRes(v)) e.setAttribute('data-mce-style', v, 2); else e.removeAttribute('data-mce-style', 2); } e.style.cssText = v; break; case "class": e.className = v || ''; // Fix IE null bug break; case "src": case "href": if (s.keep_values) { if (s.url_converter) v = s.url_converter.call(s.url_converter_scope || t, v, n, e); t.setAttrib(e, 'data-mce-' + n, v, 2); } break; case "shape": e.setAttribute('data-mce-style', v); break; } if (is(v) && v !== null && v.length !== 0) e.setAttribute(n, '' + v, 2); else e.removeAttribute(n, 2); }); }, setAttribs : function(e, o) { var t = this; return this.run(e, function(e) { each(o, function(v, n) { t.setAttrib(e, n, v); }); }); }, getAttrib : function(e, n, dv) { var v, t = this, undef; e = t.get(e); if (!e || e.nodeType !== 1) return dv === undef ? false : dv; if (!is(dv)) dv = ''; // Try the mce variant for these if (/^(src|href|style|coords|shape)$/.test(n)) { v = e.getAttribute("data-mce-" + n); if (v) return v; } if (isIE && t.props[n]) { v = e[t.props[n]]; v = v && v.nodeValue ? v.nodeValue : v; } if (!v) v = e.getAttribute(n, 2); // Check boolean attribs if (/^(checked|compact|declare|defer|disabled|ismap|multiple|nohref|noshade|nowrap|readonly|selected)$/.test(n)) { if (e[t.props[n]] === true && v === '') return n; return v ? n : ''; } // Inner input elements will override attributes on form elements if (e.nodeName === "FORM" && e.getAttributeNode(n)) return e.getAttributeNode(n).nodeValue; if (n === 'style') { v = v || e.style.cssText; if (v) { v = t.serializeStyle(t.parseStyle(v), e.nodeName); if (t.settings.keep_values && !t._isRes(v)) e.setAttribute('data-mce-style', v); } } // Remove Apple and WebKit stuff if (isWebKit && n === "class" && v) v = v.replace(/(apple|webkit)\-[a-z\-]+/gi, ''); // Handle IE issues if (isIE) { switch (n) { case 'rowspan': case 'colspan': // IE returns 1 as default value if (v === 1) v = ''; break; case 'size': // IE returns +0 as default value for size if (v === '+0' || v === 20 || v === 0) v = ''; break; case 'width': case 'height': case 'vspace': case 'checked': case 'disabled': case 'readonly': if (v === 0) v = ''; break; case 'hspace': // IE returns -1 as default value if (v === -1) v = ''; break; case 'maxlength': case 'tabindex': // IE returns default value if (v === 32768 || v === 2147483647 || v === '32768') v = ''; break; case 'multiple': case 'compact': case 'noshade': case 'nowrap': if (v === 65535) return n; return dv; case 'shape': v = v.toLowerCase(); break; default: // IE has odd anonymous function for event attributes if (n.indexOf('on') === 0 && v) v = tinymce._replace(/^function\s+\w+\(\)\s+\{\s+(.*)\s+\}$/, '$1', '' + v); } } return (v !== undef && v !== null && v !== '') ? '' + v : dv; }, getPos : function(n, ro) { var t = this, x = 0, y = 0, e, d = t.doc, r; n = t.get(n); ro = ro || d.body; if (n) { // Use getBoundingClientRect if it exists since it's faster than looping offset nodes if (n.getBoundingClientRect) { n = n.getBoundingClientRect(); e = t.boxModel ? d.documentElement : d.body; // Add scroll offsets from documentElement or body since IE with the wrong box model will use d.body and so do WebKit // Also remove the body/documentelement clientTop/clientLeft on IE 6, 7 since they offset the position x = n.left + (d.documentElement.scrollLeft || d.body.scrollLeft) - e.clientTop; y = n.top + (d.documentElement.scrollTop || d.body.scrollTop) - e.clientLeft; return {x : x, y : y}; } r = n; while (r && r != ro && r.nodeType) { x += r.offsetLeft || 0; y += r.offsetTop || 0; r = r.offsetParent; } r = n.parentNode; while (r && r != ro && r.nodeType) { x -= r.scrollLeft || 0; y -= r.scrollTop || 0; r = r.parentNode; } } return {x : x, y : y}; }, parseStyle : function(st) { return this.styles.parse(st); }, serializeStyle : function(o, name) { return this.styles.serialize(o, name); }, loadCSS : function(u) { var t = this, d = t.doc, head; if (!u) u = ''; head = t.select('head')[0]; each(u.split(','), function(u) { var link; if (t.files[u]) return; t.files[u] = true; link = t.create('link', {rel : 'stylesheet', href : tinymce._addVer(u)}); // IE 8 has a bug where dynamically loading stylesheets would produce a 1 item remaining bug // This fix seems to resolve that issue by realcing the document ones a stylesheet finishes loading // It's ugly but it seems to work fine. if (isIE && d.documentMode && d.recalc) { link.onload = function() { if (d.recalc) d.recalc(); link.onload = null; }; } head.appendChild(link); }); }, addClass : function(e, c) { return this.run(e, function(e) { var o; if (!c) return 0; if (this.hasClass(e, c)) return e.className; o = this.removeClass(e, c); return e.className = (o != '' ? (o + ' ') : '') + c; }); }, removeClass : function(e, c) { var t = this, re; return t.run(e, function(e) { var v; if (t.hasClass(e, c)) { if (!re) re = new RegExp("(^|\\s+)" + c + "(\\s+|$)", "g"); v = e.className.replace(re, ' '); v = tinymce.trim(v != ' ' ? v : ''); e.className = v; // Empty class attr if (!v) { e.removeAttribute('class'); e.removeAttribute('className'); } return v; } return e.className; }); }, hasClass : function(n, c) { n = this.get(n); if (!n || !c) return false; return (' ' + n.className + ' ').indexOf(' ' + c + ' ') !== -1; }, show : function(e) { return this.setStyle(e, 'display', 'block'); }, hide : function(e) { return this.setStyle(e, 'display', 'none'); }, isHidden : function(e) { e = this.get(e); return !e || e.style.display == 'none' || this.getStyle(e, 'display') == 'none'; }, uniqueId : function(p) { return (!p ? 'mce_' : p) + (this.counter++); }, setHTML : function(element, html) { var self = this; return self.run(element, function(element) { if (isIE) { // Remove all child nodes, IE keeps empty text nodes in DOM while (element.firstChild) element.removeChild(element.firstChild); try { // IE will remove comments from the beginning // unless you padd the contents with something element.innerHTML = '
    ' + html; element.removeChild(element.firstChild); } catch (ex) { // IE sometimes produces an unknown runtime error on innerHTML if it's an block element within a block element for example a div inside a p // This seems to fix this problem // Create new div with HTML contents and a BR infront to keep comments element = self.create('div'); element.innerHTML = '
    ' + html; // Add all children from div to target each (element.childNodes, function(node, i) { // Skip br element if (i) element.appendChild(node); }); } } else element.innerHTML = html; return html; }); }, getOuterHTML : function(elm) { var doc, self = this; elm = self.get(elm); if (!elm) return null; if (elm.nodeType === 1 && self.hasOuterHTML) return elm.outerHTML; doc = (elm.ownerDocument || self.doc).createElement("body"); doc.appendChild(elm.cloneNode(true)); return doc.innerHTML; }, setOuterHTML : function(e, h, d) { var t = this; function setHTML(e, h, d) { var n, tp; tp = d.createElement("body"); tp.innerHTML = h; n = tp.lastChild; while (n) { t.insertAfter(n.cloneNode(true), e); n = n.previousSibling; } t.remove(e); }; return this.run(e, function(e) { e = t.get(e); // Only set HTML on elements if (e.nodeType == 1) { d = d || e.ownerDocument || t.doc; if (isIE) { try { // Try outerHTML for IE it sometimes produces an unknown runtime error if (isIE && e.nodeType == 1) e.outerHTML = h; else setHTML(e, h, d); } catch (ex) { // Fix for unknown runtime error setHTML(e, h, d); } } else setHTML(e, h, d); } }); }, decode : Entities.decode, encode : Entities.encodeAllRaw, insertAfter : function(node, reference_node) { reference_node = this.get(reference_node); return this.run(node, function(node) { var parent, nextSibling; parent = reference_node.parentNode; nextSibling = reference_node.nextSibling; if (nextSibling) parent.insertBefore(node, nextSibling); else parent.appendChild(node); return node; }); }, isBlock : function(node) { var type = node.nodeType; // If it's a node then check the type and use the nodeName if (type) return !!(type === 1 && blockElementsMap[node.nodeName]); return !!blockElementsMap[node]; }, replace : function(n, o, k) { var t = this; if (is(o, 'array')) n = n.cloneNode(true); return t.run(o, function(o) { if (k) { each(tinymce.grep(o.childNodes), function(c) { n.appendChild(c); }); } return o.parentNode.replaceChild(n, o); }); }, rename : function(elm, name) { var t = this, newElm; if (elm.nodeName != name.toUpperCase()) { // Rename block element newElm = t.create(name); // Copy attribs to new block each(t.getAttribs(elm), function(attr_node) { t.setAttrib(newElm, attr_node.nodeName, t.getAttrib(elm, attr_node.nodeName)); }); // Replace block t.replace(newElm, elm, 1); } return newElm || elm; }, findCommonAncestor : function(a, b) { var ps = a, pe; while (ps) { pe = b; while (pe && ps != pe) pe = pe.parentNode; if (ps == pe) break; ps = ps.parentNode; } if (!ps && a.ownerDocument) return a.ownerDocument.documentElement; return ps; }, toHex : function(s) { var c = /^\s*rgb\s*?\(\s*?([0-9]+)\s*?,\s*?([0-9]+)\s*?,\s*?([0-9]+)\s*?\)\s*$/i.exec(s); function hex(s) { s = parseInt(s).toString(16); return s.length > 1 ? s : '0' + s; // 0 -> 00 }; if (c) { s = '#' + hex(c[1]) + hex(c[2]) + hex(c[3]); return s; } return s; }, getClasses : function() { var t = this, cl = [], i, lo = {}, f = t.settings.class_filter, ov; if (t.classes) return t.classes; function addClasses(s) { // IE style imports each(s.imports, function(r) { addClasses(r); }); each(s.cssRules || s.rules, function(r) { // Real type or fake it on IE switch (r.type || 1) { // Rule case 1: if (r.selectorText) { each(r.selectorText.split(','), function(v) { v = v.replace(/^\s*|\s*$|^\s\./g, ""); // Is internal or it doesn't contain a class if (/\.mce/.test(v) || !/\.[\w\-]+$/.test(v)) return; // Remove everything but class name ov = v; v = tinymce._replace(/.*\.([a-z0-9_\-]+).*/i, '$1', v); // Filter classes if (f && !(v = f(v, ov))) return; if (!lo[v]) { cl.push({'class' : v}); lo[v] = 1; } }); } break; // Import case 3: addClasses(r.styleSheet); break; } }); }; try { each(t.doc.styleSheets, addClasses); } catch (ex) { // Ignore } if (cl.length > 0) t.classes = cl; return cl; }, run : function(e, f, s) { var t = this, o; if (t.doc && typeof(e) === 'string') e = t.get(e); if (!e) return false; s = s || this; if (!e.nodeType && (e.length || e.length === 0)) { o = []; each(e, function(e, i) { if (e) { if (typeof(e) == 'string') e = t.doc.getElementById(e); o.push(f.call(s, e, i)); } }); return o; } return f.call(s, e); }, getAttribs : function(n) { var o; n = this.get(n); if (!n) return []; if (isIE) { o = []; // Object will throw exception in IE if (n.nodeName == 'OBJECT') return n.attributes; // IE doesn't keep the selected attribute if you clone option elements if (n.nodeName === 'OPTION' && this.getAttrib(n, 'selected')) o.push({specified : 1, nodeName : 'selected'}); // It's crazy that this is faster in IE but it's because it returns all attributes all the time n.cloneNode(false).outerHTML.replace(/<\/?[\w:\-]+ ?|=[\"][^\"]+\"|=\'[^\']+\'|=[\w\-]+|>/gi, '').replace(/[\w:\-]+/gi, function(a) { o.push({specified : 1, nodeName : a}); }); return o; } return n.attributes; }, isEmpty : function(node, elements) { var self = this, i, attributes, type, walker, name, parentNode; node = node.firstChild; if (node) { walker = new tinymce.dom.TreeWalker(node); elements = elements || self.schema ? self.schema.getNonEmptyElements() : null; do { type = node.nodeType; if (type === 1) { // Ignore bogus elements if (node.getAttribute('data-mce-bogus')) continue; // Keep empty elements like name = node.nodeName.toLowerCase(); if (elements && elements[name]) { // Ignore single BR elements in blocks like


    parentNode = node.parentNode; if (name === 'br' && self.isBlock(parentNode) && parentNode.firstChild === node && parentNode.lastChild === node) { continue; } return false; } // Keep elements with data-bookmark attributes or name attribute like
    attributes = self.getAttribs(node); i = node.attributes.length; while (i--) { name = node.attributes[i].nodeName; if (name === "name" || name === 'data-mce-bookmark') return false; } } // Keep non whitespace text nodes if ((type === 3 && !whiteSpaceRegExp.test(node.nodeValue))) return false; } while (node = walker.next()); } return true; }, destroy : function(s) { var t = this; if (t.events) t.events.destroy(); t.win = t.doc = t.root = t.events = null; // Manual destroy then remove unload handler if (!s) tinymce.removeUnload(t.destroy); }, createRng : function() { var d = this.doc; return d.createRange ? d.createRange() : new tinymce.dom.Range(this); }, nodeIndex : function(node, normalized) { var idx = 0, lastNodeType, lastNode, nodeType; if (node) { for (lastNodeType = node.nodeType, node = node.previousSibling, lastNode = node; node; node = node.previousSibling) { nodeType = node.nodeType; // Normalize text nodes if (normalized && nodeType == 3) { if (nodeType == lastNodeType || !node.nodeValue.length) continue; } idx++; lastNodeType = nodeType; } } return idx; }, split : function(pe, e, re) { var t = this, r = t.createRng(), bef, aft, pa; // W3C valid browsers tend to leave empty nodes to the left/right side of the contents, this makes sense // but we don't want that in our code since it serves no purpose for the end user // For example if this is chopped: //

    text 1CHOPtext 2

    // would produce: //

    text 1

    CHOP

    text 2

    // this function will then trim of empty edges and produce: //

    text 1

    CHOP

    text 2

    function trim(node) { var i, children = node.childNodes, type = node.nodeType; if (type == 1 && node.getAttribute('data-mce-type') == 'bookmark') return; for (i = children.length - 1; i >= 0; i--) trim(children[i]); if (type != 9) { // Keep non whitespace text nodes if (type == 3 && node.nodeValue.length > 0) { // If parent element isn't a block or there isn't any useful contents for example "

    " if (!t.isBlock(node.parentNode) || tinymce.trim(node.nodeValue).length > 0) return; } else if (type == 1) { // If the only child is a bookmark then move it up children = node.childNodes; if (children.length == 1 && children[0] && children[0].nodeType == 1 && children[0].getAttribute('data-mce-type') == 'bookmark') node.parentNode.insertBefore(children[0], node); // Keep non empty elements or img, hr etc if (children.length || /^(br|hr|input|img)$/i.test(node.nodeName)) return; } t.remove(node); } return node; }; if (pe && e) { // Get before chunk r.setStart(pe.parentNode, t.nodeIndex(pe)); r.setEnd(e.parentNode, t.nodeIndex(e)); bef = r.extractContents(); // Get after chunk r = t.createRng(); r.setStart(e.parentNode, t.nodeIndex(e) + 1); r.setEnd(pe.parentNode, t.nodeIndex(pe) + 1); aft = r.extractContents(); // Insert before chunk pa = pe.parentNode; pa.insertBefore(trim(bef), pe); // Insert middle chunk if (re) pa.replaceChild(re, e); else pa.insertBefore(e, pe); // Insert after chunk pa.insertBefore(trim(aft), pe); t.remove(pe); return re || e; } }, bind : function(target, name, func, scope) { var t = this; if (!t.events) t.events = new tinymce.dom.EventUtils(); return t.events.add(target, name, func, scope || this); }, unbind : function(target, name, func) { var t = this; if (!t.events) t.events = new tinymce.dom.EventUtils(); return t.events.remove(target, name, func); }, _findSib : function(node, selector, name) { var t = this, f = selector; if (node) { // If expression make a function of it using is if (is(f, 'string')) { f = function(node) { return t.is(node, selector); }; } // Loop all siblings for (node = node[name]; node; node = node[name]) { if (f(node)) return node; } } return null; }, _isRes : function(c) { // Is live resizble element return /^(top|left|bottom|right|width|height)/i.test(c) || /;\s*(top|left|bottom|right|width|height)/i.test(c); } /* walk : function(n, f, s) { var d = this.doc, w; if (d.createTreeWalker) { w = d.createTreeWalker(n, NodeFilter.SHOW_TEXT, null, false); while ((n = w.nextNode()) != null) f.call(s || this, n); } else tinymce.walk(n, f, 'childNodes', s); } */ /* toRGB : function(s) { var c = /^\s*?#([0-9A-F]{2})([0-9A-F]{1,2})([0-9A-F]{2})?\s*?$/.exec(s); if (c) { // #FFF -> #FFFFFF if (!is(c[3])) c[3] = c[2] = c[1]; return "rgb(" + parseInt(c[1], 16) + "," + parseInt(c[2], 16) + "," + parseInt(c[3], 16) + ")"; } return s; } */ }); tinymce.DOM = new tinymce.dom.DOMUtils(document, {process_html : 0}); })(tinymce); (function(ns) { // Range constructor function Range(dom) { var t = this, doc = dom.doc, EXTRACT = 0, CLONE = 1, DELETE = 2, TRUE = true, FALSE = false, START_OFFSET = 'startOffset', START_CONTAINER = 'startContainer', END_CONTAINER = 'endContainer', END_OFFSET = 'endOffset', extend = tinymce.extend, nodeIndex = dom.nodeIndex; extend(t, { // Inital states startContainer : doc, startOffset : 0, endContainer : doc, endOffset : 0, collapsed : TRUE, commonAncestorContainer : doc, // Range constants START_TO_START : 0, START_TO_END : 1, END_TO_END : 2, END_TO_START : 3, // Public methods setStart : setStart, setEnd : setEnd, setStartBefore : setStartBefore, setStartAfter : setStartAfter, setEndBefore : setEndBefore, setEndAfter : setEndAfter, collapse : collapse, selectNode : selectNode, selectNodeContents : selectNodeContents, compareBoundaryPoints : compareBoundaryPoints, deleteContents : deleteContents, extractContents : extractContents, cloneContents : cloneContents, insertNode : insertNode, surroundContents : surroundContents, cloneRange : cloneRange }); function setStart(n, o) { _setEndPoint(TRUE, n, o); }; function setEnd(n, o) { _setEndPoint(FALSE, n, o); }; function setStartBefore(n) { setStart(n.parentNode, nodeIndex(n)); }; function setStartAfter(n) { setStart(n.parentNode, nodeIndex(n) + 1); }; function setEndBefore(n) { setEnd(n.parentNode, nodeIndex(n)); }; function setEndAfter(n) { setEnd(n.parentNode, nodeIndex(n) + 1); }; function collapse(ts) { if (ts) { t[END_CONTAINER] = t[START_CONTAINER]; t[END_OFFSET] = t[START_OFFSET]; } else { t[START_CONTAINER] = t[END_CONTAINER]; t[START_OFFSET] = t[END_OFFSET]; } t.collapsed = TRUE; }; function selectNode(n) { setStartBefore(n); setEndAfter(n); }; function selectNodeContents(n) { setStart(n, 0); setEnd(n, n.nodeType === 1 ? n.childNodes.length : n.nodeValue.length); }; function compareBoundaryPoints(h, r) { var sc = t[START_CONTAINER], so = t[START_OFFSET], ec = t[END_CONTAINER], eo = t[END_OFFSET], rsc = r.startContainer, rso = r.startOffset, rec = r.endContainer, reo = r.endOffset; // Check START_TO_START if (h === 0) return _compareBoundaryPoints(sc, so, rsc, rso); // Check START_TO_END if (h === 1) return _compareBoundaryPoints(ec, eo, rsc, rso); // Check END_TO_END if (h === 2) return _compareBoundaryPoints(ec, eo, rec, reo); // Check END_TO_START if (h === 3) return _compareBoundaryPoints(sc, so, rec, reo); }; function deleteContents() { _traverse(DELETE); }; function extractContents() { return _traverse(EXTRACT); }; function cloneContents() { return _traverse(CLONE); }; function insertNode(n) { var startContainer = this[START_CONTAINER], startOffset = this[START_OFFSET], nn, o; // Node is TEXT_NODE or CDATA if ((startContainer.nodeType === 3 || startContainer.nodeType === 4) && startContainer.nodeValue) { if (!startOffset) { // At the start of text startContainer.parentNode.insertBefore(n, startContainer); } else if (startOffset >= startContainer.nodeValue.length) { // At the end of text dom.insertAfter(n, startContainer); } else { // Middle, need to split nn = startContainer.splitText(startOffset); startContainer.parentNode.insertBefore(n, nn); } } else { // Insert element node if (startContainer.childNodes.length > 0) o = startContainer.childNodes[startOffset]; if (o) startContainer.insertBefore(n, o); else startContainer.appendChild(n); } }; function surroundContents(n) { var f = t.extractContents(); t.insertNode(n); n.appendChild(f); t.selectNode(n); }; function cloneRange() { return extend(new Range(dom), { startContainer : t[START_CONTAINER], startOffset : t[START_OFFSET], endContainer : t[END_CONTAINER], endOffset : t[END_OFFSET], collapsed : t.collapsed, commonAncestorContainer : t.commonAncestorContainer }); }; // Private methods function _getSelectedNode(container, offset) { var child; if (container.nodeType == 3 /* TEXT_NODE */) return container; if (offset < 0) return container; child = container.firstChild; while (child && offset > 0) { --offset; child = child.nextSibling; } if (child) return child; return container; }; function _isCollapsed() { return (t[START_CONTAINER] == t[END_CONTAINER] && t[START_OFFSET] == t[END_OFFSET]); }; function _compareBoundaryPoints(containerA, offsetA, containerB, offsetB) { var c, offsetC, n, cmnRoot, childA, childB; // In the first case the boundary-points have the same container. A is before B // if its offset is less than the offset of B, A is equal to B if its offset is // equal to the offset of B, and A is after B if its offset is greater than the // offset of B. if (containerA == containerB) { if (offsetA == offsetB) return 0; // equal if (offsetA < offsetB) return -1; // before return 1; // after } // In the second case a child node C of the container of A is an ancestor // container of B. In this case, A is before B if the offset of A is less than or // equal to the index of the child node C and A is after B otherwise. c = containerB; while (c && c.parentNode != containerA) c = c.parentNode; if (c) { offsetC = 0; n = containerA.firstChild; while (n != c && offsetC < offsetA) { offsetC++; n = n.nextSibling; } if (offsetA <= offsetC) return -1; // before return 1; // after } // In the third case a child node C of the container of B is an ancestor container // of A. In this case, A is before B if the index of the child node C is less than // the offset of B and A is after B otherwise. c = containerA; while (c && c.parentNode != containerB) { c = c.parentNode; } if (c) { offsetC = 0; n = containerB.firstChild; while (n != c && offsetC < offsetB) { offsetC++; n = n.nextSibling; } if (offsetC < offsetB) return -1; // before return 1; // after } // In the fourth case, none of three other cases hold: the containers of A and B // are siblings or descendants of sibling nodes. In this case, A is before B if // the container of A is before the container of B in a pre-order traversal of the // Ranges' context tree and A is after B otherwise. cmnRoot = dom.findCommonAncestor(containerA, containerB); childA = containerA; while (childA && childA.parentNode != cmnRoot) childA = childA.parentNode; if (!childA) childA = cmnRoot; childB = containerB; while (childB && childB.parentNode != cmnRoot) childB = childB.parentNode; if (!childB) childB = cmnRoot; if (childA == childB) return 0; // equal n = cmnRoot.firstChild; while (n) { if (n == childA) return -1; // before if (n == childB) return 1; // after n = n.nextSibling; } }; function _setEndPoint(st, n, o) { var ec, sc; if (st) { t[START_CONTAINER] = n; t[START_OFFSET] = o; } else { t[END_CONTAINER] = n; t[END_OFFSET] = o; } // If one boundary-point of a Range is set to have a root container // other than the current one for the Range, the Range is collapsed to // the new position. This enforces the restriction that both boundary- // points of a Range must have the same root container. ec = t[END_CONTAINER]; while (ec.parentNode) ec = ec.parentNode; sc = t[START_CONTAINER]; while (sc.parentNode) sc = sc.parentNode; if (sc == ec) { // The start position of a Range is guaranteed to never be after the // end position. To enforce this restriction, if the start is set to // be at a position after the end, the Range is collapsed to that // position. if (_compareBoundaryPoints(t[START_CONTAINER], t[START_OFFSET], t[END_CONTAINER], t[END_OFFSET]) > 0) t.collapse(st); } else t.collapse(st); t.collapsed = _isCollapsed(); t.commonAncestorContainer = dom.findCommonAncestor(t[START_CONTAINER], t[END_CONTAINER]); }; function _traverse(how) { var c, endContainerDepth = 0, startContainerDepth = 0, p, depthDiff, startNode, endNode, sp, ep; if (t[START_CONTAINER] == t[END_CONTAINER]) return _traverseSameContainer(how); for (c = t[END_CONTAINER], p = c.parentNode; p; c = p, p = p.parentNode) { if (p == t[START_CONTAINER]) return _traverseCommonStartContainer(c, how); ++endContainerDepth; } for (c = t[START_CONTAINER], p = c.parentNode; p; c = p, p = p.parentNode) { if (p == t[END_CONTAINER]) return _traverseCommonEndContainer(c, how); ++startContainerDepth; } depthDiff = startContainerDepth - endContainerDepth; startNode = t[START_CONTAINER]; while (depthDiff > 0) { startNode = startNode.parentNode; depthDiff--; } endNode = t[END_CONTAINER]; while (depthDiff < 0) { endNode = endNode.parentNode; depthDiff++; } // ascend the ancestor hierarchy until we have a common parent. for (sp = startNode.parentNode, ep = endNode.parentNode; sp != ep; sp = sp.parentNode, ep = ep.parentNode) { startNode = sp; endNode = ep; } return _traverseCommonAncestors(startNode, endNode, how); }; function _traverseSameContainer(how) { var frag, s, sub, n, cnt, sibling, xferNode; if (how != DELETE) frag = doc.createDocumentFragment(); // If selection is empty, just return the fragment if (t[START_OFFSET] == t[END_OFFSET]) return frag; // Text node needs special case handling if (t[START_CONTAINER].nodeType == 3 /* TEXT_NODE */) { // get the substring s = t[START_CONTAINER].nodeValue; sub = s.substring(t[START_OFFSET], t[END_OFFSET]); // set the original text node to its new value if (how != CLONE) { t[START_CONTAINER].deleteData(t[START_OFFSET], t[END_OFFSET] - t[START_OFFSET]); // Nothing is partially selected, so collapse to start point t.collapse(TRUE); } if (how == DELETE) return; frag.appendChild(doc.createTextNode(sub)); return frag; } // Copy nodes between the start/end offsets. n = _getSelectedNode(t[START_CONTAINER], t[START_OFFSET]); cnt = t[END_OFFSET] - t[START_OFFSET]; while (cnt > 0) { sibling = n.nextSibling; xferNode = _traverseFullySelected(n, how); if (frag) frag.appendChild( xferNode ); --cnt; n = sibling; } // Nothing is partially selected, so collapse to start point if (how != CLONE) t.collapse(TRUE); return frag; }; function _traverseCommonStartContainer(endAncestor, how) { var frag, n, endIdx, cnt, sibling, xferNode; if (how != DELETE) frag = doc.createDocumentFragment(); n = _traverseRightBoundary(endAncestor, how); if (frag) frag.appendChild(n); endIdx = nodeIndex(endAncestor); cnt = endIdx - t[START_OFFSET]; if (cnt <= 0) { // Collapse to just before the endAncestor, which // is partially selected. if (how != CLONE) { t.setEndBefore(endAncestor); t.collapse(FALSE); } return frag; } n = endAncestor.previousSibling; while (cnt > 0) { sibling = n.previousSibling; xferNode = _traverseFullySelected(n, how); if (frag) frag.insertBefore(xferNode, frag.firstChild); --cnt; n = sibling; } // Collapse to just before the endAncestor, which // is partially selected. if (how != CLONE) { t.setEndBefore(endAncestor); t.collapse(FALSE); } return frag; }; function _traverseCommonEndContainer(startAncestor, how) { var frag, startIdx, n, cnt, sibling, xferNode; if (how != DELETE) frag = doc.createDocumentFragment(); n = _traverseLeftBoundary(startAncestor, how); if (frag) frag.appendChild(n); startIdx = nodeIndex(startAncestor); ++startIdx; // Because we already traversed it cnt = t[END_OFFSET] - startIdx; n = startAncestor.nextSibling; while (cnt > 0) { sibling = n.nextSibling; xferNode = _traverseFullySelected(n, how); if (frag) frag.appendChild(xferNode); --cnt; n = sibling; } if (how != CLONE) { t.setStartAfter(startAncestor); t.collapse(TRUE); } return frag; }; function _traverseCommonAncestors(startAncestor, endAncestor, how) { var n, frag, commonParent, startOffset, endOffset, cnt, sibling, nextSibling; if (how != DELETE) frag = doc.createDocumentFragment(); n = _traverseLeftBoundary(startAncestor, how); if (frag) frag.appendChild(n); commonParent = startAncestor.parentNode; startOffset = nodeIndex(startAncestor); endOffset = nodeIndex(endAncestor); ++startOffset; cnt = endOffset - startOffset; sibling = startAncestor.nextSibling; while (cnt > 0) { nextSibling = sibling.nextSibling; n = _traverseFullySelected(sibling, how); if (frag) frag.appendChild(n); sibling = nextSibling; --cnt; } n = _traverseRightBoundary(endAncestor, how); if (frag) frag.appendChild(n); if (how != CLONE) { t.setStartAfter(startAncestor); t.collapse(TRUE); } return frag; }; function _traverseRightBoundary(root, how) { var next = _getSelectedNode(t[END_CONTAINER], t[END_OFFSET] - 1), parent, clonedParent, prevSibling, clonedChild, clonedGrandParent, isFullySelected = next != t[END_CONTAINER]; if (next == root) return _traverseNode(next, isFullySelected, FALSE, how); parent = next.parentNode; clonedParent = _traverseNode(parent, FALSE, FALSE, how); while (parent) { while (next) { prevSibling = next.previousSibling; clonedChild = _traverseNode(next, isFullySelected, FALSE, how); if (how != DELETE) clonedParent.insertBefore(clonedChild, clonedParent.firstChild); isFullySelected = TRUE; next = prevSibling; } if (parent == root) return clonedParent; next = parent.previousSibling; parent = parent.parentNode; clonedGrandParent = _traverseNode(parent, FALSE, FALSE, how); if (how != DELETE) clonedGrandParent.appendChild(clonedParent); clonedParent = clonedGrandParent; } }; function _traverseLeftBoundary(root, how) { var next = _getSelectedNode(t[START_CONTAINER], t[START_OFFSET]), isFullySelected = next != t[START_CONTAINER], parent, clonedParent, nextSibling, clonedChild, clonedGrandParent; if (next == root) return _traverseNode(next, isFullySelected, TRUE, how); parent = next.parentNode; clonedParent = _traverseNode(parent, FALSE, TRUE, how); while (parent) { while (next) { nextSibling = next.nextSibling; clonedChild = _traverseNode(next, isFullySelected, TRUE, how); if (how != DELETE) clonedParent.appendChild(clonedChild); isFullySelected = TRUE; next = nextSibling; } if (parent == root) return clonedParent; next = parent.nextSibling; parent = parent.parentNode; clonedGrandParent = _traverseNode(parent, FALSE, TRUE, how); if (how != DELETE) clonedGrandParent.appendChild(clonedParent); clonedParent = clonedGrandParent; } }; function _traverseNode(n, isFullySelected, isLeft, how) { var txtValue, newNodeValue, oldNodeValue, offset, newNode; if (isFullySelected) return _traverseFullySelected(n, how); if (n.nodeType == 3 /* TEXT_NODE */) { txtValue = n.nodeValue; if (isLeft) { offset = t[START_OFFSET]; newNodeValue = txtValue.substring(offset); oldNodeValue = txtValue.substring(0, offset); } else { offset = t[END_OFFSET]; newNodeValue = txtValue.substring(0, offset); oldNodeValue = txtValue.substring(offset); } if (how != CLONE) n.nodeValue = oldNodeValue; if (how == DELETE) return; newNode = n.cloneNode(FALSE); newNode.nodeValue = newNodeValue; return newNode; } if (how == DELETE) return; return n.cloneNode(FALSE); }; function _traverseFullySelected(n, how) { if (how != DELETE) return how == CLONE ? n.cloneNode(TRUE) : n; n.parentNode.removeChild(n); }; }; ns.Range = Range; })(tinymce.dom); (function() { function Selection(selection) { var self = this, dom = selection.dom, TRUE = true, FALSE = false; function getPosition(rng, start) { var checkRng, startIndex = 0, endIndex, inside, children, child, offset, index, position = -1, parent; // Setup test range, collapse it and get the parent checkRng = rng.duplicate(); checkRng.collapse(start); parent = checkRng.parentElement(); // Check if the selection is within the right document if (parent.ownerDocument !== selection.dom.doc) return; // IE will report non editable elements as it's parent so look for an editable one while (parent.contentEditable === "false") { parent = parent.parentNode; } // If parent doesn't have any children then return that we are inside the element if (!parent.hasChildNodes()) { return {node : parent, inside : 1}; } // Setup node list and endIndex children = parent.children; endIndex = children.length - 1; // Perform a binary search for the position while (startIndex <= endIndex) { index = Math.floor((startIndex + endIndex) / 2); // Move selection to node and compare the ranges child = children[index]; checkRng.moveToElementText(child); position = checkRng.compareEndPoints(start ? 'StartToStart' : 'EndToEnd', rng); // Before/after or an exact match if (position > 0) { endIndex = index - 1; } else if (position < 0) { startIndex = index + 1; } else { return {node : child}; } } // Check if child position is before or we didn't find a position if (position < 0) { // No element child was found use the parent element and the offset inside that if (!child) { checkRng.moveToElementText(parent); checkRng.collapse(true); child = parent; inside = true; } else checkRng.collapse(false); checkRng.setEndPoint(start ? 'EndToStart' : 'EndToEnd', rng); // Fix for edge case:
    ..
    ab|c
    if (checkRng.compareEndPoints(start ? 'StartToStart' : 'StartToEnd', rng) > 0) { checkRng = rng.duplicate(); checkRng.collapse(start); offset = -1; while (parent == checkRng.parentElement()) { if (checkRng.move('character', -1) == 0) break; offset++; } } offset = offset || checkRng.text.replace('\r\n', ' ').length; } else { // Child position is after the selection endpoint checkRng.collapse(true); checkRng.setEndPoint(start ? 'StartToStart' : 'StartToEnd', rng); // Get the length of the text to find where the endpoint is relative to it's container offset = checkRng.text.replace('\r\n', ' ').length; } return {node : child, position : position, offset : offset, inside : inside}; }; // Returns a W3C DOM compatible range object by using the IE Range API function getRange() { var ieRange = selection.getRng(), domRange = dom.createRng(), element, collapsed, tmpRange, element2, bookmark, fail; // If selection is outside the current document just return an empty range element = ieRange.item ? ieRange.item(0) : ieRange.parentElement(); if (element.ownerDocument != dom.doc) return domRange; collapsed = selection.isCollapsed(); // Handle control selection if (ieRange.item) { domRange.setStart(element.parentNode, dom.nodeIndex(element)); domRange.setEnd(domRange.startContainer, domRange.startOffset + 1); return domRange; } function findEndPoint(start) { var endPoint = getPosition(ieRange, start), container, offset, textNodeOffset = 0, sibling, undef, nodeValue; container = endPoint.node; offset = endPoint.offset; if (endPoint.inside && !container.hasChildNodes()) { domRange[start ? 'setStart' : 'setEnd'](container, 0); return; } if (offset === undef) { domRange[start ? 'setStartBefore' : 'setEndAfter'](container); return; } if (endPoint.position < 0) { sibling = endPoint.inside ? container.firstChild : container.nextSibling; if (!sibling) { domRange[start ? 'setStartAfter' : 'setEndAfter'](container); return; } if (!offset) { if (sibling.nodeType == 3) domRange[start ? 'setStart' : 'setEnd'](sibling, 0); else domRange[start ? 'setStartBefore' : 'setEndBefore'](sibling); return; } // Find the text node and offset while (sibling) { nodeValue = sibling.nodeValue; textNodeOffset += nodeValue.length; // We are at or passed the position we where looking for if (textNodeOffset >= offset) { container = sibling; textNodeOffset -= offset; textNodeOffset = nodeValue.length - textNodeOffset; break; } sibling = sibling.nextSibling; } } else { // Find the text node and offset sibling = container.previousSibling; if (!sibling) return domRange[start ? 'setStartBefore' : 'setEndBefore'](container); // If there isn't any text to loop then use the first position if (!offset) { if (container.nodeType == 3) domRange[start ? 'setStart' : 'setEnd'](sibling, container.nodeValue.length); else domRange[start ? 'setStartAfter' : 'setEndAfter'](sibling); return; } while (sibling) { textNodeOffset += sibling.nodeValue.length; // We are at or passed the position we where looking for if (textNodeOffset >= offset) { container = sibling; textNodeOffset -= offset; break; } sibling = sibling.previousSibling; } } domRange[start ? 'setStart' : 'setEnd'](container, textNodeOffset); }; try { // Find start point findEndPoint(true); // Find end point if needed if (!collapsed) findEndPoint(); } catch (ex) { // IE has a nasty bug where text nodes might throw "invalid argument" when you // access the nodeValue or other properties of text nodes. This seems to happend when // text nodes are split into two nodes by a delete/backspace call. So lets detect it and try to fix it. if (ex.number == -2147024809) { // Get the current selection bookmark = self.getBookmark(2); // Get start element tmpRange = ieRange.duplicate(); tmpRange.collapse(true); element = tmpRange.parentElement(); // Get end element if (!collapsed) { tmpRange = ieRange.duplicate(); tmpRange.collapse(false); element2 = tmpRange.parentElement(); element2.innerHTML = element2.innerHTML; } // Remove the broken elements element.innerHTML = element.innerHTML; // Restore the selection self.moveToBookmark(bookmark); // Since the range has moved we need to re-get it ieRange = selection.getRng(); // Find start point findEndPoint(true); // Find end point if needed if (!collapsed) findEndPoint(); } else throw ex; // Throw other errors } return domRange; }; this.getBookmark = function(type) { var rng = selection.getRng(), start, end, bookmark = {}; function getIndexes(node) { var node, parent, root, children, i, indexes = []; parent = node.parentNode; root = dom.getRoot().parentNode; while (parent != root) { children = parent.children; i = children.length; while (i--) { if (node === children[i]) { indexes.push(i); break; } } node = parent; parent = parent.parentNode; } return indexes; }; function getBookmarkEndPoint(start) { var position; position = getPosition(rng, start); if (position) { return { position : position.position, offset : position.offset, indexes : getIndexes(position.node), inside : position.inside }; } }; // Non ubstructive bookmark if (type === 2) { // Handle text selection if (!rng.item) { bookmark.start = getBookmarkEndPoint(true); if (!selection.isCollapsed()) bookmark.end = getBookmarkEndPoint(); } else bookmark.start = {ctrl : true, indexes : getIndexes(rng.item(0))}; } return bookmark; }; this.moveToBookmark = function(bookmark) { var rng, body = dom.doc.body; function resolveIndexes(indexes) { var node, i, idx, children; node = dom.getRoot(); for (i = indexes.length - 1; i >= 0; i--) { children = node.children; idx = indexes[i]; if (idx <= children.length - 1) { node = children[idx]; } } return node; }; function setBookmarkEndPoint(start) { var endPoint = bookmark[start ? 'start' : 'end'], moveLeft, moveRng, undef; if (endPoint) { moveLeft = endPoint.position > 0; moveRng = body.createTextRange(); moveRng.moveToElementText(resolveIndexes(endPoint.indexes)); offset = endPoint.offset; if (offset !== undef) { moveRng.collapse(endPoint.inside || moveLeft); moveRng.moveStart('character', moveLeft ? -offset : offset); } else moveRng.collapse(start); rng.setEndPoint(start ? 'StartToStart' : 'EndToStart', moveRng); if (start) rng.collapse(true); } }; if (bookmark.start) { if (bookmark.start.ctrl) { rng = body.createControlRange(); rng.addElement(resolveIndexes(bookmark.start.indexes)); rng.select(); } else { rng = body.createTextRange(); setBookmarkEndPoint(true); setBookmarkEndPoint(); rng.select(); } } }; this.addRange = function(rng) { var ieRng, ctrlRng, startContainer, startOffset, endContainer, endOffset, doc = selection.dom.doc, body = doc.body; function setEndPoint(start) { var container, offset, marker, tmpRng, nodes; marker = dom.create('a'); container = start ? startContainer : endContainer; offset = start ? startOffset : endOffset; tmpRng = ieRng.duplicate(); if (container == doc || container == doc.documentElement) { container = body; offset = 0; } if (container.nodeType == 3) { container.parentNode.insertBefore(marker, container); tmpRng.moveToElementText(marker); tmpRng.moveStart('character', offset); dom.remove(marker); ieRng.setEndPoint(start ? 'StartToStart' : 'EndToEnd', tmpRng); } else { nodes = container.childNodes; if (nodes.length) { if (offset >= nodes.length) { dom.insertAfter(marker, nodes[nodes.length - 1]); } else { container.insertBefore(marker, nodes[offset]); } tmpRng.moveToElementText(marker); } else { // Empty node selection for example
    |
    marker = doc.createTextNode('\uFEFF'); container.appendChild(marker); tmpRng.moveToElementText(marker.parentNode); tmpRng.collapse(TRUE); } ieRng.setEndPoint(start ? 'StartToStart' : 'EndToEnd', tmpRng); dom.remove(marker); } } // Setup some shorter versions startContainer = rng.startContainer; startOffset = rng.startOffset; endContainer = rng.endContainer; endOffset = rng.endOffset; ieRng = body.createTextRange(); // If single element selection then try making a control selection out of it if (startContainer == endContainer && startContainer.nodeType == 1 && startOffset == endOffset - 1) { if (startOffset == endOffset - 1) { try { ctrlRng = body.createControlRange(); ctrlRng.addElement(startContainer.childNodes[startOffset]); ctrlRng.select(); return; } catch (ex) { // Ignore } } } // Set start/end point of selection setEndPoint(true); setEndPoint(); // Select the new range and scroll it into view ieRng.select(); }; // Expose range method this.getRangeAt = getRange; }; // Expose the selection object tinymce.dom.TridentSelection = Selection; })(); /* * Sizzle CSS Selector Engine - v1.0 * Copyright 2009, The Dojo Foundation * Released under the MIT, BSD, and GPL Licenses. * More information: http://sizzlejs.com/ */ (function(){ var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g, done = 0, toString = Object.prototype.toString, hasDuplicate = false, baseHasDuplicate = true; // Here we check if the JavaScript engine is using some sort of // optimization where it does not always call our comparision // function. If that is the case, discard the hasDuplicate value. // Thus far that includes Google Chrome. [0, 0].sort(function(){ baseHasDuplicate = false; return 0; }); var Sizzle = function(selector, context, results, seed) { results = results || []; context = context || document; var origContext = context; if ( context.nodeType !== 1 && context.nodeType !== 9 ) { return []; } if ( !selector || typeof selector !== "string" ) { return results; } var parts = [], m, set, checkSet, extra, prune = true, contextXML = Sizzle.isXML(context), soFar = selector, ret, cur, pop, i; // Reset the position of the chunker regexp (start from head) do { chunker.exec(""); m = chunker.exec(soFar); if ( m ) { soFar = m[3]; parts.push( m[1] ); if ( m[2] ) { extra = m[3]; break; } } } while ( m ); if ( parts.length > 1 && origPOS.exec( selector ) ) { if ( parts.length === 2 && Expr.relative[ parts[0] ] ) { set = posProcess( parts[0] + parts[1], context ); } else { set = Expr.relative[ parts[0] ] ? [ context ] : Sizzle( parts.shift(), context ); while ( parts.length ) { selector = parts.shift(); if ( Expr.relative[ selector ] ) { selector += parts.shift(); } set = posProcess( selector, set ); } } } else { // Take a shortcut and set the context if the root selector is an ID // (but not if it'll be faster if the inner selector is an ID) if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML && Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) { ret = Sizzle.find( parts.shift(), context, contextXML ); context = ret.expr ? Sizzle.filter( ret.expr, ret.set )[0] : ret.set[0]; } if ( context ) { ret = seed ? { expr: parts.pop(), set: makeArray(seed) } : Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML ); set = ret.expr ? Sizzle.filter( ret.expr, ret.set ) : ret.set; if ( parts.length > 0 ) { checkSet = makeArray(set); } else { prune = false; } while ( parts.length ) { cur = parts.pop(); pop = cur; if ( !Expr.relative[ cur ] ) { cur = ""; } else { pop = parts.pop(); } if ( pop == null ) { pop = context; } Expr.relative[ cur ]( checkSet, pop, contextXML ); } } else { checkSet = parts = []; } } if ( !checkSet ) { checkSet = set; } if ( !checkSet ) { Sizzle.error( cur || selector ); } if ( toString.call(checkSet) === "[object Array]" ) { if ( !prune ) { results.push.apply( results, checkSet ); } else if ( context && context.nodeType === 1 ) { for ( i = 0; checkSet[i] != null; i++ ) { if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && Sizzle.contains(context, checkSet[i])) ) { results.push( set[i] ); } } } else { for ( i = 0; checkSet[i] != null; i++ ) { if ( checkSet[i] && checkSet[i].nodeType === 1 ) { results.push( set[i] ); } } } } else { makeArray( checkSet, results ); } if ( extra ) { Sizzle( extra, origContext, results, seed ); Sizzle.uniqueSort( results ); } return results; }; Sizzle.uniqueSort = function(results){ if ( sortOrder ) { hasDuplicate = baseHasDuplicate; results.sort(sortOrder); if ( hasDuplicate ) { for ( var i = 1; i < results.length; i++ ) { if ( results[i] === results[i-1] ) { results.splice(i--, 1); } } } } return results; }; Sizzle.matches = function(expr, set){ return Sizzle(expr, null, null, set); }; Sizzle.find = function(expr, context, isXML){ var set; if ( !expr ) { return []; } for ( var i = 0, l = Expr.order.length; i < l; i++ ) { var type = Expr.order[i], match; if ( (match = Expr.leftMatch[ type ].exec( expr )) ) { var left = match[1]; match.splice(1,1); if ( left.substr( left.length - 1 ) !== "\\" ) { match[1] = (match[1] || "").replace(/\\/g, ""); set = Expr.find[ type ]( match, context, isXML ); if ( set != null ) { expr = expr.replace( Expr.match[ type ], "" ); break; } } } } if ( !set ) { set = context.getElementsByTagName("*"); } return {set: set, expr: expr}; }; Sizzle.filter = function(expr, set, inplace, not){ var old = expr, result = [], curLoop = set, match, anyFound, isXMLFilter = set && set[0] && Sizzle.isXML(set[0]); while ( expr && set.length ) { for ( var type in Expr.filter ) { if ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) { var filter = Expr.filter[ type ], found, item, left = match[1]; anyFound = false; match.splice(1,1); if ( left.substr( left.length - 1 ) === "\\" ) { continue; } if ( curLoop === result ) { result = []; } if ( Expr.preFilter[ type ] ) { match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter ); if ( !match ) { anyFound = found = true; } else if ( match === true ) { continue; } } if ( match ) { for ( var i = 0; (item = curLoop[i]) != null; i++ ) { if ( item ) { found = filter( item, match, i, curLoop ); var pass = not ^ !!found; if ( inplace && found != null ) { if ( pass ) { anyFound = true; } else { curLoop[i] = false; } } else if ( pass ) { result.push( item ); anyFound = true; } } } } if ( found !== undefined ) { if ( !inplace ) { curLoop = result; } expr = expr.replace( Expr.match[ type ], "" ); if ( !anyFound ) { return []; } break; } } } // Improper expression if ( expr === old ) { if ( anyFound == null ) { Sizzle.error( expr ); } else { break; } } old = expr; } return curLoop; }; Sizzle.error = function( msg ) { throw "Syntax error, unrecognized expression: " + msg; }; var Expr = Sizzle.selectors = { order: [ "ID", "NAME", "TAG" ], match: { ID: /#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/, CLASS: /\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/, NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/, ATTR: /\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/, TAG: /^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/, CHILD: /:(only|nth|last|first)-child(?:\((even|odd|[\dn+\-]*)\))?/, POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/, PSEUDO: /:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/ }, leftMatch: {}, attrMap: { "class": "className", "for": "htmlFor" }, attrHandle: { href: function(elem){ return elem.getAttribute("href"); } }, relative: { "+": function(checkSet, part){ var isPartStr = typeof part === "string", isTag = isPartStr && !/\W/.test(part), isPartStrNotTag = isPartStr && !isTag; if ( isTag ) { part = part.toLowerCase(); } for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) { if ( (elem = checkSet[i]) ) { while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {} checkSet[i] = isPartStrNotTag || elem && elem.nodeName.toLowerCase() === part ? elem || false : elem === part; } } if ( isPartStrNotTag ) { Sizzle.filter( part, checkSet, true ); } }, ">": function(checkSet, part){ var isPartStr = typeof part === "string", elem, i = 0, l = checkSet.length; if ( isPartStr && !/\W/.test(part) ) { part = part.toLowerCase(); for ( ; i < l; i++ ) { elem = checkSet[i]; if ( elem ) { var parent = elem.parentNode; checkSet[i] = parent.nodeName.toLowerCase() === part ? parent : false; } } } else { for ( ; i < l; i++ ) { elem = checkSet[i]; if ( elem ) { checkSet[i] = isPartStr ? elem.parentNode : elem.parentNode === part; } } if ( isPartStr ) { Sizzle.filter( part, checkSet, true ); } } }, "": function(checkSet, part, isXML){ var doneName = done++, checkFn = dirCheck, nodeCheck; if ( typeof part === "string" && !/\W/.test(part) ) { part = part.toLowerCase(); nodeCheck = part; checkFn = dirNodeCheck; } checkFn("parentNode", part, doneName, checkSet, nodeCheck, isXML); }, "~": function(checkSet, part, isXML){ var doneName = done++, checkFn = dirCheck, nodeCheck; if ( typeof part === "string" && !/\W/.test(part) ) { part = part.toLowerCase(); nodeCheck = part; checkFn = dirNodeCheck; } checkFn("previousSibling", part, doneName, checkSet, nodeCheck, isXML); } }, find: { ID: function(match, context, isXML){ if ( typeof context.getElementById !== "undefined" && !isXML ) { var m = context.getElementById(match[1]); return m ? [m] : []; } }, NAME: function(match, context){ if ( typeof context.getElementsByName !== "undefined" ) { var ret = [], results = context.getElementsByName(match[1]); for ( var i = 0, l = results.length; i < l; i++ ) { if ( results[i].getAttribute("name") === match[1] ) { ret.push( results[i] ); } } return ret.length === 0 ? null : ret; } }, TAG: function(match, context){ return context.getElementsByTagName(match[1]); } }, preFilter: { CLASS: function(match, curLoop, inplace, result, not, isXML){ match = " " + match[1].replace(/\\/g, "") + " "; if ( isXML ) { return match; } for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) { if ( elem ) { if ( not ^ (elem.className && (" " + elem.className + " ").replace(/[\t\n]/g, " ").indexOf(match) >= 0) ) { if ( !inplace ) { result.push( elem ); } } else if ( inplace ) { curLoop[i] = false; } } } return false; }, ID: function(match){ return match[1].replace(/\\/g, ""); }, TAG: function(match, curLoop){ return match[1].toLowerCase(); }, CHILD: function(match){ if ( match[1] === "nth" ) { // parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6' var test = /(-?)(\d*)n((?:\+|-)?\d*)/.exec( match[2] === "even" && "2n" || match[2] === "odd" && "2n+1" || !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]); // calculate the numbers (first)n+(last) including if they are negative match[2] = (test[1] + (test[2] || 1)) - 0; match[3] = test[3] - 0; } // TODO: Move to normal caching system match[0] = done++; return match; }, ATTR: function(match, curLoop, inplace, result, not, isXML){ var name = match[1].replace(/\\/g, ""); if ( !isXML && Expr.attrMap[name] ) { match[1] = Expr.attrMap[name]; } if ( match[2] === "~=" ) { match[4] = " " + match[4] + " "; } return match; }, PSEUDO: function(match, curLoop, inplace, result, not){ if ( match[1] === "not" ) { // If we're dealing with a complex expression, or a simple one if ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\w/.test(match[3]) ) { match[3] = Sizzle(match[3], null, null, curLoop); } else { var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not); if ( !inplace ) { result.push.apply( result, ret ); } return false; } } else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) { return true; } return match; }, POS: function(match){ match.unshift( true ); return match; } }, filters: { enabled: function(elem){ return elem.disabled === false && elem.type !== "hidden"; }, disabled: function(elem){ return elem.disabled === true; }, checked: function(elem){ return elem.checked === true; }, selected: function(elem){ // Accessing this property makes selected-by-default // options in Safari work properly elem.parentNode.selectedIndex; return elem.selected === true; }, parent: function(elem){ return !!elem.firstChild; }, empty: function(elem){ return !elem.firstChild; }, has: function(elem, i, match){ return !!Sizzle( match[3], elem ).length; }, header: function(elem){ return (/h\d/i).test( elem.nodeName ); }, text: function(elem){ return "text" === elem.type; }, radio: function(elem){ return "radio" === elem.type; }, checkbox: function(elem){ return "checkbox" === elem.type; }, file: function(elem){ return "file" === elem.type; }, password: function(elem){ return "password" === elem.type; }, submit: function(elem){ return "submit" === elem.type; }, image: function(elem){ return "image" === elem.type; }, reset: function(elem){ return "reset" === elem.type; }, button: function(elem){ return "button" === elem.type || elem.nodeName.toLowerCase() === "button"; }, input: function(elem){ return (/input|select|textarea|button/i).test(elem.nodeName); } }, setFilters: { first: function(elem, i){ return i === 0; }, last: function(elem, i, match, array){ return i === array.length - 1; }, even: function(elem, i){ return i % 2 === 0; }, odd: function(elem, i){ return i % 2 === 1; }, lt: function(elem, i, match){ return i < match[3] - 0; }, gt: function(elem, i, match){ return i > match[3] - 0; }, nth: function(elem, i, match){ return match[3] - 0 === i; }, eq: function(elem, i, match){ return match[3] - 0 === i; } }, filter: { PSEUDO: function(elem, match, i, array){ var name = match[1], filter = Expr.filters[ name ]; if ( filter ) { return filter( elem, i, match, array ); } else if ( name === "contains" ) { return (elem.textContent || elem.innerText || Sizzle.getText([ elem ]) || "").indexOf(match[3]) >= 0; } else if ( name === "not" ) { var not = match[3]; for ( var j = 0, l = not.length; j < l; j++ ) { if ( not[j] === elem ) { return false; } } return true; } else { Sizzle.error( "Syntax error, unrecognized expression: " + name ); } }, CHILD: function(elem, match){ var type = match[1], node = elem; switch (type) { case 'only': case 'first': while ( (node = node.previousSibling) ) { if ( node.nodeType === 1 ) { return false; } } if ( type === "first" ) { return true; } node = elem; case 'last': while ( (node = node.nextSibling) ) { if ( node.nodeType === 1 ) { return false; } } return true; case 'nth': var first = match[2], last = match[3]; if ( first === 1 && last === 0 ) { return true; } var doneName = match[0], parent = elem.parentNode; if ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) { var count = 0; for ( node = parent.firstChild; node; node = node.nextSibling ) { if ( node.nodeType === 1 ) { node.nodeIndex = ++count; } } parent.sizcache = doneName; } var diff = elem.nodeIndex - last; if ( first === 0 ) { return diff === 0; } else { return ( diff % first === 0 && diff / first >= 0 ); } } }, ID: function(elem, match){ return elem.nodeType === 1 && elem.getAttribute("id") === match; }, TAG: function(elem, match){ return (match === "*" && elem.nodeType === 1) || elem.nodeName.toLowerCase() === match; }, CLASS: function(elem, match){ return (" " + (elem.className || elem.getAttribute("class")) + " ") .indexOf( match ) > -1; }, ATTR: function(elem, match){ var name = match[1], result = Expr.attrHandle[ name ] ? Expr.attrHandle[ name ]( elem ) : elem[ name ] != null ? elem[ name ] : elem.getAttribute( name ), value = result + "", type = match[2], check = match[4]; return result == null ? type === "!=" : type === "=" ? value === check : type === "*=" ? value.indexOf(check) >= 0 : type === "~=" ? (" " + value + " ").indexOf(check) >= 0 : !check ? value && result !== false : type === "!=" ? value !== check : type === "^=" ? value.indexOf(check) === 0 : type === "$=" ? value.substr(value.length - check.length) === check : type === "|=" ? value === check || value.substr(0, check.length + 1) === check + "-" : false; }, POS: function(elem, match, i, array){ var name = match[2], filter = Expr.setFilters[ name ]; if ( filter ) { return filter( elem, i, match, array ); } } } }; var origPOS = Expr.match.POS, fescape = function(all, num){ return "\\" + (num - 0 + 1); }; for ( var type in Expr.match ) { Expr.match[ type ] = new RegExp( Expr.match[ type ].source + (/(?![^\[]*\])(?![^\(]*\))/.source) ); Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source.replace(/\\(\d+)/g, fescape) ); } var makeArray = function(array, results) { array = Array.prototype.slice.call( array, 0 ); if ( results ) { results.push.apply( results, array ); return results; } return array; }; // Perform a simple check to determine if the browser is capable of // converting a NodeList to an array using builtin methods. // Also verifies that the returned array holds DOM nodes // (which is not the case in the Blackberry browser) try { Array.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType; // Provide a fallback method if it does not work } catch(e){ makeArray = function(array, results) { var ret = results || [], i = 0; if ( toString.call(array) === "[object Array]" ) { Array.prototype.push.apply( ret, array ); } else { if ( typeof array.length === "number" ) { for ( var l = array.length; i < l; i++ ) { ret.push( array[i] ); } } else { for ( ; array[i]; i++ ) { ret.push( array[i] ); } } } return ret; }; } var sortOrder; if ( document.documentElement.compareDocumentPosition ) { sortOrder = function( a, b ) { if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) { if ( a == b ) { hasDuplicate = true; } return a.compareDocumentPosition ? -1 : 1; } var ret = a.compareDocumentPosition(b) & 4 ? -1 : a === b ? 0 : 1; if ( ret === 0 ) { hasDuplicate = true; } return ret; }; } else if ( "sourceIndex" in document.documentElement ) { sortOrder = function( a, b ) { if ( !a.sourceIndex || !b.sourceIndex ) { if ( a == b ) { hasDuplicate = true; } return a.sourceIndex ? -1 : 1; } var ret = a.sourceIndex - b.sourceIndex; if ( ret === 0 ) { hasDuplicate = true; } return ret; }; } else if ( document.createRange ) { sortOrder = function( a, b ) { if ( !a.ownerDocument || !b.ownerDocument ) { if ( a == b ) { hasDuplicate = true; } return a.ownerDocument ? -1 : 1; } var aRange = a.ownerDocument.createRange(), bRange = b.ownerDocument.createRange(); aRange.setStart(a, 0); aRange.setEnd(a, 0); bRange.setStart(b, 0); bRange.setEnd(b, 0); var ret = aRange.compareBoundaryPoints(Range.START_TO_END, bRange); if ( ret === 0 ) { hasDuplicate = true; } return ret; }; } // Utility function for retreiving the text value of an array of DOM nodes Sizzle.getText = function( elems ) { var ret = "", elem; for ( var i = 0; elems[i]; i++ ) { elem = elems[i]; // Get the text from text nodes and CDATA nodes if ( elem.nodeType === 3 || elem.nodeType === 4 ) { ret += elem.nodeValue; // Traverse everything else, except comment nodes } else if ( elem.nodeType !== 8 ) { ret += Sizzle.getText( elem.childNodes ); } } return ret; }; // Check to see if the browser returns elements by name when // querying by getElementById (and provide a workaround) (function(){ // We're going to inject a fake input element with a specified name var form = document.createElement("div"), id = "script" + (new Date()).getTime(); form.innerHTML = ""; // Inject it into the root element, check its status, and remove it quickly var root = document.documentElement; root.insertBefore( form, root.firstChild ); // The workaround has to do additional checks after a getElementById // Which slows things down for other browsers (hence the branching) if ( document.getElementById( id ) ) { Expr.find.ID = function(match, context, isXML){ if ( typeof context.getElementById !== "undefined" && !isXML ) { var m = context.getElementById(match[1]); return m ? m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ? [m] : undefined : []; } }; Expr.filter.ID = function(elem, match){ var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id"); return elem.nodeType === 1 && node && node.nodeValue === match; }; } root.removeChild( form ); root = form = null; // release memory in IE })(); (function(){ // Check to see if the browser returns only elements // when doing getElementsByTagName("*") // Create a fake element var div = document.createElement("div"); div.appendChild( document.createComment("") ); // Make sure no comments are found if ( div.getElementsByTagName("*").length > 0 ) { Expr.find.TAG = function(match, context){ var results = context.getElementsByTagName(match[1]); // Filter out possible comments if ( match[1] === "*" ) { var tmp = []; for ( var i = 0; results[i]; i++ ) { if ( results[i].nodeType === 1 ) { tmp.push( results[i] ); } } results = tmp; } return results; }; } // Check to see if an attribute returns normalized href attributes div.innerHTML = ""; if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" && div.firstChild.getAttribute("href") !== "#" ) { Expr.attrHandle.href = function(elem){ return elem.getAttribute("href", 2); }; } div = null; // release memory in IE })(); if ( document.querySelectorAll ) { (function(){ var oldSizzle = Sizzle, div = document.createElement("div"); div.innerHTML = "

    "; // Safari can't handle uppercase or unicode characters when // in quirks mode. if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) { return; } Sizzle = function(query, context, extra, seed){ context = context || document; // Only use querySelectorAll on non-XML documents // (ID selectors don't work in non-HTML documents) if ( !seed && context.nodeType === 9 && !Sizzle.isXML(context) ) { try { return makeArray( context.querySelectorAll(query), extra ); } catch(e){} } return oldSizzle(query, context, extra, seed); }; for ( var prop in oldSizzle ) { Sizzle[ prop ] = oldSizzle[ prop ]; } div = null; // release memory in IE })(); } (function(){ var div = document.createElement("div"); div.innerHTML = "
    "; // Opera can't find a second classname (in 9.6) // Also, make sure that getElementsByClassName actually exists if ( !div.getElementsByClassName || div.getElementsByClassName("e").length === 0 ) { return; } // Safari caches class attributes, doesn't catch changes (in 3.2) div.lastChild.className = "e"; if ( div.getElementsByClassName("e").length === 1 ) { return; } Expr.order.splice(1, 0, "CLASS"); Expr.find.CLASS = function(match, context, isXML) { if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) { return context.getElementsByClassName(match[1]); } }; div = null; // release memory in IE })(); function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { for ( var i = 0, l = checkSet.length; i < l; i++ ) { var elem = checkSet[i]; if ( elem ) { elem = elem[dir]; var match = false; while ( elem ) { if ( elem.sizcache === doneName ) { match = checkSet[elem.sizset]; break; } if ( elem.nodeType === 1 && !isXML ){ elem.sizcache = doneName; elem.sizset = i; } if ( elem.nodeName.toLowerCase() === cur ) { match = elem; break; } elem = elem[dir]; } checkSet[i] = match; } } } function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { for ( var i = 0, l = checkSet.length; i < l; i++ ) { var elem = checkSet[i]; if ( elem ) { elem = elem[dir]; var match = false; while ( elem ) { if ( elem.sizcache === doneName ) { match = checkSet[elem.sizset]; break; } if ( elem.nodeType === 1 ) { if ( !isXML ) { elem.sizcache = doneName; elem.sizset = i; } if ( typeof cur !== "string" ) { if ( elem === cur ) { match = true; break; } } else if ( Sizzle.filter( cur, [elem] ).length > 0 ) { match = elem; break; } } elem = elem[dir]; } checkSet[i] = match; } } } Sizzle.contains = document.compareDocumentPosition ? function(a, b){ return !!(a.compareDocumentPosition(b) & 16); } : function(a, b){ return a !== b && (a.contains ? a.contains(b) : true); }; Sizzle.isXML = function(elem){ // documentElement is verified for cases where it doesn't yet exist // (such as loading iframes in IE - #4833) var documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement; return documentElement ? documentElement.nodeName !== "HTML" : false; }; var posProcess = function(selector, context){ var tmpSet = [], later = "", match, root = context.nodeType ? [context] : context; // Position selectors must be done after the filter // And so must :not(positional) so we move all PSEUDOs to the end while ( (match = Expr.match.PSEUDO.exec( selector )) ) { later += match[0]; selector = selector.replace( Expr.match.PSEUDO, "" ); } selector = Expr.relative[selector] ? selector + "*" : selector; for ( var i = 0, l = root.length; i < l; i++ ) { Sizzle( selector, root[i], tmpSet ); } return Sizzle.filter( later, tmpSet ); }; // EXPOSE window.tinymce.dom.Sizzle = Sizzle; })(); (function(tinymce) { // Shorten names var each = tinymce.each, DOM = tinymce.DOM, isIE = tinymce.isIE, isWebKit = tinymce.isWebKit, Event; tinymce.create('tinymce.dom.EventUtils', { EventUtils : function() { this.inits = []; this.events = []; }, add : function(o, n, f, s) { var cb, t = this, el = t.events, r; if (n instanceof Array) { r = []; each(n, function(n) { r.push(t.add(o, n, f, s)); }); return r; } // Handle array if (o && o.hasOwnProperty && o instanceof Array) { r = []; each(o, function(o) { o = DOM.get(o); r.push(t.add(o, n, f, s)); }); return r; } o = DOM.get(o); if (!o) return; // Setup event callback cb = function(e) { // Is all events disabled if (t.disabled) return; e = e || window.event; // Patch in target, preventDefault and stopPropagation in IE it's W3C valid if (e && isIE) { if (!e.target) e.target = e.srcElement; // Patch in preventDefault, stopPropagation methods for W3C compatibility tinymce.extend(e, t._stoppers); } if (!s) return f(e); return f.call(s, e); }; if (n == 'unload') { tinymce.unloads.unshift({func : cb}); return cb; } if (n == 'init') { if (t.domLoaded) cb(); else t.inits.push(cb); return cb; } // Store away listener reference el.push({ obj : o, name : n, func : f, cfunc : cb, scope : s }); t._add(o, n, cb); return f; }, remove : function(o, n, f) { var t = this, a = t.events, s = false, r; // Handle array if (o && o.hasOwnProperty && o instanceof Array) { r = []; each(o, function(o) { o = DOM.get(o); r.push(t.remove(o, n, f)); }); return r; } o = DOM.get(o); each(a, function(e, i) { if (e.obj == o && e.name == n && (!f || (e.func == f || e.cfunc == f))) { a.splice(i, 1); t._remove(o, n, e.cfunc); s = true; return false; } }); return s; }, clear : function(o) { var t = this, a = t.events, i, e; if (o) { o = DOM.get(o); for (i = a.length - 1; i >= 0; i--) { e = a[i]; if (e.obj === o) { t._remove(e.obj, e.name, e.cfunc); e.obj = e.cfunc = null; a.splice(i, 1); } } } }, cancel : function(e) { if (!e) return false; this.stop(e); return this.prevent(e); }, stop : function(e) { if (e.stopPropagation) e.stopPropagation(); else e.cancelBubble = true; return false; }, prevent : function(e) { if (e.preventDefault) e.preventDefault(); else e.returnValue = false; return false; }, destroy : function() { var t = this; each(t.events, function(e, i) { t._remove(e.obj, e.name, e.cfunc); e.obj = e.cfunc = null; }); t.events = []; t = null; }, _add : function(o, n, f) { if (o.attachEvent) o.attachEvent('on' + n, f); else if (o.addEventListener) o.addEventListener(n, f, false); else o['on' + n] = f; }, _remove : function(o, n, f) { if (o) { try { if (o.detachEvent) o.detachEvent('on' + n, f); else if (o.removeEventListener) o.removeEventListener(n, f, false); else o['on' + n] = null; } catch (ex) { // Might fail with permission denined on IE so we just ignore that } } }, _pageInit : function(win) { var t = this; // Keep it from running more than once if (t.domLoaded) return; t.domLoaded = true; each(t.inits, function(c) { c(); }); t.inits = []; }, _wait : function(win) { var t = this, doc = win.document; // No need since the document is already loaded if (win.tinyMCE_GZ && tinyMCE_GZ.loaded) { t.domLoaded = 1; return; } // Use IE method if (doc.attachEvent) { doc.attachEvent("onreadystatechange", function() { if (doc.readyState === "complete") { doc.detachEvent("onreadystatechange", arguments.callee); t._pageInit(win); } }); if (doc.documentElement.doScroll && win == win.top) { (function() { if (t.domLoaded) return; try { // If IE is used, use the trick by Diego Perini licensed under MIT by request to the author. // http://javascript.nwbox.com/IEContentLoaded/ doc.documentElement.doScroll("left"); } catch (ex) { setTimeout(arguments.callee, 0); return; } t._pageInit(win); })(); } } else if (doc.addEventListener) { t._add(win, 'DOMContentLoaded', function() { t._pageInit(win); }); } t._add(win, 'load', function() { t._pageInit(win); }); }, _stoppers : { preventDefault : function() { this.returnValue = false; }, stopPropagation : function() { this.cancelBubble = true; } } }); Event = tinymce.dom.Event = new tinymce.dom.EventUtils(); // Dispatch DOM content loaded event for IE and Safari Event._wait(window); tinymce.addUnload(function() { Event.destroy(); }); })(tinymce); (function(tinymce) { tinymce.dom.Element = function(id, settings) { var t = this, dom, el; t.settings = settings = settings || {}; t.id = id; t.dom = dom = settings.dom || tinymce.DOM; // Only IE leaks DOM references, this is a lot faster if (!tinymce.isIE) el = dom.get(t.id); tinymce.each( ('getPos,getRect,getParent,add,setStyle,getStyle,setStyles,' + 'setAttrib,setAttribs,getAttrib,addClass,removeClass,' + 'hasClass,getOuterHTML,setOuterHTML,remove,show,hide,' + 'isHidden,setHTML,get').split(/,/) , function(k) { t[k] = function() { var a = [id], i; for (i = 0; i < arguments.length; i++) a.push(arguments[i]); a = dom[k].apply(dom, a); t.update(k); return a; }; }); tinymce.extend(t, { on : function(n, f, s) { return tinymce.dom.Event.add(t.id, n, f, s); }, getXY : function() { return { x : parseInt(t.getStyle('left')), y : parseInt(t.getStyle('top')) }; }, getSize : function() { var n = dom.get(t.id); return { w : parseInt(t.getStyle('width') || n.clientWidth), h : parseInt(t.getStyle('height') || n.clientHeight) }; }, moveTo : function(x, y) { t.setStyles({left : x, top : y}); }, moveBy : function(x, y) { var p = t.getXY(); t.moveTo(p.x + x, p.y + y); }, resizeTo : function(w, h) { t.setStyles({width : w, height : h}); }, resizeBy : function(w, h) { var s = t.getSize(); t.resizeTo(s.w + w, s.h + h); }, update : function(k) { var b; if (tinymce.isIE6 && settings.blocker) { k = k || ''; // Ignore getters if (k.indexOf('get') === 0 || k.indexOf('has') === 0 || k.indexOf('is') === 0) return; // Remove blocker on remove if (k == 'remove') { dom.remove(t.blocker); return; } if (!t.blocker) { t.blocker = dom.uniqueId(); b = dom.add(settings.container || dom.getRoot(), 'iframe', {id : t.blocker, style : 'position:absolute;', frameBorder : 0, src : 'javascript:""'}); dom.setStyle(b, 'opacity', 0); } else b = dom.get(t.blocker); dom.setStyles(b, { left : t.getStyle('left', 1), top : t.getStyle('top', 1), width : t.getStyle('width', 1), height : t.getStyle('height', 1), display : t.getStyle('display', 1), zIndex : parseInt(t.getStyle('zIndex', 1) || 0) - 1 }); } } }); }; })(tinymce); (function(tinymce) { function trimNl(s) { return s.replace(/[\n\r]+/g, ''); }; // Shorten names var is = tinymce.is, isIE = tinymce.isIE, each = tinymce.each; tinymce.create('tinymce.dom.Selection', { Selection : function(dom, win, serializer) { var t = this; t.dom = dom; t.win = win; t.serializer = serializer; // Add events each([ 'onBeforeSetContent', 'onBeforeGetContent', 'onSetContent', 'onGetContent' ], function(e) { t[e] = new tinymce.util.Dispatcher(t); }); // No W3C Range support if (!t.win.getSelection) t.tridentSel = new tinymce.dom.TridentSelection(t); if (tinymce.isIE && dom.boxModel) this._fixIESelection(); // Prevent leaks tinymce.addUnload(t.destroy, t); }, setCursorLocation: function(node, offset) { var t = this; var r = t.dom.createRng(); r.setStart(node, offset); r.setEnd(node, offset); t.setRng(r); t.collapse(false); }, getContent : function(s) { var t = this, r = t.getRng(), e = t.dom.create("body"), se = t.getSel(), wb, wa, n; s = s || {}; wb = wa = ''; s.get = true; s.format = s.format || 'html'; s.forced_root_block = ''; t.onBeforeGetContent.dispatch(t, s); if (s.format == 'text') return t.isCollapsed() ? '' : (r.text || (se.toString ? se.toString() : '')); if (r.cloneContents) { n = r.cloneContents(); if (n) e.appendChild(n); } else if (is(r.item) || is(r.htmlText)) { // IE will produce invalid markup if elements are present that // it doesn't understand like custom elements or HTML5 elements. // Adding a BR in front of the contents and then remoiving it seems to fix it though. e.innerHTML = '
    ' + (r.item ? r.item(0).outerHTML : r.htmlText); e.removeChild(e.firstChild); } else e.innerHTML = r.toString(); // Keep whitespace before and after if (/^\s/.test(e.innerHTML)) wb = ' '; if (/\s+$/.test(e.innerHTML)) wa = ' '; s.getInner = true; s.content = t.isCollapsed() ? '' : wb + t.serializer.serialize(e, s) + wa; t.onGetContent.dispatch(t, s); return s.content; }, setContent : function(content, args) { var self = this, rng = self.getRng(), caretNode, doc = self.win.document, frag, temp; args = args || {format : 'html'}; args.set = true; content = args.content = content; // Dispatch before set content event if (!args.no_events) self.onBeforeSetContent.dispatch(self, args); content = args.content; if (rng.insertNode) { // Make caret marker since insertNode places the caret in the beginning of text after insert content += '_'; // Delete and insert new node if (rng.startContainer == doc && rng.endContainer == doc) { // WebKit will fail if the body is empty since the range is then invalid and it can't insert contents doc.body.innerHTML = content; } else { rng.deleteContents(); if (doc.body.childNodes.length == 0) { doc.body.innerHTML = content; } else { // createContextualFragment doesn't exists in IE 9 DOMRanges if (rng.createContextualFragment) { rng.insertNode(rng.createContextualFragment(content)); } else { // Fake createContextualFragment call in IE 9 frag = doc.createDocumentFragment(); temp = doc.createElement('div'); frag.appendChild(temp); temp.outerHTML = content; rng.insertNode(frag); } } } // Move to caret marker caretNode = self.dom.get('__caret'); // Make sure we wrap it compleatly, Opera fails with a simple select call rng = doc.createRange(); rng.setStartBefore(caretNode); rng.setEndBefore(caretNode); self.setRng(rng); // Remove the caret position self.dom.remove('__caret'); try { self.setRng(rng); } catch (ex) { // Might fail on Opera for some odd reason } } else { if (rng.item) { // Delete content and get caret text selection doc.execCommand('Delete', false, null); rng = self.getRng(); } // Explorer removes spaces from the beginning of pasted contents if (/^\s+/.test(content)) { rng.pasteHTML('_' + content); self.dom.remove('__mce_tmp'); } else rng.pasteHTML(content); } // Dispatch set content event if (!args.no_events) self.onSetContent.dispatch(self, args); }, getStart : function() { var rng = this.getRng(), startElement, parentElement, checkRng, node; if (rng.duplicate || rng.item) { // Control selection, return first item if (rng.item) return rng.item(0); // Get start element checkRng = rng.duplicate(); checkRng.collapse(1); startElement = checkRng.parentElement(); // Check if range parent is inside the start element, then return the inner parent element // This will fix issues when a single element is selected, IE would otherwise return the wrong start element parentElement = node = rng.parentElement(); while (node = node.parentNode) { if (node == startElement) { startElement = parentElement; break; } } return startElement; } else { startElement = rng.startContainer; if (startElement.nodeType == 1 && startElement.hasChildNodes()) startElement = startElement.childNodes[Math.min(startElement.childNodes.length - 1, rng.startOffset)]; if (startElement && startElement.nodeType == 3) return startElement.parentNode; return startElement; } }, getEnd : function() { var t = this, r = t.getRng(), e, eo; if (r.duplicate || r.item) { if (r.item) return r.item(0); r = r.duplicate(); r.collapse(0); e = r.parentElement(); if (e && e.nodeName == 'BODY') return e.lastChild || e; return e; } else { e = r.endContainer; eo = r.endOffset; if (e.nodeType == 1 && e.hasChildNodes()) e = e.childNodes[eo > 0 ? eo - 1 : eo]; if (e && e.nodeType == 3) return e.parentNode; return e; } }, getBookmark : function(type, normalized) { var t = this, dom = t.dom, rng, rng2, id, collapsed, name, element, index, chr = '\uFEFF', styles; function findIndex(name, element) { var index = 0; each(dom.select(name), function(node, i) { if (node == element) index = i; }); return index; }; if (type == 2) { function getLocation() { var rng = t.getRng(true), root = dom.getRoot(), bookmark = {}; function getPoint(rng, start) { var container = rng[start ? 'startContainer' : 'endContainer'], offset = rng[start ? 'startOffset' : 'endOffset'], point = [], node, childNodes, after = 0; if (container.nodeType == 3) { if (normalized) { for (node = container.previousSibling; node && node.nodeType == 3; node = node.previousSibling) offset += node.nodeValue.length; } point.push(offset); } else { childNodes = container.childNodes; if (offset >= childNodes.length && childNodes.length) { after = 1; offset = Math.max(0, childNodes.length - 1); } point.push(t.dom.nodeIndex(childNodes[offset], normalized) + after); } for (; container && container != root; container = container.parentNode) point.push(t.dom.nodeIndex(container, normalized)); return point; }; bookmark.start = getPoint(rng, true); if (!t.isCollapsed()) bookmark.end = getPoint(rng); return bookmark; }; if (t.tridentSel) return t.tridentSel.getBookmark(type); return getLocation(); } // Handle simple range if (type) return {rng : t.getRng()}; rng = t.getRng(); id = dom.uniqueId(); collapsed = tinyMCE.activeEditor.selection.isCollapsed(); styles = 'overflow:hidden;line-height:0px'; // Explorer method if (rng.duplicate || rng.item) { // Text selection if (!rng.item) { rng2 = rng.duplicate(); try { // Insert start marker rng.collapse(); rng.pasteHTML('' + chr + ''); // Insert end marker if (!collapsed) { rng2.collapse(false); // Detect the empty space after block elements in IE and move the end back one character

    ] becomes

    ]

    rng.moveToElementText(rng2.parentElement()); if (rng.compareEndPoints('StartToEnd', rng2) == 0) rng2.move('character', -1); rng2.pasteHTML('' + chr + ''); } } catch (ex) { // IE might throw unspecified error so lets ignore it return null; } } else { // Control selection element = rng.item(0); name = element.nodeName; return {name : name, index : findIndex(name, element)}; } } else { element = t.getNode(); name = element.nodeName; if (name == 'IMG') return {name : name, index : findIndex(name, element)}; // W3C method rng2 = rng.cloneRange(); // Insert end marker if (!collapsed) { rng2.collapse(false); rng2.insertNode(dom.create('span', {'data-mce-type' : "bookmark", id : id + '_end', style : styles}, chr)); } rng.collapse(true); rng.insertNode(dom.create('span', {'data-mce-type' : "bookmark", id : id + '_start', style : styles}, chr)); } t.moveToBookmark({id : id, keep : 1}); return {id : id}; }, moveToBookmark : function(bookmark) { var t = this, dom = t.dom, marker1, marker2, rng, root, startContainer, endContainer, startOffset, endOffset; if (bookmark) { if (bookmark.start) { rng = dom.createRng(); root = dom.getRoot(); function setEndPoint(start) { var point = bookmark[start ? 'start' : 'end'], i, node, offset, children; if (point) { offset = point[0]; // Find container node for (node = root, i = point.length - 1; i >= 1; i--) { children = node.childNodes; if (point[i] > children.length - 1) return; node = children[point[i]]; } // Move text offset to best suitable location if (node.nodeType === 3) offset = Math.min(point[0], node.nodeValue.length); // Move element offset to best suitable location if (node.nodeType === 1) offset = Math.min(point[0], node.childNodes.length); // Set offset within container node if (start) rng.setStart(node, offset); else rng.setEnd(node, offset); } return true; }; if (t.tridentSel) return t.tridentSel.moveToBookmark(bookmark); if (setEndPoint(true) && setEndPoint()) { t.setRng(rng); } } else if (bookmark.id) { function restoreEndPoint(suffix) { var marker = dom.get(bookmark.id + '_' + suffix), node, idx, next, prev, keep = bookmark.keep; if (marker) { node = marker.parentNode; if (suffix == 'start') { if (!keep) { idx = dom.nodeIndex(marker); } else { node = marker.firstChild; idx = 1; } startContainer = endContainer = node; startOffset = endOffset = idx; } else { if (!keep) { idx = dom.nodeIndex(marker); } else { node = marker.firstChild; idx = 1; } endContainer = node; endOffset = idx; } if (!keep) { prev = marker.previousSibling; next = marker.nextSibling; // Remove all marker text nodes each(tinymce.grep(marker.childNodes), function(node) { if (node.nodeType == 3) node.nodeValue = node.nodeValue.replace(/\uFEFF/g, ''); }); // Remove marker but keep children if for example contents where inserted into the marker // Also remove duplicated instances of the marker for example by a split operation or by WebKit auto split on paste feature while (marker = dom.get(bookmark.id + '_' + suffix)) dom.remove(marker, 1); // If siblings are text nodes then merge them unless it's Opera since it some how removes the node // and we are sniffing since adding a lot of detection code for a browser with 3% of the market isn't worth the effort. Sorry, Opera but it's just a fact if (prev && next && prev.nodeType == next.nodeType && prev.nodeType == 3 && !tinymce.isOpera) { idx = prev.nodeValue.length; prev.appendData(next.nodeValue); dom.remove(next); if (suffix == 'start') { startContainer = endContainer = prev; startOffset = endOffset = idx; } else { endContainer = prev; endOffset = idx; } } } } }; function addBogus(node) { // Adds a bogus BR element for empty block elements or just a space on IE since it renders BR elements incorrectly if (dom.isBlock(node) && !node.innerHTML) node.innerHTML = !isIE ? '
    ' : ' '; return node; }; // Restore start/end points restoreEndPoint('start'); restoreEndPoint('end'); if (startContainer) { rng = dom.createRng(); rng.setStart(addBogus(startContainer), startOffset); rng.setEnd(addBogus(endContainer), endOffset); t.setRng(rng); } } else if (bookmark.name) { t.select(dom.select(bookmark.name)[bookmark.index]); } else if (bookmark.rng) t.setRng(bookmark.rng); } }, select : function(node, content) { var t = this, dom = t.dom, rng = dom.createRng(), idx; if (node) { idx = dom.nodeIndex(node); rng.setStart(node.parentNode, idx); rng.setEnd(node.parentNode, idx + 1); // Find first/last text node or BR element if (content) { function setPoint(node, start) { var walker = new tinymce.dom.TreeWalker(node, node); do { // Text node if (node.nodeType == 3 && tinymce.trim(node.nodeValue).length != 0) { if (start) rng.setStart(node, 0); else rng.setEnd(node, node.nodeValue.length); return; } // BR element if (node.nodeName == 'BR') { if (start) rng.setStartBefore(node); else rng.setEndBefore(node); return; } } while (node = (start ? walker.next() : walker.prev())); }; setPoint(node, 1); setPoint(node); } t.setRng(rng); } return node; }, isCollapsed : function() { var t = this, r = t.getRng(), s = t.getSel(); if (!r || r.item) return false; if (r.compareEndPoints) return r.compareEndPoints('StartToEnd', r) === 0; return !s || r.collapsed; }, collapse : function(to_start) { var self = this, rng = self.getRng(), node; // Control range on IE if (rng.item) { node = rng.item(0); rng = self.win.document.body.createTextRange(); rng.moveToElementText(node); } rng.collapse(!!to_start); self.setRng(rng); }, getSel : function() { var t = this, w = this.win; return w.getSelection ? w.getSelection() : w.document.selection; }, getRng : function(w3c) { var t = this, s, r, elm, doc = t.win.document; // Found tridentSel object then we need to use that one if (w3c && t.tridentSel) return t.tridentSel.getRangeAt(0); try { if (s = t.getSel()) r = s.rangeCount > 0 ? s.getRangeAt(0) : (s.createRange ? s.createRange() : doc.createRange()); } catch (ex) { // IE throws unspecified error here if TinyMCE is placed in a frame/iframe } // We have W3C ranges and it's IE then fake control selection since IE9 doesn't handle that correctly yet if (tinymce.isIE && r && r.setStart && doc.selection.createRange().item) { elm = doc.selection.createRange().item(0); r = doc.createRange(); r.setStartBefore(elm); r.setEndAfter(elm); } // No range found then create an empty one // This can occur when the editor is placed in a hidden container element on Gecko // Or on IE when there was an exception if (!r) r = doc.createRange ? doc.createRange() : doc.body.createTextRange(); if (t.selectedRange && t.explicitRange) { if (r.compareBoundaryPoints(r.START_TO_START, t.selectedRange) === 0 && r.compareBoundaryPoints(r.END_TO_END, t.selectedRange) === 0) { // Safari, Opera and Chrome only ever select text which causes the range to change. // This lets us use the originally set range if the selection hasn't been changed by the user. r = t.explicitRange; } else { t.selectedRange = null; t.explicitRange = null; } } return r; }, setRng : function(r) { var s, t = this; if (!t.tridentSel) { s = t.getSel(); if (s) { t.explicitRange = r; try { s.removeAllRanges(); } catch (ex) { // IE9 might throw errors here don't know why } s.addRange(r); t.selectedRange = s.getRangeAt(0); } } else { // Is W3C Range if (r.cloneRange) { t.tridentSel.addRange(r); return; } // Is IE specific range try { r.select(); } catch (ex) { // Needed for some odd IE bug #1843306 } } }, setNode : function(n) { var t = this; t.setContent(t.dom.getOuterHTML(n)); return n; }, getNode : function() { var t = this, rng = t.getRng(), sel = t.getSel(), elm, start = rng.startContainer, end = rng.endContainer; // Range maybe lost after the editor is made visible again if (!rng) return t.dom.getRoot(); if (rng.setStart) { elm = rng.commonAncestorContainer; // Handle selection a image or other control like element such as anchors if (!rng.collapsed) { if (rng.startContainer == rng.endContainer) { if (rng.endOffset - rng.startOffset < 2) { if (rng.startContainer.hasChildNodes()) elm = rng.startContainer.childNodes[rng.startOffset]; } } // If the anchor node is a element instead of a text node then return this element //if (tinymce.isWebKit && sel.anchorNode && sel.anchorNode.nodeType == 1) // return sel.anchorNode.childNodes[sel.anchorOffset]; // Handle cases where the selection is immediately wrapped around a node and return that node instead of it's parent. // This happens when you double click an underlined word in FireFox. if (start.nodeType === 3 && end.nodeType === 3) { function skipEmptyTextNodes(n, forwards) { var orig = n; while (n && n.nodeType === 3 && n.length === 0) { n = forwards ? n.nextSibling : n.previousSibling; } return n || orig; } if (start.length === rng.startOffset) { start = skipEmptyTextNodes(start.nextSibling, true); } else { start = start.parentNode; } if (rng.endOffset === 0) { end = skipEmptyTextNodes(end.previousSibling, false); } else { end = end.parentNode; } if (start && start === end) return start; } } if (elm && elm.nodeType == 3) return elm.parentNode; return elm; } return rng.item ? rng.item(0) : rng.parentElement(); }, getSelectedBlocks : function(st, en) { var t = this, dom = t.dom, sb, eb, n, bl = []; sb = dom.getParent(st || t.getStart(), dom.isBlock); eb = dom.getParent(en || t.getEnd(), dom.isBlock); if (sb) bl.push(sb); if (sb && eb && sb != eb) { n = sb; while ((n = n.nextSibling) && n != eb) { if (dom.isBlock(n)) bl.push(n); } } if (eb && sb != eb) bl.push(eb); return bl; }, normalize : function() { var self = this, rng, normalized; // Normalize only on non IE browsers for now if (tinymce.isIE) return; function normalizeEndPoint(start) { var container, offset, walker, dom = self.dom, body = dom.getRoot(), node; container = rng[(start ? 'start' : 'end') + 'Container']; offset = rng[(start ? 'start' : 'end') + 'Offset']; // If the container is a document move it to the body element if (container.nodeType === 9) { container = container.body; offset = 0; } // If the container is body try move it into the closest text node or position // TODO: Add more logic here to handle element selection cases if (container === body) { // Resolve the index if (container.hasChildNodes()) { container = container.childNodes[Math.min(!start && offset > 0 ? offset - 1 : offset, container.childNodes.length - 1)]; offset = 0; // Don't walk into elements that doesn't have any child nodes like a IMG if (container.hasChildNodes()) { // Walk the DOM to find a text node to place the caret at or a BR node = container; walker = new tinymce.dom.TreeWalker(container, body); do { // Found a text node use that position if (node.nodeType === 3) { offset = start ? 0 : node.nodeValue.length - 1; container = node; break; } // Found a BR element that we can place the caret before if (node.nodeName === 'BR') { offset = dom.nodeIndex(node); container = node.parentNode; break; } } while (node = (start ? walker.next() : walker.prev())); normalized = true; } } } // Set endpoint if it was normalized if (normalized) rng['set' + (start ? 'Start' : 'End')](container, offset); }; rng = self.getRng(); // Normalize the end points normalizeEndPoint(true); if (rng.collapsed) normalizeEndPoint(); // Set the selection if it was normalized if (normalized) { //console.log(self.dom.dumpRng(rng)); self.setRng(rng); } }, destroy : function(s) { var t = this; t.win = null; // Manual destroy then remove unload handler if (!s) tinymce.removeUnload(t.destroy); }, // IE has an issue where you can't select/move the caret by clicking outside the body if the document is in standards mode _fixIESelection : function() { var dom = this.dom, doc = dom.doc, body = doc.body, started, startRng, htmlElm; // Make HTML element unselectable since we are going to handle selection by hand doc.documentElement.unselectable = true; // Return range from point or null if it failed function rngFromPoint(x, y) { var rng = body.createTextRange(); try { rng.moveToPoint(x, y); } catch (ex) { // IE sometimes throws and exception, so lets just ignore it rng = null; } return rng; }; // Fires while the selection is changing function selectionChange(e) { var pointRng; // Check if the button is down or not if (e.button) { // Create range from mouse position pointRng = rngFromPoint(e.x, e.y); if (pointRng) { // Check if pointRange is before/after selection then change the endPoint if (pointRng.compareEndPoints('StartToStart', startRng) > 0) pointRng.setEndPoint('StartToStart', startRng); else pointRng.setEndPoint('EndToEnd', startRng); pointRng.select(); } } else endSelection(); } // Removes listeners function endSelection() { var rng = doc.selection.createRange(); // If the range is collapsed then use the last start range if (startRng && !rng.item && rng.compareEndPoints('StartToEnd', rng) === 0) startRng.select(); dom.unbind(doc, 'mouseup', endSelection); dom.unbind(doc, 'mousemove', selectionChange); startRng = started = 0; }; // Detect when user selects outside BODY dom.bind(doc, ['mousedown', 'contextmenu'], function(e) { if (e.target.nodeName === 'HTML') { if (started) endSelection(); // Detect vertical scrollbar, since IE will fire a mousedown on the scrollbar and have target set as HTML htmlElm = doc.documentElement; if (htmlElm.scrollHeight > htmlElm.clientHeight) return; started = 1; // Setup start position startRng = rngFromPoint(e.x, e.y); if (startRng) { // Listen for selection change events dom.bind(doc, 'mouseup', endSelection); dom.bind(doc, 'mousemove', selectionChange); dom.win.focus(); startRng.select(); } } }); } }); })(tinymce); (function(tinymce) { tinymce.dom.Serializer = function(settings, dom, schema) { var onPreProcess, onPostProcess, isIE = tinymce.isIE, each = tinymce.each, htmlParser; // Support the old apply_source_formatting option if (!settings.apply_source_formatting) settings.indent = false; settings.remove_trailing_brs = true; // Default DOM and Schema if they are undefined dom = dom || tinymce.DOM; schema = schema || new tinymce.html.Schema(settings); settings.entity_encoding = settings.entity_encoding || 'named'; onPreProcess = new tinymce.util.Dispatcher(self); onPostProcess = new tinymce.util.Dispatcher(self); htmlParser = new tinymce.html.DomParser(settings, schema); // Convert move data-mce-src, data-mce-href and data-mce-style into nodes or process them if needed htmlParser.addAttributeFilter('src,href,style', function(nodes, name) { var i = nodes.length, node, value, internalName = 'data-mce-' + name, urlConverter = settings.url_converter, urlConverterScope = settings.url_converter_scope, undef; while (i--) { node = nodes[i]; value = node.attributes.map[internalName]; if (value !== undef) { // Set external name to internal value and remove internal node.attr(name, value.length > 0 ? value : null); node.attr(internalName, null); } else { // No internal attribute found then convert the value we have in the DOM value = node.attributes.map[name]; if (name === "style") value = dom.serializeStyle(dom.parseStyle(value), node.name); else if (urlConverter) value = urlConverter.call(urlConverterScope, value, name, node.name); node.attr(name, value.length > 0 ? value : null); } } }); // Remove internal classes mceItem<..> htmlParser.addAttributeFilter('class', function(nodes, name) { var i = nodes.length, node, value; while (i--) { node = nodes[i]; value = node.attr('class').replace(/\s*mce(Item\w+|Selected)\s*/g, ''); node.attr('class', value.length > 0 ? value : null); } }); // Remove bookmark elements htmlParser.addAttributeFilter('data-mce-type', function(nodes, name, args) { var i = nodes.length, node; while (i--) { node = nodes[i]; if (node.attributes.map['data-mce-type'] === 'bookmark' && !args.cleanup) node.remove(); } }); // Force script into CDATA sections and remove the mce- prefix also add comments around styles htmlParser.addNodeFilter('script,style', function(nodes, name) { var i = nodes.length, node, value; function trim(value) { return value.replace(/()/g, '\n') .replace(/^[\r\n]*|[\r\n]*$/g, '') .replace(/^\s*(\/\/\s*|\]\]>|-->|\]\]-->)\s*$/g, ''); }; while (i--) { node = nodes[i]; value = node.firstChild ? node.firstChild.value : ''; if (name === "script") { // Remove mce- prefix from script elements node.attr('type', (node.attr('type') || 'text/javascript').replace(/^mce\-/, '')); if (value.length > 0) node.firstChild.value = '// '; } else { if (value.length > 0) node.firstChild.value = ''; } } }); // Convert comments to cdata and handle protected comments htmlParser.addNodeFilter('#comment', function(nodes, name) { var i = nodes.length, node; while (i--) { node = nodes[i]; if (node.value.indexOf('[CDATA[') === 0) { node.name = '#cdata'; node.type = 4; node.value = node.value.replace(/^\[CDATA\[|\]\]$/g, ''); } else if (node.value.indexOf('mce:protected ') === 0) { node.name = "#text"; node.type = 3; node.raw = true; node.value = unescape(node.value).substr(14); } } }); htmlParser.addNodeFilter('xml:namespace,input', function(nodes, name) { var i = nodes.length, node; while (i--) { node = nodes[i]; if (node.type === 7) node.remove(); else if (node.type === 1) { if (name === "input" && !("type" in node.attributes.map)) node.attr('type', 'text'); } } }); // Fix list elements, TODO: Replace this later if (settings.fix_list_elements) { htmlParser.addNodeFilter('ul,ol', function(nodes, name) { var i = nodes.length, node, parentNode; while (i--) { node = nodes[i]; parentNode = node.parent; if (parentNode.name === 'ul' || parentNode.name === 'ol') { if (node.prev && node.prev.name === 'li') { node.prev.append(node); } } } }); } // Remove internal data attributes htmlParser.addAttributeFilter('data-mce-src,data-mce-href,data-mce-style', function(nodes, name) { var i = nodes.length; while (i--) { nodes[i].attr(name, null); } }); // Return public methods return { schema : schema, addNodeFilter : htmlParser.addNodeFilter, addAttributeFilter : htmlParser.addAttributeFilter, onPreProcess : onPreProcess, onPostProcess : onPostProcess, serialize : function(node, args) { var impl, doc, oldDoc, htmlSerializer, content; // Explorer won't clone contents of script and style and the // selected index of select elements are cleared on a clone operation. if (isIE && dom.select('script,style,select,map').length > 0) { content = node.innerHTML; node = node.cloneNode(false); dom.setHTML(node, content); } else node = node.cloneNode(true); // Nodes needs to be attached to something in WebKit/Opera // Older builds of Opera crashes if you attach the node to an document created dynamically // and since we can't feature detect a crash we need to sniff the acutal build number // This fix will make DOM ranges and make Sizzle happy! impl = node.ownerDocument.implementation; if (impl.createHTMLDocument) { // Create an empty HTML document doc = impl.createHTMLDocument(""); // Add the element or it's children if it's a body element to the new document each(node.nodeName == 'BODY' ? node.childNodes : [node], function(node) { doc.body.appendChild(doc.importNode(node, true)); }); // Grab first child or body element for serialization if (node.nodeName != 'BODY') node = doc.body.firstChild; else node = doc.body; // set the new document in DOMUtils so createElement etc works oldDoc = dom.doc; dom.doc = doc; } args = args || {}; args.format = args.format || 'html'; // Pre process if (!args.no_events) { args.node = node; onPreProcess.dispatch(self, args); } // Setup serializer htmlSerializer = new tinymce.html.Serializer(settings, schema); // Parse and serialize HTML args.content = htmlSerializer.serialize( htmlParser.parse(args.getInner ? node.innerHTML : tinymce.trim(dom.getOuterHTML(node), args), args) ); // Replace all BOM characters for now until we can find a better solution if (!args.cleanup) args.content = args.content.replace(/\uFEFF/g, ''); // Post process if (!args.no_events) onPostProcess.dispatch(self, args); // Restore the old document if it was changed if (oldDoc) dom.doc = oldDoc; args.node = null; return args.content; }, addRules : function(rules) { schema.addValidElements(rules); }, setRules : function(rules) { schema.setValidElements(rules); } }; }; })(tinymce); (function(tinymce) { tinymce.dom.ScriptLoader = function(settings) { var QUEUED = 0, LOADING = 1, LOADED = 2, states = {}, queue = [], scriptLoadedCallbacks = {}, queueLoadedCallbacks = [], loading = 0, undefined; function loadScript(url, callback) { var t = this, dom = tinymce.DOM, elm, uri, loc, id; // Execute callback when script is loaded function done() { dom.remove(id); if (elm) elm.onreadystatechange = elm.onload = elm = null; callback(); }; function error() { // Report the error so it's easier for people to spot loading errors if (typeof(console) !== "undefined" && console.log) console.log("Failed to load: " + url); // We can't mark it as done if there is a load error since // A) We don't want to produce 404 errors on the server and // B) the onerror event won't fire on all browsers. // done(); }; id = dom.uniqueId(); if (tinymce.isIE6) { uri = new tinymce.util.URI(url); loc = location; // If script is from same domain and we // use IE 6 then use XHR since it's more reliable if (uri.host == loc.hostname && uri.port == loc.port && (uri.protocol + ':') == loc.protocol && uri.protocol.toLowerCase() != 'file') { tinymce.util.XHR.send({ url : tinymce._addVer(uri.getURI()), success : function(content) { // Create new temp script element var script = dom.create('script', { type : 'text/javascript' }); // Evaluate script in global scope script.text = content; document.getElementsByTagName('head')[0].appendChild(script); dom.remove(script); done(); }, error : error }); return; } } // Create new script element elm = dom.create('script', { id : id, type : 'text/javascript', src : tinymce._addVer(url) }); // Add onload listener for non IE browsers since IE9 // fires onload event before the script is parsed and executed if (!tinymce.isIE) elm.onload = done; // Add onerror event will get fired on some browsers but not all of them elm.onerror = error; // Opera 9.60 doesn't seem to fire the onreadystate event at correctly if (!tinymce.isOpera) { elm.onreadystatechange = function() { var state = elm.readyState; // Loaded state is passed on IE 6 however there // are known issues with this method but we can't use // XHR in a cross domain loading if (state == 'complete' || state == 'loaded') done(); }; } // Most browsers support this feature so we report errors // for those at least to help users track their missing plugins etc // todo: Removed since it produced error if the document is unloaded by navigating away, re-add it as an option /*elm.onerror = function() { alert('Failed to load: ' + url); };*/ // Add script to document (document.getElementsByTagName('head')[0] || document.body).appendChild(elm); }; this.isDone = function(url) { return states[url] == LOADED; }; this.markDone = function(url) { states[url] = LOADED; }; this.add = this.load = function(url, callback, scope) { var item, state = states[url]; // Add url to load queue if (state == undefined) { queue.push(url); states[url] = QUEUED; } if (callback) { // Store away callback for later execution if (!scriptLoadedCallbacks[url]) scriptLoadedCallbacks[url] = []; scriptLoadedCallbacks[url].push({ func : callback, scope : scope || this }); } }; this.loadQueue = function(callback, scope) { this.loadScripts(queue, callback, scope); }; this.loadScripts = function(scripts, callback, scope) { var loadScripts; function execScriptLoadedCallbacks(url) { // Execute URL callback functions tinymce.each(scriptLoadedCallbacks[url], function(callback) { callback.func.call(callback.scope); }); scriptLoadedCallbacks[url] = undefined; }; queueLoadedCallbacks.push({ func : callback, scope : scope || this }); loadScripts = function() { var loadingScripts = tinymce.grep(scripts); // Current scripts has been handled scripts.length = 0; // Load scripts that needs to be loaded tinymce.each(loadingScripts, function(url) { // Script is already loaded then execute script callbacks directly if (states[url] == LOADED) { execScriptLoadedCallbacks(url); return; } // Is script not loading then start loading it if (states[url] != LOADING) { states[url] = LOADING; loading++; loadScript(url, function() { states[url] = LOADED; loading--; execScriptLoadedCallbacks(url); // Load more scripts if they where added by the recently loaded script loadScripts(); }); } }); // No scripts are currently loading then execute all pending queue loaded callbacks if (!loading) { tinymce.each(queueLoadedCallbacks, function(callback) { callback.func.call(callback.scope); }); queueLoadedCallbacks.length = 0; } }; loadScripts(); }; }; // Global script loader tinymce.ScriptLoader = new tinymce.dom.ScriptLoader(); })(tinymce); tinymce.dom.TreeWalker = function(start_node, root_node) { var node = start_node; function findSibling(node, start_name, sibling_name, shallow) { var sibling, parent; if (node) { // Walk into nodes if it has a start if (!shallow && node[start_name]) return node[start_name]; // Return the sibling if it has one if (node != root_node) { sibling = node[sibling_name]; if (sibling) return sibling; // Walk up the parents to look for siblings for (parent = node.parentNode; parent && parent != root_node; parent = parent.parentNode) { sibling = parent[sibling_name]; if (sibling) return sibling; } } } }; this.current = function() { return node; }; this.next = function(shallow) { return (node = findSibling(node, 'firstChild', 'nextSibling', shallow)); }; this.prev = function(shallow) { return (node = findSibling(node, 'lastChild', 'previousSibling', shallow)); }; }; (function(tinymce) { tinymce.dom.RangeUtils = function(dom) { var INVISIBLE_CHAR = '\uFEFF'; this.walk = function(rng, callback) { var startContainer = rng.startContainer, startOffset = rng.startOffset, endContainer = rng.endContainer, endOffset = rng.endOffset, ancestor, startPoint, endPoint, node, parent, siblings, nodes; // Handle table cell selection the table plugin enables // you to fake select table cells and perform formatting actions on them nodes = dom.select('td.mceSelected,th.mceSelected'); if (nodes.length > 0) { tinymce.each(nodes, function(node) { callback([node]); }); return; } function collectSiblings(node, name, end_node) { var siblings = []; for (; node && node != end_node; node = node[name]) siblings.push(node); return siblings; }; function findEndPoint(node, root) { do { if (node.parentNode == root) return node; node = node.parentNode; } while(node); }; function walkBoundary(start_node, end_node, next) { var siblingName = next ? 'nextSibling' : 'previousSibling'; for (node = start_node, parent = node.parentNode; node && node != end_node; node = parent) { parent = node.parentNode; siblings = collectSiblings(node == start_node ? node : node[siblingName], siblingName); if (siblings.length) { if (!next) siblings.reverse(); callback(siblings); } } }; // If index based start position then resolve it if (startContainer.nodeType == 1 && startContainer.hasChildNodes()) startContainer = startContainer.childNodes[startOffset]; // If index based end position then resolve it if (endContainer.nodeType == 1 && endContainer.hasChildNodes()) endContainer = endContainer.childNodes[Math.min(endOffset - 1, endContainer.childNodes.length - 1)]; // Find common ancestor and end points ancestor = dom.findCommonAncestor(startContainer, endContainer); // Same container if (startContainer == endContainer) return callback([startContainer]); // Process left side for (node = startContainer; node; node = node.parentNode) { if (node == endContainer) return walkBoundary(startContainer, ancestor, true); if (node == ancestor) break; } // Process right side for (node = endContainer; node; node = node.parentNode) { if (node == startContainer) return walkBoundary(endContainer, ancestor); if (node == ancestor) break; } // Find start/end point startPoint = findEndPoint(startContainer, ancestor) || startContainer; endPoint = findEndPoint(endContainer, ancestor) || endContainer; // Walk left leaf walkBoundary(startContainer, startPoint, true); // Walk the middle from start to end point siblings = collectSiblings( startPoint == startContainer ? startPoint : startPoint.nextSibling, 'nextSibling', endPoint == endContainer ? endPoint.nextSibling : endPoint ); if (siblings.length) callback(siblings); // Walk right leaf walkBoundary(endContainer, endPoint); }; /* this.split = function(rng) { var startContainer = rng.startContainer, startOffset = rng.startOffset, endContainer = rng.endContainer, endOffset = rng.endOffset; function splitText(node, offset) { if (offset == node.nodeValue.length) node.appendData(INVISIBLE_CHAR); node = node.splitText(offset); if (node.nodeValue === INVISIBLE_CHAR) node.nodeValue = ''; return node; }; // Handle single text node if (startContainer == endContainer) { if (startContainer.nodeType == 3) { if (startOffset != 0) startContainer = endContainer = splitText(startContainer, startOffset); if (endOffset - startOffset != startContainer.nodeValue.length) splitText(startContainer, endOffset - startOffset); } } else { // Split startContainer text node if needed if (startContainer.nodeType == 3 && startOffset != 0) { startContainer = splitText(startContainer, startOffset); startOffset = 0; } // Split endContainer text node if needed if (endContainer.nodeType == 3 && endOffset != endContainer.nodeValue.length) { endContainer = splitText(endContainer, endOffset).previousSibling; endOffset = endContainer.nodeValue.length; } } return { startContainer : startContainer, startOffset : startOffset, endContainer : endContainer, endOffset : endOffset }; }; */ }; tinymce.dom.RangeUtils.compareRanges = function(rng1, rng2) { if (rng1 && rng2) { // Compare native IE ranges if (rng1.item || rng1.duplicate) { // Both are control ranges and the selected element matches if (rng1.item && rng2.item && rng1.item(0) === rng2.item(0)) return true; // Both are text ranges and the range matches if (rng1.isEqual && rng2.isEqual && rng2.isEqual(rng1)) return true; } else { // Compare w3c ranges return rng1.startContainer == rng2.startContainer && rng1.startOffset == rng2.startOffset; } } return false; }; })(tinymce); (function(tinymce) { var Event = tinymce.dom.Event, each = tinymce.each; tinymce.create('tinymce.ui.KeyboardNavigation', { KeyboardNavigation: function(settings, dom) { var t = this, root = settings.root, items = settings.items, enableUpDown = settings.enableUpDown, enableLeftRight = settings.enableLeftRight || !settings.enableUpDown, excludeFromTabOrder = settings.excludeFromTabOrder, itemFocussed, itemBlurred, rootKeydown, rootFocussed, focussedId; dom = dom || tinymce.DOM; itemFocussed = function(evt) { focussedId = evt.target.id; }; itemBlurred = function(evt) { dom.setAttrib(evt.target.id, 'tabindex', '-1'); }; rootFocussed = function(evt) { var item = dom.get(focussedId); dom.setAttrib(item, 'tabindex', '0'); item.focus(); }; t.focus = function() { dom.get(focussedId).focus(); }; t.destroy = function() { each(items, function(item) { dom.unbind(dom.get(item.id), 'focus', itemFocussed); dom.unbind(dom.get(item.id), 'blur', itemBlurred); }); dom.unbind(dom.get(root), 'focus', rootFocussed); dom.unbind(dom.get(root), 'keydown', rootKeydown); items = dom = root = t.focus = itemFocussed = itemBlurred = rootKeydown = rootFocussed = null; t.destroy = function() {}; }; t.moveFocus = function(dir, evt) { var idx = -1, controls = t.controls, newFocus; if (!focussedId) return; each(items, function(item, index) { if (item.id === focussedId) { idx = index; return false; } }); idx += dir; if (idx < 0) { idx = items.length - 1; } else if (idx >= items.length) { idx = 0; } newFocus = items[idx]; dom.setAttrib(focussedId, 'tabindex', '-1'); dom.setAttrib(newFocus.id, 'tabindex', '0'); dom.get(newFocus.id).focus(); if (settings.actOnFocus) { settings.onAction(newFocus.id); } if (evt) Event.cancel(evt); }; rootKeydown = function(evt) { var DOM_VK_LEFT = 37, DOM_VK_RIGHT = 39, DOM_VK_UP = 38, DOM_VK_DOWN = 40, DOM_VK_ESCAPE = 27, DOM_VK_ENTER = 14, DOM_VK_RETURN = 13, DOM_VK_SPACE = 32; switch (evt.keyCode) { case DOM_VK_LEFT: if (enableLeftRight) t.moveFocus(-1); break; case DOM_VK_RIGHT: if (enableLeftRight) t.moveFocus(1); break; case DOM_VK_UP: if (enableUpDown) t.moveFocus(-1); break; case DOM_VK_DOWN: if (enableUpDown) t.moveFocus(1); break; case DOM_VK_ESCAPE: if (settings.onCancel) { settings.onCancel(); Event.cancel(evt); } break; case DOM_VK_ENTER: case DOM_VK_RETURN: case DOM_VK_SPACE: if (settings.onAction) { settings.onAction(focussedId); Event.cancel(evt); } break; } }; // Set up state and listeners for each item. each(items, function(item, idx) { var tabindex; if (!item.id) { item.id = dom.uniqueId('_mce_item_'); } if (excludeFromTabOrder) { dom.bind(item.id, 'blur', itemBlurred); tabindex = '-1'; } else { tabindex = (idx === 0 ? '0' : '-1'); } dom.setAttrib(item.id, 'tabindex', tabindex); dom.bind(dom.get(item.id), 'focus', itemFocussed); }); // Setup initial state for root element. if (items[0]){ focussedId = items[0].id; } dom.setAttrib(root, 'tabindex', '-1'); // Setup listeners for root element. dom.bind(dom.get(root), 'focus', rootFocussed); dom.bind(dom.get(root), 'keydown', rootKeydown); } }); })(tinymce); (function(tinymce) { // Shorten class names var DOM = tinymce.DOM, is = tinymce.is; tinymce.create('tinymce.ui.Control', { Control : function(id, s, editor) { this.id = id; this.settings = s = s || {}; this.rendered = false; this.onRender = new tinymce.util.Dispatcher(this); this.classPrefix = ''; this.scope = s.scope || this; this.disabled = 0; this.active = 0; this.editor = editor; }, setAriaProperty : function(property, value) { var element = DOM.get(this.id + '_aria') || DOM.get(this.id); if (element) { DOM.setAttrib(element, 'aria-' + property, !!value); } }, focus : function() { DOM.get(this.id).focus(); }, setDisabled : function(s) { if (s != this.disabled) { this.setAriaProperty('disabled', s); this.setState('Disabled', s); this.setState('Enabled', !s); this.disabled = s; } }, isDisabled : function() { return this.disabled; }, setActive : function(s) { if (s != this.active) { this.setState('Active', s); this.active = s; this.setAriaProperty('pressed', s); } }, isActive : function() { return this.active; }, setState : function(c, s) { var n = DOM.get(this.id); c = this.classPrefix + c; if (s) DOM.addClass(n, c); else DOM.removeClass(n, c); }, isRendered : function() { return this.rendered; }, renderHTML : function() { }, renderTo : function(n) { DOM.setHTML(n, this.renderHTML()); }, postRender : function() { var t = this, b; // Set pending states if (is(t.disabled)) { b = t.disabled; t.disabled = -1; t.setDisabled(b); } if (is(t.active)) { b = t.active; t.active = -1; t.setActive(b); } }, remove : function() { DOM.remove(this.id); this.destroy(); }, destroy : function() { tinymce.dom.Event.clear(this.id); } }); })(tinymce); tinymce.create('tinymce.ui.Container:tinymce.ui.Control', { Container : function(id, s, editor) { this.parent(id, s, editor); this.controls = []; this.lookup = {}; }, add : function(c) { this.lookup[c.id] = c; this.controls.push(c); return c; }, get : function(n) { return this.lookup[n]; } }); tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', { Separator : function(id, s) { this.parent(id, s); this.classPrefix = 'mceSeparator'; this.setDisabled(true); }, renderHTML : function() { return tinymce.DOM.createHTML('span', {'class' : this.classPrefix, role : 'separator', 'aria-orientation' : 'vertical', tabindex : '-1'}); } }); (function(tinymce) { var is = tinymce.is, DOM = tinymce.DOM, each = tinymce.each, walk = tinymce.walk; tinymce.create('tinymce.ui.MenuItem:tinymce.ui.Control', { MenuItem : function(id, s) { this.parent(id, s); this.classPrefix = 'mceMenuItem'; }, setSelected : function(s) { this.setState('Selected', s); this.setAriaProperty('checked', !!s); this.selected = s; }, isSelected : function() { return this.selected; }, postRender : function() { var t = this; t.parent(); // Set pending state if (is(t.selected)) t.setSelected(t.selected); } }); })(tinymce); (function(tinymce) { var is = tinymce.is, DOM = tinymce.DOM, each = tinymce.each, walk = tinymce.walk; tinymce.create('tinymce.ui.Menu:tinymce.ui.MenuItem', { Menu : function(id, s) { var t = this; t.parent(id, s); t.items = {}; t.collapsed = false; t.menuCount = 0; t.onAddItem = new tinymce.util.Dispatcher(this); }, expand : function(d) { var t = this; if (d) { walk(t, function(o) { if (o.expand) o.expand(); }, 'items', t); } t.collapsed = false; }, collapse : function(d) { var t = this; if (d) { walk(t, function(o) { if (o.collapse) o.collapse(); }, 'items', t); } t.collapsed = true; }, isCollapsed : function() { return this.collapsed; }, add : function(o) { if (!o.settings) o = new tinymce.ui.MenuItem(o.id || DOM.uniqueId(), o); this.onAddItem.dispatch(this, o); return this.items[o.id] = o; }, addSeparator : function() { return this.add({separator : true}); }, addMenu : function(o) { if (!o.collapse) o = this.createMenu(o); this.menuCount++; return this.add(o); }, hasMenus : function() { return this.menuCount !== 0; }, remove : function(o) { delete this.items[o.id]; }, removeAll : function() { var t = this; walk(t, function(o) { if (o.removeAll) o.removeAll(); else o.remove(); o.destroy(); }, 'items', t); t.items = {}; }, createMenu : function(o) { var m = new tinymce.ui.Menu(o.id || DOM.uniqueId(), o); m.onAddItem.add(this.onAddItem.dispatch, this.onAddItem); return m; } }); })(tinymce); (function(tinymce) { var is = tinymce.is, DOM = tinymce.DOM, each = tinymce.each, Event = tinymce.dom.Event, Element = tinymce.dom.Element; tinymce.create('tinymce.ui.DropMenu:tinymce.ui.Menu', { DropMenu : function(id, s) { s = s || {}; s.container = s.container || DOM.doc.body; s.offset_x = s.offset_x || 0; s.offset_y = s.offset_y || 0; s.vp_offset_x = s.vp_offset_x || 0; s.vp_offset_y = s.vp_offset_y || 0; if (is(s.icons) && !s.icons) s['class'] += ' mceNoIcons'; this.parent(id, s); this.onShowMenu = new tinymce.util.Dispatcher(this); this.onHideMenu = new tinymce.util.Dispatcher(this); this.classPrefix = 'mceMenu'; }, createMenu : function(s) { var t = this, cs = t.settings, m; s.container = s.container || cs.container; s.parent = t; s.constrain = s.constrain || cs.constrain; s['class'] = s['class'] || cs['class']; s.vp_offset_x = s.vp_offset_x || cs.vp_offset_x; s.vp_offset_y = s.vp_offset_y || cs.vp_offset_y; s.keyboard_focus = cs.keyboard_focus; m = new tinymce.ui.DropMenu(s.id || DOM.uniqueId(), s); m.onAddItem.add(t.onAddItem.dispatch, t.onAddItem); return m; }, focus : function() { var t = this; if (t.keyboardNav) { t.keyboardNav.focus(); } }, update : function() { var t = this, s = t.settings, tb = DOM.get('menu_' + t.id + '_tbl'), co = DOM.get('menu_' + t.id + '_co'), tw, th; tw = s.max_width ? Math.min(tb.clientWidth, s.max_width) : tb.clientWidth; th = s.max_height ? Math.min(tb.clientHeight, s.max_height) : tb.clientHeight; if (!DOM.boxModel) t.element.setStyles({width : tw + 2, height : th + 2}); else t.element.setStyles({width : tw, height : th}); if (s.max_width) DOM.setStyle(co, 'width', tw); if (s.max_height) { DOM.setStyle(co, 'height', th); if (tb.clientHeight < s.max_height) DOM.setStyle(co, 'overflow', 'hidden'); } }, showMenu : function(x, y, px) { var t = this, s = t.settings, co, vp = DOM.getViewPort(), w, h, mx, my, ot = 2, dm, tb, cp = t.classPrefix; t.collapse(1); if (t.isMenuVisible) return; if (!t.rendered) { co = DOM.add(t.settings.container, t.renderNode()); each(t.items, function(o) { o.postRender(); }); t.element = new Element('menu_' + t.id, {blocker : 1, container : s.container}); } else co = DOM.get('menu_' + t.id); // Move layer out of sight unless it's Opera since it scrolls to top of page due to an bug if (!tinymce.isOpera) DOM.setStyles(co, {left : -0xFFFF , top : -0xFFFF}); DOM.show(co); t.update(); x += s.offset_x || 0; y += s.offset_y || 0; vp.w -= 4; vp.h -= 4; // Move inside viewport if not submenu if (s.constrain) { w = co.clientWidth - ot; h = co.clientHeight - ot; mx = vp.x + vp.w; my = vp.y + vp.h; if ((x + s.vp_offset_x + w) > mx) x = px ? px - w : Math.max(0, (mx - s.vp_offset_x) - w); if ((y + s.vp_offset_y + h) > my) y = Math.max(0, (my - s.vp_offset_y) - h); } DOM.setStyles(co, {left : x , top : y}); t.element.update(); t.isMenuVisible = 1; t.mouseClickFunc = Event.add(co, 'click', function(e) { var m; e = e.target; if (e && (e = DOM.getParent(e, 'tr')) && !DOM.hasClass(e, cp + 'ItemSub')) { m = t.items[e.id]; if (m.isDisabled()) return; dm = t; while (dm) { if (dm.hideMenu) dm.hideMenu(); dm = dm.settings.parent; } if (m.settings.onclick) m.settings.onclick(e); return Event.cancel(e); // Cancel to fix onbeforeunload problem } }); if (t.hasMenus()) { t.mouseOverFunc = Event.add(co, 'mouseover', function(e) { var m, r, mi; e = e.target; if (e && (e = DOM.getParent(e, 'tr'))) { m = t.items[e.id]; if (t.lastMenu) t.lastMenu.collapse(1); if (m.isDisabled()) return; if (e && DOM.hasClass(e, cp + 'ItemSub')) { //p = DOM.getPos(s.container); r = DOM.getRect(e); m.showMenu((r.x + r.w - ot), r.y - ot, r.x); t.lastMenu = m; DOM.addClass(DOM.get(m.id).firstChild, cp + 'ItemActive'); } } }); } Event.add(co, 'keydown', t._keyHandler, t); t.onShowMenu.dispatch(t); if (s.keyboard_focus) { t._setupKeyboardNav(); } }, hideMenu : function(c) { var t = this, co = DOM.get('menu_' + t.id), e; if (!t.isMenuVisible) return; if (t.keyboardNav) t.keyboardNav.destroy(); Event.remove(co, 'mouseover', t.mouseOverFunc); Event.remove(co, 'click', t.mouseClickFunc); Event.remove(co, 'keydown', t._keyHandler); DOM.hide(co); t.isMenuVisible = 0; if (!c) t.collapse(1); if (t.element) t.element.hide(); if (e = DOM.get(t.id)) DOM.removeClass(e.firstChild, t.classPrefix + 'ItemActive'); t.onHideMenu.dispatch(t); }, add : function(o) { var t = this, co; o = t.parent(o); if (t.isRendered && (co = DOM.get('menu_' + t.id))) t._add(DOM.select('tbody', co)[0], o); return o; }, collapse : function(d) { this.parent(d); this.hideMenu(1); }, remove : function(o) { DOM.remove(o.id); this.destroy(); return this.parent(o); }, destroy : function() { var t = this, co = DOM.get('menu_' + t.id); if (t.keyboardNav) t.keyboardNav.destroy(); Event.remove(co, 'mouseover', t.mouseOverFunc); Event.remove(DOM.select('a', co), 'focus', t.mouseOverFunc); Event.remove(co, 'click', t.mouseClickFunc); Event.remove(co, 'keydown', t._keyHandler); if (t.element) t.element.remove(); DOM.remove(co); }, renderNode : function() { var t = this, s = t.settings, n, tb, co, w; w = DOM.create('div', {role: 'listbox', id : 'menu_' + t.id, 'class' : s['class'], 'style' : 'position:absolute;left:0;top:0;z-index:200000;outline:0'}); if (t.settings.parent) { DOM.setAttrib(w, 'aria-parent', 'menu_' + t.settings.parent.id); } co = DOM.add(w, 'div', {role: 'presentation', id : 'menu_' + t.id + '_co', 'class' : t.classPrefix + (s['class'] ? ' ' + s['class'] : '')}); t.element = new Element('menu_' + t.id, {blocker : 1, container : s.container}); if (s.menu_line) DOM.add(co, 'span', {'class' : t.classPrefix + 'Line'}); // n = DOM.add(co, 'div', {id : 'menu_' + t.id + '_co', 'class' : 'mceMenuContainer'}); n = DOM.add(co, 'table', {role: 'presentation', id : 'menu_' + t.id + '_tbl', border : 0, cellPadding : 0, cellSpacing : 0}); tb = DOM.add(n, 'tbody'); each(t.items, function(o) { t._add(tb, o); }); t.rendered = true; return w; }, // Internal functions _setupKeyboardNav : function(){ var contextMenu, menuItems, t=this; contextMenu = DOM.select('#menu_' + t.id)[0]; menuItems = DOM.select('a[role=option]', 'menu_' + t.id); menuItems.splice(0,0,contextMenu); t.keyboardNav = new tinymce.ui.KeyboardNavigation({ root: 'menu_' + t.id, items: menuItems, onCancel: function() { t.hideMenu(); }, enableUpDown: true }); contextMenu.focus(); }, _keyHandler : function(evt) { var t = this, e; switch (evt.keyCode) { case 37: // Left if (t.settings.parent) { t.hideMenu(); t.settings.parent.focus(); Event.cancel(evt); } break; case 39: // Right if (t.mouseOverFunc) t.mouseOverFunc(evt); break; } }, _add : function(tb, o) { var n, s = o.settings, a, ro, it, cp = this.classPrefix, ic; if (s.separator) { ro = DOM.add(tb, 'tr', {id : o.id, 'class' : cp + 'ItemSeparator'}); DOM.add(ro, 'td', {'class' : cp + 'ItemSeparator'}); if (n = ro.previousSibling) DOM.addClass(n, 'mceLast'); return; } n = ro = DOM.add(tb, 'tr', {id : o.id, 'class' : cp + 'Item ' + cp + 'ItemEnabled'}); n = it = DOM.add(n, s.titleItem ? 'th' : 'td'); n = a = DOM.add(n, 'a', {id: o.id + '_aria', role: s.titleItem ? 'presentation' : 'option', href : 'javascript:;', onclick : "return false;", onmousedown : 'return false;'}); if (s.parent) { DOM.setAttrib(a, 'aria-haspopup', 'true'); DOM.setAttrib(a, 'aria-owns', 'menu_' + o.id); } DOM.addClass(it, s['class']); // n = DOM.add(n, 'span', {'class' : 'item'}); ic = DOM.add(n, 'span', {'class' : 'mceIcon' + (s.icon ? ' mce_' + s.icon : '')}); if (s.icon_src) DOM.add(ic, 'img', {src : s.icon_src}); n = DOM.add(n, s.element || 'span', {'class' : 'mceText', title : o.settings.title}, o.settings.title); if (o.settings.style) DOM.setAttrib(n, 'style', o.settings.style); if (tb.childNodes.length == 1) DOM.addClass(ro, 'mceFirst'); if ((n = ro.previousSibling) && DOM.hasClass(n, cp + 'ItemSeparator')) DOM.addClass(ro, 'mceFirst'); if (o.collapse) DOM.addClass(ro, cp + 'ItemSub'); if (n = ro.previousSibling) DOM.removeClass(n, 'mceLast'); DOM.addClass(ro, 'mceLast'); } }); })(tinymce); (function(tinymce) { var DOM = tinymce.DOM; tinymce.create('tinymce.ui.Button:tinymce.ui.Control', { Button : function(id, s, ed) { this.parent(id, s, ed); this.classPrefix = 'mceButton'; }, renderHTML : function() { var cp = this.classPrefix, s = this.settings, h, l; l = DOM.encode(s.label || ''); h = ''; if (s.image && !(this.editor &&this.editor.forcedHighContrastMode) ) h += '' + DOM.encode(s.title) + '' + l; else h += '' + (l ? '' + l + '' : ''); h += ''; h += ''; return h; }, postRender : function() { var t = this, s = t.settings; tinymce.dom.Event.add(t.id, 'click', function(e) { if (!t.isDisabled()) return s.onclick.call(s.scope, e); }); } }); })(tinymce); (function(tinymce) { var DOM = tinymce.DOM, Event = tinymce.dom.Event, each = tinymce.each, Dispatcher = tinymce.util.Dispatcher; tinymce.create('tinymce.ui.ListBox:tinymce.ui.Control', { ListBox : function(id, s, ed) { var t = this; t.parent(id, s, ed); t.items = []; t.onChange = new Dispatcher(t); t.onPostRender = new Dispatcher(t); t.onAdd = new Dispatcher(t); t.onRenderMenu = new tinymce.util.Dispatcher(this); t.classPrefix = 'mceListBox'; }, select : function(va) { var t = this, fv, f; if (va == undefined) return t.selectByIndex(-1); // Is string or number make function selector if (va && va.call) f = va; else { f = function(v) { return v == va; }; } // Do we need to do something? if (va != t.selectedValue) { // Find item each(t.items, function(o, i) { if (f(o.value)) { fv = 1; t.selectByIndex(i); return false; } }); if (!fv) t.selectByIndex(-1); } }, selectByIndex : function(idx) { var t = this, e, o; if (idx != t.selectedIndex) { e = DOM.get(t.id + '_text'); o = t.items[idx]; if (o) { t.selectedValue = o.value; t.selectedIndex = idx; DOM.setHTML(e, DOM.encode(o.title)); DOM.removeClass(e, 'mceTitle'); DOM.setAttrib(t.id, 'aria-valuenow', o.title); } else { DOM.setHTML(e, DOM.encode(t.settings.title)); DOM.addClass(e, 'mceTitle'); t.selectedValue = t.selectedIndex = null; DOM.setAttrib(t.id, 'aria-valuenow', t.settings.title); } e = 0; } }, add : function(n, v, o) { var t = this; o = o || {}; o = tinymce.extend(o, { title : n, value : v }); t.items.push(o); t.onAdd.dispatch(t, o); }, getLength : function() { return this.items.length; }, renderHTML : function() { var h = '', t = this, s = t.settings, cp = t.classPrefix; h = ''; h += ''; h += ''; h += ''; return h; }, showMenu : function() { var t = this, p2, e = DOM.get(this.id), m; if (t.isDisabled() || t.items.length == 0) return; if (t.menu && t.menu.isMenuVisible) return t.hideMenu(); if (!t.isMenuRendered) { t.renderMenu(); t.isMenuRendered = true; } p2 = DOM.getPos(e); m = t.menu; m.settings.offset_x = p2.x; m.settings.offset_y = p2.y; m.settings.keyboard_focus = !tinymce.isOpera; // Opera is buggy when it comes to auto focus // Select in menu if (t.oldID) m.items[t.oldID].setSelected(0); each(t.items, function(o) { if (o.value === t.selectedValue) { m.items[o.id].setSelected(1); t.oldID = o.id; } }); m.showMenu(0, e.clientHeight); Event.add(DOM.doc, 'mousedown', t.hideMenu, t); DOM.addClass(t.id, t.classPrefix + 'Selected'); //DOM.get(t.id + '_text').focus(); }, hideMenu : function(e) { var t = this; if (t.menu && t.menu.isMenuVisible) { DOM.removeClass(t.id, t.classPrefix + 'Selected'); // Prevent double toogles by canceling the mouse click event to the button if (e && e.type == "mousedown" && (e.target.id == t.id + '_text' || e.target.id == t.id + '_open')) return; if (!e || !DOM.getParent(e.target, '.mceMenu')) { DOM.removeClass(t.id, t.classPrefix + 'Selected'); Event.remove(DOM.doc, 'mousedown', t.hideMenu, t); t.menu.hideMenu(); } } }, renderMenu : function() { var t = this, m; m = t.settings.control_manager.createDropMenu(t.id + '_menu', { menu_line : 1, 'class' : t.classPrefix + 'Menu mceNoIcons', max_width : 150, max_height : 150 }); m.onHideMenu.add(function() { t.hideMenu(); t.focus(); }); m.add({ title : t.settings.title, 'class' : 'mceMenuItemTitle', onclick : function() { if (t.settings.onselect('') !== false) t.select(''); // Must be runned after } }); each(t.items, function(o) { // No value then treat it as a title if (o.value === undefined) { m.add({ title : o.title, 'class' : 'mceMenuItemTitle', onclick : function() { if (t.settings.onselect('') !== false) t.select(''); // Must be runned after } }); } else { o.id = DOM.uniqueId(); o.onclick = function() { if (t.settings.onselect(o.value) !== false) t.select(o.value); // Must be runned after }; m.add(o); } }); t.onRenderMenu.dispatch(t, m); t.menu = m; }, postRender : function() { var t = this, cp = t.classPrefix; Event.add(t.id, 'click', t.showMenu, t); Event.add(t.id, 'keydown', function(evt) { if (evt.keyCode == 32) { // Space t.showMenu(evt); Event.cancel(evt); } }); Event.add(t.id, 'focus', function() { if (!t._focused) { t.keyDownHandler = Event.add(t.id, 'keydown', function(e) { if (e.keyCode == 40) { t.showMenu(); Event.cancel(e); } }); t.keyPressHandler = Event.add(t.id, 'keypress', function(e) { var v; if (e.keyCode == 13) { // Fake select on enter v = t.selectedValue; t.selectedValue = null; // Needs to be null to fake change Event.cancel(e); t.settings.onselect(v); } }); } t._focused = 1; }); Event.add(t.id, 'blur', function() { Event.remove(t.id, 'keydown', t.keyDownHandler); Event.remove(t.id, 'keypress', t.keyPressHandler); t._focused = 0; }); // Old IE doesn't have hover on all elements if (tinymce.isIE6 || !DOM.boxModel) { Event.add(t.id, 'mouseover', function() { if (!DOM.hasClass(t.id, cp + 'Disabled')) DOM.addClass(t.id, cp + 'Hover'); }); Event.add(t.id, 'mouseout', function() { if (!DOM.hasClass(t.id, cp + 'Disabled')) DOM.removeClass(t.id, cp + 'Hover'); }); } t.onPostRender.dispatch(t, DOM.get(t.id)); }, destroy : function() { this.parent(); Event.clear(this.id + '_text'); Event.clear(this.id + '_open'); } }); })(tinymce); (function(tinymce) { var DOM = tinymce.DOM, Event = tinymce.dom.Event, each = tinymce.each, Dispatcher = tinymce.util.Dispatcher; tinymce.create('tinymce.ui.NativeListBox:tinymce.ui.ListBox', { NativeListBox : function(id, s) { this.parent(id, s); this.classPrefix = 'mceNativeListBox'; }, setDisabled : function(s) { DOM.get(this.id).disabled = s; this.setAriaProperty('disabled', s); }, isDisabled : function() { return DOM.get(this.id).disabled; }, select : function(va) { var t = this, fv, f; if (va == undefined) return t.selectByIndex(-1); // Is string or number make function selector if (va && va.call) f = va; else { f = function(v) { return v == va; }; } // Do we need to do something? if (va != t.selectedValue) { // Find item each(t.items, function(o, i) { if (f(o.value)) { fv = 1; t.selectByIndex(i); return false; } }); if (!fv) t.selectByIndex(-1); } }, selectByIndex : function(idx) { DOM.get(this.id).selectedIndex = idx + 1; this.selectedValue = this.items[idx] ? this.items[idx].value : null; }, add : function(n, v, a) { var o, t = this; a = a || {}; a.value = v; if (t.isRendered()) DOM.add(DOM.get(this.id), 'option', a, n); o = { title : n, value : v, attribs : a }; t.items.push(o); t.onAdd.dispatch(t, o); }, getLength : function() { return this.items.length; }, renderHTML : function() { var h, t = this; h = DOM.createHTML('option', {value : ''}, '-- ' + t.settings.title + ' --'); each(t.items, function(it) { h += DOM.createHTML('option', {value : it.value}, it.title); }); h = DOM.createHTML('select', {id : t.id, 'class' : 'mceNativeListBox', 'aria-labelledby': t.id + '_aria'}, h); h += DOM.createHTML('span', {id : t.id + '_aria', 'style': 'display: none'}, t.settings.title); return h; }, postRender : function() { var t = this, ch, changeListenerAdded = true; t.rendered = true; function onChange(e) { var v = t.items[e.target.selectedIndex - 1]; if (v && (v = v.value)) { t.onChange.dispatch(t, v); if (t.settings.onselect) t.settings.onselect(v); } }; Event.add(t.id, 'change', onChange); // Accessibility keyhandler Event.add(t.id, 'keydown', function(e) { var bf; Event.remove(t.id, 'change', ch); changeListenerAdded = false; bf = Event.add(t.id, 'blur', function() { if (changeListenerAdded) return; changeListenerAdded = true; Event.add(t.id, 'change', onChange); Event.remove(t.id, 'blur', bf); }); //prevent default left and right keys on chrome - so that the keyboard navigation is used. if (tinymce.isWebKit && (e.keyCode==37 ||e.keyCode==39)) { return Event.prevent(e); } if (e.keyCode == 13 || e.keyCode == 32) { onChange(e); return Event.cancel(e); } }); t.onPostRender.dispatch(t, DOM.get(t.id)); } }); })(tinymce); (function(tinymce) { var DOM = tinymce.DOM, Event = tinymce.dom.Event, each = tinymce.each; tinymce.create('tinymce.ui.MenuButton:tinymce.ui.Button', { MenuButton : function(id, s, ed) { this.parent(id, s, ed); this.onRenderMenu = new tinymce.util.Dispatcher(this); s.menu_container = s.menu_container || DOM.doc.body; }, showMenu : function() { var t = this, p1, p2, e = DOM.get(t.id), m; if (t.isDisabled()) return; if (!t.isMenuRendered) { t.renderMenu(); t.isMenuRendered = true; } if (t.isMenuVisible) return t.hideMenu(); p1 = DOM.getPos(t.settings.menu_container); p2 = DOM.getPos(e); m = t.menu; m.settings.offset_x = p2.x; m.settings.offset_y = p2.y; m.settings.vp_offset_x = p2.x; m.settings.vp_offset_y = p2.y; m.settings.keyboard_focus = t._focused; m.showMenu(0, e.clientHeight); Event.add(DOM.doc, 'mousedown', t.hideMenu, t); t.setState('Selected', 1); t.isMenuVisible = 1; }, renderMenu : function() { var t = this, m; m = t.settings.control_manager.createDropMenu(t.id + '_menu', { menu_line : 1, 'class' : this.classPrefix + 'Menu', icons : t.settings.icons }); m.onHideMenu.add(function() { t.hideMenu(); t.focus(); }); t.onRenderMenu.dispatch(t, m); t.menu = m; }, hideMenu : function(e) { var t = this; // Prevent double toogles by canceling the mouse click event to the button if (e && e.type == "mousedown" && DOM.getParent(e.target, function(e) {return e.id === t.id || e.id === t.id + '_open';})) return; if (!e || !DOM.getParent(e.target, '.mceMenu')) { t.setState('Selected', 0); Event.remove(DOM.doc, 'mousedown', t.hideMenu, t); if (t.menu) t.menu.hideMenu(); } t.isMenuVisible = 0; }, postRender : function() { var t = this, s = t.settings; Event.add(t.id, 'click', function() { if (!t.isDisabled()) { if (s.onclick) s.onclick(t.value); t.showMenu(); } }); } }); })(tinymce); (function(tinymce) { var DOM = tinymce.DOM, Event = tinymce.dom.Event, each = tinymce.each; tinymce.create('tinymce.ui.SplitButton:tinymce.ui.MenuButton', { SplitButton : function(id, s, ed) { this.parent(id, s, ed); this.classPrefix = 'mceSplitButton'; }, renderHTML : function() { var h, t = this, s = t.settings, h1; h = ''; if (s.image) h1 = DOM.createHTML('img ', {src : s.image, role: 'presentation', 'class' : 'mceAction ' + s['class']}); else h1 = DOM.createHTML('span', {'class' : 'mceAction ' + s['class']}, ''); h1 += DOM.createHTML('span', {'class': 'mceVoiceLabel mceIconOnly', id: t.id + '_voice', style: 'display:none;'}, s.title); h += '' + DOM.createHTML('a', {role: 'button', id : t.id + '_action', tabindex: '-1', href : 'javascript:;', 'class' : 'mceAction ' + s['class'], onclick : "return false;", onmousedown : 'return false;', title : s.title}, h1) + ''; h1 = DOM.createHTML('span', {'class' : 'mceOpen ' + s['class']}, ''); h += '' + DOM.createHTML('a', {role: 'button', id : t.id + '_open', tabindex: '-1', href : 'javascript:;', 'class' : 'mceOpen ' + s['class'], onclick : "return false;", onmousedown : 'return false;', title : s.title}, h1) + ''; h += ''; h = DOM.createHTML('table', {id : t.id, role: 'presentation', tabindex: '0', 'class' : 'mceSplitButton mceSplitButtonEnabled ' + s['class'], cellpadding : '0', cellspacing : '0', title : s.title}, h); return DOM.createHTML('span', {role: 'button', 'aria-labelledby': t.id + '_voice', 'aria-haspopup': 'true'}, h); }, postRender : function() { var t = this, s = t.settings, activate; if (s.onclick) { activate = function(evt) { if (!t.isDisabled()) { s.onclick(t.value); Event.cancel(evt); } }; Event.add(t.id + '_action', 'click', activate); Event.add(t.id, ['click', 'keydown'], function(evt) { var DOM_VK_SPACE = 32, DOM_VK_ENTER = 14, DOM_VK_RETURN = 13, DOM_VK_UP = 38, DOM_VK_DOWN = 40; if ((evt.keyCode === 32 || evt.keyCode === 13 || evt.keyCode === 14) && !evt.altKey && !evt.ctrlKey && !evt.metaKey) { activate(); Event.cancel(evt); } else if (evt.type === 'click' || evt.keyCode === DOM_VK_DOWN) { t.showMenu(); Event.cancel(evt); } }); } Event.add(t.id + '_open', 'click', function (evt) { t.showMenu(); Event.cancel(evt); }); Event.add([t.id, t.id + '_open'], 'focus', function() {t._focused = 1;}); Event.add([t.id, t.id + '_open'], 'blur', function() {t._focused = 0;}); // Old IE doesn't have hover on all elements if (tinymce.isIE6 || !DOM.boxModel) { Event.add(t.id, 'mouseover', function() { if (!DOM.hasClass(t.id, 'mceSplitButtonDisabled')) DOM.addClass(t.id, 'mceSplitButtonHover'); }); Event.add(t.id, 'mouseout', function() { if (!DOM.hasClass(t.id, 'mceSplitButtonDisabled')) DOM.removeClass(t.id, 'mceSplitButtonHover'); }); } }, destroy : function() { this.parent(); Event.clear(this.id + '_action'); Event.clear(this.id + '_open'); Event.clear(this.id); } }); })(tinymce); (function(tinymce) { var DOM = tinymce.DOM, Event = tinymce.dom.Event, is = tinymce.is, each = tinymce.each; tinymce.create('tinymce.ui.ColorSplitButton:tinymce.ui.SplitButton', { ColorSplitButton : function(id, s, ed) { var t = this; t.parent(id, s, ed); t.settings = s = tinymce.extend({ colors : '000000,993300,333300,003300,003366,000080,333399,333333,800000,FF6600,808000,008000,008080,0000FF,666699,808080,FF0000,FF9900,99CC00,339966,33CCCC,3366FF,800080,999999,FF00FF,FFCC00,FFFF00,00FF00,00FFFF,00CCFF,993366,C0C0C0,FF99CC,FFCC99,FFFF99,CCFFCC,CCFFFF,99CCFF,CC99FF,FFFFFF', grid_width : 8, default_color : '#888888' }, t.settings); t.onShowMenu = new tinymce.util.Dispatcher(t); t.onHideMenu = new tinymce.util.Dispatcher(t); t.value = s.default_color; }, showMenu : function() { var t = this, r, p, e, p2; if (t.isDisabled()) return; if (!t.isMenuRendered) { t.renderMenu(); t.isMenuRendered = true; } if (t.isMenuVisible) return t.hideMenu(); e = DOM.get(t.id); DOM.show(t.id + '_menu'); DOM.addClass(e, 'mceSplitButtonSelected'); p2 = DOM.getPos(e); DOM.setStyles(t.id + '_menu', { left : p2.x, top : p2.y + e.clientHeight, zIndex : 200000 }); e = 0; Event.add(DOM.doc, 'mousedown', t.hideMenu, t); t.onShowMenu.dispatch(t); if (t._focused) { t._keyHandler = Event.add(t.id + '_menu', 'keydown', function(e) { if (e.keyCode == 27) t.hideMenu(); }); DOM.select('a', t.id + '_menu')[0].focus(); // Select first link } t.isMenuVisible = 1; }, hideMenu : function(e) { var t = this; if (t.isMenuVisible) { // Prevent double toogles by canceling the mouse click event to the button if (e && e.type == "mousedown" && DOM.getParent(e.target, function(e) {return e.id === t.id + '_open';})) return; if (!e || !DOM.getParent(e.target, '.mceSplitButtonMenu')) { DOM.removeClass(t.id, 'mceSplitButtonSelected'); Event.remove(DOM.doc, 'mousedown', t.hideMenu, t); Event.remove(t.id + '_menu', 'keydown', t._keyHandler); DOM.hide(t.id + '_menu'); } t.isMenuVisible = 0; t.onHideMenu.dispatch(); } }, renderMenu : function() { var t = this, m, i = 0, s = t.settings, n, tb, tr, w, context; w = DOM.add(s.menu_container, 'div', {role: 'listbox', id : t.id + '_menu', 'class' : s['menu_class'] + ' ' + s['class'], style : 'position:absolute;left:0;top:-1000px;'}); m = DOM.add(w, 'div', {'class' : s['class'] + ' mceSplitButtonMenu'}); DOM.add(m, 'span', {'class' : 'mceMenuLine'}); n = DOM.add(m, 'table', {role: 'presentation', 'class' : 'mceColorSplitMenu'}); tb = DOM.add(n, 'tbody'); // Generate color grid i = 0; each(is(s.colors, 'array') ? s.colors : s.colors.split(','), function(c) { c = c.replace(/^#/, ''); if (!i--) { tr = DOM.add(tb, 'tr'); i = s.grid_width - 1; } n = DOM.add(tr, 'td'); n = DOM.add(n, 'a', { role : 'option', href : 'javascript:;', style : { backgroundColor : '#' + c }, 'title': t.editor.getLang('colors.' + c, c), 'data-mce-color' : '#' + c }); if (t.editor.forcedHighContrastMode) { n = DOM.add(n, 'canvas', { width: 16, height: 16, 'aria-hidden': 'true' }); if (n.getContext && (context = n.getContext("2d"))) { context.fillStyle = '#' + c; context.fillRect(0, 0, 16, 16); } else { // No point leaving a canvas element around if it's not supported for drawing on anyway. DOM.remove(n); } } }); if (s.more_colors_func) { n = DOM.add(tb, 'tr'); n = DOM.add(n, 'td', {colspan : s.grid_width, 'class' : 'mceMoreColors'}); n = DOM.add(n, 'a', {role: 'option', id : t.id + '_more', href : 'javascript:;', onclick : 'return false;', 'class' : 'mceMoreColors'}, s.more_colors_title); Event.add(n, 'click', function(e) { s.more_colors_func.call(s.more_colors_scope || this); return Event.cancel(e); // Cancel to fix onbeforeunload problem }); } DOM.addClass(m, 'mceColorSplitMenu'); new tinymce.ui.KeyboardNavigation({ root: t.id + '_menu', items: DOM.select('a', t.id + '_menu'), onCancel: function() { t.hideMenu(); t.focus(); } }); // Prevent IE from scrolling and hindering click to occur #4019 Event.add(t.id + '_menu', 'mousedown', function(e) {return Event.cancel(e);}); Event.add(t.id + '_menu', 'click', function(e) { var c; e = DOM.getParent(e.target, 'a', tb); if (e && e.nodeName.toLowerCase() == 'a' && (c = e.getAttribute('data-mce-color'))) t.setColor(c); return Event.cancel(e); // Prevent IE auto save warning }); return w; }, setColor : function(c) { this.displayColor(c); this.hideMenu(); this.settings.onselect(c); }, displayColor : function(c) { var t = this; DOM.setStyle(t.id + '_preview', 'backgroundColor', c); t.value = c; }, postRender : function() { var t = this, id = t.id; t.parent(); DOM.add(id + '_action', 'div', {id : id + '_preview', 'class' : 'mceColorPreview'}); DOM.setStyle(t.id + '_preview', 'backgroundColor', t.value); }, destroy : function() { this.parent(); Event.clear(this.id + '_menu'); Event.clear(this.id + '_more'); DOM.remove(this.id + '_menu'); } }); })(tinymce); (function(tinymce) { // Shorten class names var dom = tinymce.DOM, each = tinymce.each, Event = tinymce.dom.Event; tinymce.create('tinymce.ui.ToolbarGroup:tinymce.ui.Container', { renderHTML : function() { var t = this, h = [], controls = t.controls, each = tinymce.each, settings = t.settings; h.push('
    '); //TODO: ACC test this out - adding a role = application for getting the landmarks working well. h.push(""); h.push(''); each(controls, function(toolbar) { h.push(toolbar.renderHTML()); }); h.push(""); h.push('
    '); return h.join(''); }, focus : function() { this.keyNav.focus(); }, postRender : function() { var t = this, items = []; each(t.controls, function(toolbar) { each (toolbar.controls, function(control) { if (control.id) { items.push(control); } }); }); t.keyNav = new tinymce.ui.KeyboardNavigation({ root: t.id, items: items, onCancel: function() { t.editor.focus(); }, excludeFromTabOrder: !t.settings.tab_focus_toolbar }); }, destroy : function() { var self = this; self.parent(); self.keyNav.destroy(); Event.clear(self.id); } }); })(tinymce); (function(tinymce) { // Shorten class names var dom = tinymce.DOM, each = tinymce.each; tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', { renderHTML : function() { var t = this, h = '', c, co, s = t.settings, i, pr, nx, cl; cl = t.controls; for (i=0; i')); } // Add toolbar end before list box and after the previous button // This is to fix the o2k7 editor skins if (pr && co.ListBox) { if (pr.Button || pr.SplitButton) h += dom.createHTML('td', {'class' : 'mceToolbarEnd'}, dom.createHTML('span', null, '')); } // Render control HTML // IE 8 quick fix, needed to propertly generate a hit area for anchors if (dom.stdMode) h += '' + co.renderHTML() + ''; else h += '' + co.renderHTML() + ''; // Add toolbar start after list box and before the next button // This is to fix the o2k7 editor skins if (nx && co.ListBox) { if (nx.Button || nx.SplitButton) h += dom.createHTML('td', {'class' : 'mceToolbarStart'}, dom.createHTML('span', null, '')); } } c = 'mceToolbarEnd'; if (co.Button) c += ' mceToolbarEndButton'; else if (co.SplitButton) c += ' mceToolbarEndSplitButton'; else if (co.ListBox) c += ' mceToolbarEndListBox'; h += dom.createHTML('td', {'class' : c}, dom.createHTML('span', null, '')); return dom.createHTML('table', {id : t.id, 'class' : 'mceToolbar' + (s['class'] ? ' ' + s['class'] : ''), cellpadding : '0', cellspacing : '0', align : t.settings.align || '', role: 'presentation', tabindex: '-1'}, '' + h + ''); } }); })(tinymce); (function(tinymce) { var Dispatcher = tinymce.util.Dispatcher, each = tinymce.each; tinymce.create('tinymce.AddOnManager', { AddOnManager : function() { var self = this; self.items = []; self.urls = {}; self.lookup = {}; self.onAdd = new Dispatcher(self); }, get : function(n) { if (this.lookup[n]) { return this.lookup[n].instance; } else { return undefined; } }, dependencies : function(n) { var result; if (this.lookup[n]) { result = this.lookup[n].dependencies; } return result || []; }, requireLangPack : function(n) { var s = tinymce.settings; if (s && s.language && s.language_load !== false) tinymce.ScriptLoader.add(this.urls[n] + '/langs/' + s.language + '.js'); }, add : function(id, o, dependencies) { this.items.push(o); this.lookup[id] = {instance:o, dependencies:dependencies}; this.onAdd.dispatch(this, id, o); return o; }, createUrl: function(baseUrl, dep) { if (typeof dep === "object") { return dep } else { return {prefix: baseUrl.prefix, resource: dep, suffix: baseUrl.suffix}; } }, addComponents: function(pluginName, scripts) { var pluginUrl = this.urls[pluginName]; tinymce.each(scripts, function(script){ tinymce.ScriptLoader.add(pluginUrl+"/"+script); }); }, load : function(n, u, cb, s) { var t = this, url = u; function loadDependencies() { var dependencies = t.dependencies(n); tinymce.each(dependencies, function(dep) { var newUrl = t.createUrl(u, dep); t.load(newUrl.resource, newUrl, undefined, undefined); }); if (cb) { if (s) { cb.call(s); } else { cb.call(tinymce.ScriptLoader); } } } if (t.urls[n]) return; if (typeof u === "object") url = u.prefix + u.resource + u.suffix; if (url.indexOf('/') != 0 && url.indexOf('://') == -1) url = tinymce.baseURL + '/' + url; t.urls[n] = url.substring(0, url.lastIndexOf('/')); if (t.lookup[n]) { loadDependencies(); } else { tinymce.ScriptLoader.add(url, loadDependencies, s); } } }); // Create plugin and theme managers tinymce.PluginManager = new tinymce.AddOnManager(); tinymce.ThemeManager = new tinymce.AddOnManager(); }(tinymce)); (function(tinymce) { // Shorten names var each = tinymce.each, extend = tinymce.extend, DOM = tinymce.DOM, Event = tinymce.dom.Event, ThemeManager = tinymce.ThemeManager, PluginManager = tinymce.PluginManager, explode = tinymce.explode, Dispatcher = tinymce.util.Dispatcher, undefined, instanceCounter = 0; // Setup some URLs where the editor API is located and where the document is tinymce.documentBaseURL = window.location.href.replace(/[\?#].*$/, '').replace(/[\/\\][^\/]+$/, ''); if (!/[\/\\]$/.test(tinymce.documentBaseURL)) tinymce.documentBaseURL += '/'; tinymce.baseURL = new tinymce.util.URI(tinymce.documentBaseURL).toAbsolute(tinymce.baseURL); tinymce.baseURI = new tinymce.util.URI(tinymce.baseURL); // Add before unload listener // This was required since IE was leaking memory if you added and removed beforeunload listeners // with attachEvent/detatchEvent so this only adds one listener and instances can the attach to the onBeforeUnload event tinymce.onBeforeUnload = new Dispatcher(tinymce); // Must be on window or IE will leak if the editor is placed in frame or iframe Event.add(window, 'beforeunload', function(e) { tinymce.onBeforeUnload.dispatch(tinymce, e); }); tinymce.onAddEditor = new Dispatcher(tinymce); tinymce.onRemoveEditor = new Dispatcher(tinymce); tinymce.EditorManager = extend(tinymce, { editors : [], i18n : {}, activeEditor : null, init : function(s) { var t = this, pl, sl = tinymce.ScriptLoader, e, el = [], ed; function execCallback(se, n, s) { var f = se[n]; if (!f) return; if (tinymce.is(f, 'string')) { s = f.replace(/\.\w+$/, ''); s = s ? tinymce.resolve(s) : 0; f = tinymce.resolve(f); } return f.apply(s || this, Array.prototype.slice.call(arguments, 2)); }; s = extend({ theme : "simple", language : "en" }, s); t.settings = s; // Legacy call Event.add(document, 'init', function() { var l, co; execCallback(s, 'onpageload'); switch (s.mode) { case "exact": l = s.elements || ''; if(l.length > 0) { each(explode(l), function(v) { if (DOM.get(v)) { ed = new tinymce.Editor(v, s); el.push(ed); ed.render(1); } else { each(document.forms, function(f) { each(f.elements, function(e) { if (e.name === v) { v = 'mce_editor_' + instanceCounter++; DOM.setAttrib(e, 'id', v); ed = new tinymce.Editor(v, s); el.push(ed); ed.render(1); } }); }); } }); } break; case "textareas": case "specific_textareas": function hasClass(n, c) { return c.constructor === RegExp ? c.test(n.className) : DOM.hasClass(n, c); }; each(DOM.select('textarea'), function(v) { if (s.editor_deselector && hasClass(v, s.editor_deselector)) return; if (!s.editor_selector || hasClass(v, s.editor_selector)) { // Can we use the name e = DOM.get(v.name); if (!v.id && !e) v.id = v.name; // Generate unique name if missing or already exists if (!v.id || t.get(v.id)) v.id = DOM.uniqueId(); ed = new tinymce.Editor(v.id, s); el.push(ed); ed.render(1); } }); break; } // Call onInit when all editors are initialized if (s.oninit) { l = co = 0; each(el, function(ed) { co++; if (!ed.initialized) { // Wait for it ed.onInit.add(function() { l++; // All done if (l == co) execCallback(s, 'oninit'); }); } else l++; // All done if (l == co) execCallback(s, 'oninit'); }); } }); }, get : function(id) { if (id === undefined) return this.editors; return this.editors[id]; }, getInstanceById : function(id) { return this.get(id); }, add : function(editor) { var self = this, editors = self.editors; // Add named and index editor instance editors[editor.id] = editor; editors.push(editor); self._setActive(editor); self.onAddEditor.dispatch(self, editor); return editor; }, remove : function(editor) { var t = this, i, editors = t.editors; // Not in the collection if (!editors[editor.id]) return null; delete editors[editor.id]; for (i = 0; i < editors.length; i++) { if (editors[i] == editor) { editors.splice(i, 1); break; } } // Select another editor since the active one was removed if (t.activeEditor == editor) t._setActive(editors[0]); editor.destroy(); t.onRemoveEditor.dispatch(t, editor); return editor; }, execCommand : function(c, u, v) { var t = this, ed = t.get(v), w; // Manager commands switch (c) { case "mceFocus": ed.focus(); return true; case "mceAddEditor": case "mceAddControl": if (!t.get(v)) new tinymce.Editor(v, t.settings).render(); return true; case "mceAddFrameControl": w = v.window; // Add tinyMCE global instance and tinymce namespace to specified window w.tinyMCE = tinyMCE; w.tinymce = tinymce; tinymce.DOM.doc = w.document; tinymce.DOM.win = w; ed = new tinymce.Editor(v.element_id, v); ed.render(); // Fix IE memory leaks if (tinymce.isIE) { function clr() { ed.destroy(); w.detachEvent('onunload', clr); w = w.tinyMCE = w.tinymce = null; // IE leak }; w.attachEvent('onunload', clr); } v.page_window = null; return true; case "mceRemoveEditor": case "mceRemoveControl": if (ed) ed.remove(); return true; case 'mceToggleEditor': if (!ed) { t.execCommand('mceAddControl', 0, v); return true; } if (ed.isHidden()) ed.show(); else ed.hide(); return true; } // Run command on active editor if (t.activeEditor) return t.activeEditor.execCommand(c, u, v); return false; }, execInstanceCommand : function(id, c, u, v) { var ed = this.get(id); if (ed) return ed.execCommand(c, u, v); return false; }, triggerSave : function() { each(this.editors, function(e) { e.save(); }); }, addI18n : function(p, o) { var lo, i18n = this.i18n; if (!tinymce.is(p, 'string')) { each(p, function(o, lc) { each(o, function(o, g) { each(o, function(o, k) { if (g === 'common') i18n[lc + '.' + k] = o; else i18n[lc + '.' + g + '.' + k] = o; }); }); }); } else { each(o, function(o, k) { i18n[p + '.' + k] = o; }); } }, // Private methods _setActive : function(editor) { this.selectedInstance = this.activeEditor = editor; } }); })(tinymce); (function(tinymce) { // Shorten these names var DOM = tinymce.DOM, Event = tinymce.dom.Event, extend = tinymce.extend, Dispatcher = tinymce.util.Dispatcher, each = tinymce.each, isGecko = tinymce.isGecko, isIE = tinymce.isIE, isWebKit = tinymce.isWebKit, is = tinymce.is, ThemeManager = tinymce.ThemeManager, PluginManager = tinymce.PluginManager, inArray = tinymce.inArray, grep = tinymce.grep, explode = tinymce.explode; tinymce.create('tinymce.Editor', { Editor : function(id, s) { var t = this; t.id = t.editorId = id; t.execCommands = {}; t.queryStateCommands = {}; t.queryValueCommands = {}; t.isNotDirty = false; t.plugins = {}; // Add events to the editor each([ 'onPreInit', 'onBeforeRenderUI', 'onPostRender', 'onInit', 'onRemove', 'onActivate', 'onDeactivate', 'onClick', 'onEvent', 'onMouseUp', 'onMouseDown', 'onDblClick', 'onKeyDown', 'onKeyUp', 'onKeyPress', 'onContextMenu', 'onSubmit', 'onReset', 'onPaste', 'onPreProcess', 'onPostProcess', 'onBeforeSetContent', 'onBeforeGetContent', 'onSetContent', 'onGetContent', 'onLoadContent', 'onSaveContent', 'onNodeChange', 'onChange', 'onBeforeExecCommand', 'onExecCommand', 'onUndo', 'onRedo', 'onVisualAid', 'onSetProgressState' ], function(e) { t[e] = new Dispatcher(t); }); t.settings = s = extend({ id : id, language : 'en', docs_language : 'en', theme : 'simple', skin : 'default', delta_width : 0, delta_height : 0, popup_css : '', plugins : '', document_base_url : tinymce.documentBaseURL, add_form_submit_trigger : 1, submit_patch : 1, add_unload_trigger : 1, convert_urls : 1, relative_urls : 1, remove_script_host : 1, table_inline_editing : 0, object_resizing : 1, cleanup : 1, accessibility_focus : 1, custom_shortcuts : 1, custom_undo_redo_keyboard_shortcuts : 1, custom_undo_redo_restore_selection : 1, custom_undo_redo : 1, doctype : tinymce.isIE6 ? '' : '', // Use old doctype on IE 6 to avoid horizontal scroll visual_table_class : 'mceItemTable', visual : 1, font_size_style_values : 'xx-small,x-small,small,medium,large,x-large,xx-large', apply_source_formatting : 1, directionality : 'ltr', forced_root_block : 'p', hidden_input : 1, padd_empty_editor : 1, render_ui : 1, init_theme : 1, force_p_newlines : 1, indentation : '30px', keep_styles : 1, fix_table_elements : 1, inline_styles : 1, convert_fonts_to_spans : true, indent : 'simple', indent_before : 'p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,ul,li,area,table,thead,tfoot,tbody,tr', indent_after : 'p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,ul,li,area,table,thead,tfoot,tbody,tr', validate : true, entity_encoding : 'named', url_converter : t.convertURL, url_converter_scope : t, ie7_compat : true }, s); t.documentBaseURI = new tinymce.util.URI(s.document_base_url || tinymce.documentBaseURL, { base_uri : tinyMCE.baseURI }); t.baseURI = tinymce.baseURI; t.contentCSS = []; // Call setup t.execCallback('setup', t); }, render : function(nst) { var t = this, s = t.settings, id = t.id, sl = tinymce.ScriptLoader; // Page is not loaded yet, wait for it if (!Event.domLoaded) { Event.add(document, 'init', function() { t.render(); }); return; } tinyMCE.settings = s; // Element not found, then skip initialization if (!t.getElement()) return; // Is a iPad/iPhone and not on iOS5, then skip initialization. We need to sniff // here since the browser says it has contentEditable support but there is no visible // caret We will remove this check ones Apple implements full contentEditable support if (tinymce.isIDevice && !tinymce.isIOS5) return; // Add hidden input for non input elements inside form elements if (!/TEXTAREA|INPUT/i.test(t.getElement().nodeName) && s.hidden_input && DOM.getParent(id, 'form')) DOM.insertAfter(DOM.create('input', {type : 'hidden', name : id}), id); if (tinymce.WindowManager) t.windowManager = new tinymce.WindowManager(t); if (s.encoding == 'xml') { t.onGetContent.add(function(ed, o) { if (o.save) o.content = DOM.encode(o.content); }); } if (s.add_form_submit_trigger) { t.onSubmit.addToTop(function() { if (t.initialized) { t.save(); t.isNotDirty = 1; } }); } if (s.add_unload_trigger) { t._beforeUnload = tinyMCE.onBeforeUnload.add(function() { if (t.initialized && !t.destroyed && !t.isHidden()) t.save({format : 'raw', no_events : true}); }); } tinymce.addUnload(t.destroy, t); if (s.submit_patch) { t.onBeforeRenderUI.add(function() { var n = t.getElement().form; if (!n) return; // Already patched if (n._mceOldSubmit) return; // Check page uses id="submit" or name="submit" for it's submit button if (!n.submit.nodeType && !n.submit.length) { t.formElement = n; n._mceOldSubmit = n.submit; n.submit = function() { // Save all instances tinymce.triggerSave(); t.isNotDirty = 1; return t.formElement._mceOldSubmit(t.formElement); }; } n = null; }); } // Load scripts function loadScripts() { if (s.language && s.language_load !== false) sl.add(tinymce.baseURL + '/langs/' + s.language + '.js'); if (s.theme && s.theme.charAt(0) != '-' && !ThemeManager.urls[s.theme]) ThemeManager.load(s.theme, 'themes/' + s.theme + '/editor_template' + tinymce.suffix + '.js'); each(explode(s.plugins), function(p) { if (p &&!PluginManager.urls[p]) { if (p.charAt(0) == '-') { p = p.substr(1, p.length); var dependencies = PluginManager.dependencies(p); each(dependencies, function(dep) { var defaultSettings = {prefix:'plugins/', resource: dep, suffix:'/editor_plugin' + tinymce.suffix + '.js'}; var dep = PluginManager.createUrl(defaultSettings, dep); PluginManager.load(dep.resource, dep); }); } else { // Skip safari plugin, since it is removed as of 3.3b1 if (p == 'safari') { return; } PluginManager.load(p, {prefix:'plugins/', resource: p, suffix:'/editor_plugin' + tinymce.suffix + '.js'}); } } }); // Init when que is loaded sl.loadQueue(function() { if (!t.removed) t.init(); }); }; loadScripts(); }, init : function() { var n, t = this, s = t.settings, w, h, e = t.getElement(), o, ti, u, bi, bc, re, i, initializedPlugins = []; tinymce.add(t); s.aria_label = s.aria_label || DOM.getAttrib(e, 'aria-label', t.getLang('aria.rich_text_area')); if (s.theme) { s.theme = s.theme.replace(/-/, ''); o = ThemeManager.get(s.theme); t.theme = new o(); if (t.theme.init && s.init_theme) t.theme.init(t, ThemeManager.urls[s.theme] || tinymce.documentBaseURL.replace(/\/$/, '')); } function initPlugin(p) { var c = PluginManager.get(p), u = PluginManager.urls[p] || tinymce.documentBaseURL.replace(/\/$/, ''), po; if (c && tinymce.inArray(initializedPlugins,p) === -1) { each(PluginManager.dependencies(p), function(dep){ initPlugin(dep); }); po = new c(t, u); t.plugins[p] = po; if (po.init) { po.init(t, u); initializedPlugins.push(p); } } } // Create all plugins each(explode(s.plugins.replace(/\-/g, '')), initPlugin); // Setup popup CSS path(s) if (s.popup_css !== false) { if (s.popup_css) s.popup_css = t.documentBaseURI.toAbsolute(s.popup_css); else s.popup_css = t.baseURI.toAbsolute("themes/" + s.theme + "/skins/" + s.skin + "/dialog.css"); } if (s.popup_css_add) s.popup_css += ',' + t.documentBaseURI.toAbsolute(s.popup_css_add); t.controlManager = new tinymce.ControlManager(t); if (s.custom_undo_redo) { t.onBeforeExecCommand.add(function(ed, cmd, ui, val, a) { if (cmd != 'Undo' && cmd != 'Redo' && cmd != 'mceRepaint' && (!a || !a.skip_undo)) t.undoManager.beforeChange(); }); t.onExecCommand.add(function(ed, cmd, ui, val, a) { if (cmd != 'Undo' && cmd != 'Redo' && cmd != 'mceRepaint' && (!a || !a.skip_undo)) t.undoManager.add(); }); } t.onExecCommand.add(function(ed, c) { // Don't refresh the select lists until caret move if (!/^(FontName|FontSize)$/.test(c)) t.nodeChanged(); }); // Remove ghost selections on images and tables in Gecko if (isGecko) { function repaint(a, o) { if (!o || !o.initial) t.execCommand('mceRepaint'); }; t.onUndo.add(repaint); t.onRedo.add(repaint); t.onSetContent.add(repaint); } // Enables users to override the control factory t.onBeforeRenderUI.dispatch(t, t.controlManager); // Measure box if (s.render_ui) { w = s.width || e.style.width || e.offsetWidth; h = s.height || e.style.height || e.offsetHeight; t.orgDisplay = e.style.display; re = /^[0-9\.]+(|px)$/i; if (re.test('' + w)) w = Math.max(parseInt(w) + (o.deltaWidth || 0), 100); if (re.test('' + h)) h = Math.max(parseInt(h) + (o.deltaHeight || 0), 100); // Render UI o = t.theme.renderUI({ targetNode : e, width : w, height : h, deltaWidth : s.delta_width, deltaHeight : s.delta_height }); t.editorContainer = o.editorContainer; } // User specified a document.domain value if (document.domain && location.hostname != document.domain) tinymce.relaxedDomain = document.domain; // Resize editor DOM.setStyles(o.sizeContainer || o.editorContainer, { width : w, height : h }); // Load specified content CSS last if (s.content_css) { tinymce.each(explode(s.content_css), function(u) { t.contentCSS.push(t.documentBaseURI.toAbsolute(u)); }); } h = (o.iframeHeight || h) + (typeof(h) == 'number' ? (o.deltaHeight || 0) : ''); if (h < 100) h = 100; t.iframeHTML = s.doctype + ''; // We only need to override paths if we have to // IE has a bug where it remove site absolute urls to relative ones if this is specified if (s.document_base_url != tinymce.documentBaseURL) t.iframeHTML += ''; // IE8 doesn't support carets behind images setting ie7_compat would force IE8+ to run in IE7 compat mode. if (s.ie7_compat) t.iframeHTML += ''; else t.iframeHTML += ''; t.iframeHTML += ''; bi = s.body_id || 'tinymce'; if (bi.indexOf('=') != -1) { bi = t.getParam('body_id', '', 'hash'); bi = bi[t.id] || bi; } bc = s.body_class || ''; if (bc.indexOf('=') != -1) { bc = t.getParam('body_class', '', 'hash'); bc = bc[t.id] || ''; } t.iframeHTML += '
    '; // Domain relaxing enabled, then set document domain if (tinymce.relaxedDomain && (isIE || (tinymce.isOpera && parseFloat(opera.version()) < 11))) { // We need to write the contents here in IE since multiple writes messes up refresh button and back button u = 'javascript:(function(){document.open();document.domain="' + document.domain + '";var ed = window.parent.tinyMCE.get("' + t.id + '");document.write(ed.iframeHTML);document.close();ed.setupIframe();})()'; } // Create iframe // TODO: ACC add the appropriate description on this. n = DOM.add(o.iframeContainer, 'iframe', { id : t.id + "_ifr", src : u || 'javascript:""', // Workaround for HTTPS warning in IE6/7 frameBorder : '0', allowTransparency : "true", title : s.aria_label, style : { width : '100%', height : h, display : 'block' // Important for Gecko to render the iframe correctly } }); t.contentAreaContainer = o.iframeContainer; DOM.get(o.editorContainer).style.display = t.orgDisplay; DOM.get(t.id).style.display = 'none'; DOM.setAttrib(t.id, 'aria-hidden', true); if (!tinymce.relaxedDomain || !u) t.setupIframe(); e = n = o = null; // Cleanup }, setupIframe : function() { var t = this, s = t.settings, e = DOM.get(t.id), d = t.getDoc(), h, b; // Setup iframe body if (!isIE || !tinymce.relaxedDomain) { // Fix for a focus bug in FF 3.x where the body element // wouldn't get proper focus if the user clicked on the HTML element if (isGecko && !Range.prototype.getClientRects) { // Detect getClientRects got introduced in FF 4 t.onMouseDown.add(function(ed, e) { if (e.target.nodeName === "HTML") { var body = t.getBody(); // Blur the body it's focused but not correctly focused body.blur(); // Refocus the body after a little while setTimeout(function() { body.focus(); }, 0); } }); } d.open(); d.write(t.iframeHTML); d.close(); if (tinymce.relaxedDomain) d.domain = tinymce.relaxedDomain; } // It will not steal focus while setting contentEditable b = t.getBody(); b.disabled = true; if (!s.readonly) b.contentEditable = true; b.disabled = false; t.schema = new tinymce.html.Schema(s); t.dom = new tinymce.dom.DOMUtils(t.getDoc(), { keep_values : true, url_converter : t.convertURL, url_converter_scope : t, hex_colors : s.force_hex_style_colors, class_filter : s.class_filter, update_styles : 1, fix_ie_paragraphs : 1, schema : t.schema }); t.parser = new tinymce.html.DomParser(s, t.schema); // Force anchor names closed, unless the setting "allow_html_in_named_anchor" is explicitly included. if (!t.settings.allow_html_in_named_anchor) { t.parser.addAttributeFilter('name', function(nodes, name) { var i = nodes.length, sibling, prevSibling, parent, node; while (i--) { node = nodes[i]; if (node.name === 'a' && node.firstChild) { parent = node.parent; // Move children after current node sibling = node.lastChild; do { prevSibling = sibling.prev; parent.insert(sibling, node); sibling = prevSibling; } while (sibling); } } }); } // Convert src and href into data-mce-src, data-mce-href and data-mce-style t.parser.addAttributeFilter('src,href,style', function(nodes, name) { var i = nodes.length, node, dom = t.dom, value, internalName; while (i--) { node = nodes[i]; value = node.attr(name); internalName = 'data-mce-' + name; // Add internal attribute if we need to we don't on a refresh of the document if (!node.attributes.map[internalName]) { if (name === "style") node.attr(internalName, dom.serializeStyle(dom.parseStyle(value), node.name)); else node.attr(internalName, t.convertURL(value, name, node.name)); } } }); // Keep scripts from executing t.parser.addNodeFilter('script', function(nodes, name) { var i = nodes.length; while (i--) nodes[i].attr('type', 'mce-text/javascript'); }); t.parser.addNodeFilter('#cdata', function(nodes, name) { var i = nodes.length, node; while (i--) { node = nodes[i]; node.type = 8; node.name = '#comment'; node.value = '[CDATA[' + node.value + ']]'; } }); t.parser.addNodeFilter('p,h1,h2,h3,h4,h5,h6,div', function(nodes, name) { var i = nodes.length, node, nonEmptyElements = t.schema.getNonEmptyElements(); while (i--) { node = nodes[i]; if (node.isEmpty(nonEmptyElements)) node.empty().append(new tinymce.html.Node('br', 1)).shortEnded = true; } }); t.serializer = new tinymce.dom.Serializer(s, t.dom, t.schema); t.selection = new tinymce.dom.Selection(t.dom, t.getWin(), t.serializer); t.formatter = new tinymce.Formatter(this); // Register default formats t.formatter.register({ alignleft : [ {selector : 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li', styles : {textAlign : 'left'}}, {selector : 'img,table', collapsed : false, styles : {'float' : 'left'}} ], aligncenter : [ {selector : 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li', styles : {textAlign : 'center'}}, {selector : 'img', collapsed : false, styles : {display : 'block', marginLeft : 'auto', marginRight : 'auto'}}, {selector : 'table', collapsed : false, styles : {marginLeft : 'auto', marginRight : 'auto'}} ], alignright : [ {selector : 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li', styles : {textAlign : 'right'}}, {selector : 'img,table', collapsed : false, styles : {'float' : 'right'}} ], alignfull : [ {selector : 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li', styles : {textAlign : 'justify'}} ], bold : [ {inline : 'strong', remove : 'all'}, {inline : 'span', styles : {fontWeight : 'bold'}}, {inline : 'b', remove : 'all'} ], italic : [ {inline : 'em', remove : 'all'}, {inline : 'span', styles : {fontStyle : 'italic'}}, {inline : 'i', remove : 'all'} ], underline : [ {inline : 'span', styles : {textDecoration : 'underline'}, exact : true}, {inline : 'u', remove : 'all'} ], strikethrough : [ {inline : 'span', styles : {textDecoration : 'line-through'}, exact : true}, {inline : 'strike', remove : 'all'} ], forecolor : {inline : 'span', styles : {color : '%value'}, wrap_links : false}, hilitecolor : {inline : 'span', styles : {backgroundColor : '%value'}, wrap_links : false}, fontname : {inline : 'span', styles : {fontFamily : '%value'}}, fontsize : {inline : 'span', styles : {fontSize : '%value'}}, fontsize_class : {inline : 'span', attributes : {'class' : '%value'}}, blockquote : {block : 'blockquote', wrapper : 1, remove : 'all'}, subscript : {inline : 'sub'}, superscript : {inline : 'sup'}, link : {inline : 'a', selector : 'a', remove : 'all', split : true, deep : true, onmatch : function(node) { return true; }, onformat : function(elm, fmt, vars) { each(vars, function(value, key) { t.dom.setAttrib(elm, key, value); }); } }, removeformat : [ {selector : 'b,strong,em,i,font,u,strike', remove : 'all', split : true, expand : false, block_expand : true, deep : true}, {selector : 'span', attributes : ['style', 'class'], remove : 'empty', split : true, expand : false, deep : true}, {selector : '*', attributes : ['style', 'class'], split : false, expand : false, deep : true} ] }); // Register default block formats each('p h1 h2 h3 h4 h5 h6 div address pre div code dt dd samp'.split(/\s/), function(name) { t.formatter.register(name, {block : name, remove : 'all'}); }); // Register user defined formats t.formatter.register(t.settings.formats); t.undoManager = new tinymce.UndoManager(t); // Pass through t.undoManager.onAdd.add(function(um, l) { if (um.hasUndo()) return t.onChange.dispatch(t, l, um); }); t.undoManager.onUndo.add(function(um, l) { return t.onUndo.dispatch(t, l, um); }); t.undoManager.onRedo.add(function(um, l) { return t.onRedo.dispatch(t, l, um); }); t.forceBlocks = new tinymce.ForceBlocks(t, { forced_root_block : s.forced_root_block }); t.editorCommands = new tinymce.EditorCommands(t); // Pass through t.serializer.onPreProcess.add(function(se, o) { return t.onPreProcess.dispatch(t, o, se); }); t.serializer.onPostProcess.add(function(se, o) { return t.onPostProcess.dispatch(t, o, se); }); t.onPreInit.dispatch(t); if (!s.gecko_spellcheck) t.getBody().spellcheck = 0; if (!s.readonly) t._addEvents(); t.controlManager.onPostRender.dispatch(t, t.controlManager); t.onPostRender.dispatch(t); t.quirks = new tinymce.util.Quirks(this); if (s.directionality) t.getBody().dir = s.directionality; if (s.nowrap) t.getBody().style.whiteSpace = "nowrap"; if (s.handle_node_change_callback) { t.onNodeChange.add(function(ed, cm, n) { t.execCallback('handle_node_change_callback', t.id, n, -1, -1, true, t.selection.isCollapsed()); }); } if (s.save_callback) { t.onSaveContent.add(function(ed, o) { var h = t.execCallback('save_callback', t.id, o.content, t.getBody()); if (h) o.content = h; }); } if (s.onchange_callback) { t.onChange.add(function(ed, l) { t.execCallback('onchange_callback', t, l); }); } if (s.protect) { t.onBeforeSetContent.add(function(ed, o) { if (s.protect) { each(s.protect, function(pattern) { o.content = o.content.replace(pattern, function(str) { return ''; }); }); } }); } if (s.convert_newlines_to_brs) { t.onBeforeSetContent.add(function(ed, o) { if (o.initial) o.content = o.content.replace(/\r?\n/g, '
    '); }); } if (s.preformatted) { t.onPostProcess.add(function(ed, o) { o.content = o.content.replace(/^\s*/, ''); o.content = o.content.replace(/<\/pre>\s*$/, ''); if (o.set) o.content = '
    ' + o.content + '
    '; }); } if (s.verify_css_classes) { t.serializer.attribValueFilter = function(n, v) { var s, cl; if (n == 'class') { // Build regexp for classes if (!t.classesRE) { cl = t.dom.getClasses(); if (cl.length > 0) { s = ''; each (cl, function(o) { s += (s ? '|' : '') + o['class']; }); t.classesRE = new RegExp('(' + s + ')', 'gi'); } } return !t.classesRE || /(\bmceItem\w+\b|\bmceTemp\w+\b)/g.test(v) || t.classesRE.test(v) ? v : ''; } return v; }; } if (s.cleanup_callback) { t.onBeforeSetContent.add(function(ed, o) { o.content = t.execCallback('cleanup_callback', 'insert_to_editor', o.content, o); }); t.onPreProcess.add(function(ed, o) { if (o.set) t.execCallback('cleanup_callback', 'insert_to_editor_dom', o.node, o); if (o.get) t.execCallback('cleanup_callback', 'get_from_editor_dom', o.node, o); }); t.onPostProcess.add(function(ed, o) { if (o.set) o.content = t.execCallback('cleanup_callback', 'insert_to_editor', o.content, o); if (o.get) o.content = t.execCallback('cleanup_callback', 'get_from_editor', o.content, o); }); } if (s.save_callback) { t.onGetContent.add(function(ed, o) { if (o.save) o.content = t.execCallback('save_callback', t.id, o.content, t.getBody()); }); } if (s.handle_event_callback) { t.onEvent.add(function(ed, e, o) { if (t.execCallback('handle_event_callback', e, ed, o) === false) Event.cancel(e); }); } // Add visual aids when new contents is added t.onSetContent.add(function() { t.addVisual(t.getBody()); }); // Remove empty contents if (s.padd_empty_editor) { t.onPostProcess.add(function(ed, o) { o.content = o.content.replace(/^(]*>( | |\s|\u00a0|)<\/p>[\r\n]*|
    [\r\n]*)$/, ''); }); } if (isGecko) { // Fix gecko link bug, when a link is placed at the end of block elements there is // no way to move the caret behind the link. This fix adds a bogus br element after the link function fixLinks(ed, o) { each(ed.dom.select('a'), function(n) { var pn = n.parentNode; if (ed.dom.isBlock(pn) && pn.lastChild === n) ed.dom.add(pn, 'br', {'data-mce-bogus' : 1}); }); }; t.onExecCommand.add(function(ed, cmd) { if (cmd === 'CreateLink') fixLinks(ed); }); t.onSetContent.add(t.selection.onSetContent.add(fixLinks)); } t.load({initial : true, format : 'html'}); t.startContent = t.getContent({format : 'raw'}); t.undoManager.add(); t.initialized = true; t.onInit.dispatch(t); t.execCallback('setupcontent_callback', t.id, t.getBody(), t.getDoc()); t.execCallback('init_instance_callback', t); t.focus(true); t.nodeChanged({initial : 1}); // Load specified content CSS last each(t.contentCSS, function(u) { t.dom.loadCSS(u); }); // Handle auto focus if (s.auto_focus) { setTimeout(function () { var ed = tinymce.get(s.auto_focus); ed.selection.select(ed.getBody(), 1); ed.selection.collapse(1); ed.getBody().focus(); ed.getWin().focus(); }, 100); } e = null; }, focus : function(sf) { var oed, t = this, selection = t.selection, ce = t.settings.content_editable, ieRng, controlElm, doc = t.getDoc(); if (!sf) { // Get selected control element ieRng = selection.getRng(); if (ieRng.item) { controlElm = ieRng.item(0); } t._refreshContentEditable(); selection.normalize(); // Is not content editable if (!ce) t.getWin().focus(); // Focus the body as well since it's contentEditable if (tinymce.isGecko) { t.getBody().focus(); } // Restore selected control element // This is needed when for example an image is selected within a // layer a call to focus will then remove the control selection if (controlElm && controlElm.ownerDocument == doc) { ieRng = doc.body.createControlRange(); ieRng.addElement(controlElm); ieRng.select(); } } if (tinymce.activeEditor != t) { if ((oed = tinymce.activeEditor) != null) oed.onDeactivate.dispatch(oed, t); t.onActivate.dispatch(t, oed); } tinymce._setActive(t); }, execCallback : function(n) { var t = this, f = t.settings[n], s; if (!f) return; // Look through lookup if (t.callbackLookup && (s = t.callbackLookup[n])) { f = s.func; s = s.scope; } if (is(f, 'string')) { s = f.replace(/\.\w+$/, ''); s = s ? tinymce.resolve(s) : 0; f = tinymce.resolve(f); t.callbackLookup = t.callbackLookup || {}; t.callbackLookup[n] = {func : f, scope : s}; } return f.apply(s || t, Array.prototype.slice.call(arguments, 1)); }, translate : function(s) { var c = this.settings.language || 'en', i18n = tinymce.i18n; if (!s) return ''; return i18n[c + '.' + s] || s.replace(/{\#([^}]+)\}/g, function(a, b) { return i18n[c + '.' + b] || '{#' + b + '}'; }); }, getLang : function(n, dv) { return tinymce.i18n[(this.settings.language || 'en') + '.' + n] || (is(dv) ? dv : '{#' + n + '}'); }, getParam : function(n, dv, ty) { var tr = tinymce.trim, v = is(this.settings[n]) ? this.settings[n] : dv, o; if (ty === 'hash') { o = {}; if (is(v, 'string')) { each(v.indexOf('=') > 0 ? v.split(/[;,](?![^=;,]*(?:[;,]|$))/) : v.split(','), function(v) { v = v.split('='); if (v.length > 1) o[tr(v[0])] = tr(v[1]); else o[tr(v[0])] = tr(v); }); } else o = v; return o; } return v; }, nodeChanged : function(o) { var t = this, s = t.selection, n = s.getStart() || t.getBody(); // Fix for bug #1896577 it seems that this can not be fired while the editor is loading if (t.initialized) { o = o || {}; n = isIE && n.ownerDocument != t.getDoc() ? t.getBody() : n; // Fix for IE initial state // Get parents and add them to object o.parents = []; t.dom.getParent(n, function(node) { if (node.nodeName == 'BODY') return true; o.parents.push(node); }); t.onNodeChange.dispatch( t, o ? o.controlManager || t.controlManager : t.controlManager, n, s.isCollapsed(), o ); } }, addButton : function(n, s) { var t = this; t.buttons = t.buttons || {}; t.buttons[n] = s; }, addCommand : function(name, callback, scope) { this.execCommands[name] = {func : callback, scope : scope || this}; }, addQueryStateHandler : function(name, callback, scope) { this.queryStateCommands[name] = {func : callback, scope : scope || this}; }, addQueryValueHandler : function(name, callback, scope) { this.queryValueCommands[name] = {func : callback, scope : scope || this}; }, addShortcut : function(pa, desc, cmd_func, sc) { var t = this, c; if (!t.settings.custom_shortcuts) return false; t.shortcuts = t.shortcuts || {}; if (is(cmd_func, 'string')) { c = cmd_func; cmd_func = function() { t.execCommand(c, false, null); }; } if (is(cmd_func, 'object')) { c = cmd_func; cmd_func = function() { t.execCommand(c[0], c[1], c[2]); }; } each(explode(pa), function(pa) { var o = { func : cmd_func, scope : sc || this, desc : desc, alt : false, ctrl : false, shift : false }; each(explode(pa, '+'), function(v) { switch (v) { case 'alt': case 'ctrl': case 'shift': o[v] = true; break; default: o.charCode = v.charCodeAt(0); o.keyCode = v.toUpperCase().charCodeAt(0); } }); t.shortcuts[(o.ctrl ? 'ctrl' : '') + ',' + (o.alt ? 'alt' : '') + ',' + (o.shift ? 'shift' : '') + ',' + o.keyCode] = o; }); return true; }, execCommand : function(cmd, ui, val, a) { var t = this, s = 0, o, st; if (!/^(mceAddUndoLevel|mceEndUndoLevel|mceBeginUndoLevel|mceRepaint|SelectAll)$/.test(cmd) && (!a || !a.skip_focus)) t.focus(); o = {}; t.onBeforeExecCommand.dispatch(t, cmd, ui, val, o); if (o.terminate) return false; // Command callback if (t.execCallback('execcommand_callback', t.id, t.selection.getNode(), cmd, ui, val)) { t.onExecCommand.dispatch(t, cmd, ui, val, a); return true; } // Registred commands if (o = t.execCommands[cmd]) { st = o.func.call(o.scope, ui, val); // Fall through on true if (st !== true) { t.onExecCommand.dispatch(t, cmd, ui, val, a); return st; } } // Plugin commands each(t.plugins, function(p) { if (p.execCommand && p.execCommand(cmd, ui, val)) { t.onExecCommand.dispatch(t, cmd, ui, val, a); s = 1; return false; } }); if (s) return true; // Theme commands if (t.theme && t.theme.execCommand && t.theme.execCommand(cmd, ui, val)) { t.onExecCommand.dispatch(t, cmd, ui, val, a); return true; } // Editor commands if (t.editorCommands.execCommand(cmd, ui, val)) { t.onExecCommand.dispatch(t, cmd, ui, val, a); return true; } // Browser commands t.getDoc().execCommand(cmd, ui, val); t.onExecCommand.dispatch(t, cmd, ui, val, a); }, queryCommandState : function(cmd) { var t = this, o, s; // Is hidden then return undefined if (t._isHidden()) return; // Registred commands if (o = t.queryStateCommands[cmd]) { s = o.func.call(o.scope); // Fall though on true if (s !== true) return s; } // Registred commands o = t.editorCommands.queryCommandState(cmd); if (o !== -1) return o; // Browser commands try { return this.getDoc().queryCommandState(cmd); } catch (ex) { // Fails sometimes see bug: 1896577 } }, queryCommandValue : function(c) { var t = this, o, s; // Is hidden then return undefined if (t._isHidden()) return; // Registred commands if (o = t.queryValueCommands[c]) { s = o.func.call(o.scope); // Fall though on true if (s !== true) return s; } // Registred commands o = t.editorCommands.queryCommandValue(c); if (is(o)) return o; // Browser commands try { return this.getDoc().queryCommandValue(c); } catch (ex) { // Fails sometimes see bug: 1896577 } }, show : function() { var t = this; DOM.show(t.getContainer()); DOM.hide(t.id); t.load(); }, hide : function() { var t = this, d = t.getDoc(); // Fixed bug where IE has a blinking cursor left from the editor if (isIE && d) d.execCommand('SelectAll'); // We must save before we hide so Safari doesn't crash t.save(); DOM.hide(t.getContainer()); DOM.setStyle(t.id, 'display', t.orgDisplay); }, isHidden : function() { return !DOM.isHidden(this.id); }, setProgressState : function(b, ti, o) { this.onSetProgressState.dispatch(this, b, ti, o); return b; }, load : function(o) { var t = this, e = t.getElement(), h; if (e) { o = o || {}; o.load = true; // Double encode existing entities in the value h = t.setContent(is(e.value) ? e.value : e.innerHTML, o); o.element = e; if (!o.no_events) t.onLoadContent.dispatch(t, o); o.element = e = null; return h; } }, save : function(o) { var t = this, e = t.getElement(), h, f; if (!e || !t.initialized) return; o = o || {}; o.save = true; // Add undo level will trigger onchange event if (!o.no_events) { t.undoManager.typing = false; t.undoManager.add(); } o.element = e; h = o.content = t.getContent(o); if (!o.no_events) t.onSaveContent.dispatch(t, o); h = o.content; if (!/TEXTAREA|INPUT/i.test(e.nodeName)) { e.innerHTML = h; // Update hidden form element if (f = DOM.getParent(t.id, 'form')) { each(f.elements, function(e) { if (e.name == t.id) { e.value = h; return false; } }); } } else e.value = h; o.element = e = null; return h; }, setContent : function(content, args) { var self = this, rootNode, body = self.getBody(), forcedRootBlockName; // Setup args object args = args || {}; args.format = args.format || 'html'; args.set = true; args.content = content; // Do preprocessing if (!args.no_events) self.onBeforeSetContent.dispatch(self, args); content = args.content; // Padd empty content in Gecko and Safari. Commands will otherwise fail on the content // It will also be impossible to place the caret in the editor unless there is a BR element present if (!tinymce.isIE && (content.length === 0 || /^\s+$/.test(content))) { forcedRootBlockName = self.settings.forced_root_block; if (forcedRootBlockName) content = '<' + forcedRootBlockName + '>
    '; else content = '
    '; body.innerHTML = content; self.selection.select(body, true); self.selection.collapse(true); return; } // Parse and serialize the html if (args.format !== 'raw') { content = new tinymce.html.Serializer({}, self.schema).serialize( self.parser.parse(content) ); } // Set the new cleaned contents to the editor args.content = tinymce.trim(content); self.dom.setHTML(body, args.content); // Do post processing if (!args.no_events) self.onSetContent.dispatch(self, args); self.selection.normalize(); return args.content; }, getContent : function(args) { var self = this, content; // Setup args object args = args || {}; args.format = args.format || 'html'; args.get = true; // Do preprocessing if (!args.no_events) self.onBeforeGetContent.dispatch(self, args); // Get raw contents or by default the cleaned contents if (args.format == 'raw') content = self.getBody().innerHTML; else content = self.serializer.serialize(self.getBody(), args); args.content = tinymce.trim(content); // Do post processing if (!args.no_events) self.onGetContent.dispatch(self, args); return args.content; }, isDirty : function() { var self = this; return tinymce.trim(self.startContent) != tinymce.trim(self.getContent({format : 'raw', no_events : 1})) && !self.isNotDirty; }, getContainer : function() { var t = this; if (!t.container) t.container = DOM.get(t.editorContainer || t.id + '_parent'); return t.container; }, getContentAreaContainer : function() { return this.contentAreaContainer; }, getElement : function() { return DOM.get(this.settings.content_element || this.id); }, getWin : function() { var t = this, e; if (!t.contentWindow) { e = DOM.get(t.id + "_ifr"); if (e) t.contentWindow = e.contentWindow; } return t.contentWindow; }, getDoc : function() { var t = this, w; if (!t.contentDocument) { w = t.getWin(); if (w) t.contentDocument = w.document; } return t.contentDocument; }, getBody : function() { return this.bodyElement || this.getDoc().body; }, convertURL : function(u, n, e) { var t = this, s = t.settings; // Use callback instead if (s.urlconverter_callback) return t.execCallback('urlconverter_callback', u, e, true, n); // Don't convert link href since thats the CSS files that gets loaded into the editor also skip local file URLs if (!s.convert_urls || (e && e.nodeName == 'LINK') || u.indexOf('file:') === 0) return u; // Convert to relative if (s.relative_urls) return t.documentBaseURI.toRelative(u); // Convert to absolute u = t.documentBaseURI.toAbsolute(u, s.remove_script_host); return u; }, addVisual : function(e) { var t = this, s = t.settings; e = e || t.getBody(); if (!is(t.hasVisual)) t.hasVisual = s.visual; each(t.dom.select('table,a', e), function(e) { var v; switch (e.nodeName) { case 'TABLE': v = t.dom.getAttrib(e, 'border'); if (!v || v == '0') { if (t.hasVisual) t.dom.addClass(e, s.visual_table_class); else t.dom.removeClass(e, s.visual_table_class); } return; case 'A': v = t.dom.getAttrib(e, 'name'); if (v) { if (t.hasVisual) t.dom.addClass(e, 'mceItemAnchor'); else t.dom.removeClass(e, 'mceItemAnchor'); } return; } }); t.onVisualAid.dispatch(t, e, t.hasVisual); }, remove : function() { var t = this, e = t.getContainer(); t.removed = 1; // Cancels post remove event execution t.hide(); t.execCallback('remove_instance_callback', t); t.onRemove.dispatch(t); // Clear all execCommand listeners this is required to avoid errors if the editor was removed inside another command t.onExecCommand.listeners = []; tinymce.remove(t); DOM.remove(e); }, destroy : function(s) { var t = this; // One time is enough if (t.destroyed) return; if (!s) { tinymce.removeUnload(t.destroy); tinyMCE.onBeforeUnload.remove(t._beforeUnload); // Manual destroy if (t.theme && t.theme.destroy) t.theme.destroy(); // Destroy controls, selection and dom t.controlManager.destroy(); t.selection.destroy(); t.dom.destroy(); // Remove all events // Don't clear the window or document if content editable // is enabled since other instances might still be present if (!t.settings.content_editable) { Event.clear(t.getWin()); Event.clear(t.getDoc()); } Event.clear(t.getBody()); Event.clear(t.formElement); } if (t.formElement) { t.formElement.submit = t.formElement._mceOldSubmit; t.formElement._mceOldSubmit = null; } t.contentAreaContainer = t.formElement = t.container = t.settings.content_element = t.bodyElement = t.contentDocument = t.contentWindow = null; if (t.selection) t.selection = t.selection.win = t.selection.dom = t.selection.dom.doc = null; t.destroyed = 1; }, // Internal functions _addEvents : function() { // 'focus', 'blur', 'dblclick', 'beforedeactivate', submit, reset var t = this, i, s = t.settings, dom = t.dom, lo = { mouseup : 'onMouseUp', mousedown : 'onMouseDown', click : 'onClick', keyup : 'onKeyUp', keydown : 'onKeyDown', keypress : 'onKeyPress', submit : 'onSubmit', reset : 'onReset', contextmenu : 'onContextMenu', dblclick : 'onDblClick', paste : 'onPaste' // Doesn't work in all browsers yet }; function eventHandler(e, o) { var ty = e.type; // Don't fire events when it's removed if (t.removed) return; // Generic event handler if (t.onEvent.dispatch(t, e, o) !== false) { // Specific event handler t[lo[e.fakeType || e.type]].dispatch(t, e, o); } }; // Add DOM events each(lo, function(v, k) { switch (k) { case 'contextmenu': dom.bind(t.getDoc(), k, eventHandler); break; case 'paste': dom.bind(t.getBody(), k, function(e) { eventHandler(e); }); break; case 'submit': case 'reset': dom.bind(t.getElement().form || DOM.getParent(t.id, 'form'), k, eventHandler); break; default: dom.bind(s.content_editable ? t.getBody() : t.getDoc(), k, eventHandler); } }); dom.bind(s.content_editable ? t.getBody() : (isGecko ? t.getDoc() : t.getWin()), 'focus', function(e) { t.focus(true); }); // Fixes bug where a specified document_base_uri could result in broken images // This will also fix drag drop of images in Gecko if (tinymce.isGecko) { dom.bind(t.getDoc(), 'DOMNodeInserted', function(e) { var v; e = e.target; if (e.nodeType === 1 && e.nodeName === 'IMG' && (v = e.getAttribute('data-mce-src'))) e.src = t.documentBaseURI.toAbsolute(v); }); } // Set various midas options in Gecko if (isGecko) { function setOpts() { var t = this, d = t.getDoc(), s = t.settings; if (isGecko && !s.readonly) { t._refreshContentEditable(); try { // Try new Gecko method d.execCommand("styleWithCSS", 0, false); } catch (ex) { // Use old method if (!t._isHidden()) try {d.execCommand("useCSS", 0, true);} catch (ex) {} } if (!s.table_inline_editing) try {d.execCommand('enableInlineTableEditing', false, false);} catch (ex) {} if (!s.object_resizing) try {d.execCommand('enableObjectResizing', false, false);} catch (ex) {} } }; t.onBeforeExecCommand.add(setOpts); t.onMouseDown.add(setOpts); } t.onClick.add(function(ed, e) { e = e.target; // Workaround for bug, http://bugs.webkit.org/show_bug.cgi?id=12250 // WebKit can't even do simple things like selecting an image // Needs tobe the setBaseAndExtend or it will fail to select floated images if (tinymce.isWebKit && e.nodeName == 'IMG') t.selection.getSel().setBaseAndExtent(e, 0, e, 1); if (e.nodeName == 'A' && dom.hasClass(e, 'mceItemAnchor')) t.selection.select(e); t.nodeChanged(); }); // Add node change handlers t.onMouseUp.add(t.nodeChanged); //t.onClick.add(t.nodeChanged); t.onKeyUp.add(function(ed, e) { var c = e.keyCode; if ((c >= 33 && c <= 36) || (c >= 37 && c <= 40) || c == 13 || c == 45 || c == 46 || c == 8 || (tinymce.isMac && (c == 91 || c == 93)) || e.ctrlKey) t.nodeChanged(); }); // Add block quote deletion handler t.onKeyDown.add(function(ed, e) { // Was the BACKSPACE key pressed? if (e.keyCode != 8) return; var n = ed.selection.getRng().startContainer; var offset = ed.selection.getRng().startOffset; while (n && n.nodeType && n.nodeType != 1 && n.parentNode) n = n.parentNode; // Is the cursor at the beginning of a blockquote? if (n && n.parentNode && n.parentNode.tagName === 'BLOCKQUOTE' && n.parentNode.firstChild == n && offset == 0) { // Remove the blockquote ed.formatter.toggle('blockquote', null, n.parentNode); // Move the caret to the beginning of n var rng = ed.selection.getRng(); rng.setStart(n, 0); rng.setEnd(n, 0); ed.selection.setRng(rng); ed.selection.collapse(false); } }); // Add reset handler t.onReset.add(function() { t.setContent(t.startContent, {format : 'raw'}); }); // Add shortcuts if (s.custom_shortcuts) { if (s.custom_undo_redo_keyboard_shortcuts) { t.addShortcut('ctrl+z', t.getLang('undo_desc'), 'Undo'); t.addShortcut('ctrl+y', t.getLang('redo_desc'), 'Redo'); } // Add default shortcuts for gecko t.addShortcut('ctrl+b', t.getLang('bold_desc'), 'Bold'); t.addShortcut('ctrl+i', t.getLang('italic_desc'), 'Italic'); t.addShortcut('ctrl+u', t.getLang('underline_desc'), 'Underline'); // BlockFormat shortcuts keys for (i=1; i<=6; i++) t.addShortcut('ctrl+' + i, '', ['FormatBlock', false, 'h' + i]); t.addShortcut('ctrl+7', '', ['FormatBlock', false, 'p']); t.addShortcut('ctrl+8', '', ['FormatBlock', false, 'div']); t.addShortcut('ctrl+9', '', ['FormatBlock', false, 'address']); function find(e) { var v = null; if (!e.altKey && !e.ctrlKey && !e.metaKey) return v; each(t.shortcuts, function(o) { if (tinymce.isMac && o.ctrl != e.metaKey) return; else if (!tinymce.isMac && o.ctrl != e.ctrlKey) return; if (o.alt != e.altKey) return; if (o.shift != e.shiftKey) return; if (e.keyCode == o.keyCode || (e.charCode && e.charCode == o.charCode)) { v = o; return false; } }); return v; }; t.onKeyUp.add(function(ed, e) { var o = find(e); if (o) return Event.cancel(e); }); t.onKeyPress.add(function(ed, e) { var o = find(e); if (o) return Event.cancel(e); }); t.onKeyDown.add(function(ed, e) { var o = find(e); if (o) { o.func.call(o.scope); return Event.cancel(e); } }); } if (tinymce.isIE) { // Fix so resize will only update the width and height attributes not the styles of an image // It will also block mceItemNoResize items dom.bind(t.getDoc(), 'controlselect', function(e) { var re = t.resizeInfo, cb; e = e.target; // Don't do this action for non image elements if (e.nodeName !== 'IMG') return; if (re) dom.unbind(re.node, re.ev, re.cb); if (!dom.hasClass(e, 'mceItemNoResize')) { ev = 'resizeend'; cb = dom.bind(e, ev, function(e) { var v; e = e.target; if (v = dom.getStyle(e, 'width')) { dom.setAttrib(e, 'width', v.replace(/[^0-9%]+/g, '')); dom.setStyle(e, 'width', ''); } if (v = dom.getStyle(e, 'height')) { dom.setAttrib(e, 'height', v.replace(/[^0-9%]+/g, '')); dom.setStyle(e, 'height', ''); } }); } else { ev = 'resizestart'; cb = dom.bind(e, 'resizestart', Event.cancel, Event); } re = t.resizeInfo = { node : e, ev : ev, cb : cb }; }); } if (tinymce.isOpera) { t.onClick.add(function(ed, e) { Event.prevent(e); }); } // Add custom undo/redo handlers if (s.custom_undo_redo) { function addUndo() { t.undoManager.typing = false; t.undoManager.add(); }; dom.bind(t.getDoc(), 'focusout', function(e) { if (!t.removed && t.undoManager.typing) addUndo(); }); // Add undo level when contents is drag/dropped within the editor t.dom.bind(t.dom.getRoot(), 'dragend', function(e) { addUndo(); }); t.onKeyUp.add(function(ed, e) { var keyCode = e.keyCode; if ((keyCode >= 33 && keyCode <= 36) || (keyCode >= 37 && keyCode <= 40) || keyCode == 13 || keyCode == 45 || e.ctrlKey) addUndo(); }); t.onKeyDown.add(function(ed, e) { var keyCode = e.keyCode, sel; if (keyCode == 8) { sel = t.getDoc().selection; // Fix IE control + backspace browser bug if (sel && sel.createRange && sel.createRange().item) { t.undoManager.beforeChange(); ed.dom.remove(sel.createRange().item(0)); addUndo(); return Event.cancel(e); } } // Is caracter positon keys left,right,up,down,home,end,pgdown,pgup,enter if ((keyCode >= 33 && keyCode <= 36) || (keyCode >= 37 && keyCode <= 40) || keyCode == 13 || keyCode == 45) { // Add position before enter key is pressed, used by IE since it still uses the default browser behavior // Todo: Remove this once we normalize enter behavior on IE if (tinymce.isIE && keyCode == 13) t.undoManager.beforeChange(); if (t.undoManager.typing) addUndo(); return; } // If key isn't shift,ctrl,alt,capslock,metakey if ((keyCode < 16 || keyCode > 20) && keyCode != 224 && keyCode != 91 && !t.undoManager.typing) { t.undoManager.beforeChange(); t.undoManager.typing = true; t.undoManager.add(); } }); t.onMouseDown.add(function() { if (t.undoManager.typing) addUndo(); }); } // Fire a nodeChanged when the selection is changed on WebKit this fixes selection issues on iOS5 // It only fires the nodeChange event every 50ms since it would other wise update the UI when you type and it hogs the CPU if (tinymce.isWebKit) { dom.bind(t.getDoc(), 'selectionchange', function() { if (t.selectionTimer) { clearTimeout(t.selectionTimer); t.selectionTimer = 0; } t.selectionTimer = window.setTimeout(function() { t.nodeChanged(); }, 50); }); } // Bug fix for FireFox keeping styles from end of selection instead of start. if (tinymce.isGecko) { function getAttributeApplyFunction() { var template = t.dom.getAttribs(t.selection.getStart().cloneNode(false)); return function() { var target = t.selection.getStart(); if (target !== t.getBody()) { t.dom.removeAllAttribs(target); each(template, function(attr) { target.setAttributeNode(attr.cloneNode(true)); }); } }; } function isSelectionAcrossElements() { var s = t.selection; return !s.isCollapsed() && s.getStart() != s.getEnd(); } t.onKeyPress.add(function(ed, e) { var applyAttributes; if ((e.keyCode == 8 || e.keyCode == 46) && isSelectionAcrossElements()) { applyAttributes = getAttributeApplyFunction(); t.getDoc().execCommand('delete', false, null); applyAttributes(); return Event.cancel(e); } }); t.dom.bind(t.getDoc(), 'cut', function(e) { var applyAttributes; if (isSelectionAcrossElements()) { applyAttributes = getAttributeApplyFunction(); t.onKeyUp.addToTop(Event.cancel, Event); setTimeout(function() { applyAttributes(); t.onKeyUp.remove(Event.cancel, Event); }, 0); } }); } }, _refreshContentEditable : function() { var self = this, body, parent; // Check if the editor was hidden and the re-initalize contentEditable mode by removing and adding the body again if (self._isHidden()) { body = self.getBody(); parent = body.parentNode; parent.removeChild(body); parent.appendChild(body); body.focus(); } }, _isHidden : function() { var s; if (!isGecko) return 0; // Weird, wheres that cursor selection? s = this.selection.getSel(); return (!s || !s.rangeCount || s.rangeCount == 0); } }); })(tinymce); (function(tinymce) { // Added for compression purposes var each = tinymce.each, undefined, TRUE = true, FALSE = false; tinymce.EditorCommands = function(editor) { var dom = editor.dom, selection = editor.selection, commands = {state: {}, exec : {}, value : {}}, settings = editor.settings, formatter = editor.formatter, bookmark; function execCommand(command, ui, value) { var func; command = command.toLowerCase(); if (func = commands.exec[command]) { func(command, ui, value); return TRUE; } return FALSE; }; function queryCommandState(command) { var func; command = command.toLowerCase(); if (func = commands.state[command]) return func(command); return -1; }; function queryCommandValue(command) { var func; command = command.toLowerCase(); if (func = commands.value[command]) return func(command); return FALSE; }; function addCommands(command_list, type) { type = type || 'exec'; each(command_list, function(callback, command) { each(command.toLowerCase().split(','), function(command) { commands[type][command] = callback; }); }); }; // Expose public methods tinymce.extend(this, { execCommand : execCommand, queryCommandState : queryCommandState, queryCommandValue : queryCommandValue, addCommands : addCommands }); // Private methods function execNativeCommand(command, ui, value) { if (ui === undefined) ui = FALSE; if (value === undefined) value = null; return editor.getDoc().execCommand(command, ui, value); }; function isFormatMatch(name) { return formatter.match(name); }; function toggleFormat(name, value) { formatter.toggle(name, value ? {value : value} : undefined); }; function storeSelection(type) { bookmark = selection.getBookmark(type); }; function restoreSelection() { selection.moveToBookmark(bookmark); }; // Add execCommand overrides addCommands({ // Ignore these, added for compatibility 'mceResetDesignMode,mceBeginUndoLevel' : function() {}, // Add undo manager logic 'mceEndUndoLevel,mceAddUndoLevel' : function() { editor.undoManager.add(); }, 'Cut,Copy,Paste' : function(command) { var doc = editor.getDoc(), failed; // Try executing the native command try { execNativeCommand(command); } catch (ex) { // Command failed failed = TRUE; } // Present alert message about clipboard access not being available if (failed || !doc.queryCommandSupported(command)) { if (tinymce.isGecko) { editor.windowManager.confirm(editor.getLang('clipboard_msg'), function(state) { if (state) open('http://www.mozilla.org/editor/midasdemo/securityprefs.html', '_blank'); }); } else editor.windowManager.alert(editor.getLang('clipboard_no_support')); } }, // Override unlink command unlink : function(command) { if (selection.isCollapsed()) selection.select(selection.getNode()); execNativeCommand(command); selection.collapse(FALSE); }, // Override justify commands to use the text formatter engine 'JustifyLeft,JustifyCenter,JustifyRight,JustifyFull' : function(command) { var align = command.substring(7); // Remove all other alignments first each('left,center,right,full'.split(','), function(name) { if (align != name) formatter.remove('align' + name); }); toggleFormat('align' + align); execCommand('mceRepaint'); }, // Override list commands to fix WebKit bug 'InsertUnorderedList,InsertOrderedList' : function(command) { var listElm, listParent; execNativeCommand(command); // WebKit produces lists within block elements so we need to split them // we will replace the native list creation logic to custom logic later on // TODO: Remove this when the list creation logic is removed listElm = dom.getParent(selection.getNode(), 'ol,ul'); if (listElm) { listParent = listElm.parentNode; // If list is within a text block then split that block if (/^(H[1-6]|P|ADDRESS|PRE)$/.test(listParent.nodeName)) { storeSelection(); dom.split(listParent, listElm); restoreSelection(); } } }, // Override commands to use the text formatter engine 'Bold,Italic,Underline,Strikethrough,Superscript,Subscript' : function(command) { toggleFormat(command); }, // Override commands to use the text formatter engine 'ForeColor,HiliteColor,FontName' : function(command, ui, value) { toggleFormat(command, value); }, FontSize : function(command, ui, value) { var fontClasses, fontSizes; // Convert font size 1-7 to styles if (value >= 1 && value <= 7) { fontSizes = tinymce.explode(settings.font_size_style_values); fontClasses = tinymce.explode(settings.font_size_classes); if (fontClasses) value = fontClasses[value - 1] || value; else value = fontSizes[value - 1] || value; } toggleFormat(command, value); }, RemoveFormat : function(command) { formatter.remove(command); }, mceBlockQuote : function(command) { toggleFormat('blockquote'); }, FormatBlock : function(command, ui, value) { return toggleFormat(value || 'p'); }, mceCleanup : function() { var bookmark = selection.getBookmark(); editor.setContent(editor.getContent({cleanup : TRUE}), {cleanup : TRUE}); selection.moveToBookmark(bookmark); }, mceRemoveNode : function(command, ui, value) { var node = value || selection.getNode(); // Make sure that the body node isn't removed if (node != editor.getBody()) { storeSelection(); editor.dom.remove(node, TRUE); restoreSelection(); } }, mceSelectNodeDepth : function(command, ui, value) { var counter = 0; dom.getParent(selection.getNode(), function(node) { if (node.nodeType == 1 && counter++ == value) { selection.select(node); return FALSE; } }, editor.getBody()); }, mceSelectNode : function(command, ui, value) { selection.select(value); }, mceInsertContent : function(command, ui, value) { var parser, serializer, parentNode, rootNode, fragment, args, marker, nodeRect, viewPortRect, rng, node, node2, bookmarkHtml, viewportBodyElement; // Setup parser and serializer parser = editor.parser; serializer = new tinymce.html.Serializer({}, editor.schema); bookmarkHtml = '\uFEFF'; // Run beforeSetContent handlers on the HTML to be inserted args = {content: value, format: 'html'}; selection.onBeforeSetContent.dispatch(selection, args); value = args.content; // Add caret at end of contents if it's missing if (value.indexOf('{$caret}') == -1) value += '{$caret}'; // Replace the caret marker with a span bookmark element value = value.replace(/\{\$caret\}/, bookmarkHtml); // Insert node maker where we will insert the new HTML and get it's parent if (!selection.isCollapsed()) editor.getDoc().execCommand('Delete', false, null); parentNode = selection.getNode(); // Parse the fragment within the context of the parent node args = {context : parentNode.nodeName.toLowerCase()}; fragment = parser.parse(value, args); // Move the caret to a more suitable location node = fragment.lastChild; if (node.attr('id') == 'mce_marker') { marker = node; for (node = node.prev; node; node = node.walk(true)) { if (node.type == 3 || !dom.isBlock(node.name)) { node.parent.insert(marker, node, node.name === 'br'); break; } } } // If parser says valid we can insert the contents into that parent if (!args.invalid) { value = serializer.serialize(fragment); // Check if parent is empty or only has one BR element then set the innerHTML of that parent node = parentNode.firstChild; node2 = parentNode.lastChild; if (!node || (node === node2 && node.nodeName === 'BR')) dom.setHTML(parentNode, value); else selection.setContent(value); } else { // If the fragment was invalid within that context then we need // to parse and process the parent it's inserted into // Insert bookmark node and get the parent selection.setContent(bookmarkHtml); parentNode = editor.selection.getNode(); rootNode = editor.getBody(); // Opera will return the document node when selection is in root if (parentNode.nodeType == 9) parentNode = node = rootNode; else node = parentNode; // Find the ancestor just before the root element while (node !== rootNode) { parentNode = node; node = node.parentNode; } // Get the outer/inner HTML depending on if we are in the root and parser and serialize that value = parentNode == rootNode ? rootNode.innerHTML : dom.getOuterHTML(parentNode); value = serializer.serialize( parser.parse( // Need to replace by using a function since $ in the contents would otherwise be a problem value.replace(//i, function() { return serializer.serialize(fragment); }) ) ); // Set the inner/outer HTML depending on if we are in the root or not if (parentNode == rootNode) dom.setHTML(rootNode, value); else dom.setOuterHTML(parentNode, value); } marker = dom.get('mce_marker'); // Scroll range into view scrollIntoView on element can't be used since it will scroll the main view port as well nodeRect = dom.getRect(marker); viewPortRect = dom.getViewPort(editor.getWin()); // Check if node is out side the viewport if it is then scroll to it if ((nodeRect.y + nodeRect.h > viewPortRect.y + viewPortRect.h || nodeRect.y < viewPortRect.y) || (nodeRect.x > viewPortRect.x + viewPortRect.w || nodeRect.x < viewPortRect.x)) { viewportBodyElement = tinymce.isIE ? editor.getDoc().documentElement : editor.getBody(); viewportBodyElement.scrollLeft = nodeRect.x; viewportBodyElement.scrollTop = nodeRect.y - viewPortRect.h + 25; } // Move selection before marker and remove it rng = dom.createRng(); // If previous sibling is a text node set the selection to the end of that node node = marker.previousSibling; if (node && node.nodeType == 3) { rng.setStart(node, node.nodeValue.length); } else { // If the previous sibling isn't a text node or doesn't exist set the selection before the marker node rng.setStartBefore(marker); rng.setEndBefore(marker); } // Remove the marker node and set the new range dom.remove(marker); selection.setRng(rng); // Dispatch after event and add any visual elements needed selection.onSetContent.dispatch(selection, args); editor.addVisual(); }, mceInsertRawHTML : function(command, ui, value) { selection.setContent('tiny_mce_marker'); editor.setContent(editor.getContent().replace(/tiny_mce_marker/g, function() { return value })); }, mceSetContent : function(command, ui, value) { editor.setContent(value); }, 'Indent,Outdent' : function(command) { var intentValue, indentUnit, value; // Setup indent level intentValue = settings.indentation; indentUnit = /[a-z%]+$/i.exec(intentValue); intentValue = parseInt(intentValue); if (!queryCommandState('InsertUnorderedList') && !queryCommandState('InsertOrderedList')) { each(selection.getSelectedBlocks(), function(element) { if (command == 'outdent') { value = Math.max(0, parseInt(element.style.paddingLeft || 0) - intentValue); dom.setStyle(element, 'paddingLeft', value ? value + indentUnit : ''); } else dom.setStyle(element, 'paddingLeft', (parseInt(element.style.paddingLeft || 0) + intentValue) + indentUnit); }); } else execNativeCommand(command); }, mceRepaint : function() { var bookmark; if (tinymce.isGecko) { try { storeSelection(TRUE); if (selection.getSel()) selection.getSel().selectAllChildren(editor.getBody()); selection.collapse(TRUE); restoreSelection(); } catch (ex) { // Ignore } } }, mceToggleFormat : function(command, ui, value) { formatter.toggle(value); }, InsertHorizontalRule : function() { editor.execCommand('mceInsertContent', false, '
    '); }, mceToggleVisualAid : function() { editor.hasVisual = !editor.hasVisual; editor.addVisual(); }, mceReplaceContent : function(command, ui, value) { editor.execCommand('mceInsertContent', false, value.replace(/\{\$selection\}/g, selection.getContent({format : 'text'}))); }, mceInsertLink : function(command, ui, value) { var anchor; if (typeof(value) == 'string') value = {href : value}; anchor = dom.getParent(selection.getNode(), 'a'); // Spaces are never valid in URLs and it's a very common mistake for people to make so we fix it here. value.href = value.href.replace(' ', '%20'); // Remove existing links if there could be child links or that the href isn't specified if (!anchor || !value.href) { formatter.remove('link'); } // Apply new link to selection if (value.href) { formatter.apply('link', value, anchor); } }, selectAll : function() { var root = dom.getRoot(), rng = dom.createRng(); rng.setStart(root, 0); rng.setEnd(root, root.childNodes.length); editor.selection.setRng(rng); } }); // Add queryCommandState overrides addCommands({ // Override justify commands 'JustifyLeft,JustifyCenter,JustifyRight,JustifyFull' : function(command) { return isFormatMatch('align' + command.substring(7)); }, 'Bold,Italic,Underline,Strikethrough,Superscript,Subscript' : function(command) { return isFormatMatch(command); }, mceBlockQuote : function() { return isFormatMatch('blockquote'); }, Outdent : function() { var node; if (settings.inline_styles) { if ((node = dom.getParent(selection.getStart(), dom.isBlock)) && parseInt(node.style.paddingLeft) > 0) return TRUE; if ((node = dom.getParent(selection.getEnd(), dom.isBlock)) && parseInt(node.style.paddingLeft) > 0) return TRUE; } return queryCommandState('InsertUnorderedList') || queryCommandState('InsertOrderedList') || (!settings.inline_styles && !!dom.getParent(selection.getNode(), 'BLOCKQUOTE')); }, 'InsertUnorderedList,InsertOrderedList' : function(command) { return dom.getParent(selection.getNode(), command == 'insertunorderedlist' ? 'UL' : 'OL'); } }, 'state'); // Add queryCommandValue overrides addCommands({ 'FontSize,FontName' : function(command) { var value = 0, parent; if (parent = dom.getParent(selection.getNode(), 'span')) { if (command == 'fontsize') value = parent.style.fontSize; else value = parent.style.fontFamily.replace(/, /g, ',').replace(/[\'\"]/g, '').toLowerCase(); } return value; } }, 'value'); // Add undo manager logic if (settings.custom_undo_redo) { addCommands({ Undo : function() { editor.undoManager.undo(); }, Redo : function() { editor.undoManager.redo(); } }); } }; })(tinymce); (function(tinymce) { var Dispatcher = tinymce.util.Dispatcher; tinymce.UndoManager = function(editor) { var self, index = 0, data = [], beforeBookmark; function getContent() { return tinymce.trim(editor.getContent({format : 'raw', no_events : 1})); }; return self = { typing : false, onAdd : new Dispatcher(self), onUndo : new Dispatcher(self), onRedo : new Dispatcher(self), beforeChange : function() { beforeBookmark = editor.selection.getBookmark(2, true); }, add : function(level) { var i, settings = editor.settings, lastLevel; level = level || {}; level.content = getContent(); // Add undo level if needed lastLevel = data[index]; if (lastLevel && lastLevel.content == level.content) return null; // Set before bookmark on previous level if (data[index]) data[index].beforeBookmark = beforeBookmark; // Time to compress if (settings.custom_undo_redo_levels) { if (data.length > settings.custom_undo_redo_levels) { for (i = 0; i < data.length - 1; i++) data[i] = data[i + 1]; data.length--; index = data.length; } } // Get a non intrusive normalized bookmark level.bookmark = editor.selection.getBookmark(2, true); // Crop array if needed if (index < data.length - 1) data.length = index + 1; data.push(level); index = data.length - 1; self.onAdd.dispatch(self, level); editor.isNotDirty = 0; return level; }, undo : function() { var level, i; if (self.typing) { self.add(); self.typing = false; } if (index > 0) { level = data[--index]; editor.setContent(level.content, {format : 'raw'}); editor.selection.moveToBookmark(level.beforeBookmark); self.onUndo.dispatch(self, level); } return level; }, redo : function() { var level; if (index < data.length - 1) { level = data[++index]; editor.setContent(level.content, {format : 'raw'}); editor.selection.moveToBookmark(level.bookmark); self.onRedo.dispatch(self, level); } return level; }, clear : function() { data = []; index = 0; self.typing = false; }, hasUndo : function() { return index > 0 || this.typing; }, hasRedo : function() { return index < data.length - 1 && !this.typing; } }; }; })(tinymce); (function(tinymce) { // Shorten names var Event = tinymce.dom.Event, isIE = tinymce.isIE, isGecko = tinymce.isGecko, isOpera = tinymce.isOpera, each = tinymce.each, extend = tinymce.extend, TRUE = true, FALSE = false; function cloneFormats(node) { var clone, temp, inner; do { if (/^(SPAN|STRONG|B|EM|I|FONT|STRIKE|U)$/.test(node.nodeName)) { if (clone) { temp = node.cloneNode(false); temp.appendChild(clone); clone = temp; } else { clone = inner = node.cloneNode(false); } clone.removeAttribute('id'); } } while (node = node.parentNode); if (clone) return {wrapper : clone, inner : inner}; }; // Checks if the selection/caret is at the end of the specified block element function isAtEnd(rng, par) { var rng2 = par.ownerDocument.createRange(); rng2.setStart(rng.endContainer, rng.endOffset); rng2.setEndAfter(par); // Get number of characters to the right of the cursor if it's zero then we are at the end and need to merge the next block element return rng2.cloneContents().textContent.length == 0; }; function splitList(selection, dom, li) { var listBlock, block; if (dom.isEmpty(li)) { listBlock = dom.getParent(li, 'ul,ol'); if (!dom.getParent(listBlock.parentNode, 'ul,ol')) { dom.split(listBlock, li); block = dom.create('p', 0, '
    '); dom.replace(block, li); selection.select(block, 1); } return FALSE; } return TRUE; }; tinymce.create('tinymce.ForceBlocks', { ForceBlocks : function(ed) { var t = this, s = ed.settings, elm; t.editor = ed; t.dom = ed.dom; elm = (s.forced_root_block || 'p').toLowerCase(); s.element = elm.toUpperCase(); ed.onPreInit.add(t.setup, t); }, setup : function() { var t = this, ed = t.editor, s = ed.settings, dom = ed.dom, selection = ed.selection, blockElements = ed.schema.getBlockElements(); // Force root blocks if (s.forced_root_block) { function addRootBlocks() { var node = selection.getStart(), rootNode = ed.getBody(), rng, startContainer, startOffset, endContainer, endOffset, rootBlockNode, tempNode, offset = -0xFFFFFF; if (!node || node.nodeType !== 1) return; // Check if node is wrapped in block while (node != rootNode) { if (blockElements[node.nodeName]) return; node = node.parentNode; } // Get current selection rng = selection.getRng(); if (rng.setStart) { startContainer = rng.startContainer; startOffset = rng.startOffset; endContainer = rng.endContainer; endOffset = rng.endOffset; } else { // Force control range into text range if (rng.item) { rng = ed.getDoc().body.createTextRange(); rng.moveToElementText(rng.item(0)); } tmpRng = rng.duplicate(); tmpRng.collapse(true); startOffset = tmpRng.move('character', offset) * -1; if (!tmpRng.collapsed) { tmpRng = rng.duplicate(); tmpRng.collapse(false); endOffset = (tmpRng.move('character', offset) * -1) - startOffset; } } // Wrap non block elements and text nodes for (node = rootNode.firstChild; node; node) { if (node.nodeType === 3 || (node.nodeType == 1 && !blockElements[node.nodeName])) { if (!rootBlockNode) { rootBlockNode = dom.create(s.forced_root_block); node.parentNode.insertBefore(rootBlockNode, node); } tempNode = node; node = node.nextSibling; rootBlockNode.appendChild(tempNode); } else { rootBlockNode = null; node = node.nextSibling; } } if (rng.setStart) { rng.setStart(startContainer, startOffset); rng.setEnd(endContainer, endOffset); selection.setRng(rng); } else { try { rng = ed.getDoc().body.createTextRange(); rng.moveToElementText(rootNode); rng.collapse(true); rng.moveStart('character', startOffset); if (endOffset > 0) rng.moveEnd('character', endOffset); rng.select(); } catch (ex) { // Ignore } } ed.nodeChanged(); }; ed.onKeyUp.add(addRootBlocks); ed.onClick.add(addRootBlocks); } if (s.force_br_newlines) { // Force IE to produce BRs on enter if (isIE) { ed.onKeyPress.add(function(ed, e) { var n; if (e.keyCode == 13 && selection.getNode().nodeName != 'LI') { selection.setContent('
    ', {format : 'raw'}); n = dom.get('__'); n.removeAttribute('id'); selection.select(n); selection.collapse(); return Event.cancel(e); } }); } } if (s.force_p_newlines) { if (!isIE) { ed.onKeyPress.add(function(ed, e) { if (e.keyCode == 13 && !e.shiftKey && !t.insertPara(e)) Event.cancel(e); }); } else { // Ungly hack to for IE to preserve the formatting when you press // enter at the end of a block element with formatted contents // This logic overrides the browsers default logic with // custom logic that enables us to control the output tinymce.addUnload(function() { t._previousFormats = 0; // Fix IE leak }); ed.onKeyPress.add(function(ed, e) { t._previousFormats = 0; // Clone the current formats, this will later be applied to the new block contents if (e.keyCode == 13 && !e.shiftKey && ed.selection.isCollapsed() && s.keep_styles) t._previousFormats = cloneFormats(ed.selection.getStart()); }); ed.onKeyUp.add(function(ed, e) { // Let IE break the element and the wrap the new caret location in the previous formats if (e.keyCode == 13 && !e.shiftKey) { var parent = ed.selection.getStart(), fmt = t._previousFormats; // Parent is an empty block if (!parent.hasChildNodes() && fmt) { parent = dom.getParent(parent, dom.isBlock); if (parent && parent.nodeName != 'LI') { parent.innerHTML = ''; if (t._previousFormats) { parent.appendChild(fmt.wrapper); fmt.inner.innerHTML = '\uFEFF'; } else parent.innerHTML = '\uFEFF'; selection.select(parent, 1); selection.collapse(true); ed.getDoc().execCommand('Delete', false, null); t._previousFormats = 0; } } } }); } if (isGecko) { ed.onKeyDown.add(function(ed, e) { if ((e.keyCode == 8 || e.keyCode == 46) && !e.shiftKey) t.backspaceDelete(e, e.keyCode == 8); }); } } // Workaround for missing shift+enter support, http://bugs.webkit.org/show_bug.cgi?id=16973 if (tinymce.isWebKit) { function insertBr(ed) { var rng = selection.getRng(), br, div = dom.create('div', null, ' '), divYPos, vpHeight = dom.getViewPort(ed.getWin()).h; // Insert BR element rng.insertNode(br = dom.create('br')); // Place caret after BR rng.setStartAfter(br); rng.setEndAfter(br); selection.setRng(rng); // Could not place caret after BR then insert an nbsp entity and move the caret if (selection.getSel().focusNode == br.previousSibling) { selection.select(dom.insertAfter(dom.doc.createTextNode('\u00a0'), br)); selection.collapse(TRUE); } // Create a temporary DIV after the BR and get the position as it // seems like getPos() returns 0 for text nodes and BR elements. dom.insertAfter(div, br); divYPos = dom.getPos(div).y; dom.remove(div); // Scroll to new position, scrollIntoView can't be used due to bug: http://bugs.webkit.org/show_bug.cgi?id=16117 if (divYPos > vpHeight) // It is not necessary to scroll if the DIV is inside the view port. ed.getWin().scrollTo(0, divYPos); }; ed.onKeyPress.add(function(ed, e) { if (e.keyCode == 13 && (e.shiftKey || (s.force_br_newlines && !dom.getParent(selection.getNode(), 'h1,h2,h3,h4,h5,h6,ol,ul')))) { insertBr(ed); Event.cancel(e); } }); } // IE specific fixes if (isIE) { // Replaces IE:s auto generated paragraphs with the specified element name if (s.element != 'P') { ed.onKeyPress.add(function(ed, e) { t.lastElm = selection.getNode().nodeName; }); ed.onKeyUp.add(function(ed, e) { var bl, n = selection.getNode(), b = ed.getBody(); if (b.childNodes.length === 1 && n.nodeName == 'P') { n = dom.rename(n, s.element); selection.select(n); selection.collapse(); ed.nodeChanged(); } else if (e.keyCode == 13 && !e.shiftKey && t.lastElm != 'P') { bl = dom.getParent(n, 'p'); if (bl) { dom.rename(bl, s.element); ed.nodeChanged(); } } }); } } }, getParentBlock : function(n) { var d = this.dom; return d.getParent(n, d.isBlock); }, insertPara : function(e) { var t = this, ed = t.editor, dom = ed.dom, d = ed.getDoc(), se = ed.settings, s = ed.selection.getSel(), r = s.getRangeAt(0), b = d.body; var rb, ra, dir, sn, so, en, eo, sb, eb, bn, bef, aft, sc, ec, n, vp = dom.getViewPort(ed.getWin()), y, ch, car; ed.undoManager.beforeChange(); // If root blocks are forced then use Operas default behavior since it's really good // Removed due to bug: #1853816 // if (se.forced_root_block && isOpera) // return TRUE; // Setup before range rb = d.createRange(); // If is before the first block element and in body, then move it into first block element rb.setStart(s.anchorNode, s.anchorOffset); rb.collapse(TRUE); // Setup after range ra = d.createRange(); // If is before the first block element and in body, then move it into first block element ra.setStart(s.focusNode, s.focusOffset); ra.collapse(TRUE); // Setup start/end points dir = rb.compareBoundaryPoints(rb.START_TO_END, ra) < 0; sn = dir ? s.anchorNode : s.focusNode; so = dir ? s.anchorOffset : s.focusOffset; en = dir ? s.focusNode : s.anchorNode; eo = dir ? s.focusOffset : s.anchorOffset; // If selection is in empty table cell if (sn === en && /^(TD|TH)$/.test(sn.nodeName)) { if (sn.firstChild.nodeName == 'BR') dom.remove(sn.firstChild); // Remove BR // Create two new block elements if (sn.childNodes.length == 0) { ed.dom.add(sn, se.element, null, '
    '); aft = ed.dom.add(sn, se.element, null, '
    '); } else { n = sn.innerHTML; sn.innerHTML = ''; ed.dom.add(sn, se.element, null, n); aft = ed.dom.add(sn, se.element, null, '
    '); } // Move caret into the last one r = d.createRange(); r.selectNodeContents(aft); r.collapse(1); ed.selection.setRng(r); return FALSE; } // If the caret is in an invalid location in FF we need to move it into the first block if (sn == b && en == b && b.firstChild && ed.dom.isBlock(b.firstChild)) { sn = en = sn.firstChild; so = eo = 0; rb = d.createRange(); rb.setStart(sn, 0); ra = d.createRange(); ra.setStart(en, 0); } // If the body is totally empty add a BR element this might happen on webkit if (!d.body.hasChildNodes()) { d.body.appendChild(dom.create('br')); } // Never use body as start or end node sn = sn.nodeName == "HTML" ? d.body : sn; // Fix for Opera bug: https://bugs.opera.com/show_bug.cgi?id=273224&comments=yes sn = sn.nodeName == "BODY" ? sn.firstChild : sn; en = en.nodeName == "HTML" ? d.body : en; // Fix for Opera bug: https://bugs.opera.com/show_bug.cgi?id=273224&comments=yes en = en.nodeName == "BODY" ? en.firstChild : en; // Get start and end blocks sb = t.getParentBlock(sn); eb = t.getParentBlock(en); bn = sb ? sb.nodeName : se.element; // Get block name to create // Return inside list use default browser behavior if (n = t.dom.getParent(sb, 'li,pre')) { if (n.nodeName == 'LI') return splitList(ed.selection, t.dom, n); return TRUE; } // If caption or absolute layers then always generate new blocks within if (sb && (sb.nodeName == 'CAPTION' || /absolute|relative|fixed/gi.test(dom.getStyle(sb, 'position', 1)))) { bn = se.element; sb = null; } // If caption or absolute layers then always generate new blocks within if (eb && (eb.nodeName == 'CAPTION' || /absolute|relative|fixed/gi.test(dom.getStyle(sb, 'position', 1)))) { bn = se.element; eb = null; } // Use P instead if (/(TD|TABLE|TH|CAPTION)/.test(bn) || (sb && bn == "DIV" && /left|right/gi.test(dom.getStyle(sb, 'float', 1)))) { bn = se.element; sb = eb = null; } // Setup new before and after blocks bef = (sb && sb.nodeName == bn) ? sb.cloneNode(0) : ed.dom.create(bn); aft = (eb && eb.nodeName == bn) ? eb.cloneNode(0) : ed.dom.create(bn); // Remove id from after clone aft.removeAttribute('id'); // Is header and cursor is at the end, then force paragraph under if (/^(H[1-6])$/.test(bn) && isAtEnd(r, sb)) aft = ed.dom.create(se.element); // Find start chop node n = sc = sn; do { if (n == b || n.nodeType == 9 || t.dom.isBlock(n) || /(TD|TABLE|TH|CAPTION)/.test(n.nodeName)) break; sc = n; } while ((n = n.previousSibling ? n.previousSibling : n.parentNode)); // Find end chop node n = ec = en; do { if (n == b || n.nodeType == 9 || t.dom.isBlock(n) || /(TD|TABLE|TH|CAPTION)/.test(n.nodeName)) break; ec = n; } while ((n = n.nextSibling ? n.nextSibling : n.parentNode)); // Place first chop part into before block element if (sc.nodeName == bn) rb.setStart(sc, 0); else rb.setStartBefore(sc); rb.setEnd(sn, so); bef.appendChild(rb.cloneContents() || d.createTextNode('')); // Empty text node needed for Safari // Place secnd chop part within new block element try { ra.setEndAfter(ec); } catch(ex) { //console.debug(s.focusNode, s.focusOffset); } ra.setStart(en, eo); aft.appendChild(ra.cloneContents() || d.createTextNode('')); // Empty text node needed for Safari // Create range around everything r = d.createRange(); if (!sc.previousSibling && sc.parentNode.nodeName == bn) { r.setStartBefore(sc.parentNode); } else { if (rb.startContainer.nodeName == bn && rb.startOffset == 0) r.setStartBefore(rb.startContainer); else r.setStart(rb.startContainer, rb.startOffset); } if (!ec.nextSibling && ec.parentNode.nodeName == bn) r.setEndAfter(ec.parentNode); else r.setEnd(ra.endContainer, ra.endOffset); // Delete and replace it with new block elements r.deleteContents(); if (isOpera) ed.getWin().scrollTo(0, vp.y); // Never wrap blocks in blocks if (bef.firstChild && bef.firstChild.nodeName == bn) bef.innerHTML = bef.firstChild.innerHTML; if (aft.firstChild && aft.firstChild.nodeName == bn) aft.innerHTML = aft.firstChild.innerHTML; function appendStyles(e, en) { var nl = [], nn, n, i; e.innerHTML = ''; // Make clones of style elements if (se.keep_styles) { n = en; do { // We only want style specific elements if (/^(SPAN|STRONG|B|EM|I|FONT|STRIKE|U)$/.test(n.nodeName)) { nn = n.cloneNode(FALSE); dom.setAttrib(nn, 'id', ''); // Remove ID since it needs to be unique nl.push(nn); } } while (n = n.parentNode); } // Append style elements to aft if (nl.length > 0) { for (i = nl.length - 1, nn = e; i >= 0; i--) nn = nn.appendChild(nl[i]); // Padd most inner style element nl[0].innerHTML = isOpera ? '\u00a0' : '
    '; // Extra space for Opera so that the caret can move there return nl[0]; // Move caret to most inner element } else e.innerHTML = isOpera ? '\u00a0' : '
    '; // Extra space for Opera so that the caret can move there }; // Padd empty blocks if (dom.isEmpty(bef)) appendStyles(bef, sn); // Fill empty afterblook with current style if (dom.isEmpty(aft)) car = appendStyles(aft, en); // Opera needs this one backwards for older versions if (isOpera && parseFloat(opera.version()) < 9.5) { r.insertNode(bef); r.insertNode(aft); } else { r.insertNode(aft); r.insertNode(bef); } // Normalize aft.normalize(); bef.normalize(); // Move cursor and scroll into view ed.selection.select(aft, true); ed.selection.collapse(true); // scrollIntoView seems to scroll the parent window in most browsers now including FF 3.0b4 so it's time to stop using it and do it our selfs y = ed.dom.getPos(aft).y; //ch = aft.clientHeight; // Is element within viewport if (y < vp.y || y + 25 > vp.y + vp.h) { ed.getWin().scrollTo(0, y < vp.y ? y : y - vp.h + 25); // Needs to be hardcoded to roughly one line of text if a huge text block is broken into two blocks /*console.debug( 'Element: y=' + y + ', h=' + ch + ', ' + 'Viewport: y=' + vp.y + ", h=" + vp.h + ', bottom=' + (vp.y + vp.h) );*/ } ed.undoManager.add(); return FALSE; }, backspaceDelete : function(e, bs) { var t = this, ed = t.editor, b = ed.getBody(), dom = ed.dom, n, se = ed.selection, r = se.getRng(), sc = r.startContainer, n, w, tn, walker; // Delete when caret is behind a element doesn't work correctly on Gecko see #3011651 if (!bs && r.collapsed && sc.nodeType == 1 && r.startOffset == sc.childNodes.length) { walker = new tinymce.dom.TreeWalker(sc.lastChild, sc); // Walk the dom backwards until we find a text node for (n = sc.lastChild; n; n = walker.prev()) { if (n.nodeType == 3) { r.setStart(n, n.nodeValue.length); r.collapse(true); se.setRng(r); return; } } } // The caret sometimes gets stuck in Gecko if you delete empty paragraphs // This workaround removes the element by hand and moves the caret to the previous element if (sc && ed.dom.isBlock(sc) && !/^(TD|TH)$/.test(sc.nodeName) && bs) { if (sc.childNodes.length == 0 || (sc.childNodes.length == 1 && sc.firstChild.nodeName == 'BR')) { // Find previous block element n = sc; while ((n = n.previousSibling) && !ed.dom.isBlock(n)) ; if (n) { if (sc != b.firstChild) { // Find last text node w = ed.dom.doc.createTreeWalker(n, NodeFilter.SHOW_TEXT, null, FALSE); while (tn = w.nextNode()) n = tn; // Place caret at the end of last text node r = ed.getDoc().createRange(); r.setStart(n, n.nodeValue ? n.nodeValue.length : 0); r.setEnd(n, n.nodeValue ? n.nodeValue.length : 0); se.setRng(r); // Remove the target container ed.dom.remove(sc); } return Event.cancel(e); } } } } }); })(tinymce); (function(tinymce) { // Shorten names var DOM = tinymce.DOM, Event = tinymce.dom.Event, each = tinymce.each, extend = tinymce.extend; tinymce.create('tinymce.ControlManager', { ControlManager : function(ed, s) { var t = this, i; s = s || {}; t.editor = ed; t.controls = {}; t.onAdd = new tinymce.util.Dispatcher(t); t.onPostRender = new tinymce.util.Dispatcher(t); t.prefix = s.prefix || ed.id + '_'; t._cls = {}; t.onPostRender.add(function() { each(t.controls, function(c) { c.postRender(); }); }); }, get : function(id) { return this.controls[this.prefix + id] || this.controls[id]; }, setActive : function(id, s) { var c = null; if (c = this.get(id)) c.setActive(s); return c; }, setDisabled : function(id, s) { var c = null; if (c = this.get(id)) c.setDisabled(s); return c; }, add : function(c) { var t = this; if (c) { t.controls[c.id] = c; t.onAdd.dispatch(c, t); } return c; }, createControl : function(n) { var c, t = this, ed = t.editor; each(ed.plugins, function(p) { if (p.createControl) { c = p.createControl(n, t); if (c) return false; } }); switch (n) { case "|": case "separator": return t.createSeparator(); } if (!c && ed.buttons && (c = ed.buttons[n])) return t.createButton(n, c); return t.add(c); }, createDropMenu : function(id, s, cc) { var t = this, ed = t.editor, c, bm, v, cls; s = extend({ 'class' : 'mceDropDown', constrain : ed.settings.constrain_menus }, s); s['class'] = s['class'] + ' ' + ed.getParam('skin') + 'Skin'; if (v = ed.getParam('skin_variant')) s['class'] += ' ' + ed.getParam('skin') + 'Skin' + v.substring(0, 1).toUpperCase() + v.substring(1); id = t.prefix + id; cls = cc || t._cls.dropmenu || tinymce.ui.DropMenu; c = t.controls[id] = new cls(id, s); c.onAddItem.add(function(c, o) { var s = o.settings; s.title = ed.getLang(s.title, s.title); if (!s.onclick) { s.onclick = function(v) { if (s.cmd) ed.execCommand(s.cmd, s.ui || false, s.value); }; } }); ed.onRemove.add(function() { c.destroy(); }); // Fix for bug #1897785, #1898007 if (tinymce.isIE) { c.onShowMenu.add(function() { // IE 8 needs focus in order to store away a range with the current collapsed caret location ed.focus(); bm = ed.selection.getBookmark(1); }); c.onHideMenu.add(function() { if (bm) { ed.selection.moveToBookmark(bm); bm = 0; } }); } return t.add(c); }, createListBox : function(id, s, cc) { var t = this, ed = t.editor, cmd, c, cls; if (t.get(id)) return null; s.title = ed.translate(s.title); s.scope = s.scope || ed; if (!s.onselect) { s.onselect = function(v) { ed.execCommand(s.cmd, s.ui || false, v || s.value); }; } s = extend({ title : s.title, 'class' : 'mce_' + id, scope : s.scope, control_manager : t }, s); id = t.prefix + id; if (ed.settings.use_native_selects) c = new tinymce.ui.NativeListBox(id, s); else { cls = cc || t._cls.listbox || tinymce.ui.ListBox; c = new cls(id, s, ed); } t.controls[id] = c; // Fix focus problem in Safari if (tinymce.isWebKit) { c.onPostRender.add(function(c, n) { // Store bookmark on mousedown Event.add(n, 'mousedown', function() { ed.bookmark = ed.selection.getBookmark(1); }); // Restore on focus, since it might be lost Event.add(n, 'focus', function() { ed.selection.moveToBookmark(ed.bookmark); ed.bookmark = null; }); }); } if (c.hideMenu) ed.onMouseDown.add(c.hideMenu, c); return t.add(c); }, createButton : function(id, s, cc) { var t = this, ed = t.editor, o, c, cls; if (t.get(id)) return null; s.title = ed.translate(s.title); s.label = ed.translate(s.label); s.scope = s.scope || ed; if (!s.onclick && !s.menu_button) { s.onclick = function() { ed.execCommand(s.cmd, s.ui || false, s.value); }; } s = extend({ title : s.title, 'class' : 'mce_' + id, unavailable_prefix : ed.getLang('unavailable', ''), scope : s.scope, control_manager : t }, s); id = t.prefix + id; if (s.menu_button) { cls = cc || t._cls.menubutton || tinymce.ui.MenuButton; c = new cls(id, s, ed); ed.onMouseDown.add(c.hideMenu, c); } else { cls = t._cls.button || tinymce.ui.Button; c = new cls(id, s, ed); } return t.add(c); }, createMenuButton : function(id, s, cc) { s = s || {}; s.menu_button = 1; return this.createButton(id, s, cc); }, createSplitButton : function(id, s, cc) { var t = this, ed = t.editor, cmd, c, cls; if (t.get(id)) return null; s.title = ed.translate(s.title); s.scope = s.scope || ed; if (!s.onclick) { s.onclick = function(v) { ed.execCommand(s.cmd, s.ui || false, v || s.value); }; } if (!s.onselect) { s.onselect = function(v) { ed.execCommand(s.cmd, s.ui || false, v || s.value); }; } s = extend({ title : s.title, 'class' : 'mce_' + id, scope : s.scope, control_manager : t }, s); id = t.prefix + id; cls = cc || t._cls.splitbutton || tinymce.ui.SplitButton; c = t.add(new cls(id, s, ed)); ed.onMouseDown.add(c.hideMenu, c); return c; }, createColorSplitButton : function(id, s, cc) { var t = this, ed = t.editor, cmd, c, cls, bm; if (t.get(id)) return null; s.title = ed.translate(s.title); s.scope = s.scope || ed; if (!s.onclick) { s.onclick = function(v) { if (tinymce.isIE) bm = ed.selection.getBookmark(1); ed.execCommand(s.cmd, s.ui || false, v || s.value); }; } if (!s.onselect) { s.onselect = function(v) { ed.execCommand(s.cmd, s.ui || false, v || s.value); }; } s = extend({ title : s.title, 'class' : 'mce_' + id, 'menu_class' : ed.getParam('skin') + 'Skin', scope : s.scope, more_colors_title : ed.getLang('more_colors') }, s); id = t.prefix + id; cls = cc || t._cls.colorsplitbutton || tinymce.ui.ColorSplitButton; c = new cls(id, s, ed); ed.onMouseDown.add(c.hideMenu, c); // Remove the menu element when the editor is removed ed.onRemove.add(function() { c.destroy(); }); // Fix for bug #1897785, #1898007 if (tinymce.isIE) { c.onShowMenu.add(function() { // IE 8 needs focus in order to store away a range with the current collapsed caret location ed.focus(); bm = ed.selection.getBookmark(1); }); c.onHideMenu.add(function() { if (bm) { ed.selection.moveToBookmark(bm); bm = 0; } }); } return t.add(c); }, createToolbar : function(id, s, cc) { var c, t = this, cls; id = t.prefix + id; cls = cc || t._cls.toolbar || tinymce.ui.Toolbar; c = new cls(id, s, t.editor); if (t.get(id)) return null; return t.add(c); }, createToolbarGroup : function(id, s, cc) { var c, t = this, cls; id = t.prefix + id; cls = cc || this._cls.toolbarGroup || tinymce.ui.ToolbarGroup; c = new cls(id, s, t.editor); if (t.get(id)) return null; return t.add(c); }, createSeparator : function(cc) { var cls = cc || this._cls.separator || tinymce.ui.Separator; return new cls(); }, setControlType : function(n, c) { return this._cls[n.toLowerCase()] = c; }, destroy : function() { each(this.controls, function(c) { c.destroy(); }); this.controls = null; } }); })(tinymce); (function(tinymce) { var Dispatcher = tinymce.util.Dispatcher, each = tinymce.each, isIE = tinymce.isIE, isOpera = tinymce.isOpera; tinymce.create('tinymce.WindowManager', { WindowManager : function(ed) { var t = this; t.editor = ed; t.onOpen = new Dispatcher(t); t.onClose = new Dispatcher(t); t.params = {}; t.features = {}; }, open : function(s, p) { var t = this, f = '', x, y, mo = t.editor.settings.dialog_type == 'modal', w, sw, sh, vp = tinymce.DOM.getViewPort(), u; // Default some options s = s || {}; p = p || {}; sw = isOpera ? vp.w : screen.width; // Opera uses windows inside the Opera window sh = isOpera ? vp.h : screen.height; s.name = s.name || 'mc_' + new Date().getTime(); s.width = parseInt(s.width || 320); s.height = parseInt(s.height || 240); s.resizable = true; s.left = s.left || parseInt(sw / 2.0) - (s.width / 2.0); s.top = s.top || parseInt(sh / 2.0) - (s.height / 2.0); p.inline = false; p.mce_width = s.width; p.mce_height = s.height; p.mce_auto_focus = s.auto_focus; if (mo) { if (isIE) { s.center = true; s.help = false; s.dialogWidth = s.width + 'px'; s.dialogHeight = s.height + 'px'; s.scroll = s.scrollbars || false; } } // Build features string each(s, function(v, k) { if (tinymce.is(v, 'boolean')) v = v ? 'yes' : 'no'; if (!/^(name|url)$/.test(k)) { if (isIE && mo) f += (f ? ';' : '') + k + ':' + v; else f += (f ? ',' : '') + k + '=' + v; } }); t.features = s; t.params = p; t.onOpen.dispatch(t, s, p); u = s.url || s.file; u = tinymce._addVer(u); try { if (isIE && mo) { w = 1; window.showModalDialog(u, window, f); } else w = window.open(u, s.name, f); } catch (ex) { // Ignore } if (!w) alert(t.editor.getLang('popup_blocked')); }, close : function(w) { w.close(); this.onClose.dispatch(this); }, createInstance : function(cl, a, b, c, d, e) { var f = tinymce.resolve(cl); return new f(a, b, c, d, e); }, confirm : function(t, cb, s, w) { w = w || window; cb.call(s || this, w.confirm(this._decode(this.editor.getLang(t, t)))); }, alert : function(tx, cb, s, w) { var t = this; w = w || window; w.alert(t._decode(t.editor.getLang(tx, tx))); if (cb) cb.call(s || t); }, resizeBy : function(dw, dh, win) { win.resizeBy(dw, dh); }, // Internal functions _decode : function(s) { return tinymce.DOM.decode(s).replace(/\\n/g, '\n'); } }); }(tinymce)); (function(tinymce) { tinymce.Formatter = function(ed) { var formats = {}, each = tinymce.each, dom = ed.dom, selection = ed.selection, TreeWalker = tinymce.dom.TreeWalker, rangeUtils = new tinymce.dom.RangeUtils(dom), isValid = ed.schema.isValidChild, isBlock = dom.isBlock, forcedRootBlock = ed.settings.forced_root_block, nodeIndex = dom.nodeIndex, INVISIBLE_CHAR = '\uFEFF', MCE_ATTR_RE = /^(src|href|style)$/, FALSE = false, TRUE = true, undefined, pendingFormats = {apply : [], remove : []}; function isArray(obj) { return obj instanceof Array; }; function getParents(node, selector) { return dom.getParents(node, selector, dom.getRoot()); }; function isCaretNode(node) { return node.nodeType === 1 && (node.face === 'mceinline' || node.style.fontFamily === 'mceinline'); }; // Public functions function get(name) { return name ? formats[name] : formats; }; function register(name, format) { if (name) { if (typeof(name) !== 'string') { each(name, function(format, name) { register(name, format); }); } else { // Force format into array and add it to internal collection format = format.length ? format : [format]; each(format, function(format) { // Set deep to false by default on selector formats this to avoid removing // alignment on images inside paragraphs when alignment is changed on paragraphs if (format.deep === undefined) format.deep = !format.selector; // Default to true if (format.split === undefined) format.split = !format.selector || format.inline; // Default to true if (format.remove === undefined && format.selector && !format.inline) format.remove = 'none'; // Mark format as a mixed format inline + block level if (format.selector && format.inline) { format.mixed = true; format.block_expand = true; } // Split classes if needed if (typeof(format.classes) === 'string') format.classes = format.classes.split(/\s+/); }); formats[name] = format; } } }; var getTextDecoration = function(node) { var decoration; ed.dom.getParent(node, function(n) { decoration = ed.dom.getStyle(n, 'text-decoration'); return decoration && decoration !== 'none'; }); return decoration; }; var processUnderlineAndColor = function(node) { var textDecoration; if (node.nodeType === 1 && node.parentNode && node.parentNode.nodeType === 1) { textDecoration = getTextDecoration(node.parentNode); if (ed.dom.getStyle(node, 'color') && textDecoration) { ed.dom.setStyle(node, 'text-decoration', textDecoration); } else if (ed.dom.getStyle(node, 'textdecoration') === textDecoration) { ed.dom.setStyle(node, 'text-decoration', null); } } }; function apply(name, vars, node) { var formatList = get(name), format = formatList[0], bookmark, rng, i, isCollapsed = selection.isCollapsed(); function moveStart(rng) { var container = rng.startContainer, offset = rng.startOffset, walker, node; // Move startContainer/startOffset in to a suitable node if (container.nodeType == 1 || container.nodeValue === "") { container = container.nodeType == 1 ? container.childNodes[offset] : container; // Might fail if the offset is behind the last element in it's container if (container) { walker = new TreeWalker(container, container.parentNode); for (node = walker.current(); node; node = walker.next()) { if (node.nodeType == 3 && !isWhiteSpaceNode(node)) { rng.setStart(node, 0); break; } } } } return rng; }; function setElementFormat(elm, fmt) { fmt = fmt || format; if (elm) { if (fmt.onformat) { fmt.onformat(elm, fmt, vars, node); } each(fmt.styles, function(value, name) { dom.setStyle(elm, name, replaceVars(value, vars)); }); each(fmt.attributes, function(value, name) { dom.setAttrib(elm, name, replaceVars(value, vars)); }); each(fmt.classes, function(value) { value = replaceVars(value, vars); if (!dom.hasClass(elm, value)) dom.addClass(elm, value); }); } }; function adjustSelectionToVisibleSelection() { function findSelectionEnd(start, end) { var walker = new TreeWalker(end); for (node = walker.current(); node; node = walker.prev()) { if (node.childNodes.length > 1 || node == start) { return node; } } }; // Adjust selection so that a end container with a end offset of zero is not included in the selection // as this isn't visible to the user. var rng = ed.selection.getRng(); var start = rng.startContainer; var end = rng.endContainer; if (start != end && rng.endOffset == 0) { var newEnd = findSelectionEnd(start, end); var endOffset = newEnd.nodeType == 3 ? newEnd.length : newEnd.childNodes.length; rng.setEnd(newEnd, endOffset); } return rng; } function applyStyleToList(node, bookmark, wrapElm, newWrappers, process){ var nodes = [], listIndex = -1, list, startIndex = -1, endIndex = -1, currentWrapElm; // find the index of the first child list. each(node.childNodes, function(n, index) { if (n.nodeName === "UL" || n.nodeName === "OL") { listIndex = index; list = n; return false; } }); // get the index of the bookmarks each(node.childNodes, function(n, index) { if (n.nodeName === "SPAN" && dom.getAttrib(n, "data-mce-type") == "bookmark") { if (n.id == bookmark.id + "_start") { startIndex = index; } else if (n.id == bookmark.id + "_end") { endIndex = index; } } }); // if the selection spans across an embedded list, or there isn't an embedded list - handle processing normally if (listIndex <= 0 || (startIndex < listIndex && endIndex > listIndex)) { each(tinymce.grep(node.childNodes), process); return 0; } else { currentWrapElm = wrapElm.cloneNode(FALSE); // create a list of the nodes on the same side of the list as the selection each(tinymce.grep(node.childNodes), function(n, index) { if ((startIndex < listIndex && index < listIndex) || (startIndex > listIndex && index > listIndex)) { nodes.push(n); n.parentNode.removeChild(n); } }); // insert the wrapping element either before or after the list. if (startIndex < listIndex) { node.insertBefore(currentWrapElm, list); } else if (startIndex > listIndex) { node.insertBefore(currentWrapElm, list.nextSibling); } // add the new nodes to the list. newWrappers.push(currentWrapElm); each(nodes, function(node) { currentWrapElm.appendChild(node); }); return currentWrapElm; } }; function applyRngStyle(rng, bookmark) { var newWrappers = [], wrapName, wrapElm; // Setup wrapper element wrapName = format.inline || format.block; wrapElm = dom.create(wrapName); setElementFormat(wrapElm); rangeUtils.walk(rng, function(nodes) { var currentWrapElm; function process(node) { var nodeName = node.nodeName.toLowerCase(), parentName = node.parentNode.nodeName.toLowerCase(), found; // Stop wrapping on br elements if (isEq(nodeName, 'br')) { currentWrapElm = 0; // Remove any br elements when we wrap things if (format.block) dom.remove(node); return; } // If node is wrapper type if (format.wrapper && matchNode(node, name, vars)) { currentWrapElm = 0; return; } // Can we rename the block if (format.block && !format.wrapper && isTextBlock(nodeName)) { node = dom.rename(node, wrapName); setElementFormat(node); newWrappers.push(node); currentWrapElm = 0; return; } // Handle selector patterns if (format.selector) { // Look for matching formats each(formatList, function(format) { // Check collapsed state if it exists if ('collapsed' in format && format.collapsed !== isCollapsed) { return; } if (dom.is(node, format.selector) && !isCaretNode(node)) { setElementFormat(node, format); found = true; } }); // Continue processing if a selector match wasn't found and a inline element is defined if (!format.inline || found) { currentWrapElm = 0; return; } } // Is it valid to wrap this item if (isValid(wrapName, nodeName) && isValid(parentName, wrapName) && !(node.nodeType === 3 && node.nodeValue.length === 1 && node.nodeValue.charCodeAt(0) === 65279)) { // Start wrapping if (!currentWrapElm) { // Wrap the node currentWrapElm = wrapElm.cloneNode(FALSE); node.parentNode.insertBefore(currentWrapElm, node); newWrappers.push(currentWrapElm); } currentWrapElm.appendChild(node); } else if (nodeName == 'li' && bookmark) { // Start wrapping - if we are in a list node and have a bookmark, then we will always begin by wrapping in a new element. currentWrapElm = applyStyleToList(node, bookmark, wrapElm, newWrappers, process); } else { // Start a new wrapper for possible children currentWrapElm = 0; each(tinymce.grep(node.childNodes), process); // End the last wrapper currentWrapElm = 0; } }; // Process siblings from range each(nodes, process); }); // Wrap links inside as well, for example color inside a link when the wrapper is around the link if (format.wrap_links === false) { each(newWrappers, function(node) { function process(node) { var i, currentWrapElm, children; if (node.nodeName === 'A') { currentWrapElm = wrapElm.cloneNode(FALSE); newWrappers.push(currentWrapElm); children = tinymce.grep(node.childNodes); for (i = 0; i < children.length; i++) currentWrapElm.appendChild(children[i]); node.appendChild(currentWrapElm); } each(tinymce.grep(node.childNodes), process); }; process(node); }); } // Cleanup each(newWrappers, function(node) { var childCount; function getChildCount(node) { var count = 0; each(node.childNodes, function(node) { if (!isWhiteSpaceNode(node) && !isBookmarkNode(node)) count++; }); return count; }; function mergeStyles(node) { var child, clone; each(node.childNodes, function(node) { if (node.nodeType == 1 && !isBookmarkNode(node) && !isCaretNode(node)) { child = node; return FALSE; // break loop } }); // If child was found and of the same type as the current node if (child && matchName(child, format)) { clone = child.cloneNode(FALSE); setElementFormat(clone); dom.replace(clone, node, TRUE); dom.remove(child, 1); } return clone || node; }; childCount = getChildCount(node); // Remove empty nodes but only if there is multiple wrappers and they are not block // elements so never remove single

    since that would remove the currrent empty block element where the caret is at if ((newWrappers.length > 1 || !isBlock(node)) && childCount === 0) { dom.remove(node, 1); return; } if (format.inline || format.wrapper) { // Merges the current node with it's children of similar type to reduce the number of elements if (!format.exact && childCount === 1) node = mergeStyles(node); // Remove/merge children each(formatList, function(format) { // Merge all children of similar type will move styles from child to parent // this: text // will become: text each(dom.select(format.inline, node), function(child) { var parent; // When wrap_links is set to false we don't want // to remove the format on children within links if (format.wrap_links === false) { parent = child.parentNode; do { if (parent.nodeName === 'A') return; } while (parent = parent.parentNode); } removeFormat(format, vars, child, format.exact ? child : null); }); }); // Remove child if direct parent is of same type if (matchNode(node.parentNode, name, vars)) { dom.remove(node, 1); node = 0; return TRUE; } // Look for parent with similar style format if (format.merge_with_parents) { dom.getParent(node.parentNode, function(parent) { if (matchNode(parent, name, vars)) { dom.remove(node, 1); node = 0; return TRUE; } }); } // Merge next and previous siblings if they are similar texttext becomes texttext if (node && format.merge_siblings !== false) { node = mergeSiblings(getNonWhiteSpaceSibling(node), node); node = mergeSiblings(node, getNonWhiteSpaceSibling(node, TRUE)); } } }); }; if (format) { if (node) { rng = dom.createRng(); rng.setStartBefore(node); rng.setEndAfter(node); applyRngStyle(expandRng(rng, formatList)); } else { if (!isCollapsed || !format.inline || dom.select('td.mceSelected,th.mceSelected').length) { // Obtain selection node before selection is unselected by applyRngStyle() var curSelNode = ed.selection.getNode(); // Apply formatting to selection ed.selection.setRng(adjustSelectionToVisibleSelection()); bookmark = selection.getBookmark(); applyRngStyle(expandRng(selection.getRng(TRUE), formatList), bookmark); // Colored nodes should be underlined so that the color of the underline matches the text color. if (format.styles && (format.styles.color || format.styles.textDecoration)) { tinymce.walk(curSelNode, processUnderlineAndColor, 'childNodes'); processUnderlineAndColor(curSelNode); } selection.moveToBookmark(bookmark); selection.setRng(moveStart(selection.getRng(TRUE))); ed.nodeChanged(); } else performCaretAction('apply', name, vars); } } }; function remove(name, vars, node) { var formatList = get(name), format = formatList[0], bookmark, i, rng; function moveStart(rng) { var container = rng.startContainer, offset = rng.startOffset, walker, node, nodes, tmpNode; // Convert text node into index if possible if (container.nodeType == 3 && offset >= container.nodeValue.length - 1) { container = container.parentNode; offset = nodeIndex(container) + 1; } // Move startContainer/startOffset in to a suitable node if (container.nodeType == 1) { nodes = container.childNodes; container = nodes[Math.min(offset, nodes.length - 1)]; walker = new TreeWalker(container); // If offset is at end of the parent node walk to the next one if (offset > nodes.length - 1) walker.next(); for (node = walker.current(); node; node = walker.next()) { if (node.nodeType == 3 && !isWhiteSpaceNode(node)) { // IE has a "neat" feature where it moves the start node into the closest element // we can avoid this by inserting an element before it and then remove it after we set the selection tmpNode = dom.create('a', null, INVISIBLE_CHAR); node.parentNode.insertBefore(tmpNode, node); // Set selection and remove tmpNode rng.setStart(node, 0); selection.setRng(rng); dom.remove(tmpNode); return; } } } }; // Merges the styles for each node function process(node) { var children, i, l; // Grab the children first since the nodelist might be changed children = tinymce.grep(node.childNodes); // Process current node for (i = 0, l = formatList.length; i < l; i++) { if (removeFormat(formatList[i], vars, node, node)) break; } // Process the children if (format.deep) { for (i = 0, l = children.length; i < l; i++) process(children[i]); } }; function findFormatRoot(container) { var formatRoot; // Find format root each(getParents(container.parentNode).reverse(), function(parent) { var format; // Find format root element if (!formatRoot && parent.id != '_start' && parent.id != '_end') { // Is the node matching the format we are looking for format = matchNode(parent, name, vars); if (format && format.split !== false) formatRoot = parent; } }); return formatRoot; }; function wrapAndSplit(format_root, container, target, split) { var parent, clone, lastClone, firstClone, i, formatRootParent; // Format root found then clone formats and split it if (format_root) { formatRootParent = format_root.parentNode; for (parent = container.parentNode; parent && parent != formatRootParent; parent = parent.parentNode) { clone = parent.cloneNode(FALSE); for (i = 0; i < formatList.length; i++) { if (removeFormat(formatList[i], vars, clone, clone)) { clone = 0; break; } } // Build wrapper node if (clone) { if (lastClone) clone.appendChild(lastClone); if (!firstClone) firstClone = clone; lastClone = clone; } } // Never split block elements if the format is mixed if (split && (!format.mixed || !isBlock(format_root))) container = dom.split(format_root, container); // Wrap container in cloned formats if (lastClone) { target.parentNode.insertBefore(lastClone, target); firstClone.appendChild(target); } } return container; }; function splitToFormatRoot(container) { return wrapAndSplit(findFormatRoot(container), container, container, true); }; function unwrap(start) { var node = dom.get(start ? '_start' : '_end'), out = node[start ? 'firstChild' : 'lastChild']; // If the end is placed within the start the result will be removed // So this checks if the out node is a bookmark node if it is it // checks for another more suitable node if (isBookmarkNode(out)) out = out[start ? 'firstChild' : 'lastChild']; dom.remove(node, true); return out; }; function removeRngStyle(rng) { var startContainer, endContainer; rng = expandRng(rng, formatList, TRUE); if (format.split) { startContainer = getContainer(rng, TRUE); endContainer = getContainer(rng); if (startContainer != endContainer) { // Wrap start/end nodes in span element since these might be cloned/moved startContainer = wrap(startContainer, 'span', {id : '_start', 'data-mce-type' : 'bookmark'}); endContainer = wrap(endContainer, 'span', {id : '_end', 'data-mce-type' : 'bookmark'}); // Split start/end splitToFormatRoot(startContainer); splitToFormatRoot(endContainer); // Unwrap start/end to get real elements again startContainer = unwrap(TRUE); endContainer = unwrap(); } else startContainer = endContainer = splitToFormatRoot(startContainer); // Update range positions since they might have changed after the split operations rng.startContainer = startContainer.parentNode; rng.startOffset = nodeIndex(startContainer); rng.endContainer = endContainer.parentNode; rng.endOffset = nodeIndex(endContainer) + 1; } // Remove items between start/end rangeUtils.walk(rng, function(nodes) { each(nodes, function(node) { process(node); // Remove parent span if it only contains text-decoration: underline, yet a parent node is also underlined. if (node.nodeType === 1 && ed.dom.getStyle(node, 'text-decoration') === 'underline' && node.parentNode && getTextDecoration(node.parentNode) === 'underline') { removeFormat({'deep': false, 'exact': true, 'inline': 'span', 'styles': {'textDecoration' : 'underline'}}, null, node); } }); }); }; // Handle node if (node) { rng = dom.createRng(); rng.setStartBefore(node); rng.setEndAfter(node); removeRngStyle(rng); return; } if (!selection.isCollapsed() || !format.inline || dom.select('td.mceSelected,th.mceSelected').length) { bookmark = selection.getBookmark(); removeRngStyle(selection.getRng(TRUE)); selection.moveToBookmark(bookmark); // Check if start element still has formatting then we are at: "text|text" and need to move the start into the next text node if (match(name, vars, selection.getStart())) { moveStart(selection.getRng(true)); } ed.nodeChanged(); } else performCaretAction('remove', name, vars); }; function toggle(name, vars, node) { var fmt = get(name); if (match(name, vars, node) && (!('toggle' in fmt[0]) || fmt[0]['toggle'])) remove(name, vars, node); else apply(name, vars, node); }; function matchNode(node, name, vars, similar) { var formatList = get(name), format, i, classes; function matchItems(node, format, item_name) { var key, value, items = format[item_name], i; // Custom match if (format.onmatch) { return format.onmatch(node, format, item_name); } // Check all items if (items) { // Non indexed object if (items.length === undefined) { for (key in items) { if (items.hasOwnProperty(key)) { if (item_name === 'attributes') value = dom.getAttrib(node, key); else value = getStyle(node, key); if (similar && !value && !format.exact) return; if ((!similar || format.exact) && !isEq(value, replaceVars(items[key], vars))) return; } } } else { // Only one match needed for indexed arrays for (i = 0; i < items.length; i++) { if (item_name === 'attributes' ? dom.getAttrib(node, items[i]) : getStyle(node, items[i])) return format; } } } return format; }; if (formatList && node) { // Check each format in list for (i = 0; i < formatList.length; i++) { format = formatList[i]; // Name name, attributes, styles and classes if (matchName(node, format) && matchItems(node, format, 'attributes') && matchItems(node, format, 'styles')) { // Match classes if (classes = format.classes) { for (i = 0; i < classes.length; i++) { if (!dom.hasClass(node, classes[i])) return; } } return format; } } } }; function match(name, vars, node) { var startNode, i; function matchParents(node) { // Find first node with similar format settings node = dom.getParent(node, function(node) { return !!matchNode(node, name, vars, true); }); // Do an exact check on the similar format element return matchNode(node, name, vars); }; // Check specified node if (node) return matchParents(node); // Check pending formats if (selection.isCollapsed()) { for (i = pendingFormats.apply.length - 1; i >= 0; i--) { if (pendingFormats.apply[i].name == name) return true; } for (i = pendingFormats.remove.length - 1; i >= 0; i--) { if (pendingFormats.remove[i].name == name) return false; } return matchParents(selection.getNode()); } // Check selected node node = selection.getNode(); if (matchParents(node)) return TRUE; // Check start node if it's different startNode = selection.getStart(); if (startNode != node) { if (matchParents(startNode)) return TRUE; } return FALSE; }; function matchAll(names, vars) { var startElement, matchedFormatNames = [], checkedMap = {}, i, ni, name; // If the selection is collapsed then check pending formats if (selection.isCollapsed()) { for (ni = 0; ni < names.length; ni++) { // If the name is to be removed, then stop it from being added for (i = pendingFormats.remove.length - 1; i >= 0; i--) { name = names[ni]; if (pendingFormats.remove[i].name == name) { checkedMap[name] = true; break; } } } // If the format is to be applied for (i = pendingFormats.apply.length - 1; i >= 0; i--) { for (ni = 0; ni < names.length; ni++) { name = names[ni]; if (!checkedMap[name] && pendingFormats.apply[i].name == name) { checkedMap[name] = true; matchedFormatNames.push(name); } } } } // Check start of selection for formats startElement = selection.getStart(); dom.getParent(startElement, function(node) { var i, name; for (i = 0; i < names.length; i++) { name = names[i]; if (!checkedMap[name] && matchNode(node, name, vars)) { checkedMap[name] = true; matchedFormatNames.push(name); } } }); return matchedFormatNames; }; function canApply(name) { var formatList = get(name), startNode, parents, i, x, selector; if (formatList) { startNode = selection.getStart(); parents = getParents(startNode); for (x = formatList.length - 1; x >= 0; x--) { selector = formatList[x].selector; // Format is not selector based, then always return TRUE if (!selector) return TRUE; for (i = parents.length - 1; i >= 0; i--) { if (dom.is(parents[i], selector)) return TRUE; } } } return FALSE; }; // Expose to public tinymce.extend(this, { get : get, register : register, apply : apply, remove : remove, toggle : toggle, match : match, matchAll : matchAll, matchNode : matchNode, canApply : canApply }); // Private functions function matchName(node, format) { // Check for inline match if (isEq(node, format.inline)) return TRUE; // Check for block match if (isEq(node, format.block)) return TRUE; // Check for selector match if (format.selector) return dom.is(node, format.selector); }; function isEq(str1, str2) { str1 = str1 || ''; str2 = str2 || ''; str1 = '' + (str1.nodeName || str1); str2 = '' + (str2.nodeName || str2); return str1.toLowerCase() == str2.toLowerCase(); }; function getStyle(node, name) { var styleVal = dom.getStyle(node, name); // Force the format to hex if (name == 'color' || name == 'backgroundColor') styleVal = dom.toHex(styleVal); // Opera will return bold as 700 if (name == 'fontWeight' && styleVal == 700) styleVal = 'bold'; return '' + styleVal; }; function replaceVars(value, vars) { if (typeof(value) != "string") value = value(vars); else if (vars) { value = value.replace(/%(\w+)/g, function(str, name) { return vars[name] || str; }); } return value; }; function isWhiteSpaceNode(node) { return node && node.nodeType === 3 && /^([\s\r\n]+|)$/.test(node.nodeValue); }; function wrap(node, name, attrs) { var wrapper = dom.create(name, attrs); node.parentNode.insertBefore(wrapper, node); wrapper.appendChild(node); return wrapper; }; function expandRng(rng, format, remove) { var startContainer = rng.startContainer, startOffset = rng.startOffset, endContainer = rng.endContainer, endOffset = rng.endOffset, sibling, lastIdx, leaf; // This function walks up the tree if there is no siblings before/after the node function findParentContainer(container, child_name, sibling_name, root) { var parent, child; root = root || dom.getRoot(); for (;;) { // Check if we can move up are we at root level or body level parent = container.parentNode; // Stop expanding on block elements or root depending on format if (parent == root || (!format[0].block_expand && isBlock(parent))) return container; for (sibling = parent[child_name]; sibling && sibling != container; sibling = sibling[sibling_name]) { if (sibling.nodeType == 1 && !isBookmarkNode(sibling)) return container; if (sibling.nodeType == 3 && !isWhiteSpaceNode(sibling)) return container; } container = container.parentNode; } return container; }; // This function walks down the tree to find the leaf at the selection. // The offset is also returned as if node initially a leaf, the offset may be in the middle of the text node. function findLeaf(node, offset) { if (offset === undefined) offset = node.nodeType === 3 ? node.length : node.childNodes.length; while (node && node.hasChildNodes()) { node = node.childNodes[offset]; if (node) offset = node.nodeType === 3 ? node.length : node.childNodes.length; } return { node: node, offset: offset }; } // If index based start position then resolve it if (startContainer.nodeType == 1 && startContainer.hasChildNodes()) { lastIdx = startContainer.childNodes.length - 1; startContainer = startContainer.childNodes[startOffset > lastIdx ? lastIdx : startOffset]; if (startContainer.nodeType == 3) startOffset = 0; } // If index based end position then resolve it if (endContainer.nodeType == 1 && endContainer.hasChildNodes()) { lastIdx = endContainer.childNodes.length - 1; endContainer = endContainer.childNodes[endOffset > lastIdx ? lastIdx : endOffset - 1]; if (endContainer.nodeType == 3) endOffset = endContainer.nodeValue.length; } // Exclude bookmark nodes if possible if (isBookmarkNode(startContainer.parentNode)) startContainer = startContainer.parentNode; if (isBookmarkNode(startContainer)) startContainer = startContainer.nextSibling || startContainer; if (isBookmarkNode(endContainer.parentNode)) { endOffset = dom.nodeIndex(endContainer); endContainer = endContainer.parentNode; } if (isBookmarkNode(endContainer) && endContainer.previousSibling) { endContainer = endContainer.previousSibling; endOffset = endContainer.length; } if (format[0].inline) { // Avoid applying formatting to a trailing space. leaf = findLeaf(endContainer, endOffset); if (leaf.node) { while (leaf.node && leaf.offset === 0 && leaf.node.previousSibling) leaf = findLeaf(leaf.node.previousSibling); if (leaf.node && leaf.offset > 0 && leaf.node.nodeType === 3 && leaf.node.nodeValue.charAt(leaf.offset - 1) === ' ') { if (leaf.offset > 1) { endContainer = leaf.node; endContainer.splitText(leaf.offset - 1); } else if (leaf.node.previousSibling) { endContainer = leaf.node.previousSibling; } } } } // Move start/end point up the tree if the leaves are sharp and if we are in different containers // Example * becomes !: !

    *texttext*

    ! // This will reduce the number of wrapper elements that needs to be created // Move start point up the tree if (format[0].inline || format[0].block_expand) { startContainer = findParentContainer(startContainer, 'firstChild', 'nextSibling'); endContainer = findParentContainer(endContainer, 'lastChild', 'previousSibling'); } // Expand start/end container to matching selector if (format[0].selector && format[0].expand !== FALSE && !format[0].inline) { function findSelectorEndPoint(container, sibling_name) { var parents, i, y, curFormat; if (container.nodeType == 3 && container.nodeValue.length == 0 && container[sibling_name]) container = container[sibling_name]; parents = getParents(container); for (i = 0; i < parents.length; i++) { for (y = 0; y < format.length; y++) { curFormat = format[y]; // If collapsed state is set then skip formats that doesn't match that if ("collapsed" in curFormat && curFormat.collapsed !== rng.collapsed) continue; if (dom.is(parents[i], curFormat.selector)) return parents[i]; } } return container; }; // Find new startContainer/endContainer if there is better one startContainer = findSelectorEndPoint(startContainer, 'previousSibling'); endContainer = findSelectorEndPoint(endContainer, 'nextSibling'); } // Expand start/end container to matching block element or text node if (format[0].block || format[0].selector) { function findBlockEndPoint(container, sibling_name, sibling_name2) { var node; // Expand to block of similar type if (!format[0].wrapper) node = dom.getParent(container, format[0].block); // Expand to first wrappable block element or any block element if (!node) node = dom.getParent(container.nodeType == 3 ? container.parentNode : container, isBlock); // Exclude inner lists from wrapping if (node && format[0].wrapper) node = getParents(node, 'ul,ol').reverse()[0] || node; // Didn't find a block element look for first/last wrappable element if (!node) { node = container; while (node[sibling_name] && !isBlock(node[sibling_name])) { node = node[sibling_name]; // Break on BR but include it will be removed later on // we can't remove it now since we need to check if it can be wrapped if (isEq(node, 'br')) break; } } return node || container; }; // Find new startContainer/endContainer if there is better one startContainer = findBlockEndPoint(startContainer, 'previousSibling'); endContainer = findBlockEndPoint(endContainer, 'nextSibling'); // Non block element then try to expand up the leaf if (format[0].block) { if (!isBlock(startContainer)) startContainer = findParentContainer(startContainer, 'firstChild', 'nextSibling'); if (!isBlock(endContainer)) endContainer = findParentContainer(endContainer, 'lastChild', 'previousSibling'); } } // Setup index for startContainer if (startContainer.nodeType == 1) { startOffset = nodeIndex(startContainer); startContainer = startContainer.parentNode; } // Setup index for endContainer if (endContainer.nodeType == 1) { endOffset = nodeIndex(endContainer) + 1; endContainer = endContainer.parentNode; } // Return new range like object return { startContainer : startContainer, startOffset : startOffset, endContainer : endContainer, endOffset : endOffset }; } function removeFormat(format, vars, node, compare_node) { var i, attrs, stylesModified; // Check if node matches format if (!matchName(node, format)) return FALSE; // Should we compare with format attribs and styles if (format.remove != 'all') { // Remove styles each(format.styles, function(value, name) { value = replaceVars(value, vars); // Indexed array if (typeof(name) === 'number') { name = value; compare_node = 0; } if (!compare_node || isEq(getStyle(compare_node, name), value)) dom.setStyle(node, name, ''); stylesModified = 1; }); // Remove style attribute if it's empty if (stylesModified && dom.getAttrib(node, 'style') == '') { node.removeAttribute('style'); node.removeAttribute('data-mce-style'); } // Remove attributes each(format.attributes, function(value, name) { var valueOut; value = replaceVars(value, vars); // Indexed array if (typeof(name) === 'number') { name = value; compare_node = 0; } if (!compare_node || isEq(dom.getAttrib(compare_node, name), value)) { // Keep internal classes if (name == 'class') { value = dom.getAttrib(node, name); if (value) { // Build new class value where everything is removed except the internal prefixed classes valueOut = ''; each(value.split(/\s+/), function(cls) { if (/mce\w+/.test(cls)) valueOut += (valueOut ? ' ' : '') + cls; }); // We got some internal classes left if (valueOut) { dom.setAttrib(node, name, valueOut); return; } } } // IE6 has a bug where the attribute doesn't get removed correctly if (name == "class") node.removeAttribute('className'); // Remove mce prefixed attributes if (MCE_ATTR_RE.test(name)) node.removeAttribute('data-mce-' + name); node.removeAttribute(name); } }); // Remove classes each(format.classes, function(value) { value = replaceVars(value, vars); if (!compare_node || dom.hasClass(compare_node, value)) dom.removeClass(node, value); }); // Check for non internal attributes attrs = dom.getAttribs(node); for (i = 0; i < attrs.length; i++) { if (attrs[i].nodeName.indexOf('_') !== 0) return FALSE; } } // Remove the inline child if it's empty for example or if (format.remove != 'none') { removeNode(node, format); return TRUE; } }; function removeNode(node, format) { var parentNode = node.parentNode, rootBlockElm; if (format.block) { if (!forcedRootBlock) { function find(node, next, inc) { node = getNonWhiteSpaceSibling(node, next, inc); return !node || (node.nodeName == 'BR' || isBlock(node)); }; // Append BR elements if needed before we remove the block if (isBlock(node) && !isBlock(parentNode)) { if (!find(node, FALSE) && !find(node.firstChild, TRUE, 1)) node.insertBefore(dom.create('br'), node.firstChild); if (!find(node, TRUE) && !find(node.lastChild, FALSE, 1)) node.appendChild(dom.create('br')); } } else { // Wrap the block in a forcedRootBlock if we are at the root of document if (parentNode == dom.getRoot()) { if (!format.list_block || !isEq(node, format.list_block)) { each(tinymce.grep(node.childNodes), function(node) { if (isValid(forcedRootBlock, node.nodeName.toLowerCase())) { if (!rootBlockElm) rootBlockElm = wrap(node, forcedRootBlock); else rootBlockElm.appendChild(node); } else rootBlockElm = 0; }); } } } } // Never remove nodes that isn't the specified inline element if a selector is specified too if (format.selector && format.inline && !isEq(format.inline, node)) return; dom.remove(node, 1); }; function getNonWhiteSpaceSibling(node, next, inc) { if (node) { next = next ? 'nextSibling' : 'previousSibling'; for (node = inc ? node : node[next]; node; node = node[next]) { if (node.nodeType == 1 || !isWhiteSpaceNode(node)) return node; } } }; function isBookmarkNode(node) { return node && node.nodeType == 1 && node.getAttribute('data-mce-type') == 'bookmark'; }; function mergeSiblings(prev, next) { var marker, sibling, tmpSibling; function compareElements(node1, node2) { // Not the same name if (node1.nodeName != node2.nodeName) return FALSE; function getAttribs(node) { var attribs = {}; each(dom.getAttribs(node), function(attr) { var name = attr.nodeName.toLowerCase(); // Don't compare internal attributes or style if (name.indexOf('_') !== 0 && name !== 'style') attribs[name] = dom.getAttrib(node, name); }); return attribs; }; function compareObjects(obj1, obj2) { var value, name; for (name in obj1) { // Obj1 has item obj2 doesn't have if (obj1.hasOwnProperty(name)) { value = obj2[name]; // Obj2 doesn't have obj1 item if (value === undefined) return FALSE; // Obj2 item has a different value if (obj1[name] != value) return FALSE; // Delete similar value delete obj2[name]; } } // Check if obj 2 has something obj 1 doesn't have for (name in obj2) { // Obj2 has item obj1 doesn't have if (obj2.hasOwnProperty(name)) return FALSE; } return TRUE; }; // Attribs are not the same if (!compareObjects(getAttribs(node1), getAttribs(node2))) return FALSE; // Styles are not the same if (!compareObjects(dom.parseStyle(dom.getAttrib(node1, 'style')), dom.parseStyle(dom.getAttrib(node2, 'style')))) return FALSE; return TRUE; }; // Check if next/prev exists and that they are elements if (prev && next) { function findElementSibling(node, sibling_name) { for (sibling = node; sibling; sibling = sibling[sibling_name]) { if (sibling.nodeType == 3 && sibling.nodeValue.length !== 0) return node; if (sibling.nodeType == 1 && !isBookmarkNode(sibling)) return sibling; } return node; }; // If previous sibling is empty then jump over it prev = findElementSibling(prev, 'previousSibling'); next = findElementSibling(next, 'nextSibling'); // Compare next and previous nodes if (compareElements(prev, next)) { // Append nodes between for (sibling = prev.nextSibling; sibling && sibling != next;) { tmpSibling = sibling; sibling = sibling.nextSibling; prev.appendChild(tmpSibling); } // Remove next node dom.remove(next); // Move children into prev node each(tinymce.grep(next.childNodes), function(node) { prev.appendChild(node); }); return prev; } } return next; }; function isTextBlock(name) { return /^(h[1-6]|p|div|pre|address|dl|dt|dd)$/.test(name); }; function getContainer(rng, start) { var container, offset, lastIdx; container = rng[start ? 'startContainer' : 'endContainer']; offset = rng[start ? 'startOffset' : 'endOffset']; if (container.nodeType == 1) { lastIdx = container.childNodes.length - 1; if (!start && offset) offset--; container = container.childNodes[offset > lastIdx ? lastIdx : offset]; } return container; }; function performCaretAction(type, name, vars) { var i, currentPendingFormats = pendingFormats[type], otherPendingFormats = pendingFormats[type == 'apply' ? 'remove' : 'apply']; function hasPending() { return pendingFormats.apply.length || pendingFormats.remove.length; }; function resetPending() { pendingFormats.apply = []; pendingFormats.remove = []; }; function perform(caret_node) { // Apply pending formats each(pendingFormats.apply.reverse(), function(item) { apply(item.name, item.vars, caret_node); // Colored nodes should be underlined so that the color of the underline matches the text color. if (item.name === 'forecolor' && item.vars.value) processUnderlineAndColor(caret_node.parentNode); }); // Remove pending formats each(pendingFormats.remove.reverse(), function(item) { remove(item.name, item.vars, caret_node); }); dom.remove(caret_node, 1); resetPending(); }; // Check if it already exists then ignore it for (i = currentPendingFormats.length - 1; i >= 0; i--) { if (currentPendingFormats[i].name == name) return; } currentPendingFormats.push({name : name, vars : vars}); // Check if it's in the other type, then remove it for (i = otherPendingFormats.length - 1; i >= 0; i--) { if (otherPendingFormats[i].name == name) otherPendingFormats.splice(i, 1); } // Pending apply or remove formats if (hasPending()) { ed.getDoc().execCommand('FontName', false, 'mceinline'); pendingFormats.lastRng = selection.getRng(); // IE will convert the current word each(dom.select('font,span'), function(node) { var bookmark; if (isCaretNode(node)) { bookmark = selection.getBookmark(); perform(node); selection.moveToBookmark(bookmark); ed.nodeChanged(); } }); // Only register listeners once if we need to if (!pendingFormats.isListening && hasPending()) { pendingFormats.isListening = true; function performPendingFormat(node, textNode) { var rng = dom.createRng(); perform(node); rng.setStart(textNode, textNode.nodeValue.length); rng.setEnd(textNode, textNode.nodeValue.length); selection.setRng(rng); ed.nodeChanged(); } var enterKeyPressed = false; each('onKeyDown,onKeyUp,onKeyPress,onMouseUp'.split(','), function(event) { ed[event].addToTop(function(ed, e) { if (e.keyCode==13 && !e.shiftKey) { enterKeyPressed = true; return; } // Do we have pending formats and is the selection moved has moved if (hasPending() && !tinymce.dom.RangeUtils.compareRanges(pendingFormats.lastRng, selection.getRng())) { var foundCaret = false; each(dom.select('font,span'), function(node) { var textNode, rng; // Look for marker if (isCaretNode(node)) { foundCaret = true; textNode = node.firstChild; // Find the first text node within node while (textNode && textNode.nodeType != 3) textNode = textNode.firstChild; if (textNode) performPendingFormat(node, textNode); else dom.remove(node); } }); // no caret - so we are if (enterKeyPressed && !foundCaret) { var node = selection.getNode(); var textNode = node; // Find the first text node within node while (textNode && textNode.nodeType != 3) textNode = textNode.firstChild; if (textNode) { node=textNode.parentNode; while (!isBlock(node)){ node=node.parentNode; } performPendingFormat(node, textNode); } } // Always unbind and clear pending styles on keyup if (e.type == 'keyup' || e.type == 'mouseup') { resetPending(); enterKeyPressed=false; } } }); }); } } }; }; })(tinymce); tinymce.onAddEditor.add(function(tinymce, ed) { var filters, fontSizes, dom, settings = ed.settings; if (settings.inline_styles) { fontSizes = tinymce.explode(settings.font_size_style_values); function replaceWithSpan(node, styles) { tinymce.each(styles, function(value, name) { if (value) dom.setStyle(node, name, value); }); dom.rename(node, 'span'); }; filters = { font : function(dom, node) { replaceWithSpan(node, { backgroundColor : node.style.backgroundColor, color : node.color, fontFamily : node.face, fontSize : fontSizes[parseInt(node.size) - 1] }); }, u : function(dom, node) { replaceWithSpan(node, { textDecoration : 'underline' }); }, strike : function(dom, node) { replaceWithSpan(node, { textDecoration : 'line-through' }); } }; function convert(editor, params) { dom = editor.dom; if (settings.convert_fonts_to_spans) { tinymce.each(dom.select('font,u,strike', params.node), function(node) { filters[node.nodeName.toLowerCase()](ed.dom, node); }); } }; ed.onPreProcess.add(convert); ed.onSetContent.add(convert); ed.onInit.add(function() { ed.selection.onSetContent.add(convert); }); } }); webcit-8.24-dfsg.orig/tiny_mce/tiny_mce.js0000644000175000017500000061703412271477123020367 0ustar michaelmichael(function(d){var a=/^\s*|\s*$/g,e,c="B".replace(/A(.)|B/,"$1")==="$1";var b={majorVersion:"3",minorVersion:"4.5",releaseDate:"2011-09-06",_init:function(){var s=this,q=document,o=navigator,g=o.userAgent,m,f,l,k,j,r;s.isOpera=d.opera&&opera.buildNumber;s.isWebKit=/WebKit/.test(g);s.isIE=!s.isWebKit&&!s.isOpera&&(/MSIE/gi).test(g)&&(/Explorer/gi).test(o.appName);s.isIE6=s.isIE&&/MSIE [56]/.test(g);s.isIE7=s.isIE&&/MSIE [7]/.test(g);s.isIE8=s.isIE&&/MSIE [8]/.test(g);s.isIE9=s.isIE&&/MSIE [9]/.test(g);s.isGecko=!s.isWebKit&&/Gecko/.test(g);s.isMac=g.indexOf("Mac")!=-1;s.isAir=/adobeair/i.test(g);s.isIDevice=/(iPad|iPhone)/.test(g);s.isIOS5=s.isIDevice&&g.match(/AppleWebKit\/(\d*)/)[1]>=534;if(d.tinyMCEPreInit){s.suffix=tinyMCEPreInit.suffix;s.baseURL=tinyMCEPreInit.base;s.query=tinyMCEPreInit.query;return}s.suffix="";f=q.getElementsByTagName("base");for(m=0;m=c.length){for(e=0,b=g.length;e=c.length||g[e]!=c[e]){f=e+1;break}}}if(g.length=g.length||g[e]!=c[e]){f=e+1;break}}}if(f==1){return h}for(e=0,b=g.length-(f-1);e=0;c--){if(f[c].length==0||f[c]=="."){continue}if(f[c]==".."){b++;continue}if(b>0){b--;continue}h.push(f[c])}c=e.length-b;if(c<=0){g=h.reverse().join("/")}else{g=e.slice(0,c).join("/")+"/"+h.reverse().join("/")}if(g.indexOf("/")!==0){g="/"+g}if(d&&g.lastIndexOf("/")!==g.length-1){g+=d}return g},getURI:function(d){var c,b=this;if(!b.source||d){c="";if(!d){if(b.protocol){c+=b.protocol+"://"}if(b.userInfo){c+=b.userInfo+"@"}if(b.host){c+=b.host}if(b.port){c+=":"+b.port}}if(b.path){c+=b.path}if(b.query){c+="?"+b.query}if(b.anchor){c+="#"+b.anchor}b.source=c}return b.source}})})();(function(){var a=tinymce.each;tinymce.create("static tinymce.util.Cookie",{getHash:function(d){var b=this.get(d),c;if(b){a(b.split("&"),function(e){e=e.split("=");c=c||{};c[unescape(e[0])]=unescape(e[1])})}return c},setHash:function(j,b,g,f,i,c){var h="";a(b,function(e,d){h+=(!h?"":"&")+escape(d)+"="+escape(e)});this.set(j,h,g,f,i,c)},get:function(i){var h=document.cookie,g,f=i+"=",d;if(!h){return}d=h.indexOf("; "+f);if(d==-1){d=h.indexOf(f);if(d!=0){return null}}else{d+=2}g=h.indexOf(";",d);if(g==-1){g=h.length}return unescape(h.substring(d+f.length,g))},set:function(i,b,g,f,h,c){document.cookie=i+"="+escape(b)+((g)?"; expires="+g.toGMTString():"")+((f)?"; path="+escape(f):"")+((h)?"; domain="+h:"")+((c)?"; secure":"")},remove:function(e,b){var c=new Date();c.setTime(c.getTime()-1000);this.set(e,"",c,b,c)}})})();(function(){function serialize(o,quote){var i,v,t;quote=quote||'"';if(o==null){return"null"}t=typeof o;if(t=="string"){v="\bb\tt\nn\ff\rr\"\"''\\\\";return quote+o.replace(/([\u0080-\uFFFF\x00-\x1f\"\'\\])/g,function(a,b){if(quote==='"'&&a==="'"){return a}i=v.indexOf(b);if(i+1){return"\\"+v.charAt(i+1)}a=b.charCodeAt().toString(16);return"\\u"+"0000".substring(a.length)+a})+quote}if(t=="object"){if(o.hasOwnProperty&&o instanceof Array){for(i=0,v="[";i0?",":"")+serialize(o[i],quote)}return v+"]"}v="{";for(i in o){v+=typeof o[i]!="function"?(v.length>1?","+quote:quote)+i+quote+":"+serialize(o[i],quote):""}return v+"}"}return""+o}tinymce.util.JSON={serialize:serialize,parse:function(s){try{return eval("("+s+")")}catch(ex){}}}})();tinymce.create("static tinymce.util.XHR",{send:function(g){var a,e,b=window,h=0;g.scope=g.scope||this;g.success_scope=g.success_scope||g.scope;g.error_scope=g.error_scope||g.scope;g.async=g.async===false?false:true;g.data=g.data||"";function d(i){a=0;try{a=new ActiveXObject(i)}catch(c){}return a}a=b.XMLHttpRequest?new XMLHttpRequest():d("Microsoft.XMLHTTP")||d("Msxml2.XMLHTTP");if(a){if(a.overrideMimeType){a.overrideMimeType(g.content_type)}a.open(g.type||(g.data?"POST":"GET"),g.url,g.async);if(g.content_type){a.setRequestHeader("Content-Type",g.content_type)}a.setRequestHeader("X-Requested-With","XMLHttpRequest");a.send(g.data);function f(){if(!g.async||a.readyState==4||h++>10000){if(g.success&&h<10000&&a.status==200){g.success.call(g.success_scope,""+a.responseText,a,g)}else{if(g.error){g.error.call(g.error_scope,h>10000?"TIMED_OUT":"GENERAL",a,g)}}a=null}else{b.setTimeout(f,10)}}if(!g.async){return f()}e=b.setTimeout(f,10)}}});(function(){var c=tinymce.extend,b=tinymce.util.JSON,a=tinymce.util.XHR;tinymce.create("tinymce.util.JSONRequest",{JSONRequest:function(d){this.settings=c({},d);this.count=0},send:function(f){var e=f.error,d=f.success;f=c(this.settings,f);f.success=function(h,g){h=b.parse(h);if(typeof(h)=="undefined"){h={error:"JSON Parse error."}}if(h.error){e.call(f.error_scope||f.scope,h.error,g)}else{d.call(f.success_scope||f.scope,h.result)}};f.error=function(h,g){if(e){e.call(f.error_scope||f.scope,h,g)}};f.data=b.serialize({id:f.id||"c"+(this.count++),method:f.method,params:f.params});f.content_type="application/json";a.send(f)},"static":{sendRPC:function(d){return new tinymce.util.JSONRequest().send(d)}}})}());(function(a){a.VK={DELETE:46,BACKSPACE:8}})(tinymce);(function(d){var f=d.VK,e=f.BACKSPACE,c=f.DELETE;function b(g){var i=g.dom,h=g.selection;g.onKeyDown.add(function(k,o){var j,p,m,n,l;l=o.keyCode==c;if(l||o.keyCode==e){o.preventDefault();j=h.getRng();p=i.getParent(j.startContainer,i.isBlock);if(l){p=i.getNext(p,i.isBlock)}if(p){m=p.firstChild;if(m&&m.nodeName==="SPAN"){n=m.cloneNode(false)}}k.getDoc().execCommand(l?"ForwardDelete":"Delete",false,null);p=i.getParent(j.startContainer,i.isBlock);d.each(i.select("span.Apple-style-span,font.Apple-style-span",p),function(r){var q=i.createRng();q.setStartBefore(r);q.setEndBefore(r);if(n){i.replace(n.cloneNode(false),r,true)}else{i.remove(r,true)}h.setRng(q)})}})}function a(g){g.onKeyUp.add(function(h,j){var i=j.keyCode;if(i==c||i==e){if(h.dom.isEmpty(h.getBody())){h.setContent("",{format:"raw"});h.nodeChanged();return}}})}d.create("tinymce.util.Quirks",{Quirks:function(g){if(d.isWebKit){b(g);a(g)}if(d.isIE){a(g)}}})})(tinymce);(function(j){var a,g,d,k=/[&<>\"\u007E-\uD7FF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,b=/[<>&\u007E-\uD7FF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,f=/[<>&\"\']/g,c=/&(#x|#)?([\w]+);/g,i={128:"\u20AC",130:"\u201A",131:"\u0192",132:"\u201E",133:"\u2026",134:"\u2020",135:"\u2021",136:"\u02C6",137:"\u2030",138:"\u0160",139:"\u2039",140:"\u0152",142:"\u017D",145:"\u2018",146:"\u2019",147:"\u201C",148:"\u201D",149:"\u2022",150:"\u2013",151:"\u2014",152:"\u02DC",153:"\u2122",154:"\u0161",155:"\u203A",156:"\u0153",158:"\u017E",159:"\u0178"};g={'"':""","'":"'","<":"<",">":">","&":"&"};d={"<":"<",">":">","&":"&",""":'"',"'":"'"};function h(l){var m;m=document.createElement("div");m.innerHTML=l;return m.textContent||m.innerText||l}function e(m,p){var n,o,l,q={};if(m){m=m.split(",");p=p||10;for(n=0;n1){return"&#"+(((n.charCodeAt(0)-55296)*1024)+(n.charCodeAt(1)-56320)+65536)+";"}return g[n]||"&#"+n.charCodeAt(0)+";"})},encodeNamed:function(n,l,m){m=m||a;return n.replace(l?k:b,function(o){return g[o]||m[o]||o})},getEncodeFunc:function(l,o){var p=j.html.Entities;o=e(o)||a;function m(r,q){return r.replace(q?k:b,function(s){return g[s]||o[s]||"&#"+s.charCodeAt(0)+";"||s})}function n(r,q){return p.encodeNamed(r,q,o)}l=j.makeMap(l.replace(/\+/g,","));if(l.named&&l.numeric){return m}if(l.named){if(o){return n}return p.encodeNamed}if(l.numeric){return p.encodeNumeric}return p.encodeRaw},decode:function(l){return l.replace(c,function(n,m,o){if(m){o=parseInt(o,m.length===2?16:10);if(o>65535){o-=65536;return String.fromCharCode(55296+(o>>10),56320+(o&1023))}else{return i[o]||String.fromCharCode(o)}}return d[n]||a[n]||h(n)})}}})(tinymce);tinymce.html.Styles=function(d,f){var k=/rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\s*\)/gi,h=/(?:url(?:(?:\(\s*\"([^\"]+)\"\s*\))|(?:\(\s*\'([^\']+)\'\s*\))|(?:\(\s*([^)\s]+)\s*\))))|(?:\'([^\']+)\')|(?:\"([^\"]+)\")/gi,b=/\s*([^:]+):\s*([^;]+);?/g,l=/\s+$/,m=/rgb/,e,g,a={},j;d=d||{};j="\\\" \\' \\; \\: ; : \uFEFF".split(" ");for(g=0;g1?r:"0"+r}return"#"+o(q)+o(p)+o(i)}return{toHex:function(i){return i.replace(k,c)},parse:function(r){var y={},p,n,v,q,u=d.url_converter,x=d.url_converter_scope||this;function o(C,F){var E,B,A,D;E=y[C+"-top"+F];if(!E){return}B=y[C+"-right"+F];if(E!=B){return}A=y[C+"-bottom"+F];if(B!=A){return}D=y[C+"-left"+F];if(A!=D){return}y[C+F]=D;delete y[C+"-top"+F];delete y[C+"-right"+F];delete y[C+"-bottom"+F];delete y[C+"-left"+F]}function t(B){var C=y[B],A;if(!C||C.indexOf(" ")<0){return}C=C.split(" ");A=C.length;while(A--){if(C[A]!==C[0]){return false}}y[B]=C[0];return true}function z(C,B,A,D){if(!t(B)){return}if(!t(A)){return}if(!t(D)){return}y[C]=y[B]+" "+y[A]+" "+y[D];delete y[B];delete y[A];delete y[D]}function s(A){q=true;return a[A]}function i(B,A){if(q){B=B.replace(/\uFEFF[0-9]/g,function(C){return a[C]})}if(!A){B=B.replace(/\\([\'\";:])/g,"$1")}return B}if(r){r=r.replace(/\\[\"\';:\uFEFF]/g,s).replace(/\"[^\"]+\"|\'[^\']+\'/g,function(A){return A.replace(/[;:]/g,s)});while(p=b.exec(r)){n=p[1].replace(l,"").toLowerCase();v=p[2].replace(l,"");if(n&&v.length>0){if(n==="font-weight"&&v==="700"){v="bold"}else{if(n==="color"||n==="background-color"){v=v.toLowerCase()}}v=v.replace(k,c);v=v.replace(h,function(B,A,E,D,F,C){F=F||C;if(F){F=i(F);return"'"+F.replace(/\'/g,"\\'")+"'"}A=i(A||E||D);if(u){A=u.call(x,A,"style")}return"url('"+A.replace(/\'/g,"\\'")+"')"});y[n]=q?i(v,true):v}b.lastIndex=p.index+p[0].length}o("border","");o("border","-width");o("border","-color");o("border","-style");o("padding","");o("margin","");z("border","border-width","border-style","border-color");if(y.border==="medium none"){delete y.border}}return y},serialize:function(p,r){var o="",n,q;function i(t){var x,u,s,v;x=f.styles[t];if(x){for(u=0,s=x.length;u0){o+=(o.length>0?" ":"")+t+": "+v+";"}}}}if(r&&f&&f.styles){i("*");i(r)}else{for(n in p){q=p[n];if(q!==e&&q.length>0){o+=(o.length>0?" ":"")+n+": "+q+";"}}}return o}}};(function(m){var h={},j,l,g,f,c={},b,e,d=m.makeMap,k=m.each;function i(o,n){return o.split(n||",")}function a(r,q){var o,p={};function n(s){return s.replace(/[A-Z]+/g,function(t){return n(r[t])})}for(o in r){if(r.hasOwnProperty(o)){r[o]=n(r[o])}}n(q).replace(/#/g,"#text").replace(/(\w+)\[([^\]]+)\]\[([^\]]*)\]/g,function(v,t,s,u){s=i(s,"|");p[t]={attributes:d(s),attributesOrder:s,children:d(u,"|",{"#comment":{}})}});return p}l="h1,h2,h3,h4,h5,h6,hr,p,div,address,pre,form,table,tbody,thead,tfoot,th,tr,td,li,ol,ul,caption,blockquote,center,dl,dt,dd,dir,fieldset,noscript,menu,isindex,samp,header,footer,article,section,hgroup";l=d(l,",",d(l.toUpperCase()));h=a({Z:"H|K|N|O|P",Y:"X|form|R|Q",ZG:"E|span|width|align|char|charoff|valign",X:"p|T|div|U|W|isindex|fieldset|table",ZF:"E|align|char|charoff|valign",W:"pre|hr|blockquote|address|center|noframes",ZE:"abbr|axis|headers|scope|rowspan|colspan|align|char|charoff|valign|nowrap|bgcolor|width|height",ZD:"[E][S]",U:"ul|ol|dl|menu|dir",ZC:"p|Y|div|U|W|table|br|span|bdo|object|applet|img|map|K|N|Q",T:"h1|h2|h3|h4|h5|h6",ZB:"X|S|Q",S:"R|P",ZA:"a|G|J|M|O|P",R:"a|H|K|N|O",Q:"noscript|P",P:"ins|del|script",O:"input|select|textarea|label|button",N:"M|L",M:"em|strong|dfn|code|q|samp|kbd|var|cite|abbr|acronym",L:"sub|sup",K:"J|I",J:"tt|i|b|u|s|strike",I:"big|small|font|basefont",H:"G|F",G:"br|span|bdo",F:"object|applet|img|map|iframe",E:"A|B|C",D:"accesskey|tabindex|onfocus|onblur",C:"onclick|ondblclick|onmousedown|onmouseup|onmouseover|onmousemove|onmouseout|onkeypress|onkeydown|onkeyup",B:"lang|xml:lang|dir",A:"id|class|style|title"},"script[id|charset|type|language|src|defer|xml:space][]style[B|id|type|media|title|xml:space][]object[E|declare|classid|codebase|data|type|codetype|archive|standby|width|height|usemap|name|tabindex|align|border|hspace|vspace][#|param|Y]param[id|name|value|valuetype|type][]p[E|align][#|S]a[E|D|charset|type|name|href|hreflang|rel|rev|shape|coords|target][#|Z]br[A|clear][]span[E][#|S]bdo[A|C|B][#|S]applet[A|codebase|archive|code|object|alt|name|width|height|align|hspace|vspace][#|param|Y]h1[E|align][#|S]img[E|src|alt|name|longdesc|width|height|usemap|ismap|align|border|hspace|vspace][]map[B|C|A|name][X|form|Q|area]h2[E|align][#|S]iframe[A|longdesc|name|src|frameborder|marginwidth|marginheight|scrolling|align|width|height][#|Y]h3[E|align][#|S]tt[E][#|S]i[E][#|S]b[E][#|S]u[E][#|S]s[E][#|S]strike[E][#|S]big[E][#|S]small[E][#|S]font[A|B|size|color|face][#|S]basefont[id|size|color|face][]em[E][#|S]strong[E][#|S]dfn[E][#|S]code[E][#|S]q[E|cite][#|S]samp[E][#|S]kbd[E][#|S]var[E][#|S]cite[E][#|S]abbr[E][#|S]acronym[E][#|S]sub[E][#|S]sup[E][#|S]input[E|D|type|name|value|checked|disabled|readonly|size|maxlength|src|alt|usemap|onselect|onchange|accept|align][]select[E|name|size|multiple|disabled|tabindex|onfocus|onblur|onchange][optgroup|option]optgroup[E|disabled|label][option]option[E|selected|disabled|label|value][]textarea[E|D|name|rows|cols|disabled|readonly|onselect|onchange][]label[E|for|accesskey|onfocus|onblur][#|S]button[E|D|name|value|type|disabled][#|p|T|div|U|W|table|G|object|applet|img|map|K|N|Q]h4[E|align][#|S]ins[E|cite|datetime][#|Y]h5[E|align][#|S]del[E|cite|datetime][#|Y]h6[E|align][#|S]div[E|align][#|Y]ul[E|type|compact][li]li[E|type|value][#|Y]ol[E|type|compact|start][li]dl[E|compact][dt|dd]dt[E][#|S]dd[E][#|Y]menu[E|compact][li]dir[E|compact][li]pre[E|width|xml:space][#|ZA]hr[E|align|noshade|size|width][]blockquote[E|cite][#|Y]address[E][#|S|p]center[E][#|Y]noframes[E][#|Y]isindex[A|B|prompt][]fieldset[E][#|legend|Y]legend[E|accesskey|align][#|S]table[E|summary|width|border|frame|rules|cellspacing|cellpadding|align|bgcolor][caption|col|colgroup|thead|tfoot|tbody|tr]caption[E|align][#|S]col[ZG][]colgroup[ZG][col]thead[ZF][tr]tr[ZF|bgcolor][th|td]th[E|ZE][#|Y]form[E|action|method|name|enctype|onsubmit|onreset|accept|accept-charset|target][#|X|R|Q]noscript[E][#|Y]td[E|ZE][#|Y]tfoot[ZF][tr]tbody[ZF][tr]area[E|D|shape|coords|href|nohref|alt|target][]base[id|href|target][]body[E|onload|onunload|background|bgcolor|text|link|vlink|alink][#|Y]");j=d("checked,compact,declare,defer,disabled,ismap,multiple,nohref,noresize,noshade,nowrap,readonly,selected,autoplay,loop,controls");g=d("area,base,basefont,br,col,frame,hr,img,input,isindex,link,meta,param,embed,source");f=m.extend(d("td,th,iframe,video,audio,object"),g);b=d("pre,script,style,textarea");e=d("colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr");m.html.Schema=function(r){var A=this,n={},o={},y=[],q,p;r=r||{};if(r.verify_html===false){r.valid_elements="*[*]"}if(r.valid_styles){q={};k(r.valid_styles,function(C,B){q[B]=m.explode(C)})}p=r.whitespace_elements?d(r.whitespace_elements):b;function z(B){return new RegExp("^"+B.replace(/([?+*])/g,".$1")+"$")}function t(I){var H,D,W,S,X,C,F,R,U,N,V,Z,L,G,T,B,P,E,Y,aa,M,Q,K=/^([#+-])?([^\[\/]+)(?:\/([^\[]+))?(?:\[([^\]]+)\])?$/,O=/^([!\-])?(\w+::\w+|[^=:<]+)?(?:([=:<])(.*))?$/,J=/[*?+]/;if(I){I=i(I);if(n["@"]){P=n["@"].attributes;E=n["@"].attributesOrder}for(H=0,D=I.length;H=0){for(T=z.length-1;T>=U;T--){S=z[T];if(S.valid){n.end(S.name)}}z.length=U}}l=new RegExp("<(?:(?:!--([\\w\\W]*?)-->)|(?:!\\[CDATA\\[([\\w\\W]*?)\\]\\]>)|(?:!DOCTYPE([\\w\\W]*?)>)|(?:\\?([^\\s\\/<>]+) ?([\\w\\W]*?)[?/]>)|(?:\\/([^>]+)>)|(?:([^\\s\\/<>]+)\\s*((?:[^\"'>]+(?:(?:\"[^\"]*\")|(?:'[^']*')|[^>]*))*)>))","g");C=/([\w:\-]+)(?:\s*=\s*(?:(?:\"((?:\\.|[^\"])*)\")|(?:\'((?:\\.|[^\'])*)\')|([^>\s]+)))?/g;J={script:/<\/script[^>]*>/gi,style:/<\/style[^>]*>/gi,noscript:/<\/noscript[^>]*>/gi};L=e.getShortEndedElements();I=e.getSelfClosingElements();G=e.getBoolAttrs();u=c.validate;r=c.remove_internals;x=c.fix_self_closing;p=a.isIE;o=/^:/;while(g=l.exec(D)){if(F0&&z[z.length-1].name===H){t(H)}if(!u||(m=e.getElementRule(H))){k=true;if(u){O=m.attributes;E=m.attributePatterns}if(Q=g[8]){y=Q.indexOf("data-mce-type")!==-1;if(y&&r){k=false}M=[];M.map={};Q.replace(C,function(T,S,X,W,V){var Y,U;S=S.toLowerCase();X=S in G?S:j(X||W||V||"");if(u&&!y&&S.indexOf("data-")!==0){Y=O[S];if(!Y&&E){U=E.length;while(U--){Y=E[U];if(Y.pattern.test(S)){break}}if(U===-1){Y=null}}if(!Y){return}if(Y.validValues&&!(X in Y.validValues)){return}}M.map[S]=X;M.push({name:S,value:X})})}else{M=[];M.map={}}if(u&&!y){R=m.attributesRequired;K=m.attributesDefault;f=m.attributesForced;if(f){P=f.length;while(P--){s=f[P];q=s.name;h=s.value;if(h==="{$uid}"){h="mce_"+v++}M.map[q]=h;M.push({name:q,value:h})}}if(K){P=K.length;while(P--){s=K[P];q=s.name;if(!(q in M.map)){h=s.value;if(h==="{$uid}"){h="mce_"+v++}M.map[q]=h;M.push({name:q,value:h})}}}if(R){P=R.length;while(P--){if(R[P] in M.map){break}}if(P===-1){k=false}}if(M.map["data-mce-bogus"]){k=false}}if(k){n.start(H,M,N)}}else{k=false}if(A=J[H]){A.lastIndex=F=g.index+g[0].length;if(g=A.exec(D)){if(k){B=D.substr(F,g.index-F)}F=g.index+g[0].length}else{B=D.substr(F);F=D.length}if(k&&B.length>0){n.text(B,true)}if(k){n.end(H)}l.lastIndex=F;continue}if(!N){if(!Q||Q.indexOf("/")!=Q.length-1){z.push({name:H,valid:k})}else{if(k){n.end(H)}}}}else{if(H=g[1]){n.comment(H)}else{if(H=g[2]){n.cdata(H)}else{if(H=g[3]){n.doctype(H)}else{if(H=g[4]){n.pi(H,g[5])}}}}}}F=g.index+g[0].length}if(F=0;P--){H=z[P];if(H.valid){n.end(H.name)}}}}})(tinymce);(function(d){var c=/^[ \t\r\n]*$/,e={"#text":3,"#comment":8,"#cdata":4,"#pi":7,"#doctype":10,"#document-fragment":11};function a(k,l,j){var i,h,f=j?"lastChild":"firstChild",g=j?"prev":"next";if(k[f]){return k[f]}if(k!==l){i=k[g];if(i){return i}for(h=k.parent;h&&h!==l;h=h.parent){i=h[g];if(i){return i}}}}function b(f,g){this.name=f;this.type=g;if(g===1){this.attributes=[];this.attributes.map={}}}d.extend(b.prototype,{replace:function(g){var f=this;if(g.parent){g.remove()}f.insert(g,f);f.remove();return f},attr:function(h,l){var f=this,g,j,k;if(typeof h!=="string"){for(j in h){f.attr(j,h[j])}return f}if(g=f.attributes){if(l!==k){if(l===null){if(h in g.map){delete g.map[h];j=g.length;while(j--){if(g[j].name===h){g=g.splice(j,1);return f}}}return f}if(h in g.map){j=g.length;while(j--){if(g[j].name===h){g[j].value=l;break}}}else{g.push({name:h,value:l})}g.map[h]=l;return f}else{return g.map[h]}}},clone:function(){var g=this,n=new b(g.name,g.type),h,f,m,j,k;if(m=g.attributes){k=[];k.map={};for(h=0,f=m.length;h1){v.reverse();z=n=f.filterNode(v[0].clone());for(t=0;t0){N.value=l;N=N.prev}else{L=N.prev;N.remove();N=L}}}n=new b.html.SaxParser({validate:y,fix_self_closing:!y,cdata:function(l){A.append(I("#cdata",4)).value=l},text:function(M,l){var L;if(!s[A.name]){M=M.replace(k," ");if(A.lastChild&&o[A.lastChild.name]){M=M.replace(D,"")}}if(M.length!==0){L=I("#text",3);L.raw=!!l;A.append(L).value=M}},comment:function(l){A.append(I("#comment",8)).value=l},pi:function(l,L){A.append(I(l,7)).value=L;G(A)},doctype:function(L){var l;l=A.append(I("#doctype",10));l.value=L;G(A)},start:function(l,T,M){var R,O,N,L,P,U,S,Q;N=y?h.getElementRule(l):{};if(N){R=I(N.outputName||l,1);R.attributes=T;R.shortEnded=M;A.append(R);Q=p[A.name];if(Q&&p[R.name]&&!Q[R.name]){J.push(R)}O=d.length;while(O--){P=d[O].name;if(P in T.map){E=c[P];if(E){E.push(R)}else{c[P]=[R]}}}if(o[l]){G(R)}if(!M){A=R}}},end:function(l){var P,M,O,L,N;M=y?h.getElementRule(l):{};if(M){if(o[l]){if(!s[A.name]){for(P=A.firstChild;P&&P.type===3;){O=P.value.replace(D,"");if(O.length>0){P.value=O;P=P.next}else{L=P.next;P.remove();P=L}}for(P=A.lastChild;P&&P.type===3;){O=P.value.replace(t,"");if(O.length>0){P.value=O;P=P.prev}else{L=P.prev;P.remove();P=L}}}P=A.prev;if(P&&P.type===3){O=P.value.replace(D,"");if(O.length>0){P.value=O}else{P.remove()}}}if(M.removeEmpty||M.paddEmpty){if(A.isEmpty(u)){if(M.paddEmpty){A.empty().append(new a("#text","3")).value="\u00a0"}else{if(!A.attributes.map.name){N=A.parent;A.empty().remove();A=N;return}}}}A=A.parent}}},h);H=A=new a(m.context||g.root_name,11);n.parse(v);if(y&&J.length){if(!m.context){j(J)}else{m.invalid=true}}if(q&&H.name=="body"){F()}if(!m.invalid){for(K in i){E=e[K];z=i[K];x=z.length;while(x--){if(!z[x].parent){z.splice(x,1)}}for(C=0,B=E.length;C0){o=c[c.length-1];if(o.length>0&&o!=="\n"){c.push("\n")}}c.push("<",m);if(k){for(n=0,j=k.length;n0){o=c[c.length-1];if(o.length>0&&o!=="\n"){c.push("\n")}}},end:function(h){var i;c.push("");if(a&&d[h]&&c.length>0){i=c[c.length-1];if(i.length>0&&i!=="\n"){c.push("\n")}}},text:function(i,h){if(i.length>0){c[c.length]=h?i:f(i)}},cdata:function(h){c.push("")},comment:function(h){c.push("")},pi:function(h,i){if(i){c.push("")}else{c.push("")}if(a){c.push("\n")}},doctype:function(h){c.push("",a?"\n":"")},reset:function(){c.length=0},getContent:function(){return c.join("").replace(/\n$/,"")}}};(function(a){a.html.Serializer=function(c,d){var b=this,e=new a.html.Writer(c);c=c||{};c.validate="validate" in c?c.validate:true;b.schema=d=d||new a.html.Schema();b.writer=e;b.serialize=function(h){var g,i;i=c.validate;g={3:function(k,j){e.text(k.value,k.raw)},8:function(j){e.comment(j.value)},7:function(j){e.pi(j.name,j.value)},10:function(j){e.doctype(j.value)},4:function(j){e.cdata(j.value)},11:function(j){if((j=j.firstChild)){do{f(j)}while(j=j.next)}}};e.reset();function f(k){var t=g[k.type],j,o,s,r,p,u,n,m,q;if(!t){j=k.name;o=k.shortEnded;s=k.attributes;if(i&&s&&s.length>1){u=[];u.map={};q=d.getElementRule(k.name);for(n=0,m=q.attributesOrder.length;n=8;l.boxModel=!h.isIE||o.compatMode=="CSS1Compat"||l.stdMode;l.hasOuterHTML="outerHTML" in o.createElement("a");l.settings=m=h.extend({keep_values:false,hex_colors:1},m);l.schema=m.schema;l.styles=new h.html.Styles({url_converter:m.url_converter,url_converter_scope:m.url_converter_scope},m.schema);if(h.isIE6){try{o.execCommand("BackgroundImageCache",false,true)}catch(n){l.cssFlicker=true}}if(b&&m.schema){("abbr article aside audio canvas details figcaption figure footer header hgroup mark menu meter nav output progress section summary time video").replace(/\w+/g,function(p){o.createElement(p)});for(k in m.schema.getCustomElements()){o.createElement(k)}}h.addUnload(l.destroy,l)},getRoot:function(){var j=this,k=j.settings;return(k&&j.get(k.root_element))||j.doc.body},getViewPort:function(k){var l,j;k=!k?this.win:k;l=k.document;j=this.boxModel?l.documentElement:l.body;return{x:k.pageXOffset||j.scrollLeft,y:k.pageYOffset||j.scrollTop,w:k.innerWidth||j.clientWidth,h:k.innerHeight||j.clientHeight}},getRect:function(m){var l,j=this,k;m=j.get(m);l=j.getPos(m);k=j.getSize(m);return{x:l.x,y:l.y,w:k.w,h:k.h}},getSize:function(m){var k=this,j,l;m=k.get(m);j=k.getStyle(m,"width");l=k.getStyle(m,"height");if(j.indexOf("px")===-1){j=0}if(l.indexOf("px")===-1){l=0}return{w:parseInt(j)||m.offsetWidth||m.clientWidth,h:parseInt(l)||m.offsetHeight||m.clientHeight}},getParent:function(l,k,j){return this.getParents(l,k,j,false)},getParents:function(u,p,l,s){var k=this,j,m=k.settings,q=[];u=k.get(u);s=s===undefined;if(m.strict_root){l=l||k.getRoot()}if(e(p,"string")){j=p;if(p==="*"){p=function(o){return o.nodeType==1}}else{p=function(o){return k.is(o,j)}}}while(u){if(u==l||!u.nodeType||u.nodeType===9){break}if(!p||p(u)){if(s){q.push(u)}else{return u}}u=u.parentNode}return s?q:null},get:function(j){var k;if(j&&this.doc&&typeof(j)=="string"){k=j;j=this.doc.getElementById(j);if(j&&j.id!==k){return this.doc.getElementsByName(k)[1]}}return j},getNext:function(k,j){return this._findSib(k,j,"nextSibling")},getPrev:function(k,j){return this._findSib(k,j,"previousSibling")},select:function(l,k){var j=this;return h.dom.Sizzle(l,j.get(k)||j.get(j.settings.root_element)||j.doc,[])},is:function(l,j){var k;if(l.length===undefined){if(j==="*"){return l.nodeType==1}if(a.test(j)){j=j.toLowerCase().split(/,/);l=l.nodeName.toLowerCase();for(k=j.length-1;k>=0;k--){if(j[k]==l){return true}}return false}}return h.dom.Sizzle.matches(j,l.nodeType?[l]:l).length>0},add:function(m,q,j,l,o){var k=this;return this.run(m,function(s){var r,n;r=e(q,"string")?k.doc.createElement(q):q;k.setAttribs(r,j);if(l){if(l.nodeType){r.appendChild(l)}else{k.setHTML(r,l)}}return !o?s.appendChild(r):r})},create:function(l,j,k){return this.add(this.doc.createElement(l),l,j,k,1)},createHTML:function(r,j,p){var q="",m=this,l;q+="<"+r;for(l in j){if(j.hasOwnProperty(l)){q+=" "+l+'="'+m.encode(j[l])+'"'}}if(typeof(p)!="undefined"){return q+">"+p+""}return q+" />"},remove:function(j,k){return this.run(j,function(m){var n,l=m.parentNode;if(!l){return null}if(k){while(n=m.firstChild){if(!h.isIE||n.nodeType!==3||n.nodeValue){l.insertBefore(n,m)}else{m.removeChild(n)}}}return l.removeChild(m)})},setStyle:function(m,j,k){var l=this;return l.run(m,function(p){var o,n;o=p.style;j=j.replace(/-(\D)/g,function(r,q){return q.toUpperCase()});if(l.pixelStyles.test(j)&&(h.is(k,"number")||/^[\-0-9\.]+$/.test(k))){k+="px"}switch(j){case"opacity":if(b){o.filter=k===""?"":"alpha(opacity="+(k*100)+")";if(!m.currentStyle||!m.currentStyle.hasLayout){o.display="inline-block"}}o[j]=o["-moz-opacity"]=o["-khtml-opacity"]=k||"";break;case"float":b?o.styleFloat=k:o.cssFloat=k;break;default:o[j]=k||""}if(l.settings.update_styles){l.setAttrib(p,"data-mce-style")}})},getStyle:function(m,j,l){m=this.get(m);if(!m){return}if(this.doc.defaultView&&l){j=j.replace(/[A-Z]/g,function(n){return"-"+n});try{return this.doc.defaultView.getComputedStyle(m,null).getPropertyValue(j)}catch(k){return null}}j=j.replace(/-(\D)/g,function(o,n){return n.toUpperCase()});if(j=="float"){j=b?"styleFloat":"cssFloat"}if(m.currentStyle&&l){return m.currentStyle[j]}return m.style?m.style[j]:undefined},setStyles:function(m,n){var k=this,l=k.settings,j;j=l.update_styles;l.update_styles=0;f(n,function(o,p){k.setStyle(m,p,o)});l.update_styles=j;if(l.update_styles){k.setAttrib(m,l.cssText)}},removeAllAttribs:function(j){return this.run(j,function(m){var l,k=m.attributes;for(l=k.length-1;l>=0;l--){m.removeAttributeNode(k.item(l))}})},setAttrib:function(l,m,j){var k=this;if(!l||!m){return}if(k.settings.strict){m=m.toLowerCase()}return this.run(l,function(o){var n=k.settings;switch(m){case"style":if(!e(j,"string")){f(j,function(p,q){k.setStyle(o,q,p)});return}if(n.keep_values){if(j&&!k._isRes(j)){o.setAttribute("data-mce-style",j,2)}else{o.removeAttribute("data-mce-style",2)}}o.style.cssText=j;break;case"class":o.className=j||"";break;case"src":case"href":if(n.keep_values){if(n.url_converter){j=n.url_converter.call(n.url_converter_scope||k,j,m,o)}k.setAttrib(o,"data-mce-"+m,j,2)}break;case"shape":o.setAttribute("data-mce-style",j);break}if(e(j)&&j!==null&&j.length!==0){o.setAttribute(m,""+j,2)}else{o.removeAttribute(m,2)}})},setAttribs:function(k,l){var j=this;return this.run(k,function(m){f(l,function(o,p){j.setAttrib(m,p,o)})})},getAttrib:function(o,p,l){var j,k=this,m;o=k.get(o);if(!o||o.nodeType!==1){return l===m?false:l}if(!e(l)){l=""}if(/^(src|href|style|coords|shape)$/.test(p)){j=o.getAttribute("data-mce-"+p);if(j){return j}}if(b&&k.props[p]){j=o[k.props[p]];j=j&&j.nodeValue?j.nodeValue:j}if(!j){j=o.getAttribute(p,2)}if(/^(checked|compact|declare|defer|disabled|ismap|multiple|nohref|noshade|nowrap|readonly|selected)$/.test(p)){if(o[k.props[p]]===true&&j===""){return p}return j?p:""}if(o.nodeName==="FORM"&&o.getAttributeNode(p)){return o.getAttributeNode(p).nodeValue}if(p==="style"){j=j||o.style.cssText;if(j){j=k.serializeStyle(k.parseStyle(j),o.nodeName);if(k.settings.keep_values&&!k._isRes(j)){o.setAttribute("data-mce-style",j)}}}if(d&&p==="class"&&j){j=j.replace(/(apple|webkit)\-[a-z\-]+/gi,"")}if(b){switch(p){case"rowspan":case"colspan":if(j===1){j=""}break;case"size":if(j==="+0"||j===20||j===0){j=""}break;case"width":case"height":case"vspace":case"checked":case"disabled":case"readonly":if(j===0){j=""}break;case"hspace":if(j===-1){j=""}break;case"maxlength":case"tabindex":if(j===32768||j===2147483647||j==="32768"){j=""}break;case"multiple":case"compact":case"noshade":case"nowrap":if(j===65535){return p}return l;case"shape":j=j.toLowerCase();break;default:if(p.indexOf("on")===0&&j){j=h._replace(/^function\s+\w+\(\)\s+\{\s+(.*)\s+\}$/,"$1",""+j)}}}return(j!==m&&j!==null&&j!=="")?""+j:l},getPos:function(s,m){var k=this,j=0,q=0,o,p=k.doc,l;s=k.get(s);m=m||p.body;if(s){if(s.getBoundingClientRect){s=s.getBoundingClientRect();o=k.boxModel?p.documentElement:p.body;j=s.left+(p.documentElement.scrollLeft||p.body.scrollLeft)-o.clientTop;q=s.top+(p.documentElement.scrollTop||p.body.scrollTop)-o.clientLeft;return{x:j,y:q}}l=s;while(l&&l!=m&&l.nodeType){j+=l.offsetLeft||0;q+=l.offsetTop||0;l=l.offsetParent}l=s.parentNode;while(l&&l!=m&&l.nodeType){j-=l.scrollLeft||0;q-=l.scrollTop||0;l=l.parentNode}}return{x:j,y:q}},parseStyle:function(j){return this.styles.parse(j)},serializeStyle:function(k,j){return this.styles.serialize(k,j)},loadCSS:function(j){var l=this,m=l.doc,k;if(!j){j=""}k=l.select("head")[0];f(j.split(","),function(n){var o;if(l.files[n]){return}l.files[n]=true;o=l.create("link",{rel:"stylesheet",href:h._addVer(n)});if(b&&m.documentMode&&m.recalc){o.onload=function(){if(m.recalc){m.recalc()}o.onload=null}}k.appendChild(o)})},addClass:function(j,k){return this.run(j,function(l){var m;if(!k){return 0}if(this.hasClass(l,k)){return l.className}m=this.removeClass(l,k);return l.className=(m!=""?(m+" "):"")+k})},removeClass:function(l,m){var j=this,k;return j.run(l,function(o){var n;if(j.hasClass(o,m)){if(!k){k=new RegExp("(^|\\s+)"+m+"(\\s+|$)","g")}n=o.className.replace(k," ");n=h.trim(n!=" "?n:"");o.className=n;if(!n){o.removeAttribute("class");o.removeAttribute("className")}return n}return o.className})},hasClass:function(k,j){k=this.get(k);if(!k||!j){return false}return(" "+k.className+" ").indexOf(" "+j+" ")!==-1},show:function(j){return this.setStyle(j,"display","block")},hide:function(j){return this.setStyle(j,"display","none")},isHidden:function(j){j=this.get(j);return !j||j.style.display=="none"||this.getStyle(j,"display")=="none"},uniqueId:function(j){return(!j?"mce_":j)+(this.counter++)},setHTML:function(l,k){var j=this;return j.run(l,function(n){if(b){while(n.firstChild){n.removeChild(n.firstChild)}try{n.innerHTML="
    "+k;n.removeChild(n.firstChild)}catch(m){n=j.create("div");n.innerHTML="
    "+k;f(n.childNodes,function(p,o){if(o){n.appendChild(p)}})}}else{n.innerHTML=k}return k})},getOuterHTML:function(l){var k,j=this;l=j.get(l);if(!l){return null}if(l.nodeType===1&&j.hasOuterHTML){return l.outerHTML}k=(l.ownerDocument||j.doc).createElement("body");k.appendChild(l.cloneNode(true));return k.innerHTML},setOuterHTML:function(m,k,n){var j=this;function l(p,o,r){var s,q;q=r.createElement("body");q.innerHTML=o;s=q.lastChild;while(s){j.insertAfter(s.cloneNode(true),p);s=s.previousSibling}j.remove(p)}return this.run(m,function(p){p=j.get(p);if(p.nodeType==1){n=n||p.ownerDocument||j.doc;if(b){try{if(b&&p.nodeType==1){p.outerHTML=k}else{l(p,k,n)}}catch(o){l(p,k,n)}}else{l(p,k,n)}}})},decode:c.decode,encode:c.encodeAllRaw,insertAfter:function(j,k){k=this.get(k);return this.run(j,function(m){var l,n;l=k.parentNode;n=k.nextSibling;if(n){l.insertBefore(m,n)}else{l.appendChild(m)}return m})},isBlock:function(k){var j=k.nodeType;if(j){return !!(j===1&&g[k.nodeName])}return !!g[k]},replace:function(p,m,j){var l=this;if(e(m,"array")){p=p.cloneNode(true)}return l.run(m,function(k){if(j){f(h.grep(k.childNodes),function(n){p.appendChild(n)})}return k.parentNode.replaceChild(p,k)})},rename:function(m,j){var l=this,k;if(m.nodeName!=j.toUpperCase()){k=l.create(j);f(l.getAttribs(m),function(n){l.setAttrib(k,n.nodeName,l.getAttrib(m,n.nodeName))});l.replace(k,m,1)}return k||m},findCommonAncestor:function(l,j){var m=l,k;while(m){k=j;while(k&&m!=k){k=k.parentNode}if(m==k){break}m=m.parentNode}if(!m&&l.ownerDocument){return l.ownerDocument.documentElement}return m},toHex:function(j){var l=/^\s*rgb\s*?\(\s*?([0-9]+)\s*?,\s*?([0-9]+)\s*?,\s*?([0-9]+)\s*?\)\s*$/i.exec(j);function k(m){m=parseInt(m).toString(16);return m.length>1?m:"0"+m}if(l){j="#"+k(l[1])+k(l[2])+k(l[3]);return j}return j},getClasses:function(){var n=this,j=[],m,o={},p=n.settings.class_filter,l;if(n.classes){return n.classes}function q(r){f(r.imports,function(s){q(s)});f(r.cssRules||r.rules,function(s){switch(s.type||1){case 1:if(s.selectorText){f(s.selectorText.split(","),function(t){t=t.replace(/^\s*|\s*$|^\s\./g,"");if(/\.mce/.test(t)||!/\.[\w\-]+$/.test(t)){return}l=t;t=h._replace(/.*\.([a-z0-9_\-]+).*/i,"$1",t);if(p&&!(t=p(t,l))){return}if(!o[t]){j.push({"class":t});o[t]=1}})}break;case 3:q(s.styleSheet);break}})}try{f(n.doc.styleSheets,q)}catch(k){}if(j.length>0){n.classes=j}return j},run:function(m,l,k){var j=this,n;if(j.doc&&typeof(m)==="string"){m=j.get(m)}if(!m){return false}k=k||this;if(!m.nodeType&&(m.length||m.length===0)){n=[];f(m,function(p,o){if(p){if(typeof(p)=="string"){p=j.doc.getElementById(p)}n.push(l.call(k,p,o))}});return n}return l.call(k,m)},getAttribs:function(k){var j;k=this.get(k);if(!k){return[]}if(b){j=[];if(k.nodeName=="OBJECT"){return k.attributes}if(k.nodeName==="OPTION"&&this.getAttrib(k,"selected")){j.push({specified:1,nodeName:"selected"})}k.cloneNode(false).outerHTML.replace(/<\/?[\w:\-]+ ?|=[\"][^\"]+\"|=\'[^\']+\'|=[\w\-]+|>/gi,"").replace(/[\w:\-]+/gi,function(l){j.push({specified:1,nodeName:l})});return j}return k.attributes},isEmpty:function(m,k){var r=this,o,n,q,j,l,p;m=m.firstChild;if(m){j=new h.dom.TreeWalker(m);k=k||r.schema?r.schema.getNonEmptyElements():null;do{q=m.nodeType;if(q===1){if(m.getAttribute("data-mce-bogus")){continue}l=m.nodeName.toLowerCase();if(k&&k[l]){p=m.parentNode;if(l==="br"&&r.isBlock(p)&&p.firstChild===m&&p.lastChild===m){continue}return false}n=r.getAttribs(m);o=m.attributes.length;while(o--){l=m.attributes[o].nodeName;if(l==="name"||l==="data-mce-bookmark"){return false}}}if((q===3&&!i.test(m.nodeValue))){return false}}while(m=j.next())}return true},destroy:function(k){var j=this;if(j.events){j.events.destroy()}j.win=j.doc=j.root=j.events=null;if(!k){h.removeUnload(j.destroy)}},createRng:function(){var j=this.doc;return j.createRange?j.createRange():new h.dom.Range(this)},nodeIndex:function(n,o){var j=0,l,m,k;if(n){for(l=n.nodeType,n=n.previousSibling,m=n;n;n=n.previousSibling){k=n.nodeType;if(o&&k==3){if(k==l||!n.nodeValue.length){continue}}j++;l=k}}return j},split:function(n,m,q){var s=this,j=s.createRng(),o,l,p;function k(v){var t,r=v.childNodes,u=v.nodeType;if(u==1&&v.getAttribute("data-mce-type")=="bookmark"){return}for(t=r.length-1;t>=0;t--){k(r[t])}if(u!=9){if(u==3&&v.nodeValue.length>0){if(!s.isBlock(v.parentNode)||h.trim(v.nodeValue).length>0){return}}else{if(u==1){r=v.childNodes;if(r.length==1&&r[0]&&r[0].nodeType==1&&r[0].getAttribute("data-mce-type")=="bookmark"){v.parentNode.insertBefore(r[0],v)}if(r.length||/^(br|hr|input|img)$/i.test(v.nodeName)){return}}}s.remove(v)}return v}if(n&&m){j.setStart(n.parentNode,s.nodeIndex(n));j.setEnd(m.parentNode,s.nodeIndex(m));o=j.extractContents();j=s.createRng();j.setStart(m.parentNode,s.nodeIndex(m)+1);j.setEnd(n.parentNode,s.nodeIndex(n)+1);l=j.extractContents();p=n.parentNode;p.insertBefore(k(o),n);if(q){p.replaceChild(q,m)}else{p.insertBefore(m,n)}p.insertBefore(k(l),n);s.remove(n);return q||m}},bind:function(n,j,m,l){var k=this;if(!k.events){k.events=new h.dom.EventUtils()}return k.events.add(n,j,m,l||this)},unbind:function(m,j,l){var k=this;if(!k.events){k.events=new h.dom.EventUtils()}return k.events.remove(m,j,l)},_findSib:function(m,j,k){var l=this,n=j;if(m){if(e(n,"string")){n=function(o){return l.is(o,j)}}for(m=m[k];m;m=m[k]){if(n(m)){return m}}}return null},_isRes:function(j){return/^(top|left|bottom|right|width|height)/i.test(j)||/;\s*(top|left|bottom|right|width|height)/i.test(j)}});h.DOM=new h.dom.DOMUtils(document,{process_html:0})})(tinymce);(function(a){function b(c){var N=this,e=c.doc,S=0,E=1,j=2,D=true,R=false,U="startOffset",h="startContainer",P="endContainer",z="endOffset",k=tinymce.extend,n=c.nodeIndex;k(N,{startContainer:e,startOffset:0,endContainer:e,endOffset:0,collapsed:D,commonAncestorContainer:e,START_TO_START:0,START_TO_END:1,END_TO_END:2,END_TO_START:3,setStart:q,setEnd:s,setStartBefore:g,setStartAfter:I,setEndBefore:J,setEndAfter:u,collapse:A,selectNode:x,selectNodeContents:F,compareBoundaryPoints:v,deleteContents:p,extractContents:H,cloneContents:d,insertNode:C,surroundContents:M,cloneRange:K});function q(V,t){B(D,V,t)}function s(V,t){B(R,V,t)}function g(t){q(t.parentNode,n(t))}function I(t){q(t.parentNode,n(t)+1)}function J(t){s(t.parentNode,n(t))}function u(t){s(t.parentNode,n(t)+1)}function A(t){if(t){N[P]=N[h];N[z]=N[U]}else{N[h]=N[P];N[U]=N[z]}N.collapsed=D}function x(t){g(t);u(t)}function F(t){q(t,0);s(t,t.nodeType===1?t.childNodes.length:t.nodeValue.length)}function v(Y,t){var ab=N[h],W=N[U],aa=N[P],V=N[z],Z=t.startContainer,ad=t.startOffset,X=t.endContainer,ac=t.endOffset;if(Y===0){return G(ab,W,Z,ad)}if(Y===1){return G(aa,V,Z,ad)}if(Y===2){return G(aa,V,X,ac)}if(Y===3){return G(ab,W,X,ac)}}function p(){m(j)}function H(){return m(S)}function d(){return m(E)}function C(Y){var V=this[h],t=this[U],X,W;if((V.nodeType===3||V.nodeType===4)&&V.nodeValue){if(!t){V.parentNode.insertBefore(Y,V)}else{if(t>=V.nodeValue.length){c.insertAfter(Y,V)}else{X=V.splitText(t);V.parentNode.insertBefore(Y,X)}}}else{if(V.childNodes.length>0){W=V.childNodes[t]}if(W){V.insertBefore(Y,W)}else{V.appendChild(Y)}}}function M(V){var t=N.extractContents();N.insertNode(V);V.appendChild(t);N.selectNode(V)}function K(){return k(new b(c),{startContainer:N[h],startOffset:N[U],endContainer:N[P],endOffset:N[z],collapsed:N.collapsed,commonAncestorContainer:N.commonAncestorContainer})}function O(t,V){var W;if(t.nodeType==3){return t}if(V<0){return t}W=t.firstChild;while(W&&V>0){--V;W=W.nextSibling}if(W){return W}return t}function l(){return(N[h]==N[P]&&N[U]==N[z])}function G(X,Z,V,Y){var aa,W,t,ab,ad,ac;if(X==V){if(Z==Y){return 0}if(Z0){N.collapse(V)}}else{N.collapse(V)}N.collapsed=l();N.commonAncestorContainer=c.findCommonAncestor(N[h],N[P])}function m(ab){var aa,X=0,ad=0,V,Z,W,Y,t,ac;if(N[h]==N[P]){return f(ab)}for(aa=N[P],V=aa.parentNode;V;aa=V,V=V.parentNode){if(V==N[h]){return r(aa,ab)}++X}for(aa=N[h],V=aa.parentNode;V;aa=V,V=V.parentNode){if(V==N[P]){return T(aa,ab)}++ad}Z=ad-X;W=N[h];while(Z>0){W=W.parentNode;Z--}Y=N[P];while(Z<0){Y=Y.parentNode;Z++}for(t=W.parentNode,ac=Y.parentNode;t!=ac;t=t.parentNode,ac=ac.parentNode){W=t;Y=ac}return o(W,Y,ab)}function f(Z){var ab,Y,X,aa,t,W,V;if(Z!=j){ab=e.createDocumentFragment()}if(N[U]==N[z]){return ab}if(N[h].nodeType==3){Y=N[h].nodeValue;X=Y.substring(N[U],N[z]);if(Z!=E){N[h].deleteData(N[U],N[z]-N[U]);N.collapse(D)}if(Z==j){return}ab.appendChild(e.createTextNode(X));return ab}aa=O(N[h],N[U]);t=N[z]-N[U];while(t>0){W=aa.nextSibling;V=y(aa,Z);if(ab){ab.appendChild(V)}--t;aa=W}if(Z!=E){N.collapse(D)}return ab}function r(ab,Y){var aa,Z,V,t,X,W;if(Y!=j){aa=e.createDocumentFragment()}Z=i(ab,Y);if(aa){aa.appendChild(Z)}V=n(ab);t=V-N[U];if(t<=0){if(Y!=E){N.setEndBefore(ab);N.collapse(R)}return aa}Z=ab.previousSibling;while(t>0){X=Z.previousSibling;W=y(Z,Y);if(aa){aa.insertBefore(W,aa.firstChild)}--t;Z=X}if(Y!=E){N.setEndBefore(ab);N.collapse(R)}return aa}function T(Z,Y){var ab,V,aa,t,X,W;if(Y!=j){ab=e.createDocumentFragment()}aa=Q(Z,Y);if(ab){ab.appendChild(aa)}V=n(Z);++V;t=N[z]-V;aa=Z.nextSibling;while(t>0){X=aa.nextSibling;W=y(aa,Y);if(ab){ab.appendChild(W)}--t;aa=X}if(Y!=E){N.setStartAfter(Z);N.collapse(D)}return ab}function o(Z,t,ac){var W,ae,Y,aa,ab,V,ad,X;if(ac!=j){ae=e.createDocumentFragment()}W=Q(Z,ac);if(ae){ae.appendChild(W)}Y=Z.parentNode;aa=n(Z);ab=n(t);++aa;V=ab-aa;ad=Z.nextSibling;while(V>0){X=ad.nextSibling;W=y(ad,ac);if(ae){ae.appendChild(W)}ad=X;--V}W=i(t,ac);if(ae){ae.appendChild(W)}if(ac!=E){N.setStartAfter(Z);N.collapse(D)}return ae}function i(aa,ab){var W=O(N[P],N[z]-1),ac,Z,Y,t,V,X=W!=N[P];if(W==aa){return L(W,X,R,ab)}ac=W.parentNode;Z=L(ac,R,R,ab);while(ac){while(W){Y=W.previousSibling;t=L(W,X,R,ab);if(ab!=j){Z.insertBefore(t,Z.firstChild)}X=D;W=Y}if(ac==aa){return Z}W=ac.previousSibling;ac=ac.parentNode;V=L(ac,R,R,ab);if(ab!=j){V.appendChild(Z)}Z=V}}function Q(aa,ab){var X=O(N[h],N[U]),Y=X!=N[h],ac,Z,W,t,V;if(X==aa){return L(X,Y,D,ab)}ac=X.parentNode;Z=L(ac,R,D,ab);while(ac){while(X){W=X.nextSibling;t=L(X,Y,D,ab);if(ab!=j){Z.appendChild(t)}Y=D;X=W}if(ac==aa){return Z}X=ac.nextSibling;ac=ac.parentNode;V=L(ac,R,D,ab);if(ab!=j){V.appendChild(Z)}Z=V}}function L(t,Y,ab,ac){var X,W,Z,V,aa;if(Y){return y(t,ac)}if(t.nodeType==3){X=t.nodeValue;if(ab){V=N[U];W=X.substring(V);Z=X.substring(0,V)}else{V=N[z];W=X.substring(0,V);Z=X.substring(V)}if(ac!=E){t.nodeValue=Z}if(ac==j){return}aa=t.cloneNode(R);aa.nodeValue=W;return aa}if(ac==j){return}return t.cloneNode(R)}function y(V,t){if(t!=j){return t==E?V.cloneNode(D):V}V.parentNode.removeChild(V)}}a.Range=b})(tinymce.dom);(function(){function a(d){var b=this,h=d.dom,c=true,f=false;function e(i,j){var k,t=0,q,n,m,l,o,r,p=-1,s;k=i.duplicate();k.collapse(j);s=k.parentElement();if(s.ownerDocument!==d.dom.doc){return}while(s.contentEditable==="false"){s=s.parentNode}if(!s.hasChildNodes()){return{node:s,inside:1}}m=s.children;q=m.length-1;while(t<=q){r=Math.floor((t+q)/2);l=m[r];k.moveToElementText(l);p=k.compareEndPoints(j?"StartToStart":"EndToEnd",i);if(p>0){q=r-1}else{if(p<0){t=r+1}else{return{node:l}}}}if(p<0){if(!l){k.moveToElementText(s);k.collapse(true);l=s;n=true}else{k.collapse(false)}k.setEndPoint(j?"EndToStart":"EndToEnd",i);if(k.compareEndPoints(j?"StartToStart":"StartToEnd",i)>0){k=i.duplicate();k.collapse(j);o=-1;while(s==k.parentElement()){if(k.move("character",-1)==0){break}o++}}o=o||k.text.replace("\r\n"," ").length}else{k.collapse(true);k.setEndPoint(j?"StartToStart":"StartToEnd",i);o=k.text.replace("\r\n"," ").length}return{node:l,position:p,offset:o,inside:n}}function g(){var i=d.getRng(),r=h.createRng(),l,k,p,q,m,j;l=i.item?i.item(0):i.parentElement();if(l.ownerDocument!=h.doc){return r}k=d.isCollapsed();if(i.item){r.setStart(l.parentNode,h.nodeIndex(l));r.setEnd(r.startContainer,r.startOffset+1);return r}function o(A){var u=e(i,A),s,y,z=0,x,v,t;s=u.node;y=u.offset;if(u.inside&&!s.hasChildNodes()){r[A?"setStart":"setEnd"](s,0);return}if(y===v){r[A?"setStartBefore":"setEndAfter"](s);return}if(u.position<0){x=u.inside?s.firstChild:s.nextSibling;if(!x){r[A?"setStartAfter":"setEndAfter"](s);return}if(!y){if(x.nodeType==3){r[A?"setStart":"setEnd"](x,0)}else{r[A?"setStartBefore":"setEndBefore"](x)}return}while(x){t=x.nodeValue;z+=t.length;if(z>=y){s=x;z-=y;z=t.length-z;break}x=x.nextSibling}}else{x=s.previousSibling;if(!x){return r[A?"setStartBefore":"setEndBefore"](s)}if(!y){if(s.nodeType==3){r[A?"setStart":"setEnd"](x,s.nodeValue.length)}else{r[A?"setStartAfter":"setEndAfter"](x)}return}while(x){z+=x.nodeValue.length;if(z>=y){s=x;z-=y;break}x=x.previousSibling}}r[A?"setStart":"setEnd"](s,z)}try{o(true);if(!k){o()}}catch(n){if(n.number==-2147024809){m=b.getBookmark(2);p=i.duplicate();p.collapse(true);l=p.parentElement();if(!k){p=i.duplicate();p.collapse(false);q=p.parentElement();q.innerHTML=q.innerHTML}l.innerHTML=l.innerHTML;b.moveToBookmark(m);i=d.getRng();o(true);if(!k){o()}}else{throw n}}return r}this.getBookmark=function(m){var j=d.getRng(),o,i,l={};function n(u){var u,t,p,s,r,q=[];t=u.parentNode;p=h.getRoot().parentNode;while(t!=p){s=t.children;r=s.length;while(r--){if(u===s[r]){q.push(r);break}}u=t;t=t.parentNode}return q}function k(q){var p;p=e(j,q);if(p){return{position:p.position,offset:p.offset,indexes:n(p.node),inside:p.inside}}}if(m===2){if(!j.item){l.start=k(true);if(!d.isCollapsed()){l.end=k()}}else{l.start={ctrl:true,indexes:n(j.item(0))}}}return l};this.moveToBookmark=function(k){var j,i=h.doc.body;function m(o){var r,q,n,p;r=h.getRoot();for(q=o.length-1;q>=0;q--){p=r.children;n=o[q];if(n<=p.length-1){r=p[n]}}return r}function l(r){var n=k[r?"start":"end"],q,p,o;if(n){q=n.position>0;p=i.createTextRange();p.moveToElementText(m(n.indexes));offset=n.offset;if(offset!==o){p.collapse(n.inside||q);p.moveStart("character",q?-offset:offset)}else{p.collapse(r)}j.setEndPoint(r?"StartToStart":"EndToStart",p);if(r){j.collapse(true)}}}if(k.start){if(k.start.ctrl){j=i.createControlRange();j.addElement(m(k.start.indexes));j.select()}else{j=i.createTextRange();l(true);l();j.select()}}};this.addRange=function(i){var n,l,k,p,s,q,r=d.dom.doc,m=r.body;function j(z){var u,y,t,x,v;t=h.create("a");u=z?k:s;y=z?p:q;x=n.duplicate();if(u==r||u==r.documentElement){u=m;y=0}if(u.nodeType==3){u.parentNode.insertBefore(t,u);x.moveToElementText(t);x.moveStart("character",y);h.remove(t);n.setEndPoint(z?"StartToStart":"EndToEnd",x)}else{v=u.childNodes;if(v.length){if(y>=v.length){h.insertAfter(t,v[v.length-1])}else{u.insertBefore(t,v[y])}x.moveToElementText(t)}else{t=r.createTextNode("\uFEFF");u.appendChild(t);x.moveToElementText(t.parentNode);x.collapse(c)}n.setEndPoint(z?"StartToStart":"EndToEnd",x);h.remove(t)}}k=i.startContainer;p=i.startOffset;s=i.endContainer;q=i.endOffset;n=m.createTextRange();if(k==s&&k.nodeType==1&&p==q-1){if(p==q-1){try{l=m.createControlRange();l.addElement(k.childNodes[p]);l.select();return}catch(o){}}}j(true);j();n.select()};this.getRangeAt=g}tinymce.dom.TridentSelection=a})();(function(){var p=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,j=0,d=Object.prototype.toString,o=false,i=true;[0,0].sort(function(){i=false;return 0});var b=function(v,e,z,A){z=z||[];e=e||document;var C=e;if(e.nodeType!==1&&e.nodeType!==9){return[]}if(!v||typeof v!=="string"){return z}var x=[],s,E,H,r,u=true,t=b.isXML(e),B=v,D,G,F,y;do{p.exec("");s=p.exec(B);if(s){B=s[3];x.push(s[1]);if(s[2]){r=s[3];break}}}while(s);if(x.length>1&&k.exec(v)){if(x.length===2&&f.relative[x[0]]){E=h(x[0]+x[1],e)}else{E=f.relative[x[0]]?[e]:b(x.shift(),e);while(x.length){v=x.shift();if(f.relative[v]){v+=x.shift()}E=h(v,E)}}}else{if(!A&&x.length>1&&e.nodeType===9&&!t&&f.match.ID.test(x[0])&&!f.match.ID.test(x[x.length-1])){D=b.find(x.shift(),e,t);e=D.expr?b.filter(D.expr,D.set)[0]:D.set[0]}if(e){D=A?{expr:x.pop(),set:a(A)}:b.find(x.pop(),x.length===1&&(x[0]==="~"||x[0]==="+")&&e.parentNode?e.parentNode:e,t);E=D.expr?b.filter(D.expr,D.set):D.set;if(x.length>0){H=a(E)}else{u=false}while(x.length){G=x.pop();F=G;if(!f.relative[G]){G=""}else{F=x.pop()}if(F==null){F=e}f.relative[G](H,F,t)}}else{H=x=[]}}if(!H){H=E}if(!H){b.error(G||v)}if(d.call(H)==="[object Array]"){if(!u){z.push.apply(z,H)}else{if(e&&e.nodeType===1){for(y=0;H[y]!=null;y++){if(H[y]&&(H[y]===true||H[y].nodeType===1&&b.contains(e,H[y]))){z.push(E[y])}}}else{for(y=0;H[y]!=null;y++){if(H[y]&&H[y].nodeType===1){z.push(E[y])}}}}}else{a(H,z)}if(r){b(r,C,z,A);b.uniqueSort(z)}return z};b.uniqueSort=function(r){if(c){o=i;r.sort(c);if(o){for(var e=1;e":function(x,r){var u=typeof r==="string",v,s=0,e=x.length;if(u&&!/\W/.test(r)){r=r.toLowerCase();for(;s=0)){if(!s){e.push(v)}}else{if(s){r[u]=false}}}}return false},ID:function(e){return e[1].replace(/\\/g,"")},TAG:function(r,e){return r[1].toLowerCase()},CHILD:function(e){if(e[1]==="nth"){var r=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(e[2]==="even"&&"2n"||e[2]==="odd"&&"2n+1"||!/\D/.test(e[2])&&"0n+"+e[2]||e[2]);e[2]=(r[1]+(r[2]||1))-0;e[3]=r[3]-0}e[0]=j++;return e},ATTR:function(u,r,s,e,v,x){var t=u[1].replace(/\\/g,"");if(!x&&f.attrMap[t]){u[1]=f.attrMap[t]}if(u[2]==="~="){u[4]=" "+u[4]+" "}return u},PSEUDO:function(u,r,s,e,v){if(u[1]==="not"){if((p.exec(u[3])||"").length>1||/^\w/.test(u[3])){u[3]=b(u[3],null,null,r)}else{var t=b.filter(u[3],r,s,true^v);if(!s){e.push.apply(e,t)}return false}}else{if(f.match.POS.test(u[0])||f.match.CHILD.test(u[0])){return true}}return u},POS:function(e){e.unshift(true);return e}},filters:{enabled:function(e){return e.disabled===false&&e.type!=="hidden"},disabled:function(e){return e.disabled===true},checked:function(e){return e.checked===true},selected:function(e){e.parentNode.selectedIndex;return e.selected===true},parent:function(e){return !!e.firstChild},empty:function(e){return !e.firstChild},has:function(s,r,e){return !!b(e[3],s).length},header:function(e){return(/h\d/i).test(e.nodeName)},text:function(e){return"text"===e.type},radio:function(e){return"radio"===e.type},checkbox:function(e){return"checkbox"===e.type},file:function(e){return"file"===e.type},password:function(e){return"password"===e.type},submit:function(e){return"submit"===e.type},image:function(e){return"image"===e.type},reset:function(e){return"reset"===e.type},button:function(e){return"button"===e.type||e.nodeName.toLowerCase()==="button"},input:function(e){return(/input|select|textarea|button/i).test(e.nodeName)}},setFilters:{first:function(r,e){return e===0},last:function(s,r,e,t){return r===t.length-1},even:function(r,e){return e%2===0},odd:function(r,e){return e%2===1},lt:function(s,r,e){return re[3]-0},nth:function(s,r,e){return e[3]-0===r},eq:function(s,r,e){return e[3]-0===r}},filter:{PSEUDO:function(s,y,x,z){var e=y[1],r=f.filters[e];if(r){return r(s,x,y,z)}else{if(e==="contains"){return(s.textContent||s.innerText||b.getText([s])||"").indexOf(y[3])>=0}else{if(e==="not"){var t=y[3];for(var v=0,u=t.length;v=0)}}},ID:function(r,e){return r.nodeType===1&&r.getAttribute("id")===e},TAG:function(r,e){return(e==="*"&&r.nodeType===1)||r.nodeName.toLowerCase()===e},CLASS:function(r,e){return(" "+(r.className||r.getAttribute("class"))+" ").indexOf(e)>-1},ATTR:function(v,t){var s=t[1],e=f.attrHandle[s]?f.attrHandle[s](v):v[s]!=null?v[s]:v.getAttribute(s),x=e+"",u=t[2],r=t[4];return e==null?u==="!=":u==="="?x===r:u==="*="?x.indexOf(r)>=0:u==="~="?(" "+x+" ").indexOf(r)>=0:!r?x&&e!==false:u==="!="?x!==r:u==="^="?x.indexOf(r)===0:u==="$="?x.substr(x.length-r.length)===r:u==="|="?x===r||x.substr(0,r.length+1)===r+"-":false},POS:function(u,r,s,v){var e=r[2],t=f.setFilters[e];if(t){return t(u,s,r,v)}}}};var k=f.match.POS,g=function(r,e){return"\\"+(e-0+1)};for(var m in f.match){f.match[m]=new RegExp(f.match[m].source+(/(?![^\[]*\])(?![^\(]*\))/.source));f.leftMatch[m]=new RegExp(/(^(?:.|\r|\n)*?)/.source+f.match[m].source.replace(/\\(\d+)/g,g))}var a=function(r,e){r=Array.prototype.slice.call(r,0);if(e){e.push.apply(e,r);return e}return r};try{Array.prototype.slice.call(document.documentElement.childNodes,0)[0].nodeType}catch(l){a=function(u,t){var r=t||[],s=0;if(d.call(u)==="[object Array]"){Array.prototype.push.apply(r,u)}else{if(typeof u.length==="number"){for(var e=u.length;s";var e=document.documentElement;e.insertBefore(r,e.firstChild);if(document.getElementById(s)){f.find.ID=function(u,v,x){if(typeof v.getElementById!=="undefined"&&!x){var t=v.getElementById(u[1]);return t?t.id===u[1]||typeof t.getAttributeNode!=="undefined"&&t.getAttributeNode("id").nodeValue===u[1]?[t]:undefined:[]}};f.filter.ID=function(v,t){var u=typeof v.getAttributeNode!=="undefined"&&v.getAttributeNode("id");return v.nodeType===1&&u&&u.nodeValue===t}}e.removeChild(r);e=r=null})();(function(){var e=document.createElement("div");e.appendChild(document.createComment(""));if(e.getElementsByTagName("*").length>0){f.find.TAG=function(r,v){var u=v.getElementsByTagName(r[1]);if(r[1]==="*"){var t=[];for(var s=0;u[s];s++){if(u[s].nodeType===1){t.push(u[s])}}u=t}return u}}e.innerHTML="";if(e.firstChild&&typeof e.firstChild.getAttribute!=="undefined"&&e.firstChild.getAttribute("href")!=="#"){f.attrHandle.href=function(r){return r.getAttribute("href",2)}}e=null})();if(document.querySelectorAll){(function(){var e=b,s=document.createElement("div");s.innerHTML="

    ";if(s.querySelectorAll&&s.querySelectorAll(".TEST").length===0){return}b=function(x,v,t,u){v=v||document;if(!u&&v.nodeType===9&&!b.isXML(v)){try{return a(v.querySelectorAll(x),t)}catch(y){}}return e(x,v,t,u)};for(var r in e){b[r]=e[r]}s=null})()}(function(){var e=document.createElement("div");e.innerHTML="
    ";if(!e.getElementsByClassName||e.getElementsByClassName("e").length===0){return}e.lastChild.className="e";if(e.getElementsByClassName("e").length===1){return}f.order.splice(1,0,"CLASS");f.find.CLASS=function(r,s,t){if(typeof s.getElementsByClassName!=="undefined"&&!t){return s.getElementsByClassName(r[1])}};e=null})();function n(r,x,v,A,y,z){for(var t=0,s=A.length;t0){u=e;break}}}e=e[r]}A[t]=u}}}b.contains=document.compareDocumentPosition?function(r,e){return !!(r.compareDocumentPosition(e)&16)}:function(r,e){return r!==e&&(r.contains?r.contains(e):true)};b.isXML=function(e){var r=(e?e.ownerDocument||e:0).documentElement;return r?r.nodeName!=="HTML":false};var h=function(e,y){var t=[],u="",v,s=y.nodeType?[y]:y;while((v=f.match.PSEUDO.exec(e))){u+=v[0];e=e.replace(f.match.PSEUDO,"")}e=f.relative[e]?e+"*":e;for(var x=0,r=s.length;x=0;h--){k=g[h];if(k.obj===l){j._remove(k.obj,k.name,k.cfunc);k.obj=k.cfunc=null;g.splice(h,1)}}}},cancel:function(g){if(!g){return false}this.stop(g);return this.prevent(g)},stop:function(g){if(g.stopPropagation){g.stopPropagation()}else{g.cancelBubble=true}return false},prevent:function(g){if(g.preventDefault){g.preventDefault()}else{g.returnValue=false}return false},destroy:function(){var g=this;f(g.events,function(j,h){g._remove(j.obj,j.name,j.cfunc);j.obj=j.cfunc=null});g.events=[];g=null},_add:function(h,i,g){if(h.attachEvent){h.attachEvent("on"+i,g)}else{if(h.addEventListener){h.addEventListener(i,g,false)}else{h["on"+i]=g}}},_remove:function(i,j,h){if(i){try{if(i.detachEvent){i.detachEvent("on"+j,h)}else{if(i.removeEventListener){i.removeEventListener(j,h,false)}else{i["on"+j]=null}}}catch(g){}}},_pageInit:function(h){var g=this;if(g.domLoaded){return}g.domLoaded=true;f(g.inits,function(i){i()});g.inits=[]},_wait:function(i){var g=this,h=i.document;if(i.tinyMCE_GZ&&tinyMCE_GZ.loaded){g.domLoaded=1;return}if(h.attachEvent){h.attachEvent("onreadystatechange",function(){if(h.readyState==="complete"){h.detachEvent("onreadystatechange",arguments.callee);g._pageInit(i)}});if(h.documentElement.doScroll&&i==i.top){(function(){if(g.domLoaded){return}try{h.documentElement.doScroll("left")}catch(j){setTimeout(arguments.callee,0);return}g._pageInit(i)})()}}else{if(h.addEventListener){g._add(i,"DOMContentLoaded",function(){g._pageInit(i)})}}g._add(i,"load",function(){g._pageInit(i)})},_stoppers:{preventDefault:function(){this.returnValue=false},stopPropagation:function(){this.cancelBubble=true}}});a=d.dom.Event=new d.dom.EventUtils();a._wait(window);d.addUnload(function(){a.destroy()})})(tinymce);(function(a){a.dom.Element=function(f,d){var b=this,e,c;b.settings=d=d||{};b.id=f;b.dom=e=d.dom||a.DOM;if(!a.isIE){c=e.get(b.id)}a.each(("getPos,getRect,getParent,add,setStyle,getStyle,setStyles,setAttrib,setAttribs,getAttrib,addClass,removeClass,hasClass,getOuterHTML,setOuterHTML,remove,show,hide,isHidden,setHTML,get").split(/,/),function(g){b[g]=function(){var h=[f],j;for(j=0;j"+(h.item?h.item(0).outerHTML:h.htmlText);l.removeChild(l.firstChild)}else{l.innerHTML=h.toString()}}if(/^\s/.test(l.innerHTML)){i=" "}if(/\s+$/.test(l.innerHTML)){k=" "}g.getInner=true;g.content=f.isCollapsed()?"":i+f.serializer.serialize(l,g)+k;f.onGetContent.dispatch(f,g);return g.content},setContent:function(g,i){var n=this,f=n.getRng(),j,k=n.win.document,m,l;i=i||{format:"html"};i.set=true;g=i.content=g;if(!i.no_events){n.onBeforeSetContent.dispatch(n,i)}g=i.content;if(f.insertNode){g+='_';if(f.startContainer==k&&f.endContainer==k){k.body.innerHTML=g}else{f.deleteContents();if(k.body.childNodes.length==0){k.body.innerHTML=g}else{if(f.createContextualFragment){f.insertNode(f.createContextualFragment(g))}else{m=k.createDocumentFragment();l=k.createElement("div");m.appendChild(l);l.outerHTML=g;f.insertNode(m)}}}j=n.dom.get("__caret");f=k.createRange();f.setStartBefore(j);f.setEndBefore(j);n.setRng(f);n.dom.remove("__caret");try{n.setRng(f)}catch(h){}}else{if(f.item){k.execCommand("Delete",false,null);f=n.getRng()}if(/^\s+/.test(g)){f.pasteHTML('_'+g);n.dom.remove("__mce_tmp")}else{f.pasteHTML(g)}}if(!i.no_events){n.onSetContent.dispatch(n,i)}},getStart:function(){var g=this.getRng(),h,f,j,i;if(g.duplicate||g.item){if(g.item){return g.item(0)}j=g.duplicate();j.collapse(1);h=j.parentElement();f=i=g.parentElement();while(i=i.parentNode){if(i==h){h=f;break}}return h}else{h=g.startContainer;if(h.nodeType==1&&h.hasChildNodes()){h=h.childNodes[Math.min(h.childNodes.length-1,g.startOffset)]}if(h&&h.nodeType==3){return h.parentNode}return h}},getEnd:function(){var g=this,h=g.getRng(),i,f;if(h.duplicate||h.item){if(h.item){return h.item(0)}h=h.duplicate();h.collapse(0);i=h.parentElement();if(i&&i.nodeName=="BODY"){return i.lastChild||i}return i}else{i=h.endContainer;f=h.endOffset;if(i.nodeType==1&&i.hasChildNodes()){i=i.childNodes[f>0?f-1:f]}if(i&&i.nodeType==3){return i.parentNode}return i}},getBookmark:function(r,s){var v=this,m=v.dom,g,j,i,n,h,o,p,l="\uFEFF",u;function f(x,y){var t=0;d(m.select(x),function(A,z){if(A==y){t=z}});return t}if(r==2){function k(){var x=v.getRng(true),t=m.getRoot(),y={};function z(C,H){var B=C[H?"startContainer":"endContainer"],G=C[H?"startOffset":"endOffset"],A=[],D,F,E=0;if(B.nodeType==3){if(s){for(D=B.previousSibling;D&&D.nodeType==3;D=D.previousSibling){G+=D.nodeValue.length}}A.push(G)}else{F=B.childNodes;if(G>=F.length&&F.length){E=1;G=Math.max(0,F.length-1)}A.push(v.dom.nodeIndex(F[G],s)+E)}for(;B&&B!=t;B=B.parentNode){A.push(v.dom.nodeIndex(B,s))}return A}y.start=z(x,true);if(!v.isCollapsed()){y.end=z(x)}return y}if(v.tridentSel){return v.tridentSel.getBookmark(r)}return k()}if(r){return{rng:v.getRng()}}g=v.getRng();i=m.uniqueId();n=tinyMCE.activeEditor.selection.isCollapsed();u="overflow:hidden;line-height:0px";if(g.duplicate||g.item){if(!g.item){j=g.duplicate();try{g.collapse();g.pasteHTML(''+l+"");if(!n){j.collapse(false);g.moveToElementText(j.parentElement());if(g.compareEndPoints("StartToEnd",j)==0){j.move("character",-1)}j.pasteHTML(''+l+"")}}catch(q){return null}}else{o=g.item(0);h=o.nodeName;return{name:h,index:f(h,o)}}}else{o=v.getNode();h=o.nodeName;if(h=="IMG"){return{name:h,index:f(h,o)}}j=g.cloneRange();if(!n){j.collapse(false);j.insertNode(m.create("span",{"data-mce-type":"bookmark",id:i+"_end",style:u},l))}g.collapse(true);g.insertNode(m.create("span",{"data-mce-type":"bookmark",id:i+"_start",style:u},l))}v.moveToBookmark({id:i,keep:1});return{id:i}},moveToBookmark:function(n){var r=this,l=r.dom,i,h,f,q,j,s,o,p;if(n){if(n.start){f=l.createRng();q=l.getRoot();function g(z){var t=n[z?"start":"end"],v,x,y,u;if(t){y=t[0];for(x=q,v=t.length-1;v>=1;v--){u=x.childNodes;if(t[v]>u.length-1){return}x=u[t[v]]}if(x.nodeType===3){y=Math.min(t[0],x.nodeValue.length)}if(x.nodeType===1){y=Math.min(t[0],x.childNodes.length)}if(z){f.setStart(x,y)}else{f.setEnd(x,y)}}return true}if(r.tridentSel){return r.tridentSel.moveToBookmark(n)}if(g(true)&&g()){r.setRng(f)}}else{if(n.id){function k(A){var u=l.get(n.id+"_"+A),z,t,x,y,v=n.keep;if(u){z=u.parentNode;if(A=="start"){if(!v){t=l.nodeIndex(u)}else{z=u.firstChild;t=1}j=s=z;o=p=t}else{if(!v){t=l.nodeIndex(u)}else{z=u.firstChild;t=1}s=z;p=t}if(!v){y=u.previousSibling;x=u.nextSibling;d(c.grep(u.childNodes),function(B){if(B.nodeType==3){B.nodeValue=B.nodeValue.replace(/\uFEFF/g,"")}});while(u=l.get(n.id+"_"+A)){l.remove(u,1)}if(y&&x&&y.nodeType==x.nodeType&&y.nodeType==3&&!c.isOpera){t=y.nodeValue.length;y.appendData(x.nodeValue);l.remove(x);if(A=="start"){j=s=y;o=p=t}else{s=y;p=t}}}}}function m(t){if(l.isBlock(t)&&!t.innerHTML){t.innerHTML=!a?'
    ':" "}return t}k("start");k("end");if(j){f=l.createRng();f.setStart(m(j),o);f.setEnd(m(s),p);r.setRng(f)}}else{if(n.name){r.select(l.select(n.name)[n.index])}else{if(n.rng){r.setRng(n.rng)}}}}}},select:function(k,j){var i=this,l=i.dom,g=l.createRng(),f;if(k){f=l.nodeIndex(k);g.setStart(k.parentNode,f);g.setEnd(k.parentNode,f+1);if(j){function h(m,o){var n=new c.dom.TreeWalker(m,m);do{if(m.nodeType==3&&c.trim(m.nodeValue).length!=0){if(o){g.setStart(m,0)}else{g.setEnd(m,m.nodeValue.length)}return}if(m.nodeName=="BR"){if(o){g.setStartBefore(m)}else{g.setEndBefore(m)}return}}while(m=(o?n.next():n.prev()))}h(k,1);h(k)}i.setRng(g)}return k},isCollapsed:function(){var f=this,h=f.getRng(),g=f.getSel();if(!h||h.item){return false}if(h.compareEndPoints){return h.compareEndPoints("StartToEnd",h)===0}return !g||h.collapsed},collapse:function(f){var h=this,g=h.getRng(),i;if(g.item){i=g.item(0);g=h.win.document.body.createTextRange();g.moveToElementText(i)}g.collapse(!!f);h.setRng(g)},getSel:function(){var g=this,f=this.win;return f.getSelection?f.getSelection():f.document.selection},getRng:function(l){var g=this,h,i,k,j=g.win.document;if(l&&g.tridentSel){return g.tridentSel.getRangeAt(0)}try{if(h=g.getSel()){i=h.rangeCount>0?h.getRangeAt(0):(h.createRange?h.createRange():j.createRange())}}catch(f){}if(c.isIE&&i&&i.setStart&&j.selection.createRange().item){k=j.selection.createRange().item(0);i=j.createRange();i.setStartBefore(k);i.setEndAfter(k)}if(!i){i=j.createRange?j.createRange():j.body.createTextRange()}if(g.selectedRange&&g.explicitRange){if(i.compareBoundaryPoints(i.START_TO_START,g.selectedRange)===0&&i.compareBoundaryPoints(i.END_TO_END,g.selectedRange)===0){i=g.explicitRange}else{g.selectedRange=null;g.explicitRange=null}}return i},setRng:function(i){var h,g=this;if(!g.tridentSel){h=g.getSel();if(h){g.explicitRange=i;try{h.removeAllRanges()}catch(f){}h.addRange(i);g.selectedRange=h.getRangeAt(0)}}else{if(i.cloneRange){g.tridentSel.addRange(i);return}try{i.select()}catch(f){}}},setNode:function(g){var f=this;f.setContent(f.dom.getOuterHTML(g));return g},getNode:function(){var h=this,g=h.getRng(),i=h.getSel(),l,k=g.startContainer,f=g.endContainer;if(!g){return h.dom.getRoot()}if(g.setStart){l=g.commonAncestorContainer;if(!g.collapsed){if(g.startContainer==g.endContainer){if(g.endOffset-g.startOffset<2){if(g.startContainer.hasChildNodes()){l=g.startContainer.childNodes[g.startOffset]}}}if(k.nodeType===3&&f.nodeType===3){function j(p,m){var o=p;while(p&&p.nodeType===3&&p.length===0){p=m?p.nextSibling:p.previousSibling}return p||o}if(k.length===g.startOffset){k=j(k.nextSibling,true)}else{k=k.parentNode}if(g.endOffset===0){f=j(f.previousSibling,false)}else{f=f.parentNode}if(k&&k===f){return k}}}if(l&&l.nodeType==3){return l.parentNode}return l}return g.item?g.item(0):g.parentElement()},getSelectedBlocks:function(g,f){var i=this,j=i.dom,m,h,l,k=[];m=j.getParent(g||i.getStart(),j.isBlock);h=j.getParent(f||i.getEnd(),j.isBlock);if(m){k.push(m)}if(m&&h&&m!=h){l=m;while((l=l.nextSibling)&&l!=h){if(j.isBlock(l)){k.push(l)}}}if(h&&m!=h){k.push(h)}return k},normalize:function(){var g=this,f,i;if(c.isIE){return}function h(p){var k,o,n,m=g.dom,j=m.getRoot(),l;k=f[(p?"start":"end")+"Container"];o=f[(p?"start":"end")+"Offset"];if(k.nodeType===9){k=k.body;o=0}if(k===j){if(k.hasChildNodes()){k=k.childNodes[Math.min(!p&&o>0?o-1:o,k.childNodes.length-1)];o=0;if(k.hasChildNodes()){l=k;n=new c.dom.TreeWalker(k,j);do{if(l.nodeType===3){o=p?0:l.nodeValue.length-1;k=l;break}if(l.nodeName==="BR"){o=m.nodeIndex(l);k=l.parentNode;break}}while(l=(p?n.next():n.prev()));i=true}}}if(i){f["set"+(p?"Start":"End")](k,o)}}f=g.getRng();h(true);if(f.collapsed){h()}if(i){g.setRng(f)}},destroy:function(g){var f=this;f.win=null;if(!g){c.removeUnload(f.destroy)}},_fixIESelection:function(){var g=this.dom,m=g.doc,h=m.body,j,n,f;m.documentElement.unselectable=true;function i(o,r){var p=h.createTextRange();try{p.moveToPoint(o,r)}catch(q){p=null}return p}function l(p){var o;if(p.button){o=i(p.x,p.y);if(o){if(o.compareEndPoints("StartToStart",n)>0){o.setEndPoint("StartToStart",n)}else{o.setEndPoint("EndToEnd",n)}o.select()}}else{k()}}function k(){var o=m.selection.createRange();if(n&&!o.item&&o.compareEndPoints("StartToEnd",o)===0){n.select()}g.unbind(m,"mouseup",k);g.unbind(m,"mousemove",l);n=j=0}g.bind(m,["mousedown","contextmenu"],function(o){if(o.target.nodeName==="HTML"){if(j){k()}f=m.documentElement;if(f.scrollHeight>f.clientHeight){return}j=1;n=i(o.x,o.y);if(n){g.bind(m,"mouseup",k);g.bind(m,"mousemove",l);g.win.focus();n.select()}}})}})})(tinymce);(function(a){a.dom.Serializer=function(e,i,f){var h,b,d=a.isIE,g=a.each,c;if(!e.apply_source_formatting){e.indent=false}e.remove_trailing_brs=true;i=i||a.DOM;f=f||new a.html.Schema(e);e.entity_encoding=e.entity_encoding||"named";h=new a.util.Dispatcher(self);b=new a.util.Dispatcher(self);c=new a.html.DomParser(e,f);c.addAttributeFilter("src,href,style",function(k,j){var o=k.length,l,q,n="data-mce-"+j,p=e.url_converter,r=e.url_converter_scope,m;while(o--){l=k[o];q=l.attributes.map[n];if(q!==m){l.attr(j,q.length>0?q:null);l.attr(n,null)}else{q=l.attributes.map[j];if(j==="style"){q=i.serializeStyle(i.parseStyle(q),l.name)}else{if(p){q=p.call(r,q,j,l.name)}}l.attr(j,q.length>0?q:null)}}});c.addAttributeFilter("class",function(j,k){var l=j.length,m,n;while(l--){m=j[l];n=m.attr("class").replace(/\s*mce(Item\w+|Selected)\s*/g,"");m.attr("class",n.length>0?n:null)}});c.addAttributeFilter("data-mce-type",function(j,l,k){var m=j.length,n;while(m--){n=j[m];if(n.attributes.map["data-mce-type"]==="bookmark"&&!k.cleanup){n.remove()}}});c.addNodeFilter("script,style",function(k,l){var m=k.length,n,o;function j(p){return p.replace(/()/g,"\n").replace(/^[\r\n]*|[\r\n]*$/g,"").replace(/^\s*(\/\/\s*|\]\]>|-->|\]\]-->)\s*$/g,"")}while(m--){n=k[m];o=n.firstChild?n.firstChild.value:"";if(l==="script"){n.attr("type",(n.attr("type")||"text/javascript").replace(/^mce\-/,""));if(o.length>0){n.firstChild.value="// "}}else{if(o.length>0){n.firstChild.value=""}}}});c.addNodeFilter("#comment",function(j,k){var l=j.length,m;while(l--){m=j[l];if(m.value.indexOf("[CDATA[")===0){m.name="#cdata";m.type=4;m.value=m.value.replace(/^\[CDATA\[|\]\]$/g,"")}else{if(m.value.indexOf("mce:protected ")===0){m.name="#text";m.type=3;m.raw=true;m.value=unescape(m.value).substr(14)}}}});c.addNodeFilter("xml:namespace,input",function(j,k){var l=j.length,m;while(l--){m=j[l];if(m.type===7){m.remove()}else{if(m.type===1){if(k==="input"&&!("type" in m.attributes.map)){m.attr("type","text")}}}}});if(e.fix_list_elements){c.addNodeFilter("ul,ol",function(k,l){var m=k.length,n,j;while(m--){n=k[m];j=n.parent;if(j.name==="ul"||j.name==="ol"){if(n.prev&&n.prev.name==="li"){n.prev.append(n)}}}})}c.addAttributeFilter("data-mce-src,data-mce-href,data-mce-style",function(j,k){var l=j.length;while(l--){j[l].attr(k,null)}});return{schema:f,addNodeFilter:c.addNodeFilter,addAttributeFilter:c.addAttributeFilter,onPreProcess:h,onPostProcess:b,serialize:function(o,m){var l,p,k,j,n;if(d&&i.select("script,style,select,map").length>0){n=o.innerHTML;o=o.cloneNode(false);i.setHTML(o,n)}else{o=o.cloneNode(true)}l=o.ownerDocument.implementation;if(l.createHTMLDocument){p=l.createHTMLDocument("");g(o.nodeName=="BODY"?o.childNodes:[o],function(q){p.body.appendChild(p.importNode(q,true))});if(o.nodeName!="BODY"){o=p.body.firstChild}else{o=p.body}k=i.doc;i.doc=p}m=m||{};m.format=m.format||"html";if(!m.no_events){m.node=o;h.dispatch(self,m)}j=new a.html.Serializer(e,f);m.content=j.serialize(c.parse(m.getInner?o.innerHTML:a.trim(i.getOuterHTML(o),m),m));if(!m.cleanup){m.content=m.content.replace(/\uFEFF/g,"")}if(!m.no_events){b.dispatch(self,m)}if(k){i.doc=k}m.node=null;return m.content},addRules:function(j){f.addValidElements(j)},setRules:function(j){f.setValidElements(j)}}}})(tinymce);(function(a){a.dom.ScriptLoader=function(h){var c=0,k=1,i=2,l={},j=[],f={},d=[],g=0,e;function b(m,v){var x=this,q=a.DOM,s,o,r,n;function p(){q.remove(n);if(s){s.onreadystatechange=s.onload=s=null}v()}function u(){if(typeof(console)!=="undefined"&&console.log){console.log("Failed to load: "+m)}}n=q.uniqueId();if(a.isIE6){o=new a.util.URI(m);r=location;if(o.host==r.hostname&&o.port==r.port&&(o.protocol+":")==r.protocol&&o.protocol.toLowerCase()!="file"){a.util.XHR.send({url:a._addVer(o.getURI()),success:function(y){var t=q.create("script",{type:"text/javascript"});t.text=y;document.getElementsByTagName("head")[0].appendChild(t);q.remove(t);p()},error:u});return}}s=q.create("script",{id:n,type:"text/javascript",src:a._addVer(m)});if(!a.isIE){s.onload=p}s.onerror=u;if(!a.isOpera){s.onreadystatechange=function(){var t=s.readyState;if(t=="complete"||t=="loaded"){p()}}}(document.getElementsByTagName("head")[0]||document.body).appendChild(s)}this.isDone=function(m){return l[m]==i};this.markDone=function(m){l[m]=i};this.add=this.load=function(m,q,n){var o,p=l[m];if(p==e){j.push(m);l[m]=c}if(q){if(!f[m]){f[m]=[]}f[m].push({func:q,scope:n||this})}};this.loadQueue=function(n,m){this.loadScripts(j,n,m)};this.loadScripts=function(m,q,p){var o;function n(r){a.each(f[r],function(s){s.func.call(s.scope)});f[r]=e}d.push({func:q,scope:p||this});o=function(){var r=a.grep(m);m.length=0;a.each(r,function(s){if(l[s]==i){n(s);return}if(l[s]!=k){l[s]=k;g++;b(s,function(){l[s]=i;g--;n(s);o()})}});if(!g){a.each(d,function(s){s.func.call(s.scope)});d.length=0}};o()}};a.ScriptLoader=new a.dom.ScriptLoader()})(tinymce);tinymce.dom.TreeWalker=function(a,c){var b=a;function d(i,f,e,j){var h,g;if(i){if(!j&&i[f]){return i[f]}if(i!=c){h=i[e];if(h){return h}for(g=i.parentNode;g&&g!=c;g=g.parentNode){h=g[e];if(h){return h}}}}}this.current=function(){return b};this.next=function(e){return(b=d(b,"firstChild","nextSibling",e))};this.prev=function(e){return(b=d(b,"lastChild","previousSibling",e))}};(function(a){a.dom.RangeUtils=function(c){var b="\uFEFF";this.walk=function(d,r){var h=d.startContainer,k=d.startOffset,s=d.endContainer,l=d.endOffset,i,f,n,g,q,p,e;e=c.select("td.mceSelected,th.mceSelected");if(e.length>0){a.each(e,function(t){r([t])});return}function o(v,u,t){var x=[];for(;v&&v!=t;v=v[u]){x.push(v)}return x}function m(u,t){do{if(u.parentNode==t){return u}u=u.parentNode}while(u)}function j(v,u,x){var t=x?"nextSibling":"previousSibling";for(g=v,q=g.parentNode;g&&g!=u;g=q){q=g.parentNode;p=o(g==v?g:g[t],t);if(p.length){if(!x){p.reverse()}r(p)}}}if(h.nodeType==1&&h.hasChildNodes()){h=h.childNodes[k]}if(s.nodeType==1&&s.hasChildNodes()){s=s.childNodes[Math.min(l-1,s.childNodes.length-1)]}i=c.findCommonAncestor(h,s);if(h==s){return r([h])}for(g=h;g;g=g.parentNode){if(g==s){return j(h,i,true)}if(g==i){break}}for(g=s;g;g=g.parentNode){if(g==h){return j(s,i)}if(g==i){break}}f=m(h,i)||h;n=m(s,i)||s;j(h,f,true);p=o(f==h?f:f.nextSibling,"nextSibling",n==s?n.nextSibling:n);if(p.length){r(p)}j(s,n)}};a.dom.RangeUtils.compareRanges=function(c,b){if(c&&b){if(c.item||c.duplicate){if(c.item&&b.item&&c.item(0)===b.item(0)){return true}if(c.isEqual&&b.isEqual&&b.isEqual(c)){return true}}else{return c.startContainer==b.startContainer&&c.startOffset==b.startOffset}}return false}})(tinymce);(function(b){var a=b.dom.Event,c=b.each;b.create("tinymce.ui.KeyboardNavigation",{KeyboardNavigation:function(e,f){var p=this,m=e.root,l=e.items,n=e.enableUpDown,i=e.enableLeftRight||!e.enableUpDown,k=e.excludeFromTabOrder,j,h,o,d,g;f=f||b.DOM;j=function(q){g=q.target.id};h=function(q){f.setAttrib(q.target.id,"tabindex","-1")};d=function(q){var r=f.get(g);f.setAttrib(r,"tabindex","0");r.focus()};p.focus=function(){f.get(g).focus()};p.destroy=function(){c(l,function(q){f.unbind(f.get(q.id),"focus",j);f.unbind(f.get(q.id),"blur",h)});f.unbind(f.get(m),"focus",d);f.unbind(f.get(m),"keydown",o);l=f=m=p.focus=j=h=o=d=null;p.destroy=function(){}};p.moveFocus=function(u,r){var q=-1,t=p.controls,s;if(!g){return}c(l,function(x,v){if(x.id===g){q=v;return false}});q+=u;if(q<0){q=l.length-1}else{if(q>=l.length){q=0}}s=l[q];f.setAttrib(g,"tabindex","-1");f.setAttrib(s.id,"tabindex","0");f.get(s.id).focus();if(e.actOnFocus){e.onAction(s.id)}if(r){a.cancel(r)}};o=function(y){var u=37,t=39,x=38,z=40,q=27,s=14,r=13,v=32;switch(y.keyCode){case u:if(i){p.moveFocus(-1)}break;case t:if(i){p.moveFocus(1)}break;case x:if(n){p.moveFocus(-1)}break;case z:if(n){p.moveFocus(1)}break;case q:if(e.onCancel){e.onCancel();a.cancel(y)}break;case s:case r:case v:if(e.onAction){e.onAction(g);a.cancel(y)}break}};c(l,function(s,q){var r;if(!s.id){s.id=f.uniqueId("_mce_item_")}if(k){f.bind(s.id,"blur",h);r="-1"}else{r=(q===0?"0":"-1")}f.setAttrib(s.id,"tabindex",r);f.bind(f.get(s.id),"focus",j)});if(l[0]){g=l[0].id}f.setAttrib(m,"tabindex","-1");f.bind(f.get(m),"focus",d);f.bind(f.get(m),"keydown",o)}})})(tinymce);(function(c){var b=c.DOM,a=c.is;c.create("tinymce.ui.Control",{Control:function(f,e,d){this.id=f;this.settings=e=e||{};this.rendered=false;this.onRender=new c.util.Dispatcher(this);this.classPrefix="";this.scope=e.scope||this;this.disabled=0;this.active=0;this.editor=d},setAriaProperty:function(f,e){var d=b.get(this.id+"_aria")||b.get(this.id);if(d){b.setAttrib(d,"aria-"+f,!!e)}},focus:function(){b.get(this.id).focus()},setDisabled:function(d){if(d!=this.disabled){this.setAriaProperty("disabled",d);this.setState("Disabled",d);this.setState("Enabled",!d);this.disabled=d}},isDisabled:function(){return this.disabled},setActive:function(d){if(d!=this.active){this.setState("Active",d);this.active=d;this.setAriaProperty("pressed",d)}},isActive:function(){return this.active},setState:function(f,d){var e=b.get(this.id);f=this.classPrefix+f;if(d){b.addClass(e,f)}else{b.removeClass(e,f)}},isRendered:function(){return this.rendered},renderHTML:function(){},renderTo:function(d){b.setHTML(d,this.renderHTML())},postRender:function(){var e=this,d;if(a(e.disabled)){d=e.disabled;e.disabled=-1;e.setDisabled(d)}if(a(e.active)){d=e.active;e.active=-1;e.setActive(d)}},remove:function(){b.remove(this.id);this.destroy()},destroy:function(){c.dom.Event.clear(this.id)}})})(tinymce);tinymce.create("tinymce.ui.Container:tinymce.ui.Control",{Container:function(c,b,a){this.parent(c,b,a);this.controls=[];this.lookup={}},add:function(a){this.lookup[a.id]=a;this.controls.push(a);return a},get:function(a){return this.lookup[a]}});tinymce.create("tinymce.ui.Separator:tinymce.ui.Control",{Separator:function(b,a){this.parent(b,a);this.classPrefix="mceSeparator";this.setDisabled(true)},renderHTML:function(){return tinymce.DOM.createHTML("span",{"class":this.classPrefix,role:"separator","aria-orientation":"vertical",tabindex:"-1"})}});(function(d){var c=d.is,b=d.DOM,e=d.each,a=d.walk;d.create("tinymce.ui.MenuItem:tinymce.ui.Control",{MenuItem:function(g,f){this.parent(g,f);this.classPrefix="mceMenuItem"},setSelected:function(f){this.setState("Selected",f);this.setAriaProperty("checked",!!f);this.selected=f},isSelected:function(){return this.selected},postRender:function(){var f=this;f.parent();if(c(f.selected)){f.setSelected(f.selected)}}})})(tinymce);(function(d){var c=d.is,b=d.DOM,e=d.each,a=d.walk;d.create("tinymce.ui.Menu:tinymce.ui.MenuItem",{Menu:function(h,g){var f=this;f.parent(h,g);f.items={};f.collapsed=false;f.menuCount=0;f.onAddItem=new d.util.Dispatcher(this)},expand:function(g){var f=this;if(g){a(f,function(h){if(h.expand){h.expand()}},"items",f)}f.collapsed=false},collapse:function(g){var f=this;if(g){a(f,function(h){if(h.collapse){h.collapse()}},"items",f)}f.collapsed=true},isCollapsed:function(){return this.collapsed},add:function(f){if(!f.settings){f=new d.ui.MenuItem(f.id||b.uniqueId(),f)}this.onAddItem.dispatch(this,f);return this.items[f.id]=f},addSeparator:function(){return this.add({separator:true})},addMenu:function(f){if(!f.collapse){f=this.createMenu(f)}this.menuCount++;return this.add(f)},hasMenus:function(){return this.menuCount!==0},remove:function(f){delete this.items[f.id]},removeAll:function(){var f=this;a(f,function(g){if(g.removeAll){g.removeAll()}else{g.remove()}g.destroy()},"items",f);f.items={}},createMenu:function(g){var f=new d.ui.Menu(g.id||b.uniqueId(),g);f.onAddItem.add(this.onAddItem.dispatch,this.onAddItem);return f}})})(tinymce);(function(e){var d=e.is,c=e.DOM,f=e.each,a=e.dom.Event,b=e.dom.Element;e.create("tinymce.ui.DropMenu:tinymce.ui.Menu",{DropMenu:function(h,g){g=g||{};g.container=g.container||c.doc.body;g.offset_x=g.offset_x||0;g.offset_y=g.offset_y||0;g.vp_offset_x=g.vp_offset_x||0;g.vp_offset_y=g.vp_offset_y||0;if(d(g.icons)&&!g.icons){g["class"]+=" mceNoIcons"}this.parent(h,g);this.onShowMenu=new e.util.Dispatcher(this);this.onHideMenu=new e.util.Dispatcher(this);this.classPrefix="mceMenu"},createMenu:function(j){var h=this,i=h.settings,g;j.container=j.container||i.container;j.parent=h;j.constrain=j.constrain||i.constrain;j["class"]=j["class"]||i["class"];j.vp_offset_x=j.vp_offset_x||i.vp_offset_x;j.vp_offset_y=j.vp_offset_y||i.vp_offset_y;j.keyboard_focus=i.keyboard_focus;g=new e.ui.DropMenu(j.id||c.uniqueId(),j);g.onAddItem.add(h.onAddItem.dispatch,h.onAddItem);return g},focus:function(){var g=this;if(g.keyboardNav){g.keyboardNav.focus()}},update:function(){var i=this,j=i.settings,g=c.get("menu_"+i.id+"_tbl"),l=c.get("menu_"+i.id+"_co"),h,k;h=j.max_width?Math.min(g.clientWidth,j.max_width):g.clientWidth;k=j.max_height?Math.min(g.clientHeight,j.max_height):g.clientHeight;if(!c.boxModel){i.element.setStyles({width:h+2,height:k+2})}else{i.element.setStyles({width:h,height:k})}if(j.max_width){c.setStyle(l,"width",h)}if(j.max_height){c.setStyle(l,"height",k);if(g.clientHeightv){p=r?r-u:Math.max(0,(v-A.vp_offset_x)-u)}if((n+A.vp_offset_y+l)>q){n=Math.max(0,(q-A.vp_offset_y)-l)}}c.setStyles(o,{left:p,top:n});z.element.update();z.isMenuVisible=1;z.mouseClickFunc=a.add(o,"click",function(s){var h;s=s.target;if(s&&(s=c.getParent(s,"tr"))&&!c.hasClass(s,m+"ItemSub")){h=z.items[s.id];if(h.isDisabled()){return}k=z;while(k){if(k.hideMenu){k.hideMenu()}k=k.settings.parent}if(h.settings.onclick){h.settings.onclick(s)}return a.cancel(s)}});if(z.hasMenus()){z.mouseOverFunc=a.add(o,"mouseover",function(x){var h,t,s;x=x.target;if(x&&(x=c.getParent(x,"tr"))){h=z.items[x.id];if(z.lastMenu){z.lastMenu.collapse(1)}if(h.isDisabled()){return}if(x&&c.hasClass(x,m+"ItemSub")){t=c.getRect(x);h.showMenu((t.x+t.w-i),t.y-i,t.x);z.lastMenu=h;c.addClass(c.get(h.id).firstChild,m+"ItemActive")}}})}a.add(o,"keydown",z._keyHandler,z);z.onShowMenu.dispatch(z);if(A.keyboard_focus){z._setupKeyboardNav()}},hideMenu:function(j){var g=this,i=c.get("menu_"+g.id),h;if(!g.isMenuVisible){return}if(g.keyboardNav){g.keyboardNav.destroy()}a.remove(i,"mouseover",g.mouseOverFunc);a.remove(i,"click",g.mouseClickFunc);a.remove(i,"keydown",g._keyHandler);c.hide(i);g.isMenuVisible=0;if(!j){g.collapse(1)}if(g.element){g.element.hide()}if(h=c.get(g.id)){c.removeClass(h.firstChild,g.classPrefix+"ItemActive")}g.onHideMenu.dispatch(g)},add:function(i){var g=this,h;i=g.parent(i);if(g.isRendered&&(h=c.get("menu_"+g.id))){g._add(c.select("tbody",h)[0],i)}return i},collapse:function(g){this.parent(g);this.hideMenu(1)},remove:function(g){c.remove(g.id);this.destroy();return this.parent(g)},destroy:function(){var g=this,h=c.get("menu_"+g.id);if(g.keyboardNav){g.keyboardNav.destroy()}a.remove(h,"mouseover",g.mouseOverFunc);a.remove(c.select("a",h),"focus",g.mouseOverFunc);a.remove(h,"click",g.mouseClickFunc);a.remove(h,"keydown",g._keyHandler);if(g.element){g.element.remove()}c.remove(h)},renderNode:function(){var i=this,j=i.settings,l,h,k,g;g=c.create("div",{role:"listbox",id:"menu_"+i.id,"class":j["class"],style:"position:absolute;left:0;top:0;z-index:200000;outline:0"});if(i.settings.parent){c.setAttrib(g,"aria-parent","menu_"+i.settings.parent.id)}k=c.add(g,"div",{role:"presentation",id:"menu_"+i.id+"_co","class":i.classPrefix+(j["class"]?" "+j["class"]:"")});i.element=new b("menu_"+i.id,{blocker:1,container:j.container});if(j.menu_line){c.add(k,"span",{"class":i.classPrefix+"Line"})}l=c.add(k,"table",{role:"presentation",id:"menu_"+i.id+"_tbl",border:0,cellPadding:0,cellSpacing:0});h=c.add(l,"tbody");f(i.items,function(m){i._add(h,m)});i.rendered=true;return g},_setupKeyboardNav:function(){var i,h,g=this;i=c.select("#menu_"+g.id)[0];h=c.select("a[role=option]","menu_"+g.id);h.splice(0,0,i);g.keyboardNav=new e.ui.KeyboardNavigation({root:"menu_"+g.id,items:h,onCancel:function(){g.hideMenu()},enableUpDown:true});i.focus()},_keyHandler:function(g){var h=this,i;switch(g.keyCode){case 37:if(h.settings.parent){h.hideMenu();h.settings.parent.focus();a.cancel(g)}break;case 39:if(h.mouseOverFunc){h.mouseOverFunc(g)}break}},_add:function(j,h){var i,q=h.settings,p,l,k,m=this.classPrefix,g;if(q.separator){l=c.add(j,"tr",{id:h.id,"class":m+"ItemSeparator"});c.add(l,"td",{"class":m+"ItemSeparator"});if(i=l.previousSibling){c.addClass(i,"mceLast")}return}i=l=c.add(j,"tr",{id:h.id,"class":m+"Item "+m+"ItemEnabled"});i=k=c.add(i,q.titleItem?"th":"td");i=p=c.add(i,"a",{id:h.id+"_aria",role:q.titleItem?"presentation":"option",href:"javascript:;",onclick:"return false;",onmousedown:"return false;"});if(q.parent){c.setAttrib(p,"aria-haspopup","true");c.setAttrib(p,"aria-owns","menu_"+h.id)}c.addClass(k,q["class"]);g=c.add(i,"span",{"class":"mceIcon"+(q.icon?" mce_"+q.icon:"")});if(q.icon_src){c.add(g,"img",{src:q.icon_src})}i=c.add(i,q.element||"span",{"class":"mceText",title:h.settings.title},h.settings.title);if(h.settings.style){c.setAttrib(i,"style",h.settings.style)}if(j.childNodes.length==1){c.addClass(l,"mceFirst")}if((i=l.previousSibling)&&c.hasClass(i,m+"ItemSeparator")){c.addClass(l,"mceFirst")}if(h.collapse){c.addClass(l,m+"ItemSub")}if(i=l.previousSibling){c.removeClass(i,"mceLast")}c.addClass(l,"mceLast")}})})(tinymce);(function(b){var a=b.DOM;b.create("tinymce.ui.Button:tinymce.ui.Control",{Button:function(e,d,c){this.parent(e,d,c);this.classPrefix="mceButton"},renderHTML:function(){var f=this.classPrefix,e=this.settings,d,c;c=a.encode(e.label||"");d='';if(e.image&&!(this.editor&&this.editor.forcedHighContrastMode)){d+=''+a.encode(e.title)+''+c}else{d+=''+(c?''+c+"":"")}d+='";d+="";return d},postRender:function(){var c=this,d=c.settings;b.dom.Event.add(c.id,"click",function(f){if(!c.isDisabled()){return d.onclick.call(d.scope,f)}})}})})(tinymce);(function(d){var c=d.DOM,b=d.dom.Event,e=d.each,a=d.util.Dispatcher;d.create("tinymce.ui.ListBox:tinymce.ui.Control",{ListBox:function(i,h,f){var g=this;g.parent(i,h,f);g.items=[];g.onChange=new a(g);g.onPostRender=new a(g);g.onAdd=new a(g);g.onRenderMenu=new d.util.Dispatcher(this);g.classPrefix="mceListBox"},select:function(h){var g=this,j,i;if(h==undefined){return g.selectByIndex(-1)}if(h&&h.call){i=h}else{i=function(f){return f==h}}if(h!=g.selectedValue){e(g.items,function(k,f){if(i(k.value)){j=1;g.selectByIndex(f);return false}});if(!j){g.selectByIndex(-1)}}},selectByIndex:function(f){var g=this,h,i;if(f!=g.selectedIndex){h=c.get(g.id+"_text");i=g.items[f];if(i){g.selectedValue=i.value;g.selectedIndex=f;c.setHTML(h,c.encode(i.title));c.removeClass(h,"mceTitle");c.setAttrib(g.id,"aria-valuenow",i.title)}else{c.setHTML(h,c.encode(g.settings.title));c.addClass(h,"mceTitle");g.selectedValue=g.selectedIndex=null;c.setAttrib(g.id,"aria-valuenow",g.settings.title)}h=0}},add:function(i,f,h){var g=this;h=h||{};h=d.extend(h,{title:i,value:f});g.items.push(h);g.onAdd.dispatch(g,h)},getLength:function(){return this.items.length},renderHTML:function(){var i="",f=this,g=f.settings,j=f.classPrefix;i='';i+="";i+="";i+="";return i},showMenu:function(){var g=this,i,h=c.get(this.id),f;if(g.isDisabled()||g.items.length==0){return}if(g.menu&&g.menu.isMenuVisible){return g.hideMenu()}if(!g.isMenuRendered){g.renderMenu();g.isMenuRendered=true}i=c.getPos(h);f=g.menu;f.settings.offset_x=i.x;f.settings.offset_y=i.y;f.settings.keyboard_focus=!d.isOpera;if(g.oldID){f.items[g.oldID].setSelected(0)}e(g.items,function(j){if(j.value===g.selectedValue){f.items[j.id].setSelected(1);g.oldID=j.id}});f.showMenu(0,h.clientHeight);b.add(c.doc,"mousedown",g.hideMenu,g);c.addClass(g.id,g.classPrefix+"Selected")},hideMenu:function(g){var f=this;if(f.menu&&f.menu.isMenuVisible){c.removeClass(f.id,f.classPrefix+"Selected");if(g&&g.type=="mousedown"&&(g.target.id==f.id+"_text"||g.target.id==f.id+"_open")){return}if(!g||!c.getParent(g.target,".mceMenu")){c.removeClass(f.id,f.classPrefix+"Selected");b.remove(c.doc,"mousedown",f.hideMenu,f);f.menu.hideMenu()}}},renderMenu:function(){var g=this,f;f=g.settings.control_manager.createDropMenu(g.id+"_menu",{menu_line:1,"class":g.classPrefix+"Menu mceNoIcons",max_width:150,max_height:150});f.onHideMenu.add(function(){g.hideMenu();g.focus()});f.add({title:g.settings.title,"class":"mceMenuItemTitle",onclick:function(){if(g.settings.onselect("")!==false){g.select("")}}});e(g.items,function(h){if(h.value===undefined){f.add({title:h.title,"class":"mceMenuItemTitle",onclick:function(){if(g.settings.onselect("")!==false){g.select("")}}})}else{h.id=c.uniqueId();h.onclick=function(){if(g.settings.onselect(h.value)!==false){g.select(h.value)}};f.add(h)}});g.onRenderMenu.dispatch(g,f);g.menu=f},postRender:function(){var f=this,g=f.classPrefix;b.add(f.id,"click",f.showMenu,f);b.add(f.id,"keydown",function(h){if(h.keyCode==32){f.showMenu(h);b.cancel(h)}});b.add(f.id,"focus",function(){if(!f._focused){f.keyDownHandler=b.add(f.id,"keydown",function(h){if(h.keyCode==40){f.showMenu();b.cancel(h)}});f.keyPressHandler=b.add(f.id,"keypress",function(i){var h;if(i.keyCode==13){h=f.selectedValue;f.selectedValue=null;b.cancel(i);f.settings.onselect(h)}})}f._focused=1});b.add(f.id,"blur",function(){b.remove(f.id,"keydown",f.keyDownHandler);b.remove(f.id,"keypress",f.keyPressHandler);f._focused=0});if(d.isIE6||!c.boxModel){b.add(f.id,"mouseover",function(){if(!c.hasClass(f.id,g+"Disabled")){c.addClass(f.id,g+"Hover")}});b.add(f.id,"mouseout",function(){if(!c.hasClass(f.id,g+"Disabled")){c.removeClass(f.id,g+"Hover")}})}f.onPostRender.dispatch(f,c.get(f.id))},destroy:function(){this.parent();b.clear(this.id+"_text");b.clear(this.id+"_open")}})})(tinymce);(function(d){var c=d.DOM,b=d.dom.Event,e=d.each,a=d.util.Dispatcher;d.create("tinymce.ui.NativeListBox:tinymce.ui.ListBox",{NativeListBox:function(g,f){this.parent(g,f);this.classPrefix="mceNativeListBox"},setDisabled:function(f){c.get(this.id).disabled=f;this.setAriaProperty("disabled",f)},isDisabled:function(){return c.get(this.id).disabled},select:function(h){var g=this,j,i;if(h==undefined){return g.selectByIndex(-1)}if(h&&h.call){i=h}else{i=function(f){return f==h}}if(h!=g.selectedValue){e(g.items,function(k,f){if(i(k.value)){j=1;g.selectByIndex(f);return false}});if(!j){g.selectByIndex(-1)}}},selectByIndex:function(f){c.get(this.id).selectedIndex=f+1;this.selectedValue=this.items[f]?this.items[f].value:null},add:function(j,g,f){var i,h=this;f=f||{};f.value=g;if(h.isRendered()){c.add(c.get(this.id),"option",f,j)}i={title:j,value:g,attribs:f};h.items.push(i);h.onAdd.dispatch(h,i)},getLength:function(){return this.items.length},renderHTML:function(){var g,f=this;g=c.createHTML("option",{value:""},"-- "+f.settings.title+" --");e(f.items,function(h){g+=c.createHTML("option",{value:h.value},h.title)});g=c.createHTML("select",{id:f.id,"class":"mceNativeListBox","aria-labelledby":f.id+"_aria"},g);g+=c.createHTML("span",{id:f.id+"_aria",style:"display: none"},f.settings.title);return g},postRender:function(){var g=this,h,i=true;g.rendered=true;function f(k){var j=g.items[k.target.selectedIndex-1];if(j&&(j=j.value)){g.onChange.dispatch(g,j);if(g.settings.onselect){g.settings.onselect(j)}}}b.add(g.id,"change",f);b.add(g.id,"keydown",function(k){var j;b.remove(g.id,"change",h);i=false;j=b.add(g.id,"blur",function(){if(i){return}i=true;b.add(g.id,"change",f);b.remove(g.id,"blur",j)});if(d.isWebKit&&(k.keyCode==37||k.keyCode==39)){return b.prevent(k)}if(k.keyCode==13||k.keyCode==32){f(k);return b.cancel(k)}});g.onPostRender.dispatch(g,c.get(g.id))}})})(tinymce);(function(c){var b=c.DOM,a=c.dom.Event,d=c.each;c.create("tinymce.ui.MenuButton:tinymce.ui.Button",{MenuButton:function(g,f,e){this.parent(g,f,e);this.onRenderMenu=new c.util.Dispatcher(this);f.menu_container=f.menu_container||b.doc.body},showMenu:function(){var g=this,j,i,h=b.get(g.id),f;if(g.isDisabled()){return}if(!g.isMenuRendered){g.renderMenu();g.isMenuRendered=true}if(g.isMenuVisible){return g.hideMenu()}j=b.getPos(g.settings.menu_container);i=b.getPos(h);f=g.menu;f.settings.offset_x=i.x;f.settings.offset_y=i.y;f.settings.vp_offset_x=i.x;f.settings.vp_offset_y=i.y;f.settings.keyboard_focus=g._focused;f.showMenu(0,h.clientHeight);a.add(b.doc,"mousedown",g.hideMenu,g);g.setState("Selected",1);g.isMenuVisible=1},renderMenu:function(){var f=this,e;e=f.settings.control_manager.createDropMenu(f.id+"_menu",{menu_line:1,"class":this.classPrefix+"Menu",icons:f.settings.icons});e.onHideMenu.add(function(){f.hideMenu();f.focus()});f.onRenderMenu.dispatch(f,e);f.menu=e},hideMenu:function(g){var f=this;if(g&&g.type=="mousedown"&&b.getParent(g.target,function(h){return h.id===f.id||h.id===f.id+"_open"})){return}if(!g||!b.getParent(g.target,".mceMenu")){f.setState("Selected",0);a.remove(b.doc,"mousedown",f.hideMenu,f);if(f.menu){f.menu.hideMenu()}}f.isMenuVisible=0},postRender:function(){var e=this,f=e.settings;a.add(e.id,"click",function(){if(!e.isDisabled()){if(f.onclick){f.onclick(e.value)}e.showMenu()}})}})})(tinymce);(function(c){var b=c.DOM,a=c.dom.Event,d=c.each;c.create("tinymce.ui.SplitButton:tinymce.ui.MenuButton",{SplitButton:function(g,f,e){this.parent(g,f,e);this.classPrefix="mceSplitButton"},renderHTML:function(){var i,f=this,g=f.settings,e;i="";if(g.image){e=b.createHTML("img ",{src:g.image,role:"presentation","class":"mceAction "+g["class"]})}else{e=b.createHTML("span",{"class":"mceAction "+g["class"]},"")}e+=b.createHTML("span",{"class":"mceVoiceLabel mceIconOnly",id:f.id+"_voice",style:"display:none;"},g.title);i+=""+b.createHTML("a",{role:"button",id:f.id+"_action",tabindex:"-1",href:"javascript:;","class":"mceAction "+g["class"],onclick:"return false;",onmousedown:"return false;",title:g.title},e)+"";e=b.createHTML("span",{"class":"mceOpen "+g["class"]},'');i+=""+b.createHTML("a",{role:"button",id:f.id+"_open",tabindex:"-1",href:"javascript:;","class":"mceOpen "+g["class"],onclick:"return false;",onmousedown:"return false;",title:g.title},e)+"";i+="";i=b.createHTML("table",{id:f.id,role:"presentation",tabindex:"0","class":"mceSplitButton mceSplitButtonEnabled "+g["class"],cellpadding:"0",cellspacing:"0",title:g.title},i);return b.createHTML("span",{role:"button","aria-labelledby":f.id+"_voice","aria-haspopup":"true"},i)},postRender:function(){var e=this,g=e.settings,f;if(g.onclick){f=function(h){if(!e.isDisabled()){g.onclick(e.value);a.cancel(h)}};a.add(e.id+"_action","click",f);a.add(e.id,["click","keydown"],function(h){var k=32,m=14,i=13,j=38,l=40;if((h.keyCode===32||h.keyCode===13||h.keyCode===14)&&!h.altKey&&!h.ctrlKey&&!h.metaKey){f();a.cancel(h)}else{if(h.type==="click"||h.keyCode===l){e.showMenu();a.cancel(h)}}})}a.add(e.id+"_open","click",function(h){e.showMenu();a.cancel(h)});a.add([e.id,e.id+"_open"],"focus",function(){e._focused=1});a.add([e.id,e.id+"_open"],"blur",function(){e._focused=0});if(c.isIE6||!b.boxModel){a.add(e.id,"mouseover",function(){if(!b.hasClass(e.id,"mceSplitButtonDisabled")){b.addClass(e.id,"mceSplitButtonHover")}});a.add(e.id,"mouseout",function(){if(!b.hasClass(e.id,"mceSplitButtonDisabled")){b.removeClass(e.id,"mceSplitButtonHover")}})}},destroy:function(){this.parent();a.clear(this.id+"_action");a.clear(this.id+"_open");a.clear(this.id)}})})(tinymce);(function(d){var c=d.DOM,a=d.dom.Event,b=d.is,e=d.each;d.create("tinymce.ui.ColorSplitButton:tinymce.ui.SplitButton",{ColorSplitButton:function(i,h,f){var g=this;g.parent(i,h,f);g.settings=h=d.extend({colors:"000000,993300,333300,003300,003366,000080,333399,333333,800000,FF6600,808000,008000,008080,0000FF,666699,808080,FF0000,FF9900,99CC00,339966,33CCCC,3366FF,800080,999999,FF00FF,FFCC00,FFFF00,00FF00,00FFFF,00CCFF,993366,C0C0C0,FF99CC,FFCC99,FFFF99,CCFFCC,CCFFFF,99CCFF,CC99FF,FFFFFF",grid_width:8,default_color:"#888888"},g.settings);g.onShowMenu=new d.util.Dispatcher(g);g.onHideMenu=new d.util.Dispatcher(g);g.value=h.default_color},showMenu:function(){var f=this,g,j,i,h;if(f.isDisabled()){return}if(!f.isMenuRendered){f.renderMenu();f.isMenuRendered=true}if(f.isMenuVisible){return f.hideMenu()}i=c.get(f.id);c.show(f.id+"_menu");c.addClass(i,"mceSplitButtonSelected");h=c.getPos(i);c.setStyles(f.id+"_menu",{left:h.x,top:h.y+i.clientHeight,zIndex:200000});i=0;a.add(c.doc,"mousedown",f.hideMenu,f);f.onShowMenu.dispatch(f);if(f._focused){f._keyHandler=a.add(f.id+"_menu","keydown",function(k){if(k.keyCode==27){f.hideMenu()}});c.select("a",f.id+"_menu")[0].focus()}f.isMenuVisible=1},hideMenu:function(g){var f=this;if(f.isMenuVisible){if(g&&g.type=="mousedown"&&c.getParent(g.target,function(h){return h.id===f.id+"_open"})){return}if(!g||!c.getParent(g.target,".mceSplitButtonMenu")){c.removeClass(f.id,"mceSplitButtonSelected");a.remove(c.doc,"mousedown",f.hideMenu,f);a.remove(f.id+"_menu","keydown",f._keyHandler);c.hide(f.id+"_menu")}f.isMenuVisible=0;f.onHideMenu.dispatch()}},renderMenu:function(){var p=this,h,k=0,q=p.settings,g,j,l,o,f;o=c.add(q.menu_container,"div",{role:"listbox",id:p.id+"_menu","class":q.menu_class+" "+q["class"],style:"position:absolute;left:0;top:-1000px;"});h=c.add(o,"div",{"class":q["class"]+" mceSplitButtonMenu"});c.add(h,"span",{"class":"mceMenuLine"});g=c.add(h,"table",{role:"presentation","class":"mceColorSplitMenu"});j=c.add(g,"tbody");k=0;e(b(q.colors,"array")?q.colors:q.colors.split(","),function(i){i=i.replace(/^#/,"");if(!k--){l=c.add(j,"tr");k=q.grid_width-1}g=c.add(l,"td");g=c.add(g,"a",{role:"option",href:"javascript:;",style:{backgroundColor:"#"+i},title:p.editor.getLang("colors."+i,i),"data-mce-color":"#"+i});if(p.editor.forcedHighContrastMode){g=c.add(g,"canvas",{width:16,height:16,"aria-hidden":"true"});if(g.getContext&&(f=g.getContext("2d"))){f.fillStyle="#"+i;f.fillRect(0,0,16,16)}else{c.remove(g)}}});if(q.more_colors_func){g=c.add(j,"tr");g=c.add(g,"td",{colspan:q.grid_width,"class":"mceMoreColors"});g=c.add(g,"a",{role:"option",id:p.id+"_more",href:"javascript:;",onclick:"return false;","class":"mceMoreColors"},q.more_colors_title);a.add(g,"click",function(i){q.more_colors_func.call(q.more_colors_scope||this);return a.cancel(i)})}c.addClass(h,"mceColorSplitMenu");new d.ui.KeyboardNavigation({root:p.id+"_menu",items:c.select("a",p.id+"_menu"),onCancel:function(){p.hideMenu();p.focus()}});a.add(p.id+"_menu","mousedown",function(i){return a.cancel(i)});a.add(p.id+"_menu","click",function(i){var m;i=c.getParent(i.target,"a",j);if(i&&i.nodeName.toLowerCase()=="a"&&(m=i.getAttribute("data-mce-color"))){p.setColor(m)}return a.cancel(i)});return o},setColor:function(f){this.displayColor(f);this.hideMenu();this.settings.onselect(f)},displayColor:function(g){var f=this;c.setStyle(f.id+"_preview","backgroundColor",g);f.value=g},postRender:function(){var f=this,g=f.id;f.parent();c.add(g+"_action","div",{id:g+"_preview","class":"mceColorPreview"});c.setStyle(f.id+"_preview","backgroundColor",f.value)},destroy:function(){this.parent();a.clear(this.id+"_menu");a.clear(this.id+"_more");c.remove(this.id+"_menu")}})})(tinymce);(function(b){var d=b.DOM,c=b.each,a=b.dom.Event;b.create("tinymce.ui.ToolbarGroup:tinymce.ui.Container",{renderHTML:function(){var f=this,i=[],e=f.controls,j=b.each,g=f.settings;i.push('
    ');i.push("");i.push('");j(e,function(h){i.push(h.renderHTML())});i.push("");i.push("
    ");return i.join("")},focus:function(){this.keyNav.focus()},postRender:function(){var f=this,e=[];c(f.controls,function(g){c(g.controls,function(h){if(h.id){e.push(h)}})});f.keyNav=new b.ui.KeyboardNavigation({root:f.id,items:e,onCancel:function(){f.editor.focus()},excludeFromTabOrder:!f.settings.tab_focus_toolbar})},destroy:function(){var e=this;e.parent();e.keyNav.destroy();a.clear(e.id)}})})(tinymce);(function(a){var c=a.DOM,b=a.each;a.create("tinymce.ui.Toolbar:tinymce.ui.Container",{renderHTML:function(){var m=this,f="",j,k,n=m.settings,e,d,g,l;l=m.controls;for(e=0;e"))}if(d&&k.ListBox){if(d.Button||d.SplitButton){f+=c.createHTML("td",{"class":"mceToolbarEnd"},c.createHTML("span",null,""))}}if(c.stdMode){f+=''+k.renderHTML()+""}else{f+=""+k.renderHTML()+""}if(g&&k.ListBox){if(g.Button||g.SplitButton){f+=c.createHTML("td",{"class":"mceToolbarStart"},c.createHTML("span",null,""))}}}j="mceToolbarEnd";if(k.Button){j+=" mceToolbarEndButton"}else{if(k.SplitButton){j+=" mceToolbarEndSplitButton"}else{if(k.ListBox){j+=" mceToolbarEndListBox"}}}f+=c.createHTML("td",{"class":j},c.createHTML("span",null,""));return c.createHTML("table",{id:m.id,"class":"mceToolbar"+(n["class"]?" "+n["class"]:""),cellpadding:"0",cellspacing:"0",align:m.settings.align||"",role:"presentation",tabindex:"-1"},""+f+"")}})})(tinymce);(function(b){var a=b.util.Dispatcher,c=b.each;b.create("tinymce.AddOnManager",{AddOnManager:function(){var d=this;d.items=[];d.urls={};d.lookup={};d.onAdd=new a(d)},get:function(d){if(this.lookup[d]){return this.lookup[d].instance}else{return undefined}},dependencies:function(e){var d;if(this.lookup[e]){d=this.lookup[e].dependencies}return d||[]},requireLangPack:function(e){var d=b.settings;if(d&&d.language&&d.language_load!==false){b.ScriptLoader.add(this.urls[e]+"/langs/"+d.language+".js")}},add:function(f,e,d){this.items.push(e);this.lookup[f]={instance:e,dependencies:d};this.onAdd.dispatch(this,f,e);return e},createUrl:function(d,e){if(typeof e==="object"){return e}else{return{prefix:d.prefix,resource:e,suffix:d.suffix}}},addComponents:function(f,d){var e=this.urls[f];b.each(d,function(g){b.ScriptLoader.add(e+"/"+g)})},load:function(j,f,d,h){var g=this,e=f;function i(){var k=g.dependencies(j);b.each(k,function(m){var l=g.createUrl(f,m);g.load(l.resource,l,undefined,undefined)});if(d){if(h){d.call(h)}else{d.call(b.ScriptLoader)}}}if(g.urls[j]){return}if(typeof f==="object"){e=f.prefix+f.resource+f.suffix}if(e.indexOf("/")!=0&&e.indexOf("://")==-1){e=b.baseURL+"/"+e}g.urls[j]=e.substring(0,e.lastIndexOf("/"));if(g.lookup[j]){i()}else{b.ScriptLoader.add(e,i,h)}}});b.PluginManager=new b.AddOnManager();b.ThemeManager=new b.AddOnManager()}(tinymce));(function(j){var g=j.each,d=j.extend,k=j.DOM,i=j.dom.Event,f=j.ThemeManager,b=j.PluginManager,e=j.explode,h=j.util.Dispatcher,a,c=0;j.documentBaseURL=window.location.href.replace(/[\?#].*$/,"").replace(/[\/\\][^\/]+$/,"");if(!/[\/\\]$/.test(j.documentBaseURL)){j.documentBaseURL+="/"}j.baseURL=new j.util.URI(j.documentBaseURL).toAbsolute(j.baseURL);j.baseURI=new j.util.URI(j.baseURL);j.onBeforeUnload=new h(j);i.add(window,"beforeunload",function(l){j.onBeforeUnload.dispatch(j,l)});j.onAddEditor=new h(j);j.onRemoveEditor=new h(j);j.EditorManager=d(j,{editors:[],i18n:{},activeEditor:null,init:function(q){var n=this,p,l=j.ScriptLoader,u,o=[],m;function r(x,y,t){var v=x[y];if(!v){return}if(j.is(v,"string")){t=v.replace(/\.\w+$/,"");t=t?j.resolve(t):0;v=j.resolve(v)}return v.apply(t||this,Array.prototype.slice.call(arguments,2))}q=d({theme:"simple",language:"en"},q);n.settings=q;i.add(document,"init",function(){var s,v;r(q,"onpageload");switch(q.mode){case"exact":s=q.elements||"";if(s.length>0){g(e(s),function(x){if(k.get(x)){m=new j.Editor(x,q);o.push(m);m.render(1)}else{g(document.forms,function(y){g(y.elements,function(z){if(z.name===x){x="mce_editor_"+c++;k.setAttrib(z,"id",x);m=new j.Editor(x,q);o.push(m);m.render(1)}})})}})}break;case"textareas":case"specific_textareas":function t(y,x){return x.constructor===RegExp?x.test(y.className):k.hasClass(y,x)}g(k.select("textarea"),function(x){if(q.editor_deselector&&t(x,q.editor_deselector)){return}if(!q.editor_selector||t(x,q.editor_selector)){u=k.get(x.name);if(!x.id&&!u){x.id=x.name}if(!x.id||n.get(x.id)){x.id=k.uniqueId()}m=new j.Editor(x.id,q);o.push(m);m.render(1)}});break}if(q.oninit){s=v=0;g(o,function(x){v++;if(!x.initialized){x.onInit.add(function(){s++;if(s==v){r(q,"oninit")}})}else{s++}if(s==v){r(q,"oninit")}})}})},get:function(l){if(l===a){return this.editors}return this.editors[l]},getInstanceById:function(l){return this.get(l)},add:function(m){var l=this,n=l.editors;n[m.id]=m;n.push(m);l._setActive(m);l.onAddEditor.dispatch(l,m);return m},remove:function(n){var m=this,l,o=m.editors;if(!o[n.id]){return null}delete o[n.id];for(l=0;l':"",visual_table_class:"mceItemTable",visual:1,font_size_style_values:"xx-small,x-small,small,medium,large,x-large,xx-large",apply_source_formatting:1,directionality:"ltr",forced_root_block:"p",hidden_input:1,padd_empty_editor:1,render_ui:1,init_theme:1,force_p_newlines:1,indentation:"30px",keep_styles:1,fix_table_elements:1,inline_styles:1,convert_fonts_to_spans:true,indent:"simple",indent_before:"p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,ul,li,area,table,thead,tfoot,tbody,tr",indent_after:"p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,ul,li,area,table,thead,tfoot,tbody,tr",validate:true,entity_encoding:"named",url_converter:p.convertURL,url_converter_scope:p,ie7_compat:true},q);p.documentBaseURI=new m.util.URI(q.document_base_url||m.documentBaseURL,{base_uri:tinyMCE.baseURI});p.baseURI=m.baseURI;p.contentCSS=[];p.execCallback("setup",p)},render:function(r){var u=this,v=u.settings,x=u.id,p=m.ScriptLoader;if(!j.domLoaded){j.add(document,"init",function(){u.render()});return}tinyMCE.settings=v;if(!u.getElement()){return}if(m.isIDevice&&!m.isIOS5){return}if(!/TEXTAREA|INPUT/i.test(u.getElement().nodeName)&&v.hidden_input&&n.getParent(x,"form")){n.insertAfter(n.create("input",{type:"hidden",name:x}),x)}if(m.WindowManager){u.windowManager=new m.WindowManager(u)}if(v.encoding=="xml"){u.onGetContent.add(function(s,t){if(t.save){t.content=n.encode(t.content)}})}if(v.add_form_submit_trigger){u.onSubmit.addToTop(function(){if(u.initialized){u.save();u.isNotDirty=1}})}if(v.add_unload_trigger){u._beforeUnload=tinyMCE.onBeforeUnload.add(function(){if(u.initialized&&!u.destroyed&&!u.isHidden()){u.save({format:"raw",no_events:true})}})}m.addUnload(u.destroy,u);if(v.submit_patch){u.onBeforeRenderUI.add(function(){var s=u.getElement().form;if(!s){return}if(s._mceOldSubmit){return}if(!s.submit.nodeType&&!s.submit.length){u.formElement=s;s._mceOldSubmit=s.submit;s.submit=function(){m.triggerSave();u.isNotDirty=1;return u.formElement._mceOldSubmit(u.formElement)}}s=null})}function q(){if(v.language&&v.language_load!==false){p.add(m.baseURL+"/langs/"+v.language+".js")}if(v.theme&&v.theme.charAt(0)!="-"&&!h.urls[v.theme]){h.load(v.theme,"themes/"+v.theme+"/editor_template"+m.suffix+".js")}i(g(v.plugins),function(t){if(t&&!c.urls[t]){if(t.charAt(0)=="-"){t=t.substr(1,t.length);var s=c.dependencies(t);i(s,function(z){var y={prefix:"plugins/",resource:z,suffix:"/editor_plugin"+m.suffix+".js"};var z=c.createUrl(y,z);c.load(z.resource,z)})}else{if(t=="safari"){return}c.load(t,{prefix:"plugins/",resource:t,suffix:"/editor_plugin"+m.suffix+".js"})}}});p.loadQueue(function(){if(!u.removed){u.init()}})}q()},init:function(){var r,H=this,I=H.settings,E,A,D=H.getElement(),q,p,F,y,C,G,z,v=[];m.add(H);I.aria_label=I.aria_label||n.getAttrib(D,"aria-label",H.getLang("aria.rich_text_area"));if(I.theme){I.theme=I.theme.replace(/-/,"");q=h.get(I.theme);H.theme=new q();if(H.theme.init&&I.init_theme){H.theme.init(H,h.urls[I.theme]||m.documentBaseURL.replace(/\/$/,""))}}function B(J){var K=c.get(J),t=c.urls[J]||m.documentBaseURL.replace(/\/$/,""),s;if(K&&m.inArray(v,J)===-1){i(c.dependencies(J),function(u){B(u)});s=new K(H,t);H.plugins[J]=s;if(s.init){s.init(H,t);v.push(J)}}}i(g(I.plugins.replace(/\-/g,"")),B);if(I.popup_css!==false){if(I.popup_css){I.popup_css=H.documentBaseURI.toAbsolute(I.popup_css)}else{I.popup_css=H.baseURI.toAbsolute("themes/"+I.theme+"/skins/"+I.skin+"/dialog.css")}}if(I.popup_css_add){I.popup_css+=","+H.documentBaseURI.toAbsolute(I.popup_css_add)}H.controlManager=new m.ControlManager(H);if(I.custom_undo_redo){H.onBeforeExecCommand.add(function(t,J,u,K,s){if(J!="Undo"&&J!="Redo"&&J!="mceRepaint"&&(!s||!s.skip_undo)){H.undoManager.beforeChange()}});H.onExecCommand.add(function(t,J,u,K,s){if(J!="Undo"&&J!="Redo"&&J!="mceRepaint"&&(!s||!s.skip_undo)){H.undoManager.add()}})}H.onExecCommand.add(function(s,t){if(!/^(FontName|FontSize)$/.test(t)){H.nodeChanged()}});if(a){function x(s,t){if(!t||!t.initial){H.execCommand("mceRepaint")}}H.onUndo.add(x);H.onRedo.add(x);H.onSetContent.add(x)}H.onBeforeRenderUI.dispatch(H,H.controlManager);if(I.render_ui){E=I.width||D.style.width||D.offsetWidth;A=I.height||D.style.height||D.offsetHeight;H.orgDisplay=D.style.display;G=/^[0-9\.]+(|px)$/i;if(G.test(""+E)){E=Math.max(parseInt(E)+(q.deltaWidth||0),100)}if(G.test(""+A)){A=Math.max(parseInt(A)+(q.deltaHeight||0),100)}q=H.theme.renderUI({targetNode:D,width:E,height:A,deltaWidth:I.delta_width,deltaHeight:I.delta_height});H.editorContainer=q.editorContainer}if(document.domain&&location.hostname!=document.domain){m.relaxedDomain=document.domain}n.setStyles(q.sizeContainer||q.editorContainer,{width:E,height:A});if(I.content_css){m.each(g(I.content_css),function(s){H.contentCSS.push(H.documentBaseURI.toAbsolute(s))})}A=(q.iframeHeight||A)+(typeof(A)=="number"?(q.deltaHeight||0):"");if(A<100){A=100}H.iframeHTML=I.doctype+'';if(I.document_base_url!=m.documentBaseURL){H.iframeHTML+=''}if(I.ie7_compat){H.iframeHTML+=''}else{H.iframeHTML+=''}H.iframeHTML+='';y=I.body_id||"tinymce";if(y.indexOf("=")!=-1){y=H.getParam("body_id","","hash");y=y[H.id]||y}C=I.body_class||"";if(C.indexOf("=")!=-1){C=H.getParam("body_class","","hash");C=C[H.id]||""}H.iframeHTML+='
    ';if(m.relaxedDomain&&(b||(m.isOpera&&parseFloat(opera.version())<11))){F='javascript:(function(){document.open();document.domain="'+document.domain+'";var ed = window.parent.tinyMCE.get("'+H.id+'");document.write(ed.iframeHTML);document.close();ed.setupIframe();})()'}r=n.add(q.iframeContainer,"iframe",{id:H.id+"_ifr",src:F||'javascript:""',frameBorder:"0",allowTransparency:"true",title:I.aria_label,style:{width:"100%",height:A,display:"block"}});H.contentAreaContainer=q.iframeContainer;n.get(q.editorContainer).style.display=H.orgDisplay;n.get(H.id).style.display="none";n.setAttrib(H.id,"aria-hidden",true);if(!m.relaxedDomain||!F){H.setupIframe()}D=r=q=null},setupIframe:function(){var q=this,v=q.settings,x=n.get(q.id),y=q.getDoc(),u,p;if(!b||!m.relaxedDomain){if(a&&!Range.prototype.getClientRects){q.onMouseDown.add(function(t,z){if(z.target.nodeName==="HTML"){var s=q.getBody();s.blur();setTimeout(function(){s.focus()},0)}})}y.open();y.write(q.iframeHTML);y.close();if(m.relaxedDomain){y.domain=m.relaxedDomain}}p=q.getBody();p.disabled=true;if(!v.readonly){p.contentEditable=true}p.disabled=false;q.schema=new m.html.Schema(v);q.dom=new m.dom.DOMUtils(q.getDoc(),{keep_values:true,url_converter:q.convertURL,url_converter_scope:q,hex_colors:v.force_hex_style_colors,class_filter:v.class_filter,update_styles:1,fix_ie_paragraphs:1,schema:q.schema});q.parser=new m.html.DomParser(v,q.schema);if(!q.settings.allow_html_in_named_anchor){q.parser.addAttributeFilter("name",function(s,t){var A=s.length,C,z,B,D;while(A--){D=s[A];if(D.name==="a"&&D.firstChild){B=D.parent;C=D.lastChild;do{z=C.prev;B.insert(C,D);C=z}while(C)}}})}q.parser.addAttributeFilter("src,href,style",function(s,t){var z=s.length,B,D=q.dom,C,A;while(z--){B=s[z];C=B.attr(t);A="data-mce-"+t;if(!B.attributes.map[A]){if(t==="style"){B.attr(A,D.serializeStyle(D.parseStyle(C),B.name))}else{B.attr(A,q.convertURL(C,t,B.name))}}}});q.parser.addNodeFilter("script",function(s,t){var z=s.length;while(z--){s[z].attr("type","mce-text/javascript")}});q.parser.addNodeFilter("#cdata",function(s,t){var z=s.length,A;while(z--){A=s[z];A.type=8;A.name="#comment";A.value="[CDATA["+A.value+"]]"}});q.parser.addNodeFilter("p,h1,h2,h3,h4,h5,h6,div",function(t,z){var A=t.length,B,s=q.schema.getNonEmptyElements();while(A--){B=t[A];if(B.isEmpty(s)){B.empty().append(new m.html.Node("br",1)).shortEnded=true}}});q.serializer=new m.dom.Serializer(v,q.dom,q.schema);q.selection=new m.dom.Selection(q.dom,q.getWin(),q.serializer);q.formatter=new m.Formatter(this);q.formatter.register({alignleft:[{selector:"p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li",styles:{textAlign:"left"}},{selector:"img,table",collapsed:false,styles:{"float":"left"}}],aligncenter:[{selector:"p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li",styles:{textAlign:"center"}},{selector:"img",collapsed:false,styles:{display:"block",marginLeft:"auto",marginRight:"auto"}},{selector:"table",collapsed:false,styles:{marginLeft:"auto",marginRight:"auto"}}],alignright:[{selector:"p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li",styles:{textAlign:"right"}},{selector:"img,table",collapsed:false,styles:{"float":"right"}}],alignfull:[{selector:"p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li",styles:{textAlign:"justify"}}],bold:[{inline:"strong",remove:"all"},{inline:"span",styles:{fontWeight:"bold"}},{inline:"b",remove:"all"}],italic:[{inline:"em",remove:"all"},{inline:"span",styles:{fontStyle:"italic"}},{inline:"i",remove:"all"}],underline:[{inline:"span",styles:{textDecoration:"underline"},exact:true},{inline:"u",remove:"all"}],strikethrough:[{inline:"span",styles:{textDecoration:"line-through"},exact:true},{inline:"strike",remove:"all"}],forecolor:{inline:"span",styles:{color:"%value"},wrap_links:false},hilitecolor:{inline:"span",styles:{backgroundColor:"%value"},wrap_links:false},fontname:{inline:"span",styles:{fontFamily:"%value"}},fontsize:{inline:"span",styles:{fontSize:"%value"}},fontsize_class:{inline:"span",attributes:{"class":"%value"}},blockquote:{block:"blockquote",wrapper:1,remove:"all"},subscript:{inline:"sub"},superscript:{inline:"sup"},link:{inline:"a",selector:"a",remove:"all",split:true,deep:true,onmatch:function(s){return true},onformat:function(z,s,t){i(t,function(B,A){q.dom.setAttrib(z,A,B)})}},removeformat:[{selector:"b,strong,em,i,font,u,strike",remove:"all",split:true,expand:false,block_expand:true,deep:true},{selector:"span",attributes:["style","class"],remove:"empty",split:true,expand:false,deep:true},{selector:"*",attributes:["style","class"],split:false,expand:false,deep:true}]});i("p h1 h2 h3 h4 h5 h6 div address pre div code dt dd samp".split(/\s/),function(s){q.formatter.register(s,{block:s,remove:"all"})});q.formatter.register(q.settings.formats);q.undoManager=new m.UndoManager(q);q.undoManager.onAdd.add(function(t,s){if(t.hasUndo()){return q.onChange.dispatch(q,s,t)}});q.undoManager.onUndo.add(function(t,s){return q.onUndo.dispatch(q,s,t)});q.undoManager.onRedo.add(function(t,s){return q.onRedo.dispatch(q,s,t)});q.forceBlocks=new m.ForceBlocks(q,{forced_root_block:v.forced_root_block});q.editorCommands=new m.EditorCommands(q);q.serializer.onPreProcess.add(function(s,t){return q.onPreProcess.dispatch(q,t,s)});q.serializer.onPostProcess.add(function(s,t){return q.onPostProcess.dispatch(q,t,s)});q.onPreInit.dispatch(q);if(!v.gecko_spellcheck){q.getBody().spellcheck=0}if(!v.readonly){q._addEvents()}q.controlManager.onPostRender.dispatch(q,q.controlManager);q.onPostRender.dispatch(q);q.quirks=new m.util.Quirks(this);if(v.directionality){q.getBody().dir=v.directionality}if(v.nowrap){q.getBody().style.whiteSpace="nowrap"}if(v.handle_node_change_callback){q.onNodeChange.add(function(t,s,z){q.execCallback("handle_node_change_callback",q.id,z,-1,-1,true,q.selection.isCollapsed())})}if(v.save_callback){q.onSaveContent.add(function(s,z){var t=q.execCallback("save_callback",q.id,z.content,q.getBody());if(t){z.content=t}})}if(v.onchange_callback){q.onChange.add(function(t,s){q.execCallback("onchange_callback",q,s)})}if(v.protect){q.onBeforeSetContent.add(function(s,t){if(v.protect){i(v.protect,function(z){t.content=t.content.replace(z,function(A){return""})})}})}if(v.convert_newlines_to_brs){q.onBeforeSetContent.add(function(s,t){if(t.initial){t.content=t.content.replace(/\r?\n/g,"
    ")}})}if(v.preformatted){q.onPostProcess.add(function(s,t){t.content=t.content.replace(/^\s*/,"");t.content=t.content.replace(/<\/pre>\s*$/,"");if(t.set){t.content='
    '+t.content+"
    "}})}if(v.verify_css_classes){q.serializer.attribValueFilter=function(B,z){var A,t;if(B=="class"){if(!q.classesRE){t=q.dom.getClasses();if(t.length>0){A="";i(t,function(s){A+=(A?"|":"")+s["class"]});q.classesRE=new RegExp("("+A+")","gi")}}return !q.classesRE||/(\bmceItem\w+\b|\bmceTemp\w+\b)/g.test(z)||q.classesRE.test(z)?z:""}return z}}if(v.cleanup_callback){q.onBeforeSetContent.add(function(s,t){t.content=q.execCallback("cleanup_callback","insert_to_editor",t.content,t)});q.onPreProcess.add(function(s,t){if(t.set){q.execCallback("cleanup_callback","insert_to_editor_dom",t.node,t)}if(t.get){q.execCallback("cleanup_callback","get_from_editor_dom",t.node,t)}});q.onPostProcess.add(function(s,t){if(t.set){t.content=q.execCallback("cleanup_callback","insert_to_editor",t.content,t)}if(t.get){t.content=q.execCallback("cleanup_callback","get_from_editor",t.content,t)}})}if(v.save_callback){q.onGetContent.add(function(s,t){if(t.save){t.content=q.execCallback("save_callback",q.id,t.content,q.getBody())}})}if(v.handle_event_callback){q.onEvent.add(function(s,t,z){if(q.execCallback("handle_event_callback",t,s,z)===false){j.cancel(t)}})}q.onSetContent.add(function(){q.addVisual(q.getBody())});if(v.padd_empty_editor){q.onPostProcess.add(function(s,t){t.content=t.content.replace(/^(]*>( | |\s|\u00a0|)<\/p>[\r\n]*|
    [\r\n]*)$/,"")})}if(a){function r(s,t){i(s.dom.select("a"),function(A){var z=A.parentNode;if(s.dom.isBlock(z)&&z.lastChild===A){s.dom.add(z,"br",{"data-mce-bogus":1})}})}q.onExecCommand.add(function(s,t){if(t==="CreateLink"){r(s)}});q.onSetContent.add(q.selection.onSetContent.add(r))}q.load({initial:true,format:"html"});q.startContent=q.getContent({format:"raw"});q.undoManager.add();q.initialized=true;q.onInit.dispatch(q);q.execCallback("setupcontent_callback",q.id,q.getBody(),q.getDoc());q.execCallback("init_instance_callback",q);q.focus(true);q.nodeChanged({initial:1});i(q.contentCSS,function(s){q.dom.loadCSS(s)});if(v.auto_focus){setTimeout(function(){var s=m.get(v.auto_focus);s.selection.select(s.getBody(),1);s.selection.collapse(1);s.getBody().focus();s.getWin().focus()},100)}x=null},focus:function(u){var y,q=this,s=q.selection,x=q.settings.content_editable,r,p,v=q.getDoc();if(!u){r=s.getRng();if(r.item){p=r.item(0)}q._refreshContentEditable();s.normalize();if(!x){q.getWin().focus()}if(m.isGecko){q.getBody().focus()}if(p&&p.ownerDocument==v){r=v.body.createControlRange();r.addElement(p);r.select()}}if(m.activeEditor!=q){if((y=m.activeEditor)!=null){y.onDeactivate.dispatch(y,q)}q.onActivate.dispatch(q,y)}m._setActive(q)},execCallback:function(u){var p=this,r=p.settings[u],q;if(!r){return}if(p.callbackLookup&&(q=p.callbackLookup[u])){r=q.func;q=q.scope}if(d(r,"string")){q=r.replace(/\.\w+$/,"");q=q?m.resolve(q):0;r=m.resolve(r);p.callbackLookup=p.callbackLookup||{};p.callbackLookup[u]={func:r,scope:q}}return r.apply(q||p,Array.prototype.slice.call(arguments,1))},translate:function(p){var r=this.settings.language||"en",q=m.i18n;if(!p){return""}return q[r+"."+p]||p.replace(/{\#([^}]+)\}/g,function(t,s){return q[r+"."+s]||"{#"+s+"}"})},getLang:function(q,p){return m.i18n[(this.settings.language||"en")+"."+q]||(d(p)?p:"{#"+q+"}")},getParam:function(u,r,p){var s=m.trim,q=d(this.settings[u])?this.settings[u]:r,t;if(p==="hash"){t={};if(d(q,"string")){i(q.indexOf("=")>0?q.split(/[;,](?![^=;,]*(?:[;,]|$))/):q.split(","),function(x){x=x.split("=");if(x.length>1){t[s(x[0])]=s(x[1])}else{t[s(x[0])]=s(x)}})}else{t=q}return t}return q},nodeChanged:function(r){var p=this,q=p.selection,u=q.getStart()||p.getBody();if(p.initialized){r=r||{};u=b&&u.ownerDocument!=p.getDoc()?p.getBody():u;r.parents=[];p.dom.getParent(u,function(s){if(s.nodeName=="BODY"){return true}r.parents.push(s)});p.onNodeChange.dispatch(p,r?r.controlManager||p.controlManager:p.controlManager,u,q.isCollapsed(),r)}},addButton:function(r,q){var p=this;p.buttons=p.buttons||{};p.buttons[r]=q},addCommand:function(p,r,q){this.execCommands[p]={func:r,scope:q||this}},addQueryStateHandler:function(p,r,q){this.queryStateCommands[p]={func:r,scope:q||this}},addQueryValueHandler:function(p,r,q){this.queryValueCommands[p]={func:r,scope:q||this}},addShortcut:function(r,u,p,s){var q=this,v;if(!q.settings.custom_shortcuts){return false}q.shortcuts=q.shortcuts||{};if(d(p,"string")){v=p;p=function(){q.execCommand(v,false,null)}}if(d(p,"object")){v=p;p=function(){q.execCommand(v[0],v[1],v[2])}}i(g(r),function(t){var x={func:p,scope:s||this,desc:u,alt:false,ctrl:false,shift:false};i(g(t,"+"),function(y){switch(y){case"alt":case"ctrl":case"shift":x[y]=true;break;default:x.charCode=y.charCodeAt(0);x.keyCode=y.toUpperCase().charCodeAt(0)}});q.shortcuts[(x.ctrl?"ctrl":"")+","+(x.alt?"alt":"")+","+(x.shift?"shift":"")+","+x.keyCode]=x});return true},execCommand:function(x,v,z,p){var r=this,u=0,y,q;if(!/^(mceAddUndoLevel|mceEndUndoLevel|mceBeginUndoLevel|mceRepaint|SelectAll)$/.test(x)&&(!p||!p.skip_focus)){r.focus()}y={};r.onBeforeExecCommand.dispatch(r,x,v,z,y);if(y.terminate){return false}if(r.execCallback("execcommand_callback",r.id,r.selection.getNode(),x,v,z)){r.onExecCommand.dispatch(r,x,v,z,p);return true}if(y=r.execCommands[x]){q=y.func.call(y.scope,v,z);if(q!==true){r.onExecCommand.dispatch(r,x,v,z,p);return q}}i(r.plugins,function(s){if(s.execCommand&&s.execCommand(x,v,z)){r.onExecCommand.dispatch(r,x,v,z,p);u=1;return false}});if(u){return true}if(r.theme&&r.theme.execCommand&&r.theme.execCommand(x,v,z)){r.onExecCommand.dispatch(r,x,v,z,p);return true}if(r.editorCommands.execCommand(x,v,z)){r.onExecCommand.dispatch(r,x,v,z,p);return true}r.getDoc().execCommand(x,v,z);r.onExecCommand.dispatch(r,x,v,z,p)},queryCommandState:function(u){var q=this,v,r;if(q._isHidden()){return}if(v=q.queryStateCommands[u]){r=v.func.call(v.scope);if(r!==true){return r}}v=q.editorCommands.queryCommandState(u);if(v!==-1){return v}try{return this.getDoc().queryCommandState(u)}catch(p){}},queryCommandValue:function(v){var q=this,u,r;if(q._isHidden()){return}if(u=q.queryValueCommands[v]){r=u.func.call(u.scope);if(r!==true){return r}}u=q.editorCommands.queryCommandValue(v);if(d(u)){return u}try{return this.getDoc().queryCommandValue(v)}catch(p){}},show:function(){var p=this;n.show(p.getContainer());n.hide(p.id);p.load()},hide:function(){var p=this,q=p.getDoc();if(b&&q){q.execCommand("SelectAll")}p.save();n.hide(p.getContainer());n.setStyle(p.id,"display",p.orgDisplay)},isHidden:function(){return !n.isHidden(this.id)},setProgressState:function(p,q,r){this.onSetProgressState.dispatch(this,p,q,r);return p},load:function(s){var p=this,r=p.getElement(),q;if(r){s=s||{};s.load=true;q=p.setContent(d(r.value)?r.value:r.innerHTML,s);s.element=r;if(!s.no_events){p.onLoadContent.dispatch(p,s)}s.element=r=null;return q}},save:function(u){var p=this,s=p.getElement(),q,r;if(!s||!p.initialized){return}u=u||{};u.save=true;if(!u.no_events){p.undoManager.typing=false;p.undoManager.add()}u.element=s;q=u.content=p.getContent(u);if(!u.no_events){p.onSaveContent.dispatch(p,u)}q=u.content;if(!/TEXTAREA|INPUT/i.test(s.nodeName)){s.innerHTML=q;if(r=n.getParent(p.id,"form")){i(r.elements,function(t){if(t.name==p.id){t.value=q;return false}})}}else{s.value=q}u.element=s=null;return q},setContent:function(u,s){var r=this,q,p=r.getBody(),t;s=s||{};s.format=s.format||"html";s.set=true;s.content=u;if(!s.no_events){r.onBeforeSetContent.dispatch(r,s)}u=s.content;if(!m.isIE&&(u.length===0||/^\s+$/.test(u))){t=r.settings.forced_root_block;if(t){u="<"+t+'>
    "}else{u='
    '}p.innerHTML=u;r.selection.select(p,true);r.selection.collapse(true);return}if(s.format!=="raw"){u=new m.html.Serializer({},r.schema).serialize(r.parser.parse(u))}s.content=m.trim(u);r.dom.setHTML(p,s.content);if(!s.no_events){r.onSetContent.dispatch(r,s)}r.selection.normalize();return s.content},getContent:function(q){var p=this,r;q=q||{};q.format=q.format||"html";q.get=true;if(!q.no_events){p.onBeforeGetContent.dispatch(p,q)}if(q.format=="raw"){r=p.getBody().innerHTML}else{r=p.serializer.serialize(p.getBody(),q)}q.content=m.trim(r);if(!q.no_events){p.onGetContent.dispatch(p,q)}return q.content},isDirty:function(){var p=this;return m.trim(p.startContent)!=m.trim(p.getContent({format:"raw",no_events:1}))&&!p.isNotDirty},getContainer:function(){var p=this;if(!p.container){p.container=n.get(p.editorContainer||p.id+"_parent")}return p.container},getContentAreaContainer:function(){return this.contentAreaContainer},getElement:function(){return n.get(this.settings.content_element||this.id)},getWin:function(){var p=this,q;if(!p.contentWindow){q=n.get(p.id+"_ifr");if(q){p.contentWindow=q.contentWindow}}return p.contentWindow},getDoc:function(){var q=this,p;if(!q.contentDocument){p=q.getWin();if(p){q.contentDocument=p.document}}return q.contentDocument},getBody:function(){return this.bodyElement||this.getDoc().body},convertURL:function(p,x,v){var q=this,r=q.settings;if(r.urlconverter_callback){return q.execCallback("urlconverter_callback",p,v,true,x)}if(!r.convert_urls||(v&&v.nodeName=="LINK")||p.indexOf("file:")===0){return p}if(r.relative_urls){return q.documentBaseURI.toRelative(p)}p=q.documentBaseURI.toAbsolute(p,r.remove_script_host);return p},addVisual:function(r){var p=this,q=p.settings;r=r||p.getBody();if(!d(p.hasVisual)){p.hasVisual=q.visual}i(p.dom.select("table,a",r),function(t){var s;switch(t.nodeName){case"TABLE":s=p.dom.getAttrib(t,"border");if(!s||s=="0"){if(p.hasVisual){p.dom.addClass(t,q.visual_table_class)}else{p.dom.removeClass(t,q.visual_table_class)}}return;case"A":s=p.dom.getAttrib(t,"name");if(s){if(p.hasVisual){p.dom.addClass(t,"mceItemAnchor")}else{p.dom.removeClass(t,"mceItemAnchor")}}return}});p.onVisualAid.dispatch(p,r,p.hasVisual)},remove:function(){var p=this,q=p.getContainer();p.removed=1;p.hide();p.execCallback("remove_instance_callback",p);p.onRemove.dispatch(p);p.onExecCommand.listeners=[];m.remove(p);n.remove(q)},destroy:function(q){var p=this;if(p.destroyed){return}if(!q){m.removeUnload(p.destroy);tinyMCE.onBeforeUnload.remove(p._beforeUnload);if(p.theme&&p.theme.destroy){p.theme.destroy()}p.controlManager.destroy();p.selection.destroy();p.dom.destroy();if(!p.settings.content_editable){j.clear(p.getWin());j.clear(p.getDoc())}j.clear(p.getBody());j.clear(p.formElement)}if(p.formElement){p.formElement.submit=p.formElement._mceOldSubmit;p.formElement._mceOldSubmit=null}p.contentAreaContainer=p.formElement=p.container=p.settings.content_element=p.bodyElement=p.contentDocument=p.contentWindow=null;if(p.selection){p.selection=p.selection.win=p.selection.dom=p.selection.dom.doc=null}p.destroyed=1},_addEvents:function(){var B=this,r,C=B.settings,q=B.dom,x={mouseup:"onMouseUp",mousedown:"onMouseDown",click:"onClick",keyup:"onKeyUp",keydown:"onKeyDown",keypress:"onKeyPress",submit:"onSubmit",reset:"onReset",contextmenu:"onContextMenu",dblclick:"onDblClick",paste:"onPaste"};function p(t,D){var s=t.type;if(B.removed){return}if(B.onEvent.dispatch(B,t,D)!==false){B[x[t.fakeType||t.type]].dispatch(B,t,D)}}i(x,function(t,s){switch(s){case"contextmenu":q.bind(B.getDoc(),s,p);break;case"paste":q.bind(B.getBody(),s,function(D){p(D)});break;case"submit":case"reset":q.bind(B.getElement().form||n.getParent(B.id,"form"),s,p);break;default:q.bind(C.content_editable?B.getBody():B.getDoc(),s,p)}});q.bind(C.content_editable?B.getBody():(a?B.getDoc():B.getWin()),"focus",function(s){B.focus(true)});if(m.isGecko){q.bind(B.getDoc(),"DOMNodeInserted",function(t){var s;t=t.target;if(t.nodeType===1&&t.nodeName==="IMG"&&(s=t.getAttribute("data-mce-src"))){t.src=B.documentBaseURI.toAbsolute(s)}})}if(a){function u(){var E=this,G=E.getDoc(),F=E.settings;if(a&&!F.readonly){E._refreshContentEditable();try{G.execCommand("styleWithCSS",0,false)}catch(D){if(!E._isHidden()){try{G.execCommand("useCSS",0,true)}catch(D){}}}if(!F.table_inline_editing){try{G.execCommand("enableInlineTableEditing",false,false)}catch(D){}}if(!F.object_resizing){try{G.execCommand("enableObjectResizing",false,false)}catch(D){}}}}B.onBeforeExecCommand.add(u);B.onMouseDown.add(u)}B.onClick.add(function(s,t){t=t.target;if(m.isWebKit&&t.nodeName=="IMG"){B.selection.getSel().setBaseAndExtent(t,0,t,1)}if(t.nodeName=="A"&&q.hasClass(t,"mceItemAnchor")){B.selection.select(t)}B.nodeChanged()});B.onMouseUp.add(B.nodeChanged);B.onKeyUp.add(function(s,t){var D=t.keyCode;if((D>=33&&D<=36)||(D>=37&&D<=40)||D==13||D==45||D==46||D==8||(m.isMac&&(D==91||D==93))||t.ctrlKey){B.nodeChanged()}});B.onKeyDown.add(function(t,D){if(D.keyCode!=8){return}var F=t.selection.getRng().startContainer;var E=t.selection.getRng().startOffset;while(F&&F.nodeType&&F.nodeType!=1&&F.parentNode){F=F.parentNode}if(F&&F.parentNode&&F.parentNode.tagName==="BLOCKQUOTE"&&F.parentNode.firstChild==F&&E==0){t.formatter.toggle("blockquote",null,F.parentNode);var s=t.selection.getRng();s.setStart(F,0);s.setEnd(F,0);t.selection.setRng(s);t.selection.collapse(false)}});B.onReset.add(function(){B.setContent(B.startContent,{format:"raw"})});if(C.custom_shortcuts){if(C.custom_undo_redo_keyboard_shortcuts){B.addShortcut("ctrl+z",B.getLang("undo_desc"),"Undo");B.addShortcut("ctrl+y",B.getLang("redo_desc"),"Redo")}B.addShortcut("ctrl+b",B.getLang("bold_desc"),"Bold");B.addShortcut("ctrl+i",B.getLang("italic_desc"),"Italic");B.addShortcut("ctrl+u",B.getLang("underline_desc"),"Underline");for(r=1;r<=6;r++){B.addShortcut("ctrl+"+r,"",["FormatBlock",false,"h"+r])}B.addShortcut("ctrl+7","",["FormatBlock",false,"p"]);B.addShortcut("ctrl+8","",["FormatBlock",false,"div"]);B.addShortcut("ctrl+9","",["FormatBlock",false,"address"]);function v(t){var s=null;if(!t.altKey&&!t.ctrlKey&&!t.metaKey){return s}i(B.shortcuts,function(D){if(m.isMac&&D.ctrl!=t.metaKey){return}else{if(!m.isMac&&D.ctrl!=t.ctrlKey){return}}if(D.alt!=t.altKey){return}if(D.shift!=t.shiftKey){return}if(t.keyCode==D.keyCode||(t.charCode&&t.charCode==D.charCode)){s=D;return false}});return s}B.onKeyUp.add(function(s,t){var D=v(t);if(D){return j.cancel(t)}});B.onKeyPress.add(function(s,t){var D=v(t);if(D){return j.cancel(t)}});B.onKeyDown.add(function(s,t){var D=v(t);if(D){D.func.call(D.scope);return j.cancel(t)}})}if(m.isIE){q.bind(B.getDoc(),"controlselect",function(D){var t=B.resizeInfo,s;D=D.target;if(D.nodeName!=="IMG"){return}if(t){q.unbind(t.node,t.ev,t.cb)}if(!q.hasClass(D,"mceItemNoResize")){ev="resizeend";s=q.bind(D,ev,function(F){var E;F=F.target;if(E=q.getStyle(F,"width")){q.setAttrib(F,"width",E.replace(/[^0-9%]+/g,""));q.setStyle(F,"width","")}if(E=q.getStyle(F,"height")){q.setAttrib(F,"height",E.replace(/[^0-9%]+/g,""));q.setStyle(F,"height","")}})}else{ev="resizestart";s=q.bind(D,"resizestart",j.cancel,j)}t=B.resizeInfo={node:D,ev:ev,cb:s}})}if(m.isOpera){B.onClick.add(function(s,t){j.prevent(t)})}if(C.custom_undo_redo){function y(){B.undoManager.typing=false;B.undoManager.add()}q.bind(B.getDoc(),"focusout",function(s){if(!B.removed&&B.undoManager.typing){y()}});B.dom.bind(B.dom.getRoot(),"dragend",function(s){y()});B.onKeyUp.add(function(s,D){var t=D.keyCode;if((t>=33&&t<=36)||(t>=37&&t<=40)||t==13||t==45||D.ctrlKey){y()}});B.onKeyDown.add(function(s,E){var D=E.keyCode,t;if(D==8){t=B.getDoc().selection;if(t&&t.createRange&&t.createRange().item){B.undoManager.beforeChange();s.dom.remove(t.createRange().item(0));y();return j.cancel(E)}}if((D>=33&&D<=36)||(D>=37&&D<=40)||D==13||D==45){if(m.isIE&&D==13){B.undoManager.beforeChange()}if(B.undoManager.typing){y()}return}if((D<16||D>20)&&D!=224&&D!=91&&!B.undoManager.typing){B.undoManager.beforeChange();B.undoManager.typing=true;B.undoManager.add()}});B.onMouseDown.add(function(){if(B.undoManager.typing){y()}})}if(m.isWebKit){q.bind(B.getDoc(),"selectionchange",function(){if(B.selectionTimer){clearTimeout(B.selectionTimer);B.selectionTimer=0}B.selectionTimer=window.setTimeout(function(){B.nodeChanged()},50)})}if(m.isGecko){function A(){var s=B.dom.getAttribs(B.selection.getStart().cloneNode(false));return function(){var t=B.selection.getStart();if(t!==B.getBody()){B.dom.removeAllAttribs(t);i(s,function(D){t.setAttributeNode(D.cloneNode(true))})}}}function z(){var t=B.selection;return !t.isCollapsed()&&t.getStart()!=t.getEnd()}B.onKeyPress.add(function(s,D){var t;if((D.keyCode==8||D.keyCode==46)&&z()){t=A();B.getDoc().execCommand("delete",false,null);t();return j.cancel(D)}});B.dom.bind(B.getDoc(),"cut",function(t){var s;if(z()){s=A();B.onKeyUp.addToTop(j.cancel,j);setTimeout(function(){s();B.onKeyUp.remove(j.cancel,j)},0)}})}},_refreshContentEditable:function(){var q=this,p,r;if(q._isHidden()){p=q.getBody();r=p.parentNode;r.removeChild(p);r.appendChild(p);p.focus()}},_isHidden:function(){var p;if(!a){return 0}p=this.selection.getSel();return(!p||!p.rangeCount||p.rangeCount==0)}})})(tinymce);(function(c){var d=c.each,e,a=true,b=false;c.EditorCommands=function(n){var m=n.dom,p=n.selection,j={state:{},exec:{},value:{}},k=n.settings,q=n.formatter,o;function r(z,y,x){var v;z=z.toLowerCase();if(v=j.exec[z]){v(z,y,x);return a}return b}function l(x){var v;x=x.toLowerCase();if(v=j.state[x]){return v(x)}return -1}function h(x){var v;x=x.toLowerCase();if(v=j.value[x]){return v(x)}return b}function u(v,x){x=x||"exec";d(v,function(z,y){d(y.toLowerCase().split(","),function(A){j[x][A]=z})})}c.extend(this,{execCommand:r,queryCommandState:l,queryCommandValue:h,addCommands:u});function f(y,x,v){if(x===e){x=b}if(v===e){v=null}return n.getDoc().execCommand(y,x,v)}function t(v){return q.match(v)}function s(v,x){q.toggle(v,x?{value:x}:e)}function i(v){o=p.getBookmark(v)}function g(){p.moveToBookmark(o)}u({"mceResetDesignMode,mceBeginUndoLevel":function(){},"mceEndUndoLevel,mceAddUndoLevel":function(){n.undoManager.add()},"Cut,Copy,Paste":function(z){var y=n.getDoc(),v;try{f(z)}catch(x){v=a}if(v||!y.queryCommandSupported(z)){if(c.isGecko){n.windowManager.confirm(n.getLang("clipboard_msg"),function(A){if(A){open("http://www.mozilla.org/editor/midasdemo/securityprefs.html","_blank")}})}else{n.windowManager.alert(n.getLang("clipboard_no_support"))}}},unlink:function(v){if(p.isCollapsed()){p.select(p.getNode())}f(v);p.collapse(b)},"JustifyLeft,JustifyCenter,JustifyRight,JustifyFull":function(v){var x=v.substring(7);d("left,center,right,full".split(","),function(y){if(x!=y){q.remove("align"+y)}});s("align"+x);r("mceRepaint")},"InsertUnorderedList,InsertOrderedList":function(y){var v,x;f(y);v=m.getParent(p.getNode(),"ol,ul");if(v){x=v.parentNode;if(/^(H[1-6]|P|ADDRESS|PRE)$/.test(x.nodeName)){i();m.split(x,v);g()}}},"Bold,Italic,Underline,Strikethrough,Superscript,Subscript":function(v){s(v)},"ForeColor,HiliteColor,FontName":function(y,x,v){s(y,v)},FontSize:function(z,y,x){var v,A;if(x>=1&&x<=7){A=c.explode(k.font_size_style_values);v=c.explode(k.font_size_classes);if(v){x=v[x-1]||x}else{x=A[x-1]||x}}s(z,x)},RemoveFormat:function(v){q.remove(v)},mceBlockQuote:function(v){s("blockquote")},FormatBlock:function(y,x,v){return s(v||"p")},mceCleanup:function(){var v=p.getBookmark();n.setContent(n.getContent({cleanup:a}),{cleanup:a});p.moveToBookmark(v)},mceRemoveNode:function(z,y,x){var v=x||p.getNode();if(v!=n.getBody()){i();n.dom.remove(v,a);g()}},mceSelectNodeDepth:function(z,y,x){var v=0;m.getParent(p.getNode(),function(A){if(A.nodeType==1&&v++==x){p.select(A);return b}},n.getBody())},mceSelectNode:function(y,x,v){p.select(v)},mceInsertContent:function(B,I,K){var y,J,E,z,F,G,D,C,L,x,A,M,v,H;y=n.parser;J=new c.html.Serializer({},n.schema);v='\uFEFF';G={content:K,format:"html"};p.onBeforeSetContent.dispatch(p,G);K=G.content;if(K.indexOf("{$caret}")==-1){K+="{$caret}"}K=K.replace(/\{\$caret\}/,v);if(!p.isCollapsed()){n.getDoc().execCommand("Delete",false,null)}E=p.getNode();G={context:E.nodeName.toLowerCase()};F=y.parse(K,G);A=F.lastChild;if(A.attr("id")=="mce_marker"){D=A;for(A=A.prev;A;A=A.walk(true)){if(A.type==3||!m.isBlock(A.name)){A.parent.insert(D,A,A.name==="br");break}}}if(!G.invalid){K=J.serialize(F);A=E.firstChild;M=E.lastChild;if(!A||(A===M&&A.nodeName==="BR")){m.setHTML(E,K)}else{p.setContent(K)}}else{p.setContent(v);E=n.selection.getNode();z=n.getBody();if(E.nodeType==9){E=A=z}else{A=E}while(A!==z){E=A;A=A.parentNode}K=E==z?z.innerHTML:m.getOuterHTML(E);K=J.serialize(y.parse(K.replace(//i,function(){return J.serialize(F)})));if(E==z){m.setHTML(z,K)}else{m.setOuterHTML(E,K)}}D=m.get("mce_marker");C=m.getRect(D);L=m.getViewPort(n.getWin());if((C.y+C.h>L.y+L.h||C.yL.x+L.w||C.x")},mceToggleVisualAid:function(){n.hasVisual=!n.hasVisual;n.addVisual()},mceReplaceContent:function(y,x,v){n.execCommand("mceInsertContent",false,v.replace(/\{\$selection\}/g,p.getContent({format:"text"})))},mceInsertLink:function(z,y,x){var v;if(typeof(x)=="string"){x={href:x}}v=m.getParent(p.getNode(),"a");x.href=x.href.replace(" ","%20");if(!v||!x.href){q.remove("link")}if(x.href){q.apply("link",x,v)}},selectAll:function(){var x=m.getRoot(),v=m.createRng();v.setStart(x,0);v.setEnd(x,x.childNodes.length);n.selection.setRng(v)}});u({"JustifyLeft,JustifyCenter,JustifyRight,JustifyFull":function(v){return t("align"+v.substring(7))},"Bold,Italic,Underline,Strikethrough,Superscript,Subscript":function(v){return t(v)},mceBlockQuote:function(){return t("blockquote")},Outdent:function(){var v;if(k.inline_styles){if((v=m.getParent(p.getStart(),m.isBlock))&&parseInt(v.style.paddingLeft)>0){return a}if((v=m.getParent(p.getEnd(),m.isBlock))&&parseInt(v.style.paddingLeft)>0){return a}}return l("InsertUnorderedList")||l("InsertOrderedList")||(!k.inline_styles&&!!m.getParent(p.getNode(),"BLOCKQUOTE"))},"InsertUnorderedList,InsertOrderedList":function(v){return m.getParent(p.getNode(),v=="insertunorderedlist"?"UL":"OL")}},"state");u({"FontSize,FontName":function(y){var x=0,v;if(v=m.getParent(p.getNode(),"span")){if(y=="fontsize"){x=v.style.fontSize}else{x=v.style.fontFamily.replace(/, /g,",").replace(/[\'\"]/g,"").toLowerCase()}}return x}},"value");if(k.custom_undo_redo){u({Undo:function(){n.undoManager.undo()},Redo:function(){n.undoManager.redo()}})}}})(tinymce);(function(b){var a=b.util.Dispatcher;b.UndoManager=function(f){var d,e=0,h=[],c;function g(){return b.trim(f.getContent({format:"raw",no_events:1}))}return d={typing:false,onAdd:new a(d),onUndo:new a(d),onRedo:new a(d),beforeChange:function(){c=f.selection.getBookmark(2,true)},add:function(m){var j,k=f.settings,l;m=m||{};m.content=g();l=h[e];if(l&&l.content==m.content){return null}if(h[e]){h[e].beforeBookmark=c}if(k.custom_undo_redo_levels){if(h.length>k.custom_undo_redo_levels){for(j=0;j0){k=h[--e];f.setContent(k.content,{format:"raw"});f.selection.moveToBookmark(k.beforeBookmark);d.onUndo.dispatch(d,k)}return k},redo:function(){var i;if(e0||this.typing},hasRedo:function(){return e');q.replace(p,m);o.select(p,1)}return g}return d}l.create("tinymce.ForceBlocks",{ForceBlocks:function(m){var n=this,o=m.settings,p;n.editor=m;n.dom=m.dom;p=(o.forced_root_block||"p").toLowerCase();o.element=p.toUpperCase();m.onPreInit.add(n.setup,n)},setup:function(){var n=this,m=n.editor,p=m.settings,u=m.dom,o=m.selection,q=m.schema.getBlockElements();if(p.forced_root_block){function v(){var y=o.getStart(),t=m.getBody(),s,z,D,F,E,x,A,B=-16777215;if(!y||y.nodeType!==1){return}while(y!=t){if(q[y.nodeName]){return}y=y.parentNode}s=o.getRng();if(s.setStart){z=s.startContainer;D=s.startOffset;F=s.endContainer;E=s.endOffset}else{if(s.item){s=m.getDoc().body.createTextRange();s.moveToElementText(s.item(0))}tmpRng=s.duplicate();tmpRng.collapse(true);D=tmpRng.move("character",B)*-1;if(!tmpRng.collapsed){tmpRng=s.duplicate();tmpRng.collapse(false);E=(tmpRng.move("character",B)*-1)-D}}for(y=t.firstChild;y;y){if(y.nodeType===3||(y.nodeType==1&&!q[y.nodeName])){if(!x){x=u.create(p.forced_root_block);y.parentNode.insertBefore(x,y)}A=y;y=y.nextSibling;x.appendChild(A)}else{x=null;y=y.nextSibling}}if(s.setStart){s.setStart(z,D);s.setEnd(F,E);o.setRng(s)}else{try{s=m.getDoc().body.createTextRange();s.moveToElementText(t);s.collapse(true);s.moveStart("character",D);if(E>0){s.moveEnd("character",E)}s.select()}catch(C){}}m.nodeChanged()}m.onKeyUp.add(v);m.onClick.add(v)}if(p.force_br_newlines){if(c){m.onKeyPress.add(function(s,t){var x;if(t.keyCode==13&&o.getNode().nodeName!="LI"){o.setContent('
    ',{format:"raw"});x=u.get("__");x.removeAttribute("id");o.select(x);o.collapse();return j.cancel(t)}})}}if(p.force_p_newlines){if(!c){m.onKeyPress.add(function(s,t){if(t.keyCode==13&&!t.shiftKey&&!n.insertPara(t)){j.cancel(t)}})}else{l.addUnload(function(){n._previousFormats=0});m.onKeyPress.add(function(s,t){n._previousFormats=0;if(t.keyCode==13&&!t.shiftKey&&s.selection.isCollapsed()&&p.keep_styles){n._previousFormats=k(s.selection.getStart())}});m.onKeyUp.add(function(t,y){if(y.keyCode==13&&!y.shiftKey){var x=t.selection.getStart(),s=n._previousFormats;if(!x.hasChildNodes()&&s){x=u.getParent(x,u.isBlock);if(x&&x.nodeName!="LI"){x.innerHTML="";if(n._previousFormats){x.appendChild(s.wrapper);s.inner.innerHTML="\uFEFF"}else{x.innerHTML="\uFEFF"}o.select(x,1);o.collapse(true);t.getDoc().execCommand("Delete",false,null);n._previousFormats=0}}}})}if(a){m.onKeyDown.add(function(s,t){if((t.keyCode==8||t.keyCode==46)&&!t.shiftKey){n.backspaceDelete(t,t.keyCode==8)}})}}if(l.isWebKit){function r(t){var s=o.getRng(),x,A=u.create("div",null," "),z,y=u.getViewPort(t.getWin()).h;s.insertNode(x=u.create("br"));s.setStartAfter(x);s.setEndAfter(x);o.setRng(s);if(o.getSel().focusNode==x.previousSibling){o.select(u.insertAfter(u.doc.createTextNode("\u00a0"),x));o.collapse(d)}u.insertAfter(A,x);z=u.getPos(A).y;u.remove(A);if(z>y){t.getWin().scrollTo(0,z)}}m.onKeyPress.add(function(s,t){if(t.keyCode==13&&(t.shiftKey||(p.force_br_newlines&&!u.getParent(o.getNode(),"h1,h2,h3,h4,h5,h6,ol,ul")))){r(s);j.cancel(t)}})}if(c){if(p.element!="P"){m.onKeyPress.add(function(s,t){n.lastElm=o.getNode().nodeName});m.onKeyUp.add(function(t,x){var z,y=o.getNode(),s=t.getBody();if(s.childNodes.length===1&&y.nodeName=="P"){y=u.rename(y,p.element);o.select(y);o.collapse();t.nodeChanged()}else{if(x.keyCode==13&&!x.shiftKey&&n.lastElm!="P"){z=u.getParent(y,"p");if(z){u.rename(z,p.element);t.nodeChanged()}}}})}}},getParentBlock:function(o){var m=this.dom;return m.getParent(o,m.isBlock)},insertPara:function(Q){var E=this,v=E.editor,M=v.dom,R=v.getDoc(),V=v.settings,F=v.selection.getSel(),G=F.getRangeAt(0),U=R.body;var J,K,H,O,N,q,o,u,z,m,C,T,p,x,I,L=M.getViewPort(v.getWin()),B,D,A;v.undoManager.beforeChange();J=R.createRange();J.setStart(F.anchorNode,F.anchorOffset);J.collapse(d);K=R.createRange();K.setStart(F.focusNode,F.focusOffset);K.collapse(d);H=J.compareBoundaryPoints(J.START_TO_END,K)<0;O=H?F.anchorNode:F.focusNode;N=H?F.anchorOffset:F.focusOffset;q=H?F.focusNode:F.anchorNode;o=H?F.focusOffset:F.anchorOffset;if(O===q&&/^(TD|TH)$/.test(O.nodeName)){if(O.firstChild.nodeName=="BR"){M.remove(O.firstChild)}if(O.childNodes.length==0){v.dom.add(O,V.element,null,"
    ");T=v.dom.add(O,V.element,null,"
    ")}else{I=O.innerHTML;O.innerHTML="";v.dom.add(O,V.element,null,I);T=v.dom.add(O,V.element,null,"
    ")}G=R.createRange();G.selectNodeContents(T);G.collapse(1);v.selection.setRng(G);return g}if(O==U&&q==U&&U.firstChild&&v.dom.isBlock(U.firstChild)){O=q=O.firstChild;N=o=0;J=R.createRange();J.setStart(O,0);K=R.createRange();K.setStart(q,0)}if(!R.body.hasChildNodes()){R.body.appendChild(M.create("br"))}O=O.nodeName=="HTML"?R.body:O;O=O.nodeName=="BODY"?O.firstChild:O;q=q.nodeName=="HTML"?R.body:q;q=q.nodeName=="BODY"?q.firstChild:q;u=E.getParentBlock(O);z=E.getParentBlock(q);m=u?u.nodeName:V.element;if(I=E.dom.getParent(u,"li,pre")){if(I.nodeName=="LI"){return e(v.selection,E.dom,I)}return d}if(u&&(u.nodeName=="CAPTION"||/absolute|relative|fixed/gi.test(M.getStyle(u,"position",1)))){m=V.element;u=null}if(z&&(z.nodeName=="CAPTION"||/absolute|relative|fixed/gi.test(M.getStyle(u,"position",1)))){m=V.element;z=null}if(/(TD|TABLE|TH|CAPTION)/.test(m)||(u&&m=="DIV"&&/left|right/gi.test(M.getStyle(u,"float",1)))){m=V.element;u=z=null}C=(u&&u.nodeName==m)?u.cloneNode(0):v.dom.create(m);T=(z&&z.nodeName==m)?z.cloneNode(0):v.dom.create(m);T.removeAttribute("id");if(/^(H[1-6])$/.test(m)&&f(G,u)){T=v.dom.create(V.element)}I=p=O;do{if(I==U||I.nodeType==9||E.dom.isBlock(I)||/(TD|TABLE|TH|CAPTION)/.test(I.nodeName)){break}p=I}while((I=I.previousSibling?I.previousSibling:I.parentNode));I=x=q;do{if(I==U||I.nodeType==9||E.dom.isBlock(I)||/(TD|TABLE|TH|CAPTION)/.test(I.nodeName)){break}x=I}while((I=I.nextSibling?I.nextSibling:I.parentNode));if(p.nodeName==m){J.setStart(p,0)}else{J.setStartBefore(p)}J.setEnd(O,N);C.appendChild(J.cloneContents()||R.createTextNode(""));try{K.setEndAfter(x)}catch(P){}K.setStart(q,o);T.appendChild(K.cloneContents()||R.createTextNode(""));G=R.createRange();if(!p.previousSibling&&p.parentNode.nodeName==m){G.setStartBefore(p.parentNode)}else{if(J.startContainer.nodeName==m&&J.startOffset==0){G.setStartBefore(J.startContainer)}else{G.setStart(J.startContainer,J.startOffset)}}if(!x.nextSibling&&x.parentNode.nodeName==m){G.setEndAfter(x.parentNode)}else{G.setEnd(K.endContainer,K.endOffset)}G.deleteContents();if(b){v.getWin().scrollTo(0,L.y)}if(C.firstChild&&C.firstChild.nodeName==m){C.innerHTML=C.firstChild.innerHTML}if(T.firstChild&&T.firstChild.nodeName==m){T.innerHTML=T.firstChild.innerHTML}function S(y,s){var r=[],X,W,t;y.innerHTML="";if(V.keep_styles){W=s;do{if(/^(SPAN|STRONG|B|EM|I|FONT|STRIKE|U)$/.test(W.nodeName)){X=W.cloneNode(g);M.setAttrib(X,"id","");r.push(X)}}while(W=W.parentNode)}if(r.length>0){for(t=r.length-1,X=y;t>=0;t--){X=X.appendChild(r[t])}r[0].innerHTML=b?"\u00a0":"
    ";return r[0]}else{y.innerHTML=b?"\u00a0":"
    "}}if(M.isEmpty(C)){S(C,O)}if(M.isEmpty(T)){A=S(T,q)}if(b&&parseFloat(opera.version())<9.5){G.insertNode(C);G.insertNode(T)}else{G.insertNode(T);G.insertNode(C)}T.normalize();C.normalize();v.selection.select(T,true);v.selection.collapse(true);B=v.dom.getPos(T).y;if(BL.y+L.h){v.getWin().scrollTo(0,B1||ac==au){return ac}}}var am=V.selection.getRng();var aq=am.startContainer;var al=am.endContainer;if(aq!=al&&am.endOffset==0){var ap=an(aq,al);var ao=ap.nodeType==3?ap.length:ap.childNodes.length;am.setEnd(ap,ao)}return am}function Y(ao,au,ar,aq,am){var al=[],an=-1,at,aw=-1,ap=-1,av;O(ao.childNodes,function(ay,ax){if(ay.nodeName==="UL"||ay.nodeName==="OL"){an=ax;at=ay;return false}});O(ao.childNodes,function(ay,ax){if(ay.nodeName==="SPAN"&&c.getAttrib(ay,"data-mce-type")=="bookmark"){if(ay.id==au.id+"_start"){aw=ax}else{if(ay.id==au.id+"_end"){ap=ax}}}});if(an<=0||(awan)){O(a.grep(ao.childNodes),am);return 0}else{av=ar.cloneNode(S);O(a.grep(ao.childNodes),function(ay,ax){if((awan&&ax>an)){al.push(ay);ay.parentNode.removeChild(ay)}});if(awan){ao.insertBefore(av,at.nextSibling)}}aq.push(av);O(al,function(ax){av.appendChild(ax)});return av}}function aj(am,ao){var al=[],ap,an;ap=ai.inline||ai.block;an=c.create(ap);W(an);K.walk(am,function(aq){var ar;function at(au){var ax=au.nodeName.toLowerCase(),aw=au.parentNode.nodeName.toLowerCase(),av;if(g(ax,"br")){ar=0;if(ai.block){c.remove(au)}return}if(ai.wrapper&&x(au,Z,ah)){ar=0;return}if(ai.block&&!ai.wrapper&&G(ax)){au=c.rename(au,ap);W(au);al.push(au);ar=0;return}if(ai.selector){O(ad,function(ay){if("collapsed" in ay&&ay.collapsed!==ae){return}if(c.is(au,ay.selector)&&!b(au)){W(au,ay);av=true}});if(!ai.inline||av){ar=0;return}}if(d(ap,ax)&&d(aw,ap)&&!(au.nodeType===3&&au.nodeValue.length===1&&au.nodeValue.charCodeAt(0)===65279)){if(!ar){ar=an.cloneNode(S);au.parentNode.insertBefore(ar,au);al.push(ar)}ar.appendChild(au)}else{if(ax=="li"&&ao){ar=Y(au,ao,an,al,at)}else{ar=0;O(a.grep(au.childNodes),at);ar=0}}}O(aq,at)});if(ai.wrap_links===false){O(al,function(aq){function ar(aw){var av,au,at;if(aw.nodeName==="A"){au=an.cloneNode(S);al.push(au);at=a.grep(aw.childNodes);for(av=0;av1||!F(at))&&aq===0){c.remove(at,1);return}if(ai.inline||ai.wrapper){if(!ai.exact&&aq===1){at=ar(at)}O(ad,function(av){O(c.select(av.inline,at),function(ax){var aw;if(av.wrap_links===false){aw=ax.parentNode;do{if(aw.nodeName==="A"){return}}while(aw=aw.parentNode)}U(av,ah,ax,av.exact?ax:null)})});if(x(at.parentNode,Z,ah)){c.remove(at,1);at=0;return B}if(ai.merge_with_parents){c.getParent(at.parentNode,function(av){if(x(av,Z,ah)){c.remove(at,1);at=0;return B}})}if(at&&ai.merge_siblings!==false){at=u(C(at),at);at=u(at,C(at,B))}}})}if(ai){if(ac){X=c.createRng();X.setStartBefore(ac);X.setEndAfter(ac);aj(o(X,ad))}else{if(!ae||!ai.inline||c.select("td.mceSelected,th.mceSelected").length){var ak=V.selection.getNode();V.selection.setRng(ab());ag=q.getBookmark();aj(o(q.getRng(B),ad),ag);if(ai.styles&&(ai.styles.color||ai.styles.textDecoration)){a.walk(ak,I,"childNodes");I(ak)}q.moveToBookmark(ag);q.setRng(aa(q.getRng(B)));V.nodeChanged()}else{Q("apply",Z,ah)}}}}function A(Y,ah,ab){var ac=R(Y),aj=ac[0],ag,af,X;function aa(am){var al=am.startContainer,ar=am.startOffset,aq,ap,an,ao;if(al.nodeType==3&&ar>=al.nodeValue.length-1){al=al.parentNode;ar=s(al)+1}if(al.nodeType==1){an=al.childNodes;al=an[Math.min(ar,an.length-1)];aq=new t(al);if(ar>an.length-1){aq.next()}for(ap=aq.current();ap;ap=aq.next()){if(ap.nodeType==3&&!f(ap)){ao=c.create("a",null,E);ap.parentNode.insertBefore(ao,ap);am.setStart(ap,0);q.setRng(am);c.remove(ao);return}}}}function Z(ao){var an,am,al;an=a.grep(ao.childNodes);for(am=0,al=ac.length;am=0;Z--){if(P.apply[Z].name==Y){return true}}for(Z=P.remove.length-1;Z>=0;Z--){if(P.remove[Z].name==Y){return false}}return W(q.getNode())}aa=q.getNode();if(W(aa)){return B}X=q.getStart();if(X!=aa){if(W(X)){return B}}return S}function v(ad,ac){var aa,ab=[],Z={},Y,X,W;if(q.isCollapsed()){for(X=0;X=0;Y--){W=ad[X];if(P.remove[Y].name==W){Z[W]=true;break}}}for(Y=P.apply.length-1;Y>=0;Y--){for(X=0;X=0;X--){W=ac[X].selector;if(!W){return B}for(ab=Y.length-1;ab>=0;ab--){if(c.is(Y[ab],W)){return B}}}}return S}a.extend(this,{get:R,register:k,apply:T,remove:A,toggle:D,match:j,matchAll:v,matchNode:x,canApply:y});function h(W,X){if(g(W,X.inline)){return B}if(g(W,X.block)){return B}if(X.selector){return c.is(W,X.selector)}}function g(X,W){X=X||"";W=W||"";X=""+(X.nodeName||X);W=""+(W.nodeName||W);return X.toLowerCase()==W.toLowerCase()}function L(X,W){var Y=c.getStyle(X,W);if(W=="color"||W=="backgroundColor"){Y=c.toHex(Y)}if(W=="fontWeight"&&Y==700){Y="bold"}return""+Y}function r(W,X){if(typeof(W)!="string"){W=W(X)}else{if(X){W=W.replace(/%(\w+)/g,function(Z,Y){return X[Y]||Z})}}return W}function f(W){return W&&W.nodeType===3&&/^([\s\r\n]+|)$/.test(W.nodeValue)}function N(Y,X,W){var Z=c.create(X,W);Y.parentNode.insertBefore(Z,Y);Z.appendChild(Y);return Z}function o(W,ag,Z){var Y=W.startContainer,ad=W.startOffset,aj=W.endContainer,ae=W.endOffset,ai,af,ac;function ah(am,an,ak,al){var ao,ap;al=al||c.getRoot();for(;;){ao=am.parentNode;if(ao==al||(!ag[0].block_expand&&F(ao))){return am}for(ai=ao[an];ai&&ai!=am;ai=ai[ak]){if(ai.nodeType==1&&!H(ai)){return am}if(ai.nodeType==3&&!f(ai)){return am}}am=am.parentNode}return am}function ab(ak,al){if(al===p){al=ak.nodeType===3?ak.length:ak.childNodes.length}while(ak&&ak.hasChildNodes()){ak=ak.childNodes[al];if(ak){al=ak.nodeType===3?ak.length:ak.childNodes.length}}return{node:ak,offset:al}}if(Y.nodeType==1&&Y.hasChildNodes()){af=Y.childNodes.length-1;Y=Y.childNodes[ad>af?af:ad];if(Y.nodeType==3){ad=0}}if(aj.nodeType==1&&aj.hasChildNodes()){af=aj.childNodes.length-1;aj=aj.childNodes[ae>af?af:ae-1];if(aj.nodeType==3){ae=aj.nodeValue.length}}if(H(Y.parentNode)){Y=Y.parentNode}if(H(Y)){Y=Y.nextSibling||Y}if(H(aj.parentNode)){ae=c.nodeIndex(aj);aj=aj.parentNode}if(H(aj)&&aj.previousSibling){aj=aj.previousSibling;ae=aj.length}if(ag[0].inline){ac=ab(aj,ae);if(ac.node){while(ac.node&&ac.offset===0&&ac.node.previousSibling){ac=ab(ac.node.previousSibling)}if(ac.node&&ac.offset>0&&ac.node.nodeType===3&&ac.node.nodeValue.charAt(ac.offset-1)===" "){if(ac.offset>1){aj=ac.node;aj.splitText(ac.offset-1)}else{if(ac.node.previousSibling){aj=ac.node.previousSibling}}}}}if(ag[0].inline||ag[0].block_expand){Y=ah(Y,"firstChild","nextSibling");aj=ah(aj,"lastChild","previousSibling")}if(ag[0].selector&&ag[0].expand!==S&&!ag[0].inline){function aa(al,ak){var am,an,ap,ao;if(al.nodeType==3&&al.nodeValue.length==0&&al[ak]){al=al[ak]}am=m(al);for(an=0;anY?Y:Z]}return W}function Q(ad,Y,ac){var aa,X=P[ad],ae=P[ad=="apply"?"remove":"apply"];function af(){return P.apply.length||P.remove.length}function ab(){P.apply=[];P.remove=[]}function ag(ah){O(P.apply.reverse(),function(ai){T(ai.name,ai.vars,ah);if(ai.name==="forecolor"&&ai.vars.value){I(ah.parentNode)}});O(P.remove.reverse(),function(ai){A(ai.name,ai.vars,ah)});c.remove(ah,1);ab()}for(aa=X.length-1;aa>=0;aa--){if(X[aa].name==Y){return}}X.push({name:Y,vars:ac});for(aa=ae.length-1;aa>=0;aa--){if(ae[aa].name==Y){ae.splice(aa,1)}}if(af()){V.getDoc().execCommand("FontName",false,"mceinline");P.lastRng=q.getRng();O(c.select("font,span"),function(ai){var ah;if(b(ai)){ah=q.getBookmark();ag(ai);q.moveToBookmark(ah);V.nodeChanged()}});if(!P.isListening&&af()){P.isListening=true;function W(ai,aj){var ah=c.createRng();ag(ai);ah.setStart(aj,aj.nodeValue.length);ah.setEnd(aj,aj.nodeValue.length);q.setRng(ah);V.nodeChanged()}var Z=false;O("onKeyDown,onKeyUp,onKeyPress,onMouseUp".split(","),function(ah){V[ah].addToTop(function(ai,al){if(al.keyCode==13&&!al.shiftKey){Z=true;return}if(af()&&!a.dom.RangeUtils.compareRanges(P.lastRng,q.getRng())){var aj=false;O(c.select("font,span"),function(ao){var ap,an;if(b(ao)){aj=true;ap=ao.firstChild;while(ap&&ap.nodeType!=3){ap=ap.firstChild}if(ap){W(ao,ap)}else{c.remove(ao)}}});if(Z&&!aj){var ak=q.getNode();var am=ak;while(am&&am.nodeType!=3){am=am.firstChild}if(am){ak=am.parentNode;while(!F(ak)){ak=ak.parentNode}W(ak,am)}}if(al.type=="keyup"||al.type=="mouseup"){ab();Z=false}}})})}}}}})(tinymce);tinymce.onAddEditor.add(function(e,a){var d,h,g,c=a.settings;if(c.inline_styles){h=e.explode(c.font_size_style_values);function b(j,i){e.each(i,function(l,k){if(l){g.setStyle(j,k,l)}});g.rename(j,"span")}d={font:function(j,i){b(i,{backgroundColor:i.style.backgroundColor,color:i.color,fontFamily:i.face,fontSize:h[parseInt(i.size)-1]})},u:function(j,i){b(i,{textDecoration:"underline"})},strike:function(j,i){b(i,{textDecoration:"line-through"})}};function f(i,j){g=i.dom;if(c.convert_fonts_to_spans){e.each(g.select("font,u,strike",j.node),function(k){d[k.nodeName.toLowerCase()](a.dom,k)})}}a.onPreProcess.add(f);a.onSetContent.add(f);a.onInit.add(function(){a.selection.onSetContent.add(f)})}});webcit-8.24-dfsg.orig/utils.h0000644000175000017500000000135112271477123015711 0ustar michaelmichael/* * Copyright (c) 1996-2013 by the citadel.org team * * This program is open source software. You can redistribute it and/or * modify it under the terms of the GNU General Public License, version 3. * * This program 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. */ void StrEscPuts(const StrBuf *strbuf); void StrEscputs1(const StrBuf *strbuf, int nbsp, int nolinebreaks); void urlescputs(const char *); void hurlescputs(const char *); long stresc(char *target, long tSize, char *strbuf, int nbsp, int nolinebreaks); void escputs(const char *strbuf); webcit-8.24-dfsg.orig/wiki.c0000644000175000017500000002140712271477123015513 0ustar michaelmichael/* * Functions pertaining to rooms with a wiki view * * Copyright (c) 2009-2012 by the citadel.org team * * This program is open source software. You can redistribute it and/or * modify it under the terms of the GNU General Public License, version 3. * * This program 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. */ #include "webcit.h" #include "dav.h" /* * Convert a string to something suitable as a wiki index */ void str_wiki_index(char *s) { int i; if (s == NULL) return; /* First remove all non-alphanumeric characters */ for (i=0; iCurRoom.view != VIEW_WIKI) { wc_printf(_("'%s' is not a Wiki room."), ChrPtr(WC->CurRoom.name) ); return; } if (IsEmptyStr(pagename)) { strcpy(pagename, "home"); } str_wiki_index(pagename); /* convert index name to lowercase and numeric only */ if ((rev != NULL) && (strlen(rev) > 0)) { /* read an older revision */ serv_printf("WIKI rev|%s|%s|%s", pagename, rev, (do_revert ? "revert" : "fetch") ); serv_getln(buf, sizeof buf); if (buf[0] == '2') { msgnum = extract_long(&buf[4], 0); } } else { /* read the current revision */ msgnum = locate_message_by_uid(pagename); } if (msgnum >= 0L) { read_message(WC->WBuf, HKEY("view_message"), msgnum, NULL, &Mime); return; } wc_printf("

    " "
    " "" "
    " ); wc_printf("
    "); wc_printf(_("There is no page called '%s' here."), pagename); wc_printf("

    "); wc_printf(_("Select the 'Edit this page' link in the room banner " "if you would like to create this page.")); wc_printf("

    "); wc_printf("
    \n"); } /* * Display a specific page from a wiki room */ void display_wiki_page(void) { char pagename[128]; char rev[128]; int do_revert = 0; output_headers(1, 1, 1, 0, 0, 0); safestrncpy(pagename, bstr("page"), sizeof pagename); str_wiki_index(pagename); safestrncpy(rev, bstr("rev"), sizeof rev); do_revert = atoi(bstr("revert")); display_wiki_page_backend(pagename, rev, do_revert); wDumpContent(1); } /* * Display the revision history for a wiki page (template callback) */ void tmplput_display_wiki_history(StrBuf *Target, WCTemplputParams *TP) { char pagename[128]; StrBuf *Buf; int row = 0; safestrncpy(pagename, bstr("page"), sizeof pagename); str_wiki_index(pagename); serv_printf("WIKI history|%s", pagename); Buf = NewStrBuf(); StrBuf_ServGetln(Buf); if (GetServerStatus(Buf, NULL) == 1) { time_t rev_date; char rev_date_displayed[64]; StrBuf *rev_uuid = NewStrBuf(); StrBuf *author = NewStrBuf(); StrBuf *node = NewStrBuf(); wc_printf(""); wc_printf("", _("Date")); wc_printf("", _("Author")); while((StrBuf_ServGetln(Buf) >= 0) && strcmp(ChrPtr(Buf), "000")) { rev_date = extract_long(ChrPtr(Buf), 1); webcit_fmt_date(rev_date_displayed, sizeof rev_date_displayed, rev_date, DATEFMT_FULL); StrBufExtract_token(author, Buf, 2, '|'); wc_printf("", ((row%2) ? "#FFFFFF" : "#DDDDDD")); wc_printf(""); if (row == 0) { wc_printf("", _("(show)")); wc_printf("", _("Current version")); } else { wc_printf("", _("(show)")); wc_printf("", bstr("page"), ChrPtr(rev_uuid), _("(revert)") ); } wc_printf("\n"); /* Extract all fields except the author and date after displaying the row. This * is deliberate, because the timestamp reflects when the diff was written, not * when the version which it reflects was written. Similarly, the name associated * with each diff is the author who created the newer version of the page that * made the diff happen. */ StrBufExtract_token(rev_uuid, Buf, 0, '|'); StrBufExtract_token(node, Buf, 3, '|'); ++row; } wc_printf("
    %s%s
    %s", rev_date_displayed); if (!strcasecmp(ChrPtr(node), (char *)WC->serv_info->serv_nodename)) { escputs(ChrPtr(author)); wc_printf(" @ "); escputs(ChrPtr(node)); } else { wc_printf(""); escputs(ChrPtr(author)); wc_printf(""); } wc_printf("%s(%s)%s%s
    \n"); FreeStrBuf(&author); FreeStrBuf(&node); FreeStrBuf(&rev_uuid); } else { wc_printf("%s", ChrPtr(Buf)); } FreeStrBuf(&Buf); } /* * Display the revision history for a wiki page */ void display_wiki_history(void) { output_headers(1, 1, 1, 0, 0, 0); do_template("wiki_history"); wDumpContent(1); } /* * Display a list of all pages in a Wiki room (template callback) */ void tmplput_display_wiki_pagelist(StrBuf *Target, WCTemplputParams *TP) { StrBuf *Buf; int row = 0; if (!IsEmptyStr(bstr("query"))) { serv_printf("MSGS SEARCH|%s||4", bstr("query")); /* search-reduced list */ } else { serv_printf("MSGS ALL|||4"); /* full list */ } Buf = NewStrBuf(); StrBuf_ServGetln(Buf); if (GetServerStatus(Buf, NULL) == 1) { StrBuf *pagetitle = NewStrBuf(); wc_printf(""); wc_printf("", _("Page title")); while((StrBuf_ServGetln(Buf) >= 0) && strcmp(ChrPtr(Buf), "000")) { StrBufExtract_token(pagetitle, Buf, 1, '|'); if (!bmstrcasestr((char *)ChrPtr(pagetitle), "_HISTORY_")) { /* no history pages */ wc_printf("", ((row%2) ? "#FFFFFF" : "#DDDDDD")); wc_printf(""); wc_printf("\n"); ++row; } } wc_printf("
    %s
    "); escputs(ChrPtr(pagetitle)); wc_printf("
    \n"); FreeStrBuf(&pagetitle); } FreeStrBuf(&Buf); } /* * Display a list of all pages in a Wiki room. Search requests in a Wiki room also go here. */ void display_wiki_pagelist(void) { output_headers(1, 1, 1, 0, 0, 0); do_template("wiki_pagelist"); wDumpContent(1); } int wiki_Cleanup(void **ViewSpecific) { char pagename[5]; safestrncpy(pagename, "home", sizeof pagename); display_wiki_page_backend(pagename, "", 0); wDumpContent(1); return 0; } int ConditionalHaveWikiPage(StrBuf *Target, WCTemplputParams *TP) { const char *page; const char *pch; long len; page = BSTR("page"); GetTemplateTokenString(Target, TP, 2, &pch, &len); return strcasecmp(page, pch) == 0; } int ConditionalHavewikiType(StrBuf *Target, WCTemplputParams *TP) { wcsession *WCC = WC; const char *pch; long len; GetTemplateTokenString(Target, TP, 2, &pch, &len); return bmstrcasestr((char *)ChrPtr(WCC->Hdr->HR.ReqLine), pch) != NULL; } int wiki_PrintHeaderPage(SharedMessageStatus *Stat, void **ViewSpecific) { /* this function was intentionaly left empty. */ return 0; } int wiki_GetParamsGetServerCall(SharedMessageStatus *Stat, void **ViewSpecific, long oper, char *cmd, long len, char *filter, long flen) { if (oper == do_search) display_wiki_pagelist(); else http_redirect("wiki?page=home"); return 300; } void InitModule_WIKI (void) { RegisterReadLoopHandlerset( VIEW_WIKI, wiki_GetParamsGetServerCall, wiki_PrintHeaderPage, NULL, NULL, NULL, NULL, wiki_Cleanup ); WebcitAddUrlHandler(HKEY("wiki"), "", 0, display_wiki_page, 0); WebcitAddUrlHandler(HKEY("wiki_history"), "", 0, display_wiki_history, 0); WebcitAddUrlHandler(HKEY("wiki_pagelist"), "", 0, display_wiki_pagelist, 0); RegisterNamespace("WIKI:DISPLAYHISTORY", 0, 0, tmplput_display_wiki_history, NULL, CTX_NONE); RegisterNamespace("WIKI:DISPLAYPAGELIST", 0, 0, tmplput_display_wiki_pagelist, NULL, CTX_NONE); RegisterConditional("COND:WIKI:PAGE", 1, ConditionalHaveWikiPage, CTX_NONE); RegisterConditional("COND:WIKI:TYPE", 1, ConditionalHavewikiType, CTX_NONE); } webcit-8.24-dfsg.orig/inetconf.c0000644000175000017500000001313112271477123016350 0ustar michaelmichael/* * Functions which handle Internet domain configuration etc. */ #include "webcit.h" #include "webserver.h" typedef enum _e_cfg { ic_localhost, ic_directory, ic_smarthost, ic_fallback, ic_rbl, ic_spamass, ic_masq, ic_clamav, ic_notify, ic_max } ECfg; /* These are server config keywords; do not localize! */ ConstStr CfgNames[] = { { HKEY("localhost") }, { HKEY("directory") }, { HKEY("smarthost") }, { HKEY("fallbackhost") }, { HKEY("rbl") }, { HKEY("spamassassin") }, { HKEY("masqdomain") }, { HKEY("clamav") }, { HKEY("notify") } }; /* * display the inet config dialog */ void load_inetconf(void) { wcsession *WCC = WC; StrBuf *Buf, *CfgToken, *Value; void *vHash; HashList *Hash; char nnn[64]; int i, len, nUsed; WCC->InetCfg = NewHash(1, NULL); for (i = 0; i < (sizeof(CfgNames) / sizeof(ConstStr)); i++) { Hash = NewHash(1, NULL); Put(WCC->InetCfg, CKEY(CfgNames[i]), Hash, HDeleteHash); } serv_printf("CONF GETSYS|application/x-citadel-internet-config"); Buf = NewStrBuf(); StrBuf_ServGetln(Buf); if (GetServerStatus(Buf, NULL) == 1) { CfgToken = NewStrBuf(); while ((len = StrBuf_ServGetln(Buf), ((len >= 0) && ((len != 3) || strcmp(ChrPtr(Buf), "000"))))) { Value = NewStrBuf(); StrBufExtract_token(CfgToken, Buf, 1, '|'); StrBufExtract_token(Value, Buf, 0, '|'); GetHash(WCC->InetCfg, ChrPtr(CfgToken), StrLength(CfgToken), &vHash); Hash = (HashList*) vHash; if (Hash == NULL) { syslog(LOG_WARNING, "ERROR Loading inet config line: [%s]\n", ChrPtr(Buf)); FreeStrBuf(&Value); continue; } nUsed = GetCount(Hash); nUsed = snprintf(nnn, sizeof(nnn), "%d", nUsed+1); Put(Hash, nnn, nUsed, Value, HFreeStrBuf); } FreeStrBuf(&CfgToken); } FreeStrBuf(&Buf); } /* * save changes to the inet config */ void new_save_inetconf(void) { wcsession *WCC = WC; HashList *Hash; StrBuf *Str; StrBuf *Buf; const StrBuf *eType, *eNum, *eName; char nnn[64]; void *vHash, *vStr; int i, nUsed; load_inetconf(); eType = sbstr("etype"); GetHash(WCC->InetCfg, ChrPtr(eType), StrLength(eType), &vHash); Hash = (HashList*) vHash; if (Hash == NULL) { AppendImportantMessage(_("Invalid Parameter"), -1); url_do_template(); return; } if (strcasecmp(bstr("oper"), "delete") == 0) { eNum = sbstr("ename"); if (!GetHash(Hash, ChrPtr(eNum), StrLength(eNum), &vStr) || (vStr == NULL)) { AppendImportantMessage(_("Invalid Parameter"), -1); url_do_template(); return; } Str = (StrBuf*)vStr; AppendImportantMessage(SKEY(Str)); AppendImportantMessage(_(" has been deleted."), -1); FlushStrBuf(Str); } else if (!strcasecmp(bstr("oper"), "add")) { StrBuf *name; eName = sbstr("ename"); if (eName == NULL) { AppendImportantMessage(_("Invalid Parameter"), -1); url_do_template(); return; } nUsed = GetCount(Hash); nUsed = snprintf(nnn, sizeof(nnn), "%d", nUsed+1); name = NewStrBufDup(eName); StrBufTrim(name); Put(Hash, nnn, nUsed, name, HFreeStrBuf); AppendImportantMessage(SKEY(eName)); AppendImportantMessage( /* added status message*/ _(" added."), -1); } Buf = NewStrBuf(); serv_printf("CONF PUTSYS|application/x-citadel-internet-config"); StrBuf_ServGetln(Buf); if (GetServerStatus(Buf, NULL) == 4) { for (i = 0; i < (sizeof(CfgNames) / sizeof(ConstStr)); i++) { HashPos *where; const char *Key; long KeyLen; GetHash(WCC->InetCfg, CKEY(CfgNames[i]), &vHash); Hash = (HashList*) vHash; if (Hash == NULL) { AppendImportantMessage(_("Invalid Parameter"), -1); url_do_template(); return; } if (GetCount(Hash) > 0) { where = GetNewHashPos(Hash, 0); while (GetNextHashPos(Hash, where, &KeyLen, &Key, &vStr)) { Str = (StrBuf*) vStr; if ((Str!= NULL) && (StrLength(Str) > 0)) serv_printf("%s|%s", ChrPtr(Str), CfgNames[i].Key); } DeleteHashPos(&where); } } serv_puts("000"); DeleteHash(&WCC->InetCfg); } FreeStrBuf(&Buf); url_do_template(); } void DeleteInetConfHash(StrBuf *Target, WCTemplputParams *TP) { wcsession *WCC = WC; if (WCC->InetCfg != NULL) DeleteHash(&WCC->InetCfg); } HashList *GetInetConfHash(StrBuf *Target, WCTemplputParams *TP) { wcsession *WCC = WC; void *vHash; if (WCC->InetCfg == NULL) load_inetconf(); GetHash(WCC->InetCfg, TKEY(5), &vHash); PutBstr(HKEY("__SERVCFG:INET:TYPE"), NewStrBufPlain(TKEY(5))); return vHash; } HashList *GetValidDomainNames(StrBuf *Target, WCTemplputParams *TP) { StrBuf *Line; HashList *ValidDomainNames = NULL; long State; int gvdnlevel = 0; serv_printf("GVDN %d", gvdnlevel); Line = NewStrBuf(); StrBuf_ServGetln(Line); if (GetServerStatus(Line, &State) == 1) { int Done = 0; int n = 0; ValidDomainNames = NewHash(1, NULL); while(!Done && (StrBuf_ServGetln(Line) >= 0)) if ( (StrLength(Line)==3) && !strcmp(ChrPtr(Line), "000")) { Done = 1; } else { Put(ValidDomainNames, IKEY(n), NewStrBufDup(Line), HFreeStrBuf); n++; /* #0 is the type... */ } } else if (State == 550) AppendImportantMessage(_("Higher access is required to access this function."), -1); FreeStrBuf(&Line); return ValidDomainNames; } void InitModule_INETCONF (void) { WebcitAddUrlHandler(HKEY("save_inetconf"), "", 0, new_save_inetconf, 0); RegisterIterator("SERVCFG:INET", 1, NULL, GetInetConfHash, NULL, NULL, CTX_STRBUF, CTX_NONE, IT_NOFLAG); RegisterNamespace("SERVCFG:FLUSHINETCFG",0, 0, DeleteInetConfHash, NULL, CTX_NONE); RegisterIterator("ITERATE:VALID:DOMAINNAMES", 1, NULL, GetValidDomainNames, NULL, NULL, CTX_STRBUF, CTX_NONE, IT_NOFLAG); } webcit-8.24-dfsg.orig/webserver.c0000644000175000017500000002415712271477123016561 0ustar michaelmichael/* * Copyright (c) 1996-2014 by the citadel.org team * * This program is open source software. You can redistribute it and/or * modify it under the terms of the GNU General Public License version 3. * * This program 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. */ #include "webcit.h" #include "webserver.h" #include "modules_init.h" extern int msock; /* master listening socket */ extern char static_icon_dir[PATH_MAX]; /* where should we find our mime icons */ int is_https = 0; /* Nonzero if I am an HTTPS service */ int follow_xff = 0; /* Follow X-Forwarded-For: header? */ int DisableGzip = 0; char *default_landing_page = NULL; extern pthread_mutex_t SessionListMutex; extern pthread_key_t MyConKey; extern void *housekeeping_loop(void); extern int webcit_tcp_server(char *ip_addr, int port_number, int queue_len); extern int webcit_uds_server(char *sockpath, int queue_len); extern void graceful_shutdown_watcher(int signum); extern void graceful_shutdown(int signum); extern void start_daemon(char *pid_file); extern void webcit_calc_dirs_n_files(int relh, const char *basedir, int home, char *webcitdir, char *relhome); extern void worker_entry(void); extern void drop_root(uid_t UID); char socket_dir[PATH_MAX]; /* where to talk to our citadel server */ char *server_cookie = NULL; /* our Cookie connection to the client */ int http_port = PORT_NUM; /* Port to listen on */ char *ctdlhost = DEFAULT_HOST; /* Host name or IP address of Citadel server */ char *ctdlport = DEFAULT_PORT; /* Port number of Citadel server */ int setup_wizard = 0; /* should we run the setup wizard? */ char wizard_filename[PATH_MAX]; /* location of file containing the last webcit version against which we ran setup wizard */ int running_as_daemon = 0; /* should we deamonize on startup? */ /* #define DBG_PRINNT_HOOKS_AT_START */ #ifdef DBG_PRINNT_HOOKS_AT_START extern HashList *HandlerHash; const char foobuf[32]; const char *nix(void *vptr) {snprintf(foobuf, 32, "%0x", (long) vptr); return foobuf;} #endif extern int dbg_analyze_msg; extern int dbg_backtrace_template_errors; extern int DumpTemplateI18NStrings; extern StrBuf *I18nDump; void InitTemplateCache(void); extern int LoadTemplates; /* * Here's where it all begins. */ int main(int argc, char **argv) { uid_t UID = -1; size_t basesize = 2; /* how big should strbufs be on creation? */ pthread_t SessThread; /* Thread descriptor */ pthread_attr_t attr; /* Thread attributes */ int a; /* General-purpose variable */ char ip_addr[256]="*"; int relh=0; int home=0; char relhome[PATH_MAX]=""; char webcitdir[PATH_MAX] = DATADIR; char *pidfile = NULL; char *hdir; const char *basedir = NULL; char uds_listen_path[PATH_MAX]; /* listen on a unix domain socket? */ const char *I18nDumpFile = NULL; WildFireInitBacktrace(argv[0], 2); start_modules(); #ifdef DBG_PRINNT_HOOKS_AT_START /* dbg_PrintHash(HandlerHash, nix, NULL);*/ #endif /* Ensure that we are linked to the correct version of libcitadel */ if (libcitadel_version_number() < LIBCITADEL_VERSION_NUMBER) { fprintf(stderr, " You are running libcitadel version %d.%02d\n", (libcitadel_version_number() / 100), (libcitadel_version_number() % 100)); fprintf(stderr, "WebCit was compiled against version %d.%02d\n", (LIBCITADEL_VERSION_NUMBER / 100), (LIBCITADEL_VERSION_NUMBER % 100)); return(1); } strcpy(uds_listen_path, ""); /* Parse command line */ #ifdef HAVE_OPENSSL while ((a = getopt(argc, argv, "u:h:i:p:t:T:B:x:g:dD:G:cfsS:Z")) != EOF) #else while ((a = getopt(argc, argv, "u:h:i:p:t:T:B:x:g:dD:G:cfZ")) != EOF) #endif switch (a) { case 'u': UID = atol(optarg); break; case 'h': hdir = strdup(optarg); relh=hdir[0]!='/'; if (!relh) { safestrncpy(webcitdir, hdir, sizeof webcitdir); } else { safestrncpy(relhome, relhome, sizeof relhome); } /* free(hdir); TODO: SHOULD WE DO THIS? */ home=1; break; case 'd': running_as_daemon = 1; break; case 'D': pidfile = strdup(optarg); running_as_daemon = 1; break; case 'g': default_landing_page = strdup(optarg); break; case 'B': /* Basesize */ basesize = atoi(optarg); if (basesize > 2) StartLibCitadel(basesize); break; case 'i': safestrncpy(ip_addr, optarg, sizeof ip_addr); break; case 'p': http_port = atoi(optarg); if (http_port == 0) { safestrncpy(uds_listen_path, optarg, sizeof uds_listen_path); } break; case 't': /* no longer used, but ignored so old scripts don't break */ break; case 'T': LoadTemplates = atoi(optarg); dbg_analyze_msg = (LoadTemplates && (1<<1)) != 0; dbg_backtrace_template_errors = (LoadTemplates && (1<<2)) != 0; break; case 'Z': DisableGzip = 1; break; case 'x': /* no longer used, but ignored so old scripts don't break */ break; case 'f': follow_xff = 1; break; case 'c': server_cookie = malloc(256); if (server_cookie != NULL) { safestrncpy(server_cookie, "Set-cookie: wcserver=", 256); if (gethostname (&server_cookie[strlen(server_cookie)], 200) != 0) { syslog(LOG_INFO, "gethostname: %s", strerror(errno)); free(server_cookie); } } break; #ifdef HAVE_OPENSSL case 's': is_https = 1; break; case 'S': is_https = 1; ssl_cipher_list = strdup(optarg); break; #endif case 'G': DumpTemplateI18NStrings = 1; I18nDump = NewStrBufPlain(HKEY("int templatestrings(void)\n{\n")); I18nDumpFile = optarg; break; default: fprintf(stderr, "usage: webcit " "[-i ip_addr] [-p http_port] " "[-c] [-f] " "[-T Templatedebuglevel] " "[-d] [-Z] [-G i18ndumpfile] " #ifdef HAVE_OPENSSL "[-s] [-S cipher_suites]" #endif "[remotehost [remoteport]]\n"); return 1; } /* Start the logger */ openlog("webcit", ( running_as_daemon ? (LOG_PID) : (LOG_PID | LOG_PERROR) ), LOG_DAEMON ); if (optind < argc) { ctdlhost = argv[optind]; if (++optind < argc) ctdlport = argv[optind]; } /* daemonize, if we were asked to */ if (!DumpTemplateI18NStrings && running_as_daemon) { start_daemon(pidfile); } else { signal(SIGINT, graceful_shutdown); signal(SIGHUP, graceful_shutdown); } webcit_calc_dirs_n_files(relh, basedir, home, webcitdir, relhome); LoadIconDir(static_icon_dir); /* Tell 'em who's in da house */ syslog(LOG_NOTICE, "%s", PACKAGE_STRING); syslog(LOG_NOTICE, "Copyright (C) 1996-2014 by the citadel.org team"); syslog(LOG_NOTICE, " "); syslog(LOG_NOTICE, "This program is open source software: you can redistribute it and/or"); syslog(LOG_NOTICE, "modify it under the terms of the GNU General Public License, version 3."); syslog(LOG_NOTICE, " "); syslog(LOG_NOTICE, "This program is distributed in the hope that it will be useful,"); syslog(LOG_NOTICE, "but WITHOUT ANY WARRANTY; without even the implied warranty of"); syslog(LOG_NOTICE, "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the"); syslog(LOG_NOTICE, "GNU General Public License for more details."); syslog(LOG_NOTICE, " "); /* initialize various subsystems */ initialise_modules(); initialise2_modules(); InitTemplateCache(); if (DumpTemplateI18NStrings) { FILE *fd; StrBufAppendBufPlain(I18nDump, HKEY("}\n"), 0); if (StrLength(I18nDump) < 50) { syslog(LOG_INFO, "*******************************************************************\n"); syslog(LOG_INFO, "* No strings found in templates! Are you sure they're there? *\n"); syslog(LOG_INFO, "*******************************************************************\n"); return -1; } fd = fopen(I18nDumpFile, "w"); if (fd == NULL) { syslog(LOG_INFO, "***********************************************\n"); syslog(LOG_INFO, "* unable to open I18N dumpfile [%s] *\n", I18nDumpFile); syslog(LOG_INFO, "***********************************************\n"); return -1; } fwrite(ChrPtr(I18nDump), 1, StrLength(I18nDump), fd); fclose(fd); return 0; } /* Tell libical to return an error instead of aborting if it sees badly formed iCalendar data. */ icalerror_errors_are_fatal = 0; /* Use our own prefix on tzid's generated from system tzdata */ icaltimezone_set_tzid_prefix("/citadel.org/"); /* * Set up a place to put thread-specific data. * We only need a single pointer per thread - it points to the * wcsession struct to which the thread is currently bound. */ if (pthread_key_create(&MyConKey, NULL) != 0) { syslog(LOG_EMERG, "Can't create TSD key: %s", strerror(errno)); } InitialiseSemaphores(); /* * Set up a place to put thread-specific SSL data. * We don't stick this in the wcsession struct because SSL starts * up before the session is bound, and it gets torn down between * transactions. */ #ifdef HAVE_OPENSSL if (pthread_key_create(&ThreadSSL, NULL) != 0) { syslog(LOG_EMERG, "Can't create TSD key: %s", strerror(errno)); } #endif /* * Bind the server to our favorite port. * There is no need to check for errors, because webcit_tcp_server() * exits if it doesn't succeed. */ if (!IsEmptyStr(uds_listen_path)) { syslog(LOG_DEBUG, "Attempting to create listener socket at %s...", uds_listen_path); msock = webcit_uds_server(uds_listen_path, LISTEN_QUEUE_LENGTH); } else { syslog(LOG_DEBUG, "Attempting to bind to port %d...", http_port); msock = webcit_tcp_server(ip_addr, http_port, LISTEN_QUEUE_LENGTH); } if (msock < 0) { ShutDownWebcit(); return -msock; } syslog(LOG_INFO, "Listening on socket %d", msock); signal(SIGPIPE, SIG_IGN); pthread_mutex_init(&SessionListMutex, NULL); /* * Start up the housekeeping thread */ pthread_attr_init(&attr); pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED); pthread_create(&SessThread, &attr, (void *(*)(void *)) housekeeping_loop, NULL); /* * If this is an HTTPS server, fire up SSL */ #ifdef HAVE_OPENSSL if (is_https) { init_ssl(); } #endif drop_root(UID); /* Become a worker thread. More worker threads will be spawned as they are needed. */ worker_entry(); ShutDownLibCitadel(); return 0; }