26

Re: GPL

@ repeater

"... n wodka/redbull ..."

Sowas säufst Du? Du bist ja schlimmer als mein Sohn...:lol:
Also, zum langsamen repetieren:
Wenn jemand eine Frage stellt, in dem Fall ich, und ein
andrer geht her, in dem Fall Sven, und versieht diese Frage mit
mehreren Fragezeichen, dann bedeutet das gemeinhin:
Was??? Wie blöd biste eigentlich????? Sone Frage zu stellen!!!!!!
Kapiert??????????

@ Sven
Nix für ungut, kaum jemand hier kennt nen andern persönlich, und
wir haben eben bloß die nackten Texte, um uns zu verständigen.
Aber Du kennst das ja vom Programmiern: sehr oft kann ein einziges
Zeichen sehr bedeutsam werden...

Ich wünsch allen miteinander ne schöne Restnacht, mit Platten,
Weinen, und meinetwegen auch wodka/redbull.

gruß

matho

27

Re: GPL

Kapiert??????????

klar, wenn du das so schön erklärst  smile

und damit das zum Thema einlenken auch ein bisschen fruchtet, sag ich noch dies:
steinigt mich, aber ich weiß gar nicht was gpl überhaupt ist (bedarf aber auch keiner Erklärung, lese ich irgendwo schon selbst nach).
Naja, aber ich hab das Gefühl, wenn schon Basti und J|G bloß Meinungen und Einstellungen vertreten, dann wird es sehr schwierig im Netz konkrete Infos darüber zu erhalten. Vielleicht ist das ein Thema, welches man sogar mit dem Kunden besprechen könnte, kommt aber dann wohl sehr stark auf den Kunden an. 2-Mann gbr? Mit denen kann man bestimmt reden.....

Dann verabschiede ich mich aber jetzt auch....

Gute Nacht

28

Re: GPL

Moinmoin,

nachdem ich mir sowohl die englische version als auch die
deutsche durchgelesen habe, und eingestehen muß, daß ich
mir, was das rechtliche Kauderwelsch angeht, genausogut
die tschechische variante hätte betrachten können, hab ich
in der faq gestöbert:

http://www.gnu.org/licenses/gpl-faq.htm … tarySystem

Und dort findet sich der passus:

"...If the two programs remain well separated, like the compiler and the kernel, or like an editor and a shell, then you can treat them as two separate programs--but you have to do it properly. The issue is simply one of form: how you describe what you are doing. Why do we care about this? Because we want to make sure the users clearly understand the free status of the GPL-covered software in the collection.

If people were to distribute GPL-covered software calling it "part of" a system that users know is partly proprietary, users might be uncertain of their rights regarding the GPL-covered software. But if they know that what they have received is a free program plus another program, side by side, their rights will be clear...."


Das heißt für mein Verständnis:
Man behält im js-Quellcode den Hinweis auf die License und den Verweis auf den
Verfasser (WalterZ), und bingo.

Die eigentliche Aufgabe, nämlich die Konvertierung in PDF, und die Bezahlung dafür,
hat damit überhaupt nichts zu tun.
Mit dem js-Quellcode alleine, den jeder ansehen kann und darf, kann der
Auftraggeber sowieso nichts weiter anfangen.

Wobei sich rein sachlich die Frage stellt, ob's nicht eh sinnvoller wäre, ne
komplett neue, radikal abgespeckte javascript-Schnittstelle zu schreiben (das
würde bei weitem nicht so lange dauern wie die Diskussion um die Fährnisse
irgendner Lizenz), weil das Kernproblem, die Erzeugung neuer Elemente, gar
nicht das Hauptthema WalterZs ist, und sowieso nur in den neueren browsern
ohne größere Verrenkungen zu bewerkstelligen.

Und Hilfestellung zur Entwicklung einer solchen javascript-Funktionalität
gibt's, wie ja alle wissen, bei uns kostenlos, sogar ganz ohne Lizenz.

gruß

matho

29

Re: GPL

Das ist ein Interessanter Ansatz, allerdings bin ich nicht der JS-Crack  :cry:  und die Klasse von WalterZ verwende ich für das Draggen und Droppen in dem Editor, und dafür ist sie einach genial (vor allem weil sie Browserübergreifen ist!). Das Erzeugen von Elementen bewerkstellige ich ohne das Skript.

MFG
Sven

30

Re: GPL

Guten morgen alle zusammen,

na haben alle Ihren Rausch ausgeschlafen?  big_smile

Hätte ich mich gestern wohl doch nicht so früh verkrümeln sollen. Ging ja noch einiges ab hier.

@matho: natürlich hast Du recht, dass hier ein Plausch stattfinden kann. Allerdings dachte ich hilft das Sven nicht sonderlich weiter. Und wenn wir hier anfangen über Weltanschauungen zu diskutieren, dann wird das ein endloser Post werden.

Aber meinetwegen gerne  big_smile

Schönes WE noch

31

Re: GPL

Hallo allerseits.

Wohin gehört diese Diskussion, wohin nicht?

Mal abgesehen davon, dass es hier ja um ganz unterschiedliche Themen geht und dass wir damit natürlich Svens Thead etwas zerschießen (dessen Anliegen aber, so wie ich das sehe, bei dem Ganzen nicht hinten rausfällt), ist dieses Raushalten dieser Thematik aus diesen und jenen Lebensbereichen doch genau das Problem, oder nicht? Sollten wir die Auseinandersetzung damit wirklich auf einen gemütlichen Abend mit Rotwein, dreimal im Jahr begrenzen, vertagen? Ist es sinnvoll, die Diskussion ausschließlich auf politische Diskussionen zu beschränken oder gar darauf zu warten, dass die Politik dieses Thema endlich aufgreift? Von dieser Seite ist nichts zu erwarten, denn, ich glaube, all der gerade laufende Sozialabbau etc. würde in der Bevölkerung einzig dann auf Akzeptanz stoßen, wenn wir dadurch in die glückliche Situation geraten würden, zumindest eine Chance auf einen Ausweg aus diesem Dilemma zu erhalten, wenn dieser eingebettet wäre in eine Vision, den Staat wieder den Menschen zurückzugeben, ihn wieder in den Dienst des Volkes zu stellen. So gesehen könnte es keinen günstigeren Zeitpunkt geben, diese Themen aufzugreifen. Aber ganau das Gegenteil ist doch der Fall und wird auch nichtmal mehr verschämt verschwiegen, sondern ganz offen gelbt, z.B., indem man sich mal eben den Chef des IWF an die Spitze setzt.

In meinen Augen ist das nicht das Thema der Politik (auch wenn es so sein sollte), es gehört nicht eingegrenzt in politische und gesellschaftliche Diskussionsforen, sondern muss seinen Platz in unserem Alltag einnehmen. Klar, ich weiß, worum sollen wir uns noch alles kümmern. Die Hälfte unseres Einkommens geht an den Staat (der wiedrum mehr als ein Viertel seiner Ausgaben als Zinsen den Banken in den Arsch schiebt), das Futter wird immer teurer, von all den Einkäufen gehen nochmal 8 oder 16% an den Staat und 10 bis 80% nochmal an die Banken, im Job müssen wir Überstunden machen, das Auto springt nicht an, die Versicherung will noch irgendwas wissen und jetzt sollen wir auch noch anfangen, diese Welt zu retten, und unsere knappe Freizeit dafür aufbringen, unseren Alltag anhand von Nachhaltigkeitskriterien zu reflektieren.

Ich meine halt, dass es sich lohnen würde, über Alternativen in allen Bereichen nachzudenken und ein bisserl Kreativität einzusetzen. Vielleicht gibt es ja auch noch andere Wege, als nur Verzicht und soziale Ausgrenzung oder strafrechtliche Verfolgung, um etwas zu verändern, wer weiß...

Und, was den beruflichen Alltag, die Ausbildung und Karriere angeht. Sicher, ist es jedem selbst überlassen, festzustellen, wann seine Zumutbarkeitsgrenzen in Richtung Taubheit oder Schmerz erreicht sind. Mir liegt es fern hier über den Einzelnen zu urteilen. Ich möchte nur Mahnen. Hier werden oft Werte getauscht, die in einem unguten Verhältnis stehen und wir machen uns das nicht bewusst, obwohl wir es wissen. Irgendwann kommt vielleicht der Zeitpunkt, an dem wir unsere Arbeit endgültig niederlegen, sei es auf vor der Berentung oder auf dem Sterbebett. Ich glaube, es ist mitunter keine schlechte Idee, das eigene Wirken mal von dieser Warte aus zu beurteilen, denn ich glaube, dass wir dann ein sehr klares Gefühl dafür bekommen, was wir eigentlich wollen, was uns wirklich etwas bedeutet, was uns glücklich macht.

Und was die Softwarelinzenzen angeht. Ich hab kein Problem damit, wenn jemand seine Software verkauft oder selbst kommerzielle Software kauft. Es ist immer die Frage in welchem Rahmen sich das Abspielt. Letztlich geht es - und das ist das verbindende zwischen den unterschiedlichen Themen, die ich angesprochen habe - wie wir die Welt wahrnehmen, in welchen Bezug wir uns zu unserer Um-/Mitwelt setzen. Der eine sagt halt: Scheiß drauf, ich hab mich, meine Familie, vielleicht noch eine Hand voll Partner und der Rest geht mir am Arsch vorbei. Sollen sie es doch genauso machen, wie ich, mir wurde auch nichts geschenkt. Der andere sagt: Wir leben hier zusammen. Ich profitiere tatgäglich von eurer Arbeit, wie kann ich mich einbringen? Es ist letztlich eine Frage, inwieweit man das System, mit dem man sich identifiziert abgrenzt. Für den einen hört das "wir" vor der Wohnungstür auf, der andere erlebt es noch, wenn er in die Sterne schaut.

Ich kritisiere nicht, dass jemand für seine Arbeit entlohnt werden möchte (auch wenn ich es persönlich sehr schräg finde, das Maß, in dem jemand von der Arbeit anderer profitieren darf daran festzumachen, wie hoch der Marktwert dessen ist, wie er sich einbringt. Nicht etwa, weil das an sich eine gute Idee ist, dass auch wirklich die Arbeit gemacht wird, die anstaht, sondern, weil sich dieser Martwert eben eben aus anderen Kriterien errechnet), sondern ich kritisiere, dass jemand, der für seine Arbeit ausreichend entlohnt wurde dann hingeht und sagt: Du darfst davon aber nichts haben, denn du kannst oder willst mir nichts zahlen. Das ist doch total daneben, wenn man es mal auf die Ebene menschlicher Begegnungen runterbricht (auf der sich unser ökonomisches Leben ja letztlich ausschließlich abspielt, wenn man die Abstaktionen mal konkretisiert). Anwendungsentwicklung für den freien Markt ist ja nochmal ein anderer Stiefel. Aber auch hier gibt es ja Modelle, nach denen eine Software so lange kostenpflichig verteilt wird, bis die Entwickler bezahlt sind und danach wird das Produkt der Allgemeinheit zur Verfügung gestellt.

Ich will niemanden Zwingen, etwas mit mir zu teilen, aber Geld ist nunmal keine Privatsache und daher kann ich es nicht gutheißen, wenn jemand unnötig Geld an sich bindet, das der Gemeinheit natürlich dann verloren geht. Darum geht es doch und das ist es, was den wenigsten in die Birne geht, dass sie nicht isoliert vom Rest der Welt existieren.

Basti

32

Re: GPL

Einen wunderschönen guten Morgen dito,

"... hilft das Sven nicht sonderlich weiter ..."

Genau das weiß man halt vorher nicht. Solches Geplauder ist
doch oft sehr verschlungen, und es kommt manchmal vieles
zum Vorschein, woran man gar nicht gedacht hat. Natürlich
kann's passiern, daß man schlußendlich sagen muß:
Ich waas aach net, Herr Wachdmeisder - mer habbe soo gemiitlisch
beisamme gesozze, uff eemal hat eim des Aach rausgehunge...

Aber noch mal zum javascript-Problem:

Was nutzt das schönste browserübergreifende drag 'n drop, wenn
man doch für alle in Frage kommenden Browser das Erzeugen des
dynamischen Inhalts und dessen Einbindung überprüfen muß, und
gegebenenfalls anpassen, und währenddessen feststellt, daß
das so, wie man sich das vorstellt eh nur in einer Handvoll
von den Dingern funktioniert - Das bezieht sich auf die Frage
von Sven im Hilfe-Forum:

http://www.devshare.com/forum/viewtopic … 2239#42239

Aber da fällt mir ein vielleicht gangbarer Weg ein:

Man könnte vorab ein gewisse Anzahl Elemente beim Laden
der site zur Verfügung stellen und auf draggable setzen
(was weiß ich, 50 divs, 50 images, und was eventuell sonst
noch nötig wäre).
Dann wiederum braucht man sich um's dynamische Erzeugen
mittels javascript keine Gedanken machen.

gruß

matho

p.s:

meine Antwort bezieht sich auf green, ich hab wohl grade
meine Antwort verfasst, während basti gepostet hat.

33

Re: GPL

@matho
Stimmt schon, das Hinzufügen von Elementen macht zu Zeit gerade mal 10 Zeilen aus (leider noch nicht auf browserunabhängigkeit getestet). Das Drag&Drop (und übrigens auch Resize!!!) ist so komplex, so das eine Neuentwicklung den Rahmen deutlich erhöhen würde, und warum die Arbeit machen, wenn es sowas schon gibt.
Allerdings wäre dann das Problem mit der GDL nicht da... ein Teufelskreis.

34

Re: GPL

@Basti:

Von was soll Deiner Meinung nach ein Entwickler leben, der mit seiner Dienstleistung oder Software sein Geld zum Leben verdienen muss?

Warum sollte ich meine Dienstleistung und Software kostenlos anbieten? Du kannst nur dann was kostenlos anbieten, wenn Du damit Deinen Lebensunterhalt nicht bestreiten musst. Jemand der die Programmierung als Hobby betreibt und dabei seine Programme kostenlos anbietet hat hier eine ganz andere Ausgangsbasis ..

Ich habe in meine Zeit als freier Programmierer weiß Gott unzählige Freewareprogramme und dgl. angeboten und mache das immer noch. Aber alles kann nun mal nicht umsonst sein.  Ich habe es oft genug erlebt, dass jemand meine Freewareprogramme einsetzt und dabei diese als seine eigenen auszeichnet. Oder mich bis zur Raserei nervt, indem er mich  mit E-Mails oder Telefonanrufen zu müllt und auch noch kostenlosen Support und Erweiterungen für diese Programme fordert .. und das auf so selbstverständliche Art, dass es schon wieder unverschämt ist. Ich helfe gerne soweit es im Rahmen ist und es meine Zeit zulässt.

Noch mal Programmierer wie ich müssen nun mal Ihren Lebensunterhalt mit Software und Auftragsprogrammierung oder Consulting verdienen, genauso wie Du Geld für Dich und Deine Familie mit Deinem Beruf verdienen musst.

Ich finde OpenSource eine gute Sache ... aber man kann dies nicht generell fordern. Sonst müsste ich eigentlich alles umsonst anbieten. In einer Zeit in der man von Tauschgeschäften leben konnte, sind wir ja längst nicht mehr ... obwohl man früher auch oft genug aus reiner Habgier erschlagen wurde ;o)

Die Frage des Gewissens ist natürlich gerechtfertigt. Aber wir leben leider in einer Zeit in der Geld das Leben diktiert (ob wir wollen oder nicht).

Viele von uns besitzen eine Auto ... verpesten damit die Umwelt, gefährden andere und unterstützen damit wieder die Firmen ... nur ohne Auto geht es im Berufleben nun leider oft nicht mehr. Ich selbst lebe in einem kleinen Dorf außerhalb der Stadt ohne S-Bahn Anschluss und mit Busverbindungungen welche nur früh morgens und abends im Stundentakt verkehren. Wenn ich einen Termin im anderen Ende der Stadt habe, wäre ich nun schon gut 4 Stunden nur für hin und zurück beschäftigt. Noch schlimmer wenn ich Termine in andere Orten etc. habe ...  es geht leider nicht mehr ohne .. außer am WE da tausche ich mein Auto gegen mein Mountenbike ein ;o)

Wir wohnen in einer beheizten Wohnung, frieren im Winter nicht mehr, können Tag und Nacht dank Strom arbeiten, kochen, lesen usw. ... haben fließend warmes und kaltes Wasser etc.  Auch dies könnte man kritisch hinterfragen, woher kommt der Strom, wie wird das Wasser gereinigt, was ist mit dem Heizöl usw. ... aber dies ist zur Selbstverständlichkeit geworden ohne wirklich dankbar darüber zu sein.

Wir alle ernähren uns mehr oder weniger Gesund von Produkten aus dem Handel. Wie werden diese Produziert? Was ist mit der Tierhaltung ... wird dies hinterfragt? Ich achte z.B. darauf Produkte aus möglichst ökologischem Anbau zu erhalten .. aber sind diese Produkte auch wirklich alle so "sauber" wie behauptet. Stammen diese aus freier Tierhaltung oder doch wieder aus Massenzuchten? Wurden Dünger, Pestizide etc. verwendet oder sind diese vom Nachbarfeld heran getragen worden .. usw.

Was will ich damit sagen? Wir müssen uns heutzutage eben mit machen Gegebenheiten arrangieren und auch leider abfinden. Nicht alles kann man und muss man kritisch hinterfragen. Und trotzdem kann man sich z.B. für Natur, Tierwelt und Menschrechte einsetzen.

Und nebenher bemerkt, müssen wir seit der Einführung des Euros weit mehr verdienen, als es 2001 noch der Fall war. Das Leben ist teurer geworden und ich lebe dummerweise nahe zu München was die Kosten nochmals in die Höhe schnellen lässt. Alleine Lebensmittel kosten hier ein ordentliche Summe mehr als z.B. in Regensburg 110 km von München entfernt …

UPs, ich höre jetzt lieber auf .. nu sind wir langsam in einem ganz anderen Themenbereich angelangt  wink


Noch was zum eigentlichen Thema

Ich habe mich bisher auch nicht wirklich mit dem Mix aus OpenSource und kommerzieller Software informiert. Evtl. helfen auch die folgenden Links weiter:

http://www.ifross.de/ifross_html/art2.htm
http://www.ifross.de/


lg
Hannes

_______________________________________________________________

/-/annes (j|g) ... http://www.jg-webdesign.de

35

Re: GPL

Hi Hannes.

Du hast mich mißverstanden. Ich spreche ja nicht dagegen, dass Softwareentwickler ihre Arbeit verschenken sollen. Lies meinen letzten Beitrag nochmal. Ich meine halt, dass gut ist, sich auf der einen Seite für geleistete Arbeit bezahlen zu lassen und nicht für den bloßen Besitz von Rechten oder Ressourcen und auf der anderen Seite, dass eine geleistete Arbeit doch bestenfalls allen zugute kommt und nicht zugunsten (wobei ich die Gunst bezweifle) strategischer Firmeninteressen der Öffentlichkeit vorenthalten wird, obschon der Firma selbst dadurch nichts verloren ginge. Sicher, es ist eine Kulturfrage. Und ich will auch nicht bestreiten, dass einige Firmen ihren finanziellen Erfolg auf solcherlei Firmengeheimnissen und Technologievorsprüngen begründen. Nur will ich eben ermuntern, das mal einfach nicht als normal und selbstverständlich anzusehen, sondern als eine abartige Entgleisung unseres Zusammenlebens.

Und, was die weiteren Punkte deines Beitrags angeht, da kann ich dir nur zustimmen. Ich habe ja genau das weiter oben beschrieben. Ich glaube, für einen selbst liegt der wesentliche Unterschied in der Heransgehensweise. Ob ich dieses und jenes bewusst in Kauf nehme, oder ob ich geflissentlich versuche, all das zu ignorieren, was an meinem Tun und Nicht-Tun dran hängt. Bei beidem natürlich vorausgesetzt, dass ich im tiefsten Herzen eigentlich nicht will, was da auch durch mein Tun bewirkt wird. Hege ich andere Ziele, dann sollte das alles ja eh kein Problem sein.

@Sven:
Schau auch mal die Newsgroups duch. Da gibt es ja GNU-Groups und Groups, die sich mit (deutschem) Recht befassen.

Basti

36

Re: GPL

Moinmoin,

@Sven

"... ein Teufelskreis. ..."

Naja, das kommt drauf an, was man möchte, und wie man die Sache betrachtet.

Noch mal von Anfang an:

"... Also: In einem Schulprojekt kam die Idee auf, einen PDF-Designer zu entwicklen,
ein OnlineGUI, welches per WYSIWYG ein PDF-Template erstellt und dann z.B. mit Daten
aus der DB füllt. Wäre z.B. für Entwickler, die einen Webschop anbieten, die Rechnungen
per PDF erzeugen möchten, aber sich mit der PDF-Generierung nicht auseinandersetzten mögen. ..."

Den Vorgang stelle ich mir also so vor:
Jemand geht auf die site, dragt und dropt und edidet sich irgendein Formular (hier eine Rechnung)
zusammen, clickt dann, wenn er mit dem Ergebnis zufrieden ist, irgendwann auf submit, und erhält
in return ein pdf-file zugesendet, mit dem er dann machen kann, was er möchte.

Ist das soweit richtig?

Die erste Aufgabe wäre demnach, "ein OnlineGUI" zu schreiben, da� so einfach und fehlerfrei als
irgend möglich arbeitet.
Wenn wir nun nicht anfangen möchten, über den Sinn und Zweck dieser Unternehmung zu diskutieren,
sondern es einfach mal als Aufgabe, die zu Lösen ist (und sei's blo� als Fingerübung) hinnehmen,
dann ist recht bald (sagen wir mal, nach dem Durchtesten in den ersten zehn browsern unter den
ersten zwo, drei Betriebssystemen) klar, da� man sich etwas "browserübergreifendes" im eigentlichen
(nämlich umfassenden) Sinn, am besten gleich von der Backe wischt - es sei denn, man möchte die
nächsten zwo Jahre damit verbringen.
Alleine, wenn man sich auf die gängigsten browser beschränkt (ich nehme jetzt mal moz + derivate,
ie, und, wenn's unbedingt sein mu�, opera (der zwingt einen mit seiner saublöden javascript-Implementierung
aber bereits zu allerlei Kompromissen)), ist man schon ein, zwei Wochen beschäftigt.
Diese Zeit braucht's einfach deshalb, weil man schlecht mehr als vier, fünf Zeilen schreiben kann, ohne
die tatsächlich in allen browsern zu überprüfen (das hat son bissel was von extreme programming),
die javascript-Interpretation ist in den Details (und auf die kommt's letztendlich an) einfach zu
unterschiedlich.
Um ein naheliegendes Beispiel zu geben: Die Testseite in Deinem Hilf-thread bringt opera zum Absturz.

Also: Heilsame Selbstbeschränkung, vor allem dann, wenn man sagt:

"... allerdings bin ich nicht der JS-Crack ..."

Unter diesem Gesichtspunkt ist es auch nicht ratsam, sich ein solches, in der Tat nicht wirklich
einfaches Ding wie das von WalterZ ans Bein zu binden.

Wenn Du sagst:

"... Das Drag&Drop (und übrigens auch Resize!!!) ist so komplex, ..."

dann hast Du damit recht, wenn Du wirklich sämtliche browser bedienen möchtest.
Ansonsten (also bei heilsamer Selbstbeschränkung) ist daran gar nichts komplex, es braucht
insgesamt höchstens zwanzig Zeilen, und das auch nur dann, wenn man wirklich jeder Kleinigkeit
eine eigne Zeile spendiert.

Viel mehr Mühe und �berlegung braucht der Entwurf einer sinnvollen Benutzeroberfläche.
Welche Funktionalitäten sollen bereitgestellt werden (fonts, font-sizes, auszeichnungen,
farbwahl- und änderung)?
Wie werden die zu bedienenden Elemente am besten angeordnet? Werden die in der site untergebracht,
oder steckt man die vielleicht besser in ein pop-up? Oder ist das bereits wieder zu verwirrend?
uswusfetcpp...
Und da hat man mit den unterschiedlichen browser-Verhaltensweisen mehr als genug zu tun.

Ich denke, es stellt sich weniger die Frage nach irgendwelchen Lizenzbedingungen (abgesehn mal
vom allgemeinen Intresse), sondern eher danach, was Du wirklich machen möchtest.

Damit Du siehst, was ich meine, im folgenden eine Beispiel-Skizze, in der aber bereits
eine Reihe kleinerer Problemchen auftauchen, über die man sich ein paar Tage den Kopf
zerbrechen könnte:

<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.0 Transitional//EN'>
<html>
<head>
<title>drag_drop_resize_edit</title>
<meta http-equiv='content-type' content='text/html; charset=iso-8859-1'>
<style type='text/css'>
div{position:absolute;
    font-family:verdana,sans-serif;
    font-size:13px;
   }
#buddy{position:absolute;
       width:333px;
       height:444px;
       background:#dadada;
       border-style:solid;
       border-width:1px;
       border-color:black;
      }
img{position:absolute;
   }
form{position:absolute;
     top:20px;
     left:20px;
    }
input{width:255px;}
textarea{width:255px;height:200px;}
</style>
<script type='text/javascript'>
var L = 0,  T = 0,  W = 200,  H = 100,  V = 20,  Bl, Bt,
    d = document, ie = d.all && !window.opera, zI = 111, e, v, x, y,
   BL = function(o){if(o.blur)o.blur()},
    C = function(c){return D('buddy').appendChild(d.createElement(c))},
    R = function(r){return D('buddy').removeChild(r)},
    D = function(i){return d.getElementById(i)},
    E = function() {e = ie ? event : arguments[0];
                    x = e.clientX;
                    y = e.clientY;
                   },
   IH = function(o){return '<html><head><title>'   +
                           (o ? o : 'ot')          +
                           '</title></head><body>' +
                           D('buddy').innerHTML    +
                           '</body></html>';
                   },
    N = function(n){var o;
                    if(n)
                     {with(o = C('img'))
                       {src = d.fo.i_2_src.value;
                        alt = '';
                       };
                     }
                    else
                     {with(o = C('div'))
                       {innerHTML = d.fo.i_1_txt.value.replace(/ /g, ' ').replace(/r?n/g, '<br />');
                       };
                     };

                    o.m = 0;
                    o.n = o.tagName == 'DIV' ? 1 : 0;
                    o.l = P(o.style.left   = L + 'px');
                    o.t = P(o.style.top    = T + 'px');
                    o.w = P(o.style.width  = W + 'px');
            if(o.n) o.h = P(o.style.height = H + 'px');
            if(o.n) o.style.background = 'lightblue';
            if(o.n) o.style.padding    = '4px';

                    o.onmousedown = function(){E(arguments[0]);
                                               var t = this;
                                               t.m = 1;
                                               t.dx = x - t.l;
                                               t.dy = y - t.t;
                                               t.style.zIndex = zI++;
                                               if(e.ctrlKey) v = 1;
                                               t.style.cursor = v ? 'crosshair' : 'move';  
                                               return false;
                                              };
                    o.onmousemove = function(){E(arguments[0]);
                                               var t = this;
                                               if(t.m)
                                                {if(v)
                                                  {        t.w = t.style.width  = x - t.l + V - Bl;
                                                   if(t.n) t.h = t.style.height = y - t.t + V - Bt;
                                                   t.style.cursor = 'crosshair';        
                                                  }
                                                 else
                                                  {t.l = t.style.left = x - t.dx;
                                                   t.t = t.style.top  = y - t.dy;
                                                   t.style.cursor = 'move';
                                                  };
                                                };
                                                return false;
                                              };
                    o.ondblclick  = function(){
                                               R(this)
                                              };
                    o.onmouseup   = function(){this.m = 0;
                                               this.style.cursor = 'default';
                                               v = 0;
                                              };
                    o.onmouseout  = function(){this.m = 0;
                                               this.style.cursor = 'default';
                                               v = 0;
                                              };
                    o.oncontextmenu = function(){return false};
                   },
    P = function(p){return parseInt(p)};


onload = function(){D('buddy').oncontextmenu = function(){return false};
                    D('buddy').onselectstart = function(){return false};
                    Bl = P(D('buddy').style.left = '333px');
                    Bt = P(D('buddy').style.top  = '20px');
                    D('BIG_B').style.background = '#222266';
                    d.fo.reset();
                    if(ie) d.fo.style.zIndex = -1;
                   };
</script>
</head>
<body id='BIG_B'>
<div id='buddy'></div>
<form name='fo' action=''>
<textarea name='i_1_txt'></textarea><br />
<input name='i_1' type='button' onclick='N();BL(this)' value='div' /><br /><br />
<input name='i_2_src' value='../../images/fr_1.jpg ' /><br />
<input name='i_2' type='button' onclick='N(1);BL(this)' value='image' /><br /><br />
<input name='i_3' type='button' onclick='alert(IH());BL(this)' value='HTML' />
</form>
</body>
</html>

Das ist jetzt ganz karo-einfach, es gibt lediglich zwo tags - images und divs -, wobei
ich allerdings glaube, da� sich damit das meiste erledigen lä�t, bei gedrückter ctrl-Taste
wird onmousedown+move resized, ansonsten verschoben.
Die resize-function ist absichtlich simpel gehalten, und für images auf die �nderung einer
Dimension beschränkt (was ich aber wiederum für ganz sinnvoll halte).
Unterschiede zwischen den verschiedenen browsern (wie gesagt: ie, moz, opera) gibt's bereits
hier mehr als einem lieb sein können.

gruÃ?

matho

37

Re: GPL

Zuerst einmal beschreibe ich das Projekt noch einmal etwas genauer:
Gedacht ist eine PHP-Klasse (womit ich mich besser auskenne als mit JS big_smile ) für Entwickler, die in einem Projekt mit eingebunden werden kann. Dieser Entwickler erzeugt in der Klasse Variablen und Tabellen (welche Später zur Laufzeit mit. z.B. Daten aus einer DB gefüllt werden).
Der Entwickler ruft über diese Klasse ein Template-Designer/Editor auf, in dem diese dynamischen Variablen aber auch statische Elemente (Text,Bilder, etc.) auf einer Dokumentenverwaltung den eigenen Wünschen angepasst werden können.
Später in der fertigen Applikation wird aus den übergeben Daten und dem Template dann ein PDF erzeugt, welches der "Kunde" im Bowser dargestellt bekommt.
Das hat den Vorteil, das man schnell mal die PDF-Darstellung von fast jedem PC ändern kann, ohne Quellcode zu editieren oder wenn man nach Monaten ein Design ändern möchte, muß man sich nicht erst mal wieder mit der PDF-Gestaltung in PHP auseinandersetzten.

@matho: habe es noch mal so ausfürhlich beschrieben, damit as auch leuten klar ist, die hier später noch mal rumlesen. Ausserdem war glaube ich vorher nicht ganz kalr, das es ein Tool für PHP-Entwickler ist, womit der Sinn und Zweck nun deutlicher wird, oder?

Mit ist schon klar, dass ich nicht alle Browser bedienen kann, aber die erste Version des Designers, die bisher entwicklet wurde lief komplett NUR auf dem IE ab 5.0. Es war noch nicht mal möglich, kleine Modifikation in einem anderen Browser zu erledigen.
Und das war nicht gut.

Da mit die Klasse von WalterZ da einfach gelegen kam, sah ich sie als den Heiligen Gral an, den ich gesucht habe  big_smile

Wie werden die zu bedienenden Elemente am besten angeordnet? Werden die in der site untergebracht,
oder steckt man die vielleicht besser in ein pop-up? Oder ist das bereits wieder zu verwirrend?
uswusfetcpp...

Einges davon hat sich denke ich schon erledigt, da es sich nicht für den normalen Browser handelt. Die Usability wollte ich an eine Entwicklungsumgebung (ähnlich MS .Net -Entwicklungsumgebung) anpassen um einen Versierten Entwickler den Einstieg leicht zu machen.

Wenn ich Dich recht verstehe, ist Dein Quelltext von mir verwendbar/ erweiterbar (ohne lizenzrechtliche Probleme zu bekommen  big_smile )?
Dann werd eich mich mit dem Ding mal ein wenig auseinandersetzen, ggf. anpassen und mich auf möglichst wenige bzw. ausreichen viele Browser beschränken.

Soweit erst einmal vielen Dank für Deine Unterstüzung!

Gruß
Sven

38

Re: GPL

Tjap,

"... Wenn ich Dich recht verstehe, ist Dein Quelltext von mir verwendbar/ erweiterbar ..."

Auf die Gefahr hin, mich zu wiederholen:
Alle meine "Quelltexte", oder besser: _Beispiele_, sind beliebig verwurstbar. Das ist ja
nun Sinn und Zweck eines Hilfeforums. Allerdings darf ich mal kurz WalterZ zitieren:

"... Wenn Sie dieses DHTML Drag Drop JavaScript verwenden, ist ein Link auf diese Seite erwünscht,
     aber nicht erforderlich...."         http://www.walterzorn.de/dragdrop/dragdrop.htm

Ich kann lediglich für mich sprechen, bzw. über meine Vorstellung über das, was wir
hier treiben:
Es ist allerhöchstens ein Tropfen auf den heissen Stein, aber jeder Beitrag, der dazu gut ist,
das allgemeine Problembewußtsein (wie man Fragen stellt, wie man sich unterhält, wie man
knappen und doch verständlichen und gut strukturierten code schreibt, usw) zu schärfen,
ist willkommen.

gruß

matho

39

Re: GPL

hi matho,
soweit noch mal vielen DanK!

Habe mich soweit in das script eingearbeitet und bin auch recht zufrieden.... nur ein Problem bekomme ich nicht hin: Wenn die Maus ausserhalb des zu bewegenden Elementes ist, werden keine Aktionen ausgeführt. Das finde ich ein bischen hackelig. Habe mich schon mit onMouseOut auseinandergesetzt, aber der wird ja nur einmal aufgerufen. Mit setTimeout habe ich nur StackOverflows bekommen.
Weißt Du eine Lösung???

MFG
Sven

40

Re: GPL

N'abend,

stimmt, das kann störend sein. Man kann zB. sagen:

<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.0 Transitional//EN'>
<html>
<head>
<title>drag_drop_resize_edit</title>
<meta http-equiv='content-type' content='text/html; charset=iso-8859-1'>
<style type='text/css'>
div{position:absolute;
    font-family:verdana,sans-serif;
    font-size:13px;
   }
#buddy{position:absolute;
       width:333px;
       height:444px;
       background:#dadada;
       border-style:solid;
       border-width:1px;
       border-color:black;
      }
img{position:absolute;
   }
form{position:absolute;
     top:20px;
     left:20px;
    }
input{width:255px;}
textarea{width:255px;height:200px;}
</style>
<script type='text/javascript'>
var L = 0,  T = 0,  W = 200,  H = 100,  V = 20, S = 10, Bl, Bt,
    d = document, op = window.opera, ie = d.all && !op, zI = 111, e, v, x, y, M,
   BL = function(o){if(o.blur) o.blur()},
    C = function(c){return D('buddy').appendChild(d.createElement(c))},
    D = function(i){return d.getElementById(i)},
    E = function() {e = ie ? event : arguments[0];
                    x = e.clientX;
                    y = e.clientY;
                   },
   IH = function(o){return '<html><head><title>'   +
                           (o ? o : 'ot')          +
                           '</title></head><body>' +
                           D('buddy').innerHTML    +
                           '</body></html>';
                   },
    P = function(p){return parseInt(p)},
    R = function(r){return D('buddy').removeChild(r)},

    N = function(n){var o;
                    if(n)
                     {with(o = C('img'))
                       {src = d.fo.i_2_src.value;
                        alt = '';
                       };
                     }
                    else
                     {with(o = C('div'))
                       {innerHTML = d.fo.i_1_txt.value.replace(/ /g, ' ').replace(/r?n/g, '<br />');
                       };
                     };

                    o.m = 0;
                    o.n = o.tagName == 'DIV' ? 1 : 0;
                    o.l = P(o.style.left   = L + 'px');
                    o.t = P(o.style.top    = T + 'px');
                    o.w = P(o.style.width  = W + 'px');
                    (o.n) ? o.h = P(o.style.height  = H + 'px') :
                           (o.h = op ? o.setAttribute('height', o.offsetHeight) : o.height)
            if(o.n) o.style.background = 'lightblue';
            if(o.n) o.style.padding    = '4px';
                    o.onmousedown = function(){E(arguments[0]);
                                               var t = M = this;
                                               t.m = 1;
                                               t.dx = x - t.l;
                                               t.dy = y - t.t;
                                               t.style.zIndex = zI++;
                                               v = e.ctrlKey ? 1 : 0;
                                               t.style.cursor = v ? 'crosshair' : 'move';
                                               return false;
                                              };
                    o.onmousemove = function(){return false};  
                    o.ondblclick  = function(){ R(this) };
                   };

d.onmousemove = function(){E(arguments[0]);
                           var h, w;
                           if(M)
                            {if(M.m)
                              {if(v)
                                {M.style.cursor = 'crosshair';
                                 if( (w = x - M.l + V - Bl) > S) M.w = M.style.width  = w;
                                 if( (h = y - M.t + V - Bt) > S) M.h = M.style.height = h;
                                }
                               else
                                {M.style.cursor = 'move';
                                 M.l = M.style.left = x - M.dx;
                                 M.t = M.style.top  = y - M.dy;
                                };
                              };
                            };
                          };

d.onmouseup   = function(){if(M)
                            {M.m = 0;
                             M.style.cursor = 'default';
                            };
                          };

onload = function(){D('buddy').oncontextmenu = function(){return false};
                    D('buddy').onselectstart = function(){return false};
                    Bl = P(D('buddy').style.left = '333px');
                    Bt = P(D('buddy').style.top  = '20px');
                    D('BIG_B').style.background = '#222266';
                    d.fo.reset();
                    if(ie) d.fo.style.zIndex = -1;
                   };
</script>
</head>
<body id='BIG_B'>
<div id='buddy'></div>
<form name='fo' action=''>
<textarea name='i_1_txt'></textarea><br />
<input name='i_1' type='button' onclick='N();BL(this)' value='div' /><br /><br />
<input name='i_2_src' value='../../images/fr_1.jpg ' /><br />
<input name='i_2' type='button' onclick='N(1);BL(this)' value='image' /><br /><br />
<input name='i_3' type='button' onclick='alert(IH());BL(this)' value='HTML' />
</form>
</body>
</html>

Das ist halt jedesmal wieder das Problem solcher Beispiel-scripts -
alles hat seine Vor-und Nachteile.
Hier habe ich noch ein paar weitere kleine Ã?nderungen vorgenommen,
zB. um  für opera 7.11, der im Gegensatz zu opera 7.23  mit

window.getComputedStyle([object], '').getPropertyValue('height')

nichts anfangen kann, und - da allerdings genauso bescheuert wie sein Nachfolger - in das height-Attribut eines images, dem nur eine width-Angabe
zugeordnet wurde, kurzerhand die Höhe des windows einträgt, es trotzdem zu ermöglichen, den notwendigen height-wert zu ermitteln.

Schau's Dir mal durch, vielleicht bringt's Dich weiter.

gruÃ?

matho

41

Re: GPL

Vorab schon mal vielen Dank, werde es mir morgen in aller ruhe zur gemüte tun. Bis dahin, eine gute Nacht.

MFG
Sven

P.S. wie schaffst Du das so schnell???

42

Re: GPL

"... wie schaffst Du das so schnell???  ..."

Was soll ich sagen?

Wenn man ein paar tausend Fragen beantwortet hat,
sollte man aus dem Gröbsten raus sein - so in etwa.

gruß

matho

43

Re: GPL

Hi!

Nochmal zur eigentlichen Fragestellung "GPL": Ich habe folgende Zeilen in einem Script gefunden, welches auf der Libary NuSOAP basiert:

/*********************************************************************/
// SOAP Client to synchronize **********/********* user database
// Written by xxxxx yyyyyyyyyyyy 2004-02-28
// Copyright by zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
// Based on NuSOAP Libary (licence information attached)
/*********************************************************************/

Mamphil

The laws of physics are the canvas God laid down on which to paint his masterpiece. “Leonardo Vetra” in Dan Brown’s “Angels & Demons”