Ero sivun ”Kommentointityökalu” versioiden välillä

Opasnet Suomista
Siirry navigaatioon Siirry hakuun
(→‎Perustelut: päivitetty mallineen mukaiseksi)
Rivi 80: Rivi 80:
Vastauksessa on tuontantokäytössä oleva työkalu. Perusteluissa on kehitysvaiheen malli.
Vastauksessa on tuontantokäytössä oleva työkalu. Perusteluissa on kehitysvaiheen malli.


----
[[Luokka:Sisältää kommentointityökalun]]
[[Luokka:Sisältää kommentointityökalun]]
Voit kommentoida sisältöä myös kirjautumatta Opasnetiin yksinkertaisesti kirjoittamalla kommenttisi alla olevaan kenttään. Sivun moderaattori siirtää kommenttisi asiasisällön osaksi sivun tekstiä ja siirtää kommentin sitten arkistoon: {{tuloslinkki}}.
Voit kommentoida sisältöä myös kirjautumatta Opasnetiin yksinkertaisesti kirjoittamalla kommenttisi alla olevaan kenttään. Sivun moderaattori siirtää kommenttisi asiasisällön osaksi sivun tekstiä ja siirtää kommentin sitten arkistoon: {{tuloslinkki}}.


<rcode embed=1 label="Lisää kommentti" showcode=-1 variables="
<pre>
name:kommentti|description:Kommenttisi tämän sivun sisältöön tai keskusteluun|type:textbox|
<rcode label="Näytä kommentit" embed=1 showcode=-1 variables="
name:liittymä|description:Mihin sivun kohtaan kommenttisi liittyy?|type:{{{2|text}}}|
name:ident|type:hidden|default:'{{{1|Op_fi{{PAGEID}}}}}'|
name:pagename|type:hidden|default:'{{PAGENAME}}'|
name:pagename|type:hidden|default:'{{PAGENAME}}'
name:ident|type:hidden|default:'{{{1|Op_fi{{PAGEID}}}}}'
">
">
library(OpasnetUtils)
library(OpasnetUtils)
library(OpasnetUtilsExt)


obs <- opbase.data(ident, subset = "Kommentit")$Obs
pagename <- gsub(" ", "_", pagename)
obs <- max(as.numeric(levels(obs)[obs])) + 1
dat <- tryCatch(
opbase.data(ident, subset = "Kommentit"),
error = function(...) return(NULL)
)


dat <- data.frame(Obs = obs, Aika = date(), Kommentti = kommentti, Liittymä = liittymä, Result = 1)
if (is.null(dat)) oprint("Kommentteja ei löytynyt") else {
 
poistot <- tryCatch(
opbase.upload(dat, ident = ident, name = pagename, subset = "Kommentit", act_type = "append", language = "fin",  
opbase.data(ident, subset = "Kommentinpoistot"),  
who = wiki_username)
error = function(...) return(NULL)
cat("Kommenttisi on onnistuneesti tallennettu.\n")
)
if (!is.null(poistot)) dat <- dat[!dat$JaeID %in% poistot$Result, ]
if(nrow(dat) == 0) {
oprint("Kaikki kommentit on sisällytetty tekstiin.")
} else {
oprint(dat, include.rownames = FALSE)
# cat("Kommenttien tunnistelinkit (tarvitaan tägäyksessä):\n")
#
# for(i in 1:nrow(dat)) {
# olink(
# paste(pagename, "?Komm=", dat$Obs[i], "#Kommentit", sep = ""),  
# wiki = "op_fi",  
# text = paste(dat$Obs[i], substr(dat$Kommentti[i], 1, 30))
# )
# if(i == nrow(dat)) cat("\n") else cat(" &middot; ")
# }
}
}
</rcode>
</rcode>
'''Voit kommentoida sisältöä''' myös kirjautumatta Opasnetiin yksinkertaisesti kirjoittamalla kommenttisi alla olevaan kenttään. Sivun moderaattori siirtää kommenttisi asiasisällön osaksi sivun tekstiä ja siirtää kommentin sitten arkistoon: {{tuloslinkki}}.


;<span id="Kommentit">Tämänhetkiset kommentit, jota ei ole vielä sisällytetty sivulle tai keskustelusivulle.</span>
<rcode embed=1 label="Lisää kommentti" showcode=-1 variables="
Jos haluat löytää tällä sivulla aiemmin olleen kommentin, mene sivulle [[Kommenttihaku]] ja anna kommentin tunnistelinkki.
name:kommentti|description:Kommenttisi tämän sivun sisältöön tai keskusteluun|type:textbox|
 
name:liittymä|description:Mihin sivun kohtaan kommenttisi liittyy?|type:{{{2|text}}}|
<rcode label="Näytä kommentit" embed=1 showcode=-1 variables="
name:pagename|type:hidden|default:'{{PAGENAME}}'|
name:ident|type:hidden|default:'{{{1|Op_fi{{PAGEID}}}}}'|
name:ident|type:hidden|default:'{{{1|Op_fi{{PAGEID}}}}}'
name:pagename|type:hidden|default:'{{PAGENAME}}'
">
">
library(OpasnetUtils)
library(OpasnetUtils)
library(OpasnetUtilsExt)


pagename <- gsub(" ", "_", pagename)
# Vähän vaarallista että mikä tahansa virhe jothaa siihen että
# data tulkitaan olemassa olemattomaksi, R tietokantafunktiot ovat
# jäljessä kehitystä: .series ja .locations eivät toimi subseteille.
obs <- tryCatch(
opbase.data(ident, subset = "Kommentit"),  
error = function(...) return(NULL)
)


dat <- opbase.data(ident, subset = "Kommentit")
if (!is.null(obs)) {
 
if ("Obs" %in% colnames(obs)) {
poistot <- opbase.data(ident, subset = "Kommenttipoistot")$Kommenttinro
at <- "replace"
 
obs <- 1
dat <- dat[!dat$Obs %in% poistot , colnames(dat) != "Result"]
} else {
 
at <- "append"
if(nrow(dat) == 0) {
obs <- obs$JaeID
cat("Kaikki kommentit on sisällytetty tekstiin.\n")
obs <- gsub("[A-Za-z]", "", as.character(obs))
obs <- max(as.numeric(obs)) + 1
}
} else {
} else {
oprint(dat)
at <- "replace"
obs <- 1
}
dat <- data.frame(
Versio = 1,
JaeID = paste("K", obs, sep = ""),
Aika = date(),
Liittymä = liittymä,
Result = kommentti
)


cat("Kommenttien tunnistelinkit (tarvitaan tägäyksessä):\n")
opbase.upload(
dat,
ident = ident,
name = pagename,
subset = "Kommentit",
act_type = at,
language = "fin",
who = wiki_username
)


for(i in 1:nrow(dat)) {
if (at == "replace") {
olink(
dat <- data.frame(
paste(pagename, "?Komm=", dat$Obs[i], "#Kommentit", sep = ""),  
Versio = 1,
wiki = "op_fi",  
Aika = date(),  
text = paste(dat$Obs[i], substr(dat$Kommentti[i], 1, 30))
Käyttäjä = wiki_username,
)
Syy = "Alustus",  
if(i == nrow(dat)) cat("\n") else cat(" &middot; ")
Result = "NA"
}
)
opbase.upload(
dat,  
ident = ident,  
name = pagename,  
subset = "Kommentinpoistot",  
act_type = at,
language = "fin",
who = wiki_username
)
}
}
 
oprint("Kommenttisi on onnistuneesti tallennettu.")
</rcode>
</rcode>
 
'''Poistettavat kommentit''' (varsinaiseen tekstiin siirretyt)
'''Poistettavat kommentit''' (varsinaiseen tekstiin siirretyt)


<rcode embed=1 label="Poista kommentti" showcode=-1 variables="
<rcode embed=1 label="Poista kommentti" showcode=-1 variables="
name:nro|description:Poistettavan kommentin Obs-numero|type:text|
name:jaeid|description:Poistettavan kommentin ID|type:text|
name:syy|description:Poiston syy|type:selection|options:
name:syy|description:Poiston syy|type:selection|options:
;- Valitse syy -;
;- Valitse syy -;
'Kommentti on sisällytetty keskusteluun tai sivulle';Kommentti on sisällytetty keskusteluun tai sivulle;
'Kommentti on sisällytetty keskusteluun tai sivulle';Kommentti on sisällytetty keskusteluun tai sivulle;
'Kommentti ei liity sivun aiheeseen';Kommmentti ei liity sivun aiheeseen;
'Kommentti ei liity sivun aiheeseen';Kommmentti ei liity sivun aiheeseen;
'Kommentti on häiriköintiä';Kommentti on häiriköintiä (käytä säästellen)|
'Kommentti on häiriköintiä';Kommentti on häiriköintiä (käytä säästellen)|
name:ident|type:hidden|default:'{{{1|Op_fi{{PAGEID}}}}}'|
name:ident|type:hidden|default:'{{{1|Op_fi{{PAGEID}}}}}'|
name:pagename|type:hidden|default:'{{PAGENAME}}'
name:pagename|type:hidden|default:'{{PAGENAME}}'
">
">
library(OpasnetUtils)
library(OpasnetUtils)


dat <- data.frame(Kommenttinro = nro, Syy = syy, Result = 1)
dat <- data.frame(
Versio = 1,
Aika = date(),
Käyttäjä = wiki_username,
Syy = syy,  
Result = jaeid
)


opbase.upload(dat, ident = ident, name = pagename, subset = "Kommenttipoistot", act_type = "append", language = "fin",
opbase.upload(
who = wiki_username)
dat,  
ident = ident,  
name = pagename,  
subset = "Kommentinpoistot",  
act_type = "append",  
language = "fin",
who = wiki_username
)


cat("Kommentti onnistuneesti poistettu.\n")
oprint("Kommentti onnistuneesti poistettu.\n")


pois <- opbase.data(ident, subset = "Kommentit")
pois <- opbase.data(ident, subset = "Kommentit")


oprint(pois[pois$Obs == nro , ])
oprint(pois[pois$JaeID == jaeid , ], include.rownames = FALSE)


</rcode>
</rcode>
</pre>


==Katso myös ==
==Katso myös ==


* [[:Malline:Kommentointityökalu]]
* [[:Malline:Kommentointityökalu]]

Versio 9. heinäkuuta 2014 kello 15.53




Kysymys

Millainen on kommentointityökalu, joka

  • toimii osana Opasnetiä,
  • on avointa lähdekoodia,
  • kommentteja voidaan hallinnoida riippumatta ulkopuolisista palveluista?

Vastaus

Kommentointityökalu tallentaa käyttäjien antamia kommentteja tietokantaan. Tallennettava taulu on tämän näköinen, ja jokainen kommentti tallennetaan omalle rivilleen.

Kommentit
Obs Aika Kommentti Liittymä Result
Juokseva numero Kommentin tallennusaika Kommentin sisältö Jos kommentti liittyy toiseen kommenttiin tai asiaan sivulla, kommentin numero tai asian nimi tai kuvailu Tekninen sarake, jota ei tällä hetkellä käytetä.

Kommentteja voi myös poistaa näkyvistä. Tietokannasta ei kuitenkaan poisteta tietoa, vaan tällaiseen tauluun laitetaan kommentille poistomerkintä.

Kommenttipoistot
Kommenttinro Syy Result
Kommentin numero Obs-sarakkeesta Poistamisen syy. Käyttöliittymässä on tarjottuna pudotusvalikossa olennaiset syyt. Tekninen sarake
Ohjeita kommentointityökalun käyttöönottoon
  • Sijoita työkalu kakkostason väliotsikon "Kommentoi kirjautumatta" alle.
  • Kommentointityökalu pitää alustaa kopioimalla alla oleva koodi kyseiselle sivulle. Esikatsele sivu, jolloin alustuskoodi ajetaan automaattisesti. Sivua ei tarvitse tallentaa tässä vaiheessa.
<rcode live=1 variables="
	name:pagename|type:hidden|default:'{{PAGENAME}}'|
	name:ident|type:hidden|default:'Op_fi{{PAGEID}}'
">

library(OpasnetUtils)

dat1 <- data.frame(
	Obs = 1, 
	Aika = date(), 
	Kommentti = paste("Alustettu sivu", pagename, ident), 
	Liittymä = 0, 
	Result = 1
)

opbase.upload(dat1, ident = ident, name = pagename, subset = "Kommentit", act_type = "replace", 
	language = "fin", who = wiki_username)

dat2 <- data.frame(Kommenttinro = 0, Syy = "Alustus", Result = 1)

opbase.upload(dat2, ident = ident, name = pagename, subset = "Kommenttipoistot", act_type = "replace", language = "fin",
	who = wiki_username)

cat("Alustus onnistui.\n")
</rcode>

Kun saat ilmoituksen alustuksen onnistumisesta, voit poistaa alustuskoodin sivulta ja kopioida varsinaisen mallineen:

{{kommentointityökalu}}

Mallineelle voi antaa kaksi parametria, mutta yleensä näitä ei tarvita.

  • Voit laittaa sivutunnisteen ensimmäiseksi parametriksi, mutta tätä tarvitaan vain poikkeustapauksissa, jos kommentit halutaan tallentaa jonkin muun sivun kuin oman sivun kohdalle. Sivutunniste on muotoa Op_fi1234.
  • Jos kakkoskysymys eli liittymä toiseen kommenttiin halutaan piilottaa, pitää toiseksi parametriksi laittaa hidden.

Ota uudestaan esikatselu ja varmista, että malline toimii oikein ja että se löytää yhden kommentin, jonka sisältö on "Alustettu sivu X", jossa X on sinun sivusi nimi.

{{kommentointityökalu|Op_fiXXXX|hidden}}

Perustelut

Vastauksessa on tuontantokäytössä oleva työkalu. Perusteluissa on kehitysvaiheen malli. Voit kommentoida sisältöä myös kirjautumatta Opasnetiin yksinkertaisesti kirjoittamalla kommenttisi alla olevaan kenttään. Sivun moderaattori siirtää kommenttisi asiasisällön osaksi sivun tekstiä ja siirtää kommentin sitten arkistoon: {{#opasnet_base_link:Op_fi4224}} .

<rcode label="Näytä kommentit" embed=1 showcode=-1 variables="
		name:ident|type:hidden|default:'{{{1|Op_fi{{PAGEID}}}}}'|
		name:pagename|type:hidden|default:'{{PAGENAME}}'
">
library(OpasnetUtils)
library(OpasnetUtilsExt)

pagename <- gsub(" ", "_", pagename)
dat <- tryCatch(
	opbase.data(ident, subset = "Kommentit"), 
	error = function(...) return(NULL)
)

if (is.null(dat)) oprint("Kommentteja ei löytynyt") else {
	poistot <- tryCatch(
			opbase.data(ident, subset = "Kommentinpoistot"), 
			error = function(...) return(NULL)
	)
	
	if (!is.null(poistot)) dat <- dat[!dat$JaeID %in% poistot$Result, ]
	
	if(nrow(dat) == 0) {
		oprint("Kaikki kommentit on sisällytetty tekstiin.")
	} else {
		oprint(dat, include.rownames = FALSE)
		
	#	cat("Kommenttien tunnistelinkit (tarvitaan tägäyksessä):\n")
	#
	#	for(i in 1:nrow(dat)) {
	#		olink(
	#			paste(pagename, "?Komm=", dat$Obs[i], "#Kommentit", sep = ""), 
	#			wiki = "op_fi", 
	#			text = paste(dat$Obs[i], substr(dat$Kommentti[i], 1, 30))
	#		)
	#		if(i == nrow(dat)) cat("\n") else cat(" · ")
	#	}
	}
}
</rcode>
		
		'''Voit kommentoida sisältöä''' myös kirjautumatta Opasnetiin yksinkertaisesti kirjoittamalla kommenttisi alla olevaan kenttään. Sivun moderaattori siirtää kommenttisi asiasisällön osaksi sivun tekstiä ja siirtää kommentin sitten arkistoon: {{tuloslinkki}}.

<rcode embed=1 label="Lisää kommentti" showcode=-1 variables="
		name:kommentti|description:Kommenttisi tämän sivun sisältöön tai keskusteluun|type:textbox|
		name:liittymä|description:Mihin sivun kohtaan kommenttisi liittyy?|type:{{{2|text}}}|
		name:pagename|type:hidden|default:'{{PAGENAME}}'|
		name:ident|type:hidden|default:'{{{1|Op_fi{{PAGEID}}}}}'
">
library(OpasnetUtils)

# Vähän vaarallista että mikä tahansa virhe jothaa siihen että 
# data tulkitaan olemassa olemattomaksi, R tietokantafunktiot ovat 
# jäljessä kehitystä: .series ja .locations eivät toimi subseteille.
obs <- tryCatch(
	opbase.data(ident, subset = "Kommentit"), 
	error = function(...) return(NULL)
)

if (!is.null(obs)) {
	if ("Obs" %in% colnames(obs)) {
		at <- "replace"
		obs <- 1
	} else {
		at <- "append"
		obs <- obs$JaeID
		obs <- gsub("[A-Za-z]", "", as.character(obs))
		obs <- max(as.numeric(obs)) + 1
	}
} else {
	at <- "replace"
	obs <- 1
}
dat <- data.frame(
	Versio = 1, 
	JaeID = paste("K", obs, sep = ""), 
	Aika = date(), 
	Liittymä = liittymä, 
	Result = kommentti
)

opbase.upload(
	dat, 
	ident = ident, 
	name = pagename, 
	subset = "Kommentit", 
	act_type = at, 
	language = "fin", 
	who = wiki_username
)

if (at == "replace") {
	dat <- data.frame(
		Versio = 1,
		Aika = date(), 
		Käyttäjä = wiki_username,
		Syy = "Alustus", 
		Result = "NA"
	)
	opbase.upload(
		dat, 
		ident = ident, 
		name = pagename, 
		subset = "Kommentinpoistot", 
		act_type = at, 
		language = "fin", 
		who = wiki_username
	)
}
oprint("Kommenttisi on onnistuneesti tallennettu.")
</rcode>
		
		'''Poistettavat kommentit''' (varsinaiseen tekstiin siirretyt)

<rcode embed=1 label="Poista kommentti" showcode=-1 variables="
		name:jaeid|description:Poistettavan kommentin ID|type:text|
		name:syy|description:Poiston syy|type:selection|options:
		;- Valitse syy -;
		'Kommentti on sisällytetty keskusteluun tai sivulle';Kommentti on sisällytetty keskusteluun tai sivulle;
		'Kommentti ei liity sivun aiheeseen';Kommmentti ei liity sivun aiheeseen;
		'Kommentti on häiriköintiä';Kommentti on häiriköintiä (käytä säästellen)|
		name:ident|type:hidden|default:'{{{1|Op_fi{{PAGEID}}}}}'|
		name:pagename|type:hidden|default:'{{PAGENAME}}'
		">
library(OpasnetUtils)

dat <- data.frame(
	Versio = 1,
	Aika = date(), 
	Käyttäjä = wiki_username,
	Syy = syy, 
	Result = jaeid
)

opbase.upload(
	dat, 
	ident = ident, 
	name = pagename, 
	subset = "Kommentinpoistot", 
	act_type = "append", 
	language = "fin",
	who = wiki_username
)

oprint("Kommentti onnistuneesti poistettu.\n")

pois <- opbase.data(ident, subset = "Kommentit")

oprint(pois[pois$JaeID == jaeid , ], include.rownames = FALSE)

</rcode>

Katso myös