modified: c/CtrlCheckLinks.rb

new file:   c/CtrlHistoLink.rb
	modified:   c/Main.rb
	modified:   fichier/haut.html
	deleted:    groupe3.html
	modified:   m/ReadFile.rb
	deleted:    m/ReadFolder.rb
	new file:   sauv/aa
	new file:   sauv/ff
	modified:   v/Vue1.rb
	new file:   v/VueHisto.rb
	new file:   v/VueMenu.rb
	modified:   v/VueResult.rb
This commit is contained in:
Quentin 2014-01-17 02:37:20 +01:00
parent e3cd387365
commit 7df4c9c289
13 changed files with 289 additions and 1971 deletions

View File

@ -1,22 +1,23 @@
# Controleur de la vérification de la validité des liens ainsi que les vues correspondantes
class CtrlCheckLinks class CtrlCheckLinks
def saisie #Controleur de la saisie pour vérification de lien
liste_dir = "../fichier/".liste_rep def saisie(type)
#Va checher les fichiers et arborecenses dans le dossier fichier (Méthode dans ReadFolder) @v1 = Vue1.new(self, 'Saisie nom fichier', type) #creation vue principal
Gtk.init @v1.getWindow.show_all # affichage
@v1 = Vue1.new(liste_dir, self)
@v1.getWindow.show_all
Gtk.main Gtk.main
return @urls return @urls
end end
#Controleur recuperation et verification de liens dans 1 fichiers
def recupUrls(str) def recupUrls(str)
f = ReadFile.new(str) f = ReadFile.new(str)
@urls = f.getUrls @urls = f.getUrls
self.vueResult(self.verifLiens(@urls), str) self.vueResult(self.verifLiens(@urls), str)
s = CtrlHistoLink.new #on enregistre dans l'histo le verif du lien
s.sauv(str, @urls)
return @urls
end end
#Controleur recuperation et verification de liens dans 1 dossier
def recupUrlsDoss(str) def recupUrlsDoss(str)
d = Dir.open(str) d = Dir.open(str)
liste_exclus = [".", ".."] liste_exclus = [".", ".."]
liste_dir = d.sort - liste_exclus liste_dir = d.sort - liste_exclus
@ -24,18 +25,18 @@ class CtrlCheckLinks
if (File.ftype(str + "/" + fichier) == "file") if (File.ftype(str + "/" + fichier) == "file")
self.recupUrls(str + "/" + fichier) self.recupUrls(str + "/" + fichier)
end end
} }
end end
#Controleur permettant de detruire la vue principal
def destructionFen def destructionFen
@v1.getWindow.destroy @v1.getWindow.destroy
Gtk.main_quit Gtk.main_quit
end end
#Controleur de verification de liens
def verifLiens(urls) def verifLiens(urls)
resultats = "" resultats = ""
urls.each { |n| urls.each { |n| # pour chaque urls on realise un ping -> mise des resultats en chaine de caractere
p = Net::Ping::HTTP.new n , 80 p = Net::Ping::HTTP.new n , 80, 5
if p.ping? if p.ping?
resultats += "#{n} est vivant\n" resultats += "#{n} est vivant\n"
else else
@ -43,16 +44,13 @@ class CtrlCheckLinks
end end
} }
return resultats return resultats
end end
#Controleur permettant d'afficher la vue secondaire d'affichage de resultat
def vueResult(resultats, nom) def vueResult(resultats, nom)
v = VueResult.new(resultats, nom) v = VueResult.new(resultats, nom)
v.getWindow.show_all v.getWindow.show_all
Gtk.main Gtk.main
end end
end end

30
c/CtrlHistoLink.rb Normal file
View File

@ -0,0 +1,30 @@
#Classe permettant de g"rer l'historique de fichier traité
class CtrlHistoLink
#Saisie pour vérification de lien stocké en historique
def saisie
@v = VueHisto.new(self,"Historique") #creation vue
@v.getWindow.show_all # affichage
Gtk.main
return @urls
end
#Sauvegarde les liens dans un fichier pour historique
def sauv(fileName, urls)
fileName = File.basename(fileName)
f = File.new("../sauv/#{fileName}", "w+")
f.write(urls)
f.close
end
#Permet de rejouer les liens d'un fichier
def rejouer(fileName)
r = CtrlCheckLinks.new
@urls = r.recupUrls(fileName)
end
#Controleur permettant de detruire la vue historique
def destructionFen
@v.getWindow.destroy
Gtk.main_quit
end
end

View File

@ -6,15 +6,50 @@ require 'net/ping' #lib netwotk
#include #include
require './CtrlCheckLinks' require './CtrlCheckLinks'
require './CtrlHistoLink'
require '../m/ReadFile' require '../m/ReadFile'
require '../m/ReadFolder'
require '../v/Vue1' require '../v/Vue1'
require '../v/VueResult' require '../v/VueResult'
require '../v/VueMenu'
require '../v/VueHisto'
c = CtrlCheckLinks.new #Classe principal du controleur main
urls = c.saisie class Main
while urls!=nil # Controleur du menu de départ
c = CtrlCheckLinks.new def menu
urls = c.saisie
@v = VueMenu.new(self,"Menu")
@v.getWindow.show_all # affichage
Gtk.main
end
# Controleur historique
def histo
c = CtrlHistoLink.new
urls = c.saisie
end
# Controleur vérification d'un fichier
def newVerifFile
c = CtrlCheckLinks.new
urls = c.saisie(1)
end
# Controleur vérification d'un dossier
def newVerifDossier
c = CtrlCheckLinks.new
urls = c.saisie(0)
end
# Controleur permettant de detruire la vue menu
def destructionMenu
@v.getWindow.destroy
Gtk.main_quit
end
end end
c = Main.new
c.menu
print "Termine\n" print "Termine\n"

View File

@ -13,9 +13,9 @@
</div> </div>
<div id="menu"> <div id="menu">
<ul> <ul>
<li><a href="http://index.php">Accueil</a></li> <li><a href="http://google.fr">Accueil</a></li>
<li><a href="http://consultprod.php">Consultation des promotions et nouveautés</a></li> <li><a href="http://cdz.dqz">Consultation des promotions et nouveautés</a></li>
<li><a href="http://consultcat.php">Consultation des produits par catégorie</a></li> <li><a href="https://google.com">Consultation des produits par catégorie</a></li>
<li><a href="http://recherche.php">Recherche dun produit à commander (client nouveau)</a></ul> <li><a href="http://a.d">Recherche dun produit à commander (client nouveau)</a></ul>
</div> </div>
<div id="contenu"> <div id="contenu">

File diff suppressed because one or more lines are too long

View File

@ -1,16 +1,18 @@
#Classe permettant l'acces et la recuperation des données dans les fichiers
class ReadFile class ReadFile
def initialize(pFic) #Ouverture d'un fichier en lecture
def initialize(pFic)
@fic = File.open(pFic, "r") @fic = File.open(pFic, "r")
end end
#Revoit tout le contenu d'un fichier sous forme d'une chaine de caractere
def getALL #revoit tout le contenu d'un fichier sous forme d'une chaine de caractere def getALL
all = @fic.read all = @fic.read
return all return all
end end
#Sort les URLs d'un fichier
def getUrls #sort les URLs d'un fichier def getUrls
txt = self.getALL txt = self.getALL
url = txt.scan(/http[^\s]*/) url = URI::extract(txt, /http(s)?/)
return url return url
end end
end end

View File

@ -1,33 +0,0 @@
class String #ajout de la méthode à la classe String
def liste_rep(espacement = "")
#initialisation
i=0
fich_dir = [""]
all_dir = ""
liste_exclus = [".", ".."]
d = Dir.open(self)
#sort les fichiers sans . et .. qui nous interresse pas
liste_dir = d.sort - liste_exclus
liste_dir.each { |fichier| #pour chaque fichier touvé
case File.ftype(self+fichier)
when "directory" #si on trouve un dossier on l'ajoute et on cherche son contenu avec un apelle recursif
fich_dir[i] = "#{espacement} + #{fichier}/ \n"
espacement += " "
fich_dir[i+1] = (self + fichier + "/").liste_rep(espacement)
espacement = espacement[0, espacement.length-4]
i+=2
when "file" # si c'est un fichier on l'ajoute simplement
fich_dir[i] = "#{espacement} - #{fichier} \n"
i+=1
end
}
fich_dir.each { |n|
all_dir += n
}
return all_dir; #return l'arboressence des fichiers sous forme d'une chaine de caractere
end
end

1
sauv/aa Normal file
View File

@ -0,0 +1 @@
[]

1
sauv/ff Normal file
View File

@ -0,0 +1 @@
["https://www.google.fr", "http://www.ndqjkdjqdkjz.com", "http://www.a.com"]

View File

@ -1,33 +1,28 @@
# Classe creation de la vue de sélection de fichier ou dossier
class Vue1 class Vue1
def initialize(liste_dir, ctrl) # Creation de la vue
def initialize(ctrl, title, type)
@ctrl = ctrl @ctrl = ctrl
#fenenetre generale #fenenetre generale
@window = Gtk::Window.new @window = Gtk::Window.new
@window.set_title('Saisie nom fichier') @window.set_title(title)
#declaration des differents widgets #declaration des differents widgets
vb = Gtk::VBox.new(true, 6) vb = Gtk::VBox.new(true, 6)
top = Gtk::HBox.new(false, 6)
bot = Gtk::HBox.new(false, 6) bot = Gtk::HBox.new(false, 6)
###Partie supérieur fenetre###
#Creation du label de l'arbo
dir = Gtk::Label.new(liste_dir)
top.pack_start(dir, false, true, 6)
vb.pack_start(top)
##############################
###Partie Inferieur fenetre###
#creation label pour la saisie #creation label pour la saisie
lab = Gtk::Label.new('Chemin') lab = Gtk::Label.new('Chemin :')
bot.pack_start(lab, false, true, 6) bot.pack_start(lab, false, true, 6)
#creation champ de saisie #creation champ de saisie
@nom = Gtk::Entry.new #@nom = Gtk::Entry.new
if (type == 1)
@nom = Gtk::FileChooserButton.new("choisir un fichier", Gtk::FileChooser::ACTION_OPEN)
else
@nom = Gtk::FileChooserButton.new("choisir un dossier ", Gtk::FileChooser::ACTION_SELECT_FOLDER)
end
@nom.set_current_folder("../fichier")
bot.pack_start(@nom, true, true) bot.pack_start(@nom, true, true)
#creation bouton de validation #creation bouton de validation
@ -43,25 +38,27 @@ class Vue1
self.listenerDestroy self.listenerDestroy
end end
def getWindow def getWindow #:nodoc:#
return @window return @window
end end
def getEntry def getEntry #:nodoc:#
return @chaine return @chaine
end end
def listenerDestroy # Listener fermeture fenetre # Listener fermeture fenetre
@window.signal_connect('delete_event') { def listenerDestroy
@ctrl.destructionFen @window.signal_connect('destroy') {
@ctrl.destructionFen
} }
end end
def listenerBouton #listener appuie validation #Listener appuie bouton validation
def listenerBouton
@chaine = " " @chaine = " "
@b.signal_connect('clicked'){ @b.signal_connect('clicked'){
@chaine = @nom.text.to_s @chaine = @nom.filename
if (@chaine =="") if (@chaine =="") #gestion saisie vide
m = Gtk::MessageDialog.new(Gtk::Window.new, Gtk::Dialog::DESTROY_WITH_PARENT, m = Gtk::MessageDialog.new(Gtk::Window.new, Gtk::Dialog::DESTROY_WITH_PARENT,
Gtk::MessageDialog::ERROR, Gtk::MessageDialog::ERROR,
Gtk::MessageDialog::BUTTONS_CLOSE, Gtk::MessageDialog::BUTTONS_CLOSE,
@ -69,16 +66,12 @@ class Vue1
m.run m.run
m.destroy m.destroy
else else
@chaine = "../fichier/" + @chaine if(File.directory?(@chaine)) #si c'est un dossier utilisation du controleur adéquat
if(File.directory?(@chaine))
@ctrl.recupUrlsDoss(@chaine) @ctrl.recupUrlsDoss(@chaine)
else else
if(File.exist?(@chaine)) if(File.exist?(@chaine)) #si c'est un fichier existant utilisation du controleur adéquat
@ctrl.recupUrls(@chaine) @ctrl.recupUrls(@chaine)
else else #gestion saisie invalide
d = Gtk::MessageDialog.new(Gtk::Window.new, Gtk::Dialog::DESTROY_WITH_PARENT, d = Gtk::MessageDialog.new(Gtk::Window.new, Gtk::Dialog::DESTROY_WITH_PARENT,
Gtk::MessageDialog::ERROR, Gtk::MessageDialog::ERROR,
Gtk::MessageDialog::BUTTONS_CLOSE, Gtk::MessageDialog::BUTTONS_CLOSE,

78
v/VueHisto.rb Normal file
View File

@ -0,0 +1,78 @@
# Classe creation de la vue permettant d'aceder a l'historique
class VueHisto
# Creation de la vue
def initialize(ctrl, title)
@ctrl = ctrl
#fenenetre generale
@window = Gtk::Window.new
@window.set_title(title)
#declaration des differents widgets
vb = Gtk::VBox.new(true, 6)
bot = Gtk::HBox.new(false, 6)
#creation label pour la saisie
lab = Gtk::Label.new('Chemin du fichier a rejouer :')
bot.pack_start(lab, false, true, 6)
#creation champ de saisie
@nom = Gtk::FileChooserButton.new("choisir un fichier", Gtk::FileChooser::ACTION_OPEN)
@nom.set_current_folder("../sauv")
bot.pack_start(@nom, true, true)
#creation bouton de validation
@b = Gtk::Button.new('OK')
bot.pack_start(@b)
vb.pack_start(bot)
##############################
@window.add(vb)
# Abbonement fenetre au Listener
self.listenerBouton
self.listenerDestroy
end
def getWindow #:nodoc:#
return @window
end
def getEntry #:nodoc:#
return @chaine
end
# Listener fermeture fenetre
def listenerDestroy
@window.signal_connect('destroy') {
@ctrl.destructionFen
}
end
#Listener appuie bouton validation
def listenerBouton
@chaine = " "
@b.signal_connect('clicked'){
@chaine = @nom.filename
if (@chaine =="") #gestion saisie vide
m = Gtk::MessageDialog.new(Gtk::Window.new, Gtk::Dialog::DESTROY_WITH_PARENT,
Gtk::MessageDialog::ERROR,
Gtk::MessageDialog::BUTTONS_CLOSE,
"Erreur : Veuillez saisir un fichier !")
m.run
m.destroy
else
if(File.exist?(@chaine)) #si c'est un fichier existant utilisation du controleur adéquat
@ctrl.rejouer(@chaine)
else #gestion saisie invalide
d = Gtk::MessageDialog.new(Gtk::Window.new, Gtk::Dialog::DESTROY_WITH_PARENT,
Gtk::MessageDialog::ERROR,
Gtk::MessageDialog::BUTTONS_CLOSE,
"Erreur : Fichier inexistant !")
d.run
d.destroy
end
end
}
end
end

66
v/VueMenu.rb Normal file
View File

@ -0,0 +1,66 @@
#Classe creation vue du menu
class VueMenu
# Creation de la vue
def initialize(ctrl, title)
@ctrl = ctrl
#fenenetre generale
@window = Gtk::Window.new
@window.set_title(title)
#declaration des differents widgets
vb = Gtk::VBox.new(true, 6)
top = Gtk::HBox.new(false, 6)
#creation boutons
@newFile = Gtk::Button.new('Nouveau test fichier')
@newDoss = Gtk::Button.new('Nouveau test dossier')
@histo = Gtk::Button.new('Histo')
top.pack_start(@newFile)
top.pack_start(@newDoss)
top.pack_start(@histo)
vb.pack_start(top)
##############################
@window.add(vb)
# Abbonement fenetre au Listener
self.listenerBoutonNewFile
self.listenerBoutonNewDossier
self.listenerBoutonHisto
self.listenerDestroy
end
def getWindow #:nodoc:#
return @window
end
#Listener appuie bouton nouvelle vérification de 1 fichier
def listenerBoutonNewFile
@newFile.signal_connect('clicked'){
@ctrl.newVerifFile
}
end
#Listener appuie bouton validation nouvelle vérification de 1 dossier
def listenerBoutonNewDossier
@newDoss.signal_connect('clicked'){
@ctrl.newVerifDossier
}
end
#Listener appuie bouton validation pour rejouer un fichier dans de l'historique
def listenerBoutonHisto
@histo.signal_connect('clicke d'){
@ctrl.histo
}
end
# Listener fermeture fenetre Menu
def listenerDestroy
@window.signal_connect('destroy') {
@ctrl.destructionMenu
}
end
end

View File

@ -1,11 +1,16 @@
# Classe creation de la vue des resultats
class VueResult class VueResult
# Creation de la vue
def initialize(liste_result, nom) def initialize(liste_result, nom)
#fenenetre generale
@window = Gtk::Window.new @window = Gtk::Window.new
@window.set_title(nom) @window.set_title(nom)
#declaration des differents widgets
vb = Gtk::VBox.new(true, 6) vb = Gtk::VBox.new(true, 6)
vh = Gtk::HBox.new(false, 6) vh = Gtk::HBox.new(false, 6)
#creation label resultat
if(liste_result != "") if(liste_result != "")
res = Gtk::Label.new(liste_result) res = Gtk::Label.new(liste_result)
else else
@ -14,18 +19,20 @@
vh.pack_start(res, false, true, 6) vh.pack_start(res, false, true, 6)
vb.pack_start(vh) vb.pack_start(vh)
# Abbonement fenetre au Listener
@window.add(vb) @window.add(vb)
self.listenerDestroy self.listenerDestroy
end end
def getWindow def getWindow #:nodoc:#
return @window return @window
end end
def listenerDestroy # Listener fermeture Resultat
def listenerDestroy
@window.signal_connect('destroy') { @window.signal_connect('destroy') {
@window.destroy @window.destroy
Gtk.main_quit Gtk.main_quit
} }
end end
end end