ABI-Team-30 / Fresnel-Forms

A Protégé plugin for generating and adapting MediaWiki user interfaces for source ontologies
http://is.cs.ou.nl/OWF/index.php5/Fresnel_Forms
3 stars 1 forks source link

Informbox header met link naar form #73

Open LloydRutledge opened 9 years ago

LloydRutledge commented 9 years ago

De PHP OWF maakte een header voor elke informbox met een link naar een form om de pagina verder aan te passen. De genereerde code luidt:

{| style="width: 30em; font-size: 90%; border: 1px solid #aaaaaa; background-color: #f9f9f9; color: black; margin-bottom: 0.5em; margin-left: 1em; padding: 0.2em; float: right; clear: right; text-align:left;" ! style="text-align: center; background-color:#ccccff;" colspan="2" |[[:Category:{{{1|none given}}} |{{{1|none given}}}]]

Kunnen we die in FForms maken? Moet het dan in

form met meer default CSS, natuurlijk. Als die
een CSS classname geven dan kunnen we die display:none-en in de CSS voor de WP infobox demo. Maar voor algemene gebruik is het nuttiger als de default de form link toont.

Is dit makkelijk? Heeft iemand er zin in om die toch nog in ABI30 te doen? Anders doe ik het zelf.

Hierbij een voorbeeld weergave van echt gebruik:

knipsel

jbachh commented 9 years ago

@LloydRutledge Zoals besproken tijdens de Scrum op 6 april geven we je hier een paar aanwijzingen voor deze klus.

Wij hadden als idee om in plaats van display:none in CSS, gewoon een "hide form link" optie te maken in het lens-menu (rechtermuisknop op de lens). -In welk bestaand CSS veld wil je namelijk die display:none zetten? De form link is namelijk geen property.- In de view-package klasse LensBoxRightClickMenu zie je hoe het gedaan is voor andere opties. En in klasse PropertyLabelRightClickMenu zie je een voorbeeld van hoe bijvoorbeeld mandatory aan- en uitgezet wordt voor een property. In dit geval zal het dus gaan om een soortgelijke aan- uitschakeling voor een lens.

In package vocabulary kun je een "FORMLINK" property (of iets dergelijks) aanmaken. In package fresneltowiki fresnel2wiki methode writeBox() kun je met JenaFresnelUtils.getFormattingProperties(lens).pick(OWF.FORMLINK) dan vergelijken op true of false (zie formsParams() voor hoe het met OWF.ISMANDATORY gedaan is).

In makeTemplatePage() in fresnel2wiki kun je dan tussen de header en footer een form link div met default CSS class plakken, indien de FORMLINK boolean true geeft. Vervolgens zet je in mediaWiki.common.css deze css klasse met default waarden, die een gebruiker eventueel daar kan veranderen voor styling. Zie http://abiteam30.lukylx.org:3080/mediawiki/index.php/Tim_Berners_Lee voor een snel gemaakt voorbeeld.

Het zal even uitzoekwerk voor je zijn, en je inzicht geven in hoe FF werkt. Natuurlijk horen we het wel als je vragen hebt.

LloydRutledge commented 9 years ago

Lijkt me handiger voor de gebruiker om een optie in de lens-menu ervoor te hebben. Onze gebruiker Brendan heeft ervoor direct gevraagd eigenlijk. En dan zou dit optie gewoon de wiki-code voor the formlink wel of helemaal niet genereren.

Een alternatief is dat deze wiki-code altijd gegenereerd wordt met een class attribuut. En dan de optie in de lens-menu bepaald of een display:none voor die class komt. Maar dan zoals je vraagt: waar zetten we deze CSS?

Klopt het dat de wiki conversie CSS alleen zet direct op box templates? En dat de wiki conversie geen centrale pagina's meet alleen CSS code maakt? Zo ja en ja dan lijkt het raar om wiki-code te maken alleen om direct erop een "display:none" te plakken. Als ik het CSS verhaal niet goed begrijp dan hoor ik het graag. En natuurlijk onderzoek ik het zelf bij mijn programmeerbeurt.

De wiki-export moet sowieso volgens mij de class attribuut in de HTML voor de formlink-element maken zodat de wiki-onderhouder eigen CSS erop kan zetten. Is dan consequent met andere class attributen die de export genereert. Display:none zou mogelijk dan zijn, maar waarschijnlijker zou het andere CSS worden.

jbachh commented 9 years ago

Lijkt me handiger voor de gebruiker om een optie in de lens-menu ervoor te hebben. Onze gebruiker Brendan heeft ervoor direct gevraagd eigenlijk. En dan zou dit optie gewoon de wiki-code voor the formlink wel of helemaal niet genereren.

Hier ging ik precies van uit in mijn aanwijzingen hier boven. Daarvoor heb je dan de OWF.FORMLINK boolean voor nodig.

Een alternatief is dat deze wiki-code altijd gegenereerd wordt met een class attribuut. En dan de optie in de lens-menu bepaald of een display:none voor die class komt. Maar dan zoals je vraagt: waar zetten we deze CSS?

Eigenlijk is het precies hetzelfde als wat ik voorstelde, behalve dat je in plaats van de div wel of niet in de code te zetten, je er een display:none wel of niet in zet in methode makeTemplatePage().

Klopt het dat de wiki conversie CSS alleen zet direct op box templates? En dat de wiki conversie geen centrale pagina's meet alleen CSS code maakt?

Dat klopt.

Zo ja en ja dan lijkt het raar om wiki-code te maken alleen om direct erop een "display:none" te plakken.

Ja, je kunt dus gewoon er voor kiezen om de code wel of niet in de template pagina te plakken in methode makeTemplatePage().

De wiki-export moet sowieso volgens mij de class attribuut in de HTML voor de formlink-element maken zodat de wiki-onderhouder eigen CSS erop kan zetten. Is dan consequent met andere class attributen die de export genereert. Display:none zou mogelijk dan zijn, maar waarschijnlijker zou het andere CSS worden.

Je bedoelt een class element met verwijzing naar default css in MediaWiki:Commons.css? Ja, dat dachten wij ook. Een gebruiker kan daar dan later eventueel een display:none in zetten. Maar je kunt ook gewoon opnieuw importeren met de optie "hide form link" in het lens menu ingeschakeld.

LloydRutledge commented 9 years ago

Toch goed dat je altijd de

maakt maar dan some met een display:none. Dan is de link altijd "daar". En de wikibeheerder kan die overriden (denk ik) met een display:show met een important. Maar in ieder geval makkelijke voor de wikibeheerder om toch the formlink
te laten zien als de code sowieso daar is.

jbachh commented 9 years ago

Ja, dat kan.

@TeunTheunissen had jij niet al een OWF boolean attribuut gemaakt hiervoor?