/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
PHP CSS klasse
Fra : Demos


Dato : 23-03-03 00:40

Hej gruppe,

Jeg skal skalb bruge en PHP klasse, der til at indeholde CSS information a
la "color: #000000; font-size: 100%; " etc. og gerne med tilhørende frontend
til redigering og databaseunderstøttelse. Er der nogen, der ligger inde
eller kender til noget lignende, som de har lyst til at dele?

Hvis ikke må jeg jo i gang med at kode det selv - og jeg tager gerne imod
idéer. For at opnå størst mulig fleksibilitet havde jeg tænkt mig, at
databasens egenlig bare består at ét stort tekstfelt for hver række til at
indeholde al CSS informationen. Så langt så godt. Det bliver straks mere
interessant, når denne information skal parses frem og tilbage mellem
klassen og en frontend. Jeg forudser umiddelbart en ordenlig omgang regular
expressions og anden strengmanipulation.

På forhånd tak,
Demos



 
 
Michal (23-03-2003)
Kommentar
Fra : Michal


Dato : 23-03-03 08:54

In news:b5is87$2soq$1@news.cybercity.dk,
Demos <demos@mailme.dk> wrote:

> Jeg skal skalb bruge en PHP klasse, der til at indeholde CSS
> information a la "color: #000000; font-size: 100%; " etc. og gerne
> med tilhørende frontend til redigering og databaseunderstøttelse.

Skal det være fritekstredigering eller en række options?

Det er jo ikke så svært at skrive et lille databaseredigeringsprogram som
lige dumper nogle forskellige ting i databasen, men du skal vel også have
det op igen? Har du tænkt dig også at skrive det til en fil, eller vil du
nøjes med at hive det ud fra databasen og indsætte det mellem <head> og
</head> på hver eneste side?

Og har du tænkt dig at der skal være et antal faste klasser, id'er og
elementer i dit css, eller skal det være dynamiskt så man kan lave nye
klasser f.eks. når man har tænkt sig lige pludselig at tilføje en fjerde
slags tekst?

Jeg syntes personligt det er lettere at redigere i selve css filen, og
herefter hente den ind med en <link rel="stylesheet" href="layout/style.css"
type="text/css" />

--
Michal
[ echo "\$0&\$0" > _; chmod +x _; ./_ ]



Demos (23-03-2003)
Kommentar
Fra : Demos


Dato : 23-03-03 10:42

Michal <nonexistant@fakedomain.INVALID> wrote:
> In news:b5is87$2soq$1@news.cybercity.dk,
> Demos <demos@mailme.dk> wrote:
>
>> Jeg skal skalb bruge en PHP klasse, der til at indeholde CSS
>> information a la "color: #000000; font-size: 100%; " etc. og gerne
>> med tilhørende frontend til redigering og databaseunderstøttelse.
>
> Skal det være fritekstredigering eller en række options?

Frontend skal være en række options såvidt muligt, backenden er jo som
præsenteret i den første post i princippet fritekstredigering

> [snip] Har du tænkt dig også at skrive det til en
> fil, eller vil du nøjes med at hive det ud fra databasen og indsætte
> det mellem <head> og </head> på hver eneste side?

I første omgang var tanken at hive det ud fra databasen på hver side.

> Og har du tænkt dig at der skal være et antal faste klasser, id'er og
> elementer i dit css, eller skal det være dynamiskt så man kan lave nye
> klasser f.eks. når man har tænkt sig lige pludselig at tilføje en
> fjerde slags tekst?

Brugerne i systemet har kun mulighed for at redigere et fastsat antal
CSS-objekter.

> Jeg syntes personligt det er lettere at redigere i selve css filen, og
> herefter hente den ind med en <link rel="stylesheet"
> href="layout/style.css" type="text/css" />

Problemet er at jeg ikke kan/vil forudsætte at brugerne kender til CSS for
at de kan ændre på sidens udseende.

Alle disse valg må, når jeg tænker over det, enten kræve en afsinding mængde
frontendprogrammering, hvis jeg vil lave GUI til alle CSS properties, eller
ofre nogle af CSSs muligheder, hvis jeg ikke vil.

Jeg tror derfor at det ender med at GUI'en indeholder to muligheder: Ren
fritekstredigering for superbrugere (og nem debugging for mig) og en række
af de hyppigst anvendte options.



Michal (23-03-2003)
Kommentar
Fra : Michal


Dato : 23-03-03 13:47

In news:b5jvgp$11nh$1@news.cybercity.dk,
Demos <demos@mailme.dk> wrote:

[snip]
>> Og har du tænkt dig at der skal være et antal faste klasser, id'er og
>> elementer i dit css, eller skal det være dynamiskt så man kan lave
>> nye klasser f.eks. når man har tænkt sig lige pludselig at tilføje en
>> fjerde slags tekst?
>
> Brugerne i systemet har kun mulighed for at redigere et fastsat antal
> CSS-objekter.

Så er det jo egentligt ikke sværere end at lave en database over alle de
properties som man må ændre i, og så smide det om i en række forms...


>> Jeg syntes personligt det er lettere at redigere i selve css filen,
>> og herefter hente den ind med en <link rel="stylesheet"
>> href="layout/style.css" type="text/css" />
>
> Problemet er at jeg ikke kan/vil forudsætte at brugerne kender til
> CSS for at de kan ændre på sidens udseende.
>
> Alle disse valg må, når jeg tænker over det, enten kræve en afsinding
> mængde frontendprogrammering, hvis jeg vil lave GUI til alle CSS
> properties, eller ofre nogle af CSSs muligheder, hvis jeg ikke vil.
>
> Jeg tror derfor at det ender med at GUI'en indeholder to muligheder:
> Ren fritekstredigering for superbrugere (og nem debugging for mig) og
> en række af de hyppigst anvendte options.

Lyder som en god udvej :)

Du kan evt. støbe databasen op således:

selectors
id, navn

properties
id, navn, value, selectorid

og så lave en form for hver selector, noget i retning af det her:

SELECT * FROM properties WHERE properties.selectorid = selectors.id AND
selectors.navn = 'h1'

for eksempel... det giver dig så lov til at lave én form for hver selector,
som så indeholder en input (eller options eller...) for hver property for
hver enkelt selector...

--
Michal
[ echo "\$0&\$0" > _; chmod +x _; ./_ ]



Demos (23-03-2003)
Kommentar
Fra : Demos


Dato : 23-03-03 19:21

Michal <nonexistant@fakedomain.INVALID> wrote:
> In news:b5jvgp$11nh$1@news.cybercity.dk,
> Demos <demos@mailme.dk> wrote:
>
> [snip]
>> Jeg tror derfor at det ender med at GUI'en indeholder to muligheder:
>> Ren fritekstredigering for superbrugere (og nem debugging for mig) og
>> en række af de hyppigst anvendte options.
>
> Lyder som en god udvej :)
>
> Du kan evt. støbe databasen op således:
>
> selectors
> id, navn
>
> properties
> id, navn, value, selectorid
>
> og så lave en form for hver selector, noget i retning af det her:
>
> SELECT * FROM properties WHERE properties.selectorid = selectors.id
> AND selectors.navn = 'h1'
>
> for eksempel... det giver dig så lov til at lave én form for hver
> selector, som så indeholder en input (eller options eller...) for
> hver property for hver enkelt selector...

Det kunne være en mulighed, men jeg tror umiddelbart, det komplicerer
backenden unødvendigt. Jeg havde i princippet bare tænkt mig en struktur
lignende:

styles
(int) id, (blob)properties

Derudfra ville jeg benytte mig af regular expressions til at splitte
properties ad som foreslået af Thomas Lindgaard her i tråden. Navnene på de
forskellige selectors er givet udefra.



Michal (23-03-2003)
Kommentar
Fra : Michal


Dato : 23-03-03 19:42

In news:b5ku09$2917$1@news.cybercity.dk,
Demos <demos@mailme.dk> wrote:

> Michal <nonexistant@fakedomain.INVALID> wrote:
>> In news:b5jvgp$11nh$1@news.cybercity.dk,
>> Demos <demos@mailme.dk> wrote:
>>
>> [snip]
>>> Jeg tror derfor at det ender med at GUI'en indeholder to muligheder:
>>> Ren fritekstredigering for superbrugere (og nem debugging for mig)
>>> og en række af de hyppigst anvendte options.
>>
>> Lyder som en god udvej :)
>>
>> Du kan evt. støbe databasen op således:

[snip noget databasesnask]

>> for eksempel... det giver dig så lov til at lave én form for hver
>> selector, som så indeholder en input (eller options eller...) for
>> hver property for hver enkelt selector...
>
> Det kunne være en mulighed, men jeg tror umiddelbart, det komplicerer
> backenden unødvendigt. Jeg havde i princippet bare tænkt mig en
> struktur lignende:
>
> styles
> (int) id, (blob)properties
>
> Derudfra ville jeg benytte mig af regular expressions til at splitte
> properties ad som foreslået af Thomas Lindgaard her i tråden. Navnene
> på de forskellige selectors er givet udefra.

Det lyder også som en udvej, men så ville du ikke ved kun at se på databasen
vide hvad hører til hvorhenne (hvilke properties til hvilke selectors).

--
Michal
[ echo "\$0&\$0" > _; chmod +x _; ./_ ]



Thomas Lindgaard (23-03-2003)
Kommentar
Fra : Thomas Lindgaard


Dato : 23-03-03 14:17

"Demos" <demos@mailme.dk> wrote in news:b5is87$2soq$1@news.cybercity.dk:

> Hej gruppe,
>
> Jeg skal skalb bruge en PHP klasse, der til at indeholde CSS
> information a la "color: #000000; font-size: 100%; " etc. og gerne med
> tilhørende frontend til redigering og databaseunderstøttelse. Er der
> nogen, der ligger inde eller kender til noget lignende, som de har
> lyst til at dele?

Jeg har ikke noget at dele, men man kan vel altid hælde lidt vand ud af
ørerne :)

> Hvis ikke må jeg jo i gang med at kode det selv - og jeg tager gerne
> imod idéer. For at opnå størst mulig fleksibilitet havde jeg tænkt
> mig, at databasens egenlig bare består at ét stort tekstfelt for hver
> række til at indeholde al CSS informationen.

Er det ikke noget med at lave en database over lovlige værdier for hvert
enkelt CSS-"property" - f.eks. background-color: red|blue|yellow|[rgb]|
- og så bruge denne som basis for en drop-down-baseret side til at
redigere skidtet med?

> Så langt så godt. Det bliver straks mere interessant, når denne
> information skal parses frem og tilbage mellem klassen og en frontend.
> Jeg forudser umiddelbart en ordenlig omgang regular expressions og
> anden strengmanipulation.

Hmm nu har CSS jo en meget pæn syntax, så det burde vel ikke være så svært
at parse... her er noget kode jeg lige har siddet og bikset:

<?php

   $css = 'H1 { border: none; } BODY { margin: 0px; padding: 0px; font-
family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 10px; } A
{ color: #808080; text-decoration: none; } A:hover { color: #000000; }
DIV#top { border: 1px solid black; padding: 1em; } DIV#top A { padding-
right: 20px; } DIV#overview-and-tasks { width: 20em; float: right; padding:
1em; margin: 1px; margin-left: 1em; border: 1px solid #000000; }
DIV#contents { padding: 0em; margin: 1em 23em 1em 13em; } HR { border-width
: 1px; border-style : solid; height : 0px; margin-top: 0.5em; }
DIV#shortcuts { float: left; width: 10em; padding: 1em; margin: 1px;
margin-right: 1em; border: 1px solid #000000; } TABLE.calendar { width:
100%; margin: 0em; padding: 0em; border-collapse: collapse; }
TABLE.calendar TD { border: 1px solid #000000; height: 70px; }';
   print $css;
   
   $pattern = '/(.+) \s* \{ \s* (.+) \s* \}/ isxU';
   preg_match_all($pattern, $css, $matches);
   print '<pre>'; print_r($matches[1]); print_r($matches[2]); print
'</pre>';
   
   $css_array = array();
   foreach ($matches[1] as $index => $selector)
   {
      $css_array[trim($selector)] = preg_split("/\s*;\s*/",
trim($matches[2][$index]), -1, PREG_SPLIT_NO_EMPTY);
   }
   print '<pre>'; print_r($css_array); print '</pre>';
   
   print '<hr>';
   show_source(__FILE__);

?>

Hvis der skal være tjek for om skidtet er gyldigt så bliver det straks
værre :) - men hvis man gennem sit UI sørger for at folk ikke kan klokke i
det, så bliver det jo straks lettere (tror jeg :)

--
Hyggehej /Thomas

Demos (23-03-2003)
Kommentar
Fra : Demos


Dato : 23-03-03 19:31

Thomas Lindgaard <thomas@it-snedkeren.BLACK_HOLE.dk> wrote:
> $pattern = '/(.+) \s* \{ \s* (.+) \s* \}/ isxU';
> preg_match_all($pattern, $css, $matches);
> print '<pre>'; print_r($matches[1]); print_r($matches[2]); print
> '</pre>';
>
> $css_array = array();
> foreach ($matches[1] as $index => $selector)
> {
> $css_array[trim($selector)] = preg_split("/\s*;\s*/",
> trim($matches[2][$index]), -1, PREG_SPLIT_NO_EMPTY);
> }

Mmmh - lækkert at få smækket regular expressions, der minder så meget som
kernen i det, jeg skal bruge. Tak!

> Hvis der skal være tjek for om skidtet er gyldigt så bliver det straks
> værre :) - men hvis man gennem sit UI sørger for at folk ikke kan
> klokke i det, så bliver det jo straks lettere (tror jeg :)

Well - som beskrevet i tråden med Michal, så regner jeg med at gøre nogle
options tilgængelig ved hjælp af GUI, så der er vel tjeck på den del. Hvis
brugerne selv vil redigere deres styles og og laver fejl, tror jeg bare, at
det må være deres problem ; ).



Søg
Reklame
Statistik
Spørgsmål : 177559
Tips : 31968
Nyheder : 719565
Indlæg : 6408937
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste