[JS] Blogposts selecteren voor verschillende properties

Pagina: 1
Acties:

  • Reveller
  • Registratie: Augustus 2002
  • Laatst online: 05-12-2022
Ik gebruik de vakantie om mijn weblog-cmsje wat uit te breiden. Elke weblog post heeft verschillende properties (wel of geen comments mogelijk, wel of geen trackback, gepubliceerd of niet). In de admin kan ik een lijst krijgen met al deze posts onder elkaar, met voor elke post een checkbox. Op die manier kan ik een aantal posts selecteren en daar een actie op uitvoeren (bijvoorbeeld naar een andere categorie verplaatsen).

Om het selecteren wat sneller te laten verlopen, wil ik een dropdown menuutje bouwen waarmee ik in 1 keer bijvoorbeeld alle gepubliceerde posts kan selecteren. Het mooiste is als dit clientside zou kunnen:

Afbeeldingslocatie: http://www.danandan.luna.nl/got/selector.gif

Ik weet alleen niet wat hiervoor de beste oplossing is. De tabel hierboven ziet er ongeveer zo uit:
HTML:
1
2
<input type="checkbox" name="edit[stories][]" value="102">Endemol begint echtscheidingsshow
<input type="checkbox" name="edit[stories][]" value="101">Hasselbaink onder vuur

De value is natuurlijk het id dat de post in de database heeft. Ik dacht dat ik deze misschien zou kunnen uitbreiden met alle properties, bijvoorbeeld:
HTML:
1
<input type="checkbox" name="edit[stories][]" value="101-0-0-1">Hasselbaink onder vuur
Dit betekent dan dat post 101 comments uit heeft staan (want: 0), trackback uit heeft staan (want: 0) en wel gepubliceerd is (want: 1). Als ik dan alle gepubliceerde posts wil selecteren, loop ik met javascript door alle checkbox values en kijk welke na de laatste "-" een 1 hebben staan.

Wat vinden jullie van deze methode? Ik vind het wel straight forward :) Nadeel is wel dat je zowel aan de client als serverside oneindig vaak zult moeten exploden op "-" om iets uit te zoeken. Een alternatief is om te werken met hidden inputs, maar dan krijg je wel een ontzettende lijst in je html. Weet niet of daar doorheen waden nu zoveel sneller / netter is dan dit.

Vragen:
  • Wat vinden jullie van de eerste (101-0-0-1) manier om bepaalde posts te selecteren?
  • Wat vinden jullie van de tweede manier (met hidden inputs)?
  • Welke andere manier kun jij nog bedenken die wellicht beter / makkelijker is?

"Real software engineers work from 9 to 5, because that is the way the job is described in the formal spec. Working late would feel like using an undocumented external procedure."


  • Reveller
  • Registratie: Augustus 2002
  • Laatst online: 05-12-2022
Vannacht kwam ik op een naar mijn mening veel beter idee: ik maak gewoon een aantal javascript arrays, die beschrijven welke posts een property aan hebben staan. Nadeel van deze manier is wel dat een property maar 2 values kan aannemen: aan of uit. De eerste merhode van hierboven (101-0-0-1) is wel flexiblerer, omdat je een oneindig aantal waarden voor elke property kan gebruiken (0 = geen comments, 1 = alleen de eerste week comments, 2 = alleen admins kunnen comments invoeren, 3 = ...etc). Maar goed. Hieronder het probleem waar ik nu mee zit:
HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<script>
var story_properties = new Array();
story_properties['comments'] = new Array(103);
story_properties['promote'] = new Array(103, 106, 113);
</script>

<script>
function story_select(option) {
  var form = document.forms[0];
  var option = option.split('-'), property = option[0], value = option[1];
  alert(story_properties[property][0]);
  form.elements['ding'].selectedIndex = 0;
}
</script>

<form>
<select name="ding" onchange="story_select(this.options[this.selectedIndex].value)">
  <option value="0">Kies hier...</option>
  <option value="comments-on">Comments on</option>
  <option value="promote-off">Promote off</option>
</select>
</form>
Als ik in de dropdown "comments-on" kies, krijg ik een undefined. Ik ben er al achter dat dat alleen is als een javascript array (zoals story_properties['comments']) slechts 1 item telt. Maar het is toch nog steeds een array?! Hoe omzeil ik dit probleem?

"Real software engineers work from 9 to 5, because that is the way the job is described in the formal spec. Working late would feel like using an undocumented external procedure."


  • SchizoDuckie
  • Registratie: April 2001
  • Laatst online: 18-02-2025

SchizoDuckie

Kwaak

voor dit soort dingetjes kan je nou perfect ajax/ahah gebruiken :)

Op hetmoment dat je op filter klikt stuur je je searchquery naar je script en return je een nieuwe table met je blogs erin?

Stop uploading passwords to Github!