Hallo,
ich bin gerde dabei ein Plugin für den firefox zu programmieren habe es auch schon soweit fertig, doch habe ich ein Problem.Damit es auch andere User nutzen können brauche ich im menü einen Link wo ein Eingabefeld aufgeht und der user seinen usernamen eingeben kann.Dann sollte der Username in der datei common.js gespeichert werden, das sollte dann z.b. so dastehen
$username='gespeicherterName';.
mit meinem Namen klappt das schon doch wie soll ein anderer User da seinen Namen reinbekommen, wenn das plugin installiert ist?
Ich hoffe ihr könnt mir dabei helfen.
Eingabefeld für Firefox
-
junglist79 -
12. März 2006 um 16:40 -
Erledigt
-
-
Ich denke mal du meinst eine Erweiterung ?
Für den Fall sind Erweiterungen eh User-Profil-abhängig.
Sprich ein anderer User/Profil hat auch eine neue
common.js.Oder meinst du gar eine seperate User-Einstellung pro Profil.
Also ein Profil im Profil
...:AOD:...
-
Plugin oder Erweiterung? oder was? Wann soll dieses Fenster aufgehen? Hilft dir http://kb.mozillazine.org/Prompt_service…dPassword.28.29?
-
nein die sache is so,
ich habe jetzt ein plugin oben in der obersten leiste bei Datei-Bearbeiten-etc.
mit diesem plugin oder erweiterung kann man auf einer Seite statistiken abrufen. Damit aber jeder nach dem installieren seine eigene Statistik auf der Seite abrufen kann muss er ja seinen Usernamen eingeben können und dieser soll gespeichert werden. mann kann natürlich auch seinen UN auf der seite direkt eingeben. doch dann brauch ich auch keine erweiterung oder Plugin, dann kann ich die seite auch weiter aus meinen Lesezeichen laden und dann auf die seite gehen. ich kann ja meine Statistik schon aufrufen hab meinen Namen ja auch manuell eingeben, doch was nützt ein anderen User mein Username er soll bzw. will ja seine Statistik sehen und nicht meine. -
Dann speicher die Statistik-Informationen doch immer im UserProfil ab.
Dann brauchst du auch keine User-Abfrage.
...:AOD:...
-
also im menücode sieht der Link so aus:.
<menuitem class="menuitem-iconic" label="Gesamtspielzeit" onclick="statistik_open(event, 'http://link zur Seite/'+$playername+'+stat.php');" oncommand="statistik_open(null, 'http://link zur Seite/'+$playername+'+stat.php');" />
und in der Datei common.js steht dann halt
$playername='mein Name';doch wie bekommt z.B. mein kumpel seinen Namen in die common.js datei wenn alles installiert is?
Es muss doch eine möglichkeit geben das ich einen Menüpunkt in Form von:
<menuitem class="menuitem-iconic" label="Config" onclick="playername_write(event);" oncommand="playername_write(event);" />erstelle,und dann eine eingabezeile auf geht wo man seinen Namen einträgt und dieser dann in common.js gespeichert wird.
Die Funktion habe ich mir in etwa so gedach:
function playername_write()
{
String common.js = "playername aus der eingabe\r\n";
FileWriter f1;
try {
f1 = open FileWriter("common.js");
f1.write(Playername aus der eingabe);
f1.close();
} catch (IOException e) {
System.out.println("Fehler beim Erstellen der Datei");
}
} -
also ein eingabefeld in form von:
<toolbaritem persist="width">
<menulist editable="true" flex="1"
minwidth="100" width="250"
onkeypress="if(event.which == 13) { function playername_write(event, 'common.js'); }">
</menulist>
</toolbaritem>
währe auch gut, muss ja nicht unbedingt über ein menülink ein fenster mit einem Eingabefenster aufgehen,doch wenn ich das so mache kann ich nicht in das feld schreiben.
der code stammt aus dem Tutorial von Born Geek für die Googlebar. -
also ich weiß ja nicht, was du mit deiner common.js hast, aber wie du das Fenster öffnest hab ich dir schon verlinkt (bloß blöd, dass MozillaZine grad Offline ist, vllt. hilft solange aber der XulPlanet weiter). Wie du Speicherst steht wieder in der MozillaZine KnowledgeBase, ein Artikel, der nichst so in die Tiefen geht ist wieder auf dem XulPlanet zu finden. Dabei ist aber zu beachten, dass ein String nicht mit get/setCharPref gelesen/-schrieben werden sollte, da dann nur (ich glaub) ASCII und kein Unicode verwendet werden kann. Stattdessen sollte man get/setComplexValue verwenden, was dort nicht mal erwähnt wird.
-
hallo,
ja das mit dem Eingabefeld war schon klar,doch wie übergebe ich die eingabe am einfachsten an die datei. hier mal der Code vieleicht weis einer wo fehler liegt.
function UserSave()
{
var prompts = Components.classes["@http://mozilla.org/embedcomp/prompt-service;1"]
.getService(Components.interfaces.nsIPromptService);
var input = {value: "Spielername"};
var check = {value: true};
result = prompts.prompt(window, "Spielername Eingabe", "Gib deinen Spielernamen ein.", input, "", check);
// input.value is the string user entered
// check.value indicates whether or not the checkbox is checked
// result - whether user clicked OK (true) or Cancel// |file| is nsILocalFile
// 1. Write path to prefs
var prefs = Components.classes["@http://mozilla.org/preferences-service;1"]
.getService(Components.interfaces.nsIPrefService)
.getBranch("extensions.myext.");
prefs.setComplexValue("", Components.interfaces.nsILocalFile, file);// 2. Read path from prefs
var file = prefs.getComplexValue("", Components.interfaces.nsILocalFile);
}
oder bin ich damit auf dem falschen Weg? -
Code
Alles anzeigenfunction UserSave() { var prompts = Components.classes["@mozilla.org/embedcomp/prompt-service;1"] .getService(Components.interfaces.nsIPromptService); var input = {value: "Spielername"}; var check = {value: true}; result = prompts.prompt(window, "Spielername Eingabe", "Gib deinen Spielernamen ein.", input, "", check); // input.value is the string user entered // check.value indicates whether or not the checkbox is checked // result - whether user clicked OK (true) or Cancel var prefs = Components.classes["@mozilla.org/preferences-service;1"]. getService(Components.interfaces.nsIPrefService); prefs = prefs.getBranch("extensions.ERWEITERUNGSNAME."); // Example 1: getting unicode value //var value = prefs.getComplexValue("EINSTELLUNGSNAME", // Components.interfaces.nsISupportsString).data; // Example 2: setting unicode value var str = Components.classes["@mozilla.org/supports-string;1"] .createInstance(Components.interfaces.nsISupportsString); str.data = input.value; prefs.setComplexValue("EINSTELLUNGSNAME", Components.interfaces.nsISupportsString, str); } -
was ist indemfall der einstellungsname habe es mit:
input
var.input
$spielername
input.Value
versucht, bekomme aber immer die Fehlermeldung
(die anweisung 0x0049aa9 verweist auf den Spericher 0x0000000 der Vorgang "read" konnte nicht durchgeführt werden) :-??
oder hab ich noch ne möglichkeit übersehen? -
Erstmal fetten dank für deine Zeit und Mühe Dr.Evil!!
ich drollo hätte ma richtig kucken sollen!!
hab jetzt deinen Code übernommen,funz trotzdem nich.
EINSTELLUNGSNAME is doch $playername oder nich.
und was hat es mit Example1 und Example2 auf sich? -
EINSTELLUNGSNAME kannst du durch alles mögliche ersetzen, das bekommst nur du und eventuell ein Besucher von about:config zu Gesicht

Example1 und 2 habe ich einfach so vom MozillaZine übernommen, hab da ja auch copy & paste betrieben

-
O.K. so weit so gut jetzt steht es in der about:config
extensions.statbrows.$playername-->vom Benutzer festgelegt-->string-->junglist79
doch wie übergebe ich den wert aus der about:config an den Link in meiner Erweiterung habe da bei MozillaZine KnowledgeBase was von User.js gelesen.der link sieht immer noch so aus
<menuitem class="menuitem-iconic" label="Gesamtspielzeit" onclick="statistik_open(event, 'http://link zur Seite/'+$playername+'+stat.php');" oncommand="statistik_open(null, 'http://link zur Seite/'+$playername+'+stat.php');" /> -
im menuitem:
im Haupt-Script:
Code
Alles anzeigenfunction statistik_getPlayerName() { var prefs = Components.classes["@mozilla.org/preferences-service;1"]. getService(Components.interfaces.nsIPrefService); prefs = prefs.getBranch("extensions.ERWEITERUNGSNAME."); // Example 1: getting unicode value return prefs.getComplexValue("EINSTELLUNGSNAME", Components.interfaces.nsISupportsString).data; }