file/0040755000567100000120000000000010754361755011476 5ustar jcameronwheelfile/config.info.tr0100644000567100000120000000044010754361753014235 0ustar jcameronwheelhide_dot_files=Nokta ile balayan dosyalar gsterilsin mi?,1,0-Evet,1-Hayr iconsize=Ara ubuundaki butonlarn boyutu,1,1-Kk,0-Geni ve etiketli nocharset=Uygun karakter seti kullanlmaya allsn m?,1,0-Evet,1-Hayr extract=JAR'daki .class dosyalar alsn m?,1,1-Evet,0-Hayr file/StaticTextField.java0100644000567100000120000000052210754361753015373 0ustar jcameronwheelimport java.awt.*; // StaticTextField // A text field that is set to be non-editable by default class StaticTextField extends TextField { StaticTextField() { super(); setEditable(false); } StaticTextField(String s) { super(s); setEditable(false); } StaticTextField(String s, int i) { super(s,i); setEditable(false); } } file/show.cgi0100755000567100000120000000700310754361753013140 0ustar jcameronwheel#!/usr/local/bin/perl # show.cgi # Output some file for the browser $trust_unknown_referers = 1; require './file-lib.pl'; &ReadParse(); use POSIX; $p = $ENV{'PATH_INFO'}; if ($in{'type'}) { # Use the supplied content type $type = $in{'type'}; $download = 1; } elsif ($in{'format'} == 1) { # Type comes from compression format $type = "application/zip"; } elsif ($in{'format'} == 2) { $type = "application/x-gzip"; } elsif ($in{'format'} == 3) { $type = "application/x-tar"; } else { # Try to guess type from filename $type = &guess_mime_type($p, undef); if (!$type) { # No idea .. use the 'file' command $out = &backquote_command("file ". quotemeta(&resolve_links($p)), 1); if ($out =~ /text|script/) { $type = "text/plain"; } else { $type = "application/unknown"; } } } # Dump the file &switch_acl_uid(); $temp = &transname(); $p = &unmake_chroot($p); if (!&can_access($p)) { # ACL rules prevent access to file &error_exit(&text('view_eaccess', &html_escape($p))); } if ($in{'format'}) { # An archive of a directory was requested .. create it $archive || &error_exit($text{'view_earchive'}); if ($in{'format'} == 1) { $p =~ s/\.zip$//; } elsif ($in{'format'} == 2) { $p =~ s/\.tgz$//; } elsif ($in{'format'} == 3) { $p =~ s/\.tar$//; } -d $p || &error_exit($text{'view_edir'}." ".&html_escape($p)); if ($archive == 2 && $archmax > 0) { # Check if directory is too large to archive local $kb = &disk_usage_kb($p); if ($kb*1024 > $archmax) { &error_exit(&text('view_earchmax', $archmax)); } } # Work out the base directory and filename if ($p =~ /^(.*\/)([^\/]+)$/) { $pdir = $1; $pfile = $2; } else { $pdir = "/"; $pfile = $p; } # Work out the command to run if ($in{'format'} == 1) { &has_command("zip") || &error_exit(&text('view_ecmd', "zip")); $cmd = "zip -r $temp ".quotemeta($pfile); } elsif ($in{'format'} == 2) { &has_command("tar") || &error_exit(&text('view_ecmd', "tar")); &has_command("gzip") || &error_exit(&text('view_ecmd', "gzip")); $cmd = "tar cf - ".quotemeta($pfile)." | gzip -c >$temp"; } elsif ($in{'format'} == 3) { &has_command("tar") || &error_exit(&text('view_ecmd', "tar")); $cmd = "tar cf $temp ".quotemeta($pfile); } if ($in{'test'}) { # Don't actually do anything if in test mode &ok_exit(); } # Run the command, and send back the resulting file local $qpdir = quotemeta($pdir); local $out = `cd $qpdir ; ($cmd) 2>&1 ()VCodeLineNumberTable(I)V(ILjava/awt/Color;)V$(ILjava/awt/Color;Ljava/awt/Color;)V4(ILjava/awt/Color;Ljava/awt/Color;Ljava/awt/Color;)V#(Ljava/awt/Color;Ljava/awt/Color;)Vinsets()Ljava/awt/Insets;paint(Ljava/awt/Graphics;)V SourceFileBorderPanel.java  = >  ?  java/awt/Insets @A BC DEF G H I@ $% J@ BorderPaneljava/awt/PanelUtil light_edge dark_edge(IIII)Vjava/awt/GraphicssetColor(Ljava/awt/Color;)Vsize()Ljava/awt/Dimension;java/awt/DimensionwidthheightfillRectdrawLine @****   I***** R"******, !W'******,*- & ]-******,*-*  !",#!N"*****+*,& '!("#8 Y*`*`*`*` ,$%*+* +* * *+* d=* d>+* 6*%+d+d+* 6*-+ddd+dddбB123#5(6<7D8P9^:l8r<z=>?=A&'file/CbButton.class0100664000567100000120000001125410754361753014245 0ustar jcameronwheel. 8} 9~  8  8  8  8  8  8 8 8 8 8  8  8  8 8 8 8 8 8 8 8 5 5 8 8  8 8 8 5 8LEFTI ConstantValueRIGHTABOVEBELOWimageLjava/awt/Image;stringLjava/lang/String;callbackLCbButtonCallback;imodeiwidthiheightpwidthpheighttwidththeightinsideZindentgroupLCbButtonGroup;selectedlc1Ljava/awt/Color;lc2lc3hc1hc2hc3%(Ljava/awt/Image;LCbButtonCallback;)VCodeLineNumberTable'(Ljava/lang/String;LCbButtonCallback;)V8(Ljava/awt/Image;Ljava/lang/String;ILCbButtonCallback;)VsetGroup(LCbButtonGroup;)Vselect()VsetText(Ljava/lang/String;)VsetImage(Ljava/awt/Image;)V setImageText&(Ljava/awt/Image;Ljava/lang/String;I)Vpaint(Ljava/awt/Graphics;)Vupdate mouseEnter(Ljava/awt/Event;II)Z mouseExit mouseDownmouseUp preferredSize()Ljava/awt/Dimension; minimumSizeimgSize(II)Ljava/awt/Dimension; SourceFile CbButton.java ^c ^g X WX X YX X ZX X [X X \X X ]X DE FG J; HI K; L;  O; P; M; N; TU f g QR w ; ; SR VR yz no fgjava/awt/Dimension ^ vwCbButtonjava/awt/CanvasUtil light_edgebody dark_edge light_edge_hibody_hi dark_edge_higetWidth(Ljava/awt/Image;)I getHeightfnmLjava/awt/FontMetrics;java/awt/FontMetrics stringWidth(Ljava/lang/String;)I()Ijava/lang/Mathmax(II)I CbButtonGroupadd (LCbButton;)Vrepaintsizewidthheightjava/awt/GraphicssetColor(Ljava/awt/Color;)VfillRect(IIII)VdrawLinefLjava/awt/Font;setFont(Ljava/awt/Font;)V drawImage5(Ljava/awt/Image;IIIILjava/awt/image/ImageObserver;)Z getDescent drawString(Ljava/lang/String;II)VCbButtonCallbackclick(II)V!89:;<=>;<?@;<AB;<CDEFGHIJ;K;L;M;N;O;P;QRSRTUVRWXYXZX[X\X]X^_`% *+,a ^b`% *+,a  ^c`4***** * * *+*,************u*n*dCC***``***`$***`***``>***`**` ***`**`ar#.$3%8&='C(J)U*`,g-u.014569:;>? @BC(D3Fde`.*+** aMN Ofg`0* **!aUVWhi`S'*+*****"a]^ _`"a&bjk`Q%**+*****"ahi jk l$mlm`zB*+*,*********"a& st uvw'x2y=zA{no` j*# * *M*# * *N*# **:*$%6*$&6*' *(,:*' *(,:+-)+dd*+)+d++d++)+ddd++ddd+*#++)+ddd++ddd++)+,-***z**ddd.: +* %d*ddl &dl % &*/W+* %d*ddl %``*`0dl1**O+**dl*d*ddl***/W+**dl*``1v*nk*<*dd.: +* %dl &dl % &*/W+*$+**dl*`0dl1a&&:Lbx}  4c>AHipo`*+2aqr`+ *#*"a sr`+ *#*"a tr`+ *'*"a ur`n>2.*$%#*$&* **3*4*'*"a%/38<vw`(5Y**6axw`*7ayz`nF*nF*n8%%8  85Y*j*j6a ",{|file/MultiColumn.java0100644000567100000120000003074010754361753014610 0ustar jcameronwheel// MultiColumn // A List box that supports multiple columns. import java.awt.*; import java.util.Vector; public class MultiColumn extends BorderPanel implements CbScrollbarCallback { MultiColumnCallback callback; // what to call back to String title[]; // column titles boolean adjustable = true; boolean drawlines = true; Color colors[][] = null; boolean enabled = true; boolean multiselect = false; int cpos[]; // column x positions float cwidth[]; // proportional column widths Vector list[]; // columns of the list CbScrollbar sb; // scrollbar at the right side int width, height; // size, minus the scrollbar Insets in; // used space around the border int sbwidth; // width of the scrollbar int th; // height of title bar Image bim; // backing image Graphics bg; // backing graphics Font font = new Font("timesRoman", Font.PLAIN, 12); FontMetrics fnm; // drawing font size int coldrag = -1; // column being resized int sel = -1; // selected row int sels[] = new int[0]; // all selected rows int top = 0; // first row displayed long last; // last mouse click time int rowh = 16; // row height Event last_event; // last event that triggered callback int sortcol; // Column currently being sorted int sortdir; // Sort direction (0=none, 1=up, 2=down) // Create a new list with the given column titles MultiColumn(String t[]) { super(3, Util.dark_edge_hi, Util.body_hi); title = new String[t.length]; for(int i=0; i= top+r) { top = s-1; if (top > list[0].size() - r) top = list[0].size() - r; sb.setValue(top); repaint(); } } // deleteItem // Remove one row from the list void deleteItem(int n) { for(int i=0; i 0) { System.arraycopy(sels, 0, nsels, 0, i); System.arraycopy(sels, i+1, nsels, i, nsels.length-i); sel = nsels[0]; } break; } } repaint(); compscroll(); } // clear // Remove everything from the list void clear() { for(int i=0; i= top && sels[i] <= bot) { bg.setColor(sels[i] == sel ? Util.body : lighterGray); bg.fillRect(0, th+(sels[i]-top)*rowh, width, rowh); } } } // Draw each column for(int i=0; i w-3) s = s.substring(0, s.length()-1); if (!enabled) bg.setColor(Util.body); else if (colors != null) bg.setColor(colors[j][i]); bg.drawString(s, x+1, th+(j+1-top)*rowh-fd); } else if (o instanceof Image) { // Render image in column Image im = (Image)o; bg.drawImage(im, x+1, th+(j-top)*rowh, this); } } } } // mouseDown // Select a list item or a column to drag public boolean mouseDown(Event e, int x, int y) { if (!enabled) { return true; } x -= in.left; y -= in.top; coldrag = -1; if (y < th) { // Click in title bar for(int i=0; i 0 && Math.abs(cpos[i] - x) < 3) { // clicked on a column separator coldrag = i; } else if (x >= cpos[i] && x < cpos[i+1]) { // clicked in a title callback.headingClicked(this, i); } } } else { // Item chosen from list int row = (y-th)/rowh + top; if (row < list[0].size()) { // Double-click? boolean dclick = false; if (e.when-last < 1000 && sel == row) dclick = true; else last = e.when; if (e.shiftDown() && multiselect && sel != -1) { // Select all from last selection to this one int zero = sels[0]; if (zero < row) { sels = new int[row-zero+1]; for(int i=zero; i<=row; i++) sels[i-zero] = i; } else { sels = new int[zero-row+1]; for(int i=zero; i>=row; i--) sels[zero-i] = i; } } else if (e.controlDown() && multiselect) { // Add this one to selection int nsels[] = new int[sels.length + 1]; System.arraycopy(sels, 0, nsels, 0,sels.length); nsels[sels.length] = row; sels = nsels; } else { // Select one row only, and de-select others sels = new int[1]; sels[0] = row; } sel = row; repaint(); last_event = e; if (callback != null) { // Callback the right function if (dclick) callback.doubleClick(this, row); else callback.singleClick(this, row); } else { // Send an event getParent().postEvent( new Event(this, Event.ACTION_EVENT, dclick?"Double":"Single")); } } } return true; } // mouseDrag // If a column is selected, change it's width public boolean mouseDrag(Event e, int x, int y) { if (!enabled) { return true; } x -= in.left; y -= in.top; if (coldrag != -1) { if (x > cpos[coldrag-1]+3 && x < cpos[coldrag+1]-3) { cpos[coldrag] = x; cwidth[coldrag-1] = (cpos[coldrag]-cpos[coldrag-1]) / (float)width; cwidth[coldrag] = (cpos[coldrag+1]-cpos[coldrag]) / (float)width; repaint(); } } return true; } public void moved(CbScrollbar s, int v) { moving(s, v); } public void moving(CbScrollbar s, int v) { top = sb.getValue(); compscroll(); repaint(); } // compscroll // Re-compute the size of the scrollbar private void compscroll() { if (fnm == null) return; // not visible int r = rows(); int c = list[0].size() - r; sb.setValues(top, r==0?1:r, list[0].size()); } // rows // Returns the number of rows visible in the list private int rows() { return Math.min(height/rowh - 1, list[0].size()); } public Dimension minimumSize() { return new Dimension(400, 100); } public Dimension preferredSize() { return minimumSize(); } } // MultiColumnCallback // Objects implementing this interface can be passed to the MultiColumn // class, to have their singleClick() and doubleClick() functions called in // response to single or double click in the list. interface MultiColumnCallback { // singleClick // Called on a single click on a list item void singleClick(MultiColumn list, int num); // doubleClick // Called upon double-clicking on a list item void doubleClick(MultiColumn list, int num); // headingClicked // Called when a column heading is clicked on void headingClicked(MultiColumn list, int col); } file/CbImageChooser.java0100644000567100000120000001111610754361753015146 0ustar jcameronwheelimport java.awt.*; import java.net.*; class CbImageChooser extends Panel implements CbButtonCallback { Image img; String imgsrc; int imgw, imgh; CbButton but; CbImageFileWindow filewin; //CbImageChooserCallback callback; CbImageChooser(Image i) { this(i, null); } CbImageChooser(Image i, String s) { setLayout(new BorderLayout()); add("Center", but = new CbButton("Choose..", this)); setImage(i, s==null ? "" : s); } void setImage(Image i, String s) { img = i; imgsrc = s; if (img != null) but.setImage(img); else but.setText("Choose.."); } public void click(CbButton b) { if (b == but && filewin == null) new CbImageFileWindow(this); } } class CbImageFileWindow extends FixedFrame implements CbButtonCallback { CbImageChooser parent; ScrollImage imgp; TextField url; CbButton browse, ok, cancel; FileDialog filedlog; String lastfile = ""; CbImageFileWindow(CbImageChooser p) { parent = p; parent.filewin = this; setLayout(new BorderLayout()); add("Center", imgp = new ScrollImage(parent.img, 200, 200)); Panel bot = new GrayPanel(); bot.setLayout(new FlowLayout(FlowLayout.LEFT)); bot.add(new Label("URL:")); bot.add(url = new TextField(parent.imgsrc, 20)); bot.add(browse = new CbButton("Browse..", this)); bot.add(new Label(" ")); bot.add(ok = new CbButton("Ok", this)); bot.add(cancel = new CbButton("Cancel", this)); add("South", bot); pack(); show(); setTitle("Choose Image.."); Util.recursiveBackground(this, Util.body); } public void click(CbButton b) { if (b == ok) parent.setImage(imgp.img, lastfile); if (b == ok || b == cancel) dispose(); else if (b == browse) { // Open file chooser here! FileDialog filedlog = new FileDialog(this, "Choose Image",FileDialog.LOAD); filedlog.show(); if (filedlog.getFile() != null) { // file chosen.. load it in String fn = filedlog.getDirectory()+filedlog.getFile(); url.setText(fn); loadFile(fn); } } } public void dispose() { super.dispose(); parent.filewin = null; } public boolean action(Event evt, Object obj) { if (evt.target == url) { String ut = url.getText(); if (ut.startsWith("http:") || ut.startsWith("ftp:")) loadURL(ut); else loadFile(ut); return true; } return false; } private void loadFile(String f) { Image i = Util.tk.getImage(f); if (i == null || !Util.waitForImage(i)) new ErrorWindow("Failed to load image "+f); else { imgp.setImage(i); lastfile = f; } } private void loadURL(String u) { try { Image i = Util.tk.getImage(new URL(u)); if (i == null || !Util.waitForImage(i)) new ErrorWindow("Failed to load image from "+u); else { imgp.setImage(i); lastfile = u; } } catch(MalformedURLException e) { new ErrorWindow(u+" is not a valid URL"); } } } class ScrollImage extends Panel implements CbScrollbarCallback { Image img; int imgw, imgh; int pw, ph; CbScrollbar vsc, hsc; boolean compute_scrollbars = true; ScrollImage(Image i) { this(i, Util.getWidth(i), Util.getHeight(i)); } ScrollImage(Image i, int w, int h) { pw = w; ph = h; setLayout(new BorderLayout()); add("East", vsc = new CbScrollbar(CbScrollbar.VERTICAL, this)); add("South", hsc = new CbScrollbar(CbScrollbar.HORIZONTAL, this)); setImage(i); } void setImage(Image i) { img = i; if (img != null) { imgw = Util.getWidth(img); imgh = Util.getHeight(img); } compute_scrollbars = true; repaint(); } public void paint(Graphics g) { int w = size().width-vsc.size().width, h = size().height-hsc.size().height; if (compute_scrollbars) { if (img == null) { hsc.setValues(0, 1, 1); vsc.setValues(0, 1, 1); } else { if (imgw < w) hsc.setValues(0, 1, 1); else hsc.setValues(0, w, imgw); if (imgh < h) vsc.setValues(0, 1, 1); else vsc.setValues(0, h, imgh); } compute_scrollbars = false; } g.setColor(Util.body); g.fillRect(0, 0, w, h); if (img != null) { if (imgw < w && imgh < h) g.drawImage(img, (w-imgw)/2, (h-imgh)/2, this); else g.drawImage(img, -hsc.getValue(), -vsc.getValue(),this); } else { g.setFont(Util.f); g.setColor(Util.text); String s = ""; g.drawString(s, (w-Util.fnm.stringWidth(s))/2, (h-Util.fnm.getHeight())/2); } } public void update(Graphics g) { paint(g); } public void reshape(int nx, int ny, int nw, int nh) { super.reshape(nx, ny, nw, nh); compute_scrollbars = true; repaint(); } public void moved(CbScrollbar s, int p) { repaint(); } public void moving(CbScrollbar s, int p) { } public Dimension minimumSize() { return new Dimension(pw, ph); } public Dimension preferredSize() { return minimumSize(); } } file/CbButtonCallback.class0100664000567100000120000000021110754361753015651 0ustar jcameronwheel. click (LCbButton;)V SourceFile CbButton.javaCbButtonCallbackjava/lang/Objectfile/makelink.cgi0100755000567100000120000000114610754361753013755 0ustar jcameronwheel#!/usr/local/bin/perl # makelink.cgi # Create a symbolic link require './file-lib.pl'; $disallowed_buttons{'makelink'} && &error($text{'ebutton'}); &ReadParse(); &webmin_log("link", undef, $in{'from'}, \%in); &switch_acl_uid_and_chroot(); print "Content-type: text/plain\n\n"; &lock_file($in{'from'}); if ($access{'ro'} || !&can_access($in{'from'})) { print &text('link_efrom2', $in{'from'}),"\n"; } elsif ($follow) { print $text{'link_efollow'},"\n"; } elsif (!symlink($in{'to'}, $in{'from'})) { print "$!\n"; } else { print "\n"; print &file_info_line($in{'from'}),"\n"; &unlock_file($in{'from'}); } file/file-lib.pl0100755000567100000120000002701410754361753013520 0ustar jcameronwheel# file-lib.pl # Common functions for file manager CGIs do '../web-lib.pl'; &ReadParse(\%prein, 'GET'); if ($prein{'trust'}) { &open_trust_db(); if ($trustdb{$prein{'trust'}}) { $trust_unknown_referers = 1; $trustdb{$prein{'trust'}} = time(); } dbmclose(%trustdb); } &init_config(); do '../ui-lib.pl'; @file_buttons = ( "save", "preview", "edit", "info", "acl", "attr", "ext", "search", "delete", "new", "upload", "mkdir", "makelink", "rename", "sharing", "mount", "copy" ); if ($module_info{'usermin'}) { # Usermin gets the allowed list from the module config &switch_to_remote_user(); &create_user_config_dirs(); $hide_dot_files = $userconfig{'hide_dot_files'}; $follow = int($config{'follow'}); $real_home_dir = &simplify_path(&resolve_links($remote_user_info[7])); $upload_max = $config{'max'}; if ($config{'home_only'} == 1) { @allowed_roots = ( $real_home_dir, split(/\s+/, $config{'root'}) ); } elsif ($config{'home_only'} == 2) { @allowed_roots = split(/\s+/, $config{'root'}); } else { @allowed_roots = ( "/" ); } @denied_roots = split(/\s+/, $config{'noroot'}); if ($config{'archive'} eq 'y') { $archive = 1; } elsif ($config{'archive'} eq 'n') { $archive = 0; } else { $archive = 2; $archmax = $config{'archive'}; } $unarchive = 1; $dostounix = 1; $chroot = "/"; @disallowed_buttons = ( ); foreach $k (keys %config) { if ($k =~ /^button_(.*)/ && $config{$k} == 0) { push(@disallowed_buttons, $1); } } $canperms = 1; $canusers = 1; $contents = 1; $running_as_root = 0; } else { # Webmin gets the list of allowed directories from the ACL %access = &get_module_acl(); $hide_dot_files = $config{'hide_dot_files'}; $follow = int($access{'follow'}); $upload_max = $access{'max'}; @allowed_roots = split(/\s+/, $access{'root'}); if ($access{'home'}) { local @u = getpwnam($remote_user); if (@u) { push(@allowed_roots, &simplify_path(&resolve_links($u[7]))); } } @denied_roots = split(/\s+/, $access{'noroot'}); $archive = $access{'archive'}; $archmax = $access{'archmax'}; $unarchive = $access{'unarchive'}; $dostounix = $access{'dostounix'}; $chroot = $access{'chroot'}; $access{'button_search'} = 0 if (!&has_command("find")); $access{'button_makelink'} = 0 if (!&supports_symlinks()); $access{'button_info'} = 0 if (!&supports_users()); @disallowed_buttons = grep { !$access{'button_'.$_} } @file_buttons; if (&is_readonly_mode()) { # Force read-only mode for file manager if global readonly # is in effect. $access{'ro'} = 1; } $canperms = $access{'noperms'} ? 0 : 1; $canusers = $access{'nousers'} ? 0 : 1; $contents = $access{'contents'}; $running_as_root = !$access{'uid'}; } %disallowed_buttons = map { $_, 1 } @disallowed_buttons; $icon_map = ( "c", 1, "txt", 1, "pl", 1, "cgi", 1, "html", 1, "htm", 1, "gif", 2, "jpg", 2, "tar", 3 ); # file_info_line(path, [displaypath]) # Returns a line of text containing encoded details of some file sub file_info_line { local @st; local $islink = (-l $_[0]); local $f = $islink && &must_follow($_[0]); local @st = $f ? stat($_[0]) : lstat($_[0]); local $ext = $_[0] =~ /\S+\.([^\.\/]+)$/ ? $1 : undef; local $dp = $_[1] || $_[0]; $dp =~ s/\\/\\\\/g; $dp =~ s/\t/\\t/g; return undef if ($dp =~ /\r|\n/); if (!@st) { # Work around a broken stat function on large files on redhat 7.x &has_command("stat") || return undef; local $out = `stat -t '$_[0]'`; return undef if ($?); $out =~ /^(.*)\s+(\d+)\s+(\d+)\s+(\S+)\s+(\d+)\s+(\d+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)/; local $type = defined($icon_map{$ext}) ? $icon_map{$ext} : 4; local $user = defined(%uid_to_user) ? $uid_to_user{$5} : getpwuid($5); $user = $5 if (!$user); local $group = defined(%gid_to_group) ? $gid_to_group{$6} :getgrgid($6); $group = $6 if (!$group); local $size = $2; local $mtime = $13; local $mode = hex($4); return sprintf ("%s\t%u\t%s\t%s\t%u\t%u\t%u\t%s", $dp, $type, $user, $group, $size, $mode, $mtime, undef); } local $type = $islink && !$f ? 5 : -d _ ? 0 : -b _ ? 6 : -c _ ? 6 : -p _ ? 7 : -S _ ? 7 : defined($icon_map{$ext}) ? $icon_map{$ext} : 4; local $user = !&supports_users() ? "root" : defined(%uid_to_user) ? $uid_to_user{$st[4]} : getpwuid($st[4]); $user = $st[4] if (!$user); local $group = !&supports_users() ? "root" : defined(%gid_to_group) ? $gid_to_group{$st[5]} :getgrgid($st[5]); $group = $st[5] if (!$group); local $rl = readlink($_[0]); return join("\t", $dp, $type, $user, $group, $st[7] < 0 ? 2**32+$st[7] : $st[7], $st[2], $st[9], $f ? "" : $islink && !$rl ? "???" : $rl); } # switch_acl_uid([user]) sub switch_acl_uid { local ($user) = @_; return if ($module_info{'usermin'}); # Always already switched local @u = $user ? getpwnam($user) : $access{'uid'} < 0 ? getpwnam($remote_user) : getpwuid($access{'uid'}); if ($u[2]) { @u || &error($text{'switch_euser'}); ($(, $)) = ($u[3], "$u[3] ".join(" ", $u[3], &other_groups($u[0]))); ($>, $<) = ($u[2], $u[2]); umask(oct($access{'umask'})); } } # switch_acl_uid_and_chroot() # Combines the switch_acl_uid and go_chroot functions sub switch_acl_uid_and_chroot { if (!$module_info{'usermin'} && $access{'uid'}) { local @u = $access{'uid'} < 0 ? getpwnam($remote_user) : getpwuid($access{'uid'}); @u || &error($text{'switch_euser'}); local @other = &other_groups($u[0]); &go_chroot(); ($(, $)) = ($u[3], "$u[3] ".join(" ", $u[3], @other)); ($>, $<) = ($u[2], $u[2]); umask(oct($access{'umask'})); } else { &go_chroot(); } } # can_access(file) # Returns 1 if some file can be edited/deleted sub can_access { return &under_root_dir($_[0], \@allowed_roots) && ($_[0] eq "/" || !&under_root_dir($_[0], \@denied_roots)); } # under_root_dir(file, &roots) # Returns 1 if some file is under one of the given roots sub under_root_dir { local @f = grep { $_ ne '' } split(/\//, $_[0]); local $r; DIR: foreach $r (@{$_[1]}) { return 1 if ($r eq '/' || $_[0] eq '/' || $_[0] eq $r); local @a = grep { $_ ne '' } split(/\//, $r); local $i; for($i=0; $i<@a; $i++) { next DIR if ($a[$i] ne $f[$i]); } return 1; } return 0; } # can_list(dir) # Returns 1 if some directory can be listed. Parent directories of allowed # directories are included as well. sub can_list { return &under_root_dir_or_parent($_[0], \@allowed_roots) && ($_[0] eq "/" || !&under_root_dir($_[0], \@denied_roots)); } # under_root_dir_or_parent(file, &roots) # Returns 1 if some file is under one of the given roots, or their parents sub under_root_dir_or_parent { local @f = grep { $_ ne '' } split(/\//, $_[0]); DIR: foreach $r (@allowed_roots) { return 1 if ($r eq '/' || $_[0] eq '/' || $_[0] eq $r); local @a = grep { $_ ne '' } split(/\//, $r); local $i; for($i=0; $i<@a && $i<@f; $i++) { next DIR if ($a[$i] ne $f[$i]); } return 1; } return 0; } # accessible_subdir(dir) # Returns the path to a dir under the given one that we can access sub accessible_subdir { local ($r, @rv); foreach $r (@allowed_roots) { if ($r =~ /^(\Q$_[0]\E\/[^\/]+)/) { push(@rv, $1); } } return @rv; } sub open_trust_db { local $trust = "$ENV{'WEBMIN_CONFIG'}/file/trust"; eval "use SDBM_File"; dbmopen(%trustdb, $trust, 0700); eval { $trustdb{'1111111111'} = 'foo bar' }; if ($@) { dbmclose(%trustdb); eval "use NDBM_File"; dbmopen(%trustdb, $trust, 0700); } } # must_follow(path) # For symlinks, returns 1 if a link should be follow, 0 if not sub must_follow { if ($follow == 1) { return 1; } elsif ($follow == 0) { return 0; } else { local @s = stat($_[0]); local @l = lstat($_[0]); @st = ($s[4] == $l[4] ? @s : @l); return $s[4] == $l[4]; } } # extract_archive(path, delete) # Called by upload to extract some zip or tar.gz file. Returns undef if something # was actually done, an error message otherwise. sub extract_archive { local $out; $_[0] =~ /^(\S*\/)/ || return 0; local $dir = $1; local $qdir = quotemeta($dir); local $qpath = quotemeta($_[0]); if ($_[0] =~ /\.zip$/i) { # Extract zip file return &text('zip_ecmd', "unzip") if (!&has_command("unzip")); $out = `(cd $qdir; unzip -o $qpath) 2>&1 &1 &1`; if ($?) { return &text('zip_euntar2', $out); } } elsif ($_[0] =~ /\.gz$/i) { # Uncompress gzipped file return &text('zip_ecmd', "gunzip") if (!&has_command("gunzip")); local $final = $_[0]; $final =~ s/\.gz$//; local $qfinal = quotemeta($final); $out = `(cd $qdir; gunzip -c $qpath >$qfinal) 2>&1`; if ($?) { return &text('zip_euntar2', $out); } } else { return $text{'zip_ename'}; } if ($_[1]) { unlink($_[0]); } return undef; } # post_upload(path, dir, unzip) sub post_upload { local ($path, $dir, $zip) = @_; if ($unarchive == 2) { $zip = $path =~ /\.(zip|tgz|tar|tar\.gz)$/i ? 1 : 0; } elsif ($unarchive == 0) { $zip = 0; } local $refresh = $path; local $err; if ($zip) { $err = &extract_archive($path, $zip-1); if (!$err) { # Refresh whole dir $refresh = $in{'dir'}; } } $info = &file_info_line(&unmake_chroot($refresh), $refresh); print "\n"; } sub go_chroot { if ($chroot ne "/" && $chroot ne "") { # First build hash of users and groups, which will not be accessible # after a chroot local (@u, @g); setpwent(); while(@u = getpwent()) { $uid_to_user{$u[2]} = $u[0] if (!defined($uid_to_user{$u[2]})); $user_to_uid{$u[0]} = $u[2] if (!defined($user_to_uid{$u[0]})); } endpwent(); setgrent(); while(@g = getgrent()) { $gid_to_group{$g[2]} = $g[0] if(!defined($gid_to_group{$g[2]})); $group_to_gid{$g[0]} = $g[2] if(!defined($group_to_gid{$g[0]})); } endgrent(); chroot($chroot) || die("chroot to $chroot failed"); } } # make_chroot(dir) # Converts some real directory to the chroot form sub make_chroot { if ($chroot eq "/") { return $_[0]; } elsif ($_[0] eq $chroot) { return "/"; } else { local $rv = $_[0]; if ($rv =~ /^$chroot\//) { $rv =~ s/^$chroot//; return $rv; } else { return undef; } } } # unmake_chroot(dir) # Converts some chroot'd directory to the real form sub unmake_chroot { if ($chroot eq "/") { return $_[0]; } elsif ($_[0] eq "/") { return $chroot; } else { return $chroot.$_[0]; } } # print_content_type() # Prints the content-type header, with a charset sub print_content_type { if ($userconfig{'nocharset'} || $config{'nocharset'}) { # Never try to use charset print "Content-type: text/plain\n\n"; } else { $charset = &get_charset(); print "Content-type: text/plain; charset=$charset\n\n"; } } # html_extract_head_body(html) # Given some HTML, extracts the header, body and stuff after the body sub html_extract_head_body { local ($html) = @_; if ($html =~ /^([\000-\377]*]*>)([\000-\377]*)(<\/body[^>]*>[\000-\377]*)/i) { return ($1, $2, $3); } else { return (undef, $html, undef); } } 1; file/FixedFrame.class0100664000567100000120000000210510754361753014532 0ustar jcameronwheel.K % & ' () *+ ,- . / 0 % 12 13 4 56 7 8 89:mwImh()VCodeLineNumberTable(II)V handleEvent(Ljava/awt/Event;)Z minimumSize()Ljava/awt/Dimension; preferredSize setFixedSize SourceFileFixedFrame.java   ; <=> ? @ AB C D EF GH I J java/awt/Dimension    FixedFramejava/awt/FrameUtiltkLjava/awt/Toolkit;java/awt/Toolkit getScreenSizejava/lang/Mathrandom()Dwidthheightmovejava/awt/EventtargetLjava/lang/Object;iddispose!d8***LI9*+l(k+lk     7 /* **B+ *+ ɠ * *+ ?#**Y***  !! *&"' ** + ,#$file/save.cgi0100755000567100000120000000171610754361753013123 0ustar jcameronwheel#!/usr/local/bin/perl # save.cgi # Write data to a file require './file-lib.pl'; $disallowed_buttons{'edit'} && &error($text{'ebutton'}); $p = $ENV{'PATH_INFO'}; &webmin_log("save", undef, $p) if ($access{'uid'}); &switch_acl_uid_and_chroot(); print "Content-type: text/plain\n\n"; # Read posted data $clen = $ENV{'CONTENT_LENGTH'}; &read_fully(STDIN, \$buf, $clen) == $clen || &error("Failed to read POST input : $!"); if (defined($in{'length'}) && length($buf) != $in{'length'}) { print &text('edit_elength'),"\n"; } else { &lock_file($p); if ($access{'ro'} || !&can_access($p)) { print &text('edit_eaccess', $p),"\n"; } elsif (-l $p && !&must_follow($p)) { print &text('edit_efollow', $p),"\n"; } elsif (!&open_tempfile(FILE, ">$p", 1)) { print "$!\n"; } else { &print_tempfile(FILE, $buf); &close_tempfile(FILE); &unlock_file($p); print "\n"; print &file_info_line($p),"\n"; &webmin_log("save", undef, $p) if (!$access{'uid'}); } } file/acl_security.pl0100755000567100000120000001354210754361753014524 0ustar jcameronwheel require 'file-lib.pl'; do '../ui-lib.pl'; # acl_security_form(&options) # Output HTML for editing security options for the file module sub acl_security_form { print " $text{'acl_user'}\n"; local $u = $_[0]->{'uid'} < 0 ? '' : getpwuid($_[0]->{'uid'}); printf " %s\n", $_[0]->{'uid'} < 0 ? 'checked' : '', $text{'acl_user_def'}; printf "\n", $_[0]->{'uid'} < 0 ? '' : 'checked'; print " ", &user_chooser_button("uid", 0)," \n"; print " $text{'acl_umask'}\n"; print " \n"; print " $text{'acl_follow'} \n"; printf " $text{'yes'}\n", $_[0]->{'follow'} == 1 ? "checked" : ""; printf " $text{'acl_fyes'}\n", $_[0]->{'follow'} == 2 ? "checked" : ""; printf " $text{'no'} \n", $_[0]->{'follow'} == 0 ? "checked" : ""; print " $text{'acl_ro'} \n"; printf " $text{'yes'}\n", $_[0]->{'ro'} ? "checked" : ""; printf " $text{'no'} \n", $_[0]->{'ro'} ? "" : "checked"; print " $text{'acl_max'}\n"; printf " %s\n", $_[0]->{'max'} ? "" : "checked", $text{'acl_unlim'}; printf "\n", $_[0]->{'max'} ? "checked" : ""; printf " %s \n", $_[0]->{'max'}, $text{'acl_b'}; print " $text{'acl_archive'} \n"; printf " $text{'yes'}\n", $_[0]->{'archive'} == 1 ? "checked" : ""; printf " $text{'acl_archmax'}\n", $_[0]->{'archive'} == 2 ? "checked" : ""; printf " %s\n", $_[0]->{'archmax'}, $text{'acl_b'}; printf " $text{'no'} \n", $_[0]->{'archive'} == 0 ? "checked" : ""; print " $text{'acl_unarchive'} \n"; printf " %s\n", $_[0]->{'unarchive'} == 2 ? "checked" : "", $text{'acl_unarchive2'}; printf " %s\n", $_[0]->{'unarchive'} == 1 ? "checked" : "", $text{'acl_unarchive1'}; printf " %s \n", $_[0]->{'unarchive'} == 0 ? "checked" : "", $text{'acl_unarchive0'}; print " $text{'acl_dostounix'} \n"; printf " %s\n", $_[0]->{'dostounix'} == 1 ? "checked" : "", $text{'yes'}; printf " %s \n", $_[0]->{'dostounix'} == 0 ? "checked" : "", $text{'no'}; print " $text{'acl_buttons'} \n"; foreach $b (@file_buttons) { printf " %s
\n", $b, $_[0]->{'button_'.$b} ? "checked" : "", $text{'acl_button_'.$b}; } print " \n"; print " $text{'acl_noperms'}\n"; print "",&ui_radio("noperms", int($_[0]->{'noperms'}), [ [ 0, $text{'yes'} ], [ 1, $text{'no'} ] ]),"\n"; print "$text{'acl_nousers'}\n"; print "",&ui_radio("nousers", int($_[0]->{'nousers'}), [ [ 0, $text{'yes'} ], [ 1, $text{'no'} ] ])," \n"; print " $text{'acl_filesystems'}\n"; print "",&ui_yesno_radio("filesystems", int($_[0]->{'filesystems'})),"\n"; print "$text{'acl_contents'}\n"; print "",&ui_yesno_radio("contents", int($_[0]->{'contents'}))," \n"; print " $text{'acl_chroot'}\n"; printf "\n", $_[0]->{'chroot'}; print " $text{'acl_dirs'}
$text{'acl_relto'}\n"; print "
\n"; printf " %s
\n", $_[0]->{'home'} ? 'checked' : '', $text{'acl_home'}; printf " %s\n", $_[0]->{'goto'} ? 'checked' : '', $text{'acl_goto'}; print " $text{'acl_nodirs'}
$text{'acl_relto'}\n"; print "
\n"; } # acl_security_save(&options) # Parse the form for security options for the file module sub acl_security_save { $_[0]->{'uid'} = $in{'uid_def'} ? -1 : getpwnam($in{'uid'}); $in{'root'} =~ s/\r//g; local @root = split(/\s+/, $in{'root'}); map { s/\/+/\//g } @root; map { s/([^\/])\/+$/$1/ } @root; $_[0]->{'root'} = join(" ", @root); $in{'noroot'} =~ s/\r//g; local @noroot = split(/\s+/, $in{'noroot'}); map { s/\/+/\//g } @noroot; map { s/([^\/])\/+$/$1/ } @noroot; $_[0]->{'noroot'} = join(" ", @noroot); $_[0]->{'follow'} = $in{'follow'}; $_[0]->{'ro'} = $in{'ro'}; $in{'umask'} =~ /^[0-7]{3}$/ || &error("Invalid umask"); $_[0]->{'umask'} = $in{'umask'}; $_[0]->{'home'} = $in{'home'}; $_[0]->{'goto'} = $in{'goto'}; $_[0]->{'max'} = $in{'max_def'} ? undef : $in{'max'}; $_[0]->{'archive'} = $in{'archive'}; $_[0]->{'archmax'} = $in{'archmax'}; foreach $b (@file_buttons) { $_[0]->{"button_$b"} = $in{"button_$b"}; } $_[0]->{'unarchive'} = $in{'unarchive'}; $_[0]->{'dostounix'} = $in{'dostounix'}; $_[0]->{'chroot'} = $in{'chroot'}; $_[0]->{'noperms'} = $in{'noperms'}; $_[0]->{'nousers'} = $in{'nousers'}; $_[0]->{'filesystems'} = $in{'filesystems'}; $_[0]->{'contents'} = $in{'contents'}; } file/CbButton.java0100644000567100000120000001247310754361753014063 0ustar jcameronwheelimport java.awt.*; import java.util.*; public class CbButton extends Canvas { public static final int LEFT = 0; public static final int RIGHT = 1; public static final int ABOVE = 2; public static final int BELOW = 3; Image image; String string; CbButtonCallback callback; int imode; int iwidth, iheight, pwidth, pheight, twidth, theight; boolean inside, indent; CbButtonGroup group; boolean selected; Color lc1 = Util.light_edge, lc2 = Util.body, lc3 = Util.dark_edge; Color hc1 = Util.light_edge_hi, hc2 = Util.body_hi, hc3 = Util.dark_edge_hi; public CbButton(Image i, CbButtonCallback cb) { this(i, null, LEFT, cb); } public CbButton(String s, CbButtonCallback cb) { this(null, s, LEFT, cb); } public CbButton(Image i, String s, int im, CbButtonCallback cb) { image = i; string = s; imode = im; callback = cb; if (image != null) { iwidth = Util.getWidth(image); iheight = Util.getHeight(image); } if (string != null) { twidth = Util.fnm.stringWidth(string); theight = Util.fnm.getHeight(); } if (image != null && string != null) { switch(imode) { case LEFT: case RIGHT: pwidth = iwidth + twidth + 6; pheight = Math.max(iheight , theight) + 4; break; case ABOVE: case BELOW: pwidth = Math.max(iwidth, twidth) + 4; pheight = iheight + theight + 6; break; } } else if (image != null) { pwidth = iwidth + 4; pheight = iheight + 4; } else if (string != null) { pwidth = twidth + 8; pheight = theight + 8; } } /**Make this button part of a mutual-exclusion group. Only one such * button can be indented at a time */ public void setGroup(CbButtonGroup g) { group = g; group.add(this); } /**Make this button the selected one in it's group */ public void select() { if (group != null) group.select(this); } /**Display the given string */ public void setText(String s) { string = s; image = null; twidth = Util.fnm.stringWidth(string); theight = Util.fnm.getHeight(); repaint(); } /**Display the given image */ public void setImage(Image i) { string = null; image = i; iwidth = Util.getWidth(image); iheight = Util.getHeight(image); repaint(); } /**Display the given image and text, with the given alignment mode */ public void setImageText(Image i, String s, int m) { image = i; string = s; imode = m; twidth = Util.fnm.stringWidth(string); theight = Util.fnm.getHeight(); iwidth = Util.getWidth(image); iheight = Util.getHeight(image); repaint(); } public void paint(Graphics g) { Color c1 = inside ? hc1 : lc1, c2 = inside ? hc2 : lc2, c3 = inside ? hc3 : lc3; int w = size().width, h = size().height; Color hi = indent||selected ? c3 : c1, lo = indent||selected ? c1 : c3; g.setColor(c2); g.fillRect(0, 0, w-1, h-1); g.setColor(hi); g.drawLine(0, 0, w-2, 0); g.drawLine(0, 0, 0, h-2); g.setColor(lo); g.drawLine(w-1, h-1, w-1, 1); g.drawLine(w-1, h-1, 1, h-1); if (inside) { /* g.setColor(hi); g.drawLine(1, 1, w-3, 1); g.drawLine(1, 1, 1, h-3); */ g.setColor(lo); g.drawLine(w-2, h-2, w-2, 2); g.drawLine(w-2, h-2, 2, h-2); } g.setColor(c3); g.setFont(Util.f); if (image != null && string != null) { if (imode == LEFT) { Dimension is = imgSize(w-twidth-6, h-4); g.drawImage(image, (w - is.width - twidth - 2)/2, (h-is.height)/2, is.width, is.height, this); g.drawString(string, (w - is.width - twidth - 2)/2 +is.width +2, (h + theight - Util.fnm.getDescent())/2); } else if (imode == RIGHT) { } else if (imode == ABOVE) { //Dimension is = imgSize(w-4, h-theight-6); g.drawImage(image, (w - iwidth)/2, (h - iheight - theight - 2)/2, iwidth, iheight, this); g.drawString(string, (w - twidth)/2, iheight+Util.fnm.getHeight()+2); } else if (imode == BELOW) { } } else if (image != null) { Dimension is = imgSize(w-4, h-4); g.drawImage(image, (w - is.width)/2, (h-is.height)/2, is.width, is.height, this); } else if (string != null) { g.drawString(string, (w - twidth)/2, (h+theight-Util.fnm.getDescent())/2); } } public void update(Graphics g) { paint(g); } public boolean mouseEnter(Event e, int x, int y) { inside = true; repaint(); return true; } public boolean mouseExit(Event e, int x, int y) { inside = false; repaint(); return true; } public boolean mouseDown(Event e, int x, int y) { indent = true; repaint(); return true; } public boolean mouseUp(Event e, int x, int y) { if (x >= 0 && y >= 0 && x < size().width && y < size().height) { if (callback != null) callback.click(this); select(); } indent = false; repaint(); return true; } public Dimension preferredSize() { return new Dimension(pwidth, pheight); } public Dimension minimumSize() { return preferredSize(); } private Dimension imgSize(int mw, int mh) { float ws = (float)mw/(float)iwidth, hs = (float)mh/(float)iheight; float s = ws < hs ? ws : hs; if (s > 1) s = 1; return new Dimension((int)(iwidth*s), (int)(iheight*s)); } } interface CbButtonCallback { void click(CbButton b); } class CbButtonGroup { Vector buttons = new Vector(); void add(CbButton b) { buttons.addElement(b); } void select(CbButton b) { for(int i=0; i px+3) { // move one tick to the right pos += step; } else { // start dragging dragging = true; dragx = x-px; } checkPos(); if (callback != null) callback.moved(this, pos); repaint(); return true; } public boolean mouseDrag(Event e, int x, int y) { if (dragging) { px = x-dragx; pos = (px-8)*(max - min) / (size().width-16); checkPos(); if (callback != null) callback.moving(this, pos); repaint(); } return dragging; } public boolean mouseUp(Event e, int x, int y) { if (dragging) { dragging = false; if (callback != null) callback.moved(this, pos); repaint(); return true; } return false; } public boolean mouseExit(Event e, int x, int y) { inside = false; repaint(); return true; } protected void checkPos() { if (pos < min) pos = min; else if (pos > max) pos = max; } public Dimension preferredSize() { return new Dimension(100, 20); } public Dimension minimumSize() { return preferredSize(); } } interface CbSliderCallback { /**Callled back when the slider stops at a new position * @param s The slider being moved * @param p New position */ public void moved(CbSlider s, int p); /**Callled back whenever the slider is being dragged * @param s The slider being moved * @param p New position */ public void moving(CbSlider s, int p); } file/rename.cgi0100755000567100000120000000104010754361753013422 0ustar jcameronwheel#!/usr/local/bin/perl # rename.cgi # Rename some file require './file-lib.pl'; $disallowed_buttons{'rename'} && &error($text{'ebutton'}); &ReadParse(); &webmin_log("rename", undef, $in{'old'}, \%in); &switch_acl_uid_and_chroot(); print "Content-type: text/plain\n\n"; if ($access{'ro'} || !&can_access($in{'old'})) { print &text('rename_eold', $in{'old'}),"\n"; } elsif (!&can_access($in{'new'})) { print &text('rename_enew', $in{'new'}),"\n"; } elsif (!&rename_logged($in{'old'}, $in{'new'})) { print "$!\n"; } else { print "\n"; } file/CbScrollbar.java0100644000567100000120000001717010754361753014532 0ustar jcameronwheel// CbScrollbar.java // A drop-in replacement for the AWT scrollbar class, with callbacks // and a nicer look. This scrollbar is typically used to display some // fraction of a list of items, with values ranging from min to max. // The lvisible parameter determines how many of the list are lvisible // at any one time. The value of the scrollbar ranges from min to // max-lvisible+1 (the highest position in the list to start displaying) import java.awt.*; public class CbScrollbar extends Panel { static final int VERTICAL = 0; static final int HORIZONTAL = 1; CbScrollbarCallback callback; // who to call back to boolean inside, indent; int orient; // horizontal or vertical? int value; // position int lvisible; // the number of lines lvisible int num; // total number of lines int lineinc = 1; // how much the arrow buttons move by Color lc1 = Util.light_edge, lc2 = Util.body, lc3 = Util.dark_edge; Color hc1 = Util.light_edge_hi, hc2 = Util.body_hi, hc3 = Util.dark_edge_hi; Color bc = Util.dark_bg; int y1, y2, x1, x2, drag; CbScrollbarArrow arrow1, arrow2; CbScrollbar(int o, CbScrollbarCallback cb) { this(o, 0, 1, 1, cb); } /**Create a new scrollbar */ CbScrollbar(int o, int v, int vis, int n, CbScrollbarCallback cb) { setValues(v, vis, n); orient = o; callback = cb; setLayout(null); if (orient == VERTICAL) { add(arrow1 = new CbScrollbarArrow(this, 0)); add(arrow2 = new CbScrollbarArrow(this, 1)); } else { add(arrow1 = new CbScrollbarArrow(this, 2)); add(arrow2 = new CbScrollbarArrow(this, 3)); } } /**Set the current scrollbar parameters * @param v Current position * @param vis Number of lines lvisible * @param n Total number of lines */ public void setValues(int v, int vis, int n) { value = v; lvisible = vis; num = n; if (lvisible > num) lvisible = num; checkValue(); repaint(); } public int getValue() { return value; } public void setValue(int v) { value = v; checkValue(); repaint(); } private void checkValue() { if (value < 0) value = 0; else if (value > num-lvisible) value = num-lvisible; } public void paint(Graphics g) { if (num == 0) return; int w = size().width, h = size().height; boolean ins = inside && !(arrow1.inside || arrow2.inside); Color c1 = ins ? hc1 : lc1, c2 = ins ? hc2 : lc2, c3 = ins ? hc3 : lc3; g.setColor(bc); g.fillRect(0, 0, w, h); g.setColor(c3); g.drawLine(0, 0, w-1, 0); g.drawLine(0, 0, 0, h-1); g.setColor(c1); g.drawLine(w-1, h-1, w-1, 0); g.drawLine(w-1, h-1, 0, h-1); if (orient == VERTICAL) { int va = h-w*2; y1 = w+va*value/num; y2 = w+va*(value+lvisible)/num-1; g.setColor(c2); g.fillRect(1, y1, w-2, y2-y1); g.setColor(indent ? c3 : c1); g.drawLine(1, y1, w-2, y1); g.drawLine(1, y1, 1, y2-1); g.setColor(indent ? c1 : c3); g.drawLine(w-2, y2-1, w-2, y1); g.drawLine(w-2, y2-1, 1, y2-1); if (ins) { g.drawLine(w-3, y2-2, w-3, y1+1); g.drawLine(w-3, y2-2, 2, y2-2); } } else if (orient == HORIZONTAL) { int va = w-h*2; x1 = h+va*value/num; x2 = h+va*(value+lvisible)/num-1; g.setColor(c2); g.fillRect(x1, 1, x2-x1, h-2); g.setColor(indent ? c3 : c1); g.drawLine(x1, 1, x1, h-2); g.drawLine(x1, 1, x2-1, 1); g.setColor(indent ? c1 : c3); g.drawLine(x2-1, h-2, x1, h-2); g.drawLine(x2-1, h-2, x2-1, 1); if (ins) { g.drawLine(x2-2, h-3, x1+1, h-3); g.drawLine(x2-2, h-3, x2-2, 2); } } } /**Called by arrows to move the slider */ void arrowClick(int d) { int oldvalue = value; value += d; checkValue(); if (value != oldvalue) { callback.moved(this, value); repaint(); } } public void reshape(int nx, int ny, int nw, int nh) { super.reshape(nx, ny, nw, nh); if (orient == VERTICAL) { arrow1.reshape(1, 1, nw-2, nw-1); arrow2.reshape(1, nh-nw-1, nw-2, nw-1); } else { arrow1.reshape(1, 1, nh-1, nh-2); arrow2.reshape(nw-nh-1, 1, nh-1, nh-2); } repaint(); } public Dimension preferredSize() { return orient==VERTICAL ? new Dimension(16, 100) : new Dimension(100, 16); } public Dimension minimumSize() { return preferredSize(); } public boolean mouseDown(Event e, int mx, int my) { if (orient == VERTICAL) { // move up/down one page, or start dragging if (my < y1) arrowClick(-lvisible); else if (my > y2) arrowClick(lvisible); else { indent = true; drag = my-y1; repaint(); } } else { // move left/right one page, or start dragging if (mx < x1) arrowClick(-lvisible); else if (mx > x2) arrowClick(lvisible); else { indent = true; drag = mx-x1; repaint(); } } return true; } public boolean mouseDrag(Event e, int mx, int my) { if (indent) { int w = size().width, h = size().height; int oldvalue = value; if (orient == VERTICAL) { int va = h-w*2, ny = my-drag-w; value = ny*num/va; } else { int va = w-h*2, nx = mx-drag-h; value = nx*num/va; } checkValue(); if (value != oldvalue) { callback.moving(this, value); repaint(); } } return indent; } public boolean mouseUp(Event e, int mx, int my) { if (indent) { indent = false; repaint(); callback.moved(this, value); return true; } return false; } /* public boolean mouseEnter(Event e, int mx, int my) { inside = true; repaint(); return true; } public boolean mouseExit(Event e, int mx, int my) { inside = false; repaint(); return true; } */ } class CbScrollbarArrow extends Canvas implements Runnable { int mode; CbScrollbar scrollbar; boolean inside, indent; Thread th; CbScrollbarArrow(CbScrollbar p, int m) { scrollbar = p; mode = m; } public void paint(Graphics g) { int w = size().width, h = size().height; Color c1 = inside ? scrollbar.hc1 : scrollbar.lc1, c2 = inside ? scrollbar.hc2 : scrollbar.lc2, c3 = inside ? scrollbar.hc3 : scrollbar.lc3; g.setColor(scrollbar.bc); g.fillRect(0, 0, w, h); int xp[] = new int[3], yp[] = new int[3]; // blank, dark, light if (mode == 0) { // up arrow xp[0] = w/2; xp[1] = w-1; xp[2] = 0; yp[0] = 0; yp[1] = h-1; yp[2] = h-1; } else if (mode == 1) { // down arrow xp[0] = 0; xp[1] = w/2; xp[2] = w-1; yp[0] = 0; yp[1] = h-1; yp[2] = 0; } else if (mode == 2) { // left arrow xp[0] = 0; xp[1] = w-1; xp[2] = w-1; yp[0] = h/2; yp[1] = h-1; yp[2] = 0; } else if (mode == 3) { // right arrow xp[0] = 0; xp[1] = w-1; xp[2] = 0; yp[0] = 0; yp[1] = h/2; yp[2] = h-1; } g.setColor(c2); g.fillPolygon(xp, yp, 3); g.setColor(indent ? c1 : c3); g.drawLine(xp[1], yp[1], xp[2], yp[2]); g.setColor(indent ? c3 : c1); g.drawLine(xp[0], yp[0], xp[2], yp[2]); } public boolean mouseDown(Event e, int mx, int my) { indent = true; repaint(); (th = new Thread(this)).start(); return true; } public boolean mouseUp(Event e, int mx, int my) { indent = false; repaint(); if (th != null) th.stop(); return true; } /**Thread for doing repeated scrolling */ public void run() { int stime = 500; while(true) { scrollbar.arrowClick(mode%2 == 0 ? -1 : 1); try { Thread.sleep(stime); } catch(Exception e) { } stime = 100; } } } // CbScrollbarCallback // Methods for reporting the movement of the scrollbar to another object interface CbScrollbarCallback { /**Called when the scrollbar stops moving. This happens when an * arrow is clicked, the scrollbar is moved by a page, or the user * lets go of the scrollbar after dragging it. * @param sb The scrollar that has been moved * @param v The new value */ void moved(CbScrollbar sb, int v); /**Called upon every pixel movement of the scrollbar when it is * being dragged, but NOT when moved() is called. * @param sb The scrollar that has been moved * @param v The new value */ void moving(CbScrollbar sb, int v); } file/list.cgi0100755000567100000120000000222010754361753013127 0ustar jcameronwheel#!/usr/local/bin/perl # list.cgi # Return a list of files in some directory require './file-lib.pl'; &ReadParse(); &switch_acl_uid_and_chroot(); print "Content-type: text/plain\n\n"; $d = $in{'dir'} eq "/" ? "" : $in{'dir'}; if (!&can_list($in{'dir'})) { print $text{'list_eaccess'},"\n"; } elsif (!opendir(DIR, $in{'dir'})) { # Cannot list the dir .. but maybe we don't have to! # If a sub-directory was requested, just assume that it exists. local $err = $!; local @alt = &accessible_subdir($in{'dir'}); local $fil = &file_info_line($in{'dir'}); if (@alt && $fil) { print "\n"; foreach $f ("$in{'dir'}/.", "$in{'dir'}/..", @alt) { $fil = &file_info_line($f); print "$fil\n" if (defined($fil)); } } else { print "$err\n"; } } else { # Can list the directory print "\n"; @files = sort { lc($a) cmp lc($b) } readdir(DIR); if ($hide_dot_files) { @files = grep { $_ !~ /^\./ } @files; } else { @files = grep { $_ ne "." && $_ ne ".." } @files; } @files = grep { &can_list("$d/$_") } @files; closedir(DIR); foreach $f (".", "..", @files) { local $fil = &file_info_line("$d/$f"); print "$fil\n" if (defined($fil)); } } file/Makefile0100644000567100000120000000036410754361753013134 0ustar jcameronwheelfile.jar: FileManager.java Util.java CLASSPATH=/usr/local/netscape7/plugins/java2/lib/javaplugin.jar:. javac -target 1.2 -source 1.2 *.java jar cf file.jar *.class [ -d "../zomos-virtual" ] && jar cf ../zomos-virtual/file.jar *.class file/CbButtonGroup.class0100664000567100000120000000121310754361753015254 0ustar jcameronwheel.,         !"buttonsLjava/util/Vector;()VCodeLineNumberTableadd (LCbButton;)Vselect SourceFile CbButton.java java/util/Vector  #$ %& '(CbButton )* + CbButtonGroupjava/lang/Object addElement(Ljava/lang/Object;)Vsize()I elementAt(I)Ljava/lang/Object;selectedZrepaint  ,**Y % *+ ^2=*'*N-+- - Ա '+1file/module.info0100644000567100000120000000150510754361755013636 0ustar jcameronwheeldesc_ko_KR.euc= risk=high desc_ru_SU= desc_zh_TW.Big5=ɮ׺޲z desc_pl=Zarzdzanie plikami desc_de=Datei-Manager (Java erforderlich) name=FileManager desc_zh_CN=ļ desc_pt=Administrador de Ficheiros desc_tr=Dosya Yneticisi desc=File Manager desc_es=Explorador de Archivos desc_sv=Filhanterare desc_fr=Gestionnaire de Fichiers desc_ja_JP.euc=ե ޥ͡ desc_ru_RU= desc_ca=Administrador de Fitxers desc_pt_BR=Gerenciador de Arquivos desc_sk=Sprvca Systmu Sborov longdesc=View, edit and change permissions on files and directories on your system with a Windows-like file manager. readonly=1 desc_zh_TW.UTF-8=檔案管理者 desc_zh_CN.UTF-8=文件管理器 desc_ja_JP.UTF-8=ファイル マネージャ desc_ko_KR.UTF-8=파일 관리자 desc_cz=Sprvce soubor version=1.402 file/lang/0040755000567100000120000000000010754361755012417 5ustar jcameronwheelfile/lang/zh_TW.Big50100644000567100000120000001051310754361753014155 0ustar jcameronwheelindex_title=ɮ׺޲z index_nojava=oӼҲջݭn Java ~ॿTB@, OzsG䴩 Java top_ret=^ top_config=]w top_down=U top_open=} top_view=˵ top_edit=s top_refresh=Ū top_info=T top_search=jM top_delete=R top_new=sW top_upload=W top_rename=W top_copy=ƻs top_cut=ŤU top_paste=KW right_name=W right_size=jp right_user=ϥΪ right_group=s right_date= edit_enormal=us@몺ɮ edit_title=s $1 edit_title2=إɮפ edit_filename=ɮצW: edit_goto=e edit_find=M edit_gotoline=eC edit_replace=N edit_all=N edit_searchfor=M䤺e edit_replaceby=N edit_eover=$1 LkQл\ edit_esave=Lkxsɮ : $1 edit_eaccess=zQ\xs '$1' edit_efollow=zQ\gJŸs '$1' edit_notfound=䤣o $1 edit_saveclose=xs edit_elength=ɮ׳QI_I info_file=ɮ info_path=|: info_type=O: info_size=jp: info_mod=קɶ: info_link=s: info_perms=v info_user=ϥΪ: info_group=s: info_other=L: info_sticky=]w줸: info_sticky2=u֦̤~Rɮ info_own=Ҧv info_setuid=]w UID: info_setuid2=HϥΪv info_setgid=]w GID: info_setgid2=ɮ~Ӹs info_setgid3=Hsv info_apply=Mܧ info_apply1=uoӥؿ info_apply2=oӥؿP䤤ɮ info_apply3=oӥؿPҦlؿ info_efailed=LkŪ $1 : $2 info_read=Ū info_write=gJ info_list=CX info_exec= search_eaccess=zQ\jMoӥؿ search_title=jMɮ search_ok=jM search_dir=jMؿ search_match=ŦXɮצW search_user=֦ϥΪ search_group=֦s search_any=N search_type=ɮת search_types_=N search_types_f=ɮ search_types_d=ؿ search_types_l=Ÿs(Symbolic link) search_types_p=W޹D(Named pipe) search_size=ɮפjp search_more=WL search_less=p search_xdev=Search past mounts? search_edir=εLĪjMؿ search_ematch=ŦX regexp search_euser=ϥΪ̦W search_egroup=sզW search_esize=ɮתjpO search_crit=jM search_list=jMG delete_dtitle=Rؿ delete_ftitle=Rɮ delete_mtitle=Rhɮ delete_ddesc=zTwnä[Rؿ $1 PҦeܡH delete_fdesc=zTwnä[Rɮ $1 ܡH delete_mdesc=zTwnä[RoɮשMؿܡH : delete_efailed=LkR $1 : $2 mkdir_title=sWؿ mkdir_dir=ؿ: mkdir_eexists=$1 wgsb mkdir_efailed=إߥؿ : $1 mkdir_eaccess=zQ\إ '$1' link_title=إ߳s link_from=s: link_to=s: link_eexists=$1 wgsb link_efailed=s : $1 link_efrom=zQ\s '$1' link_efollow=zQ\إ߲Ÿs rename_title=ܧW $1 rename_old=ɦW: rename_new=ܧ: rename_ok=W rename_eexists=s $1 ɮפwgsb rename_efailed=W : $1 rename_eold=zQ\W '$1' rename_enew=zQ\W '$1' file_type0=ؿ file_type1=r file_type2=v file_type3=Gi file_type4=ɮ file_type5=Ÿs file_type6=]Ʊ file_type7=޽u view_enormal=u@몺ɮץiHQ˵ view_eaccess=zQ\s $1 view_eopen=Lk}n $1 : $2 paste_ecopy=bzKWnŤUνƻs paste_egone=ƻsɮ $1 wgsb paste_eover=$1 LkQ\g paste_eself=zɮ׶K쥻W paste_emfailed=ʥ : $1 paste_ecfailed= : $1 upload_efailed=}ҤWǥ : $1 upload_title=Wɮ upload_file=nWǪɮ upload_dir=WǨؿ upload_ok=W upload_conv=O_n DOS Ÿ? upload_efile=SܭnWǪɮ. upload_edir=WǪؿsb. upload_eperm=zQ\إ $1 upload_ewrite=LkgJ $1 : $2. upload_already=ɮ $1 wgsbAzTwnл\ܡH upload_elink=LkWDzŸs upload_zip=nY ZIP TAR ɮ׶ܡH upload_yes=OAMR find_eaccess=zQ\s $1 find_eexist=$1 sb $2 find_edir=$1 O@ӥؿb $2 cancel= close= eopen=UѡG$1 chmod_eaccess=zQ\s '$1' chmod_euser=$1 : SoӨϥΪ chmod_egroup=$1 : SoӸs chmod_elink=Ÿsd : $1 chmod_echown=ܧ֦̥ : $1 chmod_echmod=ܧv : $1 copy_efrom=zQ\ '$1' copy_eto=zQ\ '$1' copy_elink=Ÿs : $1 delete_eaccess=zQ\R '$1' list_eaccess=zQ\soӥؿ move_eto=zQ\ʨ '$1' move_afrom=zQ\ʦ '$1' acl_user=HϥΪvsAWɮ acl_umask=إɮתBn acl_follow=O_HŸs? acl_dirs=u\sؿ file/lang/zh_CN0100644000567100000120000001622710754361753013346 0ustar jcameronwheelindex_title=ļ index_nojava=ģҪjavaֲ֧ܹ֧java index_eremote=û Webmin¼ $1 Unixû switch_euser=Unix ûڣ top_ret= top_down= top_edit=༭ top_refresh=ˢ top_info=Ϣ top_eacl=ACL top_attr= top_ext=չ top_delete=ɾ top_new=½ top_upload=ϴ top_rename= top_copy= top_cut= top_paste=ճ top_share= top_mount= top_search= top_config= right_name= right_size=С right_user=û right_group= right_date= edit_enormal=ֻܱ༭ļ edit_title=ڱ༭ $1 edit_title2=ڴļ edit_filename=ļ edit_goto=ת edit_find= edit_gotoline=ת edit_replace=滻 edit_all=ȫ滻 edit_searchfor= edit_replaceby=滻 edit_eover=$1 ܱ edit_esave=ļʧ $1 edit_eaccess=δ '$1' edit_notfound=δҵı $1 edit_saveclose=沢ر info_file=ļ info_path=· info_type=ͣ info_size=С info_mod=޸ģ info_link=ᵽ info_perms= info_user=û info_group=飺 info_other= info_octal=˽ƣ info_sticky=ճԣ info_sticky2=ֻ߲ɾļ info_own=Ȩ info_setuid= uid info_setuid2=ûִ info_setgid= gid info_setgid2=ļ̳ info_setgid3=ִ info_apply=Ӧø info_apply1=Ŀ¼ info_apply2=Ŀ¼ļ info_apply3=Ŀ¼Ŀ¼ info_efailed= $1 $2 ʧ info_read=ȡ info_write=д info_list=б info_exec=ִ eacl_eacls=ȡ ACLs ʧ $1 eacl_acltype=ACL eacl_aclname=Ӧõ eacl_aclperms= eacl_add= ͵ACL eacl_remove=ƳACL eacl_efs=ļϵͳ $1 ֧ ACLs eacl_create= ACL eacl_edit=༭ ACL eacl_user=ļ $1 eacl_group=ļ $1 eacl_eowner=ȱҪӦõû eacl_efailed=Ϊ$1 $2ACLsʧ eacl_emask=ֻһ ACL Ŀ eacl_edefmask=ֻһĬ ACL Ŀ eacl_title=$1ACL eacl_owner=ļ eacl_edefaults=һļκĬϵACLĬûACLs acltype_user=û acltype_group= acltype_other= acltype_mask= acltype_default_user=Ĭû acltype_default_group=Ĭ acltype_default_other=Ĭ acltype_default_mask=Ĭ delete_mtitle=ɾļ delete_dtitle=ɾĿ¼ delete_ftitle=ɾļ delete_ddesc=ȷʵҪɾĿ¼ $1 ݣ delete_fdesc=ȷʵҪɾļ $1 delete_mdesc=ȷʵҪɾЩĿ¼ļ delete_efailed=ɾ $1 $2 ʧ mkdir_title=½Ŀ¼ mkdir_dir=½Ŀ¼ mkdir_eexists=$1 Ѿ mkdir_efailed=Ŀ¼ $1 ʧ mkdir_eaccess=Ȩ '$1' link_title= link_from=ԣ link_to=ӵ link_eexists=$1 Ѿ link_efailed=ʧܣ$1 link_efrom=Ȩ '$1' link_efollow=Ȩ rename_title=$1 rename_old=ԭ rename_new= rename_ok= rename_eexists=ļ $1 Ѵ rename_efailed=ʧܣ $1 rename_eold=Ȩ '$1' rename_enew=ȨΪ '$1' file_type0=Ŀ¼ file_type1=ıļ file_type2=ӳļ file_type3=ļ file_type4=ļ file_type5= file_type6=豸ļ file_type7=ܵ view_enormal=ֻܲ鿴ļ view_enormal2=ֻļ view_eaccess=Ȩ $1 view_eopen= $1 $2 ʧ paste_ecopy=ճ֮ǰл򿽱 paste_egone=ļ $1 Ѿ paste_eover=$1 ܸ paste_eself=ܽļճ paste_emfailed=ƶʧܣ$1 paste_ecfailed=ʧܣ$1 over_title=ļ over_msg=ļ $1 ѾڡֶΪҪճļһ over_new=ļ over_ok=ȷ upload_efailed=ϴʧܣ$1 upload_title=ϴļ upload_file=Ҫϴļ upload_dir=ϴĿ¼ upload_ok=ϴ upload_conv=ǷתDOSзţ upload_efile=ûѡҪϴļ upload_edir=ϴĿ¼ڡ upload_eperm=Ȩ $1 upload_ewrite=д $1$2 ʧܡ upload_already=ļ $1 ѾڡȷҪ find_eaccess=Ȩ $1 find_eexist=$2в$1 find_edir=$1 $2 еĿ¼ cancel=ȡ close=ر chmod_eaccess=Ȩ '$1' chmod_euser=$1޴û chmod_egroup=$1޴û chmod_elink=symlink ʧܣ$1 chmod_echown=chown ʧܣ$1 chmod_echmod=chmod ʧܣ$1 chmod_efollow=δ༭ copy_efrom=Ȩ '$1' copy_eto=Ȩ '$1' copy_elink=symlink ʧ '$1' delete_eaccess=Ȩɾ '$1' list_eaccess=ȨʴĿ¼ list_edir=ʾбʧ $1 $2 move_eto=Ȩƶ '$1' move_afrom=Ȩƶ '$1' acl_user=Ϊûʷļ acl_user_def=Webmin¼ͬ acl_umask=ļȥ acl_follow=ǷǸӣ acl_ro=ֻģʽ acl_dirs=Ŀ¼ acl_home=WebminûĿ¼ acl_log=ļ޸ı־ acl_goto=Ŀ¼ share_title= share_samba=Windows share_nfs=NFS share_son= Windows ļ share_soff= Windows ļ share_writable=д룿 share_available=ڻ share_sheader=ѡ share_only= share_guest=Guest ʣ share_comment=ע share_nheader=NFS ѡ share_non= NFS ļ share_noff=ѽ NFS ļ share_desc= share_ro=ֻ share_rw=д share_root=Root share_none= share_all= share_listed=гġ share_host= share_opts=ѡ share_s0=κ share_s1=η Root û share_s2= share_lro=ֻ share_lrw=д log_create_export=Ѵ NFS $1 log_modify_export=޸ĵ NFS $1 log_delete_export=ɾ NFS $1 log_create_share=Ѵ Samba $1 log_modify_share=޸ĵ Samba $1 log_delete_share=ɾ Samba $1 log_save=ѱļ $1 log_chmod=Ѹıļ $1 Ȩ log_mkdir=ѴĿ¼ $1 log_upload=ϴļ $1 log_link=Ѵķ $1 $2 log_relink=޸ĵķ $1 $2 log_copy=ѿļ $1 $2 log_move=ƶļ $1 $2 log_delete=ɾļ $1 log_attr=ļ $1 log_acl=ļ $1 ACL search_eaccess=ȨĿ¼ search_title=ҵļ search_ok= search_dir=Ŀ¼ search_match=ļƥ search_user=û search_group= search_any=κ search_type=ļ search_types_=κ search_types_f=ļ search_types_d=Ŀ¼ search_types_l= search_types_p=ܵ search_size=ļС search_more= search_less= search_xdev=ǰļأ search_edir=ʧЧĿ¼ search_ematch=ʧƥʽ search_euser=ʧû search_egroup=ʧ search_esize=ļСֵ search_crit=׼ search_list= facl_eaccess=δôļACLs attr_eattrs=ȡʧܣ$1 attr_efs=ļϵͳ $1 ֧ attr_add= attr_name= attr_value=ֵ attr_efailed=Ϊ $1 $2 ʧ attr_title=$1ļ attr_create= attr_edit=༭ attr_ename=ȱ ext_eattrs=ȡչʧܣ $1 ext_efs=ļϵͳ $1 ֧չ ext_title=$1 չ ext_header=չļ ext_efailed=Ϊ $1 $2ʧ eattr_A=·ʴ eattr_a=ֻӵļĩβ eattr_c=ѹ eattr_d=ʹdump eattr_i=޸ eattr_s=ɾʱ eattr_S=дͬ eattr_u=Ϊɾ mount_eaccess=δļϵͳ mount_efstab=˼صϲļϵͳ mount_epoint=$1 Ǽص mount_rusure1=ȷҪ $2 $1 mount_rusure2=ȷҪ $2ж $1 mount_err1=ʧ $1 $2 mount_err2=жʧ $1 $2 mount_title1=ļϵͳ mount_title2=жļϵͳ file/lang/en0100644000567100000120000003167310754361753012751 0ustar jcameronwheelindex_title=File Manager index_nojava=This module requires java to function, but your browser does not support java index_eremote=There is no Unix user matching the Webmin login $1. index_index=Return to Webmin index. switch_euser=Unix user does not exist! top_ret=Index top_down=Save top_preview=Preview top_edit=Edit top_html=HTML top_refresh=Refresh top_info=Info top_eacl=ACL top_attr=Attrs top_ext=EXT top_delete=Delete top_new=New top_upload=Upload top_extract=Extract top_rename=Rename top_copy=Copy top_cut=Cut top_paste=Paste top_share=Sharing top_mount=Mount top_search=Find top_config=Config top_efile=No file selected right_name=Name right_size=Size right_user=User right_group=Group right_date=Date edit_enormal=Only normal files can be edited edit_title=Editing $1 edit_title2=Creating file edit_filename=Filename: edit_goto=Goto edit_find=Find edit_gotoline=Go to line edit_replace=Replace edit_all=Replace all edit_searchfor=Search for edit_replaceby=Replace by edit_eover=$1 cannot be overwritten edit_esave=Failed to save file : $1 edit_eaccess=You are not allowed to save '$1' edit_efollow=You are not allowed to write to the symbolic link '$1' edit_notfound=The text $1 was not found edit_saveclose=Save & Close edit_elength=File was truncated! edit_textmode=Switch to plain text mode info_file=File info_path=Path: info_type=Type: info_size=Size: info_mod=Modified: info_link=Link to: info_perms=Permissions info_user=User: info_group=Group: info_other=Other: info_octal=Octal: info_sticky=Sticky: info_sticky2=Only owners can delete files info_own=Ownership info_setuid=Setuid: info_setuid2=Execute as user info_setgid=Setgid: info_setgid2=Files inherit group info_setgid3=Execute as group info_apply=Apply changes to info_apply1=This directory only info_apply2=This directory and its files info_apply3=This directory and all subdirectories info_efailed=Failed to update $1 : $2 info_read=Read info_write=Write info_list=List info_exec=Exec info_sizeheader=Directory size info_bytes=Total bytes: info_files=Total files: info_dirs=Total directories: info_getsize=Get Size info_esize=Failed to get sizes : $1 eacl_eacls=Failed to read ACLs : $1 eacl_acltype=ACL Type eacl_aclname=Apply to eacl_aclperms=Permissions eacl_add=Add ACL of type : eacl_remove=Remove ACL eacl_efs=The filesystem $1 does not support ACLs eacl_create=Create ACL eacl_edit=Edit ACL eacl_user=File owner $1 eacl_group=File group $1 eacl_eowner=Missing user or group to apply to eacl_efailed=Failed to set ACL for $1 : $2 eacl_emask=There can be at most one mask ACL entry eacl_edefmask=There can be at most one default mask ACL entry eacl_title=ACL for $1 eacl_owner=File owner eacl_edefaults=If a file has any default ACL, it must have default user, group and other ACLs. acltype_user=User acltype_group=Group acltype_other=Others acltype_mask=Mask acltype_default_user=Default User acltype_default_group=Default Group acltype_default_other=Default Others acltype_default_mask=Default Mask delete_mtitle=Delete multiple files delete_dtitle=Delete directory delete_ftitle=Delete file delete_ddesc=Are you sure you want to permanently delete the directory $1 and all its contents? delete_fdesc=Are you sure you want to permanently delete the file $1 ? delete_mdesc=Are you sure you want to permanently delete these files and directories? : delete_efailed=Failed to delete $1 : $2 mkdir_title=New Directory mkdir_dir=New directory: mkdir_eexists=$1 already exists mkdir_efailed=Create directory failed : $1 mkdir_eaccess=You are not allowed to create '$1' link_title=Create Link link_from=Link from: link_to=Link to: link_eexists=$1 already exists link_efrom=Link source must be an absolute path link_efailed=Link failed : $1 link_efrom2=You are not allowed to link from '$1' link_efollow=You are not allowed to create symlinks rename_title=Rename $1 rename_old=Old name: rename_new=New name: rename_ok=Rename rename_eexists=A file called $1 already exists rename_eslash=The new file name $1 contains a / rename_efailed=Rename failed : $1 rename_eold=You are not allowed to rename '$1' rename_enew=You are not allowed to rename to '$1' file_type0=Directory file_type1=Text file file_type2=Image file file_type3=Binary file file_type4=File file_type5=Symbolic link file_type6=Device file file_type7=Pipe view_enormal=Only normal files can be viewed view_enormal2=Only normal files can be downloaded view_eaccess=You are not allowed to access $1 view_eopen=Failed to open $1 : $2 view_edir=An archive can only be created for a directory view_ecmd=The command $1 needed to create an archive is not installed view_ecomp=Failed to create archive : $1 view_earchive=You are not allowed to download archives view_earchmax=The selected directory is larger than the maximum allowed for archiving ($1 bytes) paste_ecopy=You must cut or copy before pasting paste_egone=Copied file $1 no longer exists paste_eover=$1 cannot be overwritten paste_eself=You cannot paste a file over itself paste_emfailed=Move failed : $1 paste_ecfailed=Copy failed : $1 over_title=File Exists over_msg=The file $1 already exists. Use the field below to enter a new filename for the pasted file. over_new=New filename: over_ok=Ok upload_efailed=Failed to open upload : $1 upload_title=Upload File upload_file=File to upload upload_dir=Upload to directory upload_ok=Upload upload_conv=Convert Windows newlines? upload_efile=No file selected to upload. upload_edir=Upload directory does not exist. upload_euser=Selected user does not exist. upload_eperm=You are not allowed to create $1 upload_ewrite=Failed to write to $1 : $2. upload_already=The file $1 already exists. Are you sure that you want to overwrite it? upload_elink=Cannot upload to a symbolic link upload_zip=Uncompress ZIP or TAR file? upload_yes=Yes, then delete upload_user=Upload as user find_eaccess=You are not allowed to access $1 find_eexist=$1 does not exist in $2 find_edir=$1 is not a directory in $2 cancel=Cancel close=Close eopen=Download failed : $1 chmod_eaccess=You are not allowed to access '$1' chmod_euser=$1 : no such user chmod_egroup=$1 : no such group chmod_elink=symlink failed : $1 chmod_echown=chown failed : $1 chmod_echmod=chmod failed : $1 chmod_efollow=You are not allowed to edit symbolic links copy_efrom=You are not allowed to copy from '$1' copy_eto=You are not allowed to copy to '$1' copy_elink=symlink failed : $1 delete_eaccess=You are not allowed to delete '$1' delete_eroot=The directory '$1' is one of those that you are limited to, and so cannot be deleted list_eaccess=You are not allowed to access this directory list_edir=Failed to list $1 : $2 move_eto=You are not allowed to move to '$1' move_afrom=You are not allowed to move '$1' acl_user=Access files on server as user acl_user_def=Same as Webmin login acl_umask=Umask for new files acl_follow=Always follow symlinks? acl_fyes=If owners match acl_ro=Read-only mode? acl_dirs=Only allow access to directories acl_nodirs=Deny access to directories acl_home=Include home directory of Webmin user acl_log=Log all file modifications? acl_goto=Open first allowed directory? acl_max=Maximum upload size acl_unlim=Unlimited acl_b=bytes acl_archive=Can download archives of directories? acl_archmax=Yes, if smaller than acl_buttons=Available buttons on toolbar acl_button_save=Save (download file) acl_button_preview=Preview (view scaled-down image) acl_button_edit=Edit (edit text file) acl_button_info=Info (edit file permissions and ownership) acl_button_acl=ACL (edit Posix ACL) acl_button_attr=Attr (edit XFS attributes) acl_button_ext=EXT (edit EXT attributes) acl_button_search=Find (find files) acl_button_delete=Delete (delete files) acl_button_new=New (create text file) acl_button_upload=Upload (upload file from client, or extract on server) acl_button_mkdir=New (create directory) acl_button_makelink=New (create symbolic link) acl_button_rename=Rename (rename file) acl_button_sharing=Sharing (setup Samba and NFS file sharing) acl_button_mount=Mount (mount or un-mount filesystem) acl_button_copy=Copy, Cut and Paste acl_unarchive=Can extract uploaded archive files? acl_unarchive2=Always attempt to acl_unarchive1=$yes acl_unarchive0=$no acl_dostounix=Can have Windows newlines converted? acl_chroot=Chroot directory for entire file manager acl_relto=(relative to any chroot directory) acl_noperms=Can change file permissions? acl_nousers=Can change file ownership? acl_filesystems=Can see filesystem mount points? acl_contents=Allow searching of file contents? share_title=Sharing share_samba=Windows share_nfs=NFS share_son=Windows file sharing enabled share_soff=Windows file sharing disabled share_writable=Writable? share_available=Currently active? share_sheader=Sharing options share_only=Only share_guest=Guest access? share_comment=Comment share_nheader=NFS export options share_non=NFS file sharing enabled share_noff=NFS file sharing disabled share_desc=Description share_ro=Read-only hosts share_rw=Read-write hosts share_root=Root access hosts share_none=None share_all=All share_listed=Listed.. share_host=Hosts share_opts=Options share_s0=Trust nobody share_s1=Trust non-root share_s2=Trust everybody share_lro=Read-only share_lrw=Read-write log_create_export=Created NFS export $1 log_modify_export=Modified NFS export $1 log_delete_export=Deleted NFS export $1 log_create_share=Created Samba share $1 log_modify_share=Modified Samba share $1 log_delete_share=Deleted Samba share $1 log_save=Saved file $1 log_chmod=Changed permissions on file $1 log_mkdir=Created directory $1 log_upload=Uploaded file $1 log_link=Created symbolic link $1 to $2 log_relink=Modified symbolic link $1 to $2 log_copy=Copied file $1 to $2 log_move=Moved file $1 to $2 log_delete=Deleted file $1 log_attr=Set attributes on file $1 log_acl=Set ACL on file $1 search_eaccess=You are not allowed to search this directory search_title=Find files search_ok=Search Now search_dir=Search directory search_match=For files matching search_cont=Containing text search_user=Owned by user search_group=Owned by group search_any=Any search_type=File type search_types_=Any search_types_f=File search_types_d=Directory search_types_l=Symbolic link search_types_p=Named pipe search_size=File size search_more=More than search_less=Less than search_xdev=Search past mounts? search_edir=Missing or invalid search directory search_ematch=Missing matching regexp search_euser=Missing username search_egroup=Missing group name search_esize=File size must be an integer search_crit=Search criteria search_list=Search results search_down=Download search_edown=No search result file to download selected facl_eaccess=You are not allowed to set ACLs for this file attr_eattrs=Failed to get attributes : $1 attr_efs=The filesystem $1 does not support attributes attr_add=Add Attribute attr_name=Attribute Name attr_value=Attribute Value attr_efailed=Failed to set attributes for $1 : $2 attr_title=File Attributes for $1 attr_create=Add Attribute attr_edit=Edit Attribute attr_ename=Missing attribute name ext_eattrs=Failed to get EXT attributes : $1 ext_efs=The filesystem $1 does not support EXT attributes ext_title=EXT attributes for $1 ext_header=EXT file attributes ext_efailed=Failed to set attributes for $1 : $2 eattr_A=Do not update access times eattr_a=Can only append to file eattr_c=Compress data on disk eattr_d=Do not backup with dump eattr_i=Do not allow modification eattr_s=Zero blocks when deleting eattr_S=Always sync after writing eattr_u=Save contents for undeletion mount_eaccess=You are not allowed to mount filesystems mount_efstab=No filesystem exists at this mount point mount_epoint=$1 is not a mount point mount_rusure1=Are you sure you want to mount $1 from $2 ? mount_rusure2=Are you sure you want to un-mount $1 from $2 ? mount_err1=Failed to mount $1 : $2 mount_err2=Failed to un-mount $1 : $2 mount_title1=Mount filesystem mount_title2=Un-mount filesystem zip_err=Could not extract file : $1 zip_ecmd=Missing $1 command zip_eunzip=Unzip failed : $1 zip_ename=Does not appear to be a zip, tar or tar.gz file zip_euntar=Un-tar failed : $1 zip_euntar2=Un-compress and un-tar failed : $1 ddir_title=Download Directory ddir_rusure=To download the contents of $1 as an archive file, click on one of the archive type buttons below. ddir_zip=ZIP ddir_tgz=TAR.GZ ddir_tar=TAR ebutton=This feature is not available preview_etype=Could not work out file type for $1 preview_etype2=$1 is not in a supported image format preview_ecmd=The command $1 needed to scale this image is not installed preview_eimage=Only images can be previewed preview_title=Preview of $1 preview_bad=Could not load image to preview preview_egd=Failed to load image with GD html_efailed=Failed to open HTML editor : $1 html_title=Edit HTML File html_title2=Create HTML File html_save=Save and Close html_err=Failed to save HTML file history_title=Path History history_ok=Go To history_button=History extract_etype=Only files can be extracted extract_title=Extract Compressed File extract_rusure=Are you sure you want to extract the compressed file : extract_rusure2=Existing files in the same directory may be overwritten. extract_err=Failed to extract file : $1 extract_yes=Yes, then delete file/lang/pt0100644000567100000120000001065410754361753012766 0ustar jcameronwheelindex_title=Administrador de Ficheiros index_nojava=Este mdulo requer java para funcionar, mas o seu navegador no suporta java top_open=Abrir top_view=Ver top_edit=Editar top_refresh=Refrescar top_info=Informaes top_delete=Apagar top_new=Novo top_upload=Carregar top_rename=Renomear top_copy=Copiar top_cut=Cortar top_paste=Colar right_name=Nome right_size=Tamanho right_user=Utilizador right_group=Grupo right_date=Data edit_enormal=Apenas ficheiros normais podem ser editados edit_title=A editar $1 edit_title2=A criar ficheiro edit_filename=Nome do ficheiro: edit_eover=$1 no pode ser sobrescrito edit_esave=Erro ao guardar ficheiro : $1 edit_eaccess=Voc no est autorizado para guardar '$1' info_file=Ficheiro info_path=Caminho: info_type=Tipo: info_size=Tamanho: info_mod=Modificado: info_link=Enlace com: info_perms=Permisses info_user=Utilizador: info_group=Grupo: info_other=Outro: info_sticky=Restrio: info_sticky2=Apenas os proprietrios podem apagar ficheiros info_own=Propriedade info_setuid=Colocar UID: info_setuid2=Executar como utilizador info_setgid=Colocar GID: info_setgid2=Ficheiros herdados do grupo info_setgid3=Executar como grupo info_apply=Aplicar alteraes a info_apply1=Este directrio apenas info_apply2=Este directrio e os seus ficheiros info_apply3=Este directrio e todos os subdirectrios info_efailed=Erro ao actualizar $1 : $2 info_read=Leitura info_write=Escrita info_list=Lista info_exec=Execuo delete_dtitle=Apagar directrio delete_ftitle=Apagar ficheiro delete_ddesc=Tem a certeza que quer permanentemente apagar o directrio $1 e todo o seu contedo? delete_fdesc=Tem a certeza que quer apagar permanentemente o ficheiro $1 ? delete_efailed=Erro ao apagar $1 : $2 mkdir_title=Novo Directrio mkdir_dir=Novo directrio: mkdir_eexists=$1 j existe mkdir_efailed=Erro na criao de directrio : $1 mkdir_eaccess=Voc no est autorizado para criar '$1' link_title=Criar Enlace link_from=Enlace de: link_to=Enlace com: link_eexists=$1 j existe link_efailed=Erro no enlace : $1 link_efrom=Voc no est autorizado para criar enlaces de '$1' link_efollow=Voc no est autorizado para criar enlaces simblicos rename_title=Renomear $1 rename_old=Nome antigo: rename_new=Nome novo: rename_ok=Renomear rename_eexists=J existe um ficheiro denominado $1 rename_efailed=Erro na renomeao : $1 rename_eold=Voc no est autorizado para renomear '$1' rename_enew=Voc no est autorizado para renomear para '$1' file_type0=Directrio file_type1=Ficheiro de texto file_type2=Ficheiro de imagem file_type3=Ficheiro binrio file_type4=Ficheiro file_type5=Enlace simblico file_type6=Ficheiro de dispositivo file_type7=Tubo view_enormal=Apenas ficheiros normais podem ser vistos view_eaccess=Voc no est autorizado para aceder a $1 view_eopen=Erro ao abrir $1 : $2 paste_ecopy=Tem de cortar ou copiar primeiro antes de colar paste_egone=O ficheiro cpoiado $1 j no existe paste_eover=$1 no pode ser sobrescrito paste_eself=No pode colar um ficheiro sobre si mesmo paste_emfailed=Erro ao mover : $1 paste_ecfailed=Erro ao copiar : $1 upload_efailed=Erro ao abrir ficheiro carregado : $1 upload_title=Carregar Ficheiro upload_file=Ficheiro paa carregar upload_dir=Carregar para o directrio upload_ok=Carregar upload_conv=Converter linhas de DOS? upload_efile=No foram seleccionados ficheiros para carregar. upload_edir=Directrio de carga no existe. upload_eperm=Voc no est autorizado para criar $1 upload_ewrite=Erro ao escrever para $1 : $2. find_eaccess=Voc no est autorizado para aceder a $1 find_eexist=$1 no existe em $2 find_edir=$1 no um directrio de $2 cancel=Cancelar chmod_eaccess=Voc no est autorizado para aceder a '$1' chmod_euser=$1 : no existe tal utilizador chmod_egroup=$1 : no existe tal grupo chmod_elink=erro no enlace simblico : $1 chmod_echown=erro na alterao de proprietrio : $1 chmod_echmod=erro na alterao de permisses : $1 copy_efrom=Voc no est autorizado para copiar de '$1' copy_eto=Voc no est autorizado para copiar para '$1' copy_elink=erro no enlace simblico : $1 delete_eaccess=Voc no est autorizado para apagar '$1' list_eaccess=Voc no est autorizado para aceder a este directrio move_eto=Voc no est autorizado para mover para '$1' move_afrom=Voc no est autorizado para mover '$1' acl_user=Aceder a ficheiros no servidor como utilizador acl_umask=Mscara de utilizador para novos ficheiros acl_follow=Seguir sempre enlaces simblicos? acl_dirs=Apenas permitir acesso a directrios file/lang/es0100664000567100000120000003265310754361753012757 0ustar jcameronwheelacl_archive=¿Puede descargar archivos de directorios? acl_archmax=Sí, si son menores que acl_b=bytes acl_button_acl=ACL (editar ACL Posix) acl_button_attr=Attr (editar atributos XFS) acl_button_copy=Copiar, Cortar y Pegar acl_button_delete=Borrar (borrar archivos) acl_button_edit=Editar (editar archivo texto) acl_button_ext=EXT (editar atributos EXT) acl_button_info=Info (editar permisos y propiedad de archivo) acl_button_makelink=Nuevo (crear link simbólico) acl_button_mkdir=Nuevo (crear directorio) acl_button_mount=Montar (montar o desmontar sistema de archivos) acl_button_new=Nuevo (crear archivo de texto) acl_button_rename=Renombrar (renombrar archivo) acl_button_save=Guardar (descargar archivo) acl_button_search=Buscar (buscar archivos) acl_button_sharing=Compartir (configurar compartición de archivo por Samba y NFS) acl_button_upload=Subir (subir archivo desde cliente) acl_buttons=Botones disponibles en la barra de herramientas acl_chroot=Cambiar directorio raiz (chroot) para todo el explorador de archivos acl_dirs=Permitir acceso solo a los directorios acl_dostounix=¿Se le pueden convertir las nuevas líneas de DOS? acl_follow=¿Seguir siempre los vínculos simbólicos? acl_fyes=Si los propietarios coinciden acl_goto=¿Abrir el primer directorio permitido? acl_home=Incluir directorio de inicio del usuario Webmin acl_log=¿Registrar todas las modificaciones de archivos? acl_max=Máximo tamaño de subida acl_nodirs=Denegar acceso a directorios acl_relto=(relativo a cualquier directorio raiz) acl_ro=¿Modo de solo lectura? acl_umask=Máscara de Usuario para Nuevos archivos acl_unarchive=¿Puede extraer archivos subidos? acl_unarchive0=$no acl_unarchive1=$sí acl_unarchive2=Siempre intentar acl_unlim=Ilimitado acl_user=Acceder a archivos en el servidor como usuario acl_user_def=Igual que el nombre de ingreso de Webmin acltype_default_group=Grupo por defecto acltype_default_mask=Máscara por defecto acltype_default_other=Otros por defecto acltype_default_user=Usuario por defecto acltype_group=Grupo acltype_mask=Máscara acltype_other=Otros acltype_user=Usuario attr_add=Agregar Atributo attr_create=Agregar atributo attr_eattrs=Fallo al obtener atributos : $1 attr_edit=Editar atributo attr_efailed=Fallo al configurar atributo para $1 : $2 attr_efs=El sistema de archivos $1 no soporta atributos attr_ename=Nombre de atributo no ingresado attr_name=Nombre del atributo attr_title=Atributos de archivo para $1 attr_value=Valor del atributo cancel=Cancelar chmod_eaccess=No está autorizado a acceder a '$1' chmod_echmod=fallo al cambiar modo : $1 chmod_echown=fallo al cambiar dueño : $1 chmod_efollow=No está autorizado a editar vínculos simbólicos chmod_egroup=$1 : no existe dicho grupo chmod_elink=fallo en vínculo simbólico : $1 chmod_euser=$1 : no existe dicho usuario close=Cerrar copy_efrom=No está autorizado a copiar desde '$1' copy_elink=fallo en vínculo simbólico : $1 copy_eto=No está autorizado a copiar a '$1' ddir_rusure=Para descargar los contenidos de $1 como un archivo de ficheros, elija abajo uno de los botones de tipo de archivo. ddir_tar=TAR ddir_tgz=TAR.GZ ddir_title=Descargar Directorio ddir_zip=ZIP delete_ddesc=¿Está seguro que quiere borrar permanentemente el directorio $1 y todo su contenido? delete_dtitle=Borrar directorio delete_eaccess=No está autorizado a borrar '$1' delete_efailed=Fallo al borrar $1 : $2 delete_fdesc=¿Está seguro que quiere borrar permanentemente el archivo $1 ? delete_ftitle=Borrar archivo delete_mdesc=¿Está seguro que quiere borrar permanentemente estos archivos y directorios? : delete_mtitle=Borrar múltiples archivos eacl_aclname=Aplicar a eacl_aclperms=Permisos eacl_acltype=Tipo de ACL eacl_add=Agregar ACL de tipo : eacl_create=Crear ACL eacl_eacls=Fallo al leer ACLs : $1 eacl_edefaults=si un archivo tiene alguna ACL por defecto, debe tener usuario, grupo y otras ACL por defecto. eacl_edefmask=Puede haber a lo sumo una entrada de máscara de ACL por defecto eacl_edit=Editar ACL eacl_efailed=Fallo al asignar ACL para $1 : $2 eacl_efs=El sistema de archivos $1 no soporta ACLs eacl_emask=Puede haber a lo sumo una entrada de máscara de ACL eacl_eowner=Usuario o grupo a aplicar no ingresado eacl_group=Grupo de archivo $1 eacl_owner=Dueño del archivo eacl_remove=Borrar ACL eacl_title=ACL para $1 eacl_user=Dueño de archivo $1 eattr_A=No actualizar tiempos de acceso eattr_S=Siempre sincronizar despues de escribir eattr_a=Solo puede agregar a archivo eattr_c=Comprimir datos en el disco eattr_d=No respaldar con volcado eattr_i=No permitir modificaciones eattr_s=Poner a cero los bloques a borrar eattr_u=Salvar contenido para recuperación después de borrado ebutton=Esta opción no está disponible edit_all=Reemplazar todo edit_eaccess=No está autorizado a salvar '$1' edit_efollow=No está autorizado a escribir en el vínculo simbólico '$1' edit_elength=¡El archivo se truncó! edit_enormal=Solo los archivos normales pueden ser editados edit_eover=$1 no puede ser sobreescrito edit_esave=Fallo al salvar archivo : $1 edit_filename=Nombre de archivo: edit_find=Buscar edit_goto=Ir a edit_gotoline=Ir a línea edit_notfound=El texto $1 no fue encontrado edit_replace=Reemplazar edit_replaceby=Reemplazar por edit_saveclose=Salvar y Cerrar edit_searchfor=Buscar edit_title=Editando $1 edit_title2=Creando archivo eopen=Descarga fallida: $1 ext_eattrs=Fallo al obtener atributos EXT : $1 ext_efailed=Fallo al configurar atributos para $1 : $2 ext_efs=El sistema de archivos $1 no soporta atributos EXT ext_header=Atributos EXT de archivo ext_title=Atributos EXT para $1 facl_eaccess=No está autorizado a configurar ACLs para este archivo file_type0=Directorio file_type1=Archivo de texto file_type2=Archivo de imágen file_type3=Archivo binario file_type4=Archivo file_type5=Vínculo simbólico file_type6=Archivo de dispositivo file_type7=Tubería find_eaccess=No está autorizado a acceder a $1 find_edir=$1 no es un directorio en $2 find_eexist=$1 no existe en $2 index_eremote=No hay ningún usuario Unix que coincida con el usuario de ingreso de Webmin $1. index_nojava=Este módulo requiere java para funcionar, pero su navegador no soporta java index_title=Administrador de Archivos info_apply=Aplicar cambios a info_apply1=Este directorio solamente info_apply2=Este directorio y sus archivos info_apply3=Este directorio y todos sus subdirectorios info_efailed=Fallo al actualizar $1 : $2 info_exec=Ejecutar info_file=Archivo info_group=Grupo: info_link=Vínculo a: info_list=Listar info_mod=Modificado: info_octal=Octal: info_other=Otro: info_own=Propiedad info_path=Ruta: info_perms=Permisos info_read=Leer info_setgid=Ingresar ID de grupo: info_setgid2=Archivos heredan grupo info_setgid3=Ejecutar como grupo info_setuid=Ingresar ID de usuario: info_setuid2=Ejecutar como usuario info_size=Tamaño: info_sticky=Restricción: info_sticky2=Solo los dueños pueden borrar archivos info_type=Tipo: info_user=Usuario: info_write=Escribir link_eexists=$1 ya existe link_efailed=Fallo vínculo : $1 link_efollow=No está autorizado a crear vínculos simbólicos link_efrom=No está autorizado a vincular desde '$1' link_efrom2=No tiene permiso para linkar desde '$1' link_from=Vincular desde: link_title=Crear Vínculo link_to=Vincular hacia: list_eaccess=No está autorizado a acceder a este directorio list_edir=Fallo al listar $1 : $2 log_acl=Configurado ACL sobre archivo $1 log_attr=Configurados atributos en archivo $1 log_chmod=Permisos cambiados en el archivo $1 log_copy=Copiado archivo $1 a $2 log_create_export=Creada exportación NFS $1 log_create_share=Creada compartición Samba $1 log_delete=Borrado archivo $1 log_delete_export=Borrada exportación NFS $1 log_delete_share=Borrada compartición Samba $1 log_link=Creado vínculo simbólico $1 a $2 log_mkdir=Creado directorio $1 log_modify_export=Modificada exportación NFS $1 log_modify_share=Modificada compartición Samba $1 log_move=Movido archivo $1 a $2 log_relink=Modificado vínculo simbólico $1 a $2 log_save=Salvado archivo $1 log_upload=Cargado archivo $1 mkdir_dir=Nuevo directorio: mkdir_eaccess=No está autorizado a crear '$1' mkdir_eexists=$1 ya existe mkdir_efailed=Fallo al crear directorio : $1 mkdir_title=Nuevo Directorio mount_eaccess=No está autorizado a montar sistemas de archivos mount_efstab=No existe sistema de archivo en este punto de montaje mount_epoint=$1 no es un punto de montaje mount_err1=Fallo al montar $1 : $2 mount_err2=Fallo al desmontar $1 : F2 mount_rusure1=¿Está seguro que desea montar $1 desde $2 ? mount_rusure2=¿Está seguro que desea desmontar $1 desde $2 ? mount_title1=Montar sistema de archivos mount_title2=Desmontar sistema de archivos move_afrom=No está autorizado a mover '$1' move_eto=No está autorizado a mover a '$1' over_msg=El archivo $1 ya existe. Use el campo de abajo para ingresar un nuevo nombre de archivo para el archivo pegado. over_new=Nuevo nombre de archivo: over_ok=Ok over_title=Archivo existe paste_ecfailed=Fallo al copiar : $1 paste_ecopy=Debe cortar o copiar antes de pegar paste_egone=El archivo copiado $1 ya no existe paste_emfailed=Fallo al mover : $1 paste_eover=$1 no puede ser sobreescrito paste_eself=No puede pegar un archivo sobre si mismo rename_eexists=Ya existe un archivo llamado $1 rename_efailed=Fallo al renombrar : $1 rename_enew=No está autorizado a renombrar a '$1' rename_eold=No está autorizado a renombrar '$1' rename_new=Nombre nuevo: rename_ok=Renombrar rename_old=Nombre anterior: rename_title=Renombrar $1 right_date=Fecha right_group=Grupo right_name=Nombre right_size=Tamaño right_user=Usuario search_any=Cualquiera search_crit=Criterio de búsqueda search_dir=Buscar directorio search_eaccess=No está autorizado a buscar este directorio search_edir=Directorio de búsqueda no ingresado o no válido search_egroup=Nombre de grupo no ingresado search_ematch=Expresión de coincidencia no ingresada search_esize=El tamaño del archivo debe ser un entero search_euser=Nombre de usuario no ingresado search_group=Perteneciente al grupo search_less=Menos que search_list=Resultados de la búsqueda search_match=Para archivos que coincidan search_more=Mas que search_ok=Buscar Ahora search_size=Tamaño de archivo search_title=Buscar archivos search_type=Tipo de archivo search_types_=Cualquiera search_types_d=Directorio search_types_f=Archivo search_types_l=Vínculo Simbólico search_types_p=Tubería nombrada search_user=Perteneciente al usuario search_xdev=¿Buscar en montajes anteriores? share_all=Todos share_available=¿Actualmente activo? share_comment=Comentario share_desc=Descripción share_guest=¿Acceso como invitado? share_host=Máquinas share_listed=Listado.. share_lro=Solo lectura share_lrw=Lectura-escritura share_nfs=NFS share_nheader=Opciones de exportación NFS share_noff=Compartir archivos NFS deshabilitado share_non=Compartir archivos NFS habilitado share_none=Ninguno share_only=Solo share_opts=Opciones share_ro=Máquina de solo lectura share_root=Máquinas de acceso raíz share_rw=Máquina de lectura-escritura share_s0=No confiar en nadie share_s1=Confiar en aquellos que no sean raíz share_s2=Confiar en todos share_samba=Windows share_sheader=Opciones para compartir share_soff=Deshabilitar compartir archivos de Windows share_son=Habilitar compartir archivos de Windows share_title=Compartir share_writable=¿Editable? switch_euser=¡El usuario Unix no existe! top_attr=Atributos top_config=Configurar top_copy=Copiar top_cut=Cortar top_delete=Borrar top_down=Salvar top_eacl=ACL top_edit=Editar top_ext=EXT top_info=Información top_mount=Montar top_new=Nuevo top_paste=Pegar top_refresh=Refrescar top_rename=Renombrar top_ret=Indice top_search=Buscar top_share=Compartir top_upload=Cargar upload_already=El archivo $1 ya existe. ¿Está seguro que desea sobreescribirlo? upload_conv=¿Convertir nuevas líneas de DOS? upload_dir=Cargar a directorio upload_edir=El directorio para cargar no existe. upload_efailed=Fallo al abrir carga : $1 upload_efile=No se seleccionó ningún archivo para cargar. upload_elink=No se puede cargar a un vínculo simbólico upload_eperm=No está autorizado a crear $1 upload_ewrite=Fallo al escribir a $1 : $2. upload_file=Archivo para cargar upload_ok=Cargar upload_title=Cargar Archivos upload_yes=Si, después borrar upload_zip=¿Descomprimir archivo ZIP o TAR? view_eaccess=No está autorizado a acceder a $1 view_earchive=No tiene permiso para descargar archivos view_earchmax=El directorio elegido es mayor que el máximo permitido para archivar ($1 bytes) view_ecmd=El comando $1, necesario para crear un archivo no está instalado view_ecomp=Falló la creación de archivo: $1 view_edir=Un archivo sólo puede ser creado en un directorio view_enormal=Solo los archivos normales pueden ser visualizados view_enormal2=Solo los archivos normales pueden ser descargados view_eopen=Fallo al abrir $1 : $2 zip_ecmd=Comando $1 no introducido zip_ename=No parece ser un archivo zip, tar o tar.gz válido zip_err=No se pudo extraer archivo : $1 zip_euntar=Extracción tar fallida : $1 zip_euntar2=Descompresión y extracción tar fallida : $1 zip_eunzip=Extracción zip fallida : $1 file/lang/fr0100644000567100000120000001645310754361753012755 0ustar jcameronwheelindex_title=Gestionnaire de Fichier index_nojava=Ce module ncessite que java soit en fonction, mais votre fureteur ne le supporte pas switch_euser=L'utilisateur Unix n'existe pas ! top_open=Ouvrir top_view=Voir top_edit=diter top_refresh=Rafrachir top_info=Information top_delete=Supprimer top_new=Nouveau top_upload=Envoyer top_rename=Renommer top_copy=Copier top_cut=Couper top_paste=Coller top_share=Partage top_search=Trouver right_name=Nom right_size=Taille right_user=Usager right_group=Groupe right_date=Date edit_enormal=Seulement les fichiers normaux peuvent tre diter edit_title=diter '$1' edit_title2=Crer un fichier edit_filename=Nom de fichier: edit_eover='$1' ne peut tre crit par-dessus edit_esave=Impossible d'ouvrir le fichier '$1' edit_eaccess=Vous n'tes pas autoris sauver '$1' info_file=Fichier info_path=Chemin: info_type=Type: info_size=Taille: info_mod=Modifi: info_link=Liens vers: info_perms=Permissions info_user=Usager: info_group=Groupe: info_other=Autre: info_sticky=Collant: info_sticky2=Seulement son propritaire peut effacer un fichier info_own=Propritaire info_setuid=SUID: info_setuid2=Excuter comme usager info_setgid=SGID: info_setgid2=Les fichiers hrite du groupe info_setgid3=Excuter comme groupe info_apply=Appliquer les changements info_apply1=Ce rpertoire seulement info_apply2=Ce rpertoire et ses fichiers info_apply3=Ce rpertoire et tout ses sous-rpertoires info_efailed=Impossible de mettre jour '$1' : $2 info_read=Lire info_write=crire info_list=Lister info_exec=Excuter delete_dtitle=Supprimer un rpertoire delete_ftitle=Supprimer un fichier delete_ddesc=Vous tes sur que vous voulez supprimer dfinitivement le rpertoire '$1' et tout son contenu? delete_fdesc=Vous tes sur que vous voulez supprimer dfinitivement le fichier $1? delete_efailed=Impossible de supprimer '$1' : $2 mkdir_title=Nouveau Rpertoire mkdir_dir=Nouveau rpertoire: mkdir_eexists='$1' existe dj mkdir_efailed=Impossible de crer le rpertoire : $1 mkdir_eaccess=Vous n'tes pas autoris crer '$1' link_title=Crer un Lien Symbolique link_from=Lien de: link_to=Lien vers: link_eexists='$1' Existe dj link_efailed=Impossible de faire le lien symbolique '$1' link_efrom=Vous n'tes pas autoris crer aucun lien symbolique de '$1' link_efollow=Vous n'tes pas autoris crer aucun lien symbolique rename_title=Renommer '$1' rename_old=Ancien nom: rename_new=Nouveau nom: rename_ok=Renommer rename_eexists=Un fichier appel '$1' existe dj rename_efailed=Impossible de renommer '$1' rename_eold=Vous n'tes pas autoris renommer '$1' rename_enew=Vous n'tes pas autoris renommer pour '$1' file_type0=Rpertoire file_type1=Fichier texte file_type2=Fichier image file_type3=Fichier binaire file_type4=Fichier file_type5=Lien symbolique file_type6=Fichier de priphrique file_type7=Tuyau view_enormal=Seulement un fichier normal peut tre visionn view_eaccess=Vous n'tes pas autoris d'accder '$1' view_eopen=Impossible d'ouvrir '$1' : $2 paste_ecopy=Vous devez copier ou couper avant de coller paste_egone=Le fichier copi '$1' n'existe plus paste_eover='$1' ne peut tre cras paste_eself=Vous ne pouvez coller un fichier par-dessus lui-mme paste_emfailed=Impossible de dplacer '$1' paste_ecfailed=Impossible de copier '$1' over_title=Le fichier existe over_msg=Le fichier $1 existe dj. Utiliser le champ ci-dessous pour entrer un nouveau fichier pour le fichier coll. over_new=Nouveau nom de fichier:: over_ok=Ok upload_efailed=Impossible d'ouvrir l'envoie '$1' upload_title=Envoie de Fichier upload_file=Fichier envoyer upload_dir=Envoyer dans un rpertoire upload_ok=Envoie upload_conv=Convertir les retours de chariot en format DOS? upload_efile=Aucun fichier n'ont t slectionn pour envoyer. upload_edir=Le rpertoire d'envoi n'existe pas. upload_eperm=Vous n'tes pas autoris crer '$1' upload_ewrite=Impossible d'crire dans '$1' : $2 find_eaccess=Vous n'tes pas autoris d'accder '$1' find_eexist='$1' n'existe pas dans '$2' find_edir='$1' n'est pas un rpertoire dans '$2' cancel=Annuler chmod_eaccess=Vous n'tes pas autoris d'accder '$1' chmod_euser=$1 : usager inexistant chmod_egroup=$1 : groupe inexistant chmod_elink=lien symbolique impossible : $1 chmod_echown=Impossible de changer de propritaire : $1 chmod_echmod=Impossible de changer de permission : $1 copy_efrom=Vous n'tes pas autoris copier de '$1' copy_eto=Vous n'tes pas autoris copier vers '$1' copy_elink=lien symbolique impossible : $1 delete_eaccess=Vous n'tes pas autoris supprimer '$1' list_eaccess=Vous n'tes pas autoris d'accder ce rpertoire list_edir=Echec du listage de $1 : $2 move_eto=Vous n'tes pas autoris dplacer vers '$1' move_afrom=Vous n'tes pas autoris dplacer '$1' acl_user=Accder au systme de fichier en tant un usager acl_user_def=Pareil que le login Webmin acl_umask=Dmasquer tout nouveau fichier acl_follow=Toujours suivre les liens symboliques? acl_dirs=Seulement accs aux rpertoires acl_home=Inclure le rpertoire personnel de l'utilisateur Webmin share_title=Partage share_samba=Windows share_nfs=NFS share_son=Partage de fichiers Windows activ share_soff=Partage de fichiers Windows dsactiv share_writable=En criture ? share_available=Actuellement disponible ? share_sheader=Options de partage share_only=Seulement share_guest=Accs Invit ? share_comment=Commentaire share_nheader=Options d'export NFS share_non=Partage de fichiers NFS activ share_noff=Partage de fichiers NFS dsactiv share_desc=Description share_ro=Machines en lecture seule share_rw=Machines en lecture/criture share_root=Machines avec accs root share_none=Aucune share_all=Toutes share_listed=Listes ... share_host=Machines share_opts=Options share_s0=Ne faire confiance personne share_s1=Faire confiance aux non-root share_s2=Faire confiance tout le monde share_lro=Lecture seule share_lrw=Lecture-criture log_create_export=Export NFS $1 cr log_modify_export=Export NFS $1 modifi log_delete_export=Export NFS $1 supprim log_create_share=Ressource partage Samba $1 cre log_modify_share=Ressource partage Samba $1 modifie log_delete_share=Ressource partage Samba $1 supprime log_save=Fichier $1 sauv log_chmod=Permissions modifies sur le fichier $1 log_mkdir=Rpertoire $1 cr log_upload=Fichier $1 tlcharg log_link=Lien symbolique de $1 vers $2 cr log_relink=Lien symbolique de $1 vers $2 modifi log_copy=Lien symbolique de $1 vers $2 copi log_move=Fichier renomm de $1 en $2 log_delete=Fichier $1 supprim search_eaccess=Vous n'avez pas le droit de chercher dans ce rpertoire search_title=Trouver des fichiers search_ok=Chercher maintenant search_dir=Rpertoire de recherche search_match=Pour les fichiers correspondant search_user=Possd par utilisateur search_group=Possd par groupe search_any=N'importe search_type=Type de fichier search_types_=N'importe search_types_f=Fichier search_types_d=Rpertoire search_types_l=Lien symbolique search_types_p=Tube nomm search_size=Taille de fichier search_more=Plus de search_less=Moins de search_xdev=Chercher au-del des points de montage ? search_edir=Rpertoire de recherche manquant ou invalide search_ematch=Expression rationnelle manquante search_euser=Nom d'utilisateur manquant search_egroup=Nom de groupe manquant search_esize=La taille de fichier doit tre un entier search_crit=Critres de recherche search_list=Rsultats de la recherche file/lang/de0100644000567100000120000003300310754361753012724 0ustar jcameronwheelacl_archive=Darf Archive von Verzeichnissen herunterladen? acl_archmax=Ja, wenn sie kleiner sind als acl_b=bytes acl_button_acl=ACL (bearbeite Posix ACL) acl_button_attr=ATTR (bearbeite XFS-Attribute) acl_button_copy=Kopieren, Ausschneiden und Einfügen acl_button_delete=Löschen (Dateien löschen) acl_button_edit=Bearbeiten (Textdatei bearbeiten) acl_button_ext=EXT (bearbeite EXT-Attribute) acl_button_info=Info (bearbeite Dateirechte und -inhaberschaft) acl_button_makelink=Neu (Erzeuge symbolischen Link) acl_button_mkdir=Neu (Erzeuge Verzeichnis) acl_button_mount=Einbinden (Einbinden oder Aushängen von Dateisystemen) acl_button_new=Neu (Erzeuge Textdatei) acl_button_rename=Umbenennen (Datei umbenennen) acl_button_save=Speichern (heruntergeladene Datei) acl_button_search=Finde (Dateien finden) acl_button_sharing=Gemeinsamer Dateizugriff (richte Samba- und NFS Dateizugriff ein) acl_button_upload=Hochladen (lade Dateien eines Clients hoch) acl_buttons=Verfügbare Knöpfe in der Toolbar acl_chroot=ChangeRoot-Verzeichnis für den gesamten Dateimanager acl_dirs=Erlaube nur Zugriff auf Verzeichnisse acl_dostounix=Darf DOS-"Neue Zeile"-Zeichen konvertieren? acl_follow=Folge immer symbolischen Links? acl_fyes=Wenn Benutzer übereinstimmt acl_goto=Öffne erstes erlaubtes Verzeichnis? acl_home=Das Heimatverzeichnis des Webmin-Benutzers einbinden? acl_log=Alle Dateiänderungen protokollieren? acl_max=Maximale Hochladegröße acl_nodirs=Verweigere Zugriff auf Verzeichnisse acl_relto=(relativ zu jedem ChangeRoot-Verzeichnis) acl_ro=Nur-Lesen-Modus? acl_umask=Umask für neue Dateien acl_unarchive=Darf hochgeladene Archivdateien auspacken? acl_unarchive0=$nein acl_unarchive1=$ja acl_unarchive2=Versuche immer acl_unlim=Unbegrenzt acl_user=Greife als Benutzer auf Dateien auf dem Server zu acl_user_def=Wie Webmin-Benutzer acltype_default_group=Standard-Gruppe acltype_default_mask=Standard-Maske acltype_default_other=Andere Standards acltype_default_user=Standard-Benutzer acltype_group=Gruppe acltype_mask=Maske acltype_other=Andere acltype_user=Benutzer attr_add=Attribut hinzufügen attr_create=Attribut hinzufügen attr_eattrs=Konnte Attribute nicht lesen: $1 attr_edit=Attribut bearbeiten attr_efailed=Konnte Attribute für $1 nicht setzen: $2 attr_efs=Dateisystem $1 unterstützt keine Attribute attr_ename=Fehlender Attributname attr_name=Attributname attr_title=Dateiattribute für $1 attr_value=Attribut Wert cancel=Abbrechen chmod_eaccess=Sie haben keine Berechtigung zum Zugriff auf '$1' chmod_echmod=chmod schlug fehl : $1 chmod_echown=chown schlug fehl : $1 chmod_efollow=Sie dürfen keine symbolischen Links bearbeiten chmod_egroup=$1 : Gruppe nicht gefunden chmod_elink=Symbolischer Link schlug fehl : $1 chmod_euser=$1 : Benutzer nicht gefunden close=Schließen copy_efrom=Sie haben keine Berechtigung aus '$1' zu kopieren copy_elink=Symbolischer Link schlug fehl : $1 copy_eto=Sie haben keine Berechtigung in '$1' zu kopieren ddir_rusure=Um den Inhalt von $1 als Archivdatei herunterzuladen, klicken Sie bitte auf den Archivbutton. ddir_tar=TAR ddir_tgz=TAR.GZ ddir_title=Download-Verzeichnis ddir_zip=ZIP delete_ddesc=Sind Sie sicher, daß Sie das Verzeichnis $1 und alle Unterverzeichnisse unwiderruflich löschen wollen? delete_dtitle=Lösche Verzeichnis delete_eaccess=Sie haben keine Berechtigung '$1' zu löschen delete_efailed=Fehler beim Löschen von $1 : $2 delete_fdesc=Sind Sie sicher, dass Sie die Datei $1 unwiderruflich löschen wollen? delete_ftitle=Lösche Datei delete_mdesc=Sind Sie sicher, dass Sie diese Dateien und Verzeichnisse permanent löschen wollen? : delete_mtitle=Mehrere Dateien löschen eacl_aclname=Anwenden auf eacl_aclperms=Berechtigungen eacl_acltype=ACL-Typ eacl_add=ACL des Typs hinzufügen : eacl_create=ACL einrichten eacl_eacls=Konnte ACLs nicht einlesen: $1 eacl_edefaults=Wenn eine Datei eine Standard-ACL hat, dann muß ein Standard-Benutzer, eine -Gruppe und andere ACLs eingerichtet sein. eacl_edefmask=Es kann nur einen Standard-ACL-Eintrag geben eacl_edit=ACL bearbeiten eacl_efailed=Konnte ACL für $1 nicht setzen : $2 eacl_efs=Dateisystem $1 unterstützt keine ACLs eacl_emask=Es kann nur einen ACL-Eintrag geben eacl_eowner=Benutzer oder Gruppe nicht angegeben eacl_group=Datei-Gruppe $1 eacl_owner=Datei-Besitzer eacl_remove=ACL entfernen eacl_title=ACL für $1 eacl_user=Datei-Besitzer $1 eattr_A=Zugriffszeit nicht ändern eattr_S=Nach Schreiben immer synchronisieren eattr_a=Kann nur an Datei anhängen eattr_c=Datei auf Festplatte komprimieren eattr_d=Nicht mit dump sichern eattr_i=Keine Änderungen zulassen eattr_s=Beim Löschen mit Null-Blöcken überschreiben eattr_u=Inhalte für Wiederherstellung sichern ebutton=Diese Funktion ist nicht verfügbar edit_all=Alles ersetzen edit_eaccess=Sie haben keine Berechtigung die Datei '$1' zu speichern edit_efollow=Sie dürfen nicht auf den symbolischen Link '$1' schreiben edit_elength=Datei wurde abgeschnitten! edit_enormal=Nur normale Dateien können bearbeitet werden edit_eover=$1 kann nicht überschrieben werden edit_esave=Fehler beim Speichern der Datei : $1 edit_filename=Dateiname: edit_find=Finde edit_goto=Gehe zu edit_gotoline=Gehe zu Zeile edit_notfound=Der Text $1 wurde nicht gefunden edit_replace=Ersetzen edit_replaceby=Ersetzen mit edit_saveclose=Speichern & Schliessen edit_searchfor=Suchen nach edit_title=Bearbeite $1 edit_title2=Erstelle Datei eopen=Download gescheitert: $1 ext_eattrs=Konnte EXT-Attribute nicht lesen : $1 ext_efailed=Konnte EXT-Attribute für $1 nicht lesen : $2 ext_efs=Dateisystem $1 unterstützt keine EXT-Attribute ext_header=EXT-Datei-Attribute ext_title=EXT-Datei-Attribute für $1 facl_eaccess=Sie dürfen keine ACLs für diese Datei setzen file_type0=Verzeichnis file_type1=Textdatei file_type2=Bilddatei file_type3=Binäre Datei file_type4=Datei file_type5=Symbolischer Link file_type6=Gerätedatei file_type7=Pipe find_eaccess=Sie haben keine Berechtigung um auf $1 zuzugreifen find_edir=$1 ist kein Verzeichnis in $2 find_eexist=$1 existiert nicht in $2 index_eremote=Für diesen Unix-Benutzer gibt es keine Webmin-Anmeldung $1. index_nojava=Dieses Modul benötigt Java. Entweder unterstützt Ihr Browser kein Java oder Java ist nicht richtig installiert. index_title=Datei-Manager info_apply=Änderungen anwenden auf info_apply1=Nur dieses Verzeichnis info_apply2=Dieses Verzeichnisse und seine Dateien info_apply3=Dieses Verzeichnis und alle Unterverzeichnisse info_efailed=Fehler beim Update von $1 : $2 info_exec=Ausführen info_file=Datei info_group=Gruppe: info_link=Link nach: info_list=Liste info_mod=Verändert: info_octal=Oktal: info_other=Andere: info_own=Besitzer info_path=Pfad: info_perms=Rechte info_read=Lesen info_setgid=SetGID: info_setgid2=Dateien erben Gruppen info_setgid3=Führe aus als Gruppe info_setuid=SetUID: info_setuid2=Führe aus als Benutzer info_size=Größe: info_sticky=Sticky: info_sticky2=Nur Besitzer darf Dateien löschen info_type=Typ: info_user=Benutzer: info_write=Schreiben link_eexists=$1 existiert bereits link_efailed=Link schlug fehl : $1 link_efollow=Sie haben keine Berechtigung symbolische Links anzulegen link_efrom=Sie haben keine Berechtigung von '$1' zu verknüpfen link_efrom2=Sie dürfen nicht von '$1' linken link_from=Link von: link_title=Erstelle Link link_to=Link zu: list_eaccess=Sie haben keine Berechtigung zum Zugriff auf dieses Verzeichnis list_edir=Konnte $1 nicht auflisten : $2 log_acl=ACL für Datei $1 gesetzt log_attr=Attribute für Datei $1 gesetzt log_chmod=Berechtigungen für Datei $1 geändert log_copy=Datei von $1 nach $2 kopiert log_create_export=NFS-Export $1 erzeugt log_create_share=Samba-Freigabe $1 erzeugt log_delete=Datei $1 gelöscht log_delete_export=NFS-Export $1 gelöscht log_delete_share=Samba-Freigabe $1 gelöscht log_link=Symbolischer Link von $1 nach $2 erzeugt log_mkdir=Verzeichnis angelegt $1 log_modify_export=NFS-Export $1 geändert log_modify_share=Samba-Freigabe $1 geändert log_move=Datei von $1 nach $2 verschoben log_relink=Symbolischer Link von $1 nach $2 geändert log_save=Datei $1 gespeichert log_upload=Datei $1 hochgeladen mkdir_dir=Neues Verzeichnis: mkdir_eaccess=Sie haben keine Berechtigung, '$1' anzulegen mkdir_eexists=$1 existiert bereits mkdir_efailed=Erstellen des Verzeichnisses schlug fehl : $1 mkdir_title=Neues Verzeichnis mount_eaccess=Sie dürfen keine Dateisysteme einbinden mount_efstab=Es existiert kein Dateisystem an diesem Einhängepunkt mount_epoint=$1 ist kein Einhängepunkt mount_err1=Konnte $1 nicht einhängen : $2 mount_err2=Konnte $1 nicht aushängen : $2 mount_rusure1=Sind Sie sicher, dass Sie $1 in $2 einhängen wollen ? mount_rusure2=Sind Sie sicher, dass Sie $1 von $2 aushängen wollen ? mount_title1=Dateisystem einhängen mount_title2=Dateisystem aushängen move_afrom=Sie haben keine Berechtigung '$1' zu verschieben move_eto=Sie haben keine Berechtigung, Dateien nach '$1' zu verschieben over_msg=Die Datei $1 existiert bereits. Benutzen Sie das Feld unten um einen anderen Namen für die neue Datei anzugeben. over_new=Neuer Dateiname: over_ok=Ok over_title=Datei existiert paste_ecfailed=Kopieren schlug fehl : $1 paste_ecopy=Vor dem Einfügen mußen Sie kopieren oder ausschneiden paste_egone=Kopierte Datei $1 existiert nicht mehr paste_emfailed=Verschieben schlug fehl : $1 paste_eover=$1 kann nicht überschrieben werden paste_eself=Sie können keine Datei auf sich selber einfügen rename_eexists=Es existiert bereits eine Datei mit dem Namen $1 rename_efailed=Umbennenen schlug fehl : $1 rename_enew=Sie haben keine Berechtigung zu '$1' umzubennenen rename_eold=Sie haben keine Berechtigung, '$1' umzubennenen rename_new=Neuer Name: rename_ok=Umbenennen rename_old=Alter Name: rename_title=Umbennenen von $1 right_date=Datum right_group=Gruppe right_name=Name right_size=Größe right_user=Benutzer search_any=Alle search_crit=Suchkriterien search_dir=Suche in Verzeichnis search_eaccess=Sie haben keine Berechtigung, dieses Verzeichnis zu durchsuchen search_edir=Fehlendes oder ungültiges Verzeichnis search_egroup=Fehlender Gruppen-Name search_ematch=Fehlender anwendbarer regulärer Ausdruck search_esize=Dateigröße muß eine Ganzzahl sein search_euser=Fehlender Benutzername search_group=Im Besitz der Gruppe search_less=Weniger als search_list=Suchergebnisse search_match=auf Dateien passend search_more=Mehr als search_ok=Jetzt suchen search_size=Dateigrösse search_title=Dateien suchen search_type=Datei-Typ search_types_=Alle search_types_d=Verzeichnis search_types_f=Datei search_types_l=Symbolischer Link search_types_p=Benannte Pipe search_user=Im Besitz des Benutzers search_xdev=Hinter Einhängepunkten suchen? share_all=Alle share_available=Momentan aktiv? share_comment=Kommentar share_desc=Beschreibung share_guest=Gast-Zugriff share_host=Hosts share_listed=Aufgelistet.. share_lro=Nur-Lesen share_lrw=Lesen-Schreiben share_nfs=NFS share_nheader=NFS-Exporteinstellungen share_noff=NFS-Dateifreigabe deaktiviert share_non=NFS-Dateifreigabe aktiviert share_none=Keine share_only=Nur share_opts=Einstellungen share_ro=Nur-Lesen Hosts share_root=Root-Zugriff Hosts share_rw=Lesen-Schreiben Hosts share_s0=Niemandem trauen share_s1=Nicht-Root trauen share_s2=Jedem trauen share_samba=Windows share_sheader=Windows-Freigabeeinstellungen share_soff=Windows-Datei-Freigabe deaktiviert share_son=Windows-Datei-Freigabe aktiviert share_title=Freigabe share_writable=Beschreibbar? switch_euser=Dieser Unix-Benutzer existiert nicht! top_attr=Attribute top_config=Konfig. top_copy=Kopieren top_cut=Ausschneiden top_delete=Löschen top_down=Speichern top_eacl=ACL top_edit=Bearbeiten top_ext=EXT top_info=Info top_mount=Mount top_new=Neu top_paste=Einfügen top_refresh=Neu laden top_rename=Umbenennen top_ret=Webmin top_search=Suchen top_share=Freigabe top_upload=Hochladen upload_already=Die Datei $1 existiert bereits. Möchten Sie diese überschreiben? upload_conv=Konvertiere DOS Zeilenvorschübe? upload_dir=Hochladen zu Verzeichnis upload_edir=Hochlade-Verzeichnis existiert nicht. upload_efailed=Fehler beim Öffnen der hochzuladenden Datei : $1 upload_efile=Keine Datei zum Hochladen ausgewählt. upload_elink=Kann auf einen symbolischen Link nicht hochladen upload_eperm=Sie haben keine Berechtigung $1 zu erstellen upload_ewrite=Fehler beim Schreiben von $1 : $2. upload_file=Datei zum Hochladen upload_ok=Hochladen upload_title=Datei hochladen upload_yes=Ja, dann löschen upload_zip=ZIP- oder TAR-Dateien dekomprimieren? view_eaccess=Sie haben keine Berechtigung zum Zugriff auf $1 view_earchive=Sie dürfen keine Archive herunterladen view_earchmax=Das ausgewählte Verzeichnis ist größer als die maximal erlaubte Größe für Archive ($1 bytes) view_ecmd=Der Befehl $1, der zum Erzeugen von Archiven benötigt wird, ist nicht installiert. view_ecomp=Konnte Archiv nicht erzeugen: $1 view_edir=Ein Archiv kann nur für ein Verzeichnis angelegt werden view_enormal=Nur normale Dateien können betrachtet werden view_enormal2=Nur normale Dateien können lokal gespeichert werden. view_eopen=Fehler beim Öffnen von $1 : $2 zip_ecmd=Fehlendes $1 Kommando zip_ename=Scheint keine ZIP-, TAR- oder TAR.GZ-Datei zu sein. zip_err=Konnte Datei nicht auspacken: $1 zip_euntar=Un-TAR gescheitert: $1 zip_euntar2=Dekomprimierung und Un-TAR gescheitert: $1 zip_eunzip=Un-ZIP gescheitert: $1 file/lang/sv0100644000567100000120000001024510754361753012767 0ustar jcameronwheelindex_title=Filhanterare index_nojava=Denna modul behver java fr att fungera, men din lsare stdjer inte java top_open=ppna top_view=Visa top_edit=ndra top_refresh=Uppdatera top_info=Info top_delete=Ta bort top_new=Ny top_upload=Ladda in top_rename=Byt namn top_copy=Kopiera top_cut=Klipp ut top_paste=Klistra in right_name=Namn right_size=Storlek right_user=Anvndare right_group=Grupp right_date=Datum edit_enormal=Du kan bara ndra standardfiler edit_title=ndrar i $1 edit_title2=Skapar fil edit_filename=Filnamn: edit_eover=$1 fr inte skrivas ver edit_esave=Det gick inte att spara filen: $1 edit_eaccess=Du fr inte spara filen '$1' info_file=Fil info_path=Skvg: info_type=Typ: info_size=Storlek: info_mod=ndrad: info_link=Lnk till: info_perms=Rttigheter info_user=Anvndare: info_group=Grupp: info_other=vriga: info_sticky=Sticky: info_sticky2=Det r bara gare som fr ta bort filer info_own=gare info_setuid=Setuid: info_setuid2=Utfr som anvndare info_setgid=Setgid: info_setgid2=Filer rver grupp info_setgid3=Utfr som grupp info_apply=Utfr ndringarna p info_apply1=Endast denna katalog info_apply2=Denna katalog och filerna i den info_apply3=Denna katalog och dess underkataloger info_efailed=Det gick inte att uppdatera $1 : $2 info_read=Ls info_write=Skriv info_list=Lista info_exec=Exec delete_dtitle=Ta bort katalog delete_ftitle=Ta bort fil delete_ddesc=Vill du verkligen ta bort katalogen $1 med innehll permanent? delete_fdesc=Vill du verkligen ta bort filen $1 permanent? delete_efailed=Det gick inte att ta bort $1 : $2 mkdir_title=Ny katalog mkdir_dir=Ny katalog: mkdir_eexists=$1 finns redan mkdir_efailed=Det gick inte att skapa katalogen: $1 mkdir_eaccess=Du fr inte skapa '$1' link_title=Skapa lnk link_from=Lnk frn: link_to=Lnk till: link_eexists=$1 finns redan link_efailed=Det gick inte att lnka: $1 link_efrom=Du fr inte lnka frn '$1' link_efollow=Du fr inte skapa symboliska lnkar rename_title=Byt namn p $1 rename_old=Gammalt namn: rename_new=Nytt namn: rename_ok=Byt namn rename_eexists=Det finns redan en fil som heter $1 rename_efailed=Det gick inte att byta namn: $1 rename_eold=Du fr inte byta namn p '$1' rename_enew=Du fr inte byta namn till '$1' file_type0=Katalog file_type1=Textfil file_type2=Bildfile file_type3=Binrfil file_type4=Fil file_type5=Symbolisk lnk file_type6=Device-fil file_type7=Pipe view_enormal=Endast normala filer kan visas view_eaccess=Du fr inte komma t $1 view_eopen=Det gick inte att ppna $1: $2 paste_ecopy=Ngot mste klippas ut eller kopieras fr att du ska kunna klistra in paste_egone=Den kopierade filen $1 finns inte lngre paste_eover=$1 fr inte skrivas ver paste_eself=En fil fr inte klistras in ver sig sjlv paste_emfailed=Det gick inte att flytta: $1 paste_ecfailed=Det gick inte att kopiera: $1 over_title=Filen finns over_msg=Filen $1 finns redan. Skriv in ett nytt filnamn fr den inklistrade filen i fltet nedan. over_new=Nytt filnamn: over_ok=OK upload_efailed=Det gick inte att stta igng nedladdningen: $1 upload_title=Ladda ned fil upload_file=Fil att ladda ned upload_dir=Ladda ned till katalog upload_ok=Ladda ned upload_conv=Konvertera DOS-radbrytningar? upload_efile=Du har inte valt ngon fil som ska laddas ned. upload_edir=Du har inte valt ngon katalog att ladda ned till. upload_eperm=Du fr inte skapa $1 upload_ewrite=Det gick inte att skriva till $1: $2. find_eaccess=Du fr inte komma t $1 find_eexist=$1 finns inte i $2 find_edir=$1 r inte en katalog i $2 cancel=Avbryt chmod_eaccess=Du fr inte komma t '$1' chmod_euser=$1 :anvndaren finns inte chmod_egroup=$1 :gruppen finns inte chmod_elink=symlink misslyckades: $1 chmod_echown=chown misslyckades: $1 chmod_echmod=chmod misslyckades: $1 copy_efrom=Du fr inte kopiera frn '$1' copy_eto=Du fr inte kopiera till '$1' copy_elink=symlink misslyckades: $1 delete_eaccess=Du fr inte ta bort '$1' list_eaccess=Du fr inte komma t denna katalog list_edir=Det gick inte att lista $1: $2 move_eto=Du fr inte flytta filer till '$1' move_afrom=Du fr inte flytta p '$1' acl_user=Kom t filer p servern som anvndare acl_umask=Umask fr nya filer acl_follow=Ska symboliska lnkar alltid fljas? acl_dirs=Tillt endast tkomst till kataloger file/lang/it0100664000567100000120000003532210754361753012760 0ustar jcameronwheelacl_archive=Può scaricare gli archivi dalle directory? acl_archmax=Si, se più piccoli di acl_b=byte acl_button_acl=ACL (modifica l'ACL Posix) acl_button_attr=Attr (modifica gli attributi XFS) acl_button_copy=Copia, Taglia e Incolla acl_button_delete=Cancella (cancella i file) acl_button_edit=Modifica (modifica i file di testo) acl_button_ext=EXT (modifica gli attributi EXT) acl_button_info=Info (modifica i permessi e i proprietari dei file) acl_button_makelink=Nuovo (crea link simbolico) acl_button_mkdir=Nuovo (crea una directory) acl_button_mount=Monta (monta o smonta un filesystem) acl_button_new=Nuovo (crea un file di testo) acl_button_preview=Anteprima (visualizza un'anteprima di un immagine) acl_button_rename=Rinomina (rinomina un file) acl_button_save=Salva (scarica un file) acl_button_search=Trova (trova i file) acl_button_sharing=Condivisione (imposta una condivisione Samba o NFS) acl_button_upload=Invia (invia un file da un client o lo preleva sul server) acl_buttons=Pulsanti disponibili nella barra degli strumenti acl_contents=Permettere la ricerca di contenuti nel file? acl_dirs=Autorizza accesso alle sole directory acl_dostounix=Può convertire i ritorni a capo di Windows? acl_filesystems=Può vedere i punti di montaggio dei filesystem? acl_follow=Seguire sempre i link simbolici? acl_fyes=Se il proprietario corrisponde acl_goto=Aprire la prima directory autorizzata? acl_home=Includi la home directory dell'utente Webmin acl_log=Registrare tutte le modifiche ai file? acl_max=Dimensione massima di upload acl_nodirs=Nega l'accesso alle directory acl_noperms=Può modificare i permessi ai file? acl_nousers=Può cambiare il proprietario di un file? acl_ro=Modalità sola lettura? acl_umask=Umask per i nuovi file acl_unarchive=Può estrarre gli archivi inviati? acl_unarchive0=$no acl_unarchive1=$si acl_unarchive2=Prova sempre a acl_unlim=Illimitato acl_user=Accesso file sul server come utente acl_user_def=Uguale al login Webmin acltype_default_group=Gruppo di default acltype_default_mask=Maschera di default acltype_default_other=Altri di default acltype_default_user=Utente di default acltype_group=Gruppo acltype_mask=Maschera acltype_other=Altri acltype_user=Utente attr_add=Aggiungi Attributo attr_create=Aggiungi Attributo attr_eattrs=Lettura attributi non riuscita : $1 attr_edit=Modifica Attributo attr_efailed=Impostazione degli attributi per $1 non riuscito: $2 attr_efs=Il filesystem $1 non supporta attributi attr_ename=Nome attributo mancante attr_name=Nome Attributo attr_title=Attributi per $1 attr_value=Valore Attributo cancel=Annulla chmod_eaccess=Non sei autorizzato ad accedere a '$1' chmod_echmod=chmod non riuscito: $1 chmod_echown=chown non riuscito: $1 chmod_efollow=Non sei autorizzato a modificare link simbolici chmod_egroup=$1 : gruppo non esistente chmod_elink=Link simbolico non riuscito: $1 chmod_euser=$1 : utente non esistente close=Chiudi copy_efrom=Non sei autorizzato a copiare da '$1' copy_elink=Link simbolico non riuscito: $1 copy_eto=Non sei autorizzato a copiare in '$1' ddir_rusure=Per scaricare i contenuti di $1 come archivio clicca su uno dei pulsanti relativi al tipo di archivio desiderato ddir_tar=TAR ddir_tgz=TAR.GZ ddir_title=Scarica directory ddir_zip=ZIP delete_ddesc=Sei sicuro di voler cancellare definitivamente la directory $1 e tutto il suo contenuto? delete_dtitle=Cancellazione directory delete_eaccess=Non sei autorizzato a cancellare '$1' delete_efailed=Cancellazione di $1 non riuscita: $2 delete_eroot=La directory '$1' è una di quelle su cui hai un accesso limitato, quindi non può essere rimossa delete_fdesc=Sei sicuro di voler cancellare definitivamente il file $1 ? delete_ftitle=Cancellazione file delete_mdesc=Sei sicuro di voler cancellare definitivamente questi file e directory? : delete_mtitle=Cancellazione multipla di file eacl_aclname=Applica a eacl_aclperms=Permessi eacl_acltype=Tipo ACL eacl_add=Aggiungi ACL di tipo : eacl_create=Crea ACL eacl_eacls=Lettura ACL non riuscita: $1 eacl_edefaults=Se il file ha ACL di default, deve avere utente, gruppo e altre ACL di default eacl_edefmask=Pu�esserci al massimo una maschera ACL di default eacl_edit=Modifica ACL eacl_efailed=Impostazione di ACL per $1 non riuscita: $2 eacl_efs=Il filesystem $1 non supporta ACL eacl_emask=Pu�esserci al massimo una maschera ACL eacl_eowner=Utente o gruppo da applicare mancante eacl_group=Gruppo file $1 eacl_owner=Proprietario File eacl_remove=Rimuovi ACL eacl_title=ACL per $1 eacl_user=Proprietario file $1 eattr_A=Non aggiornare il tempo di accesso eattr_S=Sync dopo la scrittura eattr_a=Puoi solo appendere al file eattr_c=Dati compressi sul disco eattr_d=Non fare backup con dump eattr_i=Non permettere modifiche eattr_s=Azzera blocchi in cancellazione eattr_u=Salva il contenuto per de-cancellazione ebutton=Questa funzione non è disponibile edit_all=Sostituisci tutto edit_eaccess=Non sei autorizzato a salvare '$1' edit_efollow=Non hai i permessi per scrivere sul link simbolico '$1' edit_elength=Il file è troncato! edit_enormal=Puoi modificare solo file normali edit_eover=$1 non può�essere sovrascritto edit_esave=Salvataggio file non riuscito: $1 edit_filename=Nome file: edit_find=Cerca edit_goto=Vai a edit_gotoline=Vai alla riga edit_notfound=Il testo $1 non è�stato trovato edit_replace=Sostituisci edit_replaceby=Sostituisci con edit_saveclose=Salva & Esci edit_searchfor=Cerca edit_textmode=Passa alla modalità testo edit_title=Modifica di $1 edit_title2=Creazione file eopen=Download non riuscito: $1 ext_eattrs=Lettura attributi EXT non riuscita: $1 ext_efailed=Impostazione degli attributi per $1 non riuscita: $2 ext_efs=Il filesystem $1 non supporta attributi EXT ext_header=Attributi EXT ext_title=Attributi EXT per $1 extract_err=Estrazione del file non riuscita: $1 extract_etype=Sono i file possono essere estratti extract_rusure=Sei sicuro di voler estrarre il file compresso: extract_rusure2=I file esistenti nella stessa directory potrebbero essere sovrascritti. extract_title=Estrai file compresso extract_yes=Si, e dopo rimuovilo facl_eaccess=Non sei autorizzato a settare ACL per questo file file_type0=Directory file_type1=File di testo file_type2=File immagine file_type3=File binario file_type4=File file_type5=Link simbolico file_type6=File Device file_type7=Pipe find_eaccess=Non sei autorizzato ad accedere $1 find_edir=$1 non �una directory in $2 find_eexist=$1 non esiste in $2 history_button=Cronologia history_ok=Vai a history_title=Cronologia dei percorsi html_efailed=Apertura dell'editor HTML non riuscita: $1 html_err=Salvataggio del file HTML non riuscito html_save=Salva e chiudi html_title=Modifica il file HTML html_title2=Crea file HTML index_eremote=Non esiste un utente Unix corrispondente il login Webmin $1. index_index=Torna alla pagina principale di Webmin. index_nojava=Questo modulo richiede java per funzionare, il tuo browser non supporta java index_title=File Manager info_apply=Applica modifiche a info_apply1=Solo questa directory info_apply2=Questa directory e i suoi file info_apply3=Questa directory e tutte le subdirectory info_bytes=Byte totali: info_dirs=Directory totali: info_efailed=Aggiornamento di $1 non riuscito: $2 info_esize=Non è stato possibile calcolare la dimensione: $1 info_exec=Esecuzione info_file=File info_files=File totali: info_getsize=Calcola dimensione info_group=Gruppo: info_link=Link a: info_list=Elenco info_mod=Modificato: info_octal=Ottale: info_other=Altri: info_own=Possesso info_path=Percorso: info_perms=Permessi info_read=Lettura info_setgid=Setgid: info_setgid2=I file ereditano il gruppo info_setgid3=Esegui come gruppo info_setuid=Setuid: info_setuid2=Esegui come utente info_size=Dimensione: info_sizeheader=Dimensione directory info_sticky=Sticky: info_sticky2=Solo i proprietari possono cancellare file info_type=Tipo: info_user=Utente: info_write=Scrittura link_eexists=$1 è già esistente link_efailed=Link non riuscito : $1 link_efollow=Non sei autorizzato a creare link simbolici link_efrom=Non sei autorizzato a fare un link da '$1' link_efrom2=Non hai i permessi per collegarti da '$1' link_from=Link da: link_title=Creazione Link link_to=Link a: list_eaccess=Non sei autorizzato ad accedere questa directory list_edir=Elenco di $1 non riuscito : $2 log_acl=Settati ACL al file $1 log_attr=Settati attributi del file $1 log_chmod=Cambiati permessi del file $1 log_copy=Copiato file $1 a $2 log_create_export=Creato export NFS $1 log_create_share=Creato share Samba $1 log_delete=Cancellato file $1 log_delete_export=Cancellato export NFS $1 log_delete_share=Cancellato share Samba $1 log_link=Creato link simbolico $1 a $2 log_mkdir=Creata directory $1 log_modify_export=Modificato export NFS $1 log_modify_share=Modificato share Samba $1 log_move=Spostato file $1 a $2 log_relink=Modificato link simbolico $1 a $2 log_save=File $1 salvato log_upload=Trasferito file $1 mkdir_dir=Nuova directory: mkdir_eaccess=Non sei autorizzato a creare '$1' mkdir_eexists=$1 gi�esistente mkdir_efailed=Creazione directory non riuscita: $1 mkdir_title=Nuova Directory mount_eaccess=Non sei autorizzato a montare filesystem mount_efstab=Non esiste filesystem in questo punto di montaggio mount_epoint=$1 non è un punto di montaggio mount_err1=Montaggio di $1 non riuscito : $2 mount_err2=Smontaggio di $1 non riuscito : $2 mount_rusure1=Sei sicuro di voler montare $1 in $2 ? mount_rusure2=Sei sicuro di voler smontare $1 da $2 ? mount_title1=Mount filesystem mount_title2=Un-mount filesystem move_afrom=Non sei autorizzato a muovere '$1' move_eto=Non sei autorizzato a muovere in '$1' over_msg=Il file $1 è già esistente. Usa il campo in basso per inserire un nuovo nome per il file incollato. over_new=Nuovo nome: over_ok=Vai over_title=Il File Esiste Gi�over_msg=Il file $1 esiste gi� Usa il campo qui sotto per inserire un nuovo nome per il file incollato. paste_ecfailed=Copia non riuscita : $1 paste_ecopy=Devi tagliare o copiare prima di incollare paste_egone=Il file copiato $1 non esite pi paste_emfailed=Spostamento non riuscito : $1 paste_eover=$1 non può essere sovrascritto paste_eself=Non puoi incollare un file sopra se stesso preview_bad=Non è stato possibile caricare l'immagine per l'anteprima preview_ecmd=Il comando $1 necessario per ridimensionare l'immagine non è installato preview_egd=Caricamento dell'immagine con GD non riuscito preview_eimage=E' possibile visualizzare l'anteprima solo per le immagini preview_etype2=$1 non è un formato di immagine supportato preview_title=Anteprima di $1 rename_eexists=Esiste già un file chiamato $1 rename_efailed=Rinominazione non riuscita : $1 rename_enew=Non sei autorizzato a rinominare a '$1' rename_eold=Non sei autorizzato a rinominare '$1' rename_eslash=Il nuovo nome file per $1 contiene un / rename_new=Nuovo nome: rename_ok=Rinomina rename_old=Vecchio nome: rename_title=Rinomina $1 right_date=Data right_group=Gruppo right_name=Nome right_size=Dimensione right_user=Utente search_any=Qualsiasi search_cont=Contenente il testo search_crit=Criterio di ricerca search_dir=Cerca directory search_down=Download search_eaccess=Non sei autorizzato a cercare questa directory search_edir=Directory di ricerca mancante o invalido search_edown=Non è stato selezionato nessun file di risultati delle ricerche da scaricare search_egroup=Nome gruppo mancante search_ematch=regexp di corrispondenza mancante o invalida search_esize=La dimensione del file deve essere un intero search_euser=Nome utente mancante o invalido search_group=Gruppo proprietario search_less=Meno di search_list=Risultati ricerca search_match=File corrispondenti search_more=Pi di search_ok=Esegui Ricerca search_size=Dimensione File search_title=Cerca file search_type=Tipo file search_types_=Qualsiasi search_types_d=Directory search_types_f=File search_types_l=Link simbolico search_types_p=Named pipe search_user=Utente proprietario search_xdev=Cerco sotto i mount? share_all=Tutti share_available=Attualmente attivo? share_comment=Commento share_desc=Descrizione share_guest=Accesso guest? share_host=Host share_listed=Elencati.. share_lro=Sola lettura share_lrw=Lettura scrittura share_nfs=NFS share_nheader=Opzioni export NFS share_noff=File sharing NFS disabilitato share_non=File sharing NFS abilitato share_none=Nessuno share_only=Solamente share_opts=Opzioni share_ro=Host sola lettura share_root=Host con accesso root access share_rw=Host lettura e scrittura share_s0=Non fidarti di nessuno share_s1=Fidati degli utenti non-root share_s2=Fidati di tutti share_samba=Windows share_sheader=Opzioni di sharing share_soff=File sharing windows disabilitato share_son=File sharing windows abilitato share_title=Sharing share_writable=Scrivibile? switch_euser=L'utente Unix non esiste! top_attr=Attributi top_config=Configura top_copy=Copia top_cut=Taglia top_delete=Cancella top_down=Salva top_eacl=ACL top_edit=Modifica top_efile=Nessun file selezionato top_ext=EXT top_extract=Estrai top_html=HTML top_info=Informazioni top_mount=Mount top_new=Nuovo top_paste=Incolla top_preview=Anteprima top_refresh=Ricarica top_rename=Rinomina top_ret=Indice top_search=Cerca top_share=Condivisione top_upload=Upload upload_already=Il file $1 esiste gi� Sei sicuro di volerlo sovrascrivere? upload_conv=Convertire nuovariga DOS? upload_dir=Trasferisci alla directory upload_edir=La directory di destinazine non esiste. upload_efailed=Inizio trasferimento non riuscito : $1 upload_efile=Nessun file selezionato per il trasferimento. upload_elink=Non è possibile fare l'upload ad un link simbolico upload_eperm=Non sei autorizzato a creare $1 upload_euser=L'utente selezionato non esiste. upload_ewrite=Scrittura $1 non riuscita : $2. upload_file=File da trasferire upload_ok=Trasferimento upload_title=Trasferisci file (upload) upload_user=Fai l'upload come utente upload_yes=Si, quindi rimuovilo upload_zip=Decomprimere il file ZIP o TAR? view_eaccess=Non sei autorizzato ad accedere $1 view_earchive=Non hai i permessi per scaricare gli archivi view_earchmax=La directory selezionata ha una dimensione che supera quella massima permessa per gli archivi ($1 byte) view_ecmd=Il comando $1 necessario per creare un archivio non è installato view_ecomp=Creazione dell'archivio non riuscita: $1 view_edir=Un archivio può essere creato solo per una directory view_enormal=Possono essere visualizzati solo file normali view_enormal2=Possono essere scaricati solo file normali view_eopen=Apertura di $1 non riuscita : $2 zip_ecmd=Comando $1 mancante zip_ename=Non sembra essere un file di tipo ZIP, TAR o TAR.GZ zip_err=Non è stato possibile estrarre il file: $1 zip_euntar=Estrazione TAR non riuscita: $1 zip_euntar2=Decompressione ed estrazione TAR non riuscita: $1 zip_eunzip=Estrazione ZIP non riuscita: $1 file/lang/bg0100664000567100000120000002410510754361753012731 0ustar jcameronwheelindex_title=File Manager index_nojava= java, java index_eremote= Unix Webmin $1. switch_euser=Unix ! top_ret=Index top_down= top_edit= top_refresh= top_info= top_eacl=ACL top_attr=. top_ext=EXT top_delete= top_new= top_upload=Upload top_rename= top_copy= top_cut= top_paste= top_share=Sharing top_mount=Mount top_search= top_config= right_name= right_size= right_user= right_group= right_date= edit_enormal= edit_title= $1 edit_title2= edit_filename=: edit_goto= edit_find= edit_gotoline= edit_replace= edit_all= edit_searchfor= edit_replaceby= edit_eover=$1 edit_esave= : $1 edit_eaccess= '$1' edit_notfound= $1 edit_saveclose= & info_file= info_path=: info_type=: info_size=: info_mod= : info_link= : info_perms= info_user=: info_group=: info_other= : info_octal=: info_sticky=Sticky: info_sticky2= info_own= info_setuid=Setuid: info_setuid2= info_setgid=Setgid: info_setgid2= info_setgid3= info_apply= info_apply1= info_apply2= info_apply3= info_efailed= $1 : $2 info_read= info_write= info_list= info_exec= eacl_eacls= ACL : $1 eacl_acltype=ACL eacl_aclname= eacl_aclperms= eacl_add= ACL : eacl_remove= ACL eacl_efs= $1 ACL eacl_create= ACL eacl_edit= ACL eacl_user= $1 eacl_group= $1 eacl_eowner= eacl_efailed= ACL $1 : $2 eacl_emask= mask ACL eacl_edefmask= - mask ACL eacl_title=ACL $1 eacl_owner= eacl_edefaults= ACL, , ACL. acltype_user= acltype_group= acltype_other= acltype_mask= acltype_default_user= acltype_default_group= acltype_default_other= acltype_default_mask= delete_mtitle= delete_dtitle= delete_ftitle= delete_ddesc= , $1 ? delete_fdesc= , $1 ? delete_mdesc= , ? : delete_efailed= $1 : $2 mkdir_title= mkdir_dir= : mkdir_eexists=$1 mkdir_efailed= : $1 mkdir_eaccess= '$1' link_title= link_from= : link_to= : link_eexists=$1 link_efailed= : $1 link_efrom= '$1' link_efollow= rename_title= $1 rename_old= : rename_new= : rename_ok= rename_eexists= $1 rename_efailed= : $1 rename_eold= '$1' rename_enew= '$1' file_type0= file_type1= file_type2= file_type3= file_type4= file_type5= file_type6= file_type7=Pipe view_enormal= view_enormal2= download- view_eaccess= $1 view_eopen= $1 : $2 paste_ecopy= "" paste_egone= $1 paste_eover=$1 paste_eself= "" paste_emfailed= : $1 paste_ecfailed= : $1 over_title= over_msg= $1 . . over_new= : over_ok= upload_efailed= upload : $1 upload_title=Upload upload_file= upload upload_dir=Upload upload_ok=Upload upload_conv= DOS ? upload_efile= upload. upload_edir=Upload . upload_eperm= $1 upload_ewrite= $1 : $2. upload_already= $1 . , ? find_eaccess= $1 find_eexist=$1 $2 find_edir=$1 $2 cancel= close= chmod_eaccess= '$1' chmod_euser=$1 : chmod_egroup=$1 : chmod_elink= : $1 chmod_echown= : $1 chmod_echmod= : $1 chmod_efollow= copy_efrom= '$1' copy_eto= '$1' copy_elink= : $1 delete_eaccess= '$1' list_eaccess= list_edir= $1 : $2 move_eto= '$1' move_afrom= '$1' acl_user= acl_user_def= Webmin login acl_umask=Umask acl_follow= ? acl_ro= ? acl_dirs= acl_home= home Webmin acl_log= ? acl_goto= ? share_title=Sharing share_samba=Windows share_nfs=NFS share_son=Windows share_soff=Windows share_writable= ? share_available= ? share_sheader=Sharing share_only= share_guest= ? share_comment= share_nheader= NFS share_non=NFS share_noff=NFS share_desc= share_ro= share_rw= share_root= share_none= share_all= share_listed=.. share_host= share_opts= share_s0= share_s1= share_s2= share_lro= share_lrw= log_create_export= NFS $1 log_modify_export= NFS $1 log_delete_export= NFS $1 log_create_share= Samba $1 log_modify_share= Samba $1 log_delete_share= Samba $1 log_save= $1 log_chmod= $1 log_mkdir= $1 log_upload=Upload- $1 log_link= $1 $2 log_relink= $1 $2 log_copy= $1 $2 log_move= $1 $2 log_delete= $1 log_attr= $1 log_acl= ACL $1 search_eaccess= search_title= search_ok= search_dir= search_match=, search_user= search_group= search_any= search_type= search_types_= search_types_f= search_types_d= search_types_l= search_types_p=Named pipe search_size= search_more= search_less=- search_xdev= -? search_edir= search_ematch= search_euser= search_egroup= search_esize= search_crit= search_list= facl_eaccess= ACL attr_eattrs= : $1 attr_efs= $1 attr_add= attr_name= attr_value= attr_efailed= $1 : $2 attr_title= $1 attr_create= attr_edit= attr_ename= ext_eattrs= EXT : $1 ext_efs= $1 EXT ext_title=EXT $1 ext_header=EXT ext_efailed= $1 : $2 eattr_A= eattr_a= eattr_c= eattr_d= backup dump eattr_i= eattr_s= eattr_S= sync eattr_u= mount_eaccess= mount_efstab= mounth point mount_epoint=$1 mount point mount_rusure1= , $1 $2 ? mount_rusure2= , $1 $2 ? mount_err1= $1 : $2 mount_err2= $1 : $2 mount_title1= mount_title2= file/lang/tr0100644000567100000120000002420410754361753012764 0ustar jcameronwheelacl_archive=Dizinlerin arivlerini indirebilir mi? acl_archmax=Evet, bundan daha kkse acl_b=byte acl_button_acl=ACL (Posix ACL dzenle) acl_button_copy=Kopyala, Kes ve Yaptr acl_button_delete=Sil (dosyalar sil) acl_button_edit=Dzenle (metin dosyasn dzenle) acl_button_info=Bilgi (dosya izinlerini ve sahipliini dzenle) acl_button_makelink=Yeni (sembolink link olutur) acl_button_mkdir=Yeni (dizin olutur) acl_button_mount=Mount (dosya sistemini mount et ya da umount et) acl_button_new=Yeni (metin dosyas olutur) acl_button_rename=Yeniden Adlandr (dosyay yeniden adlandr) acl_button_save=Kaydet (dosya indir) acl_button_search=Bul (dosya bul) acl_button_sharing=Paylatrma (Samba ve NFS dosya paylamn ayarla) acl_button_upload=Ykle (istemciden dosya ykle) acl_buttons=Ara ubuundaki eriilebilir butonlar acl_chroot=Dosya yneticisinin tamam iin chroot dizini acl_dirs=Sadece bu dizinlere eriime izin ver acl_follow=Sembolik linkler her zaman takip edilsin mi? acl_log=Btn dosya deiikliklerinin kaytlar tutulsun mu? acl_max=Maksimum ykleme boyutu acl_ro=Sadece okunabilir mod? acl_umask=Yeni dosyalar iin umask acl_unarchive=Yklenen ariv dosyalarn aabilir mi? acl_unarchive0=$no acl_unarchive1=$yes acl_unlim=Limitsiz acl_user=Sunucudaki dosyalara bu kullanc olarak ula : acl_user_def=Webmin kullanc ad ile ayn acltype_default_group=ntanml Grup acltype_default_mask=ntanml Mask acltype_default_user=ntanml Kullanc acltype_group=Grup acltype_mask=Mask acltype_other=Dierleri acltype_user=Kullanc cancel=ptal chmod_eaccess='$1'e eriim iin izininiz yoktur chmod_echmod=chmod'da hata olutu : $1 chmod_echown=chown'da hata olutu : $1 chmod_efollow=Sembolink linkleri dzenlemek iin izininiz yoktur chmod_egroup=$1 : byle bir grup yok chmod_elink=Sembolik linkte hata olutu : $1 chmod_euser=$1 : byle bir kullanc yok close=Kapat copy_efrom='$1'den kopyalamanza izin verilmemitir copy_elink=Sembolik linkte hata olutu : $1 copy_eto='$1'e kopyalamanza izin verilmemitir ddir_rusure=$1 'in ieriini bir ariv dosyas olarak indirmek iin, aadaki ariv tipi butonlarndan birini tklaynz. ddir_tar=TAR ddir_tgz=TAR.GZ ddir_title=ndirme Dizini ddir_zip=ZIP delete_ddesc=$1 dizinini ve iindekileri silmek istediinizden emin misiniz? delete_dtitle=Dizin Sil delete_eaccess='$1'i silmede hata olutu delete_efailed=$1'i silme ileminde hata olutu : $2 delete_fdesc=$1 dosyasn kalc olarak silmek istediinizden emin misiniz? delete_ftitle=Dosya sil delete_mdesc=Bu dosya ve dizinleri kalc olarak silmek istediinizden emin misiniz? : delete_mtitle=Birden fazla dosya sil eacl_aclperms=zinler eacl_acltype=ACL Tipi eacl_create=ACL Olutur eacl_eacls=ACL'lerin okunmasnda hata olutu : $1 eacl_edefaults=Eer bir dosyann ntanml ACL'si varsa bu dosya ntanml kullanc, grup ve dier ACL'lere de sahip olmaldr. eacl_edit=ACL Dzenle eacl_efs=$1 dosya sistemi ACL'leri desteklemiyor eacl_group=Dosya grubu $1 eacl_owner=Dosya sahibi eacl_remove=ACL Sil eacl_user=Dosya sahibi $1 eattr_A=Eriim zamanlarn gncelleme eattr_S=Yazmadan sonra her zaman senkronize et eattr_a=Dosyaya sadece ekleme yaplabilir eattr_c=Diskteki veriyi sktr eattr_d=Dump ile yedekleme eattr_i=Deitirilmesine izin verme ebutton=Bu zellik kullanlamaz edit_all=Hepsini deitir edit_eaccess='$1'e kaydedilmesine izininiz yoktur edit_efollow=Sembolink link '$1'e yazmak iin izininiz yoktur edit_enormal=Sadece normal dosyalar dzenlenebilir edit_eover=$1 zerine yazlamaz edit_esave=Dosyann kaydedilmesinde hata olutu : $1 edit_filename=Dosya smi: edit_find=Bul edit_goto=Git edit_gotoline=Satra git edit_notfound=$1 metini bulunamad edit_replace=Deitir edit_replaceby=Bununla deitir edit_saveclose=Kaydet & Kapat edit_title=$1 dzenleniyor edit_title2=Dosya oluturuluyor eopen=ndirmede hata : $1 facl_eaccess=Bu dosyann ACL'lerini belirlemek iin izininiz yoktur file_type0=Dizin file_type1=Metin Dosyas file_type2=Resim Dosyas file_type3=kili Dosya file_type4=Dosya file_type5=Sembolik Link file_type6=Aygt dosyas file_type7=Pipe find_eaccess=$1'e eriim izininiz yoktur find_edir=$1, $2'de bir dizin deil find_eexist=$1, $2 iinde mevcut deil index_eremote=Webmin kullancs $1 ile eleen Unix kullancs yok. index_nojava=Bu modl java gerektirir, fakat sizin taraycnz java'yi desteklemiyor index_title=Dosya Yneticisi info_apply=Deiiklikleri uygula ... info_apply1=Sadece bu dizine info_apply2=Bu dizin ve dosyalarna info_apply3=Bu dizin ve alt dizinlerine info_efailed=Gncellemede hata olutu $1 : $2 info_exec=altr info_file=Dosya info_group=Grup: info_link=Link to: info_list=Listele info_mod=Deitirildi: info_octal=Sekizli: info_other=Dierleri: info_own=Sahiplik info_path=Yol: info_perms=zinler info_read=Oku info_setgid=Setgid: info_setgid2=Dosyalar grubun olsun info_setgid3=Grup olarak altr info_setuid=Setuid: info_setuid2=Kullanc olarak altr info_size=Boyut: info_sticky=Sticky: info_sticky2=Dosyalar sadece sahipleri silebilir info_type=Tip: info_user=Kullanc: info_write=Yaz link_eexists=$1 zaten mevcut link_efailed=Link yaplrken hata olutu : $1 link_efollow=Sembolik link oluturmak iin izininiz yoktur link_efrom=Link kayna tam olarak verilmelidir link_efrom2='$1'den link yapmak iin izininiz yoktur link_from=Link buradan: link_title=Link Olutur link_to=Buraya link olutur: list_eaccess=Bu dizine eriim izininiz yoktur log_chmod=$1 dosyasnn haklar deitirildi log_copy=$1 dosyas $2'ye kopyaland log_create_export=NFS sunumu $1 oluturuldu log_create_share=Samba paylam $1 oluturuldu log_delete=$1 dosyas silindi log_delete_export=NFS sunumu $1 silindi log_delete_share=Samba paylam $1 silindi log_link=$2'ye sembolik link $1 oluturuldu log_mkdir=$1 dizini oluturuldu log_modify_export=NFS sunumu $1 deitirildi log_modify_share=Samba paylam $1 deitirildi log_move=$1 dosyas $2'ye tand log_relink=$2'ye sembolik link $1 deitirildi log_save=$1 dosyas kaydedildi log_upload=$1 dosyas yklendi mkdir_dir=Yeni dizin: mkdir_eaccess='$1' dizini oluturmaya hakknz yok mkdir_eexists=$1 dizini mevcut mkdir_efailed=Dizin oluturmada hata olutu : $1 mkdir_title=Yeni Dizin mount_eaccess=Dosya sistemini mount etmek iin izininiz yoktur mount_efstab=Bu mount noktasnda bir dosya sistemi mevcut deildir mount_epoint=$1 bir mount noktas deildir mount_err1=$1 'in mount edilmesinde hata olutu : $2 mount_err2=$1 'in umount edilmesinde hata olutu : $2 mount_rusure1=$1 'i $2 'ye mount etmek istediinize emin misiniz ? mount_rusure2=$1 'i $2 'den umount etmek istediinize emin misiniz ? mount_title1=Dosya sistemi mount et mount_title2=Dosya sistemi umount et move_afrom='$1'i tamak iin izininiz yoktur move_eto='$1'e tamak iin izininiz yoktur over_msg=$1 dosyas zaten mevcut. Yaptrlan dosyaya yeni bir isim girmek iin aadaki alan kullannz. over_new=Yeni dosya ismi: over_ok=Tamam over_title=Dosya Mevcut paste_ecfailed=Kopyalamada hata olutu : $1 paste_ecopy=Yaptrmadan nce kopyalamal veya kesmelisiniz paste_egone=Kopyalanan dosya $1 artk yok paste_emfailed=Tamada hata olutu : $1 paste_eover=$1 zerine yazlamaz paste_eself=Dosyay kendi zerine yaptramazsnz rename_eexists=$1 dosyas zaten mevcut rename_efailed=Yeniden adlandrmada hata olutu : $1 rename_enew='$1' olarak yeniden adlandrmak iin izininiz yoktur rename_eold='$1'i yeniden adlandrmak iin izininiz yoktur rename_new=Yeni sim: rename_ok=Yeniden Adlandr rename_old=Eski sim: rename_title=Yeniden Adlandr $1 right_date=Tarih right_group=Grup right_name=sim right_size=Boyut right_user=Kullanc search_crit=Armama kriteri search_dir=Arama dizini search_eaccess=Bu dizinde arama yapmak iin izininiz yoktur search_edir=Eksik ya da geersiz arama dizini search_egroup=Grup ad girilmemi search_esize=Dosya boyutu bir tamsay olmaldr search_euser=Kullanc ad girilmemi search_list=Arama sonular search_ok=imdi Ara search_size=Dosya boyutu search_title=Dosya bul search_type=Dosya tipi search_types_=Hepsi search_types_d=Dizin search_types_f=Dosya search_types_l=Sembolink link share_all=Hepsi share_available=Aktif mi? share_comment=Yorum share_desc=Aklama share_guest=Ziyareti eriimi? share_host=Makineler share_listed=Listeli... share_lro=Sadece okunur share_lrw=Okunur-yazlr share_nfs=NFS share_nheader=NFS sunum seenekleri share_noff=NFS dosya paylam kapal share_non=NFS dosya paylam ak share_none=Hibiri share_only=Sadece share_opts=Seenekler share_ro=Sadece okuma izinli makineler share_root=Root girili makineler share_rw=Okuma-yazma izinli makineler share_s0=Hikimseye gvenme share_s1=Root olmayanlara gven share_s2=Herkese gven share_samba=Windows share_sheader=Paylam seenekleri share_soff=Windows dosya paylam kapal share_son=Windows dosya paylam ak share_title=Paylatrma share_writable=Yazlabilir? switch_euser=Unix kullancs mevcut deil! top_config=Yaplandrma top_copy=Kopyala top_cut=Kes top_delete=Sil top_down=Kaydet top_eacl=ACL top_edit=Dzenle top_ext=EXT top_info=Bilgi top_mount=Mount top_new=Yeni top_paste=Yaptr top_refresh=Yenile top_rename=Yeniden Adlandr top_ret=ndeks top_search=Ara top_share=Paylatrma top_upload=Ykleme upload_already=$1 dosyas zaten mevcut. zerine yazmak istediinizden emin misiniz? upload_conv=DOS satrlar evirilsin mi? upload_dir=Dizine Ykle upload_edir=Ykleme dizini mevcut deil upload_efailed=Dosyann yklenmesinde hata olutu : $1 upload_efile=Yklenecek dosya seilmedi. upload_eperm=$1 oluturmanza izin verilmedi upload_ewrite=$1'i yazmada hata olutu : $2. upload_file=Yklenecek dosya upload_ok=Ykle upload_title=Dosyay Ykle upload_zip=ZIP ya da TAR dosyas alsn m? view_eaccess=$1'e eriim izininiz yoktur view_earchive=Arivleri indirmek iin izininiz yoktur view_earchmax=Seili dizin arivleme iin izin verilen maksimum boyuttan ($1 byte) daha byk view_ecomp=Ariv oluturulmasnda hata olutu : $1 view_edir=Bir ariv sadece bir dizin iin oluturulabilir view_enormal=Sadece normal dosyalar grntlenebilir view_enormal2=Sadece normal dosyalar indirilebilir view_eopen=$1 'in almasnda hata olutu : $2 zip_ename=Bir zip, tar ya da tar.gz gibi grnmyor zip_err=Dosya alamyor : $1 zip_euntar=Tar dosyasnn almasnda hata olutu : $1 file/lang/pl0100644000567100000120000002640510754361753012757 0ustar jcameronwheelindex_title=Zarzdca plikw index_nojava=Ten modu wymaga do swojego dziaania javy, natomiast Twoja przegldarka javy nie obsuguje # switch_euser=Uytkownik Uniksa nie istnieje! switch_euser=Uzytkownik Uniksa nie istnieje! # top_open=Otwrz top_open=Otworz top_view=Obejrzyj top_edit=Modyfikuj # top_refresh=Odwie top_refresh=Odswiez top_info=Informacje # top_delete=Usu top_delete=Usun top_new=Nowy # top_upload=Przelij top_upload=Przeslij # top_rename=Zmie nazw top_rename=Zmien nazwe top_copy=Kopiuj top_cut=Wytnij top_paste=Wklej # top_share=Udostpnianie top_share=Udostepnianie top_search=Szukaj right_name=Nazwa right_size=Rozmiar # right_user=Waciciel right_user=Wlasciciel right_group=Grupa right_date=Data # edit_enormal=Modyfikowa mona tylko zwyke pliki edit_enormal=Modyfikowac mozna tylko zwykle pliki edit_title=Modyfikacja $1 edit_title2=Tworzenie pliku edit_filename=Nazwa pliku: # edit_eover=$1 nie moe by nadpisany edit_eover=$1 nie moze byc nadpisany # edit_esave=Nie udao si zachowa pliku : $1 edit_esave=Nie udalo sie zachowac pliku : $1 # edit_eaccess=Nie masz uprawnie do zachowania '$1' edit_eaccess=Nie masz uprawnien do zachowania '$1' info_file=Plik # info_path=cieka: info_path=Sciezka: info_type=Typ: info_size=Rozmiar: info_mod=Zmieniony: # info_link=Dowizanie do: info_link=Dowiazanie do: info_perms=Uprawnienia # info_user=Waciciel: info_user=Wlasciciel: info_group=Grupa: info_other=Inni: info_sticky=Sticky: # info_sticky2=Tylko waciciele mog usuwa pliki info_sticky2=Tylko wlasciciele moga usuwac pliki # info_own=Prawa wasnoci info_own=Prawa wlasnosci info_setuid=Setuid: # info_setuid2=Uruchom jako uytkownik info_setuid2=Uruchom jako uzytkownik info_setgid=Setgid: # info_setgid2=Pliki dziedzicz grup info_setgid2=Pliki dziedzicza grupe info_setgid3=Uruchom jako grupa info_apply=Zastosuj zmiany do info_apply1=tylko katalogu # info_apply2=katalogu i zawartych w nim plikw info_apply2=katalogu i zawartych w nim plikow info_apply3=katalogu wraz z podkatalogami # info_efailed=Nie udao sie zaktualizowa $1 : $2 info_efailed=Nie udalo sie zaktualizowac $1 : $2 info_read=Odczyt info_write=Zapis # info_list=Przegldanie info_list=Przegladanie info_exec=Uruchamianie delete_dtitle=Usu katalog delete_ftitle=Usu plik # delete_ddesc=Czy jeste pewien, e chcesz nieodwracalnie usun katalog $1 wraz z ca zawartoci? delete_ddesc=Czy jestes pewien, ze chcesz nieodwracalnie usunac katalog $1 wraz z cala zawartoscia? # delete_fdesc=Czy jeste pewien, e chcesz nieodwracalnie usun plik $1 ? delete_fdesc=Czy jestes pewien, ze chcesz nieodwracalnie usunac plik $1 ? # delete_efailed=Nie udao si usun $1 : $2 delete_efailed=Nie udalo sie usunac $1 : $2 mkdir_title=Nowy katalog mkdir_dir=Nowy katalog: # mkdir_eexists=$1 ju istnieje mkdir_eexists=$1 juz istnieje # mkdir_efailed=Nie udao sie utworzy katalogu : $1 mkdir_efailed=Nie udalo sie utworzyc katalogu : $1 # mkdir_eaccess=Nie masz uprawnie do utworzenia '$1' mkdir_eaccess=Nie masz uprawnien do utworzenia '$1' link_title=Utwrz dowizanie link_from=Nazwa dowizania: link_to=Dowizanie do: # link_eexists=$1 ju istnieje link_eexists=$1 juz istnieje # link_efailed=Nie udao si utworzy dowizania : $1 link_efailed=Nie udalo sie utworzyc dowiazania : $1 # link_efrom=Nie masz uprawnie do utworzenia dowizania '$1' link_efrom=Nie masz uprawnien do utworzenia dowiazania '$1' # link_efollow=Nie masz uprawnie do tworzenia dowiza symbolicznych link_efollow=Nie masz uprawnien do tworzenia dowiazan symbolicznych rename_title=Zmie nazw $1 rename_old=Stara nazwa: rename_new=Nowa nazwa: # rename_ok=Zmie nazw rename_ok=Zmien nazwe # rename_eexists=Plik o nazwie $1 ju istnieje rename_eexists=Plik o nazwie $1 juz istnieje # rename_efailed=Nie udao si zmieni nazwy : $1 rename_efailed=Nie udalo sie zmienic nazwy : $1 # rename_eold=Nie masz uprawnie do zmiany nazwy '$1' rename_eold=Nie masz uprawnien do zmiany nazwy '$1' # rename_enew=Nie masz uprawnie do zmiany nazwy na '$1' rename_enew=Nie masz uprawnien do zmiany nazwy na '$1' file_type0=Katalog file_type1=Plik tekstowy file_type2=Plik Image file_type3=Plik binarny file_type4=Plik # file_type5=Dowizanie symboliczne file_type5=Dowiazanie symboliczne # file_type6=Plik urzdzenia file_type6=Plik urzadzenia file_type7=plik FIFO # view_enormal=Mona oglda tylko zwyke pliki view_enormal=Mozna ogladac tylko zwykle pliki # view_eaccess=Nie masz prawa dostpu do $1 view_eaccess=Nie masz prawa dostepu do $1 # view_eopen=Nie udao si otworzy $1 : $2 view_eopen=Nie udalo sie otworzyc $1 : $2 # paste_ecopy=Aby wklei musisz wczeniej co skopiowa lub wyci paste_ecopy=Aby wkleic musisz wczesniej cos skopiowac lub wyciac # paste_egone=Kopiowany plik $1 ju nie istnieje paste_egone=Kopiowany plik $1 juz nie istnieje # paste_eover=Nie mona nadpisa $1 paste_eover=Nie mozna nadpisac $1 # paste_eself=Nie moesz wklei pliku w miejsce jego samego paste_eself=Nie mozesz wkleic pliku w miejsce jego samego # paste_emfailed=Nie udao si przesun : $1 paste_emfailed=Nie udalo sie przesunac : $1 # paste_ecfailed=Nie udao si skopiowa : $1 paste_ecfailed=Nie udalo sie skopiowac : $1 over_title=Plik istnieje # over_msg=Plik $1 ju istnieje. Podaj now nazw dla tworzonego pliku korzystajc z pola poniej. over_msg=Plik $1 juz istnieje. Podaj nowa nazwe dla tworzonego pliku korzystajac z pola ponizej. over_new=Nowa nazwa pliku: over_ok=OK # upload_efailed=Nie udao si otworzy przesyania : $1 upload_efailed=Nie udalo sie otworzyc przesylania : $1 # upload_title=Przelij plik upload_title=Przeslij plik # upload_file=Plik do przesania upload_file=Plik do przeslania # upload_dir=Przelij do katalogu upload_dir=Przeslij do katalogu # upload_ok=Przelij upload_ok=Przeslij # upload_conv=Przeksztaci DOS-owe koce linii? upload_conv=Przeksztacic DOS-owe konce linii? # upload_efile=Nie podano pliku do przesania. upload_efile=Nie podano pliku do przeslania. # upload_edir=Katalog, do ktrego ma nastpi przesanie nie istnieje. upload_edir=Katalog, do ktorego ma nastapic przeslanie nie istnieje. # upload_eperm=Nie masz uprawnie do utworzenia $1 upload_eperm=Nie masz uprawnien do utworzenia $1 # upload_ewrite=Nie udao si zapisa w $1 : $2. upload_ewrite=Nie udalo sie zapisac w $1 : $2. # find_eaccess=Nie masz prawa dostpu do $1 find_eaccess=Nie masz prawa dostepu do $1 find_eexist=$1 nie istnieje w $2 find_edir=$1 nie jest podkatalogiem $2 cancel=Rezygnuj # chmod_eaccess=Nie masz prawa dostpu do '$1' chmod_eaccess=Nie masz prawa dostepu do '$1' # chmod_euser=$1 : nie ma takiego uytkownika chmod_euser=$1 : nie ma takiego uzytkownika chmod_egroup=$1 : nie ma takiej grupy # chmod_elink=nie udao si utworzy dowizania symbolicznego : $1 chmod_elink=nie udalo sie utworzyc dowiazania symbolicznego : $1 # chmod_echown=nie udao si zmieni waciciela : $1 chmod_echown=nie udalo sie zmienic wasciciela : $1 # chmod_echmod=nie udao si zmieni uprawnie : $1 chmod_echmod=nie udalo sie zmienic uprawnien : $1 # copy_efrom=Nie masz uprawnie do kopiowania '$1' copy_efrom=Nie masz uprawnien do kopiowania '$1' # copy_eto=Nie masz uprawnie do kopiowania do '$1' copy_eto=Nie masz uprawnien do kopiowania do '$1' # copy_elink=nie udao si utworzy dowizania symbolicznego : $1 copy_elink=nie udalo sie utworzyc dowiazania symbolicznego : $1 # delete_eaccess=Nie masz uprawnie do usunicia '$1' delete_eaccess=Nie masz uprawnien do usuniecia '$1' # list_eaccess=Nie masz prawa dostpu do tego katalogu list_eaccess=Nie masz prawa dostepu do tego katalogu # list_edir=Nie udao si przejrze $1 : $2 list_edir=Nie udalo sie przejrzec $1 : $2 # move_eto=Nie masz uprawnie do przenoszenia do '$1' move_eto=Nie masz uprawnien do przenoszenia do '$1' # move_afrom=Nie masz uprawnie do przeniesienia '$1' move_afrom=Nie masz uprawnien do przeniesienia '$1' acl_user=Dostp do plikw na serwerze z prawami uytkownika acl_user_def=Taki sam jak zalogowany do Webmina acl_umask=Umaska dla nowych plikw acl_follow=Zawsze ledzi dowizania symboliczne? acl_dirs=Pozwoli jedynie na dostp do katalogw # acl_home=Docz katalog domowy uytkownika Webmina acl_home=Dolacz katalog domowy uzytkownika Webmina share_title=Udostpnianie share_samba=Windows share_nfs=NFS # share_son=Udostpnianie plikw dla Windows wczone share_son=Udostepnianie plikow dla Windows wlaczone # share_soff=Udostpnianie plikw dla Windows wyczone share_soff=Udostepnianie plikow dla Windows wylaczone share_writable=Prawa zapisu? share_available=Aktualnie czynne? # share_sheader=Opcje wspdzielenia share_sheader=Opcje wspoldzielenia # share_only=Wycznie share_only=Wylacznie # share_guest=Dostp gocinny? share_guest=Dostep goscinny? share_comment=Uwagi # share_nheader=Opcje udostpniania NFS share_nheader=Opcje udostepniania NFS # share_non=Udostpnianie NFS wczone share_non=Udostepnianie NFS wlaczone # share_noff=Udostpnianie NFS wyczone share_noff=Udostepnianie NFS wylaczone share_desc=Opis # share_ro=Hosty z dostpem tylko do odczytu share_ro=Hosty z dostepem tylko do odczytu # share_rw=Hosty z dostpem do zapisu share_rw=Hosty z dostepem do zapisu # share_root=Hosty z dostpem roota share_root=Hosty z dostepem roota share_none=Brak share_all=Wszystkie share_listed=Wymienione.. share_host=Hosty share_opts=Opcje share_s0=Nie ufaj nikomu # share_s1=Ufaj wszystkim prcz roota share_s1=Ufaj wszystkim procz roota share_s2=Ufaj wszystkim share_lro=Tylko do odczytu share_lrw=Odczyt i zapis log_create_export=Utworzono udostpnianie NFS $1 log_modify_export=Zmieniono udostpnianie NFS $1 log_delete_export=Usunito udostpnianie NFS $1 log_create_share=Utworzono zasb Samby $1 log_modify_share=Zmieniono zasb Samby $1 log_delete_share=Usunito zasb Samby $1 log_save=Zachowano plik $1 log_chmod=Zmieniono uprawnienia dla pliku $1 log_mkdir=Utworzono katalog $1 log_upload=Przesano plik $1 log_link=Utworzono dowizanie symboliczne $1 do $2 log_relink=Zmieniono dowizanie symboliczne $1 do $2 log_copy=Skopiowano plik $1 jako $2 log_move=Przeniesiono plik $1 do $2 log_delete=Usunito plik $1 # search_eaccess=Nie masz uprawnie do przeszukiwania tego katalogu search_eaccess=Nie masz uprawnien do przeszukiwania tego katalogu search_title=Szukaj plikw search_ok=Szukaj teraz search_dir=Szukaj w katalogu # search_match=Plikw wg wzorca search_match=Plikow wg wzorca # search_user=Nalecych do uytkownika search_user=Nalezacych do uzytkownika # search_group=Nalecych do grupy search_group=Nalezacych do grupy search_any=Dowolny search_type=Rodzaj pliku search_types_=Dowolny # search_types_f=Zwyky plik search_types_f=Zwykly plik search_types_d=Katalog # search_types_l=Dowizanie symboliczne search_types_l=Dowiazanie symboliczne search_types_p=Nazwane FIFO search_size=Rozmiar pliku # search_more=Wikszy ni search_more=Wiekszy niz # search_less=Mniejszy ni search_less=Mniejszy niz # search_xdev=Przeszukiwa inne systemy plikw? search_xdev=Przeszukiwac inne systemy plikow? search_edir=Nie podany lub niepoprawny katalog przeszukiwania # search_ematch=Brak wyraenia regularnego do dopasowania search_ematch=Brak wyrazenia regularnego do dopasowania # search_euser=Nie podano nazwy uytkownika search_euser=Nie podano nazwy uzytkownika search_egroup=Nie podano nazwy grupy # search_esize=Rozmiar pliku musi by liczb cakowit search_esize=Rozmiar pliku musi byc liczba calkowita search_crit=Kryteria szukania search_list=Wyniki szukania file/lang/ru_RU0100664000567100000120000002251710754361753013402 0ustar jcameronwheeltop_delete= info_apply= info_perms= info_file= view_enormal= top_upload= edit_esave= : $1 upload_ewrite= $1 : $2. chmod_elink= symlink : $1 upload_ok= view_eaccess= $1 info_group=: edit_title2= top_info= move_afrom= '$1' link_efailed= : $1 info_setuid2= chmod_euser=$1 : link_efrom= '$1' info_mod=: right_date= copy_efrom= '$1' info_sticky2= rename_old= : find_eaccess= $1 mkdir_eexists=$1 upload_dir= rename_enew= '$1' find_edir=$1 $2 upload_efile= . info_type=: info_setuid= setuid: right_group= upload_efailed= : $1 top_cut= info_read= acl_user= paste_ecopy= info_exec= delete_ddesc= $1 ? info_link= : link_to= : info_size=: info_path=: copy_eto= '$1' rename_ok= chmod_egroup=$1 : info_own= upload_conv= DOS? cancel= info_list= index_nojava= java, java paste_eover=$1 info_user=: delete_fdesc= $1 ? edit_title= $1 paste_egone= $1 top_paste= chmod_echmod= chmod : $1 edit_filename= : link_eexists=$1 edit_enormal= info_setgid2= info_setgid3= top_copy= edit_eaccess= '$1' right_name= rename_efailed= : $1 upload_edir= . rename_new= : delete_dtitle= link_from=: index_title= file_type0= file_type1= file_type2= file_type3= file_type4= file_type5= file_type6= file_type7= info_sticky= sticky: upload_title= top_edit= upload_eperm= $1 move_eto= '$1' paste_eself= copy_elink= symlink : $1 chmod_echown= chown : $1 acl_umask=Umask mkdir_dir= : info_other=: mkdir_title= delete_ftitle= find_eexist=$1 $2 right_size= edit_eover=$1 paste_emfailed= : $1 link_title= info_apply1= info_apply2= info_apply3= info_efailed= $1 : $2 acl_follow= ? upload_file= info_setgid= setgid: paste_ecfailed= : $1 mkdir_eaccess= '$1' right_user= rename_eold= '$1' link_efollow= rename_title= $1 top_new= mkdir_efailed= : $1 info_write= rename_eexists= $1 acl_dirs= chmod_eaccess= '$1' top_refresh= delete_eaccess= '$1' view_eopen= $1 : $2 top_rename= list_eaccess= delete_efailed= $1 : $2 log_chmod= $1 eacl_edefmask=There can be at most one default mask ACL entry acl_log= ? eacl_eacls= ACL : $1 search_eaccess= over_msg= $1 . . share_nfs=NFS log_copy= $1 $2 acltype_default_group= eacl_aclname= search_size= log_upload= $1 attr_create= search_types_d= ext_eattrs= EXT : $1 search_group= search_types_f= index_eremote= Unix Webmin $1. search_types_l= search_types_p= search_dir= acltype_user= acl_user_def= Webmin top_share= switch_euser= Unix ! acl_home= Webmin search_match= share_writable= ? delete_mtitle= search_less= top_attr= log_link= $1 $2 log_create_export= NFS $1 eacl_acltype= ACL share_s0= nobody share_s1= -root share_s2= ext_header= EXT search_title= search_types_= log_move= $1 $2 acl_goto= ? top_search= share_none= log_delete= $1 share_opts= share_ro=, share_rw=, share_guest= (Guest)? share_nheader= NFS over_title= over_new= : share_host= search_esize= acltype_other= ext_efailed= EXT $1 : $2 share_title= share_only= attr_edit= eacl_eowner= view_enormal2= search_user= log_mkdir= $1 attr_ename= search_more= eacl_user= $1 ext_efs= $1 EXT acltype_default_user= top_ext=EXT eacl_efs= $1 ACL search_egroup= share_lro= acl_ro= ? eacl_edefaults=If a file has any default ACL, it must have default user, group and other ACLs. list_edir= $1 : $2 eacl_owner= share_lrw=/ attr_name= eacl_aclperms= acltype_default_other= acltype_mask= attr_eattrs= : $1 search_ematch= eacl_add= ACL : log_attr= $1 log_modify_export= NFS $1 attr_efs= $1 top_down= eattr_A= search_crit= attr_add= chmod_efollow= ext_title= EXT $1 share_son= Windows log_create_share= Samba $1 search_ok= attr_title= $1 eattr_S= search_edir= share_non= NFS eattr_a= share_samba=Windows eattr_c= eattr_d= dump search_xdev= ? eacl_edit= ACL eattr_i= share_soff= Windows search_euser= eattr_s= eattr_u= top_ret= log_delete_share= Samba $1 eacl_emask=There can be at most one mask ACL entry log_delete_export= NFS $1 eacl_group= $1 share_noff= NFS share_available= ? info_octal= : attr_efailed= $1 : $2 acltype_default_mask= log_modify_share= Samba $1 log_save= $1 share_comment= share_desc= eacl_remove= ACL attr_value= search_any= search_type= eacl_title=ACL $1 top_eacl=ACL facl_eaccess= ACL share_root=, root eacl_efailed= ACL $1 : $2 share_all= delete_mdesc= ? : acltype_group= log_acl= $1 ACL share_listed=.. share_sheader= search_list= eacl_create= ACL log_relink= $1 $2 over_ok= file/lang/ja_JP.euc0100664000567100000120000001503510754361753014101 0ustar jcameronwheelindex_title=ե ޥ͡ index_nojava=Υ⥸塼ưΤ Java ɬפȤޤѤΥ֥饦 Java 򥵥ݡȤƤޤ top_open= top_view=ɽ top_edit=Խ top_refresh= top_info= top_delete= top_new= top_upload=åץ top_rename=̾ѹ top_copy=ԡ top_cut=å top_paste=ڡ top_share=ͭ top_search= right_name=ե̾ right_size= right_user=桼 right_group=롼 right_date= edit_enormal=ɸեΤԽǤޤ edit_title=$1 Խ edit_title2=ե edit_filename=ե̾: edit_eover=$1 Ͼ񤭤Ǥޤ edit_esave=ե¸ǤޤǤ: $1 edit_eaccess='$1' ¸Ǥޤ info_file=ե info_path=ѥ: info_type=: info_size=: info_mod=ѹ: info_link=: info_perms= info_user=桼: info_group=롼: info_other=¾: info_sticky=ƥå: info_sticky2=ͭԤΤߤեǤޤ info_own=ͭ info_setuid=setuid (桼 ID ): info_setuid2=Υ桼ȤƼ¹ info_setgid=setgid (롼 ID ): info_setgid2=եηѾ롼 info_setgid3=Υ롼פȤƼ¹ info_apply=ѹŬ info_apply1=Υǥ쥯ȥΤ info_apply2=Υǥ쥯ȥȤ˴ޤޤƤե info_apply3=Υǥ쥯ȥȤ٤ƤΥ֥ǥ쥯ȥ info_efailed=$1 򹹿ǤޤǤ: $2 info_read=ɼ info_write= info_list=ꥹ info_exec=¹ delete_dtitle=ǥ쥯ȥκ delete_ftitle=եκ delete_ddesc=ǥ쥯ȥ $1 ȤƤʵפ˺ƤǤ delete_fdesc=桼 $1ʵפ˺ƤǤ delete_efailed=$1 ǤޤǤ: $2 mkdir_title=Υǥ쥯ȥ mkdir_dir=Υǥ쥯ȥ: mkdir_eexists=$1 ϤǤ¸ߤޤ mkdir_efailed=ǥ쥯ȥǤޤǤ: $1 mkdir_eaccess='$1' Ǥޤ link_title=󥯤κ link_from=󥯸: link_to=: link_eexists=$1 ϤǤ¸ߤޤ link_efailed=󥯤ǤޤǤ: $1 link_efrom='$1' 󥯤Ǥޤ link_efollow=ܥå 󥯤Ǥޤ rename_title=$1 ̾ѹ rename_old=Ť̾: rename_new=̾: rename_ok=̾ѹ rename_eexists=$1 ȤեϤǤ¸ߤƤޤ rename_efailed=̾ѹǤޤǤ: $1 rename_eold='$1' ̾ѹǤޤ rename_enew='$1' ̾ѹǤޤ file_type0=ǥ쥯ȥ file_type1=ƥ ե file_type2=ե file_type3=Хʥ ե file_type4=ե file_type5=ܥå file_type6=ǥХ ե file_type7=ѥ view_enormal=ɸեΤɽǤޤ view_eaccess=$1 ˥Ǥޤ view_eopen=$1 򳫤ޤǤ: $2 paste_ecopy=ڡȤ˥åȤޤϥԡƤ paste_egone=ԡե $1 Ϥ⤦¸ߤޤ paste_eover=$1 Ͼ񤭤Ǥޤ paste_eself=ե򤽤Υե뼫Ȥ˥ڡȤ뤳ȤϤǤޤ paste_emfailed=ưǤޤǤ: $1 paste_ecfailed=ԡǤޤǤ: $1 over_title=¸Υե over_msg=ե $1 ϤǤ¸ߤޤڡȤ줿եοե̾򲼤ΥեɤϤƤ over_new=Υե̾: over_ok=OK upload_efailed=åץɤ򳫤ޤǤ: $1 upload_title=եΥåץ upload_file=åץɤե upload_dir=åץ ǥ쥯ȥ upload_ok=åץ upload_conv=DOS ԤѴޤ upload_efile=åץɤե뤬򤵤Ƥޤ upload_edir=åץɤΥǥ쥯ȥ꤬¸ߤޤ upload_eperm=$1 Ǥޤ upload_ewrite=$1 ˽񤭹ޤǤ: $2. find_eaccess=$1 ˥Ǥޤ find_eexist=$1 $2 ˤ¸ߤޤ find_edir=$1 $2 Υǥ쥯ȥǤϤޤ cancel=󥻥 chmod_eaccess='$1' ˥Ǥޤ chmod_euser=$1 : Υ桼¸ߤޤ chmod_egroup=$1 : Υ롼פ¸ߤޤ chmod_elink=symlink Ԥޤ: $1 chmod_echown=chown Ԥޤ: $1 chmod_echmod=chmod Ԥޤ: $1 copy_efrom='$1' ϥԡǤޤ copy_eto='$1' ؤϥԡǤޤ copy_elink=symlink Ԥޤ: $1 delete_eaccess='$1' Ǥޤ list_eaccess=Υǥ쥯ȥ˥Ǥޤ list_edir=$1 ꥹȤǤޤǤ: $2 move_eto='$1' ؤϰưǤޤ move_afrom='$1' ϰưǤޤ acl_user=ФΥե˼Υ桼Ȥƥ acl_umask=ե Umask acl_follow=symlink ˤɤޤ acl_dirs=Υǥ쥯ȥؤΥΤߤ share_title=ͭ share_samba=Windows share_nfs=NFS share_son=Windows եζͭͭ share_soff=Windows եζ̵ͭ share_writable=ߤǤޤ share_available=ߥƥ֤Ǥ share_sheader=ͭץ share_only=Τ share_guest=ȤΥǽˤޤ share_comment= share_nheader=NFS ݡ ץ share_non=NFS եζͭͭ share_noff=NFS եζ̵ͭ share_desc= share_ro=ɼѤΥۥ share_rw=ɼ-߲ǽΥۥ share_root=root Υۥ share_none=ʤ share_all=٤ share_listed=ꥹ.. share_host=ۥ share_opts=ץ share_s0=٤ƤΥ桼ꤷʤ share_s1=root ʳ share_s2=٤ƤΥ桼 share_lro=ɼ share_lrw=ɼ- log_create_export=NFS ݡ $1 ޤ log_modify_export=NFS ݡ $1 ѹޤ log_delete_export=NFS ݡ$1 ޤ log_create_share=Samba ζͭ $1 ޤ log_modify_share=Samba ζͭ $1 ѹޤ log_delete_share=Samba ζͭ $1 ޤ log_save=ե $1 ¸ޤ log_chmod=ե $1 εĤѹޤ log_mkdir=ǥ쥯ȥ $1 ޤ log_upload=ե $1 򥢥åץɤޤ log_link=$2ؤΥܥå $1 ޤ log_relink=$2 ؤΥܥå $1 ѹޤ log_copy=ե $1 $2 ˥ԡޤ log_move=ե $1 $2 ˰ưޤ log_delete=ե $1 ޤ search_eaccess=Υǥ쥯ȥ򸡺Ǥޤ search_title=եθ search_ok=˸ search_dir=ǥ쥯ȥ search_match=פե search_user=ͭ桼 search_group=ͭ롼 search_any=Ǥ search_type=եμ search_types_=Ǥ search_types_f=ե search_types_d=ǥ쥯ȥ search_types_l=ܥå search_types_p=̾դѥ search_size=ե search_more=礭 search_less=꾮 search_xdev=ΥޥȤ򸡺ޤ search_edir=ǥ쥯ȥ꤬ʤ̵Ǥ search_ematch=פɽޤ search_euser=桼̾ޤ search_egroup=롼̾ޤ search_esize=ե ǤʤФʤޤ search_crit= search_list= file/lang/ko_KR.euc0100664000567100000120000001354210754361753014124 0ustar jcameronwheelindex_title= index_nojava= Java Բ ؾ Java ʽϴ top_open= top_view= top_edit= top_refresh= ħ top_info= top_delete= top_new= top_upload=ε top_rename≠ ٲٱ top_copy= top_cut=߶󳻱 top_paste=ٿֱ top_share= top_search=ã right_name≠ right_size=ũ right_user= right_group=׷ right_date=¥ edit_enormal=Ϲ ϸ ֽϴ edit_title=$1 edit_title2= ۼ edit_filename= ̸: edit_eover=$1()  ϴ edit_esave= ߽ϴ: $1 edit_eaccess='$1'() ϴ info_file= info_path=: info_type=: info_size=ũ: info_mod= ¥: info_link=ũ : info_perms= info_user=: info_group=׷: info_other= : info_sticky=: info_sticky2=ڸ ֽϴ info_own= info_setuid=Setuid: info_setuid2=ڷμ info_setgid=Setgid: info_setgid2= ׷ info_setgid3=׷μ info_apply= info_apply1= 丮 info_apply2= 丮 ش info_apply3= 丮 丮 info_efailed=$1() Ʈ ߽ϴ: $2 info_read=б info_write= info_list= info_exec= delete_dtitle=丮 delete_ftitle= delete_ddesc=丮 $1() Ͻðڽϱ? delete_fdesc= $1() Ͻðڽϱ? delete_efailed=$1() ߽ϴ: $2 mkdir_title= 丮 mkdir_dir= 丮: mkdir_eexists=$1() ̹ ֽϴ mkdir_efailed=丮 ۼ ߽ϴ: $1 mkdir_eaccess='$1'() ۼ ϴ link_title=ũ ۼ link_from=ũ ҽ: link_to=ũ : link_eexists=$1() ̹ ֽϴ link_efailed=ũ : $1 link_efrom='$1' ũ ϴ link_efollow=ɺ ũ ۼ ϴ rename_title=$1 ̸ ٲٱ rename_old= ̸: rename_new= ̸: rename_ok≠ ٲٱ rename_eexists= $1() ̹ ֽϴ rename_efailed≠ ٲ ߽ϴ: $1 rename_eold='$1' ̸ ٲ ϴ rename_enew='$1'() ̸ ٲ ϴ file_type0=丮 file_type1=ؽƮ file_type2=̹ file_type3= file_type4= file_type5=ɺ ũ file_type6=ġ file_type7= view_enormal=Ϲ ϸ ֽϴ view_eaccess=$1 ϴ view_eopen=$1() ߽ϴ: $2 paste_ecopy=ٿֱ ߶󳻰ų ؾ մϴ paste_egone= $1() ̻ ʽϴ paste_eover=$1()  ϴ paste_eself= Ͽ ٿ ϴ paste_emfailed=̵ ߽ϴ: $1 paste_ecfailed= ߽ϴ: $1 over_title= over_msg= $1() ̹ ֽϴ. ٿ ̸ Ʒ ʵ忡 ԷϽʽÿ. over_new= ̸: over_ok=Ȯ upload_efailed=ε ߽ϴ: $1 upload_title= ε upload_file=ε upload_dir=丮 ε upload_ok=ε upload_conv=DOS ٹٲ ȯմϱ? upload_efile=ε ʾҽϴ. upload_edir=ε 丮 ʽϴ. upload_eperm=$1() ۼ ϴ upload_ewrite=$1 ߽ϴ: $2 find_eaccess=$1 ׼ ϴ find_eexist=$2 $1() ʽϴ find_edir=$1() $2 丮 ƴմϴ cancel= chmod_eaccess='$1' ϴ chmod_euser=$1: ش chmod_egroup=$1: ش ׷ chmod_elink=ɺ ũ : $1 chmod_echown=chown : $1 chmod_echmod=chmod : $1 copy_efrom='$1' ϴ copy_eto='$1' ϴ copy_elink=ɺ ũ : $1 delete_eaccess='$1'() ϴ list_eaccess= 丮 ϴ list_edir=$1() ߽ϴ: $2 move_eto='$1'() ̵ ϴ move_afrom='$1'() ̵ ϴ acl_user=ڷμ Ͽ acl_umask= Umask acl_follow=׻ ɺ ũ ϱ? acl_dirs=丮 ׼ share_title= share_samba= share_nfs=NFS share_son= share_soff= Ҵ share_writable= մϱ? share_available= Ȱ Դϱ? share_sheader= ɼ share_only= share_guest=ԽƮ մϱ? share_comment=ּ share_nheader=NFS ɼ share_non=NFS share_noff=NFS Ҵ share_desc= share_ro=б ȣƮ share_rw=б/ ȣƮ share_root=root ׼ ȣƮ share_none= share_all= share_listed=.. share_host=ȣƮ share_opts=ɼ share_s0=ƹ ŷ share_s1=root ŷ share_s2= ŷ share_lro=б share_lrw=б/ log_create_export=NFS $1 ۼ log_modify_export=NFS $1 log_delete_export=NFS $1 log_create_share= $1 ۼ log_modify_share= $1 log_delete_share= $1 log_save= $1 log_chmod= $1 log_mkdir=丮 $1 ۼ log_upload= $1 ε log_link=$2 ɺ ũ $1 ۼ log_relink=$2 ɺ ũ $1 log_copy=$2() $1 log_move=$2() $1 ̵ log_delete= $1 search_eaccess= 丮 ˻ ϴ search_title= ã search_ok= ˻ search_dir=丮 ˻ search_match= ˻ search_user= search_group=׷ search_any= search_type= search_types_= search_types_f= search_types_d=丮 search_types_l=ɺ ũ search_types_p= search_size= ũ search_more= ŭ search_less= search_xdev= Ʈ ˻մϱ? search_edir=ų ߸ ˻ 丮 search_ematch=ġϴ ϴ search_euser= ̸ search_egroup= ׷ ̸ search_esize= ũ մϴ search_crit=˻ search_list=˻ file/lang/ca0100644000567100000120000003470410754361753012730 0ustar jcameronwheelindex_title=Administrador de Fitxers index_nojava=Aquest mdul requereix java per funcionar, per el teu navegador no suporta java index_eremote=No hi ha cap usuari Unix que coincideixi amb l'entrada $1 de Webmin. index_index=Torna a l'ndex de Webmin. switch_euser=L'usuari Unix no existeix! top_ret=ndex top_down=Desa top_preview=Previsualitza top_edit=Edita top_html=HTML top_refresh=Refresca top_info=Info top_eacl=ACL top_attr=Atributs top_ext=EXT top_delete=Suprimeix top_new=Nou top_upload=Puja top_extract=Extreu top_rename=Renomena top_copy=Copia top_cut=Retalla top_paste=Enganxa top_share=Xarxa top_mount=Munta top_search=Busca top_config=Configura top_efile=No has seleccionat cap fitxer right_name=Nom right_size=Mida right_user=Usuari right_group=Grup right_date=Data edit_enormal=Noms es poden editar els fitxers normals edit_title=Editant $1 edit_title2=Creant el fitxer edit_filename=Nom del fitxer: edit_goto=Ves edit_find=Busca edit_gotoline=Ves a la lnia edit_replace=Reemplaa edit_all=Reemplaa-ho tot edit_searchfor=Busca edit_replaceby=Reemplaa amb edit_eover=$1 no es pot reescriure edit_esave=No he pogut desar el fitxer: $1 edit_eaccess=No tens perms per desar '$1' edit_efollow=No tens perms per gravar l'enlla simblic '$1' edit_notfound=El text $1 no s'ha trobat edit_saveclose=Desa & Tanca edit_elength=S'ha escapat el fitxer! edit_textmode=Canvia a mode de text planer info_file=Fitxer info_path=Cam: info_type=Tipus: info_size=Mida: info_mod=Modificat: info_link=Enlla a: info_perms=Permisos info_user=Usuari: info_group=Grup: info_other=Altres: info_octal=Octal: info_sticky=Sticky: info_sticky2=Noms els propietaris poden esborrar fitxers info_own=Propietat info_setuid=Setuid: info_setuid2=Executa com a usuari info_setgid=Setgid: info_setgid2=Els fitxers hereten el grup info_setgid3=Executa com a grup info_apply=Aplica els canvis a info_apply1=Aquest directori nomes info_apply2=Aquest directori i els seus fitxers info_apply3=Aquest directori i tots els seus subdirectoris info_efailed=No he pogut actualitzar $1: $2 info_read=Llegir info_write=Escriure info_list=Llistar info_exec=Executar info_sizeheader=Mida del directori info_bytes=Total bytes: info_files=Total fitxers: info_dirs=Total directoris: info_getsize=Obtingues la Mida info_esize=No he pogut obtenir les mides: $1 eacl_eacls=No he pogut llegir les ACLs: $1 eacl_acltype=Tipus d'ACL eacl_aclname=Aplica a eacl_aclperms=Permisos eacl_add=Afegeix ACL del tipus: eacl_remove=Esborra ACL eacl_efs=El sistema de fitxers $1 no suporta ACLs eacl_create=Crea ACL eacl_edit=Edita ACL eacl_user=Propietari del fitxer $1 eacl_group=Grup del fitxer $1 eacl_eowner=Hi falta l'usuari o el grup per aplicar eacl_efailed=No he pogut establir l'ACL per a $1: $2 eacl_emask=Hi pot haver com a molt una entrada de mscara ACL eacl_edefmask=Hi pot haver com a molt una entrada per defecte de mscara ACL eacl_title=ACL de $1 eacl_owner=Propietari del fitxer eacl_edefaults=Si un fitxer t alguna ACL per defecte, ha de tenir usuari i grup per defecte. acltype_user=Usuari acltype_group=Grup acltype_other=Altres acltype_mask=Mscara acltype_default_user=Usuari per defecte acltype_default_group=Grup per defecte acltype_default_other=Altres per defecte acltype_default_mask=Mscara per defecte delete_mtitle=Suprimeix fitxers mltiples delete_dtitle=Supressi de directori delete_ftitle=Supressi de fitxer delete_ddesc=Segur que vols esborrar de forma definitiva el directori $1 i tot el seu contingut? delete_fdesc=Segur que vols esborrar de forma definitiva el fitxer $1? delete_efailed=No he pogut esborrar $1: $2 delete_mdesc=Segur que vols suprimir de forma permanent aquests fitxers i directoris? mkdir_title=Nou Directori mkdir_dir=Nou directori: mkdir_eexists=$1 ja existeix mkdir_efailed=La creaci del director ha fallat: $1 mkdir_eaccess=No tens perms per crear '$1' link_title=Creaci d'enlla link_from=Enllaa: link_to=A: link_eexists=$1 ja existeix link_efrom=L'origen de l'enlla ha de ser un cam absolut link_efailed=L'enlla ha fallat: $1 link_efrom2=No tens perms per enllaar '$1' link_efollow=No tens perms per crear enllaos simblics rename_title=Renomenament de $1 rename_old=Nom vell: rename_new=Nom nou: rename_ok=Renomena rename_eexists=Ja existeix un fitxer anomenat $1 rename_eslash=El nom de fitxer nou $1 cont una / rename_efailed=El renomenament ha fallat: $1 iename_eold=No tens perms per renomenar '$1' rename_enew=No tens perms per renomenar a '$1' file_type0=Directori file_type1=Fitxer de text file_type2=Fitxer d'imatge file_type3=Fitxer binari file_type4=Fitxer file_type5=Enlla simblic file_type6=Fitxer de dispositiu file_type7=Pipe view_enormal=Noms es poden mostrar els fitxers normals view_enormal2=Noms es poden descarregar fitxers normals view_eaccess=No tens perms per accedir a $1 view_eopen=No he pogut obrir $1: $2 view_edir=Un arxiu noms es pot crear per a un directori view_ecmd=L'ordre $1 necessria per a crear un arxiu no est installada view_ecomp=No he pogut crear l'arxiu: $1 view_earchive=No tens perms per descarregar arxius view_earchmax=El directori seleccionat s ms gran que el mxim perms per arxivar ($1 bytes) paste_ecopy=Has de copiar o retallar abans d'enganxar paste_egone=El fitxer copiat $1 ja no existeix paste_eover=$1 no es pot reescriure paste_eself=No pots enganxar un fitxer sobre ell mateix paste_emfailed=El desplaament ha fallat: $1 paste_ecfailed=La copia ha fallat: $1 over_title=Fitxer Existent over_msg=El fitxer $1 ja existeix. Utilitza el camp inferior per introduir un nom de fitxer nou per al fitxer enganxat. over_new=Nom de fitxer nou: over_ok=B upload_efailed=No he pogut obrir el fitxer per pujar: $1 upload_title=Puja de Fitxer upload_file=Fitxer per pujar upload_dir=Puja'l al directori upload_ok=Puja upload_conv=Converteix els salts de lnia Windows upload_efile=No s'ha seleccionat cap fitxer per pujar. upload_edir=El directori de destinaci no existeix. upload_euser=L'usuari seleccionat no existeix. upload_eperm=No tens perms per crear $1 upload_ewrite=No he pogut escriure a $1: $2. upload_already=El fitxer $1 ja existeix. Segur que el vols reescriure? upload_elink=No puc fer la puja sobre un enlla simblic upload_zip=Descomprimeixo el fitxer ZIP o TAR? upload_yes=S, llavors suprimeix-lo upload_user=Puja-ho com a usuari find_eaccess=No tens perms per accedir $1 find_eexist=$1 no existeix a $2 find_edir=$1 no s un directori de $2 cancel=Cancella close=Tanca eopen=La descrrega ha fallat: $1 chmod_eaccess=No tens perms per accedir '$1' chmod_euser=$1: no existeix l'usuari chmod_egroup=$1: no existeix el grup chmod_elink=enlla simblic fallit: $1 chmod_echown=chown fallit: $1 chmod_echmod=chmod fallit: $1 chmod_efollow=No tens perms per editar els enllaos simblics copy_efrom=No tens perms per copiar de '$1' copy_eto=No tens perms per copiar a '$1' copy_elink=enlla simblic fallit: $1 delete_eaccess=No tens perms per esborrar '$1' delete_eroot=El directori '$1' s un dels directoris als quals ests limitat, aix que no es pot suprimir list_eaccess=No tens perms per accedir a aquest directori list_edir=No he pogut llistar $1: $2 move_eto=No tens perms per desplaar a '$1' move_afrom=No tens perms per desplaar '$1' acl_user=Accedeix els fitxers del servidor com a usuari acl_user_def=Igual que l'usuari Webmin acl_umask=Umask per a fitxers nous acl_follow=Segueix sempre els enllaos simblics acl_fyes=Si el propietari coincideix acl_ro=Mode noms lectura acl_dirs=Permet l'accs nomes als directoris acl_nodirs=Denega l'accs als directoris acl_home=Inclou el directori arrel de l'usuari Webmin acl_log=Enregistra totes les modificacions de fitxers acl_goto=Obre el primer directori perms acl_max=Mida mxima de pujada acl_unlim=Illimitada acl_b=bytes acl_archive=Pot descarregar arxius de directoris acl_archmax=S, si sn ms petits de acl_buttons=Botons disponibles a la barra d'eines acl_button_save=Desa (descarrega el fitxer) acl_button_preview=Previsualitza (visualitza imatge escalada) acl_button_edit=Edita (edita el fitxer de text) acl_button_info=Info (edita els permisos i propietat del fitxer) acl_button_acl=ACL (edita l'ACL Posix) acl_button_attr=Atr (edita els atributs XFS) acl_button_ext=EXT (edita els atributs EXT) acl_button_search=Busca (busca fitxers) acl_button_delete=Suprimeix (suprimeix fitxers) acl_button_new=Nou (crea fitxer de text) acl_button_upload=Puja (puja un fitxer des del client, o treu-lo del servidor) acl_button_mkdir=Nou (crea un directori) acl_button_makelink=Nou (crea un enlla simblic) acl_button_rename=Renomena (renomena el fitxer) acl_button_sharing=Comparteix (configura els fitxers compartits Samba i NFS) acl_button_mount=Munta (munta o desmunta el sistema de fitxers) acl_button_copy=Copia, Retalla i Enganxa acl_unarchive=Pot extreure fitxers d'un arxiu pujat acl_unarchive2=Intenta-ho sempre acl_unarchive1=$yes acl_unarchive0=$no acl_dostounix=Pot convertir els salts de lnia Windows acl_chroot=Directori chroot del gestor de fitxers complet acl_relto=(relatiu a qualsevol directori chroot) acl_noperms=Pot canviar els permisos dels fitxers acl_nousers=Pot canviar el propietari dels fitxers acl_filesystems=Pot veure els punts de muntatge dels sistemes de fitxers acl_contents=Permet la recerca de continguts de fitxers share_title=Xarxa share_samba=Windows share_nfs=NFS share_son=Compartici de fitxers Windows activada share_soff=Compartici de fitxers Windows desactivada share_writable=Gravable share_available=Actualment actiu share_sheader=Opcions del recurs share_only=Nomes share_guest=Accs hoste share_comment=Comentari share_nheader=Opcions d'exportaci NFS share_non=Compartici de fitxers NFS activada share_noff=Compartici de fitxers NFS desactivada share_desc=Descripci share_ro=Hosts nomes lectura share_rw=Hosts lectura/escriptura share_root=Hosts amb accs root share_none=Cap share_all=Tot share_listed=Llistats... share_host=Hosts share_opts=Opcions share_s0=No et refis de ning share_s1=Refia't de no-root share_s2=Refia't de tothom share_lro=Noms lectura share_lrw=Lectura-escriptura log_create_export=He creat l'exportaci NFS $1 log_modify_export=He modificat l'exportaci NFS $1 log_delete_export=He suprimit l'exportaci NFS $1 log_create_share=He creat el recurs Samba $1 log_modify_share=He modificat el recurs Samba $1 log_delete_share=He suprimit el recurs Samba $1 log_save=He desat el fitxer $1 log_chmod=He canviat els permisos del fitxer $1 log_mkdir=He creat el directori $1 log_upload=He pujat el fitxer $1 log_link=He creat l'enlla simblic $1 a $2 log_relink=He modificat l'enlla simblic $1 a $2 log_copy=He copiat el fitxer $1 a $2 log_move=He desplaat el fitxer $1 a $2 log_delete=He esborrat el fitxer $1 log_attr=Estableix atributs sobre el fitxer $1 log_acl=Estableix ACL sobre el fitxer $1 search_eaccess=No tens perms per buscar en aquest directori search_title=Busca Fitxers search_ok=Busca ara search_dir=Busca al directori search_match=els fitxers que coincideixin amb search_cont=que continguin el text search_user=Usuari propietari search_group=Grup propietari search_any=Qualsevol search_type=Tipus de fitxer search_types_=Qualsevol search_types_f=Fitxer search_types_d=Directori search_types_l=Enlla simblic search_types_p=Pipe search_size=Mida del fitxer search_more=Ms de search_less=Menys de search_xdev=Busca muntatges anteriors search_edir=Hi falta el directori de recerca o b no s correcte search_ematch=Hi falta una expressi regular search_euser=Hi falta un nom d'usuari search_egroup=Hi falta un nom de grup search_esize=La mida del fitxer ha de ser un enter search_crit=Criteris de Recerca search_list=Resultats de la Recerca search_down=Descarrega search_edown=No has seleccionat cap fitxer de resultats de recerca per descarregar facl_eaccess=No tens perms per establir ACLs per a aquest fitxer attr_eattrs=No he trobat els atributs: $1 attr_efs=El sistema de fitxers $1 no suporta atributs attr_add=Afegeix Atribut attr_name=Nom de l'Atribut attr_value=Valor de l'Atribut attr_efailed=No he pogut establir els atributs de $1: $2 attr_title=Atributs de Fitxer de $1 attr_create=Crea Atribut attr_edit=Edita Atribut attr_ename=Hi falta el nom de l'atribut ext_eattrs=No he pogut obtenir els atributs EXT: $1 ext_efs=El sistema de fitxers $1 no suporta atributs EXT ext_title=Atributs EXT de $1 ext_header=Atributs EXT de fitxer ext_efailed=No he pogut establir els atributs de $1: $2 eattr_A=No actualitzis els temps d'accs eattr_a=Noms pot afegir al fitxer eattr_c=Comprimeix les dades del disc eattr_d=No en facis cpia amb dump eattr_i=No en permetis la modificaci eattr_s=Posa els blocs a zero en suprimir eattr_S=Fes sempre un sync desprs de gravar eattr_u=Desa el contingut per a desfer mount_eaccess=No tens perms per muntar sistemes de fitxers mount_efstab=No hi ha cap sistema de fitxers en aquest punt de muntatge mount_epoint=$1 no s un punt de muntatge mount_rusure1=Segur que vols muntar $1 de $2 ? mount_rusure2=Segur que vols desmuntar $1 de $2 ? mount_err1=No he pogut muntar $1: $2 mount_err2=No he pogut desmuntar $1: $2 mount_title1=Munta el sistema de fitxers mount_title2=Desmunta el sistema de fitxers zip_err=No puc extreure el fitxer: $1 zip_ecmd=Hi falta l'ordre $1 zip_eunzip=La descompressi ZIP ha fallat: $1 zip_ename=No sembla que sigui cap fitxer zip, tar ni tar.gz zip_euntar=El desarxivat TAR ha fallat: $1 zip_euntar2=La descompressi i desarxivat TAR ha fallat: $1 ddir_title=Descrrega de Directori ddir_rusure=Per descarregar el contingut de $1 com un fitxer d'arxiu, fes clic sobre una dels botons de tipus d'arxiu de sota. ddir_zip=ZIP ddir_tgz=TAR.GZ ddir_tar=TAR ebutton=Aquesta caracterstica no est disponible preview_etype=No he pogut determinar el tipus de fitxer per a $1 preview_etype2=$1 no s cap format d'imatge suportat preview_ecmd=L'ordre $1 necessria per escalar la imatge no est installada preview_eimage=Noms es poden previsualitzar imatges preview_title=Vista Prvia de $1 preview_bad=No he pogut carregar la imatge a previsualitzar preview_egd=No he pogut carregar la imatge amb GD html_efailed=No he pogut obrir l'editor HTML: $1 html_title=Edici de Fitxer HTML html_title2=Creaci de Fitxer HTML html_save=Desa i Tanca html_err=No he pogut desar el fitxer HTML history_title=Historial de Camins history_ok=Vs A history_button=Historial extract_etype=Noms es poden exterure fitxers extract_title=Extracci de Fitxer Comprimit extract_rusure=Segur que vols extreure el fitxer comprimit: extract_rusure2=Els fitxers existents al mateix directori es reescriuran. extract_err=No he pogut extreure el fitxer: $1 extract_yes=S, desprs suprimeix-lo file/lang/tr.bak0100644000567100000120000001317710754361753013527 0ustar jcameronwheelindex_title=Dosya Yneticisi index_nojava=Bu modl java gerektirir, fakat sizin taraycnz java'yi desteklemiyor top_open=A top_view=Gster top_edit=Deitir top_refresh=Yenile top_info=Bilgi top_delete=Sil top_new=Yeni top_upload=Ykleme(Upload) top_rename=Yeniden Adlandr top_copy=Kopyala top_cut=Kes top_paste=Yaptr top_share=Paylatr right_name=Ad right_size=Boyut right_user=Kullanc right_group=Grup right_date=Tarih edit_enormal=Sadece normal dosyalar deitirilebilir edit_title=$1 deitiriliyor edit_title2=Dosya oluturuluyor edit_filename=Dosya smi: edit_eover=$1 zerine yazlamaz edit_esave=Dosyann kaydedilmesinde hata olutu : $1 edit_eaccess='$1' kaydedilmesine izininiz yoktur info_file=Dosya info_path=Yol: info_type=Tip: info_size=Boyut: info_mod=Deitirildi: info_link=Link to:##### info_perms=Haklar info_user=Kullanc: info_group=Grup: info_other=Dierleri: info_sticky=Sticky: info_sticky2=Dosyalar sadece sahipleri silebilir info_own=Sahiplik info_setuid=Uid'yi belirt: info_setuid2=Kullanc Olarak altr info_setgid=Gid'yi Olutur: info_setgid2=Dosyalar grubun olsun info_setgid3=Grup olarak altr info_apply=Deiiklikleri uygula ... info_apply1=Sadece bu dizine info_apply2=Bu dizin ve dosyalarna info_apply3=Bu dizin ve alt dizinlerine info_efailed=Gncellemede hata olutu $1 : $2 info_read=Oku info_write=Yaz info_list=Listele info_exec=altr delete_dtitle=Dizin Sil delete_ftitle=Dosya Sil delete_ddesc=$1 dizinini ve iindekileri silmek istediinizden eminmisiniz? delete_fdesc=$1 dizinini silmek istediinizden eminmisiniz? delete_efailed=Silme ileminde hata olutu $1 : $2 mkdir_title=Yeni Dizin mkdir_dir=Yeni dizin: mkdir_eexists=$1 dizini mevcut mkdir_efailed=Dizin oluturmada hata olutu : $1 mkdir_eaccess='$1' dizini oluturmaya hakknz yok link_title=Link Olutur link_from=Link buradan: link_to=Link buraya: link_eexists=$1 her zaman mevcut link_efailed=Link oluturulurken hata olutu : $1 link_efrom='$1' den link oluturmaya hakknz yoktur link_efollow=Sembolik linkler oluturmaya hakknz yoktur rename_title=Yeniden Adlandr $1 rename_old=Eski smi: rename_new=Yeni smi: rename_ok=Yeniden Adlandr rename_eexists=$1 dosyas her zaman mevcut rename_efailed=Yeniden adlandrmada hata olutu : $1 rename_eold='$1'i yeniden adlandrmaya hakknz yoktur rename_enew='$1' olarak yeniden adlandyrmaya hakkynyz yoktur file_type0=Dizin file_type1=Yaz Dosyas file_type2=Resim Dosyas file_type3=kili Dosya file_type4=Dosya file_type5=Sembolik Link file_type6=Ara Dosyas file_type7=Boru view_enormal=Sadece normal dosyalar grntlenebilir view_eaccess=$1'e eriime hakknz yoktur view_eopen=Ama ileminde hata olutu $1 : $2 paste_ecopy=Yaptrmadan nce kopyalamal veya kesmelisiniz paste_egone=Kopyalanan dosya $1 artk yok paste_eover=$1 zerine yazlamaz paste_eself=Dosyay kendi zerine yaptramazsnz paste_emfailed=Tamada hata olutu : $1 paste_ecfailed=Kopyalamada hata olutu : $1 over_title=Dosya Mevcut over_msg=$1 dosyas her zaman mevcut. Yaptrlan dosyaya yeni bir isim girmek iin bo formu kullannz. over_new=Yeni dosya ismi over_ok=Tamam upload_efailed=Dosyann yklenmesinde hata olutu : $1 upload_title=Dosyay Ykle upload_file=Yklecek Dosya upload_dir=Dizine Ykleme upload_ok=Ykle upload_conv=DOS satrlar evirilsin mi? upload_efile=Yklenecek dosya seilmedi. upload_edir=Ykleme dizini mevcut deil upload_eperm=$1 oluturmanza izin verilmedi upload_ewrite=$1'i yazmada hata olutu : $2. find_eaccess=$1'e eriim izininiz yoktur find_eexist=$1, $2 iinde mevcut deil find_edir=$1, $2'de bir dizin deil cancel=ptal chmod_eaccess='$1'e eriim izininiz yoktur chmod_euser=$1 : Kullanc yok chmod_egroup=$1 : Grup yok chmod_elink=Sembolik linkte hata olutu : $1 chmod_echown=chown'da hata olutu : $1 chmod_echmod=chmod'da hata olustu : $1 copy_efrom='$1'den kopyalamanza izin verilmemitir copy_eto='$1'e kopyalamanza izin verilmemitir copy_elink=Sembolik linkte hata olutu : $1 delete_eaccess='$1'i silmede hata olutu list_eaccess=Bu dizine giri izininiz yoktur move_eto='$1'e tamaya hakknz yoktur move_afrom='$1'i tamaya hakkynyz yoktur acl_user=Sunucuda kullanc olarak dosyalara ula acl_umask=Yeni dosyalar iin umask acl_follow=Sembolik linkleri her zaman takip et. acl_dirs=Sadece dizinlere girilere izin ver. share_title=Paylatrma share_samba=Windows share_nfs=NFS share_son=Windows dosya paylam ak share_soff=Windows dosya paylam kapal share_writable=Yazlabilir? share_available=Aktif mi? share_sheader=Paylam seenekleri share_only=Sadece share_guest=Ziyareti girileri? share_comment=Aklama share_nheader=NFS sunum seenekleri share_non=NFS dosya paylam ak share_noff=NFS dosya paylam kapal share_desc=Aklama share_ro=Sadece okuma izinli makineler share_rw=Okuma-yazma izinli makineler share_root=Root girili makineler share_none=Hibiri share_all=Hepsi share_listed=Listeli... share_host=Makineler share_opts=Seenekler share_s0=Hikimseye gvenme share_s1=Root dndakilere gven share_s2=Herkese gven share_lro=Sadece okunur share_lrw=Okunur-yazlr log_create_export=NFS sunumu $1 oluturuldu log_modify_export=NFS sunumu $1 deitirildi log_delete_export=NFS sunumu $1 silindi log_create_share=Samba paylam $1 oluturuldu log_modify_share=Samba paylam $1 deitirildi log_delete_share=Samba paylam $1 silindi log_save=$1 dosyas kaydedildi log_chmod=$1 dosyasnn haklar deitirildi log_mkdir=$1 dizini oluturuldu log_upload=$1 dosyas yklendi log_link=$2'ye sembolik link $1 oluturuldu log_relink=$2'ye sembolik link $1 deitirildi log_copy=$1 dosyas $2'ye kopyaland log_move=$1 dosyas $2'ye tand log_delete=$1 dosyas silindi file/lang/pt_BR0100644000567100000120000002557510754361753013361 0ustar jcameronwheelacl_b=bytes acl_button_copy=Copiar, Cortar e Colar acl_button_delete=Deletar (deletar arquivos) acl_button_edit=Editar (editar arquivo texto) acl_button_ext=EXT (editar atributos EXT) acl_button_info=Informações (editar permissões e posse) acl_button_makelink=Novo (criar link simbólico) acl_button_mkdir=Novo (criar diretório) acl_button_mount=Montar (montar ou demosntar dados) acl_button_new=Novo (criar arqiovo texto) acl_button_rename=Renomear (renomear arquivo) acl_button_save=Salvar (baixar arquivo) acl_button_search=Procurar (procurar arquivo) acl_button_upload=Upload (enviar arquivo do cliente) acl_dirs=Permite acesso somente aos diretórios acl_follow=Seguir links simbólicos sempre? acl_goto=Abrir primeiro o diretório permitido? acl_home=Incluir diretório home do usuário Webmin acl_log=Logar todas as modificações nos arquivos? acl_ro=Modo somente leitura? acl_umask=Umask para novos arquivos acl_user=Acessar arquivos no servidor como usuário acl_user_def=O mesmo que no login do Webmin acltype_default_group=Grupo Padrão acltype_default_mask=Máscara Padrão acltype_default_other=Outros Padrão acltype_default_user=Usuário Padrão acltype_group=Grupo acltype_mask=Máscara acltype_other=Outros acltype_user=Usuário attr_add=Adicionar atributo attr_create=Adicionar atributo attr_eattrs=Falha ao receber atributos de : $1 attr_edit=Editar atributo attr_efailed=Falha ao setar atributos para $1 : $2 attr_efs=O sistema de arquivos $1 não suporta atributos attr_ename=Faltando o nome do atributo attr_name=Nome do atributo attr_title=Atributos do arquivo para $1 attr_value=Valor do atributo cancel=Cancelar chmod_eaccess=Você não está autorizado a acessar '$1' chmod_echmod=falha no chmod : $1 chmod_echown=falha no chown : $1 chmod_efollow=Você não está autorizado a editar links simbólicos chmod_egroup=$1 : grupo inválido chmod_elink=falha no link simbólico : $1 chmod_euser=$1 : usuário inválido copy_efrom=Você não está autorizado a copiar de '$1' copy_elink=falha no link simbólico : $1 copy_eto=Você não esta autorizado a copiar para '$1' delete_ddesc=Você tem certeza que deseja apagar permanentemente o diretório $1 e todo o seu conteúdo? delete_dtitle=Apagar diretório delete_eaccess=Você não esta autorizado a apagar '$1' delete_efailed=Falha ao apagar $1 : $2 delete_fdesc=Você tem certeza que deseja apagar permanentemente o arquivo $1 ? delete_ftitle=Apagar arquivo delete_mdesc=Você tem certeza que deseja apagar permanentemente estes arquivos e diretórios? : delete_mtitle=Apagar múltiplos arquivos eacl_aclname=Aplicar a eacl_aclperms=Permissões eacl_acltype=Tipo de ACL eacl_add=Adicionar ACL do tipo : eacl_create=Criar ACL eacl_eacls=Falha ao ler ACLs : $1 eacl_edefaults=Se o arquivo contém qualquer ACL padrão, ele precisa ter usuário, grupo e outras ACLs padrão. eacl_edefmask=Pode existir uma entrada a mais padrão para a máscara ACL eacl_edit=Editar ACL eacl_efailed=Falha ao setar ACL para $1 : $2 eacl_efs=O sistema de arquivos $1 não suporta ACLs eacl_emask=Pode existir uma entrada a mais para a máscara ACL eacl_eowner=Faltando o usuário ou grupo para aplicar a eacl_group=Grupo do arquivo $1 eacl_owner=Dono do arquivo eacl_remove=Remover ACL eacl_title=ACL para $1 eacl_user=Dono do arquivo $1 eattr_A=Nâo atualize os tempos de acesso eattr_S=Sempre sincronizar após escrever eattr_a=Pode somente adicionar ao fim do arquivo eattr_c=Comprimir dados no disco eattr_d=Não fazer backup com o dump eattr_i=Não permitir modificação eattr_s=Zerar blocos quando apagar eattr_u=Salvar conteúdo para recuperar edit_eaccess=Você não está autorizado a salvar '$1' edit_enormal=Somente arquivos comuns podem ser editados edit_eover=$1 não pode ser sobrescrito edit_esave=Falha ao salvar o arquivo : $1 edit_filename=Nome do arquivo: edit_title=Editando $1 edit_title2=Criando o arquivo ext_eattrs=Falha ao receber atributos EXT : $1 ext_efailed=Falha ao fixar atributos para $1 : $2 ext_efs=O sistema de arquivos $1 não suporta atributos EXT ext_header=Atributos EXT do arquivo ext_title=Atributos EXT para $1 facl_eaccess=Você não tem permissão para alterar ACLs para este arquivo file_type0=Directório file_type1=Arquivo texto file_type2=Arquivo de Imagem file_type3=Arquivo Binário file_type4=Arquivo file_type5=Link simbólico file_type6=Arquivo de dispositivo file_type7=Pipe find_eaccess=Você não tem permissão para acessar $1 find_edir=$1 não é um diretório em $2 find_eexist=$1 não existe em $2 index_eremote=Não há nenhum usuário Unix que corresponda ao login $1 do Webmin. index_nojava=Este módulo requer java para funcionar, porém o seu navegador não suporta java index_title=Gerenciador de Arquivos info_apply=Aplicar mudanças a info_apply1=Somente a este diretório info_apply2=Este diretório e seus arquivos info_apply3=Este diretório e todos os seus subdiretórios info_efailed=Falha ao atualizar $1 : $2 info_exec=Executar info_file=Arquivo info_group=Grupo: info_link=Link para: info_list=Listar info_mod=Modificado: info_octal=Octal: info_other=Outros: info_own=Dono info_path=Caminho: info_perms=Permissões info_read=Ler info_setgid=Setar gid: info_setgid2=Grupo inerente dos arquivos info_setgid3=Executar como grupo info_setuid=Setar uid: info_setuid2=Executar como usuário info_size=Tamanho: info_sticky=Sticky: info_sticky2=Somente os donos podem apagar os arquivos info_type=Tipo: info_user=Usuário: info_write=Escrever link_eexists=$1 já existe link_efailed=Falha ao criar link : $1 link_efollow=Você não está autorizado a criar links simbólicos link_efrom=Você não está autorizado a linkar de '$1' link_from=Link de: link_title=Criar Link link_to=Link para: list_eaccess=Você não esta autorizado a acessar este diretorio list_edir=Falha ao listar $1 : $2 log_acl=Setar ACL no arquivo $1 log_attr=Foram setados os atributos no arquivo $1 log_chmod=Permissões alteradas no arquivo $1 log_copy=Copiado o arquivo $1 para $2 log_create_export=Criada exportação NFS $1 log_create_share=Criado compartilhamento Samba $1 log_delete=Deletado o arquivo $1 log_delete_export=Deletada exportação NFS $1 log_delete_share=Deletado compartilhamento Samba $1 log_link=Criado o link simbólico $1 para $2 log_mkdir=Criado o diretório $1 log_modify_export=Modificada exportação NFS $1 log_modify_share=Modificado compartilhamento Samba $1 log_move=Movido o arquivo $1 para $2 log_relink=Modificado o link simbólico $1 para $2 log_save=Foi salvo o arquivo $1 log_upload=Foi enviado o arquivo $1 mkdir_dir=Novo diretório: mkdir_eaccess=Você não está autorizado a criar '$1' mkdir_eexists=$1 já existe mkdir_efailed=Falha ao criar diretório : $1 mkdir_title=Novo Diretório move_afrom=Você não está autorizado a mover '$1' move_eto=Você não está autorizado a mover para '$1' over_msg=O arquivo $1 já existe. Use o campo abaixo para digitar o nome do arquivo a ser colado. over_new=Novo nome do arquivo: over_ok=Ok over_title=Arquivo já existe paste_ecfailed=Falha ao copiar : $1 paste_ecopy=Você precisa recortar ou copiar antes de colar paste_egone=Arquivo copiado $1 não existe mais paste_emfailed=Falha ao mover : $1 paste_eover=$1 não pode ser sobrescrito paste_eself=Você não pode colar um arquivo sobre ele mesmo rename_eexists=Um arquivo chamado $1 já existe rename_efailed=Falha ao renomear : $1 rename_enew=Você não está autorizado a renomear para '$1' rename_eold=Você não está autorizado a renomear '$1' rename_new=Nome novo: rename_ok=Renomear rename_old=Nome antigo: rename_title=Renomear $1 right_date=Data right_group=Grupo right_name=Nome right_size=Tamanho right_user=Usuário search_any=Qualquer search_crit=Critério de pesquisa search_dir=Procurar no diretório search_eaccess=Você não tem autorização para procurar neste diretório search_edir=Diretório de procura inválido ou faltando search_egroup=Faltando nome do grupo search_ematch=Falatando coincidir regexp search_esize=O tamanho do arquivo precisa ser um inteiro search_euser=Faltando nome de usuário search_group=Pertençam ao grupo search_less=Menos do que search_list=Resultados da pesquisa search_match=Por arquivos que coincidam com search_more=Mais do que search_ok=Procurar agora search_size=Tamanho do arquivo search_title=Procurar arquivos search_type=Tipo de arquivo search_types_=Qualquer search_types_d=Diretório search_types_f=Arquivo search_types_l=Link simbólico search_types_p=Pipe nomeado search_user=Pertençam ao usuário search_xdev=Procurar montagens anteriores? share_all=Todos share_available=Ativo atualmente? share_comment=Comentário share_desc=Descriçao share_guest=Acesso a convidados? share_host=Hosts share_listed=Listados.. share_lro=Somente leitura share_lrw=Leitura e escrita share_nfs=NFS share_nheader=Opções de exportação NFS share_noff=Compartilhamento de arquivos NFS desabilitado share_non=Compartilhamento de arquivos NFS abilitado share_none=Nenhum share_only=Somente share_opts=Opções share_ro=Hosts somente leitura share_root=Hosts com acesso root share_rw=Hosts leitura e escrita share_s0=Não confiar em ninguém share_s1=Confiar em não root share_s2=Confiar em todos share_samba=Windows share_sheader=Opções de compartilhamento share_soff=Compartilhamento de arquivos Windows desabilitado share_son=Compartilhamento de arquivos Windows abilitado share_title=Compartilhamento share_writable=Permitir escrita? switch_euser=O usuário Unix não existe! top_attr=Atributos top_copy=Copiar top_cut=Recortar top_delete=Apagar top_down=Salvar top_eacl=ACL top_edit=Editar top_ext=EXT top_info=Info top_new=Novo top_paste=Colar top_refresh=Atualizar top_rename=Renomear top_ret=Índice top_search=Procurar top_share=Compartilhar top_upload=Upload upload_conv=Converter novas linhas do DOS? upload_dir=Upload para qual diretório upload_edir=Diretório de upload não existe. upload_efailed=Falha ao abrir upload : $1 upload_efile=Não foi selecionado nenhum arquivo para upload. upload_eperm=Você não está autorizado a criar $1 upload_ewrite=Falha a escrever para $1 : $2. upload_file=Arquivo para upload upload_ok=Upload upload_title=Arquivo para upload view_eaccess=Você não está autorizado a acessar $1 view_enormal=Somente arquivos comuns podem ser vizualizados view_enormal2=Somente pode ser feito download de arquivos comuns view_eopen=Falha ao abrir $1 : $2 file/lang/sk0100644000567100000120000002213310754361753012753 0ustar jcameronwheelindex_title=Sprvca Systmu Sborov index_eremote=Žiadny Unixov užvateľ nezodpoved hodnotm z Webmin prihlsečnia $1. switch_euser=Tento Unixov užvateľ nejestvuje! top_ret=Index top_down=Ulož top_edit=Otvor pre zmeny top_refresh=Obnov top_info=Info top_eacl=ACL top_attr=Atribty top_ext=EXT top_delete=Vymaž top_new=Nov(/) top_upload=Nalož top_rename=Premenuj top_copy=Kpia top_cut=Vyber top_paste=Vlož top_share=Zdieľanie top_search=Njdi right_name=Meno right_size=Veľkosť right_user=Užvateľ right_group=Skupina right_date=Dtum edit_enormal=Len normlne sbory mžu byť menen edit_title=Zmeny na $1 edit_title2=Vytvnie sboru edit_filename=Meno sboru: edit_eover=$1 nemže byť prepsan edit_esave=NEmoohol uložiť : $1 edit_eaccess=Nemš povolenie na ukladanie '$1' info_file=Sbor info_path=Cesta: info_type=Typ: info_size=Veľkosť: info_mod=Zmenen: info_link=Vzba na: info_perms=Povolenia info_user=Užvateľ: info_group=Skupina: info_other=In: info_sticky=Lepčkav: info_sticky2=Len majitelia mžu vymazať info_own=Majetok info_setuid=Setuid: info_setuid2=Vykonaj ako užvateľ info_setgid=Setgid: info_setgid2=Sbory dedia skupinu info_setgid3=Vykonaj ako skupina info_apply=AKtivuj zmeny info_apply1=Len tento adresr info_apply2=Tento adresr a jeho sbory info_apply3=Tento adresr a všetky jeho priraden adresre info_efailed=Porucha pri zmene $1 : $2 info_read=Čtaj info_write=Pš info_list=Zoznam info_exec=Exec eacl_eacls=Načtavanie ACL sborov nebolo spešn : $1 eacl_acltype=Typ ACL eacl_aclname=Použi na eacl_aclperms=Povolenia eacl_add=Pridaj typ ACL : eacl_remove=Odnm ACL eacl_efs=Sborov systm $1 plne nepodporuje ACLs eacl_create=Vytvor ACL eacl_edit=Edituj ACL eacl_user=Majiteľ sboru $1 eacl_group=Skupina sboru $1 eacl_eowner=Užvateľ alebo skupina sboru neexistuje eacl_efailed=Nemohol som nastaviť ACL pre $1 : $2 eacl_emask=Maximlne mže byť použit jedna maskovan ACL eacl_edefmask=Maximlne mže byť použit jedna zkladn maskovan ACL eacl_title=ACL pre $1 eacl_owner=Majiteľ sboru eacl_edefaults=Ak sbor m zkladn ACL, mus tiež mať zkladnho majiteľa, skupinu a ostatn ACL. acltype_user=Užvateľ acltype_group=Skupina acltype_other=In acltype_mask=Maska acltype_default_user=Zkladn užvateľ acltype_default_group=Zkladn skupina acltype_default_other=Zkladn In acltype_default_mask=Zkladn Maska delete_mtitle=Vymaž viacero sborov delete_dtitle=Vymaž adresr delete_ftitle=Vymaž sbor delete_ddesc=Si si ist že chceš permanente vymazať adresr $1 a všetok jeho obsah? delete_fdesc=Si si ist že chceš permanente vymazať sbor $1 ? delete_mdesc=Si si ist že chceš permanente vymazať adresre a sbory? : delete_efailed=Nemožn vymazať $1 : $2 mkdir_title=Novo-vytvoren Adresr mkdir_dir=Nov Adresr: mkdir_eexists=$1 už jestvuje mkdir_efailed=Vytvorenie Adresru nebolo spešn : $1 mkdir_eaccess=Nemš povolenie na vytvorenie '$1' link_title=Vytvor Spojenie link_from=Spojenie z: link_to=Spojenie na: link_eexists=$1 už jestvuje link_efailed=Spojenie nebolo spešn : $1 link_efrom=Nemš dovolen vytvrať spojenia na '$1' link_efollow=Nemš dostatočn povolenie na vytvranie symbolickch spojen rename_title=Premenuj $1 rename_old=Pvodn meno: rename_new=Nov meno: rename_ok=Premenuj rename_eexists=Sbor s menom $1 už jestvuje rename_efailed=Premenovvanie nebolo spešn : $1 rename_eold=Nemš dovolen premenovvať '$1' rename_enew=Nemš dovolen premenovvať na '$1' file_type0=Adresr file_type1=Textov sbor file_type2=Obrzok file_type3=Binarny sbor file_type4=Sbor file_type5=Symbolick spojenie file_type6=Sbor ovldača file_type7=Rrka view_enormal=Len normlne sbory mžu byť prezeran view_enormal2=Len normlne sbory mžu byť sťahovan view_eaccess=Nemš povolen prstup k $1 view_eopen=Otvorenie nebolo spešn $1 : $2 paste_ecopy=Musš najprv vybrať alebo skoprovať ak chceš vkladať paste_egone=Sbor koprovan $1 už neexiststuje paste_eover=$1 nemže byť prepsan paste_eself=Nemžeš vkladať sbor do adresra so sborom s rovnakm menom paste_emfailed=Premiestnenie nebolo spešn : $1 paste_ecfailed=Vytvranie kpie nebolo spešn : $1 over_title=Sbor už Existstuje over_msg=Sbor $1 už existstuje. Použi polčko nižšie na premenovanie vkladanho sboru. over_new=Nov meno sboru: over_ok=Ok upload_efailed=Naložen sbor : $1 sa nepodarilo otvoriť upload_title=Nalož sbor upload_file=Sbor pre nakladanie upload_dir=Nalož do adresra upload_ok=Nalož upload_conv=Kovertuj DOS-ov symboly pre nov riadok? upload_efile=Nebol vybrat žiaden sbor na nakladanie. upload_edir=Adresr na nakladanie neexistuje. upload_eperm=You are not allowed to create $1 upload_ewrite=Failed to write to $1 : $2. find_eaccess=You are not allowed to access $1 find_eexist=$1 does not exist in $2 find_edir=$1 is not a directory in $2 cancel=Zruš chmod_eaccess=You are not allowed to access '$1' chmod_euser=$1 : no such user chmod_egroup=$1 : no such group chmod_elink=symlink failed : $1 chmod_echown=chown failed : $1 chmod_echmod=chmod failed : $1 chmod_efollow=You are not allowed to edit symbolic links copy_efrom=You are not allowed to copy from '$1' copy_eto=You are not allowed to copy to '$1' copy_elink=symlink failed : $1 delete_eaccess=You are not allowed to delete '$1' list_eaccess=You are not allowed to access this directory list_edir=Failed to list $1 : $2 move_eto=You are not allowed to move to '$1' move_afrom=You are not allowed to move '$1' acl_user=Access files on server as user acl_user_def=Same as Webmin login acl_umask=Umask for new files acl_follow=Always follow symlinks? acl_ro=Read-only mode? acl_dirs=Only allow access to directories acl_home=Include home directory of Webmin user acl_log=Log all file modifications? acl_goto=Open first allowed directory? share_title=Sharing share_samba=Windows share_nfs=NFS share_son=Windows file sharing enabled share_soff=Windows file sharing disabled share_writable=Writable? share_available=Currently active? share_sheader=Sharing options share_only=Only share_guest=Guest access? share_comment=Comment share_nheader=NFS export options share_non=NFS file sharing enabled share_noff=NFS file sharing disabled share_desc=Description share_ro=Read-only hosts share_rw=Read-write hosts share_root=Root access hosts share_none=None share_all=All share_listed=Listed.. share_host=Hosts share_opts=Options share_s0=Trust nobody share_s1=Trust non-root share_s2=Trust everybody share_lro=Read-only share_lrw=Read-write log_create_export=Created NFS export $1 log_modify_export=Modified NFS export $1 log_delete_export=Deleted NFS export $1 log_create_share=Created Samba share $1 log_modify_share=Modified Samba share $1 log_delete_share=Deleted Samba share $1 log_save=Saved file $1 log_chmod=Changed permissions on file $1 log_mkdir=Created directory $1 log_upload=Uploaded file $1 log_link=Created symbolic link $1 to $2 log_relink=Modified symbolic link $1 to $2 log_copy=Copied file $1 to $2 log_move=Moved file $1 to $2 log_delete=Deleted file $1 log_attr=Set attributes on file $1 log_acl=Set ACL on file $1 search_eaccess=You are not allowed to search this directory search_title=Find files search_ok=Search Now search_dir=Search directory search_match=For files matching search_user=Owned by user search_group=Owned by group search_any=Any search_type=File type search_types_=Any search_types_f=File search_types_d=Directory search_types_l=Symbolic link search_types_p=Named pipe search_size=File size search_more=More than search_less=Less than search_xdev=Search past mounts? search_edir=Missing or invalid search directory search_ematch=Missing matching regexp search_euser=Missing username search_egroup=Missing group name search_esize=File size must be an integer search_crit=Search criteria search_list=Search results facl_eaccess=You are not allowed to set ACLs for this file attr_eattrs=Failed to get attributes : $1 attr_efs=The filesystem $1 does not support attributes attr_add=Add Attribute attr_name=Attribute Name attr_value=Attribute Value attr_efailed=Failed to set attributes for $1 : $2 attr_title=File Attributes for $1 attr_create=Add Attribute attr_edit=Edit Attribute attr_ename=Missing attribute name ext_eattrs=Failed to get EXT attributes : $1 ext_efs=The filesystem $1 does not support EXT attributes ext_title=EXT attributes for $1 ext_header=EXT file attributes ext_efailed=Failed to set attributes for $1 : $2 eattr_A=Do not update access times eattr_a=Can only append to file eattr_c=Compress data on disk eattr_d=Do not backup with dump eattr_i=Do not allow modification eattr_s=Zero blocks when deleting eattr_S=Always sync after writing eattr_u=Save contents for undeletion file/lang/ru_SU0100644000567100000120000002255610754361753013404 0ustar jcameronwheelindex_title= index_nojava= java, java index_eremote= Unix Webmin $1. switch_euser= Unix ! top_ret= top_down= top_edit= top_refresh= top_info= top_eacl=ACL top_attr= top_ext=EXT top_delete= top_new= top_upload= top_rename= top_copy= top_cut= top_paste= top_share= top_search= right_name= right_size= right_user= right_group= right_date= edit_enormal= edit_title= $1 edit_title2= edit_filename= : edit_eover=$1 edit_esave= : $1 edit_eaccess= '$1' info_file= info_path=: info_type=: info_size=: info_mod=: info_link= : info_perms= info_user=: info_group=: info_other=: info_octal= : info_sticky= sticky: info_sticky2= info_own= info_setuid= setuid: info_setuid2= info_setgid= setgid: info_setgid2= info_setgid3= info_apply= info_apply1= info_apply2= info_apply3= info_efailed= $1 : $2 info_read= info_write= info_list= info_exec= eacl_eacls= ACL : $1 eacl_acltype= ACL eacl_aclname= eacl_aclperms= eacl_add= ACL : eacl_remove= ACL eacl_efs= $1 ACL eacl_create= ACL eacl_edit= ACL eacl_user= $1 eacl_group= $1 eacl_eowner= eacl_efailed= ACL $1 : $2 eacl_emask=There can be at most one mask ACL entry eacl_edefmask=There can be at most one default mask ACL entry eacl_title=ACL $1 eacl_owner= eacl_edefaults=If a file has any default ACL, it must have default user, group and other ACLs. acltype_user= acltype_group= acltype_other= acltype_mask= acltype_default_user= acltype_default_group= acltype_default_other= acltype_default_mask= delete_mtitle= delete_dtitle= delete_ftitle= delete_ddesc= $1 ? delete_fdesc= $1 ? delete_mdesc= ? : delete_efailed= $1 : $2 mkdir_title= mkdir_dir= : mkdir_eexists=$1 mkdir_efailed= : $1 mkdir_eaccess= '$1' link_title= link_from=: link_to= : link_eexists=$1 link_efailed= : $1 link_efrom= '$1' link_efollow= rename_title= $1 rename_old= : rename_new= : rename_ok= rename_eexists= $1 rename_efailed= : $1 rename_eold= '$1' rename_enew= '$1' file_type0= file_type1= file_type2= file_type3= file_type4= file_type5= file_type6= file_type7= view_enormal= view_enormal2= view_eaccess= $1 view_eopen= $1 : $2 paste_ecopy= paste_egone= $1 paste_eover=$1 paste_eself= paste_emfailed= : $1 paste_ecfailed= : $1 over_title= over_msg= $1 . . over_new= : over_ok= upload_efailed= : $1 upload_title= upload_file= upload_dir= upload_ok= upload_conv= DOS? upload_efile= . upload_edir= . upload_eperm= $1 upload_ewrite= $1 : $2. find_eaccess= $1 find_eexist=$1 $2 find_edir=$1 $2 cancel= chmod_eaccess= '$1' chmod_euser=$1 : chmod_egroup=$1 : chmod_elink= symlink : $1 chmod_echown= chown : $1 chmod_echmod= chmod : $1 chmod_efollow= copy_efrom= '$1' copy_eto= '$1' copy_elink= symlink : $1 delete_eaccess= '$1' list_eaccess= list_edir= $1 : $2 move_eto= '$1' move_afrom= '$1' acl_user= acl_user_def= Webmin acl_umask=Umask acl_follow= ? acl_ro= ? acl_dirs= acl_home= Webmin acl_log= ? acl_goto= ? share_title= share_samba=Windows share_nfs=NFS share_son= Windows share_soff= Windows share_writable= ? share_available= ? share_sheader= share_only= share_guest= (Guest)? share_comment= share_nheader= NFS share_non= NFS share_noff= NFS share_desc= share_ro=, share_rw=, share_root=, root share_none= share_all= share_listed=.. share_host= share_opts= share_s0= nobody share_s1= -root share_s2= share_lro= share_lrw=/ log_create_export= NFS $1 log_modify_export= NFS $1 log_delete_export= NFS $1 log_create_share= Samba $1 log_modify_share= Samba $1 log_delete_share= Samba $1 log_save= $1 log_chmod= $1 log_mkdir= $1 log_upload= $1 log_link= $1 $2 log_relink= $1 $2 log_copy= $1 $2 log_move= $1 $2 log_delete= $1 log_attr= $1 log_acl= $1 ACL search_eaccess= search_title= search_ok= search_dir= search_match= search_user= search_group= search_any= search_type= search_types_= search_types_f= search_types_d= search_types_l= search_types_p= search_size= search_more= search_less= search_xdev= ? search_edir= search_ematch= search_euser= search_egroup= search_esize= search_crit= search_list= facl_eaccess= ACL attr_eattrs= : $1 attr_efs= $1 attr_add= attr_name= attr_value= attr_efailed= $1 : $2 attr_title= $1 attr_create= attr_edit= attr_ename= ext_eattrs= EXT : $1 ext_efs= $1 EXT ext_title= EXT $1 ext_header= EXT ext_efailed= EXT $1 : $2 eattr_A= eattr_a= eattr_c= eattr_d= dump eattr_i= eattr_s= eattr_S= eattr_u= file/lang/fa0100664000567100000120000004562710754361753012743 0ustar jcameronwheel index_title=مدير پرونده index_nojava=اين پيمانه جهت اجرا شدن نياز به جاوا دارد اما مرورگر شمااز جاوا پشتيباني نمي‌کند. index_eremote=کاربر يونيکسي که با $1 جهت ورود به وب‌مين مطابقت کند وجود ندارد. switch_euser=کاربر يونيکس وجود ندارد! top_ret=شاخص top_down=ذخيره top_edit=ويرايش top_refresh=بازآوري top_info=اطلاعات top_eacl=ACL top_attr=Attrs top_ext=EXT top_delete=حذف top_new=جديد top_upload=بارگيري top_rename=تغيير نام top_copy=رونوشت top_cut=بريدن top_paste=چسباندن top_share=اشتراک گذاري top_mount=سوار کردن top_search=يافتن top_config=پيکربندي right_name=نام right_size=اندازه right_user=کاربر right_group=گروه right_date=تاريخ edit_enormal=فقط پرونده‌هاي عادي قابل ويرايش مي‌باشند edit_title=در حال ويرايش $1 edit_title2=در حال ايجاد کردن پرونده edit_filename=نام پرونده: edit_goto=برو به edit_find=يافتن edit_gotoline=برو به خط edit_replace=جايگزين کردن edit_all=جايگزين کردن همه edit_searchfor=جستجو براي edit_replaceby=جايگزين کردن با edit_eover=$1 قادر به نوشتن مجدد نمي‌باشد edit_esave=عدم موفقيت در ذخيره کردن پرونده: $1 edit_eaccess=شما اجازه ذخيره کردن نداريد '$1' edit_efollow=شما اجازه نوشتن برروي اتصال نمادين '$1' را نداريد edit_notfound=متن '$1' يافت نشد edit_saveclose=ذخيره کردن و بستن edit_elength=پرونده کوتاه شده‌است info_file=پرونده info_path=مسير: info_type=نوع: info_size=اندازه: info_mod=تاريخ اصلاح: info_link=اتصال به: info_perms=مجوزها info_user=کاربر: info_group=گروه: info_other=ديگران: info_octal=مبناي هشت: info_sticky=محکم: info_sticky2=تنها مالک مي‌تواند پرونده‌ها را حذف کند info_own=مالکيت info_setUID=قراردادن UID: info_setUID2=اجرا به‌عنوان کاربر info_setgid=قراردادن GID: info_setgid2=پرونده‌ها از گروه ارث برند info_setgid3=اجرا به‌عنوان گروه info_apply=به‌کاربستن تغييرات در info_apply1=فقط اين فهرست راهنما info_apply2=اين فهرست راهنما و پرونده‌هايش info_apply3=اين فهرست راهنما و کليه زير فهرستها info_efailed=عدم موفقيت در به‌روزرساني $1 info_read=خواندن info_write=نوشتن info_list=ليست info_exec=اجرا eacl_eacls=عدم موفقيت در خواندن ACLها: $1 eacl_acltype=نوع ACL eacl_aclname=به‌کاربستن در eacl_aclperms=مجوزها eacl_add=اضافه کردن ACL نوع: eacl_remove=حذف ACL eacl_efs=سيستم پرونده $1 از ACLها پشتيباني نمي‌کند eacl_create=ايجاد ACL eacl_edit=ويرايش ACL eacl_user=مالک پرونده $1 eacl_group=گروه پرونده $1 eacl_eowner=کاربر يا گروه جهت به‌کاربستن يافت نشد eacl_efailed=عدم موفقيت در قرار دادن ACL براي $1: $2 eacl_emask=حداکثر مي‌توان يک پوشش ورودي ACL داشت eacl_edefmask=حداکثر مي‌توان يک پوشش ورودي ACL پيش‌گزيده داشت eacl_title=ACL براي $1 eacl_owner=مالک پرونده eacl_edefaults=اگر پرونده شامل تعدادي ACL پيش‌گزيده باشد بايد کاربر، گروه و ACLهاي پيش‌گزيده ديگري داشته باشد acltype_user=کاربر acltype_group=گروه acltype_other=ديگران acltype_mask=پوشش acltype_default_user=کاربر پيش‌گزيده acltype_default_group=گروه پيش‌گزيده acltype_default_other=ديگران پيش‌گزيده acltype_default_mask=پوشش پيش‌گزيده delete_mtitle=حذف چندين پرونده delete_dtitle=حذف فهرست راهنما delete_ftitle=حذف پرونده delete_ddesc=آيا از حذف دائم فهرست راهنماي $1 و همه محتويات آن مطمئن هستيد؟ delete_fdesc=آيا از حذف پرونده $1 مطمئن هستيد؟ delete_mdesc=آيا از حذف دائمي اين پرونده‌ها و فهرست راهنماها مطمئن هستيد؟ delete_efailed=عدم موفقيت در حذف $1: $2 mkdir_title=فهرست راهنماي جديد mkdir_dir=فهرست راهنماي جديد: mkdir_eexists=$1 از قبل وجود دارد mkdir_efailed=عدم موفقيت در ايجاد فهرست راهنماي: $1 mkdir_eaccess=شما اجازه ايجاد $1 را نداريد link_title=ايجاد اتصال link_from=اتصال از: link_to=اتصال به: link_eexists=$1 از قبل وجود دارد link_efrom=منبع اتصال بايد يک مسير مطلق باشد link_efailed=عدم موفقيت در اتصال: $1 link_efrom2=شما اجازه اتصال از '$1' را نداريد link_efollow=شما اجازه ايجاد اتصال نمادين را نداريد rename_title=تغيير نام $1 rename_old=نام قبلي: rename_new=نام جديد: rename_ok=تغيير نام rename_eexists=پرونده‌اي با نام $1 از قبل وجود دارد rename_efailed=عدم موفقيت در تغيير نام: $1 rename_eold=شما اجازه تغيير نام '$1' را نداريد rename_enew=شما اجازه تغيير نام به '$1' را نداريد file_type0=فهرست راهنما file_type1=پرونده متني file_type2=پرونده تصويري file_type3=پرونده دودويي file_type4=پرونده file_type5=اتصال نمادين file_type6=پرونده دستگاه file_type7=لوله view_enormal=فقط پرونده‌هاي متني را مي‌توان ديد view_enormal2=فقط پرونده‌هاي معمولي را مي‌توان بار کرد view_eaccess=شما اجازه دستيابي به $1 را نداريد view_eopen=عدم موفقيت در باز کردن $1:$2 view_edir=ايجاد بايگاني تنها براي فهرست راهنماهاي امکان پذير مي‌باشد view_ecmd=دستور $1 که براي ايجاد بايگاني لازم است نصب نشده‌است view_ecomp=عدم موفقيت در ايجاد بايگاني: $1 view_earchive=شما اجازه بارکردن بايگانيها را نداريد view_earchmax=فهرست راهنماي انتخاب شده بزرگ‌تر از بيشترين مقداري است که براي بايگاني در نظر گرفته شده‌است ($1 بايت) paste_ecopy=شما قبل از چسباندن بايد ببريد يا رونوشت نمائيد paste_egone=پرونده رونوشت شده $1 وجود ندارد paste_eover=$1 قابل باز نويسي نمي‌باشد paste_eself=شما نمي‌توانيد يک پرونده را برروي خودش بچسبانيد paste_emfailed=عدم موفقيت در انتقال: $1 paste_ecfailed=عدم موفقيت در رونوشت: $1 over_title=پرونده وجود دارد over_msg=پرونده $1 از قبل وجود دارد از حوزه زير جهت وارد کردن نام جديد براي پرونده چسبانده شده‌استفاده نمائيد over_new=نام پرونده جديد: over_ok=تاييد upload_efailed=عدم موفقيت در باز کردن بارگيري شده: $1 upload_title=بارگيري پرونده upload_file=پرونده جهت بارگيري upload_dir=بارگيري به فهرست راهنما upload_ok=بارگيري upload_conv=آيا خطوط جديد DOS تبديل شوند؟ upload_efile=پرونده‌اي براي بارگيري انتخاب نشده upload_edir=فهرست راهنماي مقصد بارگيري موجود نيست upload_eperm=شما اجازه ايجاد $1 را نداريد upload_ewrite=عدم موفقيت در نوشتن درون $1:$2 upload_already=پرونده $1 از قبل وجود دارد از باز نويسي روي آن مطمئن هستيد upload_elink=نمي‌توان به يک اتصال نمادين بارگيري نمود upload_zip=آيا پرونده‌هاي tarيا zip از فشردگي خارج شوند؟ upload_yes=بله و سپس حذف شود find_eaccess=شما اجازه دستيابي به $1 را نداريد find_eexist=$1 درون $2 وجود ندارد find_edir=$1 يک فهرست راهنما در $2 نيست cancel=لغو close=بستن eopen=عدم موفقيت در بارگيري کردن: $1 chmod_eaccess=شما اجازه دستيابي به '$1' را نداريد chmod_euser=$1: چنين کاربري وجود ندارد chmod_egroup=$1: چنين گروهي وجود ندارد chmod_elink=عدم موفقيت در اتصال نمادين chmod_echown=عدم موفقيت در تغيير مالکيت: $1 chmod_echmod=عدم موفقيت در تغيير chmod: $1 chmod_efollow=شما اجازه اجازه ويرايش اتصالهاي نمادين را نداريد copy_efrom=شما اجازه اجازه رونوشت برداشتن از $1 را نداريد copy_eto=شما اجازه اجازه رونويسي در $1 را نداريد copy_elink=عدم موفقيت در اتصال نمادين: $1 delete_eaccess=شما اجازه اجازه حذف $1 را نداريد list_eaccess=شما اجازه اجازه دستيابي به اين فهرست راهنما را نداريد list_edir=عدم موفقيت در ليست کردن$1: $2 move_eto=شما اجازه اجازه منتقل کردن به $1 را نداريد move_afrom=شما اجازه اجازه انتقال '$1' را نداريد acl_user=دستيابي به پرونده برروي کارساز به‌عنوان کاربر acl_user_def=مانند وب‌مين acl_umask=پوشش براي پرونده‌هاي جديد acl_follow=آيا اتصالهاي نمادين دنبال شوند؟ acl_fyes=اگر صاحبان آن يکسان باشند acl_ro=آيا حالت فقط خواندني است؟ acl_dirs=فقط اجازه دستيابي به اين فهرست (هاي) راهنما داه شود acl_nodirs=دستيابي به فهرست (هاي) راهنما ممنوع شود acl_home=به اضافه فهرست شخصي کاربر وب‌مين acl_log=آيا کليه اصلاحات پرونده‌ها ثبت شود؟ acl_goto=اولين فهرست راهنماي اجازه داده شده باز شود؟ acl_max=بيشينه اندازه بار گذاري acl_unlim=نامحدود acl_b=بايت acl_archive=آيا مي‌توان بايگانيهاي فهرستهاي راهنما را بار کرد؟ acl_archmax=بله، اگر کوچک‌تر است از: acl_buttons=دگمه‌هاي قابل دستيابي در نوار ابزار acl_button_save=ذخيره(بار کردن پرونده) acl_button_edit=ويرايش(ويرايش پرونده‌هاي متني) acl_button_info=اطلاعات (ويرايش مجوزها و مالکيت ) acl_button_acl=ACL (ويرايش ACL) acl_button_attr=Attr (ويرايش خصيصه‌هاي XFS) acl_button_ext=EXT (ويرايش خصيصه‌هاي EXT ) acl_button_search=يافتن (يافتن پرونده‌ها) acl_button_delete=حذف(حذف پرونده‌ها) acl_button_new=جديد(ايجاد پرونده متني) acl_button_upload=بارگيري(بارگيري پرونده‌ها توسط کارخواه) acl_button_mkdir=جديد (ايجاد فهرست راهنما) acl_button_makelink=جديد (ايجاد اتصال نمادين) acl_button_rename=تغيير نام (تغيير نام پرونده) acl_button_sharing=اشتراک گذاري(تنظيم کردن سامبا و اشتراک گذاري پرونده NFS) acl_button_mount=سوار (سوار يا پياده کردن سيستم پرونده ) acl_button_copy=رونوشت٬ برش و چسباندن acl_unarchive=آيا مي‌توان پرونده‌هاي بايگاني بارگيري شده را استخراج نمود؟ acl_unarchive2=هميشه سعي شود acl_unarchive1=$Yes acl_unarchive0=$No acl_dostounix=آيا مي‌توان خطوط جديد تبديل شده Dos داشت؟ acl_chroot=تغيير فهرست راهنماي مدير سيستم براي مدير پرونده وارد شده: acl_relto=(وابسته به فهرست راهنماي هر مدير سيستم chroot) share_title=اشتراک گذاري share_samba=ويندوز share_nfs=NFS share_son=اشتراک گذاري پرونده ويندوز فعال شود share_soff=اشتراک گذاري پرونده ويندوز غيرفعال شود share_writable=آيا قابل نوشتن است؟ share_available=آيا در حال حاضر فعال است؟ share_sheader=گزينه‌هاي اشتراک گذاري share_only=فقط share_guest=آيا براي مهمان قابل دستيابي است؟ share_comment=شرح share_nheader=گزينه‌هاي برون‌برد NFS share_non=اشتراک گذاري پرونده NFS فعال شود share_noff=اشتراک گذاري پرونده NFS غيرفعال شود share_desc=شرح share_ro=ميزبانهاي فقط خواندني share_rw=ميزبانهاي خواندني و نوشتني share_root=ميزبانهاي دستيابي به ريشه share_none=هيچ share_all=همه share_listed=ليست شده.. share_host=ميزبانها share_opts=گزينه‌ها share_s0=هيچ کس مطمئن نيست share_s1=هيچ کس غير از root مطمئن نيست share_s2=همه مطمئن هستند share_lro=فقط خواندني share_lrw=خواندني و نوشتني log_create_export=برون‌برد $1 NFS ايجاد شد. log_modify_export=برون‌برد $1 NFS تغيير کرد. log_delete_export=برون‌برد $1 NFS حذف شد. log_create_share=اشتراک $1 سامبا ايجاد شد log_modify_share=اشتراک $1 سامبا تغيير کرد log_delete_share=اشتراک $1 سامبا حذف شد log_save=پرونده $1 ذخيره شد log_chmod=مجوزهاي پرونده $1 تغيير داده شد log_mkdir=فهرست راهنماي $1ايجاد شد log_upload=پرونده $1 بار گذاري شد log_link=اتصال نمادين از $1 به $2 ايجاد شد log_relink=اتصال نمادين از $1 به $2 تغيير کرد log_copy=از پرونده $1 در $2 رونويسي شد log_move=پرونده $1 به $2 حرکت داده شد log_delete=پرونده $1حذف شد log_attr=خصيصه‌هاي پرونده $1 قرار داده شد log_acl=ACL پرونده $1قرار داده شد search_eaccess=شما اجازه جستجو در اين فهرست راهنما را نداريد search_title=يافتن پرونده‌ها search_ok=جستجو search_dir=جستجو در فهرست راهنما search_match=براي تطبق دادن پرونده‌ها search_user=کاربر مالک search_group=گروه مالک search_any=همه search_type=نوع پرونده search_types_=همه search_types_f=پرونده search_types_d=فهرست راهنما search_types_l=اتصال نمادين search_types_p=لوله نامدار search_size=اندازه پرونده search_more=بيش از search_less=کمتر از search_xdev=آيا سوار شده‌هاي قبلي نيز جستجو شود؟ search_edir=فهرست راهنماي جستجو نامعتبر است و يا يافت نشد search_ematch=عبارت با قاعده تطبيق يافت نشد search_euser=اسم‌کاربر يافت نشد search_egroup=نام گروه يافت نشد search_esize=اندازه پرونده بايد يک عدد صحيح باشد search_crit=معيارهاي جستجو search_list=نتايج جستجو facl_eaccess=شما اجازه قرار دادن ACLها براي اين پرونده را نداريد attr_eattrs=عدم موفقيت در دريافت خصيصه‌ها: $1 attr_efs=سيستم پرونده $1 از خصيصه‌ها پشتيباني نمي‌کند attr_add=افزودن خصيصه attr_name=نام خصيصه attr_value=مقدار خصيصه attr_efailed=عدم موفقيت در قرار دادن خصيصه‌ها براي $1: $2 attr_title=خصيصه پرونده براي $1 attr_create=افزودن خصيصه attr_edit=ويرايش خصيصه attr_ename=نام خصيصه يافت نشد ext_eattrs=عدم موفقيت در دريافت خصيصه‌هايEXT: $1 ext_efs=سيستم پرونده $1از خصيصه‌هاي EXT پشتيباني نمي‌کند ext_title=خصيصه‌هايEXTبراي $1 ext_header=خصيصه‌هاي پروندهEXT ext_efailed=عدم موفقيت در قرار دادن خصيصه‌ها براي $1: $2 eattr_A=زمانهاي دستيابي به‌روزرساني نشود eattr_a=تنها مي‌توان به پرونده‌ها اضافه کرد eattr_c=داده‌ها برروي ديسک فشرده سازي شوند eattr_d=با زباله پشتيبان تهيه نشود eattr_i=اجازه اصلاحات داده نشود eattr_s=به هنگام حذف کردن بلاکها صفر شوند eattr_S=هميشه پس از نوشتن همزمان شوند eattr_u=محتويات براي غيرحذفيها حفظ شوند mount_eaccess=شما اجازه سوار کردن سيستم پرونده را نداريد mount_efstab=هيچ سيستم پرونده‌اي در اين نقطه از سوار وجود دارد mount_epoint=$1 يک نقطه سوار نيست mount_rusure1=آيا شما مطمئن هستيد که مي‌خواهيد $1 از $2را سوار نمائيد ? mount_rusure2=آيا شما مطمئن هستيد که مي‌خواهيد $1 از $2را پياده نمائيد؟ mount_err1=عدم موفقيت در سوار کردن $1: $2 mount_err2=عدم موفقيت در پياده کردن $1: $2 mount_title1=سوار کردن سيستم پرونده mount_title2=پياده کردن سيستم پرونده zip_err=نمي توان پرونده : $1را استخراج نمود zip_ecmd=دستور $1يافت نشد zip_eunzip=عدم موفقيت در Unzipکردن: $1 zip_ename=به نظر مي‌رسد يک پرونده zip, tar يا tar.gz نيست zip_euntar=عدم موفقيت درUn-tarکردن: $1 zip_euntar2=عدم موفقيت در خارج کردن از فشرده سازي و un-tar کردن: $1 ddir_title=فهرست راهنماي بار کردن ddir_rusure=براي بار کردن محتويات $1 به‌صورت يک پرونده بايگاني يکي از دگمه‌هاي نوع بايگاني زير را فشار دهيد. ddir_zip=ZIP ddir_tgz=TAR.GZ ddir_tar=TAR ebutton=اين خصوصيت قابل دستيابي نيست file/lang/uk_UA0100664000567100000120000002323610754361753013351 0ustar jcameronwheeltop_delete= info_apply= info_perms= info_file= view_enormal= top_upload= edit_esave= : $1 upload_ewrite= $1 : $2. chmod_elink= symlink : $1 upload_ok= view_eaccess= $1 info_group=: edit_title2= top_info= move_afrom= '$1' link_efailed= : $1 info_setuid2= chmod_euser=$1 : link_efrom= '$1' info_mod=: right_date= copy_efrom= '$1' info_sticky2=ҳ rename_old= ': find_eaccess= $1 mkdir_eexists=$1 upload_dir= rename_enew= '$1' find_edir=$1 $2 upload_efile= . info_type=: info_setuid= setuid: right_group= upload_efailed= : $1 top_cut= info_read= acl_user= ' paste_ecopy= info_exec= delete_ddesc= $1 ? info_link= : link_to=̳ : info_size=: info_path=: copy_eto= '$1' rename_ok= chmod_egroup=$1 : info_own= upload_conv= DOS? cancel= info_list= index_nojava= java, java paste_eover=$1 info_user=: delete_fdesc= $1 ? edit_title= $1 paste_egone= $1 top_paste= chmod_echmod= chmod : $1 edit_filename=' : link_eexists=$1 edit_enormal= info_setgid2= info_setgid3= top_copy= edit_eaccess= '$1' right_name=' rename_efailed= : $1 upload_edir= . rename_new= ': delete_dtitle= link_from=: index_title= file_type0= file_type1= file_type2= file_type3= file_type4= file_type5= file_type6= file_type7= info_sticky= sticky: upload_title= top_edit= upload_eperm= $1 move_eto= '$1' paste_eself= copy_elink= symlink : $1 chmod_echown= chown : $1 acl_umask=Umask mkdir_dir= : info_other=: mkdir_title= delete_ftitle= find_eexist=$1 $2 right_size= edit_eover=$1 paste_emfailed= : $1 link_title= info_apply1=ҳ info_apply2= info_apply3= info_efailed= $1 : $2 acl_follow= ? upload_file= info_setgid= setgid: paste_ecfailed= : $1 mkdir_eaccess= '$1' right_user= rename_eold= '$1' link_efollow= rename_title= $1 top_new= mkdir_efailed= : $1 info_write= rename_eexists= ' $1 acl_dirs= chmod_eaccess= '$1' top_refresh= delete_eaccess= '$1' view_eopen= $1 : $2 top_rename= list_eaccess= delete_efailed= $1 : $2 log_chmod= $1 eacl_edefmask=There can be at most one default mask ACL entry acl_log= ? eacl_eacls= ACL : $1 search_eaccess= over_msg= $1 . , , '. share_nfs=NFS log_copy= $1 $2 acltype_default_group= eacl_aclname= search_size= log_upload= $1 attr_create= search_types_d= ext_eattrs= EXT : $1 search_group= search_types_f= index_eremote= Unix Webmin $1. search_types_l= search_types_p= search_dir= acltype_user= acl_user_def= Webmin top_share= switch_euser= Unix ! acl_home= Webmin search_match= share_writable= ? delete_mtitle= search_less= top_attr= log_link= $1 $2 log_create_export= NFS $1 eacl_acltype= ACL share_s0= nobody share_s1= -root share_s2= ext_header= EXT search_title= search_types_= log_move= $1 $2 acl_goto=³ ? top_search= share_none= log_delete= $1 share_opts= share_ro=, share_rw=, share_guest= (Guest)? share_nheader= NFS over_title= over_new= ' : share_host= search_esize= acltype_other= ext_efailed= EXT $1 : $2 share_title= share_only=ҳ attr_edit= eacl_eowner= view_enormal2= search_user= log_mkdir= $1 attr_ename= search_more= eacl_user= $1 ext_efs= $1 EXT acltype_default_user= top_ext=EXT eacl_efs= $1 ACL search_egroup=' share_lro=ҳ acl_ro= ? eacl_edefaults=If a file has any default ACL, it must have default user, group and other ACLs. list_edir= $1 : $2 eacl_owner= share_lrw=/ attr_name= eacl_aclperms= acltype_default_other= acltype_mask= attr_eattrs= : $1 search_ematch= eacl_add= ACL : log_attr= $1 log_modify_export= NFS $1 attr_efs= $1 top_down= eattr_A= search_crit= attr_add= chmod_efollow= ext_title= EXT $1 share_son= Windows log_create_share= Samba $1 search_ok= attr_title= $1 eattr_S= search_edir= share_non= NFS eattr_a= share_samba=Windows eattr_c= eattr_d= dump search_xdev= ? eacl_edit= ACL eattr_= share_soff= Windows search_euser=' eattr_s= eattr_u= top_ret= log_delete_share= Samba $1 eacl_emask=There can be at most one mask ACL entry log_delete_export= NFS $1 eacl_group= $1 share_noff= NFS share_available= ? info_octal= : attr_efailed= $1 : $2 acltype_default_mask= log_modify_share= Samba $1 log_save= $1 share_comment= share_desc= eacl_remove= ACL attr_value= search_any= search_type= eacl_title=ACL $1 top_eacl=ACL facl_eaccess= ACL share_root=, root eacl_efailed= ACL $1 : $2 share_all= delete_mdesc= ? : acltype_group= log_acl= $1 ACL share_listed=.. share_sheader= search_list= eacl_create= ACL log_relink= $1 $2 over_ok= file/lang/zh_TW.UTF-80100664000567100000120000001234110754361753014175 0ustar jcameronwheelindex_title=檔案管理者 index_nojava=這個模組需要 Java 才能正確的運作, 但是您的瀏覽器似乎不支援 Java top_ret=返回 top_config=設定 top_down=下載 top_open=開啟 top_view=檢視 top_edit=編輯 top_refresh=重讀 top_info=資訊 top_search=搜尋 top_delete=刪除 top_new=新增 top_upload=上傳 top_rename=改名 top_copy=複製 top_cut=剪下 top_paste=貼上 right_name=名稱 right_size=大小 right_user=使用者 right_group=群組 right_date=日期 edit_enormal=只能編輯一般的檔案 edit_title=編輯 $1 中 edit_title2=建立檔案中 edit_filename=檔案名稱: edit_goto=前往 edit_find=尋找 edit_gotoline=前往的列數 edit_replace=取代 edit_all=全部取代 edit_searchfor=尋找內容 edit_replaceby=取代成為 edit_eover=$1 無法被覆蓋 edit_esave=無法儲存檔案 : $1 edit_eaccess=您不被允許儲存 '$1' edit_efollow=您不被允許寫入符號連結 '$1' edit_notfound=找不到這個 $1 文件 edit_saveclose=儲存並關閉 edit_elength=檔案被截斷! info_file=檔案 info_path=路徑: info_type=類別: info_size=大小: info_mod=修改時間: info_link=連結到: info_perms=權限 info_user=使用者: info_group=群組: info_other=其他: info_sticky=設定位元: info_sticky2=只有擁有者才能刪除檔案 info_own=所有權 info_setuid=設定 UID: info_setuid2=以使用者權限執行 info_setgid=設定 GID: info_setgid2=檔案繼承群組 info_setgid3=以群組權限執行 info_apply=套用變更到 info_apply1=只有這個目錄 info_apply2=這個目錄與其中的檔案 info_apply3=這個目錄與所有的子目錄 info_efailed=無法重讀 $1 : $2 info_read=讀取 info_write=寫入 info_list=列出 info_exec=執行 search_eaccess=您不被允許搜尋這個目錄 search_title=搜尋檔案 search_ok=搜尋 search_dir=搜尋目錄 search_match=符合的檔案名稱 search_user=擁有的使用者 search_group=擁有的群組 search_any=任意 search_type=檔案的類型 search_types_=任意 search_types_f=檔案 search_types_d=目錄 search_types_l=符號連結(Symbolic link) search_types_p=具名管道(Named pipe) search_size=檔案大小 search_more=超過 search_less=小於 search_xdev=Search past mounts? search_edir=未找到或無效的搜尋目錄 search_ematch=未找到符合的 regexp search_euser=未找到使用者名稱 search_egroup=未找到群組名稱 search_esize=檔案的大小必須是整數 search_crit=搜尋條件 search_list=搜尋結果 delete_dtitle=刪除目錄 delete_ftitle=刪除檔案 delete_mtitle=刪除多個檔案 delete_ddesc=您確定要永久的刪除目錄 $1 與其所有內容嗎? delete_fdesc=您確定要永久的刪除檔案 $1 嗎? delete_mdesc=您確定要永久的刪除這些檔案和目錄嗎? : delete_efailed=無法刪除 $1 : $2 mkdir_title=新增目錄 mkdir_dir=目錄: mkdir_eexists=$1 已經存在 mkdir_efailed=建立目錄失敗 : $1 mkdir_eaccess=您不被允許建立 '$1' link_title=建立連結 link_from=連結自: link_to=連結到: link_eexists=$1 已經存在 link_efailed=連結失敗 : $1 link_efrom=您不被允許連結 '$1' link_efollow=您不被允許建立符號連結 rename_title=變更名稱 $1 rename_old=舊檔名: rename_new=變更為: rename_ok=改名 rename_eexists=叫做 $1 的檔案已經存在 rename_efailed=改名失敗 : $1 rename_eold=您不被允許改名自 '$1' rename_enew=您不被允許改名成 '$1' file_type0=目錄 file_type1=文字檔 file_type2=影像檔 file_type3=二進位檔 file_type4=檔案 file_type5=符號連結 file_type6=設備控制檔 file_type7=管線 view_enormal=只有一般的檔案可以被檢視 view_eaccess=您不被允許存取 $1 view_eopen=無法開啟n $1 : $2 paste_ecopy=在您貼上要先剪下或複製 paste_egone=複製的檔案 $1 已經不存在 paste_eover=$1 無法被蓋寫 paste_eself=您不能把檔案貼到本身上 paste_emfailed=移動失敗 : $1 paste_ecfailed=拷貝失敗 : $1 upload_efailed=開啟上傳失敗 : $1 upload_title=上傳檔案 upload_file=要上傳的檔案 upload_dir=上傳到目錄 upload_ok=上傳 upload_conv=是否要改變 DOS 的換行符號? upload_efile=沒有選擇要上傳的檔案. upload_edir=上傳的目錄不存在. upload_eperm=您不被允許建立 $1 upload_ewrite=無法寫入到 $1 : $2. upload_already=檔案 $1 已經存在,您確定要覆蓋它嗎? upload_elink=無法上傳符號連結 upload_zip=要解壓縮 ZIP 或 TAR 的檔案嗎? upload_yes=是的,然後刪除 find_eaccess=您不被允許存取 $1 find_eexist=$1 不存在於 $2 find_edir=$1 不是一個目錄在 $2 cancel=取消 close=關閉 eopen=下載失敗:$1 chmod_eaccess=您不被允許存取 '$1' chmod_euser=$1 : 沒有這個使用者 chmod_egroup=$1 : 沒有這個群組 chmod_elink=符號連結失敗d : $1 chmod_echown=變更擁有者失敗 : $1 chmod_echmod=變更權限失敗 : $1 copy_efrom=您不被允許拷貝自 '$1' copy_eto=您不被允許拷貝到 '$1' copy_elink=符號連結失敗 : $1 delete_eaccess=您不被允許刪除 '$1' list_eaccess=您不被允許存取這個目錄 move_eto=您不被允許移動到 '$1' move_afrom=您不被允許移動自 '$1' acl_user=以使用者權限存取伺服器上的檔案 acl_umask=建立檔案的遮罩 acl_follow=是否跟隨符號連結? acl_dirs=只允許存取到目錄 file/lang/zh_CN.UTF-80100664000567100000120000002117010754361753014143 0ustar jcameronwheelindex_title=文件管理器 index_nojava=本模块需要java支持才能工作,但是您的浏缆器不支持java index_eremote=没有区配 Webmin登录名 $1 的Unix用户。 switch_euser=Unix 用户不存在! top_ret=索引 top_down=保存 top_edit=编辑 top_refresh=刷新 top_info=信息 top_eacl=ACL top_attr=属性 top_ext=扩展 top_delete=删除 top_new=新建 top_upload=上传 top_rename=改名 top_copy=复制 top_cut=剪切 top_paste=粘贴 top_share=共享 top_mount=加载 top_search=查找 top_config=配置 right_name=名称 right_size=大小 right_user=用户 right_group=组 right_date=日期 edit_enormal=只能编辑正常文件 edit_title=正在编辑 $1 edit_title2=正在创建文件 edit_filename=文件名: edit_goto=转到 edit_find=查找 edit_gotoline=转到行 edit_replace=替换 edit_all=全部替换 edit_searchfor=搜索 edit_replaceby=被替换 edit_eover=$1 不能被覆盖 edit_esave=保存文件失败 : $1 edit_eaccess=你未被允许保存 '$1' edit_notfound=未找到文本 $1 edit_saveclose=保存并关闭 info_file=文件 info_path=路径: info_type=类型: info_size=大小: info_mod=修改: info_link=联结到: info_perms=许可 info_user=用户: info_group=组: info_other=其它: info_octal=八进制: info_sticky=粘性: info_sticky2=只有所由者才能删除文件 info_own=所有权 info_setuid=设置 uid: info_setuid2=以用户执行 info_setgid=设置 gid: info_setgid2=文件继承组 info_setgid3=以组执行 info_apply=应用更改至 info_apply1=仅此目录 info_apply2=本目录及其文件 info_apply3=本目录及其所有子目录 info_efailed=更新 $1 :$2 失败 info_read=读取 info_write=写入 info_list=列表 info_exec=执行 eacl_eacls=读取 ACLs 失败 : $1 eacl_acltype=ACL 类型 eacl_aclname=应用到 eacl_aclperms=许可 eacl_add=添加 类型的ACL: eacl_remove=移除ACL eacl_efs=文件系统 $1 不支持 ACLs eacl_create=创建 ACL eacl_edit=编辑 ACL eacl_user=文件所有者 $1 eacl_group=文件组 $1 eacl_eowner=缺少要应用到的用户或组 eacl_efailed=为$1 : $2设置ACLs失败 eacl_emask=最多只能有一个掩码 ACL 条目 eacl_edefmask=最多只能有一个默认掩码 ACL 条目 eacl_title=$1的ACL eacl_owner=文件所有者 eacl_edefaults=如果一个文件有任何默认的ACL,则它必须有默认用户,组和其他的ACLs。 acltype_user=用户 acltype_group=组 acltype_other=其他 acltype_mask=掩码 acltype_default_user=默认用户 acltype_default_group=默认组 acltype_default_other=默认其他 acltype_default_mask=默认掩码 delete_mtitle=删除多个文件 delete_dtitle=删除目录 delete_ftitle=删除文件 delete_ddesc=确实要永久删除目录 $1 及其内容? delete_fdesc=确实要永久删除文件 $1? delete_mdesc=确实要永久删除这些目录和文件? : delete_efailed=删除 $1 :$2 失败 mkdir_title=新建目录 mkdir_dir=新建目录: mkdir_eexists=$1 已经存在 mkdir_efailed=创建目录 $1 失败 mkdir_eaccess=你无权创建 '$1' link_title=创建链接 link_from=链接自: link_to=链接到: link_eexists=$1 已经存在 link_efailed=链接失败:$1 link_efrom=你无权链接自 '$1' link_efollow=你无权创建符号链接 rename_title=重命名$1 rename_old=原名: rename_new=新名: rename_ok=重命名 rename_eexists=文件 $1 已存在 rename_efailed=重命名失败: $1 rename_eold=你无权重命名 '$1' rename_enew=你无权重命名为 '$1' file_type0=目录 file_type1=文本文件 file_type2=映象文件 file_type3=二进制文件 file_type4=文件 file_type5=符号链接 file_type6=设备文件 file_type7=管道 view_enormal=只能查看正常文件 view_enormal2=只能下载正常文件 view_eaccess=你无权访问 $1 view_eopen=打开 $1: $2 失败 paste_ecopy=在粘贴之前必须剪切或拷贝 paste_egone=拷贝的文件 $1 已经不存在 paste_eover=$1 不能覆盖 paste_eself=不能将文件粘贴至自身 paste_emfailed=移动失败:$1 paste_ecfailed=拷贝失败:$1 over_title=文件存在 over_msg=文件 $1 已经存在。在下面的字段中为要粘贴的文件输入一个新名。 over_new=新文件名: over_ok=确定 upload_efailed=打开上传失败:$1 upload_title=上传文件 upload_file=要上传的文件 upload_dir=上传到目录 upload_ok=上传 upload_conv=是否转换DOS换行符号? upload_efile=没有选定要上传的文件。 upload_edir=上传目录不存在。 upload_eperm=你无权创建 $1 upload_ewrite=写入 $1:$2 失败。 upload_already=文件 $1 已经存在。您确定要覆盖它吗? find_eaccess=你无权访问 $1 find_eexist=在$2中不存在$1 find_edir=$1 不是 $2 中的目录 cancel=取消 close=关闭 chmod_eaccess=你无权访问 '$1' chmod_euser=$1:无此用户 chmod_egroup=$1:无此用户组 chmod_elink=symlink 失败:$1 chmod_echown=chown 失败:$1 chmod_echmod=chmod 失败:$1 chmod_efollow=您未被允许编辑符号链接 copy_efrom=你无权从 '$1' 拷贝 copy_eto=你无权拷贝到 '$1' copy_elink=symlink 失败 '$1' delete_eaccess=你无权删除 '$1' list_eaccess=你无权访问此目录 list_edir=显示列表失败 $1 : $2 move_eto=你无权移动到 '$1' move_afrom=你无权移动 '$1' acl_user=作为用户访问服务器的文件 acl_user_def=与Webmin登录相同 acl_umask=对新文件去除掩码 acl_follow=是否总是跟随符号链接? acl_ro=只读模式? acl_dirs=仅允许访问目录 acl_home=包含Webmin用户的主目录? acl_log=对所有文件的修改保存日志? acl_goto=打开最先允许的目录? share_title=共享 share_samba=Windows share_nfs=NFS share_son=启用 Windows 文件共享 share_soff=禁用 Windows 文件共享 share_writable=可写入? share_available=现在活动吗? share_sheader=共享选项 share_only=仅 share_guest=Guest 访问? share_comment=注释 share_nheader=NFS 导出选项 share_non=已启用 NFS 文件共享 share_noff=已禁用 NFS 文件共享 share_desc=描述 share_ro=只读主机 share_rw=读写主机 share_root=Root 访问主机 share_none=无 share_all=所有 share_listed=已列出的… share_host=主机 share_opts=选项 share_s0=不信任任何人 share_s1=信任非 Root 用户 share_s2=信任所有人 share_lro=只读 share_lrw=读写 log_create_export=已创建的 NFS 导出 $1 log_modify_export=已修改的 NFS 导出 $1 log_delete_export=已删除的 NFS 导出 $1 log_create_share=已创建的 Samba 共享 $1 log_modify_share=已修改的 Samba 共享 $1 log_delete_share=已删除的 Samba 共享 $1 log_save=已保存文件 $1 log_chmod=已改变文件 $1 的权限 log_mkdir=已创建的目录 $1 log_upload=已上传的文件 $1 log_link=已创建的符号连接 $1 到 $2 log_relink=已修改的符号连接 $1 到 $2 log_copy=已拷贝的文件 $1 到 $2 log_move=已移动的文件 $1 到 $2 log_delete=已删除的文件 $1 log_attr=设置文件 $1 的属性 log_acl=设置文件 $1 的ACL search_eaccess=您无权搜索此目录 search_title=找到文件 search_ok=现在搜索 search_dir=搜索目录 search_match=文件匹配 search_user=用户所有 search_group=组所有 search_any=任何 search_type=文件类型 search_types_=任何 search_types_f=文件 search_types_d=目录 search_types_l=符号连接 search_types_p=命名管道 search_size=文件大小 search_more=多于 search_less=少于 search_xdev=搜索以前的加载? search_edir=丢失或无效的搜索目录 search_ematch=丢失匹配的正则表达式 search_euser=丢失用户名 search_egroup=丢失组名 search_esize=文件大小值必须是整数 search_crit=搜索标准 search_list=搜索结果 facl_eaccess=你未被允许设置此文件的ACLs attr_eattrs=获取属性失败:$1 attr_efs=文件系统 $1 不支持属性 attr_add=添加属性 attr_name=属性名称 attr_value=属性值 attr_efailed=为 $1 : $2 设置属性失败 attr_title=$1的文件属性 attr_create=添加属性 attr_edit=编辑属性 attr_ename=缺少属性名称 ext_eattrs=获取扩展属性失败: $1 ext_efs=文件系统 $1 不支持扩展属性 ext_title=$1 的扩展属性 ext_header=扩展文件属性 ext_efailed=为 $1 : $2设置属性失败 eattr_A=不更新访问次数 eattr_a=只能添加到文件末尾 eattr_c=压缩磁盘数据 eattr_d=不使用dump备份 eattr_i=不允许修改 eattr_s=删除时将块归零 eattr_S=写入后总是同步 eattr_u=为反删除保存内容 mount_eaccess=你未被允许加载文件系统 mount_efstab=此加载点上不存在文件系统 mount_epoint=$1 不是加载点 mount_rusure1=你确定要从 $2加载 $1 吗? mount_rusure2=你确定要从 $2卸载 $1 吗? mount_err1=加载失败 $1 : $2 mount_err2=卸载失败 $1 : $2 mount_title1=加载文件系统 mount_title2=卸载文件系统 file/lang/ja_JP.UTF-80100664000567100000120000002046210754361753014130 0ustar jcameronwheelindex_title=ファイル マネージャ index_nojava=このモジュールは動作するのに Java を必要としますが、ご使用のブラウザは Java をサポートしていません top_open=開く top_view=表示 top_edit=編集 top_refresh=更新 top_info=情報 top_delete=削除 top_new=新規 top_upload=アップロード top_rename=名称変更 top_copy=コピー top_cut=カット top_paste=ペースト top_share=共有 top_search=検索 right_name=ファイル名 right_size=サイズ right_user=ユーザ right_group=グループ right_date=日時 edit_enormal=標準ファイルのみ編集できます edit_title=$1 を編集中 edit_title2=ファイルを作成中 edit_filename=ファイル名: edit_eover=$1 は上書きできません edit_esave=ファイルを保存できませんでした: $1 edit_eaccess='$1' を保存できません info_file=ファイル info_path=パス: info_type=種類: info_size=サイズ: info_mod=変更: info_link=リンク先: info_perms=許可 info_user=ユーザ: info_group=グループ: info_other=その他: info_sticky=スティッキー: info_sticky2=所有者のみがファイルを削除できます info_own=所有権 info_setuid=setuid (ユーザ ID を設定): info_setuid2=次のユーザとして実行 info_setgid=setgid (グループ ID を設定): info_setgid2=ファイルの継承グループ info_setgid3=次のグループとして実行 info_apply=変更を適用 info_apply1=このディレクトリのみ info_apply2=このディレクトリとそこに含まれているファイル info_apply3=このディレクトリとすべてのサブディレクトリ info_efailed=$1 を更新できませんでした: $2 info_read=読取り info_write=書込み info_list=リスト info_exec=実行 delete_dtitle=ディレクトリの削除 delete_ftitle=ファイルの削除 delete_ddesc=ディレクトリ $1 とその内容を永久に削除してもよろしいですか? delete_fdesc=ユーザ $1を永久に削除してもよろしいですか? delete_efailed=$1 を削除できませんでした: $2 mkdir_title=新規のディレクトリ mkdir_dir=新規のディレクトリ: mkdir_eexists=$1 はすでに存在します mkdir_efailed=ディレクトリを作成できませんでした: $1 mkdir_eaccess='$1' を作成できません link_title=リンクの作成 link_from=リンク元: link_to=リンク先: link_eexists=$1 はすでに存在します link_efailed=リンクできませんでした: $1 link_efrom='$1' からリンクできません link_efollow=シンボリック リンクを作成できません rename_title=$1 の名称変更 rename_old=古い名前: rename_new=新しい名前: rename_ok=名称変更 rename_eexists=$1 というファイルはすでに存在しています rename_efailed=名前を変更できませんでした: $1 rename_eold='$1' の名前を変更できません rename_enew='$1' の名前を変更できません file_type0=ディレクトリ file_type1=テキスト ファイル file_type2=画像ファイル file_type3=バイナリ ファイル file_type4=ファイル file_type5=シンボリック リンク file_type6=デバイス ファイル file_type7=パイプ view_enormal=標準ファイルのみ表示できます view_eaccess=$1 にアクセスできません view_eopen=$1 を開けませんでした: $2 paste_ecopy=ペーストする前にカットまたはコピーしてください paste_egone=コピーしたファイル $1 はもう存在しません paste_eover=$1 は上書きできません paste_eself=ファイルをそのファイル自身にペーストすることはできません paste_emfailed=移動できませんでした: $1 paste_ecfailed=コピーできませんでした: $1 over_title=既存のファイル over_msg=ファイル $1 はすでに存在します。ペーストされたファイルの新規ファイル名を下のフィールドに入力してください。 over_new=新規のファイル名: over_ok=OK upload_efailed=アップロードを開けませんでした: $1 upload_title=ファイルのアップロード upload_file=アップロードするファイル upload_dir=アップロード ディレクトリ upload_ok=アップロード upload_conv=DOS 改行に変換しますか? upload_efile=アップロードするファイルが選択されていません。 upload_edir=アップロードのディレクトリが存在しません。 upload_eperm=$1 を作成できません upload_ewrite=$1 に書き込めませんでした: $2. find_eaccess=$1 にアクセスできません find_eexist=$1 は $2 には存在しません find_edir=$1 は $2 内のディレクトリではありません cancel=キャンセル chmod_eaccess='$1' にアクセスできません chmod_euser=$1 : そのユーザは存在しません chmod_egroup=$1 : そのグループは存在しません chmod_elink=symlink が失敗しました: $1 chmod_echown=chown が失敗しました: $1 chmod_echmod=chmod が失敗しました: $1 copy_efrom='$1' からはコピーできません copy_eto='$1' へはコピーできません copy_elink=symlink が失敗しました: $1 delete_eaccess='$1' を削除できません list_eaccess=このディレクトリにアクセスできません list_edir=$1 をリストできませんでした: $2 move_eto='$1' へは移動できません move_afrom='$1' は移動できません acl_user=サーバのファイルに次のユーザとしてアクセス acl_umask=新規ファイルの Umask acl_follow=symlink を常にたどりますか? acl_dirs=次のディレクトリへのアクセスのみを許可 share_title=共有 share_samba=Windows share_nfs=NFS share_son=Windows ファイルの共有を有効 share_soff=Windows ファイルの共有を無効 share_writable=書込みできますか? share_available=現在アクティブですか? share_sheader=共有オプション share_only=次のみ share_guest=ゲストのアクセスを可能にしますか? share_comment=コメント share_nheader=NFS エクスポート オプション share_non=NFS ファイルの共有を有効 share_noff=NFS ファイルの共有を無効 share_desc=説明 share_ro=読取り専用のホスト share_rw=読取り-書込み可能のホスト share_root=root アクセスのホスト share_none=なし share_all=すべて share_listed=リスト.. share_host=ホスト share_opts=オプション share_s0=すべてのユーザを信頼しない share_s1=root 以外を信頼 share_s2=すべてのユーザを信頼 share_lro=読取り専用 share_lrw=読取り-書込み log_create_export=NFS エクスポート $1 を作成しました log_modify_export=NFS エクスポート $1 を変更しました log_delete_export=NFS エクスポート$1 を削除しました log_create_share=Samba の共有 $1 を作成しました log_modify_share=Samba の共有 $1 を変更しました log_delete_share=Samba の共有 $1 を削除しました log_save=ファイル $1 を保存しました log_chmod=ファイル $1 の許可を変更しました log_mkdir=ディレクトリ $1 を作成しました log_upload=ファイル $1 をアップロードしました log_link=$2へのシンボリック リンク $1 を作成しました log_relink=$2 へのシンボリック リンク $1 を変更しました log_copy=ファイル $1 を $2 にコピーしました log_move=ファイル $1 を $2 に移動しました log_delete=ファイル $1 を削除しました search_eaccess=このディレクトリを検索できません search_title=ファイルの検索 search_ok=すぐに検索 search_dir=検索ディレクトリ search_match=一致したファイル search_user=所有ユーザ search_group=所有グループ search_any=任意 search_type=ファイルの種類 search_types_=任意 search_types_f=ファイル search_types_d=ディレクトリ search_types_l=シンボリック リンク search_types_p=名前付きパイプ search_size=ファイル サイズ search_more=次より大きい search_less=次より小さい search_xdev=過去のマウントを検索しますか? search_edir=検索ディレクトリがないか無効です search_ematch=一致した正規表現がありません search_euser=ユーザ名がありません search_egroup=グループ名がありません search_esize=ファイル サイズは整数でなければなりません search_crit=検索条件 search_list=検索結果 file/lang/ko_KR.UTF-80100664000567100000120000001625710754361753014161 0ustar jcameronwheelindex_title=파일 관리자 index_nojava=이 모듈은 Java와 함께 사용해야 하지만 현재 브라우저에서 Java를 지원하지 않습니다 top_open=열기 top_view=보기 top_edit=편집 top_refresh=새로 고침 top_info=정보 top_delete=삭제 top_new=새로 만들기 top_upload=업로드 top_rename=이름 바꾸기 top_copy=복사 top_cut=잘라내기 top_paste=붙여넣기 top_share=공유 top_search=찾기 right_name=이름 right_size=크기 right_user=사용자 right_group=그룹 right_date=날짜 edit_enormal=일반 파일만 편집할 수 있습니다 edit_title=$1 편집 edit_title2=파일 작성 edit_filename=파일 이름: edit_eover=$1은(는) 덮어쓸 수 없습니다 edit_esave=파일을 저장하지 못했습니다: $1 edit_eaccess='$1'을(를) 저장할 수 없습니다 info_file=파일 info_path=경로: info_type=유형: info_size=크기: info_mod=수정한 날짜: info_link=링크 대상: info_perms=사용 권한 info_user=사용자: info_group=그룹: info_other=그 외: info_sticky=고정: info_sticky2=소유자만 파일을 삭제할 수 있습니다 info_own=소유권 info_setuid=Setuid: info_setuid2=사용자로서 실행 info_setgid=Setgid: info_setgid2=파일이 그룹 상속 info_setgid3=그룹으로서 실행 info_apply=변경 내용 적용 대상 info_apply1=현재 디렉토리만 info_apply2=현재 디렉토리와 해당 파일 info_apply3=현재 디렉토리와 모든 하위 디렉토리 info_efailed=$1을(를) 업데이트하지 못했습니다: $2 info_read=읽기 info_write=쓰기 info_list=나열 info_exec=실행 delete_dtitle=디렉토리 삭제 delete_ftitle=파일 삭제 delete_ddesc=디렉토리 $1과(와) 그 안의 모든 파일을 영구적으로 삭제하시겠습니까? delete_fdesc=파일 $1을(를) 영구적으로 삭제하시겠습니까? delete_efailed=$1을(를) 삭제하지 못했습니다: $2 mkdir_title=새 디렉토리 mkdir_dir=새 디렉토리: mkdir_eexists=$1이(가) 이미 있습니다 mkdir_efailed=디렉토리를 작성하지 못했습니다: $1 mkdir_eaccess='$1'을(를) 작성할 수 없습니다 link_title=링크 작성 link_from=링크 소스: link_to=링크 대상: link_eexists=$1이(가) 이미 있습니다 link_efailed=링크 실패: $1 link_efrom='$1'에서 링크할 수 없습니다 link_efollow=심볼릭 링크를 작성할 수 없습니다 rename_title=$1 이름 바꾸기 rename_old=기존 이름: rename_new=새 이름: rename_ok=이름 바꾸기 rename_eexists=파일 $1이(가) 이미 있습니다 rename_efailed=이름을 바꾸지 못했습니다: $1 rename_eold='$1'의 이름을 바꿀 수 없습니다 rename_enew='$1'(으)로 이름을 바꿀 수 없습니다 file_type0=디렉토리 file_type1=텍스트 파일 file_type2=이미지 파일 file_type3=이진 파일 file_type4=파일 file_type5=심볼릭 링크 file_type6=장치 파일 file_type7=파이프 view_enormal=일반 파일만 볼 수 있습니다 view_eaccess=$1에 접근할 수 없습니다 view_eopen=$1을(를) 열지 못했습니다: $2 paste_ecopy=붙여넣기 전에 잘라내거나 복사해야 합니다 paste_egone=복사한 파일 $1(이)가 더 이상 존재하지 않습니다 paste_eover=$1은(는) 덮어쓸 수 없습니다 paste_eself=같은 파일에는 붙여넣을 수 없습니다 paste_emfailed=이동하지 못했습니다: $1 paste_ecfailed=복사하지 못했습니다: $1 over_title=파일 존재 over_msg=파일 $1이(가) 이미 있습니다. 붙여넣은 파일의 새 이름을 아래의 필드에 입력하십시오. over_new=새 파일 이름: over_ok=확인 upload_efailed=업로드할 파일을 열지 못했습니다: $1 upload_title=파일 업로드 upload_file=업로드할 파일 upload_dir=디렉토리에 업로드 upload_ok=업로드 upload_conv=DOS 줄바꿈을 변환합니까? upload_efile=업로드할 파일을 선택하지 않았습니다. upload_edir=업로드 디렉토리가 존재하지 않습니다. upload_eperm=$1을(를) 작성할 수 없습니다 upload_ewrite=$1에 쓰지 못했습니다: $2 find_eaccess=$1에 액세스할 수 없습니다 find_eexist=$2에 $1이(가) 존재하지 않습니다 find_edir=$1은(는) $2의 디렉토리가 아닙니다 cancel=취소 chmod_eaccess='$1'에 접근할 수 없습니다 chmod_euser=$1: 해당 사용자 없음 chmod_egroup=$1: 해당 그룹 없음 chmod_elink=심볼릭 링크 실패: $1 chmod_echown=chown 실패: $1 chmod_echmod=chmod 실패: $1 copy_efrom='$1'에서 복사할 수 없습니다 copy_eto='$1'에 복사할 수 없습니다 copy_elink=심볼릭 링크 실패: $1 delete_eaccess='$1'을(를) 삭제할 수 없습니다 list_eaccess=이 디렉토리에 접근할 수 없습니다 list_edir=$1을(를) 나열하지 못했습니다: $2 move_eto='$1'(으)로 이동할 수 없습니다 move_afrom='$1'을(를) 이동할 수 없습니다 acl_user=사용자로서 서버 파일에 접근 acl_umask=새 파일의 Umask acl_follow=항상 심볼릭 링크를 따릅니까? acl_dirs=디렉토리에 대한 액세스만 허용 share_title=공유 share_samba=윈도우 share_nfs=NFS share_son=윈도우 파일 공유 가능 share_soff=윈도우 파일 공유 불능 share_writable=쓰기 가능합니까? share_available=현재 활성 상태입니까? share_sheader=공유 옵션 share_only=전용 share_guest=게스트 접근을 허용합니까? share_comment=주석 share_nheader=NFS 내보내기 옵션 share_non=NFS 파일 공유 가능 share_noff=NFS 파일 공유 불능 share_desc=설명 share_ro=읽기 전용 호스트 share_rw=읽기/쓰기 호스트 share_root=root 액세스 호스트 share_none=없음 share_all=모두 share_listed=나열.. share_host=호스트 share_opts=옵션 share_s0=아무도 신뢰하지 않음 share_s1=root외 사용자 신뢰 share_s2=모든 사용자 신뢰 share_lro=읽기 전용 share_lrw=읽기/쓰기 log_create_export=NFS 내보내기 $1 작성됨 log_modify_export=NFS 내보내기 $1 수정됨 log_delete_export=NFS 내보내기 $1 삭제됨 log_create_share=삼바 공유 $1 작성됨 log_modify_share=삼바 공유 $1 수정됨 log_delete_share=삼바 공유 $1 삭제됨 log_save=파일 $1 저장됨 log_chmod=파일 $1의 사용 권한 변경됨 log_mkdir=디렉토리 $1 작성됨 log_upload=파일 $1 업로드됨 log_link=$2에 대한 심볼릭 링크 $1 작성됨 log_relink=$2에 대한 심볼릭 링크 $1 수정됨 log_copy=$2(으)로 파일 $1 복사됨 log_move=$2(으)로 파일 $1 이동됨 log_delete=파일 $1 삭제됨 search_eaccess=이 디렉토리를 검색할 수 없습니다 search_title=파일 찾기 search_ok=지금 검색 search_dir=디렉토리 검색 search_match=파일 검색 패턴 search_user=사용자 소유 search_group=그룹 소유 search_any=임의 search_type=파일 유형 search_types_=임의 search_types_f=파일 search_types_d=디렉토리 search_types_l=심볼릭 링크 search_types_p=명명된 파이프 search_size=파일 크기 search_more=보다 큼 search_less=보다 작음 search_xdev=지나간 마운트를 검색합니까? search_edir=없거나 잘못된 검색 디렉토리 search_ematch=일치하는 정규 식이 없습니다 search_euser=없는 사용자 이름 search_egroup=없는 그룹 이름 search_esize=파일 크기는 정수여야 합니다 search_crit=검색 기준 search_list=검색 결과 file/lang/cz0100644000567100000120000002165310754361753012760 0ustar jcameronwheelindex_title=Souborov manaer index_nojava=Tento soubor vyaduje funknost Javy, avak v prohle Javu nepodporuje index_eremote=Neexistuje dn Unix uivatel, kter by vyhovoval phlen ve Webminu $1. switch_euser=Unix uivatel neexistuje! top_ret=vodn strnka top_down=Uloit top_edit=Editovat top_refresh=Obnovit top_info=Info top_eacl=ACL top_attr=Attrs top_ext=EXT top_delete=Zmazat top_new=Nov top_upload=Nahrt top_rename=Pejmenovat top_copy=Koprovat top_cut=Vyjmout top_paste=Vloit top_share=Sdlen top_search=Najt right_name=Jmno right_size=Velikost right_user=Uivatel right_group=Skupina right_date=Datum edit_enormal=Mohou bt editovny pouze normln soubory edit_title=Editovn $1 edit_title2=Vytvoen souboru edit_filename=Nzev souboru: edit_eover=$1 neme bt pepsn edit_esave=Chyba pi ukldn souboru : $1 edit_eaccess=Nemte oprvnn pro uloen '$1' info_file=Soubor info_path=Cesta: info_type=Typ: info_size=Velikost: info_mod=Modifikovno: info_link=Link na: info_perms=Prva info_user=Uivatel: info_group=Skupina: info_other=Ostatn: info_octal=Octal: info_sticky=Sticky: info_sticky2=Pouze vlastnc mohou smazat soubory info_own=Vlastnictv info_setuid=Nastavit UID: info_setuid2=Spustit pod uivatelem info_setgid=Nastavit GID: info_setgid2=Soubory vlastnn skupinou info_setgid3=Spusti pod skupinou info_apply=Pout zmny na info_apply1=Pouze tento adres info_apply2=Tento adres a jeho soubory info_apply3=Tento adres a vechny podadrese info_efailed=Chyba pi aktualizaci $1 : $2 info_read=ten info_write=Zpis info_list=Vpis info_exec=Sputn eacl_eacls=Chyba pi ten ACLs : $1 eacl_acltype=ACL typ eacl_aclname=Pout na eacl_aclperms=Prva eacl_add=Pidat ACL typu : eacl_remove=Odstranit ACL eacl_efs=Souborov systm $1 nepodporuje ACLs eacl_create=Vytvoit ACL eacl_edit=Editovat ACL eacl_user=Vlastnk souboru $1 eacl_group=Skupina souboru $1 eacl_eowner=Chybjc uivatel i skupina pro pouit na eacl_efailed=Chyba pi nastaven ACL pro $1 : $2 eacl_emask=Me bt uveden nanejv jeden zpis masky pro ACL eacl_edefmask=Me bt uveden nanejv jeden zpis vchoz masky pro ACL eacl_title=ACL pro $1 eacl_owner=Vlastnk souboru eacl_edefaults=Jestlie m soubor nejak vchoz ACL, mus mt vchozho uivatele, skupinu a ostatn pro ACLs. acltype_user=Uivatel acltype_group=Skupina acltype_other=Ostatn acltype_mask=Maska acltype_default_user=Vchoz uivatel acltype_default_group=Vchoz skupna acltype_default_other=Vchoz ostatn acltype_default_mask=Vchoz maska delete_mtitle=Vcensobn mmazn soubor delete_dtitle=Smazat adres delete_ftitle=Smazat soubor delete_ddesc=Skuten chcete permanentn mazat adres $1 a cel jeho obsah? delete_fdesc=Skuten chcete permanentn mazat soubor $1 ? delete_mdesc=Skuten chcete permanentn mazat tyto soubory a adrese? : delete_efailed=Chyba pi mazn $1 : $2 mkdir_title=Nov adres mkdir_dir=Nov adres: mkdir_eexists=$1 ji existuje mkdir_efailed=Chyba pi vytven adrese : $1 mkdir_eaccess=Nemte oprvnn vytvet '$1' link_title=Vytvoen linku link_from=Link z: link_to=Link na: link_eexists=$1 ji existuje link_efailed=Chyba pi linku : $1 link_efrom=Nemte oprvnn linkovat z '$1' link_efollow=Nemte oprvnn tytvet symbolick linky rename_title=Pejmenovn $1 rename_old=Star jmno: rename_new=Nov jmno: rename_ok=Pejmenovat rename_eexists=Objekt pojmenovan $1 ji existuje rename_efailed=Chyba pi pejmenovn : $1 rename_eold=Nemte oprvnn pejmenovat '$1' rename_enew=Nemte oprvnn pejmenovat na '$1' file_type0=Adres file_type1=Textov soubor file_type2=Image soubor file_type3=Binarn soubor file_type4=Soubor file_type5=Symbolick link file_type6=Soubor zazen file_type7=Roura view_enormal=Mohou bt zobrazovny pouze normln soubory view_enormal2=Mohou bt stahovny pouze normln soubory view_eaccess=Nemte oprvnn pstupu k $1 view_eopen=Chyba pi oteven $1 : $2 paste_ecopy=Ne pouijete vloen ze schrnky, muste do n neco zkoprovat nebo vyjmout paste_egone=Koprovan soubory $1 ji neexistuj paste_eover=$1 neme bt pepsn paste_eself=Nemete vloit sebe sama paste_emfailed=Chyba pi pesunu : $1 paste_ecfailed=Chyba pi koprovn : $1 over_title=Soubor existuje over_msg=Soubor $1 ji existuje. Pouijte ne uveden pole pro zapsn novho jmna souboru pro vkldan soubor. over_new=Nov jmno souboru: over_ok=Ok upload_efailed=Chyba pi otevennahrvky : $1 upload_title=Nahrn souboru upload_file=Soubor pro nahrn upload_dir=Nahrt do adrese upload_ok=Nahrt upload_conv=Konverovat DOS pechody na nov dek? upload_efile=Nebyl vybrn dn souobor pro nahrn. upload_edir=Adres pro nahrn neexistuje. upload_eperm=Nemte oprvnn vytvoit $1 upload_ewrite=Chyba pi zpisu do $1 : $2. find_eaccess=Nemte oprvnn pstupus $1 find_eexist=$1 neexistuje v $2 find_edir=$1 nen adres v $2 cancel=Opustit chmod_eaccess=Nemte oprvnn pstupu '$1' chmod_euser=$1 : nen takov uivatel chmod_egroup=$1 : nen takov skupina chmod_elink=Symlink nespn: $1 chmod_echown=Chown nespn : $1 chmod_echmod=Chmod nespn : $1 chmod_efollow=Nemte oprvnn edotovat symbolick linky copy_efrom=Nemte oprvnn koprovat z '$1' copy_eto=Nemte oprvnn koprovat do '$1' copy_elink=Symlink nespn : $1 delete_eaccess=Nemte oprvnn mazat '$1' list_eaccess=Nemte oprvnn pstupu do tohoto adrese list_edir=Chyba pi vypisovn $1 : $2 move_eto=Nemte oprvnn pesunout do '$1' move_afrom=Nemte oprvnn pesunout '$1' acl_user=Soubory pstupu na serveru pod uivatelem acl_user_def=Shodn s Webmin pihlenm acl_umask=Umask pro nov soubory acl_follow=Vdy nsledovat symlinky? acl_ro=Md pouze pro ten? acl_dirs=Povolit pouze pstup do adres acl_home=Zahrnout domovsk adres Webmin uivatele acl_log=Logovat vechny modifikace soubor? acl_goto=Otevt nejprve povolen adrese? share_title=Sdlen share_samba=Windows share_nfs=NFS share_son=Povoleno Windows sdlen soubor share_soff=Nepovoleno Windows sdlen soubor share_writable=Pepisovateln? share_available=Aktuln aktivn? share_sheader=Monosti sdlen share_only=Pouze share_guest=Pstup jako guest? share_comment=Koment share_nheader=Nastaven NFS exportu share_non=Povoleno NFS sdlen soubor share_noff=Nepovoleno Windows sdlen soubor share_desc=Popis share_ro=Host s povolenm pouhho ten share_rw=Host s ten i zpisu share_root=Host s pstupem root share_none=Nic share_all=Vichni share_listed=Uveden.. share_host=Host share_opts=Nastaven share_s0=Nikomu nedvivat share_s1=Dvovat non-root share_s2=Dvovat kadmu share_lro=Pouze ke ten share_lrw=ten i zpis log_create_export=Vytvoen NFS export $1 log_modify_export=Modifikovn NFS export $1 log_delete_export=Smazn NFS export $1 log_create_share=Vytvoeno Samba sdlen $1 log_modify_share=Modifikovno Samba sdlen $1 log_delete_share=Smazno Samba sdlen $1 log_save=Uloen soubor $1 log_chmod=Zmnna prva u souboru $1 log_mkdir=Vytvoen adres $1 log_upload=Nahrn soubor $1 log_link=Vytvoen symbolick link $1 do $2 log_relink=Modififikovn symbolick link $1 do $2 log_copy=Zkoprovn soubor $1 do $2 log_move=Pesunut soubor $1 do $2 log_delete=Smazn soubor $1 log_attr=Nastaveny adributy souboru $1 log_acl=Nastavno ACL u souboru $1 search_eaccess=Nemte oprvnn hledat tento adres search_title=Najt soubory search_ok=Hledat search_dir=Hledat adres search_match=Pro soubory, kter vyhovuj search_user=Vlastnn uivatelem search_group=Vlastnn skupinou search_any=Kdokoliv search_type=Typ souboru search_types_=Jakkoliv search_types_f=Soubor search_types_d=Adres search_types_l=Symbolick link search_types_p=Pojmenovan roura search_size=Velikost souboru search_more=Vce ne search_less=Mn ne search_xdev=Hledat minul mountovn? search_edir=Chybjc nebo nesprvn vyhledvac adres search_ematch=Chybjc porovnvac zpis regexp search_euser=Chybjc uivatelsk jmno search_egroup=MChybjc jmno skupiny search_esize=Velikost souboru mus bt cel slo search_crit=Kritria hledn search_list=Vsledky hledn facl_eaccess=Nemte oprvnn nastavit ACLs pro tento soubor attr_eattrs=Chyba pi zskvn atribut : $1 attr_efs=Souborov systm $1 nepodporuje atributy attr_add=Pidat atribut attr_name=Nzev atributu attr_value=Hodnota atributu attr_efailed=Chyba pi nastaven atribut pro $1 : $2 attr_title=Atributy souboru pro $1 attr_create=Pidat atribut attr_edit=Editovat atribut attr_ename=Chybjc nzev atributu ext_eattrs=Chyba pi zskvn EXT atribut : $1 ext_efs=Souborov systm $1 nepodporuje EXT atributy ext_title=EXT atributy pro $1 ext_header=EXT souborov atributy ext_efailed=Chyba pi nastaven atribut pro $1 : $2 eattr_A=Neaktualizovat as pstupu eattr_a=Me pouze pidat do souboru eattr_c=hustit data na disku eattr_d=Nezlohovat pi schov eattr_i=Nepovolit modifikaci eattr_s=Nastaviz nulov bloky pi mazn eattr_S=Vdy synchronizovat po zpisu eattr_u=Uloit obsah pro obnovu po smazn file/TabbedPanel.java0100644000567100000120000000777510754361753014515 0ustar jcameronwheel// TabbedPanel // A panel capable of displaying one of many components at a time. The // component to display is chosen by a row of tab buttons. import java.awt.*; import java.util.Vector; public class TabbedPanel extends Panel { TabSelector tab; // component for choosing panel TabbedDisplayPanel disp; // where other panels are displayed CardLayout card; TabbedPanel() { this(Util.body_hi, Util.dark_edge_hi, Util.body); } TabbedPanel(Color hi, Color lo, Color bk) { setLayout(new BorderLayout()); add("North",tab = new TabSelector(hi, lo, bk)); add("Center",disp = new TabbedDisplayPanel(hi, lo)); disp.setLayout(card = new CardLayout()); } // addItem // Add a component to be chosen by a tab with the given name void addItem(String n, Component c) { tab.addItem(n); disp.addItem(n, c); } // select // Display a component in the panel void select(String n) { tab.choose(n); disp.choose(n); } // chose // Called back by a TabSelector object when the user clicks on a tab void chose(String n) { disp.choose(n); } } class TabSelector extends Canvas { Color hi, lo, bk; Vector name = new Vector(); int chosen = 0; Font font = new Font("timesRoman", Font.PLAIN, 12), chfont = new Font(font.getName(), Font.BOLD, 13); TabSelector(Color h, Color l, Color b) { hi = h; lo = l; bk = b; } void addItem(String n) { name.addElement(n); paint(getGraphics()); } void choose(String n) { for(int i=0; i ? @A B CD CEF 8 GHI J K L MN O P QRSTUcolLjava/awt/Color;but LCbButton;palLjava/util/Vector;swatchLjava/awt/Image;gLjava/awt/Graphics;winLCbColorWindow;(Ljava/awt/Color;)VCodeLineNumberTable%(Ljava/awt/Color;Ljava/util/Vector;)Vclick (LCbButton;)Vchosen"(LCbColorWindow;Ljava/awt/Color;)Vpalette#(LCbColorWindow;)Ljava/util/Vector; SourceFileCbColorButton.javajava/util/Vector *V *.W XY $%Z [\ &'] ^ _ `+ abjava/awt/BorderLayout cdCenterCbButton *e ! fg () CbColorWindow *h iV "# CbColorButtonjava/awt/PanelCbButtonCallbackCbColorWindowCallback()VUtil createImage(II)Ljava/awt/Image;java/awt/Image getGraphics()Ljava/awt/Graphics;java/awt/Colorblackjava/awt/GraphicssetColorfillRect(IIII)V setLayout(Ljava/awt/LayoutManager;)V%(Ljava/awt/Image;LCbButtonCallback;)Vadd<(Ljava/lang/String;Ljava/awt/Component;)Ljava/awt/Component;*(Ljava/awt/Color;LCbColorWindowCallback;)Vrepaint! !"#$%&'()*+,) *+Y-  *.,c** **+ L*+ ** *  * Y**Y**ZW-&   "'?Jb/0,8**Y* *- !"12,Z.,'*, ** *  **-&' (!)(+-,34,*-056file/CbColorWindowCallback.class0100664000567100000120000000034110754361753016650 0ustar jcameronwheel.   chosen"(LCbColorWindow;Ljava/awt/Color;)Vpalette#(LCbColorWindow;)Ljava/util/Vector; SourceFileCbColorWindow.javaCbColorWindowCallbackjava/lang/Objectfile/CbColorWindow.class0100664000567100000120000000737410754361753015250 0ustar jcameronwheel. Uxy Tz{ T| T} T~ T T T F F F T x T x    T  T T ! # %x   6   - T T T T   U T - 6 - 6 - 6 -  Fx 6 6 6 6 6 6 6 6 6 6 6 6callbackLCbColorWindowCallback;colLjava/awt/Color;palLjava/util/Vector;defpalpalimg[Ljava/awt/Image;palbut [LCbButton;curpalIok LCbButton;cancelccubeLCbColorWindowCube;*(Ljava/awt/Color;LCbColorWindowCallback;)VCodeLineNumberTable updatePal(I)Vclick (LCbButton;)Vdispose()V isResizable()Z SourceFileCbColorWindow.java irjava/awt/Image ^_CbButton `a bc YZ WX [\ ]\  mnjava/awt/BorderLayout  GrayPaneljava/awt/FlowLayout inOk i de Cancel feSouth  BorderPaneljava/awt/GridLayout i CbButtonGroup i rNorthCbColorWindowCube i ghCenter r rChoose Color... java/awt/Color r qr  n java/util/Vector Z Z Z Z Z Z Z Z Z Z Z Z CbColorWindow FixedFrameCbButtonCallbackCbColorWindowCallbackpalette#(LCbColorWindow;)Ljava/util/Vector;size()I elementAt(I)Ljava/lang/Object; addElement(Ljava/lang/Object;)VUtil createImage(II)Ljava/awt/Image; setLayout(Ljava/awt/LayoutManager;)Vjava/awt/Panel'(Ljava/lang/String;LCbButtonCallback;)Vadd*(Ljava/awt/Component;)Ljava/awt/Component;<(Ljava/lang/String;Ljava/awt/Component;)Ljava/awt/Component;(IIII)V%(Ljava/awt/Image;LCbButtonCallback;)VsetGroup(LCbButtonGroup;)Vequals(Ljava/lang/Object;)Zselect(LCbColorWindow;)VpackshowsetTitle(Ljava/lang/String;)V getGraphics()Ljava/awt/Graphics;java/awt/GraphicssetColor(Ljava/awt/Color;)VfillRectrepaintchosen"(LCbColorWindow;Ljava/awt/Color;)Vred LCbSlider;getRedCbSlider setPositionbluegetBluegreengetGreenswatchLCbColorWindowSwatch;CbColorWindowSwatchblackcyangraydarkGraymagentaorangepinkwhiteyellow TUV WXYZ[\]\^_`abcdefeghijk}** * **+*,***  * * )* > *  > *S**YYN-Y-*Y*ZW-*Y*ZW*- W!Y":YY:#Y$%Y&:6 2*Y*2*'[SW*2(6 ,+*  )**2* +W,*-Y*.Z/+W*0 W*1*2*34l-$ % &%)3*:+D,N-V.d-j1r231789:;<=>?@ ABC9DEBKFUGeHkIuJxF~LMNPQRSmnk^6*25M,*  67,8*2 *29lW XY#Z5[opk+****:*;+* *<p= h+*2X***  6*/=*>?*/@*A?*/B*C?*/D*El>_`ac%d,f4g>hCiRjcktlmfpqrk0*;**:ltuvstklxurkwFYG H I J K L M N O P Q R Sl: %.7@IR[dm v!vwfile/Util.class0100664000567100000120000001053010754361753013436 0ustar jcameronwheel. Hz{ G| } ~    G = =  z  H    " " " G G G G G G 4 G 4 G 4 4 G G 4 G G G G =z = = A G GfrLjava/awt/Frame;gLjava/awt/Graphics;fLjava/awt/Font;fnmLjava/awt/FontMetrics;tkLjava/awt/Toolkit; light_edgeLjava/awt/Color; dark_edgebodybody_hi light_edge_hi dark_edge_hidark_bgtextlight_bg()VCodeLineNumberTable waitForImage(Ljava/awt/Image;)Z(Ljava/awt/Image;II)ZgetWidth(Ljava/awt/Image;)I getHeight createImage(II)Ljava/awt/Image;0(Ljava/awt/image/ImageProducer;)Ljava/awt/Image; createObject&(Ljava/lang/String;)Ljava/lang/Object;&(Ljava/lang/Object;)Ljava/lang/Object; dottedRect(Ljava/awt/Graphics;IIIII)VrecursiveLayout(Ljava/awt/Container;)VrecursiveBackground'(Ljava/awt/Component;Ljava/awt/Color;)V recursiveBody(Ljava/awt/Component;)VsetFont(Ljava/awt/Font;)V SourceFile Util.java ]^java/awt/MediaTracker IJ ]t ^java/lang/Exception ab d f gh gi  java/lang/StringBufferFailed to create object  :  Failed to reproduce object  ^ java/awt/Container opjava/awt/TextFieldjava/awt/Choicejava/awt/TextArea qr VT MN KL uv OP T ST T UT Tjava/awt/Color ] WT XT T YT ZT [T \Tjava/awt/Frame ^  java/awt/Font TimesRoman ] QRUtiljava/lang/ObjectaddImage(Ljava/awt/Image;I)V waitForAll isErrorAny()Z(Ljava/awt/Image;III)Vjava/awt/Image!(Ljava/awt/image/ImageObserver;)Ijava/lang/ClassforName%(Ljava/lang/String;)Ljava/lang/Class; newInstance()Ljava/lang/Object;java/lang/SystemerrLjava/io/PrintStream;append,(Ljava/lang/String;)Ljava/lang/StringBuffer;getClass()Ljava/lang/Class;getName()Ljava/lang/String;toStringjava/io/PrintStreamprintln(Ljava/lang/String;)Vexit(I)V,(Ljava/lang/Object;)Ljava/lang/StringBuffer;java/awt/GraphicsdrawLine(IIII)VlayoutcountComponents()I getComponent(I)Ljava/awt/Component;java/awt/Component setBackground(Ljava/awt/Color;)VgetFontMetrics()Ljava/awt/FontMetrics;whiteblack lightGray(III)VdarkGray addNotify getGraphics()Ljava/awt/Graphics;(Ljava/lang/String;II)Vjava/awt/ToolkitgetDefaultToolkit()Ljava/awt/Toolkit; GHIJKLMNOPQRSTUTVTWTXTYTZT[T\T]^_*`ab_T(YL+*+M+`! "#$ac_W+YN-* -:-`) *+,de_) * W* ` 12fe_) * W* ` 78gh_!  `=gi_ *`Bjk_m9*L+LY*+ `HI K L3N7Pjl_g7*LY*+`WX Y1[5]mn_2 h6 6<> 6=66'*```66)*```66)*ddd66'*ddd6ٱ`Bdef#g,hFgPiZjviklkmnmoop_Y)*<* *!M," ,"#`stuvw"t(yqr_yA*$*% *&*+'*"!*"M>, ,!+(`& }"'1:@st_$*)(` uv_;**+*,+-.` w^_/0123)4Yҷ56/7894Y5:1;/<=Y>?@+AYBCDEF`>  %+1DJPZ`ix~xyfile/CbColorWindow.java0100644000567100000120000001217510754361753015055 0ustar jcameronwheelimport java.awt.*; import java.util.*; /**A window for choosing a colour, either from a pre-set palette * or from a color cube */ class CbColorWindow extends FixedFrame implements CbButtonCallback { CbColorWindowCallback callback; Color col; Vector pal; static Vector defpal = new Vector(); Image palimg[] = new Image[12]; CbButton palbut[] = new CbButton[12]; int curpal = -1; CbButton ok, cancel; CbColorWindowCube ccube; static { defpal.addElement(Color.black); defpal.addElement(Color.blue); defpal.addElement(Color.cyan); defpal.addElement(Color.gray); defpal.addElement(Color.green); defpal.addElement(Color.darkGray); defpal.addElement(Color.magenta); defpal.addElement(Color.orange); defpal.addElement(Color.pink); defpal.addElement(Color.red); defpal.addElement(Color.white); defpal.addElement(Color.yellow); } CbColorWindow(Color c, CbColorWindowCallback cb) { col = c; callback = cb; // Setup color vector pal = callback.palette(this); if (pal == null) pal = defpal; else if (pal.size() == 0) for(int i=0; i<12; i++) pal.addElement(defpal.elementAt(i)); // Create palette images for(int i=0; i<12; i++) { palimg[i] = Util.createImage(16, 16); updatePal(i); } // create UI setLayout(new BorderLayout()); Panel bot = new GrayPanel(); bot.setLayout(new FlowLayout(FlowLayout.RIGHT)); bot.add(ok = new CbButton("Ok", this)); bot.add(cancel = new CbButton("Cancel", this)); add("South", bot); Panel mid = new BorderPanel(1); mid.setLayout(new BorderLayout()); Panel midbot = new GrayPanel(); midbot.setLayout(new GridLayout(2, 6, 4, 4)); CbButtonGroup g = new CbButtonGroup(); for(int i=0; i<12; i++) { midbot.add(palbut[i] = new CbButton(palimg[i], this)); palbut[i].setGroup(g); } for(int i=0; i<12; i++) if (c.equals(pal.elementAt(i))) { curpal = i; palbut[i].select(); break; } mid.add("South", midbot); mid.add("North", ccube = new CbColorWindowCube(this)); add("Center", mid); pack(); show(); setTitle("Choose Color..."); } void updatePal(int i) { Graphics g = palimg[i].getGraphics(); g.setColor((Color)pal.elementAt(i)); g.fillRect(0, 0, 16, 16); if (palbut[i] != null) palbut[i].repaint(); } public void click(CbButton b) { if (b == ok) { callback.chosen(this, col); super.dispose(); } else if (b == cancel) dispose(); else { for(int i=0; i<12; i++) if (b == palbut[i]) { curpal = i; col = (Color)pal.elementAt(i); ccube.red.setPosition(col.getRed()); ccube.blue.setPosition(col.getBlue()); ccube.green.setPosition(col.getGreen()); ccube.swatch.setColor(col); } } } public void dispose() { super.dispose(); callback.chosen(this, null); } public boolean isResizable() { return false; } } /**Displays 3 sliders, for red green and blue plus a block to show the * current color */ class CbColorWindowCube extends BorderPanel implements CbSliderCallback { CbColorWindow parent; CbSlider red, green, blue; CbColorWindowSwatch swatch; CbColorWindowCube(CbColorWindow p) { super(1, Util.body, Util.body); parent = p; setLayout(new BorderLayout()); Panel sl = new GrayPanel(); sl.setLayout(new GridLayout(3, 1)); sl.add(red = new CbSlider(0, 0, 255, p.col.getRed(), this)); sl.add(green = new CbSlider(0, 0, 255, p.col.getBlue(), this)); sl.add(blue = new CbSlider(0, 0, 255, p.col.getGreen(), this)); add("Center", sl); add("East", swatch = new CbColorWindowSwatch(p.col)); } public void moved(CbSlider s, int p) { moving(s, p); } public void moving(CbSlider s, int p) { parent.col = new Color(red.getPosition(), green.getPosition(), blue.getPosition()); swatch.setColor(parent.col); if (parent.curpal != -1) { parent.pal.setElementAt(parent.col, parent.curpal); parent.updatePal(parent.curpal); } } } interface CbColorWindowCallback { /**This method will be called when the user chooses a colour. If * the user cancels the dialog, then this method will also be chosen * but with null for the color. */ public void chosen(CbColorWindow w, Color c); /**The chooser keeps a palette of colors that the user can modify, * stored in a vector. The callback class should provide this vector * so as to maintain the palette between color window calls. * If an empty vector is returned, it will be filled with the default * color table (which can be then modified). * If null is returned, the chooser will use it's own internal * vector. */ public Vector palette(CbColorWindow w); } class CbColorWindowSwatch extends BorderPanel { Color col = Color.black; String txt; CbColorWindowSwatch(Color c) { super(1); setColor(c); } void setColor(Color c) { col = c; txt = col.getRed()+","+col.getGreen()+","+col.getBlue(); repaint(); } public void paint(Graphics g) { super.paint(g); g.setColor(col); g.fillRect(1, 1, size().width-2, size().height-2); g.setColor(Color.white); g.setXORMode(Color.black); g.setFont(Util.f); g.drawString(txt, 3, Util.fnm.getHeight()+1); g.setPaintMode(); } public void upate(Graphics g) { paint(g); } public Dimension preferredSize() { return new Dimension(60, 60); } public Dimension minimumSize() { return preferredSize(); } } file/CbColorWindowCube.class0100664000567100000120000000333410754361753016037 0ustar jcameronwheel. 9: &; %<= > %?@ >A B C?D EF G H %I CJ K %L M %NO %PQR S %T %UV W X Y EZ E[ \] E^_`aparentLCbColorWindow;red LCbSlider;greenblueswatchLCbColorWindowSwatch;(LCbColorWindow;)VCodeLineNumberTablemoved(LCbSlider;I)Vmoving SourceFileCbColorWindow.javab cd 0e ()java/awt/BorderLayout 0f gh GrayPaneljava/awt/GridLayout 0ijCbSliderk ld mn 0o *+ pq rn ,+ sn -+Center ptEastCbColorWindowSwatch 0u ./ 65java/awt/Color vn 0w xu yz {|} ~ CbColorWindowCube BorderPanelCbSliderCallbackUtilbodyLjava/awt/Color;$(ILjava/awt/Color;Ljava/awt/Color;)V()V setLayout(Ljava/awt/LayoutManager;)V(II)Vjava/awt/Panel CbColorWindowcolgetRed()I(IIIILCbSliderCallback;)Vadd*(Ljava/awt/Component;)Ljava/awt/Component;getBluegetGreen<(Ljava/lang/String;Ljava/awt/Component;)Ljava/awt/Component;(Ljava/awt/Color;)V getPosition(III)VsetColorcurpalIpalLjava/util/Vector;java/util/Vector setElementAt(Ljava/lang/Object;I)V updatePal(I)V %&'()*+,+-+./012 **+*YYM, Y ,* Y+ *ZW,* Y+ *ZW,* Y+ *ZW*,W**Y+ ZW3. #0Nl452#*+3 652c*Y*** ** *!)*"* *!#**!$3#1<Tb78file/CbSliderCallback.class0100664000567100000120000000023310754361753015624 0ustar jcameronwheel.  moved(LCbSlider;I)Vmoving SourceFile CbSlider.javaCbSliderCallbackjava/lang/Objectfile/CbSlider.class0100664000567100000120000000713110754361753014213 0ustar jcameronwheel. )^ *_ `a )b `c )d `e )f `g )h `i )j `k )l )m )n )o )p )q )r )s )t )u )v )w &x &y z{ z| z} )~ ) z ) )  & )dirIminmaxposcallbackLCbSliderCallback;pxpylc1Ljava/awt/Color;lc2lc3hc1hc2hc3ticksinsideZdraggingdragx(IIII)VCodeLineNumberTable(IIIILCbSliderCallback;)VsetTicks(I)V getPosition()I setPosition getMinimum setMinimum getMaximum setMaximumpaint(Ljava/awt/Graphics;)Vupdate mouseEnter(Ljava/awt/Event;II)Z mouseDown mouseDragmouseUp mouseExitcheckPos()V preferredSize()Ljava/awt/Dimension; minimumSize SourceFile CbSlider.java @D @X 5 45 5 65 5 75 5 85 5 95 5 :5 ;, <= >= +, -, ., /, 01 X WX Z , , A A 2, 3, NO ?, java/awt/Dimension @ YZCbSliderjava/awt/CanvasUtil light_edgebody dark_edge light_edge_hibody_hi dark_edge_hirepaintsizewidthheightjava/awt/GraphicssetColor(Ljava/awt/Color;)VfillRectdrawLine fillPolygon([I[II)VCbSliderCallbackmoved(LCbSlider;I)Vmoving(II)V )*+,-,.,/,012,3,4565758595:5;,<=>=?,@AB' *C  @DBY***** * * ********C& ! . 3 ="L#R$X%EFB* **C,- .GHB*C2IFB6* **C89 :<JHB*C@KFB2***CGH I JLHB*CNMFB2***CUV W XNOB# s* * *M* * *N* **:*6*6+-+++ldl+,+l`dl`+,+d+d++ddd+ddd*%+ddd+ddd*M**d668dhl`6 ++ l ld*`6*d*h**dl`*l +- Y*dOY*dOY*OY*`OY*`O: Y* `OY* dOY* dOY* dOY* `O:+!+*,+*d* `*d* d+*d* d** d+*,+*d* `*`* `+*`* `*`* dC'\]&^:aLbQc[daetfygjklmnopqrvwxy(z.{AxMhpu):VrPOB*+"CQRB+ **C SRBz***d l*6*d*Yd**`*Y`***d#*****$*C2 &4>LQ[_ftxTRBS*J**#d**d**dh*dl*****%**C"15<JNURBY)*#*****$*C !%'VRB+ **C WXBJ******* **C)YZB$ &Yd'C[ZB*(C\]file/CbColorWindowSwatch.class0100664000567100000120000000316310754361753016412 0ustar jcameronwheel.~ #5 67 "8 "9: ; 6< => ? 6@ 6A B "C "D #E F9 "G H I FJ 6K FL MN FO MP QR FS FT "EU V "WXYcolLjava/awt/Color;txtLjava/lang/String;(Ljava/awt/Color;)VCodeLineNumberTablesetColorpaint(Ljava/awt/Graphics;)Vupate preferredSize()Ljava/awt/Dimension; minimumSize SourceFileCbColorWindow.java (Z[ \% $% ,)java/lang/StringBuffer (] ^_ `a, `b c_ d_ ef &' g] -.h i1 jk lk mn o% p)q rs tu vwx y_ z{ |]java/awt/Dimension (} 01CbColorWindowSwatch BorderPanel(I)Vjava/awt/Colorblack()VgetRed()Iappend(I)Ljava/lang/StringBuffer;,(Ljava/lang/String;)Ljava/lang/StringBuffer;getGreengetBluetoString()Ljava/lang/String;repaintjava/awt/GraphicssizewidthIheightfillRect(IIII)Vwhite setXORModeUtilfLjava/awt/Font;setFont(Ljava/awt/Font;)VfnmLjava/awt/FontMetrics;java/awt/FontMetrics getHeight drawString(Ljava/lang/String;II)V setPaintMode(II)V "#$%&'()*6***++ ,)*d@*+*Y* *  *  *+;?-.*P*++*+*d*d++++*`++&  %,3:KO/.**++01*$ Y<< +21**!+34file/preview.cgi0100755000567100000120000000714710754361753013652 0ustar jcameronwheel#!/usr/local/bin/perl # Scale some image down to the preview size require './file-lib.pl'; &ReadParse(); use POSIX; $p = $ENV{'PATH_INFO'}; # Try to guess type from filename $type = &guess_mime_type($p, undef); if (!$type) { # No idea .. use the 'file' command $out = &backquote_command("file ". quotemeta(&resolve_links($p)), 1); if ($out =~ /text|script/) { $type = "text/plain"; } else { &error_exit(&text('preview_etype', $p)); } } # Make sure the type is OK if ($type ne "image/gif" && $type ne "image/jpeg" && $type ne "image/png" && $type ne "image/tiff" && $type ne "application/pdf" && $type !~ /^image\/x-portable/ && $type ne "application/postscript") { &error_exit(&text('preview_etype2', $p)); } &switch_acl_uid_and_chroot(); if (!&can_access($p)) { # ACL rules prevent access to file &error_exit(&text('view_eaccess', $p)); } # Test if the file can be opened if (!open(FILE, $p)) { # Unix permissions prevent access &error_exit(&text('view_eopen', $p, $!)); } close(FILE); eval "use GD"; if ($@ || $type eq "image/tiff" || $type eq "application/pdf" || $type =~ /^image\/x-portable/ || $type eq "application/postscript") { # Find an appropriate scaler $pnmcmd = $type eq "image/gif" ? "giftopnm" : $type eq "image/jpeg" ? "djpeg" : $type eq "image/png" ? "pngtopnm" : $type eq "image/tiff" ? "tifftopnm" : $type =~ /^image\/x-portable/ ? "cat" : $type eq "application/postscript" ? "pstopnm" : $type eq "application/pdf" ? "pdftoppm" : undef; &has_command($pnmcmd) || &error_exit(&text('preview_ecmd', $pnmcmd)); &has_command("pnmscale") || &error_exit(&text('preview_ecmd', "pnmscale")); &has_command("cjpeg") || &error_exit(&text('preview_ecmd', "cjpeg")); # Run scaler $width = $config{'width'} || $userconfig{'width'} || 300; $errout = &transname(); print "Content-type: image/jpeg\n"; print "\n"; if ($type eq "application/pdf") { # Previewing first page of PDF $temp = &tempname(); $out = &backquote_command("$pnmcmd -f 1 -l 1 ".quotemeta($p)." ".$temp." 2>&1"); if ($? || !-r "$temp-000001.ppm") { &error_exit("$pnmcmd failed : $out"); } open(SCALE, "(cat $temp-000001.ppm | pnmscale --width $width | cjpeg) 2>$errout |"); push(@main::temporary_files, "$temp-000001.ppm"); } elsif ($type eq "application/postscript") { # Previewing first page of a postscript file $temp = &transname(); mkdir($temp, 0755); ©_source_dest($p, "$temp/file.ps"); $out = &backquote_command("$pnmcmd $temp/file.ps 2>&1"); if ($? || !-r "$temp/file001.ppm") { &error_exit("$pnmcmd failed : $out"); } open(SCALE, "(cat $temp/file001.ppm | pnmscale --width $width | cjpeg) 2>$errout |"); } else { # Converting to JPEG open(SCALE, "($pnmcmd <".quotemeta($p)." | pnmscale --width $width | cjpeg) 2>$errout |"); } $err = &read_file_contents($errout); print STDERR $err; while() { print; } close(SCALE); } else { # Use the GD library $image = $type eq "image/gif" ? GD::Image->newFromGif($p) : $type eq "image/jpeg" ? GD::Image->newFromJpeg($p) : $type eq "image/png" ? GD::Image->newFromPng($p) : undef; $image || &error_exit(&text('preview_egd')); $width = $config{'width'} || $userconfig{'width'} || 300; $height = $image->height * (($width*1.0) / $image->width); $scaled = new GD::Image($width, $height); $scaled->copyResampled($image, 0, 0, 0, 0, $width, $height, $image->width, $image->height); print "Content-type: image/jpeg\n"; print "\n"; print $scaled->jpeg(); } sub error_exit { print "Content-type: text/plain\n"; print "Content-length: ",length($_[0]),"\n\n"; print $_[0]; exit; } file/index.cgi0100755000567100000120000000711410754361753013272 0ustar jcameronwheel#!/usr/local/bin/perl # index.cgi # Output HTML for the file manager applet require './file-lib.pl'; &ReadParse(); $theme_no_table = 1; if ($access{'uid'} < 0 && !defined(getpwnam($remote_user))) { &error(&text('index_eremote', $remote_user)); } # Display header, depending on how many modules the user has &read_acl(undef, \%acl); $mc = @{$acl{$base_remote_user}} == 1; $nolo = $ENV{'ANONYMOUS_USER'} || $ENV{'SSL_USER'} || $ENV{'LOCAL_USER'} || $ENV{'HTTP_USER_AGENT'} =~ /webmin/i; if ($gconfig{'gotoone'} && $mc == 1 && !$nolo) { &header($text{'index_title'}, "", undef, 0, 1); $w = 100; $h = 80; } else { &header($text{'index_title'}); $w = 100; $h = 100; if (!$tconfig{'inframe'}) { $return = ""; $returnhtml = &text('index_index', "$gconfig{'webprefix'}/")."

"; } } if ($gconfig{'referers_none'}) { # Because java applet HTTP requests don't always include a referer: # header, we need to use a DBM of trust keys to identify trusted applets if (defined(&seed_random)) { &seed_random(); } else { srand(time() ^ $$); } $trust = int(rand(1000000000)); local $now = time(); &open_trust_db(); foreach $k (keys %trustdb) { if ($now - $trustdb{$k} > 30*24*60*60) { delete($trustdb{$k}); } } $trustdb{$trust} = $now; dbmclose(%trustdb); } $sharing = $access{'uid'} ? 0 : 1; $mounting = !$access{'uid'} && &foreign_check("mount") ? 1 : 0; if ($in{'open'}) { $open = ""; } if ($session_id) { $session = ""; } if (!$access{'noconfig'}) { $config = ""; } $iconsize = int($config{'iconsize'}); $root = join(" ", @allowed_roots); $noroot = join(" ", @denied_roots); foreach $d (@disallowed_buttons) { $disallowed .= "\n"; } # Create parameters for custom colours foreach $k (keys %tconfig) { if ($k =~ /^applet_(.*)/) { $colours .= "\n"; } } # Extract classes from jar, if we can if ($config{'extract'} && &has_command("unzip") && !-r "$module_root_directory/FileManager.class") { system("unzip file.jar >/dev/null 2>&1"); } print < function upload(dir) { open("upform.cgi?dir="+escape(dir)+"&trust=$trust", "upload", "toolbar=no,menubar=no,scrollbar=no,width=550,height=230"); } function htmledit(file, dir) { open("edit_html.cgi?file="+escape(file)+"&dir="+escape(dir)+"&trust=$trust", "html", "toolbar=no,menubar=no,scrollbar=no,width=800,height=600"); } $config $session $open $return $disallowed $colours $text{'index_nojava'}

$returnhtml

EOF &footer(); file/CbImageChooser.class0100664000567100000120000000226210754361753015336 0ustar jcameronwheel.L - ./ . 0123 4 5 67 8 9 : ; < => ?@ABimgLjava/awt/Image;imgsrcLjava/lang/String;imgwIimghbut LCbButton;filewinLCbImageFileWindow;(Ljava/awt/Image;)VCodeLineNumberTable%(Ljava/awt/Image;Ljava/lang/String;)VsetImageclick (LCbButton;)V SourceFileCbImageChooser.java #' #Cjava/awt/BorderLayout DECenterCbButtonChoose.. #F  GH ('   ($ IJ !"CbImageFileWindow #KCbImageChooserjava/awt/PanelCbButtonCallback()V setLayout(Ljava/awt/LayoutManager;)V'(Ljava/lang/String;LCbButtonCallback;)Vadd<(Ljava/lang/String;Ljava/awt/Component;)Ljava/awt/Component;setText(Ljava/lang/String;)V(LCbImageChooser;)V  !"#$%#*+& #'%]5**Y**Y* Z W*+, , &%4('%Q)*+*,** * * & ()*%9+* * Y*W&#$%+,file/upform.cgi0100755000567100000120000000255410754361753013476 0ustar jcameronwheel#!/usr/local/bin/perl # upform.cgi # Display the upload form require './file-lib.pl'; $disallowed_buttons{'upload'} && &error($text{'ebutton'}); &ReadParse(undef, undef, 1); &popup_header($text{'upload_title'}); $upid = time().$$; $args = ($in{'extra'} ? $in{'extra'}."&" : "?")."id=$upid"; print &ui_form_start("upload.cgi$args", "form-data", undef, &read_parse_mime_javascript($upid, [ "file" ])); print &ui_table_start($text{'upload_title'}, "width=100%", 2); print &ui_table_row($text{'upload_file'}, &ui_upload("file", 20)); print &ui_table_row($text{'upload_dir'}, &ui_textbox("dir", $in{'dir'}, 20)."\n". &ui_submit($text{'upload_ok'})); if ($dostounix == 1) { # Do DOS conversion? print &ui_table_row($text{'upload_conv'}, &ui_yesno_radio("dos", 0)); } if ($unarchive == 1) { # Unzip file? print &ui_table_row($text{'upload_zip'}, &ui_radio("zip", int($config{'defzip'}), [ [ 2, $text{'upload_yes'} ], [ 1, $text{'yes'} ], [ 0, $text{'no'} ] ])); } if ($running_as_root) { # Upload as user $user = $config{'defuser'} || "root"; if ($user eq "*") { # Get from parent directory local @st = stat(&unmake_chroot($in{'dir'})); $user = getpwuid($st[4]); } print &ui_table_row($text{'upload_user'}, &ui_user_textbox("user", $user)); } print &ui_table_end(); print &ui_form_end(); &popup_footer(); file/CbImageFileWindow.class0100664000567100000120000000674310754361753016013 0ustar jcameronwheel. Pop Oq Or stu o Ovwx sy z O{ O|} o~  v   s  O  O O O O O O y s O / / / 4o / 4 4  O P   O  E  I parentLCbImageChooser;imgp LScrollImage;urlLjava/awt/TextField;browse LCbButton;okcancelfiledlogLjava/awt/FileDialog;lastfileLjava/lang/String;(LCbImageChooser;)VCodeLineNumberTableclick (LCbButton;)Vdispose()Vaction%(Ljava/awt/Event;Ljava/lang/Object;)ZloadFile(Ljava/lang/String;)VloadURL SourceFileCbImageChooser.java `g ^_ RS java/awt/BorderLayout Center ScrollImage ` TU  GrayPaneljava/awt/FlowLayout `java/awt/LabelURL: `k java/awt/TextField _ ` VWCbButtonBrowse.. ` XY Ok ZYCancel [YSouth g gChoose Image.. k fgjava/awt/FileDialog Choose Image ` java/lang/StringBuffer k jk http: ftp: lk   ErrorWindowFailed to load image  java/net/URL Failed to load image from java/net/MalformedURLException is not a valid URLCbImageFileWindow FixedFrameCbButtonCallbackCbImageChooserfilewinLCbImageFileWindow; setLayout(Ljava/awt/LayoutManager;)VimgLjava/awt/Image;(Ljava/awt/Image;II)Vadd<(Ljava/lang/String;Ljava/awt/Component;)Ljava/awt/Component;(I)Vjava/awt/Panel*(Ljava/awt/Component;)Ljava/awt/Component;imgsrc(Ljava/lang/String;I)V'(Ljava/lang/String;LCbButtonCallback;)VpackshowsetTitleUtilbodyLjava/awt/Color;recursiveBackground'(Ljava/awt/Component;Ljava/awt/Color;)VsetImage%(Ljava/awt/Image;Ljava/lang/String;)V&(Ljava/awt/Frame;Ljava/lang/String;I)VgetFile()Ljava/lang/String; getDirectoryappend,(Ljava/lang/String;)Ljava/lang/StringBuffer;toStringsetTextjava/awt/EventtargetLjava/lang/Object;getTextjava/lang/String startsWith(Ljava/lang/String;)ZtkLjava/awt/Toolkit;java/awt/ToolkitgetImage$(Ljava/lang/String;)Ljava/awt/Image; waitForImage(Ljava/awt/Image;)Z(Ljava/awt/Image;)V (Ljava/net/URL;)Ljava/awt/Image; OPQRSTUVWXYZY[Y\]^_`abJ***+***Y* * Y* ȷ Z WYM,Y,YW,*Y*ZW,*Y*ZW,Y W,*Y!*Z"W,*Y#*Z$W*%,W*&*'*()**+cR30 456"7B8J9V:d;~<=>?@BCDEFdebw+*"** ,*-+*" +*$ *.H+*@/Y*01M,2,3)4Y5,67,378N*-9*-:c2 JKL*M1N9PERISPUiVqWvZfgb- *;*c^_ `hibf6+<*,*=N->? -@? *-A*-:cd ef%g-i2j4ljkbk?B+CM, ,D!EY4Y5F7+78GW* ,H*+cqrs1u9v>xlkbeBIY+JKM, ,D!EY4Y5L7+78GW* ,H*+MEY4Y5+7N78GWEHMc& }~8@EHIdmnfile/ScrollImage.class0100664000567100000120000000516310754361753014730 0ustar jcameronwheel. PQ PR .S /T .U .V .WX T .YZ[ \ .] .^_ .` .a .b .c .d .e .f +g f +h i Pj kl km kn o Pp kq Prs Pt uv uw kx .y /z{ +| .}~imgLjava/awt/Image;imgwIimghpwphvsc LCbScrollbar;hsccompute_scrollbarsZ(Ljava/awt/Image;)VCodeLineNumberTable(Ljava/awt/Image;II)VsetImagepaint(Ljava/awt/Graphics;)Vupdatereshape(IIII)Vmoved(LCbScrollbar;I)Vmoving minimumSize()Ljava/awt/Dimension; preferredSize SourceFileCbImageChooser.java =A = ;< 64 74java/awt/BorderLayout East CbScrollbar = 89 South :9 B> 12 34 54 L 4 4  G   CD FGjava/awt/Dimension = KL ScrollImagejava/awt/PanelCbScrollbarCallbackUtilgetWidth(Ljava/awt/Image;)I getHeight()V setLayout(Ljava/awt/LayoutManager;)V(ILCbScrollbarCallback;)Vadd<(Ljava/lang/String;Ljava/awt/Component;)Ljava/awt/Component;repaintsizewidthheight setValues(III)VbodyLjava/awt/Color;java/awt/GraphicssetColor(Ljava/awt/Color;)VfillRect drawImage3(Ljava/awt/Image;IILjava/awt/image/ImageObserver;)ZgetValue()IfLjava/awt/Font;setFont(Ljava/awt/Font;)VtextfnmLjava/awt/FontMetrics;java/awt/FontMetrics stringWidth(Ljava/lang/String;)I drawString(Ljava/lang/String;II)V(II)V ./0123454647489:9;< =>?**+++@  =A?N*****Y * * Y* ZW** Y* ZW*+@" 3HMB>?\,*+*******@ "'+CD?#**d=**d>*j***G*********++*M*(* +**dl*dl*WN+** t* t*W1+!"+#$:+%&dl%'dl(@Z&-4>K`m"ED?*+)@FG?7****@ HI?!*@ JI?@KL?(+Y**,@ML?*-@NOfile/xinha/0040775000567100000120000000000010754361755012607 5ustar jcameronwheelfile/xinha/popups/0040775000567100000120000000000010754361755014135 5ustar jcameronwheelfile/xinha/popups/popup.js0100664000567100000120000000450010754361753015630 0ustar jcameronwheelXinha=window.opener.Xinha; HTMLArea=window.opener.Xinha; function getAbsolutePos(el){ var r={x:el.offsetLeft,y:el.offsetTop}; if(el.offsetParent){ var _3=getAbsolutePos(el.offsetParent); r.x+=_3.x; r.y+=_3.y; } return r; } function comboSelectValue(c,_5){ var _6=c.getElementsByTagName("option"); for(var i=_6.length;--i>=0;){ var op=_6[i]; op.selected=(op.value==_5); } c.value=_5; } function __dlg_onclose(){ opener.Dialog._return(null); } function __dlg_init(_9,_a){ __xinha_dlg_init(_a); } function __xinha_dlg_init(_b){ if(window.__dlg_init_done){ return true; } if(window.opener._editor_skin!=""){ var _c=document.getElementsByTagName("head")[0]; var _d=document.createElement("link"); _d.type="text/css"; _d.href=window.opener._editor_url+"skins/"+window.opener._editor_skin+"/skin.css"; _d.rel="stylesheet"; _c.appendChild(_d); } window.dialogArguments=opener.Dialog._arguments; var _e=document.body; if(!_b){ var _f=Xinha.viewportSize(window); _b={width:_f.x,height:_e.scrollHeight}; } window.resizeTo(_b.width,_b.height); var _f=Xinha.viewportSize(window); window.resizeBy(0,_e.scrollHeight-_f.y); if(_b.top&&_b.left){ window.moveTo(_b.left,_b.top); }else{ if(!Xinha.is_ie){ var x=opener.screenX+(opener.outerWidth-_b.width)/2; var y=opener.screenY+(opener.outerHeight-_b.height)/2; }else{ var x=(self.screen.availWidth-_b.width)/2; var y=(self.screen.availHeight-_b.height)/2; } window.moveTo(x,y); } Xinha.addDom0Event(document.body,"keypress",__dlg_close_on_esc); window.__dlg_init_done=true; } function __dlg_translate(_12){ var _13=["input","select","legend","span","option","td","th","button","div","label","a","img"]; for(var _14=0;_14<_13.length;++_14){ var _15=document.getElementsByTagName(_13[_14]); for(var i=_15.length;--i>=0;){ var _17=_15[i]; if(_17.firstChild&&_17.firstChild.data){ var txt=Xinha._lc(_17.firstChild.data,_12); if(txt){ _17.firstChild.data=txt; } } if(_17.title){ var txt=Xinha._lc(_17.title,_12); if(txt){ _17.title=txt; } } if(_17.tagName.toLowerCase()=="input"&&(/^(button|submit|reset)$/i.test(_17.type))){ var txt=Xinha._lc(_17.value,_12); if(txt){ _17.value=txt; } } } } document.title=Xinha._lc(document.title,_12); } function __dlg_close(val){ opener.Dialog._return(val); window.close(); } function __dlg_close_on_esc(ev){ ev||(ev=window.event); if(ev.keyCode==27){ __dlg_close(null); return false; } return true; } file/xinha/popups/about.html0100664000567100000120000002302510754361753016132 0ustar jcameronwheel About Xinha

Xinha

A free WYSIWYG editor replacement for <textarea> fields.

Visit the Xinha Website for more information.

Use of Xinha is granted by the terms of the htmlArea License (based on BSD license)

Xinha was originally based on work by Mihai Bazon which is:

Copyright (c) 2003-2004 dynarch.com.
    Copyright (c) 2002-2003 interactivetools.com, inc.
    This copyright notice MUST stay intact for use.

The development of Xinha would not have been possible without the original work of Mihai Bazon, InteractiveTools.com, and the many sponsors and contributors from around the world.

htmlArea License (based on BSD license)
Copyright (c) 2002-2004, interactivetools.com, inc.
Copyright (c) 2003-2004 dynarch.com
All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:

1) Redistributions of source code must retain the above copyright notice,
   this list of conditions and the following disclaimer.

2) Redistributions in binary form must reproduce the above copyright notice,
   this list of conditions and the following disclaimer in the documentation
   and/or other materials provided with the distribution.

3) Neither the name of interactivetools.com, inc. nor the names of its
   contributors may be used to endorse or promote products derived from this
   software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
About
Thanks
License
Plugins
Version
file/xinha/popups/editor_help.html0100664000567100000120000000442110754361753017315 0ustar jcameronwheel Editor Help

Xinha Help
Keyboard shortcuts
The editor provides the following key combinations:
ENTERnew paragraph(<P>)
SHIFT-ENTERinsert linebreak(<BR>)
CTRL-ASelect all
CTRL-BBold
CTRL-IItalic
CTRL-UUnderline
CTRL-SStrikethrough
CTRL-LJustify Left
CTRL-EJustify Center
CTRL-RJustify Right
CTRL-JJustify Full
CTRL-ZUndoes your last action
CTRL-YRedoes your last action
CTRL-NSet format to paragraph
CTRL-0 (zero)Clean content pasted from Word
CTRL-1 .. CTRL-6Headings (<h1> .. <h6>)
CTRL-XCut selection
CTRL-CCopy selection
CTRL-VPaste from clipboard
file/xinha/popups/select_color.html0100664000567100000120000005542310754361753017504 0ustar jcameronwheel Select Color
file/xinha/popups/blank.html0100664000567100000120000000001710754361753016103 0ustar jcameronwheel file/xinha/popups/popup.css0100664000567100000120000000207010754361753016004 0ustar jcameronwheelhtml, body, .dialog { background: ButtonFace; color: ButtonText; font: 11px Tahoma,Verdana,sans-serif; margin: 0px; padding: 0px; } body { padding: 5px; } form { padding: 0px; margin: 0px; } form p { margin-top: 5px; margin-bottom: 5px; } table { font: 11px Tahoma,Verdana,sans-serif; } select, input, button { font: 11px Tahoma,Verdana,sans-serif; } button { width: 70px; } table .label { text-align: right; width: 8em; } .fl { width: 9em; float: left; padding: 2px 5px; text-align: right; } .fr { width: 7em; float: left; padding: 2px 5px; text-align: right; } fieldset { padding: 0px 10px 5px 5px; } .space { padding: 2px; } .title { background: #ddf; color: #000; font-weight: bold; font-size: 120%; padding: 3px 10px; margin-bottom: 10px; border-bottom: 1px solid black; letter-spacing: 2px; } .buttonColor { padding: 1px; cursor: default; border: 1px solid; border-color: ButtonHighlight ButtonShadow ButtonShadow ButtonHighlight; } #buttons { margin-top: 1em; border-top: 1px solid #999; padding: 1em; text-align: right; }file/xinha/Xinha.css0100664000567100000120000001260510754361753014367 0ustar jcameronwheel.htmlarea { background: #fff; } .htmlarea .toolbar { cursor: default; background: ButtonFace; padding: 3px; border: 1px solid; border-color: ButtonHighlight ButtonShadow ButtonShadow ButtonHighlight; } .htmlarea .toolbar table { margin: 0; font-family: tahoma,verdana,sans-serif; font-size: 11px; } .htmlarea .toolbar img { border: none; vertical-align: top; } .htmlarea .toolbar .label { padding: 0px 3px; } .htmlarea .toolbar .button { background: ButtonFace; color: ButtonText; border: 1px solid ButtonFace; padding: 1px; margin: 0px; width: 18px; height: 18px; } .htmlarea .toolbar a.button:hover { border: 1px solid; border-color: ButtonHighlight ButtonShadow ButtonShadow ButtonHighlight; } .htmlarea .toolbar a.buttonDisabled:hover { border-color: ButtonFace; } .htmlarea .toolbar .buttonActive, .htmlarea .toolbar .buttonPressed { padding: 2px 0px 0px 2px; border: 1px solid; border-color: ButtonShadow ButtonHighlight ButtonHighlight ButtonShadow; } .htmlarea .toolbar .buttonPressed { background: ButtonHighlight; } .htmlarea .toolbar .indicator { padding: 0px 3px; overflow: hidden; width: 20px; text-align: center; cursor: default; border: 1px solid ButtonShadow; } .htmlarea .toolbar .buttonDisabled img { filter: gray() alpha(opacity = 25); -moz-opacity: 0.25; opacity: 0.25; } .htmlarea .toolbar .separator { /*position: relative;*/ margin: 3px; border-left: 1px solid ButtonShadow; border-right: 1px solid ButtonHighlight; width: 0px; height: 18px; padding: 0px; } .htmlarea .toolbar .space { width: 5px; } .htmlarea .toolbar select, .htmlarea .toolbar option { font: 11px Tahoma,Verdana,sans-serif;} .htmlarea .toolbar select, .htmlarea .toolbar select:hover, .htmlarea .toolbar select:active { margin-top: 2px; margin-bottom: 1px; color: ButtonText; } .htmlarea iframe.xinha_iframe, .htmlarea textarea.xinha_textarea { border: none; /*1px solid;*/ } .htmlarea .statusBar { border: 1px solid; border-color: ButtonShadow ButtonHighlight ButtonHighlight ButtonShadow; padding: 2px 4px; background-color: ButtonFace; color: ButtonText; font: 11px Tahoma,Verdana,sans-serif; height:16px; } .htmlarea .statusBar .statusBarTree a { padding: 2px 5px; color: #00f; } .htmlarea .statusBar .statusBarTree a:visited { color: #00f; } .htmlarea .statusBar .statusBarTree a:hover { background-color: Highlight; color: HighlightText; padding: 1px 4px; border: 1px solid HighlightText; } /* popup dialogs */ .dialog { color: ButtonText; background: ButtonFace; } .dialog .content { padding: 2px; } .dialog, .dialog button, .dialog input, .dialog select, .dialog textarea, .dialog table { font: 11px Tahoma,Verdana,sans-serif; } .dialog table { border-collapse: collapse; } .dialog .title, .dialog h1 { background: #008; color: #ff8; border-bottom: 1px solid #000; padding: 1px 0px 2px 5px; font-size: 12px; font-weight: bold; cursor: default; } .dialog h1 { margin:0px;} .dialog .title .button { float: right; border: 1px solid #66a; padding: 0px 1px 0px 2px; margin-right: 1px; color: #fff; text-align: center; } .dialog .title .button-hilite { border-color: #88f; background: #44c; } .dialog button { width: 5em; padding: 0px; } .dialog .buttonColor { padding: 1px; cursor: default; border: 1px solid; border-color: ButtonHighlight ButtonShadow ButtonShadow ButtonHighlight; } .dialog .buttonColor-hilite { border-color: #000; } .dialog .buttonColor .chooser, .dialog .buttonColor .nocolor { height: 0.6em; border: 1px solid; padding: 0px 1em; border-color: ButtonShadow ButtonHighlight ButtonHighlight ButtonShadow; } .dialog .buttonColor .nocolor { padding: 0px; } .dialog .buttonColor .nocolor-hilite { background-color: #fff; color: #f00; } .dialog .label { text-align: right; width: 6em; } .dialog .value input { width: 100%; } .dialog .buttons { text-align: right; padding: 2px 4px 0px 4px; } .dialog legend { font-weight: bold; } .dialog fieldset table { margin: 2px 0px; } .popupwin { padding: 0px; margin: 0px; } .popupwin .title { background: #fff; color: #000; font-weight: bold; font-size: 120%; padding: 3px 10px; margin-bottom: 10px; border-bottom: 1px solid black; letter-spacing: 2px; } form { margin: 0px; border: none; } /** Panels **/ .htmlarea .panels.top { border-bottom : 1px solid; border-color: ButtonShadow; } .htmlarea .panels.right { border-left : 1px solid; border-color: ButtonShadow; } .htmlarea .panels.left { border-right : 1px solid; border-color: ButtonShadow; } .htmlarea .panels.bottom { border-top : 1px solid; border-color: ButtonShadow; } .htmlarea .panel h1 { background: ButtonFace; border: 1px solid; border-color: ButtonHighlight ButtonShadow ButtonShadow ButtonHighlight; margin: 0px; padding: 0px; font-size:100%; font-weight:bold; padding: 2px; clear:left; } .htmlarea .panel { overflow:auto; } .htmlarea .panels.left .panel { border-right:none; border-left:none; } .htmlarea .panels.left h1 { border-right:none; } .htmlarea .panels.right .panel { border-right:none; border-left:none; } .htmlarea .panels.left h1 { border-left:none; } .htmlarea { border: 1px solid black; } .loading { background-color:#666; position:absolute; z-index:998; } .loading_main { font-size:1.6em; color:#ff6; text-align:center; } .loading_sub { font-size:1.0em; color:#fff; text-align:center; } file/xinha/examples/0040775000567100000120000000000010754361755014425 5ustar jcameronwheelfile/xinha/examples/simple_example.html0100664000567100000120000001547010754361753020321 0ustar jcameronwheel Simple example of Xinha
file/xinha/examples/ext_example.html0100664000567100000120000000115510754361753017623 0ustar jcameronwheel file/xinha/examples/stylist.css0100664000567100000120000000143110754361753016644 0ustar jcameronwheel /*--------------------------------------:noTabs=true:tabSize=2:indentSize=2:-- -- Stylist plugin example CSS file. Used by full_example.js -- when the Stylist plugin is included in an auto-generated example. -- -- $HeadURL: http://svn.xinha.python-hosting.com/tags/0.92beta/examples/stylist.css $ -- $LastChangedDate: 2007-01-19 23:24:36 +0100 (Fr, 19 Jan 2007) $ -- $LastChangedRevision: 677 $ -- $LastChangedBy: ray $ --------------------------------------------------------------------------*/ .bluetext { color:blue; } p.blue_paragraph { color:darkblue; } li.green_list_item { color:green; } h1.webdings_lvl_1 { font-family:webdings; } img.polaroid { border:1px solid black; background-color:white; padding:10px; padding-bottom:30px; }file/xinha/examples/ext_example-body.html0100664000567100000120000002110410754361753020552 0ustar jcameronwheel Example of Xinha
file/xinha/examples/testbed.html0100664000567100000120000002025410754361753016743 0ustar jcameronwheel Example of Xinha
Hide Show file/xinha/examples/ext_example-dest.php0100664000567100000120000000136010754361753020401 0ustar jcameronwheel Example of Xinha $value){ if(substr($key,0,10) == 'myTextarea') { echo '

'.$key.'(source):

'.$value.'
'; echo '

'.$key.'(preview):

'.$value; } } ?> file/xinha/examples/custom.css0100664000567100000120000000324010754361753016443 0ustar jcameronwheel /*--------------------------------------:noTabs=true:tabSize=2:indentSize=2:-- -- CSS plugin example CSS file. This file is used by full_example.js -- when the CSS plugin is included in an auto-generated example. -- @TODO Make this CSS more useful. -- -- $HeadURL: http://svn.xinha.python-hosting.com/tags/0.92beta/examples/custom.css $ -- $LastChangedDate: 2007-01-19 23:24:36 +0100 (Fr, 19 Jan 2007) $ -- $LastChangedRevision: 677 $ -- $LastChangedBy: ray $ --------------------------------------------------------------------------*/ body { background-color: #234; color: #dd8; font-family: tahoma; font-size: 12px; } a:link, a:visited { color: #8cf; } a:hover { color: #ff8; } h1 { background-color: #456; color: #ff8; padding: 2px 5px; border: 1px solid; border-color: #678 #012 #012 #678; } /* syntax highlighting (used by the first combo defined for the CSS plugin) */ pre { margin: 0px 1em; padding: 5px 1em; background-color: #000; border: 1px dotted #02d; border-left: 2px solid #04f; } .code { color: #f5deb3; } .string { color: #00ffff; } .comment { color: #8fbc8f; } .variable-name { color: #fa8072; } .type { color: #90ee90; font-weight: bold; } .reference { color: #ee82ee; } .preprocessor { color: #faf; } .keyword { color: #ffffff; font-weight: bold; } .function-name { color: #ace; } .html-tag { font-weight: bold; } .html-helper-italic { font-style: italic; } .warning { color: #ffa500; font-weight: bold; } .html-helper-bold { font-weight: bold; } /* info combo */ .quote { font-style: italic; color: #ee9; } .highlight { background-color: yellow; color: #000; } .deprecated { text-decoration: line-through; color: #aaa; } file/xinha/examples/full_example.css0100664000567100000120000000266310754361753017616 0ustar jcameronwheel /*--------------------------------------:noTabs=true:tabSize=2:indentSize=2:-- -- Xinha example CSS file. This is ripped from Trac ;) -- -- $HeadURL: http://svn.xinha.python-hosting.com/tags/0.92beta/examples/full_example.css $ -- $LastChangedDate: 2007-01-19 23:24:36 +0100 (Fr, 19 Jan 2007) $ -- $LastChangedRevision: 677 $ -- $LastChangedBy: ray $ --------------------------------------------------------------------------*/ body { background: #fff; color: #000; margin: 10px; } body, th, td { font: normal 13px verdana,arial,'Bitstream Vera Sans',helvetica,sans-serif; } h1, h2, h3, h4 { font-family: arial,verdana,'Bitstream Vera Sans',helvetica,sans-serif; font-weight: bold; letter-spacing: -0.018em; } h1 { font-size: 21px; margin: .15em 1em 0 0 } h2 { font-size: 16px; margin: 2em 0 .5em; } h3 { font-size: 14px; margin: 1.5em 0 .5em; } hr { border: none; border-top: 1px solid #ccb; margin: 2em 0; } address { font-style: normal } img { border: none } :link, :visited { text-decoration: none; color: #b00; border-bottom: 1px dotted #bbb; } :link:hover, :visited:hover { background-color: #eee; color: #555; } h1 :link, h1 :visited ,h2 :link, h2 :visited, h3 :link, h3 :visited, h4 :link, h4 :visited, h5 :link, h5 :visited, h6 :link, h6 :visited { color: inherit; } .area_holder { margin:10px; } label {font-size: 11px;}file/xinha/examples/ext_example-menu.php0100664000567100000120000002634610754361753020421 0ustar jcameronwheel Example of Xinha

Xinha Example

Settings
Plugins
read())) //not a dot file or directory { if(substr($entry,0,1) != '.') { $dir_array[] = $entry; } } $d->close(); sort($dir_array); foreach ($dir_array as $entry) { echo ''."\n"; } ?>
file/xinha/examples/dynamic.css0100664000567100000120000000251610754361753016562 0ustar jcameronwheel /*--------------------------------------:noTabs=true:tabSize=2:indentSize=2:-- -- DynamicCSS plugin example CSS file. Used by full_example.js -- when the DynamicCSS plugin is included in an auto-generated example. -- @TODO Make this CSS more useful. -- -- $HeadURL: http://svn.xinha.python-hosting.com/tags/0.92beta/examples/dynamic.css $ -- $LastChangedDate: 2007-01-19 23:24:36 +0100 (Fr, 19 Jan 2007) $ -- $LastChangedRevision: 677 $ -- $LastChangedBy: ray $ --------------------------------------------------------------------------*/ p { FONT-FAMILY: Arial, Helvetica; FONT-SIZE: 9pt; FONT-WEIGHT: normal; COLOR: #000000; } p.p1 { FONT-FAMILY: Arial, Helvetica; FONT-SIZE: 11pt; FONT-WEIGHT: normal; COLOR: #000000; } p.p2 { FONT-FAMILY: Arial, Helvetica; FONT-SIZE: 13pt; FONT-WEIGHT: normal; COLOR: #000000; } div { FONT-FAMILY: Arial, Helvetica; FONT-SIZE: 9pt; FONT-WEIGHT: bold; COLOR: #000000; } div.div1 { FONT-FAMILY: Arial, Helvetica; FONT-SIZE: 11pt; FONT-WEIGHT: bold; COLOR: #000000; } div.div2 { FONT-FAMILY: Arial, Helvetica; FONT-SIZE: 13pt; FONT-WEIGHT: bold; COLOR: #000000; } .quote { font-style: italic; color: #ee9; } .highlight { background-color: yellow; color: #000; } .deprecated { text-decoration: line-through; color: #aaa; } file/xinha/examples/full_example.js0100664000567100000120000000520110754361753017431 0ustar jcameronwheelvar num=1; if(window.parent&&window.parent!=window){ var f=window.parent.menu.document.forms[0]; _editor_lang=f.lang[f.lang.selectedIndex].value; _editor_skin=f.skin[f.skin.selectedIndex].value; num=parseInt(f.num.value); if(isNaN(num)){ num=1; f.num.value=1; } xinha_plugins=[]; for(var x=0;x Settings
Settings
Editor width:

Editor height:

Size includes bars

Status Bar

Mozilla Parameter Handler:
Undo steps:

Base href:

Strip base href

Strip self named anchors

only 7bit printables in URLs

7bit Clean

kill Word on paste

flow toolbars

show loading


CharacterMap mode :


ListType mode :


CharCounter (showChar) :

CharCounter (showWord) :

CharCounter (showHtml) :

file/xinha/XinhaCore.js0100664000567100000120000025046110754361754015031 0ustar jcameronwheelXinha.version={"Release":"Trunk","Head":"$HeadURL: http://svn.xinha.python-hosting.com/tags/0.92beta/XinhaCore.js $".replace(/^[^:]*: (.*) \$$/,"$1"),"Date":"$LastChangedDate: 2007-02-22 02:11:56 +0100 (Do, 22 Feb 2007) $".replace(/^[^:]*: ([0-9-]*) ([0-9:]*) ([+0-9]*) \((.*)\) \$/,"$4 $2 $3"),"Revision":"$LastChangedRevision: 757 $".replace(/^[^:]*: (.*) \$$/,"$1"),"RevisionBy":"$LastChangedBy: ray $".replace(/^[^:]*: (.*) \$$/,"$1")}; Xinha._resolveRelativeUrl=function(_1,_2){ if(_2.match(/^([^:]+\:)?\//)){ return _2; }else{ var b=_1.split("/"); if(b[b.length-1]==""){ b.pop(); } var p=_2.split("/"); if(p[0]=="."){ p.shift(); } while(p[0]==".."){ b.pop(); p.shift(); } return b.join("/")+"/"+p.join("/"); } }; if(typeof _editor_url=="string"){ _editor_url=_editor_url.replace(/\x2f*$/,"/"); if(!_editor_url.match(/^([^:]+\:)?\//)){ var path=window.location.toString().split("/"); path.pop(); _editor_url=Xinha._resolveRelativeUrl(path.join("/"),_editor_url); } }else{ alert("WARNING: _editor_url is not set! You should set this variable to the editor files path; it should preferably be an absolute path, like in '/htmlarea/', but it can be relative if you prefer. Further we will try to load the editor files correctly but we'll probably fail."); _editor_url=""; } if(typeof _editor_lang=="string"){ _editor_lang=_editor_lang.toLowerCase(); }else{ _editor_lang="en"; } if(typeof _editor_skin!=="string"){ _editor_skin=""; } var __xinhas=[]; Xinha.agt=navigator.userAgent.toLowerCase(); Xinha.is_ie=((Xinha.agt.indexOf("msie")!=-1)&&(Xinha.agt.indexOf("opera")==-1)); Xinha.ie_version=parseFloat(Xinha.agt.substring(Xinha.agt.indexOf("msie")+5)); Xinha.is_opera=(Xinha.agt.indexOf("opera")!=-1); Xinha.is_mac=(Xinha.agt.indexOf("mac")!=-1); Xinha.is_mac_ie=(Xinha.is_ie&&Xinha.is_mac); Xinha.is_win_ie=(Xinha.is_ie&&!Xinha.is_mac); Xinha.is_gecko=(navigator.product=="Gecko"); Xinha.isRunLocally=document.URL.toLowerCase().search(/^file:/)!=-1; if(Xinha.isRunLocally){ alert("Xinha *must* be installed on a web server. Locally opened files (those that use the \"file://\" protocol) cannot properly function. Xinha will try to initialize but may not be correctly loaded."); } function Xinha(_5,_6){ if(!_5){ throw ("Tried to create Xinha without textarea specified."); } if(Xinha.checkSupportedBrowser()){ if(typeof _6=="undefined"){ this.config=new Xinha.Config(); }else{ this.config=_6; } this._htmlArea=null; if(typeof _5!="object"){ _5=Xinha.getElementById("textarea",_5); } this._textArea=_5; this._textArea.spellcheck=false; this._initial_ta_size={w:_5.style.width?_5.style.width:(_5.offsetWidth?(_5.offsetWidth+"px"):(_5.cols+"em")),h:_5.style.height?_5.style.height:(_5.offsetHeight?(_5.offsetHeight+"px"):(_5.rows+"em"))}; if(this.config.showLoading){ var _7=document.createElement("div"); _7.id="loading_"+_5.name; _7.className="loading"; try{ _7.style.width=_5.offsetWidth+"px"; } catch(ex){ _7.style.width=this._initial_ta_size.w; } _7.style.left=Xinha.findPosX(_5)+"px"; _7.style.top=(Xinha.findPosY(_5)+parseInt(this._initial_ta_size.h,10)/2)+"px"; var _8=document.createElement("div"); _8.className="loading_main"; _8.id="loading_main_"+_5.name; _8.appendChild(document.createTextNode(Xinha._lc("Loading in progress. Please wait !"))); var _9=document.createElement("div"); _9.className="loading_sub"; _9.id="loading_sub_"+_5.name; _9.appendChild(document.createTextNode(Xinha._lc("Constructing main object"))); _7.appendChild(_8); _7.appendChild(_9); document.body.appendChild(_7); this.setLoadingMessage("Constructing object"); } this._editMode="wysiwyg"; this.plugins={}; this._timerToolbar=null; this._timerUndo=null; this._undoQueue=[this.config.undoSteps]; this._undoPos=-1; this._customUndo=true; this._mdoc=document; this.doctype=""; this.__htmlarea_id_num=__xinhas.length; __xinhas[this.__htmlarea_id_num]=this; this._notifyListeners={}; var _a={right:{on:true,container:document.createElement("td"),panels:[]},left:{on:true,container:document.createElement("td"),panels:[]},top:{on:true,container:document.createElement("td"),panels:[]},bottom:{on:true,container:document.createElement("td"),panels:[]}}; for(var i in _a){ if(!_a[i].container){ continue; } _a[i].div=_a[i].container; _a[i].container.className="panels "+i; Xinha.freeLater(_a[i],"container"); Xinha.freeLater(_a[i],"div"); } this._panels=_a; Xinha.freeLater(this,"_textArea"); } } Xinha.onload=function(){ }; Xinha.init=function(){ Xinha.onload(); }; Xinha.RE_tagName=/(<\/|<)\s*([^ \t\n>]+)/ig; Xinha.RE_doctype=/()\n?/i; Xinha.RE_head=/((.|\n)*?)<\/head>/i; Xinha.RE_body=/]*>((.|\n|\r|\t)*?)<\/body>/i; Xinha.RE_Specials=/([\/\^$*+?.()|{}[\]])/g; Xinha.RE_email=/[_a-zA-Z\d\-\.]{3,}@[_a-zA-Z\d\-]{2,}(\.[_a-zA-Z\d\-]{2,})+/i; Xinha.RE_url=/(https?:\/\/)?(([a-z0-9_]+:[a-z0-9_]+@)?[a-z0-9_-]{2,}(\.[a-z0-9_-]{2,}){2,}(:[0-9]+)?(\/\S+)*)/i; Xinha.Config=function(){ var _c=this; this.version=Xinha.version.Revision; this.width="auto"; this.height="auto"; this.sizeIncludesBars=true; this.sizeIncludesPanels=true; this.panel_dimensions={left:"200px",right:"200px",top:"100px",bottom:"100px"}; this.statusBar=true; this.htmlareaPaste=false; this.mozParaHandler="best"; this.getHtmlMethod="DOMwalk"; this.undoSteps=20; this.undoTimeout=500; this.changeJustifyWithDirection=false; this.fullPage=false; this.pageStyle=""; this.pageStyleSheets=[]; this.baseHref=null; this.expandRelativeUrl=true; this.stripBaseHref=true; this.stripSelfNamedAnchors=true; this.only7BitPrintablesInURLs=true; this.sevenBitClean=false; this.specialReplacements={}; this.killWordOnPaste=true; this.makeLinkShowsTarget=true; this.charSet=Xinha.is_gecko?document.characterSet:document.charset; this.imgURL="images/"; this.popupURL="popups/"; this.htmlRemoveTags=null; this.flowToolbars=true; this.showLoading=false; this.stripScripts=true; this.convertUrlsToLinks=true; this.colorPickerCellSize="6px"; this.colorPickerGranularity=18; this.colorPickerPosition="bottom,right"; this.colorPickerWebSafe=false; this.colorPickerSaveColors=20; this.fullScreen=false; this.fullScreenMargins=[0,0,0,0]; this.toolbar=[["popupeditor"],["separator","formatblock","fontname","fontsize","bold","italic","underline","strikethrough"],["separator","forecolor","hilitecolor","textindicator"],["separator","subscript","superscript"],["linebreak","separator","justifyleft","justifycenter","justifyright","justifyfull"],["separator","insertorderedlist","insertunorderedlist","outdent","indent"],["separator","inserthorizontalrule","createlink","insertimage","inserttable"],["linebreak","separator","undo","redo","selectall","print"],(Xinha.is_gecko?[]:["cut","copy","paste","overwrite","saveas"]),["separator","killword","clearfonts","removeformat","toggleborders","splitblock","lefttoright","righttoleft"],["separator","htmlmode","showhelp","about"]]; this.fontname={"— font —":"","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"}; this.fontsize={"— size —":"","1 (8 pt)":"1","2 (10 pt)":"2","3 (12 pt)":"3","4 (14 pt)":"4","5 (18 pt)":"5","6 (24 pt)":"6","7 (36 pt)":"7"}; this.formatblock={"— format —":"","Heading 1":"h1","Heading 2":"h2","Heading 3":"h3","Heading 4":"h4","Heading 5":"h5","Heading 6":"h6","Normal":"p","Address":"address","Formatted":"pre"}; this.customSelects={}; function cut_copy_paste(e,_e,_f){ e.execCommand(_e); } this.debug=true; this.URIs={"blank":"popups/blank.html","link":_editor_url+"modules/CreateLink/link.html","insert_image":_editor_url+"modules/InsertImage/insert_image.html","insert_table":_editor_url+"modules/InsertTable/insert_table.html","select_color":"select_color.html","about":"about.html","help":"editor_help.html"}; this.btnList={bold:["Bold",Xinha._lc({key:"button_bold",string:["ed_buttons_main.gif",3,2]},"Xinha"),false,function(e){ e.execCommand("bold"); }],italic:["Italic",Xinha._lc({key:"button_italic",string:["ed_buttons_main.gif",2,2]},"Xinha"),false,function(e){ e.execCommand("italic"); }],underline:["Underline",Xinha._lc({key:"button_underline",string:["ed_buttons_main.gif",2,0]},"Xinha"),false,function(e){ e.execCommand("underline"); }],strikethrough:["Strikethrough",Xinha._lc({key:"button_strikethrough",string:["ed_buttons_main.gif",3,0]},"Xinha"),false,function(e){ e.execCommand("strikethrough"); }],subscript:["Subscript",Xinha._lc({key:"button_subscript",string:["ed_buttons_main.gif",3,1]},"Xinha"),false,function(e){ e.execCommand("subscript"); }],superscript:["Superscript",Xinha._lc({key:"button_superscript",string:["ed_buttons_main.gif",2,1]},"Xinha"),false,function(e){ e.execCommand("superscript"); }],justifyleft:["Justify Left",["ed_buttons_main.gif",0,0],false,function(e){ e.execCommand("justifyleft"); }],justifycenter:["Justify Center",["ed_buttons_main.gif",1,1],false,function(e){ e.execCommand("justifycenter"); }],justifyright:["Justify Right",["ed_buttons_main.gif",1,0],false,function(e){ e.execCommand("justifyright"); }],justifyfull:["Justify Full",["ed_buttons_main.gif",0,1],false,function(e){ e.execCommand("justifyfull"); }],orderedlist:["Ordered List",["ed_buttons_main.gif",0,3],false,function(e){ e.execCommand("insertorderedlist"); }],unorderedlist:["Bulleted List",["ed_buttons_main.gif",1,3],false,function(e){ e.execCommand("insertunorderedlist"); }],insertorderedlist:["Ordered List",["ed_buttons_main.gif",0,3],false,function(e){ e.execCommand("insertorderedlist"); }],insertunorderedlist:["Bulleted List",["ed_buttons_main.gif",1,3],false,function(e){ e.execCommand("insertunorderedlist"); }],outdent:["Decrease Indent",["ed_buttons_main.gif",1,2],false,function(e){ e.execCommand("outdent"); }],indent:["Increase Indent",["ed_buttons_main.gif",0,2],false,function(e){ e.execCommand("indent"); }],forecolor:["Font Color",["ed_buttons_main.gif",3,3],false,function(e){ e.execCommand("forecolor"); }],hilitecolor:["Background Color",["ed_buttons_main.gif",2,3],false,function(e){ e.execCommand("hilitecolor"); }],undo:["Undoes your last action",["ed_buttons_main.gif",4,2],false,function(e){ e.execCommand("undo"); }],redo:["Redoes your last action",["ed_buttons_main.gif",5,2],false,function(e){ e.execCommand("redo"); }],cut:["Cut selection",["ed_buttons_main.gif",5,0],false,cut_copy_paste],copy:["Copy selection",["ed_buttons_main.gif",4,0],false,cut_copy_paste],paste:["Paste from clipboard",["ed_buttons_main.gif",4,1],false,cut_copy_paste],selectall:["Select all","ed_selectall.gif",false,function(e){ e.execCommand("selectall"); }],inserthorizontalrule:["Horizontal Rule",["ed_buttons_main.gif",6,0],false,function(e){ e.execCommand("inserthorizontalrule"); }],createlink:["Insert Web Link",["ed_buttons_main.gif",6,1],false,function(e){ e._createLink(); }],insertimage:["Insert/Modify Image",["ed_buttons_main.gif",6,3],false,function(e){ e.execCommand("insertimage"); }],inserttable:["Insert Table",["ed_buttons_main.gif",6,2],false,function(e){ e.execCommand("inserttable"); }],htmlmode:["Toggle HTML Source",["ed_buttons_main.gif",7,0],true,function(e){ e.execCommand("htmlmode"); }],toggleborders:["Toggle Borders",["ed_buttons_main.gif",7,2],false,function(e){ e._toggleBorders(); }],print:["Print document",["ed_buttons_main.gif",8,1],false,function(e){ if(Xinha.is_gecko){ e._iframe.contentWindow.print(); }else{ e.focusEditor(); print(); } }],saveas:["Save as","ed_saveas.gif",false,function(e){ e.execCommand("saveas",false,"noname.htm"); }],about:["About this editor",["ed_buttons_main.gif",8,2],true,function(e){ e.execCommand("about"); }],showhelp:["Help using editor",["ed_buttons_main.gif",9,2],true,function(e){ e.execCommand("showhelp"); }],splitblock:["Split Block","ed_splitblock.gif",false,function(e){ e._splitBlock(); }],lefttoright:["Direction left to right",["ed_buttons_main.gif",0,4],false,function(e){ e.execCommand("lefttoright"); }],righttoleft:["Direction right to left",["ed_buttons_main.gif",1,4],false,function(e){ e.execCommand("righttoleft"); }],overwrite:["Insert/Overwrite","ed_overwrite.gif",false,function(e){ e.execCommand("overwrite"); }],wordclean:["MS Word Cleaner",["ed_buttons_main.gif",5,3],false,function(e){ e._wordClean(); }],clearfonts:["Clear Inline Font Specifications",["ed_buttons_main.gif",5,4],true,function(e){ e._clearFonts(); }],removeformat:["Remove formatting",["ed_buttons_main.gif",4,4],false,function(e){ e.execCommand("removeformat"); }],killword:["Clear MSOffice tags",["ed_buttons_main.gif",4,3],false,function(e){ e.execCommand("killword"); }]}; for(var i in this.btnList){ var btn=this.btnList[i]; if(typeof btn!="object"){ continue; } if(typeof btn[1]!="string"){ btn[1][0]=_editor_url+this.imgURL+btn[1][0]; }else{ btn[1]=_editor_url+this.imgURL+btn[1]; } btn[0]=Xinha._lc(btn[0]); } }; Xinha.Config.prototype.registerButton=function(id,_3a,_3b,_3c,_3d,_3e){ var _3f; if(typeof id=="string"){ _3f=id; }else{ if(typeof id=="object"){ _3f=id.id; }else{ alert("ERROR [Xinha.Config::registerButton]:\ninvalid arguments"); return false; } } switch(typeof id){ case "string": this.btnList[id]=[_3a,_3b,_3c,_3d,_3e]; break; case "object": this.btnList[id.id]=[id.tooltip,id.image,id.textMode,id.action,id.context]; break; } }; Xinha.prototype.registerPanel=function(_40,_41){ if(!_40){ _40="right"; } this.setLoadingMessage("Register panel "+_40); var _42=this.addPanel(_40); if(_41){ _41.drawPanelIn(_42); } }; Xinha.Config.prototype.registerDropdown=function(_43){ this.customSelects[_43.id]=_43; }; Xinha.Config.prototype.hideSomeButtons=function(_44){ var _45=this.toolbar; for(var i=_45.length;--i>=0;){ var _47=_45[i]; for(var j=_47.length;--j>=0;){ if(_44.indexOf(" "+_47[j]+" ")>=0){ var len=1; if(/separator|space/.test(_47[j+1])){ len=2; } _47.splice(j,len); } } } }; Xinha.Config.prototype.addToolbarElement=function(id,_4b,_4c){ var _4d=this.toolbar; var a,i,j,o,sid; var _4f=false; var _50=false; var _51=0; var _52=0; var _53=0; var _54=false; var _55=false; if((id&&typeof id=="object")&&(id.constructor==Array)){ _4f=true; } if((_4b&&typeof _4b=="object")&&(_4b.constructor==Array)){ _50=true; _51=_4b.length; } if(_4f){ for(i=0;i=0;){ a.splice(j,0,id[i]); } }else{ a[j]=id; } }else{ if(_4c<0){ j=j+_4c+1; }else{ if(_4c>0){ j=j+_4c; } } if(_4f){ for(i=id.length;--i>=0;){ a.splice(j,0,id[i]); } }else{ a.splice(j,0,id); } } }else{ _4d[0].splice(0,0,"separator"); if(_4f){ for(i=id.length;--i>=0;){ _4d[0].splice(0,0,id[i]); } }else{ _4d[0].splice(0,0,id); } } }; Xinha.Config.prototype.removeToolbarElement=Xinha.Config.prototype.hideSomeButtons; Xinha.replaceAll=function(_56){ var tas=document.getElementsByTagName("textarea"); for(var i=tas.length;i>0;(new Xinha(tas[--i],_56)).generate()){ } }; Xinha.replace=function(id,_5a){ var ta=Xinha.getElementById("textarea",id); return ta?(new Xinha(ta,_5a)).generate():null; }; Xinha.prototype._createToolbar=function(){ this.setLoadingMessage("Create Toolbar"); var _5c=this; var _5d=document.createElement("div"); this._toolBar=this._toolbar=_5d; _5d.className="toolbar"; _5d.unselectable="1"; Xinha.freeLater(this,"_toolBar"); Xinha.freeLater(this,"_toolbar"); var _5e=null; var _5f={}; this._toolbarObjects=_5f; this._createToolbar1(_5c,_5d,_5f); this._htmlArea.appendChild(_5d); return _5d; }; Xinha.prototype._setConfig=function(_60){ this.config=_60; }; Xinha.prototype._addToolbar=function(){ this._createToolbar1(this,this._toolbar,this._toolbarObjects); }; Xinha._createToolbarBreakingElement=function(){ var brk=document.createElement("div"); brk.style.height="1px"; brk.style.width="1px"; brk.style.lineHeight="1px"; brk.style.fontSize="1px"; brk.style.clear="both"; return brk; }; Xinha.prototype._createToolbar1=function(_62,_63,_64){ var _65; if(_62.config.flowToolbars){ _63.appendChild(Xinha._createToolbarBreakingElement()); } function newLine(){ if(typeof _65!="undefined"&&_65.childNodes.length===0){ return; } var _66=document.createElement("table"); _66.border="0px"; _66.cellSpacing="0px"; _66.cellPadding="0px"; if(_62.config.flowToolbars){ if(Xinha.is_ie){ _66.style.styleFloat="left"; }else{ _66.style.cssFloat="left"; } } _63.appendChild(_66); var _67=document.createElement("tbody"); _66.appendChild(_67); _65=document.createElement("tr"); _67.appendChild(_65); _66.className="toolbarRow"; } newLine(); function setButtonStatus(id,_69){ var _6a=this[id]; var el=this.element; if(_6a!=_69){ switch(id){ case "enabled": if(_69){ Xinha._removeClass(el,"buttonDisabled"); el.disabled=false; }else{ Xinha._addClass(el,"buttonDisabled"); el.disabled=true; } break; case "active": if(_69){ Xinha._addClass(el,"buttonPressed"); }else{ Xinha._removeClass(el,"buttonPressed"); } break; } this[id]=_69; } } function createSelect(txt){ var _6d=null; var el=null; var cmd=null; var _70=_62.config.customSelects; var _71=null; var _72=""; switch(txt){ case "fontsize": case "fontname": case "formatblock": _6d=_62.config[txt]; cmd=txt; break; default: cmd=txt; var _73=_70[cmd]; if(typeof _73!="undefined"){ _6d=_73.options; _71=_73.context; if(typeof _73.tooltip!="undefined"){ _72=_73.tooltip; } }else{ alert("ERROR [createSelect]:\nCan't find the requested dropdown definition"); } break; } if(_6d){ el=document.createElement("select"); el.title=_72; var obj={name:txt,element:el,enabled:true,text:false,cmd:cmd,state:setButtonStatus,context:_71}; Xinha.freeLater(obj); _64[txt]=obj; for(var i in _6d){ if(typeof (_6d[i])!="string"){ continue; } var op=document.createElement("option"); op.innerHTML=Xinha._lc(i); op.value=_6d[i]; el.appendChild(op); } Xinha._addEvent(el,"change",function(){ _62._comboSelected(el,txt); }); } return el; } function createButton(txt){ var el,btn,obj=null; switch(txt){ case "separator": if(_62.config.flowToolbars){ newLine(); } el=document.createElement("div"); el.className="separator"; break; case "space": el=document.createElement("div"); el.className="space"; break; case "linebreak": newLine(); return false; case "textindicator": el=document.createElement("div"); el.appendChild(document.createTextNode("A")); el.className="indicator"; el.title=Xinha._lc("Current style"); obj={name:txt,element:el,enabled:true,active:false,text:false,cmd:"textindicator",state:setButtonStatus}; Xinha.freeLater(obj); _64[txt]=obj; break; default: btn=_62.config.btnList[txt]; } if(!el&&btn){ el=document.createElement("a"); el.style.display="block"; el.href="javascript:void(0)"; el.style.textDecoration="none"; el.title=btn[0]; el.className="button"; el.style.direction="ltr"; obj={name:txt,element:el,enabled:true,active:false,text:btn[2],cmd:btn[3],state:setButtonStatus,context:btn[4]||null}; Xinha.freeLater(el); Xinha.freeLater(obj); _64[txt]=obj; el.ondrag=function(){ return false; }; Xinha._addEvent(el,"mouseout",function(ev){ if(obj.enabled){ Xinha._removeClass(el,"buttonActive"); if(obj.active){ Xinha._addClass(el,"buttonPressed"); } } }); Xinha._addEvent(el,"mousedown",function(ev){ if(obj.enabled){ Xinha._addClass(el,"buttonActive"); Xinha._removeClass(el,"buttonPressed"); Xinha._stopEvent(Xinha.is_ie?window.event:ev); } }); Xinha._addEvent(el,"click",function(ev){ if(obj.enabled){ Xinha._removeClass(el,"buttonActive"); if(Xinha.is_gecko){ _62.activateEditor(); } obj.cmd(_62,obj.name,obj); Xinha._stopEvent(Xinha.is_ie?window.event:ev); } }); var _7c=Xinha.makeBtnImg(btn[1]); var img=_7c.firstChild; el.appendChild(_7c); obj.imgel=img; obj.swapImage=function(_7e){ if(typeof _7e!="string"){ img.src=_7e[0]; img.style.position="relative"; img.style.top=_7e[2]?("-"+(18*(_7e[2]+1))+"px"):"-18px"; img.style.left=_7e[1]?("-"+(18*(_7e[1]+1))+"px"):"-18px"; }else{ obj.imgel.src=_7e; img.style.top="0px"; img.style.left="0px"; } }; }else{ if(!el){ el=createSelect(txt); } } return el; } var _7f=true; for(var i=0;i] button to switch back to WYSIWYG."); div.style.display="none"; this._statusBarTextMode=div; Xinha.freeLater(this,"_statusBarTextMode"); this._statusBar.appendChild(div); if(!this.config.statusBar){ _8c.style.display="none"; } return _8c; }; Xinha.prototype.generate=function(){ var i; var _8f=this; if(Xinha.is_ie){ if(typeof InternetExplorer=="undefined"){ Xinha.loadPlugin("InternetExplorer",function(){ _8f.generate(); },_editor_url+"modules/InternetExplorer/InternetExplorer.js"); return false; } _8f._browserSpecificPlugin=_8f.registerPlugin("InternetExplorer"); }else{ if(typeof Gecko=="undefined"){ Xinha.loadPlugin("Gecko",function(){ _8f.generate(); },_editor_url+"modules/Gecko/Gecko.js"); return false; } _8f._browserSpecificPlugin=_8f.registerPlugin("Gecko"); } this.setLoadingMessage("Generate Xinha object"); if(typeof Dialog=="undefined"){ Xinha._loadback(_editor_url+"modules/Dialogs/dialog.js",this.generate,this); return false; } if(typeof Xinha.Dialog=="undefined"){ Xinha._loadback(_editor_url+"modules/Dialogs/inline-dialog.js",this.generate,this); return false; } if(typeof FullScreen=="undefined"){ Xinha.loadPlugin("FullScreen",function(){ _8f.generate(); },_editor_url+"modules/FullScreen/full-screen.js"); return false; } var _90=_8f.config.toolbar; for(i=_90.length;--i>=0;){ for(var j=_90[i].length;--j>=0;){ switch(_90[i][j]){ case "popupeditor": _8f.registerPlugin("FullScreen"); break; case "insertimage": if(typeof InsertImage=="undefined"&&typeof Xinha.prototype._insertImage=="undefined"){ Xinha.loadPlugin("InsertImage",function(){ _8f.generate(); },_editor_url+"modules/InsertImage/insert_image.js"); return false; }else{ if(typeof InsertImage!="undefined"){ _8f.registerPlugin("InsertImage"); } } break; case "createlink": if(typeof CreateLink=="undefined"&&typeof Xinha.prototype._createLink=="undefined"&&typeof Linker=="undefined"){ Xinha.loadPlugin("CreateLink",function(){ _8f.generate(); },_editor_url+"modules/CreateLink/link.js"); return false; }else{ if(typeof CreateLink!="undefined"){ _8f.registerPlugin("CreateLink"); } } break; case "inserttable": if(typeof InsertTable=="undefined"&&typeof Xinha.prototype._insertTable=="undefined"){ Xinha.loadPlugin("InsertTable",function(){ _8f.generate(); },_editor_url+"modules/InsertTable/insert_table.js"); return false; }else{ if(typeof InsertTable!="undefined"){ _8f.registerPlugin("InsertTable"); } } break; case "hilitecolor": case "forecolor": if(typeof ColorPicker=="undefined"){ Xinha.loadPlugin("ColorPicker",function(){ _8f.generate(); },_editor_url+"modules/ColorPicker/ColorPicker.js"); return false; }else{ if(typeof ColorPicker!="undefined"){ _8f.registerPlugin("ColorPicker"); } } break; } } } if(Xinha.is_gecko&&(_8f.config.mozParaHandler=="best"||_8f.config.mozParaHandler=="dirty")){ switch(this.config.mozParaHandler){ case "dirty": var _92=_editor_url+"modules/Gecko/paraHandlerDirty.js"; break; default: var _92=_editor_url+"modules/Gecko/paraHandlerBest.js"; break; } if(typeof EnterParagraphs=="undefined"){ Xinha.loadPlugin("EnterParagraphs",function(){ _8f.generate(); },_92); return false; } _8f.registerPlugin("EnterParagraphs"); } switch(this.config.getHtmlMethod){ case "TransformInnerHTML": var _93=_editor_url+"modules/GetHtml/TransformInnerHTML.js"; break; default: var _93=_editor_url+"modules/GetHtml/DOMwalk.js"; break; } if(typeof GetHtmlImplementation=="undefined"){ Xinha.loadPlugin("GetHtmlImplementation",function(){ _8f.generate(); },_93); return false; }else{ _8f.registerPlugin("GetHtmlImplementation"); } if(_editor_skin!==""){ var _94=false; var _95=document.getElementsByTagName("head")[0]; var _96=document.getElementsByTagName("link"); for(i=0;i<_96.length;i++){ if((_96[i].rel=="stylesheet")&&(_96[i].href==_editor_url+"skins/"+_editor_skin+"/skin.css")){ _94=true; } } if(!_94){ var _97=document.createElement("link"); _97.type="text/css"; _97.href=_editor_url+"skins/"+_editor_skin+"/skin.css"; _97.rel="stylesheet"; _95.appendChild(_97); } } this._framework={"table":document.createElement("table"),"tbody":document.createElement("tbody"),"tb_row":document.createElement("tr"),"tb_cell":document.createElement("td"),"tp_row":document.createElement("tr"),"tp_cell":this._panels.top.container,"ler_row":document.createElement("tr"),"lp_cell":this._panels.left.container,"ed_cell":document.createElement("td"),"rp_cell":this._panels.right.container,"bp_row":document.createElement("tr"),"bp_cell":this._panels.bottom.container,"sb_row":document.createElement("tr"),"sb_cell":document.createElement("td")}; Xinha.freeLater(this._framework); var fw=this._framework; fw.table.border="0"; fw.table.cellPadding="0"; fw.table.cellSpacing="0"; fw.tb_row.style.verticalAlign="top"; fw.tp_row.style.verticalAlign="top"; fw.ler_row.style.verticalAlign="top"; fw.bp_row.style.verticalAlign="top"; fw.sb_row.style.verticalAlign="top"; fw.ed_cell.style.position="relative"; fw.tb_row.appendChild(fw.tb_cell); fw.tb_cell.colSpan=3; fw.tp_row.appendChild(fw.tp_cell); fw.tp_cell.colSpan=3; fw.ler_row.appendChild(fw.lp_cell); fw.ler_row.appendChild(fw.ed_cell); fw.ler_row.appendChild(fw.rp_cell); fw.bp_row.appendChild(fw.bp_cell); fw.bp_cell.colSpan=3; fw.sb_row.appendChild(fw.sb_cell); fw.sb_cell.colSpan=3; fw.tbody.appendChild(fw.tb_row); fw.tbody.appendChild(fw.tp_row); fw.tbody.appendChild(fw.ler_row); fw.tbody.appendChild(fw.bp_row); fw.tbody.appendChild(fw.sb_row); fw.table.appendChild(fw.tbody); var _99=this._framework.table; this._htmlArea=_99; Xinha.freeLater(this,"_htmlArea"); _99.className="htmlarea"; this._framework.tb_cell.appendChild(this._createToolbar()); var _9a=document.createElement("iframe"); _9a.src=_editor_url+_8f.config.URIs.blank; this._framework.ed_cell.appendChild(_9a); this._iframe=_9a; this._iframe.className="xinha_iframe"; Xinha.freeLater(this,"_iframe"); var _9b=this._createStatusBar(); this._framework.sb_cell.appendChild(_9b); var _9c=this._textArea; _9c.parentNode.insertBefore(_99,_9c); _9c.className="xinha_textarea"; Xinha.removeFromParent(_9c); this._framework.ed_cell.appendChild(_9c); if(_9c.form){ Xinha.prependDom0Event(this._textArea.form,"submit",function(){ _8f._textArea.value=_8f.outwardHtml(_8f.getHTML()); return true; }); var _9d=_9c.value; Xinha.prependDom0Event(this._textArea.form,"reset",function(){ _8f.setHTML(_8f.inwardHtml(_9d)); _8f.updateToolbar(); return true; }); if(!_9c.form.xinha_submit){ try{ _9c.form.xinha_submit=_9c.form.submit; _9c.form.submit=function(){ this.onsubmit(); this.xinha_submit(); }; } catch(ex){ } } } Xinha.prependDom0Event(window,"unload",function(){ _9c.value=_8f.outwardHtml(_8f.getHTML()); return true; }); _9c.style.display="none"; _8f.initSize(); _8f._iframeLoadDone=false; Xinha._addEvent(this._iframe,"load",function(e){ if(!_8f._iframeLoadDone){ _8f._iframeLoadDone=true; _8f.initIframe(); } return true; }); }; Xinha.prototype.initSize=function(){ this.setLoadingMessage("Init editor size"); var _9f=this; var _a0=null; var _a1=null; switch(this.config.width){ case "auto": _a0=this._initial_ta_size.w; break; case "toolbar": _a0=this._toolBar.offsetWidth+"px"; break; default: _a0=/[^0-9]/.test(this.config.width)?this.config.width:this.config.width+"px"; break; } switch(this.config.height){ case "auto": _a1=this._initial_ta_size.h; break; default: _a1=/[^0-9]/.test(this.config.height)?this.config.height:this.config.height+"px"; break; } this.sizeEditor(_a0,_a1,this.config.sizeIncludesBars,this.config.sizeIncludesPanels); this.notifyOn("panel_change",function(){ _9f.sizeEditor(); }); }; Xinha.prototype.sizeEditor=function(_a2,_a3,_a4,_a5){ this._iframe.style.height="100%"; this._textArea.style.height="100%"; this._iframe.style.width=""; this._textArea.style.width=""; if(_a4!==null){ this._htmlArea.sizeIncludesToolbars=_a4; } if(_a5!==null){ this._htmlArea.sizeIncludesPanels=_a5; } if(_a2){ this._htmlArea.style.width=_a2; if(!this._htmlArea.sizeIncludesPanels){ var _a6=this._panels.right; if(_a6.on&&_a6.panels.length&&Xinha.hasDisplayedChildren(_a6.div)){ this._htmlArea.style.width=(this._htmlArea.offsetWidth+parseInt(this.config.panel_dimensions.right,10))+"px"; } var _a7=this._panels.left; if(_a7.on&&_a7.panels.length&&Xinha.hasDisplayedChildren(_a7.div)){ this._htmlArea.style.width=(this._htmlArea.offsetWidth+parseInt(this.config.panel_dimensions.left,10))+"px"; } } } if(_a3){ this._htmlArea.style.height=_a3; if(!this._htmlArea.sizeIncludesToolbars){ this._htmlArea.style.height=(this._htmlArea.offsetHeight+this._toolbar.offsetHeight+this._statusBar.offsetHeight)+"px"; } if(!this._htmlArea.sizeIncludesPanels){ var _a8=this._panels.top; if(_a8.on&&_a8.panels.length&&Xinha.hasDisplayedChildren(_a8.div)){ this._htmlArea.style.height=(this._htmlArea.offsetHeight+parseInt(this.config.panel_dimensions.top,10))+"px"; } var _a9=this._panels.bottom; if(_a9.on&&_a9.panels.length&&Xinha.hasDisplayedChildren(_a9.div)){ this._htmlArea.style.height=(this._htmlArea.offsetHeight+parseInt(this.config.panel_dimensions.bottom,10))+"px"; } } } _a2=this._htmlArea.offsetWidth; _a3=this._htmlArea.offsetHeight; var _aa=this._panels; var _ab=this; var _ac=1; function panel_is_alive(pan){ if(_aa[pan].on&&_aa[pan].panels.length&&Xinha.hasDisplayedChildren(_aa[pan].container)){ _aa[pan].container.style.display=""; return true; }else{ _aa[pan].container.style.display="none"; return false; } } if(panel_is_alive("left")){ _ac+=1; } if(panel_is_alive("right")){ _ac+=1; } this._framework.tb_cell.colSpan=_ac; this._framework.tp_cell.colSpan=_ac; this._framework.bp_cell.colSpan=_ac; this._framework.sb_cell.colSpan=_ac; if(!this._framework.tp_row.childNodes.length){ Xinha.removeFromParent(this._framework.tp_row); }else{ if(!Xinha.hasParentNode(this._framework.tp_row)){ this._framework.tbody.insertBefore(this._framework.tp_row,this._framework.ler_row); } } if(!this._framework.bp_row.childNodes.length){ Xinha.removeFromParent(this._framework.bp_row); }else{ if(!Xinha.hasParentNode(this._framework.bp_row)){ this._framework.tbody.insertBefore(this._framework.bp_row,this._framework.ler_row.nextSibling); } } if(!this.config.statusBar){ Xinha.removeFromParent(this._framework.sb_row); }else{ if(!Xinha.hasParentNode(this._framework.sb_row)){ this._framework.table.appendChild(this._framework.sb_row); } } this._framework.lp_cell.style.width=this.config.panel_dimensions.left; this._framework.rp_cell.style.width=this.config.panel_dimensions.right; this._framework.tp_cell.style.height=this.config.panel_dimensions.top; this._framework.bp_cell.style.height=this.config.panel_dimensions.bottom; this._framework.tb_cell.style.height=this._toolBar.offsetHeight+"px"; this._framework.sb_cell.style.height=this._statusBar.offsetHeight+"px"; var _ae=_a3-this._toolBar.offsetHeight-this._statusBar.offsetHeight; if(panel_is_alive("top")){ _ae-=parseInt(this.config.panel_dimensions.top,10); } if(panel_is_alive("bottom")){ _ae-=parseInt(this.config.panel_dimensions.bottom,10); } this._iframe.style.height=_ae+"px"; var _af=_a2; if(panel_is_alive("left")){ _af-=parseInt(this.config.panel_dimensions.left,10); } if(panel_is_alive("right")){ _af-=parseInt(this.config.panel_dimensions.right,10); } this._iframe.style.width=_af+"px"; this._textArea.style.height=this._iframe.style.height; this._textArea.style.width=this._iframe.style.width; this.notifyOf("resize",{width:this._htmlArea.offsetWidth,height:this._htmlArea.offsetHeight}); }; Xinha.prototype.addPanel=function(_b0){ var div=document.createElement("div"); div.side=_b0; if(_b0=="left"||_b0=="right"){ div.style.width=this.config.panel_dimensions[_b0]; if(this._iframe){ div.style.height=this._iframe.style.height; } } Xinha.addClasses(div,"panel"); this._panels[_b0].panels.push(div); this._panels[_b0].div.appendChild(div); this.notifyOf("panel_change",{"action":"add","panel":div}); return div; }; Xinha.prototype.removePanel=function(_b2){ this._panels[_b2.side].div.removeChild(_b2); var _b3=[]; for(var i=0;i\n"; if(typeof _c4.config.baseHref!="undefined"&&_c4.config.baseHref!==null){ _c5+="\n"; } _c5+=Xinha.addCoreCSS(); if(_c4.config.pageStyle){ _c5+=""; } if(typeof _c4.config.pageStyleSheets!=="undefined"){ for(var i=0;i<_c4.config.pageStyleSheets.length;i++){ if(_c4.config.pageStyleSheets[i].length>0){ _c5+=""; } } } _c5+="\n"; _c5+="\n"; _c5+=_c4.inwardHtml(_c4._textArea.value); _c5+="\n"; _c5+=""; }else{ _c5=_c4.inwardHtml(_c4._textArea.value); if(_c5.match(Xinha.RE_doctype)){ _c4.setDoctype(RegExp.$1); _c5=_c5.replace(Xinha.RE_doctype,""); } var _c7=_c5.match(//gi); _c5=_c5.replace(/\s*/gi,""); _c7?_c5=_c5.replace(/<\/head>/i,_c7.join("\n")+"\n"):null; } doc.write(_c5); doc.close(); if(this.config.fullScreen){ this._fullScreen(); } this.setEditorEvents(); }; Xinha.prototype.whenDocReady=function(F){ var E=this; if(this._doc&&this._doc.body){ F(); }else{ setTimeout(function(){ E.whenDocReady(F); },50); } }; Xinha.prototype.setMode=function(_ca){ var _cb; if(typeof _ca=="undefined"){ _ca=this._editMode=="textmode"?"wysiwyg":"textmode"; } switch(_ca){ case "textmode": this.setCC("iframe"); _cb=this.outwardHtml(this.getHTML()); this.setHTML(_cb); this.deactivateEditor(); this._iframe.style.display="none"; this._textArea.style.display=""; if(this.config.statusBar){ this._statusBarTree.style.display="none"; this._statusBarTextMode.style.display=""; } this.notifyOf("modechange",{"mode":"text"}); this.findCC("textarea"); break; case "wysiwyg": this.setCC("textarea"); _cb=this.inwardHtml(this.getHTML()); this.deactivateEditor(); this.setHTML(_cb); this._iframe.style.display=""; this._textArea.style.display="none"; this.activateEditor(); if(this.config.statusBar){ this._statusBarTree.style.display=""; this._statusBarTextMode.style.display="none"; } this.notifyOf("modechange",{"mode":"wysiwyg"}); this.findCC("iframe"); break; default: alert("Mode <"+_ca+"> not defined!"); return false; } this._editMode=_ca; for(var i in this.plugins){ var _cd=this.plugins[i].instance; if(_cd&&typeof _cd.onMode=="function"){ _cd.onMode(_ca); } } }; Xinha.prototype.setFullHTML=function(_ce){ var _cf=RegExp.multiline; RegExp.multiline=true; if(_ce.match(Xinha.RE_doctype)){ this.setDoctype(RegExp.$1); _ce=_ce.replace(Xinha.RE_doctype,""); } RegExp.multiline=_cf; if(0){ if(_ce.match(Xinha.RE_head)){ this._doc.getElementsByTagName("head")[0].innerHTML=RegExp.$1; } if(_ce.match(Xinha.RE_body)){ this._doc.getElementsByTagName("body")[0].innerHTML=RegExp.$1; } }else{ var _d0=this.editorIsActivated(); if(_d0){ this.deactivateEditor(); } var _d1=/((.|\n)*?)<\/html>/i; _ce=_ce.replace(_d1,"$1"); this._doc.open("text/html","replace"); this._doc.write(_ce); this._doc.close(); if(_d0){ this.activateEditor(); } this.setEditorEvents(); return true; } }; Xinha.prototype.setEditorEvents=function(){ var _d2=this; var doc=this._doc; _d2.whenDocReady(function(){ Xinha._addEvents(doc,["mousedown"],function(){ _d2.activateEditor(); return true; }); Xinha._addEvents(doc,["keydown","keypress","mousedown","mouseup","drag"],function(_d4){ return _d2._editorEvent(Xinha.is_ie?_d2._iframe.contentWindow.event:_d4); }); for(var i in _d2.plugins){ var _d6=_d2.plugins[i].instance; Xinha.refreshPlugin(_d6); } if(typeof _d2._onGenerate=="function"){ _d2._onGenerate(); } Xinha.addDom0Event(window,"resize",function(e){ _d2.sizeEditor(); }); _d2.removeLoadingMessage(); }); }; Xinha.prototype.registerPlugin=function(){ var _d8=arguments[0]; if(_d8===null||typeof _d8=="undefined"||(typeof _d8=="string"&&eval("typeof "+_d8)=="undefined")){ return false; } var _d9=[]; for(var i=1;i=0;){ ta.value+=" "; } ta.value+=str+"\n"; } function _dt(_fe,_ff){ var tag=_fe.tagName.toLowerCase(),i; var ns=Xinha.is_ie?_fe.scopeName:_fe.prefix; debug(_ff,"- "+tag+" ["+ns+"]"); for(i=_fe.firstChild;i;i=i.nextSibling){ if(i.nodeType==1){ _dt(i,_ff+2); } } } _dt(this._doc.body,0); document.body.appendChild(ta); }; Xinha.getInnerText=function(el){ var txt="",i; for(i=el.firstChild;i;i=i.nextSibling){ if(i.nodeType==3){ txt+=i.data; }else{ if(i.nodeType==1){ txt+=Xinha.getInnerText(i); } } } return txt; }; Xinha.prototype._wordClean=function(){ var _104=this; var _105={empty_tags:0,mso_class:0,mso_style:0,mso_xmlel:0,orig_len:this._doc.body.innerHTML.length,T:(new Date()).getTime()}; var _106={empty_tags:"Empty tags removed: ",mso_class:"MSO class names removed: ",mso_style:"MSO inline style removed: ",mso_xmlel:"MSO XML elements stripped: "}; function showStats(){ var txt="Xinha word cleaner stats: \n\n"; for(var i in _105){ if(_106[i]){ txt+=_106[i]+_105[i]+"\n"; } } txt+="\nInitial document length: "+_105.orig_len+"\n"; txt+="Final document length: "+_104._doc.body.innerHTML.length+"\n"; txt+="Clean-up took "+(((new Date()).getTime()-_105.T)/1000)+" seconds"; alert(txt); } function clearClass(node){ var newc=node.className.replace(/(^|\s)mso.*?(\s|$)/ig," "); if(newc!=node.className){ node.className=newc; if(!(/\S/.test(node.className))){ node.removeAttribute("className"); ++_105.mso_class; } } } function clearStyle(node){ var _10c=node.style.cssText.split(/\s*;\s*/); for(var i=_10c.length;--i>=0;){ if((/^mso|^tab-stops/i.test(_10c[i]))||(/^margin\s*:\s*0..\s+0..\s+0../i.test(_10c[i]))){ ++_105.mso_style; _10c.splice(i,1); } } node.style.cssText=_10c.join("; "); } var _10e=null; if(Xinha.is_ie){ _10e=function(el){ el.outerHTML=Xinha.htmlEncode(el.innerText); ++_105.mso_xmlel; }; }else{ _10e=function(el){ var txt=document.createTextNode(Xinha.getInnerText(el)); el.parentNode.insertBefore(txt,el); Xinha.removeFromParent(el); ++_105.mso_xmlel; }; } function checkEmpty(el){ if(/^(span|b|strong|i|em|font|div|p)$/i.test(el.tagName)&&!el.firstChild){ Xinha.removeFromParent(el); ++_105.empty_tags; } } function parseTree(root){ var tag=root.tagName.toLowerCase(),i,next; if((Xinha.is_ie&&root.scopeName!="HTML")||(!Xinha.is_ie&&(/:/.test(tag)))){ _10e(root); return false; }else{ clearClass(root); clearStyle(root); for(i=root.firstChild;i;i=next){ next=i.nextSibling; if(i.nodeType==1&&parseTree(i)){ checkEmpty(i); } } } return true; } parseTree(this._doc.body); this.updateToolbar(); }; Xinha.prototype._clearFonts=function(){ var D=this.getInnerHTML(); if(confirm(Xinha._lc("Would you like to clear font typefaces?"))){ D=D.replace(/face="[^"]*"/gi,""); D=D.replace(/font-family:[^;}"']+;?/gi,""); } if(confirm(Xinha._lc("Would you like to clear font sizes?"))){ D=D.replace(/size="[^"]*"/gi,""); D=D.replace(/font-size:[^;}"']+;?/gi,""); } if(confirm(Xinha._lc("Would you like to clear font colours?"))){ D=D.replace(/color="[^"]*"/gi,""); D=D.replace(/([^-])color:[^;}"']+;?/gi,"$1"); } D=D.replace(/(style|class)="\s*"/gi,""); D=D.replace(/<(font|span)\s*>/gi,""); this.setHTML(D); this.updateToolbar(); }; Xinha.prototype._splitBlock=function(){ this._doc.execCommand("formatblock",false,"div"); }; Xinha.prototype.forceRedraw=function(){ this._doc.body.style.visibility="hidden"; this._doc.body.style.visibility=""; }; Xinha.prototype.focusEditor=function(){ switch(this._editMode){ case "wysiwyg": try{ if(Xinha._someEditorHasBeenActivated){ this.activateEditor(); this._iframe.contentWindow.focus(); } } catch(ex){ } break; case "textmode": try{ this._textArea.focus(); } catch(e){ } break; default: alert("ERROR: mode "+this._editMode+" is not defined"); } return this._doc; }; Xinha.prototype._undoTakeSnapshot=function(){ ++this._undoPos; if(this._undoPos>=this.config.undoSteps){ this._undoQueue.shift(); --this._undoPos; } var take=true; var txt=this.getInnerHTML(); if(this._undoPos>0){ take=(this._undoQueue[this._undoPos-1]!=txt); } if(take){ this._undoQueue[this._undoPos]=txt; }else{ this._undoPos--; } }; Xinha.prototype.undo=function(){ if(this._undoPos>0){ var txt=this._undoQueue[--this._undoPos]; if(txt){ this.setHTML(txt); }else{ ++this._undoPos; } } }; Xinha.prototype.redo=function(){ if(this._undoPos=0;){ var el=_126[i]; if(!el){ continue; } var a=document.createElement("a"); a.href="javascript:void(0)"; a.el=el; a.editor=this; Xinha.addDom0Event(a,"click",function(){ this.blur(); this.editor.selectNodeContents(this.el); this.editor.updateToolbar(true); return false; }); Xinha.addDom0Event(a,"contextmenu",function(){ this.blur(); var info="Inline style:\n\n"; info+=this.el.style.cssText.split(/;\s*/).join(";\n"); alert(info); return false; }); var txt=el.tagName.toLowerCase(); if(typeof el.style!="undefined"){ a.title=el.style.cssText; } if(el.id){ txt+="#"+el.id; } if(el.className){ txt+="."+el.className; } a.appendChild(document.createTextNode(txt)); this._statusBarTree.appendChild(a); if(i!==0){ this._statusBarTree.appendChild(document.createTextNode(String.fromCharCode(187))); } } } } for(var cmd in this._toolbarObjects){ var btn=this._toolbarObjects[cmd]; var _12e=true; if(typeof (btn.state)!="function"){ continue; } if(btn.context&&!text){ _12e=false; var _12f=btn.context; var _130=[]; if(/(.*)\[(.*?)\]/.test(_12f)){ _12f=RegExp.$1; _130=RegExp.$2.split(","); } _12f=_12f.toLowerCase(); var _131=(_12f=="*"); for(var k=0;k<_126.length;++k){ if(!_126[k]){ continue; } if(_131||(_126[k].tagName.toLowerCase()==_12f)){ _12e=true; var _133=null; var att=null; var comp=null; var _136=null; for(var ka=0;ka<_130.length;++ka){ _133=_130[ka].match(/(.*)(==|!=|===|!==|>|>=|<|<=)(.*)/); att=_133[1]; comp=_133[2]; _136=_133[3]; if(!eval(_126[k][att]+comp+_136)){ _12e=false; break; } } if(_12e){ break; } } } } btn.state("enabled",(!text||btn.text)&&_12e); if(typeof cmd=="function"){ continue; } var _138=this.config.customSelects[cmd]; if((!text||btn.text)&&(typeof _138!="undefined")){ _138.refresh(this); continue; } switch(cmd){ case "fontname": case "fontsize": if(!text){ try{ var _139=(""+doc.queryCommandValue(cmd)).toLowerCase(); if(!_139){ btn.element.selectedIndex=0; break; } var _13a=this.config[cmd]; var _13b=0; for(var j in _13a){ if((j.toLowerCase()==_139)||(_13a[j].substr(0,_139.length).toLowerCase()==_139)){ btn.element.selectedIndex=_13b; throw "ok"; } ++_13b; } btn.element.selectedIndex=0; } catch(ex){ } } break; case "formatblock": var _13d=[]; for(var _13e in this.config.formatblock){ if(typeof this.config.formatblock[_13e]=="string"){ _13d[_13d.length]=this.config.formatblock[_13e]; } } var _13f=this._getFirstAncestor(this.getSelection(),_13d); if(_13f){ for(var x=0;x<_13d.length;x++){ if(_13d[x].toLowerCase()==_13f.tagName.toLowerCase()){ btn.element.selectedIndex=x; } } }else{ btn.element.selectedIndex=0; } break; case "textindicator": if(!text){ try{ var _141=btn.element.style; _141.backgroundColor=Xinha._makeColor(doc.queryCommandValue(Xinha.is_ie?"backcolor":"hilitecolor")); if(/transparent/i.test(_141.backgroundColor)){ _141.backgroundColor=Xinha._makeColor(doc.queryCommandValue("backcolor")); } _141.color=Xinha._makeColor(doc.queryCommandValue("forecolor")); _141.fontFamily=doc.queryCommandValue("fontname"); _141.fontWeight=doc.queryCommandState("bold")?"bold":"normal"; _141.fontStyle=doc.queryCommandState("italic")?"italic":"normal"; } catch(ex){ } } break; case "htmlmode": btn.state("active",text); break; case "lefttoright": case "righttoleft": var _142=this.getParentElement(); while(_142&&!Xinha.isBlockElement(_142)){ _142=_142.parentNode; } if(_142){ btn.state("active",(_142.style.direction==((cmd=="righttoleft")?"rtl":"ltr"))); } break; default: cmd=cmd.replace(/(un)?orderedlist/i,"insert$1orderedlist"); try{ btn.state("active",(!text&&doc.queryCommandState(cmd))); } catch(ex){ } break; } } if(this._customUndo&&!this._timerUndo){ this._undoTakeSnapshot(); var _143=this; this._timerUndo=setTimeout(function(){ _143._timerUndo=null; },this.config.undoTimeout); } if(0&&Xinha.is_gecko){ var s=this.getSelection(); if(s&&s.isCollapsed&&s.anchorNode&&s.anchorNode.parentNode.tagName.toLowerCase()!="body"&&s.anchorNode.nodeType==3&&s.anchorOffset==s.anchorNode.length&&!(s.anchorNode.parentNode.nextSibling&&s.anchorNode.parentNode.nextSibling.nodeType==3)&&!Xinha.isBlockElement(s.anchorNode.parentNode)){ try{ s.anchorNode.parentNode.parentNode.insertBefore(this._doc.createTextNode("\t"),s.anchorNode.parentNode.nextSibling); } catch(ex){ } } } for(var _145 in this.plugins){ var _146=this.plugins[_145].instance; if(_146&&typeof _146.onUpdateToolbar=="function"){ _146.onUpdateToolbar(); } } }; Xinha.prototype.getAllAncestors=function(){ var p=this.getParentElement(); var a=[]; while(p&&(p.nodeType==1)&&(p.tagName.toLowerCase()!="body")){ a.push(p); p=p.parentNode; } a.push(this._doc.body); return a; }; Xinha.prototype._getFirstAncestor=function(sel,_14a){ var prnt=this.activeElement(sel); if(prnt===null){ try{ prnt=(Xinha.is_ie?this.createRange(sel).parentElement():this.createRange(sel).commonAncestorContainer); } catch(ex){ return null; } } if(typeof _14a=="string"){ _14a=[_14a]; } while(prnt){ if(prnt.nodeType==1){ if(_14a===null){ return prnt; } if(_14a.contains(prnt.tagName.toLowerCase())){ return prnt; } if(prnt.tagName.toLowerCase()=="body"){ break; } if(prnt.tagName.toLowerCase()=="table"){ break; } } prnt=prnt.parentNode; } return null; }; Xinha.prototype._getAncestorBlock=function(sel){ var prnt=(Xinha.is_ie?this.createRange(sel).parentElement:this.createRange(sel).commonAncestorContainer); while(prnt&&(prnt.nodeType==1)){ switch(prnt.tagName.toLowerCase()){ case "div": case "p": case "address": case "blockquote": case "center": case "del": case "ins": case "pre": case "h1": case "h2": case "h3": case "h4": case "h5": case "h6": case "h7": return prnt; case "body": case "noframes": case "dd": case "li": case "th": case "td": case "noscript": return null; default: break; } } return null; }; Xinha.prototype._createImplicitBlock=function(type){ var sel=this.getSelection(); if(Xinha.is_ie){ sel.empty(); }else{ sel.collapseToStart(); } var rng=this.createRange(sel); }; Xinha.prototype.surroundHTML=function(_151,_152){ var html=this.getSelectedHTML(); this.insertHTML(_151+html+_152); }; Xinha.prototype.hasSelectedText=function(){ return this.getSelectedHTML()!==""; }; Xinha.prototype._comboSelected=function(el,txt){ this.focusEditor(); var _156=el.options[el.selectedIndex].value; switch(txt){ case "fontname": case "fontsize": this.execCommand(txt,false,_156); break; case "formatblock": if(!_156){ this.updateToolbar(); break; } if(!Xinha.is_gecko||_156!=="blockquote"){ _156="<"+_156+">"; } this.execCommand(txt,false,_156); break; default: var _157=this.config.customSelects[txt]; if(typeof _157!="undefined"){ _157.action(this); }else{ alert("FIXME: combo box "+txt+" not implemented"); } break; } }; Xinha.prototype._colorSelector=function(_158){ var _159=this; if(Xinha.is_gecko){ try{ _159._doc.execCommand("useCSS",false,false); _159._doc.execCommand("styleWithCSS",false,true); } catch(ex){ } } var btn=_159._toolbarObjects[_158].element; var _15b; if(_158=="hilitecolor"){ if(Xinha.is_ie){ _158="backcolor"; _15b=Xinha._colorToRgb(_159._doc.queryCommandValue("backcolor")); }else{ _15b=Xinha._colorToRgb(_159._doc.queryCommandValue("hilitecolor")); } }else{ _15b=Xinha._colorToRgb(_159._doc.queryCommandValue("forecolor")); } var _15c=function(_15d){ _159._doc.execCommand(_158,false,_15d); }; if(Xinha.is_ie){ var _15e=_159.createRange(_159.getSelection()); _15c=function(_15f){ _15e.select(); _159._doc.execCommand(_158,false,_15f); }; } var _160=new Xinha.colorPicker({cellsize:_159.config.colorPickerCellSize,callback:_15c,granularity:_159.config.colorPickerGranularity,websafe:_159.config.colorPickerWebSafe,savecolors:_159.config.colorPickerSaveColors}); _160.open(_159.config.colorPickerPosition,btn,_15b); }; Xinha.prototype.execCommand=function(_161,UI,_163){ var _164=this; this.focusEditor(); _161=_161.toLowerCase(); if(this.firePluginEvent("onExecCommand",_161,UI,_163)){ this.updateToolbar(); return false; } switch(_161){ case "htmlmode": this.setMode(); break; case "hilitecolor": case "forecolor": this._colorSelector(_161); break; case "createlink": this._createLink(); break; case "undo": case "redo": if(this._customUndo){ this[_161](); }else{ this._doc.execCommand(_161,UI,_163); } break; case "inserttable": this._insertTable(); break; case "insertimage": this._insertImage(); break; case "about": this._popupDialog(_164.config.URIs.about,null,this); break; case "showhelp": this._popupDialog(_164.config.URIs.help,null,this); break; case "killword": this._wordClean(); break; case "cut": case "copy": case "paste": this._doc.execCommand(_161,UI,_163); if(this.config.killWordOnPaste){ this._wordClean(); } break; case "lefttoright": case "righttoleft": if(this.config.changeJustifyWithDirection){ this._doc.execCommand((_161=="righttoleft")?"justifyright":"justifyleft",UI,_163); } var dir=(_161=="righttoleft")?"rtl":"ltr"; var el=this.getParentElement(); while(el&&!Xinha.isBlockElement(el)){ el=el.parentNode; } if(el){ if(el.style.direction==dir){ el.style.direction=""; }else{ el.style.direction=dir; } } break; case "justifyleft": case "justifyright": _161.match(/^justify(.*)$/); var ae=this.activeElement(this.getSelection()); if(ae&&ae.tagName.toLowerCase()=="img"){ ae.align=ae.align==RegExp.$1?"":RegExp.$1; }else{ this._doc.execCommand(_161,UI,_163); } break; default: try{ this._doc.execCommand(_161,UI,_163); } catch(ex){ if(this.config.debug){ alert(ex+"\n\nby execCommand("+_161+");"); } } break; } this.updateToolbar(); return false; }; Xinha.prototype._editorEvent=function(ev){ var _169=this; if(typeof _169._textArea["on"+ev.type]=="function"){ _169._textArea["on"+ev.type](); } if(this.isKeyEvent(ev)){ if(_169.firePluginEvent("onKeyPress",ev)){ return false; } if(this.isShortCut(ev)){ this._shortCuts(ev); } } if(ev.type=="mousedown"){ if(_169.firePluginEvent("onMouseDown",ev)){ return false; } } if(_169._timerToolbar){ clearTimeout(_169._timerToolbar); } _169._timerToolbar=setTimeout(function(){ _169.updateToolbar(); _169._timerToolbar=null; },250); }; Xinha.prototype._shortCuts=function(ev){ var key=this.getKey(ev).toLowerCase(); var cmd=null; var _16d=null; switch(key){ case "b": cmd="bold"; break; case "i": cmd="italic"; break; case "u": cmd="underline"; break; case "s": cmd="strikethrough"; break; case "l": cmd="justifyleft"; break; case "e": cmd="justifycenter"; break; case "r": cmd="justifyright"; break; case "j": cmd="justifyfull"; break; case "z": cmd="undo"; break; case "y": cmd="redo"; break; case "v": cmd="paste"; break; case "n": cmd="formatblock"; _16d="p"; break; case "0": cmd="killword"; break; case "1": case "2": case "3": case "4": case "5": case "6": cmd="formatblock"; _16d="h"+key; break; } if(cmd){ this.execCommand(cmd,false,_16d); Xinha._stopEvent(ev); } }; Xinha.prototype.convertNode=function(el,_16f){ var _170=this._doc.createElement(_16f); while(el.firstChild){ _170.appendChild(el.firstChild); } return _170; }; Xinha.prototype.scrollToElement=function(e){ if(!e){ e=this.getParentElement(); if(!e){ return; } } var _172=Xinha.getElementTopLeft(e); this._iframe.contentWindow.scrollTo(_172.left,_172.top); }; Xinha.prototype.getHTML=function(){ var html=""; switch(this._editMode){ case "wysiwyg": if(!this.config.fullPage){ html=Xinha.getHTML(this._doc.body,false,this); }else{ html=this.doctype+"\n"+Xinha.getHTML(this._doc.documentElement,true,this); } break; case "textmode": html=this._textArea.value; break; default: alert("Mode <"+this._editMode+"> not defined!"); return false; } return html; }; Xinha.prototype.outwardHtml=function(html){ for(var i in this.plugins){ var _176=this.plugins[i].instance; if(_176&&typeof _176.outwardHtml=="function"){ html=_176.outwardHtml(html); } } html=html.replace(/<(\/?)b(\s|>|\/)/ig,"<$1strong$2"); html=html.replace(/<(\/?)i(\s|>|\/)/ig,"<$1em$2"); html=html.replace(/<(\/?)strike(\s|>|\/)/ig,"<$1del$2"); html=html.replace("onclick=\"try{if(document.designMode && document.designMode == 'on') return false;}catch(e){} window.open(","onclick=\"window.open("); //var _177=location.href.replace(/(https?:\/\/[^\/]*)\/.*/,"$1")+"/"; var href; if (this.config.baseHref != null) { href = this.config.baseHref; } else { href = location.href; } var _177=href.replace(/(https?:\/\/[^\/]*)\/.*/,"$1")+"/"; html=html.replace(/https?:\/\/null\//g,_177); html=html.replace(/((href|src|background)=[\'\"])\/+/ig,"$1"+_177); html=this.outwardSpecialReplacements(html); html=this.fixRelativeLinks(html); if(this.config.sevenBitClean){ html=html.replace(/[^ -~\r\n\t]/g,function(c){ return "&#"+c.charCodeAt(0)+";"; }); } html=html.replace(/(]*)(freezescript)/gi,"$1javascript"); if(this.config.fullPage){ html=Xinha.stripCoreCSS(html); } return html; }; Xinha.prototype.inwardHtml=function(html){ for(var i in this.plugins){ var _17b=this.plugins[i].instance; if(_17b&&typeof _17b.inwardHtml=="function"){ html=_17b.inwardHtml(html); } } html=html.replace(/<(\/?)del(\s|>|\/)/ig,"<$1strike$2"); html=html.replace("onclick=\"window.open(","onclick=\"try{if(document.designMode && document.designMode == 'on') return false;}catch(e){} window.open("); html=this.inwardSpecialReplacements(html); html=html.replace(/(]*)(javascript)/gi,"$1freezescript"); var _17c=new RegExp("((href|src|background)=['\"])/+","gi"); var href; if (this.config.baseHref != null) { href = this.config.baseHref; } else { href = location.href; } html=html.replace(_17c,"$1"+href.replace(/(https?:\/\/[^\/]*)\/.*/,"$1")+"/"); html=this.fixRelativeLinks(html); if(this.config.fullPage){ html=Xinha.addCoreCSS(html); } return html; }; Xinha.prototype.outwardSpecialReplacements=function(html){ for(var i in this.config.specialReplacements){ var from=this.config.specialReplacements[i]; var to=i; if(typeof from.replace!="function"||typeof to.replace!="function"){ continue; } var reg=new RegExp(from.replace(Xinha.RE_Specials,"\\$1"),"g"); html=html.replace(reg,to.replace(/\$/g,"$$$$")); } return html; }; Xinha.prototype.inwardSpecialReplacements=function(html){ for(var i in this.config.specialReplacements){ var from=i; var to=this.config.specialReplacements[i]; if(typeof from.replace!="function"||typeof to.replace!="function"){ continue; } var reg=new RegExp(from.replace(Xinha.RE_Specials,"\\$1"),"g"); html=html.replace(reg,to.replace(/\$/g,"$$$$")); } return html; }; Xinha.prototype.fixRelativeLinks=function(html){ var src; if(typeof this.config.expandRelativeUrl!="undefined"&&this.config.expandRelativeUrl){ src=html.match(/(src|href)="([^"]*)"/gi); } var b=document.location.href; if(src){ var url,url_m,relPath,base_m,absPath; for(var i=0;i not defined!"); return false; } return html; }; Xinha.prototype.setHTML=function(html){ if(!this.config.fullPage){ this._doc.body.innerHTML=html; }else{ this.setFullHTML(html); } this._textArea.value=html; }; Xinha.prototype.setDoctype=function(_190){ this.doctype=_190; }; Xinha._object=null; Xinha.cloneObject=function(obj){ if(!obj){ return null; } var _192={}; if(obj.constructor.toString().match(/\s*function Array\(/)){ _192=obj.constructor(); } if(obj.constructor.toString().match(/\s*function Function\(/)){ _192=obj; }else{ for(var n in obj){ var node=obj[n]; if(typeof node=="object"){ _192[n]=Xinha.cloneObject(node); }else{ _192[n]=node; } } } return _192; }; Xinha.checkSupportedBrowser=function(){ if(Xinha.is_gecko){ if(navigator.productSub<20021201){ alert("You need at least Mozilla-1.3 Alpha.\nSorry, your Gecko is not supported."); return false; } if(navigator.productSub<20030210){ alert("Mozilla < 1.3 Beta is not supported!\nI'll try, though, but it might not work."); } } return Xinha.is_gecko||Xinha.ie_version>=5.5; }; Xinha._eventFlushers=[]; Xinha.flushEvents=function(){ var x=0; var e=Xinha._eventFlushers.pop(); while(e){ try{ if(e.length==3){ Xinha._removeEvent(e[0],e[1],e[2]); x++; }else{ if(e.length==2){ e[0]["on"+e[1]]=null; e[0]._xinha_dom0Events[e[1]]=null; x++; } } } catch(ex){ } e=Xinha._eventFlushers.pop(); } }; if(document.addEventListener){ Xinha._addEvent=function(el,_198,func){ el.addEventListener(_198,func,true); Xinha._eventFlushers.push([el,_198,func]); }; Xinha._removeEvent=function(el,_19b,func){ el.removeEventListener(_19b,func,true); }; Xinha._stopEvent=function(ev){ ev.preventDefault(); ev.stopPropagation(); }; }else{ if(document.attachEvent){ Xinha._addEvent=function(el,_19f,func){ el.attachEvent("on"+_19f,func); Xinha._eventFlushers.push([el,_19f,func]); }; Xinha._removeEvent=function(el,_1a2,func){ el.detachEvent("on"+_1a2,func); }; Xinha._stopEvent=function(ev){ try{ ev.cancelBubble=true; ev.returnValue=false; } catch(ex){ } }; }else{ Xinha._addEvent=function(el,_1a6,func){ alert("_addEvent is not supported"); }; Xinha._removeEvent=function(el,_1a9,func){ alert("_removeEvent is not supported"); }; Xinha._stopEvent=function(ev){ alert("_stopEvent is not supported"); }; } } Xinha._addEvents=function(el,evs,func){ for(var i=evs.length;--i>=0;){ Xinha._addEvent(el,evs[i],func); } }; Xinha._removeEvents=function(el,evs,func){ for(var i=evs.length;--i>=0;){ Xinha._removeEvent(el,evs[i],func); } }; Xinha.addDom0Event=function(el,ev,fn){ Xinha._prepareForDom0Events(el,ev); el._xinha_dom0Events[ev].unshift(fn); }; Xinha.prependDom0Event=function(el,ev,fn){ Xinha._prepareForDom0Events(el,ev); el._xinha_dom0Events[ev].push(fn); }; Xinha._prepareForDom0Events=function(el,ev){ if(typeof el._xinha_dom0Events=="undefined"){ el._xinha_dom0Events={}; Xinha.freeLater(el,"_xinha_dom0Events"); } if(typeof el._xinha_dom0Events[ev]=="undefined"){ el._xinha_dom0Events[ev]=[]; if(typeof el["on"+ev]=="function"){ el._xinha_dom0Events[ev].push(el["on"+ev]); } el["on"+ev]=function(_1bc){ var a=el._xinha_dom0Events[ev]; var _1be=true; for(var i=a.length;--i>=0;){ el._xinha_tempEventHandler=a[i]; if(el._xinha_tempEventHandler(_1bc)===false){ el._xinha_tempEventHandler=null; _1be=false; break; } el._xinha_tempEventHandler=null; } return _1be; }; Xinha._eventFlushers.push([el,ev]); } }; Xinha.prototype.notifyOn=function(ev,fn){ if(typeof this._notifyListeners[ev]=="undefined"){ this._notifyListeners[ev]=[]; Xinha.freeLater(this,"_notifyListeners"); } this._notifyListeners[ev].push(fn); }; Xinha.prototype.notifyOf=function(ev,args){ if(this._notifyListeners[ev]){ for(var i=0;i0;){ if(cls[--i]!=_1c6){ ar[ar.length]=cls[i]; } } el.className=ar.join(" "); }; Xinha._addClass=function(el,_1cb){ Xinha._removeClass(el,_1cb); el.className+=" "+_1cb; }; Xinha._hasClass=function(el,_1cd){ if(!(el&&el.className)){ return false; } var cls=el.className.split(" "); for(var i=cls.length;i>0;){ if(cls[--i]==_1cd){ return true; } } return false; }; Xinha._blockTags=" body form textarea fieldset ul ol dl li div "+"p h1 h2 h3 h4 h5 h6 quote pre table thead "+"tbody tfoot tr td th iframe address blockquote "; Xinha.isBlockElement=function(el){ return el&&el.nodeType==1&&(Xinha._blockTags.indexOf(" "+el.tagName.toLowerCase()+" ")!=-1); }; Xinha._paraContainerTags=" body td th caption fieldset div"; Xinha.isParaContainer=function(el){ return el&&el.nodeType==1&&(Xinha._paraContainerTags.indexOf(" "+el.tagName.toLowerCase()+" ")!=-1); }; Xinha._closingTags=" a abbr acronym address applet b bdo big blockquote button caption center cite code del dfn dir div dl em fieldset font form frameset h1 h2 h3 h4 h5 h6 i iframe ins kbd label legend map menu noframes noscript object ol optgroup pre q s samp script select small span strike strong style sub sup table textarea title tt u ul var "; Xinha.needsClosingTag=function(el){ return el&&el.nodeType==1&&(Xinha._closingTags.indexOf(" "+el.tagName.toLowerCase()+" ")!=-1); }; Xinha.htmlEncode=function(str){ if(typeof str.replace=="undefined"){ str=str.toString(); } str=str.replace(/&/ig,"&"); str=str.replace(//ig,">"); str=str.replace(/\xA0/g," "); str=str.replace(/\x22/g,"""); return str; }; Xinha.prototype.stripBaseURL=function(_1d4){ if(this.config.baseHref===null||!this.config.stripBaseHref){ return _1d4; } var _1d5=this.config.baseHref.replace(/^(https?:\/\/[^\/]+)(.*)$/,"$1"); var _1d6=new RegExp(_1d5); return _1d4.replace(_1d6,""); }; String.prototype.trim=function(){ return this.replace(/^\s+/,"").replace(/\s+$/,""); }; Xinha._makeColor=function(v){ if(typeof v!="number"){ return v; } var r=v&255; var g=(v>>8)&255; var b=(v>>16)&255; return "rgb("+r+","+g+","+b+")"; }; Xinha._colorToRgb=function(v){ if(!v){ return ""; } var r,g,b; function hex(d){ return (d<16)?("0"+d.toString(16)):d.toString(16); } if(typeof v=="number"){ r=v&255; g=(v>>8)&255; b=(v>>16)&255; return "#"+hex(r)+hex(g)+hex(b); } if(v.substr(0,3)=="rgb"){ var re=/rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\s*\)/; if(v.match(re)){ r=parseInt(RegExp.$1,10); g=parseInt(RegExp.$2,10); b=parseInt(RegExp.$3,10); return "#"+hex(r)+hex(g)+hex(b); } return null; } if(v.substr(0,1)=="#"){ return v; } return null; }; Xinha.prototype._popupDialog=function(url,_1e0,init){ Dialog(this.popupURL(url),_1e0,init); }; Xinha.prototype.imgURL=function(file,_1e3){ if(typeof _1e3=="undefined"){ return _editor_url+file; }else{ return _editor_url+"plugins/"+_1e3+"/img/"+file; } }; Xinha.prototype.popupURL=function(file){ var url=""; if(file.match(/^plugin:\/\/(.*?)\/(.*)/)){ var _1e6=RegExp.$1; var _1e7=RegExp.$2; if(!(/\.html$/.test(_1e7))){ _1e7+=".html"; } url=_editor_url+"plugins/"+_1e6+"/popups/"+_1e7; }else{ if(file.match(/^\/.*?/)){ url=file; }else{ url=_editor_url+this.config.popupURL+file; } } return url; }; Xinha.getElementById=function(tag,id){ var el,i,objs=document.getElementsByTagName(tag); for(i=objs.length;--i>=0&&(el=objs[i]);){ if(el.id==id){ return el; } } return null; }; Xinha.prototype._toggleBorders=function(){ var _1eb=this._doc.getElementsByTagName("TABLE"); if(_1eb.length!==0){ if(!this.borders){ this.borders=true; }else{ this.borders=false; } for(var i=0;i<_1eb.length;i++){ if(this.borders){ Xinha._addClass(_1eb[i],"htmtableborders"); }else{ Xinha._removeClass(_1eb[i],"htmtableborders"); } } } return true; }; Xinha.addCoreCSS=function(html){ var _1ee="\n"; if(html&&//i.test(html)){ return html.replace(//i,""+_1ee); }else{ if(html){ return _1ee+html; }else{ return _1ee; } } }; Xinha.stripCoreCSS=function(html){ return html.replace(/]+title="Xinha Internal CSS"(.|\n)*?<\/style>/i,""); }; Xinha.addClasses=function(el,_1f1){ if(el!==null){ var _1f2=el.className.trim().split(" "); var ours=_1f1.split(" "); for(var x=0;x"+s+""); } } Xinha.arrayContainsArray=function(a1,a2){ var _210=true; for(var x=0;x>2; enc2=((chr1&3)<<4)|(chr2>>4); enc3=((chr2&15)<<2)|(chr3>>6); enc4=chr3&63; if(isNaN(chr2)){ enc3=enc4=64; }else{ if(isNaN(chr3)){ enc4=64; } } _23f=_23f+_23e.charAt(enc1)+_23e.charAt(enc2)+_23e.charAt(enc3)+_23e.charAt(enc4); }while(i<_23d.length); return _23f; }; Xinha.base64_decode=function(_243){ var _244="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; var _245=""; var chr1,chr2,chr3; var enc1,enc2,enc3,enc4; var i=0; _243=_243.replace(/[^A-Za-z0-9\+\/\=]/g,""); do{ enc1=_244.indexOf(_243.charAt(i++)); enc2=_244.indexOf(_243.charAt(i++)); enc3=_244.indexOf(_243.charAt(i++)); enc4=_244.indexOf(_243.charAt(i++)); chr1=(enc1<<2)|(enc2>>4); chr2=((enc2&15)<<4)|(enc3>>2); chr3=((enc3&3)<<6)|enc4; _245=_245+String.fromCharCode(chr1); if(enc3!=64){ _245=_245+String.fromCharCode(chr2); } if(enc4!=64){ _245=_245+String.fromCharCode(chr3); } }while(i<_243.length); return _245; }; Xinha.removeFromParent=function(el){ if(!el.parentNode){ return; } var pN=el.parentNode; pN.removeChild(el); return el; }; Xinha.hasParentNode=function(el){ if(el.parentNode){ if(el.parentNode.nodeType==11){ return false; } return true; } return false; }; Xinha.viewportSize=function(_24c){ _24c=(_24c)?_24c:window; var x,y; if(_24c.innerHeight){ x=_24c.innerWidth; y=_24c.innerHeight; }else{ if(_24c.document.documentElement&&_24c.document.documentElement.clientHeight){ x=_24c.document.documentElement.clientWidth; y=_24c.document.documentElement.clientHeight; }else{ if(_24c.document.body){ x=_24c.document.body.clientWidth; y=_24c.document.body.clientHeight; } } } return {"x":x,"y":y}; }; Xinha.prototype.scrollPos=function(_24e){ _24e=(_24e)?_24e:window; var x,y; if(_24e.pageYOffset){ x=_24e.pageXOffset; y=_24e.pageYOffset; }else{ if(_24e.document.documentElement&&document.documentElement.scrollTop){ x=_24e.document.documentElement.scrollLeft; y=_24e.document.documentElement.scrollTop; }else{ if(_24e.document.body){ x=_24e.document.body.scrollLeft; y=_24e.document.body.scrollTop; } } } return {"x":x,"y":y}; }; Xinha.getElementTopLeft=function(_250){ var _251={top:0,left:0}; while(_250){ _251.top+=_250.offsetTop; _251.left+=_250.offsetLeft; if(_250.offsetParent&&_250.offsetParent.tagName.toLowerCase()!="body"){ _250=_250.offsetParent; }else{ _250=null; } } return _251; }; Xinha.findPosX=function(obj){ var _253=0; if(obj.offsetParent){ return Xinha.getElementTopLeft(obj).left; }else{ if(obj.x){ _253+=obj.x; } } return _253; }; Xinha.findPosY=function(obj){ var _255=0; if(obj.offsetParent){ return Xinha.getElementTopLeft(obj).top; }else{ if(obj.y){ _255+=obj.y; } } return _255; }; Xinha.prototype.setLoadingMessage=function(_256,_257,_258){ if(!this.config.showLoading||!document.getElementById("loading_sub_"+this._textArea.name)){ return; } var elt=document.getElementById("loading_sub_"+this._textArea.name); elt.innerHTML=Xinha._lc(_256,_257,_258); }; Xinha.prototype.removeLoadingMessage=function(){ if(!this.config.showLoading||!document.getElementById("loading_"+this._textArea.name)){ return; } document.body.removeChild(document.getElementById("loading_"+this._textArea.name)); }; Xinha.toFree=[]; Xinha.freeLater=function(obj,prop){ Xinha.toFree.push({o:obj,p:prop}); }; Xinha.free=function(obj,prop){ if(obj&&!prop){ for(var p in obj){ Xinha.free(obj,p); } }else{ if(obj){ try{ obj[prop]=null; } catch(x){ } } } }; Xinha.collectGarbageForIE=function(){ Xinha.flushEvents(); for(var x=0;x');file/xinha/contrib/0040775000567100000120000000000010754361755014247 5ustar jcameronwheelfile/xinha/contrib/lc_parse_strings.php0100664000567100000120000001674610754361754020333 0ustar jcameronwheel"; while(!feof($fp)) { $data .= fread($fp, 1024); } preg_match_all('#_lc\("([^"]+)"|_lc\(\'([^\']+)\'#', $data, $m); foreach($m[1] as $i) { if(trim(strip_tags($i))=="") continue; $ret[] = $i; } foreach($m[2] as $i) { if(trim(strip_tags($i))=="") continue; $ret[] = $i; } } } if($plugin=="TableOperations") { preg_match_all('#options = \\[([^\\]]+)\\];#', $data, $m); foreach($m[1] as $i) { preg_match_all('#"([^"]+)"#', $i, $m1); foreach($m1[1] as $i) { $ret[] = $i; } } //["cell-delete", "td", "Delete cell"], preg_match_all('#\\["[^"]+",[ \t]*"[^"]+",[ \t]*"([^"]+)"\\]#', $data, $m); foreach($m[1] as $i) { $ret[] = $i; } } $files = getFiles("$pluginDir/", "html$"); $files = array_merge($files, getFiles("$pluginDir/", "php$")); foreach($files as $file) { $ret = array_merge($ret, parseHtmlFile($file, $plugin)); } $files = getFiles("$pluginDir/popups/", "html$"); foreach($files as $file) { $ret = array_merge($ret, parseHtmlFile($file, $plugin)); } $ret = array_unique($ret); $langData[$plugin] = $ret; } foreach($langData as $plugin=>$strings) { if(sizeof($strings)==0) continue; $data = "// I18N constants\n"; $data .= "//\n"; $data .= "//LANG: \"base\", ENCODING: UTF-8\n"; $data .= "//Author: Translator-Name, \n"; $data .= "// FOR TRANSLATORS:\n"; $data .= "//\n"; $data .= "// 1. PLEASE PUT YOUR CONTACT INFO IN THE ABOVE LINE\n"; $data .= "// (at least a valid email address)\n"; $data .= "//\n"; $data .= "// 2. PLEASE TRY TO USE UTF-8 FOR ENCODING;\n"; $data .= "// (if this is not possible, please include a comment\n"; $data .= "// that states what encoding is necessary.)\n"; $data .= "\n"; $data .= "{\n"; sort($strings); foreach($strings as $string) { $string = str_replace(array('\\', '"'), array('\\\\', '\\"'), $string); $data .= " \"".$string."\": \"\",\n"; } $data = substr($data, 0, -2); $data .= "\n"; $data .= "}\n"; if($plugin=="HTMLArea") $file = "../lang/base.js"; else $file = "../plugins/$plugin/lang/base.js"; $fp = fopen($file, "w"); if(!$fp) continue; fwrite($fp, $data); fclose($fp); echo "$file written...
"; } function parseHtmlFile($file, $plugin="") { $ret = array(); $fp = fopen($file, "r"); if(!$fp) { die("invalid fp"); } $data = ""; while(!feof($fp)) { $data .= fread($fp, 1024); } if($plugin=="FormOperations" || $plugin=="SuperClean" || $plugin=="Linker") { //-tags for inline-dialog or panel-dialog based dialogs $elems = array("l10n"); } else { $elems = array("title", "input", "select", "legend", "span", "option", "td", "button", "div", "label"); } foreach($elems as $elem) { preg_match_all("#<{$elem}[^>]*>([^<^\"]+)#i", $data, $m); foreach($m[1] as $i) { if(trim(strip_tags($i))=="") continue; if($i=="/") continue; if($plugin=="ImageManager" && preg_match('#^--+$#', $i)) continue; //skip those ------ if($plugin=="CharacterMap" && preg_match('#&[a-z0-9]+;#i', trim($i)) || $i=="@") continue; if($plugin=="SpellChecker" && preg_match('#^\'\\.\\$[a-z]+\\.\'$#', $i)) continue; $ret[] = trim($i); } } if($plugin=="FormOperations" || $plugin=="SuperClean" || $plugin=="Linker") { //_( for inline-dialog or panel-dialog based dialogs preg_match_all('#"_\(([^"]+)\)"#i', $data, $m); foreach($m[1] as $i) { if(trim($i)=="") continue; $ret[] = $i; } } else { preg_match_all('#title="([^"]+)"#i', $data, $m); foreach($m[1] as $i) { if(trim(strip_tags($i))=="") continue; if(strip_tags($i)==" - ") continue; //skip those - (ImageManager) $ret[] = $i; } } return($ret); } function getFiles($rootdirpath, $eregi_match='') { $array = array(); if ($dir = @opendir($rootdirpath)) { $array = array(); while (($file = readdir($dir)) !== false) { if($file=="." || $file==".." || $file==".svn") continue; if($eregi_match=="") $array[] = $rootdirpath."/".$file; else if(eregi($eregi_match,$file)) $array[] = $rootdirpath."/".$file; } closedir($dir); } return $array; } ?> file/xinha/contrib/php-xinha.php0100664000567100000120000001222310754361754016650 0ustar jcameronwheel * with (xinha_config.ImageManager) * { * '/home/your/directory', * 'images_url' => '/directory' * ) * ) * ?> * } * * */ function xinha_pass_to_php_backend($Data, $KeyLocation = 'Xinha:BackendKey') { $bk = array(); $bk['data'] = serialize($Data); @session_start(); if(!isset($_SESSION[$KeyLocation])) { $_SESSION[$KeyLocation] = uniqid('Key_'); } $bk['session_name'] = session_name(); $bk['key_location'] = $KeyLocation; $bk['hash'] = function_exists('sha1') ? sha1($_SESSION[$KeyLocation] . $bk['data']) : md5($_SESSION[$KeyLocation] . $bk['data']); // The data will be passed via a postback to the // backend, we want to make sure these are going to come // out from the PHP as an array like $bk above, so // we need to adjust the keys. $backend_data = array(); foreach($bk as $k => $v) { $backend_data["backend_data[$k]"] = $v; } // The session_start() above may have been after data was sent, so cookies // wouldn't have worked. $backend_data[session_name()] = session_id(); echo 'backend_data = ' . xinha_to_js($backend_data) . "; \n"; } /** Convert PHP data structure to Javascript */ function xinha_to_js($var, $tabs = 0) { if(is_numeric($var)) { return $var; } if(is_string($var)) { return "'" . xinha_js_encode($var) . "'"; } if(is_array($var)) { $useObject = false; foreach(array_keys($var) as $k) { if(!is_numeric($k)) $useObject = true; } $js = array(); foreach($var as $k => $v) { $i = ""; if($useObject) { if(preg_match('#^[a-zA-Z]+[a-zA-Z0-9]*$#', $k)) { $i .= "$k: "; } else { $i .= "'$k': "; } } $i .= xinha_to_js($v, $tabs + 1); $js[] = $i; } if($useObject) { $ret = "{\n" . xinha_tabify(implode(",\n", $js), $tabs) . "\n}"; } else { $ret = "[\n" . xinha_tabify(implode(",\n", $js), $tabs) . "\n]"; } return $ret; } return 'null'; } /** Like htmlspecialchars() except for javascript strings. */ function xinha_js_encode($string) { static $strings = "\\,\",',%,&,<,>,{,},@,\n,\r"; if(!is_array($strings)) { $tr = array(); foreach(explode(',', $strings) as $chr) { $tr[$chr] = sprintf('\x%02X', ord($chr)); } $strings = $tr; } return strtr($string, $strings); } /** Used by plugins to get the config passed via * xinha_pass_to_backend() * returns either the structure given, or NULL * if none was passed or a security error was encountered. */ function xinha_read_passed_data() { if(isset($_REQUEST['backend_data']) && is_array($_REQUEST['backend_data'])) { $bk = $_REQUEST['backend_data']; session_name($bk['session_name']); @session_start(); if(!isset($_SESSION[$bk['key_location']])) return NULL; if($bk['hash'] === function_exists('sha1') ? sha1($_SESSION[$bk['key_location']] . $bk['data']) : md5($_SESSION[$bk['key_location']] . $bk['data'])) { return unserialize(ini_get('magic_quotes_gpc') ? stripslashes($bk['data']) : $bk['data']); } } return NULL; } /** Used by plugins to get a query string that can be sent to the backend * (or another part of the backend) to send the same data. */ function xinha_passed_data_querystring() { $qs = array(); if(isset($_REQUEST['backend_data']) && is_array($_REQUEST['backend_data'])) { foreach($_REQUEST['backend_data'] as $k => $v) { $v = ini_get('magic_quotes_gpc') ? stripslashes($v) : $v; $qs[] = "backend_data[" . rawurlencode($k) . "]=" . rawurlencode($v); } } $qs[] = session_name() . '=' . session_id(); return implode('&', $qs); } /** Just space-tab indent some text */ function xinha_tabify($text, $tabs) { if($text) { return str_repeat(" ", $tabs) . preg_replace('/\n(.)/', "\n" . str_repeat(" ", $tabs) . "\$1", $text); } } /** Return upload_max_filesize value from php.ini in kilobytes (function adapted from php.net)**/ function upload_max_filesize_kb() { $val = ini_get('upload_max_filesize'); $val = trim($val); $last = strtolower($val{strlen($val)-1}); switch($last) { // The 'G' modifier is available since PHP 5.1.0 case 'g': $val *= 1024; case 'm': $val *= 1024; } return $val; } ?>file/xinha/images/0040775000567100000120000000000010754361755014054 5ustar jcameronwheelfile/xinha/images/ed_splitcel.gif0100664000567100000120000000015710754361754017031 0ustar jcameronwheelGIF89a!, 4*")g!HO4 ڊi0t=4ncf9mG1ki&;file/xinha/images/ed_align_justify.gif0100664000567100000120000000007410754361754020057 0ustar jcameronwheelGIF89a!,  ,FJ-S'xH;file/xinha/images/ed_format_sub.gif0100664000567100000120000000010310754361754017342 0ustar jcameronwheelGIF89a!, Lk|j#zaV;file/xinha/images/ed_splitblock.gif0100664000567100000120000000012210754361754017350 0ustar jcameronwheelGIF89a!, @#) +h8DRuyۆ,y;file/xinha/images/ed_rmformat.gif0100664000567100000120000000015110754361754017033 0ustar jcameronwheelGIF89afff!, .0b D 7A-eDUIJbݚ)yL( ;file/xinha/images/ed_cut.gif0100664000567100000120000000011610754361754016000 0ustar jcameronwheelGIF89a!, djG&ؑ @*ze\;file/xinha/images/ed_undo.gif0100664000567100000120000000010310754361754016146 0ustar jcameronwheelGIF89a!, Dj*XvUP;file/xinha/images/ed_align_center.gif0100664000567100000120000000007510754361754017643 0ustar jcameronwheelGIF89a!, қ,@5yn9R;file/xinha/images/ed_list_bullet.gif0100664000567100000120000000011010754361754017521 0ustar jcameronwheelGIF89a!, `clڋ[vp'W;file/xinha/images/ed_help.gif0100664000567100000120000000006710754361754016142 0ustar jcameronwheelGIF89a!, DzZ\Jt;file/xinha/images/ed_show_border.gif0100664000567100000120000000013010754361754017516 0ustar jcameronwheelGIF89a3!, )idoƶj}xnjg"jlpg\*~R;file/xinha/images/ed_clearfonts.gif0100664000567100000120000000020610754361754017345 0ustar jcameronwheelGIF89a! ,W]pjk Eb8ue>"8ܠ) :]Jh1#crl(g&"ٜ*Iz($Գ}25CY;file/xinha/images/fullscreen_minimize.gif0100664000567100000120000000012710754361754020602 0ustar jcameronwheelGIF89a!,.{0.Ҥ(y im5ק-|,@;file/xinha/images/ed_hr.gif0100664000567100000120000000006510754361754015621 0ustar jcameronwheelGIF89a333!,;file/xinha/images/ed_killword.gif0100664000567100000120000000022710754361754017037 0ustar jcameronwheelGIF89aMMM! ,\Zܮ0@+-F;VEPFjx0`|tVXlVctHs %P9N%JpdbpŋR`,^K0w@;file/xinha/images/de/0040775000567100000120000000000010754361755014444 5ustar jcameronwheelfile/xinha/images/de/bold.gif0100664000567100000120000000007110754361754016045 0ustar jcameronwheelGIF89aJMJ!, optIa\۲;file/xinha/images/de/underline.gif0100664000567100000120000000010510754361754017110 0ustar jcameronwheelGIF89aMMM!, ͉\|P1}F)8*f;file/xinha/images/de/italic.gif0100664000567100000120000000007710754361754016400 0ustar jcameronwheelGIF89aMMM!, xjƒ 1Z/VʌbtYM;file/xinha/images/insert_table.gif0100664000567100000120000000015010754361754017206 0ustar jcameronwheelGIF89a3!, -8J0JJwZi(AXުL&(2;file/xinha/images/ed_right_to_left.gif0100664000567100000120000000011310754361754020033 0ustar jcameronwheelGIF89a!, a&Z""Qj7=_iأK;file/xinha/images/ed_save.gif0100664000567100000120000000020010754361754016135 0ustar jcameronwheelGIF89a!,EaA@i"E4ud)R`8=ˊn+U30U(L<P XXkA-xB;file/xinha/images/ed_format_bold.gif0100664000567100000120000000007110754361754017475 0ustar jcameronwheelGIF89a!, ơC 뼖;file/xinha/images/ed_word_cleaner.gif0100664000567100000120000000121410754361754017651 0ustar jcameronwheelGIF89a~&&&&&[szbzZZUgZZb o૫}xiZZxr//|majjGGv mmT77r77|rc55)){k oooo&##ZZbbmm``v66gg%%"dxh qqqqQZqqqqNNp eeqqZZ|]]tjjvvss``77!,D    o !tA]2QjzĤN7>9~W1̲Op;8$\+@hu%:[6?Xw{SM/ejjz +Q;file/xinha/images/ed_saveas.gif0100664000567100000120000000015010754361754016465 0ustar jcameronwheelGIF89a{{!,@9gα& w`! be^U894;file/xinha/images/ed_list_num.gif0100664000567100000120000000011410754361754017035 0ustar jcameronwheelGIF89a!,(c4f[9 R]t&y&ČV;file/xinha/images/ed_color_fg.gif0100664000567100000120000000024410754361754017001 0ustar jcameronwheelGIF89a {{{{!,QPIg/_GIAkbq`#8 0FK2 8"8 8 i!"@a800J/q;file/xinha/images/ed_custom.gif0100664000567100000120000000006210754361754016517 0ustar jcameronwheelGIF89a!,  Db{ bs;file/xinha/images/ed_link.gif0100664000567100000120000000011610754361754016142 0ustar jcameronwheelGIF89a!,(X,lmez`h`x ߐXXX px{iɱ̙`ff̀===k@P`0X̍ppω߂Sqxx85&Q̙pff@@30pӮpB hx@H%;X00@PP@@@䡐Wffp`P*_f`P@@xE3f X##0@Pp^{@@&BkP PИf3 0@mfMM@H:bpP̙0Pp`NZ2Px`VR20@@ph@`pppBpZpP`!s3gwZ%@hpk)@P А@`@!,H*\ȰÇ#JHE2>Ը#ÌLdǑKI/0B6E!͜ nZPhʝAV)(B.F*jϩLoJ}u`LM}J4LX/Z=Kh_'E+qmWvϾԪչ^%)gKloYk [㲘 ̋|Y2c3nrg<໭zuĜJʿ|=]yp_(h& 6FCVhfy (RH(rX,C(288戣)@!.0Va)P@:  `Bl7=@Pi *Sl!TfT1@HBVB{*Ԁh*b@a$FF hlz!|& THuxgBy hA!@D"!  +jYq  dl P"e`[!H`*(Ū¹+y2ՠ.H `F( .PO@!%t -P.Ak<^9#os  }!X0%q h@2W쭩nu !90tSD vFlC87K,3a 8 (nL2J Jj [-<A򒥲, *`2`P@ P } gtP o(<?-890 g.P1.oSPJ}}2"8}M  @!ӝ&@`R’<=rV '$эb  e,@X !a0a R H  &0x,@< (ϓ0 ~ :H+Elc3_tjR!pX `C y{'4!QDW>H?G+0 @X2#$qVb$WKG+HXի@[Zr]d"A )ɉbh 6A!&)[&hzG lJeNi 3vh' %`fg Hօ0'l`C֐F!I@jhD_fbphB- -ls uPkx:`-`A4PSm8=%`!$,b! |b!@a\4%m(K0! A-|!.) JA9H =hS F4"? @2 v 0@Ԭ*%P!{hm pr" mt?p;yCbbAU `^1Zvj -l}%thWVJz;<62_^xB1!M@!! "{$.y?w:; v.t0+oPDhAH=L%UB[}@gπJ͆3 \^sn~%{k pЇ` Э5Z-OVa(=ѭH?*֏c<;7cgNMw|R !"3 30xP ;  ( 61P%(ll4b 5s 1p5p!OJ[WQ|C/2@B݂ -2Pw =N "(`I0I$p F0 c 'P7p~q(eT ; %@N #0 ` C#N"0  (^ `A J`@ F`oX p g`NV4 0RXc p5|X 05h + 0 Q,R d0=PX P00&pR0 .0a(e t9'b`p 0Y0@'` Ph> %5 x5/2xfEXOGH R::h 0 \؈.,PRf= & x20 x =p p oІ0 !Pw  `, `^ C90D R00Q", 2( AP,(?$ \n\8HQ P;P\ٕbe95`0 q`  E` aH==)3 ,)&/F /%i$EA0- ` PEE  c^"?9y# =cI1 q SrF * N` Q Ad&`* / 2),3 8K&, EPRE`$$9C6 7xx@sZ*` # 15s ) E ?  q2I!Z  N o BvjB TW`ZYxBF PS*;?P+ b!|Huڒbc (-#, P! !P)o>x`w:TIJ#) 0 H0 i) .PS?p"( :*,   x `wP{c('>U J4F 3oUc@ B>P:;z6_u)OP0bP,x l *'Kj : Fo0'77KP~A|P R7SM R{1TV┵2ʆnȳ\rRnp%M!kʴϤ05dDpk ~;: !;k![@RN$ [ v;(   c)e BqA;d{ pw,8:GpiD@g$ j"'d `,c"DB+T뺻+ / TOq10 @ !<ZɫS('`1`@'@P SZu k @xpN1 R0=G  Û5 m'@ 0?pg@w5[ p&!BV}5Ph D`i 3dI!' !wA'Pu@hPrP 'p9ģX p.pߔP70P+B}@#@4`br|Jzv0'@CP!P , Z@;[Iɐ p /ޤ% pGHKǙ@N [ d &ɽp@4%l{g :P7p6-Z>- D04 d%Jk~Rr>s {7 |.j{!;膮 ~芾O ]j]|([P ` L`Ӱ ~Lf>m M[$`^Tp`]p>@/3ds|.B~nT. ~`^0 ]`Wp>> >(AMP mnˡ. >:/MA`LL%$^l!` O/3/=P6 _ r"O>,m/I>2O O#)K kj)QPP n^ d[?"NROb]0 `n0?I/i_ꈯ%yiy   }訿^? v?Qױ_ïǟooʟ)޿m៴N~o? q 0 .dC%NXE (Q`F!E$Y$=dK \M9(fA9S%MI.m)PQ}JpTY_VxUW!SDY}D֭LqEW.]_Wލ~3|pᡅ"fڵOɵ+TʙYVٳI΋?θ,iMN:Ӯe7z턵m㾭[4پ%-⊑'/$:.!B.kB ÷LĺD D1D[EZŰnFJ;rLq5}* K8#k4$z'C) ;file/xinha/images/ed_align_left.gif0100664000567100000120000000007410754361754017314 0ustar jcameronwheelGIF89a!, ݙI\GhM;file/xinha/images/fr/0040775000567100000120000000000010754361755014463 5ustar jcameronwheelfile/xinha/images/fr/bold.gif0100664000567100000120000000020010754361754016056 0ustar jcameronwheelGIF89a wwwUUU333DDDfff"""!, -j8 +* MƌcGLB;t @XRjXC%P $;file/xinha/images/fr/strikethrough.gif0100664000567100000120000000020310754361754020043 0ustar jcameronwheelGIF89a'''{{{BB===𫫫XXXfff !, 0,AA \BAeD dB@d@y3wCfW"Z Th0";file/xinha/images/fr/underline.gif0100664000567100000120000000020610754361754017131 0ustar jcameronwheelGIF89a '''==={{{fffXXX!, 3:TybTV2h0ʆ \eK C@!bbklPPT;file/xinha/images/ed_indent_less.gif0100664000567100000120000000012410754361754017513 0ustar jcameronwheelGIF89a!,%ˍUY 8 xG-הN;file/xinha/images/insertmacro.png0100664000567100000120000000117610754361754017111 0ustar jcameronwheelPNG  IHDRabKGD3IDATxڭ?haMSb4 5˥ ADBĢPp+Fɩ Mp18.A(8؀E"Hb3mZ0֘\{glFS\|}rݱH$E^ gS}'~X,fIViOMӒľ4,( h4uZF2DEucczz{{i6 ,ڛNPbiaUSSSS{Ȯ4MKښit:E˅$IIgg'x[R QeA^GQu}O r9|>P(x<-d -D"6&Ylm߸OLcQ$d~~h4]Y*S7MmBpd4 RTJmިZL}JKpt;yL&C(bffT*?6q'8><‡7/Y_QILNN}0.铂ܜ<{"y`2g.h\B qm*Z#^/l7MIENDB`file/xinha/images/ed_overwrite.gif0100664000567100000120000000014410754361754017234 0ustar jcameronwheelGIF89a{{{!,@5 |p- ՋpBK]"a%5@*nU-îR9c";BV;file/xinha/images/ed_selectall.gif0100664000567100000120000000022610754361754017157 0ustar jcameronwheelGIF89afff!,@[Z@@8!@(Z($Qui)-]C>9UfSLQC:&tB2xB*Y2&|F WL[Y<,;file/xinha/images/ed_align.gif0100664000567100000120000000647410754361754016314 0ustar jcameronwheelGIF89a6̀{{{&D3<fff333MMM{ -Yp,Igx`v0Lк:VLe! ,pH,Ȥrl:ШtJPS2f8 wr>k@0/vquJ[Ei{UrHnQ}wCqT~szWSRod~mwyǦluϥ؜Bȏ˩dxEۣ|BPj)WOz[].|;0Ұ[bEdI _'pZsd8sS* JѣH*]ʴӧP"u"իXjׯ`Ê+*ٳh.M(ے@ժ= UPr&[/QC.-^0r`ŅS&<.0@"ys_Y:o{]:sh%sȜEE]xΟukҪg[F>x6 [1hޙ.2pѓ'|7aї6ko/}HWO>u%ZdAto[Yv@p!df!hmr)g5E}!58ce 6Gb]*u}q5p[gbvb)⑩y0zgpVq= 0FV^g>R&mԠWƛzhzCum ZH`Bii^%*l~m4 u~{ʩ= e͑i)*#]gAI& [~lFճ7d &b˔PpXF9h+K˺G_躑mRH&/Ik EqUuot,@ Oǐ!grhpֽ疽 } ѦрKoβM7!RI,b yӅZ⢏PUbJRйqjky_zpzzUn,tR<绩OMiQ!&3&[osR|jwX[eKw9X'n=Ų 7" ry ц°tJ` rBENrqG{%v=> "ibR(%D!>$"bI( P>eS(T1(6^ѓt&Q?wj$}P05;Hu(#FCɍ\c!-}eIIp %+]iM`VlrfYhi8bQ@yJx(/"FI> s\ZcF2 ǠQtB17m+YMjN(m9L1M4 # ;V򟭔*v֜ =5)44g:hWPq@E3qs.M)$v֑=A`YǦ+@*PZJQd23ii!w9=EuA,iD&HJjUBNA hֶխ 8*ȥtrsyP0 p, K ,1nwT<@,f׿Z!LAbWҒ,ꪔ:52S!p @`E["pEנ@@rӒ{dj kЬv z!LPE~.%pX۫8e"eP ߵn;0  XkPv@$ ]Ҥ<IdDGg&Nq엻wہHj@+3zdD2*@Qkc T7^א1- c)ePV g.g0+XF=y$@:k,JELn#&q_;X`˼VX+!l1̽F }A$2y A HQVf6WC`̏N0 `Zl {NJ$&5.Ex<;3kXz4;RV?A9s(`>f|hOO=vr5R)u7`g%M腞*X"}K)'OO񊇼R.ϔ`~O ;y)|(.s^GsfҜm}%B@vZ4?jL~R{:/+fJ[O)Q@{׌lgcVz:\~C~*~g{|{wGD A 7RGEKWXxA1gTE1e)AhO7(/@v#8,:JyZzA@CE+WJ)|M.{tBVGBfxdW_7pxk|y18DEyx Ȉqx2hz@iȇ綉_؉y' @ xX]凲(XREXjh*4WU3(ƘHȌ({ dG8Sȍ P ǨPHs\؋X-X!,io2 v p(Ȑu99,)ّ +"9&(,9_.2)wWj1C倏ȓ3)9?I\!);6) IƔG[qETinFɑW)VUZOd(XяYfPI_ylihqɖs:oR`g|y]c)(z)i2Dz p甆 zA;file/xinha/images/ed_print.gif0100664000567100000120000000016510754361754016345 0ustar jcameronwheelGIF89a!,:kA+ 7qVEݳAZx  p6Bmm5} `kђ9J;file/xinha/images/ed_format_strike.gif0100664000567100000120000000010210754361754020051 0ustar jcameronwheelGIF89a!, xZt UUVWID)zF;file/xinha/images/ed_format_italic.gif0100664000567100000120000000010310754361754020016 0ustar jcameronwheelGIF89a{{{!, g9 ĂI@ a]1r;file/xinha/images/ed_charmap.gif0100664000567100000120000000020610754361754016620 0ustar jcameronwheelGIF89a!,KP9A_XvI GRЭmɺE!m`8B@s~56:Z`ȵ/;file/xinha/images/ed_left_to_right.gif0100664000567100000120000000011010754361754020030 0ustar jcameronwheelGIF89a!, )q0NUmz!Y! $Oɕf;file/xinha/images/ed_save.png0100664000567100000120000000034610754361754016167 0ustar jcameronwheelPNG  IHDRVΎWIDATx0 DψGsƮf@9(O)86`)*u~bXZ#4Z],{鈿i=*$`fyJW򐣌e " ӄ H$P}C*vHGlۖsf]W/fyTOźワw OjIENDB`file/xinha/images/ed_redo.gif0100664000567100000120000000010310754361754016132 0ustar jcameronwheelGIF89a!, ǀX|K%*/N=n S;file/xinha/images/tidy.gif0100664000567100000120000000056710754361754015520 0ustar jcameronwheelGIF87a!R1B)c9J1{kJ{RRc9s){BsֽZscZ1k9kJBZ,pH,Ȥr 2I$4PV;p& r ] H$p K-X =w{v MW"n  _H$  KN b K#H mW H  I %I!IK&POJFFA;file/xinha/images/ed_blank.gif0100664000567100000120000000007010754361754016273 0ustar jcameronwheelGIF89a!,ڋޜ;file/xinha/images/ed_copy.gif0100664000567100000120000000014110754361754016155 0ustar jcameronwheelGIF89a!, 2*aj  A@f p}v+Im ;file/xinha/images/ed_indent_more.gif0100664000567100000120000000012410754361754017507 0ustar jcameronwheelGIF89a!,%ˍUY FdExޱ-HהN;file/xinha/images/ed_image.gif0100664000567100000120000000017510754361754016274 0ustar jcameronwheelGIF89a!,B(ܫ)""=$Xbo< M߱a+' RZ6Vz;file/xinha/images/insertfilelink.gif0100664000567100000120000000022410754361754017557 0ustar jcameronwheelGIF89a rp!,Y*cȰc' dɁDa7.dpd(@J'05=$JB *&fa%*Hb;file/xinha/images/toggle_borders.gif0100664000567100000120000000011110754361754017531 0ustar jcameronwheelGIF89a!, n{M2Ty}ejdV;file/xinha/images/ed_align_right.gif0100664000567100000120000000007510754361754017500 0ustar jcameronwheelGIF89a!, қ @sXCxX;file/xinha/images/ed_format_sup.gif0100664000567100000120000000010310754361754017360 0ustar jcameronwheelGIF89a!, "ٶ^*c͍aQ;file/xinha/images/ed_format_underline.gif0100664000567100000120000000010510754361754020540 0ustar jcameronwheelGIF89a{{{!, ͉\|P1}F)8*f;file/xinha/images/fullscreen_maximize.gif0100664000567100000120000000012710754361754020604 0ustar jcameronwheelGIF89a!,. 5[q3ԭ:y&e )+8gFj2]s G;file/xinha/images/ed_color_bg.gif0100664000567100000120000000025410754361754016776 0ustar jcameronwheelGIF89a {{{{!,YH ļRqeu# )T0A]Ԑ¤K |FR9i4(X BbVNNˀmI9;file/xinha/images/xinha_logo.gif0100664000567100000120000000567610754361754016704 0ustar jcameronwheelGIF89a2;;;$$$\\\RRRGGGqqq111 hhh [P☐᪢ӗ{{{(צ \R(ݭ'ⶮ g[ڱ ￸»|p!,0OE EE] ^^ʞFtN+ + +` 6$6 ǏmȑCB#R?2jx 4h,I$ У s(d<8!a  Ĕ_O  P)# lP%Jl@ٓͯ`?\gR "$AcRopz@F{TBAx#Env1l8쥱 2a2k G  8p\&oN Z#C,nz!1=\(tk3=+_.ǙO(t -ڛRkC/6C(n8 orGJC1X/!zCIÎr$AhK,D6jJ;-2Xkht{nJKHx.XH,@K H$peI^ 0`+Q}{'| 8'%ts%L$HA"'B 40 KR !04 'Vp 144^W"_|jȯz%[;B̘{zN7{ Qɐi JE GMАIDӒc8t&y Զo;2{gwmxVd!(`Ig ` H <ْI;ڪ o&gkW&'o% *1 !.MB a4<pPׄ,pÄL0L@F%p?CX>}h~6 (Oxd)q}wBCJYD„pu  @Kx q $81b>,'O x: yx }XX(Ƹqn14 8d'$/ X' P=JH 9P$5|Q}2Cj&QR :t& 1  M`II)܁O$8MK8ɞ1=؄&,.0}d |`7Awhgt l&L,!(Ίu/̨9%͆"N<K7RA4M/qYs= - K~>Q' R"&ZSK`/DL  $YԳnT P[VN `JiyוvW#Z 8 ˄ԍ5+Z{eP:TB xUch Nzj!Vbp@"CF2m]nIVZ`Mчڏ0g:QM)TMRֲ*%X0vl, P lnf]!|r̄s%׏ p_'ɭi$Wp*fh,P e#@0#EfӼ7#ǪXeOt11X/ϣM! %[2VLDS $ qQ@d\ӱ?A[J-o`|,Wr -RZymjxH-5 Ocg<@M;si.L(2D\<Zvah0Z_'bB' 4Ma<(9iў5 V/n'NK@ .qF']ٺ4f\ҘzOpåSrJe p |CpYB&q4K( OF09e@sU]` @_8%1H .(=zmҹp $ =hP =(=>@#`V:*r@ gNwcG@}$tP'#k ւh{ 6hw5h@ibT?|_< %P[ԅ('+@#Qz_\<|8?(HG)P+ ]M$ ާS${?ځD(YR o*R' AAa}QOqOd#'Ca'H YYW^Pt(*,؂..HE"X <؃>@B(`fH8 ;file/xinha/images/ed_paste.gif0100664000567100000120000000017610754361754016327 0ustar jcameronwheelGIF89a!,Cѱf|lb$mv9Dyjp`(L^x =/S┒ITj4] ;file/xinha/modules/0040775000567100000120000000000010754361755014257 5ustar jcameronwheelfile/xinha/modules/InternetExplorer/0040775000567100000120000000000010754361755017570 5ustar jcameronwheelfile/xinha/modules/InternetExplorer/InternetExplorer.js0100664000567100000120000001111010754361754023425 0ustar jcameronwheelInternetExplorer._pluginInfo={name:"Internet Explorer",origin:"Xinha Core",version:"$LastChangedRevision: 737 $".replace(/^[^:]*: (.*) \$$/,"$1"),developer:"The Xinha Core Developer Team",developer_url:"$HeadURL: http://svn.xinha.python-hosting.com/tags/0.92beta/modules/InternetExplorer/InternetExplorer.js $".replace(/^[^:]*: (.*) \$$/,"$1"),sponsor:"",sponsor_url:"",license:"htmlArea"}; function InternetExplorer(_1){ this.editor=_1; _1.InternetExplorer=this; } InternetExplorer.prototype.onKeyPress=function(ev){ if(this.editor.isShortCut(ev)){ switch(this.editor.getKey(ev).toLowerCase()){ case "n": this.editor.execCommand("formatblock",false,"

"); Xinha._stopEvent(ev); return true; break; case "1": case "2": case "3": case "4": case "5": case "6": this.editor.execCommand("formatblock",false,""); Xinha._stopEvent(ev); return true; break; } } switch(ev.keyCode){ case 8: case 46: if(this.handleBackspace()){ Xinha._stopEvent(ev); return true; } break; } return false; }; InternetExplorer.prototype.handleBackspace=function(){ var _3=this.editor; var _4=_3.getSelection(); if(_4.type=="Control"){ var _5=_3.activeElement(_4); Xinha.removeFromParent(_5); return true; } var _6=_3.createRange(_4); var r2=_6.duplicate(); r2.moveStart("character",-1); var a=r2.parentElement(); if(a!=_6.parentElement()&&(/^a$/i.test(a.tagName))){ r2.collapse(true); r2.moveEnd("character",1); r2.pasteHTML(""); r2.select(); return true; } }; InternetExplorer.prototype.inwardHtml=function(_9){ _9=_9.replace(/<(\/?)del(\s|>|\/)/ig,"<$1strike$2"); return _9; }; Xinha.prototype.insertNodeAtSelection=function(_a){ this.insertHTML(_a.outerHTML); }; Xinha.prototype.getParentElement=function(_b){ if(typeof _b=="undefined"){ _b=this.getSelection(); } var _c=this.createRange(_b); switch(_b.type){ case "Text": var _d=_c.parentElement(); while(true){ var _e=_c.duplicate(); _e.moveToElementText(_d); if(_e.inRange(_c)){ break; } if((_d.nodeType!=1)||(_d.tagName.toLowerCase()=="body")){ break; } _d=_d.parentElement; } return _d; case "None": return _c.parentElement(); case "Control": return _c.item(0); default: return this._doc.body; } }; Xinha.prototype.activeElement=function(_f){ if((_f===null)||this.selectionEmpty(_f)){ return null; } if(_f.type.toLowerCase()=="control"){ return _f.createRange().item(0); }else{ var _10=_f.createRange(); var _11=this.getParentElement(_f); if(_11.innerHTML==_10.htmlText){ return _11; } return null; } }; Xinha.prototype.selectionEmpty=function(sel){ if(!sel){ return true; } return this.createRange(sel).htmlText===""; }; Xinha.prototype.selectNodeContents=function(_13,pos){ this.focusEditor(); this.forceRedraw(); var _15; var _16=typeof pos=="undefined"?true:false; if(_16&&_13.tagName&&_13.tagName.toLowerCase().match(/table|img|input|select|textarea/)){ _15=this._doc.body.createControlRange(); _15.add(_13); }else{ _15=this._doc.body.createTextRange(); _15.moveToElementText(_13); } _15.select(); }; Xinha.prototype.insertHTML=function(_17){ this.focusEditor(); var sel=this.getSelection(); var _19=this.createRange(sel); _19.pasteHTML(_17); }; Xinha.prototype.getSelectedHTML=function(){ var sel=this.getSelection(); var _1b=this.createRange(sel); if(_1b.htmlText){ return _1b.htmlText; }else{ if(_1b.length>=1){ return _1b.item(0).outerHTML; } } return ""; }; Xinha.prototype.getSelection=function(){ return this._doc.selection; }; Xinha.prototype.createRange=function(sel){ return sel.createRange(); }; Xinha.prototype.isKeyEvent=function(_1d){ return _1d.type=="keydown"; }; Xinha.prototype.getKey=function(_1e){ return String.fromCharCode(_1e.keyCode); }; Xinha.getOuterHTML=function(_1f){ return _1f.outerHTML; }; Xinha.prototype.cc=String.fromCharCode(8201); Xinha.prototype.setCC=function(_20){ if(_20=="textarea"){ var ta=this._textArea; var pos=document.selection.createRange(); pos.collapse(); pos.text=this.cc; var _23=ta.value.indexOf(this.cc); var _24=ta.value.substring(0,_23); var _25=ta.value.substring(_23+this.cc.length,ta.value.length); if(_25.match(/^[^<]*>/)){ var _26=_25.indexOf(">")+1; ta.value=_24+_25.substring(0,_26)+this.cc+_25.substring(_26,_25.length); }else{ ta.value=_24+this.cc+_25; } }else{ var sel=this.getSelection(); var r=sel.createRange(); if(sel.type=="Control"){ var _29=r.item(0); _29.outerHTML+=this.cc; }else{ r.collapse(); r.text=this.cc; } } }; Xinha.prototype.findCC=function(_2a){ var _2b=(_2a=="textarea")?this._textArea:this._doc.body; range=_2b.createTextRange(); if(range.findText(escape(this.cc))){ range.select(); range.text=""; } if(range.findText(this.cc)){ range.select(); range.text=""; } if(_2a=="textarea"){ this._textArea.focus(); } }; file/xinha/modules/ColorPicker/0040775000567100000120000000000010754361755016473 5ustar jcameronwheelfile/xinha/modules/ColorPicker/ColorPicker.js0100664000567100000120000003375110754361754021252 0ustar jcameronwheelColorPicker._pluginInfo={name:"colorPicker",version:"1.0",developer:"James Sleeman",developer_url:"http://www.gogo.co.nz/",c_owner:"Gogo Internet Services",license:"htmlArea",sponsor:"Gogo Internet Services",sponsor_url:"http://www.gogo.co.nz/"}; function ColorPicker(){ } Xinha.colorPicker=function(_1){ if(Xinha.colorPicker.savedColors.length===0){ Xinha.colorPicker.loadColors(); } var _2=this; var _3=false; var _4=false; var _5=0; var _6=0; this.callback=_1.callback?_1.callback:function(_7){ alert("You picked "+_7); }; this.websafe=_1.websafe?_1.websafe:false; this.savecolors=_1.savecolors?_1.savecolors:20; this.cellsize=parseInt(_1.cellsize?_1.cellsize:"10px",10); this.side=_1.granularity?_1.granularity:18; var _8=this.side+1; var _9=this.side-1; this.value=1; this.saved_cells=null; this.table=document.createElement("table"); this.table.className="dialog"; this.table.cellSpacing=this.table.cellPadding=0; this.table.onmouseup=function(){ _3=false; _4=false; }; this.tbody=document.createElement("tbody"); this.table.appendChild(this.tbody); this.table.style.border="1px solid WindowFrame"; this.table.style.zIndex="1000"; var tr=document.createElement("tr"); var td=document.createElement("td"); td.colSpan=this.side; td.className="title"; td.style.fontFamily="small-caption,caption,sans-serif"; td.style.fontSize="x-small"; td.appendChild(document.createTextNode(Xinha._lc("Click a color..."))); td.style.borderBottom="1px solid WindowFrame"; tr.appendChild(td); td=null; var td=document.createElement("td"); td.className="title"; td.colSpan=2; td.style.fontFamily="Tahoma,Verdana,sans-serif"; td.style.borderBottom="1px solid WindowFrame"; td.style.paddingRight="0"; tr.appendChild(td); var _c=document.createElement("div"); _c.title=Xinha._lc("Close"); _c.className="buttonColor"; _c.style.height="11px"; _c.style.width="11px"; _c.style.cursor="pointer"; _c.onclick=function(){ _2.close(); }; _c.appendChild(document.createTextNode("\xd7")); _c.align="center"; _c.style.verticalAlign="top"; _c.style.position="relative"; _c.style.cssFloat="right"; _c.style.styleFloat="right"; _c.style.padding="0"; _c.style.margin="2px"; _c.style.backgroundColor="transparent"; _c.style.fontSize="11px"; if(!Xinha.is_ie){ _c.style.lineHeight="9px"; } _c.style.letterSpacing="0"; td.appendChild(_c); this.tbody.appendChild(tr); _c=tr=td=null; this.constrain_cb=document.createElement("input"); this.constrain_cb.type="checkbox"; this.chosenColor=document.createElement("input"); this.chosenColor.type="text"; this.chosenColor.maxLength=7; this.chosenColor.style.width="50px"; this.chosenColor.style.fontSize="11px"; this.chosenColor.onchange=function(){ if(/#[0-9a-f]{6,6}/i.test(this.value)){ _2.backSample.style.backgroundColor=this.value; _2.foreSample.style.color=this.value; } }; this.backSample=document.createElement("div"); this.backSample.appendChild(document.createTextNode("\xa0")); this.backSample.style.fontWeight="bold"; this.backSample.style.fontFamily="small-caption,caption,sans-serif"; this.backSample.fontSize="x-small"; this.foreSample=document.createElement("div"); this.foreSample.appendChild(document.createTextNode(Xinha._lc("Sample"))); this.foreSample.style.fontWeight="bold"; this.foreSample.style.fontFamily="small-caption,caption,sans-serif"; this.foreSample.fontSize="x-small"; function toHex(_d){ var h=_d.toString(16); if(h.length<2){ h="0"+h; } return h; } function tupleToColor(_f){ return "#"+toHex(_f.red)+toHex(_f.green)+toHex(_f.blue); } function nearestPowerOf(num,_11){ return Math.round(Math.round(num/_11)*_11); } function doubleHexDec(dec){ return parseInt(dec.toString(16)+dec.toString(16),16); } function rgbToWebsafe(_13){ _13.red=doubleHexDec(nearestPowerOf(parseInt(toHex(_13.red).charAt(0),16),3)); _13.blue=doubleHexDec(nearestPowerOf(parseInt(toHex(_13.blue).charAt(0),16),3)); _13.green=doubleHexDec(nearestPowerOf(parseInt(toHex(_13.green).charAt(0),16),3)); return _13; } function hsvToRGB(h,s,v){ var _17; if(s===0){ _17={red:v,green:v,blue:v}; }else{ h/=60; var i=Math.floor(h); var f=h-i; var p=v*(1-s); var q=v*(1-s*f); var t=v*(1-s*(1-f)); switch(i){ case 0: _17={red:v,green:t,blue:p}; break; case 1: _17={red:q,green:v,blue:p}; break; case 2: _17={red:p,green:v,blue:t}; break; case 3: _17={red:p,green:q,blue:v}; break; case 4: _17={red:t,green:p,blue:v}; break; default: _17={red:v,green:p,blue:q}; break; } } _17.red=Math.ceil(_17.red*255); _17.green=Math.ceil(_17.green*255); _17.blue=Math.ceil(_17.blue*255); return _17; } this.open=function(_1d,_1e,_1f){ this.table.style.display=""; this.pick_color(); if(_1f&&/#[0-9a-f]{6,6}/i.test(_1f)){ this.chosenColor.value=_1f; this.backSample.style.backgroundColor=_1f; this.foreSample.style.color=_1f; } this.table.style.position="absolute"; var e=_1e; var top=0; var _22=0; do{ top+=e.offsetTop; _22+=e.offsetLeft; e=e.offsetParent; }while(e); var x,y; if(/top/.test(_1d)){ if(top-this.table.offsetHeight>0){ this.table.style.top=(top-this.table.offsetHeight)+"px"; }else{ this.table.style.top=0; } }else{ this.table.style.top=(top+_1e.offsetHeight)+"px"; } if(/left/.test(_1d)){ this.table.style.left=_22+"px"; }else{ if(_22-(this.table.offsetWidth-_1e.offsetWidth)>0){ this.table.style.left=(_22-(this.table.offsetWidth-_1e.offsetWidth))+"px"; }else{ this.table.style.left=0; } } }; function pickCell(_24){ _2.chosenColor.value=_24.colorCode; _2.backSample.style.backgroundColor=_24.colorCode; _2.foreSample.style.color=_24.colorCode; if((_24.hue>=195&&_24.saturation>0.5)||(_24.hue===0&&_24.saturation===0&&_24.value<0.5)||(_24.hue!==0&&_2.value<0.75)){ _24.style.borderColor="#fff"; }else{ _24.style.borderColor="#000"; } _5=_24.thisrow; _6=_24.thiscol; } function pickValue(_25){ if(_2.value<0.5){ _25.style.borderColor="#fff"; }else{ _25.style.borderColor="#000"; } _9=_25.thisrow; _8=_25.thiscol; _2.chosenColor.value=_2.saved_cells[_5][_6].colorCode; _2.backSample.style.backgroundColor=_2.saved_cells[_5][_6].colorCode; _2.foreSample.style.color=_2.saved_cells[_5][_6].colorCode; } function unpickCell(row,col){ _2.saved_cells[row][col].style.borderColor=_2.saved_cells[row][col].colorCode; } this.pick_color=function(){ var _28,cols; var _29=this; var _2a=359/(this.side); var _2b=1/(this.side-1); var _2c=1/(this.side-1); var _2d=this.constrain_cb.checked; if(this.saved_cells===null){ this.saved_cells=[]; for(var row=0;row=195&&_3f.saturation>0.5)||(_3f.hue===0&&_3f.saturation===0&&_3f.value<0.5)||(_3f.hue!==0&&_29.value<0.75)){ _3f.style.borderColor="#fff"; }else{ _3f.style.borderColor="#000"; } } }; this.close=function(){ this.table.style.display="none"; }; }; Xinha.colorPicker.savedColors=[]; Xinha.colorPicker.remember=function(_40,_41){ for(var i=Xinha.colorPicker.savedColors.length;i--;){ if(Xinha.colorPicker.savedColors[i]==_40){ return false; } } Xinha.colorPicker.savedColors.splice(0,0,_40); Xinha.colorPicker.savedColors=Xinha.colorPicker.savedColors.slice(0,_41); var _43=new Date(); _43.setMonth(_43.getMonth()+1); document.cookie="XinhaColorPicker="+escape(Xinha.colorPicker.savedColors.join("-"))+";expires="+_43.toGMTString(); return true; }; Xinha.colorPicker.loadColors=function(){ var _44=document.cookie.indexOf("XinhaColorPicker"); if(_44!=-1){ var _45=(document.cookie.indexOf("=",_44)+1); var end=document.cookie.indexOf(";",_44); if(end==-1){ end=document.cookie.length; } Xinha.colorPicker.savedColors=unescape(document.cookie.substring(_45,end)).split("-"); } }; Xinha.colorPicker._lc=function(_47){ return Xinha._lc(_47); }; file/xinha/modules/InsertTable/0040775000567100000120000000000010754361755016473 5ustar jcameronwheelfile/xinha/modules/InsertTable/insert_table.html0100664000567100000120000001135010754361754022030 0ustar jcameronwheel Insert Table

Insert Table
Rows: Width:
Cols:

Layout
Alignment:

Border thickness:
Spacing
Cell spacing:

Cell padding:
file/xinha/modules/InsertTable/insert_table.js0100664000567100000120000000262410754361754021504 0ustar jcameronwheelInsertTable._pluginInfo={name:"InsertTable",origin:"Xinha Core",version:"$LastChangedRevision: 688 $".replace(/^[^:]*: (.*) \$$/,"$1"),developer:"The Xinha Core Developer Team",developer_url:"$HeadURL: http://svn.xinha.python-hosting.com/trunk/modules/InsertTable/insert_table.js $".replace(/^[^:]*: (.*) \$$/,"$1"),sponsor:"",sponsor_url:"",license:"htmlArea"}; function InsertTable(_1){ } Xinha.prototype._insertTable=function(){ var _2=this.getSelection(); var _3=this.createRange(_2); var _4=this; Dialog(_4.config.URIs.insert_table,function(_5){ if(!_5){ return false; } var _6=_4._doc; var _7=_6.createElement("table"); for(var _8 in _5){ var _9=_5[_8]; if(!_9){ continue; } switch(_8){ case "f_width": _7.style.width=_9+_5.f_unit; break; case "f_align": _7.align=_9; break; case "f_border": _7.border=parseInt(_9,10); break; case "f_spacing": _7.cellSpacing=parseInt(_9,10); break; case "f_padding": _7.cellPadding=parseInt(_9,10); break; } } var _a=0; if(_5.f_fixed){ _a=Math.floor(100/parseInt(_5.f_cols,10)); } var _b=_6.createElement("tbody"); _7.appendChild(_b); for(var i=0;i<_5.f_rows;++i){ var tr=_6.createElement("tr"); _b.appendChild(tr); for(var j=0;j<_5.f_cols;++j){ var td=_6.createElement("td"); if(_a){ td.style.width=_a+"%"; } tr.appendChild(td); td.appendChild(_6.createTextNode("\xa0")); } } if(Xinha.is_ie){ _3.pasteHTML(_7.outerHTML); }else{ _4.insertNodeAtSelection(_7); } return true; },null); }; file/xinha/modules/Dialogs/0040775000567100000120000000000010754361755015641 5ustar jcameronwheelfile/xinha/modules/Dialogs/popupwin.js0100664000567100000120000000523110754361754020055 0ustar jcameronwheelfunction PopupWin(_1,_2,_3,_4){ this.editor=_1; this.handler=_3; var _5=window.open("","__ha_dialog","toolbar=no,menubar=no,personalbar=no,width=600,height=600,left=20,top=40,scrollbars=no,resizable=yes"); this.window=_5; var _6=_5.document; this.doc=_6; var _7=this; var _8=document.baseURI||document.URL; if(_8&&_8.match(/(.*)\/([^\/]+)/)){ _8=RegExp.$1+"/"; } if(typeof _editor_url!="undefined"&&!(/^\//.test(_editor_url))&&!(/http:\/\//.test(_editor_url))){ _8+=_editor_url; }else{ _8=_editor_url; } if(!(/\/$/.test(_8))){ _8+="/"; } this.baseURL=_8; _6.open(); var _9=""+_2+"\n"; _9+="\n"; if(_editor_skin!=""){ _9+="\n"; } _9+="\n"; _9+=""; _6.write(_9); _6.close(); function init2(){ var _a=_6.body; if(!_a){ setTimeout(init2,25); return false; } _5.title=_2; _6.documentElement.style.padding="0px"; _6.documentElement.style.margin="0px"; var _b=_6.createElement("div"); _b.className="content"; _7.content=_b; _a.appendChild(_b); _7.element=_a; _4(_7); _5.focus(); } init2(); } PopupWin.prototype.callHandler=function(){ var _c=["input","textarea","select"]; var _d={}; for(var ti=_c.length;--ti>=0;){ var _f=_c[ti]; var els=this.content.getElementsByTagName(_f); for(var j=0;j(.*?)<\/l10n>/ig,function(_9,_a){ return _4._lc(_a); }).replace(/="_\((.*?)\)"/g,function(_b,_c){ return "=\""+_4._lc(_c)+"\""; }); this.rootElem.innerHTML=_2; this.editor.notifyOn("resize",function(e,_e){ _4.rootElem.style.width=_4.width=_4.editor._framework.ed_cell.offsetWidth+"px"; _4.rootElem.style.height=_4.height=_4.editor._framework.ed_cell.offsetHeight+"px"; _4.onresize(); }); }; Xinha.Dialog.prototype.onresize=function(){ return true; }; Xinha.Dialog.prototype.show=function(_f){ if(Xinha.is_ie){ this._lastRange=this.editor._createRange(this.editor._getSelection()); } if(typeof _f!="undefined"){ this.setValues(_f); } this._restoreTo=[this.editor._textArea.style.display,this.editor._iframe.style.visibility,this.editor.hidePanels()]; this.editor._textArea.style.display="none"; this.editor._iframe.style.visibility="hidden"; this.rootElem.style.display=""; }; Xinha.Dialog.prototype.hide=function(){ this.rootElem.style.display="none"; this.editor._textArea.style.display=this._restoreTo[0]; this.editor._iframe.style.visibility=this._restoreTo[1]; this.editor.showPanels(this._restoreTo[2]); if(Xinha.is_ie){ this._lastRange.select(); } this.editor.updateToolbar(); return this.getValues(); }; Xinha.Dialog.prototype.toggle=function(){ if(this.rootElem.style.display=="none"){ this.show(); }else{ this.hide(); } }; Xinha.Dialog.prototype.setValues=function(_10){ for(var i in _10){ var _12=this.getElementsByName(i); if(!_12){ continue; } for(var x=0;x<_12.length;x++){ var e=_12[x]; switch(e.tagName.toLowerCase()){ case "select": for(var j=0;j=0){ v=i.options[i.selectedIndex]; } } break; case "textarea": case "input": default: switch(i.type.toLowerCase()){ case "radio": if(i.checked){ v=i.value; break; } case "checkbox": if(v==null){ if(this.getElementsByName(this.r_id[i.name]).length>1){ v=new Array(); } } if(i.checked){ if(v!=null&&typeof v=="object"&&v.push){ v.push(i.value); }else{ v=i.value; } } break; default: v=i.value; break; } } _17[this.r_id[i.name]]=v; } return _17; }; Xinha.Dialog.prototype.getElementById=function(id){ return this.document.getElementById(this.id[id]?this.id[id]:id); }; Xinha.Dialog.prototype.getElementsByName=function(_1e){ return this.document.getElementsByName(this.id[_1e]?this.id[_1e]:_1e); }; file/xinha/modules/Dialogs/panel-dialog.js0100664000567100000120000000407110754361754020531 0ustar jcameronwheel Xinha.PanelDialog = function(editor, side, html, localizer) { this.id = { }; this.r_id = { }; // reverse lookup id this.editor = editor; this.document = document; this.rootElem = editor.addPanel(side); var dialog = this; if(typeof localizer == 'function') { this._lc = localizer; } else if(localizer) { this._lc = function(string) { return Xinha._lc(string,localizer); }; } else { this._lc = function(string) { return string; }; } html = html.replace(/\[([a-z0-9_]+)\]/ig, function(fullString, id) { if(typeof dialog.id[id] == 'undefined') { dialog.id[id] = Xinha.uniq('Dialog'); dialog.r_id[dialog.id[id]] = id; } return dialog.id[id]; } ).replace(/(.*?)<\/l10n>/ig, function(fullString,translate) { return dialog._lc(translate) ; } ).replace(/="_\((.*?)\)"/g, function(fullString, translate) { return '="' + dialog._lc(translate) + '"'; } ); this.rootElem.innerHTML = html; }; Xinha.PanelDialog.prototype.show = function(values) { this.editor.showPanel(this.rootElem); }; Xinha.PanelDialog.prototype.hide = function() { this.editor.hidePanel(this.rootElem); return this.getValues(); }; Xinha.PanelDialog.prototype.onresize = Xinha.Dialog.prototype.onresize; Xinha.PanelDialog.prototype.toggle = Xinha.Dialog.prototype.toggle; Xinha.PanelDialog.prototype.setValues = Xinha.Dialog.prototype.setValues; Xinha.PanelDialog.prototype.getValues = Xinha.Dialog.prototype.getValues; Xinha.PanelDialog.prototype.getElementById = Xinha.Dialog.prototype.getElementById; Xinha.PanelDialog.prototype.getElementsByName = Xinha.Dialog.prototype.getElementsByName;file/xinha/modules/Dialogs/dialog.js0100664000567100000120000000237710754361754017443 0ustar jcameronwheelfunction Dialog(_1,_2,_3){ if(typeof _3=="undefined"){ _3=window; } Dialog._geckoOpenModal(_1,_2,_3); } Dialog._parentEvent=function(ev){ setTimeout(function(){ if(Dialog._modal&&!Dialog._modal.closed){ Dialog._modal.focus(); } },50); try{ if(Dialog._modal&&!Dialog._modal.closed){ Xinha._stopEvent(ev); } } catch(e){ } }; Dialog._return=null; Dialog._modal=null; Dialog._arguments=null; Dialog._geckoOpenModal=function(_5,_6,_7){ var _8=window.open(_5,"hadialog","toolbar=no,menubar=no,personalbar=no,width=10,height=10,"+"scrollbars=no,resizable=yes,modal=yes,dependable=yes"); Dialog._modal=_8; Dialog._arguments=_7; function capwin(w){ Xinha._addEvent(w,"click",Dialog._parentEvent); Xinha._addEvent(w,"mousedown",Dialog._parentEvent); Xinha._addEvent(w,"focus",Dialog._parentEvent); } function relwin(w){ Xinha._removeEvent(w,"click",Dialog._parentEvent); Xinha._removeEvent(w,"mousedown",Dialog._parentEvent); Xinha._removeEvent(w,"focus",Dialog._parentEvent); } capwin(window); for(var i=0;i"; break; case 5: _9+="&"+_5.nodeValue+";"; break; case 7: _9+=(Xinha.is_ie?("\n"+_8):"")+""; break; case 1: case 11: case 9: var _a; var i; var _c=(_5.nodeType==1)?_5.tagName.toLowerCase():""; if((_c=="script"||_c=="noscript")&&_7.config.stripScripts){ break; } if(_6){ _6=!(_7.config.htmlRemoveTags&&_7.config.htmlRemoveTags.test(_c)); } if(Xinha.is_ie&&_c=="head"){ if(_6){ _9+=(Xinha.is_ie?("\n"+_8):"")+""; } var _d=RegExp.multiline; RegExp.multiline=true; var _e=_5.innerHTML.replace(Xinha.RE_tagName,function(_f,p1,p2){ return p1+p2.toLowerCase(); }); RegExp.multiline=_d; _9+=_e+"\n"; if(_6){ _9+=(Xinha.is_ie?("\n"+_8):"")+""; } break; }else{ if(_6){ _a=(!(_5.hasChildNodes()||Xinha.needsClosingTag(_5))); _9+=(Xinha.is_ie&&Xinha.isBlockElement(_5)?("\n"+_8):"")+"<"+_5.tagName.toLowerCase(); var _12=_5.attributes; for(i=0;i<_12.length;++i){ var a=_12.item(i); if(typeof a.nodeValue=="object"){ continue; } if(_5.tagName.toLowerCase()=="input"&&_5.type.toLowerCase()=="checkbox"&&a.nodeName.toLowerCase()=="value"&&a.nodeValue.toLowerCase()=="on"){ continue; } if(!a.specified&&!(_5.tagName.toLowerCase().match(/input|option/)&&a.nodeName=="value")&&!(_5.tagName.toLowerCase().match(/area/)&&a.nodeName.match(/shape|coords/i))){ continue; } var _14=a.nodeName.toLowerCase(); if(/_moz_editor_bogus_node/.test(_14)){ _9=""; break; } if(/(_moz)|(contenteditable)|(_msh)/.test(_14)){ continue; } var _15; if(Xinha.emptyAttributes.indexOf(" "+_14+" ")!=-1){ _15=_14; }else{ if(_14!="style"){ if(typeof _5[a.nodeName]!="undefined"&&_14!="href"&&_14!="src"&&!(/^on/.test(_14))){ _15=_5[a.nodeName]; }else{ _15=a.nodeValue; if(Xinha.is_ie&&(_14=="href"||_14=="src")){ _15=_7.stripBaseURL(_15); } if(_7.config.only7BitPrintablesInURLs&&(_14=="href"||_14=="src")){ _15=_15.replace(/([^!-~]+)/g,function(_16){ return escape(_16); }); } } }else{ if(!Xinha.is_ie){ _15=_5.style.cssText.replace(/rgb\(.*?\)/ig,function(rgb){ return Xinha._colorToRgb(rgb); }); } } } if(/^(_moz)?$/.test(_15)){ continue; } _9+=" "+_14+"=\""+Xinha.htmlEncode(_15)+"\""; } if(Xinha.is_ie&&_5.style.cssText){ _9+=" style=\""+_5.style.cssText.toLowerCase()+"\""; } if(Xinha.is_ie&&_5.tagName.toLowerCase()=="option"&&_5.selected){ _9+=" selected=\"selected\""; } if(_9!==""){ if(_a&&_c=="p"){ _9+="> 

"; }else{ if(_a){ _9+=" />"; }else{ _9+=">"; } } } } } var _18=false; if(_c=="script"||_c=="noscript"){ if(!_7.config.stripScripts){ if(Xinha.is_ie){ var _19="\n"+_5.innerHTML.replace(/^[\n\r]*/,"").replace(/\s+$/,"")+"\n"+_8; }else{ var _19=(_5.hasChildNodes())?_5.firstChild.nodeValue:""; } _9+=_19+""+((Xinha.is_ie)?"\n":""); } }else{ for(i=_5.firstChild;i;i=i.nextSibling){ if(!_18&&i.nodeType==1&&Xinha.isBlockElement(i)){ _18=true; } _9+=Xinha.getHTMLWrapper(i,true,_7,_8+" "); } if(_6&&!_a){ _9+=(Xinha.is_ie&&Xinha.isBlockElement(_5)&&_18?("\n"+_8):"")+""; } } break; case 3: _9=/^script|noscript|style$/i.test(_5.parentNode.tagName)?_5.data:Xinha.htmlEncode(_5.data); break; case 8: _9=""; break; } return _9; }; file/xinha/modules/GetHtml/TransformInnerHTML.js0100664000567100000120000001222310754361754021611 0ustar jcameronwheelfunction GetHtmlImplementation(_1){ this.editor=_1; } GetHtmlImplementation._pluginInfo={name:"GetHtmlImplementation TransformInnerHTML",version:"1.0",developer:"Nelson Bright",developer_url:"http://www.brightworkweb.com/",sponsor:"",sponsor_url:"",license:"htmlArea"}; HTMLArea.RegExpCache=[new RegExp().compile(/<\s*\/?([^\s\/>]+)[\s*\/>]/gi),new RegExp().compile(/(\s+)_moz[^=>]*=[^\s>]*/gi),new RegExp().compile(/\s*=\s*(([^'"][^>\s]*)([>\s])|"([^"]+)"|'([^']+)')/g),new RegExp().compile(/\/>/g),new RegExp().compile(/<(br|hr|img|input|link|meta|param|embed|area)((\s*\S*="[^"]*")*)>/g),new RegExp().compile(/(checked|compact|declare|defer|disabled|ismap|multiple|no(href|resize|shade|wrap)|readonly|selected)([\s>])/gi),new RegExp().compile(/(="[^']*)'([^'"]*")/),new RegExp().compile(/&(?=[^<]*>)/g),new RegExp().compile(/<\s+/g),new RegExp().compile(/\s+(\/)?>/g),new RegExp().compile(/\s{2,}/g),new RegExp().compile(/\s+([^=\s]+)((="[^"]+")|([\s>]))/g),new RegExp().compile(/\s+contenteditable(=[^>\s\/]*)?/gi),new RegExp().compile(/((href|src)=")([^\s]*)"/g),new RegExp().compile(/<\/?(div|p|h[1-6]|table|tr|td|th|ul|ol|li|blockquote|object|br|hr|img|embed|param|pre|script|html|head|body|meta|link|title|area|input|form|textarea|select|option)[^>]*>/g),new RegExp().compile(/<\/(div|p|h[1-6]|table|tr|ul|ol|blockquote|object|html|head|body|script|form|select)( [^>]*)?>/g),new RegExp().compile(/<(div|p|h[1-6]|table|tr|ul|ol|blockquote|object|html|head|body|script|form|select)( [^>]*)?>/g),new RegExp().compile(/<(td|th|li|option|br|hr|embed|param|pre|meta|link|title|area|input|textarea)[^>]*>/g),new RegExp().compile(/(^|<\/(pre|script)>)(\s|[^\s])*?(<(pre|script)[^>]*>|$)/g),new RegExp().compile(/(]*>)([\s\S])*?(<\/pre>)/g),new RegExp().compile(/(^|)([\s\S]*?)(?=|$)/g),new RegExp().compile(/\S*=""/g),new RegExp().compile(/|<\?[\s\S]*?\?>|<\/?\w[^>]*>/g),new RegExp().compile(/(^|<\/script>)[\s\S]*?(]*>|$)/g)]; HTMLArea.prototype.cleanHTML=function(_2){ var c=HTMLArea.RegExpCache; _2=_2.replace(c[0],function(_4){ return _4.toLowerCase(); }).replace(c[1]," ").replace(c[12]," ").replace(c[2],"=\"$2$4$5\"$3").replace(c[21]," ").replace(c[11],function(_5,p1,p2){ return " "+p1.toLowerCase()+p2; }).replace(c[3],">").replace(c[9],"$1>").replace(c[5],"$1=\"$1\"$3").replace(c[4],"<$1$2 />").replace(c[6],"$1$2").replace(c[8],"<").replace(c[10]," "); if(HTMLArea.is_ie&&c[13].test(_2)){ _2=_2.replace(c[13],"$1"+this.stripBaseURL(RegExp.$3)+"\""); } if(this.config.only7BitPrintablesInURLs){ if(HTMLArea.is_ie){ c[13].test(_2); } if(c[13].test(_2)){ try{ _2=_2.replace(c[13],"$1"+decodeURIComponent(RegExp.$3).replace(/([^!-~]+)/g,function(_8){ return escape(_8); })+"\""); } catch(e){ _2=_2.replace(c[13],"$1"+RegExp.$3.replace(/([^!-~]+)/g,function(_9){ return escape(_9); })+"\""); } } } return _2; }; HTMLArea.indent=function(s,_b){ HTMLArea.__nindent=0; HTMLArea.__sindent=""; HTMLArea.__sindentChar=(typeof _b=="undefined")?" ":_b; var c=HTMLArea.RegExpCache; if(HTMLArea.is_gecko){ s=s.replace(c[19],function(_d){ return _d.replace(/
/g,"\n"); }); } s=s.replace(c[18],function(_e){ _e=_e.replace(c[20],function(st,$1,$2){ string=$2.replace(/[\n\r]/gi," ").replace(/\s+/gi," ").replace(c[14],function(str){ if(str.match(c[16])){ var s="\n"+HTMLArea.__sindent+str; HTMLArea.__sindent+=HTMLArea.__sindentChar; ++HTMLArea.__nindent; return s; }else{ if(str.match(c[15])){ --HTMLArea.__nindent; HTMLArea.__sindent=""; for(var i=HTMLArea.__nindent;i>0;--i){ HTMLArea.__sindent+=HTMLArea.__sindentChar; } return "\n"+HTMLArea.__sindent+str; }else{ if(str.match(c[17])){ return "\n"+HTMLArea.__sindent+str; } } } return str; }); return $1+string; }); return _e; }); s=s.replace(/^\s*/,"").replace(/ +\n/g,"\n").replace(/[\r\n]+<\/script>/g,"\n"); return s; }; HTMLArea.getHTML=function(_15,_16,_17){ var _18=""; var c=HTMLArea.RegExpCache; if(_15.nodeType==11){ var div=document.createElement("div"); var _1b=_15.insertBefore(div,_15.firstChild); for(j=_1b.nextSibling;j;j=j.nextSibling){ _1b.appendChild(j.cloneNode(true)); } _18+=_1b.innerHTML.replace(c[23],function(_1c){ _1c=_1c.replace(c[22],function(tag){ if(/^<[!\?]/.test(tag)){ return tag; }else{ return _17.cleanHTML(tag); } }); return _1c; }); }else{ var _1e=(_15.nodeType==1)?_15.tagName.toLowerCase():""; if(_16){ _18+="<"+_1e; var _1f=_15.attributes; for(i=0;i<_1f.length;++i){ var a=_1f.item(i); if(!a.specified){ continue; } var _21=a.nodeName.toLowerCase(); var _22=a.nodeValue; _18+=" "+_21+"=\""+_22+"\""; } _18+=">"; } if(_1e=="html"){ innerhtml=_17._doc.documentElement.innerHTML; }else{ innerhtml=_15.innerHTML; } _18+=innerhtml.replace(c[23],function(_23){ _23=_23.replace(c[22],function(tag){ if(/^<[!\?]/.test(tag)){ return tag; }else{ if(!(_17.config.htmlRemoveTags&&_17.config.htmlRemoveTags.test(tag.replace(/<([^\s>\/]+)/,"$1")))){ return _17.cleanHTML(tag); }else{ return ""; } } }); return _23; }); if(HTMLArea.is_ie){ _18=_18.replace(/]*)?>/g,"").replace(/(<(ul|ol)[^>]*>)[\s\n]*<\/li>/g,"$1").replace(/<\/li>([\s\n]*<\/li>)+/g,""); } if(HTMLArea.is_gecko){ _18=_18.replace(/
\n$/,""); } if(_16){ _18+=""; } _18=HTMLArea.indent(_18); } return _18; }; file/xinha/modules/FullScreen/0040775000567100000120000000000010754361755016321 5ustar jcameronwheelfile/xinha/modules/FullScreen/lang/0040775000567100000120000000000010754361755017242 5ustar jcameronwheelfile/xinha/modules/FullScreen/lang/ja.js0100664000567100000120000000017010754361754020164 0ustar jcameronwheel// I18N constants // LANG: "ja", ENCODING: UTF-8 { "Maximize/Minimize Editor": "エディタの最大化/最小化" };file/xinha/modules/FullScreen/lang/de.js0100664000567100000120000000025010754361754020161 0ustar jcameronwheel// I18N constants // LANG: "de", ENCODING: UTF-8 // translated: Raimund Meyer xinha@ray-of-light.org { "Maximize/Minimize Editor": "Editor maximieren/verkleinern" }; file/xinha/modules/FullScreen/lang/sv.js0100664000567100000120000000025610754361754020227 0ustar jcameronwheel// I18N constants // LANG: "sv" (Swedish), ENCODING: UTF-8 // translated: Erik Dalén, { "Maximize/Minimize Editor": "Maximera/Minimera WYSIWYG fönster" }; file/xinha/modules/FullScreen/lang/pl.js0100664000567100000120000000031510754361754020206 0ustar jcameronwheel// I18N constants // LANG: "pl", ENCODING: UTF-8 // translated: Krzysztof Kotowicz, koto1sa@o2.pl, http://www.eskot.krakow.pl/portfolio { "Maximize/Minimize Editor": "Maksymalizuj/minimalizuj edytor" }; file/xinha/modules/FullScreen/lang/ru.js0100664000567100000120000000027510754361754020226 0ustar jcameronwheel// I18N constants // LANG: "ru", ENCODING: UTF-8 // Author: Andrei Blagorazumov, a@fnr.ru { "Maximize/Minimize Editor": "Развернуть/Свернуть редактор" };file/xinha/modules/FullScreen/lang/nb.js0100664000567100000120000000027710754361754020201 0ustar jcameronwheel// I18N constants // LANG: "nb", ENCODING: UTF-8 // translated: Kim Steinhaug, http://www.steinhaug.com/, kim@steinhaug.com { "Maximize/Minimize Editor": "Maksimer/Minimer WYSIWYG vindu" };file/xinha/modules/FullScreen/lang/fr.js0100664000567100000120000000016210754361754020202 0ustar jcameronwheel// I18N constants // LANG: "fr", ENCODING: UTF-8 { "Maximize/Minimize Editor": "Agrandir/Réduire l'éditeur" };file/xinha/modules/FullScreen/full-screen.js0100664000567100000120000000725610754361754021104 0ustar jcameronwheelfunction FullScreen(_1,_2){ this.editor=_1; _1._superclean_on=false; cfg=_1.config; cfg.registerButton("fullscreen",this._lc("Maximize/Minimize Editor"),[_editor_url+cfg.imgURL+"ed_buttons_main.gif",8,0],true,function(e,_4,_5){ e._fullScreen(); }); cfg.addToolbarElement("fullscreen","popupeditor",0); } FullScreen._pluginInfo={name:"FullScreen",version:"1.0",developer:"James Sleeman",developer_url:"http://www.gogo.co.nz/",c_owner:"Gogo Internet Services",license:"htmlArea",sponsor:"Gogo Internet Services",sponsor_url:"http://www.gogo.co.nz/"}; FullScreen.prototype._lc=function(_6){ return Xinha._lc(_6,{url:_editor_url+"modules/FullScreen/lang/",context:"FullScreen"}); }; Xinha.prototype._fullScreen=function(){ var e=this; function sizeItUp(){ if(!e._isFullScreen||e._sizing){ return false; } e._sizing=true; var _8=Xinha.viewportSize(); var h=_8.y-e.config.fullScreenMargins[0]-e.config.fullScreenMargins[2]; var w=_8.x-e.config.fullScreenMargins[1]-e.config.fullScreenMargins[3]; e.sizeEditor(w+"px",h+"px",true,true); e._sizing=false; if(e._toolbarObjects.fullscreen){ e._toolbarObjects.fullscreen.swapImage([_editor_url+cfg.imgURL+"ed_buttons_main.gif",9,0]); } } function sizeItDown(){ if(e._isFullScreen||e._sizing){ return false; } e._sizing=true; e.initSize(); e._sizing=false; if(e._toolbarObjects.fullscreen){ e._toolbarObjects.fullscreen.swapImage([_editor_url+cfg.imgURL+"ed_buttons_main.gif",8,0]); } } function resetScroll(){ if(e._isFullScreen){ window.scroll(0,0); window.setTimeout(resetScroll,150); } } if(typeof this._isFullScreen=="undefined"){ this._isFullScreen=false; if(e.target!=e._iframe){ Xinha._addEvent(window,"resize",sizeItUp); } } if(Xinha.is_gecko){ this.deactivateEditor(); } if(this._isFullScreen){ this._htmlArea.style.position=""; if(!Xinha.is_ie){ this._htmlArea.style.border=""; } try{ if(Xinha.is_ie&&document.compatMode=="CSS1Compat"){ var _b=document.getElementsByTagName("html"); }else{ var _b=document.getElementsByTagName("body"); } _b[0].style.overflow=""; } catch(e){ } this._isFullScreen=false; sizeItDown(); var _c=this._htmlArea; while((_c=_c.parentNode)&&_c.style){ _c.style.position=_c._xinha_fullScreenOldPosition; _c._xinha_fullScreenOldPosition=null; } if(Xinha.ie_version<7){ var _d=document.getElementsByTagName("select"); for(var i=0;i<_d.length;++i){ _d[i].style.visibility="visible"; } } window.scroll(this._unScroll.x,this._unScroll.y); }else{ this._unScroll={x:(window.pageXOffset)?(window.pageXOffset):(document.documentElement)?document.documentElement.scrollLeft:document.body.scrollLeft,y:(window.pageYOffset)?(window.pageYOffset):(document.documentElement)?document.documentElement.scrollTop:document.body.scrollTop}; var _c=this._htmlArea; while((_c=_c.parentNode)&&_c.style){ _c._xinha_fullScreenOldPosition=_c.style.position; _c.style.position="static"; } if(Xinha.ie_version<7){ var _d=document.getElementsByTagName("select"); var s,currentEditor; for(var i=0;i<_d.length;++i){ s=_d[i]; currentEditor=false; while(s=s.parentNode){ if(s==this._htmlArea){ currentEditor=true; break; } } if(!currentEditor&&_d[i].style.visibility!="hidden"){ _d[i].style.visibility="hidden"; } } } window.scroll(0,0); this._htmlArea.style.position="absolute"; this._htmlArea.style.zIndex=999; this._htmlArea.style.left=e.config.fullScreenMargins[3]+"px"; this._htmlArea.style.top=e.config.fullScreenMargins[0]+"px"; if(!Xinha.is_ie){ this._htmlArea.style.border="none"; } this._isFullScreen=true; resetScroll(); try{ if(Xinha.is_ie&&document.compatMode=="CSS1Compat"){ var _b=document.getElementsByTagName("html"); }else{ var _b=document.getElementsByTagName("body"); } _b[0].style.overflow="hidden"; } catch(e){ } sizeItUp(); } if(Xinha.is_gecko){ this.activateEditor(); } this.focusEditor(); }; file/xinha/modules/CreateLink/0040775000567100000120000000000010754361755016300 5ustar jcameronwheelfile/xinha/modules/CreateLink/link.html0100664000567100000120000000765210754361754020131 0ustar jcameronwheel Insert/Modify Link
Insert/Modify Link
URL:
Title (tooltip):
Target:
file/xinha/modules/CreateLink/link.js0100664000567100000120000000357010754361754017574 0ustar jcameronwheelCreateLink._pluginInfo={name:"CreateLink",origin:"Xinha Core",version:"$LastChangedRevision: 694 $".replace(/^[^:]*: (.*) \$$/,"$1"),developer:"The Xinha Core Developer Team",developer_url:"$HeadURL: http://svn.xinha.python-hosting.com/tags/0.92beta/modules/CreateLink/link.js $".replace(/^[^:]*: (.*) \$$/,"$1"),sponsor:"",sponsor_url:"",license:"htmlArea"}; function CreateLink(_1){ } Xinha.prototype._createLink=function(_2){ var _3=this; var _4=null; if(typeof _2=="undefined"){ _2=this.getParentElement(); if(_2){ while(_2&&!/^a$/i.test(_2.tagName)){ _2=_2.parentNode; } } } if(!_2){ var _5=_3.getSelection(); var _6=_3.createRange(_5); var _7=0; if(Xinha.is_ie){ if(_5.type=="Control"){ _7=_6.length; }else{ _7=_6.compareEndPoints("StartToEnd",_6); } }else{ _7=_6.compareBoundaryPoints(_6.START_TO_END,_6); } if(_7===0){ alert(Xinha._lc("You need to select some text before creating a link")); return; } _4={f_href:"",f_title:"",f_target:"",f_usetarget:_3.config.makeLinkShowsTarget}; }else{ _4={f_href:Xinha.is_ie?_3.stripBaseURL(_2.href):_2.getAttribute("href"),f_title:_2.title,f_target:_2.target,f_usetarget:_3.config.makeLinkShowsTarget}; } Dialog(_3.config.URIs.link,function(_8){ if(!_8){ return false; } var a=_2; if(!a){ try{ var _a=Xinha.uniq("http://www.example.com/Link"); _3._doc.execCommand("createlink",false,_a); var _b=_3._doc.getElementsByTagName("a"); for(var i=0;i<_b.length;i++){ var _d=_b[i]; if(_d.href==_a){ if(!a){ a=_d; } _d.href=_8.f_href; if(_8.f_target){ _d.target=_8.f_target; } if(_8.f_title){ _d.title=_8.f_title; } } } } catch(ex){ } }else{ var _e=_8.f_href.trim(); _3.selectNodeContents(a); if(_e===""){ _3._doc.execCommand("unlink",false,null); _3.updateToolbar(); return false; }else{ a.href=_e; } } if(!(a&&a.tagName.toLowerCase()=="a")){ return false; } a.target=_8.f_target.trim(); a.title=_8.f_title.trim(); _3.selectNodeContents(a); _3.updateToolbar(); },_4); }; file/xinha/modules/InsertImage/0040775000567100000120000000000010754361755016466 5ustar jcameronwheelfile/xinha/modules/InsertImage/insert_image.js0100664000567100000120000000425410754361754021473 0ustar jcameronwheelInsertImage._pluginInfo={name:"InsertImage",origin:"Xinha Core",version:"$LastChangedRevision: 733 $".replace(/^[^:]*: (.*) \$$/,"$1"),developer:"The Xinha Core Developer Team",developer_url:"$HeadURL: http://svn.xinha.python-hosting.com/tags/0.92beta/modules/InsertImage/insert_image.js $".replace(/^[^:]*: (.*) \$$/,"$1"),sponsor:"",sponsor_url:"",license:"htmlArea"}; function InsertImage(_1){ } Xinha.prototype._insertImage=function(_2){ var _3=this; var _4; if(typeof _2=="undefined"){ _2=this.getParentElement(); if(_2&&_2.tagName.toLowerCase()!="img"){ _2=null; } } var _5; if(typeof _3.config.baseHref!="undefined"&&_3.config.baseHref!==null){ _5=_3.config.baseHref; }else{ var _6=window.location.toString().split("/"); _6.pop(); _5=_6.join("/"); } if(_2){ _4={f_base:_5,f_url:Xinha.is_ie?_3.stripBaseURL(_2.src):_2.getAttribute("src"),f_alt:_2.alt,f_border:_2.border,f_align:_2.align,f_vert:(_2.vspace!=-1?_2.vspace:""),f_horiz:(_2.hspace!=-1?_2.hspace:""),f_width:_2.width,f_height:_2.height}; }else{ _4={f_base:_5,f_url:""}; } Dialog(_3.config.URIs.insert_image,function(_7){ if(!_7){ return false; } var _8=_2; if(!_8){ if(Xinha.is_ie){ var _9=_3.getSelection(); var _a=_3.createRange(_9); _3._doc.execCommand("insertimage",false,_7.f_url); _8=_a.parentElement(); if(_8.tagName.toLowerCase()!="img"){ _8=_8.previousSibling; } }else{ _8=document.createElement("img"); _8.src=_7.f_url; _3.insertNodeAtSelection(_8); if(!_8.tagName){ _8=_a.startContainer.firstChild; } } }else{ _8.src=_7.f_url; } for(var _b in _7){ var _c=_7[_b]; switch(_b){ case "f_alt": if(_c){ _8.alt=_c; }else{ _8.removeAttribute("alt"); } break; case "f_border": if(_c){ _8.border=parseInt(_c||"0"); }else{ _8.removeAttribute("border"); } break; case "f_align": if(_c){ _8.align=_c; }else{ _8.removeAttribute("align"); } break; case "f_vert": if(_c){ _8.vspace=parseInt(_c||"0"); }else{ _8.removeAttribute("vspace"); } break; case "f_horiz": if(_c){ _8.hspace=parseInt(_c||"0"); }else{ _8.removeAttribute("hspace"); } break; case "f_width": if(_c){ _8.width=parseInt(_c||"0"); }else{ _8.removeAttribute("width"); } break; case "f_height": if(_c){ _8.height=parseInt(_c||"0"); }else{ _8.removeAttribute("height"); } break; } } },_4); }; file/xinha/modules/InsertImage/insert_image.html0100664000567100000120000001250310754361754022017 0ustar jcameronwheel Insert Image
Insert Image
Image URL:
Alternate text:

Layout
Alignment:

Border thickness:
Spacing
Horizontal:

Vertical:

Image Preview:
file/xinha/modules/Gecko/0040775000567100000120000000000010754361755015307 5ustar jcameronwheelfile/xinha/modules/Gecko/Gecko.js0100664000567100000120000002205610754361754016676 0ustar jcameronwheelGecko._pluginInfo={name:"Gecko",origin:"Xinha Core",version:"$LastChangedRevision: 716 $".replace(/^[^:]*: (.*) \$$/,"$1"),developer:"The Xinha Core Developer Team",developer_url:"$HeadURL: http://svn.xinha.python-hosting.com/tags/0.92beta/modules/Gecko/Gecko.js $".replace(/^[^:]*: (.*) \$$/,"$1"),sponsor:"",sponsor_url:"",license:"htmlArea"}; function Gecko(_1){ this.editor=_1; _1.Gecko=this; } Gecko.prototype.onKeyPress=function(ev){ var _3=this.editor; var s=_3.getSelection(); if(_3.isShortCut(ev)){ switch(_3.getKey(ev).toLowerCase()){ case "z": if(_3._unLink&&_3._unlinkOnUndo){ Xinha._stopEvent(ev); _3._unLink(); _3.updateToolbar(); return true; } break; case "a": sel=_3.getSelection(); sel.removeAllRanges(); range=_3.createRange(); range.selectNodeContents(_3._doc.body); sel.addRange(range); Xinha._stopEvent(ev); return true; break; case "v": if(!_3.config.htmlareaPaste){ return true; } break; } } switch(_3.getKey(ev)){ case " ": var _5=function(_6,_7){ var _8=_6.nextSibling; if(typeof _7=="string"){ _7=_3._doc.createElement(_7); } var a=_6.parentNode.insertBefore(_7,_8); Xinha.removeFromParent(_6); a.appendChild(_6); _8.data=" "+_8.data; s.collapse(_8,1); _3._unLink=function(){ var t=a.firstChild; a.removeChild(t); a.parentNode.insertBefore(t,a); Xinha.removeFromParent(a); _3._unLink=null; _3._unlinkOnUndo=false; }; _3._unlinkOnUndo=true; return a; }; if(_3.config.convertUrlsToLinks&&s&&s.isCollapsed&&s.anchorNode.nodeType==3&&s.anchorNode.data.length>3&&s.anchorNode.data.indexOf(".")>=0){ var _b=s.anchorNode.data.substring(0,s.anchorOffset).search(/\S{4,}$/); if(_b==-1){ break; } if(_3._getFirstAncestor(s,"a")){ break; } var _c=s.anchorNode.data.substring(0,s.anchorOffset).replace(/^.*?(\S*)$/,"$1"); var _d=_c.match(Xinha.RE_email); if(_d){ var _e=s.anchorNode; var _f=_e.splitText(s.anchorOffset); var _10=_e.splitText(_b); _5(_10,"a").href="mailto:"+_d[0]; break; } RE_date=/([0-9]+\.)+/; RE_ip=/(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)/; var _11=_c.match(Xinha.RE_url); if(_11){ if(RE_date.test(_c)){ if(!RE_ip.test(_c)){ break; } } var _12=s.anchorNode; var _13=_12.splitText(s.anchorOffset); var _14=_12.splitText(_b); _5(_14,"a").href=(_11[1]?_11[1]:"http://")+_11[2]; break; } } break; } switch(ev.keyCode){ case 27: if(_3._unLink){ _3._unLink(); Xinha._stopEvent(ev); } break; break; case 8: case 46: if(!ev.shiftKey&&this.handleBackspace()){ Xinha._stopEvent(ev); } default: _3._unlinkOnUndo=false; if(s.anchorNode&&s.anchorNode.nodeType==3){ var a=_3._getFirstAncestor(s,"a"); if(!a){ break; } if(!a._updateAnchTimeout){ if(s.anchorNode.data.match(Xinha.RE_email)&&a.href.match("mailto:"+s.anchorNode.data.trim())){ var _16=s.anchorNode; var _17=function(){ a.href="mailto:"+_16.data.trim(); a._updateAnchTimeout=setTimeout(_17,250); }; a._updateAnchTimeout=setTimeout(_17,1000); break; } var m=s.anchorNode.data.match(Xinha.RE_url); if(m&&a.href.match(s.anchorNode.data.trim())){ var _19=s.anchorNode; var _1a=function(){ m=_19.data.match(Xinha.RE_url); if(m){ a.href=(m[1]?m[1]:"http://")+m[2]; } a._updateAnchTimeout=setTimeout(_1a,250); }; a._updateAnchTimeout=setTimeout(_1a,1000); } } } break; } return false; }; Gecko.prototype.handleBackspace=function(){ var _1b=this.editor; setTimeout(function(){ var sel=_1b.getSelection(); var _1d=_1b.createRange(sel); var SC=_1d.startContainer; var SO=_1d.startOffset; var EC=_1d.endContainer; var EO=_1d.endOffset; var _22=SC.nextSibling; if(SC.nodeType==3){ SC=SC.parentNode; } if(!(/\S/.test(SC.tagName))){ var p=document.createElement("p"); while(SC.firstChild){ p.appendChild(SC.firstChild); } SC.parentNode.insertBefore(p,SC); Xinha.removeFromParent(SC); var r=_1d.cloneRange(); r.setStartBefore(_22); r.setEndAfter(_22); r.extractContents(); sel.removeAllRanges(); sel.addRange(r); } },10); }; Gecko.prototype.inwardHtml=function(_25){ _25=_25.replace(/<(\/?)strong(\s|>|\/)/ig,"<$1b$2"); _25=_25.replace(/<(\/?)em(\s|>|\/)/ig,"<$1i$2"); _25=_25.replace(/<(\/?)del(\s|>|\/)/ig,"<$1strike$2"); return _25; }; Gecko.prototype.outwardHtml=function(_26){ _26=_26.replace(/[\s]*<\/script>/ig,""); return _26; }; Gecko.prototype.onExecCommand=function(_27,UI,_29){ try{ this.editor._doc.execCommand("useCSS",false,true); this.editor._doc.execCommand("styleWithCSS",false,false); } catch(ex){ } switch(_27){ case "paste": alert(Xinha._lc("The Paste button does not work in Mozilla based web browsers (technical security reasons). Press CTRL-V on your keyboard to paste directly.")); return true; } return false; }; Gecko.prototype.onMouseDown=function(ev){ if(ev.target.tagName.toLowerCase()=="hr"){ var sel=this.editor.getSelection(); var _2c=this.editor.createRange(sel); _2c.selectNode(ev.target); } }; Xinha.prototype.insertNodeAtSelection=function(_2d){ var sel=this.getSelection(); var _2f=this.createRange(sel); sel.removeAllRanges(); _2f.deleteContents(); var _30=_2f.startContainer; var pos=_2f.startOffset; var _32=_2d; switch(_30.nodeType){ case 3: if(_2d.nodeType==3){ _30.insertData(pos,_2d.data); _2f=this.createRange(); _2f.setEnd(_30,pos+_2d.length); _2f.setStart(_30,pos+_2d.length); sel.addRange(_2f); }else{ _30=_30.splitText(pos); if(_2d.nodeType==11){ _32=_32.firstChild; } _30.parentNode.insertBefore(_2d,_30); this.selectNodeContents(_32); this.updateToolbar(); } break; case 1: if(_2d.nodeType==11){ _32=_32.firstChild; } _30.insertBefore(_2d,_30.childNodes[pos]); this.selectNodeContents(_32); this.updateToolbar(); break; } }; Xinha.prototype.getParentElement=function(sel){ if(typeof sel=="undefined"){ sel=this.getSelection(); } var _34=this.createRange(sel); try{ var p=_34.commonAncestorContainer; if(!_34.collapsed&&_34.startContainer==_34.endContainer&&_34.startOffset-_34.endOffset<=1&&_34.startContainer.hasChildNodes()){ p=_34.startContainer.childNodes[_34.startOffset]; } while(p.nodeType==3){ p=p.parentNode; } return p; } catch(ex){ return null; } }; Xinha.prototype.activeElement=function(sel){ if((sel===null)||this.selectionEmpty(sel)){ return null; } if(!sel.isCollapsed){ if(sel.anchorNode.childNodes.length>sel.anchorOffset&&sel.anchorNode.childNodes[sel.anchorOffset].nodeType==1){ return sel.anchorNode.childNodes[sel.anchorOffset]; }else{ if(sel.anchorNode.nodeType==1){ return sel.anchorNode; }else{ return null; } } } return null; }; Xinha.prototype.selectionEmpty=function(sel){ if(!sel){ return true; } if(typeof sel.isCollapsed!="undefined"){ return sel.isCollapsed; } return true; }; Xinha.prototype.selectNodeContents=function(_38,pos){ this.focusEditor(); this.forceRedraw(); var _3a; var _3b=typeof pos=="undefined"?true:false; var sel=this.getSelection(); _3a=this._doc.createRange(); if(_3b&&_38.tagName&&_38.tagName.toLowerCase().match(/table|img|input|textarea|select/)){ _3a.selectNode(_38); }else{ _3a.selectNodeContents(_38); } sel.removeAllRanges(); sel.addRange(_3a); }; Xinha.prototype.insertHTML=function(_3d){ var sel=this.getSelection(); var _3f=this.createRange(sel); this.focusEditor(); var _40=this._doc.createDocumentFragment(); var div=this._doc.createElement("div"); div.innerHTML=_3d; while(div.firstChild){ _40.appendChild(div.firstChild); } var _42=this.insertNodeAtSelection(_40); }; Xinha.prototype.getSelectedHTML=function(){ var sel=this.getSelection(); var _44=this.createRange(sel); return Xinha.getHTML(_44.cloneContents(),false,this); }; Xinha.prototype.getSelection=function(){ return this._iframe.contentWindow.getSelection(); }; Xinha.prototype.createRange=function(sel){ this.activateEditor(); if(typeof sel!="undefined"){ try{ return sel.getRangeAt(0); } catch(ex){ return this._doc.createRange(); } }else{ return this._doc.createRange(); } }; Xinha.prototype.isKeyEvent=function(_46){ return _46.type=="keypress"; }; Xinha.prototype.getKey=function(_47){ return String.fromCharCode(_47.charCode); }; Xinha.getOuterHTML=function(_48){ return (new XMLSerializer()).serializeToString(_48); }; Xinha.prototype.cc=String.fromCharCode(173); Xinha.prototype.setCC=function(_49){ if(_49=="textarea"){ var ta=this._textArea; var _4b=ta.selectionStart; var _4c=ta.value.substring(0,_4b); var _4d=ta.value.substring(_4b,ta.value.length); if(_4d.match(/^[^<]*>/)){ var _4e=_4d.indexOf(">")+1; ta.value=_4c+_4d.substring(0,_4e)+this.cc+_4d.substring(_4e,_4d.length); }else{ ta.value=_4c+this.cc+_4d; } }else{ var sel=this.getSelection(); sel.getRangeAt(0).insertNode(document.createTextNode(this.cc)); } }; Xinha.prototype.findCC=function(_50){ var _51=(_50=="textarea")?window:this._iframe.contentWindow; if(_51.find(this.cc)){ if(_50=="textarea"){ var ta=this._textArea; var _53=pos=ta.selectionStart; var end=ta.selectionEnd; var _55=ta.scrollTop; ta.value=ta.value.substring(0,_53)+ta.value.substring(end,ta.value.length); ta.selectionStart=pos; ta.selectionEnd=pos; ta.scrollTop=_55; ta.focus(); }else{ var sel=this.getSelection(); sel.getRangeAt(0).deleteContents(); } } }; Xinha.prototype._standardToggleBorders=Xinha.prototype._toggleBorders; Xinha.prototype._toggleBorders=function(){ var _57=this._standardToggleBorders(); var _58=this._doc.getElementsByTagName("TABLE"); for(var i=0;i<_58.length;i++){ _58[i].style.display="none"; _58[i].style.display="table"; } return _57; }; file/xinha/modules/Gecko/paraHandlerDirty.js0100664000567100000120000000527110754361754021103 0ustar jcameronwheelEnterParagraphs._pluginInfo={name:"EnterParagraphs",origin:"Xinha Core",version:"$LastChangedRevision: 688 $".replace(/^[^:]*: (.*) \$$/,"$1"),developer:"The Xinha Core Developer Team",developer_url:"$HeadURL: http://svn.xinha.python-hosting.com/trunk/modules/Gecko/paraHandlerDirty.js $".replace(/^[^:]*: (.*) \$$/,"$1"),sponsor:"",sponsor_url:"",license:"htmlArea"}; function EnterParagraphs(_1){ this.editor=_1; } EnterParagraphs.prototype.onKeyPress=function(ev){ if(ev.keyCode==13&&!ev.shiftKey){ this.dom_checkInsertP(); Xinha._stopEvent(ev); } }; EnterParagraphs.prototype.dom_checkInsertP=function(){ var _3=this.editor; var p,body; var _5=_3.getSelection(); var _6=_3.createRange(_5); if(!_6.collapsed){ _6.deleteContents(); } _3.deactivateEditor(); var SC=_6.startContainer; var SO=_6.startOffset; var EC=_6.endContainer; var EO=_6.endOffset; if(SC==EC&&SC==body&&!SO&&!EO){ p=_3._doc.createTextNode(" "); body.insertBefore(p,body.firstChild); _6.selectNodeContents(p); SC=_6.startContainer; SO=_6.startOffset; EC=_6.endContainer; EO=_6.endOffset; } p=_3.getAllAncestors(); var _b=null; body=_3._doc.body; for(var i=0;i1){ var nb=_3._doc.createElement("p"); while(df.firstChild){ var s=df.firstChild; df.removeChild(s); nb.appendChild(s); } df.appendChild(nb); } if(!(/\S/.test(_b.innerHTML))){ _b.innerHTML=" "; } p=df.firstChild; if(!(/\S/.test(p.innerHTML))){ p.innerHTML="
"; } if((/^\s*\s*$/.test(p.innerHTML))&&(/^h[1-6]$/i.test(p.tagName))){ df.appendChild(_3.convertNode(p,"p")); df.removeChild(p); } var _14=_b.parentNode.insertBefore(df.firstChild,_b.nextSibling); _3.activateEditor(); _5=_3.getSelection(); _5.removeAllRanges(); _5.collapse(_14,0); _3.scrollToElement(_14); }; file/xinha/modules/Gecko/paraHandlerBest.js0100664000567100000120000002046210754361754020704 0ustar jcameronwheelEnterParagraphs._pluginInfo={name:"EnterParagraphs",version:"1.0",developer:"Adam Wright",developer_url:"http://www.hipikat.org/",sponsor:"The University of Western Australia",sponsor_url:"http://www.uwa.edu.au/",license:"htmlArea"}; EnterParagraphs.prototype._whiteSpace=/^\s*$/; EnterParagraphs.prototype._pExclusions=/^(address|blockquote|body|dd|div|dl|dt|fieldset|form|h1|h2|h3|h4|h5|h6|hr|li|noscript|ol|p|pre|table|ul)$/i; EnterParagraphs.prototype._pContainers=/^(body|del|div|fieldset|form|ins|map|noscript|object|td|th)$/i; EnterParagraphs.prototype._pBreak=/^(address|pre|blockquote)$/i; EnterParagraphs.prototype._permEmpty=/^(area|base|basefont|br|col|frame|hr|img|input|isindex|link|meta|param)$/i; EnterParagraphs.prototype._elemSolid=/^(applet|br|button|hr|img|input|table)$/i; EnterParagraphs.prototype._pifySibling=/^(address|blockquote|del|div|dl|fieldset|form|h1|h2|h3|h4|h5|h6|hr|ins|map|noscript|object|ol|p|pre|table|ul|)$/i; EnterParagraphs.prototype._pifyForced=/^(ul|ol|dl|table)$/i; EnterParagraphs.prototype._pifyParent=/^(dd|dt|li|td|th|tr)$/i; function EnterParagraphs(_1){ this.editor=_1; if(Xinha.is_gecko){ this.onKeyPress=this.__onKeyPress; } } EnterParagraphs.prototype.name="EnterParagraphs"; EnterParagraphs.prototype.insertAdjacentElement=function(_2,_3,el){ if(_3=="BeforeBegin"){ _2.parentNode.insertBefore(el,_2); }else{ if(_3=="AfterEnd"){ _2.nextSibling?_2.parentNode.insertBefore(el,_2.nextSibling):_2.parentNode.appendChild(el); }else{ if(_3=="AfterBegin"&&_2.firstChild){ _2.insertBefore(el,_2.firstChild); }else{ if(_3=="BeforeEnd"||_3=="AfterBegin"){ _2.appendChild(el); } } } } }; EnterParagraphs.prototype.forEachNodeUnder=function(_5,_6,_7,_8){ var _9,end; if(_5.nodeType==11&&_5.firstChild){ _9=_5.firstChild; end=_5.lastChild; }else{ _9=end=_5; } while(end.lastChild){ end=end.lastChild; } return this.forEachNode(_9,end,_6,_7,_8); }; EnterParagraphs.prototype.forEachNode=function(_a,_b,_c,_d,_e){ var _f=function(_10,_11){ return (_11=="ltr"?_10.nextSibling:_10.previousSibling); }; var _12=function(_13,_14){ return (_14=="ltr"?_13.firstChild:_13.lastChild); }; var _15,lookup,fnReturnVal; var _16=_e; var _17=false; while(_15!=_d=="ltr"?_b:_a){ if(!_15){ _15=_d=="ltr"?_a:_b; }else{ if(_12(_15,_d)){ _15=_12(_15,_d); }else{ if(_f(_15,_d)){ _15=_f(_15,_d); }else{ lookup=_15; while(!_f(lookup,_d)&&lookup!=(_d=="ltr"?_b:_a)){ lookup=lookup.parentNode; } _15=(_f(lookup,_d)?_f(lookup,_d):lookup); } } } _17=(_15==(_d=="ltr"?_b:_a)); switch(_c){ case "cullids": fnReturnVal=this._fenCullIds(_15,_16); break; case "find_fill": fnReturnVal=this._fenEmptySet(_15,_16,_c,_17); break; case "find_cursorpoint": fnReturnVal=this._fenEmptySet(_15,_16,_c,_17); break; } if(fnReturnVal[0]){ return fnReturnVal[1]; } if(_17){ break; } if(fnReturnVal[1]){ _16=fnReturnVal[1]; } } return false; }; EnterParagraphs.prototype._fenEmptySet=function(_18,_19,_1a,_1b){ if(!_19&&!_18.firstChild){ _19=_18; } if((_18.nodeType==1&&this._elemSolid.test(_18.nodeName))||(_18.nodeType==3&&!this._whiteSpace.test(_18.nodeValue))||(_18.nodeType!=1&&_18.nodeType!=3)){ switch(_1a){ case "find_fill": return new Array(true,false); break; case "find_cursorpoint": return new Array(true,_18); break; } } if(_1b){ return new Array(true,_19); } return new Array(false,_19); }; EnterParagraphs.prototype._fenCullIds=function(_1c,_1d,_1e){ if(_1d.id){ _1e[_1d.id]?_1d.id="":_1e[_1d.id]=true; } return new Array(false,_1e); }; EnterParagraphs.prototype.processSide=function(rng,_20){ var _21=function(_22,_23){ return (_23=="left"?_22.previousSibling:_22.nextSibling); }; var _24=_20=="left"?rng.startContainer:rng.endContainer; var _25=_20=="left"?rng.startOffset:rng.endOffset; var _26,start=_24; while(start.nodeType==1&&!this._permEmpty.test(start.nodeName)){ start=(_25?start.lastChild:start.firstChild); } while(_26=_26?(_21(_26,_20)?_21(_26,_20):_26.parentNode):start){ if(_21(_26,_20)){ if(this._pExclusions.test(_21(_26,_20).nodeName)){ return this.processRng(rng,_20,_26,_21(_26,_20),(_20=="left"?"AfterEnd":"BeforeBegin"),true,false); } }else{ if(this._pContainers.test(_26.parentNode.nodeName)){ return this.processRng(rng,_20,_26,_26.parentNode,(_20=="left"?"AfterBegin":"BeforeEnd"),true,false); }else{ if(this._pExclusions.test(_26.parentNode.nodeName)){ if(this._pBreak.test(_26.parentNode.nodeName)){ return this.processRng(rng,_20,_26,_26.parentNode,(_20=="left"?"AfterBegin":"BeforeEnd"),false,(_20=="left"?true:false)); }else{ return this.processRng(rng,_20,(_26=_26.parentNode),(_21(_26,_20)?_21(_26,_20):_26.parentNode),(_21(_26,_20)?(_20=="left"?"AfterEnd":"BeforeBegin"):(_20=="left"?"AfterBegin":"BeforeEnd")),false,false); } } } } } }; EnterParagraphs.prototype.processRng=function(rng,_28,_29,_2a,_2b,_2c,_2d){ var _2e=_28=="left"?rng.startContainer:rng.endContainer; var _2f=_28=="left"?rng.startOffset:rng.endOffset; var _30=this.editor; var _31=_30._doc.createRange(); _31.selectNode(_29); if(_28=="left"){ _31.setEnd(_2e,_2f); rng.setStart(_31.startContainer,_31.startOffset); }else{ if(_28=="right"){ _31.setStart(_2e,_2f); rng.setEnd(_31.endContainer,_31.endOffset); } } var cnt=_31.cloneContents(); this.forEachNodeUnder(cnt,"cullids","ltr",this.takenIds,false,false); var _33,pifyOffset,fill; _33=_28=="left"?(_31.endContainer.nodeType==3?true:false):(_31.startContainer.nodeType==3?false:true); pifyOffset=_33?_31.startOffset:_31.endOffset; _33=_33?_31.startContainer:_31.endContainer; if(this._pifyParent.test(_33.nodeName)&&_33.parentNode.childNodes.item(0)==_33){ while(!this._pifySibling.test(_33.nodeName)){ _33=_33.parentNode; } } if(cnt.nodeType==11&&!cnt.firstChild){ if(_33.nodeName!="BODY"||(_33.nodeName=="BODY"&&pifyOffset!=0)){ cnt.appendChild(_30._doc.createElement(_33.nodeName)); } } fill=this.forEachNodeUnder(cnt,"find_fill","ltr",false); if(fill&&this._pifySibling.test(_33.nodeName)&&((pifyOffset==0)||(pifyOffset==1&&this._pifyForced.test(_33.nodeName)))){ _29=_30._doc.createElement("p"); _29.innerHTML=" "; if((_28=="left")&&_33.previousSibling){ return new Array(_33.previousSibling,"AfterEnd",_29); }else{ if((_28=="right")&&_33.nextSibling){ return new Array(_33.nextSibling,"BeforeBegin",_29); }else{ return new Array(_33.parentNode,(_28=="left"?"AfterBegin":"BeforeEnd"),_29); } } } if(fill){ if(fill.nodeType==3){ fill=_30._doc.createDocumentFragment(); } if((fill.nodeType==1&&!this._elemSolid.test())||fill.nodeType==11){ var _34=_30._doc.createElement("p"); _34.innerHTML=" "; fill.appendChild(_34); }else{ var _34=_30._doc.createElement("p"); _34.innerHTML=" "; fill.parentNode.insertBefore(parentNode,fill); } } if(fill){ _29=fill; }else{ _29=(_2c||(cnt.nodeType==11&&!cnt.firstChild))?_30._doc.createElement("p"):_30._doc.createDocumentFragment(); _29.appendChild(cnt); } if(_2d){ _29.appendChild(_30._doc.createElement("br")); } return new Array(_2a,_2b,_29); }; EnterParagraphs.prototype.isNormalListItem=function(rng){ var _36,listNode; _36=rng.startContainer; if((typeof _36.nodeName!="undefined")&&(_36.nodeName.toLowerCase()=="li")){ listNode=_36; }else{ if((typeof _36.parentNode!="undefined")&&(typeof _36.parentNode.nodeName!="undefined")&&(_36.parentNode.nodeName.toLowerCase()=="li")){ listNode=_36.parentNode; }else{ return false; } } if(!listNode.previousSibling){ if(rng.startOffset==0){ return false; } } return true; }; EnterParagraphs.prototype.__onKeyPress=function(ev){ if(ev.keyCode==13&&!ev.shiftKey&&this.editor._iframe.contentWindow.getSelection){ return this.handleEnter(ev); } }; EnterParagraphs.prototype.handleEnter=function(ev){ var _39; var sel=this.editor.getSelection(); var rng=this.editor.createRange(sel); if(this.isNormalListItem(rng)){ return true; } this.takenIds=new Object(); var _3c=this.processSide(rng,"left"); var _3d=this.processSide(rng,"right"); _39=_3d[2]; sel.removeAllRanges(); rng.deleteContents(); var _3e=this.forEachNodeUnder(_39,"find_cursorpoint","ltr",false,true); if(!_3e){ alert("INTERNAL ERROR - could not find place to put cursor after ENTER"); } if(_3c){ this.insertAdjacentElement(_3c[0],_3c[1],_3c[2]); } if(_3d&&_3d.nodeType!=1){ this.insertAdjacentElement(_3d[0],_3d[1],_3d[2]); } if((_3e)&&(this._permEmpty.test(_3e.nodeName))){ var _3f=0; while(_3e.parentNode.childNodes.item(_3f)!=_3e){ _3f++; } sel.collapse(_3e.parentNode,_3f); }else{ try{ sel.collapse(_3e,0); if(_3e.nodeType==3){ _3e=_3e.parentNode; } this.editor.scrollToElement(_3e); } catch(e){ } } this.editor.updateToolbar(); Xinha._stopEvent(ev); return true; }; file/xinha/lang/0040775000567100000120000000000010754361755013530 5ustar jcameronwheelfile/xinha/lang/ja.js0100664000567100000120000001631110754361754014456 0ustar jcameronwheel// I18N constants // LANG: "ja", ENCODING: UTF-8N { "Bold": "太字", "Italic": "斜体", "Underline": "下線", "Strikethrough": "打ち消し線", "Subscript": "下付き添え字", "Superscript": "上付き添え字", "Justify Left": "左寄せ", "Justify Center": "中央寄せ", "Justify Right": "右寄せ", "Justify Full": "均等割付", "Ordered List": "番号付き箇条書き", "Bulleted List": "記号付き箇条書き", "Decrease Indent": "インデント解除", "Increase Indent": "インデント設定", "Font Color": "文字色", "Background Color": "背景色", "Horizontal Rule": "水平線", "Insert Web Link": "リンクの挿入", "Insert/Modify Image": "画像の挿入/修正", "Insert Table": "テーブルを挿入", "Toggle HTML Source": "HTML編集モードを切替", "Enlarge Editor": "エディタを最大化", "About this editor": "バージョン情報", "Help using editor": "ヘルプ", "Current style": "現在のスタイル", "Undoes your last action": "元に戻す", "Redoes your last action": "やり直し", "Cut selection": "切り取り", "Copy selection": "コピー", "Paste from clipboard": "貼り付け", "Direction left to right": "左から右へ", "Direction right to left": "右から左へ", "Remove formatting": "書式削除", "Select all": "すべて選択", "Print document": "印刷", "Clear MSOffice tags": "MSOfficeタグをクリア", "Clear Inline Font Specifications": "インラインフォント指定をクリア", "Would you like to clear font typefaces?": "フォント名をクリアしますか?", "Would you like to clear font sizes?": "サイズをクリアしますか?", "Would you like to clear font colours?": "色をクリアしますか?", "Split Block": "領域分割", "Toggle Borders": "境界線の切替", "Save as": "名前をつけて保存", "Insert/Overwrite": "挿入/上書き", "— format —": "— 書式 —", "Heading 1": "見出し1", "Heading 2": "見出し2", "Heading 3": "見出し3", "Heading 4": "見出し4", "Heading 5": "見出し5", "Heading 6": "見出し6", "Normal": "標準", "Address": "アドレス", "Formatted": "整形済み", "— font —": "— フォント —", "— size —": "— サイズ —", //dialogs "OK": "OK", "Cancel": "中止", "Path": "パス", "You are in TEXT MODE. Use the [<>] button to switch back to WYSIWYG.": "テキストモードで操作しています。WYSIWYG編集に戻るには[<>]ボタンを使ってください。", "The Paste button does not work in Mozilla based web browsers (technical security reasons). Press CTRL-V on your keyboard to paste directly.": "MozillaベースのWebブラウザでは、貼り付けボタンは機能しません(技術的なセキュリティ上の理由で)。Ctrl+Vキーを押して直接貼り付けてください。", "Your Document is not well formed. Check JavaScript console for details.": "この文書には構文的な問題があります。詳細はJavaScriptコンソールを参照してください。", "You need to select some text before creating a link": "リンクを作成するにはテキストを選択する必要があります", "Alignment:": "行揃え:", "Not set": "なし", "Left": "左", "Right": "右", "Texttop": "テキスト上部", "Absmiddle": "中央(絶対的)", "Baseline": "ベースライン", "Absbottom": "下(絶対的)", "Bottom": "下", "Middle": "中央", "Top": "上", "Layout": "レイアウト", "Spacing": "間隔", "Horizontal:": "水平:", "Horizontal padding": "水平余白", "Vertical:": "垂直:", "Vertical padding": "垂直余白", "Border thickness:": "境界線の太さ:", "Leave empty for no border": "境界線がない場合は空のままにする", //Insert Link "Insert/Modify Link": "リンクの挿入/修正", "None (use implicit)": "なし (デフォルトに任せる)", "New window (_blank)": "新しいウィンドウ (_blank)", "Same frame (_self)": "自己フレーム内 (_self)", "Top frame (_top)": "最上位フレーム (_top)", "Other": "その他", "Target:": "ターゲット:", "Title (tooltip):": "タイトル:", "URL:": "URL:", "You must enter the URL where this link points to": "このリンクが指し示すURLを入力してください", // Insert Table "Insert Table": "テーブルの挿入", "Rows:": "行:", "Number of rows": "行数", "Cols:": "列:", "Number of columns": "列数", "Width:": "幅:", "Width of the table": "テーブルの幅", "Percent": "パーセント(%)", "Pixels": "ピクセル(px)", "Em": "相対値(em)", "Width unit": "幅の単位", "Fixed width columns": "列の幅を固定", "Positioning of this table": "このテーブルの配置", "Cell spacing:": "セル間隔:", "Space between adjacent cells": "隣接するセル間の距離", "Cell padding:": "セル余白:", "Space between content and border in cell": "セル内における内容と境界線との距離", "You must enter a number of rows": "行数を入力してください", "You must enter a number of columns": "列数を入力してください", // Insert Image "Insert Image": "画像の挿入", "Image URL:": "画像URL:", "Enter the image URL here": "画像のURLをここに入力します", "Preview": "表示", "Preview the image in a new window": "ウィンドウで画像を表示", "Alternate text:": "代替テキスト:", "For browsers that don't support images": "画像表示をサポートしないブラウザに必要です", "Positioning of this image": "画像の配置", "Image Preview:": "画像表示:", "You must enter the URL": "URLを入力する必要があります", //"button_bold": "fr/bold.gif", //"button_underline": "fr/underline.gif", //"button_strikethrough": "fr/strikethrough.gif", // Editor Help "Xinha Help": "ヘルプ", "Editor Help": "エディタのヘルプ", "Keyboard shortcuts": "キーボードショートカット", "The editor provides the following key combinations:": "エディタは以下のキー操作を提供しています:", "ENTER": "ENTER", "new paragraph": "新規段落", "SHIFT-ENTER": "SHIFT+ENTER", "insert linebreak": "段落内改行の挿入", "Set format to paragraph": "段落書式の設定", "Clean content pasted from Word": "Wordから貼り付けられた内容の清書", "Headings": "見出し", "Close": "閉じる", // Loading messages "Loading in progress. Please wait !": "ロード中です。しばらくお待ちください", "Constructing main object": "構成中 main object", "Constructing object": "構成中 object", "Register panel right": "登録 右パネル", "Register panel left": "登録 左パネル", "Register panel top": "登録 上パネル", "Register panel bottom": "登録 下パネル", "Create Toolbar": "作成 ツールバー", "Create StatusBar": "作成 ステータスバー", "Generate Xinha object": "生成 Xinha object", "Init editor size": "初期化 エディタのサイズ", "Init IFrame": "初期化 IFrame", "Register plugin $plugin": "プラグインの登録 $plugin" };file/xinha/lang/fa.js0100664000567100000120000002067310754361754014460 0ustar jcameronwheel// I18N constants // LANG: "fa", ENCODING: UTF-8 { "Bold": "ضخیم", "Italic": "مورب", "Underline": "زیر خط", "Strikethrough": "رو خط", "Subscript": "زیروند", "Superscript": "بالاوند", "Justify Left": "تراز از چپ", "Justify Center": "تراز در وسط", "Justify Right": "تراز در راست", "Justify Full": "تراز از چپ و راست", "Ordered List": "فهرست مرتب", "Bulleted List": "فهرست گلوله ای", "Decrease Indent": "کاهش سر خط", "Increase Indent": "افزایش سر خط", "Font Color": "رنگ فلم", "Background Color": "رنگ پس زمینه", "Horizontal Rule": "خط افقی", "Insert Web Link": "افزودن لینک وب", "Insert/Modify Image": "افزودن یا ویرایش تصویر", "Insert Table": "افزودن جدول", "Toggle HTML Source": "مشاهده یا عدم مشاهده متن در قالب HTML", "Enlarge Editor": "بزرگ کردن ویرایش گر", "About this editor": "درباره این ویرایش گر", "Help using editor": "راهنمای استفاده ویرایش گر", "Current style": "شیوه کنونی", "Undoes your last action": "برگرداندن آخرین عمل", "Redoes your last action": "انجام مجدد آخرین عمل", "Cut selection": "بریدن انتخاب شده", "Copy selection": "کپی انتخاب شده", "Paste from clipboard": "چسباندن از تخته کار", "Direction left to right": "جهت از چپ به راست", "Direction right to left": "جهت از راست به چپ", "Remove formatting": "حذف فرمت بندی", "Select all": "انتخاب همه", "Print document": "چاپ سند", "Clear MSOffice tags": "پاک کردن متن از برچسب های MSOffice", "Clear Inline Font Specifications": "پاک کردن متن از مشخصات فونت", "Would you like to clear font typefaces?": "آیا تمایل دارید ظاهر فلم را پاک کنید؟", "Would you like to clear font sizes?": "آیا تمایل دارید اندازه قلم را پاک کنید", "Would you like to clear font colours?": "آیا تمایل دارید رنگ قلم را پاک کنید؟", "Split Block": "بلاک جداسازی", "Toggle Borders": "فعال/غیر فعال کردن لبه ها", "Save as": "ذخیره مانند...", "Insert/Overwrite": "افزودن/جانویسی", "— format —": "— قالب —", "Heading 1": "تیتر 1", "Heading 2": "تیتر 2", "Heading 3": "تیتر 3", "Heading 4": "تیتر 4", "Heading 5": "تیتر 5", "Heading 6": "تیتر 6", "Normal": "معمولی", "Address": "آدرس", "Formatted": "قالب بندی شده", //dialogs "OK": "بله", "Cancel": "انصراف", "Path": "مسیر", "You are in TEXT MODE. Use the [<>] button to switch back to WYSIWYG.": "در مد متنی هستید. از دکمه [<>] استفاده نمایید تا به مد WYSIWYG برگردید.", "The Paste button does not work in Mozilla based web browsers (technical security reasons). Press CTRL-V on your keyboard to paste directly.": "دکمه چسباندن در مرورگرهای سری Mozilla کار نمی کند (به دلایل فنی امنیتی).برای چسباندن مستقیم ، دکمه CTRL-V را در صفحه کلید بزنید.", "Your Document is not well formed. Check JavaScript console for details.": "سند شما بدرستی قالب بندی نشده است. برای اطلاعات بیشتر پایانه نمایش جاوااسکریپت را بررسی کنید.", "Alignment:": "تراز بندی", "Not set": "تنظیم نشده", "Left": "چپ", "Right": "راست", "Texttop": "بالای متن", "Absmiddle": "دقیقا وسط", "Baseline": "ابتدای خط", "Absbottom": "دقیقا پایین", "Bottom": "پایین", "Middle": "وسط", "Top": "بالا", "Layout": "لایه", "Spacing": "فاصله گذاری", "Horizontal:": "افقی", "Horizontal padding": "پرکننده افقی", "Vertical:": "عمودی", "Vertical padding": "پرکننده عمودی", "Border thickness:": "ضخامت لبه", "Leave empty for no border": "برای بدون لبه خالی رها کن", //Insert Link "Insert/Modify Link": "افزودن / ویرایش لینک", "None (use implicit)": "هیچکدام (استفاده از بدون شرط)", "New window (_blank)": "پنجره جدید (_blank)", "Same frame (_self)": "فریم یکسان (_self)", "Top frame (_top)": "فریم بالایی (_top)", "Other": "سایر", "Target:": "هدف", "Title (tooltip):": "عنوان (راهنمای یک خطی)", "URL:": "URL:", "You must enter the URL where this link points to": "باید URLی که این لینک به آن اشاره دارد را وارد کنید", "You need to select some text before creating a link": "باید قبل از ساخت لینک ، متنی را انتخاب نمایید", // Insert Table "Insert Table": "افزودن جدول", "Rows:": "ردیف ها", "Number of rows": "تعداد ردیف ها", "Cols:": "ستون ها", "Number of columns": "تعداد ستون ها", "Width:": "طول", "Width of the table": "طول جدول", "Percent": "درصد", "Pixels": "پیکسل ها", "Em": "Em", "Width unit": "واحد طول", "Fixed width columns": "ستون های طول ثابت", "Positioning of this table": "موقعیت یابی این جدول", "Cell spacing:": "فاصله سلول ها", "Space between adjacent cells": "فاصله بین سلول های همجوار", "Cell padding:": "پر کننده سلول", "Space between content and border in cell": "فاصله بین محتوا و لبه در سلول", "You must enter a number of rows": "باید تعداد ردیف ها را وارد کنید", "You must enter a number of columns": "باید تعداد ستون ها را وارد کنید", // Insert Image "Insert Image": "افزودن تصویر", "Image URL:": "URL تصویر", "Enter the image URL here": "URL تصویر را اینجا وارد کنید", "Preview": "پیش نمایش", "Preview the image in a new window": "پیش نمایش تصویر در پنجره ای جدید", "Alternate text:": "متن جایگزین", "For browsers that don't support images": "برای مرورگرهایی که از تصاویر پشتیبانی نمی کنند", "Positioning of this image": "موقعیت یابی تصویر", "Image Preview:": "پیش نمایش تصویر", "You must enter the URL": "شما باید URL را وارد کنید", // toolbar "button_bold": "fr/bold.gif", "button_underline": "fr/underline.gif", "button_strikethrough": "fr/strikethrough.gif", // Editor Help "Xinha Help": "راهنمای Xinha", "Editor Help": "راهنمای ویرایشگر", "Keyboard shortcuts": "میانبرهای صفحه کلید", "The editor provides the following key combinations:": "ویرایشگر استفاده از کلید های گروهی زیر را مسیر می سازد :", "ENTER": "ENTREE", "new paragraph": "پاراگراف جدید", "SHIFT-ENTER": "SHIFT+ENTREE", "insert linebreak": "افزودن جدا کننده خط", "Set format to paragraph": "تغییر قالب به پاراگراف", "Clean content pasted from Word": "تمیز کردن محتوای چسبانده شده از Word", "Headings": "عنوان گذاری", "Close": "بستن", // Loading messages "Loading in progress. Please wait !": "بارگذاری در حال انجام است. لطفا صبر کنید !", "Constructing main object": "ساختن شیء اصلی", "Constructing object": "ساختن شیء", "Register panel right": "ثبت قاب راست", "Register panel left": "ثبت قاب چپ", "Register panel top": "ثبت قاب بالا", "Register panel bottom": "ثبت قاب پایین", "Create Toolbar": "ساخت نوار ابزار", "Create StatusBar": "ساخت نوار وضعیت", "Generate Xinha object": "تولید شیء Xinha", "Init editor size": "مقدار دهی اندازه ویرایشگر", "Init IFrame": "مقدار دهی IFrame", "Register plugin $plugin": "ثبت پلاگین $plugin" };file/xinha/lang/sr.js0100664000567100000120000001562410754361754014516 0ustar jcameronwheel// I18N constants // LANG: "sh", ENCODING: UTF-8 | ISO-8859-5 // Author: Ljuba Ranković, http://www.rankovic.net/ljubar // FOR TRANSLATORS: // // 1. PLEASE PUT YOUR CONTACT INFO IN THE ABOVE LINE // (at least a valid email address) // // 2. PLEASE TRY TO USE UTF-8 FOR ENCODING; // (if this is not possible, please include a comment // that states what encoding is necessary.) { "Bold": "Масно", "Italic": "Курзив", "Underline": "Подвучено", "Strikethrough": "Прецртано", "Subscript": "Индекс-текст", "Superscript": "Експонент-текст", "Justify Left": "Равнање улево", "Justify Center": "Равнање по симетрали", "Justify Right": "Равнање удесно", "Justify Full": "Пуно равнање", "Ordered List": "Листа са редним бројевима", "Bulleted List": "Листа са симболима", "Decrease Indent": "Смањи увлачење", "Increase Indent": "Повећај увлачење", "Font Color": "Боја слова", "Background Color": "Боја позадине", "Horizontal Rule": "Хоризонтална линија", "Insert Web Link": "додај веб линк", "Insert/Modify Image": "додај/промени слику", "Insert Table": "Убаци табелу", "Toggle HTML Source": "Пребаци на приказ ХТМЛ кода", "Enlarge Editor": "Повећај едитор", "About this editor": "О овом едитору", "Help using editor": "Помоћ при коришћењу едитора", "Current style": "Важећи стил", "Undoes your last action": "Поништава последњу радњу", "Redoes your last action": "Враћа последњу радњу", "Cut selection": "Исеци изабрано", "Copy selection": "Копирај изабрано", "Paste from clipboard": "Залепи из клипборда", "Direction left to right": "Правац с лева на десно", "Direction right to left": "Правац с десна на лево", "Remove formatting": "Уклони форматирање", "Select all": "Изабери све", "Print document": "Штампај документ", "Clear MSOffice tags": "Обриши MSOffice тагове", "Clear Inline Font Specifications": "Обриши примењене особине фонта", "Split Block": "Подели блок", "Toggle Borders": "Пребаци оквирне линије", "— format —": "— Format —", "Heading 1": "Заглавље 1", "Heading 2": "Заглавље 2", "Heading 3": "Заглавље 3", "Heading 4": "Заглавље 4", "Heading 5": "Заглавље 5", "Heading 6": "Заглавље 6", "Normal": "обичан", "Address": "адреса", "Formatted": "форматиран", // dialogs "OK": "OK", "Cancel": "Поништи", "Path": "Путања", "You are in TEXT MODE. Use the [<>] button to switch back to WYSIWYG.": "Налазите се у ТЕКСТ режиму. Користите [<>] дугме за повратак на ШВТИД (WYSIWYG).", "The Paste button does not work in Mozilla based web browsers (technical security reasons). Press CTRL-V on your keyboard to paste directly.": "Дугме 'залепи' не ради у претраживачима породице Mozilla (из разлога сигурности). Притисните CTRL-V на тастатури да директно залепите.", "Alignment:": "Равнање", "Not set": "Није постављено", "Left": "Лево", "Right": "Десно", "Texttop": "Врх текста", "Absmiddle": "Апсолутна средина", "Baseline": "Доња линија", "Absbottom": "Апсолутно дно", "Bottom": "Дно", "Middle": "Средина", "Top": "Врх", "Layout": "Прелом", "Spacing": "Размак", "Horizontal:": "По хоризонтали", "Horizontal padding": "Хортизонтално одстојање", "Vertical:": "По вертикали", "Vertical padding": "Вертикално одстојање", "Border thickness:": "Дебљина оквира", "Leave empty for no border": "Остави празно кад нема оквира", // Insert Link "Insert/Modify Link": "додај/промени линк", "None (use implicit)": "користи подразумевано", "New window (_blank)": "Новом прозору (_blank)", "Same frame (_self)": "Исти фрејм (_self)", "Top frame (_top)": "Главни фрејм (_top)", "Other": "Друго", "Target:": "Отвори у:", "Title (tooltip):": "Назив (tooltip):", "URL:": "УРЛ:", "You must enter the URL where this link points to": "Морате унети УРЛ на који води овај линк", // Insert Table "Insert Table": "Убаци табелу", "Rows:": "Редови", "Number of rows": "Број редова", "Cols:": "Колоне", "Number of columns": "Број колона", "Width:": "Ширина", "Width of the table": "Ширина табеле", "Percent": "Процената", "Pixels": "Пиксела", "Em": "Ем", "Width unit": "Јединица ширине", "Fixed width columns": "Фиксирана ширина колоне", "Positioning of this table": "Постављање ове табеле", "Cell spacing:": "Размак између ћелија", "Space between adjacent cells": "Размак између наспрамних ћелија", "Cell padding:": "Унутрашња одстојања од ивица ћелије", "Space between content and border in cell": "Растојање између садржаја у ћелији и њеног оквира", // Insert Image "Insert Image": "Убаци слику", "Image URL:": "УРЛ слике", "Enter the image URL here": "Унесите УРЛ слике овде", "Preview": "Преглед", "Preview the image in a new window": "Прегледај слику у новом прозору", "Alternate text:": "алтернативни текст", "For browsers that don't support images": "За претраживаче који не подржавају слике", "Positioning of this image": "Постављање ове слике", "Image Preview:": "Преглед слике", // Select Color popup "Select Color": "Изабери боју" }; file/xinha/lang/fi.js0100664000567100000120000000244410754361754014464 0ustar jcameronwheel// I18N constants // LANG: "en", ENCODING: UTF-8 { "Bold": "Lihavoitu", "Italic": "Kursivoitu", "Underline": "Alleviivattu", "Strikethrough": "Yliviivattu", "Subscript": "Alaindeksi", "Superscript": "Yläindeksi", "Justify Left": "Tasaa vasemmat reunat", "Justify Center": "Keskitä", "Justify Right": "Tasaa oikeat reunat", "Justify Full": "Tasaa molemmat reunat", "Ordered List": "Numerointi", "Bulleted List": "Luettelomerkit", "Decrease Indent": "Pienennä sisennystä", "Increase Indent": "Lisää sisennystä", "Font Color": "Fontin väri", "Background Color": "Taustaväri", "Horizontal Rule": "Vaakaviiva", "Insert Web Link": "Lisää linkki", "Insert/Modify Image": "Lisää kuva", "Insert Table": "Lisää taulukko", "Toggle HTML Source": "HTML-lähdekoodi vs WYSIWYG", "Enlarge Editor": "Suurenna editori", "About this editor": "Tietoja editorista", "Help using editor": "Näytä ohje", "Current style": "Nykyinen tyyli", "Undoes your last action": "Peruuta viimeinen toiminto", "Redoes your last action": "Palauta viimeinen toiminto", "Cut selection": "Leikkaa maalattu", "Copy selection": "Kopioi maalattu", "Paste from clipboard": "Liitä leikepyödältä", "OK": "Hyväksy", "Cancel": "Peruuta" } file/xinha/lang/lt.js0100664000567100000120000000450210754361754014502 0ustar jcameronwheel// I18N constants // LANG: "lt", ENCODING: UTF-8 // Author: Jaroslav Šatkevič, { "Bold": "Paryškinti", "Italic": "Kursyvas", "Underline": "Pabraukti", "Strikethrough": "Perbraukti", "Subscript": "Apatinis indeksas", "Superscript": "Viršutinis indeksas", "Justify Left": "Lygiavimas pagal kairę", "Justify Center": "Lygiavimas pagal centrą", "Justify Right": "Lygiavimas pagal dešinę", "Justify Full": "Lygiuoti pastraipą", "Ordered List": "Numeruotas sąrašas", "Bulleted List": "Suženklintas sąrašas", "Decrease Indent": "Sumažinti paraštę", "Increase Indent": "Padidinti paraštę", "Font Color": "Šrifto spalva", "Background Color": "Fono spalva", "Horizontal Rule": "Horizontali linija", "Insert Web Link": "Įterpti nuorodą", "Insert/Modify Image": "Įterpti paveiksliuką", "Insert Table": "Įterpti lentelę", "Toggle HTML Source": "Perjungti į HTML/WYSIWYG", "Enlarge Editor": "Išplėstas redagavimo ekranas/Enlarge Editor", "About this editor": "Apie redaktorių", "Help using editor": "Pagalba naudojant redaktorių", "Current style": "Dabartinis stilius", "Undoes your last action": "Atšaukia paskutini jūsų veiksmą", "Redoes your last action": "Pakartoja paskutinį atšauktą jūsų veiksmą", "Cut selection": "Iškirpti", "Copy selection": "Kopijuoti", "Paste from clipboard": "Įterpti", "OK": "OK", "Cancel": "Atšaukti", "Path": "Kelias", "You are in TEXT MODE. Use the [<>] button to switch back to WYSIWYG.": "Jūs esete teksto režime. Naudokite [<>] mygtuką grįžimui į WYSIWYG.", "The full screen mode is known to cause problems with Internet Explorer, due to browser bugs that we weren": "The full screen mode is known to cause problems with Internet Explorer, due to browser bugs that we weren", "Cancel": "Atšaukti", "Insert/Modify Link": "Idėti/Modifikuoti", "New window (_blank)": "Naujas langas (_blank)", "None (use implicit)": "None (use implicit)", "Other": "Kitas", "Same frame (_self)": "Same frame (_self)", "Target:": "Target:", "Title (tooltip):": "Pavadinimas (tooltip):", "Top frame (_top)": "Top frame (_top)", "URL:": "URL:", "You must enter the URL where this link points to": "Jus privalote nurodyti URL į kuri rodo šitą nuoroda" } file/xinha/lang/nl.js0100664000567100000120000000545510754361754014504 0ustar jcameronwheel// I18N constants // LANG: "nl", ENCODING: UTF-8 // Author: Michel Weegeerink (info@mmc-shop.nl), http://mmc-shop.nl // FOR TRANSLATORS: // // 1. PLEASE PUT YOUR CONTACT INFO IN THE ABOVE LINE // (at least a valid email address) // // 2. PLEASE TRY TO USE UTF-8 FOR ENCODING; // (if this is not possible, please include a comment // that states what encoding is necessary.) { "Bold": "Vet", "Italic": "Cursief", "Underline": "Onderstrepen", "Strikethrough": "Doorhalen", "Subscript": "Subscript", "Superscript": "Superscript", "Justify Left": "Links uitlijnen", "Justify Center": "Centreren", "Justify Right": "Rechts uitlijnen", "Justify Full": "Uitvullen", "Ordered List": "Nummering", "Bulleted List": "Opsommingstekens", "Decrease Indent": "Inspringing verkleinen", "Increase Indent": "Inspringing vergroten", "Font Color": "Tekstkleur", "Background Color": "Achtergrondkleur", "Horizontal Rule": "Horizontale lijn", "Insert Web Link": "Hyperlink invoegen/aanpassen", "Insert/Modify Image": "Afbeelding invoegen/aanpassen", "Insert Table": "Tabel invoegen", "Toggle HTML Source": "HTML broncode", "Enlarge Editor": "Vergroot Editor", "About this editor": "Over deze editor", "Help using editor": "HTMLArea help", "Current style": "Huidige stijl", "Undoes your last action": "Ongedaan maken", "Redoes your last action": "Herhalen", "Cut selection": "Knippen", "Copy selection": "Kopi?ren", "Paste from clipboard": "Plakken", "Direction left to right": "Tekstrichting links naar rechts", "Direction right to left": "Tekstrichting rechts naar links", "OK": "OK", "Cancel": "Annuleren", "Path": "Pad", "You are in TEXT MODE. Use the [<>] button to switch back to WYSIWYG.": "Je bent in TEKST-mode. Gebruik de [<>] knop om terug te keren naar WYSIWYG-mode.", "The full screen mode is known to cause problems with Internet Explorer, due to browser bugs that we weren": "Fullscreen-mode veroorzaakt problemen met Internet Explorer door bugs in de webbrowser die we niet kunnen omzeilen. Hierdoor kunnen de volgende effecten optreden: verknoeide teksten, een verlies aan editor-functionaliteit en/of willekeurig vastlopen van de webbrowser. Als u Windows 95 of 98 gebruikt, is het zeer waarschijnlijk dat u een algemene beschermingsfout (", "Cancel": "Annuleren", "Insert/Modify Link": "Hyperlink invoegen/aanpassen", "New window (_blank)": "Nieuw venster (_blank)", "None (use implicit)": "Geen", "Other": "Ander", "Same frame (_self)": "Zelfde frame (_self)", "Target:": "Doel:", "Title (tooltip):": "Titel (tooltip):", "Top frame (_top)": "Bovenste frame (_top)", "URL:": "URL:", "You must enter the URL where this link points to": "Geef de URL in waar de link naar verwijst" } file/xinha/lang/gb.js0100664000567100000120000000170010754361754014450 0ustar jcameronwheel// I18N constants -- Chinese GB // by Dave Lo -- dlo@interactivetools.com { "Bold": "粗体", "Italic": "斜体", "Underline": "底线", "Strikethrough": "删除线", "Subscript": "下标", "Superscript": "上标", "Justify Left": "位置靠左", "Justify Center": "位置居中", "Justify Right": "位置靠右", "Justify Full": "位置左右平等", "Ordered List": "顺序清单", "Bulleted List": "无序清单", "Decrease Indent": "减小行前空白", "Increase Indent": "加宽行前空白", "Font Color": "文字颜色", "Background Color": "背景颜色", "Horizontal Rule": "水平线", "Insert Web Link": "插入连结", "Insert/Modify Image": "插入图形", "Insert Table": "插入表格", "Toggle HTML Source": "切换HTML原始码", "Enlarge Editor": "放大", "About this editor": "关於 HTMLArea", "Help using editor": "说明", "Current style": "字体例子" } file/xinha/lang/pt_br.js0100664000567100000120000000200410754361754015164 0ustar jcameronwheel// I18N constants // LANG: "bt_br", ENCODING: UTF-8 // Brazilian Portuguese Translation by Alex Piaz { "Bold": "Negrito", "Italic": "Itálico", "Underline": "Sublinhado", "Strikethrough": "Tachado", "Subscript": "Subescrito", "Superscript": "Sobrescrito", "Justify Left": "Alinhar à Esquerda", "Justify Center": "Centralizar", "Justify Right": "Alinhar à Direita", "Justify Full": "Justificar", "Ordered List": "Lista Numerada", "Bulleted List": "Lista Marcadores", "Decrease Indent": "Diminuir Indentação", "Increase Indent": "Aumentar Indentação", "Font Color": "Cor da Fonte", "Background Color": "Cor do Fundo", "Horizontal Rule": "Linha Horizontal", "Insert Web Link": "Inserir Link", "Insert/Modify Image": "Inserir Imagem", "Insert Table": "Inserir Tabela", "Toggle HTML Source": "Ver Código-Fonte", "Enlarge Editor": "Expandir Editor", "About this editor": "Sobre", "Help using editor": "Ajuda", "Current style": "Estilo Atual" } file/xinha/lang/b5.js0100664000567100000120000000167310754361754014377 0ustar jcameronwheel// I18N constants -- UTF-8 // by Dave Lo -- dlo@interactivetools.com { "Bold": "粗體", "Italic": "斜體", "Underline": "底線", "Strikethrough": "刪除線", "Subscript": "下標", "Superscript": "上標", "Justify Left": "位置靠左", "Justify Center": "位置居中", "Justify Right": "位置靠右", "Justify Full": "位置左右平等", "Ordered List": "順序清單", "Bulleted List": "無序清單", "Decrease Indent": "減小行前空白", "Increase Indent": "加寬行前空白", "Font Color": "文字顏色", "Background Color": "背景顏色", "Horizontal Rule": "水平線", "Insert Web Link": "插入連結", "Insert/Modify Image": "插入圖形", "Insert Table": "插入表格", "Toggle HTML Source": "切換HTML原始碼", "Enlarge Editor": "放大", "About this editor": "關於 HTMLArea", "Help using editor": "說明", "Current style": "字體例子" } file/xinha/lang/ch.js0100664000567100000120000000474510754361754014466 0ustar jcameronwheel// I18N constants // LANG: "ch", ENCODING: UTF-8 // Samuel Stone, http://stonemicro.com/ { "Bold": "粗體", "Italic": "斜體", "Underline": "底線", "Strikethrough": "刪線", "Subscript": "下標", "Superscript": "上標", "Justify Left": "靠左", "Justify Center": "居中", "Justify Right": "靠右", "Justify Full": "整齊", "Ordered List": "順序清單", "Bulleted List": "無序清單", "Decrease Indent": "伸排", "Increase Indent": "縮排", "Font Color": "文字顏色", "Background Color": "背景顏色", "Horizontal Rule": "水平線", "Insert Web Link": "插入連結", "Insert/Modify Image": "插入圖像", "Insert Table": "插入表格", "Toggle HTML Source": "切換HTML原始碼", "Enlarge Editor": "伸出編輯系統", "About this editor": "關於 HTMLArea", "Help using editor": "說明", "Current style": "字體例子", "Undoes your last action": "回原", "Redoes your last action": "重来", "Cut selection": "剪制选项", "Copy selection": "复制选项", "Paste from clipboard": "贴上", "Direction left to right": "从左到右", "Direction right to left": "从右到左", "OK": "好", "Cancel": "取消", "Path": "途徑", "You are in TEXT MODE. Use the [<>] button to switch back to WYSIWYG.": "你在用純字編輯方式. 用 [<>] 按鈕轉回 所見即所得 編輯方式.", "The full screen mode is known to cause problems with Internet Explorer, due to browser bugs that we weren": "整頁式在Internet Explorer 上常出問題, 因為這是 Internet Explorer 的無名問題,我們無法解決。你可能看見一些垃圾,或遇到其他問題。我們已警告了你. 如果要轉到 正頁式 請按 好.", "The Paste button does not work in Mozilla based web browsers (technical security reasons). Press CTRL-V on your keyboard to paste directly.": "The Paste button does not work in Mozilla based web browsers (technical security reasons). Press CTRL-V on your keyboard to paste directly.", "Cancel": "取消", "Insert/Modify Link": "插入/改寫連結", "New window (_blank)": "新窗户(_blank)", "None (use implicit)": "無(use implicit)", "Other": "其他", "Same frame (_self)": "本匡 (_self)", "Target:": "目標匡:", "Title (tooltip):": "主題 (tooltip):", "Top frame (_top)": "上匡 (_top)", "URL:": "網址:", "You must enter the URL where this link points to": "你必須輸入你要连结的網址" } file/xinha/lang/de.js0100664000567100000120000001563610754361754014465 0ustar jcameronwheel// I18N constants // LANG: "de", ENCODING: UTF-8 { "Bold": "Fett", "Italic": "Kursiv", "Underline": "Unterstrichen", "Strikethrough": "Durchgestrichen", "Subscript": "Tiefgestellt", "Superscript": "Hochgestellt", "Justify Left": "Linksbündig", "Justify Center": "Zentriert", "Justify Right": "Rechtsbündig", "Justify Full": "Blocksatz", "Ordered List": "Nummerierte Liste", "Bulleted List": "Aufzählungsliste", "Decrease Indent": "Einzug verkleinern", "Increase Indent": "Einzug vergrößern", "Font Color": "Schriftfarbe", "Background Color": "Hindergrundfarbe", "Horizontal Rule": "Horizontale Linie", "Insert Web Link": "Hyperlink einfügen", "Insert/Modify Image": "Bild einfügen/verändern", "Insert Table": "Tabelle einfügen", "Toggle HTML Source": "HTML Quelltext ein/ausschalten", "Enlarge Editor": "Editor vergrößern", "About this editor": "Über diesen Editor", "Help using editor": "Hilfe", "Current style": "Derzeitiger Stil", "Undoes your last action": "Rückgängig", "Redoes your last action": "Wiederholen", "Cut selection": "Ausschneiden", "Copy selection": "Kopieren", "Paste from clipboard": "Einfügen aus der Zwischenablage", "Direction left to right": "Textrichtung von Links nach Rechts", "Direction right to left": "Textrichtung von Rechts nach Links", "Remove formatting": "Formatierung entfernen", "Select all": "Alles markieren", "Print document": "Dokument ausdrucken", "Clear MSOffice tags": "MSOffice filter", "Clear Inline Font Specifications": "Zeichensatz Formatierungen entfernen", "Would you like to clear font typefaces?": "Wollen Sie Zeichensatztypen entfernen", "Would you like to clear font sizes?": "Wollen Sie Zeichensatzgrößen entfernen", "Would you like to clear font colours?": "Wollen sie Zeichensatzfarben entfernen", "Split Block": "Block teilen", "Toggle Borders": "Tabellenränder ein/ausblenden", "Save as": "speichern unter", "Insert/Overwrite": "Einfügen/Überschreiben", "— format —": "— Format —", "Heading 1": "Überschrift 1", "Heading 2": "Überschrift 2", "Heading 3": "Überschrift 3", "Heading 4": "Überschrift 4", "Heading 5": "Überschrift 5", "Heading 6": "Überschrift 6", "Normal": "Normal (Absatz)", "Address": "Adresse", "Formatted": "Formatiert", //dialogs "OK": "OK", "Cancel": "Abbrechen", "Path": "Pfad", "You are in TEXT MODE. Use the [<>] button to switch back to WYSIWYG.": "Sie sind im Text-Modus. Benutzen Sie den [<>] Button, um in den visuellen Modus (WYSIWIG) zu gelangen.", "The Paste button does not work in Mozilla based web browsers (technical security reasons). Press CTRL-V on your keyboard to paste directly.": "Aus Sicherheitsgründen dürfen Skripte normalerweise nicht auf Ausschneiden/Kopieren/Einfügen zugreifen. Benutzen Sie bitte die entsprechenden Tastatur-Kommandos (Strg + x/c/v).", "You need to select some text before create a link": "Sie müssen einen Text markieren, um einen Link zu erstellen", "Your Document is not well formed. Check JavaScript console for details.": "Ihr Dokument ist in keinem sauberen Format. Benutzen Sie die Javascript Console für weitere Informationen.", "Alignment:": "Ausrichtung:", "Not set": "nicht eingestellt", "Left": "links", "Right": "rechts", "Texttop": "oben bündig", "Absmiddle": "mittig", "Baseline": "Grundlinie", "Absbottom": "unten bündig", "Bottom": "unten", "Middle": "zentriert", "Top": "oben", "Layout": "Layout", "Spacing": "Abstand", "Horizontal:": "horizontal:", "Horizontal padding": "horizontaler Inhaltsabstand", "Vertical:": "vertikal:", "Vertical padding": "vertikaler Inhaltsabstand", "Border thickness:": "Randstärke:", "Leave empty for no border": "leer lassen für keinen Rand", //Insert Link "Insert/Modify Link": "Verknüpfung hinzufügen/ändern", "None (use implicit)": "k.A. (implizit)", "New window (_blank)": "Neues Fenster (_blank)", "Same frame (_self)": "Selber Rahmen (_self)", "Top frame (_top)": "Oberster Rahmen (_top)", "Other": "Anderes", "Target:": "Ziel:", "Title (tooltip):": "Titel (Tooltip):", "URL:": "URL:", "You must enter the URL where this link points to": "Sie müssen eine Ziel-URL angeben für die Verknüpfung angeben", // Insert Table "Insert Table": "Table einfügen", "Rows:": "Zeilen:", "Number of rows": "Zeilenanzahl", "Cols:": "Spalten:", "Number of columns": "Spaltenanzahl", "Width:": "Breite:", "Width of the table": "Tabellenbreite", "Percent": "Prozent", "Pixels": "Pixel", "Em": "Geviert", "Width unit": "Größeneinheit", "Fixed width columns": "Spalten mit fester Breite", "Positioning of this table": "Positionierung der Tabelle", "Cell spacing:": "Zellenabstand:", "Space between adjacent cells": "Raum zwischen angrenzenden Zellen", "Cell padding:": "Innenabstand:", "Space between content and border in cell": "Raum zwischen Inhalt und Rand der Zelle", "You must enter a number of rows": "Bitte geben Sie die Anzahl der Zeilen an", "You must enter a number of columns": "Bitte geben Sie die Anzahl der Spalten an", // Insert Image "Insert Image": "Bild einfügen", "Image URL:": "Bild URL:", "Enter the image URL here": "Bitte geben sie hier die Bild URL ein", "Preview": "Voransicht", "Preview the image in a new window": "Voransicht des Bildes in einem neuen Fenster", "Alternate text:": "Alternativer Text:", "For browsers that don't support images": "für Browser, die keine Bilder unterstützen", "Positioning of this image": "Positionierung dieses Bildes", "Image Preview:": "Bild Voransicht:", "You must enter the URL": "Bitte geben Sie die URL ein", "button_bold": "de/bold.gif", "button_italic": "de/italic.gif", "button_underline": "de/underline.gif", // Editor Help "Keyboard shortcuts": "Tastaturkürzel", "The editor provides the following key combinations:": "Der Editor unterstützt die folgenden kombinationen:", "new paragraph": "Neuer Absatz(Paragraph)", "insert linebreak": "Harter Umbruch einfügen", "Set format to paragraph": "Setze Formatierung auf Absatz", "Clean content pasted from Word": "Von Word eingefügter Text bereinigen", "Headings": "Überschrift Typ 1 bis 6", "Close": "Schließen", // Loading messages "Loading in progress. Please wait !": "Editor wird geladen. Bitte warten !", "Constructing main object": "Hauptteil wird erzeugt", "Create Toolbar": "Bearbeitungswerkzeuge werden angelegt", "Register panel right": "Erzeugt rechte Leiste", "Register panel left": "Erzeugt linke Leiste", "Register panel top": "Erzeugt obere Leiste", "Register panel bottom": "Erzeugt untere Leiste", // ColorPicker "Click a color..." : "Farbe wählen", "Sample" : "Beispiel", "Web Safe: " : "Web Safe: ", "Color: " : "Farbe: " };file/xinha/lang/si.js0100664000567100000120000000334310754361754014500 0ustar jcameronwheel// I18N constants // LANG: "si", ENCODING: UTF-8 // Author: Tomaz Kregar, x_tomo_x@email.si // FOR TRANSLATORS: // // 1. PLEASE PUT YOUR CONTACT INFO IN THE ABOVE LINE // (at least a valid email address) // // 2. PLEASE TRY TO USE UTF-8 FOR ENCODING; // (if this is not possible, please include a comment // that states what encoding is necessary.) { "Bold": "Krepko", "Italic": "Ležeče", "Underline": "Podčrtano", "Strikethrough": "Prečrtano", "Subscript": "Podpisano", "Superscript": "Nadpisano", "Justify Left": "Poravnaj levo", "Justify Center": "Na sredino", "Justify Right": "Poravnaj desno", "Justify Full": "Porazdeli vsebino", "Ordered List": "Oštevilčevanje", "Bulleted List": "Označevanje", "Decrease Indent": "Zmanjšaj zamik", "Increase Indent": "Povečaj zamik", "Font Color": "Barva pisave", "Background Color": "Barva ozadja", "Horizontal Rule": "Vodoravna črta", "Insert Web Link": "Vstavi hiperpovezavo", "Insert/Modify Image": "Vstavi sliko", "Insert Table": "Vstavi tabelo", "Toggle HTML Source": "Preklopi na HTML kodo", "Enlarge Editor": "Povečaj urejevalnik", "About this editor": "Vizitka za urejevalnik", "Help using editor": "Pomoč za urejevalnik", "Current style": "Trenutni slog", "Undoes your last action": "Razveljavi zadnjo akcijo", "Redoes your last action": "Uveljavi zadnjo akcijo", "Cut selection": "Izreži", "Copy selection": "Kopiraj", "Paste from clipboard": "Prilepi", "OK": "V redu", "Cancel": "Prekliči", "Path": "Pot", "You are in TEXT MODE. Use the [<>] button to switch back to WYSIWYG.": "Si v tekstovnem načinu. Uporabi [<>] gumb za prklop nazaj na WYSIWYG." } file/xinha/lang/vn.js0100664000567100000120000000557210754361754014516 0ustar jcameronwheel// I18N constants : Vietnamese // LANG: "en", ENCODING: UTF-8 // Author: Nguyễn Đình Nam, // Modified 21/07/2004 by Phạm Mai Quân { "Bold": "Đậm", "Italic": "Nghiêng", "Underline": "Gạch Chân", "Strikethrough": "Gạch Xóa", "Subscript": "Viết Xuống Dưới", "Superscript": "Viết Lên Trên", "Justify Left": "Căn Trái", "Justify Center": "Căn Giữa", "Justify Right": "Căn Phải", "Justify Full": "Căn Đều", "Ordered List": "Danh Sách Có Thứ Tự (1, 2, 3)", "Bulleted List": "Danh Sách Phi Thứ Tự (Chấm đầu dòng)", "Decrease Indent": "Lùi Ra Ngoài", "Increase Indent": "Thụt Vào Trong", "Font Color": "Màu Chữ", "Background Color": "Màu Nền", "Horizontal Rule": "Dòng Kẻ Ngang", "Insert Web Link": "Tạo Liên Kết", "Insert/Modify Image": "Chèn Ảnh", "Insert Table": "Chèn Bảng", "Toggle HTML Source": "Chế Độ Mã HTML", "Enlarge Editor": "Phóng To Ô Soạn Thảo", "About this editor": "Tự Giới Thiệu", "Help using editor": "Giúp Đỡ", "Current style": "Định Dạng Hiện Thời", "Undoes your last action": "Hủy thao tác trước", "Redoes your last action": "Lấy lại thao tác vừa bỏ", "Cut selection": "Cắt", "Copy selection": "Sao chép", "Paste from clipboard": "Dán", "Direction left to right": "Viết từ trái sang phải", "Direction right to left": "Viết từ phải sang trái", "OK": "Đồng ý", "Cancel": "Hủy", "The full screen mode is known to cause problems with Internet Explorer, due to browser bugs that we weren": "Chế độ phóng to ô soạn thảo có thể gây lỗi với Internet Explorer vì một số lỗi của trình duyệt này, vì thế chế độ này có thể sẽ không chạy. Hiển thị không đúng, lộn xộn, không có đầy đủ chức năng, và cũng có thể làm trình duyệt của bạn bị tắt ngang. Nếu bạn đang sử dụng Windows 9x bạn có thể bị báo lỗi ", "Path": "Đường Dẫn", "You are in TEXT MODE. Use the [<>] button to switch back to WYSIWYG.": "Bạn đang ở chế độ text. Sử dụng nút [<>] để chuyển lại chế độ WYSIWIG.", "Cancel": "Hủy", "Insert/Modify Link": "Thêm/Chỉnh sửa đường dẫn", "New window (_blank)": "Cửa sổ mới (_blank)", "None (use implicit)": "Không (sử dụng implicit)", "OK": "Đồng ý", "Other": "Khác", "Same frame (_self)": "Trên cùng khung (_self)", "Target:": "Nơi hiện thị:", "Title (tooltip):": "Tiêu đề (của hướng dẫn):", "Top frame (_top)": "Khung trên cùng (_top)", "URL:": "URL:", "You must enter the URL where this link points to": "Bạn phải điền địa chỉ (URL) mà đường dẫn sẽ liên kết tới" } file/xinha/lang/es.js0100664000567100000120000000261210754361754014472 0ustar jcameronwheel// I18N constants // LANG: "es", ENCODING: UTF-8 { "Bold": "Negrita", "Italic": "Cursiva", "Underline": "Subrayado", "Strikethrough": "Tachado", "Subscript": "Sub?ndice", "Superscript": "Super?ndice", "Justify Left": "Alinear a la Izquierda", "Justify Center": "Centrar", "Justify Right": "Alinear a la Derecha", "Justify Full": "Justificar", "Ordered List": "Lista Ordenada", "Bulleted List": "Lista No Ordenada", "Decrease Indent": "Aumentar Sangr?a", "Increase Indent": "Disminuir Sangr?a", "Font Color": "Color del Texto", "Background Color": "Color del Fondo", "Horizontal Rule": "L?nea Horizontal", "Insert Web Link": "Insertar Enlace", "Insert/Modify Image": "Insertar Imagen", "Insert Table": "Insertar Tabla", "Toggle HTML Source": "Ver Documento en HTML", "Enlarge Editor": "Ampliar Editor", "About this editor": "Acerca del Editor", "Help using editor": "Ayuda", "Current style": "Estilo Actual", "Undoes your last action": "Deshacer", "Redoes your last action": "Rehacer", "Cut selection": "Cortar selecci?n", "Copy selection": "Copiar selecci?n", "Paste from clipboard": "Pegar desde el portapapeles", "OK": "Aceptar", "Cancel": "Cancelar", "Path": "Ruta", "You are in TEXT MODE. Use the [<>] button to switch back to WYSIWYG.": "Esta en modo TEXTO. Use el boton [<>] para cambiar a WYSIWIG" } file/xinha/lang/it.js0100664000567100000120000000413210754361754014476 0ustar jcameronwheel// I18N constants // LANG: "it", ENCODING: UTF-8 // Author: Mattia Landoni, http://www.webpresident.org/ { "Bold": "Grassetto", "Italic": "Corsivo", "Underline": "Sottolineato", "Strikethrough": "Barrato", "Subscript": "Pedice", "Superscript": "Apice", "Justify Left": "Sinistra", "Justify Center": "Centrato", "Justify Right": "Destra", "Justify Full": "Giustificato", "Ordered List": "Lista numerata", "Bulleted List": "Lista non numerata", "Decrease Indent": "Diminuisci indentazione", "Increase Indent": "Aumenta indentazione", "Font Color": "Colore font", "Background Color": "Colore sfondo", "Horizontal Rule": "Righello orizzontale", "Insert Web Link": "Inserisci link", "Insert/Modify Image": "Inserisci/modifica Immagine", "Insert Table": "Inserisci tabella", "Toggle HTML Source": "Visualizza/nascondi sorgente HTML", "Enlarge Editor": "Allarga editor", "About this editor": "Informazioni su HTMLArea", "Help using editor": "Aiuto", "Current style": "Stile corrente", "Undoes your last action": "Annulla ultima azione", "Redoes your last action": "Ripeti ultima azione", "Cut selection": "Taglia", "Copy selection": "Copia", "Paste from clipboard": "Incolla", "Direction left to right": "Testo da sx a dx", "Direction right to left": "Testo da dx a sx", "OK": "OK", "Cancel": "Annulla", "Path": "Percorso", "You are in TEXT MODE. Use the [<>] button to switch back to WYSIWYG.": "Sei in MODALITA", "The full screen mode is known to cause problems with Internet Explorer, due to browser bugs that we weren": "E", "Cancel": "Annulla", "Insert/Modify Link": "Inserisci/modifica link", "New window (_blank)": "Nuova finestra (_blank)", "None (use implicit)": "Niente (usa implicito)", "Other": "Altro", "Same frame (_self)": "Stessa frame (_self)", "Target:": "Target:", "Title (tooltip):": "Title (suggerimento):", "Top frame (_top)": "Pagina intera (_top)", "URL:": "URL:", "You must enter the URL where this link points to": "Devi inserire l'indirizzo a cui punta il link" } file/xinha/lang/sh.js0100664000567100000120000001244310754361754014500 0ustar jcameronwheel// I18N constants // LANG: "sh", ENCODING: UTF-8 | ISO-8859-2 // Author: Ljuba Ranković, http://www.rankovic.net/ljubar // FOR TRANSLATORS: // // 1. PLEASE PUT YOUR CONTACT INFO IN THE ABOVE LINE // (at least a valid email address) // // 2. PLEASE TRY TO USE UTF-8 FOR ENCODING; // (if this is not possible, please include a comment // that states what encoding is necessary.) { "Bold": "Masno", "Italic": "Kurziv", "Underline": "Podvučeno", "Strikethrough": "Precrtano", "Subscript": "Indeks-tekst", "Superscript": "Eksponent-tekst", "Justify Left":"Ravnanje ulevo", "Justify Center": "Ravnanje po simetrali", "Justify Right": "Ravnanje udesno", "Justify Full": "Puno ravnanje", "Ordered List": "Lista sa rednim brojevima", "Bulleted List": "Lista sa simbolima", "Decrease Indent": "smanji uvlačenje", "Increase Indent": "Povećaj uvlačenje", "Font Color": "Boja slova", "Background Color": "Boja pozadine", "Horizontal Rule": "Horizontalna linija", "Insert Web Link": "Dodaj web link", "Insert/Modify Image": "Dodaj/promeni sliku", "Insert Table": "Ubaci tabelu", "Toggle HTML Source": "Prebaci na HTML kod", "Enlarge Editor": "Povećaj editor", "About this editor": "O ovom editoru", "Help using editor": "Pomoć pri korišćenju editora", "Current style": "Važeći stil", "Undoes your last action": "Poništava poslednju radnju", "Redoes your last action": "Vraća poslednju radnju", "Cut selection": "Iseci izabrano", "Copy selection": "Kopiraj izabrano", "Paste from clipboard": "Zalepi iz klipborda", "Direction left to right": "Pravac s leva na desno", "Direction right to left": "Pravac s desna na levo", "Remove formatting": "Ukoni formatiranje", "Select all": "Izaberi sve", "Print document": "Štampaj dokument", "Clear MSOffice tags": "Obriši MSOffice tagove", "Clear Inline Font Specifications": "Obriši dodeljene osobine fonta", "Split Block": "Podeli blok", "Toggle Borders": "Izmeni okvire", "— format —": "— Format —", "Heading 1": "Zaglavlje 1", "Heading 2": "Zaglavlje 2", "Heading 3": "Zaglavlje 3", "Heading 4": "Zaglavlje 4", "Heading 5": "Zaglavlje 5", "Heading 6": "Zaglavlje 6", "Normal": "Običan", "Address": "Adresa", "Formatted": "Formatiran", // dialogs "OK": "OK", "Cancel": "Poništi", "Path": "Putanja", "You are in TEXT MODE. Use the [<>] button to switch back to WYSIWYG.": "Nalazite se u TEXT režimu. Koristite [<>] dugme za povratak na WYSIWYG.", "The Paste button does not work in Mozilla based web browsers (technical security reasons). Press CTRL-V on your keyboard to paste directly.": "", "Alignment:": "Ravnanje", "Not set": "Nije postavljeno", "Left": "Levo", "Right": "Desno", "Texttop": "Vrh teksta", "Absmiddle": "Apsolutna sredina", "Baseline": "Donja linija", "Absbottom": "Apsolutno dno", "Bottom": "Dno", "Middle": "Sredina", "Top": "Vrh", "Layout": "Prelom", "Spacing": "Razmak", "Horizontal:": "Po horizontali", "Horizontal padding": "Horizontalno odstojanje", "Vertical:": "Po vertikali", "Vertical padding": "Vertikalno odstojanje", "Border thickness:": "Debljina okvira", "Leave empty for no border": "Ostavi prazno kad nema okvira", // Insert Link "Insert/Modify Link": "Dodaj/promeni Link", "None (use implicit)": "koristi podrazumevano", "New window (_blank)": "Novom prozoru (_blank)", "Same frame (_self)": "Isti frejm (_self)", "Top frame (_top)": "Glavni frejm (_top)", "Other": "Drugo", "Target:": "Otvori u:", "Title (tooltip):": "Naziv (tooltip):", "URL:": "URL:", "You must enter the URL where this link points to": "Morate uneti URL na koji vodi ovaj link", // Insert Table "Insert Table": "Ubaci tabelu", "Rows:": "Redovi", "Number of rows": "Broj redova", "Cols:": "Kolone", "Number of columns": "Broj kolona", "Width:": "Širina", "Width of the table": "Širina tabele", "Percent": "Procenat", "Pixels": "Pikseli", "Em": "Em", "Width unit": "Jedinica širine", "Fixed width columns": "Fiksirana širina kolona", "Positioning of this table": "Postavljanje ove tabele", "Cell spacing:": "Rastojanje ćelija", "Space between adjacent cells": "Rastojanje naspramnih ćelija", "Cell padding:": "Unutrašnja odstojanja u ćeliji", "Space between content and border in cell": "Rastojanje između sadržaja i okvira ćelije", // Insert Image "Insert Image": "Ubaci sliku", "Image URL:": "URL slike", "Enter the image URL here": "Unesite URL slike ovde", "Preview": "Pregled", "Preview the image in a new window": "Pregledaj sliku u novom prozoru", "Alternate text:": "Alternativni tekst", "For browsers that don't support images": "Za pretraživače koji ne podržavaju slike", "Positioning of this image": "Postavljanje ove slike", "Image Preview:": "Pregled slike", // Select Color popup "Select Color": "Izaberite boju" }; file/xinha/lang/hu.js0100664000567100000120000000541510754361754014503 0ustar jcameronwheel// I18N constants // LANG: "hu", ENCODING: UTF-8 // Author: Miklós Somogyi, // FOR TRANSLATORS: // // 1. PLEASE PUT YOUR CONTACT INFO IN THE ABOVE LINE // (at least a valid email address) // // 2. PLEASE TRY TO USE UTF-8 FOR ENCODING; // (if this is not possible, please include a comment // that states what encoding is necessary.) { "Bold": "Félkövér", "Italic": "Dőlt", "Underline": "Aláhúzott", "Strikethrough": "Áthúzott", "Subscript": "Alsó index", "Superscript": "Felső index", "Justify Left": "Balra zárt", "Justify Center": "Középre zárt", "Justify Right": "Jobbra zárt", "Justify Full": "Sorkizárt", "Ordered List": "Számozott lista", "Bulleted List": "Számozatlan lista", "Decrease Indent": "Behúzás csökkentése", "Increase Indent": "Behúzás növelése", "Font Color": "Karakterszín", "Background Color": "Háttérszín", "Horizontal Rule": "Elválasztó vonal", "Insert Web Link": "Hiperhivatkozás beszúrása", "Insert/Modify Image": "Kép beszúrása", "Insert Table": "Táblázat beszúrása", "Toggle HTML Source": "HTML forrás be/ki", "Enlarge Editor": "Szerkesztő külön ablakban", "About this editor": "Névjegy", "Help using editor": "Súgó", "Current style": "Aktuális stílus", "Undoes your last action": "Visszavonás", "Redoes your last action": "Újra végrehajtás", "Cut selection": "Kivágás", "Copy selection": "Másolás", "Paste from clipboard": "Beillesztés", "Direction left to right": "Irány balról jobbra", "Direction right to left": "Irány jobbról balra", "OK": "Rendben", "Cancel": "Mégsem", "Path": "Hierarchia", "You are in TEXT MODE. Use the [<>] button to switch back to WYSIWYG.": "Forrás mód. Visszaváltás [<>] gomb", "The full screen mode is known to cause problems with Internet Explorer, due to browser bugs that we weren": "A teljesképrenyős szerkesztés hibát okozhat Internet Explorer használata esetén, ez a böngésző a hibája, amit nem tudunk kikerülni. Szemetet észlelhet a képrenyőn, illetve néhány funkció hiányozhat és/vagy véletlenszerűen lefagyhat a böngésző. Windows 9x operaciós futtatása esetén elég valószínű, hogy ", "Cancel": "Mégsem", "Insert/Modify Link": "Hivatkozás Beszúrása/Módosítása", "New window (_blank)": "Új ablak (_blank)", "None (use implicit)": "Nincs (use implicit)", "Other": "Más", "Same frame (_self)": "Ugyanabba a keretbe (_self)", "Target:": "Cél:", "Title (tooltip):": "Cím (tooltip):", "Top frame (_top)": "Felső keret (_top)", "URL:": "URL:", "You must enter the URL where this link points to": "Be kell írnia az URL-t, ahova a hivatkozás mutasson" } file/xinha/lang/sv.js0100664000567100000120000001212710754361754014515 0ustar jcameronwheel// I18N constants // LANG: "sv", ENCODING: UTF-8 // Swedish version for htmlArea v3.0 // Initital translation by pat // Synced with additional contants in rev. 477 (Mar 2006) by Thomas Loo { "Bold": "Fet", "Italic": "Kursiv", "Underline": "Understruken", "Strikethrough": "Genomstruken", "Subscript": "Nedsänkt", "Superscript": "Upphöjd", "Justify Left": "Vänsterjustera", "Justify Center": "Centrera", "Justify Right": "Högerjustera", "Justify Full": "Marginaljustera", "Ordered List": "Numrerad lista", "Bulleted List": "Punktlista", "Decrease Indent": "Minska indrag", "Increase Indent": "Öka indrag", "Font Color": "Textfärg", "Background Color": "Bakgrundsfärg", "Horizontal Rule": "Vågrät linje", "Insert Web Link": "Infoga länk", "Insert/Modify Image": "Infoga bild", "Toggle HTML Source": "Visa källkod", "Enlarge Editor": "Visa i eget fönster", "About this editor": "Om denna editor", "Help using editor": "Hjälp", "Current style": "Nuvarande stil", "Undoes your last action": "Ångra kommando", "Redoes your last action": "Upprepa kommando", "Select all": "Markera allt", "Print document": "Skriv ut", "Clear MSOffice tags": "Städa bort MS Office taggar", "Clear Inline Font Specifications": "Rensa inbäddad typsnittsinformation", "Remove formatting": "Rensa formattering", "Toggle Borders": "Objektramar", "Split Block": "Dela block", "Direction left to right": "Vänster till höger", "Direction right to left": "Höger till vänster", "Insert/Overwrite": "Infoga/Skriv över", "OK": "OK", "Cancel": "Avbryt", "Path": "Objekt", "You are in TEXT MODE. Use the [<>] button to switch back to WYSIWYG.": "Du befinner dig i texläge. Klicka på ikonen [<>] ovan för att växla tillbaka till WYSIWIG läge", "The full screen mode is known to cause problems with Internet Explorer, due to browser bugs that we weren": "Visning i fullskärmsläga fungerar dåligt i din webläsare. Möjliga problem resulterar i en ryckig editor, saknade editorfunktioner och/eller att webläsaren kraschar. Om du använder Windows 95/98 finns också möjligheten att Windows kraschar.\n\nTryck ", "The Paste button does not work in Mozilla based web browsers (technical security reasons). Press CTRL-V on your keyboard to paste directly.": "Denna knapp fungerar ej i Mozillabaserad webläsare, använd istället snabbtangenterna CTRL-V på tangentbordet för att klistra in.", "Insert/Modify Link": "Redigera länk", "New window (_blank)": "Nytt fönster (_blank)", "None (use implicit)": "Ingen (använd standardinställing)", "Other": "Annan", "Same frame (_self)": "Samma ram (_self)", "Target:": "Mål:", "Title (tooltip):": "Titel (tooltip):", "Top frame (_top)": "Toppram (_top)", "URL:": "Sökväg:", "You must enter the URL where this link points to": "Du måsta ange en adress till vilken länken skall peka på", "Would you like to clear font typefaces?": "Radera alla typsnittsinformation ?", "Would you like to clear font sizes?": "Radera alla fontstorlekar ?", "Would you like to clear font colours?": "Ta bort all textfärger ?", "You need to select some text before creating a link": "Du måsta markera ett objekt att applicera länken på!", // Insert Table "Insert Table": "Infoga tabell", "Rows:": "Rader:", "Number of rows": "Antal rader", "Cols:": "Kolumner:", "Number of columns": "Antal kolumner", "Width:": "Bredd:", "Width of the table": "Tabellbredd", "Percent": "Procent", "Pixels": "Pixlar", "Em": "", "Width unit": "Breddenheter", "Fixed width columns": "Fixerad bredd", "Alignment:": "Marginaljustering", "Positioning of this table": "Tabellposition", "Border thickness:": "Ramtjocklek", "Leave empty for no border": "Lämna fältet tomt för att undvika ramar", "Spacing": "Cellegenskaper", "Cell spacing:": "Cellmarginaler:", "Space between adjacent cells": "Utrymme mellan celler", "Cell padding:": "Cellindrag:", "Space between content and border in cell": "Utrymme mellan ram och cellinnehåll", "You must enter a number of rows": "Ange ental rader", "You must enter a number of columns": "Ange antal kolumner", // Editor Help "Keyboard shortcuts": "Snabbtangenter", "The editor provides the following key combinations:": "Editorn nyttjar följande kombinationer:", "new paragraph": "Ny paragraf ", "insert linebreak": "Infoga radbrytning ", "Set format to paragraph": "Aktivera paragrafläge", "Clean content pasted from Word": "Rensa innehåll inklistrat från MS Word", "Headings": "Skapa standardrubrik", "Cut selection": "Klipp ut markering", "Copy selection": "Kopiera markering", "Paste from clipboard": "Klistra in", "Close": "Stäng", // Loading messages "Loading in progress. Please wait !": "Editorn laddas. Vänta...", "Constructing main object": "Skapar huvudobjekt", "Create Toolbar": "Skapar verktygspanel", "Register panel right": "Registerar panel höger", "Register panel left": "Registerar panel vänster", "Register panel top": "Registerar toppanel", "Register panel bottom": "Registerar fotpanel" } file/xinha/lang/lv.js0100664000567100000120000000317710754361754014513 0ustar jcameronwheel// I18N constants // LANG: "lv", ENCODING: UTF-8 // Author: Mihai Bazon, http://dynarch.com/mishoo // Translated by: Janis Klavins, { "Bold": "Trekniem burtiem", "Italic": "Kursv", "Underline": "Pasvtrots", "Strikethrough": "Prsvtrots", "Subscript": "Novietot zem rindas", "Superscript": "Novietot virs rindas", "Justify Left": "Izldzint pa kreisi", "Justify Center": "Izldzint centr", "Justify Right": "Izldzint pa labi", "Justify Full": "Izldzint pa visu lapu", "Ordered List": "Numurts saraksts", "Bulleted List": "Saraksts", "Decrease Indent": "Samazint atkpi", "Increase Indent": "Palielint atkpi", "Font Color": "Burtu krsa", "Background Color": "Fona krsa", "Horizontal Rule": "Horizontla atdaltjsvtra", "Insert Web Link": "Ievietot hipersaiti", "Insert/Modify Image": "Ievietot attlu", "Insert Table": "Ievietot tabulu", "Toggle HTML Source": "Skatt HTML kodu", "Enlarge Editor": "Palielint Reditju", "About this editor": "Par o reditju", "Help using editor": "Reditja palgs", "Current style": "Patreizjais stils", "Undoes your last action": "Atcelt pdjo darbbu", "Redoes your last action": "Atkrtot pdjo darbbu", "Cut selection": "Izgriezt iezmto", "Copy selection": "Kopt iezmto", "Paste from clipboard": "Ievietot iezmto", "OK": "Labi", "Cancel": "Atcelt", "Path": "Ce", "You are in TEXT MODE. Use the [<>] button to switch back to WYSIWYG.": "Js patlaban darbojaties TEKSTA REM. Lai prietu atpaka uz GRAFISKO REMU (WYSIWIG), lietojiet [<>] pogu." } file/xinha/lang/pl.js0100664000567100000120000001146610754361754014505 0ustar jcameronwheel// I18N constants // LANG: "pl", ENCODING: UTF-8 // translated: Krzysztof Kotowicz, http://www.eskot.krakow.pl/portfolio/, koto@webworkers.pl { "Bold": "Pogrubienie", "Italic": "Pochylenie", "Underline": "Podkreślenie", "Strikethrough": "Przekreślenie", "Subscript": "Indeks dolny", "Superscript": "Indeks górny", "Justify Left": "Wyrównaj do lewej", "Justify Center": "Wyśrodkuj", "Justify Right": "Wyrównaj do prawej", "Justify Full": "Wyjustuj", "Ordered List": "Numerowanie", "Bulleted List": "Wypunktowanie", "Decrease Indent": "Zmniejsz wcięcie", "Increase Indent": "Zwiększ wcięcie", "Font Color": "Kolor czcionki", "Background Color": "Kolor tła", "Horizontal Rule": "Linia pozioma", "Insert Web Link": "Wstaw adres sieci Web", "Insert/Modify Image": "Wstaw obraz", "Insert Table": "Wstaw tabelę", "Toggle HTML Source": "Edycja WYSIWYG/w źródle strony", "Enlarge Editor": "Pełny ekran", "About this editor": "Informacje o tym edytorze", "Help using editor": "Pomoc", "Current style": "Obecny styl", "Undoes your last action": "Cofa ostatnio wykonane polecenie", "Redoes your last action": "Ponawia ostatnio wykonane polecenie", "Cut selection": "Wycina zaznaczenie do schowka", "Copy selection": "Kopiuje zaznaczenie do schowka", "Paste from clipboard": "Wkleja zawartość schowka", "Direction left to right": "Kierunek tekstu lewo-prawo", "Direction right to left": "Kierunek tekstu prawo-lewo", "Remove formatting": "Usuń formatowanie", "Select all": "Zaznacz wszystko", "Print document": "Drukuj dokument", "Clear MSOffice tags": "Wyczyść tagi MSOffice", "Clear Inline Font Specifications": "Wycisz bezpośrednie przypisania czcionek", "Split Block": "Podziel blok", "Toggle Borders": "Włącz / wyłącz ramki", "— format —": "— Format —", "Heading 1": "Nagłówek 1", "Heading 2": "Nagłówek 2", "Heading 3": "Nagłówek 3", "Heading 4": "Nagłówek 4", "Heading 5": "Nagłówek 5", "Heading 6": "Nagłówek 6", "Normal": "Normalny", "Address": "Adres", "Formatted": "Preformatowany", //dialogs "OK": "OK", "Cancel": "Anuluj", "Path": "Ścieżka", "You are in TEXT MODE. Use the [<>] button to switch back to WYSIWYG.": "Jesteś w TRYBIE TEKSTOWYM. Użyj przycisku [<>], aby przełączyć się na tryb WYSIWYG.", "The Paste button does not work in Mozilla based web browsers (technical security reasons). Press CTRL-V on your keyboard to paste directly.": "Przycisk Wklej nie działa w przeglądarkach Mozilla z uwagi na ustawienia bezpieczeństwa. Naciśnij CRTL-V, aby wkleić zawartość schowka.", "Alignment:": "Wyrównanie:", "Not set": "Nie ustawione", "Left": "Do lewej", "Right": "Do prawej", "Texttop": "Góra tekstu", "Absmiddle": "Abs. środek", "Baseline": "Linia bazowa", "Absbottom": "Abs. dół", "Bottom": "Dół", "Middle": "Środek", "Top": "Góra", "Layout": "Layout", "Spacing": "Spacjowanie", "Horizontal:": "Poziome:", "Horizontal padding": "Wcięcie poziome", "Vertical:": "Pionowe:", "Vertical padding": "Wcięcie pionowe", "Border thickness:": "Grubość obramowania:", "Leave empty for no border": "Bez ramek - zostaw puste", //Insert Link "Insert/Modify Link": "Wstaw/edytuj odnośnik", "None (use implicit)": "Brak", "New window (_blank)": "Nowe okno (_blank)", "Same frame (_self)": "Ta sama ramka (_self)", "Top frame (_top)": "Główna ramka (_top)", "Other": "Inne", "Target:": "Okno docelowe:", "Title (tooltip):": "Tytuł (tooltip):", "URL:": "URL:", "You must enter the URL where this link points to": "Musisz podać URL, na jaki będzie wskazywał odnośnik", // Insert Table "Insert Table": "Wstaw tabelę", "Rows:": "Wierszy:", "Number of rows": "Liczba wierszy", "Cols:": "Kolumn:", "Number of columns": "Liczba kolumn", "Width:": "Szerokość:", "Width of the table": "Szerokość tabeli", "Percent": "Procent", "Pixels": "Pikseli", "Em": "Em", "Width unit": "Jednostka", "Fixed width columns": "Kolumny o stałej szerokości", "Positioning of this table": "Pozycjonowanie tabeli", "Cell spacing:": "Odstęp komórek:", "Space between adjacent cells": "Przestrzeń pomiędzy komórkami", "Cell padding:": "Wcięcie komórek:", "Space between content and border in cell": "Przestrzeń między krawędzią a zawartością komórki", // Insert Image "Insert Image": "Wstaw obrazek", "Image URL:": "URL obrazka:", "Enter the image URL here": "Podaj URL obrazka", "Preview": "Podgląd", "Preview the image in a new window": "Podgląd obrazka w nowym oknie", "Alternate text:": "Tekst alternatywny:", "For browsers that don't support images": "Dla przeglądarek, które nie obsługują obrazków", "Positioning of this image": "Pozycjonowanie obrazka", "Image Preview:": "Podgląd obrazka:" } file/xinha/lang/el.js0100664000567100000120000001125210754361754014463 0ustar jcameronwheel// I18N constants // LANG: "el", ENCODING: UTF-8 // Author: Dimitris Glezos, dimitris@glezos.com { "Bold": "ΞˆΞ½Ο„ΞΏΞ½Ξ±", "Italic": "Πλάγια", "Underline": "Ξ�πογραμμισμένα", "Strikethrough": "Διαγραμμένα", "Subscript": "ΔΡίκτης", "Superscript": "ΔΡίκτης", "Justify Left": "Στοίχιση ΑριστΡρά", "Justify Center": "Στοίχιση ΞšΞ­Ξ½Ο„ΟΞΏ", "Justify Right": "Στοίχιση ΔΡξιά", "Justify Full": "Ξ Ξ»Ξ�ρης Στοίχιση", "Ordered List": "Αρίθμηση", "Bulleted List": "ΞšΞΏΟ…ΞΊΞΊΞ―Ξ΄Ξ΅Ο‚", "Decrease Indent": "ΞœΞ΅Ξ―Ο‰ΟƒΞ· ΕσοχΞ�Ο‚", "Increase Indent": "Αύξηση ΕσοχΞ�Ο‚", "Font Color": "Χρώμα ΓραμματοσΡιράς", "Background Color": "Χρώμα Ξ¦ΟŒΞ½Ο„ΞΏΟ…", "Horizontal Rule": "ΞŸΟΞΉΞΆΟŒΞ½Ο„ΞΉΞ± ΓραμμΞ�", "Insert Web Link": "ΕισαγωγΞ� Συνδέσμου", "Insert/Modify Image": "ΕισαγωγΞ�/Ξ�ροποποίηση Ξ•ΞΉΞΊΟŒΞ½Ξ±Ο‚", "Insert Table": "ΕισαγωγΞ� Ξ Ξ―Ξ½Ξ±ΞΊΞ±", "Toggle HTML Source": "ΕναλλαγΞ� σΡ/Ξ±Ο€ΟŒ HTML", "Enlarge Editor": "ΞœΞ΅Ξ³Ξ­Ξ½ΞΈΟ…Ξ½ΟƒΞ· ΡπΡξΡργαστΞ�", "About this editor": "ΠληροφορίΡς", "Help using editor": "Ξ’ΞΏΞ�θΡια", "Current style": "Παρών στυλ", "Undoes your last action": "ΑναίρΡση τΡλΡυταίας ΡνέργΡιας", "Redoes your last action": "Επαναφορά Ξ±Ο€ΟŒ αναίρΡση", "Cut selection": "ΑποκοπΞ�", "Copy selection": "ΑντιγραφΞ�", "Paste from clipboard": "Ξ•Ο€ΞΉΞΊΟŒΞ»Ξ»Ξ·ΟƒΞ·", "Direction left to right": "ΞšΞ±Ο„Ξ΅ΟΞΈΟ…Ξ½ΟƒΞ· αριστΡρά προς δΡξιά", "Direction right to left": "ΞšΞ±Ο„Ξ΅ΟΞΈΟ…Ξ½ΟƒΞ· Ξ±Ο€ΟŒ δΡξιά προς τα αριστΡρά", "OK": "OK", "Cancel": "Ακύρωση", "Path": "ΔιαδρομΞ�", "You are in TEXT MODE. Use the [<>] button to switch back to WYSIWYG.": "ΕίστΡ σΡ TEXT MODE. ΧρησιμοποιΞ�στΡ το κουμπί [<>] Ξ³ΞΉΞ± Ξ½Ξ± ΡπανέρθΡτΡ στο WYSIWIG.", "The full screen mode is known to cause problems with Internet Explorer, due to browser bugs that we weren": "Ξ— κατάσταση πλΞ�ρης ΞΏΞΈΟŒΞ½Ξ·Ο‚ έχΡι προβλΞ�ματα ΞΌΞ΅ τον Internet Explorer, Ξ»ΟŒΞ³Ο‰ σφαλμάτων στον ίδιο τον browser. Αν το σύστημα σας Ρίναι Windows 9x μπορΡί ΞΊΞ±ΞΉ Ξ½Ξ± χρΡιαστΡίτΡ reboot. Αν ΡίστΡ σίγουροι, πατΞ�στΡ ΟΚ.", "Cancel": "Ακύρωση", "Insert/Modify Link": "ΕισαγωγΞ�/Ξ�ροποποίηση σύνδΡσμου", "New window (_blank)": "Νέο παράθυρο (_blank)", "None (use implicit)": "Κανένα (χρΞ�ση Ξ±Ο€ΟŒΞ»Ο…Ο„ΞΏΟ…)", "Other": "Αλλο", "Same frame (_self)": "Ίδιο frame (_self)", "Target:": "Target:", "Title (tooltip):": "Ξ�ίτλος (tooltip):", "Top frame (_top)": "Πάνω frame (_top)", "URL:": "URL:", "You must enter the URL where this link points to": "ΠρέπΡι Ξ½Ξ± ΡισάγΡτΡ το URL που οδηγΡί Ξ±Ο…Ο„ΟŒΟ‚ ΞΏ σύνδΡσμος" } file/xinha/lang/ro.js0100664000567100000120000000477310754361754014515 0ustar jcameronwheel// I18N constants // LANG: "ro", ENCODING: UTF-8 // Author: Mihai Bazon, http://dynarch.com/mishoo // FOR TRANSLATORS: // // 1. PLEASE PUT YOUR CONTACT INFO IN THE ABOVE LINE // (at least a valid email address) // // 2. PLEASE TRY TO USE UTF-8 FOR ENCODING; // (if this is not possible, please include a comment // that states what encoding is necessary.) { "Bold": "Îngroşat", "Italic": "Italic", "Underline": "Subliniat", "Strikethrough": "Tăiat", "Subscript": "Indice jos", "Superscript": "Indice sus", "Justify Left": "Aliniere la stânga", "Justify Center": "Aliniere pe centru", "Justify Right": "Aliniere la dreapta", "Justify Full": "Aliniere în ambele părţi", "Ordered List": "Listă ordonată", "Bulleted List": "Listă marcată", "Decrease Indent": "Micşorează alineatul", "Increase Indent": "Măreşte alineatul", "Font Color": "Culoarea textului", "Background Color": "Culoare de fundal", "Horizontal Rule": "Linie orizontală", "Insert Web Link": "Inserează/modifică link", "Insert/Modify Image": "Inserează/modifică imagine", "Insert Table": "Inserează un tabel", "Toggle HTML Source": "Sursa HTML / WYSIWYG", "Enlarge Editor": "Maximizează editorul", "About this editor": "Despre editor", "Help using editor": "Documentaţie (devel)", "Current style": "Stilul curent", "Undoes your last action": "Anulează ultima acţiune", "Redoes your last action": "Reface ultima acţiune anulată", "Cut selection": "Taie în clipboard", "Copy selection": "Copie în clipboard", "Paste from clipboard": "Aduce din clipboard", "Direction left to right": "Direcţia de scriere: stânga - dreapta", "Direction right to left": "Direcţia de scriere: dreapta - stânga", "OK": "OK", "Cancel": "Anulează", "Path": "Calea", "You are in TEXT MODE. Use the [<>] button to switch back to WYSIWYG.": "Eşti în modul TEXT. Apasă butonul [<>] pentru a te întoarce în modul WYSIWYG.", "Cancel": "Renunţă", "Insert/Modify Link": "Inserează/modifcă link", "New window (_blank)": "Fereastră nouă (_blank)", "None (use implicit)": "Nimic (foloseşte ce-i implicit)", "Other": "Alt target", "Same frame (_self)": "Aceeaşi fereastră (_self)", "Target:": "Ţinta:", "Title (tooltip):": "Titlul (tooltip):", "Top frame (_top)": "Fereastra principală (_top)", "URL:": "URL:", "You must enter the URL where this link points to": "Trebuie să introduceţi un URL" } file/xinha/lang/ru.js0100664000567100000120000002405110754361754014512 0ustar jcameronwheel// I18N constants // LANG: "ru", ENCODING: UTF-8 // Author: Yulya Shtyryakova, // Some additions by: Alexey Kirpichnikov, // I took French version as a source of English phrases because French version was the most comprehensive // (fr.js was the largest file, actually) %) // FOR TRANSLATORS: // // 1. PLEASE PUT YOUR CONTACT INFO IN THE ABOVE LINE // (at least a valid email address) // // 2. PLEASE TRY TO USE UTF-8 FOR ENCODING; // (if this is not possible, please include a comment // that states what encoding is necessary.) { "Bold": "Полужирный", "Italic": "Наклонный", "Underline": "Подчеркнутый", "Strikethrough": "Перечеркнутый", "Subscript": "Нижний индекс", "Superscript": "Верхний индекс", "Justify Left": "По левому краю", "Justify Center": "По центру", "Justify Right": "По правому краю", "Justify Full": "По ширине", "Ordered List": "Нумерованный список", "Bulleted List": "Маркированный список", "Decrease Indent": "Уменьшить отступ", "Increase Indent": "Увеличить отступ", "Font Color": "Цвет шрифта", "Background Color": "Цвет фона", "Horizontal Rule": "Горизонтальный разделитель", "Insert Web Link": "Вставить гиперссылку", "Insert/Modify Image": "Вставить изображение", "Insert Table": "Вставить таблицу", "Toggle HTML Source": "Показать Html-код", "Enlarge Editor": "Увеличить редактор", "About this editor": "О редакторе", "Help using editor": "Помощь", "Current style": "Текущий стиль", "Undoes your last action": "Отменить", "Redoes your last action": "Повторить", "Cut selection": "Вырезать", "Copy selection": "Копировать", "Paste from clipboard": "Вставить", "Direction left to right": "Направление слева направо", "Direction right to left": "Направление справа налево", "Remove formatting": "Убрать форматирование", "Select all": "Выделить все", "Print document": "Печать", "Clear MSOffice tags": "Удалить разметку MSOffice", "Clear Inline Font Specifications": "Удалить непосредственное задание шрифтов", "Would you like to clear font typefaces?": "Удалить типы шрифтов?", "Would you like to clear font sizes?": "Удалить размеры шрифтов ?", "Would you like to clear font colours?": "Удалить цвета шрифтов ?", "Split Block": "Разделить блок", "Toggle Borders": "Включить/выключить отображение границ", "Save as": "Сохранить как", "Insert/Overwrite": "Вставка/замена", "— format —": "— форматирование —", "Heading 1": "Заголовок 1", "Heading 2": "Заголовок 2", "Heading 3": "Заголовок 3", "Heading 4": "Заголовок 4", "Heading 5": "Заголовок 5", "Heading 6": "Заголовок 6", "Normal": "Обычный текст", "Address": "Адрес", "Formatted": "Отформатированный текст", "— font —": "— шрифт —", "— size —": "— размер —", // Диалоги "OK": "OK", "Cancel": "Отмена", "Path": "Путь", "You are in TEXT MODE. Use the [<>] button to switch back to WYSIWYG.": "Вы в режиме отображения Html-кода. нажмите кнопку [<>], чтобы переключиться в визуальный режим.", "The Paste button does not work in Mozilla based web browsers (technical security reasons). Press CTRL-V on your keyboard to paste directly.": "Кнопка Вставить не работает в браузерах на основе Mozilla (по техническим причинам, связанным с безопасностью). Нажмите Ctrl-V на клавиатуре, чтобы вставить.", "Your Document is not well formed. Check JavaScript console for details.": "Ваш документ неправильно сформирован. Посмотрите Консоль JavaScript, чтобы узнать подробности.", "Alignment:": "Выравнивание", "Not set": "Не установлено", "Left": "По левому краю", "Right": "По правому краю", "Texttop": "По верхней границе текста", "Absmiddle": "По середине текста", "Baseline": "По нижней границе текста", "Absbottom": "По нижней границе", "Bottom": "По нижнему краю", "Middle": "Посредине", "Top": "По верхнему краю", "Layout": "Расположение", "Spacing": "Поля", "Horizontal:": "По горизонтали", "Horizontal padding": "Горизонтальные поля", "Vertical:": "По вертикали", "Vertical padding": "Вертикальные поля", "Border thickness:": "Толщина рамки", "Leave empty for no border": "Оставьте пустым, чтобы убрать рамку", //Insert Link "Insert/Modify Link": "Вставка/изменение ссылки", "None (use implicit)": "По умолчанию", "New window (_blank)": "Новое окно (_blank)", "Same frame (_self)": "То же окно (_self)", "Top frame (_top)": "Родительское окно (_top)", "Other": "Другое", "Target:": "Открывать в окне:", "Title (tooltip):": "Всплывающая подсказка", "URL:": "URL:", "You must enter the URL where this link points to": "Вы должны указать URL, на который будет указывать ссылка", "You need to select some text before creating a link": "Вы должны выделить текст, который будет преобразован в ссылку", // Insert Table "Insert Table": "Вставка таблицы", "Rows:": "Строки", "Number of rows": "Количество строк", "Cols:": "Столбцы", "Number of columns": "Количество столбцов", "Width:": "Ширина", "Width of the table": "Ширина таблицы", "Percent": "проценты", "Pixels": "пикселы", "Em": "em", "Width unit": "Единицы измерения", "Fixed width columns": "Столбцы фиксированной ширины", "Positioning of this table": "Расположение таблицы", "Cell spacing:": "Расстояние между ячейками", "Space between adjacent cells": "Расстояние между соседними ячейками", "Cell padding:": "Поля в ячейках", "Space between content and border in cell": "Расстояние между границей ячейки и текстом", "You must enter a number of rows": "Вы должны ввести количество строк", "You must enter a number of columns": "Вы должны ввести количество столбцов", // Insert Image "Insert Image": "Вставка изображения", "Image URL:": "URL изображения", "Enter the image URL here": "Вставьте адрес изображения", "Preview": "Предварительный просмотр", "Preview the image in a new window": "Предварительный просмотр в отдельном окне", "Alternate text:": "Альтернативный текст", "For browsers that don't support images": "Для браузеров, которые не отображают картинки", "Positioning of this image": "Расположение изображения", "Image Preview:": "Предварительный просмотр", "You must enter the URL": "Вы должны ввести URL", // Editor Help "Xinha Help": "Помощь", "Editor Help": "Помощь", "Keyboard shortcuts": "Горячие клавиши", "The editor provides the following key combinations:": "Редактор поддерживает следующие комбинации клавиш:", "ENTER": "ENTER", "new paragraph": "новый абзац", "SHIFT-ENTER": "SHIFT+ENTER", "insert linebreak": "перенос строки", "Set format to paragraph": "Отформатировать абзац", "Clean content pasted from Word": "Очистить текст, вставленный из Word", "Headings": "Заголовки", "Close": "Закрыть", // Loading messages "Loading in progress. Please wait !": "Загрузка... Пожалуйста, подождите.", "Constructing main object": "Создание главного объекта", "Constructing object": "Создание объекта", "Register panel right": "Регистрация правой панели", "Register panel left": "Регистрация левой панели", "Register panel top": "Регистрация верхней панели", "Register panel bottom": "Регистрация нижней панели", "Create Toolbar": "Создание панели инструментов", "Create StatusBar": "Создание панели состояния", "Generate Xinha object": "Создание объекта Xinha", "Init editor size": "Инициализация размера редактора", "Init IFrame": "инициализация iframe", "Register plugin $plugin": "Регистрация $plugin" }; file/xinha/lang/da.js0100664000567100000120000000175710754361754014460 0ustar jcameronwheel// LANG: "da", ENCODING: UTF-8 // Author: rene, { "Bold": "Fed", "Italic": "Kursiv", "Underline": "Understregning", "Strikethrough": "Overstregning ", "Subscript": "Sænket skrift", "Superscript": "Hævet skrift", "Justify Left": "Venstrejuster", "Justify Center": "Centrer", "Justify Right": "Højrejuster", "Justify Full": "Lige margener", "Ordered List": "Opstilling med tal", "Bulleted List": "Opstilling med punkttegn", "Decrease Indent": "Formindsk indrykning", "Increase Indent": "Forøg indrykning", "Font Color": "Skriftfarve", "Background Color": "Baggrundsfarve", "Horizontal Rule": "Horisontal linie", "Insert Web Link": "Indsæt hyperlink", "Insert/Modify Image": "Indsæt billede", "Insert Table": "Indsæt tabel", "Toggle HTML Source": "HTML visning", "Enlarge Editor": "Vis editor i popup", "About this editor": "Om htmlarea", "Help using editor": "Hjælp", "Current style": "Anvendt stil" } file/xinha/lang/nb.js0100664000567100000120000000705010754361754014463 0ustar jcameronwheel// I18N constants // LANG: "nb", ENCODING: UTF-8 // - translated by ses // Additional translations by Håvard Wigtil // Additional translations by Kim Steinhaug { "Bold": "Fet", "Italic": "Kursiv", "Underline": "Understreket", "Strikethrough": "Gjennomstreket", "Subscript": "Nedsenket", "Superscript": "Opphøyet", "Justify Left": "Venstrejuster", "Justify Center": "Midtjuster", "Justify Right": "Høyrejuster", "Justify Full": "Blokkjuster", "Ordered List": "Nummerert liste", "Bulleted List": "Punktliste", "Decrease Indent": "Reduser innrykk", "Increase Indent": "Øke innrykk", "Font Color": "Tekstfarge", "Background Color": "Bakgrundsfarge", "Horizontal Rule": "Vannrett linje", "Insert Web Link": "Lag lenke", "Insert/Modify Image": "Sett inn bilde", "Insert Table": "Sett inn tabell", "Toggle HTML Source": "Vis kildekode", "Enlarge Editor": "Vis i eget vindu", "About this editor": "Om denne editor", "Help using editor": "Hjelp", "Current style": "Nåværende stil", "Undoes your last action": "Angrer siste redigering", "Redoes your last action": "Gjør om siste angring", "Cut selection": "Klipp ut område", "Copy selection": "Kopier område", "Save as": "Lagre som", "Paste from clipboard": "Lim inn", "Remove formatting": "Fjern formattering", "Direction left to right": "Fra venstre mot høyre", "Direction right to left": "Fra høyre mot venstre", "Insert/Overwrite": "Sett inn/Overskriv", "OK": "OK", "Cancel": "Avbryt", "Path": "Tekstvelger", "You are in TEXT MODE. Use the [<>] button to switch back to WYSIWYG.": "Du er i tekstmodus Klikk på [<>] for å gå tilbake til WYSIWIG.", "The full screen mode is known to cause problems with Internet Explorer, due to browser bugs that we weren": "Visning i eget vindu har kjente problemer med Internet Explorer, på grunn av problemer med denne nettleseren. Mulige problemer er et uryddig skjermbilde, manglende editorfunksjoner og/eller at nettleseren crasher. Hvis du bruker Windows 95 eller Windows 98 er det også muligheter for at Windows will crashe.\n\nTrykk ", "Cancel": "Avbryt", "Insert/Modify Link": "Rediger lenke", "New window (_blank)": "Eget vindu (_blank)", "None (use implicit)": "Ingen (bruk standardinnstilling)", "Other": "Annen", "Same frame (_self)": "Samme ramme (_self)", "Target:": "Mål:", "Title (tooltip):": "Tittel (tooltip):", "Top frame (_top)": "Toppramme (_top)", "URL:": "Adresse:", "You must enter the URL where this link points to": "Du må skrive inn en adresse som denne lenken skal peke til", "Clear Inline Font Specifications": "Fjerne inline font spesifikasjoner", "Would you like to clear font typefaces?": "Ønsker du å fjerne skrifttyper", "Would you like to clear font sizes?": "Ønsker du å fjerne skrift størrelser", "Would you like to clear font colours?": "Ønsker du å fjerne farger på skriften", "Print document": "Skriv ut dokumentet", "Split Block": "Seperasjonsblokk", "Toggle Borders": "Skru av/på hjelpelinjer på tabeller", "Select all": "Merk alt", // Loading messages "Loading in progress. Please wait !": "WYSIWYG laster, vennligst vent!", "Constructing main object": "Vennligst vent", "Create Toolbar": "Lag verktøylinje", "Register panel right": "Registrer høyrepanel", "Register panel left": "Registrer venstrepanel", "Register panel top": "Registrer toppanel", "Register panel bottom": "Registrer bunnpanel" }; file/xinha/lang/cz.js0100664000567100000120000000332010754361754014474 0ustar jcameronwheel// I18N constants // LANG: "cz", ENCODING: UTF-8 // Author: Jiri Löw, // FOR TRANSLATORS: // // 1. PLEASE PUT YOUR CONTACT INFO IN THE ABOVE LINE // (at least a valid email address) // // 2. PLEASE TRY TO USE UTF-8 FOR ENCODING; // (if this is not possible, please include a comment // that states what encoding is necessary.) { "Bold": "Tučně", "Italic": "Kurzíva", "Underline": "Podtržení", "Strikethrough": "Přeškrtnutí", "Subscript": "Dolní index", "Superscript": "Horní index", "Justify Left": "Zarovnat doleva", "Justify Center": "Na střed", "Justify Right": "Zarovnat doprava", "Justify Full": "Zarovnat do stran", "Ordered List": "Seznam", "Bulleted List": "Odrážky", "Decrease Indent": "Předsadit", "Increase Indent": "Odsadit", "Font Color": "Barva písma", "Background Color": "Barva pozadí", "Horizontal Rule": "Vodorovná čára", "Insert Web Link": "Vložit odkaz", "Insert/Modify Image": "Vložit obrázek", "Insert Table": "Vložit tabulku", "Toggle HTML Source": "Přepnout HTML", "Enlarge Editor": "Nové okno editoru", "About this editor": "O této aplikaci", "Help using editor": "Nápověda aplikace", "Current style": "Zvolený styl", "Undoes your last action": "Vrátí poslední akci", "Redoes your last action": "Opakuje poslední akci", "Cut selection": "Vyjmout", "Copy selection": "Kopírovat", "Paste from clipboard": "Vložit", "OK": "OK", "Cancel": "Zrušit", "Path": "Cesta", "You are in TEXT MODE. Use the [<>] button to switch back to WYSIWYG.": "Jste v TEXTOVÉM REŽIMU. Použijte tlačítko [<>] pro přepnutí do WYSIWIG." } file/xinha/lang/fr.js0100664000567100000120000001630110754361754014472 0ustar jcameronwheel// I18N constants // LANG: "fr", ENCODING: UTF-8 { "Bold": "Gras", "Italic": "Italique", "Underline": "Souligné", "Strikethrough": "Barré", "Subscript": "Indice", "Superscript": "Exposant", "Justify Left": "Aligner à gauche", "Justify Center": "Centrer", "Justify Right": "Aligner à droite", "Justify Full": "Justifier", "Ordered List": "Liste numérotée", "Bulleted List": "Liste à puces", "Decrease Indent": "Diminuer le retrait", "Increase Indent": "Augmenter le retrait", "Font Color": "Couleur de police", "Background Color": "Surlignage", "Horizontal Rule": "Ligne horizontale", "Insert Web Link": "Insérer un lien", "Insert/Modify Image": "Insérer / Modifier une image", "Insert Table": "Insérer un tableau", "Toggle HTML Source": "Afficher / Masquer code source", "Enlarge Editor": "Agrandir l'éditeur", "About this editor": "A propos", "Help using editor": "Aide", "Current style": "Style courant", "Undoes your last action": "Annuler la dernière action", "Redoes your last action": "Répéter la dernière action", "Cut selection": "Couper la sélection", "Copy selection": "Copier la sélection", "Paste from clipboard": "Coller depuis le presse-papier", "Direction left to right": "Direction de gauche à droite", "Direction right to left": "Direction de droite à gauche", "Remove formatting": "Supprimer mise en forme", "Select all": "Tout sélectionner", "Print document": "Imprimer document", "Clear MSOffice tags": "Supprimer tags MSOffice", "Clear Inline Font Specifications": "Supprimer paramètres inline de la police", "Would you like to clear font typefaces?": "Voulez-vous supprimer les types ?", "Would you like to clear font sizes?": "Voulez-vous supprimer les tailles ?", "Would you like to clear font colours?": "Voulez-vous supprimer les couleurs ?", "Split Block": "Séparer les blocs", "Toggle Borders": "Afficher / Masquer les bordures", "Save as": "Enregistrer sous", "Insert/Overwrite": "Insertion / Remplacement", "— format —": "— Format —", "Heading 1": "Titre 1", "Heading 2": "Titre 2", "Heading 3": "Titre 3", "Heading 4": "Titre 4", "Heading 5": "Titre 5", "Heading 6": "Titre 6", "Normal": "Normal", "Address": "Adresse", "Formatted": "Formaté", //dialogs "OK": "OK", "Cancel": "Annuler", "Path": "Chemin", "You are in TEXT MODE. Use the [<>] button to switch back to WYSIWYG.": "Vous êtes en MODE TEXTE. Appuyez sur le bouton [<>] pour retourner au mode WYSIWYG.", "The Paste button does not work in Mozilla based web browsers (technical security reasons). Press CTRL-V on your keyboard to paste directly.": "Le bouton Coller ne fonctionne pas sur les navigateurs basés sur Mozilla (pour des raisons de sécurité). Pressez CTRL-V au clavier pour coller directement.", "Your Document is not well formed. Check JavaScript console for details.": "Le document est mal formé. Vérifiez la console JavaScript pour plus de détails.", "Alignment:": "Alignement", "Not set": "Indéfini", "Left": "Gauche", "Right": "Droite", "Texttop": "Texttop", "Absmiddle": "Absmiddle", "Baseline": "Baseline", "Absbottom": "Absbottom", "Bottom": "Bas", "Middle": "Milieu", "Top": "Haut", "Layout": "Mise en page", "Spacing": "Espacement", "Horizontal:": "Horizontal", "Horizontal padding": "Marge horizontale interne", "Vertical:": "Vertical", "Vertical padding": "Marge verticale interne", "Border thickness:": "Epaisseur de bordure", "Leave empty for no border": "Laisser vide pour pas de bordure", //Insert Link "Insert/Modify Link": "Insérer / Modifier un lien", "None (use implicit)": "Aucune (implicite)", "New window (_blank)": "Nouvelle fenêtre (_blank)", "Same frame (_self)": "Même frame (_self)", "Top frame (_top)": "Frame principale (_top)", "Other": "Autre", "Target:": "Cible", "Title (tooltip):": "Texte alternatif", "URL:": "URL:", "You must enter the URL where this link points to": "Vous devez entrer l'URL de ce lien", "You need to select some text before creating a link": "Vous devez sélectionner du texte avant de créer un lien", // Insert Table "Insert Table": "Insérer un tableau", "Rows:": "Lignes", "Number of rows": "Nombre de lignes", "Cols:": "Colonnes", "Number of columns": "Nombre de colonnes", "Width:": "Largeur", "Width of the table": "Largeur du tableau", "Percent": "Pourcent", "Pixels": "Pixels", "Em": "Em", "Width unit": "Unités de largeur", "Fixed width columns": "Colonnes à taille fixe", "Positioning of this table": "Position du tableau", "Cell spacing:": "Espacement", "Space between adjacent cells": "Espace entre les cellules adjacentes", "Cell padding:": "Marge interne", "Space between content and border in cell": "Espace entre le contenu et la bordure d'une cellule", "You must enter a number of rows": "Vous devez entrer le nombre de lignes", "You must enter a number of columns": "Vous devez entrer le nombre de colonnes", // Insert Image "Insert Image": "Insérer une image", "Image URL:": "URL image", "Enter the image URL here": "Entrer l'URL de l'image ici", "Preview": "Prévisualiser", "Preview the image in a new window": "Prévisualiser l'image dans une nouvelle fenêtre", "Alternate text:": "Texte alternatif", "For browsers that don't support images": "Pour les navigateurs qui ne supportent pas les images", "Positioning of this image": "Position de l'image", "Image Preview:": "Prévisualisation", "You must enter the URL": "Vous devez entrer l'URL", // toolbar "button_bold": "fr/bold.gif", "button_underline": "fr/underline.gif", "button_strikethrough": "fr/strikethrough.gif", // Editor Help "Xinha Help": "Aide Xinha", "Editor Help": "Aide de l'éditeur", "Keyboard shortcuts": "Raccourcis clavier", "The editor provides the following key combinations:": "L'éditeur fournit les combinaisons de touches suivantes :", "ENTER": "ENTREE", "new paragraph": "Nouveau paragraphe", "SHIFT-ENTER": "SHIFT+ENTREE", "insert linebreak": "Insère un saut de ligne", "Set format to paragraph": "Applique le format paragraphe", "Clean content pasted from Word": "Nettoyage du contenu copié depuis Word", "Headings": "Titres", "Close": "Fermer", // Loading messages "Loading in progress. Please wait !": "Chargement en cours. Veuillez patienter !", "Constructing main object": "Construction de l'objet principal", "Constructing object": "Construction de l'objet", "Register panel right": "Enregistrement du panneau droit", "Register panel left": "Enregistrement du panneau gauche", "Register panel top": "Enregistrement du panneau supérieur", "Register panel bottom": "Enregistrement du panneau inférieur", "Create Toolbar": "Construction de la barre d'icones", "Create StatusBar": "Construction de la barre de status", "Generate Xinha object": "Génération de l'objet Xinha", "Init editor size": "Initialisation de la taille d'édition", "Init IFrame": "Initialisation de l'iframe", "Register plugin $plugin": "Enregistrement du plugin $plugin" };file/xinha/lang/he.js0100664000567100000120000000626410754361754014466 0ustar jcameronwheel// I18N constants // LANG: "he", ENCODING: UTF-8 // Author: Liron Newman, http://www.eesh.net, // FOR TRANSLATORS: // // 1. PLEASE PUT YOUR CONTACT INFO IN THE ABOVE LINE // (at least a valid email address) // // 2. PLEASE TRY TO USE UTF-8 FOR ENCODING; // (if this is not possible, please include a comment // that states what encoding is necessary.) { "Bold": "מודגש", "Italic": "נטוי", "Underline": "קו תחתי", "Strikethrough": "קו אמצע", "Subscript": "כתב עילי", "Superscript": "כתב תחתי", "Justify Left": " ישור לשמאל", "Justify Center": "ישור למרכז", "Justify Right": "ישור לימין", "Justify Full": "ישור לשורה מלאה", "Ordered List": "רשימה ממוספרת", "Bulleted List": "רשימה לא ממוספרת", "Decrease Indent": "הקטן כניסה", "Increase Indent": "הגדל כניסה", "Font Color": "צבע גופן", "Background Color": "צבע רקע", "Horizontal Rule": "קו אנכי", "Insert Web Link": "הכנס היפר-קישור", "Insert/Modify Image": "הכנס/שנה תמונה", "Insert Table": "הכנס טבלה", "Toggle HTML Source": "שנה מצב קוד HTML", "Enlarge Editor": "הגדל את העורך", "About this editor": "אודות עורך זה", "Help using editor": "עזרה לשימוש בעורך", "Current style": "סגנון נוכחי", "Undoes your last action": "מבטל את פעולתך האחרונה", "Redoes your last action": "מבצע מחדש את הפעולה האחרונה שביטלת", "Cut selection": "גזור בחירה", "Copy selection": "העתק בחירה", "Paste from clipboard": "הדבק מהלוח", "Direction left to right": "כיוון משמאל לימין", "Direction right to left": "כיוון מימין לשמאל", "OK": "אישור", "Cancel": "ביטול", "Path": "נתיב עיצוב", "You are in TEXT MODE. Use the [<>] button to switch back to WYSIWYG.": "אתה במצב טקסט נקי (קוד). השתמש בכפתור [<>] כדי לחזור למצב WYSIWYG (תצוגת עיצוב).", "The full screen mode is known to cause problems with Internet Explorer, due to browser bugs that we weren": "מצב מסך מלא יוצר בעיות בדפדפן Internet Explorer, עקב באגים בדפדפן לא יכולנו לפתור את זה. את/ה עלול/ה לחוות תצוגת זבל, בעיות בתפקוד העורך ו/או קריסה של הדפדפן. אם המערכת שלך היא Windows 9x סביר להניח שתקבל/י ", "Cancel": "ביטול", "Insert/Modify Link": "הוסף/שנה קישור", "New window (_blank)": "חלון חדש (_blank)", "None (use implicit)": "ללא (השתמש ב-frame הקיים)", "Other": "אחר", "Same frame (_self)": "אותו frame (_self)", "Target:": "יעד:", "Title (tooltip):": "כותרת (tooltip):", "Top frame (_top)": "Frame עליון (_top)", "URL:": "URL:", "You must enter the URL where this link points to": "חובה לכתוב URL שאליו קישור זה מצביע" } file/xinha/lang/ee.js0100664000567100000120000000325010754361754014453 0ustar jcameronwheel// I18N constants // LANG: "ee", ENCODING: UTF-8 // Author: Martin Raie, // FOR TRANSLATORS: // // 1. PLEASE PUT YOUR CONTACT INFO IN THE ABOVE LINE // (at least a valid email address) // // 2. PLEASE TRY TO USE UTF-8 FOR ENCODING; // (if this is not possible, please include a comment // that states what encoding is necessary.) { "Bold": "Paks", "Italic": "Kursiiv", "Underline": "Allakriipsutatud", "Strikethrough": "Läbikriipsutatud", "Subscript": "Allindeks", "Superscript": "Ülaindeks", "Justify Left": "Joonda vasakule", "Justify Center": "Joonda keskele", "Justify Right": "Joonda paremale", "Justify Full": "Rööpjoonda", "Ordered List": "Nummerdus", "Bulleted List": "Täpploend", "Decrease Indent": "Vähenda taanet", "Increase Indent": "Suurenda taanet", "Font Color": "Fondi värv", "Background Color": "Tausta värv", "Horizontal Rule": "Horisontaaljoon", "Insert Web Link": "Lisa viit", "Insert/Modify Image": "Lisa pilt", "Insert Table": "Lisa tabel", "Toggle HTML Source": "HTML/tavaline vaade", "Enlarge Editor": "Suurenda toimeti aken", "About this editor": "Teave toimeti kohta", "Help using editor": "Spikker", "Current style": "Kirjastiil", "Undoes your last action": "Võta tagasi", "Redoes your last action": "Tee uuesti", "Cut selection": "Lõika", "Copy selection": "Kopeeri", "Paste from clipboard": "Kleebi", "OK": "OK", "Cancel": "Loobu", "Path": "Path", "You are in TEXT MODE. Use the [<>] button to switch back to WYSIWYG.": "Sa oled tekstireziimis. Kasuta nuppu [<>] lülitamaks tagasi WYSIWIG reziimi." } file/xinha/release-notes.txt0100664000567100000120000000757710754361754016132 0ustar jcameronwheelXinha - The Community-Built Online HTML Editor For bug reports, forum, and updates go to http://xinha.org Release History Xinha 0.92beta - fixed Ticket #831 stop empty anchors from being removed - Make htmlarea.js just load XinhaCore.js instead of being a copy of it. - fixed Ticket #445 Toggle TableBorder doesn't work if this.fullpage=true or using FullPage plugin - fixed Ticket #551 shape and coord attributes of area element are ignored by IE - fixed Ticket #650 SpellChecker is not compatible with FullPage plugin - fixed Ticket #816 CharacterMap and ListType panel modes make editor jump to top in IE - fixed Ticket #570 change behaviour of justify when an image is selected to make the image float left/right, click the justify button again to undo it - fixed Ticket #891 noscript content got escaped - fixed Ticket #857 Firefox fails to load in fullpage mode when tag in wrong place. - fixed Ticket #841 Spell Checker - Won't return to xinha. - fixed Ticket #914 All buttons stay grey & this.getParentElement is not a function message when not calling Xinha.loadPlugins() in xinha_init function - fixed Ticket #911 Background color does not work in Firefox - fixed Ticket #912 an error is thrown in Mozilla when clicking merge cells button and fewer than 2 cells are selected - fixed Ticket #816 CharacterMap and ListType panel modes make editor jump to top in IE - fixed Ticket #917 getHTMLWrapper in IE renders attributes like _stylist_usedtobe="[object Object]" - fixed Ticket #556 stripBaseHref didn't work without baseHref defined explicitly. - Update InsertPicture plugin Update - fixed Ticket #921 EFM extended file manager - iframe height problem (IE) - Ticket #923 colorPicker face lift & localisation - fixed Ticket #924 EFM + ImageManager re-transforming of url to original image after automatic resize broken - Ticket #900- retain editing position position between modes - fixed Ticket #928 ImageManager fails if (another) Files.php exists in include path - fixed Ticket #935 EFM demo_images php upload allowed: possible security risk - Ticket #939 Japanese langage support - fixed Ticket #3 Horizontal Rule Selection - Plugin ExtendedFileManager: added doc to allowed upload extensions - Plugin PasteText update - Plugin HtmlEntities: default preset iso-8859-1 - fixed Ticket #948 IE: inline styles are not rendered by DOMwalk getHTML() - Plugin HorizontalRule update - Plugin SaveSubmit update - Plugin Linker update - fixed Ticket #823 editor contents was not submitted when using JavaScript form.submit() without prior form.onsubmit() - fixed Ticket #459 all body attributes removed in full page mode in FireFox - _editor_url is now converted to absolute if it is relative. - fixed Ticket #594 IE: insertHTML() inserts HTML outside editor when editor is not focussed - Ticket #954 FullScreen mode can now be called programmatically or on startup with or without button - fixed Ticket #321 FullScreen : select elements show through in IE6 - fixed Ticket #953 Statusbar has ugly white gap at the bottom when switching back from full screen in IE - fixed Ticket #952 FullScreen: scrollbars don't disappear in IE in QuirksMode - fixed Ticket #603 Popop Dialog Height problems - fixed Ticket #955 DOMwalk getHTML outputs empty attribute with value "true" instead of attribute name and some are skipped at all Xinha 0.91beta - changed namespace from HTMLArea to Xinha - the core file is now named XinhaCore.js instead of htmlarea.js, please change your pages accordingly (the htmlarea.js will be removed!) - the color picker script is now loaded on demand to reduce initial loading time Xinha 0.9beta This equals Xinha revision 635 of Jan 11 2007 - All JavaScript files over 2kb have been compressed using the dojo JavaScript compressor - All gifs have been optimized using Trout's GIF Optimizer version 2.3file/xinha/license.txt0100664000567100000120000000313410754361754014767 0ustar jcameronwheelhtmlArea License (based on BSD license) Copyright (c) 2002-2004, interactivetools.com, inc. Copyright (c) 2003-2004 dynarch.com All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1) Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2) Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3) Neither the name of interactivetools.com, inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. file/CbScrollbarCallback.class0100664000567100000120000000024410754361754016330 0ustar jcameronwheel.  moved(LCbScrollbar;I)Vmoving SourceFileCbScrollbar.javaCbScrollbarCallbackjava/lang/Objectfile/upload.cgi0100755000567100000120000000434710754361754013455 0ustar jcameronwheel#!/usr/local/bin/perl # upload.cgi # Upload a file require './file-lib.pl'; $disallowed_buttons{'upload'} && &error($text{'ebutton'}); &popup_header(); &ReadParse(\%getin, "GET"); $upid = $getin{'id'}; &ReadParseMime($upload_max, \&read_parse_mime_callback, [ $upid ]); $realdir = &unmake_chroot($in{'dir'}); if (!$in{'file_filename'}) { print "

$text{'upload_efile'}

\n"; } elsif (!-d $realdir) { print "

$text{'upload_edir'}

\n"; } elsif ($running_as_root && !defined(getpwnam($in{'user'}))) { print "

$text{'upload_euser'}

\n"; } else { $in{'file_filename'} =~ /([^\\\/]+)$/; $path = "$in{'dir'}/$1"; $realpath = "$realdir/$1"; if (-e $realpath) { # File exists .. ask the user if he is sure &switch_acl_uid($running_as_root ? $in{'user'} : undef); $temp = &tempname(); &open_tempfile(TEMP, ">$temp"); if ($dostounix == 1 && $in{'dos'}) { $in{'file'} =~ s/\r\n/\n/g; } &print_tempfile(TEMP, $in{'file'}); &close_tempfile(TEMP); print "

\n"; foreach $i (keys %prein) { print "\n"; } print &ui_hidden("dir", $in{'dir'}); print &ui_hidden("path", $path); print &ui_hidden("temp", $temp); print &ui_hidden("zip", $in{'zip'}); print &ui_hidden("user", $in{'user'}); print "
\n"; print &text('upload_already', "$path"),"

\n"; print "\n"; print "\n"; print "

\n"; } else { # Go ahread and do it! &webmin_log("upload", undef, $path); &switch_acl_uid($running_as_root ? $in{'user'} : undef); if ($access{'ro'} || !&can_access($path)) { print "

",&text('upload_eperm', $path),"

\n"; } elsif (-l $path && !&must_follow($realpath)) { print "

",&text('upload_elink', $path),"

\n"; } elsif (!&open_tempfile(FILE, ">$realpath", 1)) { print "

",&text('upload_ewrite', $path, $!),"

\n"; } else { if ($dostounix == 1 && $in{'dos'}) { $in{'file'} =~ s/\r\n/\n/g; } &print_tempfile(FILE, $in{'file'}); &close_tempfile(FILE); &post_upload($path, $in{'dir'}, $in{'zip'}); } } } &popup_footer(); file/CbScrollbar.class0100664000567100000120000001025510754361754014716 0ustar jcameronwheel. 6s 7t 6u vw 6x vy 6z v{ 6| v} 6~ v 6 v 6 v 6 6 6 6 6  6 6 6 6 6 6 6 6 6 0 0 6  6 6 6 6 6 7  0 6 6 6 VERTICALI ConstantValue HORIZONTALcallbackLCbScrollbarCallback;insideZindentorientvaluelvisiblenumlineinclc1Ljava/awt/Color;lc2lc3hc1hc2hc3bcy1y2x1x2dragarrow1LCbScrollbarArrow;arrow2(ILCbScrollbarCallback;)VCodeLineNumberTable(IIIILCbScrollbarCallback;)V setValues(III)VgetValue()IsetValue(I)V checkValue()Vpaint(Ljava/awt/Graphics;)V arrowClickreshape(IIII)V preferredSize()Ljava/awt/Dimension; minimumSize mouseDown(Ljava/awt/Event;II)Z mouseDragmouseUp SourceFileCbScrollbar.java X\ Xd G9 I HI I JI I KI I LI I MI I NI I OI ]^ C9 >? CbScrollbarArrow X UV WV D9 E9 F9 cd d k 9 9 @A i i P9 Q9 BA R9 S9 hijava/awt/Dimension X jk gb T9  CbScrollbarjava/awt/PanelUtil light_edgebody dark_edge light_edge_hibody_hi dark_edge_hidark_bg setLayout(Ljava/awt/LayoutManager;)V(LCbScrollbar;I)Vadd*(Ljava/awt/Component;)Ljava/awt/Component;repaintsizewidthheightjava/awt/GraphicssetColor(Ljava/awt/Color;)VfillRectdrawLineCbScrollbarCallbackmoved(II)Vmoving!6789:;<9:=>?@ABAC9D9E9F9G9HIJIKILIMINIOIP9Q9R9S9T9UVWVXYZ& *,[  X\Z***** * * *******,**Y*ZW**Y*ZW)**Y*ZW**Y*ZW[>$ 3:%B&G'M(R)Y*l+./1]^Z[+***** ****[:; <=">&?*@_`Z*[BabZ2***[FG H IcdZM-* * ***d***d[MN,OefZ_ ** !=* ">*#*$*$6 * *: * *: ** :+*%+&+%+d'+d'+%+ddd'+ddd'*hd6**h*l`(***`h*l`d)+%+*(d*)*(d&+**%+*(d*('+*(*)d'+**%+d*)dd*('+d*)d*)d'-+d*)dd*(`'+d*)d*)d'*hd6**h*l`+***`h*l`d,+%+*+*,*+dd&+**%+*+*+d'+*+*,d'+**%+*,dd*+d'+*,dd*,d'-+*,dd*+`d'+*,dd*,d'[+STU:V^WpXxYZ[\]_`abcde"f2gBhTihj|klmopqrstuvw%x5yGz[{o|t}~gbZ^.*=*Y`*****-*[)-hiZb*.*)*dd/*dddd/**dd/*dddd/*[" 6G]ajkZ9!*0Yd10Yd1[lkZ*2[mnZ*@*(**t3f*)**3S****(d4*=*+**t3)*,**3****+d4*[2 .3=DXkpz~onZ *** !6* "6*6*(hd6*4dd6**hl%hd6*4dd6**hl*****5***[:&:HK_mqzpnZN"********-[  qrfile/CbScrollbarArrow.class0100664000567100000120000000357510754361754015740 0ustar jcameronwheel.v 6 7 8 9 :; :< = >? >@ >A >B >C >D >E FG FH FI J FK LM N O P Q >R STUVWmodeI scrollbar LCbScrollbar;insideZindentthLjava/lang/Thread;(LCbScrollbar;I)VCodeLineNumberTablepaint(Ljava/awt/Graphics;)V mouseDown(Ljava/awt/Event;II)ZmouseUprun()V SourceFileCbScrollbar.java )3 "# ! XYZ [! \! $%] ^_ `_ a_ b_ c_ d_ e_f gh ij kl &% mj n3java/lang/Thread )o '( p3 q3 rs tujava/lang/ExceptionCbScrollbarArrowjava/awt/Canvasjava/lang/Runnablesize()Ljava/awt/Dimension;java/awt/Dimensionwidthheight CbScrollbarhc1Ljava/awt/Color;lc1hc2lc2hc3lc3bcjava/awt/GraphicssetColor(Ljava/awt/Color;)VfillRect(IIII)V fillPolygon([I[II)VdrawLinerepaint(Ljava/lang/Runnable;)Vstartstop arrowClick(I)Vsleep(J)V  !"#$%&%'()*+3**+*, -.+ *=*>* * * :* * * :* * * :+*+ : :*,lOdOOOdOdO**OlOdOOdOO`*,OdOdOlOdOO/*'OdOOOlOdO+++*+....+*+....,j*D^iq {   $7= F!X"l#~$%/0+?***Y*Z,)* +,10+=*** *,12 3423+T(<**pMd<!,;=>"?45file/ErrorWindow.class0100664000567100000120000000265110754361754015010 0ustar jcameronwheel.o %12 1 $34 567 89 : ; <3 => ? @ <AB $CD 1E 5FG HI $J $KL $M NO NP $QRSTok LCbButton;(Ljava/lang/String;)VCodeLineNumberTableclick (LCbButton;)V SourceFileErrorWindow.java )Ujava/awt/BorderLayout VW BorderPanel )Xjava/util/StringTokenizer )Yjava/awt/GridLayout Z[ )\] ^_java/awt/Label `a )* bcCenter bd GrayPaneljava/awt/FlowLayoutCbButtonOk )eSouth fU gUError h*i jk lm nU ErrorWindow FixedFrameCbButtonCallback()V setLayout(Ljava/awt/LayoutManager;)V(I)V'(Ljava/lang/String;Ljava/lang/String;)V countTokens()I(II)Vjava/awt/Panel hasMoreTokens()Z nextToken()Ljava/lang/String;add*(Ljava/awt/Component;)Ljava/awt/Component;<(Ljava/lang/String;Ljava/awt/Component;)Ljava/awt/Component;'(Ljava/lang/String;LCbButtonCallback;)VpackshowsetTitleUtilbodyLjava/awt/Color;recursiveBackground'(Ljava/awt/Component;Ljava/awt/Color;)Vdispose $%&'()*+**YYMY+ N, Y-  -,Y-W*,WY:Y Y*W*W*** *!",F    # 3:MU^k{-.+!*#, /0file/FileManager.java0100644000567100000120000034363710754361754014527 0ustar jcameronwheelimport java.awt.*; import java.awt.event.*; import java.io.*; import java.applet.*; import java.net.*; import java.util.*; import netscape.javascript.JSObject; // A java filemanager that allows the user to manipulate files on the // Webmin server. Layout is similar to the windows explorer - directory // tree on the left, files on the right, action buttons on the top. public class FileManager extends Applet implements CbButtonCallback, HierarchyCallback, MultiColumnCallback { // top buttons CbButton ret_b, config_b, down_b, edit_b, refresh_b, props_b, copy_b, cut_b, paste_b, delete_b, new_b, upload_b, mkdir_b, makelink_b, rename_b, share_b, mount_b, search_b, acl_b, attr_b, ext_b, preview_b, extract_b, hnew_b; // Directory tree Hierarchy dirs; FileNode root; Hashtable nodemap = new Hashtable(); // File list MultiColumn files; TextField pathname; CbButton history_b; RemoteFile showing_files; RemoteFile showing_list[]; Vector history_list = new Vector(); // Copying and pasting RemoteFile cut_buffer[]; boolean cut_mode; static final String monmap[] = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" }; String accroot[]; String accnoroot[]; Hashtable lang = new Hashtable(); Hashtable stab = new Hashtable(), ntab = new Hashtable(); boolean sambamode; int nfsmode; String trust; String extra; String images; int iconsize; boolean got_filesystems, acl_support, attr_support, ext_support; Hashtable mounts = new Hashtable(); Vector fslist = new Vector(); boolean read_only = false; // Standard font for all text Font fixed; // Font for button labels Font small_fixed; // Full session cookie String session; // Archive parameter String archive; // Chroot directory for tree String chroot; // File attributes that can be edited boolean can_perms, can_users; // Symlimks are automatically followed boolean follow_links; // Can search file contents boolean search_contents; // Use text editor for HTML boolean force_text; // File extensions to consider as HTML String htmlexts[]; public void init() { setLayout(new BorderLayout()); // Create fonts from specified size fixed = make_font("fixed", 12); small_fixed = make_font("small_fixed", 10); Util.setFont(small_fixed); StringTokenizer tok = new StringTokenizer(getParameter("root"), " "); accroot = new String[tok.countTokens()]; for(int i=0; tok.hasMoreTokens(); i++) accroot[i] = tok.nextToken(); if (getParameter("noroot") != null) { tok = new StringTokenizer(getParameter("noroot"), " "); accnoroot = new String[tok.countTokens()]; for(int i=0; tok.hasMoreTokens(); i++) accnoroot[i] = tok.nextToken(); } else { accnoroot = new String[0]; } trust = getParameter("trust"); session = getParameter("session"); extra = getParameter("extra"); if (extra == null) extra = ""; images = getParameter("images"); if (images == null) images = "images"; iconsize = Integer.parseInt(getParameter("iconsize")); archive = getParameter("doarchive"); if (archive == null) archive = "0"; chroot = getParameter("chroot"); if (chroot == null) chroot = "/"; String can_perms_str = getParameter("canperms"); can_perms = can_perms_str == null || !can_perms_str.equals("0"); String can_users_str = getParameter("canusers"); can_users = can_users_str == null || !can_users_str.equals("0"); String search_contents_str = getParameter("contents"); search_contents = search_contents_str == null || !search_contents_str.equals("0"); String force_text_str = getParameter("force_text"); if (force_text_str != null && force_text_str.equals("1")) force_text = true; String htmlexts_str = getParameter("htmlexts"); if (htmlexts_str == null || htmlexts_str.equals("")) htmlexts_str = ".htm .html"; htmlexts = DFSAdminExport.split(htmlexts_str); // download language strings String l[] = get_text("lang.cgi"); if (l.length < 1 || l[0].indexOf('=') < 0) { String err = "Failed to get language list : "+join_array(l); new ErrorWindow(err); throw new Error(err); } for(int i=0; i= 0) lang.put(l[i].substring(0, eq), l[i].substring(eq+1)); } // list samba file shares String s[] = get_text("list_shares.cgi"); if (s[0].equals("1")) { for(int i=1; i 0 || s == 0 && ss.length > 1) { // At least one non-.. file was selected boolean parentsel = false; for(int i=0; i 4) new ErrorWindow(text("edit_enormal")); else if (is_html_filename(f.path) && !force_text) { // Open HTML editor try { JSObject win = JSObject.getWindow(this); String params[] = { f.path, "" }; win.call("htmledit", params); } catch(Exception e) { new ErrorWindow(text("html_efailed", e.getMessage())); } } else { // Open text editor new EditorWindow(f, this); } } else if (b == down_b) { // Force download of the selected file if (f == null) return; download_file(f); } else if (b == preview_b) { // Open preview window for selected file if (f == null) return; if (f.type == RemoteFile.DIR) new ErrorWindow(text("preview_eimage")); else new PreviewWindow(this, f); } else if (b == refresh_b) { // Refesh the selected directory (and thus any subdirs) if (d == null) return; d.refresh(); show_files(d.file); } else if (b == props_b) { // Display the properties window if (f == null) return; new PropertiesWindow(f, this); } else if (b == acl_b) { // Display the ACL window (if filesystem supports them) if (f == null) return; FileSystem filefs = find_filesys(f); if (filefs == null) return; if (filefs.acls) new ACLWindow(this, f); else new ErrorWindow(text("eacl_efs", filefs.mount)); } else if (b == attr_b) { // Display the attributes window (if filesystem supports them) if (f == null) return; FileSystem filefs = find_filesys(f); if (filefs == null) return; if (filefs.attrs) new AttributesWindow(this, f); else new ErrorWindow(text("attr_efs", filefs.mount)); } else if (b == ext_b) { // Display EXT attributes window (if filesystem supports them) if (f == null) return; FileSystem filefs = find_filesys(f); if (filefs == null) return; if (filefs.ext) new EXTWindow(this, f); else new ErrorWindow(text("ext_efs", filefs.mount)); } else if (b == copy_b) { // Copy the selected files if (f == null) return; cut_buffer = ff; cut_mode = false; } else if (b == cut_b) { // Cut the selected file if (f == null) return; cut_buffer = ff; cut_mode = true; } else if (b == paste_b) { // Paste the copied file if (cut_buffer == null) { new ErrorWindow(text("paste_ecopy")); return; } // Check for existing file clashes // XXX // Go through all the files to paste for(int i=0; i 0) { new HistoryWindow(this); } } } boolean is_html_filename(String path) { for(int i=0; i= rl && p.substring(0, rl).equals(roots[r])) can = true; else if (l < rl && roots[r].substring(0, l).equals(p)) can = true; } return can; } // Download some file to the user's browser, if possible void download_file(RemoteFile f) { if (f.type == RemoteFile.DIR && !archive.equals("0")) new DownloadDirWindow(this, f); else if (f.type == RemoteFile.DIR || f.type > 4) new ErrorWindow(text("view_enormal2")); else open_file_window(f, true, 0); } // Returns the object for some directory, or null if not found. RemoteFile find_directory(String p, boolean fill) { boolean can = under_root_dir(p, accroot) && !under_root_dir(p, accnoroot); if (!can) { new ErrorWindow(text("find_eaccess", p)); return null; } FileNode posnode = root; RemoteFile pos = posnode.file; StringTokenizer tok = new StringTokenizer(p, "/"); while(tok.hasMoreTokens()) { String fn = tok.nextToken(); if (fn.equals("")) continue; RemoteFile fl[] = pos.list(); if (fl == null) return null; if (fill) { posnode.open = true; posnode.fill(); } boolean found = false; for(int i=0; i= l+1 && f.path.substring(0, l+1).equals(fs.mount+"/")) || fs.mount.equals("/")) { filefs = fs; } } return filefs; } public boolean action(Event e, Object o) { if (e.target == pathname) { // A new path was entered.. cd to it String p = pathname.getText().trim(); if (p.equals("")) return true; find_directory(p, true); // Add to the history if (!history_list.contains(p)) { history_list.insertElementAt(p, 0); } return true; } return false; } // singleClick // Called on a single click on a list item public void singleClick(MultiColumn list, int num) { } // doubleClick // Called upon double-clicking on a list item public void doubleClick(MultiColumn list, int num) { if (num == 0) { // Go to parent directory if (showing_files.directory != null) { ((FileNode)nodemap.get(showing_files)).open = false; show_files(showing_files.directory); dirs.select((FileNode)nodemap.get(showing_files)); dirs.redraw(); } return; } RemoteFile d = showing_list[num-1]; if (d.type == 0) { // Open this directory FileNode pn = (FileNode)nodemap.get(showing_files); pn.fill(); pn.open = true; FileNode fn = (FileNode)nodemap.get(d); if (show_files(d)) { fn.fill(); fn.open = true; dirs.select(fn); dirs.redraw(); } } else if (d.type <= 4) { // Direct the browser to this file open_file_window(d, list.last_event.shiftDown(), 0); } } // Called when the user clicks on a column heading so that it can // be sorted. public void headingClicked(MultiColumn list, int col) { if (col == 0) return; // ignore click on icon column? if (col == list.sortcol) { list.sortingArrow(col, list.sortdir == 2 ? 1 : 2); } else { list.sortingArrow(col, 1); } // Re-show the list in the new order, but with the same files selected int ss[] = files.allSelected(); RemoteFile ssf[] = new RemoteFile[ss.length]; for(int i=0; i 0) { new ErrorWindow(text("eopen", l[0])); return; } // Open for real if (download) { getAppletContext().showDocument( new URL(getDocumentBase(), urlstr)); } else { getAppletContext().showDocument( new URL(getDocumentBase(), urlstr), "show"); } } catch(Exception e) { } } static String urlize(String s) { StringBuffer rv = new StringBuffer(); for(int i=0; i= 128) rv.append("%"+Integer.toString(c, 16)); else rv.append(c); } return rv.toString(); } static String un_urlize(String s) { StringBuffer rv = new StringBuffer(); for(int i=0; i= 0) { rv = rv.substring(0, idx)+ ns+rv.substring(idx+os.length()); pos = idx+ns.length()+1; } return rv; } } // A node in the directory tree class FileNode extends HierarchyNode { FileManager parent; RemoteFile file; boolean known; FileNode(RemoteFile file) { this.file = file; parent = file.parent; setimage(); ch = new Vector(); text = file.name; parent.nodemap.put(file, this); } // Create the nodes for subdirectories void fill() { if (!known) { RemoteFile l[] = file.list(); if (l == null) return; ch.removeAllElements(); for(int i=0; i 0) { ch.insertElementAt(n, i); break; } } } void setimage() { im = parent.get_image(file.shared() && file.mounted() ? "smdir.gif" : file.shared() && file.mountpoint() ? "sudir.gif" : file.shared() ? "sdir.gif" : file.mounted() ? "mdir.gif" : file.mountpoint() ? "udir.gif" : "dir.gif"); } // Forces a re-load from the server void refresh() { known = false; file.list = null; fill(); } } class RemoteFile { static final int DIR = 0; static final int TEXT = 1; static final int IMAGE = 2; static final int BINARY = 3; static final int UNKNOWN = 4; static final int SYMLINK = 5; static final int DEVICE = 6; static final int PIPE = 7; static final String[] tmap = { "dir.gif", "text.gif", "image.gif", "binary.gif", "unknown.gif", "symlink.gif", "device.gif", "pipe.gif" }; FileManager parent; String path, name; int type; String user, group; long size; int perms; long modified; String linkto; RemoteFile list[]; RemoteFile directory; // Parse a line of text to a file object RemoteFile(FileManager parent, String line, RemoteFile d) { this.parent = parent; StringTokenizer tok = new StringTokenizer(line, "\t"); if (tok.countTokens() < 7) { String err = "Invalid file line : "+line; new ErrorWindow(err); throw new Error(err); } path = tok.nextToken(); path = parent.replace_str(path, "\\t", "\t"); path = parent.replace_str(path, "\\\\", "\\"); type = Integer.parseInt(tok.nextToken()); user = tok.nextToken(); group = tok.nextToken(); size = Long.parseLong(tok.nextToken()); perms = Integer.parseInt(tok.nextToken()); modified = Long.parseLong(tok.nextToken())*1000; if (type == 5) linkto = tok.nextToken(); directory = d; if (path.equals("/")) name = "/"; else name = path.substring(path.lastIndexOf('/')+1); } // Create a new, empty file object RemoteFile() { } // Returns a list of files in this directory RemoteFile[] list() { if (list == null) { String l[] = parent.get_text("list.cgi?dir="+ parent.urlize(path)); if (l[0].length() > 0) { //list = new RemoteFile[0]; // Error reading the remote directory! new ErrorWindow(parent.text("list_edir", path, l[0])); list = null; } else { list = new RemoteFile[l.length-3]; for(int i=3; i 0 && offset == 0) { nlist[i] = f; offset++; } nlist[i+offset] = list[i]; } if (offset == 0) nlist[list.length] = f; list = nlist; } void delete(RemoteFile f) { RemoteFile nlist[] = new RemoteFile[list.length-1]; for(int i=0,j=0; i= 0) { // Length is known buf = new byte[uc.getContentLength()]; int got = 0; while(got < buf.length) got += is.read(buf, got, buf.length-got); } else { // Length is unknown .. read till the end buf = new byte[0]; while(true) { byte data[] = new byte[16384]; int got; try { got = is.read(data); } catch(EOFException ex) { break; } if (got <= 0) break; byte nbuf[] = new byte[buf.length + got]; System.arraycopy(buf, 0, nbuf, 0, buf.length); System.arraycopy(data, 0, nbuf, buf.length, got); buf = nbuf; } } String s = new String(buf, 0); if (s.indexOf("\r\n") != -1) { dosmode.setState(true); s = FileManager.replace_str(s, "\r\n", "\n"); } edit.setText(s); is.close(); file.size = buf.length; } catch(Exception e) { e.printStackTrace(); } } // Creating a new file EditorWindow(String f, FileManager p) { super(800, 600); filemgr = p; makeUI(true); setTitle(filemgr.text("edit_title2")); name.setText(f.equals("/") ? f : f+"/"); name.select(name.getText().length(), name.getText().length()); } void makeUI(boolean add_name) { setLayout(new BorderLayout()); if (add_name) { Panel np = new Panel(); np.setLayout(new BorderLayout()); np.add("West", new Label(filemgr.text("edit_filename"))); np.add("Center", name = new TextField()); name.setFont(filemgr.fixed); add("North", np); } add("Center", edit = new TextArea(20, 80)); edit.setFont(filemgr.fixed); Panel bot = new Panel(); bot.setLayout(new FlowLayout(FlowLayout.RIGHT)); bot.add(dosmode = new Checkbox("Windows newlines")); bot.add(goto_b = new CbButton(filemgr.get_image("goto.gif"), filemgr.text("edit_goto"), CbButton.LEFT, this)); bot.add(find_b = new CbButton(filemgr.get_image("find.gif"), filemgr.text("edit_find"), CbButton.LEFT, this)); bot.add(new Label(" ")); bot.add(save_b = new CbButton(filemgr.get_image("save.gif"), filemgr.text("save"), CbButton.LEFT, this)); bot.add(saveclose_b = new CbButton(filemgr.get_image("save.gif"), filemgr.text("edit_saveclose"), CbButton.LEFT, this)); bot.add(cancel_b = new CbButton(filemgr.get_image("cancel.gif"), filemgr.text("close"), CbButton.LEFT, this)); add("South", bot); Util.recursiveBody(this); pack(); show(); } public void click(CbButton b) { if (b == save_b || b == saveclose_b) { RemoteFile par = null, already = null; String save_path; if (file == null) { // Locate the filemgr directory save_path = filemgr.trim_path(name.getText()); int sl = save_path.lastIndexOf('/'); par = filemgr.find_directory( save_path.substring(0, sl), false); if (par == null) return; already = par.find(save_path.substring(sl+1)); if (already != null && (already.type == 0 || already.type == 5)) { new ErrorWindow( filemgr.text("edit_eover", save_path)); return; } } else save_path = file.path; // Save the file back again String s = edit.getText(), line; s = FileManager.replace_str(s, "\r\n", "\n"); try { if (dosmode.getState()) { // Convert to DOS newlines s = FileManager.replace_str(s, "\n", "\r\n"); } URL u = new URL(filemgr.getDocumentBase(), "save.cgi"+filemgr.urlize(save_path)+ "?rand="+System.currentTimeMillis()+ "&trust="+filemgr.trust+ "&length="+s.length()+ filemgr.extra); URLConnection uc = u.openConnection(); uc.setRequestProperty("Content-type", "text/plain"); filemgr.set_cookie(uc); uc.setDoOutput(true); OutputStream os = uc.getOutputStream(); byte buf[] = new byte[s.length()]; s.getBytes(0, buf.length, buf, 0); os.write(buf); os.close(); BufferedReader is = new BufferedReader(new InputStreamReader( uc.getInputStream())); String err = is.readLine(); if (err.length() > 0) { new ErrorWindow( filemgr.text("edit_esave", err)); is.close(); return; } line = is.readLine(); is.close(); } catch(Exception e) { e.printStackTrace(); return; } if (file == null) { // Create and insert or replace the file object file = new RemoteFile(filemgr, line, par); if (already != null) { // A file with this name exists already.type = file.type; already.user = file.user; already.group = file.group; already.size = file.size; already.perms = file.perms; already.modified = file.modified; } else { // Add to the list par.add(file); } } else { file.size = s.length(); file.modified = System.currentTimeMillis(); } filemgr.show_files(filemgr.showing_files); if (b == saveclose_b) dispose(); } else if (b == cancel_b) { // Just close dispose(); } else if (b == goto_b) { // Open a dialog asking which line to go to if (goto_window != null) goto_window.toFront(); else goto_window = new GotoWindow(this); } else if (b == find_b) { // Open the search (and replace) dialog if (find_window != null) find_window.toFront(); else find_window = new FindReplaceWindow(this); } } public void dispose() { super.dispose(); if (goto_window != null) goto_window.dispose(); if (find_window != null) find_window.dispose(); } } class GotoWindow extends FixedFrame implements CbButtonCallback { EditorWindow editor; FileManager filemgr; TextField line; CbButton goto_b, cancel_b; GotoWindow(EditorWindow e) { editor = e; filemgr = e.filemgr; setLayout(new BorderLayout()); add("West", new Label(filemgr.text("edit_gotoline"))); add("Center", line = new TextField(10)); line.setFont(filemgr.fixed); Panel bot = new Panel(); bot.setLayout(new FlowLayout(FlowLayout.RIGHT)); bot.add(goto_b = new CbButton(filemgr.get_image("goto.gif"), filemgr.text("edit_goto"), CbButton.LEFT, this)); bot.add(cancel_b = new CbButton(filemgr.get_image("cancel.gif"), filemgr.text("close"), CbButton.LEFT, this)); add("South", bot); Util.recursiveBody(this); pack(); show(); } public void click(CbButton b) { if (b == goto_b) { // Go to the chose line, if it exists int lnum; try { lnum = Integer.parseInt(line.getText()); } catch(Exception e) { return; } String txt = editor.edit.getText(); int c, l = 0; for(c=0; c= 0) { String sel = edittxt.substring(st, en); if (sel.equals(findtxt)) { // Replace the selected editor.edit.setText(edittxt.substring(0, st)+ replace.getText()+ edittxt.substring(en)); editor.edit.select(st, st); return; } } click(find_b); } else if (b == all_b) { // Replace all occurrances of the text in the editor int pos = 0; int len = findtxt.length(); int st = editor.edit.getSelectionStart(), en = editor.edit.getSelectionEnd(); while((pos = edittxt.indexOf(findtxt, pos)) != -1) { edittxt = edittxt.substring(0, pos)+ replace.getText()+ edittxt.substring(pos+len); pos += len; } editor.edit.setText(edittxt); editor.edit.select(st, en); // put back old selection } else if (b == cancel_b) { // Just close the window dispose(); } } public void dispose() { super.dispose(); editor.find_window = null; } } class PropertiesWindow extends FixedFrame implements CbButtonCallback { RemoteFile file; FileManager filemgr; CbButton save_b, cancel_b, size_b; TextField linkto; TextField user, group; Checkbox setuid, setgid; PermissionsPanel user_p, group_p, other_p; Checkbox sticky; Choice rec_mode; TextField octal; TextField bytes, files, dirs; PropertiesWindow(RemoteFile f, FileManager p) { file = f; filemgr = p; // Create UI setTitle(f.path); setLayout(new BorderLayout()); Panel bot = new Panel(); bot.setLayout(new FlowLayout(FlowLayout.RIGHT)); if (file.type == 0) { bot.add(size_b = new CbButton(filemgr.get_image("refresh.gif"), filemgr.text("info_getsize"), CbButton.LEFT, this)); } if (filemgr.can_perms || filemgr.can_users) { bot.add(save_b = new CbButton(filemgr.get_image("save.gif"), filemgr.text("save"), CbButton.LEFT, this)); } bot.add(cancel_b = new CbButton(filemgr.get_image("cancel.gif"), filemgr.text("cancel"), CbButton.LEFT, this)); add("South", bot); Panel mid = new Panel(); mid.setLayout(new BorderLayout()); TabbedPanel tab = null; add("Center", mid); // Create file details section Panel det = new LinedPanel(filemgr.text("info_file")), dl = new Panel(), dr = new Panel(); setup_leftright(det, dl, dr); add_item(filemgr.text("info_path"), new Label(file.path), dl, dr); add_item(filemgr.text("info_type"), new Label(filemgr.text("file_type"+file.type)), dl, dr); add_item(filemgr.text("info_size"), new Label(String.valueOf(file.size)),dl,dr); add_item(filemgr.text("info_mod"), new Label(String.valueOf(new Date(file.modified))), dl, dr); if (file.type == 5) { add_item(filemgr.text("info_link"), linkto = new TextField(file.linkto, 30), dl, dr); linkto.setFont(filemgr.fixed); } mid = add_panel(mid, det); if (filemgr.can_perms) { // Create permissions section Panel per = new LinedPanel(filemgr.text("info_perms")), pl = new Panel(), pr = new Panel(); setup_leftright(per, pl, pr); add_item(filemgr.text("info_user"), user_p = new PermissionsPanel(file, 64, filemgr), pl, pr); add_item(filemgr.text("info_group"), group_p = new PermissionsPanel(file, 8, filemgr), pl, pr); add_item(filemgr.text("info_other"), other_p = new PermissionsPanel(file, 1, filemgr), pl,pr); if (file.type == 0) { add_item(filemgr.text("info_sticky"), sticky = new Checkbox(filemgr.text("info_sticky2")), pl,pr); sticky.setState((file.perms&01000) != 0); } add_item(filemgr.text("info_octal"), octal = new TextField(4), pl, pr); octal.setFont(filemgr.fixed); octal.setEditable(false); mid = add_panel(mid, per); } if (filemgr.can_users) { // Create ownership section Panel own = new LinedPanel(filemgr.text("info_own")), ol = new Panel(), or = new Panel(); setup_leftright(own, ol, or); add_item(filemgr.text("info_user"), user = new TextField(file.user, 10), ol, or); user.setFont(filemgr.fixed); if (file.type != 0) { add_item(filemgr.text("info_setuid"), setuid = new Checkbox(filemgr.text("info_setuid2")), ol, or); setuid.setState((file.perms & 0x800) != 0); } add_item(filemgr.text("info_group"), group = new TextField(file.group, 10), ol, or); group.setFont(filemgr.fixed); if (file.type == 0) add_item(filemgr.text("info_setgid"), setgid = new Checkbox(filemgr.text("info_setgid2")), ol, or); else add_item(filemgr.text("info_setgid"), setgid = new Checkbox(filemgr.text("info_setgid3")), ol, or); setgid.setState((file.perms & 0x400) != 0); mid = add_panel(mid, own); } if (file.type == 0) { // Create directory size section, initially empty Panel szp = new LinedPanel(filemgr.text("info_sizeheader")), sl = new Panel(), sr = new Panel(); setup_leftright(szp, sl, sr); add_item(filemgr.text("info_bytes"), bytes = new TextField("", 10), sl, sr); bytes.setFont(filemgr.fixed); bytes.setEditable(false); add_item(filemgr.text("info_files"), files = new TextField("", 10), sl, sr); files.setFont(filemgr.fixed); files.setEditable(false); add_item(filemgr.text("info_dirs"), dirs = new TextField("", 10), sl, sr); dirs.setFont(filemgr.fixed); dirs.setEditable(false); mid = add_panel(mid, szp); } if (file.type == 0 && (filemgr.can_perms || filemgr.can_users)) { // Create recursion section Panel rec = new LinedPanel(filemgr.text("info_apply")); rec.setLayout(new BorderLayout()); rec_mode = new Choice(); for(int i=1; i<=3; i++) rec_mode.addItem(filemgr.text("info_apply"+i)); rec.add("Center", rec_mode); mid = add_panel(mid, rec); } set_octal(); Util.recursiveBody(this); pack(); show(); } Panel add_panel(Panel p, Component c) { p.add("North", c); Panel np = new Panel(); np.setLayout(new BorderLayout()); p.add("Center", np); return np; } public void click(CbButton b) { if (b == save_b) { // Update the file int perms = get_perms(); String user_str = user != null ? user.getText() : null; String group_str = group != null ? group.getText() : null; int rec = 0; if (file.type == 0 && rec_mode != null) rec = rec_mode.getSelectedIndex(); String rv[] = filemgr.get_text( "chmod.cgi?path="+filemgr.urlize(file.path)+ (perms < 0 ? "" : "&perms="+perms)+ (user_str == null ? "" : "&user="+filemgr.urlize(user_str))+ (group_str == null ? "" : "&group="+filemgr.urlize(group_str))+ "&rec="+rec+ (linkto==null ? "" : "&linkto="+filemgr.urlize(linkto.getText()))); if (rv[0].length() > 0) { // Something went wrong new ErrorWindow(filemgr.text("info_efailed", file.path, rv[0])); } else { // Update all changed file objects if (linkto != null) file.linkto = linkto.getText(); else if (rec == 0) update_file(file, perms, false); else if (rec == 1) { // Update files in this directory update_file(file, perms, false); recurse_files(file, perms, false); } else if (rec == 2) { // Update files and subdirs update_file(file, perms, false); recurse_files(file, perms, true); } // Update directory list int os = filemgr.files.selected(); filemgr.show_files(filemgr.showing_files); filemgr.files.select(os); dispose(); } } else if (b == size_b) { // Get the size of the directory recursively String l[] = filemgr.get_text("size.cgi?dir="+ filemgr.urlize(file.path)); if (l[0].length() > 0) { new ErrorWindow(filemgr.text("info_size", l[0])); } StringTokenizer tok = new StringTokenizer(l[1], " "); String bytes_str = tok.nextToken(); files.setText(tok.nextToken()); dirs.setText(tok.nextToken()); bytes.setText(tok.nextToken()+" "+tok.nextToken()); } else { // Just close dispose(); } } void update_file(RemoteFile f, int perms, boolean perms_only) { f.user = user.getText(); f.group = group.getText(); if (perms_only) f.perms = (perms & 0777) | (f.perms & 037777777000); else f.perms = perms; } void recurse_files(RemoteFile f, int perms, boolean do_subs) { if (f.list == null) return; for(int i=0; i 1 ? "delete_mtitle" : ff[0].type == 0 ? "delete_dtitle" : "delete_ftitle")); setLayout(new BorderLayout()); if (ff.length > 1) { add("North", new Label(filemgr.text("delete_mdesc"))); Panel mp = new Panel(); mp.setLayout(new GridLayout(ff.length, 1)); for(int i=0; i 0) { new ErrorWindow(filemgr.text("delete_efailed", file.path, rv[0])); break; } else { // done the deed.. update data structures RemoteFile pf = file.directory; pf.delete(file); if (filemgr.showing_files == pf) { // Need to refresh the list as well.. need_reshow = true; } FileNode node = (FileNode)filemgr.nodemap.get( file); FileNode pnode = (FileNode)filemgr.nodemap.get( pf); if (node != null) { // Take the directory out of the tree.. pnode.ch.removeElement(node); need_redraw = true; } } } if (need_reshow) filemgr.show_files(filemgr.showing_files); if (need_redraw) filemgr.dirs.redraw(); dispose(); } else if (b == cancel_b) dispose(); } } class MkdirWindow extends FixedFrame implements CbButtonCallback { FileManager filemgr; TextField dir; CbButton create_b, cancel_b; MkdirWindow(String d, FileManager p) { filemgr = p; setTitle(filemgr.text("mkdir_title")); setLayout(new BorderLayout()); add("West", new Label(filemgr.text("mkdir_dir"))); add("Center", dir = new TextField(d.equals("/") ? "/" : d+"/", 40)); dir.setFont(filemgr.fixed); dir.select(dir.getText().length(), dir.getText().length()); Panel bot = new Panel(); bot.setLayout(new FlowLayout(FlowLayout.CENTER)); bot.add(create_b = new CbButton(filemgr.get_image("save.gif"), filemgr.text("create"), CbButton.LEFT, this)); bot.add(cancel_b = new CbButton(filemgr.get_image("cancel.gif"), filemgr.text("cancel"), CbButton.LEFT, this)); add("South", bot); Util.recursiveBody(this); pack(); show(); } public void click(CbButton b) { if (b == create_b) { // Find the filemgr directory String path = dir.getText(); path = filemgr.trim_path(path); int sl = path.lastIndexOf('/'); RemoteFile par = filemgr.find_directory( path.substring(0, sl), false); if (par.find(path.substring(sl+1)) != null) { new ErrorWindow(filemgr.text("mkdir_eexists", path)); return; } String rv[] = filemgr.get_text("mkdir.cgi?dir="+ filemgr.urlize(path)); if (rv[0].length() > 0) { new ErrorWindow(filemgr.text("mkdir_efailed", rv[0])); return; } RemoteFile file = new RemoteFile(filemgr, rv[1], par); par.add(file); FileNode parnode = (FileNode)filemgr.nodemap.get(par); if (parnode != null) { // Update the tree parnode.add(new FileNode(file)); filemgr.dirs.redraw(); } filemgr.show_files(filemgr.showing_files); dispose(); } else dispose(); } } class LinkWindow extends FixedFrame implements CbButtonCallback { FileManager filemgr; TextField from, to; CbButton create_b, cancel_b; LinkWindow(String d, FileManager p) { filemgr = p; setLayout(new BorderLayout()); setTitle(filemgr.text("link_title")); Panel l = new Panel(), r = new Panel(); l.setLayout(new GridLayout(0, 1)); l.add(new Label(filemgr.text("link_from"))); l.add(new Label(filemgr.text("link_to"))); r.setLayout(new GridLayout(0, 1)); r.add(from = new TextField(d.equals("/") ? "/" : d+"/", 40)); from.setFont(filemgr.fixed); from.select(from.getText().length(), from.getText().length()); r.add(to = new TextField()); to.setFont(filemgr.fixed); add("West", l); add("Center", r); Panel bot = new Panel(); bot.setLayout(new FlowLayout(FlowLayout.CENTER)); bot.add(create_b = new CbButton(filemgr.get_image("save.gif"), filemgr.text("create"), CbButton.LEFT, this)); bot.add(cancel_b = new CbButton(filemgr.get_image("cancel.gif"), filemgr.text("cancel"), CbButton.LEFT, this)); add("South", bot); Util.recursiveBody(this); pack(); show(); } public void click(CbButton b) { if (b == create_b) { // Check inputs String from_str = from.getText().trim(); if (!from_str.startsWith("/")) { new ErrorWindow(filemgr.text("link_efrom", from_str)); return; } int sl = from_str.lastIndexOf('/'); String par_str = from_str.substring(0, sl), file_str = from_str.substring(sl+1); RemoteFile par = filemgr.find_directory(par_str, false); if (par == null) return; if (par.find(file_str) != null) { new ErrorWindow(filemgr.text("link_eexists", from_str)); return; } // Create the actual link String rv[] = filemgr.get_text("makelink.cgi?from="+ filemgr.urlize(from_str)+"&to="+ filemgr.urlize(to.getText())); if (rv[0].length() > 0) { new ErrorWindow(filemgr.text("link_efailed", rv[0])); return; } RemoteFile file = new RemoteFile(filemgr, rv[1], par); par.add(file); filemgr.show_files(filemgr.showing_files); dispose(); } else if (b == cancel_b) dispose(); } } class RenameWindow extends FixedFrame implements CbButtonCallback { FileManager filemgr; RemoteFile file; TextField oldname, newname; CbButton rename_b, cancel_b; RenameWindow(FileManager p, RemoteFile f) { filemgr = p; file = f; setLayout(new BorderLayout()); setTitle(filemgr.text("rename_title", file.path)); Panel l = new Panel(), r = new Panel(); l.setLayout(new GridLayout(0, 1)); l.add(new Label(filemgr.text("rename_old"))); l.add(new Label(filemgr.text("rename_new"))); r.setLayout(new GridLayout(0, 1)); r.add(oldname = new TextField(file.name, 20)); oldname.setEditable(false); oldname.setFont(filemgr.fixed); r.add(newname = new TextField(file.name, 20)); newname.select(file.name.length(), file.name.length()); newname.setFont(filemgr.fixed); add("West", l); add("Center", r); Panel bot = new Panel(); bot.setLayout(new FlowLayout(FlowLayout.CENTER)); bot.add(rename_b = new CbButton(filemgr.get_image("save.gif"), filemgr.text("rename_ok"), CbButton.LEFT, this)); bot.add(cancel_b = new CbButton(filemgr.get_image("cancel.gif"), filemgr.text("cancel"), CbButton.LEFT, this)); add("South", bot); pack(); show(); Util.recursiveBody(this); } public void click(CbButton b) { if (b == rename_b) { // Work out destination file and directory String newstr = newname.getText().trim(); if (newstr.length() == 0) return; RemoteFile destdir; String newpath; if (newstr.indexOf('/') >= 0) { // Different dir if (newstr.startsWith("/")) { // Some absolute path newpath = newstr; } else { // Relative to this dir newpath = file.directory.path+"/"+newstr; } int sl = newpath.lastIndexOf('/'); String newdir = sl == 0 ? "/" : newpath.substring(0,sl); destdir = filemgr.find_directory(newdir, false); } else { // Same dir destdir = file.directory; int sl = file.path.lastIndexOf('/'); newpath = file.path.substring(0, sl)+"/"+newstr; } // Work out filename only int sl = newpath.lastIndexOf('/'); newstr = newpath.substring(sl+1); // Check for an existing file RemoteFile already = destdir.find(newstr); if (already != null) { new ErrorWindow(filemgr.text("rename_eexists", newstr)); return; } // Rename the real file String rv[] = filemgr.get_text( "rename.cgi?old="+filemgr.urlize(file.path)+ "&new="+filemgr.urlize(newpath)); if (rv[0].length() > 0) { new ErrorWindow(filemgr.text("rename_efailed", rv[0])); return; } // Update data structure file.name = newstr; file.path = newpath; file.directory.delete(file); destdir.list(); destdir.add(file); file.directory = destdir; file.list = null; FileNode parnode = (FileNode)filemgr.nodemap.get(file.directory); FileNode filenode = (FileNode)filemgr.nodemap.get(file); if (parnode != null && filenode != null) { // Need to refresh tree filenode.text = file.name; parnode.ch.removeElement(filenode); parnode.add(filenode); dispose(); filemgr.dirs.redraw(); } filemgr.show_files(filemgr.showing_files); dispose(); } else if (b == cancel_b) dispose(); } } class OverwriteWindow extends FixedFrame implements CbButtonCallback { FileManager filemgr; RemoteFile src, already; TextField newname; CbButton ok, cancel; int idx; boolean mode; OverwriteWindow(FileManager p, RemoteFile a, RemoteFile s, int i) { filemgr = p; src = s; already = a; idx = i; mode = filemgr.cut_mode; setLayout(new BorderLayout()); setTitle(filemgr.text("over_title")); add("North", new MultiLabel(filemgr.text("over_msg", already.path), 30, 0)); add("West", new Label(filemgr.text("over_new"))); add("East", newname = new TextField(a.name, 30)); newname.setFont(filemgr.fixed); Panel bot = new Panel(); bot.setLayout(new FlowLayout(FlowLayout.RIGHT)); bot.add(ok = new CbButton(filemgr.get_image("save.gif"), filemgr.text("over_ok"), CbButton.LEFT, this)); bot.add(cancel = new CbButton(filemgr.get_image("cancel.gif"), filemgr.text("cancel"), CbButton.LEFT, this)); add("South", bot); Util.recursiveBody(this); pack(); show(); } public void click(CbButton b) { if (b == cancel) dispose(); else if (b == ok && newname.getText().length() > 0) { // paste the file, but with a new name RemoteFile ap = already.directory; RemoteFile newalready = ap.find(newname.getText()); if (newalready == src) { new ErrorWindow(filemgr.text("paste_eself")); return; } if (newalready != null && (newalready.type == 0 || newalready.type == 5)) { new ErrorWindow( filemgr.text("paste_eover", newalready.path)); return; } String dpath = (ap.path.equals("/") ? "/" : ap.path+"/")+newname.getText(); RemoteFile nf = filemgr.paste_file(src, already.directory, dpath, newalready, mode); if (filemgr.cut_mode && nf != null) { // Paste from the destination path from now on filemgr.cut_buffer[idx] = nf; } dispose(); } } } class SambaShare { String path; boolean available; boolean writable; int guest; String comment; SambaShare(String l) { StringSplitter tok = new StringSplitter(l, ':'); path = tok.nextToken(); available = tok.nextToken().equals("1"); writable = tok.nextToken().equals("1"); guest = Integer.parseInt(tok.nextToken()); comment = tok.nextToken(); } SambaShare(String p, boolean a, boolean w, int g, String c) { path = p; available = a; writable = w; guest = g; comment = c; } String params() { return "path="+FileManager.urlize(path)+ "&available="+(available ? 1 : 0)+ "&writable="+(writable ? 1 : 0)+ "&guest="+guest+ "&comment="+FileManager.urlize(comment); } } class DFSAdminExport { String path; String desc; String ro, rw, root; DFSAdminExport(String l) { StringSplitter tok = new StringSplitter(l, ':'); path = tok.nextToken(); ro = tok.nextToken(); rw = tok.nextToken(); root = tok.nextToken(); desc = tok.nextToken(); } DFSAdminExport(String p, String d, String ro, String rw, String root) { path = p; desc = d; this.ro = ro; this.rw = rw; this.root = root; } static String[] split(String s) { StringTokenizer stok = new StringTokenizer(s, " "); String rv[] = new String[stok.countTokens()]; for(int i=0; i 1)); add_item(name, p, l, r); TextField t = new TextField(v.equals("-") ? "" : v, 25); t.setFont(filemgr.fixed); add_item("", t, l, r); return t; } Choice squashbox(int s) { Choice rv = new Choice(); rv.addItem(filemgr.text("share_s0")); rv.addItem(filemgr.text("share_s1")); rv.addItem(filemgr.text("share_s2")); rv.select(s); return rv; } Choice robox(boolean r) { Choice rv = new Choice(); rv.addItem(filemgr.text("share_lrw")); rv.addItem(filemgr.text("share_lro")); rv.select(r ? 1 : 0); return rv; } Panel opts_panel(Component ro, Component squash) { Panel p = new Panel(); p.setLayout(new BorderLayout()); p.add("West", ro); p.add("East", squash); return p; } void export_options(LinuxExport e) { int c = 0; for(int i=0; i 0) c++; e.host = new String[c]; e.ro = new boolean[c]; e.squash = new int[c]; for(int i=0,j=0; i 0) { e.host[j] = host[i].getText(); e.ro[j] = lro[i].getSelectedIndex() == 1; e.squash[j] = squash[i].getSelectedIndex(); j++; } } } } class SearchWindow extends FixedFrame implements CbButtonCallback,MultiColumnCallback { TabbedPanel tab; MultiColumn list; CbButton search_b, cancel_b, down_b; FileManager filemgr; TextField dir, match, user, group; Checkbox uany, usel, gany, gsel; Choice type; Checkbox sany, smore, sless; TextField more, less; Checkbox xon, xoff; String types[] = { "", "f", "d", "l", "p" }; TextField cont; RemoteFile results[]; SearchWindow(String d, FileManager p) { filemgr = p; setTitle(filemgr.text("search_title")); // setup UI setLayout(new BorderLayout()); tab = new TabbedPanel(); Panel search = new Panel(); search.setLayout(new BorderLayout()); tab.addItem(filemgr.text("search_crit"), search); Panel l = new Panel(), r = new Panel(); l.setLayout(new GridLayout(0, 1)); r.setLayout(new GridLayout(0, 1)); String cols[] = { "", filemgr.text("right_name"), filemgr.text("right_size") }; float widths[] = { .07f, .78f, .15f }; list = new MultiColumn(cols, this); list.setWidths(widths); list.setDrawLines(false); list.setFont(filemgr.fixed); tab.addItem(filemgr.text("search_list"), list); add_item(filemgr.text("search_dir"), dir = new TextField(d, 30), l, r); dir.setFont(filemgr.fixed); // Filename add_item(filemgr.text("search_match"), match = new TextField(20), l, r); match.setFont(filemgr.fixed); if (filemgr.search_contents) { // File contents add_item(filemgr.text("search_cont"), cont = new TextField(30), l, r); cont.setFont(filemgr.fixed); } // User or group owners if (filemgr.can_users) { Panel up = new Panel(); up.setLayout(new FlowLayout(FlowLayout.LEFT, 1, 1)); CheckboxGroup ug = new CheckboxGroup(); up.add(uany = new Checkbox(filemgr.text("search_any"), ug, true)); up.add(usel = new Checkbox("", ug, false)); up.add(user = new TextField(10)); user.setFont(filemgr.fixed); add_item(filemgr.text("search_user"), up, l, r); Panel gp = new Panel(); gp.setLayout(new FlowLayout(FlowLayout.LEFT, 1, 1)); CheckboxGroup gg = new CheckboxGroup(); gp.add(gany = new Checkbox(filemgr.text("search_any"), gg, true)); gp.add(gsel = new Checkbox("", gg, false)); gp.add(group = new TextField(10)); group.setFont(filemgr.fixed); add_item(filemgr.text("search_group"), gp, l, r); } // File type if (!filemgr.follow_links) { type = new Choice(); for(int i=0; i 0) url += "&type="+types[type.getSelectedIndex()]; if (usel != null && usel.getState()) { String u = user.getText().trim(); if (u.length() == 0) { new ErrorWindow(filemgr.text("search_euser")); return; } url += "&user="+filemgr.urlize(u); } if (gsel != null && gsel.getState()) { String g = group.getText().trim(); if (g.length() == 0) { new ErrorWindow(filemgr.text("search_egroup")); return; } url += "&group="+filemgr.urlize(g); } if (smore.getState()) { String m = more.getText().trim(); try { Integer.parseInt(m); } catch(Exception e) { new ErrorWindow(filemgr.text("search_esize")); return; } url += "&size=%2B"+m+"c"; } else if (sless.getState()) { String l = less.getText().trim(); try { Integer.parseInt(l); } catch(Exception e) { new ErrorWindow(filemgr.text("search_esize")); return; } url += "&size=%2D"+l+"c"; } if (xon != null && xon.getState()) url += "&xdev=1"; if (cont != null && cont.getText().trim().length() > 0) url += "&cont="+filemgr.urlize(cont.getText()); // send off the search setCursor(WAIT_CURSOR); String f[] = filemgr.get_text(url); if (f[0].length() > 0) { new ErrorWindow(f[0]); return; } Object rows[][] = new Object[f.length-1][]; results = new RemoteFile[f.length-1]; for(int i=1; i= 0) { ACLEntry e = (ACLEntry)acllist.elementAt(idx); ACLEditor ed = (ACLEditor)edmap.get(e); if (ed == null) edmap.put(e, new ACLEditor(this, e)); else { ed.toFront(); ed.requestFocus(); } } } public void singleClick(MultiColumn list, int num) { } public void headingClicked(MultiColumn list, int col) { } } class AttributesWindow extends FixedFrame implements CbButtonCallback,MultiColumnCallback { FileManager filemgr; RemoteFile file; Vector attrlist = new Vector(); Hashtable edmap = new Hashtable(); CbButton ok, cancel, add; MultiColumn attrtable; AttributesWindow(FileManager p, RemoteFile f) { super(400, 300); setTitle(p.text("attr_title", f.path)); filemgr = p; file = f; // Get the attributes String a[] = filemgr.get_text( "getattrs.cgi?file="+filemgr.urlize(file.path)); if (a[0].length() != 0) { new ErrorWindow(filemgr.text("attr_eattrs", a[0])); return; } // Create the UI setLayout(new BorderLayout()); String titles[] = { filemgr.text("attr_name"), filemgr.text("attr_value") }; attrtable = new MultiColumn(titles, this); for(int i=1; i= 0) { FileAttribute at = (FileAttribute)attrlist.elementAt(idx); AttributeEditor ed = (AttributeEditor)edmap.get(at); if (ed == null) edmap.put(at, new AttributeEditor(this, at)); else { ed.toFront(); ed.requestFocus(); } } } public void singleClick(MultiColumn list, int num) { } public void headingClicked(MultiColumn list, int col) { } } class FileAttribute { String name; String value; FileAttribute(String l, FileManager f) { int eq = l.indexOf('='); name = f.un_urlize(l.substring(0, eq)); value = f.un_urlize(l.substring(eq+1)); } FileAttribute(String n, String v) { name = n; value = v; } String[] getRow() { return new String[] { name, value }; } } class AttributeEditor extends FixedFrame implements CbButtonCallback { FileManager filemgr; AttributesWindow attrwin; FileAttribute attr; boolean creating; CbButton ok, del; TextField name; TextArea value; AttributeEditor(AttributesWindow w, FileAttribute a) { attrwin = w; attr = a; filemgr = w.filemgr; creating = false; makeUI(); } AttributeEditor(AttributesWindow w) { attrwin = w; attr = new FileAttribute("", ""); filemgr = w.filemgr; creating = true; makeUI(); } void makeUI() { setTitle(filemgr.text(creating ? "attr_create" : "attr_edit")); setLayout(new BorderLayout()); Panel top = new Panel(); top.setLayout(new GridLayout(1, 2)); top.add(new Label(filemgr.text("attr_name"))); top.add(name = new TextField(attr.name, 20)); name.setFont(filemgr.fixed); add("North", top); Panel mid = new Panel(); mid.setLayout(new GridLayout(1, 2)); mid.add(new Label(filemgr.text("attr_value"))); mid.add(value = new TextArea(attr.value, 5, 20)); add("Center", mid); Panel bot = new Panel(); bot.setLayout(new FlowLayout(FlowLayout.RIGHT)); bot.add(ok = new CbButton(filemgr.get_image("save.gif"), filemgr.text("save"), CbButton.LEFT, this)); if (!creating) bot.add(del = new CbButton(filemgr.get_image("cancel.gif"), filemgr.text("delete"), CbButton.LEFT, this)); add("South", bot); Util.recursiveBody(this); pack(); show(); } public void click(CbButton b) { if (b == ok) { // Update or add the attribute if (name.getText().length() == 0) { new ErrorWindow(filemgr.text("attr_ename")); return; } attr.name = name.getText(); attr.value = value.getText(); if (creating) { // Add to the attribs table attrwin.attrlist.addElement(attr); attrwin.attrtable.addItem(attr.getRow()); } else { // Update the table int idx = attrwin.attrlist.indexOf(attr); attrwin.attrtable.modifyItem(attr.getRow(), idx); } dispose(); } else if (b == del) { // Remove this entry int idx = attrwin.attrlist.indexOf(attr); attrwin.attrlist.removeElementAt(idx); attrwin.attrtable.deleteItem(idx); dispose(); } } public void dispose() { attrwin.edmap.remove(attr); super.dispose(); } } class EXTWindow extends FixedFrame implements CbButtonCallback { FileManager filemgr; RemoteFile file; CbButton ok, cancel; Checkbox cbs[]; String attrs[] = { "A", "a", "c", "d", "i", "s", "S", "u" }; Hashtable attrmap = new Hashtable(); EXTWindow(FileManager p, RemoteFile f) { super(); setTitle(p.text("ext_title", f.path)); filemgr = p; file = f; // Get the attributes String a[] = filemgr.get_text( "getext.cgi?file="+filemgr.urlize(file.path)); if (a[0].length() != 0) { new ErrorWindow(filemgr.text("ext_eattrs", a[0])); return; } for(int i=0; i max || !tok.hasMoreTokens()) { v.addElement(line); line = null; } } setLayout(new GridLayout(v.size(), 1, 0, 0)); for(int i=0; i  ?@AB  C uDEF  GHIJ  KL  MNOP  QRS  TUV  WXYZ  [\]^  _`ab  cdefg  hijk  lmn  opq  rs  t  uvwx y z  {|} ~   ut       zt    =\)>>          ?333333                      F / /       7 6 7 ; 6  6   Q  ;           T         B@    T T T T   T                                         ! " #$ %  &  '( )* +  ,- . /012 3 /4 /5 6  789 :; /< = >? @  A  BCD  EF G H I JK LM N O P Q R LS TUVWX  YZ[ F\]^_` a bc Fd e f ghi j  klmnopq r s t u vw  x  y z {|}~ret_b LCbButton;config_bdown_bedit_b refresh_bprops_bcopy_bcut_bpaste_bdelete_bnew_bupload_bmkdir_b makelink_brename_bshare_bmount_bsearch_bacl_battr_bext_b preview_b extract_bhnew_bdirs LHierarchy;root LFileNode;nodemapLjava/util/Hashtable;files LMultiColumn;pathnameLjava/awt/TextField; history_b showing_files LRemoteFile; showing_list [LRemoteFile; history_listLjava/util/Vector; cut_buffercut_modeZmonmap[Ljava/lang/String;accroot accnorootlangstabntab sambamodenfsmodeItrustLjava/lang/String;extraimagesiconsizegot_filesystems acl_support attr_support ext_supportmountsfslist read_onlyfixedLjava/awt/Font; small_fixedsessionarchivechroot can_perms can_users follow_linkssearch_contents force_texthtmlexts()VCodeLineNumberTableinit make_font$(Ljava/lang/String;I)Ljava/awt/Font; get_colour4(Ljava/lang/String;Ljava/awt/Color;)Ljava/awt/Color;get_hex(Ljava/lang/String;I)I can_button(Ljava/lang/String;)Z make_button0(Ljava/lang/String;Ljava/lang/String;)LCbButton; get_image$(Ljava/lang/String;)Ljava/awt/Image; get_charset&(Ljava/lang/String;)Ljava/lang/String;get_text'(Ljava/lang/String;)[Ljava/lang/String; set_cookie(Ljava/net/URLConnection;)V show_files(LRemoteFile;)Zpad(II)Ljava/lang/String;spad(JI)Ljava/lang/String; trim_pathopenNode(LHierarchy;LHierarchyNode;)V closeNode clickNode doubleNodeclick (LCbButton;)Vis_html_filenameunder_root_dir((Ljava/lang/String;[Ljava/lang/String;)Z download_file(LRemoteFile;)Vfind_directory!(Ljava/lang/String;Z)LRemoteFile; find_filesys(LRemoteFile;)LFileSystem;action%(Ljava/awt/Event;Ljava/lang/Object;)Z singleClick(LMultiColumn;I)V doubleClickheadingClickedopen_file_window(LRemoteFile;ZI)Vurlize un_urlize upload_notify'(Ljava/lang/String;Ljava/lang/String;)V upload_error(Ljava/lang/String;)Vtext9(Ljava/lang/String;[Ljava/lang/String;)Ljava/lang/String;8(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;J(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; paste_fileE(LRemoteFile;LRemoteFile;Ljava/lang/String;LRemoteFile;Z)LRemoteFile;get_filesystems join_array'([Ljava/lang/String;)Ljava/lang/String; replace_str SourceFileFileManager.java abjava/util/Hashtable /0java/util/Vector :; C0 D0 E0 R0 S; T>java/awt/BorderLayout  fg UV WV java/util/StringTokenizer s a java/lang/String A@  noroot B@ IJ XJ KJ LJ  MH doarchive YJ0 ZJ/canperms  [>canusers \>contents ^>1 _> .htm .html u `@lang.cgi tu java/lang/StringBufferFailed to get language list :    ErrorWindow ajava/lang/Error {  list_shares.cgi SambaShare J F>list_exports.cgi GH LinuxExportDFSAdminExport bro light_edge  hi dark_edge body body_hi  light_edge_hi  dark_edge_hi dark_bg  light_bg  BorderPanel a ToolbarLayout ajava/awt/Paneljava/awt/GridLayout areturn lmret.giftop_ret s no  config config.gif top_config savedown.giftop_down preview preview.gif top_preview (editedit.giftop_edit refresh refresh.gif top_refresh info props.giftop_info  O>aclacl.giftop_eacl % P>attrattr.giftop_attr & Q>extext.giftop_ext 'search search.gif top_search $delete delete.gif top_delete newnew.giftop_new html.gif *upload upload.gif top_upload  extract.gif top_extract )mkdir mkdir.gif followmakelink makelink.gif  rename rename.gif top_rename !sharing share.gif top_share "mountingmount mount.gif top_mount #copycopy.giftop_copy cut.giftop_cut  paste.gif top_paste North  ]>FileNode RemoteFileroot.cgi a a -.Center Hierarchy a +, > bjava/awt/TextField 34EastCbButtonhistory_button a 5 right_name right_size right_user right_group right_date MultiColumn a 12    7 xy ResizePanel ahomegotoopen  java/awt/Fontcourier aapplet_java/awt/Color jk   no_ pq a a  ; charset= m &rand= ?rand=&trust= java/net/URL a  vw  rs java/io/BufferedReaderjava/io/InputStreamReader a a ajava/lang/Exception b   b     : Cookie   b[Ljava/lang/Object; 67  H  H java/lang/Objectdir.gif..java/util/Date a   smdir.gif  sudir.gifsdir.gifmdir.gifudir.gif @ H J  |} B kB MB J J      z{:  ?@  89     m         _self  top_efile edit_enormal m htmledit  html_efailed  EditorWindow a preview_eimage PreviewWindow a )bPropertiesWindow  > ACLWindoweacl_efs eJ >AttributesWindowattr_efs <> EXTWindowext_efs <9 => paste_ecopy OverwriteWindow a  DeleteWindow a aupload_efailed extract_etype ExtractWindow MkdirWindow LinkWindow RenameWindow SharingWindow  ! mount_epoint MountWindow a" SearchWindow HistoryWindow a# $DownloadDirWindow view_enormal2   find_eaccess find_eexist  find_edir %& '( )b *+ FileSystem, -. / 0 12 37 45 6 '7.zip.tgz.tarshow.cgi s&type=application%2Funknown&format= 8&test=1eopenshow%0 { 9% : k ; ???$  move.cgicopy.cgi?from=&to=paste_emfailedpaste_ecfailed <H D = >; ?filesystems.cgi N> @b kJanFebMarAprMayJunJulAugSepOctNovDec FileManagerjava/applet/AppletCbButtonCallbackHierarchyCallbackMultiColumnCallback setLayout(Ljava/awt/LayoutManager;)VUtilsetFont(Ljava/awt/Font;)V getParameter countTokens()I hasMoreTokens()Z nextToken()Ljava/lang/String;java/lang/IntegerparseInt(Ljava/lang/String;)Iequals(Ljava/lang/Object;)ZsplitindexOf(I)Iappend,(Ljava/lang/String;)Ljava/lang/StringBuffer;toString substring(I)Ljava/lang/String;put8(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;pathLjava/awt/Color;(ILjava/awt/Color;)V(III)V(II)Vadd*(Ljava/awt/Component;)Ljava/awt/Component;<(Ljava/lang/String;Ljava/awt/Component;)Ljava/awt/Component;.(LFileManager;Ljava/lang/String;LRemoteFile;)V%(LHierarchyNode;LHierarchyCallback;)Vfill'(Ljava/lang/String;LCbButtonCallback;)V+([Ljava/lang/String;LMultiColumnCallback;)V setWidths([F)V setDrawLines(Z)VsetMultiSelectfile-(Ljava/awt/Component;Ljava/awt/Component;DZ)V(Ljava/lang/String;II)V toUpperCasecharAt(I)Cjava/lang/CharacterisDigit(C)Z%(Ljava/awt/Image;LCbButtonCallback;)V8(Ljava/awt/Image;Ljava/lang/String;ILCbButtonCallback;)VgetDocumentBase()Ljava/net/URL;getImage2(Ljava/net/URL;Ljava/lang/String;)Ljava/awt/Image;trim startsWithjava/lang/SystemcurrentTimeMillis()J(J)Ljava/lang/StringBuffer;#(Ljava/net/URL;Ljava/lang/String;)VopenConnection()Ljava/net/URLConnection;java/net/URLConnectiongetContentTypegetInputStream()Ljava/io/InputStream;(Ljava/io/InputStream;)V(Ljava/io/Reader;)V*(Ljava/io/InputStream;Ljava/lang/String;)VprintStackTracereadLine addElement(Ljava/lang/Object;)VclosesizecopyInto([Ljava/lang/Object;)VgetClass()Ljava/lang/Class;java/lang/ClassgetName getMessagesetRequestPropertylist()[LRemoteFile;clear sortingArrowsortdir arraycopy*(Ljava/lang/Object;ILjava/lang/Object;II)Vsortcol QuickSortsort([LRemoteFile;II)V(J)Vsharedmounted mountpointtmaptypenameJusergroupmodifiedgetDategetMonthgetYeargetHours getMinutesaddItems([[Ljava/lang/Object;)VsetTextvalueOflength(J)Ljava/lang/String;endsWithselected allSelected()[I()LHierarchyNode;getAppletContext()Ljava/applet/AppletContext;java/applet/AppletContext showDocument(Ljava/net/URL;)Vnetscape/javascript/JSObject getWindow4(Ljava/applet/Applet;)Lnetscape/javascript/JSObject;call9(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/Object;(LRemoteFile;LFileManager;)V(LFileManager;LRemoteFile;)Vaclsattrsfind (Ljava/lang/String;)LRemoteFile;)(LFileManager;LRemoteFile;LRemoteFile;I)V(LFileManager;[LRemoteFile;)V"(Ljava/lang/String;LFileManager;)Vfs()LFileSystem;((LFileManager;LFileSystem;LRemoteFile;)V(LFileManager;)V toLowerCaseget&(Ljava/lang/Object;)Ljava/lang/Object;select(LHierarchyNode;)Vredraw elementAt(I)Ljava/lang/Object;java/awt/EventtargetLjava/lang/Object;getTextcontainsinsertElementAt(Ljava/lang/Object;I)V directory last_eventLjava/awt/Event; shiftDown([I)V(I)Ljava/lang/StringBuffer;isLetterOrDigit(C)Ljava/lang/StringBuffer; lastIndexOfperms (LFileNode;)Vch removeElementremoveAllElements! A !"#$%&'()*+,-./0123456789:;<9=>?@A@B@C0D0E0F>GHIJKJLJMHN>O>P>Q>R0S;T>UVWVXJYJZJ[>\>]>^>_>`@+abcW**Y*Y*Y*Y *Y *Y *Y * d"  +%,;7F8Q9ebc Z *Y** ** *Y*L*+=+*+ S*!:Y*!L*+"=+*"+ S *"**#$**%&**'(*( *)(***+*+ **+**,-.**/0*0 *10**23*3 *43*5M*, ,167*8N*- -169*::* 16;*<:=6*>*?: )6@:*AB*CD:2=E1FYGHI*JIK:LYMWNYO692=E6  "*2 P2 `QRW*SD:2=666  &TY 2U: *  V RW *W*XD: *   2-Y*Ya6   V*Y#ZY  2[: *  \ RW(*Y ]Y  2^: *  _ RW *`*a=6* *bcdc*efdf*ghdh*ijdj*kldl*mndn*opdp*qrdr*stdtuYhv:  wYxyzY{:  |Y}~*#* ***ZW*#* ***ZW* ***ZW* ***ZW* #* ***ZW* ***ZW* #* ***ZW*** #* ***ZW*** #* ***ZW*** #* ***ZW* ***ZW  W* zY{:  |Y}~* ***ZW*1 ***ZW ***ZW* ***ZW ***¶ZöW*Ķ ***ZƶW*Ƕ16#*ȶ ***ZʶW*˶ ***ͶZζW*W *Y1*϶=6#*϶ ***ѶZҶW*Ӷ=6#*Զ ***ֶZ׶W  W*ضgzY{:  |Y}~ ***ڶZ۶W ***ݶZ޶W ***ZW  W* W**Ƕ=6uYhv:  Yy*YY**D2 *Y**ZW****uYhv:  YyzY{:Y~*YZW*Y**ZW W**Y)SY*SY*SY*SY*SY*S:YQYQYQYQYQYQ: *Y*ZW** * ** **  WY  :*W*:*:*:*W<7=6-*W*246**2Wd[ ^_#a*b:cEdNeXd^fggwhijimopqrstuvw xy#z*{@|G}]~e}"AGO[ft "'3?KWco{!8AXh "9PYpx $-D[r{    $ ;Riqz"# $%&3'N(X)c*-./012 3 5 6 )9 2: ;; D< I= T? c@ hA sB C EfgcK+*+N- -)6--6YdIJLhic]9*FYGI+IKN-,Y*-*-*-dSTUXjkcuM+L+>+`6 0d Ad `6 0d Ad `6x`d`ab+cEdlmc9!*FYG I+IKdinocF&*.Y*+!*"Y*+!,*#dnoqpqc;#**$FYG*+I4I+IK%dwrsco7+Y+&M,, 'N-() -Qd& }~!+25tuc Y*A+?EFYG+I+I ,KLFYG+I-I ,KLFYG+I.I*$IKLFYG+I*(IKL/Y*$+0:1:*2*34:5::6Y7Y89:36Y7Y:9::  <6Y7Y89:Y: =:     >? @:   A M,<YFYG,BCIDI,EIKSN-;();d~)B^t &)*.Wvwc3*&+F*&Gdxyc +HM,*I,`JN*7+*K*L4*M*,:,,N*O*MPM-QS-2*R!S-2SS-2-2-2-2)[S[S[SSTYU:6,=-`Q[S:,2V,2W*X!S,2V,2Y*Z!S^,2V*[!SF,2W*\!S.,2Y*]!S*^,2_2!S,2`S,2ab)FYG*,2adIeIKSb,2af-FYG*,2abmdIhIKS*FYG*,2afmdIiIKS,2jS,2kSTY,2lU: m mNn nAo o4FYG* pqIrI* sqIKSno o2FYG* mqI4It n2IKS2FYGt n2I4I* odpqIKS*-u*+K*,v*+wxd2 '3=DNadlx "0:H[ftFw    z{cJ&yN-zFYG1I-IKN-d $|}cO+{:zFYGIIK:d(~sc:+4|++zdPL+d# $%c* ,N-d,- .cd4c>,N*K- *-  Wd:;<=cdCc  U*}=*~N:: -66--.6*v:M-d:66 -!-. -.d2S 2 d2:0d2:-:6--.d2S*:+*)/Y*$*0:*\:W+*,/Y*$*0:*+:&+*LY*MW_ _LY*MW*wJ*>C*:YwSY)S:W:LY*EMWY*W+**l+*1_LY*MWDY*W6+**  W+*Y*W+*D*:Y*WLY*MW+*D*:Y*WLY*MWh+*D*:Y*WLY*MW+*ۦ**+*ަ**+**LY*MW6**2:*K`: *Kw:  46FYG I`IKFYG I4I`IK:  Y* W+**K *: * * SR* +*Y*W+*Y*Kw*W+*E*:Y)SY*KwS:W:LY*EMW+*?*:Y*KwS:W`:LY*EMWG+*æJ__ _LY*wMWY*W+*ƦY*Kw*W+*ʦY*Kw*W+*ΦY*W+*Ҧ _Y*W+*צD _:LY*wMWY*W9+*Y*Kw*W+**@ Y*W;),;;;;dvHIJK'M*N4O;P>NDQJROTXUeVlW}UX\]^_^bcfhjloq)s1u9w>xPyazs{~!)/4AIO]eksy !58@FLT\bhpx(4=CKSYgo    :Q_gz "$%')*,./01345&799A;K<T?mcM%=*B+*B2|dC DEC#Fck>+z66,Z,2z6,246>:+P,26>,2P+6>d2 KLMNO'P,QDRISaTcMiVcuI+_*016Y*+W++_ +_LY*ĶMW *+űd\] ^/_AaHbc )*+*ƙ*+*"ƚ>LY*+MW*: :Y+4: :)6H:6 6  # 2`6  2:6  LY*+ɷMW_LY*+ɷMW*:R'* **d%gi"j2k4m:nAoMpUq\risptwu{vwyz{|}z &cM>* @v* :z6+w6G+wz`,+w`PFYGI4IK646M,d"&y|ct@+*6*Ѷ'N-)6*-W*-Қ *-d" !(3<>cdc)H*K=**K**KԶ W***K*ͱ*vd2N-_Q**K:*-:*- **ͧ-_*-+նűdZ ,AHIRYintc +O++ML +L*~N-:6-*v-.d2S**K W6-66*v#*v22-`O ل*-ױdR "(07AQW`jwc= ا ٧ ڧ):WFYG۶I+wܶII-I*,ݶI.I*$I޶I*(IK:NFYG۶I+wܶII-I*,.I*$I޶I*(IK:*FYGIIKD:2zLY*2MW*/Y*$0*/Y*$0::;7:;d6 %)}  7$<%scFYGL=*z*>$+FYGIIKIWP/._ - $+FYGIIKIW +W{+Kd* )*+,-?.e02*4scJFYGL=*z6*>%+*``P蒶W +W+Kd& 9:;<=3?9B?:EDc p+/>+P:+`Q:*::Y*,:#_*:**K Wd:JKLM!N*O/Q<RFTNV\WaXfZo[c& LY+MWd ` acp*+N-N6,S-FYGI`߶K6*FYG-PI,2I-`QIKN-d"e fgh;iAjhgnlsc( M*+,d qrc,Y,SN*+-d w xc2Y,SY-S:*+d }~c A*FYG II+wܶII-ܶIKD:2z#LY* 2MWY*2,: ,C__jjkkaall: +++__**K:Y5*+Զ: *+:     W***K Wdn>Hfhw| #.5>bc*DL*+2=6**** * *U=+MY+2N* ->-*-*-** --RWdF#*18@KS_kwcV.)M>+$FYG,I+2IIKM,d &,cuI6*N-+Y68FYG-PI,I-+z`QIKN,z``6-d9GbcoW YSYSYSYSYSYSYSYSY SY  SY  SY  Std&file/HierarchyCallback.class0100664000567100000120000000033310754361754016055 0ustar jcameronwheel.   openNode(LHierarchy;LHierarchyNode;)V closeNode clickNode doubleNode SourceFileHierarchy.javaHierarchyCallbackjava/lang/Object file/CbColorButton.java0100644000567100000120000000166310754361754015062 0ustar jcameronwheelimport java.awt.*; import java.util.*; /**A component for choosing a color */ public class CbColorButton extends Panel implements CbButtonCallback, CbColorWindowCallback { Color col; CbButton but; Vector pal; Image swatch = Util.createImage(32, 16); Graphics g = swatch.getGraphics(); CbColorWindow win; CbColorButton(Color c) { this(c, new Vector()); } CbColorButton(Color c, Vector p) { if (c == null) c = Color.black; col = c; g.setColor(col); g.fillRect(0, 0, 32, 16); setLayout(new BorderLayout()); add("Center", but = new CbButton(swatch, this)); } public void click(CbButton b) { if (win == null) win = new CbColorWindow(col, this); } public void chosen(CbColorWindow w, Color c) { if (c != null) { col = c; g.setColor(col); g.fillRect(0, 0, 32, 16); but.repaint(); } win = null; } public Vector palette(CbColorWindow w) { return pal; } } file/MultiColumnCallback.class0100664000567100000120000000031010754361754016402 0ustar jcameronwheel.    singleClick(LMultiColumn;I)V doubleClickheadingClicked SourceFileMultiColumn.javaMultiColumnCallbackjava/lang/Objectfile/Hierarchy.class0100664000567100000120000001322110754361754014440 0ustar jcameronwheel.A W W W W X  W W W W  W W W W W W W W W W W W W  W W W  X X W W W W N N W  W N N N N  W   WrootLHierarchyNode;sb LCbScrollbar;widthIheightsbwidthcallbackLHierarchyCallback;bimLjava/awt/Image;fontLjava/awt/Font;fnmLjava/awt/FontMetrics;bgLjava/awt/Graphics;topcountinLjava/awt/Insets;sellastJ broken_awtZ(LHierarchyNode;)VCodeLineNumberTable%(LHierarchyNode;LHierarchyCallback;)V()V(LHierarchyCallback;)VredrawsetRootselected()LHierarchyNode;selectsetFont(Ljava/awt/Font;)Vreshape(IIII)Vupdate(Ljava/awt/Graphics;)Vpaint mouseDown(Ljava/awt/Event;II)Zmoved(LCbScrollbar;I)Vmovingrenderrecurse(LHierarchyNode;IIII)I compscroll(LHierarchyNode;)Inodeat"(LHierarchyNode;II)LHierarchyNode; SourceFileHierarchy.java uz Z[ uv bc u java/awt/Fontcourier u fg l_ m_  CbScrollbar u \] hi z  z |z p[ de z  no  ^_ a_  _  _  _ `_    jk    r qr  t      ! " # $ %& ' ( )_ *_ (+ ,- .e / 0 12 3 45 HierarchyNode m6 78 9:os.name; <=Windows> ?@ st Hierarchy BorderPanelCbScrollbarCallbackUtil dark_edge_hiLjava/awt/Color;body_hi$(ILjava/awt/Color;Ljava/awt/Color;)V(Ljava/lang/String;II)V setLayout(Ljava/awt/LayoutManager;)V(ILCbScrollbarCallback;)Vadd*(Ljava/awt/Component;)Ljava/awt/Component; getGraphics()Ljava/awt/Graphics;repaintinsets()Ljava/awt/Insets; minimumSize()Ljava/awt/Dimension;java/awt/Dimensionjava/awt/Insetsleftrightbottom createImage(II)Ljava/awt/Image;java/awt/Imagejava/awt/GraphicsgetFontMetrics()Ljava/awt/FontMetrics; drawImage3(Ljava/awt/Image;IILjava/awt/image/ImageObserver;)Zjava/awt/EventwhenchLjava/util/Vector;openHierarchyCallbackopenNode(LHierarchy;LHierarchyNode;)V closeNode doubleNode clickNodegetValue()Ijava/awt/FontMetrics getHeight getAscentlight_bgsetColor(Ljava/awt/Color;)VfillRecttextxyLjava/lang/String; stringWidth(Ljava/lang/String;)Iimbody drawStringdrawLinejava/util/Vectorsize elementAt(I)Ljava/lang/Object;java/lang/Mathmin(II)I setValues(III)Vjava/lang/System getProperty&(Ljava/lang/String;)Ljava/lang/String;java/lang/String startsWith(Ljava/lang/String;)Z!WXYZ[\]^_`_a_bcdefghijkl_m_nop[qrstuvw* **+x uyw+ *+*,x&' (uzwuA**Y  * * **Y***Wx"-  %0*172@3u{w* **+x9: ;|zw@*****xBC DEG}vw* *+*xMN O~w*xUvw"*+x \]w3*+ **xbc dew**** ** d*!*"`d#**$*%`d&**#*!`*$* *&'****(x* klm0nFohrmsqtuv~ww* **+x}~ w^*+)*<***#*&***+,*,* -**,.**+**!*$*/Wx*  '2=AE]w]***ll* `0:**6+1*2e3* 6 *+12*V*5L**66*Z*6***7?***8.*'***9***:**x^ %*.03LRZ`ow#*+;x w8**< **x zwR*M*=<*>=*,?@*,*#*&A**,B@**CWx* !29:DQw h6* dh66+D+E*+FG6 k*&b+H*,+H*/W*+-*,I@*,`` ` A*,B@*,+F` `J+5+6*&*,``` ``K6  +5L*&*+5 MN``C6 *,````K +5Ld*,```K *,`` h`dK `6 h`6 Yxj+9@QYcy .Ifmw}zwtD****O<*&ldP=d>** Qx    * .Cmwc7=+6/+5(>+5L*+5MNO`=x/5wU+E +D++5 +66+5L%*+5MN0:x& "#$ %"&1'E(M&S*zw&RSTUVxfile/FileNode.class0100664000567100000120000000364710754361754014222 0ustar jcameronwheel. ': ; <= = >? : @ <A B CD EF G <H I <JK L M CN OP Q R ST U <V <WX <YZ[\]^ C_ ` <a bcparent LFileManager;file LRemoteFile;knownZ(LRemoteFile;)VCodeLineNumberTablefill()Vadd (LFileNode;)Vsetimagerefresh SourceFileFileManager.java .3 *+d () 63java/util/Vector ef gh ihj klm no ,- pq r3 stFileNode ./ uv wxy z3 {| }~  smdir.gif  sudir.gifsdir.gifmdir.gifudir.gifdir.gif p 23 HierarchyNode RemoteFilechLjava/util/Vector;nameLjava/lang/String;text FileManagernodemapLjava/util/Hashtable;java/util/Hashtableput8(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;list()[LRemoteFile;removeAllElementstypeI addElement(Ljava/lang/Object;)Vdirs LHierarchy; Hierarchyredrawsize()I elementAt(I)Ljava/lang/Object;java/lang/String compareTo(Ljava/lang/String;)IinsertElementAt(Ljava/lang/Object;I)Vshared()Zmounted mountpoint get_image$(Ljava/lang/String;)Ljava/awt/Image;imLjava/awt/Image; [LRemoteFile; '()*+,-./0j6**+*+**Y*+ * +* W1"  (5230S* N*L+*=+#+2*Y+2** 1. #,=CMR450}M=*B**N-- + *+ 1 (:C FL 630m****K**2*#* *!"#$1 l7306* *%*&1 89file/HierarchyNode.class0100664000567100000120000000102010754361754015240 0ustar jcameronwheel.!      openZimLjava/awt/Image;chLjava/util/Vector;textLjava/lang/String;xIy()VCodeLineNumberTable8(ZLjava/awt/Image;Ljava/util/Vector;Ljava/lang/String;)V SourceFileHierarchy.java    HierarchyNodejava/lang/Object  *8F***,*-*;< =>?@file/MultiColumn.class0100664000567100000120000002277110754361754015004 0ustar jcameronwheel. s r r} r r r r r r r r r r r  r r r  r r r r  r r   r       r   r r r r r r r r  o      s s r [ r  ! r" #$ r% r& ' r #( #) *+ , - . / 0 1 2 #3 4 5 67 *8 9: h; r< h= h> r? 9@ 9A rBCDE hF GH rI JK oL rMNOcallbackLMultiColumnCallback;title[Ljava/lang/String; adjustableZ drawlinescolors[[Ljava/awt/Color;enabled multiselectcpos[Icwidth[Flist[Ljava/util/Vector;sb LCbScrollbar;widthIheightinLjava/awt/Insets;sbwidththbimLjava/awt/Image;bgLjava/awt/Graphics;fontLjava/awt/Font;fnmLjava/awt/FontMetrics;coldragselselstoplastJrowh last_eventLjava/awt/Event;sortcolsortdir([Ljava/lang/String;)VCodeLineNumberTable+([Ljava/lang/String;LMultiColumnCallback;)VaddItem([Ljava/lang/Object;)VaddItems([[Ljava/lang/Object;)V modifyItem([Ljava/lang/Object;I)VgetItem(I)[Ljava/lang/Object;selected()Iselect(I)V([I)V allSelected()[Iscrollto deleteItemclear()V setWidths([F)V setAdjustable(Z)V setDrawLines setColors([[Ljava/awt/Color;)VsetMultiSelectenabledisable sortingArrow(II)VsetFont(Ljava/awt/Font;)Vreshape(IIII)Vrespacepaint(Ljava/awt/Graphics;)Vupdaterender mouseDown(Ljava/awt/Event;II)Z mouseDragmoved(LCbScrollbar;I)Vmoving compscrollrows minimumSize()Ljava/awt/Dimension; preferredSize SourceFileMultiColumn.javaP QR SR T yz {z |} ~z z java/awt/Font timesRoman U java/lang/String wxjava/util/Vector VW CbScrollbar X YZ uv [\ ] ^_java/lang/Object `a b c de fg h ij kl m n o p qr st u vw x y z{ | }~  R   R R  R  U  java/awt/Image        java/awt/EventDoubleSingle   java/awt/Dimension  MultiColumn BorderPanelCbScrollbarCallbackUtil dark_edge_hiLjava/awt/Color;body_hi$(ILjava/awt/Color;Ljava/awt/Color;)V(Ljava/lang/String;II)V setLayout(Ljava/awt/LayoutManager;)V(ILCbScrollbarCallback;)Vadd*(Ljava/awt/Component;)Ljava/awt/Component; addElement(Ljava/lang/Object;)Vrepaint setElementAt(Ljava/lang/Object;I)V elementAt(I)Ljava/lang/Object;sizesetValueremoveElementAtjava/lang/System arraycopy*(Ljava/lang/Object;ILjava/lang/Object;II)VremoveAllElements setValues(III)Vinsets()Ljava/awt/Insets;java/awt/Insetsleftrightbottom createImage(II)Ljava/awt/Image; getGraphics()Ljava/awt/Graphics;java/awt/GraphicsgetFontMetrics()Ljava/awt/FontMetrics;java/awt/FontMetrics getHeight drawImage3(Ljava/awt/Image;IILjava/awt/image/ImageObserver;)Z getDescent getAscentjava/lang/Mathmin(II)IbodysetColor(Ljava/awt/Color;)VfillRectlight_bg light_edgedrawLine dark_edge stringWidth(Ljava/lang/String;)I drawStringlength substring(II)Ljava/lang/String;abs(I)IMultiColumnCallbackheadingClicked(LMultiColumn;I)Vwhen shiftDown()Z controlDown doubleClick singleClick getParent()Ljava/awt/Container;((Ljava/lang/Object;ILjava/lang/Object;)Vjava/awt/Container postEvent(Ljava/awt/Event;)ZgetValue!rstuvwxyz{z|}~zz#f****** * Y  *** ***+=+*+2S*+=+*YS*+=+* +nQ*+` **Y***Wv(    "'7<AHM S)\*d+m*s,|-.-/01023456+ *+*, <= >R&=**2+2!*"*#D EDF!G%Hj6=+(>**2+22!*"*#"NOP!O'N-Q1R5SS'>**2+2$*"*#Y ZY["\&]Q)*%M>*,*2&S,c de!d'f*m@** *O*"tu vwxU%+** *+.*+*"~  $*O*'=* *`:*d**2(d**2(d**)*""0?JN=**2***=*G*.7*d N-.*-+*`--d+*-. *"*#B #(3=GLWgqw{r:<**2,** **"*-& &+/9O#=**+0Q*.*" ""* "* * *+*" "*  5**/*" 5**0*" 3*1*2*" 3*+ *3*"   *4*5` *6|**78**9:5**5d*8;*8<`d4**8=*8>`d6**4*8;`*8=*5*6?*.*3*"*#*@2 ,F\~!"]5*O<*%*`*.*4*0j`Oر()*.)4+k*+A*3I***4*6B3**3CD*D* E**DFG**GH`I*J*#+*3*8;*8=*KW. 12 45'627=8J9N:R<j=5*G *J*+LCD EGi*GH<*GM=*GN>**'`d*2(dO6*DPQ*D*4*IR*DSQ*D*I*4*6*IdR:*s6*f*.*R*.F*D*.* PQ*D*I*.*d*h`*4*R6*q*.6*`.dd6*DTQ*D`U*D`dU*D*IdU*D``*IdU*DVQ*D*Id`*IdU*D*Id`d*IdU*D`*Id`U*D`d*Id`dU*G*2W6  d#*D*2 dl`*IddX*Id6 *1*2*DTQ*D`*Id` `*IdU*D` `*Id` l`*Id dU*DVQ*D` l`*Id d`*IdU*1*2*DTQ*D` l`*Id` `*Id dU*DVQ*D`*Id d` `*Id dU*D`*Id d` l`*IdU*M*DPQ*D`d*I`d*6U*DVQ*D`*I`*6U*6  *2 &:  } : *G Wd  YdZ: **DPQ**D* 22Q*D `*I `*d*h`dX2 [* [: *D `*I *d*h`*KW 7 BMNOP3S=TNUXVqWvY}[\]_[fgjk-l?mQngoqpqrstuvyz/{9|W}}~?FPmw*-5<\bfh**8;d=*8=d>**Ib6*R*!*.d\ *'*.*`.* *]o*Id*l*`6*2(O6+^*_e`* 6 *+^_+b{* t*l*.60*d` 6*dO-*d` 6*dON+c8* 1*` :**+*O** *O**"*+d* &* *e1* *f"*ghY*ijklW. "*7S\t%2=IOR`k{**8;d=*8=d>***d.`n**`.d]**O**d**.**d.d*4nQ****`.**.d*4nQ*".  %GQx #*+m 8**n*#*" c7*G*'<*2(d=***2(-  6!0*6*ld*2(O'% oYdp,*q1file/defaultacl0100644000567100000120000000062510754361754013524 0ustar jcameronwheelnoconfig=0 user=0 root=/ follow=0 umask=022 log=0 ro=0 goto=1 archive=1 button_save=1 button_edit=1 button_info=1 button_acl=1 button_attr=1 button_ext=1 button_search=1 button_delete=1 button_new=1 button_upload=1 button_mkdir=1 button_makelink=1 button_rename=1 button_sharing=1 button_mount=1 button_copy=1 button_preview=1 unarchive=1 dostounix=1 chroot=/ noperms=0 nousers=0 filesystems=1 contents=1 file/images/0040755000567100000120000000000010754361755012743 5ustar jcameronwheelfile/images/paste.gif0100644000567100000120000000023010754361754014535 0ustar jcameronwheelGIF87afff,e Ia05ݣ Ci0E*~:o4`m %xLrrFdK;6hHZ{L2<'36m@.Y|}V{w ;file/images/dir.gif0100644000567100000120000000013010754361754014176 0ustar jcameronwheelGIF89a̙fff!,)i-j]݅_($5 iҳ;C>P;file/images/file.gif0100644000567100000120000000333210754361754014346 0ustar jcameronwheelGIF89a/UUUrrr999!Made with GIMP!,/81sRdiY_ -*tmxO_!s eH3-=ɨtJ A'I*z=b_J^쓏 Jyuo/1b$vh{(>jbhG$bA=,'n+H;b6#~c|3Vqb%Ejfc3TŒՌ2:789:n$tY@ƑENi\!64`=aH#!!>ਁ䉁&TE.$<`0 R@E % p0f!2Q3 ^A*APNT{tT @Ԝ'`LZCM,nEm$kXr[RB+NoTP hA@ecdPITİ2Ă"YtoburA@J7׌i'V19GQgySE6@zm"Udf aQi]es蕞m BAMG( :6Axd0BlyWd'`jEV-L+ ^M-bOƕr}6TABSJy*:t%l&p#p-LY"")7o3Qz )Aumr+4t"EZf#z@t ?dbA%E )ãu}$:2(@2j|遤 b.҅Uv)QiD"y5gJ#_mX3&ЭJ L (Z1Skݚ**bv{EuoC^QJu;!cL5|)V #R!)(lBx2Ʌ3^LW ;M^ -btq؍"˱Óץ\(ft)QZgnΓ녌$fm(_ˠ.]LvB\,Mxh%"A*c(h9nZ<~A pr ;file/images/binary.gif0100644000567100000120000000014110754361754014706 0ustar jcameronwheelGIF89afff!,2z j 2N}A"Dt訙Lkt||9JI ;file/images/text.gif0100644000567100000120000000013310754361754014407 0ustar jcameronwheelGIF89a̙!,,z \ؖ9'"cƞ*nh5+9h ;file/images/cancel.gif0100644000567100000120000000015310754361754014652 0ustar jcameronwheelGIF89a!,B˝aR h=zh5٘ӽRais2F{|kv WBU7c1H1 $i;file/images/edit.gif0100644000567100000120000000021210754361754014346 0ustar jcameronwheelGIF87a⯆̙,W0ʹBQXC( ` g::c<7)`@ji-y>Y I0" n"ޒb9)+HpgN$;file/images/symlink.gif0100644000567100000120000000012710754361754015114 0ustar jcameronwheelGIF89afff!,(yC i961!_zᶘ۬J;file/images/icon.gif0100644000567100000120000000041210754361754014353 0ustar jcameronwheelGIF89a00̙fff!,000I 8 ˧ ؍NfFRAʾR[x=KĐ&LNUuEFxL./w jgIۈ@dz9_rt1[5xa}{Tzw>afo~i9'_AhGllHX 4φ@\Ŀ|ߞܭQ ;file/images/new.gif0100644000567100000120000000012510754361754014215 0ustar jcameronwheelGIF87a,4*U͞؇y$i# oL*x(;file/images/makelink.gif0100644000567100000120000000017710754361754015226 0ustar jcameronwheelGIF87a̙fff,XVjjo~IO2VdN@D csQ48+^!r DyhĚơq;file/images/cut.gif0100644000567100000120000000016710754361754014225 0ustar jcameronwheelGIF87afff,Pt> usm@((YB&+]m^5qP"ŏl '57^zr`9U$N;file/images/pipe.gif0100644000567100000120000000015310754361754014362 0ustar jcameronwheelGIF89afff!,091FQKpBH^h)hlܺЁlŠF;file/images/save.gif0100644000567100000120000000013410754361754014362 0ustar jcameronwheelGIF89a!,3tANfznTȁQi9j*: SXOS<$@;file/images/refresh.gif0100644000567100000120000000013410754361754015062 0ustar jcameronwheelGIF87a,;|IS}[]HhbY(۝$LnD6hZ iJ;file/images/unknown.gif0100644000567100000120000000011710754361754015124 0ustar jcameronwheelGIF89a!,&z \0% ~H(fhyDzUaQ;file/images/device.gif0100644000567100000120000000013210754361754014661 0ustar jcameronwheelGIF89afff!,+y3,i.) '%rz6TSnj߳:2 ;file/images/open.gif0100644000567100000120000000016210754361754014366 0ustar jcameronwheelGIF87a̙fff,K˭[A+fj4HafĶn$\G0u:'R<ڒJyB-c0*׋ ;file/images/props.gif0100644000567100000120000000016510754361754014573 0ustar jcameronwheelGIF87afff,Nx!B xJ3&а!Kr WM8vl)VmԃJ ;file/images/run.gif0100644000567100000120000000020210754361754014224 0ustar jcameronwheelGIF89aQQ@!,SMV\ϔubG(rYʛ5)% ?}ސx 4DfPx97fQ EE|ũե;P;file/images/mkdir.gif0100644000567100000120000000015210754361754014532 0ustar jcameronwheelGIF87a̙fff,C߂0fqH`xji s]߸ 4< G& -ԪzhG;file/images/rename.gif0100644000567100000120000000022010754361754014667 0ustar jcameronwheelGIF87afff,]0邽8k@I\oL<j1ˢٔcuZn Ֆye9h|Nt~H;file/images/view.gif0100644000567100000120000000021210754361754014373 0ustar jcameronwheelGIF87a̙,W.:蓸 Ɓ`ICih(S"fPD0x)v{v p$ qC`dfħVPZ񎭲2MLCo;file/images/copy.gif0100644000567100000120000000016110754361754014376 0ustar jcameronwheelGIF87a̙,Jt@ALLG^y*bVHس)>Q nJ/y\sHUA]ahedF;file/images/sdir.gif0100644000567100000120000000026410754361754014371 0ustar jcameronwheelGIF89a̙fff333wwwUUU"""!Made with GIMP!,OI8+0 :@1/hA0.! ­RXPp% \Y!U\vn9G;file/images/share.gif0100644000567100000120000000020410754361754014524 0ustar jcameronwheelGIF89afff!Made with GIMP,K! .2UQNX o3S3g;r q壚nfZ䲣;file/images/search.gif0100644000567100000120000000020310754361754014666 0ustar jcameronwheelGIF87aȘ`d`,P*+" i[ȌEugڲ3^7B2G0 H:֫3r/ %s E"^$;file/images/acl.gif0100644000567100000120000000030110754361754014157 0ustar jcameronwheelGIF89a̲fff333LLL&&&sssYYY,vI5-D!xPfN/@_':3 }!l*(Db:U,SD6ZaYQfӗsoW;Sr}| ~YwT uz 5;file/images/.xvpics/0040755000567100000120000000000010754361755014335 5ustar jcameronwheelfile/images/.xvpics/preview.gif0100664000567100000120000000120110754361754016475 0ustar jcameronwheelP7 332 #IMGINFO:24x24 RGB (412 bytes) #END_OF_COMMENTS 24 24 255 mmJmmmm'mmmKKKmm&mIm%Im$IImIIm&m-mImJLjHn,,, m8<L5P518<9m<8<nm<m<<nm<nm<mmmmmmmmmmmfile/images/add.gif0100664000567100000120000000016610754361754014163 0ustar jcameronwheelGIF89aUU!,;0IAち2ik,<߬c2Th@ Z4$td&KMjJZ;file/images/attr.gif0100664000567100000120000000026410754361754014404 0ustar jcameronwheelGIF89aUUUrrr999,iI8gYaHJK/ gp 0F?(0MIR)&VBg:yDdǧ-_'d̔SC/S& !;!5;file/images/sub.gif0100664000567100000120000000014010754361754014214 0ustar jcameronwheelGIF89aUU,-0I8e`(CDhh *?ߨ epH,n;file/images/ext.gif0100664000567100000120000000220710754361754014231 0ustar jcameronwheelGIF89aJJJFFFϭRRR+**777KKLffgZZZ###MKFy ~*}vc'''Ā[ $ٱ$eU2ϡϧÑ ̦O+)%vvv~Uö  000PPP333hhh~~~ ۾ ^^^jjj Ф WWWĊl qgI [ۭc^M؞ӫ{e v, }---ιޣ dd j&C3OOOr ݈.۫Y> ޥ p4zzzjI3ުǗͥQʑ ߦ ͔ bB///(((hH і ј չzwl[\ m˽,80  ȰH,`ËH @@ @6pC 6$PɐC@`́$J8"+~ d 1d5l8#?yHB$ B# $KT2i(D2e* Xqx ,Z0nE^ s֡0`L-P) qxMDTM7o‰#g:p sO;file/images/mdir.gif0100644000567100000120000000025110754361754014357 0ustar jcameronwheelGIF89a̙fff"""DDDUUUwww!,VI8+|zzD Q^BB( -%}W p5"kBz H`N9G;file/images/mount.gif0100664000567100000120000000033510754361754014573 0ustar jcameronwheelGIF89aٲsssfff̿,IA ¹5CiFJűAjEج+!>DR tXLxtPhEA /rqpqRu2mSf46.y}XZ #.b^}6]lk e|3iV3 kJ;file/images/smdir.gif0100644000567100000120000000026510754361754014547 0ustar jcameronwheelGIF89a̙fffwww333UUUDDD"""!,bI8+(*A`|G zJ/AqS `8l (vDվnuhah;file/images/udir.gif0100644000567100000120000000025310754361754014371 0ustar jcameronwheelGIF89a̙fffLLL]]]UUUnnnwww!,XI8+|G^aFAqPߟ"I$lWP1 Ȁ2r@0&q6Aᕂ=(ȁVRJw;file/images/sudir.gif0100644000567100000120000000027210754361754014555 0ustar jcameronwheelGIF89a̙fffwww333UUUnnn"""LLL]]]!,gI8+(*Aq|I,`<0`1ӧh)0($Tb`b=j hv+hБy)w6;file/images/delete.gif0100664000567100000120000000014310754361754014670 0ustar jcameronwheelGIF89a,B˝aR h=zh5٘ӽRais2F{|kv WBU7c1H1 $i;file/images/preview.gif0100664000567100000120000000063410754361754015114 0ustar jcameronwheelGIF89a@@@@@@@,,WWWAA@@AAAr2AArGrd::,,33,@pHŤRxd"fQ 5>j%fæ`@.@@hpB^޶ n~x  n o lo  om~k !"#$$#k$$k$%k \S ;file/images/Thumbs.db0100744000567100000120000011300010754361754014504 0ustar jcameronwheelࡱ>  40 !"#$1&'()*+,-./7235H68=9:;<>B?@ACDEFGIRoot Entry״x0a12 3  !"#$%&'(*+,-./023456789:;<>?@ABCDEFGHIJKMNOPQRSTUWXYZ[\]^_`acdefghijklmopqrstvwxy{|}~ RGBARGBA?O:v;6魧7 R# ;W|Au ñMm9T.`GaڽShMki¡uDo;yBDqԥ:HR@g`GEyBDqԥ:HR@g`GEyBDqԥ:HR@g`GE[cïq\(p0zVXjW&ud * (^U<:ɹn<Š) {QNs0 sȧxJtmmvyp9dS{\: 6Ҋi7:?vvF8_榽_ZMΏ緺(]ÑWsykacjhԬxLx] =X)9ʺ {RR3r?''o}rsO£dϸSn~Tlm=? *K("b rG$RY@։[b=I$:HܳI'_ uRGBARGBA?~"(< t ҡqu FO:\L`:tiP'hڊ;5K>9 biEqZ]Dxgs{O uJ+ɦ I->\Yn%w֊i"᷒Kh1ϗa۷o%(q}0c_&/'VC+~YVOh&_PKJFA4HPZciяg?ŞW/è%N $(-|J+j+ xhRGBARGBA?`$i"p(_{׻$M#Bt޽ %oȁ( $,VȷRNIXn!a["KB!;hUjQ\Sܘ,nlNQI$ u=ɂYϘ6˰%1]`@br/#*4k##~^98\ٯ<'|gi7K̬eLjUb\Nv 眅ŶWyΙN֖ec%BIv(EE^oq)1d~2`8$(D;iHdV^һ' 蕕2U=Xȿ#,k" `AWS5N|KK҈gh\'1Y axó~yC 9'k?5oxv}_S1[w|@$8 g/ϫv6֑+q(>"xtzoxL㹕>eF?\i2[TkC'O|iqn;SP>ch|ҁ<2vnYS_4Mei>[i@}@Vy ;N7mө&lo-|O>l<~E_Rx;A_ x?Jїn[uY 2cԞWҴeۺVB r>X5'ǃvUC!?[uExm~%o펍^gޤzc^t^7FcoRN1^/g:[_icE~ױᷩ'p^` RGBARGBA?mri^fp1Nd}^.r=[\_ y A1y #V&E!gl$&HaneH#^7Gܩnѳ 'w(eݽċ寠^7Gܩnѳ 'w(eݽċ寠^7Gܩnѳ 'w(eݽċ*g(kyBQ2d` 6pH/$PL썷28 d/k6r渉!G* F#mL';oV 1 {>RV$n'o^Xuh+mY=)@+7Fѷ,:[|6,C{Eeh_ RGBARGBA?ώ|]Z|y84 ml$f ī) A) B/.lqi7|IVR@ SJ/E%Ӄדnquݟn7nq+?*пNo+^Nݹ1v~]ݻxx Ki}v{9cM6ӷ&LbB $oo u >/x.trG,ifv$ɒUHUP$\#__?QWs1nߛv1+_.tI,vIYAVR  xhRGBARGBA?8SϪZ٧TSIZtC"rLp>QqxYTO ȩ.sg$".D6|v eϳN>kfR]NI%iE \0l!Fge|E/T.i dfv# 0Xse|E/T.i dfv# 0Xse|E/T.i dfv# 0XrT?KBs&RпEC /7Er;|@SG(.3ymZ\ܤyda9Bܥg&$T; ^sd((7)YNP)yɩ# 4}Nkb;<ל&0J% GF,WGM}ՕYO H~U9ӵt+͒Y͵'BwE/ q]=7XsgkVW%fkN?2^A#1⊧a?S vXO;EJ^%KۅmCYb%U#R%hKe[/¶a},Oڪc)[qa%2R[C䰾XmU_b1w-ĸ0{]rZu޳"\ƌJP#rWxxペu˿ izφrf_2)@ ]}2ώjW.5]>/ə~ohʈ27%w>89g\;ӿկ_?Nk*u;Z+ hXRGBARGBA?6fE(Fۖxfi$X⌄miZ6fE(Fۖꍄ7WZuwAXUnk;H6]i$v c$E=Ie("njyn QOtyYJ2H[=TS.-o,dR,xǖ8 Lt9V01 b11n*UU?\A-\ut?\A-KCK+^TMѫ˅vhwivpEs ʖɺ5pYp-m.ayR7F .ۚ*k*k*k(Kw$aqg_=.-O q KY|y>2Fp(/&aHH"9$z3֋CIg2,I<8㞿Llj:|䌤"+#A0x=JK.m丹.8 v.Wy%ͼ02BRN^*/$H\X*IԹ RGBARGBA?uy7=Fd H{q\j/eU }Ćn :0>q\j/eU }Ćn :0>qEX:u榏_k#*IQ+b@YϝjdtM\G;kUOޒ4VĀ/;;Wbך>svG쪟%Dhd^w>v=m28n:֞$6@I7pkzOK\HOm 4UZYUP[ȿ:I\_j+K* yRI+V%ieUAo"I%p`}}ivwF%n@;(=6K6i-tdHܭE89)]żInۣ"FPn@ 0)AE RGBARGBA?ώ|]Z|y84 ml$f ī) A) B/.lqi7|IVR@ SJ/E%Ӄדnquݟn7nq+?*пNo+^Nݹ1v~]ݻxx Ki}v{9cM6ӷ&LbB $oo u >/x.trG,ifv$ɒUHUP$\#__?QWs1nߛv1+_.tI,vIYAVR  RGBARGBA?J%[ ڡt<ko+Kt)n2j]d .O`FGqԭ-X0ˍwI(;=ƾ!Oy.XII ]{䜜tS-K$oE{rH#@Wp89''99/T x8I-A7INJ|3bWCeRB gd q0qgS:įm?42ʤ8<`㫹Φu^! ~heI 0 q1x]E(-`%#Q7 r}kyDj6yOw0ZA/(TF܃78 2"RGBARGBA?n/u]KPHy/]-Nj /%[u-@#s|Unu F;YuMD2~/\Unu F;YuMD2~/\Unu F;YuMD2~/\Em21 u>31z41 [51~Civ2,Ja޴Hm.Y[l75s֞i 3+w抵''u\HFFS:gRx {7_č$dme?)#J''u\HFFS:g RGBARGBA?xL>\mV*}?&^"<+ϫjhդnʣO j ڵ!ikψ9Je<NWͿ|G ?S/wgzwtm?N_{O+>ӾçW^ [I[J>wVzB }%i*`մ5ѷuaه ^ [I[J>wVzB xO']j>"-"|O=IO)TKGWA}Q/=@W㟅?u("`%<'? +GCz H7c׌:.(5'7Y nǯu;/] 3PjOd% n*ݏ^3E}=o?juxX%g%퓌ajXkِ݈&Wo}3'+ԴNS}2M;lFrѯ5=؎y1yj7O}%o|F0'(iXjw7 MlXoDk娌e<眊+;iHdV^һ(' ꕕ2Q[Gj {ݾrWA V %}TB QO0`s' õٕrD,Np1{.%{CDN|ÏL{uufuvUK3u0?& gs•u+P(\èv.:=O0 4a2zƑ|6p-$/o y=I\{wُImnI'u9=2'4U$S92Fs?.VߌMe$㽲p KTi*aI{d#9۟r4Ю5OE{_M pnpGP{c׊Oix~}\̂8m,e6ulzSK}>/ͬE dFl2 ^ pj*!gצ⌞V,,Hָ6Z|ټ',{\?}-WZ>L|QŖ`E=NNN/Yn/|siZ7$E SJmG$ ӧ̺jzิ8P&b$x_ou?GηOpV"g,\gn6G$_XA C5 :8$% jTtp}I) J8* +   ``RGBARGBA?xxFٛ9m䵖&;Wx#ţ:4ow%7d|Qڽk-1ѧ6f[{-eɿk&;zbk9q/ˀzsXä xY:͵6tLo`G#WgǯOd@aO3Z,0Y^xRӚ8|y)㜰x\E ; BsG>o1-:Wz Me4^78\q:Մ]^]/lm5!{^ qǠVӮuywSKAxCzɥ鋨D\yLcO'Hu>M-}?L]B&cy< hx@ޫiim+b0p.hqpGhi)i2Kۢ d/]sqpGhi)i2Kۢ d/]sqpGhi)i2Kۢ d/]s? ^ɡk^Ϣi:ؚQxfKUnqҸ? ^ɡk^Ϣi:ؚQxfKUnqҸ? ^ɡk^Ϣi:ؚQxfKUnqҊQ;UV³vO{ 2Tdt Q;UV³vO{ 2Tdt Q;UV³vO{ 2Tdt +мVωu D7權Y[s]F|Kh`H!5dRӚ4/]EkCD y"V>^]X4mĖ<1ߋƎe .,|Qoƚ6KMGqlz``Wh>(M@% w񣸶YwvA=00(mw^ysx]xʅk\kkŚ˞ cT+]G=k[],ׄ\kh2Z>93Er6^SӴ`7zRZ\YܴSGjV+wڰ R7FcZƩUbzM .cxkjV+wڰ R7FiIx RST63[ 8*@ :iIx RST63[ 8*@ :iIx RST63[ 8*@ :*5O;XtBk6k{79#N}O u? au oͬ}dX[99>®x3]/㵇A,!6iyb9nX +OW~"_~6gy-C;0$Q^>^!ahG%$I F2z?x-a,wܑ$3@u+C?7:R-BQtfʳzqS[z)l~(gx ~Y܃}8)=eΔ?hP]3ټn?rnAޜWCşMʽ[MM$$\? 7Uqgoo?VSI"W,zMt?Y:?z[պAH(nQxck7ړj:?,`8'Gnxck7ړj:?,`8'Gnxck7ړj:?,`8'Gntv_8-Mf] @VgZx'q6Z,ͬI~*OlY5Yt;h/)4xBW=Xc}h+6U# 8 o[8 +6U# 8 +bI>d-)Gē|8[TS1ɮ'TqcӓEz_XY..j°\\=af3z1FFF;@7 )G^ ɔ]#xGp#A,*?מ|'?<TyGp#A,*?מW׸׸EQEQEQEQEQ_ ``"Dacl.gif" +add.gif"3yall.gif$ attr.gif([]7binary.gif([]7cancel.gif(lD;hconfig.gif$[]7copy.gif" []7cut.gif( ţdelete.gif( []7device.gif" []7dir.gif$ r(down.gif$[]7edit.gif"X,ext.gif$[]7file.gif$XEPjfind.gif4 B2RGBARGBA?R}55kXe[028l;{}K?լGbnf £ ?x/oSVJ^u 3(`c """jnnic8EeK` cT-[MѭT-,`g]L)lXqji5j K%-p 3N=cFO^ꖈy(6UA{UA{UA{QKKKEQEQEQEQEs>+[IKypGE$X<碊+j5-7pJufӳmnx yb?r7WʇYVo\q7:xŮ/&sQ% b\U rI&{,G@0($rXPF} JFyAk:cC{!XM"{@}AóDM^"JjG$]ޗWInMoڥMoDnoGQGӽz6g[,)HMbd@N9H-uhCwu=AkR袊((C6v% 6 jOc>Ws__xfF6qzSt+ jNf1fմ-K4c(_Whޛ.rCd?6>akcDգlE 4VjVYIq#TRI5YIq#DRI5 mnQ+߈*^'2ے.x>|=bPrͧYKyB깐֞C\|y?=NāfV}=%.zI1$,7ԡ1`1qɢ!*Bs4I8h1f^xŌ~qArk%kC=n6yS~&ӸͤA澆2zeռm\*\|q#ymDOܙEaΒ#6r+cN׬G? ? |7 ň/CLOzVU!OQZvŞGt;]$jŲ9Ȣ-'K_!O&|OZwmeњQ[zgl 4d1jOے'Џ:/uh{ L$T:]HeC7john9K ^WX隄~{zKny<G4nQj6K`& QE|ָkPFuy}?pc!l_EwkY@P##>IG*s4V7)Mf 哲@z:ٮc:;qqfW9F-9k)y5yZ/YCI>}ه"WWQ-9AZ>v ۃLټbs}h41BώİF]|I,X.YqؖO֨dR2E L0XK(PҊ|*y5;ַD|U Jh^UHi(!c{ +_W =ԢeWn[ a*;j,k}6m82ڟR ;qd^덭:#bp94ۖ٨If_#4Uwsf3)Uڧ5w7%zV5<":Ox2ivlcWRGRX,XwZ[XJHXdbޕF+PctJ+_m!Ԥ}x+_=ѓ@GCW9dSg#Ɗ'r:X_}3=ÞCoaW:mɼn[MHo?YN@zs5dNr`pGJt[ETprz{Yڶu `ʇ(OOmq4EGrvzzeQw? 7[}_:D* agQ^PhzWkxKwN1?@8^_ZüF i$ +tQh1ҫy|tE"Lb!dv VuB˰'׵CvY6WC$̄y 2<72p5s3|sEU&D3owy'Õ3X,#+3Z#XXjJ$rAT~׷x~mj[5G`5OoK+lyv0Fcr?!E`-&#f5躲 %(Tgq+Xe(~5ty2eVm^C@\sXgi#F1(ZkC_oqGGYmvjP\2*H;zDUWe+&Rޙ'%NE*CiA -H6ֶ5+8X~B\׏t-O_b]9DcE;{^aq ꇂ*SIWF#$ѼS!F,ZF[nGsڹ_^AabwQ<}zW+kl,T⃹'+ӥp!F#8>i#w`sZIJ+4F8ʸgwZQ#GY{=kѬzDjQqϮh v4wΌ`q?lM3*L0I/ ˏZoh #K2j޼:+յ Ҭf#xEӤ]CE!_l׺t'<2.cd.\|bћJѧl2?WC7_e)UL2:dUi}LrI?*Vv8\d9^.&@|ܩzЊ)\jľo. n~\Օu{w1 v(9J@2S$ktdc\j*ʎõK+[;s2q򤼿,˷5;Ե &.ʦ}oj+|-e7@qBBC[tɚFb`>Z$=+ Y .ݱ» oB`P谘t9o4U^hB?Sp}L*~m(-lN{[d۵F zz m H*<1ŘYKu<;hH<qj_Y10游>0xC&Fݴf(|=4FKh>5Ɣp %":ksJ^_=oQ$BEzR+kBZ:ɤ5V9Nlq^6Ѽ[;]/Odz鳉7F}+70ú;cۏJԢb$ۏJ(FZ d7iEF\mJ*|~U_fPK -䷙>A4obZE30&+,dұqX1޼^#>[I-\Csj~xŚ̾na'7 Ɗo4Ե{җrw;a^Ӥh7t34쫅g9V|9;º,:uC-#ݘ4W2ouik5%[`mqiWK2I6Pr9Qz4W(+EG@1[((q+ݚxTx{iB:1\$iI- =A.;~p%gz0qh|0tZkdi-: +|E ;;E%Ι W hKz'/2Cj[{}0A5]oueRdǯ ++zE$M|'QUcƓ`Igi]A_B3g/>wq;,=EĀDں8# Z-'n9TS`+?S Y+\pW(=ͬѵ̠`3GWOAnSm5u++-ï0h%O^oȉsJkqͩHo58"=KZ1W- O<=}z2]jZ|g!O{פ ]jsb{^0 UF*ڨQREQEQEu/|=gtX[y/mcZF3\$nL zʸ|*׉kk+mNϩ VmR[ܧD'Ymsc:yAq? e4fQtK(R)W%b$ AE7nduSḀ=Ԗ+[fo 3Cw{d3EF ')TVƗ'ne/Y࿉Za?=^YuC_3T.?CdojE }  +WL W snk`W>-?LۤIhMwZ/Z m.+x'U<=rZi60:^[ܞZuEQEQE9102512 22! )RGBARGBA?5:/__ċ;^'on^hR]],(>9>&xn(G|%̈€ҾcWzR+*%\cjSoV 4{_ cQV7[__>ծ5+3Eyo;K2H#<]RH!A60. *KB&iGV$!__I]|Ts]6.L4y:6ICz_X}<~>~17goE r_;xcvv_}G%ڮ7^f17gon 2i"[Xˑ#=>XյhehW˴K?|n[Fh +BmF] \3 uE RGBARGBA?wq18+x{\G 3swq18+gNϲoۏ/nwӵQLi_?ߝqݎv?i{;;>t[n?@ABCEFGHIJLMNOPQRSUVWXYZ[\]^_`bcdefghijklmnopqrstuvwxyz{|~ qRGBARGBA?ə (ITݍ | ̑TMqjə (ITݍ '߳>ww=3Y>oNc|GvϽo3wvLVMo42AsnB;pjޝ&H.mY}Gb8# [ӵ53D͹ 4RHGut؏.3<[$0Y .{]6#kˌO#L$VBG }kM>SŲH Z+j+K8a%g $7y6\~9ҹa>4VpCq`u~=+K8a%g $7y6\~9Ҋ\\Cyg8@,YTw.{GN9peʧ3sޯ:tY  .VU?˞Tn׿cÿi^m>ݯLJ<{oqP}^Uyy߽:⊼9կ0XyU䰁w6y/"ү%ck)y0~p ~W P@RGBARGBA?{Ld1]H:vP⽺^4 wWj](8n״6Cڤ*a +}VkJ.f܏,=8]bQs6yeU#,N?4TfqmmHX0$ OjWt rO H {TfqmmHX0$ xB5&̙z@!fLq ~ɳ&fފ۴y #Dk<}Em<32 \4252*62%5>CgHQQE\ZC <:|_U5> àg\ZC <:|_QY!е5ni"BG wpIV=Gt-MuH>抏H5ocJq:ǖ,@9#=k["wLu1,X rGz"=#HeE;a*cX 8A^oakjۡ7Xkm-m[t1K}Mz-n Ic RGBARGBA?Dr37B7 gI=n o|6{Wyߒ4yߒ4yߒ4Qn_t_cqދrGr3[2;m[C5@j']m]T5MEC?`]s] KTrv4vyHi.R9ʑU4{wsQ`zU4{wsQ`zU4{wsQ`zE\gt)#8cW- o|H6UpwB 3v>W RGBARGBA?xRӵi-ɢU"f`{C^jZv%Y4JdLpHq|AKNդk&T ?|Y뾚wMM;V_&劣(>8K7hd)5R$JCmTfI0?g[fd+Hp_Jg[fd+Hp_Jg[fd+Hp_J*Q4UmBAsxmBAsxmBAsx]<%"ت@3m jwķ:}0H6*0p1L5xZ-Οyq *;  q?-z ]1Kg"m#7ޮ.;W(e}1RH9_LQOՅ~\*g;^X~Ei|:˟VeLkܫȭ>oV1s̩{a RGBARGBA?r͝ W 88}6v[1\x,o+r ھ[}xOQy.!Hr\ RNwd\Cg<#!3޹o=F紸y#pFC 7U&= ţ9\ fhZƗ Y *&܇ s72182992D03K$*4Ķ@ֳ<߳۷w;׶gGM/}yg-nwm;j w%G_`(~Ͽ[n^qv[+uF8;+uF8;+uF8%UҜwq"Op% )a!W9T WJr<,S%ĉ=B$,Xt\\P2v])h?kx]WQ.1i|8d'dN@]D`22I'|.Ϟ4Ϗ^9Ub4KD13T-23ald"0N d$>Pa_IZzew6w )S9A_IZzew6w )S9A_IZzew6w )S9AEc^^<R nE@NN\ 2q+ľߌ. ^Bu2*rpd񓌜AX%aqPW'dz + x[F><᫫?3H]BoF9<5mP?!u E PnwW8lׅmC4/ak$k)Am^+ xCCNK"؀qHp3W~ y+I-`E2g5 VZ;3q, db#AEnVnQ_:xOZqOjQiSqveiF0r0sE|? kߴmƩ>ENںUmy95[~ѷ&u;ojVYc#;^%4YE"afn}ÏEeoir7}49Y_뾚w z֟s5$<*حГ{S]bZfXD\Ayz|+]Z}׋+T#bBO?1Enn^_#DӼG:No|ȷn 0H#Fx?tZ3hodݶaʐG  yčN:,g"ɻl(Õ @<+CvV)//R_?^ۏ9EW-pok0CJP Nzb8uU!%C(@^'=1UKe:i /ѵ /olf@pZ6 34mB  pk> PBd`>+]Ն{ u :-0*cua^wv]CAʻ?Xiױ]PègZkſWOIּſWOIּſWOI֊ +JtQotll?ι=ħL6AP#ϴРHKtPIڷdNOy4(=v,>?M DEv@:+󽨷h1oVp?ںOkYO;ڋvcQ&~Ulޝ󽨷h1oVp?ڊحآKo%ԭ- oo|-Fp8WoNA"Ko%ԭ- oo|-Fp8WoNA"Ko%ԭ- oo|-Fp8WoNA"gO9aR¬?8*_U>fUH(#|62ǹ=MAkR(_.́OSPxhT1qp"8˳`c,{XciXciXciEvH (rE_~NcYG]-2dFCp:*Ǎ_ȊS69|:"+5Nfx8,<8a+~k>v+~k>-4>d*'_ ^-8CH2z-4>d*'&Gӯ&3\Y$`zMΏ^LfIb9?ZNqgr~TV6Q,B'Oiemak /r{V6Q,B'=OSY^ R * XMi _oW,&Դo b/phf\*\!,dǠs6 R 1` 6=6keė a1EkiOFh)Qe٫[O|~m|r3@J/Z;k仑f T`j+Z((+Afirefox-logo.jpg$[]7pipe.gif*\preview.gif&[]7props.gif*[]7refresh.gif&!-Emount.gif"[]7new.gif$[]7open.gif&[]7paste.gif&[]7image.gif,[]7makelink.gif$Emdir.gif&[]7mkdir.gif$Kqgoto.gif$ []7icon.giffile/images/html.gif0100744000567100000120000000253410754361754014377 0ustar jcameronwheelGIF89a01+ 8 < MD3 O%<&X3% \'V +^0b7Q3f ;n;%k"8t/7|A5V k/L)G}_5Kg8*# (""%Z9%"~A33 , r3802 nD<Aa?:]_\W??g?j>HG *{JoFralxIGQZ%=zI>yX)robQ Ql_TYYXxIa|c=KZ B]O\|_`HWdfzuf eiiooPEq!ml*l{Vl'~Qt{~HTs c_q v uZtrww3y%XPt.· {ۄWrK΍J`_W\ΏB11f˛2_:_¤+kՇƤ=fokdѢ@إء9Ϙ̛ qЭM~{¯˶YҲ_wӾ% ̸oᾸڽZθ ܺےW&F;3ȅ辴ǐ%LQҢ;е-n-j!Created with The GIMP, (4V@AGnvL:Ӥ99>;:H-5\HsϟovDhܢY|sf0ugI9(9Sc^nxZw<=R!?\r*U+ױH1',çn}a2eTCd 6b PAD%F@f'>Nk$3NH8'jŀ.QH NXSM KJ А۩{AE+VX fs 6&` `1 P2 1CD1m 0L0?]_,Dцε"ޠ2c O=P>1!,DP?$0 .DQ!s ?*#JS D: Jq >>???@@@AAABBBCCCDDDEEEFFFGGGHHHIIIJJJKKKLLLMMMNNNOOOPPPQQQRRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~!Created with The GIMP! , H*\Ȱ;mhre`Mb#G͘.[hi#PM&M4:l̈ ZK 8k̔))`hBE T'Fl^Ϝ8otYRG-^n deGI"=#F$m"rj3&*t(#.R!8Z D$ɓEɐ <` LVqR'FtH)UbRŊ&Erv"KL᾵!7Zl+gHDRED(KR8Lu*q uj,S 1ֱj!Դ,/V<1|NBQx"2րqЇ (;file/move.cgi0100755000567100000120000000130010754361754013121 0ustar jcameronwheel#!/usr/local/bin/perl # move.cgi # Move some file or directory require './file-lib.pl'; $disallowed_buttons{'copy'} && &error($text{'ebutton'}); &ReadParse(); &webmin_log("move", undef, $in{'from'}, \%in); &switch_acl_uid(); print "Content-type: text/plain\n\n"; unlink($in{'to'}); # in case we are moving a directory if ($access{'ro'} || !&can_access($in{'to'})) { print &text('move_eto', $in{'to'}),"\n"; exit; } if (!&can_access($in{'from'})) { print &text('move_efrom', $in{'from'}),"\n"; exit; } $ok = &rename_logged(&unmake_chroot($in{'from'}), &unmake_chroot($in{'to'})); if (!$ok) { print $!,"\n"; } else { print "\n"; print &file_info_line(&unmake_chroot($in{'to'})),"\n"; } file/RemoteFile.class0100664000567100000120000000735410754361754014567 0ustar jcameronwheel. C} .~   }      .  . . . . . . . . 9 . 9 9 . 9  . . 9 . 8  .DIRI ConstantValueTEXTIMAGEBINARYUNKNOWNSYMLINKDEVICEPIPEtmap[Ljava/lang/String;parent LFileManager;pathLjava/lang/String;nametypeusergroupsizeJpermsmodifiedlinktolist [LRemoteFile; directory LRemoteFile;.(LFileManager;Ljava/lang/String;LRemoteFile;)VCodeLineNumberTable()V()[LRemoteFile;find (Ljava/lang/String;)LRemoteFile;add(LRemoteFile;)Vdeleteshared()Z mountpointmountedfs()LFileSystem; SourceFileFileManager.java im XYjava/util/StringTokenizer i java/lang/StringBufferInvalid file line :  ErrorWindow ijava/lang/Error Z[\t \\\ ]E ^[ _[ `a bE ca d[ gh/ \[ ef list.cgi?dir=  list_edir  RemoteFile ij en  xy  FileSystemjava/lang/Stringdir.giftext.gif image.gif binary.gif unknown.gif symlink.gif device.gifpipe.gif VWjava/lang/Object'(Ljava/lang/String;Ljava/lang/String;)V countTokens()Iappend,(Ljava/lang/String;)Ljava/lang/StringBuffer;toString()Ljava/lang/String;(Ljava/lang/String;)V nextToken FileManager replace_strJ(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;java/lang/IntegerparseInt(Ljava/lang/String;)Ijava/lang/Long parseLong(Ljava/lang/String;)Jequals(Ljava/lang/Object;)Z lastIndexOf(I)I substring(I)Ljava/lang/String;urlize&(Ljava/lang/String;)Ljava/lang/String;get_text'(Ljava/lang/String;)[Ljava/lang/String;lengthtext compareTostabLjava/util/Hashtable;java/util/Hashtableget&(Ljava/lang/Object;)Ljava/lang/Object;ntabmtabZmounts .CDEFGHEFIJEFKLEFMNEFOPEFQREFSTEFUVWXYZ[\[]E^[_[`abEcad[efgh ijkc**+Y,:,Y , : Y WY**+W**+W*******i* * *-!*"# *"$***/%`&$lV=> ?@A4B>CHEQFbGsHIJKLMNOPQRimk*lUenk*'*Y( *W*) *L+2+# Y*,*+2- W*'3*+d.'=+ *'d.Y*+2*/S*'l* Z[-]6`NaVdaeifeiopkZ**0M,">,,2$+#,2lno pqr"p(tqrk_*'`.M>6*'6*'2$+$1 ,+S,`*'2S ,*'+S*,'l. y z {|2}7~:G{MY^srkl<*'d.M>6*' *'2+,*'2S*,'l #06;tukG/*)*2*3*4*3lvuk,**5lwuk9*5L*++6l xyk**7*38lzmkK39Y:SY;SYSY?SY@SYASBl+{|file/FileSystem.class0100664000567100000120000000176510754361754014620 0ustar jcameronwheel.I *+ , - . / 01 2 3 4 5 6 789 : ;< = ->?mountLjava/lang/String;devtypeopts[Ljava/lang/String;aclsZattrsextmtabfstab(Ljava/lang/String;)VCodeLineNumberTable SourceFileFileManager.java $@StringSplitter $A BC   1 DE   ! " #java/util/StringTokenizer, $F GHjava/lang/String  FileSystemjava/lang/Object()V(Ljava/lang/String;C)V nextToken()Ljava/lang/String;equals(Ljava/lang/Object;)Z'(Ljava/lang/String;Ljava/lang/String;)V countTokens()I   !"#$%&*Y+ M*,*,*,,N*, *, *, *, *, Y-:*6**S'F p q r s t' u, v9 wF xS y` zm |y } ~  ~ ()file/copy.cgi0100755000567100000120000000203110754361754013127 0ustar jcameronwheel#!/usr/local/bin/perl # copy.cgi # Copy some file or directory require './file-lib.pl'; $disallowed_buttons{'copy'} && &error($text{'ebutton'}); &ReadParse(); &webmin_log("copy", undef, $in{'from'}, \%in); print "Content-type: text/plain\n\n"; if ($access{'ro'} || !&can_access($in{'from'})) { print &text('copy_efrom', $in{'from'}),"\n"; exit; } if (!&can_access($in{'to'})) { print &text('copy_eto', $in{'to'}),"\n"; exit; } if (-l &unmake_chroot($in{'from'})) { # Remake the link &switch_acl_uid_and_chroot(); &lock_file($in{'to'}); if (!symlink(readlink($in{'from'}), $in{'to'})) { print &text('copy_elink', $!),"\n"; exit; } &unlock_file($in{'to'}); $err = undef; $info = $in{'to'}; } else { &switch_acl_uid(); ($ok, $err) = ©_source_dest(&unmake_chroot($in{'from'}), &unmake_chroot($in{'to'})); $err = undef if ($ok); $info = &unmake_chroot($in{'to'}); } if ($err) { print $err,"\n"; } else { print "\n"; print &file_info_line($info),"\n"; } sub split_dir { $_[0] =~ /^(.*\/)([^\/]+)$/; return ($1, $2); } file/GotoWindow.class0100664000567100000120000000467610754361754014640 0ustar jcameronwheel. 7N 6O PQ 6QR N 6STUV WX Y 6Z[\ ] 6^ W_ `a Nb ] Scd Wef g 6h ijk 6lm no 6p 6q r stu Pv wr xy xz w{ 6| 7| P} ~ ~ ~ 6editorLEditorWindow;filemgr LFileManager;lineLjava/awt/TextField;goto_b LCbButton;cancel_b(LEditorWindow;)VCodeLineNumberTableclick (LCbButton;)Vdispose()V handleEvent(Ljava/awt/Event;)Z SourceFileFileManager.java BI 9: ;<java/awt/BorderLayout Westjava/awt/Label edit_gotoline B Centerjava/awt/TextField B => java/awt/Paneljava/awt/FlowLayoutCbButtongoto.gif  edit_goto B ?@  cancel.gifclose A@South I I  java/lang/Exception  HI  FG GotoWindow FixedFrameCbButtonCallback EditorWindow setLayout(Ljava/awt/LayoutManager;)V FileManagertext&(Ljava/lang/String;)Ljava/lang/String;(Ljava/lang/String;)Vadd<(Ljava/lang/String;Ljava/awt/Component;)Ljava/awt/Component;(I)VfixedLjava/awt/Font;setFont(Ljava/awt/Font;)V get_image$(Ljava/lang/String;)Ljava/awt/Image;8(Ljava/awt/Image;Ljava/lang/String;ILCbButtonCallback;)V*(Ljava/awt/Component;)Ljava/awt/Component;Util recursiveBody(Ljava/awt/Component;)VpackshowgetText()Ljava/lang/String;java/lang/IntegerparseInt(Ljava/lang/String;)IeditLjava/awt/TextArea;java/awt/TextAreajava/lang/Stringlength()IcharAt(I)Cselect(II)V goto_window LGotoWindow;java/awt/EventtargetLjava/lang/Object;idIkey 6789:;<=>?@A@BCD**+*+*Y* Y* W**Y Z W**YM,Y,*Y** *ZW,*Y* *! *Z"W*#, W*$*%*&EB 3HV^jFGDo+*]*'(=N**+N66-,0-- **.*/ͧ+*"*/)EF#&2=@FTXY_bjnHID- *0*1E JKDN*+2* +3+4 **5E&(LMfile/lang.cgi0100755000567100000120000000077410754361754013112 0ustar jcameronwheel#!/usr/local/bin/perl # lang.cgi # Return language translation values require './file-lib.pl'; print "Content-type: text/plain\n\n"; if (&get_charset() eq $default_charset) { # Convert any HTML entities to their 'real' single-byte forms, # as we are using the iso-8859-1 character set. foreach $k (keys %text) { print $k,"=",&entities_to_ascii($text{$k}),"\n"; } } else { # Don't do HTML entity conversion for other character sets foreach $k (keys %text) { print $k,"=",$text{$k},"\n"; } } file/EditorWindow.class0100664000567100000120000001525510754361754015151 0ustar jcameronwheel.          ! ! O J  -  ! D D ! D 8  ; ; ? ; D  D  J J M   O ;    S       ! " # $ !% !& ' !( ) *+, p J O-./ 012 3 4 5 !6 78 79: ; < => ? @ A B C D E F G H I JK L M JN L H H HOPQnameLjava/awt/TextField;editLjava/awt/TextArea;save_b LCbButton; saveclose_bcancel_bgoto_bfind_bdosmodeLjava/awt/Checkbox;file LRemoteFile;filemgr LFileManager; goto_window LGotoWindow; find_windowLFindReplaceWindow;(LRemoteFile;LFileManager;)VCodeLineNumberTable"(Ljava/lang/String;LFileManager;)VmakeUI(Z)Vclick (LCbButton;)Vdispose()V SourceFileFileManager.java R  edit_title STU VW XY java/net/URL Z[java/lang/StringBuffer show.cgi \] ^_?rand=` ab \c&trust= dT&edit=1 eT fg h ij klm no pqr st sujava/io/EOFException vwjava/lang/String x yz { |} ~Y  java/lang/Exception  edit_title2 V_ /  g o Rjava/awt/BorderLayout java/awt/PanelWestjava/awt/Label edit_filename Y Centerjava/awt/TextField  Northjava/awt/TextAreajava/awt/FlowLayout java/awt/CheckboxWindows newlines CbButtongoto.gif  edit_goto  find.gif edit_find  save.gifsave edit_saveclose  cancel.gifclose South    _       ErrorWindow edit_eover save.cgi&length= \ Content-type text/plain     java/io/BufferedReaderjava/io/InputStreamReader   g edit_esave RemoteFile  T T       GotoWindow  FindReplaceWindow EditorWindow FixedFrameCbButtonCallback(II)VpathLjava/lang/String; FileManagertext8(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;setTitle(Ljava/lang/String;)VgetDocumentBase()Ljava/net/URL;append,(Ljava/lang/String;)Ljava/lang/StringBuffer;urlize&(Ljava/lang/String;)Ljava/lang/String;java/lang/SystemcurrentTimeMillis()J(J)Ljava/lang/StringBuffer;trustextratoString()Ljava/lang/String;#(Ljava/net/URL;Ljava/lang/String;)VopenConnection()Ljava/net/URLConnection; set_cookie(Ljava/net/URLConnection;)Vjava/net/URLConnectiongetContentLength()IgetInputStream()Ljava/io/InputStream;java/io/InputStreamread([BII)I([B)I arraycopy*(Ljava/lang/Object;ILjava/lang/Object;II)V([BI)VindexOf(Ljava/lang/String;)IsetState replace_strJ(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;setTextsizeJprintStackTraceequals(Ljava/lang/Object;)ZgetTextlengthselect setLayout(Ljava/awt/LayoutManager;)Vadd<(Ljava/lang/String;Ljava/awt/Component;)Ljava/awt/Component;fixedLjava/awt/Font;setFont(Ljava/awt/Font;)V(I)V*(Ljava/awt/Component;)Ljava/awt/Component; get_image$(Ljava/lang/String;)Ljava/awt/Image;8(Ljava/awt/Image;Ljava/lang/String;ILCbButtonCallback;)VUtil recursiveBody(Ljava/awt/Component;)Vpackshow trim_path lastIndexOf(I)I substring(II)Ljava/lang/String;find_directory!(Ljava/lang/String;Z)LRemoteFile;(I)Ljava/lang/String;find (Ljava/lang/String;)LRemoteFile;typeIgetState()Z(I)Ljava/lang/StringBuffer;setRequestProperty'(Ljava/lang/String;Ljava/lang/String;)V setDoOutputgetOutputStream()Ljava/io/OutputStream;getBytes(II[BI)Vjava/io/OutputStreamwrite([B)V(Ljava/io/InputStream;)V(Ljava/io/Reader;)VreadLine.(LFileManager;Ljava/lang/String;LRemoteFile;)Vusergrouppermsmodified(LRemoteFile;)V showing_files show_files(LRemoteFile;)ZtoFront(LEditorWindow;)V   q* X*+*,**** Y* Y  *W***N-:*6:1:6d`6R:@:6 : 5 - `:      :!Y":#$*%&#'(:*)*+*,N-.-hk-" -"%1<DOX]hpd* X*,***/0*1+23+ Y +24*1*156*1567 !Hc*8Y9:V;Y?Y*@0ABW,C*DYEZ1BW*1*FG*H,IW*C*JYPKZ)IW*)*FL;Y?!@*A0B7C@DLESFXGmJtK|LNOQRTVXY[\]^_`dh&i0k?lGmKnNoVq]seulvvxz|}E!** ** * file/FindReplaceWindow.class0100664000567100000120000000652510754361754016077 0ustar jcameronwheel. Jb Ic de Ief b Igh bi j gkl mn o pqr Ist u Iv mw x Iyz{ u|} m~  I I I I I I  d  m 7o  ?b ? ? I I J deditorLEditorWindow;filemgr LFileManager;findLjava/awt/TextField;replacefind_b LCbButton; replace_ball_bcancel_b(LEditorWindow;)VCodeLineNumberTableclick (LCbButton;)Vdispose()V SourceFileFileManager.java X_ LM NOjava/awt/BorderLayout java/awt/Paneljava/awt/GridLayout Xjava/awt/Labeledit_searchfor X edit_replacebyWest java/awt/TextField X PQ RQCenterjava/awt/FlowLayoutCbButtonfind.gif  edit_find X ST replace.gif edit_replace UTall.gifedit_all VT cancel.gifclose WTSouth _ _   ErrorWindow edit_notfound java/lang/StringBuffer \] ^_ FindReplaceWindow FixedFrameCbButtonCallback EditorWindow setLayout(Ljava/awt/LayoutManager;)V(II)V FileManagertext&(Ljava/lang/String;)Ljava/lang/String;(Ljava/lang/String;)Vadd*(Ljava/awt/Component;)Ljava/awt/Component;<(Ljava/lang/String;Ljava/awt/Component;)Ljava/awt/Component;(I)VfixedLjava/awt/Font;setFont(Ljava/awt/Font;)V get_image$(Ljava/lang/String;)Ljava/awt/Image;8(Ljava/awt/Image;Ljava/lang/String;ILCbButtonCallback;)VUtil recursiveBody(Ljava/awt/Component;)VpackshowgetText()Ljava/lang/String;editLjava/awt/TextArea;java/awt/TextAreajava/lang/Stringlength()IgetSelectionStartindexOf(Ljava/lang/String;I)I8(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;selectgetSelectionEnd substring(II)Ljava/lang/String;equals(Ljava/lang/Object;)Zappend,(Ljava/lang/String;)Ljava/lang/StringBuffer;(I)Ljava/lang/String;toStringsetText find_windowLFindReplaceWindow; IJKLMNOPQRQSTUTVTWTXYZ**+*+*YY M, Y , Y*W, Y*W*,WY N- Y -*Y(ZW**-*Y(ZW***-WY :Y *Y* *!*"Z#W*Y*$ *%*"Z&W*Y*' *(*"Z)W*Y** *+*"Z,W*-W*.*/*0[n $1F[ckx$Jpy}\]Z~*1M*23N,4+*#F-,*25`667Y*8,9:W*2,4`;+*&~*256*2<6V-=:,>C*2?Y@-=A*1A-BACD*2;**#E+*)6,46*256*2<6-,6Y68?Y@-=A*1A-`BACN`6*2-D*2;+*,*F[#  # 6;Pcfnz !$%&()*+, -K0U2`3n4q5y7}9^_Z- *G*H[=> ?`afile/root.cgi0100755000567100000120000000027610754361754013151 0ustar jcameronwheel#!/usr/local/bin/perl # root.cgi # Return information about the root directory require './file-lib.pl'; print "Content-type: text/plain\n\n"; &go_chroot(); print &file_info_line("/"),"\n"; file/PropertiesWindow.class0100664000567100000120000002011610754361754016047 0ustar jcameronwheel.            "  '  + + + +   5   :   :  C    K   K :  : ! " #$% & ' ()* +,-./ 01 23 456 j 7 j8 9 :; < => ? :@ jAB CDEFGH I JKL M N O P QR S T QU VW XYZ [ \ :] ^_` a bcd Ke Cf gh ijklfile LRemoteFile;filemgr LFileManager;save_b LCbButton;cancel_bsize_blinktoLjava/awt/TextField;usergroupsetuidLjava/awt/Checkbox;setgiduser_pLPermissionsPanel;group_pother_pstickyrec_modeLjava/awt/Choice;octalbytesfilesdirs(LRemoteFile;LFileManager;)VCodeLineNumberTable add_panel6(Ljava/awt/Panel;Ljava/awt/Component;)Ljava/awt/Panel;click (LCbButton;)V update_file(LRemoteFile;IZ)V recurse_filessetup_leftright3(Ljava/awt/Panel;Ljava/awt/Panel;Ljava/awt/Panel;)Vadd_itemI(Ljava/lang/String;Ljava/awt/Component;Ljava/awt/Panel;Ljava/awt/Panel;)V set_octal()V get_perms()I handleEvent(Ljava/awt/Event;)Z SourceFileFileManager.java m no pqjava/awt/BorderLayout rsjava/awt/Paneljava/awt/FlowLayout t uvCbButton refresh.gifw xy info_getsize z{ | }~  save.gifsave  cancel.gifcancel South }Center LinedPanel info_file q  info_pathjava/awt/Label  info_typejava/lang/StringBuffer file_type    info_size  info_modjava/util/Date    info_linkjava/awt/TextField o     info_perms info_userPermissionsPanel   info_group  info_other  info_stickyjava/awt/Checkbox info_sticky2 v  info_octal info_own o  info_setuid info_setuid2 o  info_setgid info_setgid2  info_setgid3info_sizeheader info_bytes  info_files  info_dirs  info_applyjava/awt/Choice q    North  chmod.cgi?path= {&perms=&user=&group=&rec=&linkto=   ErrorWindow info_efailed z     t  size.cgi?dir= zjava/util/StringTokenizer   q Westjava/awt/GridLayout  0    PropertiesWindow FixedFrameCbButtonCallback RemoteFilepathLjava/lang/String;setTitle(Ljava/lang/String;)V setLayout(Ljava/awt/LayoutManager;)V(I)VtypeI FileManager get_image$(Ljava/lang/String;)Ljava/awt/Image;text&(Ljava/lang/String;)Ljava/lang/String;8(Ljava/awt/Image;Ljava/lang/String;ILCbButtonCallback;)Vadd*(Ljava/awt/Component;)Ljava/awt/Component; can_permsZ can_users<(Ljava/lang/String;Ljava/awt/Component;)Ljava/awt/Component;append,(Ljava/lang/String;)Ljava/lang/StringBuffer;(I)Ljava/lang/StringBuffer;toString()Ljava/lang/String;sizeJjava/lang/StringvalueOf(J)Ljava/lang/String;modified(J)V&(Ljava/lang/Object;)Ljava/lang/String;(Ljava/lang/String;I)VfixedLjava/awt/Font;setFont(Ljava/awt/Font;)V(LRemoteFile;ILFileManager;)VpermssetState(Z)V setEditableaddItemUtil recursiveBody(Ljava/awt/Component;)VpackshowgetTextgetSelectedIndexurlizeget_text'(Ljava/lang/String;)[Ljava/lang/String;lengthJ(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; LMultiColumn; MultiColumnselected showing_files show_files(LRemoteFile;)Zselectdispose8(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;'(Ljava/lang/String;Ljava/lang/String;)V nextTokensetTextlist [LRemoteFile;(II)Vjava/lang/Integer toOctalString(I)Ljava/lang/String;getState()ZgetPermsjava/awt/EventtargetLjava/lang/Object;   %**+*,*+*Y Y N- Y *(-*Y***ZW* *(-*Y***ZW-*Y***ZW*- W Y :Y :*! W"Y*#$: Y : Y :*%**&'Y*()***'Y*+Y,-.*/0()**1'Y*23()**4'Y5Y*678()*7**9*:Y*;?*@:*-"Y*A$: Y : Y : *   %**B*CY*@*DZE  )**F*CY**DZG  )**H*CY**DZI  )*C**J*KY*LMZN  )*N*O~P**Q*:YRZS  )*S*>?*ST* @:*`"Y*U$: Y : Y : *   %**B*:Y*V ?*C**X*KY*YMZZ  )*Z*O~P**F*:Y*[ ?*,**]*KY*^MZ_  ))**]*KY*`MZ_  )*_*O~P* @:*"Y*a$: Y : Y : *   %**b*:Yc ?*dT**e*:Yc ?*fT**g*:Yc ?*hT* @:** *s"Y*i$:  Y *jYkl6  +*l*+Y,i. /0m  !*lnW* @:*o*p*q*rZVST UXY!Z)[5\?]daxbfiklmnqrst8vpxz|} 2<c&.8BTfp",U{/=Eft|  $M%+s,nW Y N-Y +!-nW-#'+**t=*W *WuN*\ *\u:6**l *lv6*+Y,w.*W*x.c+Y,y./0.-c+Y,z.*W-x.0.c+Y,{.*Wx.0.|./*=c$+Y,}.*W*=ux.0.0~:2"Y**2W*=**=u;L**:*********6**W**+**+Y,.*W*x.0~M,2Y*1,2WY,2N-:*f-*h-*d+Y,-..-.0*%  47HQ$.MTejw}    *7= H!S"w#z&~(a5+*WuV+*\u[+~+O~O+O, -.//142X+6+E+2:*** *. 6789*:2;6<>=I@Q7WBV+Y Y :Y ,nW!-nW,Y -Y +snW& F GH I)J2K?LLMUN`4-'Y+(W Y :Y ,nWWR ST"U+V3Wc7*S2*tL++Y,.+.0L*S+[\]^._6a*E<*Z*O~<*Z <*_ <*E<*G<*I<*N*O~<*N <:ef g hi#k7lKmUn_oippqst:+K *o*+y z{}file/DeleteWindow.class0100664000567100000120000000623210754361754015120 0ustar jcameronwheel. GX FY FZ[ \]^_ `a Fbc X Fdefg h Fij Xk l d \m nopqr `s tu vwx `yz !{ F|}~ F F F .X . ` . `  ` 6h \ \ ` `  ? ` ` Fdelete_b LCbButton;cancel_bfilemgr LFileManager;files [LRemoteFile;(LFileManager;[LRemoteFile;)VCodeLineNumberTableclick (LCbButton;)V SourceFileFileManager.java P LM NO delete_mtitle  delete_dtitle delete_ftitle java/awt/BorderLayout Northjava/awt/Label delete_mdesc P java/awt/Paneljava/awt/GridLayout P Center MultiLabel delete_ddesc delete_fdesc Pjava/awt/FlowLayout PCbButtonsave.gif delete P IJ cancel.gifcancel KJSouth java/lang/StringBufferdelete.cgi?file=   ErrorWindowdelete_efailed z  FileNode    DeleteWindow FixedFrameCbButtonCallback()V RemoteFiletypeI FileManagertext&(Ljava/lang/String;)Ljava/lang/String;setTitle(Ljava/lang/String;)V setLayout(Ljava/awt/LayoutManager;)Vadd<(Ljava/lang/String;Ljava/awt/Component;)Ljava/awt/Component;(II)VpathLjava/lang/String;*(Ljava/awt/Component;)Ljava/awt/Component;8(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;(Ljava/lang/String;I)V(I)V get_image$(Ljava/lang/String;)Ljava/awt/Image;8(Ljava/awt/Image;Ljava/lang/String;ILCbButtonCallback;)VUtil recursiveBody(Ljava/awt/Component;)Vpackshowappend,(Ljava/lang/String;)Ljava/lang/StringBuffer;urlizetoString()Ljava/lang/String;get_text'(Ljava/lang/String;)[Ljava/lang/String;java/lang/Stringlength()IJ(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; directory LRemoteFile;(LRemoteFile;)V showing_filesnodemapLjava/util/Hashtable;java/util/Hashtableget&(Ljava/lang/Object;)Ljava/lang/Object;chLjava/util/Vector;java/util/Vector removeElement(Ljava/lang/Object;)Z show_files(LRemoteFile;)Zdirs LHierarchy; Hierarchyredrawdispose FGHIJKJLMNOPQR@**+*,**,,2 * Y ,^* Y*WYN-Y,6,-Y,2W*-W0*Y*,2,2#WYN-Y -*!Y*"#*$*%Z&W-*!Y*'#*(*%Z)W**-W*+*,*-Sb 4?E\dr|+37;?TURt +*&=>6**2:*.Y/01*W2134:25 6Y*7289WY::;*<>*=>?:*=>?:  @AW=K**<BW *CD*E+*)*ESf "JTnqxVWfile/FixedFrame.java0100644000567100000120000000137510754361754014355 0ustar jcameronwheelimport java.awt.*; import java.io.*; public class FixedFrame extends Frame { int mw = 0, mh = 0; public FixedFrame() { Dimension d = Util.tk.getScreenSize(); double rx = Math.random(), ry = Math.random(); move((int)((d.width/2)*rx), (int)((d.height/2)*ry)); } public FixedFrame(int w, int h) { this(); mw = w; mh = h; } public boolean handleEvent(Event evt) { if (evt.target == this && evt.id == Event.WINDOW_DESTROY) { dispose(); return true; } return super.handleEvent(evt); } public Dimension minimumSize() { if (mw != 0 && mh != 0) return new Dimension(mw, mh); else return super.minimumSize(); } public Dimension preferredSize() { return minimumSize(); } public void setFixedSize(int w, int h) { mw = w; mh = h; } } file/file.jar0100664000567100000120000036064010754361755013123 0ustar jcameronwheelPKOi7 META-INF/PKPKOi7META-INF/MANIFEST.MFMLK-. K-*ϳR03r.JM,IMu (h)f&W+x%irrPKќgGGPKOi7ACLEditor.classW |=2G9B (ĀIGݐmzԖVem%R6XSeնֶx׳E߾}&b(x='k4ZT|CUOW5| _go("aP= nPo3pM*+Pq)8WUp[5^~!]?Ӡ! ) Sŏܥ# ~8Vz{ȟhX?BŽ*~ɞ>]xP[c)2U?1g*f1xT1qOxS񔆿i^e˞cmϳ'/򢂗T,`q_*^c|zż[ t=+@@ HW\5q?2 p_(*P諫XMwJ M2[LP߱7E'h%n3#O$x(ioHy/jd :[dc h(J`7ܜIv},H*BQsCoÌ;„y%?voIɫ[ aLxt¡ixs2^ = ZbA(ʋm-+бW#?:zp$zuD+q5c<!PeĤ$lN=dCIE8t.]E@Y6RkbwzP* ,) i[x(pmf4QH"w0nYA .>:_FyMog'W prtaqE(E(1L;1Ib2WHEd-#f_X_ί)++)kUK`踄K)769.i^Ȉb]526HE"!hglw,lavq!/dMݣ"^X5StLw]N]d)ìi~"4`ʝZd j9٭8VxuQI+x5GQy6㱸Nb5b""q.uD,U2],+tRIbkXz5ԋhEh"_3ci1oV2?7'T}J|uqRd}^2%\Ѥcq 3J(L]Sb\f[#lRC^dEzbQ3u$R{z(){Ol m0@B .5ݝk๞Y*DGʢw%3VB>ÉQر =cn˔a?NkMf$^2QAK>V'֔˞Q.eLn EJ*>>=lj3S-)Hot+O {#nzNsM,Ha =V܀*ے^-zF) !ZrE=lF== ͎ptw)G1.8 3uG}Ҙ\ c斬RK&T F[,Ķy+9`9iFLycosK- :wr&%J8UN3]Sft ,/Rn噇H4k 52}C Ġ_G2N0N1N/ E~IzǔV7v2v9ZUUCpTU 1\U5CpWѩ*"4ӠpcqmrTg ^*wtc>Y>`3Жp)\F.L,<-\89-Yݬ"\F=5Xm[kG!/Ic&Y79GrMrUzv,3VVgOauHԧɡ$FTeM-yZ-ŧs۪f6懰 WPa5,5^G7x go#a[qFx$t !]HE, Rۥ&?qn8 Uw)Y"R,wxdLycꨓMrEplsc7KY8$oa9Y(k O.t ΋ny\F]ؓGDӶUgK{!9b Zݒgtlg?۪mm&4II'b+̈NPeamZgAMi :s?RP RXS+Ga<_'k"N1<؎ɀ\UFCG\ŲMg&ftɓW ^n~y*n0"[lÓ *my&>g )Q#*_xe4^y, tJm˶6h笓Vمq%2Dց}PK@C PKOi7ACLEntry.classTSUl&[塴bUj V4ZjVX` aCM3X:Vg:>Lar=9ssl+v"Ƣ{x'C(FGyTAqb'X PC.GXeqL!S (ЃEC 6$ *H*RpBA30HK $Sp’ iW7a5J#A7ӶNB}ƀ(k!1]4OgM-C'3k%m1OBqSL#K-mCI?m=H)m~,'M33kX^kydQdq°# iw-,R[("ԕX}U%*v`$*cpsFRI6,!1%LVa#l+ '#{3bSȪømؤb;z/.SBb530l7;[xFNVqJՒ̠An^. 'FGJgFT7 &́tW"ktxU4P\W"aԲvӶ\l_glEm6'4I7Nf(7>xZa&A2uΓ#md##Iש+p9q٦iY7 " 5P_!>~9VEnY+#RG)~4?_GL:[=÷{2vF槚l?!ע3uS(< , 3tFL#BP l(Ũ Q㬗;땞D%2m+e VR"l]B@웆FXv+%'փ.[*a+sٚ/AcGTT$pf<~(YČ:ճ82;;sdIrsU {c>2|u9*SbV56Cd^PA})Tp7ETxZјv#[@Wa|[Oꢵv[-GYYV8rݢW7oF 1s4/G|aq5Noy1b[\qU*RvO&ҧhIesͷAu+5`[^ S V5Jآ3,K_|Qk "~FQ+ZoH񲸎O )V,BPKKuT PKOi7ACLWindow.classW xTOfy/% YD (jİDAp-N2dt2gް VQjN+h[*QV*Ruuu9罙s=?缗Ǿw;It)\>am9,հNz^ :nqe3܇[ǒM"M5pձYw]2~郎_iآ>0kJ(ئ P>1{}vvރ:~#'!Z p$E:S% f9.?)AH|h:񂨼:V%/ ^$ku(g|MoxGǻ:"xO_uo:.? X|"ç:3 ?IeW/5|k$7:RA-M<ID:4[vF)fW2eZ=-O^`[I91]nBhHӊ˒g|-m J&Xm$8F~4j拇8&"ˬɍXv۔[d<ӕo4ax$1JrX"f$ i dn%y635߹3A~r"̰B;$f[# ӌDY`/Mך̤m"l SF[.+p{\"=̤MN#p]42#/sZu6p!.bGLNb+fMyȫfN@K ,r°2K!Lj#aA R4ؠJb8sRdja,M./CZS<,p!Ȋd2h glo"Y"%,/TS(r`5ovc˜Z!* I :F3̈́erΣ1L# Ђ)\ȆƲ<՜Ҙ[b8:whѨhgX)6hP=~dAAxŀZ"mHPRScX1vU"0}NBMj4I0P:̠)tAGWp$8Ȑ(|̆@6 ,cqT7ՠz'AhA3hf>rCcE$11AKs j #^`^SlmJ٤1E_ 6߈8dwdE-5-s9=UTsKr"ؼn3"fR9lx>0V2ߧ qRVKw萈r9wSg-EY O R"RY(Vqw.w>LNSX`i4[f7٘WF]!՝L0|v267%ڱ.aޓ(EkZ?e{knX$6PA|(SKH)hl,Iz23tlِ /}HNI;mtR7N^sgq{aX-KHzͳ3xz/^4 TXqZ4Nqq[vˌ6'&}i+ cR;%"L[:WRelTX$F\1d(FB>b7FWwf`{GۚlJ%ZL[MLc[ g#UY/< cm8%YbԼZה,\}-[4cnaXAYڠl!cσ2_UP/B=<75ڀg o{ʛ$L,]M_?&,,|*O {zQQUc,4Ŷ/,f=f=*xV}:}tۜj ZktVЦT\űNu6eU:_Ŝ}H5x1X9"t'jk-Қg?#mɡ,ſS0?j sS1F-\U8CS]ԅF]bܩ.AoZ/+R]E#R5ԨVi֫>uzCm(ԭe궲:uGY\6SY֠bt7Cc>.sptչ]uW7`! 8Cffת8u<Y<y.gqlt>{u׹u8r֏\Fà{gG86{m:0MqBOsemwr4U\s-Ysyq Yoĸ3rG!M]b9c# MYOΫ¬sb\Rߚm{{''?*,v3J-cPU(p*2bְ]*,%!X2WQ/_Qp*&AB9&Vо|{2b7hXf?q&HƏ^ܦ`f"w(S]ܫ`nƻ{~~(xPeR#s?U3zPaF8Gx(B<;,q2~+a&㎄h-)=n:+3l$iie\3c {fKJ1uJ%H[$T;%Ѷ5׵S$Pi OISB}t>nk̄A2UCz"C왓٫ +宒660W+eve}ӭ%PFNsc'mU,a(p1ˆn3NdJװ 1 s9 ]X5!FГPiAog+㨆'q@&Ҵv Ӊ팫)<-a=Ź9Aʱ6T6o4B2@<Ȁ؃Aqf;1K܅9b/cxMAwڷ#e)/#QE^(TjsAvEr8g!Z͌67P5ffv/+%1zIkS+G1~ ߒ<mK.tAs׵"L _TDn!<":n)Z<^¢ZLj>,KJKUCDO^2)}Xb牃hE¥at`H<(mq8.8%pZǤT<#-I+q t8AV ^HF|<]zpsXå0PVx9\ssbn~G <~T1U3 :5#h$vd9\Ih2h)+;򪴼u9\K@EBx X$^%UװVf: \/-onq;ȉwx'_hy,E_-_C][>s*>bqV`PKp PKOi7AttributesWindow.classV xTof&K !N&!#$ $F2L̋3oBnZZ,.䅚JjK-.Zfm]缗I&䛻{ι=?/>x@P4t`Pn E*Uأ`7yה൸IxF׳ ܢ`RF:o[xV qx9MBb/Ppw޻T[{4,{ܩaψݼ_ {5C]f#Jn#{X0#/r'&\_@:]%H 甈_Gq:6VE4[mI|{YNY+E r,$f]vp_֭vfѩebWһ@aڌeәĠd-c[V\xL/֟qYbzণzz0$[k{YYOdWSoPTIBﭏr5r|(tw@v 3,Ql%m1yc-V,ﱫ3WcTGOs|}X3ӣHm~}I|H\Ԏ@DFQ104 аxJ&EAifzveG1dprSSF$YfoY[.Ŝ uEBcj,rx{#䏌a,TV?Q,XQXɺ#l(?T`9 yKFa:nEi`PP.Ѿ.lgFƛN]3j3Z;Uk]NW;q+[8e| Abk%U$YxSEfR.(0O6ale Mx@⤌lor+܁N4?pymIAn?ڇ1HCpp%-c}lJ.5(bz](c,I;=(D?{pSL=d֦YPK щ!DPKOi7BorderPanel.classTKS`=_6mRV!JZ@PWqG Qu*kڍ3.\ר҂bgr͹='|3aK8Z0T90c_1&0 "8q RqTǤBtَ B0<zbXKRvƘKSME2 ^#:Wnѹ] DL^m|#{-;vggU-JYa[f ydŊBz iz.co9vSv620cK؁4kP b qi8#!{Y(4V-)Qp-Vn;=>kܶAgvZR!' 6P+h'܇N얊4u=Jg\SQ[(\r=kIzx[y5^t~~P`5+U(3ehLeD߱ɘF E: +`˓-6P4@sevW@{aњe5]NF/+_،_3<7t׉~""=MC'b6OOT/{}a/H]̯ԹTE93\G*q90=a~@(rg}\E樿>aEE^$᰹0i U4fO ͞!Cq-+ͦXw4;NҿKi]sM]SCYUHacNXryy# DݝV{` ƸHoY>E_0Őa+b zu?*z#5ѨlvxvjdiE,.^yWo浺:ljj9C6Dzf%H\5ptxW%Yl} PV@=" E𺁫}CFG^Op@jBo)~f`H6`o91]/a7Kh]"V]{~nnğ |(a#Gj2> uH"[)ٲp_=1fLfP Ȼ;QVr}kūEZM0cY9M3֙A.VOR>5,m),*{p:QRv[J ɵ1R #itW lw>ިtGLSObNwv8:T` W#4^NF28j{E{g,w%)SocFLn+Zm'[*?E}猝R{RX݊K.8Xj+W ~|-!Wa`ٿ nr:7;jCnq0YVQx8Z_ȽހȕB| d+4Wih'DӐBe6DHir M+vD;Cx4'M!ƑN(3(+ 8q/p1 P|␹q9B 9q´8ʶ M<2R&kllHx Rx^ J1sXǑ%l#ꬴOSIt{?H9BE$E ˪L,uTu:;.gfuJt`zu ,q,ó`)g2|Jk? -WjyъQc17ssyr^./azrTx*plR#st/k^u6kZC',ǺkyDkR!\t: U:ǢJwqLUt\T|uR{w^vC.j7q؊!>G2d0v{>u 6_Ψp&p1>t:c?|"y%ElQr771J6QCJ|? ܃pW.z+W +Wws=ބLPAҕуBZB[[ Qao4Ł`V[DحO?p4c0CCo4.ϐ(ٹzATZP S3oSW6}[G u)‚A\ ⼐a4;Qeph27]r猞Xg)}sAO^h*L!S*YX,[Is;_;؈wb܍q^ >,ۜ_r}<a|L<`68qIҎi{,-ϥ8 '4 CawGPb u˜Ķn53|fH3^aV=KiO C _4|XꈳR4|aðc "`FG08_Ģ4pilrl))ᯈR~'e/V=jމ]j%麈%~@kتX2i0VC?I\_8 1/"o \.w=o)'PJ׍GǨҝLwQBV|c&t\ PK{2 PKOi7CbButtonCallback.class;o>=NvvvFlF^ $Ғ&3Q'/Sݧ{b/D:':S3\Si|/m]G_+ 7tǑ7SZÆIRn(eUnkcw@æ $lVXZe(,W|Vi5CZ7o.m[ޒvy'Aط6oc*#`(#xNxa~b-ъ_*~MK͕A `v|Nhhl C^#}o(N@ټ(&QҰm[x W4X² E ?Ejӧ. بڊBN2I X4 yإڔϞG]s !9yZ5K5~O>b؁BFap2F5dxbL/ ݼL<57b09ʰzΆ'!R"4qg_[XwH,^4ߜ/a9kyf8^g|#\- S m9X7b#xGKRD3$0HrUx1Q'mF;9FO*G LEaNАcمlZHS$ZH_A YlA:Go㌺&* |q&ʹ1a|QD0.%yΐ ~Xpβη[J](ѫW0KWbBgs-Lw3QA ,l1xuPvX6W)z9-2k3Cgz:y.P*c9ixQIRPKI~PKOi7CbColorWindow.classW |O0@,.M%!`adwH6q2KZ%RH6bZk/{V{ֶ}E}+<R؆~WxopkS 4ࠀku 7~ܤ= 7E~A|@|P(D!E6Xu2 u|rG1>*p(TEp4Y?k wpLE$ȩ{^Q}8!Af~Nxt K$Q) |YW<,&oxLC$n%V|ydF@H,v$0QL4P&,X[X`ށyB!{aӳq0 ܏m1)PbØ>,fchK0涇0/ (΢dmmb+XcKۃC8&X<DsM(4eLYNY5J=E!bDմt6eGY㣂+$/;.% _a(aO%l #nG<_^sPq9ҭfyyC*b~܌} $B6Cc'ehw t^ӻ̨'Fg>L;..ri,4M9%l![r95p$gSpl&l"64ʤ"&u1a/}*^PKɀzPKOi7CbColorWindowCallback.class]1@D+1HĊe(a .r7 ࡌ V7 œa|y1wU4M},iEkyO0#ZE_晒`Z]QW'0ZB^ ~My|0Bw#0? \:PKe]PKOi7CbColorWindowCube.classT[Se~6Y[J!IK=@DQX(z$k\S Z dFfٔ43{}߿ދ!<& *Ɣã*ӠbJ9 qLk x38f5xB {R8'ҼH 1\g1<⢆a, ,%+bUψ /F/xI nx+?+\V-nN(yfYF|ɶʦG(RLQ.uƵM/@R &?:i9? q?B/9lJd1բ-EHnH}NXD Zr^M3w.4i Rl>x!nBk?K^O:ؗnbm 60mM= t`[FpA(MzD_Zs}ćGǬ,S95/hu?δeRnpǩ>_!5FD JH;K=-lLhocj;Hw@k+it!arbac?x>sAt:~9Ilmʸ3{s{=}sA1b7qBc½I9O洐DȄ@H&q\ĩ4ᜐiѽ. 7,.7'ܼ7 bQE5q"WL\5h VkfnطL5?!t 5[)-єs=7;.ڥ5e $1D F-/$ ;$;ZueX:777t%ofN{5,p,4xFᐐ!f;xW:lƐ0%!xVaI|ð# 7pS&O| L`Y!DSZ&n+/qonXHy-lhزrGyLuq̥]Ί9iv=޴pCK?)& dkMYؑ & twg7m [n_{:!7vOUZmAɚi>jU]/;yunaKa޵,J1JXūs}6Zf5FG 9s:-'[Na#ک\yDDVϏ <[r!w47 dUlX! bC CK +Ck11N ~*E0#2VGܺQT#C>¶ތ_3C· f]H|aNB<0؞p:̎ vEO?'#_{޳^aIg??r?q~y9Nvg] A{V=ŁU' k=)WmVg jѐkr^,0-amMt:Z8MwrY`#Sشg1y/;H& '&I>qGZ ~Řۙ24=bV؃ΣFՇ9`omߩ󼾇.}=#=) ow6qnCOh;;1J5C#ushzM rTRO"wѯ@7Tylb`EBM a&c`&ګ$7D"Cta_N)޻PKV:PKOi7CbImageFileWindow.classV wWƲ5q$-IIԐiqVƩ8Q mF؞xQF#/@}aiR@[ 6K$R!@Yʾ8;#[p>[ww߼Љ8SBƇ8΃C /L(&EL1}Z73[" 2V.wcB=ьxXA!}X$]x) ]{$<}>(p,N">$2)O>t^}1)If0˴OHONgge<ϱ3"J^vKƜy}yy $|As""(Q--m hE}5ͬfu G2bI4 ȞehS'.u:MQ]3RtMXdV mi֘ctTIDaR9"%J=Jd 5k3b鑮A|ݡu{@h9[ yL誘r :&XY]Г!TbJfL ޫ&mL *#읠HuWٟ8%# TSQpKh%b> 9+쁥;YVQPtvܡ E|I2_cZ)͊fV|pGf ș ᰂo͖:}@MsF,ƣ Ocjkɋ|>ƺM9ZY ^`Gb"pZ8EUĩFA#FjQp(baD96nG ~?U0́*U&@TP~xY%ד, ~_)5~8vw?xݨmg? 0m*,/ );A,)sUrm3[}'vp5:%`MUap[Wa׸{Z-@PӦTN}.$kէTRǩfrQ #j\ZT|}'u6[/n X[q\Z&6{qZdYD-崾>G@Mrs̥SeK1/flˉ~膼z\M>qDFjbأiMsgd4^ͮ 7_t)dCG}2No'jNͻX]vdIEz&jEN4McLgMiyd1/lP&UݎVI*"Y ,QKev{}ћř;3rg>Ro+oě4; %aipB_3Om9ͣ.\7^h'hq P̣!ơ"VgS{yhpIe%45d.\P#z+ddž JL 73pweʣ5|sh;C H:1l*g*\K pzp=vЍ؁p#Na.`7^$GkExQҜEԑn`0'shC;M<:Sy dB9]?Et(WG[wy|-qi[ۑ B_2A aj {ABaq* *#@Af'Fzn'_FI+:Lmmsf)7tw$nZƭcЮap7qy±mQStnxM0Q>fDfl7d24DQT#5Z%\AQmOriOm;YyۮakQTrIs1di2Ø)CEbΣ, 8_\R:Fӎz橆(vKwr1= =9YKm:{_9>{O1IF0Cq^}Q'#0$d%K&ڒ&oɤQ̩sQ̭:#rb9wH6drѰPЈYef0P&']99.Gj=NQ8hX$Z$ʪ0lJ ~- P8kUAVә_ òޥR& _~ C\r2%za%!ƼݿsdHYbU9v26 N"WKБydڗfZF:Msh?[>vLgy,,ُY7Y"ͺ/, Qm6vi V u Aю >R%>DZj_`Ơ+!s=58ڎ'])te[;XR f[5]ASk|7Ԟe8b~Sp 5x]Nj⇍ AmHWSJ$:/CB)gpRdˆaZ]:T'l 2+«|~]$o ijq Yk㾭UUU R*.^ex ECQ^{as|NX<]"=f-2%42k~zK=o\+qlc7֋E wy]wU~1cטq|߹R>gDlx.ţNnԝިާFp8,-+kZE(&Ի2' ۔O_!6 TWL_E cw_Vc) L?1 ;75(ϠlWR3Ewq/<Ϙ;5BPKd. PKOi7CbScrollbarArrow.classeTWunf&4ߝ{ @/#xс+oD c# c o \x[ %0!0 #b+|:nDЌ{kNǼ:tOPWݜE4!\zdLP;?vdC* r8b}YX{` *t|LwMj͌h{:V47}A(nA+!kzOwMYAR+Y GYK\A+ IE4LPHM!<0>|NN[ԈgԄ?Q 3TCDt: Q:GSIw:Oq+ꞺY6"FVK_|vzq-8~W4C”Dz8@6RhB'F3_$L=ATL5̑V{j5/5#,ŧ[Pym_6oF^uQ:^u0TFȆ^PKHh}PKOi7CbScrollbarCallback.class;o>=.vvNFFA "kO0F6\f^:#Wp~iQr[fN*#:IJDFa$!D TIKOJM.ac``d`b&Ff 2l qvPKgPKOi7CbSlider.classuVYtgFIcylˋ;',;u@M68i,iɚ5Jݛ.PRcXk 9gxߝIFq|{!\ đhrZppp焛.%%yfK d9@I ,4`'>+9QS|Z峍x A({/r(VA2N.ce|@K&DrVAd2˜+U/ ,Q?KAh|b>+P5K ư)Q"Hd%gioe~e%#(`&7W4dK&^~`̖FVFVڟ[VyƅѰU1I CcMy,LcҺ`W5;LVcyD!9~8:Ob -%=_GuQ ұW`@;v |wxuxxK6keqGu'q uˬC /)HVUu";9QҌPښIΚ #N vB(̺ٔ|U-g`,bLBAMuTg #g9+~LZ^aEz,^"g8-͛HFm]?7arD9[Bvtȥ\|t]v)+Ȧ1=.ǥ#.uϱzlץv(L>⧹~H=ªr5.;IowNt*z𖡒H44^@H5]F[2:apt\؁PٍFh+&Ї ^A]m%;ăM /Gp8^5sMje>[?SmtZ1AMLN+ІOLܰkY̴:W=W!LlhMu :ISh4w8K>IU"9n'B]EGp[!7pCBFXK5T7؏1Kš\i+m>%Ŗ^*e1~rw8:VIS~{?:p@EW;W7$'QU];(j]֥@s4k| wWsbq=q߳mԊ(gc i<$D 簄~|9ˏ_GאŇxDƼłҌEv,)\P𤲏xZI%g9<畿xQ.z/{F$^@J`p^k׈q9TiecnvF7ٙoQ:Y=x{2/HIm-Bw-1lj)VZX58VuUyܖ.5YPHj1yQ0t2zd?Q2AWw2I"Ӣx- ¤S7l iq=_}]%이37pVsr+6>V|/u]/sq'NM1TTu45Si9# /?jMV;&#xrJ=~Hlp SJ;f3䯙?Q_hES!#qw_W!}WQRPK5\ۜYPKOi7CbSliderCallback.class;o>=.vvNFF> ̔"kO0F6Df^:#Wp~iQr[fN*#/L^VbY"# $'e&100201 #3 f@68;PK@pPKOi7DFSAdminExport.classTRA=CHv3DA\D a.E.rPVQnl}K|U,)/PwD%>33ݧ{Ne~|9(蕨B(q6\bsYW%$\S0دD=*%FpCM*n踂 E]HLo/n\Ǵ֮ފQ T96m 8 DLtGGӺҹ1{6-cl8 r"KWåb*5Ҍ[%J2g1irq Љ;1LAZchg46 $=k{ӰW# :aXnKЭ*gYf0`.y'9R=6A$*z ֗?F3OFWLkbh;sFB4_rc㍨eYM.[~ZɣbѰV<'j~]@꟪Pj"4l#V׉38K!mbUB3Zv0`= j|j:M)3tIezީTM%,aee,\9Lv=VaO3\ĝ)jf :QKM«"V7rǤYo3NK06?Y68hd@MQonN;)CXޖّxxxF-'[j)5TeȦ⫏YӠnetefgHok>t3 vJҺJ 8|?SٔSu*/o0XbItkj1&~XC JUe3}@8r"UҶpUakvb`:FPQlC5j$Y7sVWB*DqoMiҝ龤qR qL6aZA]!(f5C6F" L/@ueꋘʡ$3>WDf61$'XkfF?몜w_P LZqkI<[&*'䮙= NsS>sDZN:,$Ut?G h>BUz8#Q=!ŹtB!z-#[n㸃;"UQ;QN'sē)]<-ug\^?S Goo->wn[)i YYL~Mtpn[]Gy%b'#oݳPK PKOi7DownloadDirWindow.classT[WUL2aR mkm­-^hET4 ^pi83|(ϭfYﺖ.\v>pPqf9w9?s^|#!G"qYSnYe2xZ1qWOs4z*׹k5aU]U{՞B=7Jvos-;9_͚ zԒK"mϺsvγr1QuRqKxN% *sKQ2(i';P !!86G])a\;S;Z*co])wDZK_ֽ;S'bXٌaq2o05_yV@W6Ho- 3w|SؔԾ5I ߑHWӮGBBF|+K|"BQ|.;)_<" 5$"8|*QB x5@}A# vn !3/GƠ/^om*E;YA/*pwix^V>7yqFYU|@|^F"{ak1/X̾E!I=Ei/3*nYy۽haV9 װ_pċI|/گ;x_Ý<|:ky*K@pF`Io7-1lfWcid&Q+һmSDčTL ⱬ]Ƅb[:GXz/I {Y4R-;c2w9Jl1#sz6X)$p^%~~yݙN^+ebffk I+N/ 9t.wy1 BKgG}9o E[&ׁU{A۲It|]ܭc;v5 w䆆L*6mR6s6PǏpc_W& XDzEM&" ~*@~NU-aG:03ƾt OMl5R\tGшi;3"c%J'c_j2tRuWu xx&zYxD`9S9S h"2kL֐Y:I1\7Q: IQS82OxsgIvAMuNis>d=2*6[nkc RF239SD="(Zy&IM`}hbJ}9}ŷaK()}fz"RLO;cK׆袯(@ @_@^V&mR҃;{hOz\"*R~QJq>dYS\OU\-kr-y2$fB~=@l>k\j9Tvk)Wb]e-VT&l8袄ʹYjZـ6و--/[qS/!ymxB)8}nPKT PKOi7EditorWindow.classY |T\B2` $B@ M2d2f&@/lEB-E_ Ou}t[}]붻mkk=ޙd®_9;y;?_g̦_|]o<|rϙx/_t(tl"*3 U2{^B\PɁ7L~,OL:%?/?b~G(2Q_wRE"(*db.ǟe&}3Q.ro:>0&)Gν>W0NÁ&M'j4(v5X:0(MXOl" ehY4Ơߠ2O0hA|.0iM[0U]>4v&L 4ˠbHDJ m ]d\q.c2\,%cINTfb/ʰȠybmܶT ɰ\+$bbJyRen k=BY#s $*ٮҩV:]IF6at͎ de؎ʙkI¨ܥq;L95+:XyBmh F,UK,shHz(hA,kc{pV:=+yT]-qˆ!F-v\vncJ9;a:fh4~0 '/'L d9蚙ذe#kQ{Mg{lS\G"h˜x8ril7VkMpSP8q$douƛYZg˝u,)># lHۢAm:6S=ȱ6j'l\WcJ3ԃf;qh*f-E:m(Hjb'㝉"BAbˢٴfj[- (SEQYA;u[ \Q؜+4p,j.\ 5X!xFu5}\AL `Toy8c t#ŀ;yq'lp9DouzCv&dg-~`Ԏp!ىd6&(έRҥ{+/I{wvZtn)5xPxVgZe$;m!qgx9n$&E.iLRpvK٢3\~!޻-taN-<*k=pG{-:BYt?=H\[uipȎ6GXFn^N$[IwsO-qjdW7a s-=JY8NY=i)dїx~!I?èvt&`˓~E-:A-q0(%+IzآSt54p/=+uo` Y~໳bVc*ReH1(h,JNBȱD`8=2s8}FNnF3N.5us+4L;谣!BpZ" sH9#+m]αoٺ v{u8 '0!P\9h3G1o$ck`˧;>|c $I?$`6w}"ˮ؅SAW|EؼH0ݑ.Bq]:٘HAJ&tx~0~o93(02(#L6t4x5Z[;}T0i__Uk O$=㣽')`yu%eJ65+istNvw<,.9 I V5r~j\ɏø[P:j-X'8Jb5 7v =3B9 sg6C"ʸ}VI8@ ӐܙϙIswz~4=3g_>_0_+G > 9y|#RR]Z$F2WIJKho*4W~o e0_ib*\t(sE_ ϳήpFowc]H.O"cpnef7.)ʽr,w;~=o$& ^;,٘ez0ez1)\91l46k|3N"Pf0i\W͒}=([xR+SVh$)jgp ܮ}o^ڋ88Wou;xC.^;u}4T~DS7hcjorTE6mj~N/RuKPV8U9)\빳|Ra賺1&]$$lp_ 0`¥7Chkb;4ig mZH @qP606w W.b}K^,Mķ.g[zĞ\),*I/]WLiɺwu=gs\j}|J>4-uuBZ!b۔S܋:#%Kh#$>rtd[YG%=K(8D1#Ԕ%b$Shց<6bOy|c`W\oآڇR~ESypSʋWIJ,OkU!ut*j ScV5oz}n-6 iG'sg)5ҏ/`_v2[cPNwa\du /{4/=1b' NA)ݰ҈WILkq|B뮔hs:iP-_W 8[qY^[w0Qc|a1~3)Ї^'^|,ϟ',Ň+M7\fwj^{UXb=5<Ѓ%cRIzy[nK/oݘV"xKep0Y(]Opg[6й?ݍنtket!S ƥ{pW7"&tȕ;g1< G =!zPt|ŀuF 0AM,5XZMf5mj&Wp*Mj6nSsqPQu1SqB-Bu9SiZBj)]*RTVzUIJjWՔTWеTk蠪CJ:уj=6j3=E^SWћjR]MT |Ug {.Rm*Y=Wgy6m*U'vyv=}ZAu~uqpg nM7wkѽw{|rnO$u sQyPKϳPKOi7ErrorWindow.classT]{E~$l2ٴ~@@t)TmEm$-%(.l([/;^Ec?ii<^̜3g{f;Kp,qSޑH] 𾄅,|vZBbFbSK vc-|&1W%0V)yN8Nq?Sv4p4&Q8,0iTh9I|C][;zS]nۻiHxQyNg2PK\#]PKOi7ExtractWindow.classVk[TU~8RjBEEI@s3gpY/e4T̴kЇ=5E<~zZ{w͝?PTC5*GRLaQ ֥*T)WqcxР" nJl ̐j+A8&sԃr=ha^+m*lWINvxd.^T/q{ ~Y^U3/GBM %qU$ _q_ x=:|DZ -f8Gj4QV#P!K:z0XR|~B"QWT_J Q]J#I šdh 6 05rhLKn|0ȼT_y9)z o )*@jw))pXw$x:hqd_ w`Ϟ-g=_K'l>bPjDݘԷ1y}S̖9?w ]#KxjD0\)'""\(E3D ֊VEZE;vM8 6ClM?mElǯb~;EޗbYo{|+߉ HSj|T\/pj iT+'KE5Wԝ cxΈSX=VN:8\ʖSd܉R+fcN Ot`l2}L7JV8Z_ l{%Rya؏5 qQq-Q8s$΋Ӹ*8K;Gޖ5/PKP_ PKOi7FileAttribute.classmmKP$M^Sg7a _:nŖ]b^8:C eL}8s?/,5`aLiQƴ4[rHc3:0(_IwWc?"taֺyF]DSx"yyy$Vao*3^ )0rElYOu,`D&%OfJzJVNfp RŒ%a/N7?PVn3h@iZ]TwV$ Hhr  C4Mȧ 8yP\7;К|UZ}(PAfK}G)0JsOSTGL38S.P,S RKyw u? +jy0>tΤG?HI477PKPKOi7FileManager.class<|TEۻ@ %D MH(A1#$/ ͮ{ E$T `{{f߻%Ŀ6S>`1;L~8͓K}Tlb۩AN`'T7ds&ߣx.*Gx#yF+^@O ŧQO)>O+^gS/*>I=_F늿A*5V|xd.S}b?d~S A>g&&E BI(ɿMd?9O/FF:*+~kJ0jAK[6PTM@H2e";*)ءN%v"aDihj5>S *+sJ|ct:Th/E_1;1IhnGo*a! xS!PߤDBH.i*v+Q2-LHudAהv$"Ӕb#GBut8xeTe$b4K\T5hJ>0 FZ CU ZJAsɡ`U9b+Cuሖ]r]exYfQC͚>;X+jU8(`o'8}: 3vqk }եdp'`M֫#rU6.CeK춧<ܰ)dhrJ[o6jʃR;hd#v$IH&;LF`PM9fxvjc>$0֚v$_ϋAotX N)( lI:*>%Bg+ET8"U^9dքC+WvD,gf0 GqÈ c+ԩ[l͚J­ڇO<6ՑLF+YՔ">UJI`mUE]=Qxl')F+^C]0Pf.2X<-X|S #->D*&Q1bjZ\LJ#xV-y\m ,>`+,ye%{[sK5K^Q4֒kc%HN^o䍨v(b8 TH4>X|:8%ʛ,^ȧ(;%pWtcEE-yi4=O)gC,^J @t䭼 O;X(dzz4m6 zL BE x(v˒Fo[6A$s] ݌*B[-9e#"RZcCӈ% Nhr -GRLPavaqա{ⷑHVU"E(_!:@d3p Emڥ!&AhЊcBc Y n1eOAE$[YgjU(-yҟW- -ŵ[  nA%4!Rc*^\`oPõCV8J [S-yW'MgQͱ,ޙSP8pk40\wl$sF,Q"J F]wĜ OJ XM,TS֩ h]q|)`]UKb i&!IFUu->fiZ٘X&{?Xr! T{4R  x OԐX͚Hr5$ 됝 kDJv#=`d uF,EN)^^N)pXŒw!ִzilyF'{&#,έ́ƀI3tX:_-WhKY"4kq^mFv tuݵ\оT 'kcKqw-~/+ a| fnxK8,s,v2`svp{HXK1[,Dpŏ"=mbǡ;v^tȷuӝEpCmT %MJNy%l-y?-ܓfikF+ôTﬤ d0@=tokkF&DZ|1_bɽFK!K>,K.x-?(# Ԕ&O22@`J̠|Ah|)Z%Gʗ+1_ }l|6$s_ PPSP~8aDU*^}`-|/$ۖ|k-|ߒM%? ?Q ZS u>[ ?Ye&Kћ_!u[ǩL-t N_GױDMab ?ٺg_{*( K .Gڻ!ܝe7XƑFeq[ƽ<'Fe-cc0#27GYpHh4Wj_RW s7P}{4PYT 5Kjp=vD&wqA4C\05#Ȥ4!)4H]0i;v,BQRsmV+, Yu5"F-ԇG:/2Т=h1VނM;/BmKyA݈A$)16+P*oFQbYOQ^`oB> G4NWx ca@&'Z&xQ7:@;hy$k9 -ǣ/&g]jI@q^4N?'nW Ñ`v59G`ўlaNl]TԒiv=|ٵTS#YpK:=e7;#ӮELD ЫbV{ F˫L9=AQXmxaJn)^Ϫxhl{Ss[h:Zqlb$>ԑ/8Ϣ{-mۮ ݶ>|)/ 1VҚ;9FN仂#3|FV亭:LQ"R~ѯc3o&QF;*[R2egHNY<{jyt De.WY?Cvo8 >FI塊DS'$BTJ{Do`J^2TC>E#2Q0~3[jsuUki]8s $6Т{Ce xK;6WψiM%_>Ĭ.ӱSW "P]Y$T[?hjq,ñ>Zh? d+$|6WbGһ:(.n\e3VJNdƝߖ>_6_M3۰lJJa4N/9Z谏]u`یLȶZ_Nsm.}7@XݛԲZ,u>c{Юbk/i_m~N0.=jP`=%3"ND#O" b!%9R=9,0:qUUPɼޑN0Џ*鳇ӜS]ݜS;uSpN˩{;uSp#:өc?x}w4נ]0K0ES], 3>n 013E^ Ҙt3 ixyD30QazO5Af(ҭ*M!0g)pw&NPzP0S7rAfEaU q8Q>%m Df+|Rt<;GSp#issC9F"OZ N+Y9ܓHo3+a=Hv ?@e/('L~~:l#kc!~-w{ЦR+_{_c朅[;d_riq~o4N|{~Œ>$\#6bv|x68nyzOJZGǚ&b|鳼_!k_b m#!~S=Є(gl;:u ݟQ\~EAhP26ЉoVq{)%nCaSV~WHe|VLebV.M]**Sped%&暷6D272˗ܙuMS~'+_'}\KًTjb35::~_gf/u?Ku0`Π 0 t] s! N#B &A9ANEgT¹€s1\P ! [S1PoA=| 3,CYu/d~8 v2ɂp;aùZ8Ul϶l'\%qr'.ӡx\5| χ5z6a#na ǡwN ſ-Gx`H3DEhGb(4GLb.eC4xX\kq ):<-g$geWx^1𒬄Y^uyۛxKoI5F{Lx(ZXg'Eq=|fύ(|i<_77_+~t]_D5~wEOij8jbO'Sd3%]ecHќ:!jʺ+Ŭy=nnd>azXoWyX?(UO6@ eG"NdYխ,W= 9gCԯ,-PwGvb#y,=tOdl{.cǺ+8w>Mp_&VEN4 lMȎP6\ f֥$!d5`~p#Jr &&;12Fv:Ff֭ğ7?ХeKoYKX1\xNĥ%R ȆuaveLNc1f=ˌ sOFFƕx 7ҤOJ@ q4ׂ-廐0X:32Uaaݲ^v{I*ZȺ(d!$S8"i' ⸭h3lr m{5XSf-?ա9G^ٸ86-CB^ #!:ѣ1i3VS st^QvdQn*ˌ,{n4dkY  ٙ:gg{fpWAb^,%a]e`5Vvʨ呉i!,7 0үϖA"(TBnb]|Cu( 7&Yе /ifG&vLahˠH3lS(Mp5bYi<%cщ#y⡰QR{vgW80>&}OnE%6ŜɲL#q,vgW)*gW.Fsֲa6NtFحpݎ7kl#noY#]fl Ka4v/cV\y;l b;G:"FL(;n[۰L^ ,+l#&^)9b QVO.˦-qp)GF희s}{|WDξݬ粁3lU+0bsE`d6\jcTL]Ŀʛ579%]43gF>:7͔ 4*'̋@w5w t8hb11Os=ޅzۙ&ѨOIخh6|ʈ[1(b#,ϩ9Abyy0+Z0COlblvsݮ"ѻ}(kUSC0:a0R5iMz~:gf&qv^Y^1/>7=pJymjL#QŦsvgdˢllqGOA6E$ae;)8=Cs0ًPB5r9{fow^a x}?}ºOY>g 6}泯YճoZ}oG.O#d8;s'¯9c* Zf+P+7B}&`ΐӠHWN=wl2ccx!Ud|-cLg]m㳻e׀7[Z)QgNo~vF|јKؗl [csg MЄ7í>y*项0}tmnC f50Y م -.,tQE\37jL :إ6ɫe%>;X\Ģ;QV՛a=\8ٕ%8]4kfNB{rQv!X4fvȵsm3LL`:zהп_n`vF8f A';B7iB7ۄnI tkkBD:MhMhC $Boŷ.v_b ػma`3}^;sHuHdCMj3ͧ03 UX2kIn66^CK'QX#C4=gc LbXm;-jPbafk峴k<46hkM M{=:lA+ڳ&% ks ئRfkScD"޽1 4iM8fpIЖNq[2דunCg+JW"_{[¾#=A;@;K.ba vp3OmId߻݈s.ἦ<~[c?ЊyHif͸I"M7}A?J[jf !V l$S`}f*Ue%p S@jSѫM#y!y 3`$ c=ς|6sD~< P>kI wS`;/Atzo W¯|1^TF`L4/g3 +Y?]d:~6yQlem}ȯ`_0κƯŸ:oo|xgdf7:~_.~o ^?S{G׼w_/ތTO8?&&t_OSb!ZTgD-N,/b5?(ov{{o#? 9-G7'Y/2?%oy%?$o C\B>g)_H_ K$R/Mt4E"FW!Ҍ|Ř%H+E\˸N1nDc8Ҹ_dxEWbl":b85@!FƉibk:wA&w`ajѐ['Eg-1D.&AHB~C>emCp)if0/'ȣ!5sFOi i.V5^AЅFE35АcV- 恅 N.E 8R̄1 &P ! @Cdb~IY u@|G{H?=J^#[ۙցcqHPzhNl(%?3ZҚ?x!#CXD5u E-/NDOjE=, pX epXp8 6nq܋,_ OsYq"Vg|B\߈q1-.a\\ʒe,E\κլ W^W;5 VBzgdR]=\8OxXHNH܀F(@X MBq\1W:KNYܱ 8Se/\GІsW0H\K6n$$F4-wBqwC`cļ_/x{X#xMa4lW"}CkFm\m"fFY}\g:l܈BQ6Hd_W[yhA< ECڵQ!ymS0[< %YF<Qjjpx55h}M#̓fܖX]Qhm_8K ֶ|2 vK&S-quыR3Thrf耓\r \n 翡AK9j0X|GoQV,a,?oO(*߀㷈v;\CeBr=S=70p曍`x%ڰo;oEWY{汿1f|礲w~\HebFὖ F#4Zi%eַƍv5poh{Kg }h?,/Q2cGSpz%%!-xBv م<1ٝ2Ѳ%c(}C% ΦSg/;.ďH,))DZ}O7e:HH:fwFJzdt7$]2lgsu$u-Zl>*, rU@ c@p̃v1sn _O9K\"@\}~oyҟ)yL{ _YP2(ʾ-2p|OH_(J#"k9}ZsqQne#uD`:(:n:Zn}>t@Ytz"0H΂Qr6LsH'ɹ'Ba9)ovv2R!j_C2#[9SK?fgj*eз87'_bI Y@b71=:ʏIzGg?OΫ$ۖ6[Yb#+a 8*_#41tb~[Ήo#z:gVsR짆"vn;3띙y8^[/6 DotlN@<.&4c Yʾv? a*fw3g}9s`+5*%rlՔqsOjJ]lZ-[],`~~[UXO更. /2Jۄ0_D/4(BFqVϳwN+}mSįlu tGQcE0E^RTa\ +|y-\!5zMIZx\ O[ z7FBn_,yɻX_ 66Fn-E=x2ϋw?Dŝ(ӎӳJ6KE8&W?_/)W?v궦dw s?ڿ.5O}hM!!8F> G`|cP*%r? B%)&~Xy7B~_:mFVCڱ Ns $_X'l߱ `˘qL#'y9yާ4pF ^N\eNmpi3 t< 䠕6G ǘ3 ,Dr̴3N*̲#A:MУcy$c& ܟI8s4gO18kZBUT ʣZ,XHP]s5LΝ HĴcX25@ )q"ۙt9e\s0bA*lhX+.̂Zm:9, ,㼊 *^U!&x\ewqYB0k,c΢ u"9~$Ň Yk3+~eHPɭ} v ,҆393>:qC)[.lu@\GK/餎۸4t O WûJ驲ei踋{Ϳ'qe2[8xl܆S6A<(AwSDQY58cq&c40o|KwE?!_={=A]R.=x8R=3ij O}4÷JAۅcc=v/Z E"cѶ}hwt7S_y1fϳ Y&76e}"-0-!#5<;(x+_|ď5%ȭ ɿPKbPKOi7FindReplaceWindow.classW pg~{jaNl!%ne+驤qjI@VYV 4PJ(PJr#\b(-Pn 3- Gr e`V]xw/z\NăB"$,,:m%thKu8RӐ1*جp\N9 WG-D`üJN*%^fsRtr7i7kM)ߢ5Ώwq;q'Xzωމ{q/$ױO,}Qǃܯ9G%$%>&Zɴk;c;<7Mm2Xdu̚C%E屣 s9ngi+d?ʘ b3p\@ukg,03^MXnIg6e+j>@;$^Kg`r iL:qJ ͦbL!*C{켓<K}Zg1p İK[v9j]'i3=f(w2 139t)ۑi9| )5,>J r.?'P=;a`n40)\mUD慀L҅*,QbBJ;N =JHj #;-pz g.FQMn]3+wiU; Nm\pa1K*v70_j^FαL2.$j BB;q7<[+^aрWo/T &O2䧌# !6PYhiAf{:E>w+0@?A! 12f )L>A5c3f(c38&$S24D*{1ʁ?AA+I,\x>B7Gq>Ʌ Fx{C}" $j y&d;<cdϵ0lB h?`PK1EPKOi7GotoWindow.classVwUI$toYdtCPP J[PB$tJtSq_Pٵ*9 HwRt{w޽߽} EkŃƻm2UBB7elwc&TA3wb7;񐺅/^FHlChU0QvkcF{sCA&ɟ3 KF٭%K||Mq2^ky?oMo/m BwMFdT|OZ I' X'T|TġKjqpR=cqі*dT|*(2V$6 'ZUTc1M1qBIfN _WĴx7wZWqgeq^U|oT| *61E|'㒊^?6RD)α#eȰVBMhR&cv{&@Šq;+aģU%7f2$THX7v*Zӌ}9ʩ*iȔ%oӔVAIXOQtٽnt|vW]ѭט> sfiٙlʔY]"uɟٵuwj`f,[}P+=ݪ6)NC:ǣV=R۴D5VZ:';˞=㍫*ɏ5ai J*P;AyA}"ѭzм_ **44{b4^[Zz  InF J+M1 o4d_{f_ %Y#PnQns2]ȷ)a i07bvksҘ[FNKcY@ a!,JcqSђ 3`Y}5,d$I0<Q,ǰZ&q;I.NGJŏ~M1HH4ƨ"JjR4SMk~Y)P5.g<3XY^Lg]5VnUvutҤÜxYKEInGqğx_ & PKNۭ PKOi7GrayPanel.classePN@=KZA@x-` `4$/XeMi  `Gg&gv̙=?_J8ӡ!!uH`S%H."" Gx o2kn3ף^MLo cHg*[c|5]VRsG6:Jɍp$ XQk`*rph*N 4P@A|،>xBۙ0-SsmwPa/=!2䞟gH% P5M,dXt.].OQ-oQ5M rݲP aTJB)*JaiB]tPiGd?<PKg#PKOi7Hierarchy.classuW |f Y $ &%ˡ T%!Y#n@W[<֪x"RE$VmZ﫭m֫z3fs{o];g4y~>kdMvpp'g:~ō~x]oC/f;(."_V&`_ ]rGW]OtC1'f|A<"\AÃpItx.f$kFy6B˯cE63 gM˞N wG8&"}TgƜL l2)9w"ɶOٚxKYLFʹeO31:úesI%:2!Y.L 1UY\Tg:b.I b:q6hED>+cq2oKSf`= ı@BB1Bqv \JLDeo LbNĥ4I V]N-aӕP>>(bAPCt5lU*Ue*W ?U}jF"JCRUP#`4.ņ:DPCQ+`ƫ:CMAqePŪ7$u^1SSUWS 5M}KMR\#]5j:PG#T!NiYj61chjsFWs uk I(Tx|8)maXAtM[Јי6s]{OWkNS.Ttu8.qg)N!ɶlrɶvaXˋ[Rlܒp}ԖQIUmp NtRC!mf`J8he:}:+}WHo [3"vU4c 3$+e'Nڶ:i{yZSl8f0P0sŰM &F>iԎi d@L06~YkLoح-4jv7/pLUlVi!(0-y/V㝱vא U$ˇ&5)d3j>&GU*S1;/+&cYS- )w"4n 8^3 ձoZW“|吳d9CZ[5dnʙe'w eBtb8aifB(?uCPtct¡pCCŷ' M֟nLA y!^ =t/k}R.tu0$r5.XڅPhr(_ݫn bz hic2630s1RoӏgrfG҄a=FP(@ù+e8chhUi1ĝ53K(e)X8*ViE<ՕW1Qd?8/.]U䥛g^ef*yq9.8t6T(A>j/cZ] h8{/:aoKR_]6CU5^C4,/d8 d2c!ˣ%`Aƒb8+IP=?8gg38 |wD9fB%hqH|$WaCCXP8޵quGYs1/l%\8_A yj٩N!Ql]E}Quii?nL>RJ߇)$jV`ڕף\R % ]po*؇=X,;Z.h&buDAwc pTpA4,D|!rXV8+5,n;\!c;uth L,;7cdws+}{;܁؋ϡ o;%2]$aP}u3W}\g8iN̒fܡ)>J0[L.7(W,Yr=^̖lۋr+;7E9i-$r<  өOp={-ig xCɾ/ap=䑮`DekMz5]X 2pL/_]L܁V"?IO2$;YL鋜!ooK]M_sX|dFjbzÒZk x[ZMw6;Ru{GyaZF. '.; ӡ-ZTx-Mރ&}_zM[0E%WPW9_|MF-_eCcR|Ng\-—j=R |6uzE>Kbk'zqd26mVx]I񳫪s`T;M*zr4 5x5CjT U)-৬cAı`6wkNM>UVkҮ[]ս.% U GR~רJ4rFQ!Rޕ"~Ruvؚ%nդ,Ҝ,tS޳U9ϩ:6614e,8Ԫ0EMW'hY|~(?1waU_w?ZPKrH8 PKOi7HierarchyCallback.class;o>=v.vnF8+m6@x0]ɯ#.|a/͈tg4$F*Rʚs$>!~^T\` /U\Њ{ 0*hX mx7C*FCWCa^/rl`!&Ent86m̠m-zY k.6эuƳj(qq-QYR>D}دc7T븉Wt(A`fN>>{q :nuc^Nzic-R7&¤o)hY64i)X,HZ\ųw]*`ʮ9mCWJr]pSGrٚ7: 8'U|#c^>S|s| 8Kl99ʖ4o\3lnCq°fkHHј Qbq#a-%+KlUM+~EfISq!$)͒ p5 ]O' #//qӦ v>nNy<*{-~tAxAl++h/` &] Iڃ2 "{Y]h{-w\?3AcDpv@CHGH] `b{E9Lqb)gRJ's(CX\¯$[ =[]軀=.7V\PKnAkPKOi7ImagePanel.classRMo@}qNܔR> |q )[`hiEM$j'8į G(Ĭk !3__㶍Y/lꒅ6`EU&jn0227CGI#xWl0X&*j! M磨-ob?h0e E0F]^hFPF"~LG(V(%:'n#:mU]Xs`΂A k n:."Y'8`p 0|݈7CQݝ)"5roB Q}`)MM늤%;IaRHg'Bv{eaXmW`Ҁ(vQX]=}L=. =#twt4o!j:FFkRaЅ8kW"'yM^_J(㭧K`ҮD-d:̇JAyo()kIRNqv9 PKcPKOi7LinedPanel.classmTkO`~Fe0 pl¼ ND?iY:: ~O'T#DO2 F5==9m& C:qs:cňNب HӑBZEwEKWuຂ@4p#Yxk2+eVJ@"y=B@ڔ+ϬU.]\/i&ZAf޷nfʮWs@WrA꬯T73VKT&8@nF)Vp-60)w0஁{x`<㑁(X`sO ,)5:47*0ےJȆJ @~ vMCTrxᠦba"D̺kWs;Dke'ˎ[*$uhqISyzkvd&V>Mm{dom2Q2O?55jMVt;ZESEMo6{KHi)D.D* aIa ]:Z5(d(J-]@"Cށ"YFS;ԡe6:Ӫ&]Dwljo}s'()) زB͔A%͓xuZ!2E #{Y1G.Eb'^8Og 7Ng|̘ 0zF0PK8PKOi7LinkWindow.classWitW^,ivp7" $%@;qZq"'iFӢ'{IcFShBN =RZ\Q-ʾS8?N,[vġ>Gow.< 30D5X4hґ6MVÄIypBI>1e`vvu@kxZ\nqG~kxx7x3'w᭬6o^ޥnĻe=ޫ}l~WrC|pAܯ:>xO'yi> 9ጆjs*? 4i9l hfnkUsޠr:]9zU)#>/ySeUH#{ lUDڅwNF :Xʧ;jr$ sv$%[ƈSrӊqL$C8,~~(7nrJ!r '唆/x"[X$8ڙՍ[)֕[Ƒ5M| g J0¯bhDs&|WC_fk&ex U8))3\agZ5agM6&Q(&5*]͕xN5F[nuL ?;{ ^R{V6AGr0M ѶrTz`($()NoXzjYۯ$ɳ t-3ɜ>l0tn8 "7zńͨ,/vnc*zC;5צ*.vA;m=,]dƦ=ǥn|G|:uK]VVhFJnξԙ=ٱzuVVIi41?6@se~WVYUZ.N9E-0 W  ř|4/j wt!::aMwtŚֈ͇IbڵƱP&4-^Z/H, [P]4D֍lm>mgоv qNXGtmFvA.7۳cN^+[L-n1m}.&:Z_ Z\8^1J2N2LnbJvBi Z'VUѺ:7fhG_O$yhxkvki':ϣ 4ʩ"fq]v wEVq@B2蔊zVz` "Ug\~o"J| ]c Zo9z/];=~zGix>0J:Y 8DNTPСcY*iupuY:)ұ- 3YajFm8j"&r*b%^c^V^ΛJ 2* yg77&&̫؎x3:.w2qkAŻXF!G{>7<A«[YC6GU|X ԼebS2=D1 WPۜ>hNawTCse=ir"@Ofʾ:!tf~6˱ 6$#zLAlIӖ#w鍚8Y~XA떽d; ag[Ac2[Mmq>YHnrKGܲondWjA&mf@D^2q|/ )PzU7pj4$c8i2o4KL:{1d+*hY2eO8SQ!Y `/E7*$KPH^!Oxe_a؇u7 5iapssqX{7L@%xIG1YɊj`KO&$mJL'Cd8 RO;f) akW#tuGᥒGb|JOf^ɚn68scInpA'LƠ6K3QzLi@-Jys=rH;ҋ;S^e>aCPlj*ƥNZ/ݓ\zՈbI d5GuR*SC^:4K>z|9⭺\*LVfVnT$:ō靖L/;yAx2|;sP.y@*ruޮUGׁJSnI6P0}k ڄh8>\Fc::qO͡a|j-sFڝ`X*Vwƛu#xQ!Njgwhf~s5MY?P8Zq<)@bs]\xSvua8ln97pqETG9l"$ǖuTRK:Y(9n1G hYĴBhBkco8F(A͢w**t<&EJXc<}qXŹ]l<<(6HсӢ.Yt/_PKHj  PKOi7MountWindow.classVwEl2 "l6 19 $$I؝ (x+l(glB{[=]]Uu9UkS^lTI,",2b*Ty͐G36ȇ)c -*PWa1͢!- \HV]FE*&bOA ;إReVQxGQ6|L*yObO3*fY?XDx/Ez_fWd`Ṫ#uo8 !HJPk+#)׵YYɌfGB~m}l8DlhKFt>fr#a6oi~}}z"J;FHCkM˨O%"B0vn4nFP:\AmSN YߦkX2p)܍ƍ2oi85VC5,R #TouK+l'f8zr5ûgtKuˈxO#(aUZh'N*r8~2 C#c|SGpA( ]iX𬽯PvkoZO&>Im!zΑw^V&cm^J;nqd`u7z5ȖiN&&Kףɺ= )b[DJ 7uFdCLI[< )M9IsQxT/Ooi1,]u1!spL9qsAqw-;u /S12@/n$,D.WA"{geFzH2,'@Z@7LBBEJ r4r u@w@ t4.}'0Cg |]a7@gpQA.-ߨ4Fw 1 uccM3 0>LH "N nt([t`]]warpJAү0tI +H.p@T'j0F,xQIb)e/chF;JW4bX" b S_b=y%Vu 8BthPD{+1$*I&(\ˋs1m?ltq 4<%g1*̒v̒:0s2T;Լ Z]ܮ(Kְ̹è("2ф󄉅b3b ֋8t@` ؊>H؎b'.]$vjGPK#?! PKOi7MultiColumn.classX |U?'ߗMn)Ԧ"RZ@Q(Y(PنMҤ$) ₎(EQ@DZ epyoeug\<:sI{z{ιˉo:NDU|0ޤ8>bt6$v_]=Y/𡀏|Odo'MƿM#O2\0_|)˯kY~#[Y~du36i8κ.vSfYr`ɹ /@@ɬX.Pp'Je$er\.gd!`,Gx4"1B7V6ɬL6ƻ;OJU(`,'ˬZrx'Oi<#t5NO{TY?C0[t8sxn.^g Nnx  EN^zf8o^3͉;#s,LD(2^޿?1쏴NlHBVIHxSv Eq&Gs4aR:ߜ8G8 FX)]$ǃ`sIomup $d5;P<Ҥ3 O\3-ĔpNSCs,* ng -a*H)Tq('NjgO#lETS+HmfaD#1$9lh-0+_9'Lˁ; %roܛ4 \YaiI4KkpH(1 Jx3<`>'xŝMعVd:_%%7c),W]=Dh Բd54:%5W7>ę%yNj/$ͫxؽ՘{4$iuxq¬D*?Xh6hxO\/\f]%hf9VCEFٻRaF͙!Ou}ptBT۱`!p:\8{?$GK]HX0xpntsD37!`UF9=I]Jp#9aqIpЅAp|JP{0E#x܎X%&!kӜJ;yKy t5h ]hV6.v_mGyn2ʠRl?]ʠtA>-KzРr.#^+`4 IWWɁ; M5y]?f~^7 h#舓pmr: :!̞rHf 7pؠ]tA7npDQB< E7r8' ntrAso|[]'^}._$ oN|3^Ɨ Yp,$jw9~-_X w;o|fЭo60xv ǷsgihSG^:Ǻ 0Uzta:؍%[y+VgEc%T4?yp"?a]0\W1ո)آ6O Δz3{H>[ĥ[&RʠP"|tш$񙐪 ەUi-i)nPܨ*W&* JbK[⪄dc1hǖUπR:gÖ(zyT-ϐ(i6-P3%GS4B՜X^SQjq_yc$ B"\Z*eDLo3q8Tj:;PѺ4 7ŃM(Q.p7+gֳy^IU. *t $T3OVK(^jyVX^']˜JO_qm+V՝!E6xp0*Φ,Ia^7|2y0B[pyU7#"-Ԓ0JėnzPQ۩hKكHaET8#aeA(jħkT2VqFt jjxn(jD-W#QՈƫSZVjDFI5b.K>k:LA5?: ."n!is!>Bc}89z),Cپɵ0G7C>[ qPP{WqQ*bSqGSna>Q*K_y+P毠y HA2cTY>(K}K'Ayz^~ܐ7R(M04ht*MiOkGvq_;W*.aIMƟS5Z)ME#0ޢe7m.6e_1:7FS[3NPqeؓݱq+Uè4RY}_/FxG&Σi>\~Bw[׃ƲWUn*rENAһJ卢,ŀTDK ] S-$ ؿ6XrǥXʫ=t]l%.aN!| G?,{0^q,J4ܔUKcLI'EdLxb]Zؗcdv0roC!?$=Wa+͘9JZYM0f<,nc*Cxa7fZ *DB?ɩҘ)̅UUwuJZG'۵Mr=Hjp xf$D#y=x$'){f^:*K**Ԕg$/Ef}f@vt[ MW=kq۩J=V9U(Syux7e+޽,$I9Hnes41>XXX]mmfVz;nGH0Z7~3e %˖v0ppr`bMz2X8ѣ8 W9$Vy¾7xomJ&ϢwI8hwq=}̟,'{q`L>4%Z 2j ~@/'vBKW`5X|bizb1Ū:CD> X';c'vTHA` yy~a1%=1.:ժڧ=4'af#T:e9lyp'mkDor;z&˼ĹoSs;YHk]ĀB4)FM`}#<$W4X"OQVMqہ[Qvg;AeG{XqD2 Ը0v3j]:6Nu,+ 3Z$JÙ K LVHnӧ5N:~G`?Y3$$.Z?$$5 zϾERP^"O( xh[8ȕ-E2Zrtj\)jFnw(ۧdKnd|V} 89=B}>Qc_ y)Z4XE>`ҠߙГl#A7]B].rċ(#-0^BSY\d|^Nym╴Wռ_r+z. \a>y)GF]8οȝoym8_h[mEͶ/]m|y }WhީWkyZm3_~Aoxvo[wx7>}zߪ6}&n[6 O/3%۞BJFΟfX$P[n,,QVR.Q2E#Q)Mz* T^79HkwQiF;t<Ubԃi-if18Z(ubj6q#Qd5nN~Cqjꢭ aUINvЕu#`&L^D\ *;vpʧG7U@\C|s#%~*8rr=ZCS(|ȭJc0KSb!B3',u# &mEpaj[+>JXc+ChF>*R9FaPڰ5| ]UʏOIgizWyO_d;2{0_r5kXϯ2~ ox+@7:=?~ _~q#ا/ޱ>"(+wr4EJھpIڇJ;p>4FI2f_% -Aõƴf l:9-~EXm};}^j}c#m0&j}Y[{G5]3|؊(VqS^Kc|o/x{ҷLjY@:@>rݤ%7}ǪKrʲ \TjA5zWI+ 5hckz:=בӹSte&&y$SJ/mH:XwPK%PKOi7MultiColumnCallback.class;o>=nvNv.F̼TlFA ҜLzKJ~-hHI?h! %#&:pTC5|P{0C[$Md_ٗEʹ\MuJLK1 4<f+k<y~j8 xR9hq.fUVhjG2츴V+؉]vc:IiKLG?\ؓH3AcN:0cȚ٥c/ ^,&|]rߠ\s;S]TA>o-os]n~tt|+(imn3qfݔ$O<*@TxY$tٱt. JO/_WZ7H{mӑÎDEmd* 3JXDeJ`Z8,Gc6KCJy/7@:-L0b!&Q!n,5 cJ&\E2[n+-0B:wTN]=|GYky*Շrx̢WgHHL.(}ҳikkTV XxN#jǤXjXΘ=KwJaVo&73VR)\|nL'/oqp,uP0`y)|n_,7gdf Own$ą|ݒ1s'c +rˣzCpF.歮s9to_3MC=ݵ^Oסׯ9zzIGVbb1#P"1.RݏHU?|ɾ~#>Cq? \O,q(SEbR[$8y9)d3#rANmô8rM?{ }s;QI^^qL\vNXsA(JBזU5UUZ`m9ރx +t _7cvĢA G>)nBAQ ]T/+AQFkv+T|:ªIUuq.Nepq\]OYZ5"=uY5v;?i^q>punC wc(-폧8өgLb6h3w^Z⢎<_cDb(cR]/g*BEmd3:ZFLDhbdSP%|b1+4!QH, 9=?J,QMhx_PK(a PKOi7PermissionsPanel.classmSNQ]Ch(Ŷ^x\1x!Sz i)/7@@I4t(509g{3*pnQ12*-zbUP_0N H#8nX1To<ފ8a;*`VOMɖ>b}1PK髨PKOi7PreviewWindow.classV xWo6&a'"MH,mSHKCHC0;Ylv૶Zڪ҂ZM}T &m*QRZEZom9IvI/y{g~15BRq6a; S!CF *Hb$%* .1N} v2#,W\kY|Hq=*XI87H p#'rOS,>-f!|-,>+a[qos VlK8_%Kg w04, ~Ux~7- V#. ZpOH2((⠌!+>  +mtEHSqd@q0MF-4#Tb7n 2NOqæ"3^oԓFft.16=Kz=, 70=;ϔqe?AN]VDTt*:Eli6vF_c: C·T;A& }S3\,'㵛Lƛ212ecM4nx?T#MdlU?ᥟI;+T<T(' įT<_Kw*~?H?? Lw15Z)Ǵ**GԦI)5LXɧ(Jr `%Q^EuuwOww ImŻIvE7>\!!BGQ: O(P<^EGP< _'Y(Ø942:F0r?!hYO8cOŌA\8g`1 mЅ%O\!c1ƒ*XsgN `5Uu,T\  `1<C!9 ӳ^8s/W>?a0t tATv[o94`(Z Nd,,KdR=ۻ5 sf%9St!xNb1G **uQqǽbTmTè'Q?2(?JS?zn?q%_CWqc Oj֊^Dk"R+K2\*Vi~ѨMk]!"'L- lmV-hs^mI'n}qo\oaԭ0R-ˢ~ X>UceS bQ,*odh7Ve1դf]0Z:x[o&pk}hJxt,6 4wTr. hALѪ0Sbh5XբQ[vڵ[hKq,ll1VQwBr+?澌w5jZ7PKsʅPKOi7PropertiesWindow.class7 xՕ3 b<i&7V wUH~B:LJwwN߫>| ~B_}hF?I?JD§X,_$ / 7 .?TgSK(K^?$|}" Jtt&nBd` xL'Pc>JOrb-1ׁ H 0ϡta3x1G(8FX2p$$K%^kĉN8YVQéiY+U,鼛2W:Q'q %^#q9Jǰ v| $Vy ",fO-QZwKvj\/pvJb77Jx {ѫbKttC6b%#F`Ait:9i:`hsc!A AowĻNCP+fF Ae7X7?&BPڻ;>:J>QZ#: p5C-LG[> &~M]ht󺑯LVKYKp?񇂑%ޠ` n|-B&l$-z}msGK׳ѮP}K.qmZ *>  ah^R3~9V:=\cy}VaJ^BS$B-N1YjzkkpKQ12pD!{[jzC4ol"Lz?3_fz3B 6NXJl]ئzVDy - A_@R$o<]j @L V1#kpkp~!xD`A i؂kf>=\jjFRO$?p4A+#G#zCX47pR~j`Cpnf5hG5܂[5ix+n#n\LO[ ãdY]TSeB'K^pֆxMVWz9xƈnl!LY ,)Hކs;pMo}). wլ-5L2]❬.FmCҎO)#Q = Nה-[G{]N/ Ef79!Kry=.pXpubU4JO+m`GyPPjTs?>B>j{ϚFqA*&[APedt&r Ԇ7}3;R3U3R )6Sl^&A]c,{yNU UH& )oKP"t "km5T5l fwwsmhVm/!ܗbψA_J֐ kH!kH5^J֔ kJ!k$L3w+#q鞴D#i5[u?HIDXQ [`u61wA k/|gSX 4 !GƋ0Y /luh~7D'b-MGDqX-b[܌gT܂_[G!v8JN q^KxBr=/ŽAb3W,;C*q v}xyBv)ڝqL%+qe8lCyXt)Gi[t+gų9[G< ^t\ˮqnv uWL5qk~%pM{x=T!~##ZdE 98IE|U}!C->۟&k8N!GmpFUǠk2A,P⊧jNθ'ztV[gl AfշCvZ3כl.E&Q,l6GIF̺E峈D[T,# )R,-`T7l3kV"p[u;fgaY:`z;TfC&PPR(e\a`K^n7"xoC#. hfkHLKZvy! V*%Y;G(1VbYbęWsoc)i@IG)L3'>kşq_qDԥWKKnwJJK  p-_gHrUB[+k^u1H9[qVX5ݬN 6wHe.{bjcݩ5=*~ٻegۡ@ȍӲ(jxGE`(H0I(S&W e.y{KP3zgDfX;l\ ƶv[~3޹叠3m=BJCGD>!z+>!dy&\rE/N_=8I9tN HNk˶AEOr)n>gY= yIn>Uc!N3xGsgTN͋, %?i|>͏<:pU (⢊TbDŷT\bg!2I0-mlݲ{d0w rw<$H *$xWDo1HP6wZL0tc(Hwe{OͱҒ"Bc;g$Lإ՛552zְlbֱLY3SBl)pYb>Mɏ3TZKM$t0Kn;MjI3n{;6mwZڗ0FNg$hOyiJhj K{W[:AvѕOn?IOOOmhB0-"[pڍkzDWқ0M.k*L+Ɋ SUCP6R$t쏦ٸ71C &R@L r6.nâP$k[&onE~`j"^=i&O=Q0k.Pٞͦ[(H} bΤ`TV ~*~`٦~jxWCzgm\G VԬm,~7TO\VMAsR 5'޲ 6O74Uw ៸F٢L&4 DKvq3SoZzv*n+rQn(gUL{͸kf̌3Ѓ-y^߿Ne*L-SVƹ9EJWd >|p鱭4ܨG$> F%M(kdzلԾn46!1tܩtβ\):UҎ4e*{z27I|1T&b!®||΍h-lҹqﺩdq |4(5/\)~;.'vL\=kN/Y2^FLF,& Ǎ"~sr$׹=swZ܆hu?XMxM ^[(JzJF›Jppw LΣAB7ܞ:>Bɖ^] ;F^a*@9`")) :9V Y\a=eoy ]>C#G49Y-IJ9zB:k3\rw)w S@ ,d0M"4n6iAy>}YAzȵ#9ʎSӘZwZ9%pGd"3L;h0L`,1JqSC)F8{#X$a5:a.Enl%H61Nd%"q)'1)(1y3S#n/Ocx4l]ϫ)\|N~-\1̿W0 E> =N㋆).ZE|F-R_M:((C Nܰ)*ӄ]&*PdMwn\&0Z1O`Q4&Gc"$FcJ5Sˢjo~jX1(}ȹPKyEPKOi7RenameWindow.classW xo2̝LB $8+_ Hj 45LdaN XXj (֒ZZl2Zl[iZڗZmmϙM6a>}s{gx#f:hD._ա ѐpѭc50GZyTG> Ge.g(\J`:Jp[ՒaZ]z5Nnp[uTܮl wꘆX[a#4lfyGc*,>L!1N"?VMOt+47kxic~<>uĠ%<<إ(+x=lqQ[OmVȊY3G@vwm$cV'm]i*5nEVGhb@@sl&[ڪݮjZ(sFbw>g,Xa86;[ljrZU|h+KNo@0,@2b4 e~ N6~OHÍQ[>q@ 2$  ЊQCH8e ekՓ(l04ޣ qGp1tg?y/E-Tdeb/^i.[_e\I:_3kTTbLXY6  |5Њ0ԗC0`V0&-U񶁿o']Qa=K,j+N$>v fCֿ> !8Niq`A2b$A*`jmK?8LNB9iJm)l\BP!򄡊|C1(F\ayUb:ņ( DU8@bD/b֫#=v0U*+m!FLnP7 41/X~o 7r;YL7$+z,gF&{XMD ǖyzL604UήxpRɤSI< sA87jk"4)qߜJLRC6YpꉨkSjhv+=nj?ٹB~v#T4O#kװԜ2v4򂛹Ǡ`*]h$"ZC*[j\(c}":IzY'\q cF45Q*č;CeǨeZ5àu㩺E[ D&[ɝm (0Ni78٘d< N4r) qOˤvq&?am蘇8J&ojnNN&dT,~_I=9#_ܲ7FI@VZ'zNx>,;csgLH+ˀ*IF^ˆXNkZ$:;uB>7WZڄ)K]Owݟ[3ls;!4!,(ُҲ~dBi@>d4fA =ȣ].9W*oVPa - }< `q a -i =TKw3۩,8& CW@n)F䵸@^zt^ވ-&l7OނVyQ$'˻Qw W#zqWX k?@YI!nq<|EMPVx8}3ˊpFȲJq% ǟ1RXaNb*:̜MЊEdSΩTyuR[Ro -<S)QVx8wQ9m~2݃Af>12i d I';=Tئpȕ+USͦLs€7d;:i<Ϧ-y2<P,.੼? й(nWji$Kn=0epI}x^J ԗyXTj%Fa}/p˷B0=&b 0[>e~8r::~91(wa|n|o˽b'fb< j"yP4CC)-#b|Flϊm9C>/v~8$_GxG&ޗYYhV|w]PKHkLPKOi7ResizePanel.classuUkoe~fn"X@ BmVNCw̲KLAHA%į&~`|t/m͜ι{.ﯿ؍bqE^rDQ!DŽ rBp-Zd0*dLdEvF'5'6W"9UNl)%p b&vaΥ Mpb,H!F5tj9lJw2E"6zb?f"I o7_Pɧ,^^KLf^u :vz}pSxG o#D>=V+k=+h+j-5m5Z*j/hB^6!C DFD[k;A>8)">2=AhO]KxSy u[zIWQ&y,t"~zqOǤRp˸-{6]_"THѪKFvu% P\ 4@ՕŊc-OŌ~,~ɬ~{^_؋OQ0hԸ.z>%yttFw5kXAB<^7~,>Hzx0( ôسBHAZ"p }i™etu$yO>@V~s5Z[rTK6t'# V)V)^)DoT}ؓh$'8Yv9tWqp7Ûs^w1C^?ZWX INl7Ј%P޷N&ٔeG|D(D~8xfÆfo& ͏/Ćm*ZɂNiuKx6A,c|XR Wڎ6|&PPÔac<>C%xowO 7\mc.mTha%"\F;,yt)UMi\kV=P/x#a|Mk%hY}Mm֕>~oj/tPKݯ! PKOi7SambaShare.classTNQ.3YkqJ-@)\`;өۛD TdYwwfƱDLCne܇kPpawEpO,屌)fL gH `F J-W ;SГEyT,r"oB7tkFBW*^dR=:ݺ|Zqs68n-kVH GͲ˗t&LF3<7E,IhqʳnYe+^٤x*/cUEk*1bXu_n`MH(T U@V?tI݆ʚ$-CBuY%VZ1e4Su=wwI|WXh@ȔYz͍ Ҕjʥ9 ,6,WTho8qz9Z̍= c hsc#Y?ҽCB{+V` }uzh?mꖆma{En@(y3cH?дk>+}m#(_/V6)4ZY=,Q$AbUz'%;$ڈq D]n\`L )bX---#V0Tq :z%~y-ڢ9A;y* ?#|s]N/nWzd,Ck&DPK/PKOi7ScrollImage.classmUseMJIA@ ] "B$@LDavw=EEADE$ Y^Xe/Ye!ݪ "f&`./6t{p* =/T¼;KP!a@XTT(w{1q $EBK""+~Ixp^<=#+K TR2n&=H,sXlp6h7bI],p XM!Y3aO}nCҪI MfҰD 8^C=sL)7/&|酯o^^݀ݲƀxv ٷ|!31{žocz'֏w>)r]2d +tcai`J+d|.,y'pA"/!Xl0/g q{zh ^&-2ca xza22pN&KdXj2 'á&&\E&)&%h1B`D+ N2X>gd/bTxSd:OiӼx" tf8 prmQO#( ^=۲`53J`eV- ԤgabJOՕ ;3d,%*֥5g}X? ?~"#)3Ąx; WBҷBSb:ɩ[YV}N aT>4:_Crlx橐Nڕa\n4֪>8gAJjUSR;I;^yWČV,nئ移2K%'Z ؼZkE52zpp>f܇o{yB+$;V9J}Eɴ+V7ˉek^ҔrdGj4GbRؒJF+lG%0)Jۣk<Xf'́JT>瞂;_rWN;ܧyMx/M`}riQ̇ըFݯ7FSh` JK7@ߛPf5)"0gCgevɯ1cY ;4zztFMgo3Cd5SRb)- g)Fbź;`k xظa?`h)@LAG@b-mcf(iSoJz1]pM].cx\x\˰kgiǙs3b_ɾ TEAdyG7*ǰ@ST )@f+3hVk+1Ip,a@+bZoW€w**ǩ3iU U&gYUUR-Yof§O5xs- P#TޮOKWl,u*/3 3숨ɘkeڻ35t;i (2Rf+s@K3qF^CO -誕+"QUVJˀ{z:a>(6x} +b ņ L-v]S2MHsz~bbU oсc-;f nnկQeunp楼9CyCfM_{`m)'ս0I2c-{+GV#};ׁ W ./k.q$Lѝ0nnxj>8A$g86zӃ*׏i |E a$zqDO4zg6l<vvp3xKx=kq+v*~A&~K􆫐vrۮ k&j\Cju;}ZGӧ-'7?>]__\?6J+mMOז7]6wڣS{kڧ>оtçC}&;[|^?̐mg"Rzfqdq)xX_^̌Ԋ]C4/{+<gGYKW/ Zi vOH*:^>|7J|~87&B}áݷ'tøs|#>? >/PKt.KPKOi7SharingWindow.class7 xUU3=ӝ~I2q0LSq(" &ILf̄'*zGtUd_WQ~իW׫7@%~ZZorQ?{'KTC3"# "ac2:yeTTp״sdTU0a@5sU_+G"0_>LR"vXa* F<\ƾ ˁ<r%Fxf9P(jm:7mfbxnvu u1"-4:5͏g&c>9DڠgB2ai2fxC~DѰ^TL_P=(zToE|!6؜eb-$fk;|S1񻒲;&Ǵ>q 7V G8d-ɶڢ60 T!LzbiYRkCF#2h=%4*o}2/>tCLXGiԅ?e\JC;5 Wix7\#އ^p JQW^T4 ' B&=\[jj[*L19ohCptP{i+BYGy3𴆏y S4y*«kRv5Ys-G2SFT<]؝`e, T cأf ig&y&jSsLgKj\5|`;o6aۨTt&z8/0'!b{0iΪ5,Ff=kC)+KxFk >č| h9|NNx>, p} NTGfje+76S2RxHxh~H#Q)كt,VnsOLKk1pu`SIa_+x8L$5||gKꞼIL/JmB1eItyOa,\#B?0t93:h:VN Je9\1"ACgFlz=jfBߔĥvFje;BcWvzÜԫ x!b+Yt,>0YwB SҌEߊ&d9n ipn6;|&eKs|Iw(=\c)В֜C 嫍s8kYo@A8׃W3d2%qYPȦЙTzc{8_W̙.EZ (RmՍ'sʄaqQi`u y۬Ge.(%2Lf8.^f3:{g$+L"-ZbRya.;z~G)tP d޸mЃ|PTnF~tpJ%7U=QX VuY#H1Roԙ#H]1>cZsָXVkfۭZ`ci, m{,ƸY#H=1a9{ޢSMRP0yn[doY78 {] : 'j -}!D$SMLi5y+W7v:V+uCܳ{$fG|H q{lG>r⑉m3oYGcbpl]*4A:#Ǡ^Q9^OqƠU6E)NPyC <=p|7 %pia1nwaTGc%R&q51q@紉Rg(ʜgJR1$F:w{h'bk1V1N.e8E'&ȃDX5 m_FHqu54-z{&=^7,zG*=/YLMSwS7?@RbI{R^) :GnMN/[q';{OS@Rw\Ii:]Q&Q *נDNnx[pxnax։a8{crG]t^%K;h\1H:-o ,_O)>b99 "+Z>Ͷ MPEotQnm-D}O~ Q?%f hh}jE2*\wqTUfDWE&럠P | _Y%Ɯ\c oZcTG.#W2.#@Yp7UoM o gGJu){nl_Ư-)-W3~$Q/+^i,L[&rHJh4jNp$j Th90BSa&Z` 0Ek5fhƈw)+xd`wǕ|UR$g%6YjYm.4uouͷz-fRӣ\q% fRT3>liiS öQٟ$M!tV|?Y⌞؃^&m )M|FH:s൜R :$m`vU-s鬟 N2Q#j5?PKkPKOi7StringJoiner.classuRnA=.,SAVjE^M,Ҵ&Զh5.B'J㍷Xhx#g&oN~n \4)\R&e[4qW% @@TkKsn]AE 5m=_-l+\|w}Nnjt:'h+Z?#Id#c!b[$;̨ԮSWI*KYBv 9,4G>BqqOL刂W#mA7PKumPKOi7StringSplitter.classmRKOQ=΃C)VP)TP@Ѥ ]8R,fK?p%a&RIk u}w={oƱN01q *F0Œ ,)Lߛ*&UL1òvFjK5VS)2(Eh3FĒa+U4 LlAʔchGMn%B\jګܤ4ho{?n0xMNdƚmQ.V?(ʕJh|1.tAXbuk%*FH :f1c^= b]7oys9ӈ4#_$(p~u^Z}Yi6Kl,CF<@40\0$z@k<N>Ӟ!HVs>zU$J}-SxO C{Ŀ@>JPTדrOPO1\ǥGJ2s(5 (}5U$_Qcq dF,yziCA4Lg1kY\`EX\f1Qc甫sjfUv {xB=/=YvhE0n6WnډFcک֭zB{Ŗ*ɼ{D@;]dl)0q[ĥZ$7 V-&+Ϛ)'MiÜHSxuܴ¤tDI/1j*rj+{6Nx 3X[}:Qrv_Mز})@˜L[jжC-lGv??|@l[> Se\MjWwKQ>d|"y$dHZD;G] A)""[hG`/\GР&( L؇OWhQAJB%Kr~Pq!tx˴W#PBDy)aC4dB }'kz$ 9B죄%x|E#-'~zѾt/AV'~>zum/wHaX#a)!60b#H %yUJkSR6<X^F,~o35%U0<#UXez2BSOT z{To᪄͗ҫVUc#K̡>ᕮ[%a+=*Ca ;԰QSw)HkX%VGJp]s{{J$`i!*g70LU׸[p E_1 *E+&NbS"E?izEo`Zq93' /̈1+c'+'e;k|exJf!!6'K\ Iw2ɫt#1z>;qV+Lad`phgepn\J21x&C}PK[I PKOi7TabbedDisplayPanel.classS[sPizRm[jKlEiL ā!Lxy'}V 3㞄<3v=g'i<0aD".BDbs\LsCRČ>p9|)˸·WvMu7|a(B}&ժLYE2KxbԊm3U7u|si8&bSbKY05L}iWkEBDU2^b7O8*-S7.+XMAaںc3- Rjh[ \0r/X땜>o5][VM8eaVDe"JYz\8$c7emwpW=:*|iecAdD<YHXB!║6rQpahR5!WCzآjy@ `R|+xGs`jP7lpWBtPwx{Nmy۪J%ݴ ˤ"(OA7: P VT )=z}4k񧦓 7q퓖g}+;`J2U( `0! ɷ;{Gx8aHILz֊#">T'nW_I!u}τĩf iț(yz\[ e: Pҁm :~oO~D=exOi]D6{p˘DWIB 0X6ʨ5dV 0PK+(PKOi7TabbedPanel.classSmO`=t+ecUP0a *C__H6:V +n&<ls_m 64inI3bs*Up[E*TEy',(XTǒ(XVDVJx^IV `U E+eU縋aӮ tKhcڜiv,la+Y^PX`lèe+XVXE] ^AOMu!/ ?m+o 7bZj 8:ƛψ Zhn@#'<}VG[=#'@'~Eh.bu_tF7~r9N*gM2WfMOw+G a$0ɹ,&~_Ǖq'(B~>֤GfH߂?PKy1 PKOi7ToolbarLayout.classuVipSHz*  ll()1v6n [`K,I9h!閐4!iK L?4&2'dc{v9羟 D}Pȇ bvp!#_{,> ^&8 zBFD2*>?obDĸ} Y~2>h&1 L(;7*ʶ\vd }xǃBAokm.+mزW\8Ù,] :>6(b} Ul{|?u:D::܉5..Gقk͐+ucy}e78B[nd4ucNl)3*4[$;L4v5ţt>.mܓ9CƯoandc\Ea ,awS[c8K1Dsc.@]pPGG!ؓMoȍEzs~'ŷV-$-$lV!>jY>>>m3bxLq^`eih 8Vi Qd.wZ8 `kndoՋ\5JX۹h)Tϸzoy7SrΠDU 2t>x%<7Nw{FG-e"*-7.9 #av-MI9,VMj%$v(3P_/ > @##wptkM7s}ˬ:RV4})bw'mjfgPgWb=i^֠Xβp--hFMņzkӨ//^;n ڌhwSs;AXK8JZ,|,.^an879w,?i®s]?@iA\׏/Z]'g3o9n"݊Yj =Kz'>੩_E E;.盆MF ' &5BjgbgND!;dO;TDUҊZETn%+@װ8C'aن`NO!;sYVլM/qw5MP#NٺJ O ijt:n _ ~7x7;zQKmJ_"R+@"S+xTu"@5/M" q.&?I56Ubʏ&e` ,Jt0v*W8Bj1z J94RIzDo?4 $4_B'FͭRA[;제> ?*"o(jIJDO]^?K ^ E9˫jm440R5S 5Mv0`O{U57`W"o(MT%IT)]Ku*SW]*G5`T5QO޵xB݀gԍxI݌[sU A݊hjQ>^U)\,瓥nv^جrusV佤zXs+E,"VEVXޛ4,FRDQasjOmrGʣvYIq7?PK.DPKOi7 Util.classW xT37$$a2e2 A P" PĠ^f^t[ڪm]BW.B&QZ+k[mjkUMf!_!9޳{1K_6fo(Ƶxp[TqHmBnp&!woB)[6o7{q_l< w;}xn/#3G|80~!PA1!TWq‡xH>, DŽ|\>O |BF2:-3*F|2)!1 GU,3B>1/>Z<.>9|^_PE_R0;`z^}T6'>Iң*;}mR5#)YVP#[uu̟o3dZhOAev=3E3{zFsd}"Hr8'9DtH*lw4+lk`S?exx2㦵v>5dcf]\ e]v)_0"0V- qJAI$iB1e.5Dd"ZZFf:bzgv(ޓҸ3;%MXfȚ'\4"ɔhՇWrct jNI&Q},/iS= ՔaI2EC-U,퉁dh6%5wXfl571 &eی'鷑Ђai2᫂2q _]*!oj҃^!oixG^iJ6g9ld_Nr  9 +Eq(g8PcO)ĻŁ t:G>CQ;MultiColumnCallback.classPKOi7@Nm<MultiLabel.classPKOi7(a ?OverwriteWindow.classPKOi7髨OFPermissionsPanel.classPKOi7sʅ[IPreviewWindow.classPKOi7txN !RPropertiesWindow.classPKOi7"bQuickSort.classPKOi7yE3fRemoteFile.classPKOi7HkLnRenameWindow.classPKOi7ݯ! wResizePanel.classPKOi7/}SambaShare.classPKOi7AErs ހScrollImage.classPKOi7t.KSearchWindow.classPKOi7L'SharingWindow.classPKOi7k!StaticTextField.classPKOi7umyStringJoiner.classPKOi7; StringSplitter.classPKOi7[I ıTabSelector.classPKOi7+(TabbedDisplayPanel.classPKOi7y1 TabbedPanel.classPKOi7.D߽ToolbarLayout.classPKOi7i X dUtil.classPKGGfile/chmod.cgi0100755000567100000120000000430610754361755013257 0ustar jcameronwheel#!/usr/local/bin/perl # chmod.cgi # Change the ownership and permissions on a file require './file-lib.pl'; $disallowed_buttons{'info'} && &error($text{'ebutton'}); &ReadParse(); &webmin_log($in{'linkto'} ? "relink" : "chmod", undef, $in{'path'}, \%in); &switch_acl_uid_and_chroot(); print "Content-type: text/plain\n\n"; !$access{'ro'} && &can_access($in{'path'}) || &failure(&text('chmod_eaccess', $in{'path'})); if (defined($in{'user'})) { $uid = $in{'user'} =~ /^\d+$/ ? $in{'user'} : defined(%user_to_uid) ? $user_to_uid{$in{'user'}} : getpwnam($in{'user'}); &failure(&text('chmod_euser', $in{'user'})) if (!defined($uid)); $gid = $in{'group'} =~ /^\d+$/ ? $in{'group'} : defined(%group_to_gid) ? $group_to_gid{$in{'group'}} : getgrnam($in{'group'}); &failure(&text('chmod_egroup', $in{'group'})) if (!defined($gid)); } if ($in{'linkto'}) { # Just changing the link target $follow && &failure($text{'chmod_efollow'}); &lock_file($in{'path'}); unlink($in{'path'}); symlink($in{'linkto'}, $in{'path'}) || &failure(&text('chmod_elink', $1)); &unlock_file($in{'path'}); } elsif ($in{'rec'} == 0) { # Just this file &update($in{'path'}, 0); } elsif ($in{'rec'} == 1) { # This directory and all its files &update($in{'path'}, 0); opendir(DIR, $in{'path'}); foreach $f (readdir(DIR)) { next if ($f eq "." || $f eq ".."); next if (-l $full); &update("$in{'path'}/$f", 1) if (!-d $full); } closedir(DIR); } elsif ($in{'rec'} == 2) { # Directory and all subdirectories &update($in{'path'}, 0); &recurse($in{'path'}); } print "\n"; sub recurse { local(@files, $f, $full); opendir(DIR, $_[0]); @files = readdir(DIR); closedir(DIR); foreach $f (@files) { $full = "$_[0]/$f"; next if ($f eq "." || $f eq ".."); next if (-l $full); &update($full, !-d $full); &recurse($full) if (-d $full); } } sub failure { print @_,"\n"; exit; } # update(file, perms_only) sub update { local $perms = $in{'perms'}; if (defined($perms)) { if ($_[1]) { @st = stat($_[0]); $perms = ($perms & 0777) | ($st[2] & 037777777000); } chmod($perms, $_[0]) || &failure(&text('chmod_echmod', $!)); } if (defined($uid)) { chown($uid, $gid, $_[0]) || &failure(&text('chmod_echown', $!)); } } file/LinedPanel.java0100644000567100000120000000132310754361755014350 0ustar jcameronwheelimport java.awt.*; class LinedPanel extends GrayPanel { String title; LinedPanel(String t) { title = t; } public void paint(Graphics g) { super.paint(g); Font f = g.getFont(); FontMetrics fnm = g.getFontMetrics(); int w = size().width-1, h = size().height - 1; int tl = fnm.stringWidth(title); g.setColor(Util.light_edge); g.drawLine(5, 5, 5, h-5); g.drawLine(5, h-5, w-5, h-5); g.drawLine(w-5, h-5, w-5, 5); g.drawLine(tl+9, 5, w-5, 5); g.setColor(Util.dark_edge); g.drawLine(4, 4, 4, h-6); g.drawLine(6, h-6, w-6, h-6); g.drawLine(w-6, h-6, w-6, 6); g.drawLine(w-6, 4, tl+9, 4); g.drawString(title, 7, fnm.getAscent()); } public Insets insets() { return new Insets(15, 10, 10, 10); } } file/Util.java0100644000567100000120000000623310754361755013257 0ustar jcameronwheelimport java.awt.*; import java.awt.image.*; class Util { static Frame fr; static Graphics g; static Font f; static FontMetrics fnm; static Toolkit tk; static Color light_edge = Color.white; static Color dark_edge = Color.black; static Color body = Color.lightGray; static Color body_hi = new Color(210, 210, 210); static Color light_edge_hi = Color.white; static Color dark_edge_hi = Color.darkGray; static Color dark_bg = new Color(150, 150, 150); static Color text = Color.black; static Color light_bg = Color.white; static { fr = new Frame(); fr.addNotify(); g = fr.getGraphics(); setFont(new Font("TimesRoman", Font.PLAIN, 8)); tk = Toolkit.getDefaultToolkit(); } static boolean waitForImage(Image i) { MediaTracker mt = new MediaTracker(fr); mt.addImage(i, 0); try { mt.waitForAll(); } catch(Exception e) { return false; } return !mt.isErrorAny(); } static boolean waitForImage(Image i, int w, int h) { MediaTracker mt = new MediaTracker(fr); mt.addImage(i, w, h, 0); try { mt.waitForAll(); } catch(Exception e) { return false; } return !mt.isErrorAny(); } static int getWidth(Image i) { waitForImage(i); return i.getWidth(fr); } static int getHeight(Image i) { waitForImage(i); return i.getHeight(fr); } static Image createImage(int w, int h) { return fr.createImage(w, h); } static Image createImage(ImageProducer p) { return fr.createImage(p); } static Object createObject(String name) { try { Class c = Class.forName(name); return c.newInstance(); } catch(Exception e) { System.err.println("Failed to create object "+name+" : "+ e.getClass().getName()); System.exit(1); } return null; } /**Create a new instance of some object */ static Object createObject(Object o) { try { return o.getClass().newInstance(); } catch(Exception e) { System.err.println("Failed to reproduce object "+o+" : "+ e.getClass().getName()); System.exit(1); } return null; } static void dottedRect(Graphics g, int x1, int y1, int x2, int y2, int s) { int i, s2 = s*2, t; if (x2 < x1) { t = x1; x1 = x2; x2 = t; } if (y2 < y1) { t = y1; y1 = y2; y2 = t; } for(i=x1; i<=x2; i+=s2) g.drawLine(i, y1, i+s > x2 ? x2 : i+s, y1); for(i=y1; i<=y2; i+=s2) g.drawLine(x2, i, x2, i+s > y2 ? y2 : i+s); for(i=x2; i>=x1; i-=s2) g.drawLine(i, y2, i-s < x1 ? x1 : i-s, y2); for(i=y2; i>=y1; i-=s2) g.drawLine(x1, i, x1, i-s < y1 ? y1 : i-s); } static void recursiveLayout(Container c) { c.layout(); for(int i=0; i= 0 && yy <= height) { // Draw this node if (n.im != null) bg.drawImage(n.im, xx, yy, this); if (sel == n) { // Select this node bg.setColor(Util.body); bg.fillRect(xx+17, yy+2, tw+2, 13); bg.setColor(Util.text); } bg.drawString(n.text, xx+18, yy+12); } if (n.ch != null && n.open && yy <= height) { // Mark this node bg.drawLine(xx+18, yy+14, xx+17+tw, yy+14); // Draw subnodes yy += 16; for(int i=0; i= n.x) return n; if (n.ch == null || !n.open) return null; for(int i=0; i(LRemoteFile;ILFileManager;)VCodeLineNumberTablegetPerms()I SourceFileFileManager.java => ? java/awt/GridLayout @ ABjava/awt/Checkbox info_readC DE F  GH IJ info_write  K info_list info_exec  LMPermissionsPaneljava/awt/Panel()V RemoteFileperms(II)V setLayout(Ljava/awt/LayoutManager;)V FileManagertext&(Ljava/lang/String;)Ljava/lang/String;(Ljava/lang/String;)Vadd*(Ljava/awt/Component;)Ljava/awt/Component;setState(Z)VtypegetState()Z *+6**Y**Y- Z W* x~ **Y- Z W*x~ **Y-+ Z W*~  .  3H_t!"oG<*  *x<* *x<* *< 0E#$file/LinkWindow.class0100664000567100000120000000644210754361755014617 0ustar jcameronwheel. M_ L`a _ Lbc de Lfg _h i bjk l mnop qrs _ t u v Lw dx y z q{ | _ L}~ L & d ( L L L L q q d 7l q q q d F d d F F d d Lfilemgr LFileManager;fromLjava/awt/TextField;tocreate_b LCbButton;cancel_b"(Ljava/lang/String;LFileManager;)VCodeLineNumberTableclick (LCbButton;)V SourceFileFileManager.java W OPjava/awt/BorderLayout  link_title java/awt/Paneljava/awt/GridLayout Wjava/awt/Label link_from W link_tojava/awt/TextField/ java/lang/StringBuffer W QR SRWest Centerjava/awt/FlowLayout WCbButtonsave.gif create W TU cancel.gifcancel VUSouth  ErrorWindow link_efrom  link_eexistsmakelink.cgi?from= &to=  link_efailed RemoteFile W  LinkWindow FixedFrameCbButtonCallback()V setLayout(Ljava/awt/LayoutManager;)V FileManagertext&(Ljava/lang/String;)Ljava/lang/String;setTitle(Ljava/lang/String;)V(II)Vadd*(Ljava/awt/Component;)Ljava/awt/Component;java/lang/Stringequals(Ljava/lang/Object;)Zappend,(Ljava/lang/String;)Ljava/lang/StringBuffer;toString()Ljava/lang/String;(Ljava/lang/String;I)VfixedLjava/awt/Font;setFont(Ljava/awt/Font;)VgetTextlength()Iselect<(Ljava/lang/String;Ljava/awt/Component;)Ljava/awt/Component;(I)V get_image$(Ljava/lang/String;)Ljava/awt/Image;8(Ljava/awt/Image;Ljava/lang/String;ILCbButtonCallback;)VUtil recursiveBody(Ljava/awt/Component;)Vpackshowtrim startsWith(Ljava/lang/String;)Z8(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; lastIndexOf(I)I substring(II)Ljava/lang/String;(I)Ljava/lang/String;find_directory!(Ljava/lang/String;Z)LRemoteFile;find (Ljava/lang/String;)LRemoteFile;urlizeget_text'(Ljava/lang/String;)[Ljava/lang/String;.(LFileManager;Ljava/lang/String;LRemoteFile;)V(LRemoteFile;)V showing_files LRemoteFile; show_files(LRemoteFile;)Zdispose LMNOPQRSRTUVUWXY~**,*Y** Y N Y :- Y -Y*W-Y*W Y *Y+Y+(ZW***** *Y!Z"W*"**#-$W*%$W Y :&Y' *(Y*)**+*,Z-W*(Y*.**/*,Z0W*1$W*2*3*4Zb 9 : ; <! =2 >? ?T @i Aw B C D E F G H I JB Mh Pq Qu Ry S} T[\Y +*-*5M,67Y*8,9:W,/;>,<:,`=:*>:?7Y*@,9:W*YA*W,BC*W*"BD:27Y*E29:WFY*2G:H**IJW*K+*0*KZf X Z [ \. ]/ _6 `> aG bS cY dc eu fv j m n o q r s t u v w x]^file/ErrorWindow.java0100644000567100000120000000126410754361755014622 0ustar jcameronwheelimport java.awt.*; import java.util.*; class ErrorWindow extends FixedFrame implements CbButtonCallback { CbButton ok; ErrorWindow(String m) { setLayout(new BorderLayout()); Panel cen = new BorderPanel(1); StringTokenizer tok = new StringTokenizer(m, "\r\n"); cen.setLayout(new GridLayout(tok.countTokens(), 1)); while(tok.hasMoreTokens()) { cen.add(new Label(tok.nextToken())); } add("Center", cen); Panel bot = new GrayPanel(); bot.setLayout(new FlowLayout(FlowLayout.CENTER)); bot.add(new CbButton("Ok", this)); add("South", bot); pack(); show(); setTitle("Error"); Util.recursiveBackground(this, Util.body); } public void click(CbButton b) { dispose(); } } file/config0100664000567100000120000000012510754361755012663 0ustar jcameronwheelhide_dot_files=0 iconsize=0 nocharset=0 extract=1 force_text=0 defzip=0 defuser=root file/unicode/0040755000567100000120000000000010754361755013124 5ustar jcameronwheelfile/unicode/zh_TW.Big50100644000567100000120000002467710754361755014704 0ustar jcameronwheelfeedback_module=關於模組 help_efile=無法讀取說明檔 $1 delete_eaccess=您不被允許刪除 '$1' session_logout=登出成功,使用下面的欄位重新登入 session_failed=登入失敗,請再試一次 main_none=您沒有任何可使用的Webmin模組 month_4=四月 copy_eto=您不被允許拷貝到 '$1' smonth_3=三月 acl_gedit=選擇可以看到的群組 config_dir=給模組 $1 chmod_echown=變更擁有者失敗 : $1 edit_title=編輯 $1 中 elock_tries=無法鎖檔案 $1在 $2 分鐘後 feedback_desc2=此報告將會傳送給Usermin發展群,而非您的系統管理者,網路提供者,或主機公司,回饋內容請以英文撰寫。 paste_egone=複製的檔案 $1 已經不存在 referer_again=以後不再顯示這個訊息 delete_efailed=無法刪除 $1 : $2 month_11=十一月 rename_title=變更名稱 $1 acl_uedit_uid=使用者 UID 範圍是 main_logout=登出 upload_ewrite=無法寫入到 $1 : $2. link_eexists=$1 已經存在 sday_2=星期二 feedback_ecannot=您不被允許寄送回饋信件 feedback_prog=傳送回饋信件到 $1 使用sendmail程式 $2 main_homepage=首頁 delete_ddesc=您確定要永久的刪除目錄 $1 與其所有內容嗎? acl_home=使用者家目錄 info_perms=權限 info_user=使用者: chooser_dir=$1 的目錄 header_servers=Webmin 伺服器 smonth_12=十二月 info_size=大小: config_nochange=不改變 category_webmin=Webmin paste_ecopy=在您貼上要先剪下或複製 file_type0=目錄 groups_clear=清除 feedback_config=在寄送郵件中包含模組組態設定? acl_gedit_all=所有群組 feedback_ecannot2=您不被允許寄送包含設定組態檔案的回饋信件 acl_uedit_all=所有使用者 sday_3=星期三 no=否 session_header=登入Webmin acl_gedit_none=沒有群組 paste_eself=您不能把檔案貼到本身上 info_apply1=只有這個目錄 config_none=無 acl_rpc0=否 longcategory_info=顯示您的系統資訊的模組 mkdir_eexists=$1 已經存在 right_user=使用者 top_open=開啟 sday_4=星期四 config_title=組態設定 acl_uedit_except=全部使用者除了 smonth_7=七月 acl_feedback=可以寄送回饋信件? header_webmin=Webmin 索引 smonth_2=二月 chooser_title1=選擇檔案... session_mesg=您必須輸入使用者名稱和密碼來登入Webmin 伺服器在 $1上。 groups_title1=選擇群組... feedback_to=傳送回饋到位址 info_setgid3=以群組權限執行 copy_efrom=您不被允許拷貝自 '$1' feedback_configdesc=如果選取此項目,在回饋郵件中會附上相關的模組和模組會用到相關的所有設定檔案。例如 ,如果回饋是關於 使用者和群組 模組,你的 /etc/passwd/etc/shadow檔案會被附加上去。 acl_feedback1=是,但不能包含組態檔案 feedback_emodule=在信件中您選擇了包含模組組態設定,但卻沒有選取模組。 month_1=一月 smonth_6=六月 users_ok=確定 paste_ecfailed=拷貝失敗 : $1 top_upload=上傳 feedback_os=在寄送郵件中包含作業系統資訊? top_new=增加 sday_6=星期六 index_nojava=這個模組需要 Java 才能正確的運作, 但是您的瀏覽器似乎不支援 Java month_8=八月 referer_warn_unknown=警告! Webmin發現程式 $2從不知名的位置連結來的,出現在 Webmin以外。並企圖嘗試在您的伺服器執行危險的指令。 rename_eold=您不被允許改名自 '$1' link_to=連結到: yes=是 acl_rpc2=只有 rootadmin main_title=Webmin $1 在 $2 ($3) chooser_ok=確定 info_own=所有權 referer_title=安全警告 mkdir_eaccess=您不被允許建立 '$1' header_config=模組組態 category_=其他 right_group=群組 users_title1=選擇使用者... session_mesg2=您必須輸入使用者名稱和密碼來登入 right_name=名稱 top_refresh=重讀 groups_sel=選擇的群組 helpsearch=搜尋文件 acl_umask=建立檔案的遮罩 info_sticky=設定位元: help_err=無法顯示說明 top_edit=編輯 top_info=資訊 top_copy=複製 day_1=星期一 upload_title=上傳檔案 chooser_title2=選擇目錄... link_from=連結自: error=錯誤 acl_rpc=可以使用RPC ? month_10=十月 create=建立 upload_file=要上傳的檔案 feedback_text=描述問題或建議 top_paste=貼上 move_eto=您不被允許移動到 '$1' list_eaccess=您不被允許存取這個目錄 feedback_email=您的電子郵件 skill_medium=中等 delete_fdesc=您確定要永久的刪除檔案 $1 嗎? rename_old=舊檔名: users_sel=選擇的使用者 chmod_echmod=變更權限失敗 : $1 acl_rpc1=是 month_7=七月 file_type7=管線 smonth_1=一月 default=預設 info_type=類別: info_link=連結到: groups_cancel=取消 category_net=網路 day_4=星期四 category_syslet=網管 upload_edir=上傳的目錄不存在. smonth_5=五月 header_help=說明... help_epath=遺失說明檔路徑 groups_ok=確定 category_cluster=電腦叢集 chmod_egroup=$1 : 沒有這個群組 rename_eexists=叫做 $1 的檔案已經存在 modify=修改 mkdir_dir=目錄: longcategory_net=網路和網路服務組態模組 emodule=存取拒絕 : 使用者 $1 不允許使用 $2 模組 top_view=檢視 acl_feedback2=是 top_cut=剪下 header_module=模組索引 find_eexist=$1 不存在於 $2 referer_ok=繼續執行Webmin程式 skill_low=新手 sday_5=星期五 save=儲存 feedback_header=回饋內容 month_9=九月 info_efailed=無法重讀 $1 : $2 upload_ok=上傳 session_save=記得上次登入帳號? config_err=儲存組態錯誤 longcategory_hardware=列表機,磁碟和其他硬體組態模組 acl_dirs=只允許存取到目錄 find_eaccess=您不被允許存取 $1 feedback_econfig=您沒有完整的權限來選取模組 right_date=日期 file_type6=設備控制檔 edit_filename=檔案名稱: category_info=資訊 info_read=讀取 main_skill=Skill level main_switch=切換使用者... info_write=寫入 delete=刪除 referer_warn=警告! Webmin發現程式 $2從 URL $1連結來的,出現在 Webmin以外。並企圖嘗試在您的伺服器執行危險的指令。 info_setuid2=以使用者權限執行 config_eaccess=您不被允許存取這個模組 mkdir_title=增加目錄 groups_title2=選擇群組... ok=確定 progress_data2=下載 $1 位元組 link_efailed=連結失敗 : $1 help_eexec=$1 失敗 : $2 delete_ftitle=刪除檔案 rename_efailed=改名失敗 : $1 view_eopen=無法開啟n $1 : $2 top_delete=刪除 index=索引 feedback_mailserver=傳送經由SMTP伺服器 day_3=星期三 feedback_title=回饋Webmin progress_size=下載中 $1 ($2 位元組) .. month_12=十二月 info_group=群組: acl_uedit_group=使用者群組 paste_eover=$1 無法被蓋寫 info_apply3=這個目錄與所有的子目錄 feedback_enoto=沒有填寫傳送回饋位址位置 main_title2=Webmin feedback_err=寄送回饋時發生錯誤 top_rename=改名 efilewrite=寫入$1失敗 : $2 feedback_all=所有模組 month_6=六月 programname=Webmin copy_elink=符號連結失敗 : $1 config_setto=Set to help_eheader=遺失 <標頭> 區段 edit_eaccess=您不被允許儲存 '$1' acl_uedit_only=只有使用者 category_system=系統 smonth_10=十月 longcategory_=無法分類的其他模組 month_3=三月 file_type1=文字檔 delete_dtitle=刪除目錄 day_5=星期五 feedback_via=傳送回饋信件到 $1經由 SMTP伺服器 $2 acl_gedit_except=所有群組除了 acl_follow=是否跟隨符號連結? smonth_9=九月 file_type4=檔案 acl_gedit_gid=群組GID範圍是 session_login=登入 link_title=建立連結 move_afrom=您不被允許移動自 '$1' category_servers=伺服器 rename_ok=改名 info_setgid=設定 GID: progress_done=.. 下載完成 find_edir=$1 不是一個目錄在 $2 upload_efile=沒有選擇要上傳的檔案. smonth_4=四月 day_2=星期二 upload_eperm=您不被允許建立 $1 users_clear=清除 info_other=其他: feedback_desc=這表單可以讓你回報錯誤(bugs)和建議Webmin發展群關於任何問題或所忽略的特色,當按下傳送按鈕後,這頁的內容將會寄到 $1。 edit_eover=$1 無法被蓋寫 progress_nosize=正在下載 $1 .. feedback_mailserver_def=本地sendmail程式 acl_feedback0=否 right_size=大小 file_type2=影像檔 longcategory_webmin=組態Webmin自己的模組 sday_1=星期一 info_apply=套用變更到 users_cancel=取消 acl_uedit=選擇可以看到的使用者 rename_enew=您不被允許改名成 '$1' info_setgid2=檔案繼承群組 file_type5=符號連結 feedback_attach=加入要附上的檔案 smonth_11=十一月 link_efollow=您不被允許建立符號連結 acl_uedit_none=沒有使用者 main_version=版本 $1 在 $2 ($3) upload_dir=上傳到目錄 session_pass=密碼 find=找尋 chmod_euser=$1 : 沒有這個使用者 skill_high=專家 longcategory_cluster=從單一介面管理多重服務 main_return=回到 $1 info_exec=執行 feedback_send=傳送回饋 acl_gedit_only=只有群組 longcategory_system=使用者,檔案系統,工作排程和其他系統設定 rename_new=變更為: upload_efailed=開啟上傳失敗 : $1 info_file=檔案 month_5=五月 chmod_elink=符號連結失敗d : $1 acl_root=檔案選取時的根目錄 groups_all=全部的群組 feedback_name=您的姓名 feedback_osdesc=如果選取此項目,會自動在回饋信件中加上您的作業系統名稱和版本。 info_sticky2=只有擁有者才能刪除檔案 switch_remote_euser=Unix使用者 $1 並不存在 paste_emfailed=移動失敗 : $1 view_enormal=只有一般的檔案可以被檢視 config_header=給 $1 的可組態選項 link_essl=您的系統尚未安裝 Net::SSLeay Perl模組所需要使用的HTTPS連線。 longcategory_servers=web, email, FTP和其他服務的組態模組 view_eaccess=您不被允許存取 $1 mkdir_efailed=建立目錄失敗 : $1 day_6=星期六 info_mod=修改時間: session_clear=清除 edit_title2=建立檔案中 main_feedback=回饋... info_setuid=設定 UID: chmod_eaccess=您不被允許存取 '$1' help_einclude=無法引入 $1 edit_esave=無法儲存檔案 : $1 smonth_8=八月 cancel=取消 session_user=使用者名稱 users_all=全部的使用者 info_path=路徑: edit_enormal=只能編輯一般的檔案 feedback_emodule2=選取的模組不存在 config_ecannot=您不被允許組態這個模組 session_timed_out=連線逾時於$1分鐘 sday_0=星期日 acl_user=以使用者權限存取伺服器上的檔案 reset=重設 progress_data=下載 $1 位元組 ($2 %) upload_conv=是否要改變 DOS 的換行符號? index_title=檔案管理者 day_0=星期日 help_eif=$1 失敗 : $2 feedback_esend=使用sendmail或本地SMTP伺服器傳送回饋郵件錯誤 info_list=列出 users_title2=選擇使用者... info_apply2=這個目錄與其中的檔案 month_2=二月 file_type3=二進位檔 link_efrom=您不被允許連結 '$1' category_hardware=硬體 file/delete.cgi0100755000567100000120000000143710754361755013431 0ustar jcameronwheel#!/usr/local/bin/perl # delete.cgi # Delete some file or directory require './file-lib.pl'; $disallowed_buttons{'delete'} && &error($text{'ebutton'}); &ReadParse(); &webmin_log("delete", undef, $in{'file'}, \%in); print "Content-type: text/plain\n\n"; if ($access{'ro'} || !&can_access($in{'file'})) { print &text('delete_eaccess', $in{'file'}),"\n"; exit; } if (&indexof($in{'file'}, @allowed_roots) >= 0) { print &text('delete_eroot', $in{'file'}),"\n"; exit; } if (-r &unmake_chroot($in{'file'}) && !-d &unmake_chroot($in{'file'})) { &switch_acl_uid_and_chroot(); $rv = unlink($in{'file'}); if (!$rv) { print "$!\n"; } else { print "\n"; } } else { &switch_acl_uid(); ($ok, $err) = &unlink_file(&unmake_chroot($in{'file'})); if (!$ok) { print "$err\n"; } else { print "\n"; } } file/MkdirWindow.class0100664000567100000120000000632510754361755014770 0ustar jcameronwheel. L] K^_ `a Kbc ] Kdefg h Kijkl mno ] p q r Ks `t u v mw xy ]z { d|} `~ " K  K K K ` m m ` m > ` 6h ` ` > > `  C C ` ` ` Kfilemgr LFileManager;dirLjava/awt/TextField;create_b LCbButton;cancel_b"(Ljava/lang/String;LFileManager;)VCodeLineNumberTableclick (LCbButton;)V SourceFileFileManager.java U NO mkdir_title java/awt/BorderLayout Westjava/awt/Label mkdir_dir U Centerjava/awt/TextField/ java/lang/StringBuffer U PQ java/awt/Paneljava/awt/FlowLayout UCbButtonsave.gif create U RS  cancel.gifcancel TSSouth  ErrorWindow mkdir_eexists mkdir.cgi?dir=  mkdir_efailed RemoteFile U  FileNode U   MkdirWindow FixedFrameCbButtonCallback()V FileManagertext&(Ljava/lang/String;)Ljava/lang/String;setTitle(Ljava/lang/String;)V setLayout(Ljava/awt/LayoutManager;)Vadd<(Ljava/lang/String;Ljava/awt/Component;)Ljava/awt/Component;java/lang/Stringequals(Ljava/lang/Object;)Zappend,(Ljava/lang/String;)Ljava/lang/StringBuffer;toString()Ljava/lang/String;(Ljava/lang/String;I)VfixedLjava/awt/Font;setFont(Ljava/awt/Font;)VgetTextlength()Iselect(II)V(I)V get_image$(Ljava/lang/String;)Ljava/awt/Image;8(Ljava/awt/Image;Ljava/lang/String;ILCbButtonCallback;)V*(Ljava/awt/Component;)Ljava/awt/Component;Util recursiveBody(Ljava/awt/Component;)Vpackshow trim_path lastIndexOf(I)I substring(II)Ljava/lang/String;find_directory!(Ljava/lang/String;Z)LRemoteFile;(I)Ljava/lang/String;find (Ljava/lang/String;)LRemoteFile;8(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;urlizeget_text'(Ljava/lang/String;)[Ljava/lang/String;.(LFileManager;Ljava/lang/String;LRemoteFile;)V(LRemoteFile;)VnodemapLjava/util/Hashtable;java/util/Hashtableget&(Ljava/lang/Object;)Ljava/lang/Object; (LFileNode;)Vdirs LHierarchy; Hierarchyredraw showing_files LRemoteFile; show_files(LRemoteFile;)Zdispose KLMNOPQRSTSUVWb **,***Y* Y*  W**Y+Y+(Z W*****YN-Y !-*"Y*#$*%*&Z'(W-*"Y*)$***&Z+(W*,- W*-*.*/XF !8n |         YZWi+*'*M*,0M,/1>*,23:,`456Y*7,89W*Y:*W,;<:26Y*=289W>Y*2?:@*ABC:CYDE*FG**HIW*J*JX^     0 ? Q R v  ! # $ % & ( ) + , - . /[\file/RenameWindow.class0100664000567100000120000001011410754361755015120 0ustar jcameronwheel. Zn Yo Ypq n Yrs tu vw Yxy nz { r|} v~   t  Y  v  Y  Y # v % Y Y Y Y    7n t 7 7 v t A v v t t t t v  O O O Y v v vfilemgr LFileManager;file LRemoteFile;oldnameLjava/awt/TextField;newnamerename_b LCbButton;cancel_b(LFileManager;LRemoteFile;)VCodeLineNumberTableclick (LCbButton;)V SourceFileFileManager.java f \] ^_java/awt/BorderLayout  rename_title  java/awt/Paneljava/awt/GridLayout fjava/awt/Label rename_old f  rename_newjava/awt/TextField f `a ba West Centerjava/awt/FlowLayout fCbButtonsave.gif  rename_ok f cd cancel.gifcancel edSouth  / java/lang/StringBuffer _   ErrorWindowrename_eexistsrename.cgi?old= &new= rename_efailed        FileNode       _  RenameWindow FixedFrameCbButtonCallback()V setLayout(Ljava/awt/LayoutManager;)V RemoteFilepathLjava/lang/String; FileManagertext8(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;setTitle(Ljava/lang/String;)V(II)V&(Ljava/lang/String;)Ljava/lang/String;add*(Ljava/awt/Component;)Ljava/awt/Component;name(Ljava/lang/String;I)V setEditable(Z)VfixedLjava/awt/Font;setFont(Ljava/awt/Font;)Vjava/lang/Stringlength()Iselect<(Ljava/lang/String;Ljava/awt/Component;)Ljava/awt/Component;(I)V get_image$(Ljava/lang/String;)Ljava/awt/Image;8(Ljava/awt/Image;Ljava/lang/String;ILCbButtonCallback;)VpackshowUtil recursiveBody(Ljava/awt/Component;)VgetText()Ljava/lang/String;trimindexOf(I)I startsWith(Ljava/lang/String;)Z directoryappend,(Ljava/lang/String;)Ljava/lang/StringBuffer;toString lastIndexOf substring(II)Ljava/lang/String;find_directory!(Ljava/lang/String;Z)LRemoteFile;(I)Ljava/lang/String;find (Ljava/lang/String;)LRemoteFile;urlizeget_text'(Ljava/lang/String;)[Ljava/lang/String;delete(LRemoteFile;)Vlist()[LRemoteFile; [LRemoteFile;nodemapLjava/util/Hashtable;java/util/Hashtableget&(Ljava/lang/Object;)Ljava/lang/Object;chLjava/util/Vector;java/util/Vector removeElement(Ljava/lang/Object;)Z (LFileNode;)Vdisposedirs LHierarchy; Hierarchyredraw showing_files show_files(LRemoteFile;)Z YZ[\]^_`abacdedfgh**+*,*Y*** Y N Y :- Y-Y*W-Y*W Y*Y*ZW****Y*ZW****** -!W*"!W Y :#Y$*%Y*&'*(*)Z*W*%Y*+'*,*)Z-W*.!W*/*0*1if    - > K ` u    E k t x |  jkh +***23M,,/4_,56 ,:%7Y8*9:5:,:;:/<65 =:*>N>*9N*/<67Y8*=:5:,:;:/<6`?M-,@:AY*B, CW*7Y8D:*W*E:F:*WE:;G:2AY*H2 CW*,**9*I-JW-*K*-9*L*M*9NO:*M*NO: 4 / *PQ RW S*T*UV**WXW*T+*-*Ti-    $ - 3 U ^ r } ) 3 H I Q Z h m u }               lmfile/BorderPanel.java0100755000567100000120000000202510754361755014535 0ustar jcameronwheelimport java.awt.*; class BorderPanel extends Panel { int border = 5; // size of border Color col1 = Util.light_edge; Color col2 = Util.dark_edge; Color body; BorderPanel() { } BorderPanel(int w) { border = w; } BorderPanel(int w, Color cb) { border = w; body = cb; } BorderPanel(int w, Color c1, Color c2) { border = w; col1 = c1; col2 = c2; } BorderPanel(int w, Color c1, Color c2, Color cb) { border = w; col1 = c1; col2 = c2; body = cb; } BorderPanel(Color c1, Color c2) { col1 = c1; col2 = c2; } public Insets insets() { return new Insets(border+2, border+2, border+2, border+2); } public void paint(Graphics g) { if (body != null) { g.setColor(body); g.fillRect(0, 0, size().width, size().height); } super.paint(g); int w = size().width-1, h = size().height-1; g.setColor(col1); for(int i=0; i ?@AB CDEpathLjava/lang/String; availableZwritableguestIcomment(Ljava/lang/String;)VCodeLineNumberTable*(Ljava/lang/String;ZZILjava/lang/String;)Vparams()Ljava/lang/String; SourceFileFileManager.java "FStringSplitter "G H( 1I JK  L MN  !java/lang/StringBufferpath= OPQ RS &available= OT &writable=&guest= &comment= U( SambaSharejava/lang/Object()V(Ljava/lang/String;C)V nextTokenjava/lang/Stringequals(Ljava/lang/Object;)Zjava/lang/IntegerparseInt(Ljava/lang/String;)Iappend,(Ljava/lang/String;)Ljava/lang/StringBuffer; FileManagerurlize&(Ljava/lang/String;)Ljava/lang/String;(I)Ljava/lang/StringBuffer;toString  !"#$yE*Y+:M*,*,*, *, *, %" 9 : ; <$ =1 >< ?D @"&$P **+** * * % C D E F G H I'($u] Y*** * * % M)*file/save_export.cgi0100775000567100000120000000730010754361755014523 0ustar jcameronwheel#!/usr/local/bin/perl # save_export.cgi # Update, create or delete an NFS export require './file-lib.pl'; $disallowed_buttons{'sharing'} && &error($text{'ebutton'}); &ReadParse(); print "Content-type: text/plain\n\n"; if ($access{'ro'} || $access{'uid'}) { # User has no access to NFS print "0\n"; exit; } &read_acl(\%acl, undef); %einfo = &get_module_info("exports"); %dinfo = &get_module_info("dfsadmin"); %binfo = &get_module_info("bsdexports"); if (%einfo && &check_os_support(\%einfo)) { # Linux NFS exports &module_check("exports"); &foreign_require("exports", "exports-lib.pl"); %econfig = &foreign_config("exports"); &lock_file($econfig{'exports_file'}); foreach $e (&foreign_call("exports", "list_exports")) { push(@{$exp{$e->{'dir'}}}, $e); } if ($in{'delete'}) { # Delete all exports for some dir foreach $e (reverse(@{$exp{$in{'path'}}})) { &foreign_call("exports", "delete_export", $e); } } else { # Adding or updating an export if (!$in{'new'}) { # Updating, so delete old exports first foreach $e (reverse(@{$exp{$in{'path'}}})) { $host{$e->{'host'}} = $e; &foreign_call("exports", "delete_export", $e); } } for($i=0; $in{"host$i"}; $i++) { $h = $in{"host$i"} eq '*' ? '' : $in{"host$i"}; $e = $host{$h}; $e = { 'active' => 1, 'host' => $h, 'dir' => $in{'path'} } if (!$e); delete($e->{'options'}->{'ro'}); if ($in{"ro$i"}) { $e->{'options'}->{'ro'} = ''; } delete($e->{'options'}->{'all_squash'}); delete($e->{'options'}->{'no_root_squash'}); if ($in{"squash$i"} == 0) { $e->{'options'}->{'all_squash'} = ''; } elsif ($in{"squash$i"} == 2) { $e->{'options'}->{'no_root_squash'} = ''; } &foreign_call("exports", "create_export", $e); } } &unlock_file($econfig{'exports_file'}); # Apply configuration &exports::restart_mountd(); &webmin_log($in{'delete'} ? 'delete' : $in{'new'} ? 'create' : 'modify', 'export', $in{'path'}); print "1\n"; } elsif (%dinfo && &check_os_support(\%dinfo)) { # Solaris NFS shares &module_check("dfsadmin"); &foreign_require("dfsadmin", "dfs-lib.pl"); %iconfig = &foreign_config("dfsadmin"); &lock_file($iconfig{'dfstab_file'}); @shlist = &foreign_call("dfsadmin", "list_shares"); foreach $s (@shlist) { $share = $s if ($s->{'dir'} eq $in{'path'}); } if ($in{'delete'}) { # Delete existing share &foreign_call("dfsadmin", "delete_share", $share); } elsif ($in{'new'}) { # Create new share foreach $r ('ro', 'rw', 'root') { if ($in{$r} ne '-') { $in{$r} =~ s/\s+/:/g; $opts->{$r} = $in{$r}; } } $share->{'dir'} = $in{'path'}; $share->{'desc'} = $in{'desc'}; $share->{'opts'} = &foreign_call("dfsadmin", "join_options", $opts); &foreign_call("dfsadmin", "create_share", $share); } else { # Update existing share $opts = &foreign_call("dfsadmin", "parse_options", $share->{'opts'}); foreach $r ('ro', 'rw', 'root') { if ($in{$r} eq '-') { delete($opts->{$r}); } else { $in{$r} =~ s/\s+/:/g; $opts->{$r} = $in{$r}; } } $share->{'dir'} = $in{'path'}; $share->{'desc'} = $in{'desc'}; $share->{'opts'} = &foreign_call("dfsadmin", "join_options", $opts); &foreign_call("dfsadmin", "modify_share", $share); } &unlock_file($iconfig{'dfstab_file'}); # Apply changes to NFS daemon &dfsadmin::apply_configuration(); &webmin_log($in{'delete'} ? 'delete' : $in{'new'} ? 'create' : 'modify', 'export', $in{'path'}); print "1\n"; } elsif (%binfo && &check_os_support(\%binfo)) { # BSD NFS exports &module_check("bsdexports"); } else { # No NFS modules installed or supported print "0\n"; } sub module_check { if (!$acl{$base_remote_user,$_[0]}) { print "0\n"; exit; } } file/list_exports.cgi0100775000567100000120000000452210754361755014726 0ustar jcameronwheel#!/usr/local/bin/perl # list_exports.cgi # Output info about NFS exports require './file-lib.pl'; print "Content-type: text/plain\n\n"; if ($access{'uid'}) { # User has no access to NFS print "0\n"; exit; } &read_acl(\%acl, undef); %einfo = &get_module_info("exports"); %dinfo = &get_module_info("dfsadmin"); #%binfo = &get_module_info("bsdexports"); # too hard if (%einfo && &check_os_support(\%einfo)) { # Linux NFS exports &module_check("exports"); if (!&has_command("rpc.nfsd") && !&has_command("nfsd")) { print "0\n"; exit; } print "1\n"; &foreign_require("exports", "exports-lib.pl"); foreach $e (&foreign_call("exports", "list_exports")) { push(@{$exp{$e->{'dir'}}}, $e) if ($e->{'dir'} !~ /:/ && $e->{'host'} !~ /:/); } foreach $d (keys %exp) { local $host; foreach $e (@{$exp{$d}}) { local $o = $e->{'options'}; $host .= sprintf ":%s:%d:%d", $e->{'host'} ? $e->{'host'} : '*', defined($o->{'ro'}), defined($o->{'all_squash'}) ? 0 : defined($o->{'no_root_squash'}) ? 2 : 1; } print &make_chroot($d),$host,"\n"; } } elsif (%dinfo && &check_os_support(\%dinfo)) { # Solaris NFS shares &module_check("dfsadmin"); print "2\n"; &foreign_require("dfsadmin", "dfs-lib.pl"); foreach $s (&foreign_call("dfsadmin", "list_shares")) { $opts = &foreign_call("dfsadmin", "parse_options",$s->{'opts'}); $opts->{'ro'} = '-' if (!defined($opts->{'ro'})); $opts->{'ro'} =~ s/:/ /g; $opts->{'rw'} = '-' if (!defined($opts->{'rw'})); $opts->{'rw'} =~ s/:/ /g; $opts->{'root'} = '-' if (!defined($opts->{'root'})); $opts->{'root'} =~ s/:/ /g; printf "%s:%s:%s:%s:%s\n", &make_chroot($s->{'dir'}), $opts->{'ro'}, $opts->{'rw'}, $opts->{'root'}, $s->{'desc'}; } } elsif (%binfo && &check_os_support(\%binfo)) { # BSD NFS exports &module_check("bsdexports"); print "3\n"; &foreign_require("bsdexports", "bsdexports-lib.pl"); foreach $e (&foreign_call("bsdexports", "list_exports")) { foreach $d (@{$e->{'dirs'}}) { printf "%s:%s", $d, $e->{'ro'} ? 1 : 0; if ($e->{'network'}) { printf ":%s/%s\n", $e->{'network'}, $e->{'mask'}; } else { foreach $h (@{$e->{'hosts'}}) { print ":$h"; } print "\n"; } } } } else { # No NFS modules installed or supported print "0\n"; } sub module_check { if (!$acl{$base_remote_user,$_[0]}) { print "0\n"; exit; } } file/ACLEntry.class0100664000567100000120000000443310754361755014151 0ustar jcameronwheel. ,D EF +F EG +GH I J +KL M +NOP +Q R S +T +U +VWX DY Z [\ ]^_`a bc ]de bfghijkl mnofilemgr LFileManager;file LRemoteFile;defZtypeLjava/lang/String;ownerreadwriteexec (Ljava/lang/String;LACLWindow;)VCodeLineNumberTable(LACLWindow;)VgetRow()[Ljava/lang/String;toString()Ljava/lang/String; SourceFileFileManager.java 9pq -. /0StringSplitter 9r sA 34default tu 12maskother 54 vw xy 62 72 82java/lang/Stringjava/lang/StringBufferacltype_default_ z{ @Aacltype_| }~user eacl_user `4 } eacl_group 4 info_read  info_write info_execdefault:: zACLEntryjava/lang/Object()V ACLWindow(Ljava/lang/String;C)V nextTokenequals(Ljava/lang/Object;)Zlength()IcharAt(I)Cappend,(Ljava/lang/String;)Ljava/lang/StringBuffer; FileManagertext&(Ljava/lang/String;)Ljava/lang/String; RemoteFile8(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;group(C)Ljava/lang/StringBuffer; +,-./01234546272829:; **,*,Y+:N*- *  * *- *  &*  *-**-: -:*r*w*x<N    ' 3 8 @ X ` j o u } 9=;9**+*+<   >?;@L* Y* Y* M+*,S*  *  * * +SI* +*S8*  +** !S+*"*#!S+S*&Y+]2*$%S*&Y+]2*&%S*&Y+]2*'%S+<>  < G m u |  > @A;* (LY+* )L*  6*  *Y+**)LY+*r-*LY+*w-*LY+*x-*L+<"  * B i BCfile/save_share.cgi0100775000567100000120000000506310754361755014310 0ustar jcameronwheel#!/usr/local/bin/perl # save_share.cgi # Create, update or delete a samba share require './file-lib.pl'; $disallowed_buttons{'sharing'} && &error($text{'ebutton'}); &ReadParse(); print "Content-type: text/plain\n\n"; if ($access{'ro'} || $access{'uid'}) { # User has no access to samba print "0\n"; exit; } %minfo = &get_module_info("samba"); &read_acl(\%acl, undef); if (!%minfo || !&check_os_support(\%minfo) || !$acl{$base_remote_user,'samba'}) { # Samba module not installed or supported print "0\n"; exit; } &foreign_require("samba", "samba-lib.pl"); %sconfig = &foreign_config("samba"); &lock_file($sconfig{'smb_conf'}); @shares = &foreign_call("samba", "list_shares"); if ($in{'delete'}) { # Deleting an old share foreach $s (@shares) { &foreign_call("samba", "get_share", $s); if ($samba::share{'path'} && $samba::share{'path'} eq $in{'path'}) { &foreign_call("samba", "delete_share", $s); last; } } print "1\n"; } elsif ($in{'new'}) { # Creating a new share map { $taken{$_}++ } @shares; if ($in{'path'} =~ /\/([^\/]+)$/) { $base = $1; } else { $base = "root"; } if ($taken{$base}) { for($i=2; $taken{$base.$i}; $i++) { } $base = $base.$i; } $samba::share{'path'} = $in{'path'}; $samba::share{'available'} = $in{'available'} ? 'yes' : 'no'; $samba::share{'writable'} = $in{'writable'} ? 'yes' : 'no'; $samba::share{'comment'} = $in{'comment'}; if ($in{'guest'} == 2) { $samba::share{'public'} = 'yes'; $samba::share{'guest only'} = 'yes'; } elsif ($in{'guest'} == 1) { $samba::share{'public'} = 'yes'; } &foreign_call("samba", "create_share", $base); print "1\n"; } else { # Updating an existing share foreach $s (@shares) { &foreign_call("samba", "get_share", $s); if ($samba::share{'path'} && $samba::share{'path'} eq $in{'path'}) { # found the share to update $samba::share{'available'} = $in{'available'} ? 'yes' : 'no'; $samba::share{'writable'} = $in{'writable'} ? 'yes' : 'no'; $samba::share{'comment'} = $in{'comment'}; if ($in{'guest'} == 2) { $samba::share{'public'} = 'yes'; $samba::share{'guest only'} = 'yes'; } elsif ($in{'guest'} == 1) { $samba::share{'public'} = 'yes'; delete($samba::share{'guest only'}); } else { delete($samba::share{'public'}); delete($samba::share{'guest only'}); } &foreign_call("samba", "modify_share", $s, $s); last; } } print "1\n"; } &unlock_file($sconfig{'smb_conf'}); &webmin_log($in{'delete'} ? 'delete' : $in{'new'} ? 'create' : 'modify', 'share', $in{'path'}); file/DFSAdminExport.class0100664000567100000120000000261010754361755015312 0ustar jcameronwheel.S -. / 0 1 2 3 4 567 8 9: 0; -< = >?@ABC DEFpathLjava/lang/String;descrorwroot(Ljava/lang/String;)VCodeLineNumberTable](Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Vsplit'(Ljava/lang/String;)[Ljava/lang/String;params()Ljava/lang/String; SourceFileFileManager.java "GStringSplitter "H I*    ! java/util/StringTokenizer "J KLjava/lang/Stringjava/lang/StringBufferpath= MNO PQ&ro=&rw=&root=&desc= R*DFSAdminExportjava/lang/Object()V(Ljava/lang/String;C)V nextToken'(Ljava/lang/String;Ljava/lang/String;)V countTokens()Iappend,(Ljava/lang/String;)Ljava/lang/StringBuffer; FileManagerurlize&(Ljava/lang/String;)Ljava/lang/String;toString  !"#$l8*Y+:M*,*,*,*,*, %" \ ] ^ _ `' a/ b7 c"&$P **+*, *-**% f g h i j k l'($V* Y* L+ M>,,+S,% p q r s" r( t)*$nVY***** % y+,file/list_shares.cgi0100775000567100000120000000226310754361755014507 0ustar jcameronwheel#!/usr/local/bin/perl # list_shares.cgi # Output info about samba shares require './file-lib.pl'; print "Content-type: text/plain\n\n"; if ($access{'uid'}) { # User has no access to samba print "0\n"; exit; } %minfo = &get_module_info("samba"); &read_acl(\%acl, undef); if (!%minfo || !&check_os_support(\%minfo) || !$acl{$base_remote_user,'samba'}) { # Samba module not installed or supported print "0\n"; exit; } &foreign_require("samba", "samba-lib.pl"); %sconfig = &foreign_config("samba"); if (!-r $sconfig{'smb_conf'} || !&has_command($sconfig{'samba_server'})) { # Samba not installed print "0\n"; exit; } print "1\n"; foreach $s (&foreign_call("samba", "list_shares")) { &foreign_call("samba", "get_share", $s); if ($s ne 'global' && $s ne 'homes' && $s ne 'printers' && $samba::share{'path'} =~ /^\/[^\%\s\:]*$/ && $samba::share{'printable'} !~ /true|yes/i) { printf "%s:%s:%s:%s:%s\n", $samba::share{'path'}, $samba::share{'available'} =~ /no|false/i ? 0 : 1, $samba::share{'writable'} =~ /yes|true/i ? 1 : 0, $samba::share{'guest only'} =~ /yes|true/i ? 2 : $samba::share{'public'} =~ /yes|true/i ? 1 : 0, $samba::share{'comment'}; } } file/OverwriteWindow.class0100664000567100000120000000564210754361755015711 0ustar jcameronwheel. F^ E_ E` Ea Eb cd Eef ^ Egh ci Ejklm no cp q Erstu vwx ny z E{ c| }~ ^ " g c % E Q E E E E  n n 8v n =^ = = c cfilemgr LFileManager;src LRemoteFile;alreadynewnameLjava/awt/TextField;ok LCbButton;cancelidxImodeZ)(LFileManager;LRemoteFile;LRemoteFile;I)VCodeLineNumberTableclick (LCbButton;)V SourceFileFileManager.java V HI JK LK RS U TUjava/awt/BorderLayout  over_title North MultiLabelover_msg V Westjava/awt/Labelover_new VEastjava/awt/TextField V MN java/awt/Paneljava/awt/FlowLayout VCbButtonsave.gif over_ok V OP  cancel.gif QPSouth  K  ErrorWindow paste_eself S paste_eoverjava/lang/StringBuffer/ OverwriteWindow FixedFrameCbButtonCallback()V FileManagercut_mode setLayout(Ljava/awt/LayoutManager;)Vtext&(Ljava/lang/String;)Ljava/lang/String;setTitle(Ljava/lang/String;)V RemoteFilepathLjava/lang/String;8(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;(Ljava/lang/String;II)Vadd<(Ljava/lang/String;Ljava/awt/Component;)Ljava/awt/Component;name(Ljava/lang/String;I)VfixedLjava/awt/Font;setFont(Ljava/awt/Font;)V(I)V get_image$(Ljava/lang/String;)Ljava/awt/Image;8(Ljava/awt/Image;Ljava/lang/String;ILCbButtonCallback;)V*(Ljava/awt/Component;)Ljava/awt/Component;Util recursiveBody(Ljava/awt/Component;)VpackshowdisposegetText()Ljava/lang/String;java/lang/Stringlength()I directoryfind (Ljava/lang/String;)LRemoteFile;typeequals(Ljava/lang/Object;)Zappend,(Ljava/lang/String;)Ljava/lang/StringBuffer;toString paste_fileE(LRemoteFile;LRemoteFile;Ljava/lang/String;LRemoteFile;Z)LRemoteFile; cut_buffer [LRemoteFile; EFGHIJKLKMNOPQPRSTUVWXo**+*-*,****Y ** *Y**W*Y* W**Y,ZW** Y!:"Y#$*%Y*&'*( *)Z*+W*%Y*,'*- *)Z.+W*/W*0*1*2YJ   $ / < ] t          Z[XP+*. *3+***45*6M,*47N-*8Y*9 :W-(-; -;8Y*<-:W=Y>,?@?=Y>,A?ABA*4AB:***6-*C:**D*S*3YF   $ , 8 @ Q R e z !{ # % ' ) + -\]file/LinuxExport.class0100664000567100000120000000276010754361755015032 0ustar jcameronwheel.^ ./ 0 1 2 34 5 6 7 89 : ;<= .> ? @AB C DEFGHIJpathLjava/lang/String;host[Ljava/lang/String;ro[Zsquash[I(Ljava/lang/String;)VCodeLineNumberTableN(Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;)Vparams()Ljava/lang/String; SourceFileFileManager.java %KStringSplitter %L M+  NOjava/lang/String  !" #$ PQ1 RST UVjava/lang/StringBufferpath= WXY Z[&count= W\ ]+&host=&ro&squash LinuxExportjava/lang/Object()V(Ljava/lang/String;C)V nextToken countTokens()I hasMoreTokens()Zequals(Ljava/lang/Object;)Zjava/lang/IntegerparseInt(Ljava/lang/String;)Iappend,(Ljava/lang/String;)Ljava/lang/StringBuffer; FileManagerurlize&(Ljava/lang/String;)Ljava/lang/String;(I)Ljava/lang/StringBuffer;toString  !"#$%&'n*Y+:M*,,l>** * 6, 2*,S* , T* ,Oͱ(6     & - 4 > I Y g m %)'* **+(  *+'Y**L=*Y+*2LY+* 3LY+* .Lw+( ' 2 [ ,-file/SharingWindow.class0100664000567100000120000002351410754361755015314 0ustar jcameronwheel.                        )   -   -!" #$ % &' () * + ,-. / 0 1 2345 67 89 :;< M= > ?@ A B C D E F G H IJKL M N OP Q RS T U V WX YZ l[ l\] ^ r_`a bc td efg hi jk l m n -op q r s t uv  w x yz {| s}  ~ s        S S S  Ssave_b LCbButton;cancel_bfile LRemoteFile;filemgr LFileManager;sshare LSambaShare;dexportLDFSAdminExport;lexport LLinuxExport;samba_onLjava/awt/Checkbox; samba_off writable_on writable_off available_on available_offguest_on guest_off guest_onlycommentLjava/awt/TextField;descnfs_onnfs_offrwhostsrohosts roothostsrw[Ljava/awt/Checkbox;roroothost[Ljava/awt/TextField;lro[Ljava/awt/Choice;squash(LRemoteFile;LFileManager;)VCodeLineNumberTableclick (LCbButton;)Vsetup_leftright3(Ljava/awt/Panel;Ljava/awt/Panel;Ljava/awt/Panel;)Vadd_itemI(Ljava/lang/String;Ljava/awt/Component;Ljava/awt/Panel;Ljava/awt/Panel;)V add_hostsn(Ljava/lang/String;Ljava/lang/String;[Ljava/awt/Checkbox;Ljava/awt/Panel;Ljava/awt/Panel;)Ljava/awt/TextField; squashbox(I)Ljava/awt/Choice;robox(Z)Ljava/awt/Choice; opts_panel:(Ljava/awt/Component;Ljava/awt/Component;)Ljava/awt/Panel;export_options(LLinuxExport;)V SourceFileFileManager.java java/awt/Checkbox  share_title      SambaShare   LinuxExport DFSAdminExport java/awt/BorderLayout java/awt/Paneljava/awt/GridLayout java/awt/CheckboxGroup share_soff    share_son North  LinedPanel share_sheader  java/awt/TextField     share_comment yes  no share_available  share_writable share_only   share_guestCenter share_noff  share_non  share_nheader java/awt/Label share_host share_opts  java/awt/Choice     share_descshare_ro-  share_rw   share_root     TabbedPanel share_samba  share_nfsjava/awt/FlowLayout CbButtonsave.gif save   cancel.gifcancel South     java/lang/StringBuffersave_share.cgi?    save_share.cgi?delete=1&   save_share.cgi?new=1& save_export.cgi?save_export.cgi?delete=1& save_export.cgi?new=1&    West share_none  share_all  share_listedshare_s0 share_s1share_s2  share_lrw share_lroEastjava/lang/String   SharingWindow FixedFrameCbButtonCallback()V RemoteFilepathLjava/lang/String; FileManagertext8(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;setTitle(Ljava/lang/String;)VstabLjava/util/Hashtable;java/util/Hashtableget&(Ljava/lang/Object;)Ljava/lang/Object;ntabnfsmodeI setLayout(Ljava/awt/LayoutManager;)V(II)V&(Ljava/lang/String;)Ljava/lang/String;.(Ljava/lang/String;Ljava/awt/CheckboxGroup;Z)Vadd*(Ljava/awt/Component;)Ljava/awt/Component;<(Ljava/lang/String;Ljava/awt/Component;)Ljava/awt/Component;(Ljava/lang/String;I)VfixedLjava/awt/Font;setFont(Ljava/awt/Font;)V availableZwritableguest(IIII)V[Ljava/lang/String;[Z[I getParent()Ljava/awt/Container;java/awt/Containerremove(Ljava/awt/Component;)V sambamodeaddItem)(Ljava/lang/String;Ljava/awt/Component;)V(I)V get_image$(Ljava/lang/String;)Ljava/awt/Image;8(Ljava/awt/Image;Ljava/lang/String;ILCbButtonCallback;)VUtil recursiveBodypackshowgetState()ZgetText()Ljava/lang/String;append,(Ljava/lang/String;)Ljava/lang/StringBuffer;paramstoStringget_text'(Ljava/lang/String;)[Ljava/lang/String;*(Ljava/lang/String;ZZILjava/lang/String;)Vput8(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;N(Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;)V](Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V showing_files show_files(LRemoteFile;)Zdisposeequals(Ljava/lang/Object;)Zlength()IselecttrimgetSelectedIndex   }*****+*,*** ** * ** N**-* *-*YY:Y:Y:YY:YY:*Y* !*"Z#$W*Y*%!*"Z&$W'(W)Y**!+: * ,*-Y*. */01*1*23**4!*15Y:  YY:  *Y*6! * *7"Z8$W *Y*9! **7"Z:$W**;! 5Y:  YY:  *Y*6! * *<"Z=$W *Y*9! **<"Z>$W**?! 5Y:YY:*Y*@!**A"ZB$W*Y*6!**A"ZC$W*Y*9!**A"ZD$W**E!5F (WY:Y:Y:YY:YY:*Y*G!-"ZH$W*Y*I!-"ZJ$W'(W)Y*K!+:*,*rYLYLMY*N!O$WMY*P!O$W* *Q6*`-R*`ST*`SU6*R-Y*Q20S*R2*23*T**V3WS*U**X.YS*R2$W**T2*U2Z$W|*R-Y.0S*R2*23*T*WS*U*YS*R2$W**T2*U2Z$W**-Y*. *[0\*\*23**]!*\5***^!*_ *`*ab***c!*_ *d*ae***f!*_ *g*ah*2i*2j*F(W*kB*8lYm:*n!o*p!o*FqW,*k*FqW* *FqWY:rYs*tY*uv*w!*xZy$W*tY*zv*{!*xZ|$W*}qW*~**k   & : R d o z  1 ; M W w        3 < J S        T          7 A S ] h x           4 I V n t    ! " # $ % ' ( )% +Q .} 1 4 6 8 ; < = > ? @ A& B2 C< DE GN H[ I L O P Q R S 2+*y **&u**87**=<**B*CA**1/*Y*M*9*Y*M* *W*&~*Y* *8*=*B*C*1* **W*Y*M**9*J/***Y*M}*9*Y*M**W@*J6*Y* ***Y*M***W***J**\[**2_*2. *b`**2_*2. *ed**2_ *hg*Y*M*9*Y*M**W*J*Y* *\*2_*2. *b*2_*2. *e*2_ *h*Y*M***W***W*+*|*6 W Y [' \5 ]Y _g ` b c e g h i k q, rM wX xi zq { } ~        0 3 > O ]       ( : = G       % - 1 V+YY:Y,(WF-(W,Y-Y+'(W&  ) 2 ? L U `4-MY+O$WY:Y,(W$W  " + 3  ӻY:YY:-Y*!,_"[S$W-Y*!,"[S$W-Y*!,"[S$W*+5-Y,_.,0:*23*.5.  B j b6SYM,*!,*!,*!,,   " / 4 Y1SYM,*!,*!,,   " / M%YN-Y-+(W-,(W-    # =>*R*R2+Q+V+ X>6*RW*R2?+Q*R2S+V*T2T+X*U2OB     % - 4 ; I [ k    file/ACLWindow.class0100664000567100000120000001203710754361755014316 0ustar jcameronwheel.H r  q  q q q q q      " q  ) q ,  , ) q 3 5 3  8 q 3  @ q  @ F q q q q   , , ,   q @   i )  i  i ifilemgr LFileManager;file LRemoteFile;acllistLjava/util/Vector;edmapLjava/util/Hashtable;ok LCbButton;canceladdaddtypeLjava/awt/Choice;acltable LMultiColumn;acltypes[Ljava/lang/String;(LFileManager;LRemoteFile;)VCodeLineNumberTableclick (LCbButton;)V doubleClick(LMultiColumn;I)V singleClickheadingClicked SourceFileFileManager.java java/util/Vector  yzjava/util/Hashtable {|java/lang/Stringusergroupmask default user default group default other default mask  eacl_title     uv wxjava/lang/StringBuffergetfacl.cgi?file=       ErrorWindow eacl_eacls  java/awt/BorderLayout  eacl_acltype  eacl_aclname eacl_aclperms MultiColumn  ACLEntry    Center  java/awt/Paneljava/awt/FlowLayout !CbButtonadd.gif "#eacl_add $ ~ % &'java/awt/Choice acltype_ ()  java/awt/Label save.gifsave }~ cancel.gif ~South* +, - . / 01 23 4 & 56othereacl_edefaults  7 setfacl.cgi?file=&acl= eacl_efailed 8 9 :default ;< => eacl_edefmask eacl_emask ACLEditor ? @ AB C DE F G ACLWindow FixedFrameCbButtonCallbackMultiColumnCallback(II)V()V RemoteFilepathLjava/lang/String; FileManagertext8(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;setTitle(Ljava/lang/String;)Vappend,(Ljava/lang/String;)Ljava/lang/StringBuffer;urlize&(Ljava/lang/String;)Ljava/lang/String;toString()Ljava/lang/String;get_text'(Ljava/lang/String;)[Ljava/lang/String;length()I setLayout(Ljava/awt/LayoutManager;)V+([Ljava/lang/String;LMultiColumnCallback;)V (Ljava/lang/String;LACLWindow;)V addElement(Ljava/lang/Object;)VgetRow()[Ljava/lang/String;addItem([Ljava/lang/Object;)V<(Ljava/lang/String;Ljava/awt/Component;)Ljava/awt/Component;(I)V get_image$(Ljava/lang/String;)Ljava/awt/Image;8(Ljava/awt/Image;Ljava/lang/String;ILCbButtonCallback;)V*(Ljava/awt/Component;)Ljava/awt/Component;typeIreplace(CC)Ljava/lang/String;Util recursiveBody(Ljava/awt/Component;)Vpackshowsize elementAt(I)Ljava/lang/Object;defZownerequals(Ljava/lang/Object;)Z,(Ljava/lang/Object;)Ljava/lang/StringBuffer;J(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;disposegetSelectedIndex startsWith(Ljava/lang/String;)Z substring(I)Ljava/lang/String;!(LACLWindow;Ljava/lang/String;Z)Vselectedget&(Ljava/lang/Object;)Ljava/lang/Object;(LACLWindow;LACLEntry;)Vput8(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;toFront requestFocus qrst uvwxyz{|}~~~ C*,*Y*Y*Y SY SY SY SY SYSYS*+,*+*,*Y*W*N-2Y* -2!W*"Y#$Y*%&SY*'&SY*(&S:*)Y**+6-,,Y-2*-:*.*+/0*1*+2W3Y4:5Y67*8Y*9:*;&*W*? *6*@YAZB>W6;YC*2 _D:*B*&EFYGH>W*8Y*I:*J&*W*8Y*L:*M&*W*O2W*P*Q*R%} pq wM~[`e"-6Ci~-6:>B+*KG=>666*S`*T,:U=U:V2W X>W X6WYX6# Y*Z&!W[:6*S.Y*T,\]:*Y^*W*_*W:2"Y*`*2a!W*b+*=**Bc2MdN,-e6 ,-fM, XX6*SI*T,:W,X)UY*gh&!WiY*,jW+*N*b) !/9IXhx~&EILTadkpyK+k>D*T,:*li:*iY*mnW op&  $)@EJfile/StringSplitter.java0100644000567100000120000000402010754361755015327 0ustar jcameronwheelimport java.util.Vector; // StringSplitter // A stringsplitter object splits a string into a number of substrings, // each separated by one separator character. Separator characters can be // included in the string by escaping them with a \ public class StringSplitter { Vector parts = new Vector(); int pos = 0; StringSplitter(String str, char sep) { this(str, sep, true); } StringSplitter(String str, char sep, boolean escape) { StringBuffer current; parts.addElement(current = new StringBuffer()); for(int i=0; i".&html_escape($object).""); } elsif ($action eq 'save' || $action eq 'chmod' || $action eq 'mkdir' || $action eq 'upload' || $action eq 'delete') { return &text("log_${action}", "".&html_escape($object).""); } elsif ($action eq 'link' || $action eq 'move' || $action eq 'copy') { return &text("log_${action}", "".&html_escape($object)."", "".&html_escape($p->{'to'}).""); } elsif ($action eq 'relink') { return &text('log_relink', "".&html_escape($object)."", "".&html_escape($p->{'linkto'}).""); } elsif ($action eq 'rename') { return &text('log_move', "".&html_escape($object)."", "".&html_escape($p->{'new'}).""); } elsif ($action eq 'attr') { return &text('log_attr', "".&html_escape($object).""); } elsif ($action eq 'acl') { return &text('log_acl', "".&html_escape($object).""); } else { return undef; } } file/SearchWindow.class0100664000567100000120000001772710754361755015137 0ustar jcameronwheel.          =\)?G>       (   ( (     4 6 8       !" #$ E %& H' H( H) E*+, -. / 01 2 3 45 67 89: ;<= ; 4>? @A cB CDE FGH IJ KL M NO sP QR (S T U VWX {PY Z[\ E]^ 8_`abc defghijkl m nop q rs t u v w xyB@z{ | } ~           tab LTabbedPanel;list LMultiColumn;search_b LCbButton;cancel_bdown_bfilemgr LFileManager;dirLjava/awt/TextField;matchusergroupuanyLjava/awt/Checkbox;uselganygseltypeLjava/awt/Choice;sanysmoreslessmorelessxonxofftypes[Ljava/lang/String;contresults [LRemoteFile;"(Ljava/lang/String;LFileManager;)VCodeLineNumberTableadd_itemI(Ljava/lang/String;Ljava/awt/Component;Ljava/awt/Panel;Ljava/awt/Panel;)Vclick (LCbButton;)V singleClick(LMultiColumn;I)V doubleClickheadingClicked SourceFileFileManager.java java/lang/Stringfdlp  search_title  java/awt/BorderLayout  TabbedPanel java/awt/Panel search_crit java/awt/GridLayout  right_name right_size MultiColumn      search_list search_dirjava/awt/TextField   search_match   search_cont java/awt/FlowLayout java/awt/CheckboxGroupjava/awt/Checkbox search_any    search_user  search_group java/awt/Choice java/lang/StringBuffer search_types_    search_type search_size  search_more  search_less yes no  search_xdevWest EastCenterCbButtondown.gif  search_down  save.gif search_ok  cancel.gifcancel South   java/awt/Label   search.cgi     ErrorWindow search_edir?dir= *&match= &type=  search_euser&user= search_egroup&group= java/lang/Exception search_esize &size=%2Bc &size=%2D&xdev=1&cont=  [Ljava/lang/Object; RemoteFile java/lang/Object      B kB MB     search_edown  /         SearchWindow FixedFrameCbButtonCallbackMultiColumnCallback()V FileManagertext&(Ljava/lang/String;)Ljava/lang/String;setTitle(Ljava/lang/String;)V setLayout(Ljava/awt/LayoutManager;)VaddItem)(Ljava/lang/String;Ljava/awt/Component;)V(II)V+([Ljava/lang/String;LMultiColumnCallback;)V setWidths([F)V setDrawLines(Z)VfixedLjava/awt/Font;setFont(Ljava/awt/Font;)V(Ljava/lang/String;I)V(I)Vsearch_contentsZ can_users(III)V.(Ljava/lang/String;Ljava/awt/CheckboxGroup;Z)Vadd*(Ljava/awt/Component;)Ljava/awt/Component; follow_linksappend,(Ljava/lang/String;)Ljava/lang/StringBuffer;toString()Ljava/lang/String;got_filesystems<(Ljava/lang/String;Ljava/awt/Component;)Ljava/awt/Component; get_image$(Ljava/lang/String;)Ljava/awt/Image;8(Ljava/awt/Image;Ljava/lang/String;ILCbButtonCallback;)VUtil recursiveBody(Ljava/awt/Component;)VpackshowdisposegetTexttrimlength()IcharAt(I)CurlizegetSelectedIndexgetState()Zjava/lang/IntegerparseInt(Ljava/lang/String;)I setCursorget_text'(Ljava/lang/String;)[Ljava/lang/String;.(LFileManager;Ljava/lang/String;LRemoteFile;)VtmapIpathLjava/lang/String;sizeJspad(JI)Ljava/lang/String;clearaddItems([[Ljava/lang/Object;)Vselectselected download_file(LRemoteFile;)V lastIndexOf(I)I substring(II)Ljava/lang/String;find_directory!(Ljava/lang/String;Z)LRemoteFile; showing_listnameequals(Ljava/lang/Object;)Zfilesscrollto  \**YSYSYSYSYS*, **  * Y*YYN- Y**  -Y:Y:YYYSY*  SY*  S:YQYQYQ:*Y* !*!"*!#*!* $%** & *!** ' *(Y+)Z*+*** $,** - *(Y.Z/+*/* $,* 00** 1 *(Y.Z2+*2* $,* 3Y:4Y56Y7: *8Y* 9  :Z;* $,** ? +Y:  4Y56Y7:  *8Y* 9  :Z@ @7 AE Dd Er G| I K O P Q R S T U V+ W> YG ZV [_ \} ] ^ _ ` d e f g f h- l6 m_ ph qw r s t u v w x y z {' }1 : C R p         F O S W [ `4-sY+twx:y{Y*  }WHYI,KK* WKLM*AT*AJ*Bwx:y{Y*  }WHYI,KK* WKLM*RM*Swx:W:{Y*  }WHYI,KKKKLMT*UJ*Vwx:W:{Y*  }WHYI,KKKKLM*[!*[HYI,KKLM*29*2wxy)HYI,KK* W*2wKLM** ,:2y{Y2}Wd:*d6Y* 2:*dSd[S:  * 2eS S) HYI* KKLS`- HYI* mKKLS* HYI* mKKLS*!*!** & *>+*h6*!= *{Y*  }W* *2>O     % 6 G H h t |   - > J R c d                  * ; O f               ( N Z                *2N-/6 -:* W* :6:2-"* `* ` *u6   ( 3 < G Y g u x ~   !file/search.cgi0100775000567100000120000000244010754361755013431 0ustar jcameronwheel#!/usr/local/bin/perl # search.cgi # Find files under some directory require './file-lib.pl'; $disallowed_buttons{'search'} && &error($text{'ebutton'}); &ReadParse(); &switch_acl_uid(); print "Content-type: text/plain\n\n"; if (!&can_access($in{'dir'})) { print $text{'search_eaccess'},"\n"; } $in{'dir'} =~ s/^\/+/\//g; if ($in{'dir'} ne '/') { $in{'dir'} =~ s/\/$//; } $cmd = "find ".quotemeta(&unmake_chroot($in{'dir'}))." -name ".quotemeta($in{'match'}); if ($in{'type'}) { $cmd .= " -type $in{'type'}"; } if ($in{'user'}) { $cmd .= " -user $in{'user'}"; } if ($in{'group'}) { $cmd .= " -group $in{'group'}"; } if ($in{'size'}) { $cmd .= " -size $in{'size'}"; } if ($in{'xdev'}) { $cmd .= " -mount"; } print "\n"; open(CMD, "$cmd 2>/dev/null |"); while($f = ) { chop($f); if (defined($in{'cont'})) { # Check the file contents for the given pattern $found = 0; if ($f =~ /\.pdf$/i && &has_command("pdftotext")) { # Convert PDF to text open(FILE, "pdftotext -raw ".quotemeta($f)." - |"); } else { open(FILE, $f); } while() { if (/\Q$in{'cont'}\E/i) { $found = 1; last; } } close(FILE); next if (!$found); } local $rf = &make_chroot($f); local $fil = &file_info_line($f, $rf); print $fil,"\n" if (defined($fil)); } close(CMD); file/TabbedPanel.class0100664000567100000120000000236310754361755014671 0ustar jcameronwheel.P ./ .0 .1 2 34 3 567 2 8 9:; < => 3 ? 5 @ A B BCDtab LTabSelector;dispLTabbedDisplayPanel;cardLjava/awt/CardLayout;()VCodeLineNumberTable3(Ljava/awt/Color;Ljava/awt/Color;Ljava/awt/Color;)VaddItem)(Ljava/lang/String;Ljava/awt/Component;)Vselect(Ljava/lang/String;)Vchose SourceFileTabbedPanel.javaE FG HG IG "& "#java/awt/BorderLayout JKNorth TabSelector  LMCenterTabbedDisplayPanel "N java/awt/CardLayout ! '* '( O* TabbedPaneljava/awt/PanelUtilbody_hiLjava/awt/Color; dark_edge_hibody setLayout(Ljava/awt/LayoutManager;)Vadd<(Ljava/lang/String;Ljava/awt/Component;)Ljava/awt/Component;#(Ljava/awt/Color;Ljava/awt/Color;)Vchoose! !"#$**%  "&$zN**Y* * Y+,- Z W**Y+,Z W**YZ%%:M'($2* +*+,% )*$1* +*+%&'(+*$% *+% ./,-file/TabSelector.class0100664000567100000120000000524510754361755014741 0ustar jcameronwheel. (DE D 'F 'GHI J 'K L 'M 'N 'O 'P Q 'R 'S T UV W XY 'Z $[ $\ X] X^ X_ X` ab ac Xd 'ef "gh $i 'jklhiLjava/awt/Color;lobknameLjava/util/Vector;chosenIfontLjava/awt/Font;chfont3(Ljava/awt/Color;Ljava/awt/Color;Ljava/awt/Color;)VCodeLineNumberTableaddItem(Ljava/lang/String;)Vchoosepaint(Ljava/awt/Graphics;)V mouseDown(Ljava/awt/Event;II)Z minimumSize()Ljava/awt/Dimension; preferredSize SourceFileTabbedPanel.java 4mjava/util/Vector -. /0 java/awt/Font timesRoman 4n 12 op 32 )* +* ,* qr st ;< uv wxjava/lang/String yz{ |} u@ ~0 0  v n  TabbedPanel 9java/awt/Dimension 4 ?@ TabSelectorjava/awt/Canvas()V(Ljava/lang/String;II)VgetName()Ljava/lang/String; addElement(Ljava/lang/Object;)V getGraphics()Ljava/awt/Graphics;size()I elementAt(I)Ljava/lang/Object;equals(Ljava/lang/Object;)Zjava/awt/GraphicssetColor(Ljava/awt/Color;)VwidthheightfillRect(IIII)VdrawLinesetFont(Ljava/awt/Font;)VgetFontMetrics()Ljava/awt/FontMetrics;java/awt/FontMetrics stringWidth(Ljava/lang/String;)I getHeight drawString getParent()Ljava/awt/Container;chose(II)V '()*+*,*-./01232456uI**Y**Y  *Y*   *+ *, *-7;5679<H=8961*+**7ABC:96_3=*(*+***ӱ7G HI$J,G2L;<6 + *+*+****l=*>6*h6*+* +`d`dd+`d`dd+* +d+``d+`d+`d+`dd`dd+`dd`dd+* +`d`dd+`d`dd+* +d+``d+`d+`d+d`dd+d`dd+* *+*  +* *:+6+6d+dl`dl` E7'PQRS+T;UCVRWXXaYiZ}[\]^_`abefg2h:iFjVkdltmnpqrstuvwVy=>6kC****ll***!"**#7} ~!)A?@6$ $Y2%7A@6*&7BCfile/ResizePanel.java0100644000567100000120000000730110754361755014560 0ustar jcameronwheel// ResizePanel // A panel with two parts, arranged either vertically or horizontally, // whose midpoint is adjustable import java.awt.*; import java.util.Vector; public class ResizePanel extends Panel implements LayoutManager { Component one, two; int pos = -1; double ratio; boolean vertical; boolean dragging; int border = 100; // Provide two components where component one initially occupies rt fraction of // parent area. When vertical=true components are layed out one above the other public ResizePanel(Component one, Component two, double rt, boolean vertical) { this.one = one; this.two = two; this.vertical = vertical; ratio = rt; setLayout(this); add(one); add(two); } public void paint(Graphics g) { Dimension s = size(); if (vertical) { // Draw horizontal bar between vertically aligned components pos = (int)(s.height * ratio); g.setColor(Color.white); g.drawLine(0, pos-2, 0, pos+1); g.drawLine(0, pos-2, s.width-2, pos-2); g.setColor(Color.black); g.drawLine(s.width-1, pos+2, s.width-1, pos-1); g.drawLine(s.width-1, pos+2, 1, pos+2); } else { // Draw vertical divider bar pos = (int)(s.width * ratio); g.setColor(Color.white); g.drawLine(pos-2, 0, pos+1, 0); g.drawLine(pos-2, 0, pos-2, s.height-2); g.setColor(Color.black); g.drawLine(pos+2, s.height-1, pos-1, s.height-1); g.drawLine(pos+2, s.height-1, pos+2, 1); } } // Detect mouse click on divider bar public boolean mouseDown(Event evt, int x, int y) { int sh; Dimension s = size(); if (vertical && y >= pos-2 && y <= pos+2) { // Started dragging dragging = true; } if (!vertical && x >= pos-2 && x <= pos+2) { // Started dragging dragging = true; } return dragging; } // Move division point on mouse drag public boolean mouseDrag(Event evt, int x, int y) { if (dragging) { Dimension s = size(); if (vertical) { if (y < border) pos = border; else if (y > s.height - border) pos = s.height - border; else pos = y; ratio = (double)pos / (double)s.height; } else { if (x < border) pos = border; else if (x > s.width - border) pos = s.width - border; else pos = x; ratio = (double)pos / (double)s.width; } layoutContainer(this); repaint(); } return dragging; } // No longer dragging on mouse button release public boolean mouseUp(Event evt, int x, int y) { boolean o = dragging; dragging = false; return o; } public void addLayoutComponent(String name, Component comp) { } // Arrange components within container public void layoutContainer(Container parent) { Dimension s = parent.size(); if (vertical) { pos = (int)(s.height * ratio); one.reshape(0, 0, s.width, pos-3); one.layout(); two.reshape(0, pos+3, s.width, s.height - pos - 5); two.layout(); } else { pos = (int)(s.width * ratio); one.reshape(0, 0, pos-3, s.height); one.layout(); two.reshape(pos+3, 0, s.width - pos - 5, s.height); two.layout(); } } // Determine minimum size for ResizePanel public Dimension minimumLayoutSize(Container parent) { Dimension d1 = one.minimumSize(), d2 = two.minimumSize(); if (vertical) { // Largest of the widths, sum of the heights return new Dimension(d1.width > d2.width ? d1.width : d2.width, d1.height + d2.height); } else { // Largest of the heights, sum of the widths return new Dimension(d1.width + d2.width, d1.height > d2.height ? d1.height : d2.height); } } public Dimension preferredLayoutSize(Container parent) { return minimumLayoutSize(parent); } public void removeLayoutComponent(Component comp) { } } file/getext.cgi.bak0100775000567100000120000000071010754361755014216 0ustar jcameronwheel#!/usr/local/bin/perl # getext.cgi # Returns a string of EXT attributes for some file require './file-lib.pl'; &ReadParse(); &switch_acl_uid(); print "Content-type: text/plain\n\n"; if (!&can_access($in{'file'})) { print $text{'facl_eaccess'},"\n"; } else { $out = `lsattr -d '$in{'file'}' 2>&1`; if ($? || $out !~ /^(\S+)\s/) { print $out,"\n"; } else { print "\n"; @a = split(//, $1); print join("", grep { $_ ne '-' } @a),"\n"; } } file/FileManager.java.bak0100644000567100000120000026024310754361755015253 0ustar jcameronwheelimport java.awt.*; import java.io.*; import java.applet.*; import java.net.*; import java.util.*; import netscape.javascript.JSObject; // A java filemanager that allows the user to manipulate files on the // Webmin server. Layout is similar to the windows explorer - directory // tree on the left, files on the right, action buttons on the top. public class FileManager extends Applet implements CbButtonCallback, HierarchyCallback, MultiColumnCallback { // top buttons CbButton ret_b, down_b, edit_b, refresh_b, props_b, copy_b, cut_b, paste_b, delete_b, new_b, upload_b, mkdir_b, makelink_b, rename_b, share_b, search_b, acl_b, attr_b, ext_b; // Directory tree Hierarchy dirs; FileNode root; Hashtable nodemap = new Hashtable(); // File list MultiColumn files; TextField pathname; RemoteFile showing_files; RemoteFile showing_list[]; // Copying and pasting RemoteFile cut_buffer[]; boolean cut_mode; static final String monmap[] = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" }; String accroot[]; Hashtable lang = new Hashtable(); Hashtable stab = new Hashtable(), ntab = new Hashtable(); boolean sambamode; int nfsmode; String trust; boolean got_filesystems; Vector fslist = new Vector(); boolean read_only = false; public void init() { setLayout(new BorderLayout()); StringTokenizer tok = new StringTokenizer(getParameter("root"), " "); accroot = new String[tok.countTokens()]; for(int i=0; tok.hasMoreTokens(); i++) accroot[i] = tok.nextToken(); trust = getParameter("trust"); // download language strings String l[] = get_text("lang.cgi"); for(int i=0; i= 0) lang.put(l[i].substring(0, eq), l[i].substring(eq+1)); } // list samba file shares String s[] = get_text("list_shares.cgi"); if (s[0].equals("1")) { for(int i=1; i 1) return new CbButton(get_image(f), this); else return new CbButton(get_image(f), t, CbButton.ABOVE, this); } // Gets an image from the images directory Image get_image(String img) { return getImage(getDocumentBase(), "images/"+img); } String[] get_text(String url) { try { long now = System.currentTimeMillis(); if (url.indexOf('?') > 0) url += "&rand="+now; else url += "?rand="+now; url += "&trust="+trust; URL u = new URL(getDocumentBase(), url); Vector lv = new Vector(); LineInputStream is = new LineInputStream(u.openStream()); while(true) try { lv.addElement(is.gets()); } catch(EOFException eof) { break; } is.close(); String rv[] = new String[lv.size()]; lv.copyInto(rv); return rv; } catch(Exception e) { e.printStackTrace(); //return null; String err[] = { e.getMessage() }; return err; } } // Fill the multicolumn list with files from some directory boolean show_files(RemoteFile f) { RemoteFile fl[] = f.list(); if (fl == null) return false; files.clear(); Object rows[][] = new Object[fl.length+1][]; long now = System.currentTimeMillis(); // Sort listing by chosen column if (f != showing_files) { // Directory has changed .. assume sort by name files.sortingArrow(1, 1); } else if (files.sortdir != 0) { // Sort by chosen order RemoteFile fls[] = new RemoteFile[fl.length]; System.arraycopy(fl, 0, fls, 0, fl.length); QuickSort.sort(fls, files.sortcol, files.sortdir); fl = fls; } // Create parent directory row rows[0] = new Object[6]; rows[0][0] = get_image("dir.gif"); rows[0][1] = ".."; rows[0][2] = rows[0][3] = rows[0][4] = rows[0][5] = ""; // Create file rows Date n = new Date(now); for(int i=0; i 0 || s == 0 && ss.length > 1) { // At least one non-.. file was selected boolean parentsel = false; for(int i=0; i 4) new ErrorWindow(text("edit_enormal")); else new EditorWindow(f, this); } else if (b == down_b) { // Force download of the selected file if (f == null) return; if (f.type == 0 || f.type > 4) new ErrorWindow(text("view_enormal2")); else show_file(f, true); } else if (b == refresh_b) { // Refesh the selected directory (and thus any subdirs) d.known = false; d.file.list = null; d.fill(); show_files(d.file); } else if (b == props_b) { // Display the properties window if (f == null) return; new PropertiesWindow(f, this); } else if (b == acl_b) { // Display the ACL window (if filesystem supports them) if (f == null) return; FileSystem filefs = find_filesys(f); if (filefs == null) return; if (filefs.acls) new ACLWindow(this, f); else new ErrorWindow(text("eacl_efs", filefs.mount)); } else if (b == attr_b) { // Display the attributes window (if filesystem supports them) if (f == null) return; FileSystem filefs = find_filesys(f); if (filefs == null) return; if (filefs.attrs) new AttributesWindow(this, f); else new ErrorWindow(text("attr_efs", filefs.mount)); } else if (b == ext_b) { // Display EXT attributes window (if filesystem supports them) if (f == null) return; FileSystem filefs = find_filesys(f); if (filefs == null) return; if (filefs.ext) new EXTWindow(this, f); else new ErrorWindow(text("ext_efs", filefs.mount)); } else if (b == copy_b) { // Copy the selected files if (f == null) return; cut_buffer = ff; cut_mode = false; } else if (b == cut_b) { // Cut the selected file if (f == null) return; cut_buffer = ff; cut_mode = true; } else if (b == paste_b) { // Paste the copied file if (cut_buffer == null) { new ErrorWindow(text("paste_ecopy")); return; } // Check for existing file clashes // XXX // Go through all the files to paste for(int i=0; i= rl && p.substring(0, rl).equals(accroot[r])) can = true; else if (l < rl && accroot[r].substring(0, l).equals(p)) can = true; } if (!can) { new ErrorWindow(text("find_eaccess", p)); return null; } FileNode posnode = root; RemoteFile pos = posnode.file; StringTokenizer tok = new StringTokenizer(p, "/"); while(tok.hasMoreTokens()) { String fn = tok.nextToken(); if (fn.equals("")) continue; RemoteFile fl[] = pos.list(); if (fl == null) return null; if (fill) { posnode.open = true; posnode.fill(); } boolean found = false; for(int i=0; i= l+1 && f.path.substring(0, l+1).equals(fs.mount+"/")) || fs.mount.equals("/")) { filefs = fs; } } return filefs; } public boolean action(Event e, Object o) { if (e.target == pathname) { // A new path was entered.. cd to it String p = pathname.getText().trim(); if (p.equals("")) return true; find_directory(p, true); return true; } return false; } // singleClick // Called on a single click on a list item public void singleClick(MultiColumn list, int num) { } // doubleClick // Called upon double-clicking on a list item public void doubleClick(MultiColumn list, int num) { if (num == 0) { // Go to parent directory if (showing_files.directory != null) { ((FileNode)nodemap.get(showing_files)).open = false; show_files(showing_files.directory); dirs.select((FileNode)nodemap.get(showing_files)); dirs.redraw(); } return; } RemoteFile d = showing_list[num-1]; if (d.type == 0) { // Open this directory FileNode pn = (FileNode)nodemap.get(showing_files); pn.fill(); pn.open = true; FileNode fn = (FileNode)nodemap.get(d); if (show_files(d)) { fn.fill(); fn.open = true; dirs.select(fn); dirs.redraw(); } } else if (d.type <= 4) { // Direct the browser to this file show_file(d, list.last_event.shiftDown()); } } // Called when the user clicks on a column heading so that it can // be sorted. public void headingClicked(MultiColumn list, int col) { if (col == 0) return; // ignore click on icon column? if (col == list.sortcol) { list.sortingArrow(col, list.sortdir == 2 ? 1 : 2); } else { list.sortingArrow(col, 1); } // Re-show the list in the new order, but with the same files selected int ss[] = files.allSelected(); RemoteFile ssf[] = new RemoteFile[ss.length]; for(int i=0; i 0) { ch.insertElementAt(n, i); break; } } } } class RemoteFile { static final int DIR = 0; static final int TEXT = 1; static final int IMAGE = 2; static final int BINARY = 3; static final int UNKNOWN = 4; static final int SYMLINK = 5; static final int DEVICE = 6; static final int PIPE = 7; static final String[] tmap = { "dir.gif", "text.gif", "image.gif", "binary.gif", "unknown.gif", "symlink.gif", "device.gif", "pipe.gif" }; FileManager parent; String path, name; int type; String user, group; long size; int perms; long modified; String linkto; RemoteFile list[]; RemoteFile directory; // Parse a line of text to a file object RemoteFile(FileManager parent, String line, RemoteFile d) { this.parent = parent; StringTokenizer tok = new StringTokenizer(line, "\t"); path = tok.nextToken(); type = Integer.parseInt(tok.nextToken()); user = tok.nextToken(); group = tok.nextToken(); size = Long.parseLong(tok.nextToken()); perms = Integer.parseInt(tok.nextToken()); modified = Long.parseLong(tok.nextToken())*1000; if (type == 5) linkto = tok.nextToken(); directory = d; if (path.equals("/")) name = "/"; else name = path.substring(path.lastIndexOf('/')+1); } // Create a new, empty file object RemoteFile() { } // Returns a list of files in this directory